<?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>142858</bug_id>
          
          <creation_ts>2015-03-18 19:44:27 -0700</creation_ts>
          <short_desc>Web Inspector: Adopt ES6 Class Syntax for all Model Objects</short_desc>
          <delta_ts>2015-03-19 17:19:33 -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>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Joseph Pecoraro">joepeck</assigned_to>
          <cc>burg</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>jonowells</cc>
    
    <cc>mattbaker</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>rniwa</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1078427</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-03-18 19:44:27 -0700</bug_when>
    <thetext>* SUMMARY
Adopt ES6 Class Syntax for all Model Objects.

Why?
• Cleaner, briefer syntax across the board (methods, static methods, etc)
• Real inheritance makes following class hierarchies easier. The top line tells you exactly what your super class is.
• Much easier to call super class methods and constructors, in constructors it is runtime enforced!
• Dog food new JavaScriptCore features to get real world test coverage</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078566</commentid>
    <comment_count>1</comment_count>
      <attachid>249041</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-03-19 11:44:17 -0700</bug_when>
    <thetext>Created attachment 249041
[PATCH] Proposed Fix - For Bots</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078567</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-03-19 11:44:31 -0700</bug_when>
    <thetext>&lt;rdar://problem/20227143&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078570</commentid>
    <comment_count>3</comment_count>
      <attachid>249042</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-03-19 11:44:56 -0700</bug_when>
    <thetext>Created attachment 249042
[PATCH] Easier to Review - Ignores Whitespace</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078572</commentid>
    <comment_count>4</comment_count>
      <attachid>249041</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2015-03-19 11:50:00 -0700</bug_when>
    <thetext>Comment on attachment 249041
[PATCH] Proposed Fix - For Bots

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

&gt; LayoutTests/ChangeLog:7
&gt; +

Can you note the bugs fixed along the way?

&gt; Source/WebInspectorUI/ChangeLog:7
&gt; +

It would also be good to enumerate the various temporary workarounds and FIXMEs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078643</commentid>
    <comment_count>5</comment_count>
      <attachid>249062</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-03-19 15:05:53 -0700</bug_when>
    <thetext>Created attachment 249062
[PATCH] Proposed Fix

Sorry, the earlier patch was hastily put up to ensure the bots were as fine with it as I was locally.

This is one with ChangeLogs, and rebased.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078680</commentid>
    <comment_count>6</comment_count>
      <attachid>249062</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-03-19 16:22:22 -0700</bug_when>
    <thetext>Comment on attachment 249062
[PATCH] Proposed Fix

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

&gt; Source/WebInspectorUI/UserInterface/Base/Object.js:161
&gt; +    var list = [&quot;addEventListener&quot;, &quot;removeEventListener&quot;, &quot;removeAllListeners&quot;, &quot;hasEventListeners&quot;];
&gt; +    for (var property of list) {

Maybe this should be one line, it won&apos;t be much difference in line length.

&gt; Source/WebInspectorUI/UserInterface/Controllers/TimelineManager.js:435
&gt; -        newRecording.addTimeline(new WebInspector.Timeline(WebInspector.TimelineRecord.Type.Script, newRecording));
&gt; +        newRecording.addTimeline(WebInspector.Timeline.create(WebInspector.TimelineRecord.Type.Network, newRecording));

Sad face.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078690</commentid>
    <comment_count>7</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-03-19 17:19:33 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/181769</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249041</attachid>
            <date>2015-03-19 11:44:17 -0700</date>
            <delta_ts>2015-03-19 15:05:53 -0700</delta_ts>
            <desc>[PATCH] Proposed Fix - For Bots</desc>
            <filename>es6.patch</filename>
            <type>text/plain</type>
            <size>513770</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3MjFiM2IwLi43MWUxZjNmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTUtMDMt
MTkgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIg
SW5zcGVjdG9yOiBBZG9wdCBFUzYgQ2xhc3MgU3ludGF4IGZvciBhbGwgTW9kZWwgT2JqZWN0cwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyODU4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0
b3IvbW9kZWwvcGFyc2Utc2NyaXB0LXN5bnRheC10cmVlLmh0bWw6CisKIDIwMTUtMDMtMTggIEpv
c2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBFUzYgQ2xhc3Nl
czogRXh0ZW5kcyBzaG91bGQgYWNjZXB0IGFuIGV4cHJlc3Npb24gd2l0aG91dCBwYXJlbnRoZXNp
cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL21vZGVsL3BhcnNlLXNjcmlwdC1z
eW50YXgtdHJlZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL21vZGVsL3BhcnNlLXNjcmlw
dC1zeW50YXgtdHJlZS5odG1sCmluZGV4IDExMDEyODIuLjM5MmU2MzMgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9tb2RlbC9wYXJzZS1zY3JpcHQtc3ludGF4LXRyZWUuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbW9kZWwvcGFyc2Utc2NyaXB0LXN5bnRheC10cmVl
Lmh0bWwKQEAgLTcsNyArNyw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogewogICAgIGZ1bmN0aW9uIG1h
a2VOb2RlKHRleHQsIGlzRXhwcmVzc2lvbikKICAgICB7Ci0gICAgICAgIHZhciBzY3JpcHQgPSBu
ZXcgV2ViSW5zcGVjdG9yLlNjcmlwdCgxLCBXZWJJbnNwZWN0b3IuVGV4dFJhbmdlKDAsIHRleHQu
bGVuZ3RoKSk7CisgICAgICAgIHZhciBzY3JpcHQgPSBuZXcgV2ViSW5zcGVjdG9yLlNjcmlwdCgx
LCBuZXcgV2ViSW5zcGVjdG9yLlRleHRSYW5nZSgwLCB0ZXh0Lmxlbmd0aCkpOwogICAgICAgICB2
YXIgc2NyaXB0U3ludGF4VHJlZSA9IG5ldyBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZSh0
ZXh0LCBzY3JpcHQpOwogICAgICAgICB2YXIgc3ludGF4VHJlZSA9IHNjcmlwdFN5bnRheFRyZWUu
X3N5bnRheFRyZWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IGM3ZTc0NzMuLjYwNTNi
YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE1LTAzLTE5
ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogQWRvcHQgRVM2IENsYXNzIFN5bnRheCBmb3IgYWxsIE1vZGVsIE9iamVjdHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0Mjg1OAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVXNlckludGVy
ZmFjZS8qKi8qLmpzOgorICAgICAgICBBbG1vc3QgZXZlcnkgSmF2YVNjcmlwdCBmaWxlIGlzIHRv
dWNoZWQuCisKIDIwMTUtMDMtMTggIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNv
bT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBSZXBsYWNlIGxhc3QgdXNlIG9mIE9iamVjdFBy
b3BlcnRpZXNTZWN0aW9uIHdpdGggT2JqZWN0VHJlZVZpZXcKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvT2JqZWN0LmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9PYmplY3QuanMKaW5kZXggNTE0YWVmMy4uYmVh
M2QzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFz
ZS9PYmplY3QuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFz
ZS9PYmplY3QuanMKQEAgLTIzLDEwOCArMjMsOTYgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAot
V2ViSW5zcGVjdG9yLk9iamVjdCA9IGZ1bmN0aW9uKCkKK1dlYkluc3BlY3Rvci5PYmplY3QgPSBj
bGFzcyBPYmplY3QKIHsKLX07Ci0KLVdlYkluc3BlY3Rvci5PYmplY3QuYWRkQ29uc3RydWN0b3JG
dW5jdGlvbnMgPSBmdW5jdGlvbihzdWJjbGFzc0NvbnN0cnVjdG9yKQotewotICAgIC8vIENvcGll
cyB0aGUgcmVsZXZhbnQgZnVuY3Rpb25zIHRoZSBzdWJjbGFzcyBjb25zdHJ1Y3Rvci4KLSAgICBm
b3IgKHZhciBwcm9wZXJ0eSBpbiBXZWJJbnNwZWN0b3IuT2JqZWN0KSB7Ci0gICAgICAgIHZhciB2
YWx1ZSA9IFdlYkluc3BlY3Rvci5PYmplY3RbcHJvcGVydHldOwotICAgICAgICBpZiAodHlwZW9m
IHZhbHVlICE9PSAiZnVuY3Rpb24iKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlm
ICh2YWx1ZSA9PT0gYXJndW1lbnRzLmNhbGxlZSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICBzdWJjbGFzc0NvbnN0cnVjdG9yW3Byb3BlcnR5XSA9IHZhbHVlOworICAgIGNvbnN0cnVj
dG9yKCkKKyAgICB7CisgICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgb25jZSA8aHR0cHM6Ly93ZWJr
aXQub3JnL2IvMTQyODYyPiBpcyBmaXhlZC4KICAgICB9Ci19OwogCi1XZWJJbnNwZWN0b3IuT2Jq
ZWN0LmFkZEV2ZW50TGlzdGVuZXIgPSBmdW5jdGlvbihldmVudFR5cGUsIGxpc3RlbmVyLCB0aGlz
T2JqZWN0KQotewotICAgIHRoaXNPYmplY3QgPSB0aGlzT2JqZWN0IHx8IG51bGw7CisgICAgLy8g
U3RhdGljCisKKyAgICBzdGF0aWMgYWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGxpc3RlbmVy
LCB0aGlzT2JqZWN0KQorICAgIHsKKyAgICAgICAgdGhpc09iamVjdCA9IHRoaXNPYmplY3QgfHwg
bnVsbDsKIAotICAgIGNvbnNvbGUuYXNzZXJ0KGV2ZW50VHlwZSwgIk9iamVjdC5hZGRFdmVudExp
c3RlbmVyOiBpbnZhbGlkIGV2ZW50IHR5cGUgIiwgZXZlbnRUeXBlLCAiKGxpc3RlbmVyOiAiLCBs
aXN0ZW5lciwgInRoaXNPYmplY3Q6ICIsIHRoaXNPYmplY3QsICIpIik7Ci0gICAgaWYgKCFldmVu
dFR5cGUpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoZXZlbnRUeXBl
LCAiT2JqZWN0LmFkZEV2ZW50TGlzdGVuZXI6IGludmFsaWQgZXZlbnQgdHlwZSAiLCBldmVudFR5
cGUsICIobGlzdGVuZXI6ICIsIGxpc3RlbmVyLCAidGhpc09iamVjdDogIiwgdGhpc09iamVjdCwg
IikiKTsKKyAgICAgICAgaWYgKCFldmVudFR5cGUpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgY29uc29sZS5hc3NlcnQobGlzdGVuZXIsICJPYmplY3QuYWRkRXZlbnRMaXN0ZW5lcjog
aW52YWxpZCBsaXN0ZW5lciAiLCBsaXN0ZW5lciwgIihldmVudCB0eXBlOiAiLCBldmVudFR5cGUs
ICJ0aGlzT2JqZWN0OiAiLCB0aGlzT2JqZWN0LCAiKSIpOworICAgICAgICBpZiAoIWxpc3RlbmVy
KQorICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgY29uc29sZS5hc3NlcnQobGlzdGVuZXIsICJP
YmplY3QuYWRkRXZlbnRMaXN0ZW5lcjogaW52YWxpZCBsaXN0ZW5lciAiLCBsaXN0ZW5lciwgIihl
dmVudCB0eXBlOiAiLCBldmVudFR5cGUsICJ0aGlzT2JqZWN0OiAiLCB0aGlzT2JqZWN0LCAiKSIp
OwotICAgIGlmICghbGlzdGVuZXIpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKCF0aGlz
Ll9saXN0ZW5lcnMpCisgICAgICAgICAgICB0aGlzLl9saXN0ZW5lcnMgPSB7fTsKIAotICAgIGlm
ICghdGhpcy5fbGlzdGVuZXJzKQotICAgICAgICB0aGlzLl9saXN0ZW5lcnMgPSB7fTsKKyAgICAg
ICAgdmFyIGxpc3RlbmVycyA9IHRoaXMuX2xpc3RlbmVyc1tldmVudFR5cGVdOworICAgICAgICBp
ZiAoIWxpc3RlbmVycykKKyAgICAgICAgICAgIGxpc3RlbmVycyA9IHRoaXMuX2xpc3RlbmVyc1tl
dmVudFR5cGVdID0gW107CiAKLSAgICB2YXIgbGlzdGVuZXJzID0gdGhpcy5fbGlzdGVuZXJzW2V2
ZW50VHlwZV07Ci0gICAgaWYgKCFsaXN0ZW5lcnMpCi0gICAgICAgIGxpc3RlbmVycyA9IHRoaXMu
X2xpc3RlbmVyc1tldmVudFR5cGVdID0gW107CisgICAgICAgIC8vIFByZXZlbnQgcmVnaXN0ZXJp
bmcgbXVsdGlwbGUgdGltZXMuCisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGlzdGVuZXJz
Lmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBpZiAobGlzdGVuZXJzW2ldLmxpc3RlbmVyID09
PSBsaXN0ZW5lciAmJiBsaXN0ZW5lcnNbaV0udGhpc09iamVjdCA9PT0gdGhpc09iamVjdCkKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KIAotICAgIC8vIFByZXZlbnQgcmVnaXN0
ZXJpbmcgbXVsdGlwbGUgdGltZXMuCi0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0ZW5lcnMu
bGVuZ3RoOyArK2kpIHsKLSAgICAgICAgaWYgKGxpc3RlbmVyc1tpXS5saXN0ZW5lciA9PT0gbGlz
dGVuZXIgJiYgbGlzdGVuZXJzW2ldLnRoaXNPYmplY3QgPT09IHRoaXNPYmplY3QpCi0gICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIGxpc3RlbmVycy5wdXNoKHt0aGlzT2JqZWN0LCBsaXN0ZW5l
cn0pOwogICAgIH0KIAotICAgIGxpc3RlbmVycy5wdXNoKHt0aGlzT2JqZWN0LCBsaXN0ZW5lcn0p
OwotfTsKKyAgICBzdGF0aWMgcmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGxpc3RlbmVy
LCB0aGlzT2JqZWN0KQorICAgIHsKKyAgICAgICAgZXZlbnRUeXBlID0gZXZlbnRUeXBlIHx8IG51
bGw7CisgICAgICAgIGxpc3RlbmVyID0gbGlzdGVuZXIgfHwgbnVsbDsKKyAgICAgICAgdGhpc09i
amVjdCA9IHRoaXNPYmplY3QgfHwgbnVsbDsKIAotV2ViSW5zcGVjdG9yLk9iamVjdC5yZW1vdmVF
dmVudExpc3RlbmVyID0gZnVuY3Rpb24oZXZlbnRUeXBlLCBsaXN0ZW5lciwgdGhpc09iamVjdCkK
LXsKLSAgICBldmVudFR5cGUgPSBldmVudFR5cGUgfHwgbnVsbDsKLSAgICBsaXN0ZW5lciA9IGxp
c3RlbmVyIHx8IG51bGw7Ci0gICAgdGhpc09iamVjdCA9IHRoaXNPYmplY3QgfHwgbnVsbDsKKyAg
ICAgICAgaWYgKCF0aGlzLl9saXN0ZW5lcnMpCisgICAgICAgICAgICByZXR1cm47CiAKLSAgICBp
ZiAoIXRoaXMuX2xpc3RlbmVycykKLSAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAoIWV2ZW50
VHlwZSkgeworICAgICAgICAgICAgZm9yIChldmVudFR5cGUgaW4gdGhpcy5fbGlzdGVuZXJzKQor
ICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGxpc3Rl
bmVyLCB0aGlzT2JqZWN0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogCi0gICAg
aWYgKCFldmVudFR5cGUpIHsKLSAgICAgICAgZm9yIChldmVudFR5cGUgaW4gdGhpcy5fbGlzdGVu
ZXJzKQotICAgICAgICAgICAgdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlz
dGVuZXIsIHRoaXNPYmplY3QpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgICAgICB2YXIg
bGlzdGVuZXJzID0gdGhpcy5fbGlzdGVuZXJzW2V2ZW50VHlwZV07CisgICAgICAgIGlmICghbGlz
dGVuZXJzKQorICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgdmFyIGxpc3RlbmVycyA9IHRoaXMu
X2xpc3RlbmVyc1tldmVudFR5cGVdOwotICAgIGlmICghbGlzdGVuZXJzKQotICAgICAgICByZXR1
cm47CisgICAgICAgIGZvciAodmFyIGkgPSBsaXN0ZW5lcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyAt
LWkpIHsKKyAgICAgICAgICAgIGlmIChsaXN0ZW5lciAmJiBsaXN0ZW5lcnNbaV0ubGlzdGVuZXIg
PT09IGxpc3RlbmVyICYmIGxpc3RlbmVyc1tpXS50aGlzT2JqZWN0ID09PSB0aGlzT2JqZWN0KQor
ICAgICAgICAgICAgICAgIGxpc3RlbmVycy5zcGxpY2UoaSwgMSk7CisgICAgICAgICAgICBlbHNl
IGlmICghbGlzdGVuZXIgJiYgdGhpc09iamVjdCAmJiBsaXN0ZW5lcnNbaV0udGhpc09iamVjdCA9
PT0gdGhpc09iamVjdCkKKyAgICAgICAgICAgICAgICBsaXN0ZW5lcnMuc3BsaWNlKGksIDEpOwor
ICAgICAgICB9CiAKLSAgICBmb3IgKHZhciBpID0gbGlzdGVuZXJzLmxlbmd0aCAtIDE7IGkgPj0g
MDsgLS1pKSB7Ci0gICAgICAgIGlmIChsaXN0ZW5lciAmJiBsaXN0ZW5lcnNbaV0ubGlzdGVuZXIg
PT09IGxpc3RlbmVyICYmIGxpc3RlbmVyc1tpXS50aGlzT2JqZWN0ID09PSB0aGlzT2JqZWN0KQot
ICAgICAgICAgICAgbGlzdGVuZXJzLnNwbGljZShpLCAxKTsKLSAgICAgICAgZWxzZSBpZiAoIWxp
c3RlbmVyICYmIHRoaXNPYmplY3QgJiYgbGlzdGVuZXJzW2ldLnRoaXNPYmplY3QgPT09IHRoaXNP
YmplY3QpCi0gICAgICAgICAgICBsaXN0ZW5lcnMuc3BsaWNlKGksIDEpOwotICAgIH0KKyAgICAg
ICAgaWYgKCFsaXN0ZW5lcnMubGVuZ3RoKQorICAgICAgICAgICAgZGVsZXRlIHRoaXMuX2xpc3Rl
bmVyc1tldmVudFR5cGVdOwogCi0gICAgaWYgKCFsaXN0ZW5lcnMubGVuZ3RoKQotICAgICAgICBk
ZWxldGUgdGhpcy5fbGlzdGVuZXJzW2V2ZW50VHlwZV07CisgICAgICAgIGlmICghT2JqZWN0Lmtl
eXModGhpcy5fbGlzdGVuZXJzKS5sZW5ndGgpCisgICAgICAgICAgICBkZWxldGUgdGhpcy5fbGlz
dGVuZXJzOworICAgIH0KIAotICAgIGlmICghT2JqZWN0LmtleXModGhpcy5fbGlzdGVuZXJzKS5s
ZW5ndGgpCisgICAgc3RhdGljIHJlbW92ZUFsbExpc3RlbmVycygpCisgICAgewogICAgICAgICBk
ZWxldGUgdGhpcy5fbGlzdGVuZXJzOwotfTsKKyAgICB9CiAKLVdlYkluc3BlY3Rvci5PYmplY3Qu
cmVtb3ZlQWxsTGlzdGVuZXJzID0gZnVuY3Rpb24oKQotewotICAgIGRlbGV0ZSB0aGlzLl9saXN0
ZW5lcnM7Ci19OworICAgIHN0YXRpYyBoYXNFdmVudExpc3RlbmVycyhldmVudFR5cGUpCisgICAg
eworICAgICAgICBpZiAoIXRoaXMuX2xpc3RlbmVycyB8fCAhdGhpcy5fbGlzdGVuZXJzW2V2ZW50
VHlwZV0pCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KIAotV2ViSW5zcGVjdG9yLk9iamVjdC5oYXNFdmVudExpc3RlbmVycyA9IGZ1bmN0aW9u
KGV2ZW50VHlwZSkKLXsKLSAgICBpZiAoIXRoaXMuX2xpc3RlbmVycyB8fCAhdGhpcy5fbGlzdGVu
ZXJzW2V2ZW50VHlwZV0pCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gdHJ1ZTsK
LX07CisgICAgLy8gUHVibGljCiAKLVdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlID0gewot
ICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuT2JqZWN0LAorICAgIGFkZEV2ZW50TGlzdGVu
ZXIoKSB7IHJldHVybiBXZWJJbnNwZWN0b3IuT2JqZWN0LmFkZEV2ZW50TGlzdGVuZXIuYXBwbHko
dGhpcywgYXJndW1lbnRzKTsgfQorICAgIHJlbW92ZUV2ZW50TGlzdGVuZXIoKSB7IHJldHVybiBX
ZWJJbnNwZWN0b3IuT2JqZWN0LnJlbW92ZUV2ZW50TGlzdGVuZXIuYXBwbHkodGhpcywgYXJndW1l
bnRzKTsgfQorICAgIHJlbW92ZUFsbExpc3RlbmVycygpIHsgcmV0dXJuIFdlYkluc3BlY3Rvci5P
YmplY3QucmVtb3ZlQWxsTGlzdGVuZXJzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH0KKyAgICBo
YXNFdmVudExpc3RlbmVycygpIHsgcmV0dXJuIFdlYkluc3BlY3Rvci5PYmplY3QuaGFzRXZlbnRM
aXN0ZW5lcnMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfQogCi0gICAgYWRkRXZlbnRMaXN0ZW5l
cjogV2ViSW5zcGVjdG9yLk9iamVjdC5hZGRFdmVudExpc3RlbmVyLAotCi0gICAgcmVtb3ZlRXZl
bnRMaXN0ZW5lcjogV2ViSW5zcGVjdG9yLk9iamVjdC5yZW1vdmVFdmVudExpc3RlbmVyLAotCi0g
ICAgcmVtb3ZlQWxsTGlzdGVuZXJzOiBXZWJJbnNwZWN0b3IuT2JqZWN0LnJlbW92ZUFsbExpc3Rl
bmVycywKLQotICAgIGhhc0V2ZW50TGlzdGVuZXJzOiBXZWJJbnNwZWN0b3IuT2JqZWN0Lmhhc0V2
ZW50TGlzdGVuZXJzLAotCi0gICAgZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzOiBmdW5jdGlvbihl
dmVudFR5cGUsIGV2ZW50RGF0YSkKKyAgICBkaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoZXZlbnRU
eXBlLCBldmVudERhdGEpCiAgICAgewogICAgICAgICB2YXIgZXZlbnQgPSBuZXcgV2ViSW5zcGVj
dG9yLkV2ZW50KHRoaXMsIGV2ZW50VHlwZSwgZXZlbnREYXRhKTsKIApAQCAtMTY1LDI0ICsxNTMs
MzggQEAgV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGUgPSB7CiAgICAgfQogfTsKIAotV2Vi
SW5zcGVjdG9yLkV2ZW50ID0gZnVuY3Rpb24odGFyZ2V0LCB0eXBlLCBkYXRhKQorLy8gRklYTUU6
IFVzZXMgYXJndW1lbnRzLmNhbGxlZSwgc28gaXQgY2Fubm90IGJlIGluIHRoZSBjbGFzcy4KK1dl
Ykluc3BlY3Rvci5PYmplY3QuZGVwcmVjYXRlZEFkZENvbnN0cnVjdG9yRnVuY3Rpb25zID0gZnVu
Y3Rpb24oc3ViY2xhc3NDb25zdHJ1Y3RvcikKIHsKLSAgICB0aGlzLnRhcmdldCA9IHRhcmdldDsK
LSAgICB0aGlzLnR5cGUgPSB0eXBlOwotICAgIHRoaXMuZGF0YSA9IGRhdGE7Ci0gICAgdGhpcy5k
ZWZhdWx0UHJldmVudGVkID0gZmFsc2U7Ci0gICAgdGhpcy5fc3RvcHBlZFByb3BhZ2F0aW9uID0g
ZmFsc2U7CisgICAgLy8gQ29waWVzIHRoZSByZWxldmFudCBmdW5jdGlvbnMgdG8gdGhlIHN1YmNs
YXNzIGNvbnN0cnVjdG9yLgorICAgIHZhciBsaXN0ID0gWyJhZGRFdmVudExpc3RlbmVyIiwgInJl
bW92ZUV2ZW50TGlzdGVuZXIiLCAicmVtb3ZlQWxsTGlzdGVuZXJzIiwgImhhc0V2ZW50TGlzdGVu
ZXJzIl07CisgICAgZm9yICh2YXIgcHJvcGVydHkgb2YgbGlzdCkgeworICAgICAgICB2YXIgdmFs
dWUgPSBXZWJJbnNwZWN0b3IuT2JqZWN0W3Byb3BlcnR5XTsKKyAgICAgICAgaWYgKHR5cGVvZiB2
YWx1ZSAhPT0gImZ1bmN0aW9uIikKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAo
dmFsdWUgPT09IGFyZ3VtZW50cy5jYWxsZWUpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgc3ViY2xhc3NDb25zdHJ1Y3Rvcltwcm9wZXJ0eV0gPSB2YWx1ZTsKKyAgICB9CiB9OwogCi1X
ZWJJbnNwZWN0b3IuRXZlbnQucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNw
ZWN0b3IuRXZlbnQsCitXZWJJbnNwZWN0b3IuRXZlbnQgPSBjbGFzcyBFdmVudAoreworICAgIGNv
bnN0cnVjdG9yKHRhcmdldCwgdHlwZSwgZGF0YSkKKyAgICB7CisgICAgICAgIHRoaXMudGFyZ2V0
ID0gdGFyZ2V0OworICAgICAgICB0aGlzLnR5cGUgPSB0eXBlOworICAgICAgICB0aGlzLmRhdGEg
PSBkYXRhOworICAgICAgICB0aGlzLmRlZmF1bHRQcmV2ZW50ZWQgPSBmYWxzZTsKKyAgICAgICAg
dGhpcy5fc3RvcHBlZFByb3BhZ2F0aW9uID0gZmFsc2U7CisgICAgfQogCi0gICAgc3RvcFByb3Bh
Z2F0aW9uOiBmdW5jdGlvbigpCisgICAgc3RvcFByb3BhZ2F0aW9uKCkKICAgICB7CiAgICAgICAg
IHRoaXMuX3N0b3BwZWRQcm9wYWdhdGlvbiA9IHRydWU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBw
cmV2ZW50RGVmYXVsdDogZnVuY3Rpb24oKQorICAgIHByZXZlbnREZWZhdWx0KCkKICAgICB7CiAg
ICAgICAgIHRoaXMuZGVmYXVsdFByZXZlbnRlZCA9IHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9UZXN0LmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9UZXN0LmpzCmluZGV4IGVhMWNlYjcu
LjI3MzIwN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L0Jhc2UvVGVzdC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9C
YXNlL1Rlc3QuanMKQEAgLTEwMyw3ICsxMDMsOCBAQCBJbnNwZWN0b3JUZXN0LmR1bXBNZXNzYWdl
c1RvQ29uc29sZSA9IGZhbHNlOwogLy8gcHJvdG90eXBlLCBhbmQgcHJvdG90eXBlIGNoYWluIGZv
ciB0aGUgc2luZ2xldG9uIEluc3BlY3RvclRlc3QuCiBJbnNwZWN0b3JUZXN0LkV2ZW50RGlzcGF0
Y2hlciA9IGZ1bmN0aW9uKCkKIHsKLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7
CisgICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3Vi
Y2xhc3MsIGFuZCBjYWxsIHN1cGVyKCkuCisgICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxs
KHRoaXMpOwogfTsKIAogSW5zcGVjdG9yVGVzdC5FdmVudERpc3BhdGNoZXIuRXZlbnQgPSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVy
cy9BbmFseXplck1hbmFnZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Db250cm9sbGVycy9BbmFseXplck1hbmFnZXIuanMKaW5kZXggMDhjZjE2Mi4uM2RjMTFmMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxl
cnMvQW5hbHl6ZXJNYW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL0NvbnRyb2xsZXJzL0FuYWx5emVyTWFuYWdlci5qcwpAQCAtMjUsNyArMjUsOCBAQAog
CiBXZWJJbnNwZWN0b3IuQW5hbHl6ZXJNYW5hZ2VyID0gZnVuY3Rpb24oKQogewotICAgIFdlYklu
c3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRv
IGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KKyAgICAv
LyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CiAKICAgICB0aGlzLl9lc2xpbnRDb25m
aWcgPSB7CiAgICAgICAgIGVudjogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQW5ub3RhdG9yLmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQW5ub3RhdG9yLmpzCmluZGV4IGQzNjM0
OTEuLjE2MDI3NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0NvbnRyb2xsZXJzL0Fubm90YXRvci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Db250cm9sbGVycy9Bbm5vdGF0b3IuanMKQEAgLTI2LDcgKzI2LDggQEAK
IAogV2ViSW5zcGVjdG9yLkFubm90YXRvciA9IGZ1bmN0aW9uKHNvdXJjZUNvZGVUZXh0RWRpdG9y
KQogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICAvLyBGSVhNRTog
Q29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwg
c3VwZXIoKS4KKyAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CiAKICAgICBj
b25zb2xlLmFzc2VydChzb3VyY2VDb2RlVGV4dEVkaXRvciBpbnN0YW5jZW9mIFdlYkluc3BlY3Rv
ci5Tb3VyY2VDb2RlVGV4dEVkaXRvciwgc291cmNlQ29kZVRleHRFZGl0b3IpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9BcHBs
aWNhdGlvbkNhY2hlTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0NvbnRyb2xsZXJzL0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmpzCmluZGV4IGU4YTA3YmUu
LjhkYTY0OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L0NvbnRyb2xsZXJzL0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0FwcGxpY2F0aW9uQ2FjaGVNYW5h
Z2VyLmpzCkBAIC0yNSw3ICsyNSw4IEBACiAKIFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hl
TWFuYWdlciA9IGZ1bmN0aW9uKCkKIHsKLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhp
cyk7CisgICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qg
c3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCkuCisgICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5j
YWxsKHRoaXMpOwogCiAgICAgaWYgKHdpbmRvdy5BcHBsaWNhdGlvbkNhY2hlQWdlbnQpCiAgICAg
ICAgIEFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5lbmFibGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0JyYW5jaE1hbmFnZXIuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9CcmFuY2hN
YW5hZ2VyLmpzCmluZGV4IDY3ZWNkYjIuLmIzMjM1ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0JyYW5jaE1hbmFnZXIuanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQnJhbmNo
TWFuYWdlci5qcwpAQCAtMjUsNyArMjUsOCBAQAogCiBXZWJJbnNwZWN0b3IuQnJhbmNoTWFuYWdl
ciA9IGZ1bmN0aW9uKCkKIHsKLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7Cisg
ICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xh
c3MsIGFuZCBjYWxsIHN1cGVyKCkuCisgICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRo
aXMpOwogCiAgICAgV2ViSW5zcGVjdG9yLkZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVj
dG9yLkZyYW1lLkV2ZW50Lk1haW5SZXNvdXJjZURpZENoYW5nZSwgdGhpcy5fbWFpblJlc291cmNl
RGlkQ2hhbmdlLCB0aGlzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQ1NTU3R5bGVNYW5hZ2VyLmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQ1NTU3R5bGVNYW5hZ2VyLmpzCmlu
ZGV4IDdlZWFlMzUwLi5mYTZlMmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Db250cm9sbGVycy9DU1NTdHlsZU1hbmFnZXIuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQ1NTU3R5bGVNYW5hZ2Vy
LmpzCkBAIC0yNSw3ICsyNSw4IEBACiAKIFdlYkluc3BlY3Rvci5DU1NTdHlsZU1hbmFnZXIgPSBm
dW5jdGlvbigpCiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIC8v
IEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBh
bmQgY2FsbCBzdXBlcigpLgorICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsK
IAogICAgIGlmICh3aW5kb3cuQ1NTQWdlbnQpCiAgICAgICAgIENTU0FnZW50LmVuYWJsZSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxl
cnMvQ29kZU1pcnJvckNvbXBsZXRpb25Db250cm9sbGVyLmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQ29kZU1pcnJvckNvbXBsZXRpb25Db250cm9s
bGVyLmpzCmluZGV4IDJkZDhhYWIuLjRkYThjNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0NvZGVNaXJyb3JDb21wbGV0aW9uQ29u
dHJvbGxlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250
cm9sbGVycy9Db2RlTWlycm9yQ29tcGxldGlvbkNvbnRyb2xsZXIuanMKQEAgLTI1LDcgKzI1LDgg
QEAKIAogV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JDb21wbGV0aW9uQ29udHJvbGxlciA9IGZ1bmN0
aW9uKGNvZGVNaXJyb3IsIGRlbGVnYXRlLCBzdG9wQ2hhcmFjdGVyc1JlZ2V4KQogewotICAgIFdl
Ykluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICAvLyBGSVhNRTogQ29udmVydCB0aGlz
IHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KKyAg
ICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CiAKICAgICBjb25zb2xlLmFzc2Vy
dChjb2RlTWlycm9yKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvQ29udHJvbGxlcnMvQ29kZU1pcnJvckVkaXRpbmdDb250cm9sbGVyLmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQ29kZU1pcnJvckVk
aXRpbmdDb250cm9sbGVyLmpzCmluZGV4IDAxYjk1YmUuLjkwNjM5ZDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0NvZGVNaXJyb3JF
ZGl0aW5nQ29udHJvbGxlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Db250cm9sbGVycy9Db2RlTWlycm9yRWRpdGluZ0NvbnRyb2xsZXIuanMKQEAgLTI1LDcg
KzI1LDggQEAKIAogV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JFZGl0aW5nQ29udHJvbGxlciA9IGZ1
bmN0aW9uKGNvZGVNaXJyb3IsIG1hcmtlcikKIHsKLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNh
bGwodGhpcyk7CisgICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5P
YmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCkuCisgICAgLy8gV2ViSW5zcGVjdG9yLk9i
amVjdC5jYWxsKHRoaXMpOwogCiAgICAgdGhpcy5fY29kZU1pcnJvciA9IGNvZGVNaXJyb3I7CiAg
ICAgdGhpcy5fbWFya2VyID0gbWFya2VyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQ29kZU1pcnJvclRva2VuVHJhY2tpbmdDb250
cm9sbGVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxl
cnMvQ29kZU1pcnJvclRva2VuVHJhY2tpbmdDb250cm9sbGVyLmpzCmluZGV4IGQ3YThmZDkuLjM0
ZWNlMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Nv
bnRyb2xsZXJzL0NvZGVNaXJyb3JUb2tlblRyYWNraW5nQ29udHJvbGxlci5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9Db2RlTWlycm9yVG9r
ZW5UcmFja2luZ0NvbnRyb2xsZXIuanMKQEAgLTI1LDcgKzI1LDggQEAKIAogV2ViSW5zcGVjdG9y
LkNvZGVNaXJyb3JUb2tlblRyYWNraW5nQ29udHJvbGxlciA9IGZ1bmN0aW9uKGNvZGVNaXJyb3Is
IGRlbGVnYXRlKQogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICAv
LyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywg
YW5kIGNhbGwgc3VwZXIoKS4KKyAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7
CiAKICAgICBjb25zb2xlLmFzc2VydChjb2RlTWlycm9yKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NVHJlZU1hbmFnZXIu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9ET01U
cmVlTWFuYWdlci5qcwppbmRleCA4NGU0Y2RmLi43MTE2ZmZiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9ET01UcmVlTWFuYWdlci5q
cworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9E
T01UcmVlTWFuYWdlci5qcwpAQCAtNDEsNyArNDEsOCBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZU1h
bmFnZXIgPSBmdW5jdGlvbigpIHsKICAgICBXZWJJbnNwZWN0b3IuRnJhbWUuYWRkRXZlbnRMaXN0
ZW5lcihXZWJJbnNwZWN0b3IuRnJhbWUuRXZlbnQuTWFpblJlc291cmNlRGlkQ2hhbmdlLCB0aGlz
Ll9tYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMpOwogfTsKIAotV2ViSW5zcGVjdG9yLk9iamVj
dC5hZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhXZWJJbnNwZWN0b3IuRE9NVHJlZU1hbmFnZXIpOwor
Ly8gRklYTUU6IE1vdmUgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzIGFuZCB3ZSBj
YW4gcmVtb3ZlIHRoaXMuCitXZWJJbnNwZWN0b3IuT2JqZWN0LmRlcHJlY2F0ZWRBZGRDb25zdHJ1
Y3RvckZ1bmN0aW9ucyhXZWJJbnNwZWN0b3IuRE9NVHJlZU1hbmFnZXIpOwogCiBXZWJJbnNwZWN0
b3IuRE9NVHJlZU1hbmFnZXIuRXZlbnQgPSB7CiAgICAgQXR0cmlidXRlTW9kaWZpZWQ6ICJkb20t
dHJlZS1tYW5hZ2VyLWF0dHJpYnV0ZS1tb2RpZmllZCIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9EYXNoYm9hcmRNYW5hZ2VyLmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRGFzaGJv
YXJkTWFuYWdlci5qcwppbmRleCA5NDI1YTVlLi5jODQ4YjI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9EYXNoYm9hcmRNYW5hZ2Vy
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJz
L0Rhc2hib2FyZE1hbmFnZXIuanMKQEAgLTI0LDcgKzI0LDggQEAKICAqLwogCiBXZWJJbnNwZWN0
b3IuRGFzaGJvYXJkTWFuYWdlciA9IGZ1bmN0aW9uKCkgewotICAgIFdlYkluc3BlY3Rvci5PYmpl
Y3QuY2FsbCh0aGlzKTsKKyAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVj
dG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KKyAgICAvLyBXZWJJbnNwZWN0
b3IuT2JqZWN0LmNhbGwodGhpcyk7CiAKICAgICB0aGlzLl9kYXNoYm9hcmRzID0ge307CiAgICAg
dGhpcy5fZGFzaGJvYXJkcy5kZWZhdWx0ID0gbmV3IFdlYkluc3BlY3Rvci5EZWZhdWx0RGFzaGJv
YXJkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29u
dHJvbGxlcnMvRGVidWdnZXJNYW5hZ2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvQ29udHJvbGxlcnMvRGVidWdnZXJNYW5hZ2VyLmpzCmluZGV4IDAyMWY4YzUuLmVm
ZmQ4YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Nv
bnRyb2xsZXJzL0RlYnVnZ2VyTWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Db250cm9sbGVycy9EZWJ1Z2dlck1hbmFnZXIuanMKQEAgLTI1LDcgKzI1
LDggQEAKIAogV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTWFuYWdlciA9IGZ1bmN0aW9uKCkKIHsKLSAg
ICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CisgICAgLy8gRklYTUU6IENvbnZlcnQg
dGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCku
CisgICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwogCiAgICAgaWYgKHdpbmRv
dy5EZWJ1Z2dlckFnZW50KQogICAgICAgICBEZWJ1Z2dlckFnZW50LmVuYWJsZSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRm9y
bWF0dGVyU291cmNlTWFwLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Q29udHJvbGxlcnMvRm9ybWF0dGVyU291cmNlTWFwLmpzCmluZGV4IDBhZTFjM2EuLmE4MGY2Y2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xs
ZXJzL0Zvcm1hdHRlclNvdXJjZU1hcC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Db250cm9sbGVycy9Gb3JtYXR0ZXJTb3VyY2VNYXAuanMKQEAgLTI1LDcgKzI1
LDggQEAKIAogV2ViSW5zcGVjdG9yLkZvcm1hdHRlclNvdXJjZU1hcCA9IGZ1bmN0aW9uKG9yaWdp
bmFsTGluZUVuZGluZ3MsIGZvcm1hdHRlZExpbmVFbmRpbmdzLCBtYXBwaW5nKQogewotICAgIFdl
Ykluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICAvLyBGSVhNRTogQ29udmVydCB0aGlz
IHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KKyAg
ICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CiAKICAgICB0aGlzLl9vcmlnaW5h
bExpbmVFbmRpbmdzID0gb3JpZ2luYWxMaW5lRW5kaW5nczsKICAgICB0aGlzLl9mb3JtYXR0ZWRM
aW5lRW5kaW5ncyA9IGZvcm1hdHRlZExpbmVFbmRpbmdzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRnJhbWVSZXNvdXJjZU1hbmFn
ZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9G
cmFtZVJlc291cmNlTWFuYWdlci5qcwppbmRleCBkODIxNGU5Li45MTFiNTRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9GcmFtZVJl
c291cmNlTWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Db250cm9sbGVycy9GcmFtZVJlc291cmNlTWFuYWdlci5qcwpAQCAtMjUsNyArMjUsOCBAQAog
CiBXZWJJbnNwZWN0b3IuRnJhbWVSZXNvdXJjZU1hbmFnZXIgPSBmdW5jdGlvbigpCiB7Ci0gICAg
V2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRo
aXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgor
ICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKIAogICAgIGlmICh3aW5kb3cu
UGFnZUFnZW50KQogICAgICAgICBQYWdlQWdlbnQuZW5hYmxlKCk7CkBAIC0zNyw3ICszOCw4IEBA
IFdlYkluc3BlY3Rvci5GcmFtZVJlc291cmNlTWFuYWdlciA9IGZ1bmN0aW9uKCkKICAgICB0aGlz
LmluaXRpYWxpemUoKTsKIH07CiAKLVdlYkluc3BlY3Rvci5PYmplY3QuYWRkQ29uc3RydWN0b3JG
dW5jdGlvbnMoV2ViSW5zcGVjdG9yLkZyYW1lUmVzb3VyY2VNYW5hZ2VyKTsKKy8vIEZJWE1FOiBN
b3ZlIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcyBhbmQgd2UgY2FuIHJlbW92ZSB0
aGlzLgorV2ViSW5zcGVjdG9yLk9iamVjdC5kZXByZWNhdGVkQWRkQ29uc3RydWN0b3JGdW5jdGlv
bnMoV2ViSW5zcGVjdG9yLkZyYW1lUmVzb3VyY2VNYW5hZ2VyKTsKIAogV2ViSW5zcGVjdG9yLkZy
YW1lUmVzb3VyY2VNYW5hZ2VyLkV2ZW50ID0gewogICAgIEZyYW1lV2FzQWRkZWQ6ICJmcmFtZS1y
ZXNvdXJjZS1tYW5hZ2VyLWZyYW1lLXdhcy1hZGRlZCIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9Jc3N1ZU1hbmFnZXIuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9Jc3N1ZU1hbmFn
ZXIuanMKaW5kZXggNjMyMjA0Mi4uZjIwZTk1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvSXNzdWVNYW5hZ2VyLmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0lzc3VlTWFuYWdl
ci5qcwpAQCAtMjUsNyArMjUsOCBAQAogCiBXZWJJbnNwZWN0b3IuSXNzdWVNYW5hZ2VyID0gZnVu
Y3Rpb24oKQogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICAvLyBG
SVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5k
IGNhbGwgc3VwZXIoKS4KKyAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CiAK
ICAgICBXZWJJbnNwZWN0b3IuRnJhbWUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRnJh
bWUuRXZlbnQuTWFpblJlc291cmNlRGlkQ2hhbmdlLCB0aGlzLl9tYWluUmVzb3VyY2VEaWRDaGFu
Z2UsIHRoaXMpOwogICAgIFdlYkluc3BlY3Rvci5sb2dNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIo
V2ViSW5zcGVjdG9yLkxvZ01hbmFnZXIuRXZlbnQuQWN0aXZlTG9nQ2xlYXJlZCwgdGhpcy5fYWN0
aXZlTG9nQ2xlYXJlZCwgdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Db250cm9sbGVycy9KYXZhU2NyaXB0TG9nVmlld0NvbnRyb2xsZXIuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9KYXZhU2Ny
aXB0TG9nVmlld0NvbnRyb2xsZXIuanMKaW5kZXggNWMyYjEwNy4uOTI2ODI3ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvSmF2YVNj
cmlwdExvZ1ZpZXdDb250cm9sbGVyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL0NvbnRyb2xsZXJzL0phdmFTY3JpcHRMb2dWaWV3Q29udHJvbGxlci5qcwpAQCAt
MjUsNyArMjUsOCBAQAogCiBXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdExvZ1ZpZXdDb250cm9sbGVy
ID0gZnVuY3Rpb24oZWxlbWVudCwgc2Nyb2xsRWxlbWVudCwgdGV4dFByb21wdCwgZGVsZWdhdGUs
IGhpc3RvcnlTZXR0aW5nSWRlbnRpZmllcikKIHsKLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNh
bGwodGhpcyk7CisgICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5P
YmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCkuCisgICAgLy8gV2ViSW5zcGVjdG9yLk9i
amVjdC5jYWxsKHRoaXMpOwogCiAgICAgY29uc29sZS5hc3NlcnQodGV4dFByb21wdCBpbnN0YW5j
ZW9mIFdlYkluc3BlY3Rvci5Db25zb2xlUHJvbXB0KTsKICAgICBjb25zb2xlLmFzc2VydChoaXN0
b3J5U2V0dGluZ0lkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvSmF2YVNjcmlwdFJ1bnRpbWVDb21wbGV0aW9uUHJv
dmlkZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVy
cy9KYXZhU2NyaXB0UnVudGltZUNvbXBsZXRpb25Qcm92aWRlci5qcwppbmRleCAxNjgxNmQ2Li43
ZDUxMTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9D
b250cm9sbGVycy9KYXZhU2NyaXB0UnVudGltZUNvbXBsZXRpb25Qcm92aWRlci5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9KYXZhU2NyaXB0
UnVudGltZUNvbXBsZXRpb25Qcm92aWRlci5qcwpAQCAtMjUsNyArMjUsOCBAQAogCiBXZWJJbnNw
ZWN0b3IuSmF2YVNjcmlwdFJ1bnRpbWVDb21wbGV0aW9uUHJvdmlkZXIgPSBmdW5jdGlvbigpCiB7
Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIC8vIEZJWE1FOiBDb252
ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBl
cigpLgorICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKIAogICAgIGNvbnNv
bGUuYXNzZXJ0KCFXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFJ1bnRpbWVDb21wbGV0aW9uUHJvdmlk
ZXIuX2luc3RhbmNlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvQ29udHJvbGxlcnMvTGF5ZXJUcmVlTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0xheWVyVHJlZU1hbmFnZXIuanMKaW5k
ZXggZGRlNDBmYS4uMWIzODc0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvTGF5ZXJUcmVlTWFuYWdlci5qcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9MYXllclRyZWVNYW5hZ2Vy
LmpzCkBAIC0yNCw3ICsyNCw4IEBACiAgKi8KIAogV2ViSW5zcGVjdG9yLkxheWVyVHJlZU1hbmFn
ZXIgPSBmdW5jdGlvbigpIHsKLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7Cisg
ICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xh
c3MsIGFuZCBjYWxsIHN1cGVyKCkuCisgICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRo
aXMpOwogCiAgICAgdGhpcy5fc3VwcG9ydGVkID0gISF3aW5kb3cuTGF5ZXJUcmVlQWdlbnQ7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xs
ZXJzL0xvZ01hbmFnZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9D
b250cm9sbGVycy9Mb2dNYW5hZ2VyLmpzCmluZGV4IGQ4ZjhkYmQuLjRhY2Q1YmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0xvZ01h
bmFnZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJv
bGxlcnMvTG9nTWFuYWdlci5qcwpAQCAtMjUsNyArMjUsOCBAQAogCiBXZWJJbnNwZWN0b3IuTG9n
TWFuYWdlciA9IGZ1bmN0aW9uKCkKIHsKLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhp
cyk7CisgICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qg
c3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCkuCisgICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5j
YWxsKHRoaXMpOwogCiAgICAgV2ViSW5zcGVjdG9yLkZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoV2Vi
SW5zcGVjdG9yLkZyYW1lLkV2ZW50Lk1haW5SZXNvdXJjZURpZENoYW5nZSwgdGhpcy5fbWFpblJl
c291cmNlRGlkQ2hhbmdlLCB0aGlzKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9Qcm9iZU1hbmFnZXIuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9Qcm9iZU1hbmFnZXIuanMK
aW5kZXggOWQ5NDU5Yy4uMDA1ZGJkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvUHJvYmVNYW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1Byb2JlTWFuYWdlci5qcwpA
QCAtMjYsNyArMjYsOCBAQAogCiBXZWJJbnNwZWN0b3IuUHJvYmVNYW5hZ2VyID0gZnVuY3Rpb24o
KQogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICAvLyBGSVhNRTog
Q29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwg
c3VwZXIoKS4KKyAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CiAKICAgICAv
LyBVc2VkIHRvIGRldGVjdCBkZWxldGVkIHByb2JlIGFjdGlvbnMuCiAgICAgdGhpcy5fa25vd25Q
cm9iZUlkZW50aWZpZXJzRm9yQnJlYWtwb2ludCA9IG5ldyBNYXA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9SZXBsYXlNYW5hZ2Vy
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvUmVw
bGF5TWFuYWdlci5qcwppbmRleCA1Y2Y5ZGMyLi40ODA0YWUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9SZXBsYXlNYW5hZ2VyLmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1Jl
cGxheU1hbmFnZXIuanMKQEAgLTI2LDcgKzI2LDggQEAKIAogV2ViSW5zcGVjdG9yLlJlcGxheU1h
bmFnZXIgPSBmdW5jdGlvbigpCiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMp
OworICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1
YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgorICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2Fs
bCh0aGlzKTsKIAogICAgIHRoaXMuX3Nlc3Npb25TdGF0ZSA9IFdlYkluc3BlY3Rvci5SZXBsYXlN
YW5hZ2VyLlNlc3Npb25TdGF0ZS5JbmFjdGl2ZTsKICAgICB0aGlzLl9zZWdtZW50U3RhdGUgPSBX
ZWJJbnNwZWN0b3IuUmVwbGF5TWFuYWdlci5TZWdtZW50U3RhdGUuVW5sb2FkZWQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9SdW50
aW1lTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRy
b2xsZXJzL1J1bnRpbWVNYW5hZ2VyLmpzCmluZGV4IDc3ZDkwNDYuLmM5YjIwYzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1J1bnRp
bWVNYW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Nv
bnRyb2xsZXJzL1J1bnRpbWVNYW5hZ2VyLmpzCkBAIC0yNSw3ICsyNSw4IEBACiAKIFdlYkluc3Bl
Y3Rvci5SdW50aW1lTWFuYWdlciA9IGZ1bmN0aW9uKCkKIHsKLSAgICBXZWJJbnNwZWN0b3IuT2Jq
ZWN0LmNhbGwodGhpcyk7CisgICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3Bl
Y3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCkuCisgICAgLy8gV2ViSW5zcGVj
dG9yLk9iamVjdC5jYWxsKHRoaXMpOwogCiAgICAgLy8gRW5hYmxlIHRoZSBSdW50aW1lQWdlbnQg
dG8gcmVjZWl2ZSBub3RpZmljYXRpb24gb2YgZXhlY3V0aW9uIGNvbnRleHRzLgogICAgIGlmIChS
dW50aW1lQWdlbnQuZW5hYmxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvU291cmNlTWFwTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1NvdXJjZU1hcE1hbmFnZXIuanMK
aW5kZXggZjNkMTZjZC4uY2FlZTc3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvU291cmNlTWFwTWFuYWdlci5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9Tb3VyY2VNYXBNYW5h
Z2VyLmpzCkBAIC0yNSw3ICsyNSw4IEBACiAKIFdlYkluc3BlY3Rvci5Tb3VyY2VNYXBNYW5hZ2Vy
ID0gZnVuY3Rpb24oKQogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAg
ICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFz
cywgYW5kIGNhbGwgc3VwZXIoKS4KKyAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhp
cyk7CiAKICAgICB0aGlzLl9zb3VyY2VNYXBVUkxNYXAgPSB7fTsKICAgICB0aGlzLl9kb3dubG9h
ZGluZ1NvdXJjZU1hcHMgPSB7fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1N0b3JhZ2VNYW5hZ2VyLmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvU3RvcmFnZU1hbmFnZXIuanMKaW5k
ZXggY2VlY2UzMC4uYTU4YWNjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvU3RvcmFnZU1hbmFnZXIuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvU3RvcmFnZU1hbmFnZXIuanMK
QEAgLTI2LDcgKzI2LDggQEAKIAogV2ViSW5zcGVjdG9yLlN0b3JhZ2VNYW5hZ2VyID0gZnVuY3Rp
b24oKQogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICAvLyBGSVhN
RTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNh
bGwgc3VwZXIoKS4KKyAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CiAKICAg
ICBpZiAod2luZG93LkRPTVN0b3JhZ2VBZ2VudCkKICAgICAgICAgRE9NU3RvcmFnZUFnZW50LmVu
YWJsZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Q29udHJvbGxlcnMvVGltZWxpbmVNYW5hZ2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvVGltZWxpbmVNYW5hZ2VyLmpzCmluZGV4IDNmNDZmZDku
LjExM2RiODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L0NvbnRyb2xsZXJzL1RpbWVsaW5lTWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9UaW1lbGluZU1hbmFnZXIuanMKQEAgLTI1LDcg
KzI1LDggQEAKIAogV2ViSW5zcGVjdG9yLlRpbWVsaW5lTWFuYWdlciA9IGZ1bmN0aW9uKCkKIHsK
LSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CisgICAgLy8gRklYTUU6IENvbnZl
cnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVy
KCkuCisgICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwogCiAgICAgV2ViSW5z
cGVjdG9yLkZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkZyYW1lLkV2ZW50LlBy
b3Zpc2lvbmFsTG9hZFN0YXJ0ZWQsIHRoaXMuX3N0YXJ0QXV0b0NhcHR1cmluZywgdGhpcyk7CiAg
ICAgV2ViSW5zcGVjdG9yLkZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkZyYW1l
LkV2ZW50Lk1haW5SZXNvdXJjZURpZENoYW5nZSwgdGhpcy5fbWFpblJlc291cmNlRGlkQ2hhbmdl
LCB0aGlzKTsKQEAgLTQzMSwxMCArNDMyLDEwIEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZU1hbmFn
ZXIucHJvdG90eXBlID0gewogCiAgICAgICAgIHZhciBpZGVudGlmaWVyID0gdGhpcy5fbmV4dFJl
Y29yZGluZ0lkZW50aWZpZXIrKzsKICAgICAgICAgdmFyIG5ld1JlY29yZGluZyA9IG5ldyBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVSZWNvcmRpbmcoaWRlbnRpZmllciwgV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJUaW1lbGluZSBSZWNvcmRpbmcgJWQiKS5mb3JtYXQoaWRlbnRpZmllcikpOwotICAgICAg
ICBuZXdSZWNvcmRpbmcuYWRkVGltZWxpbmUobmV3IFdlYkluc3BlY3Rvci5UaW1lbGluZShXZWJJ
bnNwZWN0b3IuVGltZWxpbmVSZWNvcmQuVHlwZS5OZXR3b3JrLCBuZXdSZWNvcmRpbmcpKTsKLSAg
ICAgICAgbmV3UmVjb3JkaW5nLmFkZFRpbWVsaW5lKG5ldyBXZWJJbnNwZWN0b3IuVGltZWxpbmUo
V2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkLlR5cGUuUnVuTG9vcCwgbmV3UmVjb3JkaW5nKSk7
Ci0gICAgICAgIG5ld1JlY29yZGluZy5hZGRUaW1lbGluZShuZXcgV2ViSW5zcGVjdG9yLlRpbWVs
aW5lKFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5UeXBlLkxheW91dCwgbmV3UmVjb3JkaW5n
KSk7Ci0gICAgICAgIG5ld1JlY29yZGluZy5hZGRUaW1lbGluZShuZXcgV2ViSW5zcGVjdG9yLlRp
bWVsaW5lKFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5UeXBlLlNjcmlwdCwgbmV3UmVjb3Jk
aW5nKSk7CisgICAgICAgIG5ld1JlY29yZGluZy5hZGRUaW1lbGluZShXZWJJbnNwZWN0b3IuVGlt
ZWxpbmUuY3JlYXRlKFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5UeXBlLk5ldHdvcmssIG5l
d1JlY29yZGluZykpOworICAgICAgICBuZXdSZWNvcmRpbmcuYWRkVGltZWxpbmUoV2ViSW5zcGVj
dG9yLlRpbWVsaW5lLmNyZWF0ZShXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQuVHlwZS5SdW5M
b29wLCBuZXdSZWNvcmRpbmcpKTsKKyAgICAgICAgbmV3UmVjb3JkaW5nLmFkZFRpbWVsaW5lKFdl
Ykluc3BlY3Rvci5UaW1lbGluZS5jcmVhdGUoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkLlR5
cGUuTGF5b3V0LCBuZXdSZWNvcmRpbmcpKTsKKyAgICAgICAgbmV3UmVjb3JkaW5nLmFkZFRpbWVs
aW5lKFdlYkluc3BlY3Rvci5UaW1lbGluZS5jcmVhdGUoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVj
b3JkLlR5cGUuU2NyaXB0LCBuZXdSZWNvcmRpbmcpKTsKIAogICAgICAgICB0aGlzLl9yZWNvcmRp
bmdzLnB1c2gobmV3UmVjb3JkaW5nKTsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0
ZW5lcnMoV2ViSW5zcGVjdG9yLlRpbWVsaW5lTWFuYWdlci5FdmVudC5SZWNvcmRpbmdDcmVhdGVk
LCB7cmVjb3JkaW5nOiBuZXdSZWNvcmRpbmd9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9BbmFseXplck1lc3NhZ2UuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQW5hbHl6ZXJNZXNzYWdlLmpzCmlu
ZGV4IGUzMDU1NjcuLjVkMGI5NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL01vZGVscy9BbmFseXplck1lc3NhZ2UuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0FuYWx5emVyTWVzc2FnZS5qcwpAQCAtMjMs
MzYgKzIzLDM2IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAot
V2ViSW5zcGVjdG9yLkFuYWx5emVyTWVzc2FnZSA9IGZ1bmN0aW9uKHNvdXJjZUNvZGVMb2NhdGlv
biwgdGV4dCwgcnVsZUlkZW50aWZpZXIpCitXZWJJbnNwZWN0b3IuQW5hbHl6ZXJNZXNzYWdlID0g
Y2xhc3MgQW5hbHl6ZXJNZXNzYWdlIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogewotICAg
IFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICBjb25zdHJ1Y3Rvcihzb3VyY2VD
b2RlTG9jYXRpb24sIHRleHQsIHJ1bGVJZGVudGlmaWVyKQorICAgIHsKKyAgICAgICAgc3VwZXIo
KTsKIAotICAgIGNvbnNvbGUuYXNzZXJ0KHNvdXJjZUNvZGVMb2NhdGlvbiBpbnN0YW5jZW9mIFdl
Ykluc3BlY3Rvci5Tb3VyY2VDb2RlTG9jYXRpb24pOwotICAgIGNvbnNvbGUuYXNzZXJ0KHR5cGVv
ZiB0ZXh0ID09PSAic3RyaW5nIik7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHNvdXJjZUNvZGVM
b2NhdGlvbiBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlTG9jYXRpb24pOworICAg
ICAgICBjb25zb2xlLmFzc2VydCh0eXBlb2YgdGV4dCA9PT0gInN0cmluZyIpOwogCi0gICAgdGhp
cy5fc291cmNlQ29kZUxvY2F0aW9uID0gc291cmNlQ29kZUxvY2F0aW9uOwotICAgIHRoaXMuX3Rl
eHQgPSB0ZXh0OwotICAgIHRoaXMuX3J1bGVJZGVudGlmaWVyID0gcnVsZUlkZW50aWZpZXI7Ci19
OworICAgICAgICB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb24gPSBzb3VyY2VDb2RlTG9jYXRpb247
CisgICAgICAgIHRoaXMuX3RleHQgPSB0ZXh0OworICAgICAgICB0aGlzLl9ydWxlSWRlbnRpZmll
ciA9IHJ1bGVJZGVudGlmaWVyOworICAgIH0KIAotV2ViSW5zcGVjdG9yLkFuYWx5emVyTWVzc2Fn
ZS5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5BbmFseXplck1l
c3NhZ2UsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZSwKKyAg
ICAvLyBQdWJsaWMKIAogICAgIGdldCBzb3VyY2VDb2RlTG9jYXRpb24oKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbjsKLSAgICB9LAorICAgIH0KIAogICAg
IGdldCBzb3VyY2VDb2RlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zb3VyY2VDb2Rl
TG9jYXRpb24uc291cmNlQ29kZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCB0ZXh0KCkKICAg
ICB7CiAgICAgICAgIHJldHVybiB0aGlzLl90ZXh0OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0
IHJ1bGVJZGVudGlmaWVyKCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQXBwbGljYXRpb25DYWNoZUZyYW1lLmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0FwcGxpY2F0aW9uQ2FjaGVGcmFt
ZS5qcwppbmRleCA2MDIyOTljLi5iZWZjMThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQXBwbGljYXRpb25DYWNoZUZyYW1lLmpzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9BcHBsaWNhdGlvbkNh
Y2hlRnJhbWUuanMKQEAgLTIzLDUyICsyMyw0OSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJhbWUgPSBm
dW5jdGlvbihmcmFtZSwgbWFuaWZlc3QsIHN0YXR1cykKK1dlYkluc3BlY3Rvci5BcHBsaWNhdGlv
bkNhY2hlRnJhbWUgPSBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlRnJhbWUgZXh0ZW5kcyBXZWJJbnNw
ZWN0b3IuT2JqZWN0CiB7Ci0gICAgY29uc29sZS5hc3NlcnQoZnJhbWUgaW5zdGFuY2VvZiBXZWJJ
bnNwZWN0b3IuRnJhbWUpOwotICAgIGNvbnNvbGUuYXNzZXJ0KG1hbmlmZXN0IGluc3RhbmNlb2Yg
V2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdCk7CisgICAgY29uc3RydWN0b3Io
ZnJhbWUsIG1hbmlmZXN0LCBzdGF0dXMpCisgICAgeworICAgICAgICBzdXBlcigpOwogCi0gICAg
V2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgICAgICBjb25zb2xlLmFzc2VydChm
cmFtZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5GcmFtZSk7CisgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KG1hbmlmZXN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVNYW5p
ZmVzdCk7CiAKLSAgICB0aGlzLl9mcmFtZSA9IGZyYW1lOwotICAgIHRoaXMuX21hbmlmZXN0ID0g
bWFuaWZlc3Q7Ci0gICAgdGhpcy5fc3RhdHVzID0gc3RhdHVzOwotfTsKLQotV2ViSW5zcGVjdG9y
LkFwcGxpY2F0aW9uQ2FjaGVGcmFtZS5UeXBlSWRlbnRpZmllciA9ICJhcHBsaWNhdGlvbi1jYWNo
ZS1mcmFtZSI7Ci1XZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZUZyYW1lLkZyYW1lVVJMQ29v
a2llS2V5ID0gImFwcGxpY2F0aW9uLWNhY2hlLWZyYW1lLXVybCI7Ci1XZWJJbnNwZWN0b3IuQXBw
bGljYXRpb25DYWNoZUZyYW1lLk1hbmlmZXN0VVJMQ29va2llS2V5ID0gImFwcGxpY2F0aW9uLWNh
Y2hlLWZyYW1lLW1hbmlmZXN0LXVybCI7Ci0KLVdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hl
RnJhbWUucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuQXBwbGlj
YXRpb25DYWNoZUZyYW1lLAorICAgICAgICB0aGlzLl9mcmFtZSA9IGZyYW1lOworICAgICAgICB0
aGlzLl9tYW5pZmVzdCA9IG1hbmlmZXN0OworICAgICAgICB0aGlzLl9zdGF0dXMgPSBzdGF0dXM7
CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgZnJhbWUoKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHRoaXMuX2ZyYW1lOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IG1hbmlmZXN0
KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9tYW5pZmVzdDsKLSAgICB9LAorICAgIH0K
IAogICAgIGdldCBzdGF0dXMoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXR1czsK
LSAgICB9LAorICAgIH0KIAogICAgIHNldCBzdGF0dXMoc3RhdHVzKQogICAgIHsKICAgICAgICAg
dGhpcy5fc3RhdHVzID0gc3RhdHVzOwotICAgIH0sCisgICAgfQogCi0gICAgc2F2ZUlkZW50aXR5
VG9Db29raWU6IGZ1bmN0aW9uKGNvb2tpZSkKKyAgICBzYXZlSWRlbnRpdHlUb0Nvb2tpZShjb29r
aWUpCiAgICAgewogICAgICAgICBjb29raWVbV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVG
cmFtZS5GcmFtZVVSTENvb2tpZUtleV0gPSB0aGlzLmZyYW1lLnVybDsKICAgICAgICAgY29va2ll
W1dlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJhbWUuTWFuaWZlc3RVUkxDb29raWVLZXld
ID0gdGhpcy5tYW5pZmVzdC5tYW5pZmVzdFVSTDsKICAgICB9CiB9OwogCi1XZWJJbnNwZWN0b3Iu
QXBwbGljYXRpb25DYWNoZUZyYW1lLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3Iu
T2JqZWN0LnByb3RvdHlwZTsKK1dlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJhbWUuVHlw
ZUlkZW50aWZpZXIgPSAiYXBwbGljYXRpb24tY2FjaGUtZnJhbWUiOworV2ViSW5zcGVjdG9yLkFw
cGxpY2F0aW9uQ2FjaGVGcmFtZS5GcmFtZVVSTENvb2tpZUtleSA9ICJhcHBsaWNhdGlvbi1jYWNo
ZS1mcmFtZS11cmwiOworV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVGcmFtZS5NYW5pZmVz
dFVSTENvb2tpZUtleSA9ICJhcHBsaWNhdGlvbi1jYWNoZS1mcmFtZS1tYW5pZmVzdC11cmwiOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0Fw
cGxpY2F0aW9uQ2FjaGVNYW5pZmVzdC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL01vZGVscy9BcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3QuanMKaW5kZXggZTlmZDg5OS4u
ZTE2MGJiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
TW9kZWxzL0FwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0LmpzCkBA
IC0yMywyMCArMjMsMTcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCi1XZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0ID0gZnVuY3Rpb24obWFu
aWZlc3RVUkwpCitXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0ID0gY2xhc3Mg
QXBwbGljYXRpb25DYWNoZU1hbmlmZXN0IGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogewot
ICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICBjb25zdHJ1Y3RvcihtYW5p
ZmVzdFVSTCkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CiAKLSAgICB0aGlzLl9tYW5pZmVzdFVS
TCA9IG1hbmlmZXN0VVJMOwotfTsKLQotV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVNYW5p
ZmVzdC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5BcHBsaWNh
dGlvbkNhY2hlTWFuaWZlc3QsCisgICAgICAgIHRoaXMuX21hbmlmZXN0VVJMID0gbWFuaWZlc3RV
Ukw7CisgICAgfQogCiAgICAgZ2V0IG1hbmlmZXN0VVJMKCkKICAgICB7CiAgICAgICAgIHJldHVy
biB0aGlzLl9tYW5pZmVzdFVSTDsKICAgICB9CiB9OwotCi1XZWJJbnNwZWN0b3IuQXBwbGljYXRp
b25DYWNoZU1hbmlmZXN0LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0
LnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01vZGVscy9CYWNrRm9yd2FyZEVudHJ5LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvTW9kZWxzL0JhY2tGb3J3YXJkRW50cnkuanMKaW5kZXggMzNhN2FjYi4uNTFm
MDMxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9k
ZWxzL0JhY2tGb3J3YXJkRW50cnkuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvTW9kZWxzL0JhY2tGb3J3YXJkRW50cnkuanMKQEAgLTI0LDM1ICsyNCwzNSBAQAog
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuQmFja0ZvcndhcmRFbnRyeSA9IGZ1
bmN0aW9uKGNvbnRlbnRWaWV3LCBjb29raWUpCitXZWJJbnNwZWN0b3IuQmFja0ZvcndhcmRFbnRy
eSA9IGNsYXNzIEJhY2tGb3J3YXJkRW50cnkgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7
Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwotICAgIHRoaXMuX2NvbnRlbnRW
aWV3ID0gY29udGVudFZpZXc7Ci0gICAgLy8gQ29va2llcyBhcmUgY29tcGFyZWQgd2l0aCBPYmpl
Y3Quc2hhbGxvd0VxdWFsLCBzbyBzaG91bGQgbm90IHN0b3JlIG9iamVjdHMgb3IgYXJyYXlzLgot
ICAgIHRoaXMuX2Nvb2tpZSA9IGNvb2tpZSB8fCB7fTsKLSAgICB0aGlzLl9zY3JvbGxQb3NpdGlv
bnMgPSBbXTsKKyAgICBjb25zdHJ1Y3Rvcihjb250ZW50VmlldywgY29va2llKQorICAgIHsKKyAg
ICAgICAgc3VwZXIoKTsKIAotICAgIGNvbnRlbnRWaWV3LnNhdmVUb0Nvb2tpZSh0aGlzLl9jb29r
aWUpOwotfTsKKyAgICAgICAgdGhpcy5fY29udGVudFZpZXcgPSBjb250ZW50VmlldzsKIAotV2Vi
SW5zcGVjdG9yLkJhY2tGb3J3YXJkRW50cnkucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9y
OiBXZWJJbnNwZWN0b3IuQmFja0ZvcndhcmRFbnRyeSwKLSAgICBfX3Byb3RvX186IFdlYkluc3Bl
Y3Rvci5PYmplY3QucHJvdG90eXBlLAorICAgICAgICAvLyBDb29raWVzIGFyZSBjb21wYXJlZCB3
aXRoIE9iamVjdC5zaGFsbG93RXF1YWwsIHNvIHNob3VsZCBub3Qgc3RvcmUgb2JqZWN0cyBvciBh
cnJheXMuCisgICAgICAgIHRoaXMuX2Nvb2tpZSA9IGNvb2tpZSB8fCB7fTsKKyAgICAgICAgdGhp
cy5fc2Nyb2xsUG9zaXRpb25zID0gW107CisKKyAgICAgICAgY29udGVudFZpZXcuc2F2ZVRvQ29v
a2llKHRoaXMuX2Nvb2tpZSk7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgY29u
dGVudFZpZXcoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnRlbnRWaWV3OwotICAg
IH0sCisgICAgfQogCiAgICAgZ2V0IGNvb2tpZSgpCiAgICAgewogICAgICAgICAvLyBDb29raWVz
IGFyZSBpbW11dGFibGU7IHRoZXkgcmVwcmVzZW50IGEgc3BlY2lmaWMgbmF2aWdhdGlvbiBhY3Rp
b24uCiAgICAgICAgIHJldHVybiBPYmplY3Quc2hhbGxvd0NvcHkodGhpcy5fY29va2llKTsKLSAg
ICB9LAorICAgIH0KIAotICAgIHByZXBhcmVUb1Nob3c6IGZ1bmN0aW9uKHNob3VsZENhbGxTaG93
bikKKyAgICBwcmVwYXJlVG9TaG93KHNob3VsZENhbGxTaG93bikKICAgICB7CiAgICAgICAgIHRo
aXMuX3Jlc3RvcmVGcm9tQ29va2llKCk7CiAKQEAgLTYwLDI1ICs2MCwyNSBAQCBXZWJJbnNwZWN0
b3IuQmFja0ZvcndhcmRFbnRyeS5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmIChzaG91bGRDYWxs
U2hvd24pCiAgICAgICAgICAgICB0aGlzLmNvbnRlbnRWaWV3LnNob3duKCk7CiAgICAgICAgIHRo
aXMuY29udGVudFZpZXcudXBkYXRlTGF5b3V0KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBwcmVw
YXJlVG9IaWRlOiBmdW5jdGlvbigpCisgICAgcHJlcGFyZVRvSGlkZSgpCiAgICAgewogICAgICAg
ICB0aGlzLmNvbnRlbnRWaWV3LnZpc2libGUgPSBmYWxzZTsKICAgICAgICAgdGhpcy5jb250ZW50
Vmlldy5oaWRkZW4oKTsKIAogICAgICAgICB0aGlzLl9zYXZlU2Nyb2xsUG9zaXRpb25zKCk7Ci0g
ICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKLSAgICBfcmVzdG9yZUZyb21Db29raWU6
IGZ1bmN0aW9uKCkKKyAgICBfcmVzdG9yZUZyb21Db29raWUoKQogICAgIHsKICAgICAgICAgdGhp
cy5fcmVzdG9yZVNjcm9sbFBvc2l0aW9ucygpOwogICAgICAgICB0aGlzLmNvbnRlbnRWaWV3LnJl
c3RvcmVGcm9tQ29va2llKHRoaXMuY29va2llKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9yZXN0
b3JlU2Nyb2xsUG9zaXRpb25zOiBmdW5jdGlvbigpCisgICAgX3Jlc3RvcmVTY3JvbGxQb3NpdGlv
bnMoKQogICAgIHsKICAgICAgICAgLy8gSWYgbm8gc2Nyb2xsIHBvc2l0aW9ucyBhcmUgc2F2ZWQs
IGRvIG5vdGhpbmcuCiAgICAgICAgIGlmICghdGhpcy5fc2Nyb2xsUG9zaXRpb25zLmxlbmd0aCkK
QEAgLTEwMCw5ICsxMDAsOSBAQCBXZWJJbnNwZWN0b3IuQmFja0ZvcndhcmRFbnRyeS5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICAvLyB0aGUgdXNlciB3b24ndCBiZSBsZWZ0IGluIGEgd2VpcmQg
aG9yaXpvbnRhbCBwb3NpdGlvbi4KICAgICAgICAgICAgIGVsZW1lbnQuc2Nyb2xsTGVmdCA9IHBv
c2l0aW9uLmlzU2Nyb2xsZWRUb0JvdHRvbSA/IDAgOiBwb3NpdGlvbi5zY3JvbGxMZWZ0OwogICAg
ICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfc2F2ZVNjcm9sbFBvc2l0aW9uczogZnVuY3Rp
b24oKQorICAgIF9zYXZlU2Nyb2xsUG9zaXRpb25zKCkKICAgICB7CiAgICAgICAgIHZhciBzY3Jv
bGxhYmxlRWxlbWVudHMgPSB0aGlzLmNvbnRlbnRWaWV3LnNjcm9sbGFibGVFbGVtZW50cyB8fCBb
XTsKICAgICAgICAgdmFyIHNjcm9sbFBvc2l0aW9ucyA9IFtdOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0JyYW5jaC5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9CcmFuY2guanMKaW5kZXggODdlOTdj
MC4uNzNkOTUxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvTW9kZWxzL0JyYW5jaC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Nb2RlbHMvQnJhbmNoLmpzCkBAIC0yMywyNiArMjMsMjUgQEAKICAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuQnJhbmNoID0gZnVuY3Rp
b24oZGlzcGxheU5hbWUsIHJldmlzaW9ucywgbG9ja2VkKQorV2ViSW5zcGVjdG9yLkJyYW5jaCA9
IGNsYXNzIEJyYW5jaCBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIHsKLSAgICBXZWJJbnNw
ZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CisgICAgY29uc3RydWN0b3IoZGlzcGxheU5hbWUsIHJl
dmlzaW9ucywgbG9ja2VkKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKIAotICAgIGNvbnNvbGUu
YXNzZXJ0KGRpc3BsYXlOYW1lKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoZGlzcGxheU5hbWUp
OwogCi0gICAgdGhpcy5fZGlzcGxheU5hbWUgPSBkaXNwbGF5TmFtZTsKLSAgICB0aGlzLl9yZXZp
c2lvbnMgPSByZXZpc2lvbnMgaW5zdGFuY2VvZiBBcnJheSA/IHJldmlzaW9ucy5zbGljZSgpIDog
W107Ci0gICAgdGhpcy5fbG9ja2VkID0gbG9ja2VkIHx8IGZhbHNlOwotfTsKLQotV2ViSW5zcGVj
dG9yLkJyYW5jaC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5C
cmFuY2gsCisgICAgICAgIHRoaXMuX2Rpc3BsYXlOYW1lID0gZGlzcGxheU5hbWU7CisgICAgICAg
IHRoaXMuX3JldmlzaW9ucyA9IHJldmlzaW9ucyBpbnN0YW5jZW9mIEFycmF5ID8gcmV2aXNpb25z
LnNsaWNlKCkgOiBbXTsKKyAgICAgICAgdGhpcy5fbG9ja2VkID0gbG9ja2VkIHx8IGZhbHNlOwor
ICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IGRpc3BsYXlOYW1lKCkKICAgICB7CiAg
ICAgICAgIHJldHVybiB0aGlzLl9kaXNwbGF5TmFtZTsKLSAgICB9LAorICAgIH0KIAogICAgIHNl
dCBkaXNwbGF5TmFtZShkaXNwbGF5TmFtZSkKICAgICB7CkBAIC01MSwxOSArNTAsMTkgQEAgV2Vi
SW5zcGVjdG9yLkJyYW5jaC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm47CiAKICAg
ICAgICAgdGhpcy5fZGlzcGxheU5hbWUgPSBkaXNwbGF5TmFtZTsKLSAgICB9LAorICAgIH0KIAog
ICAgIGdldCByZXZpc2lvbnMoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3JldmlzaW9u
czsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBsb2NrZWQoKQogICAgIHsKICAgICAgICAgcmV0
dXJuIHRoaXMuX2xvY2tlZDsKLSAgICB9LAorICAgIH0KIAotICAgIHJldmlzaW9uRm9yUmVwcmVz
ZW50ZWRPYmplY3Q6IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0LCBkb05vdENyZWF0ZUlmTmVl
ZGVkKQorICAgIHJldmlzaW9uRm9yUmVwcmVzZW50ZWRPYmplY3QocmVwcmVzZW50ZWRPYmplY3Qs
IGRvTm90Q3JlYXRlSWZOZWVkZWQpCiAgICAgewogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IHRoaXMuX3JldmlzaW9ucy5sZW5ndGg7ICsraSkgewogICAgICAgICAgICAgdmFyIHJldmlzaW9u
ID0gdGhpcy5fcmV2aXNpb25zW2ldOwpAQCAtODIsOSArODEsOSBAQCBXZWJJbnNwZWN0b3IuQnJh
bmNoLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiBudWxsOwotICAg
IH0sCisgICAgfQogCi0gICAgYWRkUmV2aXNpb246IGZ1bmN0aW9uKHJldmlzaW9uKQorICAgIGFk
ZFJldmlzaW9uKHJldmlzaW9uKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQocmV2aXNp
b24gaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmV2aXNpb24pOwogCkBAIC05NSw5ICs5NCw5IEBA
IFdlYkluc3BlY3Rvci5CcmFuY2gucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuOwog
CiAgICAgICAgIHRoaXMuX3JldmlzaW9ucy5wdXNoKHJldmlzaW9uKTsKLSAgICB9LAorICAgIH0K
IAotICAgIHJlbW92ZVJldmlzaW9uOiBmdW5jdGlvbihyZXZpc2lvbikKKyAgICByZW1vdmVSZXZp
c2lvbihyZXZpc2lvbikKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJldmlzaW9uIGlu
c3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJldmlzaW9uKTsKIApAQCAtMTA1LDQ1ICsxMDQsNDMgQEAg
V2ViSW5zcGVjdG9yLkJyYW5jaC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm47CiAK
ICAgICAgICAgdGhpcy5fcmV2aXNpb25zLnJlbW92ZShyZXZpc2lvbik7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICByZXNldDogZnVuY3Rpb24oKQorICAgIHJlc2V0KCkKICAgICB7CiAgICAgICAgIGlm
ICh0aGlzLl9sb2NrZWQpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgdGhpcy5fcmV2
aXNpb25zID0gW107Ci0gICAgfSwKKyAgICB9CiAKLSAgICBmb3JrOiBmdW5jdGlvbihkaXNwbGF5
TmFtZSkKKyAgICBmb3JrKGRpc3BsYXlOYW1lKQogICAgIHsKICAgICAgICAgdmFyIGNvcGllZFJl
dmlzaW9ucyA9IHRoaXMuX3JldmlzaW9ucy5tYXAoZnVuY3Rpb24ocmV2aXNpb24pIHsgcmV0dXJu
IHJldmlzaW9uLmNvcHkoKTsgfSk7CiAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkJy
YW5jaChkaXNwbGF5TmFtZSwgY29waWVkUmV2aXNpb25zKTsKLSAgICB9LAorICAgIH0KIAotICAg
IGFwcGx5OiBmdW5jdGlvbigpCisgICAgYXBwbHkoKQogICAgIHsKICAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCB0aGlzLl9yZXZpc2lvbnMubGVuZ3RoOyArK2kpCiAgICAgICAgICAgICB0aGlz
Ll9yZXZpc2lvbnNbaV0uYXBwbHkoKTsKLSAgICB9LAorICAgIH0KIAotICAgIHJldmVydDogZnVu
Y3Rpb24oKQorICAgIHJldmVydCgpCiAgICAgewogICAgICAgICBmb3IgKHZhciBpID0gdGhpcy5f
cmV2aXNpb25zLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKQogICAgICAgICAgICAgdGhpcy5fcmV2
aXNpb25zW2ldLnJldmVydCgpOwotICAgIH0sCisgICAgfQogCi0gICAgbG9jazogZnVuY3Rpb24o
KQorICAgIGxvY2soKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuX2xvY2tl
ZCk7CiAgICAgICAgIHRoaXMuX2xvY2tlZCA9IHRydWU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB1
bmxvY2s6IGZ1bmN0aW9uKCkKKyAgICB1bmxvY2soKQogICAgIHsKICAgICAgICAgY29uc29sZS5h
c3NlcnQodGhpcy5fbG9ja2VkKTsKICAgICAgICAgdGhpcy5fbG9ja2VkID0gZmFsc2U7CiAgICAg
fQogfTsKLQotV2ViSW5zcGVjdG9yLkJyYW5jaC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5z
cGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQnJlYWtwb2ludC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9CcmVha3BvaW50LmpzCmluZGV4IGM0ODIxN2UuLjI4
MjFhNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01v
ZGVscy9CcmVha3BvaW50LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01vZGVscy9CcmVha3BvaW50LmpzCkBAIC0yMywxMDIgKzIzLDc2IEBACiAgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQg
PSBmdW5jdGlvbihzb3VyY2VDb2RlTG9jYXRpb25PckluZm8sIGRpc2FibGVkLCBjb25kaXRpb24p
CitXZWJJbnNwZWN0b3IuQnJlYWtwb2ludCA9IGNsYXNzIEJyZWFrcG9pbnQgZXh0ZW5kcyBXZWJJ
bnNwZWN0b3IuT2JqZWN0CiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwot
Ci0gICAgaWYgKHNvdXJjZUNvZGVMb2NhdGlvbk9ySW5mbyBpbnN0YW5jZW9mIFdlYkluc3BlY3Rv
ci5Tb3VyY2VDb2RlTG9jYXRpb24pIHsKLSAgICAgICAgdmFyIHNvdXJjZUNvZGUgPSBzb3VyY2VD
b2RlTG9jYXRpb25PckluZm8uc291cmNlQ29kZTsKLSAgICAgICAgdmFyIHVybCA9IHNvdXJjZUNv
ZGUgPyBzb3VyY2VDb2RlLnVybCA6IG51bGw7Ci0gICAgICAgIHZhciBzY3JpcHRJZGVudGlmaWVy
ID0gc291cmNlQ29kZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5TY3JpcHQgPyBzb3VyY2VDb2Rl
LmlkIDogbnVsbDsKLSAgICAgICAgdmFyIGxvY2F0aW9uID0gc291cmNlQ29kZUxvY2F0aW9uT3JJ
bmZvOwotICAgIH0gZWxzZSBpZiAoc291cmNlQ29kZUxvY2F0aW9uT3JJbmZvICYmIHR5cGVvZiBz
b3VyY2VDb2RlTG9jYXRpb25PckluZm8gPT09ICJvYmplY3QiKSB7Ci0gICAgICAgIHZhciB1cmwg
PSBzb3VyY2VDb2RlTG9jYXRpb25PckluZm8udXJsOwotICAgICAgICB2YXIgbGluZU51bWJlciA9
IHNvdXJjZUNvZGVMb2NhdGlvbk9ySW5mby5saW5lTnVtYmVyIHx8IDA7Ci0gICAgICAgIHZhciBj
b2x1bW5OdW1iZXIgPSBzb3VyY2VDb2RlTG9jYXRpb25PckluZm8uY29sdW1uTnVtYmVyIHx8IDA7
Ci0gICAgICAgIHZhciBsb2NhdGlvbiA9IG5ldyBXZWJJbnNwZWN0b3IuU291cmNlQ29kZUxvY2F0
aW9uKG51bGwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcik7Ci0gICAgICAgIHZhciBhdXRvQ29u
dGludWUgPSBzb3VyY2VDb2RlTG9jYXRpb25PckluZm8uYXV0b0NvbnRpbnVlIHx8IGZhbHNlOwot
ICAgICAgICB2YXIgYWN0aW9ucyA9IHNvdXJjZUNvZGVMb2NhdGlvbk9ySW5mby5hY3Rpb25zIHx8
IFtdOwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFjdGlvbnMubGVuZ3RoOyArK2kpCi0g
ICAgICAgICAgICBhY3Rpb25zW2ldID0gbmV3IFdlYkluc3BlY3Rvci5CcmVha3BvaW50QWN0aW9u
KHRoaXMsIGFjdGlvbnNbaV0pOwotICAgICAgICBkaXNhYmxlZCA9IHNvdXJjZUNvZGVMb2NhdGlv
bk9ySW5mby5kaXNhYmxlZDsKLSAgICAgICAgY29uZGl0aW9uID0gc291cmNlQ29kZUxvY2F0aW9u
T3JJbmZvLmNvbmRpdGlvbjsKLSAgICB9IGVsc2UKLSAgICAgICAgY29uc29sZS5lcnJvcigiVW5l
eHBlY3RlZCB0eXBlIHBhc3NlZCB0byBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludCIsIHNvdXJjZUNv
ZGVMb2NhdGlvbk9ySW5mbyk7Ci0KLSAgICB0aGlzLl9pZCA9IG51bGw7Ci0gICAgdGhpcy5fdXJs
ID0gdXJsIHx8IG51bGw7Ci0gICAgdGhpcy5fc2NyaXB0SWRlbnRpZmllciA9IHNjcmlwdElkZW50
aWZpZXIgfHwgbnVsbDsKLSAgICB0aGlzLl9kaXNhYmxlZCA9IGRpc2FibGVkIHx8IGZhbHNlOwot
ICAgIHRoaXMuX2NvbmRpdGlvbiA9IGNvbmRpdGlvbiB8fCAiIjsKLSAgICB0aGlzLl9hdXRvQ29u
dGludWUgPSBhdXRvQ29udGludWUgfHwgZmFsc2U7Ci0gICAgdGhpcy5fYWN0aW9ucyA9IGFjdGlv
bnMgfHwgW107Ci0gICAgdGhpcy5fcmVzb2x2ZWQgPSBmYWxzZTsKLQotICAgIHRoaXMuX3NvdXJj
ZUNvZGVMb2NhdGlvbiA9IGxvY2F0aW9uOwotICAgIHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbi5h
ZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlTG9jYXRpb24uRXZlbnQuTG9j
YXRpb25DaGFuZ2VkLCB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb25Mb2NhdGlvbkNoYW5nZWQsIHRo
aXMpOwotICAgIHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbi5hZGRFdmVudExpc3RlbmVyKFdlYklu
c3BlY3Rvci5Tb3VyY2VDb2RlTG9jYXRpb24uRXZlbnQuRGlzcGxheUxvY2F0aW9uQ2hhbmdlZCwg
dGhpcy5fc291cmNlQ29kZUxvY2F0aW9uRGlzcGxheUxvY2F0aW9uQ2hhbmdlZCwgdGhpcyk7Ci19
OwotCi1XZWJJbnNwZWN0b3IuT2JqZWN0LmFkZENvbnN0cnVjdG9yRnVuY3Rpb25zKFdlYkluc3Bl
Y3Rvci5CcmVha3BvaW50KTsKLQotV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQuUG9wb3ZlckNsYXNz
TmFtZSA9ICJlZGl0LWJyZWFrcG9pbnQtcG9wb3Zlci1jb250ZW50IjsKLVdlYkluc3BlY3Rvci5C
cmVha3BvaW50LldpZGVQb3BvdmVyQ2xhc3NOYW1lID0gIndpZGUiOwotV2ViSW5zcGVjdG9yLkJy
ZWFrcG9pbnQuUG9wb3ZlckNvbmRpdGlvbklucHV0SWQgPSAiZWRpdC1icmVha3BvaW50LXBvcG92
ZXItY29uZGl0aW9uIjsKLVdlYkluc3BlY3Rvci5CcmVha3BvaW50LlBvcG92ZXJPcHRpb25zQXV0
b0NvbnRpbnVlSW5wdXRJZCA9ICJlZGl0LWJyZWFrcG9pbnQtcG9wb292ZXItYXV0by1jb250aW51
ZSI7Ci1XZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5IaWRkZW5TdHlsZUNsYXNzTmFtZSA9ICJoaWRk
ZW4iOwotCi1XZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5EZWZhdWx0QnJlYWtwb2ludEFjdGlvblR5
cGUgPSBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludEFjdGlvbi5UeXBlLkxvZzsKLQotV2ViSW5zcGVj
dG9yLkJyZWFrcG9pbnQuVHlwZUlkZW50aWZpZXIgPSAiYnJlYWtwb2ludCI7Ci1XZWJJbnNwZWN0
b3IuQnJlYWtwb2ludC5VUkxDb29raWVLZXkgPSAiYnJlYWtwb2ludC11cmwiOwotV2ViSW5zcGVj
dG9yLkJyZWFrcG9pbnQuTGluZU51bWJlckNvb2tpZUtleSA9ICJicmVha3BvaW50LWxpbmUtbnVt
YmVyIjsKLVdlYkluc3BlY3Rvci5CcmVha3BvaW50LkNvbHVtbk51bWJlckNvb2tpZUtleSA9ICJi
cmVha3BvaW50LWNvbHVtbi1udW1iZXIiOwotCi1XZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5FdmVu
dCA9IHsKLSAgICBEaXNhYmxlZFN0YXRlRGlkQ2hhbmdlOiAiYnJlYWtwb2ludC1kaXNhYmxlZC1z
dGF0ZS1kaWQtY2hhbmdlIiwKLSAgICBSZXNvbHZlZFN0YXRlRGlkQ2hhbmdlOiAiYnJlYWtwb2lu
dC1yZXNvbHZlZC1zdGF0ZS1kaWQtY2hhbmdlIiwKLSAgICBDb25kaXRpb25EaWRDaGFuZ2U6ICJi
cmVha3BvaW50LWNvbmRpdGlvbi1kaWQtY2hhbmdlIiwKLSAgICBBY3Rpb25zRGlkQ2hhbmdlOiAi
YnJlYWtwb2ludC1hY3Rpb25zLWRpZC1jaGFuZ2UiLAotICAgIEF1dG9Db250aW51ZURpZENoYW5n
ZTogImJyZWFrcG9pbnQtYXV0by1jb250aW51ZS1kaWQtY2hhbmdlIiwKLSAgICBMb2NhdGlvbkRp
ZENoYW5nZTogImJyZWFrcG9pbnQtbG9jYXRpb24tZGlkLWNoYW5nZSIsCi0gICAgRGlzcGxheUxv
Y2F0aW9uRGlkQ2hhbmdlOiAiYnJlYWtwb2ludC1kaXNwbGF5LWxvY2F0aW9uLWRpZC1jaGFuZ2Ui
LAotfTsKLQotV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQucHJvdG90eXBlID0gewotICAgIGNvbnN0
cnVjdG9yOiBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludCwKKyAgICBjb25zdHJ1Y3Rvcihzb3VyY2VD
b2RlTG9jYXRpb25PckluZm8sIGRpc2FibGVkLCBjb25kaXRpb24pCisgICAgeworICAgICAgICBz
dXBlcigpOworCisgICAgICAgIGlmIChzb3VyY2VDb2RlTG9jYXRpb25PckluZm8gaW5zdGFuY2Vv
ZiBXZWJJbnNwZWN0b3IuU291cmNlQ29kZUxvY2F0aW9uKSB7CisgICAgICAgICAgICB2YXIgc291
cmNlQ29kZSA9IHNvdXJjZUNvZGVMb2NhdGlvbk9ySW5mby5zb3VyY2VDb2RlOworICAgICAgICAg
ICAgdmFyIHVybCA9IHNvdXJjZUNvZGUgPyBzb3VyY2VDb2RlLnVybCA6IG51bGw7CisgICAgICAg
ICAgICB2YXIgc2NyaXB0SWRlbnRpZmllciA9IHNvdXJjZUNvZGUgaW5zdGFuY2VvZiBXZWJJbnNw
ZWN0b3IuU2NyaXB0ID8gc291cmNlQ29kZS5pZCA6IG51bGw7CisgICAgICAgICAgICB2YXIgbG9j
YXRpb24gPSBzb3VyY2VDb2RlTG9jYXRpb25PckluZm87CisgICAgICAgIH0gZWxzZSBpZiAoc291
cmNlQ29kZUxvY2F0aW9uT3JJbmZvICYmIHR5cGVvZiBzb3VyY2VDb2RlTG9jYXRpb25PckluZm8g
PT09ICJvYmplY3QiKSB7CisgICAgICAgICAgICB2YXIgdXJsID0gc291cmNlQ29kZUxvY2F0aW9u
T3JJbmZvLnVybDsKKyAgICAgICAgICAgIHZhciBsaW5lTnVtYmVyID0gc291cmNlQ29kZUxvY2F0
aW9uT3JJbmZvLmxpbmVOdW1iZXIgfHwgMDsKKyAgICAgICAgICAgIHZhciBjb2x1bW5OdW1iZXIg
PSBzb3VyY2VDb2RlTG9jYXRpb25PckluZm8uY29sdW1uTnVtYmVyIHx8IDA7CisgICAgICAgICAg
ICB2YXIgbG9jYXRpb24gPSBuZXcgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVMb2NhdGlvbihudWxs
LCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpOworICAgICAgICAgICAgdmFyIGF1dG9Db250aW51
ZSA9IHNvdXJjZUNvZGVMb2NhdGlvbk9ySW5mby5hdXRvQ29udGludWUgfHwgZmFsc2U7CisgICAg
ICAgICAgICB2YXIgYWN0aW9ucyA9IHNvdXJjZUNvZGVMb2NhdGlvbk9ySW5mby5hY3Rpb25zIHx8
IFtdOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhY3Rpb25zLmxlbmd0aDsgKytp
KQorICAgICAgICAgICAgICAgIGFjdGlvbnNbaV0gPSBuZXcgV2ViSW5zcGVjdG9yLkJyZWFrcG9p
bnRBY3Rpb24odGhpcywgYWN0aW9uc1tpXSk7CisgICAgICAgICAgICBkaXNhYmxlZCA9IHNvdXJj
ZUNvZGVMb2NhdGlvbk9ySW5mby5kaXNhYmxlZDsKKyAgICAgICAgICAgIGNvbmRpdGlvbiA9IHNv
dXJjZUNvZGVMb2NhdGlvbk9ySW5mby5jb25kaXRpb247CisgICAgICAgIH0gZWxzZQorICAgICAg
ICAgICAgY29uc29sZS5lcnJvcigiVW5leHBlY3RlZCB0eXBlIHBhc3NlZCB0byBXZWJJbnNwZWN0
b3IuQnJlYWtwb2ludCIsIHNvdXJjZUNvZGVMb2NhdGlvbk9ySW5mbyk7CisKKyAgICAgICAgdGhp
cy5faWQgPSBudWxsOworICAgICAgICB0aGlzLl91cmwgPSB1cmwgfHwgbnVsbDsKKyAgICAgICAg
dGhpcy5fc2NyaXB0SWRlbnRpZmllciA9IHNjcmlwdElkZW50aWZpZXIgfHwgbnVsbDsKKyAgICAg
ICAgdGhpcy5fZGlzYWJsZWQgPSBkaXNhYmxlZCB8fCBmYWxzZTsKKyAgICAgICAgdGhpcy5fY29u
ZGl0aW9uID0gY29uZGl0aW9uIHx8ICIiOworICAgICAgICB0aGlzLl9hdXRvQ29udGludWUgPSBh
dXRvQ29udGludWUgfHwgZmFsc2U7CisgICAgICAgIHRoaXMuX2FjdGlvbnMgPSBhY3Rpb25zIHx8
IFtdOworICAgICAgICB0aGlzLl9yZXNvbHZlZCA9IGZhbHNlOworCisgICAgICAgIHRoaXMuX3Nv
dXJjZUNvZGVMb2NhdGlvbiA9IGxvY2F0aW9uOworICAgICAgICB0aGlzLl9zb3VyY2VDb2RlTG9j
YXRpb24uYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU291cmNlQ29kZUxvY2F0aW9uLkV2
ZW50LkxvY2F0aW9uQ2hhbmdlZCwgdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uTG9jYXRpb25DaGFu
Z2VkLCB0aGlzKTsKKyAgICAgICAgdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uLmFkZEV2ZW50TGlz
dGVuZXIoV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVMb2NhdGlvbi5FdmVudC5EaXNwbGF5TG9jYXRp
b25DaGFuZ2VkLCB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb25EaXNwbGF5TG9jYXRpb25DaGFuZ2Vk
LCB0aGlzKTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBpZCgpCiAgICAgewog
ICAgICAgICByZXR1cm4gdGhpcy5faWQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgaWQoaWQp
CiAgICAgewogICAgICAgICB0aGlzLl9pZCA9IGlkIHx8IG51bGw7Ci0gICAgfSwKKyAgICB9CiAK
ICAgICBnZXQgdXJsKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl91cmw7Ci0gICAgfSwK
KyAgICB9CiAKICAgICBnZXQgc2NyaXB0SWRlbnRpZmllcigpCiAgICAgewogICAgICAgICByZXR1
cm4gdGhpcy5fc2NyaXB0SWRlbnRpZmllcjsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzb3Vy
Y2VDb2RlTG9jYXRpb24oKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3NvdXJjZUNvZGVM
b2NhdGlvbjsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCByZXNvbHZlZCgpCiAgICAgewogICAg
ICAgICByZXR1cm4gdGhpcy5fcmVzb2x2ZWQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgcmVz
b2x2ZWQocmVzb2x2ZWQpCiAgICAgewpAQCAtMTM1LDEyICsxMDksMTIgQEAgV2ViSW5zcGVjdG9y
LkJyZWFrcG9pbnQucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9yZXNvbHZlZCA9IHJlc29s
dmVkIHx8IGZhbHNlOwogCiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdl
Ykluc3BlY3Rvci5CcmVha3BvaW50LkV2ZW50LlJlc29sdmVkU3RhdGVEaWRDaGFuZ2UpOwotICAg
IH0sCisgICAgfQogCiAgICAgZ2V0IGRpc2FibGVkKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0
aGlzLl9kaXNhYmxlZDsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBkaXNhYmxlZChkaXNhYmxl
ZCkKICAgICB7CkBAIC0xNTAsMTIgKzEyNCwxMiBAQCBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5w
cm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2Rpc2FibGVkID0gZGlzYWJsZWQgfHwgZmFsc2U7
CiAKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkJy
ZWFrcG9pbnQuRXZlbnQuRGlzYWJsZWRTdGF0ZURpZENoYW5nZSk7Ci0gICAgfSwKKyAgICB9CiAK
ICAgICBnZXQgY29uZGl0aW9uKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9jb25kaXRp
b247Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgY29uZGl0aW9uKGNvbmRpdGlvbikKICAgICB7
CkBAIC0xNjUsMTIgKzEzOSwxMiBAQCBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5wcm90b3R5cGUg
PSB7CiAgICAgICAgIHRoaXMuX2NvbmRpdGlvbiA9IGNvbmRpdGlvbjsKIAogICAgICAgICB0aGlz
LmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5FdmVudC5D
b25kaXRpb25EaWRDaGFuZ2UpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGF1dG9Db250aW51
ZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fYXV0b0NvbnRpbnVlOwotICAgIH0sCisg
ICAgfQogCiAgICAgc2V0IGF1dG9Db250aW51ZShjb250KQogICAgIHsKQEAgLTE4MCwxMiArMTU0
LDEyIEBAIFdlYkluc3BlY3Rvci5CcmVha3BvaW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhp
cy5fYXV0b0NvbnRpbnVlID0gY29udDsKIAogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xp
c3RlbmVycyhXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5FdmVudC5BdXRvQ29udGludWVEaWRDaGFu
Z2UpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGFjdGlvbnMoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHRoaXMuX2FjdGlvbnM7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgb3B0aW9ucygp
CiAgICAgewpAQCAtMTk0LDcgKzE2OCw3IEBAIFdlYkluc3BlY3Rvci5CcmVha3BvaW50LnByb3Rv
dHlwZSA9IHsKICAgICAgICAgICAgIGFjdGlvbnM6IHRoaXMuX3NlcmlhbGl6YWJsZUFjdGlvbnMo
KSwKICAgICAgICAgICAgIGF1dG9Db250aW51ZTogdGhpcy5fYXV0b0NvbnRpbnVlCiAgICAgICAg
IH07Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgaW5mbygpCiAgICAgewpAQCAtMjA4LDE2ICsx
ODIsMTYgQEAgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQucHJvdG90eXBlID0gewogICAgICAgICAg
ICAgYWN0aW9uczogdGhpcy5fc2VyaWFsaXphYmxlQWN0aW9ucygpLAogICAgICAgICAgICAgYXV0
b0NvbnRpbnVlOiB0aGlzLl9hdXRvQ29udGludWUKICAgICAgICAgfTsKLSAgICB9LAorICAgIH0K
IAogICAgIGdldCBwcm9iZUFjdGlvbnMoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2Fj
dGlvbnMuZmlsdGVyKGZ1bmN0aW9uKGFjdGlvbikgewogICAgICAgICAgICAgcmV0dXJuIGFjdGlv
bi50eXBlID09PSBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludEFjdGlvbi5UeXBlLlByb2JlOwogICAg
ICAgICB9KTsKLSAgICB9LAorICAgIH0KIAotICAgIGN5Y2xlVG9OZXh0TW9kZTogZnVuY3Rpb24o
KQorICAgIGN5Y2xlVG9OZXh0TW9kZSgpCiAgICAgewogICAgICAgICBpZiAodGhpcy5kaXNhYmxl
ZCkgewogICAgICAgICAgICAgLy8gV2hlbiBjeWNsaW5nLCBjbGVhciBhdXRvLWNvbnRpbnVlIHdo
ZW4gZ29pbmcgZnJvbSBkaXNhYmxlZCB0byBlbmFibGVkLgpAQCAtMjM3LDkgKzIxMSw5IEBAIFdl
Ykluc3BlY3Rvci5CcmVha3BvaW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAg
IHRoaXMuZGlzYWJsZWQgPSB0cnVlOwotICAgIH0sCisgICAgfQogCi0gICAgYXBwZW5kQ29udGV4
dE1lbnVJdGVtczogZnVuY3Rpb24oY29udGV4dE1lbnUsIGJyZWFrcG9pbnREaXNwbGF5RWxlbWVu
dCkKKyAgICBhcHBlbmRDb250ZXh0TWVudUl0ZW1zKGNvbnRleHRNZW51LCBicmVha3BvaW50RGlz
cGxheUVsZW1lbnQpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChkb2N1bWVudC5ib2R5
LmNvbnRhaW5zKGJyZWFrcG9pbnREaXNwbGF5RWxlbWVudCksICJicmVha3BvaW50IHBvcG92ZXIg
ZGlzcGxheSBlbGVtZW50IG11c3QgYmUgaW4gdGhlIERPTSIpOwogCkBAIC0yOTMsOSArMjY3LDkg
QEAgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAgY29u
dGV4dE1lbnUuYXBwZW5kU2VwYXJhdG9yKCk7CiAgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBl
bmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmV2ZWFsIGluIE9yaWdpbmFsIFJlc291cmNl
IiksIHJldmVhbE9yaWdpbmFsU291cmNlQ29kZUxvY2F0aW9uLmJpbmQodGhpcykpOwogICAgICAg
ICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjcmVhdGVBY3Rpb246IGZ1bmN0aW9uKHR5cGUsIHBy
ZWNlZGluZ0FjdGlvbiwgZGF0YSkKKyAgICBjcmVhdGVBY3Rpb24odHlwZSwgcHJlY2VkaW5nQWN0
aW9uLCBkYXRhKQogICAgIHsKICAgICAgICAgdmFyIG5ld0FjdGlvbiA9IG5ldyBXZWJJbnNwZWN0
b3IuQnJlYWtwb2ludEFjdGlvbih0aGlzLCB0eXBlLCBkYXRhIHx8IG51bGwpOwogCkBAIC0zMTMs
OSArMjg3LDkgQEAgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQucHJvdG90eXBlID0gewogICAgICAg
ICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5F
dmVudC5BY3Rpb25zRGlkQ2hhbmdlKTsKIAogICAgICAgICByZXR1cm4gbmV3QWN0aW9uOwotICAg
IH0sCisgICAgfQogCi0gICAgcmVjcmVhdGVBY3Rpb246IGZ1bmN0aW9uKHR5cGUsIGFjdGlvblRv
UmVwbGFjZSkKKyAgICByZWNyZWF0ZUFjdGlvbih0eXBlLCBhY3Rpb25Ub1JlcGxhY2UpCiAgICAg
ewogICAgICAgICB2YXIgbmV3QWN0aW9uID0gbmV3IFdlYkluc3BlY3Rvci5CcmVha3BvaW50QWN0
aW9uKHRoaXMsIHR5cGUsIG51bGwpOwogCkBAIC0zMjksOSArMzAzLDkgQEAgV2ViSW5zcGVjdG9y
LkJyZWFrcG9pbnQucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xp
c3RlbmVycyhXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5FdmVudC5BY3Rpb25zRGlkQ2hhbmdlKTsK
IAogICAgICAgICByZXR1cm4gbmV3QWN0aW9uOwotICAgIH0sCisgICAgfQogCi0gICAgcmVtb3Zl
QWN0aW9uOiBmdW5jdGlvbihhY3Rpb24pCisgICAgcmVtb3ZlQWN0aW9uKGFjdGlvbikKICAgICB7
CiAgICAgICAgIHZhciBpbmRleCA9IHRoaXMuX2FjdGlvbnMuaW5kZXhPZihhY3Rpb24pOwogICAg
ICAgICBjb25zb2xlLmFzc2VydChpbmRleCAhPT0gLTEpOwpAQCAtMzQ0LDkgKzMxOCw5IEBAIFdl
Ykluc3BlY3Rvci5CcmVha3BvaW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuYXV0
b0NvbnRpbnVlID0gZmFsc2U7CiAKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5l
cnMoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQuRXZlbnQuQWN0aW9uc0RpZENoYW5nZSk7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBjbGVhckFjdGlvbnM6IGZ1bmN0aW9uKHR5cGUpCisgICAgY2xlYXJB
Y3Rpb25zKHR5cGUpCiAgICAgewogICAgICAgICBpZiAoIXR5cGUpCiAgICAgICAgICAgICB0aGlz
Ll9hY3Rpb25zID0gW107CkBAIC0zNTQsMTggKzMyOCwxOCBAQCBXZWJJbnNwZWN0b3IuQnJlYWtw
b2ludC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9hY3Rpb25zID0gdGhpcy5fYWN0
aW9ucy5maWx0ZXIoZnVuY3Rpb24oYWN0aW9uKSB7IGFjdGlvbi50eXBlICE9PSB0eXBlOyB9KTsK
IAogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuQnJl
YWtwb2ludC5FdmVudC5BY3Rpb25zRGlkQ2hhbmdlKTsKLSAgICB9LAorICAgIH0KIAotICAgIHNh
dmVJZGVudGl0eVRvQ29va2llOiBmdW5jdGlvbihjb29raWUpCisgICAgc2F2ZUlkZW50aXR5VG9D
b29raWUoY29va2llKQogICAgIHsKICAgICAgICAgY29va2llW1dlYkluc3BlY3Rvci5CcmVha3Bv
aW50LlVSTENvb2tpZUtleV0gPSB0aGlzLnVybDsKICAgICAgICAgY29va2llW1dlYkluc3BlY3Rv
ci5CcmVha3BvaW50LkxpbmVOdW1iZXJDb29raWVLZXldID0gdGhpcy5zb3VyY2VDb2RlTG9jYXRp
b24ubGluZU51bWJlcjsKICAgICAgICAgY29va2llW1dlYkluc3BlY3Rvci5CcmVha3BvaW50LkNv
bHVtbk51bWJlckNvb2tpZUtleV0gPSB0aGlzLnNvdXJjZUNvZGVMb2NhdGlvbi5jb2x1bW5OdW1i
ZXI7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcm90ZWN0ZWQgKENhbGxlZCBieSBCcmVha3Bv
aW50QWN0aW9uKQogCi0gICAgYnJlYWtwb2ludEFjdGlvbkRpZENoYW5nZTogZnVuY3Rpb24oYWN0
aW9uKQorICAgIGJyZWFrcG9pbnRBY3Rpb25EaWRDaGFuZ2UoYWN0aW9uKQogICAgIHsKICAgICAg
ICAgdmFyIGluZGV4ID0gdGhpcy5fYWN0aW9ucy5pbmRleE9mKGFjdGlvbik7CiAgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KGluZGV4ICE9PSAtMSk7CkBAIC0zNzMsNDMgKzM0Nyw0MyBAQCBXZWJJbnNw
ZWN0b3IuQnJlYWtwb2ludC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm47CiAKICAg
ICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkJyZWFrcG9p
bnQuRXZlbnQuQWN0aW9uc0RpZENoYW5nZSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2
YXRlCiAKLSAgICBfc2VyaWFsaXphYmxlQWN0aW9uczogZnVuY3Rpb24oKQorICAgIF9zZXJpYWxp
emFibGVBY3Rpb25zKCkKICAgICB7CiAgICAgICAgIHZhciBhY3Rpb25zID0gW107CiAgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fYWN0aW9ucy5sZW5ndGg7ICsraSkKICAgICAgICAg
ICAgIGFjdGlvbnMucHVzaCh0aGlzLl9hY3Rpb25zW2ldLmluZm8pOwogICAgICAgICByZXR1cm4g
YWN0aW9uczsKLSAgICB9LAorICAgIH0KIAotICAgIF9wb3BvdmVyVG9nZ2xlRW5hYmxlZENoZWNr
Ym94Q2hhbmdlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX3BvcG92ZXJUb2dnbGVFbmFibGVkQ2hl
Y2tib3hDaGFuZ2VkKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5kaXNhYmxlZCA9ICFldmVu
dC50YXJnZXQuY2hlY2tlZDsKLSAgICB9LAorICAgIH0KIAotICAgIF9wb3BvdmVyQ29uZGl0aW9u
SW5wdXRDaGFuZ2VkOiBmdW5jdGlvbihldmVudCkKKyAgICBfcG9wb3ZlckNvbmRpdGlvbklucHV0
Q2hhbmdlZChldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuY29uZGl0aW9uID0gZXZlbnQudGFy
Z2V0LnZhbHVlOwotICAgIH0sCisgICAgfQogCi0gICAgX3BvcG92ZXJUb2dnbGVBdXRvQ29udGlu
dWVDaGVja2JveENoYW5nZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9wb3BvdmVyVG9nZ2xlQXV0
b0NvbnRpbnVlQ2hlY2tib3hDaGFuZ2VkKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5hdXRv
Q29udGludWUgPSBldmVudC50YXJnZXQuY2hlY2tlZDsKLSAgICB9LAorICAgIH0KIAotICAgIF9w
b3BvdmVyQ29uZGl0aW9uSW5wdXRLZXlEb3duOiBmdW5jdGlvbihldmVudCkKKyAgICBfcG9wb3Zl
ckNvbmRpdGlvbklucHV0S2V5RG93bihldmVudCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9r
ZXlib2FyZFNob3J0Y3V0RXNjLm1hdGNoZXNFdmVudChldmVudCkgfHwgdGhpcy5fa2V5Ym9hcmRT
aG9ydGN1dEVudGVyLm1hdGNoZXNFdmVudChldmVudCkpIHsKICAgICAgICAgICAgIHRoaXMuX3Bv
cG92ZXIuZGlzbWlzcygpOwogICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CiAg
ICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICB9Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfZWRpdEJyZWFrcG9pbnRQb3BvdmVyQ29udGVudEVsZW1lbnQ6IGZ1bmN0aW9u
KCkKKyAgICBfZWRpdEJyZWFrcG9pbnRQb3BvdmVyQ29udGVudEVsZW1lbnQoKQogICAgIHsKICAg
ICAgICAgdmFyIGNvbnRlbnQgPSB0aGlzLl9wb3BvdmVyQ29udGVudEVsZW1lbnQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgICAgY29udGVudC5jbGFzc05hbWUgPSBXZWJJ
bnNwZWN0b3IuQnJlYWtwb2ludC5Qb3BvdmVyQ2xhc3NOYW1lOwpAQCAtNDc4LDkgKzQ1Miw5IEBA
IFdlYkluc3BlY3Rvci5CcmVha3BvaW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgY29udGVudC5h
cHBlbmRDaGlsZCh0YWJsZSk7CiAKICAgICAgICAgcmV0dXJuIGNvbnRlbnQ7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfcG9wb3ZlckFjdGlvbnNDcmVhdGVBZGRBY3Rpb25CdXR0b246IGZ1bmN0aW9u
KCkKKyAgICBfcG9wb3ZlckFjdGlvbnNDcmVhdGVBZGRBY3Rpb25CdXR0b24oKQogICAgIHsKICAg
ICAgICAgdGhpcy5fcG9wb3ZlckNvbnRlbnRFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5z
cGVjdG9yLkJyZWFrcG9pbnQuV2lkZVBvcG92ZXJDbGFzc05hbWUpOwogICAgICAgICB0aGlzLl9h
Y3Rpb25zQ29udGFpbmVyLnJlbW92ZUNoaWxkcmVuKCk7CkBAIC00ODgsOSArNDYyLDkgQEAgV2Vi
SW5zcGVjdG9yLkJyZWFrcG9pbnQucHJvdG90eXBlID0gewogICAgICAgICB2YXIgYWRkQWN0aW9u
QnV0dG9uID0gdGhpcy5fYWN0aW9uc0NvbnRhaW5lci5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJidXR0b24iKSk7CiAgICAgICAgIGFkZEFjdGlvbkJ1dHRvbi50ZXh0Q29udGVu
dCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQWRkIEFjdGlvbiIpOwogICAgICAgICBhZGRBY3Rp
b25CdXR0b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9wb3BvdmVyQWN0aW9uc0Fk
ZEFjdGlvbkJ1dHRvbkNsaWNrZWQuYmluZCh0aGlzKSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBf
cG9wb3ZlckFjdGlvbnNBZGRBY3Rpb25CdXR0b25DbGlja2VkOiBmdW5jdGlvbihldmVudCkKKyAg
ICBfcG9wb3ZlckFjdGlvbnNBZGRBY3Rpb25CdXR0b25DbGlja2VkKGV2ZW50KQogICAgIHsKICAg
ICAgICAgdGhpcy5fcG9wb3ZlckNvbnRlbnRFbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVj
dG9yLkJyZWFrcG9pbnQuV2lkZVBvcG92ZXJDbGFzc05hbWUpOwogICAgICAgICB0aGlzLl9hY3Rp
b25zQ29udGFpbmVyLnJlbW92ZUNoaWxkcmVuKCk7CkBAIC01MDAsOSArNDc0LDkgQEAgV2ViSW5z
cGVjdG9yLkJyZWFrcG9pbnQucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9wb3BvdmVyQWN0
aW9uc0luc2VydEJyZWFrcG9pbnRBY3Rpb25WaWV3KG5ld0JyZWFrcG9pbnRBY3Rpb25WaWV3LCAt
MSk7CiAgICAgICAgIHRoaXMuX3BvcG92ZXJPcHRpb25zUm93RWxlbWVudC5jbGFzc0xpc3QucmVt
b3ZlKFdlYkluc3BlY3Rvci5CcmVha3BvaW50LkhpZGRlblN0eWxlQ2xhc3NOYW1lKTsKICAgICAg
ICAgdGhpcy5fcG9wb3Zlci51cGRhdGUoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9wb3BvdmVy
QWN0aW9uc0luc2VydEJyZWFrcG9pbnRBY3Rpb25WaWV3OiBmdW5jdGlvbihicmVha3BvaW50QWN0
aW9uVmlldywgaW5kZXgpCisgICAgX3BvcG92ZXJBY3Rpb25zSW5zZXJ0QnJlYWtwb2ludEFjdGlv
blZpZXcoYnJlYWtwb2ludEFjdGlvblZpZXcsIGluZGV4KQogICAgIHsKICAgICAgICAgaWYgKGlu
ZGV4ID09PSAtMSkKICAgICAgICAgICAgIHRoaXMuX2FjdGlvbnNDb250YWluZXIuYXBwZW5kQ2hp
bGQoYnJlYWtwb2ludEFjdGlvblZpZXcuZWxlbWVudCk7CkBAIC01MTAsOSArNDg0LDkgQEAgV2Vi
SW5zcGVjdG9yLkJyZWFrcG9pbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAgdmFyIG5leHRF
bGVtZW50ID0gdGhpcy5fYWN0aW9uc0NvbnRhaW5lci5jaGlsZHJlbltpbmRleCArIDFdIHx8IG51
bGw7CiAgICAgICAgICAgICB0aGlzLl9hY3Rpb25zQ29udGFpbmVyLmluc2VydEJlZm9yZShicmVh
a3BvaW50QWN0aW9uVmlldy5lbGVtZW50LCBuZXh0RWxlbWVudCk7CiAgICAgICAgIH0KLSAgICB9
LAorICAgIH0KIAotICAgIGJyZWFrcG9pbnRBY3Rpb25WaWV3QXBwZW5kQWN0aW9uVmlldzogZnVu
Y3Rpb24oYnJlYWtwb2ludEFjdGlvblZpZXcsIG5ld0FjdGlvbikKKyAgICBicmVha3BvaW50QWN0
aW9uVmlld0FwcGVuZEFjdGlvblZpZXcoYnJlYWtwb2ludEFjdGlvblZpZXcsIG5ld0FjdGlvbikK
ICAgICB7CiAgICAgICAgIHZhciBuZXdCcmVha3BvaW50QWN0aW9uVmlldyA9IG5ldyBXZWJJbnNw
ZWN0b3IuQnJlYWtwb2ludEFjdGlvblZpZXcobmV3QWN0aW9uLCB0aGlzKTsKIApAQCAtNTI5LDkg
KzUwMyw5IEBAIFdlYkluc3BlY3Rvci5CcmVha3BvaW50LnByb3RvdHlwZSA9IHsKICAgICAgICAg
dGhpcy5fcG9wb3Zlck9wdGlvbnNSb3dFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVj
dG9yLkJyZWFrcG9pbnQuSGlkZGVuU3R5bGVDbGFzc05hbWUpOwogCiAgICAgICAgIHRoaXMuX3Bv
cG92ZXIudXBkYXRlKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBicmVha3BvaW50QWN0aW9uVmll
d1JlbW92ZUFjdGlvblZpZXc6IGZ1bmN0aW9uKGJyZWFrcG9pbnRBY3Rpb25WaWV3KQorICAgIGJy
ZWFrcG9pbnRBY3Rpb25WaWV3UmVtb3ZlQWN0aW9uVmlldyhicmVha3BvaW50QWN0aW9uVmlldykK
ICAgICB7CiAgICAgICAgIGJyZWFrcG9pbnRBY3Rpb25WaWV3LmVsZW1lbnQucmVtb3ZlKCk7CiAK
QEAgLTU0MiwxNCArNTE2LDE0IEBAIFdlYkluc3BlY3Rvci5CcmVha3BvaW50LnByb3RvdHlwZSA9
IHsKICAgICAgICAgfQogCiAgICAgICAgIHRoaXMuX3BvcG92ZXIudXBkYXRlKCk7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBicmVha3BvaW50QWN0aW9uVmlld1Jlc2l6ZWQ6IGZ1bmN0aW9uKGJyZWFr
cG9pbnRBY3Rpb25WaWV3KQorICAgIGJyZWFrcG9pbnRBY3Rpb25WaWV3UmVzaXplZChicmVha3Bv
aW50QWN0aW9uVmlldykKICAgICB7CiAgICAgICAgIHRoaXMuX3BvcG92ZXIudXBkYXRlKCk7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICB3aWxsRGlzbWlzc1BvcG92ZXI6IGZ1bmN0aW9uKHBvcG92ZXIp
CisgICAgd2lsbERpc21pc3NQb3BvdmVyKHBvcG92ZXIpCiAgICAgewogICAgICAgICBjb25zb2xl
LmFzc2VydCh0aGlzLl9wb3BvdmVyID09PSBwb3BvdmVyKTsKICAgICAgICAgZGVsZXRlIHRoaXMu
X3BvcG92ZXJDb250ZW50RWxlbWVudDsKQEAgLTU1Nyw5ICs1MzEsOSBAQCBXZWJJbnNwZWN0b3Iu
QnJlYWtwb2ludC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGRlbGV0ZSB0aGlzLl9wb3BvdmVyT3B0
aW9uc0NoZWNrYm94RWxlbWVudDsKICAgICAgICAgZGVsZXRlIHRoaXMuX2FjdGlvbnNDb250YWlu
ZXI7CiAgICAgICAgIGRlbGV0ZSB0aGlzLl9wb3BvdmVyOwotICAgIH0sCisgICAgfQogCi0gICAg
X3Nob3dFZGl0QnJlYWtwb2ludFBvcG92ZXI6IGZ1bmN0aW9uKGJvdW5kaW5nQ2xpZW50UmVjdCkK
KyAgICBfc2hvd0VkaXRCcmVha3BvaW50UG9wb3Zlcihib3VuZGluZ0NsaWVudFJlY3QpCiAgICAg
ewogICAgICAgICB2YXIgYm91bmRzID0gV2ViSW5zcGVjdG9yLlJlY3QucmVjdEZyb21DbGllbnRS
ZWN0KGJvdW5kaW5nQ2xpZW50UmVjdCk7CiAgICAgICAgIGJvdW5kcy5vcmlnaW4ueCAtPSAxOyAv
LyBNb3ZlIHRoZSBhbmNob3IgbGVmdCBvbmUgcGl4ZWwgc28gaXQgbG9va3MgbW9yZSBjZW50ZXJl
ZC4KQEAgLTU3NCwxNyArNTQ4LDM4IEBAIFdlYkluc3BlY3Rvci5CcmVha3BvaW50LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFdlYklu
c3BlY3Rvci5CcmVha3BvaW50LlBvcG92ZXJDb25kaXRpb25JbnB1dElkKS5zZWxlY3QoKTsKLSAg
ICB9LAorICAgIH0KIAotICAgIF9zb3VyY2VDb2RlTG9jYXRpb25Mb2NhdGlvbkNoYW5nZWQ6IGZ1
bmN0aW9uKGV2ZW50KQorICAgIF9zb3VyY2VDb2RlTG9jYXRpb25Mb2NhdGlvbkNoYW5nZWQoZXZl
bnQpCiAgICAgewogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNw
ZWN0b3IuQnJlYWtwb2ludC5FdmVudC5Mb2NhdGlvbkRpZENoYW5nZSwgZXZlbnQuZGF0YSk7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBfc291cmNlQ29kZUxvY2F0aW9uRGlzcGxheUxvY2F0aW9uQ2hh
bmdlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX3NvdXJjZUNvZGVMb2NhdGlvbkRpc3BsYXlMb2Nh
dGlvbkNoYW5nZWQoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xp
c3RlbmVycyhXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5FdmVudC5EaXNwbGF5TG9jYXRpb25EaWRD
aGFuZ2UsIGV2ZW50LmRhdGEpOwogICAgIH0KIH07CiAKLVdlYkluc3BlY3Rvci5CcmVha3BvaW50
LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsKK1dl
Ykluc3BlY3Rvci5CcmVha3BvaW50LlBvcG92ZXJDbGFzc05hbWUgPSAiZWRpdC1icmVha3BvaW50
LXBvcG92ZXItY29udGVudCI7CitXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5XaWRlUG9wb3ZlckNs
YXNzTmFtZSA9ICJ3aWRlIjsKK1dlYkluc3BlY3Rvci5CcmVha3BvaW50LlBvcG92ZXJDb25kaXRp
b25JbnB1dElkID0gImVkaXQtYnJlYWtwb2ludC1wb3BvdmVyLWNvbmRpdGlvbiI7CitXZWJJbnNw
ZWN0b3IuQnJlYWtwb2ludC5Qb3BvdmVyT3B0aW9uc0F1dG9Db250aW51ZUlucHV0SWQgPSAiZWRp
dC1icmVha3BvaW50LXBvcG9vdmVyLWF1dG8tY29udGludWUiOworV2ViSW5zcGVjdG9yLkJyZWFr
cG9pbnQuSGlkZGVuU3R5bGVDbGFzc05hbWUgPSAiaGlkZGVuIjsKKworV2ViSW5zcGVjdG9yLkJy
ZWFrcG9pbnQuRGVmYXVsdEJyZWFrcG9pbnRBY3Rpb25UeXBlID0gV2ViSW5zcGVjdG9yLkJyZWFr
cG9pbnRBY3Rpb24uVHlwZS5Mb2c7CisKK1dlYkluc3BlY3Rvci5CcmVha3BvaW50LlR5cGVJZGVu
dGlmaWVyID0gImJyZWFrcG9pbnQiOworV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQuVVJMQ29va2ll
S2V5ID0gImJyZWFrcG9pbnQtdXJsIjsKK1dlYkluc3BlY3Rvci5CcmVha3BvaW50LkxpbmVOdW1i
ZXJDb29raWVLZXkgPSAiYnJlYWtwb2ludC1saW5lLW51bWJlciI7CitXZWJJbnNwZWN0b3IuQnJl
YWtwb2ludC5Db2x1bW5OdW1iZXJDb29raWVLZXkgPSAiYnJlYWtwb2ludC1jb2x1bW4tbnVtYmVy
IjsKKworV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQuRXZlbnQgPSB7CisgICAgRGlzYWJsZWRTdGF0
ZURpZENoYW5nZTogImJyZWFrcG9pbnQtZGlzYWJsZWQtc3RhdGUtZGlkLWNoYW5nZSIsCisgICAg
UmVzb2x2ZWRTdGF0ZURpZENoYW5nZTogImJyZWFrcG9pbnQtcmVzb2x2ZWQtc3RhdGUtZGlkLWNo
YW5nZSIsCisgICAgQ29uZGl0aW9uRGlkQ2hhbmdlOiAiYnJlYWtwb2ludC1jb25kaXRpb24tZGlk
LWNoYW5nZSIsCisgICAgQWN0aW9uc0RpZENoYW5nZTogImJyZWFrcG9pbnQtYWN0aW9ucy1kaWQt
Y2hhbmdlIiwKKyAgICBBdXRvQ29udGludWVEaWRDaGFuZ2U6ICJicmVha3BvaW50LWF1dG8tY29u
dGludWUtZGlkLWNoYW5nZSIsCisgICAgTG9jYXRpb25EaWRDaGFuZ2U6ICJicmVha3BvaW50LWxv
Y2F0aW9uLWRpZC1jaGFuZ2UiLAorICAgIERpc3BsYXlMb2NhdGlvbkRpZENoYW5nZTogImJyZWFr
cG9pbnQtZGlzcGxheS1sb2NhdGlvbi1kaWQtY2hhbmdlIiwKK307CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQnJlYWtwb2ludEFjdGlvbi5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9CcmVha3BvaW50
QWN0aW9uLmpzCmluZGV4IGE1NWExNjUuLmI5NGY3OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9CcmVha3BvaW50QWN0aW9uLmpzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9CcmVha3BvaW50QWN0
aW9uLmpzCkBAIC0yMyw2MCArMjMsNTEgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuQnJlYWtwb2ludEFjdGlvbiA9IGZ1bmN0aW9uKGJy
ZWFrcG9pbnQsIHR5cGVPckluZm8sIGRhdGEpCitXZWJJbnNwZWN0b3IuQnJlYWtwb2ludEFjdGlv
biA9IGNsYXNzIEJyZWFrcG9pbnRBY3Rpb24gZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7
Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIGNvbnN0cnVjdG9yKGJy
ZWFrcG9pbnQsIHR5cGVPckluZm8sIGRhdGEpCisgICAgeworICAgICAgICBzdXBlcigpOwogCi0g
ICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2ludCk7Ci0gICAgY29uc29sZS5hc3NlcnQodHlwZU9y
SW5mbyk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQpOworICAgICAgICBjb25z
b2xlLmFzc2VydCh0eXBlT3JJbmZvKTsKIAotICAgIHRoaXMuX2JyZWFrcG9pbnQgPSBicmVha3Bv
aW50OworICAgICAgICB0aGlzLl9icmVha3BvaW50ID0gYnJlYWtwb2ludDsKIAotICAgIGlmICh0
eXBlb2YgdHlwZU9ySW5mbyA9PT0gInN0cmluZyIpIHsKLSAgICAgICAgdGhpcy5fdHlwZSA9IHR5
cGVPckluZm87Ci0gICAgICAgIHRoaXMuX2RhdGEgPSBkYXRhIHx8IG51bGw7Ci0gICAgfSBlbHNl
IGlmICh0eXBlb2YgdHlwZU9ySW5mbyA9PT0gIm9iamVjdCIpIHsKLSAgICAgICAgdGhpcy5fdHlw
ZSA9IHR5cGVPckluZm8udHlwZTsKLSAgICAgICAgdGhpcy5fZGF0YSA9IHR5cGVPckluZm8uZGF0
YSB8fCBudWxsOwotICAgIH0gZWxzZQotICAgICAgICBjb25zb2xlLmVycm9yKCJVbmV4cGVjdGVk
IHR5cGUgcGFzc2VkIHRvIFdlYkluc3BlY3Rvci5CcmVha3BvaW50QWN0aW9uIik7CisgICAgICAg
IGlmICh0eXBlb2YgdHlwZU9ySW5mbyA9PT0gInN0cmluZyIpIHsKKyAgICAgICAgICAgIHRoaXMu
X3R5cGUgPSB0eXBlT3JJbmZvOworICAgICAgICAgICAgdGhpcy5fZGF0YSA9IGRhdGEgfHwgbnVs
bDsKKyAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdHlwZU9ySW5mbyA9PT0gIm9iamVjdCIpIHsK
KyAgICAgICAgICAgIHRoaXMuX3R5cGUgPSB0eXBlT3JJbmZvLnR5cGU7CisgICAgICAgICAgICB0
aGlzLl9kYXRhID0gdHlwZU9ySW5mby5kYXRhIHx8IG51bGw7CisgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgY29uc29sZS5lcnJvcigiVW5leHBlY3RlZCB0eXBlIHBhc3NlZCB0byBXZWJJbnNw
ZWN0b3IuQnJlYWtwb2ludEFjdGlvbiIpOwogCi0gICAgY29uc29sZS5hc3NlcnQodHlwZW9mIHRo
aXMuX3R5cGUgPT09ICJzdHJpbmciKTsKLSAgICB0aGlzLl9pZCA9IFdlYkluc3BlY3Rvci5kZWJ1
Z2dlck1hbmFnZXIubmV4dEJyZWFrcG9pbnRBY3Rpb25JZGVudGlmaWVyOwotfTsKLQotV2ViSW5z
cGVjdG9yLkJyZWFrcG9pbnRBY3Rpb24uVHlwZSA9IHsKLSAgICBMb2c6ICJsb2ciLAotICAgIEV2
YWx1YXRlOiAiZXZhbHVhdGUiLAotICAgIFNvdW5kOiAic291bmQiLAotICAgIFByb2JlOiAicHJv
YmUiCi19OwotCi1XZWJJbnNwZWN0b3IuQnJlYWtwb2ludEFjdGlvbi5wcm90b3R5cGUgPSB7Ci0g
ICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5CcmVha3BvaW50QWN0aW9uLAotICAgIF9fcHJv
dG9fXzogV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGUsCisgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KHR5cGVvZiB0aGlzLl90eXBlID09PSAic3RyaW5nIik7CisgICAgICAgIHRoaXMuX2lkID0g
V2ViSW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdlci5uZXh0QnJlYWtwb2ludEFjdGlvbklkZW50aWZp
ZXI7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgYnJlYWtwb2ludCgpCiAgICAg
ewogICAgICAgICByZXR1cm4gdGhpcy5fYnJlYWtwb2ludDsKLSAgICB9LAorICAgIH0KIAogICAg
IGdldCBpZCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5faWQ7Ci0gICAgfSwKKyAgICB9
CiAKICAgICBnZXQgdHlwZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fdHlwZTsKLSAg
ICB9LAorICAgIH0KIAogICAgIGdldCBkYXRhKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlz
Ll9kYXRhOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IGRhdGEoZGF0YSkKICAgICB7CkBAIC04
Niw3ICs3Nyw3IEBAIFdlYkluc3BlY3Rvci5CcmVha3BvaW50QWN0aW9uLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgdGhpcy5fZGF0YSA9IGRhdGE7CiAKICAgICAgICAgdGhpcy5fYnJlYWtwb2ludC5i
cmVha3BvaW50QWN0aW9uRGlkQ2hhbmdlKHRoaXMpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0
IGluZm8oKQogICAgIHsKQEAgLTk2LDMgKzg3LDEwIEBAIFdlYkluc3BlY3Rvci5CcmVha3BvaW50
QWN0aW9uLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIG9iajsKICAgICB9CiB9OworCitX
ZWJJbnNwZWN0b3IuQnJlYWtwb2ludEFjdGlvbi5UeXBlID0geworICAgIExvZzogImxvZyIsCisg
ICAgRXZhbHVhdGU6ICJldmFsdWF0ZSIsCisgICAgU291bmQ6ICJzb3VuZCIsCisgICAgUHJvYmU6
ICJwcm9iZSIKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Nb2RlbHMvQ1NTQ29tcGxldGlvbnMuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Nb2RlbHMvQ1NTQ29tcGxldGlvbnMuanMKaW5kZXggMzYzMzdkOS4uMjg0MjFi
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxz
L0NTU0NvbXBsZXRpb25zLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01vZGVscy9DU1NDb21wbGV0aW9ucy5qcwpAQCAtMzEsMTQyICszMSwxNDUgQEAKICAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkNTU0NvbXBsZXRpb25zID0gZnVuY3Rpb24o
cHJvcGVydGllcywgYWNjZXB0RW1wdHlQcmVmaXgpCitXZWJJbnNwZWN0b3IuQ1NTQ29tcGxldGlv
bnMgPSBjbGFzcyBDU1NDb21wbGV0aW9ucwogewotICAgIHRoaXMuX3ZhbHVlcyA9IFtdOwotICAg
IHRoaXMuX2xvbmdoYW5kcyA9IHt9OwotICAgIHRoaXMuX3Nob3J0aGFuZHMgPSB7fTsKLQotICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcGVydGllcy5sZW5ndGg7ICsraSkgewotICAgICAgICAv
LyBDT01QQVRJQklMSVRZIChpT1MgNik6IFRoaXMgdXNlZCB0byBiZSBhbiBhcnJheSBvZiBzdHJp
bmdzLAotICAgICAgICAvLyBub3cgaXQgY29udGFpbnMgb2JqZWN0cyB3aXRoIGEgJ25hbWUnIHBy
b3BlcnR5LiBTdXBwb3J0IGJvdGggaGVyZS4KLSAgICAgICAgdmFyIHByb3BlcnR5ID0gcHJvcGVy
dGllc1tpXTsKLSAgICAgICAgaWYgKHR5cGVvZiBwcm9wZXJ0eSA9PT0gInN0cmluZyIpIHsKLSAg
ICAgICAgICAgIHRoaXMuX3ZhbHVlcy5wdXNoKHByb3BlcnR5KTsKLSAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIHByb3BlcnR5TmFtZSA9IHByb3BlcnR5Lm5h
bWU7Ci0gICAgICAgIHRoaXMuX3ZhbHVlcy5wdXNoKHByb3BlcnR5TmFtZSk7Ci0KLSAgICAgICAg
dmFyIGxvbmdoYW5kcyA9IHByb3BlcnR5LmxvbmdoYW5kczsKLSAgICAgICAgaWYgKGxvbmdoYW5k
cykgewotICAgICAgICAgICAgdGhpcy5fbG9uZ2hhbmRzW3Byb3BlcnR5TmFtZV0gPSBsb25naGFu
ZHM7Ci0KLSAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbG9uZ2hhbmRzLmxlbmd0aDsg
KytqKSB7Ci0gICAgICAgICAgICAgICAgdmFyIGxvbmdoYW5kTmFtZSA9IGxvbmdoYW5kc1tqXTsK
LQotICAgICAgICAgICAgICAgIHZhciBzaG9ydGhhbmRzID0gdGhpcy5fc2hvcnRoYW5kc1tsb25n
aGFuZE5hbWVdOwotICAgICAgICAgICAgICAgIGlmICghc2hvcnRoYW5kcykgewotICAgICAgICAg
ICAgICAgICAgICBzaG9ydGhhbmRzID0gW107Ci0gICAgICAgICAgICAgICAgICAgIHRoaXMuX3No
b3J0aGFuZHNbbG9uZ2hhbmROYW1lXSA9IHNob3J0aGFuZHM7Ci0gICAgICAgICAgICAgICAgfQot
Ci0gICAgICAgICAgICAgICAgc2hvcnRoYW5kcy5wdXNoKHByb3BlcnR5TmFtZSk7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB0aGlzLl92YWx1ZXMuc29ydCgpOwotCi0g
ICAgdGhpcy5fYWNjZXB0RW1wdHlQcmVmaXggPSBhY2NlcHRFbXB0eVByZWZpeDsKLX07Ci0KLVdl
Ykluc3BlY3Rvci5DU1NDb21wbGV0aW9ucy5jc3NOYW1lQ29tcGxldGlvbnMgPSBudWxsOwotCi1X
ZWJJbnNwZWN0b3IuQ1NTQ29tcGxldGlvbnMucmVxdWVzdENTU05hbWVDb21wbGV0aW9ucyA9IGZ1
bmN0aW9uKCkKLXsKLSAgICBpZiAoV2ViSW5zcGVjdG9yLkNTU0NvbXBsZXRpb25zLmNzc05hbWVD
b21wbGV0aW9ucykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZnVuY3Rpb24gcHJvcGVydHlOYW1l
c0NhbGxiYWNrKGVycm9yLCBuYW1lcykKKyAgICBjb25zdHJ1Y3Rvcihwcm9wZXJ0aWVzLCBhY2Nl
cHRFbXB0eVByZWZpeCkKICAgICB7Ci0gICAgICAgIGlmIChlcnJvcikKLSAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgdGhpcy5fdmFsdWVzID0gW107CisgICAgICAgIHRoaXMuX2xvbmdoYW5k
cyA9IHt9OworICAgICAgICB0aGlzLl9zaG9ydGhhbmRzID0ge307CiAKLSAgICAgICAgV2ViSW5z
cGVjdG9yLkNTU0NvbXBsZXRpb25zLmNzc05hbWVDb21wbGV0aW9ucyA9IG5ldyBXZWJJbnNwZWN0
b3IuQ1NTQ29tcGxldGlvbnMobmFtZXMsIGZhbHNlKTsKLQotICAgICAgICBXZWJJbnNwZWN0b3Iu
Q1NTS2V5d29yZENvbXBsZXRpb25zLmFkZEN1c3RvbUNvbXBsZXRpb25zKG5hbWVzKTsKLQotICAg
ICAgICAvLyBDb2RlTWlycm9yIGlzIG5vdCBpbmNsdWRlZCBieSB0ZXN0cyBzbyB3ZSBzaG91bGRu
J3QgYXNzdW1lIGl0IGFsd2F5cyBleGlzdHMuCi0gICAgICAgIC8vIElmIGl0IGlzbid0IGF2YWls
YWJsZSB3ZSBza2lwIE1JTUUgdHlwZSBhc3NvY2lhdGlvbnMuCi0gICAgICAgIGlmICghd2luZG93
LkNvZGVNaXJyb3IpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdmFyIHByb3BlcnR5
TmFtZXNGb3JDb2RlTWlycm9yID0ge307Ci0gICAgICAgIHZhciB2YWx1ZUtleXdvcmRzRm9yQ29k
ZU1pcnJvciA9IHsiaW5oZXJpdCI6IHRydWUsICJpbml0aWFsIjogdHJ1ZX07Ci0gICAgICAgIHZh
ciBjb2xvcktleXdvcmRzRm9yQ29kZU1pcnJvciA9IHt9OwotCi0gICAgICAgIGZ1bmN0aW9uIG5h
bWVGb3JDb2RlTWlycm9yKG5hbWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vIENvZGVNaXJy
b3IgcGFyc2VzIHRoZSB2ZW5kb3IgcHJlZml4IHNlcGFyYXRlIGZyb20gdGhlIHByb3BlcnR5IG9y
IGtleXdvcmQgbmFtZSwKLSAgICAgICAgICAgIC8vIHNvIHdlIG5lZWQgdG8gc3RyaXAgdmVuZG9y
IHByZWZpeGVzIGZyb20gb3VyIG5hbWVzLiBBbHNvIHN0cmlwIGZ1bmN0aW9uIHBhcmVudGhlc2lz
LgotICAgICAgICAgICAgcmV0dXJuIG5hbWUucmVwbGFjZSgvXi1bXi1dKy0vLCAiIikucmVwbGFj
ZSgvXChcKSQvLCAiIik7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBjb2xsZWN0UHJv
cGVydHlOYW1lRm9yQ29kZU1pcnJvcihwcm9wZXJ0eU5hbWUpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIC8vIFByb3BlcnRpZXMgY2FuIGFsc28gYmUgdmFsdWUga2V5d29yZHMsIGxpa2Ugd2hlbiB1
c2VkIGluIGEgdHJhbnNpdGlvbi4KLSAgICAgICAgICAgIC8vIFNvIHdlIGFkZCB0aGVtIHRvIGJv
dGggbGlzdHMuCi0gICAgICAgICAgICB2YXIgY29kZU1pcnJvclByb3BlcnR5TmFtZSA9IG5hbWVG
b3JDb2RlTWlycm9yKHByb3BlcnR5TmFtZSk7Ci0gICAgICAgICAgICBwcm9wZXJ0eU5hbWVzRm9y
Q29kZU1pcnJvcltjb2RlTWlycm9yUHJvcGVydHlOYW1lXSA9IHRydWU7Ci0gICAgICAgICAgICB2
YWx1ZUtleXdvcmRzRm9yQ29kZU1pcnJvcltjb2RlTWlycm9yUHJvcGVydHlOYW1lXSA9IHRydWU7
Ci0gICAgICAgIH0KLQotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5hbWVzLmxlbmd0aDsg
KytpKSB7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcGVydGllcy5sZW5ndGg7ICsr
aSkgewogICAgICAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDYpOiBUaGlzIHVzZWQgdG8g
YmUgYW4gYXJyYXkgb2Ygc3RyaW5ncywKICAgICAgICAgICAgIC8vIG5vdyBpdCBjb250YWlucyBv
YmplY3RzIHdpdGggYSAnbmFtZScgcHJvcGVydHkuIFN1cHBvcnQgYm90aCBoZXJlLgotICAgICAg
ICAgICAgdmFyIHByb3BlcnR5ID0gbmFtZXNbaV07Ci0gICAgICAgICAgICBpZiAodHlwZW9mIHBy
b3BlcnR5ID09PSAic3RyaW5nIikKLSAgICAgICAgICAgICAgICBjb2xsZWN0UHJvcGVydHlOYW1l
Rm9yQ29kZU1pcnJvcihwcm9wZXJ0eSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgY29sbGVjdFByb3BlcnR5TmFtZUZvckNvZGVNaXJyb3IocHJvcGVydHkubmFtZSk7Ci0gICAg
ICAgIH0KKyAgICAgICAgICAgIHZhciBwcm9wZXJ0eSA9IHByb3BlcnRpZXNbaV07CisgICAgICAg
ICAgICBpZiAodHlwZW9mIHByb3BlcnR5ID09PSAic3RyaW5nIikgeworICAgICAgICAgICAgICAg
IHRoaXMuX3ZhbHVlcy5wdXNoKHByb3BlcnR5KTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHByb3BlcnR5TmFtZSA9IHByb3BlcnR5
Lm5hbWU7CisgICAgICAgICAgICB0aGlzLl92YWx1ZXMucHVzaChwcm9wZXJ0eU5hbWUpOworCisg
ICAgICAgICAgICB2YXIgbG9uZ2hhbmRzID0gcHJvcGVydHkubG9uZ2hhbmRzOworICAgICAgICAg
ICAgaWYgKGxvbmdoYW5kcykgeworICAgICAgICAgICAgICAgIHRoaXMuX2xvbmdoYW5kc1twcm9w
ZXJ0eU5hbWVdID0gbG9uZ2hhbmRzOworCisgICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7
IGogPCBsb25naGFuZHMubGVuZ3RoOyArK2opIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGxv
bmdoYW5kTmFtZSA9IGxvbmdoYW5kc1tqXTsKIAotICAgICAgICBmb3IgKHZhciBwcm9wZXJ0eU5h
bWUgaW4gV2ViSW5zcGVjdG9yLkNTU0tleXdvcmRDb21wbGV0aW9ucy5fcHJvcGVydHlLZXl3b3Jk
TWFwKSB7Ci0gICAgICAgICAgICB2YXIga2V5d29yZHMgPSBXZWJJbnNwZWN0b3IuQ1NTS2V5d29y
ZENvbXBsZXRpb25zLl9wcm9wZXJ0eUtleXdvcmRNYXBbcHJvcGVydHlOYW1lXTsKLSAgICAgICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5d29yZHMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAg
ICAgICAgICAvLyBTa2lwIG51bWJlcnMsIGxpa2UgdGhlIG9uZXMgZGVmaW5lZCBmb3IgZm9udC13
ZWlnaHQuCi0gICAgICAgICAgICAgICAgaWYgKCFpc05hTihOdW1iZXIoa2V5d29yZHNbaV0pKSkK
LSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgdmFsdWVLZXl3
b3Jkc0ZvckNvZGVNaXJyb3JbbmFtZUZvckNvZGVNaXJyb3Ioa2V5d29yZHNbaV0pXSA9IHRydWU7
CisgICAgICAgICAgICAgICAgICAgIHZhciBzaG9ydGhhbmRzID0gdGhpcy5fc2hvcnRoYW5kc1ts
b25naGFuZE5hbWVdOworICAgICAgICAgICAgICAgICAgICBpZiAoIXNob3J0aGFuZHMpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHNob3J0aGFuZHMgPSBbXTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHRoaXMuX3Nob3J0aGFuZHNbbG9uZ2hhbmROYW1lXSA9IHNob3J0aGFuZHM7CisgICAg
ICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBzaG9ydGhhbmRzLnB1c2go
cHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KIAotICAgICAgICBXZWJJbnNwZWN0b3IuQ1NTS2V5d29yZENvbXBsZXRpb25zLl9jb2xvcnMu
Zm9yRWFjaChmdW5jdGlvbihjb2xvck5hbWUpIHsKLSAgICAgICAgICAgIGNvbG9yS2V5d29yZHNG
b3JDb2RlTWlycm9yW25hbWVGb3JDb2RlTWlycm9yKGNvbG9yTmFtZSldID0gdHJ1ZTsKLSAgICAg
ICAgfSk7CisgICAgICAgIHRoaXMuX3ZhbHVlcy5zb3J0KCk7CisKKyAgICAgICAgdGhpcy5fYWNj
ZXB0RW1wdHlQcmVmaXggPSBhY2NlcHRFbXB0eVByZWZpeDsKKyAgICB9CisKKyAgICAvLyBTdGF0
aWMKKworICAgIHN0YXRpYyByZXF1ZXN0Q1NTTmFtZUNvbXBsZXRpb25zKCkKKyAgICB7CisgICAg
ICAgIGlmIChXZWJJbnNwZWN0b3IuQ1NTQ29tcGxldGlvbnMuY3NzTmFtZUNvbXBsZXRpb25zKQor
ICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGZ1bmN0aW9uIHVwZGF0ZUNvZGVNaXJyb3JD
U1NNb2RlKG1pbWVUeXBlKQorICAgICAgICBmdW5jdGlvbiBwcm9wZXJ0eU5hbWVzQ2FsbGJhY2so
ZXJyb3IsIG5hbWVzKQogICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgbW9kZVNwZWMgPSBDb2Rl
TWlycm9yLnJlc29sdmVNb2RlKG1pbWVUeXBlKTsKKyAgICAgICAgICAgIGlmIChlcnJvcikKKyAg
ICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KG1vZGVT
cGVjLnByb3BlcnR5S2V5d29yZHMpOwotICAgICAgICAgICAgY29uc29sZS5hc3NlcnQobW9kZVNw
ZWMudmFsdWVLZXl3b3Jkcyk7Ci0gICAgICAgICAgICBjb25zb2xlLmFzc2VydChtb2RlU3BlYy5j
b2xvcktleXdvcmRzKTsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5DU1NDb21wbGV0aW9ucy5j
c3NOYW1lQ29tcGxldGlvbnMgPSBuZXcgV2ViSW5zcGVjdG9yLkNTU0NvbXBsZXRpb25zKG5hbWVz
LCBmYWxzZSk7CiAKLSAgICAgICAgICAgIG1vZGVTcGVjLnByb3BlcnR5S2V5d29yZHMgPSBwcm9w
ZXJ0eU5hbWVzRm9yQ29kZU1pcnJvcjsKLSAgICAgICAgICAgIG1vZGVTcGVjLnZhbHVlS2V5d29y
ZHMgPSB2YWx1ZUtleXdvcmRzRm9yQ29kZU1pcnJvcjsKLSAgICAgICAgICAgIG1vZGVTcGVjLmNv
bG9yS2V5d29yZHMgPSBjb2xvcktleXdvcmRzRm9yQ29kZU1pcnJvcjsKKyAgICAgICAgICAgIFdl
Ykluc3BlY3Rvci5DU1NLZXl3b3JkQ29tcGxldGlvbnMuYWRkQ3VzdG9tQ29tcGxldGlvbnMobmFt
ZXMpOwogCi0gICAgICAgICAgICBDb2RlTWlycm9yLmRlZmluZU1JTUUobWltZVR5cGUsIG1vZGVT
cGVjKTsKKyAgICAgICAgICAgIC8vIENvZGVNaXJyb3IgaXMgbm90IGluY2x1ZGVkIGJ5IHRlc3Rz
IHNvIHdlIHNob3VsZG4ndCBhc3N1bWUgaXQgYWx3YXlzIGV4aXN0cy4KKyAgICAgICAgICAgIC8v
IElmIGl0IGlzbid0IGF2YWlsYWJsZSB3ZSBza2lwIE1JTUUgdHlwZSBhc3NvY2lhdGlvbnMuCisg
ICAgICAgICAgICBpZiAoIXdpbmRvdy5Db2RlTWlycm9yKQorICAgICAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICAgICAgdmFyIHByb3BlcnR5TmFtZXNGb3JDb2RlTWlycm9yID0ge307Cisg
ICAgICAgICAgICB2YXIgdmFsdWVLZXl3b3Jkc0ZvckNvZGVNaXJyb3IgPSB7ImluaGVyaXQiOiB0
cnVlLCAiaW5pdGlhbCI6IHRydWV9OworICAgICAgICAgICAgdmFyIGNvbG9yS2V5d29yZHNGb3JD
b2RlTWlycm9yID0ge307CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIG5hbWVGb3JDb2RlTWlycm9y
KG5hbWUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgLy8gQ29kZU1pcnJvciBwYXJz
ZXMgdGhlIHZlbmRvciBwcmVmaXggc2VwYXJhdGUgZnJvbSB0aGUgcHJvcGVydHkgb3Iga2V5d29y
ZCBuYW1lLAorICAgICAgICAgICAgICAgIC8vIHNvIHdlIG5lZWQgdG8gc3RyaXAgdmVuZG9yIHBy
ZWZpeGVzIGZyb20gb3VyIG5hbWVzLiBBbHNvIHN0cmlwIGZ1bmN0aW9uIHBhcmVudGhlc2lzLgor
ICAgICAgICAgICAgICAgIHJldHVybiBuYW1lLnJlcGxhY2UoL14tW14tXSstLywgIiIpLnJlcGxh
Y2UoL1woXCkkLywgIiIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBj
b2xsZWN0UHJvcGVydHlOYW1lRm9yQ29kZU1pcnJvcihwcm9wZXJ0eU5hbWUpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgLy8gUHJvcGVydGllcyBjYW4gYWxzbyBiZSB2YWx1ZSBrZXl3
b3JkcywgbGlrZSB3aGVuIHVzZWQgaW4gYSB0cmFuc2l0aW9uLgorICAgICAgICAgICAgICAgIC8v
IFNvIHdlIGFkZCB0aGVtIHRvIGJvdGggbGlzdHMuCisgICAgICAgICAgICAgICAgdmFyIGNvZGVN
aXJyb3JQcm9wZXJ0eU5hbWUgPSBuYW1lRm9yQ29kZU1pcnJvcihwcm9wZXJ0eU5hbWUpOworICAg
ICAgICAgICAgICAgIHByb3BlcnR5TmFtZXNGb3JDb2RlTWlycm9yW2NvZGVNaXJyb3JQcm9wZXJ0
eU5hbWVdID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB2YWx1ZUtleXdvcmRzRm9yQ29kZU1pcnJv
cltjb2RlTWlycm9yUHJvcGVydHlOYW1lXSA9IHRydWU7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmFtZXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAg
ICAgICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgNik6IFRoaXMgdXNlZCB0byBiZSBhbiBhcnJh
eSBvZiBzdHJpbmdzLAorICAgICAgICAgICAgICAgIC8vIG5vdyBpdCBjb250YWlucyBvYmplY3Rz
IHdpdGggYSAnbmFtZScgcHJvcGVydHkuIFN1cHBvcnQgYm90aCBoZXJlLgorICAgICAgICAgICAg
ICAgIHZhciBwcm9wZXJ0eSA9IG5hbWVzW2ldOworICAgICAgICAgICAgICAgIGlmICh0eXBlb2Yg
cHJvcGVydHkgPT09ICJzdHJpbmciKQorICAgICAgICAgICAgICAgICAgICBjb2xsZWN0UHJvcGVy
dHlOYW1lRm9yQ29kZU1pcnJvcihwcm9wZXJ0eSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgICAgICBjb2xsZWN0UHJvcGVydHlOYW1lRm9yQ29kZU1pcnJvcihwcm9wZXJ0
eS5uYW1lKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZm9yICh2YXIgcHJvcGVydHlO
YW1lIGluIFdlYkluc3BlY3Rvci5DU1NLZXl3b3JkQ29tcGxldGlvbnMuX3Byb3BlcnR5S2V5d29y
ZE1hcCkgeworICAgICAgICAgICAgICAgIHZhciBrZXl3b3JkcyA9IFdlYkluc3BlY3Rvci5DU1NL
ZXl3b3JkQ29tcGxldGlvbnMuX3Byb3BlcnR5S2V5d29yZE1hcFtwcm9wZXJ0eU5hbWVdOworICAg
ICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5d29yZHMubGVuZ3RoOyArK2kpIHsK
KyAgICAgICAgICAgICAgICAgICAgLy8gU2tpcCBudW1iZXJzLCBsaWtlIHRoZSBvbmVzIGRlZmlu
ZWQgZm9yIGZvbnQtd2VpZ2h0LgorICAgICAgICAgICAgICAgICAgICBpZiAoIWlzTmFOKE51bWJl
cihrZXl3b3Jkc1tpXSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgICAgICAgICAgICAgIHZhbHVlS2V5d29yZHNGb3JDb2RlTWlycm9yW25hbWVGb3JDb2RlTWly
cm9yKGtleXdvcmRzW2ldKV0gPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLkNTU0tleXdvcmRDb21wbGV0aW9ucy5fY29s
b3JzLmZvckVhY2goZnVuY3Rpb24oY29sb3JOYW1lKSB7CisgICAgICAgICAgICAgICAgY29sb3JL
ZXl3b3Jkc0ZvckNvZGVNaXJyb3JbbmFtZUZvckNvZGVNaXJyb3IoY29sb3JOYW1lKV0gPSB0cnVl
OworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHVwZGF0ZUNvZGVNaXJy
b3JDU1NNb2RlKG1pbWVUeXBlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZhciBt
b2RlU3BlYyA9IENvZGVNaXJyb3IucmVzb2x2ZU1vZGUobWltZVR5cGUpOworCisgICAgICAgICAg
ICAgICAgY29uc29sZS5hc3NlcnQobW9kZVNwZWMucHJvcGVydHlLZXl3b3Jkcyk7CisgICAgICAg
ICAgICAgICAgY29uc29sZS5hc3NlcnQobW9kZVNwZWMudmFsdWVLZXl3b3Jkcyk7CisgICAgICAg
ICAgICAgICAgY29uc29sZS5hc3NlcnQobW9kZVNwZWMuY29sb3JLZXl3b3Jkcyk7CisKKyAgICAg
ICAgICAgICAgICBtb2RlU3BlYy5wcm9wZXJ0eUtleXdvcmRzID0gcHJvcGVydHlOYW1lc0ZvckNv
ZGVNaXJyb3I7CisgICAgICAgICAgICAgICAgbW9kZVNwZWMudmFsdWVLZXl3b3JkcyA9IHZhbHVl
S2V5d29yZHNGb3JDb2RlTWlycm9yOworICAgICAgICAgICAgICAgIG1vZGVTcGVjLmNvbG9yS2V5
d29yZHMgPSBjb2xvcktleXdvcmRzRm9yQ29kZU1pcnJvcjsKKworICAgICAgICAgICAgICAgIENv
ZGVNaXJyb3IuZGVmaW5lTUlNRShtaW1lVHlwZSwgbW9kZVNwZWMpOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICB1cGRhdGVDb2RlTWlycm9yQ1NTTW9kZSgidGV4dC9jc3MiKTsKKyAgICAg
ICAgICAgIHVwZGF0ZUNvZGVNaXJyb3JDU1NNb2RlKCJ0ZXh0L3gtc2NzcyIpOwogICAgICAgICB9
CiAKLSAgICAgICAgdXBkYXRlQ29kZU1pcnJvckNTU01vZGUoInRleHQvY3NzIik7Ci0gICAgICAg
IHVwZGF0ZUNvZGVNaXJyb3JDU1NNb2RlKCJ0ZXh0L3gtc2NzcyIpOworICAgICAgICBpZiAod2lu
ZG93LkNTU0FnZW50KQorICAgICAgICAgICAgQ1NTQWdlbnQuZ2V0U3VwcG9ydGVkQ1NTUHJvcGVy
dGllcyhwcm9wZXJ0eU5hbWVzQ2FsbGJhY2spOwogICAgIH0KIAotICAgIGlmICh3aW5kb3cuQ1NT
QWdlbnQpCi0gICAgICAgIENTU0FnZW50LmdldFN1cHBvcnRlZENTU1Byb3BlcnRpZXMocHJvcGVy
dHlOYW1lc0NhbGxiYWNrKTsKLX07CisgICAgLy8gUHVibGljCiAKLVdlYkluc3BlY3Rvci5DU1ND
b21wbGV0aW9ucy5wcm90b3R5cGUgPSB7CiAgICAgZ2V0IHZhbHVlcygpCiAgICAgewogICAgICAg
ICByZXR1cm4gdGhpcy5fdmFsdWVzOwotICAgIH0sCisgICAgfQogCi0gICAgc3RhcnRzV2l0aDog
ZnVuY3Rpb24ocHJlZml4KQorICAgIHN0YXJ0c1dpdGgocHJlZml4KQogICAgIHsKICAgICAgICAg
dmFyIGZpcnN0SW5kZXggPSB0aGlzLl9maXJzdEluZGV4T2ZQcmVmaXgocHJlZml4KTsKICAgICAg
ICAgaWYgKGZpcnN0SW5kZXggPT09IC0xKQpAQCAtMTc2LDE1ICsxNzksMTUgQEAgV2ViSW5zcGVj
dG9yLkNTU0NvbXBsZXRpb25zLnByb3RvdHlwZSA9IHsKICAgICAgICAgd2hpbGUgKGZpcnN0SW5k
ZXggPCB0aGlzLl92YWx1ZXMubGVuZ3RoICYmIHRoaXMuX3ZhbHVlc1tmaXJzdEluZGV4XS5zdGFy
dHNXaXRoKHByZWZpeCkpCiAgICAgICAgICAgICByZXN1bHRzLnB1c2godGhpcy5fdmFsdWVzW2Zp
cnN0SW5kZXgrK10pOwogICAgICAgICByZXR1cm4gcmVzdWx0czsKLSAgICB9LAorICAgIH0KIAot
ICAgIGZpcnN0U3RhcnRzV2l0aDogZnVuY3Rpb24ocHJlZml4KQorICAgIGZpcnN0U3RhcnRzV2l0
aChwcmVmaXgpCiAgICAgewogICAgICAgICB2YXIgZm91bmRJbmRleCA9IHRoaXMuX2ZpcnN0SW5k
ZXhPZlByZWZpeChwcmVmaXgpOwogICAgICAgICByZXR1cm4gKGZvdW5kSW5kZXggPT09IC0xID8g
IiIgOiB0aGlzLl92YWx1ZXNbZm91bmRJbmRleF0pOwotICAgIH0sCisgICAgfQogCi0gICAgX2Zp
cnN0SW5kZXhPZlByZWZpeDogZnVuY3Rpb24ocHJlZml4KQorICAgIF9maXJzdEluZGV4T2ZQcmVm
aXgocHJlZml4KQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl92YWx1ZXMubGVuZ3RoKQogICAg
ICAgICAgICAgcmV0dXJuIC0xOwpAQCAtMjE0LDI2ICsyMTcsMjYgQEAgV2ViSW5zcGVjdG9yLkNT
U0NvbXBsZXRpb25zLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGZvdW5kSW5kZXgtLTsKIAog
ICAgICAgICByZXR1cm4gZm91bmRJbmRleDsKLSAgICB9LAorICAgIH0KIAotICAgIGtleVNldDog
ZnVuY3Rpb24oKQorICAgIGtleVNldCgpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX2tleVNl
dCkKICAgICAgICAgICAgIHRoaXMuX2tleVNldCA9IHRoaXMuX3ZhbHVlcy5rZXlTZXQoKTsKICAg
ICAgICAgcmV0dXJuIHRoaXMuX2tleVNldDsKLSAgICB9LAorICAgIH0KIAotICAgIG5leHQ6IGZ1
bmN0aW9uKHN0ciwgcHJlZml4KQorICAgIG5leHQoc3RyLCBwcmVmaXgpCiAgICAgewogICAgICAg
ICByZXR1cm4gdGhpcy5fY2xvc2VzdChzdHIsIHByZWZpeCwgMSk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBwcmV2aW91czogZnVuY3Rpb24oc3RyLCBwcmVmaXgpCisgICAgcHJldmlvdXMoc3RyLCBw
cmVmaXgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fY2xvc2VzdChzdHIsIHByZWZpeCwg
LTEpOwotICAgIH0sCisgICAgfQogCi0gICAgX2Nsb3Nlc3Q6IGZ1bmN0aW9uKHN0ciwgcHJlZml4
LCBzaGlmdCkKKyAgICBfY2xvc2VzdChzdHIsIHByZWZpeCwgc2hpZnQpCiAgICAgewogICAgICAg
ICBpZiAoIXN0cikKICAgICAgICAgICAgIHJldHVybiAiIjsKQEAgLTI1MSwyNSArMjU0LDI3IEBA
IFdlYkluc3BlY3Rvci5DU1NDb21wbGV0aW9ucy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBq
ID0gcHJvcGVydGllc1dpdGhQcmVmaXguaW5kZXhPZihzdHIpOwogICAgICAgICBqID0gKGogKyBw
cm9wZXJ0aWVzV2l0aFByZWZpeC5sZW5ndGggKyBzaGlmdCkgJSBwcm9wZXJ0aWVzV2l0aFByZWZp
eC5sZW5ndGg7CiAgICAgICAgIHJldHVybiBwcm9wZXJ0aWVzV2l0aFByZWZpeFtqXTsKLSAgICB9
LAorICAgIH0KIAotICAgIGlzU2hvcnRoYW5kUHJvcGVydHlOYW1lOiBmdW5jdGlvbihzaG9ydGhh
bmQpCisgICAgaXNTaG9ydGhhbmRQcm9wZXJ0eU5hbWUoc2hvcnRoYW5kKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHNob3J0aGFuZCBpbiB0aGlzLl9sb25naGFuZHM7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBpc0xvbmdoYW5kUHJvcGVydHlOYW1lOiBmdW5jdGlvbihsb25naGFuZCkKKyAgICBpc0xv
bmdoYW5kUHJvcGVydHlOYW1lKGxvbmdoYW5kKQogICAgIHsKICAgICAgICAgcmV0dXJuIGxvbmdo
YW5kIGluIHRoaXMuX3Nob3J0aGFuZHM7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBsb25naGFuZHNG
b3JTaG9ydGhhbmQ6IGZ1bmN0aW9uKHNob3J0aGFuZCkKKyAgICBsb25naGFuZHNGb3JTaG9ydGhh
bmQoc2hvcnRoYW5kKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2xvbmdoYW5kc1tzaG9y
dGhhbmRdIHx8IFtdOwotICAgIH0sCisgICAgfQogCi0gICAgc2hvcnRoYW5kc0ZvckxvbmdoYW5k
OiBmdW5jdGlvbihsb25naGFuZCkKKyAgICBzaG9ydGhhbmRzRm9yTG9uZ2hhbmQobG9uZ2hhbmQp
CiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc2hvcnRoYW5kc1tsb25naGFuZF0gfHwgW107
CiAgICAgfQogfTsKKworV2ViSW5zcGVjdG9yLkNTU0NvbXBsZXRpb25zLmNzc05hbWVDb21wbGV0
aW9ucyA9IG51bGw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Nb2RlbHMvQ1NTTWVkaWEuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Nb2RlbHMvQ1NTTWVkaWEuanMKaW5kZXggYThjNDI4Ny4uYWMyZGVlOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NTU01lZGlhLmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9DU1NNZWRp
YS5qcwpAQCAtMjMsMzYgKzIzLDMwIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkNTU01lZGlhID0gZnVuY3Rpb24odHlwZSwgdGV4dCwg
c291cmNlQ29kZUxvY2F0aW9uKQorV2ViSW5zcGVjdG9yLkNTU01lZGlhID0gY2xhc3MgQ1NTTWVk
aWEgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVj
dC5jYWxsKHRoaXMpOworICAgIGNvbnN0cnVjdG9yKHR5cGUsIHRleHQsIHNvdXJjZUNvZGVMb2Nh
dGlvbikKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CiAKLSAgICB0aGlzLl90eXBlID0gdHlwZSB8
fCBudWxsOwotICAgIHRoaXMuX3RleHQgPSB0ZXh0IHx8ICIiOwotICAgIHRoaXMuX3NvdXJjZUNv
ZGVMb2NhdGlvbiA9IHNvdXJjZUNvZGVMb2NhdGlvbiB8fCBudWxsOwotfTsKKyAgICAgICAgY29u
c29sZS5hc3NlcnQoIXNvdXJjZUNvZGVMb2NhdGlvbiB8fCBzb3VyY2VDb2RlTG9jYXRpb24gaW5z
dGFuY2VvZiBXZWJJbnNwZWN0b3IuU291cmNlQ29kZUxvY2F0aW9uKTsKIAotV2ViSW5zcGVjdG9y
LkNTU01lZGlhLlR5cGUgPSB7Ci0gICAgTWVkaWFSdWxlOiAiY3NzLW1lZGlhLXR5cGUtbWVkaWEt
cnVsZSIsCi0gICAgSW1wb3J0UnVsZTogImNzcy1tZWRpYS10eXBlLWltcG9ydC1ydWxlIiwKLSAg
ICBMaW5rZWRTdHlsZVNoZWV0OiAiY3NzLW1lZGlhLXR5cGUtbGlua2VkLXN0eWxlc2hlZXQiLAot
ICAgIElubGluZVN0eWxlU2hlZXQ6ICJjc3MtbWVkaWEtdHlwZS1pbmxpbmUtc3R5bGVzaGVldCIK
LX07Ci0KLVdlYkluc3BlY3Rvci5DU1NNZWRpYS5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0
b3I6IFdlYkluc3BlY3Rvci5DU1NNZWRpYSwKKyAgICAgICAgdGhpcy5fdHlwZSA9IHR5cGUgfHwg
bnVsbDsKKyAgICAgICAgdGhpcy5fdGV4dCA9IHRleHQgfHwgIiI7CisgICAgICAgIHRoaXMuX3Nv
dXJjZUNvZGVMb2NhdGlvbiA9IHNvdXJjZUNvZGVMb2NhdGlvbiB8fCBudWxsOworICAgIH0KIAog
ICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IHR5cGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRo
aXMuX3R5cGU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgdGV4dCgpCiAgICAgewogICAgICAg
ICByZXR1cm4gdGhpcy5fdGV4dDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzb3VyY2VDb2Rl
TG9jYXRpb24oKQogICAgIHsKQEAgLTYwLDQgKzU0LDkgQEAgV2ViSW5zcGVjdG9yLkNTU01lZGlh
LnByb3RvdHlwZSA9IHsKICAgICB9CiB9OwogCi1XZWJJbnNwZWN0b3IuQ1NTTWVkaWEucHJvdG90
eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOworV2ViSW5zcGVj
dG9yLkNTU01lZGlhLlR5cGUgPSB7CisgICAgTWVkaWFSdWxlOiAiY3NzLW1lZGlhLXR5cGUtbWVk
aWEtcnVsZSIsCisgICAgSW1wb3J0UnVsZTogImNzcy1tZWRpYS10eXBlLWltcG9ydC1ydWxlIiwK
KyAgICBMaW5rZWRTdHlsZVNoZWV0OiAiY3NzLW1lZGlhLXR5cGUtbGlua2VkLXN0eWxlc2hlZXQi
LAorICAgIElubGluZVN0eWxlU2hlZXQ6ICJjc3MtbWVkaWEtdHlwZS1pbmxpbmUtc3R5bGVzaGVl
dCIKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9N
b2RlbHMvQ1NTUHJvcGVydHkuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Nb2RlbHMvQ1NTUHJvcGVydHkuanMKaW5kZXggMGJjOGY5NC4uMjJkNjUwNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NTU1Byb3BlcnR5
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9DU1NQ
cm9wZXJ0eS5qcwpAQCAtMjMsNTAgKzIzLDQxIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkNTU1Byb3BlcnR5ID0gZnVuY3Rpb24oaW5k
ZXgsIHRleHQsIG5hbWUsIHZhbHVlLCBwcmlvcml0eSwgZW5hYmxlZCwgb3ZlcnJpZGRlbiwgaW1w
bGljaXQsIGFub255bW91cywgdmFsaWQsIHN0eWxlU2hlZXRUZXh0UmFuZ2UsIHN0eWxlRGVjbGFy
YXRpb25UZXh0UmFuZ2UpCitXZWJJbnNwZWN0b3IuQ1NTUHJvcGVydHkgPSBjbGFzcyBDU1NQcm9w
ZXJ0eSBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIHsKLSAgICBXZWJJbnNwZWN0b3IuT2Jq
ZWN0LmNhbGwodGhpcyk7CisgICAgY29uc3RydWN0b3IoaW5kZXgsIHRleHQsIG5hbWUsIHZhbHVl
LCBwcmlvcml0eSwgZW5hYmxlZCwgb3ZlcnJpZGRlbiwgaW1wbGljaXQsIGFub255bW91cywgdmFs
aWQsIHN0eWxlU2hlZXRUZXh0UmFuZ2UsIHN0eWxlRGVjbGFyYXRpb25UZXh0UmFuZ2UpCisgICAg
eworICAgICAgICBzdXBlcigpOwogCi0gICAgdGhpcy5fb3duZXJTdHlsZSA9IG51bGw7Ci0gICAg
dGhpcy5faW5kZXggPSBpbmRleDsKKyAgICAgICAgdGhpcy5fb3duZXJTdHlsZSA9IG51bGw7Cisg
ICAgICAgIHRoaXMuX2luZGV4ID0gaW5kZXg7CiAKLSAgICB0aGlzLnVwZGF0ZSh0ZXh0LCBuYW1l
LCB2YWx1ZSwgcHJpb3JpdHksIGVuYWJsZWQsIG92ZXJyaWRkZW4sIGltcGxpY2l0LCBhbm9ueW1v
dXMsIHZhbGlkLCBzdHlsZVNoZWV0VGV4dFJhbmdlLCBzdHlsZURlY2xhcmF0aW9uVGV4dFJhbmdl
LCB0cnVlKTsKLX07Ci0KLVdlYkluc3BlY3Rvci5PYmplY3QuYWRkQ29uc3RydWN0b3JGdW5jdGlv
bnMoV2ViSW5zcGVjdG9yLkNTU1Byb3BlcnR5KTsKLQotV2ViSW5zcGVjdG9yLkNTU1Byb3BlcnR5
LkV2ZW50ID0gewotICAgIENoYW5nZWQ6ICJjc3MtcHJvcGVydHktY2hhbmdlZCIsCi0gICAgT3Zl
cnJpZGRlblN0YXR1c0NoYW5nZWQ6ICJjc3MtcHJvcGVydHktb3ZlcnJpZGRlbi1zdGF0dXMtY2hh
bmdlZCIKLX07Ci0KLVdlYkluc3BlY3Rvci5DU1NQcm9wZXJ0eS5wcm90b3R5cGUgPSB7Ci0gICAg
Y29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5DU1NQcm9wZXJ0eSwKLSAgICBfX3Byb3RvX186IFdl
Ykluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlLAorICAgICAgICB0aGlzLnVwZGF0ZSh0ZXh0LCBu
YW1lLCB2YWx1ZSwgcHJpb3JpdHksIGVuYWJsZWQsIG92ZXJyaWRkZW4sIGltcGxpY2l0LCBhbm9u
eW1vdXMsIHZhbGlkLCBzdHlsZVNoZWV0VGV4dFJhbmdlLCBzdHlsZURlY2xhcmF0aW9uVGV4dFJh
bmdlLCB0cnVlKTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBvd25lclN0eWxl
KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9vd25lclN0eWxlOwotICAgIH0sCisgICAg
fQogCiAgICAgc2V0IG93bmVyU3R5bGUob3duZXJTdHlsZSkKICAgICB7CiAgICAgICAgIHRoaXMu
X293bmVyU3R5bGUgPSBvd25lclN0eWxlIHx8IG51bGw7Ci0gICAgfSwKKyAgICB9CiAKICAgICBn
ZXQgaW5kZXgoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2luZGV4OwotICAgIH0sCisg
ICAgfQogCiAgICAgc2V0IGluZGV4KGluZGV4KQogICAgIHsKICAgICAgICAgdGhpcy5faW5kZXgg
PSBpbmRleDsKLSAgICB9LAorICAgIH0KIAotICAgIHVwZGF0ZTogZnVuY3Rpb24odGV4dCwgbmFt
ZSwgdmFsdWUsIHByaW9yaXR5LCBlbmFibGVkLCBvdmVycmlkZGVuLCBpbXBsaWNpdCwgYW5vbnlt
b3VzLCB2YWxpZCwgc3R5bGVTaGVldFRleHRSYW5nZSwgc3R5bGVEZWNsYXJhdGlvblRleHRSYW5n
ZSwgZG9udEZpcmVFdmVudHMpCisgICAgdXBkYXRlKHRleHQsIG5hbWUsIHZhbHVlLCBwcmlvcml0
eSwgZW5hYmxlZCwgb3ZlcnJpZGRlbiwgaW1wbGljaXQsIGFub255bW91cywgdmFsaWQsIHN0eWxl
U2hlZXRUZXh0UmFuZ2UsIHN0eWxlRGVjbGFyYXRpb25UZXh0UmFuZ2UsIGRvbnRGaXJlRXZlbnRz
KQogICAgIHsKICAgICAgICAgdGV4dCA9IHRleHQgfHwgIiI7CiAgICAgICAgIG5hbWUgPSBuYW1l
IHx8ICIiOwpAQCAtMTE2LDcgKzEwNyw3IEBAIFdlYkluc3BlY3Rvci5DU1NQcm9wZXJ0eS5wcm90
b3R5cGUgPSB7CiAKICAgICAgICAgaWYgKGNoYW5nZWQpCiAgICAgICAgICAgICB0aGlzLmRpc3Bh
dGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuQ1NTUHJvcGVydHkuRXZlbnQuQ2hhbmdl
ZCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc3ludGhlc2l6ZWRUZXh0KCkKICAgICB7CkBA
IC0xMjYsMTcgKzExNywxNyBAQCBXZWJJbnNwZWN0b3IuQ1NTUHJvcGVydHkucHJvdG90eXBlID0g
ewogCiAgICAgICAgIHZhciBwcmlvcml0eSA9IHRoaXMucHJpb3JpdHk7CiAgICAgICAgIHJldHVy
biBuYW1lICsgIjogIiArIHRoaXMudmFsdWUudHJpbSgpICsgKHByaW9yaXR5ID8gIiAhIiArIHBy
aW9yaXR5IDogIiIpICsgIjsiOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHRleHQoKQogICAg
IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3RleHQgfHwgdGhpcy5zeW50aGVzaXplZFRleHQ7Ci0g
ICAgfSwKKyAgICB9CiAKICAgICBnZXQgbmFtZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhp
cy5fbmFtZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBjYW5vbmljYWxOYW1lKCkKICAgICB7
CkBAIC0xNDYsMzIgKzEzNywzMiBAQCBXZWJJbnNwZWN0b3IuQ1NTUHJvcGVydHkucHJvdG90eXBl
ID0gewogICAgICAgICB0aGlzLl9jYW5vbmljYWxOYW1lID0gV2ViSW5zcGVjdG9yLmNzc1N0eWxl
TWFuYWdlci5jYW5vbmljYWxOYW1lRm9yUHJvcGVydHlOYW1lKHRoaXMubmFtZSk7CiAKICAgICAg
ICAgcmV0dXJuIHRoaXMuX2Nhbm9uaWNhbE5hbWU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQg
dmFsdWUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlOwotICAgIH0sCisgICAg
fQogCiAgICAgZ2V0IGltcG9ydGFudCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5wcmlv
cml0eSA9PT0gImltcG9ydGFudCI7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgcHJpb3JpdHko
KQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3ByaW9yaXR5OwotICAgIH0sCisgICAgfQog
CiAgICAgZ2V0IGVuYWJsZWQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2VuYWJsZWQg
JiYgdGhpcy5fb3duZXJTdHlsZSAmJiAoIWlzTmFOKHRoaXMuX2luZGV4KSB8fCB0aGlzLl9vd25l
clN0eWxlLnR5cGUgPT09IFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uLlR5cGUuQ29t
cHV0ZWQpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IG92ZXJyaWRkZW4oKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHRoaXMuX292ZXJyaWRkZW47Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQg
b3ZlcnJpZGRlbihvdmVycmlkZGVuKQogICAgIHsKQEAgLTE5OCwzMiArMTg5LDMyIEBAIFdlYklu
c3BlY3Rvci5DU1NQcm9wZXJ0eS5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICB0
aGlzLl9vdmVycmlkZGVuU3RhdHVzQ2hhbmdlZFRpbWVvdXQgPSBzZXRUaW1lb3V0KGRlbGF5ZWQu
YmluZCh0aGlzKSwgMCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgaW1wbGljaXQoKQogICAg
IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2ltcGxpY2l0OwotICAgIH0sCisgICAgfQogCiAgICAg
Z2V0IGFub255bW91cygpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fYW5vbnltb3VzOwot
ICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGluaGVyaXRlZCgpCiAgICAgewogICAgICAgICByZXR1
cm4gdGhpcy5faW5oZXJpdGVkOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHZhbGlkKCkKICAg
ICB7CiAgICAgICAgIHJldHVybiB0aGlzLl92YWxpZDsKLSAgICB9LAorICAgIH0KIAogICAgIGdl
dCBzdHlsZVNoZWV0VGV4dFJhbmdlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zdHls
ZVNoZWV0VGV4dFJhbmdlOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHN0eWxlRGVjbGFyYXRp
b25UZXh0UmFuZ2UoKQogICAgIHsKQEAgLTI1MSwzNCArMjQyLDM0IEBAIFdlYkluc3BlY3Rvci5D
U1NQcm9wZXJ0eS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3N0eWxlRGVjbGFyYXRpb25U
ZXh0UmFuZ2UgPSBuZXcgV2ViSW5zcGVjdG9yLlRleHRSYW5nZShzdGFydExpbmUsIHN0YXJ0Q29s
dW1uLCBlbmRMaW5lLCBlbmRDb2x1bW4pOwogCiAgICAgICAgIHJldHVybiB0aGlzLl9zdHlsZURl
Y2xhcmF0aW9uVGV4dFJhbmdlOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHJlbGF0ZWRTaG9y
dGhhbmRQcm9wZXJ0eSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcmVsYXRlZFNob3J0
aGFuZFByb3BlcnR5OwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IHJlbGF0ZWRTaG9ydGhhbmRQ
cm9wZXJ0eShwcm9wZXJ0eSkKICAgICB7CiAgICAgICAgIHRoaXMuX3JlbGF0ZWRTaG9ydGhhbmRQ
cm9wZXJ0eSA9IHByb3BlcnR5IHx8IG51bGw7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgcmVs
YXRlZExvbmdoYW5kUHJvcGVydGllcygpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcmVs
YXRlZExvbmdoYW5kUHJvcGVydGllczsKLSAgICB9LAorICAgIH0KIAotICAgIGFkZFJlbGF0ZWRM
b25naGFuZFByb3BlcnR5OiBmdW5jdGlvbihwcm9wZXJ0eSkKKyAgICBhZGRSZWxhdGVkTG9uZ2hh
bmRQcm9wZXJ0eShwcm9wZXJ0eSkKICAgICB7CiAgICAgICAgIHRoaXMuX3JlbGF0ZWRMb25naGFu
ZFByb3BlcnRpZXMucHVzaChwcm9wZXJ0eSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjbGVhclJl
bGF0ZWRMb25naGFuZFByb3BlcnRpZXM6IGZ1bmN0aW9uKHByb3BlcnR5KQorICAgIGNsZWFyUmVs
YXRlZExvbmdoYW5kUHJvcGVydGllcyhwcm9wZXJ0eSkKICAgICB7CiAgICAgICAgIHRoaXMuX3Jl
bGF0ZWRMb25naGFuZFByb3BlcnRpZXMgPSBbXTsKLSAgICB9LAorICAgIH0KIAotICAgIGhhc090
aGVyVmVuZG9yTmFtZU9yS2V5d29yZDogZnVuY3Rpb24oKQorICAgIGhhc090aGVyVmVuZG9yTmFt
ZU9yS2V5d29yZCgpCiAgICAgewogICAgICAgICBpZiAoIl9oYXNPdGhlclZlbmRvck5hbWVPcktl
eXdvcmQiIGluIHRoaXMpCiAgICAgICAgICAgICByZXR1cm4gdGhpcy5faGFzT3RoZXJWZW5kb3JO
YW1lT3JLZXl3b3JkOwpAQCAtMjg4LDMgKzI3OSw4IEBAIFdlYkluc3BlY3Rvci5DU1NQcm9wZXJ0
eS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiB0aGlzLl9oYXNPdGhlclZlbmRvck5hbWVP
cktleXdvcmQ7CiAgICAgfQogfTsKKworV2ViSW5zcGVjdG9yLkNTU1Byb3BlcnR5LkV2ZW50ID0g
eworICAgIENoYW5nZWQ6ICJjc3MtcHJvcGVydHktY2hhbmdlZCIsCisgICAgT3ZlcnJpZGRlblN0
YXR1c0NoYW5nZWQ6ICJjc3MtcHJvcGVydHktb3ZlcnJpZGRlbi1zdGF0dXMtY2hhbmdlZCIKK307
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMv
Q1NTUnVsZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9D
U1NSdWxlLmpzCmluZGV4IDBkODc0MTAuLjZmMzg3M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9DU1NSdWxlLmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9DU1NSdWxlLmpzCkBAIC0yMyw1NCAr
MjMsNDAgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJ
bnNwZWN0b3IuQ1NTUnVsZSA9IGZ1bmN0aW9uKG5vZGVTdHlsZXMsIG93bmVyU3R5bGVTaGVldCwg
aWQsIHR5cGUsIHNvdXJjZUNvZGVMb2NhdGlvbiwgc2VsZWN0b3JUZXh0LCBzZWxlY3RvcnMsIG1h
dGNoZWRTZWxlY3RvckluZGljZXMsIHN0eWxlLCBtZWRpYUxpc3QpCitXZWJJbnNwZWN0b3IuQ1NT
UnVsZSA9IGNsYXNzIENTU1J1bGUgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0gICAg
V2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIGNvbnN0cnVjdG9yKG5vZGVTdHls
ZXMsIG93bmVyU3R5bGVTaGVldCwgaWQsIHR5cGUsIHNvdXJjZUNvZGVMb2NhdGlvbiwgc2VsZWN0
b3JUZXh0LCBzZWxlY3RvcnMsIG1hdGNoZWRTZWxlY3RvckluZGljZXMsIHN0eWxlLCBtZWRpYUxp
c3QpCisgICAgeworICAgICAgICBzdXBlcigpOwogCi0gICAgY29uc29sZS5hc3NlcnQobm9kZVN0
eWxlcyk7Ci0gICAgdGhpcy5fbm9kZVN0eWxlcyA9IG5vZGVTdHlsZXM7CisgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KG5vZGVTdHlsZXMpOworICAgICAgICB0aGlzLl9ub2RlU3R5bGVzID0gbm9kZVN0
eWxlczsKIAotICAgIHRoaXMuX293bmVyU3R5bGVTaGVldCA9IG93bmVyU3R5bGVTaGVldCB8fCBu
dWxsOwotICAgIHRoaXMuX2lkID0gaWQgfHwgbnVsbDsKLSAgICB0aGlzLl90eXBlID0gdHlwZSB8
fCBudWxsOworICAgICAgICB0aGlzLl9vd25lclN0eWxlU2hlZXQgPSBvd25lclN0eWxlU2hlZXQg
fHwgbnVsbDsKKyAgICAgICAgdGhpcy5faWQgPSBpZCB8fCBudWxsOworICAgICAgICB0aGlzLl90
eXBlID0gdHlwZSB8fCBudWxsOwogCi0gICAgdGhpcy51cGRhdGUoc291cmNlQ29kZUxvY2F0aW9u
LCBzZWxlY3RvclRleHQsIHNlbGVjdG9ycywgbWF0Y2hlZFNlbGVjdG9ySW5kaWNlcywgc3R5bGUs
IG1lZGlhTGlzdCwgdHJ1ZSk7Ci19OwotCi1XZWJJbnNwZWN0b3IuT2JqZWN0LmFkZENvbnN0cnVj
dG9yRnVuY3Rpb25zKFdlYkluc3BlY3Rvci5DU1NSdWxlKTsKLQotV2ViSW5zcGVjdG9yLkNTU1J1
bGUuRXZlbnQgPSB7Ci0gICAgQ2hhbmdlZDogImNzcy1ydWxlLWNoYW5nZWQiCi19OwotCi1XZWJJ
bnNwZWN0b3IuQ1NTUnVsZS5UeXBlID0gewotICAgIEF1dGhvcjogImNzcy1ydWxlLXR5cGUtYXV0
aG9yIiwKLSAgICBVc2VyOiAiY3NzLXJ1bGUtdHlwZS11c2VyIiwKLSAgICBVc2VyQWdlbnQ6ICJj
c3MtcnVsZS10eXBlLXVzZXItYWdlbnQiLAotICAgIEluc3BlY3RvcjogImNzcy1ydWxlLXR5cGUt
aW5zcGVjdG9yIgotfTsKLQotV2ViSW5zcGVjdG9yLkNTU1J1bGUucHJvdG90eXBlID0gewotICAg
IGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuQ1NTUnVsZSwKKyAgICAgICAgdGhpcy51cGRhdGUo
c291cmNlQ29kZUxvY2F0aW9uLCBzZWxlY3RvclRleHQsIHNlbGVjdG9ycywgbWF0Y2hlZFNlbGVj
dG9ySW5kaWNlcywgc3R5bGUsIG1lZGlhTGlzdCwgdHJ1ZSk7CisgICAgfQogCiAgICAgLy8gUHVi
bGljCiAKICAgICBnZXQgaWQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2lkOwotICAg
IH0sCisgICAgfQogCiAgICAgZ2V0IG93bmVyU3R5bGVTaGVldCgpCiAgICAgewogICAgICAgICBy
ZXR1cm4gdGhpcy5fb3duZXJTdHlsZVNoZWV0OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGVk
aXRhYmxlKCkKICAgICB7CiAgICAgICAgIHJldHVybiAhIXRoaXMuX2lkICYmICh0aGlzLl90eXBl
ID09PSBXZWJJbnNwZWN0b3IuQ1NTUnVsZS5UeXBlLkF1dGhvciB8fCB0aGlzLl90eXBlID09PSBX
ZWJJbnNwZWN0b3IuQ1NTUnVsZS5UeXBlLkluc3BlY3Rvcik7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICB1cGRhdGU6IGZ1bmN0aW9uKHNvdXJjZUNvZGVMb2NhdGlvbiwgc2VsZWN0b3JUZXh0LCBzZWxl
Y3RvcnMsIG1hdGNoZWRTZWxlY3RvckluZGljZXMsIHN0eWxlLCBtZWRpYUxpc3QsIGRvbnRGaXJl
RXZlbnRzKQorICAgIHVwZGF0ZShzb3VyY2VDb2RlTG9jYXRpb24sIHNlbGVjdG9yVGV4dCwgc2Vs
ZWN0b3JzLCBtYXRjaGVkU2VsZWN0b3JJbmRpY2VzLCBzdHlsZSwgbWVkaWFMaXN0LCBkb250Rmly
ZUV2ZW50cykKICAgICB7CiAgICAgICAgIHNvdXJjZUNvZGVMb2NhdGlvbiA9IHNvdXJjZUNvZGVM
b2NhdGlvbiB8fCBudWxsOwogICAgICAgICBzZWxlY3RvclRleHQgPSBzZWxlY3RvclRleHQgfHwg
IiI7CkBAIC0xMDUsMjIgKzkxLDIyIEBAIFdlYkluc3BlY3Rvci5DU1NSdWxlLnByb3RvdHlwZSA9
IHsKIAogICAgICAgICBpZiAoY2hhbmdlZCkKICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVu
dFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5DU1NSdWxlLkV2ZW50LkNoYW5nZWQpOwotICAgIH0s
CisgICAgfQogCiAgICAgZ2V0IHR5cGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3R5
cGU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc291cmNlQ29kZUxvY2F0aW9uKCkKICAgICB7
CiAgICAgICAgIHJldHVybiB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb247Ci0gICAgfSwKKyAgICB9
CiAKICAgICBnZXQgc2VsZWN0b3JUZXh0KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9z
ZWxlY3RvclRleHQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgc2VsZWN0b3JUZXh0KHNlbGVj
dG9yVGV4dCkKICAgICB7CkBAIC0xMzIsMTcgKzExOCwxNyBAQCBXZWJJbnNwZWN0b3IuQ1NTUnVs
ZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgdGhpcy5fbm9k
ZVN0eWxlcy5jaGFuZ2VSdWxlU2VsZWN0b3IodGhpcywgc2VsZWN0b3JUZXh0KTsKLSAgICB9LAor
ICAgIH0KIAogICAgIGdldCBzZWxlY3RvcnMoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMu
X3NlbGVjdG9yczsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBtYXRjaGVkU2VsZWN0b3JJbmRp
Y2VzKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9tYXRjaGVkU2VsZWN0b3JJbmRpY2Vz
OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IG1hdGNoZWRTZWxlY3RvcnMoKQogICAgIHsKQEAg
LTE2MCw3ICsxNDYsNyBAQCBXZWJJbnNwZWN0b3IuQ1NTUnVsZS5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIH0sIHRoaXMpOwogCiAgICAgICAgIHJldHVybiB0aGlzLl9tYXRjaGVkU2VsZWN0b3JzOwot
ICAgIH0sCisgICAgfQogCiAgICAgZ2V0IG1hdGNoZWRTZWxlY3RvclRleHQoKQogICAgIHsKQEAg
LTE3NiwyNSArMTYyLDI1IEBAIFdlYkluc3BlY3Rvci5DU1NSdWxlLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgdGhpcy5fbWF0Y2hlZFNlbGVjdG9yVGV4dCA9IHRoaXMubWF0Y2hlZFNlbGVjdG9ycy5t
YXAoZnVuY3Rpb24oeCkgeyByZXR1cm4geC50ZXh0OyB9KS5qb2luKCIsICIpOwogCiAgICAgICAg
IHJldHVybiB0aGlzLl9tYXRjaGVkU2VsZWN0b3JUZXh0OwotICAgIH0sCisgICAgfQogCiAgICAg
Z2V0IHN0eWxlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zdHlsZTsKLSAgICB9LAor
ICAgIH0KIAogICAgIGdldCBtZWRpYUxpc3QoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMu
X21lZGlhTGlzdDsKLSAgICB9LAorICAgIH0KIAotICAgIGlzRXF1YWxUbzogZnVuY3Rpb24ocnVs
ZSkKKyAgICBpc0VxdWFsVG8ocnVsZSkKICAgICB7CiAgICAgICAgIGlmICghcnVsZSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICByZXR1cm4gT2JqZWN0LnNoYWxsb3dFcXVh
bCh0aGlzLl9pZCwgcnVsZS5pZCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcm90ZWN0ZWQK
IApAQCAtMjA0LDQgKzE5MCwxMyBAQCBXZWJJbnNwZWN0b3IuQ1NTUnVsZS5wcm90b3R5cGUgPSB7
CiAgICAgfQogfTsKIAotV2ViSW5zcGVjdG9yLkNTU1J1bGUucHJvdG90eXBlLl9fcHJvdG9fXyA9
IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOworV2ViSW5zcGVjdG9yLkNTU1J1bGUuRXZl
bnQgPSB7CisgICAgQ2hhbmdlZDogImNzcy1ydWxlLWNoYW5nZWQiCit9OworCitXZWJJbnNwZWN0
b3IuQ1NTUnVsZS5UeXBlID0geworICAgIEF1dGhvcjogImNzcy1ydWxlLXR5cGUtYXV0aG9yIiwK
KyAgICBVc2VyOiAiY3NzLXJ1bGUtdHlwZS11c2VyIiwKKyAgICBVc2VyQWdlbnQ6ICJjc3MtcnVs
ZS10eXBlLXVzZXItYWdlbnQiLAorICAgIEluc3BlY3RvcjogImNzcy1ydWxlLXR5cGUtaW5zcGVj
dG9yIgorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L01vZGVscy9DU1NTZWxlY3Rvci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01vZGVscy9DU1NTZWxlY3Rvci5qcwppbmRleCBmZjI5NzBiLi40YTYyNjIzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTU2VsZWN0
b3IuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NT
U1NlbGVjdG9yLmpzCkBAIC0yMywzMiArMjMsMzAgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3IgPSBmdW5jdGlvbih0
ZXh0LCBzcGVjaWZpY2l0eSwgZHluYW1pYykKK1dlYkluc3BlY3Rvci5DU1NTZWxlY3RvciA9IGNs
YXNzIENTU1NlbGVjdG9yIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogewotICAgIFdlYklu
c3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICBjb25zdHJ1Y3Rvcih0ZXh0LCBzcGVjaWZp
Y2l0eSwgZHluYW1pYykKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CiAKLSAgICBjb25zb2xlLmFz
c2VydCh0ZXh0KTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGV4dCk7CiAKLSAgICB0aGlzLl90
ZXh0ID0gdGV4dDsKLSAgICB0aGlzLl9zcGVjaWZpY2l0eSA9IHNwZWNpZmljaXR5IHx8IG51bGw7
Ci0gICAgdGhpcy5fZHluYW1pYyA9IGR5bmFtaWMgfHwgZmFsc2U7Ci19OwotCi1XZWJJbnNwZWN0
b3IuQ1NTU2VsZWN0b3IucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0
b3IuQ1NTU2VsZWN0b3IsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3Rv
dHlwZSwKKyAgICAgICAgdGhpcy5fdGV4dCA9IHRleHQ7CisgICAgICAgIHRoaXMuX3NwZWNpZmlj
aXR5ID0gc3BlY2lmaWNpdHkgfHwgbnVsbDsKKyAgICAgICAgdGhpcy5fZHluYW1pYyA9IGR5bmFt
aWMgfHwgZmFsc2U7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgdGV4dCgpCiAg
ICAgewogICAgICAgICByZXR1cm4gdGhpcy5fdGV4dDsKLSAgICB9LAorICAgIH0KIAogICAgIGdl
dCBzcGVjaWZpY2l0eSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc3BlY2lmaWNpdHk7
Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgZHluYW1pYygpCiAgICAgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NTU1N0eWxlRGVjbGFy
YXRpb24uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ1NT
U3R5bGVEZWNsYXJhdGlvbi5qcwppbmRleCBlYzA1OWUxLi5mYjBjNjNlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTU3R5bGVEZWNsYXJh
dGlvbi5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMv
Q1NTU3R5bGVEZWNsYXJhdGlvbi5qcwpAQCAtMjMsNzAgKzIzLDU1IEBACiAgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFy
YXRpb24gPSBmdW5jdGlvbihub2RlU3R5bGVzLCBvd25lclN0eWxlU2hlZXQsIGlkLCB0eXBlLCBu
b2RlLCBpbmhlcml0ZWQsIHRleHQsIHByb3BlcnRpZXMsIHN0eWxlU2hlZXRUZXh0UmFuZ2UpCitX
ZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvbiA9IGNsYXNzIENTU1N0eWxlRGVjbGFyYXRp
b24gZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVj
dC5jYWxsKHRoaXMpOworICAgIGNvbnN0cnVjdG9yKG5vZGVTdHlsZXMsIG93bmVyU3R5bGVTaGVl
dCwgaWQsIHR5cGUsIG5vZGUsIGluaGVyaXRlZCwgdGV4dCwgcHJvcGVydGllcywgc3R5bGVTaGVl
dFRleHRSYW5nZSkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CiAKLSAgICBjb25zb2xlLmFzc2Vy
dChub2RlU3R5bGVzKTsKLSAgICB0aGlzLl9ub2RlU3R5bGVzID0gbm9kZVN0eWxlczsKKyAgICAg
ICAgY29uc29sZS5hc3NlcnQobm9kZVN0eWxlcyk7CisgICAgICAgIHRoaXMuX25vZGVTdHlsZXMg
PSBub2RlU3R5bGVzOwogCi0gICAgdGhpcy5fb3duZXJSdWxlID0gbnVsbDsKKyAgICAgICAgdGhp
cy5fb3duZXJSdWxlID0gbnVsbDsKIAotICAgIHRoaXMuX293bmVyU3R5bGVTaGVldCA9IG93bmVy
U3R5bGVTaGVldCB8fCBudWxsOwotICAgIHRoaXMuX2lkID0gaWQgfHwgbnVsbDsKLSAgICB0aGlz
Ll90eXBlID0gdHlwZSB8fCBudWxsOwotICAgIHRoaXMuX25vZGUgPSBub2RlIHx8IG51bGw7Ci0g
ICAgdGhpcy5faW5oZXJpdGVkID0gaW5oZXJpdGVkIHx8IGZhbHNlOworICAgICAgICB0aGlzLl9v
d25lclN0eWxlU2hlZXQgPSBvd25lclN0eWxlU2hlZXQgfHwgbnVsbDsKKyAgICAgICAgdGhpcy5f
aWQgPSBpZCB8fCBudWxsOworICAgICAgICB0aGlzLl90eXBlID0gdHlwZSB8fCBudWxsOworICAg
ICAgICB0aGlzLl9ub2RlID0gbm9kZSB8fCBudWxsOworICAgICAgICB0aGlzLl9pbmhlcml0ZWQg
PSBpbmhlcml0ZWQgfHwgZmFsc2U7CiAKLSAgICB0aGlzLl9wZW5kaW5nUHJvcGVydGllcyA9IFtd
OwotICAgIHRoaXMuX3Byb3BlcnR5TmFtZU1hcCA9IHt9OworICAgICAgICB0aGlzLl9wZW5kaW5n
UHJvcGVydGllcyA9IFtdOworICAgICAgICB0aGlzLl9wcm9wZXJ0eU5hbWVNYXAgPSB7fTsKIAot
ICAgIHRoaXMudXBkYXRlKHRleHQsIHByb3BlcnRpZXMsIHN0eWxlU2hlZXRUZXh0UmFuZ2UsIHRy
dWUpOwotfTsKLQotV2ViSW5zcGVjdG9yLk9iamVjdC5hZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhX
ZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvbik7Ci0KLVdlYkluc3BlY3Rvci5DU1NTdHls
ZURlY2xhcmF0aW9uLkV2ZW50ID0gewotICAgIFByb3BlcnRpZXNDaGFuZ2VkOiAiY3NzLXN0eWxl
LWRlY2xhcmF0aW9uLXByb3BlcnRpZXMtY2hhbmdlZCIKLX07Ci0KLVdlYkluc3BlY3Rvci5DU1NT
dHlsZURlY2xhcmF0aW9uLlR5cGUgPSB7Ci0gICAgUnVsZTogImNzcy1zdHlsZS1kZWNsYXJhdGlv
bi10eXBlLXJ1bGUiLAotICAgIElubGluZTogImNzcy1zdHlsZS1kZWNsYXJhdGlvbi10eXBlLWlu
bGluZSIsCi0gICAgQXR0cmlidXRlOiAiY3NzLXN0eWxlLWRlY2xhcmF0aW9uLXR5cGUtYXR0cmli
dXRlIiwKLSAgICBDb21wdXRlZDogImNzcy1zdHlsZS1kZWNsYXJhdGlvbi10eXBlLWNvbXB1dGVk
IgotfTsKLQotV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb24ucHJvdG90eXBlID0gewot
ICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvbiwKLSAgICBf
X3Byb3RvX186IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlLAorICAgICAgICB0aGlzLnVw
ZGF0ZSh0ZXh0LCBwcm9wZXJ0aWVzLCBzdHlsZVNoZWV0VGV4dFJhbmdlLCB0cnVlKTsKKyAgICB9
CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBpZCgpCiAgICAgewogICAgICAgICByZXR1cm4g
dGhpcy5faWQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgb3duZXJTdHlsZVNoZWV0KCkKICAg
ICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9vd25lclN0eWxlU2hlZXQ7Ci0gICAgfSwKKyAgICB9
CiAKICAgICBnZXQgdHlwZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fdHlwZTsKLSAg
ICB9LAorICAgIH0KIAogICAgIGdldCBpbmhlcml0ZWQoKQogICAgIHsKICAgICAgICAgcmV0dXJu
IHRoaXMuX2luaGVyaXRlZDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBub2RlKCkKICAgICB7
CiAgICAgICAgIHJldHVybiB0aGlzLl9ub2RlOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGVk
aXRhYmxlKCkKICAgICB7CkBAIC0xMDAsOSArODUsOSBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVE
ZWNsYXJhdGlvbi5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm4gIXRoaXMuX25vZGUu
aXNJblNoYWRvd1RyZWUoKTsKIAogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICB1cGRhdGU6IGZ1bmN0aW9uKHRleHQsIHByb3BlcnRpZXMsIHN0eWxlU2hlZXRUZXh0
UmFuZ2UsIGRvbnRGaXJlRXZlbnRzKQorICAgIHVwZGF0ZSh0ZXh0LCBwcm9wZXJ0aWVzLCBzdHls
ZVNoZWV0VGV4dFJhbmdlLCBkb250RmlyZUV2ZW50cykKICAgICB7CiAgICAgICAgIHRleHQgPSB0
ZXh0IHx8ICIiOwogICAgICAgICBwcm9wZXJ0aWVzID0gcHJvcGVydGllcyB8fCBbXTsKQEAgLTE3
NiwyMiArMTYxLDIyIEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uLnByb3RvdHlw
ZSA9IHsKIAogICAgICAgICAvLyBEZWxheSBmaXJpbmcgdGhlIFByb3BlcnRpZXNDaGFuZ2VkIGV2
ZW50IHNvIERPTU5vZGVTdHlsZXMgaGFzIGEgY2hhbmNlIHRvIG1hcmsgb3ZlcnJpZGRlbiBhbmQg
YXNzb2NpYXRlZCBwcm9wZXJ0aWVzLgogICAgICAgICBzZXRUaW1lb3V0KGRlbGF5ZWQuYmluZCh0
aGlzKSwgMCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgb3duZXJSdWxlKCkKICAgICB7CiAg
ICAgICAgIHJldHVybiB0aGlzLl9vd25lclJ1bGU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQg
b3duZXJSdWxlKHJ1bGUpCiAgICAgewogICAgICAgICB0aGlzLl9vd25lclJ1bGUgPSBydWxlIHx8
IG51bGw7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgdGV4dCgpCiAgICAgewogICAgICAgICBy
ZXR1cm4gdGhpcy5fdGV4dDsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCB0ZXh0KHRleHQpCiAg
ICAgewpAQCAtMTk5LDEyICsxODQsMTIgQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRp
b24ucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMuX25v
ZGVTdHlsZXMuY2hhbmdlU3R5bGVUZXh0KHRoaXMsIHRleHQpOwotICAgIH0sCisgICAgfQogCiAg
ICAgZ2V0IHByb3BlcnRpZXMoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3Byb3BlcnRp
ZXM7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgdmlzaWJsZVByb3BlcnRpZXMoKQogICAgIHsK
QEAgLTIxNiwxOSArMjAxLDE5IEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgfSk7CiAKICAgICAgICAgcmV0dXJuIHRoaXMuX3Zpc2libGVQ
cm9wZXJ0aWVzOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHBlbmRpbmdQcm9wZXJ0aWVzKCkK
ICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9wZW5kaW5nUHJvcGVydGllczsKLSAgICB9LAor
ICAgIH0KIAogICAgIGdldCBzdHlsZVNoZWV0VGV4dFJhbmdlKCkKICAgICB7CiAgICAgICAgIHJl
dHVybiB0aGlzLl9zdHlsZVNoZWV0VGV4dFJhbmdlOwotICAgIH0sCisgICAgfQogCi0gICAgcHJv
cGVydHlGb3JOYW1lOiBmdW5jdGlvbihuYW1lLCBkb250Q3JlYXRlSWZNaXNzaW5nKQorICAgIHBy
b3BlcnR5Rm9yTmFtZShuYW1lLCBkb250Q3JlYXRlSWZNaXNzaW5nKQogICAgIHsKICAgICAgICAg
Y29uc29sZS5hc3NlcnQobmFtZSk7CiAgICAgICAgIGlmICghbmFtZSkKQEAgLTI3Myw3ICsyNTgs
NyBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvbi5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIHRoaXMuX3BlbmRpbmdQcm9wZXJ0aWVzLnB1c2gobmV3UHJvcGVydHkpOwogCiAgICAgICAg
IHJldHVybiBuZXdQcm9wZXJ0eTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByb3RlY3RlZAog
CkBAIC0yODIsMyArMjY3LDE0IEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX25vZGVTdHlsZXM7CiAgICAgfQogfTsK
KworV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb24uRXZlbnQgPSB7CisgICAgUHJvcGVy
dGllc0NoYW5nZWQ6ICJjc3Mtc3R5bGUtZGVjbGFyYXRpb24tcHJvcGVydGllcy1jaGFuZ2VkIgor
fTsKKworV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb24uVHlwZSA9IHsKKyAgICBSdWxl
OiAiY3NzLXN0eWxlLWRlY2xhcmF0aW9uLXR5cGUtcnVsZSIsCisgICAgSW5saW5lOiAiY3NzLXN0
eWxlLWRlY2xhcmF0aW9uLXR5cGUtaW5saW5lIiwKKyAgICBBdHRyaWJ1dGU6ICJjc3Mtc3R5bGUt
ZGVjbGFyYXRpb24tdHlwZS1hdHRyaWJ1dGUiLAorICAgIENvbXB1dGVkOiAiY3NzLXN0eWxlLWRl
Y2xhcmF0aW9uLXR5cGUtY29tcHV0ZWQiCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NTU1N0eWxlU2hlZXQuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTU3R5bGVTaGVldC5qcwppbmRleCAw
ZmUzMjI3Li42YzljNmI5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvTW9kZWxzL0NTU1N0eWxlU2hlZXQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NTU1N0eWxlU2hlZXQuanMKQEAgLTIzLDYyICsyMyw1
NCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3Bl
Y3Rvci5DU1NTdHlsZVNoZWV0ID0gZnVuY3Rpb24oaWQsIHVybCwgcGFyZW50RnJhbWUpCitXZWJJ
bnNwZWN0b3IuQ1NTU3R5bGVTaGVldCA9IGNsYXNzIENTU1N0eWxlU2hlZXQgZXh0ZW5kcyBXZWJJ
bnNwZWN0b3IuU291cmNlQ29kZQogewotICAgIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlLmNhbGwo
dGhpcyk7CisgICAgY29uc3RydWN0b3IoaWQsIHVybCwgcGFyZW50RnJhbWUpCisgICAgeworICAg
ICAgICBzdXBlcigpOwogCi0gICAgY29uc29sZS5hc3NlcnQoaWQpOworICAgICAgICBjb25zb2xl
LmFzc2VydChpZCk7CiAKLSAgICB0aGlzLl9pZCA9IGlkIHx8IG51bGw7CisgICAgICAgIHRoaXMu
X2lkID0gaWQgfHwgbnVsbDsKIAotICAgIHRoaXMudXBkYXRlSW5mbyh1cmwsIHBhcmVudEZyYW1l
KTsKLX07CisgICAgICAgIHRoaXMudXBkYXRlSW5mbyh1cmwsIHBhcmVudEZyYW1lKTsKKyAgICB9
CiAKLVdlYkluc3BlY3Rvci5PYmplY3QuYWRkQ29uc3RydWN0b3JGdW5jdGlvbnMoV2ViSW5zcGVj
dG9yLkNTU1N0eWxlU2hlZXQpOworICAgIC8vIFN0YXRpYwogCi1XZWJJbnNwZWN0b3IuQ1NTU3R5
bGVTaGVldC5yZXNldFVuaXF1ZURpc3BsYXlOYW1lTnVtYmVycyA9IGZ1bmN0aW9uKCkKLXsKLSAg
ICBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVTaGVldC5fbmV4dFVuaXF1ZURpc3BsYXlOYW1lTnVtYmVy
ID0gMTsKLX07Ci0KLVdlYkluc3BlY3Rvci5DU1NTdHlsZVNoZWV0Ll9uZXh0VW5pcXVlRGlzcGxh
eU5hbWVOdW1iZXIgPSAxOwotCi1XZWJJbnNwZWN0b3IuQ1NTU3R5bGVTaGVldC5FdmVudCA9IHsK
LSAgICBDb250ZW50RGlkQ2hhbmdlOiAic3R5bGVzaGVldC1jb250ZW50LWRpZC1jaGFuZ2UiCi19
OwotCi1XZWJJbnNwZWN0b3IuQ1NTU3R5bGVTaGVldC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3Ry
dWN0b3I6IFdlYkluc3BlY3Rvci5DU1NTdHlsZVNoZWV0LAotICAgIF9fcHJvdG9fXzogV2ViSW5z
cGVjdG9yLlNvdXJjZUNvZGUucHJvdG90eXBlLAorICAgIHN0YXRpYyByZXNldFVuaXF1ZURpc3Bs
YXlOYW1lTnVtYmVycygpCisgICAgeworICAgICAgICBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVTaGVl
dC5fbmV4dFVuaXF1ZURpc3BsYXlOYW1lTnVtYmVyID0gMTsKKyAgICB9CiAKICAgICAvLyBQdWJs
aWMKIAogICAgIGdldCBpZCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5faWQ7Ci0gICAg
fSwKKyAgICB9CiAKICAgICBnZXQgcGFyZW50RnJhbWUoKQogICAgIHsKICAgICAgICAgcmV0dXJu
IHRoaXMuX3BhcmVudEZyYW1lOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHVybCgpCiAgICAg
ewogICAgICAgICByZXR1cm4gdGhpcy5fdXJsOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHVy
bENvbXBvbmVudHMoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl91cmxDb21wb25lbnRzKQog
ICAgICAgICAgICAgdGhpcy5fdXJsQ29tcG9uZW50cyA9IHBhcnNlVVJMKHRoaXMuX3VybCk7CiAg
ICAgICAgIHJldHVybiB0aGlzLl91cmxDb21wb25lbnRzOwotICAgIH0sCisgICAgfQogCiAgICAg
Z2V0IG1pbWVUeXBlKCkKICAgICB7CiAgICAgICAgIHJldHVybiAidGV4dC9jc3MiOwotICAgIH0s
CisgICAgfQogCiAgICAgZ2V0IGRpc3BsYXlOYW1lKCkKICAgICB7CkBAIC05MCwyNCArODIsMjQg
QEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlU2hlZXQucHJvdG90eXBlID0gewogICAgICAgICAgICAg
dGhpcy5fdW5pcXVlRGlzcGxheU5hbWVOdW1iZXIgPSB0aGlzLmNvbnN0cnVjdG9yLl9uZXh0VW5p
cXVlRGlzcGxheU5hbWVOdW1iZXIrKzsKIAogICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJBbm9ueW1vdXMgU3R5bGVTaGVldCAlZCIpLmZvcm1hdCh0aGlzLl91bmlxdWVEaXNw
bGF5TmFtZU51bWJlcik7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcm90ZWN0ZWQKIAotICAg
IHVwZGF0ZUluZm86IGZ1bmN0aW9uKHVybCwgcGFyZW50RnJhbWUpCisgICAgdXBkYXRlSW5mbyh1
cmwsIHBhcmVudEZyYW1lKQogICAgIHsKICAgICAgICAgdGhpcy5fdXJsID0gdXJsIHx8IG51bGw7
CiAgICAgICAgIGRlbGV0ZSB0aGlzLl91cmxDb21wb25lbnRzOwogCiAgICAgICAgIHRoaXMuX3Bh
cmVudEZyYW1lID0gcGFyZW50RnJhbWUgfHwgbnVsbDsKLSAgICB9LAorICAgIH0KIAogICAgIGdl
dCByZXZpc2lvbkZvclJlcXVlc3RlZENvbnRlbnQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRo
aXMuY3VycmVudFJldmlzaW9uOwotICAgIH0sCisgICAgfQogCi0gICAgaGFuZGxlQ3VycmVudFJl
dmlzaW9uQ29udGVudENoYW5nZTogZnVuY3Rpb24oKQorICAgIGhhbmRsZUN1cnJlbnRSZXZpc2lv
bkNvbnRlbnRDaGFuZ2UoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9pZCkKICAgICAgICAg
ICAgIHJldHVybjsKQEAgLTEyNSw5ICsxMTcsOSBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVTaGVl
dC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2lnbm9yZU5leHRDb250ZW50RGlkQ2hhbmdl
Tm90aWZpY2F0aW9uID0gdHJ1ZTsKIAogICAgICAgICBDU1NBZ2VudC5zZXRTdHlsZVNoZWV0VGV4
dCh0aGlzLl9pZCwgdGhpcy5jdXJyZW50UmV2aXNpb24uY29udGVudCwgY29udGVudERpZENoYW5n
ZS5iaW5kKHRoaXMpKTsKLSAgICB9LAorICAgIH0KIAotICAgIHJlcXVlc3RDb250ZW50RnJvbUJh
Y2tlbmQ6IGZ1bmN0aW9uKCkKKyAgICByZXF1ZXN0Q29udGVudEZyb21CYWNrZW5kKCkKICAgICB7
CiAgICAgICAgIGlmICghdGhpcy5faWQpIHsKICAgICAgICAgICAgIC8vIFRoZXJlIGlzIG5vIGlk
ZW50aWZpZXIgdG8gcmVxdWVzdCBjb250ZW50IHdpdGguIFJlamVjdCB0aGUgcHJvbWlzZSB0byBj
YXVzZSB0aGUKQEAgLTEzNiw5ICsxMjgsOSBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVTaGVldC5w
cm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gQ1NTQWdlbnQuZ2V0U3R5
bGVTaGVldFRleHQodGhpcy5faWQpOwotICAgIH0sCisgICAgfQogCi0gICAgbm90ZUNvbnRlbnRE
aWRDaGFuZ2U6IGZ1bmN0aW9uKCkKKyAgICBub3RlQ29udGVudERpZENoYW5nZSgpCiAgICAgewog
ICAgICAgICBpZiAodGhpcy5faWdub3JlTmV4dENvbnRlbnREaWRDaGFuZ2VOb3RpZmljYXRpb24p
IHsKICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9pZ25vcmVOZXh0Q29udGVudERpZENoYW5nZU5v
dGlmaWNhdGlvbjsKQEAgLTE1MCwzICsxNDIsOSBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVTaGVl
dC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIH07CisKK1dlYklu
c3BlY3Rvci5DU1NTdHlsZVNoZWV0Ll9uZXh0VW5pcXVlRGlzcGxheU5hbWVOdW1iZXIgPSAxOwor
CitXZWJJbnNwZWN0b3IuQ1NTU3R5bGVTaGVldC5FdmVudCA9IHsKKyAgICBDb250ZW50RGlkQ2hh
bmdlOiAic3R5bGVzaGVldC1jb250ZW50LWRpZC1jaGFuZ2UiCit9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NhbGxGcmFtZS5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9DYWxsRnJhbWUuanMKaW5k
ZXggMTkzMjY3NS4uNWE2NWUwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvTW9kZWxzL0NhbGxGcmFtZS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ2FsbEZyYW1lLmpzCkBAIC0yMyw2NCArMjMsNjMgQEAK
ICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3Iu
Q2FsbEZyYW1lID0gZnVuY3Rpb24oaWQsIHNvdXJjZUNvZGVMb2NhdGlvbiwgZnVuY3Rpb25OYW1l
LCB0aGlzT2JqZWN0LCBzY29wZUNoYWluLCBuYXRpdmVDb2RlKQorV2ViSW5zcGVjdG9yLkNhbGxG
cmFtZSA9IGNsYXNzIENhbGxGcmFtZSBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIHsKLSAg
ICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CisgICAgY29uc3RydWN0b3IoaWQsIHNv
dXJjZUNvZGVMb2NhdGlvbiwgZnVuY3Rpb25OYW1lLCB0aGlzT2JqZWN0LCBzY29wZUNoYWluLCBu
YXRpdmVDb2RlKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKIAotICAgIGNvbnNvbGUuYXNzZXJ0
KCFzb3VyY2VDb2RlTG9jYXRpb24gfHwgc291cmNlQ29kZUxvY2F0aW9uIGluc3RhbmNlb2YgV2Vi
SW5zcGVjdG9yLlNvdXJjZUNvZGVMb2NhdGlvbik7Ci0gICAgY29uc29sZS5hc3NlcnQoIXRoaXNP
YmplY3QgfHwgdGhpc09iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3Qp
OwotICAgIGNvbnNvbGUuYXNzZXJ0KCFzY29wZUNoYWluIHx8IHNjb3BlQ2hhaW4gaW5zdGFuY2Vv
ZiBBcnJheSk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFzb3VyY2VDb2RlTG9jYXRpb24gfHwg
c291cmNlQ29kZUxvY2F0aW9uIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVMb2Nh
dGlvbik7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzT2JqZWN0IHx8IHRoaXNPYmplY3Qg
aW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0KTsKKyAgICAgICAgY29uc29sZS5h
c3NlcnQoIXNjb3BlQ2hhaW4gfHwgc2NvcGVDaGFpbiBpbnN0YW5jZW9mIEFycmF5KTsKIAotICAg
IHRoaXMuX2lkID0gaWQgfHwgbnVsbDsKLSAgICB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb24gPSBz
b3VyY2VDb2RlTG9jYXRpb24gfHwgbnVsbDsKLSAgICB0aGlzLl9mdW5jdGlvbk5hbWUgPSBmdW5j
dGlvbk5hbWUgfHwgbnVsbDsKLSAgICB0aGlzLl90aGlzT2JqZWN0ID0gdGhpc09iamVjdCB8fCBu
dWxsOwotICAgIHRoaXMuX3Njb3BlQ2hhaW4gPSBzY29wZUNoYWluIHx8IFtdOwotICAgIHRoaXMu
X25hdGl2ZUNvZGUgPSBuYXRpdmVDb2RlIHx8IGZhbHNlOwotfTsKLQotV2ViSW5zcGVjdG9yLkNh
bGxGcmFtZS5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5DYWxs
RnJhbWUsCisgICAgICAgIHRoaXMuX2lkID0gaWQgfHwgbnVsbDsKKyAgICAgICAgdGhpcy5fc291
cmNlQ29kZUxvY2F0aW9uID0gc291cmNlQ29kZUxvY2F0aW9uIHx8IG51bGw7CisgICAgICAgIHRo
aXMuX2Z1bmN0aW9uTmFtZSA9IGZ1bmN0aW9uTmFtZSB8fCBudWxsOworICAgICAgICB0aGlzLl90
aGlzT2JqZWN0ID0gdGhpc09iamVjdCB8fCBudWxsOworICAgICAgICB0aGlzLl9zY29wZUNoYWlu
ID0gc2NvcGVDaGFpbiB8fCBbXTsKKyAgICAgICAgdGhpcy5fbmF0aXZlQ29kZSA9IG5hdGl2ZUNv
ZGUgfHwgZmFsc2U7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgaWQoKQogICAg
IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2lkOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHNv
dXJjZUNvZGVMb2NhdGlvbigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc291cmNlQ29k
ZUxvY2F0aW9uOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGZ1bmN0aW9uTmFtZSgpCiAgICAg
ewogICAgICAgICByZXR1cm4gdGhpcy5fZnVuY3Rpb25OYW1lOwotICAgIH0sCisgICAgfQogCiAg
ICAgZ2V0IG5hdGl2ZUNvZGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX25hdGl2ZUNv
ZGU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgdGhpc09iamVjdCgpCiAgICAgewogICAgICAg
ICByZXR1cm4gdGhpcy5fdGhpc09iamVjdDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzY29w
ZUNoYWluKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zY29wZUNoYWluOwotICAgIH0s
CisgICAgfQogCi0gICAgc2F2ZUlkZW50aXR5VG9Db29raWU6IGZ1bmN0aW9uKCkKKyAgICBzYXZl
SWRlbnRpdHlUb0Nvb2tpZSgpCiAgICAgewogICAgICAgICAvLyBEbyBub3RoaW5nLiBUaGUgY2Fs
bCBmcmFtZSBpcyB0b3JuIGRvd24gd2hlbiB0aGUgaW5zcGVjdG9yIGNsb3NlcywgYW5kCiAgICAg
ICAgIC8vIHdlIHNob3VsZG4ndCByZXN0b3JlIGNhbGwgZnJhbWUgY29udGVudCB2aWV3cyBhY3Jv
c3MgZGVidWdnZXIgcGF1c2VzLgotICAgIH0sCisgICAgfQogCi0gICAgY29sbGVjdFNjb3BlQ2hh
aW5WYXJpYWJsZU5hbWVzOiBmdW5jdGlvbihjYWxsYmFjaykKKyAgICBjb2xsZWN0U2NvcGVDaGFp
blZhcmlhYmxlTmFtZXMoY2FsbGJhY2spCiAgICAgewogICAgICAgICB2YXIgcmVzdWx0ID0ge3Ro
aXM6IHRydWV9OwogCkBAIC0xMDEsNSArMTAwLDMgQEAgV2ViSW5zcGVjdG9yLkNhbGxGcmFtZS5w
cm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9zY29wZUNoYWluW2ldLm9iamVjdC5kZXBy
ZWNhdGVkR2V0QWxsUHJvcGVydGllcyhwcm9wZXJ0aWVzQ29sbGVjdGVkKTsKICAgICB9CiB9Owot
Ci1XZWJJbnNwZWN0b3IuQ2FsbEZyYW1lLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0
b3IuT2JqZWN0LnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL01vZGVscy9Db2xsZWN0aW9uRW50cnkuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ29sbGVjdGlvbkVudHJ5LmpzCmluZGV4IDFkYmIz
NmQuLjc5OWRhZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01vZGVscy9Db2xsZWN0aW9uRW50cnkuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NvbGxlY3Rpb25FbnRyeS5qcwpAQCAtMjMsMzggKzIzLDM4
IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVj
dG9yLkNvbGxlY3Rpb25FbnRyeSA9IGZ1bmN0aW9uKGtleSwgdmFsdWUpCitXZWJJbnNwZWN0b3Iu
Q29sbGVjdGlvbkVudHJ5ID0gY2xhc3MgQ29sbGVjdGlvbkVudHJ5IGV4dGVuZHMgV2ViSW5zcGVj
dG9yLk9iamVjdAogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICBj
b25zdHJ1Y3RvcihrZXksIHZhbHVlKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKIAotICAgIGNv
bnNvbGUuYXNzZXJ0KHZhbHVlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdCk7
Ci0gICAgY29uc29sZS5hc3NlcnQoIWtleSB8fCBrZXkgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3Iu
UmVtb3RlT2JqZWN0KTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodmFsdWUgaW5zdGFuY2VvZiBX
ZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0KTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoIWtleSB8
fCBrZXkgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0KTsKIAotICAgIHRoaXMu
X2tleSA9IGtleTsKLSAgICB0aGlzLl92YWx1ZSA9IHZhbHVlOwotfTsKKyAgICAgICAgdGhpcy5f
a2V5ID0ga2V5OworICAgICAgICB0aGlzLl92YWx1ZSA9IHZhbHVlOworICAgIH0KIAotLy8gUnVu
dGltZS5Db2xsZWN0aW9uRW50cnkuCi1XZWJJbnNwZWN0b3IuQ29sbGVjdGlvbkVudHJ5LmZyb21Q
YXlsb2FkID0gZnVuY3Rpb24ocGF5bG9hZCkKLXsKLSAgICBpZiAocGF5bG9hZC5rZXkpCi0gICAg
ICAgIHBheWxvYWQua2V5ID0gV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC5mcm9tUGF5bG9hZChw
YXlsb2FkLmtleSk7Ci0gICAgaWYgKHBheWxvYWQudmFsdWUpCi0gICAgICAgIHBheWxvYWQudmFs
dWUgPSBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LmZyb21QYXlsb2FkKHBheWxvYWQudmFsdWUp
OworICAgIC8vIFN0YXRpYwogCi0gICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuQ29sbGVjdGlv
bkVudHJ5KHBheWxvYWQua2V5LCBwYXlsb2FkLnZhbHVlKTsKLX07CisgICAgLy8gUnVudGltZS5D
b2xsZWN0aW9uRW50cnkuCisgICAgc3RhdGljIGZyb21QYXlsb2FkKHBheWxvYWQpCisgICAgewor
ICAgICAgICBpZiAocGF5bG9hZC5rZXkpCisgICAgICAgICAgICBwYXlsb2FkLmtleSA9IFdlYklu
c3BlY3Rvci5SZW1vdGVPYmplY3QuZnJvbVBheWxvYWQocGF5bG9hZC5rZXkpOworICAgICAgICBp
ZiAocGF5bG9hZC52YWx1ZSkKKyAgICAgICAgICAgIHBheWxvYWQudmFsdWUgPSBXZWJJbnNwZWN0
b3IuUmVtb3RlT2JqZWN0LmZyb21QYXlsb2FkKHBheWxvYWQudmFsdWUpOwogCi1XZWJJbnNwZWN0
b3IuQ29sbGVjdGlvbkVudHJ5LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5z
cGVjdG9yLkNvbGxlY3Rpb25FbnRyeSwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5PYmpl
Y3QucHJvdG90eXBlLAorICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5Db2xsZWN0aW9u
RW50cnkocGF5bG9hZC5rZXksIHBheWxvYWQudmFsdWUpOworICAgIH0KIAogICAgIC8vIFB1Ymxp
YwogCiAgICAgZ2V0IGtleSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fa2V5OwotICAg
IH0sCisgICAgfQogCiAgICAgZ2V0IHZhbHVlKCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ29sbGVjdGlvbkVudHJ5UHJldmll
dy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Db2xsZWN0
aW9uRW50cnlQcmV2aWV3LmpzCmluZGV4IGRkM2FmYmMuLjhlMTEzYzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Db2xsZWN0aW9uRW50cnlQ
cmV2aWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVs
cy9Db2xsZWN0aW9uRW50cnlQcmV2aWV3LmpzCkBAIC0yMywzOCArMjMsMzggQEAKICAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuQ29sbGVjdGlv
bkVudHJ5UHJldmlldyA9IGZ1bmN0aW9uKGtleVByZXZpZXcsIHZhbHVlUHJldmlldykKK1dlYklu
c3BlY3Rvci5Db2xsZWN0aW9uRW50cnlQcmV2aWV3ID0gY2xhc3MgQ29sbGVjdGlvbkVudHJ5UHJl
dmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIHsKLSAgICBXZWJJbnNwZWN0b3IuT2Jq
ZWN0LmNhbGwodGhpcyk7CisgICAgY29uc3RydWN0b3Ioa2V5UHJldmlldywgdmFsdWVQcmV2aWV3
KQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKIAotICAgIGNvbnNvbGUuYXNzZXJ0KHZhbHVlUHJl
dmlldyBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5PYmplY3RQcmV2aWV3KTsKLSAgICBjb25zb2xl
LmFzc2VydCgha2V5UHJldmlldyB8fCBrZXlQcmV2aWV3IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9y
Lk9iamVjdFByZXZpZXcpOworICAgICAgICBjb25zb2xlLmFzc2VydCh2YWx1ZVByZXZpZXcgaW5z
dGFuY2VvZiBXZWJJbnNwZWN0b3IuT2JqZWN0UHJldmlldyk7CisgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KCFrZXlQcmV2aWV3IHx8IGtleVByZXZpZXcgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuT2Jq
ZWN0UHJldmlldyk7CiAKLSAgICB0aGlzLl9rZXkgPSBrZXlQcmV2aWV3OwotICAgIHRoaXMuX3Zh
bHVlID0gdmFsdWVQcmV2aWV3OwotfTsKKyAgICAgICAgdGhpcy5fa2V5ID0ga2V5UHJldmlldzsK
KyAgICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZVByZXZpZXc7CisgICAgfQogCi0vLyBSdW50aW1l
LkVudHJ5UHJldmlldy4KLVdlYkluc3BlY3Rvci5Db2xsZWN0aW9uRW50cnlQcmV2aWV3LmZyb21Q
YXlsb2FkID0gZnVuY3Rpb24ocGF5bG9hZCkKLXsKLSAgICBpZiAocGF5bG9hZC5rZXkpCi0gICAg
ICAgIHBheWxvYWQua2V5ID0gV2ViSW5zcGVjdG9yLk9iamVjdFByZXZpZXcuZnJvbVBheWxvYWQo
cGF5bG9hZC5rZXkpOwotICAgIGlmIChwYXlsb2FkLnZhbHVlKQotICAgICAgICBwYXlsb2FkLnZh
bHVlID0gV2ViSW5zcGVjdG9yLk9iamVjdFByZXZpZXcuZnJvbVBheWxvYWQocGF5bG9hZC52YWx1
ZSk7CisgICAgLy8gU3RhdGljCiAKLSAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5Db2xsZWN0
aW9uRW50cnlQcmV2aWV3KHBheWxvYWQua2V5LCBwYXlsb2FkLnZhbHVlKTsKLX07CisgICAgLy8g
UnVudGltZS5FbnRyeVByZXZpZXcuCisgICAgc3RhdGljIGZyb21QYXlsb2FkKHBheWxvYWQpCisg
ICAgeworICAgICAgICBpZiAocGF5bG9hZC5rZXkpCisgICAgICAgICAgICBwYXlsb2FkLmtleSA9
IFdlYkluc3BlY3Rvci5PYmplY3RQcmV2aWV3LmZyb21QYXlsb2FkKHBheWxvYWQua2V5KTsKKyAg
ICAgICAgaWYgKHBheWxvYWQudmFsdWUpCisgICAgICAgICAgICBwYXlsb2FkLnZhbHVlID0gV2Vi
SW5zcGVjdG9yLk9iamVjdFByZXZpZXcuZnJvbVBheWxvYWQocGF5bG9hZC52YWx1ZSk7CiAKLVdl
Ykluc3BlY3Rvci5Db2xsZWN0aW9uRW50cnlQcmV2aWV3LnByb3RvdHlwZSA9IHsKLSAgICBjb25z
dHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkNvbGxlY3Rpb25FbnRyeVByZXZpZXcsCi0gICAgX19wcm90
b19fOiBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZSwKKyAgICAgICAgcmV0dXJuIG5ldyBX
ZWJJbnNwZWN0b3IuQ29sbGVjdGlvbkVudHJ5UHJldmlldyhwYXlsb2FkLmtleSwgcGF5bG9hZC52
YWx1ZSk7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQga2V5UHJldmlldygpCiAg
ICAgewogICAgICAgICByZXR1cm4gdGhpcy5fa2V5OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0
IHZhbHVlUHJldmlldygpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NvbG9yLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvTW9kZWxzL0NvbG9yLmpzCmluZGV4IGZkZTE5NzMuLjhmM2JlNmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Db2xvci5q
cworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ29sb3Iu
anMKQEAgLTI3LDExOCArMjcsMTg2IEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rv
ci5Db2xvciA9IGZ1bmN0aW9uKGZvcm1hdCwgY29tcG9uZW50cykKK1dlYkluc3BlY3Rvci5Db2xv
ciA9IGNsYXNzIENvbG9yCiB7Ci0gICAgdGhpcy5mb3JtYXQgPSBmb3JtYXQ7Ci0gICAgaWYgKGZv
cm1hdCA9PT0gV2ViSW5zcGVjdG9yLkNvbG9yLkZvcm1hdC5IU0wgfHwgZm9ybWF0ID09PSBXZWJJ
bnNwZWN0b3IuQ29sb3IuRm9ybWF0LkhTTEEpCi0gICAgICAgIHRoaXMuX2hzbGEgPSBjb21wb25l
bnRzOwotICAgIGVsc2UKLSAgICAgICAgdGhpcy5fcmdiYSA9IGNvbXBvbmVudHM7Ci0KLSAgICB0
aGlzLnZhbGlkID0gIWNvbXBvbmVudHMuc29tZShmdW5jdGlvbihjb21wb25lbnQpIHsKLSAgICAg
ICAgcmV0dXJuIGlzTmFOKGNvbXBvbmVudCk7Ci0gICAgfSk7Ci19OwotCi1XZWJJbnNwZWN0b3Iu
Q29sb3IuRm9ybWF0ID0gewotICAgIE9yaWdpbmFsOiAiY29sb3ItZm9ybWF0LW9yaWdpbmFsIiwK
LSAgICBOaWNrbmFtZTogImNvbG9yLWZvcm1hdC1uaWNrbmFtZSIsCi0gICAgSEVYOiAiY29sb3It
Zm9ybWF0LWhleCIsCi0gICAgU2hvcnRIRVg6ICJjb2xvci1mb3JtYXQtc2hvcnQtaGV4IiwKLSAg
ICBSR0I6ICJjb2xvci1mb3JtYXQtcmdiIiwKLSAgICBSR0JBOiAiY29sb3ItZm9ybWF0LXJnYmEi
LAotICAgIEhTTDogImNvbG9yLWZvcm1hdC1oc2wiLAotICAgIEhTTEE6ICJjb2xvci1mb3JtYXQt
aHNsYSIKLX07Ci0KLVdlYkluc3BlY3Rvci5Db2xvci5mcm9tU3RyaW5nID0gZnVuY3Rpb24oY29s
b3JTdHJpbmcpCi17Ci0gICAgdmFyIHZhbHVlID0gY29sb3JTdHJpbmcudG9Mb3dlckNhc2UoKS5y
ZXBsYWNlKC8lfFxzKy9nLCAiIik7Ci0gICAgY29uc3QgdHJhbnNwYXJlbnROaWNrbmFtZXMgPSBb
InRyYW5zcGFyZW50IiwgInJnYmEoMCwwLDAsMCkiLCAiaHNsYSgwLDAsMCwwKSJdOwotICAgIGlm
ICh0cmFuc3BhcmVudE5pY2tuYW1lcy5jb250YWlucyh2YWx1ZSkpIHsKLSAgICAgICAgdmFyIGNv
bG9yID0gbmV3IFdlYkluc3BlY3Rvci5Db2xvcihXZWJJbnNwZWN0b3IuQ29sb3IuRm9ybWF0Lk5p
Y2tuYW1lLCBbMCwgMCwgMCwgMF0pOwotICAgICAgICBjb2xvci5uaWNrbmFtZSA9ICJ0cmFuc3Bh
cmVudCI7Ci0gICAgICAgIGNvbG9yLm9yaWdpbmFsID0gY29sb3JTdHJpbmc7Ci0gICAgICAgIHJl
dHVybiBjb2xvcjsKKyAgICBjb25zdHJ1Y3Rvcihmb3JtYXQsIGNvbXBvbmVudHMpCisgICAgewor
ICAgICAgICB0aGlzLmZvcm1hdCA9IGZvcm1hdDsKKworICAgICAgICBpZiAoZm9ybWF0ID09PSBX
ZWJJbnNwZWN0b3IuQ29sb3IuRm9ybWF0LkhTTCB8fCBmb3JtYXQgPT09IFdlYkluc3BlY3Rvci5D
b2xvci5Gb3JtYXQuSFNMQSkKKyAgICAgICAgICAgIHRoaXMuX2hzbGEgPSBjb21wb25lbnRzOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICB0aGlzLl9yZ2JhID0gY29tcG9uZW50czsKKworICAg
ICAgICB0aGlzLnZhbGlkID0gIWNvbXBvbmVudHMuc29tZShmdW5jdGlvbihjb21wb25lbnQpIHsK
KyAgICAgICAgICAgIHJldHVybiBpc05hTihjb21wb25lbnQpOworICAgICAgICB9KTsKICAgICB9
CiAKLSAgICAvLyBTaW1wbGUgLSAjaGV4LCByZ2IoKSwgbmlja25hbWUsIGhzbCgpCi0gICAgdmFy
IHNpbXBsZSA9IC9eKD86IyhbMC05YS1mXXszLDZ9KXxyZ2JcKChbXildKylcKXwoXHcrKXxoc2xc
KChbXildKylcKSkkL2k7Ci0gICAgdmFyIG1hdGNoID0gY29sb3JTdHJpbmcubWF0Y2goc2ltcGxl
KTsKLSAgICBpZiAobWF0Y2gpIHsKLSAgICAgICAgaWYgKG1hdGNoWzFdKSB7IC8vIGhleAotICAg
ICAgICAgICAgdmFyIGhleCA9IG1hdGNoWzFdLnRvVXBwZXJDYXNlKCk7Ci0gICAgICAgICAgICBp
ZiAoaGV4Lmxlbmd0aCA9PT0gMykgewotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgV2ViSW5z
cGVjdG9yLkNvbG9yKFdlYkluc3BlY3Rvci5Db2xvci5Gb3JtYXQuU2hvcnRIRVgsIFsKLSAgICAg
ICAgICAgICAgICAgICAgcGFyc2VJbnQoaGV4LmNoYXJBdCgwKSArIGhleC5jaGFyQXQoMCksIDE2
KSwKLSAgICAgICAgICAgICAgICAgICAgcGFyc2VJbnQoaGV4LmNoYXJBdCgxKSArIGhleC5jaGFy
QXQoMSksIDE2KSwKLSAgICAgICAgICAgICAgICAgICAgcGFyc2VJbnQoaGV4LmNoYXJBdCgyKSAr
IGhleC5jaGFyQXQoMiksIDE2KSwKKyAgICAvLyBTdGF0aWMKKworICAgIHN0YXRpYyBmcm9tU3Ry
aW5nKGNvbG9yU3RyaW5nKQorICAgIHsKKyAgICAgICAgdmFyIHZhbHVlID0gY29sb3JTdHJpbmcu
dG9Mb3dlckNhc2UoKS5yZXBsYWNlKC8lfFxzKy9nLCAiIik7CisgICAgICAgIHZhciB0cmFuc3Bh
cmVudE5pY2tuYW1lcyA9IFsidHJhbnNwYXJlbnQiLCAicmdiYSgwLDAsMCwwKSIsICJoc2xhKDAs
MCwwLDApIl07CisgICAgICAgIGlmICh0cmFuc3BhcmVudE5pY2tuYW1lcy5jb250YWlucyh2YWx1
ZSkpIHsKKyAgICAgICAgICAgIHZhciBjb2xvciA9IG5ldyBXZWJJbnNwZWN0b3IuQ29sb3IoV2Vi
SW5zcGVjdG9yLkNvbG9yLkZvcm1hdC5OaWNrbmFtZSwgWzAsIDAsIDAsIDBdKTsKKyAgICAgICAg
ICAgIGNvbG9yLm5pY2tuYW1lID0gInRyYW5zcGFyZW50IjsKKyAgICAgICAgICAgIGNvbG9yLm9y
aWdpbmFsID0gY29sb3JTdHJpbmc7CisgICAgICAgICAgICByZXR1cm4gY29sb3I7CisgICAgICAg
IH0KKworICAgICAgICAvLyBTaW1wbGUgLSAjaGV4LCByZ2IoKSwgbmlja25hbWUsIGhzbCgpCisg
ICAgICAgIHZhciBzaW1wbGUgPSAvXig/OiMoWzAtOWEtZl17Myw2fSl8cmdiXCgoW14pXSspXCl8
KFx3Kyl8aHNsXCgoW14pXSspXCkpJC9pOworICAgICAgICB2YXIgbWF0Y2ggPSBjb2xvclN0cmlu
Zy5tYXRjaChzaW1wbGUpOworICAgICAgICBpZiAobWF0Y2gpIHsKKyAgICAgICAgICAgIGlmICht
YXRjaFsxXSkgeyAvLyBoZXgKKyAgICAgICAgICAgICAgICB2YXIgaGV4ID0gbWF0Y2hbMV0udG9V
cHBlckNhc2UoKTsKKyAgICAgICAgICAgICAgICBpZiAoaGV4Lmxlbmd0aCA9PT0gMykgeworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5Db2xvcihXZWJJbnNwZWN0
b3IuQ29sb3IuRm9ybWF0LlNob3J0SEVYLCBbCisgICAgICAgICAgICAgICAgICAgICAgICBwYXJz
ZUludChoZXguY2hhckF0KDApICsgaGV4LmNoYXJBdCgwKSwgMTYpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgcGFyc2VJbnQoaGV4LmNoYXJBdCgxKSArIGhleC5jaGFyQXQoMSksIDE2KSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHBhcnNlSW50KGhleC5jaGFyQXQoMikgKyBoZXguY2hhckF0
KDIpLCAxNiksCisgICAgICAgICAgICAgICAgICAgICAgICAxCisgICAgICAgICAgICAgICAgICAg
IF0pOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBuZXcgV2ViSW5zcGVjdG9yLkNvbG9yKFdlYkluc3BlY3Rvci5Db2xvci5Gb3JtYXQuSEVYLCBb
CisgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZUludChoZXguc3Vic3RyaW5nKDAsIDIpLCAx
NiksCisgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZUludChoZXguc3Vic3RyaW5nKDIsIDQp
LCAxNiksCisgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZUludChoZXguc3Vic3RyaW5nKDQs
IDYpLCAxNiksCisgICAgICAgICAgICAgICAgICAgICAgICAxCisgICAgICAgICAgICAgICAgICAg
IF0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSBpZiAobWF0Y2hbMl0p
IHsgLy8gcmdiCisgICAgICAgICAgICAgICAgdmFyIHJnYiA9IG1hdGNoWzJdLnNwbGl0KC9ccyos
XHMqLyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuQ29sb3IoV2Vi
SW5zcGVjdG9yLkNvbG9yLkZvcm1hdC5SR0IsIFsKKyAgICAgICAgICAgICAgICAgICAgcGFyc2VJ
bnQocmdiWzBdKSwKKyAgICAgICAgICAgICAgICAgICAgcGFyc2VJbnQocmdiWzFdKSwKKyAgICAg
ICAgICAgICAgICAgICAgcGFyc2VJbnQocmdiWzJdKSwKICAgICAgICAgICAgICAgICAgICAgMQog
ICAgICAgICAgICAgICAgIF0pOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAg
ICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5Db2xvcihXZWJJbnNwZWN0b3IuQ29sb3IuRm9ybWF0
LkhFWCwgWwotICAgICAgICAgICAgICAgICAgICBwYXJzZUludChoZXguc3Vic3RyaW5nKDAsIDIp
LCAxNiksCi0gICAgICAgICAgICAgICAgICAgIHBhcnNlSW50KGhleC5zdWJzdHJpbmcoMiwgNCks
IDE2KSwKLSAgICAgICAgICAgICAgICAgICAgcGFyc2VJbnQoaGV4LnN1YnN0cmluZyg0LCA2KSwg
MTYpLAorICAgICAgICAgICAgfSBlbHNlIGlmIChtYXRjaFszXSkgeyAvLyBuaWNrbmFtZQorICAg
ICAgICAgICAgICAgIHZhciBuaWNrbmFtZSA9IG1hdGNoWzNdLnRvTG93ZXJDYXNlKCk7CisgICAg
ICAgICAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5Db2xvci5OaWNrbmFtZXMuaGFzT3duUHJvcGVy
dHkobmlja25hbWUpKSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBjb2xvciA9IG5ldyBXZWJJ
bnNwZWN0b3IuQ29sb3IoV2ViSW5zcGVjdG9yLkNvbG9yLkZvcm1hdC5OaWNrbmFtZSwgV2ViSW5z
cGVjdG9yLkNvbG9yLk5pY2tuYW1lc1tuaWNrbmFtZV0uY29uY2F0KDEpKTsKKyAgICAgICAgICAg
ICAgICAgICAgY29sb3Iubmlja25hbWUgPSBuaWNrbmFtZTsKKyAgICAgICAgICAgICAgICAgICAg
Y29sb3Iub3JpZ2luYWwgPSBjb2xvclN0cmluZzsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGNvbG9yOworICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gbnVsbDsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAobWF0Y2hbNF0pIHsgLy8gaHNsCisgICAg
ICAgICAgICAgICAgdmFyIGhzbCA9IG1hdGNoWzRdLnJlcGxhY2UoLyUvZywgIiIpLnNwbGl0KC9c
cyosXHMqLyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuQ29sb3Io
V2ViSW5zcGVjdG9yLkNvbG9yLkZvcm1hdC5IU0wsIFsKKyAgICAgICAgICAgICAgICAgICAgcGFy
c2VJbnQoaHNsWzBdKSwKKyAgICAgICAgICAgICAgICAgICAgcGFyc2VJbnQoaHNsWzFdKSwKKyAg
ICAgICAgICAgICAgICAgICAgcGFyc2VJbnQoaHNsWzJdKSwKICAgICAgICAgICAgICAgICAgICAg
MQogICAgICAgICAgICAgICAgIF0pOwogICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYg
KG1hdGNoWzJdKSB7IC8vIHJnYgotICAgICAgICAgICAgdmFyIHJnYiA9IG1hdGNoWzJdLnNwbGl0
KC9ccyosXHMqLyk7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5Db2xvcihX
ZWJJbnNwZWN0b3IuQ29sb3IuRm9ybWF0LlJHQiwgWwotICAgICAgICAgICAgICAgIHBhcnNlSW50
KHJnYlswXSksCi0gICAgICAgICAgICAgICAgcGFyc2VJbnQocmdiWzFdKSwKLSAgICAgICAgICAg
ICAgICBwYXJzZUludChyZ2JbMl0pLAotICAgICAgICAgICAgICAgIDEKLSAgICAgICAgICAgIF0p
OwotICAgICAgICB9IGVsc2UgaWYgKG1hdGNoWzNdKSB7IC8vIG5pY2tuYW1lCi0gICAgICAgICAg
ICB2YXIgbmlja25hbWUgPSBtYXRjaFszXS50b0xvd2VyQ2FzZSgpOwotICAgICAgICAgICAgaWYg
KFdlYkluc3BlY3Rvci5Db2xvci5OaWNrbmFtZXMuaGFzT3duUHJvcGVydHkobmlja25hbWUpKSB7
Ci0gICAgICAgICAgICAgICAgdmFyIGNvbG9yID0gbmV3IFdlYkluc3BlY3Rvci5Db2xvcihXZWJJ
bnNwZWN0b3IuQ29sb3IuRm9ybWF0Lk5pY2tuYW1lLCBXZWJJbnNwZWN0b3IuQ29sb3IuTmlja25h
bWVzW25pY2tuYW1lXS5jb25jYXQoMSkpOwotICAgICAgICAgICAgICAgIGNvbG9yLm5pY2tuYW1l
ID0gbmlja25hbWU7Ci0gICAgICAgICAgICAgICAgY29sb3Iub3JpZ2luYWwgPSBjb2xvclN0cmlu
ZzsKLSAgICAgICAgICAgICAgICByZXR1cm4gY29sb3I7Ci0gICAgICAgICAgICB9IGVsc2UKLSAg
ICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKLSAgICAgICAgfSBlbHNlIGlmIChtYXRjaFs0XSkg
eyAvLyBoc2wKLSAgICAgICAgICAgIHZhciBoc2wgPSBtYXRjaFs0XS5yZXBsYWNlKC8lL2csICIi
KS5zcGxpdCgvXHMqLFxzKi8pOwotICAgICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3Iu
Q29sb3IoV2ViSW5zcGVjdG9yLkNvbG9yLkZvcm1hdC5IU0wsIFsKLSAgICAgICAgICAgICAgICBw
YXJzZUludChoc2xbMF0pLAotICAgICAgICAgICAgICAgIHBhcnNlSW50KGhzbFsxXSksCi0gICAg
ICAgICAgICAgICAgcGFyc2VJbnQoaHNsWzJdKSwKLSAgICAgICAgICAgICAgICAxCi0gICAgICAg
ICAgICBdKTsKICAgICAgICAgfQorCisgICAgICAgIC8vIEFkdmFuY2VkIC0gcmdiYSgpLCBoc2xh
KCkKKyAgICAgICAgdmFyIGFkdmFuY2VkID0gL14oPzpyZ2JhXCgoW14pXSspXCl8aHNsYVwoKFte
KV0rKVwpKSQvOworICAgICAgICBtYXRjaCA9IGNvbG9yU3RyaW5nLm1hdGNoKGFkdmFuY2VkKTsK
KyAgICAgICAgaWYgKG1hdGNoKSB7CisgICAgICAgICAgICBpZiAobWF0Y2hbMV0pIHsgLy8gcmdi
YQorICAgICAgICAgICAgICAgIHZhciByZ2JhID0gbWF0Y2hbMV0uc3BsaXQoL1xzKixccyovKTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5Db2xvcihXZWJJbnNwZWN0
b3IuQ29sb3IuRm9ybWF0LlJHQkEsIFsKKyAgICAgICAgICAgICAgICAgICAgcGFyc2VJbnQocmdi
YVswXSksCisgICAgICAgICAgICAgICAgICAgIHBhcnNlSW50KHJnYmFbMV0pLAorICAgICAgICAg
ICAgICAgICAgICBwYXJzZUludChyZ2JhWzJdKSwKKyAgICAgICAgICAgICAgICAgICAgTnVtYmVy
LmNvbnN0cmFpbihwYXJzZUZsb2F0KHJnYmFbM10pLCAwLCAxKQorICAgICAgICAgICAgICAgIF0p
OworICAgICAgICAgICAgfSBlbHNlIGlmIChtYXRjaFsyXSkgeyAvLyBoc2xhCisgICAgICAgICAg
ICAgICAgdmFyIGhzbGEgPSBtYXRjaFsyXS5yZXBsYWNlKC8lL2csICIiKS5zcGxpdCgvXHMqLFxz
Ki8pOworICAgICAgICAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkNvbG9yKFdlYklu
c3BlY3Rvci5Db2xvci5Gb3JtYXQuSFNMQSwgWworICAgICAgICAgICAgICAgICAgICBwYXJzZUlu
dChoc2xhWzBdKSwKKyAgICAgICAgICAgICAgICAgICAgcGFyc2VJbnQoaHNsYVsxXSksCisgICAg
ICAgICAgICAgICAgICAgIHBhcnNlSW50KGhzbGFbMl0pLAorICAgICAgICAgICAgICAgICAgICBO
dW1iZXIuY29uc3RyYWluKHBhcnNlRmxvYXQoaHNsYVszXSksIDAsIDEpCisgICAgICAgICAgICAg
ICAgXSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbnVsbDsK
ICAgICB9CiAKLSAgICAvLyBBZHZhbmNlZCAtIHJnYmEoKSwgaHNsYSgpCi0gICAgdmFyIGFkdmFu
Y2VkID0gL14oPzpyZ2JhXCgoW14pXSspXCl8aHNsYVwoKFteKV0rKVwpKSQvOwotICAgIG1hdGNo
ID0gY29sb3JTdHJpbmcubWF0Y2goYWR2YW5jZWQpOwotICAgIGlmIChtYXRjaCkgewotICAgICAg
ICBpZiAobWF0Y2hbMV0pIHsgLy8gcmdiYQotICAgICAgICAgICAgdmFyIHJnYmEgPSBtYXRjaFsx
XS5zcGxpdCgvXHMqLFxzKi8pOwotICAgICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3Iu
Q29sb3IoV2ViSW5zcGVjdG9yLkNvbG9yLkZvcm1hdC5SR0JBLCBbCi0gICAgICAgICAgICAgICAg
cGFyc2VJbnQocmdiYVswXSksCi0gICAgICAgICAgICAgICAgcGFyc2VJbnQocmdiYVsxXSksCi0g
ICAgICAgICAgICAgICAgcGFyc2VJbnQocmdiYVsyXSksCi0gICAgICAgICAgICAgICAgTnVtYmVy
LmNvbnN0cmFpbihwYXJzZUZsb2F0KHJnYmFbM10pLCAwLCAxKQotICAgICAgICAgICAgXSk7Ci0g
ICAgICAgIH0gZWxzZSBpZiAobWF0Y2hbMl0pIHsgLy8gaHNsYQotICAgICAgICAgICAgdmFyIGhz
bGEgPSBtYXRjaFsyXS5yZXBsYWNlKC8lL2csICIiKS5zcGxpdCgvXHMqLFxzKi8pOwotICAgICAg
ICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuQ29sb3IoV2ViSW5zcGVjdG9yLkNvbG9yLkZv
cm1hdC5IU0xBLCBbCi0gICAgICAgICAgICAgICAgcGFyc2VJbnQoaHNsYVswXSksCi0gICAgICAg
ICAgICAgICAgcGFyc2VJbnQoaHNsYVsxXSksCi0gICAgICAgICAgICAgICAgcGFyc2VJbnQoaHNs
YVsyXSksCi0gICAgICAgICAgICAgICAgTnVtYmVyLmNvbnN0cmFpbihwYXJzZUZsb2F0KGhzbGFb
M10pLCAwLCAxKQotICAgICAgICAgICAgXSk7CisgICAgc3RhdGljIHJnYjJoc3YociwgZywgYikK
KyAgICB7CisgICAgICAgIHIgLz0gMjU1OworICAgICAgICBnIC89IDI1NTsKKyAgICAgICAgYiAv
PSAyNTU7CisKKyAgICAgICAgdmFyIG1pbiA9IE1hdGgubWluKE1hdGgubWluKHIsIGcpLCBiKTsK
KyAgICAgICAgdmFyIG1heCA9IE1hdGgubWF4KE1hdGgubWF4KHIsIGcpLCBiKTsKKyAgICAgICAg
dmFyIGRlbHRhID0gbWF4IC0gbWluOworCisgICAgICAgIHZhciB2ID0gbWF4OworICAgICAgICB2
YXIgcywgaDsKKworICAgICAgICBpZiAobWF4ID09PSBtaW4pCisgICAgICAgICAgICBoID0gMDsK
KyAgICAgICAgZWxzZSBpZiAobWF4ID09PSByKQorICAgICAgICAgICAgaCA9ICg2MCAqICgoZyAt
IGIpIC8gZGVsdGEpKSAlIDM2MDsKKyAgICAgICAgZWxzZSBpZiAobWF4ID09PSBnKQorICAgICAg
ICAgICAgaCA9IDYwICogKChiIC0gcikgLyBkZWx0YSkgKyAxMjA7CisgICAgICAgIGVsc2UgaWYg
KG1heCA9PT0gYikKKyAgICAgICAgICAgIGggPSA2MCAqICgociAtIGcpIC8gZGVsdGEpICsgMjQw
OworCisgICAgICAgIGlmIChoIDwgMCkKKyAgICAgICAgICAgIGggKz0gMzYwOworCisgICAgICAg
IC8vIFNhdHVyYXRpb24KKyAgICAgICAgaWYgKG1heCA9PT0gMCkKKyAgICAgICAgICAgIHMgPSAw
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBzID0gMSAtIChtaW4gLyBtYXgpOworCisgICAg
ICAgIHJldHVybiBbaCwgcywgdl07CisgICAgfQorCisgICAgc3RhdGljIGhzdjJyZ2IoaCwgcywg
dikKKyAgICB7CisgICAgICAgIGlmIChzID09PSAwKQorICAgICAgICAgICAgcmV0dXJuIFt2LCB2
LCB2XTsKKworICAgICAgICBoIC89IDYwOworICAgICAgICB2YXIgaSA9IE1hdGguZmxvb3IoaCk7
CisgICAgICAgIHZhciBkYXRhID0gWworICAgICAgICAgICAgdiAqICgxIC0gcyksCisgICAgICAg
ICAgICB2ICogKDEgLSBzICogKGggLSBpKSksCisgICAgICAgICAgICB2ICogKDEgLSBzICogKDEg
LSAoaCAtIGkpKSkKKyAgICAgICAgXTsKKyAgICAgICAgdmFyIHJnYjsKKworICAgICAgICBzd2l0
Y2ggKGkpIHsKKyAgICAgICAgY2FzZSAwOgorICAgICAgICAgICAgcmdiID0gW3YsIGRhdGFbMl0s
IGRhdGFbMF1dOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMToKKyAgICAgICAg
ICAgIHJnYiA9IFtkYXRhWzFdLCB2LCBkYXRhWzBdXTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIDI6CisgICAgICAgICAgICByZ2IgPSBbZGF0YVswXSwgdiwgZGF0YVsyXV07Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAzOgorICAgICAgICAgICAgcmdiID0gW2Rh
dGFbMF0sIGRhdGFbMV0sIHZdOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgNDoK
KyAgICAgICAgICAgIHJnYiA9IFtkYXRhWzJdLCBkYXRhWzBdLCB2XTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmdiID0gW3YsIGRhdGFbMF0sIGRh
dGFbMV1dOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKworICAgICAgICByZXR1cm4g
cmdiOwogICAgIH0KIAotICAgIHJldHVybiBudWxsOwotfTsKIAotV2ViSW5zcGVjdG9yLkNvbG9y
LnByb3RvdHlwZSA9IHsKLSAgICBuZXh0Rm9ybWF0OiBmdW5jdGlvbihmb3JtYXQpCisgICAgLy8g
UHVibGljCisKKyAgICBuZXh0Rm9ybWF0KGZvcm1hdCkKICAgICB7CiAgICAgICAgIGZvcm1hdCA9
IGZvcm1hdCB8fCB0aGlzLmZvcm1hdDsKIApAQCAtMTc1LDQ3ICsyNDMsNDcgQEAgV2ViSW5zcGVj
dG9yLkNvbG9yLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIlVua25v
d24gY29sb3IgZm9ybWF0LiIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgIH0K
LSAgICB9LAorICAgIH0KIAogICAgIGdldCBhbHBoYSgpCiAgICAgewogICAgICAgICByZXR1cm4g
dGhpcy5fcmdiYSA/IHRoaXMuX3JnYmFbM10gOiB0aGlzLl9oc2xhWzNdOwotICAgIH0sCisgICAg
fQogCiAgICAgZ2V0IHNpbXBsZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5hbHBoYSA9
PT0gMTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCByZ2IoKQogICAgIHsKICAgICAgICAgdmFy
IHJnYiA9IHRoaXMucmdiYS5zbGljZSgpOwogICAgICAgICByZ2IucG9wKCk7CiAgICAgICAgIHJl
dHVybiByZ2I7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgaHNsKCkKICAgICB7CiAgICAgICAg
IHZhciBoc2wgPSB0aGlzLmhzbGEuc2xpY2UoKTsKICAgICAgICAgaHNsLnBvcCgpOwogICAgICAg
ICByZXR1cm4gaHNsOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHJnYmEoKQogICAgIHsKICAg
ICAgICAgaWYgKCF0aGlzLl9yZ2JhKQogICAgICAgICAgICAgdGhpcy5fcmdiYSA9IHRoaXMuX2hz
bGFUb1JHQkEodGhpcy5faHNsYSk7CiAgICAgICAgIHJldHVybiB0aGlzLl9yZ2JhOwotICAgIH0s
CisgICAgfQogCiAgICAgZ2V0IGhzbGEoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9oc2xh
KQogICAgICAgICAgICAgdGhpcy5faHNsYSA9IHRoaXMuX3JnYmFUb0hTTEEodGhpcy5yZ2JhKTsK
ICAgICAgICAgcmV0dXJuIHRoaXMuX2hzbGE7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjb3B5OiBm
dW5jdGlvbigpCisgICAgY29weSgpCiAgICAgewogICAgICAgICBzd2l0Y2ggKHRoaXMuZm9ybWF0
KSB7CiAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLkNvbG9yLkZvcm1hdC5SR0I6CkBAIC0yMjgs
OSArMjk2LDkgQEAgV2ViSW5zcGVjdG9yLkNvbG9yLnByb3RvdHlwZSA9IHsKICAgICAgICAgY2Fz
ZSBXZWJJbnNwZWN0b3IuQ29sb3IuRm9ybWF0LkhTTEE6CiAgICAgICAgICAgICByZXR1cm4gbmV3
IFdlYkluc3BlY3Rvci5Db2xvcih0aGlzLmZvcm1hdCwgdGhpcy5oc2xhKTsKICAgICAgICAgfQot
ICAgIH0sCisgICAgfQogCi0gICAgdG9TdHJpbmc6IGZ1bmN0aW9uKGZvcm1hdCkKKyAgICB0b1N0
cmluZyhmb3JtYXQpCiAgICAgewogICAgICAgICBpZiAoIWZvcm1hdCkKICAgICAgICAgICAgIGZv
cm1hdCA9IHRoaXMuZm9ybWF0OwpAQCAtMjU1LDE0ICszMjMsMTYgQEAgV2ViSW5zcGVjdG9yLkNv
bG9yLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIHRocm93ICJpbnZhbGlkIGNv
bG9yIGZvcm1hdCI7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdG9PcmlnaW5hbFN0cmluZzogZnVu
Y3Rpb24oKQorICAgIC8vIFByaXZhdGUKKworICAgIF90b09yaWdpbmFsU3RyaW5nKCkKICAgICB7
CiAgICAgICAgIHJldHVybiB0aGlzLm9yaWdpbmFsIHx8IHRoaXMuX3RvTmlja25hbWVTdHJpbmco
KTsKLSAgICB9LAorICAgIH0KIAotICAgIF90b05pY2tuYW1lU3RyaW5nOiBmdW5jdGlvbigpCisg
ICAgX3RvTmlja25hbWVTdHJpbmcoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMubmlja25hbWUp
CiAgICAgICAgICAgICByZXR1cm4gdGhpcy5uaWNrbmFtZTsKQEAgLTI4NSw5ICszNTUsOSBAQCBX
ZWJJbnNwZWN0b3IuQ29sb3IucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgcmV0
dXJuIHRoaXMuX3RvUkdCU3RyaW5nKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdG9TaG9ydEhF
WFN0cmluZzogZnVuY3Rpb24oKQorICAgIF90b1Nob3J0SEVYU3RyaW5nKCkKICAgICB7CiAgICAg
ICAgIGlmICghdGhpcy5zaW1wbGUpCiAgICAgICAgICAgICByZXR1cm4gdGhpcy5fdG9SR0JBU3Ry
aW5nKCk7CkBAIC0zMDEsOSArMzcxLDkgQEAgV2ViSW5zcGVjdG9yLkNvbG9yLnByb3RvdHlwZSA9
IHsKICAgICAgICAgICAgIHJldHVybiAiIyIgKyByWzBdICsgZ1swXSArIGJbMF07CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIHJldHVybiAiIyIgKyByICsgZyArIGI7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBfdG9IRVhTdHJpbmc6IGZ1bmN0aW9uKCkKKyAgICBfdG9IRVhTdHJpbmcoKQogICAg
IHsKICAgICAgICAgaWYgKCF0aGlzLnNpbXBsZSkKICAgICAgICAgICAgIHJldHVybiB0aGlzLl90
b1JHQkFTdHJpbmcoKTsKQEAgLTMxNCwzOCArMzg0LDM4IEBAIFdlYkluc3BlY3Rvci5Db2xvci5w
cm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBiID0gdGhpcy5fY29tcG9uZW50VG9IZXhWYWx1ZShy
Z2JhWzJdKTsKIAogICAgICAgICByZXR1cm4gIiMiICsgciArIGcgKyBiOwotICAgIH0sCisgICAg
fQogCi0gICAgX3RvUkdCU3RyaW5nOiBmdW5jdGlvbigpCisgICAgX3RvUkdCU3RyaW5nKCkKICAg
ICB7CiAgICAgICAgIGlmICghdGhpcy5zaW1wbGUpCiAgICAgICAgICAgICByZXR1cm4gdGhpcy5f
dG9SR0JBU3RyaW5nKCk7CiAKICAgICAgICAgdmFyIHJnYmEgPSB0aGlzLnJnYmE7CiAgICAgICAg
IHJldHVybiAicmdiKCIgKyBbcmdiYVswXSwgcmdiYVsxXSwgcmdiYVsyXV0uam9pbigiLCAiKSAr
ICIpIjsKLSAgICB9LAorICAgIH0KIAotICAgIF90b1JHQkFTdHJpbmc6IGZ1bmN0aW9uKCkKKyAg
ICBfdG9SR0JBU3RyaW5nKCkKICAgICB7CiAgICAgICAgIHJldHVybiAicmdiYSgiICsgdGhpcy5y
Z2JhLmpvaW4oIiwgIikgKyAiKSI7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdG9IU0xTdHJpbmc6
IGZ1bmN0aW9uKCkKKyAgICBfdG9IU0xTdHJpbmcoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlz
LnNpbXBsZSkKICAgICAgICAgICAgIHJldHVybiB0aGlzLl90b0hTTEFTdHJpbmcoKTsKIAogICAg
ICAgICB2YXIgaHNsYSA9IHRoaXMuaHNsYTsKICAgICAgICAgcmV0dXJuICJoc2woIiArIGhzbGFb
MF0gKyAiLCAiICsgaHNsYVsxXSArICIlLCAiICsgaHNsYVsyXSArICIlKSI7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfdG9IU0xBU3RyaW5nOiBmdW5jdGlvbigpCisgICAgX3RvSFNMQVN0cmluZygp
CiAgICAgewogICAgICAgICB2YXIgaHNsYSA9IHRoaXMuaHNsYTsKICAgICAgICAgcmV0dXJuICJo
c2xhKCIgKyBoc2xhWzBdICsgIiwgIiArIGhzbGFbMV0gKyAiJSwgIiArIGhzbGFbMl0gKyAiJSwg
IiArIGhzbGFbM10gKyAiKSI7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY2FuQmVTZXJpYWxpemVk
QXNTaG9ydEhFWDogZnVuY3Rpb24oKQorICAgIF9jYW5CZVNlcmlhbGl6ZWRBc1Nob3J0SEVYKCkK
ICAgICB7CiAgICAgICAgIHZhciByZ2JhID0gdGhpcy5yZ2JhOwogCkBAIC0zNjIsMjIgKzQzMiwy
MiBAQCBXZWJJbnNwZWN0b3IuQ29sb3IucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0sCisgICAgfQogCi0gICAgX2Nv
bXBvbmVudFRvTnVtYmVyOiBmdW5jdGlvbih2YWx1ZSkKKyAgICBfY29tcG9uZW50VG9OdW1iZXIo
dmFsdWUpCiAgICAgewogICAgICAgICByZXR1cm4gTnVtYmVyLmNvbnN0cmFpbih2YWx1ZSwgMCwg
MjU1KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9jb21wb25lbnRUb0hleFZhbHVlOiBmdW5jdGlv
bih2YWx1ZSkKKyAgICBfY29tcG9uZW50VG9IZXhWYWx1ZSh2YWx1ZSkKICAgICB7CiAgICAgICAg
IHZhciBoZXggPSB0aGlzLl9jb21wb25lbnRUb051bWJlcih2YWx1ZSkudG9TdHJpbmcoMTYpOwog
ICAgICAgICBpZiAoaGV4Lmxlbmd0aCA9PT0gMSkKICAgICAgICAgICAgIGhleCA9ICIwIiArIGhl
eDsKICAgICAgICAgcmV0dXJuIGhleDsKLSAgICB9LAorICAgIH0KIAotICAgIF9yZ2JUb0hTTDog
ZnVuY3Rpb24ocmdiKQorICAgIF9yZ2JUb0hTTChyZ2IpCiAgICAgewogICAgICAgICB2YXIgciA9
IHRoaXMuX2NvbXBvbmVudFRvTnVtYmVyKHJnYlswXSkgLyAyNTU7CiAgICAgICAgIHZhciBnID0g
dGhpcy5fY29tcG9uZW50VG9OdW1iZXIocmdiWzFdKSAvIDI1NTsKQEAgLTQxMiw5ICs0ODIsOSBA
QCBXZWJJbnNwZWN0b3IuQ29sb3IucHJvdG90eXBlID0gewogICAgICAgICBsID0gTWF0aC5yb3Vu
ZChsICogMTAwKTsKIAogICAgICAgICByZXR1cm4gW2gsIHMsIGxdOwotICAgIH0sCisgICAgfQog
Ci0gICAgX2hzbFRvUkdCOiBmdW5jdGlvbihoc2wpCisgICAgX2hzbFRvUkdCKGhzbCkKICAgICB7
CiAgICAgICAgIHZhciBoID0gcGFyc2VGbG9hdChoc2xbMF0pIC8gMzYwOwogICAgICAgICB2YXIg
cyA9IHBhcnNlRmxvYXQoaHNsWzFdKSAvIDEwMDsKQEAgLTQzNCwxNiArNTA0LDE2IEBAIFdlYklu
c3BlY3Rvci5Db2xvci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBNYXRoLnJvdW5kKHNBcnJh
eVsgKGggfCAxNikgJSA2IF0gKiAyNTUpLAogICAgICAgICAgICAgTWF0aC5yb3VuZChzQXJyYXlb
IChoIHwgOCkgICUgNiBdICogMjU1KQogICAgICAgICBdOwotICAgIH0sCisgICAgfQogCi0gICAg
X3JnYmFUb0hTTEE6IGZ1bmN0aW9uKHJnYmEpCisgICAgX3JnYmFUb0hTTEEocmdiYSkKICAgICB7
CiAgICAgICAgIHZhciBoc2wgPSB0aGlzLl9yZ2JUb0hTTChyZ2JhKTsKICAgICAgICAgaHNsLnB1
c2gocmdiYVszXSk7CiAgICAgICAgIHJldHVybiBoc2w7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBf
aHNsYVRvUkdCQTogZnVuY3Rpb24oaHNsYSkKKyAgICBfaHNsYVRvUkdCQShoc2xhKQogICAgIHsK
ICAgICAgICAgdmFyIHJnYmEgPSB0aGlzLl9oc2xUb1JHQihoc2xhKTsKICAgICAgICAgcmdiYS5w
dXNoKGhzbGFbM10pOwpAQCAtNDUxLDYgKzUyMSwxNyBAQCBXZWJJbnNwZWN0b3IuQ29sb3IucHJv
dG90eXBlID0gewogICAgIH0KIH07CiAKK1dlYkluc3BlY3Rvci5Db2xvci5Gb3JtYXQgPSB7Cisg
ICAgT3JpZ2luYWw6ICJjb2xvci1mb3JtYXQtb3JpZ2luYWwiLAorICAgIE5pY2tuYW1lOiAiY29s
b3ItZm9ybWF0LW5pY2tuYW1lIiwKKyAgICBIRVg6ICJjb2xvci1mb3JtYXQtaGV4IiwKKyAgICBT
aG9ydEhFWDogImNvbG9yLWZvcm1hdC1zaG9ydC1oZXgiLAorICAgIFJHQjogImNvbG9yLWZvcm1h
dC1yZ2IiLAorICAgIFJHQkE6ICJjb2xvci1mb3JtYXQtcmdiYSIsCisgICAgSFNMOiAiY29sb3It
Zm9ybWF0LWhzbCIsCisgICAgSFNMQTogImNvbG9yLWZvcm1hdC1oc2xhIgorfTsKKwogV2ViSW5z
cGVjdG9yLkNvbG9yLk5pY2tuYW1lcyA9IHsKICAgICAiYWxpY2VibHVlIjogWzI0MCwgMjQ4LCAy
NTVdLAogICAgICJhbnRpcXVld2hpdGUiOiBbMjUwLCAyMzUsIDIxNV0sCkBAIC01OTIsNzUgKzY3
MywzIEBAIFdlYkluc3BlY3Rvci5Db2xvci5OaWNrbmFtZXMgPSB7CiAgICAgInllbGxvdyI6IFsy
NTUsIDI1NSwgMF0sCiAgICAgInllbGxvd2dyZWVuIjogWzE1NCwgMjA1LCA1MF0KIH07Ci0KLVdl
Ykluc3BlY3Rvci5Db2xvci5yZ2IyaHN2ID0gZnVuY3Rpb24ociwgZywgYikKLXsKLSAgICByIC89
IDI1NTsKLSAgICBnIC89IDI1NTsKLSAgICBiIC89IDI1NTsKLQotICAgIHZhciBtaW4gPSBNYXRo
Lm1pbihNYXRoLm1pbihyLCBnKSwgYik7Ci0gICAgdmFyIG1heCA9IE1hdGgubWF4KE1hdGgubWF4
KHIsIGcpLCBiKTsKLSAgICB2YXIgZGVsdGEgPSBtYXggLSBtaW47Ci0KLSAgICB2YXIgdiA9IG1h
eDsKLSAgICB2YXIgcywgaDsKLQotICAgIGlmIChtYXggPT09IG1pbikKLSAgICAgICAgaCA9IDA7
Ci0gICAgZWxzZSBpZiAobWF4ID09PSByKQotICAgICAgICBoID0gKDYwICogKChnIC0gYikgLyBk
ZWx0YSkpICUgMzYwOwotICAgIGVsc2UgaWYgKG1heCA9PT0gZykKLSAgICAgICAgaCA9IDYwICog
KChiIC0gcikgLyBkZWx0YSkgKyAxMjA7Ci0gICAgZWxzZSBpZiAobWF4ID09PSBiKQotICAgICAg
ICBoID0gNjAgKiAoKHIgLSBnKSAvIGRlbHRhKSArIDI0MDsKLQotICAgIGlmIChoIDwgMCkKLSAg
ICAgICAgaCArPSAzNjA7Ci0KLSAgICAvLyBTYXR1cmF0aW9uCi0gICAgaWYgKG1heCA9PT0gMCkK
LSAgICAgICAgcyA9IDA7Ci0gICAgZWxzZQotICAgICAgICBzID0gMSAtIChtaW4gLyBtYXgpOwot
Ci0gICAgcmV0dXJuIFtoLCBzLCB2XTsKLX07Ci0KLVdlYkluc3BlY3Rvci5Db2xvci5oc3Yycmdi
ID0gZnVuY3Rpb24oaCwgcywgdikKLXsKLSAgICBpZiAocyA9PT0gMCkKLSAgICAgICAgcmV0dXJu
IFt2LCB2LCB2XTsKLQotICAgIGggLz0gNjA7Ci0gICAgdmFyIGkgPSBNYXRoLmZsb29yKGgpOwot
ICAgIHZhciBkYXRhID0gWwotICAgICAgICB2ICogKDEgLSBzKSwKLSAgICAgICAgdiAqICgxIC0g
cyAqIChoIC0gaSkpLAotICAgICAgICB2ICogKDEgLSBzICogKDEgLSAoaCAtIGkpKSkKLSAgICBd
OwotICAgIHZhciByZ2I7Ci0KLSAgICBzd2l0Y2ggKGkpIHsKLSAgICBjYXNlIDA6Ci0gICAgICAg
IHJnYiA9IFt2LCBkYXRhWzJdLCBkYXRhWzBdXTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSAx
OgotICAgICAgICByZ2IgPSBbZGF0YVsxXSwgdiwgZGF0YVswXV07Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgMjoKLSAgICAgICAgcmdiID0gW2RhdGFbMF0sIHYsIGRhdGFbMl1dOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIDM6Ci0gICAgICAgIHJnYiA9IFtkYXRhWzBdLCBkYXRhWzFdLCB2
XTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSA0OgotICAgICAgICByZ2IgPSBbZGF0YVsyXSwg
ZGF0YVswXSwgdl07Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJnYiA9
IFt2LCBkYXRhWzBdLCBkYXRhWzFdXTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgcmV0
dXJuIHJnYjsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Nb2RlbHMvQ29udGVudEZsb3cuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Nb2RlbHMvQ29udGVudEZsb3cuanMKaW5kZXggNzI2MzE2YS4uY2MwNjNkMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NvbnRl
bnRGbG93LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVs
cy9Db250ZW50Rmxvdy5qcwpAQCAtMjcsMjYgKzI3LDE3IEBACiAgKiBTVUNIIERBTUFHRS4KICAq
LwogCi1XZWJJbnNwZWN0b3IuQ29udGVudEZsb3cgPSBmdW5jdGlvbihkb2N1bWVudE5vZGVJZGVu
dGlmaWVyLCBuYW1lLCBvdmVyc2V0LCBjb250ZW50Tm9kZXMpCitXZWJJbnNwZWN0b3IuQ29udGVu
dEZsb3cgPSBjbGFzcyBDb250ZW50RmxvdyBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIHsK
LSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7Ci0KLSAgICB0aGlzLl9kb2N1bWVu
dE5vZGVJZGVudGlmaWVyID0gZG9jdW1lbnROb2RlSWRlbnRpZmllcjsKLSAgICB0aGlzLl9uYW1l
ID0gbmFtZTsKLSAgICB0aGlzLl9vdmVyc2V0ID0gb3ZlcnNldDsKLSAgICB0aGlzLl9jb250ZW50
Tm9kZXMgPSBjb250ZW50Tm9kZXM7Ci19OwotCi1XZWJJbnNwZWN0b3IuQ29udGVudEZsb3cuRXZl
bnQgPSB7Ci0gICAgT3ZlcnNldFdhc0NoYW5nZWQ6ICJjb250ZW50LWZsb3ctb3ZlcnNldC13YXMt
Y2hhbmdlZCIsCi0gICAgQ29udGVudE5vZGVXYXNBZGRlZDogImNvbnRlbnQtZmxvdy1jb250ZW50
LW5vZGUtd2FzLWFkZGVkIiwKLSAgICBDb250ZW50Tm9kZVdhc1JlbW92ZWQ6ICJjb250ZW50LWZs
b3ctY29udGVudC1ub2RlLXdhcy1yZW1vdmVkIgotfTsKLQotV2ViSW5zcGVjdG9yLkNvbnRlbnRG
bG93LnByb3RvdHlwZSA9IHsKLQotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuQ29udGVu
dEZsb3csCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZSwKKyAg
ICBjb25zdHJ1Y3Rvcihkb2N1bWVudE5vZGVJZGVudGlmaWVyLCBuYW1lLCBvdmVyc2V0LCBjb250
ZW50Tm9kZXMpCisgICAgeworICAgICAgICBzdXBlcigpOworCisgICAgICAgIHRoaXMuX2RvY3Vt
ZW50Tm9kZUlkZW50aWZpZXIgPSBkb2N1bWVudE5vZGVJZGVudGlmaWVyOworICAgICAgICB0aGlz
Ll9uYW1lID0gbmFtZTsKKyAgICAgICAgdGhpcy5fb3ZlcnNldCA9IG92ZXJzZXQ7CisgICAgICAg
IHRoaXMuX2NvbnRlbnROb2RlcyA9IGNvbnRlbnROb2RlczsKKyAgICB9CiAKICAgICAvLyBQdWJs
aWMKIApAQCAtNTQsMjIgKzQ1LDIyIEBAIFdlYkluc3BlY3Rvci5Db250ZW50Rmxvdy5wcm90b3R5
cGUgPSB7CiAgICAgewogICAgICAgICAvLyBVc2UgdGhlIGZsb3cgbm9kZSBpZCwgdG8gYXZvaWQg
Y29sbGlzaW9ucyB3aGVuIHdlIGNoYW5nZSBtYWluIGRvY3VtZW50IGlkLgogICAgICAgICByZXR1
cm4gdGhpcy5fZG9jdW1lbnROb2RlSWRlbnRpZmllciArICI6IiArIHRoaXMuX25hbWU7Ci0gICAg
fSwKKyAgICB9CiAKICAgICBnZXQgZG9jdW1lbnROb2RlSWRlbnRpZmllcigpCiAgICAgewogICAg
ICAgICByZXR1cm4gdGhpcy5fZG9jdW1lbnROb2RlSWRlbnRpZmllcjsKLSAgICB9LAorICAgIH0K
IAogICAgIGdldCBuYW1lKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9uYW1lOwotICAg
IH0sCisgICAgfQogCiAgICAgZ2V0IG92ZXJzZXQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRo
aXMuX292ZXJzZXQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgb3ZlcnNldChvdmVyc2V0KQog
ICAgIHsKQEAgLTc3LDI4ICs2OCwyOCBAQCBXZWJJbnNwZWN0b3IuQ29udGVudEZsb3cucHJvdG90
eXBlID0gewogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB0aGlzLl9vdmVyc2V0ID0gb3Zl
cnNldDsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9y
LkNvbnRlbnRGbG93LkV2ZW50LkZsb3dPdmVyc2V0V2FzQ2hhbmdlZCk7Ci0gICAgfSwKKyAgICB9
CiAKICAgICBnZXQgY29udGVudE5vZGVzKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9j
b250ZW50Tm9kZXM7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBpbnNlcnRDb250ZW50Tm9kZUJlZm9y
ZTogZnVuY3Rpb24oY29udGVudE5vZGUsIHJlZmVyZW5jZU5vZGUpCisgICAgaW5zZXJ0Q29udGVu
dE5vZGVCZWZvcmUoY29udGVudE5vZGUsIHJlZmVyZW5jZU5vZGUpCiAgICAgewogICAgICAgICB2
YXIgaW5kZXggPSB0aGlzLl9jb250ZW50Tm9kZXMuaW5kZXhPZihyZWZlcmVuY2VOb2RlKTsKICAg
ICAgICAgY29uc29sZS5hc3NlcnQoaW5kZXggIT09IC0xKTsKICAgICAgICAgdGhpcy5fY29udGVu
dE5vZGVzLnNwbGljZShpbmRleCwgMCwgY29udGVudE5vZGUpOwogICAgICAgICB0aGlzLmRpc3Bh
dGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuQ29udGVudEZsb3cuRXZlbnQuQ29udGVu
dE5vZGVXYXNBZGRlZCwge25vZGU6IGNvbnRlbnROb2RlLCBiZWZvcmU6IHJlZmVyZW5jZU5vZGV9
KTsKLSAgICB9LAorICAgIH0KIAotICAgIGFwcGVuZENvbnRlbnROb2RlOiBmdW5jdGlvbihjb250
ZW50Tm9kZSkKKyAgICBhcHBlbmRDb250ZW50Tm9kZShjb250ZW50Tm9kZSkKICAgICB7CiAgICAg
ICAgIHRoaXMuX2NvbnRlbnROb2Rlcy5wdXNoKGNvbnRlbnROb2RlKTsKICAgICAgICAgdGhpcy5k
aXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93LkV2ZW50LkNv
bnRlbnROb2RlV2FzQWRkZWQsIHtub2RlOiBjb250ZW50Tm9kZX0pOwotICAgIH0sCisgICAgfQog
Ci0gICAgcmVtb3ZlQ29udGVudE5vZGU6IGZ1bmN0aW9uKGNvbnRlbnROb2RlKQorICAgIHJlbW92
ZUNvbnRlbnROb2RlKGNvbnRlbnROb2RlKQogICAgIHsKICAgICAgICAgdmFyIGluZGV4ID0gdGhp
cy5fY29udGVudE5vZGVzLmluZGV4T2YoY29udGVudE5vZGUpOwogICAgICAgICBjb25zb2xlLmFz
c2VydChpbmRleCAhPT0gLTEpOwpAQCAtMTA2LDMgKzk3LDkgQEAgV2ViSW5zcGVjdG9yLkNvbnRl
bnRGbG93LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5l
cnMoV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93LkV2ZW50LkNvbnRlbnROb2RlV2FzUmVtb3ZlZCwg
e25vZGU6IGNvbnRlbnROb2RlfSk7CiAgICAgfQogfTsKKworV2ViSW5zcGVjdG9yLkNvbnRlbnRG
bG93LkV2ZW50ID0geworICAgIE92ZXJzZXRXYXNDaGFuZ2VkOiAiY29udGVudC1mbG93LW92ZXJz
ZXQtd2FzLWNoYW5nZWQiLAorICAgIENvbnRlbnROb2RlV2FzQWRkZWQ6ICJjb250ZW50LWZsb3ct
Y29udGVudC1ub2RlLXdhcy1hZGRlZCIsCisgICAgQ29udGVudE5vZGVXYXNSZW1vdmVkOiAiY29u
dGVudC1mbG93LWNvbnRlbnQtbm9kZS13YXMtcmVtb3ZlZCIKK307CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ29va2llU3RvcmFnZU9iamVj
dC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Db29raWVT
dG9yYWdlT2JqZWN0LmpzCmluZGV4IDBhZTYwZjEuLjM4NmI5MTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Db29raWVTdG9yYWdlT2JqZWN0
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Db29r
aWVTdG9yYWdlT2JqZWN0LmpzCkBAIC0yMywyNSArMjMsMjYgQEAKICAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuQ29va2llU3RvcmFnZU9iamVj
dCA9IGZ1bmN0aW9uKGhvc3QpCitXZWJJbnNwZWN0b3IuQ29va2llU3RvcmFnZU9iamVjdCA9IGNs
YXNzIENvb2tpZVN0b3JhZ2VPYmplY3QKIHsKLSAgICB0aGlzLl9ob3N0ID0gaG9zdDsKLX07Cisg
ICAgY29uc3RydWN0b3IoaG9zdCkKKyAgICB7CisgICAgICAgIHRoaXMuX2hvc3QgPSBob3N0Owor
ICAgIH0KIAotV2ViSW5zcGVjdG9yLkNvb2tpZVN0b3JhZ2VPYmplY3QuVHlwZUlkZW50aWZpZXIg
PSAiY29va2llLXN0b3JhZ2UiOwotV2ViSW5zcGVjdG9yLkNvb2tpZVN0b3JhZ2VPYmplY3QuQ29v
a2llSG9zdENvb2tpZUtleSA9ICJjb29raWUtc3RvcmFnZS1ob3N0IjsKLQotV2ViSW5zcGVjdG9y
LkNvb2tpZVN0b3JhZ2VPYmplY3QucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJ
bnNwZWN0b3IuQ29va2llU3RvcmFnZU9iamVjdCwKKyAgICAvLyBQdWJsaWMKIAogICAgIGdldCBo
b3N0KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9ob3N0OwotICAgIH0sCisgICAgfQog
Ci0gICAgc2F2ZUlkZW50aXR5VG9Db29raWU6IGZ1bmN0aW9uKGNvb2tpZSkKKyAgICBzYXZlSWRl
bnRpdHlUb0Nvb2tpZShjb29raWUpCiAgICAgeworICAgICAgICAvLyBGSVhNRTogVGhpcyBjbGFz
cyB3aWxsIG5lZWQgdG8gbG9vayB1cCBjb29raWVzIHRoYXQgYXJlIHNldCBmb3IgdGhpcyBob3N0
LgogICAgICAgICBjb29raWVbV2ViSW5zcGVjdG9yLkNvb2tpZVN0b3JhZ2VPYmplY3QuQ29va2ll
SG9zdENvb2tpZUtleV0gPSB0aGlzLmhvc3Q7Ci0gICAgfQotICAgIC8vIEZJWE1FOiBUaGlzIGNs
YXNzIHdpbGwgbmVlZCB0byBsb29rIHVwIGNvb2tpZXMgdGhhdCBhcmUgc2V0IGZvciB0aGlzIGhv
c3QuCisgICAgfSAgICAKIH07CisKK1dlYkluc3BlY3Rvci5Db29raWVTdG9yYWdlT2JqZWN0LlR5
cGVJZGVudGlmaWVyID0gImNvb2tpZS1zdG9yYWdlIjsKK1dlYkluc3BlY3Rvci5Db29raWVTdG9y
YWdlT2JqZWN0LkNvb2tpZUhvc3RDb29raWVLZXkgPSAiY29va2llLXN0b3JhZ2UtaG9zdCI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRE9N
Tm9kZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9ET01O
b2RlLmpzCmluZGV4IDI1YTNlZjYuLjMwNTdmOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9ET01Ob2RlLmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9ET01Ob2RlLmpzCkBAIC0zMCw5MSArMzAs
ODUgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkRPTU5vZGUgPSBmdW5j
dGlvbihkb21BZ2VudCwgZG9jLCBpc0luU2hhZG93VHJlZSwgcGF5bG9hZCkgewotICAgIFdlYklu
c3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKLQotICAgIHRoaXMuX2RvbUFnZW50ID0gZG9tQWdl
bnQ7Ci0gICAgdGhpcy5faXNJblNoYWRvd1RyZWUgPSBpc0luU2hhZG93VHJlZTsKLQotICAgIHRo
aXMuaWQgPSBwYXlsb2FkLm5vZGVJZDsKLSAgICBkb21BZ2VudC5faWRUb0RPTU5vZGVbdGhpcy5p
ZF0gPSB0aGlzOwotCi0gICAgdGhpcy5fbm9kZVR5cGUgPSBwYXlsb2FkLm5vZGVUeXBlOwotICAg
IHRoaXMuX25vZGVOYW1lID0gcGF5bG9hZC5ub2RlTmFtZTsKLSAgICB0aGlzLl9sb2NhbE5hbWUg
PSBwYXlsb2FkLmxvY2FsTmFtZTsKLSAgICB0aGlzLl9ub2RlVmFsdWUgPSBwYXlsb2FkLm5vZGVW
YWx1ZTsKLSAgICB0aGlzLl9jb21wdXRlZFJvbGUgPSBwYXlsb2FkLnJvbGU7Ci0KLSAgICBpZiAo
dGhpcy5fbm9kZVR5cGUgPT09IE5vZGUuRE9DVU1FTlRfTk9ERSkKLSAgICAgICAgdGhpcy5vd25l
ckRvY3VtZW50ID0gdGhpczsKLSAgICBlbHNlCi0gICAgICAgIHRoaXMub3duZXJEb2N1bWVudCA9
IGRvYzsKLQotICAgIHRoaXMuX2F0dHJpYnV0ZXMgPSBbXTsKLSAgICB0aGlzLl9hdHRyaWJ1dGVz
TWFwID0ge307Ci0gICAgaWYgKHBheWxvYWQuYXR0cmlidXRlcykKLSAgICAgICAgdGhpcy5fc2V0
QXR0cmlidXRlc1BheWxvYWQocGF5bG9hZC5hdHRyaWJ1dGVzKTsKLQotICAgIHRoaXMuX2NoaWxk
Tm9kZUNvdW50ID0gcGF5bG9hZC5jaGlsZE5vZGVDb3VudDsKLSAgICB0aGlzLl9jaGlsZHJlbiA9
IG51bGw7Ci0gICAgdGhpcy5fZmlsdGVyZWRDaGlsZHJlbiA9IG51bGw7Ci0gICAgdGhpcy5fZmls
dGVyZWRDaGlsZHJlbk5lZWRzVXBkYXRpbmcgPSB0cnVlOwotCi0gICAgdGhpcy5fbmV4dFNpYmxp
bmcgPSBudWxsOwotICAgIHRoaXMuX3ByZXZpb3VzU2libGluZyA9IG51bGw7Ci0gICAgdGhpcy5w
YXJlbnROb2RlID0gbnVsbDsKLQotICAgIHRoaXMuX2VuYWJsZWRQc2V1ZG9DbGFzc2VzID0gW107
Ci0KLSAgICB0aGlzLl9zaGFkb3dSb290cyA9IFtdOwotICAgIGlmIChwYXlsb2FkLnNoYWRvd1Jv
b3RzKSB7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGF5bG9hZC5zaGFkb3dSb290cy5s
ZW5ndGg7ICsraSkgewotICAgICAgICAgICAgdmFyIHJvb3QgPSBwYXlsb2FkLnNoYWRvd1Jvb3Rz
W2ldOwotICAgICAgICAgICAgdmFyIG5vZGUgPSBuZXcgV2ViSW5zcGVjdG9yLkRPTU5vZGUodGhp
cy5fZG9tQWdlbnQsIHRoaXMub3duZXJEb2N1bWVudCwgdHJ1ZSwgcm9vdCk7Ci0gICAgICAgICAg
ICB0aGlzLl9zaGFkb3dSb290cy5wdXNoKG5vZGUpOworV2ViSW5zcGVjdG9yLkRPTU5vZGUgPSBj
bGFzcyBET01Ob2RlIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAoreworICAgIGNvbnN0cnVj
dG9yKGRvbUFnZW50LCBkb2MsIGlzSW5TaGFkb3dUcmVlLCBwYXlsb2FkKQorICAgIHsKKyAgICAg
ICAgc3VwZXIoKTsKKworICAgICAgICB0aGlzLl9kb21BZ2VudCA9IGRvbUFnZW50OworICAgICAg
ICB0aGlzLl9pc0luU2hhZG93VHJlZSA9IGlzSW5TaGFkb3dUcmVlOworCisgICAgICAgIHRoaXMu
aWQgPSBwYXlsb2FkLm5vZGVJZDsKKyAgICAgICAgZG9tQWdlbnQuX2lkVG9ET01Ob2RlW3RoaXMu
aWRdID0gdGhpczsKKworICAgICAgICB0aGlzLl9ub2RlVHlwZSA9IHBheWxvYWQubm9kZVR5cGU7
CisgICAgICAgIHRoaXMuX25vZGVOYW1lID0gcGF5bG9hZC5ub2RlTmFtZTsKKyAgICAgICAgdGhp
cy5fbG9jYWxOYW1lID0gcGF5bG9hZC5sb2NhbE5hbWU7CisgICAgICAgIHRoaXMuX25vZGVWYWx1
ZSA9IHBheWxvYWQubm9kZVZhbHVlOworICAgICAgICB0aGlzLl9jb21wdXRlZFJvbGUgPSBwYXls
b2FkLnJvbGU7CisKKyAgICAgICAgaWYgKHRoaXMuX25vZGVUeXBlID09PSBOb2RlLkRPQ1VNRU5U
X05PREUpCisgICAgICAgICAgICB0aGlzLm93bmVyRG9jdW1lbnQgPSB0aGlzOworICAgICAgICBl
bHNlCisgICAgICAgICAgICB0aGlzLm93bmVyRG9jdW1lbnQgPSBkb2M7CisKKyAgICAgICAgdGhp
cy5fYXR0cmlidXRlcyA9IFtdOworICAgICAgICB0aGlzLl9hdHRyaWJ1dGVzTWFwID0ge307Cisg
ICAgICAgIGlmIChwYXlsb2FkLmF0dHJpYnV0ZXMpCisgICAgICAgICAgICB0aGlzLl9zZXRBdHRy
aWJ1dGVzUGF5bG9hZChwYXlsb2FkLmF0dHJpYnV0ZXMpOworCisgICAgICAgIHRoaXMuX2NoaWxk
Tm9kZUNvdW50ID0gcGF5bG9hZC5jaGlsZE5vZGVDb3VudDsKKyAgICAgICAgdGhpcy5fY2hpbGRy
ZW4gPSBudWxsOworICAgICAgICB0aGlzLl9maWx0ZXJlZENoaWxkcmVuID0gbnVsbDsKKyAgICAg
ICAgdGhpcy5fZmlsdGVyZWRDaGlsZHJlbk5lZWRzVXBkYXRpbmcgPSB0cnVlOworCisgICAgICAg
IHRoaXMuX25leHRTaWJsaW5nID0gbnVsbDsKKyAgICAgICAgdGhpcy5fcHJldmlvdXNTaWJsaW5n
ID0gbnVsbDsKKyAgICAgICAgdGhpcy5wYXJlbnROb2RlID0gbnVsbDsKKworICAgICAgICB0aGlz
Ll9lbmFibGVkUHNldWRvQ2xhc3NlcyA9IFtdOworCisgICAgICAgIHRoaXMuX3NoYWRvd1Jvb3Rz
ID0gW107CisgICAgICAgIGlmIChwYXlsb2FkLnNoYWRvd1Jvb3RzKSB7CisgICAgICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IHBheWxvYWQuc2hhZG93Um9vdHMubGVuZ3RoOyArK2kpIHsKKyAg
ICAgICAgICAgICAgICB2YXIgcm9vdCA9IHBheWxvYWQuc2hhZG93Um9vdHNbaV07CisgICAgICAg
ICAgICAgICAgdmFyIG5vZGUgPSBuZXcgV2ViSW5zcGVjdG9yLkRPTU5vZGUodGhpcy5fZG9tQWdl
bnQsIHRoaXMub3duZXJEb2N1bWVudCwgdHJ1ZSwgcm9vdCk7CisgICAgICAgICAgICAgICAgdGhp
cy5fc2hhZG93Um9vdHMucHVzaChub2RlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisg
ICAgICAgIGlmIChwYXlsb2FkLmNoaWxkcmVuKQorICAgICAgICAgICAgdGhpcy5fc2V0Q2hpbGRy
ZW5QYXlsb2FkKHBheWxvYWQuY2hpbGRyZW4pOworCisgICAgICAgIGlmIChwYXlsb2FkLmNvbnRl
bnREb2N1bWVudCkgeworICAgICAgICAgICAgdGhpcy5fY29udGVudERvY3VtZW50ID0gbmV3IFdl
Ykluc3BlY3Rvci5ET01Ob2RlKGRvbUFnZW50LCBudWxsLCBmYWxzZSwgcGF5bG9hZC5jb250ZW50
RG9jdW1lbnQpOworICAgICAgICAgICAgdGhpcy5fY2hpbGRyZW4gPSBbdGhpcy5fY29udGVudERv
Y3VtZW50XTsKKyAgICAgICAgICAgIHRoaXMuX3JlbnVtYmVyKCk7CiAgICAgICAgIH0KLSAgICB9
Ci0KLSAgICBpZiAocGF5bG9hZC5jaGlsZHJlbikKLSAgICAgICAgdGhpcy5fc2V0Q2hpbGRyZW5Q
YXlsb2FkKHBheWxvYWQuY2hpbGRyZW4pOwotCi0gICAgaWYgKHBheWxvYWQuY29udGVudERvY3Vt
ZW50KSB7Ci0gICAgICAgIHRoaXMuX2NvbnRlbnREb2N1bWVudCA9IG5ldyBXZWJJbnNwZWN0b3Iu
RE9NTm9kZShkb21BZ2VudCwgbnVsbCwgZmFsc2UsIHBheWxvYWQuY29udGVudERvY3VtZW50KTsK
LSAgICAgICAgdGhpcy5fY2hpbGRyZW4gPSBbdGhpcy5fY29udGVudERvY3VtZW50XTsKLSAgICAg
ICAgdGhpcy5fcmVudW1iZXIoKTsKLSAgICB9Ci0KLSAgICBpZiAodGhpcy5fbm9kZVR5cGUgPT09
IE5vZGUuRUxFTUVOVF9OT0RFKSB7Ci0gICAgICAgIC8vIEhUTUwgYW5kIEJPRFkgZnJvbSBpbnRl
cm5hbCBpZnJhbWVzIHNob3VsZCBub3Qgb3ZlcndyaXRlIHRvcC1sZXZlbCBvbmVzLgotICAgICAg
ICBpZiAodGhpcy5vd25lckRvY3VtZW50ICYmICF0aGlzLm93bmVyRG9jdW1lbnQuZG9jdW1lbnRF
bGVtZW50ICYmIHRoaXMuX25vZGVOYW1lID09PSAiSFRNTCIpCi0gICAgICAgICAgICB0aGlzLm93
bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50ID0gdGhpczsKLSAgICAgICAgaWYgKHRoaXMub3du
ZXJEb2N1bWVudCAmJiAhdGhpcy5vd25lckRvY3VtZW50LmJvZHkgJiYgdGhpcy5fbm9kZU5hbWUg
PT09ICJCT0RZIikKLSAgICAgICAgICAgIHRoaXMub3duZXJEb2N1bWVudC5ib2R5ID0gdGhpczsK
LSAgICAgICAgaWYgKHBheWxvYWQuZG9jdW1lbnRVUkwpCisKKyAgICAgICAgaWYgKHRoaXMuX25v
ZGVUeXBlID09PSBOb2RlLkVMRU1FTlRfTk9ERSkgeworICAgICAgICAgICAgLy8gSFRNTCBhbmQg
Qk9EWSBmcm9tIGludGVybmFsIGlmcmFtZXMgc2hvdWxkIG5vdCBvdmVyd3JpdGUgdG9wLWxldmVs
IG9uZXMuCisgICAgICAgICAgICBpZiAodGhpcy5vd25lckRvY3VtZW50ICYmICF0aGlzLm93bmVy
RG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50ICYmIHRoaXMuX25vZGVOYW1lID09PSAiSFRNTCIpCisg
ICAgICAgICAgICAgICAgdGhpcy5vd25lckRvY3VtZW50LmRvY3VtZW50RWxlbWVudCA9IHRoaXM7
CisgICAgICAgICAgICBpZiAodGhpcy5vd25lckRvY3VtZW50ICYmICF0aGlzLm93bmVyRG9jdW1l
bnQuYm9keSAmJiB0aGlzLl9ub2RlTmFtZSA9PT0gIkJPRFkiKQorICAgICAgICAgICAgICAgIHRo
aXMub3duZXJEb2N1bWVudC5ib2R5ID0gdGhpczsKKyAgICAgICAgICAgIGlmIChwYXlsb2FkLmRv
Y3VtZW50VVJMKQorICAgICAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRVUkwgPSBwYXlsb2FkLmRv
Y3VtZW50VVJMOworICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX25vZGVUeXBlID09PSBOb2RlLkRP
Q1VNRU5UX1RZUEVfTk9ERSkgeworICAgICAgICAgICAgdGhpcy5wdWJsaWNJZCA9IHBheWxvYWQu
cHVibGljSWQ7CisgICAgICAgICAgICB0aGlzLnN5c3RlbUlkID0gcGF5bG9hZC5zeXN0ZW1JZDsK
KyAgICAgICAgICAgIHRoaXMuaW50ZXJuYWxTdWJzZXQgPSBwYXlsb2FkLmludGVybmFsU3Vic2V0
OworICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX25vZGVUeXBlID09PSBOb2RlLkRPQ1VNRU5UX05P
REUpIHsKICAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRVUkwgPSBwYXlsb2FkLmRvY3VtZW50VVJM
OwotICAgIH0gZWxzZSBpZiAodGhpcy5fbm9kZVR5cGUgPT09IE5vZGUuRE9DVU1FTlRfVFlQRV9O
T0RFKSB7Ci0gICAgICAgIHRoaXMucHVibGljSWQgPSBwYXlsb2FkLnB1YmxpY0lkOwotICAgICAg
ICB0aGlzLnN5c3RlbUlkID0gcGF5bG9hZC5zeXN0ZW1JZDsKLSAgICAgICAgdGhpcy5pbnRlcm5h
bFN1YnNldCA9IHBheWxvYWQuaW50ZXJuYWxTdWJzZXQ7Ci0gICAgfSBlbHNlIGlmICh0aGlzLl9u
b2RlVHlwZSA9PT0gTm9kZS5ET0NVTUVOVF9OT0RFKSB7Ci0gICAgICAgIHRoaXMuZG9jdW1lbnRV
UkwgPSBwYXlsb2FkLmRvY3VtZW50VVJMOwotICAgICAgICB0aGlzLnhtbFZlcnNpb24gPSBwYXls
b2FkLnhtbFZlcnNpb247Ci0gICAgfSBlbHNlIGlmICh0aGlzLl9ub2RlVHlwZSA9PT0gTm9kZS5B
VFRSSUJVVEVfTk9ERSkgewotICAgICAgICB0aGlzLm5hbWUgPSBwYXlsb2FkLm5hbWU7Ci0gICAg
ICAgIHRoaXMudmFsdWUgPSBwYXlsb2FkLnZhbHVlOworICAgICAgICAgICAgdGhpcy54bWxWZXJz
aW9uID0gcGF5bG9hZC54bWxWZXJzaW9uOworICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX25vZGVU
eXBlID09PSBOb2RlLkFUVFJJQlVURV9OT0RFKSB7CisgICAgICAgICAgICB0aGlzLm5hbWUgPSBw
YXlsb2FkLm5hbWU7CisgICAgICAgICAgICB0aGlzLnZhbHVlID0gcGF5bG9hZC52YWx1ZTsKKyAg
ICAgICAgfQogICAgIH0KLX07CiAKLVdlYkluc3BlY3Rvci5PYmplY3QuYWRkQ29uc3RydWN0b3JG
dW5jdGlvbnMoV2ViSW5zcGVjdG9yLkRPTU5vZGUpOwotCi1XZWJJbnNwZWN0b3IuRE9NTm9kZS5F
dmVudCA9IHsKLSAgICBFbmFibGVkUHNldWRvQ2xhc3Nlc0NoYW5nZWQ6ICJkb20tbm9kZS1lbmFi
bGVkLXBzZXVkby1jbGFzc2VzLWRpZC1jaGFuZ2UiLAotICAgIEF0dHJpYnV0ZU1vZGlmaWVkOiAi
ZG9tLW5vZGUtYXR0cmlidXRlLW1vZGlmaWVkIiwKLSAgICBBdHRyaWJ1dGVSZW1vdmVkOiAiZG9t
LW5vZGUtYXR0cmlidXRlLXJlbW92ZWQiCi19OwotCi1XZWJJbnNwZWN0b3IuRE9NTm9kZS5wcm90
b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5ET01Ob2RlLAorICAgIC8v
IFB1YmxpYwogCiAgICAgZ2V0IGNoaWxkcmVuKCkKICAgICB7CkBAIC0xMzIsNyArMTI2LDcgQEAg
V2ViSW5zcGVjdG9yLkRPTU5vZGUucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAg
cmV0dXJuIHRoaXMuX2ZpbHRlcmVkQ2hpbGRyZW47Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQg
Zmlyc3RDaGlsZCgpCiAgICAgewpAQCAtMTQyLDcgKzEzNiw3IEBAIFdlYkluc3BlY3Rvci5ET01O
b2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybiBjaGlsZHJlblswXTsKIAogICAg
ICAgICByZXR1cm4gbnVsbDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBsYXN0Q2hpbGQoKQog
ICAgIHsKQEAgLTE1Miw3ICsxNDYsNyBAQCBXZWJJbnNwZWN0b3IuRE9NTm9kZS5wcm90b3R5cGUg
PSB7CiAgICAgICAgICAgICByZXR1cm4gY2hpbGRyZW4ubGFzdFZhbHVlOwogCiAgICAgICAgIHJl
dHVybiBudWxsOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IG5leHRTaWJsaW5nKCkKICAgICB7
CkBAIC0xNjYsNyArMTYwLDcgQEAgV2ViSW5zcGVjdG9yLkRPTU5vZGUucHJvdG90eXBlID0gewog
ICAgICAgICAgICAgbm9kZSA9IG5vZGUuX25leHRTaWJsaW5nOwogICAgICAgICB9CiAgICAgICAg
IHJldHVybiBudWxsOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHByZXZpb3VzU2libGluZygp
CiAgICAgewpAQCAtMTgwLDcgKzE3NCw3IEBAIFdlYkluc3BlY3Rvci5ET01Ob2RlLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgICAgIG5vZGUgPSBub2RlLl9wcmV2aW91c1NpYmxpbmc7CiAgICAgICAg
IH0KICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgY2hpbGRO
b2RlQ291bnQoKQogICAgIHsKQEAgLTE5Miw5NSArMTg2LDk1IEBAIFdlYkluc3BlY3Rvci5ET01O
b2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybiB0aGlzLl9jaGlsZE5vZGVDb3Vu
dCArIHRoaXMuX3NoYWRvd1Jvb3RzLmxlbmd0aDsKIAogICAgICAgICByZXR1cm4gdGhpcy5fY2hp
bGROb2RlQ291bnQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgY2hpbGROb2RlQ291bnQoY291
bnQpCiAgICAgewogICAgICAgICB0aGlzLl9jaGlsZE5vZGVDb3VudCA9IGNvdW50OwotICAgIH0s
CisgICAgfQogCi0gICAgY29tcHV0ZWRSb2xlOiBmdW5jdGlvbigpCisgICAgY29tcHV0ZWRSb2xl
KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9jb21wdXRlZFJvbGU7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBoYXNBdHRyaWJ1dGVzOiBmdW5jdGlvbigpCisgICAgaGFzQXR0cmlidXRlcygp
CiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fYXR0cmlidXRlcy5sZW5ndGggPiAwOwotICAg
IH0sCisgICAgfQogCi0gICAgaGFzQ2hpbGROb2RlczogZnVuY3Rpb24oKQorICAgIGhhc0NoaWxk
Tm9kZXMoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuY2hpbGROb2RlQ291bnQgPiAwOwot
ICAgIH0sCisgICAgfQogCi0gICAgaGFzU2hhZG93Um9vdHM6IGZ1bmN0aW9uKCkKKyAgICBoYXNT
aGFkb3dSb290cygpCiAgICAgewogICAgICAgICByZXR1cm4gISF0aGlzLl9zaGFkb3dSb290cy5s
ZW5ndGg7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBpc0luU2hhZG93VHJlZTogZnVuY3Rpb24oKQor
ICAgIGlzSW5TaGFkb3dUcmVlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9pc0luU2hh
ZG93VHJlZTsKLSAgICB9LAorICAgIH0KIAotICAgIG5vZGVUeXBlOiBmdW5jdGlvbigpCisgICAg
bm9kZVR5cGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX25vZGVUeXBlOwotICAgIH0s
CisgICAgfQogCi0gICAgbm9kZU5hbWU6IGZ1bmN0aW9uKCkKKyAgICBub2RlTmFtZSgpCiAgICAg
ewogICAgICAgICByZXR1cm4gdGhpcy5fbm9kZU5hbWU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBu
b2RlTmFtZUluQ29ycmVjdENhc2U6IGZ1bmN0aW9uKCkKKyAgICBub2RlTmFtZUluQ29ycmVjdENh
c2UoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuaXNYTUxOb2RlKCkgPyB0aGlzLm5vZGVO
YW1lKCkgOiB0aGlzLm5vZGVOYW1lKCkudG9Mb3dlckNhc2UoKTsKLSAgICB9LAorICAgIH0KIAot
ICAgIHNldE5vZGVOYW1lOiBmdW5jdGlvbihuYW1lLCBjYWxsYmFjaykKKyAgICBzZXROb2RlTmFt
ZShuYW1lLCBjYWxsYmFjaykKICAgICB7CiAgICAgICAgIERPTUFnZW50LnNldE5vZGVOYW1lKHRo
aXMuaWQsIG5hbWUsIHRoaXMuX21ha2VVbmRvYWJsZUNhbGxiYWNrKGNhbGxiYWNrKSk7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBsb2NhbE5hbWU6IGZ1bmN0aW9uKCkKKyAgICBsb2NhbE5hbWUoKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2xvY2FsTmFtZTsKLSAgICB9LAorICAgIH0KIAot
ICAgIG5vZGVWYWx1ZTogZnVuY3Rpb24oKQorICAgIG5vZGVWYWx1ZSgpCiAgICAgewogICAgICAg
ICByZXR1cm4gdGhpcy5fbm9kZVZhbHVlOwotICAgIH0sCisgICAgfQogCi0gICAgc2V0Tm9kZVZh
bHVlOiBmdW5jdGlvbih2YWx1ZSwgY2FsbGJhY2spCisgICAgc2V0Tm9kZVZhbHVlKHZhbHVlLCBj
YWxsYmFjaykKICAgICB7CiAgICAgICAgIERPTUFnZW50LnNldE5vZGVWYWx1ZSh0aGlzLmlkLCB2
YWx1ZSwgdGhpcy5fbWFrZVVuZG9hYmxlQ2FsbGJhY2soY2FsbGJhY2spKTsKLSAgICB9LAorICAg
IH0KIAotICAgIGdldEF0dHJpYnV0ZTogZnVuY3Rpb24obmFtZSkKKyAgICBnZXRBdHRyaWJ1dGUo
bmFtZSkKICAgICB7CiAgICAgICAgIHZhciBhdHRyID0gdGhpcy5fYXR0cmlidXRlc01hcFtuYW1l
XTsKICAgICAgICAgcmV0dXJuIGF0dHIgPyBhdHRyLnZhbHVlIDogdW5kZWZpbmVkOwotICAgIH0s
CisgICAgfQogCi0gICAgc2V0QXR0cmlidXRlOiBmdW5jdGlvbihuYW1lLCB0ZXh0LCBjYWxsYmFj
aykKKyAgICBzZXRBdHRyaWJ1dGUobmFtZSwgdGV4dCwgY2FsbGJhY2spCiAgICAgewogICAgICAg
ICBET01BZ2VudC5zZXRBdHRyaWJ1dGVzQXNUZXh0KHRoaXMuaWQsIHRleHQsIG5hbWUsIHRoaXMu
X21ha2VVbmRvYWJsZUNhbGxiYWNrKGNhbGxiYWNrKSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBz
ZXRBdHRyaWJ1dGVWYWx1ZTogZnVuY3Rpb24obmFtZSwgdmFsdWUsIGNhbGxiYWNrKQorICAgIHNl
dEF0dHJpYnV0ZVZhbHVlKG5hbWUsIHZhbHVlLCBjYWxsYmFjaykKICAgICB7CiAgICAgICAgIERP
TUFnZW50LnNldEF0dHJpYnV0ZVZhbHVlKHRoaXMuaWQsIG5hbWUsIHZhbHVlLCB0aGlzLl9tYWtl
VW5kb2FibGVDYWxsYmFjayhjYWxsYmFjaykpOwotICAgIH0sCisgICAgfQogCi0gICAgYXR0cmli
dXRlczogZnVuY3Rpb24oKQorICAgIGF0dHJpYnV0ZXMoKQogICAgIHsKICAgICAgICAgcmV0dXJu
IHRoaXMuX2F0dHJpYnV0ZXM7Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZW1vdmVBdHRyaWJ1dGU6
IGZ1bmN0aW9uKG5hbWUsIGNhbGxiYWNrKQorICAgIHJlbW92ZUF0dHJpYnV0ZShuYW1lLCBjYWxs
YmFjaykKICAgICB7CiAgICAgICAgIGZ1bmN0aW9uIG15Y2FsbGJhY2soZXJyb3IsIHN1Y2Nlc3Mp
CiAgICAgICAgIHsKQEAgLTI5Nyw5ICsyOTEsOSBAQCBXZWJJbnNwZWN0b3IuRE9NTm9kZS5wcm90
b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9tYWtlVW5kb2FibGVDYWxsYmFjayhjYWxsYmFj
aykoZXJyb3IpOwogICAgICAgICB9CiAgICAgICAgIERPTUFnZW50LnJlbW92ZUF0dHJpYnV0ZSh0
aGlzLmlkLCBuYW1lLCBteWNhbGxiYWNrLmJpbmQodGhpcykpOwotICAgIH0sCisgICAgfQogCi0g
ICAgZ2V0Q2hpbGROb2RlczogZnVuY3Rpb24oY2FsbGJhY2spCisgICAgZ2V0Q2hpbGROb2Rlcyhj
YWxsYmFjaykKICAgICB7CiAgICAgICAgIGlmICh0aGlzLmNoaWxkcmVuKSB7CiAgICAgICAgICAg
ICBpZiAoY2FsbGJhY2spCkBAIC0zMTMsOSArMzA3LDkgQEAgV2ViSW5zcGVjdG9yLkRPTU5vZGUu
cHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgRE9NQWdlbnQucmVxdWVzdENoaWxk
Tm9kZXModGhpcy5pZCwgbXljYWxsYmFjay5iaW5kKHRoaXMpKTsKLSAgICB9LAorICAgIH0KIAot
ICAgIGdldFN1YnRyZWU6IGZ1bmN0aW9uKGRlcHRoLCBjYWxsYmFjaykKKyAgICBnZXRTdWJ0cmVl
KGRlcHRoLCBjYWxsYmFjaykKICAgICB7CiAgICAgICAgIGZ1bmN0aW9uIG15Y2FsbGJhY2soZXJy
b3IpCiAgICAgICAgIHsKQEAgLTMyNCwyNCArMzE4LDI0IEBAIFdlYkluc3BlY3Rvci5ET01Ob2Rl
LnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIERPTUFnZW50LnJlcXVlc3RDaGls
ZE5vZGVzKHRoaXMuaWQsIGRlcHRoLCBteWNhbGxiYWNrLmJpbmQodGhpcykpOwotICAgIH0sCisg
ICAgfQogCi0gICAgZ2V0T3V0ZXJIVE1MOiBmdW5jdGlvbihjYWxsYmFjaykKKyAgICBnZXRPdXRl
ckhUTUwoY2FsbGJhY2spCiAgICAgewogICAgICAgICBET01BZ2VudC5nZXRPdXRlckhUTUwodGhp
cy5pZCwgY2FsbGJhY2spOwotICAgIH0sCisgICAgfQogCi0gICAgc2V0T3V0ZXJIVE1MOiBmdW5j
dGlvbihodG1sLCBjYWxsYmFjaykKKyAgICBzZXRPdXRlckhUTUwoaHRtbCwgY2FsbGJhY2spCiAg
ICAgewogICAgICAgICBET01BZ2VudC5zZXRPdXRlckhUTUwodGhpcy5pZCwgaHRtbCwgdGhpcy5f
bWFrZVVuZG9hYmxlQ2FsbGJhY2soY2FsbGJhY2spKTsKLSAgICB9LAorICAgIH0KIAotICAgIHJl
bW92ZU5vZGU6IGZ1bmN0aW9uKGNhbGxiYWNrKQorICAgIHJlbW92ZU5vZGUoY2FsbGJhY2spCiAg
ICAgewogICAgICAgICBET01BZ2VudC5yZW1vdmVOb2RlKHRoaXMuaWQsIHRoaXMuX21ha2VVbmRv
YWJsZUNhbGxiYWNrKGNhbGxiYWNrKSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjb3B5Tm9kZTog
ZnVuY3Rpb24oKQorICAgIGNvcHlOb2RlKCkKICAgICB7CiAgICAgICAgIGZ1bmN0aW9uIGNvcHko
ZXJyb3IsIHRleHQpCiAgICAgICAgIHsKQEAgLTM0OSwxNCArMzQzLDE0IEBAIFdlYkluc3BlY3Rv
ci5ET01Ob2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JGcm9udGVu
ZEhvc3QuY29weVRleHQodGV4dCk7CiAgICAgICAgIH0KICAgICAgICAgRE9NQWdlbnQuZ2V0T3V0
ZXJIVE1MKHRoaXMuaWQsIGNvcHkpOwotICAgIH0sCisgICAgfQogCi0gICAgZXZlbnRMaXN0ZW5l
cnM6IGZ1bmN0aW9uKGNhbGxiYWNrKQorICAgIGV2ZW50TGlzdGVuZXJzKGNhbGxiYWNrKQogICAg
IHsKICAgICAgICAgRE9NQWdlbnQuZ2V0RXZlbnRMaXN0ZW5lcnNGb3JOb2RlKHRoaXMuaWQsIGNh
bGxiYWNrKTsKLSAgICB9LAorICAgIH0KIAotICAgIGFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzOiBm
dW5jdGlvbihjYWxsYmFjaykKKyAgICBhY2Nlc3NpYmlsaXR5UHJvcGVydGllcyhjYWxsYmFjaykK
ICAgICB7CiAgICAgICAgIGZ1bmN0aW9uIGFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzQ2FsbGJhY2so
ZXJyb3IsIGFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzKQogICAgICAgICB7CkBAIC0zOTQsOSArMzg4
LDkgQEAgV2ViSW5zcGVjdG9yLkRPTU5vZGUucHJvdG90eXBlID0gewogICAgICAgICAgICAgfQog
ICAgICAgICB9CiAgICAgICAgIERPTUFnZW50LmdldEFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzRm9y
Tm9kZSh0aGlzLmlkLCBhY2Nlc3NpYmlsaXR5UHJvcGVydGllc0NhbGxiYWNrLmJpbmQodGhpcykp
OwotICAgIH0sCisgICAgfQogCi0gICAgcGF0aDogZnVuY3Rpb24oKQorICAgIHBhdGgoKQogICAg
IHsKICAgICAgICAgdmFyIHBhdGggPSBbXTsKICAgICAgICAgdmFyIG5vZGUgPSB0aGlzOwpAQCAt
NDA2LDkgKzQwMCw5IEBAIFdlYkluc3BlY3Rvci5ET01Ob2RlLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgfQogICAgICAgICBwYXRoLnJldmVyc2UoKTsKICAgICAgICAgcmV0dXJuIHBhdGguam9pbigi
LCIpOwotICAgIH0sCisgICAgfQogCi0gICAgYXBwcm9wcmlhdGVTZWxlY3RvckZvcjogZnVuY3Rp
b24oanVzdFNlbGVjdG9yKQorICAgIGFwcHJvcHJpYXRlU2VsZWN0b3JGb3IoanVzdFNlbGVjdG9y
KQogICAgIHsKICAgICAgICAgdmFyIGxvd2VyQ2FzZU5hbWUgPSB0aGlzLmxvY2FsTmFtZSgpIHx8
IHRoaXMubm9kZU5hbWUoKS50b0xvd2VyQ2FzZSgpOwogCkBAIC00MzIsOSArNDI2LDkgQEAgV2Vi
SW5zcGVjdG9yLkRPTU5vZGUucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuIGxvd2Vy
Q2FzZU5hbWUgKyAiW3R5cGU9XCIiICsgdGhpcy5nZXRBdHRyaWJ1dGUoInR5cGUiKSArICJcIl0i
OwogCiAgICAgICAgIHJldHVybiBsb3dlckNhc2VOYW1lOwotICAgIH0sCisgICAgfQogCi0gICAg
aXNBbmNlc3RvcjogZnVuY3Rpb24obm9kZSkKKyAgICBpc0FuY2VzdG9yKG5vZGUpCiAgICAgewog
ICAgICAgICBpZiAoIW5vZGUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00NDYsMjIg
KzQ0MCwyMiBAQCBXZWJJbnNwZWN0b3IuRE9NTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAg
ICBjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLnBhcmVudE5vZGU7CiAgICAgICAgIH0KICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIH0sCisgICAgfQogCi0gICAgaXNEZXNjZW5kYW50OiBmdW5j
dGlvbihkZXNjZW5kYW50KQorICAgIGlzRGVzY2VuZGFudChkZXNjZW5kYW50KQogICAgIHsKICAg
ICAgICAgcmV0dXJuIGRlc2NlbmRhbnQgIT09IG51bGwgJiYgZGVzY2VuZGFudC5pc0FuY2VzdG9y
KHRoaXMpOwotICAgIH0sCisgICAgfQogCi0gICAgX3NldEF0dHJpYnV0ZXNQYXlsb2FkOiBmdW5j
dGlvbihhdHRycykKKyAgICBfc2V0QXR0cmlidXRlc1BheWxvYWQoYXR0cnMpCiAgICAgewogICAg
ICAgICB0aGlzLl9hdHRyaWJ1dGVzID0gW107CiAgICAgICAgIHRoaXMuX2F0dHJpYnV0ZXNNYXAg
PSB7fTsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhdHRycy5sZW5ndGg7IGkgKz0gMikK
ICAgICAgICAgICAgIHRoaXMuX2FkZEF0dHJpYnV0ZShhdHRyc1tpXSwgYXR0cnNbaSArIDFdKTsK
LSAgICB9LAorICAgIH0KIAotICAgIF9pbnNlcnRDaGlsZDogZnVuY3Rpb24ocHJldiwgcGF5bG9h
ZCkKKyAgICBfaW5zZXJ0Q2hpbGQocHJldiwgcGF5bG9hZCkKICAgICB7CiAgICAgICAgIHZhciBu
b2RlID0gbmV3IFdlYkluc3BlY3Rvci5ET01Ob2RlKHRoaXMuX2RvbUFnZW50LCB0aGlzLm93bmVy
RG9jdW1lbnQsIHRoaXMuX2lzSW5TaGFkb3dUcmVlLCBwYXlsb2FkKTsKICAgICAgICAgaWYgKCFw
cmV2KSB7CkBAIC00NzQsMTYgKzQ2OCwxNiBAQCBXZWJJbnNwZWN0b3IuRE9NTm9kZS5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9jaGlsZHJlbi5zcGxpY2UodGhpcy5fY2hpbGRyZW4u
aW5kZXhPZihwcmV2KSArIDEsIDAsIG5vZGUpOwogICAgICAgICB0aGlzLl9yZW51bWJlcigpOwog
ICAgICAgICByZXR1cm4gbm9kZTsKLSAgICB9LAorICAgIH0KIAotICAgIF9yZW1vdmVDaGlsZDog
ZnVuY3Rpb24obm9kZSkKKyAgICBfcmVtb3ZlQ2hpbGQobm9kZSkKICAgICB7CiAgICAgICAgIHRo
aXMuX2NoaWxkcmVuLnNwbGljZSh0aGlzLl9jaGlsZHJlbi5pbmRleE9mKG5vZGUpLCAxKTsKICAg
ICAgICAgbm9kZS5wYXJlbnROb2RlID0gbnVsbDsKICAgICAgICAgdGhpcy5fcmVudW1iZXIoKTsK
LSAgICB9LAorICAgIH0KIAotICAgIF9zZXRDaGlsZHJlblBheWxvYWQ6IGZ1bmN0aW9uKHBheWxv
YWRzKQorICAgIF9zZXRDaGlsZHJlblBheWxvYWQocGF5bG9hZHMpCiAgICAgewogICAgICAgICAv
LyBXZSBzZXQgY2hpbGRyZW4gaW4gdGhlIGNvbnN0cnVjdG9yLgogICAgICAgICBpZiAodGhpcy5f
Y29udGVudERvY3VtZW50KQpAQCAtNDk2LDkgKzQ5MCw5IEBAIFdlYkluc3BlY3Rvci5ET01Ob2Rl
LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX2NoaWxkcmVuLnB1c2gobm9kZSk7CiAg
ICAgICAgIH0KICAgICAgICAgdGhpcy5fcmVudW1iZXIoKTsKLSAgICB9LAorICAgIH0KIAotICAg
IF9yZW51bWJlcjogZnVuY3Rpb24oKQorICAgIF9yZW51bWJlcigpCiAgICAgewogICAgICAgICB0
aGlzLl9maWx0ZXJlZENoaWxkcmVuTmVlZHNVcGRhdGluZyA9IHRydWU7CiAKQEAgLTUxMyw0OSAr
NTA3LDQ5IEBAIFdlYkluc3BlY3Rvci5ET01Ob2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAg
IGNoaWxkLl9wcmV2aW91c1NpYmxpbmcgPSBpIC0gMSA+PSAwID8gdGhpcy5fY2hpbGRyZW5baSAt
IDFdIDogbnVsbDsKICAgICAgICAgICAgIGNoaWxkLnBhcmVudE5vZGUgPSB0aGlzOwogICAgICAg
ICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfYWRkQXR0cmlidXRlOiBmdW5jdGlvbihuYW1lLCB2
YWx1ZSkKKyAgICBfYWRkQXR0cmlidXRlKG5hbWUsIHZhbHVlKQogICAgIHsKICAgICAgICAgdmFy
IGF0dHIgPSB7bmFtZSwgdmFsdWUsIF9ub2RlOiB0aGlzfTsKICAgICAgICAgdGhpcy5fYXR0cmli
dXRlc01hcFtuYW1lXSA9IGF0dHI7CiAgICAgICAgIHRoaXMuX2F0dHJpYnV0ZXMucHVzaChhdHRy
KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9zZXRBdHRyaWJ1dGU6IGZ1bmN0aW9uKG5hbWUsIHZh
bHVlKQorICAgIF9zZXRBdHRyaWJ1dGUobmFtZSwgdmFsdWUpCiAgICAgewogICAgICAgICB2YXIg
YXR0ciA9IHRoaXMuX2F0dHJpYnV0ZXNNYXBbbmFtZV07CiAgICAgICAgIGlmIChhdHRyKQogICAg
ICAgICAgICAgYXR0ci52YWx1ZSA9IHZhbHVlOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICB0
aGlzLl9hZGRBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwotICAgIH0sCisgICAgfQogCi0gICAgX3Jl
bW92ZUF0dHJpYnV0ZTogZnVuY3Rpb24obmFtZSkKKyAgICBfcmVtb3ZlQXR0cmlidXRlKG5hbWUp
CiAgICAgewogICAgICAgICB2YXIgYXR0ciA9IHRoaXMuX2F0dHJpYnV0ZXNNYXBbbmFtZV07CiAg
ICAgICAgIGlmIChhdHRyKSB7CiAgICAgICAgICAgICB0aGlzLl9hdHRyaWJ1dGVzLnJlbW92ZShh
dHRyKTsKICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9hdHRyaWJ1dGVzTWFwW25hbWVdOwogICAg
ICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBtb3ZlVG86IGZ1bmN0aW9uKHRhcmdldE5vZGUs
IGFuY2hvck5vZGUsIGNhbGxiYWNrKQorICAgIG1vdmVUbyh0YXJnZXROb2RlLCBhbmNob3JOb2Rl
LCBjYWxsYmFjaykKICAgICB7CiAgICAgICAgIERPTUFnZW50Lm1vdmVUbyh0aGlzLmlkLCB0YXJn
ZXROb2RlLmlkLCBhbmNob3JOb2RlID8gYW5jaG9yTm9kZS5pZCA6IHVuZGVmaW5lZCwgdGhpcy5f
bWFrZVVuZG9hYmxlQ2FsbGJhY2soY2FsbGJhY2spKTsKLSAgICB9LAorICAgIH0KIAotICAgIGlz
WE1MTm9kZTogZnVuY3Rpb24oKQorICAgIGlzWE1MTm9kZSgpCiAgICAgewogICAgICAgICByZXR1
cm4gISF0aGlzLm93bmVyRG9jdW1lbnQgJiYgISF0aGlzLm93bmVyRG9jdW1lbnQueG1sVmVyc2lv
bjsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBlbmFibGVkUHNldWRvQ2xhc3NlcygpCiAgICAg
ewogICAgICAgICByZXR1cm4gdGhpcy5fZW5hYmxlZFBzZXVkb0NsYXNzZXM7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBzZXRQc2V1ZG9DbGFzc0VuYWJsZWQ6IGZ1bmN0aW9uKHBzZXVkb0NsYXNzLCBl
bmFibGVkKQorICAgIHNldFBzZXVkb0NsYXNzRW5hYmxlZChwc2V1ZG9DbGFzcywgZW5hYmxlZCkK
ICAgICB7CiAgICAgICAgIHZhciBwc2V1ZG9DbGFzc2VzID0gdGhpcy5fZW5hYmxlZFBzZXVkb0Ns
YXNzZXM7CiAgICAgICAgIGlmIChlbmFibGVkKSB7CkBAIC01NzUsOSArNTY5LDkgQEAgV2ViSW5z
cGVjdG9yLkRPTU5vZGUucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgQ1NTQWdl
bnQuZm9yY2VQc2V1ZG9TdGF0ZSh0aGlzLmlkLCBwc2V1ZG9DbGFzc2VzLCBjaGFuZ2VkLmJpbmQo
dGhpcykpOwotICAgIH0sCisgICAgfQogCi0gICAgX21ha2VVbmRvYWJsZUNhbGxiYWNrOiBmdW5j
dGlvbihjYWxsYmFjaykKKyAgICBfbWFrZVVuZG9hYmxlQ2FsbGJhY2soY2FsbGJhY2spCiAgICAg
ewogICAgICAgICByZXR1cm4gZnVuY3Rpb24oZXJyb3IpCiAgICAgICAgIHsKQEAgLTU5MCw0ICs1
ODQsOCBAQCBXZWJJbnNwZWN0b3IuRE9NTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgfQogfTsKIAot
V2ViSW5zcGVjdG9yLkRPTU5vZGUucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5P
YmplY3QucHJvdG90eXBlOworV2ViSW5zcGVjdG9yLkRPTU5vZGUuRXZlbnQgPSB7CisgICAgRW5h
YmxlZFBzZXVkb0NsYXNzZXNDaGFuZ2VkOiAiZG9tLW5vZGUtZW5hYmxlZC1wc2V1ZG8tY2xhc3Nl
cy1kaWQtY2hhbmdlIiwKKyAgICBBdHRyaWJ1dGVNb2RpZmllZDogImRvbS1ub2RlLWF0dHJpYnV0
ZS1tb2RpZmllZCIsCisgICAgQXR0cmlidXRlUmVtb3ZlZDogImRvbS1ub2RlLWF0dHJpYnV0ZS1y
ZW1vdmVkIgorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01vZGVscy9ET01Ob2RlU3R5bGVzLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvTW9kZWxzL0RPTU5vZGVTdHlsZXMuanMKaW5kZXggNzI1MjY3MS4uODZkZWM1OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0RP
TU5vZGVTdHlsZXMuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
TW9kZWxzL0RPTU5vZGVTdHlsZXMuanMKQEAgLTIzLDYwICsyMyw1MiBAQAogICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5ET01Ob2RlU3R5bGVz
ID0gZnVuY3Rpb24obm9kZSkKK1dlYkluc3BlY3Rvci5ET01Ob2RlU3R5bGVzID0gY2xhc3MgRE9N
Tm9kZVN0eWxlcyBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIHsKLSAgICBXZWJJbnNwZWN0
b3IuT2JqZWN0LmNhbGwodGhpcyk7CisgICAgY29uc3RydWN0b3Iobm9kZSkKKyAgICB7CisgICAg
ICAgIHN1cGVyKCk7CiAKLSAgICBjb25zb2xlLmFzc2VydChub2RlKTsKLSAgICB0aGlzLl9ub2Rl
ID0gbm9kZSB8fCBudWxsOworICAgICAgICBjb25zb2xlLmFzc2VydChub2RlKTsKKyAgICAgICAg
dGhpcy5fbm9kZSA9IG5vZGUgfHwgbnVsbDsKIAotICAgIHRoaXMuX3J1bGVzTWFwID0ge307Ci0g
ICAgdGhpcy5fc3R5bGVEZWNsYXJhdGlvbnNNYXAgPSB7fTsKKyAgICAgICAgdGhpcy5fcnVsZXNN
YXAgPSB7fTsKKyAgICAgICAgdGhpcy5fc3R5bGVEZWNsYXJhdGlvbnNNYXAgPSB7fTsKIAotICAg
IHRoaXMuX21hdGNoZWRSdWxlcyA9IFtdOwotICAgIHRoaXMuX2luaGVyaXRlZFJ1bGVzID0gW107
Ci0gICAgdGhpcy5fcHNldWRvRWxlbWVudHMgPSB7fTsKLSAgICB0aGlzLl9pbmxpbmVTdHlsZSA9
IG51bGw7Ci0gICAgdGhpcy5fYXR0cmlidXRlc1N0eWxlID0gbnVsbDsKLSAgICB0aGlzLl9jb21w
dXRlZFN0eWxlID0gbnVsbDsKLSAgICB0aGlzLl9vcmRlcmVkU3R5bGVzID0gW107Ci0gICAgdGhp
cy5fc3R5bGVzTmVlZGluZ1RleHRDb21taXRlZCA9IFtdOworICAgICAgICB0aGlzLl9tYXRjaGVk
UnVsZXMgPSBbXTsKKyAgICAgICAgdGhpcy5faW5oZXJpdGVkUnVsZXMgPSBbXTsKKyAgICAgICAg
dGhpcy5fcHNldWRvRWxlbWVudHMgPSB7fTsKKyAgICAgICAgdGhpcy5faW5saW5lU3R5bGUgPSBu
dWxsOworICAgICAgICB0aGlzLl9hdHRyaWJ1dGVzU3R5bGUgPSBudWxsOworICAgICAgICB0aGlz
Ll9jb21wdXRlZFN0eWxlID0gbnVsbDsKKyAgICAgICAgdGhpcy5fb3JkZXJlZFN0eWxlcyA9IFtd
OworICAgICAgICB0aGlzLl9zdHlsZXNOZWVkaW5nVGV4dENvbW1pdGVkID0gW107CiAKLSAgICB0
aGlzLl9wcm9wZXJ0eU5hbWVUb0VmZmVjdGl2ZVByb3BlcnR5TWFwID0ge307CisgICAgICAgIHRo
aXMuX3Byb3BlcnR5TmFtZVRvRWZmZWN0aXZlUHJvcGVydHlNYXAgPSB7fTsKIAotICAgIHRoaXMu
cmVmcmVzaCgpOwotfTsKLQotV2ViSW5zcGVjdG9yLk9iamVjdC5hZGRDb25zdHJ1Y3RvckZ1bmN0
aW9ucyhXZWJJbnNwZWN0b3IuRE9NTm9kZVN0eWxlcyk7Ci0KLVdlYkluc3BlY3Rvci5ET01Ob2Rl
U3R5bGVzLkV2ZW50ID0gewotICAgIE5lZWRzUmVmcmVzaDogImRvbS1ub2RlLXN0eWxlcy1uZWVk
cy1yZWZyZXNoIiwKLSAgICBSZWZyZXNoZWQ6ICJkb20tbm9kZS1zdHlsZXMtcmVmcmVzaGVkIgot
fTsKLQotV2ViSW5zcGVjdG9yLkRPTU5vZGVTdHlsZXMucHJvdG90eXBlID0gewotICAgIGNvbnN0
cnVjdG9yOiBXZWJJbnNwZWN0b3IuRE9NTm9kZVN0eWxlcywKKyAgICAgICAgdGhpcy5yZWZyZXNo
KCk7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgbm9kZSgpCiAgICAgewogICAg
ICAgICByZXR1cm4gdGhpcy5fbm9kZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBuZWVkc1Jl
ZnJlc2goKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3JlZnJlc2hQZW5kaW5nIHx8IHRo
aXMuX25lZWRzUmVmcmVzaDsKLSAgICB9LAorICAgIH0KIAotICAgIHJlZnJlc2hJZk5lZWRlZDog
ZnVuY3Rpb24oKQorICAgIHJlZnJlc2hJZk5lZWRlZCgpCiAgICAgewogICAgICAgICBpZiAoIXRo
aXMuX25lZWRzUmVmcmVzaCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgdGhpcy5yZWZy
ZXNoKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZWZyZXNoOiBmdW5jdGlvbigpCisgICAgcmVm
cmVzaCgpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fcmVmcmVzaFBlbmRpbmcpCiAgICAgICAg
ICAgICByZXR1cm47CkBAIC0yNDYsOSArMjM4LDkgQEAgV2ViSW5zcGVjdG9yLkRPTU5vZGVTdHls
ZXMucHJvdG90eXBlID0gewogICAgICAgICBDU1NBZ2VudC5nZXRNYXRjaGVkU3R5bGVzRm9yTm9k
ZS5pbnZva2Uoe25vZGVJZDogdGhpcy5fbm9kZS5pZCwgaW5jbHVkZVBzZXVkbzogdHJ1ZSwgaW5j
bHVkZUluaGVyaXRlZDogdHJ1ZX0sIGZldGNoZWRNYXRjaGVkU3R5bGVzLmJpbmQodGhpcykpOwog
ICAgICAgICBDU1NBZ2VudC5nZXRJbmxpbmVTdHlsZXNGb3JOb2RlLmludm9rZSh7bm9kZUlkOiB0
aGlzLl9ub2RlLmlkfSwgZmV0Y2hlZElubGluZVN0eWxlcy5iaW5kKHRoaXMpKTsKICAgICAgICAg
Q1NTQWdlbnQuZ2V0Q29tcHV0ZWRTdHlsZUZvck5vZGUuaW52b2tlKHtub2RlSWQ6IHRoaXMuX25v
ZGUuaWR9LCBmZXRjaGVkQ29tcHV0ZWRTdHlsZS5iaW5kKHRoaXMpKTsKLSAgICB9LAorICAgIH0K
IAotICAgIGFkZEVtcHR5UnVsZTogZnVuY3Rpb24oKQorICAgIGFkZEVtcHR5UnVsZSgpCiAgICAg
ewogICAgICAgICBmdW5jdGlvbiBhZGRlZFJ1bGUoZXJyb3IsIHJ1bGVQYXlsb2FkKQogICAgICAg
ICB7CkBAIC0yNjMsNjMgKzI1NSw2MyBAQCBXZWJJbnNwZWN0b3IuRE9NTm9kZVN0eWxlcy5wcm90
b3R5cGUgPSB7CiAgICAgICAgIHNlbGVjdG9yID0gdGhpcy5fbm9kZS5hcHByb3ByaWF0ZVNlbGVj
dG9yRm9yKHRydWUpOwogCiAgICAgICAgIENTU0FnZW50LmFkZFJ1bGUuaW52b2tlKHtjb250ZXh0
Tm9kZUlkOiB0aGlzLl9ub2RlLmlkLCBzZWxlY3Rvcn0sIGFkZGVkUnVsZS5iaW5kKHRoaXMpKTsK
LSAgICB9LAorICAgIH0KIAogICAgIGdldCBtYXRjaGVkUnVsZXMoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHRoaXMuX21hdGNoZWRSdWxlczsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBpbmhl
cml0ZWRSdWxlcygpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5faW5oZXJpdGVkUnVsZXM7
Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgaW5saW5lU3R5bGUoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHRoaXMuX2lubGluZVN0eWxlOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGF0dHJp
YnV0ZXNTdHlsZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fYXR0cmlidXRlc1N0eWxl
OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHBzZXVkb0VsZW1lbnRzKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiB0aGlzLl9wc2V1ZG9FbGVtZW50czsKLSAgICB9LAorICAgIH0KIAogICAgIGdl
dCBjb21wdXRlZFN0eWxlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9jb21wdXRlZFN0
eWxlOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IG9yZGVyZWRTdHlsZXMoKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHRoaXMuX29yZGVyZWRTdHlsZXM7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBl
ZmZlY3RpdmVQcm9wZXJ0eUZvck5hbWU6IGZ1bmN0aW9uKG5hbWUpCisgICAgZWZmZWN0aXZlUHJv
cGVydHlGb3JOYW1lKG5hbWUpCiAgICAgewogICAgICAgICB2YXIgY2Fub25pY2FsTmFtZSA9IFdl
Ykluc3BlY3Rvci5jc3NTdHlsZU1hbmFnZXIuY2Fub25pY2FsTmFtZUZvclByb3BlcnR5TmFtZShu
YW1lKTsKICAgICAgICAgcmV0dXJuIHRoaXMuX3Byb3BlcnR5TmFtZVRvRWZmZWN0aXZlUHJvcGVy
dHlNYXBbY2Fub25pY2FsTmFtZV0gfHwgbnVsbDsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFBy
b3RlY3RlZAogCi0gICAgbWVkaWFRdWVyeVJlc3VsdERpZENoYW5nZTogZnVuY3Rpb24oKQorICAg
IG1lZGlhUXVlcnlSZXN1bHREaWRDaGFuZ2UoKQogICAgIHsKICAgICAgICAgdGhpcy5fbWFya0Fz
TmVlZHNSZWZyZXNoKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBwc2V1ZG9DbGFzc2VzRGlkQ2hh
bmdlOiBmdW5jdGlvbihub2RlKQorICAgIHBzZXVkb0NsYXNzZXNEaWRDaGFuZ2Uobm9kZSkKICAg
ICB7CiAgICAgICAgIHRoaXMuX2luY2x1ZGVVc2VyQWdlbnRSdWxlc09uTmV4dFJlZnJlc2ggPSB0
cnVlOwogICAgICAgICB0aGlzLl9tYXJrQXNOZWVkc1JlZnJlc2goKTsKLSAgICB9LAorICAgIH0K
IAotICAgIGF0dHJpYnV0ZURpZENoYW5nZTogZnVuY3Rpb24obm9kZSwgYXR0cmlidXRlTmFtZSkK
KyAgICBhdHRyaWJ1dGVEaWRDaGFuZ2Uobm9kZSwgYXR0cmlidXRlTmFtZSkKICAgICB7CiAgICAg
ICAgIC8vIElnbm9yZSB0aGUgYXR0cmlidXRlIHdlIGtub3cgd2UganVzdCBjaGFuZ2VkIGFuZCBo
YW5kbGVkIGFib3ZlLgogICAgICAgICBpZiAodGhpcy5faWdub3JlTmV4dFN0eWxlQXR0cmlidXRl
RGlkQ2hhbmdlRXZlbnQgJiYgbm9kZSA9PT0gdGhpcy5fbm9kZSAmJiBhdHRyaWJ1dGVOYW1lID09
PSAic3R5bGUiKSB7CkBAIC0zMjgsOSArMzIwLDkgQEAgV2ViSW5zcGVjdG9yLkRPTU5vZGVTdHls
ZXMucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5fbWFya0FzTmVlZHNS
ZWZyZXNoKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjaGFuZ2VSdWxlU2VsZWN0b3I6IGZ1bmN0
aW9uKHJ1bGUsIHNlbGVjdG9yKQorICAgIGNoYW5nZVJ1bGVTZWxlY3RvcihydWxlLCBzZWxlY3Rv
cikKICAgICB7CiAgICAgICAgIHNlbGVjdG9yID0gc2VsZWN0b3IgfHwgIiI7CiAKQEAgLTM0Nyw0
MSArMzM5LDQxIEBAIFdlYkluc3BlY3Rvci5ET01Ob2RlU3R5bGVzLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgdGhpcy5faWdub3JlTmV4dENvbnRlbnREaWRDaGFuZ2VGb3JTdHlsZVNoZWV0ID0gcnVs
ZS5vd25lclN0eWxlU2hlZXQ7CiAKICAgICAgICAgQ1NTQWdlbnQuc2V0UnVsZVNlbGVjdG9yKHJ1
bGUuaWQsIHNlbGVjdG9yLCBydWxlU2VsZWN0b3JDaGFuZ2VkLmJpbmQodGhpcykpOwotICAgIH0s
CisgICAgfQogCi0gICAgY2hhbmdlU3R5bGVUZXh0OiBmdW5jdGlvbihzdHlsZSwgdGV4dCkKKyAg
ICBjaGFuZ2VTdHlsZVRleHQoc3R5bGUsIHRleHQpCiAgICAgewogICAgICAgICBpZiAoIXN0eWxl
Lm93bmVyU3R5bGVTaGVldCB8fCAhc3R5bGUuc3R5bGVTaGVldFRleHRSYW5nZSkKICAgICAgICAg
ICAgIHJldHVybjsKIAogICAgICAgICB0ZXh0ID0gdGV4dCB8fCAiIjsKIAorICAgICAgICBmdW5j
dGlvbiBzdHlsZUNoYW5nZWQoZXJyb3IsIHN0eWxlUGF5bG9hZCkKKyAgICAgICAgeworICAgICAg
ICAgICAgaWYgKGVycm9yKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHRo
aXMucmVmcmVzaCgpOworICAgICAgICB9CisKICAgICAgICAgaWYgKENTU0FnZW50LnNldFN0eWxl
VGV4dCkgewotICAgICAgICAgICAgZnVuY3Rpb24gc3R5bGVDaGFuZ2VkKGVycm9yLCBzdHlsZVBh
eWxvYWQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYgKGVycm9yKQotICAgICAg
ICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgdGhpcy5yZWZyZXNoKCk7Ci0g
ICAgICAgICAgICB9Ci0KICAgICAgICAgICAgIENTU0FnZW50LnNldFN0eWxlVGV4dChzdHlsZS5p
ZCwgdGV4dCwgc3R5bGVDaGFuZ2VkLmJpbmQodGhpcykpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKICAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDYpOiBDU1NBZ2VudC5z
ZXRTdHlsZVRleHQgd2FzIG5vdCBhdmFpbGFibGUgaW4gaU9TIDYuCiAKKyAgICAgICAgZnVuY3Rp
b24gYXR0cmlidXRlQ2hhbmdlZChlcnJvcikKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGVy
cm9yKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHRoaXMucmVmcmVzaCgp
OworICAgICAgICB9CisKICAgICAgICAgLy8gU2V0dGluZyB0aGUgdGV4dCBvbiBDU1NTdHlsZVNo
ZWV0IGZvciBpbmxpbmUgc3R5bGVzIGNhdXNlcyBhIGNyYXNoLiBodHRwczovL3dlYmtpdC5vcmcv
Yi8xMTAzNTkKICAgICAgICAgLy8gU28gd2UganVzdCBzZXQgdGhlIHN0eWxlIGF0dHJpYnV0ZSB0
byBnZXQgdGhlIHNhbWUgYWZmZWN0LiBUaGlzIGFsc28gYXZvaWRzIFNvdXJjZUNvZGVSZXZpc2lv
bnMuCiAgICAgICAgIGlmIChzdHlsZS50eXBlID09PSBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNs
YXJhdGlvbi5UeXBlLklubGluZSkgewogICAgICAgICAgICAgdGV4dCA9IHRleHQudHJpbSgpOwog
Ci0gICAgICAgICAgICBmdW5jdGlvbiBhdHRyaWJ1dGVDaGFuZ2VkKGVycm9yKQotICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIGlmIChlcnJvcikKLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICAgICAgICAgIHRoaXMucmVmcmVzaCgpOwotICAgICAgICAgICAgfQotCiAg
ICAgICAgICAgICB0aGlzLl9pZ25vcmVOZXh0U3R5bGVBdHRyaWJ1dGVEaWRDaGFuZ2VFdmVudCA9
IHRydWU7CiAKICAgICAgICAgICAgIGlmICh0ZXh0KQpAQCAtNDQ5LDExICs0NDEsMTEgQEAgV2Vi
SW5zcGVjdG9yLkRPTU5vZGVTdHlsZXMucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9pZ25v
cmVOZXh0Q29udGVudERpZENoYW5nZUZvclN0eWxlU2hlZXQgPSBzdHlsZS5vd25lclN0eWxlU2hl
ZXQ7CiAKICAgICAgICAgc3R5bGUub3duZXJTdHlsZVNoZWV0LnJlcXVlc3RDb250ZW50KCkudGhl
bihmZXRjaGVkU3R5bGVTaGVldENvbnRlbnQuYmluZCh0aGlzKSk7Ci0gICAgfSwKKyAgICB9CiAK
ICAgICAvLyBQcml2YXRlCiAKLSAgICBfY3JlYXRlU291cmNlQ29kZUxvY2F0aW9uOiBmdW5jdGlv
bihzb3VyY2VVUkwsIHNvdXJjZUxpbmUsIHNvdXJjZUNvbHVtbikKKyAgICBfY3JlYXRlU291cmNl
Q29kZUxvY2F0aW9uKHNvdXJjZVVSTCwgc291cmNlTGluZSwgc291cmNlQ29sdW1uKQogICAgIHsK
ICAgICAgICAgaWYgKCFzb3VyY2VVUkwpCiAgICAgICAgICAgICByZXR1cm4gbnVsbDsKQEAgLTQ3
Nyw5ICs0NjksOSBAQCBXZWJJbnNwZWN0b3IuRE9NTm9kZVN0eWxlcy5wcm90b3R5cGUgPSB7CiAg
ICAgICAgICAgICByZXR1cm4gbnVsbDsKIAogICAgICAgICByZXR1cm4gc291cmNlQ29kZS5jcmVh
dGVTb3VyY2VDb2RlTG9jYXRpb24oc291cmNlTGluZSB8fCAwLCBzb3VyY2VDb2x1bW4gfHwgMCk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcGFyc2VTb3VyY2VSYW5nZVBheWxvYWQ6IGZ1bmN0aW9u
KHBheWxvYWQsIHRleHQpCisgICAgX3BhcnNlU291cmNlUmFuZ2VQYXlsb2FkKHBheWxvYWQsIHRl
eHQpCiAgICAgewogICAgICAgICBpZiAoIXBheWxvYWQpCiAgICAgICAgICAgICByZXR1cm4gbnVs
bDsKQEAgLTQ5NCw5ICs0ODYsOSBAQCBXZWJJbnNwZWN0b3IuRE9NTm9kZVN0eWxlcy5wcm90b3R5
cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5UZXh0
UmFuZ2UocGF5bG9hZC5zdGFydExpbmUsIHBheWxvYWQuc3RhcnRDb2x1bW4sIHBheWxvYWQuZW5k
TGluZSwgcGF5bG9hZC5lbmRDb2x1bW4pOwotICAgIH0sCisgICAgfQogCi0gICAgX3BhcnNlU3R5
bGVQcm9wZXJ0eVBheWxvYWQ6IGZ1bmN0aW9uKHBheWxvYWQsIGluZGV4LCBzdHlsZURlY2xhcmF0
aW9uLCBzdHlsZVRleHQpCisgICAgX3BhcnNlU3R5bGVQcm9wZXJ0eVBheWxvYWQocGF5bG9hZCwg
aW5kZXgsIHN0eWxlRGVjbGFyYXRpb24sIHN0eWxlVGV4dCkKICAgICB7CiAgICAgICAgIHZhciB0
ZXh0ID0gcGF5bG9hZC50ZXh0IHx8ICIiOwogICAgICAgICB2YXIgbmFtZSA9IHBheWxvYWQubmFt
ZTsKQEAgLTU2NCw5ICs1NTYsOSBAQCBXZWJJbnNwZWN0b3IuRE9NTm9kZVN0eWxlcy5wcm90b3R5
cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5DU1NQ
cm9wZXJ0eShpbmRleCwgdGV4dCwgbmFtZSwgdmFsdWUsIHByaW9yaXR5LCBlbmFibGVkLCBvdmVy
cmlkZGVuLCBpbXBsaWNpdCwgYW5vbnltb3VzLCB2YWxpZCwgc3R5bGVTaGVldFRleHRSYW5nZSwg
c3R5bGVEZWNsYXJhdGlvblRleHRSYW5nZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcGFyc2VT
dHlsZURlY2xhcmF0aW9uUGF5bG9hZDogZnVuY3Rpb24ocGF5bG9hZCwgbm9kZSwgaW5oZXJpdGVk
LCB0eXBlLCBydWxlLCB1cGRhdGVBbGxTdHlsZXMpCisgICAgX3BhcnNlU3R5bGVEZWNsYXJhdGlv
blBheWxvYWQocGF5bG9hZCwgbm9kZSwgaW5oZXJpdGVkLCB0eXBlLCBydWxlLCB1cGRhdGVBbGxT
dHlsZXMpCiAgICAgewogICAgICAgICBpZiAoIXBheWxvYWQpCiAgICAgICAgICAgICByZXR1cm4g
bnVsbDsKQEAgLTY3NCw5ICs2NjYsOSBAQCBXZWJJbnNwZWN0b3IuRE9NTm9kZVN0eWxlcy5wcm90
b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gc3R5bGVEZWNsYXJhdGlvbjsK
LSAgICB9LAorICAgIH0KIAotICAgIF9wYXJzZVNlbGVjdG9yTGlzdFBheWxvYWQ6IGZ1bmN0aW9u
KHNlbGVjdG9yTGlzdCkKKyAgICBfcGFyc2VTZWxlY3Rvckxpc3RQYXlsb2FkKHNlbGVjdG9yTGlz
dCkKICAgICB7CiAgICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyA2KTogVGhlIHBheWxvYWQg
ZGlkIG5vdCBoYXZlICdzZWxlY3Rvckxpc3QnLgogICAgICAgICBpZiAoIXNlbGVjdG9yTGlzdCkK
QEAgLTY5Nyw5ICs2ODksOSBAQCBXZWJJbnNwZWN0b3IuRE9NTm9kZVN0eWxlcy5wcm90b3R5cGUg
PSB7CiAgICAgICAgIHJldHVybiBzZWxlY3RvcnMubWFwKGZ1bmN0aW9uKHNlbGVjdG9yUGF5bG9h
ZCkgewogICAgICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3Ioc2Vs
ZWN0b3JQYXlsb2FkLnRleHQsIHNlbGVjdG9yUGF5bG9hZC5zcGVjaWZpY2l0eSwgc2VsZWN0b3JQ
YXlsb2FkLmR5bmFtaWMpOwogICAgICAgICB9KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9wYXJz
ZVJ1bGVQYXlsb2FkOiBmdW5jdGlvbihwYXlsb2FkLCBtYXRjaGVkU2VsZWN0b3JJbmRpY2VzLCBu
b2RlLCBpbmhlcml0ZWQsIHJ1bGVPY2N1cnJlbmNlcykKKyAgICBfcGFyc2VSdWxlUGF5bG9hZChw
YXlsb2FkLCBtYXRjaGVkU2VsZWN0b3JJbmRpY2VzLCBub2RlLCBpbmhlcml0ZWQsIHJ1bGVPY2N1
cnJlbmNlcykKICAgICB7CiAgICAgICAgIGlmICghcGF5bG9hZCkKICAgICAgICAgICAgIHJldHVy
biBudWxsOwpAQCAtODEyLDE1ICs4MDQsMTUgQEAgV2ViSW5zcGVjdG9yLkRPTU5vZGVTdHlsZXMu
cHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fcnVsZXNNYXBbbWFwS2V5XSA9IHJ1bGU7
CiAKICAgICAgICAgcmV0dXJuIHJ1bGU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfbWFya0FzTmVl
ZHNSZWZyZXNoOiBmdW5jdGlvbigpCisgICAgX21hcmtBc05lZWRzUmVmcmVzaCgpCiAgICAgewog
ICAgICAgICB0aGlzLl9uZWVkc1JlZnJlc2ggPSB0cnVlOwogICAgICAgICB0aGlzLmRpc3BhdGNo
RXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRE9NTm9kZVN0eWxlcy5FdmVudC5OZWVkc1Jl
ZnJlc2gpOwotICAgIH0sCisgICAgfQogCi0gICAgX3N0eWxlU2hlZXRDb250ZW50RGlkQ2hhbmdl
OiBmdW5jdGlvbihldmVudCkKKyAgICBfc3R5bGVTaGVldENvbnRlbnREaWRDaGFuZ2UoZXZlbnQp
CiAgICAgewogICAgICAgICB2YXIgc3R5bGVTaGVldCA9IGV2ZW50LnRhcmdldDsKICAgICAgICAg
Y29uc29sZS5hc3NlcnQoc3R5bGVTaGVldCk7CkBAIC04MzQsOSArODI2LDkgQEAgV2ViSW5zcGVj
dG9yLkRPTU5vZGVTdHlsZXMucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgdGhp
cy5fbWFya0FzTmVlZHNSZWZyZXNoKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdXBkYXRlU3R5
bGVDYXNjYWRlOiBmdW5jdGlvbigpCisgICAgX3VwZGF0ZVN0eWxlQ2FzY2FkZSgpCiAgICAgewog
ICAgICAgICB2YXIgY2FzY2FkZU9yZGVyZWRTdHlsZURlY2xhcmF0aW9ucyA9IHRoaXMuX2NvbGxl
Y3RTdHlsZXNJbkNhc2NhZGVPcmRlcih0aGlzLl9tYXRjaGVkUnVsZXMsIHRoaXMuX2lubGluZVN0
eWxlLCB0aGlzLl9hdHRyaWJ1dGVzU3R5bGUpOwogCkBAIC04NTksOSArODUxLDkgQEAgV2ViSW5z
cGVjdG9yLkRPTU5vZGVTdHlsZXMucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fbWFy
a092ZXJyaWRkZW5Qcm9wZXJ0aWVzKHBzZXVkb0VsZW1lbnRJbmZvLm9yZGVyZWRTdHlsZXMpOwog
ICAgICAgICAgICAgdGhpcy5fYXNzb2NpYXRlUmVsYXRlZFByb3BlcnRpZXMocHNldWRvRWxlbWVu
dEluZm8ub3JkZXJlZFN0eWxlcyk7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAotICAgIF9j
b2xsZWN0U3R5bGVzSW5DYXNjYWRlT3JkZXI6IGZ1bmN0aW9uKG1hdGNoZWRSdWxlcywgaW5saW5l
U3R5bGUsIGF0dHJpYnV0ZXNTdHlsZSkKKyAgICBfY29sbGVjdFN0eWxlc0luQ2FzY2FkZU9yZGVy
KG1hdGNoZWRSdWxlcywgaW5saW5lU3R5bGUsIGF0dHJpYnV0ZXNTdHlsZSkKICAgICB7CiAgICAg
ICAgIHZhciByZXN1bHQgPSBbXTsKIApAQCAtODk3LDkgKzg4OSw5IEBAIFdlYkluc3BlY3Rvci5E
T01Ob2RlU3R5bGVzLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LmNvbmNh
dCh1c2VyQW5kVXNlckFnZW50U3R5bGVzKTsKIAogICAgICAgICByZXR1cm4gcmVzdWx0OwotICAg
IH0sCisgICAgfQogCi0gICAgX21hcmtPdmVycmlkZGVuUHJvcGVydGllczogZnVuY3Rpb24oc3R5
bGVzLCBwcm9wZXJ0eU5hbWVUb0VmZmVjdGl2ZVByb3BlcnR5KQorICAgIF9tYXJrT3ZlcnJpZGRl
blByb3BlcnRpZXMoc3R5bGVzLCBwcm9wZXJ0eU5hbWVUb0VmZmVjdGl2ZVByb3BlcnR5KQogICAg
IHsKICAgICAgICAgcHJvcGVydHlOYW1lVG9FZmZlY3RpdmVQcm9wZXJ0eSA9IHByb3BlcnR5TmFt
ZVRvRWZmZWN0aXZlUHJvcGVydHkgfHwge307CiAKQEAgLTk0MSw5ICs5MzMsOSBAQCBXZWJJbnNw
ZWN0b3IuRE9NTm9kZVN0eWxlcy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgcHJvcGVy
dHlOYW1lVG9FZmZlY3RpdmVQcm9wZXJ0eVtjYW5vbmljYWxOYW1lXSA9IHByb3BlcnR5OwogICAg
ICAgICAgICAgfQogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfYXNzb2NpYXRlUmVs
YXRlZFByb3BlcnRpZXM6IGZ1bmN0aW9uKHN0eWxlcywgcHJvcGVydHlOYW1lVG9FZmZlY3RpdmVQ
cm9wZXJ0eSkKKyAgICBfYXNzb2NpYXRlUmVsYXRlZFByb3BlcnRpZXMoc3R5bGVzLCBwcm9wZXJ0
eU5hbWVUb0VmZmVjdGl2ZVByb3BlcnR5KQogICAgIHsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBzdHlsZXMubGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgIHZhciBwcm9wZXJ0aWVzID0g
c3R5bGVzW2ldLnByb3BlcnRpZXM7CkBAIC0xMDAxLDQgKzk5Myw3IEBAIFdlYkluc3BlY3Rvci5E
T01Ob2RlU3R5bGVzLnByb3RvdHlwZSA9IHsKICAgICB9CiB9OwogCi1XZWJJbnNwZWN0b3IuRE9N
Tm9kZVN0eWxlcy5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90
b3R5cGU7CitXZWJJbnNwZWN0b3IuRE9NTm9kZVN0eWxlcy5FdmVudCA9IHsKKyAgICBOZWVkc1Jl
ZnJlc2g6ICJkb20tbm9kZS1zdHlsZXMtbmVlZHMtcmVmcmVzaCIsCisgICAgUmVmcmVzaGVkOiAi
ZG9tLW5vZGUtc3R5bGVzLXJlZnJlc2hlZCIKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRE9NU2VhcmNoTWF0Y2hPYmplY3QuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRE9NU2VhcmNoTWF0Y2hP
YmplY3QuanMKaW5kZXggZTE0NzAyNS4uOTZlMmJkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0RPTVNlYXJjaE1hdGNoT2JqZWN0LmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9ET01TZWFyY2hN
YXRjaE9iamVjdC5qcwpAQCAtMjMsNTIgKzIzLDg3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkRPTVNlYXJjaE1hdGNoT2JqZWN0ID0g
ZnVuY3Rpb24ocmVzb3VyY2UsIGRvbU5vZGUsIHRpdGxlLCBzZWFyY2hUZXJtLCB0ZXh0UmFuZ2Up
CitXZWJJbnNwZWN0b3IuRE9NU2VhcmNoTWF0Y2hPYmplY3QgPSBjbGFzcyBET01TZWFyY2hNYXRj
aE9iamVjdCBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIHsKLSAgICBjb25zb2xlLmFzc2Vy
dChyZXNvdXJjZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZXNvdXJjZSk7Ci0gICAgY29uc29s
ZS5hc3NlcnQoZG9tTm9kZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5ET01Ob2RlKTsKLQotICAg
IFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKLQotICAgIHRoaXMuX3Jlc291cmNlID0g
cmVzb3VyY2U7Ci0gICAgdGhpcy5fZG9tTm9kZSA9IGRvbU5vZGU7Ci0gICAgdGhpcy5fdGl0bGUg
PSB0aXRsZTsKLSAgICB0aGlzLl9zZWFyY2hUZXJtID0gc2VhcmNoVGVybTsKLSAgICB0aGlzLl9z
b3VyY2VDb2RlVGV4dFJhbmdlID0gcmVzb3VyY2UuY3JlYXRlU291cmNlQ29kZVRleHRSYW5nZSh0
ZXh0UmFuZ2UpOwotfTsKLQotV2ViSW5zcGVjdG9yLkRPTVNlYXJjaE1hdGNoT2JqZWN0LkRPTU1h
dGNoRWxlbWVudEljb25TdHlsZUNsYXNzTmFtZSA9ICJkb20tbWF0Y2gtZWxlbWVudC1pY29uIjsK
LVdlYkluc3BlY3Rvci5ET01TZWFyY2hNYXRjaE9iamVjdC5ET01NYXRjaFRleHROb2RlSWNvblN0
eWxlQ2xhc3NOYW1lID0gImRvbS1tYXRjaC10ZXh0LW5vZGUtaWNvbiI7Ci1XZWJJbnNwZWN0b3Iu
RE9NU2VhcmNoTWF0Y2hPYmplY3QuRE9NTWF0Y2hDb21tZW50SWNvblN0eWxlQ2xhc3NOYW1lID0g
ImRvbS1tYXRjaC1jb21tZW50LWljb24iOwotV2ViSW5zcGVjdG9yLkRPTVNlYXJjaE1hdGNoT2Jq
ZWN0LkRPTU1hdGNoRG9jdW1lbnRUeXBlSWNvblN0eWxlQ2xhc3NOYW1lID0gImRvbS1tYXRjaC1k
b2N1bWVudC10eXBlLWljb24iOwotV2ViSW5zcGVjdG9yLkRPTVNlYXJjaE1hdGNoT2JqZWN0LkRP
TU1hdGNoQ2hhcmFjdGVyRGF0YUljb25TdHlsZUNsYXNzTmFtZSA9ICJkb20tbWF0Y2gtY2hhcmFj
dGVyLWRhdGEtaWNvbiI7Ci1XZWJJbnNwZWN0b3IuRE9NU2VhcmNoTWF0Y2hPYmplY3QuRE9NTWF0
Y2hOb2RlSWNvblN0eWxlQ2xhc3NOYW1lID0gImRvbS1tYXRjaC1ub2RlLWljb24iOwotCi1XZWJJ
bnNwZWN0b3IuRE9NU2VhcmNoTWF0Y2hPYmplY3QuVHlwZUlkZW50aWZpZXIgPSAiZG9tLXNlYXJj
aC1tYXRjaC1vYmplY3QiOwotV2ViSW5zcGVjdG9yLkRPTVNlYXJjaE1hdGNoT2JqZWN0LlVSTENv
b2tpZUtleSA9ICJyZXNvdXJjZS11cmwiOwotV2ViSW5zcGVjdG9yLkRPTVNlYXJjaE1hdGNoT2Jq
ZWN0LlRpdGxlS2V5ID0gInRpdGxlIjsKLVdlYkluc3BlY3Rvci5ET01TZWFyY2hNYXRjaE9iamVj
dC5UZXh0UmFuZ2VLZXkgPSAidGV4dC1yYW5nZSI7Ci0KLVdlYkluc3BlY3Rvci5ET01TZWFyY2hN
YXRjaE9iamVjdC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5E
T01TZWFyY2hNYXRjaE9iamVjdCwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5PYmplY3Qu
cHJvdG90eXBlLAorICAgIGNvbnN0cnVjdG9yKHJlc291cmNlLCBkb21Ob2RlLCB0aXRsZSwgc2Vh
cmNoVGVybSwgdGV4dFJhbmdlKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKKworICAgICAgICBj
b25zb2xlLmFzc2VydChyZXNvdXJjZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZXNvdXJjZSk7
CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGRvbU5vZGUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3Iu
RE9NTm9kZSk7CisKKyAgICAgICAgdGhpcy5fcmVzb3VyY2UgPSByZXNvdXJjZTsKKyAgICAgICAg
dGhpcy5fZG9tTm9kZSA9IGRvbU5vZGU7CisgICAgICAgIHRoaXMuX3RpdGxlID0gdGl0bGU7Cisg
ICAgICAgIHRoaXMuX3NlYXJjaFRlcm0gPSBzZWFyY2hUZXJtOworICAgICAgICB0aGlzLl9zb3Vy
Y2VDb2RlVGV4dFJhbmdlID0gcmVzb3VyY2UuY3JlYXRlU291cmNlQ29kZVRleHRSYW5nZSh0ZXh0
UmFuZ2UpOworICAgIH0KKworICAgIC8vIFN0YXRpYworCisgICAgc3RhdGljIHRpdGxlRm9yRE9N
Tm9kZShkb21Ob2RlKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChkb21Ob2RlLm5vZGVUeXBlKCkp
IHsKKyAgICAgICAgY2FzZSBOb2RlLkVMRU1FTlRfTk9ERToKKyAgICAgICAgICAgIHZhciB0aXRs
ZSA9ICI8IiArIGRvbU5vZGUubm9kZU5hbWVJbkNvcnJlY3RDYXNlKCk7CisgICAgICAgICAgICBm
b3IgKHZhciBhdHRyaWJ1dGUgb2YgZG9tTm9kZS5hdHRyaWJ1dGVzKCkpIHsKKyAgICAgICAgICAg
ICAgICB0aXRsZSArPSAiICIgKyBhdHRyaWJ1dGUubmFtZTsKKyAgICAgICAgICAgICAgICBpZiAo
YXR0cmlidXRlLnZhbHVlLmxlbmd0aCkKKyAgICAgICAgICAgICAgICAgICAgdGl0bGUgKz0gIj1c
IiIgKyBhdHRyaWJ1dGUudmFsdWUgKyAiXCIiOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
cmV0dXJuIHRpdGxlICsgIj4iOworCisgICAgICAgIGNhc2UgTm9kZS5URVhUX05PREU6CisgICAg
ICAgICAgICByZXR1cm4gIlwiIiArIGRvbU5vZGUubm9kZVZhbHVlKCkgKyAiXCIiOworCisgICAg
ICAgIGNhc2UgTm9kZS5DT01NRU5UX05PREU6CisgICAgICAgICAgICByZXR1cm4gIjwhLS0iICsg
ZG9tTm9kZS5ub2RlVmFsdWUoKSArICItLT4iOworCisgICAgICAgIGNhc2UgTm9kZS5ET0NVTUVO
VF9UWVBFX05PREU6CisgICAgICAgICAgICB2YXIgdGl0bGUgPSAiPCFET0NUWVBFICIgKyBkb21O
b2RlLm5vZGVOYW1lKCk7CisgICAgICAgICAgICBpZiAoZG9tTm9kZS5wdWJsaWNJZCkgeworICAg
ICAgICAgICAgICAgIHRpdGxlICs9ICIgUFVCTElDIFwiIiArIGRvbU5vZGUucHVibGljSWQgKyAi
XCIiOworICAgICAgICAgICAgICAgIGlmIChkb21Ob2RlLnN5c3RlbUlkKQorICAgICAgICAgICAg
ICAgICAgICB0aXRsZSArPSAiIFwiIiArIGRvbU5vZGUuc3lzdGVtSWQgKyAiXCIiOworICAgICAg
ICAgICAgfSBlbHNlIGlmIChkb21Ob2RlLnN5c3RlbUlkKQorICAgICAgICAgICAgICAgIHRpdGxl
ICs9ICIgU1lTVEVNIFwiIiArIGRvbU5vZGUuc3lzdGVtSWQgKyAiXCIiOworCisgICAgICAgICAg
ICBpZiAoZG9tTm9kZS5pbnRlcm5hbFN1YnNldCkKKyAgICAgICAgICAgICAgICB0aXRsZSArPSAi
IFsiICsgZG9tTm9kZS5pbnRlcm5hbFN1YnNldCArICJdIjsKKworICAgICAgICAgICAgcmV0dXJu
IHRpdGxlICsgIj4iOworCisgICAgICAgIGNhc2UgTm9kZS5DREFUQV9TRUNUSU9OX05PREU6Cisg
ICAgICAgICAgICByZXR1cm4gIjwhW0NEQVRBWyIgKyBkb21Ob2RlICsgIl1dPiI7CisKKyAgICAg
ICAgY2FzZSBOb2RlLlBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERToKKyAgICAgICAgICAgIHZh
ciBkYXRhID0gZG9tTm9kZS5ub2RlVmFsdWUoKTsKKyAgICAgICAgICAgIHZhciBkYXRhU3RyaW5n
ID0gZGF0YS5sZW5ndGggPyAiICIgKyBkYXRhIDogIiI7CisgICAgICAgICAgICB2YXIgdGl0bGUg
PSAiPD8iICsgZG9tTm9kZS5ub2RlTmFtZUluQ29ycmVjdENhc2UoKSArIGRhdGFTdHJpbmcgKyAi
Pz4iOworICAgICAgICAgICAgcmV0dXJuIHRpdGxlOworCisgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICBjb25zb2xlLmVycm9yKCJVbmtub3duIERPTSBub2RlIHR5cGU6ICIsIGRvbU5vZGUu
bm9kZVR5cGUoKSk7CisgICAgICAgICAgICByZXR1cm4gZG9tTm9kZS5ub2RlTmFtZUluQ29ycmVj
dENhc2UoKTsKKyAgICAgICAgfQorICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IHJl
c291cmNlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZTsKLSAgICB9LAor
ICAgIH0KIAogICAgIGdldCBkb21Ob2RlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9k
b21Ob2RlOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHRpdGxlKCkKICAgICB7CiAgICAgICAg
IHJldHVybiB0aGlzLl90aXRsZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBjbGFzc05hbWUo
KQogICAgIHsKQEAgLTc2LDE3ICsxMTEsMTcgQEAgV2ViSW5zcGVjdG9yLkRPTVNlYXJjaE1hdGNo
T2JqZWN0LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX2NsYXNzTmFtZSA9IHRoaXMu
X2dlbmVyYXRlQ2xhc3NOYW1lKCk7CiAKICAgICAgICAgcmV0dXJuIHRoaXMuX2NsYXNzTmFtZTsK
LSAgICB9LAorICAgIH0KIAogICAgIGdldCBzZWFyY2hUZXJtKCkKICAgICB7CiAgICAgICAgIHJl
dHVybiB0aGlzLl9zZWFyY2hUZXJtOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHNvdXJjZUNv
ZGVUZXh0UmFuZ2UoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3NvdXJjZUNvZGVUZXh0
UmFuZ2U7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzYXZlSWRlbnRpdHlUb0Nvb2tpZShjb29raWUp
CiAgICAgewpAQCAtOTQsNyArMTI5LDcgQEAgV2ViSW5zcGVjdG9yLkRPTVNlYXJjaE1hdGNoT2Jq
ZWN0LnByb3RvdHlwZSA9IHsKICAgICAgICAgY29va2llW1dlYkluc3BlY3Rvci5ET01TZWFyY2hN
YXRjaE9iamVjdC5UaXRsZUtleV0gPSB0aGlzLl90aXRsZTsKICAgICAgICAgdmFyIHRleHRSYW5n
ZSA9IHRoaXMuX3NvdXJjZUNvZGVUZXh0UmFuZ2UudGV4dFJhbmdlOwogICAgICAgICBjb29raWVb
V2ViSW5zcGVjdG9yLkRPTVNlYXJjaE1hdGNoT2JqZWN0LlRleHRSYW5nZUtleV0gPSBbdGV4dFJh
bmdlLnN0YXJ0TGluZSwgdGV4dFJhbmdlLnN0YXJ0Q29sdW1uLCB0ZXh0UmFuZ2UuZW5kTGluZSwg
dGV4dFJhbmdlLmVuZENvbHVtbl0uam9pbigpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJp
dmF0ZQogCkBAIC0xMjcsNDkgKzE2MiwxNCBAQCBXZWJJbnNwZWN0b3IuRE9NU2VhcmNoTWF0Y2hP
YmplY3QucHJvdG90eXBlID0gewogICAgIH0KIH07CiAKLVdlYkluc3BlY3Rvci5ET01TZWFyY2hN
YXRjaE9iamVjdC50aXRsZUZvckRPTU5vZGUgPSBmdW5jdGlvbihkb21Ob2RlKQotewotICAgIHN3
aXRjaCAoZG9tTm9kZS5ub2RlVHlwZSgpKSB7Ci0gICAgY2FzZSBOb2RlLkVMRU1FTlRfTk9ERToK
LSAgICAgICAgdmFyIHRpdGxlID0gIjwiICsgZG9tTm9kZS5ub2RlTmFtZUluQ29ycmVjdENhc2Uo
KTsKLSAgICAgICAgZm9yICh2YXIgYXR0cmlidXRlIG9mIGRvbU5vZGUuYXR0cmlidXRlcygpKSB7
Ci0gICAgICAgICAgICB0aXRsZSArPSAiICIgKyBhdHRyaWJ1dGUubmFtZTsKLSAgICAgICAgICAg
IGlmIChhdHRyaWJ1dGUudmFsdWUubGVuZ3RoKQotICAgICAgICAgICAgICAgIHRpdGxlICs9ICI9
XCIiICsgYXR0cmlidXRlLnZhbHVlICsgIlwiIjsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4g
dGl0bGUgKyAiPiI7Ci0KLSAgICBjYXNlIE5vZGUuVEVYVF9OT0RFOgotICAgICAgICByZXR1cm4g
IlwiIiArIGRvbU5vZGUubm9kZVZhbHVlKCkgKyAiXCIiOwotCi0gICAgY2FzZSBOb2RlLkNPTU1F
TlRfTk9ERToKLSAgICAgICAgcmV0dXJuICI8IS0tIiArIGRvbU5vZGUubm9kZVZhbHVlKCkgKyAi
LS0+IjsKLQotICAgIGNhc2UgTm9kZS5ET0NVTUVOVF9UWVBFX05PREU6Ci0gICAgICAgIHZhciB0
aXRsZSA9ICI8IURPQ1RZUEUgIiArIGRvbU5vZGUubm9kZU5hbWUoKTsKLSAgICAgICAgaWYgKGRv
bU5vZGUucHVibGljSWQpIHsKLSAgICAgICAgICAgIHRpdGxlICs9ICIgUFVCTElDIFwiIiArIGRv
bU5vZGUucHVibGljSWQgKyAiXCIiOwotICAgICAgICAgICAgaWYgKGRvbU5vZGUuc3lzdGVtSWQp
Ci0gICAgICAgICAgICAgICAgdGl0bGUgKz0gIiBcIiIgKyBkb21Ob2RlLnN5c3RlbUlkICsgIlwi
IjsKLSAgICAgICAgfSBlbHNlIGlmIChkb21Ob2RlLnN5c3RlbUlkKQotICAgICAgICAgICAgdGl0
bGUgKz0gIiBTWVNURU0gXCIiICsgZG9tTm9kZS5zeXN0ZW1JZCArICJcIiI7Ci0KLSAgICAgICAg
aWYgKGRvbU5vZGUuaW50ZXJuYWxTdWJzZXQpCi0gICAgICAgICAgICB0aXRsZSArPSAiIFsiICsg
ZG9tTm9kZS5pbnRlcm5hbFN1YnNldCArICJdIjsKLQotICAgICAgICByZXR1cm4gdGl0bGUgKyAi
PiI7Ci0KLSAgICBjYXNlIE5vZGUuQ0RBVEFfU0VDVElPTl9OT0RFOgotICAgICAgICByZXR1cm4g
IjwhW0NEQVRBWyIgKyBkb21Ob2RlICsgIl1dPiI7Ci0KLSAgICBjYXNlIE5vZGUuUFJPQ0VTU0lO
R19JTlNUUlVDVElPTl9OT0RFOgotICAgICAgICB2YXIgZGF0YSA9IGRvbU5vZGUubm9kZVZhbHVl
KCk7Ci0gICAgICAgIHZhciBkYXRhU3RyaW5nID0gZGF0YS5sZW5ndGggPyAiICIgKyBkYXRhIDog
IiI7Ci0gICAgICAgIHZhciB0aXRsZSA9ICI8PyIgKyBkb21Ob2RlLm5vZGVOYW1lSW5Db3JyZWN0
Q2FzZSgpICsgZGF0YVN0cmluZyArICI/PiI7Ci0gICAgICAgIHJldHVybiB0aXRsZTsKLQotICAg
IGRlZmF1bHQ6Ci0gICAgICAgIGNvbnNvbGUuZXJyb3IoIlVua25vd24gRE9NIG5vZGUgdHlwZTog
IiwgZG9tTm9kZS5ub2RlVHlwZSgpKTsKLSAgICAgICAgcmV0dXJuIGRvbU5vZGUubm9kZU5hbWVJ
bkNvcnJlY3RDYXNlKCk7Ci0gICAgfQotfTsKK1dlYkluc3BlY3Rvci5ET01TZWFyY2hNYXRjaE9i
amVjdC5ET01NYXRjaEVsZW1lbnRJY29uU3R5bGVDbGFzc05hbWUgPSAiZG9tLW1hdGNoLWVsZW1l
bnQtaWNvbiI7CitXZWJJbnNwZWN0b3IuRE9NU2VhcmNoTWF0Y2hPYmplY3QuRE9NTWF0Y2hUZXh0
Tm9kZUljb25TdHlsZUNsYXNzTmFtZSA9ICJkb20tbWF0Y2gtdGV4dC1ub2RlLWljb24iOworV2Vi
SW5zcGVjdG9yLkRPTVNlYXJjaE1hdGNoT2JqZWN0LkRPTU1hdGNoQ29tbWVudEljb25TdHlsZUNs
YXNzTmFtZSA9ICJkb20tbWF0Y2gtY29tbWVudC1pY29uIjsKK1dlYkluc3BlY3Rvci5ET01TZWFy
Y2hNYXRjaE9iamVjdC5ET01NYXRjaERvY3VtZW50VHlwZUljb25TdHlsZUNsYXNzTmFtZSA9ICJk
b20tbWF0Y2gtZG9jdW1lbnQtdHlwZS1pY29uIjsKK1dlYkluc3BlY3Rvci5ET01TZWFyY2hNYXRj
aE9iamVjdC5ET01NYXRjaENoYXJhY3RlckRhdGFJY29uU3R5bGVDbGFzc05hbWUgPSAiZG9tLW1h
dGNoLWNoYXJhY3Rlci1kYXRhLWljb24iOworV2ViSW5zcGVjdG9yLkRPTVNlYXJjaE1hdGNoT2Jq
ZWN0LkRPTU1hdGNoTm9kZUljb25TdHlsZUNsYXNzTmFtZSA9ICJkb20tbWF0Y2gtbm9kZS1pY29u
IjsKKworV2ViSW5zcGVjdG9yLkRPTVNlYXJjaE1hdGNoT2JqZWN0LlR5cGVJZGVudGlmaWVyID0g
ImRvbS1zZWFyY2gtbWF0Y2gtb2JqZWN0IjsKK1dlYkluc3BlY3Rvci5ET01TZWFyY2hNYXRjaE9i
amVjdC5VUkxDb29raWVLZXkgPSAicmVzb3VyY2UtdXJsIjsKK1dlYkluc3BlY3Rvci5ET01TZWFy
Y2hNYXRjaE9iamVjdC5UaXRsZUtleSA9ICJ0aXRsZSI7CitXZWJJbnNwZWN0b3IuRE9NU2VhcmNo
TWF0Y2hPYmplY3QuVGV4dFJhbmdlS2V5ID0gInRleHQtcmFuZ2UiOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0RPTVN0b3JhZ2VPYmplY3Qu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRE9NU3RvcmFn
ZU9iamVjdC5qcwppbmRleCA4ZjE3NTk3Li5kYTNhN2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRE9NU3RvcmFnZU9iamVjdC5qcworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRE9NU3RvcmFnZU9i
amVjdC5qcwpAQCAtMjMsNTYgKzIzLDQ3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VPYmplY3QgPSBmdW5jdGlvbihp
ZCwgaG9zdCwgaXNMb2NhbFN0b3JhZ2UpCitXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZU9iamVjdCA9
IGNsYXNzIERPTVN0b3JhZ2VPYmplY3QgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0g
ICAgdGhpcy5faWQgPSBpZDsKLSAgICB0aGlzLl9ob3N0ID0gaG9zdDsKLSAgICB0aGlzLl9pc0xv
Y2FsU3RvcmFnZSA9IGlzTG9jYWxTdG9yYWdlOwotICAgIHRoaXMuX2VudHJpZXMgPSBuZXcgTWFw
OwotfTsKKyAgICBjb25zdHJ1Y3RvcihpZCwgaG9zdCwgaXNMb2NhbFN0b3JhZ2UpCisgICAgewor
ICAgICAgICBzdXBlcigpOwogCi1XZWJJbnNwZWN0b3IuRE9NU3RvcmFnZU9iamVjdC5UeXBlSWRl
bnRpZmllciA9ICJkb20tc3RvcmFnZSI7Ci1XZWJJbnNwZWN0b3IuRE9NU3RvcmFnZU9iamVjdC5I
b3N0Q29va2llS2V5ID0gImRvbS1zdG9yYWdlLW9iamVjdC1ob3N0IjsKLVdlYkluc3BlY3Rvci5E
T01TdG9yYWdlT2JqZWN0LkxvY2FsU3RvcmFnZUNvb2tpZUtleSA9ICJkb20tc3RvcmFnZS1vYmpl
Y3QtbG9jYWwtc3RvcmFnZSI7CisgICAgICAgIHRoaXMuX2lkID0gaWQ7CisgICAgICAgIHRoaXMu
X2hvc3QgPSBob3N0OworICAgICAgICB0aGlzLl9pc0xvY2FsU3RvcmFnZSA9IGlzTG9jYWxTdG9y
YWdlOworICAgICAgICB0aGlzLl9lbnRyaWVzID0gbmV3IE1hcDsKKyAgICB9CiAKLVdlYkluc3Bl
Y3Rvci5ET01TdG9yYWdlT2JqZWN0LkV2ZW50ID0gewotICAgIEl0ZW1zQ2xlYXJlZDogImRvbS1z
dG9yYWdlLW9iamVjdC1pdGVtcy1jbGVhcmVkIiwKLSAgICBJdGVtQWRkZWQ6ICJkb20tc3RvcmFn
ZS1vYmplY3QtaXRlbS1hZGRlZCIsCi0gICAgSXRlbVJlbW92ZWQ6ICJkb20tc3RvcmFnZS1vYmpl
Y3QtaXRlbS1yZW1vdmVkIiwKLSAgICBJdGVtVXBkYXRlZDogImRvbS1zdG9yYWdlLW9iamVjdC11
cGRhdGVkIiwKLX07Ci0KLVdlYkluc3BlY3Rvci5ET01TdG9yYWdlT2JqZWN0LnByb3RvdHlwZSA9
IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VPYmplY3QsCi0gICAg
X19wcm90b19fOiBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZSwKKyAgICAvLyBQdWJsaWMK
IAogICAgIGdldCBpZCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5faWQ7Ci0gICAgfSwK
KyAgICB9CiAKICAgICBnZXQgaG9zdCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5faG9z
dDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBlbnRyaWVzKCkKICAgICB7CiAgICAgICAgIHJl
dHVybiB0aGlzLl9lbnRyaWVzOwotICAgIH0sCisgICAgfQogCi0gICAgc2F2ZUlkZW50aXR5VG9D
b29raWU6IGZ1bmN0aW9uKGNvb2tpZSkKKyAgICBzYXZlSWRlbnRpdHlUb0Nvb2tpZShjb29raWUp
CiAgICAgewogICAgICAgICBjb29raWVbV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VPYmplY3QuSG9z
dENvb2tpZUtleV0gPSB0aGlzLmhvc3Q7CiAgICAgICAgIGNvb2tpZVtXZWJJbnNwZWN0b3IuRE9N
U3RvcmFnZU9iamVjdC5Mb2NhbFN0b3JhZ2VDb29raWVLZXldID0gdGhpcy5pc0xvY2FsU3RvcmFn
ZSgpOwotICAgIH0sCisgICAgfQogCi0gICAgaXNMb2NhbFN0b3JhZ2U6IGZ1bmN0aW9uKCkKKyAg
ICBpc0xvY2FsU3RvcmFnZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5faXNMb2NhbFN0
b3JhZ2U7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBnZXRFbnRyaWVzOiBmdW5jdGlvbihjYWxsYmFj
aykKKyAgICBnZXRFbnRyaWVzKGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgZnVuY3Rpb24gaW5u
ZXJDYWxsYmFjayhlcnJvciwgZW50cmllcykKICAgICAgICAgewpAQCAtOTMsNDAgKzg0LDUxIEBA
IFdlYkluc3BlY3Rvci5ET01TdG9yYWdlT2JqZWN0LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAg
IERPTVN0b3JhZ2VBZ2VudC5nZXRET01TdG9yYWdlRW50cmllcyh0aGlzLl9pZCwgaW5uZXJDYWxs
YmFjay5iaW5kKHRoaXMpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgRE9NU3RvcmFnZUFn
ZW50LmdldERPTVN0b3JhZ2VJdGVtcyh0aGlzLl9pZCwgaW5uZXJDYWxsYmFjay5iaW5kKHRoaXMp
KTsKLSAgICB9LAorICAgIH0KIAotICAgIHJlbW92ZUl0ZW06IGZ1bmN0aW9uKGtleSkKKyAgICBy
ZW1vdmVJdGVtKGtleSkKICAgICB7CiAgICAgICAgIERPTVN0b3JhZ2VBZ2VudC5yZW1vdmVET01T
dG9yYWdlSXRlbSh0aGlzLl9pZCwga2V5KTsKLSAgICB9LAorICAgIH0KIAotICAgIHNldEl0ZW06
IGZ1bmN0aW9uKGtleSwgdmFsdWUpCisgICAgc2V0SXRlbShrZXksIHZhbHVlKQogICAgIHsKICAg
ICAgICAgRE9NU3RvcmFnZUFnZW50LnNldERPTVN0b3JhZ2VJdGVtKHRoaXMuX2lkLCBrZXksIHZh
bHVlKTsKLSAgICB9LAorICAgIH0KIAotICAgIGl0ZW1zQ2xlYXJlZDogZnVuY3Rpb24oKQorICAg
IGl0ZW1zQ2xlYXJlZCgpCiAgICAgewogICAgICAgICB0aGlzLl9lbnRyaWVzLmNsZWFyKCk7CiAg
ICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5ET01TdG9y
YWdlT2JqZWN0LkV2ZW50Lkl0ZW1zQ2xlYXJlZCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBpdGVt
UmVtb3ZlZDogZnVuY3Rpb24oa2V5KQorICAgIGl0ZW1SZW1vdmVkKGtleSkKICAgICB7CiAgICAg
ICAgIHRoaXMuX2VudHJpZXMuZGVsZXRlKGtleSk7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVu
dFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5ET01TdG9yYWdlT2JqZWN0LkV2ZW50Lkl0ZW1SZW1v
dmVkLCB7a2V5fSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBpdGVtQWRkZWQ6IGZ1bmN0aW9uKGtl
eSwgdmFsdWUpCisgICAgaXRlbUFkZGVkKGtleSwgdmFsdWUpCiAgICAgewogICAgICAgICB0aGlz
Ll9lbnRyaWVzLnNldChrZXksIHZhbHVlKTsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9M
aXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VPYmplY3QuRXZlbnQuSXRlbUFkZGVkLCB7
a2V5LCB2YWx1ZX0pOwotICAgIH0sCisgICAgfQogCi0gICAgaXRlbVVwZGF0ZWQ6IGZ1bmN0aW9u
KGtleSwgb2xkVmFsdWUsIHZhbHVlKQorICAgIGl0ZW1VcGRhdGVkKGtleSwgb2xkVmFsdWUsIHZh
bHVlKQogICAgIHsKICAgICAgICAgdGhpcy5fZW50cmllcy5zZXQoa2V5LCB2YWx1ZSk7CiAgICAg
ICAgIHZhciBkYXRhID0ge2tleSwgb2xkVmFsdWUsIHZhbHVlfTsKICAgICAgICAgdGhpcy5kaXNw
YXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VPYmplY3QuRXZlbnQu
SXRlbVVwZGF0ZWQsIGRhdGEpOwogICAgIH0KIH07CisKK1dlYkluc3BlY3Rvci5ET01TdG9yYWdl
T2JqZWN0LlR5cGVJZGVudGlmaWVyID0gImRvbS1zdG9yYWdlIjsKK1dlYkluc3BlY3Rvci5ET01T
dG9yYWdlT2JqZWN0Lkhvc3RDb29raWVLZXkgPSAiZG9tLXN0b3JhZ2Utb2JqZWN0LWhvc3QiOwor
V2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VPYmplY3QuTG9jYWxTdG9yYWdlQ29va2llS2V5ID0gImRv
bS1zdG9yYWdlLW9iamVjdC1sb2NhbC1zdG9yYWdlIjsKKworV2ViSW5zcGVjdG9yLkRPTVN0b3Jh
Z2VPYmplY3QuRXZlbnQgPSB7CisgICAgSXRlbXNDbGVhcmVkOiAiZG9tLXN0b3JhZ2Utb2JqZWN0
LWl0ZW1zLWNsZWFyZWQiLAorICAgIEl0ZW1BZGRlZDogImRvbS1zdG9yYWdlLW9iamVjdC1pdGVt
LWFkZGVkIiwKKyAgICBJdGVtUmVtb3ZlZDogImRvbS1zdG9yYWdlLW9iamVjdC1pdGVtLXJlbW92
ZWQiLAorICAgIEl0ZW1VcGRhdGVkOiAiZG9tLXN0b3JhZ2Utb2JqZWN0LXVwZGF0ZWQiLAorfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9E
T01UcmVlLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0RP
TVRyZWUuanMKaW5kZXggMDBjNWY1MC4uZThhZDQwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0RPTVRyZWUuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0RPTVRyZWUuanMKQEAgLTIzLDYwICsy
Myw1MSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYklu
c3BlY3Rvci5ET01UcmVlID0gZnVuY3Rpb24oZnJhbWUpCitXZWJJbnNwZWN0b3IuRE9NVHJlZSA9
IGNsYXNzIERPTVRyZWUgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0gICAgV2ViSW5z
cGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIGNvbnN0cnVjdG9yKGZyYW1lKQorICAgIHsK
KyAgICAgICAgc3VwZXIoKTsKIAotICAgIHRoaXMuX2ZyYW1lID0gZnJhbWU7CisgICAgICAgIHRo
aXMuX2ZyYW1lID0gZnJhbWU7CiAKLSAgICB0aGlzLl9yb290RE9NTm9kZSA9IG51bGw7Ci0gICAg
dGhpcy5fcmVxdWVzdElkZW50aWZpZXIgPSAwOwotICAgIHRoaXMuX2Zsb3dNYXAgPSB7fTsKKyAg
ICAgICAgdGhpcy5fcm9vdERPTU5vZGUgPSBudWxsOworICAgICAgICB0aGlzLl9yZXF1ZXN0SWRl
bnRpZmllciA9IDA7CisgICAgICAgIHRoaXMuX2Zsb3dNYXAgPSB7fTsKIAotICAgIHRoaXMuX2Zy
YW1lLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkZyYW1lLkV2ZW50LlBhZ2VFeGVjdXRp
b25Db250ZXh0Q2hhbmdlZCwgdGhpcy5fZnJhbWVQYWdlRXhlY3V0aW9uQ29udGV4dENoYW5nZWQs
IHRoaXMpOworICAgICAgICB0aGlzLl9mcmFtZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rv
ci5GcmFtZS5FdmVudC5QYWdlRXhlY3V0aW9uQ29udGV4dENoYW5nZWQsIHRoaXMuX2ZyYW1lUGFn
ZUV4ZWN1dGlvbkNvbnRleHRDaGFuZ2VkLCB0aGlzKTsKIAotICAgIFdlYkluc3BlY3Rvci5kb21U
cmVlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5ET01UcmVlTWFuYWdlci5F
dmVudC5Eb2N1bWVudFVwZGF0ZWQsIHRoaXMuX2RvY3VtZW50VXBkYXRlZCwgdGhpcyk7CisgICAg
ICAgIFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3Bl
Y3Rvci5ET01UcmVlTWFuYWdlci5FdmVudC5Eb2N1bWVudFVwZGF0ZWQsIHRoaXMuX2RvY3VtZW50
VXBkYXRlZCwgdGhpcyk7CiAKLSAgICAvLyBPbmx5IGFkZCBleHRyYSBldmVudCBsaXN0ZW5lcnMg
d2hlbiBub3QgdGhlIG1haW4gZnJhbWUuIFNpbmNlIERvY3VtZW50VXBkYXRlZCBpcyBlbm91Z2gg
Zm9yIHRoZSBtYWluIGZyYW1lLgotICAgIGlmICghdGhpcy5fZnJhbWUuaXNNYWluRnJhbWUoKSkg
ewotICAgICAgICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihX
ZWJJbnNwZWN0b3IuRE9NVHJlZU1hbmFnZXIuRXZlbnQuTm9kZVJlbW92ZWQsIHRoaXMuX25vZGVS
ZW1vdmVkLCB0aGlzKTsKLSAgICAgICAgdGhpcy5fZnJhbWUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJ
bnNwZWN0b3IuRnJhbWUuRXZlbnQuTWFpblJlc291cmNlRGlkQ2hhbmdlLCB0aGlzLl9mcmFtZU1h
aW5SZXNvdXJjZURpZENoYW5nZSwgdGhpcyk7CisgICAgICAgIC8vIE9ubHkgYWRkIGV4dHJhIGV2
ZW50IGxpc3RlbmVycyB3aGVuIG5vdCB0aGUgbWFpbiBmcmFtZS4gU2luY2UgRG9jdW1lbnRVcGRh
dGVkIGlzIGVub3VnaCBmb3IgdGhlIG1haW4gZnJhbWUuCisgICAgICAgIGlmICghdGhpcy5fZnJh
bWUuaXNNYWluRnJhbWUoKSkgeworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5h
Z2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2VyLkV2ZW50Lk5v
ZGVSZW1vdmVkLCB0aGlzLl9ub2RlUmVtb3ZlZCwgdGhpcyk7CisgICAgICAgICAgICB0aGlzLl9m
cmFtZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5GcmFtZS5FdmVudC5NYWluUmVzb3Vy
Y2VEaWRDaGFuZ2UsIHRoaXMuX2ZyYW1lTWFpblJlc291cmNlRGlkQ2hhbmdlLCB0aGlzKTsKKyAg
ICAgICAgfQorCisgICAgICAgIFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5hZGRFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5ET01UcmVlTWFuYWdlci5FdmVudC5Db250ZW50Rmxvd0xpc3RX
YXNVcGRhdGVkLCB0aGlzLl9jb250ZW50Rmxvd0xpc3RXYXNVcGRhdGVkLCB0aGlzKTsKKyAgICAg
ICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVj
dG9yLkRPTVRyZWVNYW5hZ2VyLkV2ZW50LkNvbnRlbnRGbG93V2FzQWRkZWQsIHRoaXMuX2NvbnRl
bnRGbG93V2FzQWRkZWQsIHRoaXMpOworICAgICAgICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFn
ZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NVHJlZU1hbmFnZXIuRXZlbnQuQ29u
dGVudEZsb3dXYXNSZW1vdmVkLCB0aGlzLl9jb250ZW50Rmxvd1dhc1JlbW92ZWQsIHRoaXMpOwog
ICAgIH0KIAotICAgIFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5hZGRFdmVudExpc3RlbmVy
KFdlYkluc3BlY3Rvci5ET01UcmVlTWFuYWdlci5FdmVudC5Db250ZW50Rmxvd0xpc3RXYXNVcGRh
dGVkLCB0aGlzLl9jb250ZW50Rmxvd0xpc3RXYXNVcGRhdGVkLCB0aGlzKTsKLSAgICBXZWJJbnNw
ZWN0b3IuZG9tVHJlZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NVHJl
ZU1hbmFnZXIuRXZlbnQuQ29udGVudEZsb3dXYXNBZGRlZCwgdGhpcy5fY29udGVudEZsb3dXYXNB
ZGRlZCwgdGhpcyk7Ci0gICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLmFkZEV2ZW50TGlz
dGVuZXIoV2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2VyLkV2ZW50LkNvbnRlbnRGbG93V2FzUmVt
b3ZlZCwgdGhpcy5fY29udGVudEZsb3dXYXNSZW1vdmVkLCB0aGlzKTsKLX07Ci0KLVdlYkluc3Bl
Y3Rvci5PYmplY3QuYWRkQ29uc3RydWN0b3JGdW5jdGlvbnMoV2ViSW5zcGVjdG9yLkRPTVRyZWUp
OwotCi1XZWJJbnNwZWN0b3IuRE9NVHJlZS5FdmVudCA9IHsKLSAgICBSb290RE9NTm9kZUludmFs
aWRhdGVkOiAiZG9tLXRyZWUtcm9vdC1kb20tbm9kZS1pbnZhbGlkYXRlZCIsCi0gICAgQ29udGVu
dEZsb3dXYXNBZGRlZDogImRvbS10cmVlLWNvbnRlbnQtZmxvdy13YXMtYWRkZWQiLAotICAgIENv
bnRlbnRGbG93V2FzUmVtb3ZlZDogImRvbS10cmVlLWNvbnRlbnQtZmxvdy13YXMtcmVtb3ZlZCIK
LX07Ci0KLVdlYkluc3BlY3Rvci5ET01UcmVlLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3Rv
cjogV2ViSW5zcGVjdG9yLkRPTVRyZWUsCi0KICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBmcmFt
ZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZnJhbWU7Ci0gICAgfSwKKyAgICB9CiAK
ICAgICBnZXQgZmxvd01hcCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZmxvd01hcDsK
LSAgICB9LAorICAgIH0KIAogICAgIGdldCBmbG93c0NvdW50KCkKICAgICB7CiAgICAgICAgIHJl
dHVybiBPYmplY3Qua2V5cyh0aGlzLl9mbG93TWFwKS5sZW5ndGg7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBpbnZhbGlkYXRlOiBmdW5jdGlvbigpCisgICAgaW52YWxpZGF0ZSgpCiAgICAgewogICAg
ICAgICAvLyBTZXQgdG8gbnVsbCBzbyBpdCBpcyBmZXRjaGVkIGFnYWluIG5leHQgdGltZSByZXF1
ZXN0Um9vdERPTU5vZGUgaXMgY2FsbGVkLgogICAgICAgICB0aGlzLl9yb290RE9NTm9kZSA9IG51
bGw7CkBAIC05Nyw5ICs4OCw5IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlLnByb3RvdHlwZSA9IHsK
IAogICAgICAgICAvLyBEZWxheSB0aGUgaW52YWxpZGF0aW9uIG9uIGEgdGltZW91dCB0byBjb2Fs
ZXNjZSBtdWx0aXBsZSBjYWxscyB0byBpbnZhbGlkYXRlLgogICAgICAgICB0aGlzLl9pbnZhbGlk
YXRlVGltZW91dElkZW50aWZpZXIgPSBzZXRUaW1lb3V0KHBlcmZvcm1JbnZhbGlkYXRlLmJpbmQo
dGhpcyksIDApOwotICAgIH0sCisgICAgfQogCi0gICAgcmVxdWVzdFJvb3RET01Ob2RlOiBmdW5j
dGlvbihjYWxsYmFjaykKKyAgICByZXF1ZXN0Um9vdERPTU5vZGUoY2FsbGJhY2spCiAgICAgewog
ICAgICAgICBjb25zb2xlLmFzc2VydCh0eXBlb2YgY2FsbGJhY2sgPT09ICJmdW5jdGlvbiIpOwog
ICAgICAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAiZnVuY3Rpb24iKQpAQCAtMTI1LDExICsx
MTYsMTkgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWUucHJvdG90eXBlID0gewogCiAgICAgICAgIHRo
aXMuX3BlbmRpbmdSb290RE9NTm9kZVJlcXVlc3RzID0gW2NhbGxiYWNrXTsKICAgICAgICAgdGhp
cy5fcmVxdWVzdFJvb3RET01Ob2RlKCk7Ci0gICAgfSwKKyAgICB9CisKKyAgICByZXF1ZXN0Q29u
dGVudEZsb3dMaXN0KCkKKyAgICB7CisgICAgICAgIHRoaXMucmVxdWVzdFJvb3RET01Ob2RlKGZ1
bmN0aW9uKHJvb3ROb2RlKSB7CisgICAgICAgICAgICAvLyBMZXQgdGhlIGJhY2tlbmQga25vdyB3
ZSBhcmUgaW50ZXJlc3RlZCBhYm91dCB0aGUgbmFtZWQgZmxvdyBldmVudHMgZm9yIHRoaXMgZG9j
dW1lbnQuCisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIuZ2V0TmFtZWRG
bG93Q29sbGVjdGlvbihyb290Tm9kZS5pZCk7CisgICAgICAgIH0pOworICAgIH0KIAogICAgIC8v
IFByaXZhdGUKIAotICAgIF9yZXF1ZXN0Um9vdERPTU5vZGU6IGZ1bmN0aW9uKCkKKyAgICBfcmVx
dWVzdFJvb3RET01Ob2RlKCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2Zy
YW1lLmlzTWFpbkZyYW1lKCkgfHwgIVdlYkluc3BlY3Rvci5FeGVjdXRpb25Db250ZXh0LnN1cHBv
cnRlZCgpIHx8IHRoaXMuX2ZyYW1lLnBhZ2VFeGVjdXRpb25Db250ZXh0KTsKICAgICAgICAgY29u
c29sZS5hc3NlcnQodGhpcy5fcGVuZGluZ1Jvb3RET01Ob2RlUmVxdWVzdHMubGVuZ3RoKTsKQEAg
LTIxMyw5ICsyMTIsOSBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZS5wcm90b3R5cGUgPSB7CiAgICAg
ICAgICAgICB2YXIgY29udGV4dElkID0gdGhpcy5fZnJhbWUucGFnZUV4ZWN1dGlvbkNvbnRleHQg
PyB0aGlzLl9mcmFtZS5wYWdlRXhlY3V0aW9uQ29udGV4dC5pZCA6IHVuZGVmaW5lZDsKICAgICAg
ICAgICAgIFJ1bnRpbWVBZ2VudC5ldmFsdWF0ZS5pbnZva2Uoe2V4cHJlc3Npb246ICJkb2N1bWVu
dCIsIG9iamVjdEdyb3VwOiAiIiwgaW5jbHVkZUNvbW1hbmRMaW5lQVBJOiBmYWxzZSwgZG9Ob3RQ
YXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlOiB0cnVlLCBjb250ZXh0SWQsIGZyYW1lSWQ6
IHRoaXMuX2ZyYW1lLmlkLCByZXR1cm5CeVZhbHVlOiBmYWxzZSwgZ2VuZXJhdGVQcmV2aWV3OiBm
YWxzZX0sIHJvb3RPYmplY3RBdmFpbGFibGUuYmluZCh0aGlzKSk7CiAgICAgICAgIH0KLSAgICB9
LAorICAgIH0KIAotICAgIF9ub2RlUmVtb3ZlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX25vZGVS
ZW1vdmVkKGV2ZW50KQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuX2ZyYW1l
LmlzTWFpbkZyYW1lKCkpOwogCkBAIC0yMjMsMjEgKzIyMiwyMSBAQCBXZWJJbnNwZWN0b3IuRE9N
VHJlZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgdGhpcy5p
bnZhbGlkYXRlKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZG9jdW1lbnRVcGRhdGVkOiBmdW5j
dGlvbihldmVudCkKKyAgICBfZG9jdW1lbnRVcGRhdGVkKGV2ZW50KQogICAgIHsKICAgICAgICAg
dGhpcy5pbnZhbGlkYXRlKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZnJhbWVNYWluUmVzb3Vy
Y2VEaWRDaGFuZ2U6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9mcmFtZU1haW5SZXNvdXJjZURpZENo
YW5nZShldmVudCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9mcmFtZS5p
c01haW5GcmFtZSgpKTsKIAogICAgICAgICB0aGlzLmludmFsaWRhdGUoKTsKLSAgICB9LAorICAg
IH0KIAotICAgIF9mcmFtZVBhZ2VFeGVjdXRpb25Db250ZXh0Q2hhbmdlZDogZnVuY3Rpb24oZXZl
bnQpCisgICAgX2ZyYW1lUGFnZUV4ZWN1dGlvbkNvbnRleHRDaGFuZ2VkKGV2ZW50KQogICAgIHsK
ICAgICAgICAgaWYgKHRoaXMuX3Jvb3RET01Ob2RlUmVxdWVzdFdhaXRpbmdGb3JFeGVjdXRpb25D
b250ZXh0KSB7CiAgICAgICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9mcmFtZS5wYWdlRXhl
Y3V0aW9uQ29udGV4dCk7CkBAIC0yNDcsMjIgKzI0NiwxNCBAQCBXZWJJbnNwZWN0b3IuRE9NVHJl
ZS5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgICAgIHRoaXMuX3JlcXVlc3RSb290RE9NTm9kZSgp
OwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZXF1ZXN0Q29udGVudEZsb3dMaXN0
OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlzLnJlcXVlc3RSb290RE9NTm9kZShmdW5j
dGlvbihyb290Tm9kZSkgewotICAgICAgICAgICAgLy8gTGV0IHRoZSBiYWNrZW5kIGtub3cgd2Ug
YXJlIGludGVyZXN0ZWQgYWJvdXQgdGhlIG5hbWVkIGZsb3cgZXZlbnRzIGZvciB0aGlzIGRvY3Vt
ZW50LgotICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLmdldE5hbWVkRmxv
d0NvbGxlY3Rpb24ocm9vdE5vZGUuaWQpOwotICAgICAgICB9KTsKLSAgICB9LAotCi0gICAgX2lz
Q29udGVudEZsb3dJbkN1cnJlbnREb2N1bWVudDogZnVuY3Rpb24oZmxvdykKKyAgICBfaXNDb250
ZW50Rmxvd0luQ3VycmVudERvY3VtZW50KGZsb3cpCiAgICAgewogICAgICAgICByZXR1cm4gdGhp
cy5fcm9vdERPTU5vZGUgJiYgdGhpcy5fcm9vdERPTU5vZGUuaWQgPT09IGZsb3cuZG9jdW1lbnRO
b2RlSWRlbnRpZmllcjsKLSAgICB9LAorICAgIH0KIAotICAgIF9jb250ZW50Rmxvd0xpc3RXYXNV
cGRhdGVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfY29udGVudEZsb3dMaXN0V2FzVXBkYXRlZChl
dmVudCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fcm9vdERPTU5vZGUgfHwgdGhpcy5fcm9v
dERPTU5vZGUuaWQgIT09IGV2ZW50LmRhdGEuZG9jdW1lbnROb2RlSWRlbnRpZmllcikKICAgICAg
ICAgICAgIHJldHVybjsKQEAgLTMwMiw5ICsyOTMsOSBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZS5w
cm90b3R5cGUgPSB7CiAKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuZXdGbG93cy5sZW5n
dGg7ICsraSkKICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYklu
c3BlY3Rvci5ET01UcmVlLkV2ZW50LkNvbnRlbnRGbG93V2FzQWRkZWQsIHtmbG93OiBuZXdGbG93
c1tpXX0pOwotICAgIH0sCisgICAgfQogCi0gICAgX2NvbnRlbnRGbG93V2FzQWRkZWQ6IGZ1bmN0
aW9uKGV2ZW50KQorICAgIF9jb250ZW50Rmxvd1dhc0FkZGVkKGV2ZW50KQogICAgIHsKICAgICAg
ICAgdmFyIGZsb3cgPSBldmVudC5kYXRhLmZsb3c7CiAgICAgICAgIGlmICghdGhpcy5faXNDb250
ZW50Rmxvd0luQ3VycmVudERvY3VtZW50KGZsb3cpKQpAQCAtMzE1LDkgKzMwNiw5IEBAIFdlYklu
c3BlY3Rvci5ET01UcmVlLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fZmxvd01hcFtmbG93
SWRdID0gZmxvdzsKIAogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJ
bnNwZWN0b3IuRE9NVHJlZS5FdmVudC5Db250ZW50Rmxvd1dhc0FkZGVkLCB7Zmxvd30pOwotICAg
IH0sCisgICAgfQogCi0gICAgX2NvbnRlbnRGbG93V2FzUmVtb3ZlZDogZnVuY3Rpb24oZXZlbnQp
CisgICAgX2NvbnRlbnRGbG93V2FzUmVtb3ZlZChldmVudCkKICAgICB7CiAgICAgICAgIHZhciBm
bG93ID0gZXZlbnQuZGF0YS5mbG93OwogICAgICAgICBpZiAoIXRoaXMuX2lzQ29udGVudEZsb3dJ
bkN1cnJlbnREb2N1bWVudChmbG93KSkKQEAgLTMzMSw0ICszMjIsOCBAQCBXZWJJbnNwZWN0b3Iu
RE9NVHJlZS5wcm90b3R5cGUgPSB7CiAgICAgfQogfTsKIAotV2ViSW5zcGVjdG9yLkRPTVRyZWUu
cHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOworV2Vi
SW5zcGVjdG9yLkRPTVRyZWUuRXZlbnQgPSB7CisgICAgUm9vdERPTU5vZGVJbnZhbGlkYXRlZDog
ImRvbS10cmVlLXJvb3QtZG9tLW5vZGUtaW52YWxpZGF0ZWQiLAorICAgIENvbnRlbnRGbG93V2Fz
QWRkZWQ6ICJkb20tdHJlZS1jb250ZW50LWZsb3ctd2FzLWFkZGVkIiwKKyAgICBDb250ZW50Rmxv
d1dhc1JlbW92ZWQ6ICJkb20tdHJlZS1jb250ZW50LWZsb3ctd2FzLXJlbW92ZWQiCit9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0RhdGFi
YXNlT2JqZWN0LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxz
L0RhdGFiYXNlT2JqZWN0LmpzCmluZGV4IDNiMTc3YjYuLjdlYjIwMDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9EYXRhYmFzZU9iamVjdC5q
cworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRGF0YWJh
c2VPYmplY3QuanMKQEAgLTIzLDUwICsyMyw0NyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5EYXRhYmFzZU9iamVjdCA9IGZ1bmN0aW9u
KGlkLCBob3N0LCBuYW1lLCB2ZXJzaW9uKQorV2ViSW5zcGVjdG9yLkRhdGFiYXNlT2JqZWN0ID0g
Y2xhc3MgRGF0YWJhc2VPYmplY3QgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0gICAg
dGhpcy5faWQgPSBpZDsKLSAgICB0aGlzLl9ob3N0ID0gaG9zdCA/IGhvc3QgOiBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIkxvY2FsIEZpbGUiKTsKLSAgICB0aGlzLl9uYW1lID0gbmFtZTsKLSAgICB0
aGlzLl92ZXJzaW9uID0gdmVyc2lvbjsKLX07CisgICAgY29uc3RydWN0b3IoaWQsIGhvc3QsIG5h
bWUsIHZlcnNpb24pCisgICAgeworICAgICAgICBzdXBlcigpOwogCi1XZWJJbnNwZWN0b3IuRGF0
YWJhc2VPYmplY3QuVHlwZUlkZW50aWZpZXIgPSAiZGF0YWJhc2UiOwotV2ViSW5zcGVjdG9yLkRh
dGFiYXNlT2JqZWN0Lkhvc3RDb29raWVLZXkgPSAiZGF0YWJhc2Utb2JqZWN0LWhvc3QiOwotV2Vi
SW5zcGVjdG9yLkRhdGFiYXNlT2JqZWN0Lk5hbWVDb29raWVLZXkgPSAiZGF0YWJhc2Utb2JqZWN0
LW5hbWUiOwotCi1XZWJJbnNwZWN0b3IuRGF0YWJhc2VPYmplY3QucHJvdG90eXBlID0gewotICAg
IGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuRGF0YWJhc2VPYmplY3QsCisgICAgICAgIHRoaXMu
X2lkID0gaWQ7CisgICAgICAgIHRoaXMuX2hvc3QgPSBob3N0ID8gaG9zdCA6IFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiTG9jYWwgRmlsZSIpOworICAgICAgICB0aGlzLl9uYW1lID0gbmFtZTsKKyAg
ICAgICAgdGhpcy5fdmVyc2lvbiA9IHZlcnNpb247CisgICAgfQogCiAgICAgLy8gUHVibGljCiAK
ICAgICBnZXQgaWQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2lkOwotICAgIH0sCisg
ICAgfQogCiAgICAgZ2V0IGhvc3QoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2hvc3Q7
Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgbmFtZSgpCiAgICAgewogICAgICAgICByZXR1cm4g
dGhpcy5fbmFtZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCB2ZXJzaW9uKCkKICAgICB7CiAg
ICAgICAgIHJldHVybiB0aGlzLl92ZXJzaW9uOwotICAgIH0sCisgICAgfQogCi0gICAgc2F2ZUlk
ZW50aXR5VG9Db29raWU6IGZ1bmN0aW9uKGNvb2tpZSkKKyAgICBzYXZlSWRlbnRpdHlUb0Nvb2tp
ZShjb29raWUpCiAgICAgewogICAgICAgICBjb29raWVbV2ViSW5zcGVjdG9yLkRhdGFiYXNlT2Jq
ZWN0Lkhvc3RDb29raWVLZXldID0gdGhpcy5ob3N0OwogICAgICAgICBjb29raWVbV2ViSW5zcGVj
dG9yLkRhdGFiYXNlT2JqZWN0Lk5hbWVDb29raWVLZXldID0gdGhpcy5uYW1lOwotICAgIH0sCisg
ICAgfQogCi0gICAgZ2V0VGFibGVOYW1lczogZnVuY3Rpb24oY2FsbGJhY2spCisgICAgZ2V0VGFi
bGVOYW1lcyhjYWxsYmFjaykKICAgICB7CiAgICAgICAgIGZ1bmN0aW9uIHNvcnRpbmdDYWxsYmFj
ayhlcnJvciwgbmFtZXMpCiAgICAgICAgIHsKQEAgLTc1LDkgKzcyLDkgQEAgV2ViSW5zcGVjdG9y
LkRhdGFiYXNlT2JqZWN0LnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIERhdGFi
YXNlQWdlbnQuZ2V0RGF0YWJhc2VUYWJsZU5hbWVzKHRoaXMuX2lkLCBzb3J0aW5nQ2FsbGJhY2sp
OwotICAgIH0sCisgICAgfQogCi0gICAgZXhlY3V0ZVNRTDogZnVuY3Rpb24ocXVlcnksIHN1Y2Nl
c3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykKKyAgICBleGVjdXRlU1FMKHF1ZXJ5LCBzdWNjZXNz
Q2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spCiAgICAgewogICAgICAgICBmdW5jdGlvbiBxdWVyeUNh
bGxiYWNrKGNvbHVtbk5hbWVzLCB2YWx1ZXMsIHNxbEVycm9yKQogICAgICAgICB7CkBAIC0xMzMs
MyArMTMwLDcgQEAgV2ViSW5zcGVjdG9yLkRhdGFiYXNlT2JqZWN0LnByb3RvdHlwZSA9IHsKICAg
ICAgICAgRGF0YWJhc2VBZ2VudC5leGVjdXRlU1FMKHRoaXMuX2lkLCBxdWVyeSwgY2FsbGJhY2sp
OwogICAgIH0KIH07CisKK1dlYkluc3BlY3Rvci5EYXRhYmFzZU9iamVjdC5UeXBlSWRlbnRpZmll
ciA9ICJkYXRhYmFzZSI7CitXZWJJbnNwZWN0b3IuRGF0YWJhc2VPYmplY3QuSG9zdENvb2tpZUtl
eSA9ICJkYXRhYmFzZS1vYmplY3QtaG9zdCI7CitXZWJJbnNwZWN0b3IuRGF0YWJhc2VPYmplY3Qu
TmFtZUNvb2tpZUtleSA9ICJkYXRhYmFzZS1vYmplY3QtbmFtZSI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRGF0YWJhc2VUYWJsZU9iamVj
dC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9EYXRhYmFz
ZVRhYmxlT2JqZWN0LmpzCmluZGV4IGE2YThiYTUuLjBjNGUzZTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9EYXRhYmFzZVRhYmxlT2JqZWN0
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9EYXRh
YmFzZVRhYmxlT2JqZWN0LmpzCkBAIC0yMywzNCArMjMsMzUgQEAKICAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuRGF0YWJhc2VUYWJsZU9iamVj
dCA9IGZ1bmN0aW9uKG5hbWUsIGRhdGFiYXNlKQorV2ViSW5zcGVjdG9yLkRhdGFiYXNlVGFibGVP
YmplY3QgPSBjbGFzcyBEYXRhYmFzZVRhYmxlT2JqZWN0IGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9i
amVjdAogewotICAgIGNvbnNvbGUuYXNzZXJ0KGRhdGFiYXNlIGluc3RhbmNlb2YgV2ViSW5zcGVj
dG9yLkRhdGFiYXNlT2JqZWN0KTsKKyAgICBjb25zdHJ1Y3RvcihuYW1lLCBkYXRhYmFzZSkKKyAg
ICB7CisgICAgICAgIHN1cGVyKCk7CiAKLSAgICB0aGlzLl9uYW1lID0gbmFtZTsKLSAgICB0aGlz
Ll9kYXRhYmFzZSA9IGRhdGFiYXNlOwotfTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoZGF0YWJh
c2UgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuRGF0YWJhc2VPYmplY3QpOwogCi1XZWJJbnNwZWN0
b3IuRGF0YWJhc2VUYWJsZU9iamVjdC5UeXBlSWRlbnRpZmllciA9ICJkYXRhYmFzZS10YWJsZSI7
Ci1XZWJJbnNwZWN0b3IuRGF0YWJhc2VUYWJsZU9iamVjdC5OYW1lQ29va2llS2V5ID0gImRhdGFi
YXNlLXRhYmxlLW9iamVjdC1uYW1lIjsKKyAgICAgICAgdGhpcy5fbmFtZSA9IG5hbWU7CisgICAg
ICAgIHRoaXMuX2RhdGFiYXNlID0gZGF0YWJhc2U7CisgICAgfQogCi1XZWJJbnNwZWN0b3IuRGF0
YWJhc2VUYWJsZU9iamVjdC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3Bl
Y3Rvci5EYXRhYmFzZVRhYmxlT2JqZWN0LAorICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IG5hbWUo
KQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX25hbWU7Ci0gICAgfSwKKyAgICB9CiAKICAg
ICBnZXQgZGF0YWJhc2UoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGFiYXNlOwot
ICAgIH0sCisgICAgfQogCi0gICAgc2F2ZUlkZW50aXR5VG9Db29raWU6IGZ1bmN0aW9uKGNvb2tp
ZSkKKyAgICBzYXZlSWRlbnRpdHlUb0Nvb2tpZShjb29raWUpCiAgICAgewogICAgICAgICBjb29r
aWVbV2ViSW5zcGVjdG9yLkRhdGFiYXNlVGFibGVPYmplY3QuTmFtZUNvb2tpZUtleV0gPSB0aGlz
Lm5hbWU7Ci0gICAgfSwKKyAgICB9CiB9OwogCi1XZWJJbnNwZWN0b3IuRGF0YWJhc2VUYWJsZU9i
amVjdC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7
CitXZWJJbnNwZWN0b3IuRGF0YWJhc2VUYWJsZU9iamVjdC5UeXBlSWRlbnRpZmllciA9ICJkYXRh
YmFzZS10YWJsZSI7CitXZWJJbnNwZWN0b3IuRGF0YWJhc2VUYWJsZU9iamVjdC5OYW1lQ29va2ll
S2V5ID0gImRhdGFiYXNlLXRhYmxlLW9iamVjdC1uYW1lIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9EZWJ1Z2dlckRhc2hib2FyZC5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9EZWJ1Z2dlckRhc2hi
b2FyZC5qcwppbmRleCBkNzEzOTQzLi4yOTM3YzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRGVidWdnZXJEYXNoYm9hcmQuanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0RlYnVnZ2VyRGFzaGJv
YXJkLmpzCkBAIC0yMywxMSArMjMsMTEgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuRGVidWdnZXJEYXNoYm9hcmQgPSBmdW5jdGlvbigp
IHsKLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7Ci19OwotCi1XZWJJbnNwZWN0
b3IuRGVidWdnZXJEYXNoYm9hcmQucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJ
bnNwZWN0b3IuRGVidWdnZXJEYXNoYm9hcmQsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3Iu
T2JqZWN0LnByb3RvdHlwZSwKK1dlYkluc3BlY3Rvci5EZWJ1Z2dlckRhc2hib2FyZCA9IGNsYXNz
IERlYnVnZ2VyRGFzaGJvYXJkIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAoreworICAgIGNv
bnN0cnVjdG9yKCkKKyAgICB7CisgICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgb25jZSA8aHR0cHM6
Ly93ZWJraXQub3JnL2IvMTQyODYyPiBpcyBmaXhlZC4KKyAgICAgICAgc3VwZXIoKTsKKyAgICB9
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9k
ZWxzL0RlZmF1bHREYXNoYm9hcmQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Nb2RlbHMvRGVmYXVsdERhc2hib2FyZC5qcwppbmRleCBmMTA0ZGNhLi5jZWVlNmU2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRGVm
YXVsdERhc2hib2FyZC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Nb2RlbHMvRGVmYXVsdERhc2hib2FyZC5qcwpAQCAtMjMsMTE4ICsyMywxMTMgQEAKICAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkRlZmF1bHREYXNoYm9hcmQgPSBmdW5jdGlv
bigpIHsKLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CitXZWJJbnNwZWN0b3Iu
RGVmYXVsdERhc2hib2FyZCA9IGNsYXNzIERlZmF1bHREYXNoYm9hcmQgZXh0ZW5kcyBXZWJJbnNw
ZWN0b3IuT2JqZWN0Cit7CisgICAgY29uc3RydWN0b3IoKQorICAgIHsKKyAgICAgICAgc3VwZXIo
KTsKIAotICAgIHRoaXMuX3dhaXRpbmdGb3JGaXJzdE1haW5SZXNvdXJjZVRvU3RhcnRUcmFja2lu
Z1NpemUgPSB0cnVlOworICAgICAgICB0aGlzLl93YWl0aW5nRm9yRmlyc3RNYWluUmVzb3VyY2VU
b1N0YXJ0VHJhY2tpbmdTaXplID0gdHJ1ZTsKIAotICAgIC8vIE5lY2Vzc2FyeSBldmVudCByZXF1
aXJlZCB0byB0cmFjayBwYWdlIGxvYWQgdGltZSBhbmQgcmVzb3VyY2Ugc2l6ZXMuCi0gICAgV2Vi
SW5zcGVjdG9yLkZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkZyYW1lLkV2ZW50
Lk1haW5SZXNvdXJjZURpZENoYW5nZSwgdGhpcy5fbWFpblJlc291cmNlRGlkQ2hhbmdlLCB0aGlz
KTsKLSAgICBXZWJJbnNwZWN0b3IudGltZWxpbmVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lTWFuYWdlci5FdmVudC5DYXB0dXJpbmdTdG9wcGVkLCB0aGlzLl9j
YXB0dXJpbmdTdG9wcGVkLCB0aGlzKTsKKyAgICAgICAgLy8gTmVjZXNzYXJ5IGV2ZW50IHJlcXVp
cmVkIHRvIHRyYWNrIHBhZ2UgbG9hZCB0aW1lIGFuZCByZXNvdXJjZSBzaXplcy4KKyAgICAgICAg
V2ViSW5zcGVjdG9yLkZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkZyYW1lLkV2
ZW50Lk1haW5SZXNvdXJjZURpZENoYW5nZSwgdGhpcy5fbWFpblJlc291cmNlRGlkQ2hhbmdlLCB0
aGlzKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnRpbWVsaW5lTWFuYWdlci5hZGRFdmVudExpc3Rl
bmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZU1hbmFnZXIuRXZlbnQuQ2FwdHVyaW5nU3RvcHBlZCwg
dGhpcy5fY2FwdHVyaW5nU3RvcHBlZCwgdGhpcyk7CiAKLSAgICAvLyBOZWNlc3NhcnkgZXZlbnRz
IHJlcXVpcmVkIHRvIHRyYWNrIGxvYWQgb2YgcmVzb3VyY2VzLgotICAgIFdlYkluc3BlY3Rvci5G
cmFtZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5GcmFtZS5FdmVudC5SZXNvdXJjZVdh
c0FkZGVkLCB0aGlzLl9yZXNvdXJjZVdhc0FkZGVkLCB0aGlzKTsKLSAgICBXZWJJbnNwZWN0b3Iu
ZnJhbWVSZXNvdXJjZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRnJhbWVS
ZXNvdXJjZU1hbmFnZXIuRXZlbnQuRnJhbWVXYXNBZGRlZCwgdGhpcy5fZnJhbWVXYXNBZGRlZCwg
dGhpcyk7CisgICAgICAgIC8vIE5lY2Vzc2FyeSBldmVudHMgcmVxdWlyZWQgdG8gdHJhY2sgbG9h
ZCBvZiByZXNvdXJjZXMuCisgICAgICAgIFdlYkluc3BlY3Rvci5GcmFtZS5hZGRFdmVudExpc3Rl
bmVyKFdlYkluc3BlY3Rvci5GcmFtZS5FdmVudC5SZXNvdXJjZVdhc0FkZGVkLCB0aGlzLl9yZXNv
dXJjZVdhc0FkZGVkLCB0aGlzKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLmZyYW1lUmVzb3VyY2VN
YW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkZyYW1lUmVzb3VyY2VNYW5hZ2Vy
LkV2ZW50LkZyYW1lV2FzQWRkZWQsIHRoaXMuX2ZyYW1lV2FzQWRkZWQsIHRoaXMpOwogCi0gICAg
Ly8gTmVjZXNzYXJ5IGV2ZW50cyByZXF1aXJlZCB0byB0cmFjayBjb25zb2xlIG1lc3NhZ2VzLgot
ICAgIHZhciBsb2dNYW5hZ2VyID0gV2ViSW5zcGVjdG9yLmxvZ01hbmFnZXI7Ci0gICAgbG9nTWFu
YWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Mb2dNYW5hZ2VyLkV2ZW50LkNsZWFy
ZWQsIHRoaXMuX2NvbnNvbGVXYXNDbGVhcmVkLCB0aGlzKTsKLSAgICBsb2dNYW5hZ2VyLmFkZEV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkxvZ01hbmFnZXIuRXZlbnQuQWN0aXZlTG9nQ2xlYXJl
ZCwgdGhpcy5fY29uc29sZVdhc0NsZWFyZWQsIHRoaXMpOwotICAgIGxvZ01hbmFnZXIuYWRkRXZl
bnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuTG9nTWFuYWdlci5FdmVudC5NZXNzYWdlQWRkZWQsIHRo
aXMuX2NvbnNvbGVNZXNzYWdlQWRkZWQsIHRoaXMpOwotICAgIGxvZ01hbmFnZXIuYWRkRXZlbnRM
aXN0ZW5lcihXZWJJbnNwZWN0b3IuTG9nTWFuYWdlci5FdmVudC5QcmV2aW91c01lc3NhZ2VSZXBl
YXRDb3VudFVwZGF0ZWQsIHRoaXMuX2NvbnNvbGVNZXNzYWdlV2FzUmVwZWF0ZWQsIHRoaXMpOwor
ICAgICAgICAvLyBOZWNlc3NhcnkgZXZlbnRzIHJlcXVpcmVkIHRvIHRyYWNrIGNvbnNvbGUgbWVz
c2FnZXMuCisgICAgICAgIHZhciBsb2dNYW5hZ2VyID0gV2ViSW5zcGVjdG9yLmxvZ01hbmFnZXI7
CisgICAgICAgIGxvZ01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuTG9nTWFu
YWdlci5FdmVudC5DbGVhcmVkLCB0aGlzLl9jb25zb2xlV2FzQ2xlYXJlZCwgdGhpcyk7CisgICAg
ICAgIGxvZ01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuTG9nTWFuYWdlci5F
dmVudC5BY3RpdmVMb2dDbGVhcmVkLCB0aGlzLl9jb25zb2xlV2FzQ2xlYXJlZCwgdGhpcyk7Cisg
ICAgICAgIGxvZ01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuTG9nTWFuYWdl
ci5FdmVudC5NZXNzYWdlQWRkZWQsIHRoaXMuX2NvbnNvbGVNZXNzYWdlQWRkZWQsIHRoaXMpOwor
ICAgICAgICBsb2dNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkxvZ01hbmFn
ZXIuRXZlbnQuUHJldmlvdXNNZXNzYWdlUmVwZWF0Q291bnRVcGRhdGVkLCB0aGlzLl9jb25zb2xl
TWVzc2FnZVdhc1JlcGVhdGVkLCB0aGlzKTsKIAotICAgIHRoaXMuX3Jlc291cmNlc0NvdW50ID0g
MDsKLSAgICB0aGlzLl9yZXNvdXJjZXNTaXplID0gMDsKLSAgICB0aGlzLl90aW1lID0gMDsKLSAg
ICB0aGlzLl9sb2dzID0gMDsKLSAgICB0aGlzLl9lcnJvcnMgPSAwOwotICAgIHRoaXMuX2lzc3Vl
cyA9IDA7Ci19OwotCi1XZWJJbnNwZWN0b3IuRGVmYXVsdERhc2hib2FyZC5FdmVudCA9IHsKLSAg
ICBEYXRhRGlkQ2hhbmdlOiAiZGVmYXVsdC1kYXNoYm9hcmQtZGF0YS1kaWQtY2hhbmdlIgotfTsK
LQotV2ViSW5zcGVjdG9yLkRlZmF1bHREYXNoYm9hcmQucHJvdG90eXBlID0gewotICAgIGNvbnN0
cnVjdG9yOiBXZWJJbnNwZWN0b3IuRGVmYXVsdERhc2hib2FyZCwKLSAgICBfX3Byb3RvX186IFdl
Ykluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlLAorICAgICAgICB0aGlzLl9yZXNvdXJjZXNDb3Vu
dCA9IDA7CisgICAgICAgIHRoaXMuX3Jlc291cmNlc1NpemUgPSAwOworICAgICAgICB0aGlzLl90
aW1lID0gMDsKKyAgICAgICAgdGhpcy5fbG9ncyA9IDA7CisgICAgICAgIHRoaXMuX2Vycm9ycyA9
IDA7CisgICAgICAgIHRoaXMuX2lzc3VlcyA9IDA7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAK
ICAgICBnZXQgcmVzb3VyY2VzQ291bnQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3Jl
c291cmNlc0NvdW50OwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IHJlc291cmNlc0NvdW50KHZh
bHVlKQogICAgIHsKICAgICAgICAgdGhpcy5fcmVzb3VyY2VzQ291bnQgPSB2YWx1ZTsKICAgICAg
ICAgdGhpcy5fZGF0YURpZENoYW5nZSgpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHJlc291
cmNlc1NpemUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlc1NpemU7Ci0g
ICAgfSwKKyAgICB9CiAKICAgICBzZXQgcmVzb3VyY2VzU2l6ZSh2YWx1ZSkKICAgICB7CiAgICAg
ICAgIHRoaXMuX3Jlc291cmNlc1NpemUgPSB2YWx1ZTsKICAgICAgICAgdGhpcy5fZGF0YURpZENo
YW5nZSgpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHRpbWUoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHRoaXMuX3RpbWU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgdGltZSh2YWx1ZSkK
ICAgICB7CiAgICAgICAgIHRoaXMuX3RpbWUgPSB2YWx1ZTsKICAgICAgICAgdGhpcy5fZGF0YURp
ZENoYW5nZSgpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGxvZ3MoKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHRoaXMuX2xvZ3M7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgbG9ncyh2YWx1
ZSkKICAgICB7CiAgICAgICAgIHRoaXMuX2xvZ3MgPSB2YWx1ZTsKICAgICAgICAgdGhpcy5fZGF0
YURpZENoYW5nZSgpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGVycm9ycygpCiAgICAgewog
ICAgICAgICByZXR1cm4gdGhpcy5fZXJyb3JzOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IGVy
cm9ycyh2YWx1ZSkKICAgICB7CiAgICAgICAgIHRoaXMuX2Vycm9ycyA9IHZhbHVlOwogICAgICAg
ICB0aGlzLl9kYXRhRGlkQ2hhbmdlKCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgaXNzdWVz
KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9pc3N1ZXM7Ci0gICAgfSwKKyAgICB9CiAK
ICAgICBzZXQgaXNzdWVzKHZhbHVlKQogICAgIHsKICAgICAgICAgdGhpcy5faXNzdWVzID0gdmFs
dWU7CiAgICAgICAgIHRoaXMuX2RhdGFEaWRDaGFuZ2UoKTsKLSAgICB9LAorICAgIH0KIAogICAg
IC8vIFByaXZhdGUKIAotICAgIF9kYXRhRGlkQ2hhbmdlOiBmdW5jdGlvbigpCisgICAgX2RhdGFE
aWRDaGFuZ2UoKQogICAgIHsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMo
V2ViSW5zcGVjdG9yLkRlZmF1bHREYXNoYm9hcmQuRXZlbnQuRGF0YURpZENoYW5nZSk7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBfbWFpblJlc291cmNlRGlkQ2hhbmdlOiBmdW5jdGlvbihldmVudCkK
KyAgICBfbWFpblJlc291cmNlRGlkQ2hhbmdlKGV2ZW50KQogICAgIHsKICAgICAgICAgY29uc29s
ZS5hc3NlcnQoZXZlbnQudGFyZ2V0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkZyYW1lKTsKIApA
QCAtMTU4LDMwICsxNTMsMzAgQEAgV2ViSW5zcGVjdG9yLkRlZmF1bHREYXNoYm9hcmQucHJvdG90
eXBlID0gewogCiAgICAgICAgIHRoaXMuX2RhdGFEaWRDaGFuZ2UoKTsKICAgICAgICAgdGhpcy5f
c3RhcnRVcGRhdGluZ1RpbWUoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9jYXB0dXJpbmdTdG9w
cGVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfY2FwdHVyaW5nU3RvcHBlZChldmVudCkKICAgICB7
CiAgICAgICAgIC8vIElmIHJlY29yZGluZyBzdG9wcywgd2Ugc2hvdWxkIHN0b3AgdGhlIHRpbWVy
IGlmIGl0IGhhc24ndCBzdG9wcGVkIGFscmVhZHkuCiAgICAgICAgIHRoaXMuX3N0b3BVcGRhdGlu
Z1RpbWUoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9yZXNvdXJjZVdhc0FkZGVkOiBmdW5jdGlv
bihldmVudCkKKyAgICBfcmVzb3VyY2VXYXNBZGRlZChldmVudCkKICAgICB7CiAgICAgICAgICsr
dGhpcy5yZXNvdXJjZXNDb3VudDsKLSAgICB9LAorICAgIH0KIAotICAgIF9mcmFtZVdhc0FkZGVk
OiBmdW5jdGlvbihldmVudCkKKyAgICBfZnJhbWVXYXNBZGRlZChldmVudCkKICAgICB7CiAgICAg
ICAgICsrdGhpcy5yZXNvdXJjZXNDb3VudDsKLSAgICB9LAorICAgIH0KIAotICAgIF9yZXNvdXJj
ZVNpemVEaWRDaGFuZ2U6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9yZXNvdXJjZVNpemVEaWRDaGFu
Z2UoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLnJlc291cmNlc1NpemUgKz0gZXZlbnQudGFy
Z2V0LnNpemUgLSBldmVudC5kYXRhLnByZXZpb3VzU2l6ZTsKLSAgICB9LAorICAgIH0KIAotICAg
IF9zdGFydFVwZGF0aW5nVGltZTogZnVuY3Rpb24oKQorICAgIF9zdGFydFVwZGF0aW5nVGltZSgp
CiAgICAgewogICAgICAgICB0aGlzLl9zdG9wVXBkYXRpbmdUaW1lKCk7CiAKQEAgLTE5MCwxOCAr
MTg1LDE4IEBAIFdlYkluc3BlY3Rvci5EZWZhdWx0RGFzaGJvYXJkLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgdGhpcy5fdGltZWxpbmVCYXNlVGltZSA9IERhdGUubm93KCk7CiAgICAgICAgIHRoaXMu
X3RpbWVJbnRlcnZhbERlbGF5ID0gNTA7CiAgICAgICAgIHRoaXMuX3RpbWVJbnRlcnZhbElkZW50
aWZpZXIgPSBzZXRJbnRlcnZhbCh0aGlzLl91cGRhdGVUaW1lLmJpbmQodGhpcyksIHRoaXMuX3Rp
bWVJbnRlcnZhbERlbGF5KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9zdG9wVXBkYXRpbmdUaW1l
OiBmdW5jdGlvbigpCisgICAgX3N0b3BVcGRhdGluZ1RpbWUoKQogICAgIHsKICAgICAgICAgaWYg
KCF0aGlzLl90aW1lSW50ZXJ2YWxJZGVudGlmaWVyKQogICAgICAgICAgICAgcmV0dXJuOwogCiAg
ICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5fdGltZUludGVydmFsSWRlbnRpZmllcik7CiAgICAg
ICAgIGRlbGV0ZSB0aGlzLl90aW1lSW50ZXJ2YWxJZGVudGlmaWVyOwotICAgIH0sCisgICAgfQog
Ci0gICAgX3VwZGF0ZVRpbWU6IGZ1bmN0aW9uKCkKKyAgICBfdXBkYXRlVGltZSgpCiAgICAgewog
ICAgICAgICB2YXIgZHVyYXRpb24gPSBEYXRlLm5vdygpIC0gdGhpcy5fdGltZWxpbmVCYXNlVGlt
ZTsKIApAQCAtMjMyLDIxICsyMjcsMjEgQEAgV2ViSW5zcGVjdG9yLkRlZmF1bHREYXNoYm9hcmQu
cHJvdG90eXBlID0gewogICAgICAgICB0aGlzLnRpbWUgPSBtYWluRnJhbWVMb2FkRXZlbnRUaW1l
IC0gbWFpbkZyYW1lU3RhcnRUaW1lOwogCiAgICAgICAgIHRoaXMuX3N0b3BVcGRhdGluZ1RpbWUo
KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9jb25zb2xlTWVzc2FnZUFkZGVkOiBmdW5jdGlvbihl
dmVudCkKKyAgICBfY29uc29sZU1lc3NhZ2VBZGRlZChldmVudCkKICAgICB7CiAgICAgICAgIHZh
ciBtZXNzYWdlID0gZXZlbnQuZGF0YS5tZXNzYWdlOwogICAgICAgICB0aGlzLl9sYXN0Q29uc29s
ZU1lc3NhZ2VUeXBlID0gbWVzc2FnZS5sZXZlbDsKICAgICAgICAgdGhpcy5faW5jcmVtZW50Q29u
c29sZU1lc3NhZ2VUeXBlKG1lc3NhZ2UubGV2ZWwsIG1lc3NhZ2UudG90YWxSZXBlYXRDb3VudCk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY29uc29sZU1lc3NhZ2VXYXNSZXBlYXRlZDogZnVuY3Rp
b24oZXZlbnQpCisgICAgX2NvbnNvbGVNZXNzYWdlV2FzUmVwZWF0ZWQoZXZlbnQpCiAgICAgewog
ICAgICAgICB0aGlzLl9pbmNyZW1lbnRDb25zb2xlTWVzc2FnZVR5cGUodGhpcy5fbGFzdENvbnNv
bGVNZXNzYWdlVHlwZSwgMSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfaW5jcmVtZW50Q29uc29s
ZU1lc3NhZ2VUeXBlOiBmdW5jdGlvbih0eXBlLCBpbmNyZW1lbnQpCisgICAgX2luY3JlbWVudENv
bnNvbGVNZXNzYWdlVHlwZSh0eXBlLCBpbmNyZW1lbnQpCiAgICAgewogICAgICAgICBzd2l0Y2gg
KHR5cGUpIHsKICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuTGVnYWN5Q29uc29sZU1lc3NhZ2Uu
TWVzc2FnZUxldmVsLkxvZzoKQEAgLTI1OSw5ICsyNTQsOSBAQCBXZWJJbnNwZWN0b3IuRGVmYXVs
dERhc2hib2FyZC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLmVycm9ycyArPSBpbmNy
ZW1lbnQ7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgIH0sCisgICAgfQogCi0g
ICAgX2NvbnNvbGVXYXNDbGVhcmVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfY29uc29sZVdhc0Ns
ZWFyZWQoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLl9sb2dzID0gMDsKICAgICAgICAgdGhp
cy5faXNzdWVzID0gMDsKQEAgLTI2OSwzICsyNjQsNyBAQCBXZWJJbnNwZWN0b3IuRGVmYXVsdERh
c2hib2FyZC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2RhdGFEaWRDaGFuZ2UoKTsKICAg
ICB9CiB9OworCitXZWJJbnNwZWN0b3IuRGVmYXVsdERhc2hib2FyZC5FdmVudCA9IHsKKyAgICBE
YXRhRGlkQ2hhbmdlOiAiZGVmYXVsdC1kYXNoYm9hcmQtZGF0YS1kaWQtY2hhbmdlIgorfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9FeGVj
dXRpb25Db250ZXh0LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9k
ZWxzL0V4ZWN1dGlvbkNvbnRleHQuanMKaW5kZXggMTQzNzVlMS4uYjVhZWY5OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0V4ZWN1dGlvbkNv
bnRleHQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxz
L0V4ZWN1dGlvbkNvbnRleHQuanMKQEAgLTIzLDUxICsyMyw1MCBAQAogICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5FeGVjdXRpb25Db250ZXh0
ID0gZnVuY3Rpb24oaWQsIG5hbWUsIGlzUGFnZUNvbnRleHQsIGZyYW1lKQorV2ViSW5zcGVjdG9y
LkV4ZWN1dGlvbkNvbnRleHQgPSBjbGFzcyBFeGVjdXRpb25Db250ZXh0IGV4dGVuZHMgV2ViSW5z
cGVjdG9yLk9iamVjdAogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAg
ICBjb25zdHJ1Y3RvcihpZCwgbmFtZSwgaXNQYWdlQ29udGV4dCwgZnJhbWUpCisgICAgeworICAg
ICAgICBzdXBlcigpOwogCi0gICAgY29uc29sZS5hc3NlcnQodHlwZW9mIGlkID09PSAibnVtYmVy
IiB8fCBpZCA9PT0gV2ViSW5zcGVjdG9yLlF1aWNrQ29uc29sZS5NYWluRnJhbWVDb250ZXh0RXhl
Y3V0aW9uSWRlbnRpZmllcik7Ci0gICAgY29uc29sZS5hc3NlcnQodHlwZW9mIG5hbWUgPT09ICJz
dHJpbmciKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodHlwZW9mIGlkID09PSAibnVtYmVyIiB8
fCBpZCA9PT0gV2ViSW5zcGVjdG9yLlF1aWNrQ29uc29sZS5NYWluRnJhbWVDb250ZXh0RXhlY3V0
aW9uSWRlbnRpZmllcik7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHR5cGVvZiBuYW1lID09PSAi
c3RyaW5nIik7CiAKLSAgICB0aGlzLl9pZCA9IGlkOwotICAgIHRoaXMuX25hbWUgPSBuYW1lOwot
ICAgIHRoaXMuX2lzUGFnZUNvbnRleHQgPSBpc1BhZ2VDb250ZXh0IHx8IGZhbHNlOwotICAgIHRo
aXMuX2ZyYW1lID0gZnJhbWUgfHwgbnVsbDsKLX07CisgICAgICAgIHRoaXMuX2lkID0gaWQ7Cisg
ICAgICAgIHRoaXMuX25hbWUgPSBuYW1lOworICAgICAgICB0aGlzLl9pc1BhZ2VDb250ZXh0ID0g
aXNQYWdlQ29udGV4dCB8fCBmYWxzZTsKKyAgICAgICAgdGhpcy5fZnJhbWUgPSBmcmFtZSB8fCBu
dWxsOworICAgIH0KIAotV2ViSW5zcGVjdG9yLkV4ZWN1dGlvbkNvbnRleHQuc3VwcG9ydGVkID0g
ZnVuY3Rpb24oKQotewotICAgIC8vIEV4ZWN1dGlvbiBjb250ZXh0cyB3ZXJlIGFkZGVkIHRvIHRo
ZSBJbnNwZWN0b3IgcHJvdG9jb2wgYWxvbmdzaWRlIFJ1bnRpbWVBZ2VudC5lbmFibGUgYW5kCi0g
ICAgLy8gZGlzYWJsZSBtZXRob2RzLCB3aGljaCB0dXJuIG9uIGFuZCBvZmYgc2VuZGluZyBSdW50
aW1lIGFnZW50IGV4ZWN1dGlvbiBjb250ZXh0IGNyZWF0ZWQgZXZlbnRzLgotICAgIC8vIFNvIHdl
IGNhbiBmZWF0dXJlIGRldGVjdCBzdXBwb3J0IGZvciBleGVjdXRpb24gY29udGV4dHMgd2l0aCB0
aGVzZSBSdW50aW1lQWdlbnQgZnVuY3Rpb25zLgotICAgIHJldHVybiB0eXBlb2YgUnVudGltZUFn
ZW50LmVuYWJsZSA9PT0gImZ1bmN0aW9uIjsKLX07CisgICAgLy8gU3RhdGljCiAKLVdlYkluc3Bl
Y3Rvci5FeGVjdXRpb25Db250ZXh0LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2Vi
SW5zcGVjdG9yLkV4ZWN1dGlvbkNvbnRleHQsCisgICAgc3RhdGljIHN1cHBvcnRlZCgpCisgICAg
eworICAgICAgICAvLyBFeGVjdXRpb24gY29udGV4dHMgd2VyZSBhZGRlZCB0byB0aGUgSW5zcGVj
dG9yIHByb3RvY29sIGFsb25nc2lkZSBSdW50aW1lQWdlbnQuZW5hYmxlIGFuZAorICAgICAgICAv
LyBkaXNhYmxlIG1ldGhvZHMsIHdoaWNoIHR1cm4gb24gYW5kIG9mZiBzZW5kaW5nIFJ1bnRpbWUg
YWdlbnQgZXhlY3V0aW9uIGNvbnRleHQgY3JlYXRlZCBldmVudHMuCisgICAgICAgIC8vIFNvIHdl
IGNhbiBmZWF0dXJlIGRldGVjdCBzdXBwb3J0IGZvciBleGVjdXRpb24gY29udGV4dHMgd2l0aCB0
aGVzZSBSdW50aW1lQWdlbnQgZnVuY3Rpb25zLgorICAgICAgICByZXR1cm4gdHlwZW9mIFJ1bnRp
bWVBZ2VudC5lbmFibGUgPT09ICJmdW5jdGlvbiI7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAK
ICAgICBnZXQgaWQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2lkOwotICAgIH0sCisg
ICAgfQogCiAgICAgZ2V0IG5hbWUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX25hbWU7
Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgaXNQYWdlQ29udGV4dCgpCiAgICAgewogICAgICAg
ICByZXR1cm4gdGhpcy5faXNQYWdlQ29udGV4dDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBm
cmFtZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZnJhbWU7CiAgICAgfQogfTsKLQot
V2ViSW5zcGVjdG9yLkV4ZWN1dGlvbkNvbnRleHQucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYklu
c3BlY3Rvci5PYmplY3QucHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0V4ZWN1dGlvbkNvbnRleHRMaXN0LmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0V4ZWN1dGlvbkNvbnRleHRMaXN0
LmpzCmluZGV4IGM4MDZjMjcuLmUwOTRmYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9FeGVjdXRpb25Db250ZXh0TGlzdC5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRXhlY3V0aW9uQ29udGV4
dExpc3QuanMKQEAgLTIzLDMwICsyMywyOSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5FeGVjdXRpb25Db250ZXh0TGlzdCA9IGZ1bmN0
aW9uKCkKK1dlYkluc3BlY3Rvci5FeGVjdXRpb25Db250ZXh0TGlzdCA9IGNsYXNzIEV4ZWN1dGlv
bkNvbnRleHRMaXN0IGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogewotICAgIFdlYkluc3Bl
Y3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICBjb25zdHJ1Y3RvcigpCisgICAgeworICAgICAg
ICBzdXBlcigpOwogCi0gICAgdGhpcy5fY29udGV4dHMgPSBbXTsKLSAgICB0aGlzLl9wYWdlRXhl
Y3V0aW9uQ29udGV4dCA9IG51bGw7Ci19OwotCi1XZWJJbnNwZWN0b3IuRXhlY3V0aW9uQ29udGV4
dExpc3QucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuRXhlY3V0
aW9uQ29udGV4dExpc3QsCisgICAgICAgIHRoaXMuX2NvbnRleHRzID0gW107CisgICAgICAgIHRo
aXMuX3BhZ2VFeGVjdXRpb25Db250ZXh0ID0gbnVsbDsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMK
IAogICAgIGdldCBwYWdlRXhlY3V0aW9uQ29udGV4dCgpCiAgICAgewogICAgICAgICByZXR1cm4g
dGhpcy5fcGFnZUV4ZWN1dGlvbkNvbnRleHQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgY29u
dGV4dHMoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnRleHRzOwotICAgIH0sCisg
ICAgfQogCi0gICAgYWRkOiBmdW5jdGlvbihjb250ZXh0KQorICAgIGFkZChjb250ZXh0KQogICAg
IHsKICAgICAgICAgLy8gRklYTUU6IFRoZSBiYWNrZW5kIHNlbmRzIGR1cGxpY2F0ZSBwYWdlIGNv
bnRleHQgZXhlY3V0aW9uIGNvbnRleHRzIHdpdGggdGhlIHNhbWUgaWQuIFdoeT8KICAgICAgICAg
aWYgKGNvbnRleHQuaXNQYWdlQ29udGV4dCAmJiB0aGlzLl9wYWdlRXhlY3V0aW9uQ29udGV4dCkg
ewpAQCAtNjMsMTMgKzYyLDExIEBAIFdlYkluc3BlY3Rvci5FeGVjdXRpb25Db250ZXh0TGlzdC5w
cm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBjbGVhcjogZnVuY3Rpb24oKQorICAgIGNsZWFyKCkKICAgICB7CiAgICAg
ICAgIHRoaXMuX2NvbnRleHRzID0gW107CiAgICAgICAgIHRoaXMuX3BhZ2VFeGVjdXRpb25Db250
ZXh0ID0gbnVsbDsKICAgICB9CiB9OwotCi1XZWJJbnNwZWN0b3IuRXhlY3V0aW9uQ29udGV4dExp
c3QucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0Zy
YW1lLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0ZyYW1l
LmpzCmluZGV4IDg0NTRmMjIuLjA2MTljNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9GcmFtZS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRnJhbWUuanMKQEAgLTIzLDY0ICsyMywzOSBAQAog
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5G
cmFtZSA9IGZ1bmN0aW9uKGlkLCBuYW1lLCBzZWN1cml0eU9yaWdpbiwgbG9hZGVySWRlbnRpZmll
ciwgbWFpblJlc291cmNlKQorV2ViSW5zcGVjdG9yLkZyYW1lID0gY2xhc3MgRnJhbWUgZXh0ZW5k
cyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRo
aXMpOworICAgIGNvbnN0cnVjdG9yKGlkLCBuYW1lLCBzZWN1cml0eU9yaWdpbiwgbG9hZGVySWRl
bnRpZmllciwgbWFpblJlc291cmNlKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKIAotICAgIGNv
bnNvbGUuYXNzZXJ0KGlkKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoaWQpOwogCi0gICAgdGhp
cy5faWQgPSBpZDsKKyAgICAgICAgdGhpcy5faWQgPSBpZDsKIAotICAgIHRoaXMuX25hbWUgPSBu
dWxsOwotICAgIHRoaXMuX3NlY3VyaXR5T3JpZ2luID0gbnVsbDsKKyAgICAgICAgdGhpcy5fbmFt
ZSA9IG51bGw7CisgICAgICAgIHRoaXMuX3NlY3VyaXR5T3JpZ2luID0gbnVsbDsKIAotICAgIHRo
aXMuX3Jlc291cmNlQ29sbGVjdGlvbiA9IG5ldyBXZWJJbnNwZWN0b3IuUmVzb3VyY2VDb2xsZWN0
aW9uOwotICAgIHRoaXMuX3Byb3Zpc2lvbmFsUmVzb3VyY2VDb2xsZWN0aW9uID0gbmV3IFdlYklu
c3BlY3Rvci5SZXNvdXJjZUNvbGxlY3Rpb247CisgICAgICAgIHRoaXMuX3Jlc291cmNlQ29sbGVj
dGlvbiA9IG5ldyBXZWJJbnNwZWN0b3IuUmVzb3VyY2VDb2xsZWN0aW9uOworICAgICAgICB0aGlz
Ll9wcm92aXNpb25hbFJlc291cmNlQ29sbGVjdGlvbiA9IG5ldyBXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2VDb2xsZWN0aW9uOwogCi0gICAgdGhpcy5fY2hpbGRGcmFtZXMgPSBbXTsKLSAgICB0aGlzLl9j
aGlsZEZyYW1lSWRlbnRpZmllck1hcCA9IHt9OworICAgICAgICB0aGlzLl9jaGlsZEZyYW1lcyA9
IFtdOworICAgICAgICB0aGlzLl9jaGlsZEZyYW1lSWRlbnRpZmllck1hcCA9IHt9OwogCi0gICAg
dGhpcy5fcGFyZW50RnJhbWUgPSBudWxsOwotICAgIHRoaXMuX2lzTWFpbkZyYW1lID0gZmFsc2U7
CisgICAgICAgIHRoaXMuX3BhcmVudEZyYW1lID0gbnVsbDsKKyAgICAgICAgdGhpcy5faXNNYWlu
RnJhbWUgPSBmYWxzZTsKIAotICAgIHRoaXMuX2RvbUNvbnRlbnRSZWFkeUV2ZW50VGltZXN0YW1w
ID0gTmFOOwotICAgIHRoaXMuX2xvYWRFdmVudFRpbWVzdGFtcCA9IE5hTjsKKyAgICAgICAgdGhp
cy5fZG9tQ29udGVudFJlYWR5RXZlbnRUaW1lc3RhbXAgPSBOYU47CisgICAgICAgIHRoaXMuX2xv
YWRFdmVudFRpbWVzdGFtcCA9IE5hTjsKIAotICAgIHRoaXMuX2V4ZWN1dGlvbkNvbnRleHRMaXN0
ID0gbmV3IFdlYkluc3BlY3Rvci5FeGVjdXRpb25Db250ZXh0TGlzdDsKKyAgICAgICAgdGhpcy5f
ZXhlY3V0aW9uQ29udGV4dExpc3QgPSBuZXcgV2ViSW5zcGVjdG9yLkV4ZWN1dGlvbkNvbnRleHRM
aXN0OwogCi0gICAgdGhpcy5pbml0aWFsaXplKG5hbWUsIHNlY3VyaXR5T3JpZ2luLCBsb2FkZXJJ
ZGVudGlmaWVyLCBtYWluUmVzb3VyY2UpOwotfTsKLQotV2ViSW5zcGVjdG9yLk9iamVjdC5hZGRD
b25zdHJ1Y3RvckZ1bmN0aW9ucyhXZWJJbnNwZWN0b3IuRnJhbWUpOwotCi1XZWJJbnNwZWN0b3Iu
RnJhbWUuRXZlbnQgPSB7Ci0gICAgTmFtZURpZENoYW5nZTogImZyYW1lLW5hbWUtZGlkLWNoYW5n
ZSIsCi0gICAgU2VjdXJpdHlPcmlnaW5EaWRDaGFuZ2U6ICJmcmFtZS1zZWN1cml0eS1vcmlnaW4t
ZGlkLWNoYW5nZSIsCi0gICAgTWFpblJlc291cmNlRGlkQ2hhbmdlOiAiZnJhbWUtbWFpbi1yZXNv
dXJjZS1kaWQtY2hhbmdlIiwKLSAgICBQcm92aXNpb25hbExvYWRTdGFydGVkOiAiZnJhbWUtcHJv
dmlzaW9uYWwtbG9hZC1zdGFydGVkIiwKLSAgICBQcm92aXNpb25hbExvYWRDb21taXR0ZWQ6ICJm
cmFtZS1wcm92aXNpb25hbC1sb2FkLWNvbW1pdHRlZCIsCi0gICAgUHJvdmlzaW9uYWxMb2FkQ2xl
YXJlZDogImZyYW1lLXByb3Zpc2lvbmFsLWxvYWQtY2xlYXJlZCIsCi0gICAgUHJvdmlzaW9uYWxS
ZXNvdXJjZVdhc0FkZGVkOiAiZnJhbWUtcHJvdmlzaW9uYWwtcmVzb3VyY2Utd2FzLWFkZGVkIiwK
LSAgICBSZXNvdXJjZVdhc0FkZGVkOiAiZnJhbWUtcmVzb3VyY2Utd2FzLWFkZGVkIiwKLSAgICBS
ZXNvdXJjZVdhc1JlbW92ZWQ6ICJmcmFtZS1yZXNvdXJjZS13YXMtcmVtb3ZlZCIsCi0gICAgQWxs
UmVzb3VyY2VzUmVtb3ZlZDogImZyYW1lLWFsbC1yZXNvdXJjZXMtcmVtb3ZlZCIsCi0gICAgQ2hp
bGRGcmFtZVdhc0FkZGVkOiAiZnJhbWUtY2hpbGQtZnJhbWUtd2FzLWFkZGVkIiwKLSAgICBDaGls
ZEZyYW1lV2FzUmVtb3ZlZDogImZyYW1lLWNoaWxkLWZyYW1lLXdhcy1yZW1vdmVkIiwKLSAgICBB
bGxDaGlsZEZyYW1lc1JlbW92ZWQ6ICJmcmFtZS1hbGwtY2hpbGQtZnJhbWVzLXJlbW92ZWQiLAot
ICAgIFBhZ2VFeGVjdXRpb25Db250ZXh0Q2hhbmdlZDogImZyYW1lLXBhZ2UtZXhlY3V0aW9uLWNv
bnRleHQtY2hhbmdlZCIsCi0gICAgRXhlY3V0aW9uQ29udGV4dHNDbGVhcmVkOiAiZnJhbWUtZXhl
Y3V0aW9uLWNvbnRleHRzLWNsZWFyZWQiCi19OwotCi1XZWJJbnNwZWN0b3IuRnJhbWUuVHlwZUlk
ZW50aWZpZXIgPSAiRnJhbWUiOwotV2ViSW5zcGVjdG9yLkZyYW1lLk1haW5SZXNvdXJjZVVSTENv
b2tpZUtleSA9ICJmcmFtZS1tYWluLXJlc291cmNlLXVybCI7Ci1XZWJJbnNwZWN0b3IuRnJhbWUu
SXNNYWluRnJhbWVDb29raWVLZXkgPSAiZnJhbWUtaXMtbWFpbi1mcmFtZSI7Ci0KLVdlYkluc3Bl
Y3Rvci5GcmFtZS5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5G
cmFtZSwKKyAgICAgICAgdGhpcy5pbml0aWFsaXplKG5hbWUsIHNlY3VyaXR5T3JpZ2luLCBsb2Fk
ZXJJZGVudGlmaWVyLCBtYWluUmVzb3VyY2UpOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCi0g
ICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24obmFtZSwgc2VjdXJpdHlPcmlnaW4sIGxvYWRlcklkZW50
aWZpZXIsIG1haW5SZXNvdXJjZSkKKyAgICBpbml0aWFsaXplKG5hbWUsIHNlY3VyaXR5T3JpZ2lu
LCBsb2FkZXJJZGVudGlmaWVyLCBtYWluUmVzb3VyY2UpCiAgICAgewogICAgICAgICBjb25zb2xl
LmFzc2VydChsb2FkZXJJZGVudGlmaWVyKTsKICAgICAgICAgY29uc29sZS5hc3NlcnQobWFpblJl
c291cmNlKTsKQEAgLTExMiw5ICs4Nyw5IEBAIFdlYkluc3BlY3Rvci5GcmFtZS5wcm90b3R5cGUg
PSB7CiAKICAgICAgICAgaWYgKHRoaXMuX25hbWUgIT09IG9sZE5hbWUpCiAgICAgICAgICAgICB0
aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRnJhbWUuRXZlbnQuTmFt
ZURpZENoYW5nZSwge29sZE5hbWV9KTsKLSAgICB9LAorICAgIH0KIAotICAgIHN0YXJ0UHJvdmlz
aW9uYWxMb2FkOiBmdW5jdGlvbihwcm92aXNpb25hbE1haW5SZXNvdXJjZSkKKyAgICBzdGFydFBy
b3Zpc2lvbmFsTG9hZChwcm92aXNpb25hbE1haW5SZXNvdXJjZSkKICAgICB7CiAgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KHByb3Zpc2lvbmFsTWFpblJlc291cmNlKTsKIApAQCAtMTI2LDkgKzEwMSw5
IEBAIFdlYkluc3BlY3Rvci5GcmFtZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3Byb3Zp
c2lvbmFsUmVzb3VyY2VDb2xsZWN0aW9uLnJlbW92ZUFsbFJlc291cmNlcygpOwogCiAgICAgICAg
IHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5GcmFtZS5FdmVudC5Q
cm92aXNpb25hbExvYWRTdGFydGVkKTsKLSAgICB9LAorICAgIH0KIAotICAgIGNvbW1pdFByb3Zp
c2lvbmFsTG9hZDogZnVuY3Rpb24oc2VjdXJpdHlPcmlnaW4pCisgICAgY29tbWl0UHJvdmlzaW9u
YWxMb2FkKHNlY3VyaXR5T3JpZ2luKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQodGhp
cy5fcHJvdmlzaW9uYWxNYWluUmVzb3VyY2UpOwogICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlz
Ll9wcm92aXNpb25hbExvYWRlcklkZW50aWZpZXIpOwpAQCAtMTY0LDkgKzEzOSw5IEBAIFdlYklu
c3BlY3Rvci5GcmFtZS5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgaWYgKHRoaXMuX3NlY3VyaXR5
T3JpZ2luICE9PSBvbGRTZWN1cml0eU9yaWdpbikKICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hF
dmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5GcmFtZS5FdmVudC5TZWN1cml0eU9yaWdpbkRp
ZENoYW5nZSwge29sZFNlY3VyaXR5T3JpZ2lufSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjbGVh
clByb3Zpc2lvbmFsTG9hZDogZnVuY3Rpb24oc2tpcFByb3Zpc2lvbmFsTG9hZENsZWFyZWRFdmVu
dCkKKyAgICBjbGVhclByb3Zpc2lvbmFsTG9hZChza2lwUHJvdmlzaW9uYWxMb2FkQ2xlYXJlZEV2
ZW50KQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9wcm92aXNpb25hbExvYWRlcklkZW50aWZp
ZXIpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xNzcsMTI3ICsxNTIsMTI3IEBAIFdlYkluc3Bl
Y3Rvci5GcmFtZS5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgaWYgKCFza2lwUHJvdmlzaW9uYWxM
b2FkQ2xlYXJlZEV2ZW50KQogICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5l
cnMoV2ViSW5zcGVjdG9yLkZyYW1lLkV2ZW50LlByb3Zpc2lvbmFsTG9hZENsZWFyZWQpOwotICAg
IH0sCisgICAgfQogCiAgICAgZ2V0IGlkKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9p
ZDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBsb2FkZXJJZGVudGlmaWVyKCkKICAgICB7CiAg
ICAgICAgIHJldHVybiB0aGlzLl9sb2FkZXJJZGVudGlmaWVyOwotICAgIH0sCisgICAgfQogCiAg
ICAgZ2V0IHByb3Zpc2lvbmFsTG9hZGVySWRlbnRpZmllcigpCiAgICAgewogICAgICAgICByZXR1
cm4gdGhpcy5fcHJvdmlzaW9uYWxMb2FkZXJJZGVudGlmaWVyOwotICAgIH0sCisgICAgfQogCiAg
ICAgZ2V0IG5hbWUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX25hbWU7Ci0gICAgfSwK
KyAgICB9CiAKICAgICBnZXQgc2VjdXJpdHlPcmlnaW4oKQogICAgIHsKICAgICAgICAgcmV0dXJu
IHRoaXMuX3NlY3VyaXR5T3JpZ2luOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHVybCgpCiAg
ICAgewogICAgICAgICByZXR1cm4gdGhpcy5fbWFpblJlc291cmNlLl91cmw7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICBnZXQgZG9tVHJlZSgpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX2RvbVRy
ZWUpCiAgICAgICAgICAgICB0aGlzLl9kb21UcmVlID0gbmV3IFdlYkluc3BlY3Rvci5ET01UcmVl
KHRoaXMpOwogICAgICAgICByZXR1cm4gdGhpcy5fZG9tVHJlZTsKLSAgICB9LAorICAgIH0KIAog
ICAgIGdldCBwYWdlRXhlY3V0aW9uQ29udGV4dCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhp
cy5fZXhlY3V0aW9uQ29udGV4dExpc3QucGFnZUV4ZWN1dGlvbkNvbnRleHQ7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICBnZXQgZXhlY3V0aW9uQ29udGV4dExpc3QoKQogICAgIHsKICAgICAgICAgcmV0
dXJuIHRoaXMuX2V4ZWN1dGlvbkNvbnRleHRMaXN0OwotICAgIH0sCisgICAgfQogCi0gICAgY2xl
YXJFeGVjdXRpb25Db250ZXh0czogZnVuY3Rpb24oY29tbWl0dGluZ1Byb3Zpc2lvbmFsTG9hZCkK
KyAgICBjbGVhckV4ZWN1dGlvbkNvbnRleHRzKGNvbW1pdHRpbmdQcm92aXNpb25hbExvYWQpCiAg
ICAgewogICAgICAgICBpZiAodGhpcy5fZXhlY3V0aW9uQ29udGV4dExpc3QuY29udGV4dHMubGVu
Z3RoKSB7CiAgICAgICAgICAgICB0aGlzLl9leGVjdXRpb25Db250ZXh0TGlzdC5jbGVhcigpOwog
ICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkZy
YW1lLkV2ZW50LkV4ZWN1dGlvbkNvbnRleHRzQ2xlYXJlZCwge2NvbW1pdHRpbmdQcm92aXNpb25h
bExvYWQ6ISFjb21taXR0aW5nUHJvdmlzaW9uYWxMb2FkfSk7CiAgICAgICAgIH0KLSAgICB9LAor
ICAgIH0KIAotICAgIGFkZEV4ZWN1dGlvbkNvbnRleHQ6IGZ1bmN0aW9uKGNvbnRleHQpCisgICAg
YWRkRXhlY3V0aW9uQ29udGV4dChjb250ZXh0KQogICAgIHsKICAgICAgICAgdmFyIGNoYW5nZWRQ
YWdlQ29udGV4dCA9IHRoaXMuX2V4ZWN1dGlvbkNvbnRleHRMaXN0LmFkZChjb250ZXh0KTsKIAog
ICAgICAgICBpZiAoY2hhbmdlZFBhZ2VDb250ZXh0KQogICAgICAgICAgICAgdGhpcy5kaXNwYXRj
aEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkZyYW1lLkV2ZW50LlBhZ2VFeGVjdXRpb25D
b250ZXh0Q2hhbmdlZCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgbWFpblJlc291cmNlKCkK
ICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9tYWluUmVzb3VyY2U7Ci0gICAgfSwKKyAgICB9
CiAKICAgICBnZXQgcHJvdmlzaW9uYWxNYWluUmVzb3VyY2UoKQogICAgIHsKICAgICAgICAgcmV0
dXJuIHRoaXMuX3Byb3Zpc2lvbmFsTWFpblJlc291cmNlOwotICAgIH0sCisgICAgfQogCiAgICAg
Z2V0IHBhcmVudEZyYW1lKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9wYXJlbnRGcmFt
ZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBjaGlsZEZyYW1lcygpCiAgICAgewogICAgICAg
ICByZXR1cm4gdGhpcy5fY2hpbGRGcmFtZXM7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgZG9t
Q29udGVudFJlYWR5RXZlbnRUaW1lc3RhbXAoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMu
X2RvbUNvbnRlbnRSZWFkeUV2ZW50VGltZXN0YW1wOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0
IGxvYWRFdmVudFRpbWVzdGFtcCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fbG9hZEV2
ZW50VGltZXN0YW1wOwotICAgIH0sCisgICAgfQogCi0gICAgaXNNYWluRnJhbWU6IGZ1bmN0aW9u
KCkKKyAgICBpc01haW5GcmFtZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5faXNNYWlu
RnJhbWU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBtYXJrQXNNYWluRnJhbWU6IGZ1bmN0aW9uKCkK
KyAgICBtYXJrQXNNYWluRnJhbWUoKQogICAgIHsKICAgICAgICAgdGhpcy5faXNNYWluRnJhbWUg
PSB0cnVlOwotICAgIH0sCisgICAgfQogCi0gICAgdW5tYXJrQXNNYWluRnJhbWU6IGZ1bmN0aW9u
KCkKKyAgICB1bm1hcmtBc01haW5GcmFtZSgpCiAgICAgewogICAgICAgICB0aGlzLl9pc01haW5G
cmFtZSA9IGZhbHNlOwotICAgIH0sCisgICAgfQogCi0gICAgbWFya0RPTUNvbnRlbnRSZWFkeUV2
ZW50OiBmdW5jdGlvbih0aW1lc3RhbXApCisgICAgbWFya0RPTUNvbnRlbnRSZWFkeUV2ZW50KHRp
bWVzdGFtcCkKICAgICB7CiAgICAgICAgIHRoaXMuX2RvbUNvbnRlbnRSZWFkeUV2ZW50VGltZXN0
YW1wID0gdGltZXN0YW1wIHx8IE5hTjsKLSAgICB9LAorICAgIH0KIAotICAgIG1hcmtMb2FkRXZl
bnQ6IGZ1bmN0aW9uKHRpbWVzdGFtcCkKKyAgICBtYXJrTG9hZEV2ZW50KHRpbWVzdGFtcCkKICAg
ICB7CiAgICAgICAgIHRoaXMuX2xvYWRFdmVudFRpbWVzdGFtcCA9IHRpbWVzdGFtcCB8fCBOYU47
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBpc0RldGFjaGVkOiBmdW5jdGlvbigpCisgICAgaXNEZXRh
Y2hlZCgpCiAgICAgewogICAgICAgICB2YXIgZnJhbWUgPSB0aGlzOwogICAgICAgICB3aGlsZSAo
ZnJhbWUpIHsKQEAgLTMwNywxNCArMjgyLDE0IEBAIFdlYkluc3BlY3Rvci5GcmFtZS5wcm90b3R5
cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9LAorICAgIH0K
IAotICAgIGNoaWxkRnJhbWVGb3JJZGVudGlmaWVyOiBmdW5jdGlvbihmcmFtZUlkKQorICAgIGNo
aWxkRnJhbWVGb3JJZGVudGlmaWVyKGZyYW1lSWQpCiAgICAgewogICAgICAgICByZXR1cm4gdGhp
cy5fY2hpbGRGcmFtZUlkZW50aWZpZXJNYXBbZnJhbWVJZF0gfHwgbnVsbDsKLSAgICB9LAorICAg
IH0KIAotICAgIGFkZENoaWxkRnJhbWU6IGZ1bmN0aW9uKGZyYW1lKQorICAgIGFkZENoaWxkRnJh
bWUoZnJhbWUpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChmcmFtZSBpbnN0YW5jZW9m
IFdlYkluc3BlY3Rvci5GcmFtZSk7CiAgICAgICAgIGlmICghKGZyYW1lIGluc3RhbmNlb2YgV2Vi
SW5zcGVjdG9yLkZyYW1lKSkKQEAgLTMzMiw5ICszMDcsOSBAQCBXZWJJbnNwZWN0b3IuRnJhbWUu
cHJvdG90eXBlID0gewogICAgICAgICBmcmFtZS5fcGFyZW50RnJhbWUgPSB0aGlzOwogCiAgICAg
ICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5GcmFtZS5FdmVu
dC5DaGlsZEZyYW1lV2FzQWRkZWQsIHtjaGlsZEZyYW1lOiBmcmFtZX0pOwotICAgIH0sCisgICAg
fQogCi0gICAgcmVtb3ZlQ2hpbGRGcmFtZTogZnVuY3Rpb24oZnJhbWVPckZyYW1lSWQpCisgICAg
cmVtb3ZlQ2hpbGRGcmFtZShmcmFtZU9yRnJhbWVJZCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KGZyYW1lT3JGcmFtZUlkKTsKIApAQCAtMzU5LDkgKzMzNCw5IEBAIFdlYkluc3BlY3Rv
ci5GcmFtZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIGNoaWxkRnJhbWUuX3BhcmVudEZyYW1lID0g
bnVsbDsKIAogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0
b3IuRnJhbWUuRXZlbnQuQ2hpbGRGcmFtZVdhc1JlbW92ZWQsIHtjaGlsZEZyYW1lfSk7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICByZW1vdmVBbGxDaGlsZEZyYW1lczogZnVuY3Rpb24oKQorICAgIHJl
bW92ZUFsbENoaWxkRnJhbWVzKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fY2hpbGRGcmFt
ZXMubGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzczLDE0ICszNDgsMTQgQEAgV2Vi
SW5zcGVjdG9yLkZyYW1lLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fY2hpbGRGcmFtZUlk
ZW50aWZpZXJNYXAgPSB7fTsKIAogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVy
cyhXZWJJbnNwZWN0b3IuRnJhbWUuRXZlbnQuQWxsQ2hpbGRGcmFtZXNSZW1vdmVkKTsKLSAgICB9
LAorICAgIH0KIAogICAgIGdldCByZXNvdXJjZXMoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRo
aXMuX3Jlc291cmNlQ29sbGVjdGlvbi5yZXNvdXJjZXM7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBy
ZXNvdXJjZUZvclVSTDogZnVuY3Rpb24odXJsLCByZWN1cnNpdmVseVNlYXJjaENoaWxkRnJhbWVz
KQorICAgIHJlc291cmNlRm9yVVJMKHVybCwgcmVjdXJzaXZlbHlTZWFyY2hDaGlsZEZyYW1lcykK
ICAgICB7CiAgICAgICAgIHZhciByZXNvdXJjZSA9IHRoaXMuX3Jlc291cmNlQ29sbGVjdGlvbi5y
ZXNvdXJjZUZvclVSTCh1cmwpOwogICAgICAgICBpZiAocmVzb3VyY2UpCkBAIC00MDQsMTQgKzM3
OSwxNCBAQCBXZWJJbnNwZWN0b3IuRnJhbWUucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAg
ICAgICAgcmV0dXJuIG51bGw7Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZXNvdXJjZXNXaXRoVHlw
ZTogZnVuY3Rpb24odHlwZSkKKyAgICByZXNvdXJjZXNXaXRoVHlwZSh0eXBlKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlQ29sbGVjdGlvbi5yZXNvdXJjZXNXaXRoVHlwZSh0
eXBlKTsKLSAgICB9LAorICAgIH0KIAotICAgIGFkZFJlc291cmNlOiBmdW5jdGlvbihyZXNvdXJj
ZSkKKyAgICBhZGRSZXNvdXJjZShyZXNvdXJjZSkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KHJlc291cmNlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlc291cmNlKTsKICAgICAgICAg
aWYgKCEocmVzb3VyY2UgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UpKQpAQCAtNDMy
LDkgKzQwNyw5IEBAIFdlYkluc3BlY3Rvci5GcmFtZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAg
ICB0aGlzLl9yZXNvdXJjZUNvbGxlY3Rpb24uYWRkUmVzb3VyY2UocmVzb3VyY2UpOwogICAgICAg
ICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkZyYW1lLkV2
ZW50LlJlc291cmNlV2FzQWRkZWQsIHtyZXNvdXJjZX0pOwogICAgICAgICB9Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICByZW1vdmVSZXNvdXJjZTogZnVuY3Rpb24ocmVzb3VyY2VPclVSTCkKKyAgICBy
ZW1vdmVSZXNvdXJjZShyZXNvdXJjZU9yVVJMKQogICAgIHsKICAgICAgICAgLy8gVGhpcyBkb2Vz
IG5vdCByZW1vdmUgcHJvdmlzaW9uYWwgcmVzb3VyY2VzLgogCkBAIC00NDUsOSArNDIwLDkgQEAg
V2ViSW5zcGVjdG9yLkZyYW1lLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fZGlzYXNzb2Np
YXRlV2l0aFJlc291cmNlKHJlc291cmNlKTsKIAogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRU
b0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRnJhbWUuRXZlbnQuUmVzb3VyY2VXYXNSZW1vdmVkLCB7
cmVzb3VyY2V9KTsKLSAgICB9LAorICAgIH0KIAotICAgIHJlbW92ZUFsbFJlc291cmNlczogZnVu
Y3Rpb24oKQorICAgIHJlbW92ZUFsbFJlc291cmNlcygpCiAgICAgewogICAgICAgICAvLyBUaGlz
IGRvZXMgbm90IHJlbW92ZSBwcm92aXNpb25hbCByZXNvdXJjZXMsIHVzZSBjbGVhclByb3Zpc2lv
bmFsTG9hZCBmb3IgdGhhdC4KIApAQCAtNDYxLDQzICs0MzYsNjMgQEAgV2ViSW5zcGVjdG9yLkZy
YW1lLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fcmVzb3VyY2VDb2xsZWN0aW9uLnJlbW92
ZUFsbFJlc291cmNlcygpOwogCiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJz
KFdlYkluc3BlY3Rvci5GcmFtZS5FdmVudC5BbGxSZXNvdXJjZXNSZW1vdmVkKTsKLSAgICB9LAor
ICAgIH0KIAotICAgIHNhdmVJZGVudGl0eVRvQ29va2llOiBmdW5jdGlvbihjb29raWUpCisgICAg
c2F2ZUlkZW50aXR5VG9Db29raWUoY29va2llKQogICAgIHsKICAgICAgICAgY29va2llW1dlYklu
c3BlY3Rvci5GcmFtZS5NYWluUmVzb3VyY2VVUkxDb29raWVLZXldID0gdGhpcy5tYWluUmVzb3Vy
Y2UudXJsLmhhc2g7CiAgICAgICAgIGNvb2tpZVtXZWJJbnNwZWN0b3IuRnJhbWUuSXNNYWluRnJh
bWVDb29raWVLZXldID0gdGhpcy5faXNNYWluRnJhbWU7Ci0gICAgfSwKKyAgICB9CiAKICAgICAv
LyBQcml2YXRlCiAKLSAgICBfaXNQcm92aXNpb25hbFJlc291cmNlOiBmdW5jdGlvbihyZXNvdXJj
ZSkKKyAgICBfaXNQcm92aXNpb25hbFJlc291cmNlKHJlc291cmNlKQogICAgIHsKICAgICAgICAg
cmV0dXJuIChyZXNvdXJjZS5sb2FkZXJJZGVudGlmaWVyICYmIHRoaXMuX3Byb3Zpc2lvbmFsTG9h
ZGVySWRlbnRpZmllciAmJiByZXNvdXJjZS5sb2FkZXJJZGVudGlmaWVyID09PSB0aGlzLl9wcm92
aXNpb25hbExvYWRlcklkZW50aWZpZXIpOwotICAgIH0sCisgICAgfQogCi0gICAgX2Fzc29jaWF0
ZVdpdGhSZXNvdXJjZTogZnVuY3Rpb24ocmVzb3VyY2UpCisgICAgX2Fzc29jaWF0ZVdpdGhSZXNv
dXJjZShyZXNvdXJjZSkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFyZXNvdXJjZS5f
cGFyZW50RnJhbWUpOwogICAgICAgICBpZiAocmVzb3VyY2UuX3BhcmVudEZyYW1lKQogICAgICAg
ICAgICAgcmV0dXJuOwogCiAgICAgICAgIHJlc291cmNlLl9wYXJlbnRGcmFtZSA9IHRoaXM7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBfZGlzYXNzb2NpYXRlV2l0aFJlc291cmNlOiBmdW5jdGlvbihy
ZXNvdXJjZSkKKyAgICBfZGlzYXNzb2NpYXRlV2l0aFJlc291cmNlKHJlc291cmNlKQogICAgIHsK
ICAgICAgICAgY29uc29sZS5hc3NlcnQocmVzb3VyY2UucGFyZW50RnJhbWUgPT09IHRoaXMpOwog
ICAgICAgICBpZiAocmVzb3VyY2UucGFyZW50RnJhbWUgIT09IHRoaXMpCiAgICAgICAgICAgICBy
ZXR1cm47CiAKICAgICAgICAgcmVzb3VyY2UuX3BhcmVudEZyYW1lID0gbnVsbDsKLSAgICB9LAor
ICAgIH0KIAotICAgIF9kaXNwYXRjaE1haW5SZXNvdXJjZURpZENoYW5nZUV2ZW50OiBmdW5jdGlv
bihvbGRNYWluUmVzb3VyY2UpCisgICAgX2Rpc3BhdGNoTWFpblJlc291cmNlRGlkQ2hhbmdlRXZl
bnQob2xkTWFpblJlc291cmNlKQogICAgIHsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9M
aXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkZyYW1lLkV2ZW50Lk1haW5SZXNvdXJjZURpZENoYW5nZSwg
e29sZE1haW5SZXNvdXJjZX0pOwogICAgIH0KIH07CiAKLVdlYkluc3BlY3Rvci5GcmFtZS5wcm90
b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CitXZWJJbnNw
ZWN0b3IuRnJhbWUuRXZlbnQgPSB7CisgICAgTmFtZURpZENoYW5nZTogImZyYW1lLW5hbWUtZGlk
LWNoYW5nZSIsCisgICAgU2VjdXJpdHlPcmlnaW5EaWRDaGFuZ2U6ICJmcmFtZS1zZWN1cml0eS1v
cmlnaW4tZGlkLWNoYW5nZSIsCisgICAgTWFpblJlc291cmNlRGlkQ2hhbmdlOiAiZnJhbWUtbWFp
bi1yZXNvdXJjZS1kaWQtY2hhbmdlIiwKKyAgICBQcm92aXNpb25hbExvYWRTdGFydGVkOiAiZnJh
bWUtcHJvdmlzaW9uYWwtbG9hZC1zdGFydGVkIiwKKyAgICBQcm92aXNpb25hbExvYWRDb21taXR0
ZWQ6ICJmcmFtZS1wcm92aXNpb25hbC1sb2FkLWNvbW1pdHRlZCIsCisgICAgUHJvdmlzaW9uYWxM
b2FkQ2xlYXJlZDogImZyYW1lLXByb3Zpc2lvbmFsLWxvYWQtY2xlYXJlZCIsCisgICAgUHJvdmlz
aW9uYWxSZXNvdXJjZVdhc0FkZGVkOiAiZnJhbWUtcHJvdmlzaW9uYWwtcmVzb3VyY2Utd2FzLWFk
ZGVkIiwKKyAgICBSZXNvdXJjZVdhc0FkZGVkOiAiZnJhbWUtcmVzb3VyY2Utd2FzLWFkZGVkIiwK
KyAgICBSZXNvdXJjZVdhc1JlbW92ZWQ6ICJmcmFtZS1yZXNvdXJjZS13YXMtcmVtb3ZlZCIsCisg
ICAgQWxsUmVzb3VyY2VzUmVtb3ZlZDogImZyYW1lLWFsbC1yZXNvdXJjZXMtcmVtb3ZlZCIsCisg
ICAgQ2hpbGRGcmFtZVdhc0FkZGVkOiAiZnJhbWUtY2hpbGQtZnJhbWUtd2FzLWFkZGVkIiwKKyAg
ICBDaGlsZEZyYW1lV2FzUmVtb3ZlZDogImZyYW1lLWNoaWxkLWZyYW1lLXdhcy1yZW1vdmVkIiwK
KyAgICBBbGxDaGlsZEZyYW1lc1JlbW92ZWQ6ICJmcmFtZS1hbGwtY2hpbGQtZnJhbWVzLXJlbW92
ZWQiLAorICAgIFBhZ2VFeGVjdXRpb25Db250ZXh0Q2hhbmdlZDogImZyYW1lLXBhZ2UtZXhlY3V0
aW9uLWNvbnRleHQtY2hhbmdlZCIsCisgICAgRXhlY3V0aW9uQ29udGV4dHNDbGVhcmVkOiAiZnJh
bWUtZXhlY3V0aW9uLWNvbnRleHRzLWNsZWFyZWQiCit9OworCitXZWJJbnNwZWN0b3IuRnJhbWUu
VHlwZUlkZW50aWZpZXIgPSAiRnJhbWUiOworV2ViSW5zcGVjdG9yLkZyYW1lLk1haW5SZXNvdXJj
ZVVSTENvb2tpZUtleSA9ICJmcmFtZS1tYWluLXJlc291cmNlLXVybCI7CitXZWJJbnNwZWN0b3Iu
RnJhbWUuSXNNYWluRnJhbWVDb29raWVLZXkgPSAiZnJhbWUtaXMtbWFpbi1mcmFtZSI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvR2VvbWV0
cnkuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvR2VvbWV0
cnkuanMKaW5kZXggZWE1YzA4MS4uMGJmZTI3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0dlb21ldHJ5LmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9HZW9tZXRyeS5qcwpAQCAtMjMsNjIgKzIz
LDY2IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5z
cGVjdG9yLlBvaW50ID0gZnVuY3Rpb24oeCwgeSkKK1dlYkluc3BlY3Rvci5Qb2ludCA9IGNsYXNz
IFBvaW50CiB7Ci0gICAgdGhpcy54ID0geCB8fCAwOwotICAgIHRoaXMueSA9IHkgfHwgMDsKLX07
CisgICAgY29uc3RydWN0b3IoeCwgeSkKKyAgICB7CisgICAgICAgIHRoaXMueCA9IHggfHwgMDsK
KyAgICAgICAgdGhpcy55ID0geSB8fCAwOworICAgIH0KIAotV2ViSW5zcGVjdG9yLlBvaW50LmZy
b21FdmVudCA9IGZ1bmN0aW9uKGV2ZW50KQotewotICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9y
LlBvaW50KGV2ZW50LnBhZ2VYLCBldmVudC5wYWdlWSk7Ci19OworICAgIC8vIFN0YXRpYwogCi1X
ZWJJbnNwZWN0b3IuUG9pbnQuZnJvbUV2ZW50SW5FbGVtZW50ID0gZnVuY3Rpb24oZXZlbnQsIGVs
ZW1lbnQpCi17Ci0gICAgdmFyIHdrUG9pbnQgPSB3aW5kb3cud2Via2l0Q29udmVydFBvaW50RnJv
bVBhZ2VUb05vZGUoZWxlbWVudCwgbmV3IFdlYktpdFBvaW50KGV2ZW50LnBhZ2VYLCBldmVudC5w
YWdlWSkpOwotICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlBvaW50KHdrUG9pbnQueCwgd2tQ
b2ludC55KTsKLX07CisgICAgc3RhdGljIGZyb21FdmVudChldmVudCkKKyAgICB7CisgICAgICAg
IHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlBvaW50KGV2ZW50LnBhZ2VYLCBldmVudC5wYWdlWSk7
CisgICAgfQorCisgICAgc3RhdGljIGZyb21FdmVudEluRWxlbWVudChldmVudCwgZWxlbWVudCkK
KyAgICB7CisgICAgICAgIHZhciB3a1BvaW50ID0gd2luZG93LndlYmtpdENvbnZlcnRQb2ludEZy
b21QYWdlVG9Ob2RlKGVsZW1lbnQsIG5ldyBXZWJLaXRQb2ludChldmVudC5wYWdlWCwgZXZlbnQu
cGFnZVkpKTsKKyAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuUG9pbnQod2tQb2ludC54
LCB3a1BvaW50LnkpOworICAgIH0KIAotV2ViSW5zcGVjdG9yLlBvaW50LnByb3RvdHlwZSA9IHsK
LSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlBvaW50LAorICAgIC8vIFB1YmxpYwogCi0g
ICAgdG9TdHJpbmcgOiBmdW5jdGlvbigpCisgICAgdG9TdHJpbmcoKQogICAgIHsKICAgICAgICAg
cmV0dXJuICJXZWJJbnNwZWN0b3IuUG9pbnRbIiArIHRoaXMueCArICIsIiArIHRoaXMueSArICJd
IjsKLSAgICB9LAorICAgIH0KIAotICAgIGNvcHk6IGZ1bmN0aW9uKCkKKyAgICBjb3B5KCkKICAg
ICB7CiAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlBvaW50KHRoaXMueCwgdGhpcy55
KTsKLSAgICB9LAorICAgIH0KIAotICAgIGVxdWFsczogZnVuY3Rpb24oYW5vdGhlclBvaW50KQor
ICAgIGVxdWFscyhhbm90aGVyUG9pbnQpCiAgICAgewogICAgICAgICByZXR1cm4gKHRoaXMueCA9
PT0gYW5vdGhlclBvaW50LnggJiYgdGhpcy55ID09PSBhbm90aGVyUG9pbnQueSk7CiAgICAgfQog
fTsKIAotV2ViSW5zcGVjdG9yLlNpemUgPSBmdW5jdGlvbih3aWR0aCwgaGVpZ2h0KQorV2ViSW5z
cGVjdG9yLlNpemUgPSBjbGFzcyBTaXplCiB7Ci0gICAgdGhpcy53aWR0aCA9IHdpZHRoIHx8IDA7
Ci0gICAgdGhpcy5oZWlnaHQgPSBoZWlnaHQgfHwgMDsKLX07CisgICAgY29uc3RydWN0b3Iod2lk
dGgsIGhlaWdodCkKKyAgICB7CisgICAgICAgIHRoaXMud2lkdGggPSB3aWR0aCB8fCAwOworICAg
ICAgICB0aGlzLmhlaWdodCA9IGhlaWdodCB8fCAwOworICAgIH0KIAotV2ViSW5zcGVjdG9yLlNp
emUucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuU2l6ZSwKKyAg
ICAvLyBQdWJsaWMKIAotICAgIHRvU3RyaW5nOiBmdW5jdGlvbigpCisgICAgdG9TdHJpbmcoKQog
ICAgIHsKICAgICAgICAgcmV0dXJuICJXZWJJbnNwZWN0b3IuU2l6ZVsiICsgdGhpcy53aWR0aCAr
ICIsIiArIHRoaXMuaGVpZ2h0ICsgIl0iOwotICAgIH0sCisgICAgfQogCi0gICAgY29weTogZnVu
Y3Rpb24oKQorICAgIGNvcHkoKQogICAgIHsKICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0
b3IuU2l6ZSh0aGlzLndpZHRoLCB0aGlzLmhlaWdodCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBl
cXVhbHM6IGZ1bmN0aW9uKGFub3RoZXJTaXplKQorICAgIGVxdWFscyhhbm90aGVyU2l6ZSkKICAg
ICB7CiAgICAgICAgIHJldHVybiAodGhpcy53aWR0aCA9PT0gYW5vdGhlclNpemUud2lkdGggJiYg
dGhpcy5oZWlnaHQgPT09IGFub3RoZXJTaXplLmhlaWdodCk7CiAgICAgfQpAQCAtODcsNDQgKzkx
LDQ3IEBAIFdlYkluc3BlY3Rvci5TaXplLnByb3RvdHlwZSA9IHsKIFdlYkluc3BlY3Rvci5TaXpl
LlpFUk9fU0laRSA9IG5ldyBXZWJJbnNwZWN0b3IuU2l6ZSgwLCAwKTsKIAogCi1XZWJJbnNwZWN0
b3IuUmVjdCA9IGZ1bmN0aW9uKHgsIHksIHdpZHRoLCBoZWlnaHQpCitXZWJJbnNwZWN0b3IuUmVj
dCA9IGNsYXNzIFJlY3QKIHsKLSAgICB0aGlzLm9yaWdpbiA9IG5ldyBXZWJJbnNwZWN0b3IuUG9p
bnQoeCB8fCAwLCB5IHx8IDApOwotICAgIHRoaXMuc2l6ZSA9IG5ldyBXZWJJbnNwZWN0b3IuU2l6
ZSh3aWR0aCB8fCAwLCBoZWlnaHQgfHwgMCk7Ci19OworICAgIGNvbnN0cnVjdG9yKHgsIHksIHdp
ZHRoLCBoZWlnaHQpCisgICAgeworICAgICAgICB0aGlzLm9yaWdpbiA9IG5ldyBXZWJJbnNwZWN0
b3IuUG9pbnQoeCB8fCAwLCB5IHx8IDApOworICAgICAgICB0aGlzLnNpemUgPSBuZXcgV2ViSW5z
cGVjdG9yLlNpemUod2lkdGggfHwgMCwgaGVpZ2h0IHx8IDApOworICAgIH0KIAotV2ViSW5zcGVj
dG9yLlJlY3QucmVjdEZyb21DbGllbnRSZWN0ID0gZnVuY3Rpb24oY2xpZW50UmVjdCkKLXsKLSAg
ICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5SZWN0KGNsaWVudFJlY3QubGVmdCwgY2xpZW50UmVj
dC50b3AsIGNsaWVudFJlY3Qud2lkdGgsIGNsaWVudFJlY3QuaGVpZ2h0KTsKLX07CisgICAgLy8g
U3RhdGljCiAKLVdlYkluc3BlY3Rvci5SZWN0LnVuaW9uT2ZSZWN0cyA9IGZ1bmN0aW9uKHJlY3Rz
KQotewotICAgIHZhciB1bmlvbiA9IHJlY3RzWzBdOwotICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
cmVjdHMubGVuZ3RoOyArK2kpCi0gICAgICAgIHVuaW9uID0gdW5pb24udW5pb25XaXRoUmVjdChy
ZWN0c1tpXSk7Ci0gICAgcmV0dXJuIHVuaW9uOwotfTsKKyAgICBzdGF0aWMgcmVjdEZyb21DbGll
bnRSZWN0KGNsaWVudFJlY3QpCisgICAgeworICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rv
ci5SZWN0KGNsaWVudFJlY3QubGVmdCwgY2xpZW50UmVjdC50b3AsIGNsaWVudFJlY3Qud2lkdGgs
IGNsaWVudFJlY3QuaGVpZ2h0KTsKKyAgICB9CisKKyAgICBzdGF0aWMgdW5pb25PZlJlY3RzKHJl
Y3RzKQorICAgIHsKKyAgICAgICAgdmFyIHVuaW9uID0gcmVjdHNbMF07CisgICAgICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcmVjdHMubGVuZ3RoOyArK2kpCisgICAgICAgICAgICB1bmlvbiA9IHVu
aW9uLnVuaW9uV2l0aFJlY3QocmVjdHNbaV0pOworICAgICAgICByZXR1cm4gdW5pb247CisgICAg
fQogCi1XZWJJbnNwZWN0b3IuUmVjdC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdl
Ykluc3BlY3Rvci5SZWN0LAorICAgIC8vIFB1YmxpYwogCi0gICAgdG9TdHJpbmc6IGZ1bmN0aW9u
KCkKKyAgICB0b1N0cmluZygpCiAgICAgewogICAgICAgICByZXR1cm4gIldlYkluc3BlY3Rvci5S
ZWN0WyIgKyBbdGhpcy5vcmlnaW4ueCwgdGhpcy5vcmlnaW4ueSwgdGhpcy5zaXplLndpZHRoLCB0
aGlzLnNpemUuaGVpZ2h0XS5qb2luKCIsICIpICsgIl0iOwotICAgIH0sCisgICAgfQogCi0gICAg
Y29weTogZnVuY3Rpb24oKQorICAgIGNvcHkoKQogICAgIHsKICAgICAgICAgcmV0dXJuIG5ldyBX
ZWJJbnNwZWN0b3IuUmVjdCh0aGlzLm9yaWdpbi54LCB0aGlzLm9yaWdpbi55LCB0aGlzLnNpemUu
d2lkdGgsIHRoaXMuc2l6ZS5oZWlnaHQpOwotICAgIH0sCisgICAgfQogCi0gICAgZXF1YWxzOiBm
dW5jdGlvbihhbm90aGVyUmVjdCkKKyAgICBlcXVhbHMoYW5vdGhlclJlY3QpCiAgICAgewogICAg
ICAgICByZXR1cm4gKHRoaXMub3JpZ2luLmVxdWFscyhhbm90aGVyUmVjdC5vcmlnaW4pICYmIHRo
aXMuc2l6ZS5lcXVhbHMoYW5vdGhlclJlY3Quc2l6ZSkpOwotICAgIH0sCisgICAgfQogCi0gICAg
aW5zZXQ6IGZ1bmN0aW9uKGluc2V0cykKKyAgICBpbnNldChpbnNldHMpCiAgICAgewogICAgICAg
ICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5SZWN0KAogICAgICAgICAgICAgdGhpcy5vcmlnaW4u
eCArIGluc2V0cy5sZWZ0LApAQCAtMTMyLDkgKzEzOSw5IEBAIFdlYkluc3BlY3Rvci5SZWN0LnBy
b3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuc2l6ZS53aWR0aCAtIGluc2V0cy5sZWZ0IC0g
aW5zZXRzLnJpZ2h0LAogICAgICAgICAgICAgdGhpcy5zaXplLmhlaWdodCAtIGluc2V0cy50b3Ag
LSBpbnNldHMuYm90dG9tCiAgICAgICAgICk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBwYWQ6IGZ1
bmN0aW9uKHBhZGRpbmcpCisgICAgcGFkKHBhZGRpbmcpCiAgICAgewogICAgICAgICByZXR1cm4g
bmV3IFdlYkluc3BlY3Rvci5SZWN0KAogICAgICAgICAgICAgdGhpcy5vcmlnaW4ueCAtIHBhZGRp
bmcsCkBAIC0xNDIsMzkgKzE0OSwzOSBAQCBXZWJJbnNwZWN0b3IuUmVjdC5wcm90b3R5cGUgPSB7
CiAgICAgICAgICAgICB0aGlzLnNpemUud2lkdGggKyBwYWRkaW5nICogMiwKICAgICAgICAgICAg
IHRoaXMuc2l6ZS5oZWlnaHQgKyBwYWRkaW5nICogMgogICAgICAgICApOwotICAgIH0sCisgICAg
fQogCi0gICAgbWluWDogZnVuY3Rpb24oKQorICAgIG1pblgoKQogICAgIHsKICAgICAgICAgcmV0
dXJuIHRoaXMub3JpZ2luLng7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBtaW5ZOiBmdW5jdGlvbigp
CisgICAgbWluWSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5vcmlnaW4ueTsKLSAgICB9
LAorICAgIH0KIAotICAgIG1pZFg6IGZ1bmN0aW9uKCkKKyAgICBtaWRYKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiB0aGlzLm9yaWdpbi54ICsgKHRoaXMuc2l6ZS53aWR0aCAvIDIpOwotICAgIH0s
CisgICAgfQogCi0gICAgbWlkWTogZnVuY3Rpb24oKQorICAgIG1pZFkoKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHRoaXMub3JpZ2luLnkgKyAodGhpcy5zaXplLmhlaWdodCAvIDIpOwotICAgIH0s
CisgICAgfQogCi0gICAgbWF4WDogZnVuY3Rpb24oKQorICAgIG1heFgoKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHRoaXMub3JpZ2luLnggKyB0aGlzLnNpemUud2lkdGg7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBtYXhZOiBmdW5jdGlvbigpCisgICAgbWF4WSgpCiAgICAgewogICAgICAgICByZXR1
cm4gdGhpcy5vcmlnaW4ueSArIHRoaXMuc2l6ZS5oZWlnaHQ7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBpbnRlcnNlY3Rpb25XaXRoUmVjdDogZnVuY3Rpb24ocmVjdCkKKyAgICBpbnRlcnNlY3Rpb25X
aXRoUmVjdChyZWN0KQogICAgIHsKICAgICAgICAgdmFyIHgxID0gTWF0aC5tYXgodGhpcy5taW5Y
KCksIHJlY3QubWluWCgpKTsKICAgICAgICAgdmFyIHgyID0gTWF0aC5taW4odGhpcy5tYXhYKCks
IHJlY3QubWF4WCgpKTsKQEAgLTE5MCwxOCArMTk3LDE4IEBAIFdlYkluc3BlY3Rvci5SZWN0LnBy
b3RvdHlwZSA9IHsKICAgICAgICAgaW50ZXJzZWN0aW9uLm9yaWdpbi55ID0geTE7CiAgICAgICAg
IGludGVyc2VjdGlvbi5zaXplLmhlaWdodCA9IHkyIC0geTE7CiAgICAgICAgIHJldHVybiBpbnRl
cnNlY3Rpb247Ci0gICAgfSwKKyAgICB9CiAKLSAgICB1bmlvbldpdGhSZWN0OiBmdW5jdGlvbihy
ZWN0KQorICAgIHVuaW9uV2l0aFJlY3QocmVjdCkKICAgICB7CiAgICAgICAgIHZhciB4ID0gTWF0
aC5taW4odGhpcy5taW5YKCksIHJlY3QubWluWCgpKTsKICAgICAgICAgdmFyIHkgPSBNYXRoLm1p
bih0aGlzLm1pblkoKSwgcmVjdC5taW5ZKCkpOwogICAgICAgICB2YXIgd2lkdGggPSBNYXRoLm1h
eCh0aGlzLm1heFgoKSwgcmVjdC5tYXhYKCkpIC0geDsKICAgICAgICAgdmFyIGhlaWdodCA9IE1h
dGgubWF4KHRoaXMubWF4WSgpLCByZWN0Lm1heFkoKSkgLSB5OwogICAgICAgICByZXR1cm4gbmV3
IFdlYkluc3BlY3Rvci5SZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpOwotICAgIH0sCisgICAgfQog
Ci0gICAgcm91bmQ6IGZ1bmN0aW9uKCkKKyAgICByb3VuZCgpCiAgICAgewogICAgICAgICByZXR1
cm4gbmV3IFdlYkluc3BlY3Rvci5SZWN0KAogICAgICAgICAgICAgTWF0aC5mbG9vcih0aGlzLm9y
aWdpbi54KSwKQEAgLTIxNSwzMyArMjIyLDM0IEBAIFdlYkluc3BlY3Rvci5SZWN0LnByb3RvdHlw
ZSA9IHsKIFdlYkluc3BlY3Rvci5SZWN0LlpFUk9fUkVDVCA9IG5ldyBXZWJJbnNwZWN0b3IuUmVj
dCgwLCAwLCAwLCAwKTsKIAogCi1XZWJJbnNwZWN0b3IuRWRnZUluc2V0cyA9IGZ1bmN0aW9uKHRv
cCwgcmlnaHQsIGJvdHRvbSwgbGVmdCkKK1dlYkluc3BlY3Rvci5FZGdlSW5zZXRzID0gY2xhc3Mg
RWRnZUluc2V0cwogewotICAgIGNvbnNvbGUuYXNzZXJ0KGFyZ3VtZW50cy5sZW5ndGggPT09IDEg
fHwgYXJndW1lbnRzLmxlbmd0aCA9PT0gNCk7CisgICAgY29uc3RydWN0b3IodG9wLCByaWdodCwg
Ym90dG9tLCBsZWZ0KQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoYXJndW1lbnRzLmxl
bmd0aCA9PT0gMSB8fCBhcmd1bWVudHMubGVuZ3RoID09PSA0KTsKIAotICAgIGlmIChhcmd1bWVu
dHMubGVuZ3RoID09PSAxKSB7Ci0gICAgICAgIHRoaXMudG9wID0gdG9wOwotICAgICAgICB0aGlz
LnJpZ2h0ID0gdG9wOwotICAgICAgICB0aGlzLmJvdHRvbSA9IHRvcDsKLSAgICAgICAgdGhpcy5s
ZWZ0ID0gdG9wOwotICAgIH0gZWxzZSBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gNCkgewotICAg
ICAgICB0aGlzLnRvcCA9IHRvcDsKLSAgICAgICAgdGhpcy5yaWdodCA9IHJpZ2h0OwotICAgICAg
ICB0aGlzLmJvdHRvbSA9IGJvdHRvbTsKLSAgICAgICAgdGhpcy5sZWZ0ID0gbGVmdDsKKyAgICAg
ICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDEpIHsKKyAgICAgICAgICAgIHRoaXMudG9wID0g
dG9wOworICAgICAgICAgICAgdGhpcy5yaWdodCA9IHRvcDsKKyAgICAgICAgICAgIHRoaXMuYm90
dG9tID0gdG9wOworICAgICAgICAgICAgdGhpcy5sZWZ0ID0gdG9wOworICAgICAgICB9IGVsc2Ug
aWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDQpIHsKKyAgICAgICAgICAgIHRoaXMudG9wID0gdG9w
OworICAgICAgICAgICAgdGhpcy5yaWdodCA9IHJpZ2h0OworICAgICAgICAgICAgdGhpcy5ib3R0
b20gPSBib3R0b207CisgICAgICAgICAgICB0aGlzLmxlZnQgPSBsZWZ0OworICAgICAgICB9CiAg
ICAgfQotfTsKIAotV2ViSW5zcGVjdG9yLkVkZ2VJbnNldHMucHJvdG90eXBlID0gewotICAgIGNv
bnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuRWRnZUluc2V0cywKKyAgICAvLyBQdWJsaWMKIAotICAg
IGVxdWFsczogZnVuY3Rpb24oYW5vdGhlckluc2V0KQorICAgIGVxdWFscyhhbm90aGVySW5zZXQp
CiAgICAgewogICAgICAgICByZXR1cm4gKHRoaXMudG9wID09PSBhbm90aGVySW5zZXQudG9wICYm
IHRoaXMucmlnaHQgPT09IGFub3RoZXJJbnNldC5yaWdodCAmJgogICAgICAgICAgICAgICAgIHRo
aXMuYm90dG9tID09PSBhbm90aGVySW5zZXQuYm90dG9tICYmIHRoaXMubGVmdCA9PT0gYW5vdGhl
ckluc2V0LmxlZnQpOwotICAgIH0sCisgICAgfQogCi0gICAgY29weTogZnVuY3Rpb24oKQorICAg
IGNvcHkoKQogICAgIHsKICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuRWRnZUluc2V0
cyh0aGlzLnRvcCwgdGhpcy5yaWdodCwgdGhpcy5ib3R0b20sIHRoaXMubGVmdCk7CiAgICAgfQpA
QCAtMjU0LDIzICsyNjIsMjQgQEAgV2ViSW5zcGVjdG9yLlJlY3RFZGdlID0gewogICAgIE1BWF9Z
IDogMwogfTsKIAotV2ViSW5zcGVjdG9yLlF1YWQgPSBmdW5jdGlvbihxdWFkKQorV2ViSW5zcGVj
dG9yLlF1YWQgPSBjbGFzcyBRdWFkCiB7Ci0gICAgdGhpcy5wb2ludHMgPSBbCi0gICAgICAgIG5l
dyBXZWJJbnNwZWN0b3IuUG9pbnQocXVhZFswXSwgcXVhZFsxXSksIC8vIHRvcCBsZWZ0Ci0gICAg
ICAgIG5ldyBXZWJJbnNwZWN0b3IuUG9pbnQocXVhZFsyXSwgcXVhZFszXSksIC8vIHRvcCByaWdo
dAotICAgICAgICBuZXcgV2ViSW5zcGVjdG9yLlBvaW50KHF1YWRbNF0sIHF1YWRbNV0pLCAvLyBi
b3R0b20gcmlnaHQKLSAgICAgICAgbmV3IFdlYkluc3BlY3Rvci5Qb2ludChxdWFkWzZdLCBxdWFk
WzddKSAgLy8gYm90dG9tIGxlZnQKLSAgICBdOworICAgIGNvbnN0cnVjdG9yKHF1YWQpCisgICAg
eworICAgICAgICB0aGlzLnBvaW50cyA9IFsKKyAgICAgICAgICAgIG5ldyBXZWJJbnNwZWN0b3Iu
UG9pbnQocXVhZFswXSwgcXVhZFsxXSksIC8vIHRvcCBsZWZ0CisgICAgICAgICAgICBuZXcgV2Vi
SW5zcGVjdG9yLlBvaW50KHF1YWRbMl0sIHF1YWRbM10pLCAvLyB0b3AgcmlnaHQKKyAgICAgICAg
ICAgIG5ldyBXZWJJbnNwZWN0b3IuUG9pbnQocXVhZFs0XSwgcXVhZFs1XSksIC8vIGJvdHRvbSBy
aWdodAorICAgICAgICAgICAgbmV3IFdlYkluc3BlY3Rvci5Qb2ludChxdWFkWzZdLCBxdWFkWzdd
KSAgLy8gYm90dG9tIGxlZnQKKyAgICAgICAgXTsKIAotICAgIHRoaXMud2lkdGggPSBNYXRoLnJv
dW5kKE1hdGguc3FydChNYXRoLnBvdyhxdWFkWzBdIC0gcXVhZFsyXSwgMikgKyBNYXRoLnBvdyhx
dWFkWzFdIC0gcXVhZFszXSwgMikpKTsKLSAgICB0aGlzLmhlaWdodCA9IE1hdGgucm91bmQoTWF0
aC5zcXJ0KE1hdGgucG93KHF1YWRbMF0gLSBxdWFkWzZdLCAyKSArIE1hdGgucG93KHF1YWRbMV0g
LSBxdWFkWzddLCAyKSkpOwotfTsKKyAgICAgICAgdGhpcy53aWR0aCA9IE1hdGgucm91bmQoTWF0
aC5zcXJ0KE1hdGgucG93KHF1YWRbMF0gLSBxdWFkWzJdLCAyKSArIE1hdGgucG93KHF1YWRbMV0g
LSBxdWFkWzNdLCAyKSkpOworICAgICAgICB0aGlzLmhlaWdodCA9IE1hdGgucm91bmQoTWF0aC5z
cXJ0KE1hdGgucG93KHF1YWRbMF0gLSBxdWFkWzZdLCAyKSArIE1hdGgucG93KHF1YWRbMV0gLSBx
dWFkWzddLCAyKSkpOworICAgIH0KIAotV2ViSW5zcGVjdG9yLlF1YWQucHJvdG90eXBlID0gewot
ICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuUXVhZCwKKyAgICAvLyBQdWJsaWMKIAotICAg
IHRvUHJvdG9jb2w6IGZ1bmN0aW9uKCkKKyAgICB0b1Byb3RvY29sKCkKICAgICB7CiAgICAgICAg
IHJldHVybiBbCiAgICAgICAgICAgICB0aGlzLnBvaW50c1swXS54LCB0aGlzLnBvaW50c1swXS55
LApAQCAtMjgxLDE1ICsyOTAsMTYgQEAgV2ViSW5zcGVjdG9yLlF1YWQucHJvdG90eXBlID0gewog
ICAgIH0KIH07CiAKLVdlYkluc3BlY3Rvci5Qb2x5Z29uID0gZnVuY3Rpb24ocG9pbnRzKQorV2Vi
SW5zcGVjdG9yLlBvbHlnb24gPSBjbGFzcyBQb2x5Z29uCiB7Ci0gICAgdGhpcy5wb2ludHMgPSBw
b2ludHM7Ci19CisgICAgY29uc3RydWN0b3IocG9pbnRzKQorICAgIHsKKyAgICAgICAgdGhpcy5w
b2ludHMgPSBwb2ludHM7CisgICAgfQogCi1XZWJJbnNwZWN0b3IuUG9seWdvbi5wcm90b3R5cGUg
PSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5Qb2x5Z29uLAorICAgIC8vIFB1Ymxp
YwogCi0gICAgYm91bmRzOiBmdW5jdGlvbigpCisgICAgYm91bmRzKCkKICAgICB7CiAgICAgICAg
IHZhciBtaW5YID0gTnVtYmVyLk1BWF9WQUxVRTsKICAgICAgICAgdmFyIG1pblkgPSBOdW1iZXIu
TUFYX1ZBTFVFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvTW9kZWxzL0dyYWRpZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvTW9kZWxzL0dyYWRpZW50LmpzCmluZGV4IDcyMDRkZWIuLjdhMmQ5MzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9HcmFkaWVudC5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvR3JhZGllbnQu
anMKQEAgLTIzLDEzICsyMywxNCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKKy8vIEZJWE1FOiBDb252ZXJ0IHRvIGNsYXNzPwogV2ViSW5zcGVjdG9yLkdyYWRp
ZW50ID0gewotICAgIFR5cGVzIDogeworICAgIFR5cGVzOiB7CiAgICAgICAgIExpbmVhcjogImxp
bmVhci1ncmFkaWVudCIsCiAgICAgICAgIFJhZGlhbDogInJhZGlhbC1ncmFkaWVudCIKICAgICB9
LAogCi0gICAgZnJvbVN0cmluZzogZnVuY3Rpb24oY3NzU3RyaW5nKQorICAgIGZyb21TdHJpbmco
Y3NzU3RyaW5nKQogICAgIHsKICAgICAgICAgdmFyIHR5cGU7CiAgICAgICAgIHZhciBvcGVuaW5n
UGFyZW50aGVzaXNJbmRleCA9IGNzc1N0cmluZy5pbmRleE9mKCIoIik7CkBAIC05NSw3ICs5Niw3
IEBAIFdlYkluc3BlY3Rvci5HcmFkaWVudCA9IHsKICAgICAgICAgcmV0dXJuIGdyYWRpZW50Owog
ICAgIH0sCiAKLSAgICBzdG9wc1dpdGhDb21wb25lbnRzOiBmdW5jdGlvbihjb21wb25lbnRzKQor
ICAgIHN0b3BzV2l0aENvbXBvbmVudHMoY29tcG9uZW50cykKICAgICB7CiAgICAgICAgIC8vIEZJ
WE1FOiBoYW5kbGUgbGVuZ3Rocy4KICAgICAgICAgdmFyIHN0b3BzID0gY29tcG9uZW50cy5tYXAo
ZnVuY3Rpb24oY29tcG9uZW50KSB7CkBAIC0xMzEsNyArMTMyLDcgQEAgV2ViSW5zcGVjdG9yLkdy
YWRpZW50ID0gewogICAgICAgICByZXR1cm4gc3RvcHM7CiAgICAgfSwKIAotICAgIHN0cmluZ0Zy
b21TdG9wczogZnVuY3Rpb24oc3RvcHMpCisgICAgc3RyaW5nRnJvbVN0b3BzKHN0b3BzKQogICAg
IHsKICAgICAgICAgdmFyIGNvdW50ID0gc3RvcHMubGVuZ3RoIC0gMTsKICAgICAgICAgcmV0dXJu
IHN0b3BzLm1hcChmdW5jdGlvbihzdG9wLCBpbmRleCkgewpAQCAtMTQzLDc0ICsxNDQsNzcgQEAg
V2ViSW5zcGVjdG9yLkdyYWRpZW50ID0gewogICAgIH0KIH07CiAKLVdlYkluc3BlY3Rvci5MaW5l
YXJHcmFkaWVudCA9IGZ1bmN0aW9uKGFuZ2xlLCBzdG9wcykKK1dlYkluc3BlY3Rvci5MaW5lYXJH
cmFkaWVudCA9IGNsYXNzIExpbmVhckdyYWRpZW50CiB7Ci0gICAgdGhpcy50eXBlID0gV2ViSW5z
cGVjdG9yLkdyYWRpZW50LlR5cGVzLkxpbmVhcjsKLSAgICB0aGlzLmFuZ2xlID0gYW5nbGU7Ci0g
ICAgdGhpcy5zdG9wcyA9IHN0b3BzOwotfTsKKyAgICBjb25zdHJ1Y3RvcihhbmdsZSwgc3RvcHMp
CisgICAgeworICAgICAgICB0aGlzLnR5cGUgPSBXZWJJbnNwZWN0b3IuR3JhZGllbnQuVHlwZXMu
TGluZWFyOworICAgICAgICB0aGlzLmFuZ2xlID0gYW5nbGU7CisgICAgICAgIHRoaXMuc3RvcHMg
PSBzdG9wczsKKyAgICB9CiAKLVdlYkluc3BlY3Rvci5MaW5lYXJHcmFkaWVudC5saW5lYXJHcmFk
aWVudFdpdGhDb21wb25lbnRzID0gZnVuY3Rpb24oY29tcG9uZW50cykKLXsKLSAgICB2YXIgYW5n
bGUgPSAxODA7CisgICAgLy8gU3RhdGljCisKKyAgICBzdGF0aWMgbGluZWFyR3JhZGllbnRXaXRo
Q29tcG9uZW50cyhjb21wb25lbnRzKQorICAgIHsKKyAgICAgICAgdmFyIGFuZ2xlID0gMTgwOwog
Ci0gICAgaWYgKGNvbXBvbmVudHNbMF0ubGVuZ3RoID09PSAxICYmIGNvbXBvbmVudHNbMF1bMF0u
c3Vic3RyKC0zKSA9PT0gImRlZyIpIHsKLSAgICAgICAgYW5nbGUgPSAocGFyc2VGbG9hdChjb21w
b25lbnRzWzBdWzBdKSAlIDM2MCArIDM2MCkgJSAzNjA7Ci0gICAgICAgIGNvbXBvbmVudHMuc2hp
ZnQoKTsKLSAgICB9IGVsc2UgaWYgKGNvbXBvbmVudHNbMF1bMF0gPT09ICJ0byIpIHsKLSAgICAg
ICAgY29tcG9uZW50c1swXS5zaGlmdCgpOwotICAgICAgICBzd2l0Y2ggKGNvbXBvbmVudHNbMF0u
c29ydCgpLmpvaW4oIiAiKSkgewotICAgICAgICBjYXNlICJ0b3AiOgotICAgICAgICAgICAgYW5n
bGUgPSAwOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgInJpZ2h0IHRvcCI6Ci0g
ICAgICAgICAgICBhbmdsZSA9IDQ1OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
InJpZ2h0IjoKLSAgICAgICAgICAgIGFuZ2xlID0gOTA7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSAiYm90dG9tIHJpZ2h0IjoKLSAgICAgICAgICAgIGFuZ2xlID0gMTM1OwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgImJvdHRvbSI6Ci0gICAgICAgICAgICBhbmds
ZSA9IDE4MDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlICJib3R0b20gbGVmdCI6
Ci0gICAgICAgICAgICBhbmdsZSA9IDIyNTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlICJsZWZ0IjoKLSAgICAgICAgICAgIGFuZ2xlID0gMjcwOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgImxlZnQgdG9wIjoKLSAgICAgICAgICAgIGFuZ2xlID0gMzE1OwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBjb25zb2xlLmVy
cm9yKCJDb3VsZG4ndCBwYXJzZSBhbmdsZSBcInRvICIgKyBjb21wb25lbnRzWzBdLmpvaW4oIiAi
KSArICJcIiIpOworICAgICAgICBpZiAoY29tcG9uZW50c1swXS5sZW5ndGggPT09IDEgJiYgY29t
cG9uZW50c1swXVswXS5zdWJzdHIoLTMpID09PSAiZGVnIikgeworICAgICAgICAgICAgYW5nbGUg
PSAocGFyc2VGbG9hdChjb21wb25lbnRzWzBdWzBdKSAlIDM2MCArIDM2MCkgJSAzNjA7CisgICAg
ICAgICAgICBjb21wb25lbnRzLnNoaWZ0KCk7CisgICAgICAgIH0gZWxzZSBpZiAoY29tcG9uZW50
c1swXVswXSA9PT0gInRvIikgeworICAgICAgICAgICAgY29tcG9uZW50c1swXS5zaGlmdCgpOwor
ICAgICAgICAgICAgc3dpdGNoIChjb21wb25lbnRzWzBdLnNvcnQoKS5qb2luKCIgIikpIHsKKyAg
ICAgICAgICAgIGNhc2UgInRvcCI6CisgICAgICAgICAgICAgICAgYW5nbGUgPSAwOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAicmlnaHQgdG9wIjoKKyAgICAgICAg
ICAgICAgICBhbmdsZSA9IDQ1OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
Y2FzZSAicmlnaHQiOgorICAgICAgICAgICAgICAgIGFuZ2xlID0gOTA7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICJib3R0b20gcmlnaHQiOgorICAgICAgICAgICAg
ICAgIGFuZ2xlID0gMTM1OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSAiYm90dG9tIjoKKyAgICAgICAgICAgICAgICBhbmdsZSA9IDE4MDsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgImJvdHRvbSBsZWZ0IjoKKyAgICAgICAgICAgICAg
ICBhbmdsZSA9IDIyNTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ug
ImxlZnQiOgorICAgICAgICAgICAgICAgIGFuZ2xlID0gMjcwOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSAibGVmdCB0b3AiOgorICAgICAgICAgICAgICAgIGFuZ2xl
ID0gMzE1OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCJDb3VsZG4ndCBwYXJzZSBhbmdsZSBcInRvICIg
KyBjb21wb25lbnRzWzBdLmpvaW4oIiAiKSArICJcIiIpOworICAgICAgICAgICAgICAgIHJldHVy
biBudWxsOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY29tcG9uZW50cy5zaGlmdCgpOwor
ICAgICAgICB9IGVsc2UgaWYgKGNvbXBvbmVudHNbMF0ubGVuZ3RoICE9PSAxICYmICFXZWJJbnNw
ZWN0b3IuQ29sb3IuZnJvbVN0cmluZyhjb21wb25lbnRzWzBdWzBdKSkgeworICAgICAgICAgICAg
Ly8gSWYgdGhlIGZpcnN0IGNvbXBvbmVudCBpcyBub3QgYSBjb2xvciwgdGhlbiB3ZSdyZSBkZWFs
aW5nIHdpdGggYQorICAgICAgICAgICAgLy8gbGVnYWN5IGxpbmVhciBncmFkaWVudCBmb3JtYXQg
dGhhdCB3ZSBkb24ndCBzdXBwb3J0LgogICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAg
IH0KLSAgICAgICAgY29tcG9uZW50cy5zaGlmdCgpOwotICAgIH0gZWxzZSBpZiAoY29tcG9uZW50
c1swXS5sZW5ndGggIT09IDEgJiYgIVdlYkluc3BlY3Rvci5Db2xvci5mcm9tU3RyaW5nKGNvbXBv
bmVudHNbMF1bMF0pKSB7Ci0gICAgICAgIC8vIElmIHRoZSBmaXJzdCBjb21wb25lbnQgaXMgbm90
IGEgY29sb3IsIHRoZW4gd2UncmUgZGVhbGluZyB3aXRoIGEKLSAgICAgICAgLy8gbGVnYWN5IGxp
bmVhciBncmFkaWVudCBmb3JtYXQgdGhhdCB3ZSBkb24ndCBzdXBwb3J0LgotICAgICAgICByZXR1
cm4gbnVsbDsKKworICAgICAgICB2YXIgc3RvcHMgPSBXZWJJbnNwZWN0b3IuR3JhZGllbnQuc3Rv
cHNXaXRoQ29tcG9uZW50cyhjb21wb25lbnRzKTsKKyAgICAgICAgaWYgKCFzdG9wcykKKyAgICAg
ICAgICAgIHJldHVybiBudWxsOworCisgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkxp
bmVhckdyYWRpZW50KGFuZ2xlLCBzdG9wcyk7CiAgICAgfQogCi0gICAgdmFyIHN0b3BzID0gV2Vi
SW5zcGVjdG9yLkdyYWRpZW50LnN0b3BzV2l0aENvbXBvbmVudHMoY29tcG9uZW50cyk7Ci0gICAg
aWYgKCFzdG9wcykKLSAgICAgICAgcmV0dXJuIG51bGw7CisgICAgLy8gUHVibGljCiAKLSAgICBy
ZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5MaW5lYXJHcmFkaWVudChhbmdsZSwgc3RvcHMpOwotfTsK
LQotV2ViSW5zcGVjdG9yLkxpbmVhckdyYWRpZW50LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1
Y3RvcjogV2ViSW5zcGVjdG9yLkxpbmVhckdyYWRpZW50LAotCi0gICAgY29weTogZnVuY3Rpb24o
KQorICAgIGNvcHkoKQogICAgIHsKICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuTGlu
ZWFyR3JhZGllbnQodGhpcy5hbmdsZSwgdGhpcy5zdG9wcy5jb25jYXQoKSk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICB0b1N0cmluZzogZnVuY3Rpb24oKQorICAgIHRvU3RyaW5nKCkKICAgICB7CiAg
ICAgICAgIHZhciBzdHIgPSAiIjsKIApAQCAtMjQwLDMzICsyNDQsMzYgQEAgV2ViSW5zcGVjdG9y
LkxpbmVhckdyYWRpZW50LnByb3RvdHlwZSA9IHsKICAgICB9CiB9OwogCi1XZWJJbnNwZWN0b3Iu
UmFkaWFsR3JhZGllbnQgPSBmdW5jdGlvbihzaXppbmcsIHN0b3BzKQorV2ViSW5zcGVjdG9yLlJh
ZGlhbEdyYWRpZW50ID0gY2xhc3MgUmFkaWFsR3JhZGllbnQKIHsKLSAgICB0aGlzLnR5cGUgPSBX
ZWJJbnNwZWN0b3IuR3JhZGllbnQuVHlwZXMuUmFkaWFsOwotICAgIHRoaXMuc2l6aW5nID0gc2l6
aW5nOwotICAgIHRoaXMuc3RvcHMgPSBzdG9wczsKLX07CisgICAgY29uc3RydWN0b3Ioc2l6aW5n
LCBzdG9wcykKKyAgICB7CisgICAgICAgIHRoaXMudHlwZSA9IFdlYkluc3BlY3Rvci5HcmFkaWVu
dC5UeXBlcy5SYWRpYWw7CisgICAgICAgIHRoaXMuc2l6aW5nID0gc2l6aW5nOworICAgICAgICB0
aGlzLnN0b3BzID0gc3RvcHM7CisgICAgfQogCi1XZWJJbnNwZWN0b3IuUmFkaWFsR3JhZGllbnQu
cmFkaWFsR3JhZGllbnRXaXRoQ29tcG9uZW50cyA9IGZ1bmN0aW9uKGNvbXBvbmVudHMpCi17Ci0g
ICAgdmFyIHNpemluZyA9ICFXZWJJbnNwZWN0b3IuQ29sb3IuZnJvbVN0cmluZyhjb21wb25lbnRz
WzBdLmpvaW4oIiAiKSkgPyBjb21wb25lbnRzLnNoaWZ0KCkuam9pbigiICIpIDogIiI7CisgICAg
Ly8gU3RhdGljCisKKyAgICBzdGF0aWMgcmFkaWFsR3JhZGllbnRXaXRoQ29tcG9uZW50cyhjb21w
b25lbnRzKQorICAgIHsKKyAgICAgICAgdmFyIHNpemluZyA9ICFXZWJJbnNwZWN0b3IuQ29sb3Iu
ZnJvbVN0cmluZyhjb21wb25lbnRzWzBdLmpvaW4oIiAiKSkgPyBjb21wb25lbnRzLnNoaWZ0KCku
am9pbigiICIpIDogIiI7CiAKLSAgICB2YXIgc3RvcHMgPSBXZWJJbnNwZWN0b3IuR3JhZGllbnQu
c3RvcHNXaXRoQ29tcG9uZW50cyhjb21wb25lbnRzKTsKLSAgICBpZiAoIXN0b3BzKQotICAgICAg
ICByZXR1cm4gbnVsbDsKKyAgICAgICAgdmFyIHN0b3BzID0gV2ViSW5zcGVjdG9yLkdyYWRpZW50
LnN0b3BzV2l0aENvbXBvbmVudHMoY29tcG9uZW50cyk7CisgICAgICAgIGlmICghc3RvcHMpCisg
ICAgICAgICAgICByZXR1cm4gbnVsbDsKIAotICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlJh
ZGlhbEdyYWRpZW50KHNpemluZywgc3RvcHMpOwotfTsKKyAgICAgICAgcmV0dXJuIG5ldyBXZWJJ
bnNwZWN0b3IuUmFkaWFsR3JhZGllbnQoc2l6aW5nLCBzdG9wcyk7CisgICAgfQogCi1XZWJJbnNw
ZWN0b3IuUmFkaWFsR3JhZGllbnQucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJ
bnNwZWN0b3IuUmFkaWFsR3JhZGllbnQsCisgICAgLy8gUHVibGljCiAKLSAgICBjb3B5OiBmdW5j
dGlvbigpCisgICAgY29weSgpCiAgICAgewogICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rv
ci5SYWRpYWxHcmFkaWVudCh0aGlzLnNpemluZywgdGhpcy5zdG9wcy5jb25jYXQoKSk7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICB0b1N0cmluZzogZnVuY3Rpb24oKQorICAgIHRvU3RyaW5nKCkKICAg
ICB7CiAgICAgICAgIHZhciBzdHIgPSB0aGlzLnNpemluZzsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0luZGV4ZWREYXRhYmFzZS5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9JbmRleGVkRGF0YWJh
c2UuanMKaW5kZXggMGQ5ZGU3OC4uMjI0ZGEwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0luZGV4ZWREYXRhYmFzZS5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvSW5kZXhlZERhdGFiYXNlLmpz
CkBAIC0yMyw1OCArMjMsNTYgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
ICAqLwogCi1XZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFiYXNlID0gZnVuY3Rpb24obmFtZSwgc2Vj
dXJpdHlPcmlnaW4sIHZlcnNpb24sIG9iamVjdFN0b3JlcykKK1dlYkluc3BlY3Rvci5JbmRleGVk
RGF0YWJhc2UgPSBjbGFzcyBJbmRleGVkRGF0YWJhc2UgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2Jq
ZWN0CiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwotCi0gICAgdGhpcy5f
bmFtZSA9IG5hbWU7Ci0gICAgdGhpcy5fc2VjdXJpdHlPcmlnaW4gPSBzZWN1cml0eU9yaWdpbjsK
LSAgICB0aGlzLl9ob3N0ID0gcGFyc2VTZWN1cml0eU9yaWdpbihzZWN1cml0eU9yaWdpbikuaG9z
dDsKLSAgICB0aGlzLl92ZXJzaW9uID0gdmVyc2lvbjsKLSAgICB0aGlzLl9vYmplY3RTdG9yZXMg
PSBvYmplY3RTdG9yZXMgfHwgW107Ci0KLSAgICBmb3IgKHZhciBvYmplY3RTdG9yZSBvZiB0aGlz
Ll9vYmplY3RTdG9yZXMpCi0gICAgICAgIG9iamVjdFN0b3JlLmVzdGFibGlzaFJlbGF0aW9uc2hp
cCh0aGlzKTsKLX07Ci0KLVdlYkluc3BlY3Rvci5JbmRleGVkRGF0YWJhc2UuVHlwZUlkZW50aWZp
ZXIgPSAiaW5kZXhlZC1kYXRhYmFzZSI7Ci1XZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFiYXNlLk5h
bWVDb29raWVLZXkgPSAiaW5kZXhlZC1kYXRhYmFzZS1uYW1lIjsKLVdlYkluc3BlY3Rvci5JbmRl
eGVkRGF0YWJhc2UuSG9zdENvb2tpZUtleSA9ICJpbmRleGVkLWRhdGFiYXNlLWhvc3QiOwotCi1X
ZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFiYXNlLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3Rv
cjogV2ViSW5zcGVjdG9yLkluZGV4ZWREYXRhYmFzZSwKLSAgICBfX3Byb3RvX186IFdlYkluc3Bl
Y3Rvci5PYmplY3QucHJvdG90eXBlLAorICAgIGNvbnN0cnVjdG9yKG5hbWUsIHNlY3VyaXR5T3Jp
Z2luLCB2ZXJzaW9uLCBvYmplY3RTdG9yZXMpCisgICAgeworICAgICAgICBzdXBlcigpOworCisg
ICAgICAgIHRoaXMuX25hbWUgPSBuYW1lOworICAgICAgICB0aGlzLl9zZWN1cml0eU9yaWdpbiA9
IHNlY3VyaXR5T3JpZ2luOworICAgICAgICB0aGlzLl9ob3N0ID0gcGFyc2VTZWN1cml0eU9yaWdp
bihzZWN1cml0eU9yaWdpbikuaG9zdDsKKyAgICAgICAgdGhpcy5fdmVyc2lvbiA9IHZlcnNpb247
CisgICAgICAgIHRoaXMuX29iamVjdFN0b3JlcyA9IG9iamVjdFN0b3JlcyB8fCBbXTsKKworICAg
ICAgICBmb3IgKHZhciBvYmplY3RTdG9yZSBvZiB0aGlzLl9vYmplY3RTdG9yZXMpCisgICAgICAg
ICAgICBvYmplY3RTdG9yZS5lc3RhYmxpc2hSZWxhdGlvbnNoaXAodGhpcyk7CisgICAgfQogCiAg
ICAgLy8gUHVibGljCiAKICAgICBnZXQgbmFtZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhp
cy5fbmFtZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzZWN1cml0eU9yaWdpbigpCiAgICAg
ewogICAgICAgICByZXR1cm4gdGhpcy5fc2VjdXJpdHlPcmlnaW47Ci0gICAgfSwKKyAgICB9CiAK
ICAgICBnZXQgaG9zdCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5faG9zdDsKLSAgICB9
LAorICAgIH0KIAogICAgIGdldCB2ZXJzaW9uKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlz
Ll92ZXJzaW9uOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IG9iamVjdFN0b3JlcygpCiAgICAg
ewogICAgICAgICByZXR1cm4gdGhpcy5fb2JqZWN0U3RvcmVzOwotICAgIH0sCisgICAgfQogCi0g
ICAgc2F2ZUlkZW50aXR5VG9Db29raWU6IGZ1bmN0aW9uKGNvb2tpZSkKKyAgICBzYXZlSWRlbnRp
dHlUb0Nvb2tpZShjb29raWUpCiAgICAgewogICAgICAgICBjb29raWVbV2ViSW5zcGVjdG9yLklu
ZGV4ZWREYXRhYmFzZS5OYW1lQ29va2llS2V5XSA9IHRoaXMuX25hbWU7CiAgICAgICAgIGNvb2tp
ZVtXZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFiYXNlLkhvc3RDb29raWVLZXldID0gdGhpcy5faG9z
dDsKICAgICB9CiB9OworCitXZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFiYXNlLlR5cGVJZGVudGlm
aWVyID0gImluZGV4ZWQtZGF0YWJhc2UiOworV2ViSW5zcGVjdG9yLkluZGV4ZWREYXRhYmFzZS5O
YW1lQ29va2llS2V5ID0gImluZGV4ZWQtZGF0YWJhc2UtbmFtZSI7CitXZWJJbnNwZWN0b3IuSW5k
ZXhlZERhdGFiYXNlLkhvc3RDb29raWVLZXkgPSAiaW5kZXhlZC1kYXRhYmFzZS1ob3N0IjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9JbmRl
eGVkRGF0YWJhc2VPYmplY3RTdG9yZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL01vZGVscy9JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZS5qcwppbmRleCAzYjYzM2Rj
Li5iMTYyZDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Nb2RlbHMvSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmUuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0luZGV4ZWREYXRhYmFzZU9iamVjdFN0b3Jl
LmpzCkBAIC0yMyw2NSArMjMsNjMgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCi1XZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmUgPSBmdW5j
dGlvbihuYW1lLCBrZXlQYXRoLCBhdXRvSW5jcmVtZW50LCBpbmRleGVzKQorV2ViSW5zcGVjdG9y
LkluZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlID0gY2xhc3MgSW5kZXhlZERhdGFiYXNlT2JqZWN0
U3RvcmUgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9i
amVjdC5jYWxsKHRoaXMpOwotCi0gICAgdGhpcy5fbmFtZSA9IG5hbWU7Ci0gICAgdGhpcy5fa2V5
UGF0aCA9IGtleVBhdGg7Ci0gICAgdGhpcy5fYXV0b0luY3JlbWVudCA9IGF1dG9JbmNyZW1lbnQg
fHwgZmFsc2U7Ci0gICAgdGhpcy5faW5kZXhlcyA9IGluZGV4ZXMgfHwgW107Ci0gICAgdGhpcy5f
cGFyZW50RGF0YWJhc2UgPSBudWxsOwotCi0gICAgZm9yICh2YXIgaW5kZXggb2YgdGhpcy5faW5k
ZXhlcykKLSAgICAgICAgaW5kZXguZXN0YWJsaXNoUmVsYXRpb25zaGlwKHRoaXMpOwotfTsKLQot
V2ViSW5zcGVjdG9yLkluZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlLlR5cGVJZGVudGlmaWVyID0g
ImluZGV4ZWQtZGF0YWJhc2Utb2JqZWN0LXN0b3JlIjsKLVdlYkluc3BlY3Rvci5JbmRleGVkRGF0
YWJhc2VPYmplY3RTdG9yZS5OYW1lQ29va2llS2V5ID0gImluZGV4ZWQtZGF0YWJhc2Utb2JqZWN0
LXN0b3JlLW5hbWUiOwotV2ViSW5zcGVjdG9yLkluZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlLktl
eVBhdGhDb29raWVLZXkgPSAiaW5kZXhlZC1kYXRhYmFzZS1vYmplY3Qtc3RvcmUta2V5LXBhdGgi
OwotCi1XZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmUucHJvdG90eXBlID0g
ewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFiYXNlT2JqZWN0U3Rv
cmUsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZSwKKyAgICBj
b25zdHJ1Y3RvcihuYW1lLCBrZXlQYXRoLCBhdXRvSW5jcmVtZW50LCBpbmRleGVzKQorICAgIHsK
KyAgICAgICAgc3VwZXIoKTsKKworICAgICAgICB0aGlzLl9uYW1lID0gbmFtZTsKKyAgICAgICAg
dGhpcy5fa2V5UGF0aCA9IGtleVBhdGg7CisgICAgICAgIHRoaXMuX2F1dG9JbmNyZW1lbnQgPSBh
dXRvSW5jcmVtZW50IHx8IGZhbHNlOworICAgICAgICB0aGlzLl9pbmRleGVzID0gaW5kZXhlcyB8
fCBbXTsKKyAgICAgICAgdGhpcy5fcGFyZW50RGF0YWJhc2UgPSBudWxsOworCisgICAgICAgIGZv
ciAodmFyIGluZGV4IG9mIHRoaXMuX2luZGV4ZXMpCisgICAgICAgICAgICBpbmRleC5lc3RhYmxp
c2hSZWxhdGlvbnNoaXAodGhpcyk7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQg
bmFtZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fbmFtZTsKLSAgICB9LAorICAgIH0K
IAogICAgIGdldCBrZXlQYXRoKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9rZXlQYXRo
OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGF1dG9JbmNyZW1lbnQoKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHRoaXMuX2F1dG9JbmNyZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQg
cGFyZW50RGF0YWJhc2UoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3BhcmVudERhdGFi
YXNlOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGluZGV4ZXMoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHRoaXMuX2luZGV4ZXM7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzYXZlSWRlbnRpdHlU
b0Nvb2tpZTogZnVuY3Rpb24oY29va2llKQorICAgIHNhdmVJZGVudGl0eVRvQ29va2llKGNvb2tp
ZSkKICAgICB7CiAgICAgICAgIGNvb2tpZVtXZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFiYXNlT2Jq
ZWN0U3RvcmUuTmFtZUNvb2tpZUtleV0gPSB0aGlzLl9uYW1lOwogICAgICAgICBjb29raWVbV2Vi
SW5zcGVjdG9yLkluZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlLktleVBhdGhDb29raWVLZXldID0g
dGhpcy5fa2V5UGF0aDsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByb3RlY3RlZAogCi0gICAg
ZXN0YWJsaXNoUmVsYXRpb25zaGlwOiBmdW5jdGlvbihwYXJlbnREYXRhYmFzZSkKKyAgICBlc3Rh
Ymxpc2hSZWxhdGlvbnNoaXAocGFyZW50RGF0YWJhc2UpCiAgICAgewogICAgICAgICB0aGlzLl9w
YXJlbnREYXRhYmFzZSA9IHBhcmVudERhdGFiYXNlIHx8IG51bGw7CiAgICAgfQogfTsKKworV2Vi
SW5zcGVjdG9yLkluZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlLlR5cGVJZGVudGlmaWVyID0gImlu
ZGV4ZWQtZGF0YWJhc2Utb2JqZWN0LXN0b3JlIjsKK1dlYkluc3BlY3Rvci5JbmRleGVkRGF0YWJh
c2VPYmplY3RTdG9yZS5OYW1lQ29va2llS2V5ID0gImluZGV4ZWQtZGF0YWJhc2Utb2JqZWN0LXN0
b3JlLW5hbWUiOworV2ViSW5zcGVjdG9yLkluZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlLktleVBh
dGhDb29raWVLZXkgPSAiaW5kZXhlZC1kYXRhYmFzZS1vYmplY3Qtc3RvcmUta2V5LXBhdGgiOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0lu
ZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlSW5kZXguanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Nb2RlbHMvSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVJbmRleC5qcwpp
bmRleCAzNTU0YjVkLi5mNTNiZGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Nb2RlbHMvSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVJbmRleC5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvSW5kZXhlZERh
dGFiYXNlT2JqZWN0U3RvcmVJbmRleC5qcwpAQCAtMjMsNjIgKzIzLDYwIEBACiAgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkluZGV4ZWREYXRh
YmFzZU9iamVjdFN0b3JlSW5kZXggPSBmdW5jdGlvbihuYW1lLCBrZXlQYXRoLCB1bmlxdWUsIG11
bHRpRW50cnkpCitXZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVJbmRleCA9
IGNsYXNzIEluZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlSW5kZXggZXh0ZW5kcyBXZWJJbnNwZWN0
b3IuT2JqZWN0CiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIGNv
bnN0cnVjdG9yKG5hbWUsIGtleVBhdGgsIHVuaXF1ZSwgbXVsdGlFbnRyeSkKKyAgICB7CisgICAg
ICAgIHN1cGVyKCk7CiAKLSAgICB0aGlzLl9uYW1lID0gbmFtZTsKLSAgICB0aGlzLl9rZXlQYXRo
ID0ga2V5UGF0aDsKLSAgICB0aGlzLl91bmlxdWUgPSB1bmlxdWUgfHwgZmFsc2U7Ci0gICAgdGhp
cy5fbXVsdGlFbnRyeSA9IG11bHRpRW50cnkgfHwgZmFsc2U7Ci0gICAgdGhpcy5fcGFyZW50T2Jq
ZWN0U3RvcmUgPSBudWxsOwotfTsKLQotV2ViSW5zcGVjdG9yLkluZGV4ZWREYXRhYmFzZU9iamVj
dFN0b3JlSW5kZXguVHlwZUlkZW50aWZpZXIgPSAiaW5kZXhlZC1kYXRhYmFzZS1vYmplY3Qtc3Rv
cmUtaW5kZXgiOwotV2ViSW5zcGVjdG9yLkluZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlSW5kZXgu
TmFtZUNvb2tpZUtleSA9ICJpbmRleGVkLWRhdGFiYXNlLW9iamVjdC1zdG9yZS1pbmRleC1uYW1l
IjsKLVdlYkluc3BlY3Rvci5JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZUluZGV4LktleVBhdGhD
b29raWVLZXkgPSAiaW5kZXhlZC1kYXRhYmFzZS1vYmplY3Qtc3RvcmUtaW5kZXgta2V5LXBhdGgi
OwotCi1XZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVJbmRleC5wcm90b3R5
cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5JbmRleGVkRGF0YWJhc2VPYmpl
Y3RTdG9yZUluZGV4LAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5
cGUsCisgICAgICAgIHRoaXMuX25hbWUgPSBuYW1lOworICAgICAgICB0aGlzLl9rZXlQYXRoID0g
a2V5UGF0aDsKKyAgICAgICAgdGhpcy5fdW5pcXVlID0gdW5pcXVlIHx8IGZhbHNlOworICAgICAg
ICB0aGlzLl9tdWx0aUVudHJ5ID0gbXVsdGlFbnRyeSB8fCBmYWxzZTsKKyAgICAgICAgdGhpcy5f
cGFyZW50T2JqZWN0U3RvcmUgPSBudWxsOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAg
Z2V0IG5hbWUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX25hbWU7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICBnZXQga2V5UGF0aCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fa2V5
UGF0aDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCB1bmlxdWUoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHRoaXMuX3VuaXF1ZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBtdWx0aUVudHJ5
KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9tdWx0aUVudHJ5OwotICAgIH0sCisgICAg
fQogCiAgICAgZ2V0IHBhcmVudE9iamVjdFN0b3JlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0
aGlzLl9wYXJlbnRPYmplY3RTdG9yZTsKLSAgICB9LAorICAgIH0KIAotICAgIHNhdmVJZGVudGl0
eVRvQ29va2llOiBmdW5jdGlvbihjb29raWUpCisgICAgc2F2ZUlkZW50aXR5VG9Db29raWUoY29v
a2llKQogICAgIHsKICAgICAgICAgY29va2llW1dlYkluc3BlY3Rvci5JbmRleGVkRGF0YWJhc2VP
YmplY3RTdG9yZUluZGV4Lk5hbWVDb29raWVLZXldID0gdGhpcy5fbmFtZTsKICAgICAgICAgY29v
a2llW1dlYkluc3BlY3Rvci5JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZUluZGV4LktleVBhdGhD
b29raWVLZXldID0gdGhpcy5fa2V5UGF0aDsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByb3Rl
Y3RlZAogCi0gICAgZXN0YWJsaXNoUmVsYXRpb25zaGlwOiBmdW5jdGlvbihwYXJlbnRPYmplY3RT
dG9yZSkKKyAgICBlc3RhYmxpc2hSZWxhdGlvbnNoaXAocGFyZW50T2JqZWN0U3RvcmUpCiAgICAg
ewogICAgICAgICB0aGlzLl9wYXJlbnRPYmplY3RTdG9yZSA9IHBhcmVudE9iamVjdFN0b3JlIHx8
IG51bGw7CiAgICAgfQogfTsKKworV2ViSW5zcGVjdG9yLkluZGV4ZWREYXRhYmFzZU9iamVjdFN0
b3JlSW5kZXguVHlwZUlkZW50aWZpZXIgPSAiaW5kZXhlZC1kYXRhYmFzZS1vYmplY3Qtc3RvcmUt
aW5kZXgiOworV2ViSW5zcGVjdG9yLkluZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlSW5kZXguTmFt
ZUNvb2tpZUtleSA9ICJpbmRleGVkLWRhdGFiYXNlLW9iamVjdC1zdG9yZS1pbmRleC1uYW1lIjsK
K1dlYkluc3BlY3Rvci5JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZUluZGV4LktleVBhdGhDb29r
aWVLZXkgPSAiaW5kZXhlZC1kYXRhYmFzZS1vYmplY3Qtc3RvcmUtaW5kZXgta2V5LXBhdGgiOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0lz
c3VlTWVzc2FnZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVs
cy9Jc3N1ZU1lc3NhZ2UuanMKaW5kZXggOGUzZWI4Ni4uM2NkNDNkOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0lzc3VlTWVzc2FnZS5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvSXNzdWVNZXNz
YWdlLmpzCkBAIC0yMyw3OSArMjMsMTc4IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLklzc3VlTWVzc2FnZSA9IGZ1bmN0aW9uKHNvdXJj
ZSwgbGV2ZWwsIHRleHQsIHVybCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBwYXJhbWV0ZXJz
KQorV2ViSW5zcGVjdG9yLklzc3VlTWVzc2FnZSA9IGNsYXNzIElzc3VlTWVzc2FnZSBleHRlbmRz
IFdlYkluc3BlY3Rvci5PYmplY3QKIHsKLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhp
cyk7CisgICAgY29uc3RydWN0b3Ioc291cmNlLCBsZXZlbCwgdGV4dCwgdXJsLCBsaW5lTnVtYmVy
LCBjb2x1bW5OdW1iZXIsIHBhcmFtZXRlcnMpCisgICAgeworICAgICAgICBzdXBlcigpOwogCi0g
ICAgdGhpcy5fbGV2ZWwgPSBsZXZlbDsKLSAgICB0aGlzLl90ZXh0ID0gdGV4dDsKKyAgICAgICAg
dGhpcy5fbGV2ZWwgPSBsZXZlbDsKKyAgICAgICAgdGhpcy5fdGV4dCA9IHRleHQ7CiAKLSAgICAv
LyBGSVhNRTogTW92ZSB0byBhIFNvdXJjZUNvZGVMb2NhdGlvbi4KKyAgICAgICAgLy8gRklYTUU6
IE1vdmUgdG8gYSBTb3VyY2VDb2RlTG9jYXRpb24uCiAKLSAgICAvLyBGSVhNRSA8aHR0cDovL3dl
YmtpdC5vcmcvYi83NjQwND46IFJlbW92ZSB0aGUgc3RyaW5nIGVxdWFsaXR5IGNoZWNrcyBmb3Ig
dW5kZWZpbmVkCi0gICAgLy8gb25jZSB3ZSBkb24ndCBnZXQgdGhhdCB2YWx1ZSBhbnltb3JlIGZy
b20gV2ViQ29yZS4KKyAgICAgICAgLy8gRklYTUUgPGh0dHA6Ly93ZWJraXQub3JnL2IvNzY0MDQ+
OiBSZW1vdmUgdGhlIHN0cmluZyBlcXVhbGl0eSBjaGVja3MgZm9yIHVuZGVmaW5lZAorICAgICAg
ICAvLyBvbmNlIHdlIGRvbid0IGdldCB0aGF0IHZhbHVlIGFueW1vcmUgZnJvbSBXZWJDb3JlLgog
Ci0gICAgLy8gRklYTUU6IElmIHRoZSBVUkwgaXMgdW5kZWZpbmVkLCBnZXQgdGhlIFVSTCBmcm9t
IHRoZSBzdGFja3RyYWNlLgotICAgIGlmICh1cmwgJiYgdXJsICE9PSAidW5kZWZpbmVkIikKLSAg
ICAgICAgdGhpcy5fdXJsID0gdXJsOworICAgICAgICAvLyBGSVhNRTogSWYgdGhlIFVSTCBpcyB1
bmRlZmluZWQsIGdldCB0aGUgVVJMIGZyb20gdGhlIHN0YWNrdHJhY2UuCisgICAgICAgIGlmICh1
cmwgJiYgdXJsICE9PSAidW5kZWZpbmVkIikKKyAgICAgICAgICAgIHRoaXMuX3VybCA9IHVybDsK
IAotICAgIGlmICh0eXBlb2YgbGluZU51bWJlciA9PT0gIm51bWJlciIgJiYgbGluZU51bWJlciA+
PSAwKQotICAgICAgICB0aGlzLl9saW5lTnVtYmVyID0gbGluZU51bWJlcjsKKyAgICAgICAgaWYg
KHR5cGVvZiBsaW5lTnVtYmVyID09PSAibnVtYmVyIiAmJiBsaW5lTnVtYmVyID49IDApCisgICAg
ICAgICAgICB0aGlzLl9saW5lTnVtYmVyID0gbGluZU51bWJlcjsKIAotICAgIGlmICh0eXBlb2Yg
Y29sdW1uTnVtYmVyID09PSAibnVtYmVyIiAmJiBjb2x1bW5OdW1iZXIgPj0gMCkKLSAgICAgICAg
dGhpcy5fY29sdW1uTnVtYmVyID0gY29sdW1uTnVtYmVyOworICAgICAgICBpZiAodHlwZW9mIGNv
bHVtbk51bWJlciA9PT0gIm51bWJlciIgJiYgY29sdW1uTnVtYmVyID49IDApCisgICAgICAgICAg
ICB0aGlzLl9jb2x1bW5OdW1iZXIgPSBjb2x1bW5OdW1iZXI7CiAKLSAgICAvLyBGSVhNRTogPGh0
dHBzOi8vd2Via2l0Lm9yZy9iLzE0MjU1Mz4gV2ViIEluc3BlY3RvcjogTWVyZ2UgSXNzdWVNZXNz
YWdlL0NvbnNvbGVNZXNzYWdlIC0gYm90aCBhdHRlbXB0IHRvIG1vZGlmeSB0aGUgQ29uc29sZSBN
ZXNzYWdlcyBwYXJhbWV0ZXIgaW5kZXBlbmRlbnRseQorICAgICAgICAvLyBGSVhNRTogPGh0dHBz
Oi8vd2Via2l0Lm9yZy9iLzE0MjU1Mz4gV2ViIEluc3BlY3RvcjogTWVyZ2UgSXNzdWVNZXNzYWdl
L0NvbnNvbGVNZXNzYWdlIC0gYm90aCBhdHRlbXB0IHRvIG1vZGlmeSB0aGUgQ29uc29sZSBNZXNz
YWdlcyBwYXJhbWV0ZXIgaW5kZXBlbmRlbnRseQogCi0gICAgaWYgKHBhcmFtZXRlcnMgJiYgcGFy
YW1ldGVycyAhPT0gInVuZGVmaW5lZCIpIHsKLSAgICAgICAgdGhpcy5fcGFyYW1ldGVycyA9IFtd
OwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBhcmFtZXRlcnMubGVuZ3RoOyArK2kpIHsK
LSAgICAgICAgICAgIGlmIChwYXJhbWV0ZXJzW2ldIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJl
bW90ZU9iamVjdCkgewotICAgICAgICAgICAgICAgIHRoaXMuX3BhcmFtZXRlcnMucHVzaChwYXJh
bWV0ZXJzW2ldKTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKHBhcmFt
ZXRlcnMgJiYgcGFyYW1ldGVycyAhPT0gInVuZGVmaW5lZCIpIHsKKyAgICAgICAgICAgIHRoaXMu
X3BhcmFtZXRlcnMgPSBbXTsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGFyYW1l
dGVycy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgIGlmIChwYXJhbWV0ZXJzW2ldIGlu
c3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdCkgeworICAgICAgICAgICAgICAgICAg
ICB0aGlzLl9wYXJhbWV0ZXJzLnB1c2gocGFyYW1ldGVyc1tpXSk7CisgICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmICh0
eXBlb2YgcGFyYW1ldGVyc1tpXSA9PT0gIm9iamVjdCIpCisgICAgICAgICAgICAgICAgICAgIHRo
aXMuX3BhcmFtZXRlcnMucHVzaChXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LmZyb21QYXlsb2Fk
KHBhcmFtZXRlcnNbaV0pKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
ICAgIHRoaXMuX3BhcmFtZXRlcnMucHVzaChXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LmZyb21Q
cmltaXRpdmVWYWx1ZShwYXJhbWV0ZXJzW2ldKSk7CiAgICAgICAgICAgICB9CisgICAgICAgIH0K
KworICAgICAgICB0aGlzLl9mb3JtYXRUZXh0SWZOZWNlc3NhcnkoKTsKKworICAgICAgICBzd2l0
Y2ggKHNvdXJjZSkgeworICAgICAgICBjYXNlICJqYXZhc2NyaXB0IjoKKyAgICAgICAgICAgIC8v
IEZJWE1FOiBJdCB3b3VsZCBiZSBuaWNlIGlmIHdlIGhhZCB0aGlzIGluZm9ybWF0aW9uICh0aGUg
c3BlY2lmaWMgdHlwZSBvZiBKYXZhU2NyaXB0IGVycm9yKQorICAgICAgICAgICAgLy8gYXMgcGFy
dCBvZiB0aGUgZGF0YSBwYXNzZWQgZnJvbSBXZWJDb3JlLCBpbnN0ZWFkIG9mIGhhdmluZyB0byBk
ZXRlcm1pbmUgaXQgb3Vyc2VsdmVzLgorICAgICAgICAgICAgdmFyIHByZWZpeFJlZ2V4ID0gL14o
W146XSspOiAoPzpET00gRXhjZXB0aW9uIFxkKzogKT8vOworICAgICAgICAgICAgdmFyIG1hdGNo
ID0gcHJlZml4UmVnZXguZXhlYyh0aGlzLl90ZXh0KTsKKyAgICAgICAgICAgIGlmIChtYXRjaCAm
JiBtYXRjaFsxXSBpbiBXZWJJbnNwZWN0b3IuSXNzdWVNZXNzYWdlLlR5cGUuX3ByZWZpeFR5cGVN
YXApIHsKKyAgICAgICAgICAgICAgICB0aGlzLl90eXBlID0gV2ViSW5zcGVjdG9yLklzc3VlTWVz
c2FnZS5UeXBlLl9wcmVmaXhUeXBlTWFwW21hdGNoWzFdXTsKKyAgICAgICAgICAgICAgICB0aGlz
Ll90ZXh0ID0gdGhpcy5fdGV4dC5zdWJzdHJpbmcobWF0Y2hbMF0ubGVuZ3RoKTsKKyAgICAgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHRoaXMuX3R5cGUgPSBXZWJJbnNwZWN0b3IuSXNz
dWVNZXNzYWdlLlR5cGUuT3RoZXJJc3N1ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAg
IGNhc2UgImh0bWwiOgorICAgICAgICBjYXNlICJjc3MiOgorICAgICAgICBjYXNlICJ3bWwiOgor
ICAgICAgICBjYXNlICJ4bWwiOgorICAgICAgICAgICAgdGhpcy5fdHlwZSA9IFdlYkluc3BlY3Rv
ci5Jc3N1ZU1lc3NhZ2UuVHlwZS5QYWdlSXNzdWU7CisgICAgICAgICAgICBicmVhazsKKworICAg
ICAgICBjYXNlICJuZXR3b3JrIjoKKyAgICAgICAgICAgIHRoaXMuX3R5cGUgPSBXZWJJbnNwZWN0
b3IuSXNzdWVNZXNzYWdlLlR5cGUuTmV0d29ya0lzc3VlOworICAgICAgICAgICAgYnJlYWs7CiAK
LSAgICAgICAgICAgIGlmICh0eXBlb2YgcGFyYW1ldGVyc1tpXSA9PT0gIm9iamVjdCIpCi0gICAg
ICAgICAgICAgICAgdGhpcy5fcGFyYW1ldGVycy5wdXNoKFdlYkluc3BlY3Rvci5SZW1vdGVPYmpl
Y3QuZnJvbVBheWxvYWQocGFyYW1ldGVyc1tpXSkpOwotICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgIHRoaXMuX3BhcmFtZXRlcnMucHVzaChXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0
LmZyb21QcmltaXRpdmVWYWx1ZShwYXJhbWV0ZXJzW2ldKSk7CisgICAgICAgIGNhc2UgImNvbnNv
bGUtYXBpIjoKKyAgICAgICAgY2FzZSAib3RoZXIiOgorICAgICAgICAgICAgdGhpcy5fdHlwZSA9
IFdlYkluc3BlY3Rvci5Jc3N1ZU1lc3NhZ2UuVHlwZS5PdGhlcklzc3VlOworICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIlVu
a25vd24gaXNzdWUgc291cmNlOiIsIHNvdXJjZSk7CisgICAgICAgICAgICB0aGlzLl90eXBlID0g
V2ViSW5zcGVjdG9yLklzc3VlTWVzc2FnZS5UeXBlLk90aGVySXNzdWU7CiAgICAgICAgIH0KICAg
ICB9CiAKLSAgICB0aGlzLl9mb3JtYXRUZXh0SWZOZWNlc3NhcnkoKTsKKyAgICAvLyBTdGF0aWMK
IAotICAgIHN3aXRjaCAoc291cmNlKSB7Ci0gICAgY2FzZSAiamF2YXNjcmlwdCI6Ci0gICAgICAg
IC8vIEZJWE1FOiBJdCB3b3VsZCBiZSBuaWNlIGlmIHdlIGhhZCB0aGlzIGluZm9ybWF0aW9uICh0
aGUgc3BlY2lmaWMgdHlwZSBvZiBKYXZhU2NyaXB0IGVycm9yKQotICAgICAgICAvLyBhcyBwYXJ0
IG9mIHRoZSBkYXRhIHBhc3NlZCBmcm9tIFdlYkNvcmUsIGluc3RlYWQgb2YgaGF2aW5nIHRvIGRl
dGVybWluZSBpdCBvdXJzZWx2ZXMuCi0gICAgICAgIHZhciBwcmVmaXhSZWdleCA9IC9eKFteOl0r
KTogKD86RE9NIEV4Y2VwdGlvbiBcZCs6ICk/LzsKLSAgICAgICAgdmFyIG1hdGNoID0gcHJlZml4
UmVnZXguZXhlYyh0aGlzLl90ZXh0KTsKLSAgICAgICAgaWYgKG1hdGNoICYmIG1hdGNoWzFdIGlu
IFdlYkluc3BlY3Rvci5Jc3N1ZU1lc3NhZ2UuVHlwZS5fcHJlZml4VHlwZU1hcCkgewotICAgICAg
ICAgICAgdGhpcy5fdHlwZSA9IFdlYkluc3BlY3Rvci5Jc3N1ZU1lc3NhZ2UuVHlwZS5fcHJlZml4
VHlwZU1hcFttYXRjaFsxXV07Ci0gICAgICAgICAgICB0aGlzLl90ZXh0ID0gdGhpcy5fdGV4dC5z
dWJzdHJpbmcobWF0Y2hbMF0ubGVuZ3RoKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICB0
aGlzLl90eXBlID0gV2ViSW5zcGVjdG9yLklzc3VlTWVzc2FnZS5UeXBlLk90aGVySXNzdWU7Ci0g
ICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSAiaHRtbCI6Ci0gICAgY2FzZSAiY3NzIjoKLSAgICBj
YXNlICJ3bWwiOgotICAgIGNhc2UgInhtbCI6Ci0gICAgICAgIHRoaXMuX3R5cGUgPSBXZWJJbnNw
ZWN0b3IuSXNzdWVNZXNzYWdlLlR5cGUuUGFnZUlzc3VlOwotICAgICAgICBicmVhazsKLQotICAg
IGNhc2UgIm5ldHdvcmsiOgotICAgICAgICB0aGlzLl90eXBlID0gV2ViSW5zcGVjdG9yLklzc3Vl
TWVzc2FnZS5UeXBlLk5ldHdvcmtJc3N1ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlICJj
b25zb2xlLWFwaSI6Ci0gICAgY2FzZSAib3RoZXIiOgotICAgICAgICB0aGlzLl90eXBlID0gV2Vi
SW5zcGVjdG9yLklzc3VlTWVzc2FnZS5UeXBlLk90aGVySXNzdWU7Ci0gICAgICAgIGJyZWFrOwot
Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgY29uc29sZS5lcnJvcigiVW5rbm93biBpc3N1ZSBzb3Vy
Y2U6Iiwgc291cmNlKTsKLSAgICAgICAgdGhpcy5fdHlwZSA9IFdlYkluc3BlY3Rvci5Jc3N1ZU1l
c3NhZ2UuVHlwZS5PdGhlcklzc3VlOworICAgIHN0YXRpYyBkaXNwbGF5TmFtZSh0eXBlKQorICAg
IHsKKyAgICAgICAgc3dpdGNoKHR5cGUpIHsKKyAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuSXNz
dWVNZXNzYWdlLlR5cGUuU2VtYW50aWNJc3N1ZToKKyAgICAgICAgICAgIHJldHVybiBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIlNlbWFudGljIElzc3VlIik7CisgICAgICAgIGNhc2UgV2ViSW5zcGVj
dG9yLklzc3VlTWVzc2FnZS5UeXBlLlJhbmdlSXNzdWU6CisgICAgICAgICAgICByZXR1cm4gV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJSYW5nZSBJc3N1ZSIpOworICAgICAgICBjYXNlIFdlYkluc3Bl
Y3Rvci5Jc3N1ZU1lc3NhZ2UuVHlwZS5SZWZlcmVuY2VJc3N1ZToKKyAgICAgICAgICAgIHJldHVy
biBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlZmVyZW5jZSBJc3N1ZSIpOworICAgICAgICBjYXNl
IFdlYkluc3BlY3Rvci5Jc3N1ZU1lc3NhZ2UuVHlwZS5UeXBlSXNzdWU6CisgICAgICAgICAgICBy
ZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUeXBlIElzc3VlIik7CisgICAgICAgIGNhc2Ug
V2ViSW5zcGVjdG9yLklzc3VlTWVzc2FnZS5UeXBlLlBhZ2VJc3N1ZToKKyAgICAgICAgICAgIHJl
dHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlBhZ2UgSXNzdWUiKTsKKyAgICAgICAgY2FzZSBX
ZWJJbnNwZWN0b3IuSXNzdWVNZXNzYWdlLlR5cGUuTmV0d29ya0lzc3VlOgorICAgICAgICAgICAg
cmV0dXJuIFdlYkluc3BlY3Rvci5VSVN0cmluZygiTmV0d29yayBJc3N1ZSIpOworICAgICAgICBj
YXNlIFdlYkluc3BlY3Rvci5Jc3N1ZU1lc3NhZ2UuVHlwZS5TZWN1cml0eUlzc3VlOgorICAgICAg
ICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2VjdXJpdHkgSXNzdWUiKTsKKyAg
ICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuSXNzdWVNZXNzYWdlLlR5cGUuT3RoZXJJc3N1ZToKKyAg
ICAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk90aGVyIElzc3VlIik7Cisg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBjb25zb2xlLmVycm9yKCJVbmtub3duIGlzc3Vl
IG1lc3NhZ2UgdHlwZToiLCB0eXBlKTsKKyAgICAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIk90aGVyIElzc3VlIik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBQdWJs
aWMKKworICAgIGdldCB0eXBlKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl90eXBlOwor
ICAgIH0KKworICAgIGdldCBsZXZlbCgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fbGV2
ZWw7CisgICAgfQorCisgICAgZ2V0IHRleHQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMu
X3RleHQ7CisgICAgfQorCisgICAgZ2V0IHVybCgpCisgICAgeworICAgICAgICByZXR1cm4gdGhp
cy5fdXJsOworICAgIH0KKworICAgIGdldCBsaW5lTnVtYmVyKCkKKyAgICB7CisgICAgICAgIHJl
dHVybiB0aGlzLl9saW5lTnVtYmVyOworICAgIH0KKworICAgIGdldCBjb2x1bW5OdW1iZXIoKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2NvbHVtbk51bWJlcjsKKyAgICB9CisKKyAgICAv
LyBQcml2YXRlCisKKyAgICBfZm9ybWF0VGV4dElmTmVjZXNzYXJ5KCkKKyAgICB7CisgICAgICAg
IGlmICghdGhpcy5fcGFyYW1ldGVycykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBp
ZiAoV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC50eXBlKHRoaXMuX3BhcmFtZXRlcnNbMF0pICE9
PSAic3RyaW5nIikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBmdW5jdGlvbiB2YWx1
ZUZvcm1hdHRlcihvYmopCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBvYmouZGVzY3Jp
cHRpb247CisgICAgICAgIH0KKworICAgICAgICB2YXIgZm9ybWF0dGVycyA9IHt9OworICAgICAg
ICBmb3JtYXR0ZXJzLm8gPSB2YWx1ZUZvcm1hdHRlcjsKKyAgICAgICAgZm9ybWF0dGVycy5zID0g
dmFsdWVGb3JtYXR0ZXI7CisgICAgICAgIGZvcm1hdHRlcnMuZiA9IHZhbHVlRm9ybWF0dGVyOwor
ICAgICAgICBmb3JtYXR0ZXJzLmkgPSB2YWx1ZUZvcm1hdHRlcjsKKyAgICAgICAgZm9ybWF0dGVy
cy5kID0gdmFsdWVGb3JtYXR0ZXI7CisKKyAgICAgICAgZnVuY3Rpb24gYXBwZW5kKGEsIGIpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGEgKz0gYjsKKyAgICAgICAgICAgIHJldHVybiBhOworICAg
ICAgICB9CisKKyAgICAgICAgdmFyIHJlc3VsdCA9IFN0cmluZy5mb3JtYXQodGhpcy5fcGFyYW1l
dGVyc1swXS5kZXNjcmlwdGlvbiwgdGhpcy5fcGFyYW1ldGVycy5zbGljZSgxKSwgZm9ybWF0dGVy
cywgIiIsIGFwcGVuZCk7CisgICAgICAgIHZhciByZXN1bHRUZXh0ID0gcmVzdWx0LmZvcm1hdHRl
ZFJlc3VsdDsKKworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlc3VsdC51bnVzZWRTdWJz
dGl0dXRpb25zLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgcmVzdWx0VGV4dCArPSAiICIgKyBy
ZXN1bHQudW51c2VkU3Vic3RpdHV0aW9uc1tpXS5kZXNjcmlwdGlvbjsKKworICAgICAgICB0aGlz
Ll90ZXh0ID0gcmVzdWx0VGV4dDsKICAgICB9CiB9OwogCkBAIC0xNTQsMTAwICsyNTMsMyBAQCBX
ZWJJbnNwZWN0b3IuSXNzdWVNZXNzYWdlLlR5cGUuX3ByZWZpeFR5cGVNYXAgPSB7CiAgICAgIlVS
TF9NSVNNQVRDSF9FUlIiOiBXZWJJbnNwZWN0b3IuSXNzdWVNZXNzYWdlLlR5cGUuT3RoZXJJc3N1
ZSwKICAgICAiVkFMSURBVElPTl9FUlIiOiBXZWJJbnNwZWN0b3IuSXNzdWVNZXNzYWdlLlR5cGUu
T3RoZXJJc3N1ZQogfTsKLQotV2ViSW5zcGVjdG9yLklzc3VlTWVzc2FnZS5UeXBlLmRpc3BsYXlO
YW1lID0gZnVuY3Rpb24odHlwZSkKLXsKLSAgICBzd2l0Y2godHlwZSkgewotICAgIGNhc2UgV2Vi
SW5zcGVjdG9yLklzc3VlTWVzc2FnZS5UeXBlLlNlbWFudGljSXNzdWU6Ci0gICAgICAgIHJldHVy
biBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNlbWFudGljIElzc3VlIik7Ci0gICAgY2FzZSBXZWJJ
bnNwZWN0b3IuSXNzdWVNZXNzYWdlLlR5cGUuUmFuZ2VJc3N1ZToKLSAgICAgICAgcmV0dXJuIFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiUmFuZ2UgSXNzdWUiKTsKLSAgICBjYXNlIFdlYkluc3BlY3Rv
ci5Jc3N1ZU1lc3NhZ2UuVHlwZS5SZWZlcmVuY2VJc3N1ZToKLSAgICAgICAgcmV0dXJuIFdlYklu
c3BlY3Rvci5VSVN0cmluZygiUmVmZXJlbmNlIElzc3VlIik7Ci0gICAgY2FzZSBXZWJJbnNwZWN0
b3IuSXNzdWVNZXNzYWdlLlR5cGUuVHlwZUlzc3VlOgotICAgICAgICByZXR1cm4gV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJUeXBlIElzc3VlIik7Ci0gICAgY2FzZSBXZWJJbnNwZWN0b3IuSXNzdWVN
ZXNzYWdlLlR5cGUuUGFnZUlzc3VlOgotICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJQYWdlIElzc3VlIik7Ci0gICAgY2FzZSBXZWJJbnNwZWN0b3IuSXNzdWVNZXNzYWdlLlR5
cGUuTmV0d29ya0lzc3VlOgotICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJO
ZXR3b3JrIElzc3VlIik7Ci0gICAgY2FzZSBXZWJJbnNwZWN0b3IuSXNzdWVNZXNzYWdlLlR5cGUu
U2VjdXJpdHlJc3N1ZToKLSAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2Vj
dXJpdHkgSXNzdWUiKTsKLSAgICBjYXNlIFdlYkluc3BlY3Rvci5Jc3N1ZU1lc3NhZ2UuVHlwZS5P
dGhlcklzc3VlOgotICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJPdGhlciBJ
c3N1ZSIpOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIGNvbnNvbGUuZXJyb3IoIlVua25vd24gaXNz
dWUgbWVzc2FnZSB0eXBlOiIsIHR5cGUpOwotICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJPdGhlciBJc3N1ZSIpOwotICAgIH0KLX07Ci0KLVdlYkluc3BlY3Rvci5Jc3N1ZU1l
c3NhZ2UucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuSXNzdWVN
ZXNzYWdlLAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGUsCi0K
LSAgICBnZXQgdHlwZSgpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fdHlwZTsKLSAgICB9
LAotCi0gICAgZ2V0IGxldmVsKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9sZXZlbDsK
LSAgICB9LAotCi0gICAgZ2V0IHRleHQoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3Rl
eHQ7Ci0gICAgfSwKLQotICAgIGdldCB1cmwoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMu
X3VybDsKLSAgICB9LAotCi0gICAgZ2V0IGxpbmVOdW1iZXIoKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIHRoaXMuX2xpbmVOdW1iZXI7Ci0gICAgfSwKLQotICAgIGdldCBjb2x1bW5OdW1iZXIoKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2NvbHVtbk51bWJlcjsKLSAgICB9LAotCi0gICAg
Ly8gUHJpdmF0ZQotCi0gICAgX2Zvcm1hdFRleHRJZk5lY2Vzc2FyeSgpCi0gICAgewotICAgICAg
ICBpZiAoIXRoaXMuX3BhcmFtZXRlcnMpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAg
aWYgKFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QudHlwZSh0aGlzLl9wYXJhbWV0ZXJzWzBdKSAh
PT0gInN0cmluZyIpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgZnVuY3Rpb24gdmFs
dWVGb3JtYXR0ZXIob2JqKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gb2JqLmRlc2Ny
aXB0aW9uOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIGZvcm1hdHRlcnMgPSB7fTsKLSAgICAg
ICAgZm9ybWF0dGVycy5vID0gdmFsdWVGb3JtYXR0ZXI7Ci0gICAgICAgIGZvcm1hdHRlcnMucyA9
IHZhbHVlRm9ybWF0dGVyOwotICAgICAgICBmb3JtYXR0ZXJzLmYgPSB2YWx1ZUZvcm1hdHRlcjsK
LSAgICAgICAgZm9ybWF0dGVycy5pID0gdmFsdWVGb3JtYXR0ZXI7Ci0gICAgICAgIGZvcm1hdHRl
cnMuZCA9IHZhbHVlRm9ybWF0dGVyOwotCi0gICAgICAgIGZ1bmN0aW9uIGFwcGVuZChhLCBiKQot
ICAgICAgICB7Ci0gICAgICAgICAgICBhICs9IGI7Ci0gICAgICAgICAgICByZXR1cm4gYTsKLSAg
ICAgICAgfQotCi0gICAgICAgIHZhciByZXN1bHQgPSBTdHJpbmcuZm9ybWF0KHRoaXMuX3BhcmFt
ZXRlcnNbMF0uZGVzY3JpcHRpb24sIHRoaXMuX3BhcmFtZXRlcnMuc2xpY2UoMSksIGZvcm1hdHRl
cnMsICIiLCBhcHBlbmQpOwotICAgICAgICB2YXIgcmVzdWx0VGV4dCA9IHJlc3VsdC5mb3JtYXR0
ZWRSZXN1bHQ7Ci0KLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXN1bHQudW51c2VkU3Vi
c3RpdHV0aW9ucy5sZW5ndGg7ICsraSkKLSAgICAgICAgICAgIHJlc3VsdFRleHQgKz0gIiAiICsg
cmVzdWx0LnVudXNlZFN1YnN0aXR1dGlvbnNbaV0uZGVzY3JpcHRpb247Ci0KLSAgICAgICAgdGhp
cy5fdGV4dCA9IHJlc3VsdFRleHQ7Ci0gICAgfQotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9LZXlib2FyZFNob3J0Y3V0LmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0tleWJvYXJkU2hvcnRjdXQu
anMKaW5kZXggMzZjMThmYy4uZTdhMDM4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0tleWJvYXJkU2hvcnRjdXQuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0tleWJvYXJkU2hvcnRjdXQuanMK
QEAgLTIzLDY1ICsyMywxODUgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
ICAqLwogCi1XZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dCA9IGZ1bmN0aW9uKG1vZGlmaWVy
cywga2V5LCBjYWxsYmFjaywgdGFyZ2V0RWxlbWVudCkKK1dlYkluc3BlY3Rvci5LZXlib2FyZFNo
b3J0Y3V0ID0gY2xhc3MgS2V5Ym9hcmRTaG9ydGN1dCBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmpl
Y3QKIHsKLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CisgICAgY29uc3RydWN0
b3IobW9kaWZpZXJzLCBrZXksIGNhbGxiYWNrLCB0YXJnZXRFbGVtZW50KQorICAgIHsKKyAgICAg
ICAgc3VwZXIoKTsKIAotICAgIGNvbnNvbGUuYXNzZXJ0KGtleSk7Ci0gICAgY29uc29sZS5hc3Nl
cnQoIWNhbGxiYWNrIHx8IHR5cGVvZiBjYWxsYmFjayA9PT0gImZ1bmN0aW9uIik7Ci0gICAgY29u
c29sZS5hc3NlcnQoIXRhcmdldEVsZW1lbnQgfHwgdGFyZ2V0RWxlbWVudCBpbnN0YW5jZW9mIEVs
ZW1lbnQpOworICAgICAgICBjb25zb2xlLmFzc2VydChrZXkpOworICAgICAgICBjb25zb2xlLmFz
c2VydCghY2FsbGJhY2sgfHwgdHlwZW9mIGNhbGxiYWNrID09PSAiZnVuY3Rpb24iKTsKKyAgICAg
ICAgY29uc29sZS5hc3NlcnQoIXRhcmdldEVsZW1lbnQgfHwgdGFyZ2V0RWxlbWVudCBpbnN0YW5j
ZW9mIEVsZW1lbnQpOwogCi0gICAgaWYgKHR5cGVvZiBrZXkgPT09ICJzdHJpbmciKSB7Ci0gICAg
ICAgIGtleSA9IGtleVswXS50b1VwcGVyQ2FzZSgpOwotICAgICAgICBrZXkgPSBuZXcgV2ViSW5z
cGVjdG9yLktleShrZXkuY2hhckNvZGVBdCgwKSwga2V5KTsKLSAgICB9CisgICAgICAgIGlmICh0
eXBlb2Yga2V5ID09PSAic3RyaW5nIikgeworICAgICAgICAgICAga2V5ID0ga2V5WzBdLnRvVXBw
ZXJDYXNlKCk7CisgICAgICAgICAgICBrZXkgPSBuZXcgV2ViSW5zcGVjdG9yLktleShrZXkuY2hh
ckNvZGVBdCgwKSwga2V5KTsKKyAgICAgICAgfQogCi0gICAgaWYgKGNhbGxiYWNrICYmICF0YXJn
ZXRFbGVtZW50KQotICAgICAgICB0YXJnZXRFbGVtZW50ID0gZG9jdW1lbnQ7CisgICAgICAgIGlm
IChjYWxsYmFjayAmJiAhdGFyZ2V0RWxlbWVudCkKKyAgICAgICAgICAgIHRhcmdldEVsZW1lbnQg
PSBkb2N1bWVudDsKIAotICAgIHRoaXMuX21vZGlmaWVycyA9IG1vZGlmaWVycyB8fCBXZWJJbnNw
ZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5Ob25lOwotICAgIHRoaXMuX2tleSA9IGtl
eTsKLSAgICB0aGlzLl90YXJnZXRFbGVtZW50ID0gdGFyZ2V0RWxlbWVudDsKLSAgICB0aGlzLl9j
YWxsYmFjayA9IGNhbGxiYWNrOwotICAgIHRoaXMuX2Rpc2FibGVkID0gZmFsc2U7Ci0gICAgdGhp
cy5faW1wbGljaXRseVByZXZlbnRzRGVmYXVsdCA9IHRydWU7CisgICAgICAgIHRoaXMuX21vZGlm
aWVycyA9IG1vZGlmaWVycyB8fCBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmll
ci5Ob25lOworICAgICAgICB0aGlzLl9rZXkgPSBrZXk7CisgICAgICAgIHRoaXMuX3RhcmdldEVs
ZW1lbnQgPSB0YXJnZXRFbGVtZW50OworICAgICAgICB0aGlzLl9jYWxsYmFjayA9IGNhbGxiYWNr
OworICAgICAgICB0aGlzLl9kaXNhYmxlZCA9IGZhbHNlOworICAgICAgICB0aGlzLl9pbXBsaWNp
dGx5UHJldmVudHNEZWZhdWx0ID0gdHJ1ZTsKIAotICAgIGlmICh0YXJnZXRFbGVtZW50KSB7Ci0g
ICAgICAgIHZhciB0YXJnZXRLZXlib2FyZFNob3J0Y3V0cyA9IHRhcmdldEVsZW1lbnQuX2tleWJv
YXJkU2hvcnRjdXRzOwotICAgICAgICBpZiAoIXRhcmdldEtleWJvYXJkU2hvcnRjdXRzKQotICAg
ICAgICAgICAgdGFyZ2V0S2V5Ym9hcmRTaG9ydGN1dHMgPSB0YXJnZXRFbGVtZW50Ll9rZXlib2Fy
ZFNob3J0Y3V0cyA9IFtdOworICAgICAgICBpZiAodGFyZ2V0RWxlbWVudCkgeworICAgICAgICAg
ICAgdmFyIHRhcmdldEtleWJvYXJkU2hvcnRjdXRzID0gdGFyZ2V0RWxlbWVudC5fa2V5Ym9hcmRT
aG9ydGN1dHM7CisgICAgICAgICAgICBpZiAoIXRhcmdldEtleWJvYXJkU2hvcnRjdXRzKQorICAg
ICAgICAgICAgICAgIHRhcmdldEtleWJvYXJkU2hvcnRjdXRzID0gdGFyZ2V0RWxlbWVudC5fa2V5
Ym9hcmRTaG9ydGN1dHMgPSBbXTsKIAotICAgICAgICB0YXJnZXRLZXlib2FyZFNob3J0Y3V0cy5w
dXNoKHRoaXMpOworICAgICAgICAgICAgdGFyZ2V0S2V5Ym9hcmRTaG9ydGN1dHMucHVzaCh0aGlz
KTsKIAotICAgICAgICBpZiAoIVdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Ll9yZWdpc3Rl
cmVkS2V5RG93bkxpc3RlbmVyKSB7Ci0gICAgICAgICAgICBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRT
aG9ydGN1dC5fcmVnaXN0ZXJlZEtleURvd25MaXN0ZW5lciA9IHRydWU7Ci0gICAgICAgICAgICB3
aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsIFdlYkluc3BlY3Rvci5LZXlib2FyZFNo
b3J0Y3V0Ll9oYW5kbGVLZXlEb3duKTsKKyAgICAgICAgICAgIGlmICghV2ViSW5zcGVjdG9yLktl
eWJvYXJkU2hvcnRjdXQuX3JlZ2lzdGVyZWRLZXlEb3duTGlzdGVuZXIpIHsKKyAgICAgICAgICAg
ICAgICBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5fcmVnaXN0ZXJlZEtleURvd25MaXN0
ZW5lciA9IHRydWU7CisgICAgICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImtl
eWRvd24iLCBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5faGFuZGxlS2V5RG93bik7Cisg
ICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci19OwogCi1XZWJJbnNwZWN0b3IuS2V5Ym9h
cmRTaG9ydGN1dC5faGFuZGxlS2V5RG93biA9IGZ1bmN0aW9uKGV2ZW50KQotewotICAgIGlmIChl
dmVudC5kZWZhdWx0UHJldmVudGVkKQotICAgICAgICByZXR1cm47CisgICAgLy8gU3RhdGljCiAK
LSAgICBmb3IgKHZhciB0YXJnZXRFbGVtZW50ID0gZXZlbnQudGFyZ2V0OyB0YXJnZXRFbGVtZW50
OyB0YXJnZXRFbGVtZW50ID0gdGFyZ2V0RWxlbWVudC5wYXJlbnROb2RlKSB7Ci0gICAgICAgIGlm
ICghdGFyZ2V0RWxlbWVudC5fa2V5Ym9hcmRTaG9ydGN1dHMpCi0gICAgICAgICAgICBjb250aW51
ZTsKKyAgICBzdGF0aWMgX2hhbmRsZUtleURvd24oZXZlbnQpCisgICAgeworICAgICAgICBpZiAo
ZXZlbnQuZGVmYXVsdFByZXZlbnRlZCkKKyAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IHRhcmdldEVsZW1lbnQuX2tleWJvYXJkU2hvcnRjdXRzLmxlbmd0
aDsgKytpKSB7Ci0gICAgICAgICAgICB2YXIga2V5Ym9hcmRTaG9ydGN1dCA9IHRhcmdldEVsZW1l
bnQuX2tleWJvYXJkU2hvcnRjdXRzW2ldOwotICAgICAgICAgICAgaWYgKCFrZXlib2FyZFNob3J0
Y3V0Lm1hdGNoZXNFdmVudChldmVudCkpCisgICAgICAgIGZvciAodmFyIHRhcmdldEVsZW1lbnQg
PSBldmVudC50YXJnZXQ7IHRhcmdldEVsZW1lbnQ7IHRhcmdldEVsZW1lbnQgPSB0YXJnZXRFbGVt
ZW50LnBhcmVudE5vZGUpIHsKKyAgICAgICAgICAgIGlmICghdGFyZ2V0RWxlbWVudC5fa2V5Ym9h
cmRTaG9ydGN1dHMpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIGtl
eWJvYXJkU2hvcnRjdXQuY2FsbGJhY2soZXZlbnQsIGtleWJvYXJkU2hvcnRjdXQpOworICAgICAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0YXJnZXRFbGVtZW50Ll9rZXlib2FyZFNob3J0Y3V0
cy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgIHZhciBrZXlib2FyZFNob3J0Y3V0ID0g
dGFyZ2V0RWxlbWVudC5fa2V5Ym9hcmRTaG9ydGN1dHNbaV07CisgICAgICAgICAgICAgICAgaWYg
KCFrZXlib2FyZFNob3J0Y3V0Lm1hdGNoZXNFdmVudChldmVudCkpCisgICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICBpZiAoa2V5Ym9hcmRTaG9ydGN1dC5pbXBsaWNp
dGx5UHJldmVudHNEZWZhdWx0KQotICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0
KCk7CisgICAgICAgICAgICAgICAga2V5Ym9hcmRTaG9ydGN1dC5jYWxsYmFjayhldmVudCwga2V5
Ym9hcmRTaG9ydGN1dCk7CiAKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICBp
ZiAoa2V5Ym9hcmRTaG9ydGN1dC5pbXBsaWNpdGx5UHJldmVudHNEZWZhdWx0KQorICAgICAgICAg
ICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworCisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQorCisgICAgLy8gUHVibGljCisK
KyAgICBnZXQgbW9kaWZpZXJzKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9tb2RpZmll
cnM7CisgICAgfQorCisgICAgZ2V0IGtleSgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5f
a2V5OworICAgIH0KKworICAgIGdldCBkaXNwbGF5TmFtZSgpCisgICAgeworICAgICAgICB2YXIg
cmVzdWx0ID0gIiI7CisKKyAgICAgICAgaWYgKHRoaXMuX21vZGlmaWVycyAmIFdlYkluc3BlY3Rv
ci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLkNvbnRyb2wpCisgICAgICAgICAgICByZXN1bHQg
Kz0gIlx1MjMwMyI7CisgICAgICAgIGlmICh0aGlzLl9tb2RpZmllcnMgJiBXZWJJbnNwZWN0b3Iu
S2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5PcHRpb24pCisgICAgICAgICAgICByZXN1bHQgKz0g
V2ViSW5zcGVjdG9yLlBsYXRmb3JtLm5hbWUgPT09ICJtYWMiID8gIlx1MjMyNSIgOiAiXHUyMzg3
IjsKKyAgICAgICAgaWYgKHRoaXMuX21vZGlmaWVycyAmIFdlYkluc3BlY3Rvci5LZXlib2FyZFNo
b3J0Y3V0Lk1vZGlmaWVyLlNoaWZ0KQorICAgICAgICAgICAgcmVzdWx0ICs9ICJcdTIxZTciOwor
ICAgICAgICBpZiAodGhpcy5fbW9kaWZpZXJzICYgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRj
dXQuTW9kaWZpZXIuQ29tbWFuZCkKKyAgICAgICAgICAgIHJlc3VsdCArPSAiXHUyMzE4IjsKKwor
ICAgICAgICByZXN1bHQgKz0gdGhpcy5fa2V5LnRvU3RyaW5nKCk7CisKKyAgICAgICAgcmV0dXJu
IHJlc3VsdDsKKyAgICB9CisKKyAgICBnZXQgY2FsbGJhY2soKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHRoaXMuX2NhbGxiYWNrOworICAgIH0KKworICAgIGdldCBkaXNhYmxlZCgpCisgICAgewor
ICAgICAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7CisgICAgfQorCisgICAgc2V0IGRpc2FibGVk
KGRpc2FibGVkKQorICAgIHsKKyAgICAgICAgdGhpcy5fZGlzYWJsZWQgPSBkaXNhYmxlZCB8fCBm
YWxzZTsKKyAgICB9CisKKyAgICBnZXQgaW1wbGljaXRseVByZXZlbnRzRGVmYXVsdCgpCisgICAg
eworICAgICAgICByZXR1cm4gdGhpcy5faW1wbGljaXRseVByZXZlbnRzRGVmYXVsdDsKKyAgICB9
CisKKyAgICBzZXQgaW1wbGljaXRseVByZXZlbnRzRGVmYXVsdChpbXBsaWNpdGx5KQorICAgIHsK
KyAgICAgICAgdGhpcy5faW1wbGljaXRseVByZXZlbnRzRGVmYXVsdCA9IGltcGxpY2l0bHk7Cisg
ICAgfQorCisgICAgdW5iaW5kKCkKKyAgICB7CisgICAgICAgIHRoaXMuX2Rpc2FibGVkID0gdHJ1
ZTsKKworICAgICAgICBpZiAoIXRoaXMuX3RhcmdldEVsZW1lbnQpCisgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgdmFyIHRhcmdldEtleWJvYXJkU2hvcnRjdXRzID0gdGhpcy5fdGFyZ2V0
RWxlbWVudC5fa2V5Ym9hcmRTaG9ydGN1dHM7CisgICAgICAgIGlmICghdGFyZ2V0S2V5Ym9hcmRT
aG9ydGN1dHMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGFyZ2V0S2V5Ym9hcmRT
aG9ydGN1dHMucmVtb3ZlKHRoaXMpOworICAgIH0KKworICAgIG1hdGNoZXNFdmVudChldmVudCkK
KyAgICB7CisgICAgICAgIGlmICh0aGlzLl9kaXNhYmxlZCkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgICAgICBpZiAodGhpcy5fa2V5LmtleUNvZGUgIT09IGV2ZW50LmtleUNvZGUp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgdmFyIGV2ZW50TW9kaWZpZXJz
ID0gV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuTm9uZTsKKyAgICAgICAg
aWYgKGV2ZW50LnNoaWZ0S2V5KQorICAgICAgICAgICAgZXZlbnRNb2RpZmllcnMgfD0gV2ViSW5z
cGVjdG9yLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuU2hpZnQ7CisgICAgICAgIGlmIChldmVu
dC5jdHJsS2V5KQorICAgICAgICAgICAgZXZlbnRNb2RpZmllcnMgfD0gV2ViSW5zcGVjdG9yLktl
eWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuQ29udHJvbDsKKyAgICAgICAgaWYgKGV2ZW50LmFsdEtl
eSkKKyAgICAgICAgICAgIGV2ZW50TW9kaWZpZXJzIHw9IFdlYkluc3BlY3Rvci5LZXlib2FyZFNo
b3J0Y3V0Lk1vZGlmaWVyLk9wdGlvbjsKKyAgICAgICAgaWYgKGV2ZW50Lm1ldGFLZXkpCisgICAg
ICAgICAgICBldmVudE1vZGlmaWVycyB8PSBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5N
b2RpZmllci5Db21tYW5kOworICAgICAgICByZXR1cm4gdGhpcy5fbW9kaWZpZXJzID09PSBldmVu
dE1vZGlmaWVyczsKKyAgICB9Cit9OworCitXZWJJbnNwZWN0b3IuS2V5ID0gY2xhc3MgS2V5Cit7
CisgICAgY29uc3RydWN0b3Ioa2V5Q29kZSwgZGlzcGxheU5hbWUpCisgICAgeworICAgICAgICB0
aGlzLl9rZXlDb2RlID0ga2V5Q29kZTsKKyAgICAgICAgdGhpcy5fZGlzcGxheU5hbWUgPSBkaXNw
bGF5TmFtZTsKKyAgICB9CisKKyAgICAvLyBQdWJsaWMKKworICAgIGdldCBrZXlDb2RlKCkKKyAg
ICB7CisgICAgICAgIHJldHVybiB0aGlzLl9rZXlDb2RlOworICAgIH0KKworICAgIGdldCBkaXNw
bGF5TmFtZSgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fZGlzcGxheU5hbWU7CisgICAg
fQorCisgICAgdG9TdHJpbmcoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc3BsYXlO
YW1lOworICAgIH0KIH07CiAKIFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVy
ID0gewpAQCAtOTcsMjkgKzIxNyw2IEBAIFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1v
ZGlmaWVyID0gewogICAgIH0KIH07CiAKLVdlYkluc3BlY3Rvci5LZXkgPSBmdW5jdGlvbihrZXlD
b2RlLCBkaXNwbGF5TmFtZSkKLXsKLSAgICB0aGlzLl9rZXlDb2RlID0ga2V5Q29kZTsKLSAgICB0
aGlzLl9kaXNwbGF5TmFtZSA9IGRpc3BsYXlOYW1lOwotfTsKLQotV2ViSW5zcGVjdG9yLktleS5w
cm90b3R5cGUgPSB7Ci0gICAgZ2V0IGtleUNvZGUoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRo
aXMuX2tleUNvZGU7Ci0gICAgfSwKLQotICAgIGdldCBkaXNwbGF5TmFtZSgpCi0gICAgewotICAg
ICAgICByZXR1cm4gdGhpcy5fZGlzcGxheU5hbWU7Ci0gICAgfSwKLQotICAgIHRvU3RyaW5nOiBm
dW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fZGlzcGxheU5hbWU7Ci0gICAg
fQotfTsKLQogV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuS2V5ID0gewogICAgIEJhY2tz
cGFjZTogbmV3IFdlYkluc3BlY3Rvci5LZXkoOCwgIlx1MjMyYiIpLAogICAgIFRhYjogbmV3IFdl
Ykluc3BlY3Rvci5LZXkoOSwgIlx1MjFlNSIpLApAQCAtMTU4LDk4ICsyNTUsMyBAQCBXZWJJbnNw
ZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5LZXkgPSB7CiAgICAgQXBvc3Ryb3BoZTogbmV3IFdlYklu
c3BlY3Rvci5LZXkoMTkyLCAiYCIpLAogICAgIFNpbmdsZVF1b3RlOiBuZXcgV2ViSW5zcGVjdG9y
LktleSgyMjIsICJcJyIpCiB9OwotCi1XZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5wcm90
b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0
LAotCi0gICAgLy8gUHVibGljCi0KLSAgICBnZXQgbW9kaWZpZXJzKCkKLSAgICB7Ci0gICAgICAg
IHJldHVybiB0aGlzLl9tb2RpZmllcnM7Ci0gICAgfSwKLQotICAgIGdldCBrZXkoKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIHRoaXMuX2tleTsKLSAgICB9LAotCi0gICAgZ2V0IGRpc3BsYXlOYW1l
KCkKLSAgICB7Ci0gICAgICAgIHZhciByZXN1bHQgPSAiIjsKLQotICAgICAgICBpZiAodGhpcy5f
bW9kaWZpZXJzICYgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuQ29udHJv
bCkKLSAgICAgICAgICAgIHJlc3VsdCArPSAiXHUyMzAzIjsKLSAgICAgICAgaWYgKHRoaXMuX21v
ZGlmaWVycyAmIFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLk9wdGlvbikK
LSAgICAgICAgICAgIHJlc3VsdCArPSBXZWJJbnNwZWN0b3IuUGxhdGZvcm0ubmFtZSA9PT0gIm1h
YyIgPyAiXHUyMzI1IiA6ICJcdTIzODciOwotICAgICAgICBpZiAodGhpcy5fbW9kaWZpZXJzICYg
V2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuU2hpZnQpCi0gICAgICAgICAg
ICByZXN1bHQgKz0gIlx1MjFlNyI7Ci0gICAgICAgIGlmICh0aGlzLl9tb2RpZmllcnMgJiBXZWJJ
bnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5Db21tYW5kKQotICAgICAgICAgICAg
cmVzdWx0ICs9ICJcdTIzMTgiOwotCi0gICAgICAgIHJlc3VsdCArPSB0aGlzLl9rZXkudG9TdHJp
bmcoKTsKLQotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0sCi0KLSAgICBnZXQgY2FsbGJh
Y2soKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2NhbGxiYWNrOwotICAgIH0sCi0KLSAg
ICBnZXQgZGlzYWJsZWQoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkOwot
ICAgIH0sCi0KLSAgICBzZXQgZGlzYWJsZWQoZGlzYWJsZWQpCi0gICAgewotICAgICAgICB0aGlz
Ll9kaXNhYmxlZCA9IGRpc2FibGVkIHx8IGZhbHNlOwotICAgIH0sCi0KLSAgICBnZXQgaW1wbGlj
aXRseVByZXZlbnRzRGVmYXVsdCgpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5faW1wbGlj
aXRseVByZXZlbnRzRGVmYXVsdDsKLSAgICB9LAotCi0gICAgc2V0IGltcGxpY2l0bHlQcmV2ZW50
c0RlZmF1bHQoaW1wbGljaXRseSkKLSAgICB7Ci0gICAgICAgIHRoaXMuX2ltcGxpY2l0bHlQcmV2
ZW50c0RlZmF1bHQgPSBpbXBsaWNpdGx5OwotICAgIH0sCi0KLSAgICB1bmJpbmQ6IGZ1bmN0aW9u
KCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX2Rpc2FibGVkID0gdHJ1ZTsKLQotICAgICAgICBpZiAo
IXRoaXMuX3RhcmdldEVsZW1lbnQpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdmFy
IHRhcmdldEtleWJvYXJkU2hvcnRjdXRzID0gdGhpcy5fdGFyZ2V0RWxlbWVudC5fa2V5Ym9hcmRT
aG9ydGN1dHM7Ci0gICAgICAgIGlmICghdGFyZ2V0S2V5Ym9hcmRTaG9ydGN1dHMpCi0gICAgICAg
ICAgICByZXR1cm47Ci0KLSAgICAgICAgdGFyZ2V0S2V5Ym9hcmRTaG9ydGN1dHMucmVtb3ZlKHRo
aXMpOwotICAgIH0sCi0KLSAgICBtYXRjaGVzRXZlbnQ6IGZ1bmN0aW9uKGV2ZW50KQotICAgIHsK
LSAgICAgICAgaWYgKHRoaXMuX2Rpc2FibGVkKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgICAgIGlmICh0aGlzLl9rZXkua2V5Q29kZSAhPT0gZXZlbnQua2V5Q29kZSkKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICB2YXIgZXZlbnRNb2RpZmllcnMgPSBXZWJJ
bnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5Ob25lOwotICAgICAgICBpZiAoZXZl
bnQuc2hpZnRLZXkpCi0gICAgICAgICAgICBldmVudE1vZGlmaWVycyB8PSBXZWJJbnNwZWN0b3Iu
S2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5TaGlmdDsKLSAgICAgICAgaWYgKGV2ZW50LmN0cmxL
ZXkpCi0gICAgICAgICAgICBldmVudE1vZGlmaWVycyB8PSBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRT
aG9ydGN1dC5Nb2RpZmllci5Db250cm9sOwotICAgICAgICBpZiAoZXZlbnQuYWx0S2V5KQotICAg
ICAgICAgICAgZXZlbnRNb2RpZmllcnMgfD0gV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQu
TW9kaWZpZXIuT3B0aW9uOwotICAgICAgICBpZiAoZXZlbnQubWV0YUtleSkKLSAgICAgICAgICAg
IGV2ZW50TW9kaWZpZXJzIHw9IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVy
LkNvbW1hbmQ7Ci0gICAgICAgIHJldHVybiB0aGlzLl9tb2RpZmllcnMgPT09IGV2ZW50TW9kaWZp
ZXJzOwotICAgIH0KLX07Ci0KLVdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LnByb3RvdHlw
ZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9MYXlvdXRUaW1lbGlu
ZVJlY29yZC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9M
YXlvdXRUaW1lbGluZVJlY29yZC5qcwppbmRleCBhOTZlMDllLi5mN2U0MjRhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvTGF5b3V0VGltZWxp
bmVSZWNvcmQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9k
ZWxzL0xheW91dFRpbWVsaW5lUmVjb3JkLmpzCkBAIC0yMywxMDYgKzIzLDEwNSBAQAogICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5MYXlvdXRU
aW1lbGluZVJlY29yZCA9IGZ1bmN0aW9uKGV2ZW50VHlwZSwgc3RhcnRUaW1lLCBlbmRUaW1lLCBj
YWxsRnJhbWVzLCBzb3VyY2VDb2RlTG9jYXRpb24sIHgsIHksIHdpZHRoLCBoZWlnaHQsIHF1YWQp
CitXZWJJbnNwZWN0b3IuTGF5b3V0VGltZWxpbmVSZWNvcmQgPSBjbGFzcyBMYXlvdXRUaW1lbGlu
ZVJlY29yZCBleHRlbmRzIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZAogewotICAgIFdlYklu
c3BlY3Rvci5UaW1lbGluZVJlY29yZC5jYWxsKHRoaXMsIFdlYkluc3BlY3Rvci5UaW1lbGluZVJl
Y29yZC5UeXBlLkxheW91dCwgc3RhcnRUaW1lLCBlbmRUaW1lLCBjYWxsRnJhbWVzLCBzb3VyY2VD
b2RlTG9jYXRpb24pOworICAgIGNvbnN0cnVjdG9yKGV2ZW50VHlwZSwgc3RhcnRUaW1lLCBlbmRU
aW1lLCBjYWxsRnJhbWVzLCBzb3VyY2VDb2RlTG9jYXRpb24sIHgsIHksIHdpZHRoLCBoZWlnaHQs
IHF1YWQpCisgICAgeworICAgICAgICBzdXBlcihXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQu
VHlwZS5MYXlvdXQsIHN0YXJ0VGltZSwgZW5kVGltZSwgY2FsbEZyYW1lcywgc291cmNlQ29kZUxv
Y2F0aW9uKTsKIAotICAgIGNvbnNvbGUuYXNzZXJ0KGV2ZW50VHlwZSk7CisgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KGV2ZW50VHlwZSk7CiAKLSAgICBpZiAoZXZlbnRUeXBlIGluIFdlYkluc3BlY3Rv
ci5MYXlvdXRUaW1lbGluZVJlY29yZC5FdmVudFR5cGUpCi0gICAgICAgIGV2ZW50VHlwZSA9IFdl
Ykluc3BlY3Rvci5MYXlvdXRUaW1lbGluZVJlY29yZC5FdmVudFR5cGVbZXZlbnRUeXBlXTsKKyAg
ICAgICAgaWYgKGV2ZW50VHlwZSBpbiBXZWJJbnNwZWN0b3IuTGF5b3V0VGltZWxpbmVSZWNvcmQu
RXZlbnRUeXBlKQorICAgICAgICAgICAgZXZlbnRUeXBlID0gV2ViSW5zcGVjdG9yLkxheW91dFRp
bWVsaW5lUmVjb3JkLkV2ZW50VHlwZVtldmVudFR5cGVdOwogCi0gICAgdGhpcy5fZXZlbnRUeXBl
ID0gZXZlbnRUeXBlOwotICAgIHRoaXMuX3ggPSB0eXBlb2YgeCA9PT0gIm51bWJlciIgPyB4IDog
TmFOOwotICAgIHRoaXMuX3kgPSB0eXBlb2YgeSA9PT0gIm51bWJlciIgPyB5IDogTmFOOwotICAg
IHRoaXMuX3dpZHRoID0gdHlwZW9mIHdpZHRoID09PSAibnVtYmVyIiA/IHdpZHRoIDogTmFOOwot
ICAgIHRoaXMuX2hlaWdodCA9IHR5cGVvZiBoZWlnaHQgPT09ICJudW1iZXIiID8gaGVpZ2h0IDog
TmFOOwotICAgIHRoaXMuX3F1YWQgPSBxdWFkIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlF1YWQg
PyBxdWFkIDogbnVsbDsKLX07Ci0KLVdlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZVJlY29yZC5F
dmVudFR5cGUgPSB7Ci0gICAgSW52YWxpZGF0ZVN0eWxlczogImxheW91dC10aW1lbGluZS1yZWNv
cmQtaW52YWxpZGF0ZS1zdHlsZXMiLAotICAgIFJlY2FsY3VsYXRlU3R5bGVzOiAibGF5b3V0LXRp
bWVsaW5lLXJlY29yZC1yZWNhbGN1bGF0ZS1zdHlsZXMiLAotICAgIEludmFsaWRhdGVMYXlvdXQ6
ICJsYXlvdXQtdGltZWxpbmUtcmVjb3JkLWludmFsaWRhdGUtbGF5b3V0IiwKLSAgICBGb3JjZWRM
YXlvdXQ6ICJsYXlvdXQtdGltZWxpbmUtcmVjb3JkLWZvcmNlZC1sYXlvdXQiLAotICAgIExheW91
dDogImxheW91dC10aW1lbGluZS1yZWNvcmQtbGF5b3V0IiwKLSAgICBQYWludDogImxheW91dC10
aW1lbGluZS1yZWNvcmQtcGFpbnQiCi19OwotCi1XZWJJbnNwZWN0b3IuTGF5b3V0VGltZWxpbmVS
ZWNvcmQuZGlzcGxheU5hbWVGb3JFdmVudFR5cGUgPSBmdW5jdGlvbihldmVudFR5cGUpCi17Ci0g
ICAgc3dpdGNoKGV2ZW50VHlwZSkgewotICAgIGNhc2UgV2ViSW5zcGVjdG9yLkxheW91dFRpbWVs
aW5lUmVjb3JkLkV2ZW50VHlwZS5JbnZhbGlkYXRlU3R5bGVzOgotICAgICAgICByZXR1cm4gV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJTdHlsZXMgSW52YWxpZGF0ZWQiKTsKLSAgICBjYXNlIFdlYklu
c3BlY3Rvci5MYXlvdXRUaW1lbGluZVJlY29yZC5FdmVudFR5cGUuUmVjYWxjdWxhdGVTdHlsZXM6
Ci0gICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0eWxlcyBSZWNhbGN1bGF0
ZWQiKTsKLSAgICBjYXNlIFdlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZVJlY29yZC5FdmVudFR5
cGUuSW52YWxpZGF0ZUxheW91dDoKLSAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiTGF5b3V0IEludmFsaWRhdGVkIik7Ci0gICAgY2FzZSBXZWJJbnNwZWN0b3IuTGF5b3V0VGlt
ZWxpbmVSZWNvcmQuRXZlbnRUeXBlLkZvcmNlZExheW91dDoKLSAgICAgICAgcmV0dXJuIFdlYklu
c3BlY3Rvci5VSVN0cmluZygiRm9yY2VkIExheW91dCIpOwotICAgIGNhc2UgV2ViSW5zcGVjdG9y
LkxheW91dFRpbWVsaW5lUmVjb3JkLkV2ZW50VHlwZS5MYXlvdXQ6Ci0gICAgICAgIHJldHVybiBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkxheW91dCIpOwotICAgIGNhc2UgV2ViSW5zcGVjdG9yLkxh
eW91dFRpbWVsaW5lUmVjb3JkLkV2ZW50VHlwZS5QYWludDoKLSAgICAgICAgcmV0dXJuIFdlYklu
c3BlY3Rvci5VSVN0cmluZygiUGFpbnQiKTsKKyAgICAgICAgdGhpcy5fZXZlbnRUeXBlID0gZXZl
bnRUeXBlOworICAgICAgICB0aGlzLl94ID0gdHlwZW9mIHggPT09ICJudW1iZXIiID8geCA6IE5h
TjsKKyAgICAgICAgdGhpcy5feSA9IHR5cGVvZiB5ID09PSAibnVtYmVyIiA/IHkgOiBOYU47Cisg
ICAgICAgIHRoaXMuX3dpZHRoID0gdHlwZW9mIHdpZHRoID09PSAibnVtYmVyIiA/IHdpZHRoIDog
TmFOOworICAgICAgICB0aGlzLl9oZWlnaHQgPSB0eXBlb2YgaGVpZ2h0ID09PSAibnVtYmVyIiA/
IGhlaWdodCA6IE5hTjsKKyAgICAgICAgdGhpcy5fcXVhZCA9IHF1YWQgaW5zdGFuY2VvZiBXZWJJ
bnNwZWN0b3IuUXVhZCA/IHF1YWQgOiBudWxsOwogICAgIH0KLX07CiAKLVdlYkluc3BlY3Rvci5M
YXlvdXRUaW1lbGluZVJlY29yZC5UeXBlSWRlbnRpZmllciA9ICJsYXlvdXQtdGltZWxpbmUtcmVj
b3JkIjsKLVdlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZVJlY29yZC5FdmVudFR5cGVDb29raWVL
ZXkgPSAibGF5b3V0LXRpbWVsaW5lLXJlY29yZC1ldmVudC10eXBlIjsKKyAgICAvLyBTdGF0aWMK
IAotV2ViSW5zcGVjdG9yLkxheW91dFRpbWVsaW5lUmVjb3JkLnByb3RvdHlwZSA9IHsKLSAgICBj
b25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkxheW91dFRpbWVsaW5lUmVjb3JkLAorICAgIHN0YXRp
YyBkaXNwbGF5TmFtZUZvckV2ZW50VHlwZShldmVudFR5cGUpCisgICAgeworICAgICAgICBzd2l0
Y2goZXZlbnRUeXBlKSB7CisgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLkxheW91dFRpbWVsaW5l
UmVjb3JkLkV2ZW50VHlwZS5JbnZhbGlkYXRlU3R5bGVzOgorICAgICAgICAgICAgcmV0dXJuIFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiU3R5bGVzIEludmFsaWRhdGVkIik7CisgICAgICAgIGNhc2Ug
V2ViSW5zcGVjdG9yLkxheW91dFRpbWVsaW5lUmVjb3JkLkV2ZW50VHlwZS5SZWNhbGN1bGF0ZVN0
eWxlczoKKyAgICAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0eWxlcyBS
ZWNhbGN1bGF0ZWQiKTsKKyAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuTGF5b3V0VGltZWxpbmVS
ZWNvcmQuRXZlbnRUeXBlLkludmFsaWRhdGVMYXlvdXQ6CisgICAgICAgICAgICByZXR1cm4gV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJMYXlvdXQgSW52YWxpZGF0ZWQiKTsKKyAgICAgICAgY2FzZSBX
ZWJJbnNwZWN0b3IuTGF5b3V0VGltZWxpbmVSZWNvcmQuRXZlbnRUeXBlLkZvcmNlZExheW91dDoK
KyAgICAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZvcmNlZCBMYXlvdXQi
KTsKKyAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuTGF5b3V0VGltZWxpbmVSZWNvcmQuRXZlbnRU
eXBlLkxheW91dDoKKyAgICAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkxh
eW91dCIpOworICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZVJlY29yZC5F
dmVudFR5cGUuUGFpbnQ6CisgICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJQYWludCIpOworICAgICAgICB9CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQg
ZXZlbnRUeXBlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9ldmVudFR5cGU7Ci0gICAg
fSwKKyAgICB9CiAKICAgICBnZXQgeCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5feDsK
LSAgICB9LAorICAgIH0KIAogICAgIGdldCB5KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlz
Ll95OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHdpZHRoKCkKICAgICB7CiAgICAgICAgIHJl
dHVybiB0aGlzLl93aWR0aDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBoZWlnaHQoKQogICAg
IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2hlaWdodDsKLSAgICB9LAorICAgIH0KIAogICAgIGdl
dCBhcmVhKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl93aWR0aCAqIHRoaXMuX2hlaWdo
dDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCByZWN0KCkKICAgICB7CiAgICAgICAgIGlmICgh
aXNOYU4odGhpcy5feCkgJiYgIWlzTmFOKHRoaXMuX3kpKQogICAgICAgICAgICAgcmV0dXJuIG5l
dyBXZWJJbnNwZWN0b3IuUmVjdCh0aGlzLl94LCB0aGlzLl95LCB0aGlzLl93aWR0aCwgdGhpcy5f
aGVpZ2h0KTsKICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQg
cXVhZCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcXVhZDsKLSAgICB9LAorICAgIH0K
IAotICAgIHNhdmVJZGVudGl0eVRvQ29va2llOiBmdW5jdGlvbihjb29raWUpCisgICAgc2F2ZUlk
ZW50aXR5VG9Db29raWUoY29va2llKQogICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLlRpbWVs
aW5lUmVjb3JkLnByb3RvdHlwZS5zYXZlSWRlbnRpdHlUb0Nvb2tpZS5jYWxsKHRoaXMsIGNvb2tp
ZSk7CisgICAgICAgIHN1cGVyLnNhdmVJZGVudGl0eVRvQ29va2llKGNvb2tpZSk7CiAKICAgICAg
ICAgY29va2llW1dlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZVJlY29yZC5FdmVudFR5cGVDb29r
aWVLZXldID0gdGhpcy5fZXZlbnRUeXBlOwogICAgIH0KIH07CiAKLVdlYkluc3BlY3Rvci5MYXlv
dXRUaW1lbGluZVJlY29yZC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlRpbWVs
aW5lUmVjb3JkLnByb3RvdHlwZTsKK1dlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZVJlY29yZC5F
dmVudFR5cGUgPSB7CisgICAgSW52YWxpZGF0ZVN0eWxlczogImxheW91dC10aW1lbGluZS1yZWNv
cmQtaW52YWxpZGF0ZS1zdHlsZXMiLAorICAgIFJlY2FsY3VsYXRlU3R5bGVzOiAibGF5b3V0LXRp
bWVsaW5lLXJlY29yZC1yZWNhbGN1bGF0ZS1zdHlsZXMiLAorICAgIEludmFsaWRhdGVMYXlvdXQ6
ICJsYXlvdXQtdGltZWxpbmUtcmVjb3JkLWludmFsaWRhdGUtbGF5b3V0IiwKKyAgICBGb3JjZWRM
YXlvdXQ6ICJsYXlvdXQtdGltZWxpbmUtcmVjb3JkLWZvcmNlZC1sYXlvdXQiLAorICAgIExheW91
dDogImxheW91dC10aW1lbGluZS1yZWNvcmQtbGF5b3V0IiwKKyAgICBQYWludDogImxheW91dC10
aW1lbGluZS1yZWNvcmQtcGFpbnQiCit9OworCitXZWJJbnNwZWN0b3IuTGF5b3V0VGltZWxpbmVS
ZWNvcmQuVHlwZUlkZW50aWZpZXIgPSAibGF5b3V0LXRpbWVsaW5lLXJlY29yZCI7CitXZWJJbnNw
ZWN0b3IuTGF5b3V0VGltZWxpbmVSZWNvcmQuRXZlbnRUeXBlQ29va2llS2V5ID0gImxheW91dC10
aW1lbGluZS1yZWNvcmQtZXZlbnQtdHlwZSI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvTGF6eVNvdXJjZUNvZGVMb2NhdGlvbi5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9MYXp5U291cmNlQ29kZUxv
Y2F0aW9uLmpzCmluZGV4IDQ4Y2QxZmMuLjZmMWE5MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9MYXp5U291cmNlQ29kZUxvY2F0aW9uLmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9MYXp5U291
cmNlQ29kZUxvY2F0aW9uLmpzCkBAIC0zMCw4MCArMzAsNzkgQEAKIC8vICAtIGZvcm1hdHRlZCBp
bmZvcm1hdGlvbiBkb2VzIHJlcXVpcmUgaW5pdGlhbGl6YXRpb24sIGRvbmUgYnkgb3ZlcnJpZGlu
ZyBwdWJsaWMgQVBJcy4KIC8vICAtIGRpc3BsYXkgaW5mb3JtYXRpb24gZG9lcyByZXF1aXJlIGlu
aXRpYWxpemF0aW9uLCBkb25lIGJ5IG92ZXJyaWRpbmcgcHJpdmF0ZSBmdW5uZWwgQVBJIHJlc29s
dmVNYXBwZWRMb2NhdGlvbi4KIAotV2ViSW5zcGVjdG9yLkxhenlTb3VyY2VDb2RlTG9jYXRpb24g
PSBmdW5jdGlvbihzb3VyY2VDb2RlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCitXZWJJbnNw
ZWN0b3IuTGF6eVNvdXJjZUNvZGVMb2NhdGlvbiA9IGNsYXNzIExhenlTb3VyY2VDb2RlTG9jYXRp
b24gZXh0ZW5kcyBXZWJJbnNwZWN0b3IuU291cmNlQ29kZUxvY2F0aW9uCiB7Ci0gICAgV2ViSW5z
cGVjdG9yLlNvdXJjZUNvZGVMb2NhdGlvbi5jYWxsKHRoaXMsIG51bGwsIGxpbmVOdW1iZXIsIGNv
bHVtbk51bWJlcik7CisgICAgY29uc3RydWN0b3Ioc291cmNlQ29kZSwgbGluZU51bWJlciwgY29s
dW1uTnVtYmVyKQorICAgIHsKKyAgICAgICAgc3VwZXIobnVsbCwgbGluZU51bWJlciwgY29sdW1u
TnVtYmVyKTsKIAotICAgIGNvbnNvbGUuYXNzZXJ0KHNvdXJjZUNvZGUpOworICAgICAgICBjb25z
b2xlLmFzc2VydChzb3VyY2VDb2RlKTsKIAotICAgIHRoaXMuX2luaXRpYWxpemVkID0gZmFsc2U7
Ci0gICAgdGhpcy5fbGF6eVNvdXJjZUNvZGUgPSBzb3VyY2VDb2RlOwotfTsKLQotV2ViSW5zcGVj
dG9yLkxhenlTb3VyY2VDb2RlTG9jYXRpb24ucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9y
OiBXZWJJbnNwZWN0b3IuTGF6eVNvdXJjZUNvZGVMb2NhdGlvbiwKKyAgICAgICAgdGhpcy5faW5p
dGlhbGl6ZWQgPSBmYWxzZTsKKyAgICAgICAgdGhpcy5fbGF6eVNvdXJjZUNvZGUgPSBzb3VyY2VD
b2RlOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCi0gICAgaXNFcXVhbDogZnVuY3Rpb24ob3Ro
ZXIpCisgICAgaXNFcXVhbChvdGhlcikKICAgICB7CiAgICAgICAgIGlmICghb3RoZXIpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJldHVybiB0aGlzLl9sYXp5U291cmNlQ29k
ZSA9PT0gb3RoZXIuX3NvdXJjZUNvZGUgJiYgdGhpcy5fbGluZU51bWJlciA9PT0gb3RoZXIuX2xp
bmVOdW1iZXIgJiYgdGhpcy5fY29sdW1uTnVtYmVyID09PSBvdGhlci5fY29sdW1uTnVtYmVyOwot
ICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHNvdXJjZUNvZGUoKQogICAgIHsKICAgICAgICAgcmV0
dXJuIHRoaXMuX2xhenlTb3VyY2VDb2RlOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IHNvdXJj
ZUNvZGUoc291cmNlQ29kZSkKICAgICB7CiAgICAgICAgIC8vIEdldHRlciBhbmQgc2V0dGVyIG11
c3QgYmUgcHJvdmlkZWQgdG9nZXRoZXIuCiAgICAgICAgIHRoaXMuc2V0U291cmNlQ29kZShzb3Vy
Y2VDb2RlKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBmb3JtYXR0ZWRMaW5lTnVtYmVyKCkK
ICAgICB7CiAgICAgICAgIHRoaXMuX2xhenlJbml0aWFsaXphdGlvbigpOwogICAgICAgICByZXR1
cm4gdGhpcy5fZm9ybWF0dGVkTGluZU51bWJlcjsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBm
b3JtYXR0ZWRDb2x1bW5OdW1iZXIoKQogICAgIHsKICAgICAgICAgdGhpcy5fbGF6eUluaXRpYWxp
emF0aW9uKCk7CiAgICAgICAgIHJldHVybiB0aGlzLl9mb3JtYXR0ZWRDb2x1bW5OdW1iZXI7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBmb3JtYXR0ZWRQb3NpdGlvbjogZnVuY3Rpb24oKQorICAgIGZv
cm1hdHRlZFBvc2l0aW9uKCkKICAgICB7CiAgICAgICAgIHRoaXMuX2xhenlJbml0aWFsaXphdGlv
bigpOwogICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlUG9zaXRpb24o
dGhpcy5fZm9ybWF0dGVkTGluZU51bWJlciwgdGhpcy5fZm9ybWF0dGVkQ29sdW1uTnVtYmVyKTsK
LSAgICB9LAorICAgIH0KIAotICAgIGhhc0Zvcm1hdHRlZExvY2F0aW9uOiBmdW5jdGlvbigpCisg
ICAgaGFzRm9ybWF0dGVkTG9jYXRpb24oKQogICAgIHsKICAgICAgICAgdGhpcy5fbGF6eUluaXRp
YWxpemF0aW9uKCk7Ci0gICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuU291cmNlQ29kZUxvY2F0
aW9uLnByb3RvdHlwZS5oYXNGb3JtYXR0ZWRMb2NhdGlvbi5jYWxsKHRoaXMpOwotICAgIH0sCisg
ICAgICAgIHJldHVybiBzdXBlci5oYXNGb3JtYXR0ZWRMb2NhdGlvbigpOworICAgIH0KIAotICAg
IGhhc0RpZmZlcmVudERpc3BsYXlMb2NhdGlvbjogZnVuY3Rpb24oKQorICAgIGhhc0RpZmZlcmVu
dERpc3BsYXlMb2NhdGlvbigpCiAgICAgewogICAgICAgICB0aGlzLl9sYXp5SW5pdGlhbGl6YXRp
b24oKTsKLSAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlTG9jYXRpb24ucHJv
dG90eXBlLmhhc0RpZmZlcmVudERpc3BsYXlMb2NhdGlvbi5jYWxsKHRoaXMpOwotICAgIH0sCisg
ICAgICAgIHJldHVybiBzdXBlci5oYXNEaWZmZXJlbnREaXNwbGF5TG9jYXRpb24oKTsKKyAgICB9
CiAKICAgICAvLyBQcm90ZWN0ZWQKIAotICAgIHJlc29sdmVNYXBwZWRMb2NhdGlvbjogZnVuY3Rp
b24oKQorICAgIHJlc29sdmVNYXBwZWRMb2NhdGlvbigpCiAgICAgewogICAgICAgICB0aGlzLl9s
YXp5SW5pdGlhbGl6YXRpb24oKTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVMb2Nh
dGlvbi5wcm90b3R5cGUucmVzb2x2ZU1hcHBlZExvY2F0aW9uLmNhbGwodGhpcyk7Ci0gICAgfSwK
KyAgICAgICAgc3VwZXIucmVzb2x2ZU1hcHBlZExvY2F0aW9uKCk7CisgICAgfQogCiAgICAgLy8g
UHJpdmF0ZQogCi0gICAgX2xhenlJbml0aWFsaXphdGlvbjogZnVuY3Rpb24oKQorICAgIF9sYXp5
SW5pdGlhbGl6YXRpb24oKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9pbml0aWFsaXplZCkg
ewogICAgICAgICAgICAgdGhpcy5faW5pdGlhbGl6ZWQgPSB0cnVlOwpAQCAtMTExLDUgKzExMCwz
IEBAIFdlYkluc3BlY3Rvci5MYXp5U291cmNlQ29kZUxvY2F0aW9uLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgfQogICAgIH0KIH07Ci0KLVdlYkluc3BlY3Rvci5MYXp5U291cmNlQ29kZUxvY2F0aW9u
LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuU291cmNlQ29kZUxvY2F0aW9uLnBy
b3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L01vZGVscy9MaW5lV2lkZ2V0LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvTW9kZWxzL0xpbmVXaWRnZXQuanMKaW5kZXggOGFmZGQ0MC4uMDZmZmExYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0xpbmVXaWRnZXQu
anMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0xpbmVX
aWRnZXQuanMKQEAgLTIzLDM2ICsyMywzNCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5MaW5lV2lkZ2V0ID0gZnVuY3Rpb24oY29kZU1p
cnJvckxpbmVXaWRnZXQsIHdpZGdldEVsZW1lbnQpCitXZWJJbnNwZWN0b3IuTGluZVdpZGdldCA9
IGNsYXNzIExpbmVXaWRnZXQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0gICAgV2Vi
SW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIGNvbnN0cnVjdG9yKGNvZGVNaXJyb3JM
aW5lV2lkZ2V0LCB3aWRnZXRFbGVtZW50KQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKIAotICAg
IGNvbnNvbGUuYXNzZXJ0KHdpZGdldEVsZW1lbnQgaW5zdGFuY2VvZiBFbGVtZW50KTsKKyAgICAg
ICAgY29uc29sZS5hc3NlcnQod2lkZ2V0RWxlbWVudCBpbnN0YW5jZW9mIEVsZW1lbnQpOwogCi0g
ICAgdGhpcy5fY29kZU1pcnJvckxpbmVXaWRnZXQgPSBjb2RlTWlycm9yTGluZVdpZGdldDsKLSAg
ICB0aGlzLl93aWRnZXRFbGVtZW50ID0gd2lkZ2V0RWxlbWVudDsKLX07Ci0KLVdlYkluc3BlY3Rv
ci5MaW5lV2lkZ2V0LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9y
LkxpbmVXaWRnZXQsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlw
ZSwKKyAgICAgICAgdGhpcy5fY29kZU1pcnJvckxpbmVXaWRnZXQgPSBjb2RlTWlycm9yTGluZVdp
ZGdldDsKKyAgICAgICAgdGhpcy5fd2lkZ2V0RWxlbWVudCA9IHdpZGdldEVsZW1lbnQ7CisgICAg
fQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgY29kZU1pcnJvckxpbmVXaWRnZXQoKQogICAg
IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2NvZGVNaXJyb3JMaW5lV2lkZ2V0OwotICAgIH0sCisg
ICAgfQogCiAgICAgZ2V0IHdpZGdldEVsZW1lbnQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRo
aXMuX3dpZGdldEVsZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBjbGVhcigpCiAgICAgewog
ICAgICAgICB0aGlzLl9jb2RlTWlycm9yTGluZVdpZGdldC5jbGVhcigpOwotICAgIH0sCisgICAg
fQogCiAgICAgdXBkYXRlKCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Nb2RlbHMvTG9nT2JqZWN0LmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0xvZ09iamVjdC5qcwppbmRleCAzNTUxNjk2Li5iOTU1
MTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2Rl
bHMvTG9nT2JqZWN0LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L01vZGVscy9Mb2dPYmplY3QuanMKQEAgLTIzLDE1ICsyMywxNCBAQAogICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5Mb2dPYmplY3QgPSBmdW5j
dGlvbigpCitXZWJJbnNwZWN0b3IuTG9nT2JqZWN0ID0gY2xhc3MgTG9nT2JqZWN0IGV4dGVuZHMg
V2ViSW5zcGVjdG9yLk9iamVjdAogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlz
KTsKKyAgICBjb25zdHJ1Y3RvcigpCisgICAgeworICAgICAgICBzdXBlcigpOwogCi0gICAgdGhp
cy5fc3RhcnREYXRlID0gbmV3IERhdGUoKTsKLX07Ci0KLVdlYkluc3BlY3Rvci5Mb2dPYmplY3Qu
cHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuTG9nT2JqZWN0LAor
ICAgICAgICB0aGlzLl9zdGFydERhdGUgPSBuZXcgRGF0ZTsKKyAgICB9CiAKICAgICAvLyBQdWJs
aWMKIApAQCAtNDAsNSArMzksMyBAQCBXZWJJbnNwZWN0b3IuTG9nT2JqZWN0LnByb3RvdHlwZSA9
IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXJ0RGF0ZTsKICAgICB9CiB9OwotCi1XZWJJbnNw
ZWN0b3IuTG9nT2JqZWN0LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0
LnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01vZGVscy9OZXR3b3JrVGltZWxpbmUuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Nb2RlbHMvTmV0d29ya1RpbWVsaW5lLmpzCmluZGV4IDc1ZDRkOWYuLmQzMDY5
YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVs
cy9OZXR3b3JrVGltZWxpbmUuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvTW9kZWxzL05ldHdvcmtUaW1lbGluZS5qcwpAQCAtMjMsMzIgKzIzLDMxIEBACiAgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLk5ldHdv
cmtUaW1lbGluZSA9IGZ1bmN0aW9uKHR5cGUpCitXZWJJbnNwZWN0b3IuTmV0d29ya1RpbWVsaW5l
ID0gY2xhc3MgTmV0d29ya1RpbWVsaW5lIGV4dGVuZHMgV2ViSW5zcGVjdG9yLlRpbWVsaW5lCiB7
Ci0gICAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lLmNhbGwodGhpcywgdHlwZSk7Ci19OwotCi1XZWJJ
bnNwZWN0b3IuTmV0d29ya1RpbWVsaW5lLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3Rvcjog
V2ViSW5zcGVjdG9yLk5ldHdvcmtUaW1lbGluZSwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rv
ci5UaW1lbGluZS5wcm90b3R5cGUsCisgICAgY29uc3RydWN0b3IodHlwZSkKKyAgICB7CisgICAg
ICAgIC8vIEZJWE1FOiBSZW1vdmUgb25jZSA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTQyODYyPiBp
cyBmaXhlZC4KKyAgICAgICAgc3VwZXIodHlwZSk7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAK
LSAgICByZWNvcmRGb3JSZXNvdXJjZTogZnVuY3Rpb24ocmVzb3VyY2UpCisgICAgcmVjb3JkRm9y
UmVzb3VyY2UocmVzb3VyY2UpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChyZXNvdXJj
ZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZXNvdXJjZSk7CiAKICAgICAgICAgcmV0dXJuIHRo
aXMuX3Jlc291cmNlUmVjb3JkTWFwLmdldChyZXNvdXJjZSkgfHwgbnVsbDsKLSAgICB9LAorICAg
IH0KIAotICAgIHJlc2V0OiBmdW5jdGlvbihzdXBwcmVzc0V2ZW50cykKKyAgICByZXNldChzdXBw
cmVzc0V2ZW50cykKICAgICB7CiAgICAgICAgIHRoaXMuX3Jlc291cmNlUmVjb3JkTWFwID0gbmV3
IE1hcDsKIAotICAgICAgICBXZWJJbnNwZWN0b3IuVGltZWxpbmUucHJvdG90eXBlLnJlc2V0LmNh
bGwodGhpcywgc3VwcHJlc3NFdmVudHMpOwotICAgIH0sCisgICAgICAgIHN1cGVyLnJlc2V0KHN1
cHByZXNzRXZlbnRzKTsKKyAgICB9CiAKLSAgICBhZGRSZWNvcmQ6IGZ1bmN0aW9uKHJlY29yZCkK
KyAgICBhZGRSZWNvcmQocmVjb3JkKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQocmVj
b3JkIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlc291cmNlVGltZWxpbmVSZWNvcmQpOwogCkBA
IC01OCw2ICs1Nyw2IEBAIFdlYkluc3BlY3Rvci5OZXR3b3JrVGltZWxpbmUucHJvdG90eXBlID0g
ewogCiAgICAgICAgIHRoaXMuX3Jlc291cmNlUmVjb3JkTWFwLnNldChyZWNvcmQucmVzb3VyY2Us
IHJlY29yZCk7CiAKLSAgICAgICAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lLnByb3RvdHlwZS5hZGRS
ZWNvcmQuY2FsbCh0aGlzLCByZWNvcmQpOworICAgICAgICBzdXBlci5hZGRSZWNvcmQocmVjb3Jk
KTsKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvTW9kZWxzL09iamVjdFByZXZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Nb2RlbHMvT2JqZWN0UHJldmlldy5qcwppbmRleCAyYjM2ZTVkLi44YmQ4NWE2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMv
T2JqZWN0UHJldmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Nb2RlbHMvT2JqZWN0UHJldmlldy5qcwpAQCAtMjMsOTIgKzIzLDkyIEBACiAgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLk9iamVjdFByZXZp
ZXcgPSBmdW5jdGlvbih0eXBlLCBzdWJ0eXBlLCBkZXNjcmlwdGlvbiwgbG9zc2xlc3MsIG92ZXJm
bG93LCBwcm9wZXJ0aWVzLCBlbnRyaWVzLCBzaXplKQorV2ViSW5zcGVjdG9yLk9iamVjdFByZXZp
ZXcgPSBjbGFzcyBPYmplY3RQcmV2aWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogewot
ICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICBjb25zdHJ1Y3Rvcih0eXBl
LCBzdWJ0eXBlLCBkZXNjcmlwdGlvbiwgbG9zc2xlc3MsIG92ZXJmbG93LCBwcm9wZXJ0aWVzLCBl
bnRyaWVzLCBzaXplKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKIAotICAgIGNvbnNvbGUuYXNz
ZXJ0KHR5cGUpOwotICAgIGNvbnNvbGUuYXNzZXJ0KHR5cGVvZiBsb3NzbGVzcyA9PT0gImJvb2xl
YW4iKTsKLSAgICBjb25zb2xlLmFzc2VydCghcHJvcGVydGllcyB8fCAhcHJvcGVydGllcy5sZW5n
dGggfHwgcHJvcGVydGllc1swXSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Qcm9wZXJ0eVByZXZp
ZXcpOwotICAgIGNvbnNvbGUuYXNzZXJ0KCFlbnRyaWVzIHx8ICFlbnRyaWVzLmxlbmd0aCB8fCBl
bnRyaWVzWzBdIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkNvbGxlY3Rpb25FbnRyeVByZXZpZXcp
OworICAgICAgICBjb25zb2xlLmFzc2VydCh0eXBlKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQo
dHlwZW9mIGxvc3NsZXNzID09PSAiYm9vbGVhbiIpOworICAgICAgICBjb25zb2xlLmFzc2VydCgh
cHJvcGVydGllcyB8fCAhcHJvcGVydGllcy5sZW5ndGggfHwgcHJvcGVydGllc1swXSBpbnN0YW5j
ZW9mIFdlYkluc3BlY3Rvci5Qcm9wZXJ0eVByZXZpZXcpOworICAgICAgICBjb25zb2xlLmFzc2Vy
dCghZW50cmllcyB8fCAhZW50cmllcy5sZW5ndGggfHwgZW50cmllc1swXSBpbnN0YW5jZW9mIFdl
Ykluc3BlY3Rvci5Db2xsZWN0aW9uRW50cnlQcmV2aWV3KTsKIAotICAgIHRoaXMuX3R5cGUgPSB0
eXBlOwotICAgIHRoaXMuX3N1YnR5cGUgPSBzdWJ0eXBlOwotICAgIHRoaXMuX2Rlc2NyaXB0aW9u
ID0gZGVzY3JpcHRpb24gfHwgIiI7Ci0gICAgdGhpcy5fbG9zc2xlc3MgPSBsb3NzbGVzczsKLSAg
ICB0aGlzLl9vdmVyZmxvdyA9IG92ZXJmbG93IHx8IGZhbHNlOwotICAgIHRoaXMuX3NpemUgPSBz
aXplOworICAgICAgICB0aGlzLl90eXBlID0gdHlwZTsKKyAgICAgICAgdGhpcy5fc3VidHlwZSA9
IHN1YnR5cGU7CisgICAgICAgIHRoaXMuX2Rlc2NyaXB0aW9uID0gZGVzY3JpcHRpb24gfHwgIiI7
CisgICAgICAgIHRoaXMuX2xvc3NsZXNzID0gbG9zc2xlc3M7CisgICAgICAgIHRoaXMuX292ZXJm
bG93ID0gb3ZlcmZsb3cgfHwgZmFsc2U7CisgICAgICAgIHRoaXMuX3NpemUgPSBzaXplOwogCi0g
ICAgdGhpcy5fcHJvcGVydGllcyA9IHByb3BlcnRpZXMgfHwgbnVsbDsKLSAgICB0aGlzLl9lbnRy
aWVzID0gZW50cmllcyB8fCBudWxsOwotfTsKKyAgICAgICAgdGhpcy5fcHJvcGVydGllcyA9IHBy
b3BlcnRpZXMgfHwgbnVsbDsKKyAgICAgICAgdGhpcy5fZW50cmllcyA9IGVudHJpZXMgfHwgbnVs
bDsKKyAgICB9CiAKLS8vIFJ1bnRpbWUuT2JqZWN0UHJldmlldy4KLVdlYkluc3BlY3Rvci5PYmpl
Y3RQcmV2aWV3LmZyb21QYXlsb2FkID0gZnVuY3Rpb24ocGF5bG9hZCkKLXsKLSAgICBpZiAocGF5
bG9hZC5wcm9wZXJ0aWVzKQotICAgICAgICBwYXlsb2FkLnByb3BlcnRpZXMgPSBwYXlsb2FkLnBy
b3BlcnRpZXMubWFwKGZ1bmN0aW9uKHByb3BlcnR5KSB7IHJldHVybiBXZWJJbnNwZWN0b3IuUHJv
cGVydHlQcmV2aWV3LmZyb21QYXlsb2FkKHByb3BlcnR5KTsgfSk7Ci0gICAgaWYgKHBheWxvYWQu
ZW50cmllcykKLSAgICAgICAgcGF5bG9hZC5lbnRyaWVzID0gcGF5bG9hZC5lbnRyaWVzLm1hcChm
dW5jdGlvbihlbnRyeSkgeyByZXR1cm4gV2ViSW5zcGVjdG9yLkNvbGxlY3Rpb25FbnRyeVByZXZp
ZXcuZnJvbVBheWxvYWQoZW50cnkpOyB9KTsKKyAgICAvLyBTdGF0aWMKKworICAgIC8vIFJ1bnRp
bWUuT2JqZWN0UHJldmlldy4KKyAgICBzdGF0aWMgZnJvbVBheWxvYWQocGF5bG9hZCkKKyAgICB7
CisgICAgICAgIGlmIChwYXlsb2FkLnByb3BlcnRpZXMpCisgICAgICAgICAgICBwYXlsb2FkLnBy
b3BlcnRpZXMgPSBwYXlsb2FkLnByb3BlcnRpZXMubWFwKGZ1bmN0aW9uKHByb3BlcnR5KSB7IHJl
dHVybiBXZWJJbnNwZWN0b3IuUHJvcGVydHlQcmV2aWV3LmZyb21QYXlsb2FkKHByb3BlcnR5KTsg
fSk7CisgICAgICAgIGlmIChwYXlsb2FkLmVudHJpZXMpCisgICAgICAgICAgICBwYXlsb2FkLmVu
dHJpZXMgPSBwYXlsb2FkLmVudHJpZXMubWFwKGZ1bmN0aW9uKGVudHJ5KSB7IHJldHVybiBXZWJJ
bnNwZWN0b3IuQ29sbGVjdGlvbkVudHJ5UHJldmlldy5mcm9tUGF5bG9hZChlbnRyeSk7IH0pOwog
Ci0gICAgaWYgKHBheWxvYWQuc3VidHlwZSA9PT0gImFycmF5IikgewotICAgICAgICAvLyBDT01Q
QVRJQklMSVRZIChpT1MgOCk6IFJ1bnRpbWUuT2JqZWN0UHJldmlldyBkaWQgbm90IGhhdmUgc2l6
ZSBwcm9wZXJ0eSwKLSAgICAgICAgLy8gaW5zdGVhZCBpdCB3YXMgdGFja2VkIG9udG8gdGhlIGVu
ZCBvZiB0aGUgZGVzY3JpcHRpb24sIGxpa2UgIkFycmF5WyNdIi4KLSAgICAgICAgdmFyIG1hdGNo
ID0gcGF5bG9hZC5kZXNjcmlwdGlvbi5tYXRjaCgvXFsoXGQrKVxdJC8pOwotICAgICAgICBpZiAo
bWF0Y2gpIHsKLSAgICAgICAgICAgIHBheWxvYWQuc2l6ZSA9IHBhcnNlSW50KG1hdGNoWzFdKTsK
LSAgICAgICAgICAgIHBheWxvYWQuZGVzY3JpcHRpb24gPSBwYXlsb2FkLmRlc2NyaXB0aW9uLnJl
cGxhY2UoL1xbXGQrXF0kLywgIiIpOworICAgICAgICBpZiAocGF5bG9hZC5zdWJ0eXBlID09PSAi
YXJyYXkiKSB7CisgICAgICAgICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgOCk6IFJ1bnRpbWUu
T2JqZWN0UHJldmlldyBkaWQgbm90IGhhdmUgc2l6ZSBwcm9wZXJ0eSwKKyAgICAgICAgICAgIC8v
IGluc3RlYWQgaXQgd2FzIHRhY2tlZCBvbnRvIHRoZSBlbmQgb2YgdGhlIGRlc2NyaXB0aW9uLCBs
aWtlICJBcnJheVsjXSIuCisgICAgICAgICAgICB2YXIgbWF0Y2ggPSBwYXlsb2FkLmRlc2NyaXB0
aW9uLm1hdGNoKC9cWyhcZCspXF0kLyk7CisgICAgICAgICAgICBpZiAobWF0Y2gpIHsKKyAgICAg
ICAgICAgICAgICBwYXlsb2FkLnNpemUgPSBwYXJzZUludChtYXRjaFsxXSk7CisgICAgICAgICAg
ICAgICAgcGF5bG9hZC5kZXNjcmlwdGlvbiA9IHBheWxvYWQuZGVzY3JpcHRpb24ucmVwbGFjZSgv
XFtcZCtcXSQvLCAiIik7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KKworICAgICAgICByZXR1
cm4gbmV3IFdlYkluc3BlY3Rvci5PYmplY3RQcmV2aWV3KHBheWxvYWQudHlwZSwgcGF5bG9hZC5z
dWJ0eXBlLCBwYXlsb2FkLmRlc2NyaXB0aW9uLCBwYXlsb2FkLmxvc3NsZXNzLCBwYXlsb2FkLm92
ZXJmbG93LCBwYXlsb2FkLnByb3BlcnRpZXMsIHBheWxvYWQuZW50cmllcywgcGF5bG9hZC5zaXpl
KTsKICAgICB9CiAKLSAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5PYmplY3RQcmV2aWV3KHBh
eWxvYWQudHlwZSwgcGF5bG9hZC5zdWJ0eXBlLCBwYXlsb2FkLmRlc2NyaXB0aW9uLCBwYXlsb2Fk
Lmxvc3NsZXNzLCBwYXlsb2FkLm92ZXJmbG93LCBwYXlsb2FkLnByb3BlcnRpZXMsIHBheWxvYWQu
ZW50cmllcywgcGF5bG9hZC5zaXplKTsKLX07Ci0KLVdlYkluc3BlY3Rvci5PYmplY3RQcmV2aWV3
LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLk9iamVjdFByZXZp
ZXcsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZSwKLQogICAg
IC8vIFB1YmxpYwogCiAgICAgZ2V0IHR5cGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMu
X3R5cGU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc3VidHlwZSgpCiAgICAgewogICAgICAg
ICByZXR1cm4gdGhpcy5fc3VidHlwZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBkZXNjcmlw
dGlvbigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZGVzY3JpcHRpb247Ci0gICAgfSwK
KyAgICB9CiAKICAgICBnZXQgbG9zc2xlc3MoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMu
X2xvc3NsZXNzOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IG92ZXJmbG93KCkKICAgICB7CiAg
ICAgICAgIHJldHVybiB0aGlzLl9vdmVyZmxvdzsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBw
cm9wZXJ0eVByZXZpZXdzKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9wcm9wZXJ0aWVz
OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGNvbGxlY3Rpb25FbnRyeVByZXZpZXdzKCkKICAg
ICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9lbnRyaWVzOwotICAgIH0sCisgICAgfQogCiAgICAg
Z2V0IHNpemUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3NpemU7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICBoYXNTaXplKCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUHJvYmUuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUHJvYmUuanMKaW5kZXggYjc4YjYwYS4uNDViZDVkNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1By
b2JlLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Q
cm9iZS5qcwpAQCAtMjQsNTUgKzI0LDUwIEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYklu
c3BlY3Rvci5Qcm9iZVNhbXBsZSA9IGZ1bmN0aW9uKHNhbXBsZUlkLCBiYXRjaElkLCBlbGFwc2Vk
VGltZSwgcGF5bG9hZCkKK1dlYkluc3BlY3Rvci5Qcm9iZVNhbXBsZSA9IGNsYXNzIFByb2JlU2Ft
cGxlIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogewotICAgIHRoaXMuc2FtcGxlSWQgPSBz
YW1wbGVJZDsKLSAgICB0aGlzLmJhdGNoSWQgPSBiYXRjaElkOwotICAgIHRoaXMudGltZXN0YW1w
ID0gZWxhcHNlZFRpbWU7Ci0gICAgdGhpcy5vYmplY3QgPSBXZWJJbnNwZWN0b3IuUmVtb3RlT2Jq
ZWN0LmZyb21QYXlsb2FkKHBheWxvYWQpOwotfTsKLQotV2ViSW5zcGVjdG9yLlByb2JlID0gZnVu
Y3Rpb24oaWQsIGJyZWFrcG9pbnQsIGV4cHJlc3Npb24pCi17Ci0gICAgV2ViSW5zcGVjdG9yLk9i
amVjdC5jYWxsKHRoaXMpOworICAgIGNvbnN0cnVjdG9yKHNhbXBsZUlkLCBiYXRjaElkLCBlbGFw
c2VkVGltZSwgcGF5bG9hZCkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CiAKLSAgICBjb25zb2xl
LmFzc2VydChpZCk7Ci0gICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2ludCBpbnN0YW5jZW9mIFdl
Ykluc3BlY3Rvci5CcmVha3BvaW50KTsKLQotICAgIHRoaXMuX2lkID0gaWQ7Ci0gICAgdGhpcy5f
YnJlYWtwb2ludCA9IGJyZWFrcG9pbnQ7Ci0gICAgdGhpcy5fZXhwcmVzc2lvbiA9IGV4cHJlc3Np
b247Ci0gICAgdGhpcy5fc2FtcGxlcyA9IFtdOworICAgICAgICB0aGlzLnNhbXBsZUlkID0gc2Ft
cGxlSWQ7CisgICAgICAgIHRoaXMuYmF0Y2hJZCA9IGJhdGNoSWQ7CisgICAgICAgIHRoaXMudGlt
ZXN0YW1wID0gZWxhcHNlZFRpbWU7CisgICAgICAgIHRoaXMub2JqZWN0ID0gV2ViSW5zcGVjdG9y
LlJlbW90ZU9iamVjdC5mcm9tUGF5bG9hZChwYXlsb2FkKTsKKyAgICB9CiB9OwogCi1XZWJJbnNw
ZWN0b3IuT2JqZWN0LmFkZENvbnN0cnVjdG9yRnVuY3Rpb25zKFdlYkluc3BlY3Rvci5Qcm9iZSk7
CitXZWJJbnNwZWN0b3IuUHJvYmUgPSBjbGFzcyBQcm9iZSBleHRlbmRzIFdlYkluc3BlY3Rvci5P
YmplY3QKK3sKKyAgICBjb25zdHJ1Y3RvcihpZCwgYnJlYWtwb2ludCwgZXhwcmVzc2lvbikKKyAg
ICB7CisgICAgICAgIHN1cGVyKCk7CiAKLVdlYkluc3BlY3Rvci5Qcm9iZS5FdmVudCA9IHsKLSAg
ICBFeHByZXNzaW9uQ2hhbmdlZDogInByb2JlLW9iamVjdC1leHByZXNzaW9uLWNoYW5nZWQiLAot
ICAgIFNhbXBsZUFkZGVkOiAicHJvYmUtb2JqZWN0LXNhbXBsZS1hZGRlZCIsCi0gICAgU2FtcGxl
c0NsZWFyZWQ6ICJwcm9iZS1vYmplY3Qtc2FtcGxlcy1jbGVhcmVkIgotfTsKKyAgICAgICAgY29u
c29sZS5hc3NlcnQoaWQpOworICAgICAgICBjb25zb2xlLmFzc2VydChicmVha3BvaW50IGluc3Rh
bmNlb2YgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQpOwogCi1XZWJJbnNwZWN0b3IuUHJvYmUucHJv
dG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuUHJvYmUsCi0gICAgX19w
cm90b19fOiBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZSwKKyAgICAgICAgdGhpcy5faWQg
PSBpZDsKKyAgICAgICAgdGhpcy5fYnJlYWtwb2ludCA9IGJyZWFrcG9pbnQ7CisgICAgICAgIHRo
aXMuX2V4cHJlc3Npb24gPSBleHByZXNzaW9uOworICAgICAgICB0aGlzLl9zYW1wbGVzID0gW107
CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgaWQoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHRoaXMuX2lkOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGJyZWFrcG9pbnQoKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2JyZWFrcG9pbnQ7Ci0gICAgfSwKKyAgICB9CiAK
ICAgICBnZXQgZXhwcmVzc2lvbigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZXhwcmVz
c2lvbjsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBleHByZXNzaW9uKHZhbHVlKQogICAgIHsK
QEAgLTgzLDIzICs3OCwyOSBAQCBXZWJJbnNwZWN0b3IuUHJvYmUucHJvdG90eXBlID0gewogICAg
ICAgICB0aGlzLl9leHByZXNzaW9uID0gdmFsdWU7CiAgICAgICAgIHRoaXMuY2xlYXJTYW1wbGVz
KCk7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5Q
cm9iZS5FdmVudC5FeHByZXNzaW9uQ2hhbmdlZCwgZGF0YSk7Ci0gICAgfSwKKyAgICB9CiAKICAg
ICBnZXQgc2FtcGxlcygpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc2FtcGxlcy5zbGlj
ZSgpOwotICAgIH0sCisgICAgfQogCi0gICAgY2xlYXJTYW1wbGVzOiBmdW5jdGlvbigpCisgICAg
Y2xlYXJTYW1wbGVzKCkKICAgICB7CiAgICAgICAgIHRoaXMuX3NhbXBsZXMgPSBbXTsKICAgICAg
ICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlByb2JlLkV2ZW50
LlNhbXBsZXNDbGVhcmVkKTsKLSAgICB9LAorICAgIH0KIAotICAgIGFkZFNhbXBsZTogZnVuY3Rp
b24oc2FtcGxlKQorICAgIGFkZFNhbXBsZShzYW1wbGUpCiAgICAgewogICAgICAgICBjb25zb2xl
LmFzc2VydChzYW1wbGUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUHJvYmVTYW1wbGUsICJXcm9u
ZyBvYmplY3QgdHlwZSBwYXNzZWQgYXMgcHJvYmUgc2FtcGxlOiAiLCBzYW1wbGUpOwogICAgICAg
ICB0aGlzLl9zYW1wbGVzLnB1c2goc2FtcGxlKTsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50
VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlByb2JlLkV2ZW50LlNhbXBsZUFkZGVkLCBzYW1wbGUp
OwogICAgIH0KIH07CisKK1dlYkluc3BlY3Rvci5Qcm9iZS5FdmVudCA9IHsKKyAgICBFeHByZXNz
aW9uQ2hhbmdlZDogInByb2JlLW9iamVjdC1leHByZXNzaW9uLWNoYW5nZWQiLAorICAgIFNhbXBs
ZUFkZGVkOiAicHJvYmUtb2JqZWN0LXNhbXBsZS1hZGRlZCIsCisgICAgU2FtcGxlc0NsZWFyZWQ6
ICJwcm9iZS1vYmplY3Qtc2FtcGxlcy1jbGVhcmVkIgorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Qcm9iZVNldC5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Qcm9iZVNldC5qcwppbmRleCAxZjAy
MGYxLi5iYmQwYWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Nb2RlbHMvUHJvYmVTZXQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvTW9kZWxzL1Byb2JlU2V0LmpzCkBAIC0yNiw2MCArMjYsNDggQEAKIAogLy8gQSBQ
cm9iZVNldCBjbHVzdGVycyBQcm9iZXMgZnJvbSB0aGUgc2FtZSBCcmVha3BvaW50IGFuZCB0aGVp
ciBzYW1wbGVzLgogCi1XZWJJbnNwZWN0b3IuUHJvYmVTZXQgPSBmdW5jdGlvbihicmVha3BvaW50
KQorV2ViSW5zcGVjdG9yLlByb2JlU2V0ID0gY2xhc3MgUHJvYmVTZXQgZXh0ZW5kcyBXZWJJbnNw
ZWN0b3IuT2JqZWN0CiB7Ci0gICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2ludCBpbnN0YW5jZW9m
IFdlYkluc3BlY3Rvci5CcmVha3BvaW50LCAiVW5rbm93biBicmVha3BvaW50IGFyZ3VtZW50OiAi
LCBicmVha3BvaW50KTsKKyAgICBjb25zdHJ1Y3RvcihicmVha3BvaW50KQorICAgIHsKKyAgICAg
ICAgc3VwZXIoKTsKIAotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKLSAgICB0
aGlzLl9icmVha3BvaW50ID0gYnJlYWtwb2ludDsKLSAgICB0aGlzLl9wcm9iZXMgPSBbXTsKLSAg
ICB0aGlzLl9wcm9iZXNCeUlkZW50aWZpZXIgPSBuZXcgTWFwOworICAgICAgICBjb25zb2xlLmFz
c2VydChicmVha3BvaW50IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQsICJVbmtu
b3duIGJyZWFrcG9pbnQgYXJndW1lbnQ6ICIsIGJyZWFrcG9pbnQpOwogCi0gICAgdGhpcy5fY3Jl
YXRlRGF0YVRhYmxlKCk7CisgICAgICAgIHRoaXMuX2JyZWFrcG9pbnQgPSBicmVha3BvaW50Owor
ICAgICAgICB0aGlzLl9wcm9iZXMgPSBbXTsKKyAgICAgICAgdGhpcy5fcHJvYmVzQnlJZGVudGlm
aWVyID0gbmV3IE1hcDsKIAotICAgIFdlYkluc3BlY3Rvci5GcmFtZS5hZGRFdmVudExpc3RlbmVy
KFdlYkluc3BlY3Rvci5GcmFtZS5FdmVudC5NYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMuX21h
aW5SZXNvdXJjZUNoYW5nZWQsIHRoaXMpOwotICAgIFdlYkluc3BlY3Rvci5Qcm9iZS5hZGRFdmVu
dExpc3RlbmVyKFdlYkluc3BlY3Rvci5Qcm9iZS5FdmVudC5TYW1wbGVBZGRlZCwgdGhpcy5fc2Ft
cGxlQ29sbGVjdGVkLCB0aGlzKTsKLSAgICBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5hZGRFdmVu
dExpc3RlbmVyKFdlYkluc3BlY3Rvci5CcmVha3BvaW50LkV2ZW50LlJlc29sdmVkU3RhdGVEaWRD
aGFuZ2UsIHRoaXMuX2JyZWFrcG9pbnRSZXNvbHZlZFN0YXRlRGlkQ2hhbmdlLCB0aGlzKTsKLX0K
KyAgICAgICAgdGhpcy5fY3JlYXRlRGF0YVRhYmxlKCk7CiAKLVdlYkluc3BlY3Rvci5PYmplY3Qu
YWRkQ29uc3RydWN0b3JGdW5jdGlvbnMoV2ViSW5zcGVjdG9yLlByb2JlU2V0KTsKLQotV2ViSW5z
cGVjdG9yLlByb2JlU2V0LkV2ZW50ID0gewotICAgIFByb2JlQWRkZWQ6ICJwcm9iZS1zZXQtcHJv
YmUtYWRkZWQiLAotICAgIFByb2JlUmVtb3ZlZDogInByb2JlLXNldC1wcm9iZS1yZW1vdmVkIiwK
LSAgICBSZXNvbHZlZFN0YXRlRGlkQ2hhbmdlOiAicHJvYmUtc2V0LXJlc29sdmVkLXN0YXRlLWRp
ZC1jaGFuZ2UiLAotICAgIFNhbXBsZXNDbGVhcmVkOiAicHJvYmUtc2V0LXNhbXBsZXMtY2xlYXJl
ZCIsCi19OwotCi1XZWJJbnNwZWN0b3IuUHJvYmVTZXQuU2FtcGxlT2JqZWN0VGl0bGUgPSAiT2Jq
ZWN0IjsKLQotV2ViSW5zcGVjdG9yLlByb2JlU2V0LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1
Y3RvcjogV2ViSW5zcGVjdG9yLlByb2JlU2V0LAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9y
Lk9iamVjdC5wcm90b3R5cGUsCisgICAgICAgIFdlYkluc3BlY3Rvci5GcmFtZS5hZGRFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5GcmFtZS5FdmVudC5NYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRo
aXMuX21haW5SZXNvdXJjZUNoYW5nZWQsIHRoaXMpOworICAgICAgICBXZWJJbnNwZWN0b3IuUHJv
YmUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuUHJvYmUuRXZlbnQuU2FtcGxlQWRkZWQs
IHRoaXMuX3NhbXBsZUNvbGxlY3RlZCwgdGhpcyk7CisgICAgICAgIFdlYkluc3BlY3Rvci5CcmVh
a3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQuRXZlbnQuUmVz
b2x2ZWRTdGF0ZURpZENoYW5nZSwgdGhpcy5fYnJlYWtwb2ludFJlc29sdmVkU3RhdGVEaWRDaGFu
Z2UsIHRoaXMpOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCi0gICBnZXQgYnJlYWtwb2ludCgp
Ci0gICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9icmVha3BvaW50OwotICAgfSwKKyAgICBnZXQg
YnJlYWtwb2ludCgpCisgICAgeworICAgICAgICAgcmV0dXJuIHRoaXMuX2JyZWFrcG9pbnQ7Cisg
ICAgfQogCiAgICAgZ2V0IHByb2JlcygpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcHJv
YmVzLnNsaWNlKCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgZGF0YVRhYmxlKCkKICAgICB7
CiAgICAgICAgIHJldHVybiB0aGlzLl9kYXRhVGFibGU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBj
bGVhcjogZnVuY3Rpb24oKQorICAgIGNsZWFyKCkKICAgICB7CiAgICAgICAgIHRoaXMuX2JyZWFr
cG9pbnQuY2xlYXJBY3Rpb25zKFdlYkluc3BlY3Rvci5CcmVha3BvaW50QWN0aW9uLlR5cGUuUHJv
YmUpOwotICAgIH0sCisgICAgfQogCi0gICAgY2xlYXJTYW1wbGVzOiBmdW5jdGlvbigpCisgICAg
Y2xlYXJTYW1wbGVzKCkKICAgICB7CiAgICAgICAgIGZvciAodmFyIHByb2JlIG9mIHRoaXMuX3By
b2JlcykKICAgICAgICAgICAgIHByb2JlLmNsZWFyU2FtcGxlcygpOwpAQCAtODcsMTQgKzc1LDE0
IEBAIFdlYkluc3BlY3Rvci5Qcm9iZVNldC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBvbGRU
YWJsZSA9IHRoaXMuX2RhdGFUYWJsZTsKICAgICAgICAgdGhpcy5fY3JlYXRlRGF0YVRhYmxlKCk7
CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5Qcm9i
ZVNldC5FdmVudC5TYW1wbGVzQ2xlYXJlZCwge29sZFRhYmxlfSk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBjcmVhdGVQcm9iZTogZnVuY3Rpb24oZXhwcmVzc2lvbikKKyAgICBjcmVhdGVQcm9iZShl
eHByZXNzaW9uKQogICAgIHsKICAgICAgICAgdGhpcy5icmVha3BvaW50LmNyZWF0ZUFjdGlvbihX
ZWJJbnNwZWN0b3IuQnJlYWtwb2ludEFjdGlvbi5UeXBlLlByb2JlLCBudWxsLCBleHByZXNzaW9u
KTsKLSAgICB9LAorICAgIH0KIAotICAgIGFkZFByb2JlOiBmdW5jdGlvbihwcm9iZSkKKyAgICBh
ZGRQcm9iZShwcm9iZSkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHByb2JlIGluc3Rh
bmNlb2YgV2ViSW5zcGVjdG9yLlByb2JlLCAiVHJpZWQgdG8gYWRkIG5vbi1wcm9iZSAiLCBwcm9i
ZSwgIiB0byBwcm9iZSBncm91cCIsIHRoaXMpOwogICAgICAgICBjb25zb2xlLmFzc2VydChwcm9i
ZS5icmVha3BvaW50ID09PSB0aGlzLmJyZWFrcG9pbnQsICJQcm9iZSBhbmQgUHJvYmVTZXQgbXVz
dCBoYXZlIHNhbWUgYnJlYWtwb2ludC4iLCBwcm9iZSwgdGhpcyk7CkBAIC0xMDQsOSArOTIsOSBA
QCBXZWJJbnNwZWN0b3IuUHJvYmVTZXQucHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMuZGF0
YVRhYmxlLmFkZFByb2JlKHByb2JlKTsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0
ZW5lcnMoV2ViSW5zcGVjdG9yLlByb2JlU2V0LkV2ZW50LlByb2JlQWRkZWQsIHByb2JlKTsKLSAg
ICB9LAorICAgIH0KIAotICAgIHJlbW92ZVByb2JlOiBmdW5jdGlvbihwcm9iZSkKKyAgICByZW1v
dmVQcm9iZShwcm9iZSkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHByb2JlIGluc3Rh
bmNlb2YgV2ViSW5zcGVjdG9yLlByb2JlLCAiVHJpZWQgdG8gcmVtb3ZlIG5vbi1wcm9iZSAiLCBw
cm9iZSwgIiB0byBwcm9iZSBncm91cCIsIHRoaXMpOwogICAgICAgICBjb25zb2xlLmFzc2VydCh0
aGlzLl9wcm9iZXMuaW5kZXhPZihwcm9iZSkgIT09IC0xLCAiVHJpZWQgdG8gcmVtb3ZlIHByb2Jl
IiwgcHJvYmUsICIgbm90IGluIGdyb3VwICIsIHRoaXMpOwpAQCAtMTE2LDMzICsxMDQsMzMgQEAg
V2ViSW5zcGVjdG9yLlByb2JlU2V0LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fcHJvYmVz
QnlJZGVudGlmaWVyLmRlbGV0ZShwcm9iZS5pZCk7CiAgICAgICAgIHRoaXMuZGF0YVRhYmxlLnJl
bW92ZVByb2JlKHByb2JlKTsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMo
V2ViSW5zcGVjdG9yLlByb2JlU2V0LkV2ZW50LlByb2JlUmVtb3ZlZCwgcHJvYmUpOwotICAgIH0s
CisgICAgfQogCi0gICAgd2lsbFJlbW92ZTogZnVuY3Rpb24oKQorICAgIHdpbGxSZW1vdmUoKQog
ICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuX3Byb2Jlcy5sZW5ndGgsICJQcm9i
ZVNldC53aWxsUmVtb3ZlIGNhbGxlZCwgYnV0IHByb2JlcyBzdGlsbCBhc3NvY2lhdGVkIHdpdGgg
Z3JvdXA6ICIsIHRoaXMuX3Byb2Jlcyk7CiAKICAgICAgICAgV2ViSW5zcGVjdG9yLkZyYW1lLnJl
bW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkZyYW1lLkV2ZW50Lk1haW5SZXNvdXJjZURp
ZENoYW5nZSwgdGhpcy5fbWFpblJlc291cmNlQ2hhbmdlZCwgdGhpcyk7CiAgICAgICAgIFdlYklu
c3BlY3Rvci5Qcm9iZS5yZW1vdmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Qcm9iZS5FdmVu
dC5TYW1wbGVBZGRlZCwgdGhpcy5fc2FtcGxlQ29sbGVjdGVkLCB0aGlzKTsKICAgICAgICAgV2Vi
SW5zcGVjdG9yLkJyZWFrcG9pbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQnJl
YWtwb2ludC5FdmVudC5SZXNvbHZlZFN0YXRlRGlkQ2hhbmdlLCB0aGlzLl9icmVha3BvaW50UmVz
b2x2ZWRTdGF0ZURpZENoYW5nZSwgdGhpcyk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2
YXRlCiAKLSAgICBfbWFpblJlc291cmNlQ2hhbmdlZDogZnVuY3Rpb24oKQorICAgIF9tYWluUmVz
b3VyY2VDaGFuZ2VkKCkKICAgICB7CiAgICAgICAgIHRoaXMuZGF0YVRhYmxlLm1haW5SZXNvdXJj
ZUNoYW5nZWQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9jcmVhdGVEYXRhVGFibGU6IGZ1bmN0
aW9uKCkKKyAgICBfY3JlYXRlRGF0YVRhYmxlKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLmRh
dGFUYWJsZSkKICAgICAgICAgICAgIHRoaXMuZGF0YVRhYmxlLndpbGxSZW1vdmUoKTsKIAogICAg
ICAgICB0aGlzLl9kYXRhVGFibGUgPSBuZXcgV2ViSW5zcGVjdG9yLlByb2JlU2V0RGF0YVRhYmxl
KHRoaXMpOwotICAgIH0sCisgICAgfQogCi0gICAgX3NhbXBsZUNvbGxlY3RlZDogZnVuY3Rpb24o
ZXZlbnQpCisgICAgX3NhbXBsZUNvbGxlY3RlZChldmVudCkKICAgICB7CiAgICAgICAgIHZhciBz
YW1wbGUgPSBldmVudC5kYXRhOwogICAgICAgICBjb25zb2xlLmFzc2VydChzYW1wbGUgaW5zdGFu
Y2VvZiBXZWJJbnNwZWN0b3IuUHJvYmVTYW1wbGUsICJUcmllZCB0byBhZGQgbm9uLXNhbXBsZSB0
byBwcm9iZSBncm91cDogIiwgc2FtcGxlKTsKQEAgLTE1MywxMCArMTQxLDE3IEBAIFdlYkluc3Bl
Y3Rvci5Qcm9iZVNldC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgY29uc29sZS5hc3NlcnQodGhp
cy5kYXRhVGFibGUpOwogICAgICAgICB0aGlzLmRhdGFUYWJsZS5hZGRTYW1wbGVGb3JQcm9iZShw
cm9iZSwgc2FtcGxlKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9icmVha3BvaW50UmVzb2x2ZWRT
dGF0ZURpZENoYW5nZTogZnVuY3Rpb24oZXZlbnQpCisgICAgX2JyZWFrcG9pbnRSZXNvbHZlZFN0
YXRlRGlkQ2hhbmdlKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9M
aXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlByb2JlU2V0LkV2ZW50LlJlc29sdmVkU3RhdGVEaWRDaGFu
Z2UpOwogICAgIH0KIH07CisKK1dlYkluc3BlY3Rvci5Qcm9iZVNldC5FdmVudCA9IHsKKyAgICBQ
cm9iZUFkZGVkOiAicHJvYmUtc2V0LXByb2JlLWFkZGVkIiwKKyAgICBQcm9iZVJlbW92ZWQ6ICJw
cm9iZS1zZXQtcHJvYmUtcmVtb3ZlZCIsCisgICAgUmVzb2x2ZWRTdGF0ZURpZENoYW5nZTogInBy
b2JlLXNldC1yZXNvbHZlZC1zdGF0ZS1kaWQtY2hhbmdlIiwKKyAgICBTYW1wbGVzQ2xlYXJlZDog
InByb2JlLXNldC1zYW1wbGVzLWNsZWFyZWQiLAorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Qcm9iZVNldERhdGFGcmFtZS5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Qcm9iZVNldERhdGFGcmFt
ZS5qcwppbmRleCA5ZTExNmQyLi4zNWMxM2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUHJvYmVTZXREYXRhRnJhbWUuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Byb2JlU2V0RGF0YUZyYW1l
LmpzCkBAIC0yNCw3NCArMjQsNzggQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVj
dG9yLlByb2JlU2V0RGF0YUZyYW1lID0gZnVuY3Rpb24oaW5kZXgpCitXZWJJbnNwZWN0b3IuUHJv
YmVTZXREYXRhRnJhbWUgPSBjbGFzcyBQcm9iZVNldERhdGFGcmFtZSBleHRlbmRzIFdlYkluc3Bl
Y3Rvci5PYmplY3QKIHsKLSAgICB0aGlzLl9jb3VudCA9IDA7Ci0gICAgdGhpcy5faW5kZXggPSBp
bmRleDsKLSAgICB0aGlzLl9zZXBhcmF0b3IgPSBmYWxzZTsKLX07CisgICAgY29uc3RydWN0b3Io
aW5kZXgpCisgICAgeworICAgICAgICBzdXBlcigpOwogCi1XZWJJbnNwZWN0b3IuUHJvYmVTZXRE
YXRhRnJhbWUuY29tcGFyZSA9IGZ1bmN0aW9uKGEsIGIpIHsKLSAgICBjb25zb2xlLmFzc2VydChh
IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlByb2JlU2V0RGF0YUZyYW1lLCBhKTsKLSAgICBjb25z
b2xlLmFzc2VydChiIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlByb2JlU2V0RGF0YUZyYW1lLCBi
KTsKKyAgICAgICAgdGhpcy5fY291bnQgPSAwOworICAgICAgICB0aGlzLl9pbmRleCA9IGluZGV4
OworICAgICAgICB0aGlzLl9zZXBhcmF0b3IgPSBmYWxzZTsKKyAgICB9CiAKLSAgICByZXR1cm4g
YS5pbmRleCAtIGIuaW5kZXg7Ci19CisgICAgLy8gU3RhdGljCiAKLVdlYkluc3BlY3Rvci5Qcm9i
ZVNldERhdGFGcmFtZS5NaXNzaW5nVmFsdWUgPSAiPyI7CisgICAgc3RhdGljIGNvbXBhcmUoYSwg
YikKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGEgaW5zdGFuY2VvZiBXZWJJbnNwZWN0
b3IuUHJvYmVTZXREYXRhRnJhbWUsIGEpOworICAgICAgICBjb25zb2xlLmFzc2VydChiIGluc3Rh
bmNlb2YgV2ViSW5zcGVjdG9yLlByb2JlU2V0RGF0YUZyYW1lLCBiKTsKIAotV2ViSW5zcGVjdG9y
LlByb2JlU2V0RGF0YUZyYW1lLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5z
cGVjdG9yLlByb2JlU2V0RGF0YUZyYW1lLAorICAgICAgICByZXR1cm4gYS5pbmRleCAtIGIuaW5k
ZXg7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQga2V5KCkKICAgICB7CiAgICAg
ICAgIHJldHVybiBTdHJpbmcodGhpcy5faW5kZXgpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0
IGNvdW50KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9jb3VudDsKLSAgICB9LAorICAg
IH0KIAogICAgIGdldCBpbmRleCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5faW5kZXg7
Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgaXNTZXBhcmF0b3IoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHRoaXMuX3NlcGFyYXRvcjsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFRoZSBsYXN0
IGRhdGEgZnJhbWUgYmVmb3JlIGEgbWFpbiBmcmFtZSBuYXZpZ2F0aW9uIGlzIG1hcmtlZCBhcyBh
ICJzZXBhcmF0b3IiIGZyYW1lLgogICAgIHNldCBpc1NlcGFyYXRvcih2YWx1ZSkKICAgICB7CiAg
ICAgICAgIHRoaXMuX3NlcGFyYXRvciA9ICEhdmFsdWU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBh
ZGRTYW1wbGVGb3JQcm9iZTogZnVuY3Rpb24ocHJvYmUsIHNhbXBsZSkKKyAgICBhZGRTYW1wbGVG
b3JQcm9iZShwcm9iZSwgc2FtcGxlKQogICAgIHsKICAgICAgICAgdGhpc1twcm9iZS5pZF0gPSBz
YW1wbGU7CiAgICAgICAgIHRoaXMuX2NvdW50Kys7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBtaXNz
aW5nS2V5czogZnVuY3Rpb24ocHJvYmVTZXQpCisgICAgbWlzc2luZ0tleXMocHJvYmVTZXQpCiAg
ICAgewogICAgICAgICByZXR1cm4gcHJvYmVTZXQucHJvYmVzLmZpbHRlcihmdW5jdGlvbihwcm9i
ZSkgewogICAgICAgICAgICAgcmV0dXJuICF0aGlzLmhhc093blByb3BlcnR5KHByb2JlLmlkKTsK
ICAgICAgICAgfSwgdGhpcyk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBpc0NvbXBsZXRlOiBmdW5j
dGlvbihwcm9iZVNldCkKKyAgICBpc0NvbXBsZXRlKHByb2JlU2V0KQogICAgIHsKICAgICAgICAg
cmV0dXJuICF0aGlzLm1pc3NpbmdLZXlzKHByb2JlU2V0KS5sZW5ndGg7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBmaWxsTWlzc2luZ1ZhbHVlczogZnVuY3Rpb24ocHJvYmVTZXQpCisgICAgZmlsbE1p
c3NpbmdWYWx1ZXMocHJvYmVTZXQpCiAgICAgewogICAgICAgICBmb3IgKHZhciBrZXkgb2YgdGhp
cy5taXNzaW5nS2V5cyhwcm9iZVNldCkpCiAgICAgICAgICAgICB0aGlzW2tleV0gPSBXZWJJbnNw
ZWN0b3IuUHJvYmVTZXREYXRhRnJhbWUuTWlzc2luZ1ZhbHVlOwogICAgIH0KIH07CisKK1dlYklu
c3BlY3Rvci5Qcm9iZVNldERhdGFGcmFtZS5NaXNzaW5nVmFsdWUgPSAiPyI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUHJvYmVTZXREYXRh
VGFibGUuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUHJv
YmVTZXREYXRhVGFibGUuanMKaW5kZXggYzUzODE0My4uNGRjZWUyNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Byb2JlU2V0RGF0YVRhYmxl
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Qcm9i
ZVNldERhdGFUYWJsZS5qcwpAQCAtMjQsNTMgKzI0LDQyIEBACiAgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKLVdlYkluc3BlY3Rvci5Qcm9iZVNldERhdGFUYWJsZSA9IGZ1bmN0aW9uKHByb2JlU2V0KQor
V2ViSW5zcGVjdG9yLlByb2JlU2V0RGF0YVRhYmxlID0gY2xhc3MgUHJvYmVTZXREYXRhVGFibGUg
ZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5j
YWxsKHRoaXMpOwotCi0gICAgdGhpcy5fcHJvYmVTZXQgPSBwcm9iZVNldDsKLSAgICB0aGlzLl9m
cmFtZXMgPSBbXTsKLSAgICB0aGlzLl9wcmV2aW91c0JhdGNoSWRlbnRpZmllciA9IFdlYkluc3Bl
Y3Rvci5Qcm9iZVNldERhdGFUYWJsZS5TZW50aW5lbFZhbHVlOwotfTsKLQotV2ViSW5zcGVjdG9y
LlByb2JlU2V0RGF0YVRhYmxlLkV2ZW50ID0gewotICAgIEZyYW1lSW5zZXJ0ZWQ6ICJwcm9iZS1z
ZXQtZGF0YS10YWJsZS1mcmFtZS1pbnNlcnRlZCIsCi0gICAgU2VwYXJhdG9ySW5zZXJ0ZWQ6ICJw
cm9iZS1zZXQtZGF0YS10YWJsZS1zZXBhcmF0b3ItaW5zZXJ0ZWQiLAotICAgIFdpbGxSZW1vdmU6
ICJwcm9iZS1zZXQtZGF0YS10YWJsZS13aWxsLXJlbW92ZSIKLX07Ci0KLVdlYkluc3BlY3Rvci5Q
cm9iZVNldERhdGFUYWJsZS5TZW50aW5lbFZhbHVlID0gLTE7Ci1XZWJJbnNwZWN0b3IuUHJvYmVT
ZXREYXRhVGFibGUuVW5rbm93blZhbHVlID0gIj8iOwotCi1XZWJJbnNwZWN0b3IuUHJvYmVTZXRE
YXRhVGFibGUucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuUHJv
YmVTZXREYXRhVGFibGUsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3Rv
dHlwZSwKKyAgICBjb25zdHJ1Y3Rvcihwcm9iZVNldCkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7
CisKKyAgICAgICAgdGhpcy5fcHJvYmVTZXQgPSBwcm9iZVNldDsKKyAgICAgICAgdGhpcy5fZnJh
bWVzID0gW107CisgICAgICAgIHRoaXMuX3ByZXZpb3VzQmF0Y2hJZGVudGlmaWVyID0gV2ViSW5z
cGVjdG9yLlByb2JlU2V0RGF0YVRhYmxlLlNlbnRpbmVsVmFsdWU7CisgICAgfQogCiAgICAgLy8g
UHVibGljCiAKICAgICBnZXQgZnJhbWVzKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9m
cmFtZXMuc2xpY2UoKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzZXBhcmF0b3JzKCkKICAg
ICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9mcmFtZXMuZmlsdGVyKGZ1bmN0aW9uKGZyYW1lKSB7
IHJldHVybiBmcmFtZS5pc1NlcGFyYXRvcjsgfSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB3aWxs
UmVtb3ZlOiBmdW5jdGlvbigpCisgICAgd2lsbFJlbW92ZSgpCiAgICAgewogICAgICAgICB0aGlz
LmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuUHJvYmVTZXREYXRhVGFibGUu
RXZlbnQuV2lsbFJlbW92ZSk7CiAgICAgICAgIHRoaXMuX2ZyYW1lcyA9IFtdOwogICAgICAgICBk
ZWxldGUgdGhpcy5fcHJvYmVTZXQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBtYWluUmVzb3VyY2VD
aGFuZ2VkOiBmdW5jdGlvbigpCisgICAgbWFpblJlc291cmNlQ2hhbmdlZCgpCiAgICAgewogICAg
ICAgICB0aGlzLmFkZFNlcGFyYXRvcigpOwotICAgIH0sCisgICAgfQogCi0gICAgYWRkU2FtcGxl
Rm9yUHJvYmU6IGZ1bmN0aW9uKHByb2JlLCBzYW1wbGUpCisgICAgYWRkU2FtcGxlRm9yUHJvYmUo
cHJvYmUsIHNhbXBsZSkKICAgICB7CiAgICAgICAgIC8vIEVhZ2VybHkgc2F2ZSB0aGUgZnJhbWUg
aWYgdGhlIGJhdGNoIGlkZW50aWZpZXIgZGlmZmVycywgb3Igd2Uga25vdyB0aGUgZnJhbWUgaXMg
ZnVsbC4KICAgICAgICAgLy8gQ3JlYXRlIGEgbmV3IGZyYW1lIHdoZW4gdGhlIGJhdGNoIGlkZW50
aWZpZXIgZGlmZmVycy4KQEAgLTg5LDM1ICs3OCwzNSBAQCBXZWJJbnNwZWN0b3IuUHJvYmVTZXRE
YXRhVGFibGUucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5hZGRGcmFtZSh0aGlzLl9v
cGVuRnJhbWUpOwogICAgICAgICAgICAgdGhpcy5fb3BlbkZyYW1lID0gbnVsbDsKICAgICAgICAg
fQotICAgIH0sCisgICAgfQogCi0gICAgYWRkUHJvYmU6IGZ1bmN0aW9uKHByb2JlKQorICAgIGFk
ZFByb2JlKHByb2JlKQogICAgIHsKICAgICAgICAgZm9yICh2YXIgZnJhbWUgb2YgdGhpcy5mcmFt
ZXMpCiAgICAgICAgICAgICBpZiAoIWZyYW1lW3Byb2JlLmlkXSkKICAgICAgICAgICAgICAgICBm
cmFtZVtwcm9iZS5pZF0gPSBXZWJJbnNwZWN0b3IuUHJvYmVTZXREYXRhVGFibGUuVW5rbm93blZh
bHVlOwotICAgIH0sCisgICAgfQogCi0gICAgcmVtb3ZlUHJvYmU6IGZ1bmN0aW9uKHByb2JlKQor
ICAgIHJlbW92ZVByb2JlKHByb2JlKQogICAgIHsKICAgICAgICAgZm9yICh2YXIgZnJhbWUgb2Yg
dGhpcy5mcmFtZXMpCiAgICAgICAgICAgICBkZWxldGUgZnJhbWVbcHJvYmUuaWRdOwotICAgIH0s
CisgICAgfQogCiAgICAgLy8gUHJvdGVjdGVkIC0gY2FuIGJlIG92ZXJyaWRkZW4gYnkgc3ViY2xh
c3Nlcy4KIAotICAgIGNyZWF0ZUZyYW1lOiBmdW5jdGlvbigpCisgICAgY3JlYXRlRnJhbWUoKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuUHJvYmVTZXREYXRhRnJhbWUo
dGhpcy5fZnJhbWVzLmxlbmd0aCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBhZGRGcmFtZTogZnVu
Y3Rpb24oZnJhbWUpCisgICAgYWRkRnJhbWUoZnJhbWUpCiAgICAgewogICAgICAgICB0aGlzLl9m
cmFtZXMucHVzaChmcmFtZSk7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJz
KFdlYkluc3BlY3Rvci5Qcm9iZVNldERhdGFUYWJsZS5FdmVudC5GcmFtZUluc2VydGVkLCBmcmFt
ZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBhZGRTZXBhcmF0b3I6IGZ1bmN0aW9uKCkKKyAgICBh
ZGRTZXBhcmF0b3IoKQogICAgIHsKICAgICAgICAgLy8gU2VwYXJhdG9ycyBtdXN0IGJlIGFzc29j
aWF0ZWQgd2l0aCBhIGZyYW1lLgogICAgICAgICBpZiAoIXRoaXMuX2ZyYW1lcy5sZW5ndGgpCkBA
IC0xMzIsMyArMTIxLDEyIEBAIFdlYkluc3BlY3Rvci5Qcm9iZVNldERhdGFUYWJsZS5wcm90b3R5
cGUgPSB7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rv
ci5Qcm9iZVNldERhdGFUYWJsZS5FdmVudC5TZXBhcmF0b3JJbnNlcnRlZCwgcHJldmlvdXNGcmFt
ZSk7CiAgICAgfQogfTsKKworV2ViSW5zcGVjdG9yLlByb2JlU2V0RGF0YVRhYmxlLkV2ZW50ID0g
eworICAgIEZyYW1lSW5zZXJ0ZWQ6ICJwcm9iZS1zZXQtZGF0YS10YWJsZS1mcmFtZS1pbnNlcnRl
ZCIsCisgICAgU2VwYXJhdG9ySW5zZXJ0ZWQ6ICJwcm9iZS1zZXQtZGF0YS10YWJsZS1zZXBhcmF0
b3ItaW5zZXJ0ZWQiLAorICAgIFdpbGxSZW1vdmU6ICJwcm9iZS1zZXQtZGF0YS10YWJsZS13aWxs
LXJlbW92ZSIKK307CisKK1dlYkluc3BlY3Rvci5Qcm9iZVNldERhdGFUYWJsZS5TZW50aW5lbFZh
bHVlID0gLTE7CitXZWJJbnNwZWN0b3IuUHJvYmVTZXREYXRhVGFibGUuVW5rbm93blZhbHVlID0g
Ij8iOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9k
ZWxzL1Byb2ZpbGUuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2Rl
bHMvUHJvZmlsZS5qcwppbmRleCA3N2VkODA4Li5iOTI3Yzk5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUHJvZmlsZS5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUHJvZmlsZS5qcwpAQCAtMjMs
MjggKzIzLDI2IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAot
V2ViSW5zcGVjdG9yLlByb2ZpbGUgPSBmdW5jdGlvbih0b3BEb3duUm9vdE5vZGVzKQorV2ViSW5z
cGVjdG9yLlByb2ZpbGUgPSBjbGFzcyBQcm9maWxlIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVj
dAogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICBjb25zdHJ1Y3Rv
cih0b3BEb3duUm9vdE5vZGVzKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKIAotICAgIHRvcERv
d25Sb290Tm9kZXMgPSB0b3BEb3duUm9vdE5vZGVzIHx8IFtdOworICAgICAgICB0b3BEb3duUm9v
dE5vZGVzID0gdG9wRG93blJvb3ROb2RlcyB8fCBbXTsKIAotICAgIGNvbnNvbGUuYXNzZXJ0KHRv
cERvd25Sb290Tm9kZXMgaW5zdGFuY2VvZiBBcnJheSk7Ci0gICAgY29uc29sZS5hc3NlcnQodG9w
RG93blJvb3ROb2Rlcy5yZWR1Y2UoZnVuY3Rpb24ocHJldmlvdXNWYWx1ZSwgbm9kZSkgeyByZXR1
cm4gcHJldmlvdXNWYWx1ZSAmJiBub2RlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlByb2ZpbGVO
b2RlOyB9LCB0cnVlKSk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRvcERvd25Sb290Tm9kZXMg
aW5zdGFuY2VvZiBBcnJheSk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRvcERvd25Sb290Tm9k
ZXMucmVkdWNlKGZ1bmN0aW9uKHByZXZpb3VzVmFsdWUsIG5vZGUpIHsgcmV0dXJuIHByZXZpb3Vz
VmFsdWUgJiYgbm9kZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Qcm9maWxlTm9kZTsgfSwgdHJ1
ZSkpOwogCi0gICAgdGhpcy5fdG9wRG93blJvb3ROb2RlcyA9IHRvcERvd25Sb290Tm9kZXM7Ci19
OwotCi1XZWJJbnNwZWN0b3IuUHJvZmlsZS5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6
IFdlYkluc3BlY3Rvci5Qcm9maWxlLAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLk9iamVj
dC5wcm90b3R5cGUsCisgICAgICAgIHRoaXMuX3RvcERvd25Sb290Tm9kZXMgPSB0b3BEb3duUm9v
dE5vZGVzOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IHRvcERvd25Sb290Tm9k
ZXMoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3RvcERvd25Sb290Tm9kZXM7Ci0gICAg
fSwKKyAgICB9CiAKICAgICBnZXQgYm90dG9tVXBSb290Tm9kZXMoKQogICAgIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Qcm9maWxlTm9k
ZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Qcm9maWxl
Tm9kZS5qcwppbmRleCA4NGZkYWY2MC4uODc1MDljNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Byb2ZpbGVOb2RlLmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Qcm9maWxlTm9kZS5qcwpAQCAt
MjMsMTI3ICsyMywxMTMgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCi1XZWJJbnNwZWN0b3IuUHJvZmlsZU5vZGUgPSBmdW5jdGlvbihpZCwgdHlwZSwgZnVuY3Rp
b25OYW1lLCBzb3VyY2VDb2RlTG9jYXRpb24sIGNhbGxzLCBjaGlsZE5vZGVzKQorV2ViSW5zcGVj
dG9yLlByb2ZpbGVOb2RlID0gY2xhc3MgUHJvZmlsZU5vZGUgZXh0ZW5kcyBXZWJJbnNwZWN0b3Iu
T2JqZWN0CiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwotCi0gICAgY2hp
bGROb2RlcyA9IGNoaWxkTm9kZXMgfHwgW107Ci0KLSAgICBjb25zb2xlLmFzc2VydChpZCk7Ci0g
ICAgY29uc29sZS5hc3NlcnQoY2FsbHMgaW5zdGFuY2VvZiBBcnJheSk7Ci0gICAgY29uc29sZS5h
c3NlcnQoY2FsbHMubGVuZ3RoID49IDEpOwotICAgIGNvbnNvbGUuYXNzZXJ0KGNhbGxzLnJlZHVj
ZShmdW5jdGlvbihwcmV2aW91c1ZhbHVlLCBjYWxsKSB7IHJldHVybiBwcmV2aW91c1ZhbHVlICYm
IGNhbGwgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUHJvZmlsZU5vZGVDYWxsOyB9LCB0cnVlKSk7
Ci0gICAgY29uc29sZS5hc3NlcnQoY2hpbGROb2RlcyBpbnN0YW5jZW9mIEFycmF5KTsKLSAgICBj
b25zb2xlLmFzc2VydChjaGlsZE5vZGVzLnJlZHVjZShmdW5jdGlvbihwcmV2aW91c1ZhbHVlLCBu
b2RlKSB7IHJldHVybiBwcmV2aW91c1ZhbHVlICYmIG5vZGUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0
b3IuUHJvZmlsZU5vZGU7IH0sIHRydWUpKTsKLQotICAgIHRoaXMuX2lkID0gaWQ7Ci0gICAgdGhp
cy5fdHlwZSA9IHR5cGUgfHwgV2ViSW5zcGVjdG9yLlByb2ZpbGVOb2RlLlR5cGUuRnVuY3Rpb247
Ci0gICAgdGhpcy5fZnVuY3Rpb25OYW1lID0gZnVuY3Rpb25OYW1lIHx8IG51bGw7Ci0gICAgdGhp
cy5fc291cmNlQ29kZUxvY2F0aW9uID0gc291cmNlQ29kZUxvY2F0aW9uIHx8IG51bGw7Ci0gICAg
dGhpcy5fY2FsbHMgPSBjYWxsczsKLSAgICB0aGlzLl9jaGlsZE5vZGVzID0gY2hpbGROb2RlczsK
LSAgICB0aGlzLl9wYXJlbnROb2RlID0gbnVsbDsKLSAgICB0aGlzLl9wcmV2aW91c1NpYmxpbmcg
PSBudWxsOwotICAgIHRoaXMuX25leHRTaWJsaW5nID0gbnVsbDsKLSAgICB0aGlzLl9jb21wdXRl
ZFRvdGFsVGltZXMgPSBmYWxzZTsKLQotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fY2hp
bGROb2Rlcy5sZW5ndGg7ICsraSkKLSAgICAgICAgdGhpcy5fY2hpbGROb2Rlc1tpXS5lc3RhYmxp
c2hSZWxhdGlvbnNoaXBzKHRoaXMsIHRoaXMuX2NoaWxkTm9kZXNbaSAtIDFdLCB0aGlzLl9jaGls
ZE5vZGVzW2kgKyAxXSk7Ci0KLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX2NhbGxzLmxl
bmd0aDsgKytpKQotICAgICAgICB0aGlzLl9jYWxsc1tpXS5lc3RhYmxpc2hSZWxhdGlvbnNoaXBz
KHRoaXMsIHRoaXMuX2NhbGxzW2kgLSAxXSwgdGhpcy5fY2FsbHNbaSArIDFdKTsKLX07Ci0KLVdl
Ykluc3BlY3Rvci5Qcm9maWxlTm9kZS5UeXBlID0gewotICAgIEZ1bmN0aW9uOiAicHJvZmlsZS1u
b2RlLXR5cGUtZnVuY3Rpb24iLAotICAgIFByb2dyYW06ICJwcm9maWxlLW5vZGUtdHlwZS1wcm9n
cmFtIgotfTsKLQotV2ViSW5zcGVjdG9yLlByb2ZpbGVOb2RlLlR5cGVJZGVudGlmaWVyID0gInBy
b2ZpbGUtbm9kZSI7Ci1XZWJJbnNwZWN0b3IuUHJvZmlsZU5vZGUuVHlwZUNvb2tpZUtleSA9ICJw
cm9maWxlLW5vZGUtdHlwZSI7Ci1XZWJJbnNwZWN0b3IuUHJvZmlsZU5vZGUuRnVuY3Rpb25OYW1l
Q29va2llS2V5ID0gInByb2ZpbGUtbm9kZS1mdW5jdGlvbi1uYW1lIjsKLVdlYkluc3BlY3Rvci5Q
cm9maWxlTm9kZS5Tb3VyY2VDb2RlVVJMQ29va2llS2V5ID0gInByb2ZpbGUtbm9kZS1zb3VyY2Ut
Y29kZS11cmwiOwotV2ViSW5zcGVjdG9yLlByb2ZpbGVOb2RlLlNvdXJjZUNvZGVMb2NhdGlvbkxp
bmVDb29raWVLZXkgPSAicHJvZmlsZS1ub2RlLXNvdXJjZS1jb2RlLWxvY2F0aW9uLWxpbmUiOwot
V2ViSW5zcGVjdG9yLlByb2ZpbGVOb2RlLlNvdXJjZUNvZGVMb2NhdGlvbkNvbHVtbkNvb2tpZUtl
eSA9ICJwcm9maWxlLW5vZGUtc291cmNlLWNvZGUtbG9jYXRpb24tY29sdW1uIjsKLQotV2ViSW5z
cGVjdG9yLlByb2ZpbGVOb2RlLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5z
cGVjdG9yLlByb2ZpbGVOb2RlLAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLk9iamVjdC5w
cm90b3R5cGUsCisgICAgY29uc3RydWN0b3IoaWQsIHR5cGUsIGZ1bmN0aW9uTmFtZSwgc291cmNl
Q29kZUxvY2F0aW9uLCBjYWxscywgY2hpbGROb2RlcykKKyAgICB7CisgICAgICAgIHN1cGVyKCk7
CisKKyAgICAgICAgY2hpbGROb2RlcyA9IGNoaWxkTm9kZXMgfHwgW107CisKKyAgICAgICAgY29u
c29sZS5hc3NlcnQoaWQpOworICAgICAgICBjb25zb2xlLmFzc2VydChjYWxscyBpbnN0YW5jZW9m
IEFycmF5KTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoY2FsbHMubGVuZ3RoID49IDEpOworICAg
ICAgICBjb25zb2xlLmFzc2VydChjYWxscy5yZWR1Y2UoZnVuY3Rpb24ocHJldmlvdXNWYWx1ZSwg
Y2FsbCkgeyByZXR1cm4gcHJldmlvdXNWYWx1ZSAmJiBjYWxsIGluc3RhbmNlb2YgV2ViSW5zcGVj
dG9yLlByb2ZpbGVOb2RlQ2FsbDsgfSwgdHJ1ZSkpOworICAgICAgICBjb25zb2xlLmFzc2VydChj
aGlsZE5vZGVzIGluc3RhbmNlb2YgQXJyYXkpOworICAgICAgICBjb25zb2xlLmFzc2VydChjaGls
ZE5vZGVzLnJlZHVjZShmdW5jdGlvbihwcmV2aW91c1ZhbHVlLCBub2RlKSB7IHJldHVybiBwcmV2
aW91c1ZhbHVlICYmIG5vZGUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUHJvZmlsZU5vZGU7IH0s
IHRydWUpKTsKKworICAgICAgICB0aGlzLl9pZCA9IGlkOworICAgICAgICB0aGlzLl90eXBlID0g
dHlwZSB8fCBXZWJJbnNwZWN0b3IuUHJvZmlsZU5vZGUuVHlwZS5GdW5jdGlvbjsKKyAgICAgICAg
dGhpcy5fZnVuY3Rpb25OYW1lID0gZnVuY3Rpb25OYW1lIHx8IG51bGw7CisgICAgICAgIHRoaXMu
X3NvdXJjZUNvZGVMb2NhdGlvbiA9IHNvdXJjZUNvZGVMb2NhdGlvbiB8fCBudWxsOworICAgICAg
ICB0aGlzLl9jYWxscyA9IGNhbGxzOworICAgICAgICB0aGlzLl9jaGlsZE5vZGVzID0gY2hpbGRO
b2RlczsKKyAgICAgICAgdGhpcy5fcGFyZW50Tm9kZSA9IG51bGw7CisgICAgICAgIHRoaXMuX3By
ZXZpb3VzU2libGluZyA9IG51bGw7CisgICAgICAgIHRoaXMuX25leHRTaWJsaW5nID0gbnVsbDsK
KyAgICAgICAgdGhpcy5fY29tcHV0ZWRUb3RhbFRpbWVzID0gZmFsc2U7CisKKyAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9jaGlsZE5vZGVzLmxlbmd0aDsgKytpKQorICAgICAgICAg
ICAgdGhpcy5fY2hpbGROb2Rlc1tpXS5lc3RhYmxpc2hSZWxhdGlvbnNoaXBzKHRoaXMsIHRoaXMu
X2NoaWxkTm9kZXNbaSAtIDFdLCB0aGlzLl9jaGlsZE5vZGVzW2kgKyAxXSk7CisKKyAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9jYWxscy5sZW5ndGg7ICsraSkKKyAgICAgICAgICAg
IHRoaXMuX2NhbGxzW2ldLmVzdGFibGlzaFJlbGF0aW9uc2hpcHModGhpcywgdGhpcy5fY2FsbHNb
aSAtIDFdLCB0aGlzLl9jYWxsc1tpICsgMV0pOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAg
ICAgZ2V0IGlkKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9pZDsKLSAgICB9LAorICAg
IH0KIAogICAgIGdldCB0eXBlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl90eXBlOwot
ICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGZ1bmN0aW9uTmFtZSgpCiAgICAgewogICAgICAgICBy
ZXR1cm4gdGhpcy5fZnVuY3Rpb25OYW1lOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHNvdXJj
ZUNvZGVMb2NhdGlvbigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc291cmNlQ29kZUxv
Y2F0aW9uOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHN0YXJ0VGltZSgpCiAgICAgewogICAg
ICAgICBpZiAodGhpcy5fc3RhcnRUaW1lID09PSB1bmRlZmluZWQpCiAgICAgICAgICAgICB0aGlz
Ll9zdGFydFRpbWUgPSAgTWF0aC5tYXgoMCwgdGhpcy5fY2FsbHNbMF0uc3RhcnRUaW1lKTsKICAg
ICAgICAgcmV0dXJuIHRoaXMuX3N0YXJ0VGltZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBl
bmRUaW1lKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9lbmRUaW1lID09PSB1bmRlZmluZWQp
CiAgICAgICAgICAgICB0aGlzLl9lbmRUaW1lID0gTWF0aC5taW4odGhpcy5fY2FsbHMubGFzdFZh
bHVlLmVuZFRpbWUsIEluZmluaXR5KTsKICAgICAgICAgcmV0dXJuIHRoaXMuX2VuZFRpbWU7Ci0g
ICAgfSwKKyAgICB9CiAKICAgICBnZXQgc2VsZlRpbWUoKQogICAgIHsKICAgICAgICAgdGhpcy5f
Y29tcHV0ZVRvdGFsVGltZXNJZk5lZWRlZCgpOwogICAgICAgICByZXR1cm4gdGhpcy5fc2VsZlRp
bWU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgdG90YWxUaW1lKCkKICAgICB7CiAgICAgICAg
IHRoaXMuX2NvbXB1dGVUb3RhbFRpbWVzSWZOZWVkZWQoKTsKICAgICAgICAgcmV0dXJuIHRoaXMu
X3RvdGFsVGltZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBjYWxscygpCiAgICAgewogICAg
ICAgICByZXR1cm4gdGhpcy5fY2FsbHM7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgcHJldmlv
dXNTaWJsaW5nKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9wcmV2aW91c1NpYmxpbmc7
Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgbmV4dFNpYmxpbmcoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHRoaXMuX25leHRTaWJsaW5nOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHBhcmVu
dE5vZGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3BhcmVudE5vZGU7Ci0gICAgfSwK
KyAgICB9CiAKICAgICBnZXQgY2hpbGROb2RlcygpCiAgICAgewogICAgICAgICByZXR1cm4gdGhp
cy5fY2hpbGROb2RlczsKLSAgICB9LAorICAgIH0KIAotICAgIGNvbXB1dGVDYWxsSW5mb0ZvclRp
bWVSYW5nZTogZnVuY3Rpb24ocmFuZ2VTdGFydFRpbWUsIHJhbmdlRW5kVGltZSkKKyAgICBjb21w
dXRlQ2FsbEluZm9Gb3JUaW1lUmFuZ2UocmFuZ2VTdGFydFRpbWUsIHJhbmdlRW5kVGltZSkKICAg
ICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHR5cGVvZiByYW5nZVN0YXJ0VGltZSA9PT0gIm51
bWJlciIpOwogICAgICAgICBjb25zb2xlLmFzc2VydCh0eXBlb2YgcmFuZ2VFbmRUaW1lID09PSAi
bnVtYmVyIik7CkBAIC0xNzYsOSArMTYyLDkgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVOb2RlLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgdmFyIGF2ZXJhZ2VUaW1lID0gc2VsZlRpbWUgLyBjYWxsQ291
bnQ7CiAKICAgICAgICAgcmV0dXJuIHtzdGFydFRpbWUsIGVuZFRpbWUsIHRvdGFsVGltZSwgc2Vs
ZlRpbWUsIGNhbGxDb3VudCwgYXZlcmFnZVRpbWV9OwotICAgIH0sCisgICAgfQogCi0gICAgdHJh
dmVyc2VOZXh0UHJvZmlsZU5vZGU6IGZ1bmN0aW9uKHN0YXlXaXRoaW4pCisgICAgdHJhdmVyc2VO
ZXh0UHJvZmlsZU5vZGUoc3RheVdpdGhpbikKICAgICB7CiAgICAgICAgIHZhciBwcm9maWxlTm9k
ZSA9IHRoaXMuX2NoaWxkTm9kZXNbMF07CiAgICAgICAgIGlmIChwcm9maWxlTm9kZSkKQEAgLTE5
OSwyOSArMTg1LDI5IEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlTm9kZS5wcm90b3R5cGUgPSB7CiAg
ICAgICAgICAgICByZXR1cm4gbnVsbDsKIAogICAgICAgICByZXR1cm4gcHJvZmlsZU5vZGUubmV4
dFNpYmxpbmc7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzYXZlSWRlbnRpdHlUb0Nvb2tpZTogZnVu
Y3Rpb24oY29va2llKQorICAgIHNhdmVJZGVudGl0eVRvQ29va2llKGNvb2tpZSkKICAgICB7CiAg
ICAgICAgIGNvb2tpZVtXZWJJbnNwZWN0b3IuUHJvZmlsZU5vZGUuVHlwZUNvb2tpZUtleV0gPSB0
aGlzLl90eXBlIHx8IG51bGw7CiAgICAgICAgIGNvb2tpZVtXZWJJbnNwZWN0b3IuUHJvZmlsZU5v
ZGUuRnVuY3Rpb25OYW1lQ29va2llS2V5XSA9IHRoaXMuX2Z1bmN0aW9uTmFtZSB8fCBudWxsOwog
ICAgICAgICBjb29raWVbV2ViSW5zcGVjdG9yLlByb2ZpbGVOb2RlLlNvdXJjZUNvZGVVUkxDb29r
aWVLZXldID0gdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uID8gdGhpcy5fc291cmNlQ29kZUxvY2F0
aW9uLnNvdXJjZUNvZGUudXJsID8gdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uLnNvdXJjZUNvZGUu
dXJsLmhhc2ggOiBudWxsIDogbnVsbDsKICAgICAgICAgY29va2llW1dlYkluc3BlY3Rvci5Qcm9m
aWxlTm9kZS5Tb3VyY2VDb2RlTG9jYXRpb25MaW5lQ29va2llS2V5XSA9IHRoaXMuX3NvdXJjZUNv
ZGVMb2NhdGlvbiA/IHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbi5saW5lTnVtYmVyIDogbnVsbDsK
ICAgICAgICAgY29va2llW1dlYkluc3BlY3Rvci5Qcm9maWxlTm9kZS5Tb3VyY2VDb2RlTG9jYXRp
b25Db2x1bW5Db29raWVLZXldID0gdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uID8gdGhpcy5fc291
cmNlQ29kZUxvY2F0aW9uLmNvbHVtbk51bWJlciA6IG51bGw7Ci0gICAgfSwKKyAgICB9CiAKICAg
ICAvLyBQcm90ZWN0ZWQKIAotICAgIGVzdGFibGlzaFJlbGF0aW9uc2hpcHM6IGZ1bmN0aW9uKHBh
cmVudE5vZGUsIHByZXZpb3VzU2libGluZywgbmV4dFNpYmxpbmcpCisgICAgZXN0YWJsaXNoUmVs
YXRpb25zaGlwcyhwYXJlbnROb2RlLCBwcmV2aW91c1NpYmxpbmcsIG5leHRTaWJsaW5nKQogICAg
IHsKICAgICAgICAgdGhpcy5fcGFyZW50Tm9kZSA9IHBhcmVudE5vZGUgfHwgbnVsbDsKICAgICAg
ICAgdGhpcy5fcHJldmlvdXNTaWJsaW5nID0gcHJldmlvdXNTaWJsaW5nIHx8IG51bGw7CiAgICAg
ICAgIHRoaXMuX25leHRTaWJsaW5nID0gbmV4dFNpYmxpbmcgfHwgbnVsbDsKLSAgICB9LAorICAg
IH0KIAogICAgIC8vIFByaXZhdGUKIAotICAgIF9jb21wdXRlVG90YWxUaW1lczogZnVuY3Rpb24o
KQorICAgIF9jb21wdXRlVG90YWxUaW1lcygpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fY29t
cHV0ZWRUb3RhbFRpbWVzKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjM1LDMgKzIyMSwxNSBA
QCBXZWJJbnNwZWN0b3IuUHJvZmlsZU5vZGUucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl90
b3RhbFRpbWUgPSBpbmZvLnRvdGFsVGltZTsKICAgICB9CiB9OworCitXZWJJbnNwZWN0b3IuUHJv
ZmlsZU5vZGUuVHlwZSA9IHsKKyAgICBGdW5jdGlvbjogInByb2ZpbGUtbm9kZS10eXBlLWZ1bmN0
aW9uIiwKKyAgICBQcm9ncmFtOiAicHJvZmlsZS1ub2RlLXR5cGUtcHJvZ3JhbSIKK307CisKK1dl
Ykluc3BlY3Rvci5Qcm9maWxlTm9kZS5UeXBlSWRlbnRpZmllciA9ICJwcm9maWxlLW5vZGUiOwor
V2ViSW5zcGVjdG9yLlByb2ZpbGVOb2RlLlR5cGVDb29raWVLZXkgPSAicHJvZmlsZS1ub2RlLXR5
cGUiOworV2ViSW5zcGVjdG9yLlByb2ZpbGVOb2RlLkZ1bmN0aW9uTmFtZUNvb2tpZUtleSA9ICJw
cm9maWxlLW5vZGUtZnVuY3Rpb24tbmFtZSI7CitXZWJJbnNwZWN0b3IuUHJvZmlsZU5vZGUuU291
cmNlQ29kZVVSTENvb2tpZUtleSA9ICJwcm9maWxlLW5vZGUtc291cmNlLWNvZGUtdXJsIjsKK1dl
Ykluc3BlY3Rvci5Qcm9maWxlTm9kZS5Tb3VyY2VDb2RlTG9jYXRpb25MaW5lQ29va2llS2V5ID0g
InByb2ZpbGUtbm9kZS1zb3VyY2UtY29kZS1sb2NhdGlvbi1saW5lIjsKK1dlYkluc3BlY3Rvci5Q
cm9maWxlTm9kZS5Tb3VyY2VDb2RlTG9jYXRpb25Db2x1bW5Db29raWVLZXkgPSAicHJvZmlsZS1u
b2RlLXNvdXJjZS1jb2RlLWxvY2F0aW9uLWNvbHVtbiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUHJvZmlsZU5vZGVDYWxsLmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Byb2ZpbGVOb2RlQ2FsbC5q
cwppbmRleCAxYzYwZWE5Li43Zjc0YzY1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Byb2ZpbGVOb2RlQ2FsbC5qcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUHJvZmlsZU5vZGVDYWxsLmpzCkBA
IC0yMyw0MyArMjMsNDEgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCi1XZWJJbnNwZWN0b3IuUHJvZmlsZU5vZGVDYWxsID0gZnVuY3Rpb24oc3RhcnRUaW1lLCB0
b3RhbFRpbWUpCitXZWJJbnNwZWN0b3IuUHJvZmlsZU5vZGVDYWxsID0gY2xhc3MgUHJvZmlsZU5v
ZGVDYWxsIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogewotICAgIFdlYkluc3BlY3Rvci5P
YmplY3QuY2FsbCh0aGlzKTsKKyAgICBjb25zdHJ1Y3RvcihzdGFydFRpbWUsIHRvdGFsVGltZSkK
KyAgICB7CisgICAgICAgIHN1cGVyKCk7CiAKLSAgICBjb25zb2xlLmFzc2VydChzdGFydFRpbWUp
OworICAgICAgICBjb25zb2xlLmFzc2VydChzdGFydFRpbWUpOwogCi0gICAgdGhpcy5fc3RhcnRU
aW1lID0gc3RhcnRUaW1lOwotICAgIHRoaXMuX3RvdGFsVGltZSA9IHRvdGFsVGltZSB8fCAwOwot
ICAgIHRoaXMuX3BhcmVudE5vZGUgPSBudWxsOwotICAgIHRoaXMuX3ByZXZpb3VzU2libGluZyA9
IG51bGw7Ci0gICAgdGhpcy5fbmV4dFNpYmxpbmcgPSBudWxsOwotfTsKLQotV2ViSW5zcGVjdG9y
LlByb2ZpbGVOb2RlQ2FsbC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3Bl
Y3Rvci5Qcm9maWxlTm9kZUNhbGwsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuT2JqZWN0
LnByb3RvdHlwZSwKKyAgICAgICAgdGhpcy5fc3RhcnRUaW1lID0gc3RhcnRUaW1lOworICAgICAg
ICB0aGlzLl90b3RhbFRpbWUgPSB0b3RhbFRpbWUgfHwgMDsKKyAgICAgICAgdGhpcy5fcGFyZW50
Tm9kZSA9IG51bGw7CisgICAgICAgIHRoaXMuX3ByZXZpb3VzU2libGluZyA9IG51bGw7CisgICAg
ICAgIHRoaXMuX25leHRTaWJsaW5nID0gbnVsbDsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAog
ICAgIGdldCBzdGFydFRpbWUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXJ0VGlt
ZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCB0b3RhbFRpbWUoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHRoaXMuX3RvdGFsVGltZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBlbmRUaW1l
KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zdGFydFRpbWUgKyB0aGlzLl90b3RhbFRp
bWU7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcm90ZWN0ZWQKIAotICAgIGVzdGFibGlzaFJl
bGF0aW9uc2hpcHM6IGZ1bmN0aW9uKHBhcmVudE5vZGUsIHByZXZpb3VzU2libGluZywgbmV4dFNp
YmxpbmcpCisgICAgZXN0YWJsaXNoUmVsYXRpb25zaGlwcyhwYXJlbnROb2RlLCBwcmV2aW91c1Np
YmxpbmcsIG5leHRTaWJsaW5nKQogICAgIHsKICAgICAgICAgdGhpcy5fcGFyZW50Tm9kZSA9IHBh
cmVudE5vZGUgfHwgbnVsbDsKICAgICAgICAgdGhpcy5fcHJldmlvdXNTaWJsaW5nID0gcHJldmlv
dXNTaWJsaW5nIHx8IG51bGw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Nb2RlbHMvUHJvcGVydHlEZXNjcmlwdG9yLmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Byb3BlcnR5RGVzY3JpcHRvci5qcwppbmRleCA2
NDExODcxLi5kZmZkNTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Nb2RlbHMvUHJvcGVydHlEZXNjcmlwdG9yLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Qcm9wZXJ0eURlc2NyaXB0b3IuanMKQEAgLTIz
LDEyOSArMjMsMTI5IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
IAotV2ViSW5zcGVjdG9yLlByb3BlcnR5RGVzY3JpcHRvciA9IGZ1bmN0aW9uKGRlc2NyaXB0b3Is
IGlzT3duUHJvcGVydHksIHdhc1Rocm93biwgbmF0aXZlR2V0dGVyLCBpc0ludGVybmFsUHJvcGVy
dHkpCitXZWJJbnNwZWN0b3IuUHJvcGVydHlEZXNjcmlwdG9yID0gY2xhc3MgUHJvcGVydHlEZXNj
cmlwdG9yIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogewotICAgIFdlYkluc3BlY3Rvci5P
YmplY3QuY2FsbCh0aGlzKTsKLQotICAgIGNvbnNvbGUuYXNzZXJ0KGRlc2NyaXB0b3IpOwotICAg
IGNvbnNvbGUuYXNzZXJ0KGRlc2NyaXB0b3IubmFtZSk7Ci0gICAgY29uc29sZS5hc3NlcnQoIWRl
c2NyaXB0b3IudmFsdWUgfHwgZGVzY3JpcHRvci52YWx1ZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rv
ci5SZW1vdGVPYmplY3QpOwotICAgIGNvbnNvbGUuYXNzZXJ0KCFkZXNjcmlwdG9yLmdldCB8fCBk
ZXNjcmlwdG9yLmdldCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QpOwotICAg
IGNvbnNvbGUuYXNzZXJ0KCFkZXNjcmlwdG9yLnNldCB8fCBkZXNjcmlwdG9yLnNldCBpbnN0YW5j
ZW9mIFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QpOwotCi0gICAgdGhpcy5fbmFtZSA9IGRlc2Ny
aXB0b3IubmFtZTsKLSAgICB0aGlzLl92YWx1ZSA9IGRlc2NyaXB0b3IudmFsdWU7Ci0gICAgdGhp
cy5faGFzVmFsdWUgPSAidmFsdWUiIGluIGRlc2NyaXB0b3I7Ci0gICAgdGhpcy5fZ2V0ID0gZGVz
Y3JpcHRvci5nZXQ7Ci0gICAgdGhpcy5fc2V0ID0gZGVzY3JpcHRvci5zZXQ7Ci0KLSAgICB0aGlz
Ll93cml0YWJsZSA9IGRlc2NyaXB0b3Iud3JpdGFibGUgfHwgZmFsc2U7Ci0gICAgdGhpcy5fY29u
ZmlndXJhYmxlID0gZGVzY3JpcHRvci5jb25maWd1cmFibGUgfHwgZmFsc2U7Ci0gICAgdGhpcy5f
ZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsKLQotICAgIHRoaXMu
X293biA9IGlzT3duUHJvcGVydHkgfHwgZmFsc2U7Ci0gICAgdGhpcy5fd2FzVGhyb3duID0gd2Fz
VGhyb3duIHx8IGZhbHNlOwotICAgIHRoaXMuX25hdGl2ZUdldHRlclZhbHVlID0gbmF0aXZlR2V0
dGVyIHx8IGZhbHNlOwotICAgIHRoaXMuX2ludGVybmFsID0gaXNJbnRlcm5hbFByb3BlcnR5IHx8
IGZhbHNlOwotfTsKLQotLy8gUnVudGltZS5Qcm9wZXJ0eURlc2NyaXB0b3Igb3IgUnVudGltZS5J
bnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvciAoc2Vjb25kIGFyZ3VtZW50KS4KLVdlYkluc3BlY3Rv
ci5Qcm9wZXJ0eURlc2NyaXB0b3IuZnJvbVBheWxvYWQgPSBmdW5jdGlvbihwYXlsb2FkLCBpbnRl
cm5hbCkKLXsKLSAgICBpZiAocGF5bG9hZC52YWx1ZSkKLSAgICAgICAgcGF5bG9hZC52YWx1ZSA9
IFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QuZnJvbVBheWxvYWQocGF5bG9hZC52YWx1ZSk7Ci0g
ICAgaWYgKHBheWxvYWQuZ2V0KQotICAgICAgICBwYXlsb2FkLmdldCA9IFdlYkluc3BlY3Rvci5S
ZW1vdGVPYmplY3QuZnJvbVBheWxvYWQocGF5bG9hZC5nZXQpOwotICAgIGlmIChwYXlsb2FkLnNl
dCkKLSAgICAgICAgcGF5bG9hZC5zZXQgPSBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LmZyb21Q
YXlsb2FkKHBheWxvYWQuc2V0KTsKLQotICAgIGlmIChpbnRlcm5hbCkgewotICAgICAgICBjb25z
b2xlLmFzc2VydChwYXlsb2FkLnZhbHVlKTsKLSAgICAgICAgcGF5bG9hZC53cml0YWJsZSA9IHBh
eWxvYWQuY29uZmlndXJhYmxlID0gcGF5bG9hZC5lbnVtZXJhYmxlID0gZmFsc2U7Ci0gICAgICAg
IHBheWxvYWQuaXNPd24gPSB0cnVlOworICAgIGNvbnN0cnVjdG9yKGRlc2NyaXB0b3IsIGlzT3du
UHJvcGVydHksIHdhc1Rocm93biwgbmF0aXZlR2V0dGVyLCBpc0ludGVybmFsUHJvcGVydHkpCisg
ICAgeworICAgICAgICBzdXBlcigpOworCisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGRlc2NyaXB0
b3IpOworICAgICAgICBjb25zb2xlLmFzc2VydChkZXNjcmlwdG9yLm5hbWUpOworICAgICAgICBj
b25zb2xlLmFzc2VydCghZGVzY3JpcHRvci52YWx1ZSB8fCBkZXNjcmlwdG9yLnZhbHVlIGluc3Rh
bmNlb2YgV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdCk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KCFkZXNjcmlwdG9yLmdldCB8fCBkZXNjcmlwdG9yLmdldCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rv
ci5SZW1vdGVPYmplY3QpOworICAgICAgICBjb25zb2xlLmFzc2VydCghZGVzY3JpcHRvci5zZXQg
fHwgZGVzY3JpcHRvci5zZXQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0KTsK
KworICAgICAgICB0aGlzLl9uYW1lID0gZGVzY3JpcHRvci5uYW1lOworICAgICAgICB0aGlzLl92
YWx1ZSA9IGRlc2NyaXB0b3IudmFsdWU7CisgICAgICAgIHRoaXMuX2hhc1ZhbHVlID0gInZhbHVl
IiBpbiBkZXNjcmlwdG9yOworICAgICAgICB0aGlzLl9nZXQgPSBkZXNjcmlwdG9yLmdldDsKKyAg
ICAgICAgdGhpcy5fc2V0ID0gZGVzY3JpcHRvci5zZXQ7CisKKyAgICAgICAgdGhpcy5fd3JpdGFi
bGUgPSBkZXNjcmlwdG9yLndyaXRhYmxlIHx8IGZhbHNlOworICAgICAgICB0aGlzLl9jb25maWd1
cmFibGUgPSBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSB8fCBmYWxzZTsKKyAgICAgICAgdGhpcy5f
ZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsKKworICAgICAgICB0
aGlzLl9vd24gPSBpc093blByb3BlcnR5IHx8IGZhbHNlOworICAgICAgICB0aGlzLl93YXNUaHJv
d24gPSB3YXNUaHJvd24gfHwgZmFsc2U7CisgICAgICAgIHRoaXMuX25hdGl2ZUdldHRlclZhbHVl
ID0gbmF0aXZlR2V0dGVyIHx8IGZhbHNlOworICAgICAgICB0aGlzLl9pbnRlcm5hbCA9IGlzSW50
ZXJuYWxQcm9wZXJ0eSB8fCBmYWxzZTsKICAgICB9CiAKLSAgICByZXR1cm4gbmV3IFdlYkluc3Bl
Y3Rvci5Qcm9wZXJ0eURlc2NyaXB0b3IocGF5bG9hZCwgcGF5bG9hZC5pc093biwgcGF5bG9hZC53
YXNUaHJvd24sIHBheWxvYWQubmF0aXZlR2V0dGVyLCBpbnRlcm5hbCk7Ci19OwotCi1XZWJJbnNw
ZWN0b3IuUHJvcGVydHlEZXNjcmlwdG9yLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3Rvcjog
V2ViSW5zcGVjdG9yLlByb3BlcnR5RGVzY3JpcHRvciwKLSAgICBfX3Byb3RvX186IFdlYkluc3Bl
Y3Rvci5PYmplY3QucHJvdG90eXBlLAorICAgIC8vIFN0YXRpYworCisgICAgLy8gUnVudGltZS5Q
cm9wZXJ0eURlc2NyaXB0b3Igb3IgUnVudGltZS5JbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvciAo
c2Vjb25kIGFyZ3VtZW50KS4KKyAgICBzdGF0aWMgZnJvbVBheWxvYWQocGF5bG9hZCwgaW50ZXJu
YWwpCisgICAgeworICAgICAgICBpZiAocGF5bG9hZC52YWx1ZSkKKyAgICAgICAgICAgIHBheWxv
YWQudmFsdWUgPSBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LmZyb21QYXlsb2FkKHBheWxvYWQu
dmFsdWUpOworICAgICAgICBpZiAocGF5bG9hZC5nZXQpCisgICAgICAgICAgICBwYXlsb2FkLmdl
dCA9IFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QuZnJvbVBheWxvYWQocGF5bG9hZC5nZXQpOwor
ICAgICAgICBpZiAocGF5bG9hZC5zZXQpCisgICAgICAgICAgICBwYXlsb2FkLnNldCA9IFdlYklu
c3BlY3Rvci5SZW1vdGVPYmplY3QuZnJvbVBheWxvYWQocGF5bG9hZC5zZXQpOworCisgICAgICAg
IGlmIChpbnRlcm5hbCkgeworICAgICAgICAgICAgY29uc29sZS5hc3NlcnQocGF5bG9hZC52YWx1
ZSk7CisgICAgICAgICAgICBwYXlsb2FkLndyaXRhYmxlID0gcGF5bG9hZC5jb25maWd1cmFibGUg
PSBwYXlsb2FkLmVudW1lcmFibGUgPSBmYWxzZTsKKyAgICAgICAgICAgIHBheWxvYWQuaXNPd24g
PSB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuUHJv
cGVydHlEZXNjcmlwdG9yKHBheWxvYWQsIHBheWxvYWQuaXNPd24sIHBheWxvYWQud2FzVGhyb3du
LCBwYXlsb2FkLm5hdGl2ZUdldHRlciwgaW50ZXJuYWwpOworICAgIH0KIAogICAgIC8vIFB1Ymxp
YwogCiAgICAgZ2V0IG5hbWUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX25hbWU7Ci0g
ICAgfSwKKyAgICB9CiAKICAgICBnZXQgdmFsdWUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRo
aXMuX3ZhbHVlOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGdldCgpCiAgICAgewogICAgICAg
ICByZXR1cm4gdGhpcy5fZ2V0OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHNldCgpCiAgICAg
ewogICAgICAgICByZXR1cm4gdGhpcy5fc2V0OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHdy
aXRhYmxlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl93cml0YWJsZTsKLSAgICB9LAor
ICAgIH0KIAogICAgIGdldCBjb25maWd1cmFibGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRo
aXMuX2NvbmZpZ3VyYWJsZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBlbnVtZXJhYmxlKCkK
ICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9lbnVtZXJhYmxlOwotICAgIH0sCisgICAgfQog
CiAgICAgZ2V0IGlzT3duUHJvcGVydHkoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX293
bjsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCB3YXNUaHJvd24oKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHRoaXMuX3dhc1Rocm93bjsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBuYXRpdmVH
ZXR0ZXIoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX25hdGl2ZUdldHRlclZhbHVlOwot
ICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGlzSW50ZXJuYWxQcm9wZXJ0eSgpCiAgICAgewogICAg
ICAgICByZXR1cm4gdGhpcy5faW50ZXJuYWw7Ci0gICAgfSwKKyAgICB9CiAKICAgICBoYXNWYWx1
ZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5faGFzVmFsdWU7Ci0gICAgfSwKKyAgICB9
CiAKICAgICBoYXNHZXR0ZXIoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2dldCAmJiB0
aGlzLl9nZXQudHlwZSA9PT0gImZ1bmN0aW9uIjsKLSAgICB9LAorICAgIH0KIAogICAgIGhhc1Nl
dHRlcigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc2V0ICYmIHRoaXMuX3NldC50eXBl
ID09PSAiZnVuY3Rpb24iOwotICAgIH0sCisgICAgfQogCiAgICAgaXNJbmRleFByb3BlcnR5KCkK
ICAgICB7CiAgICAgICAgIHJldHVybiAhaXNOYU4oTnVtYmVyKHRoaXMuX25hbWUpKTsKLSAgICB9
LAorICAgIH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Nb2RlbHMvUHJvcGVydHlQYXRoLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvTW9kZWxzL1Byb3BlcnR5UGF0aC5qcwppbmRleCAwNjkxOWY3Li5lMDkwZGI4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUHJv
cGVydHlQYXRoLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01v
ZGVscy9Qcm9wZXJ0eVBhdGguanMKQEAgLTIzLDcxICsyMyw1NiBAQAogICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5Qcm9wZXJ0eVBhdGggPSBm
dW5jdGlvbihvYmplY3QsIHBhdGhDb21wb25lbnQsIHBhcmVudCwgaXNQcm90b3R5cGUpCitXZWJJ
bnNwZWN0b3IuUHJvcGVydHlQYXRoID0gY2xhc3MgUHJvcGVydHlQYXRoIGV4dGVuZHMgV2ViSW5z
cGVjdG9yLk9iamVjdAogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAg
ICBjb25zdHJ1Y3RvcihvYmplY3QsIHBhdGhDb21wb25lbnQsIHBhcmVudCwgaXNQcm90b3R5cGUp
CisgICAgeworICAgICAgICBzdXBlcigpOwogCi0gICAgY29uc29sZS5hc3NlcnQob2JqZWN0IGlu
c3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdCB8fCBvYmplY3QgPT09IG51bGwpOwot
ICAgIGNvbnNvbGUuYXNzZXJ0KCFwYXRoQ29tcG9uZW50IHx8IHR5cGVvZiBwYXRoQ29tcG9uZW50
ID09PSAic3RyaW5nIik7Ci0gICAgY29uc29sZS5hc3NlcnQoIXBhcmVudCB8fCBwYXJlbnQgaW5z
dGFuY2VvZiBXZWJJbnNwZWN0b3IuUHJvcGVydHlQYXRoKTsKLSAgICBjb25zb2xlLmFzc2VydCgh
cGFyZW50IHx8IHBhdGhDb21wb25lbnQubGVuZ3RoKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQo
b2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdCB8fCBvYmplY3QgPT09
IG51bGwpOworICAgICAgICBjb25zb2xlLmFzc2VydCghcGF0aENvbXBvbmVudCB8fCB0eXBlb2Yg
cGF0aENvbXBvbmVudCA9PT0gInN0cmluZyIpOworICAgICAgICBjb25zb2xlLmFzc2VydCghcGFy
ZW50IHx8IHBhcmVudCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Qcm9wZXJ0eVBhdGgpOworICAg
ICAgICBjb25zb2xlLmFzc2VydCghcGFyZW50IHx8IHBhdGhDb21wb25lbnQubGVuZ3RoKTsKIAot
ICAgIC8vIFdlIGFsbG93IHByb3BlcnR5IHBhdGhlcyB3aXRoIG51bGwgb2JqZWN0cyBhcyBlbmQt
Y2FwcyBvbmx5LgotICAgIC8vIERpc2FsbG93IGFwcGVuZGluZyB0byBhIFByb3BlcnR5UGF0aCB3
aXRoIG51bGwgb2JqZWN0cy4KLSAgICBpZiAocGFyZW50ICYmICFwYXJlbnQub2JqZWN0KQotICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoIkF0dGVtcHRlZCB0byBhcHBlbmQgdG8gYSBQcm9wZXJ0eVBh
dGggd2l0aCBudWxsIG9iamVjdC4iKTsKKyAgICAgICAgLy8gV2UgYWxsb3cgcHJvcGVydHkgcGF0
aGVzIHdpdGggbnVsbCBvYmplY3RzIGFzIGVuZC1jYXBzIG9ubHkuCisgICAgICAgIC8vIERpc2Fs
bG93IGFwcGVuZGluZyB0byBhIFByb3BlcnR5UGF0aCB3aXRoIG51bGwgb2JqZWN0cy4KKyAgICAg
ICAgaWYgKHBhcmVudCAmJiAhcGFyZW50Lm9iamVjdCkKKyAgICAgICAgICAgIHRocm93IG5ldyBF
cnJvcigiQXR0ZW1wdGVkIHRvIGFwcGVuZCB0byBhIFByb3BlcnR5UGF0aCB3aXRoIG51bGwgb2Jq
ZWN0LiIpOwogCi0gICAgdGhpcy5fb2JqZWN0ID0gb2JqZWN0OwotICAgIHRoaXMuX3BhdGhDb21w
b25lbnQgPSB0eXBlb2YgcGF0aENvbXBvbmVudCA9PT0gInN0cmluZyIgPyBwYXRoQ29tcG9uZW50
IDogbnVsbDsKLSAgICB0aGlzLl9wYXJlbnQgPSBwYXJlbnQgfHwgbnVsbDsKLSAgICB0aGlzLl9p
c1Byb3RvdHlwZSA9IGlzUHJvdG90eXBlIHx8IGZhbHNlOwotfTsKKyAgICAgICAgdGhpcy5fb2Jq
ZWN0ID0gb2JqZWN0OworICAgICAgICB0aGlzLl9wYXRoQ29tcG9uZW50ID0gdHlwZW9mIHBhdGhD
b21wb25lbnQgPT09ICJzdHJpbmciID8gcGF0aENvbXBvbmVudCA6IG51bGw7CisgICAgICAgIHRo
aXMuX3BhcmVudCA9IHBhcmVudCB8fCBudWxsOworICAgICAgICB0aGlzLl9pc1Byb3RvdHlwZSA9
IGlzUHJvdG90eXBlIHx8IGZhbHNlOworICAgIH0KIAotV2ViSW5zcGVjdG9yLlByb3BlcnR5UGF0
aC5TcGVjaWFsUGF0aENvbXBvbmVudCA9IHsKLSAgICBJbnRlcm5hbFByb3BlcnR5TmFtZTogIkBp
bnRlcm5hbCIsCi0gICAgU3ltYm9sUHJvcGVydHlOYW1lOiAiQHN5bWJvbCIsCi0gICAgTWFwS2V5
OiAiQG1hcGtleSIsCi0gICAgTWFwVmFsdWU6ICJAbWFwdmFsdWUiLAotICAgIFNldEluZGV4OiAi
QHNldGluZGV4IiwKLSAgICBFbXB0eVBhdGhDb21wb25lbnRGb3JTY29wZTogIiIsCi19OworICAg
IC8vIFN0YXRpYwogCi1XZWJJbnNwZWN0b3IuUHJvcGVydHlQYXRoLlR5cGUgPSB7Ci0gICAgVmFs
dWU6ICJ2YWx1ZSIsCi0gICAgR2V0dGVyOiAiZ2V0dGVyIiwKLSAgICBTZXR0ZXI6ICJzZXR0ZXIi
LAotfTsKLQotV2ViSW5zcGVjdG9yLlByb3BlcnR5UGF0aC5lbXB0eVByb3BlcnR5UGF0aEZvclNj
b3BlID0gZnVuY3Rpb24ob2JqZWN0KQotewotICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlBy
b3BlcnR5UGF0aChvYmplY3QsIFdlYkluc3BlY3Rvci5Qcm9wZXJ0eVBhdGguU3BlY2lhbFBhdGhD
b21wb25lbnQuRW1wdHlQYXRoQ29tcG9uZW50Rm9yU2NvcGUpOwotfQotCi1XZWJJbnNwZWN0b3Iu
UHJvcGVydHlQYXRoLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9y
LlByb3BlcnR5UGF0aCwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90
eXBlLAorICAgIHN0YXRpYyBlbXB0eVByb3BlcnR5UGF0aEZvclNjb3BlKG9iamVjdCkKKyAgICB7
CisgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlByb3BlcnR5UGF0aChvYmplY3QsIFdl
Ykluc3BlY3Rvci5Qcm9wZXJ0eVBhdGguU3BlY2lhbFBhdGhDb21wb25lbnQuRW1wdHlQYXRoQ29t
cG9uZW50Rm9yU2NvcGUpOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IG9iamVj
dCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fb2JqZWN0OwotICAgIH0sCisgICAgfQog
CiAgICAgZ2V0IHBhcmVudCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcGFyZW50Owot
ICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGlzUHJvdG90eXBlKCkKICAgICB7CiAgICAgICAgIHJl
dHVybiB0aGlzLl9pc1Byb3RvdHlwZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCByb290T2Jq
ZWN0KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9wYXJlbnQgPyB0aGlzLl9wYXJlbnQu
cm9vdE9iamVjdCA6IHRoaXMuX29iamVjdDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBsYXN0
Tm9uUHJvdG90eXBlT2JqZWN0KCkKICAgICB7CkBAIC0xMDQsMTIgKzg5LDEyIEBAIFdlYkluc3Bl
Y3Rvci5Qcm9wZXJ0eVBhdGgucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgcmV0
dXJuIHAub2JqZWN0OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHBhdGhDb21wb25lbnQoKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3BhdGhDb21wb25lbnQ7Ci0gICAgfSwKKyAgICB9
CiAKICAgICBnZXQgZnVsbFBhdGgoKQogICAgIHsKQEAgLTExOCw3ICsxMDMsNyBAQCBXZWJJbnNw
ZWN0b3IuUHJvcGVydHlQYXRoLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGNvbXBvbmVudHMu
cHVzaChwLnBhdGhDb21wb25lbnQpOwogICAgICAgICBjb21wb25lbnRzLnJldmVyc2UoKQogICAg
ICAgICByZXR1cm4gY29tcG9uZW50cy5qb2luKCIiKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdl
dCByZWR1Y2VkUGF0aCgpCiAgICAgewpAQCAtMTQyLDI3ICsxMjcsMjcgQEAgV2ViSW5zcGVjdG9y
LlByb3BlcnR5UGF0aC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgY29tcG9uZW50cy5yZXZlcnNl
KCk7CiAgICAgICAgIHJldHVybiBjb21wb25lbnRzLmpvaW4oIiIpOyAgICAgICAgCi0gICAgfSwK
KyAgICB9CiAKICAgICBkaXNwbGF5UGF0aCh0eXBlKQogICAgIHsKICAgICAgICAgcmV0dXJuIHR5
cGUgPT09IFdlYkluc3BlY3Rvci5Qcm9wZXJ0eVBhdGguVHlwZS5WYWx1ZSA/IHRoaXMucmVkdWNl
ZFBhdGggOiB0aGlzLmZ1bGxQYXRoOwotICAgIH0sCisgICAgfQogCiAgICAgaXNSb290KCkKICAg
ICB7CiAgICAgICAgIHJldHVybiAhdGhpcy5fcGFyZW50OwotICAgIH0sCisgICAgfQogCiAgICAg
aXNTY29wZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcGF0aENvbXBvbmVudCA9PT0g
V2ViSW5zcGVjdG9yLlByb3BlcnR5UGF0aC5TcGVjaWFsUGF0aENvbXBvbmVudC5FbXB0eVBhdGhD
b21wb25lbnRGb3JTY29wZTsKLSAgICB9LAorICAgIH0KIAogICAgIGlzUGF0aENvbXBvbmVudElt
cG9zc2libGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3BhdGhDb21wb25lbnQgJiYg
dGhpcy5fcGF0aENvbXBvbmVudC5zdGFydHNXaXRoKCJAIik7Ci0gICAgfSwKKyAgICB9CiAKICAg
ICBpc0Z1bGxQYXRoSW1wb3NzaWJsZSgpCiAgICAgewpAQCAtMTczLDcgKzE1OCw3IEBAIFdlYklu
c3BlY3Rvci5Qcm9wZXJ0eVBhdGgucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuIHRo
aXMuX3BhcmVudC5pc0Z1bGxQYXRoSW1wb3NzaWJsZSgpOwogCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICB9LAorICAgIH0KIAogICAgIGFwcGVuZFByb3BlcnR5TmFtZShvYmplY3QsIHByb3Bl
cnR5TmFtZSkKICAgICB7CkBAIC0xODQsNDMgKzE2OSw0MyBAQCBXZWJJbnNwZWN0b3IuUHJvcGVy
dHlQYXRoLnByb3RvdHlwZSA9IHsKIAogICAgICAgICB2YXIgY29tcG9uZW50ID0gdGhpcy5fY2Fu
UHJvcGVydHlOYW1lQmVEb3RBY2Nlc3MocHJvcGVydHlOYW1lKSA/ICIuIiArIHByb3BlcnR5TmFt
ZSA6ICJbIiArIGRvdWJsZVF1b3RlZFN0cmluZyhwcm9wZXJ0eU5hbWUpICsgIl0iOwogICAgICAg
ICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5Qcm9wZXJ0eVBhdGgob2JqZWN0LCBjb21wb25lbnQs
IHRoaXMsIGlzUHJvdG90eXBlKTsKLSAgICB9LAorICAgIH0KIAogICAgIGFwcGVuZFByb3BlcnR5
U3ltYm9sKG9iamVjdCwgc3ltYm9sTmFtZSkKICAgICB7CiAgICAgICAgIHZhciBjb21wb25lbnQg
PSBXZWJJbnNwZWN0b3IuUHJvcGVydHlQYXRoLlNwZWNpYWxQYXRoQ29tcG9uZW50LlN5bWJvbFBy
b3BlcnR5TmFtZSArIChzeW1ib2xOYW1lLmxlbmd0aCA/ICIoIiArIHN5bWJvbE5hbWUgKyAiKSIg
OiAiIik7CiAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlByb3BlcnR5UGF0aChvYmpl
Y3QsIGNvbXBvbmVudCwgdGhpcyk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBhcHBlbmRJbnRlcm5h
bFByb3BlcnR5TmFtZShvYmplY3QsIHByb3BlcnR5TmFtZSkKICAgICB7CiAgICAgICAgIHZhciBj
b21wb25lbnQgPSBXZWJJbnNwZWN0b3IuUHJvcGVydHlQYXRoLlNwZWNpYWxQYXRoQ29tcG9uZW50
LkludGVybmFsUHJvcGVydHlOYW1lICsgIlsiICsgcHJvcGVydHlOYW1lICsgIl0iOwogICAgICAg
ICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5Qcm9wZXJ0eVBhdGgob2JqZWN0LCBjb21wb25lbnQs
IHRoaXMpOwotICAgIH0sCisgICAgfQogCiAgICAgYXBwZW5kR2V0dGVyUHJvcGVydHlOYW1lKG9i
amVjdCwgcHJvcGVydHlOYW1lKQogICAgIHsKICAgICAgICAgdmFyIGNvbXBvbmVudCA9ICIuX19s
b29rdXBHZXR0ZXJfXygiICsgZG91YmxlUXVvdGVkU3RyaW5nKHByb3BlcnR5TmFtZSkgKyAiKSI7
CiAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlByb3BlcnR5UGF0aChvYmplY3QsIGNv
bXBvbmVudCwgdGhpcyk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBhcHBlbmRTZXR0ZXJQcm9wZXJ0
eU5hbWUob2JqZWN0LCBwcm9wZXJ0eU5hbWUpCiAgICAgewogICAgICAgICB2YXIgY29tcG9uZW50
ID0gIi5fX2xvb2t1cFNldHRlcl9fKCIgKyBkb3VibGVRdW90ZWRTdHJpbmcocHJvcGVydHlOYW1l
KSArICIpIjsKICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuUHJvcGVydHlQYXRoKG9i
amVjdCwgY29tcG9uZW50LCB0aGlzKTsKLSAgICB9LAorICAgIH0KIAogICAgIGFwcGVuZEFycmF5
SW5kZXgob2JqZWN0LCBpbmRleFN0cmluZykKICAgICB7CiAgICAgICAgIHZhciBjb21wb25lbnQg
PSAiWyIgKyBpbmRleFN0cmluZyArICJdIjsKICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0
b3IuUHJvcGVydHlQYXRoKG9iamVjdCwgY29tcG9uZW50LCB0aGlzKTsKLSAgICB9LAorICAgIH0K
IAogICAgIGFwcGVuZE1hcEtleShvYmplY3QpCiAgICAgewogICAgICAgICB2YXIgY29tcG9uZW50
ID0gV2ViSW5zcGVjdG9yLlByb3BlcnR5UGF0aC5TcGVjaWFsUGF0aENvbXBvbmVudC5NYXBLZXk7
CiAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlByb3BlcnR5UGF0aChvYmplY3QsIGNv
bXBvbmVudCwgdGhpcyk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBhcHBlbmRNYXBWYWx1ZShvYmpl
Y3QsIGtleU9iamVjdCkKICAgICB7CkBAIC0yMzgsMTMgKzIyMywxMyBAQCBXZWJJbnNwZWN0b3Iu
UHJvcGVydHlQYXRoLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIAogICAgICAgICB2YXIgY29t
cG9uZW50ID0gV2ViSW5zcGVjdG9yLlByb3BlcnR5UGF0aC5TcGVjaWFsUGF0aENvbXBvbmVudC5N
YXBWYWx1ZTsKICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuUHJvcGVydHlQYXRoKG9i
amVjdCwgY29tcG9uZW50LCB0aGlzKTsKLSAgICB9LAorICAgIH0KIAogICAgIGFwcGVuZFNldElu
ZGV4KG9iamVjdCkKICAgICB7CiAgICAgICAgIHZhciBjb21wb25lbnQgPSBXZWJJbnNwZWN0b3Iu
UHJvcGVydHlQYXRoLlNwZWNpYWxQYXRoQ29tcG9uZW50LlNldEluZGV4OwogICAgICAgICByZXR1
cm4gbmV3IFdlYkluc3BlY3Rvci5Qcm9wZXJ0eVBhdGgob2JqZWN0LCBjb21wb25lbnQsIHRoaXMp
OwotICAgIH0sCisgICAgfQogICAgIAogICAgIGFwcGVuZFByb3BlcnR5RGVzY3JpcHRvcihvYmpl
Y3QsIGRlc2NyaXB0b3IsIHR5cGUpCiAgICAgewpAQCAtMjY0LDcgKzI0OSw3IEBAIFdlYkluc3Bl
Y3Rvci5Qcm9wZXJ0eVBhdGgucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuIHRoaXMu
YXBwZW5kQXJyYXlJbmRleChvYmplY3QsIGRlc2NyaXB0b3IubmFtZSk7CiAKICAgICAgICAgcmV0
dXJuIHRoaXMuYXBwZW5kUHJvcGVydHlOYW1lKG9iamVjdCwgZGVzY3JpcHRvci5uYW1lKQotICAg
IH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCkBAIC0yNzMsMyArMjU4LDE4IEBAIFdlYklu
c3BlY3Rvci5Qcm9wZXJ0eVBhdGgucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gL14oPyFb
MC05XSlcdyskLy50ZXN0KHByb3BlcnR5TmFtZSk7CiAgICAgfQogfTsKKworV2ViSW5zcGVjdG9y
LlByb3BlcnR5UGF0aC5TcGVjaWFsUGF0aENvbXBvbmVudCA9IHsKKyAgICBJbnRlcm5hbFByb3Bl
cnR5TmFtZTogIkBpbnRlcm5hbCIsCisgICAgU3ltYm9sUHJvcGVydHlOYW1lOiAiQHN5bWJvbCIs
CisgICAgTWFwS2V5OiAiQG1hcGtleSIsCisgICAgTWFwVmFsdWU6ICJAbWFwdmFsdWUiLAorICAg
IFNldEluZGV4OiAiQHNldGluZGV4IiwKKyAgICBFbXB0eVBhdGhDb21wb25lbnRGb3JTY29wZTog
IiIsCit9OworCitXZWJJbnNwZWN0b3IuUHJvcGVydHlQYXRoLlR5cGUgPSB7CisgICAgVmFsdWU6
ICJ2YWx1ZSIsCisgICAgR2V0dGVyOiAiZ2V0dGVyIiwKKyAgICBTZXR0ZXI6ICJzZXR0ZXIiLAor
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVs
cy9Qcm9wZXJ0eVByZXZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Nb2RlbHMvUHJvcGVydHlQcmV2aWV3LmpzCmluZGV4IDFmODA0YWQuLjI5YmZmYTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Qcm9wZXJ0
eVByZXZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9k
ZWxzL1Byb3BlcnR5UHJldmlldy5qcwpAQCAtMjMsNjIgKzIzLDYyIEBACiAgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlByb3BlcnR5UHJldmll
dyA9IGZ1bmN0aW9uKG5hbWUsIHR5cGUsIHN1YnR5cGUsIHZhbHVlLCB2YWx1ZVByZXZpZXcsIGlz
SW50ZXJuYWxQcm9wZXJ0eSkKK1dlYkluc3BlY3Rvci5Qcm9wZXJ0eVByZXZpZXcgPSBjbGFzcyBQ
cm9wZXJ0eVByZXZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0gICAgV2ViSW5z
cGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIGNvbnN0cnVjdG9yKG5hbWUsIHR5cGUsIHN1
YnR5cGUsIHZhbHVlLCB2YWx1ZVByZXZpZXcsIGlzSW50ZXJuYWxQcm9wZXJ0eSkKKyAgICB7Cisg
ICAgICAgIHN1cGVyKCk7CiAKLSAgICBjb25zb2xlLmFzc2VydChuYW1lKTsKLSAgICBjb25zb2xl
LmFzc2VydCh0eXBlKTsKLSAgICBjb25zb2xlLmFzc2VydCghdmFsdWUgfHwgdHlwZW9mIHZhbHVl
ID09PSAic3RyaW5nIik7Ci0gICAgY29uc29sZS5hc3NlcnQoIXZhbHVlUHJldmlldyB8fCB2YWx1
ZVByZXZpZXcgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuT2JqZWN0UHJldmlldyk7CisgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KG5hbWUpOworICAgICAgICBjb25zb2xlLmFzc2VydCh0eXBlKTsKKyAg
ICAgICAgY29uc29sZS5hc3NlcnQoIXZhbHVlIHx8IHR5cGVvZiB2YWx1ZSA9PT0gInN0cmluZyIp
OworICAgICAgICBjb25zb2xlLmFzc2VydCghdmFsdWVQcmV2aWV3IHx8IHZhbHVlUHJldmlldyBp
bnN0YW5jZW9mIFdlYkluc3BlY3Rvci5PYmplY3RQcmV2aWV3KTsKIAotICAgIHRoaXMuX25hbWUg
PSBuYW1lOwotICAgIHRoaXMuX3R5cGUgPSB0eXBlOwotICAgIHRoaXMuX3N1YnR5cGUgPSBzdWJ0
eXBlOwotICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7Ci0gICAgdGhpcy5fdmFsdWVQcmV2aWV3ID0g
dmFsdWVQcmV2aWV3OwotICAgIHRoaXMuX2ludGVybmFsID0gaXNJbnRlcm5hbFByb3BlcnR5Owot
fTsKKyAgICAgICAgdGhpcy5fbmFtZSA9IG5hbWU7CisgICAgICAgIHRoaXMuX3R5cGUgPSB0eXBl
OworICAgICAgICB0aGlzLl9zdWJ0eXBlID0gc3VidHlwZTsKKyAgICAgICAgdGhpcy5fdmFsdWUg
PSB2YWx1ZTsKKyAgICAgICAgdGhpcy5fdmFsdWVQcmV2aWV3ID0gdmFsdWVQcmV2aWV3OworICAg
ICAgICB0aGlzLl9pbnRlcm5hbCA9IGlzSW50ZXJuYWxQcm9wZXJ0eTsKKyAgICB9CiAKLS8vIFJ1
bnRpbWUuUHJvcGVydHlQcmV2aWV3LgotV2ViSW5zcGVjdG9yLlByb3BlcnR5UHJldmlldy5mcm9t
UGF5bG9hZCA9IGZ1bmN0aW9uKHBheWxvYWQpCi17Ci0gICAgaWYgKHBheWxvYWQudmFsdWVQcmV2
aWV3KQotICAgICAgICBwYXlsb2FkLnZhbHVlUHJldmlldyA9IFdlYkluc3BlY3Rvci5PYmplY3RQ
cmV2aWV3LmZyb21QYXlsb2FkKHBheWxvYWQudmFsdWVQcmV2aWV3KTsKKyAgICAvLyBTdGF0aWMK
IAotICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlByb3BlcnR5UHJldmlldyhwYXlsb2FkLm5h
bWUsIHBheWxvYWQudHlwZSwgcGF5bG9hZC5zdWJ0eXBlLCBwYXlsb2FkLnZhbHVlLCBwYXlsb2Fk
LnZhbHVlUHJldmlldywgcGF5bG9hZC5pbnRlcm5hbCk7Ci19OworICAgIC8vIFJ1bnRpbWUuUHJv
cGVydHlQcmV2aWV3LgorICAgIHN0YXRpYyBmcm9tUGF5bG9hZChwYXlsb2FkKQorICAgIHsKKyAg
ICAgICAgaWYgKHBheWxvYWQudmFsdWVQcmV2aWV3KQorICAgICAgICAgICAgcGF5bG9hZC52YWx1
ZVByZXZpZXcgPSBXZWJJbnNwZWN0b3IuT2JqZWN0UHJldmlldy5mcm9tUGF5bG9hZChwYXlsb2Fk
LnZhbHVlUHJldmlldyk7CiAKLVdlYkluc3BlY3Rvci5Qcm9wZXJ0eVByZXZpZXcucHJvdG90eXBl
ID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuUHJvcGVydHlQcmV2aWV3LAotICAg
IF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGUsCisgICAgICAgIHJldHVy
biBuZXcgV2ViSW5zcGVjdG9yLlByb3BlcnR5UHJldmlldyhwYXlsb2FkLm5hbWUsIHBheWxvYWQu
dHlwZSwgcGF5bG9hZC5zdWJ0eXBlLCBwYXlsb2FkLnZhbHVlLCBwYXlsb2FkLnZhbHVlUHJldmll
dywgcGF5bG9hZC5pbnRlcm5hbCk7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQg
bmFtZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fbmFtZTsKLSAgICB9LAorICAgIH0K
IAogICAgIGdldCB0eXBlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl90eXBlOwotICAg
IH0sCisgICAgfQogCiAgICAgZ2V0IHN1YnR5cGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRo
aXMuX3N1YnR5cGU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgdmFsdWUoKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHZhbHVl
UHJldmlldygpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWVQcmV2aWV3OwotICAg
IH0sCisgICAgfQogCiAgICAgZ2V0IGludGVybmFsKCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUmVwbGF5RGFzaGJvYXJkLmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1JlcGxheURhc2hi
b2FyZC5qcwppbmRleCA4ZGI1YzFiLi5iMzQ5ZDk4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1JlcGxheURhc2hib2FyZC5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUmVwbGF5RGFzaGJvYXJk
LmpzCkBAIC0yMywxMSArMjMsMTEgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCi1XZWJJbnNwZWN0b3IuUmVwbGF5RGFzaGJvYXJkID0gZnVuY3Rpb24oKSB7Ci0g
ICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwotfTsKLQotV2ViSW5zcGVjdG9yLlJl
cGxheURhc2hib2FyZC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rv
ci5SZXBsYXlEYXNoYm9hcmQsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuT2JqZWN0LnBy
b3RvdHlwZSwKK1dlYkluc3BlY3Rvci5SZXBsYXlEYXNoYm9hcmQgPSBjbGFzcyBSZXBsYXlEYXNo
Ym9hcmQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0Cit7CisgICAgY29uc3RydWN0b3IoKQor
ICAgIHsKKyAgICAgICAgLy8gRklYTUU6IFJlbW92ZSBvbmNlIDxodHRwczovL3dlYmtpdC5vcmcv
Yi8xNDI4NjI+IGlzIGZpeGVkLgorICAgICAgICBzdXBlcigpOworICAgIH0KIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUmVwbGF5U2Vz
c2lvbi5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9SZXBs
YXlTZXNzaW9uLmpzCmluZGV4IDkyYTYyNDIuLjQ5YmNmZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9SZXBsYXlTZXNzaW9uLmpzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9SZXBsYXlTZXNzaW9u
LmpzCkBAIC0yNSw0MyArMjUsNDMgQEAKICAqLwogCiAKLVdlYkluc3BlY3Rvci5SZXBsYXlTZXNz
aW9uID0gZnVuY3Rpb24oaWRlbnRpZmllcikKK1dlYkluc3BlY3Rvci5SZXBsYXlTZXNzaW9uID0g
Y2xhc3MgUmVwbGF5U2Vzc2lvbiBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIHsKLSAgICBX
ZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CisgICAgY29uc3RydWN0b3IoaWRlbnRpZmll
cikKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CiAKLSAgICB0aGlzLmlkZW50aWZpZXIgPSBpZGVu
dGlmaWVyOwotICAgIHRoaXMuX3NlZ21lbnRzID0gW107Ci0gICAgdGhpcy5fdGltZXN0YW1wID0g
bnVsbDsKLX07CisgICAgICAgIHRoaXMuaWRlbnRpZmllciA9IGlkZW50aWZpZXI7CisgICAgICAg
IHRoaXMuX3NlZ21lbnRzID0gW107CisgICAgICAgIHRoaXMuX3RpbWVzdGFtcCA9IG51bGw7Cisg
ICAgfQogCi1XZWJJbnNwZWN0b3IuUmVwbGF5U2Vzc2lvbi5mcm9tUGF5bG9hZCA9IGZ1bmN0aW9u
KGlkZW50aWZpZXIsIHBheWxvYWQpCi17Ci0gICAgdmFyIHNlc3Npb24gPSBuZXcgV2ViSW5zcGVj
dG9yLlJlcGxheVNlc3Npb24oaWRlbnRpZmllcik7Ci0gICAgc2Vzc2lvbi5fdXBkYXRlRnJvbVBh
eWxvYWQocGF5bG9hZCk7Ci0gICAgcmV0dXJuIHNlc3Npb247Ci19CisgICAgLy8gU3RhdGljCiAK
LVdlYkluc3BlY3Rvci5SZXBsYXlTZXNzaW9uLkV2ZW50ID0gewotICAgIFNlZ21lbnRzQ2hhbmdl
ZDogInJlcGxheS1zZXNzaW9uLXNlZ21lbnRzLWNoYW5nZWQiLAotfTsKKyAgICBzdGF0aWMgZnJv
bVBheWxvYWQoaWRlbnRpZmllciwgcGF5bG9hZCkKKyAgICB7CisgICAgICAgIHZhciBzZXNzaW9u
ID0gbmV3IFdlYkluc3BlY3Rvci5SZXBsYXlTZXNzaW9uKGlkZW50aWZpZXIpOworICAgICAgICBz
ZXNzaW9uLl91cGRhdGVGcm9tUGF5bG9hZChwYXlsb2FkKTsKKyAgICAgICAgcmV0dXJuIHNlc3Np
b247CisgICAgfQogCi1XZWJJbnNwZWN0b3IuUmVwbGF5U2Vzc2lvbi5wcm90b3R5cGUgPSB7Ci0g
ICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5SZXBsYXlTZXNzaW9uLAotICAgIF9fcHJvdG9f
XzogV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGUsCisgICAgLy8gUHVibGljCiAKICAgICBn
ZXQgc2VnbWVudHMoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3NlZ21lbnRzLnNsaWNl
KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzZWdtZW50c0NoYW5nZWQ6IGZ1bmN0aW9uKCkKKyAg
ICBzZWdtZW50c0NoYW5nZWQoKQogICAgIHsKICAgICAgICAgLy8gVGhlIHJlcGxheSBtYW5hZ2Vy
IHdvbid0IHVwZGF0ZSB0aGUgc2Vzc2lvbidzIGxpc3Qgb2Ygc2VnbWVudHMgbm9yIGNyZWF0ZSBh
IG5ldyBzZXNzaW9uLgogICAgICAgICBSZXBsYXlBZ2VudC5nZXRTZXNzaW9uRGF0YS5wcm9taXNl
KHRoaXMuaWRlbnRpZmllcikKICAgICAgICAgICAgIC50aGVuKHRoaXMuX3VwZGF0ZUZyb21QYXls
b2FkLmJpbmQodGhpcykpOwotICAgIH0sCisgICAgfQogCi0gICAgX3VwZGF0ZUZyb21QYXlsb2Fk
OiBmdW5jdGlvbihwYXlsb2FkKQorICAgIC8vIFByaXZhdGUKKworICAgIF91cGRhdGVGcm9tUGF5
bG9hZChwYXlsb2FkKQogICAgIHsKICAgICAgICAgdmFyIHNlc3Npb24gPSBwYXlsb2FkLnNlc3Np
b247CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHNlc3Npb24uaWQgPT09IHRoaXMuaWRlbnRpZmll
cik7CkBAIC04NCwzICs4NCw3IEBAIFdlYkluc3BlY3Rvci5SZXBsYXlTZXNzaW9uLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgKTsKICAgICB9CiB9OworCitXZWJJbnNwZWN0b3IuUmVwbGF5U2Vzc2lv
bi5FdmVudCA9IHsKKyAgICBTZWdtZW50c0NoYW5nZWQ6ICJyZXBsYXktc2Vzc2lvbi1zZWdtZW50
cy1jaGFuZ2VkIiwKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Nb2RlbHMvUmVwbGF5U2Vzc2lvblNlZ21lbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUmVwbGF5U2Vzc2lvblNlZ21lbnQuanMKaW5kZXgg
YzI1ZWEwMi4uNTY5MDIwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvTW9kZWxzL1JlcGxheVNlc3Npb25TZWdtZW50LmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9SZXBsYXlTZXNzaW9uU2VnbWVudC5qcwpA
QCAtMjUsMTcgKzI1LDE3IEBACiAgKi8KIAogCi1XZWJJbnNwZWN0b3IuSW5jb21wbGV0ZVNlc3Np
b25TZWdtZW50ID0gZnVuY3Rpb24oaWRlbnRpZmllcikKK1dlYkluc3BlY3Rvci5JbmNvbXBsZXRl
U2Vzc2lvblNlZ21lbnQgPSBjbGFzcyBJbmNvbXBsZXRlU2Vzc2lvblNlZ21lbnQgZXh0ZW5kcyBX
ZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMp
OworICAgIGNvbnN0cnVjdG9yKGlkZW50aWZpZXIpCisgICAgeworICAgICAgICBzdXBlcigpOwog
Ci0gICAgdGhpcy5pZGVudGlmaWVyID0gaWRlbnRpZmllcjsKLSAgICB0aGlzLl90aW1lc3RhbXAg
PSBEYXRlLm5vdygpOwotfTsKKyAgICAgICAgdGhpcy5pZGVudGlmaWVyID0gaWRlbnRpZmllcjsK
KyAgICAgICAgdGhpcy5fdGltZXN0YW1wID0gRGF0ZS5ub3coKTsKKyAgICB9CiAKLVdlYkluc3Bl
Y3Rvci5JbmNvbXBsZXRlU2Vzc2lvblNlZ21lbnQucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVj
dG9yOiBXZWJJbnNwZWN0b3IuSW5jb21wbGV0ZVNlc3Npb25TZWdtZW50LAotICAgIF9fcHJvdG9f
XzogV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGUsCisgICAgLy8gUHVibGljCiAKICAgICBn
ZXQgaXNDb21wbGV0ZSgpCiAgICAgewpAQCAtNDMsMjIgKzQzLDIyIEBAIFdlYkluc3BlY3Rvci5J
bmNvbXBsZXRlU2Vzc2lvblNlZ21lbnQucHJvdG90eXBlID0gewogICAgIH0KIH07CiAKLVdlYklu
c3BlY3Rvci5SZXBsYXlTZXNzaW9uU2VnbWVudCA9IGZ1bmN0aW9uKGlkZW50aWZpZXIsIHBheWxv
YWQpCitXZWJJbnNwZWN0b3IuUmVwbGF5U2Vzc2lvblNlZ21lbnQgPSBjbGFzcyBSZXBsYXlTZXNz
aW9uU2VnbWVudCBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIHsKLSAgICBXZWJJbnNwZWN0
b3IuT2JqZWN0LmNhbGwodGhpcyk7CisgICAgY29uc3RydWN0b3IoaWRlbnRpZmllciwgcGF5bG9h
ZCkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CiAKLSAgICB2YXIgc2VnbWVudCA9IHBheWxvYWQu
c2VnbWVudDsKLSAgICBjb25zb2xlLmFzc2VydChpZGVudGlmaWVyID09PSBzZWdtZW50LmlkKTsK
KyAgICAgICAgdmFyIHNlZ21lbnQgPSBwYXlsb2FkLnNlZ21lbnQ7CisgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KGlkZW50aWZpZXIgPT09IHNlZ21lbnQuaWQpOwogCi0gICAgdGhpcy5pZGVudGlmaWVy
ID0gaWRlbnRpZmllcjsKLSAgICB0aGlzLl90aW1lc3RhbXAgPSBzZWdtZW50LnRpbWVzdGFtcDsK
KyAgICAgICAgdGhpcy5pZGVudGlmaWVyID0gaWRlbnRpZmllcjsKKyAgICAgICAgdGhpcy5fdGlt
ZXN0YW1wID0gc2VnbWVudC50aW1lc3RhbXA7CiAKLSAgICB0aGlzLl9xdWV1ZXMgPSBzZWdtZW50
LnF1ZXVlczsKLX07CisgICAgICAgIHRoaXMuX3F1ZXVlcyA9IHNlZ21lbnQucXVldWVzOworICAg
IH0KIAotV2ViSW5zcGVjdG9yLlJlcGxheVNlc3Npb25TZWdtZW50LnByb3RvdHlwZSA9IHsKLSAg
ICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlJlcGxheVNlc3Npb25TZWdtZW50LAotICAgIF9f
cHJvdG9fXzogV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGUsCisgICAgLy8gUHVibGljCiAK
ICAgICBnZXQgaXNDb21wbGV0ZSgpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Jlc291cmNlLmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Jlc291cmNlLmpzCmluZGV4IDIxOWY2NDAuLjM4
ODdmNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01v
ZGVscy9SZXNvdXJjZS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Nb2RlbHMvUmVzb3VyY2UuanMKQEAgLTIzLDIxMSArMjMsMTM4IEBACiAgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlJlc291cmNlID0gZnVu
Y3Rpb24odXJsLCBtaW1lVHlwZSwgdHlwZSwgbG9hZGVySWRlbnRpZmllciwgcmVxdWVzdElkZW50
aWZpZXIsIHJlcXVlc3RNZXRob2QsIHJlcXVlc3RIZWFkZXJzLCByZXF1ZXN0RGF0YSwgcmVxdWVz
dFNlbnRUaW1lc3RhbXAsIGluaXRpYXRvclNvdXJjZUNvZGVMb2NhdGlvbikKK1dlYkluc3BlY3Rv
ci5SZXNvdXJjZSA9IGNsYXNzIFJlc291cmNlIGV4dGVuZHMgV2ViSW5zcGVjdG9yLlNvdXJjZUNv
ZGUKIHsKLSAgICBXZWJJbnNwZWN0b3IuU291cmNlQ29kZS5jYWxsKHRoaXMpOworICAgIGNvbnN0
cnVjdG9yKHVybCwgbWltZVR5cGUsIHR5cGUsIGxvYWRlcklkZW50aWZpZXIsIHJlcXVlc3RJZGVu
dGlmaWVyLCByZXF1ZXN0TWV0aG9kLCByZXF1ZXN0SGVhZGVycywgcmVxdWVzdERhdGEsIHJlcXVl
c3RTZW50VGltZXN0YW1wLCBpbml0aWF0b3JTb3VyY2VDb2RlTG9jYXRpb24pCisgICAgeworICAg
ICAgICBzdXBlcigpOworCisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHVybCk7CisKKyAgICAgICAg
aWYgKHR5cGUgaW4gV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUpCisgICAgICAgICAgICB0eXBl
ID0gV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGVbdHlwZV07CisKKyAgICAgICAgdGhpcy5fdXJs
ID0gdXJsOworICAgICAgICB0aGlzLl9taW1lVHlwZSA9IG1pbWVUeXBlOworICAgICAgICB0aGlz
Ll90eXBlID0gdHlwZSB8fCBXZWJJbnNwZWN0b3IuUmVzb3VyY2UudHlwZUZyb21NSU1FVHlwZSht
aW1lVHlwZSk7CisgICAgICAgIHRoaXMuX2xvYWRlcklkZW50aWZpZXIgPSBsb2FkZXJJZGVudGlm
aWVyIHx8IG51bGw7CisgICAgICAgIHRoaXMuX3JlcXVlc3RJZGVudGlmaWVyID0gcmVxdWVzdElk
ZW50aWZpZXIgfHwgbnVsbDsKKyAgICAgICAgdGhpcy5fcmVxdWVzdE1ldGhvZCA9IHJlcXVlc3RN
ZXRob2QgfHwgbnVsbDsKKyAgICAgICAgdGhpcy5fcmVxdWVzdERhdGEgPSByZXF1ZXN0RGF0YSB8
fCBudWxsOworICAgICAgICB0aGlzLl9yZXF1ZXN0SGVhZGVycyA9IHJlcXVlc3RIZWFkZXJzIHx8
IHt9OworICAgICAgICB0aGlzLl9yZXNwb25zZUhlYWRlcnMgPSB7fTsKKyAgICAgICAgdGhpcy5f
cGFyZW50RnJhbWUgPSBudWxsOworICAgICAgICB0aGlzLl9pbml0aWF0b3JTb3VyY2VDb2RlTG9j
YXRpb24gPSBpbml0aWF0b3JTb3VyY2VDb2RlTG9jYXRpb24gfHwgbnVsbDsKKyAgICAgICAgdGhp
cy5fcmVxdWVzdFNlbnRUaW1lc3RhbXAgPSByZXF1ZXN0U2VudFRpbWVzdGFtcCB8fCBOYU47Cisg
ICAgICAgIHRoaXMuX3Jlc3BvbnNlUmVjZWl2ZWRUaW1lc3RhbXAgPSBOYU47CisgICAgICAgIHRo
aXMuX2xhc3RSZWRpcmVjdFJlY2VpdmVkVGltZXN0YW1wID0gTmFOOworICAgICAgICB0aGlzLl9s
YXN0RGF0YVJlY2VpdmVkVGltZXN0YW1wID0gTmFOOworICAgICAgICB0aGlzLl9maW5pc2hlZE9y
RmFpbGVkVGltZXN0YW1wID0gTmFOOworICAgICAgICB0aGlzLl9zaXplID0gTmFOOworICAgICAg
ICB0aGlzLl90cmFuc2ZlclNpemUgPSBOYU47CisgICAgICAgIHRoaXMuX2NhY2hlZCA9IGZhbHNl
OworICAgIH0KKworICAgIC8vIFN0YXRpYworCisgICAgc3RhdGljIHR5cGVGcm9tTUlNRVR5cGUo
bWltZVR5cGUpCisgICAgeworICAgICAgICBpZiAoIW1pbWVUeXBlKQorICAgICAgICAgICAgcmV0
dXJuIFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLk90aGVyOworCisgICAgICAgIG1pbWVUeXBl
ID0gcGFyc2VNSU1FVHlwZShtaW1lVHlwZSkudHlwZTsKKworICAgICAgICBpZiAobWltZVR5cGUg
aW4gV2ViSW5zcGVjdG9yLlJlc291cmNlLl9taW1lVHlwZU1hcCkKKyAgICAgICAgICAgIHJldHVy
biBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuX21pbWVUeXBlTWFwW21pbWVUeXBlXTsKKworICAgICAg
ICBpZiAobWltZVR5cGUuc3RhcnRzV2l0aCgiaW1hZ2UvIikpCisgICAgICAgICAgICByZXR1cm4g
V2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuSW1hZ2U7CisKKyAgICAgICAgaWYgKG1pbWVUeXBl
LnN0YXJ0c1dpdGgoImZvbnQvIikpCisgICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlJl
c291cmNlLlR5cGUuRm9udDsKIAotICAgIGNvbnNvbGUuYXNzZXJ0KHVybCk7Ci0KLSAgICBpZiAo
dHlwZSBpbiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZSkKLSAgICAgICAgdHlwZSA9IFdlYklu
c3BlY3Rvci5SZXNvdXJjZS5UeXBlW3R5cGVdOwotCi0gICAgdGhpcy5fdXJsID0gdXJsOwotICAg
IHRoaXMuX21pbWVUeXBlID0gbWltZVR5cGU7Ci0gICAgdGhpcy5fdHlwZSA9IHR5cGUgfHwgV2Vi
SW5zcGVjdG9yLlJlc291cmNlLnR5cGVGcm9tTUlNRVR5cGUobWltZVR5cGUpOwotICAgIHRoaXMu
X2xvYWRlcklkZW50aWZpZXIgPSBsb2FkZXJJZGVudGlmaWVyIHx8IG51bGw7Ci0gICAgdGhpcy5f
cmVxdWVzdElkZW50aWZpZXIgPSByZXF1ZXN0SWRlbnRpZmllciB8fCBudWxsOwotICAgIHRoaXMu
X3JlcXVlc3RNZXRob2QgPSByZXF1ZXN0TWV0aG9kIHx8IG51bGw7Ci0gICAgdGhpcy5fcmVxdWVz
dERhdGEgPSByZXF1ZXN0RGF0YSB8fCBudWxsOwotICAgIHRoaXMuX3JlcXVlc3RIZWFkZXJzID0g
cmVxdWVzdEhlYWRlcnMgfHwge307Ci0gICAgdGhpcy5fcmVzcG9uc2VIZWFkZXJzID0ge307Ci0g
ICAgdGhpcy5fcGFyZW50RnJhbWUgPSBudWxsOwotICAgIHRoaXMuX2luaXRpYXRvclNvdXJjZUNv
ZGVMb2NhdGlvbiA9IGluaXRpYXRvclNvdXJjZUNvZGVMb2NhdGlvbiB8fCBudWxsOwotICAgIHRo
aXMuX3JlcXVlc3RTZW50VGltZXN0YW1wID0gcmVxdWVzdFNlbnRUaW1lc3RhbXAgfHwgTmFOOwot
ICAgIHRoaXMuX3Jlc3BvbnNlUmVjZWl2ZWRUaW1lc3RhbXAgPSBOYU47Ci0gICAgdGhpcy5fbGFz
dFJlZGlyZWN0UmVjZWl2ZWRUaW1lc3RhbXAgPSBOYU47Ci0gICAgdGhpcy5fbGFzdERhdGFSZWNl
aXZlZFRpbWVzdGFtcCA9IE5hTjsKLSAgICB0aGlzLl9maW5pc2hlZE9yRmFpbGVkVGltZXN0YW1w
ID0gTmFOOwotICAgIHRoaXMuX3NpemUgPSBOYU47Ci0gICAgdGhpcy5fdHJhbnNmZXJTaXplID0g
TmFOOwotICAgIHRoaXMuX2NhY2hlZCA9IGZhbHNlOwotfTsKLQotV2ViSW5zcGVjdG9yLk9iamVj
dC5hZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhXZWJJbnNwZWN0b3IuUmVzb3VyY2UpOwotCi1XZWJJ
bnNwZWN0b3IuUmVzb3VyY2UuVHlwZUlkZW50aWZpZXIgPSAicmVzb3VyY2UiOwotV2ViSW5zcGVj
dG9yLlJlc291cmNlLlVSTENvb2tpZUtleSA9ICJyZXNvdXJjZS11cmwiOwotV2ViSW5zcGVjdG9y
LlJlc291cmNlLk1haW5SZXNvdXJjZUNvb2tpZUtleSA9ICJyZXNvdXJjZS1pcy1tYWluLXJlc291
cmNlIjsKLQotV2ViSW5zcGVjdG9yLlJlc291cmNlLkV2ZW50ID0gewotICAgIFVSTERpZENoYW5n
ZTogInJlc291cmNlLXVybC1kaWQtY2hhbmdlIiwKLSAgICBNSU1FVHlwZURpZENoYW5nZTogInJl
c291cmNlLW1pbWUtdHlwZS1kaWQtY2hhbmdlIiwKLSAgICBUeXBlRGlkQ2hhbmdlOiAicmVzb3Vy
Y2UtdHlwZS1kaWQtY2hhbmdlIiwKLSAgICBSZXF1ZXN0SGVhZGVyc0RpZENoYW5nZTogInJlc291
cmNlLXJlcXVlc3QtaGVhZGVycy1kaWQtY2hhbmdlIiwKLSAgICBSZXNwb25zZVJlY2VpdmVkOiAi
cmVzb3VyY2UtcmVzcG9uc2UtcmVjZWl2ZWQiLAotICAgIExvYWRpbmdEaWRGaW5pc2g6ICJyZXNv
dXJjZS1sb2FkaW5nLWRpZC1maW5pc2giLAotICAgIExvYWRpbmdEaWRGYWlsOiAicmVzb3VyY2Ut
bG9hZGluZy1kaWQtZmFpbCIsCi0gICAgVGltZXN0YW1wc0RpZENoYW5nZTogInJlc291cmNlLXRp
bWVzdGFtcHMtZGlkLWNoYW5nZSIsCi0gICAgU2l6ZURpZENoYW5nZTogInJlc291cmNlLXNpemUt
ZGlkLWNoYW5nZSIsCi0gICAgVHJhbnNmZXJTaXplRGlkQ2hhbmdlOiAicmVzb3VyY2UtdHJhbnNm
ZXItc2l6ZS1kaWQtY2hhbmdlIiwKLSAgICBDYWNoZVN0YXR1c0RpZENoYW5nZTogInJlc291cmNl
LWNhY2hlZC1kaWQtY2hhbmdlIgotfTsKLQotLy8gS2VlcCB0aGVzZSBpbiBzeW5jIHdpdGggdGhl
ICJSZXNvdXJjZVR5cGUiIGVudW0gZGVmaW5lZCBieSB0aGUgIlBhZ2UiIGRvbWFpbi4KLVdlYklu
c3BlY3Rvci5SZXNvdXJjZS5UeXBlID0gewotICAgIERvY3VtZW50OiAicmVzb3VyY2UtdHlwZS1k
b2N1bWVudCIsCi0gICAgU3R5bGVzaGVldDogInJlc291cmNlLXR5cGUtc3R5bGVzaGVldCIsCi0g
ICAgSW1hZ2U6ICJyZXNvdXJjZS10eXBlLWltYWdlIiwKLSAgICBGb250OiAicmVzb3VyY2UtdHlw
ZS1mb250IiwKLSAgICBTY3JpcHQ6ICJyZXNvdXJjZS10eXBlLXNjcmlwdCIsCi0gICAgWEhSOiAi
cmVzb3VyY2UtdHlwZS14aHIiLAotICAgIFdlYlNvY2tldDogInJlc291cmNlLXR5cGUtd2Vic29j
a2V0IiwKLSAgICBPdGhlcjogInJlc291cmNlLXR5cGUtb3RoZXIiCi19OwotCi0vLyBUaGlzIE1J
TUUgVHlwZSBtYXAgaXMgcHJpdmF0ZSwgdXNlIFdlYkluc3BlY3Rvci5SZXNvdXJjZS50eXBlRnJv
bU1JTUVUeXBlKCkuCi1XZWJJbnNwZWN0b3IuUmVzb3VyY2UuX21pbWVUeXBlTWFwID0gewotICAg
ICJ0ZXh0L2h0bWwiOiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5Eb2N1bWVudCwKLSAgICAi
dGV4dC94bWwiOiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5Eb2N1bWVudCwKLSAgICAidGV4
dC9wbGFpbiI6IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLkRvY3VtZW50LAotICAgICJhcHBs
aWNhdGlvbi94aHRtbCt4bWwiOiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5Eb2N1bWVudCwK
LSAgICAiaW1hZ2Uvc3ZnK3htbCI6IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLkRvY3VtZW50
LAotCi0gICAgInRleHQvY3NzIjogV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuU3R5bGVzaGVl
dCwKLSAgICAidGV4dC94c2wiOiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5TdHlsZXNoZWV0
LAotICAgICJ0ZXh0L3gtbGVzcyI6IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLlN0eWxlc2hl
ZXQsCi0gICAgInRleHQveC1zYXNzIjogV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuU3R5bGVz
aGVldCwKLSAgICAidGV4dC94LXNjc3MiOiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5TdHls
ZXNoZWV0LAotCi0gICAgImFwcGxpY2F0aW9uL3BkZiI6IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5U
eXBlLkltYWdlLAotCi0gICAgImFwcGxpY2F0aW9uL3gtZm9udC10eXBlMSI6IFdlYkluc3BlY3Rv
ci5SZXNvdXJjZS5UeXBlLkZvbnQsCi0gICAgImFwcGxpY2F0aW9uL3gtZm9udC10dGYiOiBXZWJJ
bnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5Gb250LAotICAgICJhcHBsaWNhdGlvbi94LWZvbnQtd29m
ZiI6IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLkZvbnQsCi0gICAgImFwcGxpY2F0aW9uL3gt
dHJ1ZXR5cGUtZm9udCI6IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLkZvbnQsCi0KLSAgICAi
dGV4dC9qYXZhc2NyaXB0IjogV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuU2NyaXB0LAotICAg
ICJ0ZXh0L2VjbWFzY3JpcHQiOiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5TY3JpcHQsCi0g
ICAgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiOiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5T
Y3JpcHQsCi0gICAgImFwcGxpY2F0aW9uL2VjbWFzY3JpcHQiOiBXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2UuVHlwZS5TY3JpcHQsCi0gICAgImFwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCI6IFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZS5UeXBlLlNjcmlwdCwKLSAgICAiYXBwbGljYXRpb24vanNvbiI6IFdlYklu
c3BlY3Rvci5SZXNvdXJjZS5UeXBlLlNjcmlwdCwKLSAgICAiYXBwbGljYXRpb24veC1qc29uIjog
V2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuU2NyaXB0LAotICAgICJ0ZXh0L3gtamF2YXNjcmlw
dCI6IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLlNjcmlwdCwKLSAgICAidGV4dC94LWpzb24i
OiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5TY3JpcHQsCi0gICAgInRleHQvamF2YXNjcmlw
dDEuMSI6IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLlNjcmlwdCwKLSAgICAidGV4dC9qYXZh
c2NyaXB0MS4yIjogV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuU2NyaXB0LAotICAgICJ0ZXh0
L2phdmFzY3JpcHQxLjMiOiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5TY3JpcHQsCi0gICAg
InRleHQvanNjcmlwdCI6IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLlNjcmlwdCwKLSAgICAi
dGV4dC9saXZlc2NyaXB0IjogV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuU2NyaXB0LAotICAg
ICJ0ZXh0L3gtbGl2ZXNjcmlwdCI6IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLlNjcmlwdCwK
LSAgICAidGV4dC90eXBlc2NyaXB0IjogV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuU2NyaXB0
LAotICAgICJ0ZXh0L3gtY2xvanVyZSI6IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLlNjcmlw
dCwKLSAgICAidGV4dC94LWNvZmZlZXNjcmlwdCI6IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBl
LlNjcmlwdAotfTsKLQotV2ViSW5zcGVjdG9yLlJlc291cmNlLnR5cGVGcm9tTUlNRVR5cGUgPSBm
dW5jdGlvbihtaW1lVHlwZSkKLXsKLSAgICBpZiAoIW1pbWVUeXBlKQogICAgICAgICByZXR1cm4g
V2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuT3RoZXI7Ci0KLSAgICBtaW1lVHlwZSA9IHBhcnNl
TUlNRVR5cGUobWltZVR5cGUpLnR5cGU7Ci0KLSAgICBpZiAobWltZVR5cGUgaW4gV2ViSW5zcGVj
dG9yLlJlc291cmNlLl9taW1lVHlwZU1hcCkKLSAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5S
ZXNvdXJjZS5fbWltZVR5cGVNYXBbbWltZVR5cGVdOwotCi0gICAgaWYgKG1pbWVUeXBlLnN0YXJ0
c1dpdGgoImltYWdlLyIpKQotICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5
cGUuSW1hZ2U7Ci0KLSAgICBpZiAobWltZVR5cGUuc3RhcnRzV2l0aCgiZm9udC8iKSkKLSAgICAg
ICAgcmV0dXJuIFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLkZvbnQ7Ci0KLSAgICByZXR1cm4g
V2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuT3RoZXI7Ci19OwotCi1XZWJJbnNwZWN0b3IuUmVz
b3VyY2UuZGlzcGxheU5hbWVGb3JUeXBlID0gZnVuY3Rpb24odHlwZSwgcGx1cmFsKQotewotICAg
IHN3aXRjaCh0eXBlKSB7Ci0gICAgY2FzZSBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5Eb2N1
bWVudDoKLSAgICAgICAgaWYgKHBsdXJhbCkKLSAgICAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIkRvY3VtZW50cyIpOwotICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJEb2N1bWVudCIpOwotICAgIGNhc2UgV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUu
U3R5bGVzaGVldDoKLSAgICAgICAgaWYgKHBsdXJhbCkKLSAgICAgICAgICAgIHJldHVybiBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIlN0eWxlc2hlZXRzIik7Ci0gICAgICAgIHJldHVybiBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIlN0eWxlc2hlZXQiKTsKLSAgICBjYXNlIFdlYkluc3BlY3Rvci5SZXNv
dXJjZS5UeXBlLkltYWdlOgotICAgICAgICBpZiAocGx1cmFsKQotICAgICAgICAgICAgcmV0dXJu
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiSW1hZ2VzIik7Ci0gICAgICAgIHJldHVybiBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIkltYWdlIik7Ci0gICAgY2FzZSBXZWJJbnNwZWN0b3IuUmVzb3VyY2Uu
VHlwZS5Gb250OgotICAgICAgICBpZiAocGx1cmFsKQotICAgICAgICAgICAgcmV0dXJuIFdlYklu
c3BlY3Rvci5VSVN0cmluZygiRm9udHMiKTsKLSAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5V
SVN0cmluZygiRm9udCIpOwotICAgIGNhc2UgV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuU2Ny
aXB0OgotICAgICAgICBpZiAocGx1cmFsKQotICAgICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiU2NyaXB0cyIpOwotICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJTY3JpcHQiKTsKLSAgICBjYXNlIFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLlhIUjoK
LSAgICAgICAgaWYgKHBsdXJhbCkKLSAgICAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIlhIUnMiKTsKLSAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5VSVN0cmluZygiWEhS
Iik7Ci0gICAgY2FzZSBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5XZWJTb2NrZXQ6Ci0gICAg
ICAgIGlmIChwbHVyYWwpCi0gICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJTb2NrZXRzIik7Ci0gICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNvY2tl
dCIpOwotICAgIGNhc2UgV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuT3RoZXI6Ci0gICAgICAg
IHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk90aGVyIik7Ci0gICAgZGVmYXVsdDoKLSAg
ICAgICAgY29uc29sZS5lcnJvcigiVW5rbm93biByZXNvdXJjZSB0eXBlOiAiLCB0eXBlKTsKLSAg
ICAgICAgcmV0dXJuIG51bGw7CiAgICAgfQotfTsKIAotV2ViSW5zcGVjdG9yLlJlc291cmNlLnBy
b3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlJlc291cmNlLAotICAg
IF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGUucHJvdG90eXBlLAorICAgIHN0YXRp
YyBkaXNwbGF5TmFtZUZvclR5cGUodHlwZSwgcGx1cmFsKQorICAgIHsKKyAgICAgICAgc3dpdGNo
KHR5cGUpIHsKKyAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5Eb2N1bWVu
dDoKKyAgICAgICAgICAgIGlmIChwbHVyYWwpCisgICAgICAgICAgICAgICAgcmV0dXJuIFdlYklu
c3BlY3Rvci5VSVN0cmluZygiRG9jdW1lbnRzIik7CisgICAgICAgICAgICByZXR1cm4gV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJEb2N1bWVudCIpOworICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5S
ZXNvdXJjZS5UeXBlLlN0eWxlc2hlZXQ6CisgICAgICAgICAgICBpZiAocGx1cmFsKQorICAgICAg
ICAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0eWxlc2hlZXRzIik7Cisg
ICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdHlsZXNoZWV0Iik7Cisg
ICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuSW1hZ2U6CisgICAgICAgICAg
ICBpZiAocGx1cmFsKQorICAgICAgICAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIkltYWdlcyIpOworICAgICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5VSVN0cmluZygi
SW1hZ2UiKTsKKyAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5Gb250Ogor
ICAgICAgICAgICAgaWYgKHBsdXJhbCkKKyAgICAgICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJGb250cyIpOworICAgICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5V
SVN0cmluZygiRm9udCIpOworICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBl
LlNjcmlwdDoKKyAgICAgICAgICAgIGlmIChwbHVyYWwpCisgICAgICAgICAgICAgICAgcmV0dXJu
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2NyaXB0cyIpOworICAgICAgICAgICAgcmV0dXJuIFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiU2NyaXB0Iik7CisgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9y
LlJlc291cmNlLlR5cGUuWEhSOgorICAgICAgICAgICAgaWYgKHBsdXJhbCkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJYSFJzIik7CisgICAgICAgICAgICBy
ZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJYSFIiKTsKKyAgICAgICAgY2FzZSBXZWJJbnNw
ZWN0b3IuUmVzb3VyY2UuVHlwZS5XZWJTb2NrZXQ6CisgICAgICAgICAgICBpZiAocGx1cmFsKQor
ICAgICAgICAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNvY2tldHMiKTsK
KyAgICAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNvY2tldCIpOworICAg
ICAgICBjYXNlIFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLk90aGVyOgorICAgICAgICAgICAg
cmV0dXJuIFdlYkluc3BlY3Rvci5VSVN0cmluZygiT3RoZXIiKTsKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIlVua25vd24gcmVzb3VyY2UgdHlwZTogIiwgdHlw
ZSk7CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorICAgIH0KIAogICAgIC8v
IFB1YmxpYwogCiAgICAgZ2V0IHVybCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fdXJs
OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHVybENvbXBvbmVudHMoKQogICAgIHsKICAgICAg
ICAgaWYgKCF0aGlzLl91cmxDb21wb25lbnRzKQogICAgICAgICAgICAgdGhpcy5fdXJsQ29tcG9u
ZW50cyA9IHBhcnNlVVJMKHRoaXMuX3VybCk7CiAgICAgICAgIHJldHVybiB0aGlzLl91cmxDb21w
b25lbnRzOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGRpc3BsYXlOYW1lKCkKICAgICB7CiAg
ICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuZGlzcGxheU5hbWVGb3JVUkwodGhpcy5fdXJsLCB0
aGlzLnVybENvbXBvbmVudHMpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGluaXRpYXRvclNv
dXJjZUNvZGVMb2NhdGlvbigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5faW5pdGlhdG9y
U291cmNlQ29kZUxvY2F0aW9uOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHR5cGUoKQogICAg
IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3R5cGU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQg
bWltZVR5cGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX21pbWVUeXBlOwotICAgIH0s
CisgICAgfQogCiAgICAgZ2V0IG1pbWVUeXBlQ29tcG9uZW50cygpCiAgICAgewogICAgICAgICBp
ZiAoIXRoaXMuX21pbWVUeXBlQ29tcG9uZW50cykKICAgICAgICAgICAgIHRoaXMuX21pbWVUeXBl
Q29tcG9uZW50cyA9IHBhcnNlTUlNRVR5cGUodGhpcy5fbWltZVR5cGUpOwogICAgICAgICByZXR1
cm4gdGhpcy5fbWltZVR5cGVDb21wb25lbnRzOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHN5
bnRoZXRpY01JTUVUeXBlKCkKICAgICB7CkBAIC0yNTIsOSArMTc5LDkgQEAgV2ViSW5zcGVjdG9y
LlJlc291cmNlLnByb3RvdHlwZSA9IHsKIAogICAgICAgICAvLyBSZXR1cm4gdGhlIGFjdHVhbCBN
SU1FLXR5cGUgc2luY2Ugd2UgZG9uJ3QgaGF2ZSBhIGJldHRlciBzeW50aGVzaXplZCBvbmUgdG8g
cmV0dXJuLgogICAgICAgICByZXR1cm4gdGhpcy5fbWltZVR5cGU7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBjcmVhdGVPYmplY3RVUkw6IGZ1bmN0aW9uKCkKKyAgICBjcmVhdGVPYmplY3RVUkwoKQog
ICAgIHsKICAgICAgICAgLy8gSWYgY29udGVudCBpcyBub3QgYXZhaWxhYmxlLCBmYWxsYmFjayB0
byB1c2luZyBvcmlnaW5hbCBVUkwuCiAgICAgICAgIC8vIFRoZSBjbGllbnQgbWF5IHRyeSB0byBy
ZXZva2UgaXQsIGJ1dCBub3RoaW5nIHdpbGwgaGFwcGVuLgpAQCAtMjY1LDEzNyArMTkyLDEzNyBA
QCBXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlID0gewogICAgICAgICBjb25zb2xlLmFz
c2VydChjb250ZW50IGluc3RhbmNlb2YgQmxvYiwgY29udGVudCk7CiAKICAgICAgICAgcmV0dXJu
IFVSTC5jcmVhdGVPYmplY3RVUkwoY29udGVudCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBpc01h
aW5SZXNvdXJjZTogZnVuY3Rpb24oKQorICAgIGlzTWFpblJlc291cmNlKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiB0aGlzLl9wYXJlbnRGcmFtZSA/IHRoaXMuX3BhcmVudEZyYW1lLm1haW5SZXNv
dXJjZSA9PT0gdGhpcyA6IGZhbHNlOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHBhcmVudEZy
YW1lKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9wYXJlbnRGcmFtZTsKLSAgICB9LAor
ICAgIH0KIAogICAgIGdldCBsb2FkZXJJZGVudGlmaWVyKCkKICAgICB7CiAgICAgICAgIHJldHVy
biB0aGlzLl9sb2FkZXJJZGVudGlmaWVyOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHJlcXVl
c3RJZGVudGlmaWVyKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9yZXF1ZXN0SWRlbnRp
ZmllcjsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBmaW5pc2hlZCgpCiAgICAgewogICAgICAg
ICByZXR1cm4gdGhpcy5fZmluaXNoZWQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgZmFpbGVk
KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9mYWlsZWQ7Ci0gICAgfSwKKyAgICB9CiAK
ICAgICBnZXQgY2FuY2VsZWQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2NhbmNlbGVk
OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHJlcXVlc3RNZXRob2QoKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHRoaXMuX3JlcXVlc3RNZXRob2Q7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQg
cmVxdWVzdERhdGEoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3JlcXVlc3REYXRhOwot
ICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHJlcXVlc3REYXRhQ29udGVudFR5cGUoKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIHRoaXMuX3JlcXVlc3RIZWFkZXJzLnZhbHVlRm9yQ2FzZUluc2Vuc2l0
aXZlS2V5KCJDb250ZW50LVR5cGUiKSB8fCBudWxsOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0
IHJlcXVlc3RIZWFkZXJzKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9yZXF1ZXN0SGVh
ZGVyczsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCByZXNwb25zZUhlYWRlcnMoKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc3BvbnNlSGVhZGVyczsKLSAgICB9LAorICAgIH0KIAog
ICAgIGdldCByZXF1ZXN0U2VudFRpbWVzdGFtcCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhp
cy5fcmVxdWVzdFNlbnRUaW1lc3RhbXA7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgbGFzdFJl
ZGlyZWN0UmVjZWl2ZWRUaW1lc3RhbXAoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2xh
c3RSZWRpcmVjdFJlY2VpdmVkVGltZXN0YW1wOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHJl
c3BvbnNlUmVjZWl2ZWRUaW1lc3RhbXAoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3Jl
c3BvbnNlUmVjZWl2ZWRUaW1lc3RhbXA7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgbGFzdERh
dGFSZWNlaXZlZFRpbWVzdGFtcCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fbGFzdERh
dGFSZWNlaXZlZFRpbWVzdGFtcDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBmaW5pc2hlZE9y
RmFpbGVkVGltZXN0YW1wKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9maW5pc2hlZE9y
RmFpbGVkVGltZXN0YW1wOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGZpcnN0VGltZXN0YW1w
KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLnJlcXVlc3RTZW50VGltZXN0YW1wIHx8IHRo
aXMubGFzdFJlZGlyZWN0UmVjZWl2ZWRUaW1lc3RhbXAgfHwgdGhpcy5yZXNwb25zZVJlY2VpdmVk
VGltZXN0YW1wIHx8IHRoaXMubGFzdERhdGFSZWNlaXZlZFRpbWVzdGFtcCB8fCB0aGlzLmZpbmlz
aGVkT3JGYWlsZWRUaW1lc3RhbXA7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgbGFzdFRpbWVz
dGFtcCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5maW5pc2hlZE9yRmFpbGVkVGltZXN0
YW1wIHx8IHRoaXMubGFzdERhdGFSZWNlaXZlZFRpbWVzdGFtcCB8fCB0aGlzLnJlc3BvbnNlUmVj
ZWl2ZWRUaW1lc3RhbXAgfHwgdGhpcy5sYXN0UmVkaXJlY3RSZWNlaXZlZFRpbWVzdGFtcCB8fCB0
aGlzLnJlcXVlc3RTZW50VGltZXN0YW1wOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGR1cmF0
aW9uKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9maW5pc2hlZE9yRmFpbGVkVGltZXN0
YW1wIC0gdGhpcy5fcmVxdWVzdFNlbnRUaW1lc3RhbXA7Ci0gICAgfSwKKyAgICB9CiAKICAgICBn
ZXQgbGF0ZW5jeSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcmVzcG9uc2VSZWNlaXZl
ZFRpbWVzdGFtcCAtIHRoaXMuX3JlcXVlc3RTZW50VGltZXN0YW1wOwotICAgIH0sCisgICAgfQog
CiAgICAgZ2V0IHJlY2VpdmVEdXJhdGlvbigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5f
ZmluaXNoZWRPckZhaWxlZFRpbWVzdGFtcCAtIHRoaXMuX3Jlc3BvbnNlUmVjZWl2ZWRUaW1lc3Rh
bXA7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgY2FjaGVkKCkKICAgICB7CiAgICAgICAgIHJl
dHVybiB0aGlzLl9jYWNoZWQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc3RhdHVzQ29kZSgp
CiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc3RhdHVzQ29kZTsKLSAgICB9LAorICAgIH0K
IAogICAgIGdldCBzdGF0dXNUZXh0KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zdGF0
dXNUZXh0OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHNpemUoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHRoaXMuX3NpemU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgZW5jb2RlZFNpemUo
KQogICAgIHsKQEAgLTQxNCw3ICszNDEsNyBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90
eXBlID0gewogICAgICAgICAvLyBnZXQgYWN0dWFsIHRyYW5zZmVyIHNpemUgZnJvbSB0aGUgbmV0
d29yayBzdGFjay4KIAogICAgICAgICByZXR1cm4gTnVtYmVyKHRoaXMuX3Jlc3BvbnNlSGVhZGVy
cy52YWx1ZUZvckNhc2VJbnNlbnNpdGl2ZUtleSgiQ29udGVudC1MZW5ndGgiKSB8fCB0aGlzLl9z
aXplKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCB0cmFuc2ZlclNpemUoKQogICAgIHsKQEAg
LTQyNSwyMCArMzUyLDIwIEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAg
ICAgICAgICAgICByZXR1cm4gMDsKIAogICAgICAgICByZXR1cm4gdGhpcy5fcmVzcG9uc2VIZWFk
ZXJzU2l6ZSArIHRoaXMuZW5jb2RlZFNpemU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgY29t
cHJlc3NlZCgpCiAgICAgewogICAgICAgICB2YXIgY29udGVudEVuY29kaW5nID0gdGhpcy5fcmVz
cG9uc2VIZWFkZXJzLnZhbHVlRm9yQ2FzZUluc2Vuc2l0aXZlS2V5KCJDb250ZW50LUVuY29kaW5n
Iik7CiAgICAgICAgIHJldHVybiBjb250ZW50RW5jb2RpbmcgJiYgL1xiKD86Z3ppcHxkZWZsYXRl
KVxiLy50ZXN0KGNvbnRlbnRFbmNvZGluZyk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc2Ny
aXB0cygpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc2NyaXB0cyB8fCBbXTsKLSAgICB9
LAorICAgIH0KIAotICAgIHNjcmlwdEZvckxvY2F0aW9uOiBmdW5jdGlvbihzb3VyY2VDb2RlTG9j
YXRpb24pCisgICAgc2NyaXB0Rm9yTG9jYXRpb24oc291cmNlQ29kZUxvY2F0aW9uKQogICAgIHsK
ICAgICAgICAgY29uc29sZS5hc3NlcnQoISh0aGlzIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlNv
dXJjZU1hcFJlc291cmNlKSk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHNvdXJjZUNvZGVMb2Nh
dGlvbi5zb3VyY2VDb2RlID09PSB0aGlzLCAiU291cmNlQ29kZUxvY2F0aW9uIG11c3QgYmUgaW4g
dGhpcyBSZXNvdXJjZSIpOwpAQCAtNDU5LDkgKzM4Niw5IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJj
ZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gbnVsbDsKLSAgICB9
LAorICAgIH0KIAotICAgIHVwZGF0ZUZvclJlZGlyZWN0UmVzcG9uc2U6IGZ1bmN0aW9uKHVybCwg
cmVxdWVzdEhlYWRlcnMsIGVsYXBzZWRUaW1lKQorICAgIHVwZGF0ZUZvclJlZGlyZWN0UmVzcG9u
c2UodXJsLCByZXF1ZXN0SGVhZGVycywgZWxhcHNlZFRpbWUpCiAgICAgewogICAgICAgICBjb25z
b2xlLmFzc2VydCghdGhpcy5fZmluaXNoZWQpOwogICAgICAgICBjb25zb2xlLmFzc2VydCghdGhp
cy5fZmFpbGVkKTsKQEAgLTQ4Miw5ICs0MDksOSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJv
dG90eXBlID0gewogCiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYklu
c3BlY3Rvci5SZXNvdXJjZS5FdmVudC5SZXF1ZXN0SGVhZGVyc0RpZENoYW5nZSk7CiAgICAgICAg
IHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5SZXNvdXJjZS5FdmVu
dC5UaW1lc3RhbXBzRGlkQ2hhbmdlKTsKLSAgICB9LAorICAgIH0KIAotICAgIHVwZGF0ZUZvclJl
c3BvbnNlOiBmdW5jdGlvbih1cmwsIG1pbWVUeXBlLCB0eXBlLCByZXNwb25zZUhlYWRlcnMsIHN0
YXR1c0NvZGUsIHN0YXR1c1RleHQsIGVsYXBzZWRUaW1lKQorICAgIHVwZGF0ZUZvclJlc3BvbnNl
KHVybCwgbWltZVR5cGUsIHR5cGUsIHJlc3BvbnNlSGVhZGVycywgc3RhdHVzQ29kZSwgc3RhdHVz
VGV4dCwgZWxhcHNlZFRpbWUpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5f
ZmluaXNoZWQpOwogICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fZmFpbGVkKTsKQEAgLTUz
OSwxNCArNDY2LDE0IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAKICAg
ICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlJlc291cmNl
LkV2ZW50LlJlc3BvbnNlUmVjZWl2ZWQpOwogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xp
c3RlbmVycyhXZWJJbnNwZWN0b3IuUmVzb3VyY2UuRXZlbnQuVGltZXN0YW1wc0RpZENoYW5nZSk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjYW5SZXF1ZXN0Q29udGVudDogZnVuY3Rpb24oKQorICAg
IGNhblJlcXVlc3RDb250ZW50KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9maW5pc2hl
ZDsKLSAgICB9LAorICAgIH0KIAotICAgIHJlcXVlc3RDb250ZW50RnJvbUJhY2tlbmQ6IGZ1bmN0
aW9uKCkKKyAgICByZXF1ZXN0Q29udGVudEZyb21CYWNrZW5kKCkKICAgICB7CiAgICAgICAgIC8v
IElmIHdlIGhhdmUgdGhlIHJlcXVlc3RJZGVudGlmaWVyIHdlIGNhbiBnZXQgdGhlIGFjdHVhbCBy
ZXNwb25zZSBmb3IgdGhpcyBzcGVjaWZpYyByZXNvdXJjZS4KICAgICAgICAgLy8gT3RoZXJ3aXNl
IHRoZSBjb250ZW50IHdpbGwgYmUgY2FjaGVkIHJlc291cmNlIGRhdGEsIHdoaWNoIG1pZ2h0IG5v
dCBleGlzdCBhbnltb3JlLgpAQCAtNTU4LDkgKzQ4NSw5IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJj
ZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm4gUGFnZUFnZW50LmdldFJlc291cmNl
Q29udGVudC5wcm9taXNlKHRoaXMuX3BhcmVudEZyYW1lLmlkLCB0aGlzLl91cmwpOwogCiAgICAg
ICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoIkNvbnRlbnQgcmVxdWVzdCBmYWls
ZWQuIikpOwotICAgIH0sCisgICAgfQogCi0gICAgaW5jcmVhc2VTaXplOiBmdW5jdGlvbihkYXRh
TGVuZ3RoLCBlbGFwc2VkVGltZSkKKyAgICBpbmNyZWFzZVNpemUoZGF0YUxlbmd0aCwgZWxhcHNl
ZFRpbWUpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChkYXRhTGVuZ3RoID49IDApOwog
CkBAIC01NzgsOSArNTA1LDkgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgLy8gVGhlIHRyYW5zZmVyU2l6ZSBpcyBiYXNlZCBvZmYgb2Ygc2l6ZSB3aGVuIHN0
YXR1cyBpcyBub3QgMzA0IG9yIENvbnRlbnQtTGVuZ3RoIGlzIG1pc3NpbmcuCiAgICAgICAgIGlm
IChpc05hTih0aGlzLl90cmFuc2ZlclNpemUpICYmIHRoaXMuX3N0YXR1c0NvZGUgIT09IDMwNCAm
JiAhdGhpcy5fcmVzcG9uc2VIZWFkZXJzLnZhbHVlRm9yQ2FzZUluc2Vuc2l0aXZlS2V5KCJDb250
ZW50LUxlbmd0aCIpKQogICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMo
V2ViSW5zcGVjdG9yLlJlc291cmNlLkV2ZW50LlRyYW5zZmVyU2l6ZURpZENoYW5nZSk7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBpbmNyZWFzZVRyYW5zZmVyU2l6ZTogZnVuY3Rpb24oZW5jb2RlZERh
dGFMZW5ndGgpCisgICAgaW5jcmVhc2VUcmFuc2ZlclNpemUoZW5jb2RlZERhdGFMZW5ndGgpCiAg
ICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChlbmNvZGVkRGF0YUxlbmd0aCA+PSAwKTsKIApA
QCAtNTg5LDkgKzUxNiw5IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIHRoaXMuX3RyYW5zZmVyU2l6ZSArPSBlbmNvZGVkRGF0YUxlbmd0aDsKIAogICAgICAg
ICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuUmVzb3VyY2UuRXZl
bnQuVHJhbnNmZXJTaXplRGlkQ2hhbmdlKTsKLSAgICB9LAorICAgIH0KIAotICAgIG1hcmtBc0Nh
Y2hlZDogZnVuY3Rpb24oKQorICAgIG1hcmtBc0NhY2hlZCgpCiAgICAgewogICAgICAgICB0aGlz
Ll9jYWNoZWQgPSB0cnVlOwogCkBAIC02MDAsOSArNTI3LDkgQEAgV2ViSW5zcGVjdG9yLlJlc291
cmNlLnByb3RvdHlwZSA9IHsKICAgICAgICAgLy8gVGhlIHRyYW5zZmVyU2l6ZSBpcyBzdGFydHMg
cmV0dXJuaW5nIDAgd2hlbiBjYWNoZWQgaXMgdHJ1ZSwgdW5sZXNzIHN0YXR1cyBpcyAzMDQuCiAg
ICAgICAgIGlmICh0aGlzLl9zdGF0dXNDb2RlICE9PSAzMDQpCiAgICAgICAgICAgICB0aGlzLmRp
c3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuUmVzb3VyY2UuRXZlbnQuVHJhbnNm
ZXJTaXplRGlkQ2hhbmdlKTsKLSAgICB9LAorICAgIH0KIAotICAgIG1hcmtBc0ZpbmlzaGVkOiBm
dW5jdGlvbihlbGFwc2VkVGltZSkKKyAgICBtYXJrQXNGaW5pc2hlZChlbGFwc2VkVGltZSkKICAg
ICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9mYWlsZWQpOwogICAgICAgICBjb25z
b2xlLmFzc2VydCghdGhpcy5fY2FuY2VsZWQpOwpAQCAtNjE1LDkgKzU0Miw5IEBAIFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50
VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlJlc291cmNlLkV2ZW50LkxvYWRpbmdEaWRGaW5pc2gp
OwogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuUmVz
b3VyY2UuRXZlbnQuVGltZXN0YW1wc0RpZENoYW5nZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBt
YXJrQXNGYWlsZWQ6IGZ1bmN0aW9uKGNhbmNlbGVkLCBlbGFwc2VkVGltZSkKKyAgICBtYXJrQXNG
YWlsZWQoY2FuY2VsZWQsIGVsYXBzZWRUaW1lKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3Nl
cnQoIXRoaXMuX2ZpbmlzaGVkKTsKIApAQCAtNjI3LDkgKzU1NCw5IEBAIFdlYkluc3BlY3Rvci5S
ZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0
ZW5lcnMoV2ViSW5zcGVjdG9yLlJlc291cmNlLkV2ZW50LkxvYWRpbmdEaWRGYWlsKTsKICAgICAg
ICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlJlc291cmNlLkV2
ZW50LlRpbWVzdGFtcHNEaWRDaGFuZ2UpOwotICAgIH0sCisgICAgfQogCi0gICAgcmV2ZXJ0TWFy
a0FzRmluaXNoZWQ6IGZ1bmN0aW9uKCkKKyAgICByZXZlcnRNYXJrQXNGaW5pc2hlZCgpCiAgICAg
ewogICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fZmFpbGVkKTsKICAgICAgICAgY29uc29s
ZS5hc3NlcnQoIXRoaXMuX2NhbmNlbGVkKTsKQEAgLTYzNyw5ICs1NjQsOSBAQCBXZWJJbnNwZWN0
b3IuUmVzb3VyY2UucHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMuX2ZpbmlzaGVkID0gZmFs
c2U7CiAgICAgICAgIHRoaXMuX2ZpbmlzaGVkT3JGYWlsZWRUaW1lc3RhbXAgPSBOYU47Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBnZXRJbWFnZVNpemU6IGZ1bmN0aW9uKGNhbGxiYWNrKQorICAgIGdl
dEltYWdlU2l6ZShjYWxsYmFjaykKICAgICB7CiAgICAgICAgIC8vIFRocm93IGFuIGVycm9yIGlu
IHRoZSBjYXNlIHRoaXMgcmVzb3VyY2UgaXMgbm90IGFuIGltYWdlLgogICAgICAgICBpZiAodGhp
cy50eXBlICE9PSBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5JbWFnZSkKQEAgLTY3NywxMiAr
NjA0LDEyIEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRo
aXMucmVxdWVzdENvbnRlbnQoKS50aGVuKGZ1bmN0aW9uKGNvbnRlbnQpIHsKICAgICAgICAgICAg
IG9iamVjdFVSTCA9IGltYWdlLnNyYyA9IGNvbnRlbnQuc291cmNlQ29kZS5jcmVhdGVPYmplY3RV
UkwoKTsKICAgICAgICAgfSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZXF1ZXN0Q29udGVudDog
ZnVuY3Rpb24oKQorICAgIHJlcXVlc3RDb250ZW50KCkKICAgICB7CiAgICAgICAgIGlmICh0aGlz
Ll9maW5pc2hlZCkKLSAgICAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuU291cmNlQ29kZS5w
cm90b3R5cGUucmVxdWVzdENvbnRlbnQuY2FsbCh0aGlzKTsKKyAgICAgICAgICAgIHJldHVybiBz
dXBlci5yZXF1ZXN0Q29udGVudCgpOwogCiAgICAgICAgIGlmICh0aGlzLl9mYWlsZWQpCiAgICAg
ICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHtlcnJvcjogV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJBbiBlcnJvciBvY2N1cnJlZCB0cnlpbmcgdG8gbG9hZCB0aGUgcmVzb3VyY2UuIil9KTsK
QEAgLTY5NSw5ICs2MjIsOSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlID0gewog
ICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbmlzaFRoZW5SZXF1ZXN0Q29udGVu
dFByb21pc2U7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBhc3NvY2lhdGVXaXRoU2NyaXB0OiBmdW5j
dGlvbihzY3JpcHQpCisgICAgYXNzb2NpYXRlV2l0aFNjcmlwdChzY3JpcHQpCiAgICAgewogICAg
ICAgICBpZiAoIXRoaXMuX3NjcmlwdHMpCiAgICAgICAgICAgICB0aGlzLl9zY3JpcHRzID0gW107
CkBAIC03MTEsMTEgKzYzOCw4MiBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlID0g
ewogICAgICAgICAgICAgdGhpcy5fdHlwZSA9IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLlNj
cmlwdDsKICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZS5FdmVudC5UeXBlRGlkQ2hhbmdlLCB7b2xkVHlwZX0pOwogICAgICAgICB9
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzYXZlSWRlbnRpdHlUb0Nvb2tpZTogZnVuY3Rpb24oY29v
a2llKQorICAgIHNhdmVJZGVudGl0eVRvQ29va2llKGNvb2tpZSkKICAgICB7CiAgICAgICAgIGNv
b2tpZVtXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVVJMQ29va2llS2V5XSA9IHRoaXMudXJsLmhhc2g7
CiAgICAgICAgIGNvb2tpZVtXZWJJbnNwZWN0b3IuUmVzb3VyY2UuTWFpblJlc291cmNlQ29va2ll
S2V5XSA9IHRoaXMuaXNNYWluUmVzb3VyY2UoKTsKICAgICB9CiB9OworCitXZWJJbnNwZWN0b3Iu
UmVzb3VyY2UuVHlwZUlkZW50aWZpZXIgPSAicmVzb3VyY2UiOworV2ViSW5zcGVjdG9yLlJlc291
cmNlLlVSTENvb2tpZUtleSA9ICJyZXNvdXJjZS11cmwiOworV2ViSW5zcGVjdG9yLlJlc291cmNl
Lk1haW5SZXNvdXJjZUNvb2tpZUtleSA9ICJyZXNvdXJjZS1pcy1tYWluLXJlc291cmNlIjsKKwor
V2ViSW5zcGVjdG9yLlJlc291cmNlLkV2ZW50ID0geworICAgIFVSTERpZENoYW5nZTogInJlc291
cmNlLXVybC1kaWQtY2hhbmdlIiwKKyAgICBNSU1FVHlwZURpZENoYW5nZTogInJlc291cmNlLW1p
bWUtdHlwZS1kaWQtY2hhbmdlIiwKKyAgICBUeXBlRGlkQ2hhbmdlOiAicmVzb3VyY2UtdHlwZS1k
aWQtY2hhbmdlIiwKKyAgICBSZXF1ZXN0SGVhZGVyc0RpZENoYW5nZTogInJlc291cmNlLXJlcXVl
c3QtaGVhZGVycy1kaWQtY2hhbmdlIiwKKyAgICBSZXNwb25zZVJlY2VpdmVkOiAicmVzb3VyY2Ut
cmVzcG9uc2UtcmVjZWl2ZWQiLAorICAgIExvYWRpbmdEaWRGaW5pc2g6ICJyZXNvdXJjZS1sb2Fk
aW5nLWRpZC1maW5pc2giLAorICAgIExvYWRpbmdEaWRGYWlsOiAicmVzb3VyY2UtbG9hZGluZy1k
aWQtZmFpbCIsCisgICAgVGltZXN0YW1wc0RpZENoYW5nZTogInJlc291cmNlLXRpbWVzdGFtcHMt
ZGlkLWNoYW5nZSIsCisgICAgU2l6ZURpZENoYW5nZTogInJlc291cmNlLXNpemUtZGlkLWNoYW5n
ZSIsCisgICAgVHJhbnNmZXJTaXplRGlkQ2hhbmdlOiAicmVzb3VyY2UtdHJhbnNmZXItc2l6ZS1k
aWQtY2hhbmdlIiwKKyAgICBDYWNoZVN0YXR1c0RpZENoYW5nZTogInJlc291cmNlLWNhY2hlZC1k
aWQtY2hhbmdlIgorfTsKKworLy8gS2VlcCB0aGVzZSBpbiBzeW5jIHdpdGggdGhlICJSZXNvdXJj
ZVR5cGUiIGVudW0gZGVmaW5lZCBieSB0aGUgIlBhZ2UiIGRvbWFpbi4KK1dlYkluc3BlY3Rvci5S
ZXNvdXJjZS5UeXBlID0geworICAgIERvY3VtZW50OiAicmVzb3VyY2UtdHlwZS1kb2N1bWVudCIs
CisgICAgU3R5bGVzaGVldDogInJlc291cmNlLXR5cGUtc3R5bGVzaGVldCIsCisgICAgSW1hZ2U6
ICJyZXNvdXJjZS10eXBlLWltYWdlIiwKKyAgICBGb250OiAicmVzb3VyY2UtdHlwZS1mb250IiwK
KyAgICBTY3JpcHQ6ICJyZXNvdXJjZS10eXBlLXNjcmlwdCIsCisgICAgWEhSOiAicmVzb3VyY2Ut
dHlwZS14aHIiLAorICAgIFdlYlNvY2tldDogInJlc291cmNlLXR5cGUtd2Vic29ja2V0IiwKKyAg
ICBPdGhlcjogInJlc291cmNlLXR5cGUtb3RoZXIiCit9OworCisvLyBUaGlzIE1JTUUgVHlwZSBt
YXAgaXMgcHJpdmF0ZSwgdXNlIFdlYkluc3BlY3Rvci5SZXNvdXJjZS50eXBlRnJvbU1JTUVUeXBl
KCkuCitXZWJJbnNwZWN0b3IuUmVzb3VyY2UuX21pbWVUeXBlTWFwID0geworICAgICJ0ZXh0L2h0
bWwiOiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5Eb2N1bWVudCwKKyAgICAidGV4dC94bWwi
OiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5Eb2N1bWVudCwKKyAgICAidGV4dC9wbGFpbiI6
IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLkRvY3VtZW50LAorICAgICJhcHBsaWNhdGlvbi94
aHRtbCt4bWwiOiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5Eb2N1bWVudCwKKyAgICAiaW1h
Z2Uvc3ZnK3htbCI6IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLkRvY3VtZW50LAorCisgICAg
InRleHQvY3NzIjogV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuU3R5bGVzaGVldCwKKyAgICAi
dGV4dC94c2wiOiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5TdHlsZXNoZWV0LAorICAgICJ0
ZXh0L3gtbGVzcyI6IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLlN0eWxlc2hlZXQsCisgICAg
InRleHQveC1zYXNzIjogV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuU3R5bGVzaGVldCwKKyAg
ICAidGV4dC94LXNjc3MiOiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5TdHlsZXNoZWV0LAor
CisgICAgImFwcGxpY2F0aW9uL3BkZiI6IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLkltYWdl
LAorCisgICAgImFwcGxpY2F0aW9uL3gtZm9udC10eXBlMSI6IFdlYkluc3BlY3Rvci5SZXNvdXJj
ZS5UeXBlLkZvbnQsCisgICAgImFwcGxpY2F0aW9uL3gtZm9udC10dGYiOiBXZWJJbnNwZWN0b3Iu
UmVzb3VyY2UuVHlwZS5Gb250LAorICAgICJhcHBsaWNhdGlvbi94LWZvbnQtd29mZiI6IFdlYklu
c3BlY3Rvci5SZXNvdXJjZS5UeXBlLkZvbnQsCisgICAgImFwcGxpY2F0aW9uL3gtdHJ1ZXR5cGUt
Zm9udCI6IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLkZvbnQsCisKKyAgICAidGV4dC9qYXZh
c2NyaXB0IjogV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuU2NyaXB0LAorICAgICJ0ZXh0L2Vj
bWFzY3JpcHQiOiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5TY3JpcHQsCisgICAgImFwcGxp
Y2F0aW9uL2phdmFzY3JpcHQiOiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5TY3JpcHQsCisg
ICAgImFwcGxpY2F0aW9uL2VjbWFzY3JpcHQiOiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5T
Y3JpcHQsCisgICAgImFwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCI6IFdlYkluc3BlY3Rvci5SZXNv
dXJjZS5UeXBlLlNjcmlwdCwKKyAgICAiYXBwbGljYXRpb24vanNvbiI6IFdlYkluc3BlY3Rvci5S
ZXNvdXJjZS5UeXBlLlNjcmlwdCwKKyAgICAiYXBwbGljYXRpb24veC1qc29uIjogV2ViSW5zcGVj
dG9yLlJlc291cmNlLlR5cGUuU2NyaXB0LAorICAgICJ0ZXh0L3gtamF2YXNjcmlwdCI6IFdlYklu
c3BlY3Rvci5SZXNvdXJjZS5UeXBlLlNjcmlwdCwKKyAgICAidGV4dC94LWpzb24iOiBXZWJJbnNw
ZWN0b3IuUmVzb3VyY2UuVHlwZS5TY3JpcHQsCisgICAgInRleHQvamF2YXNjcmlwdDEuMSI6IFdl
Ykluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLlNjcmlwdCwKKyAgICAidGV4dC9qYXZhc2NyaXB0MS4y
IjogV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuU2NyaXB0LAorICAgICJ0ZXh0L2phdmFzY3Jp
cHQxLjMiOiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5TY3JpcHQsCisgICAgInRleHQvanNj
cmlwdCI6IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLlNjcmlwdCwKKyAgICAidGV4dC9saXZl
c2NyaXB0IjogV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuU2NyaXB0LAorICAgICJ0ZXh0L3gt
bGl2ZXNjcmlwdCI6IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLlNjcmlwdCwKKyAgICAidGV4
dC90eXBlc2NyaXB0IjogV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuU2NyaXB0LAorICAgICJ0
ZXh0L3gtY2xvanVyZSI6IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLlNjcmlwdCwKKyAgICAi
dGV4dC94LWNvZmZlZXNjcmlwdCI6IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLlNjcmlwdAor
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVs
cy9SZXNvdXJjZUNvbGxlY3Rpb24uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Nb2RlbHMvUmVzb3VyY2VDb2xsZWN0aW9uLmpzCmluZGV4IDkzYTg2ZWQuLjczNWFiM2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9S
ZXNvdXJjZUNvbGxlY3Rpb24uanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvTW9kZWxzL1Jlc291cmNlQ29sbGVjdGlvbi5qcwpAQCAtMjMsNDUgKzIzLDQ0IEBACiAg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlJl
c291cmNlQ29sbGVjdGlvbiA9IGZ1bmN0aW9uKCkKK1dlYkluc3BlY3Rvci5SZXNvdXJjZUNvbGxl
Y3Rpb24gPSBjbGFzcyBSZXNvdXJjZUNvbGxlY3Rpb24gZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2Jq
ZWN0CiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIGNvbnN0cnVj
dG9yKCkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CiAKLSAgICB0aGlzLl9yZXNvdXJjZXMgPSBb
XTsKLSAgICB0aGlzLl9yZXNvdXJjZVVSTE1hcCA9IG5ldyBNYXA7Ci0gICAgdGhpcy5fcmVzb3Vy
Y2VzVHlwZU1hcCA9IG5ldyBNYXA7Ci19OwotCi1XZWJJbnNwZWN0b3IuUmVzb3VyY2VDb2xsZWN0
aW9uLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlJlc291cmNl
Q29sbGVjdGlvbiwKKyAgICAgICAgdGhpcy5fcmVzb3VyY2VzID0gW107CisgICAgICAgIHRoaXMu
X3Jlc291cmNlVVJMTWFwID0gbmV3IE1hcDsKKyAgICAgICAgdGhpcy5fcmVzb3VyY2VzVHlwZU1h
cCA9IG5ldyBNYXA7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgcmVzb3VyY2Vz
KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZXM7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICByZXNvdXJjZUZvclVSTDogZnVuY3Rpb24odXJsKQorICAgIHJlc291cmNlRm9yVVJM
KHVybCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZVVSTE1hcC5nZXQodXJs
KSB8fCBudWxsOwotICAgIH0sCisgICAgfQogCi0gICAgcmVzb3VyY2VzV2l0aFR5cGU6IGZ1bmN0
aW9uKHR5cGUpCisgICAgcmVzb3VyY2VzV2l0aFR5cGUodHlwZSkKICAgICB7CiAgICAgICAgIHJl
dHVybiB0aGlzLl9yZXNvdXJjZXNUeXBlTWFwLmdldCh0eXBlKSB8fCBbXTsKLSAgICB9LAorICAg
IH0KIAotICAgIGFkZFJlc291cmNlOiBmdW5jdGlvbihyZXNvdXJjZSkKKyAgICBhZGRSZXNvdXJj
ZShyZXNvdXJjZSkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJlc291cmNlIGluc3Rh
bmNlb2YgV2ViSW5zcGVjdG9yLlJlc291cmNlKTsKICAgICAgICAgaWYgKCEocmVzb3VyY2UgaW5z
dGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAg
ICAgICAgIHRoaXMuX2Fzc29jaWF0ZVdpdGhSZXNvdXJjZShyZXNvdXJjZSk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICByZW1vdmVSZXNvdXJjZTogZnVuY3Rpb24ocmVzb3VyY2VPclVSTCkKKyAgICBy
ZW1vdmVSZXNvdXJjZShyZXNvdXJjZU9yVVJMKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3Nl
cnQocmVzb3VyY2VPclVSTCk7CiAKQEAgLTgxLDkgKzgwLDkgQEAgV2ViSW5zcGVjdG9yLlJlc291
cmNlQ29sbGVjdGlvbi5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2Rpc2Fzc29jaWF0ZVdp
dGhSZXNvdXJjZShyZXNvdXJjZSk7CiAKICAgICAgICAgcmV0dXJuIHJlc291cmNlOwotICAgIH0s
CisgICAgfQogCi0gICAgcmVtb3ZlQWxsUmVzb3VyY2VzOiBmdW5jdGlvbigpCisgICAgcmVtb3Zl
QWxsUmVzb3VyY2VzKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fcmVzb3VyY2VzLmxlbmd0
aCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTk0LDExICs5MywxMSBAQCBXZWJJbnNwZWN0b3Iu
UmVzb3VyY2VDb2xsZWN0aW9uLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fcmVzb3VyY2Vz
ID0gW107CiAgICAgICAgIHRoaXMuX3Jlc291cmNlVVJMTWFwLmNsZWFyKCk7CiAgICAgICAgIHRo
aXMuX3Jlc291cmNlc1R5cGVNYXAuY2xlYXIoKTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFBy
aXZhdGUKIAotICAgIF9hc3NvY2lhdGVXaXRoUmVzb3VyY2U6IGZ1bmN0aW9uKHJlc291cmNlKQor
ICAgIF9hc3NvY2lhdGVXaXRoUmVzb3VyY2UocmVzb3VyY2UpCiAgICAgewogICAgICAgICB0aGlz
Ll9yZXNvdXJjZXMucHVzaChyZXNvdXJjZSk7CiAgICAgICAgIHRoaXMuX3Jlc291cmNlVVJMTWFw
LnNldChyZXNvdXJjZS51cmwsIHJlc291cmNlKTsKQEAgLTExMCw5ICsxMDksOSBAQCBXZWJJbnNw
ZWN0b3IuUmVzb3VyY2VDb2xsZWN0aW9uLnByb3RvdHlwZSA9IHsKIAogICAgICAgICByZXNvdXJj
ZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5SZXNvdXJjZS5FdmVudC5VUkxEaWRDaGFu
Z2UsIHRoaXMuX3Jlc291cmNlVVJMRGlkQ2hhbmdlLCB0aGlzKTsKICAgICAgICAgcmVzb3VyY2Uu
YWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuUmVzb3VyY2UuRXZlbnQuVHlwZURpZENoYW5n
ZSwgdGhpcy5fcmVzb3VyY2VUeXBlRGlkQ2hhbmdlLCB0aGlzKTsKLSAgICB9LAorICAgIH0KIAot
ICAgIF9kaXNhc3NvY2lhdGVXaXRoUmVzb3VyY2U6IGZ1bmN0aW9uKHJlc291cmNlLCBza2lwUmVt
b3ZhbCkKKyAgICBfZGlzYXNzb2NpYXRlV2l0aFJlc291cmNlKHJlc291cmNlLCBza2lwUmVtb3Zh
bCkKICAgICB7CiAgICAgICAgIGlmIChza2lwUmVtb3ZhbCkgewogICAgICAgICAgICAgdGhpcy5f
cmVzb3VyY2VzLnJlbW92ZShyZXNvdXJjZSk7CkBAIC0xMjMsOSArMTIyLDkgQEAgV2ViSW5zcGVj
dG9yLlJlc291cmNlQ29sbGVjdGlvbi5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgcmVzb3VyY2Uu
cmVtb3ZlRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuUmVzb3VyY2UuRXZlbnQuVVJMRGlkQ2hh
bmdlLCB0aGlzLl9yZXNvdXJjZVVSTERpZENoYW5nZSwgdGhpcyk7CiAgICAgICAgIHJlc291cmNl
LnJlbW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJlc291cmNlLkV2ZW50LlR5cGVEaWRD
aGFuZ2UsIHRoaXMuX3Jlc291cmNlVHlwZURpZENoYW5nZSwgdGhpcyk7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBfcmVzb3VyY2VVUkxEaWRDaGFuZ2U6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9yZXNv
dXJjZVVSTERpZENoYW5nZShldmVudCkKICAgICB7CiAgICAgICAgIHZhciByZXNvdXJjZSA9IGV2
ZW50LnRhcmdldDsKICAgICAgICAgY29uc29sZS5hc3NlcnQocmVzb3VyY2UgaW5zdGFuY2VvZiBX
ZWJJbnNwZWN0b3IuUmVzb3VyY2UpOwpAQCAtMTM5LDkgKzEzOCw5IEBAIFdlYkluc3BlY3Rvci5S
ZXNvdXJjZUNvbGxlY3Rpb24ucHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMuX3Jlc291cmNl
VVJMTWFwLnNldChyZXNvdXJjZS51cmwsIHJlc291cmNlKTsKICAgICAgICAgdGhpcy5fcmVzb3Vy
Y2VVUkxNYXAuZGVsZXRlKG9sZFVSTCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcmVzb3VyY2VU
eXBlRGlkQ2hhbmdlOiBmdW5jdGlvbihldmVudCkKKyAgICBfcmVzb3VyY2VUeXBlRGlkQ2hhbmdl
KGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIHJlc291cmNlID0gZXZlbnQudGFyZ2V0OwogICAg
ICAgICBjb25zb2xlLmFzc2VydChyZXNvdXJjZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZXNv
dXJjZSk7CkBAIC0xNjIsNSArMTYxLDMgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlQ29sbGVjdGlv
bi5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9yZXNvdXJjZXNUeXBlTWFwLmdldChv
bGRUeXBlKS5yZW1vdmUocmVzb3VyY2UpOwogICAgIH0KIH07Ci0KLVdlYkluc3BlY3Rvci5SZXNv
dXJjZUNvbGxlY3Rpb24ucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3Qu
cHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvTW9kZWxzL1Jlc291cmNlVGltZWxpbmVSZWNvcmQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUmVzb3VyY2VUaW1lbGluZVJlY29yZC5qcwppbmRleCBh
YWRhOGZhLi4zZWIxNjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Nb2RlbHMvUmVzb3VyY2VUaW1lbGluZVJlY29yZC5qcworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUmVzb3VyY2VUaW1lbGluZVJlY29yZC5q
cwpAQCAtMjMsNTUgKzIzLDUyIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAgKi8KIAotV2ViSW5zcGVjdG9yLlJlc291cmNlVGltZWxpbmVSZWNvcmQgPSBmdW5jdGlvbihy
ZXNvdXJjZSkKK1dlYkluc3BlY3Rvci5SZXNvdXJjZVRpbWVsaW5lUmVjb3JkID0gY2xhc3MgUmVz
b3VyY2VUaW1lbGluZVJlY29yZCBleHRlbmRzIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZAog
ewotICAgIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5jYWxsKHRoaXMsIFdlYkluc3BlY3Rv
ci5UaW1lbGluZVJlY29yZC5UeXBlLk5ldHdvcmspOworICAgIGNvbnN0cnVjdG9yKHJlc291cmNl
KQorICAgIHsKKyAgICAgICAgc3VwZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkLlR5cGUu
TmV0d29yayk7CiAKLSAgICB0aGlzLl9yZXNvdXJjZSA9IHJlc291cmNlOwotICAgIHRoaXMuX3Jl
c291cmNlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJlc291cmNlLkV2ZW50LlRpbWVz
dGFtcHNEaWRDaGFuZ2UsIHRoaXMuX2Rpc3BhdGNoVXBkYXRlZEV2ZW50LCB0aGlzKTsKLX07Ci0K
LVdlYkluc3BlY3Rvci5SZXNvdXJjZVRpbWVsaW5lUmVjb3JkLnByb3RvdHlwZSA9IHsKLSAgICBj
b25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlJlc291cmNlVGltZWxpbmVSZWNvcmQsCisgICAgICAg
IHRoaXMuX3Jlc291cmNlID0gcmVzb3VyY2U7CisgICAgICAgIHRoaXMuX3Jlc291cmNlLmFkZEV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJlc291cmNlLkV2ZW50LlRpbWVzdGFtcHNEaWRDaGFu
Z2UsIHRoaXMuX2Rpc3BhdGNoVXBkYXRlZEV2ZW50LCB0aGlzKTsKKyAgICB9CiAKICAgICAvLyBQ
dWJsaWMKIAogICAgIGdldCByZXNvdXJjZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5f
cmVzb3VyY2U7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgdXBkYXRlc0R5bmFtaWNhbGx5KCkK
ICAgICB7CiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHVz
ZXNBY3RpdmVTdGFydFRpbWUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSwK
KyAgICB9CiAKICAgICBnZXQgc3RhcnRUaW1lKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlz
Ll9yZXNvdXJjZS5yZXF1ZXN0U2VudFRpbWVzdGFtcDsKLSAgICB9LAorICAgIH0KIAogICAgIGdl
dCBhY3RpdmVTdGFydFRpbWUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNl
LnJlc3BvbnNlUmVjZWl2ZWRUaW1lc3RhbXA7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgZW5k
VGltZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2UuZmluaXNoZWRPckZh
aWxlZFRpbWVzdGFtcDsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAgIF9k
aXNwYXRjaFVwZGF0ZWRFdmVudDogZnVuY3Rpb24oKQorICAgIF9kaXNwYXRjaFVwZGF0ZWRFdmVu
dCgpCiAgICAgewogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNw
ZWN0b3IuVGltZWxpbmVSZWNvcmQuRXZlbnQuVXBkYXRlZCk7CiAgICAgfQogfTsKLQotV2ViSW5z
cGVjdG9yLlJlc291cmNlVGltZWxpbmVSZWNvcmQucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYklu
c3BlY3Rvci5UaW1lbGluZVJlY29yZC5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUmV2aXNpb24uanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUmV2aXNpb24uanMKaW5kZXggNGNmMmM0
Yi4uMzk4NDkxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvTW9kZWxzL1JldmlzaW9uLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL01vZGVscy9SZXZpc2lvbi5qcwpAQCAtMjMsMzMgKzIzLDMxIEBACiAgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlJldmlzaW9uID0g
ZnVuY3Rpb24oKQorV2ViSW5zcGVjdG9yLlJldmlzaW9uID0gY2xhc3MgUmV2aXNpb24gZXh0ZW5k
cyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRo
aXMpOwotfTsKLQotV2ViSW5zcGVjdG9yLlJldmlzaW9uLnByb3RvdHlwZSA9IHsKLSAgICBjb25z
dHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlJldmlzaW9uLAorICAgIGNvbnN0cnVjdG9yKCkKKyAgICB7
CisgICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgb25jZSA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTQy
ODYyPiBpcyBmaXhlZC4KKyAgICAgICAgc3VwZXIoKTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMK
IAotICAgIGFwcGx5OiBmdW5jdGlvbigpCisgICAgYXBwbHkoKQogICAgIHsKICAgICAgICAgLy8g
SW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Nlcy4KICAgICAgICAgY29uc29sZS5lcnJvcigiTmVlZHMg
dG8gYmUgaW1wbGVtZW50ZWQgYnkgYSBzdWJjbGFzcy4iKTsKLSAgICB9LAorICAgIH0KIAotICAg
IHJldmVydDogZnVuY3Rpb24oKQorICAgIHJldmVydCgpCiAgICAgewogICAgICAgICAvLyBJbXBs
ZW1lbnRlZCBieSBzdWJjbGFzc2VzLgogICAgICAgICBjb25zb2xlLmVycm9yKCJOZWVkcyB0byBi
ZSBpbXBsZW1lbnRlZCBieSBhIHN1YmNsYXNzLiIpOwotICAgIH0sCisgICAgfQogCi0gICAgY29w
eTogZnVuY3Rpb24oKQorICAgIGNvcHkoKQogICAgIHsKICAgICAgICAgLy8gT3ZlcnJpZGUgYnkg
c3ViY2xhc3Nlcy4KICAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgfQogfTsKLQotV2ViSW5zcGVj
dG9yLlJldmlzaW9uLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnBy
b3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L01vZGVscy9SdW5Mb29wVGltZWxpbmVSZWNvcmQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Nb2RlbHMvUnVuTG9vcFRpbWVsaW5lUmVjb3JkLmpzCmluZGV4IGUxZTQw
MDQuLjg0MTgwOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01vZGVscy9SdW5Mb29wVGltZWxpbmVSZWNvcmQuanMKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1J1bkxvb3BUaW1lbGluZVJlY29yZC5qcwpAQCAt
MjMsMjcgKzIzLDIzIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
IAotV2ViSW5zcGVjdG9yLlJ1bkxvb3BUaW1lbGluZVJlY29yZCA9IGZ1bmN0aW9uKHN0YXJ0VGlt
ZSwgZW5kVGltZSwgY2hpbGRyZW4pCitXZWJJbnNwZWN0b3IuUnVuTG9vcFRpbWVsaW5lUmVjb3Jk
ID0gY2xhc3MgUnVuTG9vcFRpbWVsaW5lUmVjb3JkIGV4dGVuZHMgV2ViSW5zcGVjdG9yLlRpbWVs
aW5lUmVjb3JkCiB7Ci0gICAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkLmNhbGwodGhpcywg
V2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkLlR5cGUuUnVuTG9vcCwgc3RhcnRUaW1lLCBlbmRU
aW1lKTsKKyAgICBjb25zdHJ1Y3RvcihzdGFydFRpbWUsIGVuZFRpbWUsIGNoaWxkcmVuKQorICAg
IHsKKyAgICAgICAgc3VwZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkLlR5cGUuUnVuTG9v
cCwgc3RhcnRUaW1lLCBlbmRUaW1lKTsKIAotICAgIHRoaXMuX2NoaWxkcmVuID0gY2hpbGRyZW4g
fHwgW107Ci0gICAgdGhpcy5fZHVyYXRpb25CeVJlY29yZFR5cGUgPSBuZXcgTWFwOwotICAgIHRo
aXMuX2R1cmF0aW9uUmVtYWluZGVyID0gTmFOOwotfTsKLQotV2ViSW5zcGVjdG9yLlJ1bkxvb3BU
aW1lbGluZVJlY29yZC5UeXBlSWRlbnRpZmllciA9ICJydW5sb29wLXRpbWVsaW5lLXJlY29yZCI7
Ci0KLVdlYkluc3BlY3Rvci5SdW5Mb29wVGltZWxpbmVSZWNvcmQucHJvdG90eXBlID0gewotICAg
IGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuUnVuTG9vcFRpbWVsaW5lUmVjb3JkLAotICAgIF9f
cHJvdG9fXzogV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkLnByb3RvdHlwZSwKKyAgICAgICAg
dGhpcy5fY2hpbGRyZW4gPSBjaGlsZHJlbiB8fCBbXTsKKyAgICAgICAgdGhpcy5fZHVyYXRpb25C
eVJlY29yZFR5cGUgPSBuZXcgTWFwOworICAgICAgICB0aGlzLl9kdXJhdGlvblJlbWFpbmRlciA9
IE5hTjsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBjaGlsZHJlbigpCiAgICAg
ewogICAgICAgICByZXR1cm4gdGhpcy5fY2hpbGRyZW4uc2xpY2UoKTsKLSAgICB9LAorICAgIH0K
IAogICAgIGdldCBkdXJhdGlvblJlbWFpbmRlcigpCiAgICAgewpAQCAtNTEsMTEgKzQ3LDExIEBA
IFdlYkluc3BlY3Rvci5SdW5Mb29wVGltZWxpbmVSZWNvcmQucHJvdG90eXBlID0gewogICAgICAg
ICAgICAgcmV0dXJuIHRoaXMuX2R1cmF0aW9uUmVtYWluZGVyOwogCiAgICAgICAgIHRoaXMuX2R1
cmF0aW9uUmVtYWluZGVyID0gdGhpcy5kdXJhdGlvbjsKLSAgICAgICAgZm9yIChyZWNvcmRUeXBl
IGluIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5UeXBlKQorICAgICAgICBmb3IgKHZhciBy
ZWNvcmRUeXBlIGluIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5UeXBlKQogICAgICAgICAg
ICAgdGhpcy5fZHVyYXRpb25SZW1haW5kZXIgLT0gdGhpcy5kdXJhdGlvbkZvclJlY29yZHMoV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkLlR5cGVbcmVjb3JkVHlwZV0pOwogCiAgICAgICAgIHJl
dHVybiB0aGlzLl9kdXJhdGlvblJlbWFpbmRlcjsKLSAgICB9LAorICAgIH0KIAogICAgIGR1cmF0
aW9uRm9yUmVjb3JkcyhyZWNvcmRUeXBlKQogICAgIHsKQEAgLTc2LDMgKzcyLDUgQEAgV2ViSW5z
cGVjdG9yLlJ1bkxvb3BUaW1lbGluZVJlY29yZC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVy
biBkdXJhdGlvbjsKICAgICB9CiB9OworCitXZWJJbnNwZWN0b3IuUnVuTG9vcFRpbWVsaW5lUmVj
b3JkLlR5cGVJZGVudGlmaWVyID0gInJ1bmxvb3AtdGltZWxpbmUtcmVjb3JkIjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9TY29wZUNoYWlu
Tm9kZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9TY29w
ZUNoYWluTm9kZS5qcwppbmRleCA0NzgxYzIzLi5hNmRlZTdhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvU2NvcGVDaGFpbk5vZGUuanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Njb3BlQ2hhaW5O
b2RlLmpzCkBAIC0yMywxOCArMjMsMzMgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuU2NvcGVDaGFpbk5vZGUgPSBmdW5jdGlvbih0eXBl
LCBvYmplY3QpCitXZWJJbnNwZWN0b3IuU2NvcGVDaGFpbk5vZGUgPSBjbGFzcyBTY29wZUNoYWlu
Tm9kZSBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIHsKLSAgICBXZWJJbnNwZWN0b3IuT2Jq
ZWN0LmNhbGwodGhpcyk7CisgICAgY29uc3RydWN0b3IodHlwZSwgb2JqZWN0KQorICAgIHsKKyAg
ICAgICAgc3VwZXIoKTsKIAotICAgIGNvbnNvbGUuYXNzZXJ0KHR5cGVvZiB0eXBlID09PSAic3Ry
aW5nIik7Ci0gICAgY29uc29sZS5hc3NlcnQob2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9y
LlJlbW90ZU9iamVjdCk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHR5cGVvZiB0eXBlID09PSAi
c3RyaW5nIik7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KG9iamVjdCBpbnN0YW5jZW9mIFdlYklu
c3BlY3Rvci5SZW1vdGVPYmplY3QpOwogCi0gICAgaWYgKHR5cGUgaW4gV2ViSW5zcGVjdG9yLlNj
b3BlQ2hhaW5Ob2RlLlR5cGUpCi0gICAgICAgIHR5cGUgPSBXZWJJbnNwZWN0b3IuU2NvcGVDaGFp
bk5vZGUuVHlwZVt0eXBlXTsKKyAgICAgICAgaWYgKHR5cGUgaW4gV2ViSW5zcGVjdG9yLlNjb3Bl
Q2hhaW5Ob2RlLlR5cGUpCisgICAgICAgICAgICB0eXBlID0gV2ViSW5zcGVjdG9yLlNjb3BlQ2hh
aW5Ob2RlLlR5cGVbdHlwZV07CiAKLSAgICB0aGlzLl90eXBlID0gdHlwZSB8fCBudWxsOwotICAg
IHRoaXMuX29iamVjdCA9IG9iamVjdCB8fCBudWxsOworICAgICAgICB0aGlzLl90eXBlID0gdHlw
ZSB8fCBudWxsOworICAgICAgICB0aGlzLl9vYmplY3QgPSBvYmplY3QgfHwgbnVsbDsKKyAgICB9
CisKKyAgICAvLyBQdWJsaWMKKworICAgIGdldCB0eXBlKCkKKyAgICB7CisgICAgICAgIHJldHVy
biB0aGlzLl90eXBlOworICAgIH0KKworICAgIGdldCBvYmplY3QoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIHRoaXMuX29iamVjdDsKKyAgICB9CiB9OwogCiBXZWJJbnNwZWN0b3IuU2NvcGVDaGFp
bk5vZGUuVHlwZSA9IHsKQEAgLTQ1LDIxICs2MCwzIEBAIFdlYkluc3BlY3Rvci5TY29wZUNoYWlu
Tm9kZS5UeXBlID0gewogICAgIENhdGNoOiAic2NvcGUtY2hhaW4tdHlwZS1jYXRjaCIsCiAgICAg
RnVuY3Rpb25OYW1lOiAic2NvcGUtY2hhaW4tdHlwZS1mdW5jdGlvbk5hbWUiCiB9OwotCi1XZWJJ
bnNwZWN0b3IuU2NvcGVDaGFpbk5vZGUucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBX
ZWJJbnNwZWN0b3IuU2NvcGVDaGFpbk5vZGUsCi0KLSAgICAvLyBQdWJsaWMKLQotICAgIGdldCB0
eXBlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl90eXBlOwotICAgIH0sCi0KLSAgICBn
ZXQgb2JqZWN0KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9vYmplY3Q7Ci0gICAgfQot
fTsKLQotV2ViSW5zcGVjdG9yLlNjb3BlQ2hhaW5Ob2RlLnByb3RvdHlwZS5fX3Byb3RvX18gPSBX
ZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9TY3JpcHQuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvU2NyaXB0LmpzCmluZGV4IGIwN2JhZDQuLjQ3ZmJm
ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVs
cy9TY3JpcHQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9k
ZWxzL1NjcmlwdC5qcwpAQCAtMjMsNzEgKzIzLDY1IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlNjcmlwdCA9IGZ1bmN0aW9uKGlkLCBy
YW5nZSwgdXJsLCBpbmplY3RlZCwgc291cmNlTWFwVVJMKQorV2ViSW5zcGVjdG9yLlNjcmlwdCA9
IGNsYXNzIFNjcmlwdCBleHRlbmRzIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlCiB7Ci0gICAgV2Vi
SW5zcGVjdG9yLlNvdXJjZUNvZGUuY2FsbCh0aGlzKTsKKyAgICBjb25zdHJ1Y3RvcihpZCwgcmFu
Z2UsIHVybCwgaW5qZWN0ZWQsIHNvdXJjZU1hcFVSTCkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7
CiAKLSAgICBjb25zb2xlLmFzc2VydChpZCk7Ci0gICAgY29uc29sZS5hc3NlcnQocmFuZ2UgaW5z
dGFuY2VvZiBXZWJJbnNwZWN0b3IuVGV4dFJhbmdlKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQo
aWQpOworICAgICAgICBjb25zb2xlLmFzc2VydChyYW5nZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rv
ci5UZXh0UmFuZ2UpOwogCi0gICAgdGhpcy5faWQgPSBpZCB8fCBudWxsOwotICAgIHRoaXMuX3Jh
bmdlID0gcmFuZ2UgfHwgbnVsbDsKLSAgICB0aGlzLl91cmwgPSB1cmwgfHwgbnVsbDsKLSAgICB0
aGlzLl9pbmplY3RlZCA9IGluamVjdGVkIHx8IGZhbHNlOworICAgICAgICB0aGlzLl9pZCA9IGlk
IHx8IG51bGw7CisgICAgICAgIHRoaXMuX3JhbmdlID0gcmFuZ2UgfHwgbnVsbDsKKyAgICAgICAg
dGhpcy5fdXJsID0gdXJsIHx8IG51bGw7CisgICAgICAgIHRoaXMuX2luamVjdGVkID0gaW5qZWN0
ZWQgfHwgZmFsc2U7CiAKLSAgICB0aGlzLl9yZXNvdXJjZSA9IHRoaXMuX3Jlc29sdmVSZXNvdXJj
ZSgpOwotICAgIGlmICh0aGlzLl9yZXNvdXJjZSkKLSAgICAgICAgdGhpcy5fcmVzb3VyY2UuYXNz
b2NpYXRlV2l0aFNjcmlwdCh0aGlzKTsKKyAgICAgICAgdGhpcy5fcmVzb3VyY2UgPSB0aGlzLl9y
ZXNvbHZlUmVzb3VyY2UoKTsKKyAgICAgICAgaWYgKHRoaXMuX3Jlc291cmNlKQorICAgICAgICAg
ICAgdGhpcy5fcmVzb3VyY2UuYXNzb2NpYXRlV2l0aFNjcmlwdCh0aGlzKTsKIAotICAgIGlmIChz
b3VyY2VNYXBVUkwpCi0gICAgICAgIFdlYkluc3BlY3Rvci5zb3VyY2VNYXBNYW5hZ2VyLmRvd25s
b2FkU291cmNlTWFwKHNvdXJjZU1hcFVSTCwgdGhpcy5fdXJsLCB0aGlzKTsKKyAgICAgICAgaWYg
KHNvdXJjZU1hcFVSTCkKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5zb3VyY2VNYXBNYW5hZ2Vy
LmRvd25sb2FkU291cmNlTWFwKHNvdXJjZU1hcFVSTCwgdGhpcy5fdXJsLCB0aGlzKTsKIAotICAg
IHRoaXMuX3NjcmlwdFN5bnRheFRyZWUgPSBudWxsOwotfTsKKyAgICAgICAgdGhpcy5fc2NyaXB0
U3ludGF4VHJlZSA9IG51bGw7CisgICAgfQogCi1XZWJJbnNwZWN0b3IuU2NyaXB0LlR5cGVJZGVu
dGlmaWVyID0gInNjcmlwdCI7Ci1XZWJJbnNwZWN0b3IuU2NyaXB0LlVSTENvb2tpZUtleSA9ICJz
Y3JpcHQtdXJsIjsKLVdlYkluc3BlY3Rvci5TY3JpcHQuRGlzcGxheU5hbWVDb29raWVLZXkgPSAi
c2NyaXB0LWRpc3BsYXktbmFtZSI7CisgICAgLy8gU3RhdGljCiAKLVdlYkluc3BlY3Rvci5TY3Jp
cHQucmVzZXRVbmlxdWVEaXNwbGF5TmFtZU51bWJlcnMgPSBmdW5jdGlvbigpCi17Ci0gICAgV2Vi
SW5zcGVjdG9yLlNjcmlwdC5fbmV4dFVuaXF1ZURpc3BsYXlOYW1lTnVtYmVyID0gMTsKLX07Ci0K
LVdlYkluc3BlY3Rvci5TY3JpcHQuX25leHRVbmlxdWVEaXNwbGF5TmFtZU51bWJlciA9IDE7Ci0K
LVdlYkluc3BlY3Rvci5TY3JpcHQucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJ
bnNwZWN0b3IuU2NyaXB0LAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGUu
cHJvdG90eXBlLAorICAgIHN0YXRpYyByZXNldFVuaXF1ZURpc3BsYXlOYW1lTnVtYmVycygpCisg
ICAgeworICAgICAgICBXZWJJbnNwZWN0b3IuU2NyaXB0Ll9uZXh0VW5pcXVlRGlzcGxheU5hbWVO
dW1iZXIgPSAxOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IGlkKCkKICAgICB7
CiAgICAgICAgIHJldHVybiB0aGlzLl9pZDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCByYW5n
ZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcmFuZ2U7Ci0gICAgfSwKKyAgICB9CiAK
ICAgICBnZXQgdXJsKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl91cmw7Ci0gICAgfSwK
KyAgICB9CiAKICAgICBnZXQgdXJsQ29tcG9uZW50cygpCiAgICAgewogICAgICAgICBpZiAoIXRo
aXMuX3VybENvbXBvbmVudHMpCiAgICAgICAgICAgICB0aGlzLl91cmxDb21wb25lbnRzID0gcGFy
c2VVUkwodGhpcy5fdXJsKTsKICAgICAgICAgcmV0dXJuIHRoaXMuX3VybENvbXBvbmVudHM7Ci0g
ICAgfSwKKyAgICB9CiAKICAgICBnZXQgbWltZVR5cGUoKQogICAgIHsKICAgICAgICAgcmV0dXJu
IHRoaXMuX3Jlc291cmNlLm1pbWVUeXBlOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGRpc3Bs
YXlOYW1lKCkKICAgICB7CkBAIC05OSwyNCArOTMsMjQgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdC5w
cm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl91bmlxdWVEaXNwbGF5TmFtZU51bWJlciA9
IHRoaXMuY29uc3RydWN0b3IuX25leHRVbmlxdWVEaXNwbGF5TmFtZU51bWJlcisrOwogCiAgICAg
ICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkFub255bW91cyBTY3JpcHQgJWQiKS5m
b3JtYXQodGhpcy5fdW5pcXVlRGlzcGxheU5hbWVOdW1iZXIpOwotICAgIH0sCisgICAgfQogCiAg
ICAgZ2V0IGluamVjdGVkKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9pbmplY3RlZDsK
LSAgICB9LAorICAgIH0KIAogICAgIGdldCByZXNvdXJjZSgpCiAgICAgewogICAgICAgICByZXR1
cm4gdGhpcy5fcmVzb3VyY2U7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc2NyaXB0U3ludGF4
VHJlZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc2NyaXB0U3ludGF4VHJlZTsKLSAg
ICB9LAorICAgIH0KIAotICAgIHJlcXVlc3RDb250ZW50RnJvbUJhY2tlbmQ6IGZ1bmN0aW9uKCkK
KyAgICByZXF1ZXN0Q29udGVudEZyb21CYWNrZW5kKCkKICAgICB7CiAgICAgICAgIGlmICghdGhp
cy5faWQpIHsKICAgICAgICAgICAgIC8vIFRoZXJlIGlzIG5vIGlkZW50aWZpZXIgdG8gcmVxdWVz
dCBjb250ZW50IHdpdGguIFJldHVybiBmYWxzZSB0byBjYXVzZSB0aGUKQEAgLTEyNSwxNSArMTE5
LDE1IEBAIFdlYkluc3BlY3Rvci5TY3JpcHQucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAg
ICAgICAgcmV0dXJuIERlYnVnZ2VyQWdlbnQuZ2V0U2NyaXB0U291cmNlLnByb21pc2UodGhpcy5f
aWQpOwotICAgIH0sCisgICAgfQogCi0gICAgc2F2ZUlkZW50aXR5VG9Db29raWU6IGZ1bmN0aW9u
KGNvb2tpZSkKKyAgICBzYXZlSWRlbnRpdHlUb0Nvb2tpZShjb29raWUpCiAgICAgewogICAgICAg
ICBjb29raWVbV2ViSW5zcGVjdG9yLlNjcmlwdC5VUkxDb29raWVLZXldID0gdGhpcy51cmw7CiAg
ICAgICAgIGNvb2tpZVtXZWJJbnNwZWN0b3IuU2NyaXB0LkRpc3BsYXlOYW1lQ29va2llS2V5XSA9
IHRoaXMuZGlzcGxheU5hbWU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZXF1ZXN0U2NyaXB0U3lu
dGF4VHJlZTogZnVuY3Rpb24oY2FsbGJhY2spCisgICAgcmVxdWVzdFNjcmlwdFN5bnRheFRyZWUo
Y2FsbGJhY2spCiAgICAgewogICAgICAgICBpZiAodGhpcy5fc2NyaXB0U3ludGF4VHJlZSkgewog
ICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgY2FsbGJhY2sodGhpcy5fc2NyaXB0
U3ludGF4VHJlZSk7IH0uYmluZCh0aGlzKSwgMCk7CkBAIC0xNTksMTEgKzE1MywxMSBAQCBXZWJJ
bnNwZWN0b3IuU2NyaXB0LnByb3RvdHlwZSA9IHsKICAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24o
ZXJyb3IpIHsKICAgICAgICAgICAgIG1ha2VTeW50YXhUcmVlQW5kQ2FsbENhbGxiYWNrKG51bGwp
OwogICAgICAgICB9KTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAgIF9y
ZXNvbHZlUmVzb3VyY2U6IGZ1bmN0aW9uKCkKKyAgICBfcmVzb2x2ZVJlc291cmNlKCkKICAgICB7
CiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYmUgYWJsZSB0byBhc3NvY2lhdGUgYSBTY3Jp
cHQgd2l0aCBhIFJlc291cmNlIHRocm91Z2ggaWRlbnRpZmllcnMsCiAgICAgICAgIC8vIHdlIHNo
b3VsZG4ndCBuZWVkIHRvIGxvb2t1cCBieSBVUkwsIHdoaWNoIGlzIG5vdCBzYWZlIHdpdGggZnJh
bWVzLCB3aGVyZSB0aGVyZSBtaWdodApAQCAtMjA4LDkgKzIwMiw5IEBAIFdlYkluc3BlY3Rvci5T
Y3JpcHQucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIG51bGw7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBfbWFrZVN5bnRheFRyZWU6IGZ1bmN0aW9uKHNvdXJjZVRleHQp
CisgICAgX21ha2VTeW50YXhUcmVlKHNvdXJjZVRleHQpCiAgICAgewogICAgICAgICBpZiAodGhp
cy5fc2NyaXB0U3ludGF4VHJlZSB8fCAhc291cmNlVGV4dCkKICAgICAgICAgICAgIHJldHVybjsK
QEAgLTIxOCwzICsyMTIsOSBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0LnByb3RvdHlwZSA9IHsKICAg
ICAgICAgdGhpcy5fc2NyaXB0U3ludGF4VHJlZSA9IG5ldyBXZWJJbnNwZWN0b3IuU2NyaXB0U3lu
dGF4VHJlZShzb3VyY2VUZXh0LCB0aGlzKTsKICAgICB9CiB9OworCitXZWJJbnNwZWN0b3IuU2Ny
aXB0LlR5cGVJZGVudGlmaWVyID0gInNjcmlwdCI7CitXZWJJbnNwZWN0b3IuU2NyaXB0LlVSTENv
b2tpZUtleSA9ICJzY3JpcHQtdXJsIjsKK1dlYkluc3BlY3Rvci5TY3JpcHQuRGlzcGxheU5hbWVD
b29raWVLZXkgPSAic2NyaXB0LWRpc3BsYXktbmFtZSI7CisKK1dlYkluc3BlY3Rvci5TY3JpcHQu
X25leHRVbmlxdWVEaXNwbGF5TmFtZU51bWJlciA9IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvU2NyaXB0U3ludGF4VHJlZS5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9TY3JpcHRTeW50YXhUcmVl
LmpzCmluZGV4IDVmMDgzOGEuLmZlZmUzZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9TY3JpcHRTeW50YXhUcmVlLmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9TY3JpcHRTeW50YXhUcmVlLmpz
CkBAIC0yMyw5NyArMjMsNDQgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
ICAqLwogCi1XZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZSA9IGZ1bmN0aW9uKHNvdXJjZVRl
eHQsIHNjcmlwdCkKK1dlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhUcmVlID0gY2xhc3MgU2NyaXB0
U3ludGF4VHJlZSBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIHsKLSAgICBjb25zb2xlLmFz
c2VydChzY3JpcHQgJiYgc2NyaXB0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlNjcmlwdCwgc2Ny
aXB0KTsKKyAgICBjb25zdHJ1Y3Rvcihzb3VyY2VUZXh0LCBzY3JpcHQpCisgICAgeworICAgICAg
ICBzdXBlcigpOwogCi0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwotICAgIHRo
aXMuX3NjcmlwdCA9IHNjcmlwdDsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoc2NyaXB0ICYmIHNj
cmlwdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5TY3JpcHQsIHNjcmlwdCk7CiAKLSAgICB0cnkg
ewotICAgICAgICB2YXIgZXNwcmltYVN5bnRheFRyZWUgPSBlc3ByaW1hLnBhcnNlKHNvdXJjZVRl
eHQsIHtyYW5nZTogdHJ1ZX0pOwotICAgICAgICB0aGlzLl9zeW50YXhUcmVlID0gdGhpcy5fY3Jl
YXRlSW50ZXJuYWxTeW50YXhUcmVlKGVzcHJpbWFTeW50YXhUcmVlKTsKLSAgICAgICAgdGhpcy5f
cGFyc2VkU3VjY2Vzc2Z1bGx5ID0gdHJ1ZTsKLSAgICB9IGNhdGNoIChlcnJvcikgewotICAgICAg
ICB0aGlzLl9wYXJzZWRTdWNjZXNzZnVsbHkgPSBmYWxzZTsKLSAgICAgICAgdGhpcy5fc3ludGF4
VHJlZSA9IG51bGw7Ci0gICAgICAgIGNvbnNvbGUuZXJyb3IoIkNvdWxkbid0IHBhcnNlIEphdmFT
Y3JpcHQgRmlsZTogIiArIHNjcmlwdC51cmwsIGVycm9yKTsKKyAgICAgICAgdGhpcy5fc2NyaXB0
ID0gc2NyaXB0OworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICB2YXIgZXNwcmltYVN5bnRh
eFRyZWUgPSBlc3ByaW1hLnBhcnNlKHNvdXJjZVRleHQsIHtyYW5nZTogdHJ1ZX0pOworICAgICAg
ICAgICAgdGhpcy5fc3ludGF4VHJlZSA9IHRoaXMuX2NyZWF0ZUludGVybmFsU3ludGF4VHJlZShl
c3ByaW1hU3ludGF4VHJlZSk7CisgICAgICAgICAgICB0aGlzLl9wYXJzZWRTdWNjZXNzZnVsbHkg
PSB0cnVlOworICAgICAgICB9IGNhdGNoIChlcnJvcikgeworICAgICAgICAgICAgdGhpcy5fcGFy
c2VkU3VjY2Vzc2Z1bGx5ID0gZmFsc2U7CisgICAgICAgICAgICB0aGlzLl9zeW50YXhUcmVlID0g
bnVsbDsKKyAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIkNvdWxkbid0IHBhcnNlIEphdmFTY3Jp
cHQgRmlsZTogIiArIHNjcmlwdC51cmwsIGVycm9yKTsKKyAgICAgICAgfQogICAgIH0KLX07Ci0K
LS8vIFRoaXMgc2hvdWxkIGJlIGtlcHQgaW4gc3luYyB3aXRoIGFuIGVudW0gaW4gSmF2YVNjaXB0
Q29yZS9ydW50aW1lL1R5cGVQcm9maWxlci5oCi1XZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJl
ZS5UeXBlUHJvZmlsZXJTZWFyY2hEZXNjcmlwdG9yID0gewotICAgIE5vcm1hbEV4cHJlc3Npb246
IDEsCi0gICAgRnVuY3Rpb25SZXR1cm46IDIKLX07Ci0KLVdlYkluc3BlY3Rvci5TY3JpcHRTeW50
YXhUcmVlLk5vZGVUeXBlID0gewotICAgIEFzc2lnbm1lbnRFeHByZXNzaW9uOiBTeW1ib2woImFz
c2lnbm1lbnQtZXhwcmVzc2lvbiIpLAotICAgIEFycmF5RXhwcmVzc2lvbjogU3ltYm9sKCJhcnJh
eS1leHByZXNzaW9uIiksCi0gICAgQXJyYXlQYXR0ZXJuOiBTeW1ib2woImFycmF5LXBhdHRlcm4i
KSwKLSAgICBCbG9ja1N0YXRlbWVudDogU3ltYm9sKCJibG9jay1zdGF0ZW1lbnQiKSwKLSAgICBC
aW5hcnlFeHByZXNzaW9uOiBTeW1ib2woImJpbmFyeS1leHByZXNzaW9uIiksCi0gICAgQnJlYWtT
dGF0ZW1lbnQ6IFN5bWJvbCgiYnJlYWstc3RhdGVtZW50IiksCi0gICAgQ2FsbEV4cHJlc3Npb246
IFN5bWJvbCgiY2FsbC1leHByZXNzaW9uIiksCi0gICAgQ2F0Y2hDbGF1c2U6IFN5bWJvbCgiY2F0
Y2gtY2xhdXNlIiksCi0gICAgQ29uZGl0aW9uYWxFeHByZXNzaW9uOiBTeW1ib2woImNvbmRpdGlv
bmFsLWV4cHJlc3Npb24iKSwKLSAgICBDb250aW51ZVN0YXRlbWVudDogU3ltYm9sKCJjb250aW51
ZS1zdGF0ZW1lbnQiKSwKLSAgICBEb1doaWxlU3RhdGVtZW50OiBTeW1ib2woImRvLXdoaWxlLXN0
YXRlbWVudCIpLAotICAgIERlYnVnZ2VyU3RhdGVtZW50OiBTeW1ib2woImRlYnVnZ2VyLXN0YXRl
bWVudCIpLAotICAgIEVtcHR5U3RhdGVtZW50OiBTeW1ib2woImVtcHR5LXN0YXRlbWVudCIpLAot
ICAgIEV4cHJlc3Npb25TdGF0ZW1lbnQ6IFN5bWJvbCgiZXhwcmVzc2lvbi1zdGF0ZW1lbnQiKSwK
LSAgICBGb3JTdGF0ZW1lbnQ6IFN5bWJvbCgiZm9yLXN0YXRlbWVudCIpLAotICAgIEZvckluU3Rh
dGVtZW50OiBTeW1ib2woImZvci1pbi1zdGF0ZW1lbnQiKSwKLSAgICBGb3JPZlN0YXRlbWVudDog
U3ltYm9sKCJmb3Itb2Ytc3RhdGVtZW50IiksCi0gICAgRnVuY3Rpb25EZWNsYXJhdGlvbjogU3lt
Ym9sKCJmdW5jdGlvbi1kZWNsYXJhdGlvbiIpLAotICAgIEZ1bmN0aW9uRXhwcmVzc2lvbjogU3lt
Ym9sKCJmdW5jdGlvbi1leHByZXNzaW9uIiksCi0gICAgSWRlbnRpZmllcjogU3ltYm9sKCJpZGVu
dGlmaWVyIiksCi0gICAgSWZTdGF0ZW1lbnQ6IFN5bWJvbCgiaWYtc3RhdGVtZW50IiksCi0gICAg
TGl0ZXJhbDogU3ltYm9sKCJsaXRlcmFsIiksCi0gICAgTGFiZWxlZFN0YXRlbWVudDogU3ltYm9s
KCJsYWJlbGVkLXN0YXRlbWVudCIpLAotICAgIExvZ2ljYWxFeHByZXNzaW9uOiBTeW1ib2woImxv
Z2ljYWwtZXhwcmVzc2lvbiIpLAotICAgIE1lbWJlckV4cHJlc3Npb246IFN5bWJvbCgibWVtYmVy
LWV4cHJlc3Npb24iKSwKLSAgICBOZXdFeHByZXNzaW9uOiBTeW1ib2woIm5ldy1leHByZXNzaW9u
IiksCi0gICAgT2JqZWN0RXhwcmVzc2lvbjogU3ltYm9sKCJvYmplY3QtZXhwcmVzc2lvbiIpLAot
ICAgIE9iamVjdFBhdHRlcm46IFN5bWJvbCgib2JqZWN0LXBhdHRlcm4iKSwKLSAgICBQcm9ncmFt
OiBTeW1ib2woInByb2dyYW0iKSwKLSAgICBQcm9wZXJ0eTogU3ltYm9sKCJwcm9wZXJ0eSIpLAot
ICAgIFJldHVyblN0YXRlbWVudDogU3ltYm9sKCJyZXR1cm4tc3RhdGVtZW50IiksCi0gICAgU2Vx
dWVuY2VFeHByZXNzaW9uOiBTeW1ib2woInNlcXVlbmNlLWV4cHJlc3Npb24iKSwKLSAgICBTd2l0
Y2hTdGF0ZW1lbnQ6IFN5bWJvbCgic3dpdGNoLXN0YXRlbWVudCIpLAotICAgIFN3aXRjaENhc2U6
IFN5bWJvbCgic3dpdGNoLWNhc2UiKSwKLSAgICBUaGlzRXhwcmVzc2lvbjogU3ltYm9sKCJ0aGlz
LWV4cHJlc3Npb24iKSwKLSAgICBUaHJvd1N0YXRlbWVudDogU3ltYm9sKCJ0aHJvdy1zdGF0ZW1l
bnQiKSwKLSAgICBUcnlTdGF0ZW1lbnQ6IFN5bWJvbCgidHJ5LXN0YXRlbWVudCIpLAotICAgIFVu
YXJ5RXhwcmVzc2lvbjogU3ltYm9sKCJ1bmFyeS1leHByZXNzaW9uIiksCi0gICAgVXBkYXRlRXhw
cmVzc2lvbjogU3ltYm9sKCJ1cGRhdGUtZXhwcmVzc2lvbiIpLAotICAgIFZhcmlhYmxlRGVjbGFy
YXRpb246IFN5bWJvbCgidmFyaWFibGUtZGVjbGFyYXRpb24iKSwKLSAgICBWYXJpYWJsZURlY2xh
cmF0b3I6IFN5bWJvbCgidmFyaWFibGUtZGVjbGFyYXRvciIpLAotICAgIFdoaWxlU3RhdGVtZW50
OiBTeW1ib2woIndoaWxlLXN0YXRlbWVudCIpLAotICAgIFdpdGhTdGF0ZW1lbnQ6IFN5bWJvbCgi
d2l0aC1zdGF0ZW1lbnQiKQotfTsKLQotV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUucHJv
dG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJl
ZSwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlLAogCiAgICAg
Ly8gUHVibGljCiAgICAgCiAgICAgZ2V0IHBhcnNlZFN1Y2Nlc3NmdWxseSgpCiAgICAgewogICAg
ICAgICByZXR1cm4gdGhpcy5fcGFyc2VkU3VjY2Vzc2Z1bGx5OwotICAgIH0sCisgICAgfQogCi0g
ICAgZm9yRWFjaE5vZGU6IGZ1bmN0aW9uKGNhbGxiYWNrKQorICAgIGZvckVhY2hOb2RlKGNhbGxi
YWNrKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fcGFyc2VkU3VjY2Vzc2Z1
bGx5KTsKICAgICAgICAgaWYgKCF0aGlzLl9wYXJzZWRTdWNjZXNzZnVsbHkpCiAgICAgICAgICAg
ICByZXR1cm47CiAKICAgICAgICAgdGhpcy5fcmVjdXJzZSh0aGlzLl9zeW50YXhUcmVlLCBjYWxs
YmFjaywgdGhpcy5fZGVmYXVsdFBhcnNlclN0YXRlKCkpOwotICAgIH0sCisgICAgfQogCi0gICAg
ZmlsdGVyOiBmdW5jdGlvbihwcmVkaWNhdGUsIHN0YXJ0Tm9kZSkgCisgICAgZmlsdGVyKHByZWRp
Y2F0ZSwgc3RhcnROb2RlKSAKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHN0YXJ0Tm9k
ZSAmJiB0aGlzLl9wYXJzZWRTdWNjZXNzZnVsbHkpOwogICAgICAgICBpZiAoIXRoaXMuX3BhcnNl
ZFN1Y2Nlc3NmdWxseSkKQEAgLTEzMSwxNyArNzgsMTcgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdFN5
bnRheFRyZWUucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9yZWN1cnNlKHN0YXJ0Tm9kZSwg
ZmlsdGVyLCB0aGlzLl9kZWZhdWx0UGFyc2VyU3RhdGUoKSk7CiAKICAgICAgICAgcmV0dXJuIG5v
ZGVzOwotICAgIH0sCisgICAgfQogCi0gICAgZmlsdGVyQnlSYW5nZTogZnVuY3Rpb24oc3RhcnRP
ZmZzZXQsIGVuZE9mZnNldCkKKyAgICBmaWx0ZXJCeVJhbmdlKHN0YXJ0T2Zmc2V0LCBlbmRPZmZz
ZXQpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9wYXJzZWRTdWNjZXNzZnVs
bHkpOwogICAgICAgICBpZiAoIXRoaXMuX3BhcnNlZFN1Y2Nlc3NmdWxseSkKICAgICAgICAgICAg
IHJldHVybiBbXTsKICAgICAgICAgCiAgICAgICAgIHZhciBhbGxOb2RlcyA9IFtdOwotICAgICAg
ICBjb25zdCBzdGFydCA9IDA7Ci0gICAgICAgIGNvbnN0IGVuZCA9IDE7CisgICAgICAgIHZhciBz
dGFydCA9IDA7CisgICAgICAgIHZhciBlbmQgPSAxOwogICAgICAgICBmdW5jdGlvbiBmaWx0ZXJG
b3JOb2Rlc0luUmFuZ2Uobm9kZSwgc3RhdGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIC8vIHBy
b2dyYW0gc3RhcnQgICAgICAgIHJhbmdlICAgICAgICAgICAgcHJvZ3JhbSBlbmQKQEAgLTE2Nyw5
ICsxMTQsOSBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIHRoaXMuZm9yRWFjaE5vZGUoZmlsdGVyRm9yTm9kZXNJblJhbmdlKTsKIAogICAgICAg
ICByZXR1cm4gYWxsTm9kZXM7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjb250YWluc05vbkVtcHR5
UmV0dXJuU3RhdGVtZW50OiBmdW5jdGlvbihzdGFydE5vZGUpCisgICAgY29udGFpbnNOb25FbXB0
eVJldHVyblN0YXRlbWVudChzdGFydE5vZGUpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2Vy
dChzdGFydE5vZGUgJiYgdGhpcy5fcGFyc2VkU3VjY2Vzc2Z1bGx5KTsKICAgICAgICAgaWYgKCF0
aGlzLl9wYXJzZWRTdWNjZXNzZnVsbHkpCkBAIC0xOTcsOSArMTQ0LDkgQEAgV2ViSW5zcGVjdG9y
LlNjcmlwdFN5bnRheFRyZWUucHJvdG90eXBlID0gewogICAgICAgICBzdGFydE5vZGUuYXR0YWNo
bWVudHMuX2hhc05vbkVtcHR5UmV0dXJuU3RhdGVtZW50ID0gaGFzTm9uRW1wdHlSZXR1cm5TdGF0
ZW1lbnQ7CiAKICAgICAgICAgcmV0dXJuIGhhc05vbkVtcHR5UmV0dXJuU3RhdGVtZW50OwotICAg
IH0sCisgICAgfQogCi0gICAgdXBkYXRlVHlwZXM6IGZ1bmN0aW9uKG5vZGVzVG9VcGRhdGUsIGNh
bGxiYWNrKQorICAgIHVwZGF0ZVR5cGVzKG5vZGVzVG9VcGRhdGUsIGNhbGxiYWNrKQogICAgIHsK
ICAgICAgICAgY29uc29sZS5hc3NlcnQoUnVudGltZUFnZW50LmdldFJ1bnRpbWVUeXBlc0ZvclZh
cmlhYmxlc0F0T2Zmc2V0cyk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KEFycmF5LmlzQXJyYXko
bm9kZXNUb1VwZGF0ZSkgJiYgdGhpcy5fcGFyc2VkU3VjY2Vzc2Z1bGx5KTsKQEAgLTI2OCwxMSAr
MjE1LDExIEBAIFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhUcmVlLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgfQogCiAgICAgICAgIFJ1bnRpbWVBZ2VudC5nZXRSdW50aW1lVHlwZXNGb3JWYXJpYWJs
ZXNBdE9mZnNldHMoYWxsUmVxdWVzdHMsIGhhbmRsZVR5cGVzKTsKLSAgICB9LAorICAgIH0KIAog
ICAgIC8vIFByaXZhdGUKIAotICAgIF9nYXRoZXJJZGVudGlmaWVyc0luRGVjbGFyYXRpb246IGZ1
bmN0aW9uKG5vZGUpCisgICAgX2dhdGhlcklkZW50aWZpZXJzSW5EZWNsYXJhdGlvbihub2RlKQog
ICAgIHsKICAgICAgICAgZnVuY3Rpb24gZ2F0aGVySWRlbnRpZmllcnMobm9kZSkgCiAgICAgICAg
IHsKQEAgLTMwNCwxNyArMjUxLDE3IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhUcmVlLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgY29uc29sZS5hc3NlcnQobm9kZS50eXBlID09PSBXZWJJbnNw
ZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5JZGVudGlmaWVyIHx8IG5vZGUudHlwZSA9
PT0gV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuT2JqZWN0UGF0dGVybiB8
fCBub2RlLnR5cGUgPT09IFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhUcmVlLk5vZGVUeXBlLkFy
cmF5UGF0dGVybik7CiAKICAgICAgICAgcmV0dXJuIGdhdGhlcklkZW50aWZpZXJzKG5vZGUpOwot
ICAgIH0sCisgICAgfQogCi0gICAgX2RlZmF1bHRQYXJzZXJTdGF0ZTogZnVuY3Rpb24oKSAKKyAg
ICBfZGVmYXVsdFBhcnNlclN0YXRlKCkgCiAgICAgewogICAgICAgICByZXR1cm4gewogICAgICAg
ICAgICAgc2hvdWxkU3RvcEVhcmx5OiBmYWxzZSwKICAgICAgICAgICAgIHNraXBDaGlsZE5vZGVz
OiBmYWxzZQogICAgICAgICB9OwotICAgIH0sCisgICAgfQogCi0gICAgX3JlY3Vyc2U6IGZ1bmN0
aW9uKG5vZGUsIGNhbGxiYWNrLCBzdGF0ZSkgCisgICAgX3JlY3Vyc2Uobm9kZSwgY2FsbGJhY2ss
IHN0YXRlKSAKICAgICB7CiAgICAgICAgIGlmICghbm9kZSkKICAgICAgICAgICAgIHJldHVybjsK
QEAgLTUxNSwxOSArNDYyLDE5IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhUcmVlLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIHN0YXRlLnNraXBDaGlsZE5vZGVzID0gZmFs
c2U7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcmVjdXJzZUFycmF5OiBmdW5jdGlvbihhcnJheSwg
Y2FsbGJhY2ssIHN0YXRlKSAKKyAgICBfcmVjdXJzZUFycmF5KGFycmF5LCBjYWxsYmFjaywgc3Rh
dGUpIAogICAgIHsKICAgICAgICAgZm9yICh2YXIgbm9kZSBvZiBhcnJheSkKICAgICAgICAgICAg
IHRoaXMuX3JlY3Vyc2Uobm9kZSwgY2FsbGJhY2ssIHN0YXRlKTsKLSAgICB9LAorICAgIH0KICAg
ICAKICAgICAvLyBUaGlzIGZ1bmN0aW9uIHRyYW5zbGF0ZXMgZnJvbSBlc3ByaW1hJ3MgQWJzdHJh
Y3QgU3ludGF4IFRyZWUgdG8gb3Vycy4gCiAgICAgLy8gTW9zdGx5LCB0aGlzIGlzIGp1c3QgdGhl
IGlkZW50aXR5IGZ1bmN0aW9uLiBXZSd2ZSBhZGRlZCBhbiBleHRyYSBpc0dldHRlck9yU2V0dGVy
IHByb3BlcnR5IGZvciBmdW5jdGlvbnMuCiAgICAgLy8gT3VyIEFTVCBjb21wbGllcyB3aXRoIHRo
ZSBNb3ppbGxhIHBhcnNlciBBUEk6CiAgICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5v
cmcvZW4tVVMvZG9jcy9Nb3ppbGxhL1Byb2plY3RzL1NwaWRlck1vbmtleS9QYXJzZXJfQVBJCi0g
ICAgX2NyZWF0ZUludGVybmFsU3ludGF4VHJlZTogZnVuY3Rpb24obm9kZSkgCisgICAgX2NyZWF0
ZUludGVybmFsU3ludGF4VHJlZShub2RlKSAKICAgICB7CiAgICAgICAgIGlmICghbm9kZSkKICAg
ICAgICAgICAgIHJldHVybiBudWxsOwpAQCAtODQ5LDMgKzc5Niw1NSBAQCBXZWJJbnNwZWN0b3Iu
U2NyaXB0U3ludGF4VHJlZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAg
ICAgfQogfTsKKworLy8gVGhpcyBzaG91bGQgYmUga2VwdCBpbiBzeW5jIHdpdGggYW4gZW51bSBp
biBKYXZhU2NpcHRDb3JlL3J1bnRpbWUvVHlwZVByb2ZpbGVyLmgKK1dlYkluc3BlY3Rvci5TY3Jp
cHRTeW50YXhUcmVlLlR5cGVQcm9maWxlclNlYXJjaERlc2NyaXB0b3IgPSB7CisgICAgTm9ybWFs
RXhwcmVzc2lvbjogMSwKKyAgICBGdW5jdGlvblJldHVybjogMgorfTsKKworV2ViSW5zcGVjdG9y
LlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUgPSB7CisgICAgQXNzaWdubWVudEV4cHJlc3Npb246
IFN5bWJvbCgiYXNzaWdubWVudC1leHByZXNzaW9uIiksCisgICAgQXJyYXlFeHByZXNzaW9uOiBT
eW1ib2woImFycmF5LWV4cHJlc3Npb24iKSwKKyAgICBBcnJheVBhdHRlcm46IFN5bWJvbCgiYXJy
YXktcGF0dGVybiIpLAorICAgIEJsb2NrU3RhdGVtZW50OiBTeW1ib2woImJsb2NrLXN0YXRlbWVu
dCIpLAorICAgIEJpbmFyeUV4cHJlc3Npb246IFN5bWJvbCgiYmluYXJ5LWV4cHJlc3Npb24iKSwK
KyAgICBCcmVha1N0YXRlbWVudDogU3ltYm9sKCJicmVhay1zdGF0ZW1lbnQiKSwKKyAgICBDYWxs
RXhwcmVzc2lvbjogU3ltYm9sKCJjYWxsLWV4cHJlc3Npb24iKSwKKyAgICBDYXRjaENsYXVzZTog
U3ltYm9sKCJjYXRjaC1jbGF1c2UiKSwKKyAgICBDb25kaXRpb25hbEV4cHJlc3Npb246IFN5bWJv
bCgiY29uZGl0aW9uYWwtZXhwcmVzc2lvbiIpLAorICAgIENvbnRpbnVlU3RhdGVtZW50OiBTeW1i
b2woImNvbnRpbnVlLXN0YXRlbWVudCIpLAorICAgIERvV2hpbGVTdGF0ZW1lbnQ6IFN5bWJvbCgi
ZG8td2hpbGUtc3RhdGVtZW50IiksCisgICAgRGVidWdnZXJTdGF0ZW1lbnQ6IFN5bWJvbCgiZGVi
dWdnZXItc3RhdGVtZW50IiksCisgICAgRW1wdHlTdGF0ZW1lbnQ6IFN5bWJvbCgiZW1wdHktc3Rh
dGVtZW50IiksCisgICAgRXhwcmVzc2lvblN0YXRlbWVudDogU3ltYm9sKCJleHByZXNzaW9uLXN0
YXRlbWVudCIpLAorICAgIEZvclN0YXRlbWVudDogU3ltYm9sKCJmb3Itc3RhdGVtZW50IiksCisg
ICAgRm9ySW5TdGF0ZW1lbnQ6IFN5bWJvbCgiZm9yLWluLXN0YXRlbWVudCIpLAorICAgIEZvck9m
U3RhdGVtZW50OiBTeW1ib2woImZvci1vZi1zdGF0ZW1lbnQiKSwKKyAgICBGdW5jdGlvbkRlY2xh
cmF0aW9uOiBTeW1ib2woImZ1bmN0aW9uLWRlY2xhcmF0aW9uIiksCisgICAgRnVuY3Rpb25FeHBy
ZXNzaW9uOiBTeW1ib2woImZ1bmN0aW9uLWV4cHJlc3Npb24iKSwKKyAgICBJZGVudGlmaWVyOiBT
eW1ib2woImlkZW50aWZpZXIiKSwKKyAgICBJZlN0YXRlbWVudDogU3ltYm9sKCJpZi1zdGF0ZW1l
bnQiKSwKKyAgICBMaXRlcmFsOiBTeW1ib2woImxpdGVyYWwiKSwKKyAgICBMYWJlbGVkU3RhdGVt
ZW50OiBTeW1ib2woImxhYmVsZWQtc3RhdGVtZW50IiksCisgICAgTG9naWNhbEV4cHJlc3Npb246
IFN5bWJvbCgibG9naWNhbC1leHByZXNzaW9uIiksCisgICAgTWVtYmVyRXhwcmVzc2lvbjogU3lt
Ym9sKCJtZW1iZXItZXhwcmVzc2lvbiIpLAorICAgIE5ld0V4cHJlc3Npb246IFN5bWJvbCgibmV3
LWV4cHJlc3Npb24iKSwKKyAgICBPYmplY3RFeHByZXNzaW9uOiBTeW1ib2woIm9iamVjdC1leHBy
ZXNzaW9uIiksCisgICAgT2JqZWN0UGF0dGVybjogU3ltYm9sKCJvYmplY3QtcGF0dGVybiIpLAor
ICAgIFByb2dyYW06IFN5bWJvbCgicHJvZ3JhbSIpLAorICAgIFByb3BlcnR5OiBTeW1ib2woInBy
b3BlcnR5IiksCisgICAgUmV0dXJuU3RhdGVtZW50OiBTeW1ib2woInJldHVybi1zdGF0ZW1lbnQi
KSwKKyAgICBTZXF1ZW5jZUV4cHJlc3Npb246IFN5bWJvbCgic2VxdWVuY2UtZXhwcmVzc2lvbiIp
LAorICAgIFN3aXRjaFN0YXRlbWVudDogU3ltYm9sKCJzd2l0Y2gtc3RhdGVtZW50IiksCisgICAg
U3dpdGNoQ2FzZTogU3ltYm9sKCJzd2l0Y2gtY2FzZSIpLAorICAgIFRoaXNFeHByZXNzaW9uOiBT
eW1ib2woInRoaXMtZXhwcmVzc2lvbiIpLAorICAgIFRocm93U3RhdGVtZW50OiBTeW1ib2woInRo
cm93LXN0YXRlbWVudCIpLAorICAgIFRyeVN0YXRlbWVudDogU3ltYm9sKCJ0cnktc3RhdGVtZW50
IiksCisgICAgVW5hcnlFeHByZXNzaW9uOiBTeW1ib2woInVuYXJ5LWV4cHJlc3Npb24iKSwKKyAg
ICBVcGRhdGVFeHByZXNzaW9uOiBTeW1ib2woInVwZGF0ZS1leHByZXNzaW9uIiksCisgICAgVmFy
aWFibGVEZWNsYXJhdGlvbjogU3ltYm9sKCJ2YXJpYWJsZS1kZWNsYXJhdGlvbiIpLAorICAgIFZh
cmlhYmxlRGVjbGFyYXRvcjogU3ltYm9sKCJ2YXJpYWJsZS1kZWNsYXJhdG9yIiksCisgICAgV2hp
bGVTdGF0ZW1lbnQ6IFN5bWJvbCgid2hpbGUtc3RhdGVtZW50IiksCisgICAgV2l0aFN0YXRlbWVu
dDogU3ltYm9sKCJ3aXRoLXN0YXRlbWVudCIpCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1NjcmlwdFRpbWVsaW5lUmVjb3JkLmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1NjcmlwdFRpbWVsaW5l
UmVjb3JkLmpzCmluZGV4IDRkYzNjN2QuLjlhNGZlYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9TY3JpcHRUaW1lbGluZVJlY29yZC5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvU2NyaXB0VGlt
ZWxpbmVSZWNvcmQuanMKQEAgLTIzLDE5ICsyMywxMjEgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVSZWNvcmQg
PSBmdW5jdGlvbihldmVudFR5cGUsIHN0YXJ0VGltZSwgZW5kVGltZSwgY2FsbEZyYW1lcywgc291
cmNlQ29kZUxvY2F0aW9uLCBkZXRhaWxzLCBwcm9maWxlUGF5bG9hZCkKK1dlYkluc3BlY3Rvci5T
Y3JpcHRUaW1lbGluZVJlY29yZCA9IGNsYXNzIFNjcmlwdFRpbWVsaW5lUmVjb3JkIGV4dGVuZHMg
V2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkCiB7Ci0gICAgV2ViSW5zcGVjdG9yLlRpbWVsaW5l
UmVjb3JkLmNhbGwodGhpcywgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkLlR5cGUuU2NyaXB0
LCBzdGFydFRpbWUsIGVuZFRpbWUsIGNhbGxGcmFtZXMsIHNvdXJjZUNvZGVMb2NhdGlvbik7Cisg
ICAgY29uc3RydWN0b3IoZXZlbnRUeXBlLCBzdGFydFRpbWUsIGVuZFRpbWUsIGNhbGxGcmFtZXMs
IHNvdXJjZUNvZGVMb2NhdGlvbiwgZGV0YWlscywgcHJvZmlsZVBheWxvYWQpCisgICAgeworICAg
ICAgICBzdXBlcihXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQuVHlwZS5TY3JpcHQsIHN0YXJ0
VGltZSwgZW5kVGltZSwgY2FsbEZyYW1lcywgc291cmNlQ29kZUxvY2F0aW9uKTsKIAotICAgIGNv
bnNvbGUuYXNzZXJ0KGV2ZW50VHlwZSk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGV2ZW50VHlw
ZSk7CiAKLSAgICBpZiAoZXZlbnRUeXBlIGluIFdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZVJl
Y29yZC5FdmVudFR5cGUpCi0gICAgICAgIGV2ZW50VHlwZSA9IFdlYkluc3BlY3Rvci5TY3JpcHRU
aW1lbGluZVJlY29yZC5FdmVudFR5cGVbZXZlbnRUeXBlXTsKKyAgICAgICAgaWYgKGV2ZW50VHlw
ZSBpbiBXZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVSZWNvcmQuRXZlbnRUeXBlKQorICAgICAg
ICAgICAgZXZlbnRUeXBlID0gV2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5lUmVjb3JkLkV2ZW50
VHlwZVtldmVudFR5cGVdOwogCi0gICAgdGhpcy5fZXZlbnRUeXBlID0gZXZlbnRUeXBlOwotICAg
IHRoaXMuX2RldGFpbHMgPSBkZXRhaWxzIHx8ICIiOwotICAgIHRoaXMuX3Byb2ZpbGVQYXlsb2Fk
ID0gcHJvZmlsZVBheWxvYWQgfHwgbnVsbDsKLSAgICB0aGlzLl9wcm9maWxlID0gbnVsbDsKKyAg
ICAgICAgdGhpcy5fZXZlbnRUeXBlID0gZXZlbnRUeXBlOworICAgICAgICB0aGlzLl9kZXRhaWxz
ID0gZGV0YWlscyB8fCAiIjsKKyAgICAgICAgdGhpcy5fcHJvZmlsZVBheWxvYWQgPSBwcm9maWxl
UGF5bG9hZCB8fCBudWxsOworICAgICAgICB0aGlzLl9wcm9maWxlID0gbnVsbDsKKyAgICB9CisK
KyAgICAvLyBQdWJsaWMKKworICAgIGdldCBldmVudFR5cGUoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHRoaXMuX2V2ZW50VHlwZTsKKyAgICB9CisKKyAgICBnZXQgZGV0YWlscygpCisgICAgewor
ICAgICAgICByZXR1cm4gdGhpcy5fZGV0YWlsczsKKyAgICB9CisKKyAgICBnZXQgcHJvZmlsZSgp
CisgICAgeworICAgICAgICB0aGlzLl9pbml0aWFsaXplUHJvZmlsZUZyb21QYXlsb2FkKCk7Cisg
ICAgICAgIHJldHVybiB0aGlzLl9wcm9maWxlOworICAgIH0KKworICAgIHNhdmVJZGVudGl0eVRv
Q29va2llKGNvb2tpZSkKKyAgICB7CisgICAgICAgIHN1cGVyLnNhdmVJZGVudGl0eVRvQ29va2ll
KGNvb2tpZSk7CisKKyAgICAgICAgY29va2llW1dlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZVJl
Y29yZC5FdmVudFR5cGVDb29raWVLZXldID0gdGhpcy5fZXZlbnRUeXBlOworICAgICAgICBjb29r
aWVbV2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5lUmVjb3JkLkRldGFpbHNDb29raWVLZXldID0g
dGhpcy5fZGV0YWlsczsKKyAgICB9CisKKyAgICAvLyBQcml2YXRlCisKKyAgICBfaW5pdGlhbGl6
ZVByb2ZpbGVGcm9tUGF5bG9hZChwYXlsb2FkKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX3By
b2ZpbGUgfHwgIXRoaXMuX3Byb2ZpbGVQYXlsb2FkKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIHZhciBwYXlsb2FkID0gdGhpcy5fcHJvZmlsZVBheWxvYWQ7CisgICAgICAgIGRlbGV0
ZSB0aGlzLl9wcm9maWxlUGF5bG9hZDsKKworICAgICAgICBjb25zb2xlLmFzc2VydChwYXlsb2Fk
LnJvb3ROb2RlcyBpbnN0YW5jZW9mIEFycmF5KTsKKworICAgICAgICBmdW5jdGlvbiBwcm9maWxl
Tm9kZUZyb21QYXlsb2FkKG5vZGVQYXlsb2FkKQorICAgICAgICB7CisgICAgICAgICAgICBjb25z
b2xlLmFzc2VydCgiaWQiIGluIG5vZGVQYXlsb2FkKTsKKyAgICAgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KG5vZGVQYXlsb2FkLmNhbGxzIGluc3RhbmNlb2YgQXJyYXkpOworCisgICAgICAgICAgICBp
ZiAobm9kZVBheWxvYWQudXJsKSB7CisgICAgICAgICAgICAgICAgdmFyIHNvdXJjZUNvZGUgPSBX
ZWJJbnNwZWN0b3IuZnJhbWVSZXNvdXJjZU1hbmFnZXIucmVzb3VyY2VGb3JVUkwobm9kZVBheWxv
YWQudXJsKTsKKyAgICAgICAgICAgICAgICBpZiAoIXNvdXJjZUNvZGUpCisgICAgICAgICAgICAg
ICAgICAgIHNvdXJjZUNvZGUgPSBXZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2VyLnNjcmlwdHNG
b3JVUkwobm9kZVBheWxvYWQudXJsKVswXTsKKworICAgICAgICAgICAgICAgIC8vIFRoZSBsaW5l
TnVtYmVyIGlzIDEtYmFzZWQsIGJ1dCB3ZSBleHBlY3QgMC1iYXNlZC4KKyAgICAgICAgICAgICAg
ICB2YXIgbGluZU51bWJlciA9IG5vZGVQYXlsb2FkLmxpbmVOdW1iZXIgLSAxOworCisgICAgICAg
ICAgICAgICAgdmFyIHNvdXJjZUNvZGVMb2NhdGlvbiA9IHNvdXJjZUNvZGUgPyBzb3VyY2VDb2Rl
LmNyZWF0ZUxhenlTb3VyY2VDb2RlTG9jYXRpb24obGluZU51bWJlciwgbm9kZVBheWxvYWQuY29s
dW1uTnVtYmVyKSA6IG51bGw7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciBpc1By
b2dyYW1Db2RlID0gbm9kZVBheWxvYWQuZnVuY3Rpb25OYW1lID09PSAiKHByb2dyYW0pIjsKKyAg
ICAgICAgICAgIHZhciBpc0Fub255bW91c0Z1bmN0aW9uID0gbm9kZVBheWxvYWQuZnVuY3Rpb25O
YW1lID09PSAiKGFub255bW91cyBmdW5jdGlvbikiOworCisgICAgICAgICAgICB2YXIgdHlwZSA9
IGlzUHJvZ3JhbUNvZGUgPyBXZWJJbnNwZWN0b3IuUHJvZmlsZU5vZGUuVHlwZS5Qcm9ncmFtIDog
V2ViSW5zcGVjdG9yLlByb2ZpbGVOb2RlLlR5cGUuRnVuY3Rpb247CisgICAgICAgICAgICB2YXIg
ZnVuY3Rpb25OYW1lID0gIWlzUHJvZ3JhbUNvZGUgJiYgIWlzQW5vbnltb3VzRnVuY3Rpb24gJiYg
bm9kZVBheWxvYWQuZnVuY3Rpb25OYW1lICE9PSAiKHVua25vd24pIiA/IG5vZGVQYXlsb2FkLmZ1
bmN0aW9uTmFtZSA6IG51bGw7CisgICAgICAgICAgICB2YXIgY2FsbHMgPSBub2RlUGF5bG9hZC5j
YWxscy5tYXAocHJvZmlsZU5vZGVDYWxsRnJvbVBheWxvYWQpOworCisgICAgICAgICAgICByZXR1
cm4gbmV3IFdlYkluc3BlY3Rvci5Qcm9maWxlTm9kZShub2RlUGF5bG9hZC5pZCwgdHlwZSwgZnVu
Y3Rpb25OYW1lLCBzb3VyY2VDb2RlTG9jYXRpb24sIGNhbGxzLCBub2RlUGF5bG9hZC5jaGlsZHJl
bik7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBwcm9maWxlTm9kZUNhbGxGcm9tUGF5
bG9hZChub2RlQ2FsbFBheWxvYWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KCJzdGFydFRpbWUiIGluIG5vZGVDYWxsUGF5bG9hZCk7CisgICAgICAgICAgICBjb25zb2xl
LmFzc2VydCgidG90YWxUaW1lIiBpbiBub2RlQ2FsbFBheWxvYWQpOworCisgICAgICAgICAgICBy
ZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5Qcm9maWxlTm9kZUNhbGwobm9kZUNhbGxQYXlsb2FkLnN0
YXJ0VGltZSwgbm9kZUNhbGxQYXlsb2FkLnRvdGFsVGltZSk7CisgICAgICAgIH0KKworICAgICAg
ICB2YXIgcm9vdE5vZGVzID0gcGF5bG9hZC5yb290Tm9kZXM7CisKKyAgICAgICAgLy8gSXRlcmF0
ZSBvdmVyIHRoZSBub2RlIHRyZWUgdXNpbmcgYSBzdGFjay4gRG9pbmcgdGhpcyByZWN1cnNpdmVs
eSBjYW4gZWFzaWx5IGNhdXNlIGEgc3RhY2sgb3ZlcmZsb3cuCisgICAgICAgIC8vIFdlIHRyYXZl
cnNlIHRoZSBwcm9maWxlIGluIHBvc3Qtb3JkZXIgYW5kIGNvbnZlcnQgdGhlIHBheWxvYWRzIGlu
IHBsYWNlIHVudGlsIHdlIGdldCBiYWNrIHRvIHRoZSByb290LgorICAgICAgICB2YXIgc3RhY2sg
PSBbe3BhcmVudDoge2NoaWxkcmVuOiByb290Tm9kZXN9LCBpbmRleDogMCwgcm9vdDogdHJ1ZX1d
OworICAgICAgICB3aGlsZSAoc3RhY2subGVuZ3RoKSB7CisgICAgICAgICAgICB2YXIgZW50cnkg
PSBzdGFjay5sYXN0VmFsdWU7CisKKyAgICAgICAgICAgIGlmIChlbnRyeS5pbmRleCA8IGVudHJ5
LnBhcmVudC5jaGlsZHJlbi5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICB2YXIgY2hpbGROb2Rl
UGF5bG9hZCA9IGVudHJ5LnBhcmVudC5jaGlsZHJlbltlbnRyeS5pbmRleF07CisgICAgICAgICAg
ICAgICAgaWYgKGNoaWxkTm9kZVBheWxvYWQuY2hpbGRyZW4gJiYgY2hpbGROb2RlUGF5bG9hZC5j
aGlsZHJlbi5sZW5ndGgpCisgICAgICAgICAgICAgICAgICAgIHN0YWNrLnB1c2goe3BhcmVudDog
Y2hpbGROb2RlUGF5bG9hZCwgaW5kZXg6IDB9KTsKKworICAgICAgICAgICAgICAgICsrZW50cnku
aW5kZXg7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmICghZW50cnku
cm9vdCkKKyAgICAgICAgICAgICAgICAgICAgZW50cnkucGFyZW50LmNoaWxkcmVuID0gZW50cnku
cGFyZW50LmNoaWxkcmVuLm1hcChwcm9maWxlTm9kZUZyb21QYXlsb2FkKTsKKyAgICAgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHJvb3ROb2RlcyA9IHJvb3ROb2Rlcy5tYXAo
cHJvZmlsZU5vZGVGcm9tUGF5bG9hZCk7CisKKyAgICAgICAgICAgICAgICBzdGFjay5wb3AoKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuX3Byb2ZpbGUgPSBuZXcg
V2ViSW5zcGVjdG9yLlByb2ZpbGUocm9vdE5vZGVzKTsKKyAgICB9CiB9OwogCiBXZWJJbnNwZWN0
b3IuU2NyaXB0VGltZWxpbmVSZWNvcmQuRXZlbnRUeXBlID0gewpAQCAtMjQ2LDEwOCArMzQ4LDMg
QEAgV2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5lUmVjb3JkLkV2ZW50VHlwZS5kaXNwbGF5TmFt
ZSA9IGZ1bmN0aW9uKGV2ZW50VHlwZSwgZGUKIFdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZVJl
Y29yZC5UeXBlSWRlbnRpZmllciA9ICJzY3JpcHQtdGltZWxpbmUtcmVjb3JkIjsKIFdlYkluc3Bl
Y3Rvci5TY3JpcHRUaW1lbGluZVJlY29yZC5FdmVudFR5cGVDb29raWVLZXkgPSAic2NyaXB0LXRp
bWVsaW5lLXJlY29yZC1ldmVudC10eXBlIjsKIFdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZVJl
Y29yZC5EZXRhaWxzQ29va2llS2V5ID0gInNjcmlwdC10aW1lbGluZS1yZWNvcmQtZGV0YWlscyI7
Ci0KLVdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZVJlY29yZC5wcm90b3R5cGUgPSB7Ci0gICAg
Y29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZVJlY29yZCwKLQotICAgIC8v
IFB1YmxpYwotCi0gICAgZ2V0IGV2ZW50VHlwZSgpCi0gICAgewotICAgICAgICByZXR1cm4gdGhp
cy5fZXZlbnRUeXBlOwotICAgIH0sCi0KLSAgICBnZXQgZGV0YWlscygpCi0gICAgewotICAgICAg
ICByZXR1cm4gdGhpcy5fZGV0YWlsczsKLSAgICB9LAotCi0gICAgZ2V0IHByb2ZpbGUoKQotICAg
IHsKLSAgICAgICAgdGhpcy5faW5pdGlhbGl6ZVByb2ZpbGVGcm9tUGF5bG9hZCgpOwotICAgICAg
ICByZXR1cm4gdGhpcy5fcHJvZmlsZTsKLSAgICB9LAotCi0gICAgc2F2ZUlkZW50aXR5VG9Db29r
aWU6IGZ1bmN0aW9uKGNvb2tpZSkKLSAgICB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5UaW1lbGlu
ZVJlY29yZC5wcm90b3R5cGUuc2F2ZUlkZW50aXR5VG9Db29raWUuY2FsbCh0aGlzLCBjb29raWUp
OwotCi0gICAgICAgIGNvb2tpZVtXZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVSZWNvcmQuRXZl
bnRUeXBlQ29va2llS2V5XSA9IHRoaXMuX2V2ZW50VHlwZTsKLSAgICAgICAgY29va2llW1dlYklu
c3BlY3Rvci5TY3JpcHRUaW1lbGluZVJlY29yZC5EZXRhaWxzQ29va2llS2V5XSA9IHRoaXMuX2Rl
dGFpbHM7Ci0gICAgfSwKLQotICAgIC8vIFByaXZhdGUKLQotICAgIF9pbml0aWFsaXplUHJvZmls
ZUZyb21QYXlsb2FkOiBmdW5jdGlvbihwYXlsb2FkKQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMu
X3Byb2ZpbGUgfHwgIXRoaXMuX3Byb2ZpbGVQYXlsb2FkKQotICAgICAgICAgICAgcmV0dXJuOwot
Ci0gICAgICAgIHZhciBwYXlsb2FkID0gdGhpcy5fcHJvZmlsZVBheWxvYWQ7Ci0gICAgICAgIGRl
bGV0ZSB0aGlzLl9wcm9maWxlUGF5bG9hZDsKLQotICAgICAgICBjb25zb2xlLmFzc2VydChwYXls
b2FkLnJvb3ROb2RlcyBpbnN0YW5jZW9mIEFycmF5KTsKLQotICAgICAgICBmdW5jdGlvbiBwcm9m
aWxlTm9kZUZyb21QYXlsb2FkKG5vZGVQYXlsb2FkKQotICAgICAgICB7Ci0gICAgICAgICAgICBj
b25zb2xlLmFzc2VydCgiaWQiIGluIG5vZGVQYXlsb2FkKTsKLSAgICAgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KG5vZGVQYXlsb2FkLmNhbGxzIGluc3RhbmNlb2YgQXJyYXkpOwotCi0gICAgICAgICAg
ICBpZiAobm9kZVBheWxvYWQudXJsKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHNvdXJjZUNvZGUg
PSBXZWJJbnNwZWN0b3IuZnJhbWVSZXNvdXJjZU1hbmFnZXIucmVzb3VyY2VGb3JVUkwobm9kZVBh
eWxvYWQudXJsKTsKLSAgICAgICAgICAgICAgICBpZiAoIXNvdXJjZUNvZGUpCi0gICAgICAgICAg
ICAgICAgICAgIHNvdXJjZUNvZGUgPSBXZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2VyLnNjcmlw
dHNGb3JVUkwobm9kZVBheWxvYWQudXJsKVswXTsKLQotICAgICAgICAgICAgICAgIC8vIFRoZSBs
aW5lTnVtYmVyIGlzIDEtYmFzZWQsIGJ1dCB3ZSBleHBlY3QgMC1iYXNlZC4KLSAgICAgICAgICAg
ICAgICB2YXIgbGluZU51bWJlciA9IG5vZGVQYXlsb2FkLmxpbmVOdW1iZXIgLSAxOwotCi0gICAg
ICAgICAgICAgICAgdmFyIHNvdXJjZUNvZGVMb2NhdGlvbiA9IHNvdXJjZUNvZGUgPyBzb3VyY2VD
b2RlLmNyZWF0ZUxhenlTb3VyY2VDb2RlTG9jYXRpb24obGluZU51bWJlciwgbm9kZVBheWxvYWQu
Y29sdW1uTnVtYmVyKSA6IG51bGw7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHZhciBp
c1Byb2dyYW1Db2RlID0gbm9kZVBheWxvYWQuZnVuY3Rpb25OYW1lID09PSAiKHByb2dyYW0pIjsK
LSAgICAgICAgICAgIHZhciBpc0Fub255bW91c0Z1bmN0aW9uID0gbm9kZVBheWxvYWQuZnVuY3Rp
b25OYW1lID09PSAiKGFub255bW91cyBmdW5jdGlvbikiOwotCi0gICAgICAgICAgICB2YXIgdHlw
ZSA9IGlzUHJvZ3JhbUNvZGUgPyBXZWJJbnNwZWN0b3IuUHJvZmlsZU5vZGUuVHlwZS5Qcm9ncmFt
IDogV2ViSW5zcGVjdG9yLlByb2ZpbGVOb2RlLlR5cGUuRnVuY3Rpb247Ci0gICAgICAgICAgICB2
YXIgZnVuY3Rpb25OYW1lID0gIWlzUHJvZ3JhbUNvZGUgJiYgIWlzQW5vbnltb3VzRnVuY3Rpb24g
JiYgbm9kZVBheWxvYWQuZnVuY3Rpb25OYW1lICE9PSAiKHVua25vd24pIiA/IG5vZGVQYXlsb2Fk
LmZ1bmN0aW9uTmFtZSA6IG51bGw7Ci0gICAgICAgICAgICB2YXIgY2FsbHMgPSBub2RlUGF5bG9h
ZC5jYWxscy5tYXAocHJvZmlsZU5vZGVDYWxsRnJvbVBheWxvYWQpOwotCi0gICAgICAgICAgICBy
ZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5Qcm9maWxlTm9kZShub2RlUGF5bG9hZC5pZCwgdHlwZSwg
ZnVuY3Rpb25OYW1lLCBzb3VyY2VDb2RlTG9jYXRpb24sIGNhbGxzLCBub2RlUGF5bG9hZC5jaGls
ZHJlbik7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBwcm9maWxlTm9kZUNhbGxGcm9t
UGF5bG9hZChub2RlQ2FsbFBheWxvYWQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KCJzdGFydFRpbWUiIGluIG5vZGVDYWxsUGF5bG9hZCk7Ci0gICAgICAgICAgICBjb25z
b2xlLmFzc2VydCgidG90YWxUaW1lIiBpbiBub2RlQ2FsbFBheWxvYWQpOwotCi0gICAgICAgICAg
ICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5Qcm9maWxlTm9kZUNhbGwobm9kZUNhbGxQYXlsb2Fk
LnN0YXJ0VGltZSwgbm9kZUNhbGxQYXlsb2FkLnRvdGFsVGltZSk7Ci0gICAgICAgIH0KLQotICAg
ICAgICB2YXIgcm9vdE5vZGVzID0gcGF5bG9hZC5yb290Tm9kZXM7Ci0KLSAgICAgICAgLy8gSXRl
cmF0ZSBvdmVyIHRoZSBub2RlIHRyZWUgdXNpbmcgYSBzdGFjay4gRG9pbmcgdGhpcyByZWN1cnNp
dmVseSBjYW4gZWFzaWx5IGNhdXNlIGEgc3RhY2sgb3ZlcmZsb3cuCi0gICAgICAgIC8vIFdlIHRy
YXZlcnNlIHRoZSBwcm9maWxlIGluIHBvc3Qtb3JkZXIgYW5kIGNvbnZlcnQgdGhlIHBheWxvYWRz
IGluIHBsYWNlIHVudGlsIHdlIGdldCBiYWNrIHRvIHRoZSByb290LgotICAgICAgICB2YXIgc3Rh
Y2sgPSBbe3BhcmVudDoge2NoaWxkcmVuOiByb290Tm9kZXN9LCBpbmRleDogMCwgcm9vdDogdHJ1
ZX1dOwotICAgICAgICB3aGlsZSAoc3RhY2subGVuZ3RoKSB7Ci0gICAgICAgICAgICB2YXIgZW50
cnkgPSBzdGFjay5sYXN0VmFsdWU7Ci0KLSAgICAgICAgICAgIGlmIChlbnRyeS5pbmRleCA8IGVu
dHJ5LnBhcmVudC5jaGlsZHJlbi5sZW5ndGgpIHsKLSAgICAgICAgICAgICAgICB2YXIgY2hpbGRO
b2RlUGF5bG9hZCA9IGVudHJ5LnBhcmVudC5jaGlsZHJlbltlbnRyeS5pbmRleF07Ci0gICAgICAg
ICAgICAgICAgaWYgKGNoaWxkTm9kZVBheWxvYWQuY2hpbGRyZW4gJiYgY2hpbGROb2RlUGF5bG9h
ZC5jaGlsZHJlbi5sZW5ndGgpCi0gICAgICAgICAgICAgICAgICAgIHN0YWNrLnB1c2goe3BhcmVu
dDogY2hpbGROb2RlUGF5bG9hZCwgaW5kZXg6IDB9KTsKLQotICAgICAgICAgICAgICAgICsrZW50
cnkuaW5kZXg7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGlmICghZW50
cnkucm9vdCkKLSAgICAgICAgICAgICAgICAgICAgZW50cnkucGFyZW50LmNoaWxkcmVuID0gZW50
cnkucGFyZW50LmNoaWxkcmVuLm1hcChwcm9maWxlTm9kZUZyb21QYXlsb2FkKTsKLSAgICAgICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHJvb3ROb2RlcyA9IHJvb3ROb2Rlcy5t
YXAocHJvZmlsZU5vZGVGcm9tUGF5bG9hZCk7Ci0KLSAgICAgICAgICAgICAgICBzdGFjay5wb3Ao
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHRoaXMuX3Byb2ZpbGUgPSBu
ZXcgV2ViSW5zcGVjdG9yLlByb2ZpbGUocm9vdE5vZGVzKTsKLSAgICB9Ci19OwotCi1XZWJJbnNw
ZWN0b3IuU2NyaXB0VGltZWxpbmVSZWNvcmQucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3Bl
Y3Rvci5UaW1lbGluZVJlY29yZC5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvU2V0dGluZy5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9TZXR0aW5nLmpzCmluZGV4IGI1ZTY1MzcuLjA1
NGQ2NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01v
ZGVscy9TZXR0aW5nLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L01vZGVscy9TZXR0aW5nLmpzCkBAIC0yOSwzMCArMjksMjMgQEAKICAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KIAotV2ViSW5zcGVjdG9yLlNldHRpbmcgPSBmdW5jdGlvbihuYW1lLCBkZWZhdWx0VmFsdWUp
CitXZWJJbnNwZWN0b3IuU2V0dGluZyA9IGNsYXNzIFNldHRpbmcgZXh0ZW5kcyBXZWJJbnNwZWN0
b3IuT2JqZWN0CiB7Ci0gICAgdGhpcy5fbmFtZSA9IG5hbWU7Ci0gICAgdGhpcy5fbG9jYWxTdG9y
YWdlS2V5ID0gV2ViSW5zcGVjdG9yLlNldHRpbmcuTG9jYWxTdG9yYWdlS2V5UHJlZml4ICsgbmFt
ZTsKLSAgICB0aGlzLl9kZWZhdWx0VmFsdWUgPSBkZWZhdWx0VmFsdWU7Ci19OwotCi1XZWJJbnNw
ZWN0b3IuT2JqZWN0LmFkZENvbnN0cnVjdG9yRnVuY3Rpb25zKFdlYkluc3BlY3Rvci5TZXR0aW5n
KTsKLQotV2ViSW5zcGVjdG9yLlNldHRpbmcuRXZlbnQgPSB7Ci0gICAgQ2hhbmdlZDogInNldHRp
bmctY2hhbmdlZCIKLX07Ci0KLVdlYkluc3BlY3Rvci5TZXR0aW5nLkxvY2FsU3RvcmFnZUtleVBy
ZWZpeCA9ICJjb20uYXBwbGUuV2ViSW5zcGVjdG9yLiI7Ci0KLVdlYkluc3BlY3Rvci5TZXR0aW5n
LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlNldHRpbmcsCisg
ICAgY29uc3RydWN0b3IobmFtZSwgZGVmYXVsdFZhbHVlKQorICAgIHsKKyAgICAgICAgc3VwZXIo
KTsKKworICAgICAgICB0aGlzLl9uYW1lID0gbmFtZTsKKyAgICAgICAgdGhpcy5fbG9jYWxTdG9y
YWdlS2V5ID0gV2ViSW5zcGVjdG9yLlNldHRpbmcuTG9jYWxTdG9yYWdlS2V5UHJlZml4ICsgbmFt
ZTsKKyAgICAgICAgdGhpcy5fZGVmYXVsdFZhbHVlID0gZGVmYXVsdFZhbHVlOworICAgIH0KIAog
ICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IG5hbWUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRo
aXMuX25hbWU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgdmFsdWUoKQogICAgIHsKQEAgLTcx
LDcgKzY0LDcgQEAgV2ViSW5zcGVjdG9yLlNldHRpbmcucHJvdG90eXBlID0gewogICAgICAgICB9
CiAKICAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0
IHZhbHVlKHZhbHVlKQogICAgIHsKQEAgLTkzLDQgKzg2LDggQEAgV2ViSW5zcGVjdG9yLlNldHRp
bmcucHJvdG90eXBlID0gewogICAgIH0KIH07CiAKLVdlYkluc3BlY3Rvci5TZXR0aW5nLnByb3Rv
dHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsKK1dlYkluc3Bl
Y3Rvci5TZXR0aW5nLkxvY2FsU3RvcmFnZUtleVByZWZpeCA9ICJjb20uYXBwbGUuV2ViSW5zcGVj
dG9yLiI7CisKK1dlYkluc3BlY3Rvci5TZXR0aW5nLkV2ZW50ID0geworICAgIENoYW5nZWQ6ICJz
ZXR0aW5nLWNoYW5nZWQiCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvTW9kZWxzL1NvdXJjZUNvZGUuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Nb2RlbHMvU291cmNlQ29kZS5qcwppbmRleCA5OTU5NzQ4Li4yNWE4OGFh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMv
U291cmNlQ29kZS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9N
b2RlbHMvU291cmNlQ29kZS5qcwpAQCAtMjMsMzEgKzIzLDE5IEBACiAgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGUgPSBmdW5j
dGlvbigpCitXZWJJbnNwZWN0b3IuU291cmNlQ29kZSA9IGNsYXNzIFNvdXJjZUNvZGUgZXh0ZW5k
cyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRo
aXMpOworICAgIGNvbnN0cnVjdG9yKCkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CiAKLSAgICB0
aGlzLl9vcmlnaW5hbFJldmlzaW9uID0gbmV3IFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlUmV2aXNp
b24odGhpcywgbnVsbCwgZmFsc2UpOwotICAgIHRoaXMuX2N1cnJlbnRSZXZpc2lvbiA9IHRoaXMu
X29yaWdpbmFsUmV2aXNpb247CisgICAgICAgIHRoaXMuX29yaWdpbmFsUmV2aXNpb24gPSBuZXcg
V2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVSZXZpc2lvbih0aGlzLCBudWxsLCBmYWxzZSk7CisgICAg
ICAgIHRoaXMuX2N1cnJlbnRSZXZpc2lvbiA9IHRoaXMuX29yaWdpbmFsUmV2aXNpb247CiAKLSAg
ICB0aGlzLl9zb3VyY2VNYXBzID0gbnVsbDsKLSAgICB0aGlzLl9mb3JtYXR0ZXJTb3VyY2VNYXAg
PSBudWxsOwotICAgIHRoaXMuX3JlcXVlc3RDb250ZW50UHJvbWlzZSA9IG51bGw7Ci19OwotCi1X
ZWJJbnNwZWN0b3IuT2JqZWN0LmFkZENvbnN0cnVjdG9yRnVuY3Rpb25zKFdlYkluc3BlY3Rvci5T
b3VyY2VDb2RlKTsKLQotV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGUuRXZlbnQgPSB7Ci0gICAgQ29u
dGVudERpZENoYW5nZTogInNvdXJjZS1jb2RlLWNvbnRlbnQtZGlkLWNoYW5nZSIsCi0gICAgU291
cmNlTWFwQWRkZWQ6ICJzb3VyY2UtY29kZS1zb3VyY2UtbWFwLWFkZGVkIiwKLSAgICBGb3JtYXR0
ZXJEaWRDaGFuZ2U6ICJzb3VyY2UtY29kZS1mb3JtYXR0ZXItZGlkLWNoYW5nZSIsCi0gICAgTG9h
ZGluZ0RpZEZpbmlzaDogInNvdXJjZS1jb2RlLWxvYWRpbmctZGlkLWZpbmlzaCIsCi0gICAgTG9h
ZGluZ0RpZEZhaWw6ICJzb3VyY2UtY29kZS1sb2FkaW5nLWRpZC1mYWlsIgotfTsKLQotV2ViSW5z
cGVjdG9yLlNvdXJjZUNvZGUucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNw
ZWN0b3IuU291cmNlQ29kZSwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5PYmplY3QucHJv
dG90eXBlLAorICAgICAgICB0aGlzLl9zb3VyY2VNYXBzID0gbnVsbDsKKyAgICAgICAgdGhpcy5f
Zm9ybWF0dGVyU291cmNlTWFwID0gbnVsbDsKKyAgICAgICAgdGhpcy5fcmVxdWVzdENvbnRlbnRQ
cm9taXNlID0gbnVsbDsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIApAQCAtNTYsMTcgKzQ0LDE3
IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAgLy8gSW1w
bGVtZW50ZWQgYnkgc3ViY2xhc3Nlcy4KICAgICAgICAgY29uc29sZS5lcnJvcigiTmVlZHMgdG8g
YmUgaW1wbGVtZW50ZWQgYnkgYSBzdWJjbGFzcy4iKTsKICAgICAgICAgcmV0dXJuICIiOwotICAg
IH0sCisgICAgfQogCiAgICAgZ2V0IG9yaWdpbmFsUmV2aXNpb24oKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHRoaXMuX29yaWdpbmFsUmV2aXNpb247Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQg
Y3VycmVudFJldmlzaW9uKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9jdXJyZW50UmV2
aXNpb247Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgY3VycmVudFJldmlzaW9uKHJldmlzaW9u
KQogICAgIHsKQEAgLTgxLDE5ICs2OSwxOSBAQCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZS5wcm90
b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2N1cnJlbnRSZXZpc2lvbiA9IHJldmlzaW9uOwogCiAg
ICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5Tb3VyY2VD
b2RlLkV2ZW50LkNvbnRlbnREaWRDaGFuZ2UpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGNv
bnRlbnQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRSZXZpc2lvbi5jb250
ZW50OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHNvdXJjZU1hcHMoKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHRoaXMuX3NvdXJjZU1hcHMgfHwgW107Ci0gICAgfSwKKyAgICB9CiAKLSAgICBh
ZGRTb3VyY2VNYXA6IGZ1bmN0aW9uKHNvdXJjZU1hcCkKKyAgICBhZGRTb3VyY2VNYXAoc291cmNl
TWFwKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoc291cmNlTWFwIGluc3RhbmNlb2Yg
V2ViSW5zcGVjdG9yLlNvdXJjZU1hcCk7CiAKQEAgLTEwMywxMiArOTEsMTIgQEAgV2ViSW5zcGVj
dG9yLlNvdXJjZUNvZGUucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9zb3VyY2VNYXBzLnB1
c2goc291cmNlTWFwKTsKIAogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhX
ZWJJbnNwZWN0b3IuU291cmNlQ29kZS5FdmVudC5Tb3VyY2VNYXBBZGRlZCk7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICBnZXQgZm9ybWF0dGVyU291cmNlTWFwKCkKICAgICB7CiAgICAgICAgIHJldHVy
biB0aGlzLl9mb3JtYXR0ZXJTb3VyY2VNYXA7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgZm9y
bWF0dGVyU291cmNlTWFwKGZvcm1hdHRlclNvdXJjZU1hcCkKICAgICB7CkBAIC0xMTgsMzMgKzEw
NiwzMyBAQCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRo
aXMuX2Zvcm1hdHRlclNvdXJjZU1hcCA9IGZvcm1hdHRlclNvdXJjZU1hcDsKIAogICAgICAgICB0
aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuU291cmNlQ29kZS5FdmVu
dC5Gb3JtYXR0ZXJEaWRDaGFuZ2UpOwotICAgIH0sCisgICAgfQogCi0gICAgcmVxdWVzdENvbnRl
bnQ6IGZ1bmN0aW9uKCkKKyAgICByZXF1ZXN0Q29udGVudCgpCiAgICAgewogICAgICAgICB0aGlz
Ll9yZXF1ZXN0Q29udGVudFByb21pc2UgPSB0aGlzLl9yZXF1ZXN0Q29udGVudFByb21pc2UgfHwg
dGhpcy5yZXF1ZXN0Q29udGVudEZyb21CYWNrZW5kKCkudGhlbih0aGlzLl9wcm9jZXNzQ29udGVu
dC5iaW5kKHRoaXMpKTsKIAogICAgICAgICByZXR1cm4gdGhpcy5fcmVxdWVzdENvbnRlbnRQcm9t
aXNlOwotICAgIH0sCisgICAgfQogCi0gICAgY3JlYXRlU291cmNlQ29kZUxvY2F0aW9uOiBmdW5j
dGlvbihsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCisgICAgY3JlYXRlU291cmNlQ29kZUxvY2F0
aW9uKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICB7CiAgICAgICAgIHJldHVybiBuZXcg
V2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVMb2NhdGlvbih0aGlzLCBsaW5lTnVtYmVyLCBjb2x1bW5O
dW1iZXIpOwotICAgIH0sCisgICAgfQogCi0gICAgY3JlYXRlTGF6eVNvdXJjZUNvZGVMb2NhdGlv
bjogZnVuY3Rpb24obGluZU51bWJlciwgY29sdW1uTnVtYmVyKQorICAgIGNyZWF0ZUxhenlTb3Vy
Y2VDb2RlTG9jYXRpb24obGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgIHsKICAgICAgICAg
cmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuTGF6eVNvdXJjZUNvZGVMb2NhdGlvbih0aGlzLCBsaW5l
TnVtYmVyLCBjb2x1bW5OdW1iZXIpOwotICAgIH0sCisgICAgfQogCi0gICAgY3JlYXRlU291cmNl
Q29kZVRleHRSYW5nZTogZnVuY3Rpb24odGV4dFJhbmdlKQorICAgIGNyZWF0ZVNvdXJjZUNvZGVU
ZXh0UmFuZ2UodGV4dFJhbmdlKQogICAgIHsKICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0
b3IuU291cmNlQ29kZVRleHRSYW5nZSh0aGlzLCB0ZXh0UmFuZ2UpOwotICAgIH0sCisgICAgfQog
CiAgICAgLy8gUHJvdGVjdGVkCiAKLSAgICByZXZpc2lvbkNvbnRlbnREaWRDaGFuZ2U6IGZ1bmN0
aW9uKHJldmlzaW9uKQorICAgIHJldmlzaW9uQ29udGVudERpZENoYW5nZShyZXZpc2lvbikKICAg
ICB7CiAgICAgICAgIGlmICh0aGlzLl9pZ25vcmVSZXZpc2lvbkNvbnRlbnREaWRDaGFuZ2VFdmVu
dCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE1NSw0MSArMTQzLDQxIEBAIFdlYkluc3BlY3Rv
ci5Tb3VyY2VDb2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5oYW5kbGVDdXJyZW50UmV2
aXNpb25Db250ZW50Q2hhbmdlKCk7CiAKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0
ZW5lcnMoV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGUuRXZlbnQuQ29udGVudERpZENoYW5nZSk7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBoYW5kbGVDdXJyZW50UmV2aXNpb25Db250ZW50Q2hhbmdlOiBm
dW5jdGlvbigpCisgICAgaGFuZGxlQ3VycmVudFJldmlzaW9uQ29udGVudENoYW5nZSgpCiAgICAg
ewogICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzIGlmIG5lZWRlZC4KLSAgICB9
LAorICAgIH0KIAogICAgIGdldCByZXZpc2lvbkZvclJlcXVlc3RlZENvbnRlbnQoKQogICAgIHsK
ICAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3NlcyBpZiBuZWVkZWQuCiAgICAgICAg
IHJldHVybiB0aGlzLl9vcmlnaW5hbFJldmlzaW9uOwotICAgIH0sCisgICAgfQogCi0gICAgbWFy
a0NvbnRlbnRBc1N0YWxlOiBmdW5jdGlvbigpCisgICAgbWFya0NvbnRlbnRBc1N0YWxlKCkKICAg
ICB7CiAgICAgICAgIHRoaXMuX3JlcXVlc3RDb250ZW50UHJvbWlzZSA9IG51bGw7CiAgICAgICAg
IHRoaXMuX2NvbnRlbnRSZWNlaXZlZCA9IGZhbHNlOwotICAgIH0sCisgICAgfQogCi0gICAgcmVx
dWVzdENvbnRlbnRGcm9tQmFja2VuZDogZnVuY3Rpb24oKQorICAgIHJlcXVlc3RDb250ZW50RnJv
bUJhY2tlbmQoKQogICAgIHsKICAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Nlcy4K
ICAgICAgICAgY29uc29sZS5lcnJvcigiTmVlZHMgdG8gYmUgaW1wbGVtZW50ZWQgYnkgYSBzdWJj
bGFzcy4iKTsKICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcigiTmVlZHMg
dG8gYmUgaW1wbGVtZW50ZWQgYnkgYSBzdWJjbGFzcy4iKSk7Ci0gICAgfSwKKyAgICB9CiAKICAg
ICBnZXQgbWltZVR5cGUoKQogICAgIHsKICAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xh
c3Nlcy4KICAgICAgICAgY29uc29sZS5lcnJvcigiTmVlZHMgdG8gYmUgaW1wbGVtZW50ZWQgYnkg
YSBzdWJjbGFzcy4iKTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAgIF9w
cm9jZXNzQ29udGVudDogZnVuY3Rpb24ocGFyYW1ldGVycykKKyAgICBfcHJvY2Vzc0NvbnRlbnQo
cGFyYW1ldGVycykKICAgICB7CiAgICAgICAgIC8vIERpZmZlcmVudCBiYWNrZW5kIEFQSXMgcmV0
dXJuIG9uZSBvZiBgY29udGVudCwgYGJvZHlgLCBgdGV4dGAsIG9yIGBzY3JpcHRTb3VyY2VgLgog
ICAgICAgICB2YXIgY29udGVudCA9IHBhcmFtZXRlcnMuY29udGVudCB8fCBwYXJhbWV0ZXJzLmJv
ZHkgfHwgcGFyYW1ldGVycy50ZXh0IHx8IHBhcmFtZXRlcnMuc2NyaXB0U291cmNlOwpAQCAtMjEw
LDMgKzE5OCwxMSBAQCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZS5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIH0pOwogICAgIH0KIH07CisKK1dlYkluc3BlY3Rvci5Tb3VyY2VDb2RlLkV2ZW50ID0gewor
ICAgIENvbnRlbnREaWRDaGFuZ2U6ICJzb3VyY2UtY29kZS1jb250ZW50LWRpZC1jaGFuZ2UiLAor
ICAgIFNvdXJjZU1hcEFkZGVkOiAic291cmNlLWNvZGUtc291cmNlLW1hcC1hZGRlZCIsCisgICAg
Rm9ybWF0dGVyRGlkQ2hhbmdlOiAic291cmNlLWNvZGUtZm9ybWF0dGVyLWRpZC1jaGFuZ2UiLAor
ICAgIExvYWRpbmdEaWRGaW5pc2g6ICJzb3VyY2UtY29kZS1sb2FkaW5nLWRpZC1maW5pc2giLAor
ICAgIExvYWRpbmdEaWRGYWlsOiAic291cmNlLWNvZGUtbG9hZGluZy1kaWQtZmFpbCIKK307CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvU291
cmNlQ29kZUxvY2F0aW9uLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
TW9kZWxzL1NvdXJjZUNvZGVMb2NhdGlvbi5qcwppbmRleCA1NzQzYzdkLi41NzI0ZTBkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvU291cmNl
Q29kZUxvY2F0aW9uLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L01vZGVscy9Tb3VyY2VDb2RlTG9jYXRpb24uanMKQEAgLTIzLDg3ICsyMyw2NSBAQAogICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5Tb3VyY2VD
b2RlTG9jYXRpb24gPSBmdW5jdGlvbihzb3VyY2VDb2RlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1i
ZXIpCitXZWJJbnNwZWN0b3IuU291cmNlQ29kZUxvY2F0aW9uID0gY2xhc3MgU291cmNlQ29kZUxv
Y2F0aW9uIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogewotICAgIFdlYkluc3BlY3Rvci5P
YmplY3QuY2FsbCh0aGlzKTsKKyAgICBjb25zdHJ1Y3Rvcihzb3VyY2VDb2RlLCBsaW5lTnVtYmVy
LCBjb2x1bW5OdW1iZXIpCisgICAgeworICAgICAgICBzdXBlcigpOwogCi0gICAgY29uc29sZS5h
c3NlcnQoc291cmNlQ29kZSA9PT0gbnVsbCB8fCBzb3VyY2VDb2RlIGluc3RhbmNlb2YgV2ViSW5z
cGVjdG9yLlNvdXJjZUNvZGUpOwotICAgIGNvbnNvbGUuYXNzZXJ0KCEoc291cmNlQ29kZSBpbnN0
YW5jZW9mIFdlYkluc3BlY3Rvci5Tb3VyY2VNYXBSZXNvdXJjZSkpOwotICAgIGNvbnNvbGUuYXNz
ZXJ0KHR5cGVvZiBsaW5lTnVtYmVyID09PSAibnVtYmVyIiAmJiAhaXNOYU4obGluZU51bWJlcikg
JiYgbGluZU51bWJlciA+PSAwKTsKLSAgICBjb25zb2xlLmFzc2VydCh0eXBlb2YgY29sdW1uTnVt
YmVyID09PSAibnVtYmVyIiAmJiAhaXNOYU4oY29sdW1uTnVtYmVyKSAmJiBjb2x1bW5OdW1iZXIg
Pj0gMCk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHNvdXJjZUNvZGUgPT09IG51bGwgfHwgc291
cmNlQ29kZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlKTsKKyAgICAgICAgY29u
c29sZS5hc3NlcnQoIShzb3VyY2VDb2RlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlNvdXJjZU1h
cFJlc291cmNlKSk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHR5cGVvZiBsaW5lTnVtYmVyID09
PSAibnVtYmVyIiAmJiAhaXNOYU4obGluZU51bWJlcikgJiYgbGluZU51bWJlciA+PSAwKTsKKyAg
ICAgICAgY29uc29sZS5hc3NlcnQodHlwZW9mIGNvbHVtbk51bWJlciA9PT0gIm51bWJlciIgJiYg
IWlzTmFOKGNvbHVtbk51bWJlcikgJiYgY29sdW1uTnVtYmVyID49IDApOwogCi0gICAgdGhpcy5f
c291cmNlQ29kZSA9IHNvdXJjZUNvZGUgfHwgbnVsbDsKLSAgICB0aGlzLl9saW5lTnVtYmVyID0g
bGluZU51bWJlcjsKLSAgICB0aGlzLl9jb2x1bW5OdW1iZXIgPSBjb2x1bW5OdW1iZXI7Ci0gICAg
dGhpcy5fcmVzb2x2ZUZvcm1hdHRlZExvY2F0aW9uKCk7CisgICAgICAgIHRoaXMuX3NvdXJjZUNv
ZGUgPSBzb3VyY2VDb2RlIHx8IG51bGw7CisgICAgICAgIHRoaXMuX2xpbmVOdW1iZXIgPSBsaW5l
TnVtYmVyOworICAgICAgICB0aGlzLl9jb2x1bW5OdW1iZXIgPSBjb2x1bW5OdW1iZXI7CisgICAg
ICAgIHRoaXMuX3Jlc29sdmVGb3JtYXR0ZWRMb2NhdGlvbigpOwogCi0gICAgaWYgKHRoaXMuX3Nv
dXJjZUNvZGUpIHsKLSAgICAgICAgdGhpcy5fc291cmNlQ29kZS5hZGRFdmVudExpc3RlbmVyKFdl
Ykluc3BlY3Rvci5Tb3VyY2VDb2RlLkV2ZW50LlNvdXJjZU1hcEFkZGVkLCB0aGlzLl9zb3VyY2VD
b2RlU291cmNlTWFwQWRkZWQsIHRoaXMpOwotICAgICAgICB0aGlzLl9zb3VyY2VDb2RlLmFkZEV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGUuRXZlbnQuRm9ybWF0dGVyRGlkQ2hh
bmdlLCB0aGlzLl9zb3VyY2VDb2RlRm9ybWF0dGVyRGlkQ2hhbmdlLCB0aGlzKTsKKyAgICAgICAg
aWYgKHRoaXMuX3NvdXJjZUNvZGUpIHsKKyAgICAgICAgICAgIHRoaXMuX3NvdXJjZUNvZGUuYWRk
RXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU291cmNlQ29kZS5FdmVudC5Tb3VyY2VNYXBBZGRl
ZCwgdGhpcy5fc291cmNlQ29kZVNvdXJjZU1hcEFkZGVkLCB0aGlzKTsKKyAgICAgICAgICAgIHRo
aXMuX3NvdXJjZUNvZGUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU291cmNlQ29kZS5F
dmVudC5Gb3JtYXR0ZXJEaWRDaGFuZ2UsIHRoaXMuX3NvdXJjZUNvZGVGb3JtYXR0ZXJEaWRDaGFu
Z2UsIHRoaXMpOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fcmVzZXRNYXBwZWRMb2NhdGlv
bigpOwogICAgIH0KIAotICAgIHRoaXMuX3Jlc2V0TWFwcGVkTG9jYXRpb24oKTsKLX07Ci0KLVdl
Ykluc3BlY3Rvci5Tb3VyY2VDb2RlTG9jYXRpb24uRGlzcGxheUxvY2F0aW9uQ2xhc3NOYW1lID0g
ImRpc3BsYXktbG9jYXRpb24iOwotCi1XZWJJbnNwZWN0b3IuU291cmNlQ29kZUxvY2F0aW9uLkxh
cmdlQ29sdW1uTnVtYmVyID0gODA7Ci0KLVdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlTG9jYXRpb24u
TmFtZVN0eWxlID0gewotICAgIE5vbmU6ICJub25lIiwgLy8gRmlsZSBuYW1lIG5vdCBpbmNsdWRl
ZC4KLSAgICBTaG9ydDogInNob3J0IiwgLy8gT25seSB0aGUgZmlsZSBuYW1lLgotICAgIEZ1bGw6
ICJmdWxsIiAvLyBGdWxsIFVSTCBpcyB1c2VkLgotfTsKLQotV2ViSW5zcGVjdG9yLlNvdXJjZUNv
ZGVMb2NhdGlvbi5Db2x1bW5TdHlsZSA9IHsKLSAgICBIaWRkZW46ICJoaWRkZW4iLCAgICAgICAg
ICAgICAvLyBjb2x1bW4gbnVtYmVycyBhcmUgbm90IGluY2x1ZGVkLgotICAgIE9ubHlJZkxhcmdl
OiAib25seS1pZi1sYXJnZSIsIC8vIGNvbHVtbiBudW1iZXJzIGdyZWF0ZXIgdGhhbiA4MCBhcmUg
c2hvd24uCi0gICAgU2hvd246ICJzaG93biIgICAgICAgICAgICAgICAgLy8gbm9uLXplcm8gY29s
dW1uIG51bWJlcnMgYXJlIHNob3duLgotfTsKLQotV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVMb2Nh
dGlvbi5FdmVudCA9IHsKLSAgICBMb2NhdGlvbkNoYW5nZWQ6ICJzb3VyY2UtY29kZS1sb2NhdGlv
bi1sb2NhdGlvbi1jaGFuZ2VkIiwKLSAgICBEaXNwbGF5TG9jYXRpb25DaGFuZ2VkOiAic291cmNl
LWNvZGUtbG9jYXRpb24tZGlzcGxheS1sb2NhdGlvbi1jaGFuZ2VkIgotfTsKLQotV2ViSW5zcGVj
dG9yLlNvdXJjZUNvZGVMb2NhdGlvbi5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdl
Ykluc3BlY3Rvci5Tb3VyY2VDb2RlTG9jYXRpb24sCi0KICAgICAvLyBQdWJsaWMKIAotICAgIGlz
RXF1YWw6IGZ1bmN0aW9uKG90aGVyKQorICAgIGlzRXF1YWwob3RoZXIpCiAgICAgewogICAgICAg
ICBpZiAoIW90aGVyKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICByZXR1cm4g
dGhpcy5fc291cmNlQ29kZSA9PT0gb3RoZXIuX3NvdXJjZUNvZGUgJiYgdGhpcy5fbGluZU51bWJl
ciA9PT0gb3RoZXIuX2xpbmVOdW1iZXIgJiYgdGhpcy5fY29sdW1uTnVtYmVyID09PSBvdGhlci5f
Y29sdW1uTnVtYmVyOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHNvdXJjZUNvZGUoKQogICAg
IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3NvdXJjZUNvZGU7Ci0gICAgfSwKKyAgICB9CiAKICAg
ICBzZXQgc291cmNlQ29kZShzb3VyY2VDb2RlKQogICAgIHsKICAgICAgICAgdGhpcy5zZXRTb3Vy
Y2VDb2RlKHNvdXJjZUNvZGUpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUmF3IGxpbmUgYW5k
IGNvbHVtbiBpbiB0aGUgb3JpZ2luYWwgc291cmNlIGNvZGUuCiAKICAgICBnZXQgbGluZU51bWJl
cigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fbGluZU51bWJlcjsKLSAgICB9LAorICAg
IH0KIAogICAgIGdldCBjb2x1bW5OdW1iZXIoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMu
X2NvbHVtbk51bWJlcjsKLSAgICB9LAorICAgIH0KIAotICAgIHBvc2l0aW9uOiBmdW5jdGlvbigp
CisgICAgcG9zaXRpb24oKQogICAgIHsKICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3Iu
U291cmNlQ29kZVBvc2l0aW9uKHRoaXMubGluZU51bWJlciwgdGhpcy5jb2x1bW5OdW1iZXIpOwot
ICAgIH0sCisgICAgfQogCiAgICAgLy8gRm9ybWF0dGVkIGxpbmUgYW5kIGNvbHVtbiBpZiB0aGUg
b3JpZ2luYWwgc291cmNlIGNvZGUgaXMgcHJldHR5IHByaW50ZWQuCiAgICAgLy8gVGhpcyBpcyB0
aGUgc2FtZSBhcyB0aGUgcmF3IGxvY2F0aW9uIGlmIHRoZXJlIGlzIG5vIGZvcm1hdHRlci4KQEAg
LTExMSwxNyArODksMTcgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVMb2NhdGlvbi5wcm90b3R5
cGUgPSB7CiAgICAgZ2V0IGZvcm1hdHRlZExpbmVOdW1iZXIoKQogICAgIHsKICAgICAgICAgcmV0
dXJuIHRoaXMuX2Zvcm1hdHRlZExpbmVOdW1iZXI7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQg
Zm9ybWF0dGVkQ29sdW1uTnVtYmVyKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9mb3Jt
YXR0ZWRDb2x1bW5OdW1iZXI7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBmb3JtYXR0ZWRQb3NpdGlv
bjogZnVuY3Rpb24oKQorICAgIGZvcm1hdHRlZFBvc2l0aW9uKCkKICAgICB7CiAgICAgICAgIHJl
dHVybiBuZXcgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVQb3NpdGlvbih0aGlzLmZvcm1hdHRlZExp
bmVOdW1iZXIsIHRoaXMuZm9ybWF0dGVkQ29sdW1uTnVtYmVyKTsKLSAgICB9LAorICAgIH0KIAog
ICAgIC8vIERpc3BsYXkgbGluZSBhbmQgY29sdW1uOgogICAgIC8vICAgLSBNYXBwZWQgbGluZSBh
bmQgY29sdW1uIGlmIHRoZSBvcmlnaW5hbCBzb3VyY2UgY29kZSBoYXMgYSBzb3VyY2UgbWFwLgpA
QCAtMTMxLDQzICsxMDksNDMgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVMb2NhdGlvbi5wcm90
b3R5cGUgPSB7CiAgICAgewogICAgICAgICB0aGlzLnJlc29sdmVNYXBwZWRMb2NhdGlvbigpOwog
ICAgICAgICByZXR1cm4gdGhpcy5fbWFwcGVkUmVzb3VyY2UgfHwgdGhpcy5fc291cmNlQ29kZTsK
LSAgICB9LAorICAgIH0KIAogICAgIGdldCBkaXNwbGF5TGluZU51bWJlcigpCiAgICAgewogICAg
ICAgICB0aGlzLnJlc29sdmVNYXBwZWRMb2NhdGlvbigpOwogICAgICAgICByZXR1cm4gaXNOYU4o
dGhpcy5fbWFwcGVkTGluZU51bWJlcikgPyB0aGlzLl9mb3JtYXR0ZWRMaW5lTnVtYmVyIDogdGhp
cy5fbWFwcGVkTGluZU51bWJlcjsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBkaXNwbGF5Q29s
dW1uTnVtYmVyKCkKICAgICB7CiAgICAgICAgIHRoaXMucmVzb2x2ZU1hcHBlZExvY2F0aW9uKCk7
CiAgICAgICAgIHJldHVybiBpc05hTih0aGlzLl9tYXBwZWRDb2x1bW5OdW1iZXIpID8gdGhpcy5f
Zm9ybWF0dGVkQ29sdW1uTnVtYmVyIDogdGhpcy5fbWFwcGVkQ29sdW1uTnVtYmVyOwotICAgIH0s
CisgICAgfQogCi0gICAgZGlzcGxheVBvc2l0aW9uOiBmdW5jdGlvbigpCisgICAgZGlzcGxheVBv
c2l0aW9uKCkKICAgICB7CiAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlNvdXJjZUNv
ZGVQb3NpdGlvbih0aGlzLmRpc3BsYXlMaW5lTnVtYmVyLCB0aGlzLmRpc3BsYXlDb2x1bW5OdW1i
ZXIpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gVXNlciBwcmVzZW50YWJsZSBsb2NhdGlvbiBz
dHJpbmdzOiAiZmlsZTpsaW5lTnVtYmVyOmNvbHVtbk51bWJlciIuCiAKLSAgICBvcmlnaW5hbExv
Y2F0aW9uU3RyaW5nOiBmdW5jdGlvbihjb2x1bW5TdHlsZSwgbmFtZVN0eWxlLCBwcmVmaXgpCisg
ICAgb3JpZ2luYWxMb2NhdGlvblN0cmluZyhjb2x1bW5TdHlsZSwgbmFtZVN0eWxlLCBwcmVmaXgp
CiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fbG9jYXRpb25TdHJpbmcodGhpcy5zb3VyY2VD
b2RlLCB0aGlzLmxpbmVOdW1iZXIsIHRoaXMuY29sdW1uTnVtYmVyLCBjb2x1bW5TdHlsZSwgbmFt
ZVN0eWxlLCBwcmVmaXgpOwotICAgIH0sCisgICAgfQogCi0gICAgZm9ybWF0dGVkTG9jYXRpb25T
dHJpbmc6IGZ1bmN0aW9uKGNvbHVtblN0eWxlLCBuYW1lU3R5bGUsIHByZWZpeCkKKyAgICBmb3Jt
YXR0ZWRMb2NhdGlvblN0cmluZyhjb2x1bW5TdHlsZSwgbmFtZVN0eWxlLCBwcmVmaXgpCiAgICAg
ewogICAgICAgICByZXR1cm4gdGhpcy5fbG9jYXRpb25TdHJpbmcodGhpcy5zb3VyY2VDb2RlLCB0
aGlzLmZvcm1hdHRlZExpbmVOdW1iZXIsIHRoaXMuZm9ybWF0dGVkQ29sdW1uLCBjb2x1bW5TdHls
ZSwgbmFtZVN0eWxlLCBwcmVmaXgpOwotICAgIH0sCisgICAgfQogCi0gICAgZGlzcGxheUxvY2F0
aW9uU3RyaW5nOiBmdW5jdGlvbihjb2x1bW5TdHlsZSwgbmFtZVN0eWxlLCBwcmVmaXgpCisgICAg
ZGlzcGxheUxvY2F0aW9uU3RyaW5nKGNvbHVtblN0eWxlLCBuYW1lU3R5bGUsIHByZWZpeCkKICAg
ICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9sb2NhdGlvblN0cmluZyh0aGlzLmRpc3BsYXlTb3Vy
Y2VDb2RlLCB0aGlzLmRpc3BsYXlMaW5lTnVtYmVyLCB0aGlzLmRpc3BsYXlDb2x1bW5OdW1iZXIs
IGNvbHVtblN0eWxlLCBuYW1lU3R5bGUsIHByZWZpeCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB0
b29sdGlwU3RyaW5nOiBmdW5jdGlvbigpCisgICAgdG9vbHRpcFN0cmluZygpCiAgICAgewogICAg
ICAgICBpZiAoIXRoaXMuaGFzRGlmZmVyZW50RGlzcGxheUxvY2F0aW9uKCkpCiAgICAgICAgICAg
ICByZXR1cm4gdGhpcy5vcmlnaW5hbExvY2F0aW9uU3RyaW5nKFdlYkluc3BlY3Rvci5Tb3VyY2VD
b2RlTG9jYXRpb24uQ29sdW1uU3R5bGUuU2hvd24sIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlTG9j
YXRpb24uTmFtZVN0eWxlLkZ1bGwpOwpAQCAtMTc1LDI1ICsxNTMsMjUgQEAgV2ViSW5zcGVjdG9y
LlNvdXJjZUNvZGVMb2NhdGlvbi5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciB0b29sdGlwID0g
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJMb2NhdGVkIGF0ICVzIikuZm9ybWF0KHRoaXMuZGlzcGxh
eUxvY2F0aW9uU3RyaW5nKFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlTG9jYXRpb24uQ29sdW1uU3R5
bGUuU2hvd24sIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlTG9jYXRpb24uTmFtZVN0eWxlLkZ1bGwp
KTsKICAgICAgICAgdG9vbHRpcCArPSAiXG4iICsgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJPcmln
aW5hbGx5ICVzIikuZm9ybWF0KHRoaXMub3JpZ2luYWxMb2NhdGlvblN0cmluZyhXZWJJbnNwZWN0
b3IuU291cmNlQ29kZUxvY2F0aW9uLkNvbHVtblN0eWxlLlNob3duLCBXZWJJbnNwZWN0b3IuU291
cmNlQ29kZUxvY2F0aW9uLk5hbWVTdHlsZS5GdWxsKSk7CiAgICAgICAgIHJldHVybiB0b29sdGlw
OwotICAgIH0sCisgICAgfQogCi0gICAgaGFzTWFwcGVkTG9jYXRpb246IGZ1bmN0aW9uKCkKKyAg
ICBoYXNNYXBwZWRMb2NhdGlvbigpCiAgICAgewogICAgICAgICB0aGlzLnJlc29sdmVNYXBwZWRM
b2NhdGlvbigpOwogICAgICAgICByZXR1cm4gdGhpcy5fbWFwcGVkUmVzb3VyY2UgIT09IG51bGw7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBoYXNGb3JtYXR0ZWRMb2NhdGlvbjogZnVuY3Rpb24oKQor
ICAgIGhhc0Zvcm1hdHRlZExvY2F0aW9uKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9m
b3JtYXR0ZWRMaW5lTnVtYmVyICE9PSB0aGlzLl9saW5lTnVtYmVyIHx8IHRoaXMuX2Zvcm1hdHRl
ZENvbHVtbk51bWJlciAhPT0gdGhpcy5fY29sdW1uTnVtYmVyOwotICAgIH0sCisgICAgfQogCi0g
ICAgaGFzRGlmZmVyZW50RGlzcGxheUxvY2F0aW9uOiBmdW5jdGlvbigpCisgICAgaGFzRGlmZmVy
ZW50RGlzcGxheUxvY2F0aW9uKCkKICAgICB7CiAgICAgICAgcmV0dXJuIHRoaXMuaGFzTWFwcGVk
TG9jYXRpb24oKSB8fCB0aGlzLmhhc0Zvcm1hdHRlZExvY2F0aW9uKCk7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICB1cGRhdGU6IGZ1bmN0aW9uKHNvdXJjZUNvZGUsIGxpbmVOdW1iZXIsIGNvbHVtbk51
bWJlcikKKyAgICB1cGRhdGUoc291cmNlQ29kZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKQog
ICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoc291cmNlQ29kZSA9PT0gdGhpcy5fc291cmNl
Q29kZSB8fCAodGhpcy5fbWFwcGVkUmVzb3VyY2UgJiYgc291cmNlQ29kZSA9PT0gdGhpcy5fbWFw
cGVkUmVzb3VyY2UpKTsKICAgICAgICAgY29uc29sZS5hc3NlcnQodHlwZW9mIGxpbmVOdW1iZXIg
PT09ICJudW1iZXIiICYmICFpc05hTihsaW5lTnVtYmVyKSAmJiBsaW5lTnVtYmVyID49IDApOwpA
QCAtMjE3LDkgKzE5NSw5IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlTG9jYXRpb24ucHJvdG90
eXBlID0gewogICAgICAgICAgICAgICAgIHRoaXMuX21hcHBlZENvbHVtbk51bWJlciA9IG5ld1Nv
dXJjZUNvZGVMb2NhdGlvbi5fbWFwcGVkQ29sdW1uTnVtYmVyOwogICAgICAgICAgICAgfQogICAg
ICAgICB9KTsKLSAgICB9LAorICAgIH0KIAotICAgIHBvcHVsYXRlTGl2ZURpc3BsYXlMb2NhdGlv
blRvb2x0aXA6IGZ1bmN0aW9uKGVsZW1lbnQsIHByZWZpeCkKKyAgICBwb3B1bGF0ZUxpdmVEaXNw
bGF5TG9jYXRpb25Ub29sdGlwKGVsZW1lbnQsIHByZWZpeCkKICAgICB7CiAgICAgICAgIHByZWZp
eCA9IHByZWZpeCB8fCAiIjsKIApAQCAtMjI5LDkgKzIwNyw5IEBAIFdlYkluc3BlY3Rvci5Tb3Vy
Y2VDb2RlTG9jYXRpb24ucHJvdG90eXBlID0gewogICAgICAgICAgICAgaWYgKHRoaXMuc291cmNl
Q29kZSkKICAgICAgICAgICAgICAgICBlbGVtZW50LnRpdGxlID0gcHJlZml4ICsgdGhpcy50b29s
dGlwU3RyaW5nKCk7CiAgICAgICAgIH0sIHRoaXMpOwotICAgIH0sCisgICAgfQogCi0gICAgcG9w
dWxhdGVMaXZlRGlzcGxheUxvY2F0aW9uU3RyaW5nOiBmdW5jdGlvbihlbGVtZW50LCBwcm9wZXJ0
eU5hbWUsIGNvbHVtblN0eWxlLCBuYW1lU3R5bGUsIHByZWZpeCkKKyAgICBwb3B1bGF0ZUxpdmVE
aXNwbGF5TG9jYXRpb25TdHJpbmcoZWxlbWVudCwgcHJvcGVydHlOYW1lLCBjb2x1bW5TdHlsZSwg
bmFtZVN0eWxlLCBwcmVmaXgpCiAgICAgewogICAgICAgICB2YXIgY3VycmVudERpc3BsYXkgPSB1
bmRlZmluZWQ7CiAKQEAgLTI3MCwxMSArMjQ4LDExIEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2Rl
TG9jYXRpb24ucHJvdG90eXBlID0gewogICAgICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIo
Im1vdXNlb3V0IiwgZnVuY3Rpb24oZXZlbnQpIHsKICAgICAgICAgICAgIHVwZGF0ZURpc3BsYXlT
dHJpbmcuY2FsbCh0aGlzLCBmYWxzZSk7CiAgICAgICAgIH0uYmluZCh0aGlzKSk7Ci0gICAgfSwK
KyAgICB9CiAKICAgICAvLyBQcm90ZWN0ZWQKIAotICAgIHNldFNvdXJjZUNvZGU6IGZ1bmN0aW9u
KHNvdXJjZUNvZGUpCisgICAgc2V0U291cmNlQ29kZShzb3VyY2VDb2RlKQogICAgIHsKICAgICAg
ICAgY29uc29sZS5hc3NlcnQoKHRoaXMuX3NvdXJjZUNvZGUgPT09IG51bGwgJiYgc291cmNlQ29k
ZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlKSB8fCAodGhpcy5fc291cmNlQ29k
ZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlICYmIHNvdXJjZUNvZGUgPT09IG51
bGwpKTsKIApAQCAtMjk0LDkgKzI3Miw5IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlTG9jYXRp
b24ucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIHRoaXMuX3NvdXJjZUNvZGUuYWRkRXZl
bnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU291cmNlQ29kZS5FdmVudC5Gb3JtYXR0ZXJEaWRDaGFu
Z2UsIHRoaXMuX3NvdXJjZUNvZGVGb3JtYXR0ZXJEaWRDaGFuZ2UsIHRoaXMpOwogICAgICAgICAg
ICAgfQogICAgICAgICB9KTsKLSAgICB9LAorICAgIH0KIAotICAgIHJlc29sdmVNYXBwZWRMb2Nh
dGlvbjogZnVuY3Rpb24oKQorICAgIHJlc29sdmVNYXBwZWRMb2NhdGlvbigpCiAgICAgewogICAg
ICAgICBpZiAodGhpcy5fbWFwcGVkTG9jYXRpb25Jc1Jlc29sdmVkKQogICAgICAgICAgICAgcmV0
dXJuOwpAQCAtMzI5LDExICszMDcsMTEgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVMb2NhdGlv
bi5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9tYXBwZWRDb2x1bW5OdW1iZXIgPSBl
bnRyeVs0XTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgIH0sCisgICAgfQog
CiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX2xvY2F0aW9uU3RyaW5nOiBmdW5jdGlvbihzb3VyY2VD
b2RlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGNvbHVtblN0eWxlLCBuYW1lU3R5bGUsIHBy
ZWZpeCkKKyAgICBfbG9jYXRpb25TdHJpbmcoc291cmNlQ29kZSwgbGluZU51bWJlciwgY29sdW1u
TnVtYmVyLCBjb2x1bW5TdHlsZSwgbmFtZVN0eWxlLCBwcmVmaXgpCiAgICAgewogICAgICAgICBj
b25zb2xlLmFzc2VydChzb3VyY2VDb2RlKTsKICAgICAgICAgaWYgKCFzb3VyY2VDb2RlKQpAQCAt
MzYyLDI2ICszNDAsMjYgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVMb2NhdGlvbi5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCJVbmtub3duIG5hbWVTdHlsZTogIiAr
IG5hbWVTdHlsZSk7CiAgICAgICAgICAgICByZXR1cm4gcHJlZml4ICsgbGluZVN0cmluZzsKICAg
ICAgICAgfQotICAgIH0sCisgICAgfQogCi0gICAgX3Jlc2V0TWFwcGVkTG9jYXRpb246IGZ1bmN0
aW9uKCkKKyAgICBfcmVzZXRNYXBwZWRMb2NhdGlvbigpCiAgICAgewogICAgICAgICB0aGlzLl9t
YXBwZWRMb2NhdGlvbklzUmVzb2x2ZWQgPSBmYWxzZTsKICAgICAgICAgdGhpcy5fbWFwcGVkUmVz
b3VyY2UgPSBudWxsOwogICAgICAgICB0aGlzLl9tYXBwZWRMaW5lTnVtYmVyID0gTmFOOwogICAg
ICAgICB0aGlzLl9tYXBwZWRDb2x1bW5OdW1iZXIgPSBOYU47Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBfc2V0TWFwcGVkTG9jYXRpb246IGZ1bmN0aW9uKG1hcHBlZFJlc291cmNlLCBtYXBwZWRMaW5l
TnVtYmVyLCBtYXBwZWRDb2x1bW5OdW1iZXIpCisgICAgX3NldE1hcHBlZExvY2F0aW9uKG1hcHBl
ZFJlc291cmNlLCBtYXBwZWRMaW5lTnVtYmVyLCBtYXBwZWRDb2x1bW5OdW1iZXIpCiAgICAgewog
ICAgICAgICAvLyBDYWxsZWQgYnkgU291cmNlTWFwUmVzb3VyY2Ugd2hlbiBpdCBjcmVhdGVzIGEg
U291cmNlQ29kZUxvY2F0aW9uIGFuZCBhbHJlYWR5IGtub3dzIHRoZSByZXNvbHZlZCBsb2NhdGlv
bi4KICAgICAgICAgdGhpcy5fbWFwcGVkTG9jYXRpb25Jc1Jlc29sdmVkID0gdHJ1ZTsKICAgICAg
ICAgdGhpcy5fbWFwcGVkUmVzb3VyY2UgPSBtYXBwZWRSZXNvdXJjZTsKICAgICAgICAgdGhpcy5f
bWFwcGVkTGluZU51bWJlciA9IG1hcHBlZExpbmVOdW1iZXI7CiAgICAgICAgIHRoaXMuX21hcHBl
ZENvbHVtbk51bWJlciA9IG1hcHBlZENvbHVtbk51bWJlcjsKLSAgICB9LAorICAgIH0KIAotICAg
IF9yZXNvbHZlRm9ybWF0dGVkTG9jYXRpb246IGZ1bmN0aW9uKCkKKyAgICBfcmVzb2x2ZUZvcm1h
dHRlZExvY2F0aW9uKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9zb3VyY2VDb2RlICYmIHRo
aXMuX3NvdXJjZUNvZGUuZm9ybWF0dGVyU291cmNlTWFwKSB7CiAgICAgICAgICAgICB2YXIgZm9y
bWF0dGVkTG9jYXRpb24gPSB0aGlzLl9zb3VyY2VDb2RlLmZvcm1hdHRlclNvdXJjZU1hcC5vcmln
aW5hbFRvRm9ybWF0dGVkKHRoaXMuX2xpbmVOdW1iZXIsIHRoaXMuX2NvbHVtbk51bWJlcik7CkBA
IC0zOTEsOSArMzY5LDkgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVMb2NhdGlvbi5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9mb3JtYXR0ZWRMaW5lTnVtYmVyID0gdGhpcy5fbGlu
ZU51bWJlcjsKICAgICAgICAgICAgIHRoaXMuX2Zvcm1hdHRlZENvbHVtbk51bWJlciA9IHRoaXMu
X2NvbHVtbk51bWJlcjsKICAgICAgICAgfQotICAgIH0sCisgICAgfQogCi0gICAgX21ha2VDaGFu
Z2VBbmREaXNwYXRjaENoYW5nZUV2ZW50SWZOZWVkZWQ6IGZ1bmN0aW9uKGNoYW5nZUZ1bmN0aW9u
KQorICAgIF9tYWtlQ2hhbmdlQW5kRGlzcGF0Y2hDaGFuZ2VFdmVudElmTmVlZGVkKGNoYW5nZUZ1
bmN0aW9uKQogICAgIHsKICAgICAgICAgdmFyIG9sZFNvdXJjZUNvZGUgPSB0aGlzLl9zb3VyY2VD
b2RlOwogICAgICAgICB2YXIgb2xkTGluZU51bWJlciA9IHRoaXMuX2xpbmVOdW1iZXI7CkBAIC00
NDgsMTcgKzQyNiwzNiBAQCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZUxvY2F0aW9uLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgICAgIGlmIChhbnlMb2NhdGlvbkNoYW5nZWQpCiAgICAgICAgICAgICAg
ICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVM
b2NhdGlvbi5FdmVudC5Mb2NhdGlvbkNoYW5nZWQsIG9sZERhdGEpOwogICAgICAgICB9Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBfc291cmNlQ29kZVNvdXJjZU1hcEFkZGVkOiBmdW5jdGlvbigpCisg
ICAgX3NvdXJjZUNvZGVTb3VyY2VNYXBBZGRlZCgpCiAgICAgewogICAgICAgICB0aGlzLl9tYWtl
Q2hhbmdlQW5kRGlzcGF0Y2hDaGFuZ2VFdmVudElmTmVlZGVkKG51bGwpOwotICAgIH0sCisgICAg
fQogCi0gICAgX3NvdXJjZUNvZGVGb3JtYXR0ZXJEaWRDaGFuZ2U6IGZ1bmN0aW9uKCkKKyAgICBf
c291cmNlQ29kZUZvcm1hdHRlckRpZENoYW5nZSgpCiAgICAgewogICAgICAgICB0aGlzLl9tYWtl
Q2hhbmdlQW5kRGlzcGF0Y2hDaGFuZ2VFdmVudElmTmVlZGVkKG51bGwpOwogICAgIH0KIH07CiAK
LVdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlTG9jYXRpb24ucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdl
Ykluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOworV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVMb2Nh
dGlvbi5EaXNwbGF5TG9jYXRpb25DbGFzc05hbWUgPSAiZGlzcGxheS1sb2NhdGlvbiI7CisKK1dl
Ykluc3BlY3Rvci5Tb3VyY2VDb2RlTG9jYXRpb24uTGFyZ2VDb2x1bW5OdW1iZXIgPSA4MDsKKwor
V2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVMb2NhdGlvbi5OYW1lU3R5bGUgPSB7CisgICAgTm9uZTog
Im5vbmUiLCAvLyBGaWxlIG5hbWUgbm90IGluY2x1ZGVkLgorICAgIFNob3J0OiAic2hvcnQiLCAv
LyBPbmx5IHRoZSBmaWxlIG5hbWUuCisgICAgRnVsbDogImZ1bGwiIC8vIEZ1bGwgVVJMIGlzIHVz
ZWQuCit9OworCitXZWJJbnNwZWN0b3IuU291cmNlQ29kZUxvY2F0aW9uLkNvbHVtblN0eWxlID0g
eworICAgIEhpZGRlbjogImhpZGRlbiIsICAgICAgICAgICAgIC8vIGNvbHVtbiBudW1iZXJzIGFy
ZSBub3QgaW5jbHVkZWQuCisgICAgT25seUlmTGFyZ2U6ICJvbmx5LWlmLWxhcmdlIiwgLy8gY29s
dW1uIG51bWJlcnMgZ3JlYXRlciB0aGFuIDgwIGFyZSBzaG93bi4KKyAgICBTaG93bjogInNob3du
IiAgICAgICAgICAgICAgICAvLyBub24temVybyBjb2x1bW4gbnVtYmVycyBhcmUgc2hvd24uCit9
OworCitXZWJJbnNwZWN0b3IuU291cmNlQ29kZUxvY2F0aW9uLkV2ZW50ID0geworICAgIExvY2F0
aW9uQ2hhbmdlZDogInNvdXJjZS1jb2RlLWxvY2F0aW9uLWxvY2F0aW9uLWNoYW5nZWQiLAorICAg
IERpc3BsYXlMb2NhdGlvbkNoYW5nZWQ6ICJzb3VyY2UtY29kZS1sb2NhdGlvbi1kaXNwbGF5LWxv
Y2F0aW9uLWNoYW5nZWQiCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvTW9kZWxzL1NvdXJjZUNvZGVQb3NpdGlvbi5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Tb3VyY2VDb2RlUG9zaXRpb24uanMKaW5kZXgg
N2IwYTJiMC4uZmZiYTZiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvTW9kZWxzL1NvdXJjZUNvZGVQb3NpdGlvbi5qcworKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvU291cmNlQ29kZVBvc2l0aW9uLmpzCkBAIC0y
MywyOCArMjMsMjUgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
Ci1XZWJJbnNwZWN0b3IuU291cmNlQ29kZVBvc2l0aW9uID0gZnVuY3Rpb24obGluZU51bWJlciwg
Y29sdW1OdW1iZXIpCitXZWJJbnNwZWN0b3IuU291cmNlQ29kZVBvc2l0aW9uID0gY2xhc3MgU291
cmNlQ29kZVBvc2l0aW9uIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogewotICAgIFdlYklu
c3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICBjb25zdHJ1Y3RvcihsaW5lTnVtYmVyLCBj
b2x1bU51bWJlcikKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CiAKLSAgICB0aGlzLl9saW5lTnVt
YmVyID0gbGluZU51bWJlciB8fCAwOwotICAgIHRoaXMuX2NvbHVtbk51bWJlciA9IGNvbHVtTnVt
YmVyIHx8IDA7Ci19OwotCi1XZWJJbnNwZWN0b3IuU291cmNlQ29kZVBvc2l0aW9uLnByb3RvdHlw
ZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVQb3NpdGlvbiwK
KyAgICAgICAgdGhpcy5fbGluZU51bWJlciA9IGxpbmVOdW1iZXIgfHwgMDsKKyAgICAgICAgdGhp
cy5fY29sdW1uTnVtYmVyID0gY29sdW1OdW1iZXIgfHwgMDsKKyAgICB9CiAKICAgICAvLyBQdWJs
aWMKIAogICAgIGdldCBsaW5lTnVtYmVyKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9s
aW5lTnVtYmVyOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGNvbHVtbk51bWJlcigpCiAgICAg
ewogICAgICAgICByZXR1cm4gdGhpcy5fY29sdW1uTnVtYmVyOwogICAgIH0KIH07Ci0KLVdlYklu
c3BlY3Rvci5Tb3VyY2VDb2RlUG9zaXRpb24ucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3Bl
Y3Rvci5PYmplY3QucHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvTW9kZWxzL1NvdXJjZUNvZGVSZXZpc2lvbi5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Tb3VyY2VDb2RlUmV2aXNpb24uanMKaW5k
ZXggNzEwOTMzYS4uYjk1NTQ5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvTW9kZWxzL1NvdXJjZUNvZGVSZXZpc2lvbi5qcworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvU291cmNlQ29kZVJldmlzaW9uLmpzCkBA
IC0yMywzMCArMjMsMjkgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCi1XZWJJbnNwZWN0b3IuU291cmNlQ29kZVJldmlzaW9uID0gZnVuY3Rpb24oc291cmNlQ29k
ZSwgY29udGVudCkKK1dlYkluc3BlY3Rvci5Tb3VyY2VDb2RlUmV2aXNpb24gPSBjbGFzcyBTb3Vy
Y2VDb2RlUmV2aXNpb24gZXh0ZW5kcyBXZWJJbnNwZWN0b3IuUmV2aXNpb24KIHsKLSAgICBXZWJJ
bnNwZWN0b3IuUmV2aXNpb24uY2FsbCh0aGlzKTsKKyAgICBjb25zdHJ1Y3Rvcihzb3VyY2VDb2Rl
LCBjb250ZW50KQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKIAotICAgIGNvbnNvbGUuYXNzZXJ0
KHNvdXJjZUNvZGUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuU291cmNlQ29kZSk7CisgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KHNvdXJjZUNvZGUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuU291cmNl
Q29kZSk7CiAKLSAgICB0aGlzLl9zb3VyY2VDb2RlID0gc291cmNlQ29kZTsKLSAgICB0aGlzLl9j
b250ZW50ID0gY29udGVudCB8fCAiIjsKLX07Ci0KLVdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlUmV2
aXNpb24ucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuU291cmNl
Q29kZVJldmlzaW9uLAorICAgICAgICB0aGlzLl9zb3VyY2VDb2RlID0gc291cmNlQ29kZTsKKyAg
ICAgICAgdGhpcy5fY29udGVudCA9IGNvbnRlbnQgfHwgIiI7CisgICAgfQogCiAgICAgLy8gUHVi
bGljCiAKICAgICBnZXQgc291cmNlQ29kZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5f
c291cmNlQ29kZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBjb250ZW50KCkKICAgICB7CiAg
ICAgICAgIHJldHVybiB0aGlzLl9jb250ZW50OwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IGNv
bnRlbnQoY29udGVudCkKICAgICB7CkBAIC01OCwyMiArNTcsMjAgQEAgV2ViSW5zcGVjdG9yLlNv
dXJjZUNvZGVSZXZpc2lvbi5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2NvbnRlbnQgPSBj
b250ZW50OwogCiAgICAgICAgIHRoaXMuX3NvdXJjZUNvZGUucmV2aXNpb25Db250ZW50RGlkQ2hh
bmdlKHRoaXMpOwotICAgIH0sCisgICAgfQogCi0gICAgYXBwbHk6IGZ1bmN0aW9uKCkKKyAgICBh
cHBseSgpCiAgICAgewogICAgICAgICB0aGlzLl9zb3VyY2VDb2RlLmN1cnJlbnRSZXZpc2lvbiA9
IHRoaXM7Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZXZlcnQ6IGZ1bmN0aW9uKCkKKyAgICByZXZl
cnQoKQogICAgIHsKICAgICAgICAgdGhpcy5fc291cmNlQ29kZS5jdXJyZW50UmV2aXNpb24gPSB0
aGlzLl9zb3VyY2VDb2RlLm9yaWdpbmFsUmV2aXNpb247Ci0gICAgfSwKKyAgICB9CiAKLSAgICBj
b3B5OiBmdW5jdGlvbigpCisgICAgY29weSgpCiAgICAgewogICAgICAgICByZXR1cm4gbmV3IFdl
Ykluc3BlY3Rvci5Tb3VyY2VDb2RlUmV2aXNpb24odGhpcy5fc291cmNlQ29kZSwgdGhpcy5fY29u
dGVudCk7CiAgICAgfQogfTsKLQotV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVSZXZpc2lvbi5wcm90
b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlJldmlzaW9uLnByb3RvdHlwZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Tb3VyY2VD
b2RlU2VhcmNoTWF0Y2hPYmplY3QuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Nb2RlbHMvU291cmNlQ29kZVNlYXJjaE1hdGNoT2JqZWN0LmpzCmluZGV4IDgzZjUzNmYu
LjJjNGZhODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L01vZGVscy9Tb3VyY2VDb2RlU2VhcmNoTWF0Y2hPYmplY3QuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1NvdXJjZUNvZGVTZWFyY2hNYXRjaE9iamVj
dC5qcwpAQCAtMjMsNTIgKzIzLDQ2IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVTZWFyY2hNYXRjaE9iamVjdCA9IGZ1
bmN0aW9uKHNvdXJjZUNvZGUsIGxpbmVUZXh0LCBzZWFyY2hUZXJtLCB0ZXh0UmFuZ2UpCitXZWJJ
bnNwZWN0b3IuU291cmNlQ29kZVNlYXJjaE1hdGNoT2JqZWN0ID0gY2xhc3MgU291cmNlQ29kZVNl
YXJjaE1hdGNoT2JqZWN0IGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogewotICAgIGNvbnNv
bGUuYXNzZXJ0KHNvdXJjZUNvZGUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuU291cmNlQ29kZSk7
CisgICAgY29uc3RydWN0b3Ioc291cmNlQ29kZSwgbGluZVRleHQsIHNlYXJjaFRlcm0sIHRleHRS
YW5nZSkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CiAKLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0
LmNhbGwodGhpcyk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHNvdXJjZUNvZGUgaW5zdGFuY2Vv
ZiBXZWJJbnNwZWN0b3IuU291cmNlQ29kZSk7CiAKLSAgICB0aGlzLl9zb3VyY2VDb2RlID0gc291
cmNlQ29kZTsKLSAgICB0aGlzLl9saW5lVGV4dCA9IGxpbmVUZXh0OwotICAgIHRoaXMuX3NlYXJj
aFRlcm0gPSBzZWFyY2hUZXJtOwotICAgIHRoaXMuX3NvdXJjZUNvZGVUZXh0UmFuZ2UgPSBzb3Vy
Y2VDb2RlLmNyZWF0ZVNvdXJjZUNvZGVUZXh0UmFuZ2UodGV4dFJhbmdlKTsKLX07CisgICAgICAg
IHRoaXMuX3NvdXJjZUNvZGUgPSBzb3VyY2VDb2RlOworICAgICAgICB0aGlzLl9saW5lVGV4dCA9
IGxpbmVUZXh0OworICAgICAgICB0aGlzLl9zZWFyY2hUZXJtID0gc2VhcmNoVGVybTsKKyAgICAg
ICAgdGhpcy5fc291cmNlQ29kZVRleHRSYW5nZSA9IHNvdXJjZUNvZGUuY3JlYXRlU291cmNlQ29k
ZVRleHRSYW5nZSh0ZXh0UmFuZ2UpOworICAgIH0KIAotV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVT
ZWFyY2hNYXRjaE9iamVjdC5Tb3VyY2VDb2RlTWF0Y2hJY29uU3R5bGVDbGFzc05hbWUgPSAic291
cmNlLWNvZGUtbWF0Y2gtaWNvbiI7Ci0KLVdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlU2VhcmNoTWF0
Y2hPYmplY3QuVHlwZUlkZW50aWZpZXIgPSAic291cmNlLWNvZGUtc2VhcmNoLW1hdGNoLW9iamVj
dCI7Ci1XZWJJbnNwZWN0b3IuU291cmNlQ29kZVNlYXJjaE1hdGNoT2JqZWN0LlVSTENvb2tpZUtl
eSA9ICJzb3VyY2UtY29kZS11cmwiOwotV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVTZWFyY2hNYXRj
aE9iamVjdC5UZXh0UmFuZ2VLZXkgPSAidGV4dC1yYW5nZSI7Ci0KLVdlYkluc3BlY3Rvci5Tb3Vy
Y2VDb2RlU2VhcmNoTWF0Y2hPYmplY3QucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBX
ZWJJbnNwZWN0b3IuU291cmNlQ29kZVNlYXJjaE1hdGNoT2JqZWN0LAotICAgIF9fcHJvdG9fXzog
V2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGUsCisgICAgLy8gUHVibGljCiAKICAgICBnZXQg
c291cmNlQ29kZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc291cmNlQ29kZTsKLSAg
ICB9LAorICAgIH0KIAogICAgIGdldCB0aXRsZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhp
cy5fbGluZVRleHQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgY2xhc3NOYW1lKCkKICAgICB7
CiAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVNlYXJjaE1hdGNoT2JqZWN0
LlNvdXJjZUNvZGVNYXRjaEljb25TdHlsZUNsYXNzTmFtZTsKLSAgICB9LAorICAgIH0KIAogICAg
IGdldCBzZWFyY2hUZXJtKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zZWFyY2hUZXJt
OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHNvdXJjZUNvZGVUZXh0UmFuZ2UoKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIHRoaXMuX3NvdXJjZUNvZGVUZXh0UmFuZ2U7Ci0gICAgfSwKKyAgICB9
CiAKICAgICBzYXZlSWRlbnRpdHlUb0Nvb2tpZShjb29raWUpCiAgICAgewpAQCAtNzksMyArNzMs
OSBAQCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVNlYXJjaE1hdGNoT2JqZWN0LnByb3RvdHlwZSA9
IHsKICAgICAgICAgY29va2llW1dlYkluc3BlY3Rvci5Tb3VyY2VDb2RlU2VhcmNoTWF0Y2hPYmpl
Y3QuVGV4dFJhbmdlS2V5XSA9IFt0ZXh0UmFuZ2Uuc3RhcnRMaW5lLCB0ZXh0UmFuZ2Uuc3RhcnRD
b2x1bW4sIHRleHRSYW5nZS5lbmRMaW5lLCB0ZXh0UmFuZ2UuZW5kQ29sdW1uXS5qb2luKCk7CiAg
ICAgfQogfTsKKworV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVTZWFyY2hNYXRjaE9iamVjdC5Tb3Vy
Y2VDb2RlTWF0Y2hJY29uU3R5bGVDbGFzc05hbWUgPSAic291cmNlLWNvZGUtbWF0Y2gtaWNvbiI7
CisKK1dlYkluc3BlY3Rvci5Tb3VyY2VDb2RlU2VhcmNoTWF0Y2hPYmplY3QuVHlwZUlkZW50aWZp
ZXIgPSAic291cmNlLWNvZGUtc2VhcmNoLW1hdGNoLW9iamVjdCI7CitXZWJJbnNwZWN0b3IuU291
cmNlQ29kZVNlYXJjaE1hdGNoT2JqZWN0LlVSTENvb2tpZUtleSA9ICJzb3VyY2UtY29kZS11cmwi
OworV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVTZWFyY2hNYXRjaE9iamVjdC5UZXh0UmFuZ2VLZXkg
PSAidGV4dC1yYW5nZSI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Nb2RlbHMvU291cmNlQ29kZVRleHRSYW5nZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Tb3VyY2VDb2RlVGV4dFJhbmdlLmpzCmluZGV4IDU5
YmI1MDMuLjIxNjc0MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL01vZGVscy9Tb3VyY2VDb2RlVGV4dFJhbmdlLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Tb3VyY2VDb2RlVGV4dFJhbmdlLmpzCkBAIC0y
Myw0NCArMjMsMzkgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
Ci1XZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRSYW5nZSA9IGZ1bmN0aW9uKHNvdXJjZUNvZGUp
IC8qIHRleHRSYW5nZSB8fCBzdGFydExvY2F0aW9uLCBlbmRMb2NhdGlvbiAqLworV2ViSW5zcGVj
dG9yLlNvdXJjZUNvZGVUZXh0UmFuZ2UgPSBjbGFzcyBTb3VyY2VDb2RlVGV4dFJhbmdlIGV4dGVu
ZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0
aGlzKTsKKyAgICBjb25zdHJ1Y3Rvcihzb3VyY2VDb2RlKSAvKiB0ZXh0UmFuZ2UgfHwgc3RhcnRM
b2NhdGlvbiwgZW5kTG9jYXRpb24gKi8KKyAgICB7CisgICAgICAgIHN1cGVyKCk7CiAKLSAgICBj
b25zb2xlLmFzc2VydChzb3VyY2VDb2RlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlNvdXJjZUNv
ZGUpOwotICAgIGNvbnNvbGUuYXNzZXJ0KGFyZ3VtZW50cy5sZW5ndGggPT09IDIgfHwgYXJndW1l
bnRzLmxlbmd0aCA9PT0gMyk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHNvdXJjZUNvZGUgaW5z
dGFuY2VvZiBXZWJJbnNwZWN0b3IuU291cmNlQ29kZSk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KGFyZ3VtZW50cy5sZW5ndGggPT09IDIgfHwgYXJndW1lbnRzLmxlbmd0aCA9PT0gMyk7CiAKLSAg
ICB0aGlzLl9zb3VyY2VDb2RlID0gc291cmNlQ29kZTsKKyAgICAgICAgdGhpcy5fc291cmNlQ29k
ZSA9IHNvdXJjZUNvZGU7CiAKLSAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMikgewotICAg
ICAgICB2YXIgdGV4dFJhbmdlID0gYXJndW1lbnRzWzFdOwotICAgICAgICBjb25zb2xlLmFzc2Vy
dCh0ZXh0UmFuZ2UgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuVGV4dFJhbmdlKTsKLSAgICAgICAg
dGhpcy5fc3RhcnRMb2NhdGlvbiA9IHNvdXJjZUNvZGUuY3JlYXRlU291cmNlQ29kZUxvY2F0aW9u
KHRleHRSYW5nZS5zdGFydExpbmUsIHRleHRSYW5nZS5zdGFydENvbHVtbik7Ci0gICAgICAgIHRo
aXMuX2VuZExvY2F0aW9uID0gc291cmNlQ29kZS5jcmVhdGVTb3VyY2VDb2RlTG9jYXRpb24odGV4
dFJhbmdlLmVuZExpbmUsIHRleHRSYW5nZS5lbmRDb2x1bW4pOwotICAgIH0gZWxzZSB7Ci0gICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KGFyZ3VtZW50c1sxXSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5T
b3VyY2VDb2RlTG9jYXRpb24pOwotICAgICAgICBjb25zb2xlLmFzc2VydChhcmd1bWVudHNbMl0g
aW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuU291cmNlQ29kZUxvY2F0aW9uKTsKLSAgICAgICAgdGhp
cy5fc3RhcnRMb2NhdGlvbiA9IGFyZ3VtZW50c1sxXTsKLSAgICAgICAgdGhpcy5fZW5kTG9jYXRp
b24gPSBhcmd1bWVudHNbMl07CisgICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAyKSB7
CisgICAgICAgICAgICB2YXIgdGV4dFJhbmdlID0gYXJndW1lbnRzWzFdOworICAgICAgICAgICAg
Y29uc29sZS5hc3NlcnQodGV4dFJhbmdlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlRleHRSYW5n
ZSk7CisgICAgICAgICAgICB0aGlzLl9zdGFydExvY2F0aW9uID0gc291cmNlQ29kZS5jcmVhdGVT
b3VyY2VDb2RlTG9jYXRpb24odGV4dFJhbmdlLnN0YXJ0TGluZSwgdGV4dFJhbmdlLnN0YXJ0Q29s
dW1uKTsKKyAgICAgICAgICAgIHRoaXMuX2VuZExvY2F0aW9uID0gc291cmNlQ29kZS5jcmVhdGVT
b3VyY2VDb2RlTG9jYXRpb24odGV4dFJhbmdlLmVuZExpbmUsIHRleHRSYW5nZS5lbmRDb2x1bW4p
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoYXJndW1lbnRz
WzFdIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVMb2NhdGlvbik7CisgICAgICAg
ICAgICBjb25zb2xlLmFzc2VydChhcmd1bWVudHNbMl0gaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3Iu
U291cmNlQ29kZUxvY2F0aW9uKTsKKyAgICAgICAgICAgIHRoaXMuX3N0YXJ0TG9jYXRpb24gPSBh
cmd1bWVudHNbMV07CisgICAgICAgICAgICB0aGlzLl9lbmRMb2NhdGlvbiA9IGFyZ3VtZW50c1sy
XTsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuX3N0YXJ0TG9jYXRpb24uYWRkRXZlbnRMaXN0
ZW5lcihXZWJJbnNwZWN0b3IuU291cmNlQ29kZUxvY2F0aW9uLkV2ZW50LkxvY2F0aW9uQ2hhbmdl
ZCwgdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uQ2hhbmdlZCwgdGhpcyk7CisgICAgICAgIHRoaXMu
X2VuZExvY2F0aW9uLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVMb2Nh
dGlvbi5FdmVudC5Mb2NhdGlvbkNoYW5nZWQsIHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbkNoYW5n
ZWQsIHRoaXMpOwogICAgIH0KIAotICAgIHRoaXMuX3N0YXJ0TG9jYXRpb24uYWRkRXZlbnRMaXN0
ZW5lcihXZWJJbnNwZWN0b3IuU291cmNlQ29kZUxvY2F0aW9uLkV2ZW50LkxvY2F0aW9uQ2hhbmdl
ZCwgdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uQ2hhbmdlZCwgdGhpcyk7Ci0gICAgdGhpcy5fZW5k
TG9jYXRpb24uYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU291cmNlQ29kZUxvY2F0aW9u
LkV2ZW50LkxvY2F0aW9uQ2hhbmdlZCwgdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uQ2hhbmdlZCwg
dGhpcyk7Ci19OwotCi1XZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRSYW5nZS5FdmVudCA9IHsK
LSAgICBSYW5nZUNoYW5nZWQ6ICJzb3VyY2UtY29kZS10ZXh0LXJhbmdlLXJhbmdlLWNoYW5nZWQi
Ci19OwotCi1XZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRSYW5nZS5wcm90b3R5cGUgPSB7Ci0g
ICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dFJhbmdlLAotCiAgICAg
Ly8gUHVibGljCiAKICAgICBnZXQgc291cmNlQ29kZSgpCiAgICAgewogICAgICAgICByZXR1cm4g
dGhpcy5fc291cmNlQ29kZTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFJhdyB0ZXh0IHJhbmdl
IGluIHRoZSBvcmlnaW5hbCBzb3VyY2UgY29kZS4KIApAQCAtNzEsNyArNjYsNyBAQCBXZWJJbnNw
ZWN0b3IuU291cmNlQ29kZVRleHRSYW5nZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBlbmRM
aW5lID0gdGhpcy5fZW5kTG9jYXRpb24ubGluZU51bWJlcjsKICAgICAgICAgdmFyIGVuZENvbHVt
biA9IHRoaXMuX2VuZExvY2F0aW9uLmNvbHVtbk51bWJlcjsKICAgICAgICAgcmV0dXJuIG5ldyBX
ZWJJbnNwZWN0b3IuVGV4dFJhbmdlKHN0YXJ0TGluZSwgc3RhcnRDb2x1bW4sIGVuZExpbmUsIGVu
ZENvbHVtbik7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBGb3JtYXR0ZWQgdGV4dCByYW5nZSBp
biB0aGUgb3JpZ2luYWwgc291cmNlIGNvZGUgaWYgaXQgaXMgcHJldHR5IHByaW50ZWQuCiAgICAg
Ly8gVGhpcyBpcyB0aGUgc2FtZSBhcyB0aGUgcmF3IHRleHQgcmFuZ2UgaWYgdGhlIHNvdXJjZSBj
b2RlIGhhcyBubyBmb3JtYXR0ZXIuCkBAIC04Myw3ICs3OCw3IEBAIFdlYkluc3BlY3Rvci5Tb3Vy
Y2VDb2RlVGV4dFJhbmdlLnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIGVuZExpbmUgPSB0aGlz
Ll9lbmRMb2NhdGlvbi5mb3JtYXR0ZWRMaW5lTnVtYmVyOwogICAgICAgICB2YXIgZW5kQ29sdW1u
ID0gdGhpcy5fZW5kTG9jYXRpb24uZm9ybWF0dGVkQ29sdW1uTnVtYmVyOwogICAgICAgICByZXR1
cm4gbmV3IFdlYkluc3BlY3Rvci5UZXh0UmFuZ2Uoc3RhcnRMaW5lLCBzdGFydENvbHVtbiwgZW5k
TGluZSwgZW5kQ29sdW1uKTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIERpc3BsYXkgdmFsdWVz
OgogICAgIC8vICAgLSBNYXBwZWQgcmVzb3VyY2UgYW5kIHRleHQgcmFuZ2UgbG9jYXRpb25zIGlm
IHRoZSBvcmlnaW5hbCBzb3VyY2UgY29kZSBoYXMgYQpAQCAtOTYsNyArOTEsNyBAQCBXZWJJbnNw
ZWN0b3IuU291cmNlQ29kZVRleHRSYW5nZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1
cm4gdGhpcy5fc291cmNlQ29kZTsKIAogICAgICAgICByZXR1cm4gdGhpcy5fc3RhcnRMb2NhdGlv
bi5kaXNwbGF5U291cmNlQ29kZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBkaXNwbGF5VGV4
dFJhbmdlKCkKICAgICB7CkBAIC0xMDgsMTkgKzEwMywyMSBAQCBXZWJJbnNwZWN0b3IuU291cmNl
Q29kZVRleHRSYW5nZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBlbmRMaW5lID0gdGhpcy5f
ZW5kTG9jYXRpb24uZGlzcGxheUxpbmVOdW1iZXI7CiAgICAgICAgIHZhciBlbmRDb2x1bW4gPSB0
aGlzLl9lbmRMb2NhdGlvbi5kaXNwbGF5Q29sdW1uTnVtYmVyOwogICAgICAgICByZXR1cm4gbmV3
IFdlYkluc3BlY3Rvci5UZXh0UmFuZ2Uoc3RhcnRMaW5lLCBzdGFydENvbHVtbiwgZW5kTGluZSwg
ZW5kQ29sdW1uKTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAgIF9zdGFy
dEFuZEVuZExvY2F0aW9uc0luU2FtZU1hcHBlZFJlc291cmNlOiBmdW5jdGlvbigpCisgICAgX3N0
YXJ0QW5kRW5kTG9jYXRpb25zSW5TYW1lTWFwcGVkUmVzb3VyY2UoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHRoaXMuX3N0YXJ0TG9jYXRpb24uaGFzTWFwcGVkTG9jYXRpb24oKSAmJiB0aGlzLl9l
bmRMb2NhdGlvbi5oYXNNYXBwZWRMb2NhdGlvbigpICYmIHRoaXMuX3N0YXJ0TG9jYXRpb24uZGlz
cGxheVNvdXJjZUNvZGUgPT09IHRoaXMuX2VuZExvY2F0aW9uLmRpc3BsYXlTb3VyY2VDb2RlOwot
ICAgIH0sCisgICAgfQogCi0gICAgX3NvdXJjZUNvZGVMb2NhdGlvbkNoYW5nZWQ6IGZ1bmN0aW9u
KGV2ZW50KQorICAgIF9zb3VyY2VDb2RlTG9jYXRpb25DaGFuZ2VkKGV2ZW50KQogICAgIHsKICAg
ICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlNvdXJjZUNv
ZGVMb2NhdGlvbi5FdmVudC5SYW5nZUNoYW5nZWQpOwogICAgIH0KIH07CiAKLVdlYkluc3BlY3Rv
ci5Tb3VyY2VDb2RlVGV4dFJhbmdlLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3Iu
T2JqZWN0LnByb3RvdHlwZTsKK1dlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dFJhbmdlLkV2ZW50
ID0geworICAgIFJhbmdlQ2hhbmdlZDogInNvdXJjZS1jb2RlLXRleHQtcmFuZ2UtcmFuZ2UtY2hh
bmdlZCIKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Nb2RlbHMvU291cmNlQ29kZVRpbWVsaW5lLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvTW9kZWxzL1NvdXJjZUNvZGVUaW1lbGluZS5qcwppbmRleCAzNDhmZjU3Li41
YzdjNjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9N
b2RlbHMvU291cmNlQ29kZVRpbWVsaW5lLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL01vZGVscy9Tb3VyY2VDb2RlVGltZWxpbmUuanMKQEAgLTIzLDU1ICsyMyw0
NSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3Bl
Y3Rvci5Tb3VyY2VDb2RlVGltZWxpbmUgPSBmdW5jdGlvbihzb3VyY2VDb2RlLCBzb3VyY2VDb2Rl
TG9jYXRpb24sIHJlY29yZFR5cGUsIHJlY29yZEV2ZW50VHlwZSkKK1dlYkluc3BlY3Rvci5Tb3Vy
Y2VDb2RlVGltZWxpbmUgPSBjbGFzcyBTb3VyY2VDb2RlVGltZWxpbmUgZXh0ZW5kcyBXZWJJbnNw
ZWN0b3IuVGltZWxpbmUKIHsKLSAgICBXZWJJbnNwZWN0b3IuVGltZWxpbmUuY2FsbCh0aGlzKTsK
LQotICAgIGNvbnNvbGUuYXNzZXJ0KHNvdXJjZUNvZGUpOwotICAgIGNvbnNvbGUuYXNzZXJ0KCFz
b3VyY2VDb2RlTG9jYXRpb24gfHwgc291cmNlQ29kZUxvY2F0aW9uLnNvdXJjZUNvZGUgPT09IHNv
dXJjZUNvZGUpOwotICAgIGNvbnNvbGUuYXNzZXJ0KHJlY29yZFR5cGUpOwotCi0gICAgdGhpcy5f
c291cmNlQ29kZSA9IHNvdXJjZUNvZGU7Ci0gICAgdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uID0g
c291cmNlQ29kZUxvY2F0aW9uIHx8IG51bGw7Ci0gICAgdGhpcy5fcmVjb3JkVHlwZSA9IHJlY29y
ZFR5cGU7Ci0gICAgdGhpcy5fcmVjb3JkRXZlbnRUeXBlID0gcmVjb3JkRXZlbnRUeXBlIHx8IG51
bGw7Ci19OwotCi1XZWJJbnNwZWN0b3IuU291cmNlQ29kZVRpbWVsaW5lLlR5cGVJZGVudGlmaWVy
ID0gInNvdXJjZS1jb2RlLXRpbWVsaW5lIjsKLVdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGltZWxp
bmUuU291cmNlQ29kZVVSTENvb2tpZUtleSA9ICJzb3VyY2UtY29kZS10aW1lbGluZS1zb3VyY2Ut
Y29kZS11cmwiOwotV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUaW1lbGluZS5Tb3VyY2VDb2RlTG9j
YXRpb25MaW5lQ29va2llS2V5ID0gInNvdXJjZS1jb2RlLXRpbWVsaW5lLXNvdXJjZS1jb2RlLWxv
Y2F0aW9uLWxpbmUiOwotV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUaW1lbGluZS5Tb3VyY2VDb2Rl
TG9jYXRpb25Db2x1bW5Db29raWVLZXkgPSAic291cmNlLWNvZGUtdGltZWxpbmUtc291cmNlLWNv
ZGUtbG9jYXRpb24tY29sdW1uIjsKLVdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGltZWxpbmUuU291
cmNlQ29kZVVSTENvb2tpZUtleSA9ICJzb3VyY2UtY29kZS10aW1lbGluZS1zb3VyY2UtY29kZS11
cmwiOwotV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUaW1lbGluZS5SZWNvcmRUeXBlQ29va2llS2V5
ID0gInNvdXJjZS1jb2RlLXRpbWVsaW5lLXJlY29yZC10eXBlIjsKLVdlYkluc3BlY3Rvci5Tb3Vy
Y2VDb2RlVGltZWxpbmUuUmVjb3JkRXZlbnRUeXBlQ29va2llS2V5ID0gInNvdXJjZS1jb2RlLXRp
bWVsaW5lLXJlY29yZC1ldmVudC10eXBlIjsKLQotV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUaW1l
bGluZS5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5Tb3VyY2VD
b2RlVGltZWxpbmUsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuVGltZWxpbmUucHJvdG90
eXBlLAorICAgIGNvbnN0cnVjdG9yKHNvdXJjZUNvZGUsIHNvdXJjZUNvZGVMb2NhdGlvbiwgcmVj
b3JkVHlwZSwgcmVjb3JkRXZlbnRUeXBlKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKKworICAg
ICAgICBjb25zb2xlLmFzc2VydChzb3VyY2VDb2RlKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQo
IXNvdXJjZUNvZGVMb2NhdGlvbiB8fCBzb3VyY2VDb2RlTG9jYXRpb24uc291cmNlQ29kZSA9PT0g
c291cmNlQ29kZSk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJlY29yZFR5cGUpOworCisgICAg
ICAgIHRoaXMuX3NvdXJjZUNvZGUgPSBzb3VyY2VDb2RlOworICAgICAgICB0aGlzLl9zb3VyY2VD
b2RlTG9jYXRpb24gPSBzb3VyY2VDb2RlTG9jYXRpb24gfHwgbnVsbDsKKyAgICAgICAgdGhpcy5f
cmVjb3JkVHlwZSA9IHJlY29yZFR5cGU7CisgICAgICAgIHRoaXMuX3JlY29yZEV2ZW50VHlwZSA9
IHJlY29yZEV2ZW50VHlwZSB8fCBudWxsOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAg
Z2V0IHNvdXJjZUNvZGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3NvdXJjZUNvZGU7
Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc291cmNlQ29kZUxvY2F0aW9uKCkKICAgICB7CiAg
ICAgICAgIHJldHVybiB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb247Ci0gICAgfSwKKyAgICB9CiAK
ICAgICBnZXQgcmVjb3JkVHlwZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcmVjb3Jk
VHlwZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCByZWNvcmRFdmVudFR5cGUoKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIHRoaXMuX3JlY29yZEV2ZW50VHlwZTsKLSAgICB9LAorICAgIH0KIAot
ICAgIHNhdmVJZGVudGl0eVRvQ29va2llOiBmdW5jdGlvbihjb29raWUpCisgICAgc2F2ZUlkZW50
aXR5VG9Db29raWUoY29va2llKQogICAgIHsKICAgICAgICAgY29va2llW1dlYkluc3BlY3Rvci5T
b3VyY2VDb2RlVGltZWxpbmUuU291cmNlQ29kZVVSTENvb2tpZUtleV0gPSB0aGlzLl9zb3VyY2VD
b2RlLnVybCA/IHRoaXMuX3NvdXJjZUNvZGUudXJsLmhhc2ggOiBudWxsOwogICAgICAgICBjb29r
aWVbV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUaW1lbGluZS5Tb3VyY2VDb2RlTG9jYXRpb25MaW5l
Q29va2llS2V5XSA9IHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbiA/IHRoaXMuX3NvdXJjZUNvZGVM
b2NhdGlvbi5saW5lTnVtYmVyIDogbnVsbDsKQEAgLTgwLDMgKzcwLDExIEBAIFdlYkluc3BlY3Rv
ci5Tb3VyY2VDb2RlVGltZWxpbmUucHJvdG90eXBlID0gewogICAgICAgICBjb29raWVbV2ViSW5z
cGVjdG9yLlNvdXJjZUNvZGVUaW1lbGluZS5SZWNvcmRFdmVudFR5cGVDb29raWVLZXldID0gdGhp
cy5fcmVjb3JkRXZlbnRUeXBlIHx8IG51bGw7CiAgICAgfQogfTsKKworV2ViSW5zcGVjdG9yLlNv
dXJjZUNvZGVUaW1lbGluZS5UeXBlSWRlbnRpZmllciA9ICJzb3VyY2UtY29kZS10aW1lbGluZSI7
CitXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRpbWVsaW5lLlNvdXJjZUNvZGVVUkxDb29raWVLZXkg
PSAic291cmNlLWNvZGUtdGltZWxpbmUtc291cmNlLWNvZGUtdXJsIjsKK1dlYkluc3BlY3Rvci5T
b3VyY2VDb2RlVGltZWxpbmUuU291cmNlQ29kZUxvY2F0aW9uTGluZUNvb2tpZUtleSA9ICJzb3Vy
Y2UtY29kZS10aW1lbGluZS1zb3VyY2UtY29kZS1sb2NhdGlvbi1saW5lIjsKK1dlYkluc3BlY3Rv
ci5Tb3VyY2VDb2RlVGltZWxpbmUuU291cmNlQ29kZUxvY2F0aW9uQ29sdW1uQ29va2llS2V5ID0g
InNvdXJjZS1jb2RlLXRpbWVsaW5lLXNvdXJjZS1jb2RlLWxvY2F0aW9uLWNvbHVtbiI7CitXZWJJ
bnNwZWN0b3IuU291cmNlQ29kZVRpbWVsaW5lLlNvdXJjZUNvZGVVUkxDb29raWVLZXkgPSAic291
cmNlLWNvZGUtdGltZWxpbmUtc291cmNlLWNvZGUtdXJsIjsKK1dlYkluc3BlY3Rvci5Tb3VyY2VD
b2RlVGltZWxpbmUuUmVjb3JkVHlwZUNvb2tpZUtleSA9ICJzb3VyY2UtY29kZS10aW1lbGluZS1y
ZWNvcmQtdHlwZSI7CitXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRpbWVsaW5lLlJlY29yZEV2ZW50
VHlwZUNvb2tpZUtleSA9ICJzb3VyY2UtY29kZS10aW1lbGluZS1yZWNvcmQtZXZlbnQtdHlwZSI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMv
U291cmNlTWFwLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxz
L1NvdXJjZU1hcC5qcwppbmRleCAxYTc2MjI4Li45NTM0N2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvU291cmNlTWFwLmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Tb3VyY2VNYXAuanMKQEAg
LTIzLDM0ICsyMywzOCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKLVdlYkluc3BlY3Rvci5Tb3VyY2VNYXAgPSBmdW5jdGlvbihzb3VyY2VNYXBwaW5nVVJMLCBw
YXlsb2FkLCBvcmlnaW5hbFNvdXJjZUNvZGUpCitXZWJJbnNwZWN0b3IuU291cmNlTWFwID0gY2xh
c3MgU291cmNlTWFwIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogewotICAgIGlmICghV2Vi
SW5zcGVjdG9yLlNvdXJjZU1hcC5wcm90b3R5cGUuX2Jhc2U2NE1hcCkgewotICAgICAgICBjb25z
dCBiYXNlNjREaWdpdHMgPSAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xt
bm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyI7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5Tb3VyY2VN
YXAucHJvdG90eXBlLl9iYXNlNjRNYXAgPSB7fTsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBiYXNlNjREaWdpdHMubGVuZ3RoOyArK2kpCi0gICAgICAgICAgICBXZWJJbnNwZWN0b3IuU291
cmNlTWFwLnByb3RvdHlwZS5fYmFzZTY0TWFwW2Jhc2U2NERpZ2l0cy5jaGFyQXQoaSldID0gaTsK
KyAgICBjb25zdHJ1Y3Rvcihzb3VyY2VNYXBwaW5nVVJMLCBwYXlsb2FkLCBvcmlnaW5hbFNvdXJj
ZUNvZGUpCisgICAgeworICAgICAgICBzdXBlcigpOworCisgICAgICAgIGlmICghV2ViSW5zcGVj
dG9yLlNvdXJjZU1hcC5fYmFzZTY0TWFwKSB7CisgICAgICAgICAgICB2YXIgYmFzZTY0RGlnaXRz
ID0gIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXow
MTIzNDU2Nzg5Ky8iOworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLlNvdXJjZU1hcC5fYmFzZTY0
TWFwID0ge307CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJhc2U2NERpZ2l0cy5s
ZW5ndGg7ICsraSkKKyAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuU291cmNlTWFwLl9iYXNl
NjRNYXBbYmFzZTY0RGlnaXRzLmNoYXJBdChpKV0gPSBpOworICAgICAgICB9CisKKyAgICAgICAg
dGhpcy5fb3JpZ2luYWxTb3VyY2VDb2RlID0gb3JpZ2luYWxTb3VyY2VDb2RlIHx8IG51bGw7Cisg
ICAgICAgIHRoaXMuX3NvdXJjZU1hcFJlc291cmNlcyA9IHt9OworICAgICAgICB0aGlzLl9zb3Vy
Y2VNYXBSZXNvdXJjZXNMaXN0ID0gW107CisKKyAgICAgICAgdGhpcy5fc291cmNlTWFwcGluZ1VS
TCA9IHNvdXJjZU1hcHBpbmdVUkw7CisgICAgICAgIHRoaXMuX3JldmVyc2VNYXBwaW5nc0J5U291
cmNlVVJMID0ge307CisgICAgICAgIHRoaXMuX21hcHBpbmdzID0gW107CisgICAgICAgIHRoaXMu
X3NvdXJjZXMgPSB7fTsKKyAgICAgICAgdGhpcy5fc291cmNlUm9vdCA9IG51bGw7CisgICAgICAg
IHRoaXMuX3NvdXJjZUNvbnRlbnRCeVVSTCA9IHt9OworICAgICAgICB0aGlzLl9wYXJzZU1hcHBp
bmdQYXlsb2FkKHBheWxvYWQpOwogICAgIH0KIAotICAgIHRoaXMuX29yaWdpbmFsU291cmNlQ29k
ZSA9IG9yaWdpbmFsU291cmNlQ29kZSB8fCBudWxsOwotICAgIHRoaXMuX3NvdXJjZU1hcFJlc291
cmNlcyA9IHt9OwotICAgIHRoaXMuX3NvdXJjZU1hcFJlc291cmNlc0xpc3QgPSBbXTsKLQotICAg
IHRoaXMuX3NvdXJjZU1hcHBpbmdVUkwgPSBzb3VyY2VNYXBwaW5nVVJMOwotICAgIHRoaXMuX3Jl
dmVyc2VNYXBwaW5nc0J5U291cmNlVVJMID0ge307Ci0gICAgdGhpcy5fbWFwcGluZ3MgPSBbXTsK
LSAgICB0aGlzLl9zb3VyY2VzID0ge307Ci0gICAgdGhpcy5fc291cmNlUm9vdCA9IG51bGw7Ci0g
ICAgdGhpcy5fc291cmNlQ29udGVudEJ5VVJMID0ge307Ci0gICAgdGhpcy5fcGFyc2VNYXBwaW5n
UGF5bG9hZChwYXlsb2FkKTsKLX07Ci0KLVdlYkluc3BlY3Rvci5Tb3VyY2VNYXAucHJvdG90eXBl
ID0geworICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IG9yaWdpbmFsU291cmNlQ29kZSgpCiAgICAg
ewogICAgICAgICByZXR1cm4gdGhpcy5fb3JpZ2luYWxTb3VyY2VDb2RlOwotICAgIH0sCisgICAg
fQogCiAgICAgZ2V0IHNvdXJjZU1hcHBpbmdCYXNlUGF0aFVSTENvbXBvbmVudHMoKQogICAgIHsK
QEAgLTc0LDUyICs3OCw1MiBAQCBXZWJJbnNwZWN0b3IuU291cmNlTWFwLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgdXJsQ29tcG9uZW50cy5sYXN0UGF0aENvbXBvbmVudCA9IG51bGw7CiAgICAgICAg
IHRoaXMuX3NvdXJjZU1hcHBpbmdVUkxCYXNlUGF0aENvbXBvbmVudHMgPSB1cmxDb21wb25lbnRz
OwogICAgICAgICByZXR1cm4gdGhpcy5fc291cmNlTWFwcGluZ1VSTEJhc2VQYXRoQ29tcG9uZW50
czsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCByZXNvdXJjZXMoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHRoaXMuX3NvdXJjZU1hcFJlc291cmNlc0xpc3Q7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBhZGRSZXNvdXJjZTogZnVuY3Rpb24ocmVzb3VyY2UpCisgICAgYWRkUmVzb3VyY2UocmVzb3Vy
Y2UpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCghKHJlc291cmNlLnVybCBpbiB0aGlz
Ll9zb3VyY2VNYXBSZXNvdXJjZXMpKTsKICAgICAgICAgdGhpcy5fc291cmNlTWFwUmVzb3VyY2Vz
W3Jlc291cmNlLnVybF0gPSByZXNvdXJjZTsKICAgICAgICAgdGhpcy5fc291cmNlTWFwUmVzb3Vy
Y2VzTGlzdC5wdXNoKHJlc291cmNlKTsKLSAgICB9LAorICAgIH0KIAotICAgIHJlc291cmNlRm9y
VVJMOiBmdW5jdGlvbih1cmwpCisgICAgcmVzb3VyY2VGb3JVUkwodXJsKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHRoaXMuX3NvdXJjZU1hcFJlc291cmNlc1t1cmxdOwotICAgIH0sCisgICAgfQog
Ci0gICAgc291cmNlczogZnVuY3Rpb24oKQorICAgIHNvdXJjZXMoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuX3NvdXJjZXMpOwotICAgIH0sCisgICAgfQogCi0gICAg
c291cmNlQ29udGVudDogZnVuY3Rpb24oc291cmNlVVJMKQorICAgIHNvdXJjZUNvbnRlbnQoc291
cmNlVVJMKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3NvdXJjZUNvbnRlbnRCeVVSTFtz
b3VyY2VVUkxdOwotICAgIH0sCisgICAgfQogCi0gICAgX3BhcnNlTWFwcGluZ1BheWxvYWQ6IGZ1
bmN0aW9uKG1hcHBpbmdQYXlsb2FkKQorICAgIF9wYXJzZU1hcHBpbmdQYXlsb2FkKG1hcHBpbmdQ
YXlsb2FkKQogICAgIHsKICAgICAgICAgaWYgKG1hcHBpbmdQYXlsb2FkLnNlY3Rpb25zKQogICAg
ICAgICAgICAgdGhpcy5fcGFyc2VTZWN0aW9ucyhtYXBwaW5nUGF5bG9hZC5zZWN0aW9ucyk7CiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIHRoaXMuX3BhcnNlTWFwKG1hcHBpbmdQYXlsb2FkLCAw
LCAwKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9wYXJzZVNlY3Rpb25zOiBmdW5jdGlvbihzZWN0
aW9ucykKKyAgICBfcGFyc2VTZWN0aW9ucyhzZWN0aW9ucykKICAgICB7CiAgICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgc2VjdGlvbnMubGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgIHZhciBz
ZWN0aW9uID0gc2VjdGlvbnNbaV07CiAgICAgICAgICAgICB0aGlzLl9wYXJzZU1hcChzZWN0aW9u
Lm1hcCwgc2VjdGlvbi5vZmZzZXQubGluZSwgc2VjdGlvbi5vZmZzZXQuY29sdW1uKTsKICAgICAg
ICAgfQotICAgIH0sCisgICAgfQogCi0gICAgZmluZEVudHJ5OiBmdW5jdGlvbihsaW5lTnVtYmVy
LCBjb2x1bW5OdW1iZXIpCisgICAgZmluZEVudHJ5KGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikK
ICAgICB7CiAgICAgICAgIHZhciBmaXJzdCA9IDA7CiAgICAgICAgIHZhciBjb3VudCA9IHRoaXMu
X21hcHBpbmdzLmxlbmd0aDsKQEAgLTEzOCw5ICsxNDIsOSBAQCBXZWJJbnNwZWN0b3IuU291cmNl
TWFwLnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKCFmaXJzdCAmJiBlbnRyeSAmJiAobGluZU51
bWJlciA8IGVudHJ5WzBdIHx8IChsaW5lTnVtYmVyID09PSBlbnRyeVswXSAmJiBjb2x1bW5OdW1i
ZXIgPCBlbnRyeVsxXSkpKQogICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgIHJldHVy
biBlbnRyeTsKLSAgICB9LAorICAgIH0KIAotICAgIGZpbmRFbnRyeVJldmVyc2VkOiBmdW5jdGlv
bihzb3VyY2VVUkwsIGxpbmVOdW1iZXIpCisgICAgZmluZEVudHJ5UmV2ZXJzZWQoc291cmNlVVJM
LCBsaW5lTnVtYmVyKQogICAgIHsKICAgICAgICAgdmFyIG1hcHBpbmdzID0gdGhpcy5fcmV2ZXJz
ZU1hcHBpbmdzQnlTb3VyY2VVUkxbc291cmNlVVJMXTsKICAgICAgICAgZm9yICggOyBsaW5lTnVt
YmVyIDwgbWFwcGluZ3MubGVuZ3RoOyArK2xpbmVOdW1iZXIpIHsKQEAgLTE0OSw5ICsxNTMsOSBA
QCBXZWJJbnNwZWN0b3IuU291cmNlTWFwLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICBy
ZXR1cm4gbWFwcGluZzsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gdGhpcy5fbWFwcGluZ3Nb
MF07Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcGFyc2VNYXA6IGZ1bmN0aW9uKG1hcCwgbGluZU51
bWJlciwgY29sdW1uTnVtYmVyKQorICAgIF9wYXJzZU1hcChtYXAsIGxpbmVOdW1iZXIsIGNvbHVt
bk51bWJlcikKICAgICB7CiAgICAgICAgIHZhciBzb3VyY2VJbmRleCA9IDA7CiAgICAgICAgIHZh
ciBzb3VyY2VMaW5lTnVtYmVyID0gMDsKQEAgLTIyMyw1MyArMjI3LDU0IEBAIFdlYkluc3BlY3Rv
ci5Tb3VyY2VNYXAucHJvdG90eXBlID0gewogICAgICAgICAgICAgaWYgKCFyZXZlcnNlTWFwcGlu
Z3Nbc291cmNlTGluZV0pCiAgICAgICAgICAgICAgICAgcmV2ZXJzZU1hcHBpbmdzW3NvdXJjZUxp
bmVdID0gW21hcHBpbmdbMF0sIG1hcHBpbmdbMV1dOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBfaXNTZXBhcmF0b3I6IGZ1bmN0aW9uKGNoYXIpCisgICAgX2lzU2VwYXJhdG9yKGNo
YXIpCiAgICAgewogICAgICAgICByZXR1cm4gY2hhciA9PT0gIiwiIHx8IGNoYXIgPT09ICI7IjsK
LSAgICB9LAorICAgIH0KIAotICAgIF9kZWNvZGVWTFE6IGZ1bmN0aW9uKHN0cmluZ0NoYXJJdGVy
YXRvcikKKyAgICBfZGVjb2RlVkxRKHN0cmluZ0NoYXJJdGVyYXRvcikKICAgICB7CiAgICAgICAg
IC8vIFJlYWQgdW5zaWduZWQgdmFsdWUuCiAgICAgICAgIHZhciByZXN1bHQgPSAwOwogICAgICAg
ICB2YXIgc2hpZnQgPSAwOwogICAgICAgICBkbyB7Ci0gICAgICAgICAgICB2YXIgZGlnaXQgPSB0
aGlzLl9iYXNlNjRNYXBbc3RyaW5nQ2hhckl0ZXJhdG9yLm5leHQoKV07Ci0gICAgICAgICAgICBy
ZXN1bHQgKz0gKGRpZ2l0ICYgdGhpcy5fVkxRX0JBU0VfTUFTSykgPDwgc2hpZnQ7Ci0gICAgICAg
ICAgICBzaGlmdCArPSB0aGlzLl9WTFFfQkFTRV9TSElGVDsKLSAgICAgICAgfSB3aGlsZSAoZGln
aXQgJiB0aGlzLl9WTFFfQ09OVElOVUFUSU9OX01BU0spOworICAgICAgICAgICAgdmFyIGRpZ2l0
ID0gV2ViSW5zcGVjdG9yLlNvdXJjZU1hcC5fYmFzZTY0TWFwW3N0cmluZ0NoYXJJdGVyYXRvci5u
ZXh0KCldOworICAgICAgICAgICAgcmVzdWx0ICs9IChkaWdpdCAmIFdlYkluc3BlY3Rvci5Tb3Vy
Y2VNYXAuVkxRX0JBU0VfTUFTSykgPDwgc2hpZnQ7CisgICAgICAgICAgICBzaGlmdCArPSBXZWJJ
bnNwZWN0b3IuU291cmNlTWFwLlZMUV9CQVNFX1NISUZUOworICAgICAgICB9IHdoaWxlIChkaWdp
dCAmIFdlYkluc3BlY3Rvci5Tb3VyY2VNYXAuVkxRX0NPTlRJTlVBVElPTl9NQVNLKTsKIAogICAg
ICAgICAvLyBGaXggdGhlIHNpZ24uCiAgICAgICAgIHZhciBuZWdhdGl2ZSA9IHJlc3VsdCAmIDE7
CiAgICAgICAgIHJlc3VsdCA+Pj0gMTsKICAgICAgICAgcmV0dXJuIG5lZ2F0aXZlID8gLXJlc3Vs
dCA6IHJlc3VsdDsKLSAgICB9LAotCi0gICAgX1ZMUV9CQVNFX1NISUZUOiA1LAotICAgIF9WTFFf
QkFTRV9NQVNLOiAoMSA8PCA1KSAtIDEsCi0gICAgX1ZMUV9DT05USU5VQVRJT05fTUFTSzogMSA8
PCA1CisgICAgfQogfTsKIAotV2ViSW5zcGVjdG9yLlNvdXJjZU1hcC5TdHJpbmdDaGFySXRlcmF0
b3IgPSBmdW5jdGlvbihzdHJpbmcpCitXZWJJbnNwZWN0b3IuU291cmNlTWFwLlZMUV9CQVNFX1NI
SUZUID0gNTsKK1dlYkluc3BlY3Rvci5Tb3VyY2VNYXAuVkxRX0JBU0VfTUFTSyA9ICgxIDw8IDUp
IC0gMTsKK1dlYkluc3BlY3Rvci5Tb3VyY2VNYXAuVkxRX0NPTlRJTlVBVElPTl9NQVNLID0gMSA8
PCA1OworCitXZWJJbnNwZWN0b3IuU291cmNlTWFwLlN0cmluZ0NoYXJJdGVyYXRvciA9IGNsYXNz
IFN0cmluZ0NoYXJJdGVyYXRvcgogewotICAgIHRoaXMuX3N0cmluZyA9IHN0cmluZzsKLSAgICB0
aGlzLl9wb3NpdGlvbiA9IDA7Ci19OworICAgIGNvbnN0cnVjdG9yKHN0cmluZykKKyAgICB7Cisg
ICAgICAgIHRoaXMuX3N0cmluZyA9IHN0cmluZzsKKyAgICAgICAgdGhpcy5fcG9zaXRpb24gPSAw
OworICAgIH0KIAotV2ViSW5zcGVjdG9yLlNvdXJjZU1hcC5TdHJpbmdDaGFySXRlcmF0b3IucHJv
dG90eXBlID0gewotICAgIG5leHQ6IGZ1bmN0aW9uKCkKKyAgICBuZXh0KCkKICAgICB7CiAgICAg
ICAgIHJldHVybiB0aGlzLl9zdHJpbmcuY2hhckF0KHRoaXMuX3Bvc2l0aW9uKyspOwotICAgIH0s
CisgICAgfQogCi0gICAgcGVlazogZnVuY3Rpb24oKQorICAgIHBlZWsoKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHRoaXMuX3N0cmluZy5jaGFyQXQodGhpcy5fcG9zaXRpb24pOwotICAgIH0sCisg
ICAgfQogCi0gICAgaGFzTmV4dDogZnVuY3Rpb24oKQorICAgIGhhc05leHQoKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHRoaXMuX3Bvc2l0aW9uIDwgdGhpcy5fc3RyaW5nLmxlbmd0aDsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMv
U291cmNlTWFwUmVzb3VyY2UuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Nb2RlbHMvU291cmNlTWFwUmVzb3VyY2UuanMKaW5kZXggMzA4YTY0MS4uMzQwNzc3ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1NvdXJj
ZU1hcFJlc291cmNlLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L01vZGVscy9Tb3VyY2VNYXBSZXNvdXJjZS5qcwpAQCAtMjMsNDAgKzIzLDM4IEBACiAgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlNvdXJjZU1h
cFJlc291cmNlID0gZnVuY3Rpb24odXJsLCBzb3VyY2VNYXApCitXZWJJbnNwZWN0b3IuU291cmNl
TWFwUmVzb3VyY2UgPSBjbGFzcyBTb3VyY2VNYXBSZXNvdXJjZSBleHRlbmRzIFdlYkluc3BlY3Rv
ci5SZXNvdXJjZQogewotICAgIFdlYkluc3BlY3Rvci5SZXNvdXJjZS5jYWxsKHRoaXMsIHVybCwg
bnVsbCk7CisgICAgY29uc3RydWN0b3IodXJsLCBzb3VyY2VNYXApCisgICAgeworICAgICAgICBz
dXBlcih1cmwsIG51bGwpOwogCi0gICAgY29uc29sZS5hc3NlcnQodXJsKTsKLSAgICBjb25zb2xl
LmFzc2VydChzb3VyY2VNYXApOworICAgICAgICBjb25zb2xlLmFzc2VydCh1cmwpOworICAgICAg
ICBjb25zb2xlLmFzc2VydChzb3VyY2VNYXApOwogCi0gICAgdGhpcy5fc291cmNlTWFwID0gc291
cmNlTWFwOworICAgICAgICB0aGlzLl9zb3VyY2VNYXAgPSBzb3VyY2VNYXA7CiAKLSAgICB2YXIg
aW5oZXJpdGVkTUlNRVR5cGUgPSB0aGlzLl9zb3VyY2VNYXAub3JpZ2luYWxTb3VyY2VDb2RlIGlu
c3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlc291cmNlID8gdGhpcy5fc291cmNlTWFwLm9yaWdpbmFs
U291cmNlQ29kZS5zeW50aGV0aWNNSU1FVHlwZSA6IG51bGw7CisgICAgICAgIHZhciBpbmhlcml0
ZWRNSU1FVHlwZSA9IHRoaXMuX3NvdXJjZU1hcC5vcmlnaW5hbFNvdXJjZUNvZGUgaW5zdGFuY2Vv
ZiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UgPyB0aGlzLl9zb3VyY2VNYXAub3JpZ2luYWxTb3VyY2VD
b2RlLnN5bnRoZXRpY01JTUVUeXBlIDogbnVsbDsKIAotICAgIHZhciBmaWxlRXh0ZW5zaW9uID0g
V2ViSW5zcGVjdG9yLmZpbGVFeHRlbnNpb25Gb3JVUkwodXJsKTsKLSAgICB2YXIgZmlsZUV4dGVu
c2lvbk1JTUVUeXBlID0gV2ViSW5zcGVjdG9yLm1pbWVUeXBlRm9yRmlsZUV4dGVuc2lvbihmaWxl
RXh0ZW5zaW9uLCB0cnVlKTsKKyAgICAgICAgdmFyIGZpbGVFeHRlbnNpb24gPSBXZWJJbnNwZWN0
b3IuZmlsZUV4dGVuc2lvbkZvclVSTCh1cmwpOworICAgICAgICB2YXIgZmlsZUV4dGVuc2lvbk1J
TUVUeXBlID0gV2ViSW5zcGVjdG9yLm1pbWVUeXBlRm9yRmlsZUV4dGVuc2lvbihmaWxlRXh0ZW5z
aW9uLCB0cnVlKTsKIAotICAgIC8vIEZJWE1FOiBUaGlzIGlzIGEgbGF5ZXJpbmcgdmlvbGF0aW9u
LiBJdCBzaG91bGQgdXNlIGEgaGVscGVyIGZ1bmN0aW9uIG9uIHRoZQotICAgIC8vIFJlc291cmNl
IGJhc2UtY2xhc3MgdG8gc2V0IF9taW1lVHlwZSBhbmQgX3R5cGUuCi0gICAgdGhpcy5fbWltZVR5
cGUgPSBmaWxlRXh0ZW5zaW9uTUlNRVR5cGUgfHwgaW5oZXJpdGVkTUlNRVR5cGUgfHwgInRleHQv
amF2YXNjcmlwdCI7Ci0gICAgdGhpcy5fdHlwZSA9IFdlYkluc3BlY3Rvci5SZXNvdXJjZS50eXBl
RnJvbU1JTUVUeXBlKHRoaXMuX21pbWVUeXBlKTsKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMg
YSBsYXllcmluZyB2aW9sYXRpb24uIEl0IHNob3VsZCB1c2UgYSBoZWxwZXIgZnVuY3Rpb24gb24g
dGhlCisgICAgICAgIC8vIFJlc291cmNlIGJhc2UtY2xhc3MgdG8gc2V0IF9taW1lVHlwZSBhbmQg
X3R5cGUuCisgICAgICAgIHRoaXMuX21pbWVUeXBlID0gZmlsZUV4dGVuc2lvbk1JTUVUeXBlIHx8
IGluaGVyaXRlZE1JTUVUeXBlIHx8ICJ0ZXh0L2phdmFzY3JpcHQiOworICAgICAgICB0aGlzLl90
eXBlID0gV2ViSW5zcGVjdG9yLlJlc291cmNlLnR5cGVGcm9tTUlNRVR5cGUodGhpcy5fbWltZVR5
cGUpOwogCi0gICAgLy8gTWFyayB0aGUgcmVzb3VyY2UgYXMgbG9hZGVkIHNvIGl0IGRvZXMgbm90
IHNob3cgYSBzcGlubmVyIGluIHRoZSBzaWRlYmFyLgotICAgIC8vIFdlIHdpbGwgcmVhbGx5IGxv
YWQgdGhlIHJlc291cmNlIHRoZSBmaXJzdCB0aW1lIGNvbnRlbnQgaXMgcmVxdWVzdGVkLgotICAg
IHRoaXMubWFya0FzRmluaXNoZWQoKTsKLX07Ci0KLVdlYkluc3BlY3Rvci5Tb3VyY2VNYXBSZXNv
dXJjZS5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5Tb3VyY2VN
YXBSZXNvdXJjZSwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5wcm90b3R5
cGUsCisgICAgICAgIC8vIE1hcmsgdGhlIHJlc291cmNlIGFzIGxvYWRlZCBzbyBpdCBkb2VzIG5v
dCBzaG93IGEgc3Bpbm5lciBpbiB0aGUgc2lkZWJhci4KKyAgICAgICAgLy8gV2Ugd2lsbCByZWFs
bHkgbG9hZCB0aGUgcmVzb3VyY2UgdGhlIGZpcnN0IHRpbWUgY29udGVudCBpcyByZXF1ZXN0ZWQu
CisgICAgICAgIHRoaXMubWFya0FzRmluaXNoZWQoKTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMK
IAogICAgIGdldCBzb3VyY2VNYXAoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3NvdXJj
ZU1hcDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzb3VyY2VNYXBEaXNwbGF5U3VicGF0aCgp
CiAgICAgewpAQCAtNzMsOSArNzEsOSBAQCBXZWJJbnNwZWN0b3IuU291cmNlTWFwUmVzb3VyY2Uu
cHJvdG90eXBlID0gewogCiAgICAgICAgIC8vIFNhbWUgaG9zdC4gSnVzdCBhIHN1YnBhdGggb2Yg
dGhlIGJhc2UuCiAgICAgICAgIHJldHVybiByZXNvdXJjZVVSTENvbXBvbmVudHMucGF0aC5zdWJz
dHJpbmcoc291cmNlTWFwcGluZ0Jhc2VQYXRoVVJMQ29tcG9uZW50cy5wYXRoLmxlbmd0aCwgcmVz
b3VyY2VVUkxDb21wb25lbnRzLmxlbmd0aCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZXF1ZXN0
Q29udGVudEZyb21CYWNrZW5kOiBmdW5jdGlvbihjYWxsYmFjaykKKyAgICByZXF1ZXN0Q29udGVu
dEZyb21CYWNrZW5kKGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgLy8gUmV2ZXJ0IHRoZSBtYXJr
QXNGaW5pc2hlZCB0aGF0IHdhcyBkb25lIGluIHRoZSBjb25zdHJ1Y3Rvci4KICAgICAgICAgdGhp
cy5yZXZlcnRNYXJrQXNGaW5pc2hlZCgpOwpAQCAtMTExLDcgKzEwOSw3IEBAIFdlYkluc3BlY3Rv
ci5Tb3VyY2VNYXBSZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHsKICAgICAgICAgICAg
IHZhciB7ZXJyb3IsIGNvbnRlbnQsIG1pbWVUeXBlLCBzdGF0dXNDb2RlfSA9IHBhcmFtZXRlcnM7
CiAKLSAgICAgICAgICAgIGNvbnN0IGJhc2U2NGVuY29kZWQgPSBmYWxzZTsKKyAgICAgICAgICAg
IHZhciBiYXNlNjRlbmNvZGVkID0gZmFsc2U7CiAKICAgICAgICAgICAgIGlmIChzdGF0dXNDb2Rl
ID49IDQwMCB8fCBlcnJvcikKICAgICAgICAgICAgICAgICByZXR1cm4gc291cmNlTWFwUmVzb3Vy
Y2VOb3RBdmFpbGFibGUoZXJyb3IsIGNvbnRlbnQsIG1pbWVUeXBlLCBzdGF0dXNDb2RlKTsKQEAg
LTE0MCw5ICsxMzgsOSBAQCBXZWJJbnNwZWN0b3IuU291cmNlTWFwUmVzb3VyY2UucHJvdG90eXBl
ID0gewogICAgICAgICAgICAgZnJhbWVJZGVudGlmaWVyID0gV2ViSW5zcGVjdG9yLmZyYW1lUmVz
b3VyY2VNYW5hZ2VyLm1haW5GcmFtZS5pZDsKIAogICAgICAgICByZXR1cm4gTmV0d29ya0FnZW50
LmxvYWRSZXNvdXJjZS5wcm9taXNlKGZyYW1lSWRlbnRpZmllciwgdGhpcy51cmwpLnRoZW4oc291
cmNlTWFwUmVzb3VyY2VMb2FkZWQuYmluZCh0aGlzKSkuY2F0Y2goc291cmNlTWFwUmVzb3VyY2VM
b2FkRXJyb3IuYmluZCh0aGlzKSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjcmVhdGVTb3VyY2VD
b2RlTG9jYXRpb246IGZ1bmN0aW9uKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKKyAgICBjcmVh
dGVTb3VyY2VDb2RlTG9jYXRpb24obGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgIHsKICAg
ICAgICAgLy8gU291cmNlQ29kZUxvY2F0aW9ucyBhcmUgYWx3YXlzIGNvbnN0cnVjdGVkIHdpdGgg
cmF3IHJlc291cmNlcyBhbmQgcmF3IGxvY2F0aW9ucy4gTG9va3VwIHRoZSByYXcgbG9jYXRpb24u
CiAgICAgICAgIHZhciBlbnRyeSA9IHRoaXMuX3NvdXJjZU1hcC5maW5kRW50cnlSZXZlcnNlZCh0
aGlzLnVybCwgbGluZU51bWJlcik7CkBAIC0xNjEsOSArMTU5LDkgQEAgV2ViSW5zcGVjdG9yLlNv
dXJjZU1hcFJlc291cmNlLnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIGxvY2F0aW9uID0gb3Jp
Z2luYWxTb3VyY2VDb2RlLmNyZWF0ZVNvdXJjZUNvZGVMb2NhdGlvbihyYXdMaW5lTnVtYmVyLCBy
YXdDb2x1bW5OdW1iZXIpOwogICAgICAgICBsb2NhdGlvbi5fc2V0TWFwcGVkTG9jYXRpb24odGhp
cywgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKTsKICAgICAgICAgcmV0dXJuIGxvY2F0aW9uOwot
ICAgIH0sCisgICAgfQogCi0gICAgY3JlYXRlU291cmNlQ29kZVRleHRSYW5nZTogZnVuY3Rpb24o
dGV4dFJhbmdlKQorICAgIGNyZWF0ZVNvdXJjZUNvZGVUZXh0UmFuZ2UodGV4dFJhbmdlKQogICAg
IHsKICAgICAgICAgLy8gU291cmNlQ29kZVRleHRSYW5nZXMgYXJlIGFsd2F5cyBjb25zdHJ1Y3Rl
ZCB3aXRoIHJhdyByZXNvdXJjZXMgYW5kIHJhdyBsb2NhdGlvbnMuCiAgICAgICAgIC8vIEhvd2V2
ZXIsIHdlIGNhbiBwcm92aWRlIHRoZSBtb3N0IGFjY3VyYXRlIG1hcHBlZCBsb2NhdGlvbnMgaW4g
Y29uc3RydWN0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvTW9kZWxzL1RleHRNYXJrZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Nb2RlbHMvVGV4dE1hcmtlci5qcwppbmRleCA4OWIzZWNhLi5kNWYzODJkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvVGV4dE1h
cmtlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMv
VGV4dE1hcmtlci5qcwpAQCAtMjMsNDIgKzIzLDM2IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlRleHRNYXJrZXIgPSBmdW5jdGlvbihj
b2RlTWlycm9yVGV4dE1hcmtlciwgdHlwZSkKK1dlYkluc3BlY3Rvci5UZXh0TWFya2VyID0gY2xh
c3MgVGV4dE1hcmtlciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIHsKLSAgICBXZWJJbnNw
ZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CisgICAgY29uc3RydWN0b3IoY29kZU1pcnJvclRleHRN
YXJrZXIsIHR5cGUpCisgICAgeworICAgICAgICBzdXBlcigpOwogCi0gICAgdGhpcy5fY29kZU1p
cnJvclRleHRNYXJrZXIgPSBjb2RlTWlycm9yVGV4dE1hcmtlcjsKLSAgICBjb2RlTWlycm9yVGV4
dE1hcmtlci5fX3dlYkluc3BlY3RvclRleHRNYXJrZXIgPSB0aGlzOworICAgICAgICB0aGlzLl9j
b2RlTWlycm9yVGV4dE1hcmtlciA9IGNvZGVNaXJyb3JUZXh0TWFya2VyOworICAgICAgICBjb2Rl
TWlycm9yVGV4dE1hcmtlci5fX3dlYkluc3BlY3RvclRleHRNYXJrZXIgPSB0aGlzOwogCi0gICAg
dGhpcy5fdHlwZSA9IHR5cGUgfHwgV2ViSW5zcGVjdG9yLlRleHRNYXJrZXIuVHlwZS5QbGFpbjsK
LX07CisgICAgICAgIHRoaXMuX3R5cGUgPSB0eXBlIHx8IFdlYkluc3BlY3Rvci5UZXh0TWFya2Vy
LlR5cGUuUGxhaW47CisgICAgfQogCi1XZWJJbnNwZWN0b3IuVGV4dE1hcmtlci5UeXBlID0gewot
ICAgIENvbG9yOiAidGV4dC1tYXJrZXItdHlwZS1jb2xvciIsCi0gICAgR3JhZGllbnQ6ICJ0ZXh0
LW1hcmtlci10eXBlLWdyYWRpZW50IiwKLSAgICBQbGFpbjogInRleHQtbWFya2VyLXR5cGUtcGxh
aW4iCi19OworICAgIC8vIFN0YXRpYwogCi1XZWJJbnNwZWN0b3IuVGV4dE1hcmtlci50ZXh0TWFy
a2VyRm9yQ29kZU1pcnJvclRleHRNYXJrZXIgPSBmdW5jdGlvbihjb2RlTWlycm9yVGV4dE1hcmtl
cikKLXsKLSAgICByZXR1cm4gY29kZU1pcnJvclRleHRNYXJrZXIuX193ZWJJbnNwZWN0b3JUZXh0
TWFya2VyIHx8IG5ldyBXZWJJbnNwZWN0b3IuVGV4dE1hcmtlcihjb2RlTWlycm9yVGV4dE1hcmtl
cik7Ci19OwotCi1XZWJJbnNwZWN0b3IuVGV4dE1hcmtlci5wcm90b3R5cGUgPSB7Ci0gICAgY29u
c3RydWN0b3I6IFdlYkluc3BlY3Rvci5UZXh0TWFya2VyLAotICAgIF9fcHJvdG9fXzogV2ViSW5z
cGVjdG9yLk9iamVjdC5wcm90b3R5cGUsCisgICAgc3RhdGljIHRleHRNYXJrZXJGb3JDb2RlTWly
cm9yVGV4dE1hcmtlcihjb2RlTWlycm9yVGV4dE1hcmtlcikKKyAgICB7CisgICAgICAgIHJldHVy
biBjb2RlTWlycm9yVGV4dE1hcmtlci5fX3dlYkluc3BlY3RvclRleHRNYXJrZXIgfHwgbmV3IFdl
Ykluc3BlY3Rvci5UZXh0TWFya2VyKGNvZGVNaXJyb3JUZXh0TWFya2VyKTsKKyAgICB9CiAKICAg
ICAvLyBQdWJsaWMKIAogICAgIGdldCBjb2RlTWlycm9yVGV4dE1hcmtlcigpCiAgICAgewogICAg
ICAgICByZXR1cm4gdGhpcy5fY29kZU1pcnJvclRleHRNYXJrZXI7Ci0gICAgfSwKKyAgICB9CiAK
ICAgICBnZXQgdHlwZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fdHlwZTsKLSAgICB9
LAorICAgIH0KIAogICAgIGdldCByYW5nZSgpCiAgICAgewpAQCAtNjYsNyArNjAsNyBAQCBXZWJJ
bnNwZWN0b3IuVGV4dE1hcmtlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmICghcmFuZ2UpCiAg
ICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3Iu
VGV4dFJhbmdlKHJhbmdlLmZyb20ubGluZSwgcmFuZ2UuZnJvbS5jaCwgcmFuZ2UudG8ubGluZSwg
cmFuZ2UudG8uY2gpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHJlY3RzKCkKICAgICB7CkBA
IC03NywxMCArNzEsMTYgQEAgV2ViSW5zcGVjdG9yLlRleHRNYXJrZXIucHJvdG90eXBlID0gewog
ICAgICAgICAgICAgc3RhcnQ6IHJhbmdlLmZyb20sCiAgICAgICAgICAgICBlbmQ6IHJhbmdlLnRv
CiAgICAgICAgIH0pOwotICAgIH0sCisgICAgfQogCi0gICAgY2xlYXI6IGZ1bmN0aW9uKCkKKyAg
ICBjbGVhcigpCiAgICAgewogICAgICAgICB0aGlzLl9jb2RlTWlycm9yVGV4dE1hcmtlci5jbGVh
cigpOwogICAgIH0KIH07CisKK1dlYkluc3BlY3Rvci5UZXh0TWFya2VyLlR5cGUgPSB7CisgICAg
Q29sb3I6ICJ0ZXh0LW1hcmtlci10eXBlLWNvbG9yIiwKKyAgICBHcmFkaWVudDogInRleHQtbWFy
a2VyLXR5cGUtZ3JhZGllbnQiLAorICAgIFBsYWluOiAidGV4dC1tYXJrZXItdHlwZS1wbGFpbiIK
K307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2Rl
bHMvVGV4dFJhbmdlLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9k
ZWxzL1RleHRSYW5nZS5qcwppbmRleCAxZmIxZDNkLi5hZGVlMzNmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvVGV4dFJhbmdlLmpzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9UZXh0UmFuZ2UuanMK
QEAgLTIzLDgwICsyMyw3OSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKLVdlYkluc3BlY3Rvci5UZXh0UmFuZ2UgPSBmdW5jdGlvbihzdGFydExpbmVPclN0YXJ0
T2Zmc2V0LCBzdGFydENvbHVtbk9yRW5kT2Zmc2V0LCBlbmRMaW5lLCBlbmRDb2x1bW4pCitXZWJJ
bnNwZWN0b3IuVGV4dFJhbmdlID0gY2xhc3MgVGV4dFJhbmdlIGV4dGVuZHMgV2ViSW5zcGVjdG9y
Lk9iamVjdAogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICBjb25z
dHJ1Y3RvcihzdGFydExpbmVPclN0YXJ0T2Zmc2V0LCBzdGFydENvbHVtbk9yRW5kT2Zmc2V0LCBl
bmRMaW5lLCBlbmRDb2x1bW4pCisgICAgeworICAgICAgICBzdXBlcigpOwogCi0gICAgaWYgKGFy
Z3VtZW50cy5sZW5ndGggPT09IDQpIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoc3RhcnRMaW5l
T3JTdGFydE9mZnNldCA8PSBlbmRMaW5lKTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoc3RhcnRM
aW5lT3JTdGFydE9mZnNldCAhPT0gZW5kTGluZSB8fCBzdGFydENvbHVtbk9yRW5kT2Zmc2V0IDw9
IGVuZENvbHVtbik7CisgICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSA0KSB7CisgICAg
ICAgICAgICBjb25zb2xlLmFzc2VydChzdGFydExpbmVPclN0YXJ0T2Zmc2V0IDw9IGVuZExpbmUp
OworICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoc3RhcnRMaW5lT3JTdGFydE9mZnNldCAhPT0g
ZW5kTGluZSB8fCBzdGFydENvbHVtbk9yRW5kT2Zmc2V0IDw9IGVuZENvbHVtbik7CiAKLSAgICAg
ICAgdGhpcy5fc3RhcnRMaW5lID0gdHlwZW9mIHN0YXJ0TGluZU9yU3RhcnRPZmZzZXQgPT09ICJu
dW1iZXIiID8gc3RhcnRMaW5lT3JTdGFydE9mZnNldCA6IE5hTjsKLSAgICAgICAgdGhpcy5fc3Rh
cnRDb2x1bW4gPSB0eXBlb2Ygc3RhcnRDb2x1bW5PckVuZE9mZnNldCA9PT0gIm51bWJlciIgPyBz
dGFydENvbHVtbk9yRW5kT2Zmc2V0IDogTmFOOwotICAgICAgICB0aGlzLl9lbmRMaW5lID0gdHlw
ZW9mIGVuZExpbmUgPT09ICJudW1iZXIiID8gZW5kTGluZSA6IE5hTjsKLSAgICAgICAgdGhpcy5f
ZW5kQ29sdW1uID0gdHlwZW9mIGVuZENvbHVtbiA9PT0gIm51bWJlciIgPyBlbmRDb2x1bW4gOiBO
YU47CisgICAgICAgICAgICB0aGlzLl9zdGFydExpbmUgPSB0eXBlb2Ygc3RhcnRMaW5lT3JTdGFy
dE9mZnNldCA9PT0gIm51bWJlciIgPyBzdGFydExpbmVPclN0YXJ0T2Zmc2V0IDogTmFOOworICAg
ICAgICAgICAgdGhpcy5fc3RhcnRDb2x1bW4gPSB0eXBlb2Ygc3RhcnRDb2x1bW5PckVuZE9mZnNl
dCA9PT0gIm51bWJlciIgPyBzdGFydENvbHVtbk9yRW5kT2Zmc2V0IDogTmFOOworICAgICAgICAg
ICAgdGhpcy5fZW5kTGluZSA9IHR5cGVvZiBlbmRMaW5lID09PSAibnVtYmVyIiA/IGVuZExpbmUg
OiBOYU47CisgICAgICAgICAgICB0aGlzLl9lbmRDb2x1bW4gPSB0eXBlb2YgZW5kQ29sdW1uID09
PSAibnVtYmVyIiA/IGVuZENvbHVtbiA6IE5hTjsKIAotICAgICAgICB0aGlzLl9zdGFydE9mZnNl
dCA9IE5hTjsKLSAgICAgICAgdGhpcy5fZW5kT2Zmc2V0ID0gTmFOOwotICAgIH0gZWxzZSBpZiAo
YXJndW1lbnRzLmxlbmd0aCA9PT0gMikgewotICAgICAgICBjb25zb2xlLmFzc2VydChzdGFydExp
bmVPclN0YXJ0T2Zmc2V0IDw9IHN0YXJ0Q29sdW1uT3JFbmRPZmZzZXQpOworICAgICAgICAgICAg
dGhpcy5fc3RhcnRPZmZzZXQgPSBOYU47CisgICAgICAgICAgICB0aGlzLl9lbmRPZmZzZXQgPSBO
YU47CisgICAgICAgIH0gZWxzZSBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMikgeworICAgICAg
ICAgICAgY29uc29sZS5hc3NlcnQoc3RhcnRMaW5lT3JTdGFydE9mZnNldCA8PSBzdGFydENvbHVt
bk9yRW5kT2Zmc2V0KTsKIAotICAgICAgICB0aGlzLl9zdGFydE9mZnNldCA9IHR5cGVvZiBzdGFy
dExpbmVPclN0YXJ0T2Zmc2V0ID09PSAibnVtYmVyIiA/IHN0YXJ0TGluZU9yU3RhcnRPZmZzZXQg
OiBOYU47Ci0gICAgICAgIHRoaXMuX2VuZE9mZnNldCA9IHR5cGVvZiBzdGFydENvbHVtbk9yRW5k
T2Zmc2V0ID09PSAibnVtYmVyIiA/IHN0YXJ0Q29sdW1uT3JFbmRPZmZzZXQgOiBOYU47CisgICAg
ICAgICAgICB0aGlzLl9zdGFydE9mZnNldCA9IHR5cGVvZiBzdGFydExpbmVPclN0YXJ0T2Zmc2V0
ID09PSAibnVtYmVyIiA/IHN0YXJ0TGluZU9yU3RhcnRPZmZzZXQgOiBOYU47CisgICAgICAgICAg
ICB0aGlzLl9lbmRPZmZzZXQgPSB0eXBlb2Ygc3RhcnRDb2x1bW5PckVuZE9mZnNldCA9PT0gIm51
bWJlciIgPyBzdGFydENvbHVtbk9yRW5kT2Zmc2V0IDogTmFOOwogCi0gICAgICAgIHRoaXMuX3N0
YXJ0TGluZSA9IE5hTjsKLSAgICAgICAgdGhpcy5fc3RhcnRDb2x1bW4gPSBOYU47Ci0gICAgICAg
IHRoaXMuX2VuZExpbmUgPSBOYU47Ci0gICAgICAgIHRoaXMuX2VuZENvbHVtbiA9IE5hTjsKKyAg
ICAgICAgICAgIHRoaXMuX3N0YXJ0TGluZSA9IE5hTjsKKyAgICAgICAgICAgIHRoaXMuX3N0YXJ0
Q29sdW1uID0gTmFOOworICAgICAgICAgICAgdGhpcy5fZW5kTGluZSA9IE5hTjsKKyAgICAgICAg
ICAgIHRoaXMuX2VuZENvbHVtbiA9IE5hTjsKKyAgICAgICAgfQogICAgIH0KLX07Ci0KLVdlYklu
c3BlY3Rvci5UZXh0UmFuZ2UucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNw
ZWN0b3IuVGV4dFJhbmdlLAogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgc3RhcnRMaW5lKCkK
ICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zdGFydExpbmU7Ci0gICAgfSwKKyAgICB9CiAK
ICAgICBnZXQgc3RhcnRDb2x1bW4oKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXJ0
Q29sdW1uOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGVuZExpbmUoKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHRoaXMuX2VuZExpbmU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgZW5kQ29s
dW1uKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9lbmRDb2x1bW47Ci0gICAgfSwKKyAg
ICB9CiAKICAgICBnZXQgc3RhcnRPZmZzZXQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMu
X3N0YXJ0T2Zmc2V0OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGVuZE9mZnNldCgpCiAgICAg
ewogICAgICAgICByZXR1cm4gdGhpcy5fZW5kT2Zmc2V0OwotICAgIH0sCisgICAgfQogCi0gICAg
c3RhcnRQb3NpdGlvbjogZnVuY3Rpb24oKQorICAgIHN0YXJ0UG9zaXRpb24oKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVBvc2l0aW9uKHRoaXMuX3N0
YXJ0TGluZSwgdGhpcy5fc3RhcnRDb2x1bW4pOwotICAgIH0sCisgICAgfQogCi0gICAgZW5kUG9z
aXRpb246IGZ1bmN0aW9uKCkKKyAgICBlbmRQb3NpdGlvbigpCiAgICAgewogICAgICAgICByZXR1
cm4gbmV3IFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlUG9zaXRpb24odGhpcy5fZW5kTGluZSwgdGhp
cy5fZW5kQ29sdW1uKTsKLSAgICB9LAorICAgIH0KIAotICAgIHJlc29sdmVMaW5lc0FuZENvbHVt
bnM6IGZ1bmN0aW9uKHRleHQpCisgICAgcmVzb2x2ZUxpbmVzQW5kQ29sdW1ucyh0ZXh0KQogICAg
IHsKICAgICAgICAgY29uc29sZS5hc3NlcnQodHlwZW9mIHRleHQgPT09ICJzdHJpbmciKTsKICAg
ICAgICAgaWYgKHR5cGVvZiB0ZXh0ICE9PSAic3RyaW5nIikKQEAgLTEzMCw5ICsxMjksOSBAQCBX
ZWJJbnNwZWN0b3IuVGV4dFJhbmdlLnByb3RvdHlwZSA9IHsKIAogICAgICAgICBpZiAodGhpcy5f
c3RhcnRMaW5lID09PSB0aGlzLl9lbmRMaW5lKQogICAgICAgICAgICAgdGhpcy5fZW5kQ29sdW1u
ICs9IHRoaXMuX3N0YXJ0Q29sdW1uOwotICAgIH0sCisgICAgfQogCi0gICAgcmVzb2x2ZU9mZnNl
dHM6IGZ1bmN0aW9uKHRleHQpCisgICAgcmVzb2x2ZU9mZnNldHModGV4dCkKICAgICB7CiAgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KHR5cGVvZiB0ZXh0ID09PSAic3RyaW5nIik7CiAgICAgICAgIGlm
ICh0eXBlb2YgdGV4dCAhPT0gInN0cmluZyIpCkBAIC0xNTcsNSArMTU2LDMgQEAgV2ViSW5zcGVj
dG9yLlRleHRSYW5nZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2VuZE9mZnNldCA9IGxh
c3ROZXdMaW5lT2Zmc2V0ICsgdGhpcy5fZW5kQ29sdW1uOwogICAgIH0KIH07Ci0KLVdlYkluc3Bl
Y3Rvci5UZXh0UmFuZ2UucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3Qu
cHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvTW9kZWxzL1RpbWVsaW5lLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvTW9kZWxzL1RpbWVsaW5lLmpzCmluZGV4IDIyNzQzODEuLjY0OWJhNzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9UaW1lbGluZS5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvVGltZWxpbmUu
anMKQEAgLTIzLDU0ICsyMyw0OCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKLVdlYkluc3BlY3Rvci5UaW1lbGluZSA9IGZ1bmN0aW9uKHR5cGUpCitXZWJJbnNw
ZWN0b3IuVGltZWxpbmUgPSBjbGFzcyBUaW1lbGluZSBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmpl
Y3QKIHsKLSAgICBpZiAodGhpcy5jb25zdHJ1Y3RvciA9PT0gV2ViSW5zcGVjdG9yLlRpbWVsaW5l
KSB7Ci0gICAgICAgIC8vIFdoZW4gaW5zdGFudGlhdGVkIGRpcmVjdGx5LCBwb3RlbnRpYWxseSBy
ZXR1cm4gYW4gaW5zdGFuY2Ugb2YgYSBjb25jcmV0ZSBzdWJjbGFzcy4KKyAgICBjb25zdHJ1Y3Rv
cih0eXBlKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKKworICAgICAgICB0aGlzLl90eXBlID0g
dHlwZTsKKworICAgICAgICB0aGlzLnJlc2V0KHRydWUpOworICAgIH0KKworICAgIC8vIFN0YXRp
YworCisgICAgc3RhdGljIGNyZWF0ZSh0eXBlKQorICAgIHsKICAgICAgICAgaWYgKHR5cGUgPT09
IFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5UeXBlLk5ldHdvcmspCiAgICAgICAgICAgICBy
ZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5OZXR3b3JrVGltZWxpbmUodHlwZSk7CisKKyAgICAgICAg
cmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuVGltZWxpbmUodHlwZSk7CiAgICAgfQogCi0gICAgV2Vi
SW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwotCi0gICAgdGhpcy5fdHlwZSA9IHR5cGU7Ci0K
LSAgICB0aGlzLnJlc2V0KHRydWUpOwotfTsKLQotV2ViSW5zcGVjdG9yLlRpbWVsaW5lLkV2ZW50
ID0gewotICAgIFJlc2V0OiAidGltZWxpbmUtcmVzZXQiLAotICAgIFJlY29yZEFkZGVkOiAidGlt
ZWxpbmUtcmVjb3JkLWFkZGVkIiwKLSAgICBUaW1lc1VwZGF0ZWQ6ICJ0aW1lbGluZS10aW1lcy11
cGRhdGVkIgotfTsKLQotV2ViSW5zcGVjdG9yLlRpbWVsaW5lLlRpbWVsaW5lVHlwZUNvb2tpZUtl
eSA9ICJ0aW1lbGluZS10eXBlIjsKLQotV2ViSW5zcGVjdG9yLlRpbWVsaW5lLnByb3RvdHlwZSA9
IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlRpbWVsaW5lLAotICAgIF9fcHJvdG9f
XzogV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGUsCi0KICAgICAvLyBQdWJsaWMKIAogICAg
IGdldCBzdGFydFRpbWUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXJ0VGltZTsK
LSAgICB9LAorICAgIH0KIAogICAgIGdldCBlbmRUaW1lKCkKICAgICB7CiAgICAgICAgIHJldHVy
biB0aGlzLl9lbmRUaW1lOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHJlY29yZHMoKQogICAg
IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3JlY29yZHM7Ci0gICAgfSwKKyAgICB9CiAKICAgICBn
ZXQgdHlwZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fdHlwZTsKLSAgICB9LAorICAg
IH0KIAogICAgIGdldCBkaXNwbGF5TmFtZSgpCiAgICAgewpAQCAtODQsNyArNzgsNyBAQCBXZWJJ
bnNwZWN0b3IuVGltZWxpbmUucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuIFdlYklu
c3BlY3Rvci5VSVN0cmluZygiRnJhbWVzIik7CiAKICAgICAgICAgY29uc29sZS5lcnJvcigiVGlt
ZWxpbmUgaGFzIHVua25vd24gdHlwZToiLCB0aGlzLl90eXBlLCB0aGlzKTsKLSAgICB9LAorICAg
IH0KIAogICAgIGdldCBpY29uQ2xhc3NOYW1lKCkKICAgICB7CkBAIC05OCw5ICs5Miw5IEBAIFdl
Ykluc3BlY3Rvci5UaW1lbGluZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm4gV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLlNjcmlwdEljb25TdHlsZUNsYXNzOwogCiAg
ICAgICAgIGNvbnNvbGUuZXJyb3IoIlRpbWVsaW5lIGhhcyB1bmtub3duIHR5cGU6IiwgdGhpcy5f
dHlwZSwgdGhpcyk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZXNldDogZnVuY3Rpb24oc3VwcHJl
c3NFdmVudHMpCisgICAgcmVzZXQoc3VwcHJlc3NFdmVudHMpCiAgICAgewogICAgICAgICB0aGlz
Ll9yZWNvcmRzID0gW107CiAgICAgICAgIHRoaXMuX3N0YXJ0VGltZSA9IE5hTjsKQEAgLTExMCw5
ICsxMDQsOSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmUucHJvdG90eXBlID0gewogICAgICAgICAg
ICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlRpbWVsaW5lLkV2
ZW50LlJlc2V0KTsKICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdl
Ykluc3BlY3Rvci5UaW1lbGluZS5FdmVudC5UaW1lc1VwZGF0ZWQpOwogICAgICAgICB9Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBhZGRSZWNvcmQ6IGZ1bmN0aW9uKHJlY29yZCkKKyAgICBhZGRSZWNv
cmQocmVjb3JkKQogICAgIHsKICAgICAgICAgaWYgKHJlY29yZC51cGRhdGVzRHluYW1pY2FsbHkp
CiAgICAgICAgICAgICByZWNvcmQuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxp
bmVSZWNvcmQuRXZlbnQuVXBkYXRlZCwgdGhpcy5fcmVjb3JkVXBkYXRlZCwgdGhpcyk7CkBAIC0x
MjIsMTYgKzExNiwxNiBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmUucHJvdG90eXBlID0gewogICAg
ICAgICB0aGlzLl91cGRhdGVUaW1lc0lmTmVlZGVkKHJlY29yZCk7CiAKICAgICAgICAgdGhpcy5k
aXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlRpbWVsaW5lLkV2ZW50LlJlY29y
ZEFkZGVkLCB7cmVjb3JkfSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzYXZlSWRlbnRpdHlUb0Nv
b2tpZTogZnVuY3Rpb24oY29va2llKQorICAgIHNhdmVJZGVudGl0eVRvQ29va2llKGNvb2tpZSkK
ICAgICB7CiAgICAgICAgIGNvb2tpZVtXZWJJbnNwZWN0b3IuVGltZWxpbmUuVGltZWxpbmVUeXBl
Q29va2llS2V5XSA9IHRoaXMuX3R5cGU7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRl
CiAKLSAgICBfdXBkYXRlVGltZXNJZk5lZWRlZDogZnVuY3Rpb24ocmVjb3JkKQorICAgIF91cGRh
dGVUaW1lc0lmTmVlZGVkKHJlY29yZCkKICAgICB7CiAgICAgICAgIHZhciBjaGFuZ2VkID0gZmFs
c2U7CiAKQEAgLTE0NywxMCArMTQxLDE4IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZS5wcm90b3R5
cGUgPSB7CiAKICAgICAgICAgaWYgKGNoYW5nZWQpCiAgICAgICAgICAgICB0aGlzLmRpc3BhdGNo
RXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuVGltZWxpbmUuRXZlbnQuVGltZXNVcGRhdGVk
KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9yZWNvcmRVcGRhdGVkOiBmdW5jdGlvbihldmVudCkK
KyAgICBfcmVjb3JkVXBkYXRlZChldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuX3VwZGF0ZVRp
bWVzSWZOZWVkZWQoZXZlbnQudGFyZ2V0KTsKICAgICB9CiB9OworCitXZWJJbnNwZWN0b3IuVGlt
ZWxpbmUuRXZlbnQgPSB7CisgICAgUmVzZXQ6ICJ0aW1lbGluZS1yZXNldCIsCisgICAgUmVjb3Jk
QWRkZWQ6ICJ0aW1lbGluZS1yZWNvcmQtYWRkZWQiLAorICAgIFRpbWVzVXBkYXRlZDogInRpbWVs
aW5lLXRpbWVzLXVwZGF0ZWQiCit9OworCitXZWJJbnNwZWN0b3IuVGltZWxpbmUuVGltZWxpbmVU
eXBlQ29va2llS2V5ID0gInRpbWVsaW5lLXR5cGUiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1RpbWVsaW5lTWFya2VyLmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1RpbWVsaW5lTWFya2VyLmpzCmlu
ZGV4IDA1ZTgzMzkuLjc1OTc3YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL01vZGVscy9UaW1lbGluZU1hcmtlci5qcworKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvVGltZWxpbmVNYXJrZXIuanMKQEAgLTIzLDM3
ICsyMywyNCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdl
Ykluc3BlY3Rvci5UaW1lbGluZU1hcmtlciA9IGZ1bmN0aW9uKHRpbWUsIHR5cGUpCitXZWJJbnNw
ZWN0b3IuVGltZWxpbmVNYXJrZXIgPSBjbGFzcyBUaW1lbGluZU1hcmtlciBleHRlbmRzIFdlYklu
c3BlY3Rvci5PYmplY3QKIHsKLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7Cisg
ICAgY29uc3RydWN0b3IodGltZSwgdHlwZSkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CiAKLSAg
ICBjb25zb2xlLmFzc2VydCh0eXBlKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodHlwZSk7CiAK
LSAgICB0aGlzLl90aW1lID0gdGltZSB8fCAwOwotICAgIHRoaXMuX3R5cGUgPSB0eXBlOwotfTsK
LQotV2ViSW5zcGVjdG9yLlRpbWVsaW5lTWFya2VyLkV2ZW50ID0gewotICAgIFRpbWVDaGFuZ2Vk
OiAidGltZWxpbmUtbWFya2VyLXRpbWUtY2hhbmdlZCIKLX07Ci0KLVdlYkluc3BlY3Rvci5UaW1l
bGluZU1hcmtlci5UeXBlID0gewotICAgIEN1cnJlbnRUaW1lOiAiY3VycmVudC10aW1lIiwKLSAg
ICBMb2FkRXZlbnQ6ICJsb2FkLWV2ZW50IiwKLSAgICBET01Db250ZW50RXZlbnQ6ICJkb20tY29u
dGVudC1ldmVudCIsCi0gICAgVGltZVN0YW1wOiAidGltZXN0YW1wIgotfTsKLQotV2ViSW5zcGVj
dG9yLlRpbWVsaW5lTWFya2VyLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5z
cGVjdG9yLlRpbWVsaW5lTWFya2VyLAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLk9iamVj
dC5wcm90b3R5cGUsCisgICAgICAgIHRoaXMuX3RpbWUgPSB0aW1lIHx8IDA7CisgICAgICAgIHRo
aXMuX3R5cGUgPSB0eXBlOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IHRpbWUo
KQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3RpbWU7Ci0gICAgfSwKKyAgICB9CiAKICAg
ICBzZXQgdGltZSh4KQogICAgIHsKQEAgLTYzLDEwICs1MCwyMSBAQCBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVNYXJrZXIucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl90aW1lID0geCB8fCAwOwog
CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5UaW1l
bGluZU1hcmtlci5FdmVudC5UaW1lQ2hhbmdlZCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQg
dHlwZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fdHlwZTsKICAgICB9CiB9OworCitX
ZWJJbnNwZWN0b3IuVGltZWxpbmVNYXJrZXIuRXZlbnQgPSB7CisgICAgVGltZUNoYW5nZWQ6ICJ0
aW1lbGluZS1tYXJrZXItdGltZS1jaGFuZ2VkIgorfTsKKworV2ViSW5zcGVjdG9yLlRpbWVsaW5l
TWFya2VyLlR5cGUgPSB7CisgICAgQ3VycmVudFRpbWU6ICJjdXJyZW50LXRpbWUiLAorICAgIExv
YWRFdmVudDogImxvYWQtZXZlbnQiLAorICAgIERPTUNvbnRlbnRFdmVudDogImRvbS1jb250ZW50
LWV2ZW50IiwKKyAgICBUaW1lU3RhbXA6ICJ0aW1lc3RhbXAiCit9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1RpbWVsaW5lUmVjb3JkLmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1RpbWVsaW5lUmVj
b3JkLmpzCmluZGV4IDFjMDAzZDEuLjU2NjcxZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9UaW1lbGluZVJlY29yZC5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvVGltZWxpbmVSZWNvcmQuanMK
QEAgLTIzLDEwMSArMjMsODMgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
ICAqLwogCi1XZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQgPSBmdW5jdGlvbih0eXBlLCBzdGFy
dFRpbWUsIGVuZFRpbWUsIGNhbGxGcmFtZXMsIHNvdXJjZUNvZGVMb2NhdGlvbikKK1dlYkluc3Bl
Y3Rvci5UaW1lbGluZVJlY29yZCA9IGNsYXNzIFRpbWVsaW5lUmVjb3JkIGV4dGVuZHMgV2ViSW5z
cGVjdG9yLk9iamVjdAogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAg
ICBjb25zdHJ1Y3Rvcih0eXBlLCBzdGFydFRpbWUsIGVuZFRpbWUsIGNhbGxGcmFtZXMsIHNvdXJj
ZUNvZGVMb2NhdGlvbikKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CiAKLSAgICBjb25zb2xlLmFz
c2VydCh0eXBlKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodHlwZSk7CiAKLSAgICBpZiAodHlw
ZSBpbiBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQuVHlwZSkKLSAgICAgICAgdHlwZSA9IFdl
Ykluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5UeXBlW3R5cGVdOworICAgICAgICBpZiAodHlwZSBp
biBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQuVHlwZSkKKyAgICAgICAgICAgIHR5cGUgPSBX
ZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQuVHlwZVt0eXBlXTsKIAotICAgIHRoaXMuX3R5cGUg
PSB0eXBlOwotICAgIHRoaXMuX3N0YXJ0VGltZSA9IHN0YXJ0VGltZSB8fCBOYU47Ci0gICAgdGhp
cy5fZW5kVGltZSA9IGVuZFRpbWUgfHwgTmFOOwotICAgIHRoaXMuX2NhbGxGcmFtZXMgPSBjYWxs
RnJhbWVzIHx8IG51bGw7Ci0gICAgdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uID0gc291cmNlQ29k
ZUxvY2F0aW9uIHx8IG51bGw7Ci19OwotCi1XZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQuRXZl
bnQgPSB7Ci0gICAgVXBkYXRlZDogInRpbWVsaW5lLXJlY29yZC11cGRhdGVkIgotfTsKLQotV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkLlR5cGUgPSB7Ci0gICAgTmV0d29yazogInRpbWVsaW5l
LXJlY29yZC10eXBlLW5ldHdvcmsiLAotICAgIExheW91dDogInRpbWVsaW5lLXJlY29yZC10eXBl
LWxheW91dCIsCi0gICAgU2NyaXB0OiAidGltZWxpbmUtcmVjb3JkLXR5cGUtc2NyaXB0IiwKLSAg
ICBSdW5Mb29wOiAidGltZWxpbmUtcmVjb3JkLXR5cGUtcnVubG9vcCIKLX07Ci0KLVdlYkluc3Bl
Y3Rvci5UaW1lbGluZVJlY29yZC5UeXBlSWRlbnRpZmllciA9ICJ0aW1lbGluZS1yZWNvcmQiOwot
V2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkLlNvdXJjZUNvZGVVUkxDb29raWVLZXkgPSAidGlt
ZWxpbmUtcmVjb3JkLXNvdXJjZS1jb2RlLXVybCI7Ci1XZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNv
cmQuU291cmNlQ29kZUxvY2F0aW9uTGluZUNvb2tpZUtleSA9ICJ0aW1lbGluZS1yZWNvcmQtc291
cmNlLWNvZGUtbG9jYXRpb24tbGluZSI7Ci1XZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQuU291
cmNlQ29kZUxvY2F0aW9uQ29sdW1uQ29va2llS2V5ID0gInRpbWVsaW5lLXJlY29yZC1zb3VyY2Ut
Y29kZS1sb2NhdGlvbi1jb2x1bW4iOwotV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkLlR5cGVD
b29raWVLZXkgPSAidGltZWxpbmUtcmVjb3JkLXR5cGUiOwotCi1XZWJJbnNwZWN0b3IuVGltZWxp
bmVSZWNvcmQucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVSZWNvcmQsCisgICAgICAgIHRoaXMuX3R5cGUgPSB0eXBlOworICAgICAgICB0aGlzLl9z
dGFydFRpbWUgPSBzdGFydFRpbWUgfHwgTmFOOworICAgICAgICB0aGlzLl9lbmRUaW1lID0gZW5k
VGltZSB8fCBOYU47CisgICAgICAgIHRoaXMuX2NhbGxGcmFtZXMgPSBjYWxsRnJhbWVzIHx8IG51
bGw7CisgICAgICAgIHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbiA9IHNvdXJjZUNvZGVMb2NhdGlv
biB8fCBudWxsOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IHR5cGUoKQogICAg
IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3R5cGU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQg
c3RhcnRUaW1lKCkKICAgICB7CiAgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMg
aWYgbmVlZGVkLgogICAgICAgICByZXR1cm4gdGhpcy5fc3RhcnRUaW1lOwotICAgIH0sCisgICAg
fQogCiAgICAgZ2V0IGFjdGl2ZVN0YXJ0VGltZSgpCiAgICAgewogICAgICAgICAvLyBJbXBsZW1l
bnRlZCBieSBzdWJjbGFzc2VzIGlmIG5lZWRlZC4KICAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXJ0
VGltZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBlbmRUaW1lKCkKICAgICB7CiAgICAgICAg
IC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMgaWYgbmVlZGVkLgogICAgICAgICByZXR1cm4g
dGhpcy5fZW5kVGltZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBkdXJhdGlvbigpCiAgICAg
ewogICAgICAgICAvLyBVc2UgdGhlIGdldHRlcnMgaW5zdGVhZCBvZiB0aGUgcHJvcGVydGllcyBz
byB0aGlzIHdvcmtzIGZvciBzdWJjbGFzc2VzIHRoYXQgb3ZlcnJpZGUgdGhlIGdldHRlcnMuCiAg
ICAgICAgIHJldHVybiB0aGlzLmVuZFRpbWUgLSB0aGlzLnN0YXJ0VGltZTsKLSAgICB9LAorICAg
IH0KIAogICAgIGdldCBpbmFjdGl2ZUR1cmF0aW9uKCkKICAgICB7CiAgICAgICAgIC8vIFVzZSB0
aGUgZ2V0dGVycyBpbnN0ZWFkIG9mIHRoZSBwcm9wZXJ0aWVzIHNvIHRoaXMgd29ya3MgZm9yIHN1
YmNsYXNzZXMgdGhhdCBvdmVycmlkZSB0aGUgZ2V0dGVycy4KICAgICAgICAgcmV0dXJuIHRoaXMu
YWN0aXZlU3RhcnRUaW1lIC0gdGhpcy5zdGFydFRpbWU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBn
ZXQgYWN0aXZlRHVyYXRpb24oKQogICAgIHsKICAgICAgICAgLy8gVXNlIHRoZSBnZXR0ZXJzIGlu
c3RlYWQgb2YgdGhlIHByb3BlcnRpZXMgc28gdGhpcyB3b3JrcyBmb3Igc3ViY2xhc3NlcyB0aGF0
IG92ZXJyaWRlIHRoZSBnZXR0ZXJzLgogICAgICAgICByZXR1cm4gdGhpcy5lbmRUaW1lIC0gdGhp
cy5hY3RpdmVTdGFydFRpbWU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgdXBkYXRlc0R5bmFt
aWNhbGx5KCkKICAgICB7CiAgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMgaWYg
bmVlZGVkLgogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQg
dXNlc0FjdGl2ZVN0YXJ0VGltZSgpCiAgICAgewogICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBz
dWJjbGFzc2VzIGlmIG5lZWRlZC4KICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0sCisgICAg
fQogCiAgICAgZ2V0IGNhbGxGcmFtZXMoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2Nh
bGxGcmFtZXM7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgaW5pdGlhdG9yQ2FsbEZyYW1lKCkK
ICAgICB7CkBAIC0xMzIsMTQgKzExNCwxNCBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQu
cHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgfSwK
KyAgICB9CiAKICAgICBnZXQgc291cmNlQ29kZUxvY2F0aW9uKCkKICAgICB7CiAgICAgICAgIHJl
dHVybiB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb247Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzYXZl
SWRlbnRpdHlUb0Nvb2tpZTogZnVuY3Rpb24oY29va2llKQorICAgIHNhdmVJZGVudGl0eVRvQ29v
a2llKGNvb2tpZSkKICAgICB7CiAgICAgICAgIGNvb2tpZVtXZWJJbnNwZWN0b3IuVGltZWxpbmVS
ZWNvcmQuU291cmNlQ29kZVVSTENvb2tpZUtleV0gPSB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb24g
PyB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb24uc291cmNlQ29kZS51cmwgPyB0aGlzLl9zb3VyY2VD
b2RlTG9jYXRpb24uc291cmNlQ29kZS51cmwuaGFzaCA6IG51bGwgOiBudWxsOwogICAgICAgICBj
b29raWVbV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkLlNvdXJjZUNvZGVMb2NhdGlvbkxpbmVD
b29raWVLZXldID0gdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uID8gdGhpcy5fc291cmNlQ29kZUxv
Y2F0aW9uLmxpbmVOdW1iZXIgOiBudWxsOwpAQCAtMTQ4LDQgKzEzMCwxOSBAQCBXZWJJbnNwZWN0
b3IuVGltZWxpbmVSZWNvcmQucHJvdG90eXBlID0gewogICAgIH0KIH07CiAKLVdlYkluc3BlY3Rv
ci5UaW1lbGluZVJlY29yZC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVj
dC5wcm90b3R5cGU7CitXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQuRXZlbnQgPSB7CisgICAg
VXBkYXRlZDogInRpbWVsaW5lLXJlY29yZC11cGRhdGVkIgorfTsKKworV2ViSW5zcGVjdG9yLlRp
bWVsaW5lUmVjb3JkLlR5cGUgPSB7CisgICAgTmV0d29yazogInRpbWVsaW5lLXJlY29yZC10eXBl
LW5ldHdvcmsiLAorICAgIExheW91dDogInRpbWVsaW5lLXJlY29yZC10eXBlLWxheW91dCIsCisg
ICAgU2NyaXB0OiAidGltZWxpbmUtcmVjb3JkLXR5cGUtc2NyaXB0IiwKKyAgICBSdW5Mb29wOiAi
dGltZWxpbmUtcmVjb3JkLXR5cGUtcnVubG9vcCIKK307CisKK1dlYkluc3BlY3Rvci5UaW1lbGlu
ZVJlY29yZC5UeXBlSWRlbnRpZmllciA9ICJ0aW1lbGluZS1yZWNvcmQiOworV2ViSW5zcGVjdG9y
LlRpbWVsaW5lUmVjb3JkLlNvdXJjZUNvZGVVUkxDb29raWVLZXkgPSAidGltZWxpbmUtcmVjb3Jk
LXNvdXJjZS1jb2RlLXVybCI7CitXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQuU291cmNlQ29k
ZUxvY2F0aW9uTGluZUNvb2tpZUtleSA9ICJ0aW1lbGluZS1yZWNvcmQtc291cmNlLWNvZGUtbG9j
YXRpb24tbGluZSI7CitXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQuU291cmNlQ29kZUxvY2F0
aW9uQ29sdW1uQ29va2llS2V5ID0gInRpbWVsaW5lLXJlY29yZC1zb3VyY2UtY29kZS1sb2NhdGlv
bi1jb2x1bW4iOworV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkLlR5cGVDb29raWVLZXkgPSAi
dGltZWxpbmUtcmVjb3JkLXR5cGUiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvTW9kZWxzL1RpbWVsaW5lUmVjb3JkaW5nLmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1RpbWVsaW5lUmVjb3JkaW5nLmpzCmluZGV4
IDY4YzQ2YTguLjI5N2MyNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL01vZGVscy9UaW1lbGluZVJlY29yZGluZy5qcworKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvVGltZWxpbmVSZWNvcmRpbmcuanMKQEAgLTIz
LDc1ICsyMyw2MiBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
LVdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZGluZyA9IGZ1bmN0aW9uKGlkZW50aWZpZXIsIGRp
c3BsYXlOYW1lKQorV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nID0gY2xhc3MgVGltZWxp
bmVSZWNvcmRpbmcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0gICAgV2ViSW5zcGVj
dG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIGNvbnN0cnVjdG9yKGlkZW50aWZpZXIsIGRpc3Bs
YXlOYW1lKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKIAotICAgIHRoaXMuX2lkZW50aWZpZXIg
PSBpZGVudGlmaWVyOwotICAgIHRoaXMuX3RpbWVsaW5lcyA9IG5ldyBNYXA7Ci0gICAgdGhpcy5f
ZGlzcGxheU5hbWUgPSBkaXNwbGF5TmFtZTsKLSAgICB0aGlzLl9pc1dyaXRhYmxlID0gdHJ1ZTsK
KyAgICAgICAgdGhpcy5faWRlbnRpZmllciA9IGlkZW50aWZpZXI7CisgICAgICAgIHRoaXMuX3Rp
bWVsaW5lcyA9IG5ldyBNYXA7CisgICAgICAgIHRoaXMuX2Rpc3BsYXlOYW1lID0gZGlzcGxheU5h
bWU7CisgICAgICAgIHRoaXMuX2lzV3JpdGFibGUgPSB0cnVlOwogCi0gICAgLy8gRm9yIGxlZ2Fj
eSBiYWNrZW5kcywgd2UgY29tcHV0ZSB0aGUgZWxhcHNlZCB0aW1lIG9mIHJlY29yZHMgcmVsYXRp
dmUgdG8gdGhpcyB0aW1lc3RhbXAuCi0gICAgdGhpcy5fbGVnYWN5Rmlyc3RSZWNvcmRlZFRpbWVz
dGFtcCA9IE5hTjsKKyAgICAgICAgLy8gRm9yIGxlZ2FjeSBiYWNrZW5kcywgd2UgY29tcHV0ZSB0
aGUgZWxhcHNlZCB0aW1lIG9mIHJlY29yZHMgcmVsYXRpdmUgdG8gdGhpcyB0aW1lc3RhbXAuCisg
ICAgICAgIHRoaXMuX2xlZ2FjeUZpcnN0UmVjb3JkZWRUaW1lc3RhbXAgPSBOYU47CiAKLSAgICB0
aGlzLnJlc2V0KHRydWUpOwotfTsKLQotV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nLkV2
ZW50ID0gewotICAgIFJlc2V0OiAidGltZWxpbmUtcmVjb3JkaW5nLXJlc2V0IiwKLSAgICBVbmxv
YWRlZDogInRpbWVsaW5lLXJlY29yZGluZy11bmxvYWRlZCIsCi0gICAgU291cmNlQ29kZVRpbWVs
aW5lQWRkZWQ6ICJ0aW1lbGluZS1yZWNvcmRpbmctc291cmNlLWNvZGUtdGltZWxpbmUtYWRkZWQi
LAotICAgIFRpbWVsaW5lQWRkZWQ6ICJ0aW1lbGluZS1yZWNvcmRpbmctdGltZWxpbmUtYWRkZWQi
LAotICAgIFRpbWVsaW5lUmVtb3ZlZDogInRpbWVsaW5lLXJlY29yZGluZy10aW1lbGluZS1yZW1v
dmVkIiwKLSAgICBUaW1lc1VwZGF0ZWQ6ICJ0aW1lbGluZS1yZWNvcmRpbmctdGltZXMtdXBkYXRl
ZCIKLX07Ci0KLVdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZGluZy5UaW1lc3RhbXBUaHJlc2hv
bGRGb3JMZWdhY3lSZWNvcmRDb252ZXJzaW9uID0gMjg4MDAwMDA7IC8vIERhdGUucGFyc2UoIkph
biAxLCAxOTcwIikKLQotV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nLnByb3RvdHlwZSA9
IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nLAotICAg
IF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGUsCisgICAgICAgIHRoaXMu
cmVzZXQodHJ1ZSk7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgZGlzcGxheU5h
bWUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc3BsYXlOYW1lOwotICAgIH0sCisg
ICAgfQogCiAgICAgZ2V0IGlkZW50aWZpZXIoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMu
X2lkZW50aWZpZXI7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgdGltZWxpbmVzKCkKICAgICB7
CiAgICAgICAgIHJldHVybiB0aGlzLl90aW1lbGluZXM7Ci0gICAgfSwKKyAgICB9CiAKICAgICBn
ZXQgc3RhcnRUaW1lKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zdGFydFRpbWU7Ci0g
ICAgfSwKKyAgICB9CiAKICAgICBnZXQgZW5kVGltZSgpCiAgICAgewogICAgICAgICByZXR1cm4g
dGhpcy5fZW5kVGltZTsKLSAgICB9LAorICAgIH0KIAotICAgIHNhdmVJZGVudGl0eVRvQ29va2ll
OiBmdW5jdGlvbigpCisgICAgc2F2ZUlkZW50aXR5VG9Db29raWUoKQogICAgIHsKICAgICAgICAg
Ly8gRG8gbm90aGluZy4gVGltZWxpbmUgcmVjb3JkaW5ncyBhcmUgbm90IHBlcnNpc3RlZCB3aGVu
IHRoZSBpbnNwZWN0b3IgaXMKICAgICAgICAgLy8gcmUtb3BlbmVkLCBzbyBkbyBub3QgYXR0ZW1w
dCB0byByZXN0b3JlIGJ5IGlkZW50aWZpZXIgb3IgZGlzcGxheSBuYW1lLgotICAgIH0sCisgICAg
fQogCi0gICAgaXNXcml0YWJsZTogZnVuY3Rpb24oKQorICAgIGlzV3JpdGFibGUoKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIHRoaXMuX2lzV3JpdGFibGU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBp
c0VtcHR5OiBmdW5jdGlvbigpCisgICAgaXNFbXB0eSgpCiAgICAgewogICAgICAgICBmb3IgKHZh
ciB0aW1lbGluZSBvZiB0aGlzLl90aW1lbGluZXMudmFsdWVzKCkpIHsKICAgICAgICAgICAgIGlm
ICh0aW1lbGluZS5yZWNvcmRzLmxlbmd0aCkKQEAgLTk5LDE4ICs4NiwxOCBAQCBXZWJJbnNwZWN0
b3IuVGltZWxpbmVSZWNvcmRpbmcucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB1bmxvYWRlZDogZnVuY3Rpb24oKQor
ICAgIHVubG9hZGVkKCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLmlzRW1w
dHkoKSwgIlNob3VsZG4ndCB1bmxvYWQgYW4gZW1wdHkgcmVjb3JkaW5nOyBpdCBzaG91bGQgYmUg
cmV1c2VkIGluc3RlYWQuIik7CiAKICAgICAgICAgdGhpcy5faXNXcml0YWJsZSA9IGZhbHNlOwog
CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5UaW1l
bGluZVJlY29yZGluZy5FdmVudC5VbmxvYWRlZCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZXNl
dDogZnVuY3Rpb24oc3VwcHJlc3NFdmVudHMpCisgICAgcmVzZXQoc3VwcHJlc3NFdmVudHMpCiAg
ICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9pc1dyaXRhYmxlLCAiQ2FuJ3QgcmVz
ZXQgYSByZWFkLW9ubHkgcmVjb3JkaW5nLiIpOwogCkBAIC0xMjYsMTcgKzExMywxNyBAQCBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVSZWNvcmRpbmcucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhp
cy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5n
LkV2ZW50LlJlc2V0KTsKICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJz
KFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZGluZy5FdmVudC5UaW1lc1VwZGF0ZWQpOwogICAg
ICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzb3VyY2VDb2RlVGltZWxpbmVzRm9yU291cmNl
Q29kZTogZnVuY3Rpb24oc291cmNlQ29kZSkKKyAgICBzb3VyY2VDb2RlVGltZWxpbmVzRm9yU291
cmNlQ29kZShzb3VyY2VDb2RlKQogICAgIHsKICAgICAgICAgdmFyIHRpbWVsaW5lcyA9IHRoaXMu
X3NvdXJjZUNvZGVUaW1lbGluZXNNYXAuZ2V0KHNvdXJjZUNvZGUpOwogICAgICAgICBpZiAoIXRp
bWVsaW5lcykKICAgICAgICAgICAgIHJldHVybiBbXTsKICAgICAgICAgcmV0dXJuIFsuLi50aW1l
bGluZXMudmFsdWVzKCldOwotICAgIH0sCisgICAgfQogCi0gICAgYWRkVGltZWxpbmU6IGZ1bmN0
aW9uKHRpbWVsaW5lKQorICAgIGFkZFRpbWVsaW5lKHRpbWVsaW5lKQogICAgIHsKICAgICAgICAg
Y29uc29sZS5hc3NlcnQodGltZWxpbmUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuVGltZWxpbmUs
IHRpbWVsaW5lKTsKICAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuX3RpbWVsaW5lcy5oYXMo
dGltZWxpbmUpLCB0aGlzLl90aW1lbGluZXMsIHRpbWVsaW5lKTsKQEAgLTE0NSw5ICsxMzIsOSBA
QCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRpbmcucHJvdG90eXBlID0gewogCiAgICAgICAg
IHRpbWVsaW5lLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lLkV2ZW50LlRp
bWVzVXBkYXRlZCwgdGhpcy5fdGltZWxpbmVUaW1lc1VwZGF0ZWQsIHRoaXMpOwogICAgICAgICB0
aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRp
bmcuRXZlbnQuVGltZWxpbmVBZGRlZCwge3RpbWVsaW5lfSk7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICByZW1vdmVUaW1lbGluZTogZnVuY3Rpb24odGltZWxpbmUpCisgICAgcmVtb3ZlVGltZWxpbmUo
dGltZWxpbmUpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCh0aW1lbGluZSBpbnN0YW5j
ZW9mIFdlYkluc3BlY3Rvci5UaW1lbGluZSwgdGltZWxpbmUpOwogICAgICAgICBjb25zb2xlLmFz
c2VydCh0aGlzLl90aW1lbGluZXMuaGFzKHRpbWVsaW5lLnR5cGUpLCB0aGlzLl90aW1lbGluZXMs
IHRpbWVsaW5lKTsKQEAgLTE1NywxNCArMTQ0LDE0IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJl
Y29yZGluZy5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdGltZWxpbmUucmVtb3ZlRXZlbnRMaXN0
ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxpbmUuRXZlbnQuVGltZXNVcGRhdGVkLCB0aGlzLl90aW1l
bGluZVRpbWVzVXBkYXRlZCwgdGhpcyk7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlz
dGVuZXJzKFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZGluZy5FdmVudC5UaW1lbGluZVJlbW92
ZWQsIHt0aW1lbGluZX0pOwotICAgIH0sCisgICAgfQogCi0gICAgYWRkRXZlbnRNYXJrZXI6IGZ1
bmN0aW9uKGV2ZW50TWFya2VyKQorICAgIGFkZEV2ZW50TWFya2VyKGV2ZW50TWFya2VyKQogICAg
IHsKICAgICAgICAgdGhpcy5fZXZlbnRNYXJrZXJzLnB1c2goZXZlbnRNYXJrZXIpOwotICAgIH0s
CisgICAgfQogCi0gICAgYWRkUmVjb3JkOiBmdW5jdGlvbihyZWNvcmQpCisgICAgYWRkUmVjb3Jk
KHJlY29yZCkKICAgICB7CiAgICAgICAgIHZhciBoYXNDb3JyZXNwb25kaW5nVGltZWxpbmUgPSB0
aGlzLl90aW1lbGluZXMuaGFzKHJlY29yZC50eXBlKTsKICAgICAgICAgY29uc29sZS5hc3NlcnQo
aGFzQ29ycmVzcG9uZGluZ1RpbWVsaW5lLCByZWNvcmQsIHRoaXMuX3RpbWVsaW5lcyk7CkBAIC0y
MDEsOSArMTg4LDkgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nLnByb3RvdHlwZSA9
IHsKIAogICAgICAgICBpZiAobmV3VGltZWxpbmUpCiAgICAgICAgICAgICB0aGlzLmRpc3BhdGNo
RXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRpbmcuRXZlbnQuU291
cmNlQ29kZVRpbWVsaW5lQWRkZWQsIHtzb3VyY2VDb2RlVGltZWxpbmV9KTsKLSAgICB9LAorICAg
IH0KIAotICAgIGNvbXB1dGVFbGFwc2VkVGltZTogZnVuY3Rpb24odGltZXN0YW1wKQorICAgIGNv
bXB1dGVFbGFwc2VkVGltZSh0aW1lc3RhbXApCiAgICAgewogICAgICAgICBpZiAoIXRpbWVzdGFt
cCB8fCBpc05hTih0aW1lc3RhbXApKQogICAgICAgICAgICAgcmV0dXJuIE5hTjsKQEAgLTIxOSwx
MSArMjA2LDExIEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZGluZy5wcm90b3R5cGUgPSB7
CiAgICAgICAgICAgICByZXR1cm4gKHRpbWVzdGFtcCAtIHRoaXMuX2xlZ2FjeUZpcnN0UmVjb3Jk
ZWRUaW1lc3RhbXApIC8gMTAwMC4wOwogCiAgICAgICAgIHJldHVybiB0aW1lc3RhbXA7Ci0gICAg
fSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKLSAgICBfa2V5Rm9yUmVjb3JkOiBmdW5jdGlv
bihyZWNvcmQpCisgICAgX2tleUZvclJlY29yZChyZWNvcmQpCiAgICAgewogICAgICAgICB2YXIg
a2V5ID0gcmVjb3JkLnR5cGU7CiAgICAgICAgIGlmIChyZWNvcmQgaW5zdGFuY2VvZiBXZWJJbnNw
ZWN0b3IuU2NyaXB0VGltZWxpbmVSZWNvcmQgfHwgcmVjb3JkIGluc3RhbmNlb2YgV2ViSW5zcGVj
dG9yLkxheW91dFRpbWVsaW5lUmVjb3JkKQpAQCAtMjMzLDkgKzIyMCw5IEBAIFdlYkluc3BlY3Rv
ci5UaW1lbGluZVJlY29yZGluZy5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmIChyZWNvcmQuc291
cmNlQ29kZUxvY2F0aW9uKQogICAgICAgICAgICAga2V5ICs9ICI6IiArIHJlY29yZC5zb3VyY2VD
b2RlTG9jYXRpb24ubGluZU51bWJlciArICI6IiArIHJlY29yZC5zb3VyY2VDb2RlTG9jYXRpb24u
Y29sdW1uTnVtYmVyOwogICAgICAgICByZXR1cm4ga2V5OwotICAgIH0sCisgICAgfQogCi0gICAg
X3RpbWVsaW5lVGltZXNVcGRhdGVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfdGltZWxpbmVUaW1l
c1VwZGF0ZWQoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgdGltZWxpbmUgPSBldmVudC50YXJn
ZXQ7CiAgICAgICAgIHZhciBjaGFuZ2VkID0gZmFsc2U7CkBAIC0yNTQsMyArMjQxLDE0IEBAIFdl
Ykluc3BlY3Rvci5UaW1lbGluZVJlY29yZGluZy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0
aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRp
bmcuRXZlbnQuVGltZXNVcGRhdGVkKTsKICAgICB9CiB9OworCitXZWJJbnNwZWN0b3IuVGltZWxp
bmVSZWNvcmRpbmcuRXZlbnQgPSB7CisgICAgUmVzZXQ6ICJ0aW1lbGluZS1yZWNvcmRpbmctcmVz
ZXQiLAorICAgIFVubG9hZGVkOiAidGltZWxpbmUtcmVjb3JkaW5nLXVubG9hZGVkIiwKKyAgICBT
b3VyY2VDb2RlVGltZWxpbmVBZGRlZDogInRpbWVsaW5lLXJlY29yZGluZy1zb3VyY2UtY29kZS10
aW1lbGluZS1hZGRlZCIsCisgICAgVGltZWxpbmVBZGRlZDogInRpbWVsaW5lLXJlY29yZGluZy10
aW1lbGluZS1hZGRlZCIsCisgICAgVGltZWxpbmVSZW1vdmVkOiAidGltZWxpbmUtcmVjb3JkaW5n
LXRpbWVsaW5lLXJlbW92ZWQiLAorICAgIFRpbWVzVXBkYXRlZDogInRpbWVsaW5lLXJlY29yZGlu
Zy10aW1lcy11cGRhdGVkIgorfTsKKworV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nLlRp
bWVzdGFtcFRocmVzaG9sZEZvckxlZ2FjeVJlY29yZENvbnZlcnNpb24gPSAyODgwMDAwMDsgLy8g
RGF0ZS5wYXJzZSgiSmFuIDEsIDE5NzAiKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1R5cGVTZXQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Nb2RlbHMvVHlwZVNldC5qcwppbmRleCA1ODNiMzM4Li4yNjY2ZTll
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMv
VHlwZVNldC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2Rl
bHMvVHlwZVNldC5qcwpAQCAtMjQsNTggKzI0LDQ5IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlR5cGVTZXQgPSBmdW5jdGlvbihydW50
aW1lVHlwZURlc2NyaXB0aW9uUGF5bG9hZCkKK1dlYkluc3BlY3Rvci5UeXBlU2V0ID0gY2xhc3Mg
VHlwZVNldCBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIHsKLSAgICB0aGlzLl90eXBlcyA9
IHJ1bnRpbWVUeXBlRGVzY3JpcHRpb25QYXlsb2FkOwotCi0gICAgdmFyIHR5cGVTZXQgPSB0aGlz
Ll90eXBlcy50eXBlU2V0OwotICAgIHZhciBiaXRTdHJpbmcgPSAweDA7Ci0gICAgaWYgKHR5cGVT
ZXQuaXNGdW5jdGlvbikKLSAgICAgICAgYml0U3RyaW5nIHw9IFdlYkluc3BlY3Rvci5UeXBlU2V0
LlR5cGVCaXQuRnVuY3Rpb247Ci0gICAgaWYgKHR5cGVTZXQuaXNVbmRlZmluZWQpCi0gICAgICAg
IGJpdFN0cmluZyB8PSBXZWJJbnNwZWN0b3IuVHlwZVNldC5UeXBlQml0LlVuZGVmaW5lZDsKLSAg
ICBpZiAodHlwZVNldC5pc051bGwpCi0gICAgICAgIGJpdFN0cmluZyB8PSBXZWJJbnNwZWN0b3Iu
VHlwZVNldC5UeXBlQml0Lk51bGw7Ci0gICAgaWYgKHR5cGVTZXQuaXNCb29sZWFuKQotICAgICAg
ICBiaXRTdHJpbmcgfD0gV2ViSW5zcGVjdG9yLlR5cGVTZXQuVHlwZUJpdC5Cb29sZWFuOwotICAg
IGlmICh0eXBlU2V0LmlzSW50ZWdlcikKLSAgICAgICAgYml0U3RyaW5nIHw9IFdlYkluc3BlY3Rv
ci5UeXBlU2V0LlR5cGVCaXQuSW50ZWdlcjsKLSAgICBpZiAodHlwZVNldC5pc051bWJlcikKLSAg
ICAgICAgYml0U3RyaW5nIHw9IFdlYkluc3BlY3Rvci5UeXBlU2V0LlR5cGVCaXQuTnVtYmVyOwot
ICAgIGlmICh0eXBlU2V0LmlzU3RyaW5nKQotICAgICAgICBiaXRTdHJpbmcgfD0gV2ViSW5zcGVj
dG9yLlR5cGVTZXQuVHlwZUJpdC5TdHJpbmc7Ci0gICAgaWYgKHR5cGVTZXQuaXNPYmplY3QpCi0g
ICAgICAgIGJpdFN0cmluZyB8PSBXZWJJbnNwZWN0b3IuVHlwZVNldC5UeXBlQml0Lk9iamVjdDsK
LQotICAgIGNvbnNvbGUuYXNzZXJ0KGJpdFN0cmluZyk7Ci0gICAgdGhpcy5fYml0U3RyaW5nID0g
Yml0U3RyaW5nOwotCi0gICAgdGhpcy5fcHJpbWl0aXZlVHlwZU5hbWVzID0gbnVsbDsKLX07Ci0K
LVdlYkluc3BlY3Rvci5UeXBlU2V0LmZyb21QYXlsb2FkID0gZnVuY3Rpb24ocGF5bG9hZCkKLXsK
LSAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5UeXBlU2V0KHBheWxvYWQpOwotfTsKLQotV2Vi
SW5zcGVjdG9yLlR5cGVTZXQuVHlwZUJpdCA9IHsKLSAgICAiRnVuY3Rpb24iICAgIDogIDB4MSwK
LSAgICAiVW5kZWZpbmVkIiAgIDogIDB4MiwKLSAgICAiTnVsbCIgICAgICAgIDogIDB4NCwKLSAg
ICAiQm9vbGVhbiIgICAgIDogIDB4OCwKLSAgICAiSW50ZWdlciIgICAgIDogIDB4MTAsCi0gICAg
Ik51bWJlciIgICAgICA6ICAweDIwLAotICAgICJTdHJpbmciICAgICAgOiAgMHg0MCwKLSAgICAi
T2JqZWN0IiAgICAgIDogIDB4ODAKLX07Ci0KLVdlYkluc3BlY3Rvci5UeXBlU2V0Lk51bGxPclVu
ZGVmaW5lZFR5cGVCaXRzID0gV2ViSW5zcGVjdG9yLlR5cGVTZXQuVHlwZUJpdC5OdWxsIHwgV2Vi
SW5zcGVjdG9yLlR5cGVTZXQuVHlwZUJpdC5VbmRlZmluZWQ7Ci0KLVdlYkluc3BlY3Rvci5UeXBl
U2V0LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlR5cGVTZXQs
Ci0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZSwKLQotICAgIGlz
Q29udGFpbmVkSW46IGZ1bmN0aW9uKHRlc3QpCisgICAgY29uc3RydWN0b3IocnVudGltZVR5cGVE
ZXNjcmlwdGlvblBheWxvYWQpCisgICAgeworICAgICAgICBzdXBlcigpOworCisgICAgICAgIHRo
aXMuX3R5cGVzID0gcnVudGltZVR5cGVEZXNjcmlwdGlvblBheWxvYWQ7CisKKyAgICAgICAgdmFy
IHR5cGVTZXQgPSB0aGlzLl90eXBlcy50eXBlU2V0OworICAgICAgICB2YXIgYml0U3RyaW5nID0g
MHgwOworICAgICAgICBpZiAodHlwZVNldC5pc0Z1bmN0aW9uKQorICAgICAgICAgICAgYml0U3Ry
aW5nIHw9IFdlYkluc3BlY3Rvci5UeXBlU2V0LlR5cGVCaXQuRnVuY3Rpb247CisgICAgICAgIGlm
ICh0eXBlU2V0LmlzVW5kZWZpbmVkKQorICAgICAgICAgICAgYml0U3RyaW5nIHw9IFdlYkluc3Bl
Y3Rvci5UeXBlU2V0LlR5cGVCaXQuVW5kZWZpbmVkOworICAgICAgICBpZiAodHlwZVNldC5pc051
bGwpCisgICAgICAgICAgICBiaXRTdHJpbmcgfD0gV2ViSW5zcGVjdG9yLlR5cGVTZXQuVHlwZUJp
dC5OdWxsOworICAgICAgICBpZiAodHlwZVNldC5pc0Jvb2xlYW4pCisgICAgICAgICAgICBiaXRT
dHJpbmcgfD0gV2ViSW5zcGVjdG9yLlR5cGVTZXQuVHlwZUJpdC5Cb29sZWFuOworICAgICAgICBp
ZiAodHlwZVNldC5pc0ludGVnZXIpCisgICAgICAgICAgICBiaXRTdHJpbmcgfD0gV2ViSW5zcGVj
dG9yLlR5cGVTZXQuVHlwZUJpdC5JbnRlZ2VyOworICAgICAgICBpZiAodHlwZVNldC5pc051bWJl
cikKKyAgICAgICAgICAgIGJpdFN0cmluZyB8PSBXZWJJbnNwZWN0b3IuVHlwZVNldC5UeXBlQml0
Lk51bWJlcjsKKyAgICAgICAgaWYgKHR5cGVTZXQuaXNTdHJpbmcpCisgICAgICAgICAgICBiaXRT
dHJpbmcgfD0gV2ViSW5zcGVjdG9yLlR5cGVTZXQuVHlwZUJpdC5TdHJpbmc7CisgICAgICAgIGlm
ICh0eXBlU2V0LmlzT2JqZWN0KQorICAgICAgICAgICAgYml0U3RyaW5nIHw9IFdlYkluc3BlY3Rv
ci5UeXBlU2V0LlR5cGVCaXQuT2JqZWN0OworCisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJpdFN0
cmluZyk7CisgICAgICAgIHRoaXMuX2JpdFN0cmluZyA9IGJpdFN0cmluZzsKKworICAgICAgICB0
aGlzLl9wcmltaXRpdmVUeXBlTmFtZXMgPSBudWxsOworICAgIH0KKworICAgIC8vIFN0YXRpYwor
CisgICAgc3RhdGljIGZyb21QYXlsb2FkKHBheWxvYWQpCisgICAgeworICAgICAgICByZXR1cm4g
bmV3IFdlYkluc3BlY3Rvci5UeXBlU2V0KHBheWxvYWQpOworICAgIH0KKworICAgIC8vIFB1Ymxp
YworCisgICAgaXNDb250YWluZWRJbih0ZXN0KQogICAgIHsKICAgICAgICAgLy8gVGhpcyBmdW5j
dGlvbiBjaGVja3MgaWYgdHlwZXMgaW4gYml0U3RyaW5nIGFyZSBjb250YWluZWQgaW4gdGhlIHR5
cGVzIGRlc2NyaWJlZCBieSB0aGUgJ3Rlc3QnIGJpdHN0cmluZy4gKGkuZSB3ZSBoYXZlbid0IHNl
ZW4gbW9yZSB0eXBlcyB0aGFuICd0ZXN0JykuCiAgICAgICAgIC8vIFdlIGhhdmUgc2VlbiBmZXdl
ciBvciBlcXVhbCBudW1iZXIgb2YgdHlwZXMgYXMgJ3Rlc3QnIGlmIEFORGluZyBiaXRTdHJpbmcg
d2l0aCB0ZXN0IGRvZXNuJ3QgemVybyBvdXQgYW55IG9mIG91ciBiaXRzLgpAQCAtOTMsNyArODQs
NyBAQCBXZWJJbnNwZWN0b3IuVHlwZVNldC5wcm90b3R5cGUgPSB7CiAgICAgICAgIC8vIDBiMDAx
MCAhPSBiaXRTdHJpbmcKIAogICAgICAgICByZXR1cm4gdGhpcy5fYml0U3RyaW5nICYmICh0aGlz
Ll9iaXRTdHJpbmcgJiB0ZXN0KSA9PT0gdGhpcy5fYml0U3RyaW5nOwotICAgIH0sCisgICAgfQog
CiAgICAgZ2V0IHByaW1pdGl2ZVR5cGVOYW1lcygpCiAgICAgewpAQCAtMTIyLDMgKzExMywxNiBA
QCBXZWJJbnNwZWN0b3IuVHlwZVNldC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiB0aGlz
Ll9wcmltaXRpdmVUeXBlTmFtZXM7CiAgICAgfQogfTsKKworV2ViSW5zcGVjdG9yLlR5cGVTZXQu
VHlwZUJpdCA9IHsKKyAgICAiRnVuY3Rpb24iICAgIDogIDB4MSwKKyAgICAiVW5kZWZpbmVkIiAg
IDogIDB4MiwKKyAgICAiTnVsbCIgICAgICAgIDogIDB4NCwKKyAgICAiQm9vbGVhbiIgICAgIDog
IDB4OCwKKyAgICAiSW50ZWdlciIgICAgIDogIDB4MTAsCisgICAgIk51bWJlciIgICAgICA6ICAw
eDIwLAorICAgICJTdHJpbmciICAgICAgOiAgMHg0MCwKKyAgICAiT2JqZWN0IiAgICAgIDogIDB4
ODAKK307CisKK1dlYkluc3BlY3Rvci5UeXBlU2V0Lk51bGxPclVuZGVmaW5lZFR5cGVCaXRzID0g
V2ViSW5zcGVjdG9yLlR5cGVTZXQuVHlwZUJpdC5OdWxsIHwgV2ViSW5zcGVjdG9yLlR5cGVTZXQu
VHlwZUJpdC5VbmRlZmluZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Nb2RlbHMvVW5pdEJlemllci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL01vZGVscy9Vbml0QmV6aWVyLmpzCmluZGV4IDc5OTc0MmIuLjY1NjU1MzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9V
bml0QmV6aWVyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01v
ZGVscy9Vbml0QmV6aWVyLmpzCkBAIC0yMyw1MCArMjMsNDcgQEAKICAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuVW5pdEJlemllciA9IGZ1bmN0
aW9uKHgxLCB5MSwgeDIsIHkyKQorV2ViSW5zcGVjdG9yLlVuaXRCZXppZXIgPSBjbGFzcyBVbml0
QmV6aWVyCiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIGNvbnN0
cnVjdG9yKHgxLCB5MSwgeDIsIHkyKQorICAgIHsKKyAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBw
b2x5bm9taWFsIGNvZWZmaWNpZW50cywgaW1wbGljaXQgZmlyc3QgYW5kIGxhc3QgY29udHJvbCBw
b2ludHMgYXJlICgwLDApIGFuZCAoMSwxKS4KKyAgICAgICAgdGhpcy5fY3ggPSAzLjAgKiB4MTsK
KyAgICAgICAgdGhpcy5fYnggPSAzLjAgKiAoeDIgLSB4MSkgLSB0aGlzLl9jeDsKKyAgICAgICAg
dGhpcy5fYXggPSAxLjAgLSB0aGlzLl9jeCAtIHRoaXMuX2J4OwogCi0gICAgLy8gQ2FsY3VsYXRl
IHRoZSBwb2x5bm9taWFsIGNvZWZmaWNpZW50cywgaW1wbGljaXQgZmlyc3QgYW5kIGxhc3QgY29u
dHJvbCBwb2ludHMgYXJlICgwLDApIGFuZCAoMSwxKS4KLSAgICB0aGlzLl9jeCA9IDMuMCAqIHgx
OwotICAgIHRoaXMuX2J4ID0gMy4wICogKHgyIC0geDEpIC0gdGhpcy5fY3g7Ci0gICAgdGhpcy5f
YXggPSAxLjAgLSB0aGlzLl9jeCAtIHRoaXMuX2J4OwotCi0gICAgdGhpcy5fY3kgPSAzLjAgKiB5
MTsKLSAgICB0aGlzLl9ieSA9IDMuMCAqICh5MiAtIHkxKSAtIHRoaXMuX2N5OwotICAgIHRoaXMu
X2F5ID0gMS4wIC0gdGhpcy5fY3kgLSB0aGlzLl9ieTsKLX07Ci0KLVdlYkluc3BlY3Rvci5Vbml0
QmV6aWVyLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlVuaXRC
ZXppZXIsCisgICAgICAgIHRoaXMuX2N5ID0gMy4wICogeTE7CisgICAgICAgIHRoaXMuX2J5ID0g
My4wICogKHkyIC0geTEpIC0gdGhpcy5fY3k7CisgICAgICAgIHRoaXMuX2F5ID0gMS4wIC0gdGhp
cy5fY3kgLSB0aGlzLl9ieTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAotICAgIHNvbHZlOiBm
dW5jdGlvbih4LCBlcHNpbG9uKQorICAgIHNvbHZlKHgsIGVwc2lsb24pCiAgICAgewogICAgICAg
ICByZXR1cm4gdGhpcy5fc2FtcGxlQ3VydmVZKHRoaXMuX3NvbHZlQ3VydmVYKHgsIGVwc2lsb24p
KTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAgIF9zYW1wbGVDdXJ2ZVg6
IGZ1bmN0aW9uKHQpCisgICAgX3NhbXBsZUN1cnZlWCh0KQogICAgIHsKICAgICAgICAgLy8gYGF4
IHReMyArIGJ4IHReMiArIGN4IHQnIGV4cGFuZGVkIHVzaW5nIEhvcm5lcidzIHJ1bGUuCiAgICAg
ICAgIHJldHVybiAoKHRoaXMuX2F4ICogdCArIHRoaXMuX2J4KSAqIHQgKyB0aGlzLl9jeCkgKiB0
OwotICAgIH0sCisgICAgfQogCi0gICAgX3NhbXBsZUN1cnZlWTogZnVuY3Rpb24odCkKKyAgICBf
c2FtcGxlQ3VydmVZKHQpCiAgICAgewogICAgICAgICByZXR1cm4gKCh0aGlzLl9heSAqIHQgKyB0
aGlzLl9ieSkgKiB0ICsgdGhpcy5fY3kpICogdDsKLSAgICB9LAorICAgIH0KIAotICAgIF9zYW1w
bGVDdXJ2ZURlcml2YXRpdmVYOiBmdW5jdGlvbih0KQorICAgIF9zYW1wbGVDdXJ2ZURlcml2YXRp
dmVYKHQpCiAgICAgewogICAgICAgICByZXR1cm4gKDMuMCAqIHRoaXMuX2F4ICogdCArIDIuMCAq
IHRoaXMuX2J4KSAqIHQgKyB0aGlzLl9jeDsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIEdpdmVu
IGFuIHggdmFsdWUsIGZpbmQgYSBwYXJhbWV0cmljIHZhbHVlIGl0IGNhbWUgZnJvbS4KLSAgICBf
c29sdmVDdXJ2ZVg6IGZ1bmN0aW9uKHgsIGVwc2lsb24pCisgICAgX3NvbHZlQ3VydmVYKHgsIGVw
c2lsb24pCiAgICAgewogICAgICAgICB2YXIgdDAsIHQxLCB0MiwgeDIsIGQyLCBpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9BcHBs
aWNhdGlvbkNhY2hlT2JzZXJ2ZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Qcm90b2NvbC9BcHBsaWNhdGlvbkNhY2hlT2JzZXJ2ZXIuanMKaW5kZXggZTQ4ZGY4Yi4u
ZWRlMGI3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
UHJvdG9jb2wvQXBwbGljYXRpb25DYWNoZU9ic2VydmVyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0FwcGxpY2F0aW9uQ2FjaGVPYnNlcnZlci5q
cwpAQCAtMjUsNyArMjUsOCBAQAogCiBXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZU9ic2Vy
dmVyID0gZnVuY3Rpb24oKQogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsK
KyAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJj
bGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KKyAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwo
dGhpcyk7CiB9OwogCiBXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZU9ic2VydmVyLnByb3Rv
dHlwZSA9IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1Byb3RvY29sL0NTU09ic2VydmVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvUHJvdG9jb2wvQ1NTT2JzZXJ2ZXIuanMKaW5kZXggMzkxZjg5ZS4uYzA5NGUyNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvQ1NT
T2JzZXJ2ZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJv
dG9jb2wvQ1NTT2JzZXJ2ZXIuanMKQEAgLTI1LDcgKzI1LDggQEAKIAogV2ViSW5zcGVjdG9yLkNT
U09ic2VydmVyID0gZnVuY3Rpb24oKQogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0
aGlzKTsKKyAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVj
dCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KKyAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0
LmNhbGwodGhpcyk7CiB9OwogCiBXZWJJbnNwZWN0b3IuQ1NTT2JzZXJ2ZXIucHJvdG90eXBlID0g
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9j
b2wvQ29uc29sZU9ic2VydmVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvUHJvdG9jb2wvQ29uc29sZU9ic2VydmVyLmpzCmluZGV4IDc2NGU3OTkuLjk3NTk1M2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0Nv
bnNvbGVPYnNlcnZlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Qcm90b2NvbC9Db25zb2xlT2JzZXJ2ZXIuanMKQEAgLTI1LDcgKzI1LDggQEAKIAogV2ViSW5z
cGVjdG9yLkNvbnNvbGVPYnNlcnZlciA9IGZ1bmN0aW9uKCkKIHsKLSAgICBXZWJJbnNwZWN0b3Iu
T2JqZWN0LmNhbGwodGhpcyk7CisgICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYklu
c3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCkuCisgICAgLy8gV2ViSW5z
cGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwogfTsKIAogV2ViSW5zcGVjdG9yLkNvbnNvbGVPYnNl
cnZlci5wcm90b3R5cGUgPSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Qcm90b2NvbC9ET01PYnNlcnZlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0RPTU9ic2VydmVyLmpzCmluZGV4IDliOWU4ZTguLjc3
MDAzMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1By
b3RvY29sL0RPTU9ic2VydmVyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1Byb3RvY29sL0RPTU9ic2VydmVyLmpzCkBAIC0yNSw3ICsyNSw4IEBACiAKIFdlYklu
c3BlY3Rvci5ET01PYnNlcnZlciA9IGZ1bmN0aW9uKCkKIHsKLSAgICBXZWJJbnNwZWN0b3IuT2Jq
ZWN0LmNhbGwodGhpcyk7CisgICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3Bl
Y3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCkuCisgICAgLy8gV2ViSW5zcGVj
dG9yLk9iamVjdC5jYWxsKHRoaXMpOwogfTsKIAogV2ViSW5zcGVjdG9yLkRPTU9ic2VydmVyLnBy
b3RvdHlwZSA9IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1Byb3RvY29sL0RPTVN0b3JhZ2VPYnNlcnZlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0RPTVN0b3JhZ2VPYnNlcnZlci5qcwppbmRleCBkMmMx
ZTBjLi5kZmU0NWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Qcm90b2NvbC9ET01TdG9yYWdlT2JzZXJ2ZXIuanMKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvRE9NU3RvcmFnZU9ic2VydmVyLmpzCkBAIC0y
Niw3ICsyNiw4IEBACiAKIFdlYkluc3BlY3Rvci5ET01TdG9yYWdlT2JzZXJ2ZXIgPSBmdW5jdGlv
bigpCiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIC8vIEZJWE1F
OiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2Fs
bCBzdXBlcigpLgorICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKIH07CiAK
IFdlYkluc3BlY3Rvci5ET01TdG9yYWdlT2JzZXJ2ZXIucHJvdG90eXBlID0gewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvRGF0YWJhc2VP
YnNlcnZlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29s
L0RhdGFiYXNlT2JzZXJ2ZXIuanMKaW5kZXggYmMxMzRhZS4uNjNkYmQ2ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvRGF0YWJhc2VPYnNl
cnZlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2Nv
bC9EYXRhYmFzZU9ic2VydmVyLmpzCkBAIC0yNSw3ICsyNSw4IEBACiAKIFdlYkluc3BlY3Rvci5E
YXRhYmFzZU9ic2VydmVyID0gZnVuY3Rpb24oKQogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3Qu
Y2FsbCh0aGlzKTsKKyAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9y
Lk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KKyAgICAvLyBXZWJJbnNwZWN0b3Iu
T2JqZWN0LmNhbGwodGhpcyk7CiB9OwogCiBXZWJJbnNwZWN0b3IuRGF0YWJhc2VPYnNlcnZlci5f
Y2FsbGJhY2tzID0ge307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Qcm90b2NvbC9EZWJ1Z2dlck9ic2VydmVyLmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvRGVidWdnZXJPYnNlcnZlci5qcwppbmRleCA1MmFh
ZGM4Li4wNjllOTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Qcm90b2NvbC9EZWJ1Z2dlck9ic2VydmVyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0RlYnVnZ2VyT2JzZXJ2ZXIuanMKQEAgLTI1LDcg
KzI1LDggQEAKIAogV2ViSW5zcGVjdG9yLkRlYnVnZ2VyT2JzZXJ2ZXIgPSBmdW5jdGlvbigpCiB7
Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIC8vIEZJWE1FOiBDb252
ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBl
cigpLgorICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKIH07CiAKIFdlYklu
c3BlY3Rvci5EZWJ1Z2dlck9ic2VydmVyLnByb3RvdHlwZSA9IHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3Rvck9ic2VydmVy
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVj
dG9yT2JzZXJ2ZXIuanMKaW5kZXggN2Q1NGFmNC4uODQ5MTc1NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yT2JzZXJ2ZXIu
anMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5z
cGVjdG9yT2JzZXJ2ZXIuanMKQEAgLTI1LDcgKzI1LDggQEAKIAogV2ViSW5zcGVjdG9yLkluc3Bl
Y3Rvck9ic2VydmVyID0gZnVuY3Rpb24oKQogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2Fs
bCh0aGlzKTsKKyAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9i
amVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KKyAgICAvLyBXZWJJbnNwZWN0b3IuT2Jq
ZWN0LmNhbGwodGhpcyk7CiB9OwogCiBXZWJJbnNwZWN0b3IuSW5zcGVjdG9yT2JzZXJ2ZXIucHJv
dG90eXBlID0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvUHJvdG9jb2wvTGF5ZXJUcmVlT2JzZXJ2ZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Qcm90b2NvbC9MYXllclRyZWVPYnNlcnZlci5qcwppbmRleCBkZGJiOWQz
Li41NWNiOTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Qcm90b2NvbC9MYXllclRyZWVPYnNlcnZlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9MYXllclRyZWVPYnNlcnZlci5qcwpAQCAtMjUsNyAr
MjUsOCBAQAogCiBXZWJJbnNwZWN0b3IuTGF5ZXJUcmVlT2JzZXJ2ZXIgPSBmdW5jdGlvbigpCiB7
Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIC8vIEZJWE1FOiBDb252
ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBl
cigpLgorICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKIH07CiAKIFdlYklu
c3BlY3Rvci5MYXllclRyZWVPYnNlcnZlci5wcm90b3R5cGUgPSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9OZXR3b3JrT2JzZXJ2ZXIu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9OZXR3b3Jr
T2JzZXJ2ZXIuanMKaW5kZXggYWJkNjNkMi4uOGRiOTBlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTmV0d29ya09ic2VydmVyLmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL05ldHdvcmtP
YnNlcnZlci5qcwpAQCAtMjUsNyArMjUsOCBAQAogCiBXZWJJbnNwZWN0b3IuTmV0d29ya09ic2Vy
dmVyID0gZnVuY3Rpb24oKQogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsK
KyAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJj
bGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KKyAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwo
dGhpcyk7CiB9OwogCiBXZWJJbnNwZWN0b3IuTmV0d29ya09ic2VydmVyLnByb3RvdHlwZSA9IHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29s
L1BhZ2VPYnNlcnZlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1By
b3RvY29sL1BhZ2VPYnNlcnZlci5qcwppbmRleCAxZjEzNGExLi43YmM1ZDFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9QYWdlT2JzZXJ2
ZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wv
UGFnZU9ic2VydmVyLmpzCkBAIC0yNSw3ICsyNSw4IEBACiAKIFdlYkluc3BlY3Rvci5QYWdlT2Jz
ZXJ2ZXIgPSBmdW5jdGlvbigpCiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMp
OworICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1
YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgorICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2Fs
bCh0aGlzKTsKIH07CiAKIFdlYkluc3BlY3Rvci5QYWdlT2JzZXJ2ZXIucHJvdG90eXBlID0gewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wv
UmVwbGF5T2JzZXJ2ZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Q
cm90b2NvbC9SZXBsYXlPYnNlcnZlci5qcwppbmRleCA5MTY2ZGI3Li4yY2FkYzY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9SZXBsYXlP
YnNlcnZlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90
b2NvbC9SZXBsYXlPYnNlcnZlci5qcwpAQCAtMzcsNyArMzcsOCBAQCBXZWJJbnNwZWN0b3IuUmVw
bGF5UG9zaXRpb24uZnJvbVByb3RvY29sID0gZnVuY3Rpb24ocGF5bG9hZCkKIAogV2ViSW5zcGVj
dG9yLlJlcGxheU9ic2VydmVyID0gZnVuY3Rpb24oKQogewotICAgIFdlYkluc3BlY3Rvci5PYmpl
Y3QuY2FsbCh0aGlzKTsKKyAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVj
dG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KKyAgICAvLyBXZWJJbnNwZWN0
b3IuT2JqZWN0LmNhbGwodGhpcyk7CiB9OwogCiBXZWJJbnNwZWN0b3IuUmVwbGF5T2JzZXJ2ZXIu
cHJvdG90eXBlID0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvUHJvdG9jb2wvUnVudGltZU9ic2VydmVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvUnVudGltZU9ic2VydmVyLmpzCmluZGV4IGE4YmM3MWQu
Ljk2OWVkMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1Byb3RvY29sL1J1bnRpbWVPYnNlcnZlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Qcm90b2NvbC9SdW50aW1lT2JzZXJ2ZXIuanMKQEAgLTI1LDcgKzI1LDgg
QEAKIAogV2ViSW5zcGVjdG9yLlJ1bnRpbWVPYnNlcnZlciA9IGZ1bmN0aW9uKCkKIHsKLSAgICBX
ZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CisgICAgLy8gRklYTUU6IENvbnZlcnQgdGhp
cyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCkuCisg
ICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwogfTsKIAogV2ViSW5zcGVjdG9y
LlJ1bnRpbWVPYnNlcnZlci5wcm90b3R5cGUgPSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9UaW1lbGluZU9ic2VydmVyLmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvVGltZWxpbmVPYnNlcnZl
ci5qcwppbmRleCBiZDg4N2MyLi45NTE0YmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9UaW1lbGluZU9ic2VydmVyLmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1RpbWVsaW5lT2JzZXJ2
ZXIuanMKQEAgLTI1LDcgKzI1LDggQEAKIAogV2ViSW5zcGVjdG9yLlRpbWVsaW5lT2JzZXJ2ZXIg
PSBmdW5jdGlvbigpCiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAg
IC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNz
LCBhbmQgY2FsbCBzdXBlcigpLgorICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlz
KTsKIH07CiAKIFdlYkluc3BlY3Rvci5UaW1lbGluZU9ic2VydmVyLnByb3RvdHlwZSA9IHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QuaHRtbCBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QuaHRtbAppbmRleCBiZGY5
NGVmLi44MjI2Mzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9UZXN0Lmh0bWwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
VGVzdC5odG1sCkBAIC0xMDksNiArMTA5LDcgQEAKICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL1Jl
c291cmNlQ29sbGVjdGlvbi5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9S
ZXNvdXJjZVRpbWVsaW5lUmVjb3JkLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9k
ZWxzL1JldmlzaW9uLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL1J1bkxv
b3BUaW1lbGluZVJlY29yZC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9T
Y29wZUNoYWluTm9kZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9TY3Jp
cHQuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvU2NyaXB0U3ludGF4VHJl
ZS5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9CcmVha3BvaW50QWN0aW9uVmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0JyZWFrcG9pbnRBY3Rpb25WaWV3LmpzCmluZGV4IDA3
NWRhODUuLjRjMWRiMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0JyZWFrcG9pbnRBY3Rpb25WaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0JyZWFrcG9pbnRBY3Rpb25WaWV3LmpzCkBAIC0y
NSw3ICsyNSw4IEBACiAKIFdlYkluc3BlY3Rvci5CcmVha3BvaW50QWN0aW9uVmlldyA9IGZ1bmN0
aW9uKGFjdGlvbiwgZGVsZWdhdGUsIG9taXRGb2N1cykKIHsKLSAgICBXZWJJbnNwZWN0b3IuT2Jq
ZWN0LmNhbGwodGhpcyk7CisgICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3Bl
Y3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCkuCisgICAgLy8gV2ViSW5zcGVj
dG9yLk9iamVjdC5jYWxsKHRoaXMpOwogCiAgICAgY29uc29sZS5hc3NlcnQoYWN0aW9uKTsKICAg
ICBjb25zb2xlLmFzc2VydChkZWxlZ2F0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGVjbGFy
YXRpb25TZWN0aW9uLmpzCmluZGV4IDViY2FjN2YuLjg0ZmZjZGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGVjbGFyYXRpb25T
ZWN0aW9uLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0NTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLmpzCkBAIC0yNSw3ICsyNSw4IEBACiAKIFdlYklu
c3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbiA9IGZ1bmN0aW9uKHN0eWxlKQogewot
ICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICAvLyBGSVhNRTogQ29udmVy
dCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIo
KS4KKyAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CiAKICAgICBjb25zb2xl
LmFzc2VydChzdHlsZSk7CiAgICAgdGhpcy5fc3R5bGUgPSBzdHlsZSB8fCBudWxsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVE
ZWNsYXJhdGlvblRleHRFZGl0b3IuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5qcwppbmRleCAzYzU1ZWJm
Li4yMDE0YTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5qcworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVk
aXRvci5qcwpAQCAtMjUsNyArMjUsOCBAQAogCiBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJh
dGlvblRleHRFZGl0b3IgPSBmdW5jdGlvbihkZWxlZ2F0ZSwgc3R5bGUsIGVsZW1lbnQpCiB7Ci0g
ICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIC8vIEZJWE1FOiBDb252ZXJ0
IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigp
LgorICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKIAogICAgIHRoaXMuX2Vs
ZW1lbnQgPSBlbGVtZW50IHx8IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgIHRo
aXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlv
blRleHRFZGl0b3IuU3R5bGVDbGFzc05hbWUpOwpAQCAtNzAsNyArNzEsOCBAQCBXZWJJbnNwZWN0
b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IgPSBmdW5jdGlvbihkZWxlZ2F0ZSwgc3R5
bGUsIGVsZW1lbnQpCiAgICAgdGhpcy5zdHlsZSA9IHN0eWxlOwogfTsKIAotV2ViSW5zcGVjdG9y
Lk9iamVjdC5hZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNs
YXJhdGlvblRleHRFZGl0b3IpOworLy8gRklYTUU6IE1vdmUgdG8gYSBXZWJJbnNwZWN0b3IuT2Jq
ZWN0IHN1YmNsYXNzIGFuZCB3ZSBjYW4gcmVtb3ZlIHRoaXMuCitXZWJJbnNwZWN0b3IuT2JqZWN0
LmRlcHJlY2F0ZWRBZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhXZWJJbnNwZWN0b3IuQ1NTU3R5bGVE
ZWNsYXJhdGlvblRleHRFZGl0b3IpOwogCiBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlv
blRleHRFZGl0b3IuU3R5bGVDbGFzc05hbWUgPSAiY3NzLXN0eWxlLXRleHQtZWRpdG9yIjsKIFdl
Ykluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5SZWFkT25seVN0eWxlQ2xh
c3NOYW1lID0gInJlYWQtb25seSI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9Db2xvclBpY2tlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbG9yUGlja2VyLmpzCmluZGV4IDY4OGU2NzAuLjNkMTA3
OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0NvbG9yUGlja2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0NvbG9yUGlja2VyLmpzCkBAIC0yNSw3ICsyNSw4IEBACiAKIFdlYkluc3BlY3Rvci5D
b2xvclBpY2tlciA9IGZ1bmN0aW9uKCkKIHsKLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwo
dGhpcyk7CisgICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmpl
Y3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCkuCisgICAgLy8gV2ViSW5zcGVjdG9yLk9iamVj
dC5jYWxsKHRoaXMpOwogCiAgICAgdGhpcy5fY29sb3JXaGVlbCA9IG5ldyBXZWJJbnNwZWN0b3Iu
Q29sb3JXaGVlbCgpOwogICAgIHRoaXMuX2NvbG9yV2hlZWwuZGVsZWdhdGUgPSB0aGlzOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29sb3JX
aGVlbC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbG9y
V2hlZWwuanMKaW5kZXggMzYxYzM1Mi4uMGE1N2EyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29sb3JXaGVlbC5qcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db2xvcldoZWVsLmpzCkBAIC0yNSw3
ICsyNSw4IEBACiAKIFdlYkluc3BlY3Rvci5Db2xvcldoZWVsID0gZnVuY3Rpb24oKQogewotICAg
IFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICAvLyBGSVhNRTogQ29udmVydCB0
aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4K
KyAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CiAKICAgICB0aGlzLl9yYXdD
YW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTsKICAgICB0aGlzLl90aW50
ZWRDYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbXBsZXRpb25TdWdn
ZXN0aW9uc1ZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9Db21wbGV0aW9uU3VnZ2VzdGlvbnNWaWV3LmpzCmluZGV4IDcxMDk3MTYuLmU1YmUzNWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbXBs
ZXRpb25TdWdnZXN0aW9uc1ZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvQ29tcGxldGlvblN1Z2dlc3Rpb25zVmlldy5qcwpAQCAtMjUsNyArMjUs
OCBAQAogCiBXZWJJbnNwZWN0b3IuQ29tcGxldGlvblN1Z2dlc3Rpb25zVmlldyA9IGZ1bmN0aW9u
KGRlbGVnYXRlKQogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICAv
LyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywg
YW5kIGNhbGwgc3VwZXIoKS4KKyAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7
CiAKICAgICB0aGlzLl9kZWxlZ2F0ZSA9IGRlbGVnYXRlIHx8IG51bGw7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnNvbGVDb21tYW5k
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29uc29sZUNv
bW1hbmQuanMKaW5kZXggYTk3N2E0My4uYTljNTNmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29uc29sZUNvbW1hbmQuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29uc29sZUNvbW1hbmQuanMK
QEAgLTI5LDcgKzI5LDggQEAKIAogV2ViSW5zcGVjdG9yLkNvbnNvbGVDb21tYW5kID0gZnVuY3Rp
b24oY29tbWFuZCkKIHsKLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CisgICAg
Ly8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3Ms
IGFuZCBjYWxsIHN1cGVyKCkuCisgICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMp
OwogCiAgICAgdGhpcy5jb21tYW5kID0gY29tbWFuZDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db25zb2xlR3JvdXAuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db25zb2xlR3JvdXAuanMKaW5k
ZXggMGQ1MjU3OC4uOTA1NmY1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvQ29uc29sZUdyb3VwLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnNvbGVHcm91cC5qcwpAQCAtMjksNyArMjksOCBA
QAogCiBXZWJJbnNwZWN0b3IuQ29uc29sZUdyb3VwID0gZnVuY3Rpb24ocGFyZW50R3JvdXApCiB7
Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIC8vIEZJWE1FOiBDb252
ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBl
cigpLgorICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKIAogICAgIHRoaXMu
cGFyZW50R3JvdXAgPSBwYXJlbnRHcm91cDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db25zb2xlUHJvbXB0LmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29uc29sZVByb21wdC5qcwppbmRleCAx
Y2ZmYzQ5Li5kNDk3YjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9Db25zb2xlUHJvbXB0LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnNvbGVQcm9tcHQuanMKQEAgLTI1LDcgKzI1LDggQEAK
IAogV2ViSW5zcGVjdG9yLkNvbnNvbGVQcm9tcHQgPSBmdW5jdGlvbihkZWxlZ2F0ZSwgbWltZVR5
cGUsIGVsZW1lbnQpCiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAg
IC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNz
LCBhbmQgY2FsbCBzdXBlcigpLgorICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlz
KTsKIAogICAgIG1pbWVUeXBlID0gcGFyc2VNSU1FVHlwZShtaW1lVHlwZSkudHlwZTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29uc29s
ZVNlc3Npb24uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9D
b25zb2xlU2Vzc2lvbi5qcwppbmRleCBlZjFkOGQwLi5jNjE1OWUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db25zb2xlU2Vzc2lvbi5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db25zb2xlU2Vz
c2lvbi5qcwpAQCAtMjgsNyArMjgsOCBAQAogCiBXZWJJbnNwZWN0b3IuQ29uc29sZVNlc3Npb24g
PSBmdW5jdGlvbigpCiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAg
IC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNz
LCBhbmQgY2FsbCBzdXBlcigpLgorICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlz
KTsKIAogICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAg
ICAgZWxlbWVudC5jbGFzc05hbWUgPSAiY29uc29sZS1zZXNzaW9uIjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRCcm93c2VyLmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudEJyb3dz
ZXIuanMKaW5kZXggM2NjM2Q0ZC4uZWE2MDQ0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudEJyb3dzZXIuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudEJyb3dzZXIuanMKQEAg
LTI1LDcgKzI1LDggQEAKIAogV2ViSW5zcGVjdG9yLkNvbnRlbnRCcm93c2VyID0gZnVuY3Rpb24o
ZWxlbWVudCwgZGVsZWdhdGUsIGRpc2FibGVCYWNrRm9yd2FyZCkKIHsKLSAgICBXZWJJbnNwZWN0
b3IuT2JqZWN0LmNhbGwodGhpcyk7CisgICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdl
Ykluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCkuCisgICAgLy8gV2Vi
SW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwogCiAgICAgdGhpcy5fZWxlbWVudCA9IGVsZW1l
bnQgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgdGhpcy5fZWxlbWVudC5j
bGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5Db250ZW50QnJvd3Nlci5TdHlsZUNsYXNzTmFtZSk7
CkBAIC04OSw3ICs5MCw4IEBAIFdlYkluc3BlY3Rvci5Db250ZW50QnJvd3NlciA9IGZ1bmN0aW9u
KGVsZW1lbnQsIGRlbGVnYXRlLCBkaXNhYmxlQmFja0ZvcndhcmQpCiAgICAgdGhpcy5fY3VycmVu
dENvbnRlbnRWaWV3TmF2aWdhdGlvbkl0ZW1zID0gW107CiB9OwogCi1XZWJJbnNwZWN0b3IuT2Jq
ZWN0LmFkZENvbnN0cnVjdG9yRnVuY3Rpb25zKFdlYkluc3BlY3Rvci5Db250ZW50QnJvd3Nlcik7
CisvLyBGSVhNRTogTW92ZSB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MgYW5kIHdl
IGNhbiByZW1vdmUgdGhpcy4KK1dlYkluc3BlY3Rvci5PYmplY3QuZGVwcmVjYXRlZEFkZENvbnN0
cnVjdG9yRnVuY3Rpb25zKFdlYkluc3BlY3Rvci5Db250ZW50QnJvd3Nlcik7CiAKIFdlYkluc3Bl
Y3Rvci5Db250ZW50QnJvd3Nlci5TdHlsZUNsYXNzTmFtZSA9ICJjb250ZW50LWJyb3dzZXIiOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9D
b250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0NvbnRlbnRWaWV3LmpzCmluZGV4IDA5NmYzYjguLjgyYmI4OWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3LmpzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3Lmpz
CkBAIC05Niw3ICs5Niw4IEBAIFdlYkluc3BlY3Rvci5Db250ZW50VmlldyA9IGZ1bmN0aW9uKHJl
cHJlc2VudGVkT2JqZWN0KQogICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuY29uc3RydWN0b3IgIT09
IFdlYkluc3BlY3Rvci5Db250ZW50VmlldyAmJiB0aGlzIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9y
LkNvbnRlbnRWaWV3KTsKICAgICBjb25zb2xlLmFzc2VydChXZWJJbnNwZWN0b3IuQ29udGVudFZp
ZXcuaXNWaWV3YWJsZShyZXByZXNlbnRlZE9iamVjdCkpOwogCi0gICAgV2ViSW5zcGVjdG9yLk9i
amVjdC5jYWxsKHRoaXMpOworICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNw
ZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgorICAgIC8vIFdlYkluc3Bl
Y3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKIAogICAgIHRoaXMuX3JlcHJlc2VudGVkT2JqZWN0ID0g
cmVwcmVzZW50ZWRPYmplY3Q7CiAKQEAgLTEwNiw3ICsxMDcsOCBAQCBXZWJJbnNwZWN0b3IuQ29u
dGVudFZpZXcgPSBmdW5jdGlvbihyZXByZXNlbnRlZE9iamVjdCkKICAgICB0aGlzLl9wYXJlbnRD
b250YWluZXIgPSBudWxsOwogfTsKIAotV2ViSW5zcGVjdG9yLk9iamVjdC5hZGRDb25zdHJ1Y3Rv
ckZ1bmN0aW9ucyhXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcpOworLy8gRklYTUU6IE1vdmUgdG8g
YSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzIGFuZCB3ZSBjYW4gcmVtb3ZlIHRoaXMuCitX
ZWJJbnNwZWN0b3IuT2JqZWN0LmRlcHJlY2F0ZWRBZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhXZWJJ
bnNwZWN0b3IuQ29udGVudFZpZXcpOwogCiBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuaXNWaWV3
YWJsZSA9IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0KQogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudFZpZXdDb250YWluZXIu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50Vmll
d0NvbnRhaW5lci5qcwppbmRleCBjMGRlZGNkLi5jMWVjMTEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50Vmlld0NvbnRhaW5lci5q
cworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50
Vmlld0NvbnRhaW5lci5qcwpAQCAtMjUsNyArMjUsOCBAQAogCiBXZWJJbnNwZWN0b3IuQ29udGVu
dFZpZXdDb250YWluZXIgPSBmdW5jdGlvbihlbGVtZW50KQogewotICAgIFdlYkluc3BlY3Rvci5P
YmplY3QuY2FsbCh0aGlzKTsKKyAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5z
cGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KKyAgICAvLyBXZWJJbnNw
ZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CiAKICAgICB0aGlzLl9lbGVtZW50ID0gZWxlbWVudCB8
fCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICB0aGlzLl9lbGVtZW50LmNsYXNz
TGlzdC5hZGQoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVyLlN0eWxlQ2xhc3NOYW1l
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0RPTVRyZWVPdXRsaW5lLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvRE9NVHJlZU91dGxpbmUuanMKaW5kZXggNTFhMzJhMi4uODg1Zjc4NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZU91dGxp
bmUuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9N
VHJlZU91dGxpbmUuanMKQEAgLTYzLDcgKzYzLDggQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVPdXRs
aW5lID0gZnVuY3Rpb24ob21pdFJvb3RET01Ob2RlLCBzZWxlY3RFbmFibGVkLCBzaG93SW5FbGUK
ICAgICBXZWJJbnNwZWN0b3Iuc2hvd1NoYWRvd0RPTVNldHRpbmcuYWRkRXZlbnRMaXN0ZW5lcihX
ZWJJbnNwZWN0b3IuU2V0dGluZy5FdmVudC5DaGFuZ2VkLCB0aGlzLl9zaG93U2hhZG93RE9NU2V0
dGluZ0NoYW5nZWQsIHRoaXMpOwogfTsKIAotV2ViSW5zcGVjdG9yLk9iamVjdC5hZGRDb25zdHJ1
Y3RvckZ1bmN0aW9ucyhXZWJJbnNwZWN0b3IuRE9NVHJlZU91dGxpbmUpOworLy8gRklYTUU6IE1v
dmUgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzIGFuZCB3ZSBjYW4gcmVtb3ZlIHRo
aXMuCitXZWJJbnNwZWN0b3IuT2JqZWN0LmRlcHJlY2F0ZWRBZGRDb25zdHJ1Y3RvckZ1bmN0aW9u
cyhXZWJJbnNwZWN0b3IuRE9NVHJlZU91dGxpbmUpOwogCiBXZWJJbnNwZWN0b3IuRE9NVHJlZU91
dGxpbmUuU3R5bGVDbGFzc05hbWUgPSAiZG9tLXRyZWUtb3V0bGluZSI7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Rhc2hib2FyZENvbnRh
aW5lclZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9E
YXNoYm9hcmRDb250YWluZXJWaWV3LmpzCmluZGV4IGFlZDk2MTkuLjkzODFmNzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Rhc2hib2FyZENv
bnRhaW5lclZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvRGFzaGJvYXJkQ29udGFpbmVyVmlldy5qcwpAQCAtMjQsNyArMjQsOCBAQAogICovCiAK
IFdlYkluc3BlY3Rvci5EYXNoYm9hcmRDb250YWluZXJWaWV3ID0gZnVuY3Rpb24oKSB7Ci0gICAg
V2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRo
aXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgor
ICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKIAogICAgIHRoaXMuX3Rvb2xi
YXJJdGVtID0gbmV3IFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uSXRlbSgiZGFzaGJvYXJkLWNvbnRh
aW5lciIsICJncm91cCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQWN0aXZpdHkgVmlld2VyIikp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9EYXNoYm9hcmRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvRGFzaGJvYXJkVmlldy5qcwppbmRleCA1NWU0Y2NkLi5iNzM0NWMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EYXNoYm9hcmRWaWV3
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Rhc2hi
b2FyZFZpZXcuanMKQEAgLTQ1LDcgKzQ1LDggQEAgV2ViSW5zcGVjdG9yLkRhc2hib2FyZFZpZXcg
PSBmdW5jdGlvbihyZXByZXNlbnRlZE9iamVjdCwgaWRlbnRpZmllcikKICAgICBjb25zb2xlLmFz
c2VydCh0aGlzLmNvbnN0cnVjdG9yICE9PSBXZWJJbnNwZWN0b3IuRGFzaGJvYXJkVmlldyAmJiB0
aGlzIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkRhc2hib2FyZFZpZXcpOwogICAgIGNvbnNvbGUu
YXNzZXJ0KGlkZW50aWZpZXIpOwogCi0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMp
OworICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1
YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgorICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2Fs
bCh0aGlzKTsKIAogICAgIHRoaXMuX3JlcHJlc2VudGVkT2JqZWN0ID0gcmVwcmVzZW50ZWRPYmpl
Y3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0RldGFpbHNTZWN0aW9uLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvRGV0YWlsc1NlY3Rpb24uanMKaW5kZXggMGIxMjk2NS4uMzk2NTU1MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGV0YWlsc1Nl
Y3Rpb24uanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
RGV0YWlsc1NlY3Rpb24uanMKQEAgLTI0LDcgKzI0LDggQEAKICAqLwogCiBXZWJJbnNwZWN0b3Iu
RGV0YWlsc1NlY3Rpb24gPSBmdW5jdGlvbihpZGVudGlmaWVyLCB0aXRsZSwgZ3JvdXBzLCBvcHRp
b25zRWxlbWVudCwgZGVmYXVsdENvbGxhcHNlZFNldHRpbmdWYWx1ZSkgewotICAgIFdlYkluc3Bl
Y3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEg
V2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KKyAgICAvLyBX
ZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CiAKICAgICBjb25zb2xlLmFzc2VydChpZGVu
dGlmaWVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvRGV0YWlsc1NlY3Rpb25Hcm91cC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0RldGFpbHNTZWN0aW9uR3JvdXAuanMKaW5kZXggOTFkNGU3Yi4u
NjcyOWZhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvRGV0YWlsc1NlY3Rpb25Hcm91cC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9EZXRhaWxzU2VjdGlvbkdyb3VwLmpzCkBAIC0yNCw3ICsyNCw4
IEBACiAgKi8KIAogV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXAgPSBmdW5jdGlvbihy
b3dzKSB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIC8vIEZJWE1F
OiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2Fs
bCBzdXBlcigpLgorICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKIAogICAg
IHRoaXMuX2VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICB0aGlz
Ll9lbGVtZW50LmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdyb3VwLlN0
eWxlQ2xhc3NOYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvRGV0YWlsc1NlY3Rpb25Sb3cuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9EZXRhaWxzU2VjdGlvblJvdy5qcwppbmRleCAzMDBlZTQ0Li5h
YzViODA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9EZXRhaWxzU2VjdGlvblJvdy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9EZXRhaWxzU2VjdGlvblJvdy5qcwpAQCAtMjQsNyArMjQsOCBAQAog
ICovCiAKIFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdyA9IGZ1bmN0aW9uKGVtcHR5TWVz
c2FnZSkgewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICAvLyBGSVhN
RTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNh
bGwgc3VwZXIoKS4KKyAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CiAKICAg
ICB0aGlzLl9lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgdGhp
cy5fZWxlbWVudC5jbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3cuU3R5
bGVDbGFzc05hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9GaWx0ZXJCYXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9GaWx0ZXJCYXIuanMKaW5kZXggZTI1NGI3MC4uNjMzZWNlNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRmlsdGVyQmFyLmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0ZpbHRlckJh
ci5qcwpAQCAtMjQsNyArMjQsOCBAQAogICovCiAKIFdlYkluc3BlY3Rvci5GaWx0ZXJCYXIgPSBm
dW5jdGlvbihlbGVtZW50KSB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwor
ICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNs
YXNzLCBhbmQgY2FsbCBzdXBlcigpLgorICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0
aGlzKTsKIAogICAgIHRoaXMuX2VsZW1lbnQgPSBlbGVtZW50IHx8IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImRpdiIpOwogICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0
b3IuRmlsdGVyQmFyLlN0eWxlQ2xhc3NOYW1lKTsKQEAgLTM3LDcgKzM4LDggQEAgV2ViSW5zcGVj
dG9yLkZpbHRlckJhciA9IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgICB0aGlzLl9lbGVtZW50LmFw
cGVuZENoaWxkKHRoaXMuX2lucHV0RmllbGQpOwogfTsKIAotV2ViSW5zcGVjdG9yLk9iamVjdC5h
ZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhXZWJJbnNwZWN0b3IuRmlsdGVyQmFyKTsKKy8vIEZJWE1F
OiBNb3ZlIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcyBhbmQgd2UgY2FuIHJlbW92
ZSB0aGlzLgorV2ViSW5zcGVjdG9yLk9iamVjdC5kZXByZWNhdGVkQWRkQ29uc3RydWN0b3JGdW5j
dGlvbnMoV2ViSW5zcGVjdG9yLkZpbHRlckJhcik7CiAKIFdlYkluc3BlY3Rvci5GaWx0ZXJCYXIu
U3R5bGVDbGFzc05hbWUgPSAiZmlsdGVyLWJhciI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0ZpbmRCYW5uZXIuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9GaW5kQmFubmVyLmpzCmluZGV4IGY4YWQ4
NmIuLmJmOWNlYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0ZpbmRCYW5uZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvRmluZEJhbm5lci5qcwpAQCAtMjQsNyArMjQsOCBAQAogICovCiAKIFdl
Ykluc3BlY3Rvci5GaW5kQmFubmVyID0gZnVuY3Rpb24oZGVsZWdhdGUsIGVsZW1lbnQpIHsKLSAg
ICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CisgICAgLy8gRklYTUU6IENvbnZlcnQg
dGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCku
CisgICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwogCiAgICAgdGhpcy5fZGVs
ZWdhdGUgPSBkZWxlZ2F0ZSB8fCBudWxsOwogCkBAIC04Niw3ICs4Nyw4IEBAIFdlYkluc3BlY3Rv
ci5GaW5kQmFubmVyID0gZnVuY3Rpb24oZGVsZWdhdGUsIGVsZW1lbnQpIHsKICAgICB0aGlzLl9n
ZW5lcmF0ZUJ1dHRvbnNHbHlwaHNJZk5lZWRlZCgpOwogfTsKIAotV2ViSW5zcGVjdG9yLk9iamVj
dC5hZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhXZWJJbnNwZWN0b3IuRmluZEJhbm5lcik7CisvLyBG
SVhNRTogTW92ZSB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MgYW5kIHdlIGNhbiBy
ZW1vdmUgdGhpcy4KK1dlYkluc3BlY3Rvci5PYmplY3QuZGVwcmVjYXRlZEFkZENvbnN0cnVjdG9y
RnVuY3Rpb25zKFdlYkluc3BlY3Rvci5GaW5kQmFubmVyKTsKIAogV2ViSW5zcGVjdG9yLkZpbmRC
YW5uZXIuU3R5bGVDbGFzc05hbWUgPSAiZmluZC1iYW5uZXIiOwogV2ViSW5zcGVjdG9yLkZpbmRC
YW5uZXIuU3VwcG9ydHNGaW5kQmFubmVyU3R5bGVDbGFzc05hbWUgPSAic3VwcG9ydHMtZmluZC1i
YW5uZXIiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvR29Ub0xpbmVEaWFsb2cuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9Hb1RvTGluZURpYWxvZy5qcwppbmRleCAxZDA3N2MzLi5mNWY3ZDZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Hb1RvTGlu
ZURpYWxvZy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9Hb1RvTGluZURpYWxvZy5qcwpAQCAtMjUsNyArMjUsOCBAQAogCiBXZWJJbnNwZWN0b3IuR29U
b0xpbmVEaWFsb2cgPSBmdW5jdGlvbigpCiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxs
KHRoaXMpOworICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2Jq
ZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgorICAgIC8vIFdlYkluc3BlY3Rvci5PYmpl
Y3QuY2FsbCh0aGlzKTsKIAogICAgIHRoaXMuX2VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJkaXYiKTsKICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5H
b1RvTGluZURpYWxvZy5TdHlsZUNsYXNzTmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0hpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9IaWVyYXJjaGljYWxQ
YXRoQ29tcG9uZW50LmpzCmluZGV4IDMzMjg2ODQuLmFkMTMzYTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0hpZXJhcmNoaWNhbFBhdGhDb21w
b25lbnQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
SGllcmFyY2hpY2FsUGF0aENvbXBvbmVudC5qcwpAQCAtMjUsNyArMjUsOCBAQAogCiBXZWJJbnNw
ZWN0b3IuSGllcmFyY2hpY2FsUGF0aENvbXBvbmVudCA9IGZ1bmN0aW9uKGRpc3BsYXlOYW1lLCBz
dHlsZUNsYXNzTmFtZXMsIHJlcHJlc2VudGVkT2JqZWN0LCB0ZXh0T25seSwgc2hvd1NlbGVjdG9y
QXJyb3dzKQogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICAvLyBG
SVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5k
IGNhbGwgc3VwZXIoKS4KKyAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CiAK
ICAgICBjb25zb2xlLmFzc2VydChkaXNwbGF5TmFtZSk7CiAgICAgY29uc29sZS5hc3NlcnQoc3R5
bGVDbGFzc05hbWVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0hvdmVyTWVudS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0hvdmVyTWVudS5qcwppbmRleCBhYmNjNDA1Li5iOWJhZjIyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Ib3Zlck1lbnUu
anMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSG92ZXJN
ZW51LmpzCkBAIC0yNSw3ICsyNSw4IEBACiAKIFdlYkluc3BlY3Rvci5Ib3Zlck1lbnUgPSBmdW5j
dGlvbihkZWxlZ2F0ZSkKIHsKLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7Cisg
ICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xh
c3MsIGFuZCBjYWxsIHN1cGVyKCkuCisgICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRo
aXMpOwogCiAgICAgdGhpcy5kZWxlZ2F0ZSA9IGRlbGVnYXRlOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9JbmRldGVybWluYXRlUHJvZ3Jl
c3NTcGlubmVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
SW5kZXRlcm1pbmF0ZVByb2dyZXNzU3Bpbm5lci5qcwppbmRleCA5NDk4YmRjLi41YmYyZDc2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9JbmRl
dGVybWluYXRlUHJvZ3Jlc3NTcGlubmVyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0luZGV0ZXJtaW5hdGVQcm9ncmVzc1NwaW5uZXIuanMKQEAgLTI1
LDcgKzI1LDggQEAKIAogV2ViSW5zcGVjdG9yLkluZGV0ZXJtaW5hdGVQcm9ncmVzc1NwaW5uZXIg
PSBmdW5jdGlvbigpCiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAg
IC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNz
LCBhbmQgY2FsbCBzdXBlcigpLgorICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlz
KTsKIAogICAgIHRoaXMuX2VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsK
ICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5JbmRldGVybWluYXRl
UHJvZ3Jlc3NTcGlubmVyLlN0eWxlQ2xhc3NOYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTGF5b3V0VGltZWxpbmVEYXRhR3JpZE5vZGUu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9MYXlvdXRUaW1l
bGluZURhdGFHcmlkTm9kZS5qcwppbmRleCA1ZTFjYTgxLi5hMDYyYWVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9MYXlvdXRUaW1lbGluZURh
dGFHcmlkTm9kZS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9MYXlvdXRUaW1lbGluZURhdGFHcmlkTm9kZS5qcwpAQCAtMzEsNyArMzEsOCBAQCBXZWJJ
bnNwZWN0b3IuTGF5b3V0VGltZWxpbmVEYXRhR3JpZE5vZGUgPSBmdW5jdGlvbihsYXlvdXRUaW1l
bGluZVJlY29yZCwgYmFzZVN0YQogICAgIHRoaXMuX2Jhc2VTdGFydFRpbWUgPSBiYXNlU3RhcnRU
aW1lIHx8IDA7CiB9OwogCi1XZWJJbnNwZWN0b3IuT2JqZWN0LmFkZENvbnN0cnVjdG9yRnVuY3Rp
b25zKFdlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZURhdGFHcmlkTm9kZSk7CisvLyBGSVhNRTog
TW92ZSB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MgYW5kIHdlIGNhbiByZW1vdmUg
dGhpcy4KK1dlYkluc3BlY3Rvci5PYmplY3QuZGVwcmVjYXRlZEFkZENvbnN0cnVjdG9yRnVuY3Rp
b25zKFdlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZURhdGFHcmlkTm9kZSk7CiAKIFdlYkluc3Bl
Y3Rvci5MYXlvdXRUaW1lbGluZURhdGFHcmlkTm9kZS5JY29uU3R5bGVDbGFzc05hbWUgPSAiaWNv
biI7CiBXZWJJbnNwZWN0b3IuTGF5b3V0VGltZWxpbmVEYXRhR3JpZE5vZGUuU3VidGl0bGVTdHls
ZUNsYXNzTmFtZSA9ICJzdWJ0aXRsZSI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9OYXZpZ2F0aW9uQmFyLmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmF2aWdhdGlvbkJhci5qcwppbmRleCA2MzA2Mjky
Li5mYjMzNjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9OYXZpZ2F0aW9uQmFyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL05hdmlnYXRpb25CYXIuanMKQEAgLTI0LDcgKzI0LDggQEAKICAqLwog
CiBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhciA9IGZ1bmN0aW9uKGVsZW1lbnQsIG5hdmlnYXRp
b25JdGVtcywgcm9sZSwgbGFiZWwpIHsKLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhp
cyk7CisgICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qg
c3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCkuCisgICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5j
YWxsKHRoaXMpOwogCiAgICAgdGhpcy5fZWxlbWVudCA9IGVsZW1lbnQgfHwgZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiZGl2Iik7CiAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKHRoaXMu
Y29uc3RydWN0b3IuU3R5bGVDbGFzc05hbWUgfHwgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIu
U3R5bGVDbGFzc05hbWUpOwpAQCAtNTQsNyArNTUsOCBAQCBXZWJJbnNwZWN0b3IuTmF2aWdhdGlv
bkJhciA9IGZ1bmN0aW9uKGVsZW1lbnQsIG5hdmlnYXRpb25JdGVtcywgcm9sZSwgbGFiZWwpIHsK
ICAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHRoaXMuX3N0eWxlRWxlbWVudCk7CiB9Owog
Ci1XZWJJbnNwZWN0b3IuT2JqZWN0LmFkZENvbnN0cnVjdG9yRnVuY3Rpb25zKFdlYkluc3BlY3Rv
ci5OYXZpZ2F0aW9uQmFyKTsKKy8vIEZJWE1FOiBNb3ZlIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVj
dCBzdWJjbGFzcyBhbmQgd2UgY2FuIHJlbW92ZSB0aGlzLgorV2ViSW5zcGVjdG9yLk9iamVjdC5k
ZXByZWNhdGVkQWRkQ29uc3RydWN0b3JGdW5jdGlvbnMoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25C
YXIpOwogCiBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5TdHlsZUNsYXNzTmFtZSA9ICJuYXZp
Z2F0aW9uLWJhciI7CiBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5Db2xsYXBzZWRTdHlsZUNs
YXNzTmFtZSA9ICJjb2xsYXBzZWQiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvTmF2aWdhdGlvbkl0ZW0uanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9OYXZpZ2F0aW9uSXRlbS5qcwppbmRleCAyOWMxMTI4
Li5hMzEyNTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9OYXZpZ2F0aW9uSXRlbS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9OYXZpZ2F0aW9uSXRlbS5qcwpAQCAtMjQsNyArMjQsOCBAQAogICov
CiAKIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uSXRlbSA9IGZ1bmN0aW9uKGlkZW50aWZpZXIsIHJv
bGUsIGxhYmVsKSB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIC8v
IEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBh
bmQgY2FsbCBzdXBlcigpLgorICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsK
IAogICAgIHRoaXMuX2lkZW50aWZpZXIgPSBpZGVudGlmaWVyIHx8IG51bGw7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL09iamVjdFByZXZp
ZXdWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvT2Jq
ZWN0UHJldmlld1ZpZXcuanMKaW5kZXggYzdlZDk2ZS4uYTFjYmI5MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvT2JqZWN0UHJldmlld1ZpZXcu
anMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvT2JqZWN0
UHJldmlld1ZpZXcuanMKQEAgLTI1LDcgKzI1LDggQEAKIAogV2ViSW5zcGVjdG9yLk9iamVjdFBy
ZXZpZXdWaWV3ID0gZnVuY3Rpb24ocHJldmlldywgbW9kZSkKIHsKLSAgICBXZWJJbnNwZWN0b3Iu
T2JqZWN0LmNhbGwodGhpcyk7CisgICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYklu
c3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCkuCisgICAgLy8gV2ViSW5z
cGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwogCiAgICAgY29uc29sZS5hc3NlcnQocHJldmlldyBp
bnN0YW5jZW9mIFdlYkluc3BlY3Rvci5PYmplY3RQcmV2aWV3KTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvT2JqZWN0VHJlZVZpZXcuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9PYmplY3RUcmVlVmll
dy5qcwppbmRleCA2N2VhNzI1Li4wZDU1M2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9PYmplY3RUcmVlVmlldy5qcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9PYmplY3RUcmVlVmlldy5qcwpAQCAt
MjUsNyArMjUsOCBAQAogCiBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVZpZXcgPSBmdW5jdGlvbihv
YmplY3QsIG1vZGUsIHByb3BlcnR5UGF0aCwgZm9yY2VFeHBhbmRpbmcpCiB7Ci0gICAgV2ViSW5z
cGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8g
YSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgorICAgIC8v
IFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKIAogICAgIGNvbnNvbGUuYXNzZXJ0KG9i
amVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QpOwogICAgIGNvbnNvbGUu
YXNzZXJ0KCFwcm9wZXJ0eVBhdGggfHwgcHJvcGVydHlQYXRoIGluc3RhbmNlb2YgV2ViSW5zcGVj
dG9yLlByb3BlcnR5UGF0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9Qb3BvdmVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvUG9wb3Zlci5qcwppbmRleCBlNDYwYzdiLi5mNmQ5OWM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Qb3BvdmVyLmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1BvcG92ZXIu
anMKQEAgLTI0LDcgKzI0LDggQEAKICAqLwogCiBXZWJJbnNwZWN0b3IuUG9wb3ZlciA9IGZ1bmN0
aW9uKGRlbGVnYXRlKSB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAg
IC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNz
LCBhbmQgY2FsbCBzdXBlcigpLgorICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlz
KTsKIAogICAgIHRoaXMuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKICAgICB0aGlzLl9lZGdlID0gbnVs
bDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1Byb2ZpbGVOb2RlRGF0YUdyaWROb2RlLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvUHJvZmlsZU5vZGVEYXRhR3JpZE5vZGUuanMKaW5kZXggYTYwNDFhYy4u
ZWRlMTFjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvUHJvZmlsZU5vZGVEYXRhR3JpZE5vZGUuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUHJvZmlsZU5vZGVEYXRhR3JpZE5vZGUuanMKQEAgLTM4
LDcgKzM4LDggQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVOb2RlRGF0YUdyaWROb2RlID0gZnVuY3Rp
b24ocHJvZmlsZU5vZGUsIGJhc2VTdGFydFRpbWUsIHJhbmcKICAgICB0aGlzLl9kYXRhLmxvY2F0
aW9uID0gdGhpcy5fcHJvZmlsZU5vZGUuc291cmNlQ29kZUxvY2F0aW9uOwogfTsKIAotV2ViSW5z
cGVjdG9yLk9iamVjdC5hZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhXZWJJbnNwZWN0b3IuUHJvZmls
ZU5vZGVEYXRhR3JpZE5vZGUpOworLy8gRklYTUU6IE1vdmUgdG8gYSBXZWJJbnNwZWN0b3IuT2Jq
ZWN0IHN1YmNsYXNzIGFuZCB3ZSBjYW4gcmVtb3ZlIHRoaXMuCitXZWJJbnNwZWN0b3IuT2JqZWN0
LmRlcHJlY2F0ZWRBZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhXZWJJbnNwZWN0b3IuUHJvZmlsZU5v
ZGVEYXRhR3JpZE5vZGUpOwogCiBXZWJJbnNwZWN0b3IuUHJvZmlsZU5vZGVEYXRhR3JpZE5vZGUu
SWNvblN0eWxlQ2xhc3NOYW1lID0gImljb24iOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9RdWlja0NvbnNvbGUuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9RdWlja0NvbnNvbGUuanMKaW5kZXggZTEw
YWZlYS4uNzgxNTI0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvUXVpY2tDb25zb2xlLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1F1aWNrQ29uc29sZS5qcwpAQCAtMjUsNyArMjUsOCBAQAogCiBX
ZWJJbnNwZWN0b3IuUXVpY2tDb25zb2xlID0gZnVuY3Rpb24oZWxlbWVudCkKIHsKLSAgICBXZWJJ
bnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CisgICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0
byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCkuCisgICAg
Ly8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwogCiAgICAgdGhpcy5fdG9nZ2xlT3JG
b2N1c0tleWJvYXJkU2hvcnRjdXQgPSBuZXcgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQo
bnVsbCwgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuS2V5LkVzY2FwZSwgdGhpcy5fdG9n
Z2xlT3JGb2N1cy5iaW5kKHRoaXMpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VUaW1lbGluZURhdGFHcmlkTm9kZS5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlVGltZWxp
bmVEYXRhR3JpZE5vZGUuanMKaW5kZXggOWI2YWM3ZC4uODM5MzM1NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VUaW1lbGluZURh
dGFHcmlkTm9kZS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9SZXNvdXJjZVRpbWVsaW5lRGF0YUdyaWROb2RlLmpzCkBAIC00Miw3ICs0Miw4IEBAIFdl
Ykluc3BlY3Rvci5SZXNvdXJjZVRpbWVsaW5lRGF0YUdyaWROb2RlID0gZnVuY3Rpb24ocmVzb3Vy
Y2VUaW1lbGluZVJlY29yZCwgZ3JhCiAgICAgfQogfTsKIAotV2ViSW5zcGVjdG9yLk9iamVjdC5h
ZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhXZWJJbnNwZWN0b3IuUmVzb3VyY2VUaW1lbGluZURhdGFH
cmlkTm9kZSk7CisvLyBGSVhNRTogTW92ZSB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xh
c3MgYW5kIHdlIGNhbiByZW1vdmUgdGhpcy4KK1dlYkluc3BlY3Rvci5PYmplY3QuZGVwcmVjYXRl
ZEFkZENvbnN0cnVjdG9yRnVuY3Rpb25zKFdlYkluc3BlY3Rvci5SZXNvdXJjZVRpbWVsaW5lRGF0
YUdyaWROb2RlKTsKIAogV2ViSW5zcGVjdG9yLlJlc291cmNlVGltZWxpbmVEYXRhR3JpZE5vZGUu
SWNvblN0eWxlQ2xhc3NOYW1lID0gImljb24iOwogV2ViSW5zcGVjdG9yLlJlc291cmNlVGltZWxp
bmVEYXRhR3JpZE5vZGUuRXJyb3JTdHlsZUNsYXNzTmFtZSA9ICJlcnJvciI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TY29wZUJhckl0ZW0u
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TY29wZUJhckl0
ZW0uanMKaW5kZXggNDEzOGZkYS4uZjM0MDZlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2NvcGVCYXJJdGVtLmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Njb3BlQmFySXRlbS5qcwpAQCAtMjQs
NyArMjQsOCBAQAogICovCiAKIFdlYkluc3BlY3Rvci5TY29wZUJhckl0ZW0gPSBmdW5jdGlvbihp
ZCwgbGFiZWwsIGlzRXhjbHVzaXZlKSB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRo
aXMpOworICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0
IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgorICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3Qu
Y2FsbCh0aGlzKTsKIAogICAgIHRoaXMuaWQgPSBpZDsKICAgICB0aGlzLmxhYmVsID0gbGFiZWw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9T
Y3JpcHRUaW1lbGluZURhdGFHcmlkTm9kZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1NjcmlwdFRpbWVsaW5lRGF0YUdyaWROb2RlLmpzCmluZGV4IDkxNWYy
YWYuLjY5NTViZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1NjcmlwdFRpbWVsaW5lRGF0YUdyaWROb2RlLmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NjcmlwdFRpbWVsaW5lRGF0YUdyaWROb2Rl
LmpzCkBAIC0zMyw3ICszMyw4IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZURhdGFHcmlk
Tm9kZSA9IGZ1bmN0aW9uKHNjcmlwdFRpbWVsaW5lUmVjb3JkLCBiYXNlU3RhCiAgICAgdGhpcy5f
cmFuZ2VFbmRUaW1lID0gdHlwZW9mIHJhbmdlRW5kVGltZSA9PT0gIm51bWJlciIgPyByYW5nZUVu
ZFRpbWUgOiBJbmZpbml0eTsKIH07CiAKLVdlYkluc3BlY3Rvci5PYmplY3QuYWRkQ29uc3RydWN0
b3JGdW5jdGlvbnMoV2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5lRGF0YUdyaWROb2RlKTsKKy8v
IEZJWE1FOiBNb3ZlIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcyBhbmQgd2UgY2Fu
IHJlbW92ZSB0aGlzLgorV2ViSW5zcGVjdG9yLk9iamVjdC5kZXByZWNhdGVkQWRkQ29uc3RydWN0
b3JGdW5jdGlvbnMoV2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5lRGF0YUdyaWROb2RlKTsKIAog
V2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5lRGF0YUdyaWROb2RlLkljb25TdHlsZUNsYXNzTmFt
ZSA9ICJpY29uIjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvU2VjdGlvbi5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1NlY3Rpb24uanMKaW5kZXggNTMwNWIwYi4uMWU2NGNmMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2VjdGlvbi5qcworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TZWN0aW9uLmpzCkBA
IC0yNSw3ICsyNSw4IEBACiAKIFdlYkluc3BlY3Rvci5TZWN0aW9uID0gZnVuY3Rpb24odGl0bGUs
IHN1YnRpdGxlKQogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICAv
LyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywg
YW5kIGNhbGwgc3VwZXIoKS4KKyAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7
CiAKICAgICB0aGlzLmVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAg
ICB0aGlzLmVsZW1lbnQuY2xhc3NOYW1lID0gInNlY3Rpb24iOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2lkZWJhci5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NpZGViYXIuanMKaW5kZXggZTA3YmU2
NC4uZjY3NTc3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvU2lkZWJhci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9TaWRlYmFyLmpzCkBAIC0yNCw3ICsyNCw4IEBACiAgKi8KIAogV2ViSW5zcGVj
dG9yLlNpZGViYXIgPSBmdW5jdGlvbihlbGVtZW50LCBzaWRlLCBzaWRlYmFyUGFuZWxzLCByb2xl
LCBsYWJlbCkgewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICAvLyBG
SVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5k
IGNhbGwgc3VwZXIoKS4KKyAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CiAK
ICAgICBjb25zb2xlLmFzc2VydCghc2lkZSB8fCBzaWRlID09PSBXZWJJbnNwZWN0b3IuU2lkZWJh
ci5TaWRlcy5MZWZ0IHx8IHNpZGUgPT09IFdlYkluc3BlY3Rvci5TaWRlYmFyLlNpZGVzLlJpZ2h0
KTsKICAgICB0aGlzLl9zaWRlID0gc2lkZSB8fCBXZWJJbnNwZWN0b3IuU2lkZWJhci5TaWRlcy5M
ZWZ0OwpAQCAtNTEsNyArNTIsOCBAQCBXZWJJbnNwZWN0b3IuU2lkZWJhciA9IGZ1bmN0aW9uKGVs
ZW1lbnQsIHNpZGUsIHNpZGViYXJQYW5lbHMsIHJvbGUsIGxhYmVsKSB7CiAgICAgfQogfTsKIAot
V2ViSW5zcGVjdG9yLk9iamVjdC5hZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhXZWJJbnNwZWN0b3Iu
U2lkZWJhcik7CisvLyBGSVhNRTogTW92ZSB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xh
c3MgYW5kIHdlIGNhbiByZW1vdmUgdGhpcy4KK1dlYkluc3BlY3Rvci5PYmplY3QuZGVwcmVjYXRl
ZEFkZENvbnN0cnVjdG9yRnVuY3Rpb25zKFdlYkluc3BlY3Rvci5TaWRlYmFyKTsKIAogV2ViSW5z
cGVjdG9yLlNpZGViYXIuU3R5bGVDbGFzc05hbWUgPSAic2lkZWJhciI7CiBXZWJJbnNwZWN0b3Iu
U2lkZWJhci5Db2xsYXBzZWRTdHlsZUNsYXNzTmFtZSA9ICJjb2xsYXBzZWQiOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2lkZWJhclBhbmVs
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2lkZWJhclBh
bmVsLmpzCmluZGV4IDI2ZmFiMDguLjI3Nzg0ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NpZGViYXJQYW5lbC5qcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TaWRlYmFyUGFuZWwuanMKQEAgLTI1
LDcgKzI1LDggQEAKIAogV2ViSW5zcGVjdG9yLlNpZGViYXJQYW5lbCA9IGZ1bmN0aW9uKGlkZW50
aWZpZXIsIGRpc3BsYXlOYW1lLCBzaG93VG9vbFRpcCwgaGlkZVRvb2xUaXAsIGltYWdlLCBlbGVt
ZW50LCByb2xlLCBsYWJlbCkKIHsKLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7
CisgICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3Vi
Y2xhc3MsIGFuZCBjYWxsIHN1cGVyKCkuCisgICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxs
KHRoaXMpOwogCiAgICAgdGhpcy5faWRlbnRpZmllciA9IGlkZW50aWZpZXI7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVU
ZXh0RWRpdG9yLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
U291cmNlQ29kZVRleHRFZGl0b3IuanMKaW5kZXggOTIwNzEyZWMuLjU5ODVmMTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVU
ZXh0RWRpdG9yLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1NvdXJjZUNvZGVUZXh0RWRpdG9yLmpzCkBAIC04MSw3ICs4MSw4IEBAIFdlYkluc3BlY3Rv
ci5Tb3VyY2VDb2RlVGV4dEVkaXRvciA9IGZ1bmN0aW9uKHNvdXJjZUNvZGUpCiAgICAgbmV3IFdl
Ykluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0KFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0
Lk1vZGlmaWVyLkNvbnRyb2wsICJHIiwgdGhpcy5zaG93R29Ub0xpbmVEaWFsb2cuYmluZCh0aGlz
KSwgdGhpcy5lbGVtZW50KTsKIH07CiAKLVdlYkluc3BlY3Rvci5PYmplY3QuYWRkQ29uc3RydWN0
b3JGdW5jdGlvbnMoV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yKTsKKy8vIEZJWE1F
OiBNb3ZlIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcyBhbmQgd2UgY2FuIHJlbW92
ZSB0aGlzLgorV2ViSW5zcGVjdG9yLk9iamVjdC5kZXByZWNhdGVkQWRkQ29uc3RydWN0b3JGdW5j
dGlvbnMoV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yKTsKIAogV2ViSW5zcGVjdG9y
LlNvdXJjZUNvZGVUZXh0RWRpdG9yLlN0eWxlQ2xhc3NOYW1lID0gInNvdXJjZS1jb2RlIjsKIFdl
Ykluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5MaW5lRXJyb3JTdHlsZUNsYXNzTmFtZSA9
ICJlcnJvciI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9Tb3VyY2VDb2RlVGltZWxpbmVUaW1lbGluZURhdGFHcmlkTm9kZS5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUaW1lbGluZVRp
bWVsaW5lRGF0YUdyaWROb2RlLmpzCmluZGV4IGE1MjdlNGYuLmEwMjEyMzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUaW1l
bGluZVRpbWVsaW5lRGF0YUdyaWROb2RlLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUaW1lbGluZVRpbWVsaW5lRGF0YUdyaWROb2Rl
LmpzCkBAIC0zMSw3ICszMSw4IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGltZWxpbmVUaW1l
bGluZURhdGFHcmlkTm9kZSA9IGZ1bmN0aW9uKHNvdXJjZUNvZGVUaW1lbGluCiAgICAgdGhpcy5f
c291cmNlQ29kZVRpbWVsaW5lLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5l
LkV2ZW50LlJlY29yZEFkZGVkLCB0aGlzLl90aW1lbGluZVJlY29yZEFkZGVkLCB0aGlzKTsKIH07
CiAKLVdlYkluc3BlY3Rvci5PYmplY3QuYWRkQ29uc3RydWN0b3JGdW5jdGlvbnMoV2ViSW5zcGVj
dG9yLlNvdXJjZUNvZGVUaW1lbGluZVRpbWVsaW5lRGF0YUdyaWROb2RlKTsKKy8vIEZJWE1FOiBN
b3ZlIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcyBhbmQgd2UgY2FuIHJlbW92ZSB0
aGlzLgorV2ViSW5zcGVjdG9yLk9iamVjdC5kZXByZWNhdGVkQWRkQ29uc3RydWN0b3JGdW5jdGlv
bnMoV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUaW1lbGluZVRpbWVsaW5lRGF0YUdyaWROb2RlKTsK
IAogV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUaW1lbGluZVRpbWVsaW5lRGF0YUdyaWROb2RlLnBy
b3RvdHlwZSA9IHsKICAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUaW1l
bGluZVRpbWVsaW5lRGF0YUdyaWROb2RlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGV4dEVkaXRvci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RleHRFZGl0b3IuanMKaW5kZXggYjdiNzg3OC4uM2Vm
MzhiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvVGV4dEVkaXRvci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9UZXh0RWRpdG9yLmpzCkBAIC0yNSw3ICsyNSw4IEBACiAKIFdlYkluc3BlY3Rvci5U
ZXh0RWRpdG9yID0gZnVuY3Rpb24oZWxlbWVudCwgbWltZVR5cGUsIGRlbGVnYXRlKQogewotICAg
IFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICAvLyBGSVhNRTogQ29udmVydCB0
aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4K
KyAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CiAKICAgICB2YXIgdGV4dCA9
IChlbGVtZW50ID8gZWxlbWVudC50ZXh0Q29udGVudCA6ICIiKTsKICAgICB0aGlzLl9lbGVtZW50
ID0gZWxlbWVudCB8fCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKQEAgLTY5LDcgKzcw
LDggQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3IgPSBmdW5jdGlvbihlbGVtZW50LCBtaW1lVHlw
ZSwgZGVsZWdhdGUpCiAgICAgdGhpcy5fZGVsZWdhdGUgPSBkZWxlZ2F0ZSB8fCBudWxsOwogfTsK
IAotV2ViSW5zcGVjdG9yLk9iamVjdC5hZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhXZWJJbnNwZWN0
b3IuVGV4dEVkaXRvcik7CisvLyBGSVhNRTogTW92ZSB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qg
c3ViY2xhc3MgYW5kIHdlIGNhbiByZW1vdmUgdGhpcy4KK1dlYkluc3BlY3Rvci5PYmplY3QuZGVw
cmVjYXRlZEFkZENvbnN0cnVjdG9yRnVuY3Rpb25zKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yKTsK
IAogV2ViSW5zcGVjdG9yLlRleHRFZGl0b3IuU3R5bGVDbGFzc05hbWUgPSAidGV4dC1lZGl0b3Ii
OwogV2ViSW5zcGVjdG9yLlRleHRFZGl0b3IuSGlnaGxpZ2h0ZWRTdHlsZUNsYXNzTmFtZSA9ICJo
aWdobGlnaHRlZCI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9UaW1lbGluZURhdGFHcmlkTm9kZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lRGF0YUdyaWROb2RlLmpzCmluZGV4IGRhN2Qz
YTYuLjIyZTNiYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1RpbWVsaW5lRGF0YUdyaWROb2RlLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lRGF0YUdyaWROb2RlLmpzCkBAIC0zOCw3
ICszOCw4IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZURhdGFHcmlkTm9kZSA9IGZ1bmN0aW9uKGdy
YXBoT25seSwgZ3JhcGhEYXRhU291cmNlLCBoYXNDaGlsCiAgICAgfQogfTsKIAotV2ViSW5zcGVj
dG9yLk9iamVjdC5hZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhXZWJJbnNwZWN0b3IuVGltZWxpbmVE
YXRhR3JpZE5vZGUpOworLy8gRklYTUU6IE1vdmUgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1
YmNsYXNzIGFuZCB3ZSBjYW4gcmVtb3ZlIHRoaXMuCitXZWJJbnNwZWN0b3IuT2JqZWN0LmRlcHJl
Y2F0ZWRBZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhXZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3Jp
ZE5vZGUpOwogCiBXZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZE5vZGUucHJvdG90eXBlID0g
ewogICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZE5vZGUsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1l
bGluZU92ZXJ2aWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvVGltZWxpbmVPdmVydmlldy5qcwppbmRleCA5MDExYmJiLi41ODJiZThmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZU92ZXJ2
aWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Rp
bWVsaW5lT3ZlcnZpZXcuanMKQEAgLTI1LDcgKzI1LDggQEAKIAogV2ViSW5zcGVjdG9yLlRpbWVs
aW5lT3ZlcnZpZXcgPSBmdW5jdGlvbih0aW1lbGluZVJlY29yZGluZykKIHsKLSAgICBXZWJJbnNw
ZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CisgICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBh
IFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCkuCisgICAgLy8g
V2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwogCiAgICAgdGhpcy5fcmVjb3JkaW5nID0g
dGltZWxpbmVSZWNvcmRpbmc7CiAgICAgdGhpcy5fcmVjb3JkaW5nLmFkZEV2ZW50TGlzdGVuZXIo
V2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nLkV2ZW50LlRpbWVsaW5lQWRkZWQsIHRoaXMu
X3RpbWVsaW5lQWRkZWQsIHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVPdmVydmlld0dyYXBoLmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVPdmVydmlld0dyYXBoLmpz
CmluZGV4IDg4MzM2OTUuLjcxOWQ5ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lT3ZlcnZpZXdHcmFwaC5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZU92ZXJ2aWV3R3Jh
cGguanMKQEAgLTQ5LDcgKzQ5LDggQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdHcmFw
aCA9IGZ1bmN0aW9uKHRpbWVsaW5lKQogICAgIC8vIENvbmNyZXRlIG9iamVjdCBpbnN0YW50aWF0
aW9uLgogICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuY29uc3RydWN0b3IgIT09IFdlYkluc3BlY3Rv
ci5UaW1lbGluZU92ZXJ2aWV3R3JhcGggJiYgdGhpcyBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5U
aW1lbGluZU92ZXJ2aWV3R3JhcGgpOwogCi0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRo
aXMpOworICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0
IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgorICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3Qu
Y2FsbCh0aGlzKTsKIAogICAgIHRoaXMuZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImRpdiIpOwogICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5UaW1l
bGluZU92ZXJ2aWV3R3JhcGguU3R5bGVDbGFzc05hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVSZWNvcmRCYXIuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVJlY29yZEJh
ci5qcwppbmRleCBlMDRjMWNhLi41N2ZjODcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVJlY29yZEJhci5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVJlY29yZEJhci5q
cwpAQCAtMjUsNyArMjUsOCBAQAogCiBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRCYXIgPSBm
dW5jdGlvbihyZWNvcmRzLCByZW5kZXJNb2RlKQogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3Qu
Y2FsbCh0aGlzKTsKKyAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9y
Lk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KKyAgICAvLyBXZWJJbnNwZWN0b3Iu
T2JqZWN0LmNhbGwodGhpcyk7CiAKICAgICB0aGlzLl9lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiZGl2Iik7CiAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3Bl
Y3Rvci5UaW1lbGluZVJlY29yZEJhci5TdHlsZUNsYXNzTmFtZSk7CkBAIC0zNCw3ICszNSw4IEBA
IFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZEJhciA9IGZ1bmN0aW9uKHJlY29yZHMsIHJlbmRl
ck1vZGUpCiAgICAgdGhpcy5yZWNvcmRzID0gcmVjb3JkczsKIH07CiAKLVdlYkluc3BlY3Rvci5P
YmplY3QuYWRkQ29uc3RydWN0b3JGdW5jdGlvbnMoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3Jk
QmFyKTsKKy8vIEZJWE1FOiBNb3ZlIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcyBh
bmQgd2UgY2FuIHJlbW92ZSB0aGlzLgorV2ViSW5zcGVjdG9yLk9iamVjdC5kZXByZWNhdGVkQWRk
Q29uc3RydWN0b3JGdW5jdGlvbnMoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkQmFyKTsKIAog
V2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkQmFyLlN0eWxlQ2xhc3NOYW1lID0gInRpbWVsaW5l
LXJlY29yZC1iYXIiOwogV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkQmFyLkJhclNlZ21lbnRT
dHlsZUNsYXNzTmFtZSA9ICJzZWdtZW50IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lUmVjb3JkRnJhbWUuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVJlY29yZEZyYW1lLmpz
CmluZGV4IDk5OTAyZmYuLjgwMjc5MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lUmVjb3JkRnJhbWUuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVSZWNvcmRGcmFtZS5q
cwpAQCAtMjUsNyArMjUsOCBAQAogCiBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRGcmFtZSA9
IGZ1bmN0aW9uKGdyYXBoRGF0YVNvdXJjZSwgcmVjb3JkcykKIHsKLSAgICBXZWJJbnNwZWN0b3Iu
T2JqZWN0LmNhbGwodGhpcyk7CisgICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYklu
c3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCkuCisgICAgLy8gV2ViSW5z
cGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwogCiAgICAgdGhpcy5fZWxlbWVudCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChX
ZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRGcmFtZS5TdHlsZUNsYXNzTmFtZSk7CkBAIC0zNCw3
ICszNSw4IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZEZyYW1lID0gZnVuY3Rpb24oZ3Jh
cGhEYXRhU291cmNlLCByZWNvcmRzKQogICAgIHRoaXMucmVjb3JkcyA9IHJlY29yZHMgfHwgW107
CiB9OwogCi1XZWJJbnNwZWN0b3IuT2JqZWN0LmFkZENvbnN0cnVjdG9yRnVuY3Rpb25zKFdlYklu
c3BlY3Rvci5UaW1lbGluZVJlY29yZEZyYW1lKTsKKy8vIEZJWE1FOiBNb3ZlIHRvIGEgV2ViSW5z
cGVjdG9yLk9iamVjdCBzdWJjbGFzcyBhbmQgd2UgY2FuIHJlbW92ZSB0aGlzLgorV2ViSW5zcGVj
dG9yLk9iamVjdC5kZXByZWNhdGVkQWRkQ29uc3RydWN0b3JGdW5jdGlvbnMoV2ViSW5zcGVjdG9y
LlRpbWVsaW5lUmVjb3JkRnJhbWUpOwogCiBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRGcmFt
ZS5TdHlsZUNsYXNzTmFtZSA9ICJ0aW1lbGluZS1yZWNvcmQtZnJhbWUiOwogV2ViSW5zcGVjdG9y
LlRpbWVsaW5lUmVjb3JkRnJhbWUuU2l4dHlGcHNGcmFtZUJ1ZGdldCA9IDAuMDE2NjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5l
UnVsZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1l
bGluZVJ1bGVyLmpzCmluZGV4IDBhMWQ2ZmIuLmJlMTIwZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lUnVsZXIuanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVSdWxlci5q
cwpAQCAtMjUsNyArMjUsOCBAQAogCiBXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlciA9IGZ1bmN0
aW9uKCkKIHsKLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CisgICAgLy8gRklY
TUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBj
YWxsIHN1cGVyKCkuCisgICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwogCiAg
ICAgdGhpcy5fZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgIHRo
aXMuX2VsZW1lbnQuY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIuU3R5bGVD
bGFzc05hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9Ub29sYmFyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvVG9vbGJhci5qcwppbmRleCBhNmFiMWZkLi5lNmZlNzBhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Ub29sYmFyLmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Rvb2xiYXIuanMKQEAgLTUw
LDcgKzUwLDggQEAgV2ViSW5zcGVjdG9yLlRvb2xiYXIgPSBmdW5jdGlvbihlbGVtZW50LCBuYXZp
Z2F0aW9uSXRlbXMpIHsKICAgICB0aGlzLl9lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNvbnRl
eHRtZW51IiwgdGhpcy5faGFuZGxlQ29udGV4dE1lbnVFdmVudC5iaW5kKHRoaXMpLCBmYWxzZSk7
CiB9OwogCi1XZWJJbnNwZWN0b3IuT2JqZWN0LmFkZENvbnN0cnVjdG9yRnVuY3Rpb25zKFdlYklu
c3BlY3Rvci5Ub29sYmFyKTsKKy8vIEZJWE1FOiBNb3ZlIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVj
dCBzdWJjbGFzcyBhbmQgd2UgY2FuIHJlbW92ZSB0aGlzLgorV2ViSW5zcGVjdG9yLk9iamVjdC5k
ZXByZWNhdGVkQWRkQ29uc3RydWN0b3JGdW5jdGlvbnMoV2ViSW5zcGVjdG9yLlRvb2xiYXIpOwog
CiBXZWJJbnNwZWN0b3IuVG9vbGJhci5TdHlsZUNsYXNzTmFtZSA9ICJ0b29sYmFyIjsKIFdlYklu
c3BlY3Rvci5Ub29sYmFyLkNvbnRyb2xTZWN0aW9uU3R5bGVDbGFzc05hbWUgPSAiY29udHJvbC1z
ZWN0aW9uIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1RyZWVFbGVtZW50U3RhdHVzQnV0dG9uLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvVHJlZUVsZW1lbnRTdGF0dXNCdXR0b24uanMKaW5kZXggNDRi
ZTU2OS4uNTZjMTQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvVHJlZUVsZW1lbnRTdGF0dXNCdXR0b24uanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVHJlZUVsZW1lbnRTdGF0dXNCdXR0b24uanMK
QEAgLTI0LDcgKzI0LDggQEAKICAqLwogCiBXZWJJbnNwZWN0b3IuVHJlZUVsZW1lbnRTdGF0dXNC
dXR0b24gPSBmdW5jdGlvbihlbGVtZW50KSB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxs
KHRoaXMpOworICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2Jq
ZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgorICAgIC8vIFdlYkluc3BlY3Rvci5PYmpl
Y3QuY2FsbCh0aGlzKTsKIAogICAgIGNvbnNvbGUuYXNzZXJ0KGVsZW1lbnQpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UcmVlT3V0bGlu
ZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVPdXRs
aW5lLmpzCmluZGV4IDA3NmM3MDAuLjI3Y2IwNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVPdXRsaW5lLmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVPdXRsaW5lLmpzCkBAIC0yOCw3
ICsyOCw4IEBACiAKIGZ1bmN0aW9uIFRyZWVPdXRsaW5lKGxpc3ROb2RlKQogewotICAgIFdlYklu
c3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRv
IGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KKyAgICAv
LyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CiAKICAgICB0aGlzLmVsZW1lbnQgPSBs
aXN0Tm9kZTsKIApAQCAtNTAzLDcgKzUwNCw4IEBAIFRyZWVPdXRsaW5lLnByb3RvdHlwZS5fX3By
b3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsKIAogZnVuY3Rpb24gVHJlZUVs
ZW1lbnQodGl0bGUsIHJlcHJlc2VudGVkT2JqZWN0LCBoYXNDaGlsZHJlbikKIHsKLSAgICBXZWJJ
bnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CisgICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0
byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCkuCisgICAg
Ly8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwogCiAgICAgdGhpcy5fdGl0bGUgPSB0
aXRsZTsKICAgICB0aGlzLnJlcHJlc2VudGVkT2JqZWN0ID0gKHJlcHJlc2VudGVkT2JqZWN0IHx8
IHt9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1RyZWVPdXRsaW5lRGF0YUdyaWRTeW5jaHJvbml6ZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UcmVlT3V0bGluZURhdGFHcmlkU3luY2hyb25pemVy
LmpzCmluZGV4IDM5MWZkNTAuLmFlOWY4NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVPdXRsaW5lRGF0YUdyaWRTeW5jaHJvbml6ZXIu
anMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVHJlZU91
dGxpbmVEYXRhR3JpZFN5bmNocm9uaXplci5qcwpAQCAtMjUsNyArMjUsOCBAQAogCiBXZWJJbnNw
ZWN0b3IuVHJlZU91dGxpbmVEYXRhR3JpZFN5bmNocm9uaXplciA9IGZ1bmN0aW9uKHRyZWVPdXRs
aW5lLCBkYXRhR3JpZCwgZGVsZWdhdGUpCiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxs
KHRoaXMpOworICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2Jq
ZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgorICAgIC8vIFdlYkluc3BlY3Rvci5PYmpl
Y3QuY2FsbCh0aGlzKTsKIAogICAgIHRoaXMuX3RyZWVPdXRsaW5lID0gdHJlZU91dGxpbmU7CiAg
ICAgdGhpcy5fZGF0YUdyaWQgPSBkYXRhR3JpZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1R5cGVUb2tlblZpZXcuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UeXBlVG9rZW5WaWV3LmpzCmluZGV4IDli
MmQ5Y2UuLjRkZTI4MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1R5cGVUb2tlblZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvVHlwZVRva2VuVmlldy5qcwpAQCAtMjcsNyArMjcsOCBAQCBX
ZWJJbnNwZWN0b3IuVHlwZVRva2VuVmlldyA9IGZ1bmN0aW9uKHRva2VuQW5ub3RhdG9yLCBzaG91
bGRIYXZlUmlnaHRNYXJnaW4sIHNobwogewogICAgIGNvbnNvbGUuYXNzZXJ0KHRpdGxlVHlwZSA9
PT0gV2ViSW5zcGVjdG9yLlR5cGVUb2tlblZpZXcuVGl0bGVUeXBlLlZhcmlhYmxlICB8fCB0aXRs
ZVR5cGUgPT09IFdlYkluc3BlY3Rvci5UeXBlVG9rZW5WaWV3LlRpdGxlVHlwZS5SZXR1cm5TdGF0
ZW1lbnQpOwogCi0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIC8vIEZJ
WE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQg
Y2FsbCBzdXBlcigpLgorICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKIAog
ICAgIHZhciBzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwogICAgIHNwYW4u
Y2xhc3NMaXN0LmFkZCgidHlwZS10b2tlbiIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249042</attachid>
            <date>2015-03-19 11:44:56 -0700</date>
            <delta_ts>2015-03-19 15:05:53 -0700</delta_ts>
            <desc>[PATCH] Easier to Review - Ignores Whitespace</desc>
            <filename>ignoring-whitespace.patch</filename>
            <type>text/plain</type>
            <size>426824</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3MjFiM2IwLi43MWUxZjNmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTUtMDMt
MTkgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIg
SW5zcGVjdG9yOiBBZG9wdCBFUzYgQ2xhc3MgU3ludGF4IGZvciBhbGwgTW9kZWwgT2JqZWN0cwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyODU4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0
b3IvbW9kZWwvcGFyc2Utc2NyaXB0LXN5bnRheC10cmVlLmh0bWw6CisKIDIwMTUtMDMtMTggIEpv
c2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBFUzYgQ2xhc3Nl
czogRXh0ZW5kcyBzaG91bGQgYWNjZXB0IGFuIGV4cHJlc3Npb24gd2l0aG91dCBwYXJlbnRoZXNp
cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL21vZGVsL3BhcnNlLXNjcmlwdC1z
eW50YXgtdHJlZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL21vZGVsL3BhcnNlLXNjcmlw
dC1zeW50YXgtdHJlZS5odG1sCmluZGV4IDExMDEyODIuLjM5MmU2MzMgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9tb2RlbC9wYXJzZS1zY3JpcHQtc3ludGF4LXRyZWUuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbW9kZWwvcGFyc2Utc2NyaXB0LXN5bnRheC10cmVl
Lmh0bWwKQEAgLTcsNyArNyw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogewogICAgIGZ1bmN0aW9uIG1h
a2VOb2RlKHRleHQsIGlzRXhwcmVzc2lvbikKICAgICB7Ci0gICAgICAgIHZhciBzY3JpcHQgPSBu
ZXcgV2ViSW5zcGVjdG9yLlNjcmlwdCgxLCBXZWJJbnNwZWN0b3IuVGV4dFJhbmdlKDAsIHRleHQu
bGVuZ3RoKSk7CisgICAgICAgIHZhciBzY3JpcHQgPSBuZXcgV2ViSW5zcGVjdG9yLlNjcmlwdCgx
LCBuZXcgV2ViSW5zcGVjdG9yLlRleHRSYW5nZSgwLCB0ZXh0Lmxlbmd0aCkpOwogICAgICAgICB2
YXIgc2NyaXB0U3ludGF4VHJlZSA9IG5ldyBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZSh0
ZXh0LCBzY3JpcHQpOwogICAgICAgICB2YXIgc3ludGF4VHJlZSA9IHNjcmlwdFN5bnRheFRyZWUu
X3N5bnRheFRyZWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IGM3ZTc0NzMuLjYwNTNi
YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE1LTAzLTE5
ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogQWRvcHQgRVM2IENsYXNzIFN5bnRheCBmb3IgYWxsIE1vZGVsIE9iamVjdHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0Mjg1OAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVXNlckludGVy
ZmFjZS8qKi8qLmpzOgorICAgICAgICBBbG1vc3QgZXZlcnkgSmF2YVNjcmlwdCBmaWxlIGlzIHRv
dWNoZWQuCisKIDIwMTUtMDMtMTggIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNv
bT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBSZXBsYWNlIGxhc3QgdXNlIG9mIE9iamVjdFBy
b3BlcnRpZXNTZWN0aW9uIHdpdGggT2JqZWN0VHJlZVZpZXcKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvT2JqZWN0LmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9PYmplY3QuanMKaW5kZXggNTE0YWVmMy4uYmVh
M2QzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFz
ZS9PYmplY3QuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFz
ZS9PYmplY3QuanMKQEAgLTIzLDI0ICsyMywxNiBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1X
ZWJJbnNwZWN0b3IuT2JqZWN0ID0gZnVuY3Rpb24oKQorV2ViSW5zcGVjdG9yLk9iamVjdCA9IGNs
YXNzIE9iamVjdAogewotfTsKLQotV2ViSW5zcGVjdG9yLk9iamVjdC5hZGRDb25zdHJ1Y3RvckZ1
bmN0aW9ucyA9IGZ1bmN0aW9uKHN1YmNsYXNzQ29uc3RydWN0b3IpCisgICAgY29uc3RydWN0b3Io
KQogICAgIHsKLSAgICAvLyBDb3BpZXMgdGhlIHJlbGV2YW50IGZ1bmN0aW9ucyB0aGUgc3ViY2xh
c3MgY29uc3RydWN0b3IuCi0gICAgZm9yICh2YXIgcHJvcGVydHkgaW4gV2ViSW5zcGVjdG9yLk9i
amVjdCkgewotICAgICAgICB2YXIgdmFsdWUgPSBXZWJJbnNwZWN0b3IuT2JqZWN0W3Byb3BlcnR5
XTsKLSAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gImZ1bmN0aW9uIikKLSAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICBpZiAodmFsdWUgPT09IGFyZ3VtZW50cy5jYWxsZWUpCi0gICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgc3ViY2xhc3NDb25zdHJ1Y3Rvcltwcm9wZXJ0eV0g
PSB2YWx1ZTsKKyAgICAgICAgLy8gRklYTUU6IFJlbW92ZSBvbmNlIDxodHRwczovL3dlYmtpdC5v
cmcvYi8xNDI4NjI+IGlzIGZpeGVkLgogICAgIH0KLX07CiAKLVdlYkluc3BlY3Rvci5PYmplY3Qu
YWRkRXZlbnRMaXN0ZW5lciA9IGZ1bmN0aW9uKGV2ZW50VHlwZSwgbGlzdGVuZXIsIHRoaXNPYmpl
Y3QpCisgICAgLy8gU3RhdGljCisKKyAgICBzdGF0aWMgYWRkRXZlbnRMaXN0ZW5lcihldmVudFR5
cGUsIGxpc3RlbmVyLCB0aGlzT2JqZWN0KQogICAgIHsKICAgICAgICAgdGhpc09iamVjdCA9IHRo
aXNPYmplY3QgfHwgbnVsbDsKIApAQCAtNjYsOSArNTgsOSBAQCBXZWJJbnNwZWN0b3IuT2JqZWN0
LmFkZEV2ZW50TGlzdGVuZXIgPSBmdW5jdGlvbihldmVudFR5cGUsIGxpc3RlbmVyLCB0aGlzT2Jq
ZWN0KQogICAgICAgICB9CiAKICAgICAgICAgbGlzdGVuZXJzLnB1c2goe3RoaXNPYmplY3QsIGxp
c3RlbmVyfSk7Ci19OworICAgIH0KIAotV2ViSW5zcGVjdG9yLk9iamVjdC5yZW1vdmVFdmVudExp
c3RlbmVyID0gZnVuY3Rpb24oZXZlbnRUeXBlLCBsaXN0ZW5lciwgdGhpc09iamVjdCkKKyAgICBz
dGF0aWMgcmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGxpc3RlbmVyLCB0aGlzT2JqZWN0
KQogICAgIHsKICAgICAgICAgZXZlbnRUeXBlID0gZXZlbnRUeXBlIHx8IG51bGw7CiAgICAgICAg
IGxpc3RlbmVyID0gbGlzdGVuZXIgfHwgbnVsbDsKQEAgLTk5LDMyICs5MSwyOCBAQCBXZWJJbnNw
ZWN0b3IuT2JqZWN0LnJlbW92ZUV2ZW50TGlzdGVuZXIgPSBmdW5jdGlvbihldmVudFR5cGUsIGxp
c3RlbmVyLCB0aGlzT2JqZQogCiAgICAgICAgIGlmICghT2JqZWN0LmtleXModGhpcy5fbGlzdGVu
ZXJzKS5sZW5ndGgpCiAgICAgICAgICAgICBkZWxldGUgdGhpcy5fbGlzdGVuZXJzOwotfTsKKyAg
ICB9CiAKLVdlYkluc3BlY3Rvci5PYmplY3QucmVtb3ZlQWxsTGlzdGVuZXJzID0gZnVuY3Rpb24o
KQorICAgIHN0YXRpYyByZW1vdmVBbGxMaXN0ZW5lcnMoKQogICAgIHsKICAgICAgICAgZGVsZXRl
IHRoaXMuX2xpc3RlbmVyczsKLX07CisgICAgfQogCi1XZWJJbnNwZWN0b3IuT2JqZWN0Lmhhc0V2
ZW50TGlzdGVuZXJzID0gZnVuY3Rpb24oZXZlbnRUeXBlKQorICAgIHN0YXRpYyBoYXNFdmVudExp
c3RlbmVycyhldmVudFR5cGUpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX2xpc3RlbmVycyB8
fCAhdGhpcy5fbGlzdGVuZXJzW2V2ZW50VHlwZV0pCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIHJldHVybiB0cnVlOwotfTsKKyAgICB9CiAKLVdlYkluc3BlY3Rvci5PYmplY3Qu
cHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuT2JqZWN0LAorICAg
IC8vIFB1YmxpYwogCi0gICAgYWRkRXZlbnRMaXN0ZW5lcjogV2ViSW5zcGVjdG9yLk9iamVjdC5h
ZGRFdmVudExpc3RlbmVyLAorICAgIGFkZEV2ZW50TGlzdGVuZXIoKSB7IHJldHVybiBXZWJJbnNw
ZWN0b3IuT2JqZWN0LmFkZEV2ZW50TGlzdGVuZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfQor
ICAgIHJlbW92ZUV2ZW50TGlzdGVuZXIoKSB7IHJldHVybiBXZWJJbnNwZWN0b3IuT2JqZWN0LnJl
bW92ZUV2ZW50TGlzdGVuZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfQorICAgIHJlbW92ZUFs
bExpc3RlbmVycygpIHsgcmV0dXJuIFdlYkluc3BlY3Rvci5PYmplY3QucmVtb3ZlQWxsTGlzdGVu
ZXJzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH0KKyAgICBoYXNFdmVudExpc3RlbmVycygpIHsg
cmV0dXJuIFdlYkluc3BlY3Rvci5PYmplY3QuaGFzRXZlbnRMaXN0ZW5lcnMuYXBwbHkodGhpcywg
YXJndW1lbnRzKTsgfQogCi0gICAgcmVtb3ZlRXZlbnRMaXN0ZW5lcjogV2ViSW5zcGVjdG9yLk9i
amVjdC5yZW1vdmVFdmVudExpc3RlbmVyLAotCi0gICAgcmVtb3ZlQWxsTGlzdGVuZXJzOiBXZWJJ
bnNwZWN0b3IuT2JqZWN0LnJlbW92ZUFsbExpc3RlbmVycywKLQotICAgIGhhc0V2ZW50TGlzdGVu
ZXJzOiBXZWJJbnNwZWN0b3IuT2JqZWN0Lmhhc0V2ZW50TGlzdGVuZXJzLAotCi0gICAgZGlzcGF0
Y2hFdmVudFRvTGlzdGVuZXJzOiBmdW5jdGlvbihldmVudFR5cGUsIGV2ZW50RGF0YSkKKyAgICBk
aXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoZXZlbnRUeXBlLCBldmVudERhdGEpCiAgICAgewogICAg
ICAgICB2YXIgZXZlbnQgPSBuZXcgV2ViSW5zcGVjdG9yLkV2ZW50KHRoaXMsIGV2ZW50VHlwZSwg
ZXZlbnREYXRhKTsKIApAQCAtMTY1LDI0ICsxNTMsMzggQEAgV2ViSW5zcGVjdG9yLk9iamVjdC5w
cm90b3R5cGUgPSB7CiAgICAgfQogfTsKIAotV2ViSW5zcGVjdG9yLkV2ZW50ID0gZnVuY3Rpb24o
dGFyZ2V0LCB0eXBlLCBkYXRhKQorLy8gRklYTUU6IFVzZXMgYXJndW1lbnRzLmNhbGxlZSwgc28g
aXQgY2Fubm90IGJlIGluIHRoZSBjbGFzcy4KK1dlYkluc3BlY3Rvci5PYmplY3QuZGVwcmVjYXRl
ZEFkZENvbnN0cnVjdG9yRnVuY3Rpb25zID0gZnVuY3Rpb24oc3ViY2xhc3NDb25zdHJ1Y3RvcikK
K3sKKyAgICAvLyBDb3BpZXMgdGhlIHJlbGV2YW50IGZ1bmN0aW9ucyB0byB0aGUgc3ViY2xhc3Mg
Y29uc3RydWN0b3IuCisgICAgdmFyIGxpc3QgPSBbImFkZEV2ZW50TGlzdGVuZXIiLCAicmVtb3Zl
RXZlbnRMaXN0ZW5lciIsICJyZW1vdmVBbGxMaXN0ZW5lcnMiLCAiaGFzRXZlbnRMaXN0ZW5lcnMi
XTsKKyAgICBmb3IgKHZhciBwcm9wZXJ0eSBvZiBsaXN0KSB7CisgICAgICAgIHZhciB2YWx1ZSA9
IFdlYkluc3BlY3Rvci5PYmplY3RbcHJvcGVydHldOworICAgICAgICBpZiAodHlwZW9mIHZhbHVl
ICE9PSAiZnVuY3Rpb24iKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmICh2YWx1
ZSA9PT0gYXJndW1lbnRzLmNhbGxlZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBz
dWJjbGFzc0NvbnN0cnVjdG9yW3Byb3BlcnR5XSA9IHZhbHVlOworICAgIH0KK307CisKK1dlYklu
c3BlY3Rvci5FdmVudCA9IGNsYXNzIEV2ZW50Cit7CisgICAgY29uc3RydWN0b3IodGFyZ2V0LCB0
eXBlLCBkYXRhKQogICAgIHsKICAgICAgICAgdGhpcy50YXJnZXQgPSB0YXJnZXQ7CiAgICAgICAg
IHRoaXMudHlwZSA9IHR5cGU7CiAgICAgICAgIHRoaXMuZGF0YSA9IGRhdGE7CiAgICAgICAgIHRo
aXMuZGVmYXVsdFByZXZlbnRlZCA9IGZhbHNlOwogICAgICAgICB0aGlzLl9zdG9wcGVkUHJvcGFn
YXRpb24gPSBmYWxzZTsKLX07CisgICAgfQogCi1XZWJJbnNwZWN0b3IuRXZlbnQucHJvdG90eXBl
ID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuRXZlbnQsCi0KLSAgICBzdG9wUHJv
cGFnYXRpb246IGZ1bmN0aW9uKCkKKyAgICBzdG9wUHJvcGFnYXRpb24oKQogICAgIHsKICAgICAg
ICAgdGhpcy5fc3RvcHBlZFByb3BhZ2F0aW9uID0gdHJ1ZTsKLSAgICB9LAorICAgIH0KIAotICAg
IHByZXZlbnREZWZhdWx0OiBmdW5jdGlvbigpCisgICAgcHJldmVudERlZmF1bHQoKQogICAgIHsK
ICAgICAgICAgdGhpcy5kZWZhdWx0UHJldmVudGVkID0gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL1Rlc3QuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL1Rlc3QuanMKaW5kZXggZWExY2Vi
Ny4uMjczMjA3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvQmFzZS9UZXN0LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L0Jhc2UvVGVzdC5qcwpAQCAtMTAzLDcgKzEwMyw4IEBAIEluc3BlY3RvclRlc3QuZHVtcE1lc3Nh
Z2VzVG9Db25zb2xlID0gZmFsc2U7CiAvLyBwcm90b3R5cGUsIGFuZCBwcm90b3R5cGUgY2hhaW4g
Zm9yIHRoZSBzaW5nbGV0b24gSW5zcGVjdG9yVGVzdC4KIEluc3BlY3RvclRlc3QuRXZlbnREaXNw
YXRjaGVyID0gZnVuY3Rpb24oKQogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlz
KTsKKyAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBz
dWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KKyAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNh
bGwodGhpcyk7CiB9OwogCiBJbnNwZWN0b3JUZXN0LkV2ZW50RGlzcGF0Y2hlci5FdmVudCA9IHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xs
ZXJzL0FuYWx5emVyTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0NvbnRyb2xsZXJzL0FuYWx5emVyTWFuYWdlci5qcwppbmRleCAwOGNmMTYyLi4zZGMxMWYx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9s
bGVycy9BbmFseXplck1hbmFnZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvQ29udHJvbGxlcnMvQW5hbHl6ZXJNYW5hZ2VyLmpzCkBAIC0yNSw3ICsyNSw4IEBA
CiAKIFdlYkluc3BlY3Rvci5BbmFseXplck1hbmFnZXIgPSBmdW5jdGlvbigpCiB7Ci0gICAgV2Vi
SW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMg
dG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgorICAg
IC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKIAogICAgIHRoaXMuX2VzbGludENv
bmZpZyA9IHsKICAgICAgICAgZW52OiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9Bbm5vdGF0b3IuanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9Bbm5vdGF0b3IuanMKaW5kZXggZDM2
MzQ5MS4uMTYwMjc1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvQ29udHJvbGxlcnMvQW5ub3RhdG9yLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0Fubm90YXRvci5qcwpAQCAtMjYsNyArMjYsOCBA
QAogCiBXZWJJbnNwZWN0b3IuQW5ub3RhdG9yID0gZnVuY3Rpb24oc291cmNlQ29kZVRleHRFZGl0
b3IpCiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIC8vIEZJWE1F
OiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2Fs
bCBzdXBlcigpLgorICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKIAogICAg
IGNvbnNvbGUuYXNzZXJ0KHNvdXJjZUNvZGVUZXh0RWRpdG9yIGluc3RhbmNlb2YgV2ViSW5zcGVj
dG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLCBzb3VyY2VDb2RlVGV4dEVkaXRvcik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0Fw
cGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvQ29udHJvbGxlcnMvQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuanMKaW5kZXggZThhMDdi
ZS4uOGRhNjQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvQ29udHJvbGxlcnMvQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQXBwbGljYXRpb25DYWNoZU1h
bmFnZXIuanMKQEAgLTI1LDcgKzI1LDggQEAKIAogV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2Fj
aGVNYW5hZ2VyID0gZnVuY3Rpb24oKQogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0
aGlzKTsKKyAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVj
dCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KKyAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0
LmNhbGwodGhpcyk7CiAKICAgICBpZiAod2luZG93LkFwcGxpY2F0aW9uQ2FjaGVBZ2VudCkKICAg
ICAgICAgQXBwbGljYXRpb25DYWNoZUFnZW50LmVuYWJsZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQnJhbmNoTWFuYWdlci5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0JyYW5j
aE1hbmFnZXIuanMKaW5kZXggNjdlY2RiMi4uYjMyMzVlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQnJhbmNoTWFuYWdlci5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9CcmFu
Y2hNYW5hZ2VyLmpzCkBAIC0yNSw3ICsyNSw4IEBACiAKIFdlYkluc3BlY3Rvci5CcmFuY2hNYW5h
Z2VyID0gZnVuY3Rpb24oKQogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsK
KyAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJj
bGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KKyAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwo
dGhpcyk7CiAKICAgICBXZWJJbnNwZWN0b3IuRnJhbWUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNw
ZWN0b3IuRnJhbWUuRXZlbnQuTWFpblJlc291cmNlRGlkQ2hhbmdlLCB0aGlzLl9tYWluUmVzb3Vy
Y2VEaWRDaGFuZ2UsIHRoaXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Db250cm9sbGVycy9DU1NTdHlsZU1hbmFnZXIuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9DU1NTdHlsZU1hbmFnZXIuanMK
aW5kZXggN2VlYWUzNTAuLmZhNmUyZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0NTU1N0eWxlTWFuYWdlci5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9DU1NTdHlsZU1hbmFn
ZXIuanMKQEAgLTI1LDcgKzI1LDggQEAKIAogV2ViSW5zcGVjdG9yLkNTU1N0eWxlTWFuYWdlciA9
IGZ1bmN0aW9uKCkKIHsKLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CisgICAg
Ly8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3Ms
IGFuZCBjYWxsIHN1cGVyKCkuCisgICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMp
OwogCiAgICAgaWYgKHdpbmRvdy5DU1NBZ2VudCkKICAgICAgICAgQ1NTQWdlbnQuZW5hYmxlKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9s
bGVycy9Db2RlTWlycm9yQ29tcGxldGlvbkNvbnRyb2xsZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9Db2RlTWlycm9yQ29tcGxldGlvbkNvbnRy
b2xsZXIuanMKaW5kZXggMmRkOGFhYi4uNGRhOGM0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQ29kZU1pcnJvckNvbXBsZXRpb25D
b250cm9sbGVyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Nv
bnRyb2xsZXJzL0NvZGVNaXJyb3JDb21wbGV0aW9uQ29udHJvbGxlci5qcwpAQCAtMjUsNyArMjUs
OCBAQAogCiBXZWJJbnNwZWN0b3IuQ29kZU1pcnJvckNvbXBsZXRpb25Db250cm9sbGVyID0gZnVu
Y3Rpb24oY29kZU1pcnJvciwgZGVsZWdhdGUsIHN0b3BDaGFyYWN0ZXJzUmVnZXgpCiB7Ci0gICAg
V2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRo
aXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgor
ICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKIAogICAgIGNvbnNvbGUuYXNz
ZXJ0KGNvZGVNaXJyb3IpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Db250cm9sbGVycy9Db2RlTWlycm9yRWRpdGluZ0NvbnRyb2xsZXIuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9Db2RlTWlycm9y
RWRpdGluZ0NvbnRyb2xsZXIuanMKaW5kZXggMDFiOTViZS4uOTA2MzlkNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQ29kZU1pcnJv
ckVkaXRpbmdDb250cm9sbGVyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL0NvbnRyb2xsZXJzL0NvZGVNaXJyb3JFZGl0aW5nQ29udHJvbGxlci5qcwpAQCAtMjUs
NyArMjUsOCBAQAogCiBXZWJJbnNwZWN0b3IuQ29kZU1pcnJvckVkaXRpbmdDb250cm9sbGVyID0g
ZnVuY3Rpb24oY29kZU1pcnJvciwgbWFya2VyKQogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3Qu
Y2FsbCh0aGlzKTsKKyAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9y
Lk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KKyAgICAvLyBXZWJJbnNwZWN0b3Iu
T2JqZWN0LmNhbGwodGhpcyk7CiAKICAgICB0aGlzLl9jb2RlTWlycm9yID0gY29kZU1pcnJvcjsK
ICAgICB0aGlzLl9tYXJrZXIgPSBtYXJrZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9Db2RlTWlycm9yVG9rZW5UcmFja2luZ0Nv
bnRyb2xsZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9s
bGVycy9Db2RlTWlycm9yVG9rZW5UcmFja2luZ0NvbnRyb2xsZXIuanMKaW5kZXggZDdhOGZkOS4u
MzRlY2UxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Q29udHJvbGxlcnMvQ29kZU1pcnJvclRva2VuVHJhY2tpbmdDb250cm9sbGVyLmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0NvZGVNaXJyb3JU
b2tlblRyYWNraW5nQ29udHJvbGxlci5qcwpAQCAtMjUsNyArMjUsOCBAQAogCiBXZWJJbnNwZWN0
b3IuQ29kZU1pcnJvclRva2VuVHJhY2tpbmdDb250cm9sbGVyID0gZnVuY3Rpb24oY29kZU1pcnJv
ciwgZGVsZWdhdGUpCiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAg
IC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNz
LCBhbmQgY2FsbCBzdXBlcigpLgorICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlz
KTsKIAogICAgIGNvbnNvbGUuYXNzZXJ0KGNvZGVNaXJyb3IpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9ET01UcmVlTWFuYWdl
ci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RP
TVRyZWVNYW5hZ2VyLmpzCmluZGV4IDg0ZTRjZGYuLjcxMTZmZmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RPTVRyZWVNYW5hZ2Vy
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJz
L0RPTVRyZWVNYW5hZ2VyLmpzCkBAIC00MSw3ICs0MSw4IEBAIFdlYkluc3BlY3Rvci5ET01UcmVl
TWFuYWdlciA9IGZ1bmN0aW9uKCkgewogICAgIFdlYkluc3BlY3Rvci5GcmFtZS5hZGRFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5GcmFtZS5FdmVudC5NYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRo
aXMuX21haW5SZXNvdXJjZURpZENoYW5nZSwgdGhpcyk7CiB9OwogCi1XZWJJbnNwZWN0b3IuT2Jq
ZWN0LmFkZENvbnN0cnVjdG9yRnVuY3Rpb25zKFdlYkluc3BlY3Rvci5ET01UcmVlTWFuYWdlcik7
CisvLyBGSVhNRTogTW92ZSB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MgYW5kIHdl
IGNhbiByZW1vdmUgdGhpcy4KK1dlYkluc3BlY3Rvci5PYmplY3QuZGVwcmVjYXRlZEFkZENvbnN0
cnVjdG9yRnVuY3Rpb25zKFdlYkluc3BlY3Rvci5ET01UcmVlTWFuYWdlcik7CiAKIFdlYkluc3Bl
Y3Rvci5ET01UcmVlTWFuYWdlci5FdmVudCA9IHsKICAgICBBdHRyaWJ1dGVNb2RpZmllZDogImRv
bS10cmVlLW1hbmFnZXItYXR0cmlidXRlLW1vZGlmaWVkIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0Rhc2hib2FyZE1hbmFnZXIu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9EYXNo
Ym9hcmRNYW5hZ2VyLmpzCmluZGV4IDk0MjVhNWUuLmM4NDhiMjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0Rhc2hib2FyZE1hbmFn
ZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxl
cnMvRGFzaGJvYXJkTWFuYWdlci5qcwpAQCAtMjQsNyArMjQsOCBAQAogICovCiAKIFdlYkluc3Bl
Y3Rvci5EYXNoYm9hcmRNYW5hZ2VyID0gZnVuY3Rpb24oKSB7Ci0gICAgV2ViSW5zcGVjdG9yLk9i
amVjdC5jYWxsKHRoaXMpOworICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNw
ZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgorICAgIC8vIFdlYkluc3Bl
Y3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKIAogICAgIHRoaXMuX2Rhc2hib2FyZHMgPSB7fTsKICAg
ICB0aGlzLl9kYXNoYm9hcmRzLmRlZmF1bHQgPSBuZXcgV2ViSW5zcGVjdG9yLkRlZmF1bHREYXNo
Ym9hcmQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9D
b250cm9sbGVycy9EZWJ1Z2dlck1hbmFnZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Db250cm9sbGVycy9EZWJ1Z2dlck1hbmFnZXIuanMKaW5kZXggMDIxZjhjNS4u
ZWZmZDhiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Q29udHJvbGxlcnMvRGVidWdnZXJNYW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RlYnVnZ2VyTWFuYWdlci5qcwpAQCAtMjUsNyAr
MjUsOCBAQAogCiBXZWJJbnNwZWN0b3IuRGVidWdnZXJNYW5hZ2VyID0gZnVuY3Rpb24oKQogewot
ICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICAvLyBGSVhNRTogQ29udmVy
dCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIo
KS4KKyAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CiAKICAgICBpZiAod2lu
ZG93LkRlYnVnZ2VyQWdlbnQpCiAgICAgICAgIERlYnVnZ2VyQWdlbnQuZW5hYmxlKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9G
b3JtYXR0ZXJTb3VyY2VNYXAuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Db250cm9sbGVycy9Gb3JtYXR0ZXJTb3VyY2VNYXAuanMKaW5kZXggMGFlMWMzYS4uYTgwZjZj
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJv
bGxlcnMvRm9ybWF0dGVyU291cmNlTWFwLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0Zvcm1hdHRlclNvdXJjZU1hcC5qcwpAQCAtMjUsNyAr
MjUsOCBAQAogCiBXZWJJbnNwZWN0b3IuRm9ybWF0dGVyU291cmNlTWFwID0gZnVuY3Rpb24ob3Jp
Z2luYWxMaW5lRW5kaW5ncywgZm9ybWF0dGVkTGluZUVuZGluZ3MsIG1hcHBpbmcpCiB7Ci0gICAg
V2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRo
aXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgor
ICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKIAogICAgIHRoaXMuX29yaWdp
bmFsTGluZUVuZGluZ3MgPSBvcmlnaW5hbExpbmVFbmRpbmdzOwogICAgIHRoaXMuX2Zvcm1hdHRl
ZExpbmVFbmRpbmdzID0gZm9ybWF0dGVkTGluZUVuZGluZ3M7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9GcmFtZVJlc291cmNlTWFu
YWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJz
L0ZyYW1lUmVzb3VyY2VNYW5hZ2VyLmpzCmluZGV4IGQ4MjE0ZTkuLjkxMWI1NGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0ZyYW1l
UmVzb3VyY2VNYW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0NvbnRyb2xsZXJzL0ZyYW1lUmVzb3VyY2VNYW5hZ2VyLmpzCkBAIC0yNSw3ICsyNSw4IEBA
CiAKIFdlYkluc3BlY3Rvci5GcmFtZVJlc291cmNlTWFuYWdlciA9IGZ1bmN0aW9uKCkKIHsKLSAg
ICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CisgICAgLy8gRklYTUU6IENvbnZlcnQg
dGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCku
CisgICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwogCiAgICAgaWYgKHdpbmRv
dy5QYWdlQWdlbnQpCiAgICAgICAgIFBhZ2VBZ2VudC5lbmFibGUoKTsKQEAgLTM3LDcgKzM4LDgg
QEAgV2ViSW5zcGVjdG9yLkZyYW1lUmVzb3VyY2VNYW5hZ2VyID0gZnVuY3Rpb24oKQogICAgIHRo
aXMuaW5pdGlhbGl6ZSgpOwogfTsKIAotV2ViSW5zcGVjdG9yLk9iamVjdC5hZGRDb25zdHJ1Y3Rv
ckZ1bmN0aW9ucyhXZWJJbnNwZWN0b3IuRnJhbWVSZXNvdXJjZU1hbmFnZXIpOworLy8gRklYTUU6
IE1vdmUgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzIGFuZCB3ZSBjYW4gcmVtb3Zl
IHRoaXMuCitXZWJJbnNwZWN0b3IuT2JqZWN0LmRlcHJlY2F0ZWRBZGRDb25zdHJ1Y3RvckZ1bmN0
aW9ucyhXZWJJbnNwZWN0b3IuRnJhbWVSZXNvdXJjZU1hbmFnZXIpOwogCiBXZWJJbnNwZWN0b3Iu
RnJhbWVSZXNvdXJjZU1hbmFnZXIuRXZlbnQgPSB7CiAgICAgRnJhbWVXYXNBZGRlZDogImZyYW1l
LXJlc291cmNlLW1hbmFnZXItZnJhbWUtd2FzLWFkZGVkIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0lzc3VlTWFuYWdlci5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0lzc3VlTWFu
YWdlci5qcwppbmRleCA2MzIyMDQyLi5mMjBlOTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9Jc3N1ZU1hbmFnZXIuanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvSXNzdWVNYW5h
Z2VyLmpzCkBAIC0yNSw3ICsyNSw4IEBACiAKIFdlYkluc3BlY3Rvci5Jc3N1ZU1hbmFnZXIgPSBm
dW5jdGlvbigpCiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIC8v
IEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBh
bmQgY2FsbCBzdXBlcigpLgorICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsK
IAogICAgIFdlYkluc3BlY3Rvci5GcmFtZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5G
cmFtZS5FdmVudC5NYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMuX21haW5SZXNvdXJjZURpZENo
YW5nZSwgdGhpcyk7CiAgICAgV2ViSW5zcGVjdG9yLmxvZ01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5l
cihXZWJJbnNwZWN0b3IuTG9nTWFuYWdlci5FdmVudC5BY3RpdmVMb2dDbGVhcmVkLCB0aGlzLl9h
Y3RpdmVMb2dDbGVhcmVkLCB0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0phdmFTY3JpcHRMb2dWaWV3Q29udHJvbGxlci5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0phdmFT
Y3JpcHRMb2dWaWV3Q29udHJvbGxlci5qcwppbmRleCA1YzJiMTA3Li45MjY4MjdmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9KYXZh
U2NyaXB0TG9nVmlld0NvbnRyb2xsZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvSmF2YVNjcmlwdExvZ1ZpZXdDb250cm9sbGVyLmpzCkBA
IC0yNSw3ICsyNSw4IEBACiAKIFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0TG9nVmlld0NvbnRyb2xs
ZXIgPSBmdW5jdGlvbihlbGVtZW50LCBzY3JvbGxFbGVtZW50LCB0ZXh0UHJvbXB0LCBkZWxlZ2F0
ZSwgaGlzdG9yeVNldHRpbmdJZGVudGlmaWVyKQogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3Qu
Y2FsbCh0aGlzKTsKKyAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9y
Lk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KKyAgICAvLyBXZWJJbnNwZWN0b3Iu
T2JqZWN0LmNhbGwodGhpcyk7CiAKICAgICBjb25zb2xlLmFzc2VydCh0ZXh0UHJvbXB0IGluc3Rh
bmNlb2YgV2ViSW5zcGVjdG9yLkNvbnNvbGVQcm9tcHQpOwogICAgIGNvbnNvbGUuYXNzZXJ0KGhp
c3RvcnlTZXR0aW5nSWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9KYXZhU2NyaXB0UnVudGltZUNvbXBsZXRpb25Q
cm92aWRlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xs
ZXJzL0phdmFTY3JpcHRSdW50aW1lQ29tcGxldGlvblByb3ZpZGVyLmpzCmluZGV4IDE2ODE2ZDYu
LjdkNTExMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L0NvbnRyb2xsZXJzL0phdmFTY3JpcHRSdW50aW1lQ29tcGxldGlvblByb3ZpZGVyLmpzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0phdmFTY3Jp
cHRSdW50aW1lQ29tcGxldGlvblByb3ZpZGVyLmpzCkBAIC0yNSw3ICsyNSw4IEBACiAKIFdlYklu
c3BlY3Rvci5KYXZhU2NyaXB0UnVudGltZUNvbXBsZXRpb25Qcm92aWRlciA9IGZ1bmN0aW9uKCkK
IHsKLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CisgICAgLy8gRklYTUU6IENv
bnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1
cGVyKCkuCisgICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwogCiAgICAgY29u
c29sZS5hc3NlcnQoIVdlYkluc3BlY3Rvci5KYXZhU2NyaXB0UnVudGltZUNvbXBsZXRpb25Qcm92
aWRlci5faW5zdGFuY2UpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Db250cm9sbGVycy9MYXllclRyZWVNYW5hZ2VyLmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvTGF5ZXJUcmVlTWFuYWdlci5qcwpp
bmRleCBkZGU0MGZhLi4xYjM4NzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Db250cm9sbGVycy9MYXllclRyZWVNYW5hZ2VyLmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0xheWVyVHJlZU1hbmFn
ZXIuanMKQEAgLTI0LDcgKzI0LDggQEAKICAqLwogCiBXZWJJbnNwZWN0b3IuTGF5ZXJUcmVlTWFu
YWdlciA9IGZ1bmN0aW9uKCkgewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsK
KyAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJj
bGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KKyAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwo
dGhpcyk7CiAKICAgICB0aGlzLl9zdXBwb3J0ZWQgPSAhIXdpbmRvdy5MYXllclRyZWVBZ2VudDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJv
bGxlcnMvTG9nTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L0NvbnRyb2xsZXJzL0xvZ01hbmFnZXIuanMKaW5kZXggZDhmOGRiZC4uNGFjZDViYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvTG9n
TWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250
cm9sbGVycy9Mb2dNYW5hZ2VyLmpzCkBAIC0yNSw3ICsyNSw4IEBACiAKIFdlYkluc3BlY3Rvci5M
b2dNYW5hZ2VyID0gZnVuY3Rpb24oKQogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0
aGlzKTsKKyAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVj
dCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KKyAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0
LmNhbGwodGhpcyk7CiAKICAgICBXZWJJbnNwZWN0b3IuRnJhbWUuYWRkRXZlbnRMaXN0ZW5lcihX
ZWJJbnNwZWN0b3IuRnJhbWUuRXZlbnQuTWFpblJlc291cmNlRGlkQ2hhbmdlLCB0aGlzLl9tYWlu
UmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1Byb2JlTWFuYWdlci5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1Byb2JlTWFuYWdlci5q
cwppbmRleCA5ZDk0NTljLi4wMDVkYmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9Qcm9iZU1hbmFnZXIuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvUHJvYmVNYW5hZ2VyLmpz
CkBAIC0yNiw3ICsyNiw4IEBACiAKIFdlYkluc3BlY3Rvci5Qcm9iZU1hbmFnZXIgPSBmdW5jdGlv
bigpCiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIC8vIEZJWE1F
OiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2Fs
bCBzdXBlcigpLgorICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKIAogICAg
IC8vIFVzZWQgdG8gZGV0ZWN0IGRlbGV0ZWQgcHJvYmUgYWN0aW9ucy4KICAgICB0aGlzLl9rbm93
blByb2JlSWRlbnRpZmllcnNGb3JCcmVha3BvaW50ID0gbmV3IE1hcDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1JlcGxheU1hbmFn
ZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9S
ZXBsYXlNYW5hZ2VyLmpzCmluZGV4IDVjZjlkYzIuLjQ4MDRhZTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1JlcGxheU1hbmFnZXIu
anMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMv
UmVwbGF5TWFuYWdlci5qcwpAQCAtMjYsNyArMjYsOCBAQAogCiBXZWJJbnNwZWN0b3IuUmVwbGF5
TWFuYWdlciA9IGZ1bmN0aW9uKCkKIHsKLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhp
cyk7CisgICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qg
c3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCkuCisgICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5j
YWxsKHRoaXMpOwogCiAgICAgdGhpcy5fc2Vzc2lvblN0YXRlID0gV2ViSW5zcGVjdG9yLlJlcGxh
eU1hbmFnZXIuU2Vzc2lvblN0YXRlLkluYWN0aXZlOwogICAgIHRoaXMuX3NlZ21lbnRTdGF0ZSA9
IFdlYkluc3BlY3Rvci5SZXBsYXlNYW5hZ2VyLlNlZ21lbnRTdGF0ZS5VbmxvYWRlZDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1J1
bnRpbWVNYW5hZ2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29u
dHJvbGxlcnMvUnVudGltZU1hbmFnZXIuanMKaW5kZXggNzdkOTA0Ni4uYzliMjBjNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvUnVu
dGltZU1hbmFnZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Q29udHJvbGxlcnMvUnVudGltZU1hbmFnZXIuanMKQEAgLTI1LDcgKzI1LDggQEAKIAogV2ViSW5z
cGVjdG9yLlJ1bnRpbWVNYW5hZ2VyID0gZnVuY3Rpb24oKQogewotICAgIFdlYkluc3BlY3Rvci5P
YmplY3QuY2FsbCh0aGlzKTsKKyAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5z
cGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KKyAgICAvLyBXZWJJbnNw
ZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CiAKICAgICAvLyBFbmFibGUgdGhlIFJ1bnRpbWVBZ2Vu
dCB0byByZWNlaXZlIG5vdGlmaWNhdGlvbiBvZiBleGVjdXRpb24gY29udGV4dHMuCiAgICAgaWYg
KFJ1bnRpbWVBZ2VudC5lbmFibGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Db250cm9sbGVycy9Tb3VyY2VNYXBNYW5hZ2VyLmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvU291cmNlTWFwTWFuYWdlci5q
cwppbmRleCBmM2QxNmNkLi5jYWVlNzc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9Tb3VyY2VNYXBNYW5hZ2VyLmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1NvdXJjZU1hcE1h
bmFnZXIuanMKQEAgLTI1LDcgKzI1LDggQEAKIAogV2ViSW5zcGVjdG9yLlNvdXJjZU1hcE1hbmFn
ZXIgPSBmdW5jdGlvbigpCiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwor
ICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNs
YXNzLCBhbmQgY2FsbCBzdXBlcigpLgorICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0
aGlzKTsKIAogICAgIHRoaXMuX3NvdXJjZU1hcFVSTE1hcCA9IHt9OwogICAgIHRoaXMuX2Rvd25s
b2FkaW5nU291cmNlTWFwcyA9IHt9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvU3RvcmFnZU1hbmFnZXIuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9TdG9yYWdlTWFuYWdlci5qcwpp
bmRleCBjZWVjZTMwLi5hNThhY2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Db250cm9sbGVycy9TdG9yYWdlTWFuYWdlci5qcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9TdG9yYWdlTWFuYWdlci5q
cwpAQCAtMjYsNyArMjYsOCBAQAogCiBXZWJJbnNwZWN0b3IuU3RvcmFnZU1hbmFnZXIgPSBmdW5j
dGlvbigpCiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIC8vIEZJ
WE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQg
Y2FsbCBzdXBlcigpLgorICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKIAog
ICAgIGlmICh3aW5kb3cuRE9NU3RvcmFnZUFnZW50KQogICAgICAgICBET01TdG9yYWdlQWdlbnQu
ZW5hYmxlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Db250cm9sbGVycy9UaW1lbGluZU1hbmFnZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Db250cm9sbGVycy9UaW1lbGluZU1hbmFnZXIuanMKaW5kZXggM2Y0NmZk
OS4uMTEzZGI4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvQ29udHJvbGxlcnMvVGltZWxpbmVNYW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1RpbWVsaW5lTWFuYWdlci5qcwpAQCAtMjUs
NyArMjUsOCBAQAogCiBXZWJJbnNwZWN0b3IuVGltZWxpbmVNYW5hZ2VyID0gZnVuY3Rpb24oKQog
ewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICAvLyBGSVhNRTogQ29u
dmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3Vw
ZXIoKS4KKyAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CiAKICAgICBXZWJJ
bnNwZWN0b3IuRnJhbWUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRnJhbWUuRXZlbnQu
UHJvdmlzaW9uYWxMb2FkU3RhcnRlZCwgdGhpcy5fc3RhcnRBdXRvQ2FwdHVyaW5nLCB0aGlzKTsK
ICAgICBXZWJJbnNwZWN0b3IuRnJhbWUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRnJh
bWUuRXZlbnQuTWFpblJlc291cmNlRGlkQ2hhbmdlLCB0aGlzLl9tYWluUmVzb3VyY2VEaWRDaGFu
Z2UsIHRoaXMpOwpAQCAtNDMxLDEwICs0MzIsMTAgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lTWFu
YWdlci5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdmFyIGlkZW50aWZpZXIgPSB0aGlzLl9uZXh0
UmVjb3JkaW5nSWRlbnRpZmllcisrOwogICAgICAgICB2YXIgbmV3UmVjb3JkaW5nID0gbmV3IFdl
Ykluc3BlY3Rvci5UaW1lbGluZVJlY29yZGluZyhpZGVudGlmaWVyLCBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIlRpbWVsaW5lIFJlY29yZGluZyAlZCIpLmZvcm1hdChpZGVudGlmaWVyKSk7Ci0gICAg
ICAgIG5ld1JlY29yZGluZy5hZGRUaW1lbGluZShuZXcgV2ViSW5zcGVjdG9yLlRpbWVsaW5lKFdl
Ykluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5UeXBlLk5ldHdvcmssIG5ld1JlY29yZGluZykpOwot
ICAgICAgICBuZXdSZWNvcmRpbmcuYWRkVGltZWxpbmUobmV3IFdlYkluc3BlY3Rvci5UaW1lbGlu
ZShXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQuVHlwZS5SdW5Mb29wLCBuZXdSZWNvcmRpbmcp
KTsKLSAgICAgICAgbmV3UmVjb3JkaW5nLmFkZFRpbWVsaW5lKG5ldyBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmUoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkLlR5cGUuTGF5b3V0LCBuZXdSZWNvcmRp
bmcpKTsKLSAgICAgICAgbmV3UmVjb3JkaW5nLmFkZFRpbWVsaW5lKG5ldyBXZWJJbnNwZWN0b3Iu
VGltZWxpbmUoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkLlR5cGUuU2NyaXB0LCBuZXdSZWNv
cmRpbmcpKTsKKyAgICAgICAgbmV3UmVjb3JkaW5nLmFkZFRpbWVsaW5lKFdlYkluc3BlY3Rvci5U
aW1lbGluZS5jcmVhdGUoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkLlR5cGUuTmV0d29yaywg
bmV3UmVjb3JkaW5nKSk7CisgICAgICAgIG5ld1JlY29yZGluZy5hZGRUaW1lbGluZShXZWJJbnNw
ZWN0b3IuVGltZWxpbmUuY3JlYXRlKFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5UeXBlLlJ1
bkxvb3AsIG5ld1JlY29yZGluZykpOworICAgICAgICBuZXdSZWNvcmRpbmcuYWRkVGltZWxpbmUo
V2ViSW5zcGVjdG9yLlRpbWVsaW5lLmNyZWF0ZShXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQu
VHlwZS5MYXlvdXQsIG5ld1JlY29yZGluZykpOworICAgICAgICBuZXdSZWNvcmRpbmcuYWRkVGlt
ZWxpbmUoV2ViSW5zcGVjdG9yLlRpbWVsaW5lLmNyZWF0ZShXZWJJbnNwZWN0b3IuVGltZWxpbmVS
ZWNvcmQuVHlwZS5TY3JpcHQsIG5ld1JlY29yZGluZykpOwogCiAgICAgICAgIHRoaXMuX3JlY29y
ZGluZ3MucHVzaChuZXdSZWNvcmRpbmcpOwogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xp
c3RlbmVycyhXZWJJbnNwZWN0b3IuVGltZWxpbmVNYW5hZ2VyLkV2ZW50LlJlY29yZGluZ0NyZWF0
ZWQsIHtyZWNvcmRpbmc6IG5ld1JlY29yZGluZ30pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0FuYWx5emVyTWVzc2FnZS5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9BbmFseXplck1lc3NhZ2UuanMK
aW5kZXggZTMwNTU2Ny4uNWQwYjk1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvTW9kZWxzL0FuYWx5emVyTWVzc2FnZS5qcworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQW5hbHl6ZXJNZXNzYWdlLmpzCkBAIC0y
Myw5ICsyMywxMSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
LVdlYkluc3BlY3Rvci5BbmFseXplck1lc3NhZ2UgPSBmdW5jdGlvbihzb3VyY2VDb2RlTG9jYXRp
b24sIHRleHQsIHJ1bGVJZGVudGlmaWVyKQorV2ViSW5zcGVjdG9yLkFuYWx5emVyTWVzc2FnZSA9
IGNsYXNzIEFuYWx5emVyTWVzc2FnZSBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIHsKLSAg
ICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CisgICAgY29uc3RydWN0b3Ioc291cmNl
Q29kZUxvY2F0aW9uLCB0ZXh0LCBydWxlSWRlbnRpZmllcikKKyAgICB7CisgICAgICAgIHN1cGVy
KCk7CiAKICAgICAgICAgY29uc29sZS5hc3NlcnQoc291cmNlQ29kZUxvY2F0aW9uIGluc3RhbmNl
b2YgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVMb2NhdGlvbik7CiAgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KHR5cGVvZiB0ZXh0ID09PSAic3RyaW5nIik7CkBAIC0zMywyNiArMzUsMjQgQEAgV2ViSW5z
cGVjdG9yLkFuYWx5emVyTWVzc2FnZSA9IGZ1bmN0aW9uKHNvdXJjZUNvZGVMb2NhdGlvbiwgdGV4
dCwgcnVsZUlkZW50aWZpZXIKICAgICAgICAgdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uID0gc291
cmNlQ29kZUxvY2F0aW9uOwogICAgICAgICB0aGlzLl90ZXh0ID0gdGV4dDsKICAgICAgICAgdGhp
cy5fcnVsZUlkZW50aWZpZXIgPSBydWxlSWRlbnRpZmllcjsKLX07CisgICAgfQogCi1XZWJJbnNw
ZWN0b3IuQW5hbHl6ZXJNZXNzYWdlLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2Vi
SW5zcGVjdG9yLkFuYWx5emVyTWVzc2FnZSwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5P
YmplY3QucHJvdG90eXBlLAorICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IHNvdXJjZUNvZGVMb2Nh
dGlvbigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uOwot
ICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHNvdXJjZUNvZGUoKQogICAgIHsKICAgICAgICAgcmV0
dXJuIHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbi5zb3VyY2VDb2RlOwotICAgIH0sCisgICAgfQog
CiAgICAgZ2V0IHRleHQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3RleHQ7Ci0gICAg
fSwKKyAgICB9CiAKICAgICBnZXQgcnVsZUlkZW50aWZpZXIoKQogICAgIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9BcHBsaWNhdGlvbkNh
Y2hlRnJhbWUuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMv
QXBwbGljYXRpb25DYWNoZUZyYW1lLmpzCmluZGV4IDYwMjI5OWMuLmJlZmMxOGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9BcHBsaWNhdGlv
bkNhY2hlRnJhbWUuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
TW9kZWxzL0FwcGxpY2F0aW9uQ2FjaGVGcmFtZS5qcwpAQCAtMjMsNTIgKzIzLDQ5IEBACiAgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkFwcGxp
Y2F0aW9uQ2FjaGVGcmFtZSA9IGZ1bmN0aW9uKGZyYW1lLCBtYW5pZmVzdCwgc3RhdHVzKQorV2Vi
SW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVGcmFtZSA9IGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVG
cmFtZSBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIHsKKyAgICBjb25zdHJ1Y3RvcihmcmFt
ZSwgbWFuaWZlc3QsIHN0YXR1cykKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CisKICAgICAgICAg
Y29uc29sZS5hc3NlcnQoZnJhbWUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuRnJhbWUpOwogICAg
ICAgICBjb25zb2xlLmFzc2VydChtYW5pZmVzdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5BcHBs
aWNhdGlvbkNhY2hlTWFuaWZlc3QpOwogCi0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRo
aXMpOwotCiAgICAgICAgIHRoaXMuX2ZyYW1lID0gZnJhbWU7CiAgICAgICAgIHRoaXMuX21hbmlm
ZXN0ID0gbWFuaWZlc3Q7CiAgICAgICAgIHRoaXMuX3N0YXR1cyA9IHN0YXR1czsKLX07Ci0KLVdl
Ykluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJhbWUuVHlwZUlkZW50aWZpZXIgPSAiYXBwbGlj
YXRpb24tY2FjaGUtZnJhbWUiOwotV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVGcmFtZS5G
cmFtZVVSTENvb2tpZUtleSA9ICJhcHBsaWNhdGlvbi1jYWNoZS1mcmFtZS11cmwiOwotV2ViSW5z
cGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVGcmFtZS5NYW5pZmVzdFVSTENvb2tpZUtleSA9ICJhcHBs
aWNhdGlvbi1jYWNoZS1mcmFtZS1tYW5pZmVzdC11cmwiOwotCi1XZWJJbnNwZWN0b3IuQXBwbGlj
YXRpb25DYWNoZUZyYW1lLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVj
dG9yLkFwcGxpY2F0aW9uQ2FjaGVGcmFtZSwKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAg
IGdldCBmcmFtZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZnJhbWU7Ci0gICAgfSwK
KyAgICB9CiAKICAgICBnZXQgbWFuaWZlc3QoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMu
X21hbmlmZXN0OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHN0YXR1cygpCiAgICAgewogICAg
ICAgICByZXR1cm4gdGhpcy5fc3RhdHVzOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IHN0YXR1
cyhzdGF0dXMpCiAgICAgewogICAgICAgICB0aGlzLl9zdGF0dXMgPSBzdGF0dXM7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBzYXZlSWRlbnRpdHlUb0Nvb2tpZTogZnVuY3Rpb24oY29va2llKQorICAg
IHNhdmVJZGVudGl0eVRvQ29va2llKGNvb2tpZSkKICAgICB7CiAgICAgICAgIGNvb2tpZVtXZWJJ
bnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZUZyYW1lLkZyYW1lVVJMQ29va2llS2V5XSA9IHRoaXMu
ZnJhbWUudXJsOwogICAgICAgICBjb29raWVbV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVG
cmFtZS5NYW5pZmVzdFVSTENvb2tpZUtleV0gPSB0aGlzLm1hbmlmZXN0Lm1hbmlmZXN0VVJMOwog
ICAgIH0KIH07CiAKLVdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJhbWUucHJvdG90eXBl
Ll9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOworV2ViSW5zcGVjdG9y
LkFwcGxpY2F0aW9uQ2FjaGVGcmFtZS5UeXBlSWRlbnRpZmllciA9ICJhcHBsaWNhdGlvbi1jYWNo
ZS1mcmFtZSI7CitXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZUZyYW1lLkZyYW1lVVJMQ29v
a2llS2V5ID0gImFwcGxpY2F0aW9uLWNhY2hlLWZyYW1lLXVybCI7CitXZWJJbnNwZWN0b3IuQXBw
bGljYXRpb25DYWNoZUZyYW1lLk1hbmlmZXN0VVJMQ29va2llS2V5ID0gImFwcGxpY2F0aW9uLWNh
Y2hlLWZyYW1lLW1hbmlmZXN0LXVybCI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0LmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0FwcGxpY2F0aW9uQ2FjaGVN
YW5pZmVzdC5qcwppbmRleCBlOWZkODk5Li5lMTYwYmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9BcHBs
aWNhdGlvbkNhY2hlTWFuaWZlc3QuanMKQEAgLTIzLDIwICsyMywxNyBAQAogICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNh
Y2hlTWFuaWZlc3QgPSBmdW5jdGlvbihtYW5pZmVzdFVSTCkKK1dlYkluc3BlY3Rvci5BcHBsaWNh
dGlvbkNhY2hlTWFuaWZlc3QgPSBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3QgZXh0ZW5k
cyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRo
aXMpOworICAgIGNvbnN0cnVjdG9yKG1hbmlmZXN0VVJMKQorICAgIHsKKyAgICAgICAgc3VwZXIo
KTsKIAogICAgICAgICB0aGlzLl9tYW5pZmVzdFVSTCA9IG1hbmlmZXN0VVJMOwotfTsKLQotV2Vi
SW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdC5wcm90b3R5cGUgPSB7Ci0gICAgY29u
c3RydWN0b3I6IFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3QsCisgICAgfQog
CiAgICAgZ2V0IG1hbmlmZXN0VVJMKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9tYW5p
ZmVzdFVSTDsKICAgICB9CiB9OwotCi1XZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZU1hbmlm
ZXN0LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9C
YWNrRm9yd2FyZEVudHJ5LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
TW9kZWxzL0JhY2tGb3J3YXJkRW50cnkuanMKaW5kZXggMzNhN2FjYi4uNTFmMDMxNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0JhY2tGb3J3
YXJkRW50cnkuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9k
ZWxzL0JhY2tGb3J3YXJkRW50cnkuanMKQEAgLTI0LDM1ICsyNCwzNSBAQAogICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCi1XZWJJbnNwZWN0b3IuQmFja0ZvcndhcmRFbnRyeSA9IGZ1bmN0aW9uKGNvbnRl
bnRWaWV3LCBjb29raWUpCitXZWJJbnNwZWN0b3IuQmFja0ZvcndhcmRFbnRyeSA9IGNsYXNzIEJh
Y2tGb3J3YXJkRW50cnkgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0gICAgV2ViSW5z
cGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIGNvbnN0cnVjdG9yKGNvbnRlbnRWaWV3LCBj
b29raWUpCisgICAgeworICAgICAgICBzdXBlcigpOworCiAgICAgICAgIHRoaXMuX2NvbnRlbnRW
aWV3ID0gY29udGVudFZpZXc7CisKICAgICAgICAgLy8gQ29va2llcyBhcmUgY29tcGFyZWQgd2l0
aCBPYmplY3Quc2hhbGxvd0VxdWFsLCBzbyBzaG91bGQgbm90IHN0b3JlIG9iamVjdHMgb3IgYXJy
YXlzLgogICAgICAgICB0aGlzLl9jb29raWUgPSBjb29raWUgfHwge307CiAgICAgICAgIHRoaXMu
X3Njcm9sbFBvc2l0aW9ucyA9IFtdOwogCiAgICAgICAgIGNvbnRlbnRWaWV3LnNhdmVUb0Nvb2tp
ZSh0aGlzLl9jb29raWUpOwotfTsKLQotV2ViSW5zcGVjdG9yLkJhY2tGb3J3YXJkRW50cnkucHJv
dG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuQmFja0ZvcndhcmRFbnRy
eSwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlLAorICAgIH0K
IAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IGNvbnRlbnRWaWV3KCkKICAgICB7CiAgICAgICAg
IHJldHVybiB0aGlzLl9jb250ZW50VmlldzsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBjb29r
aWUoKQogICAgIHsKICAgICAgICAgLy8gQ29va2llcyBhcmUgaW1tdXRhYmxlOyB0aGV5IHJlcHJl
c2VudCBhIHNwZWNpZmljIG5hdmlnYXRpb24gYWN0aW9uLgogICAgICAgICByZXR1cm4gT2JqZWN0
LnNoYWxsb3dDb3B5KHRoaXMuX2Nvb2tpZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBwcmVwYXJl
VG9TaG93OiBmdW5jdGlvbihzaG91bGRDYWxsU2hvd24pCisgICAgcHJlcGFyZVRvU2hvdyhzaG91
bGRDYWxsU2hvd24pCiAgICAgewogICAgICAgICB0aGlzLl9yZXN0b3JlRnJvbUNvb2tpZSgpOwog
CkBAIC02MCwyNSArNjAsMjUgQEAgV2ViSW5zcGVjdG9yLkJhY2tGb3J3YXJkRW50cnkucHJvdG90
eXBlID0gewogICAgICAgICBpZiAoc2hvdWxkQ2FsbFNob3duKQogICAgICAgICAgICAgdGhpcy5j
b250ZW50Vmlldy5zaG93bigpOwogICAgICAgICB0aGlzLmNvbnRlbnRWaWV3LnVwZGF0ZUxheW91
dCgpOwotICAgIH0sCisgICAgfQogCi0gICAgcHJlcGFyZVRvSGlkZTogZnVuY3Rpb24oKQorICAg
IHByZXBhcmVUb0hpZGUoKQogICAgIHsKICAgICAgICAgdGhpcy5jb250ZW50Vmlldy52aXNpYmxl
ID0gZmFsc2U7CiAgICAgICAgIHRoaXMuY29udGVudFZpZXcuaGlkZGVuKCk7CiAKICAgICAgICAg
dGhpcy5fc2F2ZVNjcm9sbFBvc2l0aW9ucygpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJp
dmF0ZQogCi0gICAgX3Jlc3RvcmVGcm9tQ29va2llOiBmdW5jdGlvbigpCisgICAgX3Jlc3RvcmVG
cm9tQ29va2llKCkKICAgICB7CiAgICAgICAgIHRoaXMuX3Jlc3RvcmVTY3JvbGxQb3NpdGlvbnMo
KTsKICAgICAgICAgdGhpcy5jb250ZW50Vmlldy5yZXN0b3JlRnJvbUNvb2tpZSh0aGlzLmNvb2tp
ZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcmVzdG9yZVNjcm9sbFBvc2l0aW9uczogZnVuY3Rp
b24oKQorICAgIF9yZXN0b3JlU2Nyb2xsUG9zaXRpb25zKCkKICAgICB7CiAgICAgICAgIC8vIElm
IG5vIHNjcm9sbCBwb3NpdGlvbnMgYXJlIHNhdmVkLCBkbyBub3RoaW5nLgogICAgICAgICBpZiAo
IXRoaXMuX3Njcm9sbFBvc2l0aW9ucy5sZW5ndGgpCkBAIC0xMDAsOSArMTAwLDkgQEAgV2ViSW5z
cGVjdG9yLkJhY2tGb3J3YXJkRW50cnkucHJvdG90eXBlID0gewogICAgICAgICAgICAgLy8gdGhl
IHVzZXIgd29uJ3QgYmUgbGVmdCBpbiBhIHdlaXJkIGhvcml6b250YWwgcG9zaXRpb24uCiAgICAg
ICAgICAgICBlbGVtZW50LnNjcm9sbExlZnQgPSBwb3NpdGlvbi5pc1Njcm9sbGVkVG9Cb3R0b20g
PyAwIDogcG9zaXRpb24uc2Nyb2xsTGVmdDsKICAgICAgICAgfQotICAgIH0sCisgICAgfQogCi0g
ICAgX3NhdmVTY3JvbGxQb3NpdGlvbnM6IGZ1bmN0aW9uKCkKKyAgICBfc2F2ZVNjcm9sbFBvc2l0
aW9ucygpCiAgICAgewogICAgICAgICB2YXIgc2Nyb2xsYWJsZUVsZW1lbnRzID0gdGhpcy5jb250
ZW50Vmlldy5zY3JvbGxhYmxlRWxlbWVudHMgfHwgW107CiAgICAgICAgIHZhciBzY3JvbGxQb3Np
dGlvbnMgPSBbXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01vZGVscy9CcmFuY2guanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Nb2RlbHMvQnJhbmNoLmpzCmluZGV4IDg3ZTk3YzAuLjczZDk1MTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9CcmFuY2guanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0JyYW5jaC5qcwpAQCAt
MjMsMjYgKzIzLDI1IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
IAotV2ViSW5zcGVjdG9yLkJyYW5jaCA9IGZ1bmN0aW9uKGRpc3BsYXlOYW1lLCByZXZpc2lvbnMs
IGxvY2tlZCkKK1dlYkluc3BlY3Rvci5CcmFuY2ggPSBjbGFzcyBCcmFuY2ggZXh0ZW5kcyBXZWJJ
bnNwZWN0b3IuT2JqZWN0CiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwor
ICAgIGNvbnN0cnVjdG9yKGRpc3BsYXlOYW1lLCByZXZpc2lvbnMsIGxvY2tlZCkKKyAgICB7Cisg
ICAgICAgIHN1cGVyKCk7CiAKICAgICAgICAgY29uc29sZS5hc3NlcnQoZGlzcGxheU5hbWUpOwog
CiAgICAgICAgIHRoaXMuX2Rpc3BsYXlOYW1lID0gZGlzcGxheU5hbWU7CiAgICAgICAgIHRoaXMu
X3JldmlzaW9ucyA9IHJldmlzaW9ucyBpbnN0YW5jZW9mIEFycmF5ID8gcmV2aXNpb25zLnNsaWNl
KCkgOiBbXTsKICAgICAgICAgdGhpcy5fbG9ja2VkID0gbG9ja2VkIHx8IGZhbHNlOwotfTsKLQot
V2ViSW5zcGVjdG9yLkJyYW5jaC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYklu
c3BlY3Rvci5CcmFuY2gsCisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgZGlzcGxh
eU5hbWUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc3BsYXlOYW1lOwotICAgIH0s
CisgICAgfQogCiAgICAgc2V0IGRpc3BsYXlOYW1lKGRpc3BsYXlOYW1lKQogICAgIHsKQEAgLTUx
LDE5ICs1MCwxOSBAQCBXZWJJbnNwZWN0b3IuQnJhbmNoLnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgIHJldHVybjsKIAogICAgICAgICB0aGlzLl9kaXNwbGF5TmFtZSA9IGRpc3BsYXlOYW1lOwot
ICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHJldmlzaW9ucygpCiAgICAgewogICAgICAgICByZXR1
cm4gdGhpcy5fcmV2aXNpb25zOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGxvY2tlZCgpCiAg
ICAgewogICAgICAgICByZXR1cm4gdGhpcy5fbG9ja2VkOwotICAgIH0sCisgICAgfQogCi0gICAg
cmV2aXNpb25Gb3JSZXByZXNlbnRlZE9iamVjdDogZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmplY3Qs
IGRvTm90Q3JlYXRlSWZOZWVkZWQpCisgICAgcmV2aXNpb25Gb3JSZXByZXNlbnRlZE9iamVjdChy
ZXByZXNlbnRlZE9iamVjdCwgZG9Ob3RDcmVhdGVJZk5lZWRlZCkKICAgICB7CiAgICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fcmV2aXNpb25zLmxlbmd0aDsgKytpKSB7CiAgICAgICAg
ICAgICB2YXIgcmV2aXNpb24gPSB0aGlzLl9yZXZpc2lvbnNbaV07CkBAIC04Miw5ICs4MSw5IEBA
IFdlYkluc3BlY3Rvci5CcmFuY2gucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAg
cmV0dXJuIG51bGw7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBhZGRSZXZpc2lvbjogZnVuY3Rpb24o
cmV2aXNpb24pCisgICAgYWRkUmV2aXNpb24ocmV2aXNpb24pCiAgICAgewogICAgICAgICBjb25z
b2xlLmFzc2VydChyZXZpc2lvbiBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZXZpc2lvbik7CiAK
QEAgLTk1LDkgKzk0LDkgQEAgV2ViSW5zcGVjdG9yLkJyYW5jaC5wcm90b3R5cGUgPSB7CiAgICAg
ICAgICAgICByZXR1cm47CiAKICAgICAgICAgdGhpcy5fcmV2aXNpb25zLnB1c2gocmV2aXNpb24p
OwotICAgIH0sCisgICAgfQogCi0gICAgcmVtb3ZlUmV2aXNpb246IGZ1bmN0aW9uKHJldmlzaW9u
KQorICAgIHJlbW92ZVJldmlzaW9uKHJldmlzaW9uKQogICAgIHsKICAgICAgICAgY29uc29sZS5h
c3NlcnQocmV2aXNpb24gaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmV2aXNpb24pOwogCkBAIC0x
MDUsNDUgKzEwNCw0MyBAQCBXZWJJbnNwZWN0b3IuQnJhbmNoLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgICAgIHJldHVybjsKIAogICAgICAgICB0aGlzLl9yZXZpc2lvbnMucmVtb3ZlKHJldmlzaW9u
KTsKLSAgICB9LAorICAgIH0KIAotICAgIHJlc2V0OiBmdW5jdGlvbigpCisgICAgcmVzZXQoKQog
ICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2xvY2tlZCkKICAgICAgICAgICAgIHJldHVybjsKIAog
ICAgICAgICB0aGlzLl9yZXZpc2lvbnMgPSBbXTsKLSAgICB9LAorICAgIH0KIAotICAgIGZvcms6
IGZ1bmN0aW9uKGRpc3BsYXlOYW1lKQorICAgIGZvcmsoZGlzcGxheU5hbWUpCiAgICAgewogICAg
ICAgICB2YXIgY29waWVkUmV2aXNpb25zID0gdGhpcy5fcmV2aXNpb25zLm1hcChmdW5jdGlvbihy
ZXZpc2lvbikgeyByZXR1cm4gcmV2aXNpb24uY29weSgpOyB9KTsKICAgICAgICAgcmV0dXJuIG5l
dyBXZWJJbnNwZWN0b3IuQnJhbmNoKGRpc3BsYXlOYW1lLCBjb3BpZWRSZXZpc2lvbnMpOwotICAg
IH0sCisgICAgfQogCi0gICAgYXBwbHk6IGZ1bmN0aW9uKCkKKyAgICBhcHBseSgpCiAgICAgewog
ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX3JldmlzaW9ucy5sZW5ndGg7ICsraSkK
ICAgICAgICAgICAgIHRoaXMuX3JldmlzaW9uc1tpXS5hcHBseSgpOwotICAgIH0sCisgICAgfQog
Ci0gICAgcmV2ZXJ0OiBmdW5jdGlvbigpCisgICAgcmV2ZXJ0KCkKICAgICB7CiAgICAgICAgIGZv
ciAodmFyIGkgPSB0aGlzLl9yZXZpc2lvbnMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpCiAgICAg
ICAgICAgICB0aGlzLl9yZXZpc2lvbnNbaV0ucmV2ZXJ0KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBsb2NrOiBmdW5jdGlvbigpCisgICAgbG9jaygpCiAgICAgewogICAgICAgICBjb25zb2xlLmFz
c2VydCghdGhpcy5fbG9ja2VkKTsKICAgICAgICAgdGhpcy5fbG9ja2VkID0gdHJ1ZTsKLSAgICB9
LAorICAgIH0KIAotICAgIHVubG9jazogZnVuY3Rpb24oKQorICAgIHVubG9jaygpCiAgICAgewog
ICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9sb2NrZWQpOwogICAgICAgICB0aGlzLl9sb2Nr
ZWQgPSBmYWxzZTsKICAgICB9CiB9OwotCi1XZWJJbnNwZWN0b3IuQnJhbmNoLnByb3RvdHlwZS5f
X3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9CcmVha3BvaW50LmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0JyZWFrcG9pbnQuanMK
aW5kZXggYzQ4MjE3ZS4uMjgyMWE3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvTW9kZWxzL0JyZWFrcG9pbnQuanMKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0JyZWFrcG9pbnQuanMKQEAgLTIzLDkgKzIzLDEx
IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVj
dG9yLkJyZWFrcG9pbnQgPSBmdW5jdGlvbihzb3VyY2VDb2RlTG9jYXRpb25PckluZm8sIGRpc2Fi
bGVkLCBjb25kaXRpb24pCitXZWJJbnNwZWN0b3IuQnJlYWtwb2ludCA9IGNsYXNzIEJyZWFrcG9p
bnQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVj
dC5jYWxsKHRoaXMpOworICAgIGNvbnN0cnVjdG9yKHNvdXJjZUNvZGVMb2NhdGlvbk9ySW5mbywg
ZGlzYWJsZWQsIGNvbmRpdGlvbikKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CiAKICAgICAgICAg
aWYgKHNvdXJjZUNvZGVMb2NhdGlvbk9ySW5mbyBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Tb3Vy
Y2VDb2RlTG9jYXRpb24pIHsKICAgICAgICAgICAgIHZhciBzb3VyY2VDb2RlID0gc291cmNlQ29k
ZUxvY2F0aW9uT3JJbmZvLnNvdXJjZUNvZGU7CkBAIC01OCw2NyArNjAsMzkgQEAgV2ViSW5zcGVj
dG9yLkJyZWFrcG9pbnQgPSBmdW5jdGlvbihzb3VyY2VDb2RlTG9jYXRpb25PckluZm8sIGRpc2Fi
bGVkLCBjb25kaXRpb24KICAgICAgICAgdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uID0gbG9jYXRp
b247CiAgICAgICAgIHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbi5hZGRFdmVudExpc3RlbmVyKFdl
Ykluc3BlY3Rvci5Tb3VyY2VDb2RlTG9jYXRpb24uRXZlbnQuTG9jYXRpb25DaGFuZ2VkLCB0aGlz
Ll9zb3VyY2VDb2RlTG9jYXRpb25Mb2NhdGlvbkNoYW5nZWQsIHRoaXMpOwogICAgICAgICB0aGlz
Ll9zb3VyY2VDb2RlTG9jYXRpb24uYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU291cmNl
Q29kZUxvY2F0aW9uLkV2ZW50LkRpc3BsYXlMb2NhdGlvbkNoYW5nZWQsIHRoaXMuX3NvdXJjZUNv
ZGVMb2NhdGlvbkRpc3BsYXlMb2NhdGlvbkNoYW5nZWQsIHRoaXMpOwotfTsKLQotV2ViSW5zcGVj
dG9yLk9iamVjdC5hZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhXZWJJbnNwZWN0b3IuQnJlYWtwb2lu
dCk7Ci0KLVdlYkluc3BlY3Rvci5CcmVha3BvaW50LlBvcG92ZXJDbGFzc05hbWUgPSAiZWRpdC1i
cmVha3BvaW50LXBvcG92ZXItY29udGVudCI7Ci1XZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5XaWRl
UG9wb3ZlckNsYXNzTmFtZSA9ICJ3aWRlIjsKLVdlYkluc3BlY3Rvci5CcmVha3BvaW50LlBvcG92
ZXJDb25kaXRpb25JbnB1dElkID0gImVkaXQtYnJlYWtwb2ludC1wb3BvdmVyLWNvbmRpdGlvbiI7
Ci1XZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5Qb3BvdmVyT3B0aW9uc0F1dG9Db250aW51ZUlucHV0
SWQgPSAiZWRpdC1icmVha3BvaW50LXBvcG9vdmVyLWF1dG8tY29udGludWUiOwotV2ViSW5zcGVj
dG9yLkJyZWFrcG9pbnQuSGlkZGVuU3R5bGVDbGFzc05hbWUgPSAiaGlkZGVuIjsKLQotV2ViSW5z
cGVjdG9yLkJyZWFrcG9pbnQuRGVmYXVsdEJyZWFrcG9pbnRBY3Rpb25UeXBlID0gV2ViSW5zcGVj
dG9yLkJyZWFrcG9pbnRBY3Rpb24uVHlwZS5Mb2c7Ci0KLVdlYkluc3BlY3Rvci5CcmVha3BvaW50
LlR5cGVJZGVudGlmaWVyID0gImJyZWFrcG9pbnQiOwotV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQu
VVJMQ29va2llS2V5ID0gImJyZWFrcG9pbnQtdXJsIjsKLVdlYkluc3BlY3Rvci5CcmVha3BvaW50
LkxpbmVOdW1iZXJDb29raWVLZXkgPSAiYnJlYWtwb2ludC1saW5lLW51bWJlciI7Ci1XZWJJbnNw
ZWN0b3IuQnJlYWtwb2ludC5Db2x1bW5OdW1iZXJDb29raWVLZXkgPSAiYnJlYWtwb2ludC1jb2x1
bW4tbnVtYmVyIjsKLQotV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQuRXZlbnQgPSB7Ci0gICAgRGlz
YWJsZWRTdGF0ZURpZENoYW5nZTogImJyZWFrcG9pbnQtZGlzYWJsZWQtc3RhdGUtZGlkLWNoYW5n
ZSIsCi0gICAgUmVzb2x2ZWRTdGF0ZURpZENoYW5nZTogImJyZWFrcG9pbnQtcmVzb2x2ZWQtc3Rh
dGUtZGlkLWNoYW5nZSIsCi0gICAgQ29uZGl0aW9uRGlkQ2hhbmdlOiAiYnJlYWtwb2ludC1jb25k
aXRpb24tZGlkLWNoYW5nZSIsCi0gICAgQWN0aW9uc0RpZENoYW5nZTogImJyZWFrcG9pbnQtYWN0
aW9ucy1kaWQtY2hhbmdlIiwKLSAgICBBdXRvQ29udGludWVEaWRDaGFuZ2U6ICJicmVha3BvaW50
LWF1dG8tY29udGludWUtZGlkLWNoYW5nZSIsCi0gICAgTG9jYXRpb25EaWRDaGFuZ2U6ICJicmVh
a3BvaW50LWxvY2F0aW9uLWRpZC1jaGFuZ2UiLAotICAgIERpc3BsYXlMb2NhdGlvbkRpZENoYW5n
ZTogImJyZWFrcG9pbnQtZGlzcGxheS1sb2NhdGlvbi1kaWQtY2hhbmdlIiwKLX07Ci0KLVdlYklu
c3BlY3Rvci5CcmVha3BvaW50LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5z
cGVjdG9yLkJyZWFrcG9pbnQsCisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgaWQo
KQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2lkOwotICAgIH0sCisgICAgfQogCiAgICAg
c2V0IGlkKGlkKQogICAgIHsKICAgICAgICAgdGhpcy5faWQgPSBpZCB8fCBudWxsOwotICAgIH0s
CisgICAgfQogCiAgICAgZ2V0IHVybCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fdXJs
OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHNjcmlwdElkZW50aWZpZXIoKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHRoaXMuX3NjcmlwdElkZW50aWZpZXI7Ci0gICAgfSwKKyAgICB9CiAKICAg
ICBnZXQgc291cmNlQ29kZUxvY2F0aW9uKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9z
b3VyY2VDb2RlTG9jYXRpb247Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgcmVzb2x2ZWQoKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc29sdmVkOwotICAgIH0sCisgICAgfQogCiAg
ICAgc2V0IHJlc29sdmVkKHJlc29sdmVkKQogICAgIHsKQEAgLTEzNSwxMiArMTA5LDEyIEBAIFdl
Ykluc3BlY3Rvci5CcmVha3BvaW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fcmVzb2x2
ZWQgPSByZXNvbHZlZCB8fCBmYWxzZTsKIAogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xp
c3RlbmVycyhXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5FdmVudC5SZXNvbHZlZFN0YXRlRGlkQ2hh
bmdlKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBkaXNhYmxlZCgpCiAgICAgewogICAgICAg
ICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgZGlzYWJs
ZWQoZGlzYWJsZWQpCiAgICAgewpAQCAtMTUwLDEyICsxMjQsMTIgQEAgV2ViSW5zcGVjdG9yLkJy
ZWFrcG9pbnQucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9kaXNhYmxlZCA9IGRpc2FibGVk
IHx8IGZhbHNlOwogCiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYklu
c3BlY3Rvci5CcmVha3BvaW50LkV2ZW50LkRpc2FibGVkU3RhdGVEaWRDaGFuZ2UpOwotICAgIH0s
CisgICAgfQogCiAgICAgZ2V0IGNvbmRpdGlvbigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhp
cy5fY29uZGl0aW9uOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IGNvbmRpdGlvbihjb25kaXRp
b24pCiAgICAgewpAQCAtMTY1LDEyICsxMzksMTIgQEAgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQu
cHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9jb25kaXRpb24gPSBjb25kaXRpb247CiAKICAg
ICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkJyZWFrcG9p
bnQuRXZlbnQuQ29uZGl0aW9uRGlkQ2hhbmdlKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBh
dXRvQ29udGludWUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2F1dG9Db250aW51ZTsK
LSAgICB9LAorICAgIH0KIAogICAgIHNldCBhdXRvQ29udGludWUoY29udCkKICAgICB7CkBAIC0x
ODAsMTIgKzE1NCwxMiBAQCBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIHRoaXMuX2F1dG9Db250aW51ZSA9IGNvbnQ7CiAKICAgICAgICAgdGhpcy5kaXNwYXRj
aEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQuRXZlbnQuQXV0b0NvbnRp
bnVlRGlkQ2hhbmdlKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBhY3Rpb25zKCkKICAgICB7
CiAgICAgICAgIHJldHVybiB0aGlzLl9hY3Rpb25zOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0
IG9wdGlvbnMoKQogICAgIHsKQEAgLTE5NCw3ICsxNjgsNyBAQCBXZWJJbnNwZWN0b3IuQnJlYWtw
b2ludC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBhY3Rpb25zOiB0aGlzLl9zZXJpYWxpemFi
bGVBY3Rpb25zKCksCiAgICAgICAgICAgICBhdXRvQ29udGludWU6IHRoaXMuX2F1dG9Db250aW51
ZQogICAgICAgICB9OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGluZm8oKQogICAgIHsKQEAg
LTIwOCwxNiArMTgyLDE2IEBAIFdlYkluc3BlY3Rvci5CcmVha3BvaW50LnByb3RvdHlwZSA9IHsK
ICAgICAgICAgICAgIGFjdGlvbnM6IHRoaXMuX3NlcmlhbGl6YWJsZUFjdGlvbnMoKSwKICAgICAg
ICAgICAgIGF1dG9Db250aW51ZTogdGhpcy5fYXV0b0NvbnRpbnVlCiAgICAgICAgIH07Ci0gICAg
fSwKKyAgICB9CiAKICAgICBnZXQgcHJvYmVBY3Rpb25zKCkKICAgICB7CiAgICAgICAgIHJldHVy
biB0aGlzLl9hY3Rpb25zLmZpbHRlcihmdW5jdGlvbihhY3Rpb24pIHsKICAgICAgICAgICAgIHJl
dHVybiBhY3Rpb24udHlwZSA9PT0gV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRBY3Rpb24uVHlwZS5Q
cm9iZTsKICAgICAgICAgfSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjeWNsZVRvTmV4dE1vZGU6
IGZ1bmN0aW9uKCkKKyAgICBjeWNsZVRvTmV4dE1vZGUoKQogICAgIHsKICAgICAgICAgaWYgKHRo
aXMuZGlzYWJsZWQpIHsKICAgICAgICAgICAgIC8vIFdoZW4gY3ljbGluZywgY2xlYXIgYXV0by1j
b250aW51ZSB3aGVuIGdvaW5nIGZyb20gZGlzYWJsZWQgdG8gZW5hYmxlZC4KQEAgLTIzNyw5ICsy
MTEsOSBAQCBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0K
IAogICAgICAgICB0aGlzLmRpc2FibGVkID0gdHJ1ZTsKLSAgICB9LAorICAgIH0KIAotICAgIGFw
cGVuZENvbnRleHRNZW51SXRlbXM6IGZ1bmN0aW9uKGNvbnRleHRNZW51LCBicmVha3BvaW50RGlz
cGxheUVsZW1lbnQpCisgICAgYXBwZW5kQ29udGV4dE1lbnVJdGVtcyhjb250ZXh0TWVudSwgYnJl
YWtwb2ludERpc3BsYXlFbGVtZW50KQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoZG9j
dW1lbnQuYm9keS5jb250YWlucyhicmVha3BvaW50RGlzcGxheUVsZW1lbnQpLCAiYnJlYWtwb2lu
dCBwb3BvdmVyIGRpc3BsYXkgZWxlbWVudCBtdXN0IGJlIGluIHRoZSBET00iKTsKIApAQCAtMjkz
LDkgKzI2Nyw5IEBAIFdlYkluc3BlY3Rvci5CcmVha3BvaW50LnByb3RvdHlwZSA9IHsKICAgICAg
ICAgICAgIGNvbnRleHRNZW51LmFwcGVuZFNlcGFyYXRvcigpOwogICAgICAgICAgICAgY29udGV4
dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJldmVhbCBpbiBPcmlnaW5h
bCBSZXNvdXJjZSIpLCByZXZlYWxPcmlnaW5hbFNvdXJjZUNvZGVMb2NhdGlvbi5iaW5kKHRoaXMp
KTsKICAgICAgICAgfQotICAgIH0sCisgICAgfQogCi0gICAgY3JlYXRlQWN0aW9uOiBmdW5jdGlv
bih0eXBlLCBwcmVjZWRpbmdBY3Rpb24sIGRhdGEpCisgICAgY3JlYXRlQWN0aW9uKHR5cGUsIHBy
ZWNlZGluZ0FjdGlvbiwgZGF0YSkKICAgICB7CiAgICAgICAgIHZhciBuZXdBY3Rpb24gPSBuZXcg
V2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRBY3Rpb24odGhpcywgdHlwZSwgZGF0YSB8fCBudWxsKTsK
IApAQCAtMzEzLDkgKzI4Nyw5IEBAIFdlYkluc3BlY3Rvci5CcmVha3BvaW50LnByb3RvdHlwZSA9
IHsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkJy
ZWFrcG9pbnQuRXZlbnQuQWN0aW9uc0RpZENoYW5nZSk7CiAKICAgICAgICAgcmV0dXJuIG5ld0Fj
dGlvbjsKLSAgICB9LAorICAgIH0KIAotICAgIHJlY3JlYXRlQWN0aW9uOiBmdW5jdGlvbih0eXBl
LCBhY3Rpb25Ub1JlcGxhY2UpCisgICAgcmVjcmVhdGVBY3Rpb24odHlwZSwgYWN0aW9uVG9SZXBs
YWNlKQogICAgIHsKICAgICAgICAgdmFyIG5ld0FjdGlvbiA9IG5ldyBXZWJJbnNwZWN0b3IuQnJl
YWtwb2ludEFjdGlvbih0aGlzLCB0eXBlLCBudWxsKTsKIApAQCAtMzI5LDkgKzMwMyw5IEBAIFdl
Ykluc3BlY3Rvci5CcmVha3BvaW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5kaXNwYXRj
aEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQuRXZlbnQuQWN0aW9uc0Rp
ZENoYW5nZSk7CiAKICAgICAgICAgcmV0dXJuIG5ld0FjdGlvbjsKLSAgICB9LAorICAgIH0KIAot
ICAgIHJlbW92ZUFjdGlvbjogZnVuY3Rpb24oYWN0aW9uKQorICAgIHJlbW92ZUFjdGlvbihhY3Rp
b24pCiAgICAgewogICAgICAgICB2YXIgaW5kZXggPSB0aGlzLl9hY3Rpb25zLmluZGV4T2YoYWN0
aW9uKTsKICAgICAgICAgY29uc29sZS5hc3NlcnQoaW5kZXggIT09IC0xKTsKQEAgLTM0NCw5ICsz
MTgsOSBAQCBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAg
ICB0aGlzLmF1dG9Db250aW51ZSA9IGZhbHNlOwogCiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVu
dFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5CcmVha3BvaW50LkV2ZW50LkFjdGlvbnNEaWRDaGFu
Z2UpOwotICAgIH0sCisgICAgfQogCi0gICAgY2xlYXJBY3Rpb25zOiBmdW5jdGlvbih0eXBlKQor
ICAgIGNsZWFyQWN0aW9ucyh0eXBlKQogICAgIHsKICAgICAgICAgaWYgKCF0eXBlKQogICAgICAg
ICAgICAgdGhpcy5fYWN0aW9ucyA9IFtdOwpAQCAtMzU0LDE4ICszMjgsMTggQEAgV2ViSW5zcGVj
dG9yLkJyZWFrcG9pbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fYWN0aW9ucyA9
IHRoaXMuX2FjdGlvbnMuZmlsdGVyKGZ1bmN0aW9uKGFjdGlvbikgeyBhY3Rpb24udHlwZSAhPT0g
dHlwZTsgfSk7CiAKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5z
cGVjdG9yLkJyZWFrcG9pbnQuRXZlbnQuQWN0aW9uc0RpZENoYW5nZSk7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBzYXZlSWRlbnRpdHlUb0Nvb2tpZTogZnVuY3Rpb24oY29va2llKQorICAgIHNhdmVJ
ZGVudGl0eVRvQ29va2llKGNvb2tpZSkKICAgICB7CiAgICAgICAgIGNvb2tpZVtXZWJJbnNwZWN0
b3IuQnJlYWtwb2ludC5VUkxDb29raWVLZXldID0gdGhpcy51cmw7CiAgICAgICAgIGNvb2tpZVtX
ZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5MaW5lTnVtYmVyQ29va2llS2V5XSA9IHRoaXMuc291cmNl
Q29kZUxvY2F0aW9uLmxpbmVOdW1iZXI7CiAgICAgICAgIGNvb2tpZVtXZWJJbnNwZWN0b3IuQnJl
YWtwb2ludC5Db2x1bW5OdW1iZXJDb29raWVLZXldID0gdGhpcy5zb3VyY2VDb2RlTG9jYXRpb24u
Y29sdW1uTnVtYmVyOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJvdGVjdGVkIChDYWxsZWQg
YnkgQnJlYWtwb2ludEFjdGlvbikKIAotICAgIGJyZWFrcG9pbnRBY3Rpb25EaWRDaGFuZ2U6IGZ1
bmN0aW9uKGFjdGlvbikKKyAgICBicmVha3BvaW50QWN0aW9uRGlkQ2hhbmdlKGFjdGlvbikKICAg
ICB7CiAgICAgICAgIHZhciBpbmRleCA9IHRoaXMuX2FjdGlvbnMuaW5kZXhPZihhY3Rpb24pOwog
ICAgICAgICBjb25zb2xlLmFzc2VydChpbmRleCAhPT0gLTEpOwpAQCAtMzczLDQzICszNDcsNDMg
QEAgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0
dXJuOwogCiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rv
ci5CcmVha3BvaW50LkV2ZW50LkFjdGlvbnNEaWRDaGFuZ2UpOwotICAgIH0sCisgICAgfQogCiAg
ICAgLy8gUHJpdmF0ZQogCi0gICAgX3NlcmlhbGl6YWJsZUFjdGlvbnM6IGZ1bmN0aW9uKCkKKyAg
ICBfc2VyaWFsaXphYmxlQWN0aW9ucygpCiAgICAgewogICAgICAgICB2YXIgYWN0aW9ucyA9IFtd
OwogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX2FjdGlvbnMubGVuZ3RoOyArK2kp
CiAgICAgICAgICAgICBhY3Rpb25zLnB1c2godGhpcy5fYWN0aW9uc1tpXS5pbmZvKTsKICAgICAg
ICAgcmV0dXJuIGFjdGlvbnM7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcG9wb3ZlclRvZ2dsZUVu
YWJsZWRDaGVja2JveENoYW5nZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9wb3BvdmVyVG9nZ2xl
RW5hYmxlZENoZWNrYm94Q2hhbmdlZChldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuZGlzYWJs
ZWQgPSAhZXZlbnQudGFyZ2V0LmNoZWNrZWQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcG9wb3Zl
ckNvbmRpdGlvbklucHV0Q2hhbmdlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX3BvcG92ZXJDb25k
aXRpb25JbnB1dENoYW5nZWQoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLmNvbmRpdGlvbiA9
IGV2ZW50LnRhcmdldC52YWx1ZTsKLSAgICB9LAorICAgIH0KIAotICAgIF9wb3BvdmVyVG9nZ2xl
QXV0b0NvbnRpbnVlQ2hlY2tib3hDaGFuZ2VkOiBmdW5jdGlvbihldmVudCkKKyAgICBfcG9wb3Zl
clRvZ2dsZUF1dG9Db250aW51ZUNoZWNrYm94Q2hhbmdlZChldmVudCkKICAgICB7CiAgICAgICAg
IHRoaXMuYXV0b0NvbnRpbnVlID0gZXZlbnQudGFyZ2V0LmNoZWNrZWQ7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBfcG9wb3ZlckNvbmRpdGlvbklucHV0S2V5RG93bjogZnVuY3Rpb24oZXZlbnQpCisg
ICAgX3BvcG92ZXJDb25kaXRpb25JbnB1dEtleURvd24oZXZlbnQpCiAgICAgewogICAgICAgICBp
ZiAodGhpcy5fa2V5Ym9hcmRTaG9ydGN1dEVzYy5tYXRjaGVzRXZlbnQoZXZlbnQpIHx8IHRoaXMu
X2tleWJvYXJkU2hvcnRjdXRFbnRlci5tYXRjaGVzRXZlbnQoZXZlbnQpKSB7CiAgICAgICAgICAg
ICB0aGlzLl9wb3BvdmVyLmRpc21pc3MoKTsKICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdh
dGlvbigpOwogICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgfQot
ICAgIH0sCisgICAgfQogCi0gICAgX2VkaXRCcmVha3BvaW50UG9wb3ZlckNvbnRlbnRFbGVtZW50
OiBmdW5jdGlvbigpCisgICAgX2VkaXRCcmVha3BvaW50UG9wb3ZlckNvbnRlbnRFbGVtZW50KCkK
ICAgICB7CiAgICAgICAgIHZhciBjb250ZW50ID0gdGhpcy5fcG9wb3ZlckNvbnRlbnRFbGVtZW50
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgICAgIGNvbnRlbnQuY2xhc3NO
YW1lID0gV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQuUG9wb3ZlckNsYXNzTmFtZTsKQEAgLTQ3OCw5
ICs0NTIsOSBAQCBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5wcm90b3R5cGUgPSB7CiAgICAgICAg
IGNvbnRlbnQuYXBwZW5kQ2hpbGQodGFibGUpOwogCiAgICAgICAgIHJldHVybiBjb250ZW50Owot
ICAgIH0sCisgICAgfQogCi0gICAgX3BvcG92ZXJBY3Rpb25zQ3JlYXRlQWRkQWN0aW9uQnV0dG9u
OiBmdW5jdGlvbigpCisgICAgX3BvcG92ZXJBY3Rpb25zQ3JlYXRlQWRkQWN0aW9uQnV0dG9uKCkK
ICAgICB7CiAgICAgICAgIHRoaXMuX3BvcG92ZXJDb250ZW50RWxlbWVudC5jbGFzc0xpc3QucmVt
b3ZlKFdlYkluc3BlY3Rvci5CcmVha3BvaW50LldpZGVQb3BvdmVyQ2xhc3NOYW1lKTsKICAgICAg
ICAgdGhpcy5fYWN0aW9uc0NvbnRhaW5lci5yZW1vdmVDaGlsZHJlbigpOwpAQCAtNDg4LDkgKzQ2
Miw5IEBAIFdlYkluc3BlY3Rvci5CcmVha3BvaW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFy
IGFkZEFjdGlvbkJ1dHRvbiA9IHRoaXMuX2FjdGlvbnNDb250YWluZXIuYXBwZW5kQ2hpbGQoZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiYnV0dG9uIikpOwogICAgICAgICBhZGRBY3Rpb25CdXR0b24u
dGV4dENvbnRlbnQgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkFkZCBBY3Rpb24iKTsKICAgICAg
ICAgYWRkQWN0aW9uQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fcG9wb3Zl
ckFjdGlvbnNBZGRBY3Rpb25CdXR0b25DbGlja2VkLmJpbmQodGhpcykpOwotICAgIH0sCisgICAg
fQogCi0gICAgX3BvcG92ZXJBY3Rpb25zQWRkQWN0aW9uQnV0dG9uQ2xpY2tlZDogZnVuY3Rpb24o
ZXZlbnQpCisgICAgX3BvcG92ZXJBY3Rpb25zQWRkQWN0aW9uQnV0dG9uQ2xpY2tlZChldmVudCkK
ICAgICB7CiAgICAgICAgIHRoaXMuX3BvcG92ZXJDb250ZW50RWxlbWVudC5jbGFzc0xpc3QuYWRk
KFdlYkluc3BlY3Rvci5CcmVha3BvaW50LldpZGVQb3BvdmVyQ2xhc3NOYW1lKTsKICAgICAgICAg
dGhpcy5fYWN0aW9uc0NvbnRhaW5lci5yZW1vdmVDaGlsZHJlbigpOwpAQCAtNTAwLDkgKzQ3NCw5
IEBAIFdlYkluc3BlY3Rvci5CcmVha3BvaW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5f
cG9wb3ZlckFjdGlvbnNJbnNlcnRCcmVha3BvaW50QWN0aW9uVmlldyhuZXdCcmVha3BvaW50QWN0
aW9uVmlldywgLTEpOwogICAgICAgICB0aGlzLl9wb3BvdmVyT3B0aW9uc1Jvd0VsZW1lbnQuY2xh
c3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5IaWRkZW5TdHlsZUNsYXNzTmFt
ZSk7CiAgICAgICAgIHRoaXMuX3BvcG92ZXIudXBkYXRlKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBfcG9wb3ZlckFjdGlvbnNJbnNlcnRCcmVha3BvaW50QWN0aW9uVmlldzogZnVuY3Rpb24oYnJl
YWtwb2ludEFjdGlvblZpZXcsIGluZGV4KQorICAgIF9wb3BvdmVyQWN0aW9uc0luc2VydEJyZWFr
cG9pbnRBY3Rpb25WaWV3KGJyZWFrcG9pbnRBY3Rpb25WaWV3LCBpbmRleCkKICAgICB7CiAgICAg
ICAgIGlmIChpbmRleCA9PT0gLTEpCiAgICAgICAgICAgICB0aGlzLl9hY3Rpb25zQ29udGFpbmVy
LmFwcGVuZENoaWxkKGJyZWFrcG9pbnRBY3Rpb25WaWV3LmVsZW1lbnQpOwpAQCAtNTEwLDkgKzQ4
NCw5IEBAIFdlYkluc3BlY3Rvci5CcmVha3BvaW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAg
IHZhciBuZXh0RWxlbWVudCA9IHRoaXMuX2FjdGlvbnNDb250YWluZXIuY2hpbGRyZW5baW5kZXgg
KyAxXSB8fCBudWxsOwogICAgICAgICAgICAgdGhpcy5fYWN0aW9uc0NvbnRhaW5lci5pbnNlcnRC
ZWZvcmUoYnJlYWtwb2ludEFjdGlvblZpZXcuZWxlbWVudCwgbmV4dEVsZW1lbnQpOwogICAgICAg
ICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBicmVha3BvaW50QWN0aW9uVmlld0FwcGVuZEFjdGlv
blZpZXc6IGZ1bmN0aW9uKGJyZWFrcG9pbnRBY3Rpb25WaWV3LCBuZXdBY3Rpb24pCisgICAgYnJl
YWtwb2ludEFjdGlvblZpZXdBcHBlbmRBY3Rpb25WaWV3KGJyZWFrcG9pbnRBY3Rpb25WaWV3LCBu
ZXdBY3Rpb24pCiAgICAgewogICAgICAgICB2YXIgbmV3QnJlYWtwb2ludEFjdGlvblZpZXcgPSBu
ZXcgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRBY3Rpb25WaWV3KG5ld0FjdGlvbiwgdGhpcyk7CiAK
QEAgLTUyOSw5ICs1MDMsOSBAQCBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5wcm90b3R5cGUgPSB7
CiAgICAgICAgIHRoaXMuX3BvcG92ZXJPcHRpb25zUm93RWxlbWVudC5jbGFzc0xpc3QucmVtb3Zl
KFdlYkluc3BlY3Rvci5CcmVha3BvaW50LkhpZGRlblN0eWxlQ2xhc3NOYW1lKTsKIAogICAgICAg
ICB0aGlzLl9wb3BvdmVyLnVwZGF0ZSgpOwotICAgIH0sCisgICAgfQogCi0gICAgYnJlYWtwb2lu
dEFjdGlvblZpZXdSZW1vdmVBY3Rpb25WaWV3OiBmdW5jdGlvbihicmVha3BvaW50QWN0aW9uVmll
dykKKyAgICBicmVha3BvaW50QWN0aW9uVmlld1JlbW92ZUFjdGlvblZpZXcoYnJlYWtwb2ludEFj
dGlvblZpZXcpCiAgICAgewogICAgICAgICBicmVha3BvaW50QWN0aW9uVmlldy5lbGVtZW50LnJl
bW92ZSgpOwogCkBAIC01NDIsMTQgKzUxNiwxNCBAQCBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5w
cm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICB0aGlzLl9wb3BvdmVyLnVwZGF0ZSgp
OwotICAgIH0sCisgICAgfQogCi0gICAgYnJlYWtwb2ludEFjdGlvblZpZXdSZXNpemVkOiBmdW5j
dGlvbihicmVha3BvaW50QWN0aW9uVmlldykKKyAgICBicmVha3BvaW50QWN0aW9uVmlld1Jlc2l6
ZWQoYnJlYWtwb2ludEFjdGlvblZpZXcpCiAgICAgewogICAgICAgICB0aGlzLl9wb3BvdmVyLnVw
ZGF0ZSgpOwotICAgIH0sCisgICAgfQogCi0gICAgd2lsbERpc21pc3NQb3BvdmVyOiBmdW5jdGlv
bihwb3BvdmVyKQorICAgIHdpbGxEaXNtaXNzUG9wb3Zlcihwb3BvdmVyKQogICAgIHsKICAgICAg
ICAgY29uc29sZS5hc3NlcnQodGhpcy5fcG9wb3ZlciA9PT0gcG9wb3Zlcik7CiAgICAgICAgIGRl
bGV0ZSB0aGlzLl9wb3BvdmVyQ29udGVudEVsZW1lbnQ7CkBAIC01NTcsOSArNTMxLDkgQEAgV2Vi
SW5zcGVjdG9yLkJyZWFrcG9pbnQucHJvdG90eXBlID0gewogICAgICAgICBkZWxldGUgdGhpcy5f
cG9wb3Zlck9wdGlvbnNDaGVja2JveEVsZW1lbnQ7CiAgICAgICAgIGRlbGV0ZSB0aGlzLl9hY3Rp
b25zQ29udGFpbmVyOwogICAgICAgICBkZWxldGUgdGhpcy5fcG9wb3ZlcjsKLSAgICB9LAorICAg
IH0KIAotICAgIF9zaG93RWRpdEJyZWFrcG9pbnRQb3BvdmVyOiBmdW5jdGlvbihib3VuZGluZ0Ns
aWVudFJlY3QpCisgICAgX3Nob3dFZGl0QnJlYWtwb2ludFBvcG92ZXIoYm91bmRpbmdDbGllbnRS
ZWN0KQogICAgIHsKICAgICAgICAgdmFyIGJvdW5kcyA9IFdlYkluc3BlY3Rvci5SZWN0LnJlY3RG
cm9tQ2xpZW50UmVjdChib3VuZGluZ0NsaWVudFJlY3QpOwogICAgICAgICBib3VuZHMub3JpZ2lu
LnggLT0gMTsgLy8gTW92ZSB0aGUgYW5jaG9yIGxlZnQgb25lIHBpeGVsIHNvIGl0IGxvb2tzIG1v
cmUgY2VudGVyZWQuCkBAIC01NzQsMTcgKzU0OCwzOCBAQCBXZWJJbnNwZWN0b3IuQnJlYWtwb2lu
dC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZChXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5Qb3BvdmVyQ29uZGl0aW9uSW5wdXRJZCkuc2Vs
ZWN0KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfc291cmNlQ29kZUxvY2F0aW9uTG9jYXRpb25D
aGFuZ2VkOiBmdW5jdGlvbihldmVudCkKKyAgICBfc291cmNlQ29kZUxvY2F0aW9uTG9jYXRpb25D
aGFuZ2VkKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5l
cnMoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQuRXZlbnQuTG9jYXRpb25EaWRDaGFuZ2UsIGV2ZW50
LmRhdGEpOwotICAgIH0sCisgICAgfQogCi0gICAgX3NvdXJjZUNvZGVMb2NhdGlvbkRpc3BsYXlM
b2NhdGlvbkNoYW5nZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9zb3VyY2VDb2RlTG9jYXRpb25E
aXNwbGF5TG9jYXRpb25DaGFuZ2VkKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5kaXNwYXRj
aEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQuRXZlbnQuRGlzcGxheUxv
Y2F0aW9uRGlkQ2hhbmdlLCBldmVudC5kYXRhKTsKICAgICB9CiB9OwogCi1XZWJJbnNwZWN0b3Iu
QnJlYWtwb2ludC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90
b3R5cGU7CitXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5Qb3BvdmVyQ2xhc3NOYW1lID0gImVkaXQt
YnJlYWtwb2ludC1wb3BvdmVyLWNvbnRlbnQiOworV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQuV2lk
ZVBvcG92ZXJDbGFzc05hbWUgPSAid2lkZSI7CitXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5Qb3Bv
dmVyQ29uZGl0aW9uSW5wdXRJZCA9ICJlZGl0LWJyZWFrcG9pbnQtcG9wb3Zlci1jb25kaXRpb24i
OworV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQuUG9wb3Zlck9wdGlvbnNBdXRvQ29udGludWVJbnB1
dElkID0gImVkaXQtYnJlYWtwb2ludC1wb3Bvb3Zlci1hdXRvLWNvbnRpbnVlIjsKK1dlYkluc3Bl
Y3Rvci5CcmVha3BvaW50LkhpZGRlblN0eWxlQ2xhc3NOYW1lID0gImhpZGRlbiI7CisKK1dlYklu
c3BlY3Rvci5CcmVha3BvaW50LkRlZmF1bHRCcmVha3BvaW50QWN0aW9uVHlwZSA9IFdlYkluc3Bl
Y3Rvci5CcmVha3BvaW50QWN0aW9uLlR5cGUuTG9nOworCitXZWJJbnNwZWN0b3IuQnJlYWtwb2lu
dC5UeXBlSWRlbnRpZmllciA9ICJicmVha3BvaW50IjsKK1dlYkluc3BlY3Rvci5CcmVha3BvaW50
LlVSTENvb2tpZUtleSA9ICJicmVha3BvaW50LXVybCI7CitXZWJJbnNwZWN0b3IuQnJlYWtwb2lu
dC5MaW5lTnVtYmVyQ29va2llS2V5ID0gImJyZWFrcG9pbnQtbGluZS1udW1iZXIiOworV2ViSW5z
cGVjdG9yLkJyZWFrcG9pbnQuQ29sdW1uTnVtYmVyQ29va2llS2V5ID0gImJyZWFrcG9pbnQtY29s
dW1uLW51bWJlciI7CisKK1dlYkluc3BlY3Rvci5CcmVha3BvaW50LkV2ZW50ID0geworICAgIERp
c2FibGVkU3RhdGVEaWRDaGFuZ2U6ICJicmVha3BvaW50LWRpc2FibGVkLXN0YXRlLWRpZC1jaGFu
Z2UiLAorICAgIFJlc29sdmVkU3RhdGVEaWRDaGFuZ2U6ICJicmVha3BvaW50LXJlc29sdmVkLXN0
YXRlLWRpZC1jaGFuZ2UiLAorICAgIENvbmRpdGlvbkRpZENoYW5nZTogImJyZWFrcG9pbnQtY29u
ZGl0aW9uLWRpZC1jaGFuZ2UiLAorICAgIEFjdGlvbnNEaWRDaGFuZ2U6ICJicmVha3BvaW50LWFj
dGlvbnMtZGlkLWNoYW5nZSIsCisgICAgQXV0b0NvbnRpbnVlRGlkQ2hhbmdlOiAiYnJlYWtwb2lu
dC1hdXRvLWNvbnRpbnVlLWRpZC1jaGFuZ2UiLAorICAgIExvY2F0aW9uRGlkQ2hhbmdlOiAiYnJl
YWtwb2ludC1sb2NhdGlvbi1kaWQtY2hhbmdlIiwKKyAgICBEaXNwbGF5TG9jYXRpb25EaWRDaGFu
Z2U6ICJicmVha3BvaW50LWRpc3BsYXktbG9jYXRpb24tZGlkLWNoYW5nZSIsCit9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0JyZWFrcG9p
bnRBY3Rpb24uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMv
QnJlYWtwb2ludEFjdGlvbi5qcwppbmRleCBhNTVhMTY1Li5iOTRmNzkyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQnJlYWtwb2ludEFjdGlv
bi5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQnJl
YWtwb2ludEFjdGlvbi5qcwpAQCAtMjMsOSArMjMsMTEgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuQnJlYWtwb2ludEFjdGlvbiA9IGZ1
bmN0aW9uKGJyZWFrcG9pbnQsIHR5cGVPckluZm8sIGRhdGEpCitXZWJJbnNwZWN0b3IuQnJlYWtw
b2ludEFjdGlvbiA9IGNsYXNzIEJyZWFrcG9pbnRBY3Rpb24gZXh0ZW5kcyBXZWJJbnNwZWN0b3Iu
T2JqZWN0CiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIGNvbnN0
cnVjdG9yKGJyZWFrcG9pbnQsIHR5cGVPckluZm8sIGRhdGEpCisgICAgeworICAgICAgICBzdXBl
cigpOwogCiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQpOwogICAgICAgICBjb25z
b2xlLmFzc2VydCh0eXBlT3JJbmZvKTsKQEAgLTQzLDQwICs0NSwyOSBAQCBXZWJJbnNwZWN0b3Iu
QnJlYWtwb2ludEFjdGlvbiA9IGZ1bmN0aW9uKGJyZWFrcG9pbnQsIHR5cGVPckluZm8sIGRhdGEp
CiAKICAgICAgICAgY29uc29sZS5hc3NlcnQodHlwZW9mIHRoaXMuX3R5cGUgPT09ICJzdHJpbmci
KTsKICAgICAgICAgdGhpcy5faWQgPSBXZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2VyLm5leHRC
cmVha3BvaW50QWN0aW9uSWRlbnRpZmllcjsKLX07Ci0KLVdlYkluc3BlY3Rvci5CcmVha3BvaW50
QWN0aW9uLlR5cGUgPSB7Ci0gICAgTG9nOiAibG9nIiwKLSAgICBFdmFsdWF0ZTogImV2YWx1YXRl
IiwKLSAgICBTb3VuZDogInNvdW5kIiwKLSAgICBQcm9iZTogInByb2JlIgotfTsKLQotV2ViSW5z
cGVjdG9yLkJyZWFrcG9pbnRBY3Rpb24ucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBX
ZWJJbnNwZWN0b3IuQnJlYWtwb2ludEFjdGlvbiwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rv
ci5PYmplY3QucHJvdG90eXBlLAorICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IGJy
ZWFrcG9pbnQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2JyZWFrcG9pbnQ7Ci0gICAg
fSwKKyAgICB9CiAKICAgICBnZXQgaWQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2lk
OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHR5cGUoKQogICAgIHsKICAgICAgICAgcmV0dXJu
IHRoaXMuX3R5cGU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgZGF0YSgpCiAgICAgewogICAg
ICAgICByZXR1cm4gdGhpcy5fZGF0YTsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBkYXRhKGRh
dGEpCiAgICAgewpAQCAtODYsNyArNzcsNyBAQCBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludEFjdGlv
bi5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2RhdGEgPSBkYXRhOwogCiAgICAgICAgIHRo
aXMuX2JyZWFrcG9pbnQuYnJlYWtwb2ludEFjdGlvbkRpZENoYW5nZSh0aGlzKTsKLSAgICB9LAor
ICAgIH0KIAogICAgIGdldCBpbmZvKCkKICAgICB7CkBAIC05NiwzICs4NywxMCBAQCBXZWJJbnNw
ZWN0b3IuQnJlYWtwb2ludEFjdGlvbi5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiBvYmo7
CiAgICAgfQogfTsKKworV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRBY3Rpb24uVHlwZSA9IHsKKyAg
ICBMb2c6ICJsb2ciLAorICAgIEV2YWx1YXRlOiAiZXZhbHVhdGUiLAorICAgIFNvdW5kOiAic291
bmQiLAorICAgIFByb2JlOiAicHJvYmUiCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NTU0NvbXBsZXRpb25zLmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NTU0NvbXBsZXRpb25zLmpzCmluZGV4
IDM2MzM3ZDkuLjI4NDIxYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL01vZGVscy9DU1NDb21wbGV0aW9ucy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTQ29tcGxldGlvbnMuanMKQEAgLTMxLDcgKzMx
LDkgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkNTU0NvbXBsZXRpb25z
ID0gZnVuY3Rpb24ocHJvcGVydGllcywgYWNjZXB0RW1wdHlQcmVmaXgpCitXZWJJbnNwZWN0b3Iu
Q1NTQ29tcGxldGlvbnMgPSBjbGFzcyBDU1NDb21wbGV0aW9ucworeworICAgIGNvbnN0cnVjdG9y
KHByb3BlcnRpZXMsIGFjY2VwdEVtcHR5UHJlZml4KQogICAgIHsKICAgICAgICAgdGhpcy5fdmFs
dWVzID0gW107CiAgICAgICAgIHRoaXMuX2xvbmdoYW5kcyA9IHt9OwpAQCAtNzAsMTEgKzcyLDEx
IEBAIFdlYkluc3BlY3Rvci5DU1NDb21wbGV0aW9ucyA9IGZ1bmN0aW9uKHByb3BlcnRpZXMsIGFj
Y2VwdEVtcHR5UHJlZml4KQogICAgICAgICB0aGlzLl92YWx1ZXMuc29ydCgpOwogCiAgICAgICAg
IHRoaXMuX2FjY2VwdEVtcHR5UHJlZml4ID0gYWNjZXB0RW1wdHlQcmVmaXg7Ci19OworICAgIH0K
IAotV2ViSW5zcGVjdG9yLkNTU0NvbXBsZXRpb25zLmNzc05hbWVDb21wbGV0aW9ucyA9IG51bGw7
CisgICAgLy8gU3RhdGljCiAKLVdlYkluc3BlY3Rvci5DU1NDb21wbGV0aW9ucy5yZXF1ZXN0Q1NT
TmFtZUNvbXBsZXRpb25zID0gZnVuY3Rpb24oKQorICAgIHN0YXRpYyByZXF1ZXN0Q1NTTmFtZUNv
bXBsZXRpb25zKCkKICAgICB7CiAgICAgICAgIGlmIChXZWJJbnNwZWN0b3IuQ1NTQ29tcGxldGlv
bnMuY3NzTmFtZUNvbXBsZXRpb25zKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTU4LDE1ICsx
NjAsMTYgQEAgV2ViSW5zcGVjdG9yLkNTU0NvbXBsZXRpb25zLnJlcXVlc3RDU1NOYW1lQ29tcGxl
dGlvbnMgPSBmdW5jdGlvbigpCiAKICAgICAgICAgaWYgKHdpbmRvdy5DU1NBZ2VudCkKICAgICAg
ICAgICAgIENTU0FnZW50LmdldFN1cHBvcnRlZENTU1Byb3BlcnRpZXMocHJvcGVydHlOYW1lc0Nh
bGxiYWNrKTsKLX07CisgICAgfQorCisgICAgLy8gUHVibGljCiAKLVdlYkluc3BlY3Rvci5DU1ND
b21wbGV0aW9ucy5wcm90b3R5cGUgPSB7CiAgICAgZ2V0IHZhbHVlcygpCiAgICAgewogICAgICAg
ICByZXR1cm4gdGhpcy5fdmFsdWVzOwotICAgIH0sCisgICAgfQogCi0gICAgc3RhcnRzV2l0aDog
ZnVuY3Rpb24ocHJlZml4KQorICAgIHN0YXJ0c1dpdGgocHJlZml4KQogICAgIHsKICAgICAgICAg
dmFyIGZpcnN0SW5kZXggPSB0aGlzLl9maXJzdEluZGV4T2ZQcmVmaXgocHJlZml4KTsKICAgICAg
ICAgaWYgKGZpcnN0SW5kZXggPT09IC0xKQpAQCAtMTc2LDE1ICsxNzksMTUgQEAgV2ViSW5zcGVj
dG9yLkNTU0NvbXBsZXRpb25zLnByb3RvdHlwZSA9IHsKICAgICAgICAgd2hpbGUgKGZpcnN0SW5k
ZXggPCB0aGlzLl92YWx1ZXMubGVuZ3RoICYmIHRoaXMuX3ZhbHVlc1tmaXJzdEluZGV4XS5zdGFy
dHNXaXRoKHByZWZpeCkpCiAgICAgICAgICAgICByZXN1bHRzLnB1c2godGhpcy5fdmFsdWVzW2Zp
cnN0SW5kZXgrK10pOwogICAgICAgICByZXR1cm4gcmVzdWx0czsKLSAgICB9LAorICAgIH0KIAot
ICAgIGZpcnN0U3RhcnRzV2l0aDogZnVuY3Rpb24ocHJlZml4KQorICAgIGZpcnN0U3RhcnRzV2l0
aChwcmVmaXgpCiAgICAgewogICAgICAgICB2YXIgZm91bmRJbmRleCA9IHRoaXMuX2ZpcnN0SW5k
ZXhPZlByZWZpeChwcmVmaXgpOwogICAgICAgICByZXR1cm4gKGZvdW5kSW5kZXggPT09IC0xID8g
IiIgOiB0aGlzLl92YWx1ZXNbZm91bmRJbmRleF0pOwotICAgIH0sCisgICAgfQogCi0gICAgX2Zp
cnN0SW5kZXhPZlByZWZpeDogZnVuY3Rpb24ocHJlZml4KQorICAgIF9maXJzdEluZGV4T2ZQcmVm
aXgocHJlZml4KQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl92YWx1ZXMubGVuZ3RoKQogICAg
ICAgICAgICAgcmV0dXJuIC0xOwpAQCAtMjE0LDI2ICsyMTcsMjYgQEAgV2ViSW5zcGVjdG9yLkNT
U0NvbXBsZXRpb25zLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGZvdW5kSW5kZXgtLTsKIAog
ICAgICAgICByZXR1cm4gZm91bmRJbmRleDsKLSAgICB9LAorICAgIH0KIAotICAgIGtleVNldDog
ZnVuY3Rpb24oKQorICAgIGtleVNldCgpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX2tleVNl
dCkKICAgICAgICAgICAgIHRoaXMuX2tleVNldCA9IHRoaXMuX3ZhbHVlcy5rZXlTZXQoKTsKICAg
ICAgICAgcmV0dXJuIHRoaXMuX2tleVNldDsKLSAgICB9LAorICAgIH0KIAotICAgIG5leHQ6IGZ1
bmN0aW9uKHN0ciwgcHJlZml4KQorICAgIG5leHQoc3RyLCBwcmVmaXgpCiAgICAgewogICAgICAg
ICByZXR1cm4gdGhpcy5fY2xvc2VzdChzdHIsIHByZWZpeCwgMSk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBwcmV2aW91czogZnVuY3Rpb24oc3RyLCBwcmVmaXgpCisgICAgcHJldmlvdXMoc3RyLCBw
cmVmaXgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fY2xvc2VzdChzdHIsIHByZWZpeCwg
LTEpOwotICAgIH0sCisgICAgfQogCi0gICAgX2Nsb3Nlc3Q6IGZ1bmN0aW9uKHN0ciwgcHJlZml4
LCBzaGlmdCkKKyAgICBfY2xvc2VzdChzdHIsIHByZWZpeCwgc2hpZnQpCiAgICAgewogICAgICAg
ICBpZiAoIXN0cikKICAgICAgICAgICAgIHJldHVybiAiIjsKQEAgLTI1MSwyNSArMjU0LDI3IEBA
IFdlYkluc3BlY3Rvci5DU1NDb21wbGV0aW9ucy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBq
ID0gcHJvcGVydGllc1dpdGhQcmVmaXguaW5kZXhPZihzdHIpOwogICAgICAgICBqID0gKGogKyBw
cm9wZXJ0aWVzV2l0aFByZWZpeC5sZW5ndGggKyBzaGlmdCkgJSBwcm9wZXJ0aWVzV2l0aFByZWZp
eC5sZW5ndGg7CiAgICAgICAgIHJldHVybiBwcm9wZXJ0aWVzV2l0aFByZWZpeFtqXTsKLSAgICB9
LAorICAgIH0KIAotICAgIGlzU2hvcnRoYW5kUHJvcGVydHlOYW1lOiBmdW5jdGlvbihzaG9ydGhh
bmQpCisgICAgaXNTaG9ydGhhbmRQcm9wZXJ0eU5hbWUoc2hvcnRoYW5kKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHNob3J0aGFuZCBpbiB0aGlzLl9sb25naGFuZHM7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBpc0xvbmdoYW5kUHJvcGVydHlOYW1lOiBmdW5jdGlvbihsb25naGFuZCkKKyAgICBpc0xv
bmdoYW5kUHJvcGVydHlOYW1lKGxvbmdoYW5kKQogICAgIHsKICAgICAgICAgcmV0dXJuIGxvbmdo
YW5kIGluIHRoaXMuX3Nob3J0aGFuZHM7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBsb25naGFuZHNG
b3JTaG9ydGhhbmQ6IGZ1bmN0aW9uKHNob3J0aGFuZCkKKyAgICBsb25naGFuZHNGb3JTaG9ydGhh
bmQoc2hvcnRoYW5kKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2xvbmdoYW5kc1tzaG9y
dGhhbmRdIHx8IFtdOwotICAgIH0sCisgICAgfQogCi0gICAgc2hvcnRoYW5kc0ZvckxvbmdoYW5k
OiBmdW5jdGlvbihsb25naGFuZCkKKyAgICBzaG9ydGhhbmRzRm9yTG9uZ2hhbmQobG9uZ2hhbmQp
CiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc2hvcnRoYW5kc1tsb25naGFuZF0gfHwgW107
CiAgICAgfQogfTsKKworV2ViSW5zcGVjdG9yLkNTU0NvbXBsZXRpb25zLmNzc05hbWVDb21wbGV0
aW9ucyA9IG51bGw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Nb2RlbHMvQ1NTTWVkaWEuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Nb2RlbHMvQ1NTTWVkaWEuanMKaW5kZXggYThjNDI4Ny4uYWMyZGVlOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NTU01lZGlhLmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9DU1NNZWRp
YS5qcwpAQCAtMjMsMzYgKzIzLDMwIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkNTU01lZGlhID0gZnVuY3Rpb24odHlwZSwgdGV4dCwg
c291cmNlQ29kZUxvY2F0aW9uKQorV2ViSW5zcGVjdG9yLkNTU01lZGlhID0gY2xhc3MgQ1NTTWVk
aWEgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVj
dC5jYWxsKHRoaXMpOworICAgIGNvbnN0cnVjdG9yKHR5cGUsIHRleHQsIHNvdXJjZUNvZGVMb2Nh
dGlvbikKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CisKKyAgICAgICAgY29uc29sZS5hc3NlcnQo
IXNvdXJjZUNvZGVMb2NhdGlvbiB8fCBzb3VyY2VDb2RlTG9jYXRpb24gaW5zdGFuY2VvZiBXZWJJ
bnNwZWN0b3IuU291cmNlQ29kZUxvY2F0aW9uKTsKIAogICAgICAgICB0aGlzLl90eXBlID0gdHlw
ZSB8fCBudWxsOwogICAgICAgICB0aGlzLl90ZXh0ID0gdGV4dCB8fCAiIjsKICAgICAgICAgdGhp
cy5fc291cmNlQ29kZUxvY2F0aW9uID0gc291cmNlQ29kZUxvY2F0aW9uIHx8IG51bGw7Ci19Owot
Ci1XZWJJbnNwZWN0b3IuQ1NTTWVkaWEuVHlwZSA9IHsKLSAgICBNZWRpYVJ1bGU6ICJjc3MtbWVk
aWEtdHlwZS1tZWRpYS1ydWxlIiwKLSAgICBJbXBvcnRSdWxlOiAiY3NzLW1lZGlhLXR5cGUtaW1w
b3J0LXJ1bGUiLAotICAgIExpbmtlZFN0eWxlU2hlZXQ6ICJjc3MtbWVkaWEtdHlwZS1saW5rZWQt
c3R5bGVzaGVldCIsCi0gICAgSW5saW5lU3R5bGVTaGVldDogImNzcy1tZWRpYS10eXBlLWlubGlu
ZS1zdHlsZXNoZWV0IgotfTsKLQotV2ViSW5zcGVjdG9yLkNTU01lZGlhLnByb3RvdHlwZSA9IHsK
LSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkNTU01lZGlhLAorICAgIH0KIAogICAgIC8v
IFB1YmxpYwogCiAgICAgZ2V0IHR5cGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3R5
cGU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgdGV4dCgpCiAgICAgewogICAgICAgICByZXR1
cm4gdGhpcy5fdGV4dDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzb3VyY2VDb2RlTG9jYXRp
b24oKQogICAgIHsKQEAgLTYwLDQgKzU0LDkgQEAgV2ViSW5zcGVjdG9yLkNTU01lZGlhLnByb3Rv
dHlwZSA9IHsKICAgICB9CiB9OwogCi1XZWJJbnNwZWN0b3IuQ1NTTWVkaWEucHJvdG90eXBlLl9f
cHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOworV2ViSW5zcGVjdG9yLkNT
U01lZGlhLlR5cGUgPSB7CisgICAgTWVkaWFSdWxlOiAiY3NzLW1lZGlhLXR5cGUtbWVkaWEtcnVs
ZSIsCisgICAgSW1wb3J0UnVsZTogImNzcy1tZWRpYS10eXBlLWltcG9ydC1ydWxlIiwKKyAgICBM
aW5rZWRTdHlsZVNoZWV0OiAiY3NzLW1lZGlhLXR5cGUtbGlua2VkLXN0eWxlc2hlZXQiLAorICAg
IElubGluZVN0eWxlU2hlZXQ6ICJjc3MtbWVkaWEtdHlwZS1pbmxpbmUtc3R5bGVzaGVldCIKK307
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMv
Q1NTUHJvcGVydHkuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2Rl
bHMvQ1NTUHJvcGVydHkuanMKaW5kZXggMGJjOGY5NC4uMjJkNjUwNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NTU1Byb3BlcnR5LmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9DU1NQcm9wZXJ0
eS5qcwpAQCAtMjMsNTAgKzIzLDQxIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkNTU1Byb3BlcnR5ID0gZnVuY3Rpb24oaW5kZXgsIHRl
eHQsIG5hbWUsIHZhbHVlLCBwcmlvcml0eSwgZW5hYmxlZCwgb3ZlcnJpZGRlbiwgaW1wbGljaXQs
IGFub255bW91cywgdmFsaWQsIHN0eWxlU2hlZXRUZXh0UmFuZ2UsIHN0eWxlRGVjbGFyYXRpb25U
ZXh0UmFuZ2UpCitXZWJJbnNwZWN0b3IuQ1NTUHJvcGVydHkgPSBjbGFzcyBDU1NQcm9wZXJ0eSBl
eHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIHsKLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNh
bGwodGhpcyk7CisgICAgY29uc3RydWN0b3IoaW5kZXgsIHRleHQsIG5hbWUsIHZhbHVlLCBwcmlv
cml0eSwgZW5hYmxlZCwgb3ZlcnJpZGRlbiwgaW1wbGljaXQsIGFub255bW91cywgdmFsaWQsIHN0
eWxlU2hlZXRUZXh0UmFuZ2UsIHN0eWxlRGVjbGFyYXRpb25UZXh0UmFuZ2UpCisgICAgeworICAg
ICAgICBzdXBlcigpOwogCiAgICAgICAgIHRoaXMuX293bmVyU3R5bGUgPSBudWxsOwogICAgICAg
ICB0aGlzLl9pbmRleCA9IGluZGV4OwogCiAgICAgICAgIHRoaXMudXBkYXRlKHRleHQsIG5hbWUs
IHZhbHVlLCBwcmlvcml0eSwgZW5hYmxlZCwgb3ZlcnJpZGRlbiwgaW1wbGljaXQsIGFub255bW91
cywgdmFsaWQsIHN0eWxlU2hlZXRUZXh0UmFuZ2UsIHN0eWxlRGVjbGFyYXRpb25UZXh0UmFuZ2Us
IHRydWUpOwotfTsKLQotV2ViSW5zcGVjdG9yLk9iamVjdC5hZGRDb25zdHJ1Y3RvckZ1bmN0aW9u
cyhXZWJJbnNwZWN0b3IuQ1NTUHJvcGVydHkpOwotCi1XZWJJbnNwZWN0b3IuQ1NTUHJvcGVydHku
RXZlbnQgPSB7Ci0gICAgQ2hhbmdlZDogImNzcy1wcm9wZXJ0eS1jaGFuZ2VkIiwKLSAgICBPdmVy
cmlkZGVuU3RhdHVzQ2hhbmdlZDogImNzcy1wcm9wZXJ0eS1vdmVycmlkZGVuLXN0YXR1cy1jaGFu
Z2VkIgotfTsKLQotV2ViSW5zcGVjdG9yLkNTU1Byb3BlcnR5LnByb3RvdHlwZSA9IHsKLSAgICBj
b25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkNTU1Byb3BlcnR5LAotICAgIF9fcHJvdG9fXzogV2Vi
SW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGUsCisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAg
ICBnZXQgb3duZXJTdHlsZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fb3duZXJTdHls
ZTsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBvd25lclN0eWxlKG93bmVyU3R5bGUpCiAgICAg
ewogICAgICAgICB0aGlzLl9vd25lclN0eWxlID0gb3duZXJTdHlsZSB8fCBudWxsOwotICAgIH0s
CisgICAgfQogCiAgICAgZ2V0IGluZGV4KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9p
bmRleDsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBpbmRleChpbmRleCkKICAgICB7CiAgICAg
ICAgIHRoaXMuX2luZGV4ID0gaW5kZXg7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB1cGRhdGU6IGZ1
bmN0aW9uKHRleHQsIG5hbWUsIHZhbHVlLCBwcmlvcml0eSwgZW5hYmxlZCwgb3ZlcnJpZGRlbiwg
aW1wbGljaXQsIGFub255bW91cywgdmFsaWQsIHN0eWxlU2hlZXRUZXh0UmFuZ2UsIHN0eWxlRGVj
bGFyYXRpb25UZXh0UmFuZ2UsIGRvbnRGaXJlRXZlbnRzKQorICAgIHVwZGF0ZSh0ZXh0LCBuYW1l
LCB2YWx1ZSwgcHJpb3JpdHksIGVuYWJsZWQsIG92ZXJyaWRkZW4sIGltcGxpY2l0LCBhbm9ueW1v
dXMsIHZhbGlkLCBzdHlsZVNoZWV0VGV4dFJhbmdlLCBzdHlsZURlY2xhcmF0aW9uVGV4dFJhbmdl
LCBkb250RmlyZUV2ZW50cykKICAgICB7CiAgICAgICAgIHRleHQgPSB0ZXh0IHx8ICIiOwogICAg
ICAgICBuYW1lID0gbmFtZSB8fCAiIjsKQEAgLTExNiw3ICsxMDcsNyBAQCBXZWJJbnNwZWN0b3Iu
Q1NTUHJvcGVydHkucHJvdG90eXBlID0gewogCiAgICAgICAgIGlmIChjaGFuZ2VkKQogICAgICAg
ICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkNTU1Byb3Bl
cnR5LkV2ZW50LkNoYW5nZWQpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHN5bnRoZXNpemVk
VGV4dCgpCiAgICAgewpAQCAtMTI2LDE3ICsxMTcsMTcgQEAgV2ViSW5zcGVjdG9yLkNTU1Byb3Bl
cnR5LnByb3RvdHlwZSA9IHsKIAogICAgICAgICB2YXIgcHJpb3JpdHkgPSB0aGlzLnByaW9yaXR5
OwogICAgICAgICByZXR1cm4gbmFtZSArICI6ICIgKyB0aGlzLnZhbHVlLnRyaW0oKSArIChwcmlv
cml0eSA/ICIgISIgKyBwcmlvcml0eSA6ICIiKSArICI7IjsKLSAgICB9LAorICAgIH0KIAogICAg
IGdldCB0ZXh0KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl90ZXh0IHx8IHRoaXMuc3lu
dGhlc2l6ZWRUZXh0OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IG5hbWUoKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHRoaXMuX25hbWU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgY2Fub25p
Y2FsTmFtZSgpCiAgICAgewpAQCAtMTQ2LDMyICsxMzcsMzIgQEAgV2ViSW5zcGVjdG9yLkNTU1By
b3BlcnR5LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fY2Fub25pY2FsTmFtZSA9IFdlYklu
c3BlY3Rvci5jc3NTdHlsZU1hbmFnZXIuY2Fub25pY2FsTmFtZUZvclByb3BlcnR5TmFtZSh0aGlz
Lm5hbWUpOwogCiAgICAgICAgIHJldHVybiB0aGlzLl9jYW5vbmljYWxOYW1lOwotICAgIH0sCisg
ICAgfQogCiAgICAgZ2V0IHZhbHVlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl92YWx1
ZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBpbXBvcnRhbnQoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHRoaXMucHJpb3JpdHkgPT09ICJpbXBvcnRhbnQiOwotICAgIH0sCisgICAgfQogCiAg
ICAgZ2V0IHByaW9yaXR5KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9wcmlvcml0eTsK
LSAgICB9LAorICAgIH0KIAogICAgIGdldCBlbmFibGVkKCkKICAgICB7CiAgICAgICAgIHJldHVy
biB0aGlzLl9lbmFibGVkICYmIHRoaXMuX293bmVyU3R5bGUgJiYgKCFpc05hTih0aGlzLl9pbmRl
eCkgfHwgdGhpcy5fb3duZXJTdHlsZS50eXBlID09PSBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNs
YXJhdGlvbi5UeXBlLkNvbXB1dGVkKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBvdmVycmlk
ZGVuKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9vdmVycmlkZGVuOwotICAgIH0sCisg
ICAgfQogCiAgICAgc2V0IG92ZXJyaWRkZW4ob3ZlcnJpZGRlbikKICAgICB7CkBAIC0xOTgsMzIg
KzE4OSwzMiBAQCBXZWJJbnNwZWN0b3IuQ1NTUHJvcGVydHkucHJvdG90eXBlID0gewogICAgICAg
ICB9CiAKICAgICAgICAgdGhpcy5fb3ZlcnJpZGRlblN0YXR1c0NoYW5nZWRUaW1lb3V0ID0gc2V0
VGltZW91dChkZWxheWVkLmJpbmQodGhpcyksIDApOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0
IGltcGxpY2l0KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9pbXBsaWNpdDsKLSAgICB9
LAorICAgIH0KIAogICAgIGdldCBhbm9ueW1vdXMoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRo
aXMuX2Fub255bW91czsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBpbmhlcml0ZWQoKQogICAg
IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2luaGVyaXRlZDsKLSAgICB9LAorICAgIH0KIAogICAg
IGdldCB2YWxpZCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fdmFsaWQ7Ci0gICAgfSwK
KyAgICB9CiAKICAgICBnZXQgc3R5bGVTaGVldFRleHRSYW5nZSgpCiAgICAgewogICAgICAgICBy
ZXR1cm4gdGhpcy5fc3R5bGVTaGVldFRleHRSYW5nZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdl
dCBzdHlsZURlY2xhcmF0aW9uVGV4dFJhbmdlKCkKICAgICB7CkBAIC0yNTEsMzQgKzI0MiwzNCBA
QCBXZWJJbnNwZWN0b3IuQ1NTUHJvcGVydHkucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9z
dHlsZURlY2xhcmF0aW9uVGV4dFJhbmdlID0gbmV3IFdlYkluc3BlY3Rvci5UZXh0UmFuZ2Uoc3Rh
cnRMaW5lLCBzdGFydENvbHVtbiwgZW5kTGluZSwgZW5kQ29sdW1uKTsKIAogICAgICAgICByZXR1
cm4gdGhpcy5fc3R5bGVEZWNsYXJhdGlvblRleHRSYW5nZTsKLSAgICB9LAorICAgIH0KIAogICAg
IGdldCByZWxhdGVkU2hvcnRoYW5kUHJvcGVydHkoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRo
aXMuX3JlbGF0ZWRTaG9ydGhhbmRQcm9wZXJ0eTsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBy
ZWxhdGVkU2hvcnRoYW5kUHJvcGVydHkocHJvcGVydHkpCiAgICAgewogICAgICAgICB0aGlzLl9y
ZWxhdGVkU2hvcnRoYW5kUHJvcGVydHkgPSBwcm9wZXJ0eSB8fCBudWxsOwotICAgIH0sCisgICAg
fQogCiAgICAgZ2V0IHJlbGF0ZWRMb25naGFuZFByb3BlcnRpZXMoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHRoaXMuX3JlbGF0ZWRMb25naGFuZFByb3BlcnRpZXM7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBhZGRSZWxhdGVkTG9uZ2hhbmRQcm9wZXJ0eTogZnVuY3Rpb24ocHJvcGVydHkpCisgICAg
YWRkUmVsYXRlZExvbmdoYW5kUHJvcGVydHkocHJvcGVydHkpCiAgICAgewogICAgICAgICB0aGlz
Ll9yZWxhdGVkTG9uZ2hhbmRQcm9wZXJ0aWVzLnB1c2gocHJvcGVydHkpOwotICAgIH0sCisgICAg
fQogCi0gICAgY2xlYXJSZWxhdGVkTG9uZ2hhbmRQcm9wZXJ0aWVzOiBmdW5jdGlvbihwcm9wZXJ0
eSkKKyAgICBjbGVhclJlbGF0ZWRMb25naGFuZFByb3BlcnRpZXMocHJvcGVydHkpCiAgICAgewog
ICAgICAgICB0aGlzLl9yZWxhdGVkTG9uZ2hhbmRQcm9wZXJ0aWVzID0gW107Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBoYXNPdGhlclZlbmRvck5hbWVPcktleXdvcmQ6IGZ1bmN0aW9uKCkKKyAgICBo
YXNPdGhlclZlbmRvck5hbWVPcktleXdvcmQoKQogICAgIHsKICAgICAgICAgaWYgKCJfaGFzT3Ro
ZXJWZW5kb3JOYW1lT3JLZXl3b3JkIiBpbiB0aGlzKQogICAgICAgICAgICAgcmV0dXJuIHRoaXMu
X2hhc090aGVyVmVuZG9yTmFtZU9yS2V5d29yZDsKQEAgLTI4OCwzICsyNzksOCBAQCBXZWJJbnNw
ZWN0b3IuQ1NTUHJvcGVydHkucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gdGhpcy5faGFz
T3RoZXJWZW5kb3JOYW1lT3JLZXl3b3JkOwogICAgIH0KIH07CisKK1dlYkluc3BlY3Rvci5DU1NQ
cm9wZXJ0eS5FdmVudCA9IHsKKyAgICBDaGFuZ2VkOiAiY3NzLXByb3BlcnR5LWNoYW5nZWQiLAor
ICAgIE92ZXJyaWRkZW5TdGF0dXNDaGFuZ2VkOiAiY3NzLXByb3BlcnR5LW92ZXJyaWRkZW4tc3Rh
dHVzLWNoYW5nZWQiCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvTW9kZWxzL0NTU1J1bGUuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Nb2RlbHMvQ1NTUnVsZS5qcwppbmRleCAwZDg3NDEwLi42ZjM4NzNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTUnVsZS5q
cworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTUnVs
ZS5qcwpAQCAtMjMsOSArMjMsMTEgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCi1XZWJJbnNwZWN0b3IuQ1NTUnVsZSA9IGZ1bmN0aW9uKG5vZGVTdHlsZXMsIG93
bmVyU3R5bGVTaGVldCwgaWQsIHR5cGUsIHNvdXJjZUNvZGVMb2NhdGlvbiwgc2VsZWN0b3JUZXh0
LCBzZWxlY3RvcnMsIG1hdGNoZWRTZWxlY3RvckluZGljZXMsIHN0eWxlLCBtZWRpYUxpc3QpCitX
ZWJJbnNwZWN0b3IuQ1NTUnVsZSA9IGNsYXNzIENTU1J1bGUgZXh0ZW5kcyBXZWJJbnNwZWN0b3Iu
T2JqZWN0CiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIGNvbnN0
cnVjdG9yKG5vZGVTdHlsZXMsIG93bmVyU3R5bGVTaGVldCwgaWQsIHR5cGUsIHNvdXJjZUNvZGVM
b2NhdGlvbiwgc2VsZWN0b3JUZXh0LCBzZWxlY3RvcnMsIG1hdGNoZWRTZWxlY3RvckluZGljZXMs
IHN0eWxlLCBtZWRpYUxpc3QpCisgICAgeworICAgICAgICBzdXBlcigpOwogCiAgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KG5vZGVTdHlsZXMpOwogICAgICAgICB0aGlzLl9ub2RlU3R5bGVzID0gbm9k
ZVN0eWxlczsKQEAgLTM1LDQyICszNywyNiBAQCBXZWJJbnNwZWN0b3IuQ1NTUnVsZSA9IGZ1bmN0
aW9uKG5vZGVTdHlsZXMsIG93bmVyU3R5bGVTaGVldCwgaWQsIHR5cGUsIHNvdXJjZUNvZAogICAg
ICAgICB0aGlzLl90eXBlID0gdHlwZSB8fCBudWxsOwogCiAgICAgICAgIHRoaXMudXBkYXRlKHNv
dXJjZUNvZGVMb2NhdGlvbiwgc2VsZWN0b3JUZXh0LCBzZWxlY3RvcnMsIG1hdGNoZWRTZWxlY3Rv
ckluZGljZXMsIHN0eWxlLCBtZWRpYUxpc3QsIHRydWUpOwotfTsKLQotV2ViSW5zcGVjdG9yLk9i
amVjdC5hZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhXZWJJbnNwZWN0b3IuQ1NTUnVsZSk7Ci0KLVdl
Ykluc3BlY3Rvci5DU1NSdWxlLkV2ZW50ID0gewotICAgIENoYW5nZWQ6ICJjc3MtcnVsZS1jaGFu
Z2VkIgotfTsKLQotV2ViSW5zcGVjdG9yLkNTU1J1bGUuVHlwZSA9IHsKLSAgICBBdXRob3I6ICJj
c3MtcnVsZS10eXBlLWF1dGhvciIsCi0gICAgVXNlcjogImNzcy1ydWxlLXR5cGUtdXNlciIsCi0g
ICAgVXNlckFnZW50OiAiY3NzLXJ1bGUtdHlwZS11c2VyLWFnZW50IiwKLSAgICBJbnNwZWN0b3I6
ICJjc3MtcnVsZS10eXBlLWluc3BlY3RvciIKLX07Ci0KLVdlYkluc3BlY3Rvci5DU1NSdWxlLnBy
b3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkNTU1J1bGUsCisgICAg
fQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgaWQoKQogICAgIHsKICAgICAgICAgcmV0dXJu
IHRoaXMuX2lkOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IG93bmVyU3R5bGVTaGVldCgpCiAg
ICAgewogICAgICAgICByZXR1cm4gdGhpcy5fb3duZXJTdHlsZVNoZWV0OwotICAgIH0sCisgICAg
fQogCiAgICAgZ2V0IGVkaXRhYmxlKCkKICAgICB7CiAgICAgICAgIHJldHVybiAhIXRoaXMuX2lk
ICYmICh0aGlzLl90eXBlID09PSBXZWJJbnNwZWN0b3IuQ1NTUnVsZS5UeXBlLkF1dGhvciB8fCB0
aGlzLl90eXBlID09PSBXZWJJbnNwZWN0b3IuQ1NTUnVsZS5UeXBlLkluc3BlY3Rvcik7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICB1cGRhdGU6IGZ1bmN0aW9uKHNvdXJjZUNvZGVMb2NhdGlvbiwgc2Vs
ZWN0b3JUZXh0LCBzZWxlY3RvcnMsIG1hdGNoZWRTZWxlY3RvckluZGljZXMsIHN0eWxlLCBtZWRp
YUxpc3QsIGRvbnRGaXJlRXZlbnRzKQorICAgIHVwZGF0ZShzb3VyY2VDb2RlTG9jYXRpb24sIHNl
bGVjdG9yVGV4dCwgc2VsZWN0b3JzLCBtYXRjaGVkU2VsZWN0b3JJbmRpY2VzLCBzdHlsZSwgbWVk
aWFMaXN0LCBkb250RmlyZUV2ZW50cykKICAgICB7CiAgICAgICAgIHNvdXJjZUNvZGVMb2NhdGlv
biA9IHNvdXJjZUNvZGVMb2NhdGlvbiB8fCBudWxsOwogICAgICAgICBzZWxlY3RvclRleHQgPSBz
ZWxlY3RvclRleHQgfHwgIiI7CkBAIC0xMDUsMjIgKzkxLDIyIEBAIFdlYkluc3BlY3Rvci5DU1NS
dWxlLnByb3RvdHlwZSA9IHsKIAogICAgICAgICBpZiAoY2hhbmdlZCkKICAgICAgICAgICAgIHRo
aXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5DU1NSdWxlLkV2ZW50LkNo
YW5nZWQpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHR5cGUoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHRoaXMuX3R5cGU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc291cmNlQ29kZUxv
Y2F0aW9uKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb247
Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc2VsZWN0b3JUZXh0KCkKICAgICB7CiAgICAgICAg
IHJldHVybiB0aGlzLl9zZWxlY3RvclRleHQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgc2Vs
ZWN0b3JUZXh0KHNlbGVjdG9yVGV4dCkKICAgICB7CkBAIC0xMzIsMTcgKzExOCwxNyBAQCBXZWJJ
bnNwZWN0b3IuQ1NTUnVsZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm47CiAKICAg
ICAgICAgdGhpcy5fbm9kZVN0eWxlcy5jaGFuZ2VSdWxlU2VsZWN0b3IodGhpcywgc2VsZWN0b3JU
ZXh0KTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzZWxlY3RvcnMoKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHRoaXMuX3NlbGVjdG9yczsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBtYXRj
aGVkU2VsZWN0b3JJbmRpY2VzKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9tYXRjaGVk
U2VsZWN0b3JJbmRpY2VzOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IG1hdGNoZWRTZWxlY3Rv
cnMoKQogICAgIHsKQEAgLTE2MCw3ICsxNDYsNyBAQCBXZWJJbnNwZWN0b3IuQ1NTUnVsZS5wcm90
b3R5cGUgPSB7CiAgICAgICAgIH0sIHRoaXMpOwogCiAgICAgICAgIHJldHVybiB0aGlzLl9tYXRj
aGVkU2VsZWN0b3JzOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IG1hdGNoZWRTZWxlY3RvclRl
eHQoKQogICAgIHsKQEAgLTE3NiwyNSArMTYyLDI1IEBAIFdlYkluc3BlY3Rvci5DU1NSdWxlLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fbWF0Y2hlZFNlbGVjdG9yVGV4dCA9IHRoaXMubWF0
Y2hlZFNlbGVjdG9ycy5tYXAoZnVuY3Rpb24oeCkgeyByZXR1cm4geC50ZXh0OyB9KS5qb2luKCIs
ICIpOwogCiAgICAgICAgIHJldHVybiB0aGlzLl9tYXRjaGVkU2VsZWN0b3JUZXh0OwotICAgIH0s
CisgICAgfQogCiAgICAgZ2V0IHN0eWxlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9z
dHlsZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBtZWRpYUxpc3QoKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHRoaXMuX21lZGlhTGlzdDsKLSAgICB9LAorICAgIH0KIAotICAgIGlzRXF1YWxU
bzogZnVuY3Rpb24ocnVsZSkKKyAgICBpc0VxdWFsVG8ocnVsZSkKICAgICB7CiAgICAgICAgIGlm
ICghcnVsZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICByZXR1cm4gT2Jq
ZWN0LnNoYWxsb3dFcXVhbCh0aGlzLl9pZCwgcnVsZS5pZCk7Ci0gICAgfSwKKyAgICB9CiAKICAg
ICAvLyBQcm90ZWN0ZWQKIApAQCAtMjA0LDQgKzE5MCwxMyBAQCBXZWJJbnNwZWN0b3IuQ1NTUnVs
ZS5wcm90b3R5cGUgPSB7CiAgICAgfQogfTsKIAotV2ViSW5zcGVjdG9yLkNTU1J1bGUucHJvdG90
eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOworV2ViSW5zcGVj
dG9yLkNTU1J1bGUuRXZlbnQgPSB7CisgICAgQ2hhbmdlZDogImNzcy1ydWxlLWNoYW5nZWQiCit9
OworCitXZWJJbnNwZWN0b3IuQ1NTUnVsZS5UeXBlID0geworICAgIEF1dGhvcjogImNzcy1ydWxl
LXR5cGUtYXV0aG9yIiwKKyAgICBVc2VyOiAiY3NzLXJ1bGUtdHlwZS11c2VyIiwKKyAgICBVc2Vy
QWdlbnQ6ICJjc3MtcnVsZS10eXBlLXVzZXItYWdlbnQiLAorICAgIEluc3BlY3RvcjogImNzcy1y
dWxlLXR5cGUtaW5zcGVjdG9yIgorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL01vZGVscy9DU1NTZWxlY3Rvci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9DU1NTZWxlY3Rvci5qcwppbmRleCBmZjI5NzBiLi40
YTYyNjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9N
b2RlbHMvQ1NTU2VsZWN0b3IuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvTW9kZWxzL0NTU1NlbGVjdG9yLmpzCkBAIC0yMywzMiArMjMsMzAgQEAKICAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuQ1NTU2VsZWN0
b3IgPSBmdW5jdGlvbih0ZXh0LCBzcGVjaWZpY2l0eSwgZHluYW1pYykKK1dlYkluc3BlY3Rvci5D
U1NTZWxlY3RvciA9IGNsYXNzIENTU1NlbGVjdG9yIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVj
dAogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICBjb25zdHJ1Y3Rv
cih0ZXh0LCBzcGVjaWZpY2l0eSwgZHluYW1pYykKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CiAK
ICAgICAgICAgY29uc29sZS5hc3NlcnQodGV4dCk7CiAKICAgICAgICAgdGhpcy5fdGV4dCA9IHRl
eHQ7CiAgICAgICAgIHRoaXMuX3NwZWNpZmljaXR5ID0gc3BlY2lmaWNpdHkgfHwgbnVsbDsKICAg
ICAgICAgdGhpcy5fZHluYW1pYyA9IGR5bmFtaWMgfHwgZmFsc2U7Ci19OwotCi1XZWJJbnNwZWN0
b3IuQ1NTU2VsZWN0b3IucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0
b3IuQ1NTU2VsZWN0b3IsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3Rv
dHlwZSwKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCB0ZXh0KCkKICAgICB7CiAg
ICAgICAgIHJldHVybiB0aGlzLl90ZXh0OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHNwZWNp
ZmljaXR5KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zcGVjaWZpY2l0eTsKLSAgICB9
LAorICAgIH0KIAogICAgIGdldCBkeW5hbWljKCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTU3R5bGVEZWNsYXJhdGlvbi5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9DU1NTdHlsZURl
Y2xhcmF0aW9uLmpzCmluZGV4IGVjMDU5ZTEuLmZiMGM2M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9DU1NTdHlsZURlY2xhcmF0aW9uLmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9DU1NTdHls
ZURlY2xhcmF0aW9uLmpzCkBAIC0yMyw5ICsyMywxMSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uID0g
ZnVuY3Rpb24obm9kZVN0eWxlcywgb3duZXJTdHlsZVNoZWV0LCBpZCwgdHlwZSwgbm9kZSwgaW5o
ZXJpdGVkLCB0ZXh0LCBwcm9wZXJ0aWVzLCBzdHlsZVNoZWV0VGV4dFJhbmdlKQorV2ViSW5zcGVj
dG9yLkNTU1N0eWxlRGVjbGFyYXRpb24gPSBjbGFzcyBDU1NTdHlsZURlY2xhcmF0aW9uIGV4dGVu
ZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0
aGlzKTsKKyAgICBjb25zdHJ1Y3Rvcihub2RlU3R5bGVzLCBvd25lclN0eWxlU2hlZXQsIGlkLCB0
eXBlLCBub2RlLCBpbmhlcml0ZWQsIHRleHQsIHByb3BlcnRpZXMsIHN0eWxlU2hlZXRUZXh0UmFu
Z2UpCisgICAgeworICAgICAgICBzdXBlcigpOwogCiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KG5v
ZGVTdHlsZXMpOwogICAgICAgICB0aGlzLl9ub2RlU3R5bGVzID0gbm9kZVN0eWxlczsKQEAgLTQy
LDUxICs0NCwzNCBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvbiA9IGZ1bmN0aW9u
KG5vZGVTdHlsZXMsIG93bmVyU3R5bGVTaGVldCwgaWQsIHR5cAogICAgICAgICB0aGlzLl9wcm9w
ZXJ0eU5hbWVNYXAgPSB7fTsKIAogICAgICAgICB0aGlzLnVwZGF0ZSh0ZXh0LCBwcm9wZXJ0aWVz
LCBzdHlsZVNoZWV0VGV4dFJhbmdlLCB0cnVlKTsKLX07Ci0KLVdlYkluc3BlY3Rvci5PYmplY3Qu
YWRkQ29uc3RydWN0b3JGdW5jdGlvbnMoV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb24p
OwotCi1XZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvbi5FdmVudCA9IHsKLSAgICBQcm9w
ZXJ0aWVzQ2hhbmdlZDogImNzcy1zdHlsZS1kZWNsYXJhdGlvbi1wcm9wZXJ0aWVzLWNoYW5nZWQi
Ci19OwotCi1XZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvbi5UeXBlID0gewotICAgIFJ1
bGU6ICJjc3Mtc3R5bGUtZGVjbGFyYXRpb24tdHlwZS1ydWxlIiwKLSAgICBJbmxpbmU6ICJjc3Mt
c3R5bGUtZGVjbGFyYXRpb24tdHlwZS1pbmxpbmUiLAotICAgIEF0dHJpYnV0ZTogImNzcy1zdHls
ZS1kZWNsYXJhdGlvbi10eXBlLWF0dHJpYnV0ZSIsCi0gICAgQ29tcHV0ZWQ6ICJjc3Mtc3R5bGUt
ZGVjbGFyYXRpb24tdHlwZS1jb21wdXRlZCIKLX07Ci0KLVdlYkluc3BlY3Rvci5DU1NTdHlsZURl
Y2xhcmF0aW9uLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkNT
U1N0eWxlRGVjbGFyYXRpb24sCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuT2JqZWN0LnBy
b3RvdHlwZSwKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBpZCgpCiAgICAgewog
ICAgICAgICByZXR1cm4gdGhpcy5faWQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgb3duZXJT
dHlsZVNoZWV0KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9vd25lclN0eWxlU2hlZXQ7
Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgdHlwZSgpCiAgICAgewogICAgICAgICByZXR1cm4g
dGhpcy5fdHlwZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBpbmhlcml0ZWQoKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIHRoaXMuX2luaGVyaXRlZDsKLSAgICB9LAorICAgIH0KIAogICAgIGdl
dCBub2RlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9ub2RlOwotICAgIH0sCisgICAg
fQogCiAgICAgZ2V0IGVkaXRhYmxlKCkKICAgICB7CkBAIC0xMDAsOSArODUsOSBAQCBXZWJJbnNw
ZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvbi5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1
cm4gIXRoaXMuX25vZGUuaXNJblNoYWRvd1RyZWUoKTsKIAogICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICB1cGRhdGU6IGZ1bmN0aW9uKHRleHQsIHByb3BlcnRpZXMs
IHN0eWxlU2hlZXRUZXh0UmFuZ2UsIGRvbnRGaXJlRXZlbnRzKQorICAgIHVwZGF0ZSh0ZXh0LCBw
cm9wZXJ0aWVzLCBzdHlsZVNoZWV0VGV4dFJhbmdlLCBkb250RmlyZUV2ZW50cykKICAgICB7CiAg
ICAgICAgIHRleHQgPSB0ZXh0IHx8ICIiOwogICAgICAgICBwcm9wZXJ0aWVzID0gcHJvcGVydGll
cyB8fCBbXTsKQEAgLTE3NiwyMiArMTYxLDIyIEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xh
cmF0aW9uLnByb3RvdHlwZSA9IHsKIAogICAgICAgICAvLyBEZWxheSBmaXJpbmcgdGhlIFByb3Bl
cnRpZXNDaGFuZ2VkIGV2ZW50IHNvIERPTU5vZGVTdHlsZXMgaGFzIGEgY2hhbmNlIHRvIG1hcmsg
b3ZlcnJpZGRlbiBhbmQgYXNzb2NpYXRlZCBwcm9wZXJ0aWVzLgogICAgICAgICBzZXRUaW1lb3V0
KGRlbGF5ZWQuYmluZCh0aGlzKSwgMCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgb3duZXJS
dWxlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9vd25lclJ1bGU7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICBzZXQgb3duZXJSdWxlKHJ1bGUpCiAgICAgewogICAgICAgICB0aGlzLl9vd25l
clJ1bGUgPSBydWxlIHx8IG51bGw7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgdGV4dCgpCiAg
ICAgewogICAgICAgICByZXR1cm4gdGhpcy5fdGV4dDsKLSAgICB9LAorICAgIH0KIAogICAgIHNl
dCB0ZXh0KHRleHQpCiAgICAgewpAQCAtMTk5LDEyICsxODQsMTIgQEAgV2ViSW5zcGVjdG9yLkNT
U1N0eWxlRGVjbGFyYXRpb24ucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuOwogCiAg
ICAgICAgIHRoaXMuX25vZGVTdHlsZXMuY2hhbmdlU3R5bGVUZXh0KHRoaXMsIHRleHQpOwotICAg
IH0sCisgICAgfQogCiAgICAgZ2V0IHByb3BlcnRpZXMoKQogICAgIHsKICAgICAgICAgcmV0dXJu
IHRoaXMuX3Byb3BlcnRpZXM7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgdmlzaWJsZVByb3Bl
cnRpZXMoKQogICAgIHsKQEAgLTIxNiwxOSArMjAxLDE5IEBAIFdlYkluc3BlY3Rvci5DU1NTdHls
ZURlY2xhcmF0aW9uLnByb3RvdHlwZSA9IHsKICAgICAgICAgfSk7CiAKICAgICAgICAgcmV0dXJu
IHRoaXMuX3Zpc2libGVQcm9wZXJ0aWVzOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHBlbmRp
bmdQcm9wZXJ0aWVzKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9wZW5kaW5nUHJvcGVy
dGllczsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzdHlsZVNoZWV0VGV4dFJhbmdlKCkKICAg
ICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zdHlsZVNoZWV0VGV4dFJhbmdlOwotICAgIH0sCisg
ICAgfQogCi0gICAgcHJvcGVydHlGb3JOYW1lOiBmdW5jdGlvbihuYW1lLCBkb250Q3JlYXRlSWZN
aXNzaW5nKQorICAgIHByb3BlcnR5Rm9yTmFtZShuYW1lLCBkb250Q3JlYXRlSWZNaXNzaW5nKQog
ICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQobmFtZSk7CiAgICAgICAgIGlmICghbmFtZSkK
QEAgLTI3Myw3ICsyNTgsNyBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvbi5wcm90
b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3BlbmRpbmdQcm9wZXJ0aWVzLnB1c2gobmV3UHJvcGVy
dHkpOwogCiAgICAgICAgIHJldHVybiBuZXdQcm9wZXJ0eTsKLSAgICB9LAorICAgIH0KIAogICAg
IC8vIFByb3RlY3RlZAogCkBAIC0yODIsMyArMjY3LDE0IEBAIFdlYkluc3BlY3Rvci5DU1NTdHls
ZURlY2xhcmF0aW9uLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX25vZGVTdHls
ZXM7CiAgICAgfQogfTsKKworV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb24uRXZlbnQg
PSB7CisgICAgUHJvcGVydGllc0NoYW5nZWQ6ICJjc3Mtc3R5bGUtZGVjbGFyYXRpb24tcHJvcGVy
dGllcy1jaGFuZ2VkIgorfTsKKworV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb24uVHlw
ZSA9IHsKKyAgICBSdWxlOiAiY3NzLXN0eWxlLWRlY2xhcmF0aW9uLXR5cGUtcnVsZSIsCisgICAg
SW5saW5lOiAiY3NzLXN0eWxlLWRlY2xhcmF0aW9uLXR5cGUtaW5saW5lIiwKKyAgICBBdHRyaWJ1
dGU6ICJjc3Mtc3R5bGUtZGVjbGFyYXRpb24tdHlwZS1hdHRyaWJ1dGUiLAorICAgIENvbXB1dGVk
OiAiY3NzLXN0eWxlLWRlY2xhcmF0aW9uLXR5cGUtY29tcHV0ZWQiCit9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NTU1N0eWxlU2hlZXQu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTU3R5bGVT
aGVldC5qcwppbmRleCAwZmUzMjI3Li42YzljNmI5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NTU1N0eWxlU2hlZXQuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NTU1N0eWxlU2hlZXQuanMK
QEAgLTIzLDYyICsyMyw1NCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKLVdlYkluc3BlY3Rvci5DU1NTdHlsZVNoZWV0ID0gZnVuY3Rpb24oaWQsIHVybCwgcGFy
ZW50RnJhbWUpCitXZWJJbnNwZWN0b3IuQ1NTU3R5bGVTaGVldCA9IGNsYXNzIENTU1N0eWxlU2hl
ZXQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuU291cmNlQ29kZQogewotICAgIFdlYkluc3BlY3Rvci5T
b3VyY2VDb2RlLmNhbGwodGhpcyk7CisgICAgY29uc3RydWN0b3IoaWQsIHVybCwgcGFyZW50RnJh
bWUpCisgICAgeworICAgICAgICBzdXBlcigpOwogCiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGlk
KTsKIAogICAgICAgICB0aGlzLl9pZCA9IGlkIHx8IG51bGw7CiAKICAgICAgICAgdGhpcy51cGRh
dGVJbmZvKHVybCwgcGFyZW50RnJhbWUpOwotfTsKKyAgICB9CiAKLVdlYkluc3BlY3Rvci5PYmpl
Y3QuYWRkQ29uc3RydWN0b3JGdW5jdGlvbnMoV2ViSW5zcGVjdG9yLkNTU1N0eWxlU2hlZXQpOwor
ICAgIC8vIFN0YXRpYwogCi1XZWJJbnNwZWN0b3IuQ1NTU3R5bGVTaGVldC5yZXNldFVuaXF1ZURp
c3BsYXlOYW1lTnVtYmVycyA9IGZ1bmN0aW9uKCkKKyAgICBzdGF0aWMgcmVzZXRVbmlxdWVEaXNw
bGF5TmFtZU51bWJlcnMoKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlU2hl
ZXQuX25leHRVbmlxdWVEaXNwbGF5TmFtZU51bWJlciA9IDE7Ci19OwotCi1XZWJJbnNwZWN0b3Iu
Q1NTU3R5bGVTaGVldC5fbmV4dFVuaXF1ZURpc3BsYXlOYW1lTnVtYmVyID0gMTsKLQotV2ViSW5z
cGVjdG9yLkNTU1N0eWxlU2hlZXQuRXZlbnQgPSB7Ci0gICAgQ29udGVudERpZENoYW5nZTogInN0
eWxlc2hlZXQtY29udGVudC1kaWQtY2hhbmdlIgotfTsKLQotV2ViSW5zcGVjdG9yLkNTU1N0eWxl
U2hlZXQucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuQ1NTU3R5
bGVTaGVldCwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlLnByb3RvdHlw
ZSwKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBpZCgpCiAgICAgewogICAgICAg
ICByZXR1cm4gdGhpcy5faWQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgcGFyZW50RnJhbWUo
KQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3BhcmVudEZyYW1lOwotICAgIH0sCisgICAg
fQogCiAgICAgZ2V0IHVybCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fdXJsOwotICAg
IH0sCisgICAgfQogCiAgICAgZ2V0IHVybENvbXBvbmVudHMoKQogICAgIHsKICAgICAgICAgaWYg
KCF0aGlzLl91cmxDb21wb25lbnRzKQogICAgICAgICAgICAgdGhpcy5fdXJsQ29tcG9uZW50cyA9
IHBhcnNlVVJMKHRoaXMuX3VybCk7CiAgICAgICAgIHJldHVybiB0aGlzLl91cmxDb21wb25lbnRz
OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IG1pbWVUeXBlKCkKICAgICB7CiAgICAgICAgIHJl
dHVybiAidGV4dC9jc3MiOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGRpc3BsYXlOYW1lKCkK
ICAgICB7CkBAIC05MCwyNCArODIsMjQgQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlU2hlZXQucHJv
dG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fdW5pcXVlRGlzcGxheU5hbWVOdW1iZXIgPSB0
aGlzLmNvbnN0cnVjdG9yLl9uZXh0VW5pcXVlRGlzcGxheU5hbWVOdW1iZXIrKzsKIAogICAgICAg
ICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJBbm9ueW1vdXMgU3R5bGVTaGVldCAlZCIp
LmZvcm1hdCh0aGlzLl91bmlxdWVEaXNwbGF5TmFtZU51bWJlcik7Ci0gICAgfSwKKyAgICB9CiAK
ICAgICAvLyBQcm90ZWN0ZWQKIAotICAgIHVwZGF0ZUluZm86IGZ1bmN0aW9uKHVybCwgcGFyZW50
RnJhbWUpCisgICAgdXBkYXRlSW5mbyh1cmwsIHBhcmVudEZyYW1lKQogICAgIHsKICAgICAgICAg
dGhpcy5fdXJsID0gdXJsIHx8IG51bGw7CiAgICAgICAgIGRlbGV0ZSB0aGlzLl91cmxDb21wb25l
bnRzOwogCiAgICAgICAgIHRoaXMuX3BhcmVudEZyYW1lID0gcGFyZW50RnJhbWUgfHwgbnVsbDsK
LSAgICB9LAorICAgIH0KIAogICAgIGdldCByZXZpc2lvbkZvclJlcXVlc3RlZENvbnRlbnQoKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFJldmlzaW9uOwotICAgIH0sCisgICAg
fQogCi0gICAgaGFuZGxlQ3VycmVudFJldmlzaW9uQ29udGVudENoYW5nZTogZnVuY3Rpb24oKQor
ICAgIGhhbmRsZUN1cnJlbnRSZXZpc2lvbkNvbnRlbnRDaGFuZ2UoKQogICAgIHsKICAgICAgICAg
aWYgKCF0aGlzLl9pZCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEyNSw5ICsxMTcsOSBAQCBX
ZWJJbnNwZWN0b3IuQ1NTU3R5bGVTaGVldC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2ln
bm9yZU5leHRDb250ZW50RGlkQ2hhbmdlTm90aWZpY2F0aW9uID0gdHJ1ZTsKIAogICAgICAgICBD
U1NBZ2VudC5zZXRTdHlsZVNoZWV0VGV4dCh0aGlzLl9pZCwgdGhpcy5jdXJyZW50UmV2aXNpb24u
Y29udGVudCwgY29udGVudERpZENoYW5nZS5iaW5kKHRoaXMpKTsKLSAgICB9LAorICAgIH0KIAot
ICAgIHJlcXVlc3RDb250ZW50RnJvbUJhY2tlbmQ6IGZ1bmN0aW9uKCkKKyAgICByZXF1ZXN0Q29u
dGVudEZyb21CYWNrZW5kKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5faWQpIHsKICAgICAg
ICAgICAgIC8vIFRoZXJlIGlzIG5vIGlkZW50aWZpZXIgdG8gcmVxdWVzdCBjb250ZW50IHdpdGgu
IFJlamVjdCB0aGUgcHJvbWlzZSB0byBjYXVzZSB0aGUKQEAgLTEzNiw5ICsxMjgsOSBAQCBXZWJJ
bnNwZWN0b3IuQ1NTU3R5bGVTaGVldC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAg
ICByZXR1cm4gQ1NTQWdlbnQuZ2V0U3R5bGVTaGVldFRleHQodGhpcy5faWQpOwotICAgIH0sCisg
ICAgfQogCi0gICAgbm90ZUNvbnRlbnREaWRDaGFuZ2U6IGZ1bmN0aW9uKCkKKyAgICBub3RlQ29u
dGVudERpZENoYW5nZSgpCiAgICAgewogICAgICAgICBpZiAodGhpcy5faWdub3JlTmV4dENvbnRl
bnREaWRDaGFuZ2VOb3RpZmljYXRpb24pIHsKICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9pZ25v
cmVOZXh0Q29udGVudERpZENoYW5nZU5vdGlmaWNhdGlvbjsKQEAgLTE1MCwzICsxNDIsOSBAQCBX
ZWJJbnNwZWN0b3IuQ1NTU3R5bGVTaGVldC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KIH07CisKK1dlYkluc3BlY3Rvci5DU1NTdHlsZVNoZWV0Ll9uZXh0VW5pcXVl
RGlzcGxheU5hbWVOdW1iZXIgPSAxOworCitXZWJJbnNwZWN0b3IuQ1NTU3R5bGVTaGVldC5FdmVu
dCA9IHsKKyAgICBDb250ZW50RGlkQ2hhbmdlOiAic3R5bGVzaGVldC1jb250ZW50LWRpZC1jaGFu
Z2UiCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
TW9kZWxzL0NhbGxGcmFtZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L01vZGVscy9DYWxsRnJhbWUuanMKaW5kZXggMTkzMjY3NS4uNWE2NWUwMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NhbGxGcmFtZS5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ2FsbEZyYW1l
LmpzCkBAIC0yMyw5ICsyMywxMSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKLVdlYkluc3BlY3Rvci5DYWxsRnJhbWUgPSBmdW5jdGlvbihpZCwgc291cmNlQ29k
ZUxvY2F0aW9uLCBmdW5jdGlvbk5hbWUsIHRoaXNPYmplY3QsIHNjb3BlQ2hhaW4sIG5hdGl2ZUNv
ZGUpCitXZWJJbnNwZWN0b3IuQ2FsbEZyYW1lID0gY2xhc3MgQ2FsbEZyYW1lIGV4dGVuZHMgV2Vi
SW5zcGVjdG9yLk9iamVjdAogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsK
KyAgICBjb25zdHJ1Y3RvcihpZCwgc291cmNlQ29kZUxvY2F0aW9uLCBmdW5jdGlvbk5hbWUsIHRo
aXNPYmplY3QsIHNjb3BlQ2hhaW4sIG5hdGl2ZUNvZGUpCisgICAgeworICAgICAgICBzdXBlcigp
OwogCiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFzb3VyY2VDb2RlTG9jYXRpb24gfHwgc291cmNl
Q29kZUxvY2F0aW9uIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVMb2NhdGlvbik7
CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzT2JqZWN0IHx8IHRoaXNPYmplY3QgaW5zdGFu
Y2VvZiBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0KTsKQEAgLTM3LDUwICszOSw0NyBAQCBXZWJJ
bnNwZWN0b3IuQ2FsbEZyYW1lID0gZnVuY3Rpb24oaWQsIHNvdXJjZUNvZGVMb2NhdGlvbiwgZnVu
Y3Rpb25OYW1lLCB0aGlzT2JqZQogICAgICAgICB0aGlzLl90aGlzT2JqZWN0ID0gdGhpc09iamVj
dCB8fCBudWxsOwogICAgICAgICB0aGlzLl9zY29wZUNoYWluID0gc2NvcGVDaGFpbiB8fCBbXTsK
ICAgICAgICAgdGhpcy5fbmF0aXZlQ29kZSA9IG5hdGl2ZUNvZGUgfHwgZmFsc2U7Ci19OwotCi1X
ZWJJbnNwZWN0b3IuQ2FsbEZyYW1lLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2Vi
SW5zcGVjdG9yLkNhbGxGcmFtZSwKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBp
ZCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5faWQ7Ci0gICAgfSwKKyAgICB9CiAKICAg
ICBnZXQgc291cmNlQ29kZUxvY2F0aW9uKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9z
b3VyY2VDb2RlTG9jYXRpb247Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgZnVuY3Rpb25OYW1l
KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9mdW5jdGlvbk5hbWU7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICBnZXQgbmF0aXZlQ29kZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5f
bmF0aXZlQ29kZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCB0aGlzT2JqZWN0KCkKICAgICB7
CiAgICAgICAgIHJldHVybiB0aGlzLl90aGlzT2JqZWN0OwotICAgIH0sCisgICAgfQogCiAgICAg
Z2V0IHNjb3BlQ2hhaW4oKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3Njb3BlQ2hhaW47
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzYXZlSWRlbnRpdHlUb0Nvb2tpZTogZnVuY3Rpb24oKQor
ICAgIHNhdmVJZGVudGl0eVRvQ29va2llKCkKICAgICB7CiAgICAgICAgIC8vIERvIG5vdGhpbmcu
IFRoZSBjYWxsIGZyYW1lIGlzIHRvcm4gZG93biB3aGVuIHRoZSBpbnNwZWN0b3IgY2xvc2VzLCBh
bmQKICAgICAgICAgLy8gd2Ugc2hvdWxkbid0IHJlc3RvcmUgY2FsbCBmcmFtZSBjb250ZW50IHZp
ZXdzIGFjcm9zcyBkZWJ1Z2dlciBwYXVzZXMuCi0gICAgfSwKKyAgICB9CiAKLSAgICBjb2xsZWN0
U2NvcGVDaGFpblZhcmlhYmxlTmFtZXM6IGZ1bmN0aW9uKGNhbGxiYWNrKQorICAgIGNvbGxlY3RT
Y29wZUNoYWluVmFyaWFibGVOYW1lcyhjYWxsYmFjaykKICAgICB7CiAgICAgICAgIHZhciByZXN1
bHQgPSB7dGhpczogdHJ1ZX07CiAKQEAgLTEwMSw1ICsxMDAsMyBAQCBXZWJJbnNwZWN0b3IuQ2Fs
bEZyYW1lLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX3Njb3BlQ2hhaW5baV0ub2Jq
ZWN0LmRlcHJlY2F0ZWRHZXRBbGxQcm9wZXJ0aWVzKHByb3BlcnRpZXNDb2xsZWN0ZWQpOwogICAg
IH0KIH07Ci0KLVdlYkluc3BlY3Rvci5DYWxsRnJhbWUucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdl
Ykluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NvbGxlY3Rpb25FbnRyeS5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Db2xsZWN0aW9uRW50cnkuanMKaW5k
ZXggMWRiYjM2ZC4uNzk5ZGFkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvTW9kZWxzL0NvbGxlY3Rpb25FbnRyeS5qcworKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ29sbGVjdGlvbkVudHJ5LmpzCkBAIC0yMywx
OSArMjMsMjMgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1X
ZWJJbnNwZWN0b3IuQ29sbGVjdGlvbkVudHJ5ID0gZnVuY3Rpb24oa2V5LCB2YWx1ZSkKK1dlYklu
c3BlY3Rvci5Db2xsZWN0aW9uRW50cnkgPSBjbGFzcyBDb2xsZWN0aW9uRW50cnkgZXh0ZW5kcyBX
ZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMp
OworICAgIGNvbnN0cnVjdG9yKGtleSwgdmFsdWUpCisgICAgeworICAgICAgICBzdXBlcigpOwog
CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHZhbHVlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJl
bW90ZU9iamVjdCk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFrZXkgfHwga2V5IGluc3RhbmNl
b2YgV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdCk7CiAKICAgICAgICAgdGhpcy5fa2V5ID0ga2V5
OwogICAgICAgICB0aGlzLl92YWx1ZSA9IHZhbHVlOwotfTsKKyAgICB9CisKKyAgICAvLyBTdGF0
aWMKIAogICAgIC8vIFJ1bnRpbWUuQ29sbGVjdGlvbkVudHJ5LgotV2ViSW5zcGVjdG9yLkNvbGxl
Y3Rpb25FbnRyeS5mcm9tUGF5bG9hZCA9IGZ1bmN0aW9uKHBheWxvYWQpCisgICAgc3RhdGljIGZy
b21QYXlsb2FkKHBheWxvYWQpCiAgICAgewogICAgICAgICBpZiAocGF5bG9hZC5rZXkpCiAgICAg
ICAgICAgICBwYXlsb2FkLmtleSA9IFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QuZnJvbVBheWxv
YWQocGF5bG9hZC5rZXkpOwpAQCAtNDMsMTggKzQ3LDE0IEBAIFdlYkluc3BlY3Rvci5Db2xsZWN0
aW9uRW50cnkuZnJvbVBheWxvYWQgPSBmdW5jdGlvbihwYXlsb2FkKQogICAgICAgICAgICAgcGF5
bG9hZC52YWx1ZSA9IFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QuZnJvbVBheWxvYWQocGF5bG9h
ZC52YWx1ZSk7CiAKICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuQ29sbGVjdGlvbkVu
dHJ5KHBheWxvYWQua2V5LCBwYXlsb2FkLnZhbHVlKTsKLX07Ci0KLVdlYkluc3BlY3Rvci5Db2xs
ZWN0aW9uRW50cnkucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3Iu
Q29sbGVjdGlvbkVudHJ5LAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90
b3R5cGUsCisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQga2V5KCkKICAgICB7CiAg
ICAgICAgIHJldHVybiB0aGlzLl9rZXk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgdmFsdWUo
KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L01vZGVscy9Db2xsZWN0aW9uRW50cnlQcmV2aWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NvbGxlY3Rpb25FbnRyeVByZXZpZXcuanMKaW5kZXggZGQz
YWZiYy4uOGUxMTNjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvTW9kZWxzL0NvbGxlY3Rpb25FbnRyeVByZXZpZXcuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NvbGxlY3Rpb25FbnRyeVByZXZpZXcuanMK
QEAgLTIzLDE5ICsyMywyMyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKLVdlYkluc3BlY3Rvci5Db2xsZWN0aW9uRW50cnlQcmV2aWV3ID0gZnVuY3Rpb24oa2V5
UHJldmlldywgdmFsdWVQcmV2aWV3KQorV2ViSW5zcGVjdG9yLkNvbGxlY3Rpb25FbnRyeVByZXZp
ZXcgPSBjbGFzcyBDb2xsZWN0aW9uRW50cnlQcmV2aWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9i
amVjdAogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICBjb25zdHJ1
Y3RvcihrZXlQcmV2aWV3LCB2YWx1ZVByZXZpZXcpCisgICAgeworICAgICAgICBzdXBlcigpOwog
CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHZhbHVlUHJldmlldyBpbnN0YW5jZW9mIFdlYkluc3Bl
Y3Rvci5PYmplY3RQcmV2aWV3KTsKICAgICAgICAgY29uc29sZS5hc3NlcnQoIWtleVByZXZpZXcg
fHwga2V5UHJldmlldyBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5PYmplY3RQcmV2aWV3KTsKIAog
ICAgICAgICB0aGlzLl9rZXkgPSBrZXlQcmV2aWV3OwogICAgICAgICB0aGlzLl92YWx1ZSA9IHZh
bHVlUHJldmlldzsKLX07CisgICAgfQorCisgICAgLy8gU3RhdGljCiAKICAgICAvLyBSdW50aW1l
LkVudHJ5UHJldmlldy4KLVdlYkluc3BlY3Rvci5Db2xsZWN0aW9uRW50cnlQcmV2aWV3LmZyb21Q
YXlsb2FkID0gZnVuY3Rpb24ocGF5bG9hZCkKKyAgICBzdGF0aWMgZnJvbVBheWxvYWQocGF5bG9h
ZCkKICAgICB7CiAgICAgICAgIGlmIChwYXlsb2FkLmtleSkKICAgICAgICAgICAgIHBheWxvYWQu
a2V5ID0gV2ViSW5zcGVjdG9yLk9iamVjdFByZXZpZXcuZnJvbVBheWxvYWQocGF5bG9hZC5rZXkp
OwpAQCAtNDMsMTggKzQ3LDE0IEBAIFdlYkluc3BlY3Rvci5Db2xsZWN0aW9uRW50cnlQcmV2aWV3
LmZyb21QYXlsb2FkID0gZnVuY3Rpb24ocGF5bG9hZCkKICAgICAgICAgICAgIHBheWxvYWQudmFs
dWUgPSBXZWJJbnNwZWN0b3IuT2JqZWN0UHJldmlldy5mcm9tUGF5bG9hZChwYXlsb2FkLnZhbHVl
KTsKIAogICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5Db2xsZWN0aW9uRW50cnlQcmV2
aWV3KHBheWxvYWQua2V5LCBwYXlsb2FkLnZhbHVlKTsKLX07Ci0KLVdlYkluc3BlY3Rvci5Db2xs
ZWN0aW9uRW50cnlQcmV2aWV3LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5z
cGVjdG9yLkNvbGxlY3Rpb25FbnRyeVByZXZpZXcsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0
b3IuT2JqZWN0LnByb3RvdHlwZSwKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBr
ZXlQcmV2aWV3KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9rZXk7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICBnZXQgdmFsdWVQcmV2aWV3KCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ29sb3IuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ29sb3IuanMKaW5kZXggZmRlMTk3My4u
OGYzYmU2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
TW9kZWxzL0NvbG9yLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L01vZGVscy9Db2xvci5qcwpAQCAtMjcsOSArMjcsMTIgQEAKICAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAot
V2ViSW5zcGVjdG9yLkNvbG9yID0gZnVuY3Rpb24oZm9ybWF0LCBjb21wb25lbnRzKQorV2ViSW5z
cGVjdG9yLkNvbG9yID0gY2xhc3MgQ29sb3IKK3sKKyAgICBjb25zdHJ1Y3Rvcihmb3JtYXQsIGNv
bXBvbmVudHMpCiAgICAgewogICAgICAgICB0aGlzLmZvcm1hdCA9IGZvcm1hdDsKKwogICAgICAg
ICBpZiAoZm9ybWF0ID09PSBXZWJJbnNwZWN0b3IuQ29sb3IuRm9ybWF0LkhTTCB8fCBmb3JtYXQg
PT09IFdlYkluc3BlY3Rvci5Db2xvci5Gb3JtYXQuSFNMQSkKICAgICAgICAgICAgIHRoaXMuX2hz
bGEgPSBjb21wb25lbnRzOwogICAgICAgICBlbHNlCkBAIC0zOCwyMyArNDEsMTQgQEAgV2ViSW5z
cGVjdG9yLkNvbG9yID0gZnVuY3Rpb24oZm9ybWF0LCBjb21wb25lbnRzKQogICAgICAgICB0aGlz
LnZhbGlkID0gIWNvbXBvbmVudHMuc29tZShmdW5jdGlvbihjb21wb25lbnQpIHsKICAgICAgICAg
ICAgIHJldHVybiBpc05hTihjb21wb25lbnQpOwogICAgICAgICB9KTsKLX07CisgICAgfQogCi1X
ZWJJbnNwZWN0b3IuQ29sb3IuRm9ybWF0ID0gewotICAgIE9yaWdpbmFsOiAiY29sb3ItZm9ybWF0
LW9yaWdpbmFsIiwKLSAgICBOaWNrbmFtZTogImNvbG9yLWZvcm1hdC1uaWNrbmFtZSIsCi0gICAg
SEVYOiAiY29sb3ItZm9ybWF0LWhleCIsCi0gICAgU2hvcnRIRVg6ICJjb2xvci1mb3JtYXQtc2hv
cnQtaGV4IiwKLSAgICBSR0I6ICJjb2xvci1mb3JtYXQtcmdiIiwKLSAgICBSR0JBOiAiY29sb3It
Zm9ybWF0LXJnYmEiLAotICAgIEhTTDogImNvbG9yLWZvcm1hdC1oc2wiLAotICAgIEhTTEE6ICJj
b2xvci1mb3JtYXQtaHNsYSIKLX07CisgICAgLy8gU3RhdGljCiAKLVdlYkluc3BlY3Rvci5Db2xv
ci5mcm9tU3RyaW5nID0gZnVuY3Rpb24oY29sb3JTdHJpbmcpCisgICAgc3RhdGljIGZyb21TdHJp
bmcoY29sb3JTdHJpbmcpCiAgICAgewogICAgICAgICB2YXIgdmFsdWUgPSBjb2xvclN0cmluZy50
b0xvd2VyQ2FzZSgpLnJlcGxhY2UoLyV8XHMrL2csICIiKTsKLSAgICBjb25zdCB0cmFuc3BhcmVu
dE5pY2tuYW1lcyA9IFsidHJhbnNwYXJlbnQiLCAicmdiYSgwLDAsMCwwKSIsICJoc2xhKDAsMCww
LDApIl07CisgICAgICAgIHZhciB0cmFuc3BhcmVudE5pY2tuYW1lcyA9IFsidHJhbnNwYXJlbnQi
LCAicmdiYSgwLDAsMCwwKSIsICJoc2xhKDAsMCwwLDApIl07CiAgICAgICAgIGlmICh0cmFuc3Bh
cmVudE5pY2tuYW1lcy5jb250YWlucyh2YWx1ZSkpIHsKICAgICAgICAgICAgIHZhciBjb2xvciA9
IG5ldyBXZWJJbnNwZWN0b3IuQ29sb3IoV2ViSW5zcGVjdG9yLkNvbG9yLkZvcm1hdC5OaWNrbmFt
ZSwgWzAsIDAsIDAsIDBdKTsKICAgICAgICAgICAgIGNvbG9yLm5pY2tuYW1lID0gInRyYW5zcGFy
ZW50IjsKQEAgLTEzNSwxMCArMTI5LDg0IEBAIFdlYkluc3BlY3Rvci5Db2xvci5mcm9tU3RyaW5n
ID0gZnVuY3Rpb24oY29sb3JTdHJpbmcpCiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gbnVs
bDsKLX07CisgICAgfQogCi1XZWJJbnNwZWN0b3IuQ29sb3IucHJvdG90eXBlID0gewotICAgIG5l
eHRGb3JtYXQ6IGZ1bmN0aW9uKGZvcm1hdCkKKyAgICBzdGF0aWMgcmdiMmhzdihyLCBnLCBiKQor
ICAgIHsKKyAgICAgICAgciAvPSAyNTU7CisgICAgICAgIGcgLz0gMjU1OworICAgICAgICBiIC89
IDI1NTsKKworICAgICAgICB2YXIgbWluID0gTWF0aC5taW4oTWF0aC5taW4ociwgZyksIGIpOwor
ICAgICAgICB2YXIgbWF4ID0gTWF0aC5tYXgoTWF0aC5tYXgociwgZyksIGIpOworICAgICAgICB2
YXIgZGVsdGEgPSBtYXggLSBtaW47CisKKyAgICAgICAgdmFyIHYgPSBtYXg7CisgICAgICAgIHZh
ciBzLCBoOworCisgICAgICAgIGlmIChtYXggPT09IG1pbikKKyAgICAgICAgICAgIGggPSAwOwor
ICAgICAgICBlbHNlIGlmIChtYXggPT09IHIpCisgICAgICAgICAgICBoID0gKDYwICogKChnIC0g
YikgLyBkZWx0YSkpICUgMzYwOworICAgICAgICBlbHNlIGlmIChtYXggPT09IGcpCisgICAgICAg
ICAgICBoID0gNjAgKiAoKGIgLSByKSAvIGRlbHRhKSArIDEyMDsKKyAgICAgICAgZWxzZSBpZiAo
bWF4ID09PSBiKQorICAgICAgICAgICAgaCA9IDYwICogKChyIC0gZykgLyBkZWx0YSkgKyAyNDA7
CisKKyAgICAgICAgaWYgKGggPCAwKQorICAgICAgICAgICAgaCArPSAzNjA7CisKKyAgICAgICAg
Ly8gU2F0dXJhdGlvbgorICAgICAgICBpZiAobWF4ID09PSAwKQorICAgICAgICAgICAgcyA9IDA7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHMgPSAxIC0gKG1pbiAvIG1heCk7CisKKyAgICAg
ICAgcmV0dXJuIFtoLCBzLCB2XTsKKyAgICB9CisKKyAgICBzdGF0aWMgaHN2MnJnYihoLCBzLCB2
KQorICAgIHsKKyAgICAgICAgaWYgKHMgPT09IDApCisgICAgICAgICAgICByZXR1cm4gW3YsIHYs
IHZdOworCisgICAgICAgIGggLz0gNjA7CisgICAgICAgIHZhciBpID0gTWF0aC5mbG9vcihoKTsK
KyAgICAgICAgdmFyIGRhdGEgPSBbCisgICAgICAgICAgICB2ICogKDEgLSBzKSwKKyAgICAgICAg
ICAgIHYgKiAoMSAtIHMgKiAoaCAtIGkpKSwKKyAgICAgICAgICAgIHYgKiAoMSAtIHMgKiAoMSAt
IChoIC0gaSkpKQorICAgICAgICBdOworICAgICAgICB2YXIgcmdiOworCisgICAgICAgIHN3aXRj
aCAoaSkgeworICAgICAgICBjYXNlIDA6CisgICAgICAgICAgICByZ2IgPSBbdiwgZGF0YVsyXSwg
ZGF0YVswXV07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAxOgorICAgICAgICAg
ICAgcmdiID0gW2RhdGFbMV0sIHYsIGRhdGFbMF1dOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgMjoKKyAgICAgICAgICAgIHJnYiA9IFtkYXRhWzBdLCB2LCBkYXRhWzJdXTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICByZ2IgPSBbZGF0
YVswXSwgZGF0YVsxXSwgdl07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSA0Ogor
ICAgICAgICAgICAgcmdiID0gW2RhdGFbMl0sIGRhdGFbMF0sIHZdOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZ2IgPSBbdiwgZGF0YVswXSwgZGF0
YVsxXV07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBy
Z2I7CisgICAgfQorCisKKyAgICAvLyBQdWJsaWMKKworICAgIG5leHRGb3JtYXQoZm9ybWF0KQog
ICAgIHsKICAgICAgICAgZm9ybWF0ID0gZm9ybWF0IHx8IHRoaXMuZm9ybWF0OwogCkBAIC0xNzUs
NDcgKzI0Myw0NyBAQCBXZWJJbnNwZWN0b3IuQ29sb3IucHJvdG90eXBlID0gewogICAgICAgICAg
ICAgY29uc29sZS5lcnJvcigiVW5rbm93biBjb2xvciBmb3JtYXQuIik7CiAgICAgICAgICAgICBy
ZXR1cm4gbnVsbDsKICAgICAgICAgfQotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGFscGhhKCkK
ICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9yZ2JhID8gdGhpcy5fcmdiYVszXSA6IHRoaXMu
X2hzbGFbM107Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc2ltcGxlKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiB0aGlzLmFscGhhID09PSAxOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHJn
YigpCiAgICAgewogICAgICAgICB2YXIgcmdiID0gdGhpcy5yZ2JhLnNsaWNlKCk7CiAgICAgICAg
IHJnYi5wb3AoKTsKICAgICAgICAgcmV0dXJuIHJnYjsKLSAgICB9LAorICAgIH0KIAogICAgIGdl
dCBoc2woKQogICAgIHsKICAgICAgICAgdmFyIGhzbCA9IHRoaXMuaHNsYS5zbGljZSgpOwogICAg
ICAgICBoc2wucG9wKCk7CiAgICAgICAgIHJldHVybiBoc2w7Ci0gICAgfSwKKyAgICB9CiAKICAg
ICBnZXQgcmdiYSgpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX3JnYmEpCiAgICAgICAgICAg
ICB0aGlzLl9yZ2JhID0gdGhpcy5faHNsYVRvUkdCQSh0aGlzLl9oc2xhKTsKICAgICAgICAgcmV0
dXJuIHRoaXMuX3JnYmE7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgaHNsYSgpCiAgICAgewog
ICAgICAgICBpZiAoIXRoaXMuX2hzbGEpCiAgICAgICAgICAgICB0aGlzLl9oc2xhID0gdGhpcy5f
cmdiYVRvSFNMQSh0aGlzLnJnYmEpOwogICAgICAgICByZXR1cm4gdGhpcy5faHNsYTsKLSAgICB9
LAorICAgIH0KIAotICAgIGNvcHk6IGZ1bmN0aW9uKCkKKyAgICBjb3B5KCkKICAgICB7CiAgICAg
ICAgIHN3aXRjaCAodGhpcy5mb3JtYXQpIHsKICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuQ29s
b3IuRm9ybWF0LlJHQjoKQEAgLTIyOCw5ICsyOTYsOSBAQCBXZWJJbnNwZWN0b3IuQ29sb3IucHJv
dG90eXBlID0gewogICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5Db2xvci5Gb3JtYXQuSFNMQToK
ICAgICAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkNvbG9yKHRoaXMuZm9ybWF0LCB0
aGlzLmhzbGEpOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICB0b1N0cmluZzogZnVu
Y3Rpb24oZm9ybWF0KQorICAgIHRvU3RyaW5nKGZvcm1hdCkKICAgICB7CiAgICAgICAgIGlmICgh
Zm9ybWF0KQogICAgICAgICAgICAgZm9ybWF0ID0gdGhpcy5mb3JtYXQ7CkBAIC0yNTUsMTQgKzMy
MywxNiBAQCBXZWJJbnNwZWN0b3IuQ29sb3IucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAg
ICAgICAgdGhyb3cgImludmFsaWQgY29sb3IgZm9ybWF0IjsKLSAgICB9LAorICAgIH0KIAotICAg
IF90b09yaWdpbmFsU3RyaW5nOiBmdW5jdGlvbigpCisgICAgLy8gUHJpdmF0ZQorCisgICAgX3Rv
T3JpZ2luYWxTdHJpbmcoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMub3JpZ2luYWwgfHwg
dGhpcy5fdG9OaWNrbmFtZVN0cmluZygpOwotICAgIH0sCisgICAgfQogCi0gICAgX3RvTmlja25h
bWVTdHJpbmc6IGZ1bmN0aW9uKCkKKyAgICBfdG9OaWNrbmFtZVN0cmluZygpCiAgICAgewogICAg
ICAgICBpZiAodGhpcy5uaWNrbmFtZSkKICAgICAgICAgICAgIHJldHVybiB0aGlzLm5pY2tuYW1l
OwpAQCAtMjg1LDkgKzM1NSw5IEBAIFdlYkluc3BlY3Rvci5Db2xvci5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIH0KIAogICAgICAgICByZXR1cm4gdGhpcy5fdG9SR0JTdHJpbmcoKTsKLSAgICB9LAor
ICAgIH0KIAotICAgIF90b1Nob3J0SEVYU3RyaW5nOiBmdW5jdGlvbigpCisgICAgX3RvU2hvcnRI
RVhTdHJpbmcoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLnNpbXBsZSkKICAgICAgICAgICAg
IHJldHVybiB0aGlzLl90b1JHQkFTdHJpbmcoKTsKQEAgLTMwMSw5ICszNzEsOSBAQCBXZWJJbnNw
ZWN0b3IuQ29sb3IucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuICIjIiArIHJbMF0g
KyBnWzBdICsgYlswXTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcmV0dXJuICIjIiArIHIg
KyBnICsgYjsKLSAgICB9LAorICAgIH0KIAotICAgIF90b0hFWFN0cmluZzogZnVuY3Rpb24oKQor
ICAgIF90b0hFWFN0cmluZygpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuc2ltcGxlKQogICAg
ICAgICAgICAgcmV0dXJuIHRoaXMuX3RvUkdCQVN0cmluZygpOwpAQCAtMzE0LDM4ICszODQsMzgg
QEAgV2ViSW5zcGVjdG9yLkNvbG9yLnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIGIgPSB0aGlz
Ll9jb21wb25lbnRUb0hleFZhbHVlKHJnYmFbMl0pOwogCiAgICAgICAgIHJldHVybiAiIyIgKyBy
ICsgZyArIGI7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdG9SR0JTdHJpbmc6IGZ1bmN0aW9uKCkK
KyAgICBfdG9SR0JTdHJpbmcoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLnNpbXBsZSkKICAg
ICAgICAgICAgIHJldHVybiB0aGlzLl90b1JHQkFTdHJpbmcoKTsKIAogICAgICAgICB2YXIgcmdi
YSA9IHRoaXMucmdiYTsKICAgICAgICAgcmV0dXJuICJyZ2IoIiArIFtyZ2JhWzBdLCByZ2JhWzFd
LCByZ2JhWzJdXS5qb2luKCIsICIpICsgIikiOwotICAgIH0sCisgICAgfQogCi0gICAgX3RvUkdC
QVN0cmluZzogZnVuY3Rpb24oKQorICAgIF90b1JHQkFTdHJpbmcoKQogICAgIHsKICAgICAgICAg
cmV0dXJuICJyZ2JhKCIgKyB0aGlzLnJnYmEuam9pbigiLCAiKSArICIpIjsKLSAgICB9LAorICAg
IH0KIAotICAgIF90b0hTTFN0cmluZzogZnVuY3Rpb24oKQorICAgIF90b0hTTFN0cmluZygpCiAg
ICAgewogICAgICAgICBpZiAoIXRoaXMuc2ltcGxlKQogICAgICAgICAgICAgcmV0dXJuIHRoaXMu
X3RvSFNMQVN0cmluZygpOwogCiAgICAgICAgIHZhciBoc2xhID0gdGhpcy5oc2xhOwogICAgICAg
ICByZXR1cm4gImhzbCgiICsgaHNsYVswXSArICIsICIgKyBoc2xhWzFdICsgIiUsICIgKyBoc2xh
WzJdICsgIiUpIjsKLSAgICB9LAorICAgIH0KIAotICAgIF90b0hTTEFTdHJpbmc6IGZ1bmN0aW9u
KCkKKyAgICBfdG9IU0xBU3RyaW5nKCkKICAgICB7CiAgICAgICAgIHZhciBoc2xhID0gdGhpcy5o
c2xhOwogICAgICAgICByZXR1cm4gImhzbGEoIiArIGhzbGFbMF0gKyAiLCAiICsgaHNsYVsxXSAr
ICIlLCAiICsgaHNsYVsyXSArICIlLCAiICsgaHNsYVszXSArICIpIjsKLSAgICB9LAorICAgIH0K
IAotICAgIF9jYW5CZVNlcmlhbGl6ZWRBc1Nob3J0SEVYOiBmdW5jdGlvbigpCisgICAgX2NhbkJl
U2VyaWFsaXplZEFzU2hvcnRIRVgoKQogICAgIHsKICAgICAgICAgdmFyIHJnYmEgPSB0aGlzLnJn
YmE7CiAKQEAgLTM2MiwyMiArNDMyLDIyIEBAIFdlYkluc3BlY3Rvci5Db2xvci5wcm90b3R5cGUg
PSB7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBfY29tcG9uZW50VG9OdW1iZXI6IGZ1bmN0aW9uKHZhbHVlKQor
ICAgIF9jb21wb25lbnRUb051bWJlcih2YWx1ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBOdW1i
ZXIuY29uc3RyYWluKHZhbHVlLCAwLCAyNTUpOwotICAgIH0sCisgICAgfQogCi0gICAgX2NvbXBv
bmVudFRvSGV4VmFsdWU6IGZ1bmN0aW9uKHZhbHVlKQorICAgIF9jb21wb25lbnRUb0hleFZhbHVl
KHZhbHVlKQogICAgIHsKICAgICAgICAgdmFyIGhleCA9IHRoaXMuX2NvbXBvbmVudFRvTnVtYmVy
KHZhbHVlKS50b1N0cmluZygxNik7CiAgICAgICAgIGlmIChoZXgubGVuZ3RoID09PSAxKQogICAg
ICAgICAgICAgaGV4ID0gIjAiICsgaGV4OwogICAgICAgICByZXR1cm4gaGV4OwotICAgIH0sCisg
ICAgfQogCi0gICAgX3JnYlRvSFNMOiBmdW5jdGlvbihyZ2IpCisgICAgX3JnYlRvSFNMKHJnYikK
ICAgICB7CiAgICAgICAgIHZhciByID0gdGhpcy5fY29tcG9uZW50VG9OdW1iZXIocmdiWzBdKSAv
IDI1NTsKICAgICAgICAgdmFyIGcgPSB0aGlzLl9jb21wb25lbnRUb051bWJlcihyZ2JbMV0pIC8g
MjU1OwpAQCAtNDEyLDkgKzQ4Miw5IEBAIFdlYkluc3BlY3Rvci5Db2xvci5wcm90b3R5cGUgPSB7
CiAgICAgICAgIGwgPSBNYXRoLnJvdW5kKGwgKiAxMDApOwogCiAgICAgICAgIHJldHVybiBbaCwg
cywgbF07Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfaHNsVG9SR0I6IGZ1bmN0aW9uKGhzbCkKKyAg
ICBfaHNsVG9SR0IoaHNsKQogICAgIHsKICAgICAgICAgdmFyIGggPSBwYXJzZUZsb2F0KGhzbFsw
XSkgLyAzNjA7CiAgICAgICAgIHZhciBzID0gcGFyc2VGbG9hdChoc2xbMV0pIC8gMTAwOwpAQCAt
NDM0LDE2ICs1MDQsMTYgQEAgV2ViSW5zcGVjdG9yLkNvbG9yLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgICAgIE1hdGgucm91bmQoc0FycmF5WyAoaCB8IDE2KSAlIDYgXSAqIDI1NSksCiAgICAgICAg
ICAgICBNYXRoLnJvdW5kKHNBcnJheVsgKGggfCA4KSAgJSA2IF0gKiAyNTUpCiAgICAgICAgIF07
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcmdiYVRvSFNMQTogZnVuY3Rpb24ocmdiYSkKKyAgICBf
cmdiYVRvSFNMQShyZ2JhKQogICAgIHsKICAgICAgICAgdmFyIGhzbCA9IHRoaXMuX3JnYlRvSFNM
KHJnYmEpOwogICAgICAgICBoc2wucHVzaChyZ2JhWzNdKTsKICAgICAgICAgcmV0dXJuIGhzbDsK
LSAgICB9LAorICAgIH0KIAotICAgIF9oc2xhVG9SR0JBOiBmdW5jdGlvbihoc2xhKQorICAgIF9o
c2xhVG9SR0JBKGhzbGEpCiAgICAgewogICAgICAgICB2YXIgcmdiYSA9IHRoaXMuX2hzbFRvUkdC
KGhzbGEpOwogICAgICAgICByZ2JhLnB1c2goaHNsYVszXSk7CkBAIC00NTEsNiArNTIxLDE3IEBA
IFdlYkluc3BlY3Rvci5Db2xvci5wcm90b3R5cGUgPSB7CiAgICAgfQogfTsKIAorV2ViSW5zcGVj
dG9yLkNvbG9yLkZvcm1hdCA9IHsKKyAgICBPcmlnaW5hbDogImNvbG9yLWZvcm1hdC1vcmlnaW5h
bCIsCisgICAgTmlja25hbWU6ICJjb2xvci1mb3JtYXQtbmlja25hbWUiLAorICAgIEhFWDogImNv
bG9yLWZvcm1hdC1oZXgiLAorICAgIFNob3J0SEVYOiAiY29sb3ItZm9ybWF0LXNob3J0LWhleCIs
CisgICAgUkdCOiAiY29sb3ItZm9ybWF0LXJnYiIsCisgICAgUkdCQTogImNvbG9yLWZvcm1hdC1y
Z2JhIiwKKyAgICBIU0w6ICJjb2xvci1mb3JtYXQtaHNsIiwKKyAgICBIU0xBOiAiY29sb3ItZm9y
bWF0LWhzbGEiCit9OworCiBXZWJJbnNwZWN0b3IuQ29sb3IuTmlja25hbWVzID0gewogICAgICJh
bGljZWJsdWUiOiBbMjQwLCAyNDgsIDI1NV0sCiAgICAgImFudGlxdWV3aGl0ZSI6IFsyNTAsIDIz
NSwgMjE1XSwKQEAgLTU5Miw3NSArNjczLDMgQEAgV2ViSW5zcGVjdG9yLkNvbG9yLk5pY2tuYW1l
cyA9IHsKICAgICAieWVsbG93IjogWzI1NSwgMjU1LCAwXSwKICAgICAieWVsbG93Z3JlZW4iOiBb
MTU0LCAyMDUsIDUwXQogfTsKLQotV2ViSW5zcGVjdG9yLkNvbG9yLnJnYjJoc3YgPSBmdW5jdGlv
bihyLCBnLCBiKQotewotICAgIHIgLz0gMjU1OwotICAgIGcgLz0gMjU1OwotICAgIGIgLz0gMjU1
OwotCi0gICAgdmFyIG1pbiA9IE1hdGgubWluKE1hdGgubWluKHIsIGcpLCBiKTsKLSAgICB2YXIg
bWF4ID0gTWF0aC5tYXgoTWF0aC5tYXgociwgZyksIGIpOwotICAgIHZhciBkZWx0YSA9IG1heCAt
IG1pbjsKLQotICAgIHZhciB2ID0gbWF4OwotICAgIHZhciBzLCBoOwotCi0gICAgaWYgKG1heCA9
PT0gbWluKQotICAgICAgICBoID0gMDsKLSAgICBlbHNlIGlmIChtYXggPT09IHIpCi0gICAgICAg
IGggPSAoNjAgKiAoKGcgLSBiKSAvIGRlbHRhKSkgJSAzNjA7Ci0gICAgZWxzZSBpZiAobWF4ID09
PSBnKQotICAgICAgICBoID0gNjAgKiAoKGIgLSByKSAvIGRlbHRhKSArIDEyMDsKLSAgICBlbHNl
IGlmIChtYXggPT09IGIpCi0gICAgICAgIGggPSA2MCAqICgociAtIGcpIC8gZGVsdGEpICsgMjQw
OwotCi0gICAgaWYgKGggPCAwKQotICAgICAgICBoICs9IDM2MDsKLQotICAgIC8vIFNhdHVyYXRp
b24KLSAgICBpZiAobWF4ID09PSAwKQotICAgICAgICBzID0gMDsKLSAgICBlbHNlCi0gICAgICAg
IHMgPSAxIC0gKG1pbiAvIG1heCk7Ci0KLSAgICByZXR1cm4gW2gsIHMsIHZdOwotfTsKLQotV2Vi
SW5zcGVjdG9yLkNvbG9yLmhzdjJyZ2IgPSBmdW5jdGlvbihoLCBzLCB2KQotewotICAgIGlmIChz
ID09PSAwKQotICAgICAgICByZXR1cm4gW3YsIHYsIHZdOwotCi0gICAgaCAvPSA2MDsKLSAgICB2
YXIgaSA9IE1hdGguZmxvb3IoaCk7Ci0gICAgdmFyIGRhdGEgPSBbCi0gICAgICAgIHYgKiAoMSAt
IHMpLAotICAgICAgICB2ICogKDEgLSBzICogKGggLSBpKSksCi0gICAgICAgIHYgKiAoMSAtIHMg
KiAoMSAtIChoIC0gaSkpKQotICAgIF07Ci0gICAgdmFyIHJnYjsKLQotICAgIHN3aXRjaCAoaSkg
ewotICAgIGNhc2UgMDoKLSAgICAgICAgcmdiID0gW3YsIGRhdGFbMl0sIGRhdGFbMF1dOwotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIDE6Ci0gICAgICAgIHJnYiA9IFtkYXRhWzFdLCB2LCBkYXRh
WzBdXTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSAyOgotICAgICAgICByZ2IgPSBbZGF0YVsw
XSwgdiwgZGF0YVsyXV07Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgMzoKLSAgICAgICAgcmdi
ID0gW2RhdGFbMF0sIGRhdGFbMV0sIHZdOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIDQ6Ci0g
ICAgICAgIHJnYiA9IFtkYXRhWzJdLCBkYXRhWzBdLCB2XTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
ZGVmYXVsdDoKLSAgICAgICAgcmdiID0gW3YsIGRhdGFbMF0sIGRhdGFbMV1dOwotICAgICAgICBi
cmVhazsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmdiOwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Db250ZW50Rmxvdy5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Db250ZW50Rmxvdy5qcwppbmRl
eCA3MjYzMTZhLi5jYzA2M2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Nb2RlbHMvQ29udGVudEZsb3cuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NvbnRlbnRGbG93LmpzCkBAIC0yNywyNiArMjcsMTcg
QEAKICAqIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5Db250ZW50RmxvdyA9IGZ1
bmN0aW9uKGRvY3VtZW50Tm9kZUlkZW50aWZpZXIsIG5hbWUsIG92ZXJzZXQsIGNvbnRlbnROb2Rl
cykKK1dlYkluc3BlY3Rvci5Db250ZW50RmxvdyA9IGNsYXNzIENvbnRlbnRGbG93IGV4dGVuZHMg
V2ViSW5zcGVjdG9yLk9iamVjdAogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlz
KTsKKyAgICBjb25zdHJ1Y3Rvcihkb2N1bWVudE5vZGVJZGVudGlmaWVyLCBuYW1lLCBvdmVyc2V0
LCBjb250ZW50Tm9kZXMpCisgICAgeworICAgICAgICBzdXBlcigpOwogCiAgICAgICAgIHRoaXMu
X2RvY3VtZW50Tm9kZUlkZW50aWZpZXIgPSBkb2N1bWVudE5vZGVJZGVudGlmaWVyOwogICAgICAg
ICB0aGlzLl9uYW1lID0gbmFtZTsKICAgICAgICAgdGhpcy5fb3ZlcnNldCA9IG92ZXJzZXQ7CiAg
ICAgICAgIHRoaXMuX2NvbnRlbnROb2RlcyA9IGNvbnRlbnROb2RlczsKLX07Ci0KLVdlYkluc3Bl
Y3Rvci5Db250ZW50Rmxvdy5FdmVudCA9IHsKLSAgICBPdmVyc2V0V2FzQ2hhbmdlZDogImNvbnRl
bnQtZmxvdy1vdmVyc2V0LXdhcy1jaGFuZ2VkIiwKLSAgICBDb250ZW50Tm9kZVdhc0FkZGVkOiAi
Y29udGVudC1mbG93LWNvbnRlbnQtbm9kZS13YXMtYWRkZWQiLAotICAgIENvbnRlbnROb2RlV2Fz
UmVtb3ZlZDogImNvbnRlbnQtZmxvdy1jb250ZW50LW5vZGUtd2FzLXJlbW92ZWQiCi19OwotCi1X
ZWJJbnNwZWN0b3IuQ29udGVudEZsb3cucHJvdG90eXBlID0gewotCi0gICAgY29uc3RydWN0b3I6
IFdlYkluc3BlY3Rvci5Db250ZW50RmxvdywKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5P
YmplY3QucHJvdG90eXBlLAorICAgIH0KIAogICAgIC8vIFB1YmxpYwogCkBAIC01NCwyMiArNDUs
MjIgQEAgV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93LnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAg
ICAgIC8vIFVzZSB0aGUgZmxvdyBub2RlIGlkLCB0byBhdm9pZCBjb2xsaXNpb25zIHdoZW4gd2Ug
Y2hhbmdlIG1haW4gZG9jdW1lbnQgaWQuCiAgICAgICAgIHJldHVybiB0aGlzLl9kb2N1bWVudE5v
ZGVJZGVudGlmaWVyICsgIjoiICsgdGhpcy5fbmFtZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdl
dCBkb2N1bWVudE5vZGVJZGVudGlmaWVyKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9k
b2N1bWVudE5vZGVJZGVudGlmaWVyOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IG5hbWUoKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX25hbWU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBn
ZXQgb3ZlcnNldCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fb3ZlcnNldDsKLSAgICB9
LAorICAgIH0KIAogICAgIHNldCBvdmVyc2V0KG92ZXJzZXQpCiAgICAgewpAQCAtNzcsMjggKzY4
LDI4IEBAIFdlYkluc3BlY3Rvci5Db250ZW50Rmxvdy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIHRoaXMuX292ZXJzZXQgPSBvdmVyc2V0OwogICAgICAgICB0aGlz
LmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuQ29udGVudEZsb3cuRXZlbnQu
Rmxvd092ZXJzZXRXYXNDaGFuZ2VkKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBjb250ZW50
Tm9kZXMoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnRlbnROb2RlczsKLSAgICB9
LAorICAgIH0KIAotICAgIGluc2VydENvbnRlbnROb2RlQmVmb3JlOiBmdW5jdGlvbihjb250ZW50
Tm9kZSwgcmVmZXJlbmNlTm9kZSkKKyAgICBpbnNlcnRDb250ZW50Tm9kZUJlZm9yZShjb250ZW50
Tm9kZSwgcmVmZXJlbmNlTm9kZSkKICAgICB7CiAgICAgICAgIHZhciBpbmRleCA9IHRoaXMuX2Nv
bnRlbnROb2Rlcy5pbmRleE9mKHJlZmVyZW5jZU5vZGUpOwogICAgICAgICBjb25zb2xlLmFzc2Vy
dChpbmRleCAhPT0gLTEpOwogICAgICAgICB0aGlzLl9jb250ZW50Tm9kZXMuc3BsaWNlKGluZGV4
LCAwLCBjb250ZW50Tm9kZSk7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJz
KFdlYkluc3BlY3Rvci5Db250ZW50Rmxvdy5FdmVudC5Db250ZW50Tm9kZVdhc0FkZGVkLCB7bm9k
ZTogY29udGVudE5vZGUsIGJlZm9yZTogcmVmZXJlbmNlTm9kZX0pOwotICAgIH0sCisgICAgfQog
Ci0gICAgYXBwZW5kQ29udGVudE5vZGU6IGZ1bmN0aW9uKGNvbnRlbnROb2RlKQorICAgIGFwcGVu
ZENvbnRlbnROb2RlKGNvbnRlbnROb2RlKQogICAgIHsKICAgICAgICAgdGhpcy5fY29udGVudE5v
ZGVzLnB1c2goY29udGVudE5vZGUpOwogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3Rl
bmVycyhXZWJJbnNwZWN0b3IuQ29udGVudEZsb3cuRXZlbnQuQ29udGVudE5vZGVXYXNBZGRlZCwg
e25vZGU6IGNvbnRlbnROb2RlfSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZW1vdmVDb250ZW50
Tm9kZTogZnVuY3Rpb24oY29udGVudE5vZGUpCisgICAgcmVtb3ZlQ29udGVudE5vZGUoY29udGVu
dE5vZGUpCiAgICAgewogICAgICAgICB2YXIgaW5kZXggPSB0aGlzLl9jb250ZW50Tm9kZXMuaW5k
ZXhPZihjb250ZW50Tm9kZSk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGluZGV4ICE9PSAtMSk7
CkBAIC0xMDYsMyArOTcsOSBAQCBXZWJJbnNwZWN0b3IuQ29udGVudEZsb3cucHJvdG90eXBlID0g
ewogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuQ29u
dGVudEZsb3cuRXZlbnQuQ29udGVudE5vZGVXYXNSZW1vdmVkLCB7bm9kZTogY29udGVudE5vZGV9
KTsKICAgICB9CiB9OworCitXZWJJbnNwZWN0b3IuQ29udGVudEZsb3cuRXZlbnQgPSB7CisgICAg
T3ZlcnNldFdhc0NoYW5nZWQ6ICJjb250ZW50LWZsb3ctb3ZlcnNldC13YXMtY2hhbmdlZCIsCisg
ICAgQ29udGVudE5vZGVXYXNBZGRlZDogImNvbnRlbnQtZmxvdy1jb250ZW50LW5vZGUtd2FzLWFk
ZGVkIiwKKyAgICBDb250ZW50Tm9kZVdhc1JlbW92ZWQ6ICJjb250ZW50LWZsb3ctY29udGVudC1u
b2RlLXdhcy1yZW1vdmVkIgorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL01vZGVscy9Db29raWVTdG9yYWdlT2JqZWN0LmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0Nvb2tpZVN0b3JhZ2VPYmplY3QuanMKaW5k
ZXggMGFlNjBmMS4uMzg2YjkxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvTW9kZWxzL0Nvb2tpZVN0b3JhZ2VPYmplY3QuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0Nvb2tpZVN0b3JhZ2VPYmplY3QuanMK
QEAgLTIzLDI1ICsyMywyNiBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKLVdlYkluc3BlY3Rvci5Db29raWVTdG9yYWdlT2JqZWN0ID0gZnVuY3Rpb24oaG9zdCkK
K1dlYkluc3BlY3Rvci5Db29raWVTdG9yYWdlT2JqZWN0ID0gY2xhc3MgQ29va2llU3RvcmFnZU9i
amVjdAoreworICAgIGNvbnN0cnVjdG9yKGhvc3QpCiAgICAgewogICAgICAgICB0aGlzLl9ob3N0
ID0gaG9zdDsKLX07CisgICAgfQogCi1XZWJJbnNwZWN0b3IuQ29va2llU3RvcmFnZU9iamVjdC5U
eXBlSWRlbnRpZmllciA9ICJjb29raWUtc3RvcmFnZSI7Ci1XZWJJbnNwZWN0b3IuQ29va2llU3Rv
cmFnZU9iamVjdC5Db29raWVIb3N0Q29va2llS2V5ID0gImNvb2tpZS1zdG9yYWdlLWhvc3QiOwot
Ci1XZWJJbnNwZWN0b3IuQ29va2llU3RvcmFnZU9iamVjdC5wcm90b3R5cGUgPSB7Ci0gICAgY29u
c3RydWN0b3I6IFdlYkluc3BlY3Rvci5Db29raWVTdG9yYWdlT2JqZWN0LAorICAgIC8vIFB1Ymxp
YwogCiAgICAgZ2V0IGhvc3QoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2hvc3Q7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBzYXZlSWRlbnRpdHlUb0Nvb2tpZTogZnVuY3Rpb24oY29va2ll
KQorICAgIHNhdmVJZGVudGl0eVRvQ29va2llKGNvb2tpZSkKICAgICB7Ci0gICAgICAgIGNvb2tp
ZVtXZWJJbnNwZWN0b3IuQ29va2llU3RvcmFnZU9iamVjdC5Db29raWVIb3N0Q29va2llS2V5XSA9
IHRoaXMuaG9zdDsKLSAgICB9CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGNsYXNzIHdpbGwgbmVl
ZCB0byBsb29rIHVwIGNvb2tpZXMgdGhhdCBhcmUgc2V0IGZvciB0aGlzIGhvc3QuCisgICAgICAg
IGNvb2tpZVtXZWJJbnNwZWN0b3IuQ29va2llU3RvcmFnZU9iamVjdC5Db29raWVIb3N0Q29va2ll
S2V5XSA9IHRoaXMuaG9zdDsKKyAgICB9ICAgIAogfTsKKworV2ViSW5zcGVjdG9yLkNvb2tpZVN0
b3JhZ2VPYmplY3QuVHlwZUlkZW50aWZpZXIgPSAiY29va2llLXN0b3JhZ2UiOworV2ViSW5zcGVj
dG9yLkNvb2tpZVN0b3JhZ2VPYmplY3QuQ29va2llSG9zdENvb2tpZUtleSA9ICJjb29raWUtc3Rv
cmFnZS1ob3N0IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01vZGVscy9ET01Ob2RlLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvTW9kZWxzL0RPTU5vZGUuanMKaW5kZXggMjVhM2VmNi4uMzA1N2Y5YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0RPTU5vZGUuanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0RPTU5vZGUuanMK
QEAgLTMwLDggKzMwLDExIEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5E
T01Ob2RlID0gZnVuY3Rpb24oZG9tQWdlbnQsIGRvYywgaXNJblNoYWRvd1RyZWUsIHBheWxvYWQp
IHsKLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CitXZWJJbnNwZWN0b3IuRE9N
Tm9kZSA9IGNsYXNzIERPTU5vZGUgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0Cit7CisgICAg
Y29uc3RydWN0b3IoZG9tQWdlbnQsIGRvYywgaXNJblNoYWRvd1RyZWUsIHBheWxvYWQpCisgICAg
eworICAgICAgICBzdXBlcigpOwogCiAgICAgICAgIHRoaXMuX2RvbUFnZW50ID0gZG9tQWdlbnQ7
CiAgICAgICAgIHRoaXMuX2lzSW5TaGFkb3dUcmVlID0gaXNJblNoYWRvd1RyZWU7CkBAIC0xMDMs
MTggKzEwNiw5IEBAIFdlYkluc3BlY3Rvci5ET01Ob2RlID0gZnVuY3Rpb24oZG9tQWdlbnQsIGRv
YywgaXNJblNoYWRvd1RyZWUsIHBheWxvYWQpIHsKICAgICAgICAgICAgIHRoaXMubmFtZSA9IHBh
eWxvYWQubmFtZTsKICAgICAgICAgICAgIHRoaXMudmFsdWUgPSBwYXlsb2FkLnZhbHVlOwogICAg
ICAgICB9Ci19OworICAgIH0KIAotV2ViSW5zcGVjdG9yLk9iamVjdC5hZGRDb25zdHJ1Y3RvckZ1
bmN0aW9ucyhXZWJJbnNwZWN0b3IuRE9NTm9kZSk7Ci0KLVdlYkluc3BlY3Rvci5ET01Ob2RlLkV2
ZW50ID0gewotICAgIEVuYWJsZWRQc2V1ZG9DbGFzc2VzQ2hhbmdlZDogImRvbS1ub2RlLWVuYWJs
ZWQtcHNldWRvLWNsYXNzZXMtZGlkLWNoYW5nZSIsCi0gICAgQXR0cmlidXRlTW9kaWZpZWQ6ICJk
b20tbm9kZS1hdHRyaWJ1dGUtbW9kaWZpZWQiLAotICAgIEF0dHJpYnV0ZVJlbW92ZWQ6ICJkb20t
bm9kZS1hdHRyaWJ1dGUtcmVtb3ZlZCIKLX07Ci0KLVdlYkluc3BlY3Rvci5ET01Ob2RlLnByb3Rv
dHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkRPTU5vZGUsCisgICAgLy8g
UHVibGljCiAKICAgICBnZXQgY2hpbGRyZW4oKQogICAgIHsKQEAgLTEzMiw3ICsxMjYsNyBAQCBX
ZWJJbnNwZWN0b3IuRE9NTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICBy
ZXR1cm4gdGhpcy5fZmlsdGVyZWRDaGlsZHJlbjsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBm
aXJzdENoaWxkKCkKICAgICB7CkBAIC0xNDIsNyArMTM2LDcgQEAgV2ViSW5zcGVjdG9yLkRPTU5v
ZGUucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuIGNoaWxkcmVuWzBdOwogCiAgICAg
ICAgIHJldHVybiBudWxsOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGxhc3RDaGlsZCgpCiAg
ICAgewpAQCAtMTUyLDcgKzE0Niw3IEBAIFdlYkluc3BlY3Rvci5ET01Ob2RlLnByb3RvdHlwZSA9
IHsKICAgICAgICAgICAgIHJldHVybiBjaGlsZHJlbi5sYXN0VmFsdWU7CiAKICAgICAgICAgcmV0
dXJuIG51bGw7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgbmV4dFNpYmxpbmcoKQogICAgIHsK
QEAgLTE2Niw3ICsxNjAsNyBAQCBXZWJJbnNwZWN0b3IuRE9NTm9kZS5wcm90b3R5cGUgPSB7CiAg
ICAgICAgICAgICBub2RlID0gbm9kZS5fbmV4dFNpYmxpbmc7CiAgICAgICAgIH0KICAgICAgICAg
cmV0dXJuIG51bGw7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgcHJldmlvdXNTaWJsaW5nKCkK
ICAgICB7CkBAIC0xODAsNyArMTc0LDcgQEAgV2ViSW5zcGVjdG9yLkRPTU5vZGUucHJvdG90eXBl
ID0gewogICAgICAgICAgICAgbm9kZSA9IG5vZGUuX3ByZXZpb3VzU2libGluZzsKICAgICAgICAg
fQogICAgICAgICByZXR1cm4gbnVsbDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBjaGlsZE5v
ZGVDb3VudCgpCiAgICAgewpAQCAtMTkyLDk1ICsxODYsOTUgQEAgV2ViSW5zcGVjdG9yLkRPTU5v
ZGUucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NoaWxkTm9kZUNvdW50
ICsgdGhpcy5fc2hhZG93Um9vdHMubGVuZ3RoOwogCiAgICAgICAgIHJldHVybiB0aGlzLl9jaGls
ZE5vZGVDb3VudDsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBjaGlsZE5vZGVDb3VudChjb3Vu
dCkKICAgICB7CiAgICAgICAgIHRoaXMuX2NoaWxkTm9kZUNvdW50ID0gY291bnQ7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBjb21wdXRlZFJvbGU6IGZ1bmN0aW9uKCkKKyAgICBjb21wdXRlZFJvbGUo
KQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbXB1dGVkUm9sZTsKLSAgICB9LAorICAg
IH0KIAotICAgIGhhc0F0dHJpYnV0ZXM6IGZ1bmN0aW9uKCkKKyAgICBoYXNBdHRyaWJ1dGVzKCkK
ICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9hdHRyaWJ1dGVzLmxlbmd0aCA+IDA7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBoYXNDaGlsZE5vZGVzOiBmdW5jdGlvbigpCisgICAgaGFzQ2hpbGRO
b2RlcygpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5jaGlsZE5vZGVDb3VudCA+IDA7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBoYXNTaGFkb3dSb290czogZnVuY3Rpb24oKQorICAgIGhhc1No
YWRvd1Jvb3RzKCkKICAgICB7CiAgICAgICAgIHJldHVybiAhIXRoaXMuX3NoYWRvd1Jvb3RzLmxl
bmd0aDsKLSAgICB9LAorICAgIH0KIAotICAgIGlzSW5TaGFkb3dUcmVlOiBmdW5jdGlvbigpCisg
ICAgaXNJblNoYWRvd1RyZWUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2lzSW5TaGFk
b3dUcmVlOwotICAgIH0sCisgICAgfQogCi0gICAgbm9kZVR5cGU6IGZ1bmN0aW9uKCkKKyAgICBu
b2RlVHlwZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fbm9kZVR5cGU7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBub2RlTmFtZTogZnVuY3Rpb24oKQorICAgIG5vZGVOYW1lKCkKICAgICB7
CiAgICAgICAgIHJldHVybiB0aGlzLl9ub2RlTmFtZTsKLSAgICB9LAorICAgIH0KIAotICAgIG5v
ZGVOYW1lSW5Db3JyZWN0Q2FzZTogZnVuY3Rpb24oKQorICAgIG5vZGVOYW1lSW5Db3JyZWN0Q2Fz
ZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5pc1hNTE5vZGUoKSA/IHRoaXMubm9kZU5h
bWUoKSA6IHRoaXMubm9kZU5hbWUoKS50b0xvd2VyQ2FzZSgpOwotICAgIH0sCisgICAgfQogCi0g
ICAgc2V0Tm9kZU5hbWU6IGZ1bmN0aW9uKG5hbWUsIGNhbGxiYWNrKQorICAgIHNldE5vZGVOYW1l
KG5hbWUsIGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgRE9NQWdlbnQuc2V0Tm9kZU5hbWUodGhp
cy5pZCwgbmFtZSwgdGhpcy5fbWFrZVVuZG9hYmxlQ2FsbGJhY2soY2FsbGJhY2spKTsKLSAgICB9
LAorICAgIH0KIAotICAgIGxvY2FsTmFtZTogZnVuY3Rpb24oKQorICAgIGxvY2FsTmFtZSgpCiAg
ICAgewogICAgICAgICByZXR1cm4gdGhpcy5fbG9jYWxOYW1lOwotICAgIH0sCisgICAgfQogCi0g
ICAgbm9kZVZhbHVlOiBmdW5jdGlvbigpCisgICAgbm9kZVZhbHVlKCkKICAgICB7CiAgICAgICAg
IHJldHVybiB0aGlzLl9ub2RlVmFsdWU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzZXROb2RlVmFs
dWU6IGZ1bmN0aW9uKHZhbHVlLCBjYWxsYmFjaykKKyAgICBzZXROb2RlVmFsdWUodmFsdWUsIGNh
bGxiYWNrKQogICAgIHsKICAgICAgICAgRE9NQWdlbnQuc2V0Tm9kZVZhbHVlKHRoaXMuaWQsIHZh
bHVlLCB0aGlzLl9tYWtlVW5kb2FibGVDYWxsYmFjayhjYWxsYmFjaykpOwotICAgIH0sCisgICAg
fQogCi0gICAgZ2V0QXR0cmlidXRlOiBmdW5jdGlvbihuYW1lKQorICAgIGdldEF0dHJpYnV0ZShu
YW1lKQogICAgIHsKICAgICAgICAgdmFyIGF0dHIgPSB0aGlzLl9hdHRyaWJ1dGVzTWFwW25hbWVd
OwogICAgICAgICByZXR1cm4gYXR0ciA/IGF0dHIudmFsdWUgOiB1bmRlZmluZWQ7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBzZXRBdHRyaWJ1dGU6IGZ1bmN0aW9uKG5hbWUsIHRleHQsIGNhbGxiYWNr
KQorICAgIHNldEF0dHJpYnV0ZShuYW1lLCB0ZXh0LCBjYWxsYmFjaykKICAgICB7CiAgICAgICAg
IERPTUFnZW50LnNldEF0dHJpYnV0ZXNBc1RleHQodGhpcy5pZCwgdGV4dCwgbmFtZSwgdGhpcy5f
bWFrZVVuZG9hYmxlQ2FsbGJhY2soY2FsbGJhY2spKTsKLSAgICB9LAorICAgIH0KIAotICAgIHNl
dEF0dHJpYnV0ZVZhbHVlOiBmdW5jdGlvbihuYW1lLCB2YWx1ZSwgY2FsbGJhY2spCisgICAgc2V0
QXR0cmlidXRlVmFsdWUobmFtZSwgdmFsdWUsIGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgRE9N
QWdlbnQuc2V0QXR0cmlidXRlVmFsdWUodGhpcy5pZCwgbmFtZSwgdmFsdWUsIHRoaXMuX21ha2VV
bmRvYWJsZUNhbGxiYWNrKGNhbGxiYWNrKSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBhdHRyaWJ1
dGVzOiBmdW5jdGlvbigpCisgICAgYXR0cmlidXRlcygpCiAgICAgewogICAgICAgICByZXR1cm4g
dGhpcy5fYXR0cmlidXRlczsKLSAgICB9LAorICAgIH0KIAotICAgIHJlbW92ZUF0dHJpYnV0ZTog
ZnVuY3Rpb24obmFtZSwgY2FsbGJhY2spCisgICAgcmVtb3ZlQXR0cmlidXRlKG5hbWUsIGNhbGxi
YWNrKQogICAgIHsKICAgICAgICAgZnVuY3Rpb24gbXljYWxsYmFjayhlcnJvciwgc3VjY2VzcykK
ICAgICAgICAgewpAQCAtMjk3LDkgKzI5MSw5IEBAIFdlYkluc3BlY3Rvci5ET01Ob2RlLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX21ha2VVbmRvYWJsZUNhbGxiYWNrKGNhbGxiYWNr
KShlcnJvcik7CiAgICAgICAgIH0KICAgICAgICAgRE9NQWdlbnQucmVtb3ZlQXR0cmlidXRlKHRo
aXMuaWQsIG5hbWUsIG15Y2FsbGJhY2suYmluZCh0aGlzKSk7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBnZXRDaGlsZE5vZGVzOiBmdW5jdGlvbihjYWxsYmFjaykKKyAgICBnZXRDaGlsZE5vZGVzKGNh
bGxiYWNrKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuY2hpbGRyZW4pIHsKICAgICAgICAgICAg
IGlmIChjYWxsYmFjaykKQEAgLTMxMyw5ICszMDcsOSBAQCBXZWJJbnNwZWN0b3IuRE9NTm9kZS5w
cm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICBET01BZ2VudC5yZXF1ZXN0Q2hpbGRO
b2Rlcyh0aGlzLmlkLCBteWNhbGxiYWNrLmJpbmQodGhpcykpOwotICAgIH0sCisgICAgfQogCi0g
ICAgZ2V0U3VidHJlZTogZnVuY3Rpb24oZGVwdGgsIGNhbGxiYWNrKQorICAgIGdldFN1YnRyZWUo
ZGVwdGgsIGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgZnVuY3Rpb24gbXljYWxsYmFjayhlcnJv
cikKICAgICAgICAgewpAQCAtMzI0LDI0ICszMTgsMjQgQEAgV2ViSW5zcGVjdG9yLkRPTU5vZGUu
cHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgRE9NQWdlbnQucmVxdWVzdENoaWxk
Tm9kZXModGhpcy5pZCwgZGVwdGgsIG15Y2FsbGJhY2suYmluZCh0aGlzKSk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBnZXRPdXRlckhUTUw6IGZ1bmN0aW9uKGNhbGxiYWNrKQorICAgIGdldE91dGVy
SFRNTChjYWxsYmFjaykKICAgICB7CiAgICAgICAgIERPTUFnZW50LmdldE91dGVySFRNTCh0aGlz
LmlkLCBjYWxsYmFjayk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzZXRPdXRlckhUTUw6IGZ1bmN0
aW9uKGh0bWwsIGNhbGxiYWNrKQorICAgIHNldE91dGVySFRNTChodG1sLCBjYWxsYmFjaykKICAg
ICB7CiAgICAgICAgIERPTUFnZW50LnNldE91dGVySFRNTCh0aGlzLmlkLCBodG1sLCB0aGlzLl9t
YWtlVW5kb2FibGVDYWxsYmFjayhjYWxsYmFjaykpOwotICAgIH0sCisgICAgfQogCi0gICAgcmVt
b3ZlTm9kZTogZnVuY3Rpb24oY2FsbGJhY2spCisgICAgcmVtb3ZlTm9kZShjYWxsYmFjaykKICAg
ICB7CiAgICAgICAgIERPTUFnZW50LnJlbW92ZU5vZGUodGhpcy5pZCwgdGhpcy5fbWFrZVVuZG9h
YmxlQ2FsbGJhY2soY2FsbGJhY2spKTsKLSAgICB9LAorICAgIH0KIAotICAgIGNvcHlOb2RlOiBm
dW5jdGlvbigpCisgICAgY29weU5vZGUoKQogICAgIHsKICAgICAgICAgZnVuY3Rpb24gY29weShl
cnJvciwgdGV4dCkKICAgICAgICAgewpAQCAtMzQ5LDE0ICszNDMsMTQgQEAgV2ViSW5zcGVjdG9y
LkRPTU5vZGUucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIEluc3BlY3RvckZyb250ZW5k
SG9zdC5jb3B5VGV4dCh0ZXh0KTsKICAgICAgICAgfQogICAgICAgICBET01BZ2VudC5nZXRPdXRl
ckhUTUwodGhpcy5pZCwgY29weSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBldmVudExpc3RlbmVy
czogZnVuY3Rpb24oY2FsbGJhY2spCisgICAgZXZlbnRMaXN0ZW5lcnMoY2FsbGJhY2spCiAgICAg
ewogICAgICAgICBET01BZ2VudC5nZXRFdmVudExpc3RlbmVyc0Zvck5vZGUodGhpcy5pZCwgY2Fs
bGJhY2spOwotICAgIH0sCisgICAgfQogCi0gICAgYWNjZXNzaWJpbGl0eVByb3BlcnRpZXM6IGZ1
bmN0aW9uKGNhbGxiYWNrKQorICAgIGFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzKGNhbGxiYWNrKQog
ICAgIHsKICAgICAgICAgZnVuY3Rpb24gYWNjZXNzaWJpbGl0eVByb3BlcnRpZXNDYWxsYmFjayhl
cnJvciwgYWNjZXNzaWJpbGl0eVByb3BlcnRpZXMpCiAgICAgICAgIHsKQEAgLTM5NCw5ICszODgs
OSBAQCBXZWJJbnNwZWN0b3IuRE9NTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KICAgICAgICAgRE9NQWdlbnQuZ2V0QWNjZXNzaWJpbGl0eVByb3BlcnRpZXNGb3JO
b2RlKHRoaXMuaWQsIGFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzQ2FsbGJhY2suYmluZCh0aGlzKSk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBwYXRoOiBmdW5jdGlvbigpCisgICAgcGF0aCgpCiAgICAg
ewogICAgICAgICB2YXIgcGF0aCA9IFtdOwogICAgICAgICB2YXIgbm9kZSA9IHRoaXM7CkBAIC00
MDYsOSArNDAwLDkgQEAgV2ViSW5zcGVjdG9yLkRPTU5vZGUucHJvdG90eXBlID0gewogICAgICAg
ICB9CiAgICAgICAgIHBhdGgucmV2ZXJzZSgpOwogICAgICAgICByZXR1cm4gcGF0aC5qb2luKCIs
Iik7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBhcHByb3ByaWF0ZVNlbGVjdG9yRm9yOiBmdW5jdGlv
bihqdXN0U2VsZWN0b3IpCisgICAgYXBwcm9wcmlhdGVTZWxlY3RvckZvcihqdXN0U2VsZWN0b3Ip
CiAgICAgewogICAgICAgICB2YXIgbG93ZXJDYXNlTmFtZSA9IHRoaXMubG9jYWxOYW1lKCkgfHwg
dGhpcy5ub2RlTmFtZSgpLnRvTG93ZXJDYXNlKCk7CiAKQEAgLTQzMiw5ICs0MjYsOSBAQCBXZWJJ
bnNwZWN0b3IuRE9NTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm4gbG93ZXJD
YXNlTmFtZSArICJbdHlwZT1cIiIgKyB0aGlzLmdldEF0dHJpYnV0ZSgidHlwZSIpICsgIlwiXSI7
CiAKICAgICAgICAgcmV0dXJuIGxvd2VyQ2FzZU5hbWU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBp
c0FuY2VzdG9yOiBmdW5jdGlvbihub2RlKQorICAgIGlzQW5jZXN0b3Iobm9kZSkKICAgICB7CiAg
ICAgICAgIGlmICghbm9kZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTQ0NiwyMiAr
NDQwLDIyIEBAIFdlYkluc3BlY3Rvci5ET01Ob2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAg
IGN1cnJlbnROb2RlID0gY3VycmVudE5vZGUucGFyZW50Tm9kZTsKICAgICAgICAgfQogICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBpc0Rlc2NlbmRhbnQ6IGZ1bmN0
aW9uKGRlc2NlbmRhbnQpCisgICAgaXNEZXNjZW5kYW50KGRlc2NlbmRhbnQpCiAgICAgewogICAg
ICAgICByZXR1cm4gZGVzY2VuZGFudCAhPT0gbnVsbCAmJiBkZXNjZW5kYW50LmlzQW5jZXN0b3Io
dGhpcyk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfc2V0QXR0cmlidXRlc1BheWxvYWQ6IGZ1bmN0
aW9uKGF0dHJzKQorICAgIF9zZXRBdHRyaWJ1dGVzUGF5bG9hZChhdHRycykKICAgICB7CiAgICAg
ICAgIHRoaXMuX2F0dHJpYnV0ZXMgPSBbXTsKICAgICAgICAgdGhpcy5fYXR0cmlidXRlc01hcCA9
IHt9OwogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGF0dHJzLmxlbmd0aDsgaSArPSAyKQog
ICAgICAgICAgICAgdGhpcy5fYWRkQXR0cmlidXRlKGF0dHJzW2ldLCBhdHRyc1tpICsgMV0pOwot
ICAgIH0sCisgICAgfQogCi0gICAgX2luc2VydENoaWxkOiBmdW5jdGlvbihwcmV2LCBwYXlsb2Fk
KQorICAgIF9pbnNlcnRDaGlsZChwcmV2LCBwYXlsb2FkKQogICAgIHsKICAgICAgICAgdmFyIG5v
ZGUgPSBuZXcgV2ViSW5zcGVjdG9yLkRPTU5vZGUodGhpcy5fZG9tQWdlbnQsIHRoaXMub3duZXJE
b2N1bWVudCwgdGhpcy5faXNJblNoYWRvd1RyZWUsIHBheWxvYWQpOwogICAgICAgICBpZiAoIXBy
ZXYpIHsKQEAgLTQ3NCwxNiArNDY4LDE2IEBAIFdlYkluc3BlY3Rvci5ET01Ob2RlLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgICAgIHRoaXMuX2NoaWxkcmVuLnNwbGljZSh0aGlzLl9jaGlsZHJlbi5p
bmRleE9mKHByZXYpICsgMSwgMCwgbm9kZSk7CiAgICAgICAgIHRoaXMuX3JlbnVtYmVyKCk7CiAg
ICAgICAgIHJldHVybiBub2RlOwotICAgIH0sCisgICAgfQogCi0gICAgX3JlbW92ZUNoaWxkOiBm
dW5jdGlvbihub2RlKQorICAgIF9yZW1vdmVDaGlsZChub2RlKQogICAgIHsKICAgICAgICAgdGhp
cy5fY2hpbGRyZW4uc3BsaWNlKHRoaXMuX2NoaWxkcmVuLmluZGV4T2Yobm9kZSksIDEpOwogICAg
ICAgICBub2RlLnBhcmVudE5vZGUgPSBudWxsOwogICAgICAgICB0aGlzLl9yZW51bWJlcigpOwot
ICAgIH0sCisgICAgfQogCi0gICAgX3NldENoaWxkcmVuUGF5bG9hZDogZnVuY3Rpb24ocGF5bG9h
ZHMpCisgICAgX3NldENoaWxkcmVuUGF5bG9hZChwYXlsb2FkcykKICAgICB7CiAgICAgICAgIC8v
IFdlIHNldCBjaGlsZHJlbiBpbiB0aGUgY29uc3RydWN0b3IuCiAgICAgICAgIGlmICh0aGlzLl9j
b250ZW50RG9jdW1lbnQpCkBAIC00OTYsOSArNDkwLDkgQEAgV2ViSW5zcGVjdG9yLkRPTU5vZGUu
cHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fY2hpbGRyZW4ucHVzaChub2RlKTsKICAg
ICAgICAgfQogICAgICAgICB0aGlzLl9yZW51bWJlcigpOwotICAgIH0sCisgICAgfQogCi0gICAg
X3JlbnVtYmVyOiBmdW5jdGlvbigpCisgICAgX3JlbnVtYmVyKCkKICAgICB7CiAgICAgICAgIHRo
aXMuX2ZpbHRlcmVkQ2hpbGRyZW5OZWVkc1VwZGF0aW5nID0gdHJ1ZTsKIApAQCAtNTEzLDQ5ICs1
MDcsNDkgQEAgV2ViSW5zcGVjdG9yLkRPTU5vZGUucHJvdG90eXBlID0gewogICAgICAgICAgICAg
Y2hpbGQuX3ByZXZpb3VzU2libGluZyA9IGkgLSAxID49IDAgPyB0aGlzLl9jaGlsZHJlbltpIC0g
MV0gOiBudWxsOwogICAgICAgICAgICAgY2hpbGQucGFyZW50Tm9kZSA9IHRoaXM7CiAgICAgICAg
IH0KLSAgICB9LAorICAgIH0KIAotICAgIF9hZGRBdHRyaWJ1dGU6IGZ1bmN0aW9uKG5hbWUsIHZh
bHVlKQorICAgIF9hZGRBdHRyaWJ1dGUobmFtZSwgdmFsdWUpCiAgICAgewogICAgICAgICB2YXIg
YXR0ciA9IHtuYW1lLCB2YWx1ZSwgX25vZGU6IHRoaXN9OwogICAgICAgICB0aGlzLl9hdHRyaWJ1
dGVzTWFwW25hbWVdID0gYXR0cjsKICAgICAgICAgdGhpcy5fYXR0cmlidXRlcy5wdXNoKGF0dHIp
OwotICAgIH0sCisgICAgfQogCi0gICAgX3NldEF0dHJpYnV0ZTogZnVuY3Rpb24obmFtZSwgdmFs
dWUpCisgICAgX3NldEF0dHJpYnV0ZShuYW1lLCB2YWx1ZSkKICAgICB7CiAgICAgICAgIHZhciBh
dHRyID0gdGhpcy5fYXR0cmlidXRlc01hcFtuYW1lXTsKICAgICAgICAgaWYgKGF0dHIpCiAgICAg
ICAgICAgICBhdHRyLnZhbHVlID0gdmFsdWU7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHRo
aXMuX2FkZEF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcmVt
b3ZlQXR0cmlidXRlOiBmdW5jdGlvbihuYW1lKQorICAgIF9yZW1vdmVBdHRyaWJ1dGUobmFtZSkK
ICAgICB7CiAgICAgICAgIHZhciBhdHRyID0gdGhpcy5fYXR0cmlidXRlc01hcFtuYW1lXTsKICAg
ICAgICAgaWYgKGF0dHIpIHsKICAgICAgICAgICAgIHRoaXMuX2F0dHJpYnV0ZXMucmVtb3ZlKGF0
dHIpOwogICAgICAgICAgICAgZGVsZXRlIHRoaXMuX2F0dHJpYnV0ZXNNYXBbbmFtZV07CiAgICAg
ICAgIH0KLSAgICB9LAorICAgIH0KIAotICAgIG1vdmVUbzogZnVuY3Rpb24odGFyZ2V0Tm9kZSwg
YW5jaG9yTm9kZSwgY2FsbGJhY2spCisgICAgbW92ZVRvKHRhcmdldE5vZGUsIGFuY2hvck5vZGUs
IGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgRE9NQWdlbnQubW92ZVRvKHRoaXMuaWQsIHRhcmdl
dE5vZGUuaWQsIGFuY2hvck5vZGUgPyBhbmNob3JOb2RlLmlkIDogdW5kZWZpbmVkLCB0aGlzLl9t
YWtlVW5kb2FibGVDYWxsYmFjayhjYWxsYmFjaykpOwotICAgIH0sCisgICAgfQogCi0gICAgaXNY
TUxOb2RlOiBmdW5jdGlvbigpCisgICAgaXNYTUxOb2RlKCkKICAgICB7CiAgICAgICAgIHJldHVy
biAhIXRoaXMub3duZXJEb2N1bWVudCAmJiAhIXRoaXMub3duZXJEb2N1bWVudC54bWxWZXJzaW9u
OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGVuYWJsZWRQc2V1ZG9DbGFzc2VzKCkKICAgICB7
CiAgICAgICAgIHJldHVybiB0aGlzLl9lbmFibGVkUHNldWRvQ2xhc3NlczsKLSAgICB9LAorICAg
IH0KIAotICAgIHNldFBzZXVkb0NsYXNzRW5hYmxlZDogZnVuY3Rpb24ocHNldWRvQ2xhc3MsIGVu
YWJsZWQpCisgICAgc2V0UHNldWRvQ2xhc3NFbmFibGVkKHBzZXVkb0NsYXNzLCBlbmFibGVkKQog
ICAgIHsKICAgICAgICAgdmFyIHBzZXVkb0NsYXNzZXMgPSB0aGlzLl9lbmFibGVkUHNldWRvQ2xh
c3NlczsKICAgICAgICAgaWYgKGVuYWJsZWQpIHsKQEAgLTU3NSw5ICs1NjksOSBAQCBXZWJJbnNw
ZWN0b3IuRE9NTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICBDU1NBZ2Vu
dC5mb3JjZVBzZXVkb1N0YXRlKHRoaXMuaWQsIHBzZXVkb0NsYXNzZXMsIGNoYW5nZWQuYmluZCh0
aGlzKSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfbWFrZVVuZG9hYmxlQ2FsbGJhY2s6IGZ1bmN0
aW9uKGNhbGxiYWNrKQorICAgIF9tYWtlVW5kb2FibGVDYWxsYmFjayhjYWxsYmFjaykKICAgICB7
CiAgICAgICAgIHJldHVybiBmdW5jdGlvbihlcnJvcikKICAgICAgICAgewpAQCAtNTkwLDQgKzU4
NCw4IEBAIFdlYkluc3BlY3Rvci5ET01Ob2RlLnByb3RvdHlwZSA9IHsKICAgICB9CiB9OwogCi1X
ZWJJbnNwZWN0b3IuRE9NTm9kZS5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9i
amVjdC5wcm90b3R5cGU7CitXZWJJbnNwZWN0b3IuRE9NTm9kZS5FdmVudCA9IHsKKyAgICBFbmFi
bGVkUHNldWRvQ2xhc3Nlc0NoYW5nZWQ6ICJkb20tbm9kZS1lbmFibGVkLXBzZXVkby1jbGFzc2Vz
LWRpZC1jaGFuZ2UiLAorICAgIEF0dHJpYnV0ZU1vZGlmaWVkOiAiZG9tLW5vZGUtYXR0cmlidXRl
LW1vZGlmaWVkIiwKKyAgICBBdHRyaWJ1dGVSZW1vdmVkOiAiZG9tLW5vZGUtYXR0cmlidXRlLXJl
bW92ZWQiCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvTW9kZWxzL0RPTU5vZGVTdHlsZXMuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Nb2RlbHMvRE9NTm9kZVN0eWxlcy5qcwppbmRleCA3MjUyNjcxLi44NmRlYzU4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRE9N
Tm9kZVN0eWxlcy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9N
b2RlbHMvRE9NTm9kZVN0eWxlcy5qcwpAQCAtMjMsOSArMjMsMTEgQEAKICAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuRE9NTm9kZVN0eWxlcyA9
IGZ1bmN0aW9uKG5vZGUpCitXZWJJbnNwZWN0b3IuRE9NTm9kZVN0eWxlcyA9IGNsYXNzIERPTU5v
ZGVTdHlsZXMgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0gICAgV2ViSW5zcGVjdG9y
Lk9iamVjdC5jYWxsKHRoaXMpOworICAgIGNvbnN0cnVjdG9yKG5vZGUpCisgICAgeworICAgICAg
ICBzdXBlcigpOwogCiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KG5vZGUpOwogICAgICAgICB0aGlz
Ll9ub2RlID0gbm9kZSB8fCBudWxsOwpAQCAtNDUsMzggKzQ3LDI4IEBAIFdlYkluc3BlY3Rvci5E
T01Ob2RlU3R5bGVzID0gZnVuY3Rpb24obm9kZSkKICAgICAgICAgdGhpcy5fcHJvcGVydHlOYW1l
VG9FZmZlY3RpdmVQcm9wZXJ0eU1hcCA9IHt9OwogCiAgICAgICAgIHRoaXMucmVmcmVzaCgpOwot
fTsKLQotV2ViSW5zcGVjdG9yLk9iamVjdC5hZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhXZWJJbnNw
ZWN0b3IuRE9NTm9kZVN0eWxlcyk7Ci0KLVdlYkluc3BlY3Rvci5ET01Ob2RlU3R5bGVzLkV2ZW50
ID0gewotICAgIE5lZWRzUmVmcmVzaDogImRvbS1ub2RlLXN0eWxlcy1uZWVkcy1yZWZyZXNoIiwK
LSAgICBSZWZyZXNoZWQ6ICJkb20tbm9kZS1zdHlsZXMtcmVmcmVzaGVkIgotfTsKLQotV2ViSW5z
cGVjdG9yLkRPTU5vZGVTdHlsZXMucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJ
bnNwZWN0b3IuRE9NTm9kZVN0eWxlcywKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdl
dCBub2RlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9ub2RlOwotICAgIH0sCisgICAg
fQogCiAgICAgZ2V0IG5lZWRzUmVmcmVzaCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5f
cmVmcmVzaFBlbmRpbmcgfHwgdGhpcy5fbmVlZHNSZWZyZXNoOwotICAgIH0sCisgICAgfQogCi0g
ICAgcmVmcmVzaElmTmVlZGVkOiBmdW5jdGlvbigpCisgICAgcmVmcmVzaElmTmVlZGVkKCkKICAg
ICB7CiAgICAgICAgIGlmICghdGhpcy5fbmVlZHNSZWZyZXNoKQogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB0aGlzLnJlZnJlc2goKTsKLSAgICB9LAorICAgIH0KIAotICAgIHJlZnJlc2g6
IGZ1bmN0aW9uKCkKKyAgICByZWZyZXNoKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9yZWZy
ZXNoUGVuZGluZykKICAgICAgICAgICAgIHJldHVybjsKQEAgLTI0Niw5ICsyMzgsOSBAQCBXZWJJ
bnNwZWN0b3IuRE9NTm9kZVN0eWxlcy5wcm90b3R5cGUgPSB7CiAgICAgICAgIENTU0FnZW50Lmdl
dE1hdGNoZWRTdHlsZXNGb3JOb2RlLmludm9rZSh7bm9kZUlkOiB0aGlzLl9ub2RlLmlkLCBpbmNs
dWRlUHNldWRvOiB0cnVlLCBpbmNsdWRlSW5oZXJpdGVkOiB0cnVlfSwgZmV0Y2hlZE1hdGNoZWRT
dHlsZXMuYmluZCh0aGlzKSk7CiAgICAgICAgIENTU0FnZW50LmdldElubGluZVN0eWxlc0Zvck5v
ZGUuaW52b2tlKHtub2RlSWQ6IHRoaXMuX25vZGUuaWR9LCBmZXRjaGVkSW5saW5lU3R5bGVzLmJp
bmQodGhpcykpOwogICAgICAgICBDU1NBZ2VudC5nZXRDb21wdXRlZFN0eWxlRm9yTm9kZS5pbnZv
a2Uoe25vZGVJZDogdGhpcy5fbm9kZS5pZH0sIGZldGNoZWRDb21wdXRlZFN0eWxlLmJpbmQodGhp
cykpOwotICAgIH0sCisgICAgfQogCi0gICAgYWRkRW1wdHlSdWxlOiBmdW5jdGlvbigpCisgICAg
YWRkRW1wdHlSdWxlKCkKICAgICB7CiAgICAgICAgIGZ1bmN0aW9uIGFkZGVkUnVsZShlcnJvciwg
cnVsZVBheWxvYWQpCiAgICAgICAgIHsKQEAgLTI2Myw2MyArMjU1LDYzIEBAIFdlYkluc3BlY3Rv
ci5ET01Ob2RlU3R5bGVzLnByb3RvdHlwZSA9IHsKICAgICAgICAgc2VsZWN0b3IgPSB0aGlzLl9u
b2RlLmFwcHJvcHJpYXRlU2VsZWN0b3JGb3IodHJ1ZSk7CiAKICAgICAgICAgQ1NTQWdlbnQuYWRk
UnVsZS5pbnZva2Uoe2NvbnRleHROb2RlSWQ6IHRoaXMuX25vZGUuaWQsIHNlbGVjdG9yfSwgYWRk
ZWRSdWxlLmJpbmQodGhpcykpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IG1hdGNoZWRSdWxl
cygpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fbWF0Y2hlZFJ1bGVzOwotICAgIH0sCisg
ICAgfQogCiAgICAgZ2V0IGluaGVyaXRlZFJ1bGVzKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0
aGlzLl9pbmhlcml0ZWRSdWxlczsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBpbmxpbmVTdHls
ZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5faW5saW5lU3R5bGU7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICBnZXQgYXR0cmlidXRlc1N0eWxlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0
aGlzLl9hdHRyaWJ1dGVzU3R5bGU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgcHNldWRvRWxl
bWVudHMoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3BzZXVkb0VsZW1lbnRzOwotICAg
IH0sCisgICAgfQogCiAgICAgZ2V0IGNvbXB1dGVkU3R5bGUoKQogICAgIHsKICAgICAgICAgcmV0
dXJuIHRoaXMuX2NvbXB1dGVkU3R5bGU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgb3JkZXJl
ZFN0eWxlcygpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fb3JkZXJlZFN0eWxlczsKLSAg
ICB9LAorICAgIH0KIAotICAgIGVmZmVjdGl2ZVByb3BlcnR5Rm9yTmFtZTogZnVuY3Rpb24obmFt
ZSkKKyAgICBlZmZlY3RpdmVQcm9wZXJ0eUZvck5hbWUobmFtZSkKICAgICB7CiAgICAgICAgIHZh
ciBjYW5vbmljYWxOYW1lID0gV2ViSW5zcGVjdG9yLmNzc1N0eWxlTWFuYWdlci5jYW5vbmljYWxO
YW1lRm9yUHJvcGVydHlOYW1lKG5hbWUpOwogICAgICAgICByZXR1cm4gdGhpcy5fcHJvcGVydHlO
YW1lVG9FZmZlY3RpdmVQcm9wZXJ0eU1hcFtjYW5vbmljYWxOYW1lXSB8fCBudWxsOwotICAgIH0s
CisgICAgfQogCiAgICAgLy8gUHJvdGVjdGVkCiAKLSAgICBtZWRpYVF1ZXJ5UmVzdWx0RGlkQ2hh
bmdlOiBmdW5jdGlvbigpCisgICAgbWVkaWFRdWVyeVJlc3VsdERpZENoYW5nZSgpCiAgICAgewog
ICAgICAgICB0aGlzLl9tYXJrQXNOZWVkc1JlZnJlc2goKTsKLSAgICB9LAorICAgIH0KIAotICAg
IHBzZXVkb0NsYXNzZXNEaWRDaGFuZ2U6IGZ1bmN0aW9uKG5vZGUpCisgICAgcHNldWRvQ2xhc3Nl
c0RpZENoYW5nZShub2RlKQogICAgIHsKICAgICAgICAgdGhpcy5faW5jbHVkZVVzZXJBZ2VudFJ1
bGVzT25OZXh0UmVmcmVzaCA9IHRydWU7CiAgICAgICAgIHRoaXMuX21hcmtBc05lZWRzUmVmcmVz
aCgpOwotICAgIH0sCisgICAgfQogCi0gICAgYXR0cmlidXRlRGlkQ2hhbmdlOiBmdW5jdGlvbihu
b2RlLCBhdHRyaWJ1dGVOYW1lKQorICAgIGF0dHJpYnV0ZURpZENoYW5nZShub2RlLCBhdHRyaWJ1
dGVOYW1lKQogICAgIHsKICAgICAgICAgLy8gSWdub3JlIHRoZSBhdHRyaWJ1dGUgd2Uga25vdyB3
ZSBqdXN0IGNoYW5nZWQgYW5kIGhhbmRsZWQgYWJvdmUuCiAgICAgICAgIGlmICh0aGlzLl9pZ25v
cmVOZXh0U3R5bGVBdHRyaWJ1dGVEaWRDaGFuZ2VFdmVudCAmJiBub2RlID09PSB0aGlzLl9ub2Rl
ICYmIGF0dHJpYnV0ZU5hbWUgPT09ICJzdHlsZSIpIHsKQEAgLTMyOCw5ICszMjAsOSBAQCBXZWJJ
bnNwZWN0b3IuRE9NTm9kZVN0eWxlcy5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAg
ICB0aGlzLl9tYXJrQXNOZWVkc1JlZnJlc2goKTsKLSAgICB9LAorICAgIH0KIAotICAgIGNoYW5n
ZVJ1bGVTZWxlY3RvcjogZnVuY3Rpb24ocnVsZSwgc2VsZWN0b3IpCisgICAgY2hhbmdlUnVsZVNl
bGVjdG9yKHJ1bGUsIHNlbGVjdG9yKQogICAgIHsKICAgICAgICAgc2VsZWN0b3IgPSBzZWxlY3Rv
ciB8fCAiIjsKIApAQCAtMzQ3LDE2ICszMzksMTUgQEAgV2ViSW5zcGVjdG9yLkRPTU5vZGVTdHls
ZXMucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9pZ25vcmVOZXh0Q29udGVudERpZENoYW5n
ZUZvclN0eWxlU2hlZXQgPSBydWxlLm93bmVyU3R5bGVTaGVldDsKIAogICAgICAgICBDU1NBZ2Vu
dC5zZXRSdWxlU2VsZWN0b3IocnVsZS5pZCwgc2VsZWN0b3IsIHJ1bGVTZWxlY3RvckNoYW5nZWQu
YmluZCh0aGlzKSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjaGFuZ2VTdHlsZVRleHQ6IGZ1bmN0
aW9uKHN0eWxlLCB0ZXh0KQorICAgIGNoYW5nZVN0eWxlVGV4dChzdHlsZSwgdGV4dCkKICAgICB7
CiAgICAgICAgIGlmICghc3R5bGUub3duZXJTdHlsZVNoZWV0IHx8ICFzdHlsZS5zdHlsZVNoZWV0
VGV4dFJhbmdlKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRleHQgPSB0ZXh0IHx8
ICIiOwogCi0gICAgICAgIGlmIChDU1NBZ2VudC5zZXRTdHlsZVRleHQpIHsKICAgICAgICAgZnVu
Y3Rpb24gc3R5bGVDaGFuZ2VkKGVycm9yLCBzdHlsZVBheWxvYWQpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIGlmIChlcnJvcikKQEAgLTM2NCwyNCArMzU1LDI1IEBAIFdlYkluc3BlY3Rvci5ET01O
b2RlU3R5bGVzLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMucmVmcmVzaCgpOwogICAg
ICAgICB9CiAKKyAgICAgICAgaWYgKENTU0FnZW50LnNldFN0eWxlVGV4dCkgewogICAgICAgICAg
ICAgQ1NTQWdlbnQuc2V0U3R5bGVUZXh0KHN0eWxlLmlkLCB0ZXh0LCBzdHlsZUNoYW5nZWQuYmlu
ZCh0aGlzKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICAvLyBD
T01QQVRJQklMSVRZIChpT1MgNik6IENTU0FnZW50LnNldFN0eWxlVGV4dCB3YXMgbm90IGF2YWls
YWJsZSBpbiBpT1MgNi4KIAorICAgICAgICBmdW5jdGlvbiBhdHRyaWJ1dGVDaGFuZ2VkKGVycm9y
KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoZXJyb3IpCisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgdGhpcy5yZWZyZXNoKCk7CisgICAgICAgIH0KKwogICAgICAgICAv
LyBTZXR0aW5nIHRoZSB0ZXh0IG9uIENTU1N0eWxlU2hlZXQgZm9yIGlubGluZSBzdHlsZXMgY2F1
c2VzIGEgY3Jhc2guIGh0dHBzOi8vd2Via2l0Lm9yZy9iLzExMDM1OQogICAgICAgICAvLyBTbyB3
ZSBqdXN0IHNldCB0aGUgc3R5bGUgYXR0cmlidXRlIHRvIGdldCB0aGUgc2FtZSBhZmZlY3QuIFRo
aXMgYWxzbyBhdm9pZHMgU291cmNlQ29kZVJldmlzaW9ucy4KICAgICAgICAgaWYgKHN0eWxlLnR5
cGUgPT09IFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uLlR5cGUuSW5saW5lKSB7CiAg
ICAgICAgICAgICB0ZXh0ID0gdGV4dC50cmltKCk7CiAKLSAgICAgICAgICAgIGZ1bmN0aW9uIGF0
dHJpYnV0ZUNoYW5nZWQoZXJyb3IpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYg
KGVycm9yKQotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgdGhp
cy5yZWZyZXNoKCk7Ci0gICAgICAgICAgICB9Ci0KICAgICAgICAgICAgIHRoaXMuX2lnbm9yZU5l
eHRTdHlsZUF0dHJpYnV0ZURpZENoYW5nZUV2ZW50ID0gdHJ1ZTsKIAogICAgICAgICAgICAgaWYg
KHRleHQpCkBAIC00NDksMTEgKzQ0MSwxMSBAQCBXZWJJbnNwZWN0b3IuRE9NTm9kZVN0eWxlcy5w
cm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2lnbm9yZU5leHRDb250ZW50RGlkQ2hhbmdlRm9y
U3R5bGVTaGVldCA9IHN0eWxlLm93bmVyU3R5bGVTaGVldDsKIAogICAgICAgICBzdHlsZS5vd25l
clN0eWxlU2hlZXQucmVxdWVzdENvbnRlbnQoKS50aGVuKGZldGNoZWRTdHlsZVNoZWV0Q29udGVu
dC5iaW5kKHRoaXMpKTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAgIF9j
cmVhdGVTb3VyY2VDb2RlTG9jYXRpb246IGZ1bmN0aW9uKHNvdXJjZVVSTCwgc291cmNlTGluZSwg
c291cmNlQ29sdW1uKQorICAgIF9jcmVhdGVTb3VyY2VDb2RlTG9jYXRpb24oc291cmNlVVJMLCBz
b3VyY2VMaW5lLCBzb3VyY2VDb2x1bW4pCiAgICAgewogICAgICAgICBpZiAoIXNvdXJjZVVSTCkK
ICAgICAgICAgICAgIHJldHVybiBudWxsOwpAQCAtNDc3LDkgKzQ2OSw5IEBAIFdlYkluc3BlY3Rv
ci5ET01Ob2RlU3R5bGVzLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybiBudWxsOwog
CiAgICAgICAgIHJldHVybiBzb3VyY2VDb2RlLmNyZWF0ZVNvdXJjZUNvZGVMb2NhdGlvbihzb3Vy
Y2VMaW5lIHx8IDAsIHNvdXJjZUNvbHVtbiB8fCAwKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9w
YXJzZVNvdXJjZVJhbmdlUGF5bG9hZDogZnVuY3Rpb24ocGF5bG9hZCwgdGV4dCkKKyAgICBfcGFy
c2VTb3VyY2VSYW5nZVBheWxvYWQocGF5bG9hZCwgdGV4dCkKICAgICB7CiAgICAgICAgIGlmICgh
cGF5bG9hZCkKICAgICAgICAgICAgIHJldHVybiBudWxsOwpAQCAtNDk0LDkgKzQ4Niw5IEBAIFdl
Ykluc3BlY3Rvci5ET01Ob2RlU3R5bGVzLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAg
ICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlRleHRSYW5nZShwYXlsb2FkLnN0YXJ0TGluZSwg
cGF5bG9hZC5zdGFydENvbHVtbiwgcGF5bG9hZC5lbmRMaW5lLCBwYXlsb2FkLmVuZENvbHVtbik7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcGFyc2VTdHlsZVByb3BlcnR5UGF5bG9hZDogZnVuY3Rp
b24ocGF5bG9hZCwgaW5kZXgsIHN0eWxlRGVjbGFyYXRpb24sIHN0eWxlVGV4dCkKKyAgICBfcGFy
c2VTdHlsZVByb3BlcnR5UGF5bG9hZChwYXlsb2FkLCBpbmRleCwgc3R5bGVEZWNsYXJhdGlvbiwg
c3R5bGVUZXh0KQogICAgIHsKICAgICAgICAgdmFyIHRleHQgPSBwYXlsb2FkLnRleHQgfHwgIiI7
CiAgICAgICAgIHZhciBuYW1lID0gcGF5bG9hZC5uYW1lOwpAQCAtNTY0LDkgKzU1Niw5IEBAIFdl
Ykluc3BlY3Rvci5ET01Ob2RlU3R5bGVzLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAg
ICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkNTU1Byb3BlcnR5KGluZGV4LCB0ZXh0LCBuYW1l
LCB2YWx1ZSwgcHJpb3JpdHksIGVuYWJsZWQsIG92ZXJyaWRkZW4sIGltcGxpY2l0LCBhbm9ueW1v
dXMsIHZhbGlkLCBzdHlsZVNoZWV0VGV4dFJhbmdlLCBzdHlsZURlY2xhcmF0aW9uVGV4dFJhbmdl
KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9wYXJzZVN0eWxlRGVjbGFyYXRpb25QYXlsb2FkOiBm
dW5jdGlvbihwYXlsb2FkLCBub2RlLCBpbmhlcml0ZWQsIHR5cGUsIHJ1bGUsIHVwZGF0ZUFsbFN0
eWxlcykKKyAgICBfcGFyc2VTdHlsZURlY2xhcmF0aW9uUGF5bG9hZChwYXlsb2FkLCBub2RlLCBp
bmhlcml0ZWQsIHR5cGUsIHJ1bGUsIHVwZGF0ZUFsbFN0eWxlcykKICAgICB7CiAgICAgICAgIGlm
ICghcGF5bG9hZCkKICAgICAgICAgICAgIHJldHVybiBudWxsOwpAQCAtNjc0LDkgKzY2Niw5IEBA
IFdlYkluc3BlY3Rvci5ET01Ob2RlU3R5bGVzLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAg
ICAgICAgIHJldHVybiBzdHlsZURlY2xhcmF0aW9uOwotICAgIH0sCisgICAgfQogCi0gICAgX3Bh
cnNlU2VsZWN0b3JMaXN0UGF5bG9hZDogZnVuY3Rpb24oc2VsZWN0b3JMaXN0KQorICAgIF9wYXJz
ZVNlbGVjdG9yTGlzdFBheWxvYWQoc2VsZWN0b3JMaXN0KQogICAgIHsKICAgICAgICAgLy8gQ09N
UEFUSUJJTElUWSAoaU9TIDYpOiBUaGUgcGF5bG9hZCBkaWQgbm90IGhhdmUgJ3NlbGVjdG9yTGlz
dCcuCiAgICAgICAgIGlmICghc2VsZWN0b3JMaXN0KQpAQCAtNjk3LDkgKzY4OSw5IEBAIFdlYklu
c3BlY3Rvci5ET01Ob2RlU3R5bGVzLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHNlbGVj
dG9ycy5tYXAoZnVuY3Rpb24oc2VsZWN0b3JQYXlsb2FkKSB7CiAgICAgICAgICAgICByZXR1cm4g
bmV3IFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvcihzZWxlY3RvclBheWxvYWQudGV4dCwgc2VsZWN0
b3JQYXlsb2FkLnNwZWNpZmljaXR5LCBzZWxlY3RvclBheWxvYWQuZHluYW1pYyk7CiAgICAgICAg
IH0pOwotICAgIH0sCisgICAgfQogCi0gICAgX3BhcnNlUnVsZVBheWxvYWQ6IGZ1bmN0aW9uKHBh
eWxvYWQsIG1hdGNoZWRTZWxlY3RvckluZGljZXMsIG5vZGUsIGluaGVyaXRlZCwgcnVsZU9jY3Vy
cmVuY2VzKQorICAgIF9wYXJzZVJ1bGVQYXlsb2FkKHBheWxvYWQsIG1hdGNoZWRTZWxlY3Rvcklu
ZGljZXMsIG5vZGUsIGluaGVyaXRlZCwgcnVsZU9jY3VycmVuY2VzKQogICAgIHsKICAgICAgICAg
aWYgKCFwYXlsb2FkKQogICAgICAgICAgICAgcmV0dXJuIG51bGw7CkBAIC04MTIsMTUgKzgwNCwx
NSBAQCBXZWJJbnNwZWN0b3IuRE9NTm9kZVN0eWxlcy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAg
ICB0aGlzLl9ydWxlc01hcFttYXBLZXldID0gcnVsZTsKIAogICAgICAgICByZXR1cm4gcnVsZTsK
LSAgICB9LAorICAgIH0KIAotICAgIF9tYXJrQXNOZWVkc1JlZnJlc2g6IGZ1bmN0aW9uKCkKKyAg
ICBfbWFya0FzTmVlZHNSZWZyZXNoKCkKICAgICB7CiAgICAgICAgIHRoaXMuX25lZWRzUmVmcmVz
aCA9IHRydWU7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3Bl
Y3Rvci5ET01Ob2RlU3R5bGVzLkV2ZW50Lk5lZWRzUmVmcmVzaCk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBfc3R5bGVTaGVldENvbnRlbnREaWRDaGFuZ2U6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9z
dHlsZVNoZWV0Q29udGVudERpZENoYW5nZShldmVudCkKICAgICB7CiAgICAgICAgIHZhciBzdHls
ZVNoZWV0ID0gZXZlbnQudGFyZ2V0OwogICAgICAgICBjb25zb2xlLmFzc2VydChzdHlsZVNoZWV0
KTsKQEAgLTgzNCw5ICs4MjYsOSBAQCBXZWJJbnNwZWN0b3IuRE9NTm9kZVN0eWxlcy5wcm90b3R5
cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICB0aGlzLl9tYXJrQXNOZWVkc1JlZnJlc2goKTsK
LSAgICB9LAorICAgIH0KIAotICAgIF91cGRhdGVTdHlsZUNhc2NhZGU6IGZ1bmN0aW9uKCkKKyAg
ICBfdXBkYXRlU3R5bGVDYXNjYWRlKCkKICAgICB7CiAgICAgICAgIHZhciBjYXNjYWRlT3JkZXJl
ZFN0eWxlRGVjbGFyYXRpb25zID0gdGhpcy5fY29sbGVjdFN0eWxlc0luQ2FzY2FkZU9yZGVyKHRo
aXMuX21hdGNoZWRSdWxlcywgdGhpcy5faW5saW5lU3R5bGUsIHRoaXMuX2F0dHJpYnV0ZXNTdHls
ZSk7CiAKQEAgLTg1OSw5ICs4NTEsOSBAQCBXZWJJbnNwZWN0b3IuRE9NTm9kZVN0eWxlcy5wcm90
b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9tYXJrT3ZlcnJpZGRlblByb3BlcnRpZXMocHNl
dWRvRWxlbWVudEluZm8ub3JkZXJlZFN0eWxlcyk7CiAgICAgICAgICAgICB0aGlzLl9hc3NvY2lh
dGVSZWxhdGVkUHJvcGVydGllcyhwc2V1ZG9FbGVtZW50SW5mby5vcmRlcmVkU3R5bGVzKTsKICAg
ICAgICAgfQotICAgIH0sCisgICAgfQogCi0gICAgX2NvbGxlY3RTdHlsZXNJbkNhc2NhZGVPcmRl
cjogZnVuY3Rpb24obWF0Y2hlZFJ1bGVzLCBpbmxpbmVTdHlsZSwgYXR0cmlidXRlc1N0eWxlKQor
ICAgIF9jb2xsZWN0U3R5bGVzSW5DYXNjYWRlT3JkZXIobWF0Y2hlZFJ1bGVzLCBpbmxpbmVTdHls
ZSwgYXR0cmlidXRlc1N0eWxlKQogICAgIHsKICAgICAgICAgdmFyIHJlc3VsdCA9IFtdOwogCkBA
IC04OTcsOSArODg5LDkgQEAgV2ViSW5zcGVjdG9yLkRPTU5vZGVTdHlsZXMucHJvdG90eXBlID0g
ewogICAgICAgICByZXN1bHQgPSByZXN1bHQuY29uY2F0KHVzZXJBbmRVc2VyQWdlbnRTdHlsZXMp
OwogCiAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfbWFya092
ZXJyaWRkZW5Qcm9wZXJ0aWVzOiBmdW5jdGlvbihzdHlsZXMsIHByb3BlcnR5TmFtZVRvRWZmZWN0
aXZlUHJvcGVydHkpCisgICAgX21hcmtPdmVycmlkZGVuUHJvcGVydGllcyhzdHlsZXMsIHByb3Bl
cnR5TmFtZVRvRWZmZWN0aXZlUHJvcGVydHkpCiAgICAgewogICAgICAgICBwcm9wZXJ0eU5hbWVU
b0VmZmVjdGl2ZVByb3BlcnR5ID0gcHJvcGVydHlOYW1lVG9FZmZlY3RpdmVQcm9wZXJ0eSB8fCB7
fTsKIApAQCAtOTQxLDkgKzkzMyw5IEBAIFdlYkluc3BlY3Rvci5ET01Ob2RlU3R5bGVzLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVUb0VmZmVjdGl2ZVByb3BlcnR5
W2Nhbm9uaWNhbE5hbWVdID0gcHJvcGVydHk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAg
ICB9LAorICAgIH0KIAotICAgIF9hc3NvY2lhdGVSZWxhdGVkUHJvcGVydGllczogZnVuY3Rpb24o
c3R5bGVzLCBwcm9wZXJ0eU5hbWVUb0VmZmVjdGl2ZVByb3BlcnR5KQorICAgIF9hc3NvY2lhdGVS
ZWxhdGVkUHJvcGVydGllcyhzdHlsZXMsIHByb3BlcnR5TmFtZVRvRWZmZWN0aXZlUHJvcGVydHkp
CiAgICAgewogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0eWxlcy5sZW5ndGg7ICsraSkg
ewogICAgICAgICAgICAgdmFyIHByb3BlcnRpZXMgPSBzdHlsZXNbaV0ucHJvcGVydGllczsKQEAg
LTEwMDEsNCArOTkzLDcgQEAgV2ViSW5zcGVjdG9yLkRPTU5vZGVTdHlsZXMucHJvdG90eXBlID0g
ewogICAgIH0KIH07CiAKLVdlYkluc3BlY3Rvci5ET01Ob2RlU3R5bGVzLnByb3RvdHlwZS5fX3By
b3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsKK1dlYkluc3BlY3Rvci5ET01O
b2RlU3R5bGVzLkV2ZW50ID0geworICAgIE5lZWRzUmVmcmVzaDogImRvbS1ub2RlLXN0eWxlcy1u
ZWVkcy1yZWZyZXNoIiwKKyAgICBSZWZyZXNoZWQ6ICJkb20tbm9kZS1zdHlsZXMtcmVmcmVzaGVk
IgorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01v
ZGVscy9ET01TZWFyY2hNYXRjaE9iamVjdC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL01vZGVscy9ET01TZWFyY2hNYXRjaE9iamVjdC5qcwppbmRleCBlMTQ3MDI1Li45
NmUyYmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9N
b2RlbHMvRE9NU2VhcmNoTWF0Y2hPYmplY3QuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvTW9kZWxzL0RPTVNlYXJjaE1hdGNoT2JqZWN0LmpzCkBAIC0yMyw1MiAr
MjMsODcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJ
bnNwZWN0b3IuRE9NU2VhcmNoTWF0Y2hPYmplY3QgPSBmdW5jdGlvbihyZXNvdXJjZSwgZG9tTm9k
ZSwgdGl0bGUsIHNlYXJjaFRlcm0sIHRleHRSYW5nZSkKK1dlYkluc3BlY3Rvci5ET01TZWFyY2hN
YXRjaE9iamVjdCA9IGNsYXNzIERPTVNlYXJjaE1hdGNoT2JqZWN0IGV4dGVuZHMgV2ViSW5zcGVj
dG9yLk9iamVjdAogeworICAgIGNvbnN0cnVjdG9yKHJlc291cmNlLCBkb21Ob2RlLCB0aXRsZSwg
c2VhcmNoVGVybSwgdGV4dFJhbmdlKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKKwogICAgICAg
ICBjb25zb2xlLmFzc2VydChyZXNvdXJjZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZXNvdXJj
ZSk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGRvbU5vZGUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0
b3IuRE9NTm9kZSk7CiAKLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7Ci0KICAg
ICAgICAgdGhpcy5fcmVzb3VyY2UgPSByZXNvdXJjZTsKICAgICAgICAgdGhpcy5fZG9tTm9kZSA9
IGRvbU5vZGU7CiAgICAgICAgIHRoaXMuX3RpdGxlID0gdGl0bGU7CiAgICAgICAgIHRoaXMuX3Nl
YXJjaFRlcm0gPSBzZWFyY2hUZXJtOwogICAgICAgICB0aGlzLl9zb3VyY2VDb2RlVGV4dFJhbmdl
ID0gcmVzb3VyY2UuY3JlYXRlU291cmNlQ29kZVRleHRSYW5nZSh0ZXh0UmFuZ2UpOwotfTsKLQot
V2ViSW5zcGVjdG9yLkRPTVNlYXJjaE1hdGNoT2JqZWN0LkRPTU1hdGNoRWxlbWVudEljb25TdHls
ZUNsYXNzTmFtZSA9ICJkb20tbWF0Y2gtZWxlbWVudC1pY29uIjsKLVdlYkluc3BlY3Rvci5ET01T
ZWFyY2hNYXRjaE9iamVjdC5ET01NYXRjaFRleHROb2RlSWNvblN0eWxlQ2xhc3NOYW1lID0gImRv
bS1tYXRjaC10ZXh0LW5vZGUtaWNvbiI7Ci1XZWJJbnNwZWN0b3IuRE9NU2VhcmNoTWF0Y2hPYmpl
Y3QuRE9NTWF0Y2hDb21tZW50SWNvblN0eWxlQ2xhc3NOYW1lID0gImRvbS1tYXRjaC1jb21tZW50
LWljb24iOwotV2ViSW5zcGVjdG9yLkRPTVNlYXJjaE1hdGNoT2JqZWN0LkRPTU1hdGNoRG9jdW1l
bnRUeXBlSWNvblN0eWxlQ2xhc3NOYW1lID0gImRvbS1tYXRjaC1kb2N1bWVudC10eXBlLWljb24i
OwotV2ViSW5zcGVjdG9yLkRPTVNlYXJjaE1hdGNoT2JqZWN0LkRPTU1hdGNoQ2hhcmFjdGVyRGF0
YUljb25TdHlsZUNsYXNzTmFtZSA9ICJkb20tbWF0Y2gtY2hhcmFjdGVyLWRhdGEtaWNvbiI7Ci1X
ZWJJbnNwZWN0b3IuRE9NU2VhcmNoTWF0Y2hPYmplY3QuRE9NTWF0Y2hOb2RlSWNvblN0eWxlQ2xh
c3NOYW1lID0gImRvbS1tYXRjaC1ub2RlLWljb24iOwotCi1XZWJJbnNwZWN0b3IuRE9NU2VhcmNo
TWF0Y2hPYmplY3QuVHlwZUlkZW50aWZpZXIgPSAiZG9tLXNlYXJjaC1tYXRjaC1vYmplY3QiOwot
V2ViSW5zcGVjdG9yLkRPTVNlYXJjaE1hdGNoT2JqZWN0LlVSTENvb2tpZUtleSA9ICJyZXNvdXJj
ZS11cmwiOwotV2ViSW5zcGVjdG9yLkRPTVNlYXJjaE1hdGNoT2JqZWN0LlRpdGxlS2V5ID0gInRp
dGxlIjsKLVdlYkluc3BlY3Rvci5ET01TZWFyY2hNYXRjaE9iamVjdC5UZXh0UmFuZ2VLZXkgPSAi
dGV4dC1yYW5nZSI7Ci0KLVdlYkluc3BlY3Rvci5ET01TZWFyY2hNYXRjaE9iamVjdC5wcm90b3R5
cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5ET01TZWFyY2hNYXRjaE9iamVj
dCwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlLAorICAgIH0K
KworICAgIC8vIFN0YXRpYworCisgICAgc3RhdGljIHRpdGxlRm9yRE9NTm9kZShkb21Ob2RlKQor
ICAgIHsKKyAgICAgICAgc3dpdGNoIChkb21Ob2RlLm5vZGVUeXBlKCkpIHsKKyAgICAgICAgY2Fz
ZSBOb2RlLkVMRU1FTlRfTk9ERToKKyAgICAgICAgICAgIHZhciB0aXRsZSA9ICI8IiArIGRvbU5v
ZGUubm9kZU5hbWVJbkNvcnJlY3RDYXNlKCk7CisgICAgICAgICAgICBmb3IgKHZhciBhdHRyaWJ1
dGUgb2YgZG9tTm9kZS5hdHRyaWJ1dGVzKCkpIHsKKyAgICAgICAgICAgICAgICB0aXRsZSArPSAi
ICIgKyBhdHRyaWJ1dGUubmFtZTsKKyAgICAgICAgICAgICAgICBpZiAoYXR0cmlidXRlLnZhbHVl
Lmxlbmd0aCkKKyAgICAgICAgICAgICAgICAgICAgdGl0bGUgKz0gIj1cIiIgKyBhdHRyaWJ1dGUu
dmFsdWUgKyAiXCIiOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHRpdGxlICsg
Ij4iOworCisgICAgICAgIGNhc2UgTm9kZS5URVhUX05PREU6CisgICAgICAgICAgICByZXR1cm4g
IlwiIiArIGRvbU5vZGUubm9kZVZhbHVlKCkgKyAiXCIiOworCisgICAgICAgIGNhc2UgTm9kZS5D
T01NRU5UX05PREU6CisgICAgICAgICAgICByZXR1cm4gIjwhLS0iICsgZG9tTm9kZS5ub2RlVmFs
dWUoKSArICItLT4iOworCisgICAgICAgIGNhc2UgTm9kZS5ET0NVTUVOVF9UWVBFX05PREU6Cisg
ICAgICAgICAgICB2YXIgdGl0bGUgPSAiPCFET0NUWVBFICIgKyBkb21Ob2RlLm5vZGVOYW1lKCk7
CisgICAgICAgICAgICBpZiAoZG9tTm9kZS5wdWJsaWNJZCkgeworICAgICAgICAgICAgICAgIHRp
dGxlICs9ICIgUFVCTElDIFwiIiArIGRvbU5vZGUucHVibGljSWQgKyAiXCIiOworICAgICAgICAg
ICAgICAgIGlmIChkb21Ob2RlLnN5c3RlbUlkKQorICAgICAgICAgICAgICAgICAgICB0aXRsZSAr
PSAiIFwiIiArIGRvbU5vZGUuc3lzdGVtSWQgKyAiXCIiOworICAgICAgICAgICAgfSBlbHNlIGlm
IChkb21Ob2RlLnN5c3RlbUlkKQorICAgICAgICAgICAgICAgIHRpdGxlICs9ICIgU1lTVEVNIFwi
IiArIGRvbU5vZGUuc3lzdGVtSWQgKyAiXCIiOworCisgICAgICAgICAgICBpZiAoZG9tTm9kZS5p
bnRlcm5hbFN1YnNldCkKKyAgICAgICAgICAgICAgICB0aXRsZSArPSAiIFsiICsgZG9tTm9kZS5p
bnRlcm5hbFN1YnNldCArICJdIjsKKworICAgICAgICAgICAgcmV0dXJuIHRpdGxlICsgIj4iOwor
CisgICAgICAgIGNhc2UgTm9kZS5DREFUQV9TRUNUSU9OX05PREU6CisgICAgICAgICAgICByZXR1
cm4gIjwhW0NEQVRBWyIgKyBkb21Ob2RlICsgIl1dPiI7CisKKyAgICAgICAgY2FzZSBOb2RlLlBS
T0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERToKKyAgICAgICAgICAgIHZhciBkYXRhID0gZG9tTm9k
ZS5ub2RlVmFsdWUoKTsKKyAgICAgICAgICAgIHZhciBkYXRhU3RyaW5nID0gZGF0YS5sZW5ndGgg
PyAiICIgKyBkYXRhIDogIiI7CisgICAgICAgICAgICB2YXIgdGl0bGUgPSAiPD8iICsgZG9tTm9k
ZS5ub2RlTmFtZUluQ29ycmVjdENhc2UoKSArIGRhdGFTdHJpbmcgKyAiPz4iOworICAgICAgICAg
ICAgcmV0dXJuIHRpdGxlOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBjb25zb2xl
LmVycm9yKCJVbmtub3duIERPTSBub2RlIHR5cGU6ICIsIGRvbU5vZGUubm9kZVR5cGUoKSk7Cisg
ICAgICAgICAgICByZXR1cm4gZG9tTm9kZS5ub2RlTmFtZUluQ29ycmVjdENhc2UoKTsKKyAgICAg
ICAgfQorICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IHJlc291cmNlKCkKICAgICB7
CiAgICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdl
dCBkb21Ob2RlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9kb21Ob2RlOwotICAgIH0s
CisgICAgfQogCiAgICAgZ2V0IHRpdGxlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl90
aXRsZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBjbGFzc05hbWUoKQogICAgIHsKQEAgLTc2
LDE3ICsxMTEsMTcgQEAgV2ViSW5zcGVjdG9yLkRPTVNlYXJjaE1hdGNoT2JqZWN0LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgICAgIHRoaXMuX2NsYXNzTmFtZSA9IHRoaXMuX2dlbmVyYXRlQ2xhc3NO
YW1lKCk7CiAKICAgICAgICAgcmV0dXJuIHRoaXMuX2NsYXNzTmFtZTsKLSAgICB9LAorICAgIH0K
IAogICAgIGdldCBzZWFyY2hUZXJtKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zZWFy
Y2hUZXJtOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHNvdXJjZUNvZGVUZXh0UmFuZ2UoKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3NvdXJjZUNvZGVUZXh0UmFuZ2U7Ci0gICAgfSwK
KyAgICB9CiAKICAgICBzYXZlSWRlbnRpdHlUb0Nvb2tpZShjb29raWUpCiAgICAgewpAQCAtOTQs
NyArMTI5LDcgQEAgV2ViSW5zcGVjdG9yLkRPTVNlYXJjaE1hdGNoT2JqZWN0LnByb3RvdHlwZSA9
IHsKICAgICAgICAgY29va2llW1dlYkluc3BlY3Rvci5ET01TZWFyY2hNYXRjaE9iamVjdC5UaXRs
ZUtleV0gPSB0aGlzLl90aXRsZTsKICAgICAgICAgdmFyIHRleHRSYW5nZSA9IHRoaXMuX3NvdXJj
ZUNvZGVUZXh0UmFuZ2UudGV4dFJhbmdlOwogICAgICAgICBjb29raWVbV2ViSW5zcGVjdG9yLkRP
TVNlYXJjaE1hdGNoT2JqZWN0LlRleHRSYW5nZUtleV0gPSBbdGV4dFJhbmdlLnN0YXJ0TGluZSwg
dGV4dFJhbmdlLnN0YXJ0Q29sdW1uLCB0ZXh0UmFuZ2UuZW5kTGluZSwgdGV4dFJhbmdlLmVuZENv
bHVtbl0uam9pbigpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCkBAIC0xMjcs
NDkgKzE2MiwxNCBAQCBXZWJJbnNwZWN0b3IuRE9NU2VhcmNoTWF0Y2hPYmplY3QucHJvdG90eXBl
ID0gewogICAgIH0KIH07CiAKLVdlYkluc3BlY3Rvci5ET01TZWFyY2hNYXRjaE9iamVjdC50aXRs
ZUZvckRPTU5vZGUgPSBmdW5jdGlvbihkb21Ob2RlKQotewotICAgIHN3aXRjaCAoZG9tTm9kZS5u
b2RlVHlwZSgpKSB7Ci0gICAgY2FzZSBOb2RlLkVMRU1FTlRfTk9ERToKLSAgICAgICAgdmFyIHRp
dGxlID0gIjwiICsgZG9tTm9kZS5ub2RlTmFtZUluQ29ycmVjdENhc2UoKTsKLSAgICAgICAgZm9y
ICh2YXIgYXR0cmlidXRlIG9mIGRvbU5vZGUuYXR0cmlidXRlcygpKSB7Ci0gICAgICAgICAgICB0
aXRsZSArPSAiICIgKyBhdHRyaWJ1dGUubmFtZTsKLSAgICAgICAgICAgIGlmIChhdHRyaWJ1dGUu
dmFsdWUubGVuZ3RoKQotICAgICAgICAgICAgICAgIHRpdGxlICs9ICI9XCIiICsgYXR0cmlidXRl
LnZhbHVlICsgIlwiIjsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGl0bGUgKyAiPiI7Ci0K
LSAgICBjYXNlIE5vZGUuVEVYVF9OT0RFOgotICAgICAgICByZXR1cm4gIlwiIiArIGRvbU5vZGUu
bm9kZVZhbHVlKCkgKyAiXCIiOwotCi0gICAgY2FzZSBOb2RlLkNPTU1FTlRfTk9ERToKLSAgICAg
ICAgcmV0dXJuICI8IS0tIiArIGRvbU5vZGUubm9kZVZhbHVlKCkgKyAiLS0+IjsKLQotICAgIGNh
c2UgTm9kZS5ET0NVTUVOVF9UWVBFX05PREU6Ci0gICAgICAgIHZhciB0aXRsZSA9ICI8IURPQ1RZ
UEUgIiArIGRvbU5vZGUubm9kZU5hbWUoKTsKLSAgICAgICAgaWYgKGRvbU5vZGUucHVibGljSWQp
IHsKLSAgICAgICAgICAgIHRpdGxlICs9ICIgUFVCTElDIFwiIiArIGRvbU5vZGUucHVibGljSWQg
KyAiXCIiOwotICAgICAgICAgICAgaWYgKGRvbU5vZGUuc3lzdGVtSWQpCi0gICAgICAgICAgICAg
ICAgdGl0bGUgKz0gIiBcIiIgKyBkb21Ob2RlLnN5c3RlbUlkICsgIlwiIjsKLSAgICAgICAgfSBl
bHNlIGlmIChkb21Ob2RlLnN5c3RlbUlkKQotICAgICAgICAgICAgdGl0bGUgKz0gIiBTWVNURU0g
XCIiICsgZG9tTm9kZS5zeXN0ZW1JZCArICJcIiI7Ci0KLSAgICAgICAgaWYgKGRvbU5vZGUuaW50
ZXJuYWxTdWJzZXQpCi0gICAgICAgICAgICB0aXRsZSArPSAiIFsiICsgZG9tTm9kZS5pbnRlcm5h
bFN1YnNldCArICJdIjsKLQotICAgICAgICByZXR1cm4gdGl0bGUgKyAiPiI7Ci0KLSAgICBjYXNl
IE5vZGUuQ0RBVEFfU0VDVElPTl9OT0RFOgotICAgICAgICByZXR1cm4gIjwhW0NEQVRBWyIgKyBk
b21Ob2RlICsgIl1dPiI7Ci0KLSAgICBjYXNlIE5vZGUuUFJPQ0VTU0lOR19JTlNUUlVDVElPTl9O
T0RFOgotICAgICAgICB2YXIgZGF0YSA9IGRvbU5vZGUubm9kZVZhbHVlKCk7Ci0gICAgICAgIHZh
ciBkYXRhU3RyaW5nID0gZGF0YS5sZW5ndGggPyAiICIgKyBkYXRhIDogIiI7Ci0gICAgICAgIHZh
ciB0aXRsZSA9ICI8PyIgKyBkb21Ob2RlLm5vZGVOYW1lSW5Db3JyZWN0Q2FzZSgpICsgZGF0YVN0
cmluZyArICI/PiI7Ci0gICAgICAgIHJldHVybiB0aXRsZTsKLQotICAgIGRlZmF1bHQ6Ci0gICAg
ICAgIGNvbnNvbGUuZXJyb3IoIlVua25vd24gRE9NIG5vZGUgdHlwZTogIiwgZG9tTm9kZS5ub2Rl
VHlwZSgpKTsKLSAgICAgICAgcmV0dXJuIGRvbU5vZGUubm9kZU5hbWVJbkNvcnJlY3RDYXNlKCk7
Ci0gICAgfQotfTsKK1dlYkluc3BlY3Rvci5ET01TZWFyY2hNYXRjaE9iamVjdC5ET01NYXRjaEVs
ZW1lbnRJY29uU3R5bGVDbGFzc05hbWUgPSAiZG9tLW1hdGNoLWVsZW1lbnQtaWNvbiI7CitXZWJJ
bnNwZWN0b3IuRE9NU2VhcmNoTWF0Y2hPYmplY3QuRE9NTWF0Y2hUZXh0Tm9kZUljb25TdHlsZUNs
YXNzTmFtZSA9ICJkb20tbWF0Y2gtdGV4dC1ub2RlLWljb24iOworV2ViSW5zcGVjdG9yLkRPTVNl
YXJjaE1hdGNoT2JqZWN0LkRPTU1hdGNoQ29tbWVudEljb25TdHlsZUNsYXNzTmFtZSA9ICJkb20t
bWF0Y2gtY29tbWVudC1pY29uIjsKK1dlYkluc3BlY3Rvci5ET01TZWFyY2hNYXRjaE9iamVjdC5E
T01NYXRjaERvY3VtZW50VHlwZUljb25TdHlsZUNsYXNzTmFtZSA9ICJkb20tbWF0Y2gtZG9jdW1l
bnQtdHlwZS1pY29uIjsKK1dlYkluc3BlY3Rvci5ET01TZWFyY2hNYXRjaE9iamVjdC5ET01NYXRj
aENoYXJhY3RlckRhdGFJY29uU3R5bGVDbGFzc05hbWUgPSAiZG9tLW1hdGNoLWNoYXJhY3Rlci1k
YXRhLWljb24iOworV2ViSW5zcGVjdG9yLkRPTVNlYXJjaE1hdGNoT2JqZWN0LkRPTU1hdGNoTm9k
ZUljb25TdHlsZUNsYXNzTmFtZSA9ICJkb20tbWF0Y2gtbm9kZS1pY29uIjsKKworV2ViSW5zcGVj
dG9yLkRPTVNlYXJjaE1hdGNoT2JqZWN0LlR5cGVJZGVudGlmaWVyID0gImRvbS1zZWFyY2gtbWF0
Y2gtb2JqZWN0IjsKK1dlYkluc3BlY3Rvci5ET01TZWFyY2hNYXRjaE9iamVjdC5VUkxDb29raWVL
ZXkgPSAicmVzb3VyY2UtdXJsIjsKK1dlYkluc3BlY3Rvci5ET01TZWFyY2hNYXRjaE9iamVjdC5U
aXRsZUtleSA9ICJ0aXRsZSI7CitXZWJJbnNwZWN0b3IuRE9NU2VhcmNoTWF0Y2hPYmplY3QuVGV4
dFJhbmdlS2V5ID0gInRleHQtcmFuZ2UiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0RPTVN0b3JhZ2VPYmplY3QuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRE9NU3RvcmFnZU9iamVjdC5qcwppbmRl
eCA4ZjE3NTk3Li5kYTNhN2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Nb2RlbHMvRE9NU3RvcmFnZU9iamVjdC5qcworKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRE9NU3RvcmFnZU9iamVjdC5qcwpAQCAtMjMs
NTYgKzIzLDQ3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAot
V2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VPYmplY3QgPSBmdW5jdGlvbihpZCwgaG9zdCwgaXNMb2Nh
bFN0b3JhZ2UpCitXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZU9iamVjdCA9IGNsYXNzIERPTVN0b3Jh
Z2VPYmplY3QgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7CisgICAgY29uc3RydWN0b3Io
aWQsIGhvc3QsIGlzTG9jYWxTdG9yYWdlKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKKwogICAg
ICAgICB0aGlzLl9pZCA9IGlkOwogICAgICAgICB0aGlzLl9ob3N0ID0gaG9zdDsKICAgICAgICAg
dGhpcy5faXNMb2NhbFN0b3JhZ2UgPSBpc0xvY2FsU3RvcmFnZTsKICAgICAgICAgdGhpcy5fZW50
cmllcyA9IG5ldyBNYXA7Ci19OworICAgIH0KIAotV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VPYmpl
Y3QuVHlwZUlkZW50aWZpZXIgPSAiZG9tLXN0b3JhZ2UiOwotV2ViSW5zcGVjdG9yLkRPTVN0b3Jh
Z2VPYmplY3QuSG9zdENvb2tpZUtleSA9ICJkb20tc3RvcmFnZS1vYmplY3QtaG9zdCI7Ci1XZWJJ
bnNwZWN0b3IuRE9NU3RvcmFnZU9iamVjdC5Mb2NhbFN0b3JhZ2VDb29raWVLZXkgPSAiZG9tLXN0
b3JhZ2Utb2JqZWN0LWxvY2FsLXN0b3JhZ2UiOwotCi1XZWJJbnNwZWN0b3IuRE9NU3RvcmFnZU9i
amVjdC5FdmVudCA9IHsKLSAgICBJdGVtc0NsZWFyZWQ6ICJkb20tc3RvcmFnZS1vYmplY3QtaXRl
bXMtY2xlYXJlZCIsCi0gICAgSXRlbUFkZGVkOiAiZG9tLXN0b3JhZ2Utb2JqZWN0LWl0ZW0tYWRk
ZWQiLAotICAgIEl0ZW1SZW1vdmVkOiAiZG9tLXN0b3JhZ2Utb2JqZWN0LWl0ZW0tcmVtb3ZlZCIs
Ci0gICAgSXRlbVVwZGF0ZWQ6ICJkb20tc3RvcmFnZS1vYmplY3QtdXBkYXRlZCIsCi19OwotCi1X
ZWJJbnNwZWN0b3IuRE9NU3RvcmFnZU9iamVjdC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0
b3I6IFdlYkluc3BlY3Rvci5ET01TdG9yYWdlT2JqZWN0LAotICAgIF9fcHJvdG9fXzogV2ViSW5z
cGVjdG9yLk9iamVjdC5wcm90b3R5cGUsCisgICAgLy8gUHVibGljCiAKICAgICBnZXQgaWQoKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2lkOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0
IGhvc3QoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2hvc3Q7Ci0gICAgfSwKKyAgICB9
CiAKICAgICBnZXQgZW50cmllcygpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZW50cmll
czsKLSAgICB9LAorICAgIH0KIAotICAgIHNhdmVJZGVudGl0eVRvQ29va2llOiBmdW5jdGlvbihj
b29raWUpCisgICAgc2F2ZUlkZW50aXR5VG9Db29raWUoY29va2llKQogICAgIHsKICAgICAgICAg
Y29va2llW1dlYkluc3BlY3Rvci5ET01TdG9yYWdlT2JqZWN0Lkhvc3RDb29raWVLZXldID0gdGhp
cy5ob3N0OwogICAgICAgICBjb29raWVbV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VPYmplY3QuTG9j
YWxTdG9yYWdlQ29va2llS2V5XSA9IHRoaXMuaXNMb2NhbFN0b3JhZ2UoKTsKLSAgICB9LAorICAg
IH0KIAotICAgIGlzTG9jYWxTdG9yYWdlOiBmdW5jdGlvbigpCisgICAgaXNMb2NhbFN0b3JhZ2Uo
KQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2lzTG9jYWxTdG9yYWdlOwotICAgIH0sCisg
ICAgfQogCi0gICAgZ2V0RW50cmllczogZnVuY3Rpb24oY2FsbGJhY2spCisgICAgZ2V0RW50cmll
cyhjYWxsYmFjaykKICAgICB7CiAgICAgICAgIGZ1bmN0aW9uIGlubmVyQ2FsbGJhY2soZXJyb3Is
IGVudHJpZXMpCiAgICAgICAgIHsKQEAgLTkzLDQwICs4NCw1MSBAQCBXZWJJbnNwZWN0b3IuRE9N
U3RvcmFnZU9iamVjdC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBET01TdG9yYWdlQWdlbnQu
Z2V0RE9NU3RvcmFnZUVudHJpZXModGhpcy5faWQsIGlubmVyQ2FsbGJhY2suYmluZCh0aGlzKSk7
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIERPTVN0b3JhZ2VBZ2VudC5nZXRET01TdG9yYWdl
SXRlbXModGhpcy5faWQsIGlubmVyQ2FsbGJhY2suYmluZCh0aGlzKSk7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICByZW1vdmVJdGVtOiBmdW5jdGlvbihrZXkpCisgICAgcmVtb3ZlSXRlbShrZXkpCiAg
ICAgewogICAgICAgICBET01TdG9yYWdlQWdlbnQucmVtb3ZlRE9NU3RvcmFnZUl0ZW0odGhpcy5f
aWQsIGtleSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzZXRJdGVtOiBmdW5jdGlvbihrZXksIHZh
bHVlKQorICAgIHNldEl0ZW0oa2V5LCB2YWx1ZSkKICAgICB7CiAgICAgICAgIERPTVN0b3JhZ2VB
Z2VudC5zZXRET01TdG9yYWdlSXRlbSh0aGlzLl9pZCwga2V5LCB2YWx1ZSk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBpdGVtc0NsZWFyZWQ6IGZ1bmN0aW9uKCkKKyAgICBpdGVtc0NsZWFyZWQoKQog
ICAgIHsKICAgICAgICAgdGhpcy5fZW50cmllcy5jbGVhcigpOwogICAgICAgICB0aGlzLmRpc3Bh
dGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZU9iamVjdC5FdmVudC5J
dGVtc0NsZWFyZWQpOwotICAgIH0sCisgICAgfQogCi0gICAgaXRlbVJlbW92ZWQ6IGZ1bmN0aW9u
KGtleSkKKyAgICBpdGVtUmVtb3ZlZChrZXkpCiAgICAgewogICAgICAgICB0aGlzLl9lbnRyaWVz
LmRlbGV0ZShrZXkpOwogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJ
bnNwZWN0b3IuRE9NU3RvcmFnZU9iamVjdC5FdmVudC5JdGVtUmVtb3ZlZCwge2tleX0pOwotICAg
IH0sCisgICAgfQogCi0gICAgaXRlbUFkZGVkOiBmdW5jdGlvbihrZXksIHZhbHVlKQorICAgIGl0
ZW1BZGRlZChrZXksIHZhbHVlKQogICAgIHsKICAgICAgICAgdGhpcy5fZW50cmllcy5zZXQoa2V5
LCB2YWx1ZSk7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3Bl
Y3Rvci5ET01TdG9yYWdlT2JqZWN0LkV2ZW50Lkl0ZW1BZGRlZCwge2tleSwgdmFsdWV9KTsKLSAg
ICB9LAorICAgIH0KIAotICAgIGl0ZW1VcGRhdGVkOiBmdW5jdGlvbihrZXksIG9sZFZhbHVlLCB2
YWx1ZSkKKyAgICBpdGVtVXBkYXRlZChrZXksIG9sZFZhbHVlLCB2YWx1ZSkKICAgICB7CiAgICAg
ICAgIHRoaXMuX2VudHJpZXMuc2V0KGtleSwgdmFsdWUpOwogICAgICAgICB2YXIgZGF0YSA9IHtr
ZXksIG9sZFZhbHVlLCB2YWx1ZX07CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVu
ZXJzKFdlYkluc3BlY3Rvci5ET01TdG9yYWdlT2JqZWN0LkV2ZW50Lkl0ZW1VcGRhdGVkLCBkYXRh
KTsKICAgICB9CiB9OworCitXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZU9iamVjdC5UeXBlSWRlbnRp
ZmllciA9ICJkb20tc3RvcmFnZSI7CitXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZU9iamVjdC5Ib3N0
Q29va2llS2V5ID0gImRvbS1zdG9yYWdlLW9iamVjdC1ob3N0IjsKK1dlYkluc3BlY3Rvci5ET01T
dG9yYWdlT2JqZWN0LkxvY2FsU3RvcmFnZUNvb2tpZUtleSA9ICJkb20tc3RvcmFnZS1vYmplY3Qt
bG9jYWwtc3RvcmFnZSI7CisKK1dlYkluc3BlY3Rvci5ET01TdG9yYWdlT2JqZWN0LkV2ZW50ID0g
eworICAgIEl0ZW1zQ2xlYXJlZDogImRvbS1zdG9yYWdlLW9iamVjdC1pdGVtcy1jbGVhcmVkIiwK
KyAgICBJdGVtQWRkZWQ6ICJkb20tc3RvcmFnZS1vYmplY3QtaXRlbS1hZGRlZCIsCisgICAgSXRl
bVJlbW92ZWQ6ICJkb20tc3RvcmFnZS1vYmplY3QtaXRlbS1yZW1vdmVkIiwKKyAgICBJdGVtVXBk
YXRlZDogImRvbS1zdG9yYWdlLW9iamVjdC11cGRhdGVkIiwKK307CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRE9NVHJlZS5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9ET01UcmVlLmpzCmluZGV4IDAw
YzVmNTAuLmU4YWQ0MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL01vZGVscy9ET01UcmVlLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL01vZGVscy9ET01UcmVlLmpzCkBAIC0yMyw5ICsyMywxMSBAQAogICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5ET01UcmVlID0g
ZnVuY3Rpb24oZnJhbWUpCitXZWJJbnNwZWN0b3IuRE9NVHJlZSA9IGNsYXNzIERPTVRyZWUgZXh0
ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxs
KHRoaXMpOworICAgIGNvbnN0cnVjdG9yKGZyYW1lKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsK
IAogICAgICAgICB0aGlzLl9mcmFtZSA9IGZyYW1lOwogCkBAIC00NiwzNyArNDgsMjYgQEAgV2Vi
SW5zcGVjdG9yLkRPTVRyZWUgPSBmdW5jdGlvbihmcmFtZSkKICAgICAgICAgV2ViSW5zcGVjdG9y
LmRvbVRyZWVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5h
Z2VyLkV2ZW50LkNvbnRlbnRGbG93TGlzdFdhc1VwZGF0ZWQsIHRoaXMuX2NvbnRlbnRGbG93TGlz
dFdhc1VwZGF0ZWQsIHRoaXMpOwogICAgICAgICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIu
YWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NVHJlZU1hbmFnZXIuRXZlbnQuQ29udGVu
dEZsb3dXYXNBZGRlZCwgdGhpcy5fY29udGVudEZsb3dXYXNBZGRlZCwgdGhpcyk7CiAgICAgICAg
IFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rv
ci5ET01UcmVlTWFuYWdlci5FdmVudC5Db250ZW50Rmxvd1dhc1JlbW92ZWQsIHRoaXMuX2NvbnRl
bnRGbG93V2FzUmVtb3ZlZCwgdGhpcyk7Ci19OwotCi1XZWJJbnNwZWN0b3IuT2JqZWN0LmFkZENv
bnN0cnVjdG9yRnVuY3Rpb25zKFdlYkluc3BlY3Rvci5ET01UcmVlKTsKLQotV2ViSW5zcGVjdG9y
LkRPTVRyZWUuRXZlbnQgPSB7Ci0gICAgUm9vdERPTU5vZGVJbnZhbGlkYXRlZDogImRvbS10cmVl
LXJvb3QtZG9tLW5vZGUtaW52YWxpZGF0ZWQiLAotICAgIENvbnRlbnRGbG93V2FzQWRkZWQ6ICJk
b20tdHJlZS1jb250ZW50LWZsb3ctd2FzLWFkZGVkIiwKLSAgICBDb250ZW50Rmxvd1dhc1JlbW92
ZWQ6ICJkb20tdHJlZS1jb250ZW50LWZsb3ctd2FzLXJlbW92ZWQiCi19OwotCi1XZWJJbnNwZWN0
b3IuRE9NVHJlZS5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5E
T01UcmVlLAorICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IGZyYW1lKCkKICAgICB7
CiAgICAgICAgIHJldHVybiB0aGlzLl9mcmFtZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBm
bG93TWFwKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9mbG93TWFwOwotICAgIH0sCisg
ICAgfQogCiAgICAgZ2V0IGZsb3dzQ291bnQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIE9iamVj
dC5rZXlzKHRoaXMuX2Zsb3dNYXApLmxlbmd0aDsKLSAgICB9LAorICAgIH0KIAotICAgIGludmFs
aWRhdGU6IGZ1bmN0aW9uKCkKKyAgICBpbnZhbGlkYXRlKCkKICAgICB7CiAgICAgICAgIC8vIFNl
dCB0byBudWxsIHNvIGl0IGlzIGZldGNoZWQgYWdhaW4gbmV4dCB0aW1lIHJlcXVlc3RSb290RE9N
Tm9kZSBpcyBjYWxsZWQuCiAgICAgICAgIHRoaXMuX3Jvb3RET01Ob2RlID0gbnVsbDsKQEAgLTk3
LDkgKzg4LDkgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWUucHJvdG90eXBlID0gewogCiAgICAgICAg
IC8vIERlbGF5IHRoZSBpbnZhbGlkYXRpb24gb24gYSB0aW1lb3V0IHRvIGNvYWxlc2NlIG11bHRp
cGxlIGNhbGxzIHRvIGludmFsaWRhdGUuCiAgICAgICAgIHRoaXMuX2ludmFsaWRhdGVUaW1lb3V0
SWRlbnRpZmllciA9IHNldFRpbWVvdXQocGVyZm9ybUludmFsaWRhdGUuYmluZCh0aGlzKSwgMCk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZXF1ZXN0Um9vdERPTU5vZGU6IGZ1bmN0aW9uKGNhbGxi
YWNrKQorICAgIHJlcXVlc3RSb290RE9NTm9kZShjYWxsYmFjaykKICAgICB7CiAgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KHR5cGVvZiBjYWxsYmFjayA9PT0gImZ1bmN0aW9uIik7CiAgICAgICAgIGlm
ICh0eXBlb2YgY2FsbGJhY2sgIT09ICJmdW5jdGlvbiIpCkBAIC0xMjUsMTEgKzExNiwxOSBAQCBX
ZWJJbnNwZWN0b3IuRE9NVHJlZS5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdGhpcy5fcGVuZGlu
Z1Jvb3RET01Ob2RlUmVxdWVzdHMgPSBbY2FsbGJhY2tdOwogICAgICAgICB0aGlzLl9yZXF1ZXN0
Um9vdERPTU5vZGUoKTsKLSAgICB9LAorICAgIH0KKworICAgIHJlcXVlc3RDb250ZW50Rmxvd0xp
c3QoKQorICAgIHsKKyAgICAgICAgdGhpcy5yZXF1ZXN0Um9vdERPTU5vZGUoZnVuY3Rpb24ocm9v
dE5vZGUpIHsKKyAgICAgICAgICAgIC8vIExldCB0aGUgYmFja2VuZCBrbm93IHdlIGFyZSBpbnRl
cmVzdGVkIGFib3V0IHRoZSBuYW1lZCBmbG93IGV2ZW50cyBmb3IgdGhpcyBkb2N1bWVudC4KKyAg
ICAgICAgICAgIFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5nZXROYW1lZEZsb3dDb2xsZWN0
aW9uKHJvb3ROb2RlLmlkKTsKKyAgICAgICAgfSk7CisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQog
Ci0gICAgX3JlcXVlc3RSb290RE9NTm9kZTogZnVuY3Rpb24oKQorICAgIF9yZXF1ZXN0Um9vdERP
TU5vZGUoKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fZnJhbWUuaXNNYWlu
RnJhbWUoKSB8fCAhV2ViSW5zcGVjdG9yLkV4ZWN1dGlvbkNvbnRleHQuc3VwcG9ydGVkKCkgfHwg
dGhpcy5fZnJhbWUucGFnZUV4ZWN1dGlvbkNvbnRleHQpOwogICAgICAgICBjb25zb2xlLmFzc2Vy
dCh0aGlzLl9wZW5kaW5nUm9vdERPTU5vZGVSZXF1ZXN0cy5sZW5ndGgpOwpAQCAtMjEzLDkgKzIx
Miw5IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHZh
ciBjb250ZXh0SWQgPSB0aGlzLl9mcmFtZS5wYWdlRXhlY3V0aW9uQ29udGV4dCA/IHRoaXMuX2Zy
YW1lLnBhZ2VFeGVjdXRpb25Db250ZXh0LmlkIDogdW5kZWZpbmVkOwogICAgICAgICAgICAgUnVu
dGltZUFnZW50LmV2YWx1YXRlLmludm9rZSh7ZXhwcmVzc2lvbjogImRvY3VtZW50Iiwgb2JqZWN0
R3JvdXA6ICIiLCBpbmNsdWRlQ29tbWFuZExpbmVBUEk6IGZhbHNlLCBkb05vdFBhdXNlT25FeGNl
cHRpb25zQW5kTXV0ZUNvbnNvbGU6IHRydWUsIGNvbnRleHRJZCwgZnJhbWVJZDogdGhpcy5fZnJh
bWUuaWQsIHJldHVybkJ5VmFsdWU6IGZhbHNlLCBnZW5lcmF0ZVByZXZpZXc6IGZhbHNlfSwgcm9v
dE9iamVjdEF2YWlsYWJsZS5iaW5kKHRoaXMpKTsKICAgICAgICAgfQotICAgIH0sCisgICAgfQog
Ci0gICAgX25vZGVSZW1vdmVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfbm9kZVJlbW92ZWQoZXZl
bnQpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fZnJhbWUuaXNNYWluRnJh
bWUoKSk7CiAKQEAgLTIyMywyMSArMjIyLDIxIEBAIFdlYkluc3BlY3Rvci5ET01UcmVlLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB0aGlzLmludmFsaWRhdGUo
KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9kb2N1bWVudFVwZGF0ZWQ6IGZ1bmN0aW9uKGV2ZW50
KQorICAgIF9kb2N1bWVudFVwZGF0ZWQoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLmludmFs
aWRhdGUoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9mcmFtZU1haW5SZXNvdXJjZURpZENoYW5n
ZTogZnVuY3Rpb24oZXZlbnQpCisgICAgX2ZyYW1lTWFpblJlc291cmNlRGlkQ2hhbmdlKGV2ZW50
KQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuX2ZyYW1lLmlzTWFpbkZyYW1l
KCkpOwogCiAgICAgICAgIHRoaXMuaW52YWxpZGF0ZSgpOwotICAgIH0sCisgICAgfQogCi0gICAg
X2ZyYW1lUGFnZUV4ZWN1dGlvbkNvbnRleHRDaGFuZ2VkOiBmdW5jdGlvbihldmVudCkKKyAgICBf
ZnJhbWVQYWdlRXhlY3V0aW9uQ29udGV4dENoYW5nZWQoZXZlbnQpCiAgICAgewogICAgICAgICBp
ZiAodGhpcy5fcm9vdERPTU5vZGVSZXF1ZXN0V2FpdGluZ0ZvckV4ZWN1dGlvbkNvbnRleHQpIHsK
ICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2ZyYW1lLnBhZ2VFeGVjdXRpb25Db250
ZXh0KTsKQEAgLTI0NywyMiArMjQ2LDE0IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlLnByb3RvdHlw
ZSA9IHsKIAogICAgICAgICAgICAgdGhpcy5fcmVxdWVzdFJvb3RET01Ob2RlKCk7CiAgICAgICAg
IH0KLSAgICB9LAorICAgIH0KIAotICAgIHJlcXVlc3RDb250ZW50Rmxvd0xpc3Q6IGZ1bmN0aW9u
KCkKLSAgICB7Ci0gICAgICAgIHRoaXMucmVxdWVzdFJvb3RET01Ob2RlKGZ1bmN0aW9uKHJvb3RO
b2RlKSB7Ci0gICAgICAgICAgICAvLyBMZXQgdGhlIGJhY2tlbmQga25vdyB3ZSBhcmUgaW50ZXJl
c3RlZCBhYm91dCB0aGUgbmFtZWQgZmxvdyBldmVudHMgZm9yIHRoaXMgZG9jdW1lbnQuCi0gICAg
ICAgICAgICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIuZ2V0TmFtZWRGbG93Q29sbGVjdGlv
bihyb290Tm9kZS5pZCk7Ci0gICAgICAgIH0pOwotICAgIH0sCi0KLSAgICBfaXNDb250ZW50Rmxv
d0luQ3VycmVudERvY3VtZW50OiBmdW5jdGlvbihmbG93KQorICAgIF9pc0NvbnRlbnRGbG93SW5D
dXJyZW50RG9jdW1lbnQoZmxvdykKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9yb290RE9N
Tm9kZSAmJiB0aGlzLl9yb290RE9NTm9kZS5pZCA9PT0gZmxvdy5kb2N1bWVudE5vZGVJZGVudGlm
aWVyOwotICAgIH0sCisgICAgfQogCi0gICAgX2NvbnRlbnRGbG93TGlzdFdhc1VwZGF0ZWQ6IGZ1
bmN0aW9uKGV2ZW50KQorICAgIF9jb250ZW50Rmxvd0xpc3RXYXNVcGRhdGVkKGV2ZW50KQogICAg
IHsKICAgICAgICAgaWYgKCF0aGlzLl9yb290RE9NTm9kZSB8fCB0aGlzLl9yb290RE9NTm9kZS5p
ZCAhPT0gZXZlbnQuZGF0YS5kb2N1bWVudE5vZGVJZGVudGlmaWVyKQogICAgICAgICAgICAgcmV0
dXJuOwpAQCAtMzAyLDkgKzI5Myw5IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlLnByb3RvdHlwZSA9
IHsKIAogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5ld0Zsb3dzLmxlbmd0aDsgKytpKQog
ICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRP
TVRyZWUuRXZlbnQuQ29udGVudEZsb3dXYXNBZGRlZCwge2Zsb3c6IG5ld0Zsb3dzW2ldfSk7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBfY29udGVudEZsb3dXYXNBZGRlZDogZnVuY3Rpb24oZXZlbnQp
CisgICAgX2NvbnRlbnRGbG93V2FzQWRkZWQoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgZmxv
dyA9IGV2ZW50LmRhdGEuZmxvdzsKICAgICAgICAgaWYgKCF0aGlzLl9pc0NvbnRlbnRGbG93SW5D
dXJyZW50RG9jdW1lbnQoZmxvdykpCkBAIC0zMTUsOSArMzA2LDkgQEAgV2ViSW5zcGVjdG9yLkRP
TVRyZWUucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9mbG93TWFwW2Zsb3dJZF0gPSBmbG93
OwogCiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5E
T01UcmVlLkV2ZW50LkNvbnRlbnRGbG93V2FzQWRkZWQsIHtmbG93fSk7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBfY29udGVudEZsb3dXYXNSZW1vdmVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfY29u
dGVudEZsb3dXYXNSZW1vdmVkKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIGZsb3cgPSBldmVu
dC5kYXRhLmZsb3c7CiAgICAgICAgIGlmICghdGhpcy5faXNDb250ZW50Rmxvd0luQ3VycmVudERv
Y3VtZW50KGZsb3cpKQpAQCAtMzMxLDQgKzMyMiw4IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlLnBy
b3RvdHlwZSA9IHsKICAgICB9CiB9OwogCi1XZWJJbnNwZWN0b3IuRE9NVHJlZS5wcm90b3R5cGUu
X19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CitXZWJJbnNwZWN0b3Iu
RE9NVHJlZS5FdmVudCA9IHsKKyAgICBSb290RE9NTm9kZUludmFsaWRhdGVkOiAiZG9tLXRyZWUt
cm9vdC1kb20tbm9kZS1pbnZhbGlkYXRlZCIsCisgICAgQ29udGVudEZsb3dXYXNBZGRlZDogImRv
bS10cmVlLWNvbnRlbnQtZmxvdy13YXMtYWRkZWQiLAorICAgIENvbnRlbnRGbG93V2FzUmVtb3Zl
ZDogImRvbS10cmVlLWNvbnRlbnQtZmxvdy13YXMtcmVtb3ZlZCIKK307CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRGF0YWJhc2VPYmplY3Qu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRGF0YWJhc2VP
YmplY3QuanMKaW5kZXggM2IxNzdiNi4uN2ViMjAwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0RhdGFiYXNlT2JqZWN0LmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9EYXRhYmFzZU9iamVjdC5q
cwpAQCAtMjMsNTAgKzIzLDQ3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAgKi8KIAotV2ViSW5zcGVjdG9yLkRhdGFiYXNlT2JqZWN0ID0gZnVuY3Rpb24oaWQsIGhvc3Qs
IG5hbWUsIHZlcnNpb24pCitXZWJJbnNwZWN0b3IuRGF0YWJhc2VPYmplY3QgPSBjbGFzcyBEYXRh
YmFzZU9iamVjdCBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIHsKKyAgICBjb25zdHJ1Y3Rv
cihpZCwgaG9zdCwgbmFtZSwgdmVyc2lvbikKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CisKICAg
ICAgICAgdGhpcy5faWQgPSBpZDsKICAgICAgICAgdGhpcy5faG9zdCA9IGhvc3QgPyBob3N0IDog
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJMb2NhbCBGaWxlIik7CiAgICAgICAgIHRoaXMuX25hbWUg
PSBuYW1lOwogICAgICAgICB0aGlzLl92ZXJzaW9uID0gdmVyc2lvbjsKLX07Ci0KLVdlYkluc3Bl
Y3Rvci5EYXRhYmFzZU9iamVjdC5UeXBlSWRlbnRpZmllciA9ICJkYXRhYmFzZSI7Ci1XZWJJbnNw
ZWN0b3IuRGF0YWJhc2VPYmplY3QuSG9zdENvb2tpZUtleSA9ICJkYXRhYmFzZS1vYmplY3QtaG9z
dCI7Ci1XZWJJbnNwZWN0b3IuRGF0YWJhc2VPYmplY3QuTmFtZUNvb2tpZUtleSA9ICJkYXRhYmFz
ZS1vYmplY3QtbmFtZSI7Ci0KLVdlYkluc3BlY3Rvci5EYXRhYmFzZU9iamVjdC5wcm90b3R5cGUg
PSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5EYXRhYmFzZU9iamVjdCwKKyAgICB9
CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBpZCgpCiAgICAgewogICAgICAgICByZXR1cm4g
dGhpcy5faWQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgaG9zdCgpCiAgICAgewogICAgICAg
ICByZXR1cm4gdGhpcy5faG9zdDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBuYW1lKCkKICAg
ICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9uYW1lOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0
IHZlcnNpb24oKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3ZlcnNpb247Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBzYXZlSWRlbnRpdHlUb0Nvb2tpZTogZnVuY3Rpb24oY29va2llKQorICAg
IHNhdmVJZGVudGl0eVRvQ29va2llKGNvb2tpZSkKICAgICB7CiAgICAgICAgIGNvb2tpZVtXZWJJ
bnNwZWN0b3IuRGF0YWJhc2VPYmplY3QuSG9zdENvb2tpZUtleV0gPSB0aGlzLmhvc3Q7CiAgICAg
ICAgIGNvb2tpZVtXZWJJbnNwZWN0b3IuRGF0YWJhc2VPYmplY3QuTmFtZUNvb2tpZUtleV0gPSB0
aGlzLm5hbWU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBnZXRUYWJsZU5hbWVzOiBmdW5jdGlvbihj
YWxsYmFjaykKKyAgICBnZXRUYWJsZU5hbWVzKGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgZnVu
Y3Rpb24gc29ydGluZ0NhbGxiYWNrKGVycm9yLCBuYW1lcykKICAgICAgICAgewpAQCAtNzUsOSAr
NzIsOSBAQCBXZWJJbnNwZWN0b3IuRGF0YWJhc2VPYmplY3QucHJvdG90eXBlID0gewogICAgICAg
ICB9CiAKICAgICAgICAgRGF0YWJhc2VBZ2VudC5nZXREYXRhYmFzZVRhYmxlTmFtZXModGhpcy5f
aWQsIHNvcnRpbmdDYWxsYmFjayk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBleGVjdXRlU1FMOiBm
dW5jdGlvbihxdWVyeSwgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKQorICAgIGV4ZWN1
dGVTUUwocXVlcnksIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykKICAgICB7CiAgICAg
ICAgIGZ1bmN0aW9uIHF1ZXJ5Q2FsbGJhY2soY29sdW1uTmFtZXMsIHZhbHVlcywgc3FsRXJyb3Ip
CiAgICAgICAgIHsKQEAgLTEzMywzICsxMzAsNyBAQCBXZWJJbnNwZWN0b3IuRGF0YWJhc2VPYmpl
Y3QucHJvdG90eXBlID0gewogICAgICAgICBEYXRhYmFzZUFnZW50LmV4ZWN1dGVTUUwodGhpcy5f
aWQsIHF1ZXJ5LCBjYWxsYmFjayk7CiAgICAgfQogfTsKKworV2ViSW5zcGVjdG9yLkRhdGFiYXNl
T2JqZWN0LlR5cGVJZGVudGlmaWVyID0gImRhdGFiYXNlIjsKK1dlYkluc3BlY3Rvci5EYXRhYmFz
ZU9iamVjdC5Ib3N0Q29va2llS2V5ID0gImRhdGFiYXNlLW9iamVjdC1ob3N0IjsKK1dlYkluc3Bl
Y3Rvci5EYXRhYmFzZU9iamVjdC5OYW1lQ29va2llS2V5ID0gImRhdGFiYXNlLW9iamVjdC1uYW1l
IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVs
cy9EYXRhYmFzZVRhYmxlT2JqZWN0LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvTW9kZWxzL0RhdGFiYXNlVGFibGVPYmplY3QuanMKaW5kZXggYTZhOGJhNS4uMGM0ZTNl
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxz
L0RhdGFiYXNlVGFibGVPYmplY3QuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvTW9kZWxzL0RhdGFiYXNlVGFibGVPYmplY3QuanMKQEAgLTIzLDM0ICsyMywzNSBA
QAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rv
ci5EYXRhYmFzZVRhYmxlT2JqZWN0ID0gZnVuY3Rpb24obmFtZSwgZGF0YWJhc2UpCitXZWJJbnNw
ZWN0b3IuRGF0YWJhc2VUYWJsZU9iamVjdCA9IGNsYXNzIERhdGFiYXNlVGFibGVPYmplY3QgZXh0
ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7CisgICAgY29uc3RydWN0b3IobmFtZSwgZGF0YWJh
c2UpCisgICAgeworICAgICAgICBzdXBlcigpOworCiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGRh
dGFiYXNlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkRhdGFiYXNlT2JqZWN0KTsKIAogICAgICAg
ICB0aGlzLl9uYW1lID0gbmFtZTsKICAgICAgICAgdGhpcy5fZGF0YWJhc2UgPSBkYXRhYmFzZTsK
LX07CisgICAgfQogCi1XZWJJbnNwZWN0b3IuRGF0YWJhc2VUYWJsZU9iamVjdC5UeXBlSWRlbnRp
ZmllciA9ICJkYXRhYmFzZS10YWJsZSI7Ci1XZWJJbnNwZWN0b3IuRGF0YWJhc2VUYWJsZU9iamVj
dC5OYW1lQ29va2llS2V5ID0gImRhdGFiYXNlLXRhYmxlLW9iamVjdC1uYW1lIjsKLQotV2ViSW5z
cGVjdG9yLkRhdGFiYXNlVGFibGVPYmplY3QucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9y
OiBXZWJJbnNwZWN0b3IuRGF0YWJhc2VUYWJsZU9iamVjdCwKKyAgICAvLyBQdWJsaWMKIAogICAg
IGdldCBuYW1lKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9uYW1lOwotICAgIH0sCisg
ICAgfQogCiAgICAgZ2V0IGRhdGFiYXNlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9k
YXRhYmFzZTsKLSAgICB9LAorICAgIH0KIAotICAgIHNhdmVJZGVudGl0eVRvQ29va2llOiBmdW5j
dGlvbihjb29raWUpCisgICAgc2F2ZUlkZW50aXR5VG9Db29raWUoY29va2llKQogICAgIHsKICAg
ICAgICAgY29va2llW1dlYkluc3BlY3Rvci5EYXRhYmFzZVRhYmxlT2JqZWN0Lk5hbWVDb29raWVL
ZXldID0gdGhpcy5uYW1lOwotICAgIH0sCisgICAgfQogfTsKIAotV2ViSW5zcGVjdG9yLkRhdGFi
YXNlVGFibGVPYmplY3QucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3Qu
cHJvdG90eXBlOworV2ViSW5zcGVjdG9yLkRhdGFiYXNlVGFibGVPYmplY3QuVHlwZUlkZW50aWZp
ZXIgPSAiZGF0YWJhc2UtdGFibGUiOworV2ViSW5zcGVjdG9yLkRhdGFiYXNlVGFibGVPYmplY3Qu
TmFtZUNvb2tpZUtleSA9ICJkYXRhYmFzZS10YWJsZS1vYmplY3QtbmFtZSI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRGVidWdnZXJEYXNo
Ym9hcmQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRGVi
dWdnZXJEYXNoYm9hcmQuanMKaW5kZXggZDcxMzk0My4uMjkzN2M5YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0RlYnVnZ2VyRGFzaGJvYXJk
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9EZWJ1
Z2dlckRhc2hib2FyZC5qcwpAQCAtMjMsMTEgKzIzLDExIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkRlYnVnZ2VyRGFzaGJvYXJkID0g
ZnVuY3Rpb24oKSB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwotfTsKLQot
V2ViSW5zcGVjdG9yLkRlYnVnZ2VyRGFzaGJvYXJkLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1
Y3RvcjogV2ViSW5zcGVjdG9yLkRlYnVnZ2VyRGFzaGJvYXJkLAotICAgIF9fcHJvdG9fXzogV2Vi
SW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGUsCitXZWJJbnNwZWN0b3IuRGVidWdnZXJEYXNoYm9h
cmQgPSBjbGFzcyBEZWJ1Z2dlckRhc2hib2FyZCBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QK
K3sKKyAgICBjb25zdHJ1Y3RvcigpCisgICAgeworICAgICAgICAvLyBGSVhNRTogUmVtb3ZlIG9u
Y2UgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE0Mjg2Mj4gaXMgZml4ZWQuCisgICAgICAgIHN1cGVy
KCk7CisgICAgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL01vZGVscy9EZWZhdWx0RGFzaGJvYXJkLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvTW9kZWxzL0RlZmF1bHREYXNoYm9hcmQuanMKaW5kZXggZjEwNGRjYS4u
Y2VlZTZlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
TW9kZWxzL0RlZmF1bHREYXNoYm9hcmQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvTW9kZWxzL0RlZmF1bHREYXNoYm9hcmQuanMKQEAgLTIzLDggKzIzLDExIEBA
CiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5EZWZhdWx0RGFzaGJvYXJkID0g
ZnVuY3Rpb24oKSB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworV2ViSW5z
cGVjdG9yLkRlZmF1bHREYXNoYm9hcmQgPSBjbGFzcyBEZWZhdWx0RGFzaGJvYXJkIGV4dGVuZHMg
V2ViSW5zcGVjdG9yLk9iamVjdAoreworICAgIGNvbnN0cnVjdG9yKCkKKyAgICB7CisgICAgICAg
IHN1cGVyKCk7CiAKICAgICAgICAgdGhpcy5fd2FpdGluZ0ZvckZpcnN0TWFpblJlc291cmNlVG9T
dGFydFRyYWNraW5nU2l6ZSA9IHRydWU7CiAKQEAgLTQ5LDkyICs1Miw4NCBAQCBXZWJJbnNwZWN0
b3IuRGVmYXVsdERhc2hib2FyZCA9IGZ1bmN0aW9uKCkgewogICAgICAgICB0aGlzLl9sb2dzID0g
MDsKICAgICAgICAgdGhpcy5fZXJyb3JzID0gMDsKICAgICAgICAgdGhpcy5faXNzdWVzID0gMDsK
LX07Ci0KLVdlYkluc3BlY3Rvci5EZWZhdWx0RGFzaGJvYXJkLkV2ZW50ID0gewotICAgIERhdGFE
aWRDaGFuZ2U6ICJkZWZhdWx0LWRhc2hib2FyZC1kYXRhLWRpZC1jaGFuZ2UiCi19OwotCi1XZWJJ
bnNwZWN0b3IuRGVmYXVsdERhc2hib2FyZC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6
IFdlYkluc3BlY3Rvci5EZWZhdWx0RGFzaGJvYXJkLAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVj
dG9yLk9iamVjdC5wcm90b3R5cGUsCisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQg
cmVzb3VyY2VzQ291bnQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlc0Nv
dW50OwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IHJlc291cmNlc0NvdW50KHZhbHVlKQogICAg
IHsKICAgICAgICAgdGhpcy5fcmVzb3VyY2VzQ291bnQgPSB2YWx1ZTsKICAgICAgICAgdGhpcy5f
ZGF0YURpZENoYW5nZSgpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHJlc291cmNlc1NpemUo
KQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlc1NpemU7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICBzZXQgcmVzb3VyY2VzU2l6ZSh2YWx1ZSkKICAgICB7CiAgICAgICAgIHRoaXMu
X3Jlc291cmNlc1NpemUgPSB2YWx1ZTsKICAgICAgICAgdGhpcy5fZGF0YURpZENoYW5nZSgpOwot
ICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHRpbWUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRo
aXMuX3RpbWU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgdGltZSh2YWx1ZSkKICAgICB7CiAg
ICAgICAgIHRoaXMuX3RpbWUgPSB2YWx1ZTsKICAgICAgICAgdGhpcy5fZGF0YURpZENoYW5nZSgp
OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGxvZ3MoKQogICAgIHsKICAgICAgICAgcmV0dXJu
IHRoaXMuX2xvZ3M7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgbG9ncyh2YWx1ZSkKICAgICB7
CiAgICAgICAgIHRoaXMuX2xvZ3MgPSB2YWx1ZTsKICAgICAgICAgdGhpcy5fZGF0YURpZENoYW5n
ZSgpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGVycm9ycygpCiAgICAgewogICAgICAgICBy
ZXR1cm4gdGhpcy5fZXJyb3JzOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IGVycm9ycyh2YWx1
ZSkKICAgICB7CiAgICAgICAgIHRoaXMuX2Vycm9ycyA9IHZhbHVlOwogICAgICAgICB0aGlzLl9k
YXRhRGlkQ2hhbmdlKCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgaXNzdWVzKCkKICAgICB7
CiAgICAgICAgIHJldHVybiB0aGlzLl9pc3N1ZXM7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQg
aXNzdWVzKHZhbHVlKQogICAgIHsKICAgICAgICAgdGhpcy5faXNzdWVzID0gdmFsdWU7CiAgICAg
ICAgIHRoaXMuX2RhdGFEaWRDaGFuZ2UoKTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZh
dGUKIAotICAgIF9kYXRhRGlkQ2hhbmdlOiBmdW5jdGlvbigpCisgICAgX2RhdGFEaWRDaGFuZ2Uo
KQogICAgIHsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVj
dG9yLkRlZmF1bHREYXNoYm9hcmQuRXZlbnQuRGF0YURpZENoYW5nZSk7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBfbWFpblJlc291cmNlRGlkQ2hhbmdlOiBmdW5jdGlvbihldmVudCkKKyAgICBfbWFp
blJlc291cmNlRGlkQ2hhbmdlKGV2ZW50KQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQo
ZXZlbnQudGFyZ2V0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkZyYW1lKTsKIApAQCAtMTU4LDMw
ICsxNTMsMzAgQEAgV2ViSW5zcGVjdG9yLkRlZmF1bHREYXNoYm9hcmQucHJvdG90eXBlID0gewog
CiAgICAgICAgIHRoaXMuX2RhdGFEaWRDaGFuZ2UoKTsKICAgICAgICAgdGhpcy5fc3RhcnRVcGRh
dGluZ1RpbWUoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9jYXB0dXJpbmdTdG9wcGVkOiBmdW5j
dGlvbihldmVudCkKKyAgICBfY2FwdHVyaW5nU3RvcHBlZChldmVudCkKICAgICB7CiAgICAgICAg
IC8vIElmIHJlY29yZGluZyBzdG9wcywgd2Ugc2hvdWxkIHN0b3AgdGhlIHRpbWVyIGlmIGl0IGhh
c24ndCBzdG9wcGVkIGFscmVhZHkuCiAgICAgICAgIHRoaXMuX3N0b3BVcGRhdGluZ1RpbWUoKTsK
LSAgICB9LAorICAgIH0KIAotICAgIF9yZXNvdXJjZVdhc0FkZGVkOiBmdW5jdGlvbihldmVudCkK
KyAgICBfcmVzb3VyY2VXYXNBZGRlZChldmVudCkKICAgICB7CiAgICAgICAgICsrdGhpcy5yZXNv
dXJjZXNDb3VudDsKLSAgICB9LAorICAgIH0KIAotICAgIF9mcmFtZVdhc0FkZGVkOiBmdW5jdGlv
bihldmVudCkKKyAgICBfZnJhbWVXYXNBZGRlZChldmVudCkKICAgICB7CiAgICAgICAgICsrdGhp
cy5yZXNvdXJjZXNDb3VudDsKLSAgICB9LAorICAgIH0KIAotICAgIF9yZXNvdXJjZVNpemVEaWRD
aGFuZ2U6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9yZXNvdXJjZVNpemVEaWRDaGFuZ2UoZXZlbnQp
CiAgICAgewogICAgICAgICB0aGlzLnJlc291cmNlc1NpemUgKz0gZXZlbnQudGFyZ2V0LnNpemUg
LSBldmVudC5kYXRhLnByZXZpb3VzU2l6ZTsKLSAgICB9LAorICAgIH0KIAotICAgIF9zdGFydFVw
ZGF0aW5nVGltZTogZnVuY3Rpb24oKQorICAgIF9zdGFydFVwZGF0aW5nVGltZSgpCiAgICAgewog
ICAgICAgICB0aGlzLl9zdG9wVXBkYXRpbmdUaW1lKCk7CiAKQEAgLTE5MCwxOCArMTg1LDE4IEBA
IFdlYkluc3BlY3Rvci5EZWZhdWx0RGFzaGJvYXJkLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhp
cy5fdGltZWxpbmVCYXNlVGltZSA9IERhdGUubm93KCk7CiAgICAgICAgIHRoaXMuX3RpbWVJbnRl
cnZhbERlbGF5ID0gNTA7CiAgICAgICAgIHRoaXMuX3RpbWVJbnRlcnZhbElkZW50aWZpZXIgPSBz
ZXRJbnRlcnZhbCh0aGlzLl91cGRhdGVUaW1lLmJpbmQodGhpcyksIHRoaXMuX3RpbWVJbnRlcnZh
bERlbGF5KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9zdG9wVXBkYXRpbmdUaW1lOiBmdW5jdGlv
bigpCisgICAgX3N0b3BVcGRhdGluZ1RpbWUoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl90
aW1lSW50ZXJ2YWxJZGVudGlmaWVyKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGNs
ZWFySW50ZXJ2YWwodGhpcy5fdGltZUludGVydmFsSWRlbnRpZmllcik7CiAgICAgICAgIGRlbGV0
ZSB0aGlzLl90aW1lSW50ZXJ2YWxJZGVudGlmaWVyOwotICAgIH0sCisgICAgfQogCi0gICAgX3Vw
ZGF0ZVRpbWU6IGZ1bmN0aW9uKCkKKyAgICBfdXBkYXRlVGltZSgpCiAgICAgewogICAgICAgICB2
YXIgZHVyYXRpb24gPSBEYXRlLm5vdygpIC0gdGhpcy5fdGltZWxpbmVCYXNlVGltZTsKIApAQCAt
MjMyLDIxICsyMjcsMjEgQEAgV2ViSW5zcGVjdG9yLkRlZmF1bHREYXNoYm9hcmQucHJvdG90eXBl
ID0gewogICAgICAgICB0aGlzLnRpbWUgPSBtYWluRnJhbWVMb2FkRXZlbnRUaW1lIC0gbWFpbkZy
YW1lU3RhcnRUaW1lOwogCiAgICAgICAgIHRoaXMuX3N0b3BVcGRhdGluZ1RpbWUoKTsKLSAgICB9
LAorICAgIH0KIAotICAgIF9jb25zb2xlTWVzc2FnZUFkZGVkOiBmdW5jdGlvbihldmVudCkKKyAg
ICBfY29uc29sZU1lc3NhZ2VBZGRlZChldmVudCkKICAgICB7CiAgICAgICAgIHZhciBtZXNzYWdl
ID0gZXZlbnQuZGF0YS5tZXNzYWdlOwogICAgICAgICB0aGlzLl9sYXN0Q29uc29sZU1lc3NhZ2VU
eXBlID0gbWVzc2FnZS5sZXZlbDsKICAgICAgICAgdGhpcy5faW5jcmVtZW50Q29uc29sZU1lc3Nh
Z2VUeXBlKG1lc3NhZ2UubGV2ZWwsIG1lc3NhZ2UudG90YWxSZXBlYXRDb3VudCk7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBfY29uc29sZU1lc3NhZ2VXYXNSZXBlYXRlZDogZnVuY3Rpb24oZXZlbnQp
CisgICAgX2NvbnNvbGVNZXNzYWdlV2FzUmVwZWF0ZWQoZXZlbnQpCiAgICAgewogICAgICAgICB0
aGlzLl9pbmNyZW1lbnRDb25zb2xlTWVzc2FnZVR5cGUodGhpcy5fbGFzdENvbnNvbGVNZXNzYWdl
VHlwZSwgMSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfaW5jcmVtZW50Q29uc29sZU1lc3NhZ2VU
eXBlOiBmdW5jdGlvbih0eXBlLCBpbmNyZW1lbnQpCisgICAgX2luY3JlbWVudENvbnNvbGVNZXNz
YWdlVHlwZSh0eXBlLCBpbmNyZW1lbnQpCiAgICAgewogICAgICAgICBzd2l0Y2ggKHR5cGUpIHsK
ICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuTGVnYWN5Q29uc29sZU1lc3NhZ2UuTWVzc2FnZUxl
dmVsLkxvZzoKQEAgLTI1OSw5ICsyNTQsOSBAQCBXZWJJbnNwZWN0b3IuRGVmYXVsdERhc2hib2Fy
ZC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLmVycm9ycyArPSBpbmNyZW1lbnQ7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgIH0sCisgICAgfQogCi0gICAgX2NvbnNv
bGVXYXNDbGVhcmVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfY29uc29sZVdhc0NsZWFyZWQoZXZl
bnQpCiAgICAgewogICAgICAgICB0aGlzLl9sb2dzID0gMDsKICAgICAgICAgdGhpcy5faXNzdWVz
ID0gMDsKQEAgLTI2OSwzICsyNjQsNyBAQCBXZWJJbnNwZWN0b3IuRGVmYXVsdERhc2hib2FyZC5w
cm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2RhdGFEaWRDaGFuZ2UoKTsKICAgICB9CiB9Owor
CitXZWJJbnNwZWN0b3IuRGVmYXVsdERhc2hib2FyZC5FdmVudCA9IHsKKyAgICBEYXRhRGlkQ2hh
bmdlOiAiZGVmYXVsdC1kYXNoYm9hcmQtZGF0YS1kaWQtY2hhbmdlIgorfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9FeGVjdXRpb25Db250
ZXh0LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0V4ZWN1
dGlvbkNvbnRleHQuanMKaW5kZXggMTQzNzVlMS4uYjVhZWY5OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0V4ZWN1dGlvbkNvbnRleHQuanMK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0V4ZWN1dGlv
bkNvbnRleHQuanMKQEAgLTIzLDkgKzIzLDExIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkV4ZWN1dGlvbkNvbnRleHQgPSBmdW5jdGlv
bihpZCwgbmFtZSwgaXNQYWdlQ29udGV4dCwgZnJhbWUpCitXZWJJbnNwZWN0b3IuRXhlY3V0aW9u
Q29udGV4dCA9IGNsYXNzIEV4ZWN1dGlvbkNvbnRleHQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2Jq
ZWN0CiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIGNvbnN0cnVj
dG9yKGlkLCBuYW1lLCBpc1BhZ2VDb250ZXh0LCBmcmFtZSkKKyAgICB7CisgICAgICAgIHN1cGVy
KCk7CiAKICAgICAgICAgY29uc29sZS5hc3NlcnQodHlwZW9mIGlkID09PSAibnVtYmVyIiB8fCBp
ZCA9PT0gV2ViSW5zcGVjdG9yLlF1aWNrQ29uc29sZS5NYWluRnJhbWVDb250ZXh0RXhlY3V0aW9u
SWRlbnRpZmllcik7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHR5cGVvZiBuYW1lID09PSAic3Ry
aW5nIik7CkBAIC0zNCw0MCArMzYsMzcgQEAgV2ViSW5zcGVjdG9yLkV4ZWN1dGlvbkNvbnRleHQg
PSBmdW5jdGlvbihpZCwgbmFtZSwgaXNQYWdlQ29udGV4dCwgZnJhbWUpCiAgICAgICAgIHRoaXMu
X25hbWUgPSBuYW1lOwogICAgICAgICB0aGlzLl9pc1BhZ2VDb250ZXh0ID0gaXNQYWdlQ29udGV4
dCB8fCBmYWxzZTsKICAgICAgICAgdGhpcy5fZnJhbWUgPSBmcmFtZSB8fCBudWxsOwotfTsKKyAg
ICB9CiAKLVdlYkluc3BlY3Rvci5FeGVjdXRpb25Db250ZXh0LnN1cHBvcnRlZCA9IGZ1bmN0aW9u
KCkKKyAgICAvLyBTdGF0aWMKKworICAgIHN0YXRpYyBzdXBwb3J0ZWQoKQogICAgIHsKICAgICAg
ICAgLy8gRXhlY3V0aW9uIGNvbnRleHRzIHdlcmUgYWRkZWQgdG8gdGhlIEluc3BlY3RvciBwcm90
b2NvbCBhbG9uZ3NpZGUgUnVudGltZUFnZW50LmVuYWJsZSBhbmQKICAgICAgICAgLy8gZGlzYWJs
ZSBtZXRob2RzLCB3aGljaCB0dXJuIG9uIGFuZCBvZmYgc2VuZGluZyBSdW50aW1lIGFnZW50IGV4
ZWN1dGlvbiBjb250ZXh0IGNyZWF0ZWQgZXZlbnRzLgogICAgICAgICAvLyBTbyB3ZSBjYW4gZmVh
dHVyZSBkZXRlY3Qgc3VwcG9ydCBmb3IgZXhlY3V0aW9uIGNvbnRleHRzIHdpdGggdGhlc2UgUnVu
dGltZUFnZW50IGZ1bmN0aW9ucy4KICAgICAgICAgcmV0dXJuIHR5cGVvZiBSdW50aW1lQWdlbnQu
ZW5hYmxlID09PSAiZnVuY3Rpb24iOwotfTsKLQotV2ViSW5zcGVjdG9yLkV4ZWN1dGlvbkNvbnRl
eHQucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuRXhlY3V0aW9u
Q29udGV4dCwKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBpZCgpCiAgICAgewog
ICAgICAgICByZXR1cm4gdGhpcy5faWQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgbmFtZSgp
CiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fbmFtZTsKLSAgICB9LAorICAgIH0KIAogICAg
IGdldCBpc1BhZ2VDb250ZXh0KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9pc1BhZ2VD
b250ZXh0OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGZyYW1lKCkKICAgICB7CiAgICAgICAg
IHJldHVybiB0aGlzLl9mcmFtZTsKICAgICB9CiB9OwotCi1XZWJJbnNwZWN0b3IuRXhlY3V0aW9u
Q29udGV4dC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5
cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2Rl
bHMvRXhlY3V0aW9uQ29udGV4dExpc3QuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Nb2RlbHMvRXhlY3V0aW9uQ29udGV4dExpc3QuanMKaW5kZXggYzgwNmMyNy4uZTA5
NGZjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9k
ZWxzL0V4ZWN1dGlvbkNvbnRleHRMaXN0LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL01vZGVscy9FeGVjdXRpb25Db250ZXh0TGlzdC5qcwpAQCAtMjMsMzAgKzIz
LDI5IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5z
cGVjdG9yLkV4ZWN1dGlvbkNvbnRleHRMaXN0ID0gZnVuY3Rpb24oKQorV2ViSW5zcGVjdG9yLkV4
ZWN1dGlvbkNvbnRleHRMaXN0ID0gY2xhc3MgRXhlY3V0aW9uQ29udGV4dExpc3QgZXh0ZW5kcyBX
ZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMp
OworICAgIGNvbnN0cnVjdG9yKCkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CiAKICAgICAgICAg
dGhpcy5fY29udGV4dHMgPSBbXTsKICAgICAgICAgdGhpcy5fcGFnZUV4ZWN1dGlvbkNvbnRleHQg
PSBudWxsOwotfTsKLQotV2ViSW5zcGVjdG9yLkV4ZWN1dGlvbkNvbnRleHRMaXN0LnByb3RvdHlw
ZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkV4ZWN1dGlvbkNvbnRleHRMaXN0
LAorICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IHBhZ2VFeGVjdXRpb25Db250ZXh0
KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9wYWdlRXhlY3V0aW9uQ29udGV4dDsKLSAg
ICB9LAorICAgIH0KIAogICAgIGdldCBjb250ZXh0cygpCiAgICAgewogICAgICAgICByZXR1cm4g
dGhpcy5fY29udGV4dHM7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBhZGQ6IGZ1bmN0aW9uKGNvbnRl
eHQpCisgICAgYWRkKGNvbnRleHQpCiAgICAgewogICAgICAgICAvLyBGSVhNRTogVGhlIGJhY2tl
bmQgc2VuZHMgZHVwbGljYXRlIHBhZ2UgY29udGV4dCBleGVjdXRpb24gY29udGV4dHMgd2l0aCB0
aGUgc2FtZSBpZC4gV2h5PwogICAgICAgICBpZiAoY29udGV4dC5pc1BhZ2VDb250ZXh0ICYmIHRo
aXMuX3BhZ2VFeGVjdXRpb25Db250ZXh0KSB7CkBAIC02MywxMyArNjIsMTEgQEAgV2ViSW5zcGVj
dG9yLkV4ZWN1dGlvbkNvbnRleHRMaXN0LnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICB9LAorICAgIH0KIAotICAgIGNsZWFyOiBmdW5jdGlvbigp
CisgICAgY2xlYXIoKQogICAgIHsKICAgICAgICAgdGhpcy5fY29udGV4dHMgPSBbXTsKICAgICAg
ICAgdGhpcy5fcGFnZUV4ZWN1dGlvbkNvbnRleHQgPSBudWxsOwogICAgIH0KIH07Ci0KLVdlYklu
c3BlY3Rvci5FeGVjdXRpb25Db250ZXh0TGlzdC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5z
cGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRnJhbWUuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Nb2RlbHMvRnJhbWUuanMKaW5kZXggODQ1NGYyMi4uMDYxOWM0NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0ZyYW1l
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9GcmFt
ZS5qcwpAQCAtMjMsOSArMjMsMTEgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCi1XZWJJbnNwZWN0b3IuRnJhbWUgPSBmdW5jdGlvbihpZCwgbmFtZSwgc2VjdXJp
dHlPcmlnaW4sIGxvYWRlcklkZW50aWZpZXIsIG1haW5SZXNvdXJjZSkKK1dlYkluc3BlY3Rvci5G
cmFtZSA9IGNsYXNzIEZyYW1lIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogewotICAgIFdl
Ykluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICBjb25zdHJ1Y3RvcihpZCwgbmFtZSwg
c2VjdXJpdHlPcmlnaW4sIGxvYWRlcklkZW50aWZpZXIsIG1haW5SZXNvdXJjZSkKKyAgICB7Cisg
ICAgICAgIHN1cGVyKCk7CiAKICAgICAgICAgY29uc29sZS5hc3NlcnQoaWQpOwogCkBAIC00OSwz
OCArNTEsMTEgQEAgV2ViSW5zcGVjdG9yLkZyYW1lID0gZnVuY3Rpb24oaWQsIG5hbWUsIHNlY3Vy
aXR5T3JpZ2luLCBsb2FkZXJJZGVudGlmaWVyLCBtYWluUmUKICAgICAgICAgdGhpcy5fZXhlY3V0
aW9uQ29udGV4dExpc3QgPSBuZXcgV2ViSW5zcGVjdG9yLkV4ZWN1dGlvbkNvbnRleHRMaXN0Owog
CiAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZShuYW1lLCBzZWN1cml0eU9yaWdpbiwgbG9hZGVySWRl
bnRpZmllciwgbWFpblJlc291cmNlKTsKLX07Ci0KLVdlYkluc3BlY3Rvci5PYmplY3QuYWRkQ29u
c3RydWN0b3JGdW5jdGlvbnMoV2ViSW5zcGVjdG9yLkZyYW1lKTsKLQotV2ViSW5zcGVjdG9yLkZy
YW1lLkV2ZW50ID0gewotICAgIE5hbWVEaWRDaGFuZ2U6ICJmcmFtZS1uYW1lLWRpZC1jaGFuZ2Ui
LAotICAgIFNlY3VyaXR5T3JpZ2luRGlkQ2hhbmdlOiAiZnJhbWUtc2VjdXJpdHktb3JpZ2luLWRp
ZC1jaGFuZ2UiLAotICAgIE1haW5SZXNvdXJjZURpZENoYW5nZTogImZyYW1lLW1haW4tcmVzb3Vy
Y2UtZGlkLWNoYW5nZSIsCi0gICAgUHJvdmlzaW9uYWxMb2FkU3RhcnRlZDogImZyYW1lLXByb3Zp
c2lvbmFsLWxvYWQtc3RhcnRlZCIsCi0gICAgUHJvdmlzaW9uYWxMb2FkQ29tbWl0dGVkOiAiZnJh
bWUtcHJvdmlzaW9uYWwtbG9hZC1jb21taXR0ZWQiLAotICAgIFByb3Zpc2lvbmFsTG9hZENsZWFy
ZWQ6ICJmcmFtZS1wcm92aXNpb25hbC1sb2FkLWNsZWFyZWQiLAotICAgIFByb3Zpc2lvbmFsUmVz
b3VyY2VXYXNBZGRlZDogImZyYW1lLXByb3Zpc2lvbmFsLXJlc291cmNlLXdhcy1hZGRlZCIsCi0g
ICAgUmVzb3VyY2VXYXNBZGRlZDogImZyYW1lLXJlc291cmNlLXdhcy1hZGRlZCIsCi0gICAgUmVz
b3VyY2VXYXNSZW1vdmVkOiAiZnJhbWUtcmVzb3VyY2Utd2FzLXJlbW92ZWQiLAotICAgIEFsbFJl
c291cmNlc1JlbW92ZWQ6ICJmcmFtZS1hbGwtcmVzb3VyY2VzLXJlbW92ZWQiLAotICAgIENoaWxk
RnJhbWVXYXNBZGRlZDogImZyYW1lLWNoaWxkLWZyYW1lLXdhcy1hZGRlZCIsCi0gICAgQ2hpbGRG
cmFtZVdhc1JlbW92ZWQ6ICJmcmFtZS1jaGlsZC1mcmFtZS13YXMtcmVtb3ZlZCIsCi0gICAgQWxs
Q2hpbGRGcmFtZXNSZW1vdmVkOiAiZnJhbWUtYWxsLWNoaWxkLWZyYW1lcy1yZW1vdmVkIiwKLSAg
ICBQYWdlRXhlY3V0aW9uQ29udGV4dENoYW5nZWQ6ICJmcmFtZS1wYWdlLWV4ZWN1dGlvbi1jb250
ZXh0LWNoYW5nZWQiLAotICAgIEV4ZWN1dGlvbkNvbnRleHRzQ2xlYXJlZDogImZyYW1lLWV4ZWN1
dGlvbi1jb250ZXh0cy1jbGVhcmVkIgotfTsKLQotV2ViSW5zcGVjdG9yLkZyYW1lLlR5cGVJZGVu
dGlmaWVyID0gIkZyYW1lIjsKLVdlYkluc3BlY3Rvci5GcmFtZS5NYWluUmVzb3VyY2VVUkxDb29r
aWVLZXkgPSAiZnJhbWUtbWFpbi1yZXNvdXJjZS11cmwiOwotV2ViSW5zcGVjdG9yLkZyYW1lLklz
TWFpbkZyYW1lQ29va2llS2V5ID0gImZyYW1lLWlzLW1haW4tZnJhbWUiOwotCi1XZWJJbnNwZWN0
b3IuRnJhbWUucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuRnJh
bWUsCisgICAgfQogCiAgICAgLy8gUHVibGljCiAKLSAgICBpbml0aWFsaXplOiBmdW5jdGlvbihu
YW1lLCBzZWN1cml0eU9yaWdpbiwgbG9hZGVySWRlbnRpZmllciwgbWFpblJlc291cmNlKQorICAg
IGluaXRpYWxpemUobmFtZSwgc2VjdXJpdHlPcmlnaW4sIGxvYWRlcklkZW50aWZpZXIsIG1haW5S
ZXNvdXJjZSkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGxvYWRlcklkZW50aWZpZXIp
OwogICAgICAgICBjb25zb2xlLmFzc2VydChtYWluUmVzb3VyY2UpOwpAQCAtMTEyLDkgKzg3LDkg
QEAgV2ViSW5zcGVjdG9yLkZyYW1lLnByb3RvdHlwZSA9IHsKIAogICAgICAgICBpZiAodGhpcy5f
bmFtZSAhPT0gb2xkTmFtZSkKICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVu
ZXJzKFdlYkluc3BlY3Rvci5GcmFtZS5FdmVudC5OYW1lRGlkQ2hhbmdlLCB7b2xkTmFtZX0pOwot
ICAgIH0sCisgICAgfQogCi0gICAgc3RhcnRQcm92aXNpb25hbExvYWQ6IGZ1bmN0aW9uKHByb3Zp
c2lvbmFsTWFpblJlc291cmNlKQorICAgIHN0YXJ0UHJvdmlzaW9uYWxMb2FkKHByb3Zpc2lvbmFs
TWFpblJlc291cmNlKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQocHJvdmlzaW9uYWxN
YWluUmVzb3VyY2UpOwogCkBAIC0xMjYsOSArMTAxLDkgQEAgV2ViSW5zcGVjdG9yLkZyYW1lLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fcHJvdmlzaW9uYWxSZXNvdXJjZUNvbGxlY3Rpb24u
cmVtb3ZlQWxsUmVzb3VyY2VzKCk7CiAKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0
ZW5lcnMoV2ViSW5zcGVjdG9yLkZyYW1lLkV2ZW50LlByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQpOwot
ICAgIH0sCisgICAgfQogCi0gICAgY29tbWl0UHJvdmlzaW9uYWxMb2FkOiBmdW5jdGlvbihzZWN1
cml0eU9yaWdpbikKKyAgICBjb21taXRQcm92aXNpb25hbExvYWQoc2VjdXJpdHlPcmlnaW4pCiAg
ICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9wcm92aXNpb25hbE1haW5SZXNvdXJj
ZSk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3Byb3Zpc2lvbmFsTG9hZGVySWRlbnRp
Zmllcik7CkBAIC0xNjQsOSArMTM5LDkgQEAgV2ViSW5zcGVjdG9yLkZyYW1lLnByb3RvdHlwZSA9
IHsKIAogICAgICAgICBpZiAodGhpcy5fc2VjdXJpdHlPcmlnaW4gIT09IG9sZFNlY3VyaXR5T3Jp
Z2luKQogICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVj
dG9yLkZyYW1lLkV2ZW50LlNlY3VyaXR5T3JpZ2luRGlkQ2hhbmdlLCB7b2xkU2VjdXJpdHlPcmln
aW59KTsKLSAgICB9LAorICAgIH0KIAotICAgIGNsZWFyUHJvdmlzaW9uYWxMb2FkOiBmdW5jdGlv
bihza2lwUHJvdmlzaW9uYWxMb2FkQ2xlYXJlZEV2ZW50KQorICAgIGNsZWFyUHJvdmlzaW9uYWxM
b2FkKHNraXBQcm92aXNpb25hbExvYWRDbGVhcmVkRXZlbnQpCiAgICAgewogICAgICAgICBpZiAo
IXRoaXMuX3Byb3Zpc2lvbmFsTG9hZGVySWRlbnRpZmllcikKICAgICAgICAgICAgIHJldHVybjsK
QEAgLTE3NywxMjcgKzE1MiwxMjcgQEAgV2ViSW5zcGVjdG9yLkZyYW1lLnByb3RvdHlwZSA9IHsK
IAogICAgICAgICBpZiAoIXNraXBQcm92aXNpb25hbExvYWRDbGVhcmVkRXZlbnQpCiAgICAgICAg
ICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRnJhbWUuRXZl
bnQuUHJvdmlzaW9uYWxMb2FkQ2xlYXJlZCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgaWQo
KQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2lkOwotICAgIH0sCisgICAgfQogCiAgICAg
Z2V0IGxvYWRlcklkZW50aWZpZXIoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2xvYWRl
cklkZW50aWZpZXI7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgcHJvdmlzaW9uYWxMb2FkZXJJ
ZGVudGlmaWVyKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9wcm92aXNpb25hbExvYWRl
cklkZW50aWZpZXI7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgbmFtZSgpCiAgICAgewogICAg
ICAgICByZXR1cm4gdGhpcy5fbmFtZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzZWN1cml0
eU9yaWdpbigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc2VjdXJpdHlPcmlnaW47Ci0g
ICAgfSwKKyAgICB9CiAKICAgICBnZXQgdXJsKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlz
Ll9tYWluUmVzb3VyY2UuX3VybDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBkb21UcmVlKCkK
ICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fZG9tVHJlZSkKICAgICAgICAgICAgIHRoaXMuX2Rv
bVRyZWUgPSBuZXcgV2ViSW5zcGVjdG9yLkRPTVRyZWUodGhpcyk7CiAgICAgICAgIHJldHVybiB0
aGlzLl9kb21UcmVlOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHBhZ2VFeGVjdXRpb25Db250
ZXh0KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9leGVjdXRpb25Db250ZXh0TGlzdC5w
YWdlRXhlY3V0aW9uQ29udGV4dDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBleGVjdXRpb25D
b250ZXh0TGlzdCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZXhlY3V0aW9uQ29udGV4
dExpc3Q7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjbGVhckV4ZWN1dGlvbkNvbnRleHRzOiBmdW5j
dGlvbihjb21taXR0aW5nUHJvdmlzaW9uYWxMb2FkKQorICAgIGNsZWFyRXhlY3V0aW9uQ29udGV4
dHMoY29tbWl0dGluZ1Byb3Zpc2lvbmFsTG9hZCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9l
eGVjdXRpb25Db250ZXh0TGlzdC5jb250ZXh0cy5sZW5ndGgpIHsKICAgICAgICAgICAgIHRoaXMu
X2V4ZWN1dGlvbkNvbnRleHRMaXN0LmNsZWFyKCk7CiAgICAgICAgICAgICB0aGlzLmRpc3BhdGNo
RXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRnJhbWUuRXZlbnQuRXhlY3V0aW9uQ29udGV4
dHNDbGVhcmVkLCB7Y29tbWl0dGluZ1Byb3Zpc2lvbmFsTG9hZDohIWNvbW1pdHRpbmdQcm92aXNp
b25hbExvYWR9KTsKICAgICAgICAgfQotICAgIH0sCisgICAgfQogCi0gICAgYWRkRXhlY3V0aW9u
Q29udGV4dDogZnVuY3Rpb24oY29udGV4dCkKKyAgICBhZGRFeGVjdXRpb25Db250ZXh0KGNvbnRl
eHQpCiAgICAgewogICAgICAgICB2YXIgY2hhbmdlZFBhZ2VDb250ZXh0ID0gdGhpcy5fZXhlY3V0
aW9uQ29udGV4dExpc3QuYWRkKGNvbnRleHQpOwogCiAgICAgICAgIGlmIChjaGFuZ2VkUGFnZUNv
bnRleHQpCiAgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNw
ZWN0b3IuRnJhbWUuRXZlbnQuUGFnZUV4ZWN1dGlvbkNvbnRleHRDaGFuZ2VkKTsKLSAgICB9LAor
ICAgIH0KIAogICAgIGdldCBtYWluUmVzb3VyY2UoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRo
aXMuX21haW5SZXNvdXJjZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBwcm92aXNpb25hbE1h
aW5SZXNvdXJjZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcHJvdmlzaW9uYWxNYWlu
UmVzb3VyY2U7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgcGFyZW50RnJhbWUoKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIHRoaXMuX3BhcmVudEZyYW1lOwotICAgIH0sCisgICAgfQogCiAgICAg
Z2V0IGNoaWxkRnJhbWVzKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9jaGlsZEZyYW1l
czsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBkb21Db250ZW50UmVhZHlFdmVudFRpbWVzdGFt
cCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZG9tQ29udGVudFJlYWR5RXZlbnRUaW1l
c3RhbXA7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgbG9hZEV2ZW50VGltZXN0YW1wKCkKICAg
ICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9sb2FkRXZlbnRUaW1lc3RhbXA7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBpc01haW5GcmFtZTogZnVuY3Rpb24oKQorICAgIGlzTWFpbkZyYW1lKCkKICAg
ICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9pc01haW5GcmFtZTsKLSAgICB9LAorICAgIH0KIAot
ICAgIG1hcmtBc01haW5GcmFtZTogZnVuY3Rpb24oKQorICAgIG1hcmtBc01haW5GcmFtZSgpCiAg
ICAgewogICAgICAgICB0aGlzLl9pc01haW5GcmFtZSA9IHRydWU7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICB1bm1hcmtBc01haW5GcmFtZTogZnVuY3Rpb24oKQorICAgIHVubWFya0FzTWFpbkZyYW1l
KCkKICAgICB7CiAgICAgICAgIHRoaXMuX2lzTWFpbkZyYW1lID0gZmFsc2U7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBtYXJrRE9NQ29udGVudFJlYWR5RXZlbnQ6IGZ1bmN0aW9uKHRpbWVzdGFtcCkK
KyAgICBtYXJrRE9NQ29udGVudFJlYWR5RXZlbnQodGltZXN0YW1wKQogICAgIHsKICAgICAgICAg
dGhpcy5fZG9tQ29udGVudFJlYWR5RXZlbnRUaW1lc3RhbXAgPSB0aW1lc3RhbXAgfHwgTmFOOwot
ICAgIH0sCisgICAgfQogCi0gICAgbWFya0xvYWRFdmVudDogZnVuY3Rpb24odGltZXN0YW1wKQor
ICAgIG1hcmtMb2FkRXZlbnQodGltZXN0YW1wKQogICAgIHsKICAgICAgICAgdGhpcy5fbG9hZEV2
ZW50VGltZXN0YW1wID0gdGltZXN0YW1wIHx8IE5hTjsKLSAgICB9LAorICAgIH0KIAotICAgIGlz
RGV0YWNoZWQ6IGZ1bmN0aW9uKCkKKyAgICBpc0RldGFjaGVkKCkKICAgICB7CiAgICAgICAgIHZh
ciBmcmFtZSA9IHRoaXM7CiAgICAgICAgIHdoaWxlIChmcmFtZSkgewpAQCAtMzA3LDE0ICsyODIs
MTQgQEAgV2ViSW5zcGVjdG9yLkZyYW1lLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAg
ICAgIHJldHVybiB0cnVlOwotICAgIH0sCisgICAgfQogCi0gICAgY2hpbGRGcmFtZUZvcklkZW50
aWZpZXI6IGZ1bmN0aW9uKGZyYW1lSWQpCisgICAgY2hpbGRGcmFtZUZvcklkZW50aWZpZXIoZnJh
bWVJZCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9jaGlsZEZyYW1lSWRlbnRpZmllck1h
cFtmcmFtZUlkXSB8fCBudWxsOwotICAgIH0sCisgICAgfQogCi0gICAgYWRkQ2hpbGRGcmFtZTog
ZnVuY3Rpb24oZnJhbWUpCisgICAgYWRkQ2hpbGRGcmFtZShmcmFtZSkKICAgICB7CiAgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KGZyYW1lIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkZyYW1lKTsKICAg
ICAgICAgaWYgKCEoZnJhbWUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuRnJhbWUpKQpAQCAtMzMy
LDkgKzMwNyw5IEBAIFdlYkluc3BlY3Rvci5GcmFtZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIGZy
YW1lLl9wYXJlbnRGcmFtZSA9IHRoaXM7CiAKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9M
aXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkZyYW1lLkV2ZW50LkNoaWxkRnJhbWVXYXNBZGRlZCwge2No
aWxkRnJhbWU6IGZyYW1lfSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZW1vdmVDaGlsZEZyYW1l
OiBmdW5jdGlvbihmcmFtZU9yRnJhbWVJZCkKKyAgICByZW1vdmVDaGlsZEZyYW1lKGZyYW1lT3JG
cmFtZUlkKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoZnJhbWVPckZyYW1lSWQpOwog
CkBAIC0zNTksOSArMzM0LDkgQEAgV2ViSW5zcGVjdG9yLkZyYW1lLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgY2hpbGRGcmFtZS5fcGFyZW50RnJhbWUgPSBudWxsOwogCiAgICAgICAgIHRoaXMuZGlz
cGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5GcmFtZS5FdmVudC5DaGlsZEZyYW1l
V2FzUmVtb3ZlZCwge2NoaWxkRnJhbWV9KTsKLSAgICB9LAorICAgIH0KIAotICAgIHJlbW92ZUFs
bENoaWxkRnJhbWVzOiBmdW5jdGlvbigpCisgICAgcmVtb3ZlQWxsQ2hpbGRGcmFtZXMoKQogICAg
IHsKICAgICAgICAgaWYgKCF0aGlzLl9jaGlsZEZyYW1lcy5sZW5ndGgpCiAgICAgICAgICAgICBy
ZXR1cm47CkBAIC0zNzMsMTQgKzM0OCwxNCBAQCBXZWJJbnNwZWN0b3IuRnJhbWUucHJvdG90eXBl
ID0gewogICAgICAgICB0aGlzLl9jaGlsZEZyYW1lSWRlbnRpZmllck1hcCA9IHt9OwogCiAgICAg
ICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5GcmFtZS5FdmVu
dC5BbGxDaGlsZEZyYW1lc1JlbW92ZWQpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHJlc291
cmNlcygpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2VDb2xsZWN0aW9uLnJl
c291cmNlczsKLSAgICB9LAorICAgIH0KIAotICAgIHJlc291cmNlRm9yVVJMOiBmdW5jdGlvbih1
cmwsIHJlY3Vyc2l2ZWx5U2VhcmNoQ2hpbGRGcmFtZXMpCisgICAgcmVzb3VyY2VGb3JVUkwodXJs
LCByZWN1cnNpdmVseVNlYXJjaENoaWxkRnJhbWVzKQogICAgIHsKICAgICAgICAgdmFyIHJlc291
cmNlID0gdGhpcy5fcmVzb3VyY2VDb2xsZWN0aW9uLnJlc291cmNlRm9yVVJMKHVybCk7CiAgICAg
ICAgIGlmIChyZXNvdXJjZSkKQEAgLTQwNCwxNCArMzc5LDE0IEBAIFdlYkluc3BlY3Rvci5GcmFt
ZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gbnVsbDsKLSAgICB9
LAorICAgIH0KIAotICAgIHJlc291cmNlc1dpdGhUeXBlOiBmdW5jdGlvbih0eXBlKQorICAgIHJl
c291cmNlc1dpdGhUeXBlKHR5cGUpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcmVzb3Vy
Y2VDb2xsZWN0aW9uLnJlc291cmNlc1dpdGhUeXBlKHR5cGUpOwotICAgIH0sCisgICAgfQogCi0g
ICAgYWRkUmVzb3VyY2U6IGZ1bmN0aW9uKHJlc291cmNlKQorICAgIGFkZFJlc291cmNlKHJlc291
cmNlKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQocmVzb3VyY2UgaW5zdGFuY2VvZiBX
ZWJJbnNwZWN0b3IuUmVzb3VyY2UpOwogICAgICAgICBpZiAoIShyZXNvdXJjZSBpbnN0YW5jZW9m
IFdlYkluc3BlY3Rvci5SZXNvdXJjZSkpCkBAIC00MzIsOSArNDA3LDkgQEAgV2ViSW5zcGVjdG9y
LkZyYW1lLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX3Jlc291cmNlQ29sbGVjdGlv
bi5hZGRSZXNvdXJjZShyZXNvdXJjZSk7CiAgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRU
b0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRnJhbWUuRXZlbnQuUmVzb3VyY2VXYXNBZGRlZCwge3Jl
c291cmNlfSk7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAotICAgIHJlbW92ZVJlc291cmNl
OiBmdW5jdGlvbihyZXNvdXJjZU9yVVJMKQorICAgIHJlbW92ZVJlc291cmNlKHJlc291cmNlT3JV
UkwpCiAgICAgewogICAgICAgICAvLyBUaGlzIGRvZXMgbm90IHJlbW92ZSBwcm92aXNpb25hbCBy
ZXNvdXJjZXMuCiAKQEAgLTQ0NSw5ICs0MjAsOSBAQCBXZWJJbnNwZWN0b3IuRnJhbWUucHJvdG90
eXBlID0gewogICAgICAgICB0aGlzLl9kaXNhc3NvY2lhdGVXaXRoUmVzb3VyY2UocmVzb3VyY2Up
OwogCiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5G
cmFtZS5FdmVudC5SZXNvdXJjZVdhc1JlbW92ZWQsIHtyZXNvdXJjZX0pOwotICAgIH0sCisgICAg
fQogCi0gICAgcmVtb3ZlQWxsUmVzb3VyY2VzOiBmdW5jdGlvbigpCisgICAgcmVtb3ZlQWxsUmVz
b3VyY2VzKCkKICAgICB7CiAgICAgICAgIC8vIFRoaXMgZG9lcyBub3QgcmVtb3ZlIHByb3Zpc2lv
bmFsIHJlc291cmNlcywgdXNlIGNsZWFyUHJvdmlzaW9uYWxMb2FkIGZvciB0aGF0LgogCkBAIC00
NjEsNDMgKzQzNiw2MyBAQCBXZWJJbnNwZWN0b3IuRnJhbWUucHJvdG90eXBlID0gewogICAgICAg
ICB0aGlzLl9yZXNvdXJjZUNvbGxlY3Rpb24ucmVtb3ZlQWxsUmVzb3VyY2VzKCk7CiAKICAgICAg
ICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkZyYW1lLkV2ZW50
LkFsbFJlc291cmNlc1JlbW92ZWQpOwotICAgIH0sCisgICAgfQogCi0gICAgc2F2ZUlkZW50aXR5
VG9Db29raWU6IGZ1bmN0aW9uKGNvb2tpZSkKKyAgICBzYXZlSWRlbnRpdHlUb0Nvb2tpZShjb29r
aWUpCiAgICAgewogICAgICAgICBjb29raWVbV2ViSW5zcGVjdG9yLkZyYW1lLk1haW5SZXNvdXJj
ZVVSTENvb2tpZUtleV0gPSB0aGlzLm1haW5SZXNvdXJjZS51cmwuaGFzaDsKICAgICAgICAgY29v
a2llW1dlYkluc3BlY3Rvci5GcmFtZS5Jc01haW5GcmFtZUNvb2tpZUtleV0gPSB0aGlzLl9pc01h
aW5GcmFtZTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAgIF9pc1Byb3Zp
c2lvbmFsUmVzb3VyY2U6IGZ1bmN0aW9uKHJlc291cmNlKQorICAgIF9pc1Byb3Zpc2lvbmFsUmVz
b3VyY2UocmVzb3VyY2UpCiAgICAgewogICAgICAgICByZXR1cm4gKHJlc291cmNlLmxvYWRlcklk
ZW50aWZpZXIgJiYgdGhpcy5fcHJvdmlzaW9uYWxMb2FkZXJJZGVudGlmaWVyICYmIHJlc291cmNl
LmxvYWRlcklkZW50aWZpZXIgPT09IHRoaXMuX3Byb3Zpc2lvbmFsTG9hZGVySWRlbnRpZmllcik7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfYXNzb2NpYXRlV2l0aFJlc291cmNlOiBmdW5jdGlvbihy
ZXNvdXJjZSkKKyAgICBfYXNzb2NpYXRlV2l0aFJlc291cmNlKHJlc291cmNlKQogICAgIHsKICAg
ICAgICAgY29uc29sZS5hc3NlcnQoIXJlc291cmNlLl9wYXJlbnRGcmFtZSk7CiAgICAgICAgIGlm
IChyZXNvdXJjZS5fcGFyZW50RnJhbWUpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAg
cmVzb3VyY2UuX3BhcmVudEZyYW1lID0gdGhpczsKLSAgICB9LAorICAgIH0KIAotICAgIF9kaXNh
c3NvY2lhdGVXaXRoUmVzb3VyY2U6IGZ1bmN0aW9uKHJlc291cmNlKQorICAgIF9kaXNhc3NvY2lh
dGVXaXRoUmVzb3VyY2UocmVzb3VyY2UpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChy
ZXNvdXJjZS5wYXJlbnRGcmFtZSA9PT0gdGhpcyk7CiAgICAgICAgIGlmIChyZXNvdXJjZS5wYXJl
bnRGcmFtZSAhPT0gdGhpcykKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICByZXNvdXJj
ZS5fcGFyZW50RnJhbWUgPSBudWxsOwotICAgIH0sCisgICAgfQogCi0gICAgX2Rpc3BhdGNoTWFp
blJlc291cmNlRGlkQ2hhbmdlRXZlbnQ6IGZ1bmN0aW9uKG9sZE1haW5SZXNvdXJjZSkKKyAgICBf
ZGlzcGF0Y2hNYWluUmVzb3VyY2VEaWRDaGFuZ2VFdmVudChvbGRNYWluUmVzb3VyY2UpCiAgICAg
ewogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRnJh
bWUuRXZlbnQuTWFpblJlc291cmNlRGlkQ2hhbmdlLCB7b2xkTWFpblJlc291cmNlfSk7CiAgICAg
fQogfTsKIAotV2ViSW5zcGVjdG9yLkZyYW1lLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNw
ZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsKK1dlYkluc3BlY3Rvci5GcmFtZS5FdmVudCA9IHsKKyAg
ICBOYW1lRGlkQ2hhbmdlOiAiZnJhbWUtbmFtZS1kaWQtY2hhbmdlIiwKKyAgICBTZWN1cml0eU9y
aWdpbkRpZENoYW5nZTogImZyYW1lLXNlY3VyaXR5LW9yaWdpbi1kaWQtY2hhbmdlIiwKKyAgICBN
YWluUmVzb3VyY2VEaWRDaGFuZ2U6ICJmcmFtZS1tYWluLXJlc291cmNlLWRpZC1jaGFuZ2UiLAor
ICAgIFByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQ6ICJmcmFtZS1wcm92aXNpb25hbC1sb2FkLXN0YXJ0
ZWQiLAorICAgIFByb3Zpc2lvbmFsTG9hZENvbW1pdHRlZDogImZyYW1lLXByb3Zpc2lvbmFsLWxv
YWQtY29tbWl0dGVkIiwKKyAgICBQcm92aXNpb25hbExvYWRDbGVhcmVkOiAiZnJhbWUtcHJvdmlz
aW9uYWwtbG9hZC1jbGVhcmVkIiwKKyAgICBQcm92aXNpb25hbFJlc291cmNlV2FzQWRkZWQ6ICJm
cmFtZS1wcm92aXNpb25hbC1yZXNvdXJjZS13YXMtYWRkZWQiLAorICAgIFJlc291cmNlV2FzQWRk
ZWQ6ICJmcmFtZS1yZXNvdXJjZS13YXMtYWRkZWQiLAorICAgIFJlc291cmNlV2FzUmVtb3ZlZDog
ImZyYW1lLXJlc291cmNlLXdhcy1yZW1vdmVkIiwKKyAgICBBbGxSZXNvdXJjZXNSZW1vdmVkOiAi
ZnJhbWUtYWxsLXJlc291cmNlcy1yZW1vdmVkIiwKKyAgICBDaGlsZEZyYW1lV2FzQWRkZWQ6ICJm
cmFtZS1jaGlsZC1mcmFtZS13YXMtYWRkZWQiLAorICAgIENoaWxkRnJhbWVXYXNSZW1vdmVkOiAi
ZnJhbWUtY2hpbGQtZnJhbWUtd2FzLXJlbW92ZWQiLAorICAgIEFsbENoaWxkRnJhbWVzUmVtb3Zl
ZDogImZyYW1lLWFsbC1jaGlsZC1mcmFtZXMtcmVtb3ZlZCIsCisgICAgUGFnZUV4ZWN1dGlvbkNv
bnRleHRDaGFuZ2VkOiAiZnJhbWUtcGFnZS1leGVjdXRpb24tY29udGV4dC1jaGFuZ2VkIiwKKyAg
ICBFeGVjdXRpb25Db250ZXh0c0NsZWFyZWQ6ICJmcmFtZS1leGVjdXRpb24tY29udGV4dHMtY2xl
YXJlZCIKK307CisKK1dlYkluc3BlY3Rvci5GcmFtZS5UeXBlSWRlbnRpZmllciA9ICJGcmFtZSI7
CitXZWJJbnNwZWN0b3IuRnJhbWUuTWFpblJlc291cmNlVVJMQ29va2llS2V5ID0gImZyYW1lLW1h
aW4tcmVzb3VyY2UtdXJsIjsKK1dlYkluc3BlY3Rvci5GcmFtZS5Jc01haW5GcmFtZUNvb2tpZUtl
eSA9ICJmcmFtZS1pcy1tYWluLWZyYW1lIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9HZW9tZXRyeS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9HZW9tZXRyeS5qcwppbmRleCBlYTVjMDgxLi4wYmZl
Mjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2Rl
bHMvR2VvbWV0cnkuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
TW9kZWxzL0dlb21ldHJ5LmpzCkBAIC0yMyw2MiArMjMsNjYgQEAKICAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuUG9pbnQgPSBmdW5jdGlvbih4
LCB5KQorV2ViSW5zcGVjdG9yLlBvaW50ID0gY2xhc3MgUG9pbnQKK3sKKyAgICBjb25zdHJ1Y3Rv
cih4LCB5KQogICAgIHsKICAgICAgICAgdGhpcy54ID0geCB8fCAwOwogICAgICAgICB0aGlzLnkg
PSB5IHx8IDA7Ci19OworICAgIH0KIAotV2ViSW5zcGVjdG9yLlBvaW50LmZyb21FdmVudCA9IGZ1
bmN0aW9uKGV2ZW50KQorICAgIC8vIFN0YXRpYworCisgICAgc3RhdGljIGZyb21FdmVudChldmVu
dCkKICAgICB7CiAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlBvaW50KGV2ZW50LnBh
Z2VYLCBldmVudC5wYWdlWSk7Ci19OworICAgIH0KIAotV2ViSW5zcGVjdG9yLlBvaW50LmZyb21F
dmVudEluRWxlbWVudCA9IGZ1bmN0aW9uKGV2ZW50LCBlbGVtZW50KQorICAgIHN0YXRpYyBmcm9t
RXZlbnRJbkVsZW1lbnQoZXZlbnQsIGVsZW1lbnQpCiAgICAgewogICAgICAgICB2YXIgd2tQb2lu
dCA9IHdpbmRvdy53ZWJraXRDb252ZXJ0UG9pbnRGcm9tUGFnZVRvTm9kZShlbGVtZW50LCBuZXcg
V2ViS2l0UG9pbnQoZXZlbnQucGFnZVgsIGV2ZW50LnBhZ2VZKSk7CiAgICAgICAgIHJldHVybiBu
ZXcgV2ViSW5zcGVjdG9yLlBvaW50KHdrUG9pbnQueCwgd2tQb2ludC55KTsKLX07CisgICAgfQog
Ci1XZWJJbnNwZWN0b3IuUG9pbnQucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJ
bnNwZWN0b3IuUG9pbnQsCisgICAgLy8gUHVibGljCiAKLSAgICB0b1N0cmluZyA6IGZ1bmN0aW9u
KCkKKyAgICB0b1N0cmluZygpCiAgICAgewogICAgICAgICByZXR1cm4gIldlYkluc3BlY3Rvci5Q
b2ludFsiICsgdGhpcy54ICsgIiwiICsgdGhpcy55ICsgIl0iOwotICAgIH0sCisgICAgfQogCi0g
ICAgY29weTogZnVuY3Rpb24oKQorICAgIGNvcHkoKQogICAgIHsKICAgICAgICAgcmV0dXJuIG5l
dyBXZWJJbnNwZWN0b3IuUG9pbnQodGhpcy54LCB0aGlzLnkpOwotICAgIH0sCisgICAgfQogCi0g
ICAgZXF1YWxzOiBmdW5jdGlvbihhbm90aGVyUG9pbnQpCisgICAgZXF1YWxzKGFub3RoZXJQb2lu
dCkKICAgICB7CiAgICAgICAgIHJldHVybiAodGhpcy54ID09PSBhbm90aGVyUG9pbnQueCAmJiB0
aGlzLnkgPT09IGFub3RoZXJQb2ludC55KTsKICAgICB9CiB9OwogCi1XZWJJbnNwZWN0b3IuU2l6
ZSA9IGZ1bmN0aW9uKHdpZHRoLCBoZWlnaHQpCitXZWJJbnNwZWN0b3IuU2l6ZSA9IGNsYXNzIFNp
emUKK3sKKyAgICBjb25zdHJ1Y3Rvcih3aWR0aCwgaGVpZ2h0KQogICAgIHsKICAgICAgICAgdGhp
cy53aWR0aCA9IHdpZHRoIHx8IDA7CiAgICAgICAgIHRoaXMuaGVpZ2h0ID0gaGVpZ2h0IHx8IDA7
Ci19OworICAgIH0KIAotV2ViSW5zcGVjdG9yLlNpemUucHJvdG90eXBlID0gewotICAgIGNvbnN0
cnVjdG9yOiBXZWJJbnNwZWN0b3IuU2l6ZSwKKyAgICAvLyBQdWJsaWMKIAotICAgIHRvU3RyaW5n
OiBmdW5jdGlvbigpCisgICAgdG9TdHJpbmcoKQogICAgIHsKICAgICAgICAgcmV0dXJuICJXZWJJ
bnNwZWN0b3IuU2l6ZVsiICsgdGhpcy53aWR0aCArICIsIiArIHRoaXMuaGVpZ2h0ICsgIl0iOwot
ICAgIH0sCisgICAgfQogCi0gICAgY29weTogZnVuY3Rpb24oKQorICAgIGNvcHkoKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuU2l6ZSh0aGlzLndpZHRoLCB0aGlzLmhl
aWdodCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBlcXVhbHM6IGZ1bmN0aW9uKGFub3RoZXJTaXpl
KQorICAgIGVxdWFscyhhbm90aGVyU2l6ZSkKICAgICB7CiAgICAgICAgIHJldHVybiAodGhpcy53
aWR0aCA9PT0gYW5vdGhlclNpemUud2lkdGggJiYgdGhpcy5oZWlnaHQgPT09IGFub3RoZXJTaXpl
LmhlaWdodCk7CiAgICAgfQpAQCAtODcsNDQgKzkxLDQ3IEBAIFdlYkluc3BlY3Rvci5TaXplLnBy
b3RvdHlwZSA9IHsKIFdlYkluc3BlY3Rvci5TaXplLlpFUk9fU0laRSA9IG5ldyBXZWJJbnNwZWN0
b3IuU2l6ZSgwLCAwKTsKIAogCi1XZWJJbnNwZWN0b3IuUmVjdCA9IGZ1bmN0aW9uKHgsIHksIHdp
ZHRoLCBoZWlnaHQpCitXZWJJbnNwZWN0b3IuUmVjdCA9IGNsYXNzIFJlY3QKK3sKKyAgICBjb25z
dHJ1Y3Rvcih4LCB5LCB3aWR0aCwgaGVpZ2h0KQogICAgIHsKICAgICAgICAgdGhpcy5vcmlnaW4g
PSBuZXcgV2ViSW5zcGVjdG9yLlBvaW50KHggfHwgMCwgeSB8fCAwKTsKICAgICAgICAgdGhpcy5z
aXplID0gbmV3IFdlYkluc3BlY3Rvci5TaXplKHdpZHRoIHx8IDAsIGhlaWdodCB8fCAwKTsKLX07
CisgICAgfQogCi1XZWJJbnNwZWN0b3IuUmVjdC5yZWN0RnJvbUNsaWVudFJlY3QgPSBmdW5jdGlv
bihjbGllbnRSZWN0KQorICAgIC8vIFN0YXRpYworCisgICAgc3RhdGljIHJlY3RGcm9tQ2xpZW50
UmVjdChjbGllbnRSZWN0KQogICAgIHsKICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3Iu
UmVjdChjbGllbnRSZWN0LmxlZnQsIGNsaWVudFJlY3QudG9wLCBjbGllbnRSZWN0LndpZHRoLCBj
bGllbnRSZWN0LmhlaWdodCk7Ci19OworICAgIH0KIAotV2ViSW5zcGVjdG9yLlJlY3QudW5pb25P
ZlJlY3RzID0gZnVuY3Rpb24ocmVjdHMpCisgICAgc3RhdGljIHVuaW9uT2ZSZWN0cyhyZWN0cykK
ICAgICB7CiAgICAgICAgIHZhciB1bmlvbiA9IHJlY3RzWzBdOwogICAgICAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHJlY3RzLmxlbmd0aDsgKytpKQogICAgICAgICAgICAgdW5pb24gPSB1bmlvbi51
bmlvbldpdGhSZWN0KHJlY3RzW2ldKTsKICAgICAgICAgcmV0dXJuIHVuaW9uOwotfTsKKyAgICB9
CiAKLVdlYkluc3BlY3Rvci5SZWN0LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2Vi
SW5zcGVjdG9yLlJlY3QsCisgICAgLy8gUHVibGljCiAKLSAgICB0b1N0cmluZzogZnVuY3Rpb24o
KQorICAgIHRvU3RyaW5nKCkKICAgICB7CiAgICAgICAgIHJldHVybiAiV2ViSW5zcGVjdG9yLlJl
Y3RbIiArIFt0aGlzLm9yaWdpbi54LCB0aGlzLm9yaWdpbi55LCB0aGlzLnNpemUud2lkdGgsIHRo
aXMuc2l6ZS5oZWlnaHRdLmpvaW4oIiwgIikgKyAiXSI7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBj
b3B5OiBmdW5jdGlvbigpCisgICAgY29weSgpCiAgICAgewogICAgICAgICByZXR1cm4gbmV3IFdl
Ykluc3BlY3Rvci5SZWN0KHRoaXMub3JpZ2luLngsIHRoaXMub3JpZ2luLnksIHRoaXMuc2l6ZS53
aWR0aCwgdGhpcy5zaXplLmhlaWdodCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBlcXVhbHM6IGZ1
bmN0aW9uKGFub3RoZXJSZWN0KQorICAgIGVxdWFscyhhbm90aGVyUmVjdCkKICAgICB7CiAgICAg
ICAgIHJldHVybiAodGhpcy5vcmlnaW4uZXF1YWxzKGFub3RoZXJSZWN0Lm9yaWdpbikgJiYgdGhp
cy5zaXplLmVxdWFscyhhbm90aGVyUmVjdC5zaXplKSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBp
bnNldDogZnVuY3Rpb24oaW5zZXRzKQorICAgIGluc2V0KGluc2V0cykKICAgICB7CiAgICAgICAg
IHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlJlY3QoCiAgICAgICAgICAgICB0aGlzLm9yaWdpbi54
ICsgaW5zZXRzLmxlZnQsCkBAIC0xMzIsOSArMTM5LDkgQEAgV2ViSW5zcGVjdG9yLlJlY3QucHJv
dG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5zaXplLndpZHRoIC0gaW5zZXRzLmxlZnQgLSBp
bnNldHMucmlnaHQsCiAgICAgICAgICAgICB0aGlzLnNpemUuaGVpZ2h0IC0gaW5zZXRzLnRvcCAt
IGluc2V0cy5ib3R0b20KICAgICAgICAgKTsKLSAgICB9LAorICAgIH0KIAotICAgIHBhZDogZnVu
Y3Rpb24ocGFkZGluZykKKyAgICBwYWQocGFkZGluZykKICAgICB7CiAgICAgICAgIHJldHVybiBu
ZXcgV2ViSW5zcGVjdG9yLlJlY3QoCiAgICAgICAgICAgICB0aGlzLm9yaWdpbi54IC0gcGFkZGlu
ZywKQEAgLTE0MiwzOSArMTQ5LDM5IEBAIFdlYkluc3BlY3Rvci5SZWN0LnByb3RvdHlwZSA9IHsK
ICAgICAgICAgICAgIHRoaXMuc2l6ZS53aWR0aCArIHBhZGRpbmcgKiAyLAogICAgICAgICAgICAg
dGhpcy5zaXplLmhlaWdodCArIHBhZGRpbmcgKiAyCiAgICAgICAgICk7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBtaW5YOiBmdW5jdGlvbigpCisgICAgbWluWCgpCiAgICAgewogICAgICAgICByZXR1
cm4gdGhpcy5vcmlnaW4ueDsKLSAgICB9LAorICAgIH0KIAotICAgIG1pblk6IGZ1bmN0aW9uKCkK
KyAgICBtaW5ZKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLm9yaWdpbi55OwotICAgIH0s
CisgICAgfQogCi0gICAgbWlkWDogZnVuY3Rpb24oKQorICAgIG1pZFgoKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHRoaXMub3JpZ2luLnggKyAodGhpcy5zaXplLndpZHRoIC8gMik7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBtaWRZOiBmdW5jdGlvbigpCisgICAgbWlkWSgpCiAgICAgewogICAgICAg
ICByZXR1cm4gdGhpcy5vcmlnaW4ueSArICh0aGlzLnNpemUuaGVpZ2h0IC8gMik7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBtYXhYOiBmdW5jdGlvbigpCisgICAgbWF4WCgpCiAgICAgewogICAgICAg
ICByZXR1cm4gdGhpcy5vcmlnaW4ueCArIHRoaXMuc2l6ZS53aWR0aDsKLSAgICB9LAorICAgIH0K
IAotICAgIG1heFk6IGZ1bmN0aW9uKCkKKyAgICBtYXhZKCkKICAgICB7CiAgICAgICAgIHJldHVy
biB0aGlzLm9yaWdpbi55ICsgdGhpcy5zaXplLmhlaWdodDsKLSAgICB9LAorICAgIH0KIAotICAg
IGludGVyc2VjdGlvbldpdGhSZWN0OiBmdW5jdGlvbihyZWN0KQorICAgIGludGVyc2VjdGlvbldp
dGhSZWN0KHJlY3QpCiAgICAgewogICAgICAgICB2YXIgeDEgPSBNYXRoLm1heCh0aGlzLm1pblgo
KSwgcmVjdC5taW5YKCkpOwogICAgICAgICB2YXIgeDIgPSBNYXRoLm1pbih0aGlzLm1heFgoKSwg
cmVjdC5tYXhYKCkpOwpAQCAtMTkwLDE4ICsxOTcsMTggQEAgV2ViSW5zcGVjdG9yLlJlY3QucHJv
dG90eXBlID0gewogICAgICAgICBpbnRlcnNlY3Rpb24ub3JpZ2luLnkgPSB5MTsKICAgICAgICAg
aW50ZXJzZWN0aW9uLnNpemUuaGVpZ2h0ID0geTIgLSB5MTsKICAgICAgICAgcmV0dXJuIGludGVy
c2VjdGlvbjsKLSAgICB9LAorICAgIH0KIAotICAgIHVuaW9uV2l0aFJlY3Q6IGZ1bmN0aW9uKHJl
Y3QpCisgICAgdW5pb25XaXRoUmVjdChyZWN0KQogICAgIHsKICAgICAgICAgdmFyIHggPSBNYXRo
Lm1pbih0aGlzLm1pblgoKSwgcmVjdC5taW5YKCkpOwogICAgICAgICB2YXIgeSA9IE1hdGgubWlu
KHRoaXMubWluWSgpLCByZWN0Lm1pblkoKSk7CiAgICAgICAgIHZhciB3aWR0aCA9IE1hdGgubWF4
KHRoaXMubWF4WCgpLCByZWN0Lm1heFgoKSkgLSB4OwogICAgICAgICB2YXIgaGVpZ2h0ID0gTWF0
aC5tYXgodGhpcy5tYXhZKCksIHJlY3QubWF4WSgpKSAtIHk7CiAgICAgICAgIHJldHVybiBuZXcg
V2ViSW5zcGVjdG9yLlJlY3QoeCwgeSwgd2lkdGgsIGhlaWdodCk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICByb3VuZDogZnVuY3Rpb24oKQorICAgIHJvdW5kKCkKICAgICB7CiAgICAgICAgIHJldHVy
biBuZXcgV2ViSW5zcGVjdG9yLlJlY3QoCiAgICAgICAgICAgICBNYXRoLmZsb29yKHRoaXMub3Jp
Z2luLngpLApAQCAtMjE1LDcgKzIyMiw5IEBAIFdlYkluc3BlY3Rvci5SZWN0LnByb3RvdHlwZSA9
IHsKIFdlYkluc3BlY3Rvci5SZWN0LlpFUk9fUkVDVCA9IG5ldyBXZWJJbnNwZWN0b3IuUmVjdCgw
LCAwLCAwLCAwKTsKIAogCi1XZWJJbnNwZWN0b3IuRWRnZUluc2V0cyA9IGZ1bmN0aW9uKHRvcCwg
cmlnaHQsIGJvdHRvbSwgbGVmdCkKK1dlYkluc3BlY3Rvci5FZGdlSW5zZXRzID0gY2xhc3MgRWRn
ZUluc2V0cworeworICAgIGNvbnN0cnVjdG9yKHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdCkKICAg
ICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGFyZ3VtZW50cy5sZW5ndGggPT09IDEgfHwgYXJn
dW1lbnRzLmxlbmd0aCA9PT0gNCk7CiAKQEAgLTIzMCwxOCArMjM5LDE3IEBAIFdlYkluc3BlY3Rv
ci5FZGdlSW5zZXRzID0gZnVuY3Rpb24odG9wLCByaWdodCwgYm90dG9tLCBsZWZ0KQogICAgICAg
ICAgICAgdGhpcy5ib3R0b20gPSBib3R0b207CiAgICAgICAgICAgICB0aGlzLmxlZnQgPSBsZWZ0
OwogICAgICAgICB9Ci19OworICAgIH0KIAotV2ViSW5zcGVjdG9yLkVkZ2VJbnNldHMucHJvdG90
eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuRWRnZUluc2V0cywKKyAgICAv
LyBQdWJsaWMKIAotICAgIGVxdWFsczogZnVuY3Rpb24oYW5vdGhlckluc2V0KQorICAgIGVxdWFs
cyhhbm90aGVySW5zZXQpCiAgICAgewogICAgICAgICByZXR1cm4gKHRoaXMudG9wID09PSBhbm90
aGVySW5zZXQudG9wICYmIHRoaXMucmlnaHQgPT09IGFub3RoZXJJbnNldC5yaWdodCAmJgogICAg
ICAgICAgICAgICAgIHRoaXMuYm90dG9tID09PSBhbm90aGVySW5zZXQuYm90dG9tICYmIHRoaXMu
bGVmdCA9PT0gYW5vdGhlckluc2V0LmxlZnQpOwotICAgIH0sCisgICAgfQogCi0gICAgY29weTog
ZnVuY3Rpb24oKQorICAgIGNvcHkoKQogICAgIHsKICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNw
ZWN0b3IuRWRnZUluc2V0cyh0aGlzLnRvcCwgdGhpcy5yaWdodCwgdGhpcy5ib3R0b20sIHRoaXMu
bGVmdCk7CiAgICAgfQpAQCAtMjU0LDcgKzI2Miw5IEBAIFdlYkluc3BlY3Rvci5SZWN0RWRnZSA9
IHsKICAgICBNQVhfWSA6IDMKIH07CiAKLVdlYkluc3BlY3Rvci5RdWFkID0gZnVuY3Rpb24ocXVh
ZCkKK1dlYkluc3BlY3Rvci5RdWFkID0gY2xhc3MgUXVhZAoreworICAgIGNvbnN0cnVjdG9yKHF1
YWQpCiAgICAgewogICAgICAgICB0aGlzLnBvaW50cyA9IFsKICAgICAgICAgICAgIG5ldyBXZWJJ
bnNwZWN0b3IuUG9pbnQocXVhZFswXSwgcXVhZFsxXSksIC8vIHRvcCBsZWZ0CkBAIC0yNjUsMTIg
KzI3NSwxMSBAQCBXZWJJbnNwZWN0b3IuUXVhZCA9IGZ1bmN0aW9uKHF1YWQpCiAKICAgICAgICAg
dGhpcy53aWR0aCA9IE1hdGgucm91bmQoTWF0aC5zcXJ0KE1hdGgucG93KHF1YWRbMF0gLSBxdWFk
WzJdLCAyKSArIE1hdGgucG93KHF1YWRbMV0gLSBxdWFkWzNdLCAyKSkpOwogICAgICAgICB0aGlz
LmhlaWdodCA9IE1hdGgucm91bmQoTWF0aC5zcXJ0KE1hdGgucG93KHF1YWRbMF0gLSBxdWFkWzZd
LCAyKSArIE1hdGgucG93KHF1YWRbMV0gLSBxdWFkWzddLCAyKSkpOwotfTsKKyAgICB9CiAKLVdl
Ykluc3BlY3Rvci5RdWFkLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVj
dG9yLlF1YWQsCisgICAgLy8gUHVibGljCiAKLSAgICB0b1Byb3RvY29sOiBmdW5jdGlvbigpCisg
ICAgdG9Qcm90b2NvbCgpCiAgICAgewogICAgICAgICByZXR1cm4gWwogICAgICAgICAgICAgdGhp
cy5wb2ludHNbMF0ueCwgdGhpcy5wb2ludHNbMF0ueSwKQEAgLTI4MSwxNSArMjkwLDE2IEBAIFdl
Ykluc3BlY3Rvci5RdWFkLnByb3RvdHlwZSA9IHsKICAgICB9CiB9OwogCi1XZWJJbnNwZWN0b3Iu
UG9seWdvbiA9IGZ1bmN0aW9uKHBvaW50cykKK1dlYkluc3BlY3Rvci5Qb2x5Z29uID0gY2xhc3Mg
UG9seWdvbgoreworICAgIGNvbnN0cnVjdG9yKHBvaW50cykKICAgICB7CiAgICAgICAgIHRoaXMu
cG9pbnRzID0gcG9pbnRzOwogICAgIH0KIAotV2ViSW5zcGVjdG9yLlBvbHlnb24ucHJvdG90eXBl
ID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuUG9seWdvbiwKKyAgICAvLyBQdWJs
aWMKIAotICAgIGJvdW5kczogZnVuY3Rpb24oKQorICAgIGJvdW5kcygpCiAgICAgewogICAgICAg
ICB2YXIgbWluWCA9IE51bWJlci5NQVhfVkFMVUU7CiAgICAgICAgIHZhciBtaW5ZID0gTnVtYmVy
Lk1BWF9WQUxVRTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01vZGVscy9HcmFkaWVudC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01vZGVscy9HcmFkaWVudC5qcwppbmRleCA3MjA0ZGViLi43YTJkOTMyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvR3JhZGllbnQuanMK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0dyYWRpZW50
LmpzCkBAIC0yMywxMyArMjMsMTQgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCisvLyBGSVhNRTogQ29udmVydCB0byBjbGFzcz8KIFdlYkluc3BlY3Rvci5HcmFk
aWVudCA9IHsKICAgICBUeXBlczogewogICAgICAgICBMaW5lYXI6ICJsaW5lYXItZ3JhZGllbnQi
LAogICAgICAgICBSYWRpYWw6ICJyYWRpYWwtZ3JhZGllbnQiCiAgICAgfSwKIAotICAgIGZyb21T
dHJpbmc6IGZ1bmN0aW9uKGNzc1N0cmluZykKKyAgICBmcm9tU3RyaW5nKGNzc1N0cmluZykKICAg
ICB7CiAgICAgICAgIHZhciB0eXBlOwogICAgICAgICB2YXIgb3BlbmluZ1BhcmVudGhlc2lzSW5k
ZXggPSBjc3NTdHJpbmcuaW5kZXhPZigiKCIpOwpAQCAtOTUsNyArOTYsNyBAQCBXZWJJbnNwZWN0
b3IuR3JhZGllbnQgPSB7CiAgICAgICAgIHJldHVybiBncmFkaWVudDsKICAgICB9LAogCi0gICAg
c3RvcHNXaXRoQ29tcG9uZW50czogZnVuY3Rpb24oY29tcG9uZW50cykKKyAgICBzdG9wc1dpdGhD
b21wb25lbnRzKGNvbXBvbmVudHMpCiAgICAgewogICAgICAgICAvLyBGSVhNRTogaGFuZGxlIGxl
bmd0aHMuCiAgICAgICAgIHZhciBzdG9wcyA9IGNvbXBvbmVudHMubWFwKGZ1bmN0aW9uKGNvbXBv
bmVudCkgewpAQCAtMTMxLDcgKzEzMiw3IEBAIFdlYkluc3BlY3Rvci5HcmFkaWVudCA9IHsKICAg
ICAgICAgcmV0dXJuIHN0b3BzOwogICAgIH0sCiAKLSAgICBzdHJpbmdGcm9tU3RvcHM6IGZ1bmN0
aW9uKHN0b3BzKQorICAgIHN0cmluZ0Zyb21TdG9wcyhzdG9wcykKICAgICB7CiAgICAgICAgIHZh
ciBjb3VudCA9IHN0b3BzLmxlbmd0aCAtIDE7CiAgICAgICAgIHJldHVybiBzdG9wcy5tYXAoZnVu
Y3Rpb24oc3RvcCwgaW5kZXgpIHsKQEAgLTE0MywxNCArMTQ0LDE4IEBAIFdlYkluc3BlY3Rvci5H
cmFkaWVudCA9IHsKICAgICB9CiB9OwogCi1XZWJJbnNwZWN0b3IuTGluZWFyR3JhZGllbnQgPSBm
dW5jdGlvbihhbmdsZSwgc3RvcHMpCitXZWJJbnNwZWN0b3IuTGluZWFyR3JhZGllbnQgPSBjbGFz
cyBMaW5lYXJHcmFkaWVudAoreworICAgIGNvbnN0cnVjdG9yKGFuZ2xlLCBzdG9wcykKICAgICB7
CiAgICAgICAgIHRoaXMudHlwZSA9IFdlYkluc3BlY3Rvci5HcmFkaWVudC5UeXBlcy5MaW5lYXI7
CiAgICAgICAgIHRoaXMuYW5nbGUgPSBhbmdsZTsKICAgICAgICAgdGhpcy5zdG9wcyA9IHN0b3Bz
OwotfTsKKyAgICB9CiAKLVdlYkluc3BlY3Rvci5MaW5lYXJHcmFkaWVudC5saW5lYXJHcmFkaWVu
dFdpdGhDb21wb25lbnRzID0gZnVuY3Rpb24oY29tcG9uZW50cykKKyAgICAvLyBTdGF0aWMKKwor
ICAgIHN0YXRpYyBsaW5lYXJHcmFkaWVudFdpdGhDb21wb25lbnRzKGNvbXBvbmVudHMpCiAgICAg
ewogICAgICAgICB2YXIgYW5nbGUgPSAxODA7CiAKQEAgLTIwMCwxNyArMjA1LDE2IEBAIFdlYklu
c3BlY3Rvci5MaW5lYXJHcmFkaWVudC5saW5lYXJHcmFkaWVudFdpdGhDb21wb25lbnRzID0gZnVu
Y3Rpb24oY29tcG9uZW50cykKICAgICAgICAgICAgIHJldHVybiBudWxsOwogCiAgICAgICAgIHJl
dHVybiBuZXcgV2ViSW5zcGVjdG9yLkxpbmVhckdyYWRpZW50KGFuZ2xlLCBzdG9wcyk7Ci19Owor
ICAgIH0KIAotV2ViSW5zcGVjdG9yLkxpbmVhckdyYWRpZW50LnByb3RvdHlwZSA9IHsKLSAgICBj
b25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkxpbmVhckdyYWRpZW50LAorICAgIC8vIFB1YmxpYwog
Ci0gICAgY29weTogZnVuY3Rpb24oKQorICAgIGNvcHkoKQogICAgIHsKICAgICAgICAgcmV0dXJu
IG5ldyBXZWJJbnNwZWN0b3IuTGluZWFyR3JhZGllbnQodGhpcy5hbmdsZSwgdGhpcy5zdG9wcy5j
b25jYXQoKSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB0b1N0cmluZzogZnVuY3Rpb24oKQorICAg
IHRvU3RyaW5nKCkKICAgICB7CiAgICAgICAgIHZhciBzdHIgPSAiIjsKIApAQCAtMjQwLDE0ICsy
NDQsMTggQEAgV2ViSW5zcGVjdG9yLkxpbmVhckdyYWRpZW50LnByb3RvdHlwZSA9IHsKICAgICB9
CiB9OwogCi1XZWJJbnNwZWN0b3IuUmFkaWFsR3JhZGllbnQgPSBmdW5jdGlvbihzaXppbmcsIHN0
b3BzKQorV2ViSW5zcGVjdG9yLlJhZGlhbEdyYWRpZW50ID0gY2xhc3MgUmFkaWFsR3JhZGllbnQK
K3sKKyAgICBjb25zdHJ1Y3RvcihzaXppbmcsIHN0b3BzKQogICAgIHsKICAgICAgICAgdGhpcy50
eXBlID0gV2ViSW5zcGVjdG9yLkdyYWRpZW50LlR5cGVzLlJhZGlhbDsKICAgICAgICAgdGhpcy5z
aXppbmcgPSBzaXppbmc7CiAgICAgICAgIHRoaXMuc3RvcHMgPSBzdG9wczsKLX07CisgICAgfQog
Ci1XZWJJbnNwZWN0b3IuUmFkaWFsR3JhZGllbnQucmFkaWFsR3JhZGllbnRXaXRoQ29tcG9uZW50
cyA9IGZ1bmN0aW9uKGNvbXBvbmVudHMpCisgICAgLy8gU3RhdGljCisKKyAgICBzdGF0aWMgcmFk
aWFsR3JhZGllbnRXaXRoQ29tcG9uZW50cyhjb21wb25lbnRzKQogICAgIHsKICAgICAgICAgdmFy
IHNpemluZyA9ICFXZWJJbnNwZWN0b3IuQ29sb3IuZnJvbVN0cmluZyhjb21wb25lbnRzWzBdLmpv
aW4oIiAiKSkgPyBjb21wb25lbnRzLnNoaWZ0KCkuam9pbigiICIpIDogIiI7CiAKQEAgLTI1Niwx
NyArMjY0LDE2IEBAIFdlYkluc3BlY3Rvci5SYWRpYWxHcmFkaWVudC5yYWRpYWxHcmFkaWVudFdp
dGhDb21wb25lbnRzID0gZnVuY3Rpb24oY29tcG9uZW50cykKICAgICAgICAgICAgIHJldHVybiBu
dWxsOwogCiAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlJhZGlhbEdyYWRpZW50KHNp
emluZywgc3RvcHMpOwotfTsKKyAgICB9CiAKLVdlYkluc3BlY3Rvci5SYWRpYWxHcmFkaWVudC5w
cm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5SYWRpYWxHcmFkaWVu
dCwKKyAgICAvLyBQdWJsaWMKIAotICAgIGNvcHk6IGZ1bmN0aW9uKCkKKyAgICBjb3B5KCkKICAg
ICB7CiAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlJhZGlhbEdyYWRpZW50KHRoaXMu
c2l6aW5nLCB0aGlzLnN0b3BzLmNvbmNhdCgpKTsKLSAgICB9LAorICAgIH0KIAotICAgIHRvU3Ry
aW5nOiBmdW5jdGlvbigpCisgICAgdG9TdHJpbmcoKQogICAgIHsKICAgICAgICAgdmFyIHN0ciA9
IHRoaXMuc2l6aW5nOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Nb2RlbHMvSW5kZXhlZERhdGFiYXNlLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvTW9kZWxzL0luZGV4ZWREYXRhYmFzZS5qcwppbmRleCAwZDlkZTc4Li4y
MjRkYTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9N
b2RlbHMvSW5kZXhlZERhdGFiYXNlLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL01vZGVscy9JbmRleGVkRGF0YWJhc2UuanMKQEAgLTIzLDkgKzIzLDExIEBACiAg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLklu
ZGV4ZWREYXRhYmFzZSA9IGZ1bmN0aW9uKG5hbWUsIHNlY3VyaXR5T3JpZ2luLCB2ZXJzaW9uLCBv
YmplY3RTdG9yZXMpCitXZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFiYXNlID0gY2xhc3MgSW5kZXhl
ZERhdGFiYXNlIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogewotICAgIFdlYkluc3BlY3Rv
ci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICBjb25zdHJ1Y3RvcihuYW1lLCBzZWN1cml0eU9yaWdp
biwgdmVyc2lvbiwgb2JqZWN0U3RvcmVzKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKIAogICAg
ICAgICB0aGlzLl9uYW1lID0gbmFtZTsKICAgICAgICAgdGhpcy5fc2VjdXJpdHlPcmlnaW4gPSBz
ZWN1cml0eU9yaWdpbjsKQEAgLTM1LDQ2ICszNyw0MiBAQCBXZWJJbnNwZWN0b3IuSW5kZXhlZERh
dGFiYXNlID0gZnVuY3Rpb24obmFtZSwgc2VjdXJpdHlPcmlnaW4sIHZlcnNpb24sIG9iamVjdFN0
bwogCiAgICAgICAgIGZvciAodmFyIG9iamVjdFN0b3JlIG9mIHRoaXMuX29iamVjdFN0b3JlcykK
ICAgICAgICAgICAgIG9iamVjdFN0b3JlLmVzdGFibGlzaFJlbGF0aW9uc2hpcCh0aGlzKTsKLX07
Ci0KLVdlYkluc3BlY3Rvci5JbmRleGVkRGF0YWJhc2UuVHlwZUlkZW50aWZpZXIgPSAiaW5kZXhl
ZC1kYXRhYmFzZSI7Ci1XZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFiYXNlLk5hbWVDb29raWVLZXkg
PSAiaW5kZXhlZC1kYXRhYmFzZS1uYW1lIjsKLVdlYkluc3BlY3Rvci5JbmRleGVkRGF0YWJhc2Uu
SG9zdENvb2tpZUtleSA9ICJpbmRleGVkLWRhdGFiYXNlLWhvc3QiOwotCi1XZWJJbnNwZWN0b3Iu
SW5kZXhlZERhdGFiYXNlLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVj
dG9yLkluZGV4ZWREYXRhYmFzZSwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5PYmplY3Qu
cHJvdG90eXBlLAorICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IG5hbWUoKQogICAg
IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX25hbWU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQg
c2VjdXJpdHlPcmlnaW4oKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3NlY3VyaXR5T3Jp
Z2luOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGhvc3QoKQogICAgIHsKICAgICAgICAgcmV0
dXJuIHRoaXMuX2hvc3Q7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgdmVyc2lvbigpCiAgICAg
ewogICAgICAgICByZXR1cm4gdGhpcy5fdmVyc2lvbjsKLSAgICB9LAorICAgIH0KIAogICAgIGdl
dCBvYmplY3RTdG9yZXMoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX29iamVjdFN0b3Jl
czsKLSAgICB9LAorICAgIH0KIAotICAgIHNhdmVJZGVudGl0eVRvQ29va2llOiBmdW5jdGlvbihj
b29raWUpCisgICAgc2F2ZUlkZW50aXR5VG9Db29raWUoY29va2llKQogICAgIHsKICAgICAgICAg
Y29va2llW1dlYkluc3BlY3Rvci5JbmRleGVkRGF0YWJhc2UuTmFtZUNvb2tpZUtleV0gPSB0aGlz
Ll9uYW1lOwogICAgICAgICBjb29raWVbV2ViSW5zcGVjdG9yLkluZGV4ZWREYXRhYmFzZS5Ib3N0
Q29va2llS2V5XSA9IHRoaXMuX2hvc3Q7CiAgICAgfQogfTsKKworV2ViSW5zcGVjdG9yLkluZGV4
ZWREYXRhYmFzZS5UeXBlSWRlbnRpZmllciA9ICJpbmRleGVkLWRhdGFiYXNlIjsKK1dlYkluc3Bl
Y3Rvci5JbmRleGVkRGF0YWJhc2UuTmFtZUNvb2tpZUtleSA9ICJpbmRleGVkLWRhdGFiYXNlLW5h
bWUiOworV2ViSW5zcGVjdG9yLkluZGV4ZWREYXRhYmFzZS5Ib3N0Q29va2llS2V5ID0gImluZGV4
ZWQtZGF0YWJhc2UtaG9zdCI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Nb2RlbHMvSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmUuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvSW5kZXhlZERhdGFiYXNlT2JqZWN0
U3RvcmUuanMKaW5kZXggM2I2MzNkYy4uYjE2MmQzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0luZGV4ZWREYXRhYmFzZU9iamVjdFN0b3Jl
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9JbmRl
eGVkRGF0YWJhc2VPYmplY3RTdG9yZS5qcwpAQCAtMjMsOSArMjMsMTEgQEAKICAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFi
YXNlT2JqZWN0U3RvcmUgPSBmdW5jdGlvbihuYW1lLCBrZXlQYXRoLCBhdXRvSW5jcmVtZW50LCBp
bmRleGVzKQorV2ViSW5zcGVjdG9yLkluZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlID0gY2xhc3Mg
SW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmUgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7
Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIGNvbnN0cnVjdG9yKG5h
bWUsIGtleVBhdGgsIGF1dG9JbmNyZW1lbnQsIGluZGV4ZXMpCisgICAgeworICAgICAgICBzdXBl
cigpOwogCiAgICAgICAgIHRoaXMuX25hbWUgPSBuYW1lOwogICAgICAgICB0aGlzLl9rZXlQYXRo
ID0ga2V5UGF0aDsKQEAgLTM1LDUzICszNyw0OSBAQCBXZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFi
YXNlT2JqZWN0U3RvcmUgPSBmdW5jdGlvbihuYW1lLCBrZXlQYXRoLCBhdXRvSW5jcmVtZW50LAog
CiAgICAgICAgIGZvciAodmFyIGluZGV4IG9mIHRoaXMuX2luZGV4ZXMpCiAgICAgICAgICAgICBp
bmRleC5lc3RhYmxpc2hSZWxhdGlvbnNoaXAodGhpcyk7Ci19OwotCi1XZWJJbnNwZWN0b3IuSW5k
ZXhlZERhdGFiYXNlT2JqZWN0U3RvcmUuVHlwZUlkZW50aWZpZXIgPSAiaW5kZXhlZC1kYXRhYmFz
ZS1vYmplY3Qtc3RvcmUiOwotV2ViSW5zcGVjdG9yLkluZGV4ZWREYXRhYmFzZU9iamVjdFN0b3Jl
Lk5hbWVDb29raWVLZXkgPSAiaW5kZXhlZC1kYXRhYmFzZS1vYmplY3Qtc3RvcmUtbmFtZSI7Ci1X
ZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmUuS2V5UGF0aENvb2tpZUtleSA9
ICJpbmRleGVkLWRhdGFiYXNlLW9iamVjdC1zdG9yZS1rZXktcGF0aCI7Ci0KLVdlYkluc3BlY3Rv
ci5JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZS5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0
b3I6IFdlYkluc3BlY3Rvci5JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZSwKLSAgICBfX3Byb3Rv
X186IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlLAorICAgIH0KIAogICAgIC8vIFB1Ymxp
YwogCiAgICAgZ2V0IG5hbWUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX25hbWU7Ci0g
ICAgfSwKKyAgICB9CiAKICAgICBnZXQga2V5UGF0aCgpCiAgICAgewogICAgICAgICByZXR1cm4g
dGhpcy5fa2V5UGF0aDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBhdXRvSW5jcmVtZW50KCkK
ICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9hdXRvSW5jcmVtZW50OwotICAgIH0sCisgICAg
fQogCiAgICAgZ2V0IHBhcmVudERhdGFiYXNlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlz
Ll9wYXJlbnREYXRhYmFzZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBpbmRleGVzKCkKICAg
ICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9pbmRleGVzOwotICAgIH0sCisgICAgfQogCi0gICAg
c2F2ZUlkZW50aXR5VG9Db29raWU6IGZ1bmN0aW9uKGNvb2tpZSkKKyAgICBzYXZlSWRlbnRpdHlU
b0Nvb2tpZShjb29raWUpCiAgICAgewogICAgICAgICBjb29raWVbV2ViSW5zcGVjdG9yLkluZGV4
ZWREYXRhYmFzZU9iamVjdFN0b3JlLk5hbWVDb29raWVLZXldID0gdGhpcy5fbmFtZTsKICAgICAg
ICAgY29va2llW1dlYkluc3BlY3Rvci5JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZS5LZXlQYXRo
Q29va2llS2V5XSA9IHRoaXMuX2tleVBhdGg7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcm90
ZWN0ZWQKIAotICAgIGVzdGFibGlzaFJlbGF0aW9uc2hpcDogZnVuY3Rpb24ocGFyZW50RGF0YWJh
c2UpCisgICAgZXN0YWJsaXNoUmVsYXRpb25zaGlwKHBhcmVudERhdGFiYXNlKQogICAgIHsKICAg
ICAgICAgdGhpcy5fcGFyZW50RGF0YWJhc2UgPSBwYXJlbnREYXRhYmFzZSB8fCBudWxsOwogICAg
IH0KIH07CisKK1dlYkluc3BlY3Rvci5JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZS5UeXBlSWRl
bnRpZmllciA9ICJpbmRleGVkLWRhdGFiYXNlLW9iamVjdC1zdG9yZSI7CitXZWJJbnNwZWN0b3Iu
SW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmUuTmFtZUNvb2tpZUtleSA9ICJpbmRleGVkLWRhdGFi
YXNlLW9iamVjdC1zdG9yZS1uYW1lIjsKK1dlYkluc3BlY3Rvci5JbmRleGVkRGF0YWJhc2VPYmpl
Y3RTdG9yZS5LZXlQYXRoQ29va2llS2V5ID0gImluZGV4ZWQtZGF0YWJhc2Utb2JqZWN0LXN0b3Jl
LWtleS1wYXRoIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01vZGVscy9JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZUluZGV4LmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0luZGV4ZWREYXRhYmFzZU9iamVjdFN0
b3JlSW5kZXguanMKaW5kZXggMzU1NGI1ZC4uZjUzYmRiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0luZGV4ZWREYXRhYmFzZU9iamVjdFN0
b3JlSW5kZXguanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9k
ZWxzL0luZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlSW5kZXguanMKQEAgLTIzLDYyICsyMyw2MCBA
QAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rv
ci5JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZUluZGV4ID0gZnVuY3Rpb24obmFtZSwga2V5UGF0
aCwgdW5pcXVlLCBtdWx0aUVudHJ5KQorV2ViSW5zcGVjdG9yLkluZGV4ZWREYXRhYmFzZU9iamVj
dFN0b3JlSW5kZXggPSBjbGFzcyBJbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZUluZGV4IGV4dGVu
ZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0
aGlzKTsKKyAgICBjb25zdHJ1Y3RvcihuYW1lLCBrZXlQYXRoLCB1bmlxdWUsIG11bHRpRW50cnkp
CisgICAgeworICAgICAgICBzdXBlcigpOwogCiAgICAgICAgIHRoaXMuX25hbWUgPSBuYW1lOwog
ICAgICAgICB0aGlzLl9rZXlQYXRoID0ga2V5UGF0aDsKICAgICAgICAgdGhpcy5fdW5pcXVlID0g
dW5pcXVlIHx8IGZhbHNlOwogICAgICAgICB0aGlzLl9tdWx0aUVudHJ5ID0gbXVsdGlFbnRyeSB8
fCBmYWxzZTsKICAgICAgICAgdGhpcy5fcGFyZW50T2JqZWN0U3RvcmUgPSBudWxsOwotfTsKLQot
V2ViSW5zcGVjdG9yLkluZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlSW5kZXguVHlwZUlkZW50aWZp
ZXIgPSAiaW5kZXhlZC1kYXRhYmFzZS1vYmplY3Qtc3RvcmUtaW5kZXgiOwotV2ViSW5zcGVjdG9y
LkluZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlSW5kZXguTmFtZUNvb2tpZUtleSA9ICJpbmRleGVk
LWRhdGFiYXNlLW9iamVjdC1zdG9yZS1pbmRleC1uYW1lIjsKLVdlYkluc3BlY3Rvci5JbmRleGVk
RGF0YWJhc2VPYmplY3RTdG9yZUluZGV4LktleVBhdGhDb29raWVLZXkgPSAiaW5kZXhlZC1kYXRh
YmFzZS1vYmplY3Qtc3RvcmUtaW5kZXgta2V5LXBhdGgiOwotCi1XZWJJbnNwZWN0b3IuSW5kZXhl
ZERhdGFiYXNlT2JqZWN0U3RvcmVJbmRleC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6
IFdlYkluc3BlY3Rvci5JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZUluZGV4LAotICAgIF9fcHJv
dG9fXzogV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGUsCisgICAgfQogCiAgICAgLy8gUHVi
bGljCiAKICAgICBnZXQgbmFtZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fbmFtZTsK
LSAgICB9LAorICAgIH0KIAogICAgIGdldCBrZXlQYXRoKCkKICAgICB7CiAgICAgICAgIHJldHVy
biB0aGlzLl9rZXlQYXRoOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHVuaXF1ZSgpCiAgICAg
ewogICAgICAgICByZXR1cm4gdGhpcy5fdW5pcXVlOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0
IG11bHRpRW50cnkoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX211bHRpRW50cnk7Ci0g
ICAgfSwKKyAgICB9CiAKICAgICBnZXQgcGFyZW50T2JqZWN0U3RvcmUoKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHRoaXMuX3BhcmVudE9iamVjdFN0b3JlOwotICAgIH0sCisgICAgfQogCi0gICAg
c2F2ZUlkZW50aXR5VG9Db29raWU6IGZ1bmN0aW9uKGNvb2tpZSkKKyAgICBzYXZlSWRlbnRpdHlU
b0Nvb2tpZShjb29raWUpCiAgICAgewogICAgICAgICBjb29raWVbV2ViSW5zcGVjdG9yLkluZGV4
ZWREYXRhYmFzZU9iamVjdFN0b3JlSW5kZXguTmFtZUNvb2tpZUtleV0gPSB0aGlzLl9uYW1lOwog
ICAgICAgICBjb29raWVbV2ViSW5zcGVjdG9yLkluZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlSW5k
ZXguS2V5UGF0aENvb2tpZUtleV0gPSB0aGlzLl9rZXlQYXRoOwotICAgIH0sCisgICAgfQogCiAg
ICAgLy8gUHJvdGVjdGVkCiAKLSAgICBlc3RhYmxpc2hSZWxhdGlvbnNoaXA6IGZ1bmN0aW9uKHBh
cmVudE9iamVjdFN0b3JlKQorICAgIGVzdGFibGlzaFJlbGF0aW9uc2hpcChwYXJlbnRPYmplY3RT
dG9yZSkKICAgICB7CiAgICAgICAgIHRoaXMuX3BhcmVudE9iamVjdFN0b3JlID0gcGFyZW50T2Jq
ZWN0U3RvcmUgfHwgbnVsbDsKICAgICB9CiB9OworCitXZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFi
YXNlT2JqZWN0U3RvcmVJbmRleC5UeXBlSWRlbnRpZmllciA9ICJpbmRleGVkLWRhdGFiYXNlLW9i
amVjdC1zdG9yZS1pbmRleCI7CitXZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFiYXNlT2JqZWN0U3Rv
cmVJbmRleC5OYW1lQ29va2llS2V5ID0gImluZGV4ZWQtZGF0YWJhc2Utb2JqZWN0LXN0b3JlLWlu
ZGV4LW5hbWUiOworV2ViSW5zcGVjdG9yLkluZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlSW5kZXgu
S2V5UGF0aENvb2tpZUtleSA9ICJpbmRleGVkLWRhdGFiYXNlLW9iamVjdC1zdG9yZS1pbmRleC1r
ZXktcGF0aCI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Nb2RlbHMvSXNzdWVNZXNzYWdlLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvTW9kZWxzL0lzc3VlTWVzc2FnZS5qcwppbmRleCA4ZTNlYjg2Li4zY2Q0M2Q4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvSXNzdWVN
ZXNzYWdlLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVs
cy9Jc3N1ZU1lc3NhZ2UuanMKQEAgLTIzLDkgKzIzLDExIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLklzc3VlTWVzc2FnZSA9IGZ1bmN0
aW9uKHNvdXJjZSwgbGV2ZWwsIHRleHQsIHVybCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBw
YXJhbWV0ZXJzKQorV2ViSW5zcGVjdG9yLklzc3VlTWVzc2FnZSA9IGNsYXNzIElzc3VlTWVzc2Fn
ZSBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIHsKLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0
LmNhbGwodGhpcyk7CisgICAgY29uc3RydWN0b3Ioc291cmNlLCBsZXZlbCwgdGV4dCwgdXJsLCBs
aW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHBhcmFtZXRlcnMpCisgICAgeworICAgICAgICBzdXBl
cigpOwogCiAgICAgICAgIHRoaXMuX2xldmVsID0gbGV2ZWw7CiAgICAgICAgIHRoaXMuX3RleHQg
PSB0ZXh0OwpAQCAtOTcsNjUgKzk5LDExIEBAIFdlYkluc3BlY3Rvci5Jc3N1ZU1lc3NhZ2UgPSBm
dW5jdGlvbihzb3VyY2UsIGxldmVsLCB0ZXh0LCB1cmwsIGxpbmVOdW1iZXIsIGNvbHVtCiAgICAg
ICAgICAgICBjb25zb2xlLmVycm9yKCJVbmtub3duIGlzc3VlIHNvdXJjZToiLCBzb3VyY2UpOwog
ICAgICAgICAgICAgdGhpcy5fdHlwZSA9IFdlYkluc3BlY3Rvci5Jc3N1ZU1lc3NhZ2UuVHlwZS5P
dGhlcklzc3VlOwogICAgICAgICB9Ci19OworICAgIH0KIAotV2ViSW5zcGVjdG9yLklzc3VlTWVz
c2FnZS5MZXZlbCA9IHsKLSAgICBFcnJvcjogImVycm9yIiwKLSAgICBXYXJuaW5nOiAid2Fybmlu
ZyIKLX07CisgICAgLy8gU3RhdGljCiAKLVdlYkluc3BlY3Rvci5Jc3N1ZU1lc3NhZ2UuVHlwZSA9
IHsKLSAgICBTZW1hbnRpY0lzc3VlOiAiaXNzdWUtbWVzc2FnZS10eXBlLXNlbWFudGljLWlzc3Vl
IiwKLSAgICBSYW5nZUlzc3VlOiAiaXNzdWUtbWVzc2FnZS10eXBlLXJhbmdlLWlzc3VlIiwKLSAg
ICBSZWZlcmVuY2VJc3N1ZTogImlzc3VlLW1lc3NhZ2UtdHlwZS1yZWZlcmVuY2UtaXNzdWUiLAot
ICAgIFR5cGVJc3N1ZTogImlzc3VlLW1lc3NhZ2UtdHlwZS10eXBlLWlzc3VlIiwKLSAgICBQYWdl
SXNzdWU6ICJpc3N1ZS1tZXNzYWdlLXR5cGUtcGFnZS1pc3N1ZSIsCi0gICAgTmV0d29ya0lzc3Vl
OiAiaXNzdWUtbWVzc2FnZS10eXBlLW5ldHdvcmstaXNzdWUiLAotICAgIFNlY3VyaXR5SXNzdWU6
ICJpc3N1ZS1tZXNzYWdlLXR5cGUtc2VjdXJpdHktaXNzdWUiLAotICAgIE90aGVySXNzdWU6ICJp
c3N1ZS1tZXNzYWdlLXR5cGUtb3RoZXItaXNzdWUiCi19OwotCi1XZWJJbnNwZWN0b3IuSXNzdWVN
ZXNzYWdlLlR5cGUuX3ByZWZpeFR5cGVNYXAgPSB7Ci0gICAgIlN5bnRheEVycm9yIjogV2ViSW5z
cGVjdG9yLklzc3VlTWVzc2FnZS5UeXBlLlNlbWFudGljSXNzdWUsCi0gICAgIlVSSUVycm9yIjog
V2ViSW5zcGVjdG9yLklzc3VlTWVzc2FnZS5UeXBlLlNlbWFudGljSXNzdWUsCi0gICAgIkV2YWxF
cnJvciI6IFdlYkluc3BlY3Rvci5Jc3N1ZU1lc3NhZ2UuVHlwZS5TZW1hbnRpY0lzc3VlLAotICAg
ICJJTlZBTElEX0NIQVJBQ1RFUl9FUlIiOiBXZWJJbnNwZWN0b3IuSXNzdWVNZXNzYWdlLlR5cGUu
U2VtYW50aWNJc3N1ZSwKLSAgICAiU1lOVEFYX0VSUiI6IFdlYkluc3BlY3Rvci5Jc3N1ZU1lc3Nh
Z2UuVHlwZS5TZW1hbnRpY0lzc3VlLAotCi0gICAgIlJhbmdlRXJyb3IiOiBXZWJJbnNwZWN0b3Iu
SXNzdWVNZXNzYWdlLlR5cGUuUmFuZ2VJc3N1ZSwKLSAgICAiSU5ERVhfU0laRV9FUlIiOiBXZWJJ
bnNwZWN0b3IuSXNzdWVNZXNzYWdlLlR5cGUuUmFuZ2VJc3N1ZSwKLSAgICAiRE9NU1RSSU5HX1NJ
WkVfRVJSIjogV2ViSW5zcGVjdG9yLklzc3VlTWVzc2FnZS5UeXBlLlJhbmdlSXNzdWUsCi0KLSAg
ICAiUmVmZXJlbmNlRXJyb3IiOiBXZWJJbnNwZWN0b3IuSXNzdWVNZXNzYWdlLlR5cGUuUmVmZXJl
bmNlSXNzdWUsCi0gICAgIkhJRVJBUkNIWV9SRVFVRVNUX0VSUiI6IFdlYkluc3BlY3Rvci5Jc3N1
ZU1lc3NhZ2UuVHlwZS5SZWZlcmVuY2VJc3N1ZSwKLSAgICAiSU5WQUxJRF9TVEFURV9FUlIiOiBX
ZWJJbnNwZWN0b3IuSXNzdWVNZXNzYWdlLlR5cGUuUmVmZXJlbmNlSXNzdWUsCi0gICAgIk5PVF9G
T1VORF9FUlIiOiBXZWJJbnNwZWN0b3IuSXNzdWVNZXNzYWdlLlR5cGUuUmVmZXJlbmNlSXNzdWUs
Ci0gICAgIldST05HX0RPQ1VNRU5UX0VSUiI6IFdlYkluc3BlY3Rvci5Jc3N1ZU1lc3NhZ2UuVHlw
ZS5SZWZlcmVuY2VJc3N1ZSwKLQotICAgICJUeXBlRXJyb3IiOiBXZWJJbnNwZWN0b3IuSXNzdWVN
ZXNzYWdlLlR5cGUuVHlwZUlzc3VlLAotICAgICJJTlZBTElEX05PREVfVFlQRV9FUlIiOiBXZWJJ
bnNwZWN0b3IuSXNzdWVNZXNzYWdlLlR5cGUuVHlwZUlzc3VlLAotICAgICJUWVBFX01JU01BVENI
X0VSUiI6IFdlYkluc3BlY3Rvci5Jc3N1ZU1lc3NhZ2UuVHlwZS5UeXBlSXNzdWUsCi0KLSAgICAi
U0VDVVJJVFlfRVJSIjogV2ViSW5zcGVjdG9yLklzc3VlTWVzc2FnZS5UeXBlLlNlY3VyaXR5SXNz
dWUsCi0KLSAgICAiTkVUV09SS19FUlIiOiBXZWJJbnNwZWN0b3IuSXNzdWVNZXNzYWdlLlR5cGUu
TmV0d29ya0lzc3VlLAotCi0gICAgIkFCT1JUX0VSUiI6IFdlYkluc3BlY3Rvci5Jc3N1ZU1lc3Nh
Z2UuVHlwZS5PdGhlcklzc3VlLAotICAgICJEQVRBX0NMT05FX0VSUiI6IFdlYkluc3BlY3Rvci5J
c3N1ZU1lc3NhZ2UuVHlwZS5PdGhlcklzc3VlLAotICAgICJJTlVTRV9BVFRSSUJVVEVfRVJSIjog
V2ViSW5zcGVjdG9yLklzc3VlTWVzc2FnZS5UeXBlLk90aGVySXNzdWUsCi0gICAgIklOVkFMSURf
QUNDRVNTX0VSUiI6IFdlYkluc3BlY3Rvci5Jc3N1ZU1lc3NhZ2UuVHlwZS5PdGhlcklzc3VlLAot
ICAgICJJTlZBTElEX01PRElGSUNBVElPTl9FUlIiOiBXZWJJbnNwZWN0b3IuSXNzdWVNZXNzYWdl
LlR5cGUuT3RoZXJJc3N1ZSwKLSAgICAiTkFNRVNQQUNFX0VSUiI6IFdlYkluc3BlY3Rvci5Jc3N1
ZU1lc3NhZ2UuVHlwZS5PdGhlcklzc3VlLAotICAgICJOT1RfU1VQUE9SVEVEX0VSUiI6IFdlYklu
c3BlY3Rvci5Jc3N1ZU1lc3NhZ2UuVHlwZS5PdGhlcklzc3VlLAotICAgICJOT19EQVRBX0FMTE9X
RURfRVJSIjogV2ViSW5zcGVjdG9yLklzc3VlTWVzc2FnZS5UeXBlLk90aGVySXNzdWUsCi0gICAg
Ik5PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUiI6IFdlYkluc3BlY3Rvci5Jc3N1ZU1lc3NhZ2Uu
VHlwZS5PdGhlcklzc3VlLAotICAgICJRVU9UQV9FWENFRURFRF9FUlIiOiBXZWJJbnNwZWN0b3Iu
SXNzdWVNZXNzYWdlLlR5cGUuT3RoZXJJc3N1ZSwKLSAgICAiVElNRU9VVF9FUlIiOiBXZWJJbnNw
ZWN0b3IuSXNzdWVNZXNzYWdlLlR5cGUuT3RoZXJJc3N1ZSwKLSAgICAiVVJMX01JU01BVENIX0VS
UiI6IFdlYkluc3BlY3Rvci5Jc3N1ZU1lc3NhZ2UuVHlwZS5PdGhlcklzc3VlLAotICAgICJWQUxJ
REFUSU9OX0VSUiI6IFdlYkluc3BlY3Rvci5Jc3N1ZU1lc3NhZ2UuVHlwZS5PdGhlcklzc3VlCi19
OwotCi1XZWJJbnNwZWN0b3IuSXNzdWVNZXNzYWdlLlR5cGUuZGlzcGxheU5hbWUgPSBmdW5jdGlv
bih0eXBlKQorICAgIHN0YXRpYyBkaXNwbGF5TmFtZSh0eXBlKQogICAgIHsKICAgICAgICAgc3dp
dGNoKHR5cGUpIHsKICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuSXNzdWVNZXNzYWdlLlR5cGUu
U2VtYW50aWNJc3N1ZToKQEAgLTE3OCw0MSArMTI2LDM5IEBAIFdlYkluc3BlY3Rvci5Jc3N1ZU1l
c3NhZ2UuVHlwZS5kaXNwbGF5TmFtZSA9IGZ1bmN0aW9uKHR5cGUpCiAgICAgICAgICAgICBjb25z
b2xlLmVycm9yKCJVbmtub3duIGlzc3VlIG1lc3NhZ2UgdHlwZToiLCB0eXBlKTsKICAgICAgICAg
ICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk90aGVyIElzc3VlIik7CiAgICAgICAg
IH0KLX07CisgICAgfQogCi1XZWJJbnNwZWN0b3IuSXNzdWVNZXNzYWdlLnByb3RvdHlwZSA9IHsK
LSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLklzc3VlTWVzc2FnZSwKLSAgICBfX3Byb3Rv
X186IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlLAorICAgIC8vIFB1YmxpYwogCiAgICAg
Z2V0IHR5cGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3R5cGU7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICBnZXQgbGV2ZWwoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2xldmVs
OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHRleHQoKQogICAgIHsKICAgICAgICAgcmV0dXJu
IHRoaXMuX3RleHQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgdXJsKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiB0aGlzLl91cmw7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgbGluZU51bWJl
cigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fbGluZU51bWJlcjsKLSAgICB9LAorICAg
IH0KIAogICAgIGdldCBjb2x1bW5OdW1iZXIoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMu
X2NvbHVtbk51bWJlcjsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIApAQCAtMjUx
LDMgKzE5Nyw1OSBAQCBXZWJJbnNwZWN0b3IuSXNzdWVNZXNzYWdlLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgdGhpcy5fdGV4dCA9IHJlc3VsdFRleHQ7CiAgICAgfQogfTsKKworV2ViSW5zcGVjdG9y
Lklzc3VlTWVzc2FnZS5MZXZlbCA9IHsKKyAgICBFcnJvcjogImVycm9yIiwKKyAgICBXYXJuaW5n
OiAid2FybmluZyIKK307CisKK1dlYkluc3BlY3Rvci5Jc3N1ZU1lc3NhZ2UuVHlwZSA9IHsKKyAg
ICBTZW1hbnRpY0lzc3VlOiAiaXNzdWUtbWVzc2FnZS10eXBlLXNlbWFudGljLWlzc3VlIiwKKyAg
ICBSYW5nZUlzc3VlOiAiaXNzdWUtbWVzc2FnZS10eXBlLXJhbmdlLWlzc3VlIiwKKyAgICBSZWZl
cmVuY2VJc3N1ZTogImlzc3VlLW1lc3NhZ2UtdHlwZS1yZWZlcmVuY2UtaXNzdWUiLAorICAgIFR5
cGVJc3N1ZTogImlzc3VlLW1lc3NhZ2UtdHlwZS10eXBlLWlzc3VlIiwKKyAgICBQYWdlSXNzdWU6
ICJpc3N1ZS1tZXNzYWdlLXR5cGUtcGFnZS1pc3N1ZSIsCisgICAgTmV0d29ya0lzc3VlOiAiaXNz
dWUtbWVzc2FnZS10eXBlLW5ldHdvcmstaXNzdWUiLAorICAgIFNlY3VyaXR5SXNzdWU6ICJpc3N1
ZS1tZXNzYWdlLXR5cGUtc2VjdXJpdHktaXNzdWUiLAorICAgIE90aGVySXNzdWU6ICJpc3N1ZS1t
ZXNzYWdlLXR5cGUtb3RoZXItaXNzdWUiCit9OworCitXZWJJbnNwZWN0b3IuSXNzdWVNZXNzYWdl
LlR5cGUuX3ByZWZpeFR5cGVNYXAgPSB7CisgICAgIlN5bnRheEVycm9yIjogV2ViSW5zcGVjdG9y
Lklzc3VlTWVzc2FnZS5UeXBlLlNlbWFudGljSXNzdWUsCisgICAgIlVSSUVycm9yIjogV2ViSW5z
cGVjdG9yLklzc3VlTWVzc2FnZS5UeXBlLlNlbWFudGljSXNzdWUsCisgICAgIkV2YWxFcnJvciI6
IFdlYkluc3BlY3Rvci5Jc3N1ZU1lc3NhZ2UuVHlwZS5TZW1hbnRpY0lzc3VlLAorICAgICJJTlZB
TElEX0NIQVJBQ1RFUl9FUlIiOiBXZWJJbnNwZWN0b3IuSXNzdWVNZXNzYWdlLlR5cGUuU2VtYW50
aWNJc3N1ZSwKKyAgICAiU1lOVEFYX0VSUiI6IFdlYkluc3BlY3Rvci5Jc3N1ZU1lc3NhZ2UuVHlw
ZS5TZW1hbnRpY0lzc3VlLAorCisgICAgIlJhbmdlRXJyb3IiOiBXZWJJbnNwZWN0b3IuSXNzdWVN
ZXNzYWdlLlR5cGUuUmFuZ2VJc3N1ZSwKKyAgICAiSU5ERVhfU0laRV9FUlIiOiBXZWJJbnNwZWN0
b3IuSXNzdWVNZXNzYWdlLlR5cGUuUmFuZ2VJc3N1ZSwKKyAgICAiRE9NU1RSSU5HX1NJWkVfRVJS
IjogV2ViSW5zcGVjdG9yLklzc3VlTWVzc2FnZS5UeXBlLlJhbmdlSXNzdWUsCisKKyAgICAiUmVm
ZXJlbmNlRXJyb3IiOiBXZWJJbnNwZWN0b3IuSXNzdWVNZXNzYWdlLlR5cGUuUmVmZXJlbmNlSXNz
dWUsCisgICAgIkhJRVJBUkNIWV9SRVFVRVNUX0VSUiI6IFdlYkluc3BlY3Rvci5Jc3N1ZU1lc3Nh
Z2UuVHlwZS5SZWZlcmVuY2VJc3N1ZSwKKyAgICAiSU5WQUxJRF9TVEFURV9FUlIiOiBXZWJJbnNw
ZWN0b3IuSXNzdWVNZXNzYWdlLlR5cGUuUmVmZXJlbmNlSXNzdWUsCisgICAgIk5PVF9GT1VORF9F
UlIiOiBXZWJJbnNwZWN0b3IuSXNzdWVNZXNzYWdlLlR5cGUuUmVmZXJlbmNlSXNzdWUsCisgICAg
IldST05HX0RPQ1VNRU5UX0VSUiI6IFdlYkluc3BlY3Rvci5Jc3N1ZU1lc3NhZ2UuVHlwZS5SZWZl
cmVuY2VJc3N1ZSwKKworICAgICJUeXBlRXJyb3IiOiBXZWJJbnNwZWN0b3IuSXNzdWVNZXNzYWdl
LlR5cGUuVHlwZUlzc3VlLAorICAgICJJTlZBTElEX05PREVfVFlQRV9FUlIiOiBXZWJJbnNwZWN0
b3IuSXNzdWVNZXNzYWdlLlR5cGUuVHlwZUlzc3VlLAorICAgICJUWVBFX01JU01BVENIX0VSUiI6
IFdlYkluc3BlY3Rvci5Jc3N1ZU1lc3NhZ2UuVHlwZS5UeXBlSXNzdWUsCisKKyAgICAiU0VDVVJJ
VFlfRVJSIjogV2ViSW5zcGVjdG9yLklzc3VlTWVzc2FnZS5UeXBlLlNlY3VyaXR5SXNzdWUsCisK
KyAgICAiTkVUV09SS19FUlIiOiBXZWJJbnNwZWN0b3IuSXNzdWVNZXNzYWdlLlR5cGUuTmV0d29y
a0lzc3VlLAorCisgICAgIkFCT1JUX0VSUiI6IFdlYkluc3BlY3Rvci5Jc3N1ZU1lc3NhZ2UuVHlw
ZS5PdGhlcklzc3VlLAorICAgICJEQVRBX0NMT05FX0VSUiI6IFdlYkluc3BlY3Rvci5Jc3N1ZU1l
c3NhZ2UuVHlwZS5PdGhlcklzc3VlLAorICAgICJJTlVTRV9BVFRSSUJVVEVfRVJSIjogV2ViSW5z
cGVjdG9yLklzc3VlTWVzc2FnZS5UeXBlLk90aGVySXNzdWUsCisgICAgIklOVkFMSURfQUNDRVNT
X0VSUiI6IFdlYkluc3BlY3Rvci5Jc3N1ZU1lc3NhZ2UuVHlwZS5PdGhlcklzc3VlLAorICAgICJJ
TlZBTElEX01PRElGSUNBVElPTl9FUlIiOiBXZWJJbnNwZWN0b3IuSXNzdWVNZXNzYWdlLlR5cGUu
T3RoZXJJc3N1ZSwKKyAgICAiTkFNRVNQQUNFX0VSUiI6IFdlYkluc3BlY3Rvci5Jc3N1ZU1lc3Nh
Z2UuVHlwZS5PdGhlcklzc3VlLAorICAgICJOT1RfU1VQUE9SVEVEX0VSUiI6IFdlYkluc3BlY3Rv
ci5Jc3N1ZU1lc3NhZ2UuVHlwZS5PdGhlcklzc3VlLAorICAgICJOT19EQVRBX0FMTE9XRURfRVJS
IjogV2ViSW5zcGVjdG9yLklzc3VlTWVzc2FnZS5UeXBlLk90aGVySXNzdWUsCisgICAgIk5PX01P
RElGSUNBVElPTl9BTExPV0VEX0VSUiI6IFdlYkluc3BlY3Rvci5Jc3N1ZU1lc3NhZ2UuVHlwZS5P
dGhlcklzc3VlLAorICAgICJRVU9UQV9FWENFRURFRF9FUlIiOiBXZWJJbnNwZWN0b3IuSXNzdWVN
ZXNzYWdlLlR5cGUuT3RoZXJJc3N1ZSwKKyAgICAiVElNRU9VVF9FUlIiOiBXZWJJbnNwZWN0b3Iu
SXNzdWVNZXNzYWdlLlR5cGUuT3RoZXJJc3N1ZSwKKyAgICAiVVJMX01JU01BVENIX0VSUiI6IFdl
Ykluc3BlY3Rvci5Jc3N1ZU1lc3NhZ2UuVHlwZS5PdGhlcklzc3VlLAorICAgICJWQUxJREFUSU9O
X0VSUiI6IFdlYkluc3BlY3Rvci5Jc3N1ZU1lc3NhZ2UuVHlwZS5PdGhlcklzc3VlCit9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0tleWJv
YXJkU2hvcnRjdXQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2Rl
bHMvS2V5Ym9hcmRTaG9ydGN1dC5qcwppbmRleCAzNmMxOGZjLi5lN2EwMzhlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvS2V5Ym9hcmRTaG9y
dGN1dC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMv
S2V5Ym9hcmRTaG9ydGN1dC5qcwpAQCAtMjMsOSArMjMsMTEgQEAKICAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dCA9
IGZ1bmN0aW9uKG1vZGlmaWVycywga2V5LCBjYWxsYmFjaywgdGFyZ2V0RWxlbWVudCkKK1dlYklu
c3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0ID0gY2xhc3MgS2V5Ym9hcmRTaG9ydGN1dCBleHRlbmRz
IFdlYkluc3BlY3Rvci5PYmplY3QKIHsKLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhp
cyk7CisgICAgY29uc3RydWN0b3IobW9kaWZpZXJzLCBrZXksIGNhbGxiYWNrLCB0YXJnZXRFbGVt
ZW50KQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKIAogICAgICAgICBjb25zb2xlLmFzc2VydChr
ZXkpOwogICAgICAgICBjb25zb2xlLmFzc2VydCghY2FsbGJhY2sgfHwgdHlwZW9mIGNhbGxiYWNr
ID09PSAiZnVuY3Rpb24iKTsKQEAgLTU4LDkgKzYwLDExIEBAIFdlYkluc3BlY3Rvci5LZXlib2Fy
ZFNob3J0Y3V0ID0gZnVuY3Rpb24obW9kaWZpZXJzLCBrZXksIGNhbGxiYWNrLCB0YXJnZXRFbGVt
ZW50CiAgICAgICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCBX
ZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5faGFuZGxlS2V5RG93bik7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KLX07CisgICAgfQogCi1XZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1
dC5faGFuZGxlS2V5RG93biA9IGZ1bmN0aW9uKGV2ZW50KQorICAgIC8vIFN0YXRpYworCisgICAg
c3RhdGljIF9oYW5kbGVLZXlEb3duKGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKGV2ZW50LmRl
ZmF1bHRQcmV2ZW50ZWQpCiAgICAgICAgICAgICByZXR1cm47CkBAIC04Miw2ICs4NiwxMjIgQEAg
V2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuX2hhbmRsZUtleURvd24gPSBmdW5jdGlvbihl
dmVudCkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
KyAgICB9CisKKyAgICAvLyBQdWJsaWMKKworICAgIGdldCBtb2RpZmllcnMoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHRoaXMuX21vZGlmaWVyczsKKyAgICB9CisKKyAgICBnZXQga2V5KCkKKyAg
ICB7CisgICAgICAgIHJldHVybiB0aGlzLl9rZXk7CisgICAgfQorCisgICAgZ2V0IGRpc3BsYXlO
YW1lKCkKKyAgICB7CisgICAgICAgIHZhciByZXN1bHQgPSAiIjsKKworICAgICAgICBpZiAodGhp
cy5fbW9kaWZpZXJzICYgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuQ29u
dHJvbCkKKyAgICAgICAgICAgIHJlc3VsdCArPSAiXHUyMzAzIjsKKyAgICAgICAgaWYgKHRoaXMu
X21vZGlmaWVycyAmIFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLk9wdGlv
bikKKyAgICAgICAgICAgIHJlc3VsdCArPSBXZWJJbnNwZWN0b3IuUGxhdGZvcm0ubmFtZSA9PT0g
Im1hYyIgPyAiXHUyMzI1IiA6ICJcdTIzODciOworICAgICAgICBpZiAodGhpcy5fbW9kaWZpZXJz
ICYgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuU2hpZnQpCisgICAgICAg
ICAgICByZXN1bHQgKz0gIlx1MjFlNyI7CisgICAgICAgIGlmICh0aGlzLl9tb2RpZmllcnMgJiBX
ZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5Db21tYW5kKQorICAgICAgICAg
ICAgcmVzdWx0ICs9ICJcdTIzMTgiOworCisgICAgICAgIHJlc3VsdCArPSB0aGlzLl9rZXkudG9T
dHJpbmcoKTsKKworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIGdldCBjYWxs
YmFjaygpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fY2FsbGJhY2s7CisgICAgfQorCisg
ICAgZ2V0IGRpc2FibGVkKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDsK
KyAgICB9CisKKyAgICBzZXQgZGlzYWJsZWQoZGlzYWJsZWQpCisgICAgeworICAgICAgICB0aGlz
Ll9kaXNhYmxlZCA9IGRpc2FibGVkIHx8IGZhbHNlOworICAgIH0KKworICAgIGdldCBpbXBsaWNp
dGx5UHJldmVudHNEZWZhdWx0KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9pbXBsaWNp
dGx5UHJldmVudHNEZWZhdWx0OworICAgIH0KKworICAgIHNldCBpbXBsaWNpdGx5UHJldmVudHNE
ZWZhdWx0KGltcGxpY2l0bHkpCisgICAgeworICAgICAgICB0aGlzLl9pbXBsaWNpdGx5UHJldmVu
dHNEZWZhdWx0ID0gaW1wbGljaXRseTsKKyAgICB9CisKKyAgICB1bmJpbmQoKQorICAgIHsKKyAg
ICAgICAgdGhpcy5fZGlzYWJsZWQgPSB0cnVlOworCisgICAgICAgIGlmICghdGhpcy5fdGFyZ2V0
RWxlbWVudCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB2YXIgdGFyZ2V0S2V5Ym9h
cmRTaG9ydGN1dHMgPSB0aGlzLl90YXJnZXRFbGVtZW50Ll9rZXlib2FyZFNob3J0Y3V0czsKKyAg
ICAgICAgaWYgKCF0YXJnZXRLZXlib2FyZFNob3J0Y3V0cykKKyAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICB0YXJnZXRLZXlib2FyZFNob3J0Y3V0cy5yZW1vdmUodGhpcyk7CisgICAgfQor
CisgICAgbWF0Y2hlc0V2ZW50KGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX2Rpc2Fi
bGVkKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGlmICh0aGlzLl9rZXku
a2V5Q29kZSAhPT0gZXZlbnQua2V5Q29kZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgICAgICB2YXIgZXZlbnRNb2RpZmllcnMgPSBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1
dC5Nb2RpZmllci5Ob25lOworICAgICAgICBpZiAoZXZlbnQuc2hpZnRLZXkpCisgICAgICAgICAg
ICBldmVudE1vZGlmaWVycyB8PSBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmll
ci5TaGlmdDsKKyAgICAgICAgaWYgKGV2ZW50LmN0cmxLZXkpCisgICAgICAgICAgICBldmVudE1v
ZGlmaWVycyB8PSBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5Db250cm9s
OworICAgICAgICBpZiAoZXZlbnQuYWx0S2V5KQorICAgICAgICAgICAgZXZlbnRNb2RpZmllcnMg
fD0gV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuT3B0aW9uOworICAgICAg
ICBpZiAoZXZlbnQubWV0YUtleSkKKyAgICAgICAgICAgIGV2ZW50TW9kaWZpZXJzIHw9IFdlYklu
c3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLkNvbW1hbmQ7CisgICAgICAgIHJldHVy
biB0aGlzLl9tb2RpZmllcnMgPT09IGV2ZW50TW9kaWZpZXJzOworICAgIH0KK307CisKK1dlYklu
c3BlY3Rvci5LZXkgPSBjbGFzcyBLZXkKK3sKKyAgICBjb25zdHJ1Y3RvcihrZXlDb2RlLCBkaXNw
bGF5TmFtZSkKKyAgICB7CisgICAgICAgIHRoaXMuX2tleUNvZGUgPSBrZXlDb2RlOworICAgICAg
ICB0aGlzLl9kaXNwbGF5TmFtZSA9IGRpc3BsYXlOYW1lOworICAgIH0KKworICAgIC8vIFB1Ymxp
YworCisgICAgZ2V0IGtleUNvZGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2tleUNv
ZGU7CisgICAgfQorCisgICAgZ2V0IGRpc3BsYXlOYW1lKCkKKyAgICB7CisgICAgICAgIHJldHVy
biB0aGlzLl9kaXNwbGF5TmFtZTsKKyAgICB9CisKKyAgICB0b1N0cmluZygpCisgICAgeworICAg
ICAgICByZXR1cm4gdGhpcy5fZGlzcGxheU5hbWU7CisgICAgfQogfTsKIAogV2ViSW5zcGVjdG9y
LktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIgPSB7CkBAIC05NywyOSArMjE3LDYgQEAgV2ViSW5z
cGVjdG9yLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIgPSB7CiAgICAgfQogfTsKIAotV2ViSW5z
cGVjdG9yLktleSA9IGZ1bmN0aW9uKGtleUNvZGUsIGRpc3BsYXlOYW1lKQotewotICAgIHRoaXMu
X2tleUNvZGUgPSBrZXlDb2RlOwotICAgIHRoaXMuX2Rpc3BsYXlOYW1lID0gZGlzcGxheU5hbWU7
Ci19OwotCi1XZWJJbnNwZWN0b3IuS2V5LnByb3RvdHlwZSA9IHsKLSAgICBnZXQga2V5Q29kZSgp
Ci0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fa2V5Q29kZTsKLSAgICB9LAotCi0gICAgZ2V0
IGRpc3BsYXlOYW1lKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9kaXNwbGF5TmFtZTsK
LSAgICB9LAotCi0gICAgdG9TdHJpbmc6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVy
biB0aGlzLl9kaXNwbGF5TmFtZTsKLSAgICB9Ci19OwotCiBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRT
aG9ydGN1dC5LZXkgPSB7CiAgICAgQmFja3NwYWNlOiBuZXcgV2ViSW5zcGVjdG9yLktleSg4LCAi
XHUyMzJiIiksCiAgICAgVGFiOiBuZXcgV2ViSW5zcGVjdG9yLktleSg5LCAiXHUyMWU1IiksCkBA
IC0xNTgsOTggKzI1NSwzIEBAIFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleSA9IHsK
ICAgICBBcG9zdHJvcGhlOiBuZXcgV2ViSW5zcGVjdG9yLktleSgxOTIsICJgIiksCiAgICAgU2lu
Z2xlUXVvdGU6IG5ldyBXZWJJbnNwZWN0b3IuS2V5KDIyMiwgIlwnIikKIH07Ci0KLVdlYkluc3Bl
Y3Rvci5LZXlib2FyZFNob3J0Y3V0LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2Vi
SW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQsCi0KLSAgICAvLyBQdWJsaWMKLQotICAgIGdldCBt
b2RpZmllcnMoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX21vZGlmaWVyczsKLSAgICB9
LAotCi0gICAgZ2V0IGtleSgpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fa2V5OwotICAg
IH0sCi0KLSAgICBnZXQgZGlzcGxheU5hbWUoKQotICAgIHsKLSAgICAgICAgdmFyIHJlc3VsdCA9
ICIiOwotCi0gICAgICAgIGlmICh0aGlzLl9tb2RpZmllcnMgJiBXZWJJbnNwZWN0b3IuS2V5Ym9h
cmRTaG9ydGN1dC5Nb2RpZmllci5Db250cm9sKQotICAgICAgICAgICAgcmVzdWx0ICs9ICJcdTIz
MDMiOwotICAgICAgICBpZiAodGhpcy5fbW9kaWZpZXJzICYgV2ViSW5zcGVjdG9yLktleWJvYXJk
U2hvcnRjdXQuTW9kaWZpZXIuT3B0aW9uKQotICAgICAgICAgICAgcmVzdWx0ICs9IFdlYkluc3Bl
Y3Rvci5QbGF0Zm9ybS5uYW1lID09PSAibWFjIiA/ICJcdTIzMjUiIDogIlx1MjM4NyI7Ci0gICAg
ICAgIGlmICh0aGlzLl9tb2RpZmllcnMgJiBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5N
b2RpZmllci5TaGlmdCkKLSAgICAgICAgICAgIHJlc3VsdCArPSAiXHUyMWU3IjsKLSAgICAgICAg
aWYgKHRoaXMuX21vZGlmaWVycyAmIFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlm
aWVyLkNvbW1hbmQpCi0gICAgICAgICAgICByZXN1bHQgKz0gIlx1MjMxOCI7Ci0KLSAgICAgICAg
cmVzdWx0ICs9IHRoaXMuX2tleS50b1N0cmluZygpOwotCi0gICAgICAgIHJldHVybiByZXN1bHQ7
Ci0gICAgfSwKLQotICAgIGdldCBjYWxsYmFjaygpCi0gICAgewotICAgICAgICByZXR1cm4gdGhp
cy5fY2FsbGJhY2s7Ci0gICAgfSwKLQotICAgIGdldCBkaXNhYmxlZCgpCi0gICAgewotICAgICAg
ICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7Ci0gICAgfSwKLQotICAgIHNldCBkaXNhYmxlZChkaXNh
YmxlZCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX2Rpc2FibGVkID0gZGlzYWJsZWQgfHwgZmFsc2U7
Ci0gICAgfSwKLQotICAgIGdldCBpbXBsaWNpdGx5UHJldmVudHNEZWZhdWx0KCkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiB0aGlzLl9pbXBsaWNpdGx5UHJldmVudHNEZWZhdWx0OwotICAgIH0sCi0K
LSAgICBzZXQgaW1wbGljaXRseVByZXZlbnRzRGVmYXVsdChpbXBsaWNpdGx5KQotICAgIHsKLSAg
ICAgICAgdGhpcy5faW1wbGljaXRseVByZXZlbnRzRGVmYXVsdCA9IGltcGxpY2l0bHk7Ci0gICAg
fSwKLQotICAgIHVuYmluZDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhpcy5fZGlzYWJs
ZWQgPSB0cnVlOwotCi0gICAgICAgIGlmICghdGhpcy5fdGFyZ2V0RWxlbWVudCkKLSAgICAgICAg
ICAgIHJldHVybjsKLQotICAgICAgICB2YXIgdGFyZ2V0S2V5Ym9hcmRTaG9ydGN1dHMgPSB0aGlz
Ll90YXJnZXRFbGVtZW50Ll9rZXlib2FyZFNob3J0Y3V0czsKLSAgICAgICAgaWYgKCF0YXJnZXRL
ZXlib2FyZFNob3J0Y3V0cykKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB0YXJnZXRL
ZXlib2FyZFNob3J0Y3V0cy5yZW1vdmUodGhpcyk7Ci0gICAgfSwKLQotICAgIG1hdGNoZXNFdmVu
dDogZnVuY3Rpb24oZXZlbnQpCi0gICAgewotICAgICAgICBpZiAodGhpcy5fZGlzYWJsZWQpCi0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgaWYgKHRoaXMuX2tleS5rZXlDb2Rl
ICE9PSBldmVudC5rZXlDb2RlKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAg
IHZhciBldmVudE1vZGlmaWVycyA9IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlm
aWVyLk5vbmU7Ci0gICAgICAgIGlmIChldmVudC5zaGlmdEtleSkKLSAgICAgICAgICAgIGV2ZW50
TW9kaWZpZXJzIHw9IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLlNoaWZ0
OwotICAgICAgICBpZiAoZXZlbnQuY3RybEtleSkKLSAgICAgICAgICAgIGV2ZW50TW9kaWZpZXJz
IHw9IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLkNvbnRyb2w7Ci0gICAg
ICAgIGlmIChldmVudC5hbHRLZXkpCi0gICAgICAgICAgICBldmVudE1vZGlmaWVycyB8PSBXZWJJ
bnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5PcHRpb247Ci0gICAgICAgIGlmIChl
dmVudC5tZXRhS2V5KQotICAgICAgICAgICAgZXZlbnRNb2RpZmllcnMgfD0gV2ViSW5zcGVjdG9y
LktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuQ29tbWFuZDsKLSAgICAgICAgcmV0dXJuIHRoaXMu
X21vZGlmaWVycyA9PT0gZXZlbnRNb2RpZmllcnM7Ci0gICAgfQotfTsKLQotV2ViSW5zcGVjdG9y
LktleWJvYXJkU2hvcnRjdXQucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmpl
Y3QucHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvTW9kZWxzL0xheW91dFRpbWVsaW5lUmVjb3JkLmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0xheW91dFRpbWVsaW5lUmVjb3JkLmpzCmluZGV4IGE5
NmUwOWUuLmY3ZTQyNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL01vZGVscy9MYXlvdXRUaW1lbGluZVJlY29yZC5qcworKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvTGF5b3V0VGltZWxpbmVSZWNvcmQuanMKQEAg
LTIzLDkgKzIzLDExIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
IAotV2ViSW5zcGVjdG9yLkxheW91dFRpbWVsaW5lUmVjb3JkID0gZnVuY3Rpb24oZXZlbnRUeXBl
LCBzdGFydFRpbWUsIGVuZFRpbWUsIGNhbGxGcmFtZXMsIHNvdXJjZUNvZGVMb2NhdGlvbiwgeCwg
eSwgd2lkdGgsIGhlaWdodCwgcXVhZCkKK1dlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZVJlY29y
ZCA9IGNsYXNzIExheW91dFRpbWVsaW5lUmVjb3JkIGV4dGVuZHMgV2ViSW5zcGVjdG9yLlRpbWVs
aW5lUmVjb3JkCiB7Ci0gICAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkLmNhbGwodGhpcywg
V2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkLlR5cGUuTGF5b3V0LCBzdGFydFRpbWUsIGVuZFRp
bWUsIGNhbGxGcmFtZXMsIHNvdXJjZUNvZGVMb2NhdGlvbik7CisgICAgY29uc3RydWN0b3IoZXZl
bnRUeXBlLCBzdGFydFRpbWUsIGVuZFRpbWUsIGNhbGxGcmFtZXMsIHNvdXJjZUNvZGVMb2NhdGlv
biwgeCwgeSwgd2lkdGgsIGhlaWdodCwgcXVhZCkKKyAgICB7CisgICAgICAgIHN1cGVyKFdlYklu
c3BlY3Rvci5UaW1lbGluZVJlY29yZC5UeXBlLkxheW91dCwgc3RhcnRUaW1lLCBlbmRUaW1lLCBj
YWxsRnJhbWVzLCBzb3VyY2VDb2RlTG9jYXRpb24pOwogCiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KGV2ZW50VHlwZSk7CiAKQEAgLTM4LDE4ICs0MCwxMSBAQCBXZWJJbnNwZWN0b3IuTGF5b3V0VGlt
ZWxpbmVSZWNvcmQgPSBmdW5jdGlvbihldmVudFR5cGUsIHN0YXJ0VGltZSwgZW5kVGltZSwgY2Fs
bAogICAgICAgICB0aGlzLl93aWR0aCA9IHR5cGVvZiB3aWR0aCA9PT0gIm51bWJlciIgPyB3aWR0
aCA6IE5hTjsKICAgICAgICAgdGhpcy5faGVpZ2h0ID0gdHlwZW9mIGhlaWdodCA9PT0gIm51bWJl
ciIgPyBoZWlnaHQgOiBOYU47CiAgICAgICAgIHRoaXMuX3F1YWQgPSBxdWFkIGluc3RhbmNlb2Yg
V2ViSW5zcGVjdG9yLlF1YWQgPyBxdWFkIDogbnVsbDsKLX07CisgICAgfQogCi1XZWJJbnNwZWN0
b3IuTGF5b3V0VGltZWxpbmVSZWNvcmQuRXZlbnRUeXBlID0gewotICAgIEludmFsaWRhdGVTdHls
ZXM6ICJsYXlvdXQtdGltZWxpbmUtcmVjb3JkLWludmFsaWRhdGUtc3R5bGVzIiwKLSAgICBSZWNh
bGN1bGF0ZVN0eWxlczogImxheW91dC10aW1lbGluZS1yZWNvcmQtcmVjYWxjdWxhdGUtc3R5bGVz
IiwKLSAgICBJbnZhbGlkYXRlTGF5b3V0OiAibGF5b3V0LXRpbWVsaW5lLXJlY29yZC1pbnZhbGlk
YXRlLWxheW91dCIsCi0gICAgRm9yY2VkTGF5b3V0OiAibGF5b3V0LXRpbWVsaW5lLXJlY29yZC1m
b3JjZWQtbGF5b3V0IiwKLSAgICBMYXlvdXQ6ICJsYXlvdXQtdGltZWxpbmUtcmVjb3JkLWxheW91
dCIsCi0gICAgUGFpbnQ6ICJsYXlvdXQtdGltZWxpbmUtcmVjb3JkLXBhaW50IgotfTsKKyAgICAv
LyBTdGF0aWMKIAotV2ViSW5zcGVjdG9yLkxheW91dFRpbWVsaW5lUmVjb3JkLmRpc3BsYXlOYW1l
Rm9yRXZlbnRUeXBlID0gZnVuY3Rpb24oZXZlbnRUeXBlKQorICAgIHN0YXRpYyBkaXNwbGF5TmFt
ZUZvckV2ZW50VHlwZShldmVudFR5cGUpCiAgICAgewogICAgICAgICBzd2l0Y2goZXZlbnRUeXBl
KSB7CiAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLkxheW91dFRpbWVsaW5lUmVjb3JkLkV2ZW50
VHlwZS5JbnZhbGlkYXRlU3R5bGVzOgpAQCAtNjUsNjQgKzYwLDY4IEBAIFdlYkluc3BlY3Rvci5M
YXlvdXRUaW1lbGluZVJlY29yZC5kaXNwbGF5TmFtZUZvckV2ZW50VHlwZSA9IGZ1bmN0aW9uKGV2
ZW50VHlwZSkKICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuTGF5b3V0VGltZWxpbmVSZWNvcmQu
RXZlbnRUeXBlLlBhaW50OgogICAgICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiUGFpbnQiKTsKICAgICAgICAgfQotfTsKLQotV2ViSW5zcGVjdG9yLkxheW91dFRpbWVsaW5l
UmVjb3JkLlR5cGVJZGVudGlmaWVyID0gImxheW91dC10aW1lbGluZS1yZWNvcmQiOwotV2ViSW5z
cGVjdG9yLkxheW91dFRpbWVsaW5lUmVjb3JkLkV2ZW50VHlwZUNvb2tpZUtleSA9ICJsYXlvdXQt
dGltZWxpbmUtcmVjb3JkLWV2ZW50LXR5cGUiOwotCi1XZWJJbnNwZWN0b3IuTGF5b3V0VGltZWxp
bmVSZWNvcmQucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuTGF5
b3V0VGltZWxpbmVSZWNvcmQsCisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgZXZl
bnRUeXBlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9ldmVudFR5cGU7Ci0gICAgfSwK
KyAgICB9CiAKICAgICBnZXQgeCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5feDsKLSAg
ICB9LAorICAgIH0KIAogICAgIGdldCB5KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl95
OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHdpZHRoKCkKICAgICB7CiAgICAgICAgIHJldHVy
biB0aGlzLl93aWR0aDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBoZWlnaHQoKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIHRoaXMuX2hlaWdodDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBh
cmVhKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl93aWR0aCAqIHRoaXMuX2hlaWdodDsK
LSAgICB9LAorICAgIH0KIAogICAgIGdldCByZWN0KCkKICAgICB7CiAgICAgICAgIGlmICghaXNO
YU4odGhpcy5feCkgJiYgIWlzTmFOKHRoaXMuX3kpKQogICAgICAgICAgICAgcmV0dXJuIG5ldyBX
ZWJJbnNwZWN0b3IuUmVjdCh0aGlzLl94LCB0aGlzLl95LCB0aGlzLl93aWR0aCwgdGhpcy5faGVp
Z2h0KTsKICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgcXVh
ZCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcXVhZDsKLSAgICB9LAorICAgIH0KIAot
ICAgIHNhdmVJZGVudGl0eVRvQ29va2llOiBmdW5jdGlvbihjb29raWUpCisgICAgc2F2ZUlkZW50
aXR5VG9Db29raWUoY29va2llKQogICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLlRpbWVsaW5l
UmVjb3JkLnByb3RvdHlwZS5zYXZlSWRlbnRpdHlUb0Nvb2tpZS5jYWxsKHRoaXMsIGNvb2tpZSk7
CisgICAgICAgIHN1cGVyLnNhdmVJZGVudGl0eVRvQ29va2llKGNvb2tpZSk7CiAKICAgICAgICAg
Y29va2llW1dlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZVJlY29yZC5FdmVudFR5cGVDb29raWVL
ZXldID0gdGhpcy5fZXZlbnRUeXBlOwogICAgIH0KIH07CiAKLVdlYkluc3BlY3Rvci5MYXlvdXRU
aW1lbGluZVJlY29yZC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlRpbWVsaW5l
UmVjb3JkLnByb3RvdHlwZTsKK1dlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZVJlY29yZC5FdmVu
dFR5cGUgPSB7CisgICAgSW52YWxpZGF0ZVN0eWxlczogImxheW91dC10aW1lbGluZS1yZWNvcmQt
aW52YWxpZGF0ZS1zdHlsZXMiLAorICAgIFJlY2FsY3VsYXRlU3R5bGVzOiAibGF5b3V0LXRpbWVs
aW5lLXJlY29yZC1yZWNhbGN1bGF0ZS1zdHlsZXMiLAorICAgIEludmFsaWRhdGVMYXlvdXQ6ICJs
YXlvdXQtdGltZWxpbmUtcmVjb3JkLWludmFsaWRhdGUtbGF5b3V0IiwKKyAgICBGb3JjZWRMYXlv
dXQ6ICJsYXlvdXQtdGltZWxpbmUtcmVjb3JkLWZvcmNlZC1sYXlvdXQiLAorICAgIExheW91dDog
ImxheW91dC10aW1lbGluZS1yZWNvcmQtbGF5b3V0IiwKKyAgICBQYWludDogImxheW91dC10aW1l
bGluZS1yZWNvcmQtcGFpbnQiCit9OworCitXZWJJbnNwZWN0b3IuTGF5b3V0VGltZWxpbmVSZWNv
cmQuVHlwZUlkZW50aWZpZXIgPSAibGF5b3V0LXRpbWVsaW5lLXJlY29yZCI7CitXZWJJbnNwZWN0
b3IuTGF5b3V0VGltZWxpbmVSZWNvcmQuRXZlbnRUeXBlQ29va2llS2V5ID0gImxheW91dC10aW1l
bGluZS1yZWNvcmQtZXZlbnQtdHlwZSI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Nb2RlbHMvTGF6eVNvdXJjZUNvZGVMb2NhdGlvbi5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9MYXp5U291cmNlQ29kZUxvY2F0
aW9uLmpzCmluZGV4IDQ4Y2QxZmMuLjZmMWE5MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9MYXp5U291cmNlQ29kZUxvY2F0aW9uLmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9MYXp5U291cmNl
Q29kZUxvY2F0aW9uLmpzCkBAIC0zMCw4MCArMzAsNzkgQEAKIC8vICAtIGZvcm1hdHRlZCBpbmZv
cm1hdGlvbiBkb2VzIHJlcXVpcmUgaW5pdGlhbGl6YXRpb24sIGRvbmUgYnkgb3ZlcnJpZGluZyBw
dWJsaWMgQVBJcy4KIC8vICAtIGRpc3BsYXkgaW5mb3JtYXRpb24gZG9lcyByZXF1aXJlIGluaXRp
YWxpemF0aW9uLCBkb25lIGJ5IG92ZXJyaWRpbmcgcHJpdmF0ZSBmdW5uZWwgQVBJIHJlc29sdmVN
YXBwZWRMb2NhdGlvbi4KIAotV2ViSW5zcGVjdG9yLkxhenlTb3VyY2VDb2RlTG9jYXRpb24gPSBm
dW5jdGlvbihzb3VyY2VDb2RlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCitXZWJJbnNwZWN0
b3IuTGF6eVNvdXJjZUNvZGVMb2NhdGlvbiA9IGNsYXNzIExhenlTb3VyY2VDb2RlTG9jYXRpb24g
ZXh0ZW5kcyBXZWJJbnNwZWN0b3IuU291cmNlQ29kZUxvY2F0aW9uCiB7Ci0gICAgV2ViSW5zcGVj
dG9yLlNvdXJjZUNvZGVMb2NhdGlvbi5jYWxsKHRoaXMsIG51bGwsIGxpbmVOdW1iZXIsIGNvbHVt
bk51bWJlcik7CisgICAgY29uc3RydWN0b3Ioc291cmNlQ29kZSwgbGluZU51bWJlciwgY29sdW1u
TnVtYmVyKQorICAgIHsKKyAgICAgICAgc3VwZXIobnVsbCwgbGluZU51bWJlciwgY29sdW1uTnVt
YmVyKTsKIAogICAgICAgICBjb25zb2xlLmFzc2VydChzb3VyY2VDb2RlKTsKIAogICAgICAgICB0
aGlzLl9pbml0aWFsaXplZCA9IGZhbHNlOwogICAgICAgICB0aGlzLl9sYXp5U291cmNlQ29kZSA9
IHNvdXJjZUNvZGU7Ci19OwotCi1XZWJJbnNwZWN0b3IuTGF6eVNvdXJjZUNvZGVMb2NhdGlvbi5w
cm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5MYXp5U291cmNlQ29k
ZUxvY2F0aW9uLAorICAgIH0KIAogICAgIC8vIFB1YmxpYwogCi0gICAgaXNFcXVhbDogZnVuY3Rp
b24ob3RoZXIpCisgICAgaXNFcXVhbChvdGhlcikKICAgICB7CiAgICAgICAgIGlmICghb3RoZXIp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJldHVybiB0aGlzLl9sYXp5U291
cmNlQ29kZSA9PT0gb3RoZXIuX3NvdXJjZUNvZGUgJiYgdGhpcy5fbGluZU51bWJlciA9PT0gb3Ro
ZXIuX2xpbmVOdW1iZXIgJiYgdGhpcy5fY29sdW1uTnVtYmVyID09PSBvdGhlci5fY29sdW1uTnVt
YmVyOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHNvdXJjZUNvZGUoKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHRoaXMuX2xhenlTb3VyY2VDb2RlOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0
IHNvdXJjZUNvZGUoc291cmNlQ29kZSkKICAgICB7CiAgICAgICAgIC8vIEdldHRlciBhbmQgc2V0
dGVyIG11c3QgYmUgcHJvdmlkZWQgdG9nZXRoZXIuCiAgICAgICAgIHRoaXMuc2V0U291cmNlQ29k
ZShzb3VyY2VDb2RlKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBmb3JtYXR0ZWRMaW5lTnVt
YmVyKCkKICAgICB7CiAgICAgICAgIHRoaXMuX2xhenlJbml0aWFsaXphdGlvbigpOwogICAgICAg
ICByZXR1cm4gdGhpcy5fZm9ybWF0dGVkTGluZU51bWJlcjsKLSAgICB9LAorICAgIH0KIAogICAg
IGdldCBmb3JtYXR0ZWRDb2x1bW5OdW1iZXIoKQogICAgIHsKICAgICAgICAgdGhpcy5fbGF6eUlu
aXRpYWxpemF0aW9uKCk7CiAgICAgICAgIHJldHVybiB0aGlzLl9mb3JtYXR0ZWRDb2x1bW5OdW1i
ZXI7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBmb3JtYXR0ZWRQb3NpdGlvbjogZnVuY3Rpb24oKQor
ICAgIGZvcm1hdHRlZFBvc2l0aW9uKCkKICAgICB7CiAgICAgICAgIHRoaXMuX2xhenlJbml0aWFs
aXphdGlvbigpOwogICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlUG9z
aXRpb24odGhpcy5fZm9ybWF0dGVkTGluZU51bWJlciwgdGhpcy5fZm9ybWF0dGVkQ29sdW1uTnVt
YmVyKTsKLSAgICB9LAorICAgIH0KIAotICAgIGhhc0Zvcm1hdHRlZExvY2F0aW9uOiBmdW5jdGlv
bigpCisgICAgaGFzRm9ybWF0dGVkTG9jYXRpb24oKQogICAgIHsKICAgICAgICAgdGhpcy5fbGF6
eUluaXRpYWxpemF0aW9uKCk7Ci0gICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuU291cmNlQ29k
ZUxvY2F0aW9uLnByb3RvdHlwZS5oYXNGb3JtYXR0ZWRMb2NhdGlvbi5jYWxsKHRoaXMpOwotICAg
IH0sCisgICAgICAgIHJldHVybiBzdXBlci5oYXNGb3JtYXR0ZWRMb2NhdGlvbigpOworICAgIH0K
IAotICAgIGhhc0RpZmZlcmVudERpc3BsYXlMb2NhdGlvbjogZnVuY3Rpb24oKQorICAgIGhhc0Rp
ZmZlcmVudERpc3BsYXlMb2NhdGlvbigpCiAgICAgewogICAgICAgICB0aGlzLl9sYXp5SW5pdGlh
bGl6YXRpb24oKTsKLSAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlTG9jYXRp
b24ucHJvdG90eXBlLmhhc0RpZmZlcmVudERpc3BsYXlMb2NhdGlvbi5jYWxsKHRoaXMpOwotICAg
IH0sCisgICAgICAgIHJldHVybiBzdXBlci5oYXNEaWZmZXJlbnREaXNwbGF5TG9jYXRpb24oKTsK
KyAgICB9CiAKICAgICAvLyBQcm90ZWN0ZWQKIAotICAgIHJlc29sdmVNYXBwZWRMb2NhdGlvbjog
ZnVuY3Rpb24oKQorICAgIHJlc29sdmVNYXBwZWRMb2NhdGlvbigpCiAgICAgewogICAgICAgICB0
aGlzLl9sYXp5SW5pdGlhbGl6YXRpb24oKTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLlNvdXJjZUNv
ZGVMb2NhdGlvbi5wcm90b3R5cGUucmVzb2x2ZU1hcHBlZExvY2F0aW9uLmNhbGwodGhpcyk7Ci0g
ICAgfSwKKyAgICAgICAgc3VwZXIucmVzb2x2ZU1hcHBlZExvY2F0aW9uKCk7CisgICAgfQogCiAg
ICAgLy8gUHJpdmF0ZQogCi0gICAgX2xhenlJbml0aWFsaXphdGlvbjogZnVuY3Rpb24oKQorICAg
IF9sYXp5SW5pdGlhbGl6YXRpb24oKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9pbml0aWFs
aXplZCkgewogICAgICAgICAgICAgdGhpcy5faW5pdGlhbGl6ZWQgPSB0cnVlOwpAQCAtMTExLDUg
KzExMCwzIEBAIFdlYkluc3BlY3Rvci5MYXp5U291cmNlQ29kZUxvY2F0aW9uLnByb3RvdHlwZSA9
IHsKICAgICAgICAgfQogICAgIH0KIH07Ci0KLVdlYkluc3BlY3Rvci5MYXp5U291cmNlQ29kZUxv
Y2F0aW9uLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuU291cmNlQ29kZUxvY2F0
aW9uLnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL01vZGVscy9MaW5lV2lkZ2V0LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvTW9kZWxzL0xpbmVXaWRnZXQuanMKaW5kZXggOGFmZGQ0MC4uMDZmZmExYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0xpbmVX
aWRnZXQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxz
L0xpbmVXaWRnZXQuanMKQEAgLTIzLDM2ICsyMywzNCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5MaW5lV2lkZ2V0ID0gZnVuY3Rpb24o
Y29kZU1pcnJvckxpbmVXaWRnZXQsIHdpZGdldEVsZW1lbnQpCitXZWJJbnNwZWN0b3IuTGluZVdp
ZGdldCA9IGNsYXNzIExpbmVXaWRnZXQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0g
ICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIGNvbnN0cnVjdG9yKGNvZGVN
aXJyb3JMaW5lV2lkZ2V0LCB3aWRnZXRFbGVtZW50KQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsK
IAogICAgICAgICBjb25zb2xlLmFzc2VydCh3aWRnZXRFbGVtZW50IGluc3RhbmNlb2YgRWxlbWVu
dCk7CiAKICAgICAgICAgdGhpcy5fY29kZU1pcnJvckxpbmVXaWRnZXQgPSBjb2RlTWlycm9yTGlu
ZVdpZGdldDsKICAgICAgICAgdGhpcy5fd2lkZ2V0RWxlbWVudCA9IHdpZGdldEVsZW1lbnQ7Ci19
OwotCi1XZWJJbnNwZWN0b3IuTGluZVdpZGdldC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0
b3I6IFdlYkluc3BlY3Rvci5MaW5lV2lkZ2V0LAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9y
Lk9iamVjdC5wcm90b3R5cGUsCisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgY29k
ZU1pcnJvckxpbmVXaWRnZXQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2NvZGVNaXJy
b3JMaW5lV2lkZ2V0OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHdpZGdldEVsZW1lbnQoKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3dpZGdldEVsZW1lbnQ7Ci0gICAgfSwKKyAgICB9
CiAKICAgICBjbGVhcigpCiAgICAgewogICAgICAgICB0aGlzLl9jb2RlTWlycm9yTGluZVdpZGdl
dC5jbGVhcigpOwotICAgIH0sCisgICAgfQogCiAgICAgdXBkYXRlKCkKICAgICB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvTG9nT2JqZWN0
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0xvZ09iamVj
dC5qcwppbmRleCAzNTUxNjk2Li5iOTU1MTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvTG9nT2JqZWN0LmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Mb2dPYmplY3QuanMKQEAgLTIzLDE1ICsy
MywxNCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYklu
c3BlY3Rvci5Mb2dPYmplY3QgPSBmdW5jdGlvbigpCitXZWJJbnNwZWN0b3IuTG9nT2JqZWN0ID0g
Y2xhc3MgTG9nT2JqZWN0IGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogewotICAgIFdlYklu
c3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKLQotICAgIHRoaXMuX3N0YXJ0RGF0ZSA9IG5ldyBE
YXRlKCk7Ci19OworICAgIGNvbnN0cnVjdG9yKCkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CiAK
LVdlYkluc3BlY3Rvci5Mb2dPYmplY3QucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBX
ZWJJbnNwZWN0b3IuTG9nT2JqZWN0LAorICAgICAgICB0aGlzLl9zdGFydERhdGUgPSBuZXcgRGF0
ZTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIApAQCAtNDAsNSArMzksMyBAQCBXZWJJbnNwZWN0
b3IuTG9nT2JqZWN0LnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXJ0RGF0
ZTsKICAgICB9CiB9OwotCi1XZWJJbnNwZWN0b3IuTG9nT2JqZWN0LnByb3RvdHlwZS5fX3Byb3Rv
X18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9OZXR3b3JrVGltZWxpbmUuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvTmV0d29ya1RpbWVsaW5l
LmpzCmluZGV4IDc1ZDRkOWYuLmQzMDY5YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9OZXR3b3JrVGltZWxpbmUuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL05ldHdvcmtUaW1lbGluZS5qcwpA
QCAtMjMsMzIgKzIzLDMxIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KIAotV2ViSW5zcGVjdG9yLk5ldHdvcmtUaW1lbGluZSA9IGZ1bmN0aW9uKHR5cGUpCitXZWJJ
bnNwZWN0b3IuTmV0d29ya1RpbWVsaW5lID0gY2xhc3MgTmV0d29ya1RpbWVsaW5lIGV4dGVuZHMg
V2ViSW5zcGVjdG9yLlRpbWVsaW5lCiB7Ci0gICAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lLmNhbGwo
dGhpcywgdHlwZSk7Ci19OwotCi1XZWJJbnNwZWN0b3IuTmV0d29ya1RpbWVsaW5lLnByb3RvdHlw
ZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLk5ldHdvcmtUaW1lbGluZSwKLSAg
ICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5UaW1lbGluZS5wcm90b3R5cGUsCisgICAgY29uc3Ry
dWN0b3IodHlwZSkKKyAgICB7CisgICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgb25jZSA8aHR0cHM6
Ly93ZWJraXQub3JnL2IvMTQyODYyPiBpcyBmaXhlZC4KKyAgICAgICAgc3VwZXIodHlwZSk7Cisg
ICAgfQogCiAgICAgLy8gUHVibGljCiAKLSAgICByZWNvcmRGb3JSZXNvdXJjZTogZnVuY3Rpb24o
cmVzb3VyY2UpCisgICAgcmVjb3JkRm9yUmVzb3VyY2UocmVzb3VyY2UpCiAgICAgewogICAgICAg
ICBjb25zb2xlLmFzc2VydChyZXNvdXJjZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZXNvdXJj
ZSk7CiAKICAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlUmVjb3JkTWFwLmdldChyZXNvdXJj
ZSkgfHwgbnVsbDsKLSAgICB9LAorICAgIH0KIAotICAgIHJlc2V0OiBmdW5jdGlvbihzdXBwcmVz
c0V2ZW50cykKKyAgICByZXNldChzdXBwcmVzc0V2ZW50cykKICAgICB7CiAgICAgICAgIHRoaXMu
X3Jlc291cmNlUmVjb3JkTWFwID0gbmV3IE1hcDsKIAotICAgICAgICBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmUucHJvdG90eXBlLnJlc2V0LmNhbGwodGhpcywgc3VwcHJlc3NFdmVudHMpOwotICAgIH0s
CisgICAgICAgIHN1cGVyLnJlc2V0KHN1cHByZXNzRXZlbnRzKTsKKyAgICB9CiAKLSAgICBhZGRS
ZWNvcmQ6IGZ1bmN0aW9uKHJlY29yZCkKKyAgICBhZGRSZWNvcmQocmVjb3JkKQogICAgIHsKICAg
ICAgICAgY29uc29sZS5hc3NlcnQocmVjb3JkIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlc291
cmNlVGltZWxpbmVSZWNvcmQpOwogCkBAIC01OCw2ICs1Nyw2IEBAIFdlYkluc3BlY3Rvci5OZXR3
b3JrVGltZWxpbmUucHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMuX3Jlc291cmNlUmVjb3Jk
TWFwLnNldChyZWNvcmQucmVzb3VyY2UsIHJlY29yZCk7CiAKLSAgICAgICAgV2ViSW5zcGVjdG9y
LlRpbWVsaW5lLnByb3RvdHlwZS5hZGRSZWNvcmQuY2FsbCh0aGlzLCByZWNvcmQpOworICAgICAg
ICBzdXBlci5hZGRSZWNvcmQocmVjb3JkKTsKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL09iamVjdFByZXZpZXcuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvT2JqZWN0UHJldmlldy5q
cwppbmRleCAyYjM2ZTVkLi44YmQ4NWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Nb2RlbHMvT2JqZWN0UHJldmlldy5qcworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvT2JqZWN0UHJldmlldy5qcwpAQCAtMjMs
OSArMjMsMTEgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1X
ZWJJbnNwZWN0b3IuT2JqZWN0UHJldmlldyA9IGZ1bmN0aW9uKHR5cGUsIHN1YnR5cGUsIGRlc2Ny
aXB0aW9uLCBsb3NzbGVzcywgb3ZlcmZsb3csIHByb3BlcnRpZXMsIGVudHJpZXMsIHNpemUpCitX
ZWJJbnNwZWN0b3IuT2JqZWN0UHJldmlldyA9IGNsYXNzIE9iamVjdFByZXZpZXcgZXh0ZW5kcyBX
ZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMp
OworICAgIGNvbnN0cnVjdG9yKHR5cGUsIHN1YnR5cGUsIGRlc2NyaXB0aW9uLCBsb3NzbGVzcywg
b3ZlcmZsb3csIHByb3BlcnRpZXMsIGVudHJpZXMsIHNpemUpCisgICAgeworICAgICAgICBzdXBl
cigpOwogCiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHR5cGUpOwogICAgICAgICBjb25zb2xlLmFz
c2VydCh0eXBlb2YgbG9zc2xlc3MgPT09ICJib29sZWFuIik7CkBAIC00MSwxMCArNDMsMTIgQEAg
V2ViSW5zcGVjdG9yLk9iamVjdFByZXZpZXcgPSBmdW5jdGlvbih0eXBlLCBzdWJ0eXBlLCBkZXNj
cmlwdGlvbiwgbG9zc2xlc3MsIG92ZXIKIAogICAgICAgICB0aGlzLl9wcm9wZXJ0aWVzID0gcHJv
cGVydGllcyB8fCBudWxsOwogICAgICAgICB0aGlzLl9lbnRyaWVzID0gZW50cmllcyB8fCBudWxs
OwotfTsKKyAgICB9CisKKyAgICAvLyBTdGF0aWMKIAogICAgIC8vIFJ1bnRpbWUuT2JqZWN0UHJl
dmlldy4KLVdlYkluc3BlY3Rvci5PYmplY3RQcmV2aWV3LmZyb21QYXlsb2FkID0gZnVuY3Rpb24o
cGF5bG9hZCkKKyAgICBzdGF0aWMgZnJvbVBheWxvYWQocGF5bG9hZCkKICAgICB7CiAgICAgICAg
IGlmIChwYXlsb2FkLnByb3BlcnRpZXMpCiAgICAgICAgICAgICBwYXlsb2FkLnByb3BlcnRpZXMg
PSBwYXlsb2FkLnByb3BlcnRpZXMubWFwKGZ1bmN0aW9uKHByb3BlcnR5KSB7IHJldHVybiBXZWJJ
bnNwZWN0b3IuUHJvcGVydHlQcmV2aWV3LmZyb21QYXlsb2FkKHByb3BlcnR5KTsgfSk7CkBAIC02
Miw1MyArNjYsNDkgQEAgV2ViSW5zcGVjdG9yLk9iamVjdFByZXZpZXcuZnJvbVBheWxvYWQgPSBm
dW5jdGlvbihwYXlsb2FkKQogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNw
ZWN0b3IuT2JqZWN0UHJldmlldyhwYXlsb2FkLnR5cGUsIHBheWxvYWQuc3VidHlwZSwgcGF5bG9h
ZC5kZXNjcmlwdGlvbiwgcGF5bG9hZC5sb3NzbGVzcywgcGF5bG9hZC5vdmVyZmxvdywgcGF5bG9h
ZC5wcm9wZXJ0aWVzLCBwYXlsb2FkLmVudHJpZXMsIHBheWxvYWQuc2l6ZSk7Ci19OwotCi1XZWJJ
bnNwZWN0b3IuT2JqZWN0UHJldmlldy5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdl
Ykluc3BlY3Rvci5PYmplY3RQcmV2aWV3LAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLk9i
amVjdC5wcm90b3R5cGUsCisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgdHlwZSgp
CiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fdHlwZTsKLSAgICB9LAorICAgIH0KIAogICAg
IGdldCBzdWJ0eXBlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zdWJ0eXBlOwotICAg
IH0sCisgICAgfQogCiAgICAgZ2V0IGRlc2NyaXB0aW9uKCkKICAgICB7CiAgICAgICAgIHJldHVy
biB0aGlzLl9kZXNjcmlwdGlvbjsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBsb3NzbGVzcygp
CiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fbG9zc2xlc3M7Ci0gICAgfSwKKyAgICB9CiAK
ICAgICBnZXQgb3ZlcmZsb3coKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX292ZXJmbG93
OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHByb3BlcnR5UHJldmlld3MoKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHRoaXMuX3Byb3BlcnRpZXM7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQg
Y29sbGVjdGlvbkVudHJ5UHJldmlld3MoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2Vu
dHJpZXM7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc2l6ZSgpCiAgICAgewogICAgICAgICBy
ZXR1cm4gdGhpcy5fc2l6ZTsKLSAgICB9LAorICAgIH0KIAogICAgIGhhc1NpemUoKQogICAgIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Q
cm9iZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Qcm9i
ZS5qcwppbmRleCBiNzhiNjBhLi40NWJkNWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUHJvYmUuanMKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Byb2JlLmpzCkBAIC0yNCwxNyArMjQsMjQgQEAK
ICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlByb2JlU2FtcGxlID0gZnVuY3Rp
b24oc2FtcGxlSWQsIGJhdGNoSWQsIGVsYXBzZWRUaW1lLCBwYXlsb2FkKQorV2ViSW5zcGVjdG9y
LlByb2JlU2FtcGxlID0gY2xhc3MgUHJvYmVTYW1wbGUgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2Jq
ZWN0CiB7CisgICAgY29uc3RydWN0b3Ioc2FtcGxlSWQsIGJhdGNoSWQsIGVsYXBzZWRUaW1lLCBw
YXlsb2FkKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKKwogICAgICAgICB0aGlzLnNhbXBsZUlk
ID0gc2FtcGxlSWQ7CiAgICAgICAgIHRoaXMuYmF0Y2hJZCA9IGJhdGNoSWQ7CiAgICAgICAgIHRo
aXMudGltZXN0YW1wID0gZWxhcHNlZFRpbWU7CiAgICAgICAgIHRoaXMub2JqZWN0ID0gV2ViSW5z
cGVjdG9yLlJlbW90ZU9iamVjdC5mcm9tUGF5bG9hZChwYXlsb2FkKTsKKyAgICB9CiB9OwogCi1X
ZWJJbnNwZWN0b3IuUHJvYmUgPSBmdW5jdGlvbihpZCwgYnJlYWtwb2ludCwgZXhwcmVzc2lvbikK
K1dlYkluc3BlY3Rvci5Qcm9iZSA9IGNsYXNzIFByb2JlIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9i
amVjdAogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICBjb25zdHJ1
Y3RvcihpZCwgYnJlYWtwb2ludCwgZXhwcmVzc2lvbikKKyAgICB7CisgICAgICAgIHN1cGVyKCk7
CiAKICAgICAgICAgY29uc29sZS5hc3NlcnQoaWQpOwogICAgICAgICBjb25zb2xlLmFzc2VydChi
cmVha3BvaW50IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQpOwpAQCAtNDMsMzYg
KzUwLDI0IEBAIFdlYkluc3BlY3Rvci5Qcm9iZSA9IGZ1bmN0aW9uKGlkLCBicmVha3BvaW50LCBl
eHByZXNzaW9uKQogICAgICAgICB0aGlzLl9icmVha3BvaW50ID0gYnJlYWtwb2ludDsKICAgICAg
ICAgdGhpcy5fZXhwcmVzc2lvbiA9IGV4cHJlc3Npb247CiAgICAgICAgIHRoaXMuX3NhbXBsZXMg
PSBbXTsKLX07Ci0KLVdlYkluc3BlY3Rvci5PYmplY3QuYWRkQ29uc3RydWN0b3JGdW5jdGlvbnMo
V2ViSW5zcGVjdG9yLlByb2JlKTsKLQotV2ViSW5zcGVjdG9yLlByb2JlLkV2ZW50ID0gewotICAg
IEV4cHJlc3Npb25DaGFuZ2VkOiAicHJvYmUtb2JqZWN0LWV4cHJlc3Npb24tY2hhbmdlZCIsCi0g
ICAgU2FtcGxlQWRkZWQ6ICJwcm9iZS1vYmplY3Qtc2FtcGxlLWFkZGVkIiwKLSAgICBTYW1wbGVz
Q2xlYXJlZDogInByb2JlLW9iamVjdC1zYW1wbGVzLWNsZWFyZWQiCi19OwotCi1XZWJJbnNwZWN0
b3IuUHJvYmUucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuUHJv
YmUsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZSwKKyAgICB9
CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBpZCgpCiAgICAgewogICAgICAgICByZXR1cm4g
dGhpcy5faWQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgYnJlYWtwb2ludCgpCiAgICAgewog
ICAgICAgICByZXR1cm4gdGhpcy5fYnJlYWtwb2ludDsKLSAgICB9LAorICAgIH0KIAogICAgIGdl
dCBleHByZXNzaW9uKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9leHByZXNzaW9uOwot
ICAgIH0sCisgICAgfQogCiAgICAgc2V0IGV4cHJlc3Npb24odmFsdWUpCiAgICAgewpAQCAtODMs
MjMgKzc4LDI5IEBAIFdlYkluc3BlY3Rvci5Qcm9iZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRo
aXMuX2V4cHJlc3Npb24gPSB2YWx1ZTsKICAgICAgICAgdGhpcy5jbGVhclNhbXBsZXMoKTsKICAg
ICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlByb2JlLkV2
ZW50LkV4cHJlc3Npb25DaGFuZ2VkLCBkYXRhKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBz
YW1wbGVzKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zYW1wbGVzLnNsaWNlKCk7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBjbGVhclNhbXBsZXM6IGZ1bmN0aW9uKCkKKyAgICBjbGVhclNh
bXBsZXMoKQogICAgIHsKICAgICAgICAgdGhpcy5fc2FtcGxlcyA9IFtdOwogICAgICAgICB0aGlz
LmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuUHJvYmUuRXZlbnQuU2FtcGxl
c0NsZWFyZWQpOwotICAgIH0sCisgICAgfQogCi0gICAgYWRkU2FtcGxlOiBmdW5jdGlvbihzYW1w
bGUpCisgICAgYWRkU2FtcGxlKHNhbXBsZSkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KHNhbXBsZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Qcm9iZVNhbXBsZSwgIldyb25nIG9iamVj
dCB0eXBlIHBhc3NlZCBhcyBwcm9iZSBzYW1wbGU6ICIsIHNhbXBsZSk7CiAgICAgICAgIHRoaXMu
X3NhbXBsZXMucHVzaChzYW1wbGUpOwogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3Rl
bmVycyhXZWJJbnNwZWN0b3IuUHJvYmUuRXZlbnQuU2FtcGxlQWRkZWQsIHNhbXBsZSk7CiAgICAg
fQogfTsKKworV2ViSW5zcGVjdG9yLlByb2JlLkV2ZW50ID0geworICAgIEV4cHJlc3Npb25DaGFu
Z2VkOiAicHJvYmUtb2JqZWN0LWV4cHJlc3Npb24tY2hhbmdlZCIsCisgICAgU2FtcGxlQWRkZWQ6
ICJwcm9iZS1vYmplY3Qtc2FtcGxlLWFkZGVkIiwKKyAgICBTYW1wbGVzQ2xlYXJlZDogInByb2Jl
LW9iamVjdC1zYW1wbGVzLWNsZWFyZWQiCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Byb2JlU2V0LmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Byb2JlU2V0LmpzCmluZGV4IDFmMDIwZjEuLmJi
ZDBhYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01v
ZGVscy9Qcm9iZVNldC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Nb2RlbHMvUHJvYmVTZXQuanMKQEAgLTI2LDExICsyNiwxNCBAQAogCiAvLyBBIFByb2JlU2V0
IGNsdXN0ZXJzIFByb2JlcyBmcm9tIHRoZSBzYW1lIEJyZWFrcG9pbnQgYW5kIHRoZWlyIHNhbXBs
ZXMuCiAKLVdlYkluc3BlY3Rvci5Qcm9iZVNldCA9IGZ1bmN0aW9uKGJyZWFrcG9pbnQpCitXZWJJ
bnNwZWN0b3IuUHJvYmVTZXQgPSBjbGFzcyBQcm9iZVNldCBleHRlbmRzIFdlYkluc3BlY3Rvci5P
YmplY3QKIHsKKyAgICBjb25zdHJ1Y3RvcihicmVha3BvaW50KQorICAgIHsKKyAgICAgICAgc3Vw
ZXIoKTsKKwogICAgICAgICBjb25zb2xlLmFzc2VydChicmVha3BvaW50IGluc3RhbmNlb2YgV2Vi
SW5zcGVjdG9yLkJyZWFrcG9pbnQsICJVbmtub3duIGJyZWFrcG9pbnQgYXJndW1lbnQ6ICIsIGJy
ZWFrcG9pbnQpOwogCi0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwogICAgICAg
ICB0aGlzLl9icmVha3BvaW50ID0gYnJlYWtwb2ludDsKICAgICAgICAgdGhpcy5fcHJvYmVzID0g
W107CiAgICAgICAgIHRoaXMuX3Byb2Jlc0J5SWRlbnRpZmllciA9IG5ldyBNYXA7CkBAIC00Miw0
NCArNDUsMjkgQEAgV2ViSW5zcGVjdG9yLlByb2JlU2V0ID0gZnVuY3Rpb24oYnJlYWtwb2ludCkK
ICAgICAgICAgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNw
ZWN0b3IuQnJlYWtwb2ludC5FdmVudC5SZXNvbHZlZFN0YXRlRGlkQ2hhbmdlLCB0aGlzLl9icmVh
a3BvaW50UmVzb2x2ZWRTdGF0ZURpZENoYW5nZSwgdGhpcyk7CiAgICAgfQogCi1XZWJJbnNwZWN0
b3IuT2JqZWN0LmFkZENvbnN0cnVjdG9yRnVuY3Rpb25zKFdlYkluc3BlY3Rvci5Qcm9iZVNldCk7
Ci0KLVdlYkluc3BlY3Rvci5Qcm9iZVNldC5FdmVudCA9IHsKLSAgICBQcm9iZUFkZGVkOiAicHJv
YmUtc2V0LXByb2JlLWFkZGVkIiwKLSAgICBQcm9iZVJlbW92ZWQ6ICJwcm9iZS1zZXQtcHJvYmUt
cmVtb3ZlZCIsCi0gICAgUmVzb2x2ZWRTdGF0ZURpZENoYW5nZTogInByb2JlLXNldC1yZXNvbHZl
ZC1zdGF0ZS1kaWQtY2hhbmdlIiwKLSAgICBTYW1wbGVzQ2xlYXJlZDogInByb2JlLXNldC1zYW1w
bGVzLWNsZWFyZWQiLAotfTsKLQotV2ViSW5zcGVjdG9yLlByb2JlU2V0LlNhbXBsZU9iamVjdFRp
dGxlID0gIk9iamVjdCI7Ci0KLVdlYkluc3BlY3Rvci5Qcm9iZVNldC5wcm90b3R5cGUgPSB7Ci0g
ICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5Qcm9iZVNldCwKLSAgICBfX3Byb3RvX186IFdl
Ykluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlLAotCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQg
YnJlYWtwb2ludCgpCiAgICAgewogICAgICAgICAgcmV0dXJuIHRoaXMuX2JyZWFrcG9pbnQ7Ci0g
ICB9LAorICAgIH0KIAogICAgIGdldCBwcm9iZXMoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRo
aXMuX3Byb2Jlcy5zbGljZSgpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGRhdGFUYWJsZSgp
CiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZGF0YVRhYmxlOwotICAgIH0sCisgICAgfQog
Ci0gICAgY2xlYXI6IGZ1bmN0aW9uKCkKKyAgICBjbGVhcigpCiAgICAgewogICAgICAgICB0aGlz
Ll9icmVha3BvaW50LmNsZWFyQWN0aW9ucyhXZWJJbnNwZWN0b3IuQnJlYWtwb2ludEFjdGlvbi5U
eXBlLlByb2JlKTsKLSAgICB9LAorICAgIH0KIAotICAgIGNsZWFyU2FtcGxlczogZnVuY3Rpb24o
KQorICAgIGNsZWFyU2FtcGxlcygpCiAgICAgewogICAgICAgICBmb3IgKHZhciBwcm9iZSBvZiB0
aGlzLl9wcm9iZXMpCiAgICAgICAgICAgICBwcm9iZS5jbGVhclNhbXBsZXMoKTsKQEAgLTg3LDE0
ICs3NSwxNCBAQCBXZWJJbnNwZWN0b3IuUHJvYmVTZXQucHJvdG90eXBlID0gewogICAgICAgICB2
YXIgb2xkVGFibGUgPSB0aGlzLl9kYXRhVGFibGU7CiAgICAgICAgIHRoaXMuX2NyZWF0ZURhdGFU
YWJsZSgpOwogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0
b3IuUHJvYmVTZXQuRXZlbnQuU2FtcGxlc0NsZWFyZWQsIHtvbGRUYWJsZX0pOwotICAgIH0sCisg
ICAgfQogCi0gICAgY3JlYXRlUHJvYmU6IGZ1bmN0aW9uKGV4cHJlc3Npb24pCisgICAgY3JlYXRl
UHJvYmUoZXhwcmVzc2lvbikKICAgICB7CiAgICAgICAgIHRoaXMuYnJlYWtwb2ludC5jcmVhdGVB
Y3Rpb24oV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRBY3Rpb24uVHlwZS5Qcm9iZSwgbnVsbCwgZXhw
cmVzc2lvbik7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBhZGRQcm9iZTogZnVuY3Rpb24ocHJvYmUp
CisgICAgYWRkUHJvYmUocHJvYmUpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChwcm9i
ZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Qcm9iZSwgIlRyaWVkIHRvIGFkZCBub24tcHJvYmUg
IiwgcHJvYmUsICIgdG8gcHJvYmUgZ3JvdXAiLCB0aGlzKTsKICAgICAgICAgY29uc29sZS5hc3Nl
cnQocHJvYmUuYnJlYWtwb2ludCA9PT0gdGhpcy5icmVha3BvaW50LCAiUHJvYmUgYW5kIFByb2Jl
U2V0IG11c3QgaGF2ZSBzYW1lIGJyZWFrcG9pbnQuIiwgcHJvYmUsIHRoaXMpOwpAQCAtMTA0LDkg
KzkyLDkgQEAgV2ViSW5zcGVjdG9yLlByb2JlU2V0LnByb3RvdHlwZSA9IHsKIAogICAgICAgICB0
aGlzLmRhdGFUYWJsZS5hZGRQcm9iZShwcm9iZSk7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVu
dFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5Qcm9iZVNldC5FdmVudC5Qcm9iZUFkZGVkLCBwcm9i
ZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZW1vdmVQcm9iZTogZnVuY3Rpb24ocHJvYmUpCisg
ICAgcmVtb3ZlUHJvYmUocHJvYmUpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChwcm9i
ZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Qcm9iZSwgIlRyaWVkIHRvIHJlbW92ZSBub24tcHJv
YmUgIiwgcHJvYmUsICIgdG8gcHJvYmUgZ3JvdXAiLCB0aGlzKTsKICAgICAgICAgY29uc29sZS5h
c3NlcnQodGhpcy5fcHJvYmVzLmluZGV4T2YocHJvYmUpICE9PSAtMSwgIlRyaWVkIHRvIHJlbW92
ZSBwcm9iZSIsIHByb2JlLCAiIG5vdCBpbiBncm91cCAiLCB0aGlzKTsKQEAgLTExNiwzMyArMTA0
LDMzIEBAIFdlYkluc3BlY3Rvci5Qcm9iZVNldC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMu
X3Byb2Jlc0J5SWRlbnRpZmllci5kZWxldGUocHJvYmUuaWQpOwogICAgICAgICB0aGlzLmRhdGFU
YWJsZS5yZW1vdmVQcm9iZShwcm9iZSk7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlz
dGVuZXJzKFdlYkluc3BlY3Rvci5Qcm9iZVNldC5FdmVudC5Qcm9iZVJlbW92ZWQsIHByb2JlKTsK
LSAgICB9LAorICAgIH0KIAotICAgIHdpbGxSZW1vdmU6IGZ1bmN0aW9uKCkKKyAgICB3aWxsUmVt
b3ZlKCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9wcm9iZXMubGVuZ3Ro
LCAiUHJvYmVTZXQud2lsbFJlbW92ZSBjYWxsZWQsIGJ1dCBwcm9iZXMgc3RpbGwgYXNzb2NpYXRl
ZCB3aXRoIGdyb3VwOiAiLCB0aGlzLl9wcm9iZXMpOwogCiAgICAgICAgIFdlYkluc3BlY3Rvci5G
cmFtZS5yZW1vdmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5GcmFtZS5FdmVudC5NYWluUmVz
b3VyY2VEaWRDaGFuZ2UsIHRoaXMuX21haW5SZXNvdXJjZUNoYW5nZWQsIHRoaXMpOwogICAgICAg
ICBXZWJJbnNwZWN0b3IuUHJvYmUucmVtb3ZlRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuUHJv
YmUuRXZlbnQuU2FtcGxlQWRkZWQsIHRoaXMuX3NhbXBsZUNvbGxlY3RlZCwgdGhpcyk7CiAgICAg
ICAgIFdlYkluc3BlY3Rvci5CcmVha3BvaW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVj
dG9yLkJyZWFrcG9pbnQuRXZlbnQuUmVzb2x2ZWRTdGF0ZURpZENoYW5nZSwgdGhpcy5fYnJlYWtw
b2ludFJlc29sdmVkU3RhdGVEaWRDaGFuZ2UsIHRoaXMpOwotICAgIH0sCisgICAgfQogCiAgICAg
Ly8gUHJpdmF0ZQogCi0gICAgX21haW5SZXNvdXJjZUNoYW5nZWQ6IGZ1bmN0aW9uKCkKKyAgICBf
bWFpblJlc291cmNlQ2hhbmdlZCgpCiAgICAgewogICAgICAgICB0aGlzLmRhdGFUYWJsZS5tYWlu
UmVzb3VyY2VDaGFuZ2VkKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY3JlYXRlRGF0YVRhYmxl
OiBmdW5jdGlvbigpCisgICAgX2NyZWF0ZURhdGFUYWJsZSgpCiAgICAgewogICAgICAgICBpZiAo
dGhpcy5kYXRhVGFibGUpCiAgICAgICAgICAgICB0aGlzLmRhdGFUYWJsZS53aWxsUmVtb3ZlKCk7
CiAKICAgICAgICAgdGhpcy5fZGF0YVRhYmxlID0gbmV3IFdlYkluc3BlY3Rvci5Qcm9iZVNldERh
dGFUYWJsZSh0aGlzKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9zYW1wbGVDb2xsZWN0ZWQ6IGZ1
bmN0aW9uKGV2ZW50KQorICAgIF9zYW1wbGVDb2xsZWN0ZWQoZXZlbnQpCiAgICAgewogICAgICAg
ICB2YXIgc2FtcGxlID0gZXZlbnQuZGF0YTsKICAgICAgICAgY29uc29sZS5hc3NlcnQoc2FtcGxl
IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlByb2JlU2FtcGxlLCAiVHJpZWQgdG8gYWRkIG5vbi1z
YW1wbGUgdG8gcHJvYmUgZ3JvdXA6ICIsIHNhbXBsZSk7CkBAIC0xNTMsMTAgKzE0MSwxNyBAQCBX
ZWJJbnNwZWN0b3IuUHJvYmVTZXQucHJvdG90eXBlID0gewogCiAgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KHRoaXMuZGF0YVRhYmxlKTsKICAgICAgICAgdGhpcy5kYXRhVGFibGUuYWRkU2FtcGxlRm9y
UHJvYmUocHJvYmUsIHNhbXBsZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfYnJlYWtwb2ludFJl
c29sdmVkU3RhdGVEaWRDaGFuZ2U6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9icmVha3BvaW50UmVz
b2x2ZWRTdGF0ZURpZENoYW5nZShldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hF
dmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5Qcm9iZVNldC5FdmVudC5SZXNvbHZlZFN0YXRl
RGlkQ2hhbmdlKTsKICAgICB9CiB9OworCitXZWJJbnNwZWN0b3IuUHJvYmVTZXQuRXZlbnQgPSB7
CisgICAgUHJvYmVBZGRlZDogInByb2JlLXNldC1wcm9iZS1hZGRlZCIsCisgICAgUHJvYmVSZW1v
dmVkOiAicHJvYmUtc2V0LXByb2JlLXJlbW92ZWQiLAorICAgIFJlc29sdmVkU3RhdGVEaWRDaGFu
Z2U6ICJwcm9iZS1zZXQtcmVzb2x2ZWQtc3RhdGUtZGlkLWNoYW5nZSIsCisgICAgU2FtcGxlc0Ns
ZWFyZWQ6ICJwcm9iZS1zZXQtc2FtcGxlcy1jbGVhcmVkIiwKK307CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUHJvYmVTZXREYXRhRnJhbWUu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUHJvYmVTZXRE
YXRhRnJhbWUuanMKaW5kZXggOWUxMTZkMi4uMzVjMTNmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Byb2JlU2V0RGF0YUZyYW1lLmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Qcm9iZVNldERh
dGFGcmFtZS5qcwpAQCAtMjQsNzQgKzI0LDc4IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdl
Ykluc3BlY3Rvci5Qcm9iZVNldERhdGFGcmFtZSA9IGZ1bmN0aW9uKGluZGV4KQorV2ViSW5zcGVj
dG9yLlByb2JlU2V0RGF0YUZyYW1lID0gY2xhc3MgUHJvYmVTZXREYXRhRnJhbWUgZXh0ZW5kcyBX
ZWJJbnNwZWN0b3IuT2JqZWN0CiB7CisgICAgY29uc3RydWN0b3IoaW5kZXgpCisgICAgeworICAg
ICAgICBzdXBlcigpOworCiAgICAgICAgIHRoaXMuX2NvdW50ID0gMDsKICAgICAgICAgdGhpcy5f
aW5kZXggPSBpbmRleDsKICAgICAgICAgdGhpcy5fc2VwYXJhdG9yID0gZmFsc2U7Ci19OworICAg
IH0KIAotV2ViSW5zcGVjdG9yLlByb2JlU2V0RGF0YUZyYW1lLmNvbXBhcmUgPSBmdW5jdGlvbihh
LCBiKSB7CisgICAgLy8gU3RhdGljCisKKyAgICBzdGF0aWMgY29tcGFyZShhLCBiKQorICAgIHsK
ICAgICAgICAgY29uc29sZS5hc3NlcnQoYSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Qcm9iZVNl
dERhdGFGcmFtZSwgYSk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGIgaW5zdGFuY2VvZiBXZWJJ
bnNwZWN0b3IuUHJvYmVTZXREYXRhRnJhbWUsIGIpOwogCiAgICAgICAgIHJldHVybiBhLmluZGV4
IC0gYi5pbmRleDsKICAgICB9CiAKLVdlYkluc3BlY3Rvci5Qcm9iZVNldERhdGFGcmFtZS5NaXNz
aW5nVmFsdWUgPSAiPyI7Ci0KLVdlYkluc3BlY3Rvci5Qcm9iZVNldERhdGFGcmFtZS5wcm90b3R5
cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5Qcm9iZVNldERhdGFGcmFtZSwK
LQogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IGtleSgpCiAgICAgewogICAgICAgICByZXR1cm4g
U3RyaW5nKHRoaXMuX2luZGV4KTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBjb3VudCgpCiAg
ICAgewogICAgICAgICByZXR1cm4gdGhpcy5fY291bnQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBn
ZXQgaW5kZXgoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2luZGV4OwotICAgIH0sCisg
ICAgfQogCiAgICAgZ2V0IGlzU2VwYXJhdG9yKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlz
Ll9zZXBhcmF0b3I7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBUaGUgbGFzdCBkYXRhIGZyYW1l
IGJlZm9yZSBhIG1haW4gZnJhbWUgbmF2aWdhdGlvbiBpcyBtYXJrZWQgYXMgYSAic2VwYXJhdG9y
IiBmcmFtZS4KICAgICBzZXQgaXNTZXBhcmF0b3IodmFsdWUpCiAgICAgewogICAgICAgICB0aGlz
Ll9zZXBhcmF0b3IgPSAhIXZhbHVlOwotICAgIH0sCisgICAgfQogCi0gICAgYWRkU2FtcGxlRm9y
UHJvYmU6IGZ1bmN0aW9uKHByb2JlLCBzYW1wbGUpCisgICAgYWRkU2FtcGxlRm9yUHJvYmUocHJv
YmUsIHNhbXBsZSkKICAgICB7CiAgICAgICAgIHRoaXNbcHJvYmUuaWRdID0gc2FtcGxlOwogICAg
ICAgICB0aGlzLl9jb3VudCsrOwotICAgIH0sCisgICAgfQogCi0gICAgbWlzc2luZ0tleXM6IGZ1
bmN0aW9uKHByb2JlU2V0KQorICAgIG1pc3NpbmdLZXlzKHByb2JlU2V0KQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHByb2JlU2V0LnByb2Jlcy5maWx0ZXIoZnVuY3Rpb24ocHJvYmUpIHsKICAgICAg
ICAgICAgIHJldHVybiAhdGhpcy5oYXNPd25Qcm9wZXJ0eShwcm9iZS5pZCk7CiAgICAgICAgIH0s
IHRoaXMpOwotICAgIH0sCisgICAgfQogCi0gICAgaXNDb21wbGV0ZTogZnVuY3Rpb24ocHJvYmVT
ZXQpCisgICAgaXNDb21wbGV0ZShwcm9iZVNldCkKICAgICB7CiAgICAgICAgIHJldHVybiAhdGhp
cy5taXNzaW5nS2V5cyhwcm9iZVNldCkubGVuZ3RoOwotICAgIH0sCisgICAgfQogCi0gICAgZmls
bE1pc3NpbmdWYWx1ZXM6IGZ1bmN0aW9uKHByb2JlU2V0KQorICAgIGZpbGxNaXNzaW5nVmFsdWVz
KHByb2JlU2V0KQogICAgIHsKICAgICAgICAgZm9yICh2YXIga2V5IG9mIHRoaXMubWlzc2luZ0tl
eXMocHJvYmVTZXQpKQogICAgICAgICAgICAgdGhpc1trZXldID0gV2ViSW5zcGVjdG9yLlByb2Jl
U2V0RGF0YUZyYW1lLk1pc3NpbmdWYWx1ZTsKICAgICB9CiB9OworCitXZWJJbnNwZWN0b3IuUHJv
YmVTZXREYXRhRnJhbWUuTWlzc2luZ1ZhbHVlID0gIj8iOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Byb2JlU2V0RGF0YVRhYmxlLmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Byb2JlU2V0RGF0YVRh
YmxlLmpzCmluZGV4IGM1MzgxNDMuLjRkY2VlMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Qcm9iZVNldERhdGFUYWJsZS5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUHJvYmVTZXREYXRhVGFi
bGUuanMKQEAgLTI0LDUzICsyNCw0MiBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNw
ZWN0b3IuUHJvYmVTZXREYXRhVGFibGUgPSBmdW5jdGlvbihwcm9iZVNldCkKK1dlYkluc3BlY3Rv
ci5Qcm9iZVNldERhdGFUYWJsZSA9IGNsYXNzIFByb2JlU2V0RGF0YVRhYmxlIGV4dGVuZHMgV2Vi
SW5zcGVjdG9yLk9iamVjdAogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsK
KyAgICBjb25zdHJ1Y3Rvcihwcm9iZVNldCkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CiAKICAg
ICAgICAgdGhpcy5fcHJvYmVTZXQgPSBwcm9iZVNldDsKICAgICAgICAgdGhpcy5fZnJhbWVzID0g
W107CiAgICAgICAgIHRoaXMuX3ByZXZpb3VzQmF0Y2hJZGVudGlmaWVyID0gV2ViSW5zcGVjdG9y
LlByb2JlU2V0RGF0YVRhYmxlLlNlbnRpbmVsVmFsdWU7Ci19OwotCi1XZWJJbnNwZWN0b3IuUHJv
YmVTZXREYXRhVGFibGUuRXZlbnQgPSB7Ci0gICAgRnJhbWVJbnNlcnRlZDogInByb2JlLXNldC1k
YXRhLXRhYmxlLWZyYW1lLWluc2VydGVkIiwKLSAgICBTZXBhcmF0b3JJbnNlcnRlZDogInByb2Jl
LXNldC1kYXRhLXRhYmxlLXNlcGFyYXRvci1pbnNlcnRlZCIsCi0gICAgV2lsbFJlbW92ZTogInBy
b2JlLXNldC1kYXRhLXRhYmxlLXdpbGwtcmVtb3ZlIgotfTsKLQotV2ViSW5zcGVjdG9yLlByb2Jl
U2V0RGF0YVRhYmxlLlNlbnRpbmVsVmFsdWUgPSAtMTsKLVdlYkluc3BlY3Rvci5Qcm9iZVNldERh
dGFUYWJsZS5Vbmtub3duVmFsdWUgPSAiPyI7Ci0KLVdlYkluc3BlY3Rvci5Qcm9iZVNldERhdGFU
YWJsZS5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5Qcm9iZVNl
dERhdGFUYWJsZSwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBl
LAorICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IGZyYW1lcygpCiAgICAgewogICAg
ICAgICByZXR1cm4gdGhpcy5fZnJhbWVzLnNsaWNlKCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBn
ZXQgc2VwYXJhdG9ycygpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZnJhbWVzLmZpbHRl
cihmdW5jdGlvbihmcmFtZSkgeyByZXR1cm4gZnJhbWUuaXNTZXBhcmF0b3I7IH0pOwotICAgIH0s
CisgICAgfQogCi0gICAgd2lsbFJlbW92ZTogZnVuY3Rpb24oKQorICAgIHdpbGxSZW1vdmUoKQog
ICAgIHsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9y
LlByb2JlU2V0RGF0YVRhYmxlLkV2ZW50LldpbGxSZW1vdmUpOwogICAgICAgICB0aGlzLl9mcmFt
ZXMgPSBbXTsKICAgICAgICAgZGVsZXRlIHRoaXMuX3Byb2JlU2V0OwotICAgIH0sCisgICAgfQog
Ci0gICAgbWFpblJlc291cmNlQ2hhbmdlZDogZnVuY3Rpb24oKQorICAgIG1haW5SZXNvdXJjZUNo
YW5nZWQoKQogICAgIHsKICAgICAgICAgdGhpcy5hZGRTZXBhcmF0b3IoKTsKLSAgICB9LAorICAg
IH0KIAotICAgIGFkZFNhbXBsZUZvclByb2JlOiBmdW5jdGlvbihwcm9iZSwgc2FtcGxlKQorICAg
IGFkZFNhbXBsZUZvclByb2JlKHByb2JlLCBzYW1wbGUpCiAgICAgewogICAgICAgICAvLyBFYWdl
cmx5IHNhdmUgdGhlIGZyYW1lIGlmIHRoZSBiYXRjaCBpZGVudGlmaWVyIGRpZmZlcnMsIG9yIHdl
IGtub3cgdGhlIGZyYW1lIGlzIGZ1bGwuCiAgICAgICAgIC8vIENyZWF0ZSBhIG5ldyBmcmFtZSB3
aGVuIHRoZSBiYXRjaCBpZGVudGlmaWVyIGRpZmZlcnMuCkBAIC04OSwzNSArNzgsMzUgQEAgV2Vi
SW5zcGVjdG9yLlByb2JlU2V0RGF0YVRhYmxlLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRo
aXMuYWRkRnJhbWUodGhpcy5fb3BlbkZyYW1lKTsKICAgICAgICAgICAgIHRoaXMuX29wZW5GcmFt
ZSA9IG51bGw7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAotICAgIGFkZFByb2JlOiBmdW5j
dGlvbihwcm9iZSkKKyAgICBhZGRQcm9iZShwcm9iZSkKICAgICB7CiAgICAgICAgIGZvciAodmFy
IGZyYW1lIG9mIHRoaXMuZnJhbWVzKQogICAgICAgICAgICAgaWYgKCFmcmFtZVtwcm9iZS5pZF0p
CiAgICAgICAgICAgICAgICAgZnJhbWVbcHJvYmUuaWRdID0gV2ViSW5zcGVjdG9yLlByb2JlU2V0
RGF0YVRhYmxlLlVua25vd25WYWx1ZTsKLSAgICB9LAorICAgIH0KIAotICAgIHJlbW92ZVByb2Jl
OiBmdW5jdGlvbihwcm9iZSkKKyAgICByZW1vdmVQcm9iZShwcm9iZSkKICAgICB7CiAgICAgICAg
IGZvciAodmFyIGZyYW1lIG9mIHRoaXMuZnJhbWVzKQogICAgICAgICAgICAgZGVsZXRlIGZyYW1l
W3Byb2JlLmlkXTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByb3RlY3RlZCAtIGNhbiBiZSBv
dmVycmlkZGVuIGJ5IHN1YmNsYXNzZXMuCiAKLSAgICBjcmVhdGVGcmFtZTogZnVuY3Rpb24oKQor
ICAgIGNyZWF0ZUZyYW1lKCkKICAgICB7CiAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9y
LlByb2JlU2V0RGF0YUZyYW1lKHRoaXMuX2ZyYW1lcy5sZW5ndGgpOwotICAgIH0sCisgICAgfQog
Ci0gICAgYWRkRnJhbWU6IGZ1bmN0aW9uKGZyYW1lKQorICAgIGFkZEZyYW1lKGZyYW1lKQogICAg
IHsKICAgICAgICAgdGhpcy5fZnJhbWVzLnB1c2goZnJhbWUpOwogICAgICAgICB0aGlzLmRpc3Bh
dGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuUHJvYmVTZXREYXRhVGFibGUuRXZlbnQu
RnJhbWVJbnNlcnRlZCwgZnJhbWUpOwotICAgIH0sCisgICAgfQogCi0gICAgYWRkU2VwYXJhdG9y
OiBmdW5jdGlvbigpCisgICAgYWRkU2VwYXJhdG9yKCkKICAgICB7CiAgICAgICAgIC8vIFNlcGFy
YXRvcnMgbXVzdCBiZSBhc3NvY2lhdGVkIHdpdGggYSBmcmFtZS4KICAgICAgICAgaWYgKCF0aGlz
Ll9mcmFtZXMubGVuZ3RoKQpAQCAtMTMyLDMgKzEyMSwxMiBAQCBXZWJJbnNwZWN0b3IuUHJvYmVT
ZXREYXRhVGFibGUucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xp
c3RlbmVycyhXZWJJbnNwZWN0b3IuUHJvYmVTZXREYXRhVGFibGUuRXZlbnQuU2VwYXJhdG9ySW5z
ZXJ0ZWQsIHByZXZpb3VzRnJhbWUpOwogICAgIH0KIH07CisKK1dlYkluc3BlY3Rvci5Qcm9iZVNl
dERhdGFUYWJsZS5FdmVudCA9IHsKKyAgICBGcmFtZUluc2VydGVkOiAicHJvYmUtc2V0LWRhdGEt
dGFibGUtZnJhbWUtaW5zZXJ0ZWQiLAorICAgIFNlcGFyYXRvckluc2VydGVkOiAicHJvYmUtc2V0
LWRhdGEtdGFibGUtc2VwYXJhdG9yLWluc2VydGVkIiwKKyAgICBXaWxsUmVtb3ZlOiAicHJvYmUt
c2V0LWRhdGEtdGFibGUtd2lsbC1yZW1vdmUiCit9OworCitXZWJJbnNwZWN0b3IuUHJvYmVTZXRE
YXRhVGFibGUuU2VudGluZWxWYWx1ZSA9IC0xOworV2ViSW5zcGVjdG9yLlByb2JlU2V0RGF0YVRh
YmxlLlVua25vd25WYWx1ZSA9ICI/IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL01vZGVscy9Qcm9maWxlLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Byb2ZpbGUuanMKaW5kZXggNzdlZDgwOC4uYjkyN2M5OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1By
b2ZpbGUuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxz
L1Byb2ZpbGUuanMKQEAgLTIzLDkgKzIzLDExIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlByb2ZpbGUgPSBmdW5jdGlvbih0b3BEb3du
Um9vdE5vZGVzKQorV2ViSW5zcGVjdG9yLlByb2ZpbGUgPSBjbGFzcyBQcm9maWxlIGV4dGVuZHMg
V2ViSW5zcGVjdG9yLk9iamVjdAogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlz
KTsKKyAgICBjb25zdHJ1Y3Rvcih0b3BEb3duUm9vdE5vZGVzKQorICAgIHsKKyAgICAgICAgc3Vw
ZXIoKTsKIAogICAgICAgICB0b3BEb3duUm9vdE5vZGVzID0gdG9wRG93blJvb3ROb2RlcyB8fCBb
XTsKIApAQCAtMzMsMTggKzM1LDE0IEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlID0gZnVuY3Rpb24o
dG9wRG93blJvb3ROb2RlcykKICAgICAgICAgY29uc29sZS5hc3NlcnQodG9wRG93blJvb3ROb2Rl
cy5yZWR1Y2UoZnVuY3Rpb24ocHJldmlvdXNWYWx1ZSwgbm9kZSkgeyByZXR1cm4gcHJldmlvdXNW
YWx1ZSAmJiBub2RlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlByb2ZpbGVOb2RlOyB9LCB0cnVl
KSk7CiAKICAgICAgICAgdGhpcy5fdG9wRG93blJvb3ROb2RlcyA9IHRvcERvd25Sb290Tm9kZXM7
Ci19OwotCi1XZWJJbnNwZWN0b3IuUHJvZmlsZS5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0
b3I6IFdlYkluc3BlY3Rvci5Qcm9maWxlLAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLk9i
amVjdC5wcm90b3R5cGUsCisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgdG9wRG93
blJvb3ROb2RlcygpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fdG9wRG93blJvb3ROb2Rl
czsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBib3R0b21VcFJvb3ROb2RlcygpCiAgICAgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1By
b2ZpbGVOb2RlLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxz
L1Byb2ZpbGVOb2RlLmpzCmluZGV4IDg0ZmRhZjYwLi44NzUwOWM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUHJvZmlsZU5vZGUuanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Byb2ZpbGVOb2Rl
LmpzCkBAIC0yMyw5ICsyMywxMSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKLVdlYkluc3BlY3Rvci5Qcm9maWxlTm9kZSA9IGZ1bmN0aW9uKGlkLCB0eXBlLCBm
dW5jdGlvbk5hbWUsIHNvdXJjZUNvZGVMb2NhdGlvbiwgY2FsbHMsIGNoaWxkTm9kZXMpCitXZWJJ
bnNwZWN0b3IuUHJvZmlsZU5vZGUgPSBjbGFzcyBQcm9maWxlTm9kZSBleHRlbmRzIFdlYkluc3Bl
Y3Rvci5PYmplY3QKIHsKLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CisgICAg
Y29uc3RydWN0b3IoaWQsIHR5cGUsIGZ1bmN0aW9uTmFtZSwgc291cmNlQ29kZUxvY2F0aW9uLCBj
YWxscywgY2hpbGROb2RlcykKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CiAKICAgICAgICAgY2hp
bGROb2RlcyA9IGNoaWxkTm9kZXMgfHwgW107CiAKQEAgLTUyLDk4ICs1NCw4MiBAQCBXZWJJbnNw
ZWN0b3IuUHJvZmlsZU5vZGUgPSBmdW5jdGlvbihpZCwgdHlwZSwgZnVuY3Rpb25OYW1lLCBzb3Vy
Y2VDb2RlTG9jYXRpb24sCiAKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9jYWxs
cy5sZW5ndGg7ICsraSkKICAgICAgICAgICAgIHRoaXMuX2NhbGxzW2ldLmVzdGFibGlzaFJlbGF0
aW9uc2hpcHModGhpcywgdGhpcy5fY2FsbHNbaSAtIDFdLCB0aGlzLl9jYWxsc1tpICsgMV0pOwot
fTsKLQotV2ViSW5zcGVjdG9yLlByb2ZpbGVOb2RlLlR5cGUgPSB7Ci0gICAgRnVuY3Rpb246ICJw
cm9maWxlLW5vZGUtdHlwZS1mdW5jdGlvbiIsCi0gICAgUHJvZ3JhbTogInByb2ZpbGUtbm9kZS10
eXBlLXByb2dyYW0iCi19OwotCi1XZWJJbnNwZWN0b3IuUHJvZmlsZU5vZGUuVHlwZUlkZW50aWZp
ZXIgPSAicHJvZmlsZS1ub2RlIjsKLVdlYkluc3BlY3Rvci5Qcm9maWxlTm9kZS5UeXBlQ29va2ll
S2V5ID0gInByb2ZpbGUtbm9kZS10eXBlIjsKLVdlYkluc3BlY3Rvci5Qcm9maWxlTm9kZS5GdW5j
dGlvbk5hbWVDb29raWVLZXkgPSAicHJvZmlsZS1ub2RlLWZ1bmN0aW9uLW5hbWUiOwotV2ViSW5z
cGVjdG9yLlByb2ZpbGVOb2RlLlNvdXJjZUNvZGVVUkxDb29raWVLZXkgPSAicHJvZmlsZS1ub2Rl
LXNvdXJjZS1jb2RlLXVybCI7Ci1XZWJJbnNwZWN0b3IuUHJvZmlsZU5vZGUuU291cmNlQ29kZUxv
Y2F0aW9uTGluZUNvb2tpZUtleSA9ICJwcm9maWxlLW5vZGUtc291cmNlLWNvZGUtbG9jYXRpb24t
bGluZSI7Ci1XZWJJbnNwZWN0b3IuUHJvZmlsZU5vZGUuU291cmNlQ29kZUxvY2F0aW9uQ29sdW1u
Q29va2llS2V5ID0gInByb2ZpbGUtbm9kZS1zb3VyY2UtY29kZS1sb2NhdGlvbi1jb2x1bW4iOwot
Ci1XZWJJbnNwZWN0b3IuUHJvZmlsZU5vZGUucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9y
OiBXZWJJbnNwZWN0b3IuUHJvZmlsZU5vZGUsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3Iu
T2JqZWN0LnByb3RvdHlwZSwKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBpZCgp
CiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5faWQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBn
ZXQgdHlwZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fdHlwZTsKLSAgICB9LAorICAg
IH0KIAogICAgIGdldCBmdW5jdGlvbk5hbWUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMu
X2Z1bmN0aW9uTmFtZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzb3VyY2VDb2RlTG9jYXRp
b24oKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbjsKLSAg
ICB9LAorICAgIH0KIAogICAgIGdldCBzdGFydFRpbWUoKQogICAgIHsKICAgICAgICAgaWYgKHRo
aXMuX3N0YXJ0VGltZSA9PT0gdW5kZWZpbmVkKQogICAgICAgICAgICAgdGhpcy5fc3RhcnRUaW1l
ID0gIE1hdGgubWF4KDAsIHRoaXMuX2NhbGxzWzBdLnN0YXJ0VGltZSk7CiAgICAgICAgIHJldHVy
biB0aGlzLl9zdGFydFRpbWU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgZW5kVGltZSgpCiAg
ICAgewogICAgICAgICBpZiAodGhpcy5fZW5kVGltZSA9PT0gdW5kZWZpbmVkKQogICAgICAgICAg
ICAgdGhpcy5fZW5kVGltZSA9IE1hdGgubWluKHRoaXMuX2NhbGxzLmxhc3RWYWx1ZS5lbmRUaW1l
LCBJbmZpbml0eSk7CiAgICAgICAgIHJldHVybiB0aGlzLl9lbmRUaW1lOwotICAgIH0sCisgICAg
fQogCiAgICAgZ2V0IHNlbGZUaW1lKCkKICAgICB7CiAgICAgICAgIHRoaXMuX2NvbXB1dGVUb3Rh
bFRpbWVzSWZOZWVkZWQoKTsKICAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGZUaW1lOwotICAgIH0s
CisgICAgfQogCiAgICAgZ2V0IHRvdGFsVGltZSgpCiAgICAgewogICAgICAgICB0aGlzLl9jb21w
dXRlVG90YWxUaW1lc0lmTmVlZGVkKCk7CiAgICAgICAgIHJldHVybiB0aGlzLl90b3RhbFRpbWU7
Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgY2FsbHMoKQogICAgIHsKICAgICAgICAgcmV0dXJu
IHRoaXMuX2NhbGxzOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHByZXZpb3VzU2libGluZygp
CiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcHJldmlvdXNTaWJsaW5nOwotICAgIH0sCisg
ICAgfQogCiAgICAgZ2V0IG5leHRTaWJsaW5nKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlz
Ll9uZXh0U2libGluZzsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBwYXJlbnROb2RlKCkKICAg
ICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9wYXJlbnROb2RlOwotICAgIH0sCisgICAgfQogCiAg
ICAgZ2V0IGNoaWxkTm9kZXMoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2NoaWxkTm9k
ZXM7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjb21wdXRlQ2FsbEluZm9Gb3JUaW1lUmFuZ2U6IGZ1
bmN0aW9uKHJhbmdlU3RhcnRUaW1lLCByYW5nZUVuZFRpbWUpCisgICAgY29tcHV0ZUNhbGxJbmZv
Rm9yVGltZVJhbmdlKHJhbmdlU3RhcnRUaW1lLCByYW5nZUVuZFRpbWUpCiAgICAgewogICAgICAg
ICBjb25zb2xlLmFzc2VydCh0eXBlb2YgcmFuZ2VTdGFydFRpbWUgPT09ICJudW1iZXIiKTsKICAg
ICAgICAgY29uc29sZS5hc3NlcnQodHlwZW9mIHJhbmdlRW5kVGltZSA9PT0gIm51bWJlciIpOwpA
QCAtMTc2LDkgKzE2Miw5IEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlTm9kZS5wcm90b3R5cGUgPSB7
CiAgICAgICAgIHZhciBhdmVyYWdlVGltZSA9IHNlbGZUaW1lIC8gY2FsbENvdW50OwogCiAgICAg
ICAgIHJldHVybiB7c3RhcnRUaW1lLCBlbmRUaW1lLCB0b3RhbFRpbWUsIHNlbGZUaW1lLCBjYWxs
Q291bnQsIGF2ZXJhZ2VUaW1lfTsKLSAgICB9LAorICAgIH0KIAotICAgIHRyYXZlcnNlTmV4dFBy
b2ZpbGVOb2RlOiBmdW5jdGlvbihzdGF5V2l0aGluKQorICAgIHRyYXZlcnNlTmV4dFByb2ZpbGVO
b2RlKHN0YXlXaXRoaW4pCiAgICAgewogICAgICAgICB2YXIgcHJvZmlsZU5vZGUgPSB0aGlzLl9j
aGlsZE5vZGVzWzBdOwogICAgICAgICBpZiAocHJvZmlsZU5vZGUpCkBAIC0xOTksMjkgKzE4NSwy
OSBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZU5vZGUucHJvdG90eXBlID0gewogICAgICAgICAgICAg
cmV0dXJuIG51bGw7CiAKICAgICAgICAgcmV0dXJuIHByb2ZpbGVOb2RlLm5leHRTaWJsaW5nOwot
ICAgIH0sCisgICAgfQogCi0gICAgc2F2ZUlkZW50aXR5VG9Db29raWU6IGZ1bmN0aW9uKGNvb2tp
ZSkKKyAgICBzYXZlSWRlbnRpdHlUb0Nvb2tpZShjb29raWUpCiAgICAgewogICAgICAgICBjb29r
aWVbV2ViSW5zcGVjdG9yLlByb2ZpbGVOb2RlLlR5cGVDb29raWVLZXldID0gdGhpcy5fdHlwZSB8
fCBudWxsOwogICAgICAgICBjb29raWVbV2ViSW5zcGVjdG9yLlByb2ZpbGVOb2RlLkZ1bmN0aW9u
TmFtZUNvb2tpZUtleV0gPSB0aGlzLl9mdW5jdGlvbk5hbWUgfHwgbnVsbDsKICAgICAgICAgY29v
a2llW1dlYkluc3BlY3Rvci5Qcm9maWxlTm9kZS5Tb3VyY2VDb2RlVVJMQ29va2llS2V5XSA9IHRo
aXMuX3NvdXJjZUNvZGVMb2NhdGlvbiA/IHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbi5zb3VyY2VD
b2RlLnVybCA/IHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbi5zb3VyY2VDb2RlLnVybC5oYXNoIDog
bnVsbCA6IG51bGw7CiAgICAgICAgIGNvb2tpZVtXZWJJbnNwZWN0b3IuUHJvZmlsZU5vZGUuU291
cmNlQ29kZUxvY2F0aW9uTGluZUNvb2tpZUtleV0gPSB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb24g
PyB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb24ubGluZU51bWJlciA6IG51bGw7CiAgICAgICAgIGNv
b2tpZVtXZWJJbnNwZWN0b3IuUHJvZmlsZU5vZGUuU291cmNlQ29kZUxvY2F0aW9uQ29sdW1uQ29v
a2llS2V5XSA9IHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbiA/IHRoaXMuX3NvdXJjZUNvZGVMb2Nh
dGlvbi5jb2x1bW5OdW1iZXIgOiBudWxsOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJvdGVj
dGVkCiAKLSAgICBlc3RhYmxpc2hSZWxhdGlvbnNoaXBzOiBmdW5jdGlvbihwYXJlbnROb2RlLCBw
cmV2aW91c1NpYmxpbmcsIG5leHRTaWJsaW5nKQorICAgIGVzdGFibGlzaFJlbGF0aW9uc2hpcHMo
cGFyZW50Tm9kZSwgcHJldmlvdXNTaWJsaW5nLCBuZXh0U2libGluZykKICAgICB7CiAgICAgICAg
IHRoaXMuX3BhcmVudE5vZGUgPSBwYXJlbnROb2RlIHx8IG51bGw7CiAgICAgICAgIHRoaXMuX3By
ZXZpb3VzU2libGluZyA9IHByZXZpb3VzU2libGluZyB8fCBudWxsOwogICAgICAgICB0aGlzLl9u
ZXh0U2libGluZyA9IG5leHRTaWJsaW5nIHx8IG51bGw7Ci0gICAgfSwKKyAgICB9CiAKICAgICAv
LyBQcml2YXRlCiAKLSAgICBfY29tcHV0ZVRvdGFsVGltZXM6IGZ1bmN0aW9uKCkKKyAgICBfY29t
cHV0ZVRvdGFsVGltZXMoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2NvbXB1dGVkVG90YWxU
aW1lcykKICAgICAgICAgICAgIHJldHVybjsKQEAgLTIzNSwzICsyMjEsMTUgQEAgV2ViSW5zcGVj
dG9yLlByb2ZpbGVOb2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fdG90YWxUaW1lID0g
aW5mby50b3RhbFRpbWU7CiAgICAgfQogfTsKKworV2ViSW5zcGVjdG9yLlByb2ZpbGVOb2RlLlR5
cGUgPSB7CisgICAgRnVuY3Rpb246ICJwcm9maWxlLW5vZGUtdHlwZS1mdW5jdGlvbiIsCisgICAg
UHJvZ3JhbTogInByb2ZpbGUtbm9kZS10eXBlLXByb2dyYW0iCit9OworCitXZWJJbnNwZWN0b3Iu
UHJvZmlsZU5vZGUuVHlwZUlkZW50aWZpZXIgPSAicHJvZmlsZS1ub2RlIjsKK1dlYkluc3BlY3Rv
ci5Qcm9maWxlTm9kZS5UeXBlQ29va2llS2V5ID0gInByb2ZpbGUtbm9kZS10eXBlIjsKK1dlYklu
c3BlY3Rvci5Qcm9maWxlTm9kZS5GdW5jdGlvbk5hbWVDb29raWVLZXkgPSAicHJvZmlsZS1ub2Rl
LWZ1bmN0aW9uLW5hbWUiOworV2ViSW5zcGVjdG9yLlByb2ZpbGVOb2RlLlNvdXJjZUNvZGVVUkxD
b29raWVLZXkgPSAicHJvZmlsZS1ub2RlLXNvdXJjZS1jb2RlLXVybCI7CitXZWJJbnNwZWN0b3Iu
UHJvZmlsZU5vZGUuU291cmNlQ29kZUxvY2F0aW9uTGluZUNvb2tpZUtleSA9ICJwcm9maWxlLW5v
ZGUtc291cmNlLWNvZGUtbG9jYXRpb24tbGluZSI7CitXZWJJbnNwZWN0b3IuUHJvZmlsZU5vZGUu
U291cmNlQ29kZUxvY2F0aW9uQ29sdW1uQ29va2llS2V5ID0gInByb2ZpbGUtbm9kZS1zb3VyY2Ut
Y29kZS1sb2NhdGlvbi1jb2x1bW4iOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Byb2ZpbGVOb2RlQ2FsbC5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Qcm9maWxlTm9kZUNhbGwuanMKaW5kZXggMWM2
MGVhOS4uN2Y3NGM2NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL01vZGVscy9Qcm9maWxlTm9kZUNhbGwuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Byb2ZpbGVOb2RlQ2FsbC5qcwpAQCAtMjMsOSArMjMs
MTEgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNw
ZWN0b3IuUHJvZmlsZU5vZGVDYWxsID0gZnVuY3Rpb24oc3RhcnRUaW1lLCB0b3RhbFRpbWUpCitX
ZWJJbnNwZWN0b3IuUHJvZmlsZU5vZGVDYWxsID0gY2xhc3MgUHJvZmlsZU5vZGVDYWxsIGV4dGVu
ZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0
aGlzKTsKKyAgICBjb25zdHJ1Y3RvcihzdGFydFRpbWUsIHRvdGFsVGltZSkKKyAgICB7CisgICAg
ICAgIHN1cGVyKCk7CiAKICAgICAgICAgY29uc29sZS5hc3NlcnQoc3RhcnRUaW1lKTsKIApAQCAt
MzQsMzIgKzM2LDI4IEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlTm9kZUNhbGwgPSBmdW5jdGlvbihz
dGFydFRpbWUsIHRvdGFsVGltZSkKICAgICAgICAgdGhpcy5fcGFyZW50Tm9kZSA9IG51bGw7CiAg
ICAgICAgIHRoaXMuX3ByZXZpb3VzU2libGluZyA9IG51bGw7CiAgICAgICAgIHRoaXMuX25leHRT
aWJsaW5nID0gbnVsbDsKLX07Ci0KLVdlYkluc3BlY3Rvci5Qcm9maWxlTm9kZUNhbGwucHJvdG90
eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuUHJvZmlsZU5vZGVDYWxsLAot
ICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGUsCisgICAgfQogCiAg
ICAgLy8gUHVibGljCiAKICAgICBnZXQgc3RhcnRUaW1lKCkKICAgICB7CiAgICAgICAgIHJldHVy
biB0aGlzLl9zdGFydFRpbWU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgdG90YWxUaW1lKCkK
ICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl90b3RhbFRpbWU7Ci0gICAgfSwKKyAgICB9CiAK
ICAgICBnZXQgZW5kVGltZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc3RhcnRUaW1l
ICsgdGhpcy5fdG90YWxUaW1lOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJvdGVjdGVkCiAK
LSAgICBlc3RhYmxpc2hSZWxhdGlvbnNoaXBzOiBmdW5jdGlvbihwYXJlbnROb2RlLCBwcmV2aW91
c1NpYmxpbmcsIG5leHRTaWJsaW5nKQorICAgIGVzdGFibGlzaFJlbGF0aW9uc2hpcHMocGFyZW50
Tm9kZSwgcHJldmlvdXNTaWJsaW5nLCBuZXh0U2libGluZykKICAgICB7CiAgICAgICAgIHRoaXMu
X3BhcmVudE5vZGUgPSBwYXJlbnROb2RlIHx8IG51bGw7CiAgICAgICAgIHRoaXMuX3ByZXZpb3Vz
U2libGluZyA9IHByZXZpb3VzU2libGluZyB8fCBudWxsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Byb3BlcnR5RGVzY3JpcHRvci5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Qcm9wZXJ0eURlc2Ny
aXB0b3IuanMKaW5kZXggNjQxMTg3MS4uZGZmZDU5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Byb3BlcnR5RGVzY3JpcHRvci5qcworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUHJvcGVydHlEZXNj
cmlwdG9yLmpzCkBAIC0yMyw5ICsyMywxMSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5Qcm9wZXJ0eURlc2NyaXB0b3IgPSBmdW5jdGlv
bihkZXNjcmlwdG9yLCBpc093blByb3BlcnR5LCB3YXNUaHJvd24sIG5hdGl2ZUdldHRlciwgaXNJ
bnRlcm5hbFByb3BlcnR5KQorV2ViSW5zcGVjdG9yLlByb3BlcnR5RGVzY3JpcHRvciA9IGNsYXNz
IFByb3BlcnR5RGVzY3JpcHRvciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIHsKLSAgICBX
ZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CisgICAgY29uc3RydWN0b3IoZGVzY3JpcHRv
ciwgaXNPd25Qcm9wZXJ0eSwgd2FzVGhyb3duLCBuYXRpdmVHZXR0ZXIsIGlzSW50ZXJuYWxQcm9w
ZXJ0eSkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CiAKICAgICAgICAgY29uc29sZS5hc3NlcnQo
ZGVzY3JpcHRvcik7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGRlc2NyaXB0b3IubmFtZSk7CkBA
IC00NywxMCArNDksMTIgQEAgV2ViSW5zcGVjdG9yLlByb3BlcnR5RGVzY3JpcHRvciA9IGZ1bmN0
aW9uKGRlc2NyaXB0b3IsIGlzT3duUHJvcGVydHksIHdhc1Rocm93biwKICAgICAgICAgdGhpcy5f
d2FzVGhyb3duID0gd2FzVGhyb3duIHx8IGZhbHNlOwogICAgICAgICB0aGlzLl9uYXRpdmVHZXR0
ZXJWYWx1ZSA9IG5hdGl2ZUdldHRlciB8fCBmYWxzZTsKICAgICAgICAgdGhpcy5faW50ZXJuYWwg
PSBpc0ludGVybmFsUHJvcGVydHkgfHwgZmFsc2U7Ci19OworICAgIH0KKworICAgIC8vIFN0YXRp
YwogCiAgICAgLy8gUnVudGltZS5Qcm9wZXJ0eURlc2NyaXB0b3Igb3IgUnVudGltZS5JbnRlcm5h
bFByb3BlcnR5RGVzY3JpcHRvciAoc2Vjb25kIGFyZ3VtZW50KS4KLVdlYkluc3BlY3Rvci5Qcm9w
ZXJ0eURlc2NyaXB0b3IuZnJvbVBheWxvYWQgPSBmdW5jdGlvbihwYXlsb2FkLCBpbnRlcm5hbCkK
KyAgICBzdGF0aWMgZnJvbVBheWxvYWQocGF5bG9hZCwgaW50ZXJuYWwpCiAgICAgewogICAgICAg
ICBpZiAocGF5bG9hZC52YWx1ZSkKICAgICAgICAgICAgIHBheWxvYWQudmFsdWUgPSBXZWJJbnNw
ZWN0b3IuUmVtb3RlT2JqZWN0LmZyb21QYXlsb2FkKHBheWxvYWQudmFsdWUpOwpAQCAtNjYsODYg
KzcwLDgyIEBAIFdlYkluc3BlY3Rvci5Qcm9wZXJ0eURlc2NyaXB0b3IuZnJvbVBheWxvYWQgPSBm
dW5jdGlvbihwYXlsb2FkLCBpbnRlcm5hbCkKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiBu
ZXcgV2ViSW5zcGVjdG9yLlByb3BlcnR5RGVzY3JpcHRvcihwYXlsb2FkLCBwYXlsb2FkLmlzT3du
LCBwYXlsb2FkLndhc1Rocm93biwgcGF5bG9hZC5uYXRpdmVHZXR0ZXIsIGludGVybmFsKTsKLX07
Ci0KLVdlYkluc3BlY3Rvci5Qcm9wZXJ0eURlc2NyaXB0b3IucHJvdG90eXBlID0gewotICAgIGNv
bnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuUHJvcGVydHlEZXNjcmlwdG9yLAotICAgIF9fcHJvdG9f
XzogV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGUsCisgICAgfQogCiAgICAgLy8gUHVibGlj
CiAKICAgICBnZXQgbmFtZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fbmFtZTsKLSAg
ICB9LAorICAgIH0KIAogICAgIGdldCB2YWx1ZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhp
cy5fdmFsdWU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgZ2V0KCkKICAgICB7CiAgICAgICAg
IHJldHVybiB0aGlzLl9nZXQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc2V0KCkKICAgICB7
CiAgICAgICAgIHJldHVybiB0aGlzLl9zZXQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgd3Jp
dGFibGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3dyaXRhYmxlOwotICAgIH0sCisg
ICAgfQogCiAgICAgZ2V0IGNvbmZpZ3VyYWJsZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhp
cy5fY29uZmlndXJhYmxlOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGVudW1lcmFibGUoKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2VudW1lcmFibGU7Ci0gICAgfSwKKyAgICB9CiAK
ICAgICBnZXQgaXNPd25Qcm9wZXJ0eSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fb3du
OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHdhc1Rocm93bigpCiAgICAgewogICAgICAgICBy
ZXR1cm4gdGhpcy5fd2FzVGhyb3duOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IG5hdGl2ZUdl
dHRlcigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fbmF0aXZlR2V0dGVyVmFsdWU7Ci0g
ICAgfSwKKyAgICB9CiAKICAgICBnZXQgaXNJbnRlcm5hbFByb3BlcnR5KCkKICAgICB7CiAgICAg
ICAgIHJldHVybiB0aGlzLl9pbnRlcm5hbDsKLSAgICB9LAorICAgIH0KIAogICAgIGhhc1ZhbHVl
KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9oYXNWYWx1ZTsKLSAgICB9LAorICAgIH0K
IAogICAgIGhhc0dldHRlcigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZ2V0ICYmIHRo
aXMuX2dldC50eXBlID09PSAiZnVuY3Rpb24iOwotICAgIH0sCisgICAgfQogCiAgICAgaGFzU2V0
dGVyKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zZXQgJiYgdGhpcy5fc2V0LnR5cGUg
PT09ICJmdW5jdGlvbiI7Ci0gICAgfSwKKyAgICB9CiAKICAgICBpc0luZGV4UHJvcGVydHkoKQog
ICAgIHsKICAgICAgICAgcmV0dXJuICFpc05hTihOdW1iZXIodGhpcy5fbmFtZSkpOwotICAgIH0s
CisgICAgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01vZGVscy9Qcm9wZXJ0eVBhdGguanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Nb2RlbHMvUHJvcGVydHlQYXRoLmpzCmluZGV4IDA2OTE5ZjcuLmUwOTBkYjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Qcm9w
ZXJ0eVBhdGguanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9k
ZWxzL1Byb3BlcnR5UGF0aC5qcwpAQCAtMjMsOSArMjMsMTEgQEAKICAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuUHJvcGVydHlQYXRoID0gZnVu
Y3Rpb24ob2JqZWN0LCBwYXRoQ29tcG9uZW50LCBwYXJlbnQsIGlzUHJvdG90eXBlKQorV2ViSW5z
cGVjdG9yLlByb3BlcnR5UGF0aCA9IGNsYXNzIFByb3BlcnR5UGF0aCBleHRlbmRzIFdlYkluc3Bl
Y3Rvci5PYmplY3QKIHsKLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CisgICAg
Y29uc3RydWN0b3Iob2JqZWN0LCBwYXRoQ29tcG9uZW50LCBwYXJlbnQsIGlzUHJvdG90eXBlKQor
ICAgIHsKKyAgICAgICAgc3VwZXIoKTsKIAogICAgICAgICBjb25zb2xlLmFzc2VydChvYmplY3Qg
aW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0IHx8IG9iamVjdCA9PT0gbnVsbCk7
CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFwYXRoQ29tcG9uZW50IHx8IHR5cGVvZiBwYXRoQ29t
cG9uZW50ID09PSAic3RyaW5nIik7CkBAIC00MSw1MyArNDMsMzYgQEAgV2ViSW5zcGVjdG9yLlBy
b3BlcnR5UGF0aCA9IGZ1bmN0aW9uKG9iamVjdCwgcGF0aENvbXBvbmVudCwgcGFyZW50LCBpc1By
b3RvdHlwZSkKICAgICAgICAgdGhpcy5fcGF0aENvbXBvbmVudCA9IHR5cGVvZiBwYXRoQ29tcG9u
ZW50ID09PSAic3RyaW5nIiA/IHBhdGhDb21wb25lbnQgOiBudWxsOwogICAgICAgICB0aGlzLl9w
YXJlbnQgPSBwYXJlbnQgfHwgbnVsbDsKICAgICAgICAgdGhpcy5faXNQcm90b3R5cGUgPSBpc1By
b3RvdHlwZSB8fCBmYWxzZTsKLX07CisgICAgfQogCi1XZWJJbnNwZWN0b3IuUHJvcGVydHlQYXRo
LlNwZWNpYWxQYXRoQ29tcG9uZW50ID0gewotICAgIEludGVybmFsUHJvcGVydHlOYW1lOiAiQGlu
dGVybmFsIiwKLSAgICBTeW1ib2xQcm9wZXJ0eU5hbWU6ICJAc3ltYm9sIiwKLSAgICBNYXBLZXk6
ICJAbWFwa2V5IiwKLSAgICBNYXBWYWx1ZTogIkBtYXB2YWx1ZSIsCi0gICAgU2V0SW5kZXg6ICJA
c2V0aW5kZXgiLAotICAgIEVtcHR5UGF0aENvbXBvbmVudEZvclNjb3BlOiAiIiwKLX07CisgICAg
Ly8gU3RhdGljCiAKLVdlYkluc3BlY3Rvci5Qcm9wZXJ0eVBhdGguVHlwZSA9IHsKLSAgICBWYWx1
ZTogInZhbHVlIiwKLSAgICBHZXR0ZXI6ICJnZXR0ZXIiLAotICAgIFNldHRlcjogInNldHRlciIs
Ci19OwotCi1XZWJJbnNwZWN0b3IuUHJvcGVydHlQYXRoLmVtcHR5UHJvcGVydHlQYXRoRm9yU2Nv
cGUgPSBmdW5jdGlvbihvYmplY3QpCisgICAgc3RhdGljIGVtcHR5UHJvcGVydHlQYXRoRm9yU2Nv
cGUob2JqZWN0KQogICAgIHsKICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuUHJvcGVy
dHlQYXRoKG9iamVjdCwgV2ViSW5zcGVjdG9yLlByb3BlcnR5UGF0aC5TcGVjaWFsUGF0aENvbXBv
bmVudC5FbXB0eVBhdGhDb21wb25lbnRGb3JTY29wZSk7CiAgICAgfQogCi1XZWJJbnNwZWN0b3Iu
UHJvcGVydHlQYXRoLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9y
LlByb3BlcnR5UGF0aCwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90
eXBlLAotCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgb2JqZWN0KCkKICAgICB7CiAgICAgICAg
IHJldHVybiB0aGlzLl9vYmplY3Q7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgcGFyZW50KCkK
ICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9wYXJlbnQ7Ci0gICAgfSwKKyAgICB9CiAKICAg
ICBnZXQgaXNQcm90b3R5cGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2lzUHJvdG90
eXBlOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHJvb3RPYmplY3QoKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHRoaXMuX3BhcmVudCA/IHRoaXMuX3BhcmVudC5yb290T2JqZWN0IDogdGhpcy5f
b2JqZWN0OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGxhc3ROb25Qcm90b3R5cGVPYmplY3Qo
KQogICAgIHsKQEAgLTEwNCwxMiArODksMTIgQEAgV2ViSW5zcGVjdG9yLlByb3BlcnR5UGF0aC5w
cm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gcC5vYmplY3Q7Ci0gICAg
fSwKKyAgICB9CiAKICAgICBnZXQgcGF0aENvbXBvbmVudCgpCiAgICAgewogICAgICAgICByZXR1
cm4gdGhpcy5fcGF0aENvbXBvbmVudDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBmdWxsUGF0
aCgpCiAgICAgewpAQCAtMTE4LDcgKzEwMyw3IEBAIFdlYkluc3BlY3Rvci5Qcm9wZXJ0eVBhdGgu
cHJvdG90eXBlID0gewogICAgICAgICAgICAgY29tcG9uZW50cy5wdXNoKHAucGF0aENvbXBvbmVu
dCk7CiAgICAgICAgIGNvbXBvbmVudHMucmV2ZXJzZSgpCiAgICAgICAgIHJldHVybiBjb21wb25l
bnRzLmpvaW4oIiIpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHJlZHVjZWRQYXRoKCkKICAg
ICB7CkBAIC0xNDIsMjcgKzEyNywyNyBAQCBXZWJJbnNwZWN0b3IuUHJvcGVydHlQYXRoLnByb3Rv
dHlwZSA9IHsKIAogICAgICAgICBjb21wb25lbnRzLnJldmVyc2UoKTsKICAgICAgICAgcmV0dXJu
IGNvbXBvbmVudHMuam9pbigiIik7ICAgICAgICAKLSAgICB9LAorICAgIH0KIAogICAgIGRpc3Bs
YXlQYXRoKHR5cGUpCiAgICAgewogICAgICAgICByZXR1cm4gdHlwZSA9PT0gV2ViSW5zcGVjdG9y
LlByb3BlcnR5UGF0aC5UeXBlLlZhbHVlID8gdGhpcy5yZWR1Y2VkUGF0aCA6IHRoaXMuZnVsbFBh
dGg7Ci0gICAgfSwKKyAgICB9CiAKICAgICBpc1Jvb3QoKQogICAgIHsKICAgICAgICAgcmV0dXJu
ICF0aGlzLl9wYXJlbnQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBpc1Njb3BlKCkKICAgICB7CiAg
ICAgICAgIHJldHVybiB0aGlzLl9wYXRoQ29tcG9uZW50ID09PSBXZWJJbnNwZWN0b3IuUHJvcGVy
dHlQYXRoLlNwZWNpYWxQYXRoQ29tcG9uZW50LkVtcHR5UGF0aENvbXBvbmVudEZvclNjb3BlOwot
ICAgIH0sCisgICAgfQogCiAgICAgaXNQYXRoQ29tcG9uZW50SW1wb3NzaWJsZSgpCiAgICAgewog
ICAgICAgICByZXR1cm4gdGhpcy5fcGF0aENvbXBvbmVudCAmJiB0aGlzLl9wYXRoQ29tcG9uZW50
LnN0YXJ0c1dpdGgoIkAiKTsKLSAgICB9LAorICAgIH0KIAogICAgIGlzRnVsbFBhdGhJbXBvc3Np
YmxlKCkKICAgICB7CkBAIC0xNzMsNyArMTU4LDcgQEAgV2ViSW5zcGVjdG9yLlByb3BlcnR5UGF0
aC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm4gdGhpcy5fcGFyZW50LmlzRnVsbFBh
dGhJbXBvc3NpYmxlKCk7CiAKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0sCisgICAgfQog
CiAgICAgYXBwZW5kUHJvcGVydHlOYW1lKG9iamVjdCwgcHJvcGVydHlOYW1lKQogICAgIHsKQEAg
LTE4NCw0MyArMTY5LDQzIEBAIFdlYkluc3BlY3Rvci5Qcm9wZXJ0eVBhdGgucHJvdG90eXBlID0g
ewogCiAgICAgICAgIHZhciBjb21wb25lbnQgPSB0aGlzLl9jYW5Qcm9wZXJ0eU5hbWVCZURvdEFj
Y2Vzcyhwcm9wZXJ0eU5hbWUpID8gIi4iICsgcHJvcGVydHlOYW1lIDogIlsiICsgZG91YmxlUXVv
dGVkU3RyaW5nKHByb3BlcnR5TmFtZSkgKyAiXSI7CiAgICAgICAgIHJldHVybiBuZXcgV2ViSW5z
cGVjdG9yLlByb3BlcnR5UGF0aChvYmplY3QsIGNvbXBvbmVudCwgdGhpcywgaXNQcm90b3R5cGUp
OwotICAgIH0sCisgICAgfQogCiAgICAgYXBwZW5kUHJvcGVydHlTeW1ib2wob2JqZWN0LCBzeW1i
b2xOYW1lKQogICAgIHsKICAgICAgICAgdmFyIGNvbXBvbmVudCA9IFdlYkluc3BlY3Rvci5Qcm9w
ZXJ0eVBhdGguU3BlY2lhbFBhdGhDb21wb25lbnQuU3ltYm9sUHJvcGVydHlOYW1lICsgKHN5bWJv
bE5hbWUubGVuZ3RoID8gIigiICsgc3ltYm9sTmFtZSArICIpIiA6ICIiKTsKICAgICAgICAgcmV0
dXJuIG5ldyBXZWJJbnNwZWN0b3IuUHJvcGVydHlQYXRoKG9iamVjdCwgY29tcG9uZW50LCB0aGlz
KTsKLSAgICB9LAorICAgIH0KIAogICAgIGFwcGVuZEludGVybmFsUHJvcGVydHlOYW1lKG9iamVj
dCwgcHJvcGVydHlOYW1lKQogICAgIHsKICAgICAgICAgdmFyIGNvbXBvbmVudCA9IFdlYkluc3Bl
Y3Rvci5Qcm9wZXJ0eVBhdGguU3BlY2lhbFBhdGhDb21wb25lbnQuSW50ZXJuYWxQcm9wZXJ0eU5h
bWUgKyAiWyIgKyBwcm9wZXJ0eU5hbWUgKyAiXSI7CiAgICAgICAgIHJldHVybiBuZXcgV2ViSW5z
cGVjdG9yLlByb3BlcnR5UGF0aChvYmplY3QsIGNvbXBvbmVudCwgdGhpcyk7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICBhcHBlbmRHZXR0ZXJQcm9wZXJ0eU5hbWUob2JqZWN0LCBwcm9wZXJ0eU5hbWUp
CiAgICAgewogICAgICAgICB2YXIgY29tcG9uZW50ID0gIi5fX2xvb2t1cEdldHRlcl9fKCIgKyBk
b3VibGVRdW90ZWRTdHJpbmcocHJvcGVydHlOYW1lKSArICIpIjsKICAgICAgICAgcmV0dXJuIG5l
dyBXZWJJbnNwZWN0b3IuUHJvcGVydHlQYXRoKG9iamVjdCwgY29tcG9uZW50LCB0aGlzKTsKLSAg
ICB9LAorICAgIH0KIAogICAgIGFwcGVuZFNldHRlclByb3BlcnR5TmFtZShvYmplY3QsIHByb3Bl
cnR5TmFtZSkKICAgICB7CiAgICAgICAgIHZhciBjb21wb25lbnQgPSAiLl9fbG9va3VwU2V0dGVy
X18oIiArIGRvdWJsZVF1b3RlZFN0cmluZyhwcm9wZXJ0eU5hbWUpICsgIikiOwogICAgICAgICBy
ZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5Qcm9wZXJ0eVBhdGgob2JqZWN0LCBjb21wb25lbnQsIHRo
aXMpOwotICAgIH0sCisgICAgfQogCiAgICAgYXBwZW5kQXJyYXlJbmRleChvYmplY3QsIGluZGV4
U3RyaW5nKQogICAgIHsKICAgICAgICAgdmFyIGNvbXBvbmVudCA9ICJbIiArIGluZGV4U3RyaW5n
ICsgIl0iOwogICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5Qcm9wZXJ0eVBhdGgob2Jq
ZWN0LCBjb21wb25lbnQsIHRoaXMpOwotICAgIH0sCisgICAgfQogCiAgICAgYXBwZW5kTWFwS2V5
KG9iamVjdCkKICAgICB7CiAgICAgICAgIHZhciBjb21wb25lbnQgPSBXZWJJbnNwZWN0b3IuUHJv
cGVydHlQYXRoLlNwZWNpYWxQYXRoQ29tcG9uZW50Lk1hcEtleTsKICAgICAgICAgcmV0dXJuIG5l
dyBXZWJJbnNwZWN0b3IuUHJvcGVydHlQYXRoKG9iamVjdCwgY29tcG9uZW50LCB0aGlzKTsKLSAg
ICB9LAorICAgIH0KIAogICAgIGFwcGVuZE1hcFZhbHVlKG9iamVjdCwga2V5T2JqZWN0KQogICAg
IHsKQEAgLTIzOCwxMyArMjIzLDEzIEBAIFdlYkluc3BlY3Rvci5Qcm9wZXJ0eVBhdGgucHJvdG90
eXBlID0gewogICAgICAgICAgICAgCiAgICAgICAgIHZhciBjb21wb25lbnQgPSBXZWJJbnNwZWN0
b3IuUHJvcGVydHlQYXRoLlNwZWNpYWxQYXRoQ29tcG9uZW50Lk1hcFZhbHVlOwogICAgICAgICBy
ZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5Qcm9wZXJ0eVBhdGgob2JqZWN0LCBjb21wb25lbnQsIHRo
aXMpOwotICAgIH0sCisgICAgfQogCiAgICAgYXBwZW5kU2V0SW5kZXgob2JqZWN0KQogICAgIHsK
ICAgICAgICAgdmFyIGNvbXBvbmVudCA9IFdlYkluc3BlY3Rvci5Qcm9wZXJ0eVBhdGguU3BlY2lh
bFBhdGhDb21wb25lbnQuU2V0SW5kZXg7CiAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9y
LlByb3BlcnR5UGF0aChvYmplY3QsIGNvbXBvbmVudCwgdGhpcyk7Ci0gICAgfSwKKyAgICB9CiAg
ICAgCiAgICAgYXBwZW5kUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgZGVzY3JpcHRvciwgdHlw
ZSkKICAgICB7CkBAIC0yNjQsNyArMjQ5LDcgQEAgV2ViSW5zcGVjdG9yLlByb3BlcnR5UGF0aC5w
cm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm4gdGhpcy5hcHBlbmRBcnJheUluZGV4KG9i
amVjdCwgZGVzY3JpcHRvci5uYW1lKTsKIAogICAgICAgICByZXR1cm4gdGhpcy5hcHBlbmRQcm9w
ZXJ0eU5hbWUob2JqZWN0LCBkZXNjcmlwdG9yLm5hbWUpCi0gICAgfSwKKyAgICB9CiAKICAgICAv
LyBQcml2YXRlCiAKQEAgLTI3MywzICsyNTgsMTggQEAgV2ViSW5zcGVjdG9yLlByb3BlcnR5UGF0
aC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiAvXig/IVswLTldKVx3KyQvLnRlc3QocHJv
cGVydHlOYW1lKTsKICAgICB9CiB9OworCitXZWJJbnNwZWN0b3IuUHJvcGVydHlQYXRoLlNwZWNp
YWxQYXRoQ29tcG9uZW50ID0geworICAgIEludGVybmFsUHJvcGVydHlOYW1lOiAiQGludGVybmFs
IiwKKyAgICBTeW1ib2xQcm9wZXJ0eU5hbWU6ICJAc3ltYm9sIiwKKyAgICBNYXBLZXk6ICJAbWFw
a2V5IiwKKyAgICBNYXBWYWx1ZTogIkBtYXB2YWx1ZSIsCisgICAgU2V0SW5kZXg6ICJAc2V0aW5k
ZXgiLAorICAgIEVtcHR5UGF0aENvbXBvbmVudEZvclNjb3BlOiAiIiwKK307CisKK1dlYkluc3Bl
Y3Rvci5Qcm9wZXJ0eVBhdGguVHlwZSA9IHsKKyAgICBWYWx1ZTogInZhbHVlIiwKKyAgICBHZXR0
ZXI6ICJnZXR0ZXIiLAorICAgIFNldHRlcjogInNldHRlciIsCit9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Byb3BlcnR5UHJldmlldy5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Qcm9wZXJ0eVBy
ZXZpZXcuanMKaW5kZXggMWY4MDRhZC4uMjliZmZhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Byb3BlcnR5UHJldmlldy5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUHJvcGVydHlQcmV2aWV3
LmpzCkBAIC0yMyw5ICsyMywxMSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKLVdlYkluc3BlY3Rvci5Qcm9wZXJ0eVByZXZpZXcgPSBmdW5jdGlvbihuYW1lLCB0
eXBlLCBzdWJ0eXBlLCB2YWx1ZSwgdmFsdWVQcmV2aWV3LCBpc0ludGVybmFsUHJvcGVydHkpCitX
ZWJJbnNwZWN0b3IuUHJvcGVydHlQcmV2aWV3ID0gY2xhc3MgUHJvcGVydHlQcmV2aWV3IGV4dGVu
ZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0
aGlzKTsKKyAgICBjb25zdHJ1Y3RvcihuYW1lLCB0eXBlLCBzdWJ0eXBlLCB2YWx1ZSwgdmFsdWVQ
cmV2aWV3LCBpc0ludGVybmFsUHJvcGVydHkpCisgICAgeworICAgICAgICBzdXBlcigpOwogCiAg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KG5hbWUpOwogICAgICAgICBjb25zb2xlLmFzc2VydCh0eXBl
KTsKQEAgLTM4LDQ3ICs0MCw0NSBAQCBXZWJJbnNwZWN0b3IuUHJvcGVydHlQcmV2aWV3ID0gZnVu
Y3Rpb24obmFtZSwgdHlwZSwgc3VidHlwZSwgdmFsdWUsIHZhbHVlUHJldmlldwogICAgICAgICB0
aGlzLl92YWx1ZSA9IHZhbHVlOwogICAgICAgICB0aGlzLl92YWx1ZVByZXZpZXcgPSB2YWx1ZVBy
ZXZpZXc7CiAgICAgICAgIHRoaXMuX2ludGVybmFsID0gaXNJbnRlcm5hbFByb3BlcnR5OwotfTsK
KyAgICB9CisKKyAgICAvLyBTdGF0aWMKIAogICAgIC8vIFJ1bnRpbWUuUHJvcGVydHlQcmV2aWV3
LgotV2ViSW5zcGVjdG9yLlByb3BlcnR5UHJldmlldy5mcm9tUGF5bG9hZCA9IGZ1bmN0aW9uKHBh
eWxvYWQpCisgICAgc3RhdGljIGZyb21QYXlsb2FkKHBheWxvYWQpCiAgICAgewogICAgICAgICBp
ZiAocGF5bG9hZC52YWx1ZVByZXZpZXcpCiAgICAgICAgICAgICBwYXlsb2FkLnZhbHVlUHJldmll
dyA9IFdlYkluc3BlY3Rvci5PYmplY3RQcmV2aWV3LmZyb21QYXlsb2FkKHBheWxvYWQudmFsdWVQ
cmV2aWV3KTsKIAogICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5Qcm9wZXJ0eVByZXZp
ZXcocGF5bG9hZC5uYW1lLCBwYXlsb2FkLnR5cGUsIHBheWxvYWQuc3VidHlwZSwgcGF5bG9hZC52
YWx1ZSwgcGF5bG9hZC52YWx1ZVByZXZpZXcsIHBheWxvYWQuaW50ZXJuYWwpOwotfTsKLQotV2Vi
SW5zcGVjdG9yLlByb3BlcnR5UHJldmlldy5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6
IFdlYkluc3BlY3Rvci5Qcm9wZXJ0eVByZXZpZXcsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0
b3IuT2JqZWN0LnByb3RvdHlwZSwKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBu
YW1lKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9uYW1lOwotICAgIH0sCisgICAgfQog
CiAgICAgZ2V0IHR5cGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3R5cGU7Ci0gICAg
fSwKKyAgICB9CiAKICAgICBnZXQgc3VidHlwZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhp
cy5fc3VidHlwZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCB2YWx1ZSgpCiAgICAgewogICAg
ICAgICByZXR1cm4gdGhpcy5fdmFsdWU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgdmFsdWVQ
cmV2aWV3KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl92YWx1ZVByZXZpZXc7Ci0gICAg
fSwKKyAgICB9CiAKICAgICBnZXQgaW50ZXJuYWwoKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9SZXBsYXlEYXNoYm9hcmQuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUmVwbGF5RGFzaGJv
YXJkLmpzCmluZGV4IDhkYjVjMWIuLmIzNDlkOTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUmVwbGF5RGFzaGJvYXJkLmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9SZXBsYXlEYXNoYm9hcmQu
anMKQEAgLTIzLDExICsyMywxMSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKLVdlYkluc3BlY3Rvci5SZXBsYXlEYXNoYm9hcmQgPSBmdW5jdGlvbigpIHsKLSAg
ICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7Ci19OwotCi1XZWJJbnNwZWN0b3IuUmVw
bGF5RGFzaGJvYXJkLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9y
LlJlcGxheURhc2hib2FyZCwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5PYmplY3QucHJv
dG90eXBlLAorV2ViSW5zcGVjdG9yLlJlcGxheURhc2hib2FyZCA9IGNsYXNzIFJlcGxheURhc2hi
b2FyZCBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKK3sKKyAgICBjb25zdHJ1Y3RvcigpCisg
ICAgeworICAgICAgICAvLyBGSVhNRTogUmVtb3ZlIG9uY2UgPGh0dHBzOi8vd2Via2l0Lm9yZy9i
LzE0Mjg2Mj4gaXMgZml4ZWQuCisgICAgICAgIHN1cGVyKCk7CisgICAgfQogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9SZXBsYXlTZXNz
aW9uLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1JlcGxh
eVNlc3Npb24uanMKaW5kZXggOTJhNjI0Mi4uNDliY2ZkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1JlcGxheVNlc3Npb24uanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1JlcGxheVNlc3Npb24u
anMKQEAgLTI1LDQzICsyNSw0MyBAQAogICovCiAKIAotV2ViSW5zcGVjdG9yLlJlcGxheVNlc3Np
b24gPSBmdW5jdGlvbihpZGVudGlmaWVyKQorV2ViSW5zcGVjdG9yLlJlcGxheVNlc3Npb24gPSBj
bGFzcyBSZXBsYXlTZXNzaW9uIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogewotICAgIFdl
Ykluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICBjb25zdHJ1Y3RvcihpZGVudGlmaWVy
KQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKIAogICAgICAgICB0aGlzLmlkZW50aWZpZXIgPSBp
ZGVudGlmaWVyOwogICAgICAgICB0aGlzLl9zZWdtZW50cyA9IFtdOwogICAgICAgICB0aGlzLl90
aW1lc3RhbXAgPSBudWxsOwotfTsKKyAgICB9CiAKLVdlYkluc3BlY3Rvci5SZXBsYXlTZXNzaW9u
LmZyb21QYXlsb2FkID0gZnVuY3Rpb24oaWRlbnRpZmllciwgcGF5bG9hZCkKKyAgICAvLyBTdGF0
aWMKKworICAgIHN0YXRpYyBmcm9tUGF5bG9hZChpZGVudGlmaWVyLCBwYXlsb2FkKQogICAgIHsK
ICAgICAgICAgdmFyIHNlc3Npb24gPSBuZXcgV2ViSW5zcGVjdG9yLlJlcGxheVNlc3Npb24oaWRl
bnRpZmllcik7CiAgICAgICAgIHNlc3Npb24uX3VwZGF0ZUZyb21QYXlsb2FkKHBheWxvYWQpOwog
ICAgICAgICByZXR1cm4gc2Vzc2lvbjsKICAgICB9CiAKLVdlYkluc3BlY3Rvci5SZXBsYXlTZXNz
aW9uLkV2ZW50ID0gewotICAgIFNlZ21lbnRzQ2hhbmdlZDogInJlcGxheS1zZXNzaW9uLXNlZ21l
bnRzLWNoYW5nZWQiLAotfTsKLQotV2ViSW5zcGVjdG9yLlJlcGxheVNlc3Npb24ucHJvdG90eXBl
ID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuUmVwbGF5U2Vzc2lvbiwKLSAgICBf
X3Byb3RvX186IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlLAorICAgIC8vIFB1YmxpYwog
CiAgICAgZ2V0IHNlZ21lbnRzKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zZWdtZW50
cy5zbGljZSgpOwotICAgIH0sCisgICAgfQogCi0gICAgc2VnbWVudHNDaGFuZ2VkOiBmdW5jdGlv
bigpCisgICAgc2VnbWVudHNDaGFuZ2VkKCkKICAgICB7CiAgICAgICAgIC8vIFRoZSByZXBsYXkg
bWFuYWdlciB3b24ndCB1cGRhdGUgdGhlIHNlc3Npb24ncyBsaXN0IG9mIHNlZ21lbnRzIG5vciBj
cmVhdGUgYSBuZXcgc2Vzc2lvbi4KICAgICAgICAgUmVwbGF5QWdlbnQuZ2V0U2Vzc2lvbkRhdGEu
cHJvbWlzZSh0aGlzLmlkZW50aWZpZXIpCiAgICAgICAgICAgICAudGhlbih0aGlzLl91cGRhdGVG
cm9tUGF5bG9hZC5iaW5kKHRoaXMpKTsKLSAgICB9LAorICAgIH0KIAotICAgIF91cGRhdGVGcm9t
UGF5bG9hZDogZnVuY3Rpb24ocGF5bG9hZCkKKyAgICAvLyBQcml2YXRlCisKKyAgICBfdXBkYXRl
RnJvbVBheWxvYWQocGF5bG9hZCkKICAgICB7CiAgICAgICAgIHZhciBzZXNzaW9uID0gcGF5bG9h
ZC5zZXNzaW9uOwogICAgICAgICBjb25zb2xlLmFzc2VydChzZXNzaW9uLmlkID09PSB0aGlzLmlk
ZW50aWZpZXIpOwpAQCAtODQsMyArODQsNyBAQCBXZWJJbnNwZWN0b3IuUmVwbGF5U2Vzc2lvbi5w
cm90b3R5cGUgPSB7CiAgICAgICAgICk7CiAgICAgfQogfTsKKworV2ViSW5zcGVjdG9yLlJlcGxh
eVNlc3Npb24uRXZlbnQgPSB7CisgICAgU2VnbWVudHNDaGFuZ2VkOiAicmVwbGF5LXNlc3Npb24t
c2VnbWVudHMtY2hhbmdlZCIsCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvTW9kZWxzL1JlcGxheVNlc3Npb25TZWdtZW50LmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1JlcGxheVNlc3Npb25TZWdtZW50Lmpz
CmluZGV4IGMyNWVhMDIuLjU2OTAyMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL01vZGVscy9SZXBsYXlTZXNzaW9uU2VnbWVudC5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUmVwbGF5U2Vzc2lvblNlZ21l
bnQuanMKQEAgLTI1LDE3ICsyNSwxNyBAQAogICovCiAKIAotV2ViSW5zcGVjdG9yLkluY29tcGxl
dGVTZXNzaW9uU2VnbWVudCA9IGZ1bmN0aW9uKGlkZW50aWZpZXIpCitXZWJJbnNwZWN0b3IuSW5j
b21wbGV0ZVNlc3Npb25TZWdtZW50ID0gY2xhc3MgSW5jb21wbGV0ZVNlc3Npb25TZWdtZW50IGV4
dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2Fs
bCh0aGlzKTsKKyAgICBjb25zdHJ1Y3RvcihpZGVudGlmaWVyKQorICAgIHsKKyAgICAgICAgc3Vw
ZXIoKTsKIAogICAgICAgICB0aGlzLmlkZW50aWZpZXIgPSBpZGVudGlmaWVyOwogICAgICAgICB0
aGlzLl90aW1lc3RhbXAgPSBEYXRlLm5vdygpOwotfTsKKyAgICB9CiAKLVdlYkluc3BlY3Rvci5J
bmNvbXBsZXRlU2Vzc2lvblNlZ21lbnQucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBX
ZWJJbnNwZWN0b3IuSW5jb21wbGV0ZVNlc3Npb25TZWdtZW50LAotICAgIF9fcHJvdG9fXzogV2Vi
SW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGUsCisgICAgLy8gUHVibGljCiAKICAgICBnZXQgaXND
b21wbGV0ZSgpCiAgICAgewpAQCAtNDMsOSArNDMsMTEgQEAgV2ViSW5zcGVjdG9yLkluY29tcGxl
dGVTZXNzaW9uU2VnbWVudC5wcm90b3R5cGUgPSB7CiAgICAgfQogfTsKIAotV2ViSW5zcGVjdG9y
LlJlcGxheVNlc3Npb25TZWdtZW50ID0gZnVuY3Rpb24oaWRlbnRpZmllciwgcGF5bG9hZCkKK1dl
Ykluc3BlY3Rvci5SZXBsYXlTZXNzaW9uU2VnbWVudCA9IGNsYXNzIFJlcGxheVNlc3Npb25TZWdt
ZW50IGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogewotICAgIFdlYkluc3BlY3Rvci5PYmpl
Y3QuY2FsbCh0aGlzKTsKKyAgICBjb25zdHJ1Y3RvcihpZGVudGlmaWVyLCBwYXlsb2FkKQorICAg
IHsKKyAgICAgICAgc3VwZXIoKTsKIAogICAgICAgICB2YXIgc2VnbWVudCA9IHBheWxvYWQuc2Vn
bWVudDsKICAgICAgICAgY29uc29sZS5hc3NlcnQoaWRlbnRpZmllciA9PT0gc2VnbWVudC5pZCk7
CkBAIC01NCwxMSArNTYsOSBAQCBXZWJJbnNwZWN0b3IuUmVwbGF5U2Vzc2lvblNlZ21lbnQgPSBm
dW5jdGlvbihpZGVudGlmaWVyLCBwYXlsb2FkKQogICAgICAgICB0aGlzLl90aW1lc3RhbXAgPSBz
ZWdtZW50LnRpbWVzdGFtcDsKIAogICAgICAgICB0aGlzLl9xdWV1ZXMgPSBzZWdtZW50LnF1ZXVl
czsKLX07CisgICAgfQogCi1XZWJJbnNwZWN0b3IuUmVwbGF5U2Vzc2lvblNlZ21lbnQucHJvdG90
eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuUmVwbGF5U2Vzc2lvblNlZ21l
bnQsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZSwKKyAgICAv
LyBQdWJsaWMKIAogICAgIGdldCBpc0NvbXBsZXRlKCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUmVzb3VyY2UuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUmVzb3VyY2UuanMKaW5kZXgg
MjE5ZjY0MC4uMzg4N2Y3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvTW9kZWxzL1Jlc291cmNlLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL01vZGVscy9SZXNvdXJjZS5qcwpAQCAtMjMsOSArMjMsMTEgQEAKICAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuUmVzb3Vy
Y2UgPSBmdW5jdGlvbih1cmwsIG1pbWVUeXBlLCB0eXBlLCBsb2FkZXJJZGVudGlmaWVyLCByZXF1
ZXN0SWRlbnRpZmllciwgcmVxdWVzdE1ldGhvZCwgcmVxdWVzdEhlYWRlcnMsIHJlcXVlc3REYXRh
LCByZXF1ZXN0U2VudFRpbWVzdGFtcCwgaW5pdGlhdG9yU291cmNlQ29kZUxvY2F0aW9uKQorV2Vi
SW5zcGVjdG9yLlJlc291cmNlID0gY2xhc3MgUmVzb3VyY2UgZXh0ZW5kcyBXZWJJbnNwZWN0b3Iu
U291cmNlQ29kZQogewotICAgIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlLmNhbGwodGhpcyk7Cisg
ICAgY29uc3RydWN0b3IodXJsLCBtaW1lVHlwZSwgdHlwZSwgbG9hZGVySWRlbnRpZmllciwgcmVx
dWVzdElkZW50aWZpZXIsIHJlcXVlc3RNZXRob2QsIHJlcXVlc3RIZWFkZXJzLCByZXF1ZXN0RGF0
YSwgcmVxdWVzdFNlbnRUaW1lc3RhbXAsIGluaXRpYXRvclNvdXJjZUNvZGVMb2NhdGlvbikKKyAg
ICB7CisgICAgICAgIHN1cGVyKCk7CiAKICAgICAgICAgY29uc29sZS5hc3NlcnQodXJsKTsKIApA
QCAtNTEsODIgKzUzLDExIEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZSA9IGZ1bmN0aW9uKHVybCwg
bWltZVR5cGUsIHR5cGUsIGxvYWRlcklkZW50aWZpZXIsIHJlcXVlc3RJCiAgICAgICAgIHRoaXMu
X3NpemUgPSBOYU47CiAgICAgICAgIHRoaXMuX3RyYW5zZmVyU2l6ZSA9IE5hTjsKICAgICAgICAg
dGhpcy5fY2FjaGVkID0gZmFsc2U7Ci19OworICAgIH0KIAotV2ViSW5zcGVjdG9yLk9iamVjdC5h
ZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhXZWJJbnNwZWN0b3IuUmVzb3VyY2UpOworICAgIC8vIFN0
YXRpYwogCi1XZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZUlkZW50aWZpZXIgPSAicmVzb3VyY2Ui
OwotV2ViSW5zcGVjdG9yLlJlc291cmNlLlVSTENvb2tpZUtleSA9ICJyZXNvdXJjZS11cmwiOwot
V2ViSW5zcGVjdG9yLlJlc291cmNlLk1haW5SZXNvdXJjZUNvb2tpZUtleSA9ICJyZXNvdXJjZS1p
cy1tYWluLXJlc291cmNlIjsKLQotV2ViSW5zcGVjdG9yLlJlc291cmNlLkV2ZW50ID0gewotICAg
IFVSTERpZENoYW5nZTogInJlc291cmNlLXVybC1kaWQtY2hhbmdlIiwKLSAgICBNSU1FVHlwZURp
ZENoYW5nZTogInJlc291cmNlLW1pbWUtdHlwZS1kaWQtY2hhbmdlIiwKLSAgICBUeXBlRGlkQ2hh
bmdlOiAicmVzb3VyY2UtdHlwZS1kaWQtY2hhbmdlIiwKLSAgICBSZXF1ZXN0SGVhZGVyc0RpZENo
YW5nZTogInJlc291cmNlLXJlcXVlc3QtaGVhZGVycy1kaWQtY2hhbmdlIiwKLSAgICBSZXNwb25z
ZVJlY2VpdmVkOiAicmVzb3VyY2UtcmVzcG9uc2UtcmVjZWl2ZWQiLAotICAgIExvYWRpbmdEaWRG
aW5pc2g6ICJyZXNvdXJjZS1sb2FkaW5nLWRpZC1maW5pc2giLAotICAgIExvYWRpbmdEaWRGYWls
OiAicmVzb3VyY2UtbG9hZGluZy1kaWQtZmFpbCIsCi0gICAgVGltZXN0YW1wc0RpZENoYW5nZTog
InJlc291cmNlLXRpbWVzdGFtcHMtZGlkLWNoYW5nZSIsCi0gICAgU2l6ZURpZENoYW5nZTogInJl
c291cmNlLXNpemUtZGlkLWNoYW5nZSIsCi0gICAgVHJhbnNmZXJTaXplRGlkQ2hhbmdlOiAicmVz
b3VyY2UtdHJhbnNmZXItc2l6ZS1kaWQtY2hhbmdlIiwKLSAgICBDYWNoZVN0YXR1c0RpZENoYW5n
ZTogInJlc291cmNlLWNhY2hlZC1kaWQtY2hhbmdlIgotfTsKLQotLy8gS2VlcCB0aGVzZSBpbiBz
eW5jIHdpdGggdGhlICJSZXNvdXJjZVR5cGUiIGVudW0gZGVmaW5lZCBieSB0aGUgIlBhZ2UiIGRv
bWFpbi4KLVdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlID0gewotICAgIERvY3VtZW50OiAicmVz
b3VyY2UtdHlwZS1kb2N1bWVudCIsCi0gICAgU3R5bGVzaGVldDogInJlc291cmNlLXR5cGUtc3R5
bGVzaGVldCIsCi0gICAgSW1hZ2U6ICJyZXNvdXJjZS10eXBlLWltYWdlIiwKLSAgICBGb250OiAi
cmVzb3VyY2UtdHlwZS1mb250IiwKLSAgICBTY3JpcHQ6ICJyZXNvdXJjZS10eXBlLXNjcmlwdCIs
Ci0gICAgWEhSOiAicmVzb3VyY2UtdHlwZS14aHIiLAotICAgIFdlYlNvY2tldDogInJlc291cmNl
LXR5cGUtd2Vic29ja2V0IiwKLSAgICBPdGhlcjogInJlc291cmNlLXR5cGUtb3RoZXIiCi19Owot
Ci0vLyBUaGlzIE1JTUUgVHlwZSBtYXAgaXMgcHJpdmF0ZSwgdXNlIFdlYkluc3BlY3Rvci5SZXNv
dXJjZS50eXBlRnJvbU1JTUVUeXBlKCkuCi1XZWJJbnNwZWN0b3IuUmVzb3VyY2UuX21pbWVUeXBl
TWFwID0gewotICAgICJ0ZXh0L2h0bWwiOiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5Eb2N1
bWVudCwKLSAgICAidGV4dC94bWwiOiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5Eb2N1bWVu
dCwKLSAgICAidGV4dC9wbGFpbiI6IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLkRvY3VtZW50
LAotICAgICJhcHBsaWNhdGlvbi94aHRtbCt4bWwiOiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlw
ZS5Eb2N1bWVudCwKLSAgICAiaW1hZ2Uvc3ZnK3htbCI6IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5U
eXBlLkRvY3VtZW50LAotCi0gICAgInRleHQvY3NzIjogV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5
cGUuU3R5bGVzaGVldCwKLSAgICAidGV4dC94c2wiOiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlw
ZS5TdHlsZXNoZWV0LAotICAgICJ0ZXh0L3gtbGVzcyI6IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5U
eXBlLlN0eWxlc2hlZXQsCi0gICAgInRleHQveC1zYXNzIjogV2ViSW5zcGVjdG9yLlJlc291cmNl
LlR5cGUuU3R5bGVzaGVldCwKLSAgICAidGV4dC94LXNjc3MiOiBXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2UuVHlwZS5TdHlsZXNoZWV0LAotCi0gICAgImFwcGxpY2F0aW9uL3BkZiI6IFdlYkluc3BlY3Rv
ci5SZXNvdXJjZS5UeXBlLkltYWdlLAotCi0gICAgImFwcGxpY2F0aW9uL3gtZm9udC10eXBlMSI6
IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLkZvbnQsCi0gICAgImFwcGxpY2F0aW9uL3gtZm9u
dC10dGYiOiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5Gb250LAotICAgICJhcHBsaWNhdGlv
bi94LWZvbnQtd29mZiI6IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLkZvbnQsCi0gICAgImFw
cGxpY2F0aW9uL3gtdHJ1ZXR5cGUtZm9udCI6IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLkZv
bnQsCi0KLSAgICAidGV4dC9qYXZhc2NyaXB0IjogV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUu
U2NyaXB0LAotICAgICJ0ZXh0L2VjbWFzY3JpcHQiOiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlw
ZS5TY3JpcHQsCi0gICAgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiOiBXZWJJbnNwZWN0b3IuUmVz
b3VyY2UuVHlwZS5TY3JpcHQsCi0gICAgImFwcGxpY2F0aW9uL2VjbWFzY3JpcHQiOiBXZWJJbnNw
ZWN0b3IuUmVzb3VyY2UuVHlwZS5TY3JpcHQsCi0gICAgImFwcGxpY2F0aW9uL3gtamF2YXNjcmlw
dCI6IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLlNjcmlwdCwKLSAgICAiYXBwbGljYXRpb24v
anNvbiI6IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLlNjcmlwdCwKLSAgICAiYXBwbGljYXRp
b24veC1qc29uIjogV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuU2NyaXB0LAotICAgICJ0ZXh0
L3gtamF2YXNjcmlwdCI6IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLlNjcmlwdCwKLSAgICAi
dGV4dC94LWpzb24iOiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5TY3JpcHQsCi0gICAgInRl
eHQvamF2YXNjcmlwdDEuMSI6IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLlNjcmlwdCwKLSAg
ICAidGV4dC9qYXZhc2NyaXB0MS4yIjogV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuU2NyaXB0
LAotICAgICJ0ZXh0L2phdmFzY3JpcHQxLjMiOiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5T
Y3JpcHQsCi0gICAgInRleHQvanNjcmlwdCI6IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLlNj
cmlwdCwKLSAgICAidGV4dC9saXZlc2NyaXB0IjogV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUu
U2NyaXB0LAotICAgICJ0ZXh0L3gtbGl2ZXNjcmlwdCI6IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5U
eXBlLlNjcmlwdCwKLSAgICAidGV4dC90eXBlc2NyaXB0IjogV2ViSW5zcGVjdG9yLlJlc291cmNl
LlR5cGUuU2NyaXB0LAotICAgICJ0ZXh0L3gtY2xvanVyZSI6IFdlYkluc3BlY3Rvci5SZXNvdXJj
ZS5UeXBlLlNjcmlwdCwKLSAgICAidGV4dC94LWNvZmZlZXNjcmlwdCI6IFdlYkluc3BlY3Rvci5S
ZXNvdXJjZS5UeXBlLlNjcmlwdAotfTsKLQotV2ViSW5zcGVjdG9yLlJlc291cmNlLnR5cGVGcm9t
TUlNRVR5cGUgPSBmdW5jdGlvbihtaW1lVHlwZSkKKyAgICBzdGF0aWMgdHlwZUZyb21NSU1FVHlw
ZShtaW1lVHlwZSkKICAgICB7CiAgICAgICAgIGlmICghbWltZVR5cGUpCiAgICAgICAgICAgICBy
ZXR1cm4gV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuT3RoZXI7CkBAIC0xNDMsOSArNzQsOSBA
QCBXZWJJbnNwZWN0b3IuUmVzb3VyY2UudHlwZUZyb21NSU1FVHlwZSA9IGZ1bmN0aW9uKG1pbWVU
eXBlKQogICAgICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLkZvbnQ7
CiAKICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLk90aGVyOwotfTsK
KyAgICB9CiAKLVdlYkluc3BlY3Rvci5SZXNvdXJjZS5kaXNwbGF5TmFtZUZvclR5cGUgPSBmdW5j
dGlvbih0eXBlLCBwbHVyYWwpCisgICAgc3RhdGljIGRpc3BsYXlOYW1lRm9yVHlwZSh0eXBlLCBw
bHVyYWwpCiAgICAgewogICAgICAgICBzd2l0Y2godHlwZSkgewogICAgICAgICBjYXNlIFdlYklu
c3BlY3Rvci5SZXNvdXJjZS5UeXBlLkRvY3VtZW50OgpAQCAtMTgyLDUyICsxMTMsNDggQEAgV2Vi
SW5zcGVjdG9yLlJlc291cmNlLmRpc3BsYXlOYW1lRm9yVHlwZSA9IGZ1bmN0aW9uKHR5cGUsIHBs
dXJhbCkKICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIlVua25vd24gcmVzb3VyY2UgdHlwZTog
IiwgdHlwZSk7CiAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgfQotfTsKLQotV2Vi
SW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5z
cGVjdG9yLlJlc291cmNlLAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGUu
cHJvdG90eXBlLAorICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IHVybCgpCiAgICAg
ewogICAgICAgICByZXR1cm4gdGhpcy5fdXJsOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHVy
bENvbXBvbmVudHMoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl91cmxDb21wb25lbnRzKQog
ICAgICAgICAgICAgdGhpcy5fdXJsQ29tcG9uZW50cyA9IHBhcnNlVVJMKHRoaXMuX3VybCk7CiAg
ICAgICAgIHJldHVybiB0aGlzLl91cmxDb21wb25lbnRzOwotICAgIH0sCisgICAgfQogCiAgICAg
Z2V0IGRpc3BsYXlOYW1lKCkKICAgICB7CiAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuZGlz
cGxheU5hbWVGb3JVUkwodGhpcy5fdXJsLCB0aGlzLnVybENvbXBvbmVudHMpOwotICAgIH0sCisg
ICAgfQogCiAgICAgZ2V0IGluaXRpYXRvclNvdXJjZUNvZGVMb2NhdGlvbigpCiAgICAgewogICAg
ICAgICByZXR1cm4gdGhpcy5faW5pdGlhdG9yU291cmNlQ29kZUxvY2F0aW9uOwotICAgIH0sCisg
ICAgfQogCiAgICAgZ2V0IHR5cGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3R5cGU7
Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgbWltZVR5cGUoKQogICAgIHsKICAgICAgICAgcmV0
dXJuIHRoaXMuX21pbWVUeXBlOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IG1pbWVUeXBlQ29t
cG9uZW50cygpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX21pbWVUeXBlQ29tcG9uZW50cykK
ICAgICAgICAgICAgIHRoaXMuX21pbWVUeXBlQ29tcG9uZW50cyA9IHBhcnNlTUlNRVR5cGUodGhp
cy5fbWltZVR5cGUpOwogICAgICAgICByZXR1cm4gdGhpcy5fbWltZVR5cGVDb21wb25lbnRzOwot
ICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHN5bnRoZXRpY01JTUVUeXBlKCkKICAgICB7CkBAIC0y
NTIsOSArMTc5LDkgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlwZSA9IHsKIAogICAg
ICAgICAvLyBSZXR1cm4gdGhlIGFjdHVhbCBNSU1FLXR5cGUgc2luY2Ugd2UgZG9uJ3QgaGF2ZSBh
IGJldHRlciBzeW50aGVzaXplZCBvbmUgdG8gcmV0dXJuLgogICAgICAgICByZXR1cm4gdGhpcy5f
bWltZVR5cGU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjcmVhdGVPYmplY3RVUkw6IGZ1bmN0aW9u
KCkKKyAgICBjcmVhdGVPYmplY3RVUkwoKQogICAgIHsKICAgICAgICAgLy8gSWYgY29udGVudCBp
cyBub3QgYXZhaWxhYmxlLCBmYWxsYmFjayB0byB1c2luZyBvcmlnaW5hbCBVUkwuCiAgICAgICAg
IC8vIFRoZSBjbGllbnQgbWF5IHRyeSB0byByZXZva2UgaXQsIGJ1dCBub3RoaW5nIHdpbGwgaGFw
cGVuLgpAQCAtMjY1LDEzNyArMTkyLDEzNyBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90
eXBlID0gewogICAgICAgICBjb25zb2xlLmFzc2VydChjb250ZW50IGluc3RhbmNlb2YgQmxvYiwg
Y29udGVudCk7CiAKICAgICAgICAgcmV0dXJuIFVSTC5jcmVhdGVPYmplY3RVUkwoY29udGVudCk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBpc01haW5SZXNvdXJjZTogZnVuY3Rpb24oKQorICAgIGlz
TWFpblJlc291cmNlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9wYXJlbnRGcmFtZSA/
IHRoaXMuX3BhcmVudEZyYW1lLm1haW5SZXNvdXJjZSA9PT0gdGhpcyA6IGZhbHNlOwotICAgIH0s
CisgICAgfQogCiAgICAgZ2V0IHBhcmVudEZyYW1lKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0
aGlzLl9wYXJlbnRGcmFtZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBsb2FkZXJJZGVudGlm
aWVyKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9sb2FkZXJJZGVudGlmaWVyOwotICAg
IH0sCisgICAgfQogCiAgICAgZ2V0IHJlcXVlc3RJZGVudGlmaWVyKCkKICAgICB7CiAgICAgICAg
IHJldHVybiB0aGlzLl9yZXF1ZXN0SWRlbnRpZmllcjsKLSAgICB9LAorICAgIH0KIAogICAgIGdl
dCBmaW5pc2hlZCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZmluaXNoZWQ7Ci0gICAg
fSwKKyAgICB9CiAKICAgICBnZXQgZmFpbGVkKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlz
Ll9mYWlsZWQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgY2FuY2VsZWQoKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHRoaXMuX2NhbmNlbGVkOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHJl
cXVlc3RNZXRob2QoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3JlcXVlc3RNZXRob2Q7
Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgcmVxdWVzdERhdGEoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHRoaXMuX3JlcXVlc3REYXRhOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHJlcXVl
c3REYXRhQ29udGVudFR5cGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3JlcXVlc3RI
ZWFkZXJzLnZhbHVlRm9yQ2FzZUluc2Vuc2l0aXZlS2V5KCJDb250ZW50LVR5cGUiKSB8fCBudWxs
OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHJlcXVlc3RIZWFkZXJzKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiB0aGlzLl9yZXF1ZXN0SGVhZGVyczsKLSAgICB9LAorICAgIH0KIAogICAgIGdl
dCByZXNwb25zZUhlYWRlcnMoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc3BvbnNl
SGVhZGVyczsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCByZXF1ZXN0U2VudFRpbWVzdGFtcCgp
CiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcmVxdWVzdFNlbnRUaW1lc3RhbXA7Ci0gICAg
fSwKKyAgICB9CiAKICAgICBnZXQgbGFzdFJlZGlyZWN0UmVjZWl2ZWRUaW1lc3RhbXAoKQogICAg
IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2xhc3RSZWRpcmVjdFJlY2VpdmVkVGltZXN0YW1wOwot
ICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHJlc3BvbnNlUmVjZWl2ZWRUaW1lc3RhbXAoKQogICAg
IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc3BvbnNlUmVjZWl2ZWRUaW1lc3RhbXA7Ci0gICAg
fSwKKyAgICB9CiAKICAgICBnZXQgbGFzdERhdGFSZWNlaXZlZFRpbWVzdGFtcCgpCiAgICAgewog
ICAgICAgICByZXR1cm4gdGhpcy5fbGFzdERhdGFSZWNlaXZlZFRpbWVzdGFtcDsKLSAgICB9LAor
ICAgIH0KIAogICAgIGdldCBmaW5pc2hlZE9yRmFpbGVkVGltZXN0YW1wKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiB0aGlzLl9maW5pc2hlZE9yRmFpbGVkVGltZXN0YW1wOwotICAgIH0sCisgICAg
fQogCiAgICAgZ2V0IGZpcnN0VGltZXN0YW1wKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlz
LnJlcXVlc3RTZW50VGltZXN0YW1wIHx8IHRoaXMubGFzdFJlZGlyZWN0UmVjZWl2ZWRUaW1lc3Rh
bXAgfHwgdGhpcy5yZXNwb25zZVJlY2VpdmVkVGltZXN0YW1wIHx8IHRoaXMubGFzdERhdGFSZWNl
aXZlZFRpbWVzdGFtcCB8fCB0aGlzLmZpbmlzaGVkT3JGYWlsZWRUaW1lc3RhbXA7Ci0gICAgfSwK
KyAgICB9CiAKICAgICBnZXQgbGFzdFRpbWVzdGFtcCgpCiAgICAgewogICAgICAgICByZXR1cm4g
dGhpcy5maW5pc2hlZE9yRmFpbGVkVGltZXN0YW1wIHx8IHRoaXMubGFzdERhdGFSZWNlaXZlZFRp
bWVzdGFtcCB8fCB0aGlzLnJlc3BvbnNlUmVjZWl2ZWRUaW1lc3RhbXAgfHwgdGhpcy5sYXN0UmVk
aXJlY3RSZWNlaXZlZFRpbWVzdGFtcCB8fCB0aGlzLnJlcXVlc3RTZW50VGltZXN0YW1wOwotICAg
IH0sCisgICAgfQogCiAgICAgZ2V0IGR1cmF0aW9uKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0
aGlzLl9maW5pc2hlZE9yRmFpbGVkVGltZXN0YW1wIC0gdGhpcy5fcmVxdWVzdFNlbnRUaW1lc3Rh
bXA7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgbGF0ZW5jeSgpCiAgICAgewogICAgICAgICBy
ZXR1cm4gdGhpcy5fcmVzcG9uc2VSZWNlaXZlZFRpbWVzdGFtcCAtIHRoaXMuX3JlcXVlc3RTZW50
VGltZXN0YW1wOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHJlY2VpdmVEdXJhdGlvbigpCiAg
ICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZmluaXNoZWRPckZhaWxlZFRpbWVzdGFtcCAtIHRo
aXMuX3Jlc3BvbnNlUmVjZWl2ZWRUaW1lc3RhbXA7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQg
Y2FjaGVkKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9jYWNoZWQ7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICBnZXQgc3RhdHVzQ29kZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5f
c3RhdHVzQ29kZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzdGF0dXNUZXh0KCkKICAgICB7
CiAgICAgICAgIHJldHVybiB0aGlzLl9zdGF0dXNUZXh0OwotICAgIH0sCisgICAgfQogCiAgICAg
Z2V0IHNpemUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3NpemU7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICBnZXQgZW5jb2RlZFNpemUoKQogICAgIHsKQEAgLTQxNCw3ICszNDEsNyBAQCBX
ZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlID0gewogICAgICAgICAvLyBnZXQgYWN0dWFs
IHRyYW5zZmVyIHNpemUgZnJvbSB0aGUgbmV0d29yayBzdGFjay4KIAogICAgICAgICByZXR1cm4g
TnVtYmVyKHRoaXMuX3Jlc3BvbnNlSGVhZGVycy52YWx1ZUZvckNhc2VJbnNlbnNpdGl2ZUtleSgi
Q29udGVudC1MZW5ndGgiKSB8fCB0aGlzLl9zaXplKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdl
dCB0cmFuc2ZlclNpemUoKQogICAgIHsKQEAgLTQyNSwyMCArMzUyLDIwIEBAIFdlYkluc3BlY3Rv
ci5SZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm4gMDsKIAogICAgICAg
ICByZXR1cm4gdGhpcy5fcmVzcG9uc2VIZWFkZXJzU2l6ZSArIHRoaXMuZW5jb2RlZFNpemU7Ci0g
ICAgfSwKKyAgICB9CiAKICAgICBnZXQgY29tcHJlc3NlZCgpCiAgICAgewogICAgICAgICB2YXIg
Y29udGVudEVuY29kaW5nID0gdGhpcy5fcmVzcG9uc2VIZWFkZXJzLnZhbHVlRm9yQ2FzZUluc2Vu
c2l0aXZlS2V5KCJDb250ZW50LUVuY29kaW5nIik7CiAgICAgICAgIHJldHVybiBjb250ZW50RW5j
b2RpbmcgJiYgL1xiKD86Z3ppcHxkZWZsYXRlKVxiLy50ZXN0KGNvbnRlbnRFbmNvZGluZyk7Ci0g
ICAgfSwKKyAgICB9CiAKICAgICBnZXQgc2NyaXB0cygpCiAgICAgewogICAgICAgICByZXR1cm4g
dGhpcy5fc2NyaXB0cyB8fCBbXTsKLSAgICB9LAorICAgIH0KIAotICAgIHNjcmlwdEZvckxvY2F0
aW9uOiBmdW5jdGlvbihzb3VyY2VDb2RlTG9jYXRpb24pCisgICAgc2NyaXB0Rm9yTG9jYXRpb24o
c291cmNlQ29kZUxvY2F0aW9uKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoISh0aGlz
IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlNvdXJjZU1hcFJlc291cmNlKSk7CiAgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KHNvdXJjZUNvZGVMb2NhdGlvbi5zb3VyY2VDb2RlID09PSB0aGlzLCAiU291
cmNlQ29kZUxvY2F0aW9uIG11c3QgYmUgaW4gdGhpcyBSZXNvdXJjZSIpOwpAQCAtNDU5LDkgKzM4
Niw5IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAog
ICAgICAgICByZXR1cm4gbnVsbDsKLSAgICB9LAorICAgIH0KIAotICAgIHVwZGF0ZUZvclJlZGly
ZWN0UmVzcG9uc2U6IGZ1bmN0aW9uKHVybCwgcmVxdWVzdEhlYWRlcnMsIGVsYXBzZWRUaW1lKQor
ICAgIHVwZGF0ZUZvclJlZGlyZWN0UmVzcG9uc2UodXJsLCByZXF1ZXN0SGVhZGVycywgZWxhcHNl
ZFRpbWUpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fZmluaXNoZWQpOwog
ICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fZmFpbGVkKTsKQEAgLTQ4Miw5ICs0MDksOSBA
QCBXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMuZGlz
cGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5SZXNvdXJjZS5FdmVudC5SZXF1ZXN0
SGVhZGVyc0RpZENoYW5nZSk7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJz
KFdlYkluc3BlY3Rvci5SZXNvdXJjZS5FdmVudC5UaW1lc3RhbXBzRGlkQ2hhbmdlKTsKLSAgICB9
LAorICAgIH0KIAotICAgIHVwZGF0ZUZvclJlc3BvbnNlOiBmdW5jdGlvbih1cmwsIG1pbWVUeXBl
LCB0eXBlLCByZXNwb25zZUhlYWRlcnMsIHN0YXR1c0NvZGUsIHN0YXR1c1RleHQsIGVsYXBzZWRU
aW1lKQorICAgIHVwZGF0ZUZvclJlc3BvbnNlKHVybCwgbWltZVR5cGUsIHR5cGUsIHJlc3BvbnNl
SGVhZGVycywgc3RhdHVzQ29kZSwgc3RhdHVzVGV4dCwgZWxhcHNlZFRpbWUpCiAgICAgewogICAg
ICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fZmluaXNoZWQpOwogICAgICAgICBjb25zb2xlLmFz
c2VydCghdGhpcy5fZmFpbGVkKTsKQEAgLTUzOSwxNCArNDY2LDE0IEBAIFdlYkluc3BlY3Rvci5S
ZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0
ZW5lcnMoV2ViSW5zcGVjdG9yLlJlc291cmNlLkV2ZW50LlJlc3BvbnNlUmVjZWl2ZWQpOwogICAg
ICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuUmVzb3VyY2Uu
RXZlbnQuVGltZXN0YW1wc0RpZENoYW5nZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjYW5SZXF1
ZXN0Q29udGVudDogZnVuY3Rpb24oKQorICAgIGNhblJlcXVlc3RDb250ZW50KCkKICAgICB7CiAg
ICAgICAgIHJldHVybiB0aGlzLl9maW5pc2hlZDsKLSAgICB9LAorICAgIH0KIAotICAgIHJlcXVl
c3RDb250ZW50RnJvbUJhY2tlbmQ6IGZ1bmN0aW9uKCkKKyAgICByZXF1ZXN0Q29udGVudEZyb21C
YWNrZW5kKCkKICAgICB7CiAgICAgICAgIC8vIElmIHdlIGhhdmUgdGhlIHJlcXVlc3RJZGVudGlm
aWVyIHdlIGNhbiBnZXQgdGhlIGFjdHVhbCByZXNwb25zZSBmb3IgdGhpcyBzcGVjaWZpYyByZXNv
dXJjZS4KICAgICAgICAgLy8gT3RoZXJ3aXNlIHRoZSBjb250ZW50IHdpbGwgYmUgY2FjaGVkIHJl
c291cmNlIGRhdGEsIHdoaWNoIG1pZ2h0IG5vdCBleGlzdCBhbnltb3JlLgpAQCAtNTU4LDkgKzQ4
NSw5IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBy
ZXR1cm4gUGFnZUFnZW50LmdldFJlc291cmNlQ29udGVudC5wcm9taXNlKHRoaXMuX3BhcmVudEZy
YW1lLmlkLCB0aGlzLl91cmwpOwogCiAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcg
RXJyb3IoIkNvbnRlbnQgcmVxdWVzdCBmYWlsZWQuIikpOwotICAgIH0sCisgICAgfQogCi0gICAg
aW5jcmVhc2VTaXplOiBmdW5jdGlvbihkYXRhTGVuZ3RoLCBlbGFwc2VkVGltZSkKKyAgICBpbmNy
ZWFzZVNpemUoZGF0YUxlbmd0aCwgZWxhcHNlZFRpbWUpCiAgICAgewogICAgICAgICBjb25zb2xl
LmFzc2VydChkYXRhTGVuZ3RoID49IDApOwogCkBAIC01NzgsOSArNTA1LDkgQEAgV2ViSW5zcGVj
dG9yLlJlc291cmNlLnByb3RvdHlwZSA9IHsKICAgICAgICAgLy8gVGhlIHRyYW5zZmVyU2l6ZSBp
cyBiYXNlZCBvZmYgb2Ygc2l6ZSB3aGVuIHN0YXR1cyBpcyBub3QgMzA0IG9yIENvbnRlbnQtTGVu
Z3RoIGlzIG1pc3NpbmcuCiAgICAgICAgIGlmIChpc05hTih0aGlzLl90cmFuc2ZlclNpemUpICYm
IHRoaXMuX3N0YXR1c0NvZGUgIT09IDMwNCAmJiAhdGhpcy5fcmVzcG9uc2VIZWFkZXJzLnZhbHVl
Rm9yQ2FzZUluc2Vuc2l0aXZlS2V5KCJDb250ZW50LUxlbmd0aCIpKQogICAgICAgICAgICAgdGhp
cy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlJlc291cmNlLkV2ZW50LlRy
YW5zZmVyU2l6ZURpZENoYW5nZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBpbmNyZWFzZVRyYW5z
ZmVyU2l6ZTogZnVuY3Rpb24oZW5jb2RlZERhdGFMZW5ndGgpCisgICAgaW5jcmVhc2VUcmFuc2Zl
clNpemUoZW5jb2RlZERhdGFMZW5ndGgpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChl
bmNvZGVkRGF0YUxlbmd0aCA+PSAwKTsKIApAQCAtNTg5LDkgKzUxNiw5IEBAIFdlYkluc3BlY3Rv
ci5SZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3RyYW5zZmVyU2l6ZSArPSBl
bmNvZGVkRGF0YUxlbmd0aDsKIAogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVy
cyhXZWJJbnNwZWN0b3IuUmVzb3VyY2UuRXZlbnQuVHJhbnNmZXJTaXplRGlkQ2hhbmdlKTsKLSAg
ICB9LAorICAgIH0KIAotICAgIG1hcmtBc0NhY2hlZDogZnVuY3Rpb24oKQorICAgIG1hcmtBc0Nh
Y2hlZCgpCiAgICAgewogICAgICAgICB0aGlzLl9jYWNoZWQgPSB0cnVlOwogCkBAIC02MDAsOSAr
NTI3LDkgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlwZSA9IHsKICAgICAgICAgLy8g
VGhlIHRyYW5zZmVyU2l6ZSBpcyBzdGFydHMgcmV0dXJuaW5nIDAgd2hlbiBjYWNoZWQgaXMgdHJ1
ZSwgdW5sZXNzIHN0YXR1cyBpcyAzMDQuCiAgICAgICAgIGlmICh0aGlzLl9zdGF0dXNDb2RlICE9
PSAzMDQpCiAgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNw
ZWN0b3IuUmVzb3VyY2UuRXZlbnQuVHJhbnNmZXJTaXplRGlkQ2hhbmdlKTsKLSAgICB9LAorICAg
IH0KIAotICAgIG1hcmtBc0ZpbmlzaGVkOiBmdW5jdGlvbihlbGFwc2VkVGltZSkKKyAgICBtYXJr
QXNGaW5pc2hlZChlbGFwc2VkVGltZSkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0
aGlzLl9mYWlsZWQpOwogICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fY2FuY2VsZWQpOwpA
QCAtNjE1LDkgKzU0Miw5IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAK
ICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlJlc291
cmNlLkV2ZW50LkxvYWRpbmdEaWRGaW5pc2gpOwogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRU
b0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuUmVzb3VyY2UuRXZlbnQuVGltZXN0YW1wc0RpZENoYW5n
ZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBtYXJrQXNGYWlsZWQ6IGZ1bmN0aW9uKGNhbmNlbGVk
LCBlbGFwc2VkVGltZSkKKyAgICBtYXJrQXNGYWlsZWQoY2FuY2VsZWQsIGVsYXBzZWRUaW1lKQog
ICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuX2ZpbmlzaGVkKTsKIApAQCAtNjI3
LDkgKzU1NCw5IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAKICAgICAg
ICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlJlc291cmNlLkV2
ZW50LkxvYWRpbmdEaWRGYWlsKTsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5l
cnMoV2ViSW5zcGVjdG9yLlJlc291cmNlLkV2ZW50LlRpbWVzdGFtcHNEaWRDaGFuZ2UpOwotICAg
IH0sCisgICAgfQogCi0gICAgcmV2ZXJ0TWFya0FzRmluaXNoZWQ6IGZ1bmN0aW9uKCkKKyAgICBy
ZXZlcnRNYXJrQXNGaW5pc2hlZCgpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCghdGhp
cy5fZmFpbGVkKTsKICAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuX2NhbmNlbGVkKTsKQEAg
LTYzNyw5ICs1NjQsOSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlID0gewogCiAg
ICAgICAgIHRoaXMuX2ZpbmlzaGVkID0gZmFsc2U7CiAgICAgICAgIHRoaXMuX2ZpbmlzaGVkT3JG
YWlsZWRUaW1lc3RhbXAgPSBOYU47Ci0gICAgfSwKKyAgICB9CiAKLSAgICBnZXRJbWFnZVNpemU6
IGZ1bmN0aW9uKGNhbGxiYWNrKQorICAgIGdldEltYWdlU2l6ZShjYWxsYmFjaykKICAgICB7CiAg
ICAgICAgIC8vIFRocm93IGFuIGVycm9yIGluIHRoZSBjYXNlIHRoaXMgcmVzb3VyY2UgaXMgbm90
IGFuIGltYWdlLgogICAgICAgICBpZiAodGhpcy50eXBlICE9PSBXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2UuVHlwZS5JbWFnZSkKQEAgLTY3NywxMiArNjA0LDEyIEBAIFdlYkluc3BlY3Rvci5SZXNvdXJj
ZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMucmVxdWVzdENvbnRlbnQoKS50aGVuKGZ1bmN0
aW9uKGNvbnRlbnQpIHsKICAgICAgICAgICAgIG9iamVjdFVSTCA9IGltYWdlLnNyYyA9IGNvbnRl
bnQuc291cmNlQ29kZS5jcmVhdGVPYmplY3RVUkwoKTsKICAgICAgICAgfSk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICByZXF1ZXN0Q29udGVudDogZnVuY3Rpb24oKQorICAgIHJlcXVlc3RDb250ZW50
KCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9maW5pc2hlZCkKLSAgICAgICAgICAgIHJldHVy
biBXZWJJbnNwZWN0b3IuU291cmNlQ29kZS5wcm90b3R5cGUucmVxdWVzdENvbnRlbnQuY2FsbCh0
aGlzKTsKKyAgICAgICAgICAgIHJldHVybiBzdXBlci5yZXF1ZXN0Q29udGVudCgpOwogCiAgICAg
ICAgIGlmICh0aGlzLl9mYWlsZWQpCiAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZl
KHtlcnJvcjogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJBbiBlcnJvciBvY2N1cnJlZCB0cnlpbmcg
dG8gbG9hZCB0aGUgcmVzb3VyY2UuIil9KTsKQEAgLTY5NSw5ICs2MjIsOSBAQCBXZWJJbnNwZWN0
b3IuUmVzb3VyY2UucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIHRo
aXMuX2ZpbmlzaFRoZW5SZXF1ZXN0Q29udGVudFByb21pc2U7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBhc3NvY2lhdGVXaXRoU2NyaXB0OiBmdW5jdGlvbihzY3JpcHQpCisgICAgYXNzb2NpYXRlV2l0
aFNjcmlwdChzY3JpcHQpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX3NjcmlwdHMpCiAgICAg
ICAgICAgICB0aGlzLl9zY3JpcHRzID0gW107CkBAIC03MTEsMTEgKzYzOCw4MiBAQCBXZWJJbnNw
ZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fdHlwZSA9IFdl
Ykluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLlNjcmlwdDsKICAgICAgICAgICAgIHRoaXMuZGlzcGF0
Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5SZXNvdXJjZS5FdmVudC5UeXBlRGlkQ2hh
bmdlLCB7b2xkVHlwZX0pOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzYXZlSWRl
bnRpdHlUb0Nvb2tpZTogZnVuY3Rpb24oY29va2llKQorICAgIHNhdmVJZGVudGl0eVRvQ29va2ll
KGNvb2tpZSkKICAgICB7CiAgICAgICAgIGNvb2tpZVtXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVVJM
Q29va2llS2V5XSA9IHRoaXMudXJsLmhhc2g7CiAgICAgICAgIGNvb2tpZVtXZWJJbnNwZWN0b3Iu
UmVzb3VyY2UuTWFpblJlc291cmNlQ29va2llS2V5XSA9IHRoaXMuaXNNYWluUmVzb3VyY2UoKTsK
ICAgICB9CiB9OworCitXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZUlkZW50aWZpZXIgPSAicmVz
b3VyY2UiOworV2ViSW5zcGVjdG9yLlJlc291cmNlLlVSTENvb2tpZUtleSA9ICJyZXNvdXJjZS11
cmwiOworV2ViSW5zcGVjdG9yLlJlc291cmNlLk1haW5SZXNvdXJjZUNvb2tpZUtleSA9ICJyZXNv
dXJjZS1pcy1tYWluLXJlc291cmNlIjsKKworV2ViSW5zcGVjdG9yLlJlc291cmNlLkV2ZW50ID0g
eworICAgIFVSTERpZENoYW5nZTogInJlc291cmNlLXVybC1kaWQtY2hhbmdlIiwKKyAgICBNSU1F
VHlwZURpZENoYW5nZTogInJlc291cmNlLW1pbWUtdHlwZS1kaWQtY2hhbmdlIiwKKyAgICBUeXBl
RGlkQ2hhbmdlOiAicmVzb3VyY2UtdHlwZS1kaWQtY2hhbmdlIiwKKyAgICBSZXF1ZXN0SGVhZGVy
c0RpZENoYW5nZTogInJlc291cmNlLXJlcXVlc3QtaGVhZGVycy1kaWQtY2hhbmdlIiwKKyAgICBS
ZXNwb25zZVJlY2VpdmVkOiAicmVzb3VyY2UtcmVzcG9uc2UtcmVjZWl2ZWQiLAorICAgIExvYWRp
bmdEaWRGaW5pc2g6ICJyZXNvdXJjZS1sb2FkaW5nLWRpZC1maW5pc2giLAorICAgIExvYWRpbmdE
aWRGYWlsOiAicmVzb3VyY2UtbG9hZGluZy1kaWQtZmFpbCIsCisgICAgVGltZXN0YW1wc0RpZENo
YW5nZTogInJlc291cmNlLXRpbWVzdGFtcHMtZGlkLWNoYW5nZSIsCisgICAgU2l6ZURpZENoYW5n
ZTogInJlc291cmNlLXNpemUtZGlkLWNoYW5nZSIsCisgICAgVHJhbnNmZXJTaXplRGlkQ2hhbmdl
OiAicmVzb3VyY2UtdHJhbnNmZXItc2l6ZS1kaWQtY2hhbmdlIiwKKyAgICBDYWNoZVN0YXR1c0Rp
ZENoYW5nZTogInJlc291cmNlLWNhY2hlZC1kaWQtY2hhbmdlIgorfTsKKworLy8gS2VlcCB0aGVz
ZSBpbiBzeW5jIHdpdGggdGhlICJSZXNvdXJjZVR5cGUiIGVudW0gZGVmaW5lZCBieSB0aGUgIlBh
Z2UiIGRvbWFpbi4KK1dlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlID0geworICAgIERvY3VtZW50
OiAicmVzb3VyY2UtdHlwZS1kb2N1bWVudCIsCisgICAgU3R5bGVzaGVldDogInJlc291cmNlLXR5
cGUtc3R5bGVzaGVldCIsCisgICAgSW1hZ2U6ICJyZXNvdXJjZS10eXBlLWltYWdlIiwKKyAgICBG
b250OiAicmVzb3VyY2UtdHlwZS1mb250IiwKKyAgICBTY3JpcHQ6ICJyZXNvdXJjZS10eXBlLXNj
cmlwdCIsCisgICAgWEhSOiAicmVzb3VyY2UtdHlwZS14aHIiLAorICAgIFdlYlNvY2tldDogInJl
c291cmNlLXR5cGUtd2Vic29ja2V0IiwKKyAgICBPdGhlcjogInJlc291cmNlLXR5cGUtb3RoZXIi
Cit9OworCisvLyBUaGlzIE1JTUUgVHlwZSBtYXAgaXMgcHJpdmF0ZSwgdXNlIFdlYkluc3BlY3Rv
ci5SZXNvdXJjZS50eXBlRnJvbU1JTUVUeXBlKCkuCitXZWJJbnNwZWN0b3IuUmVzb3VyY2UuX21p
bWVUeXBlTWFwID0geworICAgICJ0ZXh0L2h0bWwiOiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlw
ZS5Eb2N1bWVudCwKKyAgICAidGV4dC94bWwiOiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5E
b2N1bWVudCwKKyAgICAidGV4dC9wbGFpbiI6IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLkRv
Y3VtZW50LAorICAgICJhcHBsaWNhdGlvbi94aHRtbCt4bWwiOiBXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2UuVHlwZS5Eb2N1bWVudCwKKyAgICAiaW1hZ2Uvc3ZnK3htbCI6IFdlYkluc3BlY3Rvci5SZXNv
dXJjZS5UeXBlLkRvY3VtZW50LAorCisgICAgInRleHQvY3NzIjogV2ViSW5zcGVjdG9yLlJlc291
cmNlLlR5cGUuU3R5bGVzaGVldCwKKyAgICAidGV4dC94c2wiOiBXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2UuVHlwZS5TdHlsZXNoZWV0LAorICAgICJ0ZXh0L3gtbGVzcyI6IFdlYkluc3BlY3Rvci5SZXNv
dXJjZS5UeXBlLlN0eWxlc2hlZXQsCisgICAgInRleHQveC1zYXNzIjogV2ViSW5zcGVjdG9yLlJl
c291cmNlLlR5cGUuU3R5bGVzaGVldCwKKyAgICAidGV4dC94LXNjc3MiOiBXZWJJbnNwZWN0b3Iu
UmVzb3VyY2UuVHlwZS5TdHlsZXNoZWV0LAorCisgICAgImFwcGxpY2F0aW9uL3BkZiI6IFdlYklu
c3BlY3Rvci5SZXNvdXJjZS5UeXBlLkltYWdlLAorCisgICAgImFwcGxpY2F0aW9uL3gtZm9udC10
eXBlMSI6IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLkZvbnQsCisgICAgImFwcGxpY2F0aW9u
L3gtZm9udC10dGYiOiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5Gb250LAorICAgICJhcHBs
aWNhdGlvbi94LWZvbnQtd29mZiI6IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLkZvbnQsCisg
ICAgImFwcGxpY2F0aW9uL3gtdHJ1ZXR5cGUtZm9udCI6IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5U
eXBlLkZvbnQsCisKKyAgICAidGV4dC9qYXZhc2NyaXB0IjogV2ViSW5zcGVjdG9yLlJlc291cmNl
LlR5cGUuU2NyaXB0LAorICAgICJ0ZXh0L2VjbWFzY3JpcHQiOiBXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2UuVHlwZS5TY3JpcHQsCisgICAgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiOiBXZWJJbnNwZWN0
b3IuUmVzb3VyY2UuVHlwZS5TY3JpcHQsCisgICAgImFwcGxpY2F0aW9uL2VjbWFzY3JpcHQiOiBX
ZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5TY3JpcHQsCisgICAgImFwcGxpY2F0aW9uL3gtamF2
YXNjcmlwdCI6IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLlNjcmlwdCwKKyAgICAiYXBwbGlj
YXRpb24vanNvbiI6IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLlNjcmlwdCwKKyAgICAiYXBw
bGljYXRpb24veC1qc29uIjogV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuU2NyaXB0LAorICAg
ICJ0ZXh0L3gtamF2YXNjcmlwdCI6IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLlNjcmlwdCwK
KyAgICAidGV4dC94LWpzb24iOiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5TY3JpcHQsCisg
ICAgInRleHQvamF2YXNjcmlwdDEuMSI6IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLlNjcmlw
dCwKKyAgICAidGV4dC9qYXZhc2NyaXB0MS4yIjogV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUu
U2NyaXB0LAorICAgICJ0ZXh0L2phdmFzY3JpcHQxLjMiOiBXZWJJbnNwZWN0b3IuUmVzb3VyY2Uu
VHlwZS5TY3JpcHQsCisgICAgInRleHQvanNjcmlwdCI6IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5U
eXBlLlNjcmlwdCwKKyAgICAidGV4dC9saXZlc2NyaXB0IjogV2ViSW5zcGVjdG9yLlJlc291cmNl
LlR5cGUuU2NyaXB0LAorICAgICJ0ZXh0L3gtbGl2ZXNjcmlwdCI6IFdlYkluc3BlY3Rvci5SZXNv
dXJjZS5UeXBlLlNjcmlwdCwKKyAgICAidGV4dC90eXBlc2NyaXB0IjogV2ViSW5zcGVjdG9yLlJl
c291cmNlLlR5cGUuU2NyaXB0LAorICAgICJ0ZXh0L3gtY2xvanVyZSI6IFdlYkluc3BlY3Rvci5S
ZXNvdXJjZS5UeXBlLlNjcmlwdCwKKyAgICAidGV4dC94LWNvZmZlZXNjcmlwdCI6IFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZS5UeXBlLlNjcmlwdAorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9SZXNvdXJjZUNvbGxlY3Rpb24uanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUmVzb3VyY2VDb2xsZWN0aW9u
LmpzCmluZGV4IDkzYTg2ZWQuLjczNWFiM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9SZXNvdXJjZUNvbGxlY3Rpb24uanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Jlc291cmNlQ29sbGVjdGlv
bi5qcwpAQCAtMjMsNDUgKzIzLDQ0IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlJlc291cmNlQ29sbGVjdGlvbiA9IGZ1bmN0aW9uKCkK
K1dlYkluc3BlY3Rvci5SZXNvdXJjZUNvbGxlY3Rpb24gPSBjbGFzcyBSZXNvdXJjZUNvbGxlY3Rp
b24gZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVj
dC5jYWxsKHRoaXMpOworICAgIGNvbnN0cnVjdG9yKCkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7
CiAKICAgICAgICAgdGhpcy5fcmVzb3VyY2VzID0gW107CiAgICAgICAgIHRoaXMuX3Jlc291cmNl
VVJMTWFwID0gbmV3IE1hcDsKICAgICAgICAgdGhpcy5fcmVzb3VyY2VzVHlwZU1hcCA9IG5ldyBN
YXA7Ci19OwotCi1XZWJJbnNwZWN0b3IuUmVzb3VyY2VDb2xsZWN0aW9uLnByb3RvdHlwZSA9IHsK
LSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlJlc291cmNlQ29sbGVjdGlvbiwKKyAgICB9
CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCByZXNvdXJjZXMoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHRoaXMuX3Jlc291cmNlczsKLSAgICB9LAorICAgIH0KIAotICAgIHJlc291cmNlRm9y
VVJMOiBmdW5jdGlvbih1cmwpCisgICAgcmVzb3VyY2VGb3JVUkwodXJsKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlVVJMTWFwLmdldCh1cmwpIHx8IG51bGw7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICByZXNvdXJjZXNXaXRoVHlwZTogZnVuY3Rpb24odHlwZSkKKyAgICByZXNv
dXJjZXNXaXRoVHlwZSh0eXBlKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNl
c1R5cGVNYXAuZ2V0KHR5cGUpIHx8IFtdOwotICAgIH0sCisgICAgfQogCi0gICAgYWRkUmVzb3Vy
Y2U6IGZ1bmN0aW9uKHJlc291cmNlKQorICAgIGFkZFJlc291cmNlKHJlc291cmNlKQogICAgIHsK
ICAgICAgICAgY29uc29sZS5hc3NlcnQocmVzb3VyY2UgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3Iu
UmVzb3VyY2UpOwogICAgICAgICBpZiAoIShyZXNvdXJjZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rv
ci5SZXNvdXJjZSkpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgdGhpcy5fYXNzb2Np
YXRlV2l0aFJlc291cmNlKHJlc291cmNlKTsKLSAgICB9LAorICAgIH0KIAotICAgIHJlbW92ZVJl
c291cmNlOiBmdW5jdGlvbihyZXNvdXJjZU9yVVJMKQorICAgIHJlbW92ZVJlc291cmNlKHJlc291
cmNlT3JVUkwpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChyZXNvdXJjZU9yVVJMKTsK
IApAQCAtODEsOSArODAsOSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VDb2xsZWN0aW9uLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgdGhpcy5fZGlzYXNzb2NpYXRlV2l0aFJlc291cmNlKHJlc291cmNl
KTsKIAogICAgICAgICByZXR1cm4gcmVzb3VyY2U7Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZW1v
dmVBbGxSZXNvdXJjZXM6IGZ1bmN0aW9uKCkKKyAgICByZW1vdmVBbGxSZXNvdXJjZXMoKQogICAg
IHsKICAgICAgICAgaWYgKCF0aGlzLl9yZXNvdXJjZXMubGVuZ3RoKQogICAgICAgICAgICAgcmV0
dXJuOwpAQCAtOTQsMTEgKzkzLDExIEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZUNvbGxlY3Rpb24u
cHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9yZXNvdXJjZXMgPSBbXTsKICAgICAgICAgdGhp
cy5fcmVzb3VyY2VVUkxNYXAuY2xlYXIoKTsKICAgICAgICAgdGhpcy5fcmVzb3VyY2VzVHlwZU1h
cC5jbGVhcigpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX2Fzc29j
aWF0ZVdpdGhSZXNvdXJjZTogZnVuY3Rpb24ocmVzb3VyY2UpCisgICAgX2Fzc29jaWF0ZVdpdGhS
ZXNvdXJjZShyZXNvdXJjZSkKICAgICB7CiAgICAgICAgIHRoaXMuX3Jlc291cmNlcy5wdXNoKHJl
c291cmNlKTsKICAgICAgICAgdGhpcy5fcmVzb3VyY2VVUkxNYXAuc2V0KHJlc291cmNlLnVybCwg
cmVzb3VyY2UpOwpAQCAtMTEwLDkgKzEwOSw5IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZUNvbGxl
Y3Rpb24ucHJvdG90eXBlID0gewogCiAgICAgICAgIHJlc291cmNlLmFkZEV2ZW50TGlzdGVuZXIo
V2ViSW5zcGVjdG9yLlJlc291cmNlLkV2ZW50LlVSTERpZENoYW5nZSwgdGhpcy5fcmVzb3VyY2VV
UkxEaWRDaGFuZ2UsIHRoaXMpOwogICAgICAgICByZXNvdXJjZS5hZGRFdmVudExpc3RlbmVyKFdl
Ykluc3BlY3Rvci5SZXNvdXJjZS5FdmVudC5UeXBlRGlkQ2hhbmdlLCB0aGlzLl9yZXNvdXJjZVR5
cGVEaWRDaGFuZ2UsIHRoaXMpOwotICAgIH0sCisgICAgfQogCi0gICAgX2Rpc2Fzc29jaWF0ZVdp
dGhSZXNvdXJjZTogZnVuY3Rpb24ocmVzb3VyY2UsIHNraXBSZW1vdmFsKQorICAgIF9kaXNhc3Nv
Y2lhdGVXaXRoUmVzb3VyY2UocmVzb3VyY2UsIHNraXBSZW1vdmFsKQogICAgIHsKICAgICAgICAg
aWYgKHNraXBSZW1vdmFsKSB7CiAgICAgICAgICAgICB0aGlzLl9yZXNvdXJjZXMucmVtb3ZlKHJl
c291cmNlKTsKQEAgLTEyMyw5ICsxMjIsOSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VDb2xsZWN0
aW9uLnByb3RvdHlwZSA9IHsKIAogICAgICAgICByZXNvdXJjZS5yZW1vdmVFdmVudExpc3RlbmVy
KFdlYkluc3BlY3Rvci5SZXNvdXJjZS5FdmVudC5VUkxEaWRDaGFuZ2UsIHRoaXMuX3Jlc291cmNl
VVJMRGlkQ2hhbmdlLCB0aGlzKTsKICAgICAgICAgcmVzb3VyY2UucmVtb3ZlRXZlbnRMaXN0ZW5l
cihXZWJJbnNwZWN0b3IuUmVzb3VyY2UuRXZlbnQuVHlwZURpZENoYW5nZSwgdGhpcy5fcmVzb3Vy
Y2VUeXBlRGlkQ2hhbmdlLCB0aGlzKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9yZXNvdXJjZVVS
TERpZENoYW5nZTogZnVuY3Rpb24oZXZlbnQpCisgICAgX3Jlc291cmNlVVJMRGlkQ2hhbmdlKGV2
ZW50KQogICAgIHsKICAgICAgICAgdmFyIHJlc291cmNlID0gZXZlbnQudGFyZ2V0OwogICAgICAg
ICBjb25zb2xlLmFzc2VydChyZXNvdXJjZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZXNvdXJj
ZSk7CkBAIC0xMzksOSArMTM4LDkgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlQ29sbGVjdGlvbi5w
cm90b3R5cGUgPSB7CiAKICAgICAgICAgdGhpcy5fcmVzb3VyY2VVUkxNYXAuc2V0KHJlc291cmNl
LnVybCwgcmVzb3VyY2UpOwogICAgICAgICB0aGlzLl9yZXNvdXJjZVVSTE1hcC5kZWxldGUob2xk
VVJMKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9yZXNvdXJjZVR5cGVEaWRDaGFuZ2U6IGZ1bmN0
aW9uKGV2ZW50KQorICAgIF9yZXNvdXJjZVR5cGVEaWRDaGFuZ2UoZXZlbnQpCiAgICAgewogICAg
ICAgICB2YXIgcmVzb3VyY2UgPSBldmVudC50YXJnZXQ7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KHJlc291cmNlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlc291cmNlKTsKQEAgLTE2Miw1ICsx
NjEsMyBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VDb2xsZWN0aW9uLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgIHRoaXMuX3Jlc291cmNlc1R5cGVNYXAuZ2V0KG9sZFR5cGUpLnJlbW92ZShyZXNv
dXJjZSk7CiAgICAgfQogfTsKLQotV2ViSW5zcGVjdG9yLlJlc291cmNlQ29sbGVjdGlvbi5wcm90
b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUmVzb3VyY2VU
aW1lbGluZVJlY29yZC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01v
ZGVscy9SZXNvdXJjZVRpbWVsaW5lUmVjb3JkLmpzCmluZGV4IGFhZGE4ZmEuLjNlYjE2MzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9SZXNv
dXJjZVRpbWVsaW5lUmVjb3JkLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL01vZGVscy9SZXNvdXJjZVRpbWVsaW5lUmVjb3JkLmpzCkBAIC0yMyw1NSArMjMsNTIg
QEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0
b3IuUmVzb3VyY2VUaW1lbGluZVJlY29yZCA9IGZ1bmN0aW9uKHJlc291cmNlKQorV2ViSW5zcGVj
dG9yLlJlc291cmNlVGltZWxpbmVSZWNvcmQgPSBjbGFzcyBSZXNvdXJjZVRpbWVsaW5lUmVjb3Jk
IGV4dGVuZHMgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkCiB7Ci0gICAgV2ViSW5zcGVjdG9y
LlRpbWVsaW5lUmVjb3JkLmNhbGwodGhpcywgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkLlR5
cGUuTmV0d29yayk7CisgICAgY29uc3RydWN0b3IocmVzb3VyY2UpCisgICAgeworICAgICAgICBz
dXBlcihXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQuVHlwZS5OZXR3b3JrKTsKIAogICAgICAg
ICB0aGlzLl9yZXNvdXJjZSA9IHJlc291cmNlOwogICAgICAgICB0aGlzLl9yZXNvdXJjZS5hZGRF
dmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5SZXNvdXJjZS5FdmVudC5UaW1lc3RhbXBzRGlkQ2hh
bmdlLCB0aGlzLl9kaXNwYXRjaFVwZGF0ZWRFdmVudCwgdGhpcyk7Ci19OwotCi1XZWJJbnNwZWN0
b3IuUmVzb3VyY2VUaW1lbGluZVJlY29yZC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6
IFdlYkluc3BlY3Rvci5SZXNvdXJjZVRpbWVsaW5lUmVjb3JkLAorICAgIH0KIAogICAgIC8vIFB1
YmxpYwogCiAgICAgZ2V0IHJlc291cmNlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9y
ZXNvdXJjZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCB1cGRhdGVzRHluYW1pY2FsbHkoKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgdXNl
c0FjdGl2ZVN0YXJ0VGltZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9LAor
ICAgIH0KIAogICAgIGdldCBzdGFydFRpbWUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMu
X3Jlc291cmNlLnJlcXVlc3RTZW50VGltZXN0YW1wOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0
IGFjdGl2ZVN0YXJ0VGltZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2Uu
cmVzcG9uc2VSZWNlaXZlZFRpbWVzdGFtcDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBlbmRU
aW1lKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZS5maW5pc2hlZE9yRmFp
bGVkVGltZXN0YW1wOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX2Rp
c3BhdGNoVXBkYXRlZEV2ZW50OiBmdW5jdGlvbigpCisgICAgX2Rpc3BhdGNoVXBkYXRlZEV2ZW50
KCkKICAgICB7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3Bl
Y3Rvci5UaW1lbGluZVJlY29yZC5FdmVudC5VcGRhdGVkKTsKICAgICB9CiB9OwotCi1XZWJJbnNw
ZWN0b3IuUmVzb3VyY2VUaW1lbGluZVJlY29yZC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5z
cGVjdG9yLlRpbWVsaW5lUmVjb3JkLnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9SZXZpc2lvbi5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9SZXZpc2lvbi5qcwppbmRleCA0Y2YyYzRi
Li4zOTg0OTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Nb2RlbHMvUmV2aXNpb24uanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvTW9kZWxzL1JldmlzaW9uLmpzCkBAIC0yMywzMyArMjMsMzEgQEAKICAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuUmV2aXNpb24gPSBm
dW5jdGlvbigpCitXZWJJbnNwZWN0b3IuUmV2aXNpb24gPSBjbGFzcyBSZXZpc2lvbiBleHRlbmRz
IFdlYkluc3BlY3Rvci5PYmplY3QKIHsKLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhp
cyk7Ci19OwotCi1XZWJJbnNwZWN0b3IuUmV2aXNpb24ucHJvdG90eXBlID0gewotICAgIGNvbnN0
cnVjdG9yOiBXZWJJbnNwZWN0b3IuUmV2aXNpb24sCisgICAgY29uc3RydWN0b3IoKQorICAgIHsK
KyAgICAgICAgLy8gRklYTUU6IFJlbW92ZSBvbmNlIDxodHRwczovL3dlYmtpdC5vcmcvYi8xNDI4
NjI+IGlzIGZpeGVkLgorICAgICAgICBzdXBlcigpOworICAgIH0KIAogICAgIC8vIFB1YmxpYwog
Ci0gICAgYXBwbHk6IGZ1bmN0aW9uKCkKKyAgICBhcHBseSgpCiAgICAgewogICAgICAgICAvLyBJ
bXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLgogICAgICAgICBjb25zb2xlLmVycm9yKCJOZWVkcyB0
byBiZSBpbXBsZW1lbnRlZCBieSBhIHN1YmNsYXNzLiIpOwotICAgIH0sCisgICAgfQogCi0gICAg
cmV2ZXJ0OiBmdW5jdGlvbigpCisgICAgcmV2ZXJ0KCkKICAgICB7CiAgICAgICAgIC8vIEltcGxl
bWVudGVkIGJ5IHN1YmNsYXNzZXMuCiAgICAgICAgIGNvbnNvbGUuZXJyb3IoIk5lZWRzIHRvIGJl
IGltcGxlbWVudGVkIGJ5IGEgc3ViY2xhc3MuIik7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjb3B5
OiBmdW5jdGlvbigpCisgICAgY29weSgpCiAgICAgewogICAgICAgICAvLyBPdmVycmlkZSBieSBz
dWJjbGFzc2VzLgogICAgICAgICByZXR1cm4gdGhpczsKICAgICB9CiB9OwotCi1XZWJJbnNwZWN0
b3IuUmV2aXNpb24ucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJv
dG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
TW9kZWxzL1J1bkxvb3BUaW1lbGluZVJlY29yZC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL01vZGVscy9SdW5Mb29wVGltZWxpbmVSZWNvcmQuanMKaW5kZXggZTFlNDAw
NC4uODQxODA5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvTW9kZWxzL1J1bkxvb3BUaW1lbGluZVJlY29yZC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUnVuTG9vcFRpbWVsaW5lUmVjb3JkLmpzCkBAIC0y
MywyNyArMjMsMjMgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
Ci1XZWJJbnNwZWN0b3IuUnVuTG9vcFRpbWVsaW5lUmVjb3JkID0gZnVuY3Rpb24oc3RhcnRUaW1l
LCBlbmRUaW1lLCBjaGlsZHJlbikKK1dlYkluc3BlY3Rvci5SdW5Mb29wVGltZWxpbmVSZWNvcmQg
PSBjbGFzcyBSdW5Mb29wVGltZWxpbmVSZWNvcmQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuVGltZWxp
bmVSZWNvcmQKIHsKLSAgICBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQuY2FsbCh0aGlzLCBX
ZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQuVHlwZS5SdW5Mb29wLCBzdGFydFRpbWUsIGVuZFRp
bWUpOworICAgIGNvbnN0cnVjdG9yKHN0YXJ0VGltZSwgZW5kVGltZSwgY2hpbGRyZW4pCisgICAg
eworICAgICAgICBzdXBlcihXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQuVHlwZS5SdW5Mb29w
LCBzdGFydFRpbWUsIGVuZFRpbWUpOwogCiAgICAgICAgIHRoaXMuX2NoaWxkcmVuID0gY2hpbGRy
ZW4gfHwgW107CiAgICAgICAgIHRoaXMuX2R1cmF0aW9uQnlSZWNvcmRUeXBlID0gbmV3IE1hcDsK
ICAgICAgICAgdGhpcy5fZHVyYXRpb25SZW1haW5kZXIgPSBOYU47Ci19OwotCi1XZWJJbnNwZWN0
b3IuUnVuTG9vcFRpbWVsaW5lUmVjb3JkLlR5cGVJZGVudGlmaWVyID0gInJ1bmxvb3AtdGltZWxp
bmUtcmVjb3JkIjsKLQotV2ViSW5zcGVjdG9yLlJ1bkxvb3BUaW1lbGluZVJlY29yZC5wcm90b3R5
cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5SdW5Mb29wVGltZWxpbmVSZWNv
cmQsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQucHJvdG90eXBl
LAorICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IGNoaWxkcmVuKCkKICAgICB7CiAg
ICAgICAgIHJldHVybiB0aGlzLl9jaGlsZHJlbi5zbGljZSgpOwotICAgIH0sCisgICAgfQogCiAg
ICAgZ2V0IGR1cmF0aW9uUmVtYWluZGVyKCkKICAgICB7CkBAIC01MSwxMSArNDcsMTEgQEAgV2Vi
SW5zcGVjdG9yLlJ1bkxvb3BUaW1lbGluZVJlY29yZC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAg
ICByZXR1cm4gdGhpcy5fZHVyYXRpb25SZW1haW5kZXI7CiAKICAgICAgICAgdGhpcy5fZHVyYXRp
b25SZW1haW5kZXIgPSB0aGlzLmR1cmF0aW9uOwotICAgICAgICBmb3IgKHJlY29yZFR5cGUgaW4g
V2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkLlR5cGUpCisgICAgICAgIGZvciAodmFyIHJlY29y
ZFR5cGUgaW4gV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkLlR5cGUpCiAgICAgICAgICAgICB0
aGlzLl9kdXJhdGlvblJlbWFpbmRlciAtPSB0aGlzLmR1cmF0aW9uRm9yUmVjb3JkcyhXZWJJbnNw
ZWN0b3IuVGltZWxpbmVSZWNvcmQuVHlwZVtyZWNvcmRUeXBlXSk7CiAKICAgICAgICAgcmV0dXJu
IHRoaXMuX2R1cmF0aW9uUmVtYWluZGVyOwotICAgIH0sCisgICAgfQogCiAgICAgZHVyYXRpb25G
b3JSZWNvcmRzKHJlY29yZFR5cGUpCiAgICAgewpAQCAtNzYsMyArNzIsNSBAQCBXZWJJbnNwZWN0
b3IuUnVuTG9vcFRpbWVsaW5lUmVjb3JkLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIGR1
cmF0aW9uOwogICAgIH0KIH07CisKK1dlYkluc3BlY3Rvci5SdW5Mb29wVGltZWxpbmVSZWNvcmQu
VHlwZUlkZW50aWZpZXIgPSAicnVubG9vcC10aW1lbGluZS1yZWNvcmQiOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Njb3BlQ2hhaW5Ob2Rl
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Njb3BlQ2hh
aW5Ob2RlLmpzCmluZGV4IDQ3ODFjMjMuLmE2ZGVlN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9TY29wZUNoYWluTm9kZS5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvU2NvcGVDaGFpbk5vZGUu
anMKQEAgLTIzLDkgKzIzLDExIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAgKi8KIAotV2ViSW5zcGVjdG9yLlNjb3BlQ2hhaW5Ob2RlID0gZnVuY3Rpb24odHlwZSwgb2Jq
ZWN0KQorV2ViSW5zcGVjdG9yLlNjb3BlQ2hhaW5Ob2RlID0gY2xhc3MgU2NvcGVDaGFpbk5vZGUg
ZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5j
YWxsKHRoaXMpOworICAgIGNvbnN0cnVjdG9yKHR5cGUsIG9iamVjdCkKKyAgICB7CisgICAgICAg
IHN1cGVyKCk7CiAKICAgICAgICAgY29uc29sZS5hc3NlcnQodHlwZW9mIHR5cGUgPT09ICJzdHJp
bmciKTsKICAgICAgICAgY29uc29sZS5hc3NlcnQob2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVj
dG9yLlJlbW90ZU9iamVjdCk7CkBAIC0zNSw2ICszNywxOSBAQCBXZWJJbnNwZWN0b3IuU2NvcGVD
aGFpbk5vZGUgPSBmdW5jdGlvbih0eXBlLCBvYmplY3QpCiAKICAgICAgICAgdGhpcy5fdHlwZSA9
IHR5cGUgfHwgbnVsbDsKICAgICAgICAgdGhpcy5fb2JqZWN0ID0gb2JqZWN0IHx8IG51bGw7Cisg
ICAgfQorCisgICAgLy8gUHVibGljCisKKyAgICBnZXQgdHlwZSgpCisgICAgeworICAgICAgICBy
ZXR1cm4gdGhpcy5fdHlwZTsKKyAgICB9CisKKyAgICBnZXQgb2JqZWN0KCkKKyAgICB7CisgICAg
ICAgIHJldHVybiB0aGlzLl9vYmplY3Q7CisgICAgfQogfTsKIAogV2ViSW5zcGVjdG9yLlNjb3Bl
Q2hhaW5Ob2RlLlR5cGUgPSB7CkBAIC00NSwyMSArNjAsMyBAQCBXZWJJbnNwZWN0b3IuU2NvcGVD
aGFpbk5vZGUuVHlwZSA9IHsKICAgICBDYXRjaDogInNjb3BlLWNoYWluLXR5cGUtY2F0Y2giLAog
ICAgIEZ1bmN0aW9uTmFtZTogInNjb3BlLWNoYWluLXR5cGUtZnVuY3Rpb25OYW1lIgogfTsKLQot
V2ViSW5zcGVjdG9yLlNjb3BlQ2hhaW5Ob2RlLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3Rv
cjogV2ViSW5zcGVjdG9yLlNjb3BlQ2hhaW5Ob2RlLAotCi0gICAgLy8gUHVibGljCi0KLSAgICBn
ZXQgdHlwZSgpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fdHlwZTsKLSAgICB9LAotCi0g
ICAgZ2V0IG9iamVjdCgpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fb2JqZWN0OwotICAg
IH0KLX07Ci0KLVdlYkluc3BlY3Rvci5TY29wZUNoYWluTm9kZS5wcm90b3R5cGUuX19wcm90b19f
ID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvU2NyaXB0LmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1NjcmlwdC5qcwppbmRleCBiMDdiYWQ0Li40
N2ZiZmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9N
b2RlbHMvU2NyaXB0LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L01vZGVscy9TY3JpcHQuanMKQEAgLTIzLDkgKzIzLDExIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlNjcmlwdCA9IGZ1bmN0aW9uKGlk
LCByYW5nZSwgdXJsLCBpbmplY3RlZCwgc291cmNlTWFwVVJMKQorV2ViSW5zcGVjdG9yLlNjcmlw
dCA9IGNsYXNzIFNjcmlwdCBleHRlbmRzIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlCiB7Ci0gICAg
V2ViSW5zcGVjdG9yLlNvdXJjZUNvZGUuY2FsbCh0aGlzKTsKKyAgICBjb25zdHJ1Y3RvcihpZCwg
cmFuZ2UsIHVybCwgaW5qZWN0ZWQsIHNvdXJjZU1hcFVSTCkKKyAgICB7CisgICAgICAgIHN1cGVy
KCk7CiAKICAgICAgICAgY29uc29sZS5hc3NlcnQoaWQpOwogICAgICAgICBjb25zb2xlLmFzc2Vy
dChyYW5nZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5UZXh0UmFuZ2UpOwpAQCAtNDMsNTEgKzQ1
LDQzIEBAIFdlYkluc3BlY3Rvci5TY3JpcHQgPSBmdW5jdGlvbihpZCwgcmFuZ2UsIHVybCwgaW5q
ZWN0ZWQsIHNvdXJjZU1hcFVSTCkKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5zb3VyY2VNYXBN
YW5hZ2VyLmRvd25sb2FkU291cmNlTWFwKHNvdXJjZU1hcFVSTCwgdGhpcy5fdXJsLCB0aGlzKTsK
IAogICAgICAgICB0aGlzLl9zY3JpcHRTeW50YXhUcmVlID0gbnVsbDsKLX07CisgICAgfQogCi1X
ZWJJbnNwZWN0b3IuU2NyaXB0LlR5cGVJZGVudGlmaWVyID0gInNjcmlwdCI7Ci1XZWJJbnNwZWN0
b3IuU2NyaXB0LlVSTENvb2tpZUtleSA9ICJzY3JpcHQtdXJsIjsKLVdlYkluc3BlY3Rvci5TY3Jp
cHQuRGlzcGxheU5hbWVDb29raWVLZXkgPSAic2NyaXB0LWRpc3BsYXktbmFtZSI7CisgICAgLy8g
U3RhdGljCiAKLVdlYkluc3BlY3Rvci5TY3JpcHQucmVzZXRVbmlxdWVEaXNwbGF5TmFtZU51bWJl
cnMgPSBmdW5jdGlvbigpCisgICAgc3RhdGljIHJlc2V0VW5pcXVlRGlzcGxheU5hbWVOdW1iZXJz
KCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5TY3JpcHQuX25leHRVbmlxdWVEaXNwbGF5
TmFtZU51bWJlciA9IDE7Ci19OwotCi1XZWJJbnNwZWN0b3IuU2NyaXB0Ll9uZXh0VW5pcXVlRGlz
cGxheU5hbWVOdW1iZXIgPSAxOwotCi1XZWJJbnNwZWN0b3IuU2NyaXB0LnByb3RvdHlwZSA9IHsK
LSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlNjcmlwdCwKLSAgICBfX3Byb3RvX186IFdl
Ykluc3BlY3Rvci5Tb3VyY2VDb2RlLnByb3RvdHlwZSwKKyAgICB9CiAKICAgICAvLyBQdWJsaWMK
IAogICAgIGdldCBpZCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5faWQ7Ci0gICAgfSwK
KyAgICB9CiAKICAgICBnZXQgcmFuZ2UoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3Jh
bmdlOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHVybCgpCiAgICAgewogICAgICAgICByZXR1
cm4gdGhpcy5fdXJsOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHVybENvbXBvbmVudHMoKQog
ICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl91cmxDb21wb25lbnRzKQogICAgICAgICAgICAgdGhp
cy5fdXJsQ29tcG9uZW50cyA9IHBhcnNlVVJMKHRoaXMuX3VybCk7CiAgICAgICAgIHJldHVybiB0
aGlzLl91cmxDb21wb25lbnRzOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IG1pbWVUeXBlKCkK
ICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZS5taW1lVHlwZTsKLSAgICB9LAor
ICAgIH0KIAogICAgIGdldCBkaXNwbGF5TmFtZSgpCiAgICAgewpAQCAtOTksMjQgKzkzLDI0IEBA
IFdlYkluc3BlY3Rvci5TY3JpcHQucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fdW5p
cXVlRGlzcGxheU5hbWVOdW1iZXIgPSB0aGlzLmNvbnN0cnVjdG9yLl9uZXh0VW5pcXVlRGlzcGxh
eU5hbWVOdW1iZXIrKzsKIAogICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJB
bm9ueW1vdXMgU2NyaXB0ICVkIikuZm9ybWF0KHRoaXMuX3VuaXF1ZURpc3BsYXlOYW1lTnVtYmVy
KTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBpbmplY3RlZCgpCiAgICAgewogICAgICAgICBy
ZXR1cm4gdGhpcy5faW5qZWN0ZWQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgcmVzb3VyY2Uo
KQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlOwotICAgIH0sCisgICAgfQog
CiAgICAgZ2V0IHNjcmlwdFN5bnRheFRyZWUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMu
X3NjcmlwdFN5bnRheFRyZWU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZXF1ZXN0Q29udGVudEZy
b21CYWNrZW5kOiBmdW5jdGlvbigpCisgICAgcmVxdWVzdENvbnRlbnRGcm9tQmFja2VuZCgpCiAg
ICAgewogICAgICAgICBpZiAoIXRoaXMuX2lkKSB7CiAgICAgICAgICAgICAvLyBUaGVyZSBpcyBu
byBpZGVudGlmaWVyIHRvIHJlcXVlc3QgY29udGVudCB3aXRoLiBSZXR1cm4gZmFsc2UgdG8gY2F1
c2UgdGhlCkBAIC0xMjUsMTUgKzExOSwxNSBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiBEZWJ1Z2dlckFnZW50LmdldFNjcmlw
dFNvdXJjZS5wcm9taXNlKHRoaXMuX2lkKTsKLSAgICB9LAorICAgIH0KIAotICAgIHNhdmVJZGVu
dGl0eVRvQ29va2llOiBmdW5jdGlvbihjb29raWUpCisgICAgc2F2ZUlkZW50aXR5VG9Db29raWUo
Y29va2llKQogICAgIHsKICAgICAgICAgY29va2llW1dlYkluc3BlY3Rvci5TY3JpcHQuVVJMQ29v
a2llS2V5XSA9IHRoaXMudXJsOwogICAgICAgICBjb29raWVbV2ViSW5zcGVjdG9yLlNjcmlwdC5E
aXNwbGF5TmFtZUNvb2tpZUtleV0gPSB0aGlzLmRpc3BsYXlOYW1lOwotICAgIH0sCisgICAgfQog
Ci0gICAgcmVxdWVzdFNjcmlwdFN5bnRheFRyZWU6IGZ1bmN0aW9uKGNhbGxiYWNrKQorICAgIHJl
cXVlc3RTY3JpcHRTeW50YXhUcmVlKGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMu
X3NjcmlwdFN5bnRheFRyZWUpIHsKICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
IGNhbGxiYWNrKHRoaXMuX3NjcmlwdFN5bnRheFRyZWUpOyB9LmJpbmQodGhpcyksIDApOwpAQCAt
MTU5LDExICsxNTMsMTEgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdC5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGVycm9yKSB7CiAgICAgICAgICAgICBtYWtlU3ludGF4VHJl
ZUFuZENhbGxDYWxsYmFjayhudWxsKTsKICAgICAgICAgfSk7Ci0gICAgfSwKKyAgICB9CiAKICAg
ICAvLyBQcml2YXRlCiAKLSAgICBfcmVzb2x2ZVJlc291cmNlOiBmdW5jdGlvbigpCisgICAgX3Jl
c29sdmVSZXNvdXJjZSgpCiAgICAgewogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIGFi
bGUgdG8gYXNzb2NpYXRlIGEgU2NyaXB0IHdpdGggYSBSZXNvdXJjZSB0aHJvdWdoIGlkZW50aWZp
ZXJzLAogICAgICAgICAvLyB3ZSBzaG91bGRuJ3QgbmVlZCB0byBsb29rdXAgYnkgVVJMLCB3aGlj
aCBpcyBub3Qgc2FmZSB3aXRoIGZyYW1lcywgd2hlcmUgdGhlcmUgbWlnaHQKQEAgLTIwOCw5ICsy
MDIsOSBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0LnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAg
ICAgICAgIHJldHVybiBudWxsOwotICAgIH0sCisgICAgfQogCi0gICAgX21ha2VTeW50YXhUcmVl
OiBmdW5jdGlvbihzb3VyY2VUZXh0KQorICAgIF9tYWtlU3ludGF4VHJlZShzb3VyY2VUZXh0KQog
ICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3NjcmlwdFN5bnRheFRyZWUgfHwgIXNvdXJjZVRleHQp
CiAgICAgICAgICAgICByZXR1cm47CkBAIC0yMTgsMyArMjEyLDkgQEAgV2ViSW5zcGVjdG9yLlNj
cmlwdC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3NjcmlwdFN5bnRheFRyZWUgPSBuZXcg
V2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUoc291cmNlVGV4dCwgdGhpcyk7CiAgICAgfQog
fTsKKworV2ViSW5zcGVjdG9yLlNjcmlwdC5UeXBlSWRlbnRpZmllciA9ICJzY3JpcHQiOworV2Vi
SW5zcGVjdG9yLlNjcmlwdC5VUkxDb29raWVLZXkgPSAic2NyaXB0LXVybCI7CitXZWJJbnNwZWN0
b3IuU2NyaXB0LkRpc3BsYXlOYW1lQ29va2llS2V5ID0gInNjcmlwdC1kaXNwbGF5LW5hbWUiOwor
CitXZWJJbnNwZWN0b3IuU2NyaXB0Ll9uZXh0VW5pcXVlRGlzcGxheU5hbWVOdW1iZXIgPSAxOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Nj
cmlwdFN5bnRheFRyZWUuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9N
b2RlbHMvU2NyaXB0U3ludGF4VHJlZS5qcwppbmRleCA1ZjA4MzhhLi5mZWZlM2RhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvU2NyaXB0U3lu
dGF4VHJlZS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2Rl
bHMvU2NyaXB0U3ludGF4VHJlZS5qcwpAQCAtMjMsMTEgKzIzLDE0IEBACiAgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRy
ZWUgPSBmdW5jdGlvbihzb3VyY2VUZXh0LCBzY3JpcHQpCitXZWJJbnNwZWN0b3IuU2NyaXB0U3lu
dGF4VHJlZSA9IGNsYXNzIFNjcmlwdFN5bnRheFRyZWUgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2Jq
ZWN0CiB7CisgICAgY29uc3RydWN0b3Ioc291cmNlVGV4dCwgc2NyaXB0KQorICAgIHsKKyAgICAg
ICAgc3VwZXIoKTsKKwogICAgICAgICBjb25zb2xlLmFzc2VydChzY3JpcHQgJiYgc2NyaXB0IGlu
c3RhbmNlb2YgV2ViSW5zcGVjdG9yLlNjcmlwdCwgc2NyaXB0KTsKIAotICAgIFdlYkluc3BlY3Rv
ci5PYmplY3QuY2FsbCh0aGlzKTsKICAgICAgICAgdGhpcy5fc2NyaXB0ID0gc2NyaXB0OwogCiAg
ICAgICAgIHRyeSB7CkBAIC0zOSw4MSArNDIsMjUgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRh
eFRyZWUgPSBmdW5jdGlvbihzb3VyY2VUZXh0LCBzY3JpcHQpCiAgICAgICAgICAgICB0aGlzLl9z
eW50YXhUcmVlID0gbnVsbDsKICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIkNvdWxkbid0IHBh
cnNlIEphdmFTY3JpcHQgRmlsZTogIiArIHNjcmlwdC51cmwsIGVycm9yKTsKICAgICAgICAgfQot
fTsKLQotLy8gVGhpcyBzaG91bGQgYmUga2VwdCBpbiBzeW5jIHdpdGggYW4gZW51bSBpbiBKYXZh
U2NpcHRDb3JlL3J1bnRpbWUvVHlwZVByb2ZpbGVyLmgKLVdlYkluc3BlY3Rvci5TY3JpcHRTeW50
YXhUcmVlLlR5cGVQcm9maWxlclNlYXJjaERlc2NyaXB0b3IgPSB7Ci0gICAgTm9ybWFsRXhwcmVz
c2lvbjogMSwKLSAgICBGdW5jdGlvblJldHVybjogMgotfTsKLQotV2ViSW5zcGVjdG9yLlNjcmlw
dFN5bnRheFRyZWUuTm9kZVR5cGUgPSB7Ci0gICAgQXNzaWdubWVudEV4cHJlc3Npb246IFN5bWJv
bCgiYXNzaWdubWVudC1leHByZXNzaW9uIiksCi0gICAgQXJyYXlFeHByZXNzaW9uOiBTeW1ib2wo
ImFycmF5LWV4cHJlc3Npb24iKSwKLSAgICBBcnJheVBhdHRlcm46IFN5bWJvbCgiYXJyYXktcGF0
dGVybiIpLAotICAgIEJsb2NrU3RhdGVtZW50OiBTeW1ib2woImJsb2NrLXN0YXRlbWVudCIpLAot
ICAgIEJpbmFyeUV4cHJlc3Npb246IFN5bWJvbCgiYmluYXJ5LWV4cHJlc3Npb24iKSwKLSAgICBC
cmVha1N0YXRlbWVudDogU3ltYm9sKCJicmVhay1zdGF0ZW1lbnQiKSwKLSAgICBDYWxsRXhwcmVz
c2lvbjogU3ltYm9sKCJjYWxsLWV4cHJlc3Npb24iKSwKLSAgICBDYXRjaENsYXVzZTogU3ltYm9s
KCJjYXRjaC1jbGF1c2UiKSwKLSAgICBDb25kaXRpb25hbEV4cHJlc3Npb246IFN5bWJvbCgiY29u
ZGl0aW9uYWwtZXhwcmVzc2lvbiIpLAotICAgIENvbnRpbnVlU3RhdGVtZW50OiBTeW1ib2woImNv
bnRpbnVlLXN0YXRlbWVudCIpLAotICAgIERvV2hpbGVTdGF0ZW1lbnQ6IFN5bWJvbCgiZG8td2hp
bGUtc3RhdGVtZW50IiksCi0gICAgRGVidWdnZXJTdGF0ZW1lbnQ6IFN5bWJvbCgiZGVidWdnZXIt
c3RhdGVtZW50IiksCi0gICAgRW1wdHlTdGF0ZW1lbnQ6IFN5bWJvbCgiZW1wdHktc3RhdGVtZW50
IiksCi0gICAgRXhwcmVzc2lvblN0YXRlbWVudDogU3ltYm9sKCJleHByZXNzaW9uLXN0YXRlbWVu
dCIpLAotICAgIEZvclN0YXRlbWVudDogU3ltYm9sKCJmb3Itc3RhdGVtZW50IiksCi0gICAgRm9y
SW5TdGF0ZW1lbnQ6IFN5bWJvbCgiZm9yLWluLXN0YXRlbWVudCIpLAotICAgIEZvck9mU3RhdGVt
ZW50OiBTeW1ib2woImZvci1vZi1zdGF0ZW1lbnQiKSwKLSAgICBGdW5jdGlvbkRlY2xhcmF0aW9u
OiBTeW1ib2woImZ1bmN0aW9uLWRlY2xhcmF0aW9uIiksCi0gICAgRnVuY3Rpb25FeHByZXNzaW9u
OiBTeW1ib2woImZ1bmN0aW9uLWV4cHJlc3Npb24iKSwKLSAgICBJZGVudGlmaWVyOiBTeW1ib2wo
ImlkZW50aWZpZXIiKSwKLSAgICBJZlN0YXRlbWVudDogU3ltYm9sKCJpZi1zdGF0ZW1lbnQiKSwK
LSAgICBMaXRlcmFsOiBTeW1ib2woImxpdGVyYWwiKSwKLSAgICBMYWJlbGVkU3RhdGVtZW50OiBT
eW1ib2woImxhYmVsZWQtc3RhdGVtZW50IiksCi0gICAgTG9naWNhbEV4cHJlc3Npb246IFN5bWJv
bCgibG9naWNhbC1leHByZXNzaW9uIiksCi0gICAgTWVtYmVyRXhwcmVzc2lvbjogU3ltYm9sKCJt
ZW1iZXItZXhwcmVzc2lvbiIpLAotICAgIE5ld0V4cHJlc3Npb246IFN5bWJvbCgibmV3LWV4cHJl
c3Npb24iKSwKLSAgICBPYmplY3RFeHByZXNzaW9uOiBTeW1ib2woIm9iamVjdC1leHByZXNzaW9u
IiksCi0gICAgT2JqZWN0UGF0dGVybjogU3ltYm9sKCJvYmplY3QtcGF0dGVybiIpLAotICAgIFBy
b2dyYW06IFN5bWJvbCgicHJvZ3JhbSIpLAotICAgIFByb3BlcnR5OiBTeW1ib2woInByb3BlcnR5
IiksCi0gICAgUmV0dXJuU3RhdGVtZW50OiBTeW1ib2woInJldHVybi1zdGF0ZW1lbnQiKSwKLSAg
ICBTZXF1ZW5jZUV4cHJlc3Npb246IFN5bWJvbCgic2VxdWVuY2UtZXhwcmVzc2lvbiIpLAotICAg
IFN3aXRjaFN0YXRlbWVudDogU3ltYm9sKCJzd2l0Y2gtc3RhdGVtZW50IiksCi0gICAgU3dpdGNo
Q2FzZTogU3ltYm9sKCJzd2l0Y2gtY2FzZSIpLAotICAgIFRoaXNFeHByZXNzaW9uOiBTeW1ib2wo
InRoaXMtZXhwcmVzc2lvbiIpLAotICAgIFRocm93U3RhdGVtZW50OiBTeW1ib2woInRocm93LXN0
YXRlbWVudCIpLAotICAgIFRyeVN0YXRlbWVudDogU3ltYm9sKCJ0cnktc3RhdGVtZW50IiksCi0g
ICAgVW5hcnlFeHByZXNzaW9uOiBTeW1ib2woInVuYXJ5LWV4cHJlc3Npb24iKSwKLSAgICBVcGRh
dGVFeHByZXNzaW9uOiBTeW1ib2woInVwZGF0ZS1leHByZXNzaW9uIiksCi0gICAgVmFyaWFibGVE
ZWNsYXJhdGlvbjogU3ltYm9sKCJ2YXJpYWJsZS1kZWNsYXJhdGlvbiIpLAotICAgIFZhcmlhYmxl
RGVjbGFyYXRvcjogU3ltYm9sKCJ2YXJpYWJsZS1kZWNsYXJhdG9yIiksCi0gICAgV2hpbGVTdGF0
ZW1lbnQ6IFN5bWJvbCgid2hpbGUtc3RhdGVtZW50IiksCi0gICAgV2l0aFN0YXRlbWVudDogU3lt
Ym9sKCJ3aXRoLXN0YXRlbWVudCIpCi19OwotCi1XZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJl
ZS5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5TY3JpcHRTeW50
YXhUcmVlLAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGUsCisg
ICAgfQogCiAgICAgLy8gUHVibGljCiAgICAgCiAgICAgZ2V0IHBhcnNlZFN1Y2Nlc3NmdWxseSgp
CiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcGFyc2VkU3VjY2Vzc2Z1bGx5OwotICAgIH0s
CisgICAgfQogCi0gICAgZm9yRWFjaE5vZGU6IGZ1bmN0aW9uKGNhbGxiYWNrKQorICAgIGZvckVh
Y2hOb2RlKGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fcGFy
c2VkU3VjY2Vzc2Z1bGx5KTsKICAgICAgICAgaWYgKCF0aGlzLl9wYXJzZWRTdWNjZXNzZnVsbHkp
CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgdGhpcy5fcmVjdXJzZSh0aGlzLl9zeW50
YXhUcmVlLCBjYWxsYmFjaywgdGhpcy5fZGVmYXVsdFBhcnNlclN0YXRlKCkpOwotICAgIH0sCisg
ICAgfQogCi0gICAgZmlsdGVyOiBmdW5jdGlvbihwcmVkaWNhdGUsIHN0YXJ0Tm9kZSkgCisgICAg
ZmlsdGVyKHByZWRpY2F0ZSwgc3RhcnROb2RlKSAKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KHN0YXJ0Tm9kZSAmJiB0aGlzLl9wYXJzZWRTdWNjZXNzZnVsbHkpOwogICAgICAgICBpZiAo
IXRoaXMuX3BhcnNlZFN1Y2Nlc3NmdWxseSkKQEAgLTEzMSwxNyArNzgsMTcgQEAgV2ViSW5zcGVj
dG9yLlNjcmlwdFN5bnRheFRyZWUucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9yZWN1cnNl
KHN0YXJ0Tm9kZSwgZmlsdGVyLCB0aGlzLl9kZWZhdWx0UGFyc2VyU3RhdGUoKSk7CiAKICAgICAg
ICAgcmV0dXJuIG5vZGVzOwotICAgIH0sCisgICAgfQogCi0gICAgZmlsdGVyQnlSYW5nZTogZnVu
Y3Rpb24oc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKKyAgICBmaWx0ZXJCeVJhbmdlKHN0YXJ0T2Zm
c2V0LCBlbmRPZmZzZXQpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9wYXJz
ZWRTdWNjZXNzZnVsbHkpOwogICAgICAgICBpZiAoIXRoaXMuX3BhcnNlZFN1Y2Nlc3NmdWxseSkK
ICAgICAgICAgICAgIHJldHVybiBbXTsKICAgICAgICAgCiAgICAgICAgIHZhciBhbGxOb2RlcyA9
IFtdOwotICAgICAgICBjb25zdCBzdGFydCA9IDA7Ci0gICAgICAgIGNvbnN0IGVuZCA9IDE7Cisg
ICAgICAgIHZhciBzdGFydCA9IDA7CisgICAgICAgIHZhciBlbmQgPSAxOwogICAgICAgICBmdW5j
dGlvbiBmaWx0ZXJGb3JOb2Rlc0luUmFuZ2Uobm9kZSwgc3RhdGUpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIC8vIHByb2dyYW0gc3RhcnQgICAgICAgIHJhbmdlICAgICAgICAgICAgcHJvZ3JhbSBl
bmQKQEAgLTE2Nyw5ICsxMTQsOSBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5wcm90
b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuZm9yRWFjaE5vZGUoZmlsdGVyRm9yTm9kZXNJblJhbmdl
KTsKIAogICAgICAgICByZXR1cm4gYWxsTm9kZXM7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjb250
YWluc05vbkVtcHR5UmV0dXJuU3RhdGVtZW50OiBmdW5jdGlvbihzdGFydE5vZGUpCisgICAgY29u
dGFpbnNOb25FbXB0eVJldHVyblN0YXRlbWVudChzdGFydE5vZGUpCiAgICAgewogICAgICAgICBj
b25zb2xlLmFzc2VydChzdGFydE5vZGUgJiYgdGhpcy5fcGFyc2VkU3VjY2Vzc2Z1bGx5KTsKICAg
ICAgICAgaWYgKCF0aGlzLl9wYXJzZWRTdWNjZXNzZnVsbHkpCkBAIC0xOTcsOSArMTQ0LDkgQEAg
V2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUucHJvdG90eXBlID0gewogICAgICAgICBzdGFy
dE5vZGUuYXR0YWNobWVudHMuX2hhc05vbkVtcHR5UmV0dXJuU3RhdGVtZW50ID0gaGFzTm9uRW1w
dHlSZXR1cm5TdGF0ZW1lbnQ7CiAKICAgICAgICAgcmV0dXJuIGhhc05vbkVtcHR5UmV0dXJuU3Rh
dGVtZW50OwotICAgIH0sCisgICAgfQogCi0gICAgdXBkYXRlVHlwZXM6IGZ1bmN0aW9uKG5vZGVz
VG9VcGRhdGUsIGNhbGxiYWNrKQorICAgIHVwZGF0ZVR5cGVzKG5vZGVzVG9VcGRhdGUsIGNhbGxi
YWNrKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoUnVudGltZUFnZW50LmdldFJ1bnRp
bWVUeXBlc0ZvclZhcmlhYmxlc0F0T2Zmc2V0cyk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KEFy
cmF5LmlzQXJyYXkobm9kZXNUb1VwZGF0ZSkgJiYgdGhpcy5fcGFyc2VkU3VjY2Vzc2Z1bGx5KTsK
QEAgLTI2OCwxMSArMjE1LDExIEBAIFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhUcmVlLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIFJ1bnRpbWVBZ2VudC5nZXRSdW50aW1lVHlw
ZXNGb3JWYXJpYWJsZXNBdE9mZnNldHMoYWxsUmVxdWVzdHMsIGhhbmRsZVR5cGVzKTsKLSAgICB9
LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAgIF9nYXRoZXJJZGVudGlmaWVyc0luRGVj
bGFyYXRpb246IGZ1bmN0aW9uKG5vZGUpCisgICAgX2dhdGhlcklkZW50aWZpZXJzSW5EZWNsYXJh
dGlvbihub2RlKQogICAgIHsKICAgICAgICAgZnVuY3Rpb24gZ2F0aGVySWRlbnRpZmllcnMobm9k
ZSkgCiAgICAgICAgIHsKQEAgLTMwNCwxNyArMjUxLDE3IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRT
eW50YXhUcmVlLnByb3RvdHlwZSA9IHsKICAgICAgICAgY29uc29sZS5hc3NlcnQobm9kZS50eXBl
ID09PSBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5JZGVudGlmaWVyIHx8
IG5vZGUudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuT2Jq
ZWN0UGF0dGVybiB8fCBub2RlLnR5cGUgPT09IFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhUcmVl
Lk5vZGVUeXBlLkFycmF5UGF0dGVybik7CiAKICAgICAgICAgcmV0dXJuIGdhdGhlcklkZW50aWZp
ZXJzKG5vZGUpOwotICAgIH0sCisgICAgfQogCi0gICAgX2RlZmF1bHRQYXJzZXJTdGF0ZTogZnVu
Y3Rpb24oKSAKKyAgICBfZGVmYXVsdFBhcnNlclN0YXRlKCkgCiAgICAgewogICAgICAgICByZXR1
cm4gewogICAgICAgICAgICAgc2hvdWxkU3RvcEVhcmx5OiBmYWxzZSwKICAgICAgICAgICAgIHNr
aXBDaGlsZE5vZGVzOiBmYWxzZQogICAgICAgICB9OwotICAgIH0sCisgICAgfQogCi0gICAgX3Jl
Y3Vyc2U6IGZ1bmN0aW9uKG5vZGUsIGNhbGxiYWNrLCBzdGF0ZSkgCisgICAgX3JlY3Vyc2Uobm9k
ZSwgY2FsbGJhY2ssIHN0YXRlKSAKICAgICB7CiAgICAgICAgIGlmICghbm9kZSkKICAgICAgICAg
ICAgIHJldHVybjsKQEAgLTUxNSwxOSArNDYyLDE5IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRTeW50
YXhUcmVlLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIHN0YXRlLnNraXBDaGls
ZE5vZGVzID0gZmFsc2U7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcmVjdXJzZUFycmF5OiBmdW5j
dGlvbihhcnJheSwgY2FsbGJhY2ssIHN0YXRlKSAKKyAgICBfcmVjdXJzZUFycmF5KGFycmF5LCBj
YWxsYmFjaywgc3RhdGUpIAogICAgIHsKICAgICAgICAgZm9yICh2YXIgbm9kZSBvZiBhcnJheSkK
ICAgICAgICAgICAgIHRoaXMuX3JlY3Vyc2Uobm9kZSwgY2FsbGJhY2ssIHN0YXRlKTsKLSAgICB9
LAorICAgIH0KICAgICAKICAgICAvLyBUaGlzIGZ1bmN0aW9uIHRyYW5zbGF0ZXMgZnJvbSBlc3By
aW1hJ3MgQWJzdHJhY3QgU3ludGF4IFRyZWUgdG8gb3Vycy4gCiAgICAgLy8gTW9zdGx5LCB0aGlz
IGlzIGp1c3QgdGhlIGlkZW50aXR5IGZ1bmN0aW9uLiBXZSd2ZSBhZGRlZCBhbiBleHRyYSBpc0dl
dHRlck9yU2V0dGVyIHByb3BlcnR5IGZvciBmdW5jdGlvbnMuCiAgICAgLy8gT3VyIEFTVCBjb21w
bGllcyB3aXRoIHRoZSBNb3ppbGxhIHBhcnNlciBBUEk6CiAgICAgLy8gaHR0cHM6Ly9kZXZlbG9w
ZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9Nb3ppbGxhL1Byb2plY3RzL1NwaWRlck1vbmtleS9Q
YXJzZXJfQVBJCi0gICAgX2NyZWF0ZUludGVybmFsU3ludGF4VHJlZTogZnVuY3Rpb24obm9kZSkg
CisgICAgX2NyZWF0ZUludGVybmFsU3ludGF4VHJlZShub2RlKSAKICAgICB7CiAgICAgICAgIGlm
ICghbm9kZSkKICAgICAgICAgICAgIHJldHVybiBudWxsOwpAQCAtODQ5LDMgKzc5Niw1NSBAQCBX
ZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgfQogfTsKKworLy8gVGhpcyBzaG91bGQgYmUga2VwdCBpbiBzeW5jIHdp
dGggYW4gZW51bSBpbiBKYXZhU2NpcHRDb3JlL3J1bnRpbWUvVHlwZVByb2ZpbGVyLmgKK1dlYklu
c3BlY3Rvci5TY3JpcHRTeW50YXhUcmVlLlR5cGVQcm9maWxlclNlYXJjaERlc2NyaXB0b3IgPSB7
CisgICAgTm9ybWFsRXhwcmVzc2lvbjogMSwKKyAgICBGdW5jdGlvblJldHVybjogMgorfTsKKwor
V2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUgPSB7CisgICAgQXNzaWdubWVu
dEV4cHJlc3Npb246IFN5bWJvbCgiYXNzaWdubWVudC1leHByZXNzaW9uIiksCisgICAgQXJyYXlF
eHByZXNzaW9uOiBTeW1ib2woImFycmF5LWV4cHJlc3Npb24iKSwKKyAgICBBcnJheVBhdHRlcm46
IFN5bWJvbCgiYXJyYXktcGF0dGVybiIpLAorICAgIEJsb2NrU3RhdGVtZW50OiBTeW1ib2woImJs
b2NrLXN0YXRlbWVudCIpLAorICAgIEJpbmFyeUV4cHJlc3Npb246IFN5bWJvbCgiYmluYXJ5LWV4
cHJlc3Npb24iKSwKKyAgICBCcmVha1N0YXRlbWVudDogU3ltYm9sKCJicmVhay1zdGF0ZW1lbnQi
KSwKKyAgICBDYWxsRXhwcmVzc2lvbjogU3ltYm9sKCJjYWxsLWV4cHJlc3Npb24iKSwKKyAgICBD
YXRjaENsYXVzZTogU3ltYm9sKCJjYXRjaC1jbGF1c2UiKSwKKyAgICBDb25kaXRpb25hbEV4cHJl
c3Npb246IFN5bWJvbCgiY29uZGl0aW9uYWwtZXhwcmVzc2lvbiIpLAorICAgIENvbnRpbnVlU3Rh
dGVtZW50OiBTeW1ib2woImNvbnRpbnVlLXN0YXRlbWVudCIpLAorICAgIERvV2hpbGVTdGF0ZW1l
bnQ6IFN5bWJvbCgiZG8td2hpbGUtc3RhdGVtZW50IiksCisgICAgRGVidWdnZXJTdGF0ZW1lbnQ6
IFN5bWJvbCgiZGVidWdnZXItc3RhdGVtZW50IiksCisgICAgRW1wdHlTdGF0ZW1lbnQ6IFN5bWJv
bCgiZW1wdHktc3RhdGVtZW50IiksCisgICAgRXhwcmVzc2lvblN0YXRlbWVudDogU3ltYm9sKCJl
eHByZXNzaW9uLXN0YXRlbWVudCIpLAorICAgIEZvclN0YXRlbWVudDogU3ltYm9sKCJmb3Itc3Rh
dGVtZW50IiksCisgICAgRm9ySW5TdGF0ZW1lbnQ6IFN5bWJvbCgiZm9yLWluLXN0YXRlbWVudCIp
LAorICAgIEZvck9mU3RhdGVtZW50OiBTeW1ib2woImZvci1vZi1zdGF0ZW1lbnQiKSwKKyAgICBG
dW5jdGlvbkRlY2xhcmF0aW9uOiBTeW1ib2woImZ1bmN0aW9uLWRlY2xhcmF0aW9uIiksCisgICAg
RnVuY3Rpb25FeHByZXNzaW9uOiBTeW1ib2woImZ1bmN0aW9uLWV4cHJlc3Npb24iKSwKKyAgICBJ
ZGVudGlmaWVyOiBTeW1ib2woImlkZW50aWZpZXIiKSwKKyAgICBJZlN0YXRlbWVudDogU3ltYm9s
KCJpZi1zdGF0ZW1lbnQiKSwKKyAgICBMaXRlcmFsOiBTeW1ib2woImxpdGVyYWwiKSwKKyAgICBM
YWJlbGVkU3RhdGVtZW50OiBTeW1ib2woImxhYmVsZWQtc3RhdGVtZW50IiksCisgICAgTG9naWNh
bEV4cHJlc3Npb246IFN5bWJvbCgibG9naWNhbC1leHByZXNzaW9uIiksCisgICAgTWVtYmVyRXhw
cmVzc2lvbjogU3ltYm9sKCJtZW1iZXItZXhwcmVzc2lvbiIpLAorICAgIE5ld0V4cHJlc3Npb246
IFN5bWJvbCgibmV3LWV4cHJlc3Npb24iKSwKKyAgICBPYmplY3RFeHByZXNzaW9uOiBTeW1ib2wo
Im9iamVjdC1leHByZXNzaW9uIiksCisgICAgT2JqZWN0UGF0dGVybjogU3ltYm9sKCJvYmplY3Qt
cGF0dGVybiIpLAorICAgIFByb2dyYW06IFN5bWJvbCgicHJvZ3JhbSIpLAorICAgIFByb3BlcnR5
OiBTeW1ib2woInByb3BlcnR5IiksCisgICAgUmV0dXJuU3RhdGVtZW50OiBTeW1ib2woInJldHVy
bi1zdGF0ZW1lbnQiKSwKKyAgICBTZXF1ZW5jZUV4cHJlc3Npb246IFN5bWJvbCgic2VxdWVuY2Ut
ZXhwcmVzc2lvbiIpLAorICAgIFN3aXRjaFN0YXRlbWVudDogU3ltYm9sKCJzd2l0Y2gtc3RhdGVt
ZW50IiksCisgICAgU3dpdGNoQ2FzZTogU3ltYm9sKCJzd2l0Y2gtY2FzZSIpLAorICAgIFRoaXNF
eHByZXNzaW9uOiBTeW1ib2woInRoaXMtZXhwcmVzc2lvbiIpLAorICAgIFRocm93U3RhdGVtZW50
OiBTeW1ib2woInRocm93LXN0YXRlbWVudCIpLAorICAgIFRyeVN0YXRlbWVudDogU3ltYm9sKCJ0
cnktc3RhdGVtZW50IiksCisgICAgVW5hcnlFeHByZXNzaW9uOiBTeW1ib2woInVuYXJ5LWV4cHJl
c3Npb24iKSwKKyAgICBVcGRhdGVFeHByZXNzaW9uOiBTeW1ib2woInVwZGF0ZS1leHByZXNzaW9u
IiksCisgICAgVmFyaWFibGVEZWNsYXJhdGlvbjogU3ltYm9sKCJ2YXJpYWJsZS1kZWNsYXJhdGlv
biIpLAorICAgIFZhcmlhYmxlRGVjbGFyYXRvcjogU3ltYm9sKCJ2YXJpYWJsZS1kZWNsYXJhdG9y
IiksCisgICAgV2hpbGVTdGF0ZW1lbnQ6IFN5bWJvbCgid2hpbGUtc3RhdGVtZW50IiksCisgICAg
V2l0aFN0YXRlbWVudDogU3ltYm9sKCJ3aXRoLXN0YXRlbWVudCIpCit9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1NjcmlwdFRpbWVsaW5l
UmVjb3JkLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Nj
cmlwdFRpbWVsaW5lUmVjb3JkLmpzCmluZGV4IDRkYzNjN2QuLjlhNGZlYTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9TY3JpcHRUaW1lbGlu
ZVJlY29yZC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2Rl
bHMvU2NyaXB0VGltZWxpbmVSZWNvcmQuanMKQEAgLTIzLDkgKzIzLDExIEBACiAgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVs
aW5lUmVjb3JkID0gZnVuY3Rpb24oZXZlbnRUeXBlLCBzdGFydFRpbWUsIGVuZFRpbWUsIGNhbGxG
cmFtZXMsIHNvdXJjZUNvZGVMb2NhdGlvbiwgZGV0YWlscywgcHJvZmlsZVBheWxvYWQpCitXZWJJ
bnNwZWN0b3IuU2NyaXB0VGltZWxpbmVSZWNvcmQgPSBjbGFzcyBTY3JpcHRUaW1lbGluZVJlY29y
ZCBleHRlbmRzIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZAogewotICAgIFdlYkluc3BlY3Rv
ci5UaW1lbGluZVJlY29yZC5jYWxsKHRoaXMsIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5U
eXBlLlNjcmlwdCwgc3RhcnRUaW1lLCBlbmRUaW1lLCBjYWxsRnJhbWVzLCBzb3VyY2VDb2RlTG9j
YXRpb24pOworICAgIGNvbnN0cnVjdG9yKGV2ZW50VHlwZSwgc3RhcnRUaW1lLCBlbmRUaW1lLCBj
YWxsRnJhbWVzLCBzb3VyY2VDb2RlTG9jYXRpb24sIGRldGFpbHMsIHByb2ZpbGVQYXlsb2FkKQor
ICAgIHsKKyAgICAgICAgc3VwZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkLlR5cGUuU2Ny
aXB0LCBzdGFydFRpbWUsIGVuZFRpbWUsIGNhbGxGcmFtZXMsIHNvdXJjZUNvZGVMb2NhdGlvbik7
CiAKICAgICAgICAgY29uc29sZS5hc3NlcnQoZXZlbnRUeXBlKTsKIApAQCAtMzYsNiArMzgsMTA2
IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZVJlY29yZCA9IGZ1bmN0aW9uKGV2ZW50VHlw
ZSwgc3RhcnRUaW1lLCBlbmRUaW1lLCBjYWxsCiAgICAgICAgIHRoaXMuX2RldGFpbHMgPSBkZXRh
aWxzIHx8ICIiOwogICAgICAgICB0aGlzLl9wcm9maWxlUGF5bG9hZCA9IHByb2ZpbGVQYXlsb2Fk
IHx8IG51bGw7CiAgICAgICAgIHRoaXMuX3Byb2ZpbGUgPSBudWxsOworICAgIH0KKworICAgIC8v
IFB1YmxpYworCisgICAgZ2V0IGV2ZW50VHlwZSgpCisgICAgeworICAgICAgICByZXR1cm4gdGhp
cy5fZXZlbnRUeXBlOworICAgIH0KKworICAgIGdldCBkZXRhaWxzKCkKKyAgICB7CisgICAgICAg
IHJldHVybiB0aGlzLl9kZXRhaWxzOworICAgIH0KKworICAgIGdldCBwcm9maWxlKCkKKyAgICB7
CisgICAgICAgIHRoaXMuX2luaXRpYWxpemVQcm9maWxlRnJvbVBheWxvYWQoKTsKKyAgICAgICAg
cmV0dXJuIHRoaXMuX3Byb2ZpbGU7CisgICAgfQorCisgICAgc2F2ZUlkZW50aXR5VG9Db29raWUo
Y29va2llKQorICAgIHsKKyAgICAgICAgc3VwZXIuc2F2ZUlkZW50aXR5VG9Db29raWUoY29va2ll
KTsKKworICAgICAgICBjb29raWVbV2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5lUmVjb3JkLkV2
ZW50VHlwZUNvb2tpZUtleV0gPSB0aGlzLl9ldmVudFR5cGU7CisgICAgICAgIGNvb2tpZVtXZWJJ
bnNwZWN0b3IuU2NyaXB0VGltZWxpbmVSZWNvcmQuRGV0YWlsc0Nvb2tpZUtleV0gPSB0aGlzLl9k
ZXRhaWxzOworICAgIH0KKworICAgIC8vIFByaXZhdGUKKworICAgIF9pbml0aWFsaXplUHJvZmls
ZUZyb21QYXlsb2FkKHBheWxvYWQpCisgICAgeworICAgICAgICBpZiAodGhpcy5fcHJvZmlsZSB8
fCAhdGhpcy5fcHJvZmlsZVBheWxvYWQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
dmFyIHBheWxvYWQgPSB0aGlzLl9wcm9maWxlUGF5bG9hZDsKKyAgICAgICAgZGVsZXRlIHRoaXMu
X3Byb2ZpbGVQYXlsb2FkOworCisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHBheWxvYWQucm9vdE5v
ZGVzIGluc3RhbmNlb2YgQXJyYXkpOworCisgICAgICAgIGZ1bmN0aW9uIHByb2ZpbGVOb2RlRnJv
bVBheWxvYWQobm9kZVBheWxvYWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KCJpZCIgaW4gbm9kZVBheWxvYWQpOworICAgICAgICAgICAgY29uc29sZS5hc3NlcnQobm9k
ZVBheWxvYWQuY2FsbHMgaW5zdGFuY2VvZiBBcnJheSk7CisKKyAgICAgICAgICAgIGlmIChub2Rl
UGF5bG9hZC51cmwpIHsKKyAgICAgICAgICAgICAgICB2YXIgc291cmNlQ29kZSA9IFdlYkluc3Bl
Y3Rvci5mcmFtZVJlc291cmNlTWFuYWdlci5yZXNvdXJjZUZvclVSTChub2RlUGF5bG9hZC51cmwp
OworICAgICAgICAgICAgICAgIGlmICghc291cmNlQ29kZSkKKyAgICAgICAgICAgICAgICAgICAg
c291cmNlQ29kZSA9IFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIuc2NyaXB0c0ZvclVSTChu
b2RlUGF5bG9hZC51cmwpWzBdOworCisgICAgICAgICAgICAgICAgLy8gVGhlIGxpbmVOdW1iZXIg
aXMgMS1iYXNlZCwgYnV0IHdlIGV4cGVjdCAwLWJhc2VkLgorICAgICAgICAgICAgICAgIHZhciBs
aW5lTnVtYmVyID0gbm9kZVBheWxvYWQubGluZU51bWJlciAtIDE7CisKKyAgICAgICAgICAgICAg
ICB2YXIgc291cmNlQ29kZUxvY2F0aW9uID0gc291cmNlQ29kZSA/IHNvdXJjZUNvZGUuY3JlYXRl
TGF6eVNvdXJjZUNvZGVMb2NhdGlvbihsaW5lTnVtYmVyLCBub2RlUGF5bG9hZC5jb2x1bW5OdW1i
ZXIpIDogbnVsbDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIGlzUHJvZ3JhbUNv
ZGUgPSBub2RlUGF5bG9hZC5mdW5jdGlvbk5hbWUgPT09ICIocHJvZ3JhbSkiOworICAgICAgICAg
ICAgdmFyIGlzQW5vbnltb3VzRnVuY3Rpb24gPSBub2RlUGF5bG9hZC5mdW5jdGlvbk5hbWUgPT09
ICIoYW5vbnltb3VzIGZ1bmN0aW9uKSI7CisKKyAgICAgICAgICAgIHZhciB0eXBlID0gaXNQcm9n
cmFtQ29kZSA/IFdlYkluc3BlY3Rvci5Qcm9maWxlTm9kZS5UeXBlLlByb2dyYW0gOiBXZWJJbnNw
ZWN0b3IuUHJvZmlsZU5vZGUuVHlwZS5GdW5jdGlvbjsKKyAgICAgICAgICAgIHZhciBmdW5jdGlv
bk5hbWUgPSAhaXNQcm9ncmFtQ29kZSAmJiAhaXNBbm9ueW1vdXNGdW5jdGlvbiAmJiBub2RlUGF5
bG9hZC5mdW5jdGlvbk5hbWUgIT09ICIodW5rbm93bikiID8gbm9kZVBheWxvYWQuZnVuY3Rpb25O
YW1lIDogbnVsbDsKKyAgICAgICAgICAgIHZhciBjYWxscyA9IG5vZGVQYXlsb2FkLmNhbGxzLm1h
cChwcm9maWxlTm9kZUNhbGxGcm9tUGF5bG9hZCk7CisKKyAgICAgICAgICAgIHJldHVybiBuZXcg
V2ViSW5zcGVjdG9yLlByb2ZpbGVOb2RlKG5vZGVQYXlsb2FkLmlkLCB0eXBlLCBmdW5jdGlvbk5h
bWUsIHNvdXJjZUNvZGVMb2NhdGlvbiwgY2FsbHMsIG5vZGVQYXlsb2FkLmNoaWxkcmVuKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHByb2ZpbGVOb2RlQ2FsbEZyb21QYXlsb2FkKG5v
ZGVDYWxsUGF5bG9hZCkKKyAgICAgICAgeworICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoInN0
YXJ0VGltZSIgaW4gbm9kZUNhbGxQYXlsb2FkKTsKKyAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KCJ0b3RhbFRpbWUiIGluIG5vZGVDYWxsUGF5bG9hZCk7CisKKyAgICAgICAgICAgIHJldHVybiBu
ZXcgV2ViSW5zcGVjdG9yLlByb2ZpbGVOb2RlQ2FsbChub2RlQ2FsbFBheWxvYWQuc3RhcnRUaW1l
LCBub2RlQ2FsbFBheWxvYWQudG90YWxUaW1lKTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBy
b290Tm9kZXMgPSBwYXlsb2FkLnJvb3ROb2RlczsKKworICAgICAgICAvLyBJdGVyYXRlIG92ZXIg
dGhlIG5vZGUgdHJlZSB1c2luZyBhIHN0YWNrLiBEb2luZyB0aGlzIHJlY3Vyc2l2ZWx5IGNhbiBl
YXNpbHkgY2F1c2UgYSBzdGFjayBvdmVyZmxvdy4KKyAgICAgICAgLy8gV2UgdHJhdmVyc2UgdGhl
IHByb2ZpbGUgaW4gcG9zdC1vcmRlciBhbmQgY29udmVydCB0aGUgcGF5bG9hZHMgaW4gcGxhY2Ug
dW50aWwgd2UgZ2V0IGJhY2sgdG8gdGhlIHJvb3QuCisgICAgICAgIHZhciBzdGFjayA9IFt7cGFy
ZW50OiB7Y2hpbGRyZW46IHJvb3ROb2Rlc30sIGluZGV4OiAwLCByb290OiB0cnVlfV07CisgICAg
ICAgIHdoaWxlIChzdGFjay5sZW5ndGgpIHsKKyAgICAgICAgICAgIHZhciBlbnRyeSA9IHN0YWNr
Lmxhc3RWYWx1ZTsKKworICAgICAgICAgICAgaWYgKGVudHJ5LmluZGV4IDwgZW50cnkucGFyZW50
LmNoaWxkcmVuLmxlbmd0aCkgeworICAgICAgICAgICAgICAgIHZhciBjaGlsZE5vZGVQYXlsb2Fk
ID0gZW50cnkucGFyZW50LmNoaWxkcmVuW2VudHJ5LmluZGV4XTsKKyAgICAgICAgICAgICAgICBp
ZiAoY2hpbGROb2RlUGF5bG9hZC5jaGlsZHJlbiAmJiBjaGlsZE5vZGVQYXlsb2FkLmNoaWxkcmVu
Lmxlbmd0aCkKKyAgICAgICAgICAgICAgICAgICAgc3RhY2sucHVzaCh7cGFyZW50OiBjaGlsZE5v
ZGVQYXlsb2FkLCBpbmRleDogMH0pOworCisgICAgICAgICAgICAgICAgKytlbnRyeS5pbmRleDsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKCFlbnRyeS5yb290KQor
ICAgICAgICAgICAgICAgICAgICBlbnRyeS5wYXJlbnQuY2hpbGRyZW4gPSBlbnRyeS5wYXJlbnQu
Y2hpbGRyZW4ubWFwKHByb2ZpbGVOb2RlRnJvbVBheWxvYWQpOworICAgICAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICAgICAgcm9vdE5vZGVzID0gcm9vdE5vZGVzLm1hcChwcm9maWxl
Tm9kZUZyb21QYXlsb2FkKTsKKworICAgICAgICAgICAgICAgIHN0YWNrLnBvcCgpOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fcHJvZmlsZSA9IG5ldyBXZWJJbnNw
ZWN0b3IuUHJvZmlsZShyb290Tm9kZXMpOworICAgIH0KIH07CiAKIFdlYkluc3BlY3Rvci5TY3Jp
cHRUaW1lbGluZVJlY29yZC5FdmVudFR5cGUgPSB7CkBAIC0yNDYsMTA4ICszNDgsMyBAQCBXZWJJ
bnNwZWN0b3IuU2NyaXB0VGltZWxpbmVSZWNvcmQuRXZlbnRUeXBlLmRpc3BsYXlOYW1lID0gZnVu
Y3Rpb24oZXZlbnRUeXBlLCBkZQogV2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5lUmVjb3JkLlR5
cGVJZGVudGlmaWVyID0gInNjcmlwdC10aW1lbGluZS1yZWNvcmQiOwogV2ViSW5zcGVjdG9yLlNj
cmlwdFRpbWVsaW5lUmVjb3JkLkV2ZW50VHlwZUNvb2tpZUtleSA9ICJzY3JpcHQtdGltZWxpbmUt
cmVjb3JkLWV2ZW50LXR5cGUiOwogV2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5lUmVjb3JkLkRl
dGFpbHNDb29raWVLZXkgPSAic2NyaXB0LXRpbWVsaW5lLXJlY29yZC1kZXRhaWxzIjsKLQotV2Vi
SW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5lUmVjb3JkLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1
Y3RvcjogV2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5lUmVjb3JkLAotCi0gICAgLy8gUHVibGlj
Ci0KLSAgICBnZXQgZXZlbnRUeXBlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9ldmVu
dFR5cGU7Ci0gICAgfSwKLQotICAgIGdldCBkZXRhaWxzKCkKLSAgICB7Ci0gICAgICAgIHJldHVy
biB0aGlzLl9kZXRhaWxzOwotICAgIH0sCi0KLSAgICBnZXQgcHJvZmlsZSgpCi0gICAgewotICAg
ICAgICB0aGlzLl9pbml0aWFsaXplUHJvZmlsZUZyb21QYXlsb2FkKCk7Ci0gICAgICAgIHJldHVy
biB0aGlzLl9wcm9maWxlOwotICAgIH0sCi0KLSAgICBzYXZlSWRlbnRpdHlUb0Nvb2tpZTogZnVu
Y3Rpb24oY29va2llKQotICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3Jk
LnByb3RvdHlwZS5zYXZlSWRlbnRpdHlUb0Nvb2tpZS5jYWxsKHRoaXMsIGNvb2tpZSk7Ci0KLSAg
ICAgICAgY29va2llW1dlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZVJlY29yZC5FdmVudFR5cGVD
b29raWVLZXldID0gdGhpcy5fZXZlbnRUeXBlOwotICAgICAgICBjb29raWVbV2ViSW5zcGVjdG9y
LlNjcmlwdFRpbWVsaW5lUmVjb3JkLkRldGFpbHNDb29raWVLZXldID0gdGhpcy5fZGV0YWlsczsK
LSAgICB9LAotCi0gICAgLy8gUHJpdmF0ZQotCi0gICAgX2luaXRpYWxpemVQcm9maWxlRnJvbVBh
eWxvYWQ6IGZ1bmN0aW9uKHBheWxvYWQpCi0gICAgewotICAgICAgICBpZiAodGhpcy5fcHJvZmls
ZSB8fCAhdGhpcy5fcHJvZmlsZVBheWxvYWQpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAg
ICAgdmFyIHBheWxvYWQgPSB0aGlzLl9wcm9maWxlUGF5bG9hZDsKLSAgICAgICAgZGVsZXRlIHRo
aXMuX3Byb2ZpbGVQYXlsb2FkOwotCi0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHBheWxvYWQucm9v
dE5vZGVzIGluc3RhbmNlb2YgQXJyYXkpOwotCi0gICAgICAgIGZ1bmN0aW9uIHByb2ZpbGVOb2Rl
RnJvbVBheWxvYWQobm9kZVBheWxvYWQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KCJpZCIgaW4gbm9kZVBheWxvYWQpOwotICAgICAgICAgICAgY29uc29sZS5hc3NlcnQo
bm9kZVBheWxvYWQuY2FsbHMgaW5zdGFuY2VvZiBBcnJheSk7Ci0KLSAgICAgICAgICAgIGlmIChu
b2RlUGF5bG9hZC51cmwpIHsKLSAgICAgICAgICAgICAgICB2YXIgc291cmNlQ29kZSA9IFdlYklu
c3BlY3Rvci5mcmFtZVJlc291cmNlTWFuYWdlci5yZXNvdXJjZUZvclVSTChub2RlUGF5bG9hZC51
cmwpOwotICAgICAgICAgICAgICAgIGlmICghc291cmNlQ29kZSkKLSAgICAgICAgICAgICAgICAg
ICAgc291cmNlQ29kZSA9IFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIuc2NyaXB0c0ZvclVS
TChub2RlUGF5bG9hZC51cmwpWzBdOwotCi0gICAgICAgICAgICAgICAgLy8gVGhlIGxpbmVOdW1i
ZXIgaXMgMS1iYXNlZCwgYnV0IHdlIGV4cGVjdCAwLWJhc2VkLgotICAgICAgICAgICAgICAgIHZh
ciBsaW5lTnVtYmVyID0gbm9kZVBheWxvYWQubGluZU51bWJlciAtIDE7Ci0KLSAgICAgICAgICAg
ICAgICB2YXIgc291cmNlQ29kZUxvY2F0aW9uID0gc291cmNlQ29kZSA/IHNvdXJjZUNvZGUuY3Jl
YXRlTGF6eVNvdXJjZUNvZGVMb2NhdGlvbihsaW5lTnVtYmVyLCBub2RlUGF5bG9hZC5jb2x1bW5O
dW1iZXIpIDogbnVsbDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdmFyIGlzUHJvZ3Jh
bUNvZGUgPSBub2RlUGF5bG9hZC5mdW5jdGlvbk5hbWUgPT09ICIocHJvZ3JhbSkiOwotICAgICAg
ICAgICAgdmFyIGlzQW5vbnltb3VzRnVuY3Rpb24gPSBub2RlUGF5bG9hZC5mdW5jdGlvbk5hbWUg
PT09ICIoYW5vbnltb3VzIGZ1bmN0aW9uKSI7Ci0KLSAgICAgICAgICAgIHZhciB0eXBlID0gaXNQ
cm9ncmFtQ29kZSA/IFdlYkluc3BlY3Rvci5Qcm9maWxlTm9kZS5UeXBlLlByb2dyYW0gOiBXZWJJ
bnNwZWN0b3IuUHJvZmlsZU5vZGUuVHlwZS5GdW5jdGlvbjsKLSAgICAgICAgICAgIHZhciBmdW5j
dGlvbk5hbWUgPSAhaXNQcm9ncmFtQ29kZSAmJiAhaXNBbm9ueW1vdXNGdW5jdGlvbiAmJiBub2Rl
UGF5bG9hZC5mdW5jdGlvbk5hbWUgIT09ICIodW5rbm93bikiID8gbm9kZVBheWxvYWQuZnVuY3Rp
b25OYW1lIDogbnVsbDsKLSAgICAgICAgICAgIHZhciBjYWxscyA9IG5vZGVQYXlsb2FkLmNhbGxz
Lm1hcChwcm9maWxlTm9kZUNhbGxGcm9tUGF5bG9hZCk7Ci0KLSAgICAgICAgICAgIHJldHVybiBu
ZXcgV2ViSW5zcGVjdG9yLlByb2ZpbGVOb2RlKG5vZGVQYXlsb2FkLmlkLCB0eXBlLCBmdW5jdGlv
bk5hbWUsIHNvdXJjZUNvZGVMb2NhdGlvbiwgY2FsbHMsIG5vZGVQYXlsb2FkLmNoaWxkcmVuKTsK
LSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIHByb2ZpbGVOb2RlQ2FsbEZyb21QYXlsb2Fk
KG5vZGVDYWxsUGF5bG9hZCkKLSAgICAgICAgewotICAgICAgICAgICAgY29uc29sZS5hc3NlcnQo
InN0YXJ0VGltZSIgaW4gbm9kZUNhbGxQYXlsb2FkKTsKLSAgICAgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KCJ0b3RhbFRpbWUiIGluIG5vZGVDYWxsUGF5bG9hZCk7Ci0KLSAgICAgICAgICAgIHJldHVy
biBuZXcgV2ViSW5zcGVjdG9yLlByb2ZpbGVOb2RlQ2FsbChub2RlQ2FsbFBheWxvYWQuc3RhcnRU
aW1lLCBub2RlQ2FsbFBheWxvYWQudG90YWxUaW1lKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZh
ciByb290Tm9kZXMgPSBwYXlsb2FkLnJvb3ROb2RlczsKLQotICAgICAgICAvLyBJdGVyYXRlIG92
ZXIgdGhlIG5vZGUgdHJlZSB1c2luZyBhIHN0YWNrLiBEb2luZyB0aGlzIHJlY3Vyc2l2ZWx5IGNh
biBlYXNpbHkgY2F1c2UgYSBzdGFjayBvdmVyZmxvdy4KLSAgICAgICAgLy8gV2UgdHJhdmVyc2Ug
dGhlIHByb2ZpbGUgaW4gcG9zdC1vcmRlciBhbmQgY29udmVydCB0aGUgcGF5bG9hZHMgaW4gcGxh
Y2UgdW50aWwgd2UgZ2V0IGJhY2sgdG8gdGhlIHJvb3QuCi0gICAgICAgIHZhciBzdGFjayA9IFt7
cGFyZW50OiB7Y2hpbGRyZW46IHJvb3ROb2Rlc30sIGluZGV4OiAwLCByb290OiB0cnVlfV07Ci0g
ICAgICAgIHdoaWxlIChzdGFjay5sZW5ndGgpIHsKLSAgICAgICAgICAgIHZhciBlbnRyeSA9IHN0
YWNrLmxhc3RWYWx1ZTsKLQotICAgICAgICAgICAgaWYgKGVudHJ5LmluZGV4IDwgZW50cnkucGFy
ZW50LmNoaWxkcmVuLmxlbmd0aCkgewotICAgICAgICAgICAgICAgIHZhciBjaGlsZE5vZGVQYXls
b2FkID0gZW50cnkucGFyZW50LmNoaWxkcmVuW2VudHJ5LmluZGV4XTsKLSAgICAgICAgICAgICAg
ICBpZiAoY2hpbGROb2RlUGF5bG9hZC5jaGlsZHJlbiAmJiBjaGlsZE5vZGVQYXlsb2FkLmNoaWxk
cmVuLmxlbmd0aCkKLSAgICAgICAgICAgICAgICAgICAgc3RhY2sucHVzaCh7cGFyZW50OiBjaGls
ZE5vZGVQYXlsb2FkLCBpbmRleDogMH0pOwotCi0gICAgICAgICAgICAgICAgKytlbnRyeS5pbmRl
eDsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFlbnRyeS5yb290
KQotICAgICAgICAgICAgICAgICAgICBlbnRyeS5wYXJlbnQuY2hpbGRyZW4gPSBlbnRyeS5wYXJl
bnQuY2hpbGRyZW4ubWFwKHByb2ZpbGVOb2RlRnJvbVBheWxvYWQpOwotICAgICAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgcm9vdE5vZGVzID0gcm9vdE5vZGVzLm1hcChwcm9m
aWxlTm9kZUZyb21QYXlsb2FkKTsKLQotICAgICAgICAgICAgICAgIHN0YWNrLnBvcCgpOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgdGhpcy5fcHJvZmlsZSA9IG5ldyBXZWJJ
bnNwZWN0b3IuUHJvZmlsZShyb290Tm9kZXMpOwotICAgIH0KLX07Ci0KLVdlYkluc3BlY3Rvci5T
Y3JpcHRUaW1lbGluZVJlY29yZC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlRp
bWVsaW5lUmVjb3JkLnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL01vZGVscy9TZXR0aW5nLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvTW9kZWxzL1NldHRpbmcuanMKaW5kZXggYjVlNjUzNy4uMDU0ZDY1YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Nl
dHRpbmcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxz
L1NldHRpbmcuanMKQEAgLTI5LDMwICsyOSwyMyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1X
ZWJJbnNwZWN0b3IuU2V0dGluZyA9IGZ1bmN0aW9uKG5hbWUsIGRlZmF1bHRWYWx1ZSkKK1dlYklu
c3BlY3Rvci5TZXR0aW5nID0gY2xhc3MgU2V0dGluZyBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmpl
Y3QKIHsKKyAgICBjb25zdHJ1Y3RvcihuYW1lLCBkZWZhdWx0VmFsdWUpCisgICAgeworICAgICAg
ICBzdXBlcigpOworCiAgICAgICAgIHRoaXMuX25hbWUgPSBuYW1lOwogICAgICAgICB0aGlzLl9s
b2NhbFN0b3JhZ2VLZXkgPSBXZWJJbnNwZWN0b3IuU2V0dGluZy5Mb2NhbFN0b3JhZ2VLZXlQcmVm
aXggKyBuYW1lOwogICAgICAgICB0aGlzLl9kZWZhdWx0VmFsdWUgPSBkZWZhdWx0VmFsdWU7Ci19
OwotCi1XZWJJbnNwZWN0b3IuT2JqZWN0LmFkZENvbnN0cnVjdG9yRnVuY3Rpb25zKFdlYkluc3Bl
Y3Rvci5TZXR0aW5nKTsKLQotV2ViSW5zcGVjdG9yLlNldHRpbmcuRXZlbnQgPSB7Ci0gICAgQ2hh
bmdlZDogInNldHRpbmctY2hhbmdlZCIKLX07Ci0KLVdlYkluc3BlY3Rvci5TZXR0aW5nLkxvY2Fs
U3RvcmFnZUtleVByZWZpeCA9ICJjb20uYXBwbGUuV2ViSW5zcGVjdG9yLiI7Ci0KLVdlYkluc3Bl
Y3Rvci5TZXR0aW5nLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9y
LlNldHRpbmcsCisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgbmFtZSgpCiAgICAg
ewogICAgICAgICByZXR1cm4gdGhpcy5fbmFtZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCB2
YWx1ZSgpCiAgICAgewpAQCAtNzEsNyArNjQsNyBAQCBXZWJJbnNwZWN0b3IuU2V0dGluZy5wcm90
b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWU7Ci0gICAg
fSwKKyAgICB9CiAKICAgICBzZXQgdmFsdWUodmFsdWUpCiAgICAgewpAQCAtOTMsNCArODYsOCBA
QCBXZWJJbnNwZWN0b3IuU2V0dGluZy5wcm90b3R5cGUgPSB7CiAgICAgfQogfTsKIAotV2ViSW5z
cGVjdG9yLlNldHRpbmcucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3Qu
cHJvdG90eXBlOworV2ViSW5zcGVjdG9yLlNldHRpbmcuTG9jYWxTdG9yYWdlS2V5UHJlZml4ID0g
ImNvbS5hcHBsZS5XZWJJbnNwZWN0b3IuIjsKKworV2ViSW5zcGVjdG9yLlNldHRpbmcuRXZlbnQg
PSB7CisgICAgQ2hhbmdlZDogInNldHRpbmctY2hhbmdlZCIKK307CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvU291cmNlQ29kZS5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Tb3VyY2VDb2RlLmpzCmlu
ZGV4IDk5NTk3NDguLjI1YTg4YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL01vZGVscy9Tb3VyY2VDb2RlLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Tb3VyY2VDb2RlLmpzCkBAIC0yMyw5ICsyMywxMSBA
QAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rv
ci5Tb3VyY2VDb2RlID0gZnVuY3Rpb24oKQorV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGUgPSBjbGFz
cyBTb3VyY2VDb2RlIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogewotICAgIFdlYkluc3Bl
Y3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICBjb25zdHJ1Y3RvcigpCisgICAgeworICAgICAg
ICBzdXBlcigpOwogCiAgICAgICAgIHRoaXMuX29yaWdpbmFsUmV2aXNpb24gPSBuZXcgV2ViSW5z
cGVjdG9yLlNvdXJjZUNvZGVSZXZpc2lvbih0aGlzLCBudWxsLCBmYWxzZSk7CiAgICAgICAgIHRo
aXMuX2N1cnJlbnRSZXZpc2lvbiA9IHRoaXMuX29yaWdpbmFsUmV2aXNpb247CkBAIC0zMywyMSAr
MzUsNyBAQCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZSA9IGZ1bmN0aW9uKCkKICAgICAgICAgdGhp
cy5fc291cmNlTWFwcyA9IG51bGw7CiAgICAgICAgIHRoaXMuX2Zvcm1hdHRlclNvdXJjZU1hcCA9
IG51bGw7CiAgICAgICAgIHRoaXMuX3JlcXVlc3RDb250ZW50UHJvbWlzZSA9IG51bGw7Ci19Owot
Ci1XZWJJbnNwZWN0b3IuT2JqZWN0LmFkZENvbnN0cnVjdG9yRnVuY3Rpb25zKFdlYkluc3BlY3Rv
ci5Tb3VyY2VDb2RlKTsKLQotV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGUuRXZlbnQgPSB7Ci0gICAg
Q29udGVudERpZENoYW5nZTogInNvdXJjZS1jb2RlLWNvbnRlbnQtZGlkLWNoYW5nZSIsCi0gICAg
U291cmNlTWFwQWRkZWQ6ICJzb3VyY2UtY29kZS1zb3VyY2UtbWFwLWFkZGVkIiwKLSAgICBGb3Jt
YXR0ZXJEaWRDaGFuZ2U6ICJzb3VyY2UtY29kZS1mb3JtYXR0ZXItZGlkLWNoYW5nZSIsCi0gICAg
TG9hZGluZ0RpZEZpbmlzaDogInNvdXJjZS1jb2RlLWxvYWRpbmctZGlkLWZpbmlzaCIsCi0gICAg
TG9hZGluZ0RpZEZhaWw6ICJzb3VyY2UtY29kZS1sb2FkaW5nLWRpZC1mYWlsIgotfTsKLQotV2Vi
SW5zcGVjdG9yLlNvdXJjZUNvZGUucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJ
bnNwZWN0b3IuU291cmNlQ29kZSwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5PYmplY3Qu
cHJvdG90eXBlLAorICAgIH0KIAogICAgIC8vIFB1YmxpYwogCkBAIC01NiwxNyArNDQsMTcgQEAg
V2ViSW5zcGVjdG9yLlNvdXJjZUNvZGUucHJvdG90eXBlID0gewogICAgICAgICAvLyBJbXBsZW1l
bnRlZCBieSBzdWJjbGFzc2VzLgogICAgICAgICBjb25zb2xlLmVycm9yKCJOZWVkcyB0byBiZSBp
bXBsZW1lbnRlZCBieSBhIHN1YmNsYXNzLiIpOwogICAgICAgICByZXR1cm4gIiI7Ci0gICAgfSwK
KyAgICB9CiAKICAgICBnZXQgb3JpZ2luYWxSZXZpc2lvbigpCiAgICAgewogICAgICAgICByZXR1
cm4gdGhpcy5fb3JpZ2luYWxSZXZpc2lvbjsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBjdXJy
ZW50UmV2aXNpb24oKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRSZXZpc2lv
bjsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBjdXJyZW50UmV2aXNpb24ocmV2aXNpb24pCiAg
ICAgewpAQCAtODEsMTkgKzY5LDE5IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgdGhpcy5fY3VycmVudFJldmlzaW9uID0gcmV2aXNpb247CiAKICAgICAg
ICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGUu
RXZlbnQuQ29udGVudERpZENoYW5nZSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgY29udGVu
dCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVudFJldmlzaW9uLmNvbnRlbnQ7
Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc291cmNlTWFwcygpCiAgICAgewogICAgICAgICBy
ZXR1cm4gdGhpcy5fc291cmNlTWFwcyB8fCBbXTsKLSAgICB9LAorICAgIH0KIAotICAgIGFkZFNv
dXJjZU1hcDogZnVuY3Rpb24oc291cmNlTWFwKQorICAgIGFkZFNvdXJjZU1hcChzb3VyY2VNYXAp
CiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChzb3VyY2VNYXAgaW5zdGFuY2VvZiBXZWJJ
bnNwZWN0b3IuU291cmNlTWFwKTsKIApAQCAtMTAzLDEyICs5MSwxMiBAQCBXZWJJbnNwZWN0b3Iu
U291cmNlQ29kZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3NvdXJjZU1hcHMucHVzaChz
b3VyY2VNYXApOwogCiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYklu
c3BlY3Rvci5Tb3VyY2VDb2RlLkV2ZW50LlNvdXJjZU1hcEFkZGVkKTsKLSAgICB9LAorICAgIH0K
IAogICAgIGdldCBmb3JtYXR0ZXJTb3VyY2VNYXAoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRo
aXMuX2Zvcm1hdHRlclNvdXJjZU1hcDsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBmb3JtYXR0
ZXJTb3VyY2VNYXAoZm9ybWF0dGVyU291cmNlTWFwKQogICAgIHsKQEAgLTExOCwzMyArMTA2LDMz
IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5f
Zm9ybWF0dGVyU291cmNlTWFwID0gZm9ybWF0dGVyU291cmNlTWFwOwogCiAgICAgICAgIHRoaXMu
ZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlLkV2ZW50LkZv
cm1hdHRlckRpZENoYW5nZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZXF1ZXN0Q29udGVudDog
ZnVuY3Rpb24oKQorICAgIHJlcXVlc3RDb250ZW50KCkKICAgICB7CiAgICAgICAgIHRoaXMuX3Jl
cXVlc3RDb250ZW50UHJvbWlzZSA9IHRoaXMuX3JlcXVlc3RDb250ZW50UHJvbWlzZSB8fCB0aGlz
LnJlcXVlc3RDb250ZW50RnJvbUJhY2tlbmQoKS50aGVuKHRoaXMuX3Byb2Nlc3NDb250ZW50LmJp
bmQodGhpcykpOwogCiAgICAgICAgIHJldHVybiB0aGlzLl9yZXF1ZXN0Q29udGVudFByb21pc2U7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjcmVhdGVTb3VyY2VDb2RlTG9jYXRpb246IGZ1bmN0aW9u
KGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKKyAgICBjcmVhdGVTb3VyY2VDb2RlTG9jYXRpb24o
bGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgIHsKICAgICAgICAgcmV0dXJuIG5ldyBXZWJJ
bnNwZWN0b3IuU291cmNlQ29kZUxvY2F0aW9uKHRoaXMsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJl
cik7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjcmVhdGVMYXp5U291cmNlQ29kZUxvY2F0aW9uOiBm
dW5jdGlvbihsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCisgICAgY3JlYXRlTGF6eVNvdXJjZUNv
ZGVMb2NhdGlvbihsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgewogICAgICAgICByZXR1
cm4gbmV3IFdlYkluc3BlY3Rvci5MYXp5U291cmNlQ29kZUxvY2F0aW9uKHRoaXMsIGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlcik7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjcmVhdGVTb3VyY2VDb2Rl
VGV4dFJhbmdlOiBmdW5jdGlvbih0ZXh0UmFuZ2UpCisgICAgY3JlYXRlU291cmNlQ29kZVRleHRS
YW5nZSh0ZXh0UmFuZ2UpCiAgICAgewogICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5T
b3VyY2VDb2RlVGV4dFJhbmdlKHRoaXMsIHRleHRSYW5nZSk7Ci0gICAgfSwKKyAgICB9CiAKICAg
ICAvLyBQcm90ZWN0ZWQKIAotICAgIHJldmlzaW9uQ29udGVudERpZENoYW5nZTogZnVuY3Rpb24o
cmV2aXNpb24pCisgICAgcmV2aXNpb25Db250ZW50RGlkQ2hhbmdlKHJldmlzaW9uKQogICAgIHsK
ICAgICAgICAgaWYgKHRoaXMuX2lnbm9yZVJldmlzaW9uQ29udGVudERpZENoYW5nZUV2ZW50KQog
ICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTU1LDQxICsxNDMsNDEgQEAgV2ViSW5zcGVjdG9yLlNv
dXJjZUNvZGUucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLmhhbmRsZUN1cnJlbnRSZXZpc2lv
bkNvbnRlbnRDaGFuZ2UoKTsKIAogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVy
cyhXZWJJbnNwZWN0b3IuU291cmNlQ29kZS5FdmVudC5Db250ZW50RGlkQ2hhbmdlKTsKLSAgICB9
LAorICAgIH0KIAotICAgIGhhbmRsZUN1cnJlbnRSZXZpc2lvbkNvbnRlbnRDaGFuZ2U6IGZ1bmN0
aW9uKCkKKyAgICBoYW5kbGVDdXJyZW50UmV2aXNpb25Db250ZW50Q2hhbmdlKCkKICAgICB7CiAg
ICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMgaWYgbmVlZGVkLgotICAgIH0sCisg
ICAgfQogCiAgICAgZ2V0IHJldmlzaW9uRm9yUmVxdWVzdGVkQ29udGVudCgpCiAgICAgewogICAg
ICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzIGlmIG5lZWRlZC4KICAgICAgICAgcmV0
dXJuIHRoaXMuX29yaWdpbmFsUmV2aXNpb247Ci0gICAgfSwKKyAgICB9CiAKLSAgICBtYXJrQ29u
dGVudEFzU3RhbGU6IGZ1bmN0aW9uKCkKKyAgICBtYXJrQ29udGVudEFzU3RhbGUoKQogICAgIHsK
ICAgICAgICAgdGhpcy5fcmVxdWVzdENvbnRlbnRQcm9taXNlID0gbnVsbDsKICAgICAgICAgdGhp
cy5fY29udGVudFJlY2VpdmVkID0gZmFsc2U7Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZXF1ZXN0
Q29udGVudEZyb21CYWNrZW5kOiBmdW5jdGlvbigpCisgICAgcmVxdWVzdENvbnRlbnRGcm9tQmFj
a2VuZCgpCiAgICAgewogICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLgogICAg
ICAgICBjb25zb2xlLmVycm9yKCJOZWVkcyB0byBiZSBpbXBsZW1lbnRlZCBieSBhIHN1YmNsYXNz
LiIpOwogICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCJOZWVkcyB0byBi
ZSBpbXBsZW1lbnRlZCBieSBhIHN1YmNsYXNzLiIpKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdl
dCBtaW1lVHlwZSgpCiAgICAgewogICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzc2Vz
LgogICAgICAgICBjb25zb2xlLmVycm9yKCJOZWVkcyB0byBiZSBpbXBsZW1lbnRlZCBieSBhIHN1
YmNsYXNzLiIpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX3Byb2Nl
c3NDb250ZW50OiBmdW5jdGlvbihwYXJhbWV0ZXJzKQorICAgIF9wcm9jZXNzQ29udGVudChwYXJh
bWV0ZXJzKQogICAgIHsKICAgICAgICAgLy8gRGlmZmVyZW50IGJhY2tlbmQgQVBJcyByZXR1cm4g
b25lIG9mIGBjb250ZW50LCBgYm9keWAsIGB0ZXh0YCwgb3IgYHNjcmlwdFNvdXJjZWAuCiAgICAg
ICAgIHZhciBjb250ZW50ID0gcGFyYW1ldGVycy5jb250ZW50IHx8IHBhcmFtZXRlcnMuYm9keSB8
fCBwYXJhbWV0ZXJzLnRleHQgfHwgcGFyYW1ldGVycy5zY3JpcHRTb3VyY2U7CkBAIC0yMTAsMyAr
MTk4LDExIEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAg
fSk7CiAgICAgfQogfTsKKworV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGUuRXZlbnQgPSB7CisgICAg
Q29udGVudERpZENoYW5nZTogInNvdXJjZS1jb2RlLWNvbnRlbnQtZGlkLWNoYW5nZSIsCisgICAg
U291cmNlTWFwQWRkZWQ6ICJzb3VyY2UtY29kZS1zb3VyY2UtbWFwLWFkZGVkIiwKKyAgICBGb3Jt
YXR0ZXJEaWRDaGFuZ2U6ICJzb3VyY2UtY29kZS1mb3JtYXR0ZXItZGlkLWNoYW5nZSIsCisgICAg
TG9hZGluZ0RpZEZpbmlzaDogInNvdXJjZS1jb2RlLWxvYWRpbmctZGlkLWZpbmlzaCIsCisgICAg
TG9hZGluZ0RpZEZhaWw6ICJzb3VyY2UtY29kZS1sb2FkaW5nLWRpZC1mYWlsIgorfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Tb3VyY2VD
b2RlTG9jYXRpb24uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2Rl
bHMvU291cmNlQ29kZUxvY2F0aW9uLmpzCmluZGV4IDU3NDNjN2QuLjU3MjRlMGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Tb3VyY2VDb2Rl
TG9jYXRpb24uanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9k
ZWxzL1NvdXJjZUNvZGVMb2NhdGlvbi5qcwpAQCAtMjMsOSArMjMsMTEgQEAKICAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuU291cmNlQ29kZUxv
Y2F0aW9uID0gZnVuY3Rpb24oc291cmNlQ29kZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKQor
V2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVMb2NhdGlvbiA9IGNsYXNzIFNvdXJjZUNvZGVMb2NhdGlv
biBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIHsKLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0
LmNhbGwodGhpcyk7CisgICAgY29uc3RydWN0b3Ioc291cmNlQ29kZSwgbGluZU51bWJlciwgY29s
dW1uTnVtYmVyKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKIAogICAgICAgICBjb25zb2xlLmFz
c2VydChzb3VyY2VDb2RlID09PSBudWxsIHx8IHNvdXJjZUNvZGUgaW5zdGFuY2VvZiBXZWJJbnNw
ZWN0b3IuU291cmNlQ29kZSk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCEoc291cmNlQ29kZSBp
bnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Tb3VyY2VNYXBSZXNvdXJjZSkpOwpAQCAtNDMsNjcgKzQ1
LDQzIEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlTG9jYXRpb24gPSBmdW5jdGlvbihzb3VyY2VD
b2RlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgIH0KIAogICAgICAgICB0aGlz
Ll9yZXNldE1hcHBlZExvY2F0aW9uKCk7Ci19OwotCi1XZWJJbnNwZWN0b3IuU291cmNlQ29kZUxv
Y2F0aW9uLkRpc3BsYXlMb2NhdGlvbkNsYXNzTmFtZSA9ICJkaXNwbGF5LWxvY2F0aW9uIjsKLQot
V2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVMb2NhdGlvbi5MYXJnZUNvbHVtbk51bWJlciA9IDgwOwot
Ci1XZWJJbnNwZWN0b3IuU291cmNlQ29kZUxvY2F0aW9uLk5hbWVTdHlsZSA9IHsKLSAgICBOb25l
OiAibm9uZSIsIC8vIEZpbGUgbmFtZSBub3QgaW5jbHVkZWQuCi0gICAgU2hvcnQ6ICJzaG9ydCIs
IC8vIE9ubHkgdGhlIGZpbGUgbmFtZS4KLSAgICBGdWxsOiAiZnVsbCIgLy8gRnVsbCBVUkwgaXMg
dXNlZC4KLX07Ci0KLVdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlTG9jYXRpb24uQ29sdW1uU3R5bGUg
PSB7Ci0gICAgSGlkZGVuOiAiaGlkZGVuIiwgICAgICAgICAgICAgLy8gY29sdW1uIG51bWJlcnMg
YXJlIG5vdCBpbmNsdWRlZC4KLSAgICBPbmx5SWZMYXJnZTogIm9ubHktaWYtbGFyZ2UiLCAvLyBj
b2x1bW4gbnVtYmVycyBncmVhdGVyIHRoYW4gODAgYXJlIHNob3duLgotICAgIFNob3duOiAic2hv
d24iICAgICAgICAgICAgICAgIC8vIG5vbi16ZXJvIGNvbHVtbiBudW1iZXJzIGFyZSBzaG93bi4K
LX07Ci0KLVdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlTG9jYXRpb24uRXZlbnQgPSB7Ci0gICAgTG9j
YXRpb25DaGFuZ2VkOiAic291cmNlLWNvZGUtbG9jYXRpb24tbG9jYXRpb24tY2hhbmdlZCIsCi0g
ICAgRGlzcGxheUxvY2F0aW9uQ2hhbmdlZDogInNvdXJjZS1jb2RlLWxvY2F0aW9uLWRpc3BsYXkt
bG9jYXRpb24tY2hhbmdlZCIKLX07Ci0KLVdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlTG9jYXRpb24u
cHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuU291cmNlQ29kZUxv
Y2F0aW9uLAorICAgIH0KIAogICAgIC8vIFB1YmxpYwogCi0gICAgaXNFcXVhbDogZnVuY3Rpb24o
b3RoZXIpCisgICAgaXNFcXVhbChvdGhlcikKICAgICB7CiAgICAgICAgIGlmICghb3RoZXIpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJldHVybiB0aGlzLl9zb3VyY2VDb2Rl
ID09PSBvdGhlci5fc291cmNlQ29kZSAmJiB0aGlzLl9saW5lTnVtYmVyID09PSBvdGhlci5fbGlu
ZU51bWJlciAmJiB0aGlzLl9jb2x1bW5OdW1iZXIgPT09IG90aGVyLl9jb2x1bW5OdW1iZXI7Ci0g
ICAgfSwKKyAgICB9CiAKICAgICBnZXQgc291cmNlQ29kZSgpCiAgICAgewogICAgICAgICByZXR1
cm4gdGhpcy5fc291cmNlQ29kZTsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBzb3VyY2VDb2Rl
KHNvdXJjZUNvZGUpCiAgICAgewogICAgICAgICB0aGlzLnNldFNvdXJjZUNvZGUoc291cmNlQ29k
ZSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBSYXcgbGluZSBhbmQgY29sdW1uIGluIHRoZSBv
cmlnaW5hbCBzb3VyY2UgY29kZS4KIAogICAgIGdldCBsaW5lTnVtYmVyKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiB0aGlzLl9saW5lTnVtYmVyOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGNv
bHVtbk51bWJlcigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fY29sdW1uTnVtYmVyOwot
ICAgIH0sCisgICAgfQogCi0gICAgcG9zaXRpb246IGZ1bmN0aW9uKCkKKyAgICBwb3NpdGlvbigp
CiAgICAgewogICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlUG9zaXRp
b24odGhpcy5saW5lTnVtYmVyLCB0aGlzLmNvbHVtbk51bWJlcik7Ci0gICAgfSwKKyAgICB9CiAK
ICAgICAvLyBGb3JtYXR0ZWQgbGluZSBhbmQgY29sdW1uIGlmIHRoZSBvcmlnaW5hbCBzb3VyY2Ug
Y29kZSBpcyBwcmV0dHkgcHJpbnRlZC4KICAgICAvLyBUaGlzIGlzIHRoZSBzYW1lIGFzIHRoZSBy
YXcgbG9jYXRpb24gaWYgdGhlcmUgaXMgbm8gZm9ybWF0dGVyLgpAQCAtMTExLDE3ICs4OSwxNyBA
QCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZUxvY2F0aW9uLnByb3RvdHlwZSA9IHsKICAgICBnZXQg
Zm9ybWF0dGVkTGluZU51bWJlcigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZm9ybWF0
dGVkTGluZU51bWJlcjsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBmb3JtYXR0ZWRDb2x1bW5O
dW1iZXIoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2Zvcm1hdHRlZENvbHVtbk51bWJl
cjsKLSAgICB9LAorICAgIH0KIAotICAgIGZvcm1hdHRlZFBvc2l0aW9uOiBmdW5jdGlvbigpCisg
ICAgZm9ybWF0dGVkUG9zaXRpb24oKQogICAgIHsKICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNw
ZWN0b3IuU291cmNlQ29kZVBvc2l0aW9uKHRoaXMuZm9ybWF0dGVkTGluZU51bWJlciwgdGhpcy5m
b3JtYXR0ZWRDb2x1bW5OdW1iZXIpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gRGlzcGxheSBs
aW5lIGFuZCBjb2x1bW46CiAgICAgLy8gICAtIE1hcHBlZCBsaW5lIGFuZCBjb2x1bW4gaWYgdGhl
IG9yaWdpbmFsIHNvdXJjZSBjb2RlIGhhcyBhIHNvdXJjZSBtYXAuCkBAIC0xMzEsNDMgKzEwOSw0
MyBAQCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZUxvY2F0aW9uLnByb3RvdHlwZSA9IHsKICAgICB7
CiAgICAgICAgIHRoaXMucmVzb2x2ZU1hcHBlZExvY2F0aW9uKCk7CiAgICAgICAgIHJldHVybiB0
aGlzLl9tYXBwZWRSZXNvdXJjZSB8fCB0aGlzLl9zb3VyY2VDb2RlOwotICAgIH0sCisgICAgfQog
CiAgICAgZ2V0IGRpc3BsYXlMaW5lTnVtYmVyKCkKICAgICB7CiAgICAgICAgIHRoaXMucmVzb2x2
ZU1hcHBlZExvY2F0aW9uKCk7CiAgICAgICAgIHJldHVybiBpc05hTih0aGlzLl9tYXBwZWRMaW5l
TnVtYmVyKSA/IHRoaXMuX2Zvcm1hdHRlZExpbmVOdW1iZXIgOiB0aGlzLl9tYXBwZWRMaW5lTnVt
YmVyOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGRpc3BsYXlDb2x1bW5OdW1iZXIoKQogICAg
IHsKICAgICAgICAgdGhpcy5yZXNvbHZlTWFwcGVkTG9jYXRpb24oKTsKICAgICAgICAgcmV0dXJu
IGlzTmFOKHRoaXMuX21hcHBlZENvbHVtbk51bWJlcikgPyB0aGlzLl9mb3JtYXR0ZWRDb2x1bW5O
dW1iZXIgOiB0aGlzLl9tYXBwZWRDb2x1bW5OdW1iZXI7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBk
aXNwbGF5UG9zaXRpb246IGZ1bmN0aW9uKCkKKyAgICBkaXNwbGF5UG9zaXRpb24oKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVBvc2l0aW9uKHRoaXMu
ZGlzcGxheUxpbmVOdW1iZXIsIHRoaXMuZGlzcGxheUNvbHVtbk51bWJlcik7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICAvLyBVc2VyIHByZXNlbnRhYmxlIGxvY2F0aW9uIHN0cmluZ3M6ICJmaWxlOmxp
bmVOdW1iZXI6Y29sdW1uTnVtYmVyIi4KIAotICAgIG9yaWdpbmFsTG9jYXRpb25TdHJpbmc6IGZ1
bmN0aW9uKGNvbHVtblN0eWxlLCBuYW1lU3R5bGUsIHByZWZpeCkKKyAgICBvcmlnaW5hbExvY2F0
aW9uU3RyaW5nKGNvbHVtblN0eWxlLCBuYW1lU3R5bGUsIHByZWZpeCkKICAgICB7CiAgICAgICAg
IHJldHVybiB0aGlzLl9sb2NhdGlvblN0cmluZyh0aGlzLnNvdXJjZUNvZGUsIHRoaXMubGluZU51
bWJlciwgdGhpcy5jb2x1bW5OdW1iZXIsIGNvbHVtblN0eWxlLCBuYW1lU3R5bGUsIHByZWZpeCk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBmb3JtYXR0ZWRMb2NhdGlvblN0cmluZzogZnVuY3Rpb24o
Y29sdW1uU3R5bGUsIG5hbWVTdHlsZSwgcHJlZml4KQorICAgIGZvcm1hdHRlZExvY2F0aW9uU3Ry
aW5nKGNvbHVtblN0eWxlLCBuYW1lU3R5bGUsIHByZWZpeCkKICAgICB7CiAgICAgICAgIHJldHVy
biB0aGlzLl9sb2NhdGlvblN0cmluZyh0aGlzLnNvdXJjZUNvZGUsIHRoaXMuZm9ybWF0dGVkTGlu
ZU51bWJlciwgdGhpcy5mb3JtYXR0ZWRDb2x1bW4sIGNvbHVtblN0eWxlLCBuYW1lU3R5bGUsIHBy
ZWZpeCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBkaXNwbGF5TG9jYXRpb25TdHJpbmc6IGZ1bmN0
aW9uKGNvbHVtblN0eWxlLCBuYW1lU3R5bGUsIHByZWZpeCkKKyAgICBkaXNwbGF5TG9jYXRpb25T
dHJpbmcoY29sdW1uU3R5bGUsIG5hbWVTdHlsZSwgcHJlZml4KQogICAgIHsKICAgICAgICAgcmV0
dXJuIHRoaXMuX2xvY2F0aW9uU3RyaW5nKHRoaXMuZGlzcGxheVNvdXJjZUNvZGUsIHRoaXMuZGlz
cGxheUxpbmVOdW1iZXIsIHRoaXMuZGlzcGxheUNvbHVtbk51bWJlciwgY29sdW1uU3R5bGUsIG5h
bWVTdHlsZSwgcHJlZml4KTsKLSAgICB9LAorICAgIH0KIAotICAgIHRvb2x0aXBTdHJpbmc6IGZ1
bmN0aW9uKCkKKyAgICB0b29sdGlwU3RyaW5nKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5o
YXNEaWZmZXJlbnREaXNwbGF5TG9jYXRpb24oKSkKICAgICAgICAgICAgIHJldHVybiB0aGlzLm9y
aWdpbmFsTG9jYXRpb25TdHJpbmcoV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVMb2NhdGlvbi5Db2x1
bW5TdHlsZS5TaG93biwgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVMb2NhdGlvbi5OYW1lU3R5bGUu
RnVsbCk7CkBAIC0xNzUsMjUgKzE1MywyNSBAQCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZUxvY2F0
aW9uLnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIHRvb2x0aXAgPSBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIkxvY2F0ZWQgYXQgJXMiKS5mb3JtYXQodGhpcy5kaXNwbGF5TG9jYXRpb25TdHJpbmco
V2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVMb2NhdGlvbi5Db2x1bW5TdHlsZS5TaG93biwgV2ViSW5z
cGVjdG9yLlNvdXJjZUNvZGVMb2NhdGlvbi5OYW1lU3R5bGUuRnVsbCkpOwogICAgICAgICB0b29s
dGlwICs9ICJcbiIgKyBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk9yaWdpbmFsbHkgJXMiKS5mb3Jt
YXQodGhpcy5vcmlnaW5hbExvY2F0aW9uU3RyaW5nKFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlTG9j
YXRpb24uQ29sdW1uU3R5bGUuU2hvd24sIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlTG9jYXRpb24u
TmFtZVN0eWxlLkZ1bGwpKTsKICAgICAgICAgcmV0dXJuIHRvb2x0aXA7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBoYXNNYXBwZWRMb2NhdGlvbjogZnVuY3Rpb24oKQorICAgIGhhc01hcHBlZExvY2F0
aW9uKCkKICAgICB7CiAgICAgICAgIHRoaXMucmVzb2x2ZU1hcHBlZExvY2F0aW9uKCk7CiAgICAg
ICAgIHJldHVybiB0aGlzLl9tYXBwZWRSZXNvdXJjZSAhPT0gbnVsbDsKLSAgICB9LAorICAgIH0K
IAotICAgIGhhc0Zvcm1hdHRlZExvY2F0aW9uOiBmdW5jdGlvbigpCisgICAgaGFzRm9ybWF0dGVk
TG9jYXRpb24oKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2Zvcm1hdHRlZExpbmVOdW1i
ZXIgIT09IHRoaXMuX2xpbmVOdW1iZXIgfHwgdGhpcy5fZm9ybWF0dGVkQ29sdW1uTnVtYmVyICE9
PSB0aGlzLl9jb2x1bW5OdW1iZXI7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBoYXNEaWZmZXJlbnRE
aXNwbGF5TG9jYXRpb246IGZ1bmN0aW9uKCkKKyAgICBoYXNEaWZmZXJlbnREaXNwbGF5TG9jYXRp
b24oKQogICAgIHsKICAgICAgICByZXR1cm4gdGhpcy5oYXNNYXBwZWRMb2NhdGlvbigpIHx8IHRo
aXMuaGFzRm9ybWF0dGVkTG9jYXRpb24oKTsKLSAgICB9LAorICAgIH0KIAotICAgIHVwZGF0ZTog
ZnVuY3Rpb24oc291cmNlQ29kZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKQorICAgIHVwZGF0
ZShzb3VyY2VDb2RlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgewogICAgICAgICBj
b25zb2xlLmFzc2VydChzb3VyY2VDb2RlID09PSB0aGlzLl9zb3VyY2VDb2RlIHx8ICh0aGlzLl9t
YXBwZWRSZXNvdXJjZSAmJiBzb3VyY2VDb2RlID09PSB0aGlzLl9tYXBwZWRSZXNvdXJjZSkpOwog
ICAgICAgICBjb25zb2xlLmFzc2VydCh0eXBlb2YgbGluZU51bWJlciA9PT0gIm51bWJlciIgJiYg
IWlzTmFOKGxpbmVOdW1iZXIpICYmIGxpbmVOdW1iZXIgPj0gMCk7CkBAIC0yMTcsOSArMTk1LDkg
QEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVMb2NhdGlvbi5wcm90b3R5cGUgPSB7CiAgICAgICAg
ICAgICAgICAgdGhpcy5fbWFwcGVkQ29sdW1uTnVtYmVyID0gbmV3U291cmNlQ29kZUxvY2F0aW9u
Ll9tYXBwZWRDb2x1bW5OdW1iZXI7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0pOwotICAgIH0s
CisgICAgfQogCi0gICAgcG9wdWxhdGVMaXZlRGlzcGxheUxvY2F0aW9uVG9vbHRpcDogZnVuY3Rp
b24oZWxlbWVudCwgcHJlZml4KQorICAgIHBvcHVsYXRlTGl2ZURpc3BsYXlMb2NhdGlvblRvb2x0
aXAoZWxlbWVudCwgcHJlZml4KQogICAgIHsKICAgICAgICAgcHJlZml4ID0gcHJlZml4IHx8ICIi
OwogCkBAIC0yMjksOSArMjA3LDkgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVMb2NhdGlvbi5w
cm90b3R5cGUgPSB7CiAgICAgICAgICAgICBpZiAodGhpcy5zb3VyY2VDb2RlKQogICAgICAgICAg
ICAgICAgIGVsZW1lbnQudGl0bGUgPSBwcmVmaXggKyB0aGlzLnRvb2x0aXBTdHJpbmcoKTsKICAg
ICAgICAgfSwgdGhpcyk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBwb3B1bGF0ZUxpdmVEaXNwbGF5
TG9jYXRpb25TdHJpbmc6IGZ1bmN0aW9uKGVsZW1lbnQsIHByb3BlcnR5TmFtZSwgY29sdW1uU3R5
bGUsIG5hbWVTdHlsZSwgcHJlZml4KQorICAgIHBvcHVsYXRlTGl2ZURpc3BsYXlMb2NhdGlvblN0
cmluZyhlbGVtZW50LCBwcm9wZXJ0eU5hbWUsIGNvbHVtblN0eWxlLCBuYW1lU3R5bGUsIHByZWZp
eCkKICAgICB7CiAgICAgICAgIHZhciBjdXJyZW50RGlzcGxheSA9IHVuZGVmaW5lZDsKIApAQCAt
MjcwLDExICsyNDgsMTEgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVMb2NhdGlvbi5wcm90b3R5
cGUgPSB7CiAgICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VvdXQiLCBmdW5j
dGlvbihldmVudCkgewogICAgICAgICAgICAgdXBkYXRlRGlzcGxheVN0cmluZy5jYWxsKHRoaXMs
IGZhbHNlKTsKICAgICAgICAgfS5iaW5kKHRoaXMpKTsKLSAgICB9LAorICAgIH0KIAogICAgIC8v
IFByb3RlY3RlZAogCi0gICAgc2V0U291cmNlQ29kZTogZnVuY3Rpb24oc291cmNlQ29kZSkKKyAg
ICBzZXRTb3VyY2VDb2RlKHNvdXJjZUNvZGUpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2Vy
dCgodGhpcy5fc291cmNlQ29kZSA9PT0gbnVsbCAmJiBzb3VyY2VDb2RlIGluc3RhbmNlb2YgV2Vi
SW5zcGVjdG9yLlNvdXJjZUNvZGUpIHx8ICh0aGlzLl9zb3VyY2VDb2RlIGluc3RhbmNlb2YgV2Vi
SW5zcGVjdG9yLlNvdXJjZUNvZGUgJiYgc291cmNlQ29kZSA9PT0gbnVsbCkpOwogCkBAIC0yOTQs
OSArMjcyLDkgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVMb2NhdGlvbi5wcm90b3R5cGUgPSB7
CiAgICAgICAgICAgICAgICAgdGhpcy5fc291cmNlQ29kZS5hZGRFdmVudExpc3RlbmVyKFdlYklu
c3BlY3Rvci5Tb3VyY2VDb2RlLkV2ZW50LkZvcm1hdHRlckRpZENoYW5nZSwgdGhpcy5fc291cmNl
Q29kZUZvcm1hdHRlckRpZENoYW5nZSwgdGhpcyk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0p
OwotICAgIH0sCisgICAgfQogCi0gICAgcmVzb2x2ZU1hcHBlZExvY2F0aW9uOiBmdW5jdGlvbigp
CisgICAgcmVzb2x2ZU1hcHBlZExvY2F0aW9uKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9t
YXBwZWRMb2NhdGlvbklzUmVzb2x2ZWQpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0zMjksMTEg
KzMwNywxMSBAQCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZUxvY2F0aW9uLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgICAgIHRoaXMuX21hcHBlZENvbHVtbk51bWJlciA9IGVudHJ5WzRdOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRl
CiAKLSAgICBfbG9jYXRpb25TdHJpbmc6IGZ1bmN0aW9uKHNvdXJjZUNvZGUsIGxpbmVOdW1iZXIs
IGNvbHVtbk51bWJlciwgY29sdW1uU3R5bGUsIG5hbWVTdHlsZSwgcHJlZml4KQorICAgIF9sb2Nh
dGlvblN0cmluZyhzb3VyY2VDb2RlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGNvbHVtblN0
eWxlLCBuYW1lU3R5bGUsIHByZWZpeCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHNv
dXJjZUNvZGUpOwogICAgICAgICBpZiAoIXNvdXJjZUNvZGUpCkBAIC0zNjIsMjYgKzM0MCwyNiBA
QCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZUxvY2F0aW9uLnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgIGNvbnNvbGUuZXJyb3IoIlVua25vd24gbmFtZVN0eWxlOiAiICsgbmFtZVN0eWxlKTsKICAg
ICAgICAgICAgIHJldHVybiBwcmVmaXggKyBsaW5lU3RyaW5nOwogICAgICAgICB9Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBfcmVzZXRNYXBwZWRMb2NhdGlvbjogZnVuY3Rpb24oKQorICAgIF9yZXNl
dE1hcHBlZExvY2F0aW9uKCkKICAgICB7CiAgICAgICAgIHRoaXMuX21hcHBlZExvY2F0aW9uSXNS
ZXNvbHZlZCA9IGZhbHNlOwogICAgICAgICB0aGlzLl9tYXBwZWRSZXNvdXJjZSA9IG51bGw7CiAg
ICAgICAgIHRoaXMuX21hcHBlZExpbmVOdW1iZXIgPSBOYU47CiAgICAgICAgIHRoaXMuX21hcHBl
ZENvbHVtbk51bWJlciA9IE5hTjsKLSAgICB9LAorICAgIH0KIAotICAgIF9zZXRNYXBwZWRMb2Nh
dGlvbjogZnVuY3Rpb24obWFwcGVkUmVzb3VyY2UsIG1hcHBlZExpbmVOdW1iZXIsIG1hcHBlZENv
bHVtbk51bWJlcikKKyAgICBfc2V0TWFwcGVkTG9jYXRpb24obWFwcGVkUmVzb3VyY2UsIG1hcHBl
ZExpbmVOdW1iZXIsIG1hcHBlZENvbHVtbk51bWJlcikKICAgICB7CiAgICAgICAgIC8vIENhbGxl
ZCBieSBTb3VyY2VNYXBSZXNvdXJjZSB3aGVuIGl0IGNyZWF0ZXMgYSBTb3VyY2VDb2RlTG9jYXRp
b24gYW5kIGFscmVhZHkga25vd3MgdGhlIHJlc29sdmVkIGxvY2F0aW9uLgogICAgICAgICB0aGlz
Ll9tYXBwZWRMb2NhdGlvbklzUmVzb2x2ZWQgPSB0cnVlOwogICAgICAgICB0aGlzLl9tYXBwZWRS
ZXNvdXJjZSA9IG1hcHBlZFJlc291cmNlOwogICAgICAgICB0aGlzLl9tYXBwZWRMaW5lTnVtYmVy
ID0gbWFwcGVkTGluZU51bWJlcjsKICAgICAgICAgdGhpcy5fbWFwcGVkQ29sdW1uTnVtYmVyID0g
bWFwcGVkQ29sdW1uTnVtYmVyOwotICAgIH0sCisgICAgfQogCi0gICAgX3Jlc29sdmVGb3JtYXR0
ZWRMb2NhdGlvbjogZnVuY3Rpb24oKQorICAgIF9yZXNvbHZlRm9ybWF0dGVkTG9jYXRpb24oKQog
ICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3NvdXJjZUNvZGUgJiYgdGhpcy5fc291cmNlQ29kZS5m
b3JtYXR0ZXJTb3VyY2VNYXApIHsKICAgICAgICAgICAgIHZhciBmb3JtYXR0ZWRMb2NhdGlvbiA9
IHRoaXMuX3NvdXJjZUNvZGUuZm9ybWF0dGVyU291cmNlTWFwLm9yaWdpbmFsVG9Gb3JtYXR0ZWQo
dGhpcy5fbGluZU51bWJlciwgdGhpcy5fY29sdW1uTnVtYmVyKTsKQEAgLTM5MSw5ICszNjksOSBA
QCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZUxvY2F0aW9uLnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgIHRoaXMuX2Zvcm1hdHRlZExpbmVOdW1iZXIgPSB0aGlzLl9saW5lTnVtYmVyOwogICAgICAg
ICAgICAgdGhpcy5fZm9ybWF0dGVkQ29sdW1uTnVtYmVyID0gdGhpcy5fY29sdW1uTnVtYmVyOwog
ICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfbWFrZUNoYW5nZUFuZERpc3BhdGNoQ2hh
bmdlRXZlbnRJZk5lZWRlZDogZnVuY3Rpb24oY2hhbmdlRnVuY3Rpb24pCisgICAgX21ha2VDaGFu
Z2VBbmREaXNwYXRjaENoYW5nZUV2ZW50SWZOZWVkZWQoY2hhbmdlRnVuY3Rpb24pCiAgICAgewog
ICAgICAgICB2YXIgb2xkU291cmNlQ29kZSA9IHRoaXMuX3NvdXJjZUNvZGU7CiAgICAgICAgIHZh
ciBvbGRMaW5lTnVtYmVyID0gdGhpcy5fbGluZU51bWJlcjsKQEAgLTQ0OCwxNyArNDI2LDM2IEBA
IFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlTG9jYXRpb24ucHJvdG90eXBlID0gewogICAgICAgICAg
ICAgaWYgKGFueUxvY2F0aW9uQ2hhbmdlZCkKICAgICAgICAgICAgICAgICB0aGlzLmRpc3BhdGNo
RXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuU291cmNlQ29kZUxvY2F0aW9uLkV2ZW50Lkxv
Y2F0aW9uQ2hhbmdlZCwgb2xkRGF0YSk7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAotICAg
IF9zb3VyY2VDb2RlU291cmNlTWFwQWRkZWQ6IGZ1bmN0aW9uKCkKKyAgICBfc291cmNlQ29kZVNv
dXJjZU1hcEFkZGVkKCkKICAgICB7CiAgICAgICAgIHRoaXMuX21ha2VDaGFuZ2VBbmREaXNwYXRj
aENoYW5nZUV2ZW50SWZOZWVkZWQobnVsbCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfc291cmNl
Q29kZUZvcm1hdHRlckRpZENoYW5nZTogZnVuY3Rpb24oKQorICAgIF9zb3VyY2VDb2RlRm9ybWF0
dGVyRGlkQ2hhbmdlKCkKICAgICB7CiAgICAgICAgIHRoaXMuX21ha2VDaGFuZ2VBbmREaXNwYXRj
aENoYW5nZUV2ZW50SWZOZWVkZWQobnVsbCk7CiAgICAgfQogfTsKIAotV2ViSW5zcGVjdG9yLlNv
dXJjZUNvZGVMb2NhdGlvbi5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVj
dC5wcm90b3R5cGU7CitXZWJJbnNwZWN0b3IuU291cmNlQ29kZUxvY2F0aW9uLkRpc3BsYXlMb2Nh
dGlvbkNsYXNzTmFtZSA9ICJkaXNwbGF5LWxvY2F0aW9uIjsKKworV2ViSW5zcGVjdG9yLlNvdXJj
ZUNvZGVMb2NhdGlvbi5MYXJnZUNvbHVtbk51bWJlciA9IDgwOworCitXZWJJbnNwZWN0b3IuU291
cmNlQ29kZUxvY2F0aW9uLk5hbWVTdHlsZSA9IHsKKyAgICBOb25lOiAibm9uZSIsIC8vIEZpbGUg
bmFtZSBub3QgaW5jbHVkZWQuCisgICAgU2hvcnQ6ICJzaG9ydCIsIC8vIE9ubHkgdGhlIGZpbGUg
bmFtZS4KKyAgICBGdWxsOiAiZnVsbCIgLy8gRnVsbCBVUkwgaXMgdXNlZC4KK307CisKK1dlYklu
c3BlY3Rvci5Tb3VyY2VDb2RlTG9jYXRpb24uQ29sdW1uU3R5bGUgPSB7CisgICAgSGlkZGVuOiAi
aGlkZGVuIiwgICAgICAgICAgICAgLy8gY29sdW1uIG51bWJlcnMgYXJlIG5vdCBpbmNsdWRlZC4K
KyAgICBPbmx5SWZMYXJnZTogIm9ubHktaWYtbGFyZ2UiLCAvLyBjb2x1bW4gbnVtYmVycyBncmVh
dGVyIHRoYW4gODAgYXJlIHNob3duLgorICAgIFNob3duOiAic2hvd24iICAgICAgICAgICAgICAg
IC8vIG5vbi16ZXJvIGNvbHVtbiBudW1iZXJzIGFyZSBzaG93bi4KK307CisKK1dlYkluc3BlY3Rv
ci5Tb3VyY2VDb2RlTG9jYXRpb24uRXZlbnQgPSB7CisgICAgTG9jYXRpb25DaGFuZ2VkOiAic291
cmNlLWNvZGUtbG9jYXRpb24tbG9jYXRpb24tY2hhbmdlZCIsCisgICAgRGlzcGxheUxvY2F0aW9u
Q2hhbmdlZDogInNvdXJjZS1jb2RlLWxvY2F0aW9uLWRpc3BsYXktbG9jYXRpb24tY2hhbmdlZCIK
K307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2Rl
bHMvU291cmNlQ29kZVBvc2l0aW9uLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvTW9kZWxzL1NvdXJjZUNvZGVQb3NpdGlvbi5qcwppbmRleCA3YjBhMmIwLi5mZmJhNmJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMv
U291cmNlQ29kZVBvc2l0aW9uLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL01vZGVscy9Tb3VyY2VDb2RlUG9zaXRpb24uanMKQEAgLTIzLDI4ICsyMywyNSBAQAog
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5T
b3VyY2VDb2RlUG9zaXRpb24gPSBmdW5jdGlvbihsaW5lTnVtYmVyLCBjb2x1bU51bWJlcikKK1dl
Ykluc3BlY3Rvci5Tb3VyY2VDb2RlUG9zaXRpb24gPSBjbGFzcyBTb3VyY2VDb2RlUG9zaXRpb24g
ZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5j
YWxsKHRoaXMpOworICAgIGNvbnN0cnVjdG9yKGxpbmVOdW1iZXIsIGNvbHVtTnVtYmVyKQorICAg
IHsKKyAgICAgICAgc3VwZXIoKTsKIAogICAgICAgICB0aGlzLl9saW5lTnVtYmVyID0gbGluZU51
bWJlciB8fCAwOwogICAgICAgICB0aGlzLl9jb2x1bW5OdW1iZXIgPSBjb2x1bU51bWJlciB8fCAw
OwotfTsKLQotV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVQb3NpdGlvbi5wcm90b3R5cGUgPSB7Ci0g
ICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlUG9zaXRpb24sCisgICAgfQog
CiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgbGluZU51bWJlcigpCiAgICAgewogICAgICAgICBy
ZXR1cm4gdGhpcy5fbGluZU51bWJlcjsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBjb2x1bW5O
dW1iZXIoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbHVtbk51bWJlcjsKICAgICB9
CiB9OwotCi1XZWJJbnNwZWN0b3IuU291cmNlQ29kZVBvc2l0aW9uLnByb3RvdHlwZS5fX3Byb3Rv
X18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Tb3VyY2VDb2RlUmV2aXNpb24uanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvU291cmNlQ29kZVJl
dmlzaW9uLmpzCmluZGV4IDcxMDkzM2EuLmI5NTU0OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Tb3VyY2VDb2RlUmV2aXNpb24uanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1NvdXJjZUNvZGVS
ZXZpc2lvbi5qcwpAQCAtMjMsMzAgKzIzLDI5IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVSZXZpc2lvbiA9IGZ1bmN0
aW9uKHNvdXJjZUNvZGUsIGNvbnRlbnQpCitXZWJJbnNwZWN0b3IuU291cmNlQ29kZVJldmlzaW9u
ID0gY2xhc3MgU291cmNlQ29kZVJldmlzaW9uIGV4dGVuZHMgV2ViSW5zcGVjdG9yLlJldmlzaW9u
CiB7Ci0gICAgV2ViSW5zcGVjdG9yLlJldmlzaW9uLmNhbGwodGhpcyk7CisgICAgY29uc3RydWN0
b3Ioc291cmNlQ29kZSwgY29udGVudCkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CiAKICAgICAg
ICAgY29uc29sZS5hc3NlcnQoc291cmNlQ29kZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Tb3Vy
Y2VDb2RlKTsKIAogICAgICAgICB0aGlzLl9zb3VyY2VDb2RlID0gc291cmNlQ29kZTsKICAgICAg
ICAgdGhpcy5fY29udGVudCA9IGNvbnRlbnQgfHwgIiI7Ci19OwotCi1XZWJJbnNwZWN0b3IuU291
cmNlQ29kZVJldmlzaW9uLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVj
dG9yLlNvdXJjZUNvZGVSZXZpc2lvbiwKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdl
dCBzb3VyY2VDb2RlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zb3VyY2VDb2RlOwot
ICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGNvbnRlbnQoKQogICAgIHsKICAgICAgICAgcmV0dXJu
IHRoaXMuX2NvbnRlbnQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgY29udGVudChjb250ZW50
KQogICAgIHsKQEAgLTU4LDIyICs1NywyMCBAQCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVJldmlz
aW9uLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fY29udGVudCA9IGNvbnRlbnQ7CiAKICAg
ICAgICAgdGhpcy5fc291cmNlQ29kZS5yZXZpc2lvbkNvbnRlbnREaWRDaGFuZ2UodGhpcyk7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBhcHBseTogZnVuY3Rpb24oKQorICAgIGFwcGx5KCkKICAgICB7
CiAgICAgICAgIHRoaXMuX3NvdXJjZUNvZGUuY3VycmVudFJldmlzaW9uID0gdGhpczsKLSAgICB9
LAorICAgIH0KIAotICAgIHJldmVydDogZnVuY3Rpb24oKQorICAgIHJldmVydCgpCiAgICAgewog
ICAgICAgICB0aGlzLl9zb3VyY2VDb2RlLmN1cnJlbnRSZXZpc2lvbiA9IHRoaXMuX3NvdXJjZUNv
ZGUub3JpZ2luYWxSZXZpc2lvbjsKLSAgICB9LAorICAgIH0KIAotICAgIGNvcHk6IGZ1bmN0aW9u
KCkKKyAgICBjb3B5KCkKICAgICB7CiAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlNv
dXJjZUNvZGVSZXZpc2lvbih0aGlzLl9zb3VyY2VDb2RlLCB0aGlzLl9jb250ZW50KTsKICAgICB9
CiB9OwotCi1XZWJJbnNwZWN0b3IuU291cmNlQ29kZVJldmlzaW9uLnByb3RvdHlwZS5fX3Byb3Rv
X18gPSBXZWJJbnNwZWN0b3IuUmV2aXNpb24ucHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1NvdXJjZUNvZGVTZWFyY2hNYXRj
aE9iamVjdC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9T
b3VyY2VDb2RlU2VhcmNoTWF0Y2hPYmplY3QuanMKaW5kZXggODNmNTM2Zi4uMmM0ZmE4MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1NvdXJj
ZUNvZGVTZWFyY2hNYXRjaE9iamVjdC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Nb2RlbHMvU291cmNlQ29kZVNlYXJjaE1hdGNoT2JqZWN0LmpzCkBAIC0yMyw1
MiArMjMsNDYgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1X
ZWJJbnNwZWN0b3IuU291cmNlQ29kZVNlYXJjaE1hdGNoT2JqZWN0ID0gZnVuY3Rpb24oc291cmNl
Q29kZSwgbGluZVRleHQsIHNlYXJjaFRlcm0sIHRleHRSYW5nZSkKK1dlYkluc3BlY3Rvci5Tb3Vy
Y2VDb2RlU2VhcmNoTWF0Y2hPYmplY3QgPSBjbGFzcyBTb3VyY2VDb2RlU2VhcmNoTWF0Y2hPYmpl
Y3QgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7CisgICAgY29uc3RydWN0b3Ioc291cmNl
Q29kZSwgbGluZVRleHQsIHNlYXJjaFRlcm0sIHRleHRSYW5nZSkKKyAgICB7CisgICAgICAgIHN1
cGVyKCk7CisKICAgICAgICAgY29uc29sZS5hc3NlcnQoc291cmNlQ29kZSBpbnN0YW5jZW9mIFdl
Ykluc3BlY3Rvci5Tb3VyY2VDb2RlKTsKIAotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0
aGlzKTsKLQogICAgICAgICB0aGlzLl9zb3VyY2VDb2RlID0gc291cmNlQ29kZTsKICAgICAgICAg
dGhpcy5fbGluZVRleHQgPSBsaW5lVGV4dDsKICAgICAgICAgdGhpcy5fc2VhcmNoVGVybSA9IHNl
YXJjaFRlcm07CiAgICAgICAgIHRoaXMuX3NvdXJjZUNvZGVUZXh0UmFuZ2UgPSBzb3VyY2VDb2Rl
LmNyZWF0ZVNvdXJjZUNvZGVUZXh0UmFuZ2UodGV4dFJhbmdlKTsKLX07CisgICAgfQogCi1XZWJJ
bnNwZWN0b3IuU291cmNlQ29kZVNlYXJjaE1hdGNoT2JqZWN0LlNvdXJjZUNvZGVNYXRjaEljb25T
dHlsZUNsYXNzTmFtZSA9ICJzb3VyY2UtY29kZS1tYXRjaC1pY29uIjsKLQotV2ViSW5zcGVjdG9y
LlNvdXJjZUNvZGVTZWFyY2hNYXRjaE9iamVjdC5UeXBlSWRlbnRpZmllciA9ICJzb3VyY2UtY29k
ZS1zZWFyY2gtbWF0Y2gtb2JqZWN0IjsKLVdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlU2VhcmNoTWF0
Y2hPYmplY3QuVVJMQ29va2llS2V5ID0gInNvdXJjZS1jb2RlLXVybCI7Ci1XZWJJbnNwZWN0b3Iu
U291cmNlQ29kZVNlYXJjaE1hdGNoT2JqZWN0LlRleHRSYW5nZUtleSA9ICJ0ZXh0LXJhbmdlIjsK
LQotV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVTZWFyY2hNYXRjaE9iamVjdC5wcm90b3R5cGUgPSB7
Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlU2VhcmNoTWF0Y2hPYmpl
Y3QsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZSwKKyAgICAv
LyBQdWJsaWMKIAogICAgIGdldCBzb3VyY2VDb2RlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0
aGlzLl9zb3VyY2VDb2RlOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHRpdGxlKCkKICAgICB7
CiAgICAgICAgIHJldHVybiB0aGlzLl9saW5lVGV4dDsKLSAgICB9LAorICAgIH0KIAogICAgIGdl
dCBjbGFzc05hbWUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5Tb3VyY2VD
b2RlU2VhcmNoTWF0Y2hPYmplY3QuU291cmNlQ29kZU1hdGNoSWNvblN0eWxlQ2xhc3NOYW1lOwot
ICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHNlYXJjaFRlcm0oKQogICAgIHsKICAgICAgICAgcmV0
dXJuIHRoaXMuX3NlYXJjaFRlcm07Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc291cmNlQ29k
ZVRleHRSYW5nZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc291cmNlQ29kZVRleHRS
YW5nZTsKLSAgICB9LAorICAgIH0KIAogICAgIHNhdmVJZGVudGl0eVRvQ29va2llKGNvb2tpZSkK
ICAgICB7CkBAIC03OSwzICs3Myw5IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlU2VhcmNoTWF0
Y2hPYmplY3QucHJvdG90eXBlID0gewogICAgICAgICBjb29raWVbV2ViSW5zcGVjdG9yLlNvdXJj
ZUNvZGVTZWFyY2hNYXRjaE9iamVjdC5UZXh0UmFuZ2VLZXldID0gW3RleHRSYW5nZS5zdGFydExp
bmUsIHRleHRSYW5nZS5zdGFydENvbHVtbiwgdGV4dFJhbmdlLmVuZExpbmUsIHRleHRSYW5nZS5l
bmRDb2x1bW5dLmpvaW4oKTsKICAgICB9CiB9OworCitXZWJJbnNwZWN0b3IuU291cmNlQ29kZVNl
YXJjaE1hdGNoT2JqZWN0LlNvdXJjZUNvZGVNYXRjaEljb25TdHlsZUNsYXNzTmFtZSA9ICJzb3Vy
Y2UtY29kZS1tYXRjaC1pY29uIjsKKworV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVTZWFyY2hNYXRj
aE9iamVjdC5UeXBlSWRlbnRpZmllciA9ICJzb3VyY2UtY29kZS1zZWFyY2gtbWF0Y2gtb2JqZWN0
IjsKK1dlYkluc3BlY3Rvci5Tb3VyY2VDb2RlU2VhcmNoTWF0Y2hPYmplY3QuVVJMQ29va2llS2V5
ID0gInNvdXJjZS1jb2RlLXVybCI7CitXZWJJbnNwZWN0b3IuU291cmNlQ29kZVNlYXJjaE1hdGNo
T2JqZWN0LlRleHRSYW5nZUtleSA9ICJ0ZXh0LXJhbmdlIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Tb3VyY2VDb2RlVGV4dFJhbmdlLmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1NvdXJjZUNvZGVU
ZXh0UmFuZ2UuanMKaW5kZXggNTliYjUwMy4uMjE2NzQzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1NvdXJjZUNvZGVUZXh0UmFuZ2UuanMK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1NvdXJjZUNv
ZGVUZXh0UmFuZ2UuanMKQEAgLTIzLDkgKzIzLDExIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0UmFuZ2UgPSBm
dW5jdGlvbihzb3VyY2VDb2RlKSAvKiB0ZXh0UmFuZ2UgfHwgc3RhcnRMb2NhdGlvbiwgZW5kTG9j
YXRpb24gKi8KK1dlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dFJhbmdlID0gY2xhc3MgU291cmNl
Q29kZVRleHRSYW5nZSBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIHsKLSAgICBXZWJJbnNw
ZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CisgICAgY29uc3RydWN0b3Ioc291cmNlQ29kZSkgLyog
dGV4dFJhbmdlIHx8IHN0YXJ0TG9jYXRpb24sIGVuZExvY2F0aW9uICovCisgICAgeworICAgICAg
ICBzdXBlcigpOwogCiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHNvdXJjZUNvZGUgaW5zdGFuY2Vv
ZiBXZWJJbnNwZWN0b3IuU291cmNlQ29kZSk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGFyZ3Vt
ZW50cy5sZW5ndGggPT09IDIgfHwgYXJndW1lbnRzLmxlbmd0aCA9PT0gMyk7CkBAIC00NiwyMSAr
NDgsMTQgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0UmFuZ2UgPSBmdW5jdGlvbihzb3Vy
Y2VDb2RlKSAvKiB0ZXh0UmFuZ2UgfHwgc3RhcnRMb2MKIAogICAgICAgICB0aGlzLl9zdGFydExv
Y2F0aW9uLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVMb2NhdGlvbi5F
dmVudC5Mb2NhdGlvbkNoYW5nZWQsIHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbkNoYW5nZWQsIHRo
aXMpOwogICAgICAgICB0aGlzLl9lbmRMb2NhdGlvbi5hZGRFdmVudExpc3RlbmVyKFdlYkluc3Bl
Y3Rvci5Tb3VyY2VDb2RlTG9jYXRpb24uRXZlbnQuTG9jYXRpb25DaGFuZ2VkLCB0aGlzLl9zb3Vy
Y2VDb2RlTG9jYXRpb25DaGFuZ2VkLCB0aGlzKTsKLX07Ci0KLVdlYkluc3BlY3Rvci5Tb3VyY2VD
b2RlVGV4dFJhbmdlLkV2ZW50ID0gewotICAgIFJhbmdlQ2hhbmdlZDogInNvdXJjZS1jb2RlLXRl
eHQtcmFuZ2UtcmFuZ2UtY2hhbmdlZCIKLX07Ci0KLVdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4
dFJhbmdlLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlNvdXJj
ZUNvZGVUZXh0UmFuZ2UsCisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgc291cmNl
Q29kZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc291cmNlQ29kZTsKLSAgICB9LAor
ICAgIH0KIAogICAgIC8vIFJhdyB0ZXh0IHJhbmdlIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UgY29k
ZS4KIApAQCAtNzEsNyArNjYsNyBAQCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRSYW5nZS5w
cm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBlbmRMaW5lID0gdGhpcy5fZW5kTG9jYXRpb24ubGlu
ZU51bWJlcjsKICAgICAgICAgdmFyIGVuZENvbHVtbiA9IHRoaXMuX2VuZExvY2F0aW9uLmNvbHVt
bk51bWJlcjsKICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuVGV4dFJhbmdlKHN0YXJ0
TGluZSwgc3RhcnRDb2x1bW4sIGVuZExpbmUsIGVuZENvbHVtbik7Ci0gICAgfSwKKyAgICB9CiAK
ICAgICAvLyBGb3JtYXR0ZWQgdGV4dCByYW5nZSBpbiB0aGUgb3JpZ2luYWwgc291cmNlIGNvZGUg
aWYgaXQgaXMgcHJldHR5IHByaW50ZWQuCiAgICAgLy8gVGhpcyBpcyB0aGUgc2FtZSBhcyB0aGUg
cmF3IHRleHQgcmFuZ2UgaWYgdGhlIHNvdXJjZSBjb2RlIGhhcyBubyBmb3JtYXR0ZXIuCkBAIC04
Myw3ICs3OCw3IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dFJhbmdlLnByb3RvdHlwZSA9
IHsKICAgICAgICAgdmFyIGVuZExpbmUgPSB0aGlzLl9lbmRMb2NhdGlvbi5mb3JtYXR0ZWRMaW5l
TnVtYmVyOwogICAgICAgICB2YXIgZW5kQ29sdW1uID0gdGhpcy5fZW5kTG9jYXRpb24uZm9ybWF0
dGVkQ29sdW1uTnVtYmVyOwogICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5UZXh0UmFu
Z2Uoc3RhcnRMaW5lLCBzdGFydENvbHVtbiwgZW5kTGluZSwgZW5kQ29sdW1uKTsKLSAgICB9LAor
ICAgIH0KIAogICAgIC8vIERpc3BsYXkgdmFsdWVzOgogICAgIC8vICAgLSBNYXBwZWQgcmVzb3Vy
Y2UgYW5kIHRleHQgcmFuZ2UgbG9jYXRpb25zIGlmIHRoZSBvcmlnaW5hbCBzb3VyY2UgY29kZSBo
YXMgYQpAQCAtOTYsNyArOTEsNyBAQCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRSYW5nZS5w
cm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm4gdGhpcy5fc291cmNlQ29kZTsKIAogICAg
ICAgICByZXR1cm4gdGhpcy5fc3RhcnRMb2NhdGlvbi5kaXNwbGF5U291cmNlQ29kZTsKLSAgICB9
LAorICAgIH0KIAogICAgIGdldCBkaXNwbGF5VGV4dFJhbmdlKCkKICAgICB7CkBAIC0xMDgsMTkg
KzEwMywyMSBAQCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRSYW5nZS5wcm90b3R5cGUgPSB7
CiAgICAgICAgIHZhciBlbmRMaW5lID0gdGhpcy5fZW5kTG9jYXRpb24uZGlzcGxheUxpbmVOdW1i
ZXI7CiAgICAgICAgIHZhciBlbmRDb2x1bW4gPSB0aGlzLl9lbmRMb2NhdGlvbi5kaXNwbGF5Q29s
dW1uTnVtYmVyOwogICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5UZXh0UmFuZ2Uoc3Rh
cnRMaW5lLCBzdGFydENvbHVtbiwgZW5kTGluZSwgZW5kQ29sdW1uKTsKLSAgICB9LAorICAgIH0K
IAogICAgIC8vIFByaXZhdGUKIAotICAgIF9zdGFydEFuZEVuZExvY2F0aW9uc0luU2FtZU1hcHBl
ZFJlc291cmNlOiBmdW5jdGlvbigpCisgICAgX3N0YXJ0QW5kRW5kTG9jYXRpb25zSW5TYW1lTWFw
cGVkUmVzb3VyY2UoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXJ0TG9jYXRpb24u
aGFzTWFwcGVkTG9jYXRpb24oKSAmJiB0aGlzLl9lbmRMb2NhdGlvbi5oYXNNYXBwZWRMb2NhdGlv
bigpICYmIHRoaXMuX3N0YXJ0TG9jYXRpb24uZGlzcGxheVNvdXJjZUNvZGUgPT09IHRoaXMuX2Vu
ZExvY2F0aW9uLmRpc3BsYXlTb3VyY2VDb2RlOwotICAgIH0sCisgICAgfQogCi0gICAgX3NvdXJj
ZUNvZGVMb2NhdGlvbkNoYW5nZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9zb3VyY2VDb2RlTG9j
YXRpb25DaGFuZ2VkKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9M
aXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVMb2NhdGlvbi5FdmVudC5SYW5nZUNoYW5n
ZWQpOwogICAgIH0KIH07CiAKLVdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dFJhbmdlLnByb3Rv
dHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsKK1dlYkluc3Bl
Y3Rvci5Tb3VyY2VDb2RlVGV4dFJhbmdlLkV2ZW50ID0geworICAgIFJhbmdlQ2hhbmdlZDogInNv
dXJjZS1jb2RlLXRleHQtcmFuZ2UtcmFuZ2UtY2hhbmdlZCIKK307CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvU291cmNlQ29kZVRpbWVsaW5l
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1NvdXJjZUNv
ZGVUaW1lbGluZS5qcwppbmRleCAzNDhmZjU3Li41YzdjNjRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvU291cmNlQ29kZVRpbWVsaW5lLmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Tb3VyY2VD
b2RlVGltZWxpbmUuanMKQEAgLTIzLDkgKzIzLDExIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUaW1lbGluZSA9IGZ1
bmN0aW9uKHNvdXJjZUNvZGUsIHNvdXJjZUNvZGVMb2NhdGlvbiwgcmVjb3JkVHlwZSwgcmVjb3Jk
RXZlbnRUeXBlKQorV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUaW1lbGluZSA9IGNsYXNzIFNvdXJj
ZUNvZGVUaW1lbGluZSBleHRlbmRzIFdlYkluc3BlY3Rvci5UaW1lbGluZQogewotICAgIFdlYklu
c3BlY3Rvci5UaW1lbGluZS5jYWxsKHRoaXMpOworICAgIGNvbnN0cnVjdG9yKHNvdXJjZUNvZGUs
IHNvdXJjZUNvZGVMb2NhdGlvbiwgcmVjb3JkVHlwZSwgcmVjb3JkRXZlbnRUeXBlKQorICAgIHsK
KyAgICAgICAgc3VwZXIoKTsKIAogICAgICAgICBjb25zb2xlLmFzc2VydChzb3VyY2VDb2RlKTsK
ICAgICAgICAgY29uc29sZS5hc3NlcnQoIXNvdXJjZUNvZGVMb2NhdGlvbiB8fCBzb3VyY2VDb2Rl
TG9jYXRpb24uc291cmNlQ29kZSA9PT0gc291cmNlQ29kZSk7CkBAIC0zNSw0MyArMzcsMzEgQEAg
V2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUaW1lbGluZSA9IGZ1bmN0aW9uKHNvdXJjZUNvZGUsIHNv
dXJjZUNvZGVMb2NhdGlvbiwgcmVjb3IKICAgICAgICAgdGhpcy5fc291cmNlQ29kZUxvY2F0aW9u
ID0gc291cmNlQ29kZUxvY2F0aW9uIHx8IG51bGw7CiAgICAgICAgIHRoaXMuX3JlY29yZFR5cGUg
PSByZWNvcmRUeXBlOwogICAgICAgICB0aGlzLl9yZWNvcmRFdmVudFR5cGUgPSByZWNvcmRFdmVu
dFR5cGUgfHwgbnVsbDsKLX07Ci0KLVdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGltZWxpbmUuVHlw
ZUlkZW50aWZpZXIgPSAic291cmNlLWNvZGUtdGltZWxpbmUiOwotV2ViSW5zcGVjdG9yLlNvdXJj
ZUNvZGVUaW1lbGluZS5Tb3VyY2VDb2RlVVJMQ29va2llS2V5ID0gInNvdXJjZS1jb2RlLXRpbWVs
aW5lLXNvdXJjZS1jb2RlLXVybCI7Ci1XZWJJbnNwZWN0b3IuU291cmNlQ29kZVRpbWVsaW5lLlNv
dXJjZUNvZGVMb2NhdGlvbkxpbmVDb29raWVLZXkgPSAic291cmNlLWNvZGUtdGltZWxpbmUtc291
cmNlLWNvZGUtbG9jYXRpb24tbGluZSI7Ci1XZWJJbnNwZWN0b3IuU291cmNlQ29kZVRpbWVsaW5l
LlNvdXJjZUNvZGVMb2NhdGlvbkNvbHVtbkNvb2tpZUtleSA9ICJzb3VyY2UtY29kZS10aW1lbGlu
ZS1zb3VyY2UtY29kZS1sb2NhdGlvbi1jb2x1bW4iOwotV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVU
aW1lbGluZS5Tb3VyY2VDb2RlVVJMQ29va2llS2V5ID0gInNvdXJjZS1jb2RlLXRpbWVsaW5lLXNv
dXJjZS1jb2RlLXVybCI7Ci1XZWJJbnNwZWN0b3IuU291cmNlQ29kZVRpbWVsaW5lLlJlY29yZFR5
cGVDb29raWVLZXkgPSAic291cmNlLWNvZGUtdGltZWxpbmUtcmVjb3JkLXR5cGUiOwotV2ViSW5z
cGVjdG9yLlNvdXJjZUNvZGVUaW1lbGluZS5SZWNvcmRFdmVudFR5cGVDb29raWVLZXkgPSAic291
cmNlLWNvZGUtdGltZWxpbmUtcmVjb3JkLWV2ZW50LXR5cGUiOwotCi1XZWJJbnNwZWN0b3IuU291
cmNlQ29kZVRpbWVsaW5lLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVj
dG9yLlNvdXJjZUNvZGVUaW1lbGluZSwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5UaW1l
bGluZS5wcm90b3R5cGUsCisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgc291cmNl
Q29kZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc291cmNlQ29kZTsKLSAgICB9LAor
ICAgIH0KIAogICAgIGdldCBzb3VyY2VDb2RlTG9jYXRpb24oKQogICAgIHsKICAgICAgICAgcmV0
dXJuIHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbjsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBy
ZWNvcmRUeXBlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9yZWNvcmRUeXBlOwotICAg
IH0sCisgICAgfQogCiAgICAgZ2V0IHJlY29yZEV2ZW50VHlwZSgpCiAgICAgewogICAgICAgICBy
ZXR1cm4gdGhpcy5fcmVjb3JkRXZlbnRUeXBlOwotICAgIH0sCisgICAgfQogCi0gICAgc2F2ZUlk
ZW50aXR5VG9Db29raWU6IGZ1bmN0aW9uKGNvb2tpZSkKKyAgICBzYXZlSWRlbnRpdHlUb0Nvb2tp
ZShjb29raWUpCiAgICAgewogICAgICAgICBjb29raWVbV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVU
aW1lbGluZS5Tb3VyY2VDb2RlVVJMQ29va2llS2V5XSA9IHRoaXMuX3NvdXJjZUNvZGUudXJsID8g
dGhpcy5fc291cmNlQ29kZS51cmwuaGFzaCA6IG51bGw7CiAgICAgICAgIGNvb2tpZVtXZWJJbnNw
ZWN0b3IuU291cmNlQ29kZVRpbWVsaW5lLlNvdXJjZUNvZGVMb2NhdGlvbkxpbmVDb29raWVLZXld
ID0gdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uID8gdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uLmxp
bmVOdW1iZXIgOiBudWxsOwpAQCAtODAsMyArNzAsMTEgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNv
ZGVUaW1lbGluZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIGNvb2tpZVtXZWJJbnNwZWN0b3IuU291
cmNlQ29kZVRpbWVsaW5lLlJlY29yZEV2ZW50VHlwZUNvb2tpZUtleV0gPSB0aGlzLl9yZWNvcmRF
dmVudFR5cGUgfHwgbnVsbDsKICAgICB9CiB9OworCitXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRp
bWVsaW5lLlR5cGVJZGVudGlmaWVyID0gInNvdXJjZS1jb2RlLXRpbWVsaW5lIjsKK1dlYkluc3Bl
Y3Rvci5Tb3VyY2VDb2RlVGltZWxpbmUuU291cmNlQ29kZVVSTENvb2tpZUtleSA9ICJzb3VyY2Ut
Y29kZS10aW1lbGluZS1zb3VyY2UtY29kZS11cmwiOworV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVU
aW1lbGluZS5Tb3VyY2VDb2RlTG9jYXRpb25MaW5lQ29va2llS2V5ID0gInNvdXJjZS1jb2RlLXRp
bWVsaW5lLXNvdXJjZS1jb2RlLWxvY2F0aW9uLWxpbmUiOworV2ViSW5zcGVjdG9yLlNvdXJjZUNv
ZGVUaW1lbGluZS5Tb3VyY2VDb2RlTG9jYXRpb25Db2x1bW5Db29raWVLZXkgPSAic291cmNlLWNv
ZGUtdGltZWxpbmUtc291cmNlLWNvZGUtbG9jYXRpb24tY29sdW1uIjsKK1dlYkluc3BlY3Rvci5T
b3VyY2VDb2RlVGltZWxpbmUuU291cmNlQ29kZVVSTENvb2tpZUtleSA9ICJzb3VyY2UtY29kZS10
aW1lbGluZS1zb3VyY2UtY29kZS11cmwiOworV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUaW1lbGlu
ZS5SZWNvcmRUeXBlQ29va2llS2V5ID0gInNvdXJjZS1jb2RlLXRpbWVsaW5lLXJlY29yZC10eXBl
IjsKK1dlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGltZWxpbmUuUmVjb3JkRXZlbnRUeXBlQ29va2ll
S2V5ID0gInNvdXJjZS1jb2RlLXRpbWVsaW5lLXJlY29yZC1ldmVudC10eXBlIjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Tb3VyY2VNYXAu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvU291cmNlTWFw
LmpzCmluZGV4IDFhNzYyMjguLjk1MzQ3ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Tb3VyY2VNYXAuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1NvdXJjZU1hcC5qcwpAQCAtMjMsMTMgKzIz
LDE3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5z
cGVjdG9yLlNvdXJjZU1hcCA9IGZ1bmN0aW9uKHNvdXJjZU1hcHBpbmdVUkwsIHBheWxvYWQsIG9y
aWdpbmFsU291cmNlQ29kZSkKK1dlYkluc3BlY3Rvci5Tb3VyY2VNYXAgPSBjbGFzcyBTb3VyY2VN
YXAgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0gICAgaWYgKCFXZWJJbnNwZWN0b3Iu
U291cmNlTWFwLnByb3RvdHlwZS5fYmFzZTY0TWFwKSB7Ci0gICAgICAgIGNvbnN0IGJhc2U2NERp
Z2l0cyA9ICJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3
eHl6MDEyMzQ1Njc4OSsvIjsKLSAgICAgICAgV2ViSW5zcGVjdG9yLlNvdXJjZU1hcC5wcm90b3R5
cGUuX2Jhc2U2NE1hcCA9IHt9OworICAgIGNvbnN0cnVjdG9yKHNvdXJjZU1hcHBpbmdVUkwsIHBh
eWxvYWQsIG9yaWdpbmFsU291cmNlQ29kZSkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CisKKyAg
ICAgICAgaWYgKCFXZWJJbnNwZWN0b3IuU291cmNlTWFwLl9iYXNlNjRNYXApIHsKKyAgICAgICAg
ICAgIHZhciBiYXNlNjREaWdpdHMgPSAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZn
aGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyI7CisgICAgICAgICAgICBXZWJJbnNwZWN0
b3IuU291cmNlTWFwLl9iYXNlNjRNYXAgPSB7fTsKICAgICAgICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgYmFzZTY0RGlnaXRzLmxlbmd0aDsgKytpKQotICAgICAgICAgICAgV2ViSW5zcGVjdG9y
LlNvdXJjZU1hcC5wcm90b3R5cGUuX2Jhc2U2NE1hcFtiYXNlNjREaWdpdHMuY2hhckF0KGkpXSA9
IGk7CisgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLlNvdXJjZU1hcC5fYmFzZTY0TWFwW2Jh
c2U2NERpZ2l0cy5jaGFyQXQoaSldID0gaTsKICAgICAgICAgfQogCiAgICAgICAgIHRoaXMuX29y
aWdpbmFsU291cmNlQ29kZSA9IG9yaWdpbmFsU291cmNlQ29kZSB8fCBudWxsOwpAQCAtNDMsMTQg
KzQ3LDE0IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VNYXAgPSBmdW5jdGlvbihzb3VyY2VNYXBwaW5n
VVJMLCBwYXlsb2FkLCBvcmlnaW5hbFNvdXJjZUNvZGUpCiAgICAgICAgIHRoaXMuX3NvdXJjZVJv
b3QgPSBudWxsOwogICAgICAgICB0aGlzLl9zb3VyY2VDb250ZW50QnlVUkwgPSB7fTsKICAgICAg
ICAgdGhpcy5fcGFyc2VNYXBwaW5nUGF5bG9hZChwYXlsb2FkKTsKLX07CisgICAgfQogCi1XZWJJ
bnNwZWN0b3IuU291cmNlTWFwLnByb3RvdHlwZSA9IHsKKyAgICAvLyBQdWJsaWMKIAogICAgIGdl
dCBvcmlnaW5hbFNvdXJjZUNvZGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX29yaWdp
bmFsU291cmNlQ29kZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzb3VyY2VNYXBwaW5nQmFz
ZVBhdGhVUkxDb21wb25lbnRzKCkKICAgICB7CkBAIC03NCw1MiArNzgsNTIgQEAgV2ViSW5zcGVj
dG9yLlNvdXJjZU1hcC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHVybENvbXBvbmVudHMubGFzdFBh
dGhDb21wb25lbnQgPSBudWxsOwogICAgICAgICB0aGlzLl9zb3VyY2VNYXBwaW5nVVJMQmFzZVBh
dGhDb21wb25lbnRzID0gdXJsQ29tcG9uZW50czsKICAgICAgICAgcmV0dXJuIHRoaXMuX3NvdXJj
ZU1hcHBpbmdVUkxCYXNlUGF0aENvbXBvbmVudHM7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQg
cmVzb3VyY2VzKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zb3VyY2VNYXBSZXNvdXJj
ZXNMaXN0OwotICAgIH0sCisgICAgfQogCi0gICAgYWRkUmVzb3VyY2U6IGZ1bmN0aW9uKHJlc291
cmNlKQorICAgIGFkZFJlc291cmNlKHJlc291cmNlKQogICAgIHsKICAgICAgICAgY29uc29sZS5h
c3NlcnQoIShyZXNvdXJjZS51cmwgaW4gdGhpcy5fc291cmNlTWFwUmVzb3VyY2VzKSk7CiAgICAg
ICAgIHRoaXMuX3NvdXJjZU1hcFJlc291cmNlc1tyZXNvdXJjZS51cmxdID0gcmVzb3VyY2U7CiAg
ICAgICAgIHRoaXMuX3NvdXJjZU1hcFJlc291cmNlc0xpc3QucHVzaChyZXNvdXJjZSk7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICByZXNvdXJjZUZvclVSTDogZnVuY3Rpb24odXJsKQorICAgIHJlc291
cmNlRm9yVVJMKHVybCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zb3VyY2VNYXBSZXNv
dXJjZXNbdXJsXTsKLSAgICB9LAorICAgIH0KIAotICAgIHNvdXJjZXM6IGZ1bmN0aW9uKCkKKyAg
ICBzb3VyY2VzKCkKICAgICB7CiAgICAgICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLl9zb3Vy
Y2VzKTsKLSAgICB9LAorICAgIH0KIAotICAgIHNvdXJjZUNvbnRlbnQ6IGZ1bmN0aW9uKHNvdXJj
ZVVSTCkKKyAgICBzb3VyY2VDb250ZW50KHNvdXJjZVVSTCkKICAgICB7CiAgICAgICAgIHJldHVy
biB0aGlzLl9zb3VyY2VDb250ZW50QnlVUkxbc291cmNlVVJMXTsKLSAgICB9LAorICAgIH0KIAot
ICAgIF9wYXJzZU1hcHBpbmdQYXlsb2FkOiBmdW5jdGlvbihtYXBwaW5nUGF5bG9hZCkKKyAgICBf
cGFyc2VNYXBwaW5nUGF5bG9hZChtYXBwaW5nUGF5bG9hZCkKICAgICB7CiAgICAgICAgIGlmICht
YXBwaW5nUGF5bG9hZC5zZWN0aW9ucykKICAgICAgICAgICAgIHRoaXMuX3BhcnNlU2VjdGlvbnMo
bWFwcGluZ1BheWxvYWQuc2VjdGlvbnMpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICB0aGlz
Ll9wYXJzZU1hcChtYXBwaW5nUGF5bG9hZCwgMCwgMCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBf
cGFyc2VTZWN0aW9uczogZnVuY3Rpb24oc2VjdGlvbnMpCisgICAgX3BhcnNlU2VjdGlvbnMoc2Vj
dGlvbnMpCiAgICAgewogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNlY3Rpb25zLmxlbmd0
aDsgKytpKSB7CiAgICAgICAgICAgICB2YXIgc2VjdGlvbiA9IHNlY3Rpb25zW2ldOwogICAgICAg
ICAgICAgdGhpcy5fcGFyc2VNYXAoc2VjdGlvbi5tYXAsIHNlY3Rpb24ub2Zmc2V0LmxpbmUsIHNl
Y3Rpb24ub2Zmc2V0LmNvbHVtbik7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAotICAgIGZp
bmRFbnRyeTogZnVuY3Rpb24obGluZU51bWJlciwgY29sdW1uTnVtYmVyKQorICAgIGZpbmRFbnRy
eShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgewogICAgICAgICB2YXIgZmlyc3QgPSAw
OwogICAgICAgICB2YXIgY291bnQgPSB0aGlzLl9tYXBwaW5ncy5sZW5ndGg7CkBAIC0xMzgsOSAr
MTQyLDkgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZU1hcC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlm
ICghZmlyc3QgJiYgZW50cnkgJiYgKGxpbmVOdW1iZXIgPCBlbnRyeVswXSB8fCAobGluZU51bWJl
ciA9PT0gZW50cnlbMF0gJiYgY29sdW1uTnVtYmVyIDwgZW50cnlbMV0pKSkKICAgICAgICAgICAg
IHJldHVybiBudWxsOwogICAgICAgICByZXR1cm4gZW50cnk7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBmaW5kRW50cnlSZXZlcnNlZDogZnVuY3Rpb24oc291cmNlVVJMLCBsaW5lTnVtYmVyKQorICAg
IGZpbmRFbnRyeVJldmVyc2VkKHNvdXJjZVVSTCwgbGluZU51bWJlcikKICAgICB7CiAgICAgICAg
IHZhciBtYXBwaW5ncyA9IHRoaXMuX3JldmVyc2VNYXBwaW5nc0J5U291cmNlVVJMW3NvdXJjZVVS
TF07CiAgICAgICAgIGZvciAoIDsgbGluZU51bWJlciA8IG1hcHBpbmdzLmxlbmd0aDsgKytsaW5l
TnVtYmVyKSB7CkBAIC0xNDksOSArMTUzLDkgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZU1hcC5wcm90
b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIG1hcHBpbmc7CiAgICAgICAgIH0KICAg
ICAgICAgcmV0dXJuIHRoaXMuX21hcHBpbmdzWzBdOwotICAgIH0sCisgICAgfQogCi0gICAgX3Bh
cnNlTWFwOiBmdW5jdGlvbihtYXAsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKKyAgICBfcGFy
c2VNYXAobWFwLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgewogICAgICAgICB2YXIg
c291cmNlSW5kZXggPSAwOwogICAgICAgICB2YXIgc291cmNlTGluZU51bWJlciA9IDA7CkBAIC0y
MjMsNTMgKzIyNyw1NCBAQCBXZWJJbnNwZWN0b3IuU291cmNlTWFwLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgIGlmICghcmV2ZXJzZU1hcHBpbmdzW3NvdXJjZUxpbmVdKQogICAgICAgICAgICAg
ICAgIHJldmVyc2VNYXBwaW5nc1tzb3VyY2VMaW5lXSA9IFttYXBwaW5nWzBdLCBtYXBwaW5nWzFd
XTsKICAgICAgICAgfQotICAgIH0sCisgICAgfQogCi0gICAgX2lzU2VwYXJhdG9yOiBmdW5jdGlv
bihjaGFyKQorICAgIF9pc1NlcGFyYXRvcihjaGFyKQogICAgIHsKICAgICAgICAgcmV0dXJuIGNo
YXIgPT09ICIsIiB8fCBjaGFyID09PSAiOyI7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZGVjb2Rl
VkxROiBmdW5jdGlvbihzdHJpbmdDaGFySXRlcmF0b3IpCisgICAgX2RlY29kZVZMUShzdHJpbmdD
aGFySXRlcmF0b3IpCiAgICAgewogICAgICAgICAvLyBSZWFkIHVuc2lnbmVkIHZhbHVlLgogICAg
ICAgICB2YXIgcmVzdWx0ID0gMDsKICAgICAgICAgdmFyIHNoaWZ0ID0gMDsKICAgICAgICAgZG8g
ewotICAgICAgICAgICAgdmFyIGRpZ2l0ID0gdGhpcy5fYmFzZTY0TWFwW3N0cmluZ0NoYXJJdGVy
YXRvci5uZXh0KCldOwotICAgICAgICAgICAgcmVzdWx0ICs9IChkaWdpdCAmIHRoaXMuX1ZMUV9C
QVNFX01BU0spIDw8IHNoaWZ0OwotICAgICAgICAgICAgc2hpZnQgKz0gdGhpcy5fVkxRX0JBU0Vf
U0hJRlQ7Ci0gICAgICAgIH0gd2hpbGUgKGRpZ2l0ICYgdGhpcy5fVkxRX0NPTlRJTlVBVElPTl9N
QVNLKTsKKyAgICAgICAgICAgIHZhciBkaWdpdCA9IFdlYkluc3BlY3Rvci5Tb3VyY2VNYXAuX2Jh
c2U2NE1hcFtzdHJpbmdDaGFySXRlcmF0b3IubmV4dCgpXTsKKyAgICAgICAgICAgIHJlc3VsdCAr
PSAoZGlnaXQgJiBXZWJJbnNwZWN0b3IuU291cmNlTWFwLlZMUV9CQVNFX01BU0spIDw8IHNoaWZ0
OworICAgICAgICAgICAgc2hpZnQgKz0gV2ViSW5zcGVjdG9yLlNvdXJjZU1hcC5WTFFfQkFTRV9T
SElGVDsKKyAgICAgICAgfSB3aGlsZSAoZGlnaXQgJiBXZWJJbnNwZWN0b3IuU291cmNlTWFwLlZM
UV9DT05USU5VQVRJT05fTUFTSyk7CiAKICAgICAgICAgLy8gRml4IHRoZSBzaWduLgogICAgICAg
ICB2YXIgbmVnYXRpdmUgPSByZXN1bHQgJiAxOwogICAgICAgICByZXN1bHQgPj49IDE7CiAgICAg
ICAgIHJldHVybiBuZWdhdGl2ZSA/IC1yZXN1bHQgOiByZXN1bHQ7Ci0gICAgfSwKLQotICAgIF9W
TFFfQkFTRV9TSElGVDogNSwKLSAgICBfVkxRX0JBU0VfTUFTSzogKDEgPDwgNSkgLSAxLAotICAg
IF9WTFFfQ09OVElOVUFUSU9OX01BU0s6IDEgPDwgNQorICAgIH0KIH07CiAKLVdlYkluc3BlY3Rv
ci5Tb3VyY2VNYXAuU3RyaW5nQ2hhckl0ZXJhdG9yID0gZnVuY3Rpb24oc3RyaW5nKQorV2ViSW5z
cGVjdG9yLlNvdXJjZU1hcC5WTFFfQkFTRV9TSElGVCA9IDU7CitXZWJJbnNwZWN0b3IuU291cmNl
TWFwLlZMUV9CQVNFX01BU0sgPSAoMSA8PCA1KSAtIDE7CitXZWJJbnNwZWN0b3IuU291cmNlTWFw
LlZMUV9DT05USU5VQVRJT05fTUFTSyA9IDEgPDwgNTsKKworV2ViSW5zcGVjdG9yLlNvdXJjZU1h
cC5TdHJpbmdDaGFySXRlcmF0b3IgPSBjbGFzcyBTdHJpbmdDaGFySXRlcmF0b3IKK3sKKyAgICBj
b25zdHJ1Y3RvcihzdHJpbmcpCiAgICAgewogICAgICAgICB0aGlzLl9zdHJpbmcgPSBzdHJpbmc7
CiAgICAgICAgIHRoaXMuX3Bvc2l0aW9uID0gMDsKLX07CisgICAgfQogCi1XZWJJbnNwZWN0b3Iu
U291cmNlTWFwLlN0cmluZ0NoYXJJdGVyYXRvci5wcm90b3R5cGUgPSB7Ci0gICAgbmV4dDogZnVu
Y3Rpb24oKQorICAgIG5leHQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3N0cmluZy5j
aGFyQXQodGhpcy5fcG9zaXRpb24rKyk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBwZWVrOiBmdW5j
dGlvbigpCisgICAgcGVlaygpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc3RyaW5nLmNo
YXJBdCh0aGlzLl9wb3NpdGlvbik7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBoYXNOZXh0OiBmdW5j
dGlvbigpCisgICAgaGFzTmV4dCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcG9zaXRp
b24gPCB0aGlzLl9zdHJpbmcubGVuZ3RoOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Tb3VyY2VNYXBSZXNvdXJjZS5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Tb3VyY2VNYXBSZXNvdXJj
ZS5qcwppbmRleCAzMDhhNjQxLi4zNDA3NzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvU291cmNlTWFwUmVzb3VyY2UuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1NvdXJjZU1hcFJlc291cmNl
LmpzCkBAIC0yMyw5ICsyMywxMSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKLVdlYkluc3BlY3Rvci5Tb3VyY2VNYXBSZXNvdXJjZSA9IGZ1bmN0aW9uKHVybCwg
c291cmNlTWFwKQorV2ViSW5zcGVjdG9yLlNvdXJjZU1hcFJlc291cmNlID0gY2xhc3MgU291cmNl
TWFwUmVzb3VyY2UgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuUmVzb3VyY2UKIHsKLSAgICBXZWJJbnNw
ZWN0b3IuUmVzb3VyY2UuY2FsbCh0aGlzLCB1cmwsIG51bGwpOworICAgIGNvbnN0cnVjdG9yKHVy
bCwgc291cmNlTWFwKQorICAgIHsKKyAgICAgICAgc3VwZXIodXJsLCBudWxsKTsKIAogICAgICAg
ICBjb25zb2xlLmFzc2VydCh1cmwpOwogICAgICAgICBjb25zb2xlLmFzc2VydChzb3VyY2VNYXAp
OwpAQCAtNDUsMTggKzQ3LDE0IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VNYXBSZXNvdXJjZSA9IGZ1
bmN0aW9uKHVybCwgc291cmNlTWFwKQogICAgICAgICAvLyBNYXJrIHRoZSByZXNvdXJjZSBhcyBs
b2FkZWQgc28gaXQgZG9lcyBub3Qgc2hvdyBhIHNwaW5uZXIgaW4gdGhlIHNpZGViYXIuCiAgICAg
ICAgIC8vIFdlIHdpbGwgcmVhbGx5IGxvYWQgdGhlIHJlc291cmNlIHRoZSBmaXJzdCB0aW1lIGNv
bnRlbnQgaXMgcmVxdWVzdGVkLgogICAgICAgICB0aGlzLm1hcmtBc0ZpbmlzaGVkKCk7Ci19Owot
Ci1XZWJJbnNwZWN0b3IuU291cmNlTWFwUmVzb3VyY2UucHJvdG90eXBlID0gewotICAgIGNvbnN0
cnVjdG9yOiBXZWJJbnNwZWN0b3IuU291cmNlTWFwUmVzb3VyY2UsCi0gICAgX19wcm90b19fOiBX
ZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlLAorICAgIH0KIAogICAgIC8vIFB1YmxpYwog
CiAgICAgZ2V0IHNvdXJjZU1hcCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc291cmNl
TWFwOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHNvdXJjZU1hcERpc3BsYXlTdWJwYXRoKCkK
ICAgICB7CkBAIC03Myw5ICs3MSw5IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VNYXBSZXNvdXJjZS5w
cm90b3R5cGUgPSB7CiAKICAgICAgICAgLy8gU2FtZSBob3N0LiBKdXN0IGEgc3VicGF0aCBvZiB0
aGUgYmFzZS4KICAgICAgICAgcmV0dXJuIHJlc291cmNlVVJMQ29tcG9uZW50cy5wYXRoLnN1YnN0
cmluZyhzb3VyY2VNYXBwaW5nQmFzZVBhdGhVUkxDb21wb25lbnRzLnBhdGgubGVuZ3RoLCByZXNv
dXJjZVVSTENvbXBvbmVudHMubGVuZ3RoKTsKLSAgICB9LAorICAgIH0KIAotICAgIHJlcXVlc3RD
b250ZW50RnJvbUJhY2tlbmQ6IGZ1bmN0aW9uKGNhbGxiYWNrKQorICAgIHJlcXVlc3RDb250ZW50
RnJvbUJhY2tlbmQoY2FsbGJhY2spCiAgICAgewogICAgICAgICAvLyBSZXZlcnQgdGhlIG1hcmtB
c0ZpbmlzaGVkIHRoYXQgd2FzIGRvbmUgaW4gdGhlIGNvbnN0cnVjdG9yLgogICAgICAgICB0aGlz
LnJldmVydE1hcmtBc0ZpbmlzaGVkKCk7CkBAIC0xMTEsNyArMTA5LDcgQEAgV2ViSW5zcGVjdG9y
LlNvdXJjZU1hcFJlc291cmNlLnByb3RvdHlwZSA9IHsKICAgICAgICAgewogICAgICAgICAgICAg
dmFyIHtlcnJvciwgY29udGVudCwgbWltZVR5cGUsIHN0YXR1c0NvZGV9ID0gcGFyYW1ldGVyczsK
IAotICAgICAgICAgICAgY29uc3QgYmFzZTY0ZW5jb2RlZCA9IGZhbHNlOworICAgICAgICAgICAg
dmFyIGJhc2U2NGVuY29kZWQgPSBmYWxzZTsKIAogICAgICAgICAgICAgaWYgKHN0YXR1c0NvZGUg
Pj0gNDAwIHx8IGVycm9yKQogICAgICAgICAgICAgICAgIHJldHVybiBzb3VyY2VNYXBSZXNvdXJj
ZU5vdEF2YWlsYWJsZShlcnJvciwgY29udGVudCwgbWltZVR5cGUsIHN0YXR1c0NvZGUpOwpAQCAt
MTQwLDkgKzEzOCw5IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VNYXBSZXNvdXJjZS5wcm90b3R5cGUg
PSB7CiAgICAgICAgICAgICBmcmFtZUlkZW50aWZpZXIgPSBXZWJJbnNwZWN0b3IuZnJhbWVSZXNv
dXJjZU1hbmFnZXIubWFpbkZyYW1lLmlkOwogCiAgICAgICAgIHJldHVybiBOZXR3b3JrQWdlbnQu
bG9hZFJlc291cmNlLnByb21pc2UoZnJhbWVJZGVudGlmaWVyLCB0aGlzLnVybCkudGhlbihzb3Vy
Y2VNYXBSZXNvdXJjZUxvYWRlZC5iaW5kKHRoaXMpKS5jYXRjaChzb3VyY2VNYXBSZXNvdXJjZUxv
YWRFcnJvci5iaW5kKHRoaXMpKTsKLSAgICB9LAorICAgIH0KIAotICAgIGNyZWF0ZVNvdXJjZUNv
ZGVMb2NhdGlvbjogZnVuY3Rpb24obGluZU51bWJlciwgY29sdW1uTnVtYmVyKQorICAgIGNyZWF0
ZVNvdXJjZUNvZGVMb2NhdGlvbihsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgewogICAg
ICAgICAvLyBTb3VyY2VDb2RlTG9jYXRpb25zIGFyZSBhbHdheXMgY29uc3RydWN0ZWQgd2l0aCBy
YXcgcmVzb3VyY2VzIGFuZCByYXcgbG9jYXRpb25zLiBMb29rdXAgdGhlIHJhdyBsb2NhdGlvbi4K
ICAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy5fc291cmNlTWFwLmZpbmRFbnRyeVJldmVyc2VkKHRo
aXMudXJsLCBsaW5lTnVtYmVyKTsKQEAgLTE2MSw5ICsxNTksOSBAQCBXZWJJbnNwZWN0b3IuU291
cmNlTWFwUmVzb3VyY2UucHJvdG90eXBlID0gewogICAgICAgICB2YXIgbG9jYXRpb24gPSBvcmln
aW5hbFNvdXJjZUNvZGUuY3JlYXRlU291cmNlQ29kZUxvY2F0aW9uKHJhd0xpbmVOdW1iZXIsIHJh
d0NvbHVtbk51bWJlcik7CiAgICAgICAgIGxvY2F0aW9uLl9zZXRNYXBwZWRMb2NhdGlvbih0aGlz
LCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpOwogICAgICAgICByZXR1cm4gbG9jYXRpb247Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBjcmVhdGVTb3VyY2VDb2RlVGV4dFJhbmdlOiBmdW5jdGlvbih0
ZXh0UmFuZ2UpCisgICAgY3JlYXRlU291cmNlQ29kZVRleHRSYW5nZSh0ZXh0UmFuZ2UpCiAgICAg
ewogICAgICAgICAvLyBTb3VyY2VDb2RlVGV4dFJhbmdlcyBhcmUgYWx3YXlzIGNvbnN0cnVjdGVk
IHdpdGggcmF3IHJlc291cmNlcyBhbmQgcmF3IGxvY2F0aW9ucy4KICAgICAgICAgLy8gSG93ZXZl
ciwgd2UgY2FuIHByb3ZpZGUgdGhlIG1vc3QgYWNjdXJhdGUgbWFwcGVkIGxvY2F0aW9ucyBpbiBj
b25zdHJ1Y3Rpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Nb2RlbHMvVGV4dE1hcmtlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL01vZGVscy9UZXh0TWFya2VyLmpzCmluZGV4IDg5YjNlY2EuLmQ1ZjM4MmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9UZXh0TWFy
a2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9U
ZXh0TWFya2VyLmpzCkBAIC0yMyw0MiArMjMsMzYgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuVGV4dE1hcmtlciA9IGZ1bmN0aW9uKGNv
ZGVNaXJyb3JUZXh0TWFya2VyLCB0eXBlKQorV2ViSW5zcGVjdG9yLlRleHRNYXJrZXIgPSBjbGFz
cyBUZXh0TWFya2VyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogewotICAgIFdlYkluc3Bl
Y3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICBjb25zdHJ1Y3Rvcihjb2RlTWlycm9yVGV4dE1h
cmtlciwgdHlwZSkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CiAKICAgICAgICAgdGhpcy5fY29k
ZU1pcnJvclRleHRNYXJrZXIgPSBjb2RlTWlycm9yVGV4dE1hcmtlcjsKICAgICAgICAgY29kZU1p
cnJvclRleHRNYXJrZXIuX193ZWJJbnNwZWN0b3JUZXh0TWFya2VyID0gdGhpczsKIAogICAgICAg
ICB0aGlzLl90eXBlID0gdHlwZSB8fCBXZWJJbnNwZWN0b3IuVGV4dE1hcmtlci5UeXBlLlBsYWlu
OwotfTsKKyAgICB9CiAKLVdlYkluc3BlY3Rvci5UZXh0TWFya2VyLlR5cGUgPSB7Ci0gICAgQ29s
b3I6ICJ0ZXh0LW1hcmtlci10eXBlLWNvbG9yIiwKLSAgICBHcmFkaWVudDogInRleHQtbWFya2Vy
LXR5cGUtZ3JhZGllbnQiLAotICAgIFBsYWluOiAidGV4dC1tYXJrZXItdHlwZS1wbGFpbiIKLX07
CisgICAgLy8gU3RhdGljCiAKLVdlYkluc3BlY3Rvci5UZXh0TWFya2VyLnRleHRNYXJrZXJGb3JD
b2RlTWlycm9yVGV4dE1hcmtlciA9IGZ1bmN0aW9uKGNvZGVNaXJyb3JUZXh0TWFya2VyKQorICAg
IHN0YXRpYyB0ZXh0TWFya2VyRm9yQ29kZU1pcnJvclRleHRNYXJrZXIoY29kZU1pcnJvclRleHRN
YXJrZXIpCiAgICAgewogICAgICAgICByZXR1cm4gY29kZU1pcnJvclRleHRNYXJrZXIuX193ZWJJ
bnNwZWN0b3JUZXh0TWFya2VyIHx8IG5ldyBXZWJJbnNwZWN0b3IuVGV4dE1hcmtlcihjb2RlTWly
cm9yVGV4dE1hcmtlcik7Ci19OwotCi1XZWJJbnNwZWN0b3IuVGV4dE1hcmtlci5wcm90b3R5cGUg
PSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5UZXh0TWFya2VyLAotICAgIF9fcHJv
dG9fXzogV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGUsCisgICAgfQogCiAgICAgLy8gUHVi
bGljCiAKICAgICBnZXQgY29kZU1pcnJvclRleHRNYXJrZXIoKQogICAgIHsKICAgICAgICAgcmV0
dXJuIHRoaXMuX2NvZGVNaXJyb3JUZXh0TWFya2VyOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0
IHR5cGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3R5cGU7Ci0gICAgfSwKKyAgICB9
CiAKICAgICBnZXQgcmFuZ2UoKQogICAgIHsKQEAgLTY2LDcgKzYwLDcgQEAgV2ViSW5zcGVjdG9y
LlRleHRNYXJrZXIucHJvdG90eXBlID0gewogICAgICAgICBpZiAoIXJhbmdlKQogICAgICAgICAg
ICAgcmV0dXJuIG51bGw7CiAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlRleHRSYW5n
ZShyYW5nZS5mcm9tLmxpbmUsIHJhbmdlLmZyb20uY2gsIHJhbmdlLnRvLmxpbmUsIHJhbmdlLnRv
LmNoKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCByZWN0cygpCiAgICAgewpAQCAtNzcsMTAg
KzcxLDE2IEBAIFdlYkluc3BlY3Rvci5UZXh0TWFya2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgIHN0YXJ0OiByYW5nZS5mcm9tLAogICAgICAgICAgICAgZW5kOiByYW5nZS50bwogICAgICAg
ICB9KTsKLSAgICB9LAorICAgIH0KIAotICAgIGNsZWFyOiBmdW5jdGlvbigpCisgICAgY2xlYXIo
KQogICAgIHsKICAgICAgICAgdGhpcy5fY29kZU1pcnJvclRleHRNYXJrZXIuY2xlYXIoKTsKICAg
ICB9CiB9OworCitXZWJJbnNwZWN0b3IuVGV4dE1hcmtlci5UeXBlID0geworICAgIENvbG9yOiAi
dGV4dC1tYXJrZXItdHlwZS1jb2xvciIsCisgICAgR3JhZGllbnQ6ICJ0ZXh0LW1hcmtlci10eXBl
LWdyYWRpZW50IiwKKyAgICBQbGFpbjogInRleHQtbWFya2VyLXR5cGUtcGxhaW4iCit9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1RleHRS
YW5nZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9UZXh0
UmFuZ2UuanMKaW5kZXggMWZiMWQzZC4uYWRlZTMzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1RleHRSYW5nZS5qcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvVGV4dFJhbmdlLmpzCkBAIC0yMyw5
ICsyMywxMSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdl
Ykluc3BlY3Rvci5UZXh0UmFuZ2UgPSBmdW5jdGlvbihzdGFydExpbmVPclN0YXJ0T2Zmc2V0LCBz
dGFydENvbHVtbk9yRW5kT2Zmc2V0LCBlbmRMaW5lLCBlbmRDb2x1bW4pCitXZWJJbnNwZWN0b3Iu
VGV4dFJhbmdlID0gY2xhc3MgVGV4dFJhbmdlIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAog
ewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICBjb25zdHJ1Y3Rvcihz
dGFydExpbmVPclN0YXJ0T2Zmc2V0LCBzdGFydENvbHVtbk9yRW5kT2Zmc2V0LCBlbmRMaW5lLCBl
bmRDb2x1bW4pCisgICAgeworICAgICAgICBzdXBlcigpOwogCiAgICAgICAgIGlmIChhcmd1bWVu
dHMubGVuZ3RoID09PSA0KSB7CiAgICAgICAgICAgICBjb25zb2xlLmFzc2VydChzdGFydExpbmVP
clN0YXJ0T2Zmc2V0IDw9IGVuZExpbmUpOwpAQCAtNDksNTQgKzUxLDUxIEBAIFdlYkluc3BlY3Rv
ci5UZXh0UmFuZ2UgPSBmdW5jdGlvbihzdGFydExpbmVPclN0YXJ0T2Zmc2V0LCBzdGFydENvbHVt
bk9yRW5kT2Zmc2V0CiAgICAgICAgICAgICB0aGlzLl9lbmRMaW5lID0gTmFOOwogICAgICAgICAg
ICAgdGhpcy5fZW5kQ29sdW1uID0gTmFOOwogICAgICAgICB9Ci19OwotCi1XZWJJbnNwZWN0b3Iu
VGV4dFJhbmdlLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlRl
eHRSYW5nZSwKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBzdGFydExpbmUoKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXJ0TGluZTsKLSAgICB9LAorICAgIH0KIAog
ICAgIGdldCBzdGFydENvbHVtbigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc3RhcnRD
b2x1bW47Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgZW5kTGluZSgpCiAgICAgewogICAgICAg
ICByZXR1cm4gdGhpcy5fZW5kTGluZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBlbmRDb2x1
bW4oKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2VuZENvbHVtbjsKLSAgICB9LAorICAg
IH0KIAogICAgIGdldCBzdGFydE9mZnNldCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5f
c3RhcnRPZmZzZXQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgZW5kT2Zmc2V0KCkKICAgICB7
CiAgICAgICAgIHJldHVybiB0aGlzLl9lbmRPZmZzZXQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBz
dGFydFBvc2l0aW9uOiBmdW5jdGlvbigpCisgICAgc3RhcnRQb3NpdGlvbigpCiAgICAgewogICAg
ICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlUG9zaXRpb24odGhpcy5fc3Rh
cnRMaW5lLCB0aGlzLl9zdGFydENvbHVtbik7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBlbmRQb3Np
dGlvbjogZnVuY3Rpb24oKQorICAgIGVuZFBvc2l0aW9uKCkKICAgICB7CiAgICAgICAgIHJldHVy
biBuZXcgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVQb3NpdGlvbih0aGlzLl9lbmRMaW5lLCB0aGlz
Ll9lbmRDb2x1bW4pOwotICAgIH0sCisgICAgfQogCi0gICAgcmVzb2x2ZUxpbmVzQW5kQ29sdW1u
czogZnVuY3Rpb24odGV4dCkKKyAgICByZXNvbHZlTGluZXNBbmRDb2x1bW5zKHRleHQpCiAgICAg
ewogICAgICAgICBjb25zb2xlLmFzc2VydCh0eXBlb2YgdGV4dCA9PT0gInN0cmluZyIpOwogICAg
ICAgICBpZiAodHlwZW9mIHRleHQgIT09ICJzdHJpbmciKQpAQCAtMTMwLDkgKzEyOSw5IEBAIFdl
Ykluc3BlY3Rvci5UZXh0UmFuZ2UucHJvdG90eXBlID0gewogCiAgICAgICAgIGlmICh0aGlzLl9z
dGFydExpbmUgPT09IHRoaXMuX2VuZExpbmUpCiAgICAgICAgICAgICB0aGlzLl9lbmRDb2x1bW4g
Kz0gdGhpcy5fc3RhcnRDb2x1bW47Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZXNvbHZlT2Zmc2V0
czogZnVuY3Rpb24odGV4dCkKKyAgICByZXNvbHZlT2Zmc2V0cyh0ZXh0KQogICAgIHsKICAgICAg
ICAgY29uc29sZS5hc3NlcnQodHlwZW9mIHRleHQgPT09ICJzdHJpbmciKTsKICAgICAgICAgaWYg
KHR5cGVvZiB0ZXh0ICE9PSAic3RyaW5nIikKQEAgLTE1Nyw1ICsxNTYsMyBAQCBXZWJJbnNwZWN0
b3IuVGV4dFJhbmdlLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fZW5kT2Zmc2V0ID0gbGFz
dE5ld0xpbmVPZmZzZXQgKyB0aGlzLl9lbmRDb2x1bW47CiAgICAgfQogfTsKLQotV2ViSW5zcGVj
dG9yLlRleHRSYW5nZS5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5w
cm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Nb2RlbHMvVGltZWxpbmUuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Nb2RlbHMvVGltZWxpbmUuanMKaW5kZXggMjI3NDM4MS4uNjQ5YmE3OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1RpbWVsaW5lLmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9UaW1lbGluZS5q
cwpAQCAtMjMsNTQgKzIzLDQ4IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAgKi8KIAotV2ViSW5zcGVjdG9yLlRpbWVsaW5lID0gZnVuY3Rpb24odHlwZSkKK1dlYkluc3Bl
Y3Rvci5UaW1lbGluZSA9IGNsYXNzIFRpbWVsaW5lIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVj
dAogewotICAgIGlmICh0aGlzLmNvbnN0cnVjdG9yID09PSBXZWJJbnNwZWN0b3IuVGltZWxpbmUp
IHsKLSAgICAgICAgLy8gV2hlbiBpbnN0YW50aWF0ZWQgZGlyZWN0bHksIHBvdGVudGlhbGx5IHJl
dHVybiBhbiBpbnN0YW5jZSBvZiBhIGNvbmNyZXRlIHN1YmNsYXNzLgotICAgICAgICBpZiAodHlw
ZSA9PT0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkLlR5cGUuTmV0d29yaykKLSAgICAgICAg
ICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLk5ldHdvcmtUaW1lbGluZSh0eXBlKTsKLSAgICB9
Ci0KLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CisgICAgY29uc3RydWN0b3Io
dHlwZSkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CiAKICAgICAgICAgdGhpcy5fdHlwZSA9IHR5
cGU7CiAKICAgICAgICAgdGhpcy5yZXNldCh0cnVlKTsKLX07CisgICAgfQogCi1XZWJJbnNwZWN0
b3IuVGltZWxpbmUuRXZlbnQgPSB7Ci0gICAgUmVzZXQ6ICJ0aW1lbGluZS1yZXNldCIsCi0gICAg
UmVjb3JkQWRkZWQ6ICJ0aW1lbGluZS1yZWNvcmQtYWRkZWQiLAotICAgIFRpbWVzVXBkYXRlZDog
InRpbWVsaW5lLXRpbWVzLXVwZGF0ZWQiCi19OworICAgIC8vIFN0YXRpYwogCi1XZWJJbnNwZWN0
b3IuVGltZWxpbmUuVGltZWxpbmVUeXBlQ29va2llS2V5ID0gInRpbWVsaW5lLXR5cGUiOworICAg
IHN0YXRpYyBjcmVhdGUodHlwZSkKKyAgICB7CisgICAgICAgIGlmICh0eXBlID09PSBXZWJJbnNw
ZWN0b3IuVGltZWxpbmVSZWNvcmQuVHlwZS5OZXR3b3JrKQorICAgICAgICAgICAgcmV0dXJuIG5l
dyBXZWJJbnNwZWN0b3IuTmV0d29ya1RpbWVsaW5lKHR5cGUpOwogCi1XZWJJbnNwZWN0b3IuVGlt
ZWxpbmUucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuVGltZWxp
bmUsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZSwKKyAgICAg
ICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuVGltZWxpbmUodHlwZSk7CisgICAgfQogCiAgICAg
Ly8gUHVibGljCiAKICAgICBnZXQgc3RhcnRUaW1lKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0
aGlzLl9zdGFydFRpbWU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgZW5kVGltZSgpCiAgICAg
ewogICAgICAgICByZXR1cm4gdGhpcy5fZW5kVGltZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdl
dCByZWNvcmRzKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9yZWNvcmRzOwotICAgIH0s
CisgICAgfQogCiAgICAgZ2V0IHR5cGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3R5
cGU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgZGlzcGxheU5hbWUoKQogICAgIHsKQEAgLTg0
LDcgKzc4LDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lLnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZyYW1lcyIpOwogCiAgICAgICAgIGNv
bnNvbGUuZXJyb3IoIlRpbWVsaW5lIGhhcyB1bmtub3duIHR5cGU6IiwgdGhpcy5fdHlwZSwgdGhp
cyk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgaWNvbkNsYXNzTmFtZSgpCiAgICAgewpAQCAt
OTgsOSArOTIsOSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmUucHJvdG90eXBlID0gewogICAgICAg
ICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5TY3JpcHRJY29u
U3R5bGVDbGFzczsKIAogICAgICAgICBjb25zb2xlLmVycm9yKCJUaW1lbGluZSBoYXMgdW5rbm93
biB0eXBlOiIsIHRoaXMuX3R5cGUsIHRoaXMpOwotICAgIH0sCisgICAgfQogCi0gICAgcmVzZXQ6
IGZ1bmN0aW9uKHN1cHByZXNzRXZlbnRzKQorICAgIHJlc2V0KHN1cHByZXNzRXZlbnRzKQogICAg
IHsKICAgICAgICAgdGhpcy5fcmVjb3JkcyA9IFtdOwogICAgICAgICB0aGlzLl9zdGFydFRpbWUg
PSBOYU47CkBAIC0xMTAsOSArMTA0LDkgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3Bl
Y3Rvci5UaW1lbGluZS5FdmVudC5SZXNldCk7CiAgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZl
bnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuVGltZWxpbmUuRXZlbnQuVGltZXNVcGRhdGVkKTsK
ICAgICAgICAgfQotICAgIH0sCisgICAgfQogCi0gICAgYWRkUmVjb3JkOiBmdW5jdGlvbihyZWNv
cmQpCisgICAgYWRkUmVjb3JkKHJlY29yZCkKICAgICB7CiAgICAgICAgIGlmIChyZWNvcmQudXBk
YXRlc0R5bmFtaWNhbGx5KQogICAgICAgICAgICAgcmVjb3JkLmFkZEV2ZW50TGlzdGVuZXIoV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkLkV2ZW50LlVwZGF0ZWQsIHRoaXMuX3JlY29yZFVwZGF0
ZWQsIHRoaXMpOwpAQCAtMTIyLDE2ICsxMTYsMTYgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fdXBkYXRlVGltZXNJZk5lZWRlZChyZWNvcmQpOwog
CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5UaW1l
bGluZS5FdmVudC5SZWNvcmRBZGRlZCwge3JlY29yZH0pOwotICAgIH0sCisgICAgfQogCi0gICAg
c2F2ZUlkZW50aXR5VG9Db29raWU6IGZ1bmN0aW9uKGNvb2tpZSkKKyAgICBzYXZlSWRlbnRpdHlU
b0Nvb2tpZShjb29raWUpCiAgICAgewogICAgICAgICBjb29raWVbV2ViSW5zcGVjdG9yLlRpbWVs
aW5lLlRpbWVsaW5lVHlwZUNvb2tpZUtleV0gPSB0aGlzLl90eXBlOwotICAgIH0sCisgICAgfQog
CiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX3VwZGF0ZVRpbWVzSWZOZWVkZWQ6IGZ1bmN0aW9uKHJl
Y29yZCkKKyAgICBfdXBkYXRlVGltZXNJZk5lZWRlZChyZWNvcmQpCiAgICAgewogICAgICAgICB2
YXIgY2hhbmdlZCA9IGZhbHNlOwogCkBAIC0xNDcsMTAgKzE0MSwxOCBAQCBXZWJJbnNwZWN0b3Iu
VGltZWxpbmUucHJvdG90eXBlID0gewogCiAgICAgICAgIGlmIChjaGFuZ2VkKQogICAgICAgICAg
ICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlRpbWVsaW5lLkV2
ZW50LlRpbWVzVXBkYXRlZCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcmVjb3JkVXBkYXRlZDog
ZnVuY3Rpb24oZXZlbnQpCisgICAgX3JlY29yZFVwZGF0ZWQoZXZlbnQpCiAgICAgewogICAgICAg
ICB0aGlzLl91cGRhdGVUaW1lc0lmTmVlZGVkKGV2ZW50LnRhcmdldCk7CiAgICAgfQogfTsKKwor
V2ViSW5zcGVjdG9yLlRpbWVsaW5lLkV2ZW50ID0geworICAgIFJlc2V0OiAidGltZWxpbmUtcmVz
ZXQiLAorICAgIFJlY29yZEFkZGVkOiAidGltZWxpbmUtcmVjb3JkLWFkZGVkIiwKKyAgICBUaW1l
c1VwZGF0ZWQ6ICJ0aW1lbGluZS10aW1lcy11cGRhdGVkIgorfTsKKworV2ViSW5zcGVjdG9yLlRp
bWVsaW5lLlRpbWVsaW5lVHlwZUNvb2tpZUtleSA9ICJ0aW1lbGluZS10eXBlIjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9UaW1lbGluZU1h
cmtlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9UaW1l
bGluZU1hcmtlci5qcwppbmRleCAwNWU4MzM5Li43NTk3N2FiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvVGltZWxpbmVNYXJrZXIuanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1RpbWVsaW5lTWFy
a2VyLmpzCkBAIC0yMywzNyArMjMsMjQgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuVGltZWxpbmVNYXJrZXIgPSBmdW5jdGlvbih0aW1l
LCB0eXBlKQorV2ViSW5zcGVjdG9yLlRpbWVsaW5lTWFya2VyID0gY2xhc3MgVGltZWxpbmVNYXJr
ZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVj
dC5jYWxsKHRoaXMpOworICAgIGNvbnN0cnVjdG9yKHRpbWUsIHR5cGUpCisgICAgeworICAgICAg
ICBzdXBlcigpOwogCiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHR5cGUpOwogCiAgICAgICAgIHRo
aXMuX3RpbWUgPSB0aW1lIHx8IDA7CiAgICAgICAgIHRoaXMuX3R5cGUgPSB0eXBlOwotfTsKLQot
V2ViSW5zcGVjdG9yLlRpbWVsaW5lTWFya2VyLkV2ZW50ID0gewotICAgIFRpbWVDaGFuZ2VkOiAi
dGltZWxpbmUtbWFya2VyLXRpbWUtY2hhbmdlZCIKLX07Ci0KLVdlYkluc3BlY3Rvci5UaW1lbGlu
ZU1hcmtlci5UeXBlID0gewotICAgIEN1cnJlbnRUaW1lOiAiY3VycmVudC10aW1lIiwKLSAgICBM
b2FkRXZlbnQ6ICJsb2FkLWV2ZW50IiwKLSAgICBET01Db250ZW50RXZlbnQ6ICJkb20tY29udGVu
dC1ldmVudCIsCi0gICAgVGltZVN0YW1wOiAidGltZXN0YW1wIgotfTsKLQotV2ViSW5zcGVjdG9y
LlRpbWVsaW5lTWFya2VyLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVj
dG9yLlRpbWVsaW5lTWFya2VyLAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLk9iamVjdC5w
cm90b3R5cGUsCisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgdGltZSgpCiAgICAg
ewogICAgICAgICByZXR1cm4gdGhpcy5fdGltZTsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCB0
aW1lKHgpCiAgICAgewpAQCAtNjMsMTAgKzUwLDIxIEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZU1h
cmtlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3RpbWUgPSB4IHx8IDA7CiAKICAgICAg
ICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlRpbWVsaW5lTWFy
a2VyLkV2ZW50LlRpbWVDaGFuZ2VkKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCB0eXBlKCkK
ICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl90eXBlOwogICAgIH0KIH07CisKK1dlYkluc3Bl
Y3Rvci5UaW1lbGluZU1hcmtlci5FdmVudCA9IHsKKyAgICBUaW1lQ2hhbmdlZDogInRpbWVsaW5l
LW1hcmtlci10aW1lLWNoYW5nZWQiCit9OworCitXZWJJbnNwZWN0b3IuVGltZWxpbmVNYXJrZXIu
VHlwZSA9IHsKKyAgICBDdXJyZW50VGltZTogImN1cnJlbnQtdGltZSIsCisgICAgTG9hZEV2ZW50
OiAibG9hZC1ldmVudCIsCisgICAgRE9NQ29udGVudEV2ZW50OiAiZG9tLWNvbnRlbnQtZXZlbnQi
LAorICAgIFRpbWVTdGFtcDogInRpbWVzdGFtcCIKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvVGltZWxpbmVSZWNvcmQuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvVGltZWxpbmVSZWNvcmQuanMK
aW5kZXggMWMwMDNkMS4uNTY2NzFmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvTW9kZWxzL1RpbWVsaW5lUmVjb3JkLmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9UaW1lbGluZVJlY29yZC5qcwpAQCAtMjMs
OSArMjMsMTEgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1X
ZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQgPSBmdW5jdGlvbih0eXBlLCBzdGFydFRpbWUsIGVu
ZFRpbWUsIGNhbGxGcmFtZXMsIHNvdXJjZUNvZGVMb2NhdGlvbikKK1dlYkluc3BlY3Rvci5UaW1l
bGluZVJlY29yZCA9IGNsYXNzIFRpbWVsaW5lUmVjb3JkIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9i
amVjdAogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICBjb25zdHJ1
Y3Rvcih0eXBlLCBzdGFydFRpbWUsIGVuZFRpbWUsIGNhbGxGcmFtZXMsIHNvdXJjZUNvZGVMb2Nh
dGlvbikKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CiAKICAgICAgICAgY29uc29sZS5hc3NlcnQo
dHlwZSk7CiAKQEAgLTM3LDg3ICszOSw2NyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQg
PSBmdW5jdGlvbih0eXBlLCBzdGFydFRpbWUsIGVuZFRpbWUsIGNhbGxGcmFtZXMsIHNvdQogICAg
ICAgICB0aGlzLl9lbmRUaW1lID0gZW5kVGltZSB8fCBOYU47CiAgICAgICAgIHRoaXMuX2NhbGxG
cmFtZXMgPSBjYWxsRnJhbWVzIHx8IG51bGw7CiAgICAgICAgIHRoaXMuX3NvdXJjZUNvZGVMb2Nh
dGlvbiA9IHNvdXJjZUNvZGVMb2NhdGlvbiB8fCBudWxsOwotfTsKLQotV2ViSW5zcGVjdG9yLlRp
bWVsaW5lUmVjb3JkLkV2ZW50ID0gewotICAgIFVwZGF0ZWQ6ICJ0aW1lbGluZS1yZWNvcmQtdXBk
YXRlZCIKLX07Ci0KLVdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5UeXBlID0gewotICAgIE5l
dHdvcms6ICJ0aW1lbGluZS1yZWNvcmQtdHlwZS1uZXR3b3JrIiwKLSAgICBMYXlvdXQ6ICJ0aW1l
bGluZS1yZWNvcmQtdHlwZS1sYXlvdXQiLAotICAgIFNjcmlwdDogInRpbWVsaW5lLXJlY29yZC10
eXBlLXNjcmlwdCIsCi0gICAgUnVuTG9vcDogInRpbWVsaW5lLXJlY29yZC10eXBlLXJ1bmxvb3Ai
Ci19OwotCi1XZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQuVHlwZUlkZW50aWZpZXIgPSAidGlt
ZWxpbmUtcmVjb3JkIjsKLVdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5Tb3VyY2VDb2RlVVJM
Q29va2llS2V5ID0gInRpbWVsaW5lLXJlY29yZC1zb3VyY2UtY29kZS11cmwiOwotV2ViSW5zcGVj
dG9yLlRpbWVsaW5lUmVjb3JkLlNvdXJjZUNvZGVMb2NhdGlvbkxpbmVDb29raWVLZXkgPSAidGlt
ZWxpbmUtcmVjb3JkLXNvdXJjZS1jb2RlLWxvY2F0aW9uLWxpbmUiOwotV2ViSW5zcGVjdG9yLlRp
bWVsaW5lUmVjb3JkLlNvdXJjZUNvZGVMb2NhdGlvbkNvbHVtbkNvb2tpZUtleSA9ICJ0aW1lbGlu
ZS1yZWNvcmQtc291cmNlLWNvZGUtbG9jYXRpb24tY29sdW1uIjsKLVdlYkluc3BlY3Rvci5UaW1l
bGluZVJlY29yZC5UeXBlQ29va2llS2V5ID0gInRpbWVsaW5lLXJlY29yZC10eXBlIjsKLQotV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3Rvcjog
V2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkLAorICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAg
ICAgZ2V0IHR5cGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3R5cGU7Ci0gICAgfSwK
KyAgICB9CiAKICAgICBnZXQgc3RhcnRUaW1lKCkKICAgICB7CiAgICAgICAgIC8vIEltcGxlbWVu
dGVkIGJ5IHN1YmNsYXNzZXMgaWYgbmVlZGVkLgogICAgICAgICByZXR1cm4gdGhpcy5fc3RhcnRU
aW1lOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGFjdGl2ZVN0YXJ0VGltZSgpCiAgICAgewog
ICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzIGlmIG5lZWRlZC4KICAgICAgICAg
cmV0dXJuIHRoaXMuX3N0YXJ0VGltZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBlbmRUaW1l
KCkKICAgICB7CiAgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMgaWYgbmVlZGVk
LgogICAgICAgICByZXR1cm4gdGhpcy5fZW5kVGltZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdl
dCBkdXJhdGlvbigpCiAgICAgewogICAgICAgICAvLyBVc2UgdGhlIGdldHRlcnMgaW5zdGVhZCBv
ZiB0aGUgcHJvcGVydGllcyBzbyB0aGlzIHdvcmtzIGZvciBzdWJjbGFzc2VzIHRoYXQgb3ZlcnJp
ZGUgdGhlIGdldHRlcnMuCiAgICAgICAgIHJldHVybiB0aGlzLmVuZFRpbWUgLSB0aGlzLnN0YXJ0
VGltZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBpbmFjdGl2ZUR1cmF0aW9uKCkKICAgICB7
CiAgICAgICAgIC8vIFVzZSB0aGUgZ2V0dGVycyBpbnN0ZWFkIG9mIHRoZSBwcm9wZXJ0aWVzIHNv
IHRoaXMgd29ya3MgZm9yIHN1YmNsYXNzZXMgdGhhdCBvdmVycmlkZSB0aGUgZ2V0dGVycy4KICAg
ICAgICAgcmV0dXJuIHRoaXMuYWN0aXZlU3RhcnRUaW1lIC0gdGhpcy5zdGFydFRpbWU7Ci0gICAg
fSwKKyAgICB9CiAKICAgICBnZXQgYWN0aXZlRHVyYXRpb24oKQogICAgIHsKICAgICAgICAgLy8g
VXNlIHRoZSBnZXR0ZXJzIGluc3RlYWQgb2YgdGhlIHByb3BlcnRpZXMgc28gdGhpcyB3b3JrcyBm
b3Igc3ViY2xhc3NlcyB0aGF0IG92ZXJyaWRlIHRoZSBnZXR0ZXJzLgogICAgICAgICByZXR1cm4g
dGhpcy5lbmRUaW1lIC0gdGhpcy5hY3RpdmVTdGFydFRpbWU7Ci0gICAgfSwKKyAgICB9CiAKICAg
ICBnZXQgdXBkYXRlc0R5bmFtaWNhbGx5KCkKICAgICB7CiAgICAgICAgIC8vIEltcGxlbWVudGVk
IGJ5IHN1YmNsYXNzZXMgaWYgbmVlZGVkLgogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfSwK
KyAgICB9CiAKICAgICBnZXQgdXNlc0FjdGl2ZVN0YXJ0VGltZSgpCiAgICAgewogICAgICAgICAv
LyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzIGlmIG5lZWRlZC4KICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGNhbGxGcmFtZXMoKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHRoaXMuX2NhbGxGcmFtZXM7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgaW5p
dGlhdG9yQ2FsbEZyYW1lKCkKICAgICB7CkBAIC0xMzIsMTQgKzExNCwxNCBAQCBXZWJJbnNwZWN0
b3IuVGltZWxpbmVSZWNvcmQucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgcmV0
dXJuIG51bGw7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc291cmNlQ29kZUxvY2F0aW9uKCkK
ICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb247Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBzYXZlSWRlbnRpdHlUb0Nvb2tpZTogZnVuY3Rpb24oY29va2llKQorICAg
IHNhdmVJZGVudGl0eVRvQ29va2llKGNvb2tpZSkKICAgICB7CiAgICAgICAgIGNvb2tpZVtXZWJJ
bnNwZWN0b3IuVGltZWxpbmVSZWNvcmQuU291cmNlQ29kZVVSTENvb2tpZUtleV0gPSB0aGlzLl9z
b3VyY2VDb2RlTG9jYXRpb24gPyB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb24uc291cmNlQ29kZS51
cmwgPyB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb24uc291cmNlQ29kZS51cmwuaGFzaCA6IG51bGwg
OiBudWxsOwogICAgICAgICBjb29raWVbV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkLlNvdXJj
ZUNvZGVMb2NhdGlvbkxpbmVDb29raWVLZXldID0gdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uID8g
dGhpcy5fc291cmNlQ29kZUxvY2F0aW9uLmxpbmVOdW1iZXIgOiBudWxsOwpAQCAtMTQ4LDQgKzEz
MCwxOSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQucHJvdG90eXBlID0gewogICAgIH0K
IH07CiAKLVdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5wcm90b3R5cGUuX19wcm90b19fID0g
V2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CitXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNv
cmQuRXZlbnQgPSB7CisgICAgVXBkYXRlZDogInRpbWVsaW5lLXJlY29yZC11cGRhdGVkIgorfTsK
KworV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkLlR5cGUgPSB7CisgICAgTmV0d29yazogInRp
bWVsaW5lLXJlY29yZC10eXBlLW5ldHdvcmsiLAorICAgIExheW91dDogInRpbWVsaW5lLXJlY29y
ZC10eXBlLWxheW91dCIsCisgICAgU2NyaXB0OiAidGltZWxpbmUtcmVjb3JkLXR5cGUtc2NyaXB0
IiwKKyAgICBSdW5Mb29wOiAidGltZWxpbmUtcmVjb3JkLXR5cGUtcnVubG9vcCIKK307CisKK1dl
Ykluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5UeXBlSWRlbnRpZmllciA9ICJ0aW1lbGluZS1yZWNv
cmQiOworV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkLlNvdXJjZUNvZGVVUkxDb29raWVLZXkg
PSAidGltZWxpbmUtcmVjb3JkLXNvdXJjZS1jb2RlLXVybCI7CitXZWJJbnNwZWN0b3IuVGltZWxp
bmVSZWNvcmQuU291cmNlQ29kZUxvY2F0aW9uTGluZUNvb2tpZUtleSA9ICJ0aW1lbGluZS1yZWNv
cmQtc291cmNlLWNvZGUtbG9jYXRpb24tbGluZSI7CitXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNv
cmQuU291cmNlQ29kZUxvY2F0aW9uQ29sdW1uQ29va2llS2V5ID0gInRpbWVsaW5lLXJlY29yZC1z
b3VyY2UtY29kZS1sb2NhdGlvbi1jb2x1bW4iOworV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3Jk
LlR5cGVDb29raWVLZXkgPSAidGltZWxpbmUtcmVjb3JkLXR5cGUiOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1RpbWVsaW5lUmVjb3JkaW5n
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1RpbWVsaW5l
UmVjb3JkaW5nLmpzCmluZGV4IDY4YzQ2YTguLjI5N2MyNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9UaW1lbGluZVJlY29yZGluZy5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvVGltZWxpbmVS
ZWNvcmRpbmcuanMKQEAgLTIzLDkgKzIzLDExIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nID0gZnVuY3Rp
b24oaWRlbnRpZmllciwgZGlzcGxheU5hbWUpCitXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRp
bmcgPSBjbGFzcyBUaW1lbGluZVJlY29yZGluZyBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QK
IHsKLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CisgICAgY29uc3RydWN0b3Io
aWRlbnRpZmllciwgZGlzcGxheU5hbWUpCisgICAgeworICAgICAgICBzdXBlcigpOwogCiAgICAg
ICAgIHRoaXMuX2lkZW50aWZpZXIgPSBpZGVudGlmaWVyOwogICAgICAgICB0aGlzLl90aW1lbGlu
ZXMgPSBuZXcgTWFwOwpAQCAtMzYsNjIgKzM4LDQ3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJl
Y29yZGluZyA9IGZ1bmN0aW9uKGlkZW50aWZpZXIsIGRpc3BsYXlOYW1lKQogICAgICAgICB0aGlz
Ll9sZWdhY3lGaXJzdFJlY29yZGVkVGltZXN0YW1wID0gTmFOOwogCiAgICAgICAgIHRoaXMucmVz
ZXQodHJ1ZSk7Ci19OwotCi1XZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRpbmcuRXZlbnQgPSB7
Ci0gICAgUmVzZXQ6ICJ0aW1lbGluZS1yZWNvcmRpbmctcmVzZXQiLAotICAgIFVubG9hZGVkOiAi
dGltZWxpbmUtcmVjb3JkaW5nLXVubG9hZGVkIiwKLSAgICBTb3VyY2VDb2RlVGltZWxpbmVBZGRl
ZDogInRpbWVsaW5lLXJlY29yZGluZy1zb3VyY2UtY29kZS10aW1lbGluZS1hZGRlZCIsCi0gICAg
VGltZWxpbmVBZGRlZDogInRpbWVsaW5lLXJlY29yZGluZy10aW1lbGluZS1hZGRlZCIsCi0gICAg
VGltZWxpbmVSZW1vdmVkOiAidGltZWxpbmUtcmVjb3JkaW5nLXRpbWVsaW5lLXJlbW92ZWQiLAot
ICAgIFRpbWVzVXBkYXRlZDogInRpbWVsaW5lLXJlY29yZGluZy10aW1lcy11cGRhdGVkIgotfTsK
LQotV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nLlRpbWVzdGFtcFRocmVzaG9sZEZvckxl
Z2FjeVJlY29yZENvbnZlcnNpb24gPSAyODgwMDAwMDsgLy8gRGF0ZS5wYXJzZSgiSmFuIDEsIDE5
NzAiKQotCi1XZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRpbmcucHJvdG90eXBlID0gewotICAg
IGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRpbmcsCi0gICAgX19wcm90
b19fOiBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZSwKKyAgICB9CiAKICAgICAvLyBQdWJs
aWMKIAogICAgIGdldCBkaXNwbGF5TmFtZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5f
ZGlzcGxheU5hbWU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgaWRlbnRpZmllcigpCiAgICAg
ewogICAgICAgICByZXR1cm4gdGhpcy5faWRlbnRpZmllcjsKLSAgICB9LAorICAgIH0KIAogICAg
IGdldCB0aW1lbGluZXMoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3RpbWVsaW5lczsK
LSAgICB9LAorICAgIH0KIAogICAgIGdldCBzdGFydFRpbWUoKQogICAgIHsKICAgICAgICAgcmV0
dXJuIHRoaXMuX3N0YXJ0VGltZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBlbmRUaW1lKCkK
ICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9lbmRUaW1lOwotICAgIH0sCisgICAgfQogCi0g
ICAgc2F2ZUlkZW50aXR5VG9Db29raWU6IGZ1bmN0aW9uKCkKKyAgICBzYXZlSWRlbnRpdHlUb0Nv
b2tpZSgpCiAgICAgewogICAgICAgICAvLyBEbyBub3RoaW5nLiBUaW1lbGluZSByZWNvcmRpbmdz
IGFyZSBub3QgcGVyc2lzdGVkIHdoZW4gdGhlIGluc3BlY3RvciBpcwogICAgICAgICAvLyByZS1v
cGVuZWQsIHNvIGRvIG5vdCBhdHRlbXB0IHRvIHJlc3RvcmUgYnkgaWRlbnRpZmllciBvciBkaXNw
bGF5IG5hbWUuCi0gICAgfSwKKyAgICB9CiAKLSAgICBpc1dyaXRhYmxlOiBmdW5jdGlvbigpCisg
ICAgaXNXcml0YWJsZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5faXNXcml0YWJsZTsK
LSAgICB9LAorICAgIH0KIAotICAgIGlzRW1wdHk6IGZ1bmN0aW9uKCkKKyAgICBpc0VtcHR5KCkK
ICAgICB7CiAgICAgICAgIGZvciAodmFyIHRpbWVsaW5lIG9mIHRoaXMuX3RpbWVsaW5lcy52YWx1
ZXMoKSkgewogICAgICAgICAgICAgaWYgKHRpbWVsaW5lLnJlY29yZHMubGVuZ3RoKQpAQCAtOTks
MTggKzg2LDE4IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZGluZy5wcm90b3R5cGUgPSB7
CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9LAorICAgIH0KIAotICAg
IHVubG9hZGVkOiBmdW5jdGlvbigpCisgICAgdW5sb2FkZWQoKQogICAgIHsKICAgICAgICAgY29u
c29sZS5hc3NlcnQoIXRoaXMuaXNFbXB0eSgpLCAiU2hvdWxkbid0IHVubG9hZCBhbiBlbXB0eSBy
ZWNvcmRpbmc7IGl0IHNob3VsZCBiZSByZXVzZWQgaW5zdGVhZC4iKTsKIAogICAgICAgICB0aGlz
Ll9pc1dyaXRhYmxlID0gZmFsc2U7CiAKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0
ZW5lcnMoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nLkV2ZW50LlVubG9hZGVkKTsKLSAg
ICB9LAorICAgIH0KIAotICAgIHJlc2V0OiBmdW5jdGlvbihzdXBwcmVzc0V2ZW50cykKKyAgICBy
ZXNldChzdXBwcmVzc0V2ZW50cykKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMu
X2lzV3JpdGFibGUsICJDYW4ndCByZXNldCBhIHJlYWQtb25seSByZWNvcmRpbmcuIik7CiAKQEAg
LTEyNiwxNyArMTEzLDE3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZGluZy5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNw
ZWN0b3IuVGltZWxpbmVSZWNvcmRpbmcuRXZlbnQuUmVzZXQpOwogICAgICAgICAgICAgdGhpcy5k
aXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nLkV2
ZW50LlRpbWVzVXBkYXRlZCk7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAotICAgIHNvdXJj
ZUNvZGVUaW1lbGluZXNGb3JTb3VyY2VDb2RlOiBmdW5jdGlvbihzb3VyY2VDb2RlKQorICAgIHNv
dXJjZUNvZGVUaW1lbGluZXNGb3JTb3VyY2VDb2RlKHNvdXJjZUNvZGUpCiAgICAgewogICAgICAg
ICB2YXIgdGltZWxpbmVzID0gdGhpcy5fc291cmNlQ29kZVRpbWVsaW5lc01hcC5nZXQoc291cmNl
Q29kZSk7CiAgICAgICAgIGlmICghdGltZWxpbmVzKQogICAgICAgICAgICAgcmV0dXJuIFtdOwog
ICAgICAgICByZXR1cm4gWy4uLnRpbWVsaW5lcy52YWx1ZXMoKV07Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBhZGRUaW1lbGluZTogZnVuY3Rpb24odGltZWxpbmUpCisgICAgYWRkVGltZWxpbmUodGlt
ZWxpbmUpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCh0aW1lbGluZSBpbnN0YW5jZW9m
IFdlYkluc3BlY3Rvci5UaW1lbGluZSwgdGltZWxpbmUpOwogICAgICAgICBjb25zb2xlLmFzc2Vy
dCghdGhpcy5fdGltZWxpbmVzLmhhcyh0aW1lbGluZSksIHRoaXMuX3RpbWVsaW5lcywgdGltZWxp
bmUpOwpAQCAtMTQ1LDkgKzEzMiw5IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZGluZy5w
cm90b3R5cGUgPSB7CiAKICAgICAgICAgdGltZWxpbmUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNw
ZWN0b3IuVGltZWxpbmUuRXZlbnQuVGltZXNVcGRhdGVkLCB0aGlzLl90aW1lbGluZVRpbWVzVXBk
YXRlZCwgdGhpcyk7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYklu
c3BlY3Rvci5UaW1lbGluZVJlY29yZGluZy5FdmVudC5UaW1lbGluZUFkZGVkLCB7dGltZWxpbmV9
KTsKLSAgICB9LAorICAgIH0KIAotICAgIHJlbW92ZVRpbWVsaW5lOiBmdW5jdGlvbih0aW1lbGlu
ZSkKKyAgICByZW1vdmVUaW1lbGluZSh0aW1lbGluZSkKICAgICB7CiAgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KHRpbWVsaW5lIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlRpbWVsaW5lLCB0aW1lbGlu
ZSk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3RpbWVsaW5lcy5oYXModGltZWxpbmUu
dHlwZSksIHRoaXMuX3RpbWVsaW5lcywgdGltZWxpbmUpOwpAQCAtMTU3LDE0ICsxNDQsMTQgQEAg
V2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nLnByb3RvdHlwZSA9IHsKIAogICAgICAgICB0
aW1lbGluZS5yZW1vdmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZS5FdmVudC5U
aW1lc1VwZGF0ZWQsIHRoaXMuX3RpbWVsaW5lVGltZXNVcGRhdGVkLCB0aGlzKTsKICAgICAgICAg
dGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3Jk
aW5nLkV2ZW50LlRpbWVsaW5lUmVtb3ZlZCwge3RpbWVsaW5lfSk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBhZGRFdmVudE1hcmtlcjogZnVuY3Rpb24oZXZlbnRNYXJrZXIpCisgICAgYWRkRXZlbnRN
YXJrZXIoZXZlbnRNYXJrZXIpCiAgICAgewogICAgICAgICB0aGlzLl9ldmVudE1hcmtlcnMucHVz
aChldmVudE1hcmtlcik7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBhZGRSZWNvcmQ6IGZ1bmN0aW9u
KHJlY29yZCkKKyAgICBhZGRSZWNvcmQocmVjb3JkKQogICAgIHsKICAgICAgICAgdmFyIGhhc0Nv
cnJlc3BvbmRpbmdUaW1lbGluZSA9IHRoaXMuX3RpbWVsaW5lcy5oYXMocmVjb3JkLnR5cGUpOwog
ICAgICAgICBjb25zb2xlLmFzc2VydChoYXNDb3JyZXNwb25kaW5nVGltZWxpbmUsIHJlY29yZCwg
dGhpcy5fdGltZWxpbmVzKTsKQEAgLTIwMSw5ICsxODgsOSBAQCBXZWJJbnNwZWN0b3IuVGltZWxp
bmVSZWNvcmRpbmcucHJvdG90eXBlID0gewogCiAgICAgICAgIGlmIChuZXdUaW1lbGluZSkKICAg
ICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5UaW1l
bGluZVJlY29yZGluZy5FdmVudC5Tb3VyY2VDb2RlVGltZWxpbmVBZGRlZCwge3NvdXJjZUNvZGVU
aW1lbGluZX0pOwotICAgIH0sCisgICAgfQogCi0gICAgY29tcHV0ZUVsYXBzZWRUaW1lOiBmdW5j
dGlvbih0aW1lc3RhbXApCisgICAgY29tcHV0ZUVsYXBzZWRUaW1lKHRpbWVzdGFtcCkKICAgICB7
CiAgICAgICAgIGlmICghdGltZXN0YW1wIHx8IGlzTmFOKHRpbWVzdGFtcCkpCiAgICAgICAgICAg
ICByZXR1cm4gTmFOOwpAQCAtMjE5LDExICsyMDYsMTEgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5l
UmVjb3JkaW5nLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybiAodGltZXN0YW1wIC0g
dGhpcy5fbGVnYWN5Rmlyc3RSZWNvcmRlZFRpbWVzdGFtcCkgLyAxMDAwLjA7CiAKICAgICAgICAg
cmV0dXJuIHRpbWVzdGFtcDsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAg
IF9rZXlGb3JSZWNvcmQ6IGZ1bmN0aW9uKHJlY29yZCkKKyAgICBfa2V5Rm9yUmVjb3JkKHJlY29y
ZCkKICAgICB7CiAgICAgICAgIHZhciBrZXkgPSByZWNvcmQudHlwZTsKICAgICAgICAgaWYgKHJl
Y29yZCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZVJlY29yZCB8fCByZWNv
cmQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuTGF5b3V0VGltZWxpbmVSZWNvcmQpCkBAIC0yMzMs
OSArMjIwLDkgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgaWYgKHJlY29yZC5zb3VyY2VDb2RlTG9jYXRpb24pCiAgICAgICAgICAgICBrZXkg
Kz0gIjoiICsgcmVjb3JkLnNvdXJjZUNvZGVMb2NhdGlvbi5saW5lTnVtYmVyICsgIjoiICsgcmVj
b3JkLnNvdXJjZUNvZGVMb2NhdGlvbi5jb2x1bW5OdW1iZXI7CiAgICAgICAgIHJldHVybiBrZXk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdGltZWxpbmVUaW1lc1VwZGF0ZWQ6IGZ1bmN0aW9uKGV2
ZW50KQorICAgIF90aW1lbGluZVRpbWVzVXBkYXRlZChldmVudCkKICAgICB7CiAgICAgICAgIHZh
ciB0aW1lbGluZSA9IGV2ZW50LnRhcmdldDsKICAgICAgICAgdmFyIGNoYW5nZWQgPSBmYWxzZTsK
QEAgLTI1NCwzICsyNDEsMTQgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYklu
c3BlY3Rvci5UaW1lbGluZVJlY29yZGluZy5FdmVudC5UaW1lc1VwZGF0ZWQpOwogICAgIH0KIH07
CisKK1dlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZGluZy5FdmVudCA9IHsKKyAgICBSZXNldDog
InRpbWVsaW5lLXJlY29yZGluZy1yZXNldCIsCisgICAgVW5sb2FkZWQ6ICJ0aW1lbGluZS1yZWNv
cmRpbmctdW5sb2FkZWQiLAorICAgIFNvdXJjZUNvZGVUaW1lbGluZUFkZGVkOiAidGltZWxpbmUt
cmVjb3JkaW5nLXNvdXJjZS1jb2RlLXRpbWVsaW5lLWFkZGVkIiwKKyAgICBUaW1lbGluZUFkZGVk
OiAidGltZWxpbmUtcmVjb3JkaW5nLXRpbWVsaW5lLWFkZGVkIiwKKyAgICBUaW1lbGluZVJlbW92
ZWQ6ICJ0aW1lbGluZS1yZWNvcmRpbmctdGltZWxpbmUtcmVtb3ZlZCIsCisgICAgVGltZXNVcGRh
dGVkOiAidGltZWxpbmUtcmVjb3JkaW5nLXRpbWVzLXVwZGF0ZWQiCit9OworCitXZWJJbnNwZWN0
b3IuVGltZWxpbmVSZWNvcmRpbmcuVGltZXN0YW1wVGhyZXNob2xkRm9yTGVnYWN5UmVjb3JkQ29u
dmVyc2lvbiA9IDI4ODAwMDAwOyAvLyBEYXRlLnBhcnNlKCJKYW4gMSwgMTk3MCIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvVHlwZVNldC5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9UeXBlU2V0Lmpz
CmluZGV4IDU4M2IzMzguLjI2NjZlOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL01vZGVscy9UeXBlU2V0LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9UeXBlU2V0LmpzCkBAIC0yNCw4ICsyNCwxMiBAQAog
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5U
eXBlU2V0ID0gZnVuY3Rpb24ocnVudGltZVR5cGVEZXNjcmlwdGlvblBheWxvYWQpCitXZWJJbnNw
ZWN0b3IuVHlwZVNldCA9IGNsYXNzIFR5cGVTZXQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0
CiB7CisgICAgY29uc3RydWN0b3IocnVudGltZVR5cGVEZXNjcmlwdGlvblBheWxvYWQpCisgICAg
eworICAgICAgICBzdXBlcigpOworCiAgICAgICAgIHRoaXMuX3R5cGVzID0gcnVudGltZVR5cGVE
ZXNjcmlwdGlvblBheWxvYWQ7CiAKICAgICAgICAgdmFyIHR5cGVTZXQgPSB0aGlzLl90eXBlcy50
eXBlU2V0OwpAQCAtNTEsMzEgKzU1LDE4IEBAIFdlYkluc3BlY3Rvci5UeXBlU2V0ID0gZnVuY3Rp
b24ocnVudGltZVR5cGVEZXNjcmlwdGlvblBheWxvYWQpCiAgICAgICAgIHRoaXMuX2JpdFN0cmlu
ZyA9IGJpdFN0cmluZzsKIAogICAgICAgICB0aGlzLl9wcmltaXRpdmVUeXBlTmFtZXMgPSBudWxs
OwotfTsKKyAgICB9CiAKLVdlYkluc3BlY3Rvci5UeXBlU2V0LmZyb21QYXlsb2FkID0gZnVuY3Rp
b24ocGF5bG9hZCkKKyAgICAvLyBTdGF0aWMKKworICAgIHN0YXRpYyBmcm9tUGF5bG9hZChwYXls
b2FkKQogICAgIHsKICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuVHlwZVNldChwYXls
b2FkKTsKLX07CisgICAgfQogCi1XZWJJbnNwZWN0b3IuVHlwZVNldC5UeXBlQml0ID0gewotICAg
ICJGdW5jdGlvbiIgICAgOiAgMHgxLAotICAgICJVbmRlZmluZWQiICAgOiAgMHgyLAotICAgICJO
dWxsIiAgICAgICAgOiAgMHg0LAotICAgICJCb29sZWFuIiAgICAgOiAgMHg4LAotICAgICJJbnRl
Z2VyIiAgICAgOiAgMHgxMCwKLSAgICAiTnVtYmVyIiAgICAgIDogIDB4MjAsCi0gICAgIlN0cmlu
ZyIgICAgICA6ICAweDQwLAotICAgICJPYmplY3QiICAgICAgOiAgMHg4MAotfTsKKyAgICAvLyBQ
dWJsaWMKIAotV2ViSW5zcGVjdG9yLlR5cGVTZXQuTnVsbE9yVW5kZWZpbmVkVHlwZUJpdHMgPSBX
ZWJJbnNwZWN0b3IuVHlwZVNldC5UeXBlQml0Lk51bGwgfCBXZWJJbnNwZWN0b3IuVHlwZVNldC5U
eXBlQml0LlVuZGVmaW5lZDsKLQotV2ViSW5zcGVjdG9yLlR5cGVTZXQucHJvdG90eXBlID0gewot
ICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuVHlwZVNldCwKLSAgICBfX3Byb3RvX186IFdl
Ykluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlLAotCi0gICAgaXNDb250YWluZWRJbjogZnVuY3Rp
b24odGVzdCkKKyAgICBpc0NvbnRhaW5lZEluKHRlc3QpCiAgICAgewogICAgICAgICAvLyBUaGlz
IGZ1bmN0aW9uIGNoZWNrcyBpZiB0eXBlcyBpbiBiaXRTdHJpbmcgYXJlIGNvbnRhaW5lZCBpbiB0
aGUgdHlwZXMgZGVzY3JpYmVkIGJ5IHRoZSAndGVzdCcgYml0c3RyaW5nLiAoaS5lIHdlIGhhdmVu
J3Qgc2VlbiBtb3JlIHR5cGVzIHRoYW4gJ3Rlc3QnKS4KICAgICAgICAgLy8gV2UgaGF2ZSBzZWVu
IGZld2VyIG9yIGVxdWFsIG51bWJlciBvZiB0eXBlcyBhcyAndGVzdCcgaWYgQU5EaW5nIGJpdFN0
cmluZyB3aXRoIHRlc3QgZG9lc24ndCB6ZXJvIG91dCBhbnkgb2Ygb3VyIGJpdHMuCkBAIC05Myw3
ICs4NCw3IEBAIFdlYkluc3BlY3Rvci5UeXBlU2V0LnByb3RvdHlwZSA9IHsKICAgICAgICAgLy8g
MGIwMDEwICE9IGJpdFN0cmluZwogCiAgICAgICAgIHJldHVybiB0aGlzLl9iaXRTdHJpbmcgJiYg
KHRoaXMuX2JpdFN0cmluZyAmIHRlc3QpID09PSB0aGlzLl9iaXRTdHJpbmc7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICBnZXQgcHJpbWl0aXZlVHlwZU5hbWVzKCkKICAgICB7CkBAIC0xMjIsMyArMTEz
LDE2IEBAIFdlYkluc3BlY3Rvci5UeXBlU2V0LnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJu
IHRoaXMuX3ByaW1pdGl2ZVR5cGVOYW1lczsKICAgICB9CiB9OworCitXZWJJbnNwZWN0b3IuVHlw
ZVNldC5UeXBlQml0ID0geworICAgICJGdW5jdGlvbiIgICAgOiAgMHgxLAorICAgICJVbmRlZmlu
ZWQiICAgOiAgMHgyLAorICAgICJOdWxsIiAgICAgICAgOiAgMHg0LAorICAgICJCb29sZWFuIiAg
ICAgOiAgMHg4LAorICAgICJJbnRlZ2VyIiAgICAgOiAgMHgxMCwKKyAgICAiTnVtYmVyIiAgICAg
IDogIDB4MjAsCisgICAgIlN0cmluZyIgICAgICA6ICAweDQwLAorICAgICJPYmplY3QiICAgICAg
OiAgMHg4MAorfTsKKworV2ViSW5zcGVjdG9yLlR5cGVTZXQuTnVsbE9yVW5kZWZpbmVkVHlwZUJp
dHMgPSBXZWJJbnNwZWN0b3IuVHlwZVNldC5UeXBlQml0Lk51bGwgfCBXZWJJbnNwZWN0b3IuVHlw
ZVNldC5UeXBlQml0LlVuZGVmaW5lZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL01vZGVscy9Vbml0QmV6aWVyLmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1VuaXRCZXppZXIuanMKaW5kZXggNzk5NzQyYi4uNjU2
NTUzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9k
ZWxzL1VuaXRCZXppZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvTW9kZWxzL1VuaXRCZXppZXIuanMKQEAgLTIzLDEwICsyMywxMCBAQAogICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5Vbml0QmV6aWVyID0g
ZnVuY3Rpb24oeDEsIHkxLCB4MiwgeTIpCitXZWJJbnNwZWN0b3IuVW5pdEJlemllciA9IGNsYXNz
IFVuaXRCZXppZXIKK3sKKyAgICBjb25zdHJ1Y3Rvcih4MSwgeTEsIHgyLCB5MikKICAgICB7Ci0g
ICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwotCiAgICAgICAgIC8vIENhbGN1bGF0
ZSB0aGUgcG9seW5vbWlhbCBjb2VmZmljaWVudHMsIGltcGxpY2l0IGZpcnN0IGFuZCBsYXN0IGNv
bnRyb2wgcG9pbnRzIGFyZSAoMCwwKSBhbmQgKDEsMSkuCiAgICAgICAgIHRoaXMuX2N4ID0gMy4w
ICogeDE7CiAgICAgICAgIHRoaXMuX2J4ID0gMy4wICogKHgyIC0geDEpIC0gdGhpcy5fY3g7CkBA
IC0zNSwzOCArMzUsMzUgQEAgV2ViSW5zcGVjdG9yLlVuaXRCZXppZXIgPSBmdW5jdGlvbih4MSwg
eTEsIHgyLCB5MikKICAgICAgICAgdGhpcy5fY3kgPSAzLjAgKiB5MTsKICAgICAgICAgdGhpcy5f
YnkgPSAzLjAgKiAoeTIgLSB5MSkgLSB0aGlzLl9jeTsKICAgICAgICAgdGhpcy5fYXkgPSAxLjAg
LSB0aGlzLl9jeSAtIHRoaXMuX2J5OwotfTsKLQotV2ViSW5zcGVjdG9yLlVuaXRCZXppZXIucHJv
dG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuVW5pdEJlemllciwKKyAg
ICB9CiAKICAgICAvLyBQdWJsaWMKIAotICAgIHNvbHZlOiBmdW5jdGlvbih4LCBlcHNpbG9uKQor
ICAgIHNvbHZlKHgsIGVwc2lsb24pCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc2FtcGxl
Q3VydmVZKHRoaXMuX3NvbHZlQ3VydmVYKHgsIGVwc2lsb24pKTsKLSAgICB9LAorICAgIH0KIAog
ICAgIC8vIFByaXZhdGUKIAotICAgIF9zYW1wbGVDdXJ2ZVg6IGZ1bmN0aW9uKHQpCisgICAgX3Nh
bXBsZUN1cnZlWCh0KQogICAgIHsKICAgICAgICAgLy8gYGF4IHReMyArIGJ4IHReMiArIGN4IHQn
IGV4cGFuZGVkIHVzaW5nIEhvcm5lcidzIHJ1bGUuCiAgICAgICAgIHJldHVybiAoKHRoaXMuX2F4
ICogdCArIHRoaXMuX2J4KSAqIHQgKyB0aGlzLl9jeCkgKiB0OwotICAgIH0sCisgICAgfQogCi0g
ICAgX3NhbXBsZUN1cnZlWTogZnVuY3Rpb24odCkKKyAgICBfc2FtcGxlQ3VydmVZKHQpCiAgICAg
ewogICAgICAgICByZXR1cm4gKCh0aGlzLl9heSAqIHQgKyB0aGlzLl9ieSkgKiB0ICsgdGhpcy5f
Y3kpICogdDsKLSAgICB9LAorICAgIH0KIAotICAgIF9zYW1wbGVDdXJ2ZURlcml2YXRpdmVYOiBm
dW5jdGlvbih0KQorICAgIF9zYW1wbGVDdXJ2ZURlcml2YXRpdmVYKHQpCiAgICAgewogICAgICAg
ICByZXR1cm4gKDMuMCAqIHRoaXMuX2F4ICogdCArIDIuMCAqIHRoaXMuX2J4KSAqIHQgKyB0aGlz
Ll9jeDsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIEdpdmVuIGFuIHggdmFsdWUsIGZpbmQgYSBw
YXJhbWV0cmljIHZhbHVlIGl0IGNhbWUgZnJvbS4KLSAgICBfc29sdmVDdXJ2ZVg6IGZ1bmN0aW9u
KHgsIGVwc2lsb24pCisgICAgX3NvbHZlQ3VydmVYKHgsIGVwc2lsb24pCiAgICAgewogICAgICAg
ICB2YXIgdDAsIHQxLCB0MiwgeDIsIGQyLCBpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9BcHBsaWNhdGlvbkNhY2hlT2JzZXJ2ZXIu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9BcHBsaWNh
dGlvbkNhY2hlT2JzZXJ2ZXIuanMKaW5kZXggZTQ4ZGY4Yi4uZWRlMGI3MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvQXBwbGljYXRpb25D
YWNoZU9ic2VydmVyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1Byb3RvY29sL0FwcGxpY2F0aW9uQ2FjaGVPYnNlcnZlci5qcwpAQCAtMjUsNyArMjUsOCBAQAog
CiBXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZU9ic2VydmVyID0gZnVuY3Rpb24oKQogewot
ICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICAvLyBGSVhNRTogQ29udmVy
dCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIo
KS4KKyAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CiB9OwogCiBXZWJJbnNw
ZWN0b3IuQXBwbGljYXRpb25DYWNoZU9ic2VydmVyLnByb3RvdHlwZSA9IHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0NTU09ic2VydmVy
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvQ1NTT2Jz
ZXJ2ZXIuanMKaW5kZXggMzkxZjg5ZS4uYzA5NGUyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvQ1NTT2JzZXJ2ZXIuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvQ1NTT2JzZXJ2ZXIuanMK
QEAgLTI1LDcgKzI1LDggQEAKIAogV2ViSW5zcGVjdG9yLkNTU09ic2VydmVyID0gZnVuY3Rpb24o
KQogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICAvLyBGSVhNRTog
Q29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwg
c3VwZXIoKS4KKyAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CiB9OwogCiBX
ZWJJbnNwZWN0b3IuQ1NTT2JzZXJ2ZXIucHJvdG90eXBlID0gewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvQ29uc29sZU9ic2VydmVyLmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvQ29uc29sZU9i
c2VydmVyLmpzCmluZGV4IDc2NGU3OTkuLjk3NTk1M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0NvbnNvbGVPYnNlcnZlci5qcworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9Db25zb2xlT2Jz
ZXJ2ZXIuanMKQEAgLTI1LDcgKzI1LDggQEAKIAogV2ViSW5zcGVjdG9yLkNvbnNvbGVPYnNlcnZl
ciA9IGZ1bmN0aW9uKCkKIHsKLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7Cisg
ICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xh
c3MsIGFuZCBjYWxsIHN1cGVyKCkuCisgICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRo
aXMpOwogfTsKIAogV2ViSW5zcGVjdG9yLkNvbnNvbGVPYnNlcnZlci5wcm90b3R5cGUgPSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9E
T01PYnNlcnZlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3Rv
Y29sL0RPTU9ic2VydmVyLmpzCmluZGV4IDliOWU4ZTguLjc3MDAzMWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0RPTU9ic2VydmVyLmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0RPTU9i
c2VydmVyLmpzCkBAIC0yNSw3ICsyNSw4IEBACiAKIFdlYkluc3BlY3Rvci5ET01PYnNlcnZlciA9
IGZ1bmN0aW9uKCkKIHsKLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CisgICAg
Ly8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3Ms
IGFuZCBjYWxsIHN1cGVyKCkuCisgICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMp
OwogfTsKIAogV2ViSW5zcGVjdG9yLkRPTU9ic2VydmVyLnByb3RvdHlwZSA9IHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0RPTVN0b3Jh
Z2VPYnNlcnZlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3Rv
Y29sL0RPTVN0b3JhZ2VPYnNlcnZlci5qcwppbmRleCBkMmMxZTBjLi5kZmU0NWQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9ET01TdG9y
YWdlT2JzZXJ2ZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
UHJvdG9jb2wvRE9NU3RvcmFnZU9ic2VydmVyLmpzCkBAIC0yNiw3ICsyNiw4IEBACiAKIFdlYklu
c3BlY3Rvci5ET01TdG9yYWdlT2JzZXJ2ZXIgPSBmdW5jdGlvbigpCiB7Ci0gICAgV2ViSW5zcGVj
dG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBX
ZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgorICAgIC8vIFdl
Ykluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKIH07CiAKIFdlYkluc3BlY3Rvci5ET01TdG9y
YWdlT2JzZXJ2ZXIucHJvdG90eXBlID0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvRGF0YWJhc2VPYnNlcnZlci5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0RhdGFiYXNlT2JzZXJ2ZXIuanMK
aW5kZXggYmMxMzRhZS4uNjNkYmQ2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvRGF0YWJhc2VPYnNlcnZlci5qcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9EYXRhYmFzZU9ic2VydmVyLmpz
CkBAIC0yNSw3ICsyNSw4IEBACiAKIFdlYkluc3BlY3Rvci5EYXRhYmFzZU9ic2VydmVyID0gZnVu
Y3Rpb24oKQogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICAvLyBG
SVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5k
IGNhbGwgc3VwZXIoKS4KKyAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CiB9
OwogCiBXZWJJbnNwZWN0b3IuRGF0YWJhc2VPYnNlcnZlci5fY2FsbGJhY2tzID0ge307CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9EZWJ1
Z2dlck9ic2VydmVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJv
dG9jb2wvRGVidWdnZXJPYnNlcnZlci5qcwppbmRleCA1MmFhZGM4Li4wNjllOTBlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9EZWJ1Z2dl
ck9ic2VydmVyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1By
b3RvY29sL0RlYnVnZ2VyT2JzZXJ2ZXIuanMKQEAgLTI1LDcgKzI1LDggQEAKIAogV2ViSW5zcGVj
dG9yLkRlYnVnZ2VyT2JzZXJ2ZXIgPSBmdW5jdGlvbigpCiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9i
amVjdC5jYWxsKHRoaXMpOworICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNw
ZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgorICAgIC8vIFdlYkluc3Bl
Y3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKIH07CiAKIFdlYkluc3BlY3Rvci5EZWJ1Z2dlck9ic2Vy
dmVyLnByb3RvdHlwZSA9IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3Rvck9ic2VydmVyLmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yT2JzZXJ2ZXIuanMKaW5kZXgg
N2Q1NGFmNC4uODQ5MTc1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yT2JzZXJ2ZXIuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yT2JzZXJ2ZXIuanMKQEAg
LTI1LDcgKzI1LDggQEAKIAogV2ViSW5zcGVjdG9yLkluc3BlY3Rvck9ic2VydmVyID0gZnVuY3Rp
b24oKQogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICAvLyBGSVhN
RTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNh
bGwgc3VwZXIoKS4KKyAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CiB9Owog
CiBXZWJJbnNwZWN0b3IuSW5zcGVjdG9yT2JzZXJ2ZXIucHJvdG90eXBlID0gewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTGF5ZXJUcmVl
T2JzZXJ2ZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2Nv
bC9MYXllclRyZWVPYnNlcnZlci5qcwppbmRleCBkZGJiOWQzLi41NWNiOTBlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9MYXllclRyZWVP
YnNlcnZlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90
b2NvbC9MYXllclRyZWVPYnNlcnZlci5qcwpAQCAtMjUsNyArMjUsOCBAQAogCiBXZWJJbnNwZWN0
b3IuTGF5ZXJUcmVlT2JzZXJ2ZXIgPSBmdW5jdGlvbigpCiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9i
amVjdC5jYWxsKHRoaXMpOworICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNw
ZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgorICAgIC8vIFdlYkluc3Bl
Y3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKIH07CiAKIFdlYkluc3BlY3Rvci5MYXllclRyZWVPYnNl
cnZlci5wcm90b3R5cGUgPSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Qcm90b2NvbC9OZXR3b3JrT2JzZXJ2ZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9OZXR3b3JrT2JzZXJ2ZXIuanMKaW5kZXggYWJk
NjNkMi4uOGRiOTBlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvUHJvdG9jb2wvTmV0d29ya09ic2VydmVyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL05ldHdvcmtPYnNlcnZlci5qcwpAQCAtMjUsNyAr
MjUsOCBAQAogCiBXZWJJbnNwZWN0b3IuTmV0d29ya09ic2VydmVyID0gZnVuY3Rpb24oKQogewot
ICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICAvLyBGSVhNRTogQ29udmVy
dCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIo
KS4KKyAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CiB9OwogCiBXZWJJbnNw
ZWN0b3IuTmV0d29ya09ic2VydmVyLnByb3RvdHlwZSA9IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1BhZ2VPYnNlcnZlci5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1BhZ2VPYnNlcnZlci5q
cwppbmRleCAxZjEzNGExLi43YmM1ZDFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9QYWdlT2JzZXJ2ZXIuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvUGFnZU9ic2VydmVyLmpzCkBAIC0y
NSw3ICsyNSw4IEBACiAKIFdlYkluc3BlY3Rvci5QYWdlT2JzZXJ2ZXIgPSBmdW5jdGlvbigpCiB7
Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIC8vIEZJWE1FOiBDb252
ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBl
cigpLgorICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKIH07CiAKIFdlYklu
c3BlY3Rvci5QYWdlT2JzZXJ2ZXIucHJvdG90eXBlID0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvUmVwbGF5T2JzZXJ2ZXIuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9SZXBsYXlPYnNlcnZl
ci5qcwppbmRleCA5MTY2ZGI3Li4yY2FkYzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9SZXBsYXlPYnNlcnZlci5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9SZXBsYXlPYnNlcnZlci5q
cwpAQCAtMzcsNyArMzcsOCBAQCBXZWJJbnNwZWN0b3IuUmVwbGF5UG9zaXRpb24uZnJvbVByb3Rv
Y29sID0gZnVuY3Rpb24ocGF5bG9hZCkKIAogV2ViSW5zcGVjdG9yLlJlcGxheU9ic2VydmVyID0g
ZnVuY3Rpb24oKQogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICAv
LyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywg
YW5kIGNhbGwgc3VwZXIoKS4KKyAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7
CiB9OwogCiBXZWJJbnNwZWN0b3IuUmVwbGF5T2JzZXJ2ZXIucHJvdG90eXBlID0gewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvUnVudGlt
ZU9ic2VydmVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9j
b2wvUnVudGltZU9ic2VydmVyLmpzCmluZGV4IGE4YmM3MWQuLjk2OWVkMjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1J1bnRpbWVPYnNl
cnZlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2Nv
bC9SdW50aW1lT2JzZXJ2ZXIuanMKQEAgLTI1LDcgKzI1LDggQEAKIAogV2ViSW5zcGVjdG9yLlJ1
bnRpbWVPYnNlcnZlciA9IGZ1bmN0aW9uKCkKIHsKLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNh
bGwodGhpcyk7CisgICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5P
YmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCkuCisgICAgLy8gV2ViSW5zcGVjdG9yLk9i
amVjdC5jYWxsKHRoaXMpOwogfTsKIAogV2ViSW5zcGVjdG9yLlJ1bnRpbWVPYnNlcnZlci5wcm90
b3R5cGUgPSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Qcm90b2NvbC9UaW1lbGluZU9ic2VydmVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvUHJvdG9jb2wvVGltZWxpbmVPYnNlcnZlci5qcwppbmRleCBiZDg4N2MyLi45
NTE0YmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Q
cm90b2NvbC9UaW1lbGluZU9ic2VydmVyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1Byb3RvY29sL1RpbWVsaW5lT2JzZXJ2ZXIuanMKQEAgLTI1LDcgKzI1LDgg
QEAKIAogV2ViSW5zcGVjdG9yLlRpbWVsaW5lT2JzZXJ2ZXIgPSBmdW5jdGlvbigpCiB7Ci0gICAg
V2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRo
aXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgor
ICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKIH07CiAKIFdlYkluc3BlY3Rv
ci5UaW1lbGluZU9ic2VydmVyLnByb3RvdHlwZSA9IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QuaHRtbCBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1Rlc3QuaHRtbAppbmRleCBiZGY5NGVmLi44MjI2Mzk5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0Lmh0bWwKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1sCkBAIC0xMDksNiAr
MTA5LDcgQEAKICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL1Jlc291cmNlQ29sbGVjdGlvbi5qcyI+
PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9SZXNvdXJjZVRpbWVsaW5lUmVjb3Jk
LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL1JldmlzaW9uLmpzIj48L3Nj
cmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL1J1bkxvb3BUaW1lbGluZVJlY29yZC5qcyI+
PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9TY29wZUNoYWluTm9kZS5qcyI+PC9z
Y3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9TY3JpcHQuanMiPjwvc2NyaXB0PgogICAg
IDxzY3JpcHQgc3JjPSJNb2RlbHMvU2NyaXB0U3ludGF4VHJlZS5qcyI+PC9zY3JpcHQ+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9CcmVha3Bv
aW50QWN0aW9uVmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0JyZWFrcG9pbnRBY3Rpb25WaWV3LmpzCmluZGV4IDA3NWRhODUuLjRjMWRiMzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0JyZWFrcG9p
bnRBY3Rpb25WaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0JyZWFrcG9pbnRBY3Rpb25WaWV3LmpzCkBAIC0yNSw3ICsyNSw4IEBACiAKIFdlYklu
c3BlY3Rvci5CcmVha3BvaW50QWN0aW9uVmlldyA9IGZ1bmN0aW9uKGFjdGlvbiwgZGVsZWdhdGUs
IG9taXRGb2N1cykKIHsKLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CisgICAg
Ly8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3Ms
IGFuZCBjYWxsIHN1cGVyKCkuCisgICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMp
OwogCiAgICAgY29uc29sZS5hc3NlcnQoYWN0aW9uKTsKICAgICBjb25zb2xlLmFzc2VydChkZWxl
Z2F0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLmpzCmluZGV4
IDViY2FjN2YuLjg0ZmZjZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGVjbGFyYXRpb25T
ZWN0aW9uLmpzCkBAIC0yNSw3ICsyNSw4IEBACiAKIFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xh
cmF0aW9uU2VjdGlvbiA9IGZ1bmN0aW9uKHN0eWxlKQogewotICAgIFdlYkluc3BlY3Rvci5PYmpl
Y3QuY2FsbCh0aGlzKTsKKyAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVj
dG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KKyAgICAvLyBXZWJJbnNwZWN0
b3IuT2JqZWN0LmNhbGwodGhpcyk7CiAKICAgICBjb25zb2xlLmFzc2VydChzdHlsZSk7CiAgICAg
dGhpcy5fc3R5bGUgPSBzdHlsZSB8fCBudWxsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3Iu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURl
Y2xhcmF0aW9uVGV4dEVkaXRvci5qcwppbmRleCAzYzU1ZWJmLi4yMDE0YTE2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURlY2xh
cmF0aW9uVGV4dEVkaXRvci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5qcwpAQCAtMjUsNyArMjUs
OCBAQAogCiBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IgPSBmdW5j
dGlvbihkZWxlZ2F0ZSwgc3R5bGUsIGVsZW1lbnQpCiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVj
dC5jYWxsKHRoaXMpOworICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0
b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgorICAgIC8vIFdlYkluc3BlY3Rv
ci5PYmplY3QuY2FsbCh0aGlzKTsKIAogICAgIHRoaXMuX2VsZW1lbnQgPSBlbGVtZW50IHx8IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0
LmFkZChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IuU3R5bGVDbGFz
c05hbWUpOwpAQCAtNzAsNyArNzEsOCBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlv
blRleHRFZGl0b3IgPSBmdW5jdGlvbihkZWxlZ2F0ZSwgc3R5bGUsIGVsZW1lbnQpCiAgICAgdGhp
cy5zdHlsZSA9IHN0eWxlOwogfTsKIAotV2ViSW5zcGVjdG9yLk9iamVjdC5hZGRDb25zdHJ1Y3Rv
ckZ1bmN0aW9ucyhXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IpOwor
Ly8gRklYTUU6IE1vdmUgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzIGFuZCB3ZSBj
YW4gcmVtb3ZlIHRoaXMuCitXZWJJbnNwZWN0b3IuT2JqZWN0LmRlcHJlY2F0ZWRBZGRDb25zdHJ1
Y3RvckZ1bmN0aW9ucyhXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3Ip
OwogCiBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IuU3R5bGVDbGFz
c05hbWUgPSAiY3NzLXN0eWxlLXRleHQtZWRpdG9yIjsKIFdlYkluc3BlY3Rvci5DU1NTdHlsZURl
Y2xhcmF0aW9uVGV4dEVkaXRvci5SZWFkT25seVN0eWxlQ2xhc3NOYW1lID0gInJlYWQtb25seSI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9D
b2xvclBpY2tlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0NvbG9yUGlja2VyLmpzCmluZGV4IDY4OGU2NzAuLjNkMTA3OTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbG9yUGlja2VyLmpzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbG9yUGlja2VyLmpz
CkBAIC0yNSw3ICsyNSw4IEBACiAKIFdlYkluc3BlY3Rvci5Db2xvclBpY2tlciA9IGZ1bmN0aW9u
KCkKIHsKLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CisgICAgLy8gRklYTUU6
IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxs
IHN1cGVyKCkuCisgICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwogCiAgICAg
dGhpcy5fY29sb3JXaGVlbCA9IG5ldyBXZWJJbnNwZWN0b3IuQ29sb3JXaGVlbCgpOwogICAgIHRo
aXMuX2NvbG9yV2hlZWwuZGVsZWdhdGUgPSB0aGlzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29sb3JXaGVlbC5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbG9yV2hlZWwuanMKaW5kZXggMzYxYzM1
Mi4uMGE1N2EyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvQ29sb3JXaGVlbC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9Db2xvcldoZWVsLmpzCkBAIC0yNSw3ICsyNSw4IEBACiAKIFdlYkluc3Bl
Y3Rvci5Db2xvcldoZWVsID0gZnVuY3Rpb24oKQogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3Qu
Y2FsbCh0aGlzKTsKKyAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9y
Lk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KKyAgICAvLyBXZWJJbnNwZWN0b3Iu
T2JqZWN0LmNhbGwodGhpcyk7CiAKICAgICB0aGlzLl9yYXdDYW52YXMgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJjYW52YXMiKTsKICAgICB0aGlzLl90aW50ZWRDYW52YXMgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJjYW52YXMiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbXBsZXRpb25TdWdnZXN0aW9uc1ZpZXcuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db21wbGV0aW9uU3VnZ2VzdGlv
bnNWaWV3LmpzCmluZGV4IDcxMDk3MTYuLmU1YmUzNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbXBsZXRpb25TdWdnZXN0aW9uc1ZpZXcu
anMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29tcGxl
dGlvblN1Z2dlc3Rpb25zVmlldy5qcwpAQCAtMjUsNyArMjUsOCBAQAogCiBXZWJJbnNwZWN0b3Iu
Q29tcGxldGlvblN1Z2dlc3Rpb25zVmlldyA9IGZ1bmN0aW9uKGRlbGVnYXRlKQogewotICAgIFdl
Ykluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICAvLyBGSVhNRTogQ29udmVydCB0aGlz
IHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KKyAg
ICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CiAKICAgICB0aGlzLl9kZWxlZ2F0
ZSA9IGRlbGVnYXRlIHx8IG51bGw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnNvbGVDb21tYW5kLmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29uc29sZUNvbW1hbmQuanMKaW5kZXggYTk3N2E0
My4uYTljNTNmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvQ29uc29sZUNvbW1hbmQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvQ29uc29sZUNvbW1hbmQuanMKQEAgLTI5LDcgKzI5LDggQEAKIAog
V2ViSW5zcGVjdG9yLkNvbnNvbGVDb21tYW5kID0gZnVuY3Rpb24oY29tbWFuZCkKIHsKLSAgICBX
ZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CisgICAgLy8gRklYTUU6IENvbnZlcnQgdGhp
cyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCkuCisg
ICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwogCiAgICAgdGhpcy5jb21tYW5k
ID0gY29tbWFuZDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9Db25zb2xlR3JvdXAuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9Db25zb2xlR3JvdXAuanMKaW5kZXggMGQ1MjU3OC4uOTA1NmY1ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29u
c29sZUdyb3VwLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0NvbnNvbGVHcm91cC5qcwpAQCAtMjksNyArMjksOCBAQAogCiBXZWJJbnNwZWN0b3IuQ29u
c29sZUdyb3VwID0gZnVuY3Rpb24ocGFyZW50R3JvdXApCiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9i
amVjdC5jYWxsKHRoaXMpOworICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNw
ZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgorICAgIC8vIFdlYkluc3Bl
Y3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKIAogICAgIHRoaXMucGFyZW50R3JvdXAgPSBwYXJlbnRH
cm91cDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9Db25zb2xlUHJvbXB0LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvQ29uc29sZVByb21wdC5qcwppbmRleCAxY2ZmYzQ5Li5kNDk3YjFjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db25zb2xl
UHJvbXB0LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0NvbnNvbGVQcm9tcHQuanMKQEAgLTI1LDcgKzI1LDggQEAKIAogV2ViSW5zcGVjdG9yLkNvbnNv
bGVQcm9tcHQgPSBmdW5jdGlvbihkZWxlZ2F0ZSwgbWltZVR5cGUsIGVsZW1lbnQpCiB7Ci0gICAg
V2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRo
aXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgor
ICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKIAogICAgIG1pbWVUeXBlID0g
cGFyc2VNSU1FVHlwZShtaW1lVHlwZSkudHlwZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29uc29sZVNlc3Npb24uanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db25zb2xlU2Vzc2lvbi5qcwppbmRl
eCBlZjFkOGQwLi5jNjE1OWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9Db25zb2xlU2Vzc2lvbi5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db25zb2xlU2Vzc2lvbi5qcwpAQCAtMjgsNyArMjgs
OCBAQAogCiBXZWJJbnNwZWN0b3IuQ29uc29sZVNlc3Npb24gPSBmdW5jdGlvbigpCiB7Ci0gICAg
V2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRo
aXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgor
ICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKIAogICAgIHZhciBlbGVtZW50
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgZWxlbWVudC5jbGFzc05hbWUg
PSAiY29uc29sZS1zZXNzaW9uIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRCcm93c2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudEJyb3dzZXIuanMKaW5kZXggM2NjM2Q0ZC4u
ZWE2MDQ0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvQ29udGVudEJyb3dzZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvQ29udGVudEJyb3dzZXIuanMKQEAgLTI1LDcgKzI1LDggQEAKIAogV2Vi
SW5zcGVjdG9yLkNvbnRlbnRCcm93c2VyID0gZnVuY3Rpb24oZWxlbWVudCwgZGVsZWdhdGUsIGRp
c2FibGVCYWNrRm9yd2FyZCkKIHsKLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7
CisgICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3Vi
Y2xhc3MsIGFuZCBjYWxsIHN1cGVyKCkuCisgICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxs
KHRoaXMpOwogCiAgICAgdGhpcy5fZWxlbWVudCA9IGVsZW1lbnQgfHwgZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiZGl2Iik7CiAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3Bl
Y3Rvci5Db250ZW50QnJvd3Nlci5TdHlsZUNsYXNzTmFtZSk7CkBAIC04OSw3ICs5MCw4IEBAIFdl
Ykluc3BlY3Rvci5Db250ZW50QnJvd3NlciA9IGZ1bmN0aW9uKGVsZW1lbnQsIGRlbGVnYXRlLCBk
aXNhYmxlQmFja0ZvcndhcmQpCiAgICAgdGhpcy5fY3VycmVudENvbnRlbnRWaWV3TmF2aWdhdGlv
bkl0ZW1zID0gW107CiB9OwogCi1XZWJJbnNwZWN0b3IuT2JqZWN0LmFkZENvbnN0cnVjdG9yRnVu
Y3Rpb25zKFdlYkluc3BlY3Rvci5Db250ZW50QnJvd3Nlcik7CisvLyBGSVhNRTogTW92ZSB0byBh
IFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MgYW5kIHdlIGNhbiByZW1vdmUgdGhpcy4KK1dl
Ykluc3BlY3Rvci5PYmplY3QuZGVwcmVjYXRlZEFkZENvbnN0cnVjdG9yRnVuY3Rpb25zKFdlYklu
c3BlY3Rvci5Db250ZW50QnJvd3Nlcik7CiAKIFdlYkluc3BlY3Rvci5Db250ZW50QnJvd3Nlci5T
dHlsZUNsYXNzTmFtZSA9ICJjb250ZW50LWJyb3dzZXIiOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50Vmlldy5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3LmpzCmluZGV4
IDA5NmYzYjguLjgyYmI4OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3LmpzCkBAIC05Niw3ICs5Niw4IEBAIFdl
Ykluc3BlY3Rvci5Db250ZW50VmlldyA9IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0KQogICAg
IGNvbnNvbGUuYXNzZXJ0KHRoaXMuY29uc3RydWN0b3IgIT09IFdlYkluc3BlY3Rvci5Db250ZW50
VmlldyAmJiB0aGlzIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3KTsKICAgICBj
b25zb2xlLmFzc2VydChXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuaXNWaWV3YWJsZShyZXByZXNl
bnRlZE9iamVjdCkpOwogCi0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAg
IC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNz
LCBhbmQgY2FsbCBzdXBlcigpLgorICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlz
KTsKIAogICAgIHRoaXMuX3JlcHJlc2VudGVkT2JqZWN0ID0gcmVwcmVzZW50ZWRPYmplY3Q7CiAK
QEAgLTEwNiw3ICsxMDcsOCBAQCBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcgPSBmdW5jdGlvbihy
ZXByZXNlbnRlZE9iamVjdCkKICAgICB0aGlzLl9wYXJlbnRDb250YWluZXIgPSBudWxsOwogfTsK
IAotV2ViSW5zcGVjdG9yLk9iamVjdC5hZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhXZWJJbnNwZWN0
b3IuQ29udGVudFZpZXcpOworLy8gRklYTUU6IE1vdmUgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0
IHN1YmNsYXNzIGFuZCB3ZSBjYW4gcmVtb3ZlIHRoaXMuCitXZWJJbnNwZWN0b3IuT2JqZWN0LmRl
cHJlY2F0ZWRBZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcp
OwogCiBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuaXNWaWV3YWJsZSA9IGZ1bmN0aW9uKHJlcHJl
c2VudGVkT2JqZWN0KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvQ29udGVudFZpZXdDb250YWluZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50Vmlld0NvbnRhaW5lci5qcwppbmRleCBj
MGRlZGNkLi5jMWVjMTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9Db250ZW50Vmlld0NvbnRhaW5lci5qcworKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50Vmlld0NvbnRhaW5lci5qcwpAQCAt
MjUsNyArMjUsOCBAQAogCiBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb250YWluZXIgPSBmdW5j
dGlvbihlbGVtZW50KQogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAg
ICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFz
cywgYW5kIGNhbGwgc3VwZXIoKS4KKyAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhp
cyk7CiAKICAgICB0aGlzLl9lbGVtZW50ID0gZWxlbWVudCB8fCBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJkaXYiKTsKICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9y
LkNvbnRlbnRWaWV3Q29udGFpbmVyLlN0eWxlQ2xhc3NOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVPdXRsaW5lLmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZU91dGxpbmUu
anMKaW5kZXggNTFhMzJhMi4uODg1Zjc4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZU91dGxpbmUuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZU91dGxpbmUuanMKQEAgLTYz
LDcgKzYzLDggQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVPdXRsaW5lID0gZnVuY3Rpb24ob21pdFJv
b3RET01Ob2RlLCBzZWxlY3RFbmFibGVkLCBzaG93SW5FbGUKICAgICBXZWJJbnNwZWN0b3Iuc2hv
d1NoYWRvd0RPTVNldHRpbmcuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU2V0dGluZy5F
dmVudC5DaGFuZ2VkLCB0aGlzLl9zaG93U2hhZG93RE9NU2V0dGluZ0NoYW5nZWQsIHRoaXMpOwog
fTsKIAotV2ViSW5zcGVjdG9yLk9iamVjdC5hZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhXZWJJbnNw
ZWN0b3IuRE9NVHJlZU91dGxpbmUpOworLy8gRklYTUU6IE1vdmUgdG8gYSBXZWJJbnNwZWN0b3Iu
T2JqZWN0IHN1YmNsYXNzIGFuZCB3ZSBjYW4gcmVtb3ZlIHRoaXMuCitXZWJJbnNwZWN0b3IuT2Jq
ZWN0LmRlcHJlY2F0ZWRBZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhXZWJJbnNwZWN0b3IuRE9NVHJl
ZU91dGxpbmUpOwogCiBXZWJJbnNwZWN0b3IuRE9NVHJlZU91dGxpbmUuU3R5bGVDbGFzc05hbWUg
PSAiZG9tLXRyZWUtb3V0bGluZSI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Rhc2hib2FyZENvbnRhaW5lclZpZXcuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EYXNoYm9hcmRDb250YWluZXJWaWV3
LmpzCmluZGV4IGFlZDk2MTkuLjkzODFmNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Rhc2hib2FyZENvbnRhaW5lclZpZXcuanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGFzaGJvYXJkQ29udGFp
bmVyVmlldy5qcwpAQCAtMjQsNyArMjQsOCBAQAogICovCiAKIFdlYkluc3BlY3Rvci5EYXNoYm9h
cmRDb250YWluZXJWaWV3ID0gZnVuY3Rpb24oKSB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5j
YWxsKHRoaXMpOworICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3Iu
T2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgorICAgIC8vIFdlYkluc3BlY3Rvci5P
YmplY3QuY2FsbCh0aGlzKTsKIAogICAgIHRoaXMuX3Rvb2xiYXJJdGVtID0gbmV3IFdlYkluc3Bl
Y3Rvci5OYXZpZ2F0aW9uSXRlbSgiZGFzaGJvYXJkLWNvbnRhaW5lciIsICJncm91cCIsIFdlYklu
c3BlY3Rvci5VSVN0cmluZygiQWN0aXZpdHkgVmlld2VyIikpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EYXNoYm9hcmRWaWV3LmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGFzaGJvYXJkVmlldy5q
cwppbmRleCA1NWU0Y2NkLi5iNzM0NWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9EYXNoYm9hcmRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Rhc2hib2FyZFZpZXcuanMKQEAgLTQ1LDcg
KzQ1LDggQEAgV2ViSW5zcGVjdG9yLkRhc2hib2FyZFZpZXcgPSBmdW5jdGlvbihyZXByZXNlbnRl
ZE9iamVjdCwgaWRlbnRpZmllcikKICAgICBjb25zb2xlLmFzc2VydCh0aGlzLmNvbnN0cnVjdG9y
ICE9PSBXZWJJbnNwZWN0b3IuRGFzaGJvYXJkVmlldyAmJiB0aGlzIGluc3RhbmNlb2YgV2ViSW5z
cGVjdG9yLkRhc2hib2FyZFZpZXcpOwogICAgIGNvbnNvbGUuYXNzZXJ0KGlkZW50aWZpZXIpOwog
Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIC8vIEZJWE1FOiBDb252
ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBl
cigpLgorICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKIAogICAgIHRoaXMu
X3JlcHJlc2VudGVkT2JqZWN0ID0gcmVwcmVzZW50ZWRPYmplY3Q7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RldGFpbHNTZWN0aW9uLmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGV0YWlsc1NlY3Rp
b24uanMKaW5kZXggMGIxMjk2NS4uMzk2NTU1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGV0YWlsc1NlY3Rpb24uanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGV0YWlsc1NlY3Rpb24uanMKQEAg
LTI0LDcgKzI0LDggQEAKICAqLwogCiBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24gPSBmdW5j
dGlvbihpZGVudGlmaWVyLCB0aXRsZSwgZ3JvdXBzLCBvcHRpb25zRWxlbWVudCwgZGVmYXVsdENv
bGxhcHNlZFNldHRpbmdWYWx1ZSkgewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlz
KTsKKyAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBz
dWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KKyAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNh
bGwodGhpcyk7CiAKICAgICBjb25zb2xlLmFzc2VydChpZGVudGlmaWVyKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGV0YWlsc1NlY3Rp
b25Hcm91cC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Rl
dGFpbHNTZWN0aW9uR3JvdXAuanMKaW5kZXggOTFkNGU3Yi4uNjcyOWZhYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGV0YWlsc1NlY3Rpb25H
cm91cC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9E
ZXRhaWxzU2VjdGlvbkdyb3VwLmpzCkBAIC0yNCw3ICsyNCw4IEBACiAgKi8KIAogV2ViSW5zcGVj
dG9yLkRldGFpbHNTZWN0aW9uR3JvdXAgPSBmdW5jdGlvbihyb3dzKSB7Ci0gICAgV2ViSW5zcGVj
dG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBX
ZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgorICAgIC8vIFdl
Ykluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKIAogICAgIHRoaXMuX2VsZW1lbnQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTmFtZSA9
IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdyb3VwLlN0eWxlQ2xhc3NOYW1lOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGV0YWlsc1Nl
Y3Rpb25Sb3cuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9E
ZXRhaWxzU2VjdGlvblJvdy5qcwppbmRleCAzMDBlZTQ0Li5hYzViODA5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EZXRhaWxzU2VjdGlvblJv
dy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EZXRh
aWxzU2VjdGlvblJvdy5qcwpAQCAtMjQsNyArMjQsOCBAQAogICovCiAKIFdlYkluc3BlY3Rvci5E
ZXRhaWxzU2VjdGlvblJvdyA9IGZ1bmN0aW9uKGVtcHR5TWVzc2FnZSkgewotICAgIFdlYkluc3Bl
Y3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEg
V2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KKyAgICAvLyBX
ZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CiAKICAgICB0aGlzLl9lbGVtZW50ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgdGhpcy5fZWxlbWVudC5jbGFzc05hbWUg
PSBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3cuU3R5bGVDbGFzc05hbWU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9GaWx0ZXJCYXIu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9GaWx0ZXJCYXIu
anMKaW5kZXggZTI1NGI3MC4uNjMzZWNlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRmlsdGVyQmFyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0ZpbHRlckJhci5qcwpAQCAtMjQsNyArMjQsOCBA
QAogICovCiAKIFdlYkluc3BlY3Rvci5GaWx0ZXJCYXIgPSBmdW5jdGlvbihlbGVtZW50KSB7Ci0g
ICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIC8vIEZJWE1FOiBDb252ZXJ0
IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigp
LgorICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKIAogICAgIHRoaXMuX2Vs
ZW1lbnQgPSBlbGVtZW50IHx8IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgIHRo
aXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuRmlsdGVyQmFyLlN0eWxlQ2xh
c3NOYW1lKTsKQEAgLTM3LDcgKzM4LDggQEAgV2ViSW5zcGVjdG9yLkZpbHRlckJhciA9IGZ1bmN0
aW9uKGVsZW1lbnQpIHsKICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2lucHV0
RmllbGQpOwogfTsKIAotV2ViSW5zcGVjdG9yLk9iamVjdC5hZGRDb25zdHJ1Y3RvckZ1bmN0aW9u
cyhXZWJJbnNwZWN0b3IuRmlsdGVyQmFyKTsKKy8vIEZJWE1FOiBNb3ZlIHRvIGEgV2ViSW5zcGVj
dG9yLk9iamVjdCBzdWJjbGFzcyBhbmQgd2UgY2FuIHJlbW92ZSB0aGlzLgorV2ViSW5zcGVjdG9y
Lk9iamVjdC5kZXByZWNhdGVkQWRkQ29uc3RydWN0b3JGdW5jdGlvbnMoV2ViSW5zcGVjdG9yLkZp
bHRlckJhcik7CiAKIFdlYkluc3BlY3Rvci5GaWx0ZXJCYXIuU3R5bGVDbGFzc05hbWUgPSAiZmls
dGVyLWJhciI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0ZpbmRCYW5uZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9GaW5kQmFubmVyLmpzCmluZGV4IGY4YWQ4NmIuLmJmOWNlYWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0ZpbmRCYW5uZXIu
anMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRmluZEJh
bm5lci5qcwpAQCAtMjQsNyArMjQsOCBAQAogICovCiAKIFdlYkluc3BlY3Rvci5GaW5kQmFubmVy
ID0gZnVuY3Rpb24oZGVsZWdhdGUsIGVsZW1lbnQpIHsKLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0
LmNhbGwodGhpcyk7CisgICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rv
ci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCkuCisgICAgLy8gV2ViSW5zcGVjdG9y
Lk9iamVjdC5jYWxsKHRoaXMpOwogCiAgICAgdGhpcy5fZGVsZWdhdGUgPSBkZWxlZ2F0ZSB8fCBu
dWxsOwogCkBAIC04Niw3ICs4Nyw4IEBAIFdlYkluc3BlY3Rvci5GaW5kQmFubmVyID0gZnVuY3Rp
b24oZGVsZWdhdGUsIGVsZW1lbnQpIHsKICAgICB0aGlzLl9nZW5lcmF0ZUJ1dHRvbnNHbHlwaHNJ
Zk5lZWRlZCgpOwogfTsKIAotV2ViSW5zcGVjdG9yLk9iamVjdC5hZGRDb25zdHJ1Y3RvckZ1bmN0
aW9ucyhXZWJJbnNwZWN0b3IuRmluZEJhbm5lcik7CisvLyBGSVhNRTogTW92ZSB0byBhIFdlYklu
c3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MgYW5kIHdlIGNhbiByZW1vdmUgdGhpcy4KK1dlYkluc3Bl
Y3Rvci5PYmplY3QuZGVwcmVjYXRlZEFkZENvbnN0cnVjdG9yRnVuY3Rpb25zKFdlYkluc3BlY3Rv
ci5GaW5kQmFubmVyKTsKIAogV2ViSW5zcGVjdG9yLkZpbmRCYW5uZXIuU3R5bGVDbGFzc05hbWUg
PSAiZmluZC1iYW5uZXIiOwogV2ViSW5zcGVjdG9yLkZpbmRCYW5uZXIuU3VwcG9ydHNGaW5kQmFu
bmVyU3R5bGVDbGFzc05hbWUgPSAic3VwcG9ydHMtZmluZC1iYW5uZXIiOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvR29Ub0xpbmVEaWFsb2cu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Hb1RvTGluZURp
YWxvZy5qcwppbmRleCAxZDA3N2MzLi5mNWY3ZDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Hb1RvTGluZURpYWxvZy5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Hb1RvTGluZURpYWxvZy5qcwpA
QCAtMjUsNyArMjUsOCBAQAogCiBXZWJJbnNwZWN0b3IuR29Ub0xpbmVEaWFsb2cgPSBmdW5jdGlv
bigpCiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIC8vIEZJWE1F
OiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2Fs
bCBzdXBlcigpLgorICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKIAogICAg
IHRoaXMuX2VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICB0aGlz
Ll9lbGVtZW50LmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5Hb1RvTGluZURpYWxvZy5TdHlsZUNs
YXNzTmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0hpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9IaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50LmpzCmluZGV4
IDMzMjg2ODQuLmFkMTMzYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0hpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSGllcmFyY2hpY2FsUGF0aENvbXBv
bmVudC5qcwpAQCAtMjUsNyArMjUsOCBAQAogCiBXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0
aENvbXBvbmVudCA9IGZ1bmN0aW9uKGRpc3BsYXlOYW1lLCBzdHlsZUNsYXNzTmFtZXMsIHJlcHJl
c2VudGVkT2JqZWN0LCB0ZXh0T25seSwgc2hvd1NlbGVjdG9yQXJyb3dzKQogewotICAgIFdlYklu
c3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRv
IGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KKyAgICAv
LyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CiAKICAgICBjb25zb2xlLmFzc2VydChk
aXNwbGF5TmFtZSk7CiAgICAgY29uc29sZS5hc3NlcnQoc3R5bGVDbGFzc05hbWVzKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0hvdmVyTWVu
dS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0hvdmVyTWVu
dS5qcwppbmRleCBhYmNjNDA1Li5iOWJhZjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Ib3Zlck1lbnUuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSG92ZXJNZW51LmpzCkBAIC0yNSw3ICsyNSw4
IEBACiAKIFdlYkluc3BlY3Rvci5Ib3Zlck1lbnUgPSBmdW5jdGlvbihkZWxlZ2F0ZSkKIHsKLSAg
ICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CisgICAgLy8gRklYTUU6IENvbnZlcnQg
dGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCku
CisgICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwogCiAgICAgdGhpcy5kZWxl
Z2F0ZSA9IGRlbGVnYXRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9JbmRldGVybWluYXRlUHJvZ3Jlc3NTcGlubmVyLmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSW5kZXRlcm1pbmF0ZVByb2dyZXNz
U3Bpbm5lci5qcwppbmRleCA5NDk4YmRjLi41YmYyZDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9JbmRldGVybWluYXRlUHJvZ3Jlc3NTcGlu
bmVyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0lu
ZGV0ZXJtaW5hdGVQcm9ncmVzc1NwaW5uZXIuanMKQEAgLTI1LDcgKzI1LDggQEAKIAogV2ViSW5z
cGVjdG9yLkluZGV0ZXJtaW5hdGVQcm9ncmVzc1NwaW5uZXIgPSBmdW5jdGlvbigpCiB7Ci0gICAg
V2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRo
aXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgor
ICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKIAogICAgIHRoaXMuX2VsZW1l
bnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICB0aGlzLl9lbGVtZW50LmNs
YXNzTmFtZSA9IFdlYkluc3BlY3Rvci5JbmRldGVybWluYXRlUHJvZ3Jlc3NTcGlubmVyLlN0eWxl
Q2xhc3NOYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvTGF5b3V0VGltZWxpbmVEYXRhR3JpZE5vZGUuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9MYXlvdXRUaW1lbGluZURhdGFHcmlkTm9kZS5qcwpp
bmRleCA1ZTFjYTgxLi5hMDYyYWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9MYXlvdXRUaW1lbGluZURhdGFHcmlkTm9kZS5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9MYXlvdXRUaW1lbGluZURh
dGFHcmlkTm9kZS5qcwpAQCAtMzEsNyArMzEsOCBAQCBXZWJJbnNwZWN0b3IuTGF5b3V0VGltZWxp
bmVEYXRhR3JpZE5vZGUgPSBmdW5jdGlvbihsYXlvdXRUaW1lbGluZVJlY29yZCwgYmFzZVN0YQog
ICAgIHRoaXMuX2Jhc2VTdGFydFRpbWUgPSBiYXNlU3RhcnRUaW1lIHx8IDA7CiB9OwogCi1XZWJJ
bnNwZWN0b3IuT2JqZWN0LmFkZENvbnN0cnVjdG9yRnVuY3Rpb25zKFdlYkluc3BlY3Rvci5MYXlv
dXRUaW1lbGluZURhdGFHcmlkTm9kZSk7CisvLyBGSVhNRTogTW92ZSB0byBhIFdlYkluc3BlY3Rv
ci5PYmplY3Qgc3ViY2xhc3MgYW5kIHdlIGNhbiByZW1vdmUgdGhpcy4KK1dlYkluc3BlY3Rvci5P
YmplY3QuZGVwcmVjYXRlZEFkZENvbnN0cnVjdG9yRnVuY3Rpb25zKFdlYkluc3BlY3Rvci5MYXlv
dXRUaW1lbGluZURhdGFHcmlkTm9kZSk7CiAKIFdlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZURh
dGFHcmlkTm9kZS5JY29uU3R5bGVDbGFzc05hbWUgPSAiaWNvbiI7CiBXZWJJbnNwZWN0b3IuTGF5
b3V0VGltZWxpbmVEYXRhR3JpZE5vZGUuU3VidGl0bGVTdHlsZUNsYXNzTmFtZSA9ICJzdWJ0aXRs
ZSI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9OYXZpZ2F0aW9uQmFyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvTmF2aWdhdGlvbkJhci5qcwppbmRleCA2MzA2MjkyLi5mYjMzNjJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9OYXZpZ2F0aW9uQmFy
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05hdmln
YXRpb25CYXIuanMKQEAgLTI0LDcgKzI0LDggQEAKICAqLwogCiBXZWJJbnNwZWN0b3IuTmF2aWdh
dGlvbkJhciA9IGZ1bmN0aW9uKGVsZW1lbnQsIG5hdmlnYXRpb25JdGVtcywgcm9sZSwgbGFiZWwp
IHsKLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CisgICAgLy8gRklYTUU6IENv
bnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1
cGVyKCkuCisgICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwogCiAgICAgdGhp
cy5fZWxlbWVudCA9IGVsZW1lbnQgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAg
ICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKHRoaXMuY29uc3RydWN0b3IuU3R5bGVDbGFz
c05hbWUgfHwgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIuU3R5bGVDbGFzc05hbWUpOwpAQCAt
NTQsNyArNTUsOCBAQCBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhciA9IGZ1bmN0aW9uKGVsZW1l
bnQsIG5hdmlnYXRpb25JdGVtcywgcm9sZSwgbGFiZWwpIHsKICAgICBkb2N1bWVudC5oZWFkLmFw
cGVuZENoaWxkKHRoaXMuX3N0eWxlRWxlbWVudCk7CiB9OwogCi1XZWJJbnNwZWN0b3IuT2JqZWN0
LmFkZENvbnN0cnVjdG9yRnVuY3Rpb25zKFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyKTsKKy8v
IEZJWE1FOiBNb3ZlIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcyBhbmQgd2UgY2Fu
IHJlbW92ZSB0aGlzLgorV2ViSW5zcGVjdG9yLk9iamVjdC5kZXByZWNhdGVkQWRkQ29uc3RydWN0
b3JGdW5jdGlvbnMoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIpOwogCiBXZWJJbnNwZWN0b3Iu
TmF2aWdhdGlvbkJhci5TdHlsZUNsYXNzTmFtZSA9ICJuYXZpZ2F0aW9uLWJhciI7CiBXZWJJbnNw
ZWN0b3IuTmF2aWdhdGlvbkJhci5Db2xsYXBzZWRTdHlsZUNsYXNzTmFtZSA9ICJjb2xsYXBzZWQi
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
TmF2aWdhdGlvbkl0ZW0uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9OYXZpZ2F0aW9uSXRlbS5qcwppbmRleCAyOWMxMTI4Li5hMzEyNTY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9OYXZpZ2F0aW9uSXRl
bS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9OYXZp
Z2F0aW9uSXRlbS5qcwpAQCAtMjQsNyArMjQsOCBAQAogICovCiAKIFdlYkluc3BlY3Rvci5OYXZp
Z2F0aW9uSXRlbSA9IGZ1bmN0aW9uKGlkZW50aWZpZXIsIHJvbGUsIGxhYmVsKSB7Ci0gICAgV2Vi
SW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMg
dG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgorICAg
IC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKIAogICAgIHRoaXMuX2lkZW50aWZp
ZXIgPSBpZGVudGlmaWVyIHx8IG51bGw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL09iamVjdFByZXZpZXdWaWV3LmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvT2JqZWN0UHJldmlld1ZpZXcuanMKaW5k
ZXggYzdlZDk2ZS4uYTFjYmI5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvT2JqZWN0UHJldmlld1ZpZXcuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvT2JqZWN0UHJldmlld1ZpZXcuanMKQEAgLTI1
LDcgKzI1LDggQEAKIAogV2ViSW5zcGVjdG9yLk9iamVjdFByZXZpZXdWaWV3ID0gZnVuY3Rpb24o
cHJldmlldywgbW9kZSkKIHsKLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7Cisg
ICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xh
c3MsIGFuZCBjYWxsIHN1cGVyKCkuCisgICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRo
aXMpOwogCiAgICAgY29uc29sZS5hc3NlcnQocHJldmlldyBpbnN0YW5jZW9mIFdlYkluc3BlY3Rv
ci5PYmplY3RQcmV2aWV3KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvT2JqZWN0VHJlZVZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9PYmplY3RUcmVlVmlldy5qcwppbmRleCA2N2VhNzI1Li4w
ZDU1M2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9PYmplY3RUcmVlVmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9PYmplY3RUcmVlVmlldy5qcwpAQCAtMjUsNyArMjUsOCBAQAogCiBXZWJJ
bnNwZWN0b3IuT2JqZWN0VHJlZVZpZXcgPSBmdW5jdGlvbihvYmplY3QsIG1vZGUsIHByb3BlcnR5
UGF0aCwgZm9yY2VFeHBhbmRpbmcpCiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRo
aXMpOworICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0
IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgorICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3Qu
Y2FsbCh0aGlzKTsKIAogICAgIGNvbnNvbGUuYXNzZXJ0KG9iamVjdCBpbnN0YW5jZW9mIFdlYklu
c3BlY3Rvci5SZW1vdGVPYmplY3QpOwogICAgIGNvbnNvbGUuYXNzZXJ0KCFwcm9wZXJ0eVBhdGgg
fHwgcHJvcGVydHlQYXRoIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlByb3BlcnR5UGF0aCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Qb3Bv
dmVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUG9wb3Zl
ci5qcwppbmRleCBlNDYwYzdiLi5mNmQ5OWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Qb3BvdmVyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1BvcG92ZXIuanMKQEAgLTI0LDcgKzI0LDggQEAK
ICAqLwogCiBXZWJJbnNwZWN0b3IuUG9wb3ZlciA9IGZ1bmN0aW9uKGRlbGVnYXRlKSB7Ci0gICAg
V2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRo
aXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgor
ICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKIAogICAgIHRoaXMuZGVsZWdh
dGUgPSBkZWxlZ2F0ZTsKICAgICB0aGlzLl9lZGdlID0gbnVsbDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Byb2ZpbGVOb2RlRGF0YUdyaWRO
b2RlLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUHJvZmls
ZU5vZGVEYXRhR3JpZE5vZGUuanMKaW5kZXggYTYwNDFhYy4uZWRlMTFjNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUHJvZmlsZU5vZGVEYXRh
R3JpZE5vZGUuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvUHJvZmlsZU5vZGVEYXRhR3JpZE5vZGUuanMKQEAgLTM4LDcgKzM4LDggQEAgV2ViSW5zcGVj
dG9yLlByb2ZpbGVOb2RlRGF0YUdyaWROb2RlID0gZnVuY3Rpb24ocHJvZmlsZU5vZGUsIGJhc2VT
dGFydFRpbWUsIHJhbmcKICAgICB0aGlzLl9kYXRhLmxvY2F0aW9uID0gdGhpcy5fcHJvZmlsZU5v
ZGUuc291cmNlQ29kZUxvY2F0aW9uOwogfTsKIAotV2ViSW5zcGVjdG9yLk9iamVjdC5hZGRDb25z
dHJ1Y3RvckZ1bmN0aW9ucyhXZWJJbnNwZWN0b3IuUHJvZmlsZU5vZGVEYXRhR3JpZE5vZGUpOwor
Ly8gRklYTUU6IE1vdmUgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzIGFuZCB3ZSBj
YW4gcmVtb3ZlIHRoaXMuCitXZWJJbnNwZWN0b3IuT2JqZWN0LmRlcHJlY2F0ZWRBZGRDb25zdHJ1
Y3RvckZ1bmN0aW9ucyhXZWJJbnNwZWN0b3IuUHJvZmlsZU5vZGVEYXRhR3JpZE5vZGUpOwogCiBX
ZWJJbnNwZWN0b3IuUHJvZmlsZU5vZGVEYXRhR3JpZE5vZGUuSWNvblN0eWxlQ2xhc3NOYW1lID0g
Imljb24iOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9RdWlja0NvbnNvbGUuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9RdWlja0NvbnNvbGUuanMKaW5kZXggZTEwYWZlYS4uNzgxNTI0MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUXVpY2tDb25z
b2xlLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1F1
aWNrQ29uc29sZS5qcwpAQCAtMjUsNyArMjUsOCBAQAogCiBXZWJJbnNwZWN0b3IuUXVpY2tDb25z
b2xlID0gZnVuY3Rpb24oZWxlbWVudCkKIHsKLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwo
dGhpcyk7CisgICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmpl
Y3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCkuCisgICAgLy8gV2ViSW5zcGVjdG9yLk9iamVj
dC5jYWxsKHRoaXMpOwogCiAgICAgdGhpcy5fdG9nZ2xlT3JGb2N1c0tleWJvYXJkU2hvcnRjdXQg
PSBuZXcgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQobnVsbCwgV2ViSW5zcGVjdG9yLktl
eWJvYXJkU2hvcnRjdXQuS2V5LkVzY2FwZSwgdGhpcy5fdG9nZ2xlT3JGb2N1cy5iaW5kKHRoaXMp
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvUmVzb3VyY2VUaW1lbGluZURhdGFHcmlkTm9kZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlVGltZWxpbmVEYXRhR3JpZE5vZGUuanMKaW5k
ZXggOWI2YWM3ZC4uODM5MzM1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VUaW1lbGluZURhdGFHcmlkTm9kZS5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZVRpbWVsaW5l
RGF0YUdyaWROb2RlLmpzCkBAIC00Miw3ICs0Miw4IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVRp
bWVsaW5lRGF0YUdyaWROb2RlID0gZnVuY3Rpb24ocmVzb3VyY2VUaW1lbGluZVJlY29yZCwgZ3Jh
CiAgICAgfQogfTsKIAotV2ViSW5zcGVjdG9yLk9iamVjdC5hZGRDb25zdHJ1Y3RvckZ1bmN0aW9u
cyhXZWJJbnNwZWN0b3IuUmVzb3VyY2VUaW1lbGluZURhdGFHcmlkTm9kZSk7CisvLyBGSVhNRTog
TW92ZSB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MgYW5kIHdlIGNhbiByZW1vdmUg
dGhpcy4KK1dlYkluc3BlY3Rvci5PYmplY3QuZGVwcmVjYXRlZEFkZENvbnN0cnVjdG9yRnVuY3Rp
b25zKFdlYkluc3BlY3Rvci5SZXNvdXJjZVRpbWVsaW5lRGF0YUdyaWROb2RlKTsKIAogV2ViSW5z
cGVjdG9yLlJlc291cmNlVGltZWxpbmVEYXRhR3JpZE5vZGUuSWNvblN0eWxlQ2xhc3NOYW1lID0g
Imljb24iOwogV2ViSW5zcGVjdG9yLlJlc291cmNlVGltZWxpbmVEYXRhR3JpZE5vZGUuRXJyb3JT
dHlsZUNsYXNzTmFtZSA9ICJlcnJvciI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9TY29wZUJhckl0ZW0uanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TY29wZUJhckl0ZW0uanMKaW5kZXggNDEzOGZkYS4u
ZjM0MDZlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvU2NvcGVCYXJJdGVtLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1Njb3BlQmFySXRlbS5qcwpAQCAtMjQsNyArMjQsOCBAQAogICovCiAKIFdl
Ykluc3BlY3Rvci5TY29wZUJhckl0ZW0gPSBmdW5jdGlvbihpZCwgbGFiZWwsIGlzRXhjbHVzaXZl
KSB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIC8vIEZJWE1FOiBD
b252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBz
dXBlcigpLgorICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKIAogICAgIHRo
aXMuaWQgPSBpZDsKICAgICB0aGlzLmxhYmVsID0gbGFiZWw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TY3JpcHRUaW1lbGluZURhdGFHcmlk
Tm9kZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Njcmlw
dFRpbWVsaW5lRGF0YUdyaWROb2RlLmpzCmluZGV4IDkxNWYyYWYuLjY5NTViZDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NjcmlwdFRpbWVs
aW5lRGF0YUdyaWROb2RlLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1NjcmlwdFRpbWVsaW5lRGF0YUdyaWROb2RlLmpzCkBAIC0zMyw3ICszMyw4IEBA
IFdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZURhdGFHcmlkTm9kZSA9IGZ1bmN0aW9uKHNjcmlw
dFRpbWVsaW5lUmVjb3JkLCBiYXNlU3RhCiAgICAgdGhpcy5fcmFuZ2VFbmRUaW1lID0gdHlwZW9m
IHJhbmdlRW5kVGltZSA9PT0gIm51bWJlciIgPyByYW5nZUVuZFRpbWUgOiBJbmZpbml0eTsKIH07
CiAKLVdlYkluc3BlY3Rvci5PYmplY3QuYWRkQ29uc3RydWN0b3JGdW5jdGlvbnMoV2ViSW5zcGVj
dG9yLlNjcmlwdFRpbWVsaW5lRGF0YUdyaWROb2RlKTsKKy8vIEZJWE1FOiBNb3ZlIHRvIGEgV2Vi
SW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcyBhbmQgd2UgY2FuIHJlbW92ZSB0aGlzLgorV2ViSW5z
cGVjdG9yLk9iamVjdC5kZXByZWNhdGVkQWRkQ29uc3RydWN0b3JGdW5jdGlvbnMoV2ViSW5zcGVj
dG9yLlNjcmlwdFRpbWVsaW5lRGF0YUdyaWROb2RlKTsKIAogV2ViSW5zcGVjdG9yLlNjcmlwdFRp
bWVsaW5lRGF0YUdyaWROb2RlLkljb25TdHlsZUNsYXNzTmFtZSA9ICJpY29uIjsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2VjdGlvbi5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NlY3Rpb24uanMK
aW5kZXggNTMwNWIwYi4uMWU2NGNmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvU2VjdGlvbi5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9TZWN0aW9uLmpzCkBAIC0yNSw3ICsyNSw4IEBACiAKIFdl
Ykluc3BlY3Rvci5TZWN0aW9uID0gZnVuY3Rpb24odGl0bGUsIHN1YnRpdGxlKQogewotICAgIFdl
Ykluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICAvLyBGSVhNRTogQ29udmVydCB0aGlz
IHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KKyAg
ICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CiAKICAgICB0aGlzLmVsZW1lbnQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICB0aGlzLmVsZW1lbnQuY2xhc3NO
YW1lID0gInNlY3Rpb24iOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvU2lkZWJhci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1NpZGViYXIuanMKaW5kZXggZTA3YmU2NC4uZjY3NTc3NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2lkZWJhci5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TaWRlYmFyLmpz
CkBAIC0yNCw3ICsyNCw4IEBACiAgKi8KIAogV2ViSW5zcGVjdG9yLlNpZGViYXIgPSBmdW5jdGlv
bihlbGVtZW50LCBzaWRlLCBzaWRlYmFyUGFuZWxzLCByb2xlLCBsYWJlbCkgewotICAgIFdlYklu
c3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRv
IGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KKyAgICAv
LyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CiAKICAgICBjb25zb2xlLmFzc2VydCgh
c2lkZSB8fCBzaWRlID09PSBXZWJJbnNwZWN0b3IuU2lkZWJhci5TaWRlcy5MZWZ0IHx8IHNpZGUg
PT09IFdlYkluc3BlY3Rvci5TaWRlYmFyLlNpZGVzLlJpZ2h0KTsKICAgICB0aGlzLl9zaWRlID0g
c2lkZSB8fCBXZWJJbnNwZWN0b3IuU2lkZWJhci5TaWRlcy5MZWZ0OwpAQCAtNTEsNyArNTIsOCBA
QCBXZWJJbnNwZWN0b3IuU2lkZWJhciA9IGZ1bmN0aW9uKGVsZW1lbnQsIHNpZGUsIHNpZGViYXJQ
YW5lbHMsIHJvbGUsIGxhYmVsKSB7CiAgICAgfQogfTsKIAotV2ViSW5zcGVjdG9yLk9iamVjdC5h
ZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhXZWJJbnNwZWN0b3IuU2lkZWJhcik7CisvLyBGSVhNRTog
TW92ZSB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MgYW5kIHdlIGNhbiByZW1vdmUg
dGhpcy4KK1dlYkluc3BlY3Rvci5PYmplY3QuZGVwcmVjYXRlZEFkZENvbnN0cnVjdG9yRnVuY3Rp
b25zKFdlYkluc3BlY3Rvci5TaWRlYmFyKTsKIAogV2ViSW5zcGVjdG9yLlNpZGViYXIuU3R5bGVD
bGFzc05hbWUgPSAic2lkZWJhciI7CiBXZWJJbnNwZWN0b3IuU2lkZWJhci5Db2xsYXBzZWRTdHls
ZUNsYXNzTmFtZSA9ICJjb2xsYXBzZWQiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2lkZWJhclBhbmVsLmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2lkZWJhclBhbmVsLmpzCmluZGV4IDI2ZmFiMDgu
LjI3Nzg0ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1NpZGViYXJQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9TaWRlYmFyUGFuZWwuanMKQEAgLTI1LDcgKzI1LDggQEAKIAogV2ViSW5z
cGVjdG9yLlNpZGViYXJQYW5lbCA9IGZ1bmN0aW9uKGlkZW50aWZpZXIsIGRpc3BsYXlOYW1lLCBz
aG93VG9vbFRpcCwgaGlkZVRvb2xUaXAsIGltYWdlLCBlbGVtZW50LCByb2xlLCBsYWJlbCkKIHsK
LSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CisgICAgLy8gRklYTUU6IENvbnZl
cnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVy
KCkuCisgICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwogCiAgICAgdGhpcy5f
aWRlbnRpZmllciA9IGlkZW50aWZpZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUZXh0RWRpdG9yLmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlQ29kZVRleHRFZGl0b3Iu
anMKaW5kZXggOTIwNzEyZWMuLjU5ODVmMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUZXh0RWRpdG9yLmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUZXh0RWRp
dG9yLmpzCkBAIC04MSw3ICs4MSw4IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRv
ciA9IGZ1bmN0aW9uKHNvdXJjZUNvZGUpCiAgICAgbmV3IFdlYkluc3BlY3Rvci5LZXlib2FyZFNo
b3J0Y3V0KFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLkNvbnRyb2wsICJH
IiwgdGhpcy5zaG93R29Ub0xpbmVEaWFsb2cuYmluZCh0aGlzKSwgdGhpcy5lbGVtZW50KTsKIH07
CiAKLVdlYkluc3BlY3Rvci5PYmplY3QuYWRkQ29uc3RydWN0b3JGdW5jdGlvbnMoV2ViSW5zcGVj
dG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yKTsKKy8vIEZJWE1FOiBNb3ZlIHRvIGEgV2ViSW5zcGVj
dG9yLk9iamVjdCBzdWJjbGFzcyBhbmQgd2UgY2FuIHJlbW92ZSB0aGlzLgorV2ViSW5zcGVjdG9y
Lk9iamVjdC5kZXByZWNhdGVkQWRkQ29uc3RydWN0b3JGdW5jdGlvbnMoV2ViSW5zcGVjdG9yLlNv
dXJjZUNvZGVUZXh0RWRpdG9yKTsKIAogV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9y
LlN0eWxlQ2xhc3NOYW1lID0gInNvdXJjZS1jb2RlIjsKIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2Rl
VGV4dEVkaXRvci5MaW5lRXJyb3JTdHlsZUNsYXNzTmFtZSA9ICJlcnJvciI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Tb3VyY2VDb2RlVGlt
ZWxpbmVUaW1lbGluZURhdGFHcmlkTm9kZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUaW1lbGluZVRpbWVsaW5lRGF0YUdyaWROb2RlLmpz
CmluZGV4IGE1MjdlNGYuLmEwMjEyMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUaW1lbGluZVRpbWVsaW5lRGF0YUdyaWRO
b2RlLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Nv
dXJjZUNvZGVUaW1lbGluZVRpbWVsaW5lRGF0YUdyaWROb2RlLmpzCkBAIC0zMSw3ICszMSw4IEBA
IFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGltZWxpbmVUaW1lbGluZURhdGFHcmlkTm9kZSA9IGZ1
bmN0aW9uKHNvdXJjZUNvZGVUaW1lbGluCiAgICAgdGhpcy5fc291cmNlQ29kZVRpbWVsaW5lLmFk
ZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lLkV2ZW50LlJlY29yZEFkZGVkLCB0
aGlzLl90aW1lbGluZVJlY29yZEFkZGVkLCB0aGlzKTsKIH07CiAKLVdlYkluc3BlY3Rvci5PYmpl
Y3QuYWRkQ29uc3RydWN0b3JGdW5jdGlvbnMoV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUaW1lbGlu
ZVRpbWVsaW5lRGF0YUdyaWROb2RlKTsKKy8vIEZJWE1FOiBNb3ZlIHRvIGEgV2ViSW5zcGVjdG9y
Lk9iamVjdCBzdWJjbGFzcyBhbmQgd2UgY2FuIHJlbW92ZSB0aGlzLgorV2ViSW5zcGVjdG9yLk9i
amVjdC5kZXByZWNhdGVkQWRkQ29uc3RydWN0b3JGdW5jdGlvbnMoV2ViSW5zcGVjdG9yLlNvdXJj
ZUNvZGVUaW1lbGluZVRpbWVsaW5lRGF0YUdyaWROb2RlKTsKIAogV2ViSW5zcGVjdG9yLlNvdXJj
ZUNvZGVUaW1lbGluZVRpbWVsaW5lRGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKICAgICBjb25z
dHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUaW1lbGluZVRpbWVsaW5lRGF0YUdyaWRO
b2RlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvVGV4dEVkaXRvci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1RleHRFZGl0b3IuanMKaW5kZXggYjdiNzg3OC4uM2VmMzhiOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGV4dEVkaXRvci5qcworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UZXh0RWRpdG9yLmpz
CkBAIC0yNSw3ICsyNSw4IEBACiAKIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yID0gZnVuY3Rpb24o
ZWxlbWVudCwgbWltZVR5cGUsIGRlbGVnYXRlKQogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3Qu
Y2FsbCh0aGlzKTsKKyAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9y
Lk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KKyAgICAvLyBXZWJJbnNwZWN0b3Iu
T2JqZWN0LmNhbGwodGhpcyk7CiAKICAgICB2YXIgdGV4dCA9IChlbGVtZW50ID8gZWxlbWVudC50
ZXh0Q29udGVudCA6ICIiKTsKICAgICB0aGlzLl9lbGVtZW50ID0gZWxlbWVudCB8fCBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKQEAgLTY5LDcgKzcwLDggQEAgV2ViSW5zcGVjdG9yLlRl
eHRFZGl0b3IgPSBmdW5jdGlvbihlbGVtZW50LCBtaW1lVHlwZSwgZGVsZWdhdGUpCiAgICAgdGhp
cy5fZGVsZWdhdGUgPSBkZWxlZ2F0ZSB8fCBudWxsOwogfTsKIAotV2ViSW5zcGVjdG9yLk9iamVj
dC5hZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhXZWJJbnNwZWN0b3IuVGV4dEVkaXRvcik7CisvLyBG
SVhNRTogTW92ZSB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MgYW5kIHdlIGNhbiBy
ZW1vdmUgdGhpcy4KK1dlYkluc3BlY3Rvci5PYmplY3QuZGVwcmVjYXRlZEFkZENvbnN0cnVjdG9y
RnVuY3Rpb25zKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yKTsKIAogV2ViSW5zcGVjdG9yLlRleHRF
ZGl0b3IuU3R5bGVDbGFzc05hbWUgPSAidGV4dC1lZGl0b3IiOwogV2ViSW5zcGVjdG9yLlRleHRF
ZGl0b3IuSGlnaGxpZ2h0ZWRTdHlsZUNsYXNzTmFtZSA9ICJoaWdobGlnaHRlZCI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZURh
dGFHcmlkTm9kZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1RpbWVsaW5lRGF0YUdyaWROb2RlLmpzCmluZGV4IGRhN2QzYTYuLjIyZTNiYjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lRGF0
YUdyaWROb2RlLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1RpbWVsaW5lRGF0YUdyaWROb2RlLmpzCkBAIC0zOCw3ICszOCw4IEBAIFdlYkluc3BlY3Rv
ci5UaW1lbGluZURhdGFHcmlkTm9kZSA9IGZ1bmN0aW9uKGdyYXBoT25seSwgZ3JhcGhEYXRhU291
cmNlLCBoYXNDaGlsCiAgICAgfQogfTsKIAotV2ViSW5zcGVjdG9yLk9iamVjdC5hZGRDb25zdHJ1
Y3RvckZ1bmN0aW9ucyhXZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZE5vZGUpOworLy8gRklY
TUU6IE1vdmUgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzIGFuZCB3ZSBjYW4gcmVt
b3ZlIHRoaXMuCitXZWJJbnNwZWN0b3IuT2JqZWN0LmRlcHJlY2F0ZWRBZGRDb25zdHJ1Y3RvckZ1
bmN0aW9ucyhXZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZE5vZGUpOwogCiBXZWJJbnNwZWN0
b3IuVGltZWxpbmVEYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewogICAgIGNvbnN0cnVjdG9yOiBX
ZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZE5vZGUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZU92ZXJ2aWV3LmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVPdmVydmlldy5q
cwppbmRleCA5MDExYmJiLi41ODJiZThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZU92ZXJ2aWV3LmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lT3ZlcnZpZXcuanMKQEAg
LTI1LDcgKzI1LDggQEAKIAogV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXcgPSBmdW5jdGlv
bih0aW1lbGluZVJlY29yZGluZykKIHsKLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhp
cyk7CisgICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qg
c3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCkuCisgICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5j
YWxsKHRoaXMpOwogCiAgICAgdGhpcy5fcmVjb3JkaW5nID0gdGltZWxpbmVSZWNvcmRpbmc7CiAg
ICAgdGhpcy5fcmVjb3JkaW5nLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5l
UmVjb3JkaW5nLkV2ZW50LlRpbWVsaW5lQWRkZWQsIHRoaXMuX3RpbWVsaW5lQWRkZWQsIHRoaXMp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
VGltZWxpbmVPdmVydmlld0dyYXBoLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvVGltZWxpbmVPdmVydmlld0dyYXBoLmpzCmluZGV4IDg4MzM2OTUuLjcxOWQ5
ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1RpbWVsaW5lT3ZlcnZpZXdHcmFwaC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9UaW1lbGluZU92ZXJ2aWV3R3JhcGguanMKQEAgLTQ5LDcgKzQ5LDgg
QEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdHcmFwaCA9IGZ1bmN0aW9uKHRpbWVsaW5l
KQogICAgIC8vIENvbmNyZXRlIG9iamVjdCBpbnN0YW50aWF0aW9uLgogICAgIGNvbnNvbGUuYXNz
ZXJ0KHRoaXMuY29uc3RydWN0b3IgIT09IFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3R3Jh
cGggJiYgdGhpcyBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3R3JhcGgp
OwogCi0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIC8vIEZJWE1FOiBD
b252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBz
dXBlcigpLgorICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKIAogICAgIHRo
aXMuZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgIHRoaXMuZWxl
bWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3R3JhcGguU3R5
bGVDbGFzc05hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvVGltZWxpbmVSZWNvcmRCYXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVJlY29yZEJhci5qcwppbmRleCBlMDRjMWNhLi41
N2ZjODcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9UaW1lbGluZVJlY29yZEJhci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVJlY29yZEJhci5qcwpAQCAtMjUsNyArMjUsOCBAQAog
CiBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRCYXIgPSBmdW5jdGlvbihyZWNvcmRzLCByZW5k
ZXJNb2RlKQogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICAvLyBG
SVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5k
IGNhbGwgc3VwZXIoKS4KKyAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CiAK
ICAgICB0aGlzLl9lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAg
dGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZEJh
ci5TdHlsZUNsYXNzTmFtZSk7CkBAIC0zNCw3ICszNSw4IEBAIFdlYkluc3BlY3Rvci5UaW1lbGlu
ZVJlY29yZEJhciA9IGZ1bmN0aW9uKHJlY29yZHMsIHJlbmRlck1vZGUpCiAgICAgdGhpcy5yZWNv
cmRzID0gcmVjb3JkczsKIH07CiAKLVdlYkluc3BlY3Rvci5PYmplY3QuYWRkQ29uc3RydWN0b3JG
dW5jdGlvbnMoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkQmFyKTsKKy8vIEZJWE1FOiBNb3Zl
IHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcyBhbmQgd2UgY2FuIHJlbW92ZSB0aGlz
LgorV2ViSW5zcGVjdG9yLk9iamVjdC5kZXByZWNhdGVkQWRkQ29uc3RydWN0b3JGdW5jdGlvbnMo
V2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkQmFyKTsKIAogV2ViSW5zcGVjdG9yLlRpbWVsaW5l
UmVjb3JkQmFyLlN0eWxlQ2xhc3NOYW1lID0gInRpbWVsaW5lLXJlY29yZC1iYXIiOwogV2ViSW5z
cGVjdG9yLlRpbWVsaW5lUmVjb3JkQmFyLkJhclNlZ21lbnRTdHlsZUNsYXNzTmFtZSA9ICJzZWdt
ZW50IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1RpbWVsaW5lUmVjb3JkRnJhbWUuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9UaW1lbGluZVJlY29yZEZyYW1lLmpzCmluZGV4IDk5OTAyZmYuLjgwMjc5
MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1RpbWVsaW5lUmVjb3JkRnJhbWUuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvVGltZWxpbmVSZWNvcmRGcmFtZS5qcwpAQCAtMjUsNyArMjUsOCBAQAog
CiBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRGcmFtZSA9IGZ1bmN0aW9uKGdyYXBoRGF0YVNv
dXJjZSwgcmVjb3JkcykKIHsKLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7Cisg
ICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xh
c3MsIGFuZCBjYWxsIHN1cGVyKCkuCisgICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRo
aXMpOwogCiAgICAgdGhpcy5fZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIp
OwogICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuVGltZWxpbmVS
ZWNvcmRGcmFtZS5TdHlsZUNsYXNzTmFtZSk7CkBAIC0zNCw3ICszNSw4IEBAIFdlYkluc3BlY3Rv
ci5UaW1lbGluZVJlY29yZEZyYW1lID0gZnVuY3Rpb24oZ3JhcGhEYXRhU291cmNlLCByZWNvcmRz
KQogICAgIHRoaXMucmVjb3JkcyA9IHJlY29yZHMgfHwgW107CiB9OwogCi1XZWJJbnNwZWN0b3Iu
T2JqZWN0LmFkZENvbnN0cnVjdG9yRnVuY3Rpb25zKFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29y
ZEZyYW1lKTsKKy8vIEZJWE1FOiBNb3ZlIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFz
cyBhbmQgd2UgY2FuIHJlbW92ZSB0aGlzLgorV2ViSW5zcGVjdG9yLk9iamVjdC5kZXByZWNhdGVk
QWRkQ29uc3RydWN0b3JGdW5jdGlvbnMoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkRnJhbWUp
OwogCiBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRGcmFtZS5TdHlsZUNsYXNzTmFtZSA9ICJ0
aW1lbGluZS1yZWNvcmQtZnJhbWUiOwogV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkRnJhbWUu
U2l4dHlGcHNGcmFtZUJ1ZGdldCA9IDAuMDE2NjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lUnVsZXIuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVJ1bGVyLmpzCmluZGV4IDBh
MWQ2ZmIuLmJlMTIwZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lUnVsZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVSdWxlci5qcwpAQCAtMjUsNyArMjUsOCBAQAog
CiBXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlciA9IGZ1bmN0aW9uKCkKIHsKLSAgICBXZWJJbnNw
ZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CisgICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBh
IFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCkuCisgICAgLy8g
V2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwogCiAgICAgdGhpcy5fZWxlbWVudCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NOYW1l
ID0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIuU3R5bGVDbGFzc05hbWU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Ub29sYmFyLmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVG9vbGJhci5qcwppbmRl
eCBhNmFiMWZkLi5lNmZlNzBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9Ub29sYmFyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1Rvb2xiYXIuanMKQEAgLTUwLDcgKzUwLDggQEAgV2ViSW5zcGVj
dG9yLlRvb2xiYXIgPSBmdW5jdGlvbihlbGVtZW50LCBuYXZpZ2F0aW9uSXRlbXMpIHsKICAgICB0
aGlzLl9lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNvbnRleHRtZW51IiwgdGhpcy5faGFuZGxl
Q29udGV4dE1lbnVFdmVudC5iaW5kKHRoaXMpLCBmYWxzZSk7CiB9OwogCi1XZWJJbnNwZWN0b3Iu
T2JqZWN0LmFkZENvbnN0cnVjdG9yRnVuY3Rpb25zKFdlYkluc3BlY3Rvci5Ub29sYmFyKTsKKy8v
IEZJWE1FOiBNb3ZlIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcyBhbmQgd2UgY2Fu
IHJlbW92ZSB0aGlzLgorV2ViSW5zcGVjdG9yLk9iamVjdC5kZXByZWNhdGVkQWRkQ29uc3RydWN0
b3JGdW5jdGlvbnMoV2ViSW5zcGVjdG9yLlRvb2xiYXIpOwogCiBXZWJJbnNwZWN0b3IuVG9vbGJh
ci5TdHlsZUNsYXNzTmFtZSA9ICJ0b29sYmFyIjsKIFdlYkluc3BlY3Rvci5Ub29sYmFyLkNvbnRy
b2xTZWN0aW9uU3R5bGVDbGFzc05hbWUgPSAiY29udHJvbC1zZWN0aW9uIjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVFbGVtZW50U3Rh
dHVzQnV0dG9uLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
VHJlZUVsZW1lbnRTdGF0dXNCdXR0b24uanMKaW5kZXggNDRiZTU2OS4uNTZjMTQ0YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVHJlZUVsZW1l
bnRTdGF0dXNCdXR0b24uanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvVHJlZUVsZW1lbnRTdGF0dXNCdXR0b24uanMKQEAgLTI0LDcgKzI0LDggQEAKICAq
LwogCiBXZWJJbnNwZWN0b3IuVHJlZUVsZW1lbnRTdGF0dXNCdXR0b24gPSBmdW5jdGlvbihlbGVt
ZW50KSB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIC8vIEZJWE1F
OiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2Fs
bCBzdXBlcigpLgorICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKIAogICAg
IGNvbnNvbGUuYXNzZXJ0KGVsZW1lbnQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UcmVlT3V0bGluZS5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVPdXRsaW5lLmpzCmluZGV4IDA3NmM3MDAu
LjI3Y2IwNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1RyZWVPdXRsaW5lLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1RyZWVPdXRsaW5lLmpzCkBAIC0yOCw3ICsyOCw4IEBACiAKIGZ1bmN0aW9u
IFRyZWVPdXRsaW5lKGxpc3ROb2RlKQogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0
aGlzKTsKKyAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVj
dCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KKyAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0
LmNhbGwodGhpcyk7CiAKICAgICB0aGlzLmVsZW1lbnQgPSBsaXN0Tm9kZTsKIApAQCAtNTAzLDcg
KzUwNCw4IEBAIFRyZWVPdXRsaW5lLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3Iu
T2JqZWN0LnByb3RvdHlwZTsKIAogZnVuY3Rpb24gVHJlZUVsZW1lbnQodGl0bGUsIHJlcHJlc2Vu
dGVkT2JqZWN0LCBoYXNDaGlsZHJlbikKIHsKLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwo
dGhpcyk7CisgICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmpl
Y3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCkuCisgICAgLy8gV2ViSW5zcGVjdG9yLk9iamVj
dC5jYWxsKHRoaXMpOwogCiAgICAgdGhpcy5fdGl0bGUgPSB0aXRsZTsKICAgICB0aGlzLnJlcHJl
c2VudGVkT2JqZWN0ID0gKHJlcHJlc2VudGVkT2JqZWN0IHx8IHt9KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVPdXRsaW5lRGF0YUdy
aWRTeW5jaHJvbml6ZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9UcmVlT3V0bGluZURhdGFHcmlkU3luY2hyb25pemVyLmpzCmluZGV4IDM5MWZkNTAuLmFl
OWY4NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1RyZWVPdXRsaW5lRGF0YUdyaWRTeW5jaHJvbml6ZXIuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVHJlZU91dGxpbmVEYXRhR3JpZFN5bmNocm9u
aXplci5qcwpAQCAtMjUsNyArMjUsOCBAQAogCiBXZWJJbnNwZWN0b3IuVHJlZU91dGxpbmVEYXRh
R3JpZFN5bmNocm9uaXplciA9IGZ1bmN0aW9uKHRyZWVPdXRsaW5lLCBkYXRhR3JpZCwgZGVsZWdh
dGUpCiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIC8vIEZJWE1F
OiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2Fs
bCBzdXBlcigpLgorICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKIAogICAg
IHRoaXMuX3RyZWVPdXRsaW5lID0gdHJlZU91dGxpbmU7CiAgICAgdGhpcy5fZGF0YUdyaWQgPSBk
YXRhR3JpZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1R5cGVUb2tlblZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9UeXBlVG9rZW5WaWV3LmpzCmluZGV4IDliMmQ5Y2UuLjRkZTI4MDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1R5cGVUb2tl
blZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
VHlwZVRva2VuVmlldy5qcwpAQCAtMjcsNyArMjcsOCBAQCBXZWJJbnNwZWN0b3IuVHlwZVRva2Vu
VmlldyA9IGZ1bmN0aW9uKHRva2VuQW5ub3RhdG9yLCBzaG91bGRIYXZlUmlnaHRNYXJnaW4sIHNo
bwogewogICAgIGNvbnNvbGUuYXNzZXJ0KHRpdGxlVHlwZSA9PT0gV2ViSW5zcGVjdG9yLlR5cGVU
b2tlblZpZXcuVGl0bGVUeXBlLlZhcmlhYmxlICB8fCB0aXRsZVR5cGUgPT09IFdlYkluc3BlY3Rv
ci5UeXBlVG9rZW5WaWV3LlRpdGxlVHlwZS5SZXR1cm5TdGF0ZW1lbnQpOwogCi0gICAgV2ViSW5z
cGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8g
YSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgorICAgIC8v
IFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKIAogICAgIHZhciBzcGFuID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwogICAgIHNwYW4uY2xhc3NMaXN0LmFkZCgidHlwZS10
b2tlbiIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249062</attachid>
            <date>2015-03-19 15:05:53 -0700</date>
            <delta_ts>2015-03-19 16:22:22 -0700</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>adopt-classes.patch</filename>
            <type>text/plain</type>
            <size>515119</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1OTk1MjA4Li5lNzI2OTk4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTUtMDMt
MTkgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIg
SW5zcGVjdG9yOiBBZG9wdCBFUzYgQ2xhc3MgU3ludGF4IGZvciBhbGwgTW9kZWwgT2JqZWN0cwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyODU4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0
b3IvbW9kZWwvcGFyc2Utc2NyaXB0LXN5bnRheC10cmVlLmh0bWw6CisgICAgICAgIFRoaXMgdGVz
dCB3YXMgY2FsbGluZyBhIGNvbnN0cnVjdG9yIHdpdGhvdXQgIm5ldyIuIENsYXNzCisgICAgICAg
IHN5bnRheCBlbmZvcmNlcyAibmV3IiBhbmQgdGhyZXcgYW4gZXhjZXB0aW9uLgorCiAyMDE1LTAz
LTE5ICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBodHRwOi8vd2Vi
a2l0Lm9yZy9iLzE0Mjc5MApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL21vZGVs
L3BhcnNlLXNjcmlwdC1zeW50YXgtdHJlZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL21v
ZGVsL3BhcnNlLXNjcmlwdC1zeW50YXgtdHJlZS5odG1sCmluZGV4IDExMDEyODIuLjM5MmU2MzMg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9tb2RlbC9wYXJzZS1zY3JpcHQtc3lu
dGF4LXRyZWUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbW9kZWwvcGFyc2Utc2Ny
aXB0LXN5bnRheC10cmVlLmh0bWwKQEAgLTcsNyArNyw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogewog
ICAgIGZ1bmN0aW9uIG1ha2VOb2RlKHRleHQsIGlzRXhwcmVzc2lvbikKICAgICB7Ci0gICAgICAg
IHZhciBzY3JpcHQgPSBuZXcgV2ViSW5zcGVjdG9yLlNjcmlwdCgxLCBXZWJJbnNwZWN0b3IuVGV4
dFJhbmdlKDAsIHRleHQubGVuZ3RoKSk7CisgICAgICAgIHZhciBzY3JpcHQgPSBuZXcgV2ViSW5z
cGVjdG9yLlNjcmlwdCgxLCBuZXcgV2ViSW5zcGVjdG9yLlRleHRSYW5nZSgwLCB0ZXh0Lmxlbmd0
aCkpOwogICAgICAgICB2YXIgc2NyaXB0U3ludGF4VHJlZSA9IG5ldyBXZWJJbnNwZWN0b3IuU2Ny
aXB0U3ludGF4VHJlZSh0ZXh0LCBzY3JpcHQpOwogICAgICAgICB2YXIgc3ludGF4VHJlZSA9IHNj
cmlwdFN5bnRheFRyZWUuX3N5bnRheFRyZWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4
IGM3ZTc0NzMuLmQ0N2Y4YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMx
IEBACisyMDE1LTAzLTE5ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisK
KyAgICAgICAgV2ViIEluc3BlY3RvcjogQWRvcHQgRVM2IENsYXNzIFN5bnRheCBmb3IgYWxsIE1v
ZGVsIE9iamVjdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE0Mjg1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICAgLSBDb252ZXJ0IFdlYkluc3BlY3Rvci5PYmplY3QgdG8gYSBjbGFzcworICAgICAgICAg
IC0gQ29udmVydCBhbGwgVXNlckludGVyZmFjZS9Nb2RlbHMgb2JqZWN0cyB0byBjbGFzc2VzCisg
ICAgICAgICAgLSBDb252ZXJ0IGNvbnN0cnVjdG9yIGZ1bmN0aW9ucyB0byBjb25zdHJ1Y3RvciBt
ZXRob2RzCisgICAgICAgICAgLSBDb252ZXJ0ICJjb25zdHJ1Y3Rvci5tZXRob2QiIHRvIGNsYXNz
IHN0YXRpYyBtZXRob2RzIHdoZXJlIHBvc3NpYmxlCisgICAgICAgICAgLSBDb252ZXJ0IGFsbCBt
ZXRob2RzIHRvIG1ldGhvZCBzeW50YXgsIGVsaW1pbmF0ZSBjb21tYXMgYmV0d2VlbiBtZXRob2Rz
CisgICAgICAgICAgLSBDb252ZXJ0IGFsbCBzdXBlcmNsYXNzIGNhbGxzIGluIGNsYXNzZXMgdG8g
dXNlICJzdXBlciIKKyAgICAgICAgICAtIFdvcmthcm91bmQgPGh0dHBzOi8vd2Via2l0Lm9yZy9i
LzE0Mjg2Mj4gYW5kIGFkZCBlbXB0eSBjb25zdHJ1Y3RvcnMKKyAgICAgICAgICAtIEFkZGVkICJk
ZXByZWNhdGVkIiBwcmVmaXggdG8gYWRkQ29uc3RydWN0b3JGdW5jdGlvbnMsIHNpbmNlIGl0IGlz
IG5vdCBuZWVkZWQgd2l0aCBjbGFzc2VzCisgICAgICAgICAgLSBBZGRlZCBtYW55IG1pc3Npbmcg
Y2FsbHMgdG8gc3VwZXIgaW4gY29uc3RydWN0b3JzCisgICAgICAgICAgLSBBZGRlZCBGSVhNRSB0
byBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzZXMgbm90IHlldCBtb3ZlZCB0byBjbGFzc2Vz
LgorICAgICAgICAgIC0gQ2xlYW5lZCB1cCBTb3VyY2VNYXAgZ2xvYmFsIHByb3BlcnRpZXMsIG1v
dmVkIHRvIGNvbnN0cnVjdG9yIGluc3RlYWQgb2YgcHJvdG90eXBlCisgICAgICAgICAgLSBDbGVh
bmVkIHVwIFRpbWVsaW5lIGZhY3RvcnkgY29uc3RydWN0b3IgdG8gc3RhdGljICJjcmVhdGUiIGZh
Y3RvcnkgbWV0aG9kCisgICAgICAgICAgLSBGaXhlZCBhbnkgc3R5bGUgaXNzdWVzIG5vdGljZWQg
aW4gdGhlIG1hc3MgZWRpdAorICAgICAgICAgIC0gRml4ZWQgc3RyaWN0IG1vZGUgaXNzdWVzIG5v
dyB0aGF0IGNsYXNzZXMgZW5mb3JjZSBzdHJpY3QgbW9kZQorICAgICAgICAgICAgICAtIFJ1bkxv
b3BUaW1lbGluZVJlY29yZC5qcyB3YXMgbWlzc2luZyBhIGB2YXJgIGZvciBhIGxvY2FsIHZhcmlh
YmxlCisgICAgICAgICAgICAgIC0gImNvbnN0IiBpcyBub3QgYWxsb3dlZCwgY29udmVydGVkIHRv
ICJ2YXIiCisgICAgICAgICAgICAgIC0gImFyZ3VtZW50cy5jYWxsZWUiIGlzIG5vdCBhbGxvd2Vk
IGluIHN0cmljdCBtb2RlCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlLyoqLyouanM6CisgICAg
ICAgIE1hbnkgZmlsZXMgbW9kaWZpZWQgbW9zdGx5IG1lY2hhbmljYWxseS4KKwogMjAxNS0wMy0x
OCAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IFJlcGxhY2UgbGFzdCB1c2Ugb2YgT2JqZWN0UHJvcGVydGllc1NlY3Rpb24gd2l0
aCBPYmplY3RUcmVlVmlldwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvQmFzZS9PYmplY3QuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9CYXNlL09iamVjdC5qcwppbmRleCA1MTRhZWYzLi5iZWEzZDM0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL09iamVjdC5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL09iamVjdC5qcwpAQCAtMjMs
MTA4ICsyMyw5NiBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuT2JqZWN0
ID0gZnVuY3Rpb24oKQorV2ViSW5zcGVjdG9yLk9iamVjdCA9IGNsYXNzIE9iamVjdAogewotfTsK
LQotV2ViSW5zcGVjdG9yLk9iamVjdC5hZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyA9IGZ1bmN0aW9u
KHN1YmNsYXNzQ29uc3RydWN0b3IpCi17Ci0gICAgLy8gQ29waWVzIHRoZSByZWxldmFudCBmdW5j
dGlvbnMgdGhlIHN1YmNsYXNzIGNvbnN0cnVjdG9yLgotICAgIGZvciAodmFyIHByb3BlcnR5IGlu
IFdlYkluc3BlY3Rvci5PYmplY3QpIHsKLSAgICAgICAgdmFyIHZhbHVlID0gV2ViSW5zcGVjdG9y
Lk9iamVjdFtwcm9wZXJ0eV07Ci0gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICJmdW5jdGlv
biIpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKHZhbHVlID09PSBhcmd1bWVu
dHMuY2FsbGVlKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIHN1YmNsYXNzQ29uc3Ry
dWN0b3JbcHJvcGVydHldID0gdmFsdWU7CisgICAgY29uc3RydWN0b3IoKQorICAgIHsKKyAgICAg
ICAgLy8gRklYTUU6IFJlbW92ZSBvbmNlIDxodHRwczovL3dlYmtpdC5vcmcvYi8xNDI4NjI+IGlz
IGZpeGVkLgogICAgIH0KLX07CiAKLVdlYkluc3BlY3Rvci5PYmplY3QuYWRkRXZlbnRMaXN0ZW5l
ciA9IGZ1bmN0aW9uKGV2ZW50VHlwZSwgbGlzdGVuZXIsIHRoaXNPYmplY3QpCi17Ci0gICAgdGhp
c09iamVjdCA9IHRoaXNPYmplY3QgfHwgbnVsbDsKKyAgICAvLyBTdGF0aWMKKworICAgIHN0YXRp
YyBhZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIsIHRoaXNPYmplY3QpCisgICAg
eworICAgICAgICB0aGlzT2JqZWN0ID0gdGhpc09iamVjdCB8fCBudWxsOwogCi0gICAgY29uc29s
ZS5hc3NlcnQoZXZlbnRUeXBlLCAiT2JqZWN0LmFkZEV2ZW50TGlzdGVuZXI6IGludmFsaWQgZXZl
bnQgdHlwZSAiLCBldmVudFR5cGUsICIobGlzdGVuZXI6ICIsIGxpc3RlbmVyLCAidGhpc09iamVj
dDogIiwgdGhpc09iamVjdCwgIikiKTsKLSAgICBpZiAoIWV2ZW50VHlwZSkKLSAgICAgICAgcmV0
dXJuOworICAgICAgICBjb25zb2xlLmFzc2VydChldmVudFR5cGUsICJPYmplY3QuYWRkRXZlbnRM
aXN0ZW5lcjogaW52YWxpZCBldmVudCB0eXBlICIsIGV2ZW50VHlwZSwgIihsaXN0ZW5lcjogIiwg
bGlzdGVuZXIsICJ0aGlzT2JqZWN0OiAiLCB0aGlzT2JqZWN0LCAiKSIpOworICAgICAgICBpZiAo
IWV2ZW50VHlwZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBjb25zb2xlLmFzc2Vy
dChsaXN0ZW5lciwgIk9iamVjdC5hZGRFdmVudExpc3RlbmVyOiBpbnZhbGlkIGxpc3RlbmVyICIs
IGxpc3RlbmVyLCAiKGV2ZW50IHR5cGU6ICIsIGV2ZW50VHlwZSwgInRoaXNPYmplY3Q6ICIsIHRo
aXNPYmplY3QsICIpIik7CisgICAgICAgIGlmICghbGlzdGVuZXIpCisgICAgICAgICAgICByZXR1
cm47CiAKLSAgICBjb25zb2xlLmFzc2VydChsaXN0ZW5lciwgIk9iamVjdC5hZGRFdmVudExpc3Rl
bmVyOiBpbnZhbGlkIGxpc3RlbmVyICIsIGxpc3RlbmVyLCAiKGV2ZW50IHR5cGU6ICIsIGV2ZW50
VHlwZSwgInRoaXNPYmplY3Q6ICIsIHRoaXNPYmplY3QsICIpIik7Ci0gICAgaWYgKCFsaXN0ZW5l
cikKLSAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAoIXRoaXMuX2xpc3RlbmVycykKKyAgICAg
ICAgICAgIHRoaXMuX2xpc3RlbmVycyA9IHt9OwogCi0gICAgaWYgKCF0aGlzLl9saXN0ZW5lcnMp
Ci0gICAgICAgIHRoaXMuX2xpc3RlbmVycyA9IHt9OworICAgICAgICB2YXIgbGlzdGVuZXJzID0g
dGhpcy5fbGlzdGVuZXJzW2V2ZW50VHlwZV07CisgICAgICAgIGlmICghbGlzdGVuZXJzKQorICAg
ICAgICAgICAgbGlzdGVuZXJzID0gdGhpcy5fbGlzdGVuZXJzW2V2ZW50VHlwZV0gPSBbXTsKIAot
ICAgIHZhciBsaXN0ZW5lcnMgPSB0aGlzLl9saXN0ZW5lcnNbZXZlbnRUeXBlXTsKLSAgICBpZiAo
IWxpc3RlbmVycykKLSAgICAgICAgbGlzdGVuZXJzID0gdGhpcy5fbGlzdGVuZXJzW2V2ZW50VHlw
ZV0gPSBbXTsKKyAgICAgICAgLy8gUHJldmVudCByZWdpc3RlcmluZyBtdWx0aXBsZSB0aW1lcy4K
KyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0ZW5lcnMubGVuZ3RoOyArK2kpIHsKKyAg
ICAgICAgICAgIGlmIChsaXN0ZW5lcnNbaV0ubGlzdGVuZXIgPT09IGxpc3RlbmVyICYmIGxpc3Rl
bmVyc1tpXS50aGlzT2JqZWN0ID09PSB0aGlzT2JqZWN0KQorICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQogCi0gICAgLy8gUHJldmVudCByZWdpc3RlcmluZyBtdWx0aXBsZSB0aW1l
cy4KLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3RlbmVycy5sZW5ndGg7ICsraSkgewotICAg
ICAgICBpZiAobGlzdGVuZXJzW2ldLmxpc3RlbmVyID09PSBsaXN0ZW5lciAmJiBsaXN0ZW5lcnNb
aV0udGhpc09iamVjdCA9PT0gdGhpc09iamVjdCkKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgbGlzdGVuZXJzLnB1c2goe3RoaXNPYmplY3QsIGxpc3RlbmVyfSk7CiAgICAgfQogCi0gICAg
bGlzdGVuZXJzLnB1c2goe3RoaXNPYmplY3QsIGxpc3RlbmVyfSk7Ci19OworICAgIHN0YXRpYyBy
ZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIsIHRoaXNPYmplY3QpCisgICAg
eworICAgICAgICBldmVudFR5cGUgPSBldmVudFR5cGUgfHwgbnVsbDsKKyAgICAgICAgbGlzdGVu
ZXIgPSBsaXN0ZW5lciB8fCBudWxsOworICAgICAgICB0aGlzT2JqZWN0ID0gdGhpc09iamVjdCB8
fCBudWxsOwogCi1XZWJJbnNwZWN0b3IuT2JqZWN0LnJlbW92ZUV2ZW50TGlzdGVuZXIgPSBmdW5j
dGlvbihldmVudFR5cGUsIGxpc3RlbmVyLCB0aGlzT2JqZWN0KQotewotICAgIGV2ZW50VHlwZSA9
IGV2ZW50VHlwZSB8fCBudWxsOwotICAgIGxpc3RlbmVyID0gbGlzdGVuZXIgfHwgbnVsbDsKLSAg
ICB0aGlzT2JqZWN0ID0gdGhpc09iamVjdCB8fCBudWxsOworICAgICAgICBpZiAoIXRoaXMuX2xp
c3RlbmVycykKKyAgICAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghdGhpcy5fbGlzdGVuZXJz
KQotICAgICAgICByZXR1cm47CisgICAgICAgIGlmICghZXZlbnRUeXBlKSB7CisgICAgICAgICAg
ICBmb3IgKGV2ZW50VHlwZSBpbiB0aGlzLl9saXN0ZW5lcnMpCisgICAgICAgICAgICAgICAgdGhp
cy5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIsIHRoaXNPYmplY3QpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKLSAgICBpZiAoIWV2ZW50VHlwZSkgewot
ICAgICAgICBmb3IgKGV2ZW50VHlwZSBpbiB0aGlzLl9saXN0ZW5lcnMpCi0gICAgICAgICAgICB0
aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5lciwgdGhpc09iamVjdCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgICAgIHZhciBsaXN0ZW5lcnMgPSB0aGlzLl9s
aXN0ZW5lcnNbZXZlbnRUeXBlXTsKKyAgICAgICAgaWYgKCFsaXN0ZW5lcnMpCisgICAgICAgICAg
ICByZXR1cm47CiAKLSAgICB2YXIgbGlzdGVuZXJzID0gdGhpcy5fbGlzdGVuZXJzW2V2ZW50VHlw
ZV07Ci0gICAgaWYgKCFsaXN0ZW5lcnMpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgZm9yICh2
YXIgaSA9IGxpc3RlbmVycy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkgeworICAgICAgICAgICAg
aWYgKGxpc3RlbmVyICYmIGxpc3RlbmVyc1tpXS5saXN0ZW5lciA9PT0gbGlzdGVuZXIgJiYgbGlz
dGVuZXJzW2ldLnRoaXNPYmplY3QgPT09IHRoaXNPYmplY3QpCisgICAgICAgICAgICAgICAgbGlz
dGVuZXJzLnNwbGljZShpLCAxKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKCFsaXN0ZW5lciAmJiB0
aGlzT2JqZWN0ICYmIGxpc3RlbmVyc1tpXS50aGlzT2JqZWN0ID09PSB0aGlzT2JqZWN0KQorICAg
ICAgICAgICAgICAgIGxpc3RlbmVycy5zcGxpY2UoaSwgMSk7CisgICAgICAgIH0KIAotICAgIGZv
ciAodmFyIGkgPSBsaXN0ZW5lcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHsKLSAgICAgICAg
aWYgKGxpc3RlbmVyICYmIGxpc3RlbmVyc1tpXS5saXN0ZW5lciA9PT0gbGlzdGVuZXIgJiYgbGlz
dGVuZXJzW2ldLnRoaXNPYmplY3QgPT09IHRoaXNPYmplY3QpCi0gICAgICAgICAgICBsaXN0ZW5l
cnMuc3BsaWNlKGksIDEpOwotICAgICAgICBlbHNlIGlmICghbGlzdGVuZXIgJiYgdGhpc09iamVj
dCAmJiBsaXN0ZW5lcnNbaV0udGhpc09iamVjdCA9PT0gdGhpc09iamVjdCkKLSAgICAgICAgICAg
IGxpc3RlbmVycy5zcGxpY2UoaSwgMSk7Ci0gICAgfQorICAgICAgICBpZiAoIWxpc3RlbmVycy5s
ZW5ndGgpCisgICAgICAgICAgICBkZWxldGUgdGhpcy5fbGlzdGVuZXJzW2V2ZW50VHlwZV07CiAK
LSAgICBpZiAoIWxpc3RlbmVycy5sZW5ndGgpCi0gICAgICAgIGRlbGV0ZSB0aGlzLl9saXN0ZW5l
cnNbZXZlbnRUeXBlXTsKKyAgICAgICAgaWYgKCFPYmplY3Qua2V5cyh0aGlzLl9saXN0ZW5lcnMp
Lmxlbmd0aCkKKyAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9saXN0ZW5lcnM7CisgICAgfQogCi0g
ICAgaWYgKCFPYmplY3Qua2V5cyh0aGlzLl9saXN0ZW5lcnMpLmxlbmd0aCkKKyAgICBzdGF0aWMg
cmVtb3ZlQWxsTGlzdGVuZXJzKCkKKyAgICB7CiAgICAgICAgIGRlbGV0ZSB0aGlzLl9saXN0ZW5l
cnM7Ci19OworICAgIH0KIAotV2ViSW5zcGVjdG9yLk9iamVjdC5yZW1vdmVBbGxMaXN0ZW5lcnMg
PSBmdW5jdGlvbigpCi17Ci0gICAgZGVsZXRlIHRoaXMuX2xpc3RlbmVyczsKLX07CisgICAgc3Rh
dGljIGhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50VHlwZSkKKyAgICB7CisgICAgICAgIGlmICghdGhp
cy5fbGlzdGVuZXJzIHx8ICF0aGlzLl9saXN0ZW5lcnNbZXZlbnRUeXBlXSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQogCi1XZWJJbnNwZWN0
b3IuT2JqZWN0Lmhhc0V2ZW50TGlzdGVuZXJzID0gZnVuY3Rpb24oZXZlbnRUeXBlKQotewotICAg
IGlmICghdGhpcy5fbGlzdGVuZXJzIHx8ICF0aGlzLl9saXN0ZW5lcnNbZXZlbnRUeXBlXSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiB0cnVlOwotfTsKKyAgICAvLyBQdWJsaWMK
IAotV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdl
Ykluc3BlY3Rvci5PYmplY3QsCisgICAgYWRkRXZlbnRMaXN0ZW5lcigpIHsgcmV0dXJuIFdlYklu
c3BlY3Rvci5PYmplY3QuYWRkRXZlbnRMaXN0ZW5lci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9
CisgICAgcmVtb3ZlRXZlbnRMaXN0ZW5lcigpIHsgcmV0dXJuIFdlYkluc3BlY3Rvci5PYmplY3Qu
cmVtb3ZlRXZlbnRMaXN0ZW5lci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9CisgICAgcmVtb3Zl
QWxsTGlzdGVuZXJzKCkgeyByZXR1cm4gV2ViSW5zcGVjdG9yLk9iamVjdC5yZW1vdmVBbGxMaXN0
ZW5lcnMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfQorICAgIGhhc0V2ZW50TGlzdGVuZXJzKCkg
eyByZXR1cm4gV2ViSW5zcGVjdG9yLk9iamVjdC5oYXNFdmVudExpc3RlbmVycy5hcHBseSh0aGlz
LCBhcmd1bWVudHMpOyB9CiAKLSAgICBhZGRFdmVudExpc3RlbmVyOiBXZWJJbnNwZWN0b3IuT2Jq
ZWN0LmFkZEV2ZW50TGlzdGVuZXIsCi0KLSAgICByZW1vdmVFdmVudExpc3RlbmVyOiBXZWJJbnNw
ZWN0b3IuT2JqZWN0LnJlbW92ZUV2ZW50TGlzdGVuZXIsCi0KLSAgICByZW1vdmVBbGxMaXN0ZW5l
cnM6IFdlYkluc3BlY3Rvci5PYmplY3QucmVtb3ZlQWxsTGlzdGVuZXJzLAotCi0gICAgaGFzRXZl
bnRMaXN0ZW5lcnM6IFdlYkluc3BlY3Rvci5PYmplY3QuaGFzRXZlbnRMaXN0ZW5lcnMsCi0KLSAg
ICBkaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnM6IGZ1bmN0aW9uKGV2ZW50VHlwZSwgZXZlbnREYXRh
KQorICAgIGRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhldmVudFR5cGUsIGV2ZW50RGF0YSkKICAg
ICB7CiAgICAgICAgIHZhciBldmVudCA9IG5ldyBXZWJJbnNwZWN0b3IuRXZlbnQodGhpcywgZXZl
bnRUeXBlLCBldmVudERhdGEpOwogCkBAIC0xNjUsMjQgKzE1MywzOCBAQCBXZWJJbnNwZWN0b3Iu
T2JqZWN0LnByb3RvdHlwZSA9IHsKICAgICB9CiB9OwogCi1XZWJJbnNwZWN0b3IuRXZlbnQgPSBm
dW5jdGlvbih0YXJnZXQsIHR5cGUsIGRhdGEpCisvLyBGSVhNRTogVXNlcyBhcmd1bWVudHMuY2Fs
bGVlLCBzbyBpdCBjYW5ub3QgYmUgaW4gdGhlIGNsYXNzLgorV2ViSW5zcGVjdG9yLk9iamVjdC5k
ZXByZWNhdGVkQWRkQ29uc3RydWN0b3JGdW5jdGlvbnMgPSBmdW5jdGlvbihzdWJjbGFzc0NvbnN0
cnVjdG9yKQogewotICAgIHRoaXMudGFyZ2V0ID0gdGFyZ2V0OwotICAgIHRoaXMudHlwZSA9IHR5
cGU7Ci0gICAgdGhpcy5kYXRhID0gZGF0YTsKLSAgICB0aGlzLmRlZmF1bHRQcmV2ZW50ZWQgPSBm
YWxzZTsKLSAgICB0aGlzLl9zdG9wcGVkUHJvcGFnYXRpb24gPSBmYWxzZTsKKyAgICAvLyBDb3Bp
ZXMgdGhlIHJlbGV2YW50IGZ1bmN0aW9ucyB0byB0aGUgc3ViY2xhc3MgY29uc3RydWN0b3IuCisg
ICAgdmFyIGxpc3QgPSBbImFkZEV2ZW50TGlzdGVuZXIiLCAicmVtb3ZlRXZlbnRMaXN0ZW5lciIs
ICJyZW1vdmVBbGxMaXN0ZW5lcnMiLCAiaGFzRXZlbnRMaXN0ZW5lcnMiXTsKKyAgICBmb3IgKHZh
ciBwcm9wZXJ0eSBvZiBsaXN0KSB7CisgICAgICAgIHZhciB2YWx1ZSA9IFdlYkluc3BlY3Rvci5P
YmplY3RbcHJvcGVydHldOworICAgICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAiZnVuY3Rpb24i
KQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmICh2YWx1ZSA9PT0gYXJndW1lbnRz
LmNhbGxlZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBzdWJjbGFzc0NvbnN0cnVj
dG9yW3Byb3BlcnR5XSA9IHZhbHVlOworICAgIH0KIH07CiAKLVdlYkluc3BlY3Rvci5FdmVudC5w
cm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5FdmVudCwKK1dlYklu
c3BlY3Rvci5FdmVudCA9IGNsYXNzIEV2ZW50Cit7CisgICAgY29uc3RydWN0b3IodGFyZ2V0LCB0
eXBlLCBkYXRhKQorICAgIHsKKyAgICAgICAgdGhpcy50YXJnZXQgPSB0YXJnZXQ7CisgICAgICAg
IHRoaXMudHlwZSA9IHR5cGU7CisgICAgICAgIHRoaXMuZGF0YSA9IGRhdGE7CisgICAgICAgIHRo
aXMuZGVmYXVsdFByZXZlbnRlZCA9IGZhbHNlOworICAgICAgICB0aGlzLl9zdG9wcGVkUHJvcGFn
YXRpb24gPSBmYWxzZTsKKyAgICB9CiAKLSAgICBzdG9wUHJvcGFnYXRpb246IGZ1bmN0aW9uKCkK
KyAgICBzdG9wUHJvcGFnYXRpb24oKQogICAgIHsKICAgICAgICAgdGhpcy5fc3RvcHBlZFByb3Bh
Z2F0aW9uID0gdHJ1ZTsKLSAgICB9LAorICAgIH0KIAotICAgIHByZXZlbnREZWZhdWx0OiBmdW5j
dGlvbigpCisgICAgcHJldmVudERlZmF1bHQoKQogICAgIHsKICAgICAgICAgdGhpcy5kZWZhdWx0
UHJldmVudGVkID0gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9CYXNlL1Rlc3QuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9CYXNlL1Rlc3QuanMKaW5kZXggZWExY2ViNy4uMjczMjA3ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9UZXN0LmpzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvVGVzdC5qcwpAQCAtMTAz
LDcgKzEwMyw4IEBAIEluc3BlY3RvclRlc3QuZHVtcE1lc3NhZ2VzVG9Db25zb2xlID0gZmFsc2U7
CiAvLyBwcm90b3R5cGUsIGFuZCBwcm90b3R5cGUgY2hhaW4gZm9yIHRoZSBzaW5nbGV0b24gSW5z
cGVjdG9yVGVzdC4KIEluc3BlY3RvclRlc3QuRXZlbnREaXNwYXRjaGVyID0gZnVuY3Rpb24oKQog
ewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICAvLyBGSVhNRTogQ29u
dmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3Vw
ZXIoKS4KKyAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CiB9OwogCiBJbnNw
ZWN0b3JUZXN0LkV2ZW50RGlzcGF0Y2hlci5FdmVudCA9IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0FuYWx5emVyTWFuYWdlci5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0FuYWx5
emVyTWFuYWdlci5qcwppbmRleCAwOGNmMTYyLi4zZGMxMWYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9BbmFseXplck1hbmFnZXIu
anMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMv
QW5hbHl6ZXJNYW5hZ2VyLmpzCkBAIC0yNSw3ICsyNSw4IEBACiAKIFdlYkluc3BlY3Rvci5BbmFs
eXplck1hbmFnZXIgPSBmdW5jdGlvbigpCiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxs
KHRoaXMpOworICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2Jq
ZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgorICAgIC8vIFdlYkluc3BlY3Rvci5PYmpl
Y3QuY2FsbCh0aGlzKTsKIAogICAgIHRoaXMuX2VzbGludENvbmZpZyA9IHsKICAgICAgICAgZW52
OiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250
cm9sbGVycy9Bbm5vdGF0b3IuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Db250cm9sbGVycy9Bbm5vdGF0b3IuanMKaW5kZXggZDM2MzQ5MS4uMTYwMjc1ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQW5u
b3RhdG9yLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRy
b2xsZXJzL0Fubm90YXRvci5qcwpAQCAtMjYsNyArMjYsOCBAQAogCiBXZWJJbnNwZWN0b3IuQW5u
b3RhdG9yID0gZnVuY3Rpb24oc291cmNlQ29kZVRleHRFZGl0b3IpCiB7Ci0gICAgV2ViSW5zcGVj
dG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBX
ZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgorICAgIC8vIFdl
Ykluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKIAogICAgIGNvbnNvbGUuYXNzZXJ0KHNvdXJj
ZUNvZGVUZXh0RWRpdG9yIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRp
dG9yLCBzb3VyY2VDb2RlVGV4dEVkaXRvcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2Vy
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQXBw
bGljYXRpb25DYWNoZU1hbmFnZXIuanMKaW5kZXggZThhMDdiZS4uOGRhNjQ5YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQXBwbGlj
YXRpb25DYWNoZU1hbmFnZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvQ29udHJvbGxlcnMvQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuanMKQEAgLTI1LDcgKzI1
LDggQEAKIAogV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyID0gZnVuY3Rpb24o
KQogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICAvLyBGSVhNRTog
Q29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwg
c3VwZXIoKS4KKyAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CiAKICAgICBp
ZiAod2luZG93LkFwcGxpY2F0aW9uQ2FjaGVBZ2VudCkKICAgICAgICAgQXBwbGljYXRpb25DYWNo
ZUFnZW50LmVuYWJsZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvQ29udHJvbGxlcnMvQnJhbmNoTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0JyYW5jaE1hbmFnZXIuanMKaW5kZXggNjdl
Y2RiMi4uYjMyMzVlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvQ29udHJvbGxlcnMvQnJhbmNoTWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9CcmFuY2hNYW5hZ2VyLmpzCkBAIC0yNSw3
ICsyNSw4IEBACiAKIFdlYkluc3BlY3Rvci5CcmFuY2hNYW5hZ2VyID0gZnVuY3Rpb24oKQogewot
ICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICAvLyBGSVhNRTogQ29udmVy
dCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIo
KS4KKyAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CiAKICAgICBXZWJJbnNw
ZWN0b3IuRnJhbWUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRnJhbWUuRXZlbnQuTWFp
blJlc291cmNlRGlkQ2hhbmdlLCB0aGlzLl9tYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9s
bGVycy9DU1NTdHlsZU1hbmFnZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Db250cm9sbGVycy9DU1NTdHlsZU1hbmFnZXIuanMKaW5kZXggN2VlYWUzNTAuLmZhNmUy
ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRy
b2xsZXJzL0NTU1N0eWxlTWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Db250cm9sbGVycy9DU1NTdHlsZU1hbmFnZXIuanMKQEAgLTI1LDcgKzI1LDgg
QEAKIAogV2ViSW5zcGVjdG9yLkNTU1N0eWxlTWFuYWdlciA9IGZ1bmN0aW9uKCkKIHsKLSAgICBX
ZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CisgICAgLy8gRklYTUU6IENvbnZlcnQgdGhp
cyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCkuCisg
ICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwogCiAgICAgaWYgKHdpbmRvdy5D
U1NBZ2VudCkKICAgICAgICAgQ1NTQWdlbnQuZW5hYmxlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9Db2RlTWlycm9yQ29tcGxl
dGlvbkNvbnRyb2xsZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9D
b250cm9sbGVycy9Db2RlTWlycm9yQ29tcGxldGlvbkNvbnRyb2xsZXIuanMKaW5kZXggMmRkOGFh
Yi4uNGRhOGM0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvQ29udHJvbGxlcnMvQ29kZU1pcnJvckNvbXBsZXRpb25Db250cm9sbGVyLmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0NvZGVNaXJyb3JD
b21wbGV0aW9uQ29udHJvbGxlci5qcwpAQCAtMjUsNyArMjUsOCBAQAogCiBXZWJJbnNwZWN0b3Iu
Q29kZU1pcnJvckNvbXBsZXRpb25Db250cm9sbGVyID0gZnVuY3Rpb24oY29kZU1pcnJvciwgZGVs
ZWdhdGUsIHN0b3BDaGFyYWN0ZXJzUmVnZXgpCiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5j
YWxsKHRoaXMpOworICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3Iu
T2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgorICAgIC8vIFdlYkluc3BlY3Rvci5P
YmplY3QuY2FsbCh0aGlzKTsKIAogICAgIGNvbnNvbGUuYXNzZXJ0KGNvZGVNaXJyb3IpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVy
cy9Db2RlTWlycm9yRWRpdGluZ0NvbnRyb2xsZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Db250cm9sbGVycy9Db2RlTWlycm9yRWRpdGluZ0NvbnRyb2xsZXIuanMK
aW5kZXggMDFiOTViZS4uOTA2MzlkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQ29kZU1pcnJvckVkaXRpbmdDb250cm9sbGVyLmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0Nv
ZGVNaXJyb3JFZGl0aW5nQ29udHJvbGxlci5qcwpAQCAtMjUsNyArMjUsOCBAQAogCiBXZWJJbnNw
ZWN0b3IuQ29kZU1pcnJvckVkaXRpbmdDb250cm9sbGVyID0gZnVuY3Rpb24oY29kZU1pcnJvciwg
bWFya2VyKQogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICAvLyBG
SVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5k
IGNhbGwgc3VwZXIoKS4KKyAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CiAK
ICAgICB0aGlzLl9jb2RlTWlycm9yID0gY29kZU1pcnJvcjsKICAgICB0aGlzLl9tYXJrZXIgPSBt
YXJrZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9D
b250cm9sbGVycy9Db2RlTWlycm9yVG9rZW5UcmFja2luZ0NvbnRyb2xsZXIuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9Db2RlTWlycm9yVG9rZW5U
cmFja2luZ0NvbnRyb2xsZXIuanMKaW5kZXggZDdhOGZkOS4uMzRlY2UxNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQ29kZU1pcnJv
clRva2VuVHJhY2tpbmdDb250cm9sbGVyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0NvZGVNaXJyb3JUb2tlblRyYWNraW5nQ29udHJvbGxl
ci5qcwpAQCAtMjUsNyArMjUsOCBAQAogCiBXZWJJbnNwZWN0b3IuQ29kZU1pcnJvclRva2VuVHJh
Y2tpbmdDb250cm9sbGVyID0gZnVuY3Rpb24oY29kZU1pcnJvciwgZGVsZWdhdGUpCiB7Ci0gICAg
V2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRo
aXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgor
ICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKIAogICAgIGNvbnNvbGUuYXNz
ZXJ0KGNvZGVNaXJyb3IpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Db250cm9sbGVycy9ET01UcmVlTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RPTVRyZWVNYW5hZ2VyLmpzCmluZGV4
IDg0ZTRjZGYuLjcxMTZmZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RPTVRyZWVNYW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RPTVRyZWVNYW5hZ2VyLmpzCkBA
IC00MSw3ICs0MSw4IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlTWFuYWdlciA9IGZ1bmN0aW9uKCkg
ewogICAgIFdlYkluc3BlY3Rvci5GcmFtZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5G
cmFtZS5FdmVudC5NYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMuX21haW5SZXNvdXJjZURpZENo
YW5nZSwgdGhpcyk7CiB9OwogCi1XZWJJbnNwZWN0b3IuT2JqZWN0LmFkZENvbnN0cnVjdG9yRnVu
Y3Rpb25zKFdlYkluc3BlY3Rvci5ET01UcmVlTWFuYWdlcik7CisvLyBGSVhNRTogTW92ZSB0byBh
IFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MgYW5kIHdlIGNhbiByZW1vdmUgdGhpcy4KK1dl
Ykluc3BlY3Rvci5PYmplY3QuZGVwcmVjYXRlZEFkZENvbnN0cnVjdG9yRnVuY3Rpb25zKFdlYklu
c3BlY3Rvci5ET01UcmVlTWFuYWdlcik7CiAKIFdlYkluc3BlY3Rvci5ET01UcmVlTWFuYWdlci5F
dmVudCA9IHsKICAgICBBdHRyaWJ1dGVNb2RpZmllZDogImRvbS10cmVlLW1hbmFnZXItYXR0cmli
dXRlLW1vZGlmaWVkIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL0NvbnRyb2xsZXJzL0Rhc2hib2FyZE1hbmFnZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9EYXNoYm9hcmRNYW5hZ2VyLmpzCmluZGV4
IDk0MjVhNWUuLmM4NDhiMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL0NvbnRyb2xsZXJzL0Rhc2hib2FyZE1hbmFnZXIuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRGFzaGJvYXJkTWFuYWdlci5q
cwpAQCAtMjQsNyArMjQsOCBAQAogICovCiAKIFdlYkluc3BlY3Rvci5EYXNoYm9hcmRNYW5hZ2Vy
ID0gZnVuY3Rpb24oKSB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAg
IC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNz
LCBhbmQgY2FsbCBzdXBlcigpLgorICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlz
KTsKIAogICAgIHRoaXMuX2Rhc2hib2FyZHMgPSB7fTsKICAgICB0aGlzLl9kYXNoYm9hcmRzLmRl
ZmF1bHQgPSBuZXcgV2ViSW5zcGVjdG9yLkRlZmF1bHREYXNoYm9hcmQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9EZWJ1Z2dlck1h
bmFnZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVy
cy9EZWJ1Z2dlck1hbmFnZXIuanMKaW5kZXggMDIxZjhjNS4uZWZmZDhiNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRGVidWdnZXJN
YW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRy
b2xsZXJzL0RlYnVnZ2VyTWFuYWdlci5qcwpAQCAtMjUsNyArMjUsOCBAQAogCiBXZWJJbnNwZWN0
b3IuRGVidWdnZXJNYW5hZ2VyID0gZnVuY3Rpb24oKQogewotICAgIFdlYkluc3BlY3Rvci5PYmpl
Y3QuY2FsbCh0aGlzKTsKKyAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVj
dG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KKyAgICAvLyBXZWJJbnNwZWN0
b3IuT2JqZWN0LmNhbGwodGhpcyk7CiAKICAgICBpZiAod2luZG93LkRlYnVnZ2VyQWdlbnQpCiAg
ICAgICAgIERlYnVnZ2VyQWdlbnQuZW5hYmxlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9Gb3JtYXR0ZXJTb3VyY2VNYXAuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9Gb3JtYXR0
ZXJTb3VyY2VNYXAuanMKaW5kZXggMGFlMWMzYS4uYTgwZjZjYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRm9ybWF0dGVyU291cmNl
TWFwLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xs
ZXJzL0Zvcm1hdHRlclNvdXJjZU1hcC5qcwpAQCAtMjUsNyArMjUsOCBAQAogCiBXZWJJbnNwZWN0
b3IuRm9ybWF0dGVyU291cmNlTWFwID0gZnVuY3Rpb24ob3JpZ2luYWxMaW5lRW5kaW5ncywgZm9y
bWF0dGVkTGluZUVuZGluZ3MsIG1hcHBpbmcpCiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5j
YWxsKHRoaXMpOworICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3Iu
T2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgorICAgIC8vIFdlYkluc3BlY3Rvci5P
YmplY3QuY2FsbCh0aGlzKTsKIAogICAgIHRoaXMuX29yaWdpbmFsTGluZUVuZGluZ3MgPSBvcmln
aW5hbExpbmVFbmRpbmdzOwogICAgIHRoaXMuX2Zvcm1hdHRlZExpbmVFbmRpbmdzID0gZm9ybWF0
dGVkTGluZUVuZGluZ3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Db250cm9sbGVycy9GcmFtZVJlc291cmNlTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0ZyYW1lUmVzb3VyY2VNYW5hZ2Vy
LmpzCmluZGV4IGQ4MjE0ZTkuLjkxMWI1NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0ZyYW1lUmVzb3VyY2VNYW5hZ2VyLmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0ZyYW1l
UmVzb3VyY2VNYW5hZ2VyLmpzCkBAIC0yNSw3ICsyNSw4IEBACiAKIFdlYkluc3BlY3Rvci5GcmFt
ZVJlc291cmNlTWFuYWdlciA9IGZ1bmN0aW9uKCkKIHsKLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0
LmNhbGwodGhpcyk7CisgICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rv
ci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCkuCisgICAgLy8gV2ViSW5zcGVjdG9y
Lk9iamVjdC5jYWxsKHRoaXMpOwogCiAgICAgaWYgKHdpbmRvdy5QYWdlQWdlbnQpCiAgICAgICAg
IFBhZ2VBZ2VudC5lbmFibGUoKTsKQEAgLTM3LDcgKzM4LDggQEAgV2ViSW5zcGVjdG9yLkZyYW1l
UmVzb3VyY2VNYW5hZ2VyID0gZnVuY3Rpb24oKQogICAgIHRoaXMuaW5pdGlhbGl6ZSgpOwogfTsK
IAotV2ViSW5zcGVjdG9yLk9iamVjdC5hZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhXZWJJbnNwZWN0
b3IuRnJhbWVSZXNvdXJjZU1hbmFnZXIpOworLy8gRklYTUU6IE1vdmUgdG8gYSBXZWJJbnNwZWN0
b3IuT2JqZWN0IHN1YmNsYXNzIGFuZCB3ZSBjYW4gcmVtb3ZlIHRoaXMuCitXZWJJbnNwZWN0b3Iu
T2JqZWN0LmRlcHJlY2F0ZWRBZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhXZWJJbnNwZWN0b3IuRnJh
bWVSZXNvdXJjZU1hbmFnZXIpOwogCiBXZWJJbnNwZWN0b3IuRnJhbWVSZXNvdXJjZU1hbmFnZXIu
RXZlbnQgPSB7CiAgICAgRnJhbWVXYXNBZGRlZDogImZyYW1lLXJlc291cmNlLW1hbmFnZXItZnJh
bWUtd2FzLWFkZGVkIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL0NvbnRyb2xsZXJzL0lzc3VlTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0lzc3VlTWFuYWdlci5qcwppbmRleCA2MzIyMDQy
Li5mMjBlOTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Db250cm9sbGVycy9Jc3N1ZU1hbmFnZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvSXNzdWVNYW5hZ2VyLmpzCkBAIC0yNSw3ICsyNSw4
IEBACiAKIFdlYkluc3BlY3Rvci5Jc3N1ZU1hbmFnZXIgPSBmdW5jdGlvbigpCiB7Ci0gICAgV2Vi
SW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMg
dG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgorICAg
IC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKIAogICAgIFdlYkluc3BlY3Rvci5G
cmFtZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5GcmFtZS5FdmVudC5NYWluUmVzb3Vy
Y2VEaWRDaGFuZ2UsIHRoaXMuX21haW5SZXNvdXJjZURpZENoYW5nZSwgdGhpcyk7CiAgICAgV2Vi
SW5zcGVjdG9yLmxvZ01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuTG9nTWFu
YWdlci5FdmVudC5BY3RpdmVMb2dDbGVhcmVkLCB0aGlzLl9hY3RpdmVMb2dDbGVhcmVkLCB0aGlz
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRy
b2xsZXJzL0phdmFTY3JpcHRMb2dWaWV3Q29udHJvbGxlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0phdmFTY3JpcHRMb2dWaWV3Q29udHJvbGxl
ci5qcwppbmRleCA1YzJiMTA3Li45MjY4MjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9KYXZhU2NyaXB0TG9nVmlld0NvbnRyb2xs
ZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxl
cnMvSmF2YVNjcmlwdExvZ1ZpZXdDb250cm9sbGVyLmpzCkBAIC0yNSw3ICsyNSw4IEBACiAKIFdl
Ykluc3BlY3Rvci5KYXZhU2NyaXB0TG9nVmlld0NvbnRyb2xsZXIgPSBmdW5jdGlvbihlbGVtZW50
LCBzY3JvbGxFbGVtZW50LCB0ZXh0UHJvbXB0LCBkZWxlZ2F0ZSwgaGlzdG9yeVNldHRpbmdJZGVu
dGlmaWVyKQogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICAvLyBG
SVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5k
IGNhbGwgc3VwZXIoKS4KKyAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CiAK
ICAgICBjb25zb2xlLmFzc2VydCh0ZXh0UHJvbXB0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkNv
bnNvbGVQcm9tcHQpOwogICAgIGNvbnNvbGUuYXNzZXJ0KGhpc3RvcnlTZXR0aW5nSWRlbnRpZmll
cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250
cm9sbGVycy9KYXZhU2NyaXB0UnVudGltZUNvbXBsZXRpb25Qcm92aWRlci5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0phdmFTY3JpcHRSdW50aW1l
Q29tcGxldGlvblByb3ZpZGVyLmpzCmluZGV4IDE2ODE2ZDYuLjdkNTExMmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0phdmFTY3Jp
cHRSdW50aW1lQ29tcGxldGlvblByb3ZpZGVyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0phdmFTY3JpcHRSdW50aW1lQ29tcGxldGlvblBy
b3ZpZGVyLmpzCkBAIC0yNSw3ICsyNSw4IEBACiAKIFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0UnVu
dGltZUNvbXBsZXRpb25Qcm92aWRlciA9IGZ1bmN0aW9uKCkKIHsKLSAgICBXZWJJbnNwZWN0b3Iu
T2JqZWN0LmNhbGwodGhpcyk7CisgICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYklu
c3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCkuCisgICAgLy8gV2ViSW5z
cGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwogCiAgICAgY29uc29sZS5hc3NlcnQoIVdlYkluc3Bl
Y3Rvci5KYXZhU2NyaXB0UnVudGltZUNvbXBsZXRpb25Qcm92aWRlci5faW5zdGFuY2UpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVy
cy9MYXllclRyZWVNYW5hZ2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvQ29udHJvbGxlcnMvTGF5ZXJUcmVlTWFuYWdlci5qcwppbmRleCBkZGU0MGZhLi4xYjM4NzQ5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9s
bGVycy9MYXllclRyZWVNYW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL0NvbnRyb2xsZXJzL0xheWVyVHJlZU1hbmFnZXIuanMKQEAgLTI0LDcgKzI0LDgg
QEAKICAqLwogCiBXZWJJbnNwZWN0b3IuTGF5ZXJUcmVlTWFuYWdlciA9IGZ1bmN0aW9uKCkgewot
ICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICAvLyBGSVhNRTogQ29udmVy
dCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIo
KS4KKyAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CiAKICAgICB0aGlzLl9z
dXBwb3J0ZWQgPSAhIXdpbmRvdy5MYXllclRyZWVBZ2VudDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvTG9nTWFuYWdlci5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0xvZ01hbmFn
ZXIuanMKaW5kZXggZDhmOGRiZC4uNGFjZDViYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvTG9nTWFuYWdlci5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9Mb2dNYW5hZ2VyLmpz
CkBAIC0yNSw3ICsyNSw4IEBACiAKIFdlYkluc3BlY3Rvci5Mb2dNYW5hZ2VyID0gZnVuY3Rpb24o
KQogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICAvLyBGSVhNRTog
Q29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwg
c3VwZXIoKS4KKyAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CiAKICAgICBX
ZWJJbnNwZWN0b3IuRnJhbWUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRnJhbWUuRXZl
bnQuTWFpblJlc291cmNlRGlkQ2hhbmdlLCB0aGlzLl9tYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRo
aXMpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L0NvbnRyb2xsZXJzL1Byb2JlTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL0NvbnRyb2xsZXJzL1Byb2JlTWFuYWdlci5qcwppbmRleCA5ZDk0NTljLi4wMDVk
YmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250
cm9sbGVycy9Qcm9iZU1hbmFnZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvQ29udHJvbGxlcnMvUHJvYmVNYW5hZ2VyLmpzCkBAIC0yNiw3ICsyNiw4IEBACiAK
IFdlYkluc3BlY3Rvci5Qcm9iZU1hbmFnZXIgPSBmdW5jdGlvbigpCiB7Ci0gICAgV2ViSW5zcGVj
dG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBX
ZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgorICAgIC8vIFdl
Ykluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKIAogICAgIC8vIFVzZWQgdG8gZGV0ZWN0IGRl
bGV0ZWQgcHJvYmUgYWN0aW9ucy4KICAgICB0aGlzLl9rbm93blByb2JlSWRlbnRpZmllcnNGb3JC
cmVha3BvaW50ID0gbmV3IE1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1JlcGxheU1hbmFnZXIuanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9SZXBsYXlNYW5hZ2VyLmpzCmluZGV4
IDVjZjlkYzIuLjQ4MDRhZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL0NvbnRyb2xsZXJzL1JlcGxheU1hbmFnZXIuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvUmVwbGF5TWFuYWdlci5qcwpAQCAt
MjYsNyArMjYsOCBAQAogCiBXZWJJbnNwZWN0b3IuUmVwbGF5TWFuYWdlciA9IGZ1bmN0aW9uKCkK
IHsKLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CisgICAgLy8gRklYTUU6IENv
bnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1
cGVyKCkuCisgICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwogCiAgICAgdGhp
cy5fc2Vzc2lvblN0YXRlID0gV2ViSW5zcGVjdG9yLlJlcGxheU1hbmFnZXIuU2Vzc2lvblN0YXRl
LkluYWN0aXZlOwogICAgIHRoaXMuX3NlZ21lbnRTdGF0ZSA9IFdlYkluc3BlY3Rvci5SZXBsYXlN
YW5hZ2VyLlNlZ21lbnRTdGF0ZS5VbmxvYWRlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1J1bnRpbWVNYW5hZ2VyLmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvUnVudGltZU1hbmFn
ZXIuanMKaW5kZXggNzdkOTA0Ni4uYzliMjBjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvUnVudGltZU1hbmFnZXIuanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvUnVudGltZU1h
bmFnZXIuanMKQEAgLTI1LDcgKzI1LDggQEAKIAogV2ViSW5zcGVjdG9yLlJ1bnRpbWVNYW5hZ2Vy
ID0gZnVuY3Rpb24oKQogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAg
ICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFz
cywgYW5kIGNhbGwgc3VwZXIoKS4KKyAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhp
cyk7CiAKICAgICAvLyBFbmFibGUgdGhlIFJ1bnRpbWVBZ2VudCB0byByZWNlaXZlIG5vdGlmaWNh
dGlvbiBvZiBleGVjdXRpb24gY29udGV4dHMuCiAgICAgaWYgKFJ1bnRpbWVBZ2VudC5lbmFibGUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9s
bGVycy9Tb3VyY2VNYXBNYW5hZ2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvQ29udHJvbGxlcnMvU291cmNlTWFwTWFuYWdlci5qcwppbmRleCBmM2QxNmNkLi5jYWVl
Nzc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250
cm9sbGVycy9Tb3VyY2VNYXBNYW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1NvdXJjZU1hcE1hbmFnZXIuanMKQEAgLTI1LDcgKzI1
LDggQEAKIAogV2ViSW5zcGVjdG9yLlNvdXJjZU1hcE1hbmFnZXIgPSBmdW5jdGlvbigpCiB7Ci0g
ICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIC8vIEZJWE1FOiBDb252ZXJ0
IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigp
LgorICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKIAogICAgIHRoaXMuX3Nv
dXJjZU1hcFVSTE1hcCA9IHt9OwogICAgIHRoaXMuX2Rvd25sb2FkaW5nU291cmNlTWFwcyA9IHt9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJv
bGxlcnMvU3RvcmFnZU1hbmFnZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Db250cm9sbGVycy9TdG9yYWdlTWFuYWdlci5qcwppbmRleCBjZWVjZTMwLi5hNThhY2Mw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9s
bGVycy9TdG9yYWdlTWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Db250cm9sbGVycy9TdG9yYWdlTWFuYWdlci5qcwpAQCAtMjYsNyArMjYsOCBAQAog
CiBXZWJJbnNwZWN0b3IuU3RvcmFnZU1hbmFnZXIgPSBmdW5jdGlvbigpCiB7Ci0gICAgV2ViSW5z
cGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8g
YSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgorICAgIC8v
IFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKIAogICAgIGlmICh3aW5kb3cuRE9NU3Rv
cmFnZUFnZW50KQogICAgICAgICBET01TdG9yYWdlQWdlbnQuZW5hYmxlKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9UaW1lbGlu
ZU1hbmFnZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9s
bGVycy9UaW1lbGluZU1hbmFnZXIuanMKaW5kZXggM2Y0NmZkOS4uMTEzZGI4MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvVGltZWxp
bmVNYW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Nv
bnRyb2xsZXJzL1RpbWVsaW5lTWFuYWdlci5qcwpAQCAtMjUsNyArMjUsOCBAQAogCiBXZWJJbnNw
ZWN0b3IuVGltZWxpbmVNYW5hZ2VyID0gZnVuY3Rpb24oKQogewotICAgIFdlYkluc3BlY3Rvci5P
YmplY3QuY2FsbCh0aGlzKTsKKyAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5z
cGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KKyAgICAvLyBXZWJJbnNw
ZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CiAKICAgICBXZWJJbnNwZWN0b3IuRnJhbWUuYWRkRXZl
bnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRnJhbWUuRXZlbnQuUHJvdmlzaW9uYWxMb2FkU3RhcnRl
ZCwgdGhpcy5fc3RhcnRBdXRvQ2FwdHVyaW5nLCB0aGlzKTsKICAgICBXZWJJbnNwZWN0b3IuRnJh
bWUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRnJhbWUuRXZlbnQuTWFpblJlc291cmNl
RGlkQ2hhbmdlLCB0aGlzLl9tYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMpOwpAQCAtNDMxLDEw
ICs0MzIsMTAgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lTWFuYWdlci5wcm90b3R5cGUgPSB7CiAK
ICAgICAgICAgdmFyIGlkZW50aWZpZXIgPSB0aGlzLl9uZXh0UmVjb3JkaW5nSWRlbnRpZmllcisr
OwogICAgICAgICB2YXIgbmV3UmVjb3JkaW5nID0gbmV3IFdlYkluc3BlY3Rvci5UaW1lbGluZVJl
Y29yZGluZyhpZGVudGlmaWVyLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlRpbWVsaW5lIFJlY29y
ZGluZyAlZCIpLmZvcm1hdChpZGVudGlmaWVyKSk7Ci0gICAgICAgIG5ld1JlY29yZGluZy5hZGRU
aW1lbGluZShuZXcgV2ViSW5zcGVjdG9yLlRpbWVsaW5lKFdlYkluc3BlY3Rvci5UaW1lbGluZVJl
Y29yZC5UeXBlLk5ldHdvcmssIG5ld1JlY29yZGluZykpOwotICAgICAgICBuZXdSZWNvcmRpbmcu
YWRkVGltZWxpbmUobmV3IFdlYkluc3BlY3Rvci5UaW1lbGluZShXZWJJbnNwZWN0b3IuVGltZWxp
bmVSZWNvcmQuVHlwZS5SdW5Mb29wLCBuZXdSZWNvcmRpbmcpKTsKLSAgICAgICAgbmV3UmVjb3Jk
aW5nLmFkZFRpbWVsaW5lKG5ldyBXZWJJbnNwZWN0b3IuVGltZWxpbmUoV2ViSW5zcGVjdG9yLlRp
bWVsaW5lUmVjb3JkLlR5cGUuTGF5b3V0LCBuZXdSZWNvcmRpbmcpKTsKLSAgICAgICAgbmV3UmVj
b3JkaW5nLmFkZFRpbWVsaW5lKG5ldyBXZWJJbnNwZWN0b3IuVGltZWxpbmUoV2ViSW5zcGVjdG9y
LlRpbWVsaW5lUmVjb3JkLlR5cGUuU2NyaXB0LCBuZXdSZWNvcmRpbmcpKTsKKyAgICAgICAgbmV3
UmVjb3JkaW5nLmFkZFRpbWVsaW5lKFdlYkluc3BlY3Rvci5UaW1lbGluZS5jcmVhdGUoV2ViSW5z
cGVjdG9yLlRpbWVsaW5lUmVjb3JkLlR5cGUuTmV0d29yaywgbmV3UmVjb3JkaW5nKSk7CisgICAg
ICAgIG5ld1JlY29yZGluZy5hZGRUaW1lbGluZShXZWJJbnNwZWN0b3IuVGltZWxpbmUuY3JlYXRl
KFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5UeXBlLlJ1bkxvb3AsIG5ld1JlY29yZGluZykp
OworICAgICAgICBuZXdSZWNvcmRpbmcuYWRkVGltZWxpbmUoV2ViSW5zcGVjdG9yLlRpbWVsaW5l
LmNyZWF0ZShXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQuVHlwZS5MYXlvdXQsIG5ld1JlY29y
ZGluZykpOworICAgICAgICBuZXdSZWNvcmRpbmcuYWRkVGltZWxpbmUoV2ViSW5zcGVjdG9yLlRp
bWVsaW5lLmNyZWF0ZShXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQuVHlwZS5TY3JpcHQsIG5l
d1JlY29yZGluZykpOwogCiAgICAgICAgIHRoaXMuX3JlY29yZGluZ3MucHVzaChuZXdSZWNvcmRp
bmcpOwogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3Iu
VGltZWxpbmVNYW5hZ2VyLkV2ZW50LlJlY29yZGluZ0NyZWF0ZWQsIHtyZWNvcmRpbmc6IG5ld1Jl
Y29yZGluZ30pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvTW9kZWxzL0FuYWx5emVyTWVzc2FnZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL01vZGVscy9BbmFseXplck1lc3NhZ2UuanMKaW5kZXggZTMwNTU2Ny4uNWQwYjk1
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxz
L0FuYWx5emVyTWVzc2FnZS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Nb2RlbHMvQW5hbHl6ZXJNZXNzYWdlLmpzCkBAIC0yMywzNiArMjMsMzYgQEAKICAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuQW5hbHl6
ZXJNZXNzYWdlID0gZnVuY3Rpb24oc291cmNlQ29kZUxvY2F0aW9uLCB0ZXh0LCBydWxlSWRlbnRp
ZmllcikKK1dlYkluc3BlY3Rvci5BbmFseXplck1lc3NhZ2UgPSBjbGFzcyBBbmFseXplck1lc3Nh
Z2UgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVj
dC5jYWxsKHRoaXMpOworICAgIGNvbnN0cnVjdG9yKHNvdXJjZUNvZGVMb2NhdGlvbiwgdGV4dCwg
cnVsZUlkZW50aWZpZXIpCisgICAgeworICAgICAgICBzdXBlcigpOwogCi0gICAgY29uc29sZS5h
c3NlcnQoc291cmNlQ29kZUxvY2F0aW9uIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlNvdXJjZUNv
ZGVMb2NhdGlvbik7Ci0gICAgY29uc29sZS5hc3NlcnQodHlwZW9mIHRleHQgPT09ICJzdHJpbmci
KTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoc291cmNlQ29kZUxvY2F0aW9uIGluc3RhbmNlb2Yg
V2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVMb2NhdGlvbik7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KHR5cGVvZiB0ZXh0ID09PSAic3RyaW5nIik7CiAKLSAgICB0aGlzLl9zb3VyY2VDb2RlTG9jYXRp
b24gPSBzb3VyY2VDb2RlTG9jYXRpb247Ci0gICAgdGhpcy5fdGV4dCA9IHRleHQ7Ci0gICAgdGhp
cy5fcnVsZUlkZW50aWZpZXIgPSBydWxlSWRlbnRpZmllcjsKLX07CisgICAgICAgIHRoaXMuX3Nv
dXJjZUNvZGVMb2NhdGlvbiA9IHNvdXJjZUNvZGVMb2NhdGlvbjsKKyAgICAgICAgdGhpcy5fdGV4
dCA9IHRleHQ7CisgICAgICAgIHRoaXMuX3J1bGVJZGVudGlmaWVyID0gcnVsZUlkZW50aWZpZXI7
CisgICAgfQogCi1XZWJJbnNwZWN0b3IuQW5hbHl6ZXJNZXNzYWdlLnByb3RvdHlwZSA9IHsKLSAg
ICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkFuYWx5emVyTWVzc2FnZSwKLSAgICBfX3Byb3Rv
X186IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlLAorICAgIC8vIFB1YmxpYwogCiAgICAg
Z2V0IHNvdXJjZUNvZGVMb2NhdGlvbigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc291
cmNlQ29kZUxvY2F0aW9uOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHNvdXJjZUNvZGUoKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbi5zb3VyY2VDb2Rl
OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHRleHQoKQogICAgIHsKICAgICAgICAgcmV0dXJu
IHRoaXMuX3RleHQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgcnVsZUlkZW50aWZpZXIoKQog
ICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01v
ZGVscy9BcHBsaWNhdGlvbkNhY2hlRnJhbWUuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Nb2RlbHMvQXBwbGljYXRpb25DYWNoZUZyYW1lLmpzCmluZGV4IDYwMjI5OWMu
LmJlZmMxOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L01vZGVscy9BcHBsaWNhdGlvbkNhY2hlRnJhbWUuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0FwcGxpY2F0aW9uQ2FjaGVGcmFtZS5qcwpAQCAtMjMs
NTIgKzIzLDQ5IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAot
V2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVGcmFtZSA9IGZ1bmN0aW9uKGZyYW1lLCBtYW5p
ZmVzdCwgc3RhdHVzKQorV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVGcmFtZSA9IGNsYXNz
IEFwcGxpY2F0aW9uQ2FjaGVGcmFtZSBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIHsKLSAg
ICBjb25zb2xlLmFzc2VydChmcmFtZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5GcmFtZSk7Ci0g
ICAgY29uc29sZS5hc3NlcnQobWFuaWZlc3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuQXBwbGlj
YXRpb25DYWNoZU1hbmlmZXN0KTsKKyAgICBjb25zdHJ1Y3RvcihmcmFtZSwgbWFuaWZlc3QsIHN0
YXR1cykKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CiAKLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0
LmNhbGwodGhpcyk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGZyYW1lIGluc3RhbmNlb2YgV2Vi
SW5zcGVjdG9yLkZyYW1lKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQobWFuaWZlc3QgaW5zdGFu
Y2VvZiBXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0KTsKIAotICAgIHRoaXMu
X2ZyYW1lID0gZnJhbWU7Ci0gICAgdGhpcy5fbWFuaWZlc3QgPSBtYW5pZmVzdDsKLSAgICB0aGlz
Ll9zdGF0dXMgPSBzdGF0dXM7Ci19OwotCi1XZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZUZy
YW1lLlR5cGVJZGVudGlmaWVyID0gImFwcGxpY2F0aW9uLWNhY2hlLWZyYW1lIjsKLVdlYkluc3Bl
Y3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJhbWUuRnJhbWVVUkxDb29raWVLZXkgPSAiYXBwbGljYXRp
b24tY2FjaGUtZnJhbWUtdXJsIjsKLVdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJhbWUu
TWFuaWZlc3RVUkxDb29raWVLZXkgPSAiYXBwbGljYXRpb24tY2FjaGUtZnJhbWUtbWFuaWZlc3Qt
dXJsIjsKLQotV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVGcmFtZS5wcm90b3R5cGUgPSB7
Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJhbWUsCisg
ICAgICAgIHRoaXMuX2ZyYW1lID0gZnJhbWU7CisgICAgICAgIHRoaXMuX21hbmlmZXN0ID0gbWFu
aWZlc3Q7CisgICAgICAgIHRoaXMuX3N0YXR1cyA9IHN0YXR1czsKKyAgICB9CiAKICAgICAvLyBQ
dWJsaWMKIAogICAgIGdldCBmcmFtZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZnJh
bWU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgbWFuaWZlc3QoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHRoaXMuX21hbmlmZXN0OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHN0YXR1cygp
CiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc3RhdHVzOwotICAgIH0sCisgICAgfQogCiAg
ICAgc2V0IHN0YXR1cyhzdGF0dXMpCiAgICAgewogICAgICAgICB0aGlzLl9zdGF0dXMgPSBzdGF0
dXM7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzYXZlSWRlbnRpdHlUb0Nvb2tpZTogZnVuY3Rpb24o
Y29va2llKQorICAgIHNhdmVJZGVudGl0eVRvQ29va2llKGNvb2tpZSkKICAgICB7CiAgICAgICAg
IGNvb2tpZVtXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZUZyYW1lLkZyYW1lVVJMQ29va2ll
S2V5XSA9IHRoaXMuZnJhbWUudXJsOwogICAgICAgICBjb29raWVbV2ViSW5zcGVjdG9yLkFwcGxp
Y2F0aW9uQ2FjaGVGcmFtZS5NYW5pZmVzdFVSTENvb2tpZUtleV0gPSB0aGlzLm1hbmlmZXN0Lm1h
bmlmZXN0VVJMOwogICAgIH0KIH07CiAKLVdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJh
bWUucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOwor
V2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVGcmFtZS5UeXBlSWRlbnRpZmllciA9ICJhcHBs
aWNhdGlvbi1jYWNoZS1mcmFtZSI7CitXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZUZyYW1l
LkZyYW1lVVJMQ29va2llS2V5ID0gImFwcGxpY2F0aW9uLWNhY2hlLWZyYW1lLXVybCI7CitXZWJJ
bnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZUZyYW1lLk1hbmlmZXN0VVJMQ29va2llS2V5ID0gImFw
cGxpY2F0aW9uLWNhY2hlLWZyYW1lLW1hbmlmZXN0LXVybCI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQXBwbGljYXRpb25DYWNoZU1hbmlm
ZXN0LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0FwcGxp
Y2F0aW9uQ2FjaGVNYW5pZmVzdC5qcwppbmRleCBlOWZkODk5Li5lMTYwYmI1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQXBwbGljYXRpb25D
YWNoZU1hbmlmZXN0LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L01vZGVscy9BcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3QuanMKQEAgLTIzLDIwICsyMywxNyBAQAog
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5B
cHBsaWNhdGlvbkNhY2hlTWFuaWZlc3QgPSBmdW5jdGlvbihtYW5pZmVzdFVSTCkKK1dlYkluc3Bl
Y3Rvci5BcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3QgPSBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlTWFu
aWZlc3QgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9i
amVjdC5jYWxsKHRoaXMpOworICAgIGNvbnN0cnVjdG9yKG1hbmlmZXN0VVJMKQorICAgIHsKKyAg
ICAgICAgc3VwZXIoKTsKIAotICAgIHRoaXMuX21hbmlmZXN0VVJMID0gbWFuaWZlc3RVUkw7Ci19
OwotCi1XZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0LnByb3RvdHlwZSA9IHsK
LSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdCwK
KyAgICAgICAgdGhpcy5fbWFuaWZlc3RVUkwgPSBtYW5pZmVzdFVSTDsKKyAgICB9CiAKICAgICBn
ZXQgbWFuaWZlc3RVUkwoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX21hbmlmZXN0VVJM
OwogICAgIH0KIH07Ci0KLVdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3QucHJv
dG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0JhY2tGb3J3
YXJkRW50cnkuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMv
QmFja0ZvcndhcmRFbnRyeS5qcwppbmRleCAzM2E3YWNiLi41MWYwMzE3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQmFja0ZvcndhcmRFbnRy
eS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQmFj
a0ZvcndhcmRFbnRyeS5qcwpAQCAtMjQsMzUgKzI0LDM1IEBACiAgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKLVdlYkluc3BlY3Rvci5CYWNrRm9yd2FyZEVudHJ5ID0gZnVuY3Rpb24oY29udGVudFZpZXcs
IGNvb2tpZSkKK1dlYkluc3BlY3Rvci5CYWNrRm9yd2FyZEVudHJ5ID0gY2xhc3MgQmFja0Zvcndh
cmRFbnRyeSBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIHsKLSAgICBXZWJJbnNwZWN0b3Iu
T2JqZWN0LmNhbGwodGhpcyk7Ci0gICAgdGhpcy5fY29udGVudFZpZXcgPSBjb250ZW50VmlldzsK
LSAgICAvLyBDb29raWVzIGFyZSBjb21wYXJlZCB3aXRoIE9iamVjdC5zaGFsbG93RXF1YWwsIHNv
IHNob3VsZCBub3Qgc3RvcmUgb2JqZWN0cyBvciBhcnJheXMuCi0gICAgdGhpcy5fY29va2llID0g
Y29va2llIHx8IHt9OwotICAgIHRoaXMuX3Njcm9sbFBvc2l0aW9ucyA9IFtdOworICAgIGNvbnN0
cnVjdG9yKGNvbnRlbnRWaWV3LCBjb29raWUpCisgICAgeworICAgICAgICBzdXBlcigpOwogCi0g
ICAgY29udGVudFZpZXcuc2F2ZVRvQ29va2llKHRoaXMuX2Nvb2tpZSk7Ci19OworICAgICAgICB0
aGlzLl9jb250ZW50VmlldyA9IGNvbnRlbnRWaWV3OwogCi1XZWJJbnNwZWN0b3IuQmFja0Zvcndh
cmRFbnRyeS5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5CYWNr
Rm9yd2FyZEVudHJ5LAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5
cGUsCisgICAgICAgIC8vIENvb2tpZXMgYXJlIGNvbXBhcmVkIHdpdGggT2JqZWN0LnNoYWxsb3dF
cXVhbCwgc28gc2hvdWxkIG5vdCBzdG9yZSBvYmplY3RzIG9yIGFycmF5cy4KKyAgICAgICAgdGhp
cy5fY29va2llID0gY29va2llIHx8IHt9OworICAgICAgICB0aGlzLl9zY3JvbGxQb3NpdGlvbnMg
PSBbXTsKKworICAgICAgICBjb250ZW50Vmlldy5zYXZlVG9Db29raWUodGhpcy5fY29va2llKTsK
KyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBjb250ZW50VmlldygpCiAgICAgewog
ICAgICAgICByZXR1cm4gdGhpcy5fY29udGVudFZpZXc7Ci0gICAgfSwKKyAgICB9CiAKICAgICBn
ZXQgY29va2llKCkKICAgICB7CiAgICAgICAgIC8vIENvb2tpZXMgYXJlIGltbXV0YWJsZTsgdGhl
eSByZXByZXNlbnQgYSBzcGVjaWZpYyBuYXZpZ2F0aW9uIGFjdGlvbi4KICAgICAgICAgcmV0dXJu
IE9iamVjdC5zaGFsbG93Q29weSh0aGlzLl9jb29raWUpOwotICAgIH0sCisgICAgfQogCi0gICAg
cHJlcGFyZVRvU2hvdzogZnVuY3Rpb24oc2hvdWxkQ2FsbFNob3duKQorICAgIHByZXBhcmVUb1No
b3coc2hvdWxkQ2FsbFNob3duKQogICAgIHsKICAgICAgICAgdGhpcy5fcmVzdG9yZUZyb21Db29r
aWUoKTsKIApAQCAtNjAsMjUgKzYwLDI1IEBAIFdlYkluc3BlY3Rvci5CYWNrRm9yd2FyZEVudHJ5
LnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKHNob3VsZENhbGxTaG93bikKICAgICAgICAgICAg
IHRoaXMuY29udGVudFZpZXcuc2hvd24oKTsKICAgICAgICAgdGhpcy5jb250ZW50Vmlldy51cGRh
dGVMYXlvdXQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIHByZXBhcmVUb0hpZGU6IGZ1bmN0aW9u
KCkKKyAgICBwcmVwYXJlVG9IaWRlKCkKICAgICB7CiAgICAgICAgIHRoaXMuY29udGVudFZpZXcu
dmlzaWJsZSA9IGZhbHNlOwogICAgICAgICB0aGlzLmNvbnRlbnRWaWV3LmhpZGRlbigpOwogCiAg
ICAgICAgIHRoaXMuX3NhdmVTY3JvbGxQb3NpdGlvbnMoKTsKLSAgICB9LAorICAgIH0KIAogICAg
IC8vIFByaXZhdGUKIAotICAgIF9yZXN0b3JlRnJvbUNvb2tpZTogZnVuY3Rpb24oKQorICAgIF9y
ZXN0b3JlRnJvbUNvb2tpZSgpCiAgICAgewogICAgICAgICB0aGlzLl9yZXN0b3JlU2Nyb2xsUG9z
aXRpb25zKCk7CiAgICAgICAgIHRoaXMuY29udGVudFZpZXcucmVzdG9yZUZyb21Db29raWUodGhp
cy5jb29raWUpOwotICAgIH0sCisgICAgfQogCi0gICAgX3Jlc3RvcmVTY3JvbGxQb3NpdGlvbnM6
IGZ1bmN0aW9uKCkKKyAgICBfcmVzdG9yZVNjcm9sbFBvc2l0aW9ucygpCiAgICAgewogICAgICAg
ICAvLyBJZiBubyBzY3JvbGwgcG9zaXRpb25zIGFyZSBzYXZlZCwgZG8gbm90aGluZy4KICAgICAg
ICAgaWYgKCF0aGlzLl9zY3JvbGxQb3NpdGlvbnMubGVuZ3RoKQpAQCAtMTAwLDkgKzEwMCw5IEBA
IFdlYkluc3BlY3Rvci5CYWNrRm9yd2FyZEVudHJ5LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAg
IC8vIHRoZSB1c2VyIHdvbid0IGJlIGxlZnQgaW4gYSB3ZWlyZCBob3Jpem9udGFsIHBvc2l0aW9u
LgogICAgICAgICAgICAgZWxlbWVudC5zY3JvbGxMZWZ0ID0gcG9zaXRpb24uaXNTY3JvbGxlZFRv
Qm90dG9tID8gMCA6IHBvc2l0aW9uLnNjcm9sbExlZnQ7CiAgICAgICAgIH0KLSAgICB9LAorICAg
IH0KIAotICAgIF9zYXZlU2Nyb2xsUG9zaXRpb25zOiBmdW5jdGlvbigpCisgICAgX3NhdmVTY3Jv
bGxQb3NpdGlvbnMoKQogICAgIHsKICAgICAgICAgdmFyIHNjcm9sbGFibGVFbGVtZW50cyA9IHRo
aXMuY29udGVudFZpZXcuc2Nyb2xsYWJsZUVsZW1lbnRzIHx8IFtdOwogICAgICAgICB2YXIgc2Ny
b2xsUG9zaXRpb25zID0gW107CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Nb2RlbHMvQnJhbmNoLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvTW9kZWxzL0JyYW5jaC5qcwppbmRleCA4N2U5N2MwLi43M2Q5NTE1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQnJhbmNoLmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9CcmFuY2gu
anMKQEAgLTIzLDI2ICsyMywyNSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKLVdlYkluc3BlY3Rvci5CcmFuY2ggPSBmdW5jdGlvbihkaXNwbGF5TmFtZSwgcmV2
aXNpb25zLCBsb2NrZWQpCitXZWJJbnNwZWN0b3IuQnJhbmNoID0gY2xhc3MgQnJhbmNoIGV4dGVu
ZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0
aGlzKTsKKyAgICBjb25zdHJ1Y3RvcihkaXNwbGF5TmFtZSwgcmV2aXNpb25zLCBsb2NrZWQpCisg
ICAgeworICAgICAgICBzdXBlcigpOwogCi0gICAgY29uc29sZS5hc3NlcnQoZGlzcGxheU5hbWUp
OworICAgICAgICBjb25zb2xlLmFzc2VydChkaXNwbGF5TmFtZSk7CiAKLSAgICB0aGlzLl9kaXNw
bGF5TmFtZSA9IGRpc3BsYXlOYW1lOwotICAgIHRoaXMuX3JldmlzaW9ucyA9IHJldmlzaW9ucyBp
bnN0YW5jZW9mIEFycmF5ID8gcmV2aXNpb25zLnNsaWNlKCkgOiBbXTsKLSAgICB0aGlzLl9sb2Nr
ZWQgPSBsb2NrZWQgfHwgZmFsc2U7Ci19OwotCi1XZWJJbnNwZWN0b3IuQnJhbmNoLnByb3RvdHlw
ZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkJyYW5jaCwKKyAgICAgICAgdGhp
cy5fZGlzcGxheU5hbWUgPSBkaXNwbGF5TmFtZTsKKyAgICAgICAgdGhpcy5fcmV2aXNpb25zID0g
cmV2aXNpb25zIGluc3RhbmNlb2YgQXJyYXkgPyByZXZpc2lvbnMuc2xpY2UoKSA6IFtdOworICAg
ICAgICB0aGlzLl9sb2NrZWQgPSBsb2NrZWQgfHwgZmFsc2U7CisgICAgfQogCiAgICAgLy8gUHVi
bGljCiAKICAgICBnZXQgZGlzcGxheU5hbWUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMu
X2Rpc3BsYXlOYW1lOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IGRpc3BsYXlOYW1lKGRpc3Bs
YXlOYW1lKQogICAgIHsKQEAgLTUxLDE5ICs1MCwxOSBAQCBXZWJJbnNwZWN0b3IuQnJhbmNoLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB0aGlzLl9kaXNwbGF5
TmFtZSA9IGRpc3BsYXlOYW1lOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHJldmlzaW9ucygp
CiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcmV2aXNpb25zOwotICAgIH0sCisgICAgfQog
CiAgICAgZ2V0IGxvY2tlZCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fbG9ja2VkOwot
ICAgIH0sCisgICAgfQogCi0gICAgcmV2aXNpb25Gb3JSZXByZXNlbnRlZE9iamVjdDogZnVuY3Rp
b24ocmVwcmVzZW50ZWRPYmplY3QsIGRvTm90Q3JlYXRlSWZOZWVkZWQpCisgICAgcmV2aXNpb25G
b3JSZXByZXNlbnRlZE9iamVjdChyZXByZXNlbnRlZE9iamVjdCwgZG9Ob3RDcmVhdGVJZk5lZWRl
ZCkKICAgICB7CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fcmV2aXNpb25zLmxl
bmd0aDsgKytpKSB7CiAgICAgICAgICAgICB2YXIgcmV2aXNpb24gPSB0aGlzLl9yZXZpc2lvbnNb
aV07CkBAIC04Miw5ICs4MSw5IEBAIFdlYkluc3BlY3Rvci5CcmFuY2gucHJvdG90eXBlID0gewog
ICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBh
ZGRSZXZpc2lvbjogZnVuY3Rpb24ocmV2aXNpb24pCisgICAgYWRkUmV2aXNpb24ocmV2aXNpb24p
CiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChyZXZpc2lvbiBpbnN0YW5jZW9mIFdlYklu
c3BlY3Rvci5SZXZpc2lvbik7CiAKQEAgLTk1LDkgKzk0LDkgQEAgV2ViSW5zcGVjdG9yLkJyYW5j
aC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgdGhpcy5fcmV2
aXNpb25zLnB1c2gocmV2aXNpb24pOwotICAgIH0sCisgICAgfQogCi0gICAgcmVtb3ZlUmV2aXNp
b246IGZ1bmN0aW9uKHJldmlzaW9uKQorICAgIHJlbW92ZVJldmlzaW9uKHJldmlzaW9uKQogICAg
IHsKICAgICAgICAgY29uc29sZS5hc3NlcnQocmV2aXNpb24gaW5zdGFuY2VvZiBXZWJJbnNwZWN0
b3IuUmV2aXNpb24pOwogCkBAIC0xMDUsNDUgKzEwNCw0MyBAQCBXZWJJbnNwZWN0b3IuQnJhbmNo
LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB0aGlzLl9yZXZp
c2lvbnMucmVtb3ZlKHJldmlzaW9uKTsKLSAgICB9LAorICAgIH0KIAotICAgIHJlc2V0OiBmdW5j
dGlvbigpCisgICAgcmVzZXQoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2xvY2tlZCkKICAg
ICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB0aGlzLl9yZXZpc2lvbnMgPSBbXTsKLSAgICB9
LAorICAgIH0KIAotICAgIGZvcms6IGZ1bmN0aW9uKGRpc3BsYXlOYW1lKQorICAgIGZvcmsoZGlz
cGxheU5hbWUpCiAgICAgewogICAgICAgICB2YXIgY29waWVkUmV2aXNpb25zID0gdGhpcy5fcmV2
aXNpb25zLm1hcChmdW5jdGlvbihyZXZpc2lvbikgeyByZXR1cm4gcmV2aXNpb24uY29weSgpOyB9
KTsKICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuQnJhbmNoKGRpc3BsYXlOYW1lLCBj
b3BpZWRSZXZpc2lvbnMpOwotICAgIH0sCisgICAgfQogCi0gICAgYXBwbHk6IGZ1bmN0aW9uKCkK
KyAgICBhcHBseSgpCiAgICAgewogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX3Jl
dmlzaW9ucy5sZW5ndGg7ICsraSkKICAgICAgICAgICAgIHRoaXMuX3JldmlzaW9uc1tpXS5hcHBs
eSgpOwotICAgIH0sCisgICAgfQogCi0gICAgcmV2ZXJ0OiBmdW5jdGlvbigpCisgICAgcmV2ZXJ0
KCkKICAgICB7CiAgICAgICAgIGZvciAodmFyIGkgPSB0aGlzLl9yZXZpc2lvbnMubGVuZ3RoIC0g
MTsgaSA+PSAwOyAtLWkpCiAgICAgICAgICAgICB0aGlzLl9yZXZpc2lvbnNbaV0ucmV2ZXJ0KCk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBsb2NrOiBmdW5jdGlvbigpCisgICAgbG9jaygpCiAgICAg
ewogICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fbG9ja2VkKTsKICAgICAgICAgdGhpcy5f
bG9ja2VkID0gdHJ1ZTsKLSAgICB9LAorICAgIH0KIAotICAgIHVubG9jazogZnVuY3Rpb24oKQor
ICAgIHVubG9jaygpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9sb2NrZWQp
OwogICAgICAgICB0aGlzLl9sb2NrZWQgPSBmYWxzZTsKICAgICB9CiB9OwotCi1XZWJJbnNwZWN0
b3IuQnJhbmNoLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3Rv
dHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01v
ZGVscy9CcmVha3BvaW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
TW9kZWxzL0JyZWFrcG9pbnQuanMKaW5kZXggYzQ4MjE3ZS4uMjgyMWE3MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0JyZWFrcG9pbnQuanMK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0JyZWFrcG9p
bnQuanMKQEAgLTIzLDEwMiArMjMsNzYgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuQnJlYWtwb2ludCA9IGZ1bmN0aW9uKHNvdXJjZUNv
ZGVMb2NhdGlvbk9ySW5mbywgZGlzYWJsZWQsIGNvbmRpdGlvbikKK1dlYkluc3BlY3Rvci5CcmVh
a3BvaW50ID0gY2xhc3MgQnJlYWtwb2ludCBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIHsK
LSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7Ci0KLSAgICBpZiAoc291cmNlQ29k
ZUxvY2F0aW9uT3JJbmZvIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVMb2NhdGlv
bikgewotICAgICAgICB2YXIgc291cmNlQ29kZSA9IHNvdXJjZUNvZGVMb2NhdGlvbk9ySW5mby5z
b3VyY2VDb2RlOwotICAgICAgICB2YXIgdXJsID0gc291cmNlQ29kZSA/IHNvdXJjZUNvZGUudXJs
IDogbnVsbDsKLSAgICAgICAgdmFyIHNjcmlwdElkZW50aWZpZXIgPSBzb3VyY2VDb2RlIGluc3Rh
bmNlb2YgV2ViSW5zcGVjdG9yLlNjcmlwdCA/IHNvdXJjZUNvZGUuaWQgOiBudWxsOwotICAgICAg
ICB2YXIgbG9jYXRpb24gPSBzb3VyY2VDb2RlTG9jYXRpb25PckluZm87Ci0gICAgfSBlbHNlIGlm
IChzb3VyY2VDb2RlTG9jYXRpb25PckluZm8gJiYgdHlwZW9mIHNvdXJjZUNvZGVMb2NhdGlvbk9y
SW5mbyA9PT0gIm9iamVjdCIpIHsKLSAgICAgICAgdmFyIHVybCA9IHNvdXJjZUNvZGVMb2NhdGlv
bk9ySW5mby51cmw7Ci0gICAgICAgIHZhciBsaW5lTnVtYmVyID0gc291cmNlQ29kZUxvY2F0aW9u
T3JJbmZvLmxpbmVOdW1iZXIgfHwgMDsKLSAgICAgICAgdmFyIGNvbHVtbk51bWJlciA9IHNvdXJj
ZUNvZGVMb2NhdGlvbk9ySW5mby5jb2x1bW5OdW1iZXIgfHwgMDsKLSAgICAgICAgdmFyIGxvY2F0
aW9uID0gbmV3IFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlTG9jYXRpb24obnVsbCwgbGluZU51bWJl
ciwgY29sdW1uTnVtYmVyKTsKLSAgICAgICAgdmFyIGF1dG9Db250aW51ZSA9IHNvdXJjZUNvZGVM
b2NhdGlvbk9ySW5mby5hdXRvQ29udGludWUgfHwgZmFsc2U7Ci0gICAgICAgIHZhciBhY3Rpb25z
ID0gc291cmNlQ29kZUxvY2F0aW9uT3JJbmZvLmFjdGlvbnMgfHwgW107Ci0gICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgYWN0aW9ucy5sZW5ndGg7ICsraSkKLSAgICAgICAgICAgIGFjdGlvbnNb
aV0gPSBuZXcgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRBY3Rpb24odGhpcywgYWN0aW9uc1tpXSk7
Ci0gICAgICAgIGRpc2FibGVkID0gc291cmNlQ29kZUxvY2F0aW9uT3JJbmZvLmRpc2FibGVkOwot
ICAgICAgICBjb25kaXRpb24gPSBzb3VyY2VDb2RlTG9jYXRpb25PckluZm8uY29uZGl0aW9uOwot
ICAgIH0gZWxzZQotICAgICAgICBjb25zb2xlLmVycm9yKCJVbmV4cGVjdGVkIHR5cGUgcGFzc2Vk
IHRvIFdlYkluc3BlY3Rvci5CcmVha3BvaW50Iiwgc291cmNlQ29kZUxvY2F0aW9uT3JJbmZvKTsK
LQotICAgIHRoaXMuX2lkID0gbnVsbDsKLSAgICB0aGlzLl91cmwgPSB1cmwgfHwgbnVsbDsKLSAg
ICB0aGlzLl9zY3JpcHRJZGVudGlmaWVyID0gc2NyaXB0SWRlbnRpZmllciB8fCBudWxsOwotICAg
IHRoaXMuX2Rpc2FibGVkID0gZGlzYWJsZWQgfHwgZmFsc2U7Ci0gICAgdGhpcy5fY29uZGl0aW9u
ID0gY29uZGl0aW9uIHx8ICIiOwotICAgIHRoaXMuX2F1dG9Db250aW51ZSA9IGF1dG9Db250aW51
ZSB8fCBmYWxzZTsKLSAgICB0aGlzLl9hY3Rpb25zID0gYWN0aW9ucyB8fCBbXTsKLSAgICB0aGlz
Ll9yZXNvbHZlZCA9IGZhbHNlOwotCi0gICAgdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uID0gbG9j
YXRpb247Ci0gICAgdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uLmFkZEV2ZW50TGlzdGVuZXIoV2Vi
SW5zcGVjdG9yLlNvdXJjZUNvZGVMb2NhdGlvbi5FdmVudC5Mb2NhdGlvbkNoYW5nZWQsIHRoaXMu
X3NvdXJjZUNvZGVMb2NhdGlvbkxvY2F0aW9uQ2hhbmdlZCwgdGhpcyk7Ci0gICAgdGhpcy5fc291
cmNlQ29kZUxvY2F0aW9uLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVM
b2NhdGlvbi5FdmVudC5EaXNwbGF5TG9jYXRpb25DaGFuZ2VkLCB0aGlzLl9zb3VyY2VDb2RlTG9j
YXRpb25EaXNwbGF5TG9jYXRpb25DaGFuZ2VkLCB0aGlzKTsKLX07Ci0KLVdlYkluc3BlY3Rvci5P
YmplY3QuYWRkQ29uc3RydWN0b3JGdW5jdGlvbnMoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQpOwot
Ci1XZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5Qb3BvdmVyQ2xhc3NOYW1lID0gImVkaXQtYnJlYWtw
b2ludC1wb3BvdmVyLWNvbnRlbnQiOwotV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQuV2lkZVBvcG92
ZXJDbGFzc05hbWUgPSAid2lkZSI7Ci1XZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5Qb3BvdmVyQ29u
ZGl0aW9uSW5wdXRJZCA9ICJlZGl0LWJyZWFrcG9pbnQtcG9wb3Zlci1jb25kaXRpb24iOwotV2Vi
SW5zcGVjdG9yLkJyZWFrcG9pbnQuUG9wb3Zlck9wdGlvbnNBdXRvQ29udGludWVJbnB1dElkID0g
ImVkaXQtYnJlYWtwb2ludC1wb3Bvb3Zlci1hdXRvLWNvbnRpbnVlIjsKLVdlYkluc3BlY3Rvci5C
cmVha3BvaW50LkhpZGRlblN0eWxlQ2xhc3NOYW1lID0gImhpZGRlbiI7Ci0KLVdlYkluc3BlY3Rv
ci5CcmVha3BvaW50LkRlZmF1bHRCcmVha3BvaW50QWN0aW9uVHlwZSA9IFdlYkluc3BlY3Rvci5C
cmVha3BvaW50QWN0aW9uLlR5cGUuTG9nOwotCi1XZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5UeXBl
SWRlbnRpZmllciA9ICJicmVha3BvaW50IjsKLVdlYkluc3BlY3Rvci5CcmVha3BvaW50LlVSTENv
b2tpZUtleSA9ICJicmVha3BvaW50LXVybCI7Ci1XZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5MaW5l
TnVtYmVyQ29va2llS2V5ID0gImJyZWFrcG9pbnQtbGluZS1udW1iZXIiOwotV2ViSW5zcGVjdG9y
LkJyZWFrcG9pbnQuQ29sdW1uTnVtYmVyQ29va2llS2V5ID0gImJyZWFrcG9pbnQtY29sdW1uLW51
bWJlciI7Ci0KLVdlYkluc3BlY3Rvci5CcmVha3BvaW50LkV2ZW50ID0gewotICAgIERpc2FibGVk
U3RhdGVEaWRDaGFuZ2U6ICJicmVha3BvaW50LWRpc2FibGVkLXN0YXRlLWRpZC1jaGFuZ2UiLAot
ICAgIFJlc29sdmVkU3RhdGVEaWRDaGFuZ2U6ICJicmVha3BvaW50LXJlc29sdmVkLXN0YXRlLWRp
ZC1jaGFuZ2UiLAotICAgIENvbmRpdGlvbkRpZENoYW5nZTogImJyZWFrcG9pbnQtY29uZGl0aW9u
LWRpZC1jaGFuZ2UiLAotICAgIEFjdGlvbnNEaWRDaGFuZ2U6ICJicmVha3BvaW50LWFjdGlvbnMt
ZGlkLWNoYW5nZSIsCi0gICAgQXV0b0NvbnRpbnVlRGlkQ2hhbmdlOiAiYnJlYWtwb2ludC1hdXRv
LWNvbnRpbnVlLWRpZC1jaGFuZ2UiLAotICAgIExvY2F0aW9uRGlkQ2hhbmdlOiAiYnJlYWtwb2lu
dC1sb2NhdGlvbi1kaWQtY2hhbmdlIiwKLSAgICBEaXNwbGF5TG9jYXRpb25EaWRDaGFuZ2U6ICJi
cmVha3BvaW50LWRpc3BsYXktbG9jYXRpb24tZGlkLWNoYW5nZSIsCi19OwotCi1XZWJJbnNwZWN0
b3IuQnJlYWtwb2ludC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rv
ci5CcmVha3BvaW50LAorICAgIGNvbnN0cnVjdG9yKHNvdXJjZUNvZGVMb2NhdGlvbk9ySW5mbywg
ZGlzYWJsZWQsIGNvbmRpdGlvbikKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CisKKyAgICAgICAg
aWYgKHNvdXJjZUNvZGVMb2NhdGlvbk9ySW5mbyBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Tb3Vy
Y2VDb2RlTG9jYXRpb24pIHsKKyAgICAgICAgICAgIHZhciBzb3VyY2VDb2RlID0gc291cmNlQ29k
ZUxvY2F0aW9uT3JJbmZvLnNvdXJjZUNvZGU7CisgICAgICAgICAgICB2YXIgdXJsID0gc291cmNl
Q29kZSA/IHNvdXJjZUNvZGUudXJsIDogbnVsbDsKKyAgICAgICAgICAgIHZhciBzY3JpcHRJZGVu
dGlmaWVyID0gc291cmNlQ29kZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5TY3JpcHQgPyBzb3Vy
Y2VDb2RlLmlkIDogbnVsbDsKKyAgICAgICAgICAgIHZhciBsb2NhdGlvbiA9IHNvdXJjZUNvZGVM
b2NhdGlvbk9ySW5mbzsKKyAgICAgICAgfSBlbHNlIGlmIChzb3VyY2VDb2RlTG9jYXRpb25Pcklu
Zm8gJiYgdHlwZW9mIHNvdXJjZUNvZGVMb2NhdGlvbk9ySW5mbyA9PT0gIm9iamVjdCIpIHsKKyAg
ICAgICAgICAgIHZhciB1cmwgPSBzb3VyY2VDb2RlTG9jYXRpb25PckluZm8udXJsOworICAgICAg
ICAgICAgdmFyIGxpbmVOdW1iZXIgPSBzb3VyY2VDb2RlTG9jYXRpb25PckluZm8ubGluZU51bWJl
ciB8fCAwOworICAgICAgICAgICAgdmFyIGNvbHVtbk51bWJlciA9IHNvdXJjZUNvZGVMb2NhdGlv
bk9ySW5mby5jb2x1bW5OdW1iZXIgfHwgMDsKKyAgICAgICAgICAgIHZhciBsb2NhdGlvbiA9IG5l
dyBXZWJJbnNwZWN0b3IuU291cmNlQ29kZUxvY2F0aW9uKG51bGwsIGxpbmVOdW1iZXIsIGNvbHVt
bk51bWJlcik7CisgICAgICAgICAgICB2YXIgYXV0b0NvbnRpbnVlID0gc291cmNlQ29kZUxvY2F0
aW9uT3JJbmZvLmF1dG9Db250aW51ZSB8fCBmYWxzZTsKKyAgICAgICAgICAgIHZhciBhY3Rpb25z
ID0gc291cmNlQ29kZUxvY2F0aW9uT3JJbmZvLmFjdGlvbnMgfHwgW107CisgICAgICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IGFjdGlvbnMubGVuZ3RoOyArK2kpCisgICAgICAgICAgICAgICAg
YWN0aW9uc1tpXSA9IG5ldyBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludEFjdGlvbih0aGlzLCBhY3Rp
b25zW2ldKTsKKyAgICAgICAgICAgIGRpc2FibGVkID0gc291cmNlQ29kZUxvY2F0aW9uT3JJbmZv
LmRpc2FibGVkOworICAgICAgICAgICAgY29uZGl0aW9uID0gc291cmNlQ29kZUxvY2F0aW9uT3JJ
bmZvLmNvbmRpdGlvbjsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBjb25zb2xlLmVycm9y
KCJVbmV4cGVjdGVkIHR5cGUgcGFzc2VkIHRvIFdlYkluc3BlY3Rvci5CcmVha3BvaW50Iiwgc291
cmNlQ29kZUxvY2F0aW9uT3JJbmZvKTsKKworICAgICAgICB0aGlzLl9pZCA9IG51bGw7CisgICAg
ICAgIHRoaXMuX3VybCA9IHVybCB8fCBudWxsOworICAgICAgICB0aGlzLl9zY3JpcHRJZGVudGlm
aWVyID0gc2NyaXB0SWRlbnRpZmllciB8fCBudWxsOworICAgICAgICB0aGlzLl9kaXNhYmxlZCA9
IGRpc2FibGVkIHx8IGZhbHNlOworICAgICAgICB0aGlzLl9jb25kaXRpb24gPSBjb25kaXRpb24g
fHwgIiI7CisgICAgICAgIHRoaXMuX2F1dG9Db250aW51ZSA9IGF1dG9Db250aW51ZSB8fCBmYWxz
ZTsKKyAgICAgICAgdGhpcy5fYWN0aW9ucyA9IGFjdGlvbnMgfHwgW107CisgICAgICAgIHRoaXMu
X3Jlc29sdmVkID0gZmFsc2U7CisKKyAgICAgICAgdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uID0g
bG9jYXRpb247CisgICAgICAgIHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbi5hZGRFdmVudExpc3Rl
bmVyKFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlTG9jYXRpb24uRXZlbnQuTG9jYXRpb25DaGFuZ2Vk
LCB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb25Mb2NhdGlvbkNoYW5nZWQsIHRoaXMpOworICAgICAg
ICB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb24uYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3Iu
U291cmNlQ29kZUxvY2F0aW9uLkV2ZW50LkRpc3BsYXlMb2NhdGlvbkNoYW5nZWQsIHRoaXMuX3Nv
dXJjZUNvZGVMb2NhdGlvbkRpc3BsYXlMb2NhdGlvbkNoYW5nZWQsIHRoaXMpOworICAgIH0KIAog
ICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IGlkKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlz
Ll9pZDsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBpZChpZCkKICAgICB7CiAgICAgICAgIHRo
aXMuX2lkID0gaWQgfHwgbnVsbDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCB1cmwoKQogICAg
IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3VybDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBz
Y3JpcHRJZGVudGlmaWVyKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zY3JpcHRJZGVu
dGlmaWVyOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHNvdXJjZUNvZGVMb2NhdGlvbigpCiAg
ICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uOwotICAgIH0sCisg
ICAgfQogCiAgICAgZ2V0IHJlc29sdmVkKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9y
ZXNvbHZlZDsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCByZXNvbHZlZChyZXNvbHZlZCkKICAg
ICB7CkBAIC0xMzUsMTIgKzEwOSwxMiBAQCBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5wcm90b3R5
cGUgPSB7CiAgICAgICAgIHRoaXMuX3Jlc29sdmVkID0gcmVzb2x2ZWQgfHwgZmFsc2U7CiAKICAg
ICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkJyZWFrcG9p
bnQuRXZlbnQuUmVzb2x2ZWRTdGF0ZURpZENoYW5nZSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBn
ZXQgZGlzYWJsZWQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkOwotICAg
IH0sCisgICAgfQogCiAgICAgc2V0IGRpc2FibGVkKGRpc2FibGVkKQogICAgIHsKQEAgLTE1MCwx
MiArMTI0LDEyIEBAIFdlYkluc3BlY3Rvci5CcmVha3BvaW50LnByb3RvdHlwZSA9IHsKICAgICAg
ICAgdGhpcy5fZGlzYWJsZWQgPSBkaXNhYmxlZCB8fCBmYWxzZTsKIAogICAgICAgICB0aGlzLmRp
c3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5FdmVudC5EaXNh
YmxlZFN0YXRlRGlkQ2hhbmdlKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBjb25kaXRpb24o
KQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbmRpdGlvbjsKLSAgICB9LAorICAgIH0K
IAogICAgIHNldCBjb25kaXRpb24oY29uZGl0aW9uKQogICAgIHsKQEAgLTE2NSwxMiArMTM5LDEy
IEBAIFdlYkluc3BlY3Rvci5CcmVha3BvaW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5f
Y29uZGl0aW9uID0gY29uZGl0aW9uOwogCiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlz
dGVuZXJzKFdlYkluc3BlY3Rvci5CcmVha3BvaW50LkV2ZW50LkNvbmRpdGlvbkRpZENoYW5nZSk7
Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgYXV0b0NvbnRpbnVlKCkKICAgICB7CiAgICAgICAg
IHJldHVybiB0aGlzLl9hdXRvQ29udGludWU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgYXV0
b0NvbnRpbnVlKGNvbnQpCiAgICAgewpAQCAtMTgwLDEyICsxNTQsMTIgQEAgV2ViSW5zcGVjdG9y
LkJyZWFrcG9pbnQucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9hdXRvQ29udGludWUgPSBj
b250OwogCiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rv
ci5CcmVha3BvaW50LkV2ZW50LkF1dG9Db250aW51ZURpZENoYW5nZSk7Ci0gICAgfSwKKyAgICB9
CiAKICAgICBnZXQgYWN0aW9ucygpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fYWN0aW9u
czsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBvcHRpb25zKCkKICAgICB7CkBAIC0xOTQsNyAr
MTY4LDcgQEAgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQucHJvdG90eXBlID0gewogICAgICAgICAg
ICAgYWN0aW9uczogdGhpcy5fc2VyaWFsaXphYmxlQWN0aW9ucygpLAogICAgICAgICAgICAgYXV0
b0NvbnRpbnVlOiB0aGlzLl9hdXRvQ29udGludWUKICAgICAgICAgfTsKLSAgICB9LAorICAgIH0K
IAogICAgIGdldCBpbmZvKCkKICAgICB7CkBAIC0yMDgsMTYgKzE4MiwxNiBAQCBXZWJJbnNwZWN0
b3IuQnJlYWtwb2ludC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBhY3Rpb25zOiB0aGlzLl9z
ZXJpYWxpemFibGVBY3Rpb25zKCksCiAgICAgICAgICAgICBhdXRvQ29udGludWU6IHRoaXMuX2F1
dG9Db250aW51ZQogICAgICAgICB9OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHByb2JlQWN0
aW9ucygpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fYWN0aW9ucy5maWx0ZXIoZnVuY3Rp
b24oYWN0aW9uKSB7CiAgICAgICAgICAgICByZXR1cm4gYWN0aW9uLnR5cGUgPT09IFdlYkluc3Bl
Y3Rvci5CcmVha3BvaW50QWN0aW9uLlR5cGUuUHJvYmU7CiAgICAgICAgIH0pOwotICAgIH0sCisg
ICAgfQogCi0gICAgY3ljbGVUb05leHRNb2RlOiBmdW5jdGlvbigpCisgICAgY3ljbGVUb05leHRN
b2RlKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7CiAgICAgICAgICAgICAv
LyBXaGVuIGN5Y2xpbmcsIGNsZWFyIGF1dG8tY29udGludWUgd2hlbiBnb2luZyBmcm9tIGRpc2Fi
bGVkIHRvIGVuYWJsZWQuCkBAIC0yMzcsOSArMjExLDkgQEAgV2ViSW5zcGVjdG9yLkJyZWFrcG9p
bnQucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5kaXNhYmxlZCA9IHRy
dWU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBhcHBlbmRDb250ZXh0TWVudUl0ZW1zOiBmdW5jdGlv
bihjb250ZXh0TWVudSwgYnJlYWtwb2ludERpc3BsYXlFbGVtZW50KQorICAgIGFwcGVuZENvbnRl
eHRNZW51SXRlbXMoY29udGV4dE1lbnUsIGJyZWFrcG9pbnREaXNwbGF5RWxlbWVudCkKICAgICB7
CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGRvY3VtZW50LmJvZHkuY29udGFpbnMoYnJlYWtwb2lu
dERpc3BsYXlFbGVtZW50KSwgImJyZWFrcG9pbnQgcG9wb3ZlciBkaXNwbGF5IGVsZW1lbnQgbXVz
dCBiZSBpbiB0aGUgRE9NIik7CiAKQEAgLTI5Myw5ICsyNjcsOSBAQCBXZWJJbnNwZWN0b3IuQnJl
YWtwb2ludC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRTZXBh
cmF0b3IoKTsKICAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJSZXZlYWwgaW4gT3JpZ2luYWwgUmVzb3VyY2UiKSwgcmV2ZWFsT3JpZ2luYWxT
b3VyY2VDb2RlTG9jYXRpb24uYmluZCh0aGlzKSk7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0K
IAotICAgIGNyZWF0ZUFjdGlvbjogZnVuY3Rpb24odHlwZSwgcHJlY2VkaW5nQWN0aW9uLCBkYXRh
KQorICAgIGNyZWF0ZUFjdGlvbih0eXBlLCBwcmVjZWRpbmdBY3Rpb24sIGRhdGEpCiAgICAgewog
ICAgICAgICB2YXIgbmV3QWN0aW9uID0gbmV3IFdlYkluc3BlY3Rvci5CcmVha3BvaW50QWN0aW9u
KHRoaXMsIHR5cGUsIGRhdGEgfHwgbnVsbCk7CiAKQEAgLTMxMyw5ICsyODcsOSBAQCBXZWJJbnNw
ZWN0b3IuQnJlYWtwb2ludC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVu
dFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5CcmVha3BvaW50LkV2ZW50LkFjdGlvbnNEaWRDaGFu
Z2UpOwogCiAgICAgICAgIHJldHVybiBuZXdBY3Rpb247Ci0gICAgfSwKKyAgICB9CiAKLSAgICBy
ZWNyZWF0ZUFjdGlvbjogZnVuY3Rpb24odHlwZSwgYWN0aW9uVG9SZXBsYWNlKQorICAgIHJlY3Jl
YXRlQWN0aW9uKHR5cGUsIGFjdGlvblRvUmVwbGFjZSkKICAgICB7CiAgICAgICAgIHZhciBuZXdB
Y3Rpb24gPSBuZXcgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRBY3Rpb24odGhpcywgdHlwZSwgbnVs
bCk7CiAKQEAgLTMyOSw5ICszMDMsOSBAQCBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5wcm90b3R5
cGUgPSB7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rv
ci5CcmVha3BvaW50LkV2ZW50LkFjdGlvbnNEaWRDaGFuZ2UpOwogCiAgICAgICAgIHJldHVybiBu
ZXdBY3Rpb247Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZW1vdmVBY3Rpb246IGZ1bmN0aW9uKGFj
dGlvbikKKyAgICByZW1vdmVBY3Rpb24oYWN0aW9uKQogICAgIHsKICAgICAgICAgdmFyIGluZGV4
ID0gdGhpcy5fYWN0aW9ucy5pbmRleE9mKGFjdGlvbik7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KGluZGV4ICE9PSAtMSk7CkBAIC0zNDQsOSArMzE4LDkgQEAgV2ViSW5zcGVjdG9yLkJyZWFrcG9p
bnQucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5hdXRvQ29udGludWUgPSBmYWxzZTsK
IAogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuQnJl
YWtwb2ludC5FdmVudC5BY3Rpb25zRGlkQ2hhbmdlKTsKLSAgICB9LAorICAgIH0KIAotICAgIGNs
ZWFyQWN0aW9uczogZnVuY3Rpb24odHlwZSkKKyAgICBjbGVhckFjdGlvbnModHlwZSkKICAgICB7
CiAgICAgICAgIGlmICghdHlwZSkKICAgICAgICAgICAgIHRoaXMuX2FjdGlvbnMgPSBbXTsKQEAg
LTM1NCwxOCArMzI4LDE4IEBAIFdlYkluc3BlY3Rvci5CcmVha3BvaW50LnByb3RvdHlwZSA9IHsK
ICAgICAgICAgICAgIHRoaXMuX2FjdGlvbnMgPSB0aGlzLl9hY3Rpb25zLmZpbHRlcihmdW5jdGlv
bihhY3Rpb24pIHsgYWN0aW9uLnR5cGUgIT09IHR5cGU7IH0pOwogCiAgICAgICAgIHRoaXMuZGlz
cGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5CcmVha3BvaW50LkV2ZW50LkFjdGlv
bnNEaWRDaGFuZ2UpOwotICAgIH0sCisgICAgfQogCi0gICAgc2F2ZUlkZW50aXR5VG9Db29raWU6
IGZ1bmN0aW9uKGNvb2tpZSkKKyAgICBzYXZlSWRlbnRpdHlUb0Nvb2tpZShjb29raWUpCiAgICAg
ewogICAgICAgICBjb29raWVbV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQuVVJMQ29va2llS2V5XSA9
IHRoaXMudXJsOwogICAgICAgICBjb29raWVbV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQuTGluZU51
bWJlckNvb2tpZUtleV0gPSB0aGlzLnNvdXJjZUNvZGVMb2NhdGlvbi5saW5lTnVtYmVyOwogICAg
ICAgICBjb29raWVbV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQuQ29sdW1uTnVtYmVyQ29va2llS2V5
XSA9IHRoaXMuc291cmNlQ29kZUxvY2F0aW9uLmNvbHVtbk51bWJlcjsKLSAgICB9LAorICAgIH0K
IAogICAgIC8vIFByb3RlY3RlZCAoQ2FsbGVkIGJ5IEJyZWFrcG9pbnRBY3Rpb24pCiAKLSAgICBi
cmVha3BvaW50QWN0aW9uRGlkQ2hhbmdlOiBmdW5jdGlvbihhY3Rpb24pCisgICAgYnJlYWtwb2lu
dEFjdGlvbkRpZENoYW5nZShhY3Rpb24pCiAgICAgewogICAgICAgICB2YXIgaW5kZXggPSB0aGlz
Ll9hY3Rpb25zLmluZGV4T2YoYWN0aW9uKTsKICAgICAgICAgY29uc29sZS5hc3NlcnQoaW5kZXgg
IT09IC0xKTsKQEAgLTM3Myw0MyArMzQ3LDQzIEBAIFdlYkluc3BlY3Rvci5CcmVha3BvaW50LnBy
b3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB0aGlzLmRpc3BhdGNo
RXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5FdmVudC5BY3Rpb25zRGlk
Q2hhbmdlKTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAgIF9zZXJpYWxp
emFibGVBY3Rpb25zOiBmdW5jdGlvbigpCisgICAgX3NlcmlhbGl6YWJsZUFjdGlvbnMoKQogICAg
IHsKICAgICAgICAgdmFyIGFjdGlvbnMgPSBbXTsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCB0aGlzLl9hY3Rpb25zLmxlbmd0aDsgKytpKQogICAgICAgICAgICAgYWN0aW9ucy5wdXNoKHRo
aXMuX2FjdGlvbnNbaV0uaW5mbyk7CiAgICAgICAgIHJldHVybiBhY3Rpb25zOwotICAgIH0sCisg
ICAgfQogCi0gICAgX3BvcG92ZXJUb2dnbGVFbmFibGVkQ2hlY2tib3hDaGFuZ2VkOiBmdW5jdGlv
bihldmVudCkKKyAgICBfcG9wb3ZlclRvZ2dsZUVuYWJsZWRDaGVja2JveENoYW5nZWQoZXZlbnQp
CiAgICAgewogICAgICAgICB0aGlzLmRpc2FibGVkID0gIWV2ZW50LnRhcmdldC5jaGVja2VkOwot
ICAgIH0sCisgICAgfQogCi0gICAgX3BvcG92ZXJDb25kaXRpb25JbnB1dENoYW5nZWQ6IGZ1bmN0
aW9uKGV2ZW50KQorICAgIF9wb3BvdmVyQ29uZGl0aW9uSW5wdXRDaGFuZ2VkKGV2ZW50KQogICAg
IHsKICAgICAgICAgdGhpcy5jb25kaXRpb24gPSBldmVudC50YXJnZXQudmFsdWU7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBfcG9wb3ZlclRvZ2dsZUF1dG9Db250aW51ZUNoZWNrYm94Q2hhbmdlZDog
ZnVuY3Rpb24oZXZlbnQpCisgICAgX3BvcG92ZXJUb2dnbGVBdXRvQ29udGludWVDaGVja2JveENo
YW5nZWQoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLmF1dG9Db250aW51ZSA9IGV2ZW50LnRh
cmdldC5jaGVja2VkOwotICAgIH0sCisgICAgfQogCi0gICAgX3BvcG92ZXJDb25kaXRpb25JbnB1
dEtleURvd246IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9wb3BvdmVyQ29uZGl0aW9uSW5wdXRLZXlE
b3duKGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2tleWJvYXJkU2hvcnRjdXRFc2Mu
bWF0Y2hlc0V2ZW50KGV2ZW50KSB8fCB0aGlzLl9rZXlib2FyZFNob3J0Y3V0RW50ZXIubWF0Y2hl
c0V2ZW50KGV2ZW50KSkgewogICAgICAgICAgICAgdGhpcy5fcG9wb3Zlci5kaXNtaXNzKCk7CiAg
ICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgICAgIGV2ZW50LnBy
ZXZlbnREZWZhdWx0KCk7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAotICAgIF9lZGl0QnJl
YWtwb2ludFBvcG92ZXJDb250ZW50RWxlbWVudDogZnVuY3Rpb24oKQorICAgIF9lZGl0QnJlYWtw
b2ludFBvcG92ZXJDb250ZW50RWxlbWVudCgpCiAgICAgewogICAgICAgICB2YXIgY29udGVudCA9
IHRoaXMuX3BvcG92ZXJDb250ZW50RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRp
diIpOwogICAgICAgICBjb250ZW50LmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5CcmVha3BvaW50
LlBvcG92ZXJDbGFzc05hbWU7CkBAIC00NzgsOSArNDUyLDkgQEAgV2ViSW5zcGVjdG9yLkJyZWFr
cG9pbnQucHJvdG90eXBlID0gewogICAgICAgICBjb250ZW50LmFwcGVuZENoaWxkKHRhYmxlKTsK
IAogICAgICAgICByZXR1cm4gY29udGVudDsKLSAgICB9LAorICAgIH0KIAotICAgIF9wb3BvdmVy
QWN0aW9uc0NyZWF0ZUFkZEFjdGlvbkJ1dHRvbjogZnVuY3Rpb24oKQorICAgIF9wb3BvdmVyQWN0
aW9uc0NyZWF0ZUFkZEFjdGlvbkJ1dHRvbigpCiAgICAgewogICAgICAgICB0aGlzLl9wb3BvdmVy
Q29udGVudEVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5X
aWRlUG9wb3ZlckNsYXNzTmFtZSk7CiAgICAgICAgIHRoaXMuX2FjdGlvbnNDb250YWluZXIucmVt
b3ZlQ2hpbGRyZW4oKTsKQEAgLTQ4OCw5ICs0NjIsOSBAQCBXZWJJbnNwZWN0b3IuQnJlYWtwb2lu
dC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBhZGRBY3Rpb25CdXR0b24gPSB0aGlzLl9hY3Rp
b25zQ29udGFpbmVyLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIp
KTsKICAgICAgICAgYWRkQWN0aW9uQnV0dG9uLnRleHRDb250ZW50ID0gV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJBZGQgQWN0aW9uIik7CiAgICAgICAgIGFkZEFjdGlvbkJ1dHRvbi5hZGRFdmVudExp
c3RlbmVyKCJjbGljayIsIHRoaXMuX3BvcG92ZXJBY3Rpb25zQWRkQWN0aW9uQnV0dG9uQ2xpY2tl
ZC5iaW5kKHRoaXMpKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9wb3BvdmVyQWN0aW9uc0FkZEFj
dGlvbkJ1dHRvbkNsaWNrZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9wb3BvdmVyQWN0aW9uc0Fk
ZEFjdGlvbkJ1dHRvbkNsaWNrZWQoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLl9wb3BvdmVy
Q29udGVudEVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5XaWRl
UG9wb3ZlckNsYXNzTmFtZSk7CiAgICAgICAgIHRoaXMuX2FjdGlvbnNDb250YWluZXIucmVtb3Zl
Q2hpbGRyZW4oKTsKQEAgLTUwMCw5ICs0NzQsOSBAQCBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5w
cm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3BvcG92ZXJBY3Rpb25zSW5zZXJ0QnJlYWtwb2lu
dEFjdGlvblZpZXcobmV3QnJlYWtwb2ludEFjdGlvblZpZXcsIC0xKTsKICAgICAgICAgdGhpcy5f
cG9wb3Zlck9wdGlvbnNSb3dFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLkJy
ZWFrcG9pbnQuSGlkZGVuU3R5bGVDbGFzc05hbWUpOwogICAgICAgICB0aGlzLl9wb3BvdmVyLnVw
ZGF0ZSgpOwotICAgIH0sCisgICAgfQogCi0gICAgX3BvcG92ZXJBY3Rpb25zSW5zZXJ0QnJlYWtw
b2ludEFjdGlvblZpZXc6IGZ1bmN0aW9uKGJyZWFrcG9pbnRBY3Rpb25WaWV3LCBpbmRleCkKKyAg
ICBfcG9wb3ZlckFjdGlvbnNJbnNlcnRCcmVha3BvaW50QWN0aW9uVmlldyhicmVha3BvaW50QWN0
aW9uVmlldywgaW5kZXgpCiAgICAgewogICAgICAgICBpZiAoaW5kZXggPT09IC0xKQogICAgICAg
ICAgICAgdGhpcy5fYWN0aW9uc0NvbnRhaW5lci5hcHBlbmRDaGlsZChicmVha3BvaW50QWN0aW9u
Vmlldy5lbGVtZW50KTsKQEAgLTUxMCw5ICs0ODQsOSBAQCBXZWJJbnNwZWN0b3IuQnJlYWtwb2lu
dC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB2YXIgbmV4dEVsZW1lbnQgPSB0aGlzLl9hY3Rp
b25zQ29udGFpbmVyLmNoaWxkcmVuW2luZGV4ICsgMV0gfHwgbnVsbDsKICAgICAgICAgICAgIHRo
aXMuX2FjdGlvbnNDb250YWluZXIuaW5zZXJ0QmVmb3JlKGJyZWFrcG9pbnRBY3Rpb25WaWV3LmVs
ZW1lbnQsIG5leHRFbGVtZW50KTsKICAgICAgICAgfQotICAgIH0sCisgICAgfQogCi0gICAgYnJl
YWtwb2ludEFjdGlvblZpZXdBcHBlbmRBY3Rpb25WaWV3OiBmdW5jdGlvbihicmVha3BvaW50QWN0
aW9uVmlldywgbmV3QWN0aW9uKQorICAgIGJyZWFrcG9pbnRBY3Rpb25WaWV3QXBwZW5kQWN0aW9u
VmlldyhicmVha3BvaW50QWN0aW9uVmlldywgbmV3QWN0aW9uKQogICAgIHsKICAgICAgICAgdmFy
IG5ld0JyZWFrcG9pbnRBY3Rpb25WaWV3ID0gbmV3IFdlYkluc3BlY3Rvci5CcmVha3BvaW50QWN0
aW9uVmlldyhuZXdBY3Rpb24sIHRoaXMpOwogCkBAIC01MjksOSArNTAzLDkgQEAgV2ViSW5zcGVj
dG9yLkJyZWFrcG9pbnQucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9wb3BvdmVyT3B0aW9u
c1Jvd0VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5IaWRk
ZW5TdHlsZUNsYXNzTmFtZSk7CiAKICAgICAgICAgdGhpcy5fcG9wb3Zlci51cGRhdGUoKTsKLSAg
ICB9LAorICAgIH0KIAotICAgIGJyZWFrcG9pbnRBY3Rpb25WaWV3UmVtb3ZlQWN0aW9uVmlldzog
ZnVuY3Rpb24oYnJlYWtwb2ludEFjdGlvblZpZXcpCisgICAgYnJlYWtwb2ludEFjdGlvblZpZXdS
ZW1vdmVBY3Rpb25WaWV3KGJyZWFrcG9pbnRBY3Rpb25WaWV3KQogICAgIHsKICAgICAgICAgYnJl
YWtwb2ludEFjdGlvblZpZXcuZWxlbWVudC5yZW1vdmUoKTsKIApAQCAtNTQyLDE0ICs1MTYsMTQg
QEAgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAg
ICAgICAgdGhpcy5fcG9wb3Zlci51cGRhdGUoKTsKLSAgICB9LAorICAgIH0KIAotICAgIGJyZWFr
cG9pbnRBY3Rpb25WaWV3UmVzaXplZDogZnVuY3Rpb24oYnJlYWtwb2ludEFjdGlvblZpZXcpCisg
ICAgYnJlYWtwb2ludEFjdGlvblZpZXdSZXNpemVkKGJyZWFrcG9pbnRBY3Rpb25WaWV3KQogICAg
IHsKICAgICAgICAgdGhpcy5fcG9wb3Zlci51cGRhdGUoKTsKLSAgICB9LAorICAgIH0KIAotICAg
IHdpbGxEaXNtaXNzUG9wb3ZlcjogZnVuY3Rpb24ocG9wb3ZlcikKKyAgICB3aWxsRGlzbWlzc1Bv
cG92ZXIocG9wb3ZlcikKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3BvcG92
ZXIgPT09IHBvcG92ZXIpOwogICAgICAgICBkZWxldGUgdGhpcy5fcG9wb3ZlckNvbnRlbnRFbGVt
ZW50OwpAQCAtNTU3LDkgKzUzMSw5IEBAIFdlYkluc3BlY3Rvci5CcmVha3BvaW50LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgZGVsZXRlIHRoaXMuX3BvcG92ZXJPcHRpb25zQ2hlY2tib3hFbGVtZW50
OwogICAgICAgICBkZWxldGUgdGhpcy5fYWN0aW9uc0NvbnRhaW5lcjsKICAgICAgICAgZGVsZXRl
IHRoaXMuX3BvcG92ZXI7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfc2hvd0VkaXRCcmVha3BvaW50
UG9wb3ZlcjogZnVuY3Rpb24oYm91bmRpbmdDbGllbnRSZWN0KQorICAgIF9zaG93RWRpdEJyZWFr
cG9pbnRQb3BvdmVyKGJvdW5kaW5nQ2xpZW50UmVjdCkKICAgICB7CiAgICAgICAgIHZhciBib3Vu
ZHMgPSBXZWJJbnNwZWN0b3IuUmVjdC5yZWN0RnJvbUNsaWVudFJlY3QoYm91bmRpbmdDbGllbnRS
ZWN0KTsKICAgICAgICAgYm91bmRzLm9yaWdpbi54IC09IDE7IC8vIE1vdmUgdGhlIGFuY2hvciBs
ZWZ0IG9uZSBwaXhlbCBzbyBpdCBsb29rcyBtb3JlIGNlbnRlcmVkLgpAQCAtNTc0LDE3ICs1NDgs
MzggQEAgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQucHJvdG90eXBlID0gewogICAgICAgICB9CiAK
ICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQu
UG9wb3ZlckNvbmRpdGlvbklucHV0SWQpLnNlbGVjdCgpOwotICAgIH0sCisgICAgfQogCi0gICAg
X3NvdXJjZUNvZGVMb2NhdGlvbkxvY2F0aW9uQ2hhbmdlZDogZnVuY3Rpb24oZXZlbnQpCisgICAg
X3NvdXJjZUNvZGVMb2NhdGlvbkxvY2F0aW9uQ2hhbmdlZChldmVudCkKICAgICB7CiAgICAgICAg
IHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5CcmVha3BvaW50LkV2
ZW50LkxvY2F0aW9uRGlkQ2hhbmdlLCBldmVudC5kYXRhKTsKLSAgICB9LAorICAgIH0KIAotICAg
IF9zb3VyY2VDb2RlTG9jYXRpb25EaXNwbGF5TG9jYXRpb25DaGFuZ2VkOiBmdW5jdGlvbihldmVu
dCkKKyAgICBfc291cmNlQ29kZUxvY2F0aW9uRGlzcGxheUxvY2F0aW9uQ2hhbmdlZChldmVudCkK
ICAgICB7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rv
ci5CcmVha3BvaW50LkV2ZW50LkRpc3BsYXlMb2NhdGlvbkRpZENoYW5nZSwgZXZlbnQuZGF0YSk7
CiAgICAgfQogfTsKIAotV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQucHJvdG90eXBlLl9fcHJvdG9f
XyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOworV2ViSW5zcGVjdG9yLkJyZWFrcG9p
bnQuUG9wb3ZlckNsYXNzTmFtZSA9ICJlZGl0LWJyZWFrcG9pbnQtcG9wb3Zlci1jb250ZW50IjsK
K1dlYkluc3BlY3Rvci5CcmVha3BvaW50LldpZGVQb3BvdmVyQ2xhc3NOYW1lID0gIndpZGUiOwor
V2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQuUG9wb3ZlckNvbmRpdGlvbklucHV0SWQgPSAiZWRpdC1i
cmVha3BvaW50LXBvcG92ZXItY29uZGl0aW9uIjsKK1dlYkluc3BlY3Rvci5CcmVha3BvaW50LlBv
cG92ZXJPcHRpb25zQXV0b0NvbnRpbnVlSW5wdXRJZCA9ICJlZGl0LWJyZWFrcG9pbnQtcG9wb292
ZXItYXV0by1jb250aW51ZSI7CitXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5IaWRkZW5TdHlsZUNs
YXNzTmFtZSA9ICJoaWRkZW4iOworCitXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5EZWZhdWx0QnJl
YWtwb2ludEFjdGlvblR5cGUgPSBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludEFjdGlvbi5UeXBlLkxv
ZzsKKworV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQuVHlwZUlkZW50aWZpZXIgPSAiYnJlYWtwb2lu
dCI7CitXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5VUkxDb29raWVLZXkgPSAiYnJlYWtwb2ludC11
cmwiOworV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQuTGluZU51bWJlckNvb2tpZUtleSA9ICJicmVh
a3BvaW50LWxpbmUtbnVtYmVyIjsKK1dlYkluc3BlY3Rvci5CcmVha3BvaW50LkNvbHVtbk51bWJl
ckNvb2tpZUtleSA9ICJicmVha3BvaW50LWNvbHVtbi1udW1iZXIiOworCitXZWJJbnNwZWN0b3Iu
QnJlYWtwb2ludC5FdmVudCA9IHsKKyAgICBEaXNhYmxlZFN0YXRlRGlkQ2hhbmdlOiAiYnJlYWtw
b2ludC1kaXNhYmxlZC1zdGF0ZS1kaWQtY2hhbmdlIiwKKyAgICBSZXNvbHZlZFN0YXRlRGlkQ2hh
bmdlOiAiYnJlYWtwb2ludC1yZXNvbHZlZC1zdGF0ZS1kaWQtY2hhbmdlIiwKKyAgICBDb25kaXRp
b25EaWRDaGFuZ2U6ICJicmVha3BvaW50LWNvbmRpdGlvbi1kaWQtY2hhbmdlIiwKKyAgICBBY3Rp
b25zRGlkQ2hhbmdlOiAiYnJlYWtwb2ludC1hY3Rpb25zLWRpZC1jaGFuZ2UiLAorICAgIEF1dG9D
b250aW51ZURpZENoYW5nZTogImJyZWFrcG9pbnQtYXV0by1jb250aW51ZS1kaWQtY2hhbmdlIiwK
KyAgICBMb2NhdGlvbkRpZENoYW5nZTogImJyZWFrcG9pbnQtbG9jYXRpb24tZGlkLWNoYW5nZSIs
CisgICAgRGlzcGxheUxvY2F0aW9uRGlkQ2hhbmdlOiAiYnJlYWtwb2ludC1kaXNwbGF5LWxvY2F0
aW9uLWRpZC1jaGFuZ2UiLAorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL01vZGVscy9CcmVha3BvaW50QWN0aW9uLmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0JyZWFrcG9pbnRBY3Rpb24uanMKaW5kZXggYTU1
YTE2NS4uYjk0Zjc5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvTW9kZWxzL0JyZWFrcG9pbnRBY3Rpb24uanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0JyZWFrcG9pbnRBY3Rpb24uanMKQEAgLTIzLDYwICsy
Myw1MSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYklu
c3BlY3Rvci5CcmVha3BvaW50QWN0aW9uID0gZnVuY3Rpb24oYnJlYWtwb2ludCwgdHlwZU9ySW5m
bywgZGF0YSkKK1dlYkluc3BlY3Rvci5CcmVha3BvaW50QWN0aW9uID0gY2xhc3MgQnJlYWtwb2lu
dEFjdGlvbiBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIHsKLSAgICBXZWJJbnNwZWN0b3Iu
T2JqZWN0LmNhbGwodGhpcyk7CisgICAgY29uc3RydWN0b3IoYnJlYWtwb2ludCwgdHlwZU9ySW5m
bywgZGF0YSkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CiAKLSAgICBjb25zb2xlLmFzc2VydChi
cmVha3BvaW50KTsKLSAgICBjb25zb2xlLmFzc2VydCh0eXBlT3JJbmZvKTsKKyAgICAgICAgY29u
c29sZS5hc3NlcnQoYnJlYWtwb2ludCk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHR5cGVPcklu
Zm8pOwogCi0gICAgdGhpcy5fYnJlYWtwb2ludCA9IGJyZWFrcG9pbnQ7CisgICAgICAgIHRoaXMu
X2JyZWFrcG9pbnQgPSBicmVha3BvaW50OwogCi0gICAgaWYgKHR5cGVvZiB0eXBlT3JJbmZvID09
PSAic3RyaW5nIikgewotICAgICAgICB0aGlzLl90eXBlID0gdHlwZU9ySW5mbzsKLSAgICAgICAg
dGhpcy5fZGF0YSA9IGRhdGEgfHwgbnVsbDsKLSAgICB9IGVsc2UgaWYgKHR5cGVvZiB0eXBlT3JJ
bmZvID09PSAib2JqZWN0IikgewotICAgICAgICB0aGlzLl90eXBlID0gdHlwZU9ySW5mby50eXBl
OwotICAgICAgICB0aGlzLl9kYXRhID0gdHlwZU9ySW5mby5kYXRhIHx8IG51bGw7Ci0gICAgfSBl
bHNlCi0gICAgICAgIGNvbnNvbGUuZXJyb3IoIlVuZXhwZWN0ZWQgdHlwZSBwYXNzZWQgdG8gV2Vi
SW5zcGVjdG9yLkJyZWFrcG9pbnRBY3Rpb24iKTsKKyAgICAgICAgaWYgKHR5cGVvZiB0eXBlT3JJ
bmZvID09PSAic3RyaW5nIikgeworICAgICAgICAgICAgdGhpcy5fdHlwZSA9IHR5cGVPckluZm87
CisgICAgICAgICAgICB0aGlzLl9kYXRhID0gZGF0YSB8fCBudWxsOworICAgICAgICB9IGVsc2Ug
aWYgKHR5cGVvZiB0eXBlT3JJbmZvID09PSAib2JqZWN0IikgeworICAgICAgICAgICAgdGhpcy5f
dHlwZSA9IHR5cGVPckluZm8udHlwZTsKKyAgICAgICAgICAgIHRoaXMuX2RhdGEgPSB0eXBlT3JJ
bmZvLmRhdGEgfHwgbnVsbDsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBjb25zb2xlLmVy
cm9yKCJVbmV4cGVjdGVkIHR5cGUgcGFzc2VkIHRvIFdlYkluc3BlY3Rvci5CcmVha3BvaW50QWN0
aW9uIik7CiAKLSAgICBjb25zb2xlLmFzc2VydCh0eXBlb2YgdGhpcy5fdHlwZSA9PT0gInN0cmlu
ZyIpOwotICAgIHRoaXMuX2lkID0gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdlci5uZXh0QnJl
YWtwb2ludEFjdGlvbklkZW50aWZpZXI7Ci19OwotCi1XZWJJbnNwZWN0b3IuQnJlYWtwb2ludEFj
dGlvbi5UeXBlID0gewotICAgIExvZzogImxvZyIsCi0gICAgRXZhbHVhdGU6ICJldmFsdWF0ZSIs
Ci0gICAgU291bmQ6ICJzb3VuZCIsCi0gICAgUHJvYmU6ICJwcm9iZSIKLX07Ci0KLVdlYkluc3Bl
Y3Rvci5CcmVha3BvaW50QWN0aW9uLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2Vi
SW5zcGVjdG9yLkJyZWFrcG9pbnRBY3Rpb24sCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3Iu
T2JqZWN0LnByb3RvdHlwZSwKKyAgICAgICAgY29uc29sZS5hc3NlcnQodHlwZW9mIHRoaXMuX3R5
cGUgPT09ICJzdHJpbmciKTsKKyAgICAgICAgdGhpcy5faWQgPSBXZWJJbnNwZWN0b3IuZGVidWdn
ZXJNYW5hZ2VyLm5leHRCcmVha3BvaW50QWN0aW9uSWRlbnRpZmllcjsKKyAgICB9CiAKICAgICAv
LyBQdWJsaWMKIAogICAgIGdldCBicmVha3BvaW50KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0
aGlzLl9icmVha3BvaW50OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGlkKCkKICAgICB7CiAg
ICAgICAgIHJldHVybiB0aGlzLl9pZDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCB0eXBlKCkK
ICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl90eXBlOwotICAgIH0sCisgICAgfQogCiAgICAg
Z2V0IGRhdGEoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGE7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICBzZXQgZGF0YShkYXRhKQogICAgIHsKQEAgLTg2LDcgKzc3LDcgQEAgV2ViSW5z
cGVjdG9yLkJyZWFrcG9pbnRBY3Rpb24ucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9kYXRh
ID0gZGF0YTsKIAogICAgICAgICB0aGlzLl9icmVha3BvaW50LmJyZWFrcG9pbnRBY3Rpb25EaWRD
aGFuZ2UodGhpcyk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgaW5mbygpCiAgICAgewpAQCAt
OTYsMyArODcsMTAgQEAgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRBY3Rpb24ucHJvdG90eXBlID0g
ewogICAgICAgICByZXR1cm4gb2JqOwogICAgIH0KIH07CisKK1dlYkluc3BlY3Rvci5CcmVha3Bv
aW50QWN0aW9uLlR5cGUgPSB7CisgICAgTG9nOiAibG9nIiwKKyAgICBFdmFsdWF0ZTogImV2YWx1
YXRlIiwKKyAgICBTb3VuZDogInNvdW5kIiwKKyAgICBQcm9iZTogInByb2JlIgorfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9DU1NDb21w
bGV0aW9ucy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9D
U1NDb21wbGV0aW9ucy5qcwppbmRleCAzNjMzN2Q5Li4yODQyMWIzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTQ29tcGxldGlvbnMuanMK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NTU0NvbXBs
ZXRpb25zLmpzCkBAIC0zMSwxNDIgKzMxLDE0NSBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1X
ZWJJbnNwZWN0b3IuQ1NTQ29tcGxldGlvbnMgPSBmdW5jdGlvbihwcm9wZXJ0aWVzLCBhY2NlcHRF
bXB0eVByZWZpeCkKK1dlYkluc3BlY3Rvci5DU1NDb21wbGV0aW9ucyA9IGNsYXNzIENTU0NvbXBs
ZXRpb25zCiB7Ci0gICAgdGhpcy5fdmFsdWVzID0gW107Ci0gICAgdGhpcy5fbG9uZ2hhbmRzID0g
e307Ci0gICAgdGhpcy5fc2hvcnRoYW5kcyA9IHt9OwotCi0gICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBwcm9wZXJ0aWVzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlP
UyA2KTogVGhpcyB1c2VkIHRvIGJlIGFuIGFycmF5IG9mIHN0cmluZ3MsCi0gICAgICAgIC8vIG5v
dyBpdCBjb250YWlucyBvYmplY3RzIHdpdGggYSAnbmFtZScgcHJvcGVydHkuIFN1cHBvcnQgYm90
aCBoZXJlLgotICAgICAgICB2YXIgcHJvcGVydHkgPSBwcm9wZXJ0aWVzW2ldOwotICAgICAgICBp
ZiAodHlwZW9mIHByb3BlcnR5ID09PSAic3RyaW5nIikgewotICAgICAgICAgICAgdGhpcy5fdmFs
dWVzLnB1c2gocHJvcGVydHkpOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLQot
ICAgICAgICB2YXIgcHJvcGVydHlOYW1lID0gcHJvcGVydHkubmFtZTsKLSAgICAgICAgdGhpcy5f
dmFsdWVzLnB1c2gocHJvcGVydHlOYW1lKTsKLQotICAgICAgICB2YXIgbG9uZ2hhbmRzID0gcHJv
cGVydHkubG9uZ2hhbmRzOwotICAgICAgICBpZiAobG9uZ2hhbmRzKSB7Ci0gICAgICAgICAgICB0
aGlzLl9sb25naGFuZHNbcHJvcGVydHlOYW1lXSA9IGxvbmdoYW5kczsKLQotICAgICAgICAgICAg
Zm9yICh2YXIgaiA9IDA7IGogPCBsb25naGFuZHMubGVuZ3RoOyArK2opIHsKLSAgICAgICAgICAg
ICAgICB2YXIgbG9uZ2hhbmROYW1lID0gbG9uZ2hhbmRzW2pdOwotCi0gICAgICAgICAgICAgICAg
dmFyIHNob3J0aGFuZHMgPSB0aGlzLl9zaG9ydGhhbmRzW2xvbmdoYW5kTmFtZV07Ci0gICAgICAg
ICAgICAgICAgaWYgKCFzaG9ydGhhbmRzKSB7Ci0gICAgICAgICAgICAgICAgICAgIHNob3J0aGFu
ZHMgPSBbXTsKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2hvcnRoYW5kc1tsb25naGFuZE5h
bWVdID0gc2hvcnRoYW5kczsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBz
aG9ydGhhbmRzLnB1c2gocHJvcGVydHlOYW1lKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQot
ICAgIH0KLQotICAgIHRoaXMuX3ZhbHVlcy5zb3J0KCk7Ci0KLSAgICB0aGlzLl9hY2NlcHRFbXB0
eVByZWZpeCA9IGFjY2VwdEVtcHR5UHJlZml4OwotfTsKLQotV2ViSW5zcGVjdG9yLkNTU0NvbXBs
ZXRpb25zLmNzc05hbWVDb21wbGV0aW9ucyA9IG51bGw7Ci0KLVdlYkluc3BlY3Rvci5DU1NDb21w
bGV0aW9ucy5yZXF1ZXN0Q1NTTmFtZUNvbXBsZXRpb25zID0gZnVuY3Rpb24oKQotewotICAgIGlm
IChXZWJJbnNwZWN0b3IuQ1NTQ29tcGxldGlvbnMuY3NzTmFtZUNvbXBsZXRpb25zKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBmdW5jdGlvbiBwcm9wZXJ0eU5hbWVzQ2FsbGJhY2soZXJyb3IsIG5h
bWVzKQorICAgIGNvbnN0cnVjdG9yKHByb3BlcnRpZXMsIGFjY2VwdEVtcHR5UHJlZml4KQogICAg
IHsKLSAgICAgICAgaWYgKGVycm9yKQotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB0aGlz
Ll92YWx1ZXMgPSBbXTsKKyAgICAgICAgdGhpcy5fbG9uZ2hhbmRzID0ge307CisgICAgICAgIHRo
aXMuX3Nob3J0aGFuZHMgPSB7fTsKIAotICAgICAgICBXZWJJbnNwZWN0b3IuQ1NTQ29tcGxldGlv
bnMuY3NzTmFtZUNvbXBsZXRpb25zID0gbmV3IFdlYkluc3BlY3Rvci5DU1NDb21wbGV0aW9ucyhu
YW1lcywgZmFsc2UpOwotCi0gICAgICAgIFdlYkluc3BlY3Rvci5DU1NLZXl3b3JkQ29tcGxldGlv
bnMuYWRkQ3VzdG9tQ29tcGxldGlvbnMobmFtZXMpOwotCi0gICAgICAgIC8vIENvZGVNaXJyb3Ig
aXMgbm90IGluY2x1ZGVkIGJ5IHRlc3RzIHNvIHdlIHNob3VsZG4ndCBhc3N1bWUgaXQgYWx3YXlz
IGV4aXN0cy4KLSAgICAgICAgLy8gSWYgaXQgaXNuJ3QgYXZhaWxhYmxlIHdlIHNraXAgTUlNRSB0
eXBlIGFzc29jaWF0aW9ucy4KLSAgICAgICAgaWYgKCF3aW5kb3cuQ29kZU1pcnJvcikKLSAgICAg
ICAgICAgIHJldHVybjsKLQotICAgICAgICB2YXIgcHJvcGVydHlOYW1lc0ZvckNvZGVNaXJyb3Ig
PSB7fTsKLSAgICAgICAgdmFyIHZhbHVlS2V5d29yZHNGb3JDb2RlTWlycm9yID0geyJpbmhlcml0
IjogdHJ1ZSwgImluaXRpYWwiOiB0cnVlfTsKLSAgICAgICAgdmFyIGNvbG9yS2V5d29yZHNGb3JD
b2RlTWlycm9yID0ge307Ci0KLSAgICAgICAgZnVuY3Rpb24gbmFtZUZvckNvZGVNaXJyb3IobmFt
ZSkKLSAgICAgICAgewotICAgICAgICAgICAgLy8gQ29kZU1pcnJvciBwYXJzZXMgdGhlIHZlbmRv
ciBwcmVmaXggc2VwYXJhdGUgZnJvbSB0aGUgcHJvcGVydHkgb3Iga2V5d29yZCBuYW1lLAotICAg
ICAgICAgICAgLy8gc28gd2UgbmVlZCB0byBzdHJpcCB2ZW5kb3IgcHJlZml4ZXMgZnJvbSBvdXIg
bmFtZXMuIEFsc28gc3RyaXAgZnVuY3Rpb24gcGFyZW50aGVzaXMuCi0gICAgICAgICAgICByZXR1
cm4gbmFtZS5yZXBsYWNlKC9eLVteLV0rLS8sICIiKS5yZXBsYWNlKC9cKFwpJC8sICIiKTsKLSAg
ICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIGNvbGxlY3RQcm9wZXJ0eU5hbWVGb3JDb2RlTWly
cm9yKHByb3BlcnR5TmFtZSkKLSAgICAgICAgewotICAgICAgICAgICAgLy8gUHJvcGVydGllcyBj
YW4gYWxzbyBiZSB2YWx1ZSBrZXl3b3JkcywgbGlrZSB3aGVuIHVzZWQgaW4gYSB0cmFuc2l0aW9u
LgotICAgICAgICAgICAgLy8gU28gd2UgYWRkIHRoZW0gdG8gYm90aCBsaXN0cy4KLSAgICAgICAg
ICAgIHZhciBjb2RlTWlycm9yUHJvcGVydHlOYW1lID0gbmFtZUZvckNvZGVNaXJyb3IocHJvcGVy
dHlOYW1lKTsKLSAgICAgICAgICAgIHByb3BlcnR5TmFtZXNGb3JDb2RlTWlycm9yW2NvZGVNaXJy
b3JQcm9wZXJ0eU5hbWVdID0gdHJ1ZTsKLSAgICAgICAgICAgIHZhbHVlS2V5d29yZHNGb3JDb2Rl
TWlycm9yW2NvZGVNaXJyb3JQcm9wZXJ0eU5hbWVdID0gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmFtZXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBwcm9wZXJ0aWVzLmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICAv
LyBDT01QQVRJQklMSVRZIChpT1MgNik6IFRoaXMgdXNlZCB0byBiZSBhbiBhcnJheSBvZiBzdHJp
bmdzLAogICAgICAgICAgICAgLy8gbm93IGl0IGNvbnRhaW5zIG9iamVjdHMgd2l0aCBhICduYW1l
JyBwcm9wZXJ0eS4gU3VwcG9ydCBib3RoIGhlcmUuCi0gICAgICAgICAgICB2YXIgcHJvcGVydHkg
PSBuYW1lc1tpXTsKLSAgICAgICAgICAgIGlmICh0eXBlb2YgcHJvcGVydHkgPT09ICJzdHJpbmci
KQotICAgICAgICAgICAgICAgIGNvbGxlY3RQcm9wZXJ0eU5hbWVGb3JDb2RlTWlycm9yKHByb3Bl
cnR5KTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBjb2xsZWN0UHJvcGVydHlO
YW1lRm9yQ29kZU1pcnJvcihwcm9wZXJ0eS5uYW1lKTsKLSAgICAgICAgfQorICAgICAgICAgICAg
dmFyIHByb3BlcnR5ID0gcHJvcGVydGllc1tpXTsKKyAgICAgICAgICAgIGlmICh0eXBlb2YgcHJv
cGVydHkgPT09ICJzdHJpbmciKSB7CisgICAgICAgICAgICAgICAgdGhpcy5fdmFsdWVzLnB1c2go
cHJvcGVydHkpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICB2YXIgcHJvcGVydHlOYW1lID0gcHJvcGVydHkubmFtZTsKKyAgICAgICAgICAg
IHRoaXMuX3ZhbHVlcy5wdXNoKHByb3BlcnR5TmFtZSk7CisKKyAgICAgICAgICAgIHZhciBsb25n
aGFuZHMgPSBwcm9wZXJ0eS5sb25naGFuZHM7CisgICAgICAgICAgICBpZiAobG9uZ2hhbmRzKSB7
CisgICAgICAgICAgICAgICAgdGhpcy5fbG9uZ2hhbmRzW3Byb3BlcnR5TmFtZV0gPSBsb25naGFu
ZHM7CisKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGxvbmdoYW5kcy5sZW5n
dGg7ICsraikgeworICAgICAgICAgICAgICAgICAgICB2YXIgbG9uZ2hhbmROYW1lID0gbG9uZ2hh
bmRzW2pdOwogCi0gICAgICAgIGZvciAodmFyIHByb3BlcnR5TmFtZSBpbiBXZWJJbnNwZWN0b3Iu
Q1NTS2V5d29yZENvbXBsZXRpb25zLl9wcm9wZXJ0eUtleXdvcmRNYXApIHsKLSAgICAgICAgICAg
IHZhciBrZXl3b3JkcyA9IFdlYkluc3BlY3Rvci5DU1NLZXl3b3JkQ29tcGxldGlvbnMuX3Byb3Bl
cnR5S2V5d29yZE1hcFtwcm9wZXJ0eU5hbWVdOwotICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBrZXl3b3Jkcy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAgIC8vIFNraXAgbnVt
YmVycywgbGlrZSB0aGUgb25lcyBkZWZpbmVkIGZvciBmb250LXdlaWdodC4KLSAgICAgICAgICAg
ICAgICBpZiAoIWlzTmFOKE51bWJlcihrZXl3b3Jkc1tpXSkpKQotICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICB2YWx1ZUtleXdvcmRzRm9yQ29kZU1pcnJvcltu
YW1lRm9yQ29kZU1pcnJvcihrZXl3b3Jkc1tpXSldID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAg
ICAgdmFyIHNob3J0aGFuZHMgPSB0aGlzLl9zaG9ydGhhbmRzW2xvbmdoYW5kTmFtZV07CisgICAg
ICAgICAgICAgICAgICAgIGlmICghc2hvcnRoYW5kcykgeworICAgICAgICAgICAgICAgICAgICAg
ICAgc2hvcnRoYW5kcyA9IFtdOworICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2hvcnRo
YW5kc1tsb25naGFuZE5hbWVdID0gc2hvcnRoYW5kczsKKyAgICAgICAgICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAgICAgICAgIHNob3J0aGFuZHMucHVzaChwcm9wZXJ0eU5hbWUpOworICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIFdlYklu
c3BlY3Rvci5DU1NLZXl3b3JkQ29tcGxldGlvbnMuX2NvbG9ycy5mb3JFYWNoKGZ1bmN0aW9uKGNv
bG9yTmFtZSkgewotICAgICAgICAgICAgY29sb3JLZXl3b3Jkc0ZvckNvZGVNaXJyb3JbbmFtZUZv
ckNvZGVNaXJyb3IoY29sb3JOYW1lKV0gPSB0cnVlOwotICAgICAgICB9KTsKKyAgICAgICAgdGhp
cy5fdmFsdWVzLnNvcnQoKTsKKworICAgICAgICB0aGlzLl9hY2NlcHRFbXB0eVByZWZpeCA9IGFj
Y2VwdEVtcHR5UHJlZml4OworICAgIH0KKworICAgIC8vIFN0YXRpYworCisgICAgc3RhdGljIHJl
cXVlc3RDU1NOYW1lQ29tcGxldGlvbnMoKQorICAgIHsKKyAgICAgICAgaWYgKFdlYkluc3BlY3Rv
ci5DU1NDb21wbGV0aW9ucy5jc3NOYW1lQ29tcGxldGlvbnMpCisgICAgICAgICAgICByZXR1cm47
CiAKLSAgICAgICAgZnVuY3Rpb24gdXBkYXRlQ29kZU1pcnJvckNTU01vZGUobWltZVR5cGUpCisg
ICAgICAgIGZ1bmN0aW9uIHByb3BlcnR5TmFtZXNDYWxsYmFjayhlcnJvciwgbmFtZXMpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIHZhciBtb2RlU3BlYyA9IENvZGVNaXJyb3IucmVzb2x2ZU1vZGUo
bWltZVR5cGUpOworICAgICAgICAgICAgaWYgKGVycm9yKQorICAgICAgICAgICAgICAgIHJldHVy
bjsKIAotICAgICAgICAgICAgY29uc29sZS5hc3NlcnQobW9kZVNwZWMucHJvcGVydHlLZXl3b3Jk
cyk7Ci0gICAgICAgICAgICBjb25zb2xlLmFzc2VydChtb2RlU3BlYy52YWx1ZUtleXdvcmRzKTsK
LSAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KG1vZGVTcGVjLmNvbG9yS2V5d29yZHMpOworICAg
ICAgICAgICAgV2ViSW5zcGVjdG9yLkNTU0NvbXBsZXRpb25zLmNzc05hbWVDb21wbGV0aW9ucyA9
IG5ldyBXZWJJbnNwZWN0b3IuQ1NTQ29tcGxldGlvbnMobmFtZXMsIGZhbHNlKTsKIAotICAgICAg
ICAgICAgbW9kZVNwZWMucHJvcGVydHlLZXl3b3JkcyA9IHByb3BlcnR5TmFtZXNGb3JDb2RlTWly
cm9yOwotICAgICAgICAgICAgbW9kZVNwZWMudmFsdWVLZXl3b3JkcyA9IHZhbHVlS2V5d29yZHNG
b3JDb2RlTWlycm9yOwotICAgICAgICAgICAgbW9kZVNwZWMuY29sb3JLZXl3b3JkcyA9IGNvbG9y
S2V5d29yZHNGb3JDb2RlTWlycm9yOworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLkNTU0tleXdv
cmRDb21wbGV0aW9ucy5hZGRDdXN0b21Db21wbGV0aW9ucyhuYW1lcyk7CiAKLSAgICAgICAgICAg
IENvZGVNaXJyb3IuZGVmaW5lTUlNRShtaW1lVHlwZSwgbW9kZVNwZWMpOworICAgICAgICAgICAg
Ly8gQ29kZU1pcnJvciBpcyBub3QgaW5jbHVkZWQgYnkgdGVzdHMgc28gd2Ugc2hvdWxkbid0IGFz
c3VtZSBpdCBhbHdheXMgZXhpc3RzLgorICAgICAgICAgICAgLy8gSWYgaXQgaXNuJ3QgYXZhaWxh
YmxlIHdlIHNraXAgTUlNRSB0eXBlIGFzc29jaWF0aW9ucy4KKyAgICAgICAgICAgIGlmICghd2lu
ZG93LkNvZGVNaXJyb3IpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICB2
YXIgcHJvcGVydHlOYW1lc0ZvckNvZGVNaXJyb3IgPSB7fTsKKyAgICAgICAgICAgIHZhciB2YWx1
ZUtleXdvcmRzRm9yQ29kZU1pcnJvciA9IHsiaW5oZXJpdCI6IHRydWUsICJpbml0aWFsIjogdHJ1
ZX07CisgICAgICAgICAgICB2YXIgY29sb3JLZXl3b3Jkc0ZvckNvZGVNaXJyb3IgPSB7fTsKKwor
ICAgICAgICAgICAgZnVuY3Rpb24gbmFtZUZvckNvZGVNaXJyb3IobmFtZSkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAvLyBDb2RlTWlycm9yIHBhcnNlcyB0aGUgdmVuZG9yIHByZWZp
eCBzZXBhcmF0ZSBmcm9tIHRoZSBwcm9wZXJ0eSBvciBrZXl3b3JkIG5hbWUsCisgICAgICAgICAg
ICAgICAgLy8gc28gd2UgbmVlZCB0byBzdHJpcCB2ZW5kb3IgcHJlZml4ZXMgZnJvbSBvdXIgbmFt
ZXMuIEFsc28gc3RyaXAgZnVuY3Rpb24gcGFyZW50aGVzaXMuCisgICAgICAgICAgICAgICAgcmV0
dXJuIG5hbWUucmVwbGFjZSgvXi1bXi1dKy0vLCAiIikucmVwbGFjZSgvXChcKSQvLCAiIik7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGNvbGxlY3RQcm9wZXJ0eU5hbWVG
b3JDb2RlTWlycm9yKHByb3BlcnR5TmFtZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAvLyBQcm9wZXJ0aWVzIGNhbiBhbHNvIGJlIHZhbHVlIGtleXdvcmRzLCBsaWtlIHdoZW4gdXNl
ZCBpbiBhIHRyYW5zaXRpb24uCisgICAgICAgICAgICAgICAgLy8gU28gd2UgYWRkIHRoZW0gdG8g
Ym90aCBsaXN0cy4KKyAgICAgICAgICAgICAgICB2YXIgY29kZU1pcnJvclByb3BlcnR5TmFtZSA9
IG5hbWVGb3JDb2RlTWlycm9yKHByb3BlcnR5TmFtZSk7CisgICAgICAgICAgICAgICAgcHJvcGVy
dHlOYW1lc0ZvckNvZGVNaXJyb3JbY29kZU1pcnJvclByb3BlcnR5TmFtZV0gPSB0cnVlOworICAg
ICAgICAgICAgICAgIHZhbHVlS2V5d29yZHNGb3JDb2RlTWlycm9yW2NvZGVNaXJyb3JQcm9wZXJ0
eU5hbWVdID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBuYW1lcy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgIC8vIENPTVBBVElC
SUxJVFkgKGlPUyA2KTogVGhpcyB1c2VkIHRvIGJlIGFuIGFycmF5IG9mIHN0cmluZ3MsCisgICAg
ICAgICAgICAgICAgLy8gbm93IGl0IGNvbnRhaW5zIG9iamVjdHMgd2l0aCBhICduYW1lJyBwcm9w
ZXJ0eS4gU3VwcG9ydCBib3RoIGhlcmUuCisgICAgICAgICAgICAgICAgdmFyIHByb3BlcnR5ID0g
bmFtZXNbaV07CisgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBwcm9wZXJ0eSA9PT0gInN0cmlu
ZyIpCisgICAgICAgICAgICAgICAgICAgIGNvbGxlY3RQcm9wZXJ0eU5hbWVGb3JDb2RlTWlycm9y
KHByb3BlcnR5KTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGNv
bGxlY3RQcm9wZXJ0eU5hbWVGb3JDb2RlTWlycm9yKHByb3BlcnR5Lm5hbWUpOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBmb3IgKHZhciBwcm9wZXJ0eU5hbWUgaW4gV2ViSW5zcGVjdG9y
LkNTU0tleXdvcmRDb21wbGV0aW9ucy5fcHJvcGVydHlLZXl3b3JkTWFwKSB7CisgICAgICAgICAg
ICAgICAgdmFyIGtleXdvcmRzID0gV2ViSW5zcGVjdG9yLkNTU0tleXdvcmRDb21wbGV0aW9ucy5f
cHJvcGVydHlLZXl3b3JkTWFwW3Byb3BlcnR5TmFtZV07CisgICAgICAgICAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBrZXl3b3Jkcy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgICAg
ICAvLyBTa2lwIG51bWJlcnMsIGxpa2UgdGhlIG9uZXMgZGVmaW5lZCBmb3IgZm9udC13ZWlnaHQu
CisgICAgICAgICAgICAgICAgICAgIGlmICghaXNOYU4oTnVtYmVyKGtleXdvcmRzW2ldKSkpCisg
ICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgdmFs
dWVLZXl3b3Jkc0ZvckNvZGVNaXJyb3JbbmFtZUZvckNvZGVNaXJyb3Ioa2V5d29yZHNbaV0pXSA9
IHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBX
ZWJJbnNwZWN0b3IuQ1NTS2V5d29yZENvbXBsZXRpb25zLl9jb2xvcnMuZm9yRWFjaChmdW5jdGlv
bihjb2xvck5hbWUpIHsKKyAgICAgICAgICAgICAgICBjb2xvcktleXdvcmRzRm9yQ29kZU1pcnJv
cltuYW1lRm9yQ29kZU1pcnJvcihjb2xvck5hbWUpXSA9IHRydWU7CisgICAgICAgICAgICB9KTsK
KworICAgICAgICAgICAgZnVuY3Rpb24gdXBkYXRlQ29kZU1pcnJvckNTU01vZGUobWltZVR5cGUp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdmFyIG1vZGVTcGVjID0gQ29kZU1pcnJv
ci5yZXNvbHZlTW9kZShtaW1lVHlwZSk7CisKKyAgICAgICAgICAgICAgICBjb25zb2xlLmFzc2Vy
dChtb2RlU3BlYy5wcm9wZXJ0eUtleXdvcmRzKTsKKyAgICAgICAgICAgICAgICBjb25zb2xlLmFz
c2VydChtb2RlU3BlYy52YWx1ZUtleXdvcmRzKTsKKyAgICAgICAgICAgICAgICBjb25zb2xlLmFz
c2VydChtb2RlU3BlYy5jb2xvcktleXdvcmRzKTsKKworICAgICAgICAgICAgICAgIG1vZGVTcGVj
LnByb3BlcnR5S2V5d29yZHMgPSBwcm9wZXJ0eU5hbWVzRm9yQ29kZU1pcnJvcjsKKyAgICAgICAg
ICAgICAgICBtb2RlU3BlYy52YWx1ZUtleXdvcmRzID0gdmFsdWVLZXl3b3Jkc0ZvckNvZGVNaXJy
b3I7CisgICAgICAgICAgICAgICAgbW9kZVNwZWMuY29sb3JLZXl3b3JkcyA9IGNvbG9yS2V5d29y
ZHNGb3JDb2RlTWlycm9yOworCisgICAgICAgICAgICAgICAgQ29kZU1pcnJvci5kZWZpbmVNSU1F
KG1pbWVUeXBlLCBtb2RlU3BlYyk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHVwZGF0
ZUNvZGVNaXJyb3JDU1NNb2RlKCJ0ZXh0L2NzcyIpOworICAgICAgICAgICAgdXBkYXRlQ29kZU1p
cnJvckNTU01vZGUoInRleHQveC1zY3NzIik7CiAgICAgICAgIH0KIAotICAgICAgICB1cGRhdGVD
b2RlTWlycm9yQ1NTTW9kZSgidGV4dC9jc3MiKTsKLSAgICAgICAgdXBkYXRlQ29kZU1pcnJvckNT
U01vZGUoInRleHQveC1zY3NzIik7CisgICAgICAgIGlmICh3aW5kb3cuQ1NTQWdlbnQpCisgICAg
ICAgICAgICBDU1NBZ2VudC5nZXRTdXBwb3J0ZWRDU1NQcm9wZXJ0aWVzKHByb3BlcnR5TmFtZXND
YWxsYmFjayk7CiAgICAgfQogCi0gICAgaWYgKHdpbmRvdy5DU1NBZ2VudCkKLSAgICAgICAgQ1NT
QWdlbnQuZ2V0U3VwcG9ydGVkQ1NTUHJvcGVydGllcyhwcm9wZXJ0eU5hbWVzQ2FsbGJhY2spOwot
fTsKKyAgICAvLyBQdWJsaWMKIAotV2ViSW5zcGVjdG9yLkNTU0NvbXBsZXRpb25zLnByb3RvdHlw
ZSA9IHsKICAgICBnZXQgdmFsdWVzKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl92YWx1
ZXM7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzdGFydHNXaXRoOiBmdW5jdGlvbihwcmVmaXgpCisg
ICAgc3RhcnRzV2l0aChwcmVmaXgpCiAgICAgewogICAgICAgICB2YXIgZmlyc3RJbmRleCA9IHRo
aXMuX2ZpcnN0SW5kZXhPZlByZWZpeChwcmVmaXgpOwogICAgICAgICBpZiAoZmlyc3RJbmRleCA9
PT0gLTEpCkBAIC0xNzYsMTUgKzE3OSwxNSBAQCBXZWJJbnNwZWN0b3IuQ1NTQ29tcGxldGlvbnMu
cHJvdG90eXBlID0gewogICAgICAgICB3aGlsZSAoZmlyc3RJbmRleCA8IHRoaXMuX3ZhbHVlcy5s
ZW5ndGggJiYgdGhpcy5fdmFsdWVzW2ZpcnN0SW5kZXhdLnN0YXJ0c1dpdGgocHJlZml4KSkKICAg
ICAgICAgICAgIHJlc3VsdHMucHVzaCh0aGlzLl92YWx1ZXNbZmlyc3RJbmRleCsrXSk7CiAgICAg
ICAgIHJldHVybiByZXN1bHRzOwotICAgIH0sCisgICAgfQogCi0gICAgZmlyc3RTdGFydHNXaXRo
OiBmdW5jdGlvbihwcmVmaXgpCisgICAgZmlyc3RTdGFydHNXaXRoKHByZWZpeCkKICAgICB7CiAg
ICAgICAgIHZhciBmb3VuZEluZGV4ID0gdGhpcy5fZmlyc3RJbmRleE9mUHJlZml4KHByZWZpeCk7
CiAgICAgICAgIHJldHVybiAoZm91bmRJbmRleCA9PT0gLTEgPyAiIiA6IHRoaXMuX3ZhbHVlc1tm
b3VuZEluZGV4XSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZmlyc3RJbmRleE9mUHJlZml4OiBm
dW5jdGlvbihwcmVmaXgpCisgICAgX2ZpcnN0SW5kZXhPZlByZWZpeChwcmVmaXgpCiAgICAgewog
ICAgICAgICBpZiAoIXRoaXMuX3ZhbHVlcy5sZW5ndGgpCiAgICAgICAgICAgICByZXR1cm4gLTE7
CkBAIC0yMTQsMjYgKzIxNywyNiBAQCBXZWJJbnNwZWN0b3IuQ1NTQ29tcGxldGlvbnMucHJvdG90
eXBlID0gewogICAgICAgICAgICAgZm91bmRJbmRleC0tOwogCiAgICAgICAgIHJldHVybiBmb3Vu
ZEluZGV4OwotICAgIH0sCisgICAgfQogCi0gICAga2V5U2V0OiBmdW5jdGlvbigpCisgICAga2V5
U2V0KCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fa2V5U2V0KQogICAgICAgICAgICAgdGhp
cy5fa2V5U2V0ID0gdGhpcy5fdmFsdWVzLmtleVNldCgpOwogICAgICAgICByZXR1cm4gdGhpcy5f
a2V5U2V0OwotICAgIH0sCisgICAgfQogCi0gICAgbmV4dDogZnVuY3Rpb24oc3RyLCBwcmVmaXgp
CisgICAgbmV4dChzdHIsIHByZWZpeCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9jbG9z
ZXN0KHN0ciwgcHJlZml4LCAxKTsKLSAgICB9LAorICAgIH0KIAotICAgIHByZXZpb3VzOiBmdW5j
dGlvbihzdHIsIHByZWZpeCkKKyAgICBwcmV2aW91cyhzdHIsIHByZWZpeCkKICAgICB7CiAgICAg
ICAgIHJldHVybiB0aGlzLl9jbG9zZXN0KHN0ciwgcHJlZml4LCAtMSk7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBfY2xvc2VzdDogZnVuY3Rpb24oc3RyLCBwcmVmaXgsIHNoaWZ0KQorICAgIF9jbG9z
ZXN0KHN0ciwgcHJlZml4LCBzaGlmdCkKICAgICB7CiAgICAgICAgIGlmICghc3RyKQogICAgICAg
ICAgICAgcmV0dXJuICIiOwpAQCAtMjUxLDI1ICsyNTQsMjcgQEAgV2ViSW5zcGVjdG9yLkNTU0Nv
bXBsZXRpb25zLnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIGogPSBwcm9wZXJ0aWVzV2l0aFBy
ZWZpeC5pbmRleE9mKHN0cik7CiAgICAgICAgIGogPSAoaiArIHByb3BlcnRpZXNXaXRoUHJlZml4
Lmxlbmd0aCArIHNoaWZ0KSAlIHByb3BlcnRpZXNXaXRoUHJlZml4Lmxlbmd0aDsKICAgICAgICAg
cmV0dXJuIHByb3BlcnRpZXNXaXRoUHJlZml4W2pdOwotICAgIH0sCisgICAgfQogCi0gICAgaXNT
aG9ydGhhbmRQcm9wZXJ0eU5hbWU6IGZ1bmN0aW9uKHNob3J0aGFuZCkKKyAgICBpc1Nob3J0aGFu
ZFByb3BlcnR5TmFtZShzaG9ydGhhbmQpCiAgICAgewogICAgICAgICByZXR1cm4gc2hvcnRoYW5k
IGluIHRoaXMuX2xvbmdoYW5kczsKLSAgICB9LAorICAgIH0KIAotICAgIGlzTG9uZ2hhbmRQcm9w
ZXJ0eU5hbWU6IGZ1bmN0aW9uKGxvbmdoYW5kKQorICAgIGlzTG9uZ2hhbmRQcm9wZXJ0eU5hbWUo
bG9uZ2hhbmQpCiAgICAgewogICAgICAgICByZXR1cm4gbG9uZ2hhbmQgaW4gdGhpcy5fc2hvcnRo
YW5kczsKLSAgICB9LAorICAgIH0KIAotICAgIGxvbmdoYW5kc0ZvclNob3J0aGFuZDogZnVuY3Rp
b24oc2hvcnRoYW5kKQorICAgIGxvbmdoYW5kc0ZvclNob3J0aGFuZChzaG9ydGhhbmQpCiAgICAg
ewogICAgICAgICByZXR1cm4gdGhpcy5fbG9uZ2hhbmRzW3Nob3J0aGFuZF0gfHwgW107Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBzaG9ydGhhbmRzRm9yTG9uZ2hhbmQ6IGZ1bmN0aW9uKGxvbmdoYW5k
KQorICAgIHNob3J0aGFuZHNGb3JMb25naGFuZChsb25naGFuZCkKICAgICB7CiAgICAgICAgIHJl
dHVybiB0aGlzLl9zaG9ydGhhbmRzW2xvbmdoYW5kXSB8fCBbXTsKICAgICB9CiB9OworCitXZWJJ
bnNwZWN0b3IuQ1NTQ29tcGxldGlvbnMuY3NzTmFtZUNvbXBsZXRpb25zID0gbnVsbDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9DU1NNZWRp
YS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9DU1NNZWRp
YS5qcwppbmRleCBhOGM0Mjg3Li5hYzJkZWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTTWVkaWEuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NTU01lZGlhLmpzCkBAIC0yMywzNiArMjMs
MzAgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNw
ZWN0b3IuQ1NTTWVkaWEgPSBmdW5jdGlvbih0eXBlLCB0ZXh0LCBzb3VyY2VDb2RlTG9jYXRpb24p
CitXZWJJbnNwZWN0b3IuQ1NTTWVkaWEgPSBjbGFzcyBDU1NNZWRpYSBleHRlbmRzIFdlYkluc3Bl
Y3Rvci5PYmplY3QKIHsKLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CisgICAg
Y29uc3RydWN0b3IodHlwZSwgdGV4dCwgc291cmNlQ29kZUxvY2F0aW9uKQorICAgIHsKKyAgICAg
ICAgc3VwZXIoKTsKIAotICAgIHRoaXMuX3R5cGUgPSB0eXBlIHx8IG51bGw7Ci0gICAgdGhpcy5f
dGV4dCA9IHRleHQgfHwgIiI7Ci0gICAgdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uID0gc291cmNl
Q29kZUxvY2F0aW9uIHx8IG51bGw7Ci19OworICAgICAgICBjb25zb2xlLmFzc2VydCghc291cmNl
Q29kZUxvY2F0aW9uIHx8IHNvdXJjZUNvZGVMb2NhdGlvbiBpbnN0YW5jZW9mIFdlYkluc3BlY3Rv
ci5Tb3VyY2VDb2RlTG9jYXRpb24pOwogCi1XZWJJbnNwZWN0b3IuQ1NTTWVkaWEuVHlwZSA9IHsK
LSAgICBNZWRpYVJ1bGU6ICJjc3MtbWVkaWEtdHlwZS1tZWRpYS1ydWxlIiwKLSAgICBJbXBvcnRS
dWxlOiAiY3NzLW1lZGlhLXR5cGUtaW1wb3J0LXJ1bGUiLAotICAgIExpbmtlZFN0eWxlU2hlZXQ6
ICJjc3MtbWVkaWEtdHlwZS1saW5rZWQtc3R5bGVzaGVldCIsCi0gICAgSW5saW5lU3R5bGVTaGVl
dDogImNzcy1tZWRpYS10eXBlLWlubGluZS1zdHlsZXNoZWV0IgotfTsKLQotV2ViSW5zcGVjdG9y
LkNTU01lZGlhLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkNT
U01lZGlhLAorICAgICAgICB0aGlzLl90eXBlID0gdHlwZSB8fCBudWxsOworICAgICAgICB0aGlz
Ll90ZXh0ID0gdGV4dCB8fCAiIjsKKyAgICAgICAgdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uID0g
c291cmNlQ29kZUxvY2F0aW9uIHx8IG51bGw7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAg
ICBnZXQgdHlwZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fdHlwZTsKLSAgICB9LAor
ICAgIH0KIAogICAgIGdldCB0ZXh0KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl90ZXh0
OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHNvdXJjZUNvZGVMb2NhdGlvbigpCiAgICAgewpA
QCAtNjAsNCArNTQsOSBAQCBXZWJJbnNwZWN0b3IuQ1NTTWVkaWEucHJvdG90eXBlID0gewogICAg
IH0KIH07CiAKLVdlYkluc3BlY3Rvci5DU1NNZWRpYS5wcm90b3R5cGUuX19wcm90b19fID0gV2Vi
SW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CitXZWJJbnNwZWN0b3IuQ1NTTWVkaWEuVHlwZSA9
IHsKKyAgICBNZWRpYVJ1bGU6ICJjc3MtbWVkaWEtdHlwZS1tZWRpYS1ydWxlIiwKKyAgICBJbXBv
cnRSdWxlOiAiY3NzLW1lZGlhLXR5cGUtaW1wb3J0LXJ1bGUiLAorICAgIExpbmtlZFN0eWxlU2hl
ZXQ6ICJjc3MtbWVkaWEtdHlwZS1saW5rZWQtc3R5bGVzaGVldCIsCisgICAgSW5saW5lU3R5bGVT
aGVldDogImNzcy1tZWRpYS10eXBlLWlubGluZS1zdHlsZXNoZWV0IgorfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9DU1NQcm9wZXJ0eS5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9DU1NQcm9wZXJ0
eS5qcwppbmRleCAwYmM4Zjk0Li4yMmQ2NTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTUHJvcGVydHkuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NTU1Byb3BlcnR5LmpzCkBAIC0yMyw1
MCArMjMsNDEgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1X
ZWJJbnNwZWN0b3IuQ1NTUHJvcGVydHkgPSBmdW5jdGlvbihpbmRleCwgdGV4dCwgbmFtZSwgdmFs
dWUsIHByaW9yaXR5LCBlbmFibGVkLCBvdmVycmlkZGVuLCBpbXBsaWNpdCwgYW5vbnltb3VzLCB2
YWxpZCwgc3R5bGVTaGVldFRleHRSYW5nZSwgc3R5bGVEZWNsYXJhdGlvblRleHRSYW5nZSkKK1dl
Ykluc3BlY3Rvci5DU1NQcm9wZXJ0eSA9IGNsYXNzIENTU1Byb3BlcnR5IGV4dGVuZHMgV2ViSW5z
cGVjdG9yLk9iamVjdAogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAg
ICBjb25zdHJ1Y3RvcihpbmRleCwgdGV4dCwgbmFtZSwgdmFsdWUsIHByaW9yaXR5LCBlbmFibGVk
LCBvdmVycmlkZGVuLCBpbXBsaWNpdCwgYW5vbnltb3VzLCB2YWxpZCwgc3R5bGVTaGVldFRleHRS
YW5nZSwgc3R5bGVEZWNsYXJhdGlvblRleHRSYW5nZSkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7
CiAKLSAgICB0aGlzLl9vd25lclN0eWxlID0gbnVsbDsKLSAgICB0aGlzLl9pbmRleCA9IGluZGV4
OworICAgICAgICB0aGlzLl9vd25lclN0eWxlID0gbnVsbDsKKyAgICAgICAgdGhpcy5faW5kZXgg
PSBpbmRleDsKIAotICAgIHRoaXMudXBkYXRlKHRleHQsIG5hbWUsIHZhbHVlLCBwcmlvcml0eSwg
ZW5hYmxlZCwgb3ZlcnJpZGRlbiwgaW1wbGljaXQsIGFub255bW91cywgdmFsaWQsIHN0eWxlU2hl
ZXRUZXh0UmFuZ2UsIHN0eWxlRGVjbGFyYXRpb25UZXh0UmFuZ2UsIHRydWUpOwotfTsKLQotV2Vi
SW5zcGVjdG9yLk9iamVjdC5hZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhXZWJJbnNwZWN0b3IuQ1NT
UHJvcGVydHkpOwotCi1XZWJJbnNwZWN0b3IuQ1NTUHJvcGVydHkuRXZlbnQgPSB7Ci0gICAgQ2hh
bmdlZDogImNzcy1wcm9wZXJ0eS1jaGFuZ2VkIiwKLSAgICBPdmVycmlkZGVuU3RhdHVzQ2hhbmdl
ZDogImNzcy1wcm9wZXJ0eS1vdmVycmlkZGVuLXN0YXR1cy1jaGFuZ2VkIgotfTsKLQotV2ViSW5z
cGVjdG9yLkNTU1Byb3BlcnR5LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5z
cGVjdG9yLkNTU1Byb3BlcnR5LAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLk9iamVjdC5w
cm90b3R5cGUsCisgICAgICAgIHRoaXMudXBkYXRlKHRleHQsIG5hbWUsIHZhbHVlLCBwcmlvcml0
eSwgZW5hYmxlZCwgb3ZlcnJpZGRlbiwgaW1wbGljaXQsIGFub255bW91cywgdmFsaWQsIHN0eWxl
U2hlZXRUZXh0UmFuZ2UsIHN0eWxlRGVjbGFyYXRpb25UZXh0UmFuZ2UsIHRydWUpOworICAgIH0K
IAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IG93bmVyU3R5bGUoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHRoaXMuX293bmVyU3R5bGU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgb3duZXJT
dHlsZShvd25lclN0eWxlKQogICAgIHsKICAgICAgICAgdGhpcy5fb3duZXJTdHlsZSA9IG93bmVy
U3R5bGUgfHwgbnVsbDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBpbmRleCgpCiAgICAgewog
ICAgICAgICByZXR1cm4gdGhpcy5faW5kZXg7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgaW5k
ZXgoaW5kZXgpCiAgICAgewogICAgICAgICB0aGlzLl9pbmRleCA9IGluZGV4OwotICAgIH0sCisg
ICAgfQogCi0gICAgdXBkYXRlOiBmdW5jdGlvbih0ZXh0LCBuYW1lLCB2YWx1ZSwgcHJpb3JpdHks
IGVuYWJsZWQsIG92ZXJyaWRkZW4sIGltcGxpY2l0LCBhbm9ueW1vdXMsIHZhbGlkLCBzdHlsZVNo
ZWV0VGV4dFJhbmdlLCBzdHlsZURlY2xhcmF0aW9uVGV4dFJhbmdlLCBkb250RmlyZUV2ZW50cykK
KyAgICB1cGRhdGUodGV4dCwgbmFtZSwgdmFsdWUsIHByaW9yaXR5LCBlbmFibGVkLCBvdmVycmlk
ZGVuLCBpbXBsaWNpdCwgYW5vbnltb3VzLCB2YWxpZCwgc3R5bGVTaGVldFRleHRSYW5nZSwgc3R5
bGVEZWNsYXJhdGlvblRleHRSYW5nZSwgZG9udEZpcmVFdmVudHMpCiAgICAgewogICAgICAgICB0
ZXh0ID0gdGV4dCB8fCAiIjsKICAgICAgICAgbmFtZSA9IG5hbWUgfHwgIiI7CkBAIC0xMTYsNyAr
MTA3LDcgQEAgV2ViSW5zcGVjdG9yLkNTU1Byb3BlcnR5LnByb3RvdHlwZSA9IHsKIAogICAgICAg
ICBpZiAoY2hhbmdlZCkKICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJz
KFdlYkluc3BlY3Rvci5DU1NQcm9wZXJ0eS5FdmVudC5DaGFuZ2VkKTsKLSAgICB9LAorICAgIH0K
IAogICAgIGdldCBzeW50aGVzaXplZFRleHQoKQogICAgIHsKQEAgLTEyNiwxNyArMTE3LDE3IEBA
IFdlYkluc3BlY3Rvci5DU1NQcm9wZXJ0eS5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdmFyIHBy
aW9yaXR5ID0gdGhpcy5wcmlvcml0eTsKICAgICAgICAgcmV0dXJuIG5hbWUgKyAiOiAiICsgdGhp
cy52YWx1ZS50cmltKCkgKyAocHJpb3JpdHkgPyAiICEiICsgcHJpb3JpdHkgOiAiIikgKyAiOyI7
Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgdGV4dCgpCiAgICAgewogICAgICAgICByZXR1cm4g
dGhpcy5fdGV4dCB8fCB0aGlzLnN5bnRoZXNpemVkVGV4dDsKLSAgICB9LAorICAgIH0KIAogICAg
IGdldCBuYW1lKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9uYW1lOwotICAgIH0sCisg
ICAgfQogCiAgICAgZ2V0IGNhbm9uaWNhbE5hbWUoKQogICAgIHsKQEAgLTE0NiwzMiArMTM3LDMy
IEBAIFdlYkluc3BlY3Rvci5DU1NQcm9wZXJ0eS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMu
X2Nhbm9uaWNhbE5hbWUgPSBXZWJJbnNwZWN0b3IuY3NzU3R5bGVNYW5hZ2VyLmNhbm9uaWNhbE5h
bWVGb3JQcm9wZXJ0eU5hbWUodGhpcy5uYW1lKTsKIAogICAgICAgICByZXR1cm4gdGhpcy5fY2Fu
b25pY2FsTmFtZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCB2YWx1ZSgpCiAgICAgewogICAg
ICAgICByZXR1cm4gdGhpcy5fdmFsdWU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgaW1wb3J0
YW50KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLnByaW9yaXR5ID09PSAiaW1wb3J0YW50
IjsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBwcmlvcml0eSgpCiAgICAgewogICAgICAgICBy
ZXR1cm4gdGhpcy5fcHJpb3JpdHk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgZW5hYmxlZCgp
CiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZW5hYmxlZCAmJiB0aGlzLl9vd25lclN0eWxl
ICYmICghaXNOYU4odGhpcy5faW5kZXgpIHx8IHRoaXMuX293bmVyU3R5bGUudHlwZSA9PT0gV2Vi
SW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb24uVHlwZS5Db21wdXRlZCk7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICBnZXQgb3ZlcnJpZGRlbigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5f
b3ZlcnJpZGRlbjsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBvdmVycmlkZGVuKG92ZXJyaWRk
ZW4pCiAgICAgewpAQCAtMTk4LDMyICsxODksMzIgQEAgV2ViSW5zcGVjdG9yLkNTU1Byb3BlcnR5
LnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIHRoaXMuX292ZXJyaWRkZW5TdGF0
dXNDaGFuZ2VkVGltZW91dCA9IHNldFRpbWVvdXQoZGVsYXllZC5iaW5kKHRoaXMpLCAwKTsKLSAg
ICB9LAorICAgIH0KIAogICAgIGdldCBpbXBsaWNpdCgpCiAgICAgewogICAgICAgICByZXR1cm4g
dGhpcy5faW1wbGljaXQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgYW5vbnltb3VzKCkKICAg
ICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9hbm9ueW1vdXM7Ci0gICAgfSwKKyAgICB9CiAKICAg
ICBnZXQgaW5oZXJpdGVkKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9pbmhlcml0ZWQ7
Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgdmFsaWQoKQogICAgIHsKICAgICAgICAgcmV0dXJu
IHRoaXMuX3ZhbGlkOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHN0eWxlU2hlZXRUZXh0UmFu
Z2UoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3N0eWxlU2hlZXRUZXh0UmFuZ2U7Ci0g
ICAgfSwKKyAgICB9CiAKICAgICBnZXQgc3R5bGVEZWNsYXJhdGlvblRleHRSYW5nZSgpCiAgICAg
ewpAQCAtMjUxLDM0ICsyNDIsMzQgQEAgV2ViSW5zcGVjdG9yLkNTU1Byb3BlcnR5LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgdGhpcy5fc3R5bGVEZWNsYXJhdGlvblRleHRSYW5nZSA9IG5ldyBXZWJJ
bnNwZWN0b3IuVGV4dFJhbmdlKHN0YXJ0TGluZSwgc3RhcnRDb2x1bW4sIGVuZExpbmUsIGVuZENv
bHVtbik7CiAKICAgICAgICAgcmV0dXJuIHRoaXMuX3N0eWxlRGVjbGFyYXRpb25UZXh0UmFuZ2U7
Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgcmVsYXRlZFNob3J0aGFuZFByb3BlcnR5KCkKICAg
ICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9yZWxhdGVkU2hvcnRoYW5kUHJvcGVydHk7Ci0gICAg
fSwKKyAgICB9CiAKICAgICBzZXQgcmVsYXRlZFNob3J0aGFuZFByb3BlcnR5KHByb3BlcnR5KQog
ICAgIHsKICAgICAgICAgdGhpcy5fcmVsYXRlZFNob3J0aGFuZFByb3BlcnR5ID0gcHJvcGVydHkg
fHwgbnVsbDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCByZWxhdGVkTG9uZ2hhbmRQcm9wZXJ0
aWVzKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9yZWxhdGVkTG9uZ2hhbmRQcm9wZXJ0
aWVzOwotICAgIH0sCisgICAgfQogCi0gICAgYWRkUmVsYXRlZExvbmdoYW5kUHJvcGVydHk6IGZ1
bmN0aW9uKHByb3BlcnR5KQorICAgIGFkZFJlbGF0ZWRMb25naGFuZFByb3BlcnR5KHByb3BlcnR5
KQogICAgIHsKICAgICAgICAgdGhpcy5fcmVsYXRlZExvbmdoYW5kUHJvcGVydGllcy5wdXNoKHBy
b3BlcnR5KTsKLSAgICB9LAorICAgIH0KIAotICAgIGNsZWFyUmVsYXRlZExvbmdoYW5kUHJvcGVy
dGllczogZnVuY3Rpb24ocHJvcGVydHkpCisgICAgY2xlYXJSZWxhdGVkTG9uZ2hhbmRQcm9wZXJ0
aWVzKHByb3BlcnR5KQogICAgIHsKICAgICAgICAgdGhpcy5fcmVsYXRlZExvbmdoYW5kUHJvcGVy
dGllcyA9IFtdOwotICAgIH0sCisgICAgfQogCi0gICAgaGFzT3RoZXJWZW5kb3JOYW1lT3JLZXl3
b3JkOiBmdW5jdGlvbigpCisgICAgaGFzT3RoZXJWZW5kb3JOYW1lT3JLZXl3b3JkKCkKICAgICB7
CiAgICAgICAgIGlmICgiX2hhc090aGVyVmVuZG9yTmFtZU9yS2V5d29yZCIgaW4gdGhpcykKICAg
ICAgICAgICAgIHJldHVybiB0aGlzLl9oYXNPdGhlclZlbmRvck5hbWVPcktleXdvcmQ7CkBAIC0y
ODgsMyArMjc5LDggQEAgV2ViSW5zcGVjdG9yLkNTU1Byb3BlcnR5LnByb3RvdHlwZSA9IHsKICAg
ICAgICAgcmV0dXJuIHRoaXMuX2hhc090aGVyVmVuZG9yTmFtZU9yS2V5d29yZDsKICAgICB9CiB9
OworCitXZWJJbnNwZWN0b3IuQ1NTUHJvcGVydHkuRXZlbnQgPSB7CisgICAgQ2hhbmdlZDogImNz
cy1wcm9wZXJ0eS1jaGFuZ2VkIiwKKyAgICBPdmVycmlkZGVuU3RhdHVzQ2hhbmdlZDogImNzcy1w
cm9wZXJ0eS1vdmVycmlkZGVuLXN0YXR1cy1jaGFuZ2VkIgorfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9DU1NSdWxlLmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NTU1J1bGUuanMKaW5kZXggMGQ4
NzQxMC4uNmYzODczYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvTW9kZWxzL0NTU1J1bGUuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvTW9kZWxzL0NTU1J1bGUuanMKQEAgLTIzLDU0ICsyMyw0MCBAQAogICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5DU1NSdWxlID0g
ZnVuY3Rpb24obm9kZVN0eWxlcywgb3duZXJTdHlsZVNoZWV0LCBpZCwgdHlwZSwgc291cmNlQ29k
ZUxvY2F0aW9uLCBzZWxlY3RvclRleHQsIHNlbGVjdG9ycywgbWF0Y2hlZFNlbGVjdG9ySW5kaWNl
cywgc3R5bGUsIG1lZGlhTGlzdCkKK1dlYkluc3BlY3Rvci5DU1NSdWxlID0gY2xhc3MgQ1NTUnVs
ZSBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIHsKLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0
LmNhbGwodGhpcyk7CisgICAgY29uc3RydWN0b3Iobm9kZVN0eWxlcywgb3duZXJTdHlsZVNoZWV0
LCBpZCwgdHlwZSwgc291cmNlQ29kZUxvY2F0aW9uLCBzZWxlY3RvclRleHQsIHNlbGVjdG9ycywg
bWF0Y2hlZFNlbGVjdG9ySW5kaWNlcywgc3R5bGUsIG1lZGlhTGlzdCkKKyAgICB7CisgICAgICAg
IHN1cGVyKCk7CiAKLSAgICBjb25zb2xlLmFzc2VydChub2RlU3R5bGVzKTsKLSAgICB0aGlzLl9u
b2RlU3R5bGVzID0gbm9kZVN0eWxlczsKKyAgICAgICAgY29uc29sZS5hc3NlcnQobm9kZVN0eWxl
cyk7CisgICAgICAgIHRoaXMuX25vZGVTdHlsZXMgPSBub2RlU3R5bGVzOwogCi0gICAgdGhpcy5f
b3duZXJTdHlsZVNoZWV0ID0gb3duZXJTdHlsZVNoZWV0IHx8IG51bGw7Ci0gICAgdGhpcy5faWQg
PSBpZCB8fCBudWxsOwotICAgIHRoaXMuX3R5cGUgPSB0eXBlIHx8IG51bGw7CisgICAgICAgIHRo
aXMuX293bmVyU3R5bGVTaGVldCA9IG93bmVyU3R5bGVTaGVldCB8fCBudWxsOworICAgICAgICB0
aGlzLl9pZCA9IGlkIHx8IG51bGw7CisgICAgICAgIHRoaXMuX3R5cGUgPSB0eXBlIHx8IG51bGw7
CiAKLSAgICB0aGlzLnVwZGF0ZShzb3VyY2VDb2RlTG9jYXRpb24sIHNlbGVjdG9yVGV4dCwgc2Vs
ZWN0b3JzLCBtYXRjaGVkU2VsZWN0b3JJbmRpY2VzLCBzdHlsZSwgbWVkaWFMaXN0LCB0cnVlKTsK
LX07Ci0KLVdlYkluc3BlY3Rvci5PYmplY3QuYWRkQ29uc3RydWN0b3JGdW5jdGlvbnMoV2ViSW5z
cGVjdG9yLkNTU1J1bGUpOwotCi1XZWJJbnNwZWN0b3IuQ1NTUnVsZS5FdmVudCA9IHsKLSAgICBD
aGFuZ2VkOiAiY3NzLXJ1bGUtY2hhbmdlZCIKLX07Ci0KLVdlYkluc3BlY3Rvci5DU1NSdWxlLlR5
cGUgPSB7Ci0gICAgQXV0aG9yOiAiY3NzLXJ1bGUtdHlwZS1hdXRob3IiLAotICAgIFVzZXI6ICJj
c3MtcnVsZS10eXBlLXVzZXIiLAotICAgIFVzZXJBZ2VudDogImNzcy1ydWxlLXR5cGUtdXNlci1h
Z2VudCIsCi0gICAgSW5zcGVjdG9yOiAiY3NzLXJ1bGUtdHlwZS1pbnNwZWN0b3IiCi19OwotCi1X
ZWJJbnNwZWN0b3IuQ1NTUnVsZS5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYklu
c3BlY3Rvci5DU1NSdWxlLAorICAgICAgICB0aGlzLnVwZGF0ZShzb3VyY2VDb2RlTG9jYXRpb24s
IHNlbGVjdG9yVGV4dCwgc2VsZWN0b3JzLCBtYXRjaGVkU2VsZWN0b3JJbmRpY2VzLCBzdHlsZSwg
bWVkaWFMaXN0LCB0cnVlKTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBpZCgp
CiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5faWQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBn
ZXQgb3duZXJTdHlsZVNoZWV0KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9vd25lclN0
eWxlU2hlZXQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgZWRpdGFibGUoKQogICAgIHsKICAg
ICAgICAgcmV0dXJuICEhdGhpcy5faWQgJiYgKHRoaXMuX3R5cGUgPT09IFdlYkluc3BlY3Rvci5D
U1NSdWxlLlR5cGUuQXV0aG9yIHx8IHRoaXMuX3R5cGUgPT09IFdlYkluc3BlY3Rvci5DU1NSdWxl
LlR5cGUuSW5zcGVjdG9yKTsKLSAgICB9LAorICAgIH0KIAotICAgIHVwZGF0ZTogZnVuY3Rpb24o
c291cmNlQ29kZUxvY2F0aW9uLCBzZWxlY3RvclRleHQsIHNlbGVjdG9ycywgbWF0Y2hlZFNlbGVj
dG9ySW5kaWNlcywgc3R5bGUsIG1lZGlhTGlzdCwgZG9udEZpcmVFdmVudHMpCisgICAgdXBkYXRl
KHNvdXJjZUNvZGVMb2NhdGlvbiwgc2VsZWN0b3JUZXh0LCBzZWxlY3RvcnMsIG1hdGNoZWRTZWxl
Y3RvckluZGljZXMsIHN0eWxlLCBtZWRpYUxpc3QsIGRvbnRGaXJlRXZlbnRzKQogICAgIHsKICAg
ICAgICAgc291cmNlQ29kZUxvY2F0aW9uID0gc291cmNlQ29kZUxvY2F0aW9uIHx8IG51bGw7CiAg
ICAgICAgIHNlbGVjdG9yVGV4dCA9IHNlbGVjdG9yVGV4dCB8fCAiIjsKQEAgLTEwNSwyMiArOTEs
MjIgQEAgV2ViSW5zcGVjdG9yLkNTU1J1bGUucHJvdG90eXBlID0gewogCiAgICAgICAgIGlmIChj
aGFuZ2VkKQogICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5z
cGVjdG9yLkNTU1J1bGUuRXZlbnQuQ2hhbmdlZCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQg
dHlwZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fdHlwZTsKLSAgICB9LAorICAgIH0K
IAogICAgIGdldCBzb3VyY2VDb2RlTG9jYXRpb24oKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRo
aXMuX3NvdXJjZUNvZGVMb2NhdGlvbjsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzZWxlY3Rv
clRleHQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdG9yVGV4dDsKLSAgICB9
LAorICAgIH0KIAogICAgIHNldCBzZWxlY3RvclRleHQoc2VsZWN0b3JUZXh0KQogICAgIHsKQEAg
LTEzMiwxNyArMTE4LDE3IEBAIFdlYkluc3BlY3Rvci5DU1NSdWxlLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB0aGlzLl9ub2RlU3R5bGVzLmNoYW5nZVJ1bGVT
ZWxlY3Rvcih0aGlzLCBzZWxlY3RvclRleHQpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHNl
bGVjdG9ycygpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0b3JzOwotICAgIH0s
CisgICAgfQogCiAgICAgZ2V0IG1hdGNoZWRTZWxlY3RvckluZGljZXMoKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHRoaXMuX21hdGNoZWRTZWxlY3RvckluZGljZXM7Ci0gICAgfSwKKyAgICB9CiAK
ICAgICBnZXQgbWF0Y2hlZFNlbGVjdG9ycygpCiAgICAgewpAQCAtMTYwLDcgKzE0Niw3IEBAIFdl
Ykluc3BlY3Rvci5DU1NSdWxlLnByb3RvdHlwZSA9IHsKICAgICAgICAgfSwgdGhpcyk7CiAKICAg
ICAgICAgcmV0dXJuIHRoaXMuX21hdGNoZWRTZWxlY3RvcnM7Ci0gICAgfSwKKyAgICB9CiAKICAg
ICBnZXQgbWF0Y2hlZFNlbGVjdG9yVGV4dCgpCiAgICAgewpAQCAtMTc2LDI1ICsxNjIsMjUgQEAg
V2ViSW5zcGVjdG9yLkNTU1J1bGUucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9tYXRjaGVk
U2VsZWN0b3JUZXh0ID0gdGhpcy5tYXRjaGVkU2VsZWN0b3JzLm1hcChmdW5jdGlvbih4KSB7IHJl
dHVybiB4LnRleHQ7IH0pLmpvaW4oIiwgIik7CiAKICAgICAgICAgcmV0dXJuIHRoaXMuX21hdGNo
ZWRTZWxlY3RvclRleHQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc3R5bGUoKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIHRoaXMuX3N0eWxlOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IG1l
ZGlhTGlzdCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fbWVkaWFMaXN0OwotICAgIH0s
CisgICAgfQogCi0gICAgaXNFcXVhbFRvOiBmdW5jdGlvbihydWxlKQorICAgIGlzRXF1YWxUbyhy
dWxlKQogICAgIHsKICAgICAgICAgaWYgKCFydWxlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgICAgIHJldHVybiBPYmplY3Quc2hhbGxvd0VxdWFsKHRoaXMuX2lkLCBydWxlLmlk
KTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByb3RlY3RlZAogCkBAIC0yMDQsNCArMTkwLDEz
IEBAIFdlYkluc3BlY3Rvci5DU1NSdWxlLnByb3RvdHlwZSA9IHsKICAgICB9CiB9OwogCi1XZWJJ
bnNwZWN0b3IuQ1NTUnVsZS5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVj
dC5wcm90b3R5cGU7CitXZWJJbnNwZWN0b3IuQ1NTUnVsZS5FdmVudCA9IHsKKyAgICBDaGFuZ2Vk
OiAiY3NzLXJ1bGUtY2hhbmdlZCIKK307CisKK1dlYkluc3BlY3Rvci5DU1NSdWxlLlR5cGUgPSB7
CisgICAgQXV0aG9yOiAiY3NzLXJ1bGUtdHlwZS1hdXRob3IiLAorICAgIFVzZXI6ICJjc3MtcnVs
ZS10eXBlLXVzZXIiLAorICAgIFVzZXJBZ2VudDogImNzcy1ydWxlLXR5cGUtdXNlci1hZ2VudCIs
CisgICAgSW5zcGVjdG9yOiAiY3NzLXJ1bGUtdHlwZS1pbnNwZWN0b3IiCit9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NTU1NlbGVjdG9y
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NTU1NlbGVj
dG9yLmpzCmluZGV4IGZmMjk3MGIuLjRhNjI2MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9DU1NTZWxlY3Rvci5qcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTU2VsZWN0b3IuanMKQEAgLTIz
LDMyICsyMywzMCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
LVdlYkluc3BlY3Rvci5DU1NTZWxlY3RvciA9IGZ1bmN0aW9uKHRleHQsIHNwZWNpZmljaXR5LCBk
eW5hbWljKQorV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yID0gY2xhc3MgQ1NTU2VsZWN0b3IgZXh0
ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxs
KHRoaXMpOworICAgIGNvbnN0cnVjdG9yKHRleHQsIHNwZWNpZmljaXR5LCBkeW5hbWljKQorICAg
IHsKKyAgICAgICAgc3VwZXIoKTsKIAotICAgIGNvbnNvbGUuYXNzZXJ0KHRleHQpOworICAgICAg
ICBjb25zb2xlLmFzc2VydCh0ZXh0KTsKIAotICAgIHRoaXMuX3RleHQgPSB0ZXh0OwotICAgIHRo
aXMuX3NwZWNpZmljaXR5ID0gc3BlY2lmaWNpdHkgfHwgbnVsbDsKLSAgICB0aGlzLl9keW5hbWlj
ID0gZHluYW1pYyB8fCBmYWxzZTsKLX07Ci0KLVdlYkluc3BlY3Rvci5DU1NTZWxlY3Rvci5wcm90
b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvciwKLSAg
ICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlLAorICAgICAgICB0aGlz
Ll90ZXh0ID0gdGV4dDsKKyAgICAgICAgdGhpcy5fc3BlY2lmaWNpdHkgPSBzcGVjaWZpY2l0eSB8
fCBudWxsOworICAgICAgICB0aGlzLl9keW5hbWljID0gZHluYW1pYyB8fCBmYWxzZTsKKyAgICB9
CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCB0ZXh0KCkKICAgICB7CiAgICAgICAgIHJldHVy
biB0aGlzLl90ZXh0OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHNwZWNpZmljaXR5KCkKICAg
ICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zcGVjaWZpY2l0eTsKLSAgICB9LAorICAgIH0KIAog
ICAgIGdldCBkeW5hbWljKCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTU3R5bGVEZWNsYXJhdGlvbi5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9DU1NTdHlsZURlY2xhcmF0aW9uLmpz
CmluZGV4IGVjMDU5ZTEuLmZiMGM2M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL01vZGVscy9DU1NTdHlsZURlY2xhcmF0aW9uLmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9DU1NTdHlsZURlY2xhcmF0aW9u
LmpzCkBAIC0yMyw3MCArMjMsNTUgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCi1XZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvbiA9IGZ1bmN0aW9uKG5v
ZGVTdHlsZXMsIG93bmVyU3R5bGVTaGVldCwgaWQsIHR5cGUsIG5vZGUsIGluaGVyaXRlZCwgdGV4
dCwgcHJvcGVydGllcywgc3R5bGVTaGVldFRleHRSYW5nZSkKK1dlYkluc3BlY3Rvci5DU1NTdHls
ZURlY2xhcmF0aW9uID0gY2xhc3MgQ1NTU3R5bGVEZWNsYXJhdGlvbiBleHRlbmRzIFdlYkluc3Bl
Y3Rvci5PYmplY3QKIHsKLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CisgICAg
Y29uc3RydWN0b3Iobm9kZVN0eWxlcywgb3duZXJTdHlsZVNoZWV0LCBpZCwgdHlwZSwgbm9kZSwg
aW5oZXJpdGVkLCB0ZXh0LCBwcm9wZXJ0aWVzLCBzdHlsZVNoZWV0VGV4dFJhbmdlKQorICAgIHsK
KyAgICAgICAgc3VwZXIoKTsKIAotICAgIGNvbnNvbGUuYXNzZXJ0KG5vZGVTdHlsZXMpOwotICAg
IHRoaXMuX25vZGVTdHlsZXMgPSBub2RlU3R5bGVzOworICAgICAgICBjb25zb2xlLmFzc2VydChu
b2RlU3R5bGVzKTsKKyAgICAgICAgdGhpcy5fbm9kZVN0eWxlcyA9IG5vZGVTdHlsZXM7CiAKLSAg
ICB0aGlzLl9vd25lclJ1bGUgPSBudWxsOworICAgICAgICB0aGlzLl9vd25lclJ1bGUgPSBudWxs
OwogCi0gICAgdGhpcy5fb3duZXJTdHlsZVNoZWV0ID0gb3duZXJTdHlsZVNoZWV0IHx8IG51bGw7
Ci0gICAgdGhpcy5faWQgPSBpZCB8fCBudWxsOwotICAgIHRoaXMuX3R5cGUgPSB0eXBlIHx8IG51
bGw7Ci0gICAgdGhpcy5fbm9kZSA9IG5vZGUgfHwgbnVsbDsKLSAgICB0aGlzLl9pbmhlcml0ZWQg
PSBpbmhlcml0ZWQgfHwgZmFsc2U7CisgICAgICAgIHRoaXMuX293bmVyU3R5bGVTaGVldCA9IG93
bmVyU3R5bGVTaGVldCB8fCBudWxsOworICAgICAgICB0aGlzLl9pZCA9IGlkIHx8IG51bGw7Cisg
ICAgICAgIHRoaXMuX3R5cGUgPSB0eXBlIHx8IG51bGw7CisgICAgICAgIHRoaXMuX25vZGUgPSBu
b2RlIHx8IG51bGw7CisgICAgICAgIHRoaXMuX2luaGVyaXRlZCA9IGluaGVyaXRlZCB8fCBmYWxz
ZTsKIAotICAgIHRoaXMuX3BlbmRpbmdQcm9wZXJ0aWVzID0gW107Ci0gICAgdGhpcy5fcHJvcGVy
dHlOYW1lTWFwID0ge307CisgICAgICAgIHRoaXMuX3BlbmRpbmdQcm9wZXJ0aWVzID0gW107Cisg
ICAgICAgIHRoaXMuX3Byb3BlcnR5TmFtZU1hcCA9IHt9OwogCi0gICAgdGhpcy51cGRhdGUodGV4
dCwgcHJvcGVydGllcywgc3R5bGVTaGVldFRleHRSYW5nZSwgdHJ1ZSk7Ci19OwotCi1XZWJJbnNw
ZWN0b3IuT2JqZWN0LmFkZENvbnN0cnVjdG9yRnVuY3Rpb25zKFdlYkluc3BlY3Rvci5DU1NTdHls
ZURlY2xhcmF0aW9uKTsKLQotV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb24uRXZlbnQg
PSB7Ci0gICAgUHJvcGVydGllc0NoYW5nZWQ6ICJjc3Mtc3R5bGUtZGVjbGFyYXRpb24tcHJvcGVy
dGllcy1jaGFuZ2VkIgotfTsKLQotV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb24uVHlw
ZSA9IHsKLSAgICBSdWxlOiAiY3NzLXN0eWxlLWRlY2xhcmF0aW9uLXR5cGUtcnVsZSIsCi0gICAg
SW5saW5lOiAiY3NzLXN0eWxlLWRlY2xhcmF0aW9uLXR5cGUtaW5saW5lIiwKLSAgICBBdHRyaWJ1
dGU6ICJjc3Mtc3R5bGUtZGVjbGFyYXRpb24tdHlwZS1hdHRyaWJ1dGUiLAotICAgIENvbXB1dGVk
OiAiY3NzLXN0eWxlLWRlY2xhcmF0aW9uLXR5cGUtY29tcHV0ZWQiCi19OwotCi1XZWJJbnNwZWN0
b3IuQ1NTU3R5bGVEZWNsYXJhdGlvbi5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdl
Ykluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uLAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVj
dG9yLk9iamVjdC5wcm90b3R5cGUsCisgICAgICAgIHRoaXMudXBkYXRlKHRleHQsIHByb3BlcnRp
ZXMsIHN0eWxlU2hlZXRUZXh0UmFuZ2UsIHRydWUpOworICAgIH0KIAogICAgIC8vIFB1YmxpYwog
CiAgICAgZ2V0IGlkKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9pZDsKLSAgICB9LAor
ICAgIH0KIAogICAgIGdldCBvd25lclN0eWxlU2hlZXQoKQogICAgIHsKICAgICAgICAgcmV0dXJu
IHRoaXMuX293bmVyU3R5bGVTaGVldDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCB0eXBlKCkK
ICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl90eXBlOwotICAgIH0sCisgICAgfQogCiAgICAg
Z2V0IGluaGVyaXRlZCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5faW5oZXJpdGVkOwot
ICAgIH0sCisgICAgfQogCiAgICAgZ2V0IG5vZGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRo
aXMuX25vZGU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgZWRpdGFibGUoKQogICAgIHsKQEAg
LTEwMCw5ICs4NSw5IEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgICAgIHJldHVybiAhdGhpcy5fbm9kZS5pc0luU2hhZG93VHJlZSgpOwog
CiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9LAorICAgIH0KIAotICAgIHVwZGF0ZTogZnVu
Y3Rpb24odGV4dCwgcHJvcGVydGllcywgc3R5bGVTaGVldFRleHRSYW5nZSwgZG9udEZpcmVFdmVu
dHMpCisgICAgdXBkYXRlKHRleHQsIHByb3BlcnRpZXMsIHN0eWxlU2hlZXRUZXh0UmFuZ2UsIGRv
bnRGaXJlRXZlbnRzKQogICAgIHsKICAgICAgICAgdGV4dCA9IHRleHQgfHwgIiI7CiAgICAgICAg
IHByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzIHx8IFtdOwpAQCAtMTc2LDIyICsxNjEsMjIgQEAgV2Vi
SW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb24ucHJvdG90eXBlID0gewogCiAgICAgICAgIC8v
IERlbGF5IGZpcmluZyB0aGUgUHJvcGVydGllc0NoYW5nZWQgZXZlbnQgc28gRE9NTm9kZVN0eWxl
cyBoYXMgYSBjaGFuY2UgdG8gbWFyayBvdmVycmlkZGVuIGFuZCBhc3NvY2lhdGVkIHByb3BlcnRp
ZXMuCiAgICAgICAgIHNldFRpbWVvdXQoZGVsYXllZC5iaW5kKHRoaXMpLCAwKTsKLSAgICB9LAor
ICAgIH0KIAogICAgIGdldCBvd25lclJ1bGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMu
X293bmVyUnVsZTsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBvd25lclJ1bGUocnVsZSkKICAg
ICB7CiAgICAgICAgIHRoaXMuX293bmVyUnVsZSA9IHJ1bGUgfHwgbnVsbDsKLSAgICB9LAorICAg
IH0KIAogICAgIGdldCB0ZXh0KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl90ZXh0Owot
ICAgIH0sCisgICAgfQogCiAgICAgc2V0IHRleHQodGV4dCkKICAgICB7CkBAIC0xOTksMTIgKzE4
NCwxMiBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvbi5wcm90b3R5cGUgPSB7CiAg
ICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgdGhpcy5fbm9kZVN0eWxlcy5jaGFuZ2VTdHls
ZVRleHQodGhpcywgdGV4dCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgcHJvcGVydGllcygp
CiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcHJvcGVydGllczsKLSAgICB9LAorICAgIH0K
IAogICAgIGdldCB2aXNpYmxlUHJvcGVydGllcygpCiAgICAgewpAQCAtMjE2LDE5ICsyMDEsMTkg
QEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb24ucHJvdG90eXBlID0gewogICAgICAg
ICB9KTsKIAogICAgICAgICByZXR1cm4gdGhpcy5fdmlzaWJsZVByb3BlcnRpZXM7Ci0gICAgfSwK
KyAgICB9CiAKICAgICBnZXQgcGVuZGluZ1Byb3BlcnRpZXMoKQogICAgIHsKICAgICAgICAgcmV0
dXJuIHRoaXMuX3BlbmRpbmdQcm9wZXJ0aWVzOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHN0
eWxlU2hlZXRUZXh0UmFuZ2UoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3N0eWxlU2hl
ZXRUZXh0UmFuZ2U7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBwcm9wZXJ0eUZvck5hbWU6IGZ1bmN0
aW9uKG5hbWUsIGRvbnRDcmVhdGVJZk1pc3NpbmcpCisgICAgcHJvcGVydHlGb3JOYW1lKG5hbWUs
IGRvbnRDcmVhdGVJZk1pc3NpbmcpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChuYW1l
KTsKICAgICAgICAgaWYgKCFuYW1lKQpAQCAtMjczLDcgKzI1OCw3IEBAIFdlYkluc3BlY3Rvci5D
U1NTdHlsZURlY2xhcmF0aW9uLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fcGVuZGluZ1By
b3BlcnRpZXMucHVzaChuZXdQcm9wZXJ0eSk7CiAKICAgICAgICAgcmV0dXJuIG5ld1Byb3BlcnR5
OwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJvdGVjdGVkCiAKQEAgLTI4MiwzICsyNjcsMTQg
QEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb24ucHJvdG90eXBlID0gewogICAgICAg
ICByZXR1cm4gdGhpcy5fbm9kZVN0eWxlczsKICAgICB9CiB9OworCitXZWJJbnNwZWN0b3IuQ1NT
U3R5bGVEZWNsYXJhdGlvbi5FdmVudCA9IHsKKyAgICBQcm9wZXJ0aWVzQ2hhbmdlZDogImNzcy1z
dHlsZS1kZWNsYXJhdGlvbi1wcm9wZXJ0aWVzLWNoYW5nZWQiCit9OworCitXZWJJbnNwZWN0b3Iu
Q1NTU3R5bGVEZWNsYXJhdGlvbi5UeXBlID0geworICAgIFJ1bGU6ICJjc3Mtc3R5bGUtZGVjbGFy
YXRpb24tdHlwZS1ydWxlIiwKKyAgICBJbmxpbmU6ICJjc3Mtc3R5bGUtZGVjbGFyYXRpb24tdHlw
ZS1pbmxpbmUiLAorICAgIEF0dHJpYnV0ZTogImNzcy1zdHlsZS1kZWNsYXJhdGlvbi10eXBlLWF0
dHJpYnV0ZSIsCisgICAgQ29tcHV0ZWQ6ICJjc3Mtc3R5bGUtZGVjbGFyYXRpb24tdHlwZS1jb21w
dXRlZCIKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Nb2RlbHMvQ1NTU3R5bGVTaGVldC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL01vZGVscy9DU1NTdHlsZVNoZWV0LmpzCmluZGV4IDBmZTMyMjcuLjZjOWM2Yjk1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ1NT
U3R5bGVTaGVldC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9N
b2RlbHMvQ1NTU3R5bGVTaGVldC5qcwpAQCAtMjMsNjIgKzIzLDU0IEBACiAgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkNTU1N0eWxlU2hlZXQg
PSBmdW5jdGlvbihpZCwgdXJsLCBwYXJlbnRGcmFtZSkKK1dlYkluc3BlY3Rvci5DU1NTdHlsZVNo
ZWV0ID0gY2xhc3MgQ1NTU3R5bGVTaGVldCBleHRlbmRzIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2Rl
CiB7Ci0gICAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGUuY2FsbCh0aGlzKTsKKyAgICBjb25zdHJ1
Y3RvcihpZCwgdXJsLCBwYXJlbnRGcmFtZSkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CiAKLSAg
ICBjb25zb2xlLmFzc2VydChpZCk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGlkKTsKIAotICAg
IHRoaXMuX2lkID0gaWQgfHwgbnVsbDsKKyAgICAgICAgdGhpcy5faWQgPSBpZCB8fCBudWxsOwog
Ci0gICAgdGhpcy51cGRhdGVJbmZvKHVybCwgcGFyZW50RnJhbWUpOwotfTsKKyAgICAgICAgdGhp
cy51cGRhdGVJbmZvKHVybCwgcGFyZW50RnJhbWUpOworICAgIH0KIAotV2ViSW5zcGVjdG9yLk9i
amVjdC5hZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhXZWJJbnNwZWN0b3IuQ1NTU3R5bGVTaGVldCk7
CisgICAgLy8gU3RhdGljCiAKLVdlYkluc3BlY3Rvci5DU1NTdHlsZVNoZWV0LnJlc2V0VW5pcXVl
RGlzcGxheU5hbWVOdW1iZXJzID0gZnVuY3Rpb24oKQotewotICAgIFdlYkluc3BlY3Rvci5DU1NT
dHlsZVNoZWV0Ll9uZXh0VW5pcXVlRGlzcGxheU5hbWVOdW1iZXIgPSAxOwotfTsKLQotV2ViSW5z
cGVjdG9yLkNTU1N0eWxlU2hlZXQuX25leHRVbmlxdWVEaXNwbGF5TmFtZU51bWJlciA9IDE7Ci0K
LVdlYkluc3BlY3Rvci5DU1NTdHlsZVNoZWV0LkV2ZW50ID0gewotICAgIENvbnRlbnREaWRDaGFu
Z2U6ICJzdHlsZXNoZWV0LWNvbnRlbnQtZGlkLWNoYW5nZSIKLX07Ci0KLVdlYkluc3BlY3Rvci5D
U1NTdHlsZVNoZWV0LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9y
LkNTU1N0eWxlU2hlZXQsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuU291cmNlQ29kZS5w
cm90b3R5cGUsCisgICAgc3RhdGljIHJlc2V0VW5pcXVlRGlzcGxheU5hbWVOdW1iZXJzKCkKKyAg
ICB7CisgICAgICAgIFdlYkluc3BlY3Rvci5DU1NTdHlsZVNoZWV0Ll9uZXh0VW5pcXVlRGlzcGxh
eU5hbWVOdW1iZXIgPSAxOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IGlkKCkK
ICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9pZDsKLSAgICB9LAorICAgIH0KIAogICAgIGdl
dCBwYXJlbnRGcmFtZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcGFyZW50RnJhbWU7
Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgdXJsKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0
aGlzLl91cmw7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgdXJsQ29tcG9uZW50cygpCiAgICAg
ewogICAgICAgICBpZiAoIXRoaXMuX3VybENvbXBvbmVudHMpCiAgICAgICAgICAgICB0aGlzLl91
cmxDb21wb25lbnRzID0gcGFyc2VVUkwodGhpcy5fdXJsKTsKICAgICAgICAgcmV0dXJuIHRoaXMu
X3VybENvbXBvbmVudHM7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgbWltZVR5cGUoKQogICAg
IHsKICAgICAgICAgcmV0dXJuICJ0ZXh0L2NzcyI7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQg
ZGlzcGxheU5hbWUoKQogICAgIHsKQEAgLTkwLDI0ICs4MiwyNCBAQCBXZWJJbnNwZWN0b3IuQ1NT
U3R5bGVTaGVldC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl91bmlxdWVEaXNwbGF5
TmFtZU51bWJlciA9IHRoaXMuY29uc3RydWN0b3IuX25leHRVbmlxdWVEaXNwbGF5TmFtZU51bWJl
cisrOwogCiAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkFub255bW91cyBT
dHlsZVNoZWV0ICVkIikuZm9ybWF0KHRoaXMuX3VuaXF1ZURpc3BsYXlOYW1lTnVtYmVyKTsKLSAg
ICB9LAorICAgIH0KIAogICAgIC8vIFByb3RlY3RlZAogCi0gICAgdXBkYXRlSW5mbzogZnVuY3Rp
b24odXJsLCBwYXJlbnRGcmFtZSkKKyAgICB1cGRhdGVJbmZvKHVybCwgcGFyZW50RnJhbWUpCiAg
ICAgewogICAgICAgICB0aGlzLl91cmwgPSB1cmwgfHwgbnVsbDsKICAgICAgICAgZGVsZXRlIHRo
aXMuX3VybENvbXBvbmVudHM7CiAKICAgICAgICAgdGhpcy5fcGFyZW50RnJhbWUgPSBwYXJlbnRG
cmFtZSB8fCBudWxsOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHJldmlzaW9uRm9yUmVxdWVz
dGVkQ29udGVudCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50UmV2aXNpb247
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBoYW5kbGVDdXJyZW50UmV2aXNpb25Db250ZW50Q2hhbmdl
OiBmdW5jdGlvbigpCisgICAgaGFuZGxlQ3VycmVudFJldmlzaW9uQ29udGVudENoYW5nZSgpCiAg
ICAgewogICAgICAgICBpZiAoIXRoaXMuX2lkKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTI1
LDkgKzExNyw5IEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZVNoZWV0LnByb3RvdHlwZSA9IHsKICAg
ICAgICAgdGhpcy5faWdub3JlTmV4dENvbnRlbnREaWRDaGFuZ2VOb3RpZmljYXRpb24gPSB0cnVl
OwogCiAgICAgICAgIENTU0FnZW50LnNldFN0eWxlU2hlZXRUZXh0KHRoaXMuX2lkLCB0aGlzLmN1
cnJlbnRSZXZpc2lvbi5jb250ZW50LCBjb250ZW50RGlkQ2hhbmdlLmJpbmQodGhpcykpOwotICAg
IH0sCisgICAgfQogCi0gICAgcmVxdWVzdENvbnRlbnRGcm9tQmFja2VuZDogZnVuY3Rpb24oKQor
ICAgIHJlcXVlc3RDb250ZW50RnJvbUJhY2tlbmQoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlz
Ll9pZCkgewogICAgICAgICAgICAgLy8gVGhlcmUgaXMgbm8gaWRlbnRpZmllciB0byByZXF1ZXN0
IGNvbnRlbnQgd2l0aC4gUmVqZWN0IHRoZSBwcm9taXNlIHRvIGNhdXNlIHRoZQpAQCAtMTM2LDkg
KzEyOCw5IEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZVNoZWV0LnByb3RvdHlwZSA9IHsKICAgICAg
ICAgfQogCiAgICAgICAgIHJldHVybiBDU1NBZ2VudC5nZXRTdHlsZVNoZWV0VGV4dCh0aGlzLl9p
ZCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBub3RlQ29udGVudERpZENoYW5nZTogZnVuY3Rpb24o
KQorICAgIG5vdGVDb250ZW50RGlkQ2hhbmdlKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9p
Z25vcmVOZXh0Q29udGVudERpZENoYW5nZU5vdGlmaWNhdGlvbikgewogICAgICAgICAgICAgZGVs
ZXRlIHRoaXMuX2lnbm9yZU5leHRDb250ZW50RGlkQ2hhbmdlTm90aWZpY2F0aW9uOwpAQCAtMTUw
LDMgKzE0Miw5IEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZVNoZWV0LnByb3RvdHlwZSA9IHsKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogfTsKKworV2ViSW5zcGVjdG9yLkNTU1N0eWxlU2hl
ZXQuX25leHRVbmlxdWVEaXNwbGF5TmFtZU51bWJlciA9IDE7CisKK1dlYkluc3BlY3Rvci5DU1NT
dHlsZVNoZWV0LkV2ZW50ID0geworICAgIENvbnRlbnREaWRDaGFuZ2U6ICJzdHlsZXNoZWV0LWNv
bnRlbnQtZGlkLWNoYW5nZSIKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Nb2RlbHMvQ2FsbEZyYW1lLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NhbGxGcmFtZS5qcwppbmRleCAxOTMyNjc1Li41YTY1ZTAw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMv
Q2FsbEZyYW1lLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01v
ZGVscy9DYWxsRnJhbWUuanMKQEAgLTIzLDY0ICsyMyw2MyBAQAogICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5DYWxsRnJhbWUgPSBmdW5jdGlv
bihpZCwgc291cmNlQ29kZUxvY2F0aW9uLCBmdW5jdGlvbk5hbWUsIHRoaXNPYmplY3QsIHNjb3Bl
Q2hhaW4sIG5hdGl2ZUNvZGUpCitXZWJJbnNwZWN0b3IuQ2FsbEZyYW1lID0gY2xhc3MgQ2FsbEZy
YW1lIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogewotICAgIFdlYkluc3BlY3Rvci5PYmpl
Y3QuY2FsbCh0aGlzKTsKKyAgICBjb25zdHJ1Y3RvcihpZCwgc291cmNlQ29kZUxvY2F0aW9uLCBm
dW5jdGlvbk5hbWUsIHRoaXNPYmplY3QsIHNjb3BlQ2hhaW4sIG5hdGl2ZUNvZGUpCisgICAgewor
ICAgICAgICBzdXBlcigpOwogCi0gICAgY29uc29sZS5hc3NlcnQoIXNvdXJjZUNvZGVMb2NhdGlv
biB8fCBzb3VyY2VDb2RlTG9jYXRpb24gaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuU291cmNlQ29k
ZUxvY2F0aW9uKTsKLSAgICBjb25zb2xlLmFzc2VydCghdGhpc09iamVjdCB8fCB0aGlzT2JqZWN0
IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdCk7Ci0gICAgY29uc29sZS5hc3Nl
cnQoIXNjb3BlQ2hhaW4gfHwgc2NvcGVDaGFpbiBpbnN0YW5jZW9mIEFycmF5KTsKKyAgICAgICAg
Y29uc29sZS5hc3NlcnQoIXNvdXJjZUNvZGVMb2NhdGlvbiB8fCBzb3VyY2VDb2RlTG9jYXRpb24g
aW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuU291cmNlQ29kZUxvY2F0aW9uKTsKKyAgICAgICAgY29u
c29sZS5hc3NlcnQoIXRoaXNPYmplY3QgfHwgdGhpc09iamVjdCBpbnN0YW5jZW9mIFdlYkluc3Bl
Y3Rvci5SZW1vdGVPYmplY3QpOworICAgICAgICBjb25zb2xlLmFzc2VydCghc2NvcGVDaGFpbiB8
fCBzY29wZUNoYWluIGluc3RhbmNlb2YgQXJyYXkpOwogCi0gICAgdGhpcy5faWQgPSBpZCB8fCBu
dWxsOwotICAgIHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbiA9IHNvdXJjZUNvZGVMb2NhdGlvbiB8
fCBudWxsOwotICAgIHRoaXMuX2Z1bmN0aW9uTmFtZSA9IGZ1bmN0aW9uTmFtZSB8fCBudWxsOwot
ICAgIHRoaXMuX3RoaXNPYmplY3QgPSB0aGlzT2JqZWN0IHx8IG51bGw7Ci0gICAgdGhpcy5fc2Nv
cGVDaGFpbiA9IHNjb3BlQ2hhaW4gfHwgW107Ci0gICAgdGhpcy5fbmF0aXZlQ29kZSA9IG5hdGl2
ZUNvZGUgfHwgZmFsc2U7Ci19OwotCi1XZWJJbnNwZWN0b3IuQ2FsbEZyYW1lLnByb3RvdHlwZSA9
IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkNhbGxGcmFtZSwKKyAgICAgICAgdGhp
cy5faWQgPSBpZCB8fCBudWxsOworICAgICAgICB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb24gPSBz
b3VyY2VDb2RlTG9jYXRpb24gfHwgbnVsbDsKKyAgICAgICAgdGhpcy5fZnVuY3Rpb25OYW1lID0g
ZnVuY3Rpb25OYW1lIHx8IG51bGw7CisgICAgICAgIHRoaXMuX3RoaXNPYmplY3QgPSB0aGlzT2Jq
ZWN0IHx8IG51bGw7CisgICAgICAgIHRoaXMuX3Njb3BlQ2hhaW4gPSBzY29wZUNoYWluIHx8IFtd
OworICAgICAgICB0aGlzLl9uYXRpdmVDb2RlID0gbmF0aXZlQ29kZSB8fCBmYWxzZTsKKyAgICB9
CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBpZCgpCiAgICAgewogICAgICAgICByZXR1cm4g
dGhpcy5faWQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc291cmNlQ29kZUxvY2F0aW9uKCkK
ICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb247Ci0gICAgfSwK
KyAgICB9CiAKICAgICBnZXQgZnVuY3Rpb25OYW1lKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0
aGlzLl9mdW5jdGlvbk5hbWU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgbmF0aXZlQ29kZSgp
CiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fbmF0aXZlQ29kZTsKLSAgICB9LAorICAgIH0K
IAogICAgIGdldCB0aGlzT2JqZWN0KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl90aGlz
T2JqZWN0OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHNjb3BlQ2hhaW4oKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHRoaXMuX3Njb3BlQ2hhaW47Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzYXZl
SWRlbnRpdHlUb0Nvb2tpZTogZnVuY3Rpb24oKQorICAgIHNhdmVJZGVudGl0eVRvQ29va2llKCkK
ICAgICB7CiAgICAgICAgIC8vIERvIG5vdGhpbmcuIFRoZSBjYWxsIGZyYW1lIGlzIHRvcm4gZG93
biB3aGVuIHRoZSBpbnNwZWN0b3IgY2xvc2VzLCBhbmQKICAgICAgICAgLy8gd2Ugc2hvdWxkbid0
IHJlc3RvcmUgY2FsbCBmcmFtZSBjb250ZW50IHZpZXdzIGFjcm9zcyBkZWJ1Z2dlciBwYXVzZXMu
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjb2xsZWN0U2NvcGVDaGFpblZhcmlhYmxlTmFtZXM6IGZ1
bmN0aW9uKGNhbGxiYWNrKQorICAgIGNvbGxlY3RTY29wZUNoYWluVmFyaWFibGVOYW1lcyhjYWxs
YmFjaykKICAgICB7CiAgICAgICAgIHZhciByZXN1bHQgPSB7dGhpczogdHJ1ZX07CiAKQEAgLTEw
MSw1ICsxMDAsMyBAQCBXZWJJbnNwZWN0b3IuQ2FsbEZyYW1lLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgICAgIHRoaXMuX3Njb3BlQ2hhaW5baV0ub2JqZWN0LmRlcHJlY2F0ZWRHZXRBbGxQcm9wZXJ0
aWVzKHByb3BlcnRpZXNDb2xsZWN0ZWQpOwogICAgIH0KIH07Ci0KLVdlYkluc3BlY3Rvci5DYWxs
RnJhbWUucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxz
L0NvbGxlY3Rpb25FbnRyeS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L01vZGVscy9Db2xsZWN0aW9uRW50cnkuanMKaW5kZXggMWRiYjM2ZC4uNzk5ZGFkMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NvbGxlY3Rp
b25FbnRyeS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2Rl
bHMvQ29sbGVjdGlvbkVudHJ5LmpzCkBAIC0yMywzOCArMjMsMzggQEAKICAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuQ29sbGVjdGlvbkVudHJ5
ID0gZnVuY3Rpb24oa2V5LCB2YWx1ZSkKK1dlYkluc3BlY3Rvci5Db2xsZWN0aW9uRW50cnkgPSBj
bGFzcyBDb2xsZWN0aW9uRW50cnkgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0gICAg
V2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIGNvbnN0cnVjdG9yKGtleSwgdmFs
dWUpCisgICAgeworICAgICAgICBzdXBlcigpOwogCi0gICAgY29uc29sZS5hc3NlcnQodmFsdWUg
aW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0KTsKLSAgICBjb25zb2xlLmFzc2Vy
dCgha2V5IHx8IGtleSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QpOworICAg
ICAgICBjb25zb2xlLmFzc2VydCh2YWx1ZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZW1vdGVP
YmplY3QpOworICAgICAgICBjb25zb2xlLmFzc2VydCgha2V5IHx8IGtleSBpbnN0YW5jZW9mIFdl
Ykluc3BlY3Rvci5SZW1vdGVPYmplY3QpOwogCi0gICAgdGhpcy5fa2V5ID0ga2V5OwotICAgIHRo
aXMuX3ZhbHVlID0gdmFsdWU7Ci19OworICAgICAgICB0aGlzLl9rZXkgPSBrZXk7CisgICAgICAg
IHRoaXMuX3ZhbHVlID0gdmFsdWU7CisgICAgfQogCi0vLyBSdW50aW1lLkNvbGxlY3Rpb25FbnRy
eS4KLVdlYkluc3BlY3Rvci5Db2xsZWN0aW9uRW50cnkuZnJvbVBheWxvYWQgPSBmdW5jdGlvbihw
YXlsb2FkKQotewotICAgIGlmIChwYXlsb2FkLmtleSkKLSAgICAgICAgcGF5bG9hZC5rZXkgPSBX
ZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LmZyb21QYXlsb2FkKHBheWxvYWQua2V5KTsKLSAgICBp
ZiAocGF5bG9hZC52YWx1ZSkKLSAgICAgICAgcGF5bG9hZC52YWx1ZSA9IFdlYkluc3BlY3Rvci5S
ZW1vdGVPYmplY3QuZnJvbVBheWxvYWQocGF5bG9hZC52YWx1ZSk7CisgICAgLy8gU3RhdGljCiAK
LSAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5Db2xsZWN0aW9uRW50cnkocGF5bG9hZC5rZXks
IHBheWxvYWQudmFsdWUpOwotfTsKKyAgICAvLyBSdW50aW1lLkNvbGxlY3Rpb25FbnRyeS4KKyAg
ICBzdGF0aWMgZnJvbVBheWxvYWQocGF5bG9hZCkKKyAgICB7CisgICAgICAgIGlmIChwYXlsb2Fk
LmtleSkKKyAgICAgICAgICAgIHBheWxvYWQua2V5ID0gV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVj
dC5mcm9tUGF5bG9hZChwYXlsb2FkLmtleSk7CisgICAgICAgIGlmIChwYXlsb2FkLnZhbHVlKQor
ICAgICAgICAgICAgcGF5bG9hZC52YWx1ZSA9IFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QuZnJv
bVBheWxvYWQocGF5bG9hZC52YWx1ZSk7CiAKLVdlYkluc3BlY3Rvci5Db2xsZWN0aW9uRW50cnku
cHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuQ29sbGVjdGlvbkVu
dHJ5LAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGUsCisgICAg
ICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkNvbGxlY3Rpb25FbnRyeShwYXlsb2FkLmtleSwg
cGF5bG9hZC52YWx1ZSk7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQga2V5KCkK
ICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9rZXk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBn
ZXQgdmFsdWUoKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL01vZGVscy9Db2xsZWN0aW9uRW50cnlQcmV2aWV3LmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NvbGxlY3Rpb25FbnRyeVByZXZpZXcuanMK
aW5kZXggZGQzYWZiYy4uOGUxMTNjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NvbGxlY3Rpb25FbnRyeVByZXZpZXcuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NvbGxlY3Rpb25FbnRyeVBy
ZXZpZXcuanMKQEAgLTIzLDM4ICsyMywzOCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5Db2xsZWN0aW9uRW50cnlQcmV2aWV3ID0gZnVu
Y3Rpb24oa2V5UHJldmlldywgdmFsdWVQcmV2aWV3KQorV2ViSW5zcGVjdG9yLkNvbGxlY3Rpb25F
bnRyeVByZXZpZXcgPSBjbGFzcyBDb2xsZWN0aW9uRW50cnlQcmV2aWV3IGV4dGVuZHMgV2ViSW5z
cGVjdG9yLk9iamVjdAogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAg
ICBjb25zdHJ1Y3RvcihrZXlQcmV2aWV3LCB2YWx1ZVByZXZpZXcpCisgICAgeworICAgICAgICBz
dXBlcigpOwogCi0gICAgY29uc29sZS5hc3NlcnQodmFsdWVQcmV2aWV3IGluc3RhbmNlb2YgV2Vi
SW5zcGVjdG9yLk9iamVjdFByZXZpZXcpOwotICAgIGNvbnNvbGUuYXNzZXJ0KCFrZXlQcmV2aWV3
IHx8IGtleVByZXZpZXcgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuT2JqZWN0UHJldmlldyk7Cisg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KHZhbHVlUHJldmlldyBpbnN0YW5jZW9mIFdlYkluc3BlY3Rv
ci5PYmplY3RQcmV2aWV3KTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoIWtleVByZXZpZXcgfHwg
a2V5UHJldmlldyBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5PYmplY3RQcmV2aWV3KTsKIAotICAg
IHRoaXMuX2tleSA9IGtleVByZXZpZXc7Ci0gICAgdGhpcy5fdmFsdWUgPSB2YWx1ZVByZXZpZXc7
Ci19OworICAgICAgICB0aGlzLl9rZXkgPSBrZXlQcmV2aWV3OworICAgICAgICB0aGlzLl92YWx1
ZSA9IHZhbHVlUHJldmlldzsKKyAgICB9CiAKLS8vIFJ1bnRpbWUuRW50cnlQcmV2aWV3LgotV2Vi
SW5zcGVjdG9yLkNvbGxlY3Rpb25FbnRyeVByZXZpZXcuZnJvbVBheWxvYWQgPSBmdW5jdGlvbihw
YXlsb2FkKQotewotICAgIGlmIChwYXlsb2FkLmtleSkKLSAgICAgICAgcGF5bG9hZC5rZXkgPSBX
ZWJJbnNwZWN0b3IuT2JqZWN0UHJldmlldy5mcm9tUGF5bG9hZChwYXlsb2FkLmtleSk7Ci0gICAg
aWYgKHBheWxvYWQudmFsdWUpCi0gICAgICAgIHBheWxvYWQudmFsdWUgPSBXZWJJbnNwZWN0b3Iu
T2JqZWN0UHJldmlldy5mcm9tUGF5bG9hZChwYXlsb2FkLnZhbHVlKTsKKyAgICAvLyBTdGF0aWMK
IAotICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkNvbGxlY3Rpb25FbnRyeVByZXZpZXcocGF5
bG9hZC5rZXksIHBheWxvYWQudmFsdWUpOwotfTsKKyAgICAvLyBSdW50aW1lLkVudHJ5UHJldmll
dy4KKyAgICBzdGF0aWMgZnJvbVBheWxvYWQocGF5bG9hZCkKKyAgICB7CisgICAgICAgIGlmIChw
YXlsb2FkLmtleSkKKyAgICAgICAgICAgIHBheWxvYWQua2V5ID0gV2ViSW5zcGVjdG9yLk9iamVj
dFByZXZpZXcuZnJvbVBheWxvYWQocGF5bG9hZC5rZXkpOworICAgICAgICBpZiAocGF5bG9hZC52
YWx1ZSkKKyAgICAgICAgICAgIHBheWxvYWQudmFsdWUgPSBXZWJJbnNwZWN0b3IuT2JqZWN0UHJl
dmlldy5mcm9tUGF5bG9hZChwYXlsb2FkLnZhbHVlKTsKIAotV2ViSW5zcGVjdG9yLkNvbGxlY3Rp
b25FbnRyeVByZXZpZXcucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0
b3IuQ29sbGVjdGlvbkVudHJ5UHJldmlldywKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5P
YmplY3QucHJvdG90eXBlLAorICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5Db2xsZWN0
aW9uRW50cnlQcmV2aWV3KHBheWxvYWQua2V5LCBwYXlsb2FkLnZhbHVlKTsKKyAgICB9CiAKICAg
ICAvLyBQdWJsaWMKIAogICAgIGdldCBrZXlQcmV2aWV3KCkKICAgICB7CiAgICAgICAgIHJldHVy
biB0aGlzLl9rZXk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgdmFsdWVQcmV2aWV3KCkKICAg
ICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2Rl
bHMvQ29sb3IuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMv
Q29sb3IuanMKaW5kZXggZmRlMTk3My4uOGYzYmU2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NvbG9yLmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Db2xvci5qcwpAQCAtMjcsMTE4ICsyNywx
ODYgQEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkNvbG9yID0gZnVuY3Rpb24o
Zm9ybWF0LCBjb21wb25lbnRzKQorV2ViSW5zcGVjdG9yLkNvbG9yID0gY2xhc3MgQ29sb3IKIHsK
LSAgICB0aGlzLmZvcm1hdCA9IGZvcm1hdDsKLSAgICBpZiAoZm9ybWF0ID09PSBXZWJJbnNwZWN0
b3IuQ29sb3IuRm9ybWF0LkhTTCB8fCBmb3JtYXQgPT09IFdlYkluc3BlY3Rvci5Db2xvci5Gb3Jt
YXQuSFNMQSkKLSAgICAgICAgdGhpcy5faHNsYSA9IGNvbXBvbmVudHM7Ci0gICAgZWxzZQotICAg
ICAgICB0aGlzLl9yZ2JhID0gY29tcG9uZW50czsKLQotICAgIHRoaXMudmFsaWQgPSAhY29tcG9u
ZW50cy5zb21lKGZ1bmN0aW9uKGNvbXBvbmVudCkgewotICAgICAgICByZXR1cm4gaXNOYU4oY29t
cG9uZW50KTsKLSAgICB9KTsKLX07Ci0KLVdlYkluc3BlY3Rvci5Db2xvci5Gb3JtYXQgPSB7Ci0g
ICAgT3JpZ2luYWw6ICJjb2xvci1mb3JtYXQtb3JpZ2luYWwiLAotICAgIE5pY2tuYW1lOiAiY29s
b3ItZm9ybWF0LW5pY2tuYW1lIiwKLSAgICBIRVg6ICJjb2xvci1mb3JtYXQtaGV4IiwKLSAgICBT
aG9ydEhFWDogImNvbG9yLWZvcm1hdC1zaG9ydC1oZXgiLAotICAgIFJHQjogImNvbG9yLWZvcm1h
dC1yZ2IiLAotICAgIFJHQkE6ICJjb2xvci1mb3JtYXQtcmdiYSIsCi0gICAgSFNMOiAiY29sb3It
Zm9ybWF0LWhzbCIsCi0gICAgSFNMQTogImNvbG9yLWZvcm1hdC1oc2xhIgotfTsKLQotV2ViSW5z
cGVjdG9yLkNvbG9yLmZyb21TdHJpbmcgPSBmdW5jdGlvbihjb2xvclN0cmluZykKLXsKLSAgICB2
YXIgdmFsdWUgPSBjb2xvclN0cmluZy50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoLyV8XHMrL2csICIi
KTsKLSAgICBjb25zdCB0cmFuc3BhcmVudE5pY2tuYW1lcyA9IFsidHJhbnNwYXJlbnQiLCAicmdi
YSgwLDAsMCwwKSIsICJoc2xhKDAsMCwwLDApIl07Ci0gICAgaWYgKHRyYW5zcGFyZW50Tmlja25h
bWVzLmNvbnRhaW5zKHZhbHVlKSkgewotICAgICAgICB2YXIgY29sb3IgPSBuZXcgV2ViSW5zcGVj
dG9yLkNvbG9yKFdlYkluc3BlY3Rvci5Db2xvci5Gb3JtYXQuTmlja25hbWUsIFswLCAwLCAwLCAw
XSk7Ci0gICAgICAgIGNvbG9yLm5pY2tuYW1lID0gInRyYW5zcGFyZW50IjsKLSAgICAgICAgY29s
b3Iub3JpZ2luYWwgPSBjb2xvclN0cmluZzsKLSAgICAgICAgcmV0dXJuIGNvbG9yOworICAgIGNv
bnN0cnVjdG9yKGZvcm1hdCwgY29tcG9uZW50cykKKyAgICB7CisgICAgICAgIHRoaXMuZm9ybWF0
ID0gZm9ybWF0OworCisgICAgICAgIGlmIChmb3JtYXQgPT09IFdlYkluc3BlY3Rvci5Db2xvci5G
b3JtYXQuSFNMIHx8IGZvcm1hdCA9PT0gV2ViSW5zcGVjdG9yLkNvbG9yLkZvcm1hdC5IU0xBKQor
ICAgICAgICAgICAgdGhpcy5faHNsYSA9IGNvbXBvbmVudHM7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIHRoaXMuX3JnYmEgPSBjb21wb25lbnRzOworCisgICAgICAgIHRoaXMudmFsaWQgPSAh
Y29tcG9uZW50cy5zb21lKGZ1bmN0aW9uKGNvbXBvbmVudCkgeworICAgICAgICAgICAgcmV0dXJu
IGlzTmFOKGNvbXBvbmVudCk7CisgICAgICAgIH0pOwogICAgIH0KIAotICAgIC8vIFNpbXBsZSAt
ICNoZXgsIHJnYigpLCBuaWNrbmFtZSwgaHNsKCkKLSAgICB2YXIgc2ltcGxlID0gL14oPzojKFsw
LTlhLWZdezMsNn0pfHJnYlwoKFteKV0rKVwpfChcdyspfGhzbFwoKFteKV0rKVwpKSQvaTsKLSAg
ICB2YXIgbWF0Y2ggPSBjb2xvclN0cmluZy5tYXRjaChzaW1wbGUpOwotICAgIGlmIChtYXRjaCkg
ewotICAgICAgICBpZiAobWF0Y2hbMV0pIHsgLy8gaGV4Ci0gICAgICAgICAgICB2YXIgaGV4ID0g
bWF0Y2hbMV0udG9VcHBlckNhc2UoKTsKLSAgICAgICAgICAgIGlmIChoZXgubGVuZ3RoID09PSAz
KSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuQ29sb3IoV2ViSW5z
cGVjdG9yLkNvbG9yLkZvcm1hdC5TaG9ydEhFWCwgWwotICAgICAgICAgICAgICAgICAgICBwYXJz
ZUludChoZXguY2hhckF0KDApICsgaGV4LmNoYXJBdCgwKSwgMTYpLAotICAgICAgICAgICAgICAg
ICAgICBwYXJzZUludChoZXguY2hhckF0KDEpICsgaGV4LmNoYXJBdCgxKSwgMTYpLAotICAgICAg
ICAgICAgICAgICAgICBwYXJzZUludChoZXguY2hhckF0KDIpICsgaGV4LmNoYXJBdCgyKSwgMTYp
LAorICAgIC8vIFN0YXRpYworCisgICAgc3RhdGljIGZyb21TdHJpbmcoY29sb3JTdHJpbmcpCisg
ICAgeworICAgICAgICB2YXIgdmFsdWUgPSBjb2xvclN0cmluZy50b0xvd2VyQ2FzZSgpLnJlcGxh
Y2UoLyV8XHMrL2csICIiKTsKKyAgICAgICAgdmFyIHRyYW5zcGFyZW50Tmlja25hbWVzID0gWyJ0
cmFuc3BhcmVudCIsICJyZ2JhKDAsMCwwLDApIiwgImhzbGEoMCwwLDAsMCkiXTsKKyAgICAgICAg
aWYgKHRyYW5zcGFyZW50Tmlja25hbWVzLmNvbnRhaW5zKHZhbHVlKSkgeworICAgICAgICAgICAg
dmFyIGNvbG9yID0gbmV3IFdlYkluc3BlY3Rvci5Db2xvcihXZWJJbnNwZWN0b3IuQ29sb3IuRm9y
bWF0Lk5pY2tuYW1lLCBbMCwgMCwgMCwgMF0pOworICAgICAgICAgICAgY29sb3Iubmlja25hbWUg
PSAidHJhbnNwYXJlbnQiOworICAgICAgICAgICAgY29sb3Iub3JpZ2luYWwgPSBjb2xvclN0cmlu
ZzsKKyAgICAgICAgICAgIHJldHVybiBjb2xvcjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFNp
bXBsZSAtICNoZXgsIHJnYigpLCBuaWNrbmFtZSwgaHNsKCkKKyAgICAgICAgdmFyIHNpbXBsZSA9
IC9eKD86IyhbMC05YS1mXXszLDZ9KXxyZ2JcKChbXildKylcKXwoXHcrKXxoc2xcKChbXildKylc
KSkkL2k7CisgICAgICAgIHZhciBtYXRjaCA9IGNvbG9yU3RyaW5nLm1hdGNoKHNpbXBsZSk7Cisg
ICAgICAgIGlmIChtYXRjaCkgeworICAgICAgICAgICAgaWYgKG1hdGNoWzFdKSB7IC8vIGhleAor
ICAgICAgICAgICAgICAgIHZhciBoZXggPSBtYXRjaFsxXS50b1VwcGVyQ2FzZSgpOworICAgICAg
ICAgICAgICAgIGlmIChoZXgubGVuZ3RoID09PSAzKSB7CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBuZXcgV2ViSW5zcGVjdG9yLkNvbG9yKFdlYkluc3BlY3Rvci5Db2xvci5Gb3JtYXQuU2hv
cnRIRVgsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlSW50KGhleC5jaGFyQXQoMCkg
KyBoZXguY2hhckF0KDApLCAxNiksCisgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZUludCho
ZXguY2hhckF0KDEpICsgaGV4LmNoYXJBdCgxKSwgMTYpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgcGFyc2VJbnQoaGV4LmNoYXJBdCgyKSArIGhleC5jaGFyQXQoMiksIDE2KSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIDEKKyAgICAgICAgICAgICAgICAgICAgXSk7CisgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3Iu
Q29sb3IoV2ViSW5zcGVjdG9yLkNvbG9yLkZvcm1hdC5IRVgsIFsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHBhcnNlSW50KGhleC5zdWJzdHJpbmcoMCwgMiksIDE2KSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHBhcnNlSW50KGhleC5zdWJzdHJpbmcoMiwgNCksIDE2KSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHBhcnNlSW50KGhleC5zdWJzdHJpbmcoNCwgNiksIDE2KSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIDEKKyAgICAgICAgICAgICAgICAgICAgXSk7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfSBlbHNlIGlmIChtYXRjaFsyXSkgeyAvLyByZ2IKKyAgICAgICAg
ICAgICAgICB2YXIgcmdiID0gbWF0Y2hbMl0uc3BsaXQoL1xzKixccyovKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5Db2xvcihXZWJJbnNwZWN0b3IuQ29sb3IuRm9y
bWF0LlJHQiwgWworICAgICAgICAgICAgICAgICAgICBwYXJzZUludChyZ2JbMF0pLAorICAgICAg
ICAgICAgICAgICAgICBwYXJzZUludChyZ2JbMV0pLAorICAgICAgICAgICAgICAgICAgICBwYXJz
ZUludChyZ2JbMl0pLAogICAgICAgICAgICAgICAgICAgICAxCiAgICAgICAgICAgICAgICAgXSk7
Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgV2ViSW5z
cGVjdG9yLkNvbG9yKFdlYkluc3BlY3Rvci5Db2xvci5Gb3JtYXQuSEVYLCBbCi0gICAgICAgICAg
ICAgICAgICAgIHBhcnNlSW50KGhleC5zdWJzdHJpbmcoMCwgMiksIDE2KSwKLSAgICAgICAgICAg
ICAgICAgICAgcGFyc2VJbnQoaGV4LnN1YnN0cmluZygyLCA0KSwgMTYpLAotICAgICAgICAgICAg
ICAgICAgICBwYXJzZUludChoZXguc3Vic3RyaW5nKDQsIDYpLCAxNiksCisgICAgICAgICAgICB9
IGVsc2UgaWYgKG1hdGNoWzNdKSB7IC8vIG5pY2tuYW1lCisgICAgICAgICAgICAgICAgdmFyIG5p
Y2tuYW1lID0gbWF0Y2hbM10udG9Mb3dlckNhc2UoKTsKKyAgICAgICAgICAgICAgICBpZiAoV2Vi
SW5zcGVjdG9yLkNvbG9yLk5pY2tuYW1lcy5oYXNPd25Qcm9wZXJ0eShuaWNrbmFtZSkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgdmFyIGNvbG9yID0gbmV3IFdlYkluc3BlY3Rvci5Db2xvcihXZWJJ
bnNwZWN0b3IuQ29sb3IuRm9ybWF0Lk5pY2tuYW1lLCBXZWJJbnNwZWN0b3IuQ29sb3IuTmlja25h
bWVzW25pY2tuYW1lXS5jb25jYXQoMSkpOworICAgICAgICAgICAgICAgICAgICBjb2xvci5uaWNr
bmFtZSA9IG5pY2tuYW1lOworICAgICAgICAgICAgICAgICAgICBjb2xvci5vcmlnaW5hbCA9IGNv
bG9yU3RyaW5nOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29sb3I7CisgICAgICAgICAg
ICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICAg
ICAgfSBlbHNlIGlmIChtYXRjaFs0XSkgeyAvLyBoc2wKKyAgICAgICAgICAgICAgICB2YXIgaHNs
ID0gbWF0Y2hbNF0ucmVwbGFjZSgvJS9nLCAiIikuc3BsaXQoL1xzKixccyovKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5Db2xvcihXZWJJbnNwZWN0b3IuQ29sb3Iu
Rm9ybWF0LkhTTCwgWworICAgICAgICAgICAgICAgICAgICBwYXJzZUludChoc2xbMF0pLAorICAg
ICAgICAgICAgICAgICAgICBwYXJzZUludChoc2xbMV0pLAorICAgICAgICAgICAgICAgICAgICBw
YXJzZUludChoc2xbMl0pLAogICAgICAgICAgICAgICAgICAgICAxCiAgICAgICAgICAgICAgICAg
XSk7CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAobWF0Y2hbMl0pIHsgLy8gcmdi
Ci0gICAgICAgICAgICB2YXIgcmdiID0gbWF0Y2hbMl0uc3BsaXQoL1xzKixccyovKTsKLSAgICAg
ICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkNvbG9yKFdlYkluc3BlY3Rvci5Db2xvci5G
b3JtYXQuUkdCLCBbCi0gICAgICAgICAgICAgICAgcGFyc2VJbnQocmdiWzBdKSwKLSAgICAgICAg
ICAgICAgICBwYXJzZUludChyZ2JbMV0pLAotICAgICAgICAgICAgICAgIHBhcnNlSW50KHJnYlsy
XSksCi0gICAgICAgICAgICAgICAgMQotICAgICAgICAgICAgXSk7Ci0gICAgICAgIH0gZWxzZSBp
ZiAobWF0Y2hbM10pIHsgLy8gbmlja25hbWUKLSAgICAgICAgICAgIHZhciBuaWNrbmFtZSA9IG1h
dGNoWzNdLnRvTG93ZXJDYXNlKCk7Ci0gICAgICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLkNvbG9y
Lk5pY2tuYW1lcy5oYXNPd25Qcm9wZXJ0eShuaWNrbmFtZSkpIHsKLSAgICAgICAgICAgICAgICB2
YXIgY29sb3IgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbG9yKFdlYkluc3BlY3Rvci5Db2xvci5Gb3Jt
YXQuTmlja25hbWUsIFdlYkluc3BlY3Rvci5Db2xvci5OaWNrbmFtZXNbbmlja25hbWVdLmNvbmNh
dCgxKSk7Ci0gICAgICAgICAgICAgICAgY29sb3Iubmlja25hbWUgPSBuaWNrbmFtZTsKLSAgICAg
ICAgICAgICAgICBjb2xvci5vcmlnaW5hbCA9IGNvbG9yU3RyaW5nOwotICAgICAgICAgICAgICAg
IHJldHVybiBjb2xvcjsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHJldHVy
biBudWxsOwotICAgICAgICB9IGVsc2UgaWYgKG1hdGNoWzRdKSB7IC8vIGhzbAotICAgICAgICAg
ICAgdmFyIGhzbCA9IG1hdGNoWzRdLnJlcGxhY2UoLyUvZywgIiIpLnNwbGl0KC9ccyosXHMqLyk7
Ci0gICAgICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5Db2xvcihXZWJJbnNwZWN0b3Iu
Q29sb3IuRm9ybWF0LkhTTCwgWwotICAgICAgICAgICAgICAgIHBhcnNlSW50KGhzbFswXSksCi0g
ICAgICAgICAgICAgICAgcGFyc2VJbnQoaHNsWzFdKSwKLSAgICAgICAgICAgICAgICBwYXJzZUlu
dChoc2xbMl0pLAotICAgICAgICAgICAgICAgIDEKLSAgICAgICAgICAgIF0pOwogICAgICAgICB9
CisKKyAgICAgICAgLy8gQWR2YW5jZWQgLSByZ2JhKCksIGhzbGEoKQorICAgICAgICB2YXIgYWR2
YW5jZWQgPSAvXig/OnJnYmFcKChbXildKylcKXxoc2xhXCgoW14pXSspXCkpJC87CisgICAgICAg
IG1hdGNoID0gY29sb3JTdHJpbmcubWF0Y2goYWR2YW5jZWQpOworICAgICAgICBpZiAobWF0Y2gp
IHsKKyAgICAgICAgICAgIGlmIChtYXRjaFsxXSkgeyAvLyByZ2JhCisgICAgICAgICAgICAgICAg
dmFyIHJnYmEgPSBtYXRjaFsxXS5zcGxpdCgvXHMqLFxzKi8pOworICAgICAgICAgICAgICAgIHJl
dHVybiBuZXcgV2ViSW5zcGVjdG9yLkNvbG9yKFdlYkluc3BlY3Rvci5Db2xvci5Gb3JtYXQuUkdC
QSwgWworICAgICAgICAgICAgICAgICAgICBwYXJzZUludChyZ2JhWzBdKSwKKyAgICAgICAgICAg
ICAgICAgICAgcGFyc2VJbnQocmdiYVsxXSksCisgICAgICAgICAgICAgICAgICAgIHBhcnNlSW50
KHJnYmFbMl0pLAorICAgICAgICAgICAgICAgICAgICBOdW1iZXIuY29uc3RyYWluKHBhcnNlRmxv
YXQocmdiYVszXSksIDAsIDEpCisgICAgICAgICAgICAgICAgXSk7CisgICAgICAgICAgICB9IGVs
c2UgaWYgKG1hdGNoWzJdKSB7IC8vIGhzbGEKKyAgICAgICAgICAgICAgICB2YXIgaHNsYSA9IG1h
dGNoWzJdLnJlcGxhY2UoLyUvZywgIiIpLnNwbGl0KC9ccyosXHMqLyk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuQ29sb3IoV2ViSW5zcGVjdG9yLkNvbG9yLkZvcm1h
dC5IU0xBLCBbCisgICAgICAgICAgICAgICAgICAgIHBhcnNlSW50KGhzbGFbMF0pLAorICAgICAg
ICAgICAgICAgICAgICBwYXJzZUludChoc2xhWzFdKSwKKyAgICAgICAgICAgICAgICAgICAgcGFy
c2VJbnQoaHNsYVsyXSksCisgICAgICAgICAgICAgICAgICAgIE51bWJlci5jb25zdHJhaW4ocGFy
c2VGbG9hdChoc2xhWzNdKSwgMCwgMSkKKyAgICAgICAgICAgICAgICBdKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBudWxsOwogICAgIH0KIAotICAgIC8vIEFk
dmFuY2VkIC0gcmdiYSgpLCBoc2xhKCkKLSAgICB2YXIgYWR2YW5jZWQgPSAvXig/OnJnYmFcKChb
XildKylcKXxoc2xhXCgoW14pXSspXCkpJC87Ci0gICAgbWF0Y2ggPSBjb2xvclN0cmluZy5tYXRj
aChhZHZhbmNlZCk7Ci0gICAgaWYgKG1hdGNoKSB7Ci0gICAgICAgIGlmIChtYXRjaFsxXSkgeyAv
LyByZ2JhCi0gICAgICAgICAgICB2YXIgcmdiYSA9IG1hdGNoWzFdLnNwbGl0KC9ccyosXHMqLyk7
Ci0gICAgICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5Db2xvcihXZWJJbnNwZWN0b3Iu
Q29sb3IuRm9ybWF0LlJHQkEsIFsKLSAgICAgICAgICAgICAgICBwYXJzZUludChyZ2JhWzBdKSwK
LSAgICAgICAgICAgICAgICBwYXJzZUludChyZ2JhWzFdKSwKLSAgICAgICAgICAgICAgICBwYXJz
ZUludChyZ2JhWzJdKSwKLSAgICAgICAgICAgICAgICBOdW1iZXIuY29uc3RyYWluKHBhcnNlRmxv
YXQocmdiYVszXSksIDAsIDEpCi0gICAgICAgICAgICBdKTsKLSAgICAgICAgfSBlbHNlIGlmICht
YXRjaFsyXSkgeyAvLyBoc2xhCi0gICAgICAgICAgICB2YXIgaHNsYSA9IG1hdGNoWzJdLnJlcGxh
Y2UoLyUvZywgIiIpLnNwbGl0KC9ccyosXHMqLyk7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IFdl
Ykluc3BlY3Rvci5Db2xvcihXZWJJbnNwZWN0b3IuQ29sb3IuRm9ybWF0LkhTTEEsIFsKLSAgICAg
ICAgICAgICAgICBwYXJzZUludChoc2xhWzBdKSwKLSAgICAgICAgICAgICAgICBwYXJzZUludCho
c2xhWzFdKSwKLSAgICAgICAgICAgICAgICBwYXJzZUludChoc2xhWzJdKSwKLSAgICAgICAgICAg
ICAgICBOdW1iZXIuY29uc3RyYWluKHBhcnNlRmxvYXQoaHNsYVszXSksIDAsIDEpCi0gICAgICAg
ICAgICBdKTsKKyAgICBzdGF0aWMgcmdiMmhzdihyLCBnLCBiKQorICAgIHsKKyAgICAgICAgciAv
PSAyNTU7CisgICAgICAgIGcgLz0gMjU1OworICAgICAgICBiIC89IDI1NTsKKworICAgICAgICB2
YXIgbWluID0gTWF0aC5taW4oTWF0aC5taW4ociwgZyksIGIpOworICAgICAgICB2YXIgbWF4ID0g
TWF0aC5tYXgoTWF0aC5tYXgociwgZyksIGIpOworICAgICAgICB2YXIgZGVsdGEgPSBtYXggLSBt
aW47CisKKyAgICAgICAgdmFyIHYgPSBtYXg7CisgICAgICAgIHZhciBzLCBoOworCisgICAgICAg
IGlmIChtYXggPT09IG1pbikKKyAgICAgICAgICAgIGggPSAwOworICAgICAgICBlbHNlIGlmICht
YXggPT09IHIpCisgICAgICAgICAgICBoID0gKDYwICogKChnIC0gYikgLyBkZWx0YSkpICUgMzYw
OworICAgICAgICBlbHNlIGlmIChtYXggPT09IGcpCisgICAgICAgICAgICBoID0gNjAgKiAoKGIg
LSByKSAvIGRlbHRhKSArIDEyMDsKKyAgICAgICAgZWxzZSBpZiAobWF4ID09PSBiKQorICAgICAg
ICAgICAgaCA9IDYwICogKChyIC0gZykgLyBkZWx0YSkgKyAyNDA7CisKKyAgICAgICAgaWYgKGgg
PCAwKQorICAgICAgICAgICAgaCArPSAzNjA7CisKKyAgICAgICAgLy8gU2F0dXJhdGlvbgorICAg
ICAgICBpZiAobWF4ID09PSAwKQorICAgICAgICAgICAgcyA9IDA7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIHMgPSAxIC0gKG1pbiAvIG1heCk7CisKKyAgICAgICAgcmV0dXJuIFtoLCBzLCB2
XTsKKyAgICB9CisKKyAgICBzdGF0aWMgaHN2MnJnYihoLCBzLCB2KQorICAgIHsKKyAgICAgICAg
aWYgKHMgPT09IDApCisgICAgICAgICAgICByZXR1cm4gW3YsIHYsIHZdOworCisgICAgICAgIGgg
Lz0gNjA7CisgICAgICAgIHZhciBpID0gTWF0aC5mbG9vcihoKTsKKyAgICAgICAgdmFyIGRhdGEg
PSBbCisgICAgICAgICAgICB2ICogKDEgLSBzKSwKKyAgICAgICAgICAgIHYgKiAoMSAtIHMgKiAo
aCAtIGkpKSwKKyAgICAgICAgICAgIHYgKiAoMSAtIHMgKiAoMSAtIChoIC0gaSkpKQorICAgICAg
ICBdOworICAgICAgICB2YXIgcmdiOworCisgICAgICAgIHN3aXRjaCAoaSkgeworICAgICAgICBj
YXNlIDA6CisgICAgICAgICAgICByZ2IgPSBbdiwgZGF0YVsyXSwgZGF0YVswXV07CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgcmdiID0gW2RhdGFbMV0s
IHYsIGRhdGFbMF1dOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMjoKKyAgICAg
ICAgICAgIHJnYiA9IFtkYXRhWzBdLCB2LCBkYXRhWzJdXTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICByZ2IgPSBbZGF0YVswXSwgZGF0YVsxXSwgdl07
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSA0OgorICAgICAgICAgICAgcmdiID0g
W2RhdGFbMl0sIGRhdGFbMF0sIHZdOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICByZ2IgPSBbdiwgZGF0YVswXSwgZGF0YVsxXV07CisgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQorCisgICAgICAgIHJldHVybiByZ2I7CiAgICAgfQogCi0gICAg
cmV0dXJuIG51bGw7Ci19OwogCi1XZWJJbnNwZWN0b3IuQ29sb3IucHJvdG90eXBlID0gewotICAg
IG5leHRGb3JtYXQ6IGZ1bmN0aW9uKGZvcm1hdCkKKyAgICAvLyBQdWJsaWMKKworICAgIG5leHRG
b3JtYXQoZm9ybWF0KQogICAgIHsKICAgICAgICAgZm9ybWF0ID0gZm9ybWF0IHx8IHRoaXMuZm9y
bWF0OwogCkBAIC0xNzUsNDcgKzI0Myw0NyBAQCBXZWJJbnNwZWN0b3IuQ29sb3IucHJvdG90eXBl
ID0gewogICAgICAgICAgICAgY29uc29sZS5lcnJvcigiVW5rbm93biBjb2xvciBmb3JtYXQuIik7
CiAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgfQotICAgIH0sCisgICAgfQogCiAg
ICAgZ2V0IGFscGhhKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9yZ2JhID8gdGhpcy5f
cmdiYVszXSA6IHRoaXMuX2hzbGFbM107Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc2ltcGxl
KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLmFscGhhID09PSAxOwotICAgIH0sCisgICAg
fQogCiAgICAgZ2V0IHJnYigpCiAgICAgewogICAgICAgICB2YXIgcmdiID0gdGhpcy5yZ2JhLnNs
aWNlKCk7CiAgICAgICAgIHJnYi5wb3AoKTsKICAgICAgICAgcmV0dXJuIHJnYjsKLSAgICB9LAor
ICAgIH0KIAogICAgIGdldCBoc2woKQogICAgIHsKICAgICAgICAgdmFyIGhzbCA9IHRoaXMuaHNs
YS5zbGljZSgpOwogICAgICAgICBoc2wucG9wKCk7CiAgICAgICAgIHJldHVybiBoc2w7Ci0gICAg
fSwKKyAgICB9CiAKICAgICBnZXQgcmdiYSgpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX3Jn
YmEpCiAgICAgICAgICAgICB0aGlzLl9yZ2JhID0gdGhpcy5faHNsYVRvUkdCQSh0aGlzLl9oc2xh
KTsKICAgICAgICAgcmV0dXJuIHRoaXMuX3JnYmE7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQg
aHNsYSgpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX2hzbGEpCiAgICAgICAgICAgICB0aGlz
Ll9oc2xhID0gdGhpcy5fcmdiYVRvSFNMQSh0aGlzLnJnYmEpOwogICAgICAgICByZXR1cm4gdGhp
cy5faHNsYTsKLSAgICB9LAorICAgIH0KIAotICAgIGNvcHk6IGZ1bmN0aW9uKCkKKyAgICBjb3B5
KCkKICAgICB7CiAgICAgICAgIHN3aXRjaCAodGhpcy5mb3JtYXQpIHsKICAgICAgICAgY2FzZSBX
ZWJJbnNwZWN0b3IuQ29sb3IuRm9ybWF0LlJHQjoKQEAgLTIyOCw5ICsyOTYsOSBAQCBXZWJJbnNw
ZWN0b3IuQ29sb3IucHJvdG90eXBlID0gewogICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5Db2xv
ci5Gb3JtYXQuSFNMQToKICAgICAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkNvbG9y
KHRoaXMuZm9ybWF0LCB0aGlzLmhzbGEpOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICB0b1N0cmluZzogZnVuY3Rpb24oZm9ybWF0KQorICAgIHRvU3RyaW5nKGZvcm1hdCkKICAgICB7
CiAgICAgICAgIGlmICghZm9ybWF0KQogICAgICAgICAgICAgZm9ybWF0ID0gdGhpcy5mb3JtYXQ7
CkBAIC0yNTUsMTQgKzMyMywxNiBAQCBXZWJJbnNwZWN0b3IuQ29sb3IucHJvdG90eXBlID0gewog
ICAgICAgICB9CiAKICAgICAgICAgdGhyb3cgImludmFsaWQgY29sb3IgZm9ybWF0IjsKLSAgICB9
LAorICAgIH0KIAotICAgIF90b09yaWdpbmFsU3RyaW5nOiBmdW5jdGlvbigpCisgICAgLy8gUHJp
dmF0ZQorCisgICAgX3RvT3JpZ2luYWxTdHJpbmcoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRo
aXMub3JpZ2luYWwgfHwgdGhpcy5fdG9OaWNrbmFtZVN0cmluZygpOwotICAgIH0sCisgICAgfQog
Ci0gICAgX3RvTmlja25hbWVTdHJpbmc6IGZ1bmN0aW9uKCkKKyAgICBfdG9OaWNrbmFtZVN0cmlu
ZygpCiAgICAgewogICAgICAgICBpZiAodGhpcy5uaWNrbmFtZSkKICAgICAgICAgICAgIHJldHVy
biB0aGlzLm5pY2tuYW1lOwpAQCAtMjg1LDkgKzM1NSw5IEBAIFdlYkluc3BlY3Rvci5Db2xvci5w
cm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gdGhpcy5fdG9SR0JTdHJp
bmcoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF90b1Nob3J0SEVYU3RyaW5nOiBmdW5jdGlvbigp
CisgICAgX3RvU2hvcnRIRVhTdHJpbmcoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLnNpbXBs
ZSkKICAgICAgICAgICAgIHJldHVybiB0aGlzLl90b1JHQkFTdHJpbmcoKTsKQEAgLTMwMSw5ICsz
NzEsOSBAQCBXZWJJbnNwZWN0b3IuQ29sb3IucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0
dXJuICIjIiArIHJbMF0gKyBnWzBdICsgYlswXTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
cmV0dXJuICIjIiArIHIgKyBnICsgYjsKLSAgICB9LAorICAgIH0KIAotICAgIF90b0hFWFN0cmlu
ZzogZnVuY3Rpb24oKQorICAgIF90b0hFWFN0cmluZygpCiAgICAgewogICAgICAgICBpZiAoIXRo
aXMuc2ltcGxlKQogICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3RvUkdCQVN0cmluZygpOwpAQCAt
MzE0LDM4ICszODQsMzggQEAgV2ViSW5zcGVjdG9yLkNvbG9yLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgdmFyIGIgPSB0aGlzLl9jb21wb25lbnRUb0hleFZhbHVlKHJnYmFbMl0pOwogCiAgICAgICAg
IHJldHVybiAiIyIgKyByICsgZyArIGI7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdG9SR0JTdHJp
bmc6IGZ1bmN0aW9uKCkKKyAgICBfdG9SR0JTdHJpbmcoKQogICAgIHsKICAgICAgICAgaWYgKCF0
aGlzLnNpbXBsZSkKICAgICAgICAgICAgIHJldHVybiB0aGlzLl90b1JHQkFTdHJpbmcoKTsKIAog
ICAgICAgICB2YXIgcmdiYSA9IHRoaXMucmdiYTsKICAgICAgICAgcmV0dXJuICJyZ2IoIiArIFty
Z2JhWzBdLCByZ2JhWzFdLCByZ2JhWzJdXS5qb2luKCIsICIpICsgIikiOwotICAgIH0sCisgICAg
fQogCi0gICAgX3RvUkdCQVN0cmluZzogZnVuY3Rpb24oKQorICAgIF90b1JHQkFTdHJpbmcoKQog
ICAgIHsKICAgICAgICAgcmV0dXJuICJyZ2JhKCIgKyB0aGlzLnJnYmEuam9pbigiLCAiKSArICIp
IjsKLSAgICB9LAorICAgIH0KIAotICAgIF90b0hTTFN0cmluZzogZnVuY3Rpb24oKQorICAgIF90
b0hTTFN0cmluZygpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuc2ltcGxlKQogICAgICAgICAg
ICAgcmV0dXJuIHRoaXMuX3RvSFNMQVN0cmluZygpOwogCiAgICAgICAgIHZhciBoc2xhID0gdGhp
cy5oc2xhOwogICAgICAgICByZXR1cm4gImhzbCgiICsgaHNsYVswXSArICIsICIgKyBoc2xhWzFd
ICsgIiUsICIgKyBoc2xhWzJdICsgIiUpIjsKLSAgICB9LAorICAgIH0KIAotICAgIF90b0hTTEFT
dHJpbmc6IGZ1bmN0aW9uKCkKKyAgICBfdG9IU0xBU3RyaW5nKCkKICAgICB7CiAgICAgICAgIHZh
ciBoc2xhID0gdGhpcy5oc2xhOwogICAgICAgICByZXR1cm4gImhzbGEoIiArIGhzbGFbMF0gKyAi
LCAiICsgaHNsYVsxXSArICIlLCAiICsgaHNsYVsyXSArICIlLCAiICsgaHNsYVszXSArICIpIjsK
LSAgICB9LAorICAgIH0KIAotICAgIF9jYW5CZVNlcmlhbGl6ZWRBc1Nob3J0SEVYOiBmdW5jdGlv
bigpCisgICAgX2NhbkJlU2VyaWFsaXplZEFzU2hvcnRIRVgoKQogICAgIHsKICAgICAgICAgdmFy
IHJnYmEgPSB0aGlzLnJnYmE7CiAKQEAgLTM2MiwyMiArNDMyLDIyIEBAIFdlYkluc3BlY3Rvci5D
b2xvci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY29tcG9uZW50VG9OdW1iZXI6IGZ1
bmN0aW9uKHZhbHVlKQorICAgIF9jb21wb25lbnRUb051bWJlcih2YWx1ZSkKICAgICB7CiAgICAg
ICAgIHJldHVybiBOdW1iZXIuY29uc3RyYWluKHZhbHVlLCAwLCAyNTUpOwotICAgIH0sCisgICAg
fQogCi0gICAgX2NvbXBvbmVudFRvSGV4VmFsdWU6IGZ1bmN0aW9uKHZhbHVlKQorICAgIF9jb21w
b25lbnRUb0hleFZhbHVlKHZhbHVlKQogICAgIHsKICAgICAgICAgdmFyIGhleCA9IHRoaXMuX2Nv
bXBvbmVudFRvTnVtYmVyKHZhbHVlKS50b1N0cmluZygxNik7CiAgICAgICAgIGlmIChoZXgubGVu
Z3RoID09PSAxKQogICAgICAgICAgICAgaGV4ID0gIjAiICsgaGV4OwogICAgICAgICByZXR1cm4g
aGV4OwotICAgIH0sCisgICAgfQogCi0gICAgX3JnYlRvSFNMOiBmdW5jdGlvbihyZ2IpCisgICAg
X3JnYlRvSFNMKHJnYikKICAgICB7CiAgICAgICAgIHZhciByID0gdGhpcy5fY29tcG9uZW50VG9O
dW1iZXIocmdiWzBdKSAvIDI1NTsKICAgICAgICAgdmFyIGcgPSB0aGlzLl9jb21wb25lbnRUb051
bWJlcihyZ2JbMV0pIC8gMjU1OwpAQCAtNDEyLDkgKzQ4Miw5IEBAIFdlYkluc3BlY3Rvci5Db2xv
ci5wcm90b3R5cGUgPSB7CiAgICAgICAgIGwgPSBNYXRoLnJvdW5kKGwgKiAxMDApOwogCiAgICAg
ICAgIHJldHVybiBbaCwgcywgbF07Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfaHNsVG9SR0I6IGZ1
bmN0aW9uKGhzbCkKKyAgICBfaHNsVG9SR0IoaHNsKQogICAgIHsKICAgICAgICAgdmFyIGggPSBw
YXJzZUZsb2F0KGhzbFswXSkgLyAzNjA7CiAgICAgICAgIHZhciBzID0gcGFyc2VGbG9hdChoc2xb
MV0pIC8gMTAwOwpAQCAtNDM0LDE2ICs1MDQsMTYgQEAgV2ViSW5zcGVjdG9yLkNvbG9yLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgICAgIE1hdGgucm91bmQoc0FycmF5WyAoaCB8IDE2KSAlIDYgXSAq
IDI1NSksCiAgICAgICAgICAgICBNYXRoLnJvdW5kKHNBcnJheVsgKGggfCA4KSAgJSA2IF0gKiAy
NTUpCiAgICAgICAgIF07Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcmdiYVRvSFNMQTogZnVuY3Rp
b24ocmdiYSkKKyAgICBfcmdiYVRvSFNMQShyZ2JhKQogICAgIHsKICAgICAgICAgdmFyIGhzbCA9
IHRoaXMuX3JnYlRvSFNMKHJnYmEpOwogICAgICAgICBoc2wucHVzaChyZ2JhWzNdKTsKICAgICAg
ICAgcmV0dXJuIGhzbDsKLSAgICB9LAorICAgIH0KIAotICAgIF9oc2xhVG9SR0JBOiBmdW5jdGlv
bihoc2xhKQorICAgIF9oc2xhVG9SR0JBKGhzbGEpCiAgICAgewogICAgICAgICB2YXIgcmdiYSA9
IHRoaXMuX2hzbFRvUkdCKGhzbGEpOwogICAgICAgICByZ2JhLnB1c2goaHNsYVszXSk7CkBAIC00
NTEsNiArNTIxLDE3IEBAIFdlYkluc3BlY3Rvci5Db2xvci5wcm90b3R5cGUgPSB7CiAgICAgfQog
fTsKIAorV2ViSW5zcGVjdG9yLkNvbG9yLkZvcm1hdCA9IHsKKyAgICBPcmlnaW5hbDogImNvbG9y
LWZvcm1hdC1vcmlnaW5hbCIsCisgICAgTmlja25hbWU6ICJjb2xvci1mb3JtYXQtbmlja25hbWUi
LAorICAgIEhFWDogImNvbG9yLWZvcm1hdC1oZXgiLAorICAgIFNob3J0SEVYOiAiY29sb3ItZm9y
bWF0LXNob3J0LWhleCIsCisgICAgUkdCOiAiY29sb3ItZm9ybWF0LXJnYiIsCisgICAgUkdCQTog
ImNvbG9yLWZvcm1hdC1yZ2JhIiwKKyAgICBIU0w6ICJjb2xvci1mb3JtYXQtaHNsIiwKKyAgICBI
U0xBOiAiY29sb3ItZm9ybWF0LWhzbGEiCit9OworCiBXZWJJbnNwZWN0b3IuQ29sb3IuTmlja25h
bWVzID0gewogICAgICJhbGljZWJsdWUiOiBbMjQwLCAyNDgsIDI1NV0sCiAgICAgImFudGlxdWV3
aGl0ZSI6IFsyNTAsIDIzNSwgMjE1XSwKQEAgLTU5Miw3NSArNjczLDMgQEAgV2ViSW5zcGVjdG9y
LkNvbG9yLk5pY2tuYW1lcyA9IHsKICAgICAieWVsbG93IjogWzI1NSwgMjU1LCAwXSwKICAgICAi
eWVsbG93Z3JlZW4iOiBbMTU0LCAyMDUsIDUwXQogfTsKLQotV2ViSW5zcGVjdG9yLkNvbG9yLnJn
YjJoc3YgPSBmdW5jdGlvbihyLCBnLCBiKQotewotICAgIHIgLz0gMjU1OwotICAgIGcgLz0gMjU1
OwotICAgIGIgLz0gMjU1OwotCi0gICAgdmFyIG1pbiA9IE1hdGgubWluKE1hdGgubWluKHIsIGcp
LCBiKTsKLSAgICB2YXIgbWF4ID0gTWF0aC5tYXgoTWF0aC5tYXgociwgZyksIGIpOwotICAgIHZh
ciBkZWx0YSA9IG1heCAtIG1pbjsKLQotICAgIHZhciB2ID0gbWF4OwotICAgIHZhciBzLCBoOwot
Ci0gICAgaWYgKG1heCA9PT0gbWluKQotICAgICAgICBoID0gMDsKLSAgICBlbHNlIGlmIChtYXgg
PT09IHIpCi0gICAgICAgIGggPSAoNjAgKiAoKGcgLSBiKSAvIGRlbHRhKSkgJSAzNjA7Ci0gICAg
ZWxzZSBpZiAobWF4ID09PSBnKQotICAgICAgICBoID0gNjAgKiAoKGIgLSByKSAvIGRlbHRhKSAr
IDEyMDsKLSAgICBlbHNlIGlmIChtYXggPT09IGIpCi0gICAgICAgIGggPSA2MCAqICgociAtIGcp
IC8gZGVsdGEpICsgMjQwOwotCi0gICAgaWYgKGggPCAwKQotICAgICAgICBoICs9IDM2MDsKLQot
ICAgIC8vIFNhdHVyYXRpb24KLSAgICBpZiAobWF4ID09PSAwKQotICAgICAgICBzID0gMDsKLSAg
ICBlbHNlCi0gICAgICAgIHMgPSAxIC0gKG1pbiAvIG1heCk7Ci0KLSAgICByZXR1cm4gW2gsIHMs
IHZdOwotfTsKLQotV2ViSW5zcGVjdG9yLkNvbG9yLmhzdjJyZ2IgPSBmdW5jdGlvbihoLCBzLCB2
KQotewotICAgIGlmIChzID09PSAwKQotICAgICAgICByZXR1cm4gW3YsIHYsIHZdOwotCi0gICAg
aCAvPSA2MDsKLSAgICB2YXIgaSA9IE1hdGguZmxvb3IoaCk7Ci0gICAgdmFyIGRhdGEgPSBbCi0g
ICAgICAgIHYgKiAoMSAtIHMpLAotICAgICAgICB2ICogKDEgLSBzICogKGggLSBpKSksCi0gICAg
ICAgIHYgKiAoMSAtIHMgKiAoMSAtIChoIC0gaSkpKQotICAgIF07Ci0gICAgdmFyIHJnYjsKLQot
ICAgIHN3aXRjaCAoaSkgewotICAgIGNhc2UgMDoKLSAgICAgICAgcmdiID0gW3YsIGRhdGFbMl0s
IGRhdGFbMF1dOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIDE6Ci0gICAgICAgIHJnYiA9IFtk
YXRhWzFdLCB2LCBkYXRhWzBdXTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSAyOgotICAgICAg
ICByZ2IgPSBbZGF0YVswXSwgdiwgZGF0YVsyXV07Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
MzoKLSAgICAgICAgcmdiID0gW2RhdGFbMF0sIGRhdGFbMV0sIHZdOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIDQ6Ci0gICAgICAgIHJnYiA9IFtkYXRhWzJdLCBkYXRhWzBdLCB2XTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmdiID0gW3YsIGRhdGFbMF0sIGRhdGFb
MV1dOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmdiOwotfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Db250ZW50
Rmxvdy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Db250
ZW50Rmxvdy5qcwppbmRleCA3MjYzMTZhLi5jYzA2M2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ29udGVudEZsb3cuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NvbnRlbnRGbG93LmpzCkBA
IC0yNywyNiArMjcsMTcgQEAKICAqIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5D
b250ZW50RmxvdyA9IGZ1bmN0aW9uKGRvY3VtZW50Tm9kZUlkZW50aWZpZXIsIG5hbWUsIG92ZXJz
ZXQsIGNvbnRlbnROb2RlcykKK1dlYkluc3BlY3Rvci5Db250ZW50RmxvdyA9IGNsYXNzIENvbnRl
bnRGbG93IGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogewotICAgIFdlYkluc3BlY3Rvci5P
YmplY3QuY2FsbCh0aGlzKTsKLQotICAgIHRoaXMuX2RvY3VtZW50Tm9kZUlkZW50aWZpZXIgPSBk
b2N1bWVudE5vZGVJZGVudGlmaWVyOwotICAgIHRoaXMuX25hbWUgPSBuYW1lOwotICAgIHRoaXMu
X292ZXJzZXQgPSBvdmVyc2V0OwotICAgIHRoaXMuX2NvbnRlbnROb2RlcyA9IGNvbnRlbnROb2Rl
czsKLX07Ci0KLVdlYkluc3BlY3Rvci5Db250ZW50Rmxvdy5FdmVudCA9IHsKLSAgICBPdmVyc2V0
V2FzQ2hhbmdlZDogImNvbnRlbnQtZmxvdy1vdmVyc2V0LXdhcy1jaGFuZ2VkIiwKLSAgICBDb250
ZW50Tm9kZVdhc0FkZGVkOiAiY29udGVudC1mbG93LWNvbnRlbnQtbm9kZS13YXMtYWRkZWQiLAot
ICAgIENvbnRlbnROb2RlV2FzUmVtb3ZlZDogImNvbnRlbnQtZmxvdy1jb250ZW50LW5vZGUtd2Fz
LXJlbW92ZWQiCi19OwotCi1XZWJJbnNwZWN0b3IuQ29udGVudEZsb3cucHJvdG90eXBlID0gewot
Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5Db250ZW50RmxvdywKLSAgICBfX3Byb3Rv
X186IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlLAorICAgIGNvbnN0cnVjdG9yKGRvY3Vt
ZW50Tm9kZUlkZW50aWZpZXIsIG5hbWUsIG92ZXJzZXQsIGNvbnRlbnROb2RlcykKKyAgICB7Cisg
ICAgICAgIHN1cGVyKCk7CisKKyAgICAgICAgdGhpcy5fZG9jdW1lbnROb2RlSWRlbnRpZmllciA9
IGRvY3VtZW50Tm9kZUlkZW50aWZpZXI7CisgICAgICAgIHRoaXMuX25hbWUgPSBuYW1lOworICAg
ICAgICB0aGlzLl9vdmVyc2V0ID0gb3ZlcnNldDsKKyAgICAgICAgdGhpcy5fY29udGVudE5vZGVz
ID0gY29udGVudE5vZGVzOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCkBAIC01NCwyMiArNDUs
MjIgQEAgV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93LnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAg
ICAgIC8vIFVzZSB0aGUgZmxvdyBub2RlIGlkLCB0byBhdm9pZCBjb2xsaXNpb25zIHdoZW4gd2Ug
Y2hhbmdlIG1haW4gZG9jdW1lbnQgaWQuCiAgICAgICAgIHJldHVybiB0aGlzLl9kb2N1bWVudE5v
ZGVJZGVudGlmaWVyICsgIjoiICsgdGhpcy5fbmFtZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdl
dCBkb2N1bWVudE5vZGVJZGVudGlmaWVyKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9k
b2N1bWVudE5vZGVJZGVudGlmaWVyOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IG5hbWUoKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX25hbWU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBn
ZXQgb3ZlcnNldCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fb3ZlcnNldDsKLSAgICB9
LAorICAgIH0KIAogICAgIHNldCBvdmVyc2V0KG92ZXJzZXQpCiAgICAgewpAQCAtNzcsMjggKzY4
LDI4IEBAIFdlYkluc3BlY3Rvci5Db250ZW50Rmxvdy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIHRoaXMuX292ZXJzZXQgPSBvdmVyc2V0OwogICAgICAgICB0aGlz
LmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuQ29udGVudEZsb3cuRXZlbnQu
Rmxvd092ZXJzZXRXYXNDaGFuZ2VkKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBjb250ZW50
Tm9kZXMoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnRlbnROb2RlczsKLSAgICB9
LAorICAgIH0KIAotICAgIGluc2VydENvbnRlbnROb2RlQmVmb3JlOiBmdW5jdGlvbihjb250ZW50
Tm9kZSwgcmVmZXJlbmNlTm9kZSkKKyAgICBpbnNlcnRDb250ZW50Tm9kZUJlZm9yZShjb250ZW50
Tm9kZSwgcmVmZXJlbmNlTm9kZSkKICAgICB7CiAgICAgICAgIHZhciBpbmRleCA9IHRoaXMuX2Nv
bnRlbnROb2Rlcy5pbmRleE9mKHJlZmVyZW5jZU5vZGUpOwogICAgICAgICBjb25zb2xlLmFzc2Vy
dChpbmRleCAhPT0gLTEpOwogICAgICAgICB0aGlzLl9jb250ZW50Tm9kZXMuc3BsaWNlKGluZGV4
LCAwLCBjb250ZW50Tm9kZSk7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJz
KFdlYkluc3BlY3Rvci5Db250ZW50Rmxvdy5FdmVudC5Db250ZW50Tm9kZVdhc0FkZGVkLCB7bm9k
ZTogY29udGVudE5vZGUsIGJlZm9yZTogcmVmZXJlbmNlTm9kZX0pOwotICAgIH0sCisgICAgfQog
Ci0gICAgYXBwZW5kQ29udGVudE5vZGU6IGZ1bmN0aW9uKGNvbnRlbnROb2RlKQorICAgIGFwcGVu
ZENvbnRlbnROb2RlKGNvbnRlbnROb2RlKQogICAgIHsKICAgICAgICAgdGhpcy5fY29udGVudE5v
ZGVzLnB1c2goY29udGVudE5vZGUpOwogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3Rl
bmVycyhXZWJJbnNwZWN0b3IuQ29udGVudEZsb3cuRXZlbnQuQ29udGVudE5vZGVXYXNBZGRlZCwg
e25vZGU6IGNvbnRlbnROb2RlfSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZW1vdmVDb250ZW50
Tm9kZTogZnVuY3Rpb24oY29udGVudE5vZGUpCisgICAgcmVtb3ZlQ29udGVudE5vZGUoY29udGVu
dE5vZGUpCiAgICAgewogICAgICAgICB2YXIgaW5kZXggPSB0aGlzLl9jb250ZW50Tm9kZXMuaW5k
ZXhPZihjb250ZW50Tm9kZSk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGluZGV4ICE9PSAtMSk7
CkBAIC0xMDYsMyArOTcsOSBAQCBXZWJJbnNwZWN0b3IuQ29udGVudEZsb3cucHJvdG90eXBlID0g
ewogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuQ29u
dGVudEZsb3cuRXZlbnQuQ29udGVudE5vZGVXYXNSZW1vdmVkLCB7bm9kZTogY29udGVudE5vZGV9
KTsKICAgICB9CiB9OworCitXZWJJbnNwZWN0b3IuQ29udGVudEZsb3cuRXZlbnQgPSB7CisgICAg
T3ZlcnNldFdhc0NoYW5nZWQ6ICJjb250ZW50LWZsb3ctb3ZlcnNldC13YXMtY2hhbmdlZCIsCisg
ICAgQ29udGVudE5vZGVXYXNBZGRlZDogImNvbnRlbnQtZmxvdy1jb250ZW50LW5vZGUtd2FzLWFk
ZGVkIiwKKyAgICBDb250ZW50Tm9kZVdhc1JlbW92ZWQ6ICJjb250ZW50LWZsb3ctY29udGVudC1u
b2RlLXdhcy1yZW1vdmVkIgorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL01vZGVscy9Db29raWVTdG9yYWdlT2JqZWN0LmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0Nvb2tpZVN0b3JhZ2VPYmplY3QuanMKaW5k
ZXggMGFlNjBmMS4uMzg2YjkxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvTW9kZWxzL0Nvb2tpZVN0b3JhZ2VPYmplY3QuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0Nvb2tpZVN0b3JhZ2VPYmplY3QuanMK
QEAgLTIzLDI1ICsyMywyNiBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKLVdlYkluc3BlY3Rvci5Db29raWVTdG9yYWdlT2JqZWN0ID0gZnVuY3Rpb24oaG9zdCkK
K1dlYkluc3BlY3Rvci5Db29raWVTdG9yYWdlT2JqZWN0ID0gY2xhc3MgQ29va2llU3RvcmFnZU9i
amVjdAogewotICAgIHRoaXMuX2hvc3QgPSBob3N0OwotfTsKKyAgICBjb25zdHJ1Y3Rvcihob3N0
KQorICAgIHsKKyAgICAgICAgdGhpcy5faG9zdCA9IGhvc3Q7CisgICAgfQogCi1XZWJJbnNwZWN0
b3IuQ29va2llU3RvcmFnZU9iamVjdC5UeXBlSWRlbnRpZmllciA9ICJjb29raWUtc3RvcmFnZSI7
Ci1XZWJJbnNwZWN0b3IuQ29va2llU3RvcmFnZU9iamVjdC5Db29raWVIb3N0Q29va2llS2V5ID0g
ImNvb2tpZS1zdG9yYWdlLWhvc3QiOwotCi1XZWJJbnNwZWN0b3IuQ29va2llU3RvcmFnZU9iamVj
dC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5Db29raWVTdG9y
YWdlT2JqZWN0LAorICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IGhvc3QoKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHRoaXMuX2hvc3Q7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzYXZlSWRlbnRpdHlU
b0Nvb2tpZTogZnVuY3Rpb24oY29va2llKQorICAgIHNhdmVJZGVudGl0eVRvQ29va2llKGNvb2tp
ZSkKICAgICB7CisgICAgICAgIC8vIEZJWE1FOiBUaGlzIGNsYXNzIHdpbGwgbmVlZCB0byBsb29r
IHVwIGNvb2tpZXMgdGhhdCBhcmUgc2V0IGZvciB0aGlzIGhvc3QuCiAgICAgICAgIGNvb2tpZVtX
ZWJJbnNwZWN0b3IuQ29va2llU3RvcmFnZU9iamVjdC5Db29raWVIb3N0Q29va2llS2V5XSA9IHRo
aXMuaG9zdDsKLSAgICB9Ci0gICAgLy8gRklYTUU6IFRoaXMgY2xhc3Mgd2lsbCBuZWVkIHRvIGxv
b2sgdXAgY29va2llcyB0aGF0IGFyZSBzZXQgZm9yIHRoaXMgaG9zdC4KKyAgICB9ICAgIAogfTsK
KworV2ViSW5zcGVjdG9yLkNvb2tpZVN0b3JhZ2VPYmplY3QuVHlwZUlkZW50aWZpZXIgPSAiY29v
a2llLXN0b3JhZ2UiOworV2ViSW5zcGVjdG9yLkNvb2tpZVN0b3JhZ2VPYmplY3QuQ29va2llSG9z
dENvb2tpZUtleSA9ICJjb29raWUtc3RvcmFnZS1ob3N0IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9ET01Ob2RlLmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0RPTU5vZGUuanMKaW5kZXggMjVhM2Vm
Ni4uMzA1N2Y5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvTW9kZWxzL0RPTU5vZGUuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvTW9kZWxzL0RPTU5vZGUuanMKQEAgLTMwLDkxICszMCw4NSBAQAogICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCi1XZWJJbnNwZWN0b3IuRE9NTm9kZSA9IGZ1bmN0aW9uKGRvbUFnZW50LCBkb2Ms
IGlzSW5TaGFkb3dUcmVlLCBwYXlsb2FkKSB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxs
KHRoaXMpOwotCi0gICAgdGhpcy5fZG9tQWdlbnQgPSBkb21BZ2VudDsKLSAgICB0aGlzLl9pc0lu
U2hhZG93VHJlZSA9IGlzSW5TaGFkb3dUcmVlOwotCi0gICAgdGhpcy5pZCA9IHBheWxvYWQubm9k
ZUlkOwotICAgIGRvbUFnZW50Ll9pZFRvRE9NTm9kZVt0aGlzLmlkXSA9IHRoaXM7Ci0KLSAgICB0
aGlzLl9ub2RlVHlwZSA9IHBheWxvYWQubm9kZVR5cGU7Ci0gICAgdGhpcy5fbm9kZU5hbWUgPSBw
YXlsb2FkLm5vZGVOYW1lOwotICAgIHRoaXMuX2xvY2FsTmFtZSA9IHBheWxvYWQubG9jYWxOYW1l
OwotICAgIHRoaXMuX25vZGVWYWx1ZSA9IHBheWxvYWQubm9kZVZhbHVlOwotICAgIHRoaXMuX2Nv
bXB1dGVkUm9sZSA9IHBheWxvYWQucm9sZTsKLQotICAgIGlmICh0aGlzLl9ub2RlVHlwZSA9PT0g
Tm9kZS5ET0NVTUVOVF9OT0RFKQotICAgICAgICB0aGlzLm93bmVyRG9jdW1lbnQgPSB0aGlzOwot
ICAgIGVsc2UKLSAgICAgICAgdGhpcy5vd25lckRvY3VtZW50ID0gZG9jOwotCi0gICAgdGhpcy5f
YXR0cmlidXRlcyA9IFtdOwotICAgIHRoaXMuX2F0dHJpYnV0ZXNNYXAgPSB7fTsKLSAgICBpZiAo
cGF5bG9hZC5hdHRyaWJ1dGVzKQotICAgICAgICB0aGlzLl9zZXRBdHRyaWJ1dGVzUGF5bG9hZChw
YXlsb2FkLmF0dHJpYnV0ZXMpOwotCi0gICAgdGhpcy5fY2hpbGROb2RlQ291bnQgPSBwYXlsb2Fk
LmNoaWxkTm9kZUNvdW50OwotICAgIHRoaXMuX2NoaWxkcmVuID0gbnVsbDsKLSAgICB0aGlzLl9m
aWx0ZXJlZENoaWxkcmVuID0gbnVsbDsKLSAgICB0aGlzLl9maWx0ZXJlZENoaWxkcmVuTmVlZHNV
cGRhdGluZyA9IHRydWU7Ci0KLSAgICB0aGlzLl9uZXh0U2libGluZyA9IG51bGw7Ci0gICAgdGhp
cy5fcHJldmlvdXNTaWJsaW5nID0gbnVsbDsKLSAgICB0aGlzLnBhcmVudE5vZGUgPSBudWxsOwot
Ci0gICAgdGhpcy5fZW5hYmxlZFBzZXVkb0NsYXNzZXMgPSBbXTsKLQotICAgIHRoaXMuX3NoYWRv
d1Jvb3RzID0gW107Ci0gICAgaWYgKHBheWxvYWQuc2hhZG93Um9vdHMpIHsKLSAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBwYXlsb2FkLnNoYWRvd1Jvb3RzLmxlbmd0aDsgKytpKSB7Ci0gICAg
ICAgICAgICB2YXIgcm9vdCA9IHBheWxvYWQuc2hhZG93Um9vdHNbaV07Ci0gICAgICAgICAgICB2
YXIgbm9kZSA9IG5ldyBXZWJJbnNwZWN0b3IuRE9NTm9kZSh0aGlzLl9kb21BZ2VudCwgdGhpcy5v
d25lckRvY3VtZW50LCB0cnVlLCByb290KTsKLSAgICAgICAgICAgIHRoaXMuX3NoYWRvd1Jvb3Rz
LnB1c2gobm9kZSk7CitXZWJJbnNwZWN0b3IuRE9NTm9kZSA9IGNsYXNzIERPTU5vZGUgZXh0ZW5k
cyBXZWJJbnNwZWN0b3IuT2JqZWN0Cit7CisgICAgY29uc3RydWN0b3IoZG9tQWdlbnQsIGRvYywg
aXNJblNoYWRvd1RyZWUsIHBheWxvYWQpCisgICAgeworICAgICAgICBzdXBlcigpOworCisgICAg
ICAgIHRoaXMuX2RvbUFnZW50ID0gZG9tQWdlbnQ7CisgICAgICAgIHRoaXMuX2lzSW5TaGFkb3dU
cmVlID0gaXNJblNoYWRvd1RyZWU7CisKKyAgICAgICAgdGhpcy5pZCA9IHBheWxvYWQubm9kZUlk
OworICAgICAgICBkb21BZ2VudC5faWRUb0RPTU5vZGVbdGhpcy5pZF0gPSB0aGlzOworCisgICAg
ICAgIHRoaXMuX25vZGVUeXBlID0gcGF5bG9hZC5ub2RlVHlwZTsKKyAgICAgICAgdGhpcy5fbm9k
ZU5hbWUgPSBwYXlsb2FkLm5vZGVOYW1lOworICAgICAgICB0aGlzLl9sb2NhbE5hbWUgPSBwYXls
b2FkLmxvY2FsTmFtZTsKKyAgICAgICAgdGhpcy5fbm9kZVZhbHVlID0gcGF5bG9hZC5ub2RlVmFs
dWU7CisgICAgICAgIHRoaXMuX2NvbXB1dGVkUm9sZSA9IHBheWxvYWQucm9sZTsKKworICAgICAg
ICBpZiAodGhpcy5fbm9kZVR5cGUgPT09IE5vZGUuRE9DVU1FTlRfTk9ERSkKKyAgICAgICAgICAg
IHRoaXMub3duZXJEb2N1bWVudCA9IHRoaXM7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRo
aXMub3duZXJEb2N1bWVudCA9IGRvYzsKKworICAgICAgICB0aGlzLl9hdHRyaWJ1dGVzID0gW107
CisgICAgICAgIHRoaXMuX2F0dHJpYnV0ZXNNYXAgPSB7fTsKKyAgICAgICAgaWYgKHBheWxvYWQu
YXR0cmlidXRlcykKKyAgICAgICAgICAgIHRoaXMuX3NldEF0dHJpYnV0ZXNQYXlsb2FkKHBheWxv
YWQuYXR0cmlidXRlcyk7CisKKyAgICAgICAgdGhpcy5fY2hpbGROb2RlQ291bnQgPSBwYXlsb2Fk
LmNoaWxkTm9kZUNvdW50OworICAgICAgICB0aGlzLl9jaGlsZHJlbiA9IG51bGw7CisgICAgICAg
IHRoaXMuX2ZpbHRlcmVkQ2hpbGRyZW4gPSBudWxsOworICAgICAgICB0aGlzLl9maWx0ZXJlZENo
aWxkcmVuTmVlZHNVcGRhdGluZyA9IHRydWU7CisKKyAgICAgICAgdGhpcy5fbmV4dFNpYmxpbmcg
PSBudWxsOworICAgICAgICB0aGlzLl9wcmV2aW91c1NpYmxpbmcgPSBudWxsOworICAgICAgICB0
aGlzLnBhcmVudE5vZGUgPSBudWxsOworCisgICAgICAgIHRoaXMuX2VuYWJsZWRQc2V1ZG9DbGFz
c2VzID0gW107CisKKyAgICAgICAgdGhpcy5fc2hhZG93Um9vdHMgPSBbXTsKKyAgICAgICAgaWYg
KHBheWxvYWQuc2hhZG93Um9vdHMpIHsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
cGF5bG9hZC5zaGFkb3dSb290cy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgIHZhciBy
b290ID0gcGF5bG9hZC5zaGFkb3dSb290c1tpXTsKKyAgICAgICAgICAgICAgICB2YXIgbm9kZSA9
IG5ldyBXZWJJbnNwZWN0b3IuRE9NTm9kZSh0aGlzLl9kb21BZ2VudCwgdGhpcy5vd25lckRvY3Vt
ZW50LCB0cnVlLCByb290KTsKKyAgICAgICAgICAgICAgICB0aGlzLl9zaGFkb3dSb290cy5wdXNo
KG5vZGUpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKHBheWxvYWQu
Y2hpbGRyZW4pCisgICAgICAgICAgICB0aGlzLl9zZXRDaGlsZHJlblBheWxvYWQocGF5bG9hZC5j
aGlsZHJlbik7CisKKyAgICAgICAgaWYgKHBheWxvYWQuY29udGVudERvY3VtZW50KSB7CisgICAg
ICAgICAgICB0aGlzLl9jb250ZW50RG9jdW1lbnQgPSBuZXcgV2ViSW5zcGVjdG9yLkRPTU5vZGUo
ZG9tQWdlbnQsIG51bGwsIGZhbHNlLCBwYXlsb2FkLmNvbnRlbnREb2N1bWVudCk7CisgICAgICAg
ICAgICB0aGlzLl9jaGlsZHJlbiA9IFt0aGlzLl9jb250ZW50RG9jdW1lbnRdOworICAgICAgICAg
ICAgdGhpcy5fcmVudW1iZXIoKTsKICAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChwYXlsb2Fk
LmNoaWxkcmVuKQotICAgICAgICB0aGlzLl9zZXRDaGlsZHJlblBheWxvYWQocGF5bG9hZC5jaGls
ZHJlbik7Ci0KLSAgICBpZiAocGF5bG9hZC5jb250ZW50RG9jdW1lbnQpIHsKLSAgICAgICAgdGhp
cy5fY29udGVudERvY3VtZW50ID0gbmV3IFdlYkluc3BlY3Rvci5ET01Ob2RlKGRvbUFnZW50LCBu
dWxsLCBmYWxzZSwgcGF5bG9hZC5jb250ZW50RG9jdW1lbnQpOwotICAgICAgICB0aGlzLl9jaGls
ZHJlbiA9IFt0aGlzLl9jb250ZW50RG9jdW1lbnRdOwotICAgICAgICB0aGlzLl9yZW51bWJlcigp
OwotICAgIH0KLQotICAgIGlmICh0aGlzLl9ub2RlVHlwZSA9PT0gTm9kZS5FTEVNRU5UX05PREUp
IHsKLSAgICAgICAgLy8gSFRNTCBhbmQgQk9EWSBmcm9tIGludGVybmFsIGlmcmFtZXMgc2hvdWxk
IG5vdCBvdmVyd3JpdGUgdG9wLWxldmVsIG9uZXMuCi0gICAgICAgIGlmICh0aGlzLm93bmVyRG9j
dW1lbnQgJiYgIXRoaXMub3duZXJEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQgJiYgdGhpcy5fbm9k
ZU5hbWUgPT09ICJIVE1MIikKLSAgICAgICAgICAgIHRoaXMub3duZXJEb2N1bWVudC5kb2N1bWVu
dEVsZW1lbnQgPSB0aGlzOwotICAgICAgICBpZiAodGhpcy5vd25lckRvY3VtZW50ICYmICF0aGlz
Lm93bmVyRG9jdW1lbnQuYm9keSAmJiB0aGlzLl9ub2RlTmFtZSA9PT0gIkJPRFkiKQotICAgICAg
ICAgICAgdGhpcy5vd25lckRvY3VtZW50LmJvZHkgPSB0aGlzOwotICAgICAgICBpZiAocGF5bG9h
ZC5kb2N1bWVudFVSTCkKKworICAgICAgICBpZiAodGhpcy5fbm9kZVR5cGUgPT09IE5vZGUuRUxF
TUVOVF9OT0RFKSB7CisgICAgICAgICAgICAvLyBIVE1MIGFuZCBCT0RZIGZyb20gaW50ZXJuYWwg
aWZyYW1lcyBzaG91bGQgbm90IG92ZXJ3cml0ZSB0b3AtbGV2ZWwgb25lcy4KKyAgICAgICAgICAg
IGlmICh0aGlzLm93bmVyRG9jdW1lbnQgJiYgIXRoaXMub3duZXJEb2N1bWVudC5kb2N1bWVudEVs
ZW1lbnQgJiYgdGhpcy5fbm9kZU5hbWUgPT09ICJIVE1MIikKKyAgICAgICAgICAgICAgICB0aGlz
Lm93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50ID0gdGhpczsKKyAgICAgICAgICAgIGlmICh0
aGlzLm93bmVyRG9jdW1lbnQgJiYgIXRoaXMub3duZXJEb2N1bWVudC5ib2R5ICYmIHRoaXMuX25v
ZGVOYW1lID09PSAiQk9EWSIpCisgICAgICAgICAgICAgICAgdGhpcy5vd25lckRvY3VtZW50LmJv
ZHkgPSB0aGlzOworICAgICAgICAgICAgaWYgKHBheWxvYWQuZG9jdW1lbnRVUkwpCisgICAgICAg
ICAgICAgICAgdGhpcy5kb2N1bWVudFVSTCA9IHBheWxvYWQuZG9jdW1lbnRVUkw7CisgICAgICAg
IH0gZWxzZSBpZiAodGhpcy5fbm9kZVR5cGUgPT09IE5vZGUuRE9DVU1FTlRfVFlQRV9OT0RFKSB7
CisgICAgICAgICAgICB0aGlzLnB1YmxpY0lkID0gcGF5bG9hZC5wdWJsaWNJZDsKKyAgICAgICAg
ICAgIHRoaXMuc3lzdGVtSWQgPSBwYXlsb2FkLnN5c3RlbUlkOworICAgICAgICAgICAgdGhpcy5p
bnRlcm5hbFN1YnNldCA9IHBheWxvYWQuaW50ZXJuYWxTdWJzZXQ7CisgICAgICAgIH0gZWxzZSBp
ZiAodGhpcy5fbm9kZVR5cGUgPT09IE5vZGUuRE9DVU1FTlRfTk9ERSkgewogICAgICAgICAgICAg
dGhpcy5kb2N1bWVudFVSTCA9IHBheWxvYWQuZG9jdW1lbnRVUkw7Ci0gICAgfSBlbHNlIGlmICh0
aGlzLl9ub2RlVHlwZSA9PT0gTm9kZS5ET0NVTUVOVF9UWVBFX05PREUpIHsKLSAgICAgICAgdGhp
cy5wdWJsaWNJZCA9IHBheWxvYWQucHVibGljSWQ7Ci0gICAgICAgIHRoaXMuc3lzdGVtSWQgPSBw
YXlsb2FkLnN5c3RlbUlkOwotICAgICAgICB0aGlzLmludGVybmFsU3Vic2V0ID0gcGF5bG9hZC5p
bnRlcm5hbFN1YnNldDsKLSAgICB9IGVsc2UgaWYgKHRoaXMuX25vZGVUeXBlID09PSBOb2RlLkRP
Q1VNRU5UX05PREUpIHsKLSAgICAgICAgdGhpcy5kb2N1bWVudFVSTCA9IHBheWxvYWQuZG9jdW1l
bnRVUkw7Ci0gICAgICAgIHRoaXMueG1sVmVyc2lvbiA9IHBheWxvYWQueG1sVmVyc2lvbjsKLSAg
ICB9IGVsc2UgaWYgKHRoaXMuX25vZGVUeXBlID09PSBOb2RlLkFUVFJJQlVURV9OT0RFKSB7Ci0g
ICAgICAgIHRoaXMubmFtZSA9IHBheWxvYWQubmFtZTsKLSAgICAgICAgdGhpcy52YWx1ZSA9IHBh
eWxvYWQudmFsdWU7CisgICAgICAgICAgICB0aGlzLnhtbFZlcnNpb24gPSBwYXlsb2FkLnhtbFZl
cnNpb247CisgICAgICAgIH0gZWxzZSBpZiAodGhpcy5fbm9kZVR5cGUgPT09IE5vZGUuQVRUUklC
VVRFX05PREUpIHsKKyAgICAgICAgICAgIHRoaXMubmFtZSA9IHBheWxvYWQubmFtZTsKKyAgICAg
ICAgICAgIHRoaXMudmFsdWUgPSBwYXlsb2FkLnZhbHVlOworICAgICAgICB9CiAgICAgfQotfTsK
IAotV2ViSW5zcGVjdG9yLk9iamVjdC5hZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhXZWJJbnNwZWN0
b3IuRE9NTm9kZSk7Ci0KLVdlYkluc3BlY3Rvci5ET01Ob2RlLkV2ZW50ID0gewotICAgIEVuYWJs
ZWRQc2V1ZG9DbGFzc2VzQ2hhbmdlZDogImRvbS1ub2RlLWVuYWJsZWQtcHNldWRvLWNsYXNzZXMt
ZGlkLWNoYW5nZSIsCi0gICAgQXR0cmlidXRlTW9kaWZpZWQ6ICJkb20tbm9kZS1hdHRyaWJ1dGUt
bW9kaWZpZWQiLAotICAgIEF0dHJpYnV0ZVJlbW92ZWQ6ICJkb20tbm9kZS1hdHRyaWJ1dGUtcmVt
b3ZlZCIKLX07Ci0KLVdlYkluc3BlY3Rvci5ET01Ob2RlLnByb3RvdHlwZSA9IHsKLSAgICBjb25z
dHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkRPTU5vZGUsCisgICAgLy8gUHVibGljCiAKICAgICBnZXQg
Y2hpbGRyZW4oKQogICAgIHsKQEAgLTEzMiw3ICsxMjYsNyBAQCBXZWJJbnNwZWN0b3IuRE9NTm9k
ZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gdGhpcy5fZmlsdGVy
ZWRDaGlsZHJlbjsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBmaXJzdENoaWxkKCkKICAgICB7
CkBAIC0xNDIsNyArMTM2LDcgQEAgV2ViSW5zcGVjdG9yLkRPTU5vZGUucHJvdG90eXBlID0gewog
ICAgICAgICAgICAgcmV0dXJuIGNoaWxkcmVuWzBdOwogCiAgICAgICAgIHJldHVybiBudWxsOwot
ICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGxhc3RDaGlsZCgpCiAgICAgewpAQCAtMTUyLDcgKzE0
Niw3IEBAIFdlYkluc3BlY3Rvci5ET01Ob2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJl
dHVybiBjaGlsZHJlbi5sYXN0VmFsdWU7CiAKICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgfSwK
KyAgICB9CiAKICAgICBnZXQgbmV4dFNpYmxpbmcoKQogICAgIHsKQEAgLTE2Niw3ICsxNjAsNyBA
QCBXZWJJbnNwZWN0b3IuRE9NTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBub2RlID0g
bm9kZS5fbmV4dFNpYmxpbmc7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAg
fSwKKyAgICB9CiAKICAgICBnZXQgcHJldmlvdXNTaWJsaW5nKCkKICAgICB7CkBAIC0xODAsNyAr
MTc0LDcgQEAgV2ViSW5zcGVjdG9yLkRPTU5vZGUucHJvdG90eXBlID0gewogICAgICAgICAgICAg
bm9kZSA9IG5vZGUuX3ByZXZpb3VzU2libGluZzsKICAgICAgICAgfQogICAgICAgICByZXR1cm4g
bnVsbDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBjaGlsZE5vZGVDb3VudCgpCiAgICAgewpA
QCAtMTkyLDk1ICsxODYsOTUgQEAgV2ViSW5zcGVjdG9yLkRPTU5vZGUucHJvdG90eXBlID0gewog
ICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NoaWxkTm9kZUNvdW50ICsgdGhpcy5fc2hhZG93Um9v
dHMubGVuZ3RoOwogCiAgICAgICAgIHJldHVybiB0aGlzLl9jaGlsZE5vZGVDb3VudDsKLSAgICB9
LAorICAgIH0KIAogICAgIHNldCBjaGlsZE5vZGVDb3VudChjb3VudCkKICAgICB7CiAgICAgICAg
IHRoaXMuX2NoaWxkTm9kZUNvdW50ID0gY291bnQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjb21w
dXRlZFJvbGU6IGZ1bmN0aW9uKCkKKyAgICBjb21wdXRlZFJvbGUoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHRoaXMuX2NvbXB1dGVkUm9sZTsKLSAgICB9LAorICAgIH0KIAotICAgIGhhc0F0dHJp
YnV0ZXM6IGZ1bmN0aW9uKCkKKyAgICBoYXNBdHRyaWJ1dGVzKCkKICAgICB7CiAgICAgICAgIHJl
dHVybiB0aGlzLl9hdHRyaWJ1dGVzLmxlbmd0aCA+IDA7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBo
YXNDaGlsZE5vZGVzOiBmdW5jdGlvbigpCisgICAgaGFzQ2hpbGROb2RlcygpCiAgICAgewogICAg
ICAgICByZXR1cm4gdGhpcy5jaGlsZE5vZGVDb3VudCA+IDA7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBoYXNTaGFkb3dSb290czogZnVuY3Rpb24oKQorICAgIGhhc1NoYWRvd1Jvb3RzKCkKICAgICB7
CiAgICAgICAgIHJldHVybiAhIXRoaXMuX3NoYWRvd1Jvb3RzLmxlbmd0aDsKLSAgICB9LAorICAg
IH0KIAotICAgIGlzSW5TaGFkb3dUcmVlOiBmdW5jdGlvbigpCisgICAgaXNJblNoYWRvd1RyZWUo
KQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2lzSW5TaGFkb3dUcmVlOwotICAgIH0sCisg
ICAgfQogCi0gICAgbm9kZVR5cGU6IGZ1bmN0aW9uKCkKKyAgICBub2RlVHlwZSgpCiAgICAgewog
ICAgICAgICByZXR1cm4gdGhpcy5fbm9kZVR5cGU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBub2Rl
TmFtZTogZnVuY3Rpb24oKQorICAgIG5vZGVOYW1lKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0
aGlzLl9ub2RlTmFtZTsKLSAgICB9LAorICAgIH0KIAotICAgIG5vZGVOYW1lSW5Db3JyZWN0Q2Fz
ZTogZnVuY3Rpb24oKQorICAgIG5vZGVOYW1lSW5Db3JyZWN0Q2FzZSgpCiAgICAgewogICAgICAg
ICByZXR1cm4gdGhpcy5pc1hNTE5vZGUoKSA/IHRoaXMubm9kZU5hbWUoKSA6IHRoaXMubm9kZU5h
bWUoKS50b0xvd2VyQ2FzZSgpOwotICAgIH0sCisgICAgfQogCi0gICAgc2V0Tm9kZU5hbWU6IGZ1
bmN0aW9uKG5hbWUsIGNhbGxiYWNrKQorICAgIHNldE5vZGVOYW1lKG5hbWUsIGNhbGxiYWNrKQog
ICAgIHsKICAgICAgICAgRE9NQWdlbnQuc2V0Tm9kZU5hbWUodGhpcy5pZCwgbmFtZSwgdGhpcy5f
bWFrZVVuZG9hYmxlQ2FsbGJhY2soY2FsbGJhY2spKTsKLSAgICB9LAorICAgIH0KIAotICAgIGxv
Y2FsTmFtZTogZnVuY3Rpb24oKQorICAgIGxvY2FsTmFtZSgpCiAgICAgewogICAgICAgICByZXR1
cm4gdGhpcy5fbG9jYWxOYW1lOwotICAgIH0sCisgICAgfQogCi0gICAgbm9kZVZhbHVlOiBmdW5j
dGlvbigpCisgICAgbm9kZVZhbHVlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9ub2Rl
VmFsdWU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzZXROb2RlVmFsdWU6IGZ1bmN0aW9uKHZhbHVl
LCBjYWxsYmFjaykKKyAgICBzZXROb2RlVmFsdWUodmFsdWUsIGNhbGxiYWNrKQogICAgIHsKICAg
ICAgICAgRE9NQWdlbnQuc2V0Tm9kZVZhbHVlKHRoaXMuaWQsIHZhbHVlLCB0aGlzLl9tYWtlVW5k
b2FibGVDYWxsYmFjayhjYWxsYmFjaykpOwotICAgIH0sCisgICAgfQogCi0gICAgZ2V0QXR0cmli
dXRlOiBmdW5jdGlvbihuYW1lKQorICAgIGdldEF0dHJpYnV0ZShuYW1lKQogICAgIHsKICAgICAg
ICAgdmFyIGF0dHIgPSB0aGlzLl9hdHRyaWJ1dGVzTWFwW25hbWVdOwogICAgICAgICByZXR1cm4g
YXR0ciA/IGF0dHIudmFsdWUgOiB1bmRlZmluZWQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzZXRB
dHRyaWJ1dGU6IGZ1bmN0aW9uKG5hbWUsIHRleHQsIGNhbGxiYWNrKQorICAgIHNldEF0dHJpYnV0
ZShuYW1lLCB0ZXh0LCBjYWxsYmFjaykKICAgICB7CiAgICAgICAgIERPTUFnZW50LnNldEF0dHJp
YnV0ZXNBc1RleHQodGhpcy5pZCwgdGV4dCwgbmFtZSwgdGhpcy5fbWFrZVVuZG9hYmxlQ2FsbGJh
Y2soY2FsbGJhY2spKTsKLSAgICB9LAorICAgIH0KIAotICAgIHNldEF0dHJpYnV0ZVZhbHVlOiBm
dW5jdGlvbihuYW1lLCB2YWx1ZSwgY2FsbGJhY2spCisgICAgc2V0QXR0cmlidXRlVmFsdWUobmFt
ZSwgdmFsdWUsIGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgRE9NQWdlbnQuc2V0QXR0cmlidXRl
VmFsdWUodGhpcy5pZCwgbmFtZSwgdmFsdWUsIHRoaXMuX21ha2VVbmRvYWJsZUNhbGxiYWNrKGNh
bGxiYWNrKSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBhdHRyaWJ1dGVzOiBmdW5jdGlvbigpCisg
ICAgYXR0cmlidXRlcygpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fYXR0cmlidXRlczsK
LSAgICB9LAorICAgIH0KIAotICAgIHJlbW92ZUF0dHJpYnV0ZTogZnVuY3Rpb24obmFtZSwgY2Fs
bGJhY2spCisgICAgcmVtb3ZlQXR0cmlidXRlKG5hbWUsIGNhbGxiYWNrKQogICAgIHsKICAgICAg
ICAgZnVuY3Rpb24gbXljYWxsYmFjayhlcnJvciwgc3VjY2VzcykKICAgICAgICAgewpAQCAtMjk3
LDkgKzI5MSw5IEBAIFdlYkluc3BlY3Rvci5ET01Ob2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgIHRoaXMuX21ha2VVbmRvYWJsZUNhbGxiYWNrKGNhbGxiYWNrKShlcnJvcik7CiAgICAgICAg
IH0KICAgICAgICAgRE9NQWdlbnQucmVtb3ZlQXR0cmlidXRlKHRoaXMuaWQsIG5hbWUsIG15Y2Fs
bGJhY2suYmluZCh0aGlzKSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBnZXRDaGlsZE5vZGVzOiBm
dW5jdGlvbihjYWxsYmFjaykKKyAgICBnZXRDaGlsZE5vZGVzKGNhbGxiYWNrKQogICAgIHsKICAg
ICAgICAgaWYgKHRoaXMuY2hpbGRyZW4pIHsKICAgICAgICAgICAgIGlmIChjYWxsYmFjaykKQEAg
LTMxMyw5ICszMDcsOSBAQCBXZWJJbnNwZWN0b3IuRE9NTm9kZS5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIH0KIAogICAgICAgICBET01BZ2VudC5yZXF1ZXN0Q2hpbGROb2Rlcyh0aGlzLmlkLCBteWNh
bGxiYWNrLmJpbmQodGhpcykpOwotICAgIH0sCisgICAgfQogCi0gICAgZ2V0U3VidHJlZTogZnVu
Y3Rpb24oZGVwdGgsIGNhbGxiYWNrKQorICAgIGdldFN1YnRyZWUoZGVwdGgsIGNhbGxiYWNrKQog
ICAgIHsKICAgICAgICAgZnVuY3Rpb24gbXljYWxsYmFjayhlcnJvcikKICAgICAgICAgewpAQCAt
MzI0LDI0ICszMTgsMjQgQEAgV2ViSW5zcGVjdG9yLkRPTU5vZGUucHJvdG90eXBlID0gewogICAg
ICAgICB9CiAKICAgICAgICAgRE9NQWdlbnQucmVxdWVzdENoaWxkTm9kZXModGhpcy5pZCwgZGVw
dGgsIG15Y2FsbGJhY2suYmluZCh0aGlzKSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBnZXRPdXRl
ckhUTUw6IGZ1bmN0aW9uKGNhbGxiYWNrKQorICAgIGdldE91dGVySFRNTChjYWxsYmFjaykKICAg
ICB7CiAgICAgICAgIERPTUFnZW50LmdldE91dGVySFRNTCh0aGlzLmlkLCBjYWxsYmFjayk7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBzZXRPdXRlckhUTUw6IGZ1bmN0aW9uKGh0bWwsIGNhbGxiYWNr
KQorICAgIHNldE91dGVySFRNTChodG1sLCBjYWxsYmFjaykKICAgICB7CiAgICAgICAgIERPTUFn
ZW50LnNldE91dGVySFRNTCh0aGlzLmlkLCBodG1sLCB0aGlzLl9tYWtlVW5kb2FibGVDYWxsYmFj
ayhjYWxsYmFjaykpOwotICAgIH0sCisgICAgfQogCi0gICAgcmVtb3ZlTm9kZTogZnVuY3Rpb24o
Y2FsbGJhY2spCisgICAgcmVtb3ZlTm9kZShjYWxsYmFjaykKICAgICB7CiAgICAgICAgIERPTUFn
ZW50LnJlbW92ZU5vZGUodGhpcy5pZCwgdGhpcy5fbWFrZVVuZG9hYmxlQ2FsbGJhY2soY2FsbGJh
Y2spKTsKLSAgICB9LAorICAgIH0KIAotICAgIGNvcHlOb2RlOiBmdW5jdGlvbigpCisgICAgY29w
eU5vZGUoKQogICAgIHsKICAgICAgICAgZnVuY3Rpb24gY29weShlcnJvciwgdGV4dCkKICAgICAg
ICAgewpAQCAtMzQ5LDE0ICszNDMsMTQgQEAgV2ViSW5zcGVjdG9yLkRPTU5vZGUucHJvdG90eXBl
ID0gewogICAgICAgICAgICAgICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC5jb3B5VGV4dCh0ZXh0
KTsKICAgICAgICAgfQogICAgICAgICBET01BZ2VudC5nZXRPdXRlckhUTUwodGhpcy5pZCwgY29w
eSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBldmVudExpc3RlbmVyczogZnVuY3Rpb24oY2FsbGJh
Y2spCisgICAgZXZlbnRMaXN0ZW5lcnMoY2FsbGJhY2spCiAgICAgewogICAgICAgICBET01BZ2Vu
dC5nZXRFdmVudExpc3RlbmVyc0Zvck5vZGUodGhpcy5pZCwgY2FsbGJhY2spOwotICAgIH0sCisg
ICAgfQogCi0gICAgYWNjZXNzaWJpbGl0eVByb3BlcnRpZXM6IGZ1bmN0aW9uKGNhbGxiYWNrKQor
ICAgIGFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzKGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgZnVu
Y3Rpb24gYWNjZXNzaWJpbGl0eVByb3BlcnRpZXNDYWxsYmFjayhlcnJvciwgYWNjZXNzaWJpbGl0
eVByb3BlcnRpZXMpCiAgICAgICAgIHsKQEAgLTM5NCw5ICszODgsOSBAQCBXZWJJbnNwZWN0b3Iu
RE9NTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAg
RE9NQWdlbnQuZ2V0QWNjZXNzaWJpbGl0eVByb3BlcnRpZXNGb3JOb2RlKHRoaXMuaWQsIGFjY2Vz
c2liaWxpdHlQcm9wZXJ0aWVzQ2FsbGJhY2suYmluZCh0aGlzKSk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBwYXRoOiBmdW5jdGlvbigpCisgICAgcGF0aCgpCiAgICAgewogICAgICAgICB2YXIgcGF0
aCA9IFtdOwogICAgICAgICB2YXIgbm9kZSA9IHRoaXM7CkBAIC00MDYsOSArNDAwLDkgQEAgV2Vi
SW5zcGVjdG9yLkRPTU5vZGUucHJvdG90eXBlID0gewogICAgICAgICB9CiAgICAgICAgIHBhdGgu
cmV2ZXJzZSgpOwogICAgICAgICByZXR1cm4gcGF0aC5qb2luKCIsIik7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBhcHByb3ByaWF0ZVNlbGVjdG9yRm9yOiBmdW5jdGlvbihqdXN0U2VsZWN0b3IpCisg
ICAgYXBwcm9wcmlhdGVTZWxlY3RvckZvcihqdXN0U2VsZWN0b3IpCiAgICAgewogICAgICAgICB2
YXIgbG93ZXJDYXNlTmFtZSA9IHRoaXMubG9jYWxOYW1lKCkgfHwgdGhpcy5ub2RlTmFtZSgpLnRv
TG93ZXJDYXNlKCk7CiAKQEAgLTQzMiw5ICs0MjYsOSBAQCBXZWJJbnNwZWN0b3IuRE9NTm9kZS5w
cm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm4gbG93ZXJDYXNlTmFtZSArICJbdHlwZT1c
IiIgKyB0aGlzLmdldEF0dHJpYnV0ZSgidHlwZSIpICsgIlwiXSI7CiAKICAgICAgICAgcmV0dXJu
IGxvd2VyQ2FzZU5hbWU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBpc0FuY2VzdG9yOiBmdW5jdGlv
bihub2RlKQorICAgIGlzQW5jZXN0b3Iobm9kZSkKICAgICB7CiAgICAgICAgIGlmICghbm9kZSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTQ0NiwyMiArNDQwLDIyIEBAIFdlYkluc3Bl
Y3Rvci5ET01Ob2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGN1cnJlbnROb2RlID0gY3Vy
cmVudE5vZGUucGFyZW50Tm9kZTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBpc0Rlc2NlbmRhbnQ6IGZ1bmN0aW9uKGRlc2NlbmRhbnQpCisg
ICAgaXNEZXNjZW5kYW50KGRlc2NlbmRhbnQpCiAgICAgewogICAgICAgICByZXR1cm4gZGVzY2Vu
ZGFudCAhPT0gbnVsbCAmJiBkZXNjZW5kYW50LmlzQW5jZXN0b3IodGhpcyk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfc2V0QXR0cmlidXRlc1BheWxvYWQ6IGZ1bmN0aW9uKGF0dHJzKQorICAgIF9z
ZXRBdHRyaWJ1dGVzUGF5bG9hZChhdHRycykKICAgICB7CiAgICAgICAgIHRoaXMuX2F0dHJpYnV0
ZXMgPSBbXTsKICAgICAgICAgdGhpcy5fYXR0cmlidXRlc01hcCA9IHt9OwogICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IGF0dHJzLmxlbmd0aDsgaSArPSAyKQogICAgICAgICAgICAgdGhpcy5f
YWRkQXR0cmlidXRlKGF0dHJzW2ldLCBhdHRyc1tpICsgMV0pOwotICAgIH0sCisgICAgfQogCi0g
ICAgX2luc2VydENoaWxkOiBmdW5jdGlvbihwcmV2LCBwYXlsb2FkKQorICAgIF9pbnNlcnRDaGls
ZChwcmV2LCBwYXlsb2FkKQogICAgIHsKICAgICAgICAgdmFyIG5vZGUgPSBuZXcgV2ViSW5zcGVj
dG9yLkRPTU5vZGUodGhpcy5fZG9tQWdlbnQsIHRoaXMub3duZXJEb2N1bWVudCwgdGhpcy5faXNJ
blNoYWRvd1RyZWUsIHBheWxvYWQpOwogICAgICAgICBpZiAoIXByZXYpIHsKQEAgLTQ3NCwxNiAr
NDY4LDE2IEBAIFdlYkluc3BlY3Rvci5ET01Ob2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAg
IHRoaXMuX2NoaWxkcmVuLnNwbGljZSh0aGlzLl9jaGlsZHJlbi5pbmRleE9mKHByZXYpICsgMSwg
MCwgbm9kZSk7CiAgICAgICAgIHRoaXMuX3JlbnVtYmVyKCk7CiAgICAgICAgIHJldHVybiBub2Rl
OwotICAgIH0sCisgICAgfQogCi0gICAgX3JlbW92ZUNoaWxkOiBmdW5jdGlvbihub2RlKQorICAg
IF9yZW1vdmVDaGlsZChub2RlKQogICAgIHsKICAgICAgICAgdGhpcy5fY2hpbGRyZW4uc3BsaWNl
KHRoaXMuX2NoaWxkcmVuLmluZGV4T2Yobm9kZSksIDEpOwogICAgICAgICBub2RlLnBhcmVudE5v
ZGUgPSBudWxsOwogICAgICAgICB0aGlzLl9yZW51bWJlcigpOwotICAgIH0sCisgICAgfQogCi0g
ICAgX3NldENoaWxkcmVuUGF5bG9hZDogZnVuY3Rpb24ocGF5bG9hZHMpCisgICAgX3NldENoaWxk
cmVuUGF5bG9hZChwYXlsb2FkcykKICAgICB7CiAgICAgICAgIC8vIFdlIHNldCBjaGlsZHJlbiBp
biB0aGUgY29uc3RydWN0b3IuCiAgICAgICAgIGlmICh0aGlzLl9jb250ZW50RG9jdW1lbnQpCkBA
IC00OTYsOSArNDkwLDkgQEAgV2ViSW5zcGVjdG9yLkRPTU5vZGUucHJvdG90eXBlID0gewogICAg
ICAgICAgICAgdGhpcy5fY2hpbGRyZW4ucHVzaChub2RlKTsKICAgICAgICAgfQogICAgICAgICB0
aGlzLl9yZW51bWJlcigpOwotICAgIH0sCisgICAgfQogCi0gICAgX3JlbnVtYmVyOiBmdW5jdGlv
bigpCisgICAgX3JlbnVtYmVyKCkKICAgICB7CiAgICAgICAgIHRoaXMuX2ZpbHRlcmVkQ2hpbGRy
ZW5OZWVkc1VwZGF0aW5nID0gdHJ1ZTsKIApAQCAtNTEzLDQ5ICs1MDcsNDkgQEAgV2ViSW5zcGVj
dG9yLkRPTU5vZGUucHJvdG90eXBlID0gewogICAgICAgICAgICAgY2hpbGQuX3ByZXZpb3VzU2li
bGluZyA9IGkgLSAxID49IDAgPyB0aGlzLl9jaGlsZHJlbltpIC0gMV0gOiBudWxsOwogICAgICAg
ICAgICAgY2hpbGQucGFyZW50Tm9kZSA9IHRoaXM7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0K
IAotICAgIF9hZGRBdHRyaWJ1dGU6IGZ1bmN0aW9uKG5hbWUsIHZhbHVlKQorICAgIF9hZGRBdHRy
aWJ1dGUobmFtZSwgdmFsdWUpCiAgICAgewogICAgICAgICB2YXIgYXR0ciA9IHtuYW1lLCB2YWx1
ZSwgX25vZGU6IHRoaXN9OwogICAgICAgICB0aGlzLl9hdHRyaWJ1dGVzTWFwW25hbWVdID0gYXR0
cjsKICAgICAgICAgdGhpcy5fYXR0cmlidXRlcy5wdXNoKGF0dHIpOwotICAgIH0sCisgICAgfQog
Ci0gICAgX3NldEF0dHJpYnV0ZTogZnVuY3Rpb24obmFtZSwgdmFsdWUpCisgICAgX3NldEF0dHJp
YnV0ZShuYW1lLCB2YWx1ZSkKICAgICB7CiAgICAgICAgIHZhciBhdHRyID0gdGhpcy5fYXR0cmli
dXRlc01hcFtuYW1lXTsKICAgICAgICAgaWYgKGF0dHIpCiAgICAgICAgICAgICBhdHRyLnZhbHVl
ID0gdmFsdWU7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHRoaXMuX2FkZEF0dHJpYnV0ZShu
YW1lLCB2YWx1ZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcmVtb3ZlQXR0cmlidXRlOiBmdW5j
dGlvbihuYW1lKQorICAgIF9yZW1vdmVBdHRyaWJ1dGUobmFtZSkKICAgICB7CiAgICAgICAgIHZh
ciBhdHRyID0gdGhpcy5fYXR0cmlidXRlc01hcFtuYW1lXTsKICAgICAgICAgaWYgKGF0dHIpIHsK
ICAgICAgICAgICAgIHRoaXMuX2F0dHJpYnV0ZXMucmVtb3ZlKGF0dHIpOwogICAgICAgICAgICAg
ZGVsZXRlIHRoaXMuX2F0dHJpYnV0ZXNNYXBbbmFtZV07CiAgICAgICAgIH0KLSAgICB9LAorICAg
IH0KIAotICAgIG1vdmVUbzogZnVuY3Rpb24odGFyZ2V0Tm9kZSwgYW5jaG9yTm9kZSwgY2FsbGJh
Y2spCisgICAgbW92ZVRvKHRhcmdldE5vZGUsIGFuY2hvck5vZGUsIGNhbGxiYWNrKQogICAgIHsK
ICAgICAgICAgRE9NQWdlbnQubW92ZVRvKHRoaXMuaWQsIHRhcmdldE5vZGUuaWQsIGFuY2hvck5v
ZGUgPyBhbmNob3JOb2RlLmlkIDogdW5kZWZpbmVkLCB0aGlzLl9tYWtlVW5kb2FibGVDYWxsYmFj
ayhjYWxsYmFjaykpOwotICAgIH0sCisgICAgfQogCi0gICAgaXNYTUxOb2RlOiBmdW5jdGlvbigp
CisgICAgaXNYTUxOb2RlKCkKICAgICB7CiAgICAgICAgIHJldHVybiAhIXRoaXMub3duZXJEb2N1
bWVudCAmJiAhIXRoaXMub3duZXJEb2N1bWVudC54bWxWZXJzaW9uOwotICAgIH0sCisgICAgfQog
CiAgICAgZ2V0IGVuYWJsZWRQc2V1ZG9DbGFzc2VzKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0
aGlzLl9lbmFibGVkUHNldWRvQ2xhc3NlczsKLSAgICB9LAorICAgIH0KIAotICAgIHNldFBzZXVk
b0NsYXNzRW5hYmxlZDogZnVuY3Rpb24ocHNldWRvQ2xhc3MsIGVuYWJsZWQpCisgICAgc2V0UHNl
dWRvQ2xhc3NFbmFibGVkKHBzZXVkb0NsYXNzLCBlbmFibGVkKQogICAgIHsKICAgICAgICAgdmFy
IHBzZXVkb0NsYXNzZXMgPSB0aGlzLl9lbmFibGVkUHNldWRvQ2xhc3NlczsKICAgICAgICAgaWYg
KGVuYWJsZWQpIHsKQEAgLTU3NSw5ICs1NjksOSBAQCBXZWJJbnNwZWN0b3IuRE9NTm9kZS5wcm90
b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICBDU1NBZ2VudC5mb3JjZVBzZXVkb1N0YXRl
KHRoaXMuaWQsIHBzZXVkb0NsYXNzZXMsIGNoYW5nZWQuYmluZCh0aGlzKSk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfbWFrZVVuZG9hYmxlQ2FsbGJhY2s6IGZ1bmN0aW9uKGNhbGxiYWNrKQorICAg
IF9tYWtlVW5kb2FibGVDYWxsYmFjayhjYWxsYmFjaykKICAgICB7CiAgICAgICAgIHJldHVybiBm
dW5jdGlvbihlcnJvcikKICAgICAgICAgewpAQCAtNTkwLDQgKzU4NCw4IEBAIFdlYkluc3BlY3Rv
ci5ET01Ob2RlLnByb3RvdHlwZSA9IHsKICAgICB9CiB9OwogCi1XZWJJbnNwZWN0b3IuRE9NTm9k
ZS5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CitX
ZWJJbnNwZWN0b3IuRE9NTm9kZS5FdmVudCA9IHsKKyAgICBFbmFibGVkUHNldWRvQ2xhc3Nlc0No
YW5nZWQ6ICJkb20tbm9kZS1lbmFibGVkLXBzZXVkby1jbGFzc2VzLWRpZC1jaGFuZ2UiLAorICAg
IEF0dHJpYnV0ZU1vZGlmaWVkOiAiZG9tLW5vZGUtYXR0cmlidXRlLW1vZGlmaWVkIiwKKyAgICBB
dHRyaWJ1dGVSZW1vdmVkOiAiZG9tLW5vZGUtYXR0cmlidXRlLXJlbW92ZWQiCit9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0RPTU5vZGVT
dHlsZXMuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRE9N
Tm9kZVN0eWxlcy5qcwppbmRleCA3MjUyNjcxLi44NmRlYzU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRE9NTm9kZVN0eWxlcy5qcworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRE9NTm9kZVN0eWxl
cy5qcwpAQCAtMjMsNjAgKzIzLDUyIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkRPTU5vZGVTdHlsZXMgPSBmdW5jdGlvbihub2RlKQor
V2ViSW5zcGVjdG9yLkRPTU5vZGVTdHlsZXMgPSBjbGFzcyBET01Ob2RlU3R5bGVzIGV4dGVuZHMg
V2ViSW5zcGVjdG9yLk9iamVjdAogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlz
KTsKKyAgICBjb25zdHJ1Y3Rvcihub2RlKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKIAotICAg
IGNvbnNvbGUuYXNzZXJ0KG5vZGUpOwotICAgIHRoaXMuX25vZGUgPSBub2RlIHx8IG51bGw7Cisg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KG5vZGUpOworICAgICAgICB0aGlzLl9ub2RlID0gbm9kZSB8
fCBudWxsOwogCi0gICAgdGhpcy5fcnVsZXNNYXAgPSB7fTsKLSAgICB0aGlzLl9zdHlsZURlY2xh
cmF0aW9uc01hcCA9IHt9OworICAgICAgICB0aGlzLl9ydWxlc01hcCA9IHt9OworICAgICAgICB0
aGlzLl9zdHlsZURlY2xhcmF0aW9uc01hcCA9IHt9OwogCi0gICAgdGhpcy5fbWF0Y2hlZFJ1bGVz
ID0gW107Ci0gICAgdGhpcy5faW5oZXJpdGVkUnVsZXMgPSBbXTsKLSAgICB0aGlzLl9wc2V1ZG9F
bGVtZW50cyA9IHt9OwotICAgIHRoaXMuX2lubGluZVN0eWxlID0gbnVsbDsKLSAgICB0aGlzLl9h
dHRyaWJ1dGVzU3R5bGUgPSBudWxsOwotICAgIHRoaXMuX2NvbXB1dGVkU3R5bGUgPSBudWxsOwot
ICAgIHRoaXMuX29yZGVyZWRTdHlsZXMgPSBbXTsKLSAgICB0aGlzLl9zdHlsZXNOZWVkaW5nVGV4
dENvbW1pdGVkID0gW107CisgICAgICAgIHRoaXMuX21hdGNoZWRSdWxlcyA9IFtdOworICAgICAg
ICB0aGlzLl9pbmhlcml0ZWRSdWxlcyA9IFtdOworICAgICAgICB0aGlzLl9wc2V1ZG9FbGVtZW50
cyA9IHt9OworICAgICAgICB0aGlzLl9pbmxpbmVTdHlsZSA9IG51bGw7CisgICAgICAgIHRoaXMu
X2F0dHJpYnV0ZXNTdHlsZSA9IG51bGw7CisgICAgICAgIHRoaXMuX2NvbXB1dGVkU3R5bGUgPSBu
dWxsOworICAgICAgICB0aGlzLl9vcmRlcmVkU3R5bGVzID0gW107CisgICAgICAgIHRoaXMuX3N0
eWxlc05lZWRpbmdUZXh0Q29tbWl0ZWQgPSBbXTsKIAotICAgIHRoaXMuX3Byb3BlcnR5TmFtZVRv
RWZmZWN0aXZlUHJvcGVydHlNYXAgPSB7fTsKKyAgICAgICAgdGhpcy5fcHJvcGVydHlOYW1lVG9F
ZmZlY3RpdmVQcm9wZXJ0eU1hcCA9IHt9OwogCi0gICAgdGhpcy5yZWZyZXNoKCk7Ci19OwotCi1X
ZWJJbnNwZWN0b3IuT2JqZWN0LmFkZENvbnN0cnVjdG9yRnVuY3Rpb25zKFdlYkluc3BlY3Rvci5E
T01Ob2RlU3R5bGVzKTsKLQotV2ViSW5zcGVjdG9yLkRPTU5vZGVTdHlsZXMuRXZlbnQgPSB7Ci0g
ICAgTmVlZHNSZWZyZXNoOiAiZG9tLW5vZGUtc3R5bGVzLW5lZWRzLXJlZnJlc2giLAotICAgIFJl
ZnJlc2hlZDogImRvbS1ub2RlLXN0eWxlcy1yZWZyZXNoZWQiCi19OwotCi1XZWJJbnNwZWN0b3Iu
RE9NTm9kZVN0eWxlcy5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rv
ci5ET01Ob2RlU3R5bGVzLAorICAgICAgICB0aGlzLnJlZnJlc2goKTsKKyAgICB9CiAKICAgICAv
LyBQdWJsaWMKIAogICAgIGdldCBub2RlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9u
b2RlOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IG5lZWRzUmVmcmVzaCgpCiAgICAgewogICAg
ICAgICByZXR1cm4gdGhpcy5fcmVmcmVzaFBlbmRpbmcgfHwgdGhpcy5fbmVlZHNSZWZyZXNoOwot
ICAgIH0sCisgICAgfQogCi0gICAgcmVmcmVzaElmTmVlZGVkOiBmdW5jdGlvbigpCisgICAgcmVm
cmVzaElmTmVlZGVkKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fbmVlZHNSZWZyZXNoKQog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB0aGlzLnJlZnJlc2goKTsKLSAgICB9LAorICAg
IH0KIAotICAgIHJlZnJlc2g6IGZ1bmN0aW9uKCkKKyAgICByZWZyZXNoKCkKICAgICB7CiAgICAg
ICAgIGlmICh0aGlzLl9yZWZyZXNoUGVuZGluZykKICAgICAgICAgICAgIHJldHVybjsKQEAgLTI0
Niw5ICsyMzgsOSBAQCBXZWJJbnNwZWN0b3IuRE9NTm9kZVN0eWxlcy5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIENTU0FnZW50LmdldE1hdGNoZWRTdHlsZXNGb3JOb2RlLmludm9rZSh7bm9kZUlkOiB0
aGlzLl9ub2RlLmlkLCBpbmNsdWRlUHNldWRvOiB0cnVlLCBpbmNsdWRlSW5oZXJpdGVkOiB0cnVl
fSwgZmV0Y2hlZE1hdGNoZWRTdHlsZXMuYmluZCh0aGlzKSk7CiAgICAgICAgIENTU0FnZW50Lmdl
dElubGluZVN0eWxlc0Zvck5vZGUuaW52b2tlKHtub2RlSWQ6IHRoaXMuX25vZGUuaWR9LCBmZXRj
aGVkSW5saW5lU3R5bGVzLmJpbmQodGhpcykpOwogICAgICAgICBDU1NBZ2VudC5nZXRDb21wdXRl
ZFN0eWxlRm9yTm9kZS5pbnZva2Uoe25vZGVJZDogdGhpcy5fbm9kZS5pZH0sIGZldGNoZWRDb21w
dXRlZFN0eWxlLmJpbmQodGhpcykpOwotICAgIH0sCisgICAgfQogCi0gICAgYWRkRW1wdHlSdWxl
OiBmdW5jdGlvbigpCisgICAgYWRkRW1wdHlSdWxlKCkKICAgICB7CiAgICAgICAgIGZ1bmN0aW9u
IGFkZGVkUnVsZShlcnJvciwgcnVsZVBheWxvYWQpCiAgICAgICAgIHsKQEAgLTI2Myw2MyArMjU1
LDYzIEBAIFdlYkluc3BlY3Rvci5ET01Ob2RlU3R5bGVzLnByb3RvdHlwZSA9IHsKICAgICAgICAg
c2VsZWN0b3IgPSB0aGlzLl9ub2RlLmFwcHJvcHJpYXRlU2VsZWN0b3JGb3IodHJ1ZSk7CiAKICAg
ICAgICAgQ1NTQWdlbnQuYWRkUnVsZS5pbnZva2Uoe2NvbnRleHROb2RlSWQ6IHRoaXMuX25vZGUu
aWQsIHNlbGVjdG9yfSwgYWRkZWRSdWxlLmJpbmQodGhpcykpOwotICAgIH0sCisgICAgfQogCiAg
ICAgZ2V0IG1hdGNoZWRSdWxlcygpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fbWF0Y2hl
ZFJ1bGVzOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGluaGVyaXRlZFJ1bGVzKCkKICAgICB7
CiAgICAgICAgIHJldHVybiB0aGlzLl9pbmhlcml0ZWRSdWxlczsKLSAgICB9LAorICAgIH0KIAog
ICAgIGdldCBpbmxpbmVTdHlsZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5faW5saW5l
U3R5bGU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgYXR0cmlidXRlc1N0eWxlKCkKICAgICB7
CiAgICAgICAgIHJldHVybiB0aGlzLl9hdHRyaWJ1dGVzU3R5bGU7Ci0gICAgfSwKKyAgICB9CiAK
ICAgICBnZXQgcHNldWRvRWxlbWVudHMoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3Bz
ZXVkb0VsZW1lbnRzOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGNvbXB1dGVkU3R5bGUoKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbXB1dGVkU3R5bGU7Ci0gICAgfSwKKyAgICB9
CiAKICAgICBnZXQgb3JkZXJlZFN0eWxlcygpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5f
b3JkZXJlZFN0eWxlczsKLSAgICB9LAorICAgIH0KIAotICAgIGVmZmVjdGl2ZVByb3BlcnR5Rm9y
TmFtZTogZnVuY3Rpb24obmFtZSkKKyAgICBlZmZlY3RpdmVQcm9wZXJ0eUZvck5hbWUobmFtZSkK
ICAgICB7CiAgICAgICAgIHZhciBjYW5vbmljYWxOYW1lID0gV2ViSW5zcGVjdG9yLmNzc1N0eWxl
TWFuYWdlci5jYW5vbmljYWxOYW1lRm9yUHJvcGVydHlOYW1lKG5hbWUpOwogICAgICAgICByZXR1
cm4gdGhpcy5fcHJvcGVydHlOYW1lVG9FZmZlY3RpdmVQcm9wZXJ0eU1hcFtjYW5vbmljYWxOYW1l
XSB8fCBudWxsOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJvdGVjdGVkCiAKLSAgICBtZWRp
YVF1ZXJ5UmVzdWx0RGlkQ2hhbmdlOiBmdW5jdGlvbigpCisgICAgbWVkaWFRdWVyeVJlc3VsdERp
ZENoYW5nZSgpCiAgICAgewogICAgICAgICB0aGlzLl9tYXJrQXNOZWVkc1JlZnJlc2goKTsKLSAg
ICB9LAorICAgIH0KIAotICAgIHBzZXVkb0NsYXNzZXNEaWRDaGFuZ2U6IGZ1bmN0aW9uKG5vZGUp
CisgICAgcHNldWRvQ2xhc3Nlc0RpZENoYW5nZShub2RlKQogICAgIHsKICAgICAgICAgdGhpcy5f
aW5jbHVkZVVzZXJBZ2VudFJ1bGVzT25OZXh0UmVmcmVzaCA9IHRydWU7CiAgICAgICAgIHRoaXMu
X21hcmtBc05lZWRzUmVmcmVzaCgpOwotICAgIH0sCisgICAgfQogCi0gICAgYXR0cmlidXRlRGlk
Q2hhbmdlOiBmdW5jdGlvbihub2RlLCBhdHRyaWJ1dGVOYW1lKQorICAgIGF0dHJpYnV0ZURpZENo
YW5nZShub2RlLCBhdHRyaWJ1dGVOYW1lKQogICAgIHsKICAgICAgICAgLy8gSWdub3JlIHRoZSBh
dHRyaWJ1dGUgd2Uga25vdyB3ZSBqdXN0IGNoYW5nZWQgYW5kIGhhbmRsZWQgYWJvdmUuCiAgICAg
ICAgIGlmICh0aGlzLl9pZ25vcmVOZXh0U3R5bGVBdHRyaWJ1dGVEaWRDaGFuZ2VFdmVudCAmJiBu
b2RlID09PSB0aGlzLl9ub2RlICYmIGF0dHJpYnV0ZU5hbWUgPT09ICJzdHlsZSIpIHsKQEAgLTMy
OCw5ICszMjAsOSBAQCBXZWJJbnNwZWN0b3IuRE9NTm9kZVN0eWxlcy5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIH0KIAogICAgICAgICB0aGlzLl9tYXJrQXNOZWVkc1JlZnJlc2goKTsKLSAgICB9LAor
ICAgIH0KIAotICAgIGNoYW5nZVJ1bGVTZWxlY3RvcjogZnVuY3Rpb24ocnVsZSwgc2VsZWN0b3Ip
CisgICAgY2hhbmdlUnVsZVNlbGVjdG9yKHJ1bGUsIHNlbGVjdG9yKQogICAgIHsKICAgICAgICAg
c2VsZWN0b3IgPSBzZWxlY3RvciB8fCAiIjsKIApAQCAtMzQ3LDQxICszMzksNDEgQEAgV2ViSW5z
cGVjdG9yLkRPTU5vZGVTdHlsZXMucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9pZ25vcmVO
ZXh0Q29udGVudERpZENoYW5nZUZvclN0eWxlU2hlZXQgPSBydWxlLm93bmVyU3R5bGVTaGVldDsK
IAogICAgICAgICBDU1NBZ2VudC5zZXRSdWxlU2VsZWN0b3IocnVsZS5pZCwgc2VsZWN0b3IsIHJ1
bGVTZWxlY3RvckNoYW5nZWQuYmluZCh0aGlzKSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjaGFu
Z2VTdHlsZVRleHQ6IGZ1bmN0aW9uKHN0eWxlLCB0ZXh0KQorICAgIGNoYW5nZVN0eWxlVGV4dChz
dHlsZSwgdGV4dCkKICAgICB7CiAgICAgICAgIGlmICghc3R5bGUub3duZXJTdHlsZVNoZWV0IHx8
ICFzdHlsZS5zdHlsZVNoZWV0VGV4dFJhbmdlKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAg
ICAgIHRleHQgPSB0ZXh0IHx8ICIiOwogCisgICAgICAgIGZ1bmN0aW9uIHN0eWxlQ2hhbmdlZChl
cnJvciwgc3R5bGVQYXlsb2FkKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoZXJyb3IpCisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgdGhpcy5yZWZyZXNoKCk7CisgICAg
ICAgIH0KKwogICAgICAgICBpZiAoQ1NTQWdlbnQuc2V0U3R5bGVUZXh0KSB7Ci0gICAgICAgICAg
ICBmdW5jdGlvbiBzdHlsZUNoYW5nZWQoZXJyb3IsIHN0eWxlUGF5bG9hZCkKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICBpZiAoZXJyb3IpCi0gICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgICAgICAgICB0aGlzLnJlZnJlc2goKTsKLSAgICAgICAgICAgIH0KLQogICAg
ICAgICAgICAgQ1NTQWdlbnQuc2V0U3R5bGVUZXh0KHN0eWxlLmlkLCB0ZXh0LCBzdHlsZUNoYW5n
ZWQuYmluZCh0aGlzKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAg
ICAvLyBDT01QQVRJQklMSVRZIChpT1MgNik6IENTU0FnZW50LnNldFN0eWxlVGV4dCB3YXMgbm90
IGF2YWlsYWJsZSBpbiBpT1MgNi4KIAorICAgICAgICBmdW5jdGlvbiBhdHRyaWJ1dGVDaGFuZ2Vk
KGVycm9yKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoZXJyb3IpCisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgdGhpcy5yZWZyZXNoKCk7CisgICAgICAgIH0KKwogICAg
ICAgICAvLyBTZXR0aW5nIHRoZSB0ZXh0IG9uIENTU1N0eWxlU2hlZXQgZm9yIGlubGluZSBzdHls
ZXMgY2F1c2VzIGEgY3Jhc2guIGh0dHBzOi8vd2Via2l0Lm9yZy9iLzExMDM1OQogICAgICAgICAv
LyBTbyB3ZSBqdXN0IHNldCB0aGUgc3R5bGUgYXR0cmlidXRlIHRvIGdldCB0aGUgc2FtZSBhZmZl
Y3QuIFRoaXMgYWxzbyBhdm9pZHMgU291cmNlQ29kZVJldmlzaW9ucy4KICAgICAgICAgaWYgKHN0
eWxlLnR5cGUgPT09IFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uLlR5cGUuSW5saW5l
KSB7CiAgICAgICAgICAgICB0ZXh0ID0gdGV4dC50cmltKCk7CiAKLSAgICAgICAgICAgIGZ1bmN0
aW9uIGF0dHJpYnV0ZUNoYW5nZWQoZXJyb3IpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgaWYgKGVycm9yKQotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAg
ICAgdGhpcy5yZWZyZXNoKCk7Ci0gICAgICAgICAgICB9Ci0KICAgICAgICAgICAgIHRoaXMuX2ln
bm9yZU5leHRTdHlsZUF0dHJpYnV0ZURpZENoYW5nZUV2ZW50ID0gdHJ1ZTsKIAogICAgICAgICAg
ICAgaWYgKHRleHQpCkBAIC00NDksMTEgKzQ0MSwxMSBAQCBXZWJJbnNwZWN0b3IuRE9NTm9kZVN0
eWxlcy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2lnbm9yZU5leHRDb250ZW50RGlkQ2hh
bmdlRm9yU3R5bGVTaGVldCA9IHN0eWxlLm93bmVyU3R5bGVTaGVldDsKIAogICAgICAgICBzdHls
ZS5vd25lclN0eWxlU2hlZXQucmVxdWVzdENvbnRlbnQoKS50aGVuKGZldGNoZWRTdHlsZVNoZWV0
Q29udGVudC5iaW5kKHRoaXMpKTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAot
ICAgIF9jcmVhdGVTb3VyY2VDb2RlTG9jYXRpb246IGZ1bmN0aW9uKHNvdXJjZVVSTCwgc291cmNl
TGluZSwgc291cmNlQ29sdW1uKQorICAgIF9jcmVhdGVTb3VyY2VDb2RlTG9jYXRpb24oc291cmNl
VVJMLCBzb3VyY2VMaW5lLCBzb3VyY2VDb2x1bW4pCiAgICAgewogICAgICAgICBpZiAoIXNvdXJj
ZVVSTCkKICAgICAgICAgICAgIHJldHVybiBudWxsOwpAQCAtNDc3LDkgKzQ2OSw5IEBAIFdlYklu
c3BlY3Rvci5ET01Ob2RlU3R5bGVzLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybiBu
dWxsOwogCiAgICAgICAgIHJldHVybiBzb3VyY2VDb2RlLmNyZWF0ZVNvdXJjZUNvZGVMb2NhdGlv
bihzb3VyY2VMaW5lIHx8IDAsIHNvdXJjZUNvbHVtbiB8fCAwKTsKLSAgICB9LAorICAgIH0KIAot
ICAgIF9wYXJzZVNvdXJjZVJhbmdlUGF5bG9hZDogZnVuY3Rpb24ocGF5bG9hZCwgdGV4dCkKKyAg
ICBfcGFyc2VTb3VyY2VSYW5nZVBheWxvYWQocGF5bG9hZCwgdGV4dCkKICAgICB7CiAgICAgICAg
IGlmICghcGF5bG9hZCkKICAgICAgICAgICAgIHJldHVybiBudWxsOwpAQCAtNDk0LDkgKzQ4Niw5
IEBAIFdlYkluc3BlY3Rvci5ET01Ob2RlU3R5bGVzLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQog
CiAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlRleHRSYW5nZShwYXlsb2FkLnN0YXJ0
TGluZSwgcGF5bG9hZC5zdGFydENvbHVtbiwgcGF5bG9hZC5lbmRMaW5lLCBwYXlsb2FkLmVuZENv
bHVtbik7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcGFyc2VTdHlsZVByb3BlcnR5UGF5bG9hZDog
ZnVuY3Rpb24ocGF5bG9hZCwgaW5kZXgsIHN0eWxlRGVjbGFyYXRpb24sIHN0eWxlVGV4dCkKKyAg
ICBfcGFyc2VTdHlsZVByb3BlcnR5UGF5bG9hZChwYXlsb2FkLCBpbmRleCwgc3R5bGVEZWNsYXJh
dGlvbiwgc3R5bGVUZXh0KQogICAgIHsKICAgICAgICAgdmFyIHRleHQgPSBwYXlsb2FkLnRleHQg
fHwgIiI7CiAgICAgICAgIHZhciBuYW1lID0gcGF5bG9hZC5uYW1lOwpAQCAtNTY0LDkgKzU1Niw5
IEBAIFdlYkluc3BlY3Rvci5ET01Ob2RlU3R5bGVzLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQog
CiAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkNTU1Byb3BlcnR5KGluZGV4LCB0ZXh0
LCBuYW1lLCB2YWx1ZSwgcHJpb3JpdHksIGVuYWJsZWQsIG92ZXJyaWRkZW4sIGltcGxpY2l0LCBh
bm9ueW1vdXMsIHZhbGlkLCBzdHlsZVNoZWV0VGV4dFJhbmdlLCBzdHlsZURlY2xhcmF0aW9uVGV4
dFJhbmdlKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9wYXJzZVN0eWxlRGVjbGFyYXRpb25QYXls
b2FkOiBmdW5jdGlvbihwYXlsb2FkLCBub2RlLCBpbmhlcml0ZWQsIHR5cGUsIHJ1bGUsIHVwZGF0
ZUFsbFN0eWxlcykKKyAgICBfcGFyc2VTdHlsZURlY2xhcmF0aW9uUGF5bG9hZChwYXlsb2FkLCBu
b2RlLCBpbmhlcml0ZWQsIHR5cGUsIHJ1bGUsIHVwZGF0ZUFsbFN0eWxlcykKICAgICB7CiAgICAg
ICAgIGlmICghcGF5bG9hZCkKICAgICAgICAgICAgIHJldHVybiBudWxsOwpAQCAtNjc0LDkgKzY2
Niw5IEBAIFdlYkluc3BlY3Rvci5ET01Ob2RlU3R5bGVzLnByb3RvdHlwZSA9IHsKICAgICAgICAg
fQogCiAgICAgICAgIHJldHVybiBzdHlsZURlY2xhcmF0aW9uOwotICAgIH0sCisgICAgfQogCi0g
ICAgX3BhcnNlU2VsZWN0b3JMaXN0UGF5bG9hZDogZnVuY3Rpb24oc2VsZWN0b3JMaXN0KQorICAg
IF9wYXJzZVNlbGVjdG9yTGlzdFBheWxvYWQoc2VsZWN0b3JMaXN0KQogICAgIHsKICAgICAgICAg
Ly8gQ09NUEFUSUJJTElUWSAoaU9TIDYpOiBUaGUgcGF5bG9hZCBkaWQgbm90IGhhdmUgJ3NlbGVj
dG9yTGlzdCcuCiAgICAgICAgIGlmICghc2VsZWN0b3JMaXN0KQpAQCAtNjk3LDkgKzY4OSw5IEBA
IFdlYkluc3BlY3Rvci5ET01Ob2RlU3R5bGVzLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJu
IHNlbGVjdG9ycy5tYXAoZnVuY3Rpb24oc2VsZWN0b3JQYXlsb2FkKSB7CiAgICAgICAgICAgICBy
ZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvcihzZWxlY3RvclBheWxvYWQudGV4dCwg
c2VsZWN0b3JQYXlsb2FkLnNwZWNpZmljaXR5LCBzZWxlY3RvclBheWxvYWQuZHluYW1pYyk7CiAg
ICAgICAgIH0pOwotICAgIH0sCisgICAgfQogCi0gICAgX3BhcnNlUnVsZVBheWxvYWQ6IGZ1bmN0
aW9uKHBheWxvYWQsIG1hdGNoZWRTZWxlY3RvckluZGljZXMsIG5vZGUsIGluaGVyaXRlZCwgcnVs
ZU9jY3VycmVuY2VzKQorICAgIF9wYXJzZVJ1bGVQYXlsb2FkKHBheWxvYWQsIG1hdGNoZWRTZWxl
Y3RvckluZGljZXMsIG5vZGUsIGluaGVyaXRlZCwgcnVsZU9jY3VycmVuY2VzKQogICAgIHsKICAg
ICAgICAgaWYgKCFwYXlsb2FkKQogICAgICAgICAgICAgcmV0dXJuIG51bGw7CkBAIC04MTIsMTUg
KzgwNCwxNSBAQCBXZWJJbnNwZWN0b3IuRE9NTm9kZVN0eWxlcy5wcm90b3R5cGUgPSB7CiAgICAg
ICAgICAgICB0aGlzLl9ydWxlc01hcFttYXBLZXldID0gcnVsZTsKIAogICAgICAgICByZXR1cm4g
cnVsZTsKLSAgICB9LAorICAgIH0KIAotICAgIF9tYXJrQXNOZWVkc1JlZnJlc2g6IGZ1bmN0aW9u
KCkKKyAgICBfbWFya0FzTmVlZHNSZWZyZXNoKCkKICAgICB7CiAgICAgICAgIHRoaXMuX25lZWRz
UmVmcmVzaCA9IHRydWU7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdl
Ykluc3BlY3Rvci5ET01Ob2RlU3R5bGVzLkV2ZW50Lk5lZWRzUmVmcmVzaCk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfc3R5bGVTaGVldENvbnRlbnREaWRDaGFuZ2U6IGZ1bmN0aW9uKGV2ZW50KQor
ICAgIF9zdHlsZVNoZWV0Q29udGVudERpZENoYW5nZShldmVudCkKICAgICB7CiAgICAgICAgIHZh
ciBzdHlsZVNoZWV0ID0gZXZlbnQudGFyZ2V0OwogICAgICAgICBjb25zb2xlLmFzc2VydChzdHls
ZVNoZWV0KTsKQEAgLTgzNCw5ICs4MjYsOSBAQCBXZWJJbnNwZWN0b3IuRE9NTm9kZVN0eWxlcy5w
cm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICB0aGlzLl9tYXJrQXNOZWVkc1JlZnJl
c2goKTsKLSAgICB9LAorICAgIH0KIAotICAgIF91cGRhdGVTdHlsZUNhc2NhZGU6IGZ1bmN0aW9u
KCkKKyAgICBfdXBkYXRlU3R5bGVDYXNjYWRlKCkKICAgICB7CiAgICAgICAgIHZhciBjYXNjYWRl
T3JkZXJlZFN0eWxlRGVjbGFyYXRpb25zID0gdGhpcy5fY29sbGVjdFN0eWxlc0luQ2FzY2FkZU9y
ZGVyKHRoaXMuX21hdGNoZWRSdWxlcywgdGhpcy5faW5saW5lU3R5bGUsIHRoaXMuX2F0dHJpYnV0
ZXNTdHlsZSk7CiAKQEAgLTg1OSw5ICs4NTEsOSBAQCBXZWJJbnNwZWN0b3IuRE9NTm9kZVN0eWxl
cy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9tYXJrT3ZlcnJpZGRlblByb3BlcnRp
ZXMocHNldWRvRWxlbWVudEluZm8ub3JkZXJlZFN0eWxlcyk7CiAgICAgICAgICAgICB0aGlzLl9h
c3NvY2lhdGVSZWxhdGVkUHJvcGVydGllcyhwc2V1ZG9FbGVtZW50SW5mby5vcmRlcmVkU3R5bGVz
KTsKICAgICAgICAgfQotICAgIH0sCisgICAgfQogCi0gICAgX2NvbGxlY3RTdHlsZXNJbkNhc2Nh
ZGVPcmRlcjogZnVuY3Rpb24obWF0Y2hlZFJ1bGVzLCBpbmxpbmVTdHlsZSwgYXR0cmlidXRlc1N0
eWxlKQorICAgIF9jb2xsZWN0U3R5bGVzSW5DYXNjYWRlT3JkZXIobWF0Y2hlZFJ1bGVzLCBpbmxp
bmVTdHlsZSwgYXR0cmlidXRlc1N0eWxlKQogICAgIHsKICAgICAgICAgdmFyIHJlc3VsdCA9IFtd
OwogCkBAIC04OTcsOSArODg5LDkgQEAgV2ViSW5zcGVjdG9yLkRPTU5vZGVTdHlsZXMucHJvdG90
eXBlID0gewogICAgICAgICByZXN1bHQgPSByZXN1bHQuY29uY2F0KHVzZXJBbmRVc2VyQWdlbnRT
dHlsZXMpOwogCiAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBf
bWFya092ZXJyaWRkZW5Qcm9wZXJ0aWVzOiBmdW5jdGlvbihzdHlsZXMsIHByb3BlcnR5TmFtZVRv
RWZmZWN0aXZlUHJvcGVydHkpCisgICAgX21hcmtPdmVycmlkZGVuUHJvcGVydGllcyhzdHlsZXMs
IHByb3BlcnR5TmFtZVRvRWZmZWN0aXZlUHJvcGVydHkpCiAgICAgewogICAgICAgICBwcm9wZXJ0
eU5hbWVUb0VmZmVjdGl2ZVByb3BlcnR5ID0gcHJvcGVydHlOYW1lVG9FZmZlY3RpdmVQcm9wZXJ0
eSB8fCB7fTsKIApAQCAtOTQxLDkgKzkzMyw5IEBAIFdlYkluc3BlY3Rvci5ET01Ob2RlU3R5bGVz
LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVUb0VmZmVjdGl2ZVBy
b3BlcnR5W2Nhbm9uaWNhbE5hbWVdID0gcHJvcGVydHk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KLSAgICB9LAorICAgIH0KIAotICAgIF9hc3NvY2lhdGVSZWxhdGVkUHJvcGVydGllczogZnVu
Y3Rpb24oc3R5bGVzLCBwcm9wZXJ0eU5hbWVUb0VmZmVjdGl2ZVByb3BlcnR5KQorICAgIF9hc3Nv
Y2lhdGVSZWxhdGVkUHJvcGVydGllcyhzdHlsZXMsIHByb3BlcnR5TmFtZVRvRWZmZWN0aXZlUHJv
cGVydHkpCiAgICAgewogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0eWxlcy5sZW5ndGg7
ICsraSkgewogICAgICAgICAgICAgdmFyIHByb3BlcnRpZXMgPSBzdHlsZXNbaV0ucHJvcGVydGll
czsKQEAgLTEwMDEsNCArOTkzLDcgQEAgV2ViSW5zcGVjdG9yLkRPTU5vZGVTdHlsZXMucHJvdG90
eXBlID0gewogICAgIH0KIH07CiAKLVdlYkluc3BlY3Rvci5ET01Ob2RlU3R5bGVzLnByb3RvdHlw
ZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsKK1dlYkluc3BlY3Rv
ci5ET01Ob2RlU3R5bGVzLkV2ZW50ID0geworICAgIE5lZWRzUmVmcmVzaDogImRvbS1ub2RlLXN0
eWxlcy1uZWVkcy1yZWZyZXNoIiwKKyAgICBSZWZyZXNoZWQ6ICJkb20tbm9kZS1zdHlsZXMtcmVm
cmVzaGVkIgorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01vZGVscy9ET01TZWFyY2hNYXRjaE9iamVjdC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL01vZGVscy9ET01TZWFyY2hNYXRjaE9iamVjdC5qcwppbmRleCBlMTQ3
MDI1Li45NmUyYmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Nb2RlbHMvRE9NU2VhcmNoTWF0Y2hPYmplY3QuanMKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0RPTVNlYXJjaE1hdGNoT2JqZWN0LmpzCkBAIC0y
Myw1MiArMjMsODcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
Ci1XZWJJbnNwZWN0b3IuRE9NU2VhcmNoTWF0Y2hPYmplY3QgPSBmdW5jdGlvbihyZXNvdXJjZSwg
ZG9tTm9kZSwgdGl0bGUsIHNlYXJjaFRlcm0sIHRleHRSYW5nZSkKK1dlYkluc3BlY3Rvci5ET01T
ZWFyY2hNYXRjaE9iamVjdCA9IGNsYXNzIERPTVNlYXJjaE1hdGNoT2JqZWN0IGV4dGVuZHMgV2Vi
SW5zcGVjdG9yLk9iamVjdAogewotICAgIGNvbnNvbGUuYXNzZXJ0KHJlc291cmNlIGluc3RhbmNl
b2YgV2ViSW5zcGVjdG9yLlJlc291cmNlKTsKLSAgICBjb25zb2xlLmFzc2VydChkb21Ob2RlIGlu
c3RhbmNlb2YgV2ViSW5zcGVjdG9yLkRPTU5vZGUpOwotCi0gICAgV2ViSW5zcGVjdG9yLk9iamVj
dC5jYWxsKHRoaXMpOwotCi0gICAgdGhpcy5fcmVzb3VyY2UgPSByZXNvdXJjZTsKLSAgICB0aGlz
Ll9kb21Ob2RlID0gZG9tTm9kZTsKLSAgICB0aGlzLl90aXRsZSA9IHRpdGxlOwotICAgIHRoaXMu
X3NlYXJjaFRlcm0gPSBzZWFyY2hUZXJtOwotICAgIHRoaXMuX3NvdXJjZUNvZGVUZXh0UmFuZ2Ug
PSByZXNvdXJjZS5jcmVhdGVTb3VyY2VDb2RlVGV4dFJhbmdlKHRleHRSYW5nZSk7Ci19OwotCi1X
ZWJJbnNwZWN0b3IuRE9NU2VhcmNoTWF0Y2hPYmplY3QuRE9NTWF0Y2hFbGVtZW50SWNvblN0eWxl
Q2xhc3NOYW1lID0gImRvbS1tYXRjaC1lbGVtZW50LWljb24iOwotV2ViSW5zcGVjdG9yLkRPTVNl
YXJjaE1hdGNoT2JqZWN0LkRPTU1hdGNoVGV4dE5vZGVJY29uU3R5bGVDbGFzc05hbWUgPSAiZG9t
LW1hdGNoLXRleHQtbm9kZS1pY29uIjsKLVdlYkluc3BlY3Rvci5ET01TZWFyY2hNYXRjaE9iamVj
dC5ET01NYXRjaENvbW1lbnRJY29uU3R5bGVDbGFzc05hbWUgPSAiZG9tLW1hdGNoLWNvbW1lbnQt
aWNvbiI7Ci1XZWJJbnNwZWN0b3IuRE9NU2VhcmNoTWF0Y2hPYmplY3QuRE9NTWF0Y2hEb2N1bWVu
dFR5cGVJY29uU3R5bGVDbGFzc05hbWUgPSAiZG9tLW1hdGNoLWRvY3VtZW50LXR5cGUtaWNvbiI7
Ci1XZWJJbnNwZWN0b3IuRE9NU2VhcmNoTWF0Y2hPYmplY3QuRE9NTWF0Y2hDaGFyYWN0ZXJEYXRh
SWNvblN0eWxlQ2xhc3NOYW1lID0gImRvbS1tYXRjaC1jaGFyYWN0ZXItZGF0YS1pY29uIjsKLVdl
Ykluc3BlY3Rvci5ET01TZWFyY2hNYXRjaE9iamVjdC5ET01NYXRjaE5vZGVJY29uU3R5bGVDbGFz
c05hbWUgPSAiZG9tLW1hdGNoLW5vZGUtaWNvbiI7Ci0KLVdlYkluc3BlY3Rvci5ET01TZWFyY2hN
YXRjaE9iamVjdC5UeXBlSWRlbnRpZmllciA9ICJkb20tc2VhcmNoLW1hdGNoLW9iamVjdCI7Ci1X
ZWJJbnNwZWN0b3IuRE9NU2VhcmNoTWF0Y2hPYmplY3QuVVJMQ29va2llS2V5ID0gInJlc291cmNl
LXVybCI7Ci1XZWJJbnNwZWN0b3IuRE9NU2VhcmNoTWF0Y2hPYmplY3QuVGl0bGVLZXkgPSAidGl0
bGUiOwotV2ViSW5zcGVjdG9yLkRPTVNlYXJjaE1hdGNoT2JqZWN0LlRleHRSYW5nZUtleSA9ICJ0
ZXh0LXJhbmdlIjsKLQotV2ViSW5zcGVjdG9yLkRPTVNlYXJjaE1hdGNoT2JqZWN0LnByb3RvdHlw
ZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkRPTVNlYXJjaE1hdGNoT2JqZWN0
LAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGUsCisgICAgY29u
c3RydWN0b3IocmVzb3VyY2UsIGRvbU5vZGUsIHRpdGxlLCBzZWFyY2hUZXJtLCB0ZXh0UmFuZ2Up
CisgICAgeworICAgICAgICBzdXBlcigpOworCisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJlc291
cmNlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlc291cmNlKTsKKyAgICAgICAgY29uc29sZS5h
c3NlcnQoZG9tTm9kZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5ET01Ob2RlKTsKKworICAgICAg
ICB0aGlzLl9yZXNvdXJjZSA9IHJlc291cmNlOworICAgICAgICB0aGlzLl9kb21Ob2RlID0gZG9t
Tm9kZTsKKyAgICAgICAgdGhpcy5fdGl0bGUgPSB0aXRsZTsKKyAgICAgICAgdGhpcy5fc2VhcmNo
VGVybSA9IHNlYXJjaFRlcm07CisgICAgICAgIHRoaXMuX3NvdXJjZUNvZGVUZXh0UmFuZ2UgPSBy
ZXNvdXJjZS5jcmVhdGVTb3VyY2VDb2RlVGV4dFJhbmdlKHRleHRSYW5nZSk7CisgICAgfQorCisg
ICAgLy8gU3RhdGljCisKKyAgICBzdGF0aWMgdGl0bGVGb3JET01Ob2RlKGRvbU5vZGUpCisgICAg
eworICAgICAgICBzd2l0Y2ggKGRvbU5vZGUubm9kZVR5cGUoKSkgeworICAgICAgICBjYXNlIE5v
ZGUuRUxFTUVOVF9OT0RFOgorICAgICAgICAgICAgdmFyIHRpdGxlID0gIjwiICsgZG9tTm9kZS5u
b2RlTmFtZUluQ29ycmVjdENhc2UoKTsKKyAgICAgICAgICAgIGZvciAodmFyIGF0dHJpYnV0ZSBv
ZiBkb21Ob2RlLmF0dHJpYnV0ZXMoKSkgeworICAgICAgICAgICAgICAgIHRpdGxlICs9ICIgIiAr
IGF0dHJpYnV0ZS5uYW1lOworICAgICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGUudmFsdWUubGVu
Z3RoKQorICAgICAgICAgICAgICAgICAgICB0aXRsZSArPSAiPVwiIiArIGF0dHJpYnV0ZS52YWx1
ZSArICJcIiI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gdGl0bGUgKyAiPiI7
CisKKyAgICAgICAgY2FzZSBOb2RlLlRFWFRfTk9ERToKKyAgICAgICAgICAgIHJldHVybiAiXCIi
ICsgZG9tTm9kZS5ub2RlVmFsdWUoKSArICJcIiI7CisKKyAgICAgICAgY2FzZSBOb2RlLkNPTU1F
TlRfTk9ERToKKyAgICAgICAgICAgIHJldHVybiAiPCEtLSIgKyBkb21Ob2RlLm5vZGVWYWx1ZSgp
ICsgIi0tPiI7CisKKyAgICAgICAgY2FzZSBOb2RlLkRPQ1VNRU5UX1RZUEVfTk9ERToKKyAgICAg
ICAgICAgIHZhciB0aXRsZSA9ICI8IURPQ1RZUEUgIiArIGRvbU5vZGUubm9kZU5hbWUoKTsKKyAg
ICAgICAgICAgIGlmIChkb21Ob2RlLnB1YmxpY0lkKSB7CisgICAgICAgICAgICAgICAgdGl0bGUg
Kz0gIiBQVUJMSUMgXCIiICsgZG9tTm9kZS5wdWJsaWNJZCArICJcIiI7CisgICAgICAgICAgICAg
ICAgaWYgKGRvbU5vZGUuc3lzdGVtSWQpCisgICAgICAgICAgICAgICAgICAgIHRpdGxlICs9ICIg
XCIiICsgZG9tTm9kZS5zeXN0ZW1JZCArICJcIiI7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGRv
bU5vZGUuc3lzdGVtSWQpCisgICAgICAgICAgICAgICAgdGl0bGUgKz0gIiBTWVNURU0gXCIiICsg
ZG9tTm9kZS5zeXN0ZW1JZCArICJcIiI7CisKKyAgICAgICAgICAgIGlmIChkb21Ob2RlLmludGVy
bmFsU3Vic2V0KQorICAgICAgICAgICAgICAgIHRpdGxlICs9ICIgWyIgKyBkb21Ob2RlLmludGVy
bmFsU3Vic2V0ICsgIl0iOworCisgICAgICAgICAgICByZXR1cm4gdGl0bGUgKyAiPiI7CisKKyAg
ICAgICAgY2FzZSBOb2RlLkNEQVRBX1NFQ1RJT05fTk9ERToKKyAgICAgICAgICAgIHJldHVybiAi
PCFbQ0RBVEFbIiArIGRvbU5vZGUgKyAiXV0+IjsKKworICAgICAgICBjYXNlIE5vZGUuUFJPQ0VT
U0lOR19JTlNUUlVDVElPTl9OT0RFOgorICAgICAgICAgICAgdmFyIGRhdGEgPSBkb21Ob2RlLm5v
ZGVWYWx1ZSgpOworICAgICAgICAgICAgdmFyIGRhdGFTdHJpbmcgPSBkYXRhLmxlbmd0aCA/ICIg
IiArIGRhdGEgOiAiIjsKKyAgICAgICAgICAgIHZhciB0aXRsZSA9ICI8PyIgKyBkb21Ob2RlLm5v
ZGVOYW1lSW5Db3JyZWN0Q2FzZSgpICsgZGF0YVN0cmluZyArICI/PiI7CisgICAgICAgICAgICBy
ZXR1cm4gdGl0bGU7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGNvbnNvbGUuZXJy
b3IoIlVua25vd24gRE9NIG5vZGUgdHlwZTogIiwgZG9tTm9kZS5ub2RlVHlwZSgpKTsKKyAgICAg
ICAgICAgIHJldHVybiBkb21Ob2RlLm5vZGVOYW1lSW5Db3JyZWN0Q2FzZSgpOworICAgICAgICB9
CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgcmVzb3VyY2UoKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGRv
bU5vZGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2RvbU5vZGU7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICBnZXQgdGl0bGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3RpdGxl
OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGNsYXNzTmFtZSgpCiAgICAgewpAQCAtNzYsMTcg
KzExMSwxNyBAQCBXZWJJbnNwZWN0b3IuRE9NU2VhcmNoTWF0Y2hPYmplY3QucHJvdG90eXBlID0g
ewogICAgICAgICAgICAgdGhpcy5fY2xhc3NOYW1lID0gdGhpcy5fZ2VuZXJhdGVDbGFzc05hbWUo
KTsKIAogICAgICAgICByZXR1cm4gdGhpcy5fY2xhc3NOYW1lOwotICAgIH0sCisgICAgfQogCiAg
ICAgZ2V0IHNlYXJjaFRlcm0oKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3NlYXJjaFRl
cm07Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc291cmNlQ29kZVRleHRSYW5nZSgpCiAgICAg
ewogICAgICAgICByZXR1cm4gdGhpcy5fc291cmNlQ29kZVRleHRSYW5nZTsKLSAgICB9LAorICAg
IH0KIAogICAgIHNhdmVJZGVudGl0eVRvQ29va2llKGNvb2tpZSkKICAgICB7CkBAIC05NCw3ICsx
MjksNyBAQCBXZWJJbnNwZWN0b3IuRE9NU2VhcmNoTWF0Y2hPYmplY3QucHJvdG90eXBlID0gewog
ICAgICAgICBjb29raWVbV2ViSW5zcGVjdG9yLkRPTVNlYXJjaE1hdGNoT2JqZWN0LlRpdGxlS2V5
XSA9IHRoaXMuX3RpdGxlOwogICAgICAgICB2YXIgdGV4dFJhbmdlID0gdGhpcy5fc291cmNlQ29k
ZVRleHRSYW5nZS50ZXh0UmFuZ2U7CiAgICAgICAgIGNvb2tpZVtXZWJJbnNwZWN0b3IuRE9NU2Vh
cmNoTWF0Y2hPYmplY3QuVGV4dFJhbmdlS2V5XSA9IFt0ZXh0UmFuZ2Uuc3RhcnRMaW5lLCB0ZXh0
UmFuZ2Uuc3RhcnRDb2x1bW4sIHRleHRSYW5nZS5lbmRMaW5lLCB0ZXh0UmFuZ2UuZW5kQ29sdW1u
XS5qb2luKCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKQEAgLTEyNyw0OSAr
MTYyLDE0IEBAIFdlYkluc3BlY3Rvci5ET01TZWFyY2hNYXRjaE9iamVjdC5wcm90b3R5cGUgPSB7
CiAgICAgfQogfTsKIAotV2ViSW5zcGVjdG9yLkRPTVNlYXJjaE1hdGNoT2JqZWN0LnRpdGxlRm9y
RE9NTm9kZSA9IGZ1bmN0aW9uKGRvbU5vZGUpCi17Ci0gICAgc3dpdGNoIChkb21Ob2RlLm5vZGVU
eXBlKCkpIHsKLSAgICBjYXNlIE5vZGUuRUxFTUVOVF9OT0RFOgotICAgICAgICB2YXIgdGl0bGUg
PSAiPCIgKyBkb21Ob2RlLm5vZGVOYW1lSW5Db3JyZWN0Q2FzZSgpOwotICAgICAgICBmb3IgKHZh
ciBhdHRyaWJ1dGUgb2YgZG9tTm9kZS5hdHRyaWJ1dGVzKCkpIHsKLSAgICAgICAgICAgIHRpdGxl
ICs9ICIgIiArIGF0dHJpYnV0ZS5uYW1lOwotICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZS52YWx1
ZS5sZW5ndGgpCi0gICAgICAgICAgICAgICAgdGl0bGUgKz0gIj1cIiIgKyBhdHRyaWJ1dGUudmFs
dWUgKyAiXCIiOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aXRsZSArICI+IjsKLQotICAg
IGNhc2UgTm9kZS5URVhUX05PREU6Ci0gICAgICAgIHJldHVybiAiXCIiICsgZG9tTm9kZS5ub2Rl
VmFsdWUoKSArICJcIiI7Ci0KLSAgICBjYXNlIE5vZGUuQ09NTUVOVF9OT0RFOgotICAgICAgICBy
ZXR1cm4gIjwhLS0iICsgZG9tTm9kZS5ub2RlVmFsdWUoKSArICItLT4iOwotCi0gICAgY2FzZSBO
b2RlLkRPQ1VNRU5UX1RZUEVfTk9ERToKLSAgICAgICAgdmFyIHRpdGxlID0gIjwhRE9DVFlQRSAi
ICsgZG9tTm9kZS5ub2RlTmFtZSgpOwotICAgICAgICBpZiAoZG9tTm9kZS5wdWJsaWNJZCkgewot
ICAgICAgICAgICAgdGl0bGUgKz0gIiBQVUJMSUMgXCIiICsgZG9tTm9kZS5wdWJsaWNJZCArICJc
IiI7Ci0gICAgICAgICAgICBpZiAoZG9tTm9kZS5zeXN0ZW1JZCkKLSAgICAgICAgICAgICAgICB0
aXRsZSArPSAiIFwiIiArIGRvbU5vZGUuc3lzdGVtSWQgKyAiXCIiOwotICAgICAgICB9IGVsc2Ug
aWYgKGRvbU5vZGUuc3lzdGVtSWQpCi0gICAgICAgICAgICB0aXRsZSArPSAiIFNZU1RFTSBcIiIg
KyBkb21Ob2RlLnN5c3RlbUlkICsgIlwiIjsKLQotICAgICAgICBpZiAoZG9tTm9kZS5pbnRlcm5h
bFN1YnNldCkKLSAgICAgICAgICAgIHRpdGxlICs9ICIgWyIgKyBkb21Ob2RlLmludGVybmFsU3Vi
c2V0ICsgIl0iOwotCi0gICAgICAgIHJldHVybiB0aXRsZSArICI+IjsKLQotICAgIGNhc2UgTm9k
ZS5DREFUQV9TRUNUSU9OX05PREU6Ci0gICAgICAgIHJldHVybiAiPCFbQ0RBVEFbIiArIGRvbU5v
ZGUgKyAiXV0+IjsKLQotICAgIGNhc2UgTm9kZS5QUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREU6
Ci0gICAgICAgIHZhciBkYXRhID0gZG9tTm9kZS5ub2RlVmFsdWUoKTsKLSAgICAgICAgdmFyIGRh
dGFTdHJpbmcgPSBkYXRhLmxlbmd0aCA/ICIgIiArIGRhdGEgOiAiIjsKLSAgICAgICAgdmFyIHRp
dGxlID0gIjw/IiArIGRvbU5vZGUubm9kZU5hbWVJbkNvcnJlY3RDYXNlKCkgKyBkYXRhU3RyaW5n
ICsgIj8+IjsKLSAgICAgICAgcmV0dXJuIHRpdGxlOwotCi0gICAgZGVmYXVsdDoKLSAgICAgICAg
Y29uc29sZS5lcnJvcigiVW5rbm93biBET00gbm9kZSB0eXBlOiAiLCBkb21Ob2RlLm5vZGVUeXBl
KCkpOwotICAgICAgICByZXR1cm4gZG9tTm9kZS5ub2RlTmFtZUluQ29ycmVjdENhc2UoKTsKLSAg
ICB9Ci19OworV2ViSW5zcGVjdG9yLkRPTVNlYXJjaE1hdGNoT2JqZWN0LkRPTU1hdGNoRWxlbWVu
dEljb25TdHlsZUNsYXNzTmFtZSA9ICJkb20tbWF0Y2gtZWxlbWVudC1pY29uIjsKK1dlYkluc3Bl
Y3Rvci5ET01TZWFyY2hNYXRjaE9iamVjdC5ET01NYXRjaFRleHROb2RlSWNvblN0eWxlQ2xhc3NO
YW1lID0gImRvbS1tYXRjaC10ZXh0LW5vZGUtaWNvbiI7CitXZWJJbnNwZWN0b3IuRE9NU2VhcmNo
TWF0Y2hPYmplY3QuRE9NTWF0Y2hDb21tZW50SWNvblN0eWxlQ2xhc3NOYW1lID0gImRvbS1tYXRj
aC1jb21tZW50LWljb24iOworV2ViSW5zcGVjdG9yLkRPTVNlYXJjaE1hdGNoT2JqZWN0LkRPTU1h
dGNoRG9jdW1lbnRUeXBlSWNvblN0eWxlQ2xhc3NOYW1lID0gImRvbS1tYXRjaC1kb2N1bWVudC10
eXBlLWljb24iOworV2ViSW5zcGVjdG9yLkRPTVNlYXJjaE1hdGNoT2JqZWN0LkRPTU1hdGNoQ2hh
cmFjdGVyRGF0YUljb25TdHlsZUNsYXNzTmFtZSA9ICJkb20tbWF0Y2gtY2hhcmFjdGVyLWRhdGEt
aWNvbiI7CitXZWJJbnNwZWN0b3IuRE9NU2VhcmNoTWF0Y2hPYmplY3QuRE9NTWF0Y2hOb2RlSWNv
blN0eWxlQ2xhc3NOYW1lID0gImRvbS1tYXRjaC1ub2RlLWljb24iOworCitXZWJJbnNwZWN0b3Iu
RE9NU2VhcmNoTWF0Y2hPYmplY3QuVHlwZUlkZW50aWZpZXIgPSAiZG9tLXNlYXJjaC1tYXRjaC1v
YmplY3QiOworV2ViSW5zcGVjdG9yLkRPTVNlYXJjaE1hdGNoT2JqZWN0LlVSTENvb2tpZUtleSA9
ICJyZXNvdXJjZS11cmwiOworV2ViSW5zcGVjdG9yLkRPTVNlYXJjaE1hdGNoT2JqZWN0LlRpdGxl
S2V5ID0gInRpdGxlIjsKK1dlYkluc3BlY3Rvci5ET01TZWFyY2hNYXRjaE9iamVjdC5UZXh0UmFu
Z2VLZXkgPSAidGV4dC1yYW5nZSI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Nb2RlbHMvRE9NU3RvcmFnZU9iamVjdC5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9ET01TdG9yYWdlT2JqZWN0LmpzCmluZGV4IDhm
MTc1OTcuLmRhM2E3YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL01vZGVscy9ET01TdG9yYWdlT2JqZWN0LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9ET01TdG9yYWdlT2JqZWN0LmpzCkBAIC0yMyw1NiAr
MjMsNDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJ
bnNwZWN0b3IuRE9NU3RvcmFnZU9iamVjdCA9IGZ1bmN0aW9uKGlkLCBob3N0LCBpc0xvY2FsU3Rv
cmFnZSkKK1dlYkluc3BlY3Rvci5ET01TdG9yYWdlT2JqZWN0ID0gY2xhc3MgRE9NU3RvcmFnZU9i
amVjdCBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIHsKLSAgICB0aGlzLl9pZCA9IGlkOwot
ICAgIHRoaXMuX2hvc3QgPSBob3N0OwotICAgIHRoaXMuX2lzTG9jYWxTdG9yYWdlID0gaXNMb2Nh
bFN0b3JhZ2U7Ci0gICAgdGhpcy5fZW50cmllcyA9IG5ldyBNYXA7Ci19OworICAgIGNvbnN0cnVj
dG9yKGlkLCBob3N0LCBpc0xvY2FsU3RvcmFnZSkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CiAK
LVdlYkluc3BlY3Rvci5ET01TdG9yYWdlT2JqZWN0LlR5cGVJZGVudGlmaWVyID0gImRvbS1zdG9y
YWdlIjsKLVdlYkluc3BlY3Rvci5ET01TdG9yYWdlT2JqZWN0Lkhvc3RDb29raWVLZXkgPSAiZG9t
LXN0b3JhZ2Utb2JqZWN0LWhvc3QiOwotV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VPYmplY3QuTG9j
YWxTdG9yYWdlQ29va2llS2V5ID0gImRvbS1zdG9yYWdlLW9iamVjdC1sb2NhbC1zdG9yYWdlIjsK
KyAgICAgICAgdGhpcy5faWQgPSBpZDsKKyAgICAgICAgdGhpcy5faG9zdCA9IGhvc3Q7CisgICAg
ICAgIHRoaXMuX2lzTG9jYWxTdG9yYWdlID0gaXNMb2NhbFN0b3JhZ2U7CisgICAgICAgIHRoaXMu
X2VudHJpZXMgPSBuZXcgTWFwOworICAgIH0KIAotV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VPYmpl
Y3QuRXZlbnQgPSB7Ci0gICAgSXRlbXNDbGVhcmVkOiAiZG9tLXN0b3JhZ2Utb2JqZWN0LWl0ZW1z
LWNsZWFyZWQiLAotICAgIEl0ZW1BZGRlZDogImRvbS1zdG9yYWdlLW9iamVjdC1pdGVtLWFkZGVk
IiwKLSAgICBJdGVtUmVtb3ZlZDogImRvbS1zdG9yYWdlLW9iamVjdC1pdGVtLXJlbW92ZWQiLAot
ICAgIEl0ZW1VcGRhdGVkOiAiZG9tLXN0b3JhZ2Utb2JqZWN0LXVwZGF0ZWQiLAotfTsKLQotV2Vi
SW5zcGVjdG9yLkRPTVN0b3JhZ2VPYmplY3QucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9y
OiBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZU9iamVjdCwKLSAgICBfX3Byb3RvX186IFdlYkluc3Bl
Y3Rvci5PYmplY3QucHJvdG90eXBlLAorICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IGlkKCkKICAg
ICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9pZDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBo
b3N0KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9ob3N0OwotICAgIH0sCisgICAgfQog
CiAgICAgZ2V0IGVudHJpZXMoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2VudHJpZXM7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzYXZlSWRlbnRpdHlUb0Nvb2tpZTogZnVuY3Rpb24oY29v
a2llKQorICAgIHNhdmVJZGVudGl0eVRvQ29va2llKGNvb2tpZSkKICAgICB7CiAgICAgICAgIGNv
b2tpZVtXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZU9iamVjdC5Ib3N0Q29va2llS2V5XSA9IHRoaXMu
aG9zdDsKICAgICAgICAgY29va2llW1dlYkluc3BlY3Rvci5ET01TdG9yYWdlT2JqZWN0LkxvY2Fs
U3RvcmFnZUNvb2tpZUtleV0gPSB0aGlzLmlzTG9jYWxTdG9yYWdlKCk7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBpc0xvY2FsU3RvcmFnZTogZnVuY3Rpb24oKQorICAgIGlzTG9jYWxTdG9yYWdlKCkK
ICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9pc0xvY2FsU3RvcmFnZTsKLSAgICB9LAorICAg
IH0KIAotICAgIGdldEVudHJpZXM6IGZ1bmN0aW9uKGNhbGxiYWNrKQorICAgIGdldEVudHJpZXMo
Y2FsbGJhY2spCiAgICAgewogICAgICAgICBmdW5jdGlvbiBpbm5lckNhbGxiYWNrKGVycm9yLCBl
bnRyaWVzKQogICAgICAgICB7CkBAIC05Myw0MCArODQsNTEgQEAgV2ViSW5zcGVjdG9yLkRPTVN0
b3JhZ2VPYmplY3QucHJvdG90eXBlID0gewogICAgICAgICAgICAgRE9NU3RvcmFnZUFnZW50Lmdl
dERPTVN0b3JhZ2VFbnRyaWVzKHRoaXMuX2lkLCBpbm5lckNhbGxiYWNrLmJpbmQodGhpcykpOwog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICBET01TdG9yYWdlQWdlbnQuZ2V0RE9NU3RvcmFnZUl0
ZW1zKHRoaXMuX2lkLCBpbm5lckNhbGxiYWNrLmJpbmQodGhpcykpOwotICAgIH0sCisgICAgfQog
Ci0gICAgcmVtb3ZlSXRlbTogZnVuY3Rpb24oa2V5KQorICAgIHJlbW92ZUl0ZW0oa2V5KQogICAg
IHsKICAgICAgICAgRE9NU3RvcmFnZUFnZW50LnJlbW92ZURPTVN0b3JhZ2VJdGVtKHRoaXMuX2lk
LCBrZXkpOwotICAgIH0sCisgICAgfQogCi0gICAgc2V0SXRlbTogZnVuY3Rpb24oa2V5LCB2YWx1
ZSkKKyAgICBzZXRJdGVtKGtleSwgdmFsdWUpCiAgICAgewogICAgICAgICBET01TdG9yYWdlQWdl
bnQuc2V0RE9NU3RvcmFnZUl0ZW0odGhpcy5faWQsIGtleSwgdmFsdWUpOwotICAgIH0sCisgICAg
fQogCi0gICAgaXRlbXNDbGVhcmVkOiBmdW5jdGlvbigpCisgICAgaXRlbXNDbGVhcmVkKCkKICAg
ICB7CiAgICAgICAgIHRoaXMuX2VudHJpZXMuY2xlYXIoKTsKICAgICAgICAgdGhpcy5kaXNwYXRj
aEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VPYmplY3QuRXZlbnQuSXRl
bXNDbGVhcmVkKTsKLSAgICB9LAorICAgIH0KIAotICAgIGl0ZW1SZW1vdmVkOiBmdW5jdGlvbihr
ZXkpCisgICAgaXRlbVJlbW92ZWQoa2V5KQogICAgIHsKICAgICAgICAgdGhpcy5fZW50cmllcy5k
ZWxldGUoa2V5KTsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5z
cGVjdG9yLkRPTVN0b3JhZ2VPYmplY3QuRXZlbnQuSXRlbVJlbW92ZWQsIHtrZXl9KTsKLSAgICB9
LAorICAgIH0KIAotICAgIGl0ZW1BZGRlZDogZnVuY3Rpb24oa2V5LCB2YWx1ZSkKKyAgICBpdGVt
QWRkZWQoa2V5LCB2YWx1ZSkKICAgICB7CiAgICAgICAgIHRoaXMuX2VudHJpZXMuc2V0KGtleSwg
dmFsdWUpOwogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0
b3IuRE9NU3RvcmFnZU9iamVjdC5FdmVudC5JdGVtQWRkZWQsIHtrZXksIHZhbHVlfSk7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBpdGVtVXBkYXRlZDogZnVuY3Rpb24oa2V5LCBvbGRWYWx1ZSwgdmFs
dWUpCisgICAgaXRlbVVwZGF0ZWQoa2V5LCBvbGRWYWx1ZSwgdmFsdWUpCiAgICAgewogICAgICAg
ICB0aGlzLl9lbnRyaWVzLnNldChrZXksIHZhbHVlKTsKICAgICAgICAgdmFyIGRhdGEgPSB7a2V5
LCBvbGRWYWx1ZSwgdmFsdWV9OwogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVy
cyhXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZU9iamVjdC5FdmVudC5JdGVtVXBkYXRlZCwgZGF0YSk7
CiAgICAgfQogfTsKKworV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VPYmplY3QuVHlwZUlkZW50aWZp
ZXIgPSAiZG9tLXN0b3JhZ2UiOworV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VPYmplY3QuSG9zdENv
b2tpZUtleSA9ICJkb20tc3RvcmFnZS1vYmplY3QtaG9zdCI7CitXZWJJbnNwZWN0b3IuRE9NU3Rv
cmFnZU9iamVjdC5Mb2NhbFN0b3JhZ2VDb29raWVLZXkgPSAiZG9tLXN0b3JhZ2Utb2JqZWN0LWxv
Y2FsLXN0b3JhZ2UiOworCitXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZU9iamVjdC5FdmVudCA9IHsK
KyAgICBJdGVtc0NsZWFyZWQ6ICJkb20tc3RvcmFnZS1vYmplY3QtaXRlbXMtY2xlYXJlZCIsCisg
ICAgSXRlbUFkZGVkOiAiZG9tLXN0b3JhZ2Utb2JqZWN0LWl0ZW0tYWRkZWQiLAorICAgIEl0ZW1S
ZW1vdmVkOiAiZG9tLXN0b3JhZ2Utb2JqZWN0LWl0ZW0tcmVtb3ZlZCIsCisgICAgSXRlbVVwZGF0
ZWQ6ICJkb20tc3RvcmFnZS1vYmplY3QtdXBkYXRlZCIsCit9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0RPTVRyZWUuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRE9NVHJlZS5qcwppbmRleCAwMGM1
ZjUwLi5lOGFkNDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Nb2RlbHMvRE9NVHJlZS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Nb2RlbHMvRE9NVHJlZS5qcwpAQCAtMjMsNjAgKzIzLDUxIEBACiAgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkRPTVRyZWUgPSBm
dW5jdGlvbihmcmFtZSkKK1dlYkluc3BlY3Rvci5ET01UcmVlID0gY2xhc3MgRE9NVHJlZSBleHRl
bmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIHsKLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwo
dGhpcyk7CisgICAgY29uc3RydWN0b3IoZnJhbWUpCisgICAgeworICAgICAgICBzdXBlcigpOwog
Ci0gICAgdGhpcy5fZnJhbWUgPSBmcmFtZTsKKyAgICAgICAgdGhpcy5fZnJhbWUgPSBmcmFtZTsK
IAotICAgIHRoaXMuX3Jvb3RET01Ob2RlID0gbnVsbDsKLSAgICB0aGlzLl9yZXF1ZXN0SWRlbnRp
ZmllciA9IDA7Ci0gICAgdGhpcy5fZmxvd01hcCA9IHt9OworICAgICAgICB0aGlzLl9yb290RE9N
Tm9kZSA9IG51bGw7CisgICAgICAgIHRoaXMuX3JlcXVlc3RJZGVudGlmaWVyID0gMDsKKyAgICAg
ICAgdGhpcy5fZmxvd01hcCA9IHt9OwogCi0gICAgdGhpcy5fZnJhbWUuYWRkRXZlbnRMaXN0ZW5l
cihXZWJJbnNwZWN0b3IuRnJhbWUuRXZlbnQuUGFnZUV4ZWN1dGlvbkNvbnRleHRDaGFuZ2VkLCB0
aGlzLl9mcmFtZVBhZ2VFeGVjdXRpb25Db250ZXh0Q2hhbmdlZCwgdGhpcyk7CisgICAgICAgIHRo
aXMuX2ZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkZyYW1lLkV2ZW50LlBhZ2VF
eGVjdXRpb25Db250ZXh0Q2hhbmdlZCwgdGhpcy5fZnJhbWVQYWdlRXhlY3V0aW9uQ29udGV4dENo
YW5nZWQsIHRoaXMpOwogCi0gICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLmFkZEV2ZW50
TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2VyLkV2ZW50LkRvY3VtZW50VXBkYXRl
ZCwgdGhpcy5fZG9jdW1lbnRVcGRhdGVkLCB0aGlzKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLmRv
bVRyZWVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2Vy
LkV2ZW50LkRvY3VtZW50VXBkYXRlZCwgdGhpcy5fZG9jdW1lbnRVcGRhdGVkLCB0aGlzKTsKIAot
ICAgIC8vIE9ubHkgYWRkIGV4dHJhIGV2ZW50IGxpc3RlbmVycyB3aGVuIG5vdCB0aGUgbWFpbiBm
cmFtZS4gU2luY2UgRG9jdW1lbnRVcGRhdGVkIGlzIGVub3VnaCBmb3IgdGhlIG1haW4gZnJhbWUu
Ci0gICAgaWYgKCF0aGlzLl9mcmFtZS5pc01haW5GcmFtZSgpKSB7Ci0gICAgICAgIFdlYkluc3Bl
Y3Rvci5kb21UcmVlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5ET01UcmVl
TWFuYWdlci5FdmVudC5Ob2RlUmVtb3ZlZCwgdGhpcy5fbm9kZVJlbW92ZWQsIHRoaXMpOwotICAg
ICAgICB0aGlzLl9mcmFtZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5GcmFtZS5FdmVu
dC5NYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMuX2ZyYW1lTWFpblJlc291cmNlRGlkQ2hhbmdl
LCB0aGlzKTsKKyAgICAgICAgLy8gT25seSBhZGQgZXh0cmEgZXZlbnQgbGlzdGVuZXJzIHdoZW4g
bm90IHRoZSBtYWluIGZyYW1lLiBTaW5jZSBEb2N1bWVudFVwZGF0ZWQgaXMgZW5vdWdoIGZvciB0
aGUgbWFpbiBmcmFtZS4KKyAgICAgICAgaWYgKCF0aGlzLl9mcmFtZS5pc01haW5GcmFtZSgpKSB7
CisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5l
cihXZWJJbnNwZWN0b3IuRE9NVHJlZU1hbmFnZXIuRXZlbnQuTm9kZVJlbW92ZWQsIHRoaXMuX25v
ZGVSZW1vdmVkLCB0aGlzKTsKKyAgICAgICAgICAgIHRoaXMuX2ZyYW1lLmFkZEV2ZW50TGlzdGVu
ZXIoV2ViSW5zcGVjdG9yLkZyYW1lLkV2ZW50Lk1haW5SZXNvdXJjZURpZENoYW5nZSwgdGhpcy5f
ZnJhbWVNYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMpOworICAgICAgICB9CisKKyAgICAgICAg
V2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9y
LkRPTVRyZWVNYW5hZ2VyLkV2ZW50LkNvbnRlbnRGbG93TGlzdFdhc1VwZGF0ZWQsIHRoaXMuX2Nv
bnRlbnRGbG93TGlzdFdhc1VwZGF0ZWQsIHRoaXMpOworICAgICAgICBXZWJJbnNwZWN0b3IuZG9t
VHJlZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NVHJlZU1hbmFnZXIu
RXZlbnQuQ29udGVudEZsb3dXYXNBZGRlZCwgdGhpcy5fY29udGVudEZsb3dXYXNBZGRlZCwgdGhp
cyk7CisgICAgICAgIFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5hZGRFdmVudExpc3RlbmVy
KFdlYkluc3BlY3Rvci5ET01UcmVlTWFuYWdlci5FdmVudC5Db250ZW50Rmxvd1dhc1JlbW92ZWQs
IHRoaXMuX2NvbnRlbnRGbG93V2FzUmVtb3ZlZCwgdGhpcyk7CiAgICAgfQogCi0gICAgV2ViSW5z
cGVjdG9yLmRvbVRyZWVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTVRy
ZWVNYW5hZ2VyLkV2ZW50LkNvbnRlbnRGbG93TGlzdFdhc1VwZGF0ZWQsIHRoaXMuX2NvbnRlbnRG
bG93TGlzdFdhc1VwZGF0ZWQsIHRoaXMpOwotICAgIFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdl
ci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5ET01UcmVlTWFuYWdlci5FdmVudC5Db250
ZW50Rmxvd1dhc0FkZGVkLCB0aGlzLl9jb250ZW50Rmxvd1dhc0FkZGVkLCB0aGlzKTsKLSAgICBX
ZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3Iu
RE9NVHJlZU1hbmFnZXIuRXZlbnQuQ29udGVudEZsb3dXYXNSZW1vdmVkLCB0aGlzLl9jb250ZW50
Rmxvd1dhc1JlbW92ZWQsIHRoaXMpOwotfTsKLQotV2ViSW5zcGVjdG9yLk9iamVjdC5hZGRDb25z
dHJ1Y3RvckZ1bmN0aW9ucyhXZWJJbnNwZWN0b3IuRE9NVHJlZSk7Ci0KLVdlYkluc3BlY3Rvci5E
T01UcmVlLkV2ZW50ID0gewotICAgIFJvb3RET01Ob2RlSW52YWxpZGF0ZWQ6ICJkb20tdHJlZS1y
b290LWRvbS1ub2RlLWludmFsaWRhdGVkIiwKLSAgICBDb250ZW50Rmxvd1dhc0FkZGVkOiAiZG9t
LXRyZWUtY29udGVudC1mbG93LXdhcy1hZGRlZCIsCi0gICAgQ29udGVudEZsb3dXYXNSZW1vdmVk
OiAiZG9tLXRyZWUtY29udGVudC1mbG93LXdhcy1yZW1vdmVkIgotfTsKLQotV2ViSW5zcGVjdG9y
LkRPTVRyZWUucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuRE9N
VHJlZSwKLQogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IGZyYW1lKCkKICAgICB7CiAgICAgICAg
IHJldHVybiB0aGlzLl9mcmFtZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBmbG93TWFwKCkK
ICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9mbG93TWFwOwotICAgIH0sCisgICAgfQogCiAg
ICAgZ2V0IGZsb3dzQ291bnQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKHRo
aXMuX2Zsb3dNYXApLmxlbmd0aDsKLSAgICB9LAorICAgIH0KIAotICAgIGludmFsaWRhdGU6IGZ1
bmN0aW9uKCkKKyAgICBpbnZhbGlkYXRlKCkKICAgICB7CiAgICAgICAgIC8vIFNldCB0byBudWxs
IHNvIGl0IGlzIGZldGNoZWQgYWdhaW4gbmV4dCB0aW1lIHJlcXVlc3RSb290RE9NTm9kZSBpcyBj
YWxsZWQuCiAgICAgICAgIHRoaXMuX3Jvb3RET01Ob2RlID0gbnVsbDsKQEAgLTk3LDkgKzg4LDkg
QEAgV2ViSW5zcGVjdG9yLkRPTVRyZWUucHJvdG90eXBlID0gewogCiAgICAgICAgIC8vIERlbGF5
IHRoZSBpbnZhbGlkYXRpb24gb24gYSB0aW1lb3V0IHRvIGNvYWxlc2NlIG11bHRpcGxlIGNhbGxz
IHRvIGludmFsaWRhdGUuCiAgICAgICAgIHRoaXMuX2ludmFsaWRhdGVUaW1lb3V0SWRlbnRpZmll
ciA9IHNldFRpbWVvdXQocGVyZm9ybUludmFsaWRhdGUuYmluZCh0aGlzKSwgMCk7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICByZXF1ZXN0Um9vdERPTU5vZGU6IGZ1bmN0aW9uKGNhbGxiYWNrKQorICAg
IHJlcXVlc3RSb290RE9NTm9kZShjYWxsYmFjaykKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KHR5cGVvZiBjYWxsYmFjayA9PT0gImZ1bmN0aW9uIik7CiAgICAgICAgIGlmICh0eXBlb2Yg
Y2FsbGJhY2sgIT09ICJmdW5jdGlvbiIpCkBAIC0xMjUsMTEgKzExNiwxOSBAQCBXZWJJbnNwZWN0
b3IuRE9NVHJlZS5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdGhpcy5fcGVuZGluZ1Jvb3RET01O
b2RlUmVxdWVzdHMgPSBbY2FsbGJhY2tdOwogICAgICAgICB0aGlzLl9yZXF1ZXN0Um9vdERPTU5v
ZGUoKTsKLSAgICB9LAorICAgIH0KKworICAgIHJlcXVlc3RDb250ZW50Rmxvd0xpc3QoKQorICAg
IHsKKyAgICAgICAgdGhpcy5yZXF1ZXN0Um9vdERPTU5vZGUoZnVuY3Rpb24ocm9vdE5vZGUpIHsK
KyAgICAgICAgICAgIC8vIExldCB0aGUgYmFja2VuZCBrbm93IHdlIGFyZSBpbnRlcmVzdGVkIGFi
b3V0IHRoZSBuYW1lZCBmbG93IGV2ZW50cyBmb3IgdGhpcyBkb2N1bWVudC4KKyAgICAgICAgICAg
IFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5nZXROYW1lZEZsb3dDb2xsZWN0aW9uKHJvb3RO
b2RlLmlkKTsKKyAgICAgICAgfSk7CisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX3Jl
cXVlc3RSb290RE9NTm9kZTogZnVuY3Rpb24oKQorICAgIF9yZXF1ZXN0Um9vdERPTU5vZGUoKQog
ICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fZnJhbWUuaXNNYWluRnJhbWUoKSB8
fCAhV2ViSW5zcGVjdG9yLkV4ZWN1dGlvbkNvbnRleHQuc3VwcG9ydGVkKCkgfHwgdGhpcy5fZnJh
bWUucGFnZUV4ZWN1dGlvbkNvbnRleHQpOwogICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9w
ZW5kaW5nUm9vdERPTU5vZGVSZXF1ZXN0cy5sZW5ndGgpOwpAQCAtMjEzLDkgKzIxMiw5IEBAIFdl
Ykluc3BlY3Rvci5ET01UcmVlLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHZhciBjb250ZXh0
SWQgPSB0aGlzLl9mcmFtZS5wYWdlRXhlY3V0aW9uQ29udGV4dCA/IHRoaXMuX2ZyYW1lLnBhZ2VF
eGVjdXRpb25Db250ZXh0LmlkIDogdW5kZWZpbmVkOwogICAgICAgICAgICAgUnVudGltZUFnZW50
LmV2YWx1YXRlLmludm9rZSh7ZXhwcmVzc2lvbjogImRvY3VtZW50Iiwgb2JqZWN0R3JvdXA6ICIi
LCBpbmNsdWRlQ29tbWFuZExpbmVBUEk6IGZhbHNlLCBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5k
TXV0ZUNvbnNvbGU6IHRydWUsIGNvbnRleHRJZCwgZnJhbWVJZDogdGhpcy5fZnJhbWUuaWQsIHJl
dHVybkJ5VmFsdWU6IGZhbHNlLCBnZW5lcmF0ZVByZXZpZXc6IGZhbHNlfSwgcm9vdE9iamVjdEF2
YWlsYWJsZS5iaW5kKHRoaXMpKTsKICAgICAgICAgfQotICAgIH0sCisgICAgfQogCi0gICAgX25v
ZGVSZW1vdmVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfbm9kZVJlbW92ZWQoZXZlbnQpCiAgICAg
ewogICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fZnJhbWUuaXNNYWluRnJhbWUoKSk7CiAK
QEAgLTIyMywyMSArMjIyLDIxIEBAIFdlYkluc3BlY3Rvci5ET01UcmVlLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB0aGlzLmludmFsaWRhdGUoKTsKLSAgICB9
LAorICAgIH0KIAotICAgIF9kb2N1bWVudFVwZGF0ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9k
b2N1bWVudFVwZGF0ZWQoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLmludmFsaWRhdGUoKTsK
LSAgICB9LAorICAgIH0KIAotICAgIF9mcmFtZU1haW5SZXNvdXJjZURpZENoYW5nZTogZnVuY3Rp
b24oZXZlbnQpCisgICAgX2ZyYW1lTWFpblJlc291cmNlRGlkQ2hhbmdlKGV2ZW50KQogICAgIHsK
ICAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuX2ZyYW1lLmlzTWFpbkZyYW1lKCkpOwogCiAg
ICAgICAgIHRoaXMuaW52YWxpZGF0ZSgpOwotICAgIH0sCisgICAgfQogCi0gICAgX2ZyYW1lUGFn
ZUV4ZWN1dGlvbkNvbnRleHRDaGFuZ2VkOiBmdW5jdGlvbihldmVudCkKKyAgICBfZnJhbWVQYWdl
RXhlY3V0aW9uQ29udGV4dENoYW5nZWQoZXZlbnQpCiAgICAgewogICAgICAgICBpZiAodGhpcy5f
cm9vdERPTU5vZGVSZXF1ZXN0V2FpdGluZ0ZvckV4ZWN1dGlvbkNvbnRleHQpIHsKICAgICAgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2ZyYW1lLnBhZ2VFeGVjdXRpb25Db250ZXh0KTsKQEAg
LTI0NywyMiArMjQ2LDE0IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlLnByb3RvdHlwZSA9IHsKIAog
ICAgICAgICAgICAgdGhpcy5fcmVxdWVzdFJvb3RET01Ob2RlKCk7CiAgICAgICAgIH0KLSAgICB9
LAorICAgIH0KIAotICAgIHJlcXVlc3RDb250ZW50Rmxvd0xpc3Q6IGZ1bmN0aW9uKCkKLSAgICB7
Ci0gICAgICAgIHRoaXMucmVxdWVzdFJvb3RET01Ob2RlKGZ1bmN0aW9uKHJvb3ROb2RlKSB7Ci0g
ICAgICAgICAgICAvLyBMZXQgdGhlIGJhY2tlbmQga25vdyB3ZSBhcmUgaW50ZXJlc3RlZCBhYm91
dCB0aGUgbmFtZWQgZmxvdyBldmVudHMgZm9yIHRoaXMgZG9jdW1lbnQuCi0gICAgICAgICAgICBX
ZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIuZ2V0TmFtZWRGbG93Q29sbGVjdGlvbihyb290Tm9k
ZS5pZCk7Ci0gICAgICAgIH0pOwotICAgIH0sCi0KLSAgICBfaXNDb250ZW50Rmxvd0luQ3VycmVu
dERvY3VtZW50OiBmdW5jdGlvbihmbG93KQorICAgIF9pc0NvbnRlbnRGbG93SW5DdXJyZW50RG9j
dW1lbnQoZmxvdykKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9yb290RE9NTm9kZSAmJiB0
aGlzLl9yb290RE9NTm9kZS5pZCA9PT0gZmxvdy5kb2N1bWVudE5vZGVJZGVudGlmaWVyOwotICAg
IH0sCisgICAgfQogCi0gICAgX2NvbnRlbnRGbG93TGlzdFdhc1VwZGF0ZWQ6IGZ1bmN0aW9uKGV2
ZW50KQorICAgIF9jb250ZW50Rmxvd0xpc3RXYXNVcGRhdGVkKGV2ZW50KQogICAgIHsKICAgICAg
ICAgaWYgKCF0aGlzLl9yb290RE9NTm9kZSB8fCB0aGlzLl9yb290RE9NTm9kZS5pZCAhPT0gZXZl
bnQuZGF0YS5kb2N1bWVudE5vZGVJZGVudGlmaWVyKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
MzAyLDkgKzI5Myw5IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlLnByb3RvdHlwZSA9IHsKIAogICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5ld0Zsb3dzLmxlbmd0aDsgKytpKQogICAgICAgICAg
ICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRPTVRyZWUuRXZl
bnQuQ29udGVudEZsb3dXYXNBZGRlZCwge2Zsb3c6IG5ld0Zsb3dzW2ldfSk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfY29udGVudEZsb3dXYXNBZGRlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2Nv
bnRlbnRGbG93V2FzQWRkZWQoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgZmxvdyA9IGV2ZW50
LmRhdGEuZmxvdzsKICAgICAgICAgaWYgKCF0aGlzLl9pc0NvbnRlbnRGbG93SW5DdXJyZW50RG9j
dW1lbnQoZmxvdykpCkBAIC0zMTUsOSArMzA2LDkgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWUucHJv
dG90eXBlID0gewogICAgICAgICB0aGlzLl9mbG93TWFwW2Zsb3dJZF0gPSBmbG93OwogCiAgICAg
ICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5ET01UcmVlLkV2
ZW50LkNvbnRlbnRGbG93V2FzQWRkZWQsIHtmbG93fSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBf
Y29udGVudEZsb3dXYXNSZW1vdmVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfY29udGVudEZsb3dX
YXNSZW1vdmVkKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIGZsb3cgPSBldmVudC5kYXRhLmZs
b3c7CiAgICAgICAgIGlmICghdGhpcy5faXNDb250ZW50Rmxvd0luQ3VycmVudERvY3VtZW50KGZs
b3cpKQpAQCAtMzMxLDQgKzMyMiw4IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlLnByb3RvdHlwZSA9
IHsKICAgICB9CiB9OwogCi1XZWJJbnNwZWN0b3IuRE9NVHJlZS5wcm90b3R5cGUuX19wcm90b19f
ID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CitXZWJJbnNwZWN0b3IuRE9NVHJlZS5F
dmVudCA9IHsKKyAgICBSb290RE9NTm9kZUludmFsaWRhdGVkOiAiZG9tLXRyZWUtcm9vdC1kb20t
bm9kZS1pbnZhbGlkYXRlZCIsCisgICAgQ29udGVudEZsb3dXYXNBZGRlZDogImRvbS10cmVlLWNv
bnRlbnQtZmxvdy13YXMtYWRkZWQiLAorICAgIENvbnRlbnRGbG93V2FzUmVtb3ZlZDogImRvbS10
cmVlLWNvbnRlbnQtZmxvdy13YXMtcmVtb3ZlZCIKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRGF0YWJhc2VPYmplY3QuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRGF0YWJhc2VPYmplY3QuanMK
aW5kZXggM2IxNzdiNi4uN2ViMjAwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvTW9kZWxzL0RhdGFiYXNlT2JqZWN0LmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9EYXRhYmFzZU9iamVjdC5qcwpAQCAtMjMs
NTAgKzIzLDQ3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAot
V2ViSW5zcGVjdG9yLkRhdGFiYXNlT2JqZWN0ID0gZnVuY3Rpb24oaWQsIGhvc3QsIG5hbWUsIHZl
cnNpb24pCitXZWJJbnNwZWN0b3IuRGF0YWJhc2VPYmplY3QgPSBjbGFzcyBEYXRhYmFzZU9iamVj
dCBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIHsKLSAgICB0aGlzLl9pZCA9IGlkOwotICAg
IHRoaXMuX2hvc3QgPSBob3N0ID8gaG9zdCA6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiTG9jYWwg
RmlsZSIpOwotICAgIHRoaXMuX25hbWUgPSBuYW1lOwotICAgIHRoaXMuX3ZlcnNpb24gPSB2ZXJz
aW9uOwotfTsKKyAgICBjb25zdHJ1Y3RvcihpZCwgaG9zdCwgbmFtZSwgdmVyc2lvbikKKyAgICB7
CisgICAgICAgIHN1cGVyKCk7CiAKLVdlYkluc3BlY3Rvci5EYXRhYmFzZU9iamVjdC5UeXBlSWRl
bnRpZmllciA9ICJkYXRhYmFzZSI7Ci1XZWJJbnNwZWN0b3IuRGF0YWJhc2VPYmplY3QuSG9zdENv
b2tpZUtleSA9ICJkYXRhYmFzZS1vYmplY3QtaG9zdCI7Ci1XZWJJbnNwZWN0b3IuRGF0YWJhc2VP
YmplY3QuTmFtZUNvb2tpZUtleSA9ICJkYXRhYmFzZS1vYmplY3QtbmFtZSI7Ci0KLVdlYkluc3Bl
Y3Rvci5EYXRhYmFzZU9iamVjdC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYklu
c3BlY3Rvci5EYXRhYmFzZU9iamVjdCwKKyAgICAgICAgdGhpcy5faWQgPSBpZDsKKyAgICAgICAg
dGhpcy5faG9zdCA9IGhvc3QgPyBob3N0IDogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJMb2NhbCBG
aWxlIik7CisgICAgICAgIHRoaXMuX25hbWUgPSBuYW1lOworICAgICAgICB0aGlzLl92ZXJzaW9u
ID0gdmVyc2lvbjsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBpZCgpCiAgICAg
ewogICAgICAgICByZXR1cm4gdGhpcy5faWQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgaG9z
dCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5faG9zdDsKLSAgICB9LAorICAgIH0KIAog
ICAgIGdldCBuYW1lKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9uYW1lOwotICAgIH0s
CisgICAgfQogCiAgICAgZ2V0IHZlcnNpb24oKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMu
X3ZlcnNpb247Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzYXZlSWRlbnRpdHlUb0Nvb2tpZTogZnVu
Y3Rpb24oY29va2llKQorICAgIHNhdmVJZGVudGl0eVRvQ29va2llKGNvb2tpZSkKICAgICB7CiAg
ICAgICAgIGNvb2tpZVtXZWJJbnNwZWN0b3IuRGF0YWJhc2VPYmplY3QuSG9zdENvb2tpZUtleV0g
PSB0aGlzLmhvc3Q7CiAgICAgICAgIGNvb2tpZVtXZWJJbnNwZWN0b3IuRGF0YWJhc2VPYmplY3Qu
TmFtZUNvb2tpZUtleV0gPSB0aGlzLm5hbWU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBnZXRUYWJs
ZU5hbWVzOiBmdW5jdGlvbihjYWxsYmFjaykKKyAgICBnZXRUYWJsZU5hbWVzKGNhbGxiYWNrKQog
ICAgIHsKICAgICAgICAgZnVuY3Rpb24gc29ydGluZ0NhbGxiYWNrKGVycm9yLCBuYW1lcykKICAg
ICAgICAgewpAQCAtNzUsOSArNzIsOSBAQCBXZWJJbnNwZWN0b3IuRGF0YWJhc2VPYmplY3QucHJv
dG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgRGF0YWJhc2VBZ2VudC5nZXREYXRhYmFz
ZVRhYmxlTmFtZXModGhpcy5faWQsIHNvcnRpbmdDYWxsYmFjayk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBleGVjdXRlU1FMOiBmdW5jdGlvbihxdWVyeSwgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNh
bGxiYWNrKQorICAgIGV4ZWN1dGVTUUwocXVlcnksIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxs
YmFjaykKICAgICB7CiAgICAgICAgIGZ1bmN0aW9uIHF1ZXJ5Q2FsbGJhY2soY29sdW1uTmFtZXMs
IHZhbHVlcywgc3FsRXJyb3IpCiAgICAgICAgIHsKQEAgLTEzMywzICsxMzAsNyBAQCBXZWJJbnNw
ZWN0b3IuRGF0YWJhc2VPYmplY3QucHJvdG90eXBlID0gewogICAgICAgICBEYXRhYmFzZUFnZW50
LmV4ZWN1dGVTUUwodGhpcy5faWQsIHF1ZXJ5LCBjYWxsYmFjayk7CiAgICAgfQogfTsKKworV2Vi
SW5zcGVjdG9yLkRhdGFiYXNlT2JqZWN0LlR5cGVJZGVudGlmaWVyID0gImRhdGFiYXNlIjsKK1dl
Ykluc3BlY3Rvci5EYXRhYmFzZU9iamVjdC5Ib3N0Q29va2llS2V5ID0gImRhdGFiYXNlLW9iamVj
dC1ob3N0IjsKK1dlYkluc3BlY3Rvci5EYXRhYmFzZU9iamVjdC5OYW1lQ29va2llS2V5ID0gImRh
dGFiYXNlLW9iamVjdC1uYW1lIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL01vZGVscy9EYXRhYmFzZVRhYmxlT2JqZWN0LmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0RhdGFiYXNlVGFibGVPYmplY3QuanMKaW5k
ZXggYTZhOGJhNS4uMGM0ZTNlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvTW9kZWxzL0RhdGFiYXNlVGFibGVPYmplY3QuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0RhdGFiYXNlVGFibGVPYmplY3QuanMK
QEAgLTIzLDM0ICsyMywzNSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKLVdlYkluc3BlY3Rvci5EYXRhYmFzZVRhYmxlT2JqZWN0ID0gZnVuY3Rpb24obmFtZSwg
ZGF0YWJhc2UpCitXZWJJbnNwZWN0b3IuRGF0YWJhc2VUYWJsZU9iamVjdCA9IGNsYXNzIERhdGFi
YXNlVGFibGVPYmplY3QgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0gICAgY29uc29s
ZS5hc3NlcnQoZGF0YWJhc2UgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuRGF0YWJhc2VPYmplY3Qp
OworICAgIGNvbnN0cnVjdG9yKG5hbWUsIGRhdGFiYXNlKQorICAgIHsKKyAgICAgICAgc3VwZXIo
KTsKIAotICAgIHRoaXMuX25hbWUgPSBuYW1lOwotICAgIHRoaXMuX2RhdGFiYXNlID0gZGF0YWJh
c2U7Ci19OworICAgICAgICBjb25zb2xlLmFzc2VydChkYXRhYmFzZSBpbnN0YW5jZW9mIFdlYklu
c3BlY3Rvci5EYXRhYmFzZU9iamVjdCk7CiAKLVdlYkluc3BlY3Rvci5EYXRhYmFzZVRhYmxlT2Jq
ZWN0LlR5cGVJZGVudGlmaWVyID0gImRhdGFiYXNlLXRhYmxlIjsKLVdlYkluc3BlY3Rvci5EYXRh
YmFzZVRhYmxlT2JqZWN0Lk5hbWVDb29raWVLZXkgPSAiZGF0YWJhc2UtdGFibGUtb2JqZWN0LW5h
bWUiOworICAgICAgICB0aGlzLl9uYW1lID0gbmFtZTsKKyAgICAgICAgdGhpcy5fZGF0YWJhc2Ug
PSBkYXRhYmFzZTsKKyAgICB9CiAKLVdlYkluc3BlY3Rvci5EYXRhYmFzZVRhYmxlT2JqZWN0LnBy
b3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkRhdGFiYXNlVGFibGVP
YmplY3QsCisgICAgLy8gUHVibGljCiAKICAgICBnZXQgbmFtZSgpCiAgICAgewogICAgICAgICBy
ZXR1cm4gdGhpcy5fbmFtZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBkYXRhYmFzZSgpCiAg
ICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZGF0YWJhc2U7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBzYXZlSWRlbnRpdHlUb0Nvb2tpZTogZnVuY3Rpb24oY29va2llKQorICAgIHNhdmVJZGVudGl0
eVRvQ29va2llKGNvb2tpZSkKICAgICB7CiAgICAgICAgIGNvb2tpZVtXZWJJbnNwZWN0b3IuRGF0
YWJhc2VUYWJsZU9iamVjdC5OYW1lQ29va2llS2V5XSA9IHRoaXMubmFtZTsKLSAgICB9LAorICAg
IH0KIH07CiAKLVdlYkluc3BlY3Rvci5EYXRhYmFzZVRhYmxlT2JqZWN0LnByb3RvdHlwZS5fX3By
b3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsKK1dlYkluc3BlY3Rvci5EYXRh
YmFzZVRhYmxlT2JqZWN0LlR5cGVJZGVudGlmaWVyID0gImRhdGFiYXNlLXRhYmxlIjsKK1dlYklu
c3BlY3Rvci5EYXRhYmFzZVRhYmxlT2JqZWN0Lk5hbWVDb29raWVLZXkgPSAiZGF0YWJhc2UtdGFi
bGUtb2JqZWN0LW5hbWUiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvTW9kZWxzL0RlYnVnZ2VyRGFzaGJvYXJkLmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0RlYnVnZ2VyRGFzaGJvYXJkLmpzCmluZGV4IGQ3MTM5
NDMuLjI5MzdjOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01vZGVscy9EZWJ1Z2dlckRhc2hib2FyZC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRGVidWdnZXJEYXNoYm9hcmQuanMKQEAgLTIzLDExICsy
MywxMSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYklu
c3BlY3Rvci5EZWJ1Z2dlckRhc2hib2FyZCA9IGZ1bmN0aW9uKCkgewotICAgIFdlYkluc3BlY3Rv
ci5PYmplY3QuY2FsbCh0aGlzKTsKLX07Ci0KLVdlYkluc3BlY3Rvci5EZWJ1Z2dlckRhc2hib2Fy
ZC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5EZWJ1Z2dlckRh
c2hib2FyZCwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlLAor
V2ViSW5zcGVjdG9yLkRlYnVnZ2VyRGFzaGJvYXJkID0gY2xhc3MgRGVidWdnZXJEYXNoYm9hcmQg
ZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0Cit7CisgICAgY29uc3RydWN0b3IoKQorICAgIHsK
KyAgICAgICAgLy8gRklYTUU6IFJlbW92ZSBvbmNlIDxodHRwczovL3dlYmtpdC5vcmcvYi8xNDI4
NjI+IGlzIGZpeGVkLgorICAgICAgICBzdXBlcigpOworICAgIH0KIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRGVmYXVsdERhc2hib2Fy
ZC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9EZWZhdWx0
RGFzaGJvYXJkLmpzCmluZGV4IGYxMDRkY2EuLmNlZWU2ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9EZWZhdWx0RGFzaGJvYXJkLmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9EZWZhdWx0RGFz
aGJvYXJkLmpzCkBAIC0yMywxMTggKzIzLDExMyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1X
ZWJJbnNwZWN0b3IuRGVmYXVsdERhc2hib2FyZCA9IGZ1bmN0aW9uKCkgewotICAgIFdlYkluc3Bl
Y3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKK1dlYkluc3BlY3Rvci5EZWZhdWx0RGFzaGJvYXJkID0g
Y2xhc3MgRGVmYXVsdERhc2hib2FyZCBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKK3sKKyAg
ICBjb25zdHJ1Y3RvcigpCisgICAgeworICAgICAgICBzdXBlcigpOwogCi0gICAgdGhpcy5fd2Fp
dGluZ0ZvckZpcnN0TWFpblJlc291cmNlVG9TdGFydFRyYWNraW5nU2l6ZSA9IHRydWU7CisgICAg
ICAgIHRoaXMuX3dhaXRpbmdGb3JGaXJzdE1haW5SZXNvdXJjZVRvU3RhcnRUcmFja2luZ1NpemUg
PSB0cnVlOwogCi0gICAgLy8gTmVjZXNzYXJ5IGV2ZW50IHJlcXVpcmVkIHRvIHRyYWNrIHBhZ2Ug
bG9hZCB0aW1lIGFuZCByZXNvdXJjZSBzaXplcy4KLSAgICBXZWJJbnNwZWN0b3IuRnJhbWUuYWRk
RXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRnJhbWUuRXZlbnQuTWFpblJlc291cmNlRGlkQ2hh
bmdlLCB0aGlzLl9tYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMpOwotICAgIFdlYkluc3BlY3Rv
ci50aW1lbGluZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxpbmVN
YW5hZ2VyLkV2ZW50LkNhcHR1cmluZ1N0b3BwZWQsIHRoaXMuX2NhcHR1cmluZ1N0b3BwZWQsIHRo
aXMpOworICAgICAgICAvLyBOZWNlc3NhcnkgZXZlbnQgcmVxdWlyZWQgdG8gdHJhY2sgcGFnZSBs
b2FkIHRpbWUgYW5kIHJlc291cmNlIHNpemVzLgorICAgICAgICBXZWJJbnNwZWN0b3IuRnJhbWUu
YWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRnJhbWUuRXZlbnQuTWFpblJlc291cmNlRGlk
Q2hhbmdlLCB0aGlzLl9tYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMpOworICAgICAgICBXZWJJ
bnNwZWN0b3IudGltZWxpbmVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRp
bWVsaW5lTWFuYWdlci5FdmVudC5DYXB0dXJpbmdTdG9wcGVkLCB0aGlzLl9jYXB0dXJpbmdTdG9w
cGVkLCB0aGlzKTsKIAotICAgIC8vIE5lY2Vzc2FyeSBldmVudHMgcmVxdWlyZWQgdG8gdHJhY2sg
bG9hZCBvZiByZXNvdXJjZXMuCi0gICAgV2ViSW5zcGVjdG9yLkZyYW1lLmFkZEV2ZW50TGlzdGVu
ZXIoV2ViSW5zcGVjdG9yLkZyYW1lLkV2ZW50LlJlc291cmNlV2FzQWRkZWQsIHRoaXMuX3Jlc291
cmNlV2FzQWRkZWQsIHRoaXMpOwotICAgIFdlYkluc3BlY3Rvci5mcmFtZVJlc291cmNlTWFuYWdl
ci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5GcmFtZVJlc291cmNlTWFuYWdlci5FdmVu
dC5GcmFtZVdhc0FkZGVkLCB0aGlzLl9mcmFtZVdhc0FkZGVkLCB0aGlzKTsKKyAgICAgICAgLy8g
TmVjZXNzYXJ5IGV2ZW50cyByZXF1aXJlZCB0byB0cmFjayBsb2FkIG9mIHJlc291cmNlcy4KKyAg
ICAgICAgV2ViSW5zcGVjdG9yLkZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkZy
YW1lLkV2ZW50LlJlc291cmNlV2FzQWRkZWQsIHRoaXMuX3Jlc291cmNlV2FzQWRkZWQsIHRoaXMp
OworICAgICAgICBXZWJJbnNwZWN0b3IuZnJhbWVSZXNvdXJjZU1hbmFnZXIuYWRkRXZlbnRMaXN0
ZW5lcihXZWJJbnNwZWN0b3IuRnJhbWVSZXNvdXJjZU1hbmFnZXIuRXZlbnQuRnJhbWVXYXNBZGRl
ZCwgdGhpcy5fZnJhbWVXYXNBZGRlZCwgdGhpcyk7CiAKLSAgICAvLyBOZWNlc3NhcnkgZXZlbnRz
IHJlcXVpcmVkIHRvIHRyYWNrIGNvbnNvbGUgbWVzc2FnZXMuCi0gICAgdmFyIGxvZ01hbmFnZXIg
PSBXZWJJbnNwZWN0b3IubG9nTWFuYWdlcjsKLSAgICBsb2dNYW5hZ2VyLmFkZEV2ZW50TGlzdGVu
ZXIoV2ViSW5zcGVjdG9yLkxvZ01hbmFnZXIuRXZlbnQuQ2xlYXJlZCwgdGhpcy5fY29uc29sZVdh
c0NsZWFyZWQsIHRoaXMpOwotICAgIGxvZ01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNw
ZWN0b3IuTG9nTWFuYWdlci5FdmVudC5BY3RpdmVMb2dDbGVhcmVkLCB0aGlzLl9jb25zb2xlV2Fz
Q2xlYXJlZCwgdGhpcyk7Ci0gICAgbG9nTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3Bl
Y3Rvci5Mb2dNYW5hZ2VyLkV2ZW50Lk1lc3NhZ2VBZGRlZCwgdGhpcy5fY29uc29sZU1lc3NhZ2VB
ZGRlZCwgdGhpcyk7Ci0gICAgbG9nTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rv
ci5Mb2dNYW5hZ2VyLkV2ZW50LlByZXZpb3VzTWVzc2FnZVJlcGVhdENvdW50VXBkYXRlZCwgdGhp
cy5fY29uc29sZU1lc3NhZ2VXYXNSZXBlYXRlZCwgdGhpcyk7CisgICAgICAgIC8vIE5lY2Vzc2Fy
eSBldmVudHMgcmVxdWlyZWQgdG8gdHJhY2sgY29uc29sZSBtZXNzYWdlcy4KKyAgICAgICAgdmFy
IGxvZ01hbmFnZXIgPSBXZWJJbnNwZWN0b3IubG9nTWFuYWdlcjsKKyAgICAgICAgbG9nTWFuYWdl
ci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Mb2dNYW5hZ2VyLkV2ZW50LkNsZWFyZWQs
IHRoaXMuX2NvbnNvbGVXYXNDbGVhcmVkLCB0aGlzKTsKKyAgICAgICAgbG9nTWFuYWdlci5hZGRF
dmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Mb2dNYW5hZ2VyLkV2ZW50LkFjdGl2ZUxvZ0NsZWFy
ZWQsIHRoaXMuX2NvbnNvbGVXYXNDbGVhcmVkLCB0aGlzKTsKKyAgICAgICAgbG9nTWFuYWdlci5h
ZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Mb2dNYW5hZ2VyLkV2ZW50Lk1lc3NhZ2VBZGRl
ZCwgdGhpcy5fY29uc29sZU1lc3NhZ2VBZGRlZCwgdGhpcyk7CisgICAgICAgIGxvZ01hbmFnZXIu
YWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuTG9nTWFuYWdlci5FdmVudC5QcmV2aW91c01l
c3NhZ2VSZXBlYXRDb3VudFVwZGF0ZWQsIHRoaXMuX2NvbnNvbGVNZXNzYWdlV2FzUmVwZWF0ZWQs
IHRoaXMpOwogCi0gICAgdGhpcy5fcmVzb3VyY2VzQ291bnQgPSAwOwotICAgIHRoaXMuX3Jlc291
cmNlc1NpemUgPSAwOwotICAgIHRoaXMuX3RpbWUgPSAwOwotICAgIHRoaXMuX2xvZ3MgPSAwOwot
ICAgIHRoaXMuX2Vycm9ycyA9IDA7Ci0gICAgdGhpcy5faXNzdWVzID0gMDsKLX07Ci0KLVdlYklu
c3BlY3Rvci5EZWZhdWx0RGFzaGJvYXJkLkV2ZW50ID0gewotICAgIERhdGFEaWRDaGFuZ2U6ICJk
ZWZhdWx0LWRhc2hib2FyZC1kYXRhLWRpZC1jaGFuZ2UiCi19OwotCi1XZWJJbnNwZWN0b3IuRGVm
YXVsdERhc2hib2FyZC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rv
ci5EZWZhdWx0RGFzaGJvYXJkLAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLk9iamVjdC5w
cm90b3R5cGUsCisgICAgICAgIHRoaXMuX3Jlc291cmNlc0NvdW50ID0gMDsKKyAgICAgICAgdGhp
cy5fcmVzb3VyY2VzU2l6ZSA9IDA7CisgICAgICAgIHRoaXMuX3RpbWUgPSAwOworICAgICAgICB0
aGlzLl9sb2dzID0gMDsKKyAgICAgICAgdGhpcy5fZXJyb3JzID0gMDsKKyAgICAgICAgdGhpcy5f
aXNzdWVzID0gMDsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCByZXNvdXJjZXND
b3VudCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2VzQ291bnQ7Ci0gICAg
fSwKKyAgICB9CiAKICAgICBzZXQgcmVzb3VyY2VzQ291bnQodmFsdWUpCiAgICAgewogICAgICAg
ICB0aGlzLl9yZXNvdXJjZXNDb3VudCA9IHZhbHVlOwogICAgICAgICB0aGlzLl9kYXRhRGlkQ2hh
bmdlKCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgcmVzb3VyY2VzU2l6ZSgpCiAgICAgewog
ICAgICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2VzU2l6ZTsKLSAgICB9LAorICAgIH0KIAogICAg
IHNldCByZXNvdXJjZXNTaXplKHZhbHVlKQogICAgIHsKICAgICAgICAgdGhpcy5fcmVzb3VyY2Vz
U2l6ZSA9IHZhbHVlOwogICAgICAgICB0aGlzLl9kYXRhRGlkQ2hhbmdlKCk7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICBnZXQgdGltZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fdGltZTsK
LSAgICB9LAorICAgIH0KIAogICAgIHNldCB0aW1lKHZhbHVlKQogICAgIHsKICAgICAgICAgdGhp
cy5fdGltZSA9IHZhbHVlOwogICAgICAgICB0aGlzLl9kYXRhRGlkQ2hhbmdlKCk7Ci0gICAgfSwK
KyAgICB9CiAKICAgICBnZXQgbG9ncygpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fbG9n
czsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBsb2dzKHZhbHVlKQogICAgIHsKICAgICAgICAg
dGhpcy5fbG9ncyA9IHZhbHVlOwogICAgICAgICB0aGlzLl9kYXRhRGlkQ2hhbmdlKCk7Ci0gICAg
fSwKKyAgICB9CiAKICAgICBnZXQgZXJyb3JzKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlz
Ll9lcnJvcnM7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgZXJyb3JzKHZhbHVlKQogICAgIHsK
ICAgICAgICAgdGhpcy5fZXJyb3JzID0gdmFsdWU7CiAgICAgICAgIHRoaXMuX2RhdGFEaWRDaGFu
Z2UoKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBpc3N1ZXMoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHRoaXMuX2lzc3VlczsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBpc3N1ZXModmFs
dWUpCiAgICAgewogICAgICAgICB0aGlzLl9pc3N1ZXMgPSB2YWx1ZTsKICAgICAgICAgdGhpcy5f
ZGF0YURpZENoYW5nZSgpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAg
X2RhdGFEaWRDaGFuZ2U6IGZ1bmN0aW9uKCkKKyAgICBfZGF0YURpZENoYW5nZSgpCiAgICAgewog
ICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRGVmYXVs
dERhc2hib2FyZC5FdmVudC5EYXRhRGlkQ2hhbmdlKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9t
YWluUmVzb3VyY2VEaWRDaGFuZ2U6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9tYWluUmVzb3VyY2VE
aWRDaGFuZ2UoZXZlbnQpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChldmVudC50YXJn
ZXQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuRnJhbWUpOwogCkBAIC0xNTgsMzAgKzE1MywzMCBA
QCBXZWJJbnNwZWN0b3IuRGVmYXVsdERhc2hib2FyZC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAg
dGhpcy5fZGF0YURpZENoYW5nZSgpOwogICAgICAgICB0aGlzLl9zdGFydFVwZGF0aW5nVGltZSgp
OwotICAgIH0sCisgICAgfQogCi0gICAgX2NhcHR1cmluZ1N0b3BwZWQ6IGZ1bmN0aW9uKGV2ZW50
KQorICAgIF9jYXB0dXJpbmdTdG9wcGVkKGV2ZW50KQogICAgIHsKICAgICAgICAgLy8gSWYgcmVj
b3JkaW5nIHN0b3BzLCB3ZSBzaG91bGQgc3RvcCB0aGUgdGltZXIgaWYgaXQgaGFzbid0IHN0b3Bw
ZWQgYWxyZWFkeS4KICAgICAgICAgdGhpcy5fc3RvcFVwZGF0aW5nVGltZSgpOwotICAgIH0sCisg
ICAgfQogCi0gICAgX3Jlc291cmNlV2FzQWRkZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9yZXNv
dXJjZVdhc0FkZGVkKGV2ZW50KQogICAgIHsKICAgICAgICAgKyt0aGlzLnJlc291cmNlc0NvdW50
OwotICAgIH0sCisgICAgfQogCi0gICAgX2ZyYW1lV2FzQWRkZWQ6IGZ1bmN0aW9uKGV2ZW50KQor
ICAgIF9mcmFtZVdhc0FkZGVkKGV2ZW50KQogICAgIHsKICAgICAgICAgKyt0aGlzLnJlc291cmNl
c0NvdW50OwotICAgIH0sCisgICAgfQogCi0gICAgX3Jlc291cmNlU2l6ZURpZENoYW5nZTogZnVu
Y3Rpb24oZXZlbnQpCisgICAgX3Jlc291cmNlU2l6ZURpZENoYW5nZShldmVudCkKICAgICB7CiAg
ICAgICAgIHRoaXMucmVzb3VyY2VzU2l6ZSArPSBldmVudC50YXJnZXQuc2l6ZSAtIGV2ZW50LmRh
dGEucHJldmlvdXNTaXplOwotICAgIH0sCisgICAgfQogCi0gICAgX3N0YXJ0VXBkYXRpbmdUaW1l
OiBmdW5jdGlvbigpCisgICAgX3N0YXJ0VXBkYXRpbmdUaW1lKCkKICAgICB7CiAgICAgICAgIHRo
aXMuX3N0b3BVcGRhdGluZ1RpbWUoKTsKIApAQCAtMTkwLDE4ICsxODUsMTggQEAgV2ViSW5zcGVj
dG9yLkRlZmF1bHREYXNoYm9hcmQucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl90aW1lbGlu
ZUJhc2VUaW1lID0gRGF0ZS5ub3coKTsKICAgICAgICAgdGhpcy5fdGltZUludGVydmFsRGVsYXkg
PSA1MDsKICAgICAgICAgdGhpcy5fdGltZUludGVydmFsSWRlbnRpZmllciA9IHNldEludGVydmFs
KHRoaXMuX3VwZGF0ZVRpbWUuYmluZCh0aGlzKSwgdGhpcy5fdGltZUludGVydmFsRGVsYXkpOwot
ICAgIH0sCisgICAgfQogCi0gICAgX3N0b3BVcGRhdGluZ1RpbWU6IGZ1bmN0aW9uKCkKKyAgICBf
c3RvcFVwZGF0aW5nVGltZSgpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX3RpbWVJbnRlcnZh
bElkZW50aWZpZXIpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgY2xlYXJJbnRlcnZh
bCh0aGlzLl90aW1lSW50ZXJ2YWxJZGVudGlmaWVyKTsKICAgICAgICAgZGVsZXRlIHRoaXMuX3Rp
bWVJbnRlcnZhbElkZW50aWZpZXI7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdXBkYXRlVGltZTog
ZnVuY3Rpb24oKQorICAgIF91cGRhdGVUaW1lKCkKICAgICB7CiAgICAgICAgIHZhciBkdXJhdGlv
biA9IERhdGUubm93KCkgLSB0aGlzLl90aW1lbGluZUJhc2VUaW1lOwogCkBAIC0yMzIsMjEgKzIy
NywyMSBAQCBXZWJJbnNwZWN0b3IuRGVmYXVsdERhc2hib2FyZC5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIHRoaXMudGltZSA9IG1haW5GcmFtZUxvYWRFdmVudFRpbWUgLSBtYWluRnJhbWVTdGFydFRp
bWU7CiAKICAgICAgICAgdGhpcy5fc3RvcFVwZGF0aW5nVGltZSgpOwotICAgIH0sCisgICAgfQog
Ci0gICAgX2NvbnNvbGVNZXNzYWdlQWRkZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9jb25zb2xl
TWVzc2FnZUFkZGVkKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIG1lc3NhZ2UgPSBldmVudC5k
YXRhLm1lc3NhZ2U7CiAgICAgICAgIHRoaXMuX2xhc3RDb25zb2xlTWVzc2FnZVR5cGUgPSBtZXNz
YWdlLmxldmVsOwogICAgICAgICB0aGlzLl9pbmNyZW1lbnRDb25zb2xlTWVzc2FnZVR5cGUobWVz
c2FnZS5sZXZlbCwgbWVzc2FnZS50b3RhbFJlcGVhdENvdW50KTsKLSAgICB9LAorICAgIH0KIAot
ICAgIF9jb25zb2xlTWVzc2FnZVdhc1JlcGVhdGVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfY29u
c29sZU1lc3NhZ2VXYXNSZXBlYXRlZChldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuX2luY3Jl
bWVudENvbnNvbGVNZXNzYWdlVHlwZSh0aGlzLl9sYXN0Q29uc29sZU1lc3NhZ2VUeXBlLCAxKTsK
LSAgICB9LAorICAgIH0KIAotICAgIF9pbmNyZW1lbnRDb25zb2xlTWVzc2FnZVR5cGU6IGZ1bmN0
aW9uKHR5cGUsIGluY3JlbWVudCkKKyAgICBfaW5jcmVtZW50Q29uc29sZU1lc3NhZ2VUeXBlKHR5
cGUsIGluY3JlbWVudCkKICAgICB7CiAgICAgICAgIHN3aXRjaCAodHlwZSkgewogICAgICAgICBj
YXNlIFdlYkluc3BlY3Rvci5MZWdhY3lDb25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwuTG9nOgpA
QCAtMjU5LDkgKzI1NCw5IEBAIFdlYkluc3BlY3Rvci5EZWZhdWx0RGFzaGJvYXJkLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgICAgIHRoaXMuZXJyb3JzICs9IGluY3JlbWVudDsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY29uc29sZVdhc0NsZWFy
ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9jb25zb2xlV2FzQ2xlYXJlZChldmVudCkKICAgICB7
CiAgICAgICAgIHRoaXMuX2xvZ3MgPSAwOwogICAgICAgICB0aGlzLl9pc3N1ZXMgPSAwOwpAQCAt
MjY5LDMgKzI2NCw3IEBAIFdlYkluc3BlY3Rvci5EZWZhdWx0RGFzaGJvYXJkLnByb3RvdHlwZSA9
IHsKICAgICAgICAgdGhpcy5fZGF0YURpZENoYW5nZSgpOwogICAgIH0KIH07CisKK1dlYkluc3Bl
Y3Rvci5EZWZhdWx0RGFzaGJvYXJkLkV2ZW50ID0geworICAgIERhdGFEaWRDaGFuZ2U6ICJkZWZh
dWx0LWRhc2hib2FyZC1kYXRhLWRpZC1jaGFuZ2UiCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0V4ZWN1dGlvbkNvbnRleHQuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRXhlY3V0aW9uQ29udGV4
dC5qcwppbmRleCAxNDM3NWUxLi5iNWFlZjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRXhlY3V0aW9uQ29udGV4dC5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRXhlY3V0aW9uQ29udGV4dC5q
cwpAQCAtMjMsNTEgKzIzLDUwIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAgKi8KIAotV2ViSW5zcGVjdG9yLkV4ZWN1dGlvbkNvbnRleHQgPSBmdW5jdGlvbihpZCwgbmFt
ZSwgaXNQYWdlQ29udGV4dCwgZnJhbWUpCitXZWJJbnNwZWN0b3IuRXhlY3V0aW9uQ29udGV4dCA9
IGNsYXNzIEV4ZWN1dGlvbkNvbnRleHQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0g
ICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIGNvbnN0cnVjdG9yKGlkLCBu
YW1lLCBpc1BhZ2VDb250ZXh0LCBmcmFtZSkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CiAKLSAg
ICBjb25zb2xlLmFzc2VydCh0eXBlb2YgaWQgPT09ICJudW1iZXIiIHx8IGlkID09PSBXZWJJbnNw
ZWN0b3IuUXVpY2tDb25zb2xlLk1haW5GcmFtZUNvbnRleHRFeGVjdXRpb25JZGVudGlmaWVyKTsK
LSAgICBjb25zb2xlLmFzc2VydCh0eXBlb2YgbmFtZSA9PT0gInN0cmluZyIpOworICAgICAgICBj
b25zb2xlLmFzc2VydCh0eXBlb2YgaWQgPT09ICJudW1iZXIiIHx8IGlkID09PSBXZWJJbnNwZWN0
b3IuUXVpY2tDb25zb2xlLk1haW5GcmFtZUNvbnRleHRFeGVjdXRpb25JZGVudGlmaWVyKTsKKyAg
ICAgICAgY29uc29sZS5hc3NlcnQodHlwZW9mIG5hbWUgPT09ICJzdHJpbmciKTsKIAotICAgIHRo
aXMuX2lkID0gaWQ7Ci0gICAgdGhpcy5fbmFtZSA9IG5hbWU7Ci0gICAgdGhpcy5faXNQYWdlQ29u
dGV4dCA9IGlzUGFnZUNvbnRleHQgfHwgZmFsc2U7Ci0gICAgdGhpcy5fZnJhbWUgPSBmcmFtZSB8
fCBudWxsOwotfTsKKyAgICAgICAgdGhpcy5faWQgPSBpZDsKKyAgICAgICAgdGhpcy5fbmFtZSA9
IG5hbWU7CisgICAgICAgIHRoaXMuX2lzUGFnZUNvbnRleHQgPSBpc1BhZ2VDb250ZXh0IHx8IGZh
bHNlOworICAgICAgICB0aGlzLl9mcmFtZSA9IGZyYW1lIHx8IG51bGw7CisgICAgfQogCi1XZWJJ
bnNwZWN0b3IuRXhlY3V0aW9uQ29udGV4dC5zdXBwb3J0ZWQgPSBmdW5jdGlvbigpCi17Ci0gICAg
Ly8gRXhlY3V0aW9uIGNvbnRleHRzIHdlcmUgYWRkZWQgdG8gdGhlIEluc3BlY3RvciBwcm90b2Nv
bCBhbG9uZ3NpZGUgUnVudGltZUFnZW50LmVuYWJsZSBhbmQKLSAgICAvLyBkaXNhYmxlIG1ldGhv
ZHMsIHdoaWNoIHR1cm4gb24gYW5kIG9mZiBzZW5kaW5nIFJ1bnRpbWUgYWdlbnQgZXhlY3V0aW9u
IGNvbnRleHQgY3JlYXRlZCBldmVudHMuCi0gICAgLy8gU28gd2UgY2FuIGZlYXR1cmUgZGV0ZWN0
IHN1cHBvcnQgZm9yIGV4ZWN1dGlvbiBjb250ZXh0cyB3aXRoIHRoZXNlIFJ1bnRpbWVBZ2VudCBm
dW5jdGlvbnMuCi0gICAgcmV0dXJuIHR5cGVvZiBSdW50aW1lQWdlbnQuZW5hYmxlID09PSAiZnVu
Y3Rpb24iOwotfTsKKyAgICAvLyBTdGF0aWMKIAotV2ViSW5zcGVjdG9yLkV4ZWN1dGlvbkNvbnRl
eHQucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuRXhlY3V0aW9u
Q29udGV4dCwKKyAgICBzdGF0aWMgc3VwcG9ydGVkKCkKKyAgICB7CisgICAgICAgIC8vIEV4ZWN1
dGlvbiBjb250ZXh0cyB3ZXJlIGFkZGVkIHRvIHRoZSBJbnNwZWN0b3IgcHJvdG9jb2wgYWxvbmdz
aWRlIFJ1bnRpbWVBZ2VudC5lbmFibGUgYW5kCisgICAgICAgIC8vIGRpc2FibGUgbWV0aG9kcywg
d2hpY2ggdHVybiBvbiBhbmQgb2ZmIHNlbmRpbmcgUnVudGltZSBhZ2VudCBleGVjdXRpb24gY29u
dGV4dCBjcmVhdGVkIGV2ZW50cy4KKyAgICAgICAgLy8gU28gd2UgY2FuIGZlYXR1cmUgZGV0ZWN0
IHN1cHBvcnQgZm9yIGV4ZWN1dGlvbiBjb250ZXh0cyB3aXRoIHRoZXNlIFJ1bnRpbWVBZ2VudCBm
dW5jdGlvbnMuCisgICAgICAgIHJldHVybiB0eXBlb2YgUnVudGltZUFnZW50LmVuYWJsZSA9PT0g
ImZ1bmN0aW9uIjsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBpZCgpCiAgICAg
ewogICAgICAgICByZXR1cm4gdGhpcy5faWQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgbmFt
ZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fbmFtZTsKLSAgICB9LAorICAgIH0KIAog
ICAgIGdldCBpc1BhZ2VDb250ZXh0KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9pc1Bh
Z2VDb250ZXh0OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGZyYW1lKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiB0aGlzLl9mcmFtZTsKICAgICB9CiB9OwotCi1XZWJJbnNwZWN0b3IuRXhlY3V0
aW9uQ29udGV4dC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90
b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9N
b2RlbHMvRXhlY3V0aW9uQ29udGV4dExpc3QuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Nb2RlbHMvRXhlY3V0aW9uQ29udGV4dExpc3QuanMKaW5kZXggYzgwNmMyNy4u
ZTA5NGZjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
TW9kZWxzL0V4ZWN1dGlvbkNvbnRleHRMaXN0LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL01vZGVscy9FeGVjdXRpb25Db250ZXh0TGlzdC5qcwpAQCAtMjMsMzAg
KzIzLDI5IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2Vi
SW5zcGVjdG9yLkV4ZWN1dGlvbkNvbnRleHRMaXN0ID0gZnVuY3Rpb24oKQorV2ViSW5zcGVjdG9y
LkV4ZWN1dGlvbkNvbnRleHRMaXN0ID0gY2xhc3MgRXhlY3V0aW9uQ29udGV4dExpc3QgZXh0ZW5k
cyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRo
aXMpOworICAgIGNvbnN0cnVjdG9yKCkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CiAKLSAgICB0
aGlzLl9jb250ZXh0cyA9IFtdOwotICAgIHRoaXMuX3BhZ2VFeGVjdXRpb25Db250ZXh0ID0gbnVs
bDsKLX07Ci0KLVdlYkluc3BlY3Rvci5FeGVjdXRpb25Db250ZXh0TGlzdC5wcm90b3R5cGUgPSB7
Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5FeGVjdXRpb25Db250ZXh0TGlzdCwKKyAg
ICAgICAgdGhpcy5fY29udGV4dHMgPSBbXTsKKyAgICAgICAgdGhpcy5fcGFnZUV4ZWN1dGlvbkNv
bnRleHQgPSBudWxsOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IHBhZ2VFeGVj
dXRpb25Db250ZXh0KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9wYWdlRXhlY3V0aW9u
Q29udGV4dDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBjb250ZXh0cygpCiAgICAgewogICAg
ICAgICByZXR1cm4gdGhpcy5fY29udGV4dHM7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBhZGQ6IGZ1
bmN0aW9uKGNvbnRleHQpCisgICAgYWRkKGNvbnRleHQpCiAgICAgewogICAgICAgICAvLyBGSVhN
RTogVGhlIGJhY2tlbmQgc2VuZHMgZHVwbGljYXRlIHBhZ2UgY29udGV4dCBleGVjdXRpb24gY29u
dGV4dHMgd2l0aCB0aGUgc2FtZSBpZC4gV2h5PwogICAgICAgICBpZiAoY29udGV4dC5pc1BhZ2VD
b250ZXh0ICYmIHRoaXMuX3BhZ2VFeGVjdXRpb25Db250ZXh0KSB7CkBAIC02MywxMyArNjIsMTEg
QEAgV2ViSW5zcGVjdG9yLkV4ZWN1dGlvbkNvbnRleHRMaXN0LnByb3RvdHlwZSA9IHsKICAgICAg
ICAgfQogCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9LAorICAgIH0KIAotICAgIGNsZWFy
OiBmdW5jdGlvbigpCisgICAgY2xlYXIoKQogICAgIHsKICAgICAgICAgdGhpcy5fY29udGV4dHMg
PSBbXTsKICAgICAgICAgdGhpcy5fcGFnZUV4ZWN1dGlvbkNvbnRleHQgPSBudWxsOwogICAgIH0K
IH07Ci0KLVdlYkluc3BlY3Rvci5FeGVjdXRpb25Db250ZXh0TGlzdC5wcm90b3R5cGUuX19wcm90
b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRnJhbWUuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRnJhbWUuanMKaW5kZXggODQ1NGYyMi4u
MDYxOWM0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
TW9kZWxzL0ZyYW1lLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L01vZGVscy9GcmFtZS5qcwpAQCAtMjMsNjQgKzIzLDM5IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkZyYW1lID0gZnVuY3Rpb24oaWQs
IG5hbWUsIHNlY3VyaXR5T3JpZ2luLCBsb2FkZXJJZGVudGlmaWVyLCBtYWluUmVzb3VyY2UpCitX
ZWJJbnNwZWN0b3IuRnJhbWUgPSBjbGFzcyBGcmFtZSBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmpl
Y3QKIHsKLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CisgICAgY29uc3RydWN0
b3IoaWQsIG5hbWUsIHNlY3VyaXR5T3JpZ2luLCBsb2FkZXJJZGVudGlmaWVyLCBtYWluUmVzb3Vy
Y2UpCisgICAgeworICAgICAgICBzdXBlcigpOwogCi0gICAgY29uc29sZS5hc3NlcnQoaWQpOwor
ICAgICAgICBjb25zb2xlLmFzc2VydChpZCk7CiAKLSAgICB0aGlzLl9pZCA9IGlkOworICAgICAg
ICB0aGlzLl9pZCA9IGlkOwogCi0gICAgdGhpcy5fbmFtZSA9IG51bGw7Ci0gICAgdGhpcy5fc2Vj
dXJpdHlPcmlnaW4gPSBudWxsOworICAgICAgICB0aGlzLl9uYW1lID0gbnVsbDsKKyAgICAgICAg
dGhpcy5fc2VjdXJpdHlPcmlnaW4gPSBudWxsOwogCi0gICAgdGhpcy5fcmVzb3VyY2VDb2xsZWN0
aW9uID0gbmV3IFdlYkluc3BlY3Rvci5SZXNvdXJjZUNvbGxlY3Rpb247Ci0gICAgdGhpcy5fcHJv
dmlzaW9uYWxSZXNvdXJjZUNvbGxlY3Rpb24gPSBuZXcgV2ViSW5zcGVjdG9yLlJlc291cmNlQ29s
bGVjdGlvbjsKKyAgICAgICAgdGhpcy5fcmVzb3VyY2VDb2xsZWN0aW9uID0gbmV3IFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZUNvbGxlY3Rpb247CisgICAgICAgIHRoaXMuX3Byb3Zpc2lvbmFsUmVzb3Vy
Y2VDb2xsZWN0aW9uID0gbmV3IFdlYkluc3BlY3Rvci5SZXNvdXJjZUNvbGxlY3Rpb247CiAKLSAg
ICB0aGlzLl9jaGlsZEZyYW1lcyA9IFtdOwotICAgIHRoaXMuX2NoaWxkRnJhbWVJZGVudGlmaWVy
TWFwID0ge307CisgICAgICAgIHRoaXMuX2NoaWxkRnJhbWVzID0gW107CisgICAgICAgIHRoaXMu
X2NoaWxkRnJhbWVJZGVudGlmaWVyTWFwID0ge307CiAKLSAgICB0aGlzLl9wYXJlbnRGcmFtZSA9
IG51bGw7Ci0gICAgdGhpcy5faXNNYWluRnJhbWUgPSBmYWxzZTsKKyAgICAgICAgdGhpcy5fcGFy
ZW50RnJhbWUgPSBudWxsOworICAgICAgICB0aGlzLl9pc01haW5GcmFtZSA9IGZhbHNlOwogCi0g
ICAgdGhpcy5fZG9tQ29udGVudFJlYWR5RXZlbnRUaW1lc3RhbXAgPSBOYU47Ci0gICAgdGhpcy5f
bG9hZEV2ZW50VGltZXN0YW1wID0gTmFOOworICAgICAgICB0aGlzLl9kb21Db250ZW50UmVhZHlF
dmVudFRpbWVzdGFtcCA9IE5hTjsKKyAgICAgICAgdGhpcy5fbG9hZEV2ZW50VGltZXN0YW1wID0g
TmFOOwogCi0gICAgdGhpcy5fZXhlY3V0aW9uQ29udGV4dExpc3QgPSBuZXcgV2ViSW5zcGVjdG9y
LkV4ZWN1dGlvbkNvbnRleHRMaXN0OworICAgICAgICB0aGlzLl9leGVjdXRpb25Db250ZXh0TGlz
dCA9IG5ldyBXZWJJbnNwZWN0b3IuRXhlY3V0aW9uQ29udGV4dExpc3Q7CiAKLSAgICB0aGlzLmlu
aXRpYWxpemUobmFtZSwgc2VjdXJpdHlPcmlnaW4sIGxvYWRlcklkZW50aWZpZXIsIG1haW5SZXNv
dXJjZSk7Ci19OwotCi1XZWJJbnNwZWN0b3IuT2JqZWN0LmFkZENvbnN0cnVjdG9yRnVuY3Rpb25z
KFdlYkluc3BlY3Rvci5GcmFtZSk7Ci0KLVdlYkluc3BlY3Rvci5GcmFtZS5FdmVudCA9IHsKLSAg
ICBOYW1lRGlkQ2hhbmdlOiAiZnJhbWUtbmFtZS1kaWQtY2hhbmdlIiwKLSAgICBTZWN1cml0eU9y
aWdpbkRpZENoYW5nZTogImZyYW1lLXNlY3VyaXR5LW9yaWdpbi1kaWQtY2hhbmdlIiwKLSAgICBN
YWluUmVzb3VyY2VEaWRDaGFuZ2U6ICJmcmFtZS1tYWluLXJlc291cmNlLWRpZC1jaGFuZ2UiLAot
ICAgIFByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQ6ICJmcmFtZS1wcm92aXNpb25hbC1sb2FkLXN0YXJ0
ZWQiLAotICAgIFByb3Zpc2lvbmFsTG9hZENvbW1pdHRlZDogImZyYW1lLXByb3Zpc2lvbmFsLWxv
YWQtY29tbWl0dGVkIiwKLSAgICBQcm92aXNpb25hbExvYWRDbGVhcmVkOiAiZnJhbWUtcHJvdmlz
aW9uYWwtbG9hZC1jbGVhcmVkIiwKLSAgICBQcm92aXNpb25hbFJlc291cmNlV2FzQWRkZWQ6ICJm
cmFtZS1wcm92aXNpb25hbC1yZXNvdXJjZS13YXMtYWRkZWQiLAotICAgIFJlc291cmNlV2FzQWRk
ZWQ6ICJmcmFtZS1yZXNvdXJjZS13YXMtYWRkZWQiLAotICAgIFJlc291cmNlV2FzUmVtb3ZlZDog
ImZyYW1lLXJlc291cmNlLXdhcy1yZW1vdmVkIiwKLSAgICBBbGxSZXNvdXJjZXNSZW1vdmVkOiAi
ZnJhbWUtYWxsLXJlc291cmNlcy1yZW1vdmVkIiwKLSAgICBDaGlsZEZyYW1lV2FzQWRkZWQ6ICJm
cmFtZS1jaGlsZC1mcmFtZS13YXMtYWRkZWQiLAotICAgIENoaWxkRnJhbWVXYXNSZW1vdmVkOiAi
ZnJhbWUtY2hpbGQtZnJhbWUtd2FzLXJlbW92ZWQiLAotICAgIEFsbENoaWxkRnJhbWVzUmVtb3Zl
ZDogImZyYW1lLWFsbC1jaGlsZC1mcmFtZXMtcmVtb3ZlZCIsCi0gICAgUGFnZUV4ZWN1dGlvbkNv
bnRleHRDaGFuZ2VkOiAiZnJhbWUtcGFnZS1leGVjdXRpb24tY29udGV4dC1jaGFuZ2VkIiwKLSAg
ICBFeGVjdXRpb25Db250ZXh0c0NsZWFyZWQ6ICJmcmFtZS1leGVjdXRpb24tY29udGV4dHMtY2xl
YXJlZCIKLX07Ci0KLVdlYkluc3BlY3Rvci5GcmFtZS5UeXBlSWRlbnRpZmllciA9ICJGcmFtZSI7
Ci1XZWJJbnNwZWN0b3IuRnJhbWUuTWFpblJlc291cmNlVVJMQ29va2llS2V5ID0gImZyYW1lLW1h
aW4tcmVzb3VyY2UtdXJsIjsKLVdlYkluc3BlY3Rvci5GcmFtZS5Jc01haW5GcmFtZUNvb2tpZUtl
eSA9ICJmcmFtZS1pcy1tYWluLWZyYW1lIjsKLQotV2ViSW5zcGVjdG9yLkZyYW1lLnByb3RvdHlw
ZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkZyYW1lLAorICAgICAgICB0aGlz
LmluaXRpYWxpemUobmFtZSwgc2VjdXJpdHlPcmlnaW4sIGxvYWRlcklkZW50aWZpZXIsIG1haW5S
ZXNvdXJjZSk7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKLSAgICBpbml0aWFsaXplOiBmdW5j
dGlvbihuYW1lLCBzZWN1cml0eU9yaWdpbiwgbG9hZGVySWRlbnRpZmllciwgbWFpblJlc291cmNl
KQorICAgIGluaXRpYWxpemUobmFtZSwgc2VjdXJpdHlPcmlnaW4sIGxvYWRlcklkZW50aWZpZXIs
IG1haW5SZXNvdXJjZSkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGxvYWRlcklkZW50
aWZpZXIpOwogICAgICAgICBjb25zb2xlLmFzc2VydChtYWluUmVzb3VyY2UpOwpAQCAtMTEyLDkg
Kzg3LDkgQEAgV2ViSW5zcGVjdG9yLkZyYW1lLnByb3RvdHlwZSA9IHsKIAogICAgICAgICBpZiAo
dGhpcy5fbmFtZSAhPT0gb2xkTmFtZSkKICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRv
TGlzdGVuZXJzKFdlYkluc3BlY3Rvci5GcmFtZS5FdmVudC5OYW1lRGlkQ2hhbmdlLCB7b2xkTmFt
ZX0pOwotICAgIH0sCisgICAgfQogCi0gICAgc3RhcnRQcm92aXNpb25hbExvYWQ6IGZ1bmN0aW9u
KHByb3Zpc2lvbmFsTWFpblJlc291cmNlKQorICAgIHN0YXJ0UHJvdmlzaW9uYWxMb2FkKHByb3Zp
c2lvbmFsTWFpblJlc291cmNlKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQocHJvdmlz
aW9uYWxNYWluUmVzb3VyY2UpOwogCkBAIC0xMjYsOSArMTAxLDkgQEAgV2ViSW5zcGVjdG9yLkZy
YW1lLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fcHJvdmlzaW9uYWxSZXNvdXJjZUNvbGxl
Y3Rpb24ucmVtb3ZlQWxsUmVzb3VyY2VzKCk7CiAKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50
VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkZyYW1lLkV2ZW50LlByb3Zpc2lvbmFsTG9hZFN0YXJ0
ZWQpOwotICAgIH0sCisgICAgfQogCi0gICAgY29tbWl0UHJvdmlzaW9uYWxMb2FkOiBmdW5jdGlv
bihzZWN1cml0eU9yaWdpbikKKyAgICBjb21taXRQcm92aXNpb25hbExvYWQoc2VjdXJpdHlPcmln
aW4pCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9wcm92aXNpb25hbE1haW5S
ZXNvdXJjZSk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3Byb3Zpc2lvbmFsTG9hZGVy
SWRlbnRpZmllcik7CkBAIC0xNjQsOSArMTM5LDkgQEAgV2ViSW5zcGVjdG9yLkZyYW1lLnByb3Rv
dHlwZSA9IHsKIAogICAgICAgICBpZiAodGhpcy5fc2VjdXJpdHlPcmlnaW4gIT09IG9sZFNlY3Vy
aXR5T3JpZ2luKQogICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2Vi
SW5zcGVjdG9yLkZyYW1lLkV2ZW50LlNlY3VyaXR5T3JpZ2luRGlkQ2hhbmdlLCB7b2xkU2VjdXJp
dHlPcmlnaW59KTsKLSAgICB9LAorICAgIH0KIAotICAgIGNsZWFyUHJvdmlzaW9uYWxMb2FkOiBm
dW5jdGlvbihza2lwUHJvdmlzaW9uYWxMb2FkQ2xlYXJlZEV2ZW50KQorICAgIGNsZWFyUHJvdmlz
aW9uYWxMb2FkKHNraXBQcm92aXNpb25hbExvYWRDbGVhcmVkRXZlbnQpCiAgICAgewogICAgICAg
ICBpZiAoIXRoaXMuX3Byb3Zpc2lvbmFsTG9hZGVySWRlbnRpZmllcikKICAgICAgICAgICAgIHJl
dHVybjsKQEAgLTE3NywxMjcgKzE1MiwxMjcgQEAgV2ViSW5zcGVjdG9yLkZyYW1lLnByb3RvdHlw
ZSA9IHsKIAogICAgICAgICBpZiAoIXNraXBQcm92aXNpb25hbExvYWRDbGVhcmVkRXZlbnQpCiAg
ICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRnJh
bWUuRXZlbnQuUHJvdmlzaW9uYWxMb2FkQ2xlYXJlZCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBn
ZXQgaWQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2lkOwotICAgIH0sCisgICAgfQog
CiAgICAgZ2V0IGxvYWRlcklkZW50aWZpZXIoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMu
X2xvYWRlcklkZW50aWZpZXI7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgcHJvdmlzaW9uYWxM
b2FkZXJJZGVudGlmaWVyKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9wcm92aXNpb25h
bExvYWRlcklkZW50aWZpZXI7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgbmFtZSgpCiAgICAg
ewogICAgICAgICByZXR1cm4gdGhpcy5fbmFtZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBz
ZWN1cml0eU9yaWdpbigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc2VjdXJpdHlPcmln
aW47Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgdXJsKCkKICAgICB7CiAgICAgICAgIHJldHVy
biB0aGlzLl9tYWluUmVzb3VyY2UuX3VybDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBkb21U
cmVlKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fZG9tVHJlZSkKICAgICAgICAgICAgIHRo
aXMuX2RvbVRyZWUgPSBuZXcgV2ViSW5zcGVjdG9yLkRPTVRyZWUodGhpcyk7CiAgICAgICAgIHJl
dHVybiB0aGlzLl9kb21UcmVlOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHBhZ2VFeGVjdXRp
b25Db250ZXh0KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9leGVjdXRpb25Db250ZXh0
TGlzdC5wYWdlRXhlY3V0aW9uQ29udGV4dDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBleGVj
dXRpb25Db250ZXh0TGlzdCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZXhlY3V0aW9u
Q29udGV4dExpc3Q7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjbGVhckV4ZWN1dGlvbkNvbnRleHRz
OiBmdW5jdGlvbihjb21taXR0aW5nUHJvdmlzaW9uYWxMb2FkKQorICAgIGNsZWFyRXhlY3V0aW9u
Q29udGV4dHMoY29tbWl0dGluZ1Byb3Zpc2lvbmFsTG9hZCkKICAgICB7CiAgICAgICAgIGlmICh0
aGlzLl9leGVjdXRpb25Db250ZXh0TGlzdC5jb250ZXh0cy5sZW5ndGgpIHsKICAgICAgICAgICAg
IHRoaXMuX2V4ZWN1dGlvbkNvbnRleHRMaXN0LmNsZWFyKCk7CiAgICAgICAgICAgICB0aGlzLmRp
c3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRnJhbWUuRXZlbnQuRXhlY3V0aW9u
Q29udGV4dHNDbGVhcmVkLCB7Y29tbWl0dGluZ1Byb3Zpc2lvbmFsTG9hZDohIWNvbW1pdHRpbmdQ
cm92aXNpb25hbExvYWR9KTsKICAgICAgICAgfQotICAgIH0sCisgICAgfQogCi0gICAgYWRkRXhl
Y3V0aW9uQ29udGV4dDogZnVuY3Rpb24oY29udGV4dCkKKyAgICBhZGRFeGVjdXRpb25Db250ZXh0
KGNvbnRleHQpCiAgICAgewogICAgICAgICB2YXIgY2hhbmdlZFBhZ2VDb250ZXh0ID0gdGhpcy5f
ZXhlY3V0aW9uQ29udGV4dExpc3QuYWRkKGNvbnRleHQpOwogCiAgICAgICAgIGlmIChjaGFuZ2Vk
UGFnZUNvbnRleHQpCiAgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhX
ZWJJbnNwZWN0b3IuRnJhbWUuRXZlbnQuUGFnZUV4ZWN1dGlvbkNvbnRleHRDaGFuZ2VkKTsKLSAg
ICB9LAorICAgIH0KIAogICAgIGdldCBtYWluUmVzb3VyY2UoKQogICAgIHsKICAgICAgICAgcmV0
dXJuIHRoaXMuX21haW5SZXNvdXJjZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBwcm92aXNp
b25hbE1haW5SZXNvdXJjZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcHJvdmlzaW9u
YWxNYWluUmVzb3VyY2U7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgcGFyZW50RnJhbWUoKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3BhcmVudEZyYW1lOwotICAgIH0sCisgICAgfQog
CiAgICAgZ2V0IGNoaWxkRnJhbWVzKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9jaGls
ZEZyYW1lczsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBkb21Db250ZW50UmVhZHlFdmVudFRp
bWVzdGFtcCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZG9tQ29udGVudFJlYWR5RXZl
bnRUaW1lc3RhbXA7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgbG9hZEV2ZW50VGltZXN0YW1w
KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9sb2FkRXZlbnRUaW1lc3RhbXA7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBpc01haW5GcmFtZTogZnVuY3Rpb24oKQorICAgIGlzTWFpbkZyYW1l
KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9pc01haW5GcmFtZTsKLSAgICB9LAorICAg
IH0KIAotICAgIG1hcmtBc01haW5GcmFtZTogZnVuY3Rpb24oKQorICAgIG1hcmtBc01haW5GcmFt
ZSgpCiAgICAgewogICAgICAgICB0aGlzLl9pc01haW5GcmFtZSA9IHRydWU7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICB1bm1hcmtBc01haW5GcmFtZTogZnVuY3Rpb24oKQorICAgIHVubWFya0FzTWFp
bkZyYW1lKCkKICAgICB7CiAgICAgICAgIHRoaXMuX2lzTWFpbkZyYW1lID0gZmFsc2U7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBtYXJrRE9NQ29udGVudFJlYWR5RXZlbnQ6IGZ1bmN0aW9uKHRpbWVz
dGFtcCkKKyAgICBtYXJrRE9NQ29udGVudFJlYWR5RXZlbnQodGltZXN0YW1wKQogICAgIHsKICAg
ICAgICAgdGhpcy5fZG9tQ29udGVudFJlYWR5RXZlbnRUaW1lc3RhbXAgPSB0aW1lc3RhbXAgfHwg
TmFOOwotICAgIH0sCisgICAgfQogCi0gICAgbWFya0xvYWRFdmVudDogZnVuY3Rpb24odGltZXN0
YW1wKQorICAgIG1hcmtMb2FkRXZlbnQodGltZXN0YW1wKQogICAgIHsKICAgICAgICAgdGhpcy5f
bG9hZEV2ZW50VGltZXN0YW1wID0gdGltZXN0YW1wIHx8IE5hTjsKLSAgICB9LAorICAgIH0KIAot
ICAgIGlzRGV0YWNoZWQ6IGZ1bmN0aW9uKCkKKyAgICBpc0RldGFjaGVkKCkKICAgICB7CiAgICAg
ICAgIHZhciBmcmFtZSA9IHRoaXM7CiAgICAgICAgIHdoaWxlIChmcmFtZSkgewpAQCAtMzA3LDE0
ICsyODIsMTQgQEAgV2ViSW5zcGVjdG9yLkZyYW1lLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQog
CiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0sCisgICAgfQogCi0gICAgY2hpbGRGcmFtZUZv
cklkZW50aWZpZXI6IGZ1bmN0aW9uKGZyYW1lSWQpCisgICAgY2hpbGRGcmFtZUZvcklkZW50aWZp
ZXIoZnJhbWVJZCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9jaGlsZEZyYW1lSWRlbnRp
Zmllck1hcFtmcmFtZUlkXSB8fCBudWxsOwotICAgIH0sCisgICAgfQogCi0gICAgYWRkQ2hpbGRG
cmFtZTogZnVuY3Rpb24oZnJhbWUpCisgICAgYWRkQ2hpbGRGcmFtZShmcmFtZSkKICAgICB7CiAg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KGZyYW1lIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkZyYW1l
KTsKICAgICAgICAgaWYgKCEoZnJhbWUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuRnJhbWUpKQpA
QCAtMzMyLDkgKzMwNyw5IEBAIFdlYkluc3BlY3Rvci5GcmFtZS5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIGZyYW1lLl9wYXJlbnRGcmFtZSA9IHRoaXM7CiAKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2
ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkZyYW1lLkV2ZW50LkNoaWxkRnJhbWVXYXNBZGRl
ZCwge2NoaWxkRnJhbWU6IGZyYW1lfSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZW1vdmVDaGls
ZEZyYW1lOiBmdW5jdGlvbihmcmFtZU9yRnJhbWVJZCkKKyAgICByZW1vdmVDaGlsZEZyYW1lKGZy
YW1lT3JGcmFtZUlkKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoZnJhbWVPckZyYW1l
SWQpOwogCkBAIC0zNTksOSArMzM0LDkgQEAgV2ViSW5zcGVjdG9yLkZyYW1lLnByb3RvdHlwZSA9
IHsKICAgICAgICAgY2hpbGRGcmFtZS5fcGFyZW50RnJhbWUgPSBudWxsOwogCiAgICAgICAgIHRo
aXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5GcmFtZS5FdmVudC5DaGls
ZEZyYW1lV2FzUmVtb3ZlZCwge2NoaWxkRnJhbWV9KTsKLSAgICB9LAorICAgIH0KIAotICAgIHJl
bW92ZUFsbENoaWxkRnJhbWVzOiBmdW5jdGlvbigpCisgICAgcmVtb3ZlQWxsQ2hpbGRGcmFtZXMo
KQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9jaGlsZEZyYW1lcy5sZW5ndGgpCiAgICAgICAg
ICAgICByZXR1cm47CkBAIC0zNzMsMTQgKzM0OCwxNCBAQCBXZWJJbnNwZWN0b3IuRnJhbWUucHJv
dG90eXBlID0gewogICAgICAgICB0aGlzLl9jaGlsZEZyYW1lSWRlbnRpZmllck1hcCA9IHt9Owog
CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5GcmFt
ZS5FdmVudC5BbGxDaGlsZEZyYW1lc1JlbW92ZWQpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0
IHJlc291cmNlcygpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2VDb2xsZWN0
aW9uLnJlc291cmNlczsKLSAgICB9LAorICAgIH0KIAotICAgIHJlc291cmNlRm9yVVJMOiBmdW5j
dGlvbih1cmwsIHJlY3Vyc2l2ZWx5U2VhcmNoQ2hpbGRGcmFtZXMpCisgICAgcmVzb3VyY2VGb3JV
UkwodXJsLCByZWN1cnNpdmVseVNlYXJjaENoaWxkRnJhbWVzKQogICAgIHsKICAgICAgICAgdmFy
IHJlc291cmNlID0gdGhpcy5fcmVzb3VyY2VDb2xsZWN0aW9uLnJlc291cmNlRm9yVVJMKHVybCk7
CiAgICAgICAgIGlmIChyZXNvdXJjZSkKQEAgLTQwNCwxNCArMzc5LDE0IEBAIFdlYkluc3BlY3Rv
ci5GcmFtZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gbnVsbDsK
LSAgICB9LAorICAgIH0KIAotICAgIHJlc291cmNlc1dpdGhUeXBlOiBmdW5jdGlvbih0eXBlKQor
ICAgIHJlc291cmNlc1dpdGhUeXBlKHR5cGUpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5f
cmVzb3VyY2VDb2xsZWN0aW9uLnJlc291cmNlc1dpdGhUeXBlKHR5cGUpOwotICAgIH0sCisgICAg
fQogCi0gICAgYWRkUmVzb3VyY2U6IGZ1bmN0aW9uKHJlc291cmNlKQorICAgIGFkZFJlc291cmNl
KHJlc291cmNlKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQocmVzb3VyY2UgaW5zdGFu
Y2VvZiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UpOwogICAgICAgICBpZiAoIShyZXNvdXJjZSBpbnN0
YW5jZW9mIFdlYkluc3BlY3Rvci5SZXNvdXJjZSkpCkBAIC00MzIsOSArNDA3LDkgQEAgV2ViSW5z
cGVjdG9yLkZyYW1lLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX3Jlc291cmNlQ29s
bGVjdGlvbi5hZGRSZXNvdXJjZShyZXNvdXJjZSk7CiAgICAgICAgICAgICB0aGlzLmRpc3BhdGNo
RXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRnJhbWUuRXZlbnQuUmVzb3VyY2VXYXNBZGRl
ZCwge3Jlc291cmNlfSk7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAotICAgIHJlbW92ZVJl
c291cmNlOiBmdW5jdGlvbihyZXNvdXJjZU9yVVJMKQorICAgIHJlbW92ZVJlc291cmNlKHJlc291
cmNlT3JVUkwpCiAgICAgewogICAgICAgICAvLyBUaGlzIGRvZXMgbm90IHJlbW92ZSBwcm92aXNp
b25hbCByZXNvdXJjZXMuCiAKQEAgLTQ0NSw5ICs0MjAsOSBAQCBXZWJJbnNwZWN0b3IuRnJhbWUu
cHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9kaXNhc3NvY2lhdGVXaXRoUmVzb3VyY2UocmVz
b3VyY2UpOwogCiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3Bl
Y3Rvci5GcmFtZS5FdmVudC5SZXNvdXJjZVdhc1JlbW92ZWQsIHtyZXNvdXJjZX0pOwotICAgIH0s
CisgICAgfQogCi0gICAgcmVtb3ZlQWxsUmVzb3VyY2VzOiBmdW5jdGlvbigpCisgICAgcmVtb3Zl
QWxsUmVzb3VyY2VzKCkKICAgICB7CiAgICAgICAgIC8vIFRoaXMgZG9lcyBub3QgcmVtb3ZlIHBy
b3Zpc2lvbmFsIHJlc291cmNlcywgdXNlIGNsZWFyUHJvdmlzaW9uYWxMb2FkIGZvciB0aGF0Lgog
CkBAIC00NjEsNDMgKzQzNiw2MyBAQCBXZWJJbnNwZWN0b3IuRnJhbWUucHJvdG90eXBlID0gewog
ICAgICAgICB0aGlzLl9yZXNvdXJjZUNvbGxlY3Rpb24ucmVtb3ZlQWxsUmVzb3VyY2VzKCk7CiAK
ICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkZyYW1l
LkV2ZW50LkFsbFJlc291cmNlc1JlbW92ZWQpOwotICAgIH0sCisgICAgfQogCi0gICAgc2F2ZUlk
ZW50aXR5VG9Db29raWU6IGZ1bmN0aW9uKGNvb2tpZSkKKyAgICBzYXZlSWRlbnRpdHlUb0Nvb2tp
ZShjb29raWUpCiAgICAgewogICAgICAgICBjb29raWVbV2ViSW5zcGVjdG9yLkZyYW1lLk1haW5S
ZXNvdXJjZVVSTENvb2tpZUtleV0gPSB0aGlzLm1haW5SZXNvdXJjZS51cmwuaGFzaDsKICAgICAg
ICAgY29va2llW1dlYkluc3BlY3Rvci5GcmFtZS5Jc01haW5GcmFtZUNvb2tpZUtleV0gPSB0aGlz
Ll9pc01haW5GcmFtZTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAgIF9p
c1Byb3Zpc2lvbmFsUmVzb3VyY2U6IGZ1bmN0aW9uKHJlc291cmNlKQorICAgIF9pc1Byb3Zpc2lv
bmFsUmVzb3VyY2UocmVzb3VyY2UpCiAgICAgewogICAgICAgICByZXR1cm4gKHJlc291cmNlLmxv
YWRlcklkZW50aWZpZXIgJiYgdGhpcy5fcHJvdmlzaW9uYWxMb2FkZXJJZGVudGlmaWVyICYmIHJl
c291cmNlLmxvYWRlcklkZW50aWZpZXIgPT09IHRoaXMuX3Byb3Zpc2lvbmFsTG9hZGVySWRlbnRp
Zmllcik7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfYXNzb2NpYXRlV2l0aFJlc291cmNlOiBmdW5j
dGlvbihyZXNvdXJjZSkKKyAgICBfYXNzb2NpYXRlV2l0aFJlc291cmNlKHJlc291cmNlKQogICAg
IHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoIXJlc291cmNlLl9wYXJlbnRGcmFtZSk7CiAgICAg
ICAgIGlmIChyZXNvdXJjZS5fcGFyZW50RnJhbWUpCiAgICAgICAgICAgICByZXR1cm47CiAKICAg
ICAgICAgcmVzb3VyY2UuX3BhcmVudEZyYW1lID0gdGhpczsKLSAgICB9LAorICAgIH0KIAotICAg
IF9kaXNhc3NvY2lhdGVXaXRoUmVzb3VyY2U6IGZ1bmN0aW9uKHJlc291cmNlKQorICAgIF9kaXNh
c3NvY2lhdGVXaXRoUmVzb3VyY2UocmVzb3VyY2UpCiAgICAgewogICAgICAgICBjb25zb2xlLmFz
c2VydChyZXNvdXJjZS5wYXJlbnRGcmFtZSA9PT0gdGhpcyk7CiAgICAgICAgIGlmIChyZXNvdXJj
ZS5wYXJlbnRGcmFtZSAhPT0gdGhpcykKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBy
ZXNvdXJjZS5fcGFyZW50RnJhbWUgPSBudWxsOwotICAgIH0sCisgICAgfQogCi0gICAgX2Rpc3Bh
dGNoTWFpblJlc291cmNlRGlkQ2hhbmdlRXZlbnQ6IGZ1bmN0aW9uKG9sZE1haW5SZXNvdXJjZSkK
KyAgICBfZGlzcGF0Y2hNYWluUmVzb3VyY2VEaWRDaGFuZ2VFdmVudChvbGRNYWluUmVzb3VyY2Up
CiAgICAgewogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0
b3IuRnJhbWUuRXZlbnQuTWFpblJlc291cmNlRGlkQ2hhbmdlLCB7b2xkTWFpblJlc291cmNlfSk7
CiAgICAgfQogfTsKIAotV2ViSW5zcGVjdG9yLkZyYW1lLnByb3RvdHlwZS5fX3Byb3RvX18gPSBX
ZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsKK1dlYkluc3BlY3Rvci5GcmFtZS5FdmVudCA9
IHsKKyAgICBOYW1lRGlkQ2hhbmdlOiAiZnJhbWUtbmFtZS1kaWQtY2hhbmdlIiwKKyAgICBTZWN1
cml0eU9yaWdpbkRpZENoYW5nZTogImZyYW1lLXNlY3VyaXR5LW9yaWdpbi1kaWQtY2hhbmdlIiwK
KyAgICBNYWluUmVzb3VyY2VEaWRDaGFuZ2U6ICJmcmFtZS1tYWluLXJlc291cmNlLWRpZC1jaGFu
Z2UiLAorICAgIFByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQ6ICJmcmFtZS1wcm92aXNpb25hbC1sb2Fk
LXN0YXJ0ZWQiLAorICAgIFByb3Zpc2lvbmFsTG9hZENvbW1pdHRlZDogImZyYW1lLXByb3Zpc2lv
bmFsLWxvYWQtY29tbWl0dGVkIiwKKyAgICBQcm92aXNpb25hbExvYWRDbGVhcmVkOiAiZnJhbWUt
cHJvdmlzaW9uYWwtbG9hZC1jbGVhcmVkIiwKKyAgICBQcm92aXNpb25hbFJlc291cmNlV2FzQWRk
ZWQ6ICJmcmFtZS1wcm92aXNpb25hbC1yZXNvdXJjZS13YXMtYWRkZWQiLAorICAgIFJlc291cmNl
V2FzQWRkZWQ6ICJmcmFtZS1yZXNvdXJjZS13YXMtYWRkZWQiLAorICAgIFJlc291cmNlV2FzUmVt
b3ZlZDogImZyYW1lLXJlc291cmNlLXdhcy1yZW1vdmVkIiwKKyAgICBBbGxSZXNvdXJjZXNSZW1v
dmVkOiAiZnJhbWUtYWxsLXJlc291cmNlcy1yZW1vdmVkIiwKKyAgICBDaGlsZEZyYW1lV2FzQWRk
ZWQ6ICJmcmFtZS1jaGlsZC1mcmFtZS13YXMtYWRkZWQiLAorICAgIENoaWxkRnJhbWVXYXNSZW1v
dmVkOiAiZnJhbWUtY2hpbGQtZnJhbWUtd2FzLXJlbW92ZWQiLAorICAgIEFsbENoaWxkRnJhbWVz
UmVtb3ZlZDogImZyYW1lLWFsbC1jaGlsZC1mcmFtZXMtcmVtb3ZlZCIsCisgICAgUGFnZUV4ZWN1
dGlvbkNvbnRleHRDaGFuZ2VkOiAiZnJhbWUtcGFnZS1leGVjdXRpb24tY29udGV4dC1jaGFuZ2Vk
IiwKKyAgICBFeGVjdXRpb25Db250ZXh0c0NsZWFyZWQ6ICJmcmFtZS1leGVjdXRpb24tY29udGV4
dHMtY2xlYXJlZCIKK307CisKK1dlYkluc3BlY3Rvci5GcmFtZS5UeXBlSWRlbnRpZmllciA9ICJG
cmFtZSI7CitXZWJJbnNwZWN0b3IuRnJhbWUuTWFpblJlc291cmNlVVJMQ29va2llS2V5ID0gImZy
YW1lLW1haW4tcmVzb3VyY2UtdXJsIjsKK1dlYkluc3BlY3Rvci5GcmFtZS5Jc01haW5GcmFtZUNv
b2tpZUtleSA9ICJmcmFtZS1pcy1tYWluLWZyYW1lIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9HZW9tZXRyeS5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9HZW9tZXRyeS5qcwppbmRleCBlYTVjMDgx
Li4wYmZlMjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Nb2RlbHMvR2VvbWV0cnkuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvTW9kZWxzL0dlb21ldHJ5LmpzCkBAIC0yMyw2MiArMjMsNjYgQEAKICAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuUG9pbnQgPSBmdW5j
dGlvbih4LCB5KQorV2ViSW5zcGVjdG9yLlBvaW50ID0gY2xhc3MgUG9pbnQKIHsKLSAgICB0aGlz
LnggPSB4IHx8IDA7Ci0gICAgdGhpcy55ID0geSB8fCAwOwotfTsKKyAgICBjb25zdHJ1Y3Rvcih4
LCB5KQorICAgIHsKKyAgICAgICAgdGhpcy54ID0geCB8fCAwOworICAgICAgICB0aGlzLnkgPSB5
IHx8IDA7CisgICAgfQogCi1XZWJJbnNwZWN0b3IuUG9pbnQuZnJvbUV2ZW50ID0gZnVuY3Rpb24o
ZXZlbnQpCi17Ci0gICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuUG9pbnQoZXZlbnQucGFnZVgs
IGV2ZW50LnBhZ2VZKTsKLX07CisgICAgLy8gU3RhdGljCiAKLVdlYkluc3BlY3Rvci5Qb2ludC5m
cm9tRXZlbnRJbkVsZW1lbnQgPSBmdW5jdGlvbihldmVudCwgZWxlbWVudCkKLXsKLSAgICB2YXIg
d2tQb2ludCA9IHdpbmRvdy53ZWJraXRDb252ZXJ0UG9pbnRGcm9tUGFnZVRvTm9kZShlbGVtZW50
LCBuZXcgV2ViS2l0UG9pbnQoZXZlbnQucGFnZVgsIGV2ZW50LnBhZ2VZKSk7Ci0gICAgcmV0dXJu
IG5ldyBXZWJJbnNwZWN0b3IuUG9pbnQod2tQb2ludC54LCB3a1BvaW50LnkpOwotfTsKKyAgICBz
dGF0aWMgZnJvbUV2ZW50KGV2ZW50KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNw
ZWN0b3IuUG9pbnQoZXZlbnQucGFnZVgsIGV2ZW50LnBhZ2VZKTsKKyAgICB9CisKKyAgICBzdGF0
aWMgZnJvbUV2ZW50SW5FbGVtZW50KGV2ZW50LCBlbGVtZW50KQorICAgIHsKKyAgICAgICAgdmFy
IHdrUG9pbnQgPSB3aW5kb3cud2Via2l0Q29udmVydFBvaW50RnJvbVBhZ2VUb05vZGUoZWxlbWVu
dCwgbmV3IFdlYktpdFBvaW50KGV2ZW50LnBhZ2VYLCBldmVudC5wYWdlWSkpOworICAgICAgICBy
ZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5Qb2ludCh3a1BvaW50LngsIHdrUG9pbnQueSk7CisgICAg
fQogCi1XZWJJbnNwZWN0b3IuUG9pbnQucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBX
ZWJJbnNwZWN0b3IuUG9pbnQsCisgICAgLy8gUHVibGljCiAKLSAgICB0b1N0cmluZyA6IGZ1bmN0
aW9uKCkKKyAgICB0b1N0cmluZygpCiAgICAgewogICAgICAgICByZXR1cm4gIldlYkluc3BlY3Rv
ci5Qb2ludFsiICsgdGhpcy54ICsgIiwiICsgdGhpcy55ICsgIl0iOwotICAgIH0sCisgICAgfQog
Ci0gICAgY29weTogZnVuY3Rpb24oKQorICAgIGNvcHkoKQogICAgIHsKICAgICAgICAgcmV0dXJu
IG5ldyBXZWJJbnNwZWN0b3IuUG9pbnQodGhpcy54LCB0aGlzLnkpOwotICAgIH0sCisgICAgfQog
Ci0gICAgZXF1YWxzOiBmdW5jdGlvbihhbm90aGVyUG9pbnQpCisgICAgZXF1YWxzKGFub3RoZXJQ
b2ludCkKICAgICB7CiAgICAgICAgIHJldHVybiAodGhpcy54ID09PSBhbm90aGVyUG9pbnQueCAm
JiB0aGlzLnkgPT09IGFub3RoZXJQb2ludC55KTsKICAgICB9CiB9OwogCi1XZWJJbnNwZWN0b3Iu
U2l6ZSA9IGZ1bmN0aW9uKHdpZHRoLCBoZWlnaHQpCitXZWJJbnNwZWN0b3IuU2l6ZSA9IGNsYXNz
IFNpemUKIHsKLSAgICB0aGlzLndpZHRoID0gd2lkdGggfHwgMDsKLSAgICB0aGlzLmhlaWdodCA9
IGhlaWdodCB8fCAwOwotfTsKKyAgICBjb25zdHJ1Y3Rvcih3aWR0aCwgaGVpZ2h0KQorICAgIHsK
KyAgICAgICAgdGhpcy53aWR0aCA9IHdpZHRoIHx8IDA7CisgICAgICAgIHRoaXMuaGVpZ2h0ID0g
aGVpZ2h0IHx8IDA7CisgICAgfQogCi1XZWJJbnNwZWN0b3IuU2l6ZS5wcm90b3R5cGUgPSB7Ci0g
ICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5TaXplLAorICAgIC8vIFB1YmxpYwogCi0gICAg
dG9TdHJpbmc6IGZ1bmN0aW9uKCkKKyAgICB0b1N0cmluZygpCiAgICAgewogICAgICAgICByZXR1
cm4gIldlYkluc3BlY3Rvci5TaXplWyIgKyB0aGlzLndpZHRoICsgIiwiICsgdGhpcy5oZWlnaHQg
KyAiXSI7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjb3B5OiBmdW5jdGlvbigpCisgICAgY29weSgp
CiAgICAgewogICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5TaXplKHRoaXMud2lkdGgs
IHRoaXMuaGVpZ2h0KTsKLSAgICB9LAorICAgIH0KIAotICAgIGVxdWFsczogZnVuY3Rpb24oYW5v
dGhlclNpemUpCisgICAgZXF1YWxzKGFub3RoZXJTaXplKQogICAgIHsKICAgICAgICAgcmV0dXJu
ICh0aGlzLndpZHRoID09PSBhbm90aGVyU2l6ZS53aWR0aCAmJiB0aGlzLmhlaWdodCA9PT0gYW5v
dGhlclNpemUuaGVpZ2h0KTsKICAgICB9CkBAIC04Nyw0NCArOTEsNDcgQEAgV2ViSW5zcGVjdG9y
LlNpemUucHJvdG90eXBlID0gewogV2ViSW5zcGVjdG9yLlNpemUuWkVST19TSVpFID0gbmV3IFdl
Ykluc3BlY3Rvci5TaXplKDAsIDApOwogCiAKLVdlYkluc3BlY3Rvci5SZWN0ID0gZnVuY3Rpb24o
eCwgeSwgd2lkdGgsIGhlaWdodCkKK1dlYkluc3BlY3Rvci5SZWN0ID0gY2xhc3MgUmVjdAogewot
ICAgIHRoaXMub3JpZ2luID0gbmV3IFdlYkluc3BlY3Rvci5Qb2ludCh4IHx8IDAsIHkgfHwgMCk7
Ci0gICAgdGhpcy5zaXplID0gbmV3IFdlYkluc3BlY3Rvci5TaXplKHdpZHRoIHx8IDAsIGhlaWdo
dCB8fCAwKTsKLX07CisgICAgY29uc3RydWN0b3IoeCwgeSwgd2lkdGgsIGhlaWdodCkKKyAgICB7
CisgICAgICAgIHRoaXMub3JpZ2luID0gbmV3IFdlYkluc3BlY3Rvci5Qb2ludCh4IHx8IDAsIHkg
fHwgMCk7CisgICAgICAgIHRoaXMuc2l6ZSA9IG5ldyBXZWJJbnNwZWN0b3IuU2l6ZSh3aWR0aCB8
fCAwLCBoZWlnaHQgfHwgMCk7CisgICAgfQogCi1XZWJJbnNwZWN0b3IuUmVjdC5yZWN0RnJvbUNs
aWVudFJlY3QgPSBmdW5jdGlvbihjbGllbnRSZWN0KQotewotICAgIHJldHVybiBuZXcgV2ViSW5z
cGVjdG9yLlJlY3QoY2xpZW50UmVjdC5sZWZ0LCBjbGllbnRSZWN0LnRvcCwgY2xpZW50UmVjdC53
aWR0aCwgY2xpZW50UmVjdC5oZWlnaHQpOwotfTsKKyAgICAvLyBTdGF0aWMKIAotV2ViSW5zcGVj
dG9yLlJlY3QudW5pb25PZlJlY3RzID0gZnVuY3Rpb24ocmVjdHMpCi17Ci0gICAgdmFyIHVuaW9u
ID0gcmVjdHNbMF07Ci0gICAgZm9yICh2YXIgaSA9IDE7IGkgPCByZWN0cy5sZW5ndGg7ICsraSkK
LSAgICAgICAgdW5pb24gPSB1bmlvbi51bmlvbldpdGhSZWN0KHJlY3RzW2ldKTsKLSAgICByZXR1
cm4gdW5pb247Ci19OworICAgIHN0YXRpYyByZWN0RnJvbUNsaWVudFJlY3QoY2xpZW50UmVjdCkK
KyAgICB7CisgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlJlY3QoY2xpZW50UmVjdC5s
ZWZ0LCBjbGllbnRSZWN0LnRvcCwgY2xpZW50UmVjdC53aWR0aCwgY2xpZW50UmVjdC5oZWlnaHQp
OworICAgIH0KKworICAgIHN0YXRpYyB1bmlvbk9mUmVjdHMocmVjdHMpCisgICAgeworICAgICAg
ICB2YXIgdW5pb24gPSByZWN0c1swXTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCByZWN0
cy5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgIHVuaW9uID0gdW5pb24udW5pb25XaXRoUmVjdChy
ZWN0c1tpXSk7CisgICAgICAgIHJldHVybiB1bmlvbjsKKyAgICB9CiAKLVdlYkluc3BlY3Rvci5S
ZWN0LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlJlY3QsCisg
ICAgLy8gUHVibGljCiAKLSAgICB0b1N0cmluZzogZnVuY3Rpb24oKQorICAgIHRvU3RyaW5nKCkK
ICAgICB7CiAgICAgICAgIHJldHVybiAiV2ViSW5zcGVjdG9yLlJlY3RbIiArIFt0aGlzLm9yaWdp
bi54LCB0aGlzLm9yaWdpbi55LCB0aGlzLnNpemUud2lkdGgsIHRoaXMuc2l6ZS5oZWlnaHRdLmpv
aW4oIiwgIikgKyAiXSI7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjb3B5OiBmdW5jdGlvbigpCisg
ICAgY29weSgpCiAgICAgewogICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5SZWN0KHRo
aXMub3JpZ2luLngsIHRoaXMub3JpZ2luLnksIHRoaXMuc2l6ZS53aWR0aCwgdGhpcy5zaXplLmhl
aWdodCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBlcXVhbHM6IGZ1bmN0aW9uKGFub3RoZXJSZWN0
KQorICAgIGVxdWFscyhhbm90aGVyUmVjdCkKICAgICB7CiAgICAgICAgIHJldHVybiAodGhpcy5v
cmlnaW4uZXF1YWxzKGFub3RoZXJSZWN0Lm9yaWdpbikgJiYgdGhpcy5zaXplLmVxdWFscyhhbm90
aGVyUmVjdC5zaXplKSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBpbnNldDogZnVuY3Rpb24oaW5z
ZXRzKQorICAgIGluc2V0KGluc2V0cykKICAgICB7CiAgICAgICAgIHJldHVybiBuZXcgV2ViSW5z
cGVjdG9yLlJlY3QoCiAgICAgICAgICAgICB0aGlzLm9yaWdpbi54ICsgaW5zZXRzLmxlZnQsCkBA
IC0xMzIsOSArMTM5LDkgQEAgV2ViSW5zcGVjdG9yLlJlY3QucHJvdG90eXBlID0gewogICAgICAg
ICAgICAgdGhpcy5zaXplLndpZHRoIC0gaW5zZXRzLmxlZnQgLSBpbnNldHMucmlnaHQsCiAgICAg
ICAgICAgICB0aGlzLnNpemUuaGVpZ2h0IC0gaW5zZXRzLnRvcCAtIGluc2V0cy5ib3R0b20KICAg
ICAgICAgKTsKLSAgICB9LAorICAgIH0KIAotICAgIHBhZDogZnVuY3Rpb24ocGFkZGluZykKKyAg
ICBwYWQocGFkZGluZykKICAgICB7CiAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlJl
Y3QoCiAgICAgICAgICAgICB0aGlzLm9yaWdpbi54IC0gcGFkZGluZywKQEAgLTE0MiwzOSArMTQ5
LDM5IEBAIFdlYkluc3BlY3Rvci5SZWN0LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMu
c2l6ZS53aWR0aCArIHBhZGRpbmcgKiAyLAogICAgICAgICAgICAgdGhpcy5zaXplLmhlaWdodCAr
IHBhZGRpbmcgKiAyCiAgICAgICAgICk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBtaW5YOiBmdW5j
dGlvbigpCisgICAgbWluWCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5vcmlnaW4ueDsK
LSAgICB9LAorICAgIH0KIAotICAgIG1pblk6IGZ1bmN0aW9uKCkKKyAgICBtaW5ZKCkKICAgICB7
CiAgICAgICAgIHJldHVybiB0aGlzLm9yaWdpbi55OwotICAgIH0sCisgICAgfQogCi0gICAgbWlk
WDogZnVuY3Rpb24oKQorICAgIG1pZFgoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMub3Jp
Z2luLnggKyAodGhpcy5zaXplLndpZHRoIC8gMik7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBtaWRZ
OiBmdW5jdGlvbigpCisgICAgbWlkWSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5vcmln
aW4ueSArICh0aGlzLnNpemUuaGVpZ2h0IC8gMik7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBtYXhY
OiBmdW5jdGlvbigpCisgICAgbWF4WCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5vcmln
aW4ueCArIHRoaXMuc2l6ZS53aWR0aDsKLSAgICB9LAorICAgIH0KIAotICAgIG1heFk6IGZ1bmN0
aW9uKCkKKyAgICBtYXhZKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLm9yaWdpbi55ICsg
dGhpcy5zaXplLmhlaWdodDsKLSAgICB9LAorICAgIH0KIAotICAgIGludGVyc2VjdGlvbldpdGhS
ZWN0OiBmdW5jdGlvbihyZWN0KQorICAgIGludGVyc2VjdGlvbldpdGhSZWN0KHJlY3QpCiAgICAg
ewogICAgICAgICB2YXIgeDEgPSBNYXRoLm1heCh0aGlzLm1pblgoKSwgcmVjdC5taW5YKCkpOwog
ICAgICAgICB2YXIgeDIgPSBNYXRoLm1pbih0aGlzLm1heFgoKSwgcmVjdC5tYXhYKCkpOwpAQCAt
MTkwLDE4ICsxOTcsMTggQEAgV2ViSW5zcGVjdG9yLlJlY3QucHJvdG90eXBlID0gewogICAgICAg
ICBpbnRlcnNlY3Rpb24ub3JpZ2luLnkgPSB5MTsKICAgICAgICAgaW50ZXJzZWN0aW9uLnNpemUu
aGVpZ2h0ID0geTIgLSB5MTsKICAgICAgICAgcmV0dXJuIGludGVyc2VjdGlvbjsKLSAgICB9LAor
ICAgIH0KIAotICAgIHVuaW9uV2l0aFJlY3Q6IGZ1bmN0aW9uKHJlY3QpCisgICAgdW5pb25XaXRo
UmVjdChyZWN0KQogICAgIHsKICAgICAgICAgdmFyIHggPSBNYXRoLm1pbih0aGlzLm1pblgoKSwg
cmVjdC5taW5YKCkpOwogICAgICAgICB2YXIgeSA9IE1hdGgubWluKHRoaXMubWluWSgpLCByZWN0
Lm1pblkoKSk7CiAgICAgICAgIHZhciB3aWR0aCA9IE1hdGgubWF4KHRoaXMubWF4WCgpLCByZWN0
Lm1heFgoKSkgLSB4OwogICAgICAgICB2YXIgaGVpZ2h0ID0gTWF0aC5tYXgodGhpcy5tYXhZKCks
IHJlY3QubWF4WSgpKSAtIHk7CiAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlJlY3Qo
eCwgeSwgd2lkdGgsIGhlaWdodCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICByb3VuZDogZnVuY3Rp
b24oKQorICAgIHJvdW5kKCkKICAgICB7CiAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9y
LlJlY3QoCiAgICAgICAgICAgICBNYXRoLmZsb29yKHRoaXMub3JpZ2luLngpLApAQCAtMjE1LDMz
ICsyMjIsMzQgQEAgV2ViSW5zcGVjdG9yLlJlY3QucHJvdG90eXBlID0gewogV2ViSW5zcGVjdG9y
LlJlY3QuWkVST19SRUNUID0gbmV3IFdlYkluc3BlY3Rvci5SZWN0KDAsIDAsIDAsIDApOwogCiAK
LVdlYkluc3BlY3Rvci5FZGdlSW5zZXRzID0gZnVuY3Rpb24odG9wLCByaWdodCwgYm90dG9tLCBs
ZWZ0KQorV2ViSW5zcGVjdG9yLkVkZ2VJbnNldHMgPSBjbGFzcyBFZGdlSW5zZXRzCiB7Ci0gICAg
Y29uc29sZS5hc3NlcnQoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSB8fCBhcmd1bWVudHMubGVuZ3Ro
ID09PSA0KTsKKyAgICBjb25zdHJ1Y3Rvcih0b3AsIHJpZ2h0LCBib3R0b20sIGxlZnQpCisgICAg
eworICAgICAgICBjb25zb2xlLmFzc2VydChhcmd1bWVudHMubGVuZ3RoID09PSAxIHx8IGFyZ3Vt
ZW50cy5sZW5ndGggPT09IDQpOwogCi0gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDEpIHsK
LSAgICAgICAgdGhpcy50b3AgPSB0b3A7Ci0gICAgICAgIHRoaXMucmlnaHQgPSB0b3A7Ci0gICAg
ICAgIHRoaXMuYm90dG9tID0gdG9wOwotICAgICAgICB0aGlzLmxlZnQgPSB0b3A7Ci0gICAgfSBl
bHNlIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSA0KSB7Ci0gICAgICAgIHRoaXMudG9wID0gdG9w
OwotICAgICAgICB0aGlzLnJpZ2h0ID0gcmlnaHQ7Ci0gICAgICAgIHRoaXMuYm90dG9tID0gYm90
dG9tOwotICAgICAgICB0aGlzLmxlZnQgPSBsZWZ0OworICAgICAgICBpZiAoYXJndW1lbnRzLmxl
bmd0aCA9PT0gMSkgeworICAgICAgICAgICAgdGhpcy50b3AgPSB0b3A7CisgICAgICAgICAgICB0
aGlzLnJpZ2h0ID0gdG9wOworICAgICAgICAgICAgdGhpcy5ib3R0b20gPSB0b3A7CisgICAgICAg
ICAgICB0aGlzLmxlZnQgPSB0b3A7CisgICAgICAgIH0gZWxzZSBpZiAoYXJndW1lbnRzLmxlbmd0
aCA9PT0gNCkgeworICAgICAgICAgICAgdGhpcy50b3AgPSB0b3A7CisgICAgICAgICAgICB0aGlz
LnJpZ2h0ID0gcmlnaHQ7CisgICAgICAgICAgICB0aGlzLmJvdHRvbSA9IGJvdHRvbTsKKyAgICAg
ICAgICAgIHRoaXMubGVmdCA9IGxlZnQ7CisgICAgICAgIH0KICAgICB9Ci19OwogCi1XZWJJbnNw
ZWN0b3IuRWRnZUluc2V0cy5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3Bl
Y3Rvci5FZGdlSW5zZXRzLAorICAgIC8vIFB1YmxpYwogCi0gICAgZXF1YWxzOiBmdW5jdGlvbihh
bm90aGVySW5zZXQpCisgICAgZXF1YWxzKGFub3RoZXJJbnNldCkKICAgICB7CiAgICAgICAgIHJl
dHVybiAodGhpcy50b3AgPT09IGFub3RoZXJJbnNldC50b3AgJiYgdGhpcy5yaWdodCA9PT0gYW5v
dGhlckluc2V0LnJpZ2h0ICYmCiAgICAgICAgICAgICAgICAgdGhpcy5ib3R0b20gPT09IGFub3Ro
ZXJJbnNldC5ib3R0b20gJiYgdGhpcy5sZWZ0ID09PSBhbm90aGVySW5zZXQubGVmdCk7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBjb3B5OiBmdW5jdGlvbigpCisgICAgY29weSgpCiAgICAgewogICAg
ICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5FZGdlSW5zZXRzKHRoaXMudG9wLCB0aGlzLnJp
Z2h0LCB0aGlzLmJvdHRvbSwgdGhpcy5sZWZ0KTsKICAgICB9CkBAIC0yNTQsMjMgKzI2MiwyNCBA
QCBXZWJJbnNwZWN0b3IuUmVjdEVkZ2UgPSB7CiAgICAgTUFYX1kgOiAzCiB9OwogCi1XZWJJbnNw
ZWN0b3IuUXVhZCA9IGZ1bmN0aW9uKHF1YWQpCitXZWJJbnNwZWN0b3IuUXVhZCA9IGNsYXNzIFF1
YWQKIHsKLSAgICB0aGlzLnBvaW50cyA9IFsKLSAgICAgICAgbmV3IFdlYkluc3BlY3Rvci5Qb2lu
dChxdWFkWzBdLCBxdWFkWzFdKSwgLy8gdG9wIGxlZnQKLSAgICAgICAgbmV3IFdlYkluc3BlY3Rv
ci5Qb2ludChxdWFkWzJdLCBxdWFkWzNdKSwgLy8gdG9wIHJpZ2h0Ci0gICAgICAgIG5ldyBXZWJJ
bnNwZWN0b3IuUG9pbnQocXVhZFs0XSwgcXVhZFs1XSksIC8vIGJvdHRvbSByaWdodAotICAgICAg
ICBuZXcgV2ViSW5zcGVjdG9yLlBvaW50KHF1YWRbNl0sIHF1YWRbN10pICAvLyBib3R0b20gbGVm
dAotICAgIF07CisgICAgY29uc3RydWN0b3IocXVhZCkKKyAgICB7CisgICAgICAgIHRoaXMucG9p
bnRzID0gWworICAgICAgICAgICAgbmV3IFdlYkluc3BlY3Rvci5Qb2ludChxdWFkWzBdLCBxdWFk
WzFdKSwgLy8gdG9wIGxlZnQKKyAgICAgICAgICAgIG5ldyBXZWJJbnNwZWN0b3IuUG9pbnQocXVh
ZFsyXSwgcXVhZFszXSksIC8vIHRvcCByaWdodAorICAgICAgICAgICAgbmV3IFdlYkluc3BlY3Rv
ci5Qb2ludChxdWFkWzRdLCBxdWFkWzVdKSwgLy8gYm90dG9tIHJpZ2h0CisgICAgICAgICAgICBu
ZXcgV2ViSW5zcGVjdG9yLlBvaW50KHF1YWRbNl0sIHF1YWRbN10pICAvLyBib3R0b20gbGVmdAor
ICAgICAgICBdOwogCi0gICAgdGhpcy53aWR0aCA9IE1hdGgucm91bmQoTWF0aC5zcXJ0KE1hdGgu
cG93KHF1YWRbMF0gLSBxdWFkWzJdLCAyKSArIE1hdGgucG93KHF1YWRbMV0gLSBxdWFkWzNdLCAy
KSkpOwotICAgIHRoaXMuaGVpZ2h0ID0gTWF0aC5yb3VuZChNYXRoLnNxcnQoTWF0aC5wb3cocXVh
ZFswXSAtIHF1YWRbNl0sIDIpICsgTWF0aC5wb3cocXVhZFsxXSAtIHF1YWRbN10sIDIpKSk7Ci19
OworICAgICAgICB0aGlzLndpZHRoID0gTWF0aC5yb3VuZChNYXRoLnNxcnQoTWF0aC5wb3cocXVh
ZFswXSAtIHF1YWRbMl0sIDIpICsgTWF0aC5wb3cocXVhZFsxXSAtIHF1YWRbM10sIDIpKSk7Cisg
ICAgICAgIHRoaXMuaGVpZ2h0ID0gTWF0aC5yb3VuZChNYXRoLnNxcnQoTWF0aC5wb3cocXVhZFsw
XSAtIHF1YWRbNl0sIDIpICsgTWF0aC5wb3cocXVhZFsxXSAtIHF1YWRbN10sIDIpKSk7CisgICAg
fQogCi1XZWJJbnNwZWN0b3IuUXVhZC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdl
Ykluc3BlY3Rvci5RdWFkLAorICAgIC8vIFB1YmxpYwogCi0gICAgdG9Qcm90b2NvbDogZnVuY3Rp
b24oKQorICAgIHRvUHJvdG9jb2woKQogICAgIHsKICAgICAgICAgcmV0dXJuIFsKICAgICAgICAg
ICAgIHRoaXMucG9pbnRzWzBdLngsIHRoaXMucG9pbnRzWzBdLnksCkBAIC0yODEsMTUgKzI5MCwx
NiBAQCBXZWJJbnNwZWN0b3IuUXVhZC5wcm90b3R5cGUgPSB7CiAgICAgfQogfTsKIAotV2ViSW5z
cGVjdG9yLlBvbHlnb24gPSBmdW5jdGlvbihwb2ludHMpCitXZWJJbnNwZWN0b3IuUG9seWdvbiA9
IGNsYXNzIFBvbHlnb24KIHsKLSAgICB0aGlzLnBvaW50cyA9IHBvaW50czsKLX0KKyAgICBjb25z
dHJ1Y3Rvcihwb2ludHMpCisgICAgeworICAgICAgICB0aGlzLnBvaW50cyA9IHBvaW50czsKKyAg
ICB9CiAKLVdlYkluc3BlY3Rvci5Qb2x5Z29uLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3Rv
cjogV2ViSW5zcGVjdG9yLlBvbHlnb24sCisgICAgLy8gUHVibGljCiAKLSAgICBib3VuZHM6IGZ1
bmN0aW9uKCkKKyAgICBib3VuZHMoKQogICAgIHsKICAgICAgICAgdmFyIG1pblggPSBOdW1iZXIu
TUFYX1ZBTFVFOwogICAgICAgICB2YXIgbWluWSA9IE51bWJlci5NQVhfVkFMVUU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvR3JhZGllbnQu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvR3JhZGllbnQu
anMKaW5kZXggNzIwNGRlYi4uN2EyZDkzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0dyYWRpZW50LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9HcmFkaWVudC5qcwpAQCAtMjMsMTMgKzIzLDE0
IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAorLy8gRklYTUU6
IENvbnZlcnQgdG8gY2xhc3M/CiBXZWJJbnNwZWN0b3IuR3JhZGllbnQgPSB7Ci0gICAgVHlwZXMg
OiB7CisgICAgVHlwZXM6IHsKICAgICAgICAgTGluZWFyOiAibGluZWFyLWdyYWRpZW50IiwKICAg
ICAgICAgUmFkaWFsOiAicmFkaWFsLWdyYWRpZW50IgogICAgIH0sCiAKLSAgICBmcm9tU3RyaW5n
OiBmdW5jdGlvbihjc3NTdHJpbmcpCisgICAgZnJvbVN0cmluZyhjc3NTdHJpbmcpCiAgICAgewog
ICAgICAgICB2YXIgdHlwZTsKICAgICAgICAgdmFyIG9wZW5pbmdQYXJlbnRoZXNpc0luZGV4ID0g
Y3NzU3RyaW5nLmluZGV4T2YoIigiKTsKQEAgLTk1LDcgKzk2LDcgQEAgV2ViSW5zcGVjdG9yLkdy
YWRpZW50ID0gewogICAgICAgICByZXR1cm4gZ3JhZGllbnQ7CiAgICAgfSwKIAotICAgIHN0b3Bz
V2l0aENvbXBvbmVudHM6IGZ1bmN0aW9uKGNvbXBvbmVudHMpCisgICAgc3RvcHNXaXRoQ29tcG9u
ZW50cyhjb21wb25lbnRzKQogICAgIHsKICAgICAgICAgLy8gRklYTUU6IGhhbmRsZSBsZW5ndGhz
LgogICAgICAgICB2YXIgc3RvcHMgPSBjb21wb25lbnRzLm1hcChmdW5jdGlvbihjb21wb25lbnQp
IHsKQEAgLTEzMSw3ICsxMzIsNyBAQCBXZWJJbnNwZWN0b3IuR3JhZGllbnQgPSB7CiAgICAgICAg
IHJldHVybiBzdG9wczsKICAgICB9LAogCi0gICAgc3RyaW5nRnJvbVN0b3BzOiBmdW5jdGlvbihz
dG9wcykKKyAgICBzdHJpbmdGcm9tU3RvcHMoc3RvcHMpCiAgICAgewogICAgICAgICB2YXIgY291
bnQgPSBzdG9wcy5sZW5ndGggLSAxOwogICAgICAgICByZXR1cm4gc3RvcHMubWFwKGZ1bmN0aW9u
KHN0b3AsIGluZGV4KSB7CkBAIC0xNDMsNzQgKzE0NCw3NyBAQCBXZWJJbnNwZWN0b3IuR3JhZGll
bnQgPSB7CiAgICAgfQogfTsKIAotV2ViSW5zcGVjdG9yLkxpbmVhckdyYWRpZW50ID0gZnVuY3Rp
b24oYW5nbGUsIHN0b3BzKQorV2ViSW5zcGVjdG9yLkxpbmVhckdyYWRpZW50ID0gY2xhc3MgTGlu
ZWFyR3JhZGllbnQKIHsKLSAgICB0aGlzLnR5cGUgPSBXZWJJbnNwZWN0b3IuR3JhZGllbnQuVHlw
ZXMuTGluZWFyOwotICAgIHRoaXMuYW5nbGUgPSBhbmdsZTsKLSAgICB0aGlzLnN0b3BzID0gc3Rv
cHM7Ci19OworICAgIGNvbnN0cnVjdG9yKGFuZ2xlLCBzdG9wcykKKyAgICB7CisgICAgICAgIHRo
aXMudHlwZSA9IFdlYkluc3BlY3Rvci5HcmFkaWVudC5UeXBlcy5MaW5lYXI7CisgICAgICAgIHRo
aXMuYW5nbGUgPSBhbmdsZTsKKyAgICAgICAgdGhpcy5zdG9wcyA9IHN0b3BzOworICAgIH0KIAot
V2ViSW5zcGVjdG9yLkxpbmVhckdyYWRpZW50LmxpbmVhckdyYWRpZW50V2l0aENvbXBvbmVudHMg
PSBmdW5jdGlvbihjb21wb25lbnRzKQotewotICAgIHZhciBhbmdsZSA9IDE4MDsKKyAgICAvLyBT
dGF0aWMKKworICAgIHN0YXRpYyBsaW5lYXJHcmFkaWVudFdpdGhDb21wb25lbnRzKGNvbXBvbmVu
dHMpCisgICAgeworICAgICAgICB2YXIgYW5nbGUgPSAxODA7CiAKLSAgICBpZiAoY29tcG9uZW50
c1swXS5sZW5ndGggPT09IDEgJiYgY29tcG9uZW50c1swXVswXS5zdWJzdHIoLTMpID09PSAiZGVn
IikgewotICAgICAgICBhbmdsZSA9IChwYXJzZUZsb2F0KGNvbXBvbmVudHNbMF1bMF0pICUgMzYw
ICsgMzYwKSAlIDM2MDsKLSAgICAgICAgY29tcG9uZW50cy5zaGlmdCgpOwotICAgIH0gZWxzZSBp
ZiAoY29tcG9uZW50c1swXVswXSA9PT0gInRvIikgewotICAgICAgICBjb21wb25lbnRzWzBdLnNo
aWZ0KCk7Ci0gICAgICAgIHN3aXRjaCAoY29tcG9uZW50c1swXS5zb3J0KCkuam9pbigiICIpKSB7
Ci0gICAgICAgIGNhc2UgInRvcCI6Ci0gICAgICAgICAgICBhbmdsZSA9IDA7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSAicmlnaHQgdG9wIjoKLSAgICAgICAgICAgIGFuZ2xlID0g
NDU7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAicmlnaHQiOgotICAgICAgICAg
ICAgYW5nbGUgPSA5MDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlICJib3R0b20g
cmlnaHQiOgotICAgICAgICAgICAgYW5nbGUgPSAxMzU7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSAiYm90dG9tIjoKLSAgICAgICAgICAgIGFuZ2xlID0gMTgwOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgImJvdHRvbSBsZWZ0IjoKLSAgICAgICAgICAgIGFuZ2xl
ID0gMjI1OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgImxlZnQiOgotICAgICAg
ICAgICAgYW5nbGUgPSAyNzA7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAibGVm
dCB0b3AiOgotICAgICAgICAgICAgYW5nbGUgPSAzMTU7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIkNvdWxkbid0IHBhcnNl
IGFuZ2xlIFwidG8gIiArIGNvbXBvbmVudHNbMF0uam9pbigiICIpICsgIlwiIik7CisgICAgICAg
IGlmIChjb21wb25lbnRzWzBdLmxlbmd0aCA9PT0gMSAmJiBjb21wb25lbnRzWzBdWzBdLnN1YnN0
cigtMykgPT09ICJkZWciKSB7CisgICAgICAgICAgICBhbmdsZSA9IChwYXJzZUZsb2F0KGNvbXBv
bmVudHNbMF1bMF0pICUgMzYwICsgMzYwKSAlIDM2MDsKKyAgICAgICAgICAgIGNvbXBvbmVudHMu
c2hpZnQoKTsKKyAgICAgICAgfSBlbHNlIGlmIChjb21wb25lbnRzWzBdWzBdID09PSAidG8iKSB7
CisgICAgICAgICAgICBjb21wb25lbnRzWzBdLnNoaWZ0KCk7CisgICAgICAgICAgICBzd2l0Y2gg
KGNvbXBvbmVudHNbMF0uc29ydCgpLmpvaW4oIiAiKSkgeworICAgICAgICAgICAgY2FzZSAidG9w
IjoKKyAgICAgICAgICAgICAgICBhbmdsZSA9IDA7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICBjYXNlICJyaWdodCB0b3AiOgorICAgICAgICAgICAgICAgIGFuZ2xlID0gNDU7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICJyaWdodCI6CisgICAg
ICAgICAgICAgICAgYW5nbGUgPSA5MDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIGNhc2UgImJvdHRvbSByaWdodCI6CisgICAgICAgICAgICAgICAgYW5nbGUgPSAxMzU7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICJib3R0b20iOgorICAgICAg
ICAgICAgICAgIGFuZ2xlID0gMTgwOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgY2FzZSAiYm90dG9tIGxlZnQiOgorICAgICAgICAgICAgICAgIGFuZ2xlID0gMjI1OworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAibGVmdCI6CisgICAgICAgICAg
ICAgICAgYW5nbGUgPSAyNzA7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBj
YXNlICJsZWZ0IHRvcCI6CisgICAgICAgICAgICAgICAgYW5nbGUgPSAzMTU7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGNvbnNv
bGUuZXJyb3IoIkNvdWxkbid0IHBhcnNlIGFuZ2xlIFwidG8gIiArIGNvbXBvbmVudHNbMF0uam9p
bigiICIpICsgIlwiIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBjb21wb25lbnRzLnNoaWZ0KCk7CisgICAgICAgIH0gZWxzZSBpZiAo
Y29tcG9uZW50c1swXS5sZW5ndGggIT09IDEgJiYgIVdlYkluc3BlY3Rvci5Db2xvci5mcm9tU3Ry
aW5nKGNvbXBvbmVudHNbMF1bMF0pKSB7CisgICAgICAgICAgICAvLyBJZiB0aGUgZmlyc3QgY29t
cG9uZW50IGlzIG5vdCBhIGNvbG9yLCB0aGVuIHdlJ3JlIGRlYWxpbmcgd2l0aCBhCisgICAgICAg
ICAgICAvLyBsZWdhY3kgbGluZWFyIGdyYWRpZW50IGZvcm1hdCB0aGF0IHdlIGRvbid0IHN1cHBv
cnQuCiAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgfQotICAgICAgICBjb21wb25l
bnRzLnNoaWZ0KCk7Ci0gICAgfSBlbHNlIGlmIChjb21wb25lbnRzWzBdLmxlbmd0aCAhPT0gMSAm
JiAhV2ViSW5zcGVjdG9yLkNvbG9yLmZyb21TdHJpbmcoY29tcG9uZW50c1swXVswXSkpIHsKLSAg
ICAgICAgLy8gSWYgdGhlIGZpcnN0IGNvbXBvbmVudCBpcyBub3QgYSBjb2xvciwgdGhlbiB3ZSdy
ZSBkZWFsaW5nIHdpdGggYQotICAgICAgICAvLyBsZWdhY3kgbGluZWFyIGdyYWRpZW50IGZvcm1h
dCB0aGF0IHdlIGRvbid0IHN1cHBvcnQuCi0gICAgICAgIHJldHVybiBudWxsOworCisgICAgICAg
IHZhciBzdG9wcyA9IFdlYkluc3BlY3Rvci5HcmFkaWVudC5zdG9wc1dpdGhDb21wb25lbnRzKGNv
bXBvbmVudHMpOworICAgICAgICBpZiAoIXN0b3BzKQorICAgICAgICAgICAgcmV0dXJuIG51bGw7
CisKKyAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuTGluZWFyR3JhZGllbnQoYW5nbGUs
IHN0b3BzKTsKICAgICB9CiAKLSAgICB2YXIgc3RvcHMgPSBXZWJJbnNwZWN0b3IuR3JhZGllbnQu
c3RvcHNXaXRoQ29tcG9uZW50cyhjb21wb25lbnRzKTsKLSAgICBpZiAoIXN0b3BzKQotICAgICAg
ICByZXR1cm4gbnVsbDsKKyAgICAvLyBQdWJsaWMKIAotICAgIHJldHVybiBuZXcgV2ViSW5zcGVj
dG9yLkxpbmVhckdyYWRpZW50KGFuZ2xlLCBzdG9wcyk7Ci19OwotCi1XZWJJbnNwZWN0b3IuTGlu
ZWFyR3JhZGllbnQucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3Iu
TGluZWFyR3JhZGllbnQsCi0KLSAgICBjb3B5OiBmdW5jdGlvbigpCisgICAgY29weSgpCiAgICAg
ewogICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5MaW5lYXJHcmFkaWVudCh0aGlzLmFu
Z2xlLCB0aGlzLnN0b3BzLmNvbmNhdCgpKTsKLSAgICB9LAorICAgIH0KIAotICAgIHRvU3RyaW5n
OiBmdW5jdGlvbigpCisgICAgdG9TdHJpbmcoKQogICAgIHsKICAgICAgICAgdmFyIHN0ciA9ICIi
OwogCkBAIC0yNDAsMzMgKzI0NCwzNiBAQCBXZWJJbnNwZWN0b3IuTGluZWFyR3JhZGllbnQucHJv
dG90eXBlID0gewogICAgIH0KIH07CiAKLVdlYkluc3BlY3Rvci5SYWRpYWxHcmFkaWVudCA9IGZ1
bmN0aW9uKHNpemluZywgc3RvcHMpCitXZWJJbnNwZWN0b3IuUmFkaWFsR3JhZGllbnQgPSBjbGFz
cyBSYWRpYWxHcmFkaWVudAogewotICAgIHRoaXMudHlwZSA9IFdlYkluc3BlY3Rvci5HcmFkaWVu
dC5UeXBlcy5SYWRpYWw7Ci0gICAgdGhpcy5zaXppbmcgPSBzaXppbmc7Ci0gICAgdGhpcy5zdG9w
cyA9IHN0b3BzOwotfTsKKyAgICBjb25zdHJ1Y3RvcihzaXppbmcsIHN0b3BzKQorICAgIHsKKyAg
ICAgICAgdGhpcy50eXBlID0gV2ViSW5zcGVjdG9yLkdyYWRpZW50LlR5cGVzLlJhZGlhbDsKKyAg
ICAgICAgdGhpcy5zaXppbmcgPSBzaXppbmc7CisgICAgICAgIHRoaXMuc3RvcHMgPSBzdG9wczsK
KyAgICB9CiAKLVdlYkluc3BlY3Rvci5SYWRpYWxHcmFkaWVudC5yYWRpYWxHcmFkaWVudFdpdGhD
b21wb25lbnRzID0gZnVuY3Rpb24oY29tcG9uZW50cykKLXsKLSAgICB2YXIgc2l6aW5nID0gIVdl
Ykluc3BlY3Rvci5Db2xvci5mcm9tU3RyaW5nKGNvbXBvbmVudHNbMF0uam9pbigiICIpKSA/IGNv
bXBvbmVudHMuc2hpZnQoKS5qb2luKCIgIikgOiAiIjsKKyAgICAvLyBTdGF0aWMKKworICAgIHN0
YXRpYyByYWRpYWxHcmFkaWVudFdpdGhDb21wb25lbnRzKGNvbXBvbmVudHMpCisgICAgeworICAg
ICAgICB2YXIgc2l6aW5nID0gIVdlYkluc3BlY3Rvci5Db2xvci5mcm9tU3RyaW5nKGNvbXBvbmVu
dHNbMF0uam9pbigiICIpKSA/IGNvbXBvbmVudHMuc2hpZnQoKS5qb2luKCIgIikgOiAiIjsKIAot
ICAgIHZhciBzdG9wcyA9IFdlYkluc3BlY3Rvci5HcmFkaWVudC5zdG9wc1dpdGhDb21wb25lbnRz
KGNvbXBvbmVudHMpOwotICAgIGlmICghc3RvcHMpCi0gICAgICAgIHJldHVybiBudWxsOworICAg
ICAgICB2YXIgc3RvcHMgPSBXZWJJbnNwZWN0b3IuR3JhZGllbnQuc3RvcHNXaXRoQ29tcG9uZW50
cyhjb21wb25lbnRzKTsKKyAgICAgICAgaWYgKCFzdG9wcykKKyAgICAgICAgICAgIHJldHVybiBu
dWxsOwogCi0gICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuUmFkaWFsR3JhZGllbnQoc2l6aW5n
LCBzdG9wcyk7Ci19OworICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5SYWRpYWxHcmFk
aWVudChzaXppbmcsIHN0b3BzKTsKKyAgICB9CiAKLVdlYkluc3BlY3Rvci5SYWRpYWxHcmFkaWVu
dC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5SYWRpYWxHcmFk
aWVudCwKKyAgICAvLyBQdWJsaWMKIAotICAgIGNvcHk6IGZ1bmN0aW9uKCkKKyAgICBjb3B5KCkK
ICAgICB7CiAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlJhZGlhbEdyYWRpZW50KHRo
aXMuc2l6aW5nLCB0aGlzLnN0b3BzLmNvbmNhdCgpKTsKLSAgICB9LAorICAgIH0KIAotICAgIHRv
U3RyaW5nOiBmdW5jdGlvbigpCisgICAgdG9TdHJpbmcoKQogICAgIHsKICAgICAgICAgdmFyIHN0
ciA9IHRoaXMuc2l6aW5nOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Nb2RlbHMvSW5kZXhlZERhdGFiYXNlLmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0luZGV4ZWREYXRhYmFzZS5qcwppbmRleCAwZDlkZTc4
Li4yMjRkYTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Nb2RlbHMvSW5kZXhlZERhdGFiYXNlLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL01vZGVscy9JbmRleGVkRGF0YWJhc2UuanMKQEAgLTIzLDU4ICsyMyw1NiBA
QAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rv
ci5JbmRleGVkRGF0YWJhc2UgPSBmdW5jdGlvbihuYW1lLCBzZWN1cml0eU9yaWdpbiwgdmVyc2lv
biwgb2JqZWN0U3RvcmVzKQorV2ViSW5zcGVjdG9yLkluZGV4ZWREYXRhYmFzZSA9IGNsYXNzIElu
ZGV4ZWREYXRhYmFzZSBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIHsKLSAgICBXZWJJbnNw
ZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7Ci0KLSAgICB0aGlzLl9uYW1lID0gbmFtZTsKLSAgICB0
aGlzLl9zZWN1cml0eU9yaWdpbiA9IHNlY3VyaXR5T3JpZ2luOwotICAgIHRoaXMuX2hvc3QgPSBw
YXJzZVNlY3VyaXR5T3JpZ2luKHNlY3VyaXR5T3JpZ2luKS5ob3N0OwotICAgIHRoaXMuX3ZlcnNp
b24gPSB2ZXJzaW9uOwotICAgIHRoaXMuX29iamVjdFN0b3JlcyA9IG9iamVjdFN0b3JlcyB8fCBb
XTsKLQotICAgIGZvciAodmFyIG9iamVjdFN0b3JlIG9mIHRoaXMuX29iamVjdFN0b3JlcykKLSAg
ICAgICAgb2JqZWN0U3RvcmUuZXN0YWJsaXNoUmVsYXRpb25zaGlwKHRoaXMpOwotfTsKLQotV2Vi
SW5zcGVjdG9yLkluZGV4ZWREYXRhYmFzZS5UeXBlSWRlbnRpZmllciA9ICJpbmRleGVkLWRhdGFi
YXNlIjsKLVdlYkluc3BlY3Rvci5JbmRleGVkRGF0YWJhc2UuTmFtZUNvb2tpZUtleSA9ICJpbmRl
eGVkLWRhdGFiYXNlLW5hbWUiOwotV2ViSW5zcGVjdG9yLkluZGV4ZWREYXRhYmFzZS5Ib3N0Q29v
a2llS2V5ID0gImluZGV4ZWQtZGF0YWJhc2UtaG9zdCI7Ci0KLVdlYkluc3BlY3Rvci5JbmRleGVk
RGF0YWJhc2UucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuSW5k
ZXhlZERhdGFiYXNlLAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5
cGUsCisgICAgY29uc3RydWN0b3IobmFtZSwgc2VjdXJpdHlPcmlnaW4sIHZlcnNpb24sIG9iamVj
dFN0b3JlcykKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CisKKyAgICAgICAgdGhpcy5fbmFtZSA9
IG5hbWU7CisgICAgICAgIHRoaXMuX3NlY3VyaXR5T3JpZ2luID0gc2VjdXJpdHlPcmlnaW47Cisg
ICAgICAgIHRoaXMuX2hvc3QgPSBwYXJzZVNlY3VyaXR5T3JpZ2luKHNlY3VyaXR5T3JpZ2luKS5o
b3N0OworICAgICAgICB0aGlzLl92ZXJzaW9uID0gdmVyc2lvbjsKKyAgICAgICAgdGhpcy5fb2Jq
ZWN0U3RvcmVzID0gb2JqZWN0U3RvcmVzIHx8IFtdOworCisgICAgICAgIGZvciAodmFyIG9iamVj
dFN0b3JlIG9mIHRoaXMuX29iamVjdFN0b3JlcykKKyAgICAgICAgICAgIG9iamVjdFN0b3JlLmVz
dGFibGlzaFJlbGF0aW9uc2hpcCh0aGlzKTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAg
IGdldCBuYW1lKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9uYW1lOwotICAgIH0sCisg
ICAgfQogCiAgICAgZ2V0IHNlY3VyaXR5T3JpZ2luKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0
aGlzLl9zZWN1cml0eU9yaWdpbjsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBob3N0KCkKICAg
ICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9ob3N0OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0
IHZlcnNpb24oKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3ZlcnNpb247Ci0gICAgfSwK
KyAgICB9CiAKICAgICBnZXQgb2JqZWN0U3RvcmVzKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0
aGlzLl9vYmplY3RTdG9yZXM7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzYXZlSWRlbnRpdHlUb0Nv
b2tpZTogZnVuY3Rpb24oY29va2llKQorICAgIHNhdmVJZGVudGl0eVRvQ29va2llKGNvb2tpZSkK
ICAgICB7CiAgICAgICAgIGNvb2tpZVtXZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFiYXNlLk5hbWVD
b29raWVLZXldID0gdGhpcy5fbmFtZTsKICAgICAgICAgY29va2llW1dlYkluc3BlY3Rvci5JbmRl
eGVkRGF0YWJhc2UuSG9zdENvb2tpZUtleV0gPSB0aGlzLl9ob3N0OwogICAgIH0KIH07CisKK1dl
Ykluc3BlY3Rvci5JbmRleGVkRGF0YWJhc2UuVHlwZUlkZW50aWZpZXIgPSAiaW5kZXhlZC1kYXRh
YmFzZSI7CitXZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFiYXNlLk5hbWVDb29raWVLZXkgPSAiaW5k
ZXhlZC1kYXRhYmFzZS1uYW1lIjsKK1dlYkluc3BlY3Rvci5JbmRleGVkRGF0YWJhc2UuSG9zdENv
b2tpZUtleSA9ICJpbmRleGVkLWRhdGFiYXNlLWhvc3QiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0luZGV4ZWREYXRhYmFzZU9iamVjdFN0
b3JlLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0luZGV4
ZWREYXRhYmFzZU9iamVjdFN0b3JlLmpzCmluZGV4IDNiNjMzZGMuLmIxNjJkM2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9JbmRleGVkRGF0
YWJhc2VPYmplY3RTdG9yZS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Nb2RlbHMvSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmUuanMKQEAgLTIzLDY1ICsyMyw2
MyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3Bl
Y3Rvci5JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZSA9IGZ1bmN0aW9uKG5hbWUsIGtleVBhdGgs
IGF1dG9JbmNyZW1lbnQsIGluZGV4ZXMpCitXZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFiYXNlT2Jq
ZWN0U3RvcmUgPSBjbGFzcyBJbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZSBleHRlbmRzIFdlYklu
c3BlY3Rvci5PYmplY3QKIHsKLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7Ci0K
LSAgICB0aGlzLl9uYW1lID0gbmFtZTsKLSAgICB0aGlzLl9rZXlQYXRoID0ga2V5UGF0aDsKLSAg
ICB0aGlzLl9hdXRvSW5jcmVtZW50ID0gYXV0b0luY3JlbWVudCB8fCBmYWxzZTsKLSAgICB0aGlz
Ll9pbmRleGVzID0gaW5kZXhlcyB8fCBbXTsKLSAgICB0aGlzLl9wYXJlbnREYXRhYmFzZSA9IG51
bGw7Ci0KLSAgICBmb3IgKHZhciBpbmRleCBvZiB0aGlzLl9pbmRleGVzKQotICAgICAgICBpbmRl
eC5lc3RhYmxpc2hSZWxhdGlvbnNoaXAodGhpcyk7Ci19OwotCi1XZWJJbnNwZWN0b3IuSW5kZXhl
ZERhdGFiYXNlT2JqZWN0U3RvcmUuVHlwZUlkZW50aWZpZXIgPSAiaW5kZXhlZC1kYXRhYmFzZS1v
YmplY3Qtc3RvcmUiOwotV2ViSW5zcGVjdG9yLkluZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlLk5h
bWVDb29raWVLZXkgPSAiaW5kZXhlZC1kYXRhYmFzZS1vYmplY3Qtc3RvcmUtbmFtZSI7Ci1XZWJJ
bnNwZWN0b3IuSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmUuS2V5UGF0aENvb2tpZUtleSA9ICJp
bmRleGVkLWRhdGFiYXNlLW9iamVjdC1zdG9yZS1rZXktcGF0aCI7Ci0KLVdlYkluc3BlY3Rvci5J
bmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZS5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6
IFdlYkluc3BlY3Rvci5JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZSwKLSAgICBfX3Byb3RvX186
IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlLAorICAgIGNvbnN0cnVjdG9yKG5hbWUsIGtl
eVBhdGgsIGF1dG9JbmNyZW1lbnQsIGluZGV4ZXMpCisgICAgeworICAgICAgICBzdXBlcigpOwor
CisgICAgICAgIHRoaXMuX25hbWUgPSBuYW1lOworICAgICAgICB0aGlzLl9rZXlQYXRoID0ga2V5
UGF0aDsKKyAgICAgICAgdGhpcy5fYXV0b0luY3JlbWVudCA9IGF1dG9JbmNyZW1lbnQgfHwgZmFs
c2U7CisgICAgICAgIHRoaXMuX2luZGV4ZXMgPSBpbmRleGVzIHx8IFtdOworICAgICAgICB0aGlz
Ll9wYXJlbnREYXRhYmFzZSA9IG51bGw7CisKKyAgICAgICAgZm9yICh2YXIgaW5kZXggb2YgdGhp
cy5faW5kZXhlcykKKyAgICAgICAgICAgIGluZGV4LmVzdGFibGlzaFJlbGF0aW9uc2hpcCh0aGlz
KTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBuYW1lKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiB0aGlzLl9uYW1lOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGtleVBhdGgo
KQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2tleVBhdGg7Ci0gICAgfSwKKyAgICB9CiAK
ICAgICBnZXQgYXV0b0luY3JlbWVudCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fYXV0
b0luY3JlbWVudDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBwYXJlbnREYXRhYmFzZSgpCiAg
ICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcGFyZW50RGF0YWJhc2U7Ci0gICAgfSwKKyAgICB9
CiAKICAgICBnZXQgaW5kZXhlcygpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5faW5kZXhl
czsKLSAgICB9LAorICAgIH0KIAotICAgIHNhdmVJZGVudGl0eVRvQ29va2llOiBmdW5jdGlvbihj
b29raWUpCisgICAgc2F2ZUlkZW50aXR5VG9Db29raWUoY29va2llKQogICAgIHsKICAgICAgICAg
Y29va2llW1dlYkluc3BlY3Rvci5JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZS5OYW1lQ29va2ll
S2V5XSA9IHRoaXMuX25hbWU7CiAgICAgICAgIGNvb2tpZVtXZWJJbnNwZWN0b3IuSW5kZXhlZERh
dGFiYXNlT2JqZWN0U3RvcmUuS2V5UGF0aENvb2tpZUtleV0gPSB0aGlzLl9rZXlQYXRoOwotICAg
IH0sCisgICAgfQogCiAgICAgLy8gUHJvdGVjdGVkCiAKLSAgICBlc3RhYmxpc2hSZWxhdGlvbnNo
aXA6IGZ1bmN0aW9uKHBhcmVudERhdGFiYXNlKQorICAgIGVzdGFibGlzaFJlbGF0aW9uc2hpcChw
YXJlbnREYXRhYmFzZSkKICAgICB7CiAgICAgICAgIHRoaXMuX3BhcmVudERhdGFiYXNlID0gcGFy
ZW50RGF0YWJhc2UgfHwgbnVsbDsKICAgICB9CiB9OworCitXZWJJbnNwZWN0b3IuSW5kZXhlZERh
dGFiYXNlT2JqZWN0U3RvcmUuVHlwZUlkZW50aWZpZXIgPSAiaW5kZXhlZC1kYXRhYmFzZS1vYmpl
Y3Qtc3RvcmUiOworV2ViSW5zcGVjdG9yLkluZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlLk5hbWVD
b29raWVLZXkgPSAiaW5kZXhlZC1kYXRhYmFzZS1vYmplY3Qtc3RvcmUtbmFtZSI7CitXZWJJbnNw
ZWN0b3IuSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmUuS2V5UGF0aENvb2tpZUtleSA9ICJpbmRl
eGVkLWRhdGFiYXNlLW9iamVjdC1zdG9yZS1rZXktcGF0aCI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvSW5kZXhlZERhdGFiYXNlT2JqZWN0
U3RvcmVJbmRleC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVs
cy9JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZUluZGV4LmpzCmluZGV4IDM1NTRiNWQuLmY1M2Jk
YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVs
cy9JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZUluZGV4LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZUlu
ZGV4LmpzCkBAIC0yMyw2MiArMjMsNjAgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVJbmRl
eCA9IGZ1bmN0aW9uKG5hbWUsIGtleVBhdGgsIHVuaXF1ZSwgbXVsdGlFbnRyeSkKK1dlYkluc3Bl
Y3Rvci5JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZUluZGV4ID0gY2xhc3MgSW5kZXhlZERhdGFi
YXNlT2JqZWN0U3RvcmVJbmRleCBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIHsKLSAgICBX
ZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CisgICAgY29uc3RydWN0b3IobmFtZSwga2V5
UGF0aCwgdW5pcXVlLCBtdWx0aUVudHJ5KQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKIAotICAg
IHRoaXMuX25hbWUgPSBuYW1lOwotICAgIHRoaXMuX2tleVBhdGggPSBrZXlQYXRoOwotICAgIHRo
aXMuX3VuaXF1ZSA9IHVuaXF1ZSB8fCBmYWxzZTsKLSAgICB0aGlzLl9tdWx0aUVudHJ5ID0gbXVs
dGlFbnRyeSB8fCBmYWxzZTsKLSAgICB0aGlzLl9wYXJlbnRPYmplY3RTdG9yZSA9IG51bGw7Ci19
OwotCi1XZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVJbmRleC5UeXBlSWRl
bnRpZmllciA9ICJpbmRleGVkLWRhdGFiYXNlLW9iamVjdC1zdG9yZS1pbmRleCI7Ci1XZWJJbnNw
ZWN0b3IuSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVJbmRleC5OYW1lQ29va2llS2V5ID0gImlu
ZGV4ZWQtZGF0YWJhc2Utb2JqZWN0LXN0b3JlLWluZGV4LW5hbWUiOwotV2ViSW5zcGVjdG9yLklu
ZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlSW5kZXguS2V5UGF0aENvb2tpZUtleSA9ICJpbmRleGVk
LWRhdGFiYXNlLW9iamVjdC1zdG9yZS1pbmRleC1rZXktcGF0aCI7Ci0KLVdlYkluc3BlY3Rvci5J
bmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZUluZGV4LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1
Y3RvcjogV2ViSW5zcGVjdG9yLkluZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlSW5kZXgsCi0gICAg
X19wcm90b19fOiBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZSwKKyAgICAgICAgdGhpcy5f
bmFtZSA9IG5hbWU7CisgICAgICAgIHRoaXMuX2tleVBhdGggPSBrZXlQYXRoOworICAgICAgICB0
aGlzLl91bmlxdWUgPSB1bmlxdWUgfHwgZmFsc2U7CisgICAgICAgIHRoaXMuX211bHRpRW50cnkg
PSBtdWx0aUVudHJ5IHx8IGZhbHNlOworICAgICAgICB0aGlzLl9wYXJlbnRPYmplY3RTdG9yZSA9
IG51bGw7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgbmFtZSgpCiAgICAgewog
ICAgICAgICByZXR1cm4gdGhpcy5fbmFtZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBrZXlQ
YXRoKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9rZXlQYXRoOwotICAgIH0sCisgICAg
fQogCiAgICAgZ2V0IHVuaXF1ZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fdW5pcXVl
OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IG11bHRpRW50cnkoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHRoaXMuX211bHRpRW50cnk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgcGFyZW50
T2JqZWN0U3RvcmUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3BhcmVudE9iamVjdFN0
b3JlOwotICAgIH0sCisgICAgfQogCi0gICAgc2F2ZUlkZW50aXR5VG9Db29raWU6IGZ1bmN0aW9u
KGNvb2tpZSkKKyAgICBzYXZlSWRlbnRpdHlUb0Nvb2tpZShjb29raWUpCiAgICAgewogICAgICAg
ICBjb29raWVbV2ViSW5zcGVjdG9yLkluZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlSW5kZXguTmFt
ZUNvb2tpZUtleV0gPSB0aGlzLl9uYW1lOwogICAgICAgICBjb29raWVbV2ViSW5zcGVjdG9yLklu
ZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlSW5kZXguS2V5UGF0aENvb2tpZUtleV0gPSB0aGlzLl9r
ZXlQYXRoOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJvdGVjdGVkCiAKLSAgICBlc3RhYmxp
c2hSZWxhdGlvbnNoaXA6IGZ1bmN0aW9uKHBhcmVudE9iamVjdFN0b3JlKQorICAgIGVzdGFibGlz
aFJlbGF0aW9uc2hpcChwYXJlbnRPYmplY3RTdG9yZSkKICAgICB7CiAgICAgICAgIHRoaXMuX3Bh
cmVudE9iamVjdFN0b3JlID0gcGFyZW50T2JqZWN0U3RvcmUgfHwgbnVsbDsKICAgICB9CiB9Owor
CitXZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVJbmRleC5UeXBlSWRlbnRp
ZmllciA9ICJpbmRleGVkLWRhdGFiYXNlLW9iamVjdC1zdG9yZS1pbmRleCI7CitXZWJJbnNwZWN0
b3IuSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVJbmRleC5OYW1lQ29va2llS2V5ID0gImluZGV4
ZWQtZGF0YWJhc2Utb2JqZWN0LXN0b3JlLWluZGV4LW5hbWUiOworV2ViSW5zcGVjdG9yLkluZGV4
ZWREYXRhYmFzZU9iamVjdFN0b3JlSW5kZXguS2V5UGF0aENvb2tpZUtleSA9ICJpbmRleGVkLWRh
dGFiYXNlLW9iamVjdC1zdG9yZS1pbmRleC1rZXktcGF0aCI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvSXNzdWVNZXNzYWdlLmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0lzc3VlTWVzc2FnZS5qcwpp
bmRleCA4ZTNlYjg2Li4zY2Q0M2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Nb2RlbHMvSXNzdWVNZXNzYWdlLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Jc3N1ZU1lc3NhZ2UuanMKQEAgLTIzLDc5ICsy
MywxNzggQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJ
bnNwZWN0b3IuSXNzdWVNZXNzYWdlID0gZnVuY3Rpb24oc291cmNlLCBsZXZlbCwgdGV4dCwgdXJs
LCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHBhcmFtZXRlcnMpCitXZWJJbnNwZWN0b3IuSXNz
dWVNZXNzYWdlID0gY2xhc3MgSXNzdWVNZXNzYWdlIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVj
dAogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICBjb25zdHJ1Y3Rv
cihzb3VyY2UsIGxldmVsLCB0ZXh0LCB1cmwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgcGFy
YW1ldGVycykKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CiAKLSAgICB0aGlzLl9sZXZlbCA9IGxl
dmVsOwotICAgIHRoaXMuX3RleHQgPSB0ZXh0OworICAgICAgICB0aGlzLl9sZXZlbCA9IGxldmVs
OworICAgICAgICB0aGlzLl90ZXh0ID0gdGV4dDsKIAotICAgIC8vIEZJWE1FOiBNb3ZlIHRvIGEg
U291cmNlQ29kZUxvY2F0aW9uLgorICAgICAgICAvLyBGSVhNRTogTW92ZSB0byBhIFNvdXJjZUNv
ZGVMb2NhdGlvbi4KIAotICAgIC8vIEZJWE1FIDxodHRwOi8vd2Via2l0Lm9yZy9iLzc2NDA0Pjog
UmVtb3ZlIHRoZSBzdHJpbmcgZXF1YWxpdHkgY2hlY2tzIGZvciB1bmRlZmluZWQKLSAgICAvLyBv
bmNlIHdlIGRvbid0IGdldCB0aGF0IHZhbHVlIGFueW1vcmUgZnJvbSBXZWJDb3JlLgorICAgICAg
ICAvLyBGSVhNRSA8aHR0cDovL3dlYmtpdC5vcmcvYi83NjQwND46IFJlbW92ZSB0aGUgc3RyaW5n
IGVxdWFsaXR5IGNoZWNrcyBmb3IgdW5kZWZpbmVkCisgICAgICAgIC8vIG9uY2Ugd2UgZG9uJ3Qg
Z2V0IHRoYXQgdmFsdWUgYW55bW9yZSBmcm9tIFdlYkNvcmUuCiAKLSAgICAvLyBGSVhNRTogSWYg
dGhlIFVSTCBpcyB1bmRlZmluZWQsIGdldCB0aGUgVVJMIGZyb20gdGhlIHN0YWNrdHJhY2UuCi0g
ICAgaWYgKHVybCAmJiB1cmwgIT09ICJ1bmRlZmluZWQiKQotICAgICAgICB0aGlzLl91cmwgPSB1
cmw7CisgICAgICAgIC8vIEZJWE1FOiBJZiB0aGUgVVJMIGlzIHVuZGVmaW5lZCwgZ2V0IHRoZSBV
UkwgZnJvbSB0aGUgc3RhY2t0cmFjZS4KKyAgICAgICAgaWYgKHVybCAmJiB1cmwgIT09ICJ1bmRl
ZmluZWQiKQorICAgICAgICAgICAgdGhpcy5fdXJsID0gdXJsOwogCi0gICAgaWYgKHR5cGVvZiBs
aW5lTnVtYmVyID09PSAibnVtYmVyIiAmJiBsaW5lTnVtYmVyID49IDApCi0gICAgICAgIHRoaXMu
X2xpbmVOdW1iZXIgPSBsaW5lTnVtYmVyOworICAgICAgICBpZiAodHlwZW9mIGxpbmVOdW1iZXIg
PT09ICJudW1iZXIiICYmIGxpbmVOdW1iZXIgPj0gMCkKKyAgICAgICAgICAgIHRoaXMuX2xpbmVO
dW1iZXIgPSBsaW5lTnVtYmVyOwogCi0gICAgaWYgKHR5cGVvZiBjb2x1bW5OdW1iZXIgPT09ICJu
dW1iZXIiICYmIGNvbHVtbk51bWJlciA+PSAwKQotICAgICAgICB0aGlzLl9jb2x1bW5OdW1iZXIg
PSBjb2x1bW5OdW1iZXI7CisgICAgICAgIGlmICh0eXBlb2YgY29sdW1uTnVtYmVyID09PSAibnVt
YmVyIiAmJiBjb2x1bW5OdW1iZXIgPj0gMCkKKyAgICAgICAgICAgIHRoaXMuX2NvbHVtbk51bWJl
ciA9IGNvbHVtbk51bWJlcjsKIAotICAgIC8vIEZJWE1FOiA8aHR0cHM6Ly93ZWJraXQub3JnL2Iv
MTQyNTUzPiBXZWIgSW5zcGVjdG9yOiBNZXJnZSBJc3N1ZU1lc3NhZ2UvQ29uc29sZU1lc3NhZ2Ug
LSBib3RoIGF0dGVtcHQgdG8gbW9kaWZ5IHRoZSBDb25zb2xlIE1lc3NhZ2VzIHBhcmFtZXRlciBp
bmRlcGVuZGVudGx5CisgICAgICAgIC8vIEZJWE1FOiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTQy
NTUzPiBXZWIgSW5zcGVjdG9yOiBNZXJnZSBJc3N1ZU1lc3NhZ2UvQ29uc29sZU1lc3NhZ2UgLSBi
b3RoIGF0dGVtcHQgdG8gbW9kaWZ5IHRoZSBDb25zb2xlIE1lc3NhZ2VzIHBhcmFtZXRlciBpbmRl
cGVuZGVudGx5CiAKLSAgICBpZiAocGFyYW1ldGVycyAmJiBwYXJhbWV0ZXJzICE9PSAidW5kZWZp
bmVkIikgewotICAgICAgICB0aGlzLl9wYXJhbWV0ZXJzID0gW107Ci0gICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgcGFyYW1ldGVycy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgaWYgKHBh
cmFtZXRlcnNbaV0gaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0KSB7Ci0gICAg
ICAgICAgICAgICAgdGhpcy5fcGFyYW1ldGVycy5wdXNoKHBhcmFtZXRlcnNbaV0pOwotICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAocGFyYW1ldGVycyAmJiBwYXJhbWV0ZXJz
ICE9PSAidW5kZWZpbmVkIikgeworICAgICAgICAgICAgdGhpcy5fcGFyYW1ldGVycyA9IFtdOwor
ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXJhbWV0ZXJzLmxlbmd0aDsgKytpKSB7
CisgICAgICAgICAgICAgICAgaWYgKHBhcmFtZXRlcnNbaV0gaW5zdGFuY2VvZiBXZWJJbnNwZWN0
b3IuUmVtb3RlT2JqZWN0KSB7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuX3BhcmFtZXRlcnMu
cHVzaChwYXJhbWV0ZXJzW2ldKTsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBwYXJhbWV0ZXJzW2ld
ID09PSAib2JqZWN0IikKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5fcGFyYW1ldGVycy5wdXNo
KFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QuZnJvbVBheWxvYWQocGFyYW1ldGVyc1tpXSkpOwor
ICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5fcGFyYW1ldGVy
cy5wdXNoKFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QuZnJvbVByaW1pdGl2ZVZhbHVlKHBhcmFt
ZXRlcnNbaV0pKTsKICAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuX2Zv
cm1hdFRleHRJZk5lY2Vzc2FyeSgpOworCisgICAgICAgIHN3aXRjaCAoc291cmNlKSB7CisgICAg
ICAgIGNhc2UgImphdmFzY3JpcHQiOgorICAgICAgICAgICAgLy8gRklYTUU6IEl0IHdvdWxkIGJl
IG5pY2UgaWYgd2UgaGFkIHRoaXMgaW5mb3JtYXRpb24gKHRoZSBzcGVjaWZpYyB0eXBlIG9mIEph
dmFTY3JpcHQgZXJyb3IpCisgICAgICAgICAgICAvLyBhcyBwYXJ0IG9mIHRoZSBkYXRhIHBhc3Nl
ZCBmcm9tIFdlYkNvcmUsIGluc3RlYWQgb2YgaGF2aW5nIHRvIGRldGVybWluZSBpdCBvdXJzZWx2
ZXMuCisgICAgICAgICAgICB2YXIgcHJlZml4UmVnZXggPSAvXihbXjpdKyk6ICg/OkRPTSBFeGNl
cHRpb24gXGQrOiApPy87CisgICAgICAgICAgICB2YXIgbWF0Y2ggPSBwcmVmaXhSZWdleC5leGVj
KHRoaXMuX3RleHQpOworICAgICAgICAgICAgaWYgKG1hdGNoICYmIG1hdGNoWzFdIGluIFdlYklu
c3BlY3Rvci5Jc3N1ZU1lc3NhZ2UuVHlwZS5fcHJlZml4VHlwZU1hcCkgeworICAgICAgICAgICAg
ICAgIHRoaXMuX3R5cGUgPSBXZWJJbnNwZWN0b3IuSXNzdWVNZXNzYWdlLlR5cGUuX3ByZWZpeFR5
cGVNYXBbbWF0Y2hbMV1dOworICAgICAgICAgICAgICAgIHRoaXMuX3RleHQgPSB0aGlzLl90ZXh0
LnN1YnN0cmluZyhtYXRjaFswXS5sZW5ndGgpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICAgICAgdGhpcy5fdHlwZSA9IFdlYkluc3BlY3Rvci5Jc3N1ZU1lc3NhZ2UuVHlwZS5PdGhl
cklzc3VlOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAiaHRtbCI6CisgICAg
ICAgIGNhc2UgImNzcyI6CisgICAgICAgIGNhc2UgIndtbCI6CisgICAgICAgIGNhc2UgInhtbCI6
CisgICAgICAgICAgICB0aGlzLl90eXBlID0gV2ViSW5zcGVjdG9yLklzc3VlTWVzc2FnZS5UeXBl
LlBhZ2VJc3N1ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgIm5ldHdvcmsi
OgorICAgICAgICAgICAgdGhpcy5fdHlwZSA9IFdlYkluc3BlY3Rvci5Jc3N1ZU1lc3NhZ2UuVHlw
ZS5OZXR3b3JrSXNzdWU7CisgICAgICAgICAgICBicmVhazsKIAotICAgICAgICAgICAgaWYgKHR5
cGVvZiBwYXJhbWV0ZXJzW2ldID09PSAib2JqZWN0IikKLSAgICAgICAgICAgICAgICB0aGlzLl9w
YXJhbWV0ZXJzLnB1c2goV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC5mcm9tUGF5bG9hZChwYXJh
bWV0ZXJzW2ldKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgdGhpcy5fcGFy
YW1ldGVycy5wdXNoKFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QuZnJvbVByaW1pdGl2ZVZhbHVl
KHBhcmFtZXRlcnNbaV0pKTsKKyAgICAgICAgY2FzZSAiY29uc29sZS1hcGkiOgorICAgICAgICBj
YXNlICJvdGhlciI6CisgICAgICAgICAgICB0aGlzLl90eXBlID0gV2ViSW5zcGVjdG9yLklzc3Vl
TWVzc2FnZS5UeXBlLk90aGVySXNzdWU7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgY29uc29sZS5lcnJvcigiVW5rbm93biBpc3N1ZSBzb3VyY2U6
Iiwgc291cmNlKTsKKyAgICAgICAgICAgIHRoaXMuX3R5cGUgPSBXZWJJbnNwZWN0b3IuSXNzdWVN
ZXNzYWdlLlR5cGUuT3RoZXJJc3N1ZTsKICAgICAgICAgfQogICAgIH0KIAotICAgIHRoaXMuX2Zv
cm1hdFRleHRJZk5lY2Vzc2FyeSgpOworICAgIC8vIFN0YXRpYwogCi0gICAgc3dpdGNoIChzb3Vy
Y2UpIHsKLSAgICBjYXNlICJqYXZhc2NyaXB0IjoKLSAgICAgICAgLy8gRklYTUU6IEl0IHdvdWxk
IGJlIG5pY2UgaWYgd2UgaGFkIHRoaXMgaW5mb3JtYXRpb24gKHRoZSBzcGVjaWZpYyB0eXBlIG9m
IEphdmFTY3JpcHQgZXJyb3IpCi0gICAgICAgIC8vIGFzIHBhcnQgb2YgdGhlIGRhdGEgcGFzc2Vk
IGZyb20gV2ViQ29yZSwgaW5zdGVhZCBvZiBoYXZpbmcgdG8gZGV0ZXJtaW5lIGl0IG91cnNlbHZl
cy4KLSAgICAgICAgdmFyIHByZWZpeFJlZ2V4ID0gL14oW146XSspOiAoPzpET00gRXhjZXB0aW9u
IFxkKzogKT8vOwotICAgICAgICB2YXIgbWF0Y2ggPSBwcmVmaXhSZWdleC5leGVjKHRoaXMuX3Rl
eHQpOwotICAgICAgICBpZiAobWF0Y2ggJiYgbWF0Y2hbMV0gaW4gV2ViSW5zcGVjdG9yLklzc3Vl
TWVzc2FnZS5UeXBlLl9wcmVmaXhUeXBlTWFwKSB7Ci0gICAgICAgICAgICB0aGlzLl90eXBlID0g
V2ViSW5zcGVjdG9yLklzc3VlTWVzc2FnZS5UeXBlLl9wcmVmaXhUeXBlTWFwW21hdGNoWzFdXTsK
LSAgICAgICAgICAgIHRoaXMuX3RleHQgPSB0aGlzLl90ZXh0LnN1YnN0cmluZyhtYXRjaFswXS5s
ZW5ndGgpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHRoaXMuX3R5cGUgPSBXZWJJbnNw
ZWN0b3IuSXNzdWVNZXNzYWdlLlR5cGUuT3RoZXJJc3N1ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAg
ICBjYXNlICJodG1sIjoKLSAgICBjYXNlICJjc3MiOgotICAgIGNhc2UgIndtbCI6Ci0gICAgY2Fz
ZSAieG1sIjoKLSAgICAgICAgdGhpcy5fdHlwZSA9IFdlYkluc3BlY3Rvci5Jc3N1ZU1lc3NhZ2Uu
VHlwZS5QYWdlSXNzdWU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSAibmV0d29yayI6Ci0g
ICAgICAgIHRoaXMuX3R5cGUgPSBXZWJJbnNwZWN0b3IuSXNzdWVNZXNzYWdlLlR5cGUuTmV0d29y
a0lzc3VlOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgImNvbnNvbGUtYXBpIjoKLSAgICBj
YXNlICJvdGhlciI6Ci0gICAgICAgIHRoaXMuX3R5cGUgPSBXZWJJbnNwZWN0b3IuSXNzdWVNZXNz
YWdlLlR5cGUuT3RoZXJJc3N1ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBkZWZhdWx0OgotICAg
ICAgICBjb25zb2xlLmVycm9yKCJVbmtub3duIGlzc3VlIHNvdXJjZToiLCBzb3VyY2UpOwotICAg
ICAgICB0aGlzLl90eXBlID0gV2ViSW5zcGVjdG9yLklzc3VlTWVzc2FnZS5UeXBlLk90aGVySXNz
dWU7CisgICAgc3RhdGljIGRpc3BsYXlOYW1lKHR5cGUpCisgICAgeworICAgICAgICBzd2l0Y2go
dHlwZSkgeworICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5Jc3N1ZU1lc3NhZ2UuVHlwZS5TZW1h
bnRpY0lzc3VlOgorICAgICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2Vt
YW50aWMgSXNzdWUiKTsKKyAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuSXNzdWVNZXNzYWdlLlR5
cGUuUmFuZ2VJc3N1ZToKKyAgICAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IlJhbmdlIElzc3VlIik7CisgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLklzc3VlTWVzc2FnZS5U
eXBlLlJlZmVyZW5jZUlzc3VlOgorICAgICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5VSVN0
cmluZygiUmVmZXJlbmNlIElzc3VlIik7CisgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLklzc3Vl
TWVzc2FnZS5UeXBlLlR5cGVJc3N1ZToKKyAgICAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIlR5cGUgSXNzdWUiKTsKKyAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuSXNzdWVN
ZXNzYWdlLlR5cGUuUGFnZUlzc3VlOgorICAgICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5V
SVN0cmluZygiUGFnZSBJc3N1ZSIpOworICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5Jc3N1ZU1l
c3NhZ2UuVHlwZS5OZXR3b3JrSXNzdWU6CisgICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJOZXR3b3JrIElzc3VlIik7CisgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLklz
c3VlTWVzc2FnZS5UeXBlLlNlY3VyaXR5SXNzdWU6CisgICAgICAgICAgICByZXR1cm4gV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJTZWN1cml0eSBJc3N1ZSIpOworICAgICAgICBjYXNlIFdlYkluc3Bl
Y3Rvci5Jc3N1ZU1lc3NhZ2UuVHlwZS5PdGhlcklzc3VlOgorICAgICAgICAgICAgcmV0dXJuIFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiT3RoZXIgSXNzdWUiKTsKKyAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIlVua25vd24gaXNzdWUgbWVzc2FnZSB0eXBlOiIsIHR5
cGUpOworICAgICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5VSVN0cmluZygiT3RoZXIgSXNz
dWUiKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFB1YmxpYworCisgICAgZ2V0IHR5cGUo
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3R5cGU7CisgICAgfQorCisgICAgZ2V0IGxl
dmVsKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9sZXZlbDsKKyAgICB9CisKKyAgICBn
ZXQgdGV4dCgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fdGV4dDsKKyAgICB9CisKKyAg
ICBnZXQgdXJsKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl91cmw7CisgICAgfQorCisg
ICAgZ2V0IGxpbmVOdW1iZXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2xpbmVOdW1i
ZXI7CisgICAgfQorCisgICAgZ2V0IGNvbHVtbk51bWJlcigpCisgICAgeworICAgICAgICByZXR1
cm4gdGhpcy5fY29sdW1uTnVtYmVyOworICAgIH0KKworICAgIC8vIFByaXZhdGUKKworICAgIF9m
b3JtYXRUZXh0SWZOZWNlc3NhcnkoKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9wYXJhbWV0
ZXJzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmIChXZWJJbnNwZWN0b3IuUmVt
b3RlT2JqZWN0LnR5cGUodGhpcy5fcGFyYW1ldGVyc1swXSkgIT09ICJzdHJpbmciKQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIGZ1bmN0aW9uIHZhbHVlRm9ybWF0dGVyKG9iaikKKyAg
ICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG9iai5kZXNjcmlwdGlvbjsKKyAgICAgICAgfQor
CisgICAgICAgIHZhciBmb3JtYXR0ZXJzID0ge307CisgICAgICAgIGZvcm1hdHRlcnMubyA9IHZh
bHVlRm9ybWF0dGVyOworICAgICAgICBmb3JtYXR0ZXJzLnMgPSB2YWx1ZUZvcm1hdHRlcjsKKyAg
ICAgICAgZm9ybWF0dGVycy5mID0gdmFsdWVGb3JtYXR0ZXI7CisgICAgICAgIGZvcm1hdHRlcnMu
aSA9IHZhbHVlRm9ybWF0dGVyOworICAgICAgICBmb3JtYXR0ZXJzLmQgPSB2YWx1ZUZvcm1hdHRl
cjsKKworICAgICAgICBmdW5jdGlvbiBhcHBlbmQoYSwgYikKKyAgICAgICAgeworICAgICAgICAg
ICAgYSArPSBiOworICAgICAgICAgICAgcmV0dXJuIGE7CisgICAgICAgIH0KKworICAgICAgICB2
YXIgcmVzdWx0ID0gU3RyaW5nLmZvcm1hdCh0aGlzLl9wYXJhbWV0ZXJzWzBdLmRlc2NyaXB0aW9u
LCB0aGlzLl9wYXJhbWV0ZXJzLnNsaWNlKDEpLCBmb3JtYXR0ZXJzLCAiIiwgYXBwZW5kKTsKKyAg
ICAgICAgdmFyIHJlc3VsdFRleHQgPSByZXN1bHQuZm9ybWF0dGVkUmVzdWx0OworCisgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgcmVzdWx0LnVudXNlZFN1YnN0aXR1dGlvbnMubGVuZ3RoOyAr
K2kpCisgICAgICAgICAgICByZXN1bHRUZXh0ICs9ICIgIiArIHJlc3VsdC51bnVzZWRTdWJzdGl0
dXRpb25zW2ldLmRlc2NyaXB0aW9uOworCisgICAgICAgIHRoaXMuX3RleHQgPSByZXN1bHRUZXh0
OwogICAgIH0KIH07CiAKQEAgLTE1NCwxMDAgKzI1MywzIEBAIFdlYkluc3BlY3Rvci5Jc3N1ZU1l
c3NhZ2UuVHlwZS5fcHJlZml4VHlwZU1hcCA9IHsKICAgICAiVVJMX01JU01BVENIX0VSUiI6IFdl
Ykluc3BlY3Rvci5Jc3N1ZU1lc3NhZ2UuVHlwZS5PdGhlcklzc3VlLAogICAgICJWQUxJREFUSU9O
X0VSUiI6IFdlYkluc3BlY3Rvci5Jc3N1ZU1lc3NhZ2UuVHlwZS5PdGhlcklzc3VlCiB9OwotCi1X
ZWJJbnNwZWN0b3IuSXNzdWVNZXNzYWdlLlR5cGUuZGlzcGxheU5hbWUgPSBmdW5jdGlvbih0eXBl
KQotewotICAgIHN3aXRjaCh0eXBlKSB7Ci0gICAgY2FzZSBXZWJJbnNwZWN0b3IuSXNzdWVNZXNz
YWdlLlR5cGUuU2VtYW50aWNJc3N1ZToKLSAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5VSVN0
cmluZygiU2VtYW50aWMgSXNzdWUiKTsKLSAgICBjYXNlIFdlYkluc3BlY3Rvci5Jc3N1ZU1lc3Nh
Z2UuVHlwZS5SYW5nZUlzc3VlOgotICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJSYW5nZSBJc3N1ZSIpOwotICAgIGNhc2UgV2ViSW5zcGVjdG9yLklzc3VlTWVzc2FnZS5UeXBl
LlJlZmVyZW5jZUlzc3VlOgotICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJS
ZWZlcmVuY2UgSXNzdWUiKTsKLSAgICBjYXNlIFdlYkluc3BlY3Rvci5Jc3N1ZU1lc3NhZ2UuVHlw
ZS5UeXBlSXNzdWU6Ci0gICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlR5cGUg
SXNzdWUiKTsKLSAgICBjYXNlIFdlYkluc3BlY3Rvci5Jc3N1ZU1lc3NhZ2UuVHlwZS5QYWdlSXNz
dWU6Ci0gICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlBhZ2UgSXNzdWUiKTsK
LSAgICBjYXNlIFdlYkluc3BlY3Rvci5Jc3N1ZU1lc3NhZ2UuVHlwZS5OZXR3b3JrSXNzdWU6Ci0g
ICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk5ldHdvcmsgSXNzdWUiKTsKLSAg
ICBjYXNlIFdlYkluc3BlY3Rvci5Jc3N1ZU1lc3NhZ2UuVHlwZS5TZWN1cml0eUlzc3VlOgotICAg
ICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTZWN1cml0eSBJc3N1ZSIpOwotICAg
IGNhc2UgV2ViSW5zcGVjdG9yLklzc3VlTWVzc2FnZS5UeXBlLk90aGVySXNzdWU6Ci0gICAgICAg
IHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk90aGVyIElzc3VlIik7Ci0gICAgZGVmYXVs
dDoKLSAgICAgICAgY29uc29sZS5lcnJvcigiVW5rbm93biBpc3N1ZSBtZXNzYWdlIHR5cGU6Iiwg
dHlwZSk7Ci0gICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk90aGVyIElzc3Vl
Iik7Ci0gICAgfQotfTsKLQotV2ViSW5zcGVjdG9yLklzc3VlTWVzc2FnZS5wcm90b3R5cGUgPSB7
Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5Jc3N1ZU1lc3NhZ2UsCi0gICAgX19wcm90
b19fOiBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZSwKLQotICAgIGdldCB0eXBlKCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl90eXBlOwotICAgIH0sCi0KLSAgICBnZXQgbGV2ZWwo
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2xldmVsOwotICAgIH0sCi0KLSAgICBnZXQg
dGV4dCgpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fdGV4dDsKLSAgICB9LAotCi0gICAg
Z2V0IHVybCgpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fdXJsOwotICAgIH0sCi0KLSAg
ICBnZXQgbGluZU51bWJlcigpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fbGluZU51bWJl
cjsKLSAgICB9LAotCi0gICAgZ2V0IGNvbHVtbk51bWJlcigpCi0gICAgewotICAgICAgICByZXR1
cm4gdGhpcy5fY29sdW1uTnVtYmVyOwotICAgIH0sCi0KLSAgICAvLyBQcml2YXRlCi0KLSAgICBf
Zm9ybWF0VGV4dElmTmVjZXNzYXJ5KCkKLSAgICB7Ci0gICAgICAgIGlmICghdGhpcy5fcGFyYW1l
dGVycykKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLlJl
bW90ZU9iamVjdC50eXBlKHRoaXMuX3BhcmFtZXRlcnNbMF0pICE9PSAic3RyaW5nIikKLSAgICAg
ICAgICAgIHJldHVybjsKLQotICAgICAgICBmdW5jdGlvbiB2YWx1ZUZvcm1hdHRlcihvYmopCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBvYmouZGVzY3JpcHRpb247Ci0gICAgICAgIH0K
LQotICAgICAgICB2YXIgZm9ybWF0dGVycyA9IHt9OwotICAgICAgICBmb3JtYXR0ZXJzLm8gPSB2
YWx1ZUZvcm1hdHRlcjsKLSAgICAgICAgZm9ybWF0dGVycy5zID0gdmFsdWVGb3JtYXR0ZXI7Ci0g
ICAgICAgIGZvcm1hdHRlcnMuZiA9IHZhbHVlRm9ybWF0dGVyOwotICAgICAgICBmb3JtYXR0ZXJz
LmkgPSB2YWx1ZUZvcm1hdHRlcjsKLSAgICAgICAgZm9ybWF0dGVycy5kID0gdmFsdWVGb3JtYXR0
ZXI7Ci0KLSAgICAgICAgZnVuY3Rpb24gYXBwZW5kKGEsIGIpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGEgKz0gYjsKLSAgICAgICAgICAgIHJldHVybiBhOwotICAgICAgICB9Ci0KLSAgICAgICAg
dmFyIHJlc3VsdCA9IFN0cmluZy5mb3JtYXQodGhpcy5fcGFyYW1ldGVyc1swXS5kZXNjcmlwdGlv
biwgdGhpcy5fcGFyYW1ldGVycy5zbGljZSgxKSwgZm9ybWF0dGVycywgIiIsIGFwcGVuZCk7Ci0g
ICAgICAgIHZhciByZXN1bHRUZXh0ID0gcmVzdWx0LmZvcm1hdHRlZFJlc3VsdDsKLQotICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IHJlc3VsdC51bnVzZWRTdWJzdGl0dXRpb25zLmxlbmd0aDsg
KytpKQotICAgICAgICAgICAgcmVzdWx0VGV4dCArPSAiICIgKyByZXN1bHQudW51c2VkU3Vic3Rp
dHV0aW9uc1tpXS5kZXNjcmlwdGlvbjsKLQotICAgICAgICB0aGlzLl90ZXh0ID0gcmVzdWx0VGV4
dDsKLSAgICB9Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvTW9kZWxzL0tleWJvYXJkU2hvcnRjdXQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Nb2RlbHMvS2V5Ym9hcmRTaG9ydGN1dC5qcwppbmRleCAzNmMxOGZjLi5l
N2EwMzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9N
b2RlbHMvS2V5Ym9hcmRTaG9ydGN1dC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Nb2RlbHMvS2V5Ym9hcmRTaG9ydGN1dC5qcwpAQCAtMjMsNjUgKzIzLDE4NSBA
QAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rv
ci5LZXlib2FyZFNob3J0Y3V0ID0gZnVuY3Rpb24obW9kaWZpZXJzLCBrZXksIGNhbGxiYWNrLCB0
YXJnZXRFbGVtZW50KQorV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQgPSBjbGFzcyBLZXli
b2FyZFNob3J0Y3V0IGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogewotICAgIFdlYkluc3Bl
Y3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICBjb25zdHJ1Y3Rvcihtb2RpZmllcnMsIGtleSwg
Y2FsbGJhY2ssIHRhcmdldEVsZW1lbnQpCisgICAgeworICAgICAgICBzdXBlcigpOwogCi0gICAg
Y29uc29sZS5hc3NlcnQoa2V5KTsKLSAgICBjb25zb2xlLmFzc2VydCghY2FsbGJhY2sgfHwgdHlw
ZW9mIGNhbGxiYWNrID09PSAiZnVuY3Rpb24iKTsKLSAgICBjb25zb2xlLmFzc2VydCghdGFyZ2V0
RWxlbWVudCB8fCB0YXJnZXRFbGVtZW50IGluc3RhbmNlb2YgRWxlbWVudCk7CisgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KGtleSk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFjYWxsYmFjayB8fCB0
eXBlb2YgY2FsbGJhY2sgPT09ICJmdW5jdGlvbiIpOworICAgICAgICBjb25zb2xlLmFzc2VydCgh
dGFyZ2V0RWxlbWVudCB8fCB0YXJnZXRFbGVtZW50IGluc3RhbmNlb2YgRWxlbWVudCk7CiAKLSAg
ICBpZiAodHlwZW9mIGtleSA9PT0gInN0cmluZyIpIHsKLSAgICAgICAga2V5ID0ga2V5WzBdLnRv
VXBwZXJDYXNlKCk7Ci0gICAgICAgIGtleSA9IG5ldyBXZWJJbnNwZWN0b3IuS2V5KGtleS5jaGFy
Q29kZUF0KDApLCBrZXkpOwotICAgIH0KKyAgICAgICAgaWYgKHR5cGVvZiBrZXkgPT09ICJzdHJp
bmciKSB7CisgICAgICAgICAgICBrZXkgPSBrZXlbMF0udG9VcHBlckNhc2UoKTsKKyAgICAgICAg
ICAgIGtleSA9IG5ldyBXZWJJbnNwZWN0b3IuS2V5KGtleS5jaGFyQ29kZUF0KDApLCBrZXkpOwor
ICAgICAgICB9CiAKLSAgICBpZiAoY2FsbGJhY2sgJiYgIXRhcmdldEVsZW1lbnQpCi0gICAgICAg
IHRhcmdldEVsZW1lbnQgPSBkb2N1bWVudDsKKyAgICAgICAgaWYgKGNhbGxiYWNrICYmICF0YXJn
ZXRFbGVtZW50KQorICAgICAgICAgICAgdGFyZ2V0RWxlbWVudCA9IGRvY3VtZW50OwogCi0gICAg
dGhpcy5fbW9kaWZpZXJzID0gbW9kaWZpZXJzIHx8IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0
Y3V0Lk1vZGlmaWVyLk5vbmU7Ci0gICAgdGhpcy5fa2V5ID0ga2V5OwotICAgIHRoaXMuX3Rhcmdl
dEVsZW1lbnQgPSB0YXJnZXRFbGVtZW50OwotICAgIHRoaXMuX2NhbGxiYWNrID0gY2FsbGJhY2s7
Ci0gICAgdGhpcy5fZGlzYWJsZWQgPSBmYWxzZTsKLSAgICB0aGlzLl9pbXBsaWNpdGx5UHJldmVu
dHNEZWZhdWx0ID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5fbW9kaWZpZXJzID0gbW9kaWZpZXJzIHx8
IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLk5vbmU7CisgICAgICAgIHRo
aXMuX2tleSA9IGtleTsKKyAgICAgICAgdGhpcy5fdGFyZ2V0RWxlbWVudCA9IHRhcmdldEVsZW1l
bnQ7CisgICAgICAgIHRoaXMuX2NhbGxiYWNrID0gY2FsbGJhY2s7CisgICAgICAgIHRoaXMuX2Rp
c2FibGVkID0gZmFsc2U7CisgICAgICAgIHRoaXMuX2ltcGxpY2l0bHlQcmV2ZW50c0RlZmF1bHQg
PSB0cnVlOwogCi0gICAgaWYgKHRhcmdldEVsZW1lbnQpIHsKLSAgICAgICAgdmFyIHRhcmdldEtl
eWJvYXJkU2hvcnRjdXRzID0gdGFyZ2V0RWxlbWVudC5fa2V5Ym9hcmRTaG9ydGN1dHM7Ci0gICAg
ICAgIGlmICghdGFyZ2V0S2V5Ym9hcmRTaG9ydGN1dHMpCi0gICAgICAgICAgICB0YXJnZXRLZXli
b2FyZFNob3J0Y3V0cyA9IHRhcmdldEVsZW1lbnQuX2tleWJvYXJkU2hvcnRjdXRzID0gW107Cisg
ICAgICAgIGlmICh0YXJnZXRFbGVtZW50KSB7CisgICAgICAgICAgICB2YXIgdGFyZ2V0S2V5Ym9h
cmRTaG9ydGN1dHMgPSB0YXJnZXRFbGVtZW50Ll9rZXlib2FyZFNob3J0Y3V0czsKKyAgICAgICAg
ICAgIGlmICghdGFyZ2V0S2V5Ym9hcmRTaG9ydGN1dHMpCisgICAgICAgICAgICAgICAgdGFyZ2V0
S2V5Ym9hcmRTaG9ydGN1dHMgPSB0YXJnZXRFbGVtZW50Ll9rZXlib2FyZFNob3J0Y3V0cyA9IFtd
OwogCi0gICAgICAgIHRhcmdldEtleWJvYXJkU2hvcnRjdXRzLnB1c2godGhpcyk7CisgICAgICAg
ICAgICB0YXJnZXRLZXlib2FyZFNob3J0Y3V0cy5wdXNoKHRoaXMpOwogCi0gICAgICAgIGlmICgh
V2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuX3JlZ2lzdGVyZWRLZXlEb3duTGlzdGVuZXIp
IHsKLSAgICAgICAgICAgIFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Ll9yZWdpc3RlcmVk
S2V5RG93bkxpc3RlbmVyID0gdHJ1ZTsKLSAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3Rl
bmVyKCJrZXlkb3duIiwgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuX2hhbmRsZUtleURv
d24pOworICAgICAgICAgICAgaWYgKCFXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5fcmVn
aXN0ZXJlZEtleURvd25MaXN0ZW5lcikgeworICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5L
ZXlib2FyZFNob3J0Y3V0Ll9yZWdpc3RlcmVkS2V5RG93bkxpc3RlbmVyID0gdHJ1ZTsKKyAgICAg
ICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsIFdlYkluc3BlY3Rv
ci5LZXlib2FyZFNob3J0Y3V0Ll9oYW5kbGVLZXlEb3duKTsKKyAgICAgICAgICAgIH0KICAgICAg
ICAgfQogICAgIH0KLX07CiAKLVdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Ll9oYW5kbGVL
ZXlEb3duID0gZnVuY3Rpb24oZXZlbnQpCi17Ci0gICAgaWYgKGV2ZW50LmRlZmF1bHRQcmV2ZW50
ZWQpCi0gICAgICAgIHJldHVybjsKKyAgICAvLyBTdGF0aWMKIAotICAgIGZvciAodmFyIHRhcmdl
dEVsZW1lbnQgPSBldmVudC50YXJnZXQ7IHRhcmdldEVsZW1lbnQ7IHRhcmdldEVsZW1lbnQgPSB0
YXJnZXRFbGVtZW50LnBhcmVudE5vZGUpIHsKLSAgICAgICAgaWYgKCF0YXJnZXRFbGVtZW50Ll9r
ZXlib2FyZFNob3J0Y3V0cykKLSAgICAgICAgICAgIGNvbnRpbnVlOworICAgIHN0YXRpYyBfaGFu
ZGxlS2V5RG93bihldmVudCkKKyAgICB7CisgICAgICAgIGlmIChldmVudC5kZWZhdWx0UHJldmVu
dGVkKQorICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
dGFyZ2V0RWxlbWVudC5fa2V5Ym9hcmRTaG9ydGN1dHMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAg
ICAgIHZhciBrZXlib2FyZFNob3J0Y3V0ID0gdGFyZ2V0RWxlbWVudC5fa2V5Ym9hcmRTaG9ydGN1
dHNbaV07Ci0gICAgICAgICAgICBpZiAoIWtleWJvYXJkU2hvcnRjdXQubWF0Y2hlc0V2ZW50KGV2
ZW50KSkKKyAgICAgICAgZm9yICh2YXIgdGFyZ2V0RWxlbWVudCA9IGV2ZW50LnRhcmdldDsgdGFy
Z2V0RWxlbWVudDsgdGFyZ2V0RWxlbWVudCA9IHRhcmdldEVsZW1lbnQucGFyZW50Tm9kZSkgewor
ICAgICAgICAgICAgaWYgKCF0YXJnZXRFbGVtZW50Ll9rZXlib2FyZFNob3J0Y3V0cykKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAga2V5Ym9hcmRTaG9ydGN1dC5jYWxs
YmFjayhldmVudCwga2V5Ym9hcmRTaG9ydGN1dCk7CisgICAgICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IHRhcmdldEVsZW1lbnQuX2tleWJvYXJkU2hvcnRjdXRzLmxlbmd0aDsgKytpKSB7Cisg
ICAgICAgICAgICAgICAgdmFyIGtleWJvYXJkU2hvcnRjdXQgPSB0YXJnZXRFbGVtZW50Ll9rZXli
b2FyZFNob3J0Y3V0c1tpXTsKKyAgICAgICAgICAgICAgICBpZiAoIWtleWJvYXJkU2hvcnRjdXQu
bWF0Y2hlc0V2ZW50KGV2ZW50KSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAg
ICAgICAgICAgIGlmIChrZXlib2FyZFNob3J0Y3V0LmltcGxpY2l0bHlQcmV2ZW50c0RlZmF1bHQp
Ci0gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAgICAgICAgICAgICAg
ICBrZXlib2FyZFNob3J0Y3V0LmNhbGxiYWNrKGV2ZW50LCBrZXlib2FyZFNob3J0Y3V0KTsKIAot
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIGlmIChrZXlib2FyZFNob3J0Y3V0
LmltcGxpY2l0bHlQcmV2ZW50c0RlZmF1bHQpCisgICAgICAgICAgICAgICAgICAgIGV2ZW50LnBy
ZXZlbnREZWZhdWx0KCk7CisKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9
CiAgICAgICAgIH0KICAgICB9CisKKyAgICAvLyBQdWJsaWMKKworICAgIGdldCBtb2RpZmllcnMo
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX21vZGlmaWVyczsKKyAgICB9CisKKyAgICBn
ZXQga2V5KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9rZXk7CisgICAgfQorCisgICAg
Z2V0IGRpc3BsYXlOYW1lKCkKKyAgICB7CisgICAgICAgIHZhciByZXN1bHQgPSAiIjsKKworICAg
ICAgICBpZiAodGhpcy5fbW9kaWZpZXJzICYgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQu
TW9kaWZpZXIuQ29udHJvbCkKKyAgICAgICAgICAgIHJlc3VsdCArPSAiXHUyMzAzIjsKKyAgICAg
ICAgaWYgKHRoaXMuX21vZGlmaWVycyAmIFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1v
ZGlmaWVyLk9wdGlvbikKKyAgICAgICAgICAgIHJlc3VsdCArPSBXZWJJbnNwZWN0b3IuUGxhdGZv
cm0ubmFtZSA9PT0gIm1hYyIgPyAiXHUyMzI1IiA6ICJcdTIzODciOworICAgICAgICBpZiAodGhp
cy5fbW9kaWZpZXJzICYgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuU2hp
ZnQpCisgICAgICAgICAgICByZXN1bHQgKz0gIlx1MjFlNyI7CisgICAgICAgIGlmICh0aGlzLl9t
b2RpZmllcnMgJiBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5Db21tYW5k
KQorICAgICAgICAgICAgcmVzdWx0ICs9ICJcdTIzMTgiOworCisgICAgICAgIHJlc3VsdCArPSB0
aGlzLl9rZXkudG9TdHJpbmcoKTsKKworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKwor
ICAgIGdldCBjYWxsYmFjaygpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fY2FsbGJhY2s7
CisgICAgfQorCisgICAgZ2V0IGRpc2FibGVkKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlz
Ll9kaXNhYmxlZDsKKyAgICB9CisKKyAgICBzZXQgZGlzYWJsZWQoZGlzYWJsZWQpCisgICAgewor
ICAgICAgICB0aGlzLl9kaXNhYmxlZCA9IGRpc2FibGVkIHx8IGZhbHNlOworICAgIH0KKworICAg
IGdldCBpbXBsaWNpdGx5UHJldmVudHNEZWZhdWx0KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0
aGlzLl9pbXBsaWNpdGx5UHJldmVudHNEZWZhdWx0OworICAgIH0KKworICAgIHNldCBpbXBsaWNp
dGx5UHJldmVudHNEZWZhdWx0KGltcGxpY2l0bHkpCisgICAgeworICAgICAgICB0aGlzLl9pbXBs
aWNpdGx5UHJldmVudHNEZWZhdWx0ID0gaW1wbGljaXRseTsKKyAgICB9CisKKyAgICB1bmJpbmQo
KQorICAgIHsKKyAgICAgICAgdGhpcy5fZGlzYWJsZWQgPSB0cnVlOworCisgICAgICAgIGlmICgh
dGhpcy5fdGFyZ2V0RWxlbWVudCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB2YXIg
dGFyZ2V0S2V5Ym9hcmRTaG9ydGN1dHMgPSB0aGlzLl90YXJnZXRFbGVtZW50Ll9rZXlib2FyZFNo
b3J0Y3V0czsKKyAgICAgICAgaWYgKCF0YXJnZXRLZXlib2FyZFNob3J0Y3V0cykKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICB0YXJnZXRLZXlib2FyZFNob3J0Y3V0cy5yZW1vdmUodGhp
cyk7CisgICAgfQorCisgICAgbWF0Y2hlc0V2ZW50KGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYg
KHRoaXMuX2Rpc2FibGVkKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGlm
ICh0aGlzLl9rZXkua2V5Q29kZSAhPT0gZXZlbnQua2V5Q29kZSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgICAgICB2YXIgZXZlbnRNb2RpZmllcnMgPSBXZWJJbnNwZWN0b3IuS2V5
Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5Ob25lOworICAgICAgICBpZiAoZXZlbnQuc2hpZnRLZXkp
CisgICAgICAgICAgICBldmVudE1vZGlmaWVycyB8PSBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9y
dGN1dC5Nb2RpZmllci5TaGlmdDsKKyAgICAgICAgaWYgKGV2ZW50LmN0cmxLZXkpCisgICAgICAg
ICAgICBldmVudE1vZGlmaWVycyB8PSBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2Rp
Zmllci5Db250cm9sOworICAgICAgICBpZiAoZXZlbnQuYWx0S2V5KQorICAgICAgICAgICAgZXZl
bnRNb2RpZmllcnMgfD0gV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuT3B0
aW9uOworICAgICAgICBpZiAoZXZlbnQubWV0YUtleSkKKyAgICAgICAgICAgIGV2ZW50TW9kaWZp
ZXJzIHw9IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLkNvbW1hbmQ7Cisg
ICAgICAgIHJldHVybiB0aGlzLl9tb2RpZmllcnMgPT09IGV2ZW50TW9kaWZpZXJzOworICAgIH0K
K307CisKK1dlYkluc3BlY3Rvci5LZXkgPSBjbGFzcyBLZXkKK3sKKyAgICBjb25zdHJ1Y3Rvcihr
ZXlDb2RlLCBkaXNwbGF5TmFtZSkKKyAgICB7CisgICAgICAgIHRoaXMuX2tleUNvZGUgPSBrZXlD
b2RlOworICAgICAgICB0aGlzLl9kaXNwbGF5TmFtZSA9IGRpc3BsYXlOYW1lOworICAgIH0KKwor
ICAgIC8vIFB1YmxpYworCisgICAgZ2V0IGtleUNvZGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IHRoaXMuX2tleUNvZGU7CisgICAgfQorCisgICAgZ2V0IGRpc3BsYXlOYW1lKCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiB0aGlzLl9kaXNwbGF5TmFtZTsKKyAgICB9CisKKyAgICB0b1N0cmluZygp
CisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fZGlzcGxheU5hbWU7CisgICAgfQogfTsKIAog
V2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIgPSB7CkBAIC05NywyOSArMjE3
LDYgQEAgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIgPSB7CiAgICAgfQog
fTsKIAotV2ViSW5zcGVjdG9yLktleSA9IGZ1bmN0aW9uKGtleUNvZGUsIGRpc3BsYXlOYW1lKQot
ewotICAgIHRoaXMuX2tleUNvZGUgPSBrZXlDb2RlOwotICAgIHRoaXMuX2Rpc3BsYXlOYW1lID0g
ZGlzcGxheU5hbWU7Ci19OwotCi1XZWJJbnNwZWN0b3IuS2V5LnByb3RvdHlwZSA9IHsKLSAgICBn
ZXQga2V5Q29kZSgpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fa2V5Q29kZTsKLSAgICB9
LAotCi0gICAgZ2V0IGRpc3BsYXlOYW1lKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9k
aXNwbGF5TmFtZTsKLSAgICB9LAotCi0gICAgdG9TdHJpbmc6IGZ1bmN0aW9uKCkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiB0aGlzLl9kaXNwbGF5TmFtZTsKLSAgICB9Ci19OwotCiBXZWJJbnNwZWN0
b3IuS2V5Ym9hcmRTaG9ydGN1dC5LZXkgPSB7CiAgICAgQmFja3NwYWNlOiBuZXcgV2ViSW5zcGVj
dG9yLktleSg4LCAiXHUyMzJiIiksCiAgICAgVGFiOiBuZXcgV2ViSW5zcGVjdG9yLktleSg5LCAi
XHUyMWU1IiksCkBAIC0xNTgsOTggKzI1NSwzIEBAIFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0
Y3V0LktleSA9IHsKICAgICBBcG9zdHJvcGhlOiBuZXcgV2ViSW5zcGVjdG9yLktleSgxOTIsICJg
IiksCiAgICAgU2luZ2xlUXVvdGU6IG5ldyBXZWJJbnNwZWN0b3IuS2V5KDIyMiwgIlwnIikKIH07
Ci0KLVdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LnByb3RvdHlwZSA9IHsKLSAgICBjb25z
dHJ1Y3RvcjogV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQsCi0KLSAgICAvLyBQdWJsaWMK
LQotICAgIGdldCBtb2RpZmllcnMoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX21vZGlm
aWVyczsKLSAgICB9LAotCi0gICAgZ2V0IGtleSgpCi0gICAgewotICAgICAgICByZXR1cm4gdGhp
cy5fa2V5OwotICAgIH0sCi0KLSAgICBnZXQgZGlzcGxheU5hbWUoKQotICAgIHsKLSAgICAgICAg
dmFyIHJlc3VsdCA9ICIiOwotCi0gICAgICAgIGlmICh0aGlzLl9tb2RpZmllcnMgJiBXZWJJbnNw
ZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5Db250cm9sKQotICAgICAgICAgICAgcmVz
dWx0ICs9ICJcdTIzMDMiOwotICAgICAgICBpZiAodGhpcy5fbW9kaWZpZXJzICYgV2ViSW5zcGVj
dG9yLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuT3B0aW9uKQotICAgICAgICAgICAgcmVzdWx0
ICs9IFdlYkluc3BlY3Rvci5QbGF0Zm9ybS5uYW1lID09PSAibWFjIiA/ICJcdTIzMjUiIDogIlx1
MjM4NyI7Ci0gICAgICAgIGlmICh0aGlzLl9tb2RpZmllcnMgJiBXZWJJbnNwZWN0b3IuS2V5Ym9h
cmRTaG9ydGN1dC5Nb2RpZmllci5TaGlmdCkKLSAgICAgICAgICAgIHJlc3VsdCArPSAiXHUyMWU3
IjsKLSAgICAgICAgaWYgKHRoaXMuX21vZGlmaWVycyAmIFdlYkluc3BlY3Rvci5LZXlib2FyZFNo
b3J0Y3V0Lk1vZGlmaWVyLkNvbW1hbmQpCi0gICAgICAgICAgICByZXN1bHQgKz0gIlx1MjMxOCI7
Ci0KLSAgICAgICAgcmVzdWx0ICs9IHRoaXMuX2tleS50b1N0cmluZygpOwotCi0gICAgICAgIHJl
dHVybiByZXN1bHQ7Ci0gICAgfSwKLQotICAgIGdldCBjYWxsYmFjaygpCi0gICAgewotICAgICAg
ICByZXR1cm4gdGhpcy5fY2FsbGJhY2s7Ci0gICAgfSwKLQotICAgIGdldCBkaXNhYmxlZCgpCi0g
ICAgewotICAgICAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7Ci0gICAgfSwKLQotICAgIHNldCBk
aXNhYmxlZChkaXNhYmxlZCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX2Rpc2FibGVkID0gZGlzYWJs
ZWQgfHwgZmFsc2U7Ci0gICAgfSwKLQotICAgIGdldCBpbXBsaWNpdGx5UHJldmVudHNEZWZhdWx0
KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9pbXBsaWNpdGx5UHJldmVudHNEZWZhdWx0
OwotICAgIH0sCi0KLSAgICBzZXQgaW1wbGljaXRseVByZXZlbnRzRGVmYXVsdChpbXBsaWNpdGx5
KQotICAgIHsKLSAgICAgICAgdGhpcy5faW1wbGljaXRseVByZXZlbnRzRGVmYXVsdCA9IGltcGxp
Y2l0bHk7Ci0gICAgfSwKLQotICAgIHVuYmluZDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAg
dGhpcy5fZGlzYWJsZWQgPSB0cnVlOwotCi0gICAgICAgIGlmICghdGhpcy5fdGFyZ2V0RWxlbWVu
dCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB2YXIgdGFyZ2V0S2V5Ym9hcmRTaG9y
dGN1dHMgPSB0aGlzLl90YXJnZXRFbGVtZW50Ll9rZXlib2FyZFNob3J0Y3V0czsKLSAgICAgICAg
aWYgKCF0YXJnZXRLZXlib2FyZFNob3J0Y3V0cykKLSAgICAgICAgICAgIHJldHVybjsKLQotICAg
ICAgICB0YXJnZXRLZXlib2FyZFNob3J0Y3V0cy5yZW1vdmUodGhpcyk7Ci0gICAgfSwKLQotICAg
IG1hdGNoZXNFdmVudDogZnVuY3Rpb24oZXZlbnQpCi0gICAgewotICAgICAgICBpZiAodGhpcy5f
ZGlzYWJsZWQpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgaWYgKHRoaXMu
X2tleS5rZXlDb2RlICE9PSBldmVudC5rZXlDb2RlKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgICAgIHZhciBldmVudE1vZGlmaWVycyA9IFdlYkluc3BlY3Rvci5LZXlib2FyZFNo
b3J0Y3V0Lk1vZGlmaWVyLk5vbmU7Ci0gICAgICAgIGlmIChldmVudC5zaGlmdEtleSkKLSAgICAg
ICAgICAgIGV2ZW50TW9kaWZpZXJzIHw9IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1v
ZGlmaWVyLlNoaWZ0OwotICAgICAgICBpZiAoZXZlbnQuY3RybEtleSkKLSAgICAgICAgICAgIGV2
ZW50TW9kaWZpZXJzIHw9IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLkNv
bnRyb2w7Ci0gICAgICAgIGlmIChldmVudC5hbHRLZXkpCi0gICAgICAgICAgICBldmVudE1vZGlm
aWVycyB8PSBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5PcHRpb247Ci0g
ICAgICAgIGlmIChldmVudC5tZXRhS2V5KQotICAgICAgICAgICAgZXZlbnRNb2RpZmllcnMgfD0g
V2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuQ29tbWFuZDsKLSAgICAgICAg
cmV0dXJuIHRoaXMuX21vZGlmaWVycyA9PT0gZXZlbnRNb2RpZmllcnM7Ci0gICAgfQotfTsKLQot
V2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYklu
c3BlY3Rvci5PYmplY3QucHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0xheW91dFRpbWVsaW5lUmVjb3JkLmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0xheW91dFRpbWVsaW5lUmVjb3Jk
LmpzCmluZGV4IGE5NmUwOWUuLmY3ZTQyNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9MYXlvdXRUaW1lbGluZVJlY29yZC5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvTGF5b3V0VGltZWxpbmVS
ZWNvcmQuanMKQEAgLTIzLDEwNiArMjMsMTA1IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkxheW91dFRpbWVsaW5lUmVjb3JkID0gZnVu
Y3Rpb24oZXZlbnRUeXBlLCBzdGFydFRpbWUsIGVuZFRpbWUsIGNhbGxGcmFtZXMsIHNvdXJjZUNv
ZGVMb2NhdGlvbiwgeCwgeSwgd2lkdGgsIGhlaWdodCwgcXVhZCkKK1dlYkluc3BlY3Rvci5MYXlv
dXRUaW1lbGluZVJlY29yZCA9IGNsYXNzIExheW91dFRpbWVsaW5lUmVjb3JkIGV4dGVuZHMgV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkCiB7Ci0gICAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVj
b3JkLmNhbGwodGhpcywgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkLlR5cGUuTGF5b3V0LCBz
dGFydFRpbWUsIGVuZFRpbWUsIGNhbGxGcmFtZXMsIHNvdXJjZUNvZGVMb2NhdGlvbik7CisgICAg
Y29uc3RydWN0b3IoZXZlbnRUeXBlLCBzdGFydFRpbWUsIGVuZFRpbWUsIGNhbGxGcmFtZXMsIHNv
dXJjZUNvZGVMb2NhdGlvbiwgeCwgeSwgd2lkdGgsIGhlaWdodCwgcXVhZCkKKyAgICB7CisgICAg
ICAgIHN1cGVyKFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5UeXBlLkxheW91dCwgc3RhcnRU
aW1lLCBlbmRUaW1lLCBjYWxsRnJhbWVzLCBzb3VyY2VDb2RlTG9jYXRpb24pOwogCi0gICAgY29u
c29sZS5hc3NlcnQoZXZlbnRUeXBlKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoZXZlbnRUeXBl
KTsKIAotICAgIGlmIChldmVudFR5cGUgaW4gV2ViSW5zcGVjdG9yLkxheW91dFRpbWVsaW5lUmVj
b3JkLkV2ZW50VHlwZSkKLSAgICAgICAgZXZlbnRUeXBlID0gV2ViSW5zcGVjdG9yLkxheW91dFRp
bWVsaW5lUmVjb3JkLkV2ZW50VHlwZVtldmVudFR5cGVdOworICAgICAgICBpZiAoZXZlbnRUeXBl
IGluIFdlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZVJlY29yZC5FdmVudFR5cGUpCisgICAgICAg
ICAgICBldmVudFR5cGUgPSBXZWJJbnNwZWN0b3IuTGF5b3V0VGltZWxpbmVSZWNvcmQuRXZlbnRU
eXBlW2V2ZW50VHlwZV07CiAKLSAgICB0aGlzLl9ldmVudFR5cGUgPSBldmVudFR5cGU7Ci0gICAg
dGhpcy5feCA9IHR5cGVvZiB4ID09PSAibnVtYmVyIiA/IHggOiBOYU47Ci0gICAgdGhpcy5feSA9
IHR5cGVvZiB5ID09PSAibnVtYmVyIiA/IHkgOiBOYU47Ci0gICAgdGhpcy5fd2lkdGggPSB0eXBl
b2Ygd2lkdGggPT09ICJudW1iZXIiID8gd2lkdGggOiBOYU47Ci0gICAgdGhpcy5faGVpZ2h0ID0g
dHlwZW9mIGhlaWdodCA9PT0gIm51bWJlciIgPyBoZWlnaHQgOiBOYU47Ci0gICAgdGhpcy5fcXVh
ZCA9IHF1YWQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUXVhZCA/IHF1YWQgOiBudWxsOwotfTsK
LQotV2ViSW5zcGVjdG9yLkxheW91dFRpbWVsaW5lUmVjb3JkLkV2ZW50VHlwZSA9IHsKLSAgICBJ
bnZhbGlkYXRlU3R5bGVzOiAibGF5b3V0LXRpbWVsaW5lLXJlY29yZC1pbnZhbGlkYXRlLXN0eWxl
cyIsCi0gICAgUmVjYWxjdWxhdGVTdHlsZXM6ICJsYXlvdXQtdGltZWxpbmUtcmVjb3JkLXJlY2Fs
Y3VsYXRlLXN0eWxlcyIsCi0gICAgSW52YWxpZGF0ZUxheW91dDogImxheW91dC10aW1lbGluZS1y
ZWNvcmQtaW52YWxpZGF0ZS1sYXlvdXQiLAotICAgIEZvcmNlZExheW91dDogImxheW91dC10aW1l
bGluZS1yZWNvcmQtZm9yY2VkLWxheW91dCIsCi0gICAgTGF5b3V0OiAibGF5b3V0LXRpbWVsaW5l
LXJlY29yZC1sYXlvdXQiLAotICAgIFBhaW50OiAibGF5b3V0LXRpbWVsaW5lLXJlY29yZC1wYWlu
dCIKLX07Ci0KLVdlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZVJlY29yZC5kaXNwbGF5TmFtZUZv
ckV2ZW50VHlwZSA9IGZ1bmN0aW9uKGV2ZW50VHlwZSkKLXsKLSAgICBzd2l0Y2goZXZlbnRUeXBl
KSB7Ci0gICAgY2FzZSBXZWJJbnNwZWN0b3IuTGF5b3V0VGltZWxpbmVSZWNvcmQuRXZlbnRUeXBl
LkludmFsaWRhdGVTdHlsZXM6Ci0gICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IlN0eWxlcyBJbnZhbGlkYXRlZCIpOwotICAgIGNhc2UgV2ViSW5zcGVjdG9yLkxheW91dFRpbWVs
aW5lUmVjb3JkLkV2ZW50VHlwZS5SZWNhbGN1bGF0ZVN0eWxlczoKLSAgICAgICAgcmV0dXJuIFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiU3R5bGVzIFJlY2FsY3VsYXRlZCIpOwotICAgIGNhc2UgV2Vi
SW5zcGVjdG9yLkxheW91dFRpbWVsaW5lUmVjb3JkLkV2ZW50VHlwZS5JbnZhbGlkYXRlTGF5b3V0
OgotICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJMYXlvdXQgSW52YWxpZGF0
ZWQiKTsKLSAgICBjYXNlIFdlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZVJlY29yZC5FdmVudFR5
cGUuRm9yY2VkTGF5b3V0OgotICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJG
b3JjZWQgTGF5b3V0Iik7Ci0gICAgY2FzZSBXZWJJbnNwZWN0b3IuTGF5b3V0VGltZWxpbmVSZWNv
cmQuRXZlbnRUeXBlLkxheW91dDoKLSAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiTGF5b3V0Iik7Ci0gICAgY2FzZSBXZWJJbnNwZWN0b3IuTGF5b3V0VGltZWxpbmVSZWNvcmQu
RXZlbnRUeXBlLlBhaW50OgotICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJQ
YWludCIpOworICAgICAgICB0aGlzLl9ldmVudFR5cGUgPSBldmVudFR5cGU7CisgICAgICAgIHRo
aXMuX3ggPSB0eXBlb2YgeCA9PT0gIm51bWJlciIgPyB4IDogTmFOOworICAgICAgICB0aGlzLl95
ID0gdHlwZW9mIHkgPT09ICJudW1iZXIiID8geSA6IE5hTjsKKyAgICAgICAgdGhpcy5fd2lkdGgg
PSB0eXBlb2Ygd2lkdGggPT09ICJudW1iZXIiID8gd2lkdGggOiBOYU47CisgICAgICAgIHRoaXMu
X2hlaWdodCA9IHR5cGVvZiBoZWlnaHQgPT09ICJudW1iZXIiID8gaGVpZ2h0IDogTmFOOworICAg
ICAgICB0aGlzLl9xdWFkID0gcXVhZCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5RdWFkID8gcXVh
ZCA6IG51bGw7CiAgICAgfQotfTsKIAotV2ViSW5zcGVjdG9yLkxheW91dFRpbWVsaW5lUmVjb3Jk
LlR5cGVJZGVudGlmaWVyID0gImxheW91dC10aW1lbGluZS1yZWNvcmQiOwotV2ViSW5zcGVjdG9y
LkxheW91dFRpbWVsaW5lUmVjb3JkLkV2ZW50VHlwZUNvb2tpZUtleSA9ICJsYXlvdXQtdGltZWxp
bmUtcmVjb3JkLWV2ZW50LXR5cGUiOworICAgIC8vIFN0YXRpYwogCi1XZWJJbnNwZWN0b3IuTGF5
b3V0VGltZWxpbmVSZWNvcmQucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNw
ZWN0b3IuTGF5b3V0VGltZWxpbmVSZWNvcmQsCisgICAgc3RhdGljIGRpc3BsYXlOYW1lRm9yRXZl
bnRUeXBlKGV2ZW50VHlwZSkKKyAgICB7CisgICAgICAgIHN3aXRjaChldmVudFR5cGUpIHsKKyAg
ICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuTGF5b3V0VGltZWxpbmVSZWNvcmQuRXZlbnRUeXBlLklu
dmFsaWRhdGVTdHlsZXM6CisgICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJTdHlsZXMgSW52YWxpZGF0ZWQiKTsKKyAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuTGF5b3V0
VGltZWxpbmVSZWNvcmQuRXZlbnRUeXBlLlJlY2FsY3VsYXRlU3R5bGVzOgorICAgICAgICAgICAg
cmV0dXJuIFdlYkluc3BlY3Rvci5VSVN0cmluZygiU3R5bGVzIFJlY2FsY3VsYXRlZCIpOworICAg
ICAgICBjYXNlIFdlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZVJlY29yZC5FdmVudFR5cGUuSW52
YWxpZGF0ZUxheW91dDoKKyAgICAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IkxheW91dCBJbnZhbGlkYXRlZCIpOworICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5MYXlvdXRU
aW1lbGluZVJlY29yZC5FdmVudFR5cGUuRm9yY2VkTGF5b3V0OgorICAgICAgICAgICAgcmV0dXJu
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiRm9yY2VkIExheW91dCIpOworICAgICAgICBjYXNlIFdl
Ykluc3BlY3Rvci5MYXlvdXRUaW1lbGluZVJlY29yZC5FdmVudFR5cGUuTGF5b3V0OgorICAgICAg
ICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5VSVN0cmluZygiTGF5b3V0Iik7CisgICAgICAgIGNh
c2UgV2ViSW5zcGVjdG9yLkxheW91dFRpbWVsaW5lUmVjb3JkLkV2ZW50VHlwZS5QYWludDoKKyAg
ICAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlBhaW50Iik7CisgICAgICAg
IH0KKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBldmVudFR5cGUoKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIHRoaXMuX2V2ZW50VHlwZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdl
dCB4KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl94OwotICAgIH0sCisgICAgfQogCiAg
ICAgZ2V0IHkoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3k7Ci0gICAgfSwKKyAgICB9
CiAKICAgICBnZXQgd2lkdGgoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3dpZHRoOwot
ICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGhlaWdodCgpCiAgICAgewogICAgICAgICByZXR1cm4g
dGhpcy5faGVpZ2h0OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGFyZWEoKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHRoaXMuX3dpZHRoICogdGhpcy5faGVpZ2h0OwotICAgIH0sCisgICAgfQog
CiAgICAgZ2V0IHJlY3QoKQogICAgIHsKICAgICAgICAgaWYgKCFpc05hTih0aGlzLl94KSAmJiAh
aXNOYU4odGhpcy5feSkpCiAgICAgICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5SZWN0
KHRoaXMuX3gsIHRoaXMuX3ksIHRoaXMuX3dpZHRoLCB0aGlzLl9oZWlnaHQpOwogICAgICAgICBy
ZXR1cm4gbnVsbDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBxdWFkKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiB0aGlzLl9xdWFkOwotICAgIH0sCisgICAgfQogCi0gICAgc2F2ZUlkZW50aXR5
VG9Db29raWU6IGZ1bmN0aW9uKGNvb2tpZSkKKyAgICBzYXZlSWRlbnRpdHlUb0Nvb2tpZShjb29r
aWUpCiAgICAgewotICAgICAgICBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQucHJvdG90eXBl
LnNhdmVJZGVudGl0eVRvQ29va2llLmNhbGwodGhpcywgY29va2llKTsKKyAgICAgICAgc3VwZXIu
c2F2ZUlkZW50aXR5VG9Db29raWUoY29va2llKTsKIAogICAgICAgICBjb29raWVbV2ViSW5zcGVj
dG9yLkxheW91dFRpbWVsaW5lUmVjb3JkLkV2ZW50VHlwZUNvb2tpZUtleV0gPSB0aGlzLl9ldmVu
dFR5cGU7CiAgICAgfQogfTsKIAotV2ViSW5zcGVjdG9yLkxheW91dFRpbWVsaW5lUmVjb3JkLnBy
b3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQucHJvdG90eXBl
OworV2ViSW5zcGVjdG9yLkxheW91dFRpbWVsaW5lUmVjb3JkLkV2ZW50VHlwZSA9IHsKKyAgICBJ
bnZhbGlkYXRlU3R5bGVzOiAibGF5b3V0LXRpbWVsaW5lLXJlY29yZC1pbnZhbGlkYXRlLXN0eWxl
cyIsCisgICAgUmVjYWxjdWxhdGVTdHlsZXM6ICJsYXlvdXQtdGltZWxpbmUtcmVjb3JkLXJlY2Fs
Y3VsYXRlLXN0eWxlcyIsCisgICAgSW52YWxpZGF0ZUxheW91dDogImxheW91dC10aW1lbGluZS1y
ZWNvcmQtaW52YWxpZGF0ZS1sYXlvdXQiLAorICAgIEZvcmNlZExheW91dDogImxheW91dC10aW1l
bGluZS1yZWNvcmQtZm9yY2VkLWxheW91dCIsCisgICAgTGF5b3V0OiAibGF5b3V0LXRpbWVsaW5l
LXJlY29yZC1sYXlvdXQiLAorICAgIFBhaW50OiAibGF5b3V0LXRpbWVsaW5lLXJlY29yZC1wYWlu
dCIKK307CisKK1dlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZVJlY29yZC5UeXBlSWRlbnRpZmll
ciA9ICJsYXlvdXQtdGltZWxpbmUtcmVjb3JkIjsKK1dlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGlu
ZVJlY29yZC5FdmVudFR5cGVDb29raWVLZXkgPSAibGF5b3V0LXRpbWVsaW5lLXJlY29yZC1ldmVu
dC10eXBlIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L01vZGVscy9MYXp5U291cmNlQ29kZUxvY2F0aW9uLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvTW9kZWxzL0xhenlTb3VyY2VDb2RlTG9jYXRpb24uanMKaW5kZXggNDhj
ZDFmYy4uNmYxYTkwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvTW9kZWxzL0xhenlTb3VyY2VDb2RlTG9jYXRpb24uanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0xhenlTb3VyY2VDb2RlTG9jYXRpb24uanMK
QEAgLTMwLDgwICszMCw3OSBAQAogLy8gIC0gZm9ybWF0dGVkIGluZm9ybWF0aW9uIGRvZXMgcmVx
dWlyZSBpbml0aWFsaXphdGlvbiwgZG9uZSBieSBvdmVycmlkaW5nIHB1YmxpYyBBUElzLgogLy8g
IC0gZGlzcGxheSBpbmZvcm1hdGlvbiBkb2VzIHJlcXVpcmUgaW5pdGlhbGl6YXRpb24sIGRvbmUg
Ynkgb3ZlcnJpZGluZyBwcml2YXRlIGZ1bm5lbCBBUEkgcmVzb2x2ZU1hcHBlZExvY2F0aW9uLgog
Ci1XZWJJbnNwZWN0b3IuTGF6eVNvdXJjZUNvZGVMb2NhdGlvbiA9IGZ1bmN0aW9uKHNvdXJjZUNv
ZGUsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKK1dlYkluc3BlY3Rvci5MYXp5U291cmNlQ29k
ZUxvY2F0aW9uID0gY2xhc3MgTGF6eVNvdXJjZUNvZGVMb2NhdGlvbiBleHRlbmRzIFdlYkluc3Bl
Y3Rvci5Tb3VyY2VDb2RlTG9jYXRpb24KIHsKLSAgICBXZWJJbnNwZWN0b3IuU291cmNlQ29kZUxv
Y2F0aW9uLmNhbGwodGhpcywgbnVsbCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKTsKKyAgICBj
b25zdHJ1Y3Rvcihzb3VyY2VDb2RlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCisgICAgewor
ICAgICAgICBzdXBlcihudWxsLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpOwogCi0gICAgY29u
c29sZS5hc3NlcnQoc291cmNlQ29kZSk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHNvdXJjZUNv
ZGUpOwogCi0gICAgdGhpcy5faW5pdGlhbGl6ZWQgPSBmYWxzZTsKLSAgICB0aGlzLl9sYXp5U291
cmNlQ29kZSA9IHNvdXJjZUNvZGU7Ci19OwotCi1XZWJJbnNwZWN0b3IuTGF6eVNvdXJjZUNvZGVM
b2NhdGlvbi5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5MYXp5
U291cmNlQ29kZUxvY2F0aW9uLAorICAgICAgICB0aGlzLl9pbml0aWFsaXplZCA9IGZhbHNlOwor
ICAgICAgICB0aGlzLl9sYXp5U291cmNlQ29kZSA9IHNvdXJjZUNvZGU7CisgICAgfQogCiAgICAg
Ly8gUHVibGljCiAKLSAgICBpc0VxdWFsOiBmdW5jdGlvbihvdGhlcikKKyAgICBpc0VxdWFsKG90
aGVyKQogICAgIHsKICAgICAgICAgaWYgKCFvdGhlcikKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgcmV0dXJuIHRoaXMuX2xhenlTb3VyY2VDb2RlID09PSBvdGhlci5fc291cmNl
Q29kZSAmJiB0aGlzLl9saW5lTnVtYmVyID09PSBvdGhlci5fbGluZU51bWJlciAmJiB0aGlzLl9j
b2x1bW5OdW1iZXIgPT09IG90aGVyLl9jb2x1bW5OdW1iZXI7Ci0gICAgfSwKKyAgICB9CiAKICAg
ICBnZXQgc291cmNlQ29kZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fbGF6eVNvdXJj
ZUNvZGU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgc291cmNlQ29kZShzb3VyY2VDb2RlKQog
ICAgIHsKICAgICAgICAgLy8gR2V0dGVyIGFuZCBzZXR0ZXIgbXVzdCBiZSBwcm92aWRlZCB0b2dl
dGhlci4KICAgICAgICAgdGhpcy5zZXRTb3VyY2VDb2RlKHNvdXJjZUNvZGUpOwotICAgIH0sCisg
ICAgfQogCiAgICAgZ2V0IGZvcm1hdHRlZExpbmVOdW1iZXIoKQogICAgIHsKICAgICAgICAgdGhp
cy5fbGF6eUluaXRpYWxpemF0aW9uKCk7CiAgICAgICAgIHJldHVybiB0aGlzLl9mb3JtYXR0ZWRM
aW5lTnVtYmVyOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGZvcm1hdHRlZENvbHVtbk51bWJl
cigpCiAgICAgewogICAgICAgICB0aGlzLl9sYXp5SW5pdGlhbGl6YXRpb24oKTsKICAgICAgICAg
cmV0dXJuIHRoaXMuX2Zvcm1hdHRlZENvbHVtbk51bWJlcjsKLSAgICB9LAorICAgIH0KIAotICAg
IGZvcm1hdHRlZFBvc2l0aW9uOiBmdW5jdGlvbigpCisgICAgZm9ybWF0dGVkUG9zaXRpb24oKQog
ICAgIHsKICAgICAgICAgdGhpcy5fbGF6eUluaXRpYWxpemF0aW9uKCk7CiAgICAgICAgIHJldHVy
biBuZXcgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVQb3NpdGlvbih0aGlzLl9mb3JtYXR0ZWRMaW5l
TnVtYmVyLCB0aGlzLl9mb3JtYXR0ZWRDb2x1bW5OdW1iZXIpOwotICAgIH0sCisgICAgfQogCi0g
ICAgaGFzRm9ybWF0dGVkTG9jYXRpb246IGZ1bmN0aW9uKCkKKyAgICBoYXNGb3JtYXR0ZWRMb2Nh
dGlvbigpCiAgICAgewogICAgICAgICB0aGlzLl9sYXp5SW5pdGlhbGl6YXRpb24oKTsKLSAgICAg
ICAgcmV0dXJuIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlTG9jYXRpb24ucHJvdG90eXBlLmhhc0Zv
cm1hdHRlZExvY2F0aW9uLmNhbGwodGhpcyk7Ci0gICAgfSwKKyAgICAgICAgcmV0dXJuIHN1cGVy
Lmhhc0Zvcm1hdHRlZExvY2F0aW9uKCk7CisgICAgfQogCi0gICAgaGFzRGlmZmVyZW50RGlzcGxh
eUxvY2F0aW9uOiBmdW5jdGlvbigpCisgICAgaGFzRGlmZmVyZW50RGlzcGxheUxvY2F0aW9uKCkK
ICAgICB7CiAgICAgICAgIHRoaXMuX2xhenlJbml0aWFsaXphdGlvbigpOwotICAgICAgICByZXR1
cm4gV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVMb2NhdGlvbi5wcm90b3R5cGUuaGFzRGlmZmVyZW50
RGlzcGxheUxvY2F0aW9uLmNhbGwodGhpcyk7Ci0gICAgfSwKKyAgICAgICAgcmV0dXJuIHN1cGVy
Lmhhc0RpZmZlcmVudERpc3BsYXlMb2NhdGlvbigpOworICAgIH0KIAogICAgIC8vIFByb3RlY3Rl
ZAogCi0gICAgcmVzb2x2ZU1hcHBlZExvY2F0aW9uOiBmdW5jdGlvbigpCisgICAgcmVzb2x2ZU1h
cHBlZExvY2F0aW9uKCkKICAgICB7CiAgICAgICAgIHRoaXMuX2xhenlJbml0aWFsaXphdGlvbigp
OwotICAgICAgICBXZWJJbnNwZWN0b3IuU291cmNlQ29kZUxvY2F0aW9uLnByb3RvdHlwZS5yZXNv
bHZlTWFwcGVkTG9jYXRpb24uY2FsbCh0aGlzKTsKLSAgICB9LAorICAgICAgICBzdXBlci5yZXNv
bHZlTWFwcGVkTG9jYXRpb24oKTsKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKLSAgICBfbGF6
eUluaXRpYWxpemF0aW9uOiBmdW5jdGlvbigpCisgICAgX2xhenlJbml0aWFsaXphdGlvbigpCiAg
ICAgewogICAgICAgICBpZiAoIXRoaXMuX2luaXRpYWxpemVkKSB7CiAgICAgICAgICAgICB0aGlz
Ll9pbml0aWFsaXplZCA9IHRydWU7CkBAIC0xMTEsNSArMTEwLDMgQEAgV2ViSW5zcGVjdG9yLkxh
enlTb3VyY2VDb2RlTG9jYXRpb24ucHJvdG90eXBlID0gewogICAgICAgICB9CiAgICAgfQogfTsK
LQotV2ViSW5zcGVjdG9yLkxhenlTb3VyY2VDb2RlTG9jYXRpb24ucHJvdG90eXBlLl9fcHJvdG9f
XyA9IFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlTG9jYXRpb24ucHJvdG90eXBlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0xpbmVXaWRnZXQu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvTGluZVdpZGdl
dC5qcwppbmRleCA4YWZkZDQwLi4wNmZmYTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvTGluZVdpZGdldC5qcworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvTGluZVdpZGdldC5qcwpAQCAtMjMsMzYg
KzIzLDM0IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2Vi
SW5zcGVjdG9yLkxpbmVXaWRnZXQgPSBmdW5jdGlvbihjb2RlTWlycm9yTGluZVdpZGdldCwgd2lk
Z2V0RWxlbWVudCkKK1dlYkluc3BlY3Rvci5MaW5lV2lkZ2V0ID0gY2xhc3MgTGluZVdpZGdldCBl
eHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIHsKLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNh
bGwodGhpcyk7CisgICAgY29uc3RydWN0b3IoY29kZU1pcnJvckxpbmVXaWRnZXQsIHdpZGdldEVs
ZW1lbnQpCisgICAgeworICAgICAgICBzdXBlcigpOwogCi0gICAgY29uc29sZS5hc3NlcnQod2lk
Z2V0RWxlbWVudCBpbnN0YW5jZW9mIEVsZW1lbnQpOworICAgICAgICBjb25zb2xlLmFzc2VydCh3
aWRnZXRFbGVtZW50IGluc3RhbmNlb2YgRWxlbWVudCk7CiAKLSAgICB0aGlzLl9jb2RlTWlycm9y
TGluZVdpZGdldCA9IGNvZGVNaXJyb3JMaW5lV2lkZ2V0OwotICAgIHRoaXMuX3dpZGdldEVsZW1l
bnQgPSB3aWRnZXRFbGVtZW50OwotfTsKLQotV2ViSW5zcGVjdG9yLkxpbmVXaWRnZXQucHJvdG90
eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuTGluZVdpZGdldCwKLSAgICBf
X3Byb3RvX186IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlLAorICAgICAgICB0aGlzLl9j
b2RlTWlycm9yTGluZVdpZGdldCA9IGNvZGVNaXJyb3JMaW5lV2lkZ2V0OworICAgICAgICB0aGlz
Ll93aWRnZXRFbGVtZW50ID0gd2lkZ2V0RWxlbWVudDsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMK
IAogICAgIGdldCBjb2RlTWlycm9yTGluZVdpZGdldCgpCiAgICAgewogICAgICAgICByZXR1cm4g
dGhpcy5fY29kZU1pcnJvckxpbmVXaWRnZXQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgd2lk
Z2V0RWxlbWVudCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fd2lkZ2V0RWxlbWVudDsK
LSAgICB9LAorICAgIH0KIAogICAgIGNsZWFyKCkKICAgICB7CiAgICAgICAgIHRoaXMuX2NvZGVN
aXJyb3JMaW5lV2lkZ2V0LmNsZWFyKCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICB1cGRhdGUoKQog
ICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01v
ZGVscy9Mb2dPYmplY3QuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9N
b2RlbHMvTG9nT2JqZWN0LmpzCmluZGV4IDM1NTE2OTYuLmI5NTUxMjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Mb2dPYmplY3QuanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0xvZ09iamVjdC5q
cwpAQCAtMjMsMTUgKzIzLDE0IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAgKi8KIAotV2ViSW5zcGVjdG9yLkxvZ09iamVjdCA9IGZ1bmN0aW9uKCkKK1dlYkluc3BlY3Rv
ci5Mb2dPYmplY3QgPSBjbGFzcyBMb2dPYmplY3QgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0
CiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIGNvbnN0cnVjdG9y
KCkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CiAKLSAgICB0aGlzLl9zdGFydERhdGUgPSBuZXcg
RGF0ZSgpOwotfTsKLQotV2ViSW5zcGVjdG9yLkxvZ09iamVjdC5wcm90b3R5cGUgPSB7Ci0gICAg
Y29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5Mb2dPYmplY3QsCisgICAgICAgIHRoaXMuX3N0YXJ0
RGF0ZSA9IG5ldyBEYXRlOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCkBAIC00MCw1ICszOSwz
IEBAIFdlYkluc3BlY3Rvci5Mb2dPYmplY3QucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4g
dGhpcy5fc3RhcnREYXRlOwogICAgIH0KIH07Ci0KLVdlYkluc3BlY3Rvci5Mb2dPYmplY3QucHJv
dG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL05ldHdvcmtU
aW1lbGluZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9O
ZXR3b3JrVGltZWxpbmUuanMKaW5kZXggNzVkNGQ5Zi4uZDMwNjliNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL05ldHdvcmtUaW1lbGluZS5q
cworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvTmV0d29y
a1RpbWVsaW5lLmpzCkBAIC0yMywzMiArMjMsMzEgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuTmV0d29ya1RpbWVsaW5lID0gZnVuY3Rp
b24odHlwZSkKK1dlYkluc3BlY3Rvci5OZXR3b3JrVGltZWxpbmUgPSBjbGFzcyBOZXR3b3JrVGlt
ZWxpbmUgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuVGltZWxpbmUKIHsKLSAgICBXZWJJbnNwZWN0b3Iu
VGltZWxpbmUuY2FsbCh0aGlzLCB0eXBlKTsKLX07Ci0KLVdlYkluc3BlY3Rvci5OZXR3b3JrVGlt
ZWxpbmUucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuTmV0d29y
a1RpbWVsaW5lLAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLlRpbWVsaW5lLnByb3RvdHlw
ZSwKKyAgICBjb25zdHJ1Y3Rvcih0eXBlKQorICAgIHsKKyAgICAgICAgLy8gRklYTUU6IFJlbW92
ZSBvbmNlIDxodHRwczovL3dlYmtpdC5vcmcvYi8xNDI4NjI+IGlzIGZpeGVkLgorICAgICAgICBz
dXBlcih0eXBlKTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAotICAgIHJlY29yZEZvclJlc291
cmNlOiBmdW5jdGlvbihyZXNvdXJjZSkKKyAgICByZWNvcmRGb3JSZXNvdXJjZShyZXNvdXJjZSkK
ICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJlc291cmNlIGluc3RhbmNlb2YgV2ViSW5z
cGVjdG9yLlJlc291cmNlKTsKIAogICAgICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2VSZWNvcmRN
YXAuZ2V0KHJlc291cmNlKSB8fCBudWxsOwotICAgIH0sCisgICAgfQogCi0gICAgcmVzZXQ6IGZ1
bmN0aW9uKHN1cHByZXNzRXZlbnRzKQorICAgIHJlc2V0KHN1cHByZXNzRXZlbnRzKQogICAgIHsK
ICAgICAgICAgdGhpcy5fcmVzb3VyY2VSZWNvcmRNYXAgPSBuZXcgTWFwOwogCi0gICAgICAgIFdl
Ykluc3BlY3Rvci5UaW1lbGluZS5wcm90b3R5cGUucmVzZXQuY2FsbCh0aGlzLCBzdXBwcmVzc0V2
ZW50cyk7Ci0gICAgfSwKKyAgICAgICAgc3VwZXIucmVzZXQoc3VwcHJlc3NFdmVudHMpOworICAg
IH0KIAotICAgIGFkZFJlY29yZDogZnVuY3Rpb24ocmVjb3JkKQorICAgIGFkZFJlY29yZChyZWNv
cmQpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChyZWNvcmQgaW5zdGFuY2VvZiBXZWJJ
bnNwZWN0b3IuUmVzb3VyY2VUaW1lbGluZVJlY29yZCk7CiAKQEAgLTU4LDYgKzU3LDYgQEAgV2Vi
SW5zcGVjdG9yLk5ldHdvcmtUaW1lbGluZS5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdGhpcy5f
cmVzb3VyY2VSZWNvcmRNYXAuc2V0KHJlY29yZC5yZXNvdXJjZSwgcmVjb3JkKTsKIAotICAgICAg
ICBXZWJJbnNwZWN0b3IuVGltZWxpbmUucHJvdG90eXBlLmFkZFJlY29yZC5jYWxsKHRoaXMsIHJl
Y29yZCk7CisgICAgICAgIHN1cGVyLmFkZFJlY29yZChyZWNvcmQpOwogICAgIH0KIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvT2JqZWN0
UHJldmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9P
YmplY3RQcmV2aWV3LmpzCmluZGV4IDJiMzZlNWQuLjhiZDg1YTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9PYmplY3RQcmV2aWV3LmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9PYmplY3RQcmV2
aWV3LmpzCkBAIC0yMyw5MiArMjMsOTIgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuT2JqZWN0UHJldmlldyA9IGZ1bmN0aW9uKHR5cGUs
IHN1YnR5cGUsIGRlc2NyaXB0aW9uLCBsb3NzbGVzcywgb3ZlcmZsb3csIHByb3BlcnRpZXMsIGVu
dHJpZXMsIHNpemUpCitXZWJJbnNwZWN0b3IuT2JqZWN0UHJldmlldyA9IGNsYXNzIE9iamVjdFBy
ZXZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9i
amVjdC5jYWxsKHRoaXMpOworICAgIGNvbnN0cnVjdG9yKHR5cGUsIHN1YnR5cGUsIGRlc2NyaXB0
aW9uLCBsb3NzbGVzcywgb3ZlcmZsb3csIHByb3BlcnRpZXMsIGVudHJpZXMsIHNpemUpCisgICAg
eworICAgICAgICBzdXBlcigpOwogCi0gICAgY29uc29sZS5hc3NlcnQodHlwZSk7Ci0gICAgY29u
c29sZS5hc3NlcnQodHlwZW9mIGxvc3NsZXNzID09PSAiYm9vbGVhbiIpOwotICAgIGNvbnNvbGUu
YXNzZXJ0KCFwcm9wZXJ0aWVzIHx8ICFwcm9wZXJ0aWVzLmxlbmd0aCB8fCBwcm9wZXJ0aWVzWzBd
IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlByb3BlcnR5UHJldmlldyk7Ci0gICAgY29uc29sZS5h
c3NlcnQoIWVudHJpZXMgfHwgIWVudHJpZXMubGVuZ3RoIHx8IGVudHJpZXNbMF0gaW5zdGFuY2Vv
ZiBXZWJJbnNwZWN0b3IuQ29sbGVjdGlvbkVudHJ5UHJldmlldyk7CisgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KHR5cGUpOworICAgICAgICBjb25zb2xlLmFzc2VydCh0eXBlb2YgbG9zc2xlc3MgPT09
ICJib29sZWFuIik7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFwcm9wZXJ0aWVzIHx8ICFwcm9w
ZXJ0aWVzLmxlbmd0aCB8fCBwcm9wZXJ0aWVzWzBdIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlBy
b3BlcnR5UHJldmlldyk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFlbnRyaWVzIHx8ICFlbnRy
aWVzLmxlbmd0aCB8fCBlbnRyaWVzWzBdIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkNvbGxlY3Rp
b25FbnRyeVByZXZpZXcpOwogCi0gICAgdGhpcy5fdHlwZSA9IHR5cGU7Ci0gICAgdGhpcy5fc3Vi
dHlwZSA9IHN1YnR5cGU7Ci0gICAgdGhpcy5fZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbiB8fCAi
IjsKLSAgICB0aGlzLl9sb3NzbGVzcyA9IGxvc3NsZXNzOwotICAgIHRoaXMuX292ZXJmbG93ID0g
b3ZlcmZsb3cgfHwgZmFsc2U7Ci0gICAgdGhpcy5fc2l6ZSA9IHNpemU7CisgICAgICAgIHRoaXMu
X3R5cGUgPSB0eXBlOworICAgICAgICB0aGlzLl9zdWJ0eXBlID0gc3VidHlwZTsKKyAgICAgICAg
dGhpcy5fZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbiB8fCAiIjsKKyAgICAgICAgdGhpcy5fbG9z
c2xlc3MgPSBsb3NzbGVzczsKKyAgICAgICAgdGhpcy5fb3ZlcmZsb3cgPSBvdmVyZmxvdyB8fCBm
YWxzZTsKKyAgICAgICAgdGhpcy5fc2l6ZSA9IHNpemU7CiAKLSAgICB0aGlzLl9wcm9wZXJ0aWVz
ID0gcHJvcGVydGllcyB8fCBudWxsOwotICAgIHRoaXMuX2VudHJpZXMgPSBlbnRyaWVzIHx8IG51
bGw7Ci19OworICAgICAgICB0aGlzLl9wcm9wZXJ0aWVzID0gcHJvcGVydGllcyB8fCBudWxsOwor
ICAgICAgICB0aGlzLl9lbnRyaWVzID0gZW50cmllcyB8fCBudWxsOworICAgIH0KIAotLy8gUnVu
dGltZS5PYmplY3RQcmV2aWV3LgotV2ViSW5zcGVjdG9yLk9iamVjdFByZXZpZXcuZnJvbVBheWxv
YWQgPSBmdW5jdGlvbihwYXlsb2FkKQotewotICAgIGlmIChwYXlsb2FkLnByb3BlcnRpZXMpCi0g
ICAgICAgIHBheWxvYWQucHJvcGVydGllcyA9IHBheWxvYWQucHJvcGVydGllcy5tYXAoZnVuY3Rp
b24ocHJvcGVydHkpIHsgcmV0dXJuIFdlYkluc3BlY3Rvci5Qcm9wZXJ0eVByZXZpZXcuZnJvbVBh
eWxvYWQocHJvcGVydHkpOyB9KTsKLSAgICBpZiAocGF5bG9hZC5lbnRyaWVzKQotICAgICAgICBw
YXlsb2FkLmVudHJpZXMgPSBwYXlsb2FkLmVudHJpZXMubWFwKGZ1bmN0aW9uKGVudHJ5KSB7IHJl
dHVybiBXZWJJbnNwZWN0b3IuQ29sbGVjdGlvbkVudHJ5UHJldmlldy5mcm9tUGF5bG9hZChlbnRy
eSk7IH0pOworICAgIC8vIFN0YXRpYworCisgICAgLy8gUnVudGltZS5PYmplY3RQcmV2aWV3Lgor
ICAgIHN0YXRpYyBmcm9tUGF5bG9hZChwYXlsb2FkKQorICAgIHsKKyAgICAgICAgaWYgKHBheWxv
YWQucHJvcGVydGllcykKKyAgICAgICAgICAgIHBheWxvYWQucHJvcGVydGllcyA9IHBheWxvYWQu
cHJvcGVydGllcy5tYXAoZnVuY3Rpb24ocHJvcGVydHkpIHsgcmV0dXJuIFdlYkluc3BlY3Rvci5Q
cm9wZXJ0eVByZXZpZXcuZnJvbVBheWxvYWQocHJvcGVydHkpOyB9KTsKKyAgICAgICAgaWYgKHBh
eWxvYWQuZW50cmllcykKKyAgICAgICAgICAgIHBheWxvYWQuZW50cmllcyA9IHBheWxvYWQuZW50
cmllcy5tYXAoZnVuY3Rpb24oZW50cnkpIHsgcmV0dXJuIFdlYkluc3BlY3Rvci5Db2xsZWN0aW9u
RW50cnlQcmV2aWV3LmZyb21QYXlsb2FkKGVudHJ5KTsgfSk7CiAKLSAgICBpZiAocGF5bG9hZC5z
dWJ0eXBlID09PSAiYXJyYXkiKSB7Ci0gICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyA4KTog
UnVudGltZS5PYmplY3RQcmV2aWV3IGRpZCBub3QgaGF2ZSBzaXplIHByb3BlcnR5LAotICAgICAg
ICAvLyBpbnN0ZWFkIGl0IHdhcyB0YWNrZWQgb250byB0aGUgZW5kIG9mIHRoZSBkZXNjcmlwdGlv
biwgbGlrZSAiQXJyYXlbI10iLgotICAgICAgICB2YXIgbWF0Y2ggPSBwYXlsb2FkLmRlc2NyaXB0
aW9uLm1hdGNoKC9cWyhcZCspXF0kLyk7Ci0gICAgICAgIGlmIChtYXRjaCkgewotICAgICAgICAg
ICAgcGF5bG9hZC5zaXplID0gcGFyc2VJbnQobWF0Y2hbMV0pOwotICAgICAgICAgICAgcGF5bG9h
ZC5kZXNjcmlwdGlvbiA9IHBheWxvYWQuZGVzY3JpcHRpb24ucmVwbGFjZSgvXFtcZCtcXSQvLCAi
Iik7CisgICAgICAgIGlmIChwYXlsb2FkLnN1YnR5cGUgPT09ICJhcnJheSIpIHsKKyAgICAgICAg
ICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyA4KTogUnVudGltZS5PYmplY3RQcmV2aWV3IGRpZCBu
b3QgaGF2ZSBzaXplIHByb3BlcnR5LAorICAgICAgICAgICAgLy8gaW5zdGVhZCBpdCB3YXMgdGFj
a2VkIG9udG8gdGhlIGVuZCBvZiB0aGUgZGVzY3JpcHRpb24sIGxpa2UgIkFycmF5WyNdIi4KKyAg
ICAgICAgICAgIHZhciBtYXRjaCA9IHBheWxvYWQuZGVzY3JpcHRpb24ubWF0Y2goL1xbKFxkKylc
XSQvKTsKKyAgICAgICAgICAgIGlmIChtYXRjaCkgeworICAgICAgICAgICAgICAgIHBheWxvYWQu
c2l6ZSA9IHBhcnNlSW50KG1hdGNoWzFdKTsKKyAgICAgICAgICAgICAgICBwYXlsb2FkLmRlc2Ny
aXB0aW9uID0gcGF5bG9hZC5kZXNjcmlwdGlvbi5yZXBsYWNlKC9cW1xkK1xdJC8sICIiKTsKKyAg
ICAgICAgICAgIH0KICAgICAgICAgfQorCisgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9y
Lk9iamVjdFByZXZpZXcocGF5bG9hZC50eXBlLCBwYXlsb2FkLnN1YnR5cGUsIHBheWxvYWQuZGVz
Y3JpcHRpb24sIHBheWxvYWQubG9zc2xlc3MsIHBheWxvYWQub3ZlcmZsb3csIHBheWxvYWQucHJv
cGVydGllcywgcGF5bG9hZC5lbnRyaWVzLCBwYXlsb2FkLnNpemUpOwogICAgIH0KIAotICAgIHJl
dHVybiBuZXcgV2ViSW5zcGVjdG9yLk9iamVjdFByZXZpZXcocGF5bG9hZC50eXBlLCBwYXlsb2Fk
LnN1YnR5cGUsIHBheWxvYWQuZGVzY3JpcHRpb24sIHBheWxvYWQubG9zc2xlc3MsIHBheWxvYWQu
b3ZlcmZsb3csIHBheWxvYWQucHJvcGVydGllcywgcGF5bG9hZC5lbnRyaWVzLCBwYXlsb2FkLnNp
emUpOwotfTsKLQotV2ViSW5zcGVjdG9yLk9iamVjdFByZXZpZXcucHJvdG90eXBlID0gewotICAg
IGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuT2JqZWN0UHJldmlldywKLSAgICBfX3Byb3RvX186
IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlLAotCiAgICAgLy8gUHVibGljCiAKICAgICBn
ZXQgdHlwZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fdHlwZTsKLSAgICB9LAorICAg
IH0KIAogICAgIGdldCBzdWJ0eXBlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zdWJ0
eXBlOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGRlc2NyaXB0aW9uKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiB0aGlzLl9kZXNjcmlwdGlvbjsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBs
b3NzbGVzcygpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fbG9zc2xlc3M7Ci0gICAgfSwK
KyAgICB9CiAKICAgICBnZXQgb3ZlcmZsb3coKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMu
X292ZXJmbG93OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHByb3BlcnR5UHJldmlld3MoKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3Byb3BlcnRpZXM7Ci0gICAgfSwKKyAgICB9CiAK
ICAgICBnZXQgY29sbGVjdGlvbkVudHJ5UHJldmlld3MoKQogICAgIHsKICAgICAgICAgcmV0dXJu
IHRoaXMuX2VudHJpZXM7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc2l6ZSgpCiAgICAgewog
ICAgICAgICByZXR1cm4gdGhpcy5fc2l6ZTsKLSAgICB9LAorICAgIH0KIAogICAgIGhhc1NpemUo
KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L01vZGVscy9Qcm9iZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01v
ZGVscy9Qcm9iZS5qcwppbmRleCBiNzhiNjBhLi40NWJkNWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUHJvYmUuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Byb2JlLmpzCkBAIC0yNCw1NSAr
MjQsNTAgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlByb2JlU2FtcGxl
ID0gZnVuY3Rpb24oc2FtcGxlSWQsIGJhdGNoSWQsIGVsYXBzZWRUaW1lLCBwYXlsb2FkKQorV2Vi
SW5zcGVjdG9yLlByb2JlU2FtcGxlID0gY2xhc3MgUHJvYmVTYW1wbGUgZXh0ZW5kcyBXZWJJbnNw
ZWN0b3IuT2JqZWN0CiB7Ci0gICAgdGhpcy5zYW1wbGVJZCA9IHNhbXBsZUlkOwotICAgIHRoaXMu
YmF0Y2hJZCA9IGJhdGNoSWQ7Ci0gICAgdGhpcy50aW1lc3RhbXAgPSBlbGFwc2VkVGltZTsKLSAg
ICB0aGlzLm9iamVjdCA9IFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QuZnJvbVBheWxvYWQocGF5
bG9hZCk7Ci19OwotCi1XZWJJbnNwZWN0b3IuUHJvYmUgPSBmdW5jdGlvbihpZCwgYnJlYWtwb2lu
dCwgZXhwcmVzc2lvbikKLXsKLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7Cisg
ICAgY29uc3RydWN0b3Ioc2FtcGxlSWQsIGJhdGNoSWQsIGVsYXBzZWRUaW1lLCBwYXlsb2FkKQor
ICAgIHsKKyAgICAgICAgc3VwZXIoKTsKIAotICAgIGNvbnNvbGUuYXNzZXJ0KGlkKTsKLSAgICBj
b25zb2xlLmFzc2VydChicmVha3BvaW50IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkJyZWFrcG9p
bnQpOwotCi0gICAgdGhpcy5faWQgPSBpZDsKLSAgICB0aGlzLl9icmVha3BvaW50ID0gYnJlYWtw
b2ludDsKLSAgICB0aGlzLl9leHByZXNzaW9uID0gZXhwcmVzc2lvbjsKLSAgICB0aGlzLl9zYW1w
bGVzID0gW107CisgICAgICAgIHRoaXMuc2FtcGxlSWQgPSBzYW1wbGVJZDsKKyAgICAgICAgdGhp
cy5iYXRjaElkID0gYmF0Y2hJZDsKKyAgICAgICAgdGhpcy50aW1lc3RhbXAgPSBlbGFwc2VkVGlt
ZTsKKyAgICAgICAgdGhpcy5vYmplY3QgPSBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LmZyb21Q
YXlsb2FkKHBheWxvYWQpOworICAgIH0KIH07CiAKLVdlYkluc3BlY3Rvci5PYmplY3QuYWRkQ29u
c3RydWN0b3JGdW5jdGlvbnMoV2ViSW5zcGVjdG9yLlByb2JlKTsKK1dlYkluc3BlY3Rvci5Qcm9i
ZSA9IGNsYXNzIFByb2JlIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAoreworICAgIGNvbnN0
cnVjdG9yKGlkLCBicmVha3BvaW50LCBleHByZXNzaW9uKQorICAgIHsKKyAgICAgICAgc3VwZXIo
KTsKIAotV2ViSW5zcGVjdG9yLlByb2JlLkV2ZW50ID0gewotICAgIEV4cHJlc3Npb25DaGFuZ2Vk
OiAicHJvYmUtb2JqZWN0LWV4cHJlc3Npb24tY2hhbmdlZCIsCi0gICAgU2FtcGxlQWRkZWQ6ICJw
cm9iZS1vYmplY3Qtc2FtcGxlLWFkZGVkIiwKLSAgICBTYW1wbGVzQ2xlYXJlZDogInByb2JlLW9i
amVjdC1zYW1wbGVzLWNsZWFyZWQiCi19OworICAgICAgICBjb25zb2xlLmFzc2VydChpZCk7Cisg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3Iu
QnJlYWtwb2ludCk7CiAKLVdlYkluc3BlY3Rvci5Qcm9iZS5wcm90b3R5cGUgPSB7Ci0gICAgY29u
c3RydWN0b3I6IFdlYkluc3BlY3Rvci5Qcm9iZSwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rv
ci5PYmplY3QucHJvdG90eXBlLAorICAgICAgICB0aGlzLl9pZCA9IGlkOworICAgICAgICB0aGlz
Ll9icmVha3BvaW50ID0gYnJlYWtwb2ludDsKKyAgICAgICAgdGhpcy5fZXhwcmVzc2lvbiA9IGV4
cHJlc3Npb247CisgICAgICAgIHRoaXMuX3NhbXBsZXMgPSBbXTsKKyAgICB9CiAKICAgICAvLyBQ
dWJsaWMKIAogICAgIGdldCBpZCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5faWQ7Ci0g
ICAgfSwKKyAgICB9CiAKICAgICBnZXQgYnJlYWtwb2ludCgpCiAgICAgewogICAgICAgICByZXR1
cm4gdGhpcy5fYnJlYWtwb2ludDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBleHByZXNzaW9u
KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9leHByZXNzaW9uOwotICAgIH0sCisgICAg
fQogCiAgICAgc2V0IGV4cHJlc3Npb24odmFsdWUpCiAgICAgewpAQCAtODMsMjMgKzc4LDI5IEBA
IFdlYkluc3BlY3Rvci5Qcm9iZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2V4cHJlc3Np
b24gPSB2YWx1ZTsKICAgICAgICAgdGhpcy5jbGVhclNhbXBsZXMoKTsKICAgICAgICAgdGhpcy5k
aXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlByb2JlLkV2ZW50LkV4cHJlc3Np
b25DaGFuZ2VkLCBkYXRhKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzYW1wbGVzKCkKICAg
ICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zYW1wbGVzLnNsaWNlKCk7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBjbGVhclNhbXBsZXM6IGZ1bmN0aW9uKCkKKyAgICBjbGVhclNhbXBsZXMoKQogICAg
IHsKICAgICAgICAgdGhpcy5fc2FtcGxlcyA9IFtdOwogICAgICAgICB0aGlzLmRpc3BhdGNoRXZl
bnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuUHJvYmUuRXZlbnQuU2FtcGxlc0NsZWFyZWQpOwot
ICAgIH0sCisgICAgfQogCi0gICAgYWRkU2FtcGxlOiBmdW5jdGlvbihzYW1wbGUpCisgICAgYWRk
U2FtcGxlKHNhbXBsZSkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHNhbXBsZSBpbnN0
YW5jZW9mIFdlYkluc3BlY3Rvci5Qcm9iZVNhbXBsZSwgIldyb25nIG9iamVjdCB0eXBlIHBhc3Nl
ZCBhcyBwcm9iZSBzYW1wbGU6ICIsIHNhbXBsZSk7CiAgICAgICAgIHRoaXMuX3NhbXBsZXMucHVz
aChzYW1wbGUpOwogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNw
ZWN0b3IuUHJvYmUuRXZlbnQuU2FtcGxlQWRkZWQsIHNhbXBsZSk7CiAgICAgfQogfTsKKworV2Vi
SW5zcGVjdG9yLlByb2JlLkV2ZW50ID0geworICAgIEV4cHJlc3Npb25DaGFuZ2VkOiAicHJvYmUt
b2JqZWN0LWV4cHJlc3Npb24tY2hhbmdlZCIsCisgICAgU2FtcGxlQWRkZWQ6ICJwcm9iZS1vYmpl
Y3Qtc2FtcGxlLWFkZGVkIiwKKyAgICBTYW1wbGVzQ2xlYXJlZDogInByb2JlLW9iamVjdC1zYW1w
bGVzLWNsZWFyZWQiCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvTW9kZWxzL1Byb2JlU2V0LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvTW9kZWxzL1Byb2JlU2V0LmpzCmluZGV4IDFmMDIwZjEuLmJiZDBhYWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Qcm9iZVNl
dC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUHJv
YmVTZXQuanMKQEAgLTI2LDYwICsyNiw0OCBAQAogCiAvLyBBIFByb2JlU2V0IGNsdXN0ZXJzIFBy
b2JlcyBmcm9tIHRoZSBzYW1lIEJyZWFrcG9pbnQgYW5kIHRoZWlyIHNhbXBsZXMuCiAKLVdlYklu
c3BlY3Rvci5Qcm9iZVNldCA9IGZ1bmN0aW9uKGJyZWFrcG9pbnQpCitXZWJJbnNwZWN0b3IuUHJv
YmVTZXQgPSBjbGFzcyBQcm9iZVNldCBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIHsKLSAg
ICBjb25zb2xlLmFzc2VydChicmVha3BvaW50IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkJyZWFr
cG9pbnQsICJVbmtub3duIGJyZWFrcG9pbnQgYXJndW1lbnQ6ICIsIGJyZWFrcG9pbnQpOworICAg
IGNvbnN0cnVjdG9yKGJyZWFrcG9pbnQpCisgICAgeworICAgICAgICBzdXBlcigpOwogCi0gICAg
V2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwotICAgIHRoaXMuX2JyZWFrcG9pbnQgPSBi
cmVha3BvaW50OwotICAgIHRoaXMuX3Byb2JlcyA9IFtdOwotICAgIHRoaXMuX3Byb2Jlc0J5SWRl
bnRpZmllciA9IG5ldyBNYXA7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQgaW5z
dGFuY2VvZiBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludCwgIlVua25vd24gYnJlYWtwb2ludCBhcmd1
bWVudDogIiwgYnJlYWtwb2ludCk7CiAKLSAgICB0aGlzLl9jcmVhdGVEYXRhVGFibGUoKTsKKyAg
ICAgICAgdGhpcy5fYnJlYWtwb2ludCA9IGJyZWFrcG9pbnQ7CisgICAgICAgIHRoaXMuX3Byb2Jl
cyA9IFtdOworICAgICAgICB0aGlzLl9wcm9iZXNCeUlkZW50aWZpZXIgPSBuZXcgTWFwOwogCi0g
ICAgV2ViSW5zcGVjdG9yLkZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkZyYW1l
LkV2ZW50Lk1haW5SZXNvdXJjZURpZENoYW5nZSwgdGhpcy5fbWFpblJlc291cmNlQ2hhbmdlZCwg
dGhpcyk7Ci0gICAgV2ViSW5zcGVjdG9yLlByb2JlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVj
dG9yLlByb2JlLkV2ZW50LlNhbXBsZUFkZGVkLCB0aGlzLl9zYW1wbGVDb2xsZWN0ZWQsIHRoaXMp
OwotICAgIFdlYkluc3BlY3Rvci5CcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVj
dG9yLkJyZWFrcG9pbnQuRXZlbnQuUmVzb2x2ZWRTdGF0ZURpZENoYW5nZSwgdGhpcy5fYnJlYWtw
b2ludFJlc29sdmVkU3RhdGVEaWRDaGFuZ2UsIHRoaXMpOwotfQorICAgICAgICB0aGlzLl9jcmVh
dGVEYXRhVGFibGUoKTsKIAotV2ViSW5zcGVjdG9yLk9iamVjdC5hZGRDb25zdHJ1Y3RvckZ1bmN0
aW9ucyhXZWJJbnNwZWN0b3IuUHJvYmVTZXQpOwotCi1XZWJJbnNwZWN0b3IuUHJvYmVTZXQuRXZl
bnQgPSB7Ci0gICAgUHJvYmVBZGRlZDogInByb2JlLXNldC1wcm9iZS1hZGRlZCIsCi0gICAgUHJv
YmVSZW1vdmVkOiAicHJvYmUtc2V0LXByb2JlLXJlbW92ZWQiLAotICAgIFJlc29sdmVkU3RhdGVE
aWRDaGFuZ2U6ICJwcm9iZS1zZXQtcmVzb2x2ZWQtc3RhdGUtZGlkLWNoYW5nZSIsCi0gICAgU2Ft
cGxlc0NsZWFyZWQ6ICJwcm9iZS1zZXQtc2FtcGxlcy1jbGVhcmVkIiwKLX07Ci0KLVdlYkluc3Bl
Y3Rvci5Qcm9iZVNldC5TYW1wbGVPYmplY3RUaXRsZSA9ICJPYmplY3QiOwotCi1XZWJJbnNwZWN0
b3IuUHJvYmVTZXQucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3Iu
UHJvYmVTZXQsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZSwK
KyAgICAgICAgV2ViSW5zcGVjdG9yLkZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9y
LkZyYW1lLkV2ZW50Lk1haW5SZXNvdXJjZURpZENoYW5nZSwgdGhpcy5fbWFpblJlc291cmNlQ2hh
bmdlZCwgdGhpcyk7CisgICAgICAgIFdlYkluc3BlY3Rvci5Qcm9iZS5hZGRFdmVudExpc3RlbmVy
KFdlYkluc3BlY3Rvci5Qcm9iZS5FdmVudC5TYW1wbGVBZGRlZCwgdGhpcy5fc2FtcGxlQ29sbGVj
dGVkLCB0aGlzKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0
ZW5lcihXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5FdmVudC5SZXNvbHZlZFN0YXRlRGlkQ2hhbmdl
LCB0aGlzLl9icmVha3BvaW50UmVzb2x2ZWRTdGF0ZURpZENoYW5nZSwgdGhpcyk7CisgICAgfQog
CiAgICAgLy8gUHVibGljCiAKLSAgIGdldCBicmVha3BvaW50KCkKLSAgIHsKLSAgICAgICAgcmV0
dXJuIHRoaXMuX2JyZWFrcG9pbnQ7Ci0gICB9LAorICAgIGdldCBicmVha3BvaW50KCkKKyAgICB7
CisgICAgICAgICByZXR1cm4gdGhpcy5fYnJlYWtwb2ludDsKKyAgICB9CiAKICAgICBnZXQgcHJv
YmVzKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9wcm9iZXMuc2xpY2UoKTsKLSAgICB9
LAorICAgIH0KIAogICAgIGdldCBkYXRhVGFibGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRo
aXMuX2RhdGFUYWJsZTsKLSAgICB9LAorICAgIH0KIAotICAgIGNsZWFyOiBmdW5jdGlvbigpCisg
ICAgY2xlYXIoKQogICAgIHsKICAgICAgICAgdGhpcy5fYnJlYWtwb2ludC5jbGVhckFjdGlvbnMo
V2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRBY3Rpb24uVHlwZS5Qcm9iZSk7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBjbGVhclNhbXBsZXM6IGZ1bmN0aW9uKCkKKyAgICBjbGVhclNhbXBsZXMoKQogICAg
IHsKICAgICAgICAgZm9yICh2YXIgcHJvYmUgb2YgdGhpcy5fcHJvYmVzKQogICAgICAgICAgICAg
cHJvYmUuY2xlYXJTYW1wbGVzKCk7CkBAIC04NywxNCArNzUsMTQgQEAgV2ViSW5zcGVjdG9yLlBy
b2JlU2V0LnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIG9sZFRhYmxlID0gdGhpcy5fZGF0YVRh
YmxlOwogICAgICAgICB0aGlzLl9jcmVhdGVEYXRhVGFibGUoKTsKICAgICAgICAgdGhpcy5kaXNw
YXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlByb2JlU2V0LkV2ZW50LlNhbXBsZXND
bGVhcmVkLCB7b2xkVGFibGV9KTsKLSAgICB9LAorICAgIH0KIAotICAgIGNyZWF0ZVByb2JlOiBm
dW5jdGlvbihleHByZXNzaW9uKQorICAgIGNyZWF0ZVByb2JlKGV4cHJlc3Npb24pCiAgICAgewog
ICAgICAgICB0aGlzLmJyZWFrcG9pbnQuY3JlYXRlQWN0aW9uKFdlYkluc3BlY3Rvci5CcmVha3Bv
aW50QWN0aW9uLlR5cGUuUHJvYmUsIG51bGwsIGV4cHJlc3Npb24pOwotICAgIH0sCisgICAgfQog
Ci0gICAgYWRkUHJvYmU6IGZ1bmN0aW9uKHByb2JlKQorICAgIGFkZFByb2JlKHByb2JlKQogICAg
IHsKICAgICAgICAgY29uc29sZS5hc3NlcnQocHJvYmUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3Iu
UHJvYmUsICJUcmllZCB0byBhZGQgbm9uLXByb2JlICIsIHByb2JlLCAiIHRvIHByb2JlIGdyb3Vw
IiwgdGhpcyk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHByb2JlLmJyZWFrcG9pbnQgPT09IHRo
aXMuYnJlYWtwb2ludCwgIlByb2JlIGFuZCBQcm9iZVNldCBtdXN0IGhhdmUgc2FtZSBicmVha3Bv
aW50LiIsIHByb2JlLCB0aGlzKTsKQEAgLTEwNCw5ICs5Miw5IEBAIFdlYkluc3BlY3Rvci5Qcm9i
ZVNldC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdGhpcy5kYXRhVGFibGUuYWRkUHJvYmUocHJv
YmUpOwogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3Iu
UHJvYmVTZXQuRXZlbnQuUHJvYmVBZGRlZCwgcHJvYmUpOwotICAgIH0sCisgICAgfQogCi0gICAg
cmVtb3ZlUHJvYmU6IGZ1bmN0aW9uKHByb2JlKQorICAgIHJlbW92ZVByb2JlKHByb2JlKQogICAg
IHsKICAgICAgICAgY29uc29sZS5hc3NlcnQocHJvYmUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3Iu
UHJvYmUsICJUcmllZCB0byByZW1vdmUgbm9uLXByb2JlICIsIHByb2JlLCAiIHRvIHByb2JlIGdy
b3VwIiwgdGhpcyk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3Byb2Jlcy5pbmRleE9m
KHByb2JlKSAhPT0gLTEsICJUcmllZCB0byByZW1vdmUgcHJvYmUiLCBwcm9iZSwgIiBub3QgaW4g
Z3JvdXAgIiwgdGhpcyk7CkBAIC0xMTYsMzMgKzEwNCwzMyBAQCBXZWJJbnNwZWN0b3IuUHJvYmVT
ZXQucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9wcm9iZXNCeUlkZW50aWZpZXIuZGVsZXRl
KHByb2JlLmlkKTsKICAgICAgICAgdGhpcy5kYXRhVGFibGUucmVtb3ZlUHJvYmUocHJvYmUpOwog
ICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuUHJvYmVT
ZXQuRXZlbnQuUHJvYmVSZW1vdmVkLCBwcm9iZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB3aWxs
UmVtb3ZlOiBmdW5jdGlvbigpCisgICAgd2lsbFJlbW92ZSgpCiAgICAgewogICAgICAgICBjb25z
b2xlLmFzc2VydCghdGhpcy5fcHJvYmVzLmxlbmd0aCwgIlByb2JlU2V0LndpbGxSZW1vdmUgY2Fs
bGVkLCBidXQgcHJvYmVzIHN0aWxsIGFzc29jaWF0ZWQgd2l0aCBncm91cDogIiwgdGhpcy5fcHJv
YmVzKTsKIAogICAgICAgICBXZWJJbnNwZWN0b3IuRnJhbWUucmVtb3ZlRXZlbnRMaXN0ZW5lcihX
ZWJJbnNwZWN0b3IuRnJhbWUuRXZlbnQuTWFpblJlc291cmNlRGlkQ2hhbmdlLCB0aGlzLl9tYWlu
UmVzb3VyY2VDaGFuZ2VkLCB0aGlzKTsKICAgICAgICAgV2ViSW5zcGVjdG9yLlByb2JlLnJlbW92
ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlByb2JlLkV2ZW50LlNhbXBsZUFkZGVkLCB0aGlz
Ll9zYW1wbGVDb2xsZWN0ZWQsIHRoaXMpOwogICAgICAgICBXZWJJbnNwZWN0b3IuQnJlYWtwb2lu
dC5yZW1vdmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5CcmVha3BvaW50LkV2ZW50LlJlc29s
dmVkU3RhdGVEaWRDaGFuZ2UsIHRoaXMuX2JyZWFrcG9pbnRSZXNvbHZlZFN0YXRlRGlkQ2hhbmdl
LCB0aGlzKTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAgIF9tYWluUmVz
b3VyY2VDaGFuZ2VkOiBmdW5jdGlvbigpCisgICAgX21haW5SZXNvdXJjZUNoYW5nZWQoKQogICAg
IHsKICAgICAgICAgdGhpcy5kYXRhVGFibGUubWFpblJlc291cmNlQ2hhbmdlZCgpOwotICAgIH0s
CisgICAgfQogCi0gICAgX2NyZWF0ZURhdGFUYWJsZTogZnVuY3Rpb24oKQorICAgIF9jcmVhdGVE
YXRhVGFibGUoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuZGF0YVRhYmxlKQogICAgICAgICAg
ICAgdGhpcy5kYXRhVGFibGUud2lsbFJlbW92ZSgpOwogCiAgICAgICAgIHRoaXMuX2RhdGFUYWJs
ZSA9IG5ldyBXZWJJbnNwZWN0b3IuUHJvYmVTZXREYXRhVGFibGUodGhpcyk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfc2FtcGxlQ29sbGVjdGVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfc2FtcGxl
Q29sbGVjdGVkKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIHNhbXBsZSA9IGV2ZW50LmRhdGE7
CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHNhbXBsZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Q
cm9iZVNhbXBsZSwgIlRyaWVkIHRvIGFkZCBub24tc2FtcGxlIHRvIHByb2JlIGdyb3VwOiAiLCBz
YW1wbGUpOwpAQCAtMTUzLDEwICsxNDEsMTcgQEAgV2ViSW5zcGVjdG9yLlByb2JlU2V0LnByb3Rv
dHlwZSA9IHsKIAogICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLmRhdGFUYWJsZSk7CiAgICAg
ICAgIHRoaXMuZGF0YVRhYmxlLmFkZFNhbXBsZUZvclByb2JlKHByb2JlLCBzYW1wbGUpOwotICAg
IH0sCisgICAgfQogCi0gICAgX2JyZWFrcG9pbnRSZXNvbHZlZFN0YXRlRGlkQ2hhbmdlOiBmdW5j
dGlvbihldmVudCkKKyAgICBfYnJlYWtwb2ludFJlc29sdmVkU3RhdGVEaWRDaGFuZ2UoZXZlbnQp
CiAgICAgewogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0
b3IuUHJvYmVTZXQuRXZlbnQuUmVzb2x2ZWRTdGF0ZURpZENoYW5nZSk7CiAgICAgfQogfTsKKwor
V2ViSW5zcGVjdG9yLlByb2JlU2V0LkV2ZW50ID0geworICAgIFByb2JlQWRkZWQ6ICJwcm9iZS1z
ZXQtcHJvYmUtYWRkZWQiLAorICAgIFByb2JlUmVtb3ZlZDogInByb2JlLXNldC1wcm9iZS1yZW1v
dmVkIiwKKyAgICBSZXNvbHZlZFN0YXRlRGlkQ2hhbmdlOiAicHJvYmUtc2V0LXJlc29sdmVkLXN0
YXRlLWRpZC1jaGFuZ2UiLAorICAgIFNhbXBsZXNDbGVhcmVkOiAicHJvYmUtc2V0LXNhbXBsZXMt
Y2xlYXJlZCIsCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvTW9kZWxzL1Byb2JlU2V0RGF0YUZyYW1lLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Byb2JlU2V0RGF0YUZyYW1lLmpzCmluZGV4IDllMTE2ZDIu
LjM1YzEzZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L01vZGVscy9Qcm9iZVNldERhdGFGcmFtZS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Nb2RlbHMvUHJvYmVTZXREYXRhRnJhbWUuanMKQEAgLTI0LDc0ICsyNCw3
OCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuUHJvYmVTZXREYXRhRnJh
bWUgPSBmdW5jdGlvbihpbmRleCkKK1dlYkluc3BlY3Rvci5Qcm9iZVNldERhdGFGcmFtZSA9IGNs
YXNzIFByb2JlU2V0RGF0YUZyYW1lIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogewotICAg
IHRoaXMuX2NvdW50ID0gMDsKLSAgICB0aGlzLl9pbmRleCA9IGluZGV4OwotICAgIHRoaXMuX3Nl
cGFyYXRvciA9IGZhbHNlOwotfTsKKyAgICBjb25zdHJ1Y3RvcihpbmRleCkKKyAgICB7CisgICAg
ICAgIHN1cGVyKCk7CiAKLVdlYkluc3BlY3Rvci5Qcm9iZVNldERhdGFGcmFtZS5jb21wYXJlID0g
ZnVuY3Rpb24oYSwgYikgewotICAgIGNvbnNvbGUuYXNzZXJ0KGEgaW5zdGFuY2VvZiBXZWJJbnNw
ZWN0b3IuUHJvYmVTZXREYXRhRnJhbWUsIGEpOwotICAgIGNvbnNvbGUuYXNzZXJ0KGIgaW5zdGFu
Y2VvZiBXZWJJbnNwZWN0b3IuUHJvYmVTZXREYXRhRnJhbWUsIGIpOworICAgICAgICB0aGlzLl9j
b3VudCA9IDA7CisgICAgICAgIHRoaXMuX2luZGV4ID0gaW5kZXg7CisgICAgICAgIHRoaXMuX3Nl
cGFyYXRvciA9IGZhbHNlOworICAgIH0KIAotICAgIHJldHVybiBhLmluZGV4IC0gYi5pbmRleDsK
LX0KKyAgICAvLyBTdGF0aWMKIAotV2ViSW5zcGVjdG9yLlByb2JlU2V0RGF0YUZyYW1lLk1pc3Np
bmdWYWx1ZSA9ICI/IjsKKyAgICBzdGF0aWMgY29tcGFyZShhLCBiKQorICAgIHsKKyAgICAgICAg
Y29uc29sZS5hc3NlcnQoYSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Qcm9iZVNldERhdGFGcmFt
ZSwgYSk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGIgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3Iu
UHJvYmVTZXREYXRhRnJhbWUsIGIpOwogCi1XZWJJbnNwZWN0b3IuUHJvYmVTZXREYXRhRnJhbWUu
cHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuUHJvYmVTZXREYXRh
RnJhbWUsCisgICAgICAgIHJldHVybiBhLmluZGV4IC0gYi5pbmRleDsKKyAgICB9CiAKICAgICAv
LyBQdWJsaWMKIAogICAgIGdldCBrZXkoKQogICAgIHsKICAgICAgICAgcmV0dXJuIFN0cmluZyh0
aGlzLl9pbmRleCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgY291bnQoKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHRoaXMuX2NvdW50OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGluZGV4
KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9pbmRleDsKLSAgICB9LAorICAgIH0KIAog
ICAgIGdldCBpc1NlcGFyYXRvcigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc2VwYXJh
dG9yOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gVGhlIGxhc3QgZGF0YSBmcmFtZSBiZWZvcmUg
YSBtYWluIGZyYW1lIG5hdmlnYXRpb24gaXMgbWFya2VkIGFzIGEgInNlcGFyYXRvciIgZnJhbWUu
CiAgICAgc2V0IGlzU2VwYXJhdG9yKHZhbHVlKQogICAgIHsKICAgICAgICAgdGhpcy5fc2VwYXJh
dG9yID0gISF2YWx1ZTsKLSAgICB9LAorICAgIH0KIAotICAgIGFkZFNhbXBsZUZvclByb2JlOiBm
dW5jdGlvbihwcm9iZSwgc2FtcGxlKQorICAgIGFkZFNhbXBsZUZvclByb2JlKHByb2JlLCBzYW1w
bGUpCiAgICAgewogICAgICAgICB0aGlzW3Byb2JlLmlkXSA9IHNhbXBsZTsKICAgICAgICAgdGhp
cy5fY291bnQrKzsKLSAgICB9LAorICAgIH0KIAotICAgIG1pc3NpbmdLZXlzOiBmdW5jdGlvbihw
cm9iZVNldCkKKyAgICBtaXNzaW5nS2V5cyhwcm9iZVNldCkKICAgICB7CiAgICAgICAgIHJldHVy
biBwcm9iZVNldC5wcm9iZXMuZmlsdGVyKGZ1bmN0aW9uKHByb2JlKSB7CiAgICAgICAgICAgICBy
ZXR1cm4gIXRoaXMuaGFzT3duUHJvcGVydHkocHJvYmUuaWQpOwogICAgICAgICB9LCB0aGlzKTsK
LSAgICB9LAorICAgIH0KIAotICAgIGlzQ29tcGxldGU6IGZ1bmN0aW9uKHByb2JlU2V0KQorICAg
IGlzQ29tcGxldGUocHJvYmVTZXQpCiAgICAgewogICAgICAgICByZXR1cm4gIXRoaXMubWlzc2lu
Z0tleXMocHJvYmVTZXQpLmxlbmd0aDsKLSAgICB9LAorICAgIH0KIAotICAgIGZpbGxNaXNzaW5n
VmFsdWVzOiBmdW5jdGlvbihwcm9iZVNldCkKKyAgICBmaWxsTWlzc2luZ1ZhbHVlcyhwcm9iZVNl
dCkKICAgICB7CiAgICAgICAgIGZvciAodmFyIGtleSBvZiB0aGlzLm1pc3NpbmdLZXlzKHByb2Jl
U2V0KSkKICAgICAgICAgICAgIHRoaXNba2V5XSA9IFdlYkluc3BlY3Rvci5Qcm9iZVNldERhdGFG
cmFtZS5NaXNzaW5nVmFsdWU7CiAgICAgfQogfTsKKworV2ViSW5zcGVjdG9yLlByb2JlU2V0RGF0
YUZyYW1lLk1pc3NpbmdWYWx1ZSA9ICI/IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Qcm9iZVNldERhdGFUYWJsZS5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Qcm9iZVNldERhdGFUYWJsZS5qcwpp
bmRleCBjNTM4MTQzLi40ZGNlZTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Nb2RlbHMvUHJvYmVTZXREYXRhVGFibGUuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Byb2JlU2V0RGF0YVRhYmxlLmpzCkBA
IC0yNCw1MyArMjQsNDIgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlBy
b2JlU2V0RGF0YVRhYmxlID0gZnVuY3Rpb24ocHJvYmVTZXQpCitXZWJJbnNwZWN0b3IuUHJvYmVT
ZXREYXRhVGFibGUgPSBjbGFzcyBQcm9iZVNldERhdGFUYWJsZSBleHRlbmRzIFdlYkluc3BlY3Rv
ci5PYmplY3QKIHsKLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7Ci0KLSAgICB0
aGlzLl9wcm9iZVNldCA9IHByb2JlU2V0OwotICAgIHRoaXMuX2ZyYW1lcyA9IFtdOwotICAgIHRo
aXMuX3ByZXZpb3VzQmF0Y2hJZGVudGlmaWVyID0gV2ViSW5zcGVjdG9yLlByb2JlU2V0RGF0YVRh
YmxlLlNlbnRpbmVsVmFsdWU7Ci19OwotCi1XZWJJbnNwZWN0b3IuUHJvYmVTZXREYXRhVGFibGUu
RXZlbnQgPSB7Ci0gICAgRnJhbWVJbnNlcnRlZDogInByb2JlLXNldC1kYXRhLXRhYmxlLWZyYW1l
LWluc2VydGVkIiwKLSAgICBTZXBhcmF0b3JJbnNlcnRlZDogInByb2JlLXNldC1kYXRhLXRhYmxl
LXNlcGFyYXRvci1pbnNlcnRlZCIsCi0gICAgV2lsbFJlbW92ZTogInByb2JlLXNldC1kYXRhLXRh
YmxlLXdpbGwtcmVtb3ZlIgotfTsKLQotV2ViSW5zcGVjdG9yLlByb2JlU2V0RGF0YVRhYmxlLlNl
bnRpbmVsVmFsdWUgPSAtMTsKLVdlYkluc3BlY3Rvci5Qcm9iZVNldERhdGFUYWJsZS5Vbmtub3du
VmFsdWUgPSAiPyI7Ci0KLVdlYkluc3BlY3Rvci5Qcm9iZVNldERhdGFUYWJsZS5wcm90b3R5cGUg
PSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5Qcm9iZVNldERhdGFUYWJsZSwKLSAg
ICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlLAorICAgIGNvbnN0cnVj
dG9yKHByb2JlU2V0KQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKKworICAgICAgICB0aGlzLl9w
cm9iZVNldCA9IHByb2JlU2V0OworICAgICAgICB0aGlzLl9mcmFtZXMgPSBbXTsKKyAgICAgICAg
dGhpcy5fcHJldmlvdXNCYXRjaElkZW50aWZpZXIgPSBXZWJJbnNwZWN0b3IuUHJvYmVTZXREYXRh
VGFibGUuU2VudGluZWxWYWx1ZTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBm
cmFtZXMoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2ZyYW1lcy5zbGljZSgpOwotICAg
IH0sCisgICAgfQogCiAgICAgZ2V0IHNlcGFyYXRvcnMoKQogICAgIHsKICAgICAgICAgcmV0dXJu
IHRoaXMuX2ZyYW1lcy5maWx0ZXIoZnVuY3Rpb24oZnJhbWUpIHsgcmV0dXJuIGZyYW1lLmlzU2Vw
YXJhdG9yOyB9KTsKLSAgICB9LAorICAgIH0KIAotICAgIHdpbGxSZW1vdmU6IGZ1bmN0aW9uKCkK
KyAgICB3aWxsUmVtb3ZlKCkKICAgICB7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlz
dGVuZXJzKFdlYkluc3BlY3Rvci5Qcm9iZVNldERhdGFUYWJsZS5FdmVudC5XaWxsUmVtb3ZlKTsK
ICAgICAgICAgdGhpcy5fZnJhbWVzID0gW107CiAgICAgICAgIGRlbGV0ZSB0aGlzLl9wcm9iZVNl
dDsKLSAgICB9LAorICAgIH0KIAotICAgIG1haW5SZXNvdXJjZUNoYW5nZWQ6IGZ1bmN0aW9uKCkK
KyAgICBtYWluUmVzb3VyY2VDaGFuZ2VkKCkKICAgICB7CiAgICAgICAgIHRoaXMuYWRkU2VwYXJh
dG9yKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBhZGRTYW1wbGVGb3JQcm9iZTogZnVuY3Rpb24o
cHJvYmUsIHNhbXBsZSkKKyAgICBhZGRTYW1wbGVGb3JQcm9iZShwcm9iZSwgc2FtcGxlKQogICAg
IHsKICAgICAgICAgLy8gRWFnZXJseSBzYXZlIHRoZSBmcmFtZSBpZiB0aGUgYmF0Y2ggaWRlbnRp
ZmllciBkaWZmZXJzLCBvciB3ZSBrbm93IHRoZSBmcmFtZSBpcyBmdWxsLgogICAgICAgICAvLyBD
cmVhdGUgYSBuZXcgZnJhbWUgd2hlbiB0aGUgYmF0Y2ggaWRlbnRpZmllciBkaWZmZXJzLgpAQCAt
ODksMzUgKzc4LDM1IEBAIFdlYkluc3BlY3Rvci5Qcm9iZVNldERhdGFUYWJsZS5wcm90b3R5cGUg
PSB7CiAgICAgICAgICAgICB0aGlzLmFkZEZyYW1lKHRoaXMuX29wZW5GcmFtZSk7CiAgICAgICAg
ICAgICB0aGlzLl9vcGVuRnJhbWUgPSBudWxsOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBhZGRQcm9iZTogZnVuY3Rpb24ocHJvYmUpCisgICAgYWRkUHJvYmUocHJvYmUpCiAgICAg
ewogICAgICAgICBmb3IgKHZhciBmcmFtZSBvZiB0aGlzLmZyYW1lcykKICAgICAgICAgICAgIGlm
ICghZnJhbWVbcHJvYmUuaWRdKQogICAgICAgICAgICAgICAgIGZyYW1lW3Byb2JlLmlkXSA9IFdl
Ykluc3BlY3Rvci5Qcm9iZVNldERhdGFUYWJsZS5Vbmtub3duVmFsdWU7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICByZW1vdmVQcm9iZTogZnVuY3Rpb24ocHJvYmUpCisgICAgcmVtb3ZlUHJvYmUocHJv
YmUpCiAgICAgewogICAgICAgICBmb3IgKHZhciBmcmFtZSBvZiB0aGlzLmZyYW1lcykKICAgICAg
ICAgICAgIGRlbGV0ZSBmcmFtZVtwcm9iZS5pZF07Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQ
cm90ZWN0ZWQgLSBjYW4gYmUgb3ZlcnJpZGRlbiBieSBzdWJjbGFzc2VzLgogCi0gICAgY3JlYXRl
RnJhbWU6IGZ1bmN0aW9uKCkKKyAgICBjcmVhdGVGcmFtZSgpCiAgICAgewogICAgICAgICByZXR1
cm4gbmV3IFdlYkluc3BlY3Rvci5Qcm9iZVNldERhdGFGcmFtZSh0aGlzLl9mcmFtZXMubGVuZ3Ro
KTsKLSAgICB9LAorICAgIH0KIAotICAgIGFkZEZyYW1lOiBmdW5jdGlvbihmcmFtZSkKKyAgICBh
ZGRGcmFtZShmcmFtZSkKICAgICB7CiAgICAgICAgIHRoaXMuX2ZyYW1lcy5wdXNoKGZyYW1lKTsK
ICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlByb2Jl
U2V0RGF0YVRhYmxlLkV2ZW50LkZyYW1lSW5zZXJ0ZWQsIGZyYW1lKTsKLSAgICB9LAorICAgIH0K
IAotICAgIGFkZFNlcGFyYXRvcjogZnVuY3Rpb24oKQorICAgIGFkZFNlcGFyYXRvcigpCiAgICAg
ewogICAgICAgICAvLyBTZXBhcmF0b3JzIG11c3QgYmUgYXNzb2NpYXRlZCB3aXRoIGEgZnJhbWUu
CiAgICAgICAgIGlmICghdGhpcy5fZnJhbWVzLmxlbmd0aCkKQEAgLTEzMiwzICsxMjEsMTIgQEAg
V2ViSW5zcGVjdG9yLlByb2JlU2V0RGF0YVRhYmxlLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhp
cy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlByb2JlU2V0RGF0YVRhYmxl
LkV2ZW50LlNlcGFyYXRvckluc2VydGVkLCBwcmV2aW91c0ZyYW1lKTsKICAgICB9CiB9OworCitX
ZWJJbnNwZWN0b3IuUHJvYmVTZXREYXRhVGFibGUuRXZlbnQgPSB7CisgICAgRnJhbWVJbnNlcnRl
ZDogInByb2JlLXNldC1kYXRhLXRhYmxlLWZyYW1lLWluc2VydGVkIiwKKyAgICBTZXBhcmF0b3JJ
bnNlcnRlZDogInByb2JlLXNldC1kYXRhLXRhYmxlLXNlcGFyYXRvci1pbnNlcnRlZCIsCisgICAg
V2lsbFJlbW92ZTogInByb2JlLXNldC1kYXRhLXRhYmxlLXdpbGwtcmVtb3ZlIgorfTsKKworV2Vi
SW5zcGVjdG9yLlByb2JlU2V0RGF0YVRhYmxlLlNlbnRpbmVsVmFsdWUgPSAtMTsKK1dlYkluc3Bl
Y3Rvci5Qcm9iZVNldERhdGFUYWJsZS5Vbmtub3duVmFsdWUgPSAiPyI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUHJvZmlsZS5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Qcm9maWxlLmpzCmluZGV4
IDc3ZWQ4MDguLmI5MjdjOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL01vZGVscy9Qcm9maWxlLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL01vZGVscy9Qcm9maWxlLmpzCkBAIC0yMywyOCArMjMsMjYgQEAKICAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuUHJvZmls
ZSA9IGZ1bmN0aW9uKHRvcERvd25Sb290Tm9kZXMpCitXZWJJbnNwZWN0b3IuUHJvZmlsZSA9IGNs
YXNzIFByb2ZpbGUgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0gICAgV2ViSW5zcGVj
dG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIGNvbnN0cnVjdG9yKHRvcERvd25Sb290Tm9kZXMp
CisgICAgeworICAgICAgICBzdXBlcigpOwogCi0gICAgdG9wRG93blJvb3ROb2RlcyA9IHRvcERv
d25Sb290Tm9kZXMgfHwgW107CisgICAgICAgIHRvcERvd25Sb290Tm9kZXMgPSB0b3BEb3duUm9v
dE5vZGVzIHx8IFtdOwogCi0gICAgY29uc29sZS5hc3NlcnQodG9wRG93blJvb3ROb2RlcyBpbnN0
YW5jZW9mIEFycmF5KTsKLSAgICBjb25zb2xlLmFzc2VydCh0b3BEb3duUm9vdE5vZGVzLnJlZHVj
ZShmdW5jdGlvbihwcmV2aW91c1ZhbHVlLCBub2RlKSB7IHJldHVybiBwcmV2aW91c1ZhbHVlICYm
IG5vZGUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUHJvZmlsZU5vZGU7IH0sIHRydWUpKTsKKyAg
ICAgICAgY29uc29sZS5hc3NlcnQodG9wRG93blJvb3ROb2RlcyBpbnN0YW5jZW9mIEFycmF5KTsK
KyAgICAgICAgY29uc29sZS5hc3NlcnQodG9wRG93blJvb3ROb2Rlcy5yZWR1Y2UoZnVuY3Rpb24o
cHJldmlvdXNWYWx1ZSwgbm9kZSkgeyByZXR1cm4gcHJldmlvdXNWYWx1ZSAmJiBub2RlIGluc3Rh
bmNlb2YgV2ViSW5zcGVjdG9yLlByb2ZpbGVOb2RlOyB9LCB0cnVlKSk7CiAKLSAgICB0aGlzLl90
b3BEb3duUm9vdE5vZGVzID0gdG9wRG93blJvb3ROb2RlczsKLX07Ci0KLVdlYkluc3BlY3Rvci5Q
cm9maWxlLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlByb2Zp
bGUsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZSwKKyAgICAg
ICAgdGhpcy5fdG9wRG93blJvb3ROb2RlcyA9IHRvcERvd25Sb290Tm9kZXM7CisgICAgfQogCiAg
ICAgLy8gUHVibGljCiAKICAgICBnZXQgdG9wRG93blJvb3ROb2RlcygpCiAgICAgewogICAgICAg
ICByZXR1cm4gdGhpcy5fdG9wRG93blJvb3ROb2RlczsKLSAgICB9LAorICAgIH0KIAogICAgIGdl
dCBib3R0b21VcFJvb3ROb2RlcygpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Byb2ZpbGVOb2RlLmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Byb2ZpbGVOb2RlLmpzCmluZGV4IDg0ZmRh
ZjYwLi44NzUwOWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Nb2RlbHMvUHJvZmlsZU5vZGUuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvTW9kZWxzL1Byb2ZpbGVOb2RlLmpzCkBAIC0yMywxMjcgKzIzLDExMyBAQAog
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5Q
cm9maWxlTm9kZSA9IGZ1bmN0aW9uKGlkLCB0eXBlLCBmdW5jdGlvbk5hbWUsIHNvdXJjZUNvZGVM
b2NhdGlvbiwgY2FsbHMsIGNoaWxkTm9kZXMpCitXZWJJbnNwZWN0b3IuUHJvZmlsZU5vZGUgPSBj
bGFzcyBQcm9maWxlTm9kZSBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIHsKLSAgICBXZWJJ
bnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7Ci0KLSAgICBjaGlsZE5vZGVzID0gY2hpbGROb2Rl
cyB8fCBbXTsKLQotICAgIGNvbnNvbGUuYXNzZXJ0KGlkKTsKLSAgICBjb25zb2xlLmFzc2VydChj
YWxscyBpbnN0YW5jZW9mIEFycmF5KTsKLSAgICBjb25zb2xlLmFzc2VydChjYWxscy5sZW5ndGgg
Pj0gMSk7Ci0gICAgY29uc29sZS5hc3NlcnQoY2FsbHMucmVkdWNlKGZ1bmN0aW9uKHByZXZpb3Vz
VmFsdWUsIGNhbGwpIHsgcmV0dXJuIHByZXZpb3VzVmFsdWUgJiYgY2FsbCBpbnN0YW5jZW9mIFdl
Ykluc3BlY3Rvci5Qcm9maWxlTm9kZUNhbGw7IH0sIHRydWUpKTsKLSAgICBjb25zb2xlLmFzc2Vy
dChjaGlsZE5vZGVzIGluc3RhbmNlb2YgQXJyYXkpOwotICAgIGNvbnNvbGUuYXNzZXJ0KGNoaWxk
Tm9kZXMucmVkdWNlKGZ1bmN0aW9uKHByZXZpb3VzVmFsdWUsIG5vZGUpIHsgcmV0dXJuIHByZXZp
b3VzVmFsdWUgJiYgbm9kZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Qcm9maWxlTm9kZTsgfSwg
dHJ1ZSkpOwotCi0gICAgdGhpcy5faWQgPSBpZDsKLSAgICB0aGlzLl90eXBlID0gdHlwZSB8fCBX
ZWJJbnNwZWN0b3IuUHJvZmlsZU5vZGUuVHlwZS5GdW5jdGlvbjsKLSAgICB0aGlzLl9mdW5jdGlv
bk5hbWUgPSBmdW5jdGlvbk5hbWUgfHwgbnVsbDsKLSAgICB0aGlzLl9zb3VyY2VDb2RlTG9jYXRp
b24gPSBzb3VyY2VDb2RlTG9jYXRpb24gfHwgbnVsbDsKLSAgICB0aGlzLl9jYWxscyA9IGNhbGxz
OwotICAgIHRoaXMuX2NoaWxkTm9kZXMgPSBjaGlsZE5vZGVzOwotICAgIHRoaXMuX3BhcmVudE5v
ZGUgPSBudWxsOwotICAgIHRoaXMuX3ByZXZpb3VzU2libGluZyA9IG51bGw7Ci0gICAgdGhpcy5f
bmV4dFNpYmxpbmcgPSBudWxsOwotICAgIHRoaXMuX2NvbXB1dGVkVG90YWxUaW1lcyA9IGZhbHNl
OwotCi0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9jaGlsZE5vZGVzLmxlbmd0aDsgKytp
KQotICAgICAgICB0aGlzLl9jaGlsZE5vZGVzW2ldLmVzdGFibGlzaFJlbGF0aW9uc2hpcHModGhp
cywgdGhpcy5fY2hpbGROb2Rlc1tpIC0gMV0sIHRoaXMuX2NoaWxkTm9kZXNbaSArIDFdKTsKLQot
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fY2FsbHMubGVuZ3RoOyArK2kpCi0gICAgICAg
IHRoaXMuX2NhbGxzW2ldLmVzdGFibGlzaFJlbGF0aW9uc2hpcHModGhpcywgdGhpcy5fY2FsbHNb
aSAtIDFdLCB0aGlzLl9jYWxsc1tpICsgMV0pOwotfTsKLQotV2ViSW5zcGVjdG9yLlByb2ZpbGVO
b2RlLlR5cGUgPSB7Ci0gICAgRnVuY3Rpb246ICJwcm9maWxlLW5vZGUtdHlwZS1mdW5jdGlvbiIs
Ci0gICAgUHJvZ3JhbTogInByb2ZpbGUtbm9kZS10eXBlLXByb2dyYW0iCi19OwotCi1XZWJJbnNw
ZWN0b3IuUHJvZmlsZU5vZGUuVHlwZUlkZW50aWZpZXIgPSAicHJvZmlsZS1ub2RlIjsKLVdlYklu
c3BlY3Rvci5Qcm9maWxlTm9kZS5UeXBlQ29va2llS2V5ID0gInByb2ZpbGUtbm9kZS10eXBlIjsK
LVdlYkluc3BlY3Rvci5Qcm9maWxlTm9kZS5GdW5jdGlvbk5hbWVDb29raWVLZXkgPSAicHJvZmls
ZS1ub2RlLWZ1bmN0aW9uLW5hbWUiOwotV2ViSW5zcGVjdG9yLlByb2ZpbGVOb2RlLlNvdXJjZUNv
ZGVVUkxDb29raWVLZXkgPSAicHJvZmlsZS1ub2RlLXNvdXJjZS1jb2RlLXVybCI7Ci1XZWJJbnNw
ZWN0b3IuUHJvZmlsZU5vZGUuU291cmNlQ29kZUxvY2F0aW9uTGluZUNvb2tpZUtleSA9ICJwcm9m
aWxlLW5vZGUtc291cmNlLWNvZGUtbG9jYXRpb24tbGluZSI7Ci1XZWJJbnNwZWN0b3IuUHJvZmls
ZU5vZGUuU291cmNlQ29kZUxvY2F0aW9uQ29sdW1uQ29va2llS2V5ID0gInByb2ZpbGUtbm9kZS1z
b3VyY2UtY29kZS1sb2NhdGlvbi1jb2x1bW4iOwotCi1XZWJJbnNwZWN0b3IuUHJvZmlsZU5vZGUu
cHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuUHJvZmlsZU5vZGUs
Ci0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZSwKKyAgICBjb25z
dHJ1Y3RvcihpZCwgdHlwZSwgZnVuY3Rpb25OYW1lLCBzb3VyY2VDb2RlTG9jYXRpb24sIGNhbGxz
LCBjaGlsZE5vZGVzKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKKworICAgICAgICBjaGlsZE5v
ZGVzID0gY2hpbGROb2RlcyB8fCBbXTsKKworICAgICAgICBjb25zb2xlLmFzc2VydChpZCk7Cisg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KGNhbGxzIGluc3RhbmNlb2YgQXJyYXkpOworICAgICAgICBj
b25zb2xlLmFzc2VydChjYWxscy5sZW5ndGggPj0gMSk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KGNhbGxzLnJlZHVjZShmdW5jdGlvbihwcmV2aW91c1ZhbHVlLCBjYWxsKSB7IHJldHVybiBwcmV2
aW91c1ZhbHVlICYmIGNhbGwgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUHJvZmlsZU5vZGVDYWxs
OyB9LCB0cnVlKSk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGNoaWxkTm9kZXMgaW5zdGFuY2Vv
ZiBBcnJheSk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGNoaWxkTm9kZXMucmVkdWNlKGZ1bmN0
aW9uKHByZXZpb3VzVmFsdWUsIG5vZGUpIHsgcmV0dXJuIHByZXZpb3VzVmFsdWUgJiYgbm9kZSBp
bnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Qcm9maWxlTm9kZTsgfSwgdHJ1ZSkpOworCisgICAgICAg
IHRoaXMuX2lkID0gaWQ7CisgICAgICAgIHRoaXMuX3R5cGUgPSB0eXBlIHx8IFdlYkluc3BlY3Rv
ci5Qcm9maWxlTm9kZS5UeXBlLkZ1bmN0aW9uOworICAgICAgICB0aGlzLl9mdW5jdGlvbk5hbWUg
PSBmdW5jdGlvbk5hbWUgfHwgbnVsbDsKKyAgICAgICAgdGhpcy5fc291cmNlQ29kZUxvY2F0aW9u
ID0gc291cmNlQ29kZUxvY2F0aW9uIHx8IG51bGw7CisgICAgICAgIHRoaXMuX2NhbGxzID0gY2Fs
bHM7CisgICAgICAgIHRoaXMuX2NoaWxkTm9kZXMgPSBjaGlsZE5vZGVzOworICAgICAgICB0aGlz
Ll9wYXJlbnROb2RlID0gbnVsbDsKKyAgICAgICAgdGhpcy5fcHJldmlvdXNTaWJsaW5nID0gbnVs
bDsKKyAgICAgICAgdGhpcy5fbmV4dFNpYmxpbmcgPSBudWxsOworICAgICAgICB0aGlzLl9jb21w
dXRlZFRvdGFsVGltZXMgPSBmYWxzZTsKKworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRo
aXMuX2NoaWxkTm9kZXMubGVuZ3RoOyArK2kpCisgICAgICAgICAgICB0aGlzLl9jaGlsZE5vZGVz
W2ldLmVzdGFibGlzaFJlbGF0aW9uc2hpcHModGhpcywgdGhpcy5fY2hpbGROb2Rlc1tpIC0gMV0s
IHRoaXMuX2NoaWxkTm9kZXNbaSArIDFdKTsKKworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IHRoaXMuX2NhbGxzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgdGhpcy5fY2FsbHNbaV0uZXN0
YWJsaXNoUmVsYXRpb25zaGlwcyh0aGlzLCB0aGlzLl9jYWxsc1tpIC0gMV0sIHRoaXMuX2NhbGxz
W2kgKyAxXSk7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgaWQoKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIHRoaXMuX2lkOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHR5cGUo
KQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3R5cGU7Ci0gICAgfSwKKyAgICB9CiAKICAg
ICBnZXQgZnVuY3Rpb25OYW1lKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9mdW5jdGlv
bk5hbWU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc291cmNlQ29kZUxvY2F0aW9uKCkKICAg
ICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb247Ci0gICAgfSwKKyAg
ICB9CiAKICAgICBnZXQgc3RhcnRUaW1lKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9zdGFy
dFRpbWUgPT09IHVuZGVmaW5lZCkKICAgICAgICAgICAgIHRoaXMuX3N0YXJ0VGltZSA9ICBNYXRo
Lm1heCgwLCB0aGlzLl9jYWxsc1swXS5zdGFydFRpbWUpOwogICAgICAgICByZXR1cm4gdGhpcy5f
c3RhcnRUaW1lOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGVuZFRpbWUoKQogICAgIHsKICAg
ICAgICAgaWYgKHRoaXMuX2VuZFRpbWUgPT09IHVuZGVmaW5lZCkKICAgICAgICAgICAgIHRoaXMu
X2VuZFRpbWUgPSBNYXRoLm1pbih0aGlzLl9jYWxscy5sYXN0VmFsdWUuZW5kVGltZSwgSW5maW5p
dHkpOwogICAgICAgICByZXR1cm4gdGhpcy5fZW5kVGltZTsKLSAgICB9LAorICAgIH0KIAogICAg
IGdldCBzZWxmVGltZSgpCiAgICAgewogICAgICAgICB0aGlzLl9jb21wdXRlVG90YWxUaW1lc0lm
TmVlZGVkKCk7CiAgICAgICAgIHJldHVybiB0aGlzLl9zZWxmVGltZTsKLSAgICB9LAorICAgIH0K
IAogICAgIGdldCB0b3RhbFRpbWUoKQogICAgIHsKICAgICAgICAgdGhpcy5fY29tcHV0ZVRvdGFs
VGltZXNJZk5lZWRlZCgpOwogICAgICAgICByZXR1cm4gdGhpcy5fdG90YWxUaW1lOwotICAgIH0s
CisgICAgfQogCiAgICAgZ2V0IGNhbGxzKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9j
YWxsczsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBwcmV2aW91c1NpYmxpbmcoKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIHRoaXMuX3ByZXZpb3VzU2libGluZzsKLSAgICB9LAorICAgIH0KIAog
ICAgIGdldCBuZXh0U2libGluZygpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fbmV4dFNp
Ymxpbmc7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgcGFyZW50Tm9kZSgpCiAgICAgewogICAg
ICAgICByZXR1cm4gdGhpcy5fcGFyZW50Tm9kZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBj
aGlsZE5vZGVzKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9jaGlsZE5vZGVzOwotICAg
IH0sCisgICAgfQogCi0gICAgY29tcHV0ZUNhbGxJbmZvRm9yVGltZVJhbmdlOiBmdW5jdGlvbihy
YW5nZVN0YXJ0VGltZSwgcmFuZ2VFbmRUaW1lKQorICAgIGNvbXB1dGVDYWxsSW5mb0ZvclRpbWVS
YW5nZShyYW5nZVN0YXJ0VGltZSwgcmFuZ2VFbmRUaW1lKQogICAgIHsKICAgICAgICAgY29uc29s
ZS5hc3NlcnQodHlwZW9mIHJhbmdlU3RhcnRUaW1lID09PSAibnVtYmVyIik7CiAgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KHR5cGVvZiByYW5nZUVuZFRpbWUgPT09ICJudW1iZXIiKTsKQEAgLTE3Niw5
ICsxNjIsOSBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZU5vZGUucHJvdG90eXBlID0gewogICAgICAg
ICB2YXIgYXZlcmFnZVRpbWUgPSBzZWxmVGltZSAvIGNhbGxDb3VudDsKIAogICAgICAgICByZXR1
cm4ge3N0YXJ0VGltZSwgZW5kVGltZSwgdG90YWxUaW1lLCBzZWxmVGltZSwgY2FsbENvdW50LCBh
dmVyYWdlVGltZX07Ci0gICAgfSwKKyAgICB9CiAKLSAgICB0cmF2ZXJzZU5leHRQcm9maWxlTm9k
ZTogZnVuY3Rpb24oc3RheVdpdGhpbikKKyAgICB0cmF2ZXJzZU5leHRQcm9maWxlTm9kZShzdGF5
V2l0aGluKQogICAgIHsKICAgICAgICAgdmFyIHByb2ZpbGVOb2RlID0gdGhpcy5fY2hpbGROb2Rl
c1swXTsKICAgICAgICAgaWYgKHByb2ZpbGVOb2RlKQpAQCAtMTk5LDI5ICsxODUsMjkgQEAgV2Vi
SW5zcGVjdG9yLlByb2ZpbGVOb2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybiBu
dWxsOwogCiAgICAgICAgIHJldHVybiBwcm9maWxlTm9kZS5uZXh0U2libGluZzsKLSAgICB9LAor
ICAgIH0KIAotICAgIHNhdmVJZGVudGl0eVRvQ29va2llOiBmdW5jdGlvbihjb29raWUpCisgICAg
c2F2ZUlkZW50aXR5VG9Db29raWUoY29va2llKQogICAgIHsKICAgICAgICAgY29va2llW1dlYklu
c3BlY3Rvci5Qcm9maWxlTm9kZS5UeXBlQ29va2llS2V5XSA9IHRoaXMuX3R5cGUgfHwgbnVsbDsK
ICAgICAgICAgY29va2llW1dlYkluc3BlY3Rvci5Qcm9maWxlTm9kZS5GdW5jdGlvbk5hbWVDb29r
aWVLZXldID0gdGhpcy5fZnVuY3Rpb25OYW1lIHx8IG51bGw7CiAgICAgICAgIGNvb2tpZVtXZWJJ
bnNwZWN0b3IuUHJvZmlsZU5vZGUuU291cmNlQ29kZVVSTENvb2tpZUtleV0gPSB0aGlzLl9zb3Vy
Y2VDb2RlTG9jYXRpb24gPyB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb24uc291cmNlQ29kZS51cmwg
PyB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb24uc291cmNlQ29kZS51cmwuaGFzaCA6IG51bGwgOiBu
dWxsOwogICAgICAgICBjb29raWVbV2ViSW5zcGVjdG9yLlByb2ZpbGVOb2RlLlNvdXJjZUNvZGVM
b2NhdGlvbkxpbmVDb29raWVLZXldID0gdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uID8gdGhpcy5f
c291cmNlQ29kZUxvY2F0aW9uLmxpbmVOdW1iZXIgOiBudWxsOwogICAgICAgICBjb29raWVbV2Vi
SW5zcGVjdG9yLlByb2ZpbGVOb2RlLlNvdXJjZUNvZGVMb2NhdGlvbkNvbHVtbkNvb2tpZUtleV0g
PSB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb24gPyB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb24uY29s
dW1uTnVtYmVyIDogbnVsbDsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByb3RlY3RlZAogCi0g
ICAgZXN0YWJsaXNoUmVsYXRpb25zaGlwczogZnVuY3Rpb24ocGFyZW50Tm9kZSwgcHJldmlvdXNT
aWJsaW5nLCBuZXh0U2libGluZykKKyAgICBlc3RhYmxpc2hSZWxhdGlvbnNoaXBzKHBhcmVudE5v
ZGUsIHByZXZpb3VzU2libGluZywgbmV4dFNpYmxpbmcpCiAgICAgewogICAgICAgICB0aGlzLl9w
YXJlbnROb2RlID0gcGFyZW50Tm9kZSB8fCBudWxsOwogICAgICAgICB0aGlzLl9wcmV2aW91c1Np
YmxpbmcgPSBwcmV2aW91c1NpYmxpbmcgfHwgbnVsbDsKICAgICAgICAgdGhpcy5fbmV4dFNpYmxp
bmcgPSBuZXh0U2libGluZyB8fCBudWxsOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0
ZQogCi0gICAgX2NvbXB1dGVUb3RhbFRpbWVzOiBmdW5jdGlvbigpCisgICAgX2NvbXB1dGVUb3Rh
bFRpbWVzKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9jb21wdXRlZFRvdGFsVGltZXMpCiAg
ICAgICAgICAgICByZXR1cm47CkBAIC0yMzUsMyArMjIxLDE1IEBAIFdlYkluc3BlY3Rvci5Qcm9m
aWxlTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3RvdGFsVGltZSA9IGluZm8udG90
YWxUaW1lOwogICAgIH0KIH07CisKK1dlYkluc3BlY3Rvci5Qcm9maWxlTm9kZS5UeXBlID0gewor
ICAgIEZ1bmN0aW9uOiAicHJvZmlsZS1ub2RlLXR5cGUtZnVuY3Rpb24iLAorICAgIFByb2dyYW06
ICJwcm9maWxlLW5vZGUtdHlwZS1wcm9ncmFtIgorfTsKKworV2ViSW5zcGVjdG9yLlByb2ZpbGVO
b2RlLlR5cGVJZGVudGlmaWVyID0gInByb2ZpbGUtbm9kZSI7CitXZWJJbnNwZWN0b3IuUHJvZmls
ZU5vZGUuVHlwZUNvb2tpZUtleSA9ICJwcm9maWxlLW5vZGUtdHlwZSI7CitXZWJJbnNwZWN0b3Iu
UHJvZmlsZU5vZGUuRnVuY3Rpb25OYW1lQ29va2llS2V5ID0gInByb2ZpbGUtbm9kZS1mdW5jdGlv
bi1uYW1lIjsKK1dlYkluc3BlY3Rvci5Qcm9maWxlTm9kZS5Tb3VyY2VDb2RlVVJMQ29va2llS2V5
ID0gInByb2ZpbGUtbm9kZS1zb3VyY2UtY29kZS11cmwiOworV2ViSW5zcGVjdG9yLlByb2ZpbGVO
b2RlLlNvdXJjZUNvZGVMb2NhdGlvbkxpbmVDb29raWVLZXkgPSAicHJvZmlsZS1ub2RlLXNvdXJj
ZS1jb2RlLWxvY2F0aW9uLWxpbmUiOworV2ViSW5zcGVjdG9yLlByb2ZpbGVOb2RlLlNvdXJjZUNv
ZGVMb2NhdGlvbkNvbHVtbkNvb2tpZUtleSA9ICJwcm9maWxlLW5vZGUtc291cmNlLWNvZGUtbG9j
YXRpb24tY29sdW1uIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL01vZGVscy9Qcm9maWxlTm9kZUNhbGwuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Nb2RlbHMvUHJvZmlsZU5vZGVDYWxsLmpzCmluZGV4IDFjNjBlYTkuLjdm
NzRjNjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9N
b2RlbHMvUHJvZmlsZU5vZGVDYWxsLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL01vZGVscy9Qcm9maWxlTm9kZUNhbGwuanMKQEAgLTIzLDQzICsyMyw0MSBAQAog
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5Q
cm9maWxlTm9kZUNhbGwgPSBmdW5jdGlvbihzdGFydFRpbWUsIHRvdGFsVGltZSkKK1dlYkluc3Bl
Y3Rvci5Qcm9maWxlTm9kZUNhbGwgPSBjbGFzcyBQcm9maWxlTm9kZUNhbGwgZXh0ZW5kcyBXZWJJ
bnNwZWN0b3IuT2JqZWN0CiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwor
ICAgIGNvbnN0cnVjdG9yKHN0YXJ0VGltZSwgdG90YWxUaW1lKQorICAgIHsKKyAgICAgICAgc3Vw
ZXIoKTsKIAotICAgIGNvbnNvbGUuYXNzZXJ0KHN0YXJ0VGltZSk7CisgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KHN0YXJ0VGltZSk7CiAKLSAgICB0aGlzLl9zdGFydFRpbWUgPSBzdGFydFRpbWU7Ci0g
ICAgdGhpcy5fdG90YWxUaW1lID0gdG90YWxUaW1lIHx8IDA7Ci0gICAgdGhpcy5fcGFyZW50Tm9k
ZSA9IG51bGw7Ci0gICAgdGhpcy5fcHJldmlvdXNTaWJsaW5nID0gbnVsbDsKLSAgICB0aGlzLl9u
ZXh0U2libGluZyA9IG51bGw7Ci19OwotCi1XZWJJbnNwZWN0b3IuUHJvZmlsZU5vZGVDYWxsLnBy
b3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlByb2ZpbGVOb2RlQ2Fs
bCwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlLAorICAgICAg
ICB0aGlzLl9zdGFydFRpbWUgPSBzdGFydFRpbWU7CisgICAgICAgIHRoaXMuX3RvdGFsVGltZSA9
IHRvdGFsVGltZSB8fCAwOworICAgICAgICB0aGlzLl9wYXJlbnROb2RlID0gbnVsbDsKKyAgICAg
ICAgdGhpcy5fcHJldmlvdXNTaWJsaW5nID0gbnVsbDsKKyAgICAgICAgdGhpcy5fbmV4dFNpYmxp
bmcgPSBudWxsOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IHN0YXJ0VGltZSgp
CiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc3RhcnRUaW1lOwotICAgIH0sCisgICAgfQog
CiAgICAgZ2V0IHRvdGFsVGltZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fdG90YWxU
aW1lOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGVuZFRpbWUoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHRoaXMuX3N0YXJ0VGltZSArIHRoaXMuX3RvdGFsVGltZTsKLSAgICB9LAorICAgIH0K
IAogICAgIC8vIFByb3RlY3RlZAogCi0gICAgZXN0YWJsaXNoUmVsYXRpb25zaGlwczogZnVuY3Rp
b24ocGFyZW50Tm9kZSwgcHJldmlvdXNTaWJsaW5nLCBuZXh0U2libGluZykKKyAgICBlc3RhYmxp
c2hSZWxhdGlvbnNoaXBzKHBhcmVudE5vZGUsIHByZXZpb3VzU2libGluZywgbmV4dFNpYmxpbmcp
CiAgICAgewogICAgICAgICB0aGlzLl9wYXJlbnROb2RlID0gcGFyZW50Tm9kZSB8fCBudWxsOwog
ICAgICAgICB0aGlzLl9wcmV2aW91c1NpYmxpbmcgPSBwcmV2aW91c1NpYmxpbmcgfHwgbnVsbDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Q
cm9wZXJ0eURlc2NyaXB0b3IuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Nb2RlbHMvUHJvcGVydHlEZXNjcmlwdG9yLmpzCmluZGV4IDY0MTE4NzEuLmRmZmQ1OWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Qcm9w
ZXJ0eURlc2NyaXB0b3IuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvTW9kZWxzL1Byb3BlcnR5RGVzY3JpcHRvci5qcwpAQCAtMjMsMTI5ICsyMywxMjkgQEAKICAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuUHJv
cGVydHlEZXNjcmlwdG9yID0gZnVuY3Rpb24oZGVzY3JpcHRvciwgaXNPd25Qcm9wZXJ0eSwgd2Fz
VGhyb3duLCBuYXRpdmVHZXR0ZXIsIGlzSW50ZXJuYWxQcm9wZXJ0eSkKK1dlYkluc3BlY3Rvci5Q
cm9wZXJ0eURlc2NyaXB0b3IgPSBjbGFzcyBQcm9wZXJ0eURlc2NyaXB0b3IgZXh0ZW5kcyBXZWJJ
bnNwZWN0b3IuT2JqZWN0CiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwot
Ci0gICAgY29uc29sZS5hc3NlcnQoZGVzY3JpcHRvcik7Ci0gICAgY29uc29sZS5hc3NlcnQoZGVz
Y3JpcHRvci5uYW1lKTsKLSAgICBjb25zb2xlLmFzc2VydCghZGVzY3JpcHRvci52YWx1ZSB8fCBk
ZXNjcmlwdG9yLnZhbHVlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdCk7Ci0g
ICAgY29uc29sZS5hc3NlcnQoIWRlc2NyaXB0b3IuZ2V0IHx8IGRlc2NyaXB0b3IuZ2V0IGluc3Rh
bmNlb2YgV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdCk7Ci0gICAgY29uc29sZS5hc3NlcnQoIWRl
c2NyaXB0b3Iuc2V0IHx8IGRlc2NyaXB0b3Iuc2V0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJl
bW90ZU9iamVjdCk7Ci0KLSAgICB0aGlzLl9uYW1lID0gZGVzY3JpcHRvci5uYW1lOwotICAgIHRo
aXMuX3ZhbHVlID0gZGVzY3JpcHRvci52YWx1ZTsKLSAgICB0aGlzLl9oYXNWYWx1ZSA9ICJ2YWx1
ZSIgaW4gZGVzY3JpcHRvcjsKLSAgICB0aGlzLl9nZXQgPSBkZXNjcmlwdG9yLmdldDsKLSAgICB0
aGlzLl9zZXQgPSBkZXNjcmlwdG9yLnNldDsKLQotICAgIHRoaXMuX3dyaXRhYmxlID0gZGVzY3Jp
cHRvci53cml0YWJsZSB8fCBmYWxzZTsKLSAgICB0aGlzLl9jb25maWd1cmFibGUgPSBkZXNjcmlw
dG9yLmNvbmZpZ3VyYWJsZSB8fCBmYWxzZTsKLSAgICB0aGlzLl9lbnVtZXJhYmxlID0gZGVzY3Jp
cHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOwotCi0gICAgdGhpcy5fb3duID0gaXNPd25Qcm9wZXJ0
eSB8fCBmYWxzZTsKLSAgICB0aGlzLl93YXNUaHJvd24gPSB3YXNUaHJvd24gfHwgZmFsc2U7Ci0g
ICAgdGhpcy5fbmF0aXZlR2V0dGVyVmFsdWUgPSBuYXRpdmVHZXR0ZXIgfHwgZmFsc2U7Ci0gICAg
dGhpcy5faW50ZXJuYWwgPSBpc0ludGVybmFsUHJvcGVydHkgfHwgZmFsc2U7Ci19OwotCi0vLyBS
dW50aW1lLlByb3BlcnR5RGVzY3JpcHRvciBvciBSdW50aW1lLkludGVybmFsUHJvcGVydHlEZXNj
cmlwdG9yIChzZWNvbmQgYXJndW1lbnQpLgotV2ViSW5zcGVjdG9yLlByb3BlcnR5RGVzY3JpcHRv
ci5mcm9tUGF5bG9hZCA9IGZ1bmN0aW9uKHBheWxvYWQsIGludGVybmFsKQotewotICAgIGlmIChw
YXlsb2FkLnZhbHVlKQotICAgICAgICBwYXlsb2FkLnZhbHVlID0gV2ViSW5zcGVjdG9yLlJlbW90
ZU9iamVjdC5mcm9tUGF5bG9hZChwYXlsb2FkLnZhbHVlKTsKLSAgICBpZiAocGF5bG9hZC5nZXQp
Ci0gICAgICAgIHBheWxvYWQuZ2V0ID0gV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC5mcm9tUGF5
bG9hZChwYXlsb2FkLmdldCk7Ci0gICAgaWYgKHBheWxvYWQuc2V0KQotICAgICAgICBwYXlsb2Fk
LnNldCA9IFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QuZnJvbVBheWxvYWQocGF5bG9hZC5zZXQp
OwotCi0gICAgaWYgKGludGVybmFsKSB7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHBheWxvYWQu
dmFsdWUpOwotICAgICAgICBwYXlsb2FkLndyaXRhYmxlID0gcGF5bG9hZC5jb25maWd1cmFibGUg
PSBwYXlsb2FkLmVudW1lcmFibGUgPSBmYWxzZTsKLSAgICAgICAgcGF5bG9hZC5pc093biA9IHRy
dWU7CisgICAgY29uc3RydWN0b3IoZGVzY3JpcHRvciwgaXNPd25Qcm9wZXJ0eSwgd2FzVGhyb3du
LCBuYXRpdmVHZXR0ZXIsIGlzSW50ZXJuYWxQcm9wZXJ0eSkKKyAgICB7CisgICAgICAgIHN1cGVy
KCk7CisKKyAgICAgICAgY29uc29sZS5hc3NlcnQoZGVzY3JpcHRvcik7CisgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KGRlc2NyaXB0b3IubmFtZSk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFkZXNj
cmlwdG9yLnZhbHVlIHx8IGRlc2NyaXB0b3IudmFsdWUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3Iu
UmVtb3RlT2JqZWN0KTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoIWRlc2NyaXB0b3IuZ2V0IHx8
IGRlc2NyaXB0b3IuZ2V0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdCk7Cisg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFkZXNjcmlwdG9yLnNldCB8fCBkZXNjcmlwdG9yLnNldCBp
bnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QpOworCisgICAgICAgIHRoaXMuX25h
bWUgPSBkZXNjcmlwdG9yLm5hbWU7CisgICAgICAgIHRoaXMuX3ZhbHVlID0gZGVzY3JpcHRvci52
YWx1ZTsKKyAgICAgICAgdGhpcy5faGFzVmFsdWUgPSAidmFsdWUiIGluIGRlc2NyaXB0b3I7Cisg
ICAgICAgIHRoaXMuX2dldCA9IGRlc2NyaXB0b3IuZ2V0OworICAgICAgICB0aGlzLl9zZXQgPSBk
ZXNjcmlwdG9yLnNldDsKKworICAgICAgICB0aGlzLl93cml0YWJsZSA9IGRlc2NyaXB0b3Iud3Jp
dGFibGUgfHwgZmFsc2U7CisgICAgICAgIHRoaXMuX2NvbmZpZ3VyYWJsZSA9IGRlc2NyaXB0b3Iu
Y29uZmlndXJhYmxlIHx8IGZhbHNlOworICAgICAgICB0aGlzLl9lbnVtZXJhYmxlID0gZGVzY3Jp
cHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOworCisgICAgICAgIHRoaXMuX293biA9IGlzT3duUHJv
cGVydHkgfHwgZmFsc2U7CisgICAgICAgIHRoaXMuX3dhc1Rocm93biA9IHdhc1Rocm93biB8fCBm
YWxzZTsKKyAgICAgICAgdGhpcy5fbmF0aXZlR2V0dGVyVmFsdWUgPSBuYXRpdmVHZXR0ZXIgfHwg
ZmFsc2U7CisgICAgICAgIHRoaXMuX2ludGVybmFsID0gaXNJbnRlcm5hbFByb3BlcnR5IHx8IGZh
bHNlOwogICAgIH0KIAotICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlByb3BlcnR5RGVzY3Jp
cHRvcihwYXlsb2FkLCBwYXlsb2FkLmlzT3duLCBwYXlsb2FkLndhc1Rocm93biwgcGF5bG9hZC5u
YXRpdmVHZXR0ZXIsIGludGVybmFsKTsKLX07Ci0KLVdlYkluc3BlY3Rvci5Qcm9wZXJ0eURlc2Ny
aXB0b3IucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuUHJvcGVy
dHlEZXNjcmlwdG9yLAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5
cGUsCisgICAgLy8gU3RhdGljCisKKyAgICAvLyBSdW50aW1lLlByb3BlcnR5RGVzY3JpcHRvciBv
ciBSdW50aW1lLkludGVybmFsUHJvcGVydHlEZXNjcmlwdG9yIChzZWNvbmQgYXJndW1lbnQpLgor
ICAgIHN0YXRpYyBmcm9tUGF5bG9hZChwYXlsb2FkLCBpbnRlcm5hbCkKKyAgICB7CisgICAgICAg
IGlmIChwYXlsb2FkLnZhbHVlKQorICAgICAgICAgICAgcGF5bG9hZC52YWx1ZSA9IFdlYkluc3Bl
Y3Rvci5SZW1vdGVPYmplY3QuZnJvbVBheWxvYWQocGF5bG9hZC52YWx1ZSk7CisgICAgICAgIGlm
IChwYXlsb2FkLmdldCkKKyAgICAgICAgICAgIHBheWxvYWQuZ2V0ID0gV2ViSW5zcGVjdG9yLlJl
bW90ZU9iamVjdC5mcm9tUGF5bG9hZChwYXlsb2FkLmdldCk7CisgICAgICAgIGlmIChwYXlsb2Fk
LnNldCkKKyAgICAgICAgICAgIHBheWxvYWQuc2V0ID0gV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVj
dC5mcm9tUGF5bG9hZChwYXlsb2FkLnNldCk7CisKKyAgICAgICAgaWYgKGludGVybmFsKSB7Cisg
ICAgICAgICAgICBjb25zb2xlLmFzc2VydChwYXlsb2FkLnZhbHVlKTsKKyAgICAgICAgICAgIHBh
eWxvYWQud3JpdGFibGUgPSBwYXlsb2FkLmNvbmZpZ3VyYWJsZSA9IHBheWxvYWQuZW51bWVyYWJs
ZSA9IGZhbHNlOworICAgICAgICAgICAgcGF5bG9hZC5pc093biA9IHRydWU7CisgICAgICAgIH0K
KworICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5Qcm9wZXJ0eURlc2NyaXB0b3IocGF5
bG9hZCwgcGF5bG9hZC5pc093biwgcGF5bG9hZC53YXNUaHJvd24sIHBheWxvYWQubmF0aXZlR2V0
dGVyLCBpbnRlcm5hbCk7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgbmFtZSgp
CiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fbmFtZTsKLSAgICB9LAorICAgIH0KIAogICAg
IGdldCB2YWx1ZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWU7Ci0gICAgfSwK
KyAgICB9CiAKICAgICBnZXQgZ2V0KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9nZXQ7
Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc2V0KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0
aGlzLl9zZXQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgd3JpdGFibGUoKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHRoaXMuX3dyaXRhYmxlOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGNv
bmZpZ3VyYWJsZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fY29uZmlndXJhYmxlOwot
ICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGVudW1lcmFibGUoKQogICAgIHsKICAgICAgICAgcmV0
dXJuIHRoaXMuX2VudW1lcmFibGU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgaXNPd25Qcm9w
ZXJ0eSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fb3duOwotICAgIH0sCisgICAgfQog
CiAgICAgZ2V0IHdhc1Rocm93bigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fd2FzVGhy
b3duOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IG5hdGl2ZUdldHRlcigpCiAgICAgewogICAg
ICAgICByZXR1cm4gdGhpcy5fbmF0aXZlR2V0dGVyVmFsdWU7Ci0gICAgfSwKKyAgICB9CiAKICAg
ICBnZXQgaXNJbnRlcm5hbFByb3BlcnR5KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9p
bnRlcm5hbDsKLSAgICB9LAorICAgIH0KIAogICAgIGhhc1ZhbHVlKCkKICAgICB7CiAgICAgICAg
IHJldHVybiB0aGlzLl9oYXNWYWx1ZTsKLSAgICB9LAorICAgIH0KIAogICAgIGhhc0dldHRlcigp
CiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZ2V0ICYmIHRoaXMuX2dldC50eXBlID09PSAi
ZnVuY3Rpb24iOwotICAgIH0sCisgICAgfQogCiAgICAgaGFzU2V0dGVyKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiB0aGlzLl9zZXQgJiYgdGhpcy5fc2V0LnR5cGUgPT09ICJmdW5jdGlvbiI7Ci0g
ICAgfSwKKyAgICB9CiAKICAgICBpc0luZGV4UHJvcGVydHkoKQogICAgIHsKICAgICAgICAgcmV0
dXJuICFpc05hTihOdW1iZXIodGhpcy5fbmFtZSkpOwotICAgIH0sCisgICAgfQogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Qcm9wZXJ0
eVBhdGguanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUHJv
cGVydHlQYXRoLmpzCmluZGV4IDA2OTE5ZjcuLmUwOTBkYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Qcm9wZXJ0eVBhdGguanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Byb3BlcnR5UGF0aC5q
cwpAQCAtMjMsNzEgKzIzLDU2IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAgKi8KIAotV2ViSW5zcGVjdG9yLlByb3BlcnR5UGF0aCA9IGZ1bmN0aW9uKG9iamVjdCwgcGF0
aENvbXBvbmVudCwgcGFyZW50LCBpc1Byb3RvdHlwZSkKK1dlYkluc3BlY3Rvci5Qcm9wZXJ0eVBh
dGggPSBjbGFzcyBQcm9wZXJ0eVBhdGggZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0g
ICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIGNvbnN0cnVjdG9yKG9iamVj
dCwgcGF0aENvbXBvbmVudCwgcGFyZW50LCBpc1Byb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHN1
cGVyKCk7CiAKLSAgICBjb25zb2xlLmFzc2VydChvYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0
b3IuUmVtb3RlT2JqZWN0IHx8IG9iamVjdCA9PT0gbnVsbCk7Ci0gICAgY29uc29sZS5hc3NlcnQo
IXBhdGhDb21wb25lbnQgfHwgdHlwZW9mIHBhdGhDb21wb25lbnQgPT09ICJzdHJpbmciKTsKLSAg
ICBjb25zb2xlLmFzc2VydCghcGFyZW50IHx8IHBhcmVudCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rv
ci5Qcm9wZXJ0eVBhdGgpOwotICAgIGNvbnNvbGUuYXNzZXJ0KCFwYXJlbnQgfHwgcGF0aENvbXBv
bmVudC5sZW5ndGgpOworICAgICAgICBjb25zb2xlLmFzc2VydChvYmplY3QgaW5zdGFuY2VvZiBX
ZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0IHx8IG9iamVjdCA9PT0gbnVsbCk7CisgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KCFwYXRoQ29tcG9uZW50IHx8IHR5cGVvZiBwYXRoQ29tcG9uZW50ID09PSAi
c3RyaW5nIik7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFwYXJlbnQgfHwgcGFyZW50IGluc3Rh
bmNlb2YgV2ViSW5zcGVjdG9yLlByb3BlcnR5UGF0aCk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KCFwYXJlbnQgfHwgcGF0aENvbXBvbmVudC5sZW5ndGgpOwogCi0gICAgLy8gV2UgYWxsb3cgcHJv
cGVydHkgcGF0aGVzIHdpdGggbnVsbCBvYmplY3RzIGFzIGVuZC1jYXBzIG9ubHkuCi0gICAgLy8g
RGlzYWxsb3cgYXBwZW5kaW5nIHRvIGEgUHJvcGVydHlQYXRoIHdpdGggbnVsbCBvYmplY3RzLgot
ICAgIGlmIChwYXJlbnQgJiYgIXBhcmVudC5vYmplY3QpCi0gICAgICAgIHRocm93IG5ldyBFcnJv
cigiQXR0ZW1wdGVkIHRvIGFwcGVuZCB0byBhIFByb3BlcnR5UGF0aCB3aXRoIG51bGwgb2JqZWN0
LiIpOworICAgICAgICAvLyBXZSBhbGxvdyBwcm9wZXJ0eSBwYXRoZXMgd2l0aCBudWxsIG9iamVj
dHMgYXMgZW5kLWNhcHMgb25seS4KKyAgICAgICAgLy8gRGlzYWxsb3cgYXBwZW5kaW5nIHRvIGEg
UHJvcGVydHlQYXRoIHdpdGggbnVsbCBvYmplY3RzLgorICAgICAgICBpZiAocGFyZW50ICYmICFw
YXJlbnQub2JqZWN0KQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJBdHRlbXB0ZWQgdG8g
YXBwZW5kIHRvIGEgUHJvcGVydHlQYXRoIHdpdGggbnVsbCBvYmplY3QuIik7CiAKLSAgICB0aGlz
Ll9vYmplY3QgPSBvYmplY3Q7Ci0gICAgdGhpcy5fcGF0aENvbXBvbmVudCA9IHR5cGVvZiBwYXRo
Q29tcG9uZW50ID09PSAic3RyaW5nIiA/IHBhdGhDb21wb25lbnQgOiBudWxsOwotICAgIHRoaXMu
X3BhcmVudCA9IHBhcmVudCB8fCBudWxsOwotICAgIHRoaXMuX2lzUHJvdG90eXBlID0gaXNQcm90
b3R5cGUgfHwgZmFsc2U7Ci19OworICAgICAgICB0aGlzLl9vYmplY3QgPSBvYmplY3Q7CisgICAg
ICAgIHRoaXMuX3BhdGhDb21wb25lbnQgPSB0eXBlb2YgcGF0aENvbXBvbmVudCA9PT0gInN0cmlu
ZyIgPyBwYXRoQ29tcG9uZW50IDogbnVsbDsKKyAgICAgICAgdGhpcy5fcGFyZW50ID0gcGFyZW50
IHx8IG51bGw7CisgICAgICAgIHRoaXMuX2lzUHJvdG90eXBlID0gaXNQcm90b3R5cGUgfHwgZmFs
c2U7CisgICAgfQogCi1XZWJJbnNwZWN0b3IuUHJvcGVydHlQYXRoLlNwZWNpYWxQYXRoQ29tcG9u
ZW50ID0gewotICAgIEludGVybmFsUHJvcGVydHlOYW1lOiAiQGludGVybmFsIiwKLSAgICBTeW1i
b2xQcm9wZXJ0eU5hbWU6ICJAc3ltYm9sIiwKLSAgICBNYXBLZXk6ICJAbWFwa2V5IiwKLSAgICBN
YXBWYWx1ZTogIkBtYXB2YWx1ZSIsCi0gICAgU2V0SW5kZXg6ICJAc2V0aW5kZXgiLAotICAgIEVt
cHR5UGF0aENvbXBvbmVudEZvclNjb3BlOiAiIiwKLX07CisgICAgLy8gU3RhdGljCiAKLVdlYklu
c3BlY3Rvci5Qcm9wZXJ0eVBhdGguVHlwZSA9IHsKLSAgICBWYWx1ZTogInZhbHVlIiwKLSAgICBH
ZXR0ZXI6ICJnZXR0ZXIiLAotICAgIFNldHRlcjogInNldHRlciIsCi19OwotCi1XZWJJbnNwZWN0
b3IuUHJvcGVydHlQYXRoLmVtcHR5UHJvcGVydHlQYXRoRm9yU2NvcGUgPSBmdW5jdGlvbihvYmpl
Y3QpCi17Ci0gICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuUHJvcGVydHlQYXRoKG9iamVjdCwg
V2ViSW5zcGVjdG9yLlByb3BlcnR5UGF0aC5TcGVjaWFsUGF0aENvbXBvbmVudC5FbXB0eVBhdGhD
b21wb25lbnRGb3JTY29wZSk7Ci19Ci0KLVdlYkluc3BlY3Rvci5Qcm9wZXJ0eVBhdGgucHJvdG90
eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuUHJvcGVydHlQYXRoLAotICAg
IF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGUsCisgICAgc3RhdGljIGVt
cHR5UHJvcGVydHlQYXRoRm9yU2NvcGUob2JqZWN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5l
dyBXZWJJbnNwZWN0b3IuUHJvcGVydHlQYXRoKG9iamVjdCwgV2ViSW5zcGVjdG9yLlByb3BlcnR5
UGF0aC5TcGVjaWFsUGF0aENvbXBvbmVudC5FbXB0eVBhdGhDb21wb25lbnRGb3JTY29wZSk7Cisg
ICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgb2JqZWN0KCkKICAgICB7CiAgICAgICAg
IHJldHVybiB0aGlzLl9vYmplY3Q7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgcGFyZW50KCkK
ICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9wYXJlbnQ7Ci0gICAgfSwKKyAgICB9CiAKICAg
ICBnZXQgaXNQcm90b3R5cGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2lzUHJvdG90
eXBlOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHJvb3RPYmplY3QoKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHRoaXMuX3BhcmVudCA/IHRoaXMuX3BhcmVudC5yb290T2JqZWN0IDogdGhpcy5f
b2JqZWN0OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGxhc3ROb25Qcm90b3R5cGVPYmplY3Qo
KQogICAgIHsKQEAgLTEwNCwxMiArODksMTIgQEAgV2ViSW5zcGVjdG9yLlByb3BlcnR5UGF0aC5w
cm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gcC5vYmplY3Q7Ci0gICAg
fSwKKyAgICB9CiAKICAgICBnZXQgcGF0aENvbXBvbmVudCgpCiAgICAgewogICAgICAgICByZXR1
cm4gdGhpcy5fcGF0aENvbXBvbmVudDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBmdWxsUGF0
aCgpCiAgICAgewpAQCAtMTE4LDcgKzEwMyw3IEBAIFdlYkluc3BlY3Rvci5Qcm9wZXJ0eVBhdGgu
cHJvdG90eXBlID0gewogICAgICAgICAgICAgY29tcG9uZW50cy5wdXNoKHAucGF0aENvbXBvbmVu
dCk7CiAgICAgICAgIGNvbXBvbmVudHMucmV2ZXJzZSgpCiAgICAgICAgIHJldHVybiBjb21wb25l
bnRzLmpvaW4oIiIpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHJlZHVjZWRQYXRoKCkKICAg
ICB7CkBAIC0xNDIsMjcgKzEyNywyNyBAQCBXZWJJbnNwZWN0b3IuUHJvcGVydHlQYXRoLnByb3Rv
dHlwZSA9IHsKIAogICAgICAgICBjb21wb25lbnRzLnJldmVyc2UoKTsKICAgICAgICAgcmV0dXJu
IGNvbXBvbmVudHMuam9pbigiIik7ICAgICAgICAKLSAgICB9LAorICAgIH0KIAogICAgIGRpc3Bs
YXlQYXRoKHR5cGUpCiAgICAgewogICAgICAgICByZXR1cm4gdHlwZSA9PT0gV2ViSW5zcGVjdG9y
LlByb3BlcnR5UGF0aC5UeXBlLlZhbHVlID8gdGhpcy5yZWR1Y2VkUGF0aCA6IHRoaXMuZnVsbFBh
dGg7Ci0gICAgfSwKKyAgICB9CiAKICAgICBpc1Jvb3QoKQogICAgIHsKICAgICAgICAgcmV0dXJu
ICF0aGlzLl9wYXJlbnQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBpc1Njb3BlKCkKICAgICB7CiAg
ICAgICAgIHJldHVybiB0aGlzLl9wYXRoQ29tcG9uZW50ID09PSBXZWJJbnNwZWN0b3IuUHJvcGVy
dHlQYXRoLlNwZWNpYWxQYXRoQ29tcG9uZW50LkVtcHR5UGF0aENvbXBvbmVudEZvclNjb3BlOwot
ICAgIH0sCisgICAgfQogCiAgICAgaXNQYXRoQ29tcG9uZW50SW1wb3NzaWJsZSgpCiAgICAgewog
ICAgICAgICByZXR1cm4gdGhpcy5fcGF0aENvbXBvbmVudCAmJiB0aGlzLl9wYXRoQ29tcG9uZW50
LnN0YXJ0c1dpdGgoIkAiKTsKLSAgICB9LAorICAgIH0KIAogICAgIGlzRnVsbFBhdGhJbXBvc3Np
YmxlKCkKICAgICB7CkBAIC0xNzMsNyArMTU4LDcgQEAgV2ViSW5zcGVjdG9yLlByb3BlcnR5UGF0
aC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm4gdGhpcy5fcGFyZW50LmlzRnVsbFBh
dGhJbXBvc3NpYmxlKCk7CiAKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0sCisgICAgfQog
CiAgICAgYXBwZW5kUHJvcGVydHlOYW1lKG9iamVjdCwgcHJvcGVydHlOYW1lKQogICAgIHsKQEAg
LTE4NCw0MyArMTY5LDQzIEBAIFdlYkluc3BlY3Rvci5Qcm9wZXJ0eVBhdGgucHJvdG90eXBlID0g
ewogCiAgICAgICAgIHZhciBjb21wb25lbnQgPSB0aGlzLl9jYW5Qcm9wZXJ0eU5hbWVCZURvdEFj
Y2Vzcyhwcm9wZXJ0eU5hbWUpID8gIi4iICsgcHJvcGVydHlOYW1lIDogIlsiICsgZG91YmxlUXVv
dGVkU3RyaW5nKHByb3BlcnR5TmFtZSkgKyAiXSI7CiAgICAgICAgIHJldHVybiBuZXcgV2ViSW5z
cGVjdG9yLlByb3BlcnR5UGF0aChvYmplY3QsIGNvbXBvbmVudCwgdGhpcywgaXNQcm90b3R5cGUp
OwotICAgIH0sCisgICAgfQogCiAgICAgYXBwZW5kUHJvcGVydHlTeW1ib2wob2JqZWN0LCBzeW1i
b2xOYW1lKQogICAgIHsKICAgICAgICAgdmFyIGNvbXBvbmVudCA9IFdlYkluc3BlY3Rvci5Qcm9w
ZXJ0eVBhdGguU3BlY2lhbFBhdGhDb21wb25lbnQuU3ltYm9sUHJvcGVydHlOYW1lICsgKHN5bWJv
bE5hbWUubGVuZ3RoID8gIigiICsgc3ltYm9sTmFtZSArICIpIiA6ICIiKTsKICAgICAgICAgcmV0
dXJuIG5ldyBXZWJJbnNwZWN0b3IuUHJvcGVydHlQYXRoKG9iamVjdCwgY29tcG9uZW50LCB0aGlz
KTsKLSAgICB9LAorICAgIH0KIAogICAgIGFwcGVuZEludGVybmFsUHJvcGVydHlOYW1lKG9iamVj
dCwgcHJvcGVydHlOYW1lKQogICAgIHsKICAgICAgICAgdmFyIGNvbXBvbmVudCA9IFdlYkluc3Bl
Y3Rvci5Qcm9wZXJ0eVBhdGguU3BlY2lhbFBhdGhDb21wb25lbnQuSW50ZXJuYWxQcm9wZXJ0eU5h
bWUgKyAiWyIgKyBwcm9wZXJ0eU5hbWUgKyAiXSI7CiAgICAgICAgIHJldHVybiBuZXcgV2ViSW5z
cGVjdG9yLlByb3BlcnR5UGF0aChvYmplY3QsIGNvbXBvbmVudCwgdGhpcyk7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICBhcHBlbmRHZXR0ZXJQcm9wZXJ0eU5hbWUob2JqZWN0LCBwcm9wZXJ0eU5hbWUp
CiAgICAgewogICAgICAgICB2YXIgY29tcG9uZW50ID0gIi5fX2xvb2t1cEdldHRlcl9fKCIgKyBk
b3VibGVRdW90ZWRTdHJpbmcocHJvcGVydHlOYW1lKSArICIpIjsKICAgICAgICAgcmV0dXJuIG5l
dyBXZWJJbnNwZWN0b3IuUHJvcGVydHlQYXRoKG9iamVjdCwgY29tcG9uZW50LCB0aGlzKTsKLSAg
ICB9LAorICAgIH0KIAogICAgIGFwcGVuZFNldHRlclByb3BlcnR5TmFtZShvYmplY3QsIHByb3Bl
cnR5TmFtZSkKICAgICB7CiAgICAgICAgIHZhciBjb21wb25lbnQgPSAiLl9fbG9va3VwU2V0dGVy
X18oIiArIGRvdWJsZVF1b3RlZFN0cmluZyhwcm9wZXJ0eU5hbWUpICsgIikiOwogICAgICAgICBy
ZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5Qcm9wZXJ0eVBhdGgob2JqZWN0LCBjb21wb25lbnQsIHRo
aXMpOwotICAgIH0sCisgICAgfQogCiAgICAgYXBwZW5kQXJyYXlJbmRleChvYmplY3QsIGluZGV4
U3RyaW5nKQogICAgIHsKICAgICAgICAgdmFyIGNvbXBvbmVudCA9ICJbIiArIGluZGV4U3RyaW5n
ICsgIl0iOwogICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5Qcm9wZXJ0eVBhdGgob2Jq
ZWN0LCBjb21wb25lbnQsIHRoaXMpOwotICAgIH0sCisgICAgfQogCiAgICAgYXBwZW5kTWFwS2V5
KG9iamVjdCkKICAgICB7CiAgICAgICAgIHZhciBjb21wb25lbnQgPSBXZWJJbnNwZWN0b3IuUHJv
cGVydHlQYXRoLlNwZWNpYWxQYXRoQ29tcG9uZW50Lk1hcEtleTsKICAgICAgICAgcmV0dXJuIG5l
dyBXZWJJbnNwZWN0b3IuUHJvcGVydHlQYXRoKG9iamVjdCwgY29tcG9uZW50LCB0aGlzKTsKLSAg
ICB9LAorICAgIH0KIAogICAgIGFwcGVuZE1hcFZhbHVlKG9iamVjdCwga2V5T2JqZWN0KQogICAg
IHsKQEAgLTIzOCwxMyArMjIzLDEzIEBAIFdlYkluc3BlY3Rvci5Qcm9wZXJ0eVBhdGgucHJvdG90
eXBlID0gewogICAgICAgICAgICAgCiAgICAgICAgIHZhciBjb21wb25lbnQgPSBXZWJJbnNwZWN0
b3IuUHJvcGVydHlQYXRoLlNwZWNpYWxQYXRoQ29tcG9uZW50Lk1hcFZhbHVlOwogICAgICAgICBy
ZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5Qcm9wZXJ0eVBhdGgob2JqZWN0LCBjb21wb25lbnQsIHRo
aXMpOwotICAgIH0sCisgICAgfQogCiAgICAgYXBwZW5kU2V0SW5kZXgob2JqZWN0KQogICAgIHsK
ICAgICAgICAgdmFyIGNvbXBvbmVudCA9IFdlYkluc3BlY3Rvci5Qcm9wZXJ0eVBhdGguU3BlY2lh
bFBhdGhDb21wb25lbnQuU2V0SW5kZXg7CiAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9y
LlByb3BlcnR5UGF0aChvYmplY3QsIGNvbXBvbmVudCwgdGhpcyk7Ci0gICAgfSwKKyAgICB9CiAg
ICAgCiAgICAgYXBwZW5kUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgZGVzY3JpcHRvciwgdHlw
ZSkKICAgICB7CkBAIC0yNjQsNyArMjQ5LDcgQEAgV2ViSW5zcGVjdG9yLlByb3BlcnR5UGF0aC5w
cm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm4gdGhpcy5hcHBlbmRBcnJheUluZGV4KG9i
amVjdCwgZGVzY3JpcHRvci5uYW1lKTsKIAogICAgICAgICByZXR1cm4gdGhpcy5hcHBlbmRQcm9w
ZXJ0eU5hbWUob2JqZWN0LCBkZXNjcmlwdG9yLm5hbWUpCi0gICAgfSwKKyAgICB9CiAKICAgICAv
LyBQcml2YXRlCiAKQEAgLTI3MywzICsyNTgsMTggQEAgV2ViSW5zcGVjdG9yLlByb3BlcnR5UGF0
aC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiAvXig/IVswLTldKVx3KyQvLnRlc3QocHJv
cGVydHlOYW1lKTsKICAgICB9CiB9OworCitXZWJJbnNwZWN0b3IuUHJvcGVydHlQYXRoLlNwZWNp
YWxQYXRoQ29tcG9uZW50ID0geworICAgIEludGVybmFsUHJvcGVydHlOYW1lOiAiQGludGVybmFs
IiwKKyAgICBTeW1ib2xQcm9wZXJ0eU5hbWU6ICJAc3ltYm9sIiwKKyAgICBNYXBLZXk6ICJAbWFw
a2V5IiwKKyAgICBNYXBWYWx1ZTogIkBtYXB2YWx1ZSIsCisgICAgU2V0SW5kZXg6ICJAc2V0aW5k
ZXgiLAorICAgIEVtcHR5UGF0aENvbXBvbmVudEZvclNjb3BlOiAiIiwKK307CisKK1dlYkluc3Bl
Y3Rvci5Qcm9wZXJ0eVBhdGguVHlwZSA9IHsKKyAgICBWYWx1ZTogInZhbHVlIiwKKyAgICBHZXR0
ZXI6ICJnZXR0ZXIiLAorICAgIFNldHRlcjogInNldHRlciIsCit9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Byb3BlcnR5UHJldmlldy5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Qcm9wZXJ0eVBy
ZXZpZXcuanMKaW5kZXggMWY4MDRhZC4uMjliZmZhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Byb3BlcnR5UHJldmlldy5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUHJvcGVydHlQcmV2aWV3
LmpzCkBAIC0yMyw2MiArMjMsNjIgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCi1XZWJJbnNwZWN0b3IuUHJvcGVydHlQcmV2aWV3ID0gZnVuY3Rpb24obmFtZSwg
dHlwZSwgc3VidHlwZSwgdmFsdWUsIHZhbHVlUHJldmlldywgaXNJbnRlcm5hbFByb3BlcnR5KQor
V2ViSW5zcGVjdG9yLlByb3BlcnR5UHJldmlldyA9IGNsYXNzIFByb3BlcnR5UHJldmlldyBleHRl
bmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIHsKLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwo
dGhpcyk7CisgICAgY29uc3RydWN0b3IobmFtZSwgdHlwZSwgc3VidHlwZSwgdmFsdWUsIHZhbHVl
UHJldmlldywgaXNJbnRlcm5hbFByb3BlcnR5KQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKIAot
ICAgIGNvbnNvbGUuYXNzZXJ0KG5hbWUpOwotICAgIGNvbnNvbGUuYXNzZXJ0KHR5cGUpOwotICAg
IGNvbnNvbGUuYXNzZXJ0KCF2YWx1ZSB8fCB0eXBlb2YgdmFsdWUgPT09ICJzdHJpbmciKTsKLSAg
ICBjb25zb2xlLmFzc2VydCghdmFsdWVQcmV2aWV3IHx8IHZhbHVlUHJldmlldyBpbnN0YW5jZW9m
IFdlYkluc3BlY3Rvci5PYmplY3RQcmV2aWV3KTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQobmFt
ZSk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHR5cGUpOworICAgICAgICBjb25zb2xlLmFzc2Vy
dCghdmFsdWUgfHwgdHlwZW9mIHZhbHVlID09PSAic3RyaW5nIik7CisgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KCF2YWx1ZVByZXZpZXcgfHwgdmFsdWVQcmV2aWV3IGluc3RhbmNlb2YgV2ViSW5zcGVj
dG9yLk9iamVjdFByZXZpZXcpOwogCi0gICAgdGhpcy5fbmFtZSA9IG5hbWU7Ci0gICAgdGhpcy5f
dHlwZSA9IHR5cGU7Ci0gICAgdGhpcy5fc3VidHlwZSA9IHN1YnR5cGU7Ci0gICAgdGhpcy5fdmFs
dWUgPSB2YWx1ZTsKLSAgICB0aGlzLl92YWx1ZVByZXZpZXcgPSB2YWx1ZVByZXZpZXc7Ci0gICAg
dGhpcy5faW50ZXJuYWwgPSBpc0ludGVybmFsUHJvcGVydHk7Ci19OworICAgICAgICB0aGlzLl9u
YW1lID0gbmFtZTsKKyAgICAgICAgdGhpcy5fdHlwZSA9IHR5cGU7CisgICAgICAgIHRoaXMuX3N1
YnR5cGUgPSBzdWJ0eXBlOworICAgICAgICB0aGlzLl92YWx1ZSA9IHZhbHVlOworICAgICAgICB0
aGlzLl92YWx1ZVByZXZpZXcgPSB2YWx1ZVByZXZpZXc7CisgICAgICAgIHRoaXMuX2ludGVybmFs
ID0gaXNJbnRlcm5hbFByb3BlcnR5OworICAgIH0KIAotLy8gUnVudGltZS5Qcm9wZXJ0eVByZXZp
ZXcuCi1XZWJJbnNwZWN0b3IuUHJvcGVydHlQcmV2aWV3LmZyb21QYXlsb2FkID0gZnVuY3Rpb24o
cGF5bG9hZCkKLXsKLSAgICBpZiAocGF5bG9hZC52YWx1ZVByZXZpZXcpCi0gICAgICAgIHBheWxv
YWQudmFsdWVQcmV2aWV3ID0gV2ViSW5zcGVjdG9yLk9iamVjdFByZXZpZXcuZnJvbVBheWxvYWQo
cGF5bG9hZC52YWx1ZVByZXZpZXcpOworICAgIC8vIFN0YXRpYwogCi0gICAgcmV0dXJuIG5ldyBX
ZWJJbnNwZWN0b3IuUHJvcGVydHlQcmV2aWV3KHBheWxvYWQubmFtZSwgcGF5bG9hZC50eXBlLCBw
YXlsb2FkLnN1YnR5cGUsIHBheWxvYWQudmFsdWUsIHBheWxvYWQudmFsdWVQcmV2aWV3LCBwYXls
b2FkLmludGVybmFsKTsKLX07CisgICAgLy8gUnVudGltZS5Qcm9wZXJ0eVByZXZpZXcuCisgICAg
c3RhdGljIGZyb21QYXlsb2FkKHBheWxvYWQpCisgICAgeworICAgICAgICBpZiAocGF5bG9hZC52
YWx1ZVByZXZpZXcpCisgICAgICAgICAgICBwYXlsb2FkLnZhbHVlUHJldmlldyA9IFdlYkluc3Bl
Y3Rvci5PYmplY3RQcmV2aWV3LmZyb21QYXlsb2FkKHBheWxvYWQudmFsdWVQcmV2aWV3KTsKIAot
V2ViSW5zcGVjdG9yLlByb3BlcnR5UHJldmlldy5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0
b3I6IFdlYkluc3BlY3Rvci5Qcm9wZXJ0eVByZXZpZXcsCi0gICAgX19wcm90b19fOiBXZWJJbnNw
ZWN0b3IuT2JqZWN0LnByb3RvdHlwZSwKKyAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3Iu
UHJvcGVydHlQcmV2aWV3KHBheWxvYWQubmFtZSwgcGF5bG9hZC50eXBlLCBwYXlsb2FkLnN1YnR5
cGUsIHBheWxvYWQudmFsdWUsIHBheWxvYWQudmFsdWVQcmV2aWV3LCBwYXlsb2FkLmludGVybmFs
KTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBuYW1lKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiB0aGlzLl9uYW1lOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHR5cGUoKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3R5cGU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBn
ZXQgc3VidHlwZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc3VidHlwZTsKLSAgICB9
LAorICAgIH0KIAogICAgIGdldCB2YWx1ZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5f
dmFsdWU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgdmFsdWVQcmV2aWV3KCkKICAgICB7CiAg
ICAgICAgIHJldHVybiB0aGlzLl92YWx1ZVByZXZpZXc7Ci0gICAgfSwKKyAgICB9CiAKICAgICBn
ZXQgaW50ZXJuYWwoKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL01vZGVscy9SZXBsYXlEYXNoYm9hcmQuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUmVwbGF5RGFzaGJvYXJkLmpzCmluZGV4IDhkYjVj
MWIuLmIzNDlkOTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Nb2RlbHMvUmVwbGF5RGFzaGJvYXJkLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL01vZGVscy9SZXBsYXlEYXNoYm9hcmQuanMKQEAgLTIzLDExICsyMywx
MSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3Bl
Y3Rvci5SZXBsYXlEYXNoYm9hcmQgPSBmdW5jdGlvbigpIHsKLSAgICBXZWJJbnNwZWN0b3IuT2Jq
ZWN0LmNhbGwodGhpcyk7Ci19OwotCi1XZWJJbnNwZWN0b3IuUmVwbGF5RGFzaGJvYXJkLnByb3Rv
dHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlJlcGxheURhc2hib2FyZCwK
LSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlLAorV2ViSW5zcGVj
dG9yLlJlcGxheURhc2hib2FyZCA9IGNsYXNzIFJlcGxheURhc2hib2FyZCBleHRlbmRzIFdlYklu
c3BlY3Rvci5PYmplY3QKK3sKKyAgICBjb25zdHJ1Y3RvcigpCisgICAgeworICAgICAgICAvLyBG
SVhNRTogUmVtb3ZlIG9uY2UgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE0Mjg2Mj4gaXMgZml4ZWQu
CisgICAgICAgIHN1cGVyKCk7CisgICAgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9SZXBsYXlTZXNzaW9uLmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1JlcGxheVNlc3Npb24uanMKaW5kZXgg
OTJhNjI0Mi4uNDliY2ZkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvTW9kZWxzL1JlcGxheVNlc3Npb24uanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1JlcGxheVNlc3Npb24uanMKQEAgLTI1LDQzICsyNSw0
MyBAQAogICovCiAKIAotV2ViSW5zcGVjdG9yLlJlcGxheVNlc3Npb24gPSBmdW5jdGlvbihpZGVu
dGlmaWVyKQorV2ViSW5zcGVjdG9yLlJlcGxheVNlc3Npb24gPSBjbGFzcyBSZXBsYXlTZXNzaW9u
IGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3Qu
Y2FsbCh0aGlzKTsKKyAgICBjb25zdHJ1Y3RvcihpZGVudGlmaWVyKQorICAgIHsKKyAgICAgICAg
c3VwZXIoKTsKIAotICAgIHRoaXMuaWRlbnRpZmllciA9IGlkZW50aWZpZXI7Ci0gICAgdGhpcy5f
c2VnbWVudHMgPSBbXTsKLSAgICB0aGlzLl90aW1lc3RhbXAgPSBudWxsOwotfTsKKyAgICAgICAg
dGhpcy5pZGVudGlmaWVyID0gaWRlbnRpZmllcjsKKyAgICAgICAgdGhpcy5fc2VnbWVudHMgPSBb
XTsKKyAgICAgICAgdGhpcy5fdGltZXN0YW1wID0gbnVsbDsKKyAgICB9CiAKLVdlYkluc3BlY3Rv
ci5SZXBsYXlTZXNzaW9uLmZyb21QYXlsb2FkID0gZnVuY3Rpb24oaWRlbnRpZmllciwgcGF5bG9h
ZCkKLXsKLSAgICB2YXIgc2Vzc2lvbiA9IG5ldyBXZWJJbnNwZWN0b3IuUmVwbGF5U2Vzc2lvbihp
ZGVudGlmaWVyKTsKLSAgICBzZXNzaW9uLl91cGRhdGVGcm9tUGF5bG9hZChwYXlsb2FkKTsKLSAg
ICByZXR1cm4gc2Vzc2lvbjsKLX0KKyAgICAvLyBTdGF0aWMKIAotV2ViSW5zcGVjdG9yLlJlcGxh
eVNlc3Npb24uRXZlbnQgPSB7Ci0gICAgU2VnbWVudHNDaGFuZ2VkOiAicmVwbGF5LXNlc3Npb24t
c2VnbWVudHMtY2hhbmdlZCIsCi19OworICAgIHN0YXRpYyBmcm9tUGF5bG9hZChpZGVudGlmaWVy
LCBwYXlsb2FkKQorICAgIHsKKyAgICAgICAgdmFyIHNlc3Npb24gPSBuZXcgV2ViSW5zcGVjdG9y
LlJlcGxheVNlc3Npb24oaWRlbnRpZmllcik7CisgICAgICAgIHNlc3Npb24uX3VwZGF0ZUZyb21Q
YXlsb2FkKHBheWxvYWQpOworICAgICAgICByZXR1cm4gc2Vzc2lvbjsKKyAgICB9CiAKLVdlYklu
c3BlY3Rvci5SZXBsYXlTZXNzaW9uLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2Vi
SW5zcGVjdG9yLlJlcGxheVNlc3Npb24sCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuT2Jq
ZWN0LnByb3RvdHlwZSwKKyAgICAvLyBQdWJsaWMKIAogICAgIGdldCBzZWdtZW50cygpCiAgICAg
ewogICAgICAgICByZXR1cm4gdGhpcy5fc2VnbWVudHMuc2xpY2UoKTsKLSAgICB9LAorICAgIH0K
IAotICAgIHNlZ21lbnRzQ2hhbmdlZDogZnVuY3Rpb24oKQorICAgIHNlZ21lbnRzQ2hhbmdlZCgp
CiAgICAgewogICAgICAgICAvLyBUaGUgcmVwbGF5IG1hbmFnZXIgd29uJ3QgdXBkYXRlIHRoZSBz
ZXNzaW9uJ3MgbGlzdCBvZiBzZWdtZW50cyBub3IgY3JlYXRlIGEgbmV3IHNlc3Npb24uCiAgICAg
ICAgIFJlcGxheUFnZW50LmdldFNlc3Npb25EYXRhLnByb21pc2UodGhpcy5pZGVudGlmaWVyKQog
ICAgICAgICAgICAgLnRoZW4odGhpcy5fdXBkYXRlRnJvbVBheWxvYWQuYmluZCh0aGlzKSk7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBfdXBkYXRlRnJvbVBheWxvYWQ6IGZ1bmN0aW9uKHBheWxvYWQp
CisgICAgLy8gUHJpdmF0ZQorCisgICAgX3VwZGF0ZUZyb21QYXlsb2FkKHBheWxvYWQpCiAgICAg
ewogICAgICAgICB2YXIgc2Vzc2lvbiA9IHBheWxvYWQuc2Vzc2lvbjsKICAgICAgICAgY29uc29s
ZS5hc3NlcnQoc2Vzc2lvbi5pZCA9PT0gdGhpcy5pZGVudGlmaWVyKTsKQEAgLTg0LDMgKzg0LDcg
QEAgV2ViSW5zcGVjdG9yLlJlcGxheVNlc3Npb24ucHJvdG90eXBlID0gewogICAgICAgICApOwog
ICAgIH0KIH07CisKK1dlYkluc3BlY3Rvci5SZXBsYXlTZXNzaW9uLkV2ZW50ID0geworICAgIFNl
Z21lbnRzQ2hhbmdlZDogInJlcGxheS1zZXNzaW9uLXNlZ21lbnRzLWNoYW5nZWQiLAorfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9SZXBs
YXlTZXNzaW9uU2VnbWVudC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L01vZGVscy9SZXBsYXlTZXNzaW9uU2VnbWVudC5qcwppbmRleCBjMjVlYTAyLi41NjkwMjBlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUmVw
bGF5U2Vzc2lvblNlZ21lbnQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvTW9kZWxzL1JlcGxheVNlc3Npb25TZWdtZW50LmpzCkBAIC0yNSwxNyArMjUsMTcgQEAK
ICAqLwogCiAKLVdlYkluc3BlY3Rvci5JbmNvbXBsZXRlU2Vzc2lvblNlZ21lbnQgPSBmdW5jdGlv
bihpZGVudGlmaWVyKQorV2ViSW5zcGVjdG9yLkluY29tcGxldGVTZXNzaW9uU2VnbWVudCA9IGNs
YXNzIEluY29tcGxldGVTZXNzaW9uU2VnbWVudCBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QK
IHsKLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CisgICAgY29uc3RydWN0b3Io
aWRlbnRpZmllcikKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CiAKLSAgICB0aGlzLmlkZW50aWZp
ZXIgPSBpZGVudGlmaWVyOwotICAgIHRoaXMuX3RpbWVzdGFtcCA9IERhdGUubm93KCk7Ci19Owor
ICAgICAgICB0aGlzLmlkZW50aWZpZXIgPSBpZGVudGlmaWVyOworICAgICAgICB0aGlzLl90aW1l
c3RhbXAgPSBEYXRlLm5vdygpOworICAgIH0KIAotV2ViSW5zcGVjdG9yLkluY29tcGxldGVTZXNz
aW9uU2VnbWVudC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5J
bmNvbXBsZXRlU2Vzc2lvblNlZ21lbnQsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuT2Jq
ZWN0LnByb3RvdHlwZSwKKyAgICAvLyBQdWJsaWMKIAogICAgIGdldCBpc0NvbXBsZXRlKCkKICAg
ICB7CkBAIC00MywyMiArNDMsMjIgQEAgV2ViSW5zcGVjdG9yLkluY29tcGxldGVTZXNzaW9uU2Vn
bWVudC5wcm90b3R5cGUgPSB7CiAgICAgfQogfTsKIAotV2ViSW5zcGVjdG9yLlJlcGxheVNlc3Np
b25TZWdtZW50ID0gZnVuY3Rpb24oaWRlbnRpZmllciwgcGF5bG9hZCkKK1dlYkluc3BlY3Rvci5S
ZXBsYXlTZXNzaW9uU2VnbWVudCA9IGNsYXNzIFJlcGxheVNlc3Npb25TZWdtZW50IGV4dGVuZHMg
V2ViSW5zcGVjdG9yLk9iamVjdAogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlz
KTsKKyAgICBjb25zdHJ1Y3RvcihpZGVudGlmaWVyLCBwYXlsb2FkKQorICAgIHsKKyAgICAgICAg
c3VwZXIoKTsKIAotICAgIHZhciBzZWdtZW50ID0gcGF5bG9hZC5zZWdtZW50OwotICAgIGNvbnNv
bGUuYXNzZXJ0KGlkZW50aWZpZXIgPT09IHNlZ21lbnQuaWQpOworICAgICAgICB2YXIgc2VnbWVu
dCA9IHBheWxvYWQuc2VnbWVudDsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoaWRlbnRpZmllciA9
PT0gc2VnbWVudC5pZCk7CiAKLSAgICB0aGlzLmlkZW50aWZpZXIgPSBpZGVudGlmaWVyOwotICAg
IHRoaXMuX3RpbWVzdGFtcCA9IHNlZ21lbnQudGltZXN0YW1wOworICAgICAgICB0aGlzLmlkZW50
aWZpZXIgPSBpZGVudGlmaWVyOworICAgICAgICB0aGlzLl90aW1lc3RhbXAgPSBzZWdtZW50LnRp
bWVzdGFtcDsKIAotICAgIHRoaXMuX3F1ZXVlcyA9IHNlZ21lbnQucXVldWVzOwotfTsKKyAgICAg
ICAgdGhpcy5fcXVldWVzID0gc2VnbWVudC5xdWV1ZXM7CisgICAgfQogCi1XZWJJbnNwZWN0b3Iu
UmVwbGF5U2Vzc2lvblNlZ21lbnQucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJ
bnNwZWN0b3IuUmVwbGF5U2Vzc2lvblNlZ21lbnQsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0
b3IuT2JqZWN0LnByb3RvdHlwZSwKKyAgICAvLyBQdWJsaWMKIAogICAgIGdldCBpc0NvbXBsZXRl
KCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Nb2RlbHMvUmVzb3VyY2UuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Nb2RlbHMvUmVzb3VyY2UuanMKaW5kZXggMjE5ZjY0MC4uMzg4N2Y3MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Jlc291cmNlLmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9SZXNvdXJjZS5q
cwpAQCAtMjMsMjExICsyMywxMzggQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCi1XZWJJbnNwZWN0b3IuUmVzb3VyY2UgPSBmdW5jdGlvbih1cmwsIG1pbWVUeXBl
LCB0eXBlLCBsb2FkZXJJZGVudGlmaWVyLCByZXF1ZXN0SWRlbnRpZmllciwgcmVxdWVzdE1ldGhv
ZCwgcmVxdWVzdEhlYWRlcnMsIHJlcXVlc3REYXRhLCByZXF1ZXN0U2VudFRpbWVzdGFtcCwgaW5p
dGlhdG9yU291cmNlQ29kZUxvY2F0aW9uKQorV2ViSW5zcGVjdG9yLlJlc291cmNlID0gY2xhc3Mg
UmVzb3VyY2UgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuU291cmNlQ29kZQogewotICAgIFdlYkluc3Bl
Y3Rvci5Tb3VyY2VDb2RlLmNhbGwodGhpcyk7CisgICAgY29uc3RydWN0b3IodXJsLCBtaW1lVHlw
ZSwgdHlwZSwgbG9hZGVySWRlbnRpZmllciwgcmVxdWVzdElkZW50aWZpZXIsIHJlcXVlc3RNZXRo
b2QsIHJlcXVlc3RIZWFkZXJzLCByZXF1ZXN0RGF0YSwgcmVxdWVzdFNlbnRUaW1lc3RhbXAsIGlu
aXRpYXRvclNvdXJjZUNvZGVMb2NhdGlvbikKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CisKKyAg
ICAgICAgY29uc29sZS5hc3NlcnQodXJsKTsKKworICAgICAgICBpZiAodHlwZSBpbiBXZWJJbnNw
ZWN0b3IuUmVzb3VyY2UuVHlwZSkKKyAgICAgICAgICAgIHR5cGUgPSBXZWJJbnNwZWN0b3IuUmVz
b3VyY2UuVHlwZVt0eXBlXTsKKworICAgICAgICB0aGlzLl91cmwgPSB1cmw7CisgICAgICAgIHRo
aXMuX21pbWVUeXBlID0gbWltZVR5cGU7CisgICAgICAgIHRoaXMuX3R5cGUgPSB0eXBlIHx8IFdl
Ykluc3BlY3Rvci5SZXNvdXJjZS50eXBlRnJvbU1JTUVUeXBlKG1pbWVUeXBlKTsKKyAgICAgICAg
dGhpcy5fbG9hZGVySWRlbnRpZmllciA9IGxvYWRlcklkZW50aWZpZXIgfHwgbnVsbDsKKyAgICAg
ICAgdGhpcy5fcmVxdWVzdElkZW50aWZpZXIgPSByZXF1ZXN0SWRlbnRpZmllciB8fCBudWxsOwor
ICAgICAgICB0aGlzLl9yZXF1ZXN0TWV0aG9kID0gcmVxdWVzdE1ldGhvZCB8fCBudWxsOworICAg
ICAgICB0aGlzLl9yZXF1ZXN0RGF0YSA9IHJlcXVlc3REYXRhIHx8IG51bGw7CisgICAgICAgIHRo
aXMuX3JlcXVlc3RIZWFkZXJzID0gcmVxdWVzdEhlYWRlcnMgfHwge307CisgICAgICAgIHRoaXMu
X3Jlc3BvbnNlSGVhZGVycyA9IHt9OworICAgICAgICB0aGlzLl9wYXJlbnRGcmFtZSA9IG51bGw7
CisgICAgICAgIHRoaXMuX2luaXRpYXRvclNvdXJjZUNvZGVMb2NhdGlvbiA9IGluaXRpYXRvclNv
dXJjZUNvZGVMb2NhdGlvbiB8fCBudWxsOworICAgICAgICB0aGlzLl9yZXF1ZXN0U2VudFRpbWVz
dGFtcCA9IHJlcXVlc3RTZW50VGltZXN0YW1wIHx8IE5hTjsKKyAgICAgICAgdGhpcy5fcmVzcG9u
c2VSZWNlaXZlZFRpbWVzdGFtcCA9IE5hTjsKKyAgICAgICAgdGhpcy5fbGFzdFJlZGlyZWN0UmVj
ZWl2ZWRUaW1lc3RhbXAgPSBOYU47CisgICAgICAgIHRoaXMuX2xhc3REYXRhUmVjZWl2ZWRUaW1l
c3RhbXAgPSBOYU47CisgICAgICAgIHRoaXMuX2ZpbmlzaGVkT3JGYWlsZWRUaW1lc3RhbXAgPSBO
YU47CisgICAgICAgIHRoaXMuX3NpemUgPSBOYU47CisgICAgICAgIHRoaXMuX3RyYW5zZmVyU2l6
ZSA9IE5hTjsKKyAgICAgICAgdGhpcy5fY2FjaGVkID0gZmFsc2U7CisgICAgfQorCisgICAgLy8g
U3RhdGljCisKKyAgICBzdGF0aWMgdHlwZUZyb21NSU1FVHlwZShtaW1lVHlwZSkKKyAgICB7Cisg
ICAgICAgIGlmICghbWltZVR5cGUpCisgICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlJl
c291cmNlLlR5cGUuT3RoZXI7CisKKyAgICAgICAgbWltZVR5cGUgPSBwYXJzZU1JTUVUeXBlKG1p
bWVUeXBlKS50eXBlOworCisgICAgICAgIGlmIChtaW1lVHlwZSBpbiBXZWJJbnNwZWN0b3IuUmVz
b3VyY2UuX21pbWVUeXBlTWFwKQorICAgICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5SZXNv
dXJjZS5fbWltZVR5cGVNYXBbbWltZVR5cGVdOworCisgICAgICAgIGlmIChtaW1lVHlwZS5zdGFy
dHNXaXRoKCJpbWFnZS8iKSkKKyAgICAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2UuVHlwZS5JbWFnZTsKKworICAgICAgICBpZiAobWltZVR5cGUuc3RhcnRzV2l0aCgiZm9udC8i
KSkKKyAgICAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5Gb250Owog
Ci0gICAgY29uc29sZS5hc3NlcnQodXJsKTsKLQotICAgIGlmICh0eXBlIGluIFdlYkluc3BlY3Rv
ci5SZXNvdXJjZS5UeXBlKQotICAgICAgICB0eXBlID0gV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5
cGVbdHlwZV07Ci0KLSAgICB0aGlzLl91cmwgPSB1cmw7Ci0gICAgdGhpcy5fbWltZVR5cGUgPSBt
aW1lVHlwZTsKLSAgICB0aGlzLl90eXBlID0gdHlwZSB8fCBXZWJJbnNwZWN0b3IuUmVzb3VyY2Uu
dHlwZUZyb21NSU1FVHlwZShtaW1lVHlwZSk7Ci0gICAgdGhpcy5fbG9hZGVySWRlbnRpZmllciA9
IGxvYWRlcklkZW50aWZpZXIgfHwgbnVsbDsKLSAgICB0aGlzLl9yZXF1ZXN0SWRlbnRpZmllciA9
IHJlcXVlc3RJZGVudGlmaWVyIHx8IG51bGw7Ci0gICAgdGhpcy5fcmVxdWVzdE1ldGhvZCA9IHJl
cXVlc3RNZXRob2QgfHwgbnVsbDsKLSAgICB0aGlzLl9yZXF1ZXN0RGF0YSA9IHJlcXVlc3REYXRh
IHx8IG51bGw7Ci0gICAgdGhpcy5fcmVxdWVzdEhlYWRlcnMgPSByZXF1ZXN0SGVhZGVycyB8fCB7
fTsKLSAgICB0aGlzLl9yZXNwb25zZUhlYWRlcnMgPSB7fTsKLSAgICB0aGlzLl9wYXJlbnRGcmFt
ZSA9IG51bGw7Ci0gICAgdGhpcy5faW5pdGlhdG9yU291cmNlQ29kZUxvY2F0aW9uID0gaW5pdGlh
dG9yU291cmNlQ29kZUxvY2F0aW9uIHx8IG51bGw7Ci0gICAgdGhpcy5fcmVxdWVzdFNlbnRUaW1l
c3RhbXAgPSByZXF1ZXN0U2VudFRpbWVzdGFtcCB8fCBOYU47Ci0gICAgdGhpcy5fcmVzcG9uc2VS
ZWNlaXZlZFRpbWVzdGFtcCA9IE5hTjsKLSAgICB0aGlzLl9sYXN0UmVkaXJlY3RSZWNlaXZlZFRp
bWVzdGFtcCA9IE5hTjsKLSAgICB0aGlzLl9sYXN0RGF0YVJlY2VpdmVkVGltZXN0YW1wID0gTmFO
OwotICAgIHRoaXMuX2ZpbmlzaGVkT3JGYWlsZWRUaW1lc3RhbXAgPSBOYU47Ci0gICAgdGhpcy5f
c2l6ZSA9IE5hTjsKLSAgICB0aGlzLl90cmFuc2ZlclNpemUgPSBOYU47Ci0gICAgdGhpcy5fY2Fj
aGVkID0gZmFsc2U7Ci19OwotCi1XZWJJbnNwZWN0b3IuT2JqZWN0LmFkZENvbnN0cnVjdG9yRnVu
Y3Rpb25zKFdlYkluc3BlY3Rvci5SZXNvdXJjZSk7Ci0KLVdlYkluc3BlY3Rvci5SZXNvdXJjZS5U
eXBlSWRlbnRpZmllciA9ICJyZXNvdXJjZSI7Ci1XZWJJbnNwZWN0b3IuUmVzb3VyY2UuVVJMQ29v
a2llS2V5ID0gInJlc291cmNlLXVybCI7Ci1XZWJJbnNwZWN0b3IuUmVzb3VyY2UuTWFpblJlc291
cmNlQ29va2llS2V5ID0gInJlc291cmNlLWlzLW1haW4tcmVzb3VyY2UiOwotCi1XZWJJbnNwZWN0
b3IuUmVzb3VyY2UuRXZlbnQgPSB7Ci0gICAgVVJMRGlkQ2hhbmdlOiAicmVzb3VyY2UtdXJsLWRp
ZC1jaGFuZ2UiLAotICAgIE1JTUVUeXBlRGlkQ2hhbmdlOiAicmVzb3VyY2UtbWltZS10eXBlLWRp
ZC1jaGFuZ2UiLAotICAgIFR5cGVEaWRDaGFuZ2U6ICJyZXNvdXJjZS10eXBlLWRpZC1jaGFuZ2Ui
LAotICAgIFJlcXVlc3RIZWFkZXJzRGlkQ2hhbmdlOiAicmVzb3VyY2UtcmVxdWVzdC1oZWFkZXJz
LWRpZC1jaGFuZ2UiLAotICAgIFJlc3BvbnNlUmVjZWl2ZWQ6ICJyZXNvdXJjZS1yZXNwb25zZS1y
ZWNlaXZlZCIsCi0gICAgTG9hZGluZ0RpZEZpbmlzaDogInJlc291cmNlLWxvYWRpbmctZGlkLWZp
bmlzaCIsCi0gICAgTG9hZGluZ0RpZEZhaWw6ICJyZXNvdXJjZS1sb2FkaW5nLWRpZC1mYWlsIiwK
LSAgICBUaW1lc3RhbXBzRGlkQ2hhbmdlOiAicmVzb3VyY2UtdGltZXN0YW1wcy1kaWQtY2hhbmdl
IiwKLSAgICBTaXplRGlkQ2hhbmdlOiAicmVzb3VyY2Utc2l6ZS1kaWQtY2hhbmdlIiwKLSAgICBU
cmFuc2ZlclNpemVEaWRDaGFuZ2U6ICJyZXNvdXJjZS10cmFuc2Zlci1zaXplLWRpZC1jaGFuZ2Ui
LAotICAgIENhY2hlU3RhdHVzRGlkQ2hhbmdlOiAicmVzb3VyY2UtY2FjaGVkLWRpZC1jaGFuZ2Ui
Ci19OwotCi0vLyBLZWVwIHRoZXNlIGluIHN5bmMgd2l0aCB0aGUgIlJlc291cmNlVHlwZSIgZW51
bSBkZWZpbmVkIGJ5IHRoZSAiUGFnZSIgZG9tYWluLgotV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5
cGUgPSB7Ci0gICAgRG9jdW1lbnQ6ICJyZXNvdXJjZS10eXBlLWRvY3VtZW50IiwKLSAgICBTdHls
ZXNoZWV0OiAicmVzb3VyY2UtdHlwZS1zdHlsZXNoZWV0IiwKLSAgICBJbWFnZTogInJlc291cmNl
LXR5cGUtaW1hZ2UiLAotICAgIEZvbnQ6ICJyZXNvdXJjZS10eXBlLWZvbnQiLAotICAgIFNjcmlw
dDogInJlc291cmNlLXR5cGUtc2NyaXB0IiwKLSAgICBYSFI6ICJyZXNvdXJjZS10eXBlLXhociIs
Ci0gICAgV2ViU29ja2V0OiAicmVzb3VyY2UtdHlwZS13ZWJzb2NrZXQiLAotICAgIE90aGVyOiAi
cmVzb3VyY2UtdHlwZS1vdGhlciIKLX07Ci0KLS8vIFRoaXMgTUlNRSBUeXBlIG1hcCBpcyBwcml2
YXRlLCB1c2UgV2ViSW5zcGVjdG9yLlJlc291cmNlLnR5cGVGcm9tTUlNRVR5cGUoKS4KLVdlYklu
c3BlY3Rvci5SZXNvdXJjZS5fbWltZVR5cGVNYXAgPSB7Ci0gICAgInRleHQvaHRtbCI6IFdlYklu
c3BlY3Rvci5SZXNvdXJjZS5UeXBlLkRvY3VtZW50LAotICAgICJ0ZXh0L3htbCI6IFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZS5UeXBlLkRvY3VtZW50LAotICAgICJ0ZXh0L3BsYWluIjogV2ViSW5zcGVj
dG9yLlJlc291cmNlLlR5cGUuRG9jdW1lbnQsCi0gICAgImFwcGxpY2F0aW9uL3hodG1sK3htbCI6
IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLkRvY3VtZW50LAotICAgICJpbWFnZS9zdmcreG1s
IjogV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuRG9jdW1lbnQsCi0KLSAgICAidGV4dC9jc3Mi
OiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5TdHlsZXNoZWV0LAotICAgICJ0ZXh0L3hzbCI6
IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLlN0eWxlc2hlZXQsCi0gICAgInRleHQveC1sZXNz
IjogV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuU3R5bGVzaGVldCwKLSAgICAidGV4dC94LXNh
c3MiOiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5TdHlsZXNoZWV0LAotICAgICJ0ZXh0L3gt
c2NzcyI6IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLlN0eWxlc2hlZXQsCi0KLSAgICAiYXBw
bGljYXRpb24vcGRmIjogV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuSW1hZ2UsCi0KLSAgICAi
YXBwbGljYXRpb24veC1mb250LXR5cGUxIjogV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuRm9u
dCwKLSAgICAiYXBwbGljYXRpb24veC1mb250LXR0ZiI6IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5U
eXBlLkZvbnQsCi0gICAgImFwcGxpY2F0aW9uL3gtZm9udC13b2ZmIjogV2ViSW5zcGVjdG9yLlJl
c291cmNlLlR5cGUuRm9udCwKLSAgICAiYXBwbGljYXRpb24veC10cnVldHlwZS1mb250IjogV2Vi
SW5zcGVjdG9yLlJlc291cmNlLlR5cGUuRm9udCwKLQotICAgICJ0ZXh0L2phdmFzY3JpcHQiOiBX
ZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5TY3JpcHQsCi0gICAgInRleHQvZWNtYXNjcmlwdCI6
IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLlNjcmlwdCwKLSAgICAiYXBwbGljYXRpb24vamF2
YXNjcmlwdCI6IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLlNjcmlwdCwKLSAgICAiYXBwbGlj
YXRpb24vZWNtYXNjcmlwdCI6IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLlNjcmlwdCwKLSAg
ICAiYXBwbGljYXRpb24veC1qYXZhc2NyaXB0IjogV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUu
U2NyaXB0LAotICAgICJhcHBsaWNhdGlvbi9qc29uIjogV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5
cGUuU2NyaXB0LAotICAgICJhcHBsaWNhdGlvbi94LWpzb24iOiBXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2UuVHlwZS5TY3JpcHQsCi0gICAgInRleHQveC1qYXZhc2NyaXB0IjogV2ViSW5zcGVjdG9yLlJl
c291cmNlLlR5cGUuU2NyaXB0LAotICAgICJ0ZXh0L3gtanNvbiI6IFdlYkluc3BlY3Rvci5SZXNv
dXJjZS5UeXBlLlNjcmlwdCwKLSAgICAidGV4dC9qYXZhc2NyaXB0MS4xIjogV2ViSW5zcGVjdG9y
LlJlc291cmNlLlR5cGUuU2NyaXB0LAotICAgICJ0ZXh0L2phdmFzY3JpcHQxLjIiOiBXZWJJbnNw
ZWN0b3IuUmVzb3VyY2UuVHlwZS5TY3JpcHQsCi0gICAgInRleHQvamF2YXNjcmlwdDEuMyI6IFdl
Ykluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLlNjcmlwdCwKLSAgICAidGV4dC9qc2NyaXB0IjogV2Vi
SW5zcGVjdG9yLlJlc291cmNlLlR5cGUuU2NyaXB0LAotICAgICJ0ZXh0L2xpdmVzY3JpcHQiOiBX
ZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5TY3JpcHQsCi0gICAgInRleHQveC1saXZlc2NyaXB0
IjogV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuU2NyaXB0LAotICAgICJ0ZXh0L3R5cGVzY3Jp
cHQiOiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5TY3JpcHQsCi0gICAgInRleHQveC1jbG9q
dXJlIjogV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuU2NyaXB0LAotICAgICJ0ZXh0L3gtY29m
ZmVlc2NyaXB0IjogV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuU2NyaXB0Ci19OwotCi1XZWJJ
bnNwZWN0b3IuUmVzb3VyY2UudHlwZUZyb21NSU1FVHlwZSA9IGZ1bmN0aW9uKG1pbWVUeXBlKQot
ewotICAgIGlmICghbWltZVR5cGUpCiAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2UuVHlwZS5PdGhlcjsKLQotICAgIG1pbWVUeXBlID0gcGFyc2VNSU1FVHlwZShtaW1lVHlwZSku
dHlwZTsKLQotICAgIGlmIChtaW1lVHlwZSBpbiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuX21pbWVU
eXBlTWFwKQotICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlJlc291cmNlLl9taW1lVHlwZU1h
cFttaW1lVHlwZV07Ci0KLSAgICBpZiAobWltZVR5cGUuc3RhcnRzV2l0aCgiaW1hZ2UvIikpCi0g
ICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5JbWFnZTsKLQotICAgIGlm
IChtaW1lVHlwZS5zdGFydHNXaXRoKCJmb250LyIpKQotICAgICAgICByZXR1cm4gV2ViSW5zcGVj
dG9yLlJlc291cmNlLlR5cGUuRm9udDsKLQotICAgIHJldHVybiBXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2UuVHlwZS5PdGhlcjsKLX07Ci0KLVdlYkluc3BlY3Rvci5SZXNvdXJjZS5kaXNwbGF5TmFtZUZv
clR5cGUgPSBmdW5jdGlvbih0eXBlLCBwbHVyYWwpCi17Ci0gICAgc3dpdGNoKHR5cGUpIHsKLSAg
ICBjYXNlIFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLkRvY3VtZW50OgotICAgICAgICBpZiAo
cGx1cmFsKQotICAgICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5VSVN0cmluZygiRG9jdW1l
bnRzIik7Ci0gICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRvY3VtZW50Iik7
Ci0gICAgY2FzZSBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5TdHlsZXNoZWV0OgotICAgICAg
ICBpZiAocGx1cmFsKQotICAgICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5VSVN0cmluZygi
U3R5bGVzaGVldHMiKTsKLSAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5VSVN0cmluZygiU3R5
bGVzaGVldCIpOwotICAgIGNhc2UgV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuSW1hZ2U6Ci0g
ICAgICAgIGlmIChwbHVyYWwpCi0gICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJJbWFnZXMiKTsKLSAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5VSVN0cmluZygiSW1h
Z2UiKTsKLSAgICBjYXNlIFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLkZvbnQ6Ci0gICAgICAg
IGlmIChwbHVyYWwpCi0gICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJG
b250cyIpOwotICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJGb250Iik7Ci0g
ICAgY2FzZSBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5TY3JpcHQ6Ci0gICAgICAgIGlmIChw
bHVyYWwpCi0gICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTY3JpcHRz
Iik7Ci0gICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNjcmlwdCIpOwotICAg
IGNhc2UgV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuWEhSOgotICAgICAgICBpZiAocGx1cmFs
KQotICAgICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5VSVN0cmluZygiWEhScyIpOwotICAg
ICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJYSFIiKTsKLSAgICBjYXNlIFdlYklu
c3BlY3Rvci5SZXNvdXJjZS5UeXBlLldlYlNvY2tldDoKLSAgICAgICAgaWYgKHBsdXJhbCkKLSAg
ICAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNvY2tldHMiKTsKLSAgICAg
ICAgcmV0dXJuIFdlYkluc3BlY3Rvci5VSVN0cmluZygiU29ja2V0Iik7Ci0gICAgY2FzZSBXZWJJ
bnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5PdGhlcjoKLSAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiT3RoZXIiKTsKLSAgICBkZWZhdWx0OgotICAgICAgICBjb25zb2xlLmVycm9y
KCJVbmtub3duIHJlc291cmNlIHR5cGU6ICIsIHR5cGUpOwotICAgICAgICByZXR1cm4gbnVsbDsK
ICAgICB9Ci19OwogCi1XZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlID0gewotICAgIGNv
bnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UsCi0gICAgX19wcm90b19fOiBXZWJJbnNw
ZWN0b3IuU291cmNlQ29kZS5wcm90b3R5cGUsCisgICAgc3RhdGljIGRpc3BsYXlOYW1lRm9yVHlw
ZSh0eXBlLCBwbHVyYWwpCisgICAgeworICAgICAgICBzd2l0Y2godHlwZSkgeworICAgICAgICBj
YXNlIFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLkRvY3VtZW50OgorICAgICAgICAgICAgaWYg
KHBsdXJhbCkKKyAgICAgICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJE
b2N1bWVudHMiKTsKKyAgICAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRv
Y3VtZW50Iik7CisgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuU3R5bGVz
aGVldDoKKyAgICAgICAgICAgIGlmIChwbHVyYWwpCisgICAgICAgICAgICAgICAgcmV0dXJuIFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiU3R5bGVzaGVldHMiKTsKKyAgICAgICAgICAgIHJldHVybiBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0eWxlc2hlZXQiKTsKKyAgICAgICAgY2FzZSBXZWJJbnNw
ZWN0b3IuUmVzb3VyY2UuVHlwZS5JbWFnZToKKyAgICAgICAgICAgIGlmIChwbHVyYWwpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5VSVN0cmluZygiSW1hZ2VzIik7CisgICAg
ICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJJbWFnZSIpOworICAgICAgICBj
YXNlIFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLkZvbnQ6CisgICAgICAgICAgICBpZiAocGx1
cmFsKQorICAgICAgICAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZvbnRz
Iik7CisgICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJGb250Iik7Cisg
ICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuU2NyaXB0OgorICAgICAgICAg
ICAgaWYgKHBsdXJhbCkKKyAgICAgICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJTY3JpcHRzIik7CisgICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJTY3JpcHQiKTsKKyAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5YSFI6
CisgICAgICAgICAgICBpZiAocGx1cmFsKQorICAgICAgICAgICAgICAgIHJldHVybiBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIlhIUnMiKTsKKyAgICAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIlhIUiIpOworICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBl
LldlYlNvY2tldDoKKyAgICAgICAgICAgIGlmIChwbHVyYWwpCisgICAgICAgICAgICAgICAgcmV0
dXJuIFdlYkluc3BlY3Rvci5VSVN0cmluZygiU29ja2V0cyIpOworICAgICAgICAgICAgcmV0dXJu
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU29ja2V0Iik7CisgICAgICAgIGNhc2UgV2ViSW5zcGVj
dG9yLlJlc291cmNlLlR5cGUuT3RoZXI6CisgICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJPdGhlciIpOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgY29uc29s
ZS5lcnJvcigiVW5rbm93biByZXNvdXJjZSB0eXBlOiAiLCB0eXBlKTsKKyAgICAgICAgICAgIHJl
dHVybiBudWxsOworICAgICAgICB9CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQg
dXJsKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl91cmw7Ci0gICAgfSwKKyAgICB9CiAK
ICAgICBnZXQgdXJsQ29tcG9uZW50cygpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX3VybENv
bXBvbmVudHMpCiAgICAgICAgICAgICB0aGlzLl91cmxDb21wb25lbnRzID0gcGFyc2VVUkwodGhp
cy5fdXJsKTsKICAgICAgICAgcmV0dXJuIHRoaXMuX3VybENvbXBvbmVudHM7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICBnZXQgZGlzcGxheU5hbWUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIFdlYklu
c3BlY3Rvci5kaXNwbGF5TmFtZUZvclVSTCh0aGlzLl91cmwsIHRoaXMudXJsQ29tcG9uZW50cyk7
Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgaW5pdGlhdG9yU291cmNlQ29kZUxvY2F0aW9uKCkK
ICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9pbml0aWF0b3JTb3VyY2VDb2RlTG9jYXRpb247
Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgdHlwZSgpCiAgICAgewogICAgICAgICByZXR1cm4g
dGhpcy5fdHlwZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBtaW1lVHlwZSgpCiAgICAgewog
ICAgICAgICByZXR1cm4gdGhpcy5fbWltZVR5cGU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQg
bWltZVR5cGVDb21wb25lbnRzKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fbWltZVR5cGVD
b21wb25lbnRzKQogICAgICAgICAgICAgdGhpcy5fbWltZVR5cGVDb21wb25lbnRzID0gcGFyc2VN
SU1FVHlwZSh0aGlzLl9taW1lVHlwZSk7CiAgICAgICAgIHJldHVybiB0aGlzLl9taW1lVHlwZUNv
bXBvbmVudHM7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc3ludGhldGljTUlNRVR5cGUoKQog
ICAgIHsKQEAgLTI1Miw5ICsxNzksOSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBl
ID0gewogCiAgICAgICAgIC8vIFJldHVybiB0aGUgYWN0dWFsIE1JTUUtdHlwZSBzaW5jZSB3ZSBk
b24ndCBoYXZlIGEgYmV0dGVyIHN5bnRoZXNpemVkIG9uZSB0byByZXR1cm4uCiAgICAgICAgIHJl
dHVybiB0aGlzLl9taW1lVHlwZTsKLSAgICB9LAorICAgIH0KIAotICAgIGNyZWF0ZU9iamVjdFVS
TDogZnVuY3Rpb24oKQorICAgIGNyZWF0ZU9iamVjdFVSTCgpCiAgICAgewogICAgICAgICAvLyBJ
ZiBjb250ZW50IGlzIG5vdCBhdmFpbGFibGUsIGZhbGxiYWNrIHRvIHVzaW5nIG9yaWdpbmFsIFVS
TC4KICAgICAgICAgLy8gVGhlIGNsaWVudCBtYXkgdHJ5IHRvIHJldm9rZSBpdCwgYnV0IG5vdGhp
bmcgd2lsbCBoYXBwZW4uCkBAIC0yNjUsMTM3ICsxOTIsMTM3IEBAIFdlYkluc3BlY3Rvci5SZXNv
dXJjZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGNvbnRlbnQgaW5zdGFu
Y2VvZiBCbG9iLCBjb250ZW50KTsKIAogICAgICAgICByZXR1cm4gVVJMLmNyZWF0ZU9iamVjdFVS
TChjb250ZW50KTsKLSAgICB9LAorICAgIH0KIAotICAgIGlzTWFpblJlc291cmNlOiBmdW5jdGlv
bigpCisgICAgaXNNYWluUmVzb3VyY2UoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3Bh
cmVudEZyYW1lID8gdGhpcy5fcGFyZW50RnJhbWUubWFpblJlc291cmNlID09PSB0aGlzIDogZmFs
c2U7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgcGFyZW50RnJhbWUoKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHRoaXMuX3BhcmVudEZyYW1lOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGxv
YWRlcklkZW50aWZpZXIoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2xvYWRlcklkZW50
aWZpZXI7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgcmVxdWVzdElkZW50aWZpZXIoKQogICAg
IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3JlcXVlc3RJZGVudGlmaWVyOwotICAgIH0sCisgICAg
fQogCiAgICAgZ2V0IGZpbmlzaGVkKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9maW5p
c2hlZDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBmYWlsZWQoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHRoaXMuX2ZhaWxlZDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBjYW5jZWxlZCgp
CiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fY2FuY2VsZWQ7Ci0gICAgfSwKKyAgICB9CiAK
ICAgICBnZXQgcmVxdWVzdE1ldGhvZCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcmVx
dWVzdE1ldGhvZDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCByZXF1ZXN0RGF0YSgpCiAgICAg
ewogICAgICAgICByZXR1cm4gdGhpcy5fcmVxdWVzdERhdGE7Ci0gICAgfSwKKyAgICB9CiAKICAg
ICBnZXQgcmVxdWVzdERhdGFDb250ZW50VHlwZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhp
cy5fcmVxdWVzdEhlYWRlcnMudmFsdWVGb3JDYXNlSW5zZW5zaXRpdmVLZXkoIkNvbnRlbnQtVHlw
ZSIpIHx8IG51bGw7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgcmVxdWVzdEhlYWRlcnMoKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3JlcXVlc3RIZWFkZXJzOwotICAgIH0sCisgICAg
fQogCiAgICAgZ2V0IHJlc3BvbnNlSGVhZGVycygpCiAgICAgewogICAgICAgICByZXR1cm4gdGhp
cy5fcmVzcG9uc2VIZWFkZXJzOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHJlcXVlc3RTZW50
VGltZXN0YW1wKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9yZXF1ZXN0U2VudFRpbWVz
dGFtcDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBsYXN0UmVkaXJlY3RSZWNlaXZlZFRpbWVz
dGFtcCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fbGFzdFJlZGlyZWN0UmVjZWl2ZWRU
aW1lc3RhbXA7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgcmVzcG9uc2VSZWNlaXZlZFRpbWVz
dGFtcCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcmVzcG9uc2VSZWNlaXZlZFRpbWVz
dGFtcDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBsYXN0RGF0YVJlY2VpdmVkVGltZXN0YW1w
KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9sYXN0RGF0YVJlY2VpdmVkVGltZXN0YW1w
OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGZpbmlzaGVkT3JGYWlsZWRUaW1lc3RhbXAoKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbmlzaGVkT3JGYWlsZWRUaW1lc3RhbXA7Ci0g
ICAgfSwKKyAgICB9CiAKICAgICBnZXQgZmlyc3RUaW1lc3RhbXAoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHRoaXMucmVxdWVzdFNlbnRUaW1lc3RhbXAgfHwgdGhpcy5sYXN0UmVkaXJlY3RSZWNl
aXZlZFRpbWVzdGFtcCB8fCB0aGlzLnJlc3BvbnNlUmVjZWl2ZWRUaW1lc3RhbXAgfHwgdGhpcy5s
YXN0RGF0YVJlY2VpdmVkVGltZXN0YW1wIHx8IHRoaXMuZmluaXNoZWRPckZhaWxlZFRpbWVzdGFt
cDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBsYXN0VGltZXN0YW1wKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiB0aGlzLmZpbmlzaGVkT3JGYWlsZWRUaW1lc3RhbXAgfHwgdGhpcy5sYXN0RGF0
YVJlY2VpdmVkVGltZXN0YW1wIHx8IHRoaXMucmVzcG9uc2VSZWNlaXZlZFRpbWVzdGFtcCB8fCB0
aGlzLmxhc3RSZWRpcmVjdFJlY2VpdmVkVGltZXN0YW1wIHx8IHRoaXMucmVxdWVzdFNlbnRUaW1l
c3RhbXA7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgZHVyYXRpb24oKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHRoaXMuX2ZpbmlzaGVkT3JGYWlsZWRUaW1lc3RhbXAgLSB0aGlzLl9yZXF1ZXN0
U2VudFRpbWVzdGFtcDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBsYXRlbmN5KCkKICAgICB7
CiAgICAgICAgIHJldHVybiB0aGlzLl9yZXNwb25zZVJlY2VpdmVkVGltZXN0YW1wIC0gdGhpcy5f
cmVxdWVzdFNlbnRUaW1lc3RhbXA7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgcmVjZWl2ZUR1
cmF0aW9uKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9maW5pc2hlZE9yRmFpbGVkVGlt
ZXN0YW1wIC0gdGhpcy5fcmVzcG9uc2VSZWNlaXZlZFRpbWVzdGFtcDsKLSAgICB9LAorICAgIH0K
IAogICAgIGdldCBjYWNoZWQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2NhY2hlZDsK
LSAgICB9LAorICAgIH0KIAogICAgIGdldCBzdGF0dXNDb2RlKCkKICAgICB7CiAgICAgICAgIHJl
dHVybiB0aGlzLl9zdGF0dXNDb2RlOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHN0YXR1c1Rl
eHQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXR1c1RleHQ7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICBnZXQgc2l6ZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc2l6ZTsK
LSAgICB9LAorICAgIH0KIAogICAgIGdldCBlbmNvZGVkU2l6ZSgpCiAgICAgewpAQCAtNDE0LDcg
KzM0MSw3IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIC8v
IGdldCBhY3R1YWwgdHJhbnNmZXIgc2l6ZSBmcm9tIHRoZSBuZXR3b3JrIHN0YWNrLgogCiAgICAg
ICAgIHJldHVybiBOdW1iZXIodGhpcy5fcmVzcG9uc2VIZWFkZXJzLnZhbHVlRm9yQ2FzZUluc2Vu
c2l0aXZlS2V5KCJDb250ZW50LUxlbmd0aCIpIHx8IHRoaXMuX3NpemUpOwotICAgIH0sCisgICAg
fQogCiAgICAgZ2V0IHRyYW5zZmVyU2l6ZSgpCiAgICAgewpAQCAtNDI1LDIwICszNTIsMjAgQEAg
V2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybiAw
OwogCiAgICAgICAgIHJldHVybiB0aGlzLl9yZXNwb25zZUhlYWRlcnNTaXplICsgdGhpcy5lbmNv
ZGVkU2l6ZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBjb21wcmVzc2VkKCkKICAgICB7CiAg
ICAgICAgIHZhciBjb250ZW50RW5jb2RpbmcgPSB0aGlzLl9yZXNwb25zZUhlYWRlcnMudmFsdWVG
b3JDYXNlSW5zZW5zaXRpdmVLZXkoIkNvbnRlbnQtRW5jb2RpbmciKTsKICAgICAgICAgcmV0dXJu
IGNvbnRlbnRFbmNvZGluZyAmJiAvXGIoPzpnemlwfGRlZmxhdGUpXGIvLnRlc3QoY29udGVudEVu
Y29kaW5nKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzY3JpcHRzKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiB0aGlzLl9zY3JpcHRzIHx8IFtdOwotICAgIH0sCisgICAgfQogCi0gICAgc2Ny
aXB0Rm9yTG9jYXRpb246IGZ1bmN0aW9uKHNvdXJjZUNvZGVMb2NhdGlvbikKKyAgICBzY3JpcHRG
b3JMb2NhdGlvbihzb3VyY2VDb2RlTG9jYXRpb24pCiAgICAgewogICAgICAgICBjb25zb2xlLmFz
c2VydCghKHRoaXMgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuU291cmNlTWFwUmVzb3VyY2UpKTsK
ICAgICAgICAgY29uc29sZS5hc3NlcnQoc291cmNlQ29kZUxvY2F0aW9uLnNvdXJjZUNvZGUgPT09
IHRoaXMsICJTb3VyY2VDb2RlTG9jYXRpb24gbXVzdCBiZSBpbiB0aGlzIFJlc291cmNlIik7CkBA
IC00NTksOSArMzg2LDkgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgfQogCiAgICAgICAgIHJldHVybiBudWxsOwotICAgIH0sCisgICAgfQogCi0gICAgdXBk
YXRlRm9yUmVkaXJlY3RSZXNwb25zZTogZnVuY3Rpb24odXJsLCByZXF1ZXN0SGVhZGVycywgZWxh
cHNlZFRpbWUpCisgICAgdXBkYXRlRm9yUmVkaXJlY3RSZXNwb25zZSh1cmwsIHJlcXVlc3RIZWFk
ZXJzLCBlbGFwc2VkVGltZSkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9m
aW5pc2hlZCk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9mYWlsZWQpOwpAQCAtNDgy
LDkgKzQwOSw5IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAKICAgICAg
ICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlJlc291cmNlLkV2
ZW50LlJlcXVlc3RIZWFkZXJzRGlkQ2hhbmdlKTsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50
VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlJlc291cmNlLkV2ZW50LlRpbWVzdGFtcHNEaWRDaGFu
Z2UpOwotICAgIH0sCisgICAgfQogCi0gICAgdXBkYXRlRm9yUmVzcG9uc2U6IGZ1bmN0aW9uKHVy
bCwgbWltZVR5cGUsIHR5cGUsIHJlc3BvbnNlSGVhZGVycywgc3RhdHVzQ29kZSwgc3RhdHVzVGV4
dCwgZWxhcHNlZFRpbWUpCisgICAgdXBkYXRlRm9yUmVzcG9uc2UodXJsLCBtaW1lVHlwZSwgdHlw
ZSwgcmVzcG9uc2VIZWFkZXJzLCBzdGF0dXNDb2RlLCBzdGF0dXNUZXh0LCBlbGFwc2VkVGltZSkK
ICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9maW5pc2hlZCk7CiAgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9mYWlsZWQpOwpAQCAtNTM5LDE0ICs0NjYsMTQgQEAgV2Vi
SW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlwZSA9IHsKIAogICAgICAgICB0aGlzLmRpc3BhdGNo
RXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuUmVzb3VyY2UuRXZlbnQuUmVzcG9uc2VSZWNl
aXZlZCk7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rv
ci5SZXNvdXJjZS5FdmVudC5UaW1lc3RhbXBzRGlkQ2hhbmdlKTsKLSAgICB9LAorICAgIH0KIAot
ICAgIGNhblJlcXVlc3RDb250ZW50OiBmdW5jdGlvbigpCisgICAgY2FuUmVxdWVzdENvbnRlbnQo
KQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbmlzaGVkOwotICAgIH0sCisgICAgfQog
Ci0gICAgcmVxdWVzdENvbnRlbnRGcm9tQmFja2VuZDogZnVuY3Rpb24oKQorICAgIHJlcXVlc3RD
b250ZW50RnJvbUJhY2tlbmQoKQogICAgIHsKICAgICAgICAgLy8gSWYgd2UgaGF2ZSB0aGUgcmVx
dWVzdElkZW50aWZpZXIgd2UgY2FuIGdldCB0aGUgYWN0dWFsIHJlc3BvbnNlIGZvciB0aGlzIHNw
ZWNpZmljIHJlc291cmNlLgogICAgICAgICAvLyBPdGhlcndpc2UgdGhlIGNvbnRlbnQgd2lsbCBi
ZSBjYWNoZWQgcmVzb3VyY2UgZGF0YSwgd2hpY2ggbWlnaHQgbm90IGV4aXN0IGFueW1vcmUuCkBA
IC01NTgsOSArNDg1LDkgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgIHJldHVybiBQYWdlQWdlbnQuZ2V0UmVzb3VyY2VDb250ZW50LnByb21pc2UodGhp
cy5fcGFyZW50RnJhbWUuaWQsIHRoaXMuX3VybCk7CiAKICAgICAgICAgcmV0dXJuIFByb21pc2Uu
cmVqZWN0KG5ldyBFcnJvcigiQ29udGVudCByZXF1ZXN0IGZhaWxlZC4iKSk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBpbmNyZWFzZVNpemU6IGZ1bmN0aW9uKGRhdGFMZW5ndGgsIGVsYXBzZWRUaW1l
KQorICAgIGluY3JlYXNlU2l6ZShkYXRhTGVuZ3RoLCBlbGFwc2VkVGltZSkKICAgICB7CiAgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KGRhdGFMZW5ndGggPj0gMCk7CiAKQEAgLTU3OCw5ICs1MDUsOSBA
QCBXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlID0gewogICAgICAgICAvLyBUaGUgdHJh
bnNmZXJTaXplIGlzIGJhc2VkIG9mZiBvZiBzaXplIHdoZW4gc3RhdHVzIGlzIG5vdCAzMDQgb3Ig
Q29udGVudC1MZW5ndGggaXMgbWlzc2luZy4KICAgICAgICAgaWYgKGlzTmFOKHRoaXMuX3RyYW5z
ZmVyU2l6ZSkgJiYgdGhpcy5fc3RhdHVzQ29kZSAhPT0gMzA0ICYmICF0aGlzLl9yZXNwb25zZUhl
YWRlcnMudmFsdWVGb3JDYXNlSW5zZW5zaXRpdmVLZXkoIkNvbnRlbnQtTGVuZ3RoIikpCiAgICAg
ICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2UuRXZlbnQuVHJhbnNmZXJTaXplRGlkQ2hhbmdlKTsKLSAgICB9LAorICAgIH0KIAotICAgIGlu
Y3JlYXNlVHJhbnNmZXJTaXplOiBmdW5jdGlvbihlbmNvZGVkRGF0YUxlbmd0aCkKKyAgICBpbmNy
ZWFzZVRyYW5zZmVyU2l6ZShlbmNvZGVkRGF0YUxlbmd0aCkKICAgICB7CiAgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KGVuY29kZWREYXRhTGVuZ3RoID49IDApOwogCkBAIC01ODksOSArNTE2LDkgQEAg
V2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fdHJhbnNm
ZXJTaXplICs9IGVuY29kZWREYXRhTGVuZ3RoOwogCiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVu
dFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5SZXNvdXJjZS5FdmVudC5UcmFuc2ZlclNpemVEaWRD
aGFuZ2UpOwotICAgIH0sCisgICAgfQogCi0gICAgbWFya0FzQ2FjaGVkOiBmdW5jdGlvbigpCisg
ICAgbWFya0FzQ2FjaGVkKCkKICAgICB7CiAgICAgICAgIHRoaXMuX2NhY2hlZCA9IHRydWU7CiAK
QEAgLTYwMCw5ICs1MjcsOSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlID0gewog
ICAgICAgICAvLyBUaGUgdHJhbnNmZXJTaXplIGlzIHN0YXJ0cyByZXR1cm5pbmcgMCB3aGVuIGNh
Y2hlZCBpcyB0cnVlLCB1bmxlc3Mgc3RhdHVzIGlzIDMwNC4KICAgICAgICAgaWYgKHRoaXMuX3N0
YXR1c0NvZGUgIT09IDMwNCkKICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVu
ZXJzKFdlYkluc3BlY3Rvci5SZXNvdXJjZS5FdmVudC5UcmFuc2ZlclNpemVEaWRDaGFuZ2UpOwot
ICAgIH0sCisgICAgfQogCi0gICAgbWFya0FzRmluaXNoZWQ6IGZ1bmN0aW9uKGVsYXBzZWRUaW1l
KQorICAgIG1hcmtBc0ZpbmlzaGVkKGVsYXBzZWRUaW1lKQogICAgIHsKICAgICAgICAgY29uc29s
ZS5hc3NlcnQoIXRoaXMuX2ZhaWxlZCk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9j
YW5jZWxlZCk7CkBAIC02MTUsOSArNTQyLDkgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3Rv
dHlwZSA9IHsKIAogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNw
ZWN0b3IuUmVzb3VyY2UuRXZlbnQuTG9hZGluZ0RpZEZpbmlzaCk7CiAgICAgICAgIHRoaXMuZGlz
cGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5SZXNvdXJjZS5FdmVudC5UaW1lc3Rh
bXBzRGlkQ2hhbmdlKTsKLSAgICB9LAorICAgIH0KIAotICAgIG1hcmtBc0ZhaWxlZDogZnVuY3Rp
b24oY2FuY2VsZWQsIGVsYXBzZWRUaW1lKQorICAgIG1hcmtBc0ZhaWxlZChjYW5jZWxlZCwgZWxh
cHNlZFRpbWUpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fZmluaXNoZWQp
OwogCkBAIC02MjcsOSArNTU0LDkgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlwZSA9
IHsKIAogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3Iu
UmVzb3VyY2UuRXZlbnQuTG9hZGluZ0RpZEZhaWwpOwogICAgICAgICB0aGlzLmRpc3BhdGNoRXZl
bnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuUmVzb3VyY2UuRXZlbnQuVGltZXN0YW1wc0RpZENo
YW5nZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZXZlcnRNYXJrQXNGaW5pc2hlZDogZnVuY3Rp
b24oKQorICAgIHJldmVydE1hcmtBc0ZpbmlzaGVkKCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KCF0aGlzLl9mYWlsZWQpOwogICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fY2Fu
Y2VsZWQpOwpAQCAtNjM3LDkgKzU2NCw5IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZS5wcm90b3R5
cGUgPSB7CiAKICAgICAgICAgdGhpcy5fZmluaXNoZWQgPSBmYWxzZTsKICAgICAgICAgdGhpcy5f
ZmluaXNoZWRPckZhaWxlZFRpbWVzdGFtcCA9IE5hTjsKLSAgICB9LAorICAgIH0KIAotICAgIGdl
dEltYWdlU2l6ZTogZnVuY3Rpb24oY2FsbGJhY2spCisgICAgZ2V0SW1hZ2VTaXplKGNhbGxiYWNr
KQogICAgIHsKICAgICAgICAgLy8gVGhyb3cgYW4gZXJyb3IgaW4gdGhlIGNhc2UgdGhpcyByZXNv
dXJjZSBpcyBub3QgYW4gaW1hZ2UuCiAgICAgICAgIGlmICh0aGlzLnR5cGUgIT09IFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZS5UeXBlLkltYWdlKQpAQCAtNjc3LDEyICs2MDQsMTIgQEAgV2ViSW5zcGVj
dG9yLlJlc291cmNlLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5yZXF1ZXN0Q29udGVudCgp
LnRoZW4oZnVuY3Rpb24oY29udGVudCkgewogICAgICAgICAgICAgb2JqZWN0VVJMID0gaW1hZ2Uu
c3JjID0gY29udGVudC5zb3VyY2VDb2RlLmNyZWF0ZU9iamVjdFVSTCgpOwogICAgICAgICB9KTsK
LSAgICB9LAorICAgIH0KIAotICAgIHJlcXVlc3RDb250ZW50OiBmdW5jdGlvbigpCisgICAgcmVx
dWVzdENvbnRlbnQoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2ZpbmlzaGVkKQotICAgICAg
ICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlLnByb3RvdHlwZS5yZXF1ZXN0Q29u
dGVudC5jYWxsKHRoaXMpOworICAgICAgICAgICAgcmV0dXJuIHN1cGVyLnJlcXVlc3RDb250ZW50
KCk7CiAKICAgICAgICAgaWYgKHRoaXMuX2ZhaWxlZCkKICAgICAgICAgICAgIHJldHVybiBQcm9t
aXNlLnJlc29sdmUoe2Vycm9yOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkFuIGVycm9yIG9jY3Vy
cmVkIHRyeWluZyB0byBsb2FkIHRoZSByZXNvdXJjZS4iKX0pOwpAQCAtNjk1LDkgKzYyMiw5IEBA
IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAg
ICByZXR1cm4gdGhpcy5fZmluaXNoVGhlblJlcXVlc3RDb250ZW50UHJvbWlzZTsKLSAgICB9LAor
ICAgIH0KIAotICAgIGFzc29jaWF0ZVdpdGhTY3JpcHQ6IGZ1bmN0aW9uKHNjcmlwdCkKKyAgICBh
c3NvY2lhdGVXaXRoU2NyaXB0KHNjcmlwdCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fc2Ny
aXB0cykKICAgICAgICAgICAgIHRoaXMuX3NjcmlwdHMgPSBbXTsKQEAgLTcxMSwxMSArNjM4LDgy
IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlz
Ll90eXBlID0gV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuU2NyaXB0OwogICAgICAgICAgICAg
dGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlJlc291cmNlLkV2ZW50
LlR5cGVEaWRDaGFuZ2UsIHtvbGRUeXBlfSk7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAot
ICAgIHNhdmVJZGVudGl0eVRvQ29va2llOiBmdW5jdGlvbihjb29raWUpCisgICAgc2F2ZUlkZW50
aXR5VG9Db29raWUoY29va2llKQogICAgIHsKICAgICAgICAgY29va2llW1dlYkluc3BlY3Rvci5S
ZXNvdXJjZS5VUkxDb29raWVLZXldID0gdGhpcy51cmwuaGFzaDsKICAgICAgICAgY29va2llW1dl
Ykluc3BlY3Rvci5SZXNvdXJjZS5NYWluUmVzb3VyY2VDb29raWVLZXldID0gdGhpcy5pc01haW5S
ZXNvdXJjZSgpOwogICAgIH0KIH07CisKK1dlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlSWRlbnRp
ZmllciA9ICJyZXNvdXJjZSI7CitXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVVJMQ29va2llS2V5ID0g
InJlc291cmNlLXVybCI7CitXZWJJbnNwZWN0b3IuUmVzb3VyY2UuTWFpblJlc291cmNlQ29va2ll
S2V5ID0gInJlc291cmNlLWlzLW1haW4tcmVzb3VyY2UiOworCitXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2UuRXZlbnQgPSB7CisgICAgVVJMRGlkQ2hhbmdlOiAicmVzb3VyY2UtdXJsLWRpZC1jaGFuZ2Ui
LAorICAgIE1JTUVUeXBlRGlkQ2hhbmdlOiAicmVzb3VyY2UtbWltZS10eXBlLWRpZC1jaGFuZ2Ui
LAorICAgIFR5cGVEaWRDaGFuZ2U6ICJyZXNvdXJjZS10eXBlLWRpZC1jaGFuZ2UiLAorICAgIFJl
cXVlc3RIZWFkZXJzRGlkQ2hhbmdlOiAicmVzb3VyY2UtcmVxdWVzdC1oZWFkZXJzLWRpZC1jaGFu
Z2UiLAorICAgIFJlc3BvbnNlUmVjZWl2ZWQ6ICJyZXNvdXJjZS1yZXNwb25zZS1yZWNlaXZlZCIs
CisgICAgTG9hZGluZ0RpZEZpbmlzaDogInJlc291cmNlLWxvYWRpbmctZGlkLWZpbmlzaCIsCisg
ICAgTG9hZGluZ0RpZEZhaWw6ICJyZXNvdXJjZS1sb2FkaW5nLWRpZC1mYWlsIiwKKyAgICBUaW1l
c3RhbXBzRGlkQ2hhbmdlOiAicmVzb3VyY2UtdGltZXN0YW1wcy1kaWQtY2hhbmdlIiwKKyAgICBT
aXplRGlkQ2hhbmdlOiAicmVzb3VyY2Utc2l6ZS1kaWQtY2hhbmdlIiwKKyAgICBUcmFuc2ZlclNp
emVEaWRDaGFuZ2U6ICJyZXNvdXJjZS10cmFuc2Zlci1zaXplLWRpZC1jaGFuZ2UiLAorICAgIENh
Y2hlU3RhdHVzRGlkQ2hhbmdlOiAicmVzb3VyY2UtY2FjaGVkLWRpZC1jaGFuZ2UiCit9OworCisv
LyBLZWVwIHRoZXNlIGluIHN5bmMgd2l0aCB0aGUgIlJlc291cmNlVHlwZSIgZW51bSBkZWZpbmVk
IGJ5IHRoZSAiUGFnZSIgZG9tYWluLgorV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUgPSB7Cisg
ICAgRG9jdW1lbnQ6ICJyZXNvdXJjZS10eXBlLWRvY3VtZW50IiwKKyAgICBTdHlsZXNoZWV0OiAi
cmVzb3VyY2UtdHlwZS1zdHlsZXNoZWV0IiwKKyAgICBJbWFnZTogInJlc291cmNlLXR5cGUtaW1h
Z2UiLAorICAgIEZvbnQ6ICJyZXNvdXJjZS10eXBlLWZvbnQiLAorICAgIFNjcmlwdDogInJlc291
cmNlLXR5cGUtc2NyaXB0IiwKKyAgICBYSFI6ICJyZXNvdXJjZS10eXBlLXhociIsCisgICAgV2Vi
U29ja2V0OiAicmVzb3VyY2UtdHlwZS13ZWJzb2NrZXQiLAorICAgIE90aGVyOiAicmVzb3VyY2Ut
dHlwZS1vdGhlciIKK307CisKKy8vIFRoaXMgTUlNRSBUeXBlIG1hcCBpcyBwcml2YXRlLCB1c2Ug
V2ViSW5zcGVjdG9yLlJlc291cmNlLnR5cGVGcm9tTUlNRVR5cGUoKS4KK1dlYkluc3BlY3Rvci5S
ZXNvdXJjZS5fbWltZVR5cGVNYXAgPSB7CisgICAgInRleHQvaHRtbCI6IFdlYkluc3BlY3Rvci5S
ZXNvdXJjZS5UeXBlLkRvY3VtZW50LAorICAgICJ0ZXh0L3htbCI6IFdlYkluc3BlY3Rvci5SZXNv
dXJjZS5UeXBlLkRvY3VtZW50LAorICAgICJ0ZXh0L3BsYWluIjogV2ViSW5zcGVjdG9yLlJlc291
cmNlLlR5cGUuRG9jdW1lbnQsCisgICAgImFwcGxpY2F0aW9uL3hodG1sK3htbCI6IFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZS5UeXBlLkRvY3VtZW50LAorICAgICJpbWFnZS9zdmcreG1sIjogV2ViSW5z
cGVjdG9yLlJlc291cmNlLlR5cGUuRG9jdW1lbnQsCisKKyAgICAidGV4dC9jc3MiOiBXZWJJbnNw
ZWN0b3IuUmVzb3VyY2UuVHlwZS5TdHlsZXNoZWV0LAorICAgICJ0ZXh0L3hzbCI6IFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZS5UeXBlLlN0eWxlc2hlZXQsCisgICAgInRleHQveC1sZXNzIjogV2ViSW5z
cGVjdG9yLlJlc291cmNlLlR5cGUuU3R5bGVzaGVldCwKKyAgICAidGV4dC94LXNhc3MiOiBXZWJJ
bnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5TdHlsZXNoZWV0LAorICAgICJ0ZXh0L3gtc2NzcyI6IFdl
Ykluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLlN0eWxlc2hlZXQsCisKKyAgICAiYXBwbGljYXRpb24v
cGRmIjogV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuSW1hZ2UsCisKKyAgICAiYXBwbGljYXRp
b24veC1mb250LXR5cGUxIjogV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuRm9udCwKKyAgICAi
YXBwbGljYXRpb24veC1mb250LXR0ZiI6IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLkZvbnQs
CisgICAgImFwcGxpY2F0aW9uL3gtZm9udC13b2ZmIjogV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5
cGUuRm9udCwKKyAgICAiYXBwbGljYXRpb24veC10cnVldHlwZS1mb250IjogV2ViSW5zcGVjdG9y
LlJlc291cmNlLlR5cGUuRm9udCwKKworICAgICJ0ZXh0L2phdmFzY3JpcHQiOiBXZWJJbnNwZWN0
b3IuUmVzb3VyY2UuVHlwZS5TY3JpcHQsCisgICAgInRleHQvZWNtYXNjcmlwdCI6IFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZS5UeXBlLlNjcmlwdCwKKyAgICAiYXBwbGljYXRpb24vamF2YXNjcmlwdCI6
IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLlNjcmlwdCwKKyAgICAiYXBwbGljYXRpb24vZWNt
YXNjcmlwdCI6IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLlNjcmlwdCwKKyAgICAiYXBwbGlj
YXRpb24veC1qYXZhc2NyaXB0IjogV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuU2NyaXB0LAor
ICAgICJhcHBsaWNhdGlvbi9qc29uIjogV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuU2NyaXB0
LAorICAgICJhcHBsaWNhdGlvbi94LWpzb24iOiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5T
Y3JpcHQsCisgICAgInRleHQveC1qYXZhc2NyaXB0IjogV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5
cGUuU2NyaXB0LAorICAgICJ0ZXh0L3gtanNvbiI6IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBl
LlNjcmlwdCwKKyAgICAidGV4dC9qYXZhc2NyaXB0MS4xIjogV2ViSW5zcGVjdG9yLlJlc291cmNl
LlR5cGUuU2NyaXB0LAorICAgICJ0ZXh0L2phdmFzY3JpcHQxLjIiOiBXZWJJbnNwZWN0b3IuUmVz
b3VyY2UuVHlwZS5TY3JpcHQsCisgICAgInRleHQvamF2YXNjcmlwdDEuMyI6IFdlYkluc3BlY3Rv
ci5SZXNvdXJjZS5UeXBlLlNjcmlwdCwKKyAgICAidGV4dC9qc2NyaXB0IjogV2ViSW5zcGVjdG9y
LlJlc291cmNlLlR5cGUuU2NyaXB0LAorICAgICJ0ZXh0L2xpdmVzY3JpcHQiOiBXZWJJbnNwZWN0
b3IuUmVzb3VyY2UuVHlwZS5TY3JpcHQsCisgICAgInRleHQveC1saXZlc2NyaXB0IjogV2ViSW5z
cGVjdG9yLlJlc291cmNlLlR5cGUuU2NyaXB0LAorICAgICJ0ZXh0L3R5cGVzY3JpcHQiOiBXZWJJ
bnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5TY3JpcHQsCisgICAgInRleHQveC1jbG9qdXJlIjogV2Vi
SW5zcGVjdG9yLlJlc291cmNlLlR5cGUuU2NyaXB0LAorICAgICJ0ZXh0L3gtY29mZmVlc2NyaXB0
IjogV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuU2NyaXB0Cit9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Jlc291cmNlQ29sbGVjdGlv
bi5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9SZXNvdXJj
ZUNvbGxlY3Rpb24uanMKaW5kZXggOTNhODZlZC4uNzM1YWIzYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Jlc291cmNlQ29sbGVjdGlvbi5q
cworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUmVzb3Vy
Y2VDb2xsZWN0aW9uLmpzCkBAIC0yMyw0NSArMjMsNDQgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuUmVzb3VyY2VDb2xsZWN0aW9uID0g
ZnVuY3Rpb24oKQorV2ViSW5zcGVjdG9yLlJlc291cmNlQ29sbGVjdGlvbiA9IGNsYXNzIFJlc291
cmNlQ29sbGVjdGlvbiBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIHsKLSAgICBXZWJJbnNw
ZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CisgICAgY29uc3RydWN0b3IoKQorICAgIHsKKyAgICAg
ICAgc3VwZXIoKTsKIAotICAgIHRoaXMuX3Jlc291cmNlcyA9IFtdOwotICAgIHRoaXMuX3Jlc291
cmNlVVJMTWFwID0gbmV3IE1hcDsKLSAgICB0aGlzLl9yZXNvdXJjZXNUeXBlTWFwID0gbmV3IE1h
cDsKLX07Ci0KLVdlYkluc3BlY3Rvci5SZXNvdXJjZUNvbGxlY3Rpb24ucHJvdG90eXBlID0gewot
ICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuUmVzb3VyY2VDb2xsZWN0aW9uLAorICAgICAg
ICB0aGlzLl9yZXNvdXJjZXMgPSBbXTsKKyAgICAgICAgdGhpcy5fcmVzb3VyY2VVUkxNYXAgPSBu
ZXcgTWFwOworICAgICAgICB0aGlzLl9yZXNvdXJjZXNUeXBlTWFwID0gbmV3IE1hcDsKKyAgICB9
CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCByZXNvdXJjZXMoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHRoaXMuX3Jlc291cmNlczsKLSAgICB9LAorICAgIH0KIAotICAgIHJlc291cmNlRm9y
VVJMOiBmdW5jdGlvbih1cmwpCisgICAgcmVzb3VyY2VGb3JVUkwodXJsKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlVVJMTWFwLmdldCh1cmwpIHx8IG51bGw7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICByZXNvdXJjZXNXaXRoVHlwZTogZnVuY3Rpb24odHlwZSkKKyAgICByZXNv
dXJjZXNXaXRoVHlwZSh0eXBlKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNl
c1R5cGVNYXAuZ2V0KHR5cGUpIHx8IFtdOwotICAgIH0sCisgICAgfQogCi0gICAgYWRkUmVzb3Vy
Y2U6IGZ1bmN0aW9uKHJlc291cmNlKQorICAgIGFkZFJlc291cmNlKHJlc291cmNlKQogICAgIHsK
ICAgICAgICAgY29uc29sZS5hc3NlcnQocmVzb3VyY2UgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3Iu
UmVzb3VyY2UpOwogICAgICAgICBpZiAoIShyZXNvdXJjZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rv
ci5SZXNvdXJjZSkpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgdGhpcy5fYXNzb2Np
YXRlV2l0aFJlc291cmNlKHJlc291cmNlKTsKLSAgICB9LAorICAgIH0KIAotICAgIHJlbW92ZVJl
c291cmNlOiBmdW5jdGlvbihyZXNvdXJjZU9yVVJMKQorICAgIHJlbW92ZVJlc291cmNlKHJlc291
cmNlT3JVUkwpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChyZXNvdXJjZU9yVVJMKTsK
IApAQCAtODEsOSArODAsOSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VDb2xsZWN0aW9uLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgdGhpcy5fZGlzYXNzb2NpYXRlV2l0aFJlc291cmNlKHJlc291cmNl
KTsKIAogICAgICAgICByZXR1cm4gcmVzb3VyY2U7Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZW1v
dmVBbGxSZXNvdXJjZXM6IGZ1bmN0aW9uKCkKKyAgICByZW1vdmVBbGxSZXNvdXJjZXMoKQogICAg
IHsKICAgICAgICAgaWYgKCF0aGlzLl9yZXNvdXJjZXMubGVuZ3RoKQogICAgICAgICAgICAgcmV0
dXJuOwpAQCAtOTQsMTEgKzkzLDExIEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZUNvbGxlY3Rpb24u
cHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9yZXNvdXJjZXMgPSBbXTsKICAgICAgICAgdGhp
cy5fcmVzb3VyY2VVUkxNYXAuY2xlYXIoKTsKICAgICAgICAgdGhpcy5fcmVzb3VyY2VzVHlwZU1h
cC5jbGVhcigpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX2Fzc29j
aWF0ZVdpdGhSZXNvdXJjZTogZnVuY3Rpb24ocmVzb3VyY2UpCisgICAgX2Fzc29jaWF0ZVdpdGhS
ZXNvdXJjZShyZXNvdXJjZSkKICAgICB7CiAgICAgICAgIHRoaXMuX3Jlc291cmNlcy5wdXNoKHJl
c291cmNlKTsKICAgICAgICAgdGhpcy5fcmVzb3VyY2VVUkxNYXAuc2V0KHJlc291cmNlLnVybCwg
cmVzb3VyY2UpOwpAQCAtMTEwLDkgKzEwOSw5IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZUNvbGxl
Y3Rpb24ucHJvdG90eXBlID0gewogCiAgICAgICAgIHJlc291cmNlLmFkZEV2ZW50TGlzdGVuZXIo
V2ViSW5zcGVjdG9yLlJlc291cmNlLkV2ZW50LlVSTERpZENoYW5nZSwgdGhpcy5fcmVzb3VyY2VV
UkxEaWRDaGFuZ2UsIHRoaXMpOwogICAgICAgICByZXNvdXJjZS5hZGRFdmVudExpc3RlbmVyKFdl
Ykluc3BlY3Rvci5SZXNvdXJjZS5FdmVudC5UeXBlRGlkQ2hhbmdlLCB0aGlzLl9yZXNvdXJjZVR5
cGVEaWRDaGFuZ2UsIHRoaXMpOwotICAgIH0sCisgICAgfQogCi0gICAgX2Rpc2Fzc29jaWF0ZVdp
dGhSZXNvdXJjZTogZnVuY3Rpb24ocmVzb3VyY2UsIHNraXBSZW1vdmFsKQorICAgIF9kaXNhc3Nv
Y2lhdGVXaXRoUmVzb3VyY2UocmVzb3VyY2UsIHNraXBSZW1vdmFsKQogICAgIHsKICAgICAgICAg
aWYgKHNraXBSZW1vdmFsKSB7CiAgICAgICAgICAgICB0aGlzLl9yZXNvdXJjZXMucmVtb3ZlKHJl
c291cmNlKTsKQEAgLTEyMyw5ICsxMjIsOSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VDb2xsZWN0
aW9uLnByb3RvdHlwZSA9IHsKIAogICAgICAgICByZXNvdXJjZS5yZW1vdmVFdmVudExpc3RlbmVy
KFdlYkluc3BlY3Rvci5SZXNvdXJjZS5FdmVudC5VUkxEaWRDaGFuZ2UsIHRoaXMuX3Jlc291cmNl
VVJMRGlkQ2hhbmdlLCB0aGlzKTsKICAgICAgICAgcmVzb3VyY2UucmVtb3ZlRXZlbnRMaXN0ZW5l
cihXZWJJbnNwZWN0b3IuUmVzb3VyY2UuRXZlbnQuVHlwZURpZENoYW5nZSwgdGhpcy5fcmVzb3Vy
Y2VUeXBlRGlkQ2hhbmdlLCB0aGlzKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9yZXNvdXJjZVVS
TERpZENoYW5nZTogZnVuY3Rpb24oZXZlbnQpCisgICAgX3Jlc291cmNlVVJMRGlkQ2hhbmdlKGV2
ZW50KQogICAgIHsKICAgICAgICAgdmFyIHJlc291cmNlID0gZXZlbnQudGFyZ2V0OwogICAgICAg
ICBjb25zb2xlLmFzc2VydChyZXNvdXJjZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZXNvdXJj
ZSk7CkBAIC0xMzksOSArMTM4LDkgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlQ29sbGVjdGlvbi5w
cm90b3R5cGUgPSB7CiAKICAgICAgICAgdGhpcy5fcmVzb3VyY2VVUkxNYXAuc2V0KHJlc291cmNl
LnVybCwgcmVzb3VyY2UpOwogICAgICAgICB0aGlzLl9yZXNvdXJjZVVSTE1hcC5kZWxldGUob2xk
VVJMKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9yZXNvdXJjZVR5cGVEaWRDaGFuZ2U6IGZ1bmN0
aW9uKGV2ZW50KQorICAgIF9yZXNvdXJjZVR5cGVEaWRDaGFuZ2UoZXZlbnQpCiAgICAgewogICAg
ICAgICB2YXIgcmVzb3VyY2UgPSBldmVudC50YXJnZXQ7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KHJlc291cmNlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlc291cmNlKTsKQEAgLTE2Miw1ICsx
NjEsMyBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VDb2xsZWN0aW9uLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgIHRoaXMuX3Jlc291cmNlc1R5cGVNYXAuZ2V0KG9sZFR5cGUpLnJlbW92ZShyZXNv
dXJjZSk7CiAgICAgfQogfTsKLQotV2ViSW5zcGVjdG9yLlJlc291cmNlQ29sbGVjdGlvbi5wcm90
b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUmVzb3VyY2VU
aW1lbGluZVJlY29yZC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01v
ZGVscy9SZXNvdXJjZVRpbWVsaW5lUmVjb3JkLmpzCmluZGV4IGFhZGE4ZmEuLjNlYjE2MzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9SZXNv
dXJjZVRpbWVsaW5lUmVjb3JkLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL01vZGVscy9SZXNvdXJjZVRpbWVsaW5lUmVjb3JkLmpzCkBAIC0yMyw1NSArMjMsNTIg
QEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0
b3IuUmVzb3VyY2VUaW1lbGluZVJlY29yZCA9IGZ1bmN0aW9uKHJlc291cmNlKQorV2ViSW5zcGVj
dG9yLlJlc291cmNlVGltZWxpbmVSZWNvcmQgPSBjbGFzcyBSZXNvdXJjZVRpbWVsaW5lUmVjb3Jk
IGV4dGVuZHMgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkCiB7Ci0gICAgV2ViSW5zcGVjdG9y
LlRpbWVsaW5lUmVjb3JkLmNhbGwodGhpcywgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkLlR5
cGUuTmV0d29yayk7CisgICAgY29uc3RydWN0b3IocmVzb3VyY2UpCisgICAgeworICAgICAgICBz
dXBlcihXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQuVHlwZS5OZXR3b3JrKTsKIAotICAgIHRo
aXMuX3Jlc291cmNlID0gcmVzb3VyY2U7Ci0gICAgdGhpcy5fcmVzb3VyY2UuYWRkRXZlbnRMaXN0
ZW5lcihXZWJJbnNwZWN0b3IuUmVzb3VyY2UuRXZlbnQuVGltZXN0YW1wc0RpZENoYW5nZSwgdGhp
cy5fZGlzcGF0Y2hVcGRhdGVkRXZlbnQsIHRoaXMpOwotfTsKLQotV2ViSW5zcGVjdG9yLlJlc291
cmNlVGltZWxpbmVSZWNvcmQucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNw
ZWN0b3IuUmVzb3VyY2VUaW1lbGluZVJlY29yZCwKKyAgICAgICAgdGhpcy5fcmVzb3VyY2UgPSBy
ZXNvdXJjZTsKKyAgICAgICAgdGhpcy5fcmVzb3VyY2UuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNw
ZWN0b3IuUmVzb3VyY2UuRXZlbnQuVGltZXN0YW1wc0RpZENoYW5nZSwgdGhpcy5fZGlzcGF0Y2hV
cGRhdGVkRXZlbnQsIHRoaXMpOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IHJl
c291cmNlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZTsKLSAgICB9LAor
ICAgIH0KIAogICAgIGdldCB1cGRhdGVzRHluYW1pY2FsbHkoKQogICAgIHsKICAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgdXNlc0FjdGl2ZVN0YXJ0VGltZSgp
CiAgICAgewogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBz
dGFydFRpbWUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlLnJlcXVlc3RT
ZW50VGltZXN0YW1wOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGFjdGl2ZVN0YXJ0VGltZSgp
CiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2UucmVzcG9uc2VSZWNlaXZlZFRp
bWVzdGFtcDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBlbmRUaW1lKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZS5maW5pc2hlZE9yRmFpbGVkVGltZXN0YW1wOwotICAg
IH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX2Rpc3BhdGNoVXBkYXRlZEV2ZW50
OiBmdW5jdGlvbigpCisgICAgX2Rpc3BhdGNoVXBkYXRlZEV2ZW50KCkKICAgICB7CiAgICAgICAg
IHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29y
ZC5FdmVudC5VcGRhdGVkKTsKICAgICB9CiB9OwotCi1XZWJJbnNwZWN0b3IuUmVzb3VyY2VUaW1l
bGluZVJlY29yZC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVj
b3JkLnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL01vZGVscy9SZXZpc2lvbi5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL01vZGVscy9SZXZpc2lvbi5qcwppbmRleCA0Y2YyYzRiLi4zOTg0OTFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUmV2aXNpb24u
anMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Jldmlz
aW9uLmpzCkBAIC0yMywzMyArMjMsMzEgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuUmV2aXNpb24gPSBmdW5jdGlvbigpCitXZWJJbnNw
ZWN0b3IuUmV2aXNpb24gPSBjbGFzcyBSZXZpc2lvbiBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmpl
Y3QKIHsKLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7Ci19OwotCi1XZWJJbnNw
ZWN0b3IuUmV2aXNpb24ucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0
b3IuUmV2aXNpb24sCisgICAgY29uc3RydWN0b3IoKQorICAgIHsKKyAgICAgICAgLy8gRklYTUU6
IFJlbW92ZSBvbmNlIDxodHRwczovL3dlYmtpdC5vcmcvYi8xNDI4NjI+IGlzIGZpeGVkLgorICAg
ICAgICBzdXBlcigpOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCi0gICAgYXBwbHk6IGZ1bmN0
aW9uKCkKKyAgICBhcHBseSgpCiAgICAgewogICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJj
bGFzc2VzLgogICAgICAgICBjb25zb2xlLmVycm9yKCJOZWVkcyB0byBiZSBpbXBsZW1lbnRlZCBi
eSBhIHN1YmNsYXNzLiIpOwotICAgIH0sCisgICAgfQogCi0gICAgcmV2ZXJ0OiBmdW5jdGlvbigp
CisgICAgcmV2ZXJ0KCkKICAgICB7CiAgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNz
ZXMuCiAgICAgICAgIGNvbnNvbGUuZXJyb3IoIk5lZWRzIHRvIGJlIGltcGxlbWVudGVkIGJ5IGEg
c3ViY2xhc3MuIik7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjb3B5OiBmdW5jdGlvbigpCisgICAg
Y29weSgpCiAgICAgewogICAgICAgICAvLyBPdmVycmlkZSBieSBzdWJjbGFzc2VzLgogICAgICAg
ICByZXR1cm4gdGhpczsKICAgICB9CiB9OwotCi1XZWJJbnNwZWN0b3IuUmV2aXNpb24ucHJvdG90
eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1J1bkxvb3BUaW1l
bGluZVJlY29yZC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVs
cy9SdW5Mb29wVGltZWxpbmVSZWNvcmQuanMKaW5kZXggZTFlNDAwNC4uODQxODA5ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1J1bkxvb3BU
aW1lbGluZVJlY29yZC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Nb2RlbHMvUnVuTG9vcFRpbWVsaW5lUmVjb3JkLmpzCkBAIC0yMywyNyArMjMsMjMgQEAKICAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuUnVu
TG9vcFRpbWVsaW5lUmVjb3JkID0gZnVuY3Rpb24oc3RhcnRUaW1lLCBlbmRUaW1lLCBjaGlsZHJl
bikKK1dlYkluc3BlY3Rvci5SdW5Mb29wVGltZWxpbmVSZWNvcmQgPSBjbGFzcyBSdW5Mb29wVGlt
ZWxpbmVSZWNvcmQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQKIHsKLSAgICBX
ZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQuY2FsbCh0aGlzLCBXZWJJbnNwZWN0b3IuVGltZWxp
bmVSZWNvcmQuVHlwZS5SdW5Mb29wLCBzdGFydFRpbWUsIGVuZFRpbWUpOworICAgIGNvbnN0cnVj
dG9yKHN0YXJ0VGltZSwgZW5kVGltZSwgY2hpbGRyZW4pCisgICAgeworICAgICAgICBzdXBlcihX
ZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQuVHlwZS5SdW5Mb29wLCBzdGFydFRpbWUsIGVuZFRp
bWUpOwogCi0gICAgdGhpcy5fY2hpbGRyZW4gPSBjaGlsZHJlbiB8fCBbXTsKLSAgICB0aGlzLl9k
dXJhdGlvbkJ5UmVjb3JkVHlwZSA9IG5ldyBNYXA7Ci0gICAgdGhpcy5fZHVyYXRpb25SZW1haW5k
ZXIgPSBOYU47Ci19OwotCi1XZWJJbnNwZWN0b3IuUnVuTG9vcFRpbWVsaW5lUmVjb3JkLlR5cGVJ
ZGVudGlmaWVyID0gInJ1bmxvb3AtdGltZWxpbmUtcmVjb3JkIjsKLQotV2ViSW5zcGVjdG9yLlJ1
bkxvb3BUaW1lbGluZVJlY29yZC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYklu
c3BlY3Rvci5SdW5Mb29wVGltZWxpbmVSZWNvcmQsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0
b3IuVGltZWxpbmVSZWNvcmQucHJvdG90eXBlLAorICAgICAgICB0aGlzLl9jaGlsZHJlbiA9IGNo
aWxkcmVuIHx8IFtdOworICAgICAgICB0aGlzLl9kdXJhdGlvbkJ5UmVjb3JkVHlwZSA9IG5ldyBN
YXA7CisgICAgICAgIHRoaXMuX2R1cmF0aW9uUmVtYWluZGVyID0gTmFOOworICAgIH0KIAogICAg
IC8vIFB1YmxpYwogCiAgICAgZ2V0IGNoaWxkcmVuKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0
aGlzLl9jaGlsZHJlbi5zbGljZSgpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGR1cmF0aW9u
UmVtYWluZGVyKCkKICAgICB7CkBAIC01MSwxMSArNDcsMTEgQEAgV2ViSW5zcGVjdG9yLlJ1bkxv
b3BUaW1lbGluZVJlY29yZC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm4gdGhpcy5f
ZHVyYXRpb25SZW1haW5kZXI7CiAKICAgICAgICAgdGhpcy5fZHVyYXRpb25SZW1haW5kZXIgPSB0
aGlzLmR1cmF0aW9uOwotICAgICAgICBmb3IgKHJlY29yZFR5cGUgaW4gV2ViSW5zcGVjdG9yLlRp
bWVsaW5lUmVjb3JkLlR5cGUpCisgICAgICAgIGZvciAodmFyIHJlY29yZFR5cGUgaW4gV2ViSW5z
cGVjdG9yLlRpbWVsaW5lUmVjb3JkLlR5cGUpCiAgICAgICAgICAgICB0aGlzLl9kdXJhdGlvblJl
bWFpbmRlciAtPSB0aGlzLmR1cmF0aW9uRm9yUmVjb3JkcyhXZWJJbnNwZWN0b3IuVGltZWxpbmVS
ZWNvcmQuVHlwZVtyZWNvcmRUeXBlXSk7CiAKICAgICAgICAgcmV0dXJuIHRoaXMuX2R1cmF0aW9u
UmVtYWluZGVyOwotICAgIH0sCisgICAgfQogCiAgICAgZHVyYXRpb25Gb3JSZWNvcmRzKHJlY29y
ZFR5cGUpCiAgICAgewpAQCAtNzYsMyArNzIsNSBAQCBXZWJJbnNwZWN0b3IuUnVuTG9vcFRpbWVs
aW5lUmVjb3JkLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIGR1cmF0aW9uOwogICAgIH0K
IH07CisKK1dlYkluc3BlY3Rvci5SdW5Mb29wVGltZWxpbmVSZWNvcmQuVHlwZUlkZW50aWZpZXIg
PSAicnVubG9vcC10aW1lbGluZS1yZWNvcmQiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Njb3BlQ2hhaW5Ob2RlLmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Njb3BlQ2hhaW5Ob2RlLmpzCmluZGV4
IDQ3ODFjMjMuLmE2ZGVlN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL01vZGVscy9TY29wZUNoYWluTm9kZS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvU2NvcGVDaGFpbk5vZGUuanMKQEAgLTIzLDE4ICsy
MywzMyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYklu
c3BlY3Rvci5TY29wZUNoYWluTm9kZSA9IGZ1bmN0aW9uKHR5cGUsIG9iamVjdCkKK1dlYkluc3Bl
Y3Rvci5TY29wZUNoYWluTm9kZSA9IGNsYXNzIFNjb3BlQ2hhaW5Ob2RlIGV4dGVuZHMgV2ViSW5z
cGVjdG9yLk9iamVjdAogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAg
ICBjb25zdHJ1Y3Rvcih0eXBlLCBvYmplY3QpCisgICAgeworICAgICAgICBzdXBlcigpOwogCi0g
ICAgY29uc29sZS5hc3NlcnQodHlwZW9mIHR5cGUgPT09ICJzdHJpbmciKTsKLSAgICBjb25zb2xl
LmFzc2VydChvYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0KTsKKyAg
ICAgICAgY29uc29sZS5hc3NlcnQodHlwZW9mIHR5cGUgPT09ICJzdHJpbmciKTsKKyAgICAgICAg
Y29uc29sZS5hc3NlcnQob2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVj
dCk7CiAKLSAgICBpZiAodHlwZSBpbiBXZWJJbnNwZWN0b3IuU2NvcGVDaGFpbk5vZGUuVHlwZSkK
LSAgICAgICAgdHlwZSA9IFdlYkluc3BlY3Rvci5TY29wZUNoYWluTm9kZS5UeXBlW3R5cGVdOwor
ICAgICAgICBpZiAodHlwZSBpbiBXZWJJbnNwZWN0b3IuU2NvcGVDaGFpbk5vZGUuVHlwZSkKKyAg
ICAgICAgICAgIHR5cGUgPSBXZWJJbnNwZWN0b3IuU2NvcGVDaGFpbk5vZGUuVHlwZVt0eXBlXTsK
IAotICAgIHRoaXMuX3R5cGUgPSB0eXBlIHx8IG51bGw7Ci0gICAgdGhpcy5fb2JqZWN0ID0gb2Jq
ZWN0IHx8IG51bGw7CisgICAgICAgIHRoaXMuX3R5cGUgPSB0eXBlIHx8IG51bGw7CisgICAgICAg
IHRoaXMuX29iamVjdCA9IG9iamVjdCB8fCBudWxsOworICAgIH0KKworICAgIC8vIFB1YmxpYwor
CisgICAgZ2V0IHR5cGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3R5cGU7CisgICAg
fQorCisgICAgZ2V0IG9iamVjdCgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fb2JqZWN0
OworICAgIH0KIH07CiAKIFdlYkluc3BlY3Rvci5TY29wZUNoYWluTm9kZS5UeXBlID0gewpAQCAt
NDUsMjEgKzYwLDMgQEAgV2ViSW5zcGVjdG9yLlNjb3BlQ2hhaW5Ob2RlLlR5cGUgPSB7CiAgICAg
Q2F0Y2g6ICJzY29wZS1jaGFpbi10eXBlLWNhdGNoIiwKICAgICBGdW5jdGlvbk5hbWU6ICJzY29w
ZS1jaGFpbi10eXBlLWZ1bmN0aW9uTmFtZSIKIH07Ci0KLVdlYkluc3BlY3Rvci5TY29wZUNoYWlu
Tm9kZS5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5TY29wZUNo
YWluTm9kZSwKLQotICAgIC8vIFB1YmxpYwotCi0gICAgZ2V0IHR5cGUoKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIHRoaXMuX3R5cGU7Ci0gICAgfSwKLQotICAgIGdldCBvYmplY3QoKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIHRoaXMuX29iamVjdDsKLSAgICB9Ci19OwotCi1XZWJJbnNwZWN0b3Iu
U2NvcGVDaGFpbk5vZGUucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3Qu
cHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvTW9kZWxzL1NjcmlwdC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L01vZGVscy9TY3JpcHQuanMKaW5kZXggYjA3YmFkNC4uNDdmYmZmMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1NjcmlwdC5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvU2NyaXB0LmpzCkBAIC0y
Myw3MSArMjMsNjUgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
Ci1XZWJJbnNwZWN0b3IuU2NyaXB0ID0gZnVuY3Rpb24oaWQsIHJhbmdlLCB1cmwsIGluamVjdGVk
LCBzb3VyY2VNYXBVUkwpCitXZWJJbnNwZWN0b3IuU2NyaXB0ID0gY2xhc3MgU2NyaXB0IGV4dGVu
ZHMgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGUKIHsKLSAgICBXZWJJbnNwZWN0b3IuU291cmNlQ29k
ZS5jYWxsKHRoaXMpOworICAgIGNvbnN0cnVjdG9yKGlkLCByYW5nZSwgdXJsLCBpbmplY3RlZCwg
c291cmNlTWFwVVJMKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKIAotICAgIGNvbnNvbGUuYXNz
ZXJ0KGlkKTsKLSAgICBjb25zb2xlLmFzc2VydChyYW5nZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rv
ci5UZXh0UmFuZ2UpOworICAgICAgICBjb25zb2xlLmFzc2VydChpZCk7CisgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KHJhbmdlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlRleHRSYW5nZSk7CiAKLSAg
ICB0aGlzLl9pZCA9IGlkIHx8IG51bGw7Ci0gICAgdGhpcy5fcmFuZ2UgPSByYW5nZSB8fCBudWxs
OwotICAgIHRoaXMuX3VybCA9IHVybCB8fCBudWxsOwotICAgIHRoaXMuX2luamVjdGVkID0gaW5q
ZWN0ZWQgfHwgZmFsc2U7CisgICAgICAgIHRoaXMuX2lkID0gaWQgfHwgbnVsbDsKKyAgICAgICAg
dGhpcy5fcmFuZ2UgPSByYW5nZSB8fCBudWxsOworICAgICAgICB0aGlzLl91cmwgPSB1cmwgfHwg
bnVsbDsKKyAgICAgICAgdGhpcy5faW5qZWN0ZWQgPSBpbmplY3RlZCB8fCBmYWxzZTsKIAotICAg
IHRoaXMuX3Jlc291cmNlID0gdGhpcy5fcmVzb2x2ZVJlc291cmNlKCk7Ci0gICAgaWYgKHRoaXMu
X3Jlc291cmNlKQotICAgICAgICB0aGlzLl9yZXNvdXJjZS5hc3NvY2lhdGVXaXRoU2NyaXB0KHRo
aXMpOworICAgICAgICB0aGlzLl9yZXNvdXJjZSA9IHRoaXMuX3Jlc29sdmVSZXNvdXJjZSgpOwor
ICAgICAgICBpZiAodGhpcy5fcmVzb3VyY2UpCisgICAgICAgICAgICB0aGlzLl9yZXNvdXJjZS5h
c3NvY2lhdGVXaXRoU2NyaXB0KHRoaXMpOwogCi0gICAgaWYgKHNvdXJjZU1hcFVSTCkKLSAgICAg
ICAgV2ViSW5zcGVjdG9yLnNvdXJjZU1hcE1hbmFnZXIuZG93bmxvYWRTb3VyY2VNYXAoc291cmNl
TWFwVVJMLCB0aGlzLl91cmwsIHRoaXMpOworICAgICAgICBpZiAoc291cmNlTWFwVVJMKQorICAg
ICAgICAgICAgV2ViSW5zcGVjdG9yLnNvdXJjZU1hcE1hbmFnZXIuZG93bmxvYWRTb3VyY2VNYXAo
c291cmNlTWFwVVJMLCB0aGlzLl91cmwsIHRoaXMpOwogCi0gICAgdGhpcy5fc2NyaXB0U3ludGF4
VHJlZSA9IG51bGw7Ci19OworICAgICAgICB0aGlzLl9zY3JpcHRTeW50YXhUcmVlID0gbnVsbDsK
KyAgICB9CiAKLVdlYkluc3BlY3Rvci5TY3JpcHQuVHlwZUlkZW50aWZpZXIgPSAic2NyaXB0IjsK
LVdlYkluc3BlY3Rvci5TY3JpcHQuVVJMQ29va2llS2V5ID0gInNjcmlwdC11cmwiOwotV2ViSW5z
cGVjdG9yLlNjcmlwdC5EaXNwbGF5TmFtZUNvb2tpZUtleSA9ICJzY3JpcHQtZGlzcGxheS1uYW1l
IjsKKyAgICAvLyBTdGF0aWMKIAotV2ViSW5zcGVjdG9yLlNjcmlwdC5yZXNldFVuaXF1ZURpc3Bs
YXlOYW1lTnVtYmVycyA9IGZ1bmN0aW9uKCkKLXsKLSAgICBXZWJJbnNwZWN0b3IuU2NyaXB0Ll9u
ZXh0VW5pcXVlRGlzcGxheU5hbWVOdW1iZXIgPSAxOwotfTsKLQotV2ViSW5zcGVjdG9yLlNjcmlw
dC5fbmV4dFVuaXF1ZURpc3BsYXlOYW1lTnVtYmVyID0gMTsKLQotV2ViSW5zcGVjdG9yLlNjcmlw
dC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5TY3JpcHQsCi0g
ICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuU291cmNlQ29kZS5wcm90b3R5cGUsCisgICAgc3Rh
dGljIHJlc2V0VW5pcXVlRGlzcGxheU5hbWVOdW1iZXJzKCkKKyAgICB7CisgICAgICAgIFdlYklu
c3BlY3Rvci5TY3JpcHQuX25leHRVbmlxdWVEaXNwbGF5TmFtZU51bWJlciA9IDE7CisgICAgfQog
CiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgaWQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRo
aXMuX2lkOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHJhbmdlKCkKICAgICB7CiAgICAgICAg
IHJldHVybiB0aGlzLl9yYW5nZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCB1cmwoKQogICAg
IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3VybDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCB1
cmxDb21wb25lbnRzKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fdXJsQ29tcG9uZW50cykK
ICAgICAgICAgICAgIHRoaXMuX3VybENvbXBvbmVudHMgPSBwYXJzZVVSTCh0aGlzLl91cmwpOwog
ICAgICAgICByZXR1cm4gdGhpcy5fdXJsQ29tcG9uZW50czsKLSAgICB9LAorICAgIH0KIAogICAg
IGdldCBtaW1lVHlwZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2UubWlt
ZVR5cGU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgZGlzcGxheU5hbWUoKQogICAgIHsKQEAg
LTk5LDI0ICs5MywyNCBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0LnByb3RvdHlwZSA9IHsKICAgICAg
ICAgICAgIHRoaXMuX3VuaXF1ZURpc3BsYXlOYW1lTnVtYmVyID0gdGhpcy5jb25zdHJ1Y3Rvci5f
bmV4dFVuaXF1ZURpc3BsYXlOYW1lTnVtYmVyKys7CiAKICAgICAgICAgcmV0dXJuIFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiQW5vbnltb3VzIFNjcmlwdCAlZCIpLmZvcm1hdCh0aGlzLl91bmlxdWVE
aXNwbGF5TmFtZU51bWJlcik7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgaW5qZWN0ZWQoKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2luamVjdGVkOwotICAgIH0sCisgICAgfQogCiAg
ICAgZ2V0IHJlc291cmNlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZTsK
LSAgICB9LAorICAgIH0KIAogICAgIGdldCBzY3JpcHRTeW50YXhUcmVlKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiB0aGlzLl9zY3JpcHRTeW50YXhUcmVlOwotICAgIH0sCisgICAgfQogCi0gICAg
cmVxdWVzdENvbnRlbnRGcm9tQmFja2VuZDogZnVuY3Rpb24oKQorICAgIHJlcXVlc3RDb250ZW50
RnJvbUJhY2tlbmQoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9pZCkgewogICAgICAgICAg
ICAgLy8gVGhlcmUgaXMgbm8gaWRlbnRpZmllciB0byByZXF1ZXN0IGNvbnRlbnQgd2l0aC4gUmV0
dXJuIGZhbHNlIHRvIGNhdXNlIHRoZQpAQCAtMTI1LDE1ICsxMTksMTUgQEAgV2ViSW5zcGVjdG9y
LlNjcmlwdC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gRGVidWdn
ZXJBZ2VudC5nZXRTY3JpcHRTb3VyY2UucHJvbWlzZSh0aGlzLl9pZCk7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBzYXZlSWRlbnRpdHlUb0Nvb2tpZTogZnVuY3Rpb24oY29va2llKQorICAgIHNhdmVJ
ZGVudGl0eVRvQ29va2llKGNvb2tpZSkKICAgICB7CiAgICAgICAgIGNvb2tpZVtXZWJJbnNwZWN0
b3IuU2NyaXB0LlVSTENvb2tpZUtleV0gPSB0aGlzLnVybDsKICAgICAgICAgY29va2llW1dlYklu
c3BlY3Rvci5TY3JpcHQuRGlzcGxheU5hbWVDb29raWVLZXldID0gdGhpcy5kaXNwbGF5TmFtZTsK
LSAgICB9LAorICAgIH0KIAotICAgIHJlcXVlc3RTY3JpcHRTeW50YXhUcmVlOiBmdW5jdGlvbihj
YWxsYmFjaykKKyAgICByZXF1ZXN0U2NyaXB0U3ludGF4VHJlZShjYWxsYmFjaykKICAgICB7CiAg
ICAgICAgIGlmICh0aGlzLl9zY3JpcHRTeW50YXhUcmVlKSB7CiAgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeyBjYWxsYmFjayh0aGlzLl9zY3JpcHRTeW50YXhUcmVlKTsgfS5iaW5k
KHRoaXMpLCAwKTsKQEAgLTE1OSwxMSArMTUzLDExIEBAIFdlYkluc3BlY3Rvci5TY3JpcHQucHJv
dG90eXBlID0gewogICAgICAgICB9KS5jYXRjaChmdW5jdGlvbihlcnJvcikgewogICAgICAgICAg
ICAgbWFrZVN5bnRheFRyZWVBbmRDYWxsQ2FsbGJhY2sobnVsbCk7CiAgICAgICAgIH0pOwotICAg
IH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX3Jlc29sdmVSZXNvdXJjZTogZnVu
Y3Rpb24oKQorICAgIF9yZXNvbHZlUmVzb3VyY2UoKQogICAgIHsKICAgICAgICAgLy8gRklYTUU6
IFdlIHNob3VsZCBiZSBhYmxlIHRvIGFzc29jaWF0ZSBhIFNjcmlwdCB3aXRoIGEgUmVzb3VyY2Ug
dGhyb3VnaCBpZGVudGlmaWVycywKICAgICAgICAgLy8gd2Ugc2hvdWxkbid0IG5lZWQgdG8gbG9v
a3VwIGJ5IFVSTCwgd2hpY2ggaXMgbm90IHNhZmUgd2l0aCBmcmFtZXMsIHdoZXJlIHRoZXJlIG1p
Z2h0CkBAIC0yMDgsOSArMjAyLDkgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdC5wcm90b3R5cGUgPSB7
CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gbnVsbDsKLSAgICB9LAorICAgIH0KIAotICAg
IF9tYWtlU3ludGF4VHJlZTogZnVuY3Rpb24oc291cmNlVGV4dCkKKyAgICBfbWFrZVN5bnRheFRy
ZWUoc291cmNlVGV4dCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9zY3JpcHRTeW50YXhUcmVl
IHx8ICFzb3VyY2VUZXh0KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjE4LDMgKzIxMiw5IEBA
IFdlYkluc3BlY3Rvci5TY3JpcHQucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9zY3JpcHRT
eW50YXhUcmVlID0gbmV3IFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhUcmVlKHNvdXJjZVRleHQs
IHRoaXMpOwogICAgIH0KIH07CisKK1dlYkluc3BlY3Rvci5TY3JpcHQuVHlwZUlkZW50aWZpZXIg
PSAic2NyaXB0IjsKK1dlYkluc3BlY3Rvci5TY3JpcHQuVVJMQ29va2llS2V5ID0gInNjcmlwdC11
cmwiOworV2ViSW5zcGVjdG9yLlNjcmlwdC5EaXNwbGF5TmFtZUNvb2tpZUtleSA9ICJzY3JpcHQt
ZGlzcGxheS1uYW1lIjsKKworV2ViSW5zcGVjdG9yLlNjcmlwdC5fbmV4dFVuaXF1ZURpc3BsYXlO
YW1lTnVtYmVyID0gMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL01vZGVscy9TY3JpcHRTeW50YXhUcmVlLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvTW9kZWxzL1NjcmlwdFN5bnRheFRyZWUuanMKaW5kZXggNWYwODM4YS4u
ZmVmZTNkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
TW9kZWxzL1NjcmlwdFN5bnRheFRyZWUuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvTW9kZWxzL1NjcmlwdFN5bnRheFRyZWUuanMKQEAgLTIzLDk3ICsyMyw0NCBA
QAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rv
ci5TY3JpcHRTeW50YXhUcmVlID0gZnVuY3Rpb24oc291cmNlVGV4dCwgc2NyaXB0KQorV2ViSW5z
cGVjdG9yLlNjcmlwdFN5bnRheFRyZWUgPSBjbGFzcyBTY3JpcHRTeW50YXhUcmVlIGV4dGVuZHMg
V2ViSW5zcGVjdG9yLk9iamVjdAogewotICAgIGNvbnNvbGUuYXNzZXJ0KHNjcmlwdCAmJiBzY3Jp
cHQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuU2NyaXB0LCBzY3JpcHQpOworICAgIGNvbnN0cnVj
dG9yKHNvdXJjZVRleHQsIHNjcmlwdCkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CiAKLSAgICBX
ZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7Ci0gICAgdGhpcy5fc2NyaXB0ID0gc2NyaXB0
OworICAgICAgICBjb25zb2xlLmFzc2VydChzY3JpcHQgJiYgc2NyaXB0IGluc3RhbmNlb2YgV2Vi
SW5zcGVjdG9yLlNjcmlwdCwgc2NyaXB0KTsKIAotICAgIHRyeSB7Ci0gICAgICAgIHZhciBlc3By
aW1hU3ludGF4VHJlZSA9IGVzcHJpbWEucGFyc2Uoc291cmNlVGV4dCwge3JhbmdlOiB0cnVlfSk7
Ci0gICAgICAgIHRoaXMuX3N5bnRheFRyZWUgPSB0aGlzLl9jcmVhdGVJbnRlcm5hbFN5bnRheFRy
ZWUoZXNwcmltYVN5bnRheFRyZWUpOwotICAgICAgICB0aGlzLl9wYXJzZWRTdWNjZXNzZnVsbHkg
PSB0cnVlOwotICAgIH0gY2F0Y2ggKGVycm9yKSB7Ci0gICAgICAgIHRoaXMuX3BhcnNlZFN1Y2Nl
c3NmdWxseSA9IGZhbHNlOwotICAgICAgICB0aGlzLl9zeW50YXhUcmVlID0gbnVsbDsKLSAgICAg
ICAgY29uc29sZS5lcnJvcigiQ291bGRuJ3QgcGFyc2UgSmF2YVNjcmlwdCBGaWxlOiAiICsgc2Ny
aXB0LnVybCwgZXJyb3IpOworICAgICAgICB0aGlzLl9zY3JpcHQgPSBzY3JpcHQ7CisKKyAgICAg
ICAgdHJ5IHsKKyAgICAgICAgICAgIHZhciBlc3ByaW1hU3ludGF4VHJlZSA9IGVzcHJpbWEucGFy
c2Uoc291cmNlVGV4dCwge3JhbmdlOiB0cnVlfSk7CisgICAgICAgICAgICB0aGlzLl9zeW50YXhU
cmVlID0gdGhpcy5fY3JlYXRlSW50ZXJuYWxTeW50YXhUcmVlKGVzcHJpbWFTeW50YXhUcmVlKTsK
KyAgICAgICAgICAgIHRoaXMuX3BhcnNlZFN1Y2Nlc3NmdWxseSA9IHRydWU7CisgICAgICAgIH0g
Y2F0Y2ggKGVycm9yKSB7CisgICAgICAgICAgICB0aGlzLl9wYXJzZWRTdWNjZXNzZnVsbHkgPSBm
YWxzZTsKKyAgICAgICAgICAgIHRoaXMuX3N5bnRheFRyZWUgPSBudWxsOworICAgICAgICAgICAg
Y29uc29sZS5lcnJvcigiQ291bGRuJ3QgcGFyc2UgSmF2YVNjcmlwdCBGaWxlOiAiICsgc2NyaXB0
LnVybCwgZXJyb3IpOworICAgICAgICB9CiAgICAgfQotfTsKLQotLy8gVGhpcyBzaG91bGQgYmUg
a2VwdCBpbiBzeW5jIHdpdGggYW4gZW51bSBpbiBKYXZhU2NpcHRDb3JlL3J1bnRpbWUvVHlwZVBy
b2ZpbGVyLmgKLVdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhUcmVlLlR5cGVQcm9maWxlclNlYXJj
aERlc2NyaXB0b3IgPSB7Ci0gICAgTm9ybWFsRXhwcmVzc2lvbjogMSwKLSAgICBGdW5jdGlvblJl
dHVybjogMgotfTsKLQotV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUgPSB7
Ci0gICAgQXNzaWdubWVudEV4cHJlc3Npb246IFN5bWJvbCgiYXNzaWdubWVudC1leHByZXNzaW9u
IiksCi0gICAgQXJyYXlFeHByZXNzaW9uOiBTeW1ib2woImFycmF5LWV4cHJlc3Npb24iKSwKLSAg
ICBBcnJheVBhdHRlcm46IFN5bWJvbCgiYXJyYXktcGF0dGVybiIpLAotICAgIEJsb2NrU3RhdGVt
ZW50OiBTeW1ib2woImJsb2NrLXN0YXRlbWVudCIpLAotICAgIEJpbmFyeUV4cHJlc3Npb246IFN5
bWJvbCgiYmluYXJ5LWV4cHJlc3Npb24iKSwKLSAgICBCcmVha1N0YXRlbWVudDogU3ltYm9sKCJi
cmVhay1zdGF0ZW1lbnQiKSwKLSAgICBDYWxsRXhwcmVzc2lvbjogU3ltYm9sKCJjYWxsLWV4cHJl
c3Npb24iKSwKLSAgICBDYXRjaENsYXVzZTogU3ltYm9sKCJjYXRjaC1jbGF1c2UiKSwKLSAgICBD
b25kaXRpb25hbEV4cHJlc3Npb246IFN5bWJvbCgiY29uZGl0aW9uYWwtZXhwcmVzc2lvbiIpLAot
ICAgIENvbnRpbnVlU3RhdGVtZW50OiBTeW1ib2woImNvbnRpbnVlLXN0YXRlbWVudCIpLAotICAg
IERvV2hpbGVTdGF0ZW1lbnQ6IFN5bWJvbCgiZG8td2hpbGUtc3RhdGVtZW50IiksCi0gICAgRGVi
dWdnZXJTdGF0ZW1lbnQ6IFN5bWJvbCgiZGVidWdnZXItc3RhdGVtZW50IiksCi0gICAgRW1wdHlT
dGF0ZW1lbnQ6IFN5bWJvbCgiZW1wdHktc3RhdGVtZW50IiksCi0gICAgRXhwcmVzc2lvblN0YXRl
bWVudDogU3ltYm9sKCJleHByZXNzaW9uLXN0YXRlbWVudCIpLAotICAgIEZvclN0YXRlbWVudDog
U3ltYm9sKCJmb3Itc3RhdGVtZW50IiksCi0gICAgRm9ySW5TdGF0ZW1lbnQ6IFN5bWJvbCgiZm9y
LWluLXN0YXRlbWVudCIpLAotICAgIEZvck9mU3RhdGVtZW50OiBTeW1ib2woImZvci1vZi1zdGF0
ZW1lbnQiKSwKLSAgICBGdW5jdGlvbkRlY2xhcmF0aW9uOiBTeW1ib2woImZ1bmN0aW9uLWRlY2xh
cmF0aW9uIiksCi0gICAgRnVuY3Rpb25FeHByZXNzaW9uOiBTeW1ib2woImZ1bmN0aW9uLWV4cHJl
c3Npb24iKSwKLSAgICBJZGVudGlmaWVyOiBTeW1ib2woImlkZW50aWZpZXIiKSwKLSAgICBJZlN0
YXRlbWVudDogU3ltYm9sKCJpZi1zdGF0ZW1lbnQiKSwKLSAgICBMaXRlcmFsOiBTeW1ib2woImxp
dGVyYWwiKSwKLSAgICBMYWJlbGVkU3RhdGVtZW50OiBTeW1ib2woImxhYmVsZWQtc3RhdGVtZW50
IiksCi0gICAgTG9naWNhbEV4cHJlc3Npb246IFN5bWJvbCgibG9naWNhbC1leHByZXNzaW9uIiks
Ci0gICAgTWVtYmVyRXhwcmVzc2lvbjogU3ltYm9sKCJtZW1iZXItZXhwcmVzc2lvbiIpLAotICAg
IE5ld0V4cHJlc3Npb246IFN5bWJvbCgibmV3LWV4cHJlc3Npb24iKSwKLSAgICBPYmplY3RFeHBy
ZXNzaW9uOiBTeW1ib2woIm9iamVjdC1leHByZXNzaW9uIiksCi0gICAgT2JqZWN0UGF0dGVybjog
U3ltYm9sKCJvYmplY3QtcGF0dGVybiIpLAotICAgIFByb2dyYW06IFN5bWJvbCgicHJvZ3JhbSIp
LAotICAgIFByb3BlcnR5OiBTeW1ib2woInByb3BlcnR5IiksCi0gICAgUmV0dXJuU3RhdGVtZW50
OiBTeW1ib2woInJldHVybi1zdGF0ZW1lbnQiKSwKLSAgICBTZXF1ZW5jZUV4cHJlc3Npb246IFN5
bWJvbCgic2VxdWVuY2UtZXhwcmVzc2lvbiIpLAotICAgIFN3aXRjaFN0YXRlbWVudDogU3ltYm9s
KCJzd2l0Y2gtc3RhdGVtZW50IiksCi0gICAgU3dpdGNoQ2FzZTogU3ltYm9sKCJzd2l0Y2gtY2Fz
ZSIpLAotICAgIFRoaXNFeHByZXNzaW9uOiBTeW1ib2woInRoaXMtZXhwcmVzc2lvbiIpLAotICAg
IFRocm93U3RhdGVtZW50OiBTeW1ib2woInRocm93LXN0YXRlbWVudCIpLAotICAgIFRyeVN0YXRl
bWVudDogU3ltYm9sKCJ0cnktc3RhdGVtZW50IiksCi0gICAgVW5hcnlFeHByZXNzaW9uOiBTeW1i
b2woInVuYXJ5LWV4cHJlc3Npb24iKSwKLSAgICBVcGRhdGVFeHByZXNzaW9uOiBTeW1ib2woInVw
ZGF0ZS1leHByZXNzaW9uIiksCi0gICAgVmFyaWFibGVEZWNsYXJhdGlvbjogU3ltYm9sKCJ2YXJp
YWJsZS1kZWNsYXJhdGlvbiIpLAotICAgIFZhcmlhYmxlRGVjbGFyYXRvcjogU3ltYm9sKCJ2YXJp
YWJsZS1kZWNsYXJhdG9yIiksCi0gICAgV2hpbGVTdGF0ZW1lbnQ6IFN5bWJvbCgid2hpbGUtc3Rh
dGVtZW50IiksCi0gICAgV2l0aFN0YXRlbWVudDogU3ltYm9sKCJ3aXRoLXN0YXRlbWVudCIpCi19
OwotCi1XZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5wcm90b3R5cGUgPSB7Ci0gICAgY29u
c3RydWN0b3I6IFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhUcmVlLAotICAgIF9fcHJvdG9fXzog
V2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGUsCiAKICAgICAvLyBQdWJsaWMKICAgICAKICAg
ICBnZXQgcGFyc2VkU3VjY2Vzc2Z1bGx5KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9w
YXJzZWRTdWNjZXNzZnVsbHk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBmb3JFYWNoTm9kZTogZnVu
Y3Rpb24oY2FsbGJhY2spCisgICAgZm9yRWFjaE5vZGUoY2FsbGJhY2spCiAgICAgewogICAgICAg
ICBjb25zb2xlLmFzc2VydCh0aGlzLl9wYXJzZWRTdWNjZXNzZnVsbHkpOwogICAgICAgICBpZiAo
IXRoaXMuX3BhcnNlZFN1Y2Nlc3NmdWxseSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAg
ICB0aGlzLl9yZWN1cnNlKHRoaXMuX3N5bnRheFRyZWUsIGNhbGxiYWNrLCB0aGlzLl9kZWZhdWx0
UGFyc2VyU3RhdGUoKSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBmaWx0ZXI6IGZ1bmN0aW9uKHBy
ZWRpY2F0ZSwgc3RhcnROb2RlKSAKKyAgICBmaWx0ZXIocHJlZGljYXRlLCBzdGFydE5vZGUpIAog
ICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoc3RhcnROb2RlICYmIHRoaXMuX3BhcnNlZFN1
Y2Nlc3NmdWxseSk7CiAgICAgICAgIGlmICghdGhpcy5fcGFyc2VkU3VjY2Vzc2Z1bGx5KQpAQCAt
MTMxLDE3ICs3OCwxNyBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5wcm90b3R5cGUg
PSB7CiAgICAgICAgIHRoaXMuX3JlY3Vyc2Uoc3RhcnROb2RlLCBmaWx0ZXIsIHRoaXMuX2RlZmF1
bHRQYXJzZXJTdGF0ZSgpKTsKIAogICAgICAgICByZXR1cm4gbm9kZXM7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBmaWx0ZXJCeVJhbmdlOiBmdW5jdGlvbihzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQor
ICAgIGZpbHRlckJ5UmFuZ2Uoc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAgICB7CiAgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3BhcnNlZFN1Y2Nlc3NmdWxseSk7CiAgICAgICAgIGlmICgh
dGhpcy5fcGFyc2VkU3VjY2Vzc2Z1bGx5KQogICAgICAgICAgICAgcmV0dXJuIFtdOwogICAgICAg
ICAKICAgICAgICAgdmFyIGFsbE5vZGVzID0gW107Ci0gICAgICAgIGNvbnN0IHN0YXJ0ID0gMDsK
LSAgICAgICAgY29uc3QgZW5kID0gMTsKKyAgICAgICAgdmFyIHN0YXJ0ID0gMDsKKyAgICAgICAg
dmFyIGVuZCA9IDE7CiAgICAgICAgIGZ1bmN0aW9uIGZpbHRlckZvck5vZGVzSW5SYW5nZShub2Rl
LCBzdGF0ZSkKICAgICAgICAgewogICAgICAgICAgICAgLy8gcHJvZ3JhbSBzdGFydCAgICAgICAg
cmFuZ2UgICAgICAgICAgICBwcm9ncmFtIGVuZApAQCAtMTY3LDkgKzExNCw5IEBAIFdlYkluc3Bl
Y3Rvci5TY3JpcHRTeW50YXhUcmVlLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5mb3JFYWNo
Tm9kZShmaWx0ZXJGb3JOb2Rlc0luUmFuZ2UpOwogCiAgICAgICAgIHJldHVybiBhbGxOb2RlczsK
LSAgICB9LAorICAgIH0KIAotICAgIGNvbnRhaW5zTm9uRW1wdHlSZXR1cm5TdGF0ZW1lbnQ6IGZ1
bmN0aW9uKHN0YXJ0Tm9kZSkKKyAgICBjb250YWluc05vbkVtcHR5UmV0dXJuU3RhdGVtZW50KHN0
YXJ0Tm9kZSkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHN0YXJ0Tm9kZSAmJiB0aGlz
Ll9wYXJzZWRTdWNjZXNzZnVsbHkpOwogICAgICAgICBpZiAoIXRoaXMuX3BhcnNlZFN1Y2Nlc3Nm
dWxseSkKQEAgLTE5Nyw5ICsxNDQsOSBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5w
cm90b3R5cGUgPSB7CiAgICAgICAgIHN0YXJ0Tm9kZS5hdHRhY2htZW50cy5faGFzTm9uRW1wdHlS
ZXR1cm5TdGF0ZW1lbnQgPSBoYXNOb25FbXB0eVJldHVyblN0YXRlbWVudDsKIAogICAgICAgICBy
ZXR1cm4gaGFzTm9uRW1wdHlSZXR1cm5TdGF0ZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB1
cGRhdGVUeXBlczogZnVuY3Rpb24obm9kZXNUb1VwZGF0ZSwgY2FsbGJhY2spCisgICAgdXBkYXRl
VHlwZXMobm9kZXNUb1VwZGF0ZSwgY2FsbGJhY2spCiAgICAgewogICAgICAgICBjb25zb2xlLmFz
c2VydChSdW50aW1lQWdlbnQuZ2V0UnVudGltZVR5cGVzRm9yVmFyaWFibGVzQXRPZmZzZXRzKTsK
ICAgICAgICAgY29uc29sZS5hc3NlcnQoQXJyYXkuaXNBcnJheShub2Rlc1RvVXBkYXRlKSAmJiB0
aGlzLl9wYXJzZWRTdWNjZXNzZnVsbHkpOwpAQCAtMjY4LDExICsyMTUsMTEgQEAgV2ViSW5zcGVj
dG9yLlNjcmlwdFN5bnRheFRyZWUucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAg
UnVudGltZUFnZW50LmdldFJ1bnRpbWVUeXBlc0ZvclZhcmlhYmxlc0F0T2Zmc2V0cyhhbGxSZXF1
ZXN0cywgaGFuZGxlVHlwZXMpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCi0g
ICAgX2dhdGhlcklkZW50aWZpZXJzSW5EZWNsYXJhdGlvbjogZnVuY3Rpb24obm9kZSkKKyAgICBf
Z2F0aGVySWRlbnRpZmllcnNJbkRlY2xhcmF0aW9uKG5vZGUpCiAgICAgewogICAgICAgICBmdW5j
dGlvbiBnYXRoZXJJZGVudGlmaWVycyhub2RlKSAKICAgICAgICAgewpAQCAtMzA0LDE3ICsyNTEs
MTcgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUucHJvdG90eXBlID0gewogICAgICAg
ICBjb25zb2xlLmFzc2VydChub2RlLnR5cGUgPT09IFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhU
cmVlLk5vZGVUeXBlLklkZW50aWZpZXIgfHwgbm9kZS50eXBlID09PSBXZWJJbnNwZWN0b3IuU2Ny
aXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5PYmplY3RQYXR0ZXJuIHx8IG5vZGUudHlwZSA9PT0gV2Vi
SW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuQXJyYXlQYXR0ZXJuKTsKIAogICAg
ICAgICByZXR1cm4gZ2F0aGVySWRlbnRpZmllcnMobm9kZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBfZGVmYXVsdFBhcnNlclN0YXRlOiBmdW5jdGlvbigpIAorICAgIF9kZWZhdWx0UGFyc2VyU3Rh
dGUoKSAKICAgICB7CiAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICBzaG91bGRTdG9wRWFy
bHk6IGZhbHNlLAogICAgICAgICAgICAgc2tpcENoaWxkTm9kZXM6IGZhbHNlCiAgICAgICAgIH07
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcmVjdXJzZTogZnVuY3Rpb24obm9kZSwgY2FsbGJhY2ss
IHN0YXRlKSAKKyAgICBfcmVjdXJzZShub2RlLCBjYWxsYmFjaywgc3RhdGUpIAogICAgIHsKICAg
ICAgICAgaWYgKCFub2RlKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNTE1LDE5ICs0NjIsMTkg
QEAgV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUucHJvdG90eXBlID0gewogICAgICAgICB9
CiAKICAgICAgICAgc3RhdGUuc2tpcENoaWxkTm9kZXMgPSBmYWxzZTsKLSAgICB9LAorICAgIH0K
IAotICAgIF9yZWN1cnNlQXJyYXk6IGZ1bmN0aW9uKGFycmF5LCBjYWxsYmFjaywgc3RhdGUpIAor
ICAgIF9yZWN1cnNlQXJyYXkoYXJyYXksIGNhbGxiYWNrLCBzdGF0ZSkgCiAgICAgewogICAgICAg
ICBmb3IgKHZhciBub2RlIG9mIGFycmF5KQogICAgICAgICAgICAgdGhpcy5fcmVjdXJzZShub2Rl
LCBjYWxsYmFjaywgc3RhdGUpOwotICAgIH0sCisgICAgfQogICAgIAogICAgIC8vIFRoaXMgZnVu
Y3Rpb24gdHJhbnNsYXRlcyBmcm9tIGVzcHJpbWEncyBBYnN0cmFjdCBTeW50YXggVHJlZSB0byBv
dXJzLiAKICAgICAvLyBNb3N0bHksIHRoaXMgaXMganVzdCB0aGUgaWRlbnRpdHkgZnVuY3Rpb24u
IFdlJ3ZlIGFkZGVkIGFuIGV4dHJhIGlzR2V0dGVyT3JTZXR0ZXIgcHJvcGVydHkgZm9yIGZ1bmN0
aW9ucy4KICAgICAvLyBPdXIgQVNUIGNvbXBsaWVzIHdpdGggdGhlIE1vemlsbGEgcGFyc2VyIEFQ
SToKICAgICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL01vemls
bGEvUHJvamVjdHMvU3BpZGVyTW9ua2V5L1BhcnNlcl9BUEkKLSAgICBfY3JlYXRlSW50ZXJuYWxT
eW50YXhUcmVlOiBmdW5jdGlvbihub2RlKSAKKyAgICBfY3JlYXRlSW50ZXJuYWxTeW50YXhUcmVl
KG5vZGUpIAogICAgIHsKICAgICAgICAgaWYgKCFub2RlKQogICAgICAgICAgICAgcmV0dXJuIG51
bGw7CkBAIC04NDksMyArNzk2LDU1IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhUcmVlLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiB9OworCisvLyBUaGlz
IHNob3VsZCBiZSBrZXB0IGluIHN5bmMgd2l0aCBhbiBlbnVtIGluIEphdmFTY2lwdENvcmUvcnVu
dGltZS9UeXBlUHJvZmlsZXIuaAorV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuVHlwZVBy
b2ZpbGVyU2VhcmNoRGVzY3JpcHRvciA9IHsKKyAgICBOb3JtYWxFeHByZXNzaW9uOiAxLAorICAg
IEZ1bmN0aW9uUmV0dXJuOiAyCit9OworCitXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5O
b2RlVHlwZSA9IHsKKyAgICBBc3NpZ25tZW50RXhwcmVzc2lvbjogU3ltYm9sKCJhc3NpZ25tZW50
LWV4cHJlc3Npb24iKSwKKyAgICBBcnJheUV4cHJlc3Npb246IFN5bWJvbCgiYXJyYXktZXhwcmVz
c2lvbiIpLAorICAgIEFycmF5UGF0dGVybjogU3ltYm9sKCJhcnJheS1wYXR0ZXJuIiksCisgICAg
QmxvY2tTdGF0ZW1lbnQ6IFN5bWJvbCgiYmxvY2stc3RhdGVtZW50IiksCisgICAgQmluYXJ5RXhw
cmVzc2lvbjogU3ltYm9sKCJiaW5hcnktZXhwcmVzc2lvbiIpLAorICAgIEJyZWFrU3RhdGVtZW50
OiBTeW1ib2woImJyZWFrLXN0YXRlbWVudCIpLAorICAgIENhbGxFeHByZXNzaW9uOiBTeW1ib2wo
ImNhbGwtZXhwcmVzc2lvbiIpLAorICAgIENhdGNoQ2xhdXNlOiBTeW1ib2woImNhdGNoLWNsYXVz
ZSIpLAorICAgIENvbmRpdGlvbmFsRXhwcmVzc2lvbjogU3ltYm9sKCJjb25kaXRpb25hbC1leHBy
ZXNzaW9uIiksCisgICAgQ29udGludWVTdGF0ZW1lbnQ6IFN5bWJvbCgiY29udGludWUtc3RhdGVt
ZW50IiksCisgICAgRG9XaGlsZVN0YXRlbWVudDogU3ltYm9sKCJkby13aGlsZS1zdGF0ZW1lbnQi
KSwKKyAgICBEZWJ1Z2dlclN0YXRlbWVudDogU3ltYm9sKCJkZWJ1Z2dlci1zdGF0ZW1lbnQiKSwK
KyAgICBFbXB0eVN0YXRlbWVudDogU3ltYm9sKCJlbXB0eS1zdGF0ZW1lbnQiKSwKKyAgICBFeHBy
ZXNzaW9uU3RhdGVtZW50OiBTeW1ib2woImV4cHJlc3Npb24tc3RhdGVtZW50IiksCisgICAgRm9y
U3RhdGVtZW50OiBTeW1ib2woImZvci1zdGF0ZW1lbnQiKSwKKyAgICBGb3JJblN0YXRlbWVudDog
U3ltYm9sKCJmb3ItaW4tc3RhdGVtZW50IiksCisgICAgRm9yT2ZTdGF0ZW1lbnQ6IFN5bWJvbCgi
Zm9yLW9mLXN0YXRlbWVudCIpLAorICAgIEZ1bmN0aW9uRGVjbGFyYXRpb246IFN5bWJvbCgiZnVu
Y3Rpb24tZGVjbGFyYXRpb24iKSwKKyAgICBGdW5jdGlvbkV4cHJlc3Npb246IFN5bWJvbCgiZnVu
Y3Rpb24tZXhwcmVzc2lvbiIpLAorICAgIElkZW50aWZpZXI6IFN5bWJvbCgiaWRlbnRpZmllciIp
LAorICAgIElmU3RhdGVtZW50OiBTeW1ib2woImlmLXN0YXRlbWVudCIpLAorICAgIExpdGVyYWw6
IFN5bWJvbCgibGl0ZXJhbCIpLAorICAgIExhYmVsZWRTdGF0ZW1lbnQ6IFN5bWJvbCgibGFiZWxl
ZC1zdGF0ZW1lbnQiKSwKKyAgICBMb2dpY2FsRXhwcmVzc2lvbjogU3ltYm9sKCJsb2dpY2FsLWV4
cHJlc3Npb24iKSwKKyAgICBNZW1iZXJFeHByZXNzaW9uOiBTeW1ib2woIm1lbWJlci1leHByZXNz
aW9uIiksCisgICAgTmV3RXhwcmVzc2lvbjogU3ltYm9sKCJuZXctZXhwcmVzc2lvbiIpLAorICAg
IE9iamVjdEV4cHJlc3Npb246IFN5bWJvbCgib2JqZWN0LWV4cHJlc3Npb24iKSwKKyAgICBPYmpl
Y3RQYXR0ZXJuOiBTeW1ib2woIm9iamVjdC1wYXR0ZXJuIiksCisgICAgUHJvZ3JhbTogU3ltYm9s
KCJwcm9ncmFtIiksCisgICAgUHJvcGVydHk6IFN5bWJvbCgicHJvcGVydHkiKSwKKyAgICBSZXR1
cm5TdGF0ZW1lbnQ6IFN5bWJvbCgicmV0dXJuLXN0YXRlbWVudCIpLAorICAgIFNlcXVlbmNlRXhw
cmVzc2lvbjogU3ltYm9sKCJzZXF1ZW5jZS1leHByZXNzaW9uIiksCisgICAgU3dpdGNoU3RhdGVt
ZW50OiBTeW1ib2woInN3aXRjaC1zdGF0ZW1lbnQiKSwKKyAgICBTd2l0Y2hDYXNlOiBTeW1ib2wo
InN3aXRjaC1jYXNlIiksCisgICAgVGhpc0V4cHJlc3Npb246IFN5bWJvbCgidGhpcy1leHByZXNz
aW9uIiksCisgICAgVGhyb3dTdGF0ZW1lbnQ6IFN5bWJvbCgidGhyb3ctc3RhdGVtZW50IiksCisg
ICAgVHJ5U3RhdGVtZW50OiBTeW1ib2woInRyeS1zdGF0ZW1lbnQiKSwKKyAgICBVbmFyeUV4cHJl
c3Npb246IFN5bWJvbCgidW5hcnktZXhwcmVzc2lvbiIpLAorICAgIFVwZGF0ZUV4cHJlc3Npb246
IFN5bWJvbCgidXBkYXRlLWV4cHJlc3Npb24iKSwKKyAgICBWYXJpYWJsZURlY2xhcmF0aW9uOiBT
eW1ib2woInZhcmlhYmxlLWRlY2xhcmF0aW9uIiksCisgICAgVmFyaWFibGVEZWNsYXJhdG9yOiBT
eW1ib2woInZhcmlhYmxlLWRlY2xhcmF0b3IiKSwKKyAgICBXaGlsZVN0YXRlbWVudDogU3ltYm9s
KCJ3aGlsZS1zdGF0ZW1lbnQiKSwKKyAgICBXaXRoU3RhdGVtZW50OiBTeW1ib2woIndpdGgtc3Rh
dGVtZW50IikKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Nb2RlbHMvU2NyaXB0VGltZWxpbmVSZWNvcmQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Nb2RlbHMvU2NyaXB0VGltZWxpbmVSZWNvcmQuanMKaW5kZXggNGRj
M2M3ZC4uOWE0ZmVhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvTW9kZWxzL1NjcmlwdFRpbWVsaW5lUmVjb3JkLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9TY3JpcHRUaW1lbGluZVJlY29yZC5qcwpAQCAt
MjMsMTkgKzIzLDEyMSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKLVdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZVJlY29yZCA9IGZ1bmN0aW9uKGV2ZW50VHlw
ZSwgc3RhcnRUaW1lLCBlbmRUaW1lLCBjYWxsRnJhbWVzLCBzb3VyY2VDb2RlTG9jYXRpb24sIGRl
dGFpbHMsIHByb2ZpbGVQYXlsb2FkKQorV2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5lUmVjb3Jk
ID0gY2xhc3MgU2NyaXB0VGltZWxpbmVSZWNvcmQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuVGltZWxp
bmVSZWNvcmQKIHsKLSAgICBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQuY2FsbCh0aGlzLCBX
ZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQuVHlwZS5TY3JpcHQsIHN0YXJ0VGltZSwgZW5kVGlt
ZSwgY2FsbEZyYW1lcywgc291cmNlQ29kZUxvY2F0aW9uKTsKKyAgICBjb25zdHJ1Y3RvcihldmVu
dFR5cGUsIHN0YXJ0VGltZSwgZW5kVGltZSwgY2FsbEZyYW1lcywgc291cmNlQ29kZUxvY2F0aW9u
LCBkZXRhaWxzLCBwcm9maWxlUGF5bG9hZCkKKyAgICB7CisgICAgICAgIHN1cGVyKFdlYkluc3Bl
Y3Rvci5UaW1lbGluZVJlY29yZC5UeXBlLlNjcmlwdCwgc3RhcnRUaW1lLCBlbmRUaW1lLCBjYWxs
RnJhbWVzLCBzb3VyY2VDb2RlTG9jYXRpb24pOwogCi0gICAgY29uc29sZS5hc3NlcnQoZXZlbnRU
eXBlKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoZXZlbnRUeXBlKTsKIAotICAgIGlmIChldmVu
dFR5cGUgaW4gV2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5lUmVjb3JkLkV2ZW50VHlwZSkKLSAg
ICAgICAgZXZlbnRUeXBlID0gV2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5lUmVjb3JkLkV2ZW50
VHlwZVtldmVudFR5cGVdOworICAgICAgICBpZiAoZXZlbnRUeXBlIGluIFdlYkluc3BlY3Rvci5T
Y3JpcHRUaW1lbGluZVJlY29yZC5FdmVudFR5cGUpCisgICAgICAgICAgICBldmVudFR5cGUgPSBX
ZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVSZWNvcmQuRXZlbnRUeXBlW2V2ZW50VHlwZV07CiAK
LSAgICB0aGlzLl9ldmVudFR5cGUgPSBldmVudFR5cGU7Ci0gICAgdGhpcy5fZGV0YWlscyA9IGRl
dGFpbHMgfHwgIiI7Ci0gICAgdGhpcy5fcHJvZmlsZVBheWxvYWQgPSBwcm9maWxlUGF5bG9hZCB8
fCBudWxsOwotICAgIHRoaXMuX3Byb2ZpbGUgPSBudWxsOworICAgICAgICB0aGlzLl9ldmVudFR5
cGUgPSBldmVudFR5cGU7CisgICAgICAgIHRoaXMuX2RldGFpbHMgPSBkZXRhaWxzIHx8ICIiOwor
ICAgICAgICB0aGlzLl9wcm9maWxlUGF5bG9hZCA9IHByb2ZpbGVQYXlsb2FkIHx8IG51bGw7Cisg
ICAgICAgIHRoaXMuX3Byb2ZpbGUgPSBudWxsOworICAgIH0KKworICAgIC8vIFB1YmxpYworCisg
ICAgZ2V0IGV2ZW50VHlwZSgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fZXZlbnRUeXBl
OworICAgIH0KKworICAgIGdldCBkZXRhaWxzKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlz
Ll9kZXRhaWxzOworICAgIH0KKworICAgIGdldCBwcm9maWxlKCkKKyAgICB7CisgICAgICAgIHRo
aXMuX2luaXRpYWxpemVQcm9maWxlRnJvbVBheWxvYWQoKTsKKyAgICAgICAgcmV0dXJuIHRoaXMu
X3Byb2ZpbGU7CisgICAgfQorCisgICAgc2F2ZUlkZW50aXR5VG9Db29raWUoY29va2llKQorICAg
IHsKKyAgICAgICAgc3VwZXIuc2F2ZUlkZW50aXR5VG9Db29raWUoY29va2llKTsKKworICAgICAg
ICBjb29raWVbV2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5lUmVjb3JkLkV2ZW50VHlwZUNvb2tp
ZUtleV0gPSB0aGlzLl9ldmVudFR5cGU7CisgICAgICAgIGNvb2tpZVtXZWJJbnNwZWN0b3IuU2Ny
aXB0VGltZWxpbmVSZWNvcmQuRGV0YWlsc0Nvb2tpZUtleV0gPSB0aGlzLl9kZXRhaWxzOworICAg
IH0KKworICAgIC8vIFByaXZhdGUKKworICAgIF9pbml0aWFsaXplUHJvZmlsZUZyb21QYXlsb2Fk
KHBheWxvYWQpCisgICAgeworICAgICAgICBpZiAodGhpcy5fcHJvZmlsZSB8fCAhdGhpcy5fcHJv
ZmlsZVBheWxvYWQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdmFyIHBheWxvYWQg
PSB0aGlzLl9wcm9maWxlUGF5bG9hZDsKKyAgICAgICAgZGVsZXRlIHRoaXMuX3Byb2ZpbGVQYXls
b2FkOworCisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHBheWxvYWQucm9vdE5vZGVzIGluc3RhbmNl
b2YgQXJyYXkpOworCisgICAgICAgIGZ1bmN0aW9uIHByb2ZpbGVOb2RlRnJvbVBheWxvYWQobm9k
ZVBheWxvYWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCJpZCIgaW4g
bm9kZVBheWxvYWQpOworICAgICAgICAgICAgY29uc29sZS5hc3NlcnQobm9kZVBheWxvYWQuY2Fs
bHMgaW5zdGFuY2VvZiBBcnJheSk7CisKKyAgICAgICAgICAgIGlmIChub2RlUGF5bG9hZC51cmwp
IHsKKyAgICAgICAgICAgICAgICB2YXIgc291cmNlQ29kZSA9IFdlYkluc3BlY3Rvci5mcmFtZVJl
c291cmNlTWFuYWdlci5yZXNvdXJjZUZvclVSTChub2RlUGF5bG9hZC51cmwpOworICAgICAgICAg
ICAgICAgIGlmICghc291cmNlQ29kZSkKKyAgICAgICAgICAgICAgICAgICAgc291cmNlQ29kZSA9
IFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIuc2NyaXB0c0ZvclVSTChub2RlUGF5bG9hZC51
cmwpWzBdOworCisgICAgICAgICAgICAgICAgLy8gVGhlIGxpbmVOdW1iZXIgaXMgMS1iYXNlZCwg
YnV0IHdlIGV4cGVjdCAwLWJhc2VkLgorICAgICAgICAgICAgICAgIHZhciBsaW5lTnVtYmVyID0g
bm9kZVBheWxvYWQubGluZU51bWJlciAtIDE7CisKKyAgICAgICAgICAgICAgICB2YXIgc291cmNl
Q29kZUxvY2F0aW9uID0gc291cmNlQ29kZSA/IHNvdXJjZUNvZGUuY3JlYXRlTGF6eVNvdXJjZUNv
ZGVMb2NhdGlvbihsaW5lTnVtYmVyLCBub2RlUGF5bG9hZC5jb2x1bW5OdW1iZXIpIDogbnVsbDsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIGlzUHJvZ3JhbUNvZGUgPSBub2RlUGF5
bG9hZC5mdW5jdGlvbk5hbWUgPT09ICIocHJvZ3JhbSkiOworICAgICAgICAgICAgdmFyIGlzQW5v
bnltb3VzRnVuY3Rpb24gPSBub2RlUGF5bG9hZC5mdW5jdGlvbk5hbWUgPT09ICIoYW5vbnltb3Vz
IGZ1bmN0aW9uKSI7CisKKyAgICAgICAgICAgIHZhciB0eXBlID0gaXNQcm9ncmFtQ29kZSA/IFdl
Ykluc3BlY3Rvci5Qcm9maWxlTm9kZS5UeXBlLlByb2dyYW0gOiBXZWJJbnNwZWN0b3IuUHJvZmls
ZU5vZGUuVHlwZS5GdW5jdGlvbjsKKyAgICAgICAgICAgIHZhciBmdW5jdGlvbk5hbWUgPSAhaXNQ
cm9ncmFtQ29kZSAmJiAhaXNBbm9ueW1vdXNGdW5jdGlvbiAmJiBub2RlUGF5bG9hZC5mdW5jdGlv
bk5hbWUgIT09ICIodW5rbm93bikiID8gbm9kZVBheWxvYWQuZnVuY3Rpb25OYW1lIDogbnVsbDsK
KyAgICAgICAgICAgIHZhciBjYWxscyA9IG5vZGVQYXlsb2FkLmNhbGxzLm1hcChwcm9maWxlTm9k
ZUNhbGxGcm9tUGF5bG9hZCk7CisKKyAgICAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9y
LlByb2ZpbGVOb2RlKG5vZGVQYXlsb2FkLmlkLCB0eXBlLCBmdW5jdGlvbk5hbWUsIHNvdXJjZUNv
ZGVMb2NhdGlvbiwgY2FsbHMsIG5vZGVQYXlsb2FkLmNoaWxkcmVuKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIHByb2ZpbGVOb2RlQ2FsbEZyb21QYXlsb2FkKG5vZGVDYWxsUGF5bG9h
ZCkKKyAgICAgICAgeworICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoInN0YXJ0VGltZSIgaW4g
bm9kZUNhbGxQYXlsb2FkKTsKKyAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCJ0b3RhbFRpbWUi
IGluIG5vZGVDYWxsUGF5bG9hZCk7CisKKyAgICAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVj
dG9yLlByb2ZpbGVOb2RlQ2FsbChub2RlQ2FsbFBheWxvYWQuc3RhcnRUaW1lLCBub2RlQ2FsbFBh
eWxvYWQudG90YWxUaW1lKTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciByb290Tm9kZXMgPSBw
YXlsb2FkLnJvb3ROb2RlczsKKworICAgICAgICAvLyBJdGVyYXRlIG92ZXIgdGhlIG5vZGUgdHJl
ZSB1c2luZyBhIHN0YWNrLiBEb2luZyB0aGlzIHJlY3Vyc2l2ZWx5IGNhbiBlYXNpbHkgY2F1c2Ug
YSBzdGFjayBvdmVyZmxvdy4KKyAgICAgICAgLy8gV2UgdHJhdmVyc2UgdGhlIHByb2ZpbGUgaW4g
cG9zdC1vcmRlciBhbmQgY29udmVydCB0aGUgcGF5bG9hZHMgaW4gcGxhY2UgdW50aWwgd2UgZ2V0
IGJhY2sgdG8gdGhlIHJvb3QuCisgICAgICAgIHZhciBzdGFjayA9IFt7cGFyZW50OiB7Y2hpbGRy
ZW46IHJvb3ROb2Rlc30sIGluZGV4OiAwLCByb290OiB0cnVlfV07CisgICAgICAgIHdoaWxlIChz
dGFjay5sZW5ndGgpIHsKKyAgICAgICAgICAgIHZhciBlbnRyeSA9IHN0YWNrLmxhc3RWYWx1ZTsK
KworICAgICAgICAgICAgaWYgKGVudHJ5LmluZGV4IDwgZW50cnkucGFyZW50LmNoaWxkcmVuLmxl
bmd0aCkgeworICAgICAgICAgICAgICAgIHZhciBjaGlsZE5vZGVQYXlsb2FkID0gZW50cnkucGFy
ZW50LmNoaWxkcmVuW2VudHJ5LmluZGV4XTsKKyAgICAgICAgICAgICAgICBpZiAoY2hpbGROb2Rl
UGF5bG9hZC5jaGlsZHJlbiAmJiBjaGlsZE5vZGVQYXlsb2FkLmNoaWxkcmVuLmxlbmd0aCkKKyAg
ICAgICAgICAgICAgICAgICAgc3RhY2sucHVzaCh7cGFyZW50OiBjaGlsZE5vZGVQYXlsb2FkLCBp
bmRleDogMH0pOworCisgICAgICAgICAgICAgICAgKytlbnRyeS5pbmRleDsKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKCFlbnRyeS5yb290KQorICAgICAgICAgICAg
ICAgICAgICBlbnRyeS5wYXJlbnQuY2hpbGRyZW4gPSBlbnRyeS5wYXJlbnQuY2hpbGRyZW4ubWFw
KHByb2ZpbGVOb2RlRnJvbVBheWxvYWQpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICAgICAgcm9vdE5vZGVzID0gcm9vdE5vZGVzLm1hcChwcm9maWxlTm9kZUZyb21QYXls
b2FkKTsKKworICAgICAgICAgICAgICAgIHN0YWNrLnBvcCgpOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisKKyAgICAgICAgdGhpcy5fcHJvZmlsZSA9IG5ldyBXZWJJbnNwZWN0b3IuUHJvZmls
ZShyb290Tm9kZXMpOworICAgIH0KIH07CiAKIFdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZVJl
Y29yZC5FdmVudFR5cGUgPSB7CkBAIC0yNDYsMTA4ICszNDgsMyBAQCBXZWJJbnNwZWN0b3IuU2Ny
aXB0VGltZWxpbmVSZWNvcmQuRXZlbnRUeXBlLmRpc3BsYXlOYW1lID0gZnVuY3Rpb24oZXZlbnRU
eXBlLCBkZQogV2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5lUmVjb3JkLlR5cGVJZGVudGlmaWVy
ID0gInNjcmlwdC10aW1lbGluZS1yZWNvcmQiOwogV2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5l
UmVjb3JkLkV2ZW50VHlwZUNvb2tpZUtleSA9ICJzY3JpcHQtdGltZWxpbmUtcmVjb3JkLWV2ZW50
LXR5cGUiOwogV2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5lUmVjb3JkLkRldGFpbHNDb29raWVL
ZXkgPSAic2NyaXB0LXRpbWVsaW5lLXJlY29yZC1kZXRhaWxzIjsKLQotV2ViSW5zcGVjdG9yLlNj
cmlwdFRpbWVsaW5lUmVjb3JkLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5z
cGVjdG9yLlNjcmlwdFRpbWVsaW5lUmVjb3JkLAotCi0gICAgLy8gUHVibGljCi0KLSAgICBnZXQg
ZXZlbnRUeXBlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9ldmVudFR5cGU7Ci0gICAg
fSwKLQotICAgIGdldCBkZXRhaWxzKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9kZXRh
aWxzOwotICAgIH0sCi0KLSAgICBnZXQgcHJvZmlsZSgpCi0gICAgewotICAgICAgICB0aGlzLl9p
bml0aWFsaXplUHJvZmlsZUZyb21QYXlsb2FkKCk7Ci0gICAgICAgIHJldHVybiB0aGlzLl9wcm9m
aWxlOwotICAgIH0sCi0KLSAgICBzYXZlSWRlbnRpdHlUb0Nvb2tpZTogZnVuY3Rpb24oY29va2ll
KQotICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkLnByb3RvdHlwZS5z
YXZlSWRlbnRpdHlUb0Nvb2tpZS5jYWxsKHRoaXMsIGNvb2tpZSk7Ci0KLSAgICAgICAgY29va2ll
W1dlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZVJlY29yZC5FdmVudFR5cGVDb29raWVLZXldID0g
dGhpcy5fZXZlbnRUeXBlOwotICAgICAgICBjb29raWVbV2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVs
aW5lUmVjb3JkLkRldGFpbHNDb29raWVLZXldID0gdGhpcy5fZGV0YWlsczsKLSAgICB9LAotCi0g
ICAgLy8gUHJpdmF0ZQotCi0gICAgX2luaXRpYWxpemVQcm9maWxlRnJvbVBheWxvYWQ6IGZ1bmN0
aW9uKHBheWxvYWQpCi0gICAgewotICAgICAgICBpZiAodGhpcy5fcHJvZmlsZSB8fCAhdGhpcy5f
cHJvZmlsZVBheWxvYWQpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdmFyIHBheWxv
YWQgPSB0aGlzLl9wcm9maWxlUGF5bG9hZDsKLSAgICAgICAgZGVsZXRlIHRoaXMuX3Byb2ZpbGVQ
YXlsb2FkOwotCi0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHBheWxvYWQucm9vdE5vZGVzIGluc3Rh
bmNlb2YgQXJyYXkpOwotCi0gICAgICAgIGZ1bmN0aW9uIHByb2ZpbGVOb2RlRnJvbVBheWxvYWQo
bm9kZVBheWxvYWQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCJpZCIg
aW4gbm9kZVBheWxvYWQpOwotICAgICAgICAgICAgY29uc29sZS5hc3NlcnQobm9kZVBheWxvYWQu
Y2FsbHMgaW5zdGFuY2VvZiBBcnJheSk7Ci0KLSAgICAgICAgICAgIGlmIChub2RlUGF5bG9hZC51
cmwpIHsKLSAgICAgICAgICAgICAgICB2YXIgc291cmNlQ29kZSA9IFdlYkluc3BlY3Rvci5mcmFt
ZVJlc291cmNlTWFuYWdlci5yZXNvdXJjZUZvclVSTChub2RlUGF5bG9hZC51cmwpOwotICAgICAg
ICAgICAgICAgIGlmICghc291cmNlQ29kZSkKLSAgICAgICAgICAgICAgICAgICAgc291cmNlQ29k
ZSA9IFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIuc2NyaXB0c0ZvclVSTChub2RlUGF5bG9h
ZC51cmwpWzBdOwotCi0gICAgICAgICAgICAgICAgLy8gVGhlIGxpbmVOdW1iZXIgaXMgMS1iYXNl
ZCwgYnV0IHdlIGV4cGVjdCAwLWJhc2VkLgotICAgICAgICAgICAgICAgIHZhciBsaW5lTnVtYmVy
ID0gbm9kZVBheWxvYWQubGluZU51bWJlciAtIDE7Ci0KLSAgICAgICAgICAgICAgICB2YXIgc291
cmNlQ29kZUxvY2F0aW9uID0gc291cmNlQ29kZSA/IHNvdXJjZUNvZGUuY3JlYXRlTGF6eVNvdXJj
ZUNvZGVMb2NhdGlvbihsaW5lTnVtYmVyLCBub2RlUGF5bG9hZC5jb2x1bW5OdW1iZXIpIDogbnVs
bDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdmFyIGlzUHJvZ3JhbUNvZGUgPSBub2Rl
UGF5bG9hZC5mdW5jdGlvbk5hbWUgPT09ICIocHJvZ3JhbSkiOwotICAgICAgICAgICAgdmFyIGlz
QW5vbnltb3VzRnVuY3Rpb24gPSBub2RlUGF5bG9hZC5mdW5jdGlvbk5hbWUgPT09ICIoYW5vbnlt
b3VzIGZ1bmN0aW9uKSI7Ci0KLSAgICAgICAgICAgIHZhciB0eXBlID0gaXNQcm9ncmFtQ29kZSA/
IFdlYkluc3BlY3Rvci5Qcm9maWxlTm9kZS5UeXBlLlByb2dyYW0gOiBXZWJJbnNwZWN0b3IuUHJv
ZmlsZU5vZGUuVHlwZS5GdW5jdGlvbjsKLSAgICAgICAgICAgIHZhciBmdW5jdGlvbk5hbWUgPSAh
aXNQcm9ncmFtQ29kZSAmJiAhaXNBbm9ueW1vdXNGdW5jdGlvbiAmJiBub2RlUGF5bG9hZC5mdW5j
dGlvbk5hbWUgIT09ICIodW5rbm93bikiID8gbm9kZVBheWxvYWQuZnVuY3Rpb25OYW1lIDogbnVs
bDsKLSAgICAgICAgICAgIHZhciBjYWxscyA9IG5vZGVQYXlsb2FkLmNhbGxzLm1hcChwcm9maWxl
Tm9kZUNhbGxGcm9tUGF5bG9hZCk7Ci0KLSAgICAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVj
dG9yLlByb2ZpbGVOb2RlKG5vZGVQYXlsb2FkLmlkLCB0eXBlLCBmdW5jdGlvbk5hbWUsIHNvdXJj
ZUNvZGVMb2NhdGlvbiwgY2FsbHMsIG5vZGVQYXlsb2FkLmNoaWxkcmVuKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIGZ1bmN0aW9uIHByb2ZpbGVOb2RlQ2FsbEZyb21QYXlsb2FkKG5vZGVDYWxsUGF5
bG9hZCkKLSAgICAgICAgewotICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoInN0YXJ0VGltZSIg
aW4gbm9kZUNhbGxQYXlsb2FkKTsKLSAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCJ0b3RhbFRp
bWUiIGluIG5vZGVDYWxsUGF5bG9hZCk7Ci0KLSAgICAgICAgICAgIHJldHVybiBuZXcgV2ViSW5z
cGVjdG9yLlByb2ZpbGVOb2RlQ2FsbChub2RlQ2FsbFBheWxvYWQuc3RhcnRUaW1lLCBub2RlQ2Fs
bFBheWxvYWQudG90YWxUaW1lKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZhciByb290Tm9kZXMg
PSBwYXlsb2FkLnJvb3ROb2RlczsKLQotICAgICAgICAvLyBJdGVyYXRlIG92ZXIgdGhlIG5vZGUg
dHJlZSB1c2luZyBhIHN0YWNrLiBEb2luZyB0aGlzIHJlY3Vyc2l2ZWx5IGNhbiBlYXNpbHkgY2F1
c2UgYSBzdGFjayBvdmVyZmxvdy4KLSAgICAgICAgLy8gV2UgdHJhdmVyc2UgdGhlIHByb2ZpbGUg
aW4gcG9zdC1vcmRlciBhbmQgY29udmVydCB0aGUgcGF5bG9hZHMgaW4gcGxhY2UgdW50aWwgd2Ug
Z2V0IGJhY2sgdG8gdGhlIHJvb3QuCi0gICAgICAgIHZhciBzdGFjayA9IFt7cGFyZW50OiB7Y2hp
bGRyZW46IHJvb3ROb2Rlc30sIGluZGV4OiAwLCByb290OiB0cnVlfV07Ci0gICAgICAgIHdoaWxl
IChzdGFjay5sZW5ndGgpIHsKLSAgICAgICAgICAgIHZhciBlbnRyeSA9IHN0YWNrLmxhc3RWYWx1
ZTsKLQotICAgICAgICAgICAgaWYgKGVudHJ5LmluZGV4IDwgZW50cnkucGFyZW50LmNoaWxkcmVu
Lmxlbmd0aCkgewotICAgICAgICAgICAgICAgIHZhciBjaGlsZE5vZGVQYXlsb2FkID0gZW50cnku
cGFyZW50LmNoaWxkcmVuW2VudHJ5LmluZGV4XTsKLSAgICAgICAgICAgICAgICBpZiAoY2hpbGRO
b2RlUGF5bG9hZC5jaGlsZHJlbiAmJiBjaGlsZE5vZGVQYXlsb2FkLmNoaWxkcmVuLmxlbmd0aCkK
LSAgICAgICAgICAgICAgICAgICAgc3RhY2sucHVzaCh7cGFyZW50OiBjaGlsZE5vZGVQYXlsb2Fk
LCBpbmRleDogMH0pOwotCi0gICAgICAgICAgICAgICAgKytlbnRyeS5pbmRleDsKLSAgICAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFlbnRyeS5yb290KQotICAgICAgICAg
ICAgICAgICAgICBlbnRyeS5wYXJlbnQuY2hpbGRyZW4gPSBlbnRyeS5wYXJlbnQuY2hpbGRyZW4u
bWFwKHByb2ZpbGVOb2RlRnJvbVBheWxvYWQpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICAgICAgcm9vdE5vZGVzID0gcm9vdE5vZGVzLm1hcChwcm9maWxlTm9kZUZyb21Q
YXlsb2FkKTsKLQotICAgICAgICAgICAgICAgIHN0YWNrLnBvcCgpOwotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0KLSAgICAgICAgdGhpcy5fcHJvZmlsZSA9IG5ldyBXZWJJbnNwZWN0b3IuUHJv
ZmlsZShyb290Tm9kZXMpOwotICAgIH0KLX07Ci0KLVdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGlu
ZVJlY29yZC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3Jk
LnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01vZGVscy9TZXR0aW5nLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvTW9kZWxzL1NldHRpbmcuanMKaW5kZXggYjVlNjUzNy4uMDU0ZDY1YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1NldHRpbmcuanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1NldHRpbmcuanMK
QEAgLTI5LDMwICsyOSwyMyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3Iu
U2V0dGluZyA9IGZ1bmN0aW9uKG5hbWUsIGRlZmF1bHRWYWx1ZSkKK1dlYkluc3BlY3Rvci5TZXR0
aW5nID0gY2xhc3MgU2V0dGluZyBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIHsKLSAgICB0
aGlzLl9uYW1lID0gbmFtZTsKLSAgICB0aGlzLl9sb2NhbFN0b3JhZ2VLZXkgPSBXZWJJbnNwZWN0
b3IuU2V0dGluZy5Mb2NhbFN0b3JhZ2VLZXlQcmVmaXggKyBuYW1lOwotICAgIHRoaXMuX2RlZmF1
bHRWYWx1ZSA9IGRlZmF1bHRWYWx1ZTsKLX07Ci0KLVdlYkluc3BlY3Rvci5PYmplY3QuYWRkQ29u
c3RydWN0b3JGdW5jdGlvbnMoV2ViSW5zcGVjdG9yLlNldHRpbmcpOwotCi1XZWJJbnNwZWN0b3Iu
U2V0dGluZy5FdmVudCA9IHsKLSAgICBDaGFuZ2VkOiAic2V0dGluZy1jaGFuZ2VkIgotfTsKLQot
V2ViSW5zcGVjdG9yLlNldHRpbmcuTG9jYWxTdG9yYWdlS2V5UHJlZml4ID0gImNvbS5hcHBsZS5X
ZWJJbnNwZWN0b3IuIjsKLQotV2ViSW5zcGVjdG9yLlNldHRpbmcucHJvdG90eXBlID0gewotICAg
IGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuU2V0dGluZywKKyAgICBjb25zdHJ1Y3RvcihuYW1l
LCBkZWZhdWx0VmFsdWUpCisgICAgeworICAgICAgICBzdXBlcigpOworCisgICAgICAgIHRoaXMu
X25hbWUgPSBuYW1lOworICAgICAgICB0aGlzLl9sb2NhbFN0b3JhZ2VLZXkgPSBXZWJJbnNwZWN0
b3IuU2V0dGluZy5Mb2NhbFN0b3JhZ2VLZXlQcmVmaXggKyBuYW1lOworICAgICAgICB0aGlzLl9k
ZWZhdWx0VmFsdWUgPSBkZWZhdWx0VmFsdWU7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAg
ICBnZXQgbmFtZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fbmFtZTsKLSAgICB9LAor
ICAgIH0KIAogICAgIGdldCB2YWx1ZSgpCiAgICAgewpAQCAtNzEsNyArNjQsNyBAQCBXZWJJbnNw
ZWN0b3IuU2V0dGluZy5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4g
dGhpcy5fdmFsdWU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgdmFsdWUodmFsdWUpCiAgICAg
ewpAQCAtOTMsNCArODYsOCBAQCBXZWJJbnNwZWN0b3IuU2V0dGluZy5wcm90b3R5cGUgPSB7CiAg
ICAgfQogfTsKIAotV2ViSW5zcGVjdG9yLlNldHRpbmcucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdl
Ykluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOworV2ViSW5zcGVjdG9yLlNldHRpbmcuTG9jYWxT
dG9yYWdlS2V5UHJlZml4ID0gImNvbS5hcHBsZS5XZWJJbnNwZWN0b3IuIjsKKworV2ViSW5zcGVj
dG9yLlNldHRpbmcuRXZlbnQgPSB7CisgICAgQ2hhbmdlZDogInNldHRpbmctY2hhbmdlZCIKK307
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMv
U291cmNlQ29kZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVs
cy9Tb3VyY2VDb2RlLmpzCmluZGV4IDk5NTk3NDguLjI1YTg4YWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Tb3VyY2VDb2RlLmpzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Tb3VyY2VDb2RlLmpz
CkBAIC0yMywzMSArMjMsMTkgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
ICAqLwogCi1XZWJJbnNwZWN0b3IuU291cmNlQ29kZSA9IGZ1bmN0aW9uKCkKK1dlYkluc3BlY3Rv
ci5Tb3VyY2VDb2RlID0gY2xhc3MgU291cmNlQ29kZSBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmpl
Y3QKIHsKLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CisgICAgY29uc3RydWN0
b3IoKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKIAotICAgIHRoaXMuX29yaWdpbmFsUmV2aXNp
b24gPSBuZXcgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVSZXZpc2lvbih0aGlzLCBudWxsLCBmYWxz
ZSk7Ci0gICAgdGhpcy5fY3VycmVudFJldmlzaW9uID0gdGhpcy5fb3JpZ2luYWxSZXZpc2lvbjsK
KyAgICAgICAgdGhpcy5fb3JpZ2luYWxSZXZpc2lvbiA9IG5ldyBXZWJJbnNwZWN0b3IuU291cmNl
Q29kZVJldmlzaW9uKHRoaXMsIG51bGwsIGZhbHNlKTsKKyAgICAgICAgdGhpcy5fY3VycmVudFJl
dmlzaW9uID0gdGhpcy5fb3JpZ2luYWxSZXZpc2lvbjsKIAotICAgIHRoaXMuX3NvdXJjZU1hcHMg
PSBudWxsOwotICAgIHRoaXMuX2Zvcm1hdHRlclNvdXJjZU1hcCA9IG51bGw7Ci0gICAgdGhpcy5f
cmVxdWVzdENvbnRlbnRQcm9taXNlID0gbnVsbDsKLX07Ci0KLVdlYkluc3BlY3Rvci5PYmplY3Qu
YWRkQ29uc3RydWN0b3JGdW5jdGlvbnMoV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGUpOwotCi1XZWJJ
bnNwZWN0b3IuU291cmNlQ29kZS5FdmVudCA9IHsKLSAgICBDb250ZW50RGlkQ2hhbmdlOiAic291
cmNlLWNvZGUtY29udGVudC1kaWQtY2hhbmdlIiwKLSAgICBTb3VyY2VNYXBBZGRlZDogInNvdXJj
ZS1jb2RlLXNvdXJjZS1tYXAtYWRkZWQiLAotICAgIEZvcm1hdHRlckRpZENoYW5nZTogInNvdXJj
ZS1jb2RlLWZvcm1hdHRlci1kaWQtY2hhbmdlIiwKLSAgICBMb2FkaW5nRGlkRmluaXNoOiAic291
cmNlLWNvZGUtbG9hZGluZy1kaWQtZmluaXNoIiwKLSAgICBMb2FkaW5nRGlkRmFpbDogInNvdXJj
ZS1jb2RlLWxvYWRpbmctZGlkLWZhaWwiCi19OwotCi1XZWJJbnNwZWN0b3IuU291cmNlQ29kZS5w
cm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlLAot
ICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGUsCisgICAgICAgIHRo
aXMuX3NvdXJjZU1hcHMgPSBudWxsOworICAgICAgICB0aGlzLl9mb3JtYXR0ZXJTb3VyY2VNYXAg
PSBudWxsOworICAgICAgICB0aGlzLl9yZXF1ZXN0Q29udGVudFByb21pc2UgPSBudWxsOworICAg
IH0KIAogICAgIC8vIFB1YmxpYwogCkBAIC01NiwxNyArNDQsMTcgQEAgV2ViSW5zcGVjdG9yLlNv
dXJjZUNvZGUucHJvdG90eXBlID0gewogICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFz
c2VzLgogICAgICAgICBjb25zb2xlLmVycm9yKCJOZWVkcyB0byBiZSBpbXBsZW1lbnRlZCBieSBh
IHN1YmNsYXNzLiIpOwogICAgICAgICByZXR1cm4gIiI7Ci0gICAgfSwKKyAgICB9CiAKICAgICBn
ZXQgb3JpZ2luYWxSZXZpc2lvbigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fb3JpZ2lu
YWxSZXZpc2lvbjsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBjdXJyZW50UmV2aXNpb24oKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRSZXZpc2lvbjsKLSAgICB9LAorICAg
IH0KIAogICAgIHNldCBjdXJyZW50UmV2aXNpb24ocmV2aXNpb24pCiAgICAgewpAQCAtODEsMTkg
KzY5LDE5IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAg
dGhpcy5fY3VycmVudFJldmlzaW9uID0gcmV2aXNpb247CiAKICAgICAgICAgdGhpcy5kaXNwYXRj
aEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGUuRXZlbnQuQ29udGVudERp
ZENoYW5nZSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgY29udGVudCgpCiAgICAgewogICAg
ICAgICByZXR1cm4gdGhpcy5fY3VycmVudFJldmlzaW9uLmNvbnRlbnQ7Ci0gICAgfSwKKyAgICB9
CiAKICAgICBnZXQgc291cmNlTWFwcygpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc291
cmNlTWFwcyB8fCBbXTsKLSAgICB9LAorICAgIH0KIAotICAgIGFkZFNvdXJjZU1hcDogZnVuY3Rp
b24oc291cmNlTWFwKQorICAgIGFkZFNvdXJjZU1hcChzb3VyY2VNYXApCiAgICAgewogICAgICAg
ICBjb25zb2xlLmFzc2VydChzb3VyY2VNYXAgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuU291cmNl
TWFwKTsKIApAQCAtMTAzLDEyICs5MSwxMiBAQCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZS5wcm90
b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3NvdXJjZU1hcHMucHVzaChzb3VyY2VNYXApOwogCiAg
ICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5Tb3VyY2VD
b2RlLkV2ZW50LlNvdXJjZU1hcEFkZGVkKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBmb3Jt
YXR0ZXJTb3VyY2VNYXAoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2Zvcm1hdHRlclNv
dXJjZU1hcDsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBmb3JtYXR0ZXJTb3VyY2VNYXAoZm9y
bWF0dGVyU291cmNlTWFwKQogICAgIHsKQEAgLTExOCwzMyArMTA2LDMzIEBAIFdlYkluc3BlY3Rv
ci5Tb3VyY2VDb2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fZm9ybWF0dGVyU291cmNl
TWFwID0gZm9ybWF0dGVyU291cmNlTWFwOwogCiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRv
TGlzdGVuZXJzKFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlLkV2ZW50LkZvcm1hdHRlckRpZENoYW5n
ZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZXF1ZXN0Q29udGVudDogZnVuY3Rpb24oKQorICAg
IHJlcXVlc3RDb250ZW50KCkKICAgICB7CiAgICAgICAgIHRoaXMuX3JlcXVlc3RDb250ZW50UHJv
bWlzZSA9IHRoaXMuX3JlcXVlc3RDb250ZW50UHJvbWlzZSB8fCB0aGlzLnJlcXVlc3RDb250ZW50
RnJvbUJhY2tlbmQoKS50aGVuKHRoaXMuX3Byb2Nlc3NDb250ZW50LmJpbmQodGhpcykpOwogCiAg
ICAgICAgIHJldHVybiB0aGlzLl9yZXF1ZXN0Q29udGVudFByb21pc2U7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBjcmVhdGVTb3VyY2VDb2RlTG9jYXRpb246IGZ1bmN0aW9uKGxpbmVOdW1iZXIsIGNv
bHVtbk51bWJlcikKKyAgICBjcmVhdGVTb3VyY2VDb2RlTG9jYXRpb24obGluZU51bWJlciwgY29s
dW1uTnVtYmVyKQogICAgIHsKICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuU291cmNl
Q29kZUxvY2F0aW9uKHRoaXMsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcik7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBjcmVhdGVMYXp5U291cmNlQ29kZUxvY2F0aW9uOiBmdW5jdGlvbihsaW5lTnVt
YmVyLCBjb2x1bW5OdW1iZXIpCisgICAgY3JlYXRlTGF6eVNvdXJjZUNvZGVMb2NhdGlvbihsaW5l
TnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgewogICAgICAgICByZXR1cm4gbmV3IFdlYkluc3Bl
Y3Rvci5MYXp5U291cmNlQ29kZUxvY2F0aW9uKHRoaXMsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJl
cik7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjcmVhdGVTb3VyY2VDb2RlVGV4dFJhbmdlOiBmdW5j
dGlvbih0ZXh0UmFuZ2UpCisgICAgY3JlYXRlU291cmNlQ29kZVRleHRSYW5nZSh0ZXh0UmFuZ2Up
CiAgICAgewogICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dFJh
bmdlKHRoaXMsIHRleHRSYW5nZSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcm90ZWN0ZWQK
IAotICAgIHJldmlzaW9uQ29udGVudERpZENoYW5nZTogZnVuY3Rpb24ocmV2aXNpb24pCisgICAg
cmV2aXNpb25Db250ZW50RGlkQ2hhbmdlKHJldmlzaW9uKQogICAgIHsKICAgICAgICAgaWYgKHRo
aXMuX2lnbm9yZVJldmlzaW9uQ29udGVudERpZENoYW5nZUV2ZW50KQogICAgICAgICAgICAgcmV0
dXJuOwpAQCAtMTU1LDQxICsxNDMsNDEgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGUucHJvdG90
eXBlID0gewogICAgICAgICB0aGlzLmhhbmRsZUN1cnJlbnRSZXZpc2lvbkNvbnRlbnRDaGFuZ2Uo
KTsKIAogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3Iu
U291cmNlQ29kZS5FdmVudC5Db250ZW50RGlkQ2hhbmdlKTsKLSAgICB9LAorICAgIH0KIAotICAg
IGhhbmRsZUN1cnJlbnRSZXZpc2lvbkNvbnRlbnRDaGFuZ2U6IGZ1bmN0aW9uKCkKKyAgICBoYW5k
bGVDdXJyZW50UmV2aXNpb25Db250ZW50Q2hhbmdlKCkKICAgICB7CiAgICAgICAgIC8vIEltcGxl
bWVudGVkIGJ5IHN1YmNsYXNzZXMgaWYgbmVlZGVkLgotICAgIH0sCisgICAgfQogCiAgICAgZ2V0
IHJldmlzaW9uRm9yUmVxdWVzdGVkQ29udGVudCgpCiAgICAgewogICAgICAgICAvLyBJbXBsZW1l
bnRlZCBieSBzdWJjbGFzc2VzIGlmIG5lZWRlZC4KICAgICAgICAgcmV0dXJuIHRoaXMuX29yaWdp
bmFsUmV2aXNpb247Ci0gICAgfSwKKyAgICB9CiAKLSAgICBtYXJrQ29udGVudEFzU3RhbGU6IGZ1
bmN0aW9uKCkKKyAgICBtYXJrQ29udGVudEFzU3RhbGUoKQogICAgIHsKICAgICAgICAgdGhpcy5f
cmVxdWVzdENvbnRlbnRQcm9taXNlID0gbnVsbDsKICAgICAgICAgdGhpcy5fY29udGVudFJlY2Vp
dmVkID0gZmFsc2U7Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZXF1ZXN0Q29udGVudEZyb21CYWNr
ZW5kOiBmdW5jdGlvbigpCisgICAgcmVxdWVzdENvbnRlbnRGcm9tQmFja2VuZCgpCiAgICAgewog
ICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLgogICAgICAgICBjb25zb2xlLmVy
cm9yKCJOZWVkcyB0byBiZSBpbXBsZW1lbnRlZCBieSBhIHN1YmNsYXNzLiIpOwogICAgICAgICBy
ZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCJOZWVkcyB0byBiZSBpbXBsZW1lbnRlZCBi
eSBhIHN1YmNsYXNzLiIpKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBtaW1lVHlwZSgpCiAg
ICAgewogICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLgogICAgICAgICBjb25z
b2xlLmVycm9yKCJOZWVkcyB0byBiZSBpbXBsZW1lbnRlZCBieSBhIHN1YmNsYXNzLiIpOwotICAg
IH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX3Byb2Nlc3NDb250ZW50OiBmdW5j
dGlvbihwYXJhbWV0ZXJzKQorICAgIF9wcm9jZXNzQ29udGVudChwYXJhbWV0ZXJzKQogICAgIHsK
ICAgICAgICAgLy8gRGlmZmVyZW50IGJhY2tlbmQgQVBJcyByZXR1cm4gb25lIG9mIGBjb250ZW50
LCBgYm9keWAsIGB0ZXh0YCwgb3IgYHNjcmlwdFNvdXJjZWAuCiAgICAgICAgIHZhciBjb250ZW50
ID0gcGFyYW1ldGVycy5jb250ZW50IHx8IHBhcmFtZXRlcnMuYm9keSB8fCBwYXJhbWV0ZXJzLnRl
eHQgfHwgcGFyYW1ldGVycy5zY3JpcHRTb3VyY2U7CkBAIC0yMTAsMyArMTk4LDExIEBAIFdlYklu
c3BlY3Rvci5Tb3VyY2VDb2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAgfSk7CiAgICAgfQogfTsK
KworV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGUuRXZlbnQgPSB7CisgICAgQ29udGVudERpZENoYW5n
ZTogInNvdXJjZS1jb2RlLWNvbnRlbnQtZGlkLWNoYW5nZSIsCisgICAgU291cmNlTWFwQWRkZWQ6
ICJzb3VyY2UtY29kZS1zb3VyY2UtbWFwLWFkZGVkIiwKKyAgICBGb3JtYXR0ZXJEaWRDaGFuZ2U6
ICJzb3VyY2UtY29kZS1mb3JtYXR0ZXItZGlkLWNoYW5nZSIsCisgICAgTG9hZGluZ0RpZEZpbmlz
aDogInNvdXJjZS1jb2RlLWxvYWRpbmctZGlkLWZpbmlzaCIsCisgICAgTG9hZGluZ0RpZEZhaWw6
ICJzb3VyY2UtY29kZS1sb2FkaW5nLWRpZC1mYWlsIgorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Tb3VyY2VDb2RlTG9jYXRpb24uanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvU291cmNlQ29kZUxv
Y2F0aW9uLmpzCmluZGV4IDU3NDNjN2QuLjU3MjRlMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Tb3VyY2VDb2RlTG9jYXRpb24uanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1NvdXJjZUNvZGVM
b2NhdGlvbi5qcwpAQCAtMjMsODcgKzIzLDY1IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVMb2NhdGlvbiA9IGZ1bmN0
aW9uKHNvdXJjZUNvZGUsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKK1dlYkluc3BlY3Rvci5T
b3VyY2VDb2RlTG9jYXRpb24gPSBjbGFzcyBTb3VyY2VDb2RlTG9jYXRpb24gZXh0ZW5kcyBXZWJJ
bnNwZWN0b3IuT2JqZWN0CiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwor
ICAgIGNvbnN0cnVjdG9yKHNvdXJjZUNvZGUsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKKyAg
ICB7CisgICAgICAgIHN1cGVyKCk7CiAKLSAgICBjb25zb2xlLmFzc2VydChzb3VyY2VDb2RlID09
PSBudWxsIHx8IHNvdXJjZUNvZGUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuU291cmNlQ29kZSk7
Ci0gICAgY29uc29sZS5hc3NlcnQoIShzb3VyY2VDb2RlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9y
LlNvdXJjZU1hcFJlc291cmNlKSk7Ci0gICAgY29uc29sZS5hc3NlcnQodHlwZW9mIGxpbmVOdW1i
ZXIgPT09ICJudW1iZXIiICYmICFpc05hTihsaW5lTnVtYmVyKSAmJiBsaW5lTnVtYmVyID49IDAp
OwotICAgIGNvbnNvbGUuYXNzZXJ0KHR5cGVvZiBjb2x1bW5OdW1iZXIgPT09ICJudW1iZXIiICYm
ICFpc05hTihjb2x1bW5OdW1iZXIpICYmIGNvbHVtbk51bWJlciA+PSAwKTsKKyAgICAgICAgY29u
c29sZS5hc3NlcnQoc291cmNlQ29kZSA9PT0gbnVsbCB8fCBzb3VyY2VDb2RlIGluc3RhbmNlb2Yg
V2ViSW5zcGVjdG9yLlNvdXJjZUNvZGUpOworICAgICAgICBjb25zb2xlLmFzc2VydCghKHNvdXJj
ZUNvZGUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuU291cmNlTWFwUmVzb3VyY2UpKTsKKyAgICAg
ICAgY29uc29sZS5hc3NlcnQodHlwZW9mIGxpbmVOdW1iZXIgPT09ICJudW1iZXIiICYmICFpc05h
TihsaW5lTnVtYmVyKSAmJiBsaW5lTnVtYmVyID49IDApOworICAgICAgICBjb25zb2xlLmFzc2Vy
dCh0eXBlb2YgY29sdW1uTnVtYmVyID09PSAibnVtYmVyIiAmJiAhaXNOYU4oY29sdW1uTnVtYmVy
KSAmJiBjb2x1bW5OdW1iZXIgPj0gMCk7CiAKLSAgICB0aGlzLl9zb3VyY2VDb2RlID0gc291cmNl
Q29kZSB8fCBudWxsOwotICAgIHRoaXMuX2xpbmVOdW1iZXIgPSBsaW5lTnVtYmVyOwotICAgIHRo
aXMuX2NvbHVtbk51bWJlciA9IGNvbHVtbk51bWJlcjsKLSAgICB0aGlzLl9yZXNvbHZlRm9ybWF0
dGVkTG9jYXRpb24oKTsKKyAgICAgICAgdGhpcy5fc291cmNlQ29kZSA9IHNvdXJjZUNvZGUgfHwg
bnVsbDsKKyAgICAgICAgdGhpcy5fbGluZU51bWJlciA9IGxpbmVOdW1iZXI7CisgICAgICAgIHRo
aXMuX2NvbHVtbk51bWJlciA9IGNvbHVtbk51bWJlcjsKKyAgICAgICAgdGhpcy5fcmVzb2x2ZUZv
cm1hdHRlZExvY2F0aW9uKCk7CiAKLSAgICBpZiAodGhpcy5fc291cmNlQ29kZSkgewotICAgICAg
ICB0aGlzLl9zb3VyY2VDb2RlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlNvdXJjZUNv
ZGUuRXZlbnQuU291cmNlTWFwQWRkZWQsIHRoaXMuX3NvdXJjZUNvZGVTb3VyY2VNYXBBZGRlZCwg
dGhpcyk7Ci0gICAgICAgIHRoaXMuX3NvdXJjZUNvZGUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNw
ZWN0b3IuU291cmNlQ29kZS5FdmVudC5Gb3JtYXR0ZXJEaWRDaGFuZ2UsIHRoaXMuX3NvdXJjZUNv
ZGVGb3JtYXR0ZXJEaWRDaGFuZ2UsIHRoaXMpOworICAgICAgICBpZiAodGhpcy5fc291cmNlQ29k
ZSkgeworICAgICAgICAgICAgdGhpcy5fc291cmNlQ29kZS5hZGRFdmVudExpc3RlbmVyKFdlYklu
c3BlY3Rvci5Tb3VyY2VDb2RlLkV2ZW50LlNvdXJjZU1hcEFkZGVkLCB0aGlzLl9zb3VyY2VDb2Rl
U291cmNlTWFwQWRkZWQsIHRoaXMpOworICAgICAgICAgICAgdGhpcy5fc291cmNlQ29kZS5hZGRF
dmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlLkV2ZW50LkZvcm1hdHRlckRpZENo
YW5nZSwgdGhpcy5fc291cmNlQ29kZUZvcm1hdHRlckRpZENoYW5nZSwgdGhpcyk7CisgICAgICAg
IH0KKworICAgICAgICB0aGlzLl9yZXNldE1hcHBlZExvY2F0aW9uKCk7CiAgICAgfQogCi0gICAg
dGhpcy5fcmVzZXRNYXBwZWRMb2NhdGlvbigpOwotfTsKLQotV2ViSW5zcGVjdG9yLlNvdXJjZUNv
ZGVMb2NhdGlvbi5EaXNwbGF5TG9jYXRpb25DbGFzc05hbWUgPSAiZGlzcGxheS1sb2NhdGlvbiI7
Ci0KLVdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlTG9jYXRpb24uTGFyZ2VDb2x1bW5OdW1iZXIgPSA4
MDsKLQotV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVMb2NhdGlvbi5OYW1lU3R5bGUgPSB7Ci0gICAg
Tm9uZTogIm5vbmUiLCAvLyBGaWxlIG5hbWUgbm90IGluY2x1ZGVkLgotICAgIFNob3J0OiAic2hv
cnQiLCAvLyBPbmx5IHRoZSBmaWxlIG5hbWUuCi0gICAgRnVsbDogImZ1bGwiIC8vIEZ1bGwgVVJM
IGlzIHVzZWQuCi19OwotCi1XZWJJbnNwZWN0b3IuU291cmNlQ29kZUxvY2F0aW9uLkNvbHVtblN0
eWxlID0gewotICAgIEhpZGRlbjogImhpZGRlbiIsICAgICAgICAgICAgIC8vIGNvbHVtbiBudW1i
ZXJzIGFyZSBub3QgaW5jbHVkZWQuCi0gICAgT25seUlmTGFyZ2U6ICJvbmx5LWlmLWxhcmdlIiwg
Ly8gY29sdW1uIG51bWJlcnMgZ3JlYXRlciB0aGFuIDgwIGFyZSBzaG93bi4KLSAgICBTaG93bjog
InNob3duIiAgICAgICAgICAgICAgICAvLyBub24temVybyBjb2x1bW4gbnVtYmVycyBhcmUgc2hv
d24uCi19OwotCi1XZWJJbnNwZWN0b3IuU291cmNlQ29kZUxvY2F0aW9uLkV2ZW50ID0gewotICAg
IExvY2F0aW9uQ2hhbmdlZDogInNvdXJjZS1jb2RlLWxvY2F0aW9uLWxvY2F0aW9uLWNoYW5nZWQi
LAotICAgIERpc3BsYXlMb2NhdGlvbkNoYW5nZWQ6ICJzb3VyY2UtY29kZS1sb2NhdGlvbi1kaXNw
bGF5LWxvY2F0aW9uLWNoYW5nZWQiCi19OwotCi1XZWJJbnNwZWN0b3IuU291cmNlQ29kZUxvY2F0
aW9uLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlNvdXJjZUNv
ZGVMb2NhdGlvbiwKLQogICAgIC8vIFB1YmxpYwogCi0gICAgaXNFcXVhbDogZnVuY3Rpb24ob3Ro
ZXIpCisgICAgaXNFcXVhbChvdGhlcikKICAgICB7CiAgICAgICAgIGlmICghb3RoZXIpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJldHVybiB0aGlzLl9zb3VyY2VDb2RlID09
PSBvdGhlci5fc291cmNlQ29kZSAmJiB0aGlzLl9saW5lTnVtYmVyID09PSBvdGhlci5fbGluZU51
bWJlciAmJiB0aGlzLl9jb2x1bW5OdW1iZXIgPT09IG90aGVyLl9jb2x1bW5OdW1iZXI7Ci0gICAg
fSwKKyAgICB9CiAKICAgICBnZXQgc291cmNlQ29kZSgpCiAgICAgewogICAgICAgICByZXR1cm4g
dGhpcy5fc291cmNlQ29kZTsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBzb3VyY2VDb2RlKHNv
dXJjZUNvZGUpCiAgICAgewogICAgICAgICB0aGlzLnNldFNvdXJjZUNvZGUoc291cmNlQ29kZSk7
Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBSYXcgbGluZSBhbmQgY29sdW1uIGluIHRoZSBvcmln
aW5hbCBzb3VyY2UgY29kZS4KIAogICAgIGdldCBsaW5lTnVtYmVyKCkKICAgICB7CiAgICAgICAg
IHJldHVybiB0aGlzLl9saW5lTnVtYmVyOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGNvbHVt
bk51bWJlcigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fY29sdW1uTnVtYmVyOwotICAg
IH0sCisgICAgfQogCi0gICAgcG9zaXRpb246IGZ1bmN0aW9uKCkKKyAgICBwb3NpdGlvbigpCiAg
ICAgewogICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlUG9zaXRpb24o
dGhpcy5saW5lTnVtYmVyLCB0aGlzLmNvbHVtbk51bWJlcik7Ci0gICAgfSwKKyAgICB9CiAKICAg
ICAvLyBGb3JtYXR0ZWQgbGluZSBhbmQgY29sdW1uIGlmIHRoZSBvcmlnaW5hbCBzb3VyY2UgY29k
ZSBpcyBwcmV0dHkgcHJpbnRlZC4KICAgICAvLyBUaGlzIGlzIHRoZSBzYW1lIGFzIHRoZSByYXcg
bG9jYXRpb24gaWYgdGhlcmUgaXMgbm8gZm9ybWF0dGVyLgpAQCAtMTExLDE3ICs4OSwxNyBAQCBX
ZWJJbnNwZWN0b3IuU291cmNlQ29kZUxvY2F0aW9uLnByb3RvdHlwZSA9IHsKICAgICBnZXQgZm9y
bWF0dGVkTGluZU51bWJlcigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZm9ybWF0dGVk
TGluZU51bWJlcjsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBmb3JtYXR0ZWRDb2x1bW5OdW1i
ZXIoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2Zvcm1hdHRlZENvbHVtbk51bWJlcjsK
LSAgICB9LAorICAgIH0KIAotICAgIGZvcm1hdHRlZFBvc2l0aW9uOiBmdW5jdGlvbigpCisgICAg
Zm9ybWF0dGVkUG9zaXRpb24oKQogICAgIHsKICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0
b3IuU291cmNlQ29kZVBvc2l0aW9uKHRoaXMuZm9ybWF0dGVkTGluZU51bWJlciwgdGhpcy5mb3Jt
YXR0ZWRDb2x1bW5OdW1iZXIpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gRGlzcGxheSBsaW5l
IGFuZCBjb2x1bW46CiAgICAgLy8gICAtIE1hcHBlZCBsaW5lIGFuZCBjb2x1bW4gaWYgdGhlIG9y
aWdpbmFsIHNvdXJjZSBjb2RlIGhhcyBhIHNvdXJjZSBtYXAuCkBAIC0xMzEsNDMgKzEwOSw0MyBA
QCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZUxvY2F0aW9uLnByb3RvdHlwZSA9IHsKICAgICB7CiAg
ICAgICAgIHRoaXMucmVzb2x2ZU1hcHBlZExvY2F0aW9uKCk7CiAgICAgICAgIHJldHVybiB0aGlz
Ll9tYXBwZWRSZXNvdXJjZSB8fCB0aGlzLl9zb3VyY2VDb2RlOwotICAgIH0sCisgICAgfQogCiAg
ICAgZ2V0IGRpc3BsYXlMaW5lTnVtYmVyKCkKICAgICB7CiAgICAgICAgIHRoaXMucmVzb2x2ZU1h
cHBlZExvY2F0aW9uKCk7CiAgICAgICAgIHJldHVybiBpc05hTih0aGlzLl9tYXBwZWRMaW5lTnVt
YmVyKSA/IHRoaXMuX2Zvcm1hdHRlZExpbmVOdW1iZXIgOiB0aGlzLl9tYXBwZWRMaW5lTnVtYmVy
OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGRpc3BsYXlDb2x1bW5OdW1iZXIoKQogICAgIHsK
ICAgICAgICAgdGhpcy5yZXNvbHZlTWFwcGVkTG9jYXRpb24oKTsKICAgICAgICAgcmV0dXJuIGlz
TmFOKHRoaXMuX21hcHBlZENvbHVtbk51bWJlcikgPyB0aGlzLl9mb3JtYXR0ZWRDb2x1bW5OdW1i
ZXIgOiB0aGlzLl9tYXBwZWRDb2x1bW5OdW1iZXI7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBkaXNw
bGF5UG9zaXRpb246IGZ1bmN0aW9uKCkKKyAgICBkaXNwbGF5UG9zaXRpb24oKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVBvc2l0aW9uKHRoaXMuZGlz
cGxheUxpbmVOdW1iZXIsIHRoaXMuZGlzcGxheUNvbHVtbk51bWJlcik7Ci0gICAgfSwKKyAgICB9
CiAKICAgICAvLyBVc2VyIHByZXNlbnRhYmxlIGxvY2F0aW9uIHN0cmluZ3M6ICJmaWxlOmxpbmVO
dW1iZXI6Y29sdW1uTnVtYmVyIi4KIAotICAgIG9yaWdpbmFsTG9jYXRpb25TdHJpbmc6IGZ1bmN0
aW9uKGNvbHVtblN0eWxlLCBuYW1lU3R5bGUsIHByZWZpeCkKKyAgICBvcmlnaW5hbExvY2F0aW9u
U3RyaW5nKGNvbHVtblN0eWxlLCBuYW1lU3R5bGUsIHByZWZpeCkKICAgICB7CiAgICAgICAgIHJl
dHVybiB0aGlzLl9sb2NhdGlvblN0cmluZyh0aGlzLnNvdXJjZUNvZGUsIHRoaXMubGluZU51bWJl
ciwgdGhpcy5jb2x1bW5OdW1iZXIsIGNvbHVtblN0eWxlLCBuYW1lU3R5bGUsIHByZWZpeCk7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBmb3JtYXR0ZWRMb2NhdGlvblN0cmluZzogZnVuY3Rpb24oY29s
dW1uU3R5bGUsIG5hbWVTdHlsZSwgcHJlZml4KQorICAgIGZvcm1hdHRlZExvY2F0aW9uU3RyaW5n
KGNvbHVtblN0eWxlLCBuYW1lU3R5bGUsIHByZWZpeCkKICAgICB7CiAgICAgICAgIHJldHVybiB0
aGlzLl9sb2NhdGlvblN0cmluZyh0aGlzLnNvdXJjZUNvZGUsIHRoaXMuZm9ybWF0dGVkTGluZU51
bWJlciwgdGhpcy5mb3JtYXR0ZWRDb2x1bW4sIGNvbHVtblN0eWxlLCBuYW1lU3R5bGUsIHByZWZp
eCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBkaXNwbGF5TG9jYXRpb25TdHJpbmc6IGZ1bmN0aW9u
KGNvbHVtblN0eWxlLCBuYW1lU3R5bGUsIHByZWZpeCkKKyAgICBkaXNwbGF5TG9jYXRpb25TdHJp
bmcoY29sdW1uU3R5bGUsIG5hbWVTdHlsZSwgcHJlZml4KQogICAgIHsKICAgICAgICAgcmV0dXJu
IHRoaXMuX2xvY2F0aW9uU3RyaW5nKHRoaXMuZGlzcGxheVNvdXJjZUNvZGUsIHRoaXMuZGlzcGxh
eUxpbmVOdW1iZXIsIHRoaXMuZGlzcGxheUNvbHVtbk51bWJlciwgY29sdW1uU3R5bGUsIG5hbWVT
dHlsZSwgcHJlZml4KTsKLSAgICB9LAorICAgIH0KIAotICAgIHRvb2x0aXBTdHJpbmc6IGZ1bmN0
aW9uKCkKKyAgICB0b29sdGlwU3RyaW5nKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5oYXNE
aWZmZXJlbnREaXNwbGF5TG9jYXRpb24oKSkKICAgICAgICAgICAgIHJldHVybiB0aGlzLm9yaWdp
bmFsTG9jYXRpb25TdHJpbmcoV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVMb2NhdGlvbi5Db2x1bW5T
dHlsZS5TaG93biwgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVMb2NhdGlvbi5OYW1lU3R5bGUuRnVs
bCk7CkBAIC0xNzUsMjUgKzE1MywyNSBAQCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZUxvY2F0aW9u
LnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIHRvb2x0aXAgPSBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIkxvY2F0ZWQgYXQgJXMiKS5mb3JtYXQodGhpcy5kaXNwbGF5TG9jYXRpb25TdHJpbmcoV2Vi
SW5zcGVjdG9yLlNvdXJjZUNvZGVMb2NhdGlvbi5Db2x1bW5TdHlsZS5TaG93biwgV2ViSW5zcGVj
dG9yLlNvdXJjZUNvZGVMb2NhdGlvbi5OYW1lU3R5bGUuRnVsbCkpOwogICAgICAgICB0b29sdGlw
ICs9ICJcbiIgKyBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk9yaWdpbmFsbHkgJXMiKS5mb3JtYXQo
dGhpcy5vcmlnaW5hbExvY2F0aW9uU3RyaW5nKFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlTG9jYXRp
b24uQ29sdW1uU3R5bGUuU2hvd24sIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlTG9jYXRpb24uTmFt
ZVN0eWxlLkZ1bGwpKTsKICAgICAgICAgcmV0dXJuIHRvb2x0aXA7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBoYXNNYXBwZWRMb2NhdGlvbjogZnVuY3Rpb24oKQorICAgIGhhc01hcHBlZExvY2F0aW9u
KCkKICAgICB7CiAgICAgICAgIHRoaXMucmVzb2x2ZU1hcHBlZExvY2F0aW9uKCk7CiAgICAgICAg
IHJldHVybiB0aGlzLl9tYXBwZWRSZXNvdXJjZSAhPT0gbnVsbDsKLSAgICB9LAorICAgIH0KIAot
ICAgIGhhc0Zvcm1hdHRlZExvY2F0aW9uOiBmdW5jdGlvbigpCisgICAgaGFzRm9ybWF0dGVkTG9j
YXRpb24oKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2Zvcm1hdHRlZExpbmVOdW1iZXIg
IT09IHRoaXMuX2xpbmVOdW1iZXIgfHwgdGhpcy5fZm9ybWF0dGVkQ29sdW1uTnVtYmVyICE9PSB0
aGlzLl9jb2x1bW5OdW1iZXI7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBoYXNEaWZmZXJlbnREaXNw
bGF5TG9jYXRpb246IGZ1bmN0aW9uKCkKKyAgICBoYXNEaWZmZXJlbnREaXNwbGF5TG9jYXRpb24o
KQogICAgIHsKICAgICAgICByZXR1cm4gdGhpcy5oYXNNYXBwZWRMb2NhdGlvbigpIHx8IHRoaXMu
aGFzRm9ybWF0dGVkTG9jYXRpb24oKTsKLSAgICB9LAorICAgIH0KIAotICAgIHVwZGF0ZTogZnVu
Y3Rpb24oc291cmNlQ29kZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKQorICAgIHVwZGF0ZShz
b3VyY2VDb2RlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgewogICAgICAgICBjb25z
b2xlLmFzc2VydChzb3VyY2VDb2RlID09PSB0aGlzLl9zb3VyY2VDb2RlIHx8ICh0aGlzLl9tYXBw
ZWRSZXNvdXJjZSAmJiBzb3VyY2VDb2RlID09PSB0aGlzLl9tYXBwZWRSZXNvdXJjZSkpOwogICAg
ICAgICBjb25zb2xlLmFzc2VydCh0eXBlb2YgbGluZU51bWJlciA9PT0gIm51bWJlciIgJiYgIWlz
TmFOKGxpbmVOdW1iZXIpICYmIGxpbmVOdW1iZXIgPj0gMCk7CkBAIC0yMTcsOSArMTk1LDkgQEAg
V2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVMb2NhdGlvbi5wcm90b3R5cGUgPSB7CiAgICAgICAgICAg
ICAgICAgdGhpcy5fbWFwcGVkQ29sdW1uTnVtYmVyID0gbmV3U291cmNlQ29kZUxvY2F0aW9uLl9t
YXBwZWRDb2x1bW5OdW1iZXI7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0pOwotICAgIH0sCisg
ICAgfQogCi0gICAgcG9wdWxhdGVMaXZlRGlzcGxheUxvY2F0aW9uVG9vbHRpcDogZnVuY3Rpb24o
ZWxlbWVudCwgcHJlZml4KQorICAgIHBvcHVsYXRlTGl2ZURpc3BsYXlMb2NhdGlvblRvb2x0aXAo
ZWxlbWVudCwgcHJlZml4KQogICAgIHsKICAgICAgICAgcHJlZml4ID0gcHJlZml4IHx8ICIiOwog
CkBAIC0yMjksOSArMjA3LDkgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVMb2NhdGlvbi5wcm90
b3R5cGUgPSB7CiAgICAgICAgICAgICBpZiAodGhpcy5zb3VyY2VDb2RlKQogICAgICAgICAgICAg
ICAgIGVsZW1lbnQudGl0bGUgPSBwcmVmaXggKyB0aGlzLnRvb2x0aXBTdHJpbmcoKTsKICAgICAg
ICAgfSwgdGhpcyk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBwb3B1bGF0ZUxpdmVEaXNwbGF5TG9j
YXRpb25TdHJpbmc6IGZ1bmN0aW9uKGVsZW1lbnQsIHByb3BlcnR5TmFtZSwgY29sdW1uU3R5bGUs
IG5hbWVTdHlsZSwgcHJlZml4KQorICAgIHBvcHVsYXRlTGl2ZURpc3BsYXlMb2NhdGlvblN0cmlu
ZyhlbGVtZW50LCBwcm9wZXJ0eU5hbWUsIGNvbHVtblN0eWxlLCBuYW1lU3R5bGUsIHByZWZpeCkK
ICAgICB7CiAgICAgICAgIHZhciBjdXJyZW50RGlzcGxheSA9IHVuZGVmaW5lZDsKIApAQCAtMjcw
LDExICsyNDgsMTEgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVMb2NhdGlvbi5wcm90b3R5cGUg
PSB7CiAgICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VvdXQiLCBmdW5jdGlv
bihldmVudCkgewogICAgICAgICAgICAgdXBkYXRlRGlzcGxheVN0cmluZy5jYWxsKHRoaXMsIGZh
bHNlKTsKICAgICAgICAgfS5iaW5kKHRoaXMpKTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFBy
b3RlY3RlZAogCi0gICAgc2V0U291cmNlQ29kZTogZnVuY3Rpb24oc291cmNlQ29kZSkKKyAgICBz
ZXRTb3VyY2VDb2RlKHNvdXJjZUNvZGUpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCgo
dGhpcy5fc291cmNlQ29kZSA9PT0gbnVsbCAmJiBzb3VyY2VDb2RlIGluc3RhbmNlb2YgV2ViSW5z
cGVjdG9yLlNvdXJjZUNvZGUpIHx8ICh0aGlzLl9zb3VyY2VDb2RlIGluc3RhbmNlb2YgV2ViSW5z
cGVjdG9yLlNvdXJjZUNvZGUgJiYgc291cmNlQ29kZSA9PT0gbnVsbCkpOwogCkBAIC0yOTQsOSAr
MjcyLDkgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVMb2NhdGlvbi5wcm90b3R5cGUgPSB7CiAg
ICAgICAgICAgICAgICAgdGhpcy5fc291cmNlQ29kZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3Bl
Y3Rvci5Tb3VyY2VDb2RlLkV2ZW50LkZvcm1hdHRlckRpZENoYW5nZSwgdGhpcy5fc291cmNlQ29k
ZUZvcm1hdHRlckRpZENoYW5nZSwgdGhpcyk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0pOwot
ICAgIH0sCisgICAgfQogCi0gICAgcmVzb2x2ZU1hcHBlZExvY2F0aW9uOiBmdW5jdGlvbigpCisg
ICAgcmVzb2x2ZU1hcHBlZExvY2F0aW9uKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9tYXBw
ZWRMb2NhdGlvbklzUmVzb2x2ZWQpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0zMjksMTEgKzMw
NywxMSBAQCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZUxvY2F0aW9uLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgIHRoaXMuX21hcHBlZENvbHVtbk51bWJlciA9IGVudHJ5WzRdOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAK
LSAgICBfbG9jYXRpb25TdHJpbmc6IGZ1bmN0aW9uKHNvdXJjZUNvZGUsIGxpbmVOdW1iZXIsIGNv
bHVtbk51bWJlciwgY29sdW1uU3R5bGUsIG5hbWVTdHlsZSwgcHJlZml4KQorICAgIF9sb2NhdGlv
blN0cmluZyhzb3VyY2VDb2RlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGNvbHVtblN0eWxl
LCBuYW1lU3R5bGUsIHByZWZpeCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHNvdXJj
ZUNvZGUpOwogICAgICAgICBpZiAoIXNvdXJjZUNvZGUpCkBAIC0zNjIsMjYgKzM0MCwyNiBAQCBX
ZWJJbnNwZWN0b3IuU291cmNlQ29kZUxvY2F0aW9uLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAg
IGNvbnNvbGUuZXJyb3IoIlVua25vd24gbmFtZVN0eWxlOiAiICsgbmFtZVN0eWxlKTsKICAgICAg
ICAgICAgIHJldHVybiBwcmVmaXggKyBsaW5lU3RyaW5nOwogICAgICAgICB9Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfcmVzZXRNYXBwZWRMb2NhdGlvbjogZnVuY3Rpb24oKQorICAgIF9yZXNldE1h
cHBlZExvY2F0aW9uKCkKICAgICB7CiAgICAgICAgIHRoaXMuX21hcHBlZExvY2F0aW9uSXNSZXNv
bHZlZCA9IGZhbHNlOwogICAgICAgICB0aGlzLl9tYXBwZWRSZXNvdXJjZSA9IG51bGw7CiAgICAg
ICAgIHRoaXMuX21hcHBlZExpbmVOdW1iZXIgPSBOYU47CiAgICAgICAgIHRoaXMuX21hcHBlZENv
bHVtbk51bWJlciA9IE5hTjsKLSAgICB9LAorICAgIH0KIAotICAgIF9zZXRNYXBwZWRMb2NhdGlv
bjogZnVuY3Rpb24obWFwcGVkUmVzb3VyY2UsIG1hcHBlZExpbmVOdW1iZXIsIG1hcHBlZENvbHVt
bk51bWJlcikKKyAgICBfc2V0TWFwcGVkTG9jYXRpb24obWFwcGVkUmVzb3VyY2UsIG1hcHBlZExp
bmVOdW1iZXIsIG1hcHBlZENvbHVtbk51bWJlcikKICAgICB7CiAgICAgICAgIC8vIENhbGxlZCBi
eSBTb3VyY2VNYXBSZXNvdXJjZSB3aGVuIGl0IGNyZWF0ZXMgYSBTb3VyY2VDb2RlTG9jYXRpb24g
YW5kIGFscmVhZHkga25vd3MgdGhlIHJlc29sdmVkIGxvY2F0aW9uLgogICAgICAgICB0aGlzLl9t
YXBwZWRMb2NhdGlvbklzUmVzb2x2ZWQgPSB0cnVlOwogICAgICAgICB0aGlzLl9tYXBwZWRSZXNv
dXJjZSA9IG1hcHBlZFJlc291cmNlOwogICAgICAgICB0aGlzLl9tYXBwZWRMaW5lTnVtYmVyID0g
bWFwcGVkTGluZU51bWJlcjsKICAgICAgICAgdGhpcy5fbWFwcGVkQ29sdW1uTnVtYmVyID0gbWFw
cGVkQ29sdW1uTnVtYmVyOwotICAgIH0sCisgICAgfQogCi0gICAgX3Jlc29sdmVGb3JtYXR0ZWRM
b2NhdGlvbjogZnVuY3Rpb24oKQorICAgIF9yZXNvbHZlRm9ybWF0dGVkTG9jYXRpb24oKQogICAg
IHsKICAgICAgICAgaWYgKHRoaXMuX3NvdXJjZUNvZGUgJiYgdGhpcy5fc291cmNlQ29kZS5mb3Jt
YXR0ZXJTb3VyY2VNYXApIHsKICAgICAgICAgICAgIHZhciBmb3JtYXR0ZWRMb2NhdGlvbiA9IHRo
aXMuX3NvdXJjZUNvZGUuZm9ybWF0dGVyU291cmNlTWFwLm9yaWdpbmFsVG9Gb3JtYXR0ZWQodGhp
cy5fbGluZU51bWJlciwgdGhpcy5fY29sdW1uTnVtYmVyKTsKQEAgLTM5MSw5ICszNjksOSBAQCBX
ZWJJbnNwZWN0b3IuU291cmNlQ29kZUxvY2F0aW9uLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAg
IHRoaXMuX2Zvcm1hdHRlZExpbmVOdW1iZXIgPSB0aGlzLl9saW5lTnVtYmVyOwogICAgICAgICAg
ICAgdGhpcy5fZm9ybWF0dGVkQ29sdW1uTnVtYmVyID0gdGhpcy5fY29sdW1uTnVtYmVyOwogICAg
ICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfbWFrZUNoYW5nZUFuZERpc3BhdGNoQ2hhbmdl
RXZlbnRJZk5lZWRlZDogZnVuY3Rpb24oY2hhbmdlRnVuY3Rpb24pCisgICAgX21ha2VDaGFuZ2VB
bmREaXNwYXRjaENoYW5nZUV2ZW50SWZOZWVkZWQoY2hhbmdlRnVuY3Rpb24pCiAgICAgewogICAg
ICAgICB2YXIgb2xkU291cmNlQ29kZSA9IHRoaXMuX3NvdXJjZUNvZGU7CiAgICAgICAgIHZhciBv
bGRMaW5lTnVtYmVyID0gdGhpcy5fbGluZU51bWJlcjsKQEAgLTQ0OCwxNyArNDI2LDM2IEBAIFdl
Ykluc3BlY3Rvci5Tb3VyY2VDb2RlTG9jYXRpb24ucHJvdG90eXBlID0gewogICAgICAgICAgICAg
aWYgKGFueUxvY2F0aW9uQ2hhbmdlZCkKICAgICAgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZl
bnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuU291cmNlQ29kZUxvY2F0aW9uLkV2ZW50LkxvY2F0
aW9uQ2hhbmdlZCwgb2xkRGF0YSk7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAotICAgIF9z
b3VyY2VDb2RlU291cmNlTWFwQWRkZWQ6IGZ1bmN0aW9uKCkKKyAgICBfc291cmNlQ29kZVNvdXJj
ZU1hcEFkZGVkKCkKICAgICB7CiAgICAgICAgIHRoaXMuX21ha2VDaGFuZ2VBbmREaXNwYXRjaENo
YW5nZUV2ZW50SWZOZWVkZWQobnVsbCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfc291cmNlQ29k
ZUZvcm1hdHRlckRpZENoYW5nZTogZnVuY3Rpb24oKQorICAgIF9zb3VyY2VDb2RlRm9ybWF0dGVy
RGlkQ2hhbmdlKCkKICAgICB7CiAgICAgICAgIHRoaXMuX21ha2VDaGFuZ2VBbmREaXNwYXRjaENo
YW5nZUV2ZW50SWZOZWVkZWQobnVsbCk7CiAgICAgfQogfTsKIAotV2ViSW5zcGVjdG9yLlNvdXJj
ZUNvZGVMb2NhdGlvbi5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5w
cm90b3R5cGU7CitXZWJJbnNwZWN0b3IuU291cmNlQ29kZUxvY2F0aW9uLkRpc3BsYXlMb2NhdGlv
bkNsYXNzTmFtZSA9ICJkaXNwbGF5LWxvY2F0aW9uIjsKKworV2ViSW5zcGVjdG9yLlNvdXJjZUNv
ZGVMb2NhdGlvbi5MYXJnZUNvbHVtbk51bWJlciA9IDgwOworCitXZWJJbnNwZWN0b3IuU291cmNl
Q29kZUxvY2F0aW9uLk5hbWVTdHlsZSA9IHsKKyAgICBOb25lOiAibm9uZSIsIC8vIEZpbGUgbmFt
ZSBub3QgaW5jbHVkZWQuCisgICAgU2hvcnQ6ICJzaG9ydCIsIC8vIE9ubHkgdGhlIGZpbGUgbmFt
ZS4KKyAgICBGdWxsOiAiZnVsbCIgLy8gRnVsbCBVUkwgaXMgdXNlZC4KK307CisKK1dlYkluc3Bl
Y3Rvci5Tb3VyY2VDb2RlTG9jYXRpb24uQ29sdW1uU3R5bGUgPSB7CisgICAgSGlkZGVuOiAiaGlk
ZGVuIiwgICAgICAgICAgICAgLy8gY29sdW1uIG51bWJlcnMgYXJlIG5vdCBpbmNsdWRlZC4KKyAg
ICBPbmx5SWZMYXJnZTogIm9ubHktaWYtbGFyZ2UiLCAvLyBjb2x1bW4gbnVtYmVycyBncmVhdGVy
IHRoYW4gODAgYXJlIHNob3duLgorICAgIFNob3duOiAic2hvd24iICAgICAgICAgICAgICAgIC8v
IG5vbi16ZXJvIGNvbHVtbiBudW1iZXJzIGFyZSBzaG93bi4KK307CisKK1dlYkluc3BlY3Rvci5T
b3VyY2VDb2RlTG9jYXRpb24uRXZlbnQgPSB7CisgICAgTG9jYXRpb25DaGFuZ2VkOiAic291cmNl
LWNvZGUtbG9jYXRpb24tbG9jYXRpb24tY2hhbmdlZCIsCisgICAgRGlzcGxheUxvY2F0aW9uQ2hh
bmdlZDogInNvdXJjZS1jb2RlLWxvY2F0aW9uLWRpc3BsYXktbG9jYXRpb24tY2hhbmdlZCIKK307
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMv
U291cmNlQ29kZVBvc2l0aW9uLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvTW9kZWxzL1NvdXJjZUNvZGVQb3NpdGlvbi5qcwppbmRleCA3YjBhMmIwLi5mZmJhNmJlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvU291
cmNlQ29kZVBvc2l0aW9uLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01vZGVscy9Tb3VyY2VDb2RlUG9zaXRpb24uanMKQEAgLTIzLDI4ICsyMywyNSBAQAogICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5Tb3Vy
Y2VDb2RlUG9zaXRpb24gPSBmdW5jdGlvbihsaW5lTnVtYmVyLCBjb2x1bU51bWJlcikKK1dlYklu
c3BlY3Rvci5Tb3VyY2VDb2RlUG9zaXRpb24gPSBjbGFzcyBTb3VyY2VDb2RlUG9zaXRpb24gZXh0
ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxs
KHRoaXMpOworICAgIGNvbnN0cnVjdG9yKGxpbmVOdW1iZXIsIGNvbHVtTnVtYmVyKQorICAgIHsK
KyAgICAgICAgc3VwZXIoKTsKIAotICAgIHRoaXMuX2xpbmVOdW1iZXIgPSBsaW5lTnVtYmVyIHx8
IDA7Ci0gICAgdGhpcy5fY29sdW1uTnVtYmVyID0gY29sdW1OdW1iZXIgfHwgMDsKLX07Ci0KLVdl
Ykluc3BlY3Rvci5Tb3VyY2VDb2RlUG9zaXRpb24ucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVj
dG9yOiBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVBvc2l0aW9uLAorICAgICAgICB0aGlzLl9saW5l
TnVtYmVyID0gbGluZU51bWJlciB8fCAwOworICAgICAgICB0aGlzLl9jb2x1bW5OdW1iZXIgPSBj
b2x1bU51bWJlciB8fCAwOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IGxpbmVO
dW1iZXIoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2xpbmVOdW1iZXI7Ci0gICAgfSwK
KyAgICB9CiAKICAgICBnZXQgY29sdW1uTnVtYmVyKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0
aGlzLl9jb2x1bW5OdW1iZXI7CiAgICAgfQogfTsKLQotV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVQ
b3NpdGlvbi5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5
cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2Rl
bHMvU291cmNlQ29kZVJldmlzaW9uLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvTW9kZWxzL1NvdXJjZUNvZGVSZXZpc2lvbi5qcwppbmRleCA3MTA5MzNhLi5iOTU1NDkz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMv
U291cmNlQ29kZVJldmlzaW9uLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL01vZGVscy9Tb3VyY2VDb2RlUmV2aXNpb24uanMKQEAgLTIzLDMwICsyMywyOSBAQAog
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5T
b3VyY2VDb2RlUmV2aXNpb24gPSBmdW5jdGlvbihzb3VyY2VDb2RlLCBjb250ZW50KQorV2ViSW5z
cGVjdG9yLlNvdXJjZUNvZGVSZXZpc2lvbiA9IGNsYXNzIFNvdXJjZUNvZGVSZXZpc2lvbiBleHRl
bmRzIFdlYkluc3BlY3Rvci5SZXZpc2lvbgogewotICAgIFdlYkluc3BlY3Rvci5SZXZpc2lvbi5j
YWxsKHRoaXMpOworICAgIGNvbnN0cnVjdG9yKHNvdXJjZUNvZGUsIGNvbnRlbnQpCisgICAgewor
ICAgICAgICBzdXBlcigpOwogCi0gICAgY29uc29sZS5hc3NlcnQoc291cmNlQ29kZSBpbnN0YW5j
ZW9mIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoc291
cmNlQ29kZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlKTsKIAotICAgIHRoaXMu
X3NvdXJjZUNvZGUgPSBzb3VyY2VDb2RlOwotICAgIHRoaXMuX2NvbnRlbnQgPSBjb250ZW50IHx8
ICIiOwotfTsKLQotV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVSZXZpc2lvbi5wcm90b3R5cGUgPSB7
Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlUmV2aXNpb24sCisgICAg
ICAgIHRoaXMuX3NvdXJjZUNvZGUgPSBzb3VyY2VDb2RlOworICAgICAgICB0aGlzLl9jb250ZW50
ID0gY29udGVudCB8fCAiIjsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBzb3Vy
Y2VDb2RlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zb3VyY2VDb2RlOwotICAgIH0s
CisgICAgfQogCiAgICAgZ2V0IGNvbnRlbnQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMu
X2NvbnRlbnQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgY29udGVudChjb250ZW50KQogICAg
IHsKQEAgLTU4LDIyICs1NywyMCBAQCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVJldmlzaW9uLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fY29udGVudCA9IGNvbnRlbnQ7CiAKICAgICAgICAg
dGhpcy5fc291cmNlQ29kZS5yZXZpc2lvbkNvbnRlbnREaWRDaGFuZ2UodGhpcyk7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBhcHBseTogZnVuY3Rpb24oKQorICAgIGFwcGx5KCkKICAgICB7CiAgICAg
ICAgIHRoaXMuX3NvdXJjZUNvZGUuY3VycmVudFJldmlzaW9uID0gdGhpczsKLSAgICB9LAorICAg
IH0KIAotICAgIHJldmVydDogZnVuY3Rpb24oKQorICAgIHJldmVydCgpCiAgICAgewogICAgICAg
ICB0aGlzLl9zb3VyY2VDb2RlLmN1cnJlbnRSZXZpc2lvbiA9IHRoaXMuX3NvdXJjZUNvZGUub3Jp
Z2luYWxSZXZpc2lvbjsKLSAgICB9LAorICAgIH0KIAotICAgIGNvcHk6IGZ1bmN0aW9uKCkKKyAg
ICBjb3B5KCkKICAgICB7CiAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlNvdXJjZUNv
ZGVSZXZpc2lvbih0aGlzLl9zb3VyY2VDb2RlLCB0aGlzLl9jb250ZW50KTsKICAgICB9CiB9Owot
Ci1XZWJJbnNwZWN0b3IuU291cmNlQ29kZVJldmlzaW9uLnByb3RvdHlwZS5fX3Byb3RvX18gPSBX
ZWJJbnNwZWN0b3IuUmV2aXNpb24ucHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1NvdXJjZUNvZGVTZWFyY2hNYXRjaE9iamVj
dC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Tb3VyY2VD
b2RlU2VhcmNoTWF0Y2hPYmplY3QuanMKaW5kZXggODNmNTM2Zi4uMmM0ZmE4MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1NvdXJjZUNvZGVT
ZWFyY2hNYXRjaE9iamVjdC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Nb2RlbHMvU291cmNlQ29kZVNlYXJjaE1hdGNoT2JqZWN0LmpzCkBAIC0yMyw1MiArMjMs
NDYgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNw
ZWN0b3IuU291cmNlQ29kZVNlYXJjaE1hdGNoT2JqZWN0ID0gZnVuY3Rpb24oc291cmNlQ29kZSwg
bGluZVRleHQsIHNlYXJjaFRlcm0sIHRleHRSYW5nZSkKK1dlYkluc3BlY3Rvci5Tb3VyY2VDb2Rl
U2VhcmNoTWF0Y2hPYmplY3QgPSBjbGFzcyBTb3VyY2VDb2RlU2VhcmNoTWF0Y2hPYmplY3QgZXh0
ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0gICAgY29uc29sZS5hc3NlcnQoc291cmNlQ29k
ZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlKTsKKyAgICBjb25zdHJ1Y3Rvcihz
b3VyY2VDb2RlLCBsaW5lVGV4dCwgc2VhcmNoVGVybSwgdGV4dFJhbmdlKQorICAgIHsKKyAgICAg
ICAgc3VwZXIoKTsKIAotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICAg
ICAgY29uc29sZS5hc3NlcnQoc291cmNlQ29kZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Tb3Vy
Y2VDb2RlKTsKIAotICAgIHRoaXMuX3NvdXJjZUNvZGUgPSBzb3VyY2VDb2RlOwotICAgIHRoaXMu
X2xpbmVUZXh0ID0gbGluZVRleHQ7Ci0gICAgdGhpcy5fc2VhcmNoVGVybSA9IHNlYXJjaFRlcm07
Ci0gICAgdGhpcy5fc291cmNlQ29kZVRleHRSYW5nZSA9IHNvdXJjZUNvZGUuY3JlYXRlU291cmNl
Q29kZVRleHRSYW5nZSh0ZXh0UmFuZ2UpOwotfTsKKyAgICAgICAgdGhpcy5fc291cmNlQ29kZSA9
IHNvdXJjZUNvZGU7CisgICAgICAgIHRoaXMuX2xpbmVUZXh0ID0gbGluZVRleHQ7CisgICAgICAg
IHRoaXMuX3NlYXJjaFRlcm0gPSBzZWFyY2hUZXJtOworICAgICAgICB0aGlzLl9zb3VyY2VDb2Rl
VGV4dFJhbmdlID0gc291cmNlQ29kZS5jcmVhdGVTb3VyY2VDb2RlVGV4dFJhbmdlKHRleHRSYW5n
ZSk7CisgICAgfQogCi1XZWJJbnNwZWN0b3IuU291cmNlQ29kZVNlYXJjaE1hdGNoT2JqZWN0LlNv
dXJjZUNvZGVNYXRjaEljb25TdHlsZUNsYXNzTmFtZSA9ICJzb3VyY2UtY29kZS1tYXRjaC1pY29u
IjsKLQotV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVTZWFyY2hNYXRjaE9iamVjdC5UeXBlSWRlbnRp
ZmllciA9ICJzb3VyY2UtY29kZS1zZWFyY2gtbWF0Y2gtb2JqZWN0IjsKLVdlYkluc3BlY3Rvci5T
b3VyY2VDb2RlU2VhcmNoTWF0Y2hPYmplY3QuVVJMQ29va2llS2V5ID0gInNvdXJjZS1jb2RlLXVy
bCI7Ci1XZWJJbnNwZWN0b3IuU291cmNlQ29kZVNlYXJjaE1hdGNoT2JqZWN0LlRleHRSYW5nZUtl
eSA9ICJ0ZXh0LXJhbmdlIjsKLQotV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVTZWFyY2hNYXRjaE9i
amVjdC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5Tb3VyY2VD
b2RlU2VhcmNoTWF0Y2hPYmplY3QsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuT2JqZWN0
LnByb3RvdHlwZSwKKyAgICAvLyBQdWJsaWMKIAogICAgIGdldCBzb3VyY2VDb2RlKCkKICAgICB7
CiAgICAgICAgIHJldHVybiB0aGlzLl9zb3VyY2VDb2RlOwotICAgIH0sCisgICAgfQogCiAgICAg
Z2V0IHRpdGxlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9saW5lVGV4dDsKLSAgICB9
LAorICAgIH0KIAogICAgIGdldCBjbGFzc05hbWUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIFdl
Ykluc3BlY3Rvci5Tb3VyY2VDb2RlU2VhcmNoTWF0Y2hPYmplY3QuU291cmNlQ29kZU1hdGNoSWNv
blN0eWxlQ2xhc3NOYW1lOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHNlYXJjaFRlcm0oKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3NlYXJjaFRlcm07Ci0gICAgfSwKKyAgICB9CiAK
ICAgICBnZXQgc291cmNlQ29kZVRleHRSYW5nZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhp
cy5fc291cmNlQ29kZVRleHRSYW5nZTsKLSAgICB9LAorICAgIH0KIAogICAgIHNhdmVJZGVudGl0
eVRvQ29va2llKGNvb2tpZSkKICAgICB7CkBAIC03OSwzICs3Myw5IEBAIFdlYkluc3BlY3Rvci5T
b3VyY2VDb2RlU2VhcmNoTWF0Y2hPYmplY3QucHJvdG90eXBlID0gewogICAgICAgICBjb29raWVb
V2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVTZWFyY2hNYXRjaE9iamVjdC5UZXh0UmFuZ2VLZXldID0g
W3RleHRSYW5nZS5zdGFydExpbmUsIHRleHRSYW5nZS5zdGFydENvbHVtbiwgdGV4dFJhbmdlLmVu
ZExpbmUsIHRleHRSYW5nZS5lbmRDb2x1bW5dLmpvaW4oKTsKICAgICB9CiB9OworCitXZWJJbnNw
ZWN0b3IuU291cmNlQ29kZVNlYXJjaE1hdGNoT2JqZWN0LlNvdXJjZUNvZGVNYXRjaEljb25TdHls
ZUNsYXNzTmFtZSA9ICJzb3VyY2UtY29kZS1tYXRjaC1pY29uIjsKKworV2ViSW5zcGVjdG9yLlNv
dXJjZUNvZGVTZWFyY2hNYXRjaE9iamVjdC5UeXBlSWRlbnRpZmllciA9ICJzb3VyY2UtY29kZS1z
ZWFyY2gtbWF0Y2gtb2JqZWN0IjsKK1dlYkluc3BlY3Rvci5Tb3VyY2VDb2RlU2VhcmNoTWF0Y2hP
YmplY3QuVVJMQ29va2llS2V5ID0gInNvdXJjZS1jb2RlLXVybCI7CitXZWJJbnNwZWN0b3IuU291
cmNlQ29kZVNlYXJjaE1hdGNoT2JqZWN0LlRleHRSYW5nZUtleSA9ICJ0ZXh0LXJhbmdlIjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Tb3Vy
Y2VDb2RlVGV4dFJhbmdlLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
TW9kZWxzL1NvdXJjZUNvZGVUZXh0UmFuZ2UuanMKaW5kZXggNTliYjUwMy4uMjE2NzQzMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1NvdXJj
ZUNvZGVUZXh0UmFuZ2UuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvTW9kZWxzL1NvdXJjZUNvZGVUZXh0UmFuZ2UuanMKQEAgLTIzLDQ0ICsyMywzOSBAQAogICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5Tb3Vy
Y2VDb2RlVGV4dFJhbmdlID0gZnVuY3Rpb24oc291cmNlQ29kZSkgLyogdGV4dFJhbmdlIHx8IHN0
YXJ0TG9jYXRpb24sIGVuZExvY2F0aW9uICovCitXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRS
YW5nZSA9IGNsYXNzIFNvdXJjZUNvZGVUZXh0UmFuZ2UgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2Jq
ZWN0CiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIGNvbnN0cnVj
dG9yKHNvdXJjZUNvZGUpIC8qIHRleHRSYW5nZSB8fCBzdGFydExvY2F0aW9uLCBlbmRMb2NhdGlv
biAqLworICAgIHsKKyAgICAgICAgc3VwZXIoKTsKIAotICAgIGNvbnNvbGUuYXNzZXJ0KHNvdXJj
ZUNvZGUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuU291cmNlQ29kZSk7Ci0gICAgY29uc29sZS5h
c3NlcnQoYXJndW1lbnRzLmxlbmd0aCA9PT0gMiB8fCBhcmd1bWVudHMubGVuZ3RoID09PSAzKTsK
KyAgICAgICAgY29uc29sZS5hc3NlcnQoc291cmNlQ29kZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rv
ci5Tb3VyY2VDb2RlKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoYXJndW1lbnRzLmxlbmd0aCA9
PT0gMiB8fCBhcmd1bWVudHMubGVuZ3RoID09PSAzKTsKIAotICAgIHRoaXMuX3NvdXJjZUNvZGUg
PSBzb3VyY2VDb2RlOworICAgICAgICB0aGlzLl9zb3VyY2VDb2RlID0gc291cmNlQ29kZTsKIAot
ICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAyKSB7Ci0gICAgICAgIHZhciB0ZXh0UmFuZ2Ug
PSBhcmd1bWVudHNbMV07Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRleHRSYW5nZSBpbnN0YW5j
ZW9mIFdlYkluc3BlY3Rvci5UZXh0UmFuZ2UpOwotICAgICAgICB0aGlzLl9zdGFydExvY2F0aW9u
ID0gc291cmNlQ29kZS5jcmVhdGVTb3VyY2VDb2RlTG9jYXRpb24odGV4dFJhbmdlLnN0YXJ0TGlu
ZSwgdGV4dFJhbmdlLnN0YXJ0Q29sdW1uKTsKLSAgICAgICAgdGhpcy5fZW5kTG9jYXRpb24gPSBz
b3VyY2VDb2RlLmNyZWF0ZVNvdXJjZUNvZGVMb2NhdGlvbih0ZXh0UmFuZ2UuZW5kTGluZSwgdGV4
dFJhbmdlLmVuZENvbHVtbik7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQo
YXJndW1lbnRzWzFdIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVMb2NhdGlvbik7
Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KGFyZ3VtZW50c1syXSBpbnN0YW5jZW9mIFdlYkluc3Bl
Y3Rvci5Tb3VyY2VDb2RlTG9jYXRpb24pOwotICAgICAgICB0aGlzLl9zdGFydExvY2F0aW9uID0g
YXJndW1lbnRzWzFdOwotICAgICAgICB0aGlzLl9lbmRMb2NhdGlvbiA9IGFyZ3VtZW50c1syXTsK
KyAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIHsKKyAgICAgICAgICAgIHZhciB0
ZXh0UmFuZ2UgPSBhcmd1bWVudHNbMV07CisgICAgICAgICAgICBjb25zb2xlLmFzc2VydCh0ZXh0
UmFuZ2UgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuVGV4dFJhbmdlKTsKKyAgICAgICAgICAgIHRo
aXMuX3N0YXJ0TG9jYXRpb24gPSBzb3VyY2VDb2RlLmNyZWF0ZVNvdXJjZUNvZGVMb2NhdGlvbih0
ZXh0UmFuZ2Uuc3RhcnRMaW5lLCB0ZXh0UmFuZ2Uuc3RhcnRDb2x1bW4pOworICAgICAgICAgICAg
dGhpcy5fZW5kTG9jYXRpb24gPSBzb3VyY2VDb2RlLmNyZWF0ZVNvdXJjZUNvZGVMb2NhdGlvbih0
ZXh0UmFuZ2UuZW5kTGluZSwgdGV4dFJhbmdlLmVuZENvbHVtbik7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICBjb25zb2xlLmFzc2VydChhcmd1bWVudHNbMV0gaW5zdGFuY2VvZiBXZWJJ
bnNwZWN0b3IuU291cmNlQ29kZUxvY2F0aW9uKTsKKyAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KGFyZ3VtZW50c1syXSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlTG9jYXRpb24p
OworICAgICAgICAgICAgdGhpcy5fc3RhcnRMb2NhdGlvbiA9IGFyZ3VtZW50c1sxXTsKKyAgICAg
ICAgICAgIHRoaXMuX2VuZExvY2F0aW9uID0gYXJndW1lbnRzWzJdOworICAgICAgICB9CisKKyAg
ICAgICAgdGhpcy5fc3RhcnRMb2NhdGlvbi5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5T
b3VyY2VDb2RlTG9jYXRpb24uRXZlbnQuTG9jYXRpb25DaGFuZ2VkLCB0aGlzLl9zb3VyY2VDb2Rl
TG9jYXRpb25DaGFuZ2VkLCB0aGlzKTsKKyAgICAgICAgdGhpcy5fZW5kTG9jYXRpb24uYWRkRXZl
bnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU291cmNlQ29kZUxvY2F0aW9uLkV2ZW50LkxvY2F0aW9u
Q2hhbmdlZCwgdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uQ2hhbmdlZCwgdGhpcyk7CiAgICAgfQog
Ci0gICAgdGhpcy5fc3RhcnRMb2NhdGlvbi5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5T
b3VyY2VDb2RlTG9jYXRpb24uRXZlbnQuTG9jYXRpb25DaGFuZ2VkLCB0aGlzLl9zb3VyY2VDb2Rl
TG9jYXRpb25DaGFuZ2VkLCB0aGlzKTsKLSAgICB0aGlzLl9lbmRMb2NhdGlvbi5hZGRFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlTG9jYXRpb24uRXZlbnQuTG9jYXRpb25DaGFu
Z2VkLCB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb25DaGFuZ2VkLCB0aGlzKTsKLX07Ci0KLVdlYklu
c3BlY3Rvci5Tb3VyY2VDb2RlVGV4dFJhbmdlLkV2ZW50ID0gewotICAgIFJhbmdlQ2hhbmdlZDog
InNvdXJjZS1jb2RlLXRleHQtcmFuZ2UtcmFuZ2UtY2hhbmdlZCIKLX07Ci0KLVdlYkluc3BlY3Rv
ci5Tb3VyY2VDb2RlVGV4dFJhbmdlLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2Vi
SW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0UmFuZ2UsCi0KICAgICAvLyBQdWJsaWMKIAogICAgIGdl
dCBzb3VyY2VDb2RlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zb3VyY2VDb2RlOwot
ICAgIH0sCisgICAgfQogCiAgICAgLy8gUmF3IHRleHQgcmFuZ2UgaW4gdGhlIG9yaWdpbmFsIHNv
dXJjZSBjb2RlLgogCkBAIC03MSw3ICs2Niw3IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4
dFJhbmdlLnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIGVuZExpbmUgPSB0aGlzLl9lbmRMb2Nh
dGlvbi5saW5lTnVtYmVyOwogICAgICAgICB2YXIgZW5kQ29sdW1uID0gdGhpcy5fZW5kTG9jYXRp
b24uY29sdW1uTnVtYmVyOwogICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5UZXh0UmFu
Z2Uoc3RhcnRMaW5lLCBzdGFydENvbHVtbiwgZW5kTGluZSwgZW5kQ29sdW1uKTsKLSAgICB9LAor
ICAgIH0KIAogICAgIC8vIEZvcm1hdHRlZCB0ZXh0IHJhbmdlIGluIHRoZSBvcmlnaW5hbCBzb3Vy
Y2UgY29kZSBpZiBpdCBpcyBwcmV0dHkgcHJpbnRlZC4KICAgICAvLyBUaGlzIGlzIHRoZSBzYW1l
IGFzIHRoZSByYXcgdGV4dCByYW5nZSBpZiB0aGUgc291cmNlIGNvZGUgaGFzIG5vIGZvcm1hdHRl
ci4KQEAgLTgzLDcgKzc4LDcgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0UmFuZ2UucHJv
dG90eXBlID0gewogICAgICAgICB2YXIgZW5kTGluZSA9IHRoaXMuX2VuZExvY2F0aW9uLmZvcm1h
dHRlZExpbmVOdW1iZXI7CiAgICAgICAgIHZhciBlbmRDb2x1bW4gPSB0aGlzLl9lbmRMb2NhdGlv
bi5mb3JtYXR0ZWRDb2x1bW5OdW1iZXI7CiAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9y
LlRleHRSYW5nZShzdGFydExpbmUsIHN0YXJ0Q29sdW1uLCBlbmRMaW5lLCBlbmRDb2x1bW4pOwot
ICAgIH0sCisgICAgfQogCiAgICAgLy8gRGlzcGxheSB2YWx1ZXM6CiAgICAgLy8gICAtIE1hcHBl
ZCByZXNvdXJjZSBhbmQgdGV4dCByYW5nZSBsb2NhdGlvbnMgaWYgdGhlIG9yaWdpbmFsIHNvdXJj
ZSBjb2RlIGhhcyBhCkBAIC05Niw3ICs5MSw3IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4
dFJhbmdlLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybiB0aGlzLl9zb3VyY2VDb2Rl
OwogCiAgICAgICAgIHJldHVybiB0aGlzLl9zdGFydExvY2F0aW9uLmRpc3BsYXlTb3VyY2VDb2Rl
OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGRpc3BsYXlUZXh0UmFuZ2UoKQogICAgIHsKQEAg
LTEwOCwxOSArMTAzLDIxIEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dFJhbmdlLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgdmFyIGVuZExpbmUgPSB0aGlzLl9lbmRMb2NhdGlvbi5kaXNwbGF5
TGluZU51bWJlcjsKICAgICAgICAgdmFyIGVuZENvbHVtbiA9IHRoaXMuX2VuZExvY2F0aW9uLmRp
c3BsYXlDb2x1bW5OdW1iZXI7CiAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlRleHRS
YW5nZShzdGFydExpbmUsIHN0YXJ0Q29sdW1uLCBlbmRMaW5lLCBlbmRDb2x1bW4pOwotICAgIH0s
CisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX3N0YXJ0QW5kRW5kTG9jYXRpb25zSW5T
YW1lTWFwcGVkUmVzb3VyY2U6IGZ1bmN0aW9uKCkKKyAgICBfc3RhcnRBbmRFbmRMb2NhdGlvbnNJ
blNhbWVNYXBwZWRSZXNvdXJjZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc3RhcnRM
b2NhdGlvbi5oYXNNYXBwZWRMb2NhdGlvbigpICYmIHRoaXMuX2VuZExvY2F0aW9uLmhhc01hcHBl
ZExvY2F0aW9uKCkgJiYgdGhpcy5fc3RhcnRMb2NhdGlvbi5kaXNwbGF5U291cmNlQ29kZSA9PT0g
dGhpcy5fZW5kTG9jYXRpb24uZGlzcGxheVNvdXJjZUNvZGU7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBfc291cmNlQ29kZUxvY2F0aW9uQ2hhbmdlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX3NvdXJj
ZUNvZGVMb2NhdGlvbkNoYW5nZWQoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLmRpc3BhdGNo
RXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuU291cmNlQ29kZUxvY2F0aW9uLkV2ZW50LlJh
bmdlQ2hhbmdlZCk7CiAgICAgfQogfTsKIAotV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0UmFu
Z2UucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOwor
V2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0UmFuZ2UuRXZlbnQgPSB7CisgICAgUmFuZ2VDaGFu
Z2VkOiAic291cmNlLWNvZGUtdGV4dC1yYW5nZS1yYW5nZS1jaGFuZ2VkIgorfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Tb3VyY2VDb2Rl
VGltZWxpbmUuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMv
U291cmNlQ29kZVRpbWVsaW5lLmpzCmluZGV4IDM0OGZmNTcuLjVjN2M2NGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Tb3VyY2VDb2RlVGlt
ZWxpbmUuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxz
L1NvdXJjZUNvZGVUaW1lbGluZS5qcwpAQCAtMjMsNTUgKzIzLDQ1IEBACiAgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUaW1l
bGluZSA9IGZ1bmN0aW9uKHNvdXJjZUNvZGUsIHNvdXJjZUNvZGVMb2NhdGlvbiwgcmVjb3JkVHlw
ZSwgcmVjb3JkRXZlbnRUeXBlKQorV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUaW1lbGluZSA9IGNs
YXNzIFNvdXJjZUNvZGVUaW1lbGluZSBleHRlbmRzIFdlYkluc3BlY3Rvci5UaW1lbGluZQogewot
ICAgIFdlYkluc3BlY3Rvci5UaW1lbGluZS5jYWxsKHRoaXMpOwotCi0gICAgY29uc29sZS5hc3Nl
cnQoc291cmNlQ29kZSk7Ci0gICAgY29uc29sZS5hc3NlcnQoIXNvdXJjZUNvZGVMb2NhdGlvbiB8
fCBzb3VyY2VDb2RlTG9jYXRpb24uc291cmNlQ29kZSA9PT0gc291cmNlQ29kZSk7Ci0gICAgY29u
c29sZS5hc3NlcnQocmVjb3JkVHlwZSk7Ci0KLSAgICB0aGlzLl9zb3VyY2VDb2RlID0gc291cmNl
Q29kZTsKLSAgICB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb24gPSBzb3VyY2VDb2RlTG9jYXRpb24g
fHwgbnVsbDsKLSAgICB0aGlzLl9yZWNvcmRUeXBlID0gcmVjb3JkVHlwZTsKLSAgICB0aGlzLl9y
ZWNvcmRFdmVudFR5cGUgPSByZWNvcmRFdmVudFR5cGUgfHwgbnVsbDsKLX07Ci0KLVdlYkluc3Bl
Y3Rvci5Tb3VyY2VDb2RlVGltZWxpbmUuVHlwZUlkZW50aWZpZXIgPSAic291cmNlLWNvZGUtdGlt
ZWxpbmUiOwotV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUaW1lbGluZS5Tb3VyY2VDb2RlVVJMQ29v
a2llS2V5ID0gInNvdXJjZS1jb2RlLXRpbWVsaW5lLXNvdXJjZS1jb2RlLXVybCI7Ci1XZWJJbnNw
ZWN0b3IuU291cmNlQ29kZVRpbWVsaW5lLlNvdXJjZUNvZGVMb2NhdGlvbkxpbmVDb29raWVLZXkg
PSAic291cmNlLWNvZGUtdGltZWxpbmUtc291cmNlLWNvZGUtbG9jYXRpb24tbGluZSI7Ci1XZWJJ
bnNwZWN0b3IuU291cmNlQ29kZVRpbWVsaW5lLlNvdXJjZUNvZGVMb2NhdGlvbkNvbHVtbkNvb2tp
ZUtleSA9ICJzb3VyY2UtY29kZS10aW1lbGluZS1zb3VyY2UtY29kZS1sb2NhdGlvbi1jb2x1bW4i
OwotV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUaW1lbGluZS5Tb3VyY2VDb2RlVVJMQ29va2llS2V5
ID0gInNvdXJjZS1jb2RlLXRpbWVsaW5lLXNvdXJjZS1jb2RlLXVybCI7Ci1XZWJJbnNwZWN0b3Iu
U291cmNlQ29kZVRpbWVsaW5lLlJlY29yZFR5cGVDb29raWVLZXkgPSAic291cmNlLWNvZGUtdGlt
ZWxpbmUtcmVjb3JkLXR5cGUiOwotV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUaW1lbGluZS5SZWNv
cmRFdmVudFR5cGVDb29raWVLZXkgPSAic291cmNlLWNvZGUtdGltZWxpbmUtcmVjb3JkLWV2ZW50
LXR5cGUiOwotCi1XZWJJbnNwZWN0b3IuU291cmNlQ29kZVRpbWVsaW5lLnByb3RvdHlwZSA9IHsK
LSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUaW1lbGluZSwKLSAgICBf
X3Byb3RvX186IFdlYkluc3BlY3Rvci5UaW1lbGluZS5wcm90b3R5cGUsCisgICAgY29uc3RydWN0
b3Ioc291cmNlQ29kZSwgc291cmNlQ29kZUxvY2F0aW9uLCByZWNvcmRUeXBlLCByZWNvcmRFdmVu
dFR5cGUpCisgICAgeworICAgICAgICBzdXBlcigpOworCisgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KHNvdXJjZUNvZGUpOworICAgICAgICBjb25zb2xlLmFzc2VydCghc291cmNlQ29kZUxvY2F0aW9u
IHx8IHNvdXJjZUNvZGVMb2NhdGlvbi5zb3VyY2VDb2RlID09PSBzb3VyY2VDb2RlKTsKKyAgICAg
ICAgY29uc29sZS5hc3NlcnQocmVjb3JkVHlwZSk7CisKKyAgICAgICAgdGhpcy5fc291cmNlQ29k
ZSA9IHNvdXJjZUNvZGU7CisgICAgICAgIHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbiA9IHNvdXJj
ZUNvZGVMb2NhdGlvbiB8fCBudWxsOworICAgICAgICB0aGlzLl9yZWNvcmRUeXBlID0gcmVjb3Jk
VHlwZTsKKyAgICAgICAgdGhpcy5fcmVjb3JkRXZlbnRUeXBlID0gcmVjb3JkRXZlbnRUeXBlIHx8
IG51bGw7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgc291cmNlQ29kZSgpCiAg
ICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc291cmNlQ29kZTsKLSAgICB9LAorICAgIH0KIAog
ICAgIGdldCBzb3VyY2VDb2RlTG9jYXRpb24oKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMu
X3NvdXJjZUNvZGVMb2NhdGlvbjsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCByZWNvcmRUeXBl
KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9yZWNvcmRUeXBlOwotICAgIH0sCisgICAg
fQogCiAgICAgZ2V0IHJlY29yZEV2ZW50VHlwZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhp
cy5fcmVjb3JkRXZlbnRUeXBlOwotICAgIH0sCisgICAgfQogCi0gICAgc2F2ZUlkZW50aXR5VG9D
b29raWU6IGZ1bmN0aW9uKGNvb2tpZSkKKyAgICBzYXZlSWRlbnRpdHlUb0Nvb2tpZShjb29raWUp
CiAgICAgewogICAgICAgICBjb29raWVbV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUaW1lbGluZS5T
b3VyY2VDb2RlVVJMQ29va2llS2V5XSA9IHRoaXMuX3NvdXJjZUNvZGUudXJsID8gdGhpcy5fc291
cmNlQ29kZS51cmwuaGFzaCA6IG51bGw7CiAgICAgICAgIGNvb2tpZVtXZWJJbnNwZWN0b3IuU291
cmNlQ29kZVRpbWVsaW5lLlNvdXJjZUNvZGVMb2NhdGlvbkxpbmVDb29raWVLZXldID0gdGhpcy5f
c291cmNlQ29kZUxvY2F0aW9uID8gdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uLmxpbmVOdW1iZXIg
OiBudWxsOwpAQCAtODAsMyArNzAsMTEgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUaW1lbGlu
ZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIGNvb2tpZVtXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRp
bWVsaW5lLlJlY29yZEV2ZW50VHlwZUNvb2tpZUtleV0gPSB0aGlzLl9yZWNvcmRFdmVudFR5cGUg
fHwgbnVsbDsKICAgICB9CiB9OworCitXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRpbWVsaW5lLlR5
cGVJZGVudGlmaWVyID0gInNvdXJjZS1jb2RlLXRpbWVsaW5lIjsKK1dlYkluc3BlY3Rvci5Tb3Vy
Y2VDb2RlVGltZWxpbmUuU291cmNlQ29kZVVSTENvb2tpZUtleSA9ICJzb3VyY2UtY29kZS10aW1l
bGluZS1zb3VyY2UtY29kZS11cmwiOworV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUaW1lbGluZS5T
b3VyY2VDb2RlTG9jYXRpb25MaW5lQ29va2llS2V5ID0gInNvdXJjZS1jb2RlLXRpbWVsaW5lLXNv
dXJjZS1jb2RlLWxvY2F0aW9uLWxpbmUiOworV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUaW1lbGlu
ZS5Tb3VyY2VDb2RlTG9jYXRpb25Db2x1bW5Db29raWVLZXkgPSAic291cmNlLWNvZGUtdGltZWxp
bmUtc291cmNlLWNvZGUtbG9jYXRpb24tY29sdW1uIjsKK1dlYkluc3BlY3Rvci5Tb3VyY2VDb2Rl
VGltZWxpbmUuU291cmNlQ29kZVVSTENvb2tpZUtleSA9ICJzb3VyY2UtY29kZS10aW1lbGluZS1z
b3VyY2UtY29kZS11cmwiOworV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUaW1lbGluZS5SZWNvcmRU
eXBlQ29va2llS2V5ID0gInNvdXJjZS1jb2RlLXRpbWVsaW5lLXJlY29yZC10eXBlIjsKK1dlYklu
c3BlY3Rvci5Tb3VyY2VDb2RlVGltZWxpbmUuUmVjb3JkRXZlbnRUeXBlQ29va2llS2V5ID0gInNv
dXJjZS1jb2RlLXRpbWVsaW5lLXJlY29yZC1ldmVudC10eXBlIjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Tb3VyY2VNYXAuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvU291cmNlTWFwLmpzCmluZGV4
IDFhNzYyMjguLjk1MzQ3ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL01vZGVscy9Tb3VyY2VNYXAuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvTW9kZWxzL1NvdXJjZU1hcC5qcwpAQCAtMjMsMzQgKzIzLDM4IEBACiAg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlNv
dXJjZU1hcCA9IGZ1bmN0aW9uKHNvdXJjZU1hcHBpbmdVUkwsIHBheWxvYWQsIG9yaWdpbmFsU291
cmNlQ29kZSkKK1dlYkluc3BlY3Rvci5Tb3VyY2VNYXAgPSBjbGFzcyBTb3VyY2VNYXAgZXh0ZW5k
cyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0gICAgaWYgKCFXZWJJbnNwZWN0b3IuU291cmNlTWFw
LnByb3RvdHlwZS5fYmFzZTY0TWFwKSB7Ci0gICAgICAgIGNvbnN0IGJhc2U2NERpZ2l0cyA9ICJB
QkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1
Njc4OSsvIjsKLSAgICAgICAgV2ViSW5zcGVjdG9yLlNvdXJjZU1hcC5wcm90b3R5cGUuX2Jhc2U2
NE1hcCA9IHt9OwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJhc2U2NERpZ2l0cy5sZW5n
dGg7ICsraSkKLSAgICAgICAgICAgIFdlYkluc3BlY3Rvci5Tb3VyY2VNYXAucHJvdG90eXBlLl9i
YXNlNjRNYXBbYmFzZTY0RGlnaXRzLmNoYXJBdChpKV0gPSBpOworICAgIGNvbnN0cnVjdG9yKHNv
dXJjZU1hcHBpbmdVUkwsIHBheWxvYWQsIG9yaWdpbmFsU291cmNlQ29kZSkKKyAgICB7CisgICAg
ICAgIHN1cGVyKCk7CisKKyAgICAgICAgaWYgKCFXZWJJbnNwZWN0b3IuU291cmNlTWFwLl9iYXNl
NjRNYXApIHsKKyAgICAgICAgICAgIHZhciBiYXNlNjREaWdpdHMgPSAiQUJDREVGR0hJSktMTU5P
UFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyI7CisgICAg
ICAgICAgICBXZWJJbnNwZWN0b3IuU291cmNlTWFwLl9iYXNlNjRNYXAgPSB7fTsKKyAgICAgICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYmFzZTY0RGlnaXRzLmxlbmd0aDsgKytpKQorICAgICAg
ICAgICAgICAgIFdlYkluc3BlY3Rvci5Tb3VyY2VNYXAuX2Jhc2U2NE1hcFtiYXNlNjREaWdpdHMu
Y2hhckF0KGkpXSA9IGk7CisgICAgICAgIH0KKworICAgICAgICB0aGlzLl9vcmlnaW5hbFNvdXJj
ZUNvZGUgPSBvcmlnaW5hbFNvdXJjZUNvZGUgfHwgbnVsbDsKKyAgICAgICAgdGhpcy5fc291cmNl
TWFwUmVzb3VyY2VzID0ge307CisgICAgICAgIHRoaXMuX3NvdXJjZU1hcFJlc291cmNlc0xpc3Qg
PSBbXTsKKworICAgICAgICB0aGlzLl9zb3VyY2VNYXBwaW5nVVJMID0gc291cmNlTWFwcGluZ1VS
TDsKKyAgICAgICAgdGhpcy5fcmV2ZXJzZU1hcHBpbmdzQnlTb3VyY2VVUkwgPSB7fTsKKyAgICAg
ICAgdGhpcy5fbWFwcGluZ3MgPSBbXTsKKyAgICAgICAgdGhpcy5fc291cmNlcyA9IHt9OworICAg
ICAgICB0aGlzLl9zb3VyY2VSb290ID0gbnVsbDsKKyAgICAgICAgdGhpcy5fc291cmNlQ29udGVu
dEJ5VVJMID0ge307CisgICAgICAgIHRoaXMuX3BhcnNlTWFwcGluZ1BheWxvYWQocGF5bG9hZCk7
CiAgICAgfQogCi0gICAgdGhpcy5fb3JpZ2luYWxTb3VyY2VDb2RlID0gb3JpZ2luYWxTb3VyY2VD
b2RlIHx8IG51bGw7Ci0gICAgdGhpcy5fc291cmNlTWFwUmVzb3VyY2VzID0ge307Ci0gICAgdGhp
cy5fc291cmNlTWFwUmVzb3VyY2VzTGlzdCA9IFtdOwotCi0gICAgdGhpcy5fc291cmNlTWFwcGlu
Z1VSTCA9IHNvdXJjZU1hcHBpbmdVUkw7Ci0gICAgdGhpcy5fcmV2ZXJzZU1hcHBpbmdzQnlTb3Vy
Y2VVUkwgPSB7fTsKLSAgICB0aGlzLl9tYXBwaW5ncyA9IFtdOwotICAgIHRoaXMuX3NvdXJjZXMg
PSB7fTsKLSAgICB0aGlzLl9zb3VyY2VSb290ID0gbnVsbDsKLSAgICB0aGlzLl9zb3VyY2VDb250
ZW50QnlVUkwgPSB7fTsKLSAgICB0aGlzLl9wYXJzZU1hcHBpbmdQYXlsb2FkKHBheWxvYWQpOwot
fTsKLQotV2ViSW5zcGVjdG9yLlNvdXJjZU1hcC5wcm90b3R5cGUgPSB7CisgICAgLy8gUHVibGlj
CiAKICAgICBnZXQgb3JpZ2luYWxTb3VyY2VDb2RlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0
aGlzLl9vcmlnaW5hbFNvdXJjZUNvZGU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc291cmNl
TWFwcGluZ0Jhc2VQYXRoVVJMQ29tcG9uZW50cygpCiAgICAgewpAQCAtNzQsNTIgKzc4LDUyIEBA
IFdlYkluc3BlY3Rvci5Tb3VyY2VNYXAucHJvdG90eXBlID0gewogICAgICAgICB1cmxDb21wb25l
bnRzLmxhc3RQYXRoQ29tcG9uZW50ID0gbnVsbDsKICAgICAgICAgdGhpcy5fc291cmNlTWFwcGlu
Z1VSTEJhc2VQYXRoQ29tcG9uZW50cyA9IHVybENvbXBvbmVudHM7CiAgICAgICAgIHJldHVybiB0
aGlzLl9zb3VyY2VNYXBwaW5nVVJMQmFzZVBhdGhDb21wb25lbnRzOwotICAgIH0sCisgICAgfQog
CiAgICAgZ2V0IHJlc291cmNlcygpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc291cmNl
TWFwUmVzb3VyY2VzTGlzdDsKLSAgICB9LAorICAgIH0KIAotICAgIGFkZFJlc291cmNlOiBmdW5j
dGlvbihyZXNvdXJjZSkKKyAgICBhZGRSZXNvdXJjZShyZXNvdXJjZSkKICAgICB7CiAgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KCEocmVzb3VyY2UudXJsIGluIHRoaXMuX3NvdXJjZU1hcFJlc291cmNl
cykpOwogICAgICAgICB0aGlzLl9zb3VyY2VNYXBSZXNvdXJjZXNbcmVzb3VyY2UudXJsXSA9IHJl
c291cmNlOwogICAgICAgICB0aGlzLl9zb3VyY2VNYXBSZXNvdXJjZXNMaXN0LnB1c2gocmVzb3Vy
Y2UpOwotICAgIH0sCisgICAgfQogCi0gICAgcmVzb3VyY2VGb3JVUkw6IGZ1bmN0aW9uKHVybCkK
KyAgICByZXNvdXJjZUZvclVSTCh1cmwpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc291
cmNlTWFwUmVzb3VyY2VzW3VybF07Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzb3VyY2VzOiBmdW5j
dGlvbigpCisgICAgc291cmNlcygpCiAgICAgewogICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMo
dGhpcy5fc291cmNlcyk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzb3VyY2VDb250ZW50OiBmdW5j
dGlvbihzb3VyY2VVUkwpCisgICAgc291cmNlQ29udGVudChzb3VyY2VVUkwpCiAgICAgewogICAg
ICAgICByZXR1cm4gdGhpcy5fc291cmNlQ29udGVudEJ5VVJMW3NvdXJjZVVSTF07Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBfcGFyc2VNYXBwaW5nUGF5bG9hZDogZnVuY3Rpb24obWFwcGluZ1BheWxv
YWQpCisgICAgX3BhcnNlTWFwcGluZ1BheWxvYWQobWFwcGluZ1BheWxvYWQpCiAgICAgewogICAg
ICAgICBpZiAobWFwcGluZ1BheWxvYWQuc2VjdGlvbnMpCiAgICAgICAgICAgICB0aGlzLl9wYXJz
ZVNlY3Rpb25zKG1hcHBpbmdQYXlsb2FkLnNlY3Rpb25zKTsKICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgdGhpcy5fcGFyc2VNYXAobWFwcGluZ1BheWxvYWQsIDAsIDApOwotICAgIH0sCisgICAg
fQogCi0gICAgX3BhcnNlU2VjdGlvbnM6IGZ1bmN0aW9uKHNlY3Rpb25zKQorICAgIF9wYXJzZVNl
Y3Rpb25zKHNlY3Rpb25zKQogICAgIHsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWN0
aW9ucy5sZW5ndGg7ICsraSkgewogICAgICAgICAgICAgdmFyIHNlY3Rpb24gPSBzZWN0aW9uc1tp
XTsKICAgICAgICAgICAgIHRoaXMuX3BhcnNlTWFwKHNlY3Rpb24ubWFwLCBzZWN0aW9uLm9mZnNl
dC5saW5lLCBzZWN0aW9uLm9mZnNldC5jb2x1bW4pOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBmaW5kRW50cnk6IGZ1bmN0aW9uKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKKyAg
ICBmaW5kRW50cnkobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgIHsKICAgICAgICAgdmFy
IGZpcnN0ID0gMDsKICAgICAgICAgdmFyIGNvdW50ID0gdGhpcy5fbWFwcGluZ3MubGVuZ3RoOwpA
QCAtMTM4LDkgKzE0Miw5IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VNYXAucHJvdG90eXBlID0gewog
ICAgICAgICBpZiAoIWZpcnN0ICYmIGVudHJ5ICYmIChsaW5lTnVtYmVyIDwgZW50cnlbMF0gfHwg
KGxpbmVOdW1iZXIgPT09IGVudHJ5WzBdICYmIGNvbHVtbk51bWJlciA8IGVudHJ5WzFdKSkpCiAg
ICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgcmV0dXJuIGVudHJ5OwotICAgIH0sCisg
ICAgfQogCi0gICAgZmluZEVudHJ5UmV2ZXJzZWQ6IGZ1bmN0aW9uKHNvdXJjZVVSTCwgbGluZU51
bWJlcikKKyAgICBmaW5kRW50cnlSZXZlcnNlZChzb3VyY2VVUkwsIGxpbmVOdW1iZXIpCiAgICAg
ewogICAgICAgICB2YXIgbWFwcGluZ3MgPSB0aGlzLl9yZXZlcnNlTWFwcGluZ3NCeVNvdXJjZVVS
TFtzb3VyY2VVUkxdOwogICAgICAgICBmb3IgKCA7IGxpbmVOdW1iZXIgPCBtYXBwaW5ncy5sZW5n
dGg7ICsrbGluZU51bWJlcikgewpAQCAtMTQ5LDkgKzE1Myw5IEBAIFdlYkluc3BlY3Rvci5Tb3Vy
Y2VNYXAucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIHJldHVybiBtYXBwaW5nOwogICAg
ICAgICB9CiAgICAgICAgIHJldHVybiB0aGlzLl9tYXBwaW5nc1swXTsKLSAgICB9LAorICAgIH0K
IAotICAgIF9wYXJzZU1hcDogZnVuY3Rpb24obWFwLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIp
CisgICAgX3BhcnNlTWFwKG1hcCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgIHsKICAg
ICAgICAgdmFyIHNvdXJjZUluZGV4ID0gMDsKICAgICAgICAgdmFyIHNvdXJjZUxpbmVOdW1iZXIg
PSAwOwpAQCAtMjIzLDUzICsyMjcsNTQgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZU1hcC5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICBpZiAoIXJldmVyc2VNYXBwaW5nc1tzb3VyY2VMaW5lXSkKICAg
ICAgICAgICAgICAgICByZXZlcnNlTWFwcGluZ3Nbc291cmNlTGluZV0gPSBbbWFwcGluZ1swXSwg
bWFwcGluZ1sxXV07CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAotICAgIF9pc1NlcGFyYXRv
cjogZnVuY3Rpb24oY2hhcikKKyAgICBfaXNTZXBhcmF0b3IoY2hhcikKICAgICB7CiAgICAgICAg
IHJldHVybiBjaGFyID09PSAiLCIgfHwgY2hhciA9PT0gIjsiOwotICAgIH0sCisgICAgfQogCi0g
ICAgX2RlY29kZVZMUTogZnVuY3Rpb24oc3RyaW5nQ2hhckl0ZXJhdG9yKQorICAgIF9kZWNvZGVW
TFEoc3RyaW5nQ2hhckl0ZXJhdG9yKQogICAgIHsKICAgICAgICAgLy8gUmVhZCB1bnNpZ25lZCB2
YWx1ZS4KICAgICAgICAgdmFyIHJlc3VsdCA9IDA7CiAgICAgICAgIHZhciBzaGlmdCA9IDA7CiAg
ICAgICAgIGRvIHsKLSAgICAgICAgICAgIHZhciBkaWdpdCA9IHRoaXMuX2Jhc2U2NE1hcFtzdHJp
bmdDaGFySXRlcmF0b3IubmV4dCgpXTsKLSAgICAgICAgICAgIHJlc3VsdCArPSAoZGlnaXQgJiB0
aGlzLl9WTFFfQkFTRV9NQVNLKSA8PCBzaGlmdDsKLSAgICAgICAgICAgIHNoaWZ0ICs9IHRoaXMu
X1ZMUV9CQVNFX1NISUZUOwotICAgICAgICB9IHdoaWxlIChkaWdpdCAmIHRoaXMuX1ZMUV9DT05U
SU5VQVRJT05fTUFTSyk7CisgICAgICAgICAgICB2YXIgZGlnaXQgPSBXZWJJbnNwZWN0b3IuU291
cmNlTWFwLl9iYXNlNjRNYXBbc3RyaW5nQ2hhckl0ZXJhdG9yLm5leHQoKV07CisgICAgICAgICAg
ICByZXN1bHQgKz0gKGRpZ2l0ICYgV2ViSW5zcGVjdG9yLlNvdXJjZU1hcC5WTFFfQkFTRV9NQVNL
KSA8PCBzaGlmdDsKKyAgICAgICAgICAgIHNoaWZ0ICs9IFdlYkluc3BlY3Rvci5Tb3VyY2VNYXAu
VkxRX0JBU0VfU0hJRlQ7CisgICAgICAgIH0gd2hpbGUgKGRpZ2l0ICYgV2ViSW5zcGVjdG9yLlNv
dXJjZU1hcC5WTFFfQ09OVElOVUFUSU9OX01BU0spOwogCiAgICAgICAgIC8vIEZpeCB0aGUgc2ln
bi4KICAgICAgICAgdmFyIG5lZ2F0aXZlID0gcmVzdWx0ICYgMTsKICAgICAgICAgcmVzdWx0ID4+
PSAxOwogICAgICAgICByZXR1cm4gbmVnYXRpdmUgPyAtcmVzdWx0IDogcmVzdWx0OwotICAgIH0s
Ci0KLSAgICBfVkxRX0JBU0VfU0hJRlQ6IDUsCi0gICAgX1ZMUV9CQVNFX01BU0s6ICgxIDw8IDUp
IC0gMSwKLSAgICBfVkxRX0NPTlRJTlVBVElPTl9NQVNLOiAxIDw8IDUKKyAgICB9CiB9OwogCi1X
ZWJJbnNwZWN0b3IuU291cmNlTWFwLlN0cmluZ0NoYXJJdGVyYXRvciA9IGZ1bmN0aW9uKHN0cmlu
ZykKK1dlYkluc3BlY3Rvci5Tb3VyY2VNYXAuVkxRX0JBU0VfU0hJRlQgPSA1OworV2ViSW5zcGVj
dG9yLlNvdXJjZU1hcC5WTFFfQkFTRV9NQVNLID0gKDEgPDwgNSkgLSAxOworV2ViSW5zcGVjdG9y
LlNvdXJjZU1hcC5WTFFfQ09OVElOVUFUSU9OX01BU0sgPSAxIDw8IDU7CisKK1dlYkluc3BlY3Rv
ci5Tb3VyY2VNYXAuU3RyaW5nQ2hhckl0ZXJhdG9yID0gY2xhc3MgU3RyaW5nQ2hhckl0ZXJhdG9y
CiB7Ci0gICAgdGhpcy5fc3RyaW5nID0gc3RyaW5nOwotICAgIHRoaXMuX3Bvc2l0aW9uID0gMDsK
LX07CisgICAgY29uc3RydWN0b3Ioc3RyaW5nKQorICAgIHsKKyAgICAgICAgdGhpcy5fc3RyaW5n
ID0gc3RyaW5nOworICAgICAgICB0aGlzLl9wb3NpdGlvbiA9IDA7CisgICAgfQogCi1XZWJJbnNw
ZWN0b3IuU291cmNlTWFwLlN0cmluZ0NoYXJJdGVyYXRvci5wcm90b3R5cGUgPSB7Ci0gICAgbmV4
dDogZnVuY3Rpb24oKQorICAgIG5leHQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3N0
cmluZy5jaGFyQXQodGhpcy5fcG9zaXRpb24rKyk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBwZWVr
OiBmdW5jdGlvbigpCisgICAgcGVlaygpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc3Ry
aW5nLmNoYXJBdCh0aGlzLl9wb3NpdGlvbik7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBoYXNOZXh0
OiBmdW5jdGlvbigpCisgICAgaGFzTmV4dCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5f
cG9zaXRpb24gPCB0aGlzLl9zdHJpbmcubGVuZ3RoOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Tb3VyY2VNYXBSZXNvdXJjZS5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Tb3VyY2VNYXBS
ZXNvdXJjZS5qcwppbmRleCAzMDhhNjQxLi4zNDA3NzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvU291cmNlTWFwUmVzb3VyY2UuanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1NvdXJjZU1hcFJl
c291cmNlLmpzCkBAIC0yMyw0MCArMjMsMzggQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuU291cmNlTWFwUmVzb3VyY2UgPSBmdW5jdGlv
bih1cmwsIHNvdXJjZU1hcCkKK1dlYkluc3BlY3Rvci5Tb3VyY2VNYXBSZXNvdXJjZSA9IGNsYXNz
IFNvdXJjZU1hcFJlc291cmNlIGV4dGVuZHMgV2ViSW5zcGVjdG9yLlJlc291cmNlCiB7Ci0gICAg
V2ViSW5zcGVjdG9yLlJlc291cmNlLmNhbGwodGhpcywgdXJsLCBudWxsKTsKKyAgICBjb25zdHJ1
Y3Rvcih1cmwsIHNvdXJjZU1hcCkKKyAgICB7CisgICAgICAgIHN1cGVyKHVybCwgbnVsbCk7CiAK
LSAgICBjb25zb2xlLmFzc2VydCh1cmwpOwotICAgIGNvbnNvbGUuYXNzZXJ0KHNvdXJjZU1hcCk7
CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHVybCk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHNv
dXJjZU1hcCk7CiAKLSAgICB0aGlzLl9zb3VyY2VNYXAgPSBzb3VyY2VNYXA7CisgICAgICAgIHRo
aXMuX3NvdXJjZU1hcCA9IHNvdXJjZU1hcDsKIAotICAgIHZhciBpbmhlcml0ZWRNSU1FVHlwZSA9
IHRoaXMuX3NvdXJjZU1hcC5vcmlnaW5hbFNvdXJjZUNvZGUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0
b3IuUmVzb3VyY2UgPyB0aGlzLl9zb3VyY2VNYXAub3JpZ2luYWxTb3VyY2VDb2RlLnN5bnRoZXRp
Y01JTUVUeXBlIDogbnVsbDsKKyAgICAgICAgdmFyIGluaGVyaXRlZE1JTUVUeXBlID0gdGhpcy5f
c291cmNlTWFwLm9yaWdpbmFsU291cmNlQ29kZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZXNv
dXJjZSA/IHRoaXMuX3NvdXJjZU1hcC5vcmlnaW5hbFNvdXJjZUNvZGUuc3ludGhldGljTUlNRVR5
cGUgOiBudWxsOwogCi0gICAgdmFyIGZpbGVFeHRlbnNpb24gPSBXZWJJbnNwZWN0b3IuZmlsZUV4
dGVuc2lvbkZvclVSTCh1cmwpOwotICAgIHZhciBmaWxlRXh0ZW5zaW9uTUlNRVR5cGUgPSBXZWJJ
bnNwZWN0b3IubWltZVR5cGVGb3JGaWxlRXh0ZW5zaW9uKGZpbGVFeHRlbnNpb24sIHRydWUpOwor
ICAgICAgICB2YXIgZmlsZUV4dGVuc2lvbiA9IFdlYkluc3BlY3Rvci5maWxlRXh0ZW5zaW9uRm9y
VVJMKHVybCk7CisgICAgICAgIHZhciBmaWxlRXh0ZW5zaW9uTUlNRVR5cGUgPSBXZWJJbnNwZWN0
b3IubWltZVR5cGVGb3JGaWxlRXh0ZW5zaW9uKGZpbGVFeHRlbnNpb24sIHRydWUpOwogCi0gICAg
Ly8gRklYTUU6IFRoaXMgaXMgYSBsYXllcmluZyB2aW9sYXRpb24uIEl0IHNob3VsZCB1c2UgYSBo
ZWxwZXIgZnVuY3Rpb24gb24gdGhlCi0gICAgLy8gUmVzb3VyY2UgYmFzZS1jbGFzcyB0byBzZXQg
X21pbWVUeXBlIGFuZCBfdHlwZS4KLSAgICB0aGlzLl9taW1lVHlwZSA9IGZpbGVFeHRlbnNpb25N
SU1FVHlwZSB8fCBpbmhlcml0ZWRNSU1FVHlwZSB8fCAidGV4dC9qYXZhc2NyaXB0IjsKLSAgICB0
aGlzLl90eXBlID0gV2ViSW5zcGVjdG9yLlJlc291cmNlLnR5cGVGcm9tTUlNRVR5cGUodGhpcy5f
bWltZVR5cGUpOworICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyBhIGxheWVyaW5nIHZpb2xhdGlv
bi4gSXQgc2hvdWxkIHVzZSBhIGhlbHBlciBmdW5jdGlvbiBvbiB0aGUKKyAgICAgICAgLy8gUmVz
b3VyY2UgYmFzZS1jbGFzcyB0byBzZXQgX21pbWVUeXBlIGFuZCBfdHlwZS4KKyAgICAgICAgdGhp
cy5fbWltZVR5cGUgPSBmaWxlRXh0ZW5zaW9uTUlNRVR5cGUgfHwgaW5oZXJpdGVkTUlNRVR5cGUg
fHwgInRleHQvamF2YXNjcmlwdCI7CisgICAgICAgIHRoaXMuX3R5cGUgPSBXZWJJbnNwZWN0b3Iu
UmVzb3VyY2UudHlwZUZyb21NSU1FVHlwZSh0aGlzLl9taW1lVHlwZSk7CiAKLSAgICAvLyBNYXJr
IHRoZSByZXNvdXJjZSBhcyBsb2FkZWQgc28gaXQgZG9lcyBub3Qgc2hvdyBhIHNwaW5uZXIgaW4g
dGhlIHNpZGViYXIuCi0gICAgLy8gV2Ugd2lsbCByZWFsbHkgbG9hZCB0aGUgcmVzb3VyY2UgdGhl
IGZpcnN0IHRpbWUgY29udGVudCBpcyByZXF1ZXN0ZWQuCi0gICAgdGhpcy5tYXJrQXNGaW5pc2hl
ZCgpOwotfTsKLQotV2ViSW5zcGVjdG9yLlNvdXJjZU1hcFJlc291cmNlLnByb3RvdHlwZSA9IHsK
LSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlNvdXJjZU1hcFJlc291cmNlLAotICAgIF9f
cHJvdG9fXzogV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlwZSwKKyAgICAgICAgLy8gTWFy
ayB0aGUgcmVzb3VyY2UgYXMgbG9hZGVkIHNvIGl0IGRvZXMgbm90IHNob3cgYSBzcGlubmVyIGlu
IHRoZSBzaWRlYmFyLgorICAgICAgICAvLyBXZSB3aWxsIHJlYWxseSBsb2FkIHRoZSByZXNvdXJj
ZSB0aGUgZmlyc3QgdGltZSBjb250ZW50IGlzIHJlcXVlc3RlZC4KKyAgICAgICAgdGhpcy5tYXJr
QXNGaW5pc2hlZCgpOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IHNvdXJjZU1h
cCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc291cmNlTWFwOwotICAgIH0sCisgICAg
fQogCiAgICAgZ2V0IHNvdXJjZU1hcERpc3BsYXlTdWJwYXRoKCkKICAgICB7CkBAIC03Myw5ICs3
MSw5IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VNYXBSZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAKICAg
ICAgICAgLy8gU2FtZSBob3N0LiBKdXN0IGEgc3VicGF0aCBvZiB0aGUgYmFzZS4KICAgICAgICAg
cmV0dXJuIHJlc291cmNlVVJMQ29tcG9uZW50cy5wYXRoLnN1YnN0cmluZyhzb3VyY2VNYXBwaW5n
QmFzZVBhdGhVUkxDb21wb25lbnRzLnBhdGgubGVuZ3RoLCByZXNvdXJjZVVSTENvbXBvbmVudHMu
bGVuZ3RoKTsKLSAgICB9LAorICAgIH0KIAotICAgIHJlcXVlc3RDb250ZW50RnJvbUJhY2tlbmQ6
IGZ1bmN0aW9uKGNhbGxiYWNrKQorICAgIHJlcXVlc3RDb250ZW50RnJvbUJhY2tlbmQoY2FsbGJh
Y2spCiAgICAgewogICAgICAgICAvLyBSZXZlcnQgdGhlIG1hcmtBc0ZpbmlzaGVkIHRoYXQgd2Fz
IGRvbmUgaW4gdGhlIGNvbnN0cnVjdG9yLgogICAgICAgICB0aGlzLnJldmVydE1hcmtBc0Zpbmlz
aGVkKCk7CkBAIC0xMTEsNyArMTA5LDcgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZU1hcFJlc291cmNl
LnByb3RvdHlwZSA9IHsKICAgICAgICAgewogICAgICAgICAgICAgdmFyIHtlcnJvciwgY29udGVu
dCwgbWltZVR5cGUsIHN0YXR1c0NvZGV9ID0gcGFyYW1ldGVyczsKIAotICAgICAgICAgICAgY29u
c3QgYmFzZTY0ZW5jb2RlZCA9IGZhbHNlOworICAgICAgICAgICAgdmFyIGJhc2U2NGVuY29kZWQg
PSBmYWxzZTsKIAogICAgICAgICAgICAgaWYgKHN0YXR1c0NvZGUgPj0gNDAwIHx8IGVycm9yKQog
ICAgICAgICAgICAgICAgIHJldHVybiBzb3VyY2VNYXBSZXNvdXJjZU5vdEF2YWlsYWJsZShlcnJv
ciwgY29udGVudCwgbWltZVR5cGUsIHN0YXR1c0NvZGUpOwpAQCAtMTQwLDkgKzEzOCw5IEBAIFdl
Ykluc3BlY3Rvci5Tb3VyY2VNYXBSZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBm
cmFtZUlkZW50aWZpZXIgPSBXZWJJbnNwZWN0b3IuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZy
YW1lLmlkOwogCiAgICAgICAgIHJldHVybiBOZXR3b3JrQWdlbnQubG9hZFJlc291cmNlLnByb21p
c2UoZnJhbWVJZGVudGlmaWVyLCB0aGlzLnVybCkudGhlbihzb3VyY2VNYXBSZXNvdXJjZUxvYWRl
ZC5iaW5kKHRoaXMpKS5jYXRjaChzb3VyY2VNYXBSZXNvdXJjZUxvYWRFcnJvci5iaW5kKHRoaXMp
KTsKLSAgICB9LAorICAgIH0KIAotICAgIGNyZWF0ZVNvdXJjZUNvZGVMb2NhdGlvbjogZnVuY3Rp
b24obGluZU51bWJlciwgY29sdW1uTnVtYmVyKQorICAgIGNyZWF0ZVNvdXJjZUNvZGVMb2NhdGlv
bihsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgewogICAgICAgICAvLyBTb3VyY2VDb2Rl
TG9jYXRpb25zIGFyZSBhbHdheXMgY29uc3RydWN0ZWQgd2l0aCByYXcgcmVzb3VyY2VzIGFuZCBy
YXcgbG9jYXRpb25zLiBMb29rdXAgdGhlIHJhdyBsb2NhdGlvbi4KICAgICAgICAgdmFyIGVudHJ5
ID0gdGhpcy5fc291cmNlTWFwLmZpbmRFbnRyeVJldmVyc2VkKHRoaXMudXJsLCBsaW5lTnVtYmVy
KTsKQEAgLTE2MSw5ICsxNTksOSBAQCBXZWJJbnNwZWN0b3IuU291cmNlTWFwUmVzb3VyY2UucHJv
dG90eXBlID0gewogICAgICAgICB2YXIgbG9jYXRpb24gPSBvcmlnaW5hbFNvdXJjZUNvZGUuY3Jl
YXRlU291cmNlQ29kZUxvY2F0aW9uKHJhd0xpbmVOdW1iZXIsIHJhd0NvbHVtbk51bWJlcik7CiAg
ICAgICAgIGxvY2F0aW9uLl9zZXRNYXBwZWRMb2NhdGlvbih0aGlzLCBsaW5lTnVtYmVyLCBjb2x1
bW5OdW1iZXIpOwogICAgICAgICByZXR1cm4gbG9jYXRpb247Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBjcmVhdGVTb3VyY2VDb2RlVGV4dFJhbmdlOiBmdW5jdGlvbih0ZXh0UmFuZ2UpCisgICAgY3Jl
YXRlU291cmNlQ29kZVRleHRSYW5nZSh0ZXh0UmFuZ2UpCiAgICAgewogICAgICAgICAvLyBTb3Vy
Y2VDb2RlVGV4dFJhbmdlcyBhcmUgYWx3YXlzIGNvbnN0cnVjdGVkIHdpdGggcmF3IHJlc291cmNl
cyBhbmQgcmF3IGxvY2F0aW9ucy4KICAgICAgICAgLy8gSG93ZXZlciwgd2UgY2FuIHByb3ZpZGUg
dGhlIG1vc3QgYWNjdXJhdGUgbWFwcGVkIGxvY2F0aW9ucyBpbiBjb25zdHJ1Y3Rpb24uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvVGV4dE1h
cmtlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9UZXh0
TWFya2VyLmpzCmluZGV4IDg5YjNlY2EuLmQ1ZjM4MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9UZXh0TWFya2VyLmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9UZXh0TWFya2VyLmpzCkBAIC0y
Myw0MiArMjMsMzYgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
Ci1XZWJJbnNwZWN0b3IuVGV4dE1hcmtlciA9IGZ1bmN0aW9uKGNvZGVNaXJyb3JUZXh0TWFya2Vy
LCB0eXBlKQorV2ViSW5zcGVjdG9yLlRleHRNYXJrZXIgPSBjbGFzcyBUZXh0TWFya2VyIGV4dGVu
ZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0
aGlzKTsKKyAgICBjb25zdHJ1Y3Rvcihjb2RlTWlycm9yVGV4dE1hcmtlciwgdHlwZSkKKyAgICB7
CisgICAgICAgIHN1cGVyKCk7CiAKLSAgICB0aGlzLl9jb2RlTWlycm9yVGV4dE1hcmtlciA9IGNv
ZGVNaXJyb3JUZXh0TWFya2VyOwotICAgIGNvZGVNaXJyb3JUZXh0TWFya2VyLl9fd2ViSW5zcGVj
dG9yVGV4dE1hcmtlciA9IHRoaXM7CisgICAgICAgIHRoaXMuX2NvZGVNaXJyb3JUZXh0TWFya2Vy
ID0gY29kZU1pcnJvclRleHRNYXJrZXI7CisgICAgICAgIGNvZGVNaXJyb3JUZXh0TWFya2VyLl9f
d2ViSW5zcGVjdG9yVGV4dE1hcmtlciA9IHRoaXM7CiAKLSAgICB0aGlzLl90eXBlID0gdHlwZSB8
fCBXZWJJbnNwZWN0b3IuVGV4dE1hcmtlci5UeXBlLlBsYWluOwotfTsKKyAgICAgICAgdGhpcy5f
dHlwZSA9IHR5cGUgfHwgV2ViSW5zcGVjdG9yLlRleHRNYXJrZXIuVHlwZS5QbGFpbjsKKyAgICB9
CiAKLVdlYkluc3BlY3Rvci5UZXh0TWFya2VyLlR5cGUgPSB7Ci0gICAgQ29sb3I6ICJ0ZXh0LW1h
cmtlci10eXBlLWNvbG9yIiwKLSAgICBHcmFkaWVudDogInRleHQtbWFya2VyLXR5cGUtZ3JhZGll
bnQiLAotICAgIFBsYWluOiAidGV4dC1tYXJrZXItdHlwZS1wbGFpbiIKLX07CisgICAgLy8gU3Rh
dGljCiAKLVdlYkluc3BlY3Rvci5UZXh0TWFya2VyLnRleHRNYXJrZXJGb3JDb2RlTWlycm9yVGV4
dE1hcmtlciA9IGZ1bmN0aW9uKGNvZGVNaXJyb3JUZXh0TWFya2VyKQotewotICAgIHJldHVybiBj
b2RlTWlycm9yVGV4dE1hcmtlci5fX3dlYkluc3BlY3RvclRleHRNYXJrZXIgfHwgbmV3IFdlYklu
c3BlY3Rvci5UZXh0TWFya2VyKGNvZGVNaXJyb3JUZXh0TWFya2VyKTsKLX07Ci0KLVdlYkluc3Bl
Y3Rvci5UZXh0TWFya2VyLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVj
dG9yLlRleHRNYXJrZXIsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3Rv
dHlwZSwKKyAgICBzdGF0aWMgdGV4dE1hcmtlckZvckNvZGVNaXJyb3JUZXh0TWFya2VyKGNvZGVN
aXJyb3JUZXh0TWFya2VyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNvZGVNaXJyb3JUZXh0TWFy
a2VyLl9fd2ViSW5zcGVjdG9yVGV4dE1hcmtlciB8fCBuZXcgV2ViSW5zcGVjdG9yLlRleHRNYXJr
ZXIoY29kZU1pcnJvclRleHRNYXJrZXIpOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAg
Z2V0IGNvZGVNaXJyb3JUZXh0TWFya2VyKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9j
b2RlTWlycm9yVGV4dE1hcmtlcjsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCB0eXBlKCkKICAg
ICB7CiAgICAgICAgIHJldHVybiB0aGlzLl90eXBlOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0
IHJhbmdlKCkKICAgICB7CkBAIC02Niw3ICs2MCw3IEBAIFdlYkluc3BlY3Rvci5UZXh0TWFya2Vy
LnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKCFyYW5nZSkKICAgICAgICAgICAgIHJldHVybiBu
dWxsOwogICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5UZXh0UmFuZ2UocmFuZ2UuZnJv
bS5saW5lLCByYW5nZS5mcm9tLmNoLCByYW5nZS50by5saW5lLCByYW5nZS50by5jaCk7Ci0gICAg
fSwKKyAgICB9CiAKICAgICBnZXQgcmVjdHMoKQogICAgIHsKQEAgLTc3LDEwICs3MSwxNiBAQCBX
ZWJJbnNwZWN0b3IuVGV4dE1hcmtlci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBzdGFydDog
cmFuZ2UuZnJvbSwKICAgICAgICAgICAgIGVuZDogcmFuZ2UudG8KICAgICAgICAgfSk7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBjbGVhcjogZnVuY3Rpb24oKQorICAgIGNsZWFyKCkKICAgICB7CiAg
ICAgICAgIHRoaXMuX2NvZGVNaXJyb3JUZXh0TWFya2VyLmNsZWFyKCk7CiAgICAgfQogfTsKKwor
V2ViSW5zcGVjdG9yLlRleHRNYXJrZXIuVHlwZSA9IHsKKyAgICBDb2xvcjogInRleHQtbWFya2Vy
LXR5cGUtY29sb3IiLAorICAgIEdyYWRpZW50OiAidGV4dC1tYXJrZXItdHlwZS1ncmFkaWVudCIs
CisgICAgUGxhaW46ICJ0ZXh0LW1hcmtlci10eXBlLXBsYWluIgorfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9UZXh0UmFuZ2UuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvVGV4dFJhbmdlLmpzCmlu
ZGV4IDFmYjFkM2QuLmFkZWUzM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL01vZGVscy9UZXh0UmFuZ2UuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1RleHRSYW5nZS5qcwpAQCAtMjMsODAgKzIzLDc5IEBA
CiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9y
LlRleHRSYW5nZSA9IGZ1bmN0aW9uKHN0YXJ0TGluZU9yU3RhcnRPZmZzZXQsIHN0YXJ0Q29sdW1u
T3JFbmRPZmZzZXQsIGVuZExpbmUsIGVuZENvbHVtbikKK1dlYkluc3BlY3Rvci5UZXh0UmFuZ2Ug
PSBjbGFzcyBUZXh0UmFuZ2UgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0gICAgV2Vi
SW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIGNvbnN0cnVjdG9yKHN0YXJ0TGluZU9y
U3RhcnRPZmZzZXQsIHN0YXJ0Q29sdW1uT3JFbmRPZmZzZXQsIGVuZExpbmUsIGVuZENvbHVtbikK
KyAgICB7CisgICAgICAgIHN1cGVyKCk7CiAKLSAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0g
NCkgewotICAgICAgICBjb25zb2xlLmFzc2VydChzdGFydExpbmVPclN0YXJ0T2Zmc2V0IDw9IGVu
ZExpbmUpOwotICAgICAgICBjb25zb2xlLmFzc2VydChzdGFydExpbmVPclN0YXJ0T2Zmc2V0ICE9
PSBlbmRMaW5lIHx8IHN0YXJ0Q29sdW1uT3JFbmRPZmZzZXQgPD0gZW5kQ29sdW1uKTsKKyAgICAg
ICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDQpIHsKKyAgICAgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KHN0YXJ0TGluZU9yU3RhcnRPZmZzZXQgPD0gZW5kTGluZSk7CisgICAgICAgICAgICBjb25z
b2xlLmFzc2VydChzdGFydExpbmVPclN0YXJ0T2Zmc2V0ICE9PSBlbmRMaW5lIHx8IHN0YXJ0Q29s
dW1uT3JFbmRPZmZzZXQgPD0gZW5kQ29sdW1uKTsKIAotICAgICAgICB0aGlzLl9zdGFydExpbmUg
PSB0eXBlb2Ygc3RhcnRMaW5lT3JTdGFydE9mZnNldCA9PT0gIm51bWJlciIgPyBzdGFydExpbmVP
clN0YXJ0T2Zmc2V0IDogTmFOOwotICAgICAgICB0aGlzLl9zdGFydENvbHVtbiA9IHR5cGVvZiBz
dGFydENvbHVtbk9yRW5kT2Zmc2V0ID09PSAibnVtYmVyIiA/IHN0YXJ0Q29sdW1uT3JFbmRPZmZz
ZXQgOiBOYU47Ci0gICAgICAgIHRoaXMuX2VuZExpbmUgPSB0eXBlb2YgZW5kTGluZSA9PT0gIm51
bWJlciIgPyBlbmRMaW5lIDogTmFOOwotICAgICAgICB0aGlzLl9lbmRDb2x1bW4gPSB0eXBlb2Yg
ZW5kQ29sdW1uID09PSAibnVtYmVyIiA/IGVuZENvbHVtbiA6IE5hTjsKKyAgICAgICAgICAgIHRo
aXMuX3N0YXJ0TGluZSA9IHR5cGVvZiBzdGFydExpbmVPclN0YXJ0T2Zmc2V0ID09PSAibnVtYmVy
IiA/IHN0YXJ0TGluZU9yU3RhcnRPZmZzZXQgOiBOYU47CisgICAgICAgICAgICB0aGlzLl9zdGFy
dENvbHVtbiA9IHR5cGVvZiBzdGFydENvbHVtbk9yRW5kT2Zmc2V0ID09PSAibnVtYmVyIiA/IHN0
YXJ0Q29sdW1uT3JFbmRPZmZzZXQgOiBOYU47CisgICAgICAgICAgICB0aGlzLl9lbmRMaW5lID0g
dHlwZW9mIGVuZExpbmUgPT09ICJudW1iZXIiID8gZW5kTGluZSA6IE5hTjsKKyAgICAgICAgICAg
IHRoaXMuX2VuZENvbHVtbiA9IHR5cGVvZiBlbmRDb2x1bW4gPT09ICJudW1iZXIiID8gZW5kQ29s
dW1uIDogTmFOOwogCi0gICAgICAgIHRoaXMuX3N0YXJ0T2Zmc2V0ID0gTmFOOwotICAgICAgICB0
aGlzLl9lbmRPZmZzZXQgPSBOYU47Ci0gICAgfSBlbHNlIGlmIChhcmd1bWVudHMubGVuZ3RoID09
PSAyKSB7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHN0YXJ0TGluZU9yU3RhcnRPZmZzZXQgPD0g
c3RhcnRDb2x1bW5PckVuZE9mZnNldCk7CisgICAgICAgICAgICB0aGlzLl9zdGFydE9mZnNldCA9
IE5hTjsKKyAgICAgICAgICAgIHRoaXMuX2VuZE9mZnNldCA9IE5hTjsKKyAgICAgICAgfSBlbHNl
IGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAyKSB7CisgICAgICAgICAgICBjb25zb2xlLmFzc2Vy
dChzdGFydExpbmVPclN0YXJ0T2Zmc2V0IDw9IHN0YXJ0Q29sdW1uT3JFbmRPZmZzZXQpOwogCi0g
ICAgICAgIHRoaXMuX3N0YXJ0T2Zmc2V0ID0gdHlwZW9mIHN0YXJ0TGluZU9yU3RhcnRPZmZzZXQg
PT09ICJudW1iZXIiID8gc3RhcnRMaW5lT3JTdGFydE9mZnNldCA6IE5hTjsKLSAgICAgICAgdGhp
cy5fZW5kT2Zmc2V0ID0gdHlwZW9mIHN0YXJ0Q29sdW1uT3JFbmRPZmZzZXQgPT09ICJudW1iZXIi
ID8gc3RhcnRDb2x1bW5PckVuZE9mZnNldCA6IE5hTjsKKyAgICAgICAgICAgIHRoaXMuX3N0YXJ0
T2Zmc2V0ID0gdHlwZW9mIHN0YXJ0TGluZU9yU3RhcnRPZmZzZXQgPT09ICJudW1iZXIiID8gc3Rh
cnRMaW5lT3JTdGFydE9mZnNldCA6IE5hTjsKKyAgICAgICAgICAgIHRoaXMuX2VuZE9mZnNldCA9
IHR5cGVvZiBzdGFydENvbHVtbk9yRW5kT2Zmc2V0ID09PSAibnVtYmVyIiA/IHN0YXJ0Q29sdW1u
T3JFbmRPZmZzZXQgOiBOYU47CiAKLSAgICAgICAgdGhpcy5fc3RhcnRMaW5lID0gTmFOOwotICAg
ICAgICB0aGlzLl9zdGFydENvbHVtbiA9IE5hTjsKLSAgICAgICAgdGhpcy5fZW5kTGluZSA9IE5h
TjsKLSAgICAgICAgdGhpcy5fZW5kQ29sdW1uID0gTmFOOworICAgICAgICAgICAgdGhpcy5fc3Rh
cnRMaW5lID0gTmFOOworICAgICAgICAgICAgdGhpcy5fc3RhcnRDb2x1bW4gPSBOYU47CisgICAg
ICAgICAgICB0aGlzLl9lbmRMaW5lID0gTmFOOworICAgICAgICAgICAgdGhpcy5fZW5kQ29sdW1u
ID0gTmFOOworICAgICAgICB9CiAgICAgfQotfTsKLQotV2ViSW5zcGVjdG9yLlRleHRSYW5nZS5w
cm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5UZXh0UmFuZ2UsCiAK
ICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBzdGFydExpbmUoKQogICAgIHsKICAgICAgICAgcmV0
dXJuIHRoaXMuX3N0YXJ0TGluZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzdGFydENvbHVt
bigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc3RhcnRDb2x1bW47Ci0gICAgfSwKKyAg
ICB9CiAKICAgICBnZXQgZW5kTGluZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZW5k
TGluZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBlbmRDb2x1bW4oKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHRoaXMuX2VuZENvbHVtbjsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzdGFy
dE9mZnNldCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc3RhcnRPZmZzZXQ7Ci0gICAg
fSwKKyAgICB9CiAKICAgICBnZXQgZW5kT2Zmc2V0KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0
aGlzLl9lbmRPZmZzZXQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzdGFydFBvc2l0aW9uOiBmdW5j
dGlvbigpCisgICAgc3RhcnRQb3NpdGlvbigpCiAgICAgewogICAgICAgICByZXR1cm4gbmV3IFdl
Ykluc3BlY3Rvci5Tb3VyY2VDb2RlUG9zaXRpb24odGhpcy5fc3RhcnRMaW5lLCB0aGlzLl9zdGFy
dENvbHVtbik7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBlbmRQb3NpdGlvbjogZnVuY3Rpb24oKQor
ICAgIGVuZFBvc2l0aW9uKCkKICAgICB7CiAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9y
LlNvdXJjZUNvZGVQb3NpdGlvbih0aGlzLl9lbmRMaW5lLCB0aGlzLl9lbmRDb2x1bW4pOwotICAg
IH0sCisgICAgfQogCi0gICAgcmVzb2x2ZUxpbmVzQW5kQ29sdW1uczogZnVuY3Rpb24odGV4dCkK
KyAgICByZXNvbHZlTGluZXNBbmRDb2x1bW5zKHRleHQpCiAgICAgewogICAgICAgICBjb25zb2xl
LmFzc2VydCh0eXBlb2YgdGV4dCA9PT0gInN0cmluZyIpOwogICAgICAgICBpZiAodHlwZW9mIHRl
eHQgIT09ICJzdHJpbmciKQpAQCAtMTMwLDkgKzEyOSw5IEBAIFdlYkluc3BlY3Rvci5UZXh0UmFu
Z2UucHJvdG90eXBlID0gewogCiAgICAgICAgIGlmICh0aGlzLl9zdGFydExpbmUgPT09IHRoaXMu
X2VuZExpbmUpCiAgICAgICAgICAgICB0aGlzLl9lbmRDb2x1bW4gKz0gdGhpcy5fc3RhcnRDb2x1
bW47Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZXNvbHZlT2Zmc2V0czogZnVuY3Rpb24odGV4dCkK
KyAgICByZXNvbHZlT2Zmc2V0cyh0ZXh0KQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQo
dHlwZW9mIHRleHQgPT09ICJzdHJpbmciKTsKICAgICAgICAgaWYgKHR5cGVvZiB0ZXh0ICE9PSAi
c3RyaW5nIikKQEAgLTE1Nyw1ICsxNTYsMyBAQCBXZWJJbnNwZWN0b3IuVGV4dFJhbmdlLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgdGhpcy5fZW5kT2Zmc2V0ID0gbGFzdE5ld0xpbmVPZmZzZXQgKyB0
aGlzLl9lbmRDb2x1bW47CiAgICAgfQogfTsKLQotV2ViSW5zcGVjdG9yLlRleHRSYW5nZS5wcm90
b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvVGltZWxpbmUu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvVGltZWxpbmUu
anMKaW5kZXggMjI3NDM4MS4uNjQ5YmE3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1RpbWVsaW5lLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9UaW1lbGluZS5qcwpAQCAtMjMsNTQgKzIzLDQ4
IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVj
dG9yLlRpbWVsaW5lID0gZnVuY3Rpb24odHlwZSkKK1dlYkluc3BlY3Rvci5UaW1lbGluZSA9IGNs
YXNzIFRpbWVsaW5lIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogewotICAgIGlmICh0aGlz
LmNvbnN0cnVjdG9yID09PSBXZWJJbnNwZWN0b3IuVGltZWxpbmUpIHsKLSAgICAgICAgLy8gV2hl
biBpbnN0YW50aWF0ZWQgZGlyZWN0bHksIHBvdGVudGlhbGx5IHJldHVybiBhbiBpbnN0YW5jZSBv
ZiBhIGNvbmNyZXRlIHN1YmNsYXNzLgorICAgIGNvbnN0cnVjdG9yKHR5cGUpCisgICAgeworICAg
ICAgICBzdXBlcigpOworCisgICAgICAgIHRoaXMuX3R5cGUgPSB0eXBlOworCisgICAgICAgIHRo
aXMucmVzZXQodHJ1ZSk7CisgICAgfQorCisgICAgLy8gU3RhdGljCisKKyAgICBzdGF0aWMgY3Jl
YXRlKHR5cGUpCisgICAgewogICAgICAgICBpZiAodHlwZSA9PT0gV2ViSW5zcGVjdG9yLlRpbWVs
aW5lUmVjb3JkLlR5cGUuTmV0d29yaykKICAgICAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVj
dG9yLk5ldHdvcmtUaW1lbGluZSh0eXBlKTsKKworICAgICAgICByZXR1cm4gbmV3IFdlYkluc3Bl
Y3Rvci5UaW1lbGluZSh0eXBlKTsKICAgICB9CiAKLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNh
bGwodGhpcyk7Ci0KLSAgICB0aGlzLl90eXBlID0gdHlwZTsKLQotICAgIHRoaXMucmVzZXQodHJ1
ZSk7Ci19OwotCi1XZWJJbnNwZWN0b3IuVGltZWxpbmUuRXZlbnQgPSB7Ci0gICAgUmVzZXQ6ICJ0
aW1lbGluZS1yZXNldCIsCi0gICAgUmVjb3JkQWRkZWQ6ICJ0aW1lbGluZS1yZWNvcmQtYWRkZWQi
LAotICAgIFRpbWVzVXBkYXRlZDogInRpbWVsaW5lLXRpbWVzLXVwZGF0ZWQiCi19OwotCi1XZWJJ
bnNwZWN0b3IuVGltZWxpbmUuVGltZWxpbmVUeXBlQ29va2llS2V5ID0gInRpbWVsaW5lLXR5cGUi
OwotCi1XZWJJbnNwZWN0b3IuVGltZWxpbmUucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9y
OiBXZWJJbnNwZWN0b3IuVGltZWxpbmUsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuT2Jq
ZWN0LnByb3RvdHlwZSwKLQogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IHN0YXJ0VGltZSgpCiAg
ICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc3RhcnRUaW1lOwotICAgIH0sCisgICAgfQogCiAg
ICAgZ2V0IGVuZFRpbWUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2VuZFRpbWU7Ci0g
ICAgfSwKKyAgICB9CiAKICAgICBnZXQgcmVjb3JkcygpCiAgICAgewogICAgICAgICByZXR1cm4g
dGhpcy5fcmVjb3JkczsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCB0eXBlKCkKICAgICB7CiAg
ICAgICAgIHJldHVybiB0aGlzLl90eXBlOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGRpc3Bs
YXlOYW1lKCkKICAgICB7CkBAIC04NCw3ICs3OCw3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZS5w
cm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJG
cmFtZXMiKTsKIAogICAgICAgICBjb25zb2xlLmVycm9yKCJUaW1lbGluZSBoYXMgdW5rbm93biB0
eXBlOiIsIHRoaXMuX3R5cGUsIHRoaXMpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGljb25D
bGFzc05hbWUoKQogICAgIHsKQEAgLTk4LDkgKzkyLDkgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5l
LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVGltZWxpbmVT
aWRlYmFyUGFuZWwuU2NyaXB0SWNvblN0eWxlQ2xhc3M7CiAKICAgICAgICAgY29uc29sZS5lcnJv
cigiVGltZWxpbmUgaGFzIHVua25vd24gdHlwZToiLCB0aGlzLl90eXBlLCB0aGlzKTsKLSAgICB9
LAorICAgIH0KIAotICAgIHJlc2V0OiBmdW5jdGlvbihzdXBwcmVzc0V2ZW50cykKKyAgICByZXNl
dChzdXBwcmVzc0V2ZW50cykKICAgICB7CiAgICAgICAgIHRoaXMuX3JlY29yZHMgPSBbXTsKICAg
ICAgICAgdGhpcy5fc3RhcnRUaW1lID0gTmFOOwpAQCAtMTEwLDkgKzEwNCw5IEBAIFdlYkluc3Bl
Y3Rvci5UaW1lbGluZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZl
bnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuVGltZWxpbmUuRXZlbnQuUmVzZXQpOwogICAgICAg
ICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlRpbWVsaW5l
LkV2ZW50LlRpbWVzVXBkYXRlZCk7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAotICAgIGFk
ZFJlY29yZDogZnVuY3Rpb24ocmVjb3JkKQorICAgIGFkZFJlY29yZChyZWNvcmQpCiAgICAgewog
ICAgICAgICBpZiAocmVjb3JkLnVwZGF0ZXNEeW5hbWljYWxseSkKICAgICAgICAgICAgIHJlY29y
ZC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5FdmVudC5VcGRh
dGVkLCB0aGlzLl9yZWNvcmRVcGRhdGVkLCB0aGlzKTsKQEAgLTEyMiwxNiArMTE2LDE2IEBAIFdl
Ykluc3BlY3Rvci5UaW1lbGluZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3VwZGF0ZVRp
bWVzSWZOZWVkZWQocmVjb3JkKTsKIAogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3Rl
bmVycyhXZWJJbnNwZWN0b3IuVGltZWxpbmUuRXZlbnQuUmVjb3JkQWRkZWQsIHtyZWNvcmR9KTsK
LSAgICB9LAorICAgIH0KIAotICAgIHNhdmVJZGVudGl0eVRvQ29va2llOiBmdW5jdGlvbihjb29r
aWUpCisgICAgc2F2ZUlkZW50aXR5VG9Db29raWUoY29va2llKQogICAgIHsKICAgICAgICAgY29v
a2llW1dlYkluc3BlY3Rvci5UaW1lbGluZS5UaW1lbGluZVR5cGVDb29raWVLZXldID0gdGhpcy5f
dHlwZTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAgIF91cGRhdGVUaW1l
c0lmTmVlZGVkOiBmdW5jdGlvbihyZWNvcmQpCisgICAgX3VwZGF0ZVRpbWVzSWZOZWVkZWQocmVj
b3JkKQogICAgIHsKICAgICAgICAgdmFyIGNoYW5nZWQgPSBmYWxzZTsKIApAQCAtMTQ3LDEwICsx
NDEsMTggQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lLnByb3RvdHlwZSA9IHsKIAogICAgICAgICBp
ZiAoY2hhbmdlZCkKICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdl
Ykluc3BlY3Rvci5UaW1lbGluZS5FdmVudC5UaW1lc1VwZGF0ZWQpOwotICAgIH0sCisgICAgfQog
Ci0gICAgX3JlY29yZFVwZGF0ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9yZWNvcmRVcGRhdGVk
KGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5fdXBkYXRlVGltZXNJZk5lZWRlZChldmVudC50
YXJnZXQpOwogICAgIH0KIH07CisKK1dlYkluc3BlY3Rvci5UaW1lbGluZS5FdmVudCA9IHsKKyAg
ICBSZXNldDogInRpbWVsaW5lLXJlc2V0IiwKKyAgICBSZWNvcmRBZGRlZDogInRpbWVsaW5lLXJl
Y29yZC1hZGRlZCIsCisgICAgVGltZXNVcGRhdGVkOiAidGltZWxpbmUtdGltZXMtdXBkYXRlZCIK
K307CisKK1dlYkluc3BlY3Rvci5UaW1lbGluZS5UaW1lbGluZVR5cGVDb29raWVLZXkgPSAidGlt
ZWxpbmUtdHlwZSI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Nb2RlbHMvVGltZWxpbmVNYXJrZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Nb2RlbHMvVGltZWxpbmVNYXJrZXIuanMKaW5kZXggMDVlODMzOS4uNzU5Nzdh
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxz
L1RpbWVsaW5lTWFya2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01vZGVscy9UaW1lbGluZU1hcmtlci5qcwpAQCAtMjMsMzcgKzIzLDI0IEBACiAgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlRpbWVsaW5l
TWFya2VyID0gZnVuY3Rpb24odGltZSwgdHlwZSkKK1dlYkluc3BlY3Rvci5UaW1lbGluZU1hcmtl
ciA9IGNsYXNzIFRpbWVsaW5lTWFya2VyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogewot
ICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICBjb25zdHJ1Y3Rvcih0aW1l
LCB0eXBlKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKIAotICAgIGNvbnNvbGUuYXNzZXJ0KHR5
cGUpOworICAgICAgICBjb25zb2xlLmFzc2VydCh0eXBlKTsKIAotICAgIHRoaXMuX3RpbWUgPSB0
aW1lIHx8IDA7Ci0gICAgdGhpcy5fdHlwZSA9IHR5cGU7Ci19OwotCi1XZWJJbnNwZWN0b3IuVGlt
ZWxpbmVNYXJrZXIuRXZlbnQgPSB7Ci0gICAgVGltZUNoYW5nZWQ6ICJ0aW1lbGluZS1tYXJrZXIt
dGltZS1jaGFuZ2VkIgotfTsKLQotV2ViSW5zcGVjdG9yLlRpbWVsaW5lTWFya2VyLlR5cGUgPSB7
Ci0gICAgQ3VycmVudFRpbWU6ICJjdXJyZW50LXRpbWUiLAotICAgIExvYWRFdmVudDogImxvYWQt
ZXZlbnQiLAotICAgIERPTUNvbnRlbnRFdmVudDogImRvbS1jb250ZW50LWV2ZW50IiwKLSAgICBU
aW1lU3RhbXA6ICJ0aW1lc3RhbXAiCi19OwotCi1XZWJJbnNwZWN0b3IuVGltZWxpbmVNYXJrZXIu
cHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuVGltZWxpbmVNYXJr
ZXIsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZSwKKyAgICAg
ICAgdGhpcy5fdGltZSA9IHRpbWUgfHwgMDsKKyAgICAgICAgdGhpcy5fdHlwZSA9IHR5cGU7Cisg
ICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgdGltZSgpCiAgICAgewogICAgICAgICBy
ZXR1cm4gdGhpcy5fdGltZTsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCB0aW1lKHgpCiAgICAg
ewpAQCAtNjMsMTAgKzUwLDIxIEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZU1hcmtlci5wcm90b3R5
cGUgPSB7CiAgICAgICAgIHRoaXMuX3RpbWUgPSB4IHx8IDA7CiAKICAgICAgICAgdGhpcy5kaXNw
YXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlRpbWVsaW5lTWFya2VyLkV2ZW50LlRp
bWVDaGFuZ2VkKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCB0eXBlKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiB0aGlzLl90eXBlOwogICAgIH0KIH07CisKK1dlYkluc3BlY3Rvci5UaW1lbGlu
ZU1hcmtlci5FdmVudCA9IHsKKyAgICBUaW1lQ2hhbmdlZDogInRpbWVsaW5lLW1hcmtlci10aW1l
LWNoYW5nZWQiCit9OworCitXZWJJbnNwZWN0b3IuVGltZWxpbmVNYXJrZXIuVHlwZSA9IHsKKyAg
ICBDdXJyZW50VGltZTogImN1cnJlbnQtdGltZSIsCisgICAgTG9hZEV2ZW50OiAibG9hZC1ldmVu
dCIsCisgICAgRE9NQ29udGVudEV2ZW50OiAiZG9tLWNvbnRlbnQtZXZlbnQiLAorICAgIFRpbWVT
dGFtcDogInRpbWVzdGFtcCIKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Nb2RlbHMvVGltZWxpbmVSZWNvcmQuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvVGltZWxpbmVSZWNvcmQuanMKaW5kZXggMWMwMDNk
MS4uNTY2NzFmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvTW9kZWxzL1RpbWVsaW5lUmVjb3JkLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL01vZGVscy9UaW1lbGluZVJlY29yZC5qcwpAQCAtMjMsMTAxICsyMyw4MyBA
QAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rv
ci5UaW1lbGluZVJlY29yZCA9IGZ1bmN0aW9uKHR5cGUsIHN0YXJ0VGltZSwgZW5kVGltZSwgY2Fs
bEZyYW1lcywgc291cmNlQ29kZUxvY2F0aW9uKQorV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3Jk
ID0gY2xhc3MgVGltZWxpbmVSZWNvcmQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0g
ICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIGNvbnN0cnVjdG9yKHR5cGUs
IHN0YXJ0VGltZSwgZW5kVGltZSwgY2FsbEZyYW1lcywgc291cmNlQ29kZUxvY2F0aW9uKQorICAg
IHsKKyAgICAgICAgc3VwZXIoKTsKIAotICAgIGNvbnNvbGUuYXNzZXJ0KHR5cGUpOworICAgICAg
ICBjb25zb2xlLmFzc2VydCh0eXBlKTsKIAotICAgIGlmICh0eXBlIGluIFdlYkluc3BlY3Rvci5U
aW1lbGluZVJlY29yZC5UeXBlKQotICAgICAgICB0eXBlID0gV2ViSW5zcGVjdG9yLlRpbWVsaW5l
UmVjb3JkLlR5cGVbdHlwZV07CisgICAgICAgIGlmICh0eXBlIGluIFdlYkluc3BlY3Rvci5UaW1l
bGluZVJlY29yZC5UeXBlKQorICAgICAgICAgICAgdHlwZSA9IFdlYkluc3BlY3Rvci5UaW1lbGlu
ZVJlY29yZC5UeXBlW3R5cGVdOwogCi0gICAgdGhpcy5fdHlwZSA9IHR5cGU7Ci0gICAgdGhpcy5f
c3RhcnRUaW1lID0gc3RhcnRUaW1lIHx8IE5hTjsKLSAgICB0aGlzLl9lbmRUaW1lID0gZW5kVGlt
ZSB8fCBOYU47Ci0gICAgdGhpcy5fY2FsbEZyYW1lcyA9IGNhbGxGcmFtZXMgfHwgbnVsbDsKLSAg
ICB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb24gPSBzb3VyY2VDb2RlTG9jYXRpb24gfHwgbnVsbDsK
LX07Ci0KLVdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5FdmVudCA9IHsKLSAgICBVcGRhdGVk
OiAidGltZWxpbmUtcmVjb3JkLXVwZGF0ZWQiCi19OwotCi1XZWJJbnNwZWN0b3IuVGltZWxpbmVS
ZWNvcmQuVHlwZSA9IHsKLSAgICBOZXR3b3JrOiAidGltZWxpbmUtcmVjb3JkLXR5cGUtbmV0d29y
ayIsCi0gICAgTGF5b3V0OiAidGltZWxpbmUtcmVjb3JkLXR5cGUtbGF5b3V0IiwKLSAgICBTY3Jp
cHQ6ICJ0aW1lbGluZS1yZWNvcmQtdHlwZS1zY3JpcHQiLAotICAgIFJ1bkxvb3A6ICJ0aW1lbGlu
ZS1yZWNvcmQtdHlwZS1ydW5sb29wIgotfTsKLQotV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3Jk
LlR5cGVJZGVudGlmaWVyID0gInRpbWVsaW5lLXJlY29yZCI7Ci1XZWJJbnNwZWN0b3IuVGltZWxp
bmVSZWNvcmQuU291cmNlQ29kZVVSTENvb2tpZUtleSA9ICJ0aW1lbGluZS1yZWNvcmQtc291cmNl
LWNvZGUtdXJsIjsKLVdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5Tb3VyY2VDb2RlTG9jYXRp
b25MaW5lQ29va2llS2V5ID0gInRpbWVsaW5lLXJlY29yZC1zb3VyY2UtY29kZS1sb2NhdGlvbi1s
aW5lIjsKLVdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5Tb3VyY2VDb2RlTG9jYXRpb25Db2x1
bW5Db29raWVLZXkgPSAidGltZWxpbmUtcmVjb3JkLXNvdXJjZS1jb2RlLWxvY2F0aW9uLWNvbHVt
biI7Ci1XZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQuVHlwZUNvb2tpZUtleSA9ICJ0aW1lbGlu
ZS1yZWNvcmQtdHlwZSI7Ci0KLVdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5wcm90b3R5cGUg
PSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZCwKKyAgICAg
ICAgdGhpcy5fdHlwZSA9IHR5cGU7CisgICAgICAgIHRoaXMuX3N0YXJ0VGltZSA9IHN0YXJ0VGlt
ZSB8fCBOYU47CisgICAgICAgIHRoaXMuX2VuZFRpbWUgPSBlbmRUaW1lIHx8IE5hTjsKKyAgICAg
ICAgdGhpcy5fY2FsbEZyYW1lcyA9IGNhbGxGcmFtZXMgfHwgbnVsbDsKKyAgICAgICAgdGhpcy5f
c291cmNlQ29kZUxvY2F0aW9uID0gc291cmNlQ29kZUxvY2F0aW9uIHx8IG51bGw7CisgICAgfQog
CiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgdHlwZSgpCiAgICAgewogICAgICAgICByZXR1cm4g
dGhpcy5fdHlwZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzdGFydFRpbWUoKQogICAgIHsK
ICAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3NlcyBpZiBuZWVkZWQuCiAgICAgICAg
IHJldHVybiB0aGlzLl9zdGFydFRpbWU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgYWN0aXZl
U3RhcnRUaW1lKCkKICAgICB7CiAgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMg
aWYgbmVlZGVkLgogICAgICAgICByZXR1cm4gdGhpcy5fc3RhcnRUaW1lOwotICAgIH0sCisgICAg
fQogCiAgICAgZ2V0IGVuZFRpbWUoKQogICAgIHsKICAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkg
c3ViY2xhc3NlcyBpZiBuZWVkZWQuCiAgICAgICAgIHJldHVybiB0aGlzLl9lbmRUaW1lOwotICAg
IH0sCisgICAgfQogCiAgICAgZ2V0IGR1cmF0aW9uKCkKICAgICB7CiAgICAgICAgIC8vIFVzZSB0
aGUgZ2V0dGVycyBpbnN0ZWFkIG9mIHRoZSBwcm9wZXJ0aWVzIHNvIHRoaXMgd29ya3MgZm9yIHN1
YmNsYXNzZXMgdGhhdCBvdmVycmlkZSB0aGUgZ2V0dGVycy4KICAgICAgICAgcmV0dXJuIHRoaXMu
ZW5kVGltZSAtIHRoaXMuc3RhcnRUaW1lOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGluYWN0
aXZlRHVyYXRpb24oKQogICAgIHsKICAgICAgICAgLy8gVXNlIHRoZSBnZXR0ZXJzIGluc3RlYWQg
b2YgdGhlIHByb3BlcnRpZXMgc28gdGhpcyB3b3JrcyBmb3Igc3ViY2xhc3NlcyB0aGF0IG92ZXJy
aWRlIHRoZSBnZXR0ZXJzLgogICAgICAgICByZXR1cm4gdGhpcy5hY3RpdmVTdGFydFRpbWUgLSB0
aGlzLnN0YXJ0VGltZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBhY3RpdmVEdXJhdGlvbigp
CiAgICAgewogICAgICAgICAvLyBVc2UgdGhlIGdldHRlcnMgaW5zdGVhZCBvZiB0aGUgcHJvcGVy
dGllcyBzbyB0aGlzIHdvcmtzIGZvciBzdWJjbGFzc2VzIHRoYXQgb3ZlcnJpZGUgdGhlIGdldHRl
cnMuCiAgICAgICAgIHJldHVybiB0aGlzLmVuZFRpbWUgLSB0aGlzLmFjdGl2ZVN0YXJ0VGltZTsK
LSAgICB9LAorICAgIH0KIAogICAgIGdldCB1cGRhdGVzRHluYW1pY2FsbHkoKQogICAgIHsKICAg
ICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3NlcyBpZiBuZWVkZWQuCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCB1c2VzQWN0aXZlU3RhcnRUaW1l
KCkKICAgICB7CiAgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMgaWYgbmVlZGVk
LgogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgY2FsbEZy
YW1lcygpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fY2FsbEZyYW1lczsKLSAgICB9LAor
ICAgIH0KIAogICAgIGdldCBpbml0aWF0b3JDYWxsRnJhbWUoKQogICAgIHsKQEAgLTEzMiwxNCAr
MTE0LDE0IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIH0KIAogICAgICAgICByZXR1cm4gbnVsbDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBz
b3VyY2VDb2RlTG9jYXRpb24oKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3NvdXJjZUNv
ZGVMb2NhdGlvbjsKLSAgICB9LAorICAgIH0KIAotICAgIHNhdmVJZGVudGl0eVRvQ29va2llOiBm
dW5jdGlvbihjb29raWUpCisgICAgc2F2ZUlkZW50aXR5VG9Db29raWUoY29va2llKQogICAgIHsK
ICAgICAgICAgY29va2llW1dlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5Tb3VyY2VDb2RlVVJM
Q29va2llS2V5XSA9IHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbiA/IHRoaXMuX3NvdXJjZUNvZGVM
b2NhdGlvbi5zb3VyY2VDb2RlLnVybCA/IHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbi5zb3VyY2VD
b2RlLnVybC5oYXNoIDogbnVsbCA6IG51bGw7CiAgICAgICAgIGNvb2tpZVtXZWJJbnNwZWN0b3Iu
VGltZWxpbmVSZWNvcmQuU291cmNlQ29kZUxvY2F0aW9uTGluZUNvb2tpZUtleV0gPSB0aGlzLl9z
b3VyY2VDb2RlTG9jYXRpb24gPyB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb24ubGluZU51bWJlciA6
IG51bGw7CkBAIC0xNDgsNCArMTMwLDE5IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5w
cm90b3R5cGUgPSB7CiAgICAgfQogfTsKIAotV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkLnBy
b3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsKK1dlYklu
c3BlY3Rvci5UaW1lbGluZVJlY29yZC5FdmVudCA9IHsKKyAgICBVcGRhdGVkOiAidGltZWxpbmUt
cmVjb3JkLXVwZGF0ZWQiCit9OworCitXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQuVHlwZSA9
IHsKKyAgICBOZXR3b3JrOiAidGltZWxpbmUtcmVjb3JkLXR5cGUtbmV0d29yayIsCisgICAgTGF5
b3V0OiAidGltZWxpbmUtcmVjb3JkLXR5cGUtbGF5b3V0IiwKKyAgICBTY3JpcHQ6ICJ0aW1lbGlu
ZS1yZWNvcmQtdHlwZS1zY3JpcHQiLAorICAgIFJ1bkxvb3A6ICJ0aW1lbGluZS1yZWNvcmQtdHlw
ZS1ydW5sb29wIgorfTsKKworV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkLlR5cGVJZGVudGlm
aWVyID0gInRpbWVsaW5lLXJlY29yZCI7CitXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQuU291
cmNlQ29kZVVSTENvb2tpZUtleSA9ICJ0aW1lbGluZS1yZWNvcmQtc291cmNlLWNvZGUtdXJsIjsK
K1dlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5Tb3VyY2VDb2RlTG9jYXRpb25MaW5lQ29va2ll
S2V5ID0gInRpbWVsaW5lLXJlY29yZC1zb3VyY2UtY29kZS1sb2NhdGlvbi1saW5lIjsKK1dlYklu
c3BlY3Rvci5UaW1lbGluZVJlY29yZC5Tb3VyY2VDb2RlTG9jYXRpb25Db2x1bW5Db29raWVLZXkg
PSAidGltZWxpbmUtcmVjb3JkLXNvdXJjZS1jb2RlLWxvY2F0aW9uLWNvbHVtbiI7CitXZWJJbnNw
ZWN0b3IuVGltZWxpbmVSZWNvcmQuVHlwZUNvb2tpZUtleSA9ICJ0aW1lbGluZS1yZWNvcmQtdHlw
ZSI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2Rl
bHMvVGltZWxpbmVSZWNvcmRpbmcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Nb2RlbHMvVGltZWxpbmVSZWNvcmRpbmcuanMKaW5kZXggNjhjNDZhOC4uMjk3YzI3MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Rp
bWVsaW5lUmVjb3JkaW5nLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01vZGVscy9UaW1lbGluZVJlY29yZGluZy5qcwpAQCAtMjMsNzUgKzIzLDYyIEBACiAgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlRpbWVs
aW5lUmVjb3JkaW5nID0gZnVuY3Rpb24oaWRlbnRpZmllciwgZGlzcGxheU5hbWUpCitXZWJJbnNw
ZWN0b3IuVGltZWxpbmVSZWNvcmRpbmcgPSBjbGFzcyBUaW1lbGluZVJlY29yZGluZyBleHRlbmRz
IFdlYkluc3BlY3Rvci5PYmplY3QKIHsKLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhp
cyk7CisgICAgY29uc3RydWN0b3IoaWRlbnRpZmllciwgZGlzcGxheU5hbWUpCisgICAgeworICAg
ICAgICBzdXBlcigpOwogCi0gICAgdGhpcy5faWRlbnRpZmllciA9IGlkZW50aWZpZXI7Ci0gICAg
dGhpcy5fdGltZWxpbmVzID0gbmV3IE1hcDsKLSAgICB0aGlzLl9kaXNwbGF5TmFtZSA9IGRpc3Bs
YXlOYW1lOwotICAgIHRoaXMuX2lzV3JpdGFibGUgPSB0cnVlOworICAgICAgICB0aGlzLl9pZGVu
dGlmaWVyID0gaWRlbnRpZmllcjsKKyAgICAgICAgdGhpcy5fdGltZWxpbmVzID0gbmV3IE1hcDsK
KyAgICAgICAgdGhpcy5fZGlzcGxheU5hbWUgPSBkaXNwbGF5TmFtZTsKKyAgICAgICAgdGhpcy5f
aXNXcml0YWJsZSA9IHRydWU7CiAKLSAgICAvLyBGb3IgbGVnYWN5IGJhY2tlbmRzLCB3ZSBjb21w
dXRlIHRoZSBlbGFwc2VkIHRpbWUgb2YgcmVjb3JkcyByZWxhdGl2ZSB0byB0aGlzIHRpbWVzdGFt
cC4KLSAgICB0aGlzLl9sZWdhY3lGaXJzdFJlY29yZGVkVGltZXN0YW1wID0gTmFOOworICAgICAg
ICAvLyBGb3IgbGVnYWN5IGJhY2tlbmRzLCB3ZSBjb21wdXRlIHRoZSBlbGFwc2VkIHRpbWUgb2Yg
cmVjb3JkcyByZWxhdGl2ZSB0byB0aGlzIHRpbWVzdGFtcC4KKyAgICAgICAgdGhpcy5fbGVnYWN5
Rmlyc3RSZWNvcmRlZFRpbWVzdGFtcCA9IE5hTjsKIAotICAgIHRoaXMucmVzZXQodHJ1ZSk7Ci19
OwotCi1XZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRpbmcuRXZlbnQgPSB7Ci0gICAgUmVzZXQ6
ICJ0aW1lbGluZS1yZWNvcmRpbmctcmVzZXQiLAotICAgIFVubG9hZGVkOiAidGltZWxpbmUtcmVj
b3JkaW5nLXVubG9hZGVkIiwKLSAgICBTb3VyY2VDb2RlVGltZWxpbmVBZGRlZDogInRpbWVsaW5l
LXJlY29yZGluZy1zb3VyY2UtY29kZS10aW1lbGluZS1hZGRlZCIsCi0gICAgVGltZWxpbmVBZGRl
ZDogInRpbWVsaW5lLXJlY29yZGluZy10aW1lbGluZS1hZGRlZCIsCi0gICAgVGltZWxpbmVSZW1v
dmVkOiAidGltZWxpbmUtcmVjb3JkaW5nLXRpbWVsaW5lLXJlbW92ZWQiLAotICAgIFRpbWVzVXBk
YXRlZDogInRpbWVsaW5lLXJlY29yZGluZy10aW1lcy11cGRhdGVkIgotfTsKLQotV2ViSW5zcGVj
dG9yLlRpbWVsaW5lUmVjb3JkaW5nLlRpbWVzdGFtcFRocmVzaG9sZEZvckxlZ2FjeVJlY29yZENv
bnZlcnNpb24gPSAyODgwMDAwMDsgLy8gRGF0ZS5wYXJzZSgiSmFuIDEsIDE5NzAiKQotCi1XZWJJ
bnNwZWN0b3IuVGltZWxpbmVSZWNvcmRpbmcucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9y
OiBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRpbmcsCi0gICAgX19wcm90b19fOiBXZWJJbnNw
ZWN0b3IuT2JqZWN0LnByb3RvdHlwZSwKKyAgICAgICAgdGhpcy5yZXNldCh0cnVlKTsKKyAgICB9
CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBkaXNwbGF5TmFtZSgpCiAgICAgewogICAgICAg
ICByZXR1cm4gdGhpcy5fZGlzcGxheU5hbWU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgaWRl
bnRpZmllcigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5faWRlbnRpZmllcjsKLSAgICB9
LAorICAgIH0KIAogICAgIGdldCB0aW1lbGluZXMoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRo
aXMuX3RpbWVsaW5lczsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzdGFydFRpbWUoKQogICAg
IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXJ0VGltZTsKLSAgICB9LAorICAgIH0KIAogICAg
IGdldCBlbmRUaW1lKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9lbmRUaW1lOwotICAg
IH0sCisgICAgfQogCi0gICAgc2F2ZUlkZW50aXR5VG9Db29raWU6IGZ1bmN0aW9uKCkKKyAgICBz
YXZlSWRlbnRpdHlUb0Nvb2tpZSgpCiAgICAgewogICAgICAgICAvLyBEbyBub3RoaW5nLiBUaW1l
bGluZSByZWNvcmRpbmdzIGFyZSBub3QgcGVyc2lzdGVkIHdoZW4gdGhlIGluc3BlY3RvciBpcwog
ICAgICAgICAvLyByZS1vcGVuZWQsIHNvIGRvIG5vdCBhdHRlbXB0IHRvIHJlc3RvcmUgYnkgaWRl
bnRpZmllciBvciBkaXNwbGF5IG5hbWUuCi0gICAgfSwKKyAgICB9CiAKLSAgICBpc1dyaXRhYmxl
OiBmdW5jdGlvbigpCisgICAgaXNXcml0YWJsZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhp
cy5faXNXcml0YWJsZTsKLSAgICB9LAorICAgIH0KIAotICAgIGlzRW1wdHk6IGZ1bmN0aW9uKCkK
KyAgICBpc0VtcHR5KCkKICAgICB7CiAgICAgICAgIGZvciAodmFyIHRpbWVsaW5lIG9mIHRoaXMu
X3RpbWVsaW5lcy52YWx1ZXMoKSkgewogICAgICAgICAgICAgaWYgKHRpbWVsaW5lLnJlY29yZHMu
bGVuZ3RoKQpAQCAtOTksMTggKzg2LDE4IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZGlu
Zy5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9
LAorICAgIH0KIAotICAgIHVubG9hZGVkOiBmdW5jdGlvbigpCisgICAgdW5sb2FkZWQoKQogICAg
IHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuaXNFbXB0eSgpLCAiU2hvdWxkbid0IHVu
bG9hZCBhbiBlbXB0eSByZWNvcmRpbmc7IGl0IHNob3VsZCBiZSByZXVzZWQgaW5zdGVhZC4iKTsK
IAogICAgICAgICB0aGlzLl9pc1dyaXRhYmxlID0gZmFsc2U7CiAKICAgICAgICAgdGhpcy5kaXNw
YXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nLkV2ZW50
LlVubG9hZGVkKTsKLSAgICB9LAorICAgIH0KIAotICAgIHJlc2V0OiBmdW5jdGlvbihzdXBwcmVz
c0V2ZW50cykKKyAgICByZXNldChzdXBwcmVzc0V2ZW50cykKICAgICB7CiAgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KHRoaXMuX2lzV3JpdGFibGUsICJDYW4ndCByZXNldCBhIHJlYWQtb25seSByZWNv
cmRpbmcuIik7CiAKQEAgLTEyNiwxNyArMTEzLDE3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJl
Y29yZGluZy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xp
c3RlbmVycyhXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRpbmcuRXZlbnQuUmVzZXQpOwogICAg
ICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlRpbWVs
aW5lUmVjb3JkaW5nLkV2ZW50LlRpbWVzVXBkYXRlZCk7CiAgICAgICAgIH0KLSAgICB9LAorICAg
IH0KIAotICAgIHNvdXJjZUNvZGVUaW1lbGluZXNGb3JTb3VyY2VDb2RlOiBmdW5jdGlvbihzb3Vy
Y2VDb2RlKQorICAgIHNvdXJjZUNvZGVUaW1lbGluZXNGb3JTb3VyY2VDb2RlKHNvdXJjZUNvZGUp
CiAgICAgewogICAgICAgICB2YXIgdGltZWxpbmVzID0gdGhpcy5fc291cmNlQ29kZVRpbWVsaW5l
c01hcC5nZXQoc291cmNlQ29kZSk7CiAgICAgICAgIGlmICghdGltZWxpbmVzKQogICAgICAgICAg
ICAgcmV0dXJuIFtdOwogICAgICAgICByZXR1cm4gWy4uLnRpbWVsaW5lcy52YWx1ZXMoKV07Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBhZGRUaW1lbGluZTogZnVuY3Rpb24odGltZWxpbmUpCisgICAg
YWRkVGltZWxpbmUodGltZWxpbmUpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCh0aW1l
bGluZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5UaW1lbGluZSwgdGltZWxpbmUpOwogICAgICAg
ICBjb25zb2xlLmFzc2VydCghdGhpcy5fdGltZWxpbmVzLmhhcyh0aW1lbGluZSksIHRoaXMuX3Rp
bWVsaW5lcywgdGltZWxpbmUpOwpAQCAtMTQ1LDkgKzEzMiw5IEBAIFdlYkluc3BlY3Rvci5UaW1l
bGluZVJlY29yZGluZy5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdGltZWxpbmUuYWRkRXZlbnRM
aXN0ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxpbmUuRXZlbnQuVGltZXNVcGRhdGVkLCB0aGlzLl90
aW1lbGluZVRpbWVzVXBkYXRlZCwgdGhpcyk7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRv
TGlzdGVuZXJzKFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZGluZy5FdmVudC5UaW1lbGluZUFk
ZGVkLCB7dGltZWxpbmV9KTsKLSAgICB9LAorICAgIH0KIAotICAgIHJlbW92ZVRpbWVsaW5lOiBm
dW5jdGlvbih0aW1lbGluZSkKKyAgICByZW1vdmVUaW1lbGluZSh0aW1lbGluZSkKICAgICB7CiAg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRpbWVsaW5lIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlRp
bWVsaW5lLCB0aW1lbGluZSk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3RpbWVsaW5l
cy5oYXModGltZWxpbmUudHlwZSksIHRoaXMuX3RpbWVsaW5lcywgdGltZWxpbmUpOwpAQCAtMTU3
LDE0ICsxNDQsMTQgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nLnByb3RvdHlwZSA9
IHsKIAogICAgICAgICB0aW1lbGluZS5yZW1vdmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5U
aW1lbGluZS5FdmVudC5UaW1lc1VwZGF0ZWQsIHRoaXMuX3RpbWVsaW5lVGltZXNVcGRhdGVkLCB0
aGlzKTsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9y
LlRpbWVsaW5lUmVjb3JkaW5nLkV2ZW50LlRpbWVsaW5lUmVtb3ZlZCwge3RpbWVsaW5lfSk7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBhZGRFdmVudE1hcmtlcjogZnVuY3Rpb24oZXZlbnRNYXJrZXIp
CisgICAgYWRkRXZlbnRNYXJrZXIoZXZlbnRNYXJrZXIpCiAgICAgewogICAgICAgICB0aGlzLl9l
dmVudE1hcmtlcnMucHVzaChldmVudE1hcmtlcik7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBhZGRS
ZWNvcmQ6IGZ1bmN0aW9uKHJlY29yZCkKKyAgICBhZGRSZWNvcmQocmVjb3JkKQogICAgIHsKICAg
ICAgICAgdmFyIGhhc0NvcnJlc3BvbmRpbmdUaW1lbGluZSA9IHRoaXMuX3RpbWVsaW5lcy5oYXMo
cmVjb3JkLnR5cGUpOwogICAgICAgICBjb25zb2xlLmFzc2VydChoYXNDb3JyZXNwb25kaW5nVGlt
ZWxpbmUsIHJlY29yZCwgdGhpcy5fdGltZWxpbmVzKTsKQEAgLTIwMSw5ICsxODgsOSBAQCBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVSZWNvcmRpbmcucHJvdG90eXBlID0gewogCiAgICAgICAgIGlmIChu
ZXdUaW1lbGluZSkKICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdl
Ykluc3BlY3Rvci5UaW1lbGluZVJlY29yZGluZy5FdmVudC5Tb3VyY2VDb2RlVGltZWxpbmVBZGRl
ZCwge3NvdXJjZUNvZGVUaW1lbGluZX0pOwotICAgIH0sCisgICAgfQogCi0gICAgY29tcHV0ZUVs
YXBzZWRUaW1lOiBmdW5jdGlvbih0aW1lc3RhbXApCisgICAgY29tcHV0ZUVsYXBzZWRUaW1lKHRp
bWVzdGFtcCkKICAgICB7CiAgICAgICAgIGlmICghdGltZXN0YW1wIHx8IGlzTmFOKHRpbWVzdGFt
cCkpCiAgICAgICAgICAgICByZXR1cm4gTmFOOwpAQCAtMjE5LDExICsyMDYsMTEgQEAgV2ViSW5z
cGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVy
biAodGltZXN0YW1wIC0gdGhpcy5fbGVnYWN5Rmlyc3RSZWNvcmRlZFRpbWVzdGFtcCkgLyAxMDAw
LjA7CiAKICAgICAgICAgcmV0dXJuIHRpbWVzdGFtcDsKLSAgICB9LAorICAgIH0KIAogICAgIC8v
IFByaXZhdGUKIAotICAgIF9rZXlGb3JSZWNvcmQ6IGZ1bmN0aW9uKHJlY29yZCkKKyAgICBfa2V5
Rm9yUmVjb3JkKHJlY29yZCkKICAgICB7CiAgICAgICAgIHZhciBrZXkgPSByZWNvcmQudHlwZTsK
ICAgICAgICAgaWYgKHJlY29yZCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGlu
ZVJlY29yZCB8fCByZWNvcmQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuTGF5b3V0VGltZWxpbmVS
ZWNvcmQpCkBAIC0yMzMsOSArMjIwLDkgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5n
LnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKHJlY29yZC5zb3VyY2VDb2RlTG9jYXRpb24pCiAg
ICAgICAgICAgICBrZXkgKz0gIjoiICsgcmVjb3JkLnNvdXJjZUNvZGVMb2NhdGlvbi5saW5lTnVt
YmVyICsgIjoiICsgcmVjb3JkLnNvdXJjZUNvZGVMb2NhdGlvbi5jb2x1bW5OdW1iZXI7CiAgICAg
ICAgIHJldHVybiBrZXk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdGltZWxpbmVUaW1lc1VwZGF0
ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF90aW1lbGluZVRpbWVzVXBkYXRlZChldmVudCkKICAg
ICB7CiAgICAgICAgIHZhciB0aW1lbGluZSA9IGV2ZW50LnRhcmdldDsKICAgICAgICAgdmFyIGNo
YW5nZWQgPSBmYWxzZTsKQEAgLTI1NCwzICsyNDEsMTQgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5l
UmVjb3JkaW5nLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRv
TGlzdGVuZXJzKFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZGluZy5FdmVudC5UaW1lc1VwZGF0
ZWQpOwogICAgIH0KIH07CisKK1dlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZGluZy5FdmVudCA9
IHsKKyAgICBSZXNldDogInRpbWVsaW5lLXJlY29yZGluZy1yZXNldCIsCisgICAgVW5sb2FkZWQ6
ICJ0aW1lbGluZS1yZWNvcmRpbmctdW5sb2FkZWQiLAorICAgIFNvdXJjZUNvZGVUaW1lbGluZUFk
ZGVkOiAidGltZWxpbmUtcmVjb3JkaW5nLXNvdXJjZS1jb2RlLXRpbWVsaW5lLWFkZGVkIiwKKyAg
ICBUaW1lbGluZUFkZGVkOiAidGltZWxpbmUtcmVjb3JkaW5nLXRpbWVsaW5lLWFkZGVkIiwKKyAg
ICBUaW1lbGluZVJlbW92ZWQ6ICJ0aW1lbGluZS1yZWNvcmRpbmctdGltZWxpbmUtcmVtb3ZlZCIs
CisgICAgVGltZXNVcGRhdGVkOiAidGltZWxpbmUtcmVjb3JkaW5nLXRpbWVzLXVwZGF0ZWQiCit9
OworCitXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRpbmcuVGltZXN0YW1wVGhyZXNob2xkRm9y
TGVnYWN5UmVjb3JkQ29udmVyc2lvbiA9IDI4ODAwMDAwOyAvLyBEYXRlLnBhcnNlKCJKYW4gMSwg
MTk3MCIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9N
b2RlbHMvVHlwZVNldC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01v
ZGVscy9UeXBlU2V0LmpzCmluZGV4IDU4M2IzMzguLjI2NjZlOWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9UeXBlU2V0LmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9UeXBlU2V0LmpzCkBAIC0y
NCw1OCArMjQsNDkgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
Ci1XZWJJbnNwZWN0b3IuVHlwZVNldCA9IGZ1bmN0aW9uKHJ1bnRpbWVUeXBlRGVzY3JpcHRpb25Q
YXlsb2FkKQorV2ViSW5zcGVjdG9yLlR5cGVTZXQgPSBjbGFzcyBUeXBlU2V0IGV4dGVuZHMgV2Vi
SW5zcGVjdG9yLk9iamVjdAogewotICAgIHRoaXMuX3R5cGVzID0gcnVudGltZVR5cGVEZXNjcmlw
dGlvblBheWxvYWQ7Ci0KLSAgICB2YXIgdHlwZVNldCA9IHRoaXMuX3R5cGVzLnR5cGVTZXQ7Ci0g
ICAgdmFyIGJpdFN0cmluZyA9IDB4MDsKLSAgICBpZiAodHlwZVNldC5pc0Z1bmN0aW9uKQotICAg
ICAgICBiaXRTdHJpbmcgfD0gV2ViSW5zcGVjdG9yLlR5cGVTZXQuVHlwZUJpdC5GdW5jdGlvbjsK
LSAgICBpZiAodHlwZVNldC5pc1VuZGVmaW5lZCkKLSAgICAgICAgYml0U3RyaW5nIHw9IFdlYklu
c3BlY3Rvci5UeXBlU2V0LlR5cGVCaXQuVW5kZWZpbmVkOwotICAgIGlmICh0eXBlU2V0LmlzTnVs
bCkKLSAgICAgICAgYml0U3RyaW5nIHw9IFdlYkluc3BlY3Rvci5UeXBlU2V0LlR5cGVCaXQuTnVs
bDsKLSAgICBpZiAodHlwZVNldC5pc0Jvb2xlYW4pCi0gICAgICAgIGJpdFN0cmluZyB8PSBXZWJJ
bnNwZWN0b3IuVHlwZVNldC5UeXBlQml0LkJvb2xlYW47Ci0gICAgaWYgKHR5cGVTZXQuaXNJbnRl
Z2VyKQotICAgICAgICBiaXRTdHJpbmcgfD0gV2ViSW5zcGVjdG9yLlR5cGVTZXQuVHlwZUJpdC5J
bnRlZ2VyOwotICAgIGlmICh0eXBlU2V0LmlzTnVtYmVyKQotICAgICAgICBiaXRTdHJpbmcgfD0g
V2ViSW5zcGVjdG9yLlR5cGVTZXQuVHlwZUJpdC5OdW1iZXI7Ci0gICAgaWYgKHR5cGVTZXQuaXNT
dHJpbmcpCi0gICAgICAgIGJpdFN0cmluZyB8PSBXZWJJbnNwZWN0b3IuVHlwZVNldC5UeXBlQml0
LlN0cmluZzsKLSAgICBpZiAodHlwZVNldC5pc09iamVjdCkKLSAgICAgICAgYml0U3RyaW5nIHw9
IFdlYkluc3BlY3Rvci5UeXBlU2V0LlR5cGVCaXQuT2JqZWN0OwotCi0gICAgY29uc29sZS5hc3Nl
cnQoYml0U3RyaW5nKTsKLSAgICB0aGlzLl9iaXRTdHJpbmcgPSBiaXRTdHJpbmc7Ci0KLSAgICB0
aGlzLl9wcmltaXRpdmVUeXBlTmFtZXMgPSBudWxsOwotfTsKLQotV2ViSW5zcGVjdG9yLlR5cGVT
ZXQuZnJvbVBheWxvYWQgPSBmdW5jdGlvbihwYXlsb2FkKQotewotICAgIHJldHVybiBuZXcgV2Vi
SW5zcGVjdG9yLlR5cGVTZXQocGF5bG9hZCk7Ci19OwotCi1XZWJJbnNwZWN0b3IuVHlwZVNldC5U
eXBlQml0ID0gewotICAgICJGdW5jdGlvbiIgICAgOiAgMHgxLAotICAgICJVbmRlZmluZWQiICAg
OiAgMHgyLAotICAgICJOdWxsIiAgICAgICAgOiAgMHg0LAotICAgICJCb29sZWFuIiAgICAgOiAg
MHg4LAotICAgICJJbnRlZ2VyIiAgICAgOiAgMHgxMCwKLSAgICAiTnVtYmVyIiAgICAgIDogIDB4
MjAsCi0gICAgIlN0cmluZyIgICAgICA6ICAweDQwLAotICAgICJPYmplY3QiICAgICAgOiAgMHg4
MAotfTsKLQotV2ViSW5zcGVjdG9yLlR5cGVTZXQuTnVsbE9yVW5kZWZpbmVkVHlwZUJpdHMgPSBX
ZWJJbnNwZWN0b3IuVHlwZVNldC5UeXBlQml0Lk51bGwgfCBXZWJJbnNwZWN0b3IuVHlwZVNldC5U
eXBlQml0LlVuZGVmaW5lZDsKLQotV2ViSW5zcGVjdG9yLlR5cGVTZXQucHJvdG90eXBlID0gewot
ICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuVHlwZVNldCwKLSAgICBfX3Byb3RvX186IFdl
Ykluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlLAotCi0gICAgaXNDb250YWluZWRJbjogZnVuY3Rp
b24odGVzdCkKKyAgICBjb25zdHJ1Y3RvcihydW50aW1lVHlwZURlc2NyaXB0aW9uUGF5bG9hZCkK
KyAgICB7CisgICAgICAgIHN1cGVyKCk7CisKKyAgICAgICAgdGhpcy5fdHlwZXMgPSBydW50aW1l
VHlwZURlc2NyaXB0aW9uUGF5bG9hZDsKKworICAgICAgICB2YXIgdHlwZVNldCA9IHRoaXMuX3R5
cGVzLnR5cGVTZXQ7CisgICAgICAgIHZhciBiaXRTdHJpbmcgPSAweDA7CisgICAgICAgIGlmICh0
eXBlU2V0LmlzRnVuY3Rpb24pCisgICAgICAgICAgICBiaXRTdHJpbmcgfD0gV2ViSW5zcGVjdG9y
LlR5cGVTZXQuVHlwZUJpdC5GdW5jdGlvbjsKKyAgICAgICAgaWYgKHR5cGVTZXQuaXNVbmRlZmlu
ZWQpCisgICAgICAgICAgICBiaXRTdHJpbmcgfD0gV2ViSW5zcGVjdG9yLlR5cGVTZXQuVHlwZUJp
dC5VbmRlZmluZWQ7CisgICAgICAgIGlmICh0eXBlU2V0LmlzTnVsbCkKKyAgICAgICAgICAgIGJp
dFN0cmluZyB8PSBXZWJJbnNwZWN0b3IuVHlwZVNldC5UeXBlQml0Lk51bGw7CisgICAgICAgIGlm
ICh0eXBlU2V0LmlzQm9vbGVhbikKKyAgICAgICAgICAgIGJpdFN0cmluZyB8PSBXZWJJbnNwZWN0
b3IuVHlwZVNldC5UeXBlQml0LkJvb2xlYW47CisgICAgICAgIGlmICh0eXBlU2V0LmlzSW50ZWdl
cikKKyAgICAgICAgICAgIGJpdFN0cmluZyB8PSBXZWJJbnNwZWN0b3IuVHlwZVNldC5UeXBlQml0
LkludGVnZXI7CisgICAgICAgIGlmICh0eXBlU2V0LmlzTnVtYmVyKQorICAgICAgICAgICAgYml0
U3RyaW5nIHw9IFdlYkluc3BlY3Rvci5UeXBlU2V0LlR5cGVCaXQuTnVtYmVyOworICAgICAgICBp
ZiAodHlwZVNldC5pc1N0cmluZykKKyAgICAgICAgICAgIGJpdFN0cmluZyB8PSBXZWJJbnNwZWN0
b3IuVHlwZVNldC5UeXBlQml0LlN0cmluZzsKKyAgICAgICAgaWYgKHR5cGVTZXQuaXNPYmplY3Qp
CisgICAgICAgICAgICBiaXRTdHJpbmcgfD0gV2ViSW5zcGVjdG9yLlR5cGVTZXQuVHlwZUJpdC5P
YmplY3Q7CisKKyAgICAgICAgY29uc29sZS5hc3NlcnQoYml0U3RyaW5nKTsKKyAgICAgICAgdGhp
cy5fYml0U3RyaW5nID0gYml0U3RyaW5nOworCisgICAgICAgIHRoaXMuX3ByaW1pdGl2ZVR5cGVO
YW1lcyA9IG51bGw7CisgICAgfQorCisgICAgLy8gU3RhdGljCisKKyAgICBzdGF0aWMgZnJvbVBh
eWxvYWQocGF5bG9hZCkKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlR5
cGVTZXQocGF5bG9hZCk7CisgICAgfQorCisgICAgLy8gUHVibGljCisKKyAgICBpc0NvbnRhaW5l
ZEluKHRlc3QpCiAgICAgewogICAgICAgICAvLyBUaGlzIGZ1bmN0aW9uIGNoZWNrcyBpZiB0eXBl
cyBpbiBiaXRTdHJpbmcgYXJlIGNvbnRhaW5lZCBpbiB0aGUgdHlwZXMgZGVzY3JpYmVkIGJ5IHRo
ZSAndGVzdCcgYml0c3RyaW5nLiAoaS5lIHdlIGhhdmVuJ3Qgc2VlbiBtb3JlIHR5cGVzIHRoYW4g
J3Rlc3QnKS4KICAgICAgICAgLy8gV2UgaGF2ZSBzZWVuIGZld2VyIG9yIGVxdWFsIG51bWJlciBv
ZiB0eXBlcyBhcyAndGVzdCcgaWYgQU5EaW5nIGJpdFN0cmluZyB3aXRoIHRlc3QgZG9lc24ndCB6
ZXJvIG91dCBhbnkgb2Ygb3VyIGJpdHMuCkBAIC05Myw3ICs4NCw3IEBAIFdlYkluc3BlY3Rvci5U
eXBlU2V0LnByb3RvdHlwZSA9IHsKICAgICAgICAgLy8gMGIwMDEwICE9IGJpdFN0cmluZwogCiAg
ICAgICAgIHJldHVybiB0aGlzLl9iaXRTdHJpbmcgJiYgKHRoaXMuX2JpdFN0cmluZyAmIHRlc3Qp
ID09PSB0aGlzLl9iaXRTdHJpbmc7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgcHJpbWl0aXZl
VHlwZU5hbWVzKCkKICAgICB7CkBAIC0xMjIsMyArMTEzLDE2IEBAIFdlYkluc3BlY3Rvci5UeXBl
U2V0LnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3ByaW1pdGl2ZVR5cGVOYW1l
czsKICAgICB9CiB9OworCitXZWJJbnNwZWN0b3IuVHlwZVNldC5UeXBlQml0ID0geworICAgICJG
dW5jdGlvbiIgICAgOiAgMHgxLAorICAgICJVbmRlZmluZWQiICAgOiAgMHgyLAorICAgICJOdWxs
IiAgICAgICAgOiAgMHg0LAorICAgICJCb29sZWFuIiAgICAgOiAgMHg4LAorICAgICJJbnRlZ2Vy
IiAgICAgOiAgMHgxMCwKKyAgICAiTnVtYmVyIiAgICAgIDogIDB4MjAsCisgICAgIlN0cmluZyIg
ICAgICA6ICAweDQwLAorICAgICJPYmplY3QiICAgICAgOiAgMHg4MAorfTsKKworV2ViSW5zcGVj
dG9yLlR5cGVTZXQuTnVsbE9yVW5kZWZpbmVkVHlwZUJpdHMgPSBXZWJJbnNwZWN0b3IuVHlwZVNl
dC5UeXBlQml0Lk51bGwgfCBXZWJJbnNwZWN0b3IuVHlwZVNldC5UeXBlQml0LlVuZGVmaW5lZDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9V
bml0QmV6aWVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxz
L1VuaXRCZXppZXIuanMKaW5kZXggNzk5NzQyYi4uNjU2NTUzNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1VuaXRCZXppZXIuanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1VuaXRCZXppZXIuanMK
QEAgLTIzLDUwICsyMyw0NyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKLVdlYkluc3BlY3Rvci5Vbml0QmV6aWVyID0gZnVuY3Rpb24oeDEsIHkxLCB4MiwgeTIp
CitXZWJJbnNwZWN0b3IuVW5pdEJlemllciA9IGNsYXNzIFVuaXRCZXppZXIKIHsKLSAgICBXZWJJ
bnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CisgICAgY29uc3RydWN0b3IoeDEsIHkxLCB4Miwg
eTIpCisgICAgeworICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIHBvbHlub21pYWwgY29lZmZpY2ll
bnRzLCBpbXBsaWNpdCBmaXJzdCBhbmQgbGFzdCBjb250cm9sIHBvaW50cyBhcmUgKDAsMCkgYW5k
ICgxLDEpLgorICAgICAgICB0aGlzLl9jeCA9IDMuMCAqIHgxOworICAgICAgICB0aGlzLl9ieCA9
IDMuMCAqICh4MiAtIHgxKSAtIHRoaXMuX2N4OworICAgICAgICB0aGlzLl9heCA9IDEuMCAtIHRo
aXMuX2N4IC0gdGhpcy5fYng7CiAKLSAgICAvLyBDYWxjdWxhdGUgdGhlIHBvbHlub21pYWwgY29l
ZmZpY2llbnRzLCBpbXBsaWNpdCBmaXJzdCBhbmQgbGFzdCBjb250cm9sIHBvaW50cyBhcmUgKDAs
MCkgYW5kICgxLDEpLgotICAgIHRoaXMuX2N4ID0gMy4wICogeDE7Ci0gICAgdGhpcy5fYnggPSAz
LjAgKiAoeDIgLSB4MSkgLSB0aGlzLl9jeDsKLSAgICB0aGlzLl9heCA9IDEuMCAtIHRoaXMuX2N4
IC0gdGhpcy5fYng7Ci0KLSAgICB0aGlzLl9jeSA9IDMuMCAqIHkxOwotICAgIHRoaXMuX2J5ID0g
My4wICogKHkyIC0geTEpIC0gdGhpcy5fY3k7Ci0gICAgdGhpcy5fYXkgPSAxLjAgLSB0aGlzLl9j
eSAtIHRoaXMuX2J5OwotfTsKLQotV2ViSW5zcGVjdG9yLlVuaXRCZXppZXIucHJvdG90eXBlID0g
ewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuVW5pdEJlemllciwKKyAgICAgICAgdGhp
cy5fY3kgPSAzLjAgKiB5MTsKKyAgICAgICAgdGhpcy5fYnkgPSAzLjAgKiAoeTIgLSB5MSkgLSB0
aGlzLl9jeTsKKyAgICAgICAgdGhpcy5fYXkgPSAxLjAgLSB0aGlzLl9jeSAtIHRoaXMuX2J5Owor
ICAgIH0KIAogICAgIC8vIFB1YmxpYwogCi0gICAgc29sdmU6IGZ1bmN0aW9uKHgsIGVwc2lsb24p
CisgICAgc29sdmUoeCwgZXBzaWxvbikKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zYW1w
bGVDdXJ2ZVkodGhpcy5fc29sdmVDdXJ2ZVgoeCwgZXBzaWxvbikpOwotICAgIH0sCisgICAgfQog
CiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX3NhbXBsZUN1cnZlWDogZnVuY3Rpb24odCkKKyAgICBf
c2FtcGxlQ3VydmVYKHQpCiAgICAgewogICAgICAgICAvLyBgYXggdF4zICsgYnggdF4yICsgY3gg
dCcgZXhwYW5kZWQgdXNpbmcgSG9ybmVyJ3MgcnVsZS4KICAgICAgICAgcmV0dXJuICgodGhpcy5f
YXggKiB0ICsgdGhpcy5fYngpICogdCArIHRoaXMuX2N4KSAqIHQ7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBfc2FtcGxlQ3VydmVZOiBmdW5jdGlvbih0KQorICAgIF9zYW1wbGVDdXJ2ZVkodCkKICAg
ICB7CiAgICAgICAgIHJldHVybiAoKHRoaXMuX2F5ICogdCArIHRoaXMuX2J5KSAqIHQgKyB0aGlz
Ll9jeSkgKiB0OwotICAgIH0sCisgICAgfQogCi0gICAgX3NhbXBsZUN1cnZlRGVyaXZhdGl2ZVg6
IGZ1bmN0aW9uKHQpCisgICAgX3NhbXBsZUN1cnZlRGVyaXZhdGl2ZVgodCkKICAgICB7CiAgICAg
ICAgIHJldHVybiAoMy4wICogdGhpcy5fYXggKiB0ICsgMi4wICogdGhpcy5fYngpICogdCArIHRo
aXMuX2N4OwotICAgIH0sCisgICAgfQogCiAgICAgLy8gR2l2ZW4gYW4geCB2YWx1ZSwgZmluZCBh
IHBhcmFtZXRyaWMgdmFsdWUgaXQgY2FtZSBmcm9tLgotICAgIF9zb2x2ZUN1cnZlWDogZnVuY3Rp
b24oeCwgZXBzaWxvbikKKyAgICBfc29sdmVDdXJ2ZVgoeCwgZXBzaWxvbikKICAgICB7CiAgICAg
ICAgIHZhciB0MCwgdDEsIHQyLCB4MiwgZDIsIGk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0FwcGxpY2F0aW9uQ2FjaGVPYnNlcnZl
ci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0FwcGxp
Y2F0aW9uQ2FjaGVPYnNlcnZlci5qcwppbmRleCBlNDhkZjhiLi5lZGUwYjcwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9BcHBsaWNhdGlv
bkNhY2hlT2JzZXJ2ZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvUHJvdG9jb2wvQXBwbGljYXRpb25DYWNoZU9ic2VydmVyLmpzCkBAIC0yNSw3ICsyNSw4IEBA
CiAKIFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlT2JzZXJ2ZXIgPSBmdW5jdGlvbigpCiB7
Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIC8vIEZJWE1FOiBDb252
ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBl
cigpLgorICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKIH07CiAKIFdlYklu
c3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlT2JzZXJ2ZXIucHJvdG90eXBlID0gewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvQ1NTT2JzZXJ2
ZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9DU1NP
YnNlcnZlci5qcwppbmRleCAzOTFmODllLi5jMDk0ZTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9DU1NPYnNlcnZlci5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9DU1NPYnNlcnZlci5q
cwpAQCAtMjUsNyArMjUsOCBAQAogCiBXZWJJbnNwZWN0b3IuQ1NTT2JzZXJ2ZXIgPSBmdW5jdGlv
bigpCiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIC8vIEZJWE1F
OiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2Fs
bCBzdXBlcigpLgorICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKIH07CiAK
IFdlYkluc3BlY3Rvci5DU1NPYnNlcnZlci5wcm90b3R5cGUgPSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9Db25zb2xlT2JzZXJ2ZXIu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9Db25zb2xl
T2JzZXJ2ZXIuanMKaW5kZXggNzY0ZTc5OS4uOTc1OTUzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvQ29uc29sZU9ic2VydmVyLmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0NvbnNvbGVP
YnNlcnZlci5qcwpAQCAtMjUsNyArMjUsOCBAQAogCiBXZWJJbnNwZWN0b3IuQ29uc29sZU9ic2Vy
dmVyID0gZnVuY3Rpb24oKQogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsK
KyAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJj
bGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KKyAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwo
dGhpcyk7CiB9OwogCiBXZWJJbnNwZWN0b3IuQ29uc29sZU9ic2VydmVyLnByb3RvdHlwZSA9IHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29s
L0RPTU9ic2VydmVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJv
dG9jb2wvRE9NT2JzZXJ2ZXIuanMKaW5kZXggOWI5ZThlOC4uNzcwMDMxZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvRE9NT2JzZXJ2ZXIu
anMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvRE9N
T2JzZXJ2ZXIuanMKQEAgLTI1LDcgKzI1LDggQEAKIAogV2ViSW5zcGVjdG9yLkRPTU9ic2VydmVy
ID0gZnVuY3Rpb24oKQogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAg
ICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFz
cywgYW5kIGNhbGwgc3VwZXIoKS4KKyAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhp
cyk7CiB9OwogCiBXZWJJbnNwZWN0b3IuRE9NT2JzZXJ2ZXIucHJvdG90eXBlID0gewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvRE9NU3Rv
cmFnZU9ic2VydmVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJv
dG9jb2wvRE9NU3RvcmFnZU9ic2VydmVyLmpzCmluZGV4IGQyYzFlMGMuLmRmZTQ1ZDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0RPTVN0
b3JhZ2VPYnNlcnZlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Qcm90b2NvbC9ET01TdG9yYWdlT2JzZXJ2ZXIuanMKQEAgLTI2LDcgKzI2LDggQEAKIAogV2Vi
SW5zcGVjdG9yLkRPTVN0b3JhZ2VPYnNlcnZlciA9IGZ1bmN0aW9uKCkKIHsKLSAgICBXZWJJbnNw
ZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CisgICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBh
IFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCkuCisgICAgLy8g
V2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwogfTsKIAogV2ViSW5zcGVjdG9yLkRPTVN0
b3JhZ2VPYnNlcnZlci5wcm90b3R5cGUgPSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9EYXRhYmFzZU9ic2VydmVyLmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvRGF0YWJhc2VPYnNlcnZlci5q
cwppbmRleCBiYzEzNGFlLi42M2RiZDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9EYXRhYmFzZU9ic2VydmVyLmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0RhdGFiYXNlT2JzZXJ2ZXIu
anMKQEAgLTI1LDcgKzI1LDggQEAKIAogV2ViSW5zcGVjdG9yLkRhdGFiYXNlT2JzZXJ2ZXIgPSBm
dW5jdGlvbigpCiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIC8v
IEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBh
bmQgY2FsbCBzdXBlcigpLgorICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsK
IH07CiAKIFdlYkluc3BlY3Rvci5EYXRhYmFzZU9ic2VydmVyLl9jYWxsYmFja3MgPSB7fTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0Rl
YnVnZ2VyT2JzZXJ2ZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Q
cm90b2NvbC9EZWJ1Z2dlck9ic2VydmVyLmpzCmluZGV4IDUyYWFkYzguLjA2OWU5MGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0RlYnVn
Z2VyT2JzZXJ2ZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
UHJvdG9jb2wvRGVidWdnZXJPYnNlcnZlci5qcwpAQCAtMjUsNyArMjUsOCBAQAogCiBXZWJJbnNw
ZWN0b3IuRGVidWdnZXJPYnNlcnZlciA9IGZ1bmN0aW9uKCkKIHsKLSAgICBXZWJJbnNwZWN0b3Iu
T2JqZWN0LmNhbGwodGhpcyk7CisgICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYklu
c3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCkuCisgICAgLy8gV2ViSW5z
cGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwogfTsKIAogV2ViSW5zcGVjdG9yLkRlYnVnZ2VyT2Jz
ZXJ2ZXIucHJvdG90eXBlID0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yT2JzZXJ2ZXIuanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JPYnNlcnZlci5qcwppbmRl
eCA3ZDU0YWY0Li44NDkxNzU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JPYnNlcnZlci5qcworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JPYnNlcnZlci5qcwpA
QCAtMjUsNyArMjUsOCBAQAogCiBXZWJJbnNwZWN0b3IuSW5zcGVjdG9yT2JzZXJ2ZXIgPSBmdW5j
dGlvbigpCiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIC8vIEZJ
WE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQg
Y2FsbCBzdXBlcigpLgorICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKIH07
CiAKIFdlYkluc3BlY3Rvci5JbnNwZWN0b3JPYnNlcnZlci5wcm90b3R5cGUgPSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9MYXllclRy
ZWVPYnNlcnZlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3Rv
Y29sL0xheWVyVHJlZU9ic2VydmVyLmpzCmluZGV4IGRkYmI5ZDMuLjU1Y2I5MGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0xheWVyVHJl
ZU9ic2VydmVyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1By
b3RvY29sL0xheWVyVHJlZU9ic2VydmVyLmpzCkBAIC0yNSw3ICsyNSw4IEBACiAKIFdlYkluc3Bl
Y3Rvci5MYXllclRyZWVPYnNlcnZlciA9IGZ1bmN0aW9uKCkKIHsKLSAgICBXZWJJbnNwZWN0b3Iu
T2JqZWN0LmNhbGwodGhpcyk7CisgICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYklu
c3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCkuCisgICAgLy8gV2ViSW5z
cGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwogfTsKIAogV2ViSW5zcGVjdG9yLkxheWVyVHJlZU9i
c2VydmVyLnByb3RvdHlwZSA9IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1Byb3RvY29sL05ldHdvcmtPYnNlcnZlci5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL05ldHdvcmtPYnNlcnZlci5qcwppbmRleCBh
YmQ2M2QyLi44ZGI5MGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Qcm90b2NvbC9OZXR3b3JrT2JzZXJ2ZXIuanMKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTmV0d29ya09ic2VydmVyLmpzCkBAIC0yNSw3
ICsyNSw4IEBACiAKIFdlYkluc3BlY3Rvci5OZXR3b3JrT2JzZXJ2ZXIgPSBmdW5jdGlvbigpCiB7
Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIC8vIEZJWE1FOiBDb252
ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBl
cigpLgorICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKIH07CiAKIFdlYklu
c3BlY3Rvci5OZXR3b3JrT2JzZXJ2ZXIucHJvdG90eXBlID0gewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvUGFnZU9ic2VydmVyLmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvUGFnZU9ic2VydmVy
LmpzCmluZGV4IDFmMTM0YTEuLjdiYzVkMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1BhZ2VPYnNlcnZlci5qcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9QYWdlT2JzZXJ2ZXIuanMKQEAg
LTI1LDcgKzI1LDggQEAKIAogV2ViSW5zcGVjdG9yLlBhZ2VPYnNlcnZlciA9IGZ1bmN0aW9uKCkK
IHsKLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CisgICAgLy8gRklYTUU6IENv
bnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1
cGVyKCkuCisgICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwogfTsKIAogV2Vi
SW5zcGVjdG9yLlBhZ2VPYnNlcnZlci5wcm90b3R5cGUgPSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9SZXBsYXlPYnNlcnZlci5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1JlcGxheU9ic2Vy
dmVyLmpzCmluZGV4IDkxNjZkYjcuLjJjYWRjNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1JlcGxheU9ic2VydmVyLmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1JlcGxheU9ic2VydmVy
LmpzCkBAIC0zNyw3ICszNyw4IEBAIFdlYkluc3BlY3Rvci5SZXBsYXlQb3NpdGlvbi5mcm9tUHJv
dG9jb2wgPSBmdW5jdGlvbihwYXlsb2FkKQogCiBXZWJJbnNwZWN0b3IuUmVwbGF5T2JzZXJ2ZXIg
PSBmdW5jdGlvbigpCiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAg
IC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNz
LCBhbmQgY2FsbCBzdXBlcigpLgorICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlz
KTsKIH07CiAKIFdlYkluc3BlY3Rvci5SZXBsYXlPYnNlcnZlci5wcm90b3R5cGUgPSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9SdW50
aW1lT2JzZXJ2ZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90
b2NvbC9SdW50aW1lT2JzZXJ2ZXIuanMKaW5kZXggYThiYzcxZC4uOTY5ZWQyNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvUnVudGltZU9i
c2VydmVyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3Rv
Y29sL1J1bnRpbWVPYnNlcnZlci5qcwpAQCAtMjUsNyArMjUsOCBAQAogCiBXZWJJbnNwZWN0b3Iu
UnVudGltZU9ic2VydmVyID0gZnVuY3Rpb24oKQogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3Qu
Y2FsbCh0aGlzKTsKKyAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9y
Lk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KKyAgICAvLyBXZWJJbnNwZWN0b3Iu
T2JqZWN0LmNhbGwodGhpcyk7CiB9OwogCiBXZWJJbnNwZWN0b3IuUnVudGltZU9ic2VydmVyLnBy
b3RvdHlwZSA9IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1Byb3RvY29sL1RpbWVsaW5lT2JzZXJ2ZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Qcm90b2NvbC9UaW1lbGluZU9ic2VydmVyLmpzCmluZGV4IGJkODg3YzIu
Ljk1MTRiZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1Byb3RvY29sL1RpbWVsaW5lT2JzZXJ2ZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvVGltZWxpbmVPYnNlcnZlci5qcwpAQCAtMjUsNyArMjUs
OCBAQAogCiBXZWJJbnNwZWN0b3IuVGltZWxpbmVPYnNlcnZlciA9IGZ1bmN0aW9uKCkKIHsKLSAg
ICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CisgICAgLy8gRklYTUU6IENvbnZlcnQg
dGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCku
CisgICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwogfTsKIAogV2ViSW5zcGVj
dG9yLlRpbWVsaW5lT2JzZXJ2ZXIucHJvdG90eXBlID0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1sIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1sCmluZGV4IGJkZjk0ZWYuLjgyMjYzOTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QuaHRtbAorKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0Lmh0bWwKQEAgLTEwOSw2
ICsxMDksNyBAQAogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvUmVzb3VyY2VDb2xsZWN0aW9uLmpz
Ij48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL1Jlc291cmNlVGltZWxpbmVSZWNv
cmQuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvUmV2aXNpb24uanMiPjwv
c2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvUnVuTG9vcFRpbWVsaW5lUmVjb3JkLmpz
Ij48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL1Njb3BlQ2hhaW5Ob2RlLmpzIj48
L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL1NjcmlwdC5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9TY3JpcHRTeW50YXhUcmVlLmpzIj48L3NjcmlwdD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0JyZWFr
cG9pbnRBY3Rpb25WaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvQnJlYWtwb2ludEFjdGlvblZpZXcuanMKaW5kZXggMDc1ZGE4NS4uNGMxZGIzMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQnJlYWtw
b2ludEFjdGlvblZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvQnJlYWtwb2ludEFjdGlvblZpZXcuanMKQEAgLTI1LDcgKzI1LDggQEAKIAogV2Vi
SW5zcGVjdG9yLkJyZWFrcG9pbnRBY3Rpb25WaWV3ID0gZnVuY3Rpb24oYWN0aW9uLCBkZWxlZ2F0
ZSwgb21pdEZvY3VzKQogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAg
ICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFz
cywgYW5kIGNhbGwgc3VwZXIoKS4KKyAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhp
cyk7CiAKICAgICBjb25zb2xlLmFzc2VydChhY3Rpb24pOwogICAgIGNvbnNvbGUuYXNzZXJ0KGRl
bGVnYXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0NTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uanMKaW5k
ZXggNWJjYWM3Zi4uODRmZmNkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZWNsYXJhdGlv
blNlY3Rpb24uanMKQEAgLTI1LDcgKzI1LDggQEAKIAogV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVj
bGFyYXRpb25TZWN0aW9uID0gZnVuY3Rpb24oc3R5bGUpCiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9i
amVjdC5jYWxsKHRoaXMpOworICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNw
ZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgorICAgIC8vIFdlYkluc3Bl
Y3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKIAogICAgIGNvbnNvbGUuYXNzZXJ0KHN0eWxlKTsKICAg
ICB0aGlzLl9zdHlsZSA9IHN0eWxlIHx8IG51bGw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRv
ci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxl
RGVjbGFyYXRpb25UZXh0RWRpdG9yLmpzCmluZGV4IDNjNTVlYmYuLjIwMTRhMTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGVj
bGFyYXRpb25UZXh0RWRpdG9yLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yLmpzCkBAIC0yNSw3ICsy
NSw4IEBACiAKIFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvciA9IGZ1
bmN0aW9uKGRlbGVnYXRlLCBzdHlsZSwgZWxlbWVudCkKIHsKLSAgICBXZWJJbnNwZWN0b3IuT2Jq
ZWN0LmNhbGwodGhpcyk7CisgICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3Bl
Y3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCkuCisgICAgLy8gV2ViSW5zcGVj
dG9yLk9iamVjdC5jYWxsKHRoaXMpOwogCiAgICAgdGhpcy5fZWxlbWVudCA9IGVsZW1lbnQgfHwg
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xp
c3QuYWRkKFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5TdHlsZUNs
YXNzTmFtZSk7CkBAIC03MCw3ICs3MSw4IEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0
aW9uVGV4dEVkaXRvciA9IGZ1bmN0aW9uKGRlbGVnYXRlLCBzdHlsZSwgZWxlbWVudCkKICAgICB0
aGlzLnN0eWxlID0gc3R5bGU7CiB9OwogCi1XZWJJbnNwZWN0b3IuT2JqZWN0LmFkZENvbnN0cnVj
dG9yRnVuY3Rpb25zKFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvcik7
CisvLyBGSVhNRTogTW92ZSB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MgYW5kIHdl
IGNhbiByZW1vdmUgdGhpcy4KK1dlYkluc3BlY3Rvci5PYmplY3QuZGVwcmVjYXRlZEFkZENvbnN0
cnVjdG9yRnVuY3Rpb25zKFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRv
cik7CiAKIFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5TdHlsZUNs
YXNzTmFtZSA9ICJjc3Mtc3R5bGUtdGV4dC1lZGl0b3IiOwogV2ViSW5zcGVjdG9yLkNTU1N0eWxl
RGVjbGFyYXRpb25UZXh0RWRpdG9yLlJlYWRPbmx5U3R5bGVDbGFzc05hbWUgPSAicmVhZC1vbmx5
IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0NvbG9yUGlja2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvQ29sb3JQaWNrZXIuanMKaW5kZXggNjg4ZTY3MC4uM2QxMDc5MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29sb3JQaWNrZXIuanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29sb3JQaWNrZXIu
anMKQEAgLTI1LDcgKzI1LDggQEAKIAogV2ViSW5zcGVjdG9yLkNvbG9yUGlja2VyID0gZnVuY3Rp
b24oKQogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICAvLyBGSVhN
RTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNh
bGwgc3VwZXIoKS4KKyAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CiAKICAg
ICB0aGlzLl9jb2xvcldoZWVsID0gbmV3IFdlYkluc3BlY3Rvci5Db2xvcldoZWVsKCk7CiAgICAg
dGhpcy5fY29sb3JXaGVlbC5kZWxlZ2F0ZSA9IHRoaXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db2xvcldoZWVsLmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29sb3JXaGVlbC5qcwppbmRleCAzNjFj
MzUyLi4wYTU3YTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9Db2xvcldoZWVsLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0NvbG9yV2hlZWwuanMKQEAgLTI1LDcgKzI1LDggQEAKIAogV2ViSW5z
cGVjdG9yLkNvbG9yV2hlZWwgPSBmdW5jdGlvbigpCiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVj
dC5jYWxsKHRoaXMpOworICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0
b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgorICAgIC8vIFdlYkluc3BlY3Rv
ci5PYmplY3QuY2FsbCh0aGlzKTsKIAogICAgIHRoaXMuX3Jhd0NhbnZhcyA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImNhbnZhcyIpOwogICAgIHRoaXMuX3RpbnRlZENhbnZhcyA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29tcGxldGlvblN1Z2dlc3Rpb25zVmlldy5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbXBsZXRpb25TdWdnZXN0
aW9uc1ZpZXcuanMKaW5kZXggNzEwOTcxNi4uZTViZTM1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29tcGxldGlvblN1Z2dlc3Rpb25zVmll
dy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db21w
bGV0aW9uU3VnZ2VzdGlvbnNWaWV3LmpzCkBAIC0yNSw3ICsyNSw4IEBACiAKIFdlYkluc3BlY3Rv
ci5Db21wbGV0aW9uU3VnZ2VzdGlvbnNWaWV3ID0gZnVuY3Rpb24oZGVsZWdhdGUpCiB7Ci0gICAg
V2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRo
aXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgor
ICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKIAogICAgIHRoaXMuX2RlbGVn
YXRlID0gZGVsZWdhdGUgfHwgbnVsbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29uc29sZUNvbW1hbmQuanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db25zb2xlQ29tbWFuZC5qcwppbmRleCBhOTc3
YTQzLi5hOWM1M2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9Db25zb2xlQ29tbWFuZC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9Db25zb2xlQ29tbWFuZC5qcwpAQCAtMjksNyArMjksOCBAQAog
CiBXZWJJbnNwZWN0b3IuQ29uc29sZUNvbW1hbmQgPSBmdW5jdGlvbihjb21tYW5kKQogewotICAg
IFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICAvLyBGSVhNRTogQ29udmVydCB0
aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4K
KyAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CiAKICAgICB0aGlzLmNvbW1h
bmQgPSBjb21tYW5kOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0NvbnNvbGVHcm91cC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0NvbnNvbGVHcm91cC5qcwppbmRleCAwZDUyNTc4Li45MDU2ZjVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9D
b25zb2xlR3JvdXAuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvQ29uc29sZUdyb3VwLmpzCkBAIC0yOSw3ICsyOSw4IEBACiAKIFdlYkluc3BlY3Rvci5D
b25zb2xlR3JvdXAgPSBmdW5jdGlvbihwYXJlbnRHcm91cCkKIHsKLSAgICBXZWJJbnNwZWN0b3Iu
T2JqZWN0LmNhbGwodGhpcyk7CisgICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYklu
c3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCkuCisgICAgLy8gV2ViSW5z
cGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwogCiAgICAgdGhpcy5wYXJlbnRHcm91cCA9IHBhcmVu
dEdyb3VwOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0NvbnNvbGVQcm9tcHQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9Db25zb2xlUHJvbXB0LmpzCmluZGV4IDFjZmZjNDkuLmQ0OTdiMWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnNv
bGVQcm9tcHQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvQ29uc29sZVByb21wdC5qcwpAQCAtMjUsNyArMjUsOCBAQAogCiBXZWJJbnNwZWN0b3IuQ29u
c29sZVByb21wdCA9IGZ1bmN0aW9uKGRlbGVnYXRlLCBtaW1lVHlwZSwgZWxlbWVudCkKIHsKLSAg
ICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CisgICAgLy8gRklYTUU6IENvbnZlcnQg
dGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCku
CisgICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwogCiAgICAgbWltZVR5cGUg
PSBwYXJzZU1JTUVUeXBlKG1pbWVUeXBlKS50eXBlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db25zb2xlU2Vzc2lvbi5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnNvbGVTZXNzaW9uLmpzCmlu
ZGV4IGVmMWQ4ZDAuLmM2MTU5ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0NvbnNvbGVTZXNzaW9uLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnNvbGVTZXNzaW9uLmpzCkBAIC0yOCw3ICsy
OCw4IEBACiAKIFdlYkluc3BlY3Rvci5Db25zb2xlU2Vzc2lvbiA9IGZ1bmN0aW9uKCkKIHsKLSAg
ICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CisgICAgLy8gRklYTUU6IENvbnZlcnQg
dGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCku
CisgICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwogCiAgICAgdmFyIGVsZW1l
bnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICBlbGVtZW50LmNsYXNzTmFt
ZSA9ICJjb25zb2xlLXNlc3Npb24iOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudEJyb3dzZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50QnJvd3Nlci5qcwppbmRleCAzY2MzZDRk
Li5lYTYwNDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9Db250ZW50QnJvd3Nlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9Db250ZW50QnJvd3Nlci5qcwpAQCAtMjUsNyArMjUsOCBAQAogCiBX
ZWJJbnNwZWN0b3IuQ29udGVudEJyb3dzZXIgPSBmdW5jdGlvbihlbGVtZW50LCBkZWxlZ2F0ZSwg
ZGlzYWJsZUJhY2tGb3J3YXJkKQogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlz
KTsKKyAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBz
dWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KKyAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNh
bGwodGhpcyk7CiAKICAgICB0aGlzLl9lbGVtZW50ID0gZWxlbWVudCB8fCBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJkaXYiKTsKICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5z
cGVjdG9yLkNvbnRlbnRCcm93c2VyLlN0eWxlQ2xhc3NOYW1lKTsKQEAgLTg5LDcgKzkwLDggQEAg
V2ViSW5zcGVjdG9yLkNvbnRlbnRCcm93c2VyID0gZnVuY3Rpb24oZWxlbWVudCwgZGVsZWdhdGUs
IGRpc2FibGVCYWNrRm9yd2FyZCkKICAgICB0aGlzLl9jdXJyZW50Q29udGVudFZpZXdOYXZpZ2F0
aW9uSXRlbXMgPSBbXTsKIH07CiAKLVdlYkluc3BlY3Rvci5PYmplY3QuYWRkQ29uc3RydWN0b3JG
dW5jdGlvbnMoV2ViSW5zcGVjdG9yLkNvbnRlbnRCcm93c2VyKTsKKy8vIEZJWE1FOiBNb3ZlIHRv
IGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcyBhbmQgd2UgY2FuIHJlbW92ZSB0aGlzLgor
V2ViSW5zcGVjdG9yLk9iamVjdC5kZXByZWNhdGVkQWRkQ29uc3RydWN0b3JGdW5jdGlvbnMoV2Vi
SW5zcGVjdG9yLkNvbnRlbnRCcm93c2VyKTsKIAogV2ViSW5zcGVjdG9yLkNvbnRlbnRCcm93c2Vy
LlN0eWxlQ2xhc3NOYW1lID0gImNvbnRlbnQtYnJvd3NlciI7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3LmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudFZpZXcuanMKaW5k
ZXggMDk2ZjNiOC4uODJiYjg5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudFZpZXcuanMKQEAgLTk2LDcgKzk2LDggQEAg
V2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3ID0gZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmplY3QpCiAg
ICAgY29uc29sZS5hc3NlcnQodGhpcy5jb25zdHJ1Y3RvciAhPT0gV2ViSW5zcGVjdG9yLkNvbnRl
bnRWaWV3ICYmIHRoaXMgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcpOwogICAg
IGNvbnNvbGUuYXNzZXJ0KFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5pc1ZpZXdhYmxlKHJlcHJl
c2VudGVkT2JqZWN0KSk7CiAKLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7Cisg
ICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xh
c3MsIGFuZCBjYWxsIHN1cGVyKCkuCisgICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRo
aXMpOwogCiAgICAgdGhpcy5fcmVwcmVzZW50ZWRPYmplY3QgPSByZXByZXNlbnRlZE9iamVjdDsK
IApAQCAtMTA2LDcgKzEwNyw4IEBAIFdlYkluc3BlY3Rvci5Db250ZW50VmlldyA9IGZ1bmN0aW9u
KHJlcHJlc2VudGVkT2JqZWN0KQogICAgIHRoaXMuX3BhcmVudENvbnRhaW5lciA9IG51bGw7CiB9
OwogCi1XZWJJbnNwZWN0b3IuT2JqZWN0LmFkZENvbnN0cnVjdG9yRnVuY3Rpb25zKFdlYkluc3Bl
Y3Rvci5Db250ZW50Vmlldyk7CisvLyBGSVhNRTogTW92ZSB0byBhIFdlYkluc3BlY3Rvci5PYmpl
Y3Qgc3ViY2xhc3MgYW5kIHdlIGNhbiByZW1vdmUgdGhpcy4KK1dlYkluc3BlY3Rvci5PYmplY3Qu
ZGVwcmVjYXRlZEFkZENvbnN0cnVjdG9yRnVuY3Rpb25zKFdlYkluc3BlY3Rvci5Db250ZW50Vmll
dyk7CiAKIFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5pc1ZpZXdhYmxlID0gZnVuY3Rpb24ocmVw
cmVzZW50ZWRPYmplY3QpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9Db250ZW50Vmlld0NvbnRhaW5lci5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3Q29udGFpbmVyLmpzCmluZGV4
IGMwZGVkY2QuLmMxZWMxMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3Q29udGFpbmVyLmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3Q29udGFpbmVyLmpzCkBA
IC0yNSw3ICsyNSw4IEBACiAKIFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lciA9IGZ1
bmN0aW9uKGVsZW1lbnQpCiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwor
ICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNs
YXNzLCBhbmQgY2FsbCBzdXBlcigpLgorICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0
aGlzKTsKIAogICAgIHRoaXMuX2VsZW1lbnQgPSBlbGVtZW50IHx8IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImRpdiIpOwogICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0
b3IuQ29udGVudFZpZXdDb250YWluZXIuU3R5bGVDbGFzc05hbWUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZU91dGxpbmUuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlT3V0bGlu
ZS5qcwppbmRleCA1MWEzMmEyLi44ODVmNzg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlT3V0bGluZS5qcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlT3V0bGluZS5qcwpAQCAt
NjMsNyArNjMsOCBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZU91dGxpbmUgPSBmdW5jdGlvbihvbWl0
Um9vdERPTU5vZGUsIHNlbGVjdEVuYWJsZWQsIHNob3dJbkVsZQogICAgIFdlYkluc3BlY3Rvci5z
aG93U2hhZG93RE9NU2V0dGluZy5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5TZXR0aW5n
LkV2ZW50LkNoYW5nZWQsIHRoaXMuX3Nob3dTaGFkb3dET01TZXR0aW5nQ2hhbmdlZCwgdGhpcyk7
CiB9OwogCi1XZWJJbnNwZWN0b3IuT2JqZWN0LmFkZENvbnN0cnVjdG9yRnVuY3Rpb25zKFdlYklu
c3BlY3Rvci5ET01UcmVlT3V0bGluZSk7CisvLyBGSVhNRTogTW92ZSB0byBhIFdlYkluc3BlY3Rv
ci5PYmplY3Qgc3ViY2xhc3MgYW5kIHdlIGNhbiByZW1vdmUgdGhpcy4KK1dlYkluc3BlY3Rvci5P
YmplY3QuZGVwcmVjYXRlZEFkZENvbnN0cnVjdG9yRnVuY3Rpb25zKFdlYkluc3BlY3Rvci5ET01U
cmVlT3V0bGluZSk7CiAKIFdlYkluc3BlY3Rvci5ET01UcmVlT3V0bGluZS5TdHlsZUNsYXNzTmFt
ZSA9ICJkb20tdHJlZS1vdXRsaW5lIjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGFzaGJvYXJkQ29udGFpbmVyVmlldy5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Rhc2hib2FyZENvbnRhaW5lclZp
ZXcuanMKaW5kZXggYWVkOTYxOS4uOTM4MWY3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGFzaGJvYXJkQ29udGFpbmVyVmlldy5qcworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EYXNoYm9hcmRDb250
YWluZXJWaWV3LmpzCkBAIC0yNCw3ICsyNCw4IEBACiAgKi8KIAogV2ViSW5zcGVjdG9yLkRhc2hi
b2FyZENvbnRhaW5lclZpZXcgPSBmdW5jdGlvbigpIHsKLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0
LmNhbGwodGhpcyk7CisgICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rv
ci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCkuCisgICAgLy8gV2ViSW5zcGVjdG9y
Lk9iamVjdC5jYWxsKHRoaXMpOwogCiAgICAgdGhpcy5fdG9vbGJhckl0ZW0gPSBuZXcgV2ViSW5z
cGVjdG9yLk5hdmlnYXRpb25JdGVtKCJkYXNoYm9hcmQtY29udGFpbmVyIiwgImdyb3VwIiwgV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJBY3Rpdml0eSBWaWV3ZXIiKSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Rhc2hib2FyZFZpZXcuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EYXNoYm9hcmRWaWV3
LmpzCmluZGV4IDU1ZTRjY2QuLmI3MzQ1YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Rhc2hib2FyZFZpZXcuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGFzaGJvYXJkVmlldy5qcwpAQCAtNDUs
NyArNDUsOCBAQCBXZWJJbnNwZWN0b3IuRGFzaGJvYXJkVmlldyA9IGZ1bmN0aW9uKHJlcHJlc2Vu
dGVkT2JqZWN0LCBpZGVudGlmaWVyKQogICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuY29uc3RydWN0
b3IgIT09IFdlYkluc3BlY3Rvci5EYXNoYm9hcmRWaWV3ICYmIHRoaXMgaW5zdGFuY2VvZiBXZWJJ
bnNwZWN0b3IuRGFzaGJvYXJkVmlldyk7CiAgICAgY29uc29sZS5hc3NlcnQoaWRlbnRpZmllcik7
CiAKLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CisgICAgLy8gRklYTUU6IENv
bnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1
cGVyKCkuCisgICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwogCiAgICAgdGhp
cy5fcmVwcmVzZW50ZWRPYmplY3QgPSByZXByZXNlbnRlZE9iamVjdDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGV0YWlsc1NlY3Rpb24u
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EZXRhaWxzU2Vj
dGlvbi5qcwppbmRleCAwYjEyOTY1Li4zOTY1NTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EZXRhaWxzU2VjdGlvbi5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EZXRhaWxzU2VjdGlvbi5qcwpA
QCAtMjQsNyArMjQsOCBAQAogICovCiAKIFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbiA9IGZ1
bmN0aW9uKGlkZW50aWZpZXIsIHRpdGxlLCBncm91cHMsIG9wdGlvbnNFbGVtZW50LCBkZWZhdWx0
Q29sbGFwc2VkU2V0dGluZ1ZhbHVlKSB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRo
aXMpOworICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0
IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgorICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3Qu
Y2FsbCh0aGlzKTsKIAogICAgIGNvbnNvbGUuYXNzZXJ0KGlkZW50aWZpZXIpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EZXRhaWxzU2Vj
dGlvbkdyb3VwLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
RGV0YWlsc1NlY3Rpb25Hcm91cC5qcwppbmRleCA5MWQ0ZTdiLi42NzI5ZmFhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EZXRhaWxzU2VjdGlv
bkdyb3VwLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0RldGFpbHNTZWN0aW9uR3JvdXAuanMKQEAgLTI0LDcgKzI0LDggQEAKICAqLwogCiBXZWJJbnNw
ZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cCA9IGZ1bmN0aW9uKHJvd3MpIHsKLSAgICBXZWJJbnNw
ZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CisgICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBh
IFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCkuCisgICAgLy8g
V2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwogCiAgICAgdGhpcy5fZWxlbWVudCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NOYW1l
ID0gV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXAuU3R5bGVDbGFzc05hbWU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EZXRhaWxz
U2VjdGlvblJvdy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0RldGFpbHNTZWN0aW9uUm93LmpzCmluZGV4IDMwMGVlNDQuLmFjNWI4MDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RldGFpbHNTZWN0aW9u
Um93LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Rl
dGFpbHNTZWN0aW9uUm93LmpzCkBAIC0yNCw3ICsyNCw4IEBACiAgKi8KIAogV2ViSW5zcGVjdG9y
LkRldGFpbHNTZWN0aW9uUm93ID0gZnVuY3Rpb24oZW1wdHlNZXNzYWdlKSB7Ci0gICAgV2ViSW5z
cGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8g
YSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgorICAgIC8v
IFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKIAogICAgIHRoaXMuX2VsZW1lbnQgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTmFt
ZSA9IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdy5TdHlsZUNsYXNzTmFtZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0ZpbHRlckJh
ci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0ZpbHRlckJh
ci5qcwppbmRleCBlMjU0YjcwLi42MzNlY2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9GaWx0ZXJCYXIuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRmlsdGVyQmFyLmpzCkBAIC0yNCw3ICsyNCw4
IEBACiAgKi8KIAogV2ViSW5zcGVjdG9yLkZpbHRlckJhciA9IGZ1bmN0aW9uKGVsZW1lbnQpIHsK
LSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CisgICAgLy8gRklYTUU6IENvbnZl
cnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVy
KCkuCisgICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwogCiAgICAgdGhpcy5f
ZWxlbWVudCA9IGVsZW1lbnQgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAg
dGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5GaWx0ZXJCYXIuU3R5bGVD
bGFzc05hbWUpOwpAQCAtMzcsNyArMzgsOCBAQCBXZWJJbnNwZWN0b3IuRmlsdGVyQmFyID0gZnVu
Y3Rpb24oZWxlbWVudCkgewogICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5faW5w
dXRGaWVsZCk7CiB9OwogCi1XZWJJbnNwZWN0b3IuT2JqZWN0LmFkZENvbnN0cnVjdG9yRnVuY3Rp
b25zKFdlYkluc3BlY3Rvci5GaWx0ZXJCYXIpOworLy8gRklYTUU6IE1vdmUgdG8gYSBXZWJJbnNw
ZWN0b3IuT2JqZWN0IHN1YmNsYXNzIGFuZCB3ZSBjYW4gcmVtb3ZlIHRoaXMuCitXZWJJbnNwZWN0
b3IuT2JqZWN0LmRlcHJlY2F0ZWRBZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhXZWJJbnNwZWN0b3Iu
RmlsdGVyQmFyKTsKIAogV2ViSW5zcGVjdG9yLkZpbHRlckJhci5TdHlsZUNsYXNzTmFtZSA9ICJm
aWx0ZXItYmFyIjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvRmluZEJhbm5lci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0ZpbmRCYW5uZXIuanMKaW5kZXggZjhhZDg2Yi4uYmY5Y2VhZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRmluZEJhbm5l
ci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9GaW5k
QmFubmVyLmpzCkBAIC0yNCw3ICsyNCw4IEBACiAgKi8KIAogV2ViSW5zcGVjdG9yLkZpbmRCYW5u
ZXIgPSBmdW5jdGlvbihkZWxlZ2F0ZSwgZWxlbWVudCkgewotICAgIFdlYkluc3BlY3Rvci5PYmpl
Y3QuY2FsbCh0aGlzKTsKKyAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVj
dG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KKyAgICAvLyBXZWJJbnNwZWN0
b3IuT2JqZWN0LmNhbGwodGhpcyk7CiAKICAgICB0aGlzLl9kZWxlZ2F0ZSA9IGRlbGVnYXRlIHx8
IG51bGw7CiAKQEAgLTg2LDcgKzg3LDggQEAgV2ViSW5zcGVjdG9yLkZpbmRCYW5uZXIgPSBmdW5j
dGlvbihkZWxlZ2F0ZSwgZWxlbWVudCkgewogICAgIHRoaXMuX2dlbmVyYXRlQnV0dG9uc0dseXBo
c0lmTmVlZGVkKCk7CiB9OwogCi1XZWJJbnNwZWN0b3IuT2JqZWN0LmFkZENvbnN0cnVjdG9yRnVu
Y3Rpb25zKFdlYkluc3BlY3Rvci5GaW5kQmFubmVyKTsKKy8vIEZJWE1FOiBNb3ZlIHRvIGEgV2Vi
SW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcyBhbmQgd2UgY2FuIHJlbW92ZSB0aGlzLgorV2ViSW5z
cGVjdG9yLk9iamVjdC5kZXByZWNhdGVkQWRkQ29uc3RydWN0b3JGdW5jdGlvbnMoV2ViSW5zcGVj
dG9yLkZpbmRCYW5uZXIpOwogCiBXZWJJbnNwZWN0b3IuRmluZEJhbm5lci5TdHlsZUNsYXNzTmFt
ZSA9ICJmaW5kLWJhbm5lciI7CiBXZWJJbnNwZWN0b3IuRmluZEJhbm5lci5TdXBwb3J0c0ZpbmRC
YW5uZXJTdHlsZUNsYXNzTmFtZSA9ICJzdXBwb3J0cy1maW5kLWJhbm5lciI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Hb1RvTGluZURpYWxv
Zy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0dvVG9MaW5l
RGlhbG9nLmpzCmluZGV4IDFkMDc3YzMuLmY1ZjdkNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0dvVG9MaW5lRGlhbG9nLmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0dvVG9MaW5lRGlhbG9nLmpz
CkBAIC0yNSw3ICsyNSw4IEBACiAKIFdlYkluc3BlY3Rvci5Hb1RvTGluZURpYWxvZyA9IGZ1bmN0
aW9uKCkKIHsKLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CisgICAgLy8gRklY
TUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBj
YWxsIHN1cGVyKCkuCisgICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwogCiAg
ICAgdGhpcy5fZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgIHRo
aXMuX2VsZW1lbnQuY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLkdvVG9MaW5lRGlhbG9nLlN0eWxl
Q2xhc3NOYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvSGllcmFyY2hpY2FsUGF0aENvbXBvbmVudC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0hpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQuanMKaW5k
ZXggMzMyODY4NC4uYWQxMzNhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvSGllcmFyY2hpY2FsUGF0aENvbXBvbmVudC5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9IaWVyYXJjaGljYWxQYXRoQ29t
cG9uZW50LmpzCkBAIC0yNSw3ICsyNSw4IEBACiAKIFdlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQ
YXRoQ29tcG9uZW50ID0gZnVuY3Rpb24oZGlzcGxheU5hbWUsIHN0eWxlQ2xhc3NOYW1lcywgcmVw
cmVzZW50ZWRPYmplY3QsIHRleHRPbmx5LCBzaG93U2VsZWN0b3JBcnJvd3MpCiB7Ci0gICAgV2Vi
SW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMg
dG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgorICAg
IC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKIAogICAgIGNvbnNvbGUuYXNzZXJ0
KGRpc3BsYXlOYW1lKTsKICAgICBjb25zb2xlLmFzc2VydChzdHlsZUNsYXNzTmFtZXMpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSG92ZXJN
ZW51LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSG92ZXJN
ZW51LmpzCmluZGV4IGFiY2M0MDUuLmI5YmFmMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0hvdmVyTWVudS5qcworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Ib3Zlck1lbnUuanMKQEAgLTI1LDcgKzI1
LDggQEAKIAogV2ViSW5zcGVjdG9yLkhvdmVyTWVudSA9IGZ1bmN0aW9uKGRlbGVnYXRlKQogewot
ICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICAvLyBGSVhNRTogQ29udmVy
dCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIo
KS4KKyAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CiAKICAgICB0aGlzLmRl
bGVnYXRlID0gZGVsZWdhdGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0luZGV0ZXJtaW5hdGVQcm9ncmVzc1NwaW5uZXIuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9JbmRldGVybWluYXRlUHJvZ3Jl
c3NTcGlubmVyLmpzCmluZGV4IDk0OThiZGMuLjViZjJkNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0luZGV0ZXJtaW5hdGVQcm9ncmVzc1Nw
aW5uZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
SW5kZXRlcm1pbmF0ZVByb2dyZXNzU3Bpbm5lci5qcwpAQCAtMjUsNyArMjUsOCBAQAogCiBXZWJJ
bnNwZWN0b3IuSW5kZXRlcm1pbmF0ZVByb2dyZXNzU3Bpbm5lciA9IGZ1bmN0aW9uKCkKIHsKLSAg
ICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CisgICAgLy8gRklYTUU6IENvbnZlcnQg
dGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCku
CisgICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwogCiAgICAgdGhpcy5fZWxl
bWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgIHRoaXMuX2VsZW1lbnQu
Y2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLkluZGV0ZXJtaW5hdGVQcm9ncmVzc1NwaW5uZXIuU3R5
bGVDbGFzc05hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9MYXlvdXRUaW1lbGluZURhdGFHcmlkTm9kZS5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xheW91dFRpbWVsaW5lRGF0YUdyaWROb2RlLmpz
CmluZGV4IDVlMWNhODEuLmEwNjJhZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xheW91dFRpbWVsaW5lRGF0YUdyaWROb2RlLmpzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xheW91dFRpbWVsaW5l
RGF0YUdyaWROb2RlLmpzCkBAIC0zMSw3ICszMSw4IEBAIFdlYkluc3BlY3Rvci5MYXlvdXRUaW1l
bGluZURhdGFHcmlkTm9kZSA9IGZ1bmN0aW9uKGxheW91dFRpbWVsaW5lUmVjb3JkLCBiYXNlU3Rh
CiAgICAgdGhpcy5fYmFzZVN0YXJ0VGltZSA9IGJhc2VTdGFydFRpbWUgfHwgMDsKIH07CiAKLVdl
Ykluc3BlY3Rvci5PYmplY3QuYWRkQ29uc3RydWN0b3JGdW5jdGlvbnMoV2ViSW5zcGVjdG9yLkxh
eW91dFRpbWVsaW5lRGF0YUdyaWROb2RlKTsKKy8vIEZJWE1FOiBNb3ZlIHRvIGEgV2ViSW5zcGVj
dG9yLk9iamVjdCBzdWJjbGFzcyBhbmQgd2UgY2FuIHJlbW92ZSB0aGlzLgorV2ViSW5zcGVjdG9y
Lk9iamVjdC5kZXByZWNhdGVkQWRkQ29uc3RydWN0b3JGdW5jdGlvbnMoV2ViSW5zcGVjdG9yLkxh
eW91dFRpbWVsaW5lRGF0YUdyaWROb2RlKTsKIAogV2ViSW5zcGVjdG9yLkxheW91dFRpbWVsaW5l
RGF0YUdyaWROb2RlLkljb25TdHlsZUNsYXNzTmFtZSA9ICJpY29uIjsKIFdlYkluc3BlY3Rvci5M
YXlvdXRUaW1lbGluZURhdGFHcmlkTm9kZS5TdWJ0aXRsZVN0eWxlQ2xhc3NOYW1lID0gInN1YnRp
dGxlIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL05hdmlnYXRpb25CYXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9OYXZpZ2F0aW9uQmFyLmpzCmluZGV4IDYzMDYyOTIuLmZiMzM2MmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05hdmlnYXRpb25C
YXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmF2
aWdhdGlvbkJhci5qcwpAQCAtMjQsNyArMjQsOCBAQAogICovCiAKIFdlYkluc3BlY3Rvci5OYXZp
Z2F0aW9uQmFyID0gZnVuY3Rpb24oZWxlbWVudCwgbmF2aWdhdGlvbkl0ZW1zLCByb2xlLCBsYWJl
bCkgewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICAvLyBGSVhNRTog
Q29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwg
c3VwZXIoKS4KKyAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CiAKICAgICB0
aGlzLl9lbGVtZW50ID0gZWxlbWVudCB8fCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsK
ICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQodGhpcy5jb25zdHJ1Y3Rvci5TdHlsZUNs
YXNzTmFtZSB8fCBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5TdHlsZUNsYXNzTmFtZSk7CkBA
IC01NCw3ICs1NSw4IEBAIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyID0gZnVuY3Rpb24oZWxl
bWVudCwgbmF2aWdhdGlvbkl0ZW1zLCByb2xlLCBsYWJlbCkgewogICAgIGRvY3VtZW50LmhlYWQu
YXBwZW5kQ2hpbGQodGhpcy5fc3R5bGVFbGVtZW50KTsKIH07CiAKLVdlYkluc3BlY3Rvci5PYmpl
Y3QuYWRkQ29uc3RydWN0b3JGdW5jdGlvbnMoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIpOwor
Ly8gRklYTUU6IE1vdmUgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzIGFuZCB3ZSBj
YW4gcmVtb3ZlIHRoaXMuCitXZWJJbnNwZWN0b3IuT2JqZWN0LmRlcHJlY2F0ZWRBZGRDb25zdHJ1
Y3RvckZ1bmN0aW9ucyhXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhcik7CiAKIFdlYkluc3BlY3Rv
ci5OYXZpZ2F0aW9uQmFyLlN0eWxlQ2xhc3NOYW1lID0gIm5hdmlnYXRpb24tYmFyIjsKIFdlYklu
c3BlY3Rvci5OYXZpZ2F0aW9uQmFyLkNvbGxhcHNlZFN0eWxlQ2xhc3NOYW1lID0gImNvbGxhcHNl
ZCI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9OYXZpZ2F0aW9uSXRlbS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL05hdmlnYXRpb25JdGVtLmpzCmluZGV4IDI5YzExMjguLmEzMTI1NjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05hdmlnYXRpb25J
dGVtLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05h
dmlnYXRpb25JdGVtLmpzCkBAIC0yNCw3ICsyNCw4IEBACiAgKi8KIAogV2ViSW5zcGVjdG9yLk5h
dmlnYXRpb25JdGVtID0gZnVuY3Rpb24oaWRlbnRpZmllciwgcm9sZSwgbGFiZWwpIHsKLSAgICBX
ZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CisgICAgLy8gRklYTUU6IENvbnZlcnQgdGhp
cyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCkuCisg
ICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwogCiAgICAgdGhpcy5faWRlbnRp
ZmllciA9IGlkZW50aWZpZXIgfHwgbnVsbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvT2JqZWN0UHJldmlld1ZpZXcuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9PYmplY3RQcmV2aWV3Vmlldy5qcwpp
bmRleCBjN2VkOTZlLi5hMWNiYjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9PYmplY3RQcmV2aWV3Vmlldy5qcworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9PYmplY3RQcmV2aWV3Vmlldy5qcwpAQCAt
MjUsNyArMjUsOCBAQAogCiBXZWJJbnNwZWN0b3IuT2JqZWN0UHJldmlld1ZpZXcgPSBmdW5jdGlv
bihwcmV2aWV3LCBtb2RlKQogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsK
KyAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJj
bGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KKyAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwo
dGhpcyk7CiAKICAgICBjb25zb2xlLmFzc2VydChwcmV2aWV3IGluc3RhbmNlb2YgV2ViSW5zcGVj
dG9yLk9iamVjdFByZXZpZXcpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9PYmplY3RUcmVlVmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL09iamVjdFRyZWVWaWV3LmpzCmluZGV4IDY3ZWE3MjUu
LjBkNTUzZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL09iamVjdFRyZWVWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL09iamVjdFRyZWVWaWV3LmpzCkBAIC0yNSw3ICsyNSw4IEBACiAKIFdl
Ykluc3BlY3Rvci5PYmplY3RUcmVlVmlldyA9IGZ1bmN0aW9uKG9iamVjdCwgbW9kZSwgcHJvcGVy
dHlQYXRoLCBmb3JjZUV4cGFuZGluZykKIHsKLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwo
dGhpcyk7CisgICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmpl
Y3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCkuCisgICAgLy8gV2ViSW5zcGVjdG9yLk9iamVj
dC5jYWxsKHRoaXMpOwogCiAgICAgY29uc29sZS5hc3NlcnQob2JqZWN0IGluc3RhbmNlb2YgV2Vi
SW5zcGVjdG9yLlJlbW90ZU9iamVjdCk7CiAgICAgY29uc29sZS5hc3NlcnQoIXByb3BlcnR5UGF0
aCB8fCBwcm9wZXJ0eVBhdGggaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUHJvcGVydHlQYXRoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Bv
cG92ZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Qb3Bv
dmVyLmpzCmluZGV4IGU0NjBjN2IuLmY2ZDk5YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1BvcG92ZXIuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUG9wb3Zlci5qcwpAQCAtMjQsNyArMjQsOCBA
QAogICovCiAKIFdlYkluc3BlY3Rvci5Qb3BvdmVyID0gZnVuY3Rpb24oZGVsZWdhdGUpIHsKLSAg
ICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CisgICAgLy8gRklYTUU6IENvbnZlcnQg
dGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCku
CisgICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwogCiAgICAgdGhpcy5kZWxl
Z2F0ZSA9IGRlbGVnYXRlOwogICAgIHRoaXMuX2VkZ2UgPSBudWxsOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUHJvZmlsZU5vZGVEYXRhR3Jp
ZE5vZGUuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Qcm9m
aWxlTm9kZURhdGFHcmlkTm9kZS5qcwppbmRleCBhNjA0MWFjLi5lZGUxMWM2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Qcm9maWxlTm9kZURh
dGFHcmlkTm9kZS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9Qcm9maWxlTm9kZURhdGFHcmlkTm9kZS5qcwpAQCAtMzgsNyArMzgsOCBAQCBXZWJJbnNw
ZWN0b3IuUHJvZmlsZU5vZGVEYXRhR3JpZE5vZGUgPSBmdW5jdGlvbihwcm9maWxlTm9kZSwgYmFz
ZVN0YXJ0VGltZSwgcmFuZwogICAgIHRoaXMuX2RhdGEubG9jYXRpb24gPSB0aGlzLl9wcm9maWxl
Tm9kZS5zb3VyY2VDb2RlTG9jYXRpb247CiB9OwogCi1XZWJJbnNwZWN0b3IuT2JqZWN0LmFkZENv
bnN0cnVjdG9yRnVuY3Rpb25zKFdlYkluc3BlY3Rvci5Qcm9maWxlTm9kZURhdGFHcmlkTm9kZSk7
CisvLyBGSVhNRTogTW92ZSB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MgYW5kIHdl
IGNhbiByZW1vdmUgdGhpcy4KK1dlYkluc3BlY3Rvci5PYmplY3QuZGVwcmVjYXRlZEFkZENvbnN0
cnVjdG9yRnVuY3Rpb25zKFdlYkluc3BlY3Rvci5Qcm9maWxlTm9kZURhdGFHcmlkTm9kZSk7CiAK
IFdlYkluc3BlY3Rvci5Qcm9maWxlTm9kZURhdGFHcmlkTm9kZS5JY29uU3R5bGVDbGFzc05hbWUg
PSAiaWNvbiI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1F1aWNrQ29uc29sZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1F1aWNrQ29uc29sZS5qcwppbmRleCBlMTBhZmVhLi43ODE1MjQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9RdWlja0Nv
bnNvbGUuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
UXVpY2tDb25zb2xlLmpzCkBAIC0yNSw3ICsyNSw4IEBACiAKIFdlYkluc3BlY3Rvci5RdWlja0Nv
bnNvbGUgPSBmdW5jdGlvbihlbGVtZW50KQogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2Fs
bCh0aGlzKTsKKyAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9i
amVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KKyAgICAvLyBXZWJJbnNwZWN0b3IuT2Jq
ZWN0LmNhbGwodGhpcyk7CiAKICAgICB0aGlzLl90b2dnbGVPckZvY3VzS2V5Ym9hcmRTaG9ydGN1
dCA9IG5ldyBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dChudWxsLCBXZWJJbnNwZWN0b3Iu
S2V5Ym9hcmRTaG9ydGN1dC5LZXkuRXNjYXBlLCB0aGlzLl90b2dnbGVPckZvY3VzLmJpbmQodGhp
cykpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9SZXNvdXJjZVRpbWVsaW5lRGF0YUdyaWROb2RlLmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VUaW1lbGluZURhdGFHcmlkTm9kZS5qcwpp
bmRleCA5YjZhYzdkLi44MzkzMzU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZVRpbWVsaW5lRGF0YUdyaWROb2RlLmpzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlVGltZWxp
bmVEYXRhR3JpZE5vZGUuanMKQEAgLTQyLDcgKzQyLDggQEAgV2ViSW5zcGVjdG9yLlJlc291cmNl
VGltZWxpbmVEYXRhR3JpZE5vZGUgPSBmdW5jdGlvbihyZXNvdXJjZVRpbWVsaW5lUmVjb3JkLCBn
cmEKICAgICB9CiB9OwogCi1XZWJJbnNwZWN0b3IuT2JqZWN0LmFkZENvbnN0cnVjdG9yRnVuY3Rp
b25zKFdlYkluc3BlY3Rvci5SZXNvdXJjZVRpbWVsaW5lRGF0YUdyaWROb2RlKTsKKy8vIEZJWE1F
OiBNb3ZlIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcyBhbmQgd2UgY2FuIHJlbW92
ZSB0aGlzLgorV2ViSW5zcGVjdG9yLk9iamVjdC5kZXByZWNhdGVkQWRkQ29uc3RydWN0b3JGdW5j
dGlvbnMoV2ViSW5zcGVjdG9yLlJlc291cmNlVGltZWxpbmVEYXRhR3JpZE5vZGUpOwogCiBXZWJJ
bnNwZWN0b3IuUmVzb3VyY2VUaW1lbGluZURhdGFHcmlkTm9kZS5JY29uU3R5bGVDbGFzc05hbWUg
PSAiaWNvbiI7CiBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUaW1lbGluZURhdGFHcmlkTm9kZS5FcnJv
clN0eWxlQ2xhc3NOYW1lID0gImVycm9yIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Njb3BlQmFySXRlbS5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Njb3BlQmFySXRlbS5qcwppbmRleCA0MTM4ZmRh
Li5mMzQwNmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9TY29wZUJhckl0ZW0uanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvU2NvcGVCYXJJdGVtLmpzCkBAIC0yNCw3ICsyNCw4IEBACiAgKi8KIAog
V2ViSW5zcGVjdG9yLlNjb3BlQmFySXRlbSA9IGZ1bmN0aW9uKGlkLCBsYWJlbCwgaXNFeGNsdXNp
dmUpIHsKLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CisgICAgLy8gRklYTUU6
IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxs
IHN1cGVyKCkuCisgICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwogCiAgICAg
dGhpcy5pZCA9IGlkOwogICAgIHRoaXMubGFiZWwgPSBsYWJlbDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NjcmlwdFRpbWVsaW5lRGF0YUdy
aWROb2RlLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2Ny
aXB0VGltZWxpbmVEYXRhR3JpZE5vZGUuanMKaW5kZXggOTE1ZjJhZi4uNjk1NWJkMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2NyaXB0VGlt
ZWxpbmVEYXRhR3JpZE5vZGUuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvU2NyaXB0VGltZWxpbmVEYXRhR3JpZE5vZGUuanMKQEAgLTMzLDcgKzMzLDgg
QEAgV2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5lRGF0YUdyaWROb2RlID0gZnVuY3Rpb24oc2Ny
aXB0VGltZWxpbmVSZWNvcmQsIGJhc2VTdGEKICAgICB0aGlzLl9yYW5nZUVuZFRpbWUgPSB0eXBl
b2YgcmFuZ2VFbmRUaW1lID09PSAibnVtYmVyIiA/IHJhbmdlRW5kVGltZSA6IEluZmluaXR5Owog
fTsKIAotV2ViSW5zcGVjdG9yLk9iamVjdC5hZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhXZWJJbnNw
ZWN0b3IuU2NyaXB0VGltZWxpbmVEYXRhR3JpZE5vZGUpOworLy8gRklYTUU6IE1vdmUgdG8gYSBX
ZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzIGFuZCB3ZSBjYW4gcmVtb3ZlIHRoaXMuCitXZWJJ
bnNwZWN0b3IuT2JqZWN0LmRlcHJlY2F0ZWRBZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhXZWJJbnNw
ZWN0b3IuU2NyaXB0VGltZWxpbmVEYXRhR3JpZE5vZGUpOwogCiBXZWJJbnNwZWN0b3IuU2NyaXB0
VGltZWxpbmVEYXRhR3JpZE5vZGUuSWNvblN0eWxlQ2xhc3NOYW1lID0gImljb24iOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TZWN0aW9u
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2VjdGlvbi5q
cwppbmRleCA1MzA1YjBiLi4xZTY0Y2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9TZWN0aW9uLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NlY3Rpb24uanMKQEAgLTI1LDcgKzI1LDggQEAKIAog
V2ViSW5zcGVjdG9yLlNlY3Rpb24gPSBmdW5jdGlvbih0aXRsZSwgc3VidGl0bGUpCiB7Ci0gICAg
V2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRo
aXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgor
ICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKIAogICAgIHRoaXMuZWxlbWVu
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgIHRoaXMuZWxlbWVudC5jbGFz
c05hbWUgPSAic2VjdGlvbiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9TaWRlYmFyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvU2lkZWJhci5qcwppbmRleCBlMDdiZTY0Li5mNjc1Nzc2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TaWRlYmFyLmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NpZGViYXIu
anMKQEAgLTI0LDcgKzI0LDggQEAKICAqLwogCiBXZWJJbnNwZWN0b3IuU2lkZWJhciA9IGZ1bmN0
aW9uKGVsZW1lbnQsIHNpZGUsIHNpZGViYXJQYW5lbHMsIHJvbGUsIGxhYmVsKSB7Ci0gICAgV2Vi
SW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMg
dG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgorICAg
IC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKIAogICAgIGNvbnNvbGUuYXNzZXJ0
KCFzaWRlIHx8IHNpZGUgPT09IFdlYkluc3BlY3Rvci5TaWRlYmFyLlNpZGVzLkxlZnQgfHwgc2lk
ZSA9PT0gV2ViSW5zcGVjdG9yLlNpZGViYXIuU2lkZXMuUmlnaHQpOwogICAgIHRoaXMuX3NpZGUg
PSBzaWRlIHx8IFdlYkluc3BlY3Rvci5TaWRlYmFyLlNpZGVzLkxlZnQ7CkBAIC01MSw3ICs1Miw4
IEBAIFdlYkluc3BlY3Rvci5TaWRlYmFyID0gZnVuY3Rpb24oZWxlbWVudCwgc2lkZSwgc2lkZWJh
clBhbmVscywgcm9sZSwgbGFiZWwpIHsKICAgICB9CiB9OwogCi1XZWJJbnNwZWN0b3IuT2JqZWN0
LmFkZENvbnN0cnVjdG9yRnVuY3Rpb25zKFdlYkluc3BlY3Rvci5TaWRlYmFyKTsKKy8vIEZJWE1F
OiBNb3ZlIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcyBhbmQgd2UgY2FuIHJlbW92
ZSB0aGlzLgorV2ViSW5zcGVjdG9yLk9iamVjdC5kZXByZWNhdGVkQWRkQ29uc3RydWN0b3JGdW5j
dGlvbnMoV2ViSW5zcGVjdG9yLlNpZGViYXIpOwogCiBXZWJJbnNwZWN0b3IuU2lkZWJhci5TdHls
ZUNsYXNzTmFtZSA9ICJzaWRlYmFyIjsKIFdlYkluc3BlY3Rvci5TaWRlYmFyLkNvbGxhcHNlZFN0
eWxlQ2xhc3NOYW1lID0gImNvbGxhcHNlZCI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TaWRlYmFyUGFuZWwuanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TaWRlYmFyUGFuZWwuanMKaW5kZXggMjZmYWIw
OC4uMjc3ODRlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvU2lkZWJhclBhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1NpZGViYXJQYW5lbC5qcwpAQCAtMjUsNyArMjUsOCBAQAogCiBXZWJJ
bnNwZWN0b3IuU2lkZWJhclBhbmVsID0gZnVuY3Rpb24oaWRlbnRpZmllciwgZGlzcGxheU5hbWUs
IHNob3dUb29sVGlwLCBoaWRlVG9vbFRpcCwgaW1hZ2UsIGVsZW1lbnQsIHJvbGUsIGxhYmVsKQog
ewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICAvLyBGSVhNRTogQ29u
dmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3Vw
ZXIoKS4KKyAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CiAKICAgICB0aGlz
Ll9pZGVudGlmaWVyID0gaWRlbnRpZmllcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlQ29kZVRleHRFZGl0b3IuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Tb3VyY2VDb2RlVGV4dEVkaXRv
ci5qcwppbmRleCA5MjA3MTJlYy4uNTk4NWYxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlQ29kZVRleHRFZGl0b3IuanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlQ29kZVRleHRF
ZGl0b3IuanMKQEAgLTgxLDcgKzgxLDggQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRp
dG9yID0gZnVuY3Rpb24oc291cmNlQ29kZSkKICAgICBuZXcgV2ViSW5zcGVjdG9yLktleWJvYXJk
U2hvcnRjdXQoV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuQ29udHJvbCwg
IkciLCB0aGlzLnNob3dHb1RvTGluZURpYWxvZy5iaW5kKHRoaXMpLCB0aGlzLmVsZW1lbnQpOwog
fTsKIAotV2ViSW5zcGVjdG9yLk9iamVjdC5hZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhXZWJJbnNw
ZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IpOworLy8gRklYTUU6IE1vdmUgdG8gYSBXZWJJbnNw
ZWN0b3IuT2JqZWN0IHN1YmNsYXNzIGFuZCB3ZSBjYW4gcmVtb3ZlIHRoaXMuCitXZWJJbnNwZWN0
b3IuT2JqZWN0LmRlcHJlY2F0ZWRBZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhXZWJJbnNwZWN0b3Iu
U291cmNlQ29kZVRleHRFZGl0b3IpOwogCiBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0
b3IuU3R5bGVDbGFzc05hbWUgPSAic291cmNlLWNvZGUiOwogV2ViSW5zcGVjdG9yLlNvdXJjZUNv
ZGVUZXh0RWRpdG9yLkxpbmVFcnJvclN0eWxlQ2xhc3NOYW1lID0gImVycm9yIjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVU
aW1lbGluZVRpbWVsaW5lRGF0YUdyaWROb2RlLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvU291cmNlQ29kZVRpbWVsaW5lVGltZWxpbmVEYXRhR3JpZE5vZGUu
anMKaW5kZXggYTUyN2U0Zi4uYTAyMTIzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlQ29kZVRpbWVsaW5lVGltZWxpbmVEYXRhR3Jp
ZE5vZGUuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
U291cmNlQ29kZVRpbWVsaW5lVGltZWxpbmVEYXRhR3JpZE5vZGUuanMKQEAgLTMxLDcgKzMxLDgg
QEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUaW1lbGluZVRpbWVsaW5lRGF0YUdyaWROb2RlID0g
ZnVuY3Rpb24oc291cmNlQ29kZVRpbWVsaW4KICAgICB0aGlzLl9zb3VyY2VDb2RlVGltZWxpbmUu
YWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxpbmUuRXZlbnQuUmVjb3JkQWRkZWQs
IHRoaXMuX3RpbWVsaW5lUmVjb3JkQWRkZWQsIHRoaXMpOwogfTsKIAotV2ViSW5zcGVjdG9yLk9i
amVjdC5hZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRpbWVs
aW5lVGltZWxpbmVEYXRhR3JpZE5vZGUpOworLy8gRklYTUU6IE1vdmUgdG8gYSBXZWJJbnNwZWN0
b3IuT2JqZWN0IHN1YmNsYXNzIGFuZCB3ZSBjYW4gcmVtb3ZlIHRoaXMuCitXZWJJbnNwZWN0b3Iu
T2JqZWN0LmRlcHJlY2F0ZWRBZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhXZWJJbnNwZWN0b3IuU291
cmNlQ29kZVRpbWVsaW5lVGltZWxpbmVEYXRhR3JpZE5vZGUpOwogCiBXZWJJbnNwZWN0b3IuU291
cmNlQ29kZVRpbWVsaW5lVGltZWxpbmVEYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewogICAgIGNv
bnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRpbWVsaW5lVGltZWxpbmVEYXRhR3Jp
ZE5vZGUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9UZXh0RWRpdG9yLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvVGV4dEVkaXRvci5qcwppbmRleCBiN2I3ODc4Li4zZWYzOGI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UZXh0RWRpdG9yLmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RleHRFZGl0b3Iu
anMKQEAgLTI1LDcgKzI1LDggQEAKIAogV2ViSW5zcGVjdG9yLlRleHRFZGl0b3IgPSBmdW5jdGlv
bihlbGVtZW50LCBtaW1lVHlwZSwgZGVsZWdhdGUpCiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVj
dC5jYWxsKHRoaXMpOworICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0
b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgorICAgIC8vIFdlYkluc3BlY3Rv
ci5PYmplY3QuY2FsbCh0aGlzKTsKIAogICAgIHZhciB0ZXh0ID0gKGVsZW1lbnQgPyBlbGVtZW50
LnRleHRDb250ZW50IDogIiIpOwogICAgIHRoaXMuX2VsZW1lbnQgPSBlbGVtZW50IHx8IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwpAQCAtNjksNyArNzAsOCBAQCBXZWJJbnNwZWN0b3Iu
VGV4dEVkaXRvciA9IGZ1bmN0aW9uKGVsZW1lbnQsIG1pbWVUeXBlLCBkZWxlZ2F0ZSkKICAgICB0
aGlzLl9kZWxlZ2F0ZSA9IGRlbGVnYXRlIHx8IG51bGw7CiB9OwogCi1XZWJJbnNwZWN0b3IuT2Jq
ZWN0LmFkZENvbnN0cnVjdG9yRnVuY3Rpb25zKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yKTsKKy8v
IEZJWE1FOiBNb3ZlIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcyBhbmQgd2UgY2Fu
IHJlbW92ZSB0aGlzLgorV2ViSW5zcGVjdG9yLk9iamVjdC5kZXByZWNhdGVkQWRkQ29uc3RydWN0
b3JGdW5jdGlvbnMoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3IpOwogCiBXZWJJbnNwZWN0b3IuVGV4
dEVkaXRvci5TdHlsZUNsYXNzTmFtZSA9ICJ0ZXh0LWVkaXRvciI7CiBXZWJJbnNwZWN0b3IuVGV4
dEVkaXRvci5IaWdobGlnaHRlZFN0eWxlQ2xhc3NOYW1lID0gImhpZ2hsaWdodGVkIjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5l
RGF0YUdyaWROb2RlLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvVGltZWxpbmVEYXRhR3JpZE5vZGUuanMKaW5kZXggZGE3ZDNhNi4uMjJlM2JiMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVE
YXRhR3JpZE5vZGUuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvVGltZWxpbmVEYXRhR3JpZE5vZGUuanMKQEAgLTM4LDcgKzM4LDggQEAgV2ViSW5zcGVj
dG9yLlRpbWVsaW5lRGF0YUdyaWROb2RlID0gZnVuY3Rpb24oZ3JhcGhPbmx5LCBncmFwaERhdGFT
b3VyY2UsIGhhc0NoaWwKICAgICB9CiB9OwogCi1XZWJJbnNwZWN0b3IuT2JqZWN0LmFkZENvbnN0
cnVjdG9yRnVuY3Rpb25zKFdlYkluc3BlY3Rvci5UaW1lbGluZURhdGFHcmlkTm9kZSk7CisvLyBG
SVhNRTogTW92ZSB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MgYW5kIHdlIGNhbiBy
ZW1vdmUgdGhpcy4KK1dlYkluc3BlY3Rvci5PYmplY3QuZGVwcmVjYXRlZEFkZENvbnN0cnVjdG9y
RnVuY3Rpb25zKFdlYkluc3BlY3Rvci5UaW1lbGluZURhdGFHcmlkTm9kZSk7CiAKIFdlYkluc3Bl
Y3Rvci5UaW1lbGluZURhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgY29uc3RydWN0b3I6
IFdlYkluc3BlY3Rvci5UaW1lbGluZURhdGFHcmlkTm9kZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lT3ZlcnZpZXcuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZU92ZXJ2aWV3
LmpzCmluZGV4IDkwMTFiYmIuLjU4MmJlOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lT3ZlcnZpZXcuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVPdmVydmlldy5qcwpA
QCAtMjUsNyArMjUsOCBAQAogCiBXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlldyA9IGZ1bmN0
aW9uKHRpbWVsaW5lUmVjb3JkaW5nKQogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0
aGlzKTsKKyAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVj
dCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KKyAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0
LmNhbGwodGhpcyk7CiAKICAgICB0aGlzLl9yZWNvcmRpbmcgPSB0aW1lbGluZVJlY29yZGluZzsK
ICAgICB0aGlzLl9yZWNvcmRpbmcuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxp
bmVSZWNvcmRpbmcuRXZlbnQuVGltZWxpbmVBZGRlZCwgdGhpcy5fdGltZWxpbmVBZGRlZCwgdGhp
cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9UaW1lbGluZU92ZXJ2aWV3R3JhcGguanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9UaW1lbGluZU92ZXJ2aWV3R3JhcGguanMKaW5kZXggODgzMzY5NS4uNzE5
ZDlkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvVGltZWxpbmVPdmVydmlld0dyYXBoLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lT3ZlcnZpZXdHcmFwaC5qcwpAQCAtNDksNyArNDks
OCBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlld0dyYXBoID0gZnVuY3Rpb24odGltZWxp
bmUpCiAgICAgLy8gQ29uY3JldGUgb2JqZWN0IGluc3RhbnRpYXRpb24uCiAgICAgY29uc29sZS5h
c3NlcnQodGhpcy5jb25zdHJ1Y3RvciAhPT0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdH
cmFwaCAmJiB0aGlzIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdHcmFw
aCk7CiAKLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CisgICAgLy8gRklYTUU6
IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxs
IHN1cGVyKCkuCisgICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwogCiAgICAg
dGhpcy5lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgdGhpcy5l
bGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdHcmFwaC5T
dHlsZUNsYXNzTmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9UaW1lbGluZVJlY29yZEJhci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lUmVjb3JkQmFyLmpzCmluZGV4IGUwNGMxY2Eu
LjU3ZmM4NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1RpbWVsaW5lUmVjb3JkQmFyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lUmVjb3JkQmFyLmpzCkBAIC0yNSw3ICsyNSw4IEBA
CiAKIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZEJhciA9IGZ1bmN0aW9uKHJlY29yZHMsIHJl
bmRlck1vZGUpCiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIC8v
IEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBh
bmQgY2FsbCBzdXBlcigpLgorICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsK
IAogICAgIHRoaXMuX2VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAg
ICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3Jk
QmFyLlN0eWxlQ2xhc3NOYW1lKTsKQEAgLTM0LDcgKzM1LDggQEAgV2ViSW5zcGVjdG9yLlRpbWVs
aW5lUmVjb3JkQmFyID0gZnVuY3Rpb24ocmVjb3JkcywgcmVuZGVyTW9kZSkKICAgICB0aGlzLnJl
Y29yZHMgPSByZWNvcmRzOwogfTsKIAotV2ViSW5zcGVjdG9yLk9iamVjdC5hZGRDb25zdHJ1Y3Rv
ckZ1bmN0aW9ucyhXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRCYXIpOworLy8gRklYTUU6IE1v
dmUgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzIGFuZCB3ZSBjYW4gcmVtb3ZlIHRo
aXMuCitXZWJJbnNwZWN0b3IuT2JqZWN0LmRlcHJlY2F0ZWRBZGRDb25zdHJ1Y3RvckZ1bmN0aW9u
cyhXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRCYXIpOwogCiBXZWJJbnNwZWN0b3IuVGltZWxp
bmVSZWNvcmRCYXIuU3R5bGVDbGFzc05hbWUgPSAidGltZWxpbmUtcmVjb3JkLWJhciI7CiBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVSZWNvcmRCYXIuQmFyU2VnbWVudFN0eWxlQ2xhc3NOYW1lID0gInNl
Z21lbnQiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvVGltZWxpbmVSZWNvcmRGcmFtZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lUmVjb3JkRnJhbWUuanMKaW5kZXggOTk5MDJmZi4uODAy
NzkyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvVGltZWxpbmVSZWNvcmRGcmFtZS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVJlY29yZEZyYW1lLmpzCkBAIC0yNSw3ICsyNSw4IEBA
CiAKIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZEZyYW1lID0gZnVuY3Rpb24oZ3JhcGhEYXRh
U291cmNlLCByZWNvcmRzKQogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsK
KyAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJj
bGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KKyAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwo
dGhpcyk7CiAKICAgICB0aGlzLl9lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2
Iik7CiAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5UaW1lbGlu
ZVJlY29yZEZyYW1lLlN0eWxlQ2xhc3NOYW1lKTsKQEAgLTM0LDcgKzM1LDggQEAgV2ViSW5zcGVj
dG9yLlRpbWVsaW5lUmVjb3JkRnJhbWUgPSBmdW5jdGlvbihncmFwaERhdGFTb3VyY2UsIHJlY29y
ZHMpCiAgICAgdGhpcy5yZWNvcmRzID0gcmVjb3JkcyB8fCBbXTsKIH07CiAKLVdlYkluc3BlY3Rv
ci5PYmplY3QuYWRkQ29uc3RydWN0b3JGdW5jdGlvbnMoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVj
b3JkRnJhbWUpOworLy8gRklYTUU6IE1vdmUgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNs
YXNzIGFuZCB3ZSBjYW4gcmVtb3ZlIHRoaXMuCitXZWJJbnNwZWN0b3IuT2JqZWN0LmRlcHJlY2F0
ZWRBZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRGcmFt
ZSk7CiAKIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZEZyYW1lLlN0eWxlQ2xhc3NOYW1lID0g
InRpbWVsaW5lLXJlY29yZC1mcmFtZSI7CiBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRGcmFt
ZS5TaXh0eUZwc0ZyYW1lQnVkZ2V0ID0gMC4wMTY2OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVSdWxlci5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lUnVsZXIuanMKaW5kZXgg
MGExZDZmYi4uYmUxMjBmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvVGltZWxpbmVSdWxlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVJ1bGVyLmpzCkBAIC0yNSw3ICsyNSw4IEBA
CiAKIFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyID0gZnVuY3Rpb24oKQogewotICAgIFdlYklu
c3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRv
IGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KKyAgICAv
LyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CiAKICAgICB0aGlzLl9lbGVtZW50ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgdGhpcy5fZWxlbWVudC5jbGFzc05h
bWUgPSBXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5TdHlsZUNsYXNzTmFtZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Rvb2xiYXIuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Ub29sYmFyLmpzCmlu
ZGV4IGE2YWIxZmQuLmU2ZmU3MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1Rvb2xiYXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvVG9vbGJhci5qcwpAQCAtNTAsNyArNTAsOCBAQCBXZWJJbnNw
ZWN0b3IuVG9vbGJhciA9IGZ1bmN0aW9uKGVsZW1lbnQsIG5hdmlnYXRpb25JdGVtcykgewogICAg
IHRoaXMuX2VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY29udGV4dG1lbnUiLCB0aGlzLl9oYW5k
bGVDb250ZXh0TWVudUV2ZW50LmJpbmQodGhpcyksIGZhbHNlKTsKIH07CiAKLVdlYkluc3BlY3Rv
ci5PYmplY3QuYWRkQ29uc3RydWN0b3JGdW5jdGlvbnMoV2ViSW5zcGVjdG9yLlRvb2xiYXIpOwor
Ly8gRklYTUU6IE1vdmUgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzIGFuZCB3ZSBj
YW4gcmVtb3ZlIHRoaXMuCitXZWJJbnNwZWN0b3IuT2JqZWN0LmRlcHJlY2F0ZWRBZGRDb25zdHJ1
Y3RvckZ1bmN0aW9ucyhXZWJJbnNwZWN0b3IuVG9vbGJhcik7CiAKIFdlYkluc3BlY3Rvci5Ub29s
YmFyLlN0eWxlQ2xhc3NOYW1lID0gInRvb2xiYXIiOwogV2ViSW5zcGVjdG9yLlRvb2xiYXIuQ29u
dHJvbFNlY3Rpb25TdHlsZUNsYXNzTmFtZSA9ICJjb250cm9sLXNlY3Rpb24iOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVHJlZUVsZW1lbnRT
dGF0dXNCdXR0b24uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9UcmVlRWxlbWVudFN0YXR1c0J1dHRvbi5qcwppbmRleCA0NGJlNTY5Li41NmMxNDRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UcmVlRWxl
bWVudFN0YXR1c0J1dHRvbi5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9UcmVlRWxlbWVudFN0YXR1c0J1dHRvbi5qcwpAQCAtMjQsNyArMjQsOCBAQAog
ICovCiAKIFdlYkluc3BlY3Rvci5UcmVlRWxlbWVudFN0YXR1c0J1dHRvbiA9IGZ1bmN0aW9uKGVs
ZW1lbnQpIHsKLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CisgICAgLy8gRklY
TUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBj
YWxsIHN1cGVyKCkuCisgICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwogCiAg
ICAgY29uc29sZS5hc3NlcnQoZWxlbWVudCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVPdXRsaW5lLmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVHJlZU91dGxpbmUuanMKaW5kZXggMDc2Yzcw
MC4uMjdjYjA1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvVHJlZU91dGxpbmUuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvVHJlZU91dGxpbmUuanMKQEAgLTI4LDcgKzI4LDggQEAKIAogZnVuY3Rp
b24gVHJlZU91dGxpbmUobGlzdE5vZGUpCiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxs
KHRoaXMpOworICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2Jq
ZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgorICAgIC8vIFdlYkluc3BlY3Rvci5PYmpl
Y3QuY2FsbCh0aGlzKTsKIAogICAgIHRoaXMuZWxlbWVudCA9IGxpc3ROb2RlOwogCkBAIC01MDMs
NyArNTA0LDggQEAgVHJlZU91dGxpbmUucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rv
ci5PYmplY3QucHJvdG90eXBlOwogCiBmdW5jdGlvbiBUcmVlRWxlbWVudCh0aXRsZSwgcmVwcmVz
ZW50ZWRPYmplY3QsIGhhc0NoaWxkcmVuKQogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2Fs
bCh0aGlzKTsKKyAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9i
amVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KKyAgICAvLyBXZWJJbnNwZWN0b3IuT2Jq
ZWN0LmNhbGwodGhpcyk7CiAKICAgICB0aGlzLl90aXRsZSA9IHRpdGxlOwogICAgIHRoaXMucmVw
cmVzZW50ZWRPYmplY3QgPSAocmVwcmVzZW50ZWRPYmplY3QgfHwge30pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVHJlZU91dGxpbmVEYXRh
R3JpZFN5bmNocm9uaXplci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1RyZWVPdXRsaW5lRGF0YUdyaWRTeW5jaHJvbml6ZXIuanMKaW5kZXggMzkxZmQ1MC4u
YWU5Zjg0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvVHJlZU91dGxpbmVEYXRhR3JpZFN5bmNocm9uaXplci5qcworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UcmVlT3V0bGluZURhdGFHcmlkU3luY2hy
b25pemVyLmpzCkBAIC0yNSw3ICsyNSw4IEBACiAKIFdlYkluc3BlY3Rvci5UcmVlT3V0bGluZURh
dGFHcmlkU3luY2hyb25pemVyID0gZnVuY3Rpb24odHJlZU91dGxpbmUsIGRhdGFHcmlkLCBkZWxl
Z2F0ZSkKIHsKLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CisgICAgLy8gRklY
TUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBj
YWxsIHN1cGVyKCkuCisgICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwogCiAg
ICAgdGhpcy5fdHJlZU91dGxpbmUgPSB0cmVlT3V0bGluZTsKICAgICB0aGlzLl9kYXRhR3JpZCA9
IGRhdGFHcmlkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvVHlwZVRva2VuVmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1R5cGVUb2tlblZpZXcuanMKaW5kZXggOWIyZDljZS4uNGRlMjgwMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVHlwZVRv
a2VuVmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9UeXBlVG9rZW5WaWV3LmpzCkBAIC0yNyw3ICsyNyw4IEBAIFdlYkluc3BlY3Rvci5UeXBlVG9r
ZW5WaWV3ID0gZnVuY3Rpb24odG9rZW5Bbm5vdGF0b3IsIHNob3VsZEhhdmVSaWdodE1hcmdpbiwg
c2hvCiB7CiAgICAgY29uc29sZS5hc3NlcnQodGl0bGVUeXBlID09PSBXZWJJbnNwZWN0b3IuVHlw
ZVRva2VuVmlldy5UaXRsZVR5cGUuVmFyaWFibGUgIHx8IHRpdGxlVHlwZSA9PT0gV2ViSW5zcGVj
dG9yLlR5cGVUb2tlblZpZXcuVGl0bGVUeXBlLlJldHVyblN0YXRlbWVudCk7CiAKLSAgICBXZWJJ
bnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CisgICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0
byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCkuCisgICAg
Ly8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwogCiAgICAgdmFyIHNwYW4gPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICAgc3Bhbi5jbGFzc0xpc3QuYWRkKCJ0eXBl
LXRva2VuIik7Cg==
</data>
<flag name="review"
          id="273898"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
      

    </bug>

</bugzilla>