<?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>129094</bug_id>
          
          <creation_ts>2014-02-20 02:37:52 -0800</creation_ts>
          <short_desc>Web Inspector: create a CodeMirrorEditingController superclass</short_desc>
          <delta_ts>2014-02-20 10:43:35 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          <blocked>119686</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Antoine Quint">graouts</reporter>
          <assigned_to name="Antoine Quint">graouts</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>982759</commentid>
    <comment_count>0</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2014-02-20 02:37:52 -0800</bug_when>
    <thetext>At the moment, the CodeMirrorColorEditingController encapsulates code both specific to editing of a color and generic to any editing of a value in a CodeMirror editor. In order to support editing of gradients (http://webkit.org/b/119686), we should create a new CodeMirrorEditingController superclass that splits out the generic code from CodeMirrorColorEditingController and reduce CodeMirrorColorEditingController to contain color-editing-specific code only.

We should also take this opportunity to enhance the new CodeMirrorEditingController with new features such as being able to deal with text markers spread across multiple lines and more gracefully deal with Esc. key presses, which have been issues so far.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>982760</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-02-20 02:38:25 -0800</bug_when>
    <thetext>&lt;rdar://problem/16119910&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>982775</commentid>
    <comment_count>2</comment_count>
      <attachid>224743</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2014-02-20 03:43:00 -0800</bug_when>
    <thetext>Created attachment 224743
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>982842</commentid>
    <comment_count>3</comment_count>
      <attachid>224743</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-02-20 09:02:31 -0800</bug_when>
    <thetext>Comment on attachment 224743
Patch

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

&gt; Source/WebInspectorUI/UserInterface/CodeMirrorEditingController.js:106
&gt; +    get cssClassName()
&gt; +    {
&gt; +        return &quot;&quot;;
&gt; +    },

Should this have a // Implemented by subclasses. comment?

&gt; Source/WebInspectorUI/UserInterface/Geometry.js:104
&gt; +    for (var i = 1; i &lt; rects.length; ++i)

for (... of ...)

&gt; Source/WebInspectorUI/UserInterface/HoverMenu.js:36
&gt; +    this._svg = this._element.appendChild(document.createElementNS(&quot;http://www.w3.org/2000/svg&quot;, &quot;svg&quot;));

_svg is pretty generic. Can this have a better name? _outlineElement?

&gt; Source/WebInspectorUI/UserInterface/HoverMenu.js:166
&gt; +    _drawTwoNonOverlappingLines: function(rects)

Crazy town! But I like it.

&gt; Source/WebInspectorUI/UserInterface/SourceCodeTextEditor.js:1312
&gt; +        if (marker.type === WebInspector.TextMarker.Type.Color) {
&gt; +            var color = this._editingController.value;
&gt; +            if (!color || !color.valid) {

Most of this code is now generic (editableMarker), but this is specific to color. Does this not apply to all editable markers?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>982849</commentid>
    <comment_count>4</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2014-02-20 09:18:07 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 224743 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=224743&amp;action=review
&gt; 
&gt; &gt; Source/WebInspectorUI/UserInterface/CodeMirrorEditingController.js:106
&gt; &gt; +    get cssClassName()
&gt; &gt; +    {
&gt; &gt; +        return &quot;&quot;;
&gt; &gt; +    },
&gt; 
&gt; Should this have a // Implemented by subclasses. comment?

Good point, I&apos;ll add it.

&gt; &gt; Source/WebInspectorUI/UserInterface/Geometry.js:104
&gt; &gt; +    for (var i = 1; i &lt; rects.length; ++i)
&gt; 
&gt; for (... of ...)

We start at i = 1 in this case.

&gt; &gt; Source/WebInspectorUI/UserInterface/HoverMenu.js:36
&gt; &gt; +    this._svg = this._element.appendChild(document.createElementNS(&quot;http://www.w3.org/2000/svg&quot;, &quot;svg&quot;));
&gt; 
&gt; _svg is pretty generic. Can this have a better name? _outlineElement?

Sure!

&gt; &gt; Source/WebInspectorUI/UserInterface/HoverMenu.js:166
&gt; &gt; +    _drawTwoNonOverlappingLines: function(rects)
&gt; 
&gt; Crazy town! But I like it.

This matches DataDetectors UI on OS X and generally looks pretty good.

&gt; &gt; Source/WebInspectorUI/UserInterface/SourceCodeTextEditor.js:1312
&gt; &gt; +        if (marker.type === WebInspector.TextMarker.Type.Color) {
&gt; &gt; +            var color = this._editingController.value;
&gt; &gt; +            if (!color || !color.valid) {
&gt; 
&gt; Most of this code is now generic (editableMarker), but this is specific to color. Does this not apply to all editable markers?

I suppose we ought to make it so that a CodeMirrorEditingController value ought to implement a .valid getter to check that its value is valid so that this code could be generic. I&apos;ll rework that in an updated patch if that sounds like a good idea to you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>982852</commentid>
    <comment_count>5</comment_count>
      <attachid>224743</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-02-20 09:27:38 -0800</bug_when>
    <thetext>Comment on attachment 224743
Patch

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

&gt;&gt;&gt; Source/WebInspectorUI/UserInterface/SourceCodeTextEditor.js:1312
&gt;&gt;&gt; +            if (!color || !color.valid) {
&gt;&gt; 
&gt;&gt; Most of this code is now generic (editableMarker), but this is specific to color. Does this not apply to all editable markers?
&gt; 
&gt; I suppose we ought to make it so that a CodeMirrorEditingController value ought to implement a .valid getter to check that its value is valid so that this code could be generic. I&apos;ll rework that in an updated patch if that sounds like a good idea to you.

This is fine as-is. We can change it later of other editors need it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>982853</commentid>
    <comment_count>6</comment_count>
      <attachid>224761</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2014-02-20 09:31:25 -0800</bug_when>
    <thetext>Created attachment 224761
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>982857</commentid>
    <comment_count>7</comment_count>
      <attachid>224761</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-20 09:33:10 -0800</bug_when>
    <thetext>Comment on attachment 224761
Patch for landing

Rejecting attachment 224761 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.appspot.com&apos;, &apos;--bot-id=webkit-cq-03&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 224761, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
nk #1 succeeded at 445 (offset 1 line).
patching file Source/WebInspectorUI/UserInterface/Main.js
patching file Source/WebInspectorUI/UserInterface/SourceCodeTextEditor.css
patching file Source/WebInspectorUI/UserInterface/SourceCodeTextEditor.js
patching file Source/WebInspectorUI/UserInterface/TextEditor.js
patching file Source/WebInspectorUI/UserInterface/TextMarker.js

Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Full output: http://webkit-queues.appspot.com/results/4763882363027456</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>982866</commentid>
    <comment_count>8</comment_count>
      <attachid>224766</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2014-02-20 10:06:14 -0800</bug_when>
    <thetext>Created attachment 224766
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>982888</commentid>
    <comment_count>9</comment_count>
      <attachid>224766</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-20 10:43:33 -0800</bug_when>
    <thetext>Comment on attachment 224766
Patch for landing

Clearing flags on attachment: 224766

Committed r164436: &lt;http://trac.webkit.org/changeset/164436&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>982889</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-20 10:43:35 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224743</attachid>
            <date>2014-02-20 03:43:00 -0800</date>
            <delta_ts>2014-02-20 09:31:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-129094-20140220124259.patch</filename>
            <type>text/plain</type>
            <size>54453</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY0MzU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA3
Mzg0YmQ1MzliYzUzMDI0NTQ0NTkzNmMyMDAwNGI2MmQxZDM0NDkyLi4yMmVjYzkzN2VjMTExYTlh
OWVhZmJkMzFlZmRkMDlmNDBjOGMxZTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOTggQEAKKzIwMTQtMDItMjAgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogY3JlYXRlIGEgQ29kZU1pcnJvckVkaXRpbmdD
b250cm9sbGVyIHN1cGVyY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEyOTA5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRha2UgY29kZSB0aGF0IGlzIGdlbmVyaWMgdG8gZWRpdGluZyBvZiBhbnkg
dGV4dCBtYXJrZXIgb3V0IG9mIENvZGVNaXJyb3JDb2xvckVkaXRpbmdDb250cm9sbGVyIHRvCisg
ICAgICAgIGNyZWF0ZSBhIG5ldyBDb2RlTWlycm9yRWRpdGluZ0NvbnRyb2xsZXIgc3VwZXJjbGFz
cyB0aGF0J2xsIGJlIGZpdCB0byB1c2UgZm9yIGZ1dHVyZSBlZGl0aW5nIGNvbnRyb2xsZXJzLgor
ICAgICAgICBBZGRpdGlvYW5sbHksIHdlIGZpeCBleGlzdGluZyBpc3N1ZXMgd2l0aCBzdWNoIGVk
aXRpbmcgYnkgc3VwcG9ydGluZyB0ZXh0IG1hcmtlcnMgc3ByZWFkIGFjcm9zcyBzZXZlcmFsCisg
ICAgICAgIGxpbmVzIGFuZCBtb3JlIHJvYnVzdGx5IGhhbmRsaW5nIHRoZSBFc2MuIGtleSBiZWlu
ZyBwcmVzc2VkIHRvIGRpc21pc3MgYSBjb250cm9sbGVyJ3MgcG9wb3Zlci4KKworICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IuanM6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IucHJvdG90eXBlLl9j
cmVhdGVDb2xvclN3YXRjaGVzKToKKyAgICAgICAgQWRvcHQgdGhlIG5ldyAuY3JlYXRlQ29sb3JN
YXJrZXJzKCkgbWV0aG9kIHNpZ25hdHVyZSB0byBwcm92aWRlIGEgVGV4dFJhbmdlIHBhcmFtZXRl
ciByYXRoZXIgdGhhbiBhIHNpbmdsZQorICAgICAgICBsaW5lIG51bWJlci4KKworICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvQ29kZU1pcnJvckFkZGl0aW9ucy5qczoKKyAgICAgICAgUmVtb3ZlIHRo
ZSAuYm91bmRzRm9yUmFuZ2UoKSBtZXRob2QgaW4gZmF2b3Igb2YgYSAucmVjdHNGb3JSYW5nZSgp
IG1ldGhvZCB3aGljaCB3aWxsIGFsbG93IHVzIHRvIGRyYXcgYmV0dGVyCisgICAgICAgIG1lbnVz
IHdoZW4gaG92ZXJpbmcgb3ZlciBhIHRleHQgcmFuZ2UgYnkgcHJvdmlkaW5nIHRpZ2h0IGJvdW5k
cyByYXRoZXIgdGhhbiBhIGxhcmdlIGJveC4gV2UgYWxzbyBoYW5kbGUgYW55CisgICAgICAgIGxp
bmUgd3JhcHBpbmcgcHJvZHVjZWQgYnkgQ29kZU1pcnJvciBhbmQgcmVtb3ZlIGFueSBsZWFkaW5n
IHdoaXRlLXNwYWNlIHNvIHRoYXQgdGhlIHJlY3RzIGFyZSB0aWdodCB0byB0aGUKKyAgICAgICAg
YWN0dWFsIGNoYXJhY3RlcnMgaW4gdGhlIHRleHQgbWFya2VyLgorCisgICAgICAgIFdlIGFsc28g
Y2hhbmdlIC5jcmVhdGVDb2xvck1hcmtlcnMoKSB0byB0YWtlIGluIGEgVGV4dFJhbmdlIHBhcmFt
ZXRlciByYXRoZXIgdGhhbiBhIGxpbmUgbnVtYmVyIGluIG9yZGVyIHRvCisgICAgICAgIGJldHRl
ciBkZWFsIHdpdGggdGV4dCBtYXJrZXJzIHNwcmVhZCBhY3Jvc3MgbXVsdGlwbGUgbGluZXMuCisK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvZGVNaXJyb3JDb2xvckVkaXRpbmdDb250cm9sbGVy
LmpzOgorICAgICAgICBSZW1vdmUgYW55IGNvZGUgdGhhdCBpcyBhZGVxdWF0ZSBmb3IgYW55IGVk
aXRpbmcgY29udHJvbGxlciAod2hpY2ggaXMgbW92aW5nIHRvIENvZGVNaXJyb3JFZGl0aW5nQ29u
dHJvbGxlcikuCisgICAgICAgIFdlIGFsc28gYWRvcHQgbmV3IGludGVyZmFjZXMgZXhwb3NlZCBi
eSBDb2RlTWlycm9yRWRpdGluZ0NvbnRyb2xsZXIuCisKKyAgICAgICAgKFdlYkluc3BlY3Rvci5D
b2RlTWlycm9yQ29sb3JFZGl0aW5nQ29udHJvbGxlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
Q29kZU1pcnJvckNvbG9yRWRpdGluZ0NvbnRyb2xsZXIucHJvdG90eXBlLmdldCBpbml0aWFsVmFs
dWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JDb2xvckVkaXRpbmdDb250cm9s
bGVyLnByb3RvdHlwZS5nZXQgY3NzQ2xhc3NOYW1lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5D
b2RlTWlycm9yQ29sb3JFZGl0aW5nQ29udHJvbGxlci5wcm90b3R5cGUucG9wb3ZlcldpbGxQcmVz
ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2RlTWlycm9yQ29sb3JFZGl0aW5nQ29udHJv
bGxlci5wcm90b3R5cGUucG9wb3ZlckRpZFByZXNlbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkNvZGVNaXJyb3JDb2xvckVkaXRpbmdDb250cm9sbGVyLnByb3RvdHlwZS5fY29sb3JQaWNrZXJD
b2xvckNoYW5nZWQpOgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Db2RlTWlycm9yRWRpdGlu
Z0NvbnRyb2xsZXIuanM6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL0NvZGVNaXJyb3JDb2xvckVkaXRpbmdDb250cm9sbGVyLmpzLgorICAgICAgICBOZXcg
Y2xhc3MgbWVhbnQgdG8gYmUgc3ViY2xhc3NlZCBieSBhbnkgZnV0dXJlIGVkaXRpbmcgY29udHJv
bGxlciwgYW5kIGFscmVhZHkgc3ViY2xhc3NlZCBieQorICAgICAgICBDb2RlTWlycm9yQ29sb3JF
ZGl0aW5nQ29udHJvbGxlci4gVGhpcyBjbGFzcyBleHBvc2VzIHNldmVyYWwgaG9va3MgZm9yIHN1
YmNsYXNzZXMgdG8gY3VzdG9taXplIGl0cyBiZWhhdmlvcjoKKyAgICAgICAgCisgICAgICAgIC5p
bml0aWFsVmFsdWU6IGEgdmFsdWUgd2UgY2FuIHJldmVydCB0byBpZiB0aGUgZWRpdGluZyBpcyBj
YW5jZWxlZAorICAgICAgICAuY3NzQ2xhc3NOYW1lOiBhIENTUyBjbGFzcyBuYW1lIHRoYXQgY2Fu
IGJlIGFkZGVkIHRvIHRoZSBlZGl0aW5nIGNvbnRyb2xsZXIncyBjb250YWluZXIKKyAgICAgICAg
LnBvcG92ZXJQcmVmZXJyZWRFZGdlczogYSBsaXN0IG9mIHByZWZlcnJlZEVkZ2VzIGFzIHBhc3Nl
ZCB0byBQb3BvdmVyLnByb3RvdHlwZS5wcmVzZW50KCkgd2l0aCBhIHNlbnNpYmxlIGRlZmF1bHQK
KyAgICAgICAgLnBvcG92ZXJUYXJnZXRGcmFtZVdpdGhSZWN0czogYSB0YXJnZXRGcmFtZSBwYXNz
ZWQgdG8gUG9wb3Zlci5wcm90b3R5cGUucHJlc2VudCgpLCBkZWZhdWx0cyB0byBhIHVuaW9uIG9m
IHByb3ZpZGVkIHJlY3RzCisgICAgICAgIC5wb3BvdmVyV2lsbFByZXNlbnQ6IGNhbGxlZCBhcyB0
aGUgcG9wb3ZlciBpcyBhYm91dCB0byBiZSBwcmVzZW50ZWQsIHR5cGljYWxseSBvdmVycmlkZGVu
IHRvIHNldCB0aGUgcG9wb3ZlcidzIGNvbnRlbnQKKyAgICAgICAgLnBvcG92ZXJEaWRQcmVzZW50
OiBjYWxsZWQgYXMgdGhlIHBvcG92ZXIganVzdCB3YXMgcHJlc2VudGVkLCB0eXBpY2FsbHkgb3Zl
cnJpZGRlbiB3aGVuIGNvbnRlbnQgbmVlZHMgdG8gdHVuZWQgb25seSBhZnRlcgorICAgICAgICBi
ZWluZyBhZGRlZCB0byB0aGUgRE9NIGFuZCBzZXR0aW5nIG9mIHRoZSBuZWNlc3NhcnkgbWFjaGlu
ZXJ5IHRvIHVwZGF0ZSB0aGUgc2VyaWFsaXplZCB2YWx1ZSBpbiB0aGUgZWRpdG9yIGJhc2VkIG9u
IGludGVyYWN0aW9uCisgICAgICAgIHdpdGhpbiB0aGUgcG9wb3ZlciB3aXRob3V0IGNoYW5naW5n
IHRoZSBzZXJpYWxpemVkIHZhbHVlIHVwb24gc2hvd2luZyB0aGUgcG9wb3ZlciB0aGUgdmVyeSBm
aXJzdCB0aW1lLgorICAgICAgICAKKyAgICAgICAgQWRkaXRpb25hbGx5LCB0aGUgLnZhbHVlIHBy
b3BlcnR5IG11c3QgYmUgYW4gb2JqZWN0IHN1cHBvcnRpbmcgLnRvU3RyaW5nKCkgYW5kIC5jb3B5
KCkgbWV0aG9kLgorCisgICAgICAgIEZpbmFsbHksIHRoZSAuZWRpdGluZ0NvbnRyb2xsZXJEaWRT
dGFydEVkaXRpbmcoKSBhbmQgLmVkaXRpbmdDb250cm9sbGVyRGlkRmluaXNoRWRpdGluZygpIGRl
bGVnYXRlIG1ldGhvZHMgYXJlIGZpcmVkCisgICAgICAgIGFzIGVkaXRpbmcgYmVnaW5zIGFuZCBm
aW5pc2hlcy4gCisKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2RlTWlycm9yRWRpdGluZ0NvbnRy
b2xsZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JFZGl0aW5nQ29udHJvbGxl
ci5wcm90b3R5cGUuZ2V0IG1hcmtlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29kZU1pcnJv
ckVkaXRpbmdDb250cm9sbGVyLnByb3RvdHlwZS5nZXQgcmFuZ2UpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkNvZGVNaXJyb3JFZGl0aW5nQ29udHJvbGxlci5wcm90b3R5cGUuZ2V0IHZhbHVlKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2RlTWlycm9yRWRpdGluZ0NvbnRyb2xsZXIucHJvdG90
eXBlLnNldCB2YWx1ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29kZU1pcnJvckVkaXRpbmdD
b250cm9sbGVyLnByb3RvdHlwZS5nZXQgZGVsZWdhdGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkNvZGVNaXJyb3JFZGl0aW5nQ29udHJvbGxlci5wcm90b3R5cGUuc2V0IGRlbGVnYXRlKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5Db2RlTWlycm9yRWRpdGluZ0NvbnRyb2xsZXIucHJvdG90eXBl
LmdldCB0ZXh0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2RlTWlycm9yRWRpdGluZ0NvbnRy
b2xsZXIucHJvdG90eXBlLnNldCB0ZXh0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2RlTWly
cm9yRWRpdGluZ0NvbnRyb2xsZXIucHJvdG90eXBlLmdldCBpbml0aWFsVmFsdWUpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JFZGl0aW5nQ29udHJvbGxlci5wcm90b3R5cGUuZ2V0
IGNzc0NsYXNzTmFtZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29kZU1pcnJvckVkaXRpbmdD
b250cm9sbGVyLnByb3RvdHlwZS5nZXQgcG9wb3Zlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
Q29kZU1pcnJvckVkaXRpbmdDb250cm9sbGVyLnByb3RvdHlwZS5nZXQgcG9wb3ZlclByZWZlcnJl
ZEVkZ2VzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2RlTWlycm9yRWRpdGluZ0NvbnRyb2xs
ZXIucHJvdG90eXBlLnBvcG92ZXJUYXJnZXRGcmFtZVdpdGhSZWN0cyk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuQ29kZU1pcnJvckVkaXRpbmdDb250cm9sbGVyLnByb3RvdHlwZS5wcmVzZW50SG92
ZXJNZW51KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2RlTWlycm9yRWRpdGluZ0NvbnRyb2xs
ZXIucHJvdG90eXBlLmRpc21pc3NIb3Zlck1lbnUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNv
ZGVNaXJyb3JFZGl0aW5nQ29udHJvbGxlci5wcm90b3R5cGUucG9wb3ZlcldpbGxQcmVzZW50KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2RlTWlycm9yRWRpdGluZ0NvbnRyb2xsZXIucHJvdG90
eXBlLnBvcG92ZXJEaWRQcmVzZW50KToKKworICAgICAgICAoV2ViSW5zcGVjdG9yLkNvZGVNaXJy
b3JFZGl0aW5nQ29udHJvbGxlci5wcm90b3R5cGUuaGFuZGxlS2V5ZG93bkV2ZW50KToKKyAgICAg
ICAgRXZlbnQgaGFuZGxlciBmb3Iga2V5ZG93biBldmVudHMgYXMgcmVnaXN0ZXJlZCB2aWEgdGhl
IG5ldyBXZWJJbnNwZWN0b3IuYWRkV2luZG93S2V5ZG93bkxpc3RlbmVyKCkgbWV0aG9kLgorCisg
ICAgICAgIChXZWJJbnNwZWN0b3IuQ29kZU1pcnJvckVkaXRpbmdDb250cm9sbGVyLnByb3RvdHlw
ZS5ob3Zlck1lbnVCdXR0b25XYXNQcmVzc2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2Rl
TWlycm9yRWRpdGluZ0NvbnRyb2xsZXIucHJvdG90eXBlLmRpZERpc21pc3NQb3BvdmVyKToKKwor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvR2VvbWV0cnkuanM6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuUmVjdC51bmlvbk9mUmVjdHMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlY3QucHJvdG90
eXBlLnVuaW9uV2l0aFJlY3QpOgorICAgICAgICBOZXcgdXRpbGl0aWVzIHRvIGdldCBhIFJlY3Qg
dGhhdCBpcyB0aGUgdW5pb24gb2YgdGhlIHByb3ZpZGVkIFJlY3Qgb3IgYXJyYXkgb2YgUmVjdHMu
CisKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qb2x5Z29uKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5Qb2x5Z29uLnByb3RvdHlwZS5ib3VuZHMpOgorICAgICAgICBOZXcgY2xhc3MgdXNlZCB0byBz
dG9yZSBhIGxpc3Qgb2YgcG9pbnRzIGZvciBhIHBvbHlnb24gYW5kIGdldCBpdHMgYm91bmRzLCB1
c2VkIGJ5IHRoZSBIb3Zlck1lbnUgY2xhc3MuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0hv
dmVyTWVudS5jc3M6CisgICAgICAgICguaG92ZXItbWVudSk6CisgICAgICAgICguaG92ZXItbWVu
dSA+IHN2Zyk6CisgICAgICAgICguaG92ZXItbWVudSA+IHN2ZyA+IHJlY3QpOgorICAgICAgICAo
LmhvdmVyLW1lbnUgPiBpbWcpOgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Ib3Zlck1lbnUu
anM6CisgICAgICAgIFdlIHJlbW92ZSB0aGUgYXNzdW1wdGlvbiB0aGF0IGEgSG92ZXJNZW51IGlz
IG9ubHkgdXNlZCB0byBkcmF3IGEgc2luZ2xlIHJvdW5kZWQgcmVjdCBiYXNlZCBvbiBhIHNpbXBs
ZQorICAgICAgICBSZWN0IGFuZCBpbnN0ZWFkIHN1cHBvcnQgcHJlc2VudGF0aW9uIGJhc2VkIG9u
IGFuIGFycmF5IG9mIFJlY3RzIHdoZXJlIHdlIGVpdGhlcjoKKyAgICAgICAgCisgICAgICAgIC0g
ZHJhdyBhIHNpbmdsZSByb3VuZGVkIHJlY3RhbmdsZSBpZiB0aGVyZSBpcyBvbmx5IGEgc2luZ2xl
IFJlY3QgcHJvdmlkZWQKKyAgICAgICAgLSBkcmF3IHR3byBkaXNjb25uZWN0ZWQgb3Blbi1lbmRl
ZCByZWN0cyBpZiB3ZSdyZSBwcm92aWRlZCB3aXRoIHR3byBub24tb3ZlcmxhcHBpbmcgUmVjdHMK
KyAgICAgICAgLSBkcmF3IGEgcG9seWdvbiBzdXJyb3VuZGluZyBhbGwgcHJvdmlkZWQgUmVjdHMg
aW4gYWxsIG90aGVyIGNhc2VzCisKKyAgICAgICAgTm8gbWF0dGVyIGhvdyB0aGUgSG92ZXJNZW51
IGlzIGRyYXduLCB0aGUgZHJhd2luZyBpcyBwZXJmb3JtZWQgaW4gU1ZHIHdpdGggZWl0aGVyIDxy
ZWN0PiBvciBhIDxwYXRoPiBlbGVtZW50cy4KKworICAgICAgICAoV2ViSW5zcGVjdG9yLkhvdmVy
TWVudSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSG92ZXJNZW51LnByb3RvdHlwZS5wcmVzZW50
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Ib3Zlck1lbnUucHJvdG90eXBlLmRpc21pc3MpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkhvdmVyTWVudS5wcm90b3R5cGUuaGFuZGxlRXZlbnQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkhvdmVyTWVudS5wcm90b3R5cGUuX2hhbmRsZUNsaWNrRXZl
bnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhvdmVyTWVudS5wcm90b3R5cGUuX2RyYXdPdXRs
aW5lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Ib3Zlck1lbnUucHJvdG90eXBlLl9hZGRSZWN0
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Ib3Zlck1lbnUucHJvdG90eXBlLl9hZGRQYXRoKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5Ib3Zlck1lbnUucHJvdG90eXBlLl9kcmF3U2luZ2xlTGlu
ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSG92ZXJNZW51LnByb3RvdHlwZS5fZHJhd1R3b05v
bk92ZXJsYXBwaW5nTGluZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhvdmVyTWVudS5wcm90
b3R5cGUuX2RyYXdPdmVybGFwcGluZ0xpbmVzKToKKworICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
TWFpbi5odG1sOgorICAgICAgICBMaW5rIHRvIHRoZSBuZXcgQ29kZU1pcnJvckVkaXRpbmdDb250
cm9sbGVyIGNsYXNzLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9NYWluLmpzOgorICAgICAg
ICBFeHBvc2UgYSBuZXcgbWVjaGFuaXNtIHRvIGRlYWwgd2l0aCB3aW5kb3ctbGV2ZWwgaGFuZGxp
bmcgb2Yga2V5ZG93biBldmVudHMgaW4gb3JkZXIgdG8gYWxsb3cKKyAgICAgICAgYSBsaXN0IG9m
IGhhbmRsZXJzIHRvIGFjY2VwdCBvciByZWplY3QgZGVhbGluZyB3aXRoIHRoZSBwcm92aWRlZCBr
ZXlkb3duIGV2ZW50IGJhc2VkIG9uIHRoZSBvcmRlcgorICAgICAgICB0aGV5IHdlcmUgcmVnaXN0
ZXJlZCwgaW4gbW9zdCByZWNlbnQgdG8gb2xkZXN0IHJlZ2lzdGVyZWQgaGFuZGxlci4gVGhpcyBh
bGxvd3MsIGZvciBpbnN0YW5jZSwgZm9yCisgICAgICAgIGEgbW9yZSBncmFjZWZ1bCBoYW5kbGlu
ZyBvZiB0aGUgRXNjLiBrZXkgYmVpbmcgcHJlc3NlZCBpbiB0aGUgQ29kZU1pcnJvckVkaXRpbmdD
b250cm9sbGVyIGFuZAorICAgICAgICBieXBhc3NlcyB0aGUgRE9NIHN0cnVjdHVyZSBhbGxvd2lu
ZyBmb3Igb2JqZWN0cyBtYW5hZ2luZyBlbGVtZW50cyBpbiBkaWZmZXJlbnQgRE9NIGhpZXJhcmNo
aWVzCisgICAgICAgIHRvIGNvbXBldGUgd2l0aCBoYW5kbGluZyBvZiBrZXlkb3duIGV2ZW50cy4K
KworICAgICAgICAoV2ViSW5zcGVjdG9yLmxvYWRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
YWRkV2luZG93S2V5ZG93bkxpc3RlbmVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5yZW1vdmVX
aW5kb3dLZXlkb3duTGlzdGVuZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLl91cGRhdGVXaW5k
b3dLZXlkb3duTGlzdGVuZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLl9zaGFyZWRXaW5kb3dL
ZXlkb3duTGlzdGVuZXIpOgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Tb3VyY2VDb2RlVGV4
dEVkaXRvci5jc3M6CisgICAgICAgICguaG92ZXItbWVudS5jb2xvciA+IGltZyk6CisgICAgICAg
IFVwZGF0ZSB0aGUgb2Zmc2V0IGFwcGxpZWQgdG8gYSBIb3Zlck1lbnUgYnV0dG9uIGJhc2VkIG9u
IHRoZSBjaGFuZ2Ugb2YgbGF5b3V0IGZvciBzdWNoIGJ1dHRvbnMgd2hpY2gKKyAgICAgICAgYXJl
IG5vdyBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQgaW4gY29kZSBieSBIb3Zlck1lbnUgcmF0aGVyIHRo
YW4gYmVpbmcgbGFpZCBvdXQgdXNpbmcgdGhlIGZsZXgtYm94IG1vZGVsLgorCisgICAgICAgICog
VXNlckludGVyZmFjZS9Tb3VyY2VDb2RlVGV4dEVkaXRvci5qczoKKyAgICAgICAgQWJzdHJjdCBh
d2F5IHRoZSBhc3N1bXB0aW9uIHRoYXQgb25seSBhIGNvbG9yIGVkaXRpbmcgY29udHJvbGxlciBt
YXkgYmUgdXNlZCB0byBlZGl0IHRleHQgbWFya2VycyBpbgorICAgICAgICBhIHNvdXJjZSBjb2Rl
IHRleHQgZWRpdG9yLgorCisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0
b3IucHJvdG90eXBlLmhpZGRlbik6CisgICAgICAgIEVuc3VyZSB3ZSByZW1vdmUgYW55IGN1cnJl
bnRseS1kaXNwbGF5ZWQgaG92ZXIgbWVudSBmb3IgYW4gZWRpdGluZyBjb250cm9sbGVyIHdoZW4g
dGhlIGVkaXRvciBpcyBoaWRkZW4uCisgICAgICAgIFRoaXMgd291bGQgaGFwcGVuIGluIHRoZSBz
aXR1YXRpb24gd2hlcmUgYSBrZXlib2FyZCBzaG9ydGN1dCB3YXMgdXNlZCB0byBqdW1wIHRvIGFu
b3RoZXIgcGFydCBvZiB0aGUKKyAgICAgICAgV2ViIEluc3BlY3RvciBVSSB3aXRob3V0IHVzaW5n
IHRoZSBtb3VzZS4KKworICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9y
LnByb3RvdHlwZS5jb250ZW50RGlkQ2hhbmdlKToKKyAgICAgICAgU2luY2Ugd2UncmUgbm93IHdv
cmtpbmcgd2l0aCB0ZXh0IHJhbmdlcyByYXRoZXIgdGhhbiBsaW5lcywgcmVtb3ZlIHRoZSBjb2Rl
IHdoZXJlIHdlJ2Qgd29yayBvdXQgYSBzZXQgb2YKKyAgICAgICAgY2hhbmdlZCBsaW5lcyBhbmQg
Y2FsbCAuX3VwZGF0ZUVkaXRhYmxlTWFya2VycygpIHdpdGggdGhlIGNoYW5nZWQgcmFuZ2UgZGly
ZWN0bHkgaW5zdGVhZC4KKworICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRp
dG9yLnByb3RvdHlwZS5fY29udGVudERpZFBvcHVsYXRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUudG9rZW5UcmFja2luZ0NvbnRyb2xsZXJO
ZXdIaWdobGlnaHRDYW5kaWRhdGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVU
ZXh0RWRpdG9yLnByb3RvdHlwZS50b2tlblRyYWNraW5nQ29udHJvbGxlck1vdXNlT3V0T2ZIb3Zl
cmVkTWFya2VyKToKKyAgICAgICAgQWRvcHQgdGhlIG1vcmUgZ2VuZXJpYyBtZXRob2QgbmFtZXMg
cmF0aGVyIHRoYW4gY29sb3Itc3BlY2lmaWMgb25lcy4KKworICAgICAgICAoV2ViSW5zcGVjdG9y
LlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZS5fc2hvd1BvcG92ZXIpOgorICAgICAgICBX
aGVuIHNob3dpbmcgdGhlIHBvcG92ZXIgb3V0c2lkZSBvZiB0aGUgdXNlIG9mIGEgQ29kZU1pcnJv
ckVkaXRpbmdDb250cm9sbGVyLCBzdWNoIGFzIGEgSmF2YVNjcmlwdCBleHByZXNzaW9uCisgICAg
ICAgIHdoZW4gZGVidWdnaW5nLCBhbHNvIGRlYWwgd2l0aCB0aGUgcG9zc2liaWxpdHkgb2YgdGhl
IGhpZ2hsaWdodGVkIHJhbmdlIGNvbnRhaW5pbmcgbXVsdGlwbGUgbGluZXMgcmF0aGVyCisgICAg
ICAgIHRoYW4gYXNzdW1lIGEgc2luZ2xlIGxpbmUuCisKKyAgICAgICAgKFdlYkluc3BlY3Rvci5T
b3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUuX3VwZGF0ZUVkaXRhYmxlTWFya2Vycyk6Cisg
ICAgICAgIE1vcmUgZ2VuZXJpYyBtZXRob2QgbmFtZSB0byBzdXBwb3J0IGZ1dHVyZSwgbm9uLWNv
bG9yIGVkaXRpbmcgY29udHJvbGxlcnMuCisKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VD
b2RlVGV4dEVkaXRvci5wcm90b3R5cGUuX3Rva2VuVHJhY2tpbmdDb250cm9sbGVySGlnaGxpZ2h0
ZWRNYXJrZWRFeHByZXNzaW9uKToKKyAgICAgICAgRmluZCB0aGUgb3V0ZXJtb3N0IG1hcmtlciBp
biB0aGUgbGlzdCBvZiBtYXJrZXJzIHByb3ZpZGVkIHN1Y2ggdGhhdCBhIG1hcmtlciBjb250YWlu
aW5nIG90aGVyIG1hcmtlcnMKKyAgICAgICAgc2hvd3MgdGhlIFVJIGZvciB0aGUgY29udGFpbmlu
ZyBtYXJrZXIuIEZvciBpbnN0YW5jZSwgYSBncmFkaWVudCBtYXJrZXIgd291bGQgY29udGFpbiBz
ZXZlcmFsIGNvbG9yCisgICAgICAgIG1hcmtlcnMgYW5kIGl0J3MgcHJlZmVyYWJsZSB0byBzaG93
IHRoZSBlZGl0aW5nIFVJIGZvciB0aGUgd2hvbGUgZ3JhZGllbnQgcmF0aGVyIHRoYW4gYSBzcGVj
aWZpYyBjb2xvci4KKworICAgICAgICBBZGRpdGlvbmFsbHksIGFkb3B0IG1vcmUgZ2VuZXJpYyBp
dmFycyBhbmQgbWV0aG9kIG5hbWVzIHRvIHN1cHBvcnQgZnV0dXJlLCBub24tY29sb3IgZWRpdGlu
ZyBjb250cm9sbGVycy4KKworICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRp
dG9yLnByb3RvdHlwZS5fZGlzbWlzc0VkaXRpbmdDb250cm9sbGVyKToKKyAgICAgICAgU3VwcG9y
dCBmb3IgbmV3IHBhcmFtZXRlciBpbnN0cnVjdGluZyB0aGF0IHRoZSBlZGl0aW5nIGNvbnRyb2xs
ZXIgZGlzbWlzc2FsIHNob3VsZCBiZSBpbnN0YW50IHJhdGhlciB0aGFuCisgICAgICAgIGFuaW1h
dGVkLCB3aGljaCBpcyB0aGUgZGVmYXVsdC4gVGhpcyBpcyB1c2VmdWwgd2hlbiwgZm9yIGluc3Rh
bmNlLCB0aGUgdGV4dCBlZGl0b3IgaXMgY2xlYXJlZC4KKworICAgICAgICAoV2ViSW5zcGVjdG9y
LlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZS5lZGl0aW5nQ29udHJvbGxlckRpZFN0YXJ0
RWRpdGluZyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IucHJv
dG90eXBlLmVkaXRpbmdDb250cm9sbGVyRGlkRmluaXNoRWRpdGluZyk6CisgICAgICAgIEFkb3B0
IHRoZSBtb3JlIGdlbmVyaWMgbWV0aG9kIG5hbWVzIHJhdGhlciB0aGFuIGNvbG9yLXNwZWNpZmlj
IG9uZXMuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1RleHRFZGl0b3IuanM6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuVGV4dEVkaXRvci5wcm90b3R5cGUucmVjdHNGb3JSYW5nZSk6CisgICAg
ICAgIFJlbW92ZSAuYm91bmRzRm9yUmFuZ2UoKSBpbiBmYXZvciBvZiB0aGlzIG5ldyBtZXRob2Qg
d2hlcmUgd2UgcmV0dXJuIGEgc2VyaWVzIG9mIHJlY3RzIHNvIHRoYXQgd2UgbWF5CisgICAgICAg
IGRyYXcgYSBtb3JlIHBsZWFzaW5nIEhvdmVyTWVudS4KKworICAgICAgICAoV2ViSW5zcGVjdG9y
LlRleHRFZGl0b3IucHJvdG90eXBlLmNyZWF0ZUNvbG9yTWFya2Vycyk6CisgICAgICAgIFVzZSBh
IFRleHRSYW5nZXIgcmF0aGVyIHRoYW4gYSBzaW5nbGUgbGluZSBudW1iZXIgdG8gbWF0Y2ggdGhl
IHVuZGVybHlpbmcgQ29kZU1pcnJvciBleHRlbnNpb24gbWV0aG9kLgorCisgICAgICAgIChXZWJJ
bnNwZWN0b3IuVGV4dEVkaXRvci5wcm90b3R5cGUuZWRpdGluZ0NvbnRyb2xsZXJGb3JNYXJrZXIp
OgorICAgICAgICBVc2UgdGhlIHByb3ZpZGVkIFRleHRNYXJrZXIncyB0eXBlIHRvIHByb3ZpZGUg
dGhlIG1vc3QgYWRlcXVhdGUgQ29kZU1pcnJvckVkaXRpbmdDb250cm9sbGVyIGNsYXNzLgorCisg
ICAgICAgICogVXNlckludGVyZmFjZS9UZXh0TWFya2VyLmpzOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlRleHRNYXJrZXIucHJvdG90eXBlLmdldCByZWN0cyk6CisgICAgICAgIFJlbW92ZSB0aGUg
LmJvdW5kcyBwcm9wZXJ0eSBpbiBmYXZvciBvZiAucmVjdHMgdG8gbWF0Y2ggdGhlIHVuZGVybHlp
bmcgQ29kZU1pcnJvciBleHRlbnNpb24gbWV0aG9kLgorCiAyMDE0LTAyLTE4ICBKYW1lcyBDcmFp
ZyAgPGpjcmFpZ0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogQVg6IG1vcmUg
cHJvcGVydGllczogZXhpc3RzLCByZXF1aXJlZCwgYW5kIGludmFsaWQgKGV4aXN0cyB3YXMgcHJl
dmlvdXNseSBjb21iaW5lZCB3aXRoIGlnbm9yZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NTU1N0eWxlRGVjbGFyYXRpb25U
ZXh0RWRpdG9yLmpzCmluZGV4IDU5MTJjMzZhZDE5NDY2MTBmYmFlNzRjNTQwNDM0Njk1NzMzNjkx
OTYuLjhmMTYyYTkxMTRjMjQ4YWU3YjJmMWZiYWMyMDlhOTNlMDM5MGRlMTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NTU1N0eWxlRGVjbGFyYXRpb25U
ZXh0RWRpdG9yLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NT
U1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yLmpzCkBAIC0zOTAsOCArMzkwLDEwIEBAIFdlYklu
c3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5wcm90b3R5cGUgPSB7CiAgICAg
ewogICAgICAgICBmdW5jdGlvbiB1cGRhdGUoKQogICAgICAgICB7CisgICAgICAgICAgICB2YXIg
cmFuZ2UgPSB0eXBlb2YgbGluZU51bWJlciA9PT0gIm51bWJlciIgPyBuZXcgV2ViSW5zcGVjdG9y
LlRleHRSYW5nZShsaW5lTnVtYmVyLCAwLCBsaW5lTnVtYmVyICsgMSwgMCkgOiBudWxsOworCiAg
ICAgICAgICAgICAvLyBMb29rIGZvciBjb2xvciBzdHJpbmdzIGFuZCBhZGQgc3dhdGNoZXMgaW4g
ZnJvbnQgb2YgdGhlbS4KLSAgICAgICAgICAgIHRoaXMuX2NvZGVNaXJyb3IuY3JlYXRlQ29sb3JN
YXJrZXJzKGxpbmVOdW1iZXIsIGZ1bmN0aW9uKG1hcmtlciwgY29sb3IsIGNvbG9yU3RyaW5nKSB7
CisgICAgICAgICAgICB0aGlzLl9jb2RlTWlycm9yLmNyZWF0ZUNvbG9yTWFya2VycyhyYW5nZSwg
ZnVuY3Rpb24obWFya2VyLCBjb2xvciwgY29sb3JTdHJpbmcpIHsKICAgICAgICAgICAgICAgICB2
YXIgc3dhdGNoRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKICAgICAg
ICAgICAgICAgICBzd2F0Y2hFbGVtZW50LnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJD
bGljayB0byBvcGVuIGEgY29sb3JwaWNrZXIuIFNoaWZ0LWNsaWNrIHRvIGNoYW5nZSBjb2xvciBm
b3JtYXQuIik7CiAgICAgICAgICAgICAgICAgc3dhdGNoRWxlbWVudC5jbGFzc05hbWUgPSBXZWJJ
bnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IuQ29sb3JTd2F0Y2hFbGVtZW50
U3R5bGVDbGFzc05hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Db2RlTWlycm9yQWRkaXRpb25zLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvQ29kZU1pcnJvckFkZGl0aW9ucy5qcwppbmRleCA3Mjc2YjkyNWJmM2RjNDM0
OGU1OGQxYmRkMzUxMDNiOTYzNmRlMDVkLi40ODM0YzVjMTJlODJhYjQyZmI5ZmIzNzgyZDRlOWRh
Y2RkZWU1MTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Db2RlTWlycm9yQWRkaXRpb25zLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL0NvZGVNaXJyb3JBZGRpdGlvbnMuanMKQEAgLTQxOCwxNyArNDE4LDUwIEBACiAg
ICAgICAgICAgICByZXR1cm4gQ29kZU1pcnJvci5QYXNzOwogICAgIH0KIAotICAgIENvZGVNaXJy
b3IuZGVmaW5lRXh0ZW5zaW9uKCJib3VuZHNGb3JSYW5nZSIsIGZ1bmN0aW9uKHJhbmdlKSB7Ci0g
ICAgICAgIHZhciBmaXJzdENoYXJDb29yZHMgPSB0aGlzLmN1cnNvckNvb3JkcyhyYW5nZS5zdGFy
dCk7Ci0gICAgICAgIHZhciBsYXN0Q2hhckNvb3JkcyA9IHRoaXMuY3Vyc29yQ29vcmRzKHJhbmdl
LmVuZCk7Ci0gICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlJlY3QoZmlyc3RDaGFyQ29v
cmRzLmxlZnQsIGZpcnN0Q2hhckNvb3Jkcy50b3AsIGxhc3RDaGFyQ29vcmRzLnJpZ2h0IC0gZmly
c3RDaGFyQ29vcmRzLmxlZnQsIGZpcnN0Q2hhckNvb3Jkcy5ib3R0b20gLSBmaXJzdENoYXJDb29y
ZHMudG9wKTsKKyAgICBDb2RlTWlycm9yLmRlZmluZUV4dGVuc2lvbigicmVjdHNGb3JSYW5nZSIs
IGZ1bmN0aW9uKHJhbmdlKSB7CisgICAgICAgIHZhciBsaW5lUmVjdHMgPSBbXTsKKworICAgICAg
ICBmb3IgKHZhciBsaW5lID0gcmFuZ2Uuc3RhcnQubGluZTsgbGluZSA8PSByYW5nZS5lbmQubGlu
ZTsgKytsaW5lKSB7CisgICAgICAgICAgICB2YXIgbGluZUNvbnRlbnQgPSB0aGlzLmdldExpbmUo
bGluZSk7CisKKyAgICAgICAgICAgIHZhciBzdGFydENoYXIgPSBsaW5lID09PSByYW5nZS5zdGFy
dC5saW5lID8gcmFuZ2Uuc3RhcnQuY2ggOiAobGluZUNvbnRlbnQubGVuZ3RoIC0gbGluZUNvbnRl
bnQudHJpbUxlZnQoKS5sZW5ndGgpOworICAgICAgICAgICAgdmFyIGVuZENoYXIgPSBsaW5lID09
PSByYW5nZS5lbmQubGluZSA/IHJhbmdlLmVuZC5jaCA6IGxpbmVDb250ZW50Lmxlbmd0aDsKKyAg
ICAgICAgICAgIHZhciBmaXJzdENoYXJDb29yZHMgPSB0aGlzLmN1cnNvckNvb3Jkcyh7Y2g6IHN0
YXJ0Q2hhciwgbGluZTogbGluZX0pOworICAgICAgICAgICAgdmFyIGVuZENoYXJDb29yZHMgPSB0
aGlzLmN1cnNvckNvb3Jkcyh7Y2g6IGVuZENoYXIsIGxpbmU6IGxpbmV9KTsKKworICAgICAgICAg
ICAgLy8gSGFuZGxlIGxpbmUgd3JhcHBpbmcuCisgICAgICAgICAgICBpZiAoZmlyc3RDaGFyQ29v
cmRzLmJvdHRvbSAhPT0gZW5kQ2hhckNvb3Jkcy5ib3R0b20pIHsKKyAgICAgICAgICAgICAgICB2
YXIgbWF4WSA9IC1OdW1iZXIuTUFYX1ZBTFVFOworICAgICAgICAgICAgICAgIGZvciAodmFyIGNo
ID0gc3RhcnRDaGFyOyBjaCA8PSBlbmRDaGFyOyArK2NoKSB7CisgICAgICAgICAgICAgICAgICAg
IHZhciBjb29yZHMgPSB0aGlzLmN1cnNvckNvb3Jkcyh7Y2g6IGNoLCBsaW5lOiBsaW5lfSk7Cisg
ICAgICAgICAgICAgICAgICAgIGlmIChjb29yZHMuYm90dG9tID4gbWF4WSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKGNoID4gc3RhcnRDaGFyKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdmFyIG1heFggPSBNYXRoLmNlaWwodGhpcy5jdXJzb3JDb29yZHMoe2NoOiBjaCAt
IDEsIGxpbmU6IGxpbmV9KS5yaWdodCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlu
ZVJlY3RzLnB1c2gobmV3IFdlYkluc3BlY3Rvci5SZWN0KG1pblgsIG1pblksIG1heFggLSBtaW5Y
LCBtYXhZIC0gbWluWSkpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgICAgICAgdmFyIG1pblggPSBNYXRoLmZsb29yKGNvb3Jkcy5sZWZ0KTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHZhciBtaW5ZID0gTWF0aC5mbG9vcihjb29yZHMudG9wKQorICAgICAg
ICAgICAgICAgICAgICAgICAgbWF4WSA9IE1hdGguY2VpbChjb29yZHMuYm90dG9tKTsKKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBtYXhY
ID0gTWF0aC5jZWlsKGNvb3Jkcy5yaWdodCk7CisgICAgICAgICAgICAgICAgbGluZVJlY3RzLnB1
c2gobmV3IFdlYkluc3BlY3Rvci5SZWN0KG1pblgsIG1pblksIG1heFggLSBtaW5YLCBtYXhZIC0g
bWluWSkpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB2YXIgbWluWCA9
IE1hdGguZmxvb3IoZmlyc3RDaGFyQ29vcmRzLmxlZnQpOworICAgICAgICAgICAgICAgIHZhciBt
aW5ZID0gTWF0aC5mbG9vcihmaXJzdENoYXJDb29yZHMudG9wKTsKKyAgICAgICAgICAgICAgICB2
YXIgbWF4WCA9IE1hdGguY2VpbChlbmRDaGFyQ29vcmRzLnJpZ2h0KTsKKyAgICAgICAgICAgICAg
ICB2YXIgbWF4WSA9IE1hdGguY2VpbChlbmRDaGFyQ29vcmRzLmJvdHRvbSk7CisgICAgICAgICAg
ICAgICAgbGluZVJlY3RzLnB1c2gobmV3IFdlYkluc3BlY3Rvci5SZWN0KG1pblgsIG1pblksIG1h
eFggLSBtaW5YLCBtYXhZIC0gbWluWSkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICAgIHJldHVybiBsaW5lUmVjdHM7CiAgICAgfSk7CiAKLSAgICBDb2RlTWlycm9yLmRlZmluZUV4
dGVuc2lvbigiY3JlYXRlQ29sb3JNYXJrZXJzIiwgZnVuY3Rpb24obGluZU51bWJlciwgY2FsbGJh
Y2spIHsKKyAgICBDb2RlTWlycm9yLmRlZmluZUV4dGVuc2lvbigiY3JlYXRlQ29sb3JNYXJrZXJz
IiwgZnVuY3Rpb24ocmFuZ2UsIGNhbGxiYWNrKSB7CiAgICAgICAgIHZhciBjcmVhdGVkTWFya2Vy
cyA9IFtdOwogCi0gICAgICAgIHZhciBzdGFydCA9IHR5cGVvZiBsaW5lTnVtYmVyID09PSAibnVt
YmVyIiA/IGxpbmVOdW1iZXIgOiAwOwotICAgICAgICB2YXIgZW5kID0gdHlwZW9mIGxpbmVOdW1i
ZXIgPT09ICJudW1iZXIiID8gbGluZU51bWJlciArIDEgOiB0aGlzLmxpbmVDb3VudCgpOworICAg
ICAgICB2YXIgc3RhcnQgPSByYW5nZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5UZXh0UmFuZ2Ug
PyByYW5nZS5zdGFydExpbmUgOiAwOworICAgICAgICB2YXIgZW5kID0gcmFuZ2UgaW5zdGFuY2Vv
ZiBXZWJJbnNwZWN0b3IuVGV4dFJhbmdlID8gcmFuZ2UuZW5kTGluZSArIDEgOiB0aGlzLmxpbmVD
b3VudCgpOwogCiAgICAgICAgIC8vIE1hdGNoZXMgcmdiYSgwLCAwLCAwLCAwLjUpLCByZ2IoMCwg
MCwgMCksIGhzbCgpLCBoc2xhKCksICNmZmYsICNmZmZmZmYsIHdoaXRlCiAgICAgICAgIGNvbnN0
IGNvbG9yUmVnZXggPSAvKCg/OnJnYnxoc2wpYT9cKFteKV0rXCl8I1swLTlhLWZBLUZdezZ9fCNb
MC05YS1mQS1GXXszfXxcYlx3K1xiKD8hWy0uXSkpL2c7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db2RlTWlycm9yQ29sb3JFZGl0aW5nQ29udHJvbGxl
ci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvZGVNaXJyb3JDb2xv
ckVkaXRpbmdDb250cm9sbGVyLmpzCmluZGV4IGJkMjQyYTBhN2MzNjg1OGJmZGExMmExNTUxYmNi
NWJlMTE0MGE0MGUuLmUwYzJlOGE0NWJkZmZkNmYxZThmMzNjZjliNDdjOWVhZWRiY2YwMTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvZGVNaXJyb3JD
b2xvckVkaXRpbmdDb250cm9sbGVyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL0NvZGVNaXJyb3JDb2xvckVkaXRpbmdDb250cm9sbGVyLmpzCkBAIC0yNSwxMzcg
KzI1LDQxIEBACiAKIFdlYkluc3BlY3Rvci5Db2RlTWlycm9yQ29sb3JFZGl0aW5nQ29udHJvbGxl
ciA9IGZ1bmN0aW9uKGNvZGVNaXJyb3IsIG1hcmtlcikKIHsKLSAgICBXZWJJbnNwZWN0b3IuT2Jq
ZWN0LmNhbGwodGhpcyk7Ci0KLSAgICB0aGlzLl9jb2RlTWlycm9yID0gY29kZU1pcnJvcjsKLSAg
ICB0aGlzLl9tYXJrZXIgPSBtYXJrZXI7Ci0gICAgdGhpcy5fZGVsZWdhdGUgPSBudWxsOwotCi0g
ICAgdGhpcy5fcmFuZ2UgPSBtYXJrZXIucmFuZ2U7Ci0gICAgdGhpcy5fY29sb3IgPSBXZWJJbnNw
ZWN0b3IuQ29sb3IuZnJvbVN0cmluZyh0aGlzLnRleHQpOwotCi0gICAgdGhpcy5fa2V5Ym9hcmRT
aG9ydGN1dEVzYyA9IG5ldyBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dChudWxsLCBXZWJJ
bnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5LZXkuRXNjYXBlKTsKKyAgICBXZWJJbnNwZWN0b3Iu
Q29kZU1pcnJvckVkaXRpbmdDb250cm9sbGVyLmNhbGwodGhpcywgY29kZU1pcnJvciwgbWFya2Vy
KTsKIH0KIAogV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JDb2xvckVkaXRpbmdDb250cm9sbGVyLnBy
b3RvdHlwZSA9IHsKICAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JDb2xv
ckVkaXRpbmdDb250cm9sbGVyLAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLk9iamVjdC5w
cm90b3R5cGUsCisgICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuQ29kZU1pcnJvckVkaXRpbmdD
b250cm9sbGVyLnByb3RvdHlwZSwKICAgICAKICAgICAvLyBQdWJsaWMKLSAgICAKLSAgICBnZXQg
bWFya2VyKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9tYXJrZXI7Ci0gICAgfSwKLSAg
ICAKLSAgICBnZXQgcmFuZ2UoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3JhbmdlOwot
ICAgIH0sCiAKLSAgICBnZXQgY29sb3IoKQorICAgIGdldCBpbml0aWFsVmFsdWUoKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIHRoaXMuX2NvbG9yOwotICAgIH0sCi0gICAgCi0gICAgc2V0IGNvbG9y
KGNvbG9yKQotICAgIHsKLSAgICAgICAgdGhpcy50ZXh0ID0gY29sb3IudG9TdHJpbmcoKTsKLSAg
ICAgICAgdGhpcy5fY29sb3IgPSBjb2xvcjsKKyAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5D
b2xvci5mcm9tU3RyaW5nKHRoaXMudGV4dCk7CiAgICAgfSwKIAotICAgIGdldCBkZWxlZ2F0ZSgp
CisgICAgZ2V0IGNzc0NsYXNzTmFtZSgpCiAgICAgewotICAgICAgICByZXR1cm4gdGhpcy5fZGVs
ZWdhdGU7CisgICAgICAgIHJldHVybiAiY29sb3IiOwogICAgIH0sCiAKLSAgICBzZXQgZGVsZWdh
dGUoZGVsZWdhdGUpCisgICAgcG9wb3ZlcldpbGxQcmVzZW50OiBmdW5jdGlvbihwb3BvdmVyKQog
ICAgIHsKLSAgICAgICAgdGhpcy5fZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAgdGhpcy5f
Y29sb3JQaWNrZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbG9yUGlja2VyOworICAgICAgICB0aGlz
Ll9jb2xvclBpY2tlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Db2xvclBpY2tlci5F
dmVudC5Db2xvckNoYW5nZWQsIHRoaXMuX2NvbG9yUGlja2VyQ29sb3JDaGFuZ2VkLCB0aGlzKTsK
KyAgICAgICAgcG9wb3Zlci5jb250ZW50ID0gdGhpcy5fY29sb3JQaWNrZXIuZWxlbWVudDsKICAg
ICB9LAogCi0gICAgZ2V0IHRleHQoKQotICAgIHsKLSAgICAgICAgdmFyIGZyb20gPSB7bGluZTog
dGhpcy5fcmFuZ2Uuc3RhcnRMaW5lLCBjaDogdGhpcy5fcmFuZ2Uuc3RhcnRDb2x1bW59OwotICAg
ICAgICB2YXIgdG8gPSB7bGluZTogdGhpcy5fcmFuZ2UuZW5kTGluZSwgY2g6IHRoaXMuX3Jhbmdl
LmVuZENvbHVtbn07Ci0gICAgICAgIHJldHVybiB0aGlzLl9jb2RlTWlycm9yLmdldFJhbmdlKGZy
b20sIHRvKTsKLSAgICB9LAotICAgIAotICAgIHNldCB0ZXh0KHRleHQpCi0gICAgewotICAgICAg
ICB2YXIgZnJvbSA9IHtsaW5lOiB0aGlzLl9yYW5nZS5zdGFydExpbmUsIGNoOiB0aGlzLl9yYW5n
ZS5zdGFydENvbHVtbn07Ci0gICAgICAgIHZhciB0byA9IHtsaW5lOiB0aGlzLl9yYW5nZS5lbmRM
aW5lLCBjaDogdGhpcy5fcmFuZ2UuZW5kQ29sdW1ufTsKLSAgICAgICAgdGhpcy5fY29kZU1pcnJv
ci5yZXBsYWNlUmFuZ2UodGV4dCwgZnJvbSwgdG8pOwotCi0gICAgICAgIHZhciBsaW5lcyA9IHRl
eHQuc3BsaXQoIlxuIik7Ci0gICAgICAgIHZhciBlbmRMaW5lID0gdGhpcy5fcmFuZ2Uuc3RhcnRM
aW5lICsgbGluZXMubGVuZ3RoIC0gMTsKLSAgICAgICAgdmFyIGVuZENvbHVtbiA9IGxpbmVzLmxl
bmd0aCA+IDEgPyBsaW5lcy5sYXN0VmFsdWUubGVuZ3RoIDogdGhpcy5fcmFuZ2Uuc3RhcnRDb2x1
bW4gKyB0ZXh0Lmxlbmd0aDsKLSAgICAgICAgdGhpcy5fcmFuZ2UgPSBuZXcgV2ViSW5zcGVjdG9y
LlRleHRSYW5nZSh0aGlzLl9yYW5nZS5zdGFydExpbmUsIHRoaXMuX3JhbmdlLnN0YXJ0Q29sdW1u
LCBlbmRMaW5lLCBlbmRDb2x1bW4pOwotICAgIH0sCi0gICAgCi0gICAgcHJlc2VudEhvdmVyTWVu
dTogZnVuY3Rpb24oKQorICAgIHBvcG92ZXJEaWRQcmVzZW50OiBmdW5jdGlvbihwb3BvdmVyKQog
ICAgIHsKLSAgICAgICAgdGhpcy5faG92ZXJNZW51ID0gbmV3IFdlYkluc3BlY3Rvci5Ib3Zlck1l
bnUodGhpcyk7Ci0gICAgICAgIHRoaXMuX2hvdmVyTWVudS5lbGVtZW50LmNsYXNzTGlzdC5hZGQo
ImNvbG9yIik7Ci0gICAgICAgIHRoaXMuX2JvdW5kcyA9IHRoaXMuX21hcmtlci5ib3VuZHM7Ci0g
ICAgICAgIHRoaXMuX2hvdmVyTWVudS5wcmVzZW50KHRoaXMuX2JvdW5kcyk7CisgICAgICAgIHRo
aXMuX2NvbG9yUGlja2VyLmNvbG9yID0gdGhpcy5fdmFsdWU7CiAgICAgfSwKIAotICAgIGRpc21p
c3NIb3Zlck1lbnU6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX2hvdmVyTWVudS5k
aXNtaXNzKCk7Ci0gICAgfSwKLQotICAgIC8vIFByb3RlY3RlZAotCi0gICAgaGFuZGxlRXZlbnQ6
IGZ1bmN0aW9uKGV2ZW50KQotICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLl9rZXlib2FyZFNob3J0
Y3V0RXNjLm1hdGNoZXNFdmVudChldmVudCkgfHwgIXRoaXMuX3BvcG92ZXIudmlzaWJsZSkKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgCi0gICAgICAgIHRoaXMuY29sb3IgPSB0aGlzLl9v
cmlnaW5hbENvbG9yOwotICAgICAgICB0aGlzLl9wb3BvdmVyLmRpc21pc3MoKTsKLQotICAgICAg
ICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKLSAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQo
KTsKLSAgICB9LAotCi0gICAgaG92ZXJNZW51QnV0dG9uV2FzUHJlc3NlZDogZnVuY3Rpb24oaG92
ZXJNZW51KQotICAgIHsKLSAgICAgICAgdmFyIGNvbG9yUGlja2VyID0gbmV3IFdlYkluc3BlY3Rv
ci5Db2xvclBpY2tlcjsKLSAgICAgICAgY29sb3JQaWNrZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJ
bnNwZWN0b3IuQ29sb3JQaWNrZXIuRXZlbnQuQ29sb3JDaGFuZ2VkLCB0aGlzLl9jb2xvclBpY2tl
ckNvbG9yQ2hhbmdlZCwgdGhpcyk7Ci0KLSAgICAgICAgdGhpcy5fcG9wb3ZlciA9IG5ldyBXZWJJ
bnNwZWN0b3IuUG9wb3Zlcih0aGlzKTsKLSAgICAgICAgdGhpcy5fcG9wb3Zlci5jb250ZW50ID0g
Y29sb3JQaWNrZXIuZWxlbWVudDsKLSAgICAgICAgdGhpcy5fcG9wb3Zlci5wcmVzZW50KHRoaXMu
X2JvdW5kcy5wYWQoMiksIFtXZWJJbnNwZWN0b3IuUmVjdEVkZ2UuTUFYX1ksIFdlYkluc3BlY3Rv
ci5SZWN0RWRnZS5NQVhfWF0pOwotCi0gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJr
ZXlkb3duIiwgdGhpcywgdHJ1ZSk7Ci0KLSAgICAgICAgY29sb3JQaWNrZXIuY29sb3IgPSB0aGlz
Ll9jb2xvcjsKLQotICAgICAgICBob3Zlck1lbnUuZGlzbWlzcygpOwotCi0gICAgICAgIGlmICh0
aGlzLl9kZWxlZ2F0ZSAmJiB0eXBlb2YgdGhpcy5fZGVsZWdhdGUuY29sb3JFZGl0aW5nQ29udHJv
bGxlckRpZFN0YXJ0RWRpdGluZyA9PT0gImZ1bmN0aW9uIikKLSAgICAgICAgICAgIHRoaXMuX2Rl
bGVnYXRlLmNvbG9yRWRpdGluZ0NvbnRyb2xsZXJEaWRTdGFydEVkaXRpbmcodGhpcyk7Ci0KLSAg
ICAgICAgdGhpcy5fb3JpZ2luYWxDb2xvciA9IHRoaXMuX2NvbG9yLmNvcHkoKTsKLSAgICB9LAot
ICAgIAotICAgIGRpZERpc21pc3NQb3BvdmVyOiBmdW5jdGlvbihwb3BvdmVyKQotICAgIHsKLSAg
ICAgICAgZGVsZXRlIHRoaXMuX3BvcG92ZXI7Ci0gICAgICAgIGRlbGV0ZSB0aGlzLl9vcmlnaW5h
bENvbG9yOwotCi0gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJrZXlkb3duIiwg
dGhpcywgdHJ1ZSk7Ci0KLSAgICAgICAgaWYgKHRoaXMuX2RlbGVnYXRlICYmIHR5cGVvZiB0aGlz
Ll9kZWxlZ2F0ZS5jb2xvckVkaXRpbmdDb250cm9sbGVyRGlkRmluaXNoRWRpdGluZyA9PT0gImZ1
bmN0aW9uIikKLSAgICAgICAgICAgIHRoaXMuX2RlbGVnYXRlLmNvbG9yRWRpdGluZ0NvbnRyb2xs
ZXJEaWRGaW5pc2hFZGl0aW5nKHRoaXMpOwotICAgIH0sCi0gICAgCiAgICAgLy8gUHJpdmF0ZQog
ICAgIAogICAgIF9jb2xvclBpY2tlckNvbG9yQ2hhbmdlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAg
ewotICAgICAgICB0aGlzLmNvbG9yID0gZXZlbnQudGFyZ2V0LmNvbG9yOworICAgICAgICB0aGlz
LnZhbHVlID0gZXZlbnQudGFyZ2V0LmNvbG9yOwogICAgIH0gICAgCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db2RlTWlycm9yRWRpdGluZ0NvbnRy
b2xsZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db2RlTWlycm9y
RWRpdGluZ0NvbnRyb2xsZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTc1Y2IxMWE5NzVlYjY3YjJkOGUxYTNi
MzQ0NzQ2MGNmYWE5NDkxNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL0NvZGVNaXJyb3JFZGl0aW5nQ29udHJvbGxlci5qcwpAQCAtMCwwICsx
LDE4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKK1dlYkluc3BlY3Rvci5Db2RlTWlycm9yRWRpdGluZ0NvbnRy
b2xsZXIgPSBmdW5jdGlvbihjb2RlTWlycm9yLCBtYXJrZXIpCit7CisgICAgV2ViSW5zcGVjdG9y
Lk9iamVjdC5jYWxsKHRoaXMpOworCisgICAgdGhpcy5fY29kZU1pcnJvciA9IGNvZGVNaXJyb3I7
CisgICAgdGhpcy5fbWFya2VyID0gbWFya2VyOworICAgIHRoaXMuX2RlbGVnYXRlID0gbnVsbDsK
KworICAgIHRoaXMuX3JhbmdlID0gbWFya2VyLnJhbmdlOworCisgICAgLy8gVGhlIHZhbHVlIG11
c3Qgc3VwcG9ydCAudG9TdHJpbmcoKSBhbmQgLmNvcHkoKSBtZXRob2RzLgorICAgIHRoaXMuX3Zh
bHVlID0gdGhpcy5pbml0aWFsVmFsdWU7CisKKyAgICB0aGlzLl9rZXlib2FyZFNob3J0Y3V0RXNj
ID0gbmV3IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0KG51bGwsIFdlYkluc3BlY3Rvci5L
ZXlib2FyZFNob3J0Y3V0LktleS5Fc2NhcGUpOworfQorCitXZWJJbnNwZWN0b3IuQ29kZU1pcnJv
ckVkaXRpbmdDb250cm9sbGVyLnByb3RvdHlwZSA9IHsKKyAgICBjb25zdHJ1Y3RvcjogV2ViSW5z
cGVjdG9yLkNvZGVNaXJyb3JFZGl0aW5nQ29udHJvbGxlciwKKyAgICBfX3Byb3RvX186IFdlYklu
c3BlY3Rvci5PYmplY3QucHJvdG90eXBlLAorICAgIAorICAgIC8vIFB1YmxpYworICAgIAorICAg
IGdldCBtYXJrZXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX21hcmtlcjsKKyAgICB9
LAorICAgIAorICAgIGdldCByYW5nZSgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fcmFu
Z2U7CisgICAgfSwKKworICAgIGdldCB2YWx1ZSgpCisgICAgeworICAgICAgICByZXR1cm4gdGhp
cy5fdmFsdWU7CisgICAgfSwKKyAgICAKKyAgICBzZXQgdmFsdWUodmFsdWUpCisgICAgeworICAg
ICAgICB0aGlzLnRleHQgPSB2YWx1ZS50b1N0cmluZygpOworICAgICAgICB0aGlzLl92YWx1ZSA9
IHZhbHVlOworICAgIH0sCisKKyAgICBnZXQgZGVsZWdhdGUoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHRoaXMuX2RlbGVnYXRlOworICAgIH0sCisKKyAgICBzZXQgZGVsZWdhdGUoZGVsZWdhdGUp
CisgICAgeworICAgICAgICB0aGlzLl9kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIH0sCisKKyAg
ICBnZXQgdGV4dCgpCisgICAgeworICAgICAgICB2YXIgZnJvbSA9IHtsaW5lOiB0aGlzLl9yYW5n
ZS5zdGFydExpbmUsIGNoOiB0aGlzLl9yYW5nZS5zdGFydENvbHVtbn07CisgICAgICAgIHZhciB0
byA9IHtsaW5lOiB0aGlzLl9yYW5nZS5lbmRMaW5lLCBjaDogdGhpcy5fcmFuZ2UuZW5kQ29sdW1u
fTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2NvZGVNaXJyb3IuZ2V0UmFuZ2UoZnJvbSwgdG8pOwor
ICAgIH0sCisgICAgCisgICAgc2V0IHRleHQodGV4dCkKKyAgICB7CisgICAgICAgIHZhciBmcm9t
ID0ge2xpbmU6IHRoaXMuX3JhbmdlLnN0YXJ0TGluZSwgY2g6IHRoaXMuX3JhbmdlLnN0YXJ0Q29s
dW1ufTsKKyAgICAgICAgdmFyIHRvID0ge2xpbmU6IHRoaXMuX3JhbmdlLmVuZExpbmUsIGNoOiB0
aGlzLl9yYW5nZS5lbmRDb2x1bW59OworICAgICAgICB0aGlzLl9jb2RlTWlycm9yLnJlcGxhY2VS
YW5nZSh0ZXh0LCBmcm9tLCB0byk7CisKKyAgICAgICAgdmFyIGxpbmVzID0gdGV4dC5zcGxpdCgi
XG4iKTsKKyAgICAgICAgdmFyIGVuZExpbmUgPSB0aGlzLl9yYW5nZS5zdGFydExpbmUgKyBsaW5l
cy5sZW5ndGggLSAxOworICAgICAgICB2YXIgZW5kQ29sdW1uID0gbGluZXMubGVuZ3RoID4gMSA/
IGxpbmVzLmxhc3RWYWx1ZS5sZW5ndGggOiB0aGlzLl9yYW5nZS5zdGFydENvbHVtbiArIHRleHQu
bGVuZ3RoOworICAgICAgICB0aGlzLl9yYW5nZSA9IG5ldyBXZWJJbnNwZWN0b3IuVGV4dFJhbmdl
KHRoaXMuX3JhbmdlLnN0YXJ0TGluZSwgdGhpcy5fcmFuZ2Uuc3RhcnRDb2x1bW4sIGVuZExpbmUs
IGVuZENvbHVtbik7CisgICAgfSwKKworICAgIGdldCBpbml0aWFsVmFsdWUoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHRoaXMudGV4dDsKKyAgICB9LAorICAgIAorICAgIGdldCBjc3NDbGFzc05h
bWUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuICIiOworICAgIH0sCisgICAgCisgICAgZ2V0IHBv
cG92ZXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3BvcG92ZXI7CisgICAgfSwKKwor
ICAgIGdldCBwb3BvdmVyUHJlZmVycmVkRWRnZXMoKQorICAgIHsKKyAgICAgICAgLy8gQmVzdCB0
byBkaXNwbGF5IHRoZSBwb3BvdmVyIHRvIHRoZSBsZWZ0IG9yIGFib3ZlIHRoZSBlZGl0ZWQgcmFu
Z2Ugc2luY2UgaXRzIGVuZCBwb3NpdGlvbiBtYXkgY2hhbmdlLCBidXQgbm90IGl0cyBzdGFydAor
ICAgICAgICAvLyBwb3NpdGlvbi4gVGhpcyB3YXkgd2UgbWluaW1pemUgdGhlIGNoYW5jZXMgb2Yg
b3ZlcmxheWluZyB0aGUgZWRpdGVkIHJhbmdlIGFzIGl0IGNoYW5nZXMuCisgICAgICAgIHJldHVy
biBbV2ViSW5zcGVjdG9yLlJlY3RFZGdlLk1JTl9YLCBXZWJJbnNwZWN0b3IuUmVjdEVkZ2UuTUlO
X1ksIFdlYkluc3BlY3Rvci5SZWN0RWRnZS5NQVhfWSwgV2ViSW5zcGVjdG9yLlJlY3RFZGdlLk1B
WF9YXTsKKyAgICB9LAorCisgICAgcG9wb3ZlclRhcmdldEZyYW1lV2l0aFJlY3RzOiBmdW5jdGlv
bihyZWN0cykKKyAgICB7CisgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuUmVjdC51bmlvbk9m
UmVjdHMocmVjdHMpOworICAgIH0sCisKKyAgICBwcmVzZW50SG92ZXJNZW51OiBmdW5jdGlvbigp
CisgICAgeworICAgICAgICB0aGlzLl9ob3Zlck1lbnUgPSBuZXcgV2ViSW5zcGVjdG9yLkhvdmVy
TWVudSh0aGlzKTsKKyAgICAgICAgdGhpcy5faG92ZXJNZW51LmVsZW1lbnQuY2xhc3NMaXN0LmFk
ZCh0aGlzLmNzc0NsYXNzTmFtZSk7CisgICAgICAgIHRoaXMuX3JlY3RzID0gdGhpcy5fbWFya2Vy
LnJlY3RzOworICAgICAgICB0aGlzLl9ob3Zlck1lbnUucHJlc2VudCh0aGlzLl9yZWN0cyk7Cisg
ICAgfSwKKworICAgIGRpc21pc3NIb3Zlck1lbnU6IGZ1bmN0aW9uKGRpc2NyZXRlKQorICAgIHsK
KyAgICAgICAgdGhpcy5faG92ZXJNZW51LmRpc21pc3MoZGlzY3JldGUpOworICAgIH0sCisKKyAg
ICBwb3BvdmVyV2lsbFByZXNlbnQ6IGZ1bmN0aW9uKHBvcG92ZXIpCisgICAgeworICAgICAgICAv
LyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLgorICAgIH0sCisKKyAgICBwb3BvdmVyRGlkUHJl
c2VudDogZnVuY3Rpb24ocG9wb3ZlcikKKyAgICB7CisgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5
IHN1YmNsYXNzZXMuCisgICAgfSwKKworICAgIC8vIFByb3RlY3RlZAorCisgICAgaGFuZGxlS2V5
ZG93bkV2ZW50OiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5fa2V5
Ym9hcmRTaG9ydGN1dEVzYy5tYXRjaGVzRXZlbnQoZXZlbnQpIHx8ICF0aGlzLl9wb3BvdmVyLnZp
c2libGUpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIAorICAgICAgICB0aGlz
LnZhbHVlID0gdGhpcy5fb3JpZ2luYWxWYWx1ZTsKKyAgICAgICAgdGhpcy5fcG9wb3Zlci5kaXNt
aXNzKCk7CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfSwKKworICAgIGhvdmVyTWVudUJ1
dHRvbldhc1ByZXNzZWQ6IGZ1bmN0aW9uKGhvdmVyTWVudSkKKyAgICB7CisgICAgICAgIHRoaXMu
X3BvcG92ZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlBvcG92ZXIodGhpcyk7CisgICAgICAgIHRoaXMu
cG9wb3ZlcldpbGxQcmVzZW50KHRoaXMuX3BvcG92ZXIpOworICAgICAgICB0aGlzLl9wb3BvdmVy
LnByZXNlbnQodGhpcy5wb3BvdmVyVGFyZ2V0RnJhbWVXaXRoUmVjdHModGhpcy5fcmVjdHMpLnBh
ZCgyKSwgdGhpcy5wb3BvdmVyUHJlZmVycmVkRWRnZXMpOworICAgICAgICB0aGlzLnBvcG92ZXJE
aWRQcmVzZW50KHRoaXMuX3BvcG92ZXIpOworCisgICAgICAgIFdlYkluc3BlY3Rvci5hZGRXaW5k
b3dLZXlkb3duTGlzdGVuZXIodGhpcyk7CisKKyAgICAgICAgaG92ZXJNZW51LmRpc21pc3MoKTsK
KworICAgICAgICBpZiAodGhpcy5fZGVsZWdhdGUgJiYgdHlwZW9mIHRoaXMuX2RlbGVnYXRlLmVk
aXRpbmdDb250cm9sbGVyRGlkU3RhcnRFZGl0aW5nID09PSAiZnVuY3Rpb24iKQorICAgICAgICAg
ICAgdGhpcy5fZGVsZWdhdGUuZWRpdGluZ0NvbnRyb2xsZXJEaWRTdGFydEVkaXRpbmcodGhpcyk7
CisKKyAgICAgICAgdGhpcy5fb3JpZ2luYWxWYWx1ZSA9IHRoaXMuX3ZhbHVlLmNvcHkoKTsKKyAg
ICB9LAorICAgIAorICAgIGRpZERpc21pc3NQb3BvdmVyOiBmdW5jdGlvbihwb3BvdmVyKQorICAg
IHsKKyAgICAgICAgZGVsZXRlIHRoaXMuX3BvcG92ZXI7CisgICAgICAgIGRlbGV0ZSB0aGlzLl9v
cmlnaW5hbFZhbHVlOworCisgICAgICAgIFdlYkluc3BlY3Rvci5yZW1vdmVXaW5kb3dLZXlkb3du
TGlzdGVuZXIodGhpcyk7CisKKyAgICAgICAgaWYgKHRoaXMuX2RlbGVnYXRlICYmIHR5cGVvZiB0
aGlzLl9kZWxlZ2F0ZS5lZGl0aW5nQ29udHJvbGxlckRpZEZpbmlzaEVkaXRpbmcgPT09ICJmdW5j
dGlvbiIpCisgICAgICAgICAgICB0aGlzLl9kZWxlZ2F0ZS5lZGl0aW5nQ29udHJvbGxlckRpZEZp
bmlzaEVkaXRpbmcodGhpcyk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvR2VvbWV0cnkuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9HZW9tZXRyeS5qcwppbmRleCA4NGYyOGVlYzI0OTA1YzAwZGM3NTBjNWY4
MjRhOWEzYzg5ZDJlMTdjLi4wZThlZDNiYjIyZjlhNjU4YzY5OWQ5MmNkMWZhZmZmMWU3MDZkMDdm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9HZW9tZXRy
eS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9HZW9tZXRyeS5q
cwpAQCAtOTgsNiArOTgsMTQgQEAgV2ViSW5zcGVjdG9yLlJlY3QucmVjdEZyb21DbGllbnRSZWN0
ID0gZnVuY3Rpb24oY2xpZW50UmVjdCkKICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5SZWN0
KGNsaWVudFJlY3QubGVmdCwgY2xpZW50UmVjdC50b3AsIGNsaWVudFJlY3Qud2lkdGgsIGNsaWVu
dFJlY3QuaGVpZ2h0KTsKIH07CiAKK1dlYkluc3BlY3Rvci5SZWN0LnVuaW9uT2ZSZWN0cyA9IGZ1
bmN0aW9uKHJlY3RzKQoreworICAgIHZhciB1bmlvbiA9IHJlY3RzWzBdOworICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgcmVjdHMubGVuZ3RoOyArK2kpCisgICAgICAgIHVuaW9uID0gdW5pb24udW5p
b25XaXRoUmVjdChyZWN0c1tpXSk7CisgICAgcmV0dXJuIHVuaW9uOworfTsKKwogV2ViSW5zcGVj
dG9yLlJlY3QucHJvdG90eXBlID0gewogICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuUmVj
dCwKIApAQCAtMTgyLDYgKzE5MCwxNSBAQCBXZWJJbnNwZWN0b3IuUmVjdC5wcm90b3R5cGUgPSB7
CiAgICAgICAgIGludGVyc2VjdGlvbi5vcmlnaW4ueSA9IHkxOwogICAgICAgICBpbnRlcnNlY3Rp
b24uc2l6ZS5oZWlnaHQgPSB5MiAtIHkxOwogICAgICAgICByZXR1cm4gaW50ZXJzZWN0aW9uOwor
ICAgIH0sCisgICAgCisgICAgdW5pb25XaXRoUmVjdDogZnVuY3Rpb24ocmVjdCkKKyAgICB7Cisg
ICAgICAgIHZhciB4ID0gTWF0aC5taW4odGhpcy5taW5YKCksIHJlY3QubWluWCgpKTsKKyAgICAg
ICAgdmFyIHkgPSBNYXRoLm1pbih0aGlzLm1pblkoKSwgcmVjdC5taW5ZKCkpOworICAgICAgICB2
YXIgd2lkdGggPSBNYXRoLm1heCh0aGlzLm1heFgoKSwgcmVjdC5tYXhYKCkpIC0geDsKKyAgICAg
ICAgdmFyIGhlaWdodCA9IE1hdGgubWF4KHRoaXMubWF4WSgpLCByZWN0Lm1heFkoKSkgLSB5Owor
ICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5SZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQp
OwogICAgIH0KIH07CiAKQEAgLTI1MywzICsyNzAsMjcgQEAgV2ViSW5zcGVjdG9yLlF1YWQucHJv
dG90eXBlID0gewogICAgICAgICBdOwogICAgIH0KIH07CisKK1dlYkluc3BlY3Rvci5Qb2x5Z29u
ID0gZnVuY3Rpb24ocG9pbnRzKQoreworICAgIHRoaXMucG9pbnRzID0gcG9pbnRzOworfQorCitX
ZWJJbnNwZWN0b3IuUG9seWdvbi5wcm90b3R5cGUgPSB7CisgICAgY29uc3RydWN0b3I6IFdlYklu
c3BlY3Rvci5Qb2x5Z29uLAorCisgICAgYm91bmRzOiBmdW5jdGlvbigpCisgICAgeworICAgICAg
ICB2YXIgbWluWCA9IE51bWJlci5NQVhfVkFMVUU7CisgICAgICAgIHZhciBtaW5ZID0gTnVtYmVy
Lk1BWF9WQUxVRTsKKyAgICAgICAgdmFyIG1heFggPSAtTnVtYmVyLk1BWF9WQUxVRTsKKyAgICAg
ICAgdmFyIG1heFkgPSAtTnVtYmVyLk1BWF9WQUxVRTsKKyAgICAgICAgZm9yICh2YXIgcG9pbnQg
b2YgdGhpcy5wb2ludHMpIHsKKyAgICAgICAgICAgIG1pblggPSBNYXRoLm1pbihtaW5YLCBwb2lu
dC54KTsKKyAgICAgICAgICAgIG1heFggPSBNYXRoLm1heChtYXhYLCBwb2ludC54KTsKKyAgICAg
ICAgICAgIG1pblkgPSBNYXRoLm1pbihtaW5ZLCBwb2ludC55KTsKKyAgICAgICAgICAgIG1heFkg
PSBNYXRoLm1heChtYXhZLCBwb2ludC55KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbmV3
IFdlYkluc3BlY3Rvci5SZWN0KG1pblgsIG1pblksIG1heFggLSBtaW5YLCBtYXhZIC0gbWluWSk7
CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvSG92ZXJNZW51LmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0hv
dmVyTWVudS5jc3MKaW5kZXggYjMwMzFmM2QwZTVmMzU0Zjc4YTA2YTJkZDIxYjM0ODUwZmQ1NjI2
YS4uNGFiMjRlMjc4ZjBjMTJkM2NmNDRmZjMyYzI4MDg1ZTBiNGEwYjhmOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSG92ZXJNZW51LmNzcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Ib3Zlck1lbnUuY3NzCkBAIC0yNSwy
NiArMjUsOCBAQAogCiAuaG92ZXItbWVudSB7CiAgICAgcG9zaXRpb246IGFic29sdXRlOwotICAg
IGRpc3BsYXk6IC13ZWJraXQtZmxleDsKIAotICAgIC8qIEV4Y2VwdGlvbmFsbHkgdXNlIGNvbnRl
bnQtYm94IHN1Y2ggdGhhdCB0aGUgZnJhbWUgc2V0IGlzIHRoYXQgb2YgdGhlIGhpZ2hsaWdodGVk
IHN0cmluZwotICAgICAgIGFuZCBzdHlsaW5nIGFkZHMgdGhlIHJlcXVpcmVkIHBhZGRpbmcgYXJv
dW5kIGl0ICovCi0gICAgYm94LXNpemluZzogY29udGVudC1ib3g7Ci0KLSAgICAvKiBQb3NpdGlv
biB0aGUgaWNvbiB0byB0aGUgcmlnaHQgb2YgdGhlIG1lbnUgYW5kIGNlbnRlcmVkIHZlcnRpY2Fs
bHkgKi8KLSAgICAtd2Via2l0LWp1c3RpZnktY29udGVudDogZmxleC1lbmQ7Ci0gICAgLXdlYmtp
dC1hbGlnbi1pdGVtczogY2VudGVyOwotCi0gICAgLyogUHJvdmlkZSBleHRyYSByb29tIGZvciB0
aGUgaWNvbiAqLwotICAgIHBhZGRpbmctbGVmdDogMnB4OwotICAgIHBhZGRpbmctcmlnaHQ6IDE2
cHg7Ci0KLSAgICBtaW4taGVpZ2h0OiAxN3B4OwotCi0gICAgYm9yZGVyLXJhZGl1czogNHB4Owot
ICAgIGJvcmRlcjogMnB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4yMik7Ci0gICAgCi0gICAgLXdl
YmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0zcHgsIC01cHgsIDApOworICAgIC13ZWJraXQt
dHJhbnNmb3JtOiB0cmFuc2xhdGUoLTFweCwgLTFweCk7CiAKICAgICBwb2ludGVyLWV2ZW50czog
bm9uZTsKICAgICBvcGFjaXR5OiAwOwpAQCAtNTYsMTAgKzM4LDI3IEBACiAgICAgb3BhY2l0eTog
MTsKIH0KIAorLmhvdmVyLW1lbnUgPiBzdmcgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAg
ICB0b3A6IDA7CisgICAgbGVmdDogMDsKK30KKworLmhvdmVyLW1lbnUgPiBzdmcgPiBwYXRoLAor
LmhvdmVyLW1lbnUgPiBzdmcgPiByZWN0IHsKKyAgICBzdHJva2U6IHJnYmEoMCwgMCwgMCwgMC4y
Mik7CisgICAgc3Ryb2tlLXdpZHRoOiAycHg7CisgICAgZmlsbDogbm9uZTsKK30KKwogLmhvdmVy
LW1lbnUgPiBpbWcgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKworICAgIGxlZnQ6IDA7Cisg
ICAgdG9wOiAwOwogICAgIHdpZHRoOiAxNXB4OwogICAgIGhlaWdodDogMTNweDsKLSAgICAtd2Vi
a2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgxNHB4KTsKKwogICAgIGNvbnRlbnQ6IC13ZWJraXQt
aW1hZ2Utc2V0KHVybChJbWFnZXMvSG92ZXJNZW51QnV0dG9uLnBuZykgMXgsIHVybChJbWFnZXMv
SG92ZXJNZW51QnV0dG9uQDJ4LnBuZykgMngpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Ib3Zlck1lbnUuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Ib3Zlck1lbnUuanMKaW5kZXggNDc1MTRmYmU5YmI4Yjc3YjQw
MDdkZDRjZjQwNzUwMDFlODFkNDA5Ny4uMDQ0NTgyM2Q5MGI4NDYwYTY2ZGY4OTRiNjMzMTY0YzE0
OTUxOTRhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
SG92ZXJNZW51LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0hv
dmVyTWVudS5qcwpAQCAtMzMsNiArMzMsOCBAQCBXZWJJbnNwZWN0b3IuSG92ZXJNZW51ID0gZnVu
Y3Rpb24oZGVsZWdhdGUpCiAgICAgdGhpcy5fZWxlbWVudC5jbGFzc05hbWUgPSBXZWJJbnNwZWN0
b3IuSG92ZXJNZW51LlN0eWxlQ2xhc3NOYW1lOwogICAgIHRoaXMuX2VsZW1lbnQuYWRkRXZlbnRM
aXN0ZW5lcigidHJhbnNpdGlvbmVuZCIsIHRoaXMsIHRydWUpOwogCisgICAgdGhpcy5fc3ZnID0g
dGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInN2ZyIpKTsKKwogICAgIHRoaXMuX2J1dHRvbiA9IHRo
aXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIikpOwog
ICAgIHRoaXMuX2J1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMpOwogfQpAQCAt
NTEsMjggKzUzLDI1IEBAIFdlYkluc3BlY3Rvci5Ib3Zlck1lbnUucHJvdG90eXBlID0gewogICAg
ICAgICByZXR1cm4gdGhpcy5fZWxlbWVudDsKICAgICB9LAogCi0gICAgcHJlc2VudDogZnVuY3Rp
b24odGFyZ2V0RnJhbWUpCisgICAgcHJlc2VudDogZnVuY3Rpb24ocmVjdHMpCiAgICAgewotICAg
ICAgICB2YXIgc3R5bGUgPSB0aGlzLl9lbGVtZW50LnN0eWxlOwotICAgICAgICBzdHlsZS5sZWZ0
ID0gTWF0aC5jZWlsKHRhcmdldEZyYW1lLm9yaWdpbi54KSArICJweCI7Ci0gICAgICAgIHN0eWxl
LnRvcCA9IE1hdGguY2VpbCh0YXJnZXRGcmFtZS5vcmlnaW4ueSkgKyAicHgiOwotICAgICAgICBz
dHlsZS53aWR0aCA9IE1hdGguY2VpbCh0YXJnZXRGcmFtZS5zaXplLndpZHRoKSArICJweCI7Ci0g
ICAgICAgIHN0eWxlLmhlaWdodCA9IE1hdGguY2VpbCh0YXJnZXRGcmFtZS5zaXplLmhlaWdodCkg
KyAicHgiOworICAgICAgICB0aGlzLl9zdmcudGV4dENvbnRlbnQgPSAiIjsKIAotICAgICAgICB2
YXIgZWxlbWVudCA9IHRoaXMuX2VsZW1lbnQ7Ci0gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5k
Q2hpbGQoZWxlbWVudCk7Ci0gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAgICAg
ICAgICBlbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLkhvdmVyTWVudS5WaXNpYmxl
Q2xhc3NOYW1lKTsKLSAgICAgICAgfSk7CisgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hp
bGQodGhpcy5fZWxlbWVudCk7CisgICAgICAgIHRoaXMuX2RyYXdPdXRsaW5lKHJlY3RzKTsKKyAg
ICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5Ib3Zlck1lbnUu
VmlzaWJsZUNsYXNzTmFtZSk7CiAKICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInNj
cm9sbCIsIHRoaXMsIHRydWUpOwogICAgIH0sCiAKLSAgICBkaXNtaXNzOiBmdW5jdGlvbigpCisg
ICAgZGlzbWlzczogZnVuY3Rpb24oZGlzY3JldGUpCiAgICAgewogICAgICAgICBpZiAodGhpcy5f
ZWxlbWVudC5wYXJlbnROb2RlICE9PSBkb2N1bWVudC5ib2R5KQogICAgICAgICAgICAgcmV0dXJu
OwogCisgICAgICAgIGlmIChkaXNjcmV0ZSkKKyAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQucmVt
b3ZlKCk7CisKICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFdlYkluc3Bl
Y3Rvci5Ib3Zlck1lbnUuVmlzaWJsZUNsYXNzTmFtZSk7CiAKICAgICAgICAgd2luZG93LnJlbW92
ZUV2ZW50TGlzdGVuZXIoInNjcm9sbCIsIHRoaXMsIHRydWUpOwpAQCAtODUsNyArODQsNyBAQCBX
ZWJJbnNwZWN0b3IuSG92ZXJNZW51LnByb3RvdHlwZSA9IHsKICAgICAgICAgc3dpdGNoIChldmVu
dC50eXBlKSB7CiAgICAgICAgIGNhc2UgInNjcm9sbCI6CiAgICAgICAgICAgICBpZiAoIXRoaXMu
X2VsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkKLSAgICAgICAgICAgICAgICB0aGlzLmRp
c21pc3MoKTsKKyAgICAgICAgICAgICAgICB0aGlzLmRpc21pc3ModHJ1ZSk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSAiY2xpY2siOgogICAgICAgICAgICAgdGhpcy5faGFuZGxl
Q2xpY2tFdmVudChldmVudCk7CkBAIC0xMDMsNSArMTAyLDE3NSBAQCBXZWJJbnNwZWN0b3IuSG92
ZXJNZW51LnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIGlmICh0aGlzLmRlbGVnYXRlICYm
IHR5cGVvZiB0aGlzLmRlbGVnYXRlLmhvdmVyTWVudUJ1dHRvbldhc1ByZXNzZWQgPT09ICJmdW5j
dGlvbiIpCiAgICAgICAgICAgICB0aGlzLmRlbGVnYXRlLmhvdmVyTWVudUJ1dHRvbldhc1ByZXNz
ZWQodGhpcyk7CisgICAgfSwKKworICAgIF9kcmF3T3V0bGluZTogZnVuY3Rpb24ocmVjdHMpCisg
ICAgeworICAgICAgICB2YXIgYnV0dG9uV2lkdGggPSB0aGlzLl9idXR0b24ud2lkdGg7CisgICAg
ICAgIHZhciBidXR0b25IZWlnaHQgPSB0aGlzLl9idXR0b24uaGVpZ2h0OworICAgICAgICAKKyAg
ICAgICAgLy8gQWRkIHJvb20gZm9yIHRoZSBidXR0b24gb24gdGhlIGxhc3QgbGluZS4KKyAgICAg
ICAgdmFyIGxhc3RSZWN0ID0gcmVjdHMucG9wKCk7CisgICAgICAgIGxhc3RSZWN0LnNpemUud2lk
dGggKz0gYnV0dG9uV2lkdGg7CisgICAgICAgIHJlY3RzLnB1c2gobGFzdFJlY3QpOworCisgICAg
ICAgIGlmIChyZWN0cy5sZW5ndGggPT09IDEpCisgICAgICAgICAgICB0aGlzLl9kcmF3U2luZ2xl
TGluZShyZWN0c1swXSk7CisgICAgICAgIGVsc2UgaWYgKHJlY3RzLmxlbmd0aCA9PT0gMiAmJiBy
ZWN0c1swXS5taW5YKCkgPj0gcmVjdHNbMV0ubWF4WCgpKQorICAgICAgICAgICAgdGhpcy5fZHJh
d1R3b05vbk92ZXJsYXBwaW5nTGluZXMocmVjdHMpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICB0aGlzLl9kcmF3T3ZlcmxhcHBpbmdMaW5lcyhyZWN0cyk7CisKKyAgICAgICAgdmFyIGJvdW5k
cyA9IFdlYkluc3BlY3Rvci5SZWN0LnVuaW9uT2ZSZWN0cyhyZWN0cykucGFkKDMpOyAvLyBwYWRk
aW5nICsgMS8yIHN0cm9rZS13aWR0aAorCisgICAgICAgIHZhciBzdHlsZSA9IHRoaXMuX2VsZW1l
bnQuc3R5bGU7CisgICAgICAgIHN0eWxlLmxlZnQgPSBib3VuZHMubWluWCgpICsgInB4IjsKKyAg
ICAgICAgc3R5bGUudG9wID0gYm91bmRzLm1pblkoKSArICJweCI7CisgICAgICAgIHN0eWxlLndp
ZHRoID0gYm91bmRzLnNpemUud2lkdGggKyAicHgiOworICAgICAgICBzdHlsZS5oZWlnaHQgPSBi
b3VuZHMuc2l6ZS5oZWlnaHQgKyAicHgiOworCisgICAgICAgIHRoaXMuX3N2Zy5zdHlsZS53aWR0
aCA9IGJvdW5kcy5zaXplLndpZHRoICsgInB4IjsKKyAgICAgICAgdGhpcy5fc3ZnLnN0eWxlLmhl
aWdodCA9IGJvdW5kcy5zaXplLmhlaWdodCArICJweCI7CisKKyAgICAgICAgdGhpcy5fYnV0dG9u
LnN0eWxlLmxlZnQgPSAobGFzdFJlY3QubWF4WCgpIC0gYm91bmRzLm1pblgoKSAtIGJ1dHRvbldp
ZHRoKSArICJweCI7CisgICAgICAgIHRoaXMuX2J1dHRvbi5zdHlsZS50b3AgPSAobGFzdFJlY3Qu
bWF4WSgpIC0gYm91bmRzLm1pblkoKSAtIGJ1dHRvbkhlaWdodCkgKyAicHgiOworICAgIH0sCisK
KyAgICBfYWRkUmVjdDogZnVuY3Rpb24ocmVjdCkKKyAgICB7CisgICAgICAgIGNvbnN0IHIgPSA0
OworCisgICAgICAgIHZhciBzdmdSZWN0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJyZWN0Iik7CisgICAgICAgIHN2Z1JlY3Quc2V0QXR0
cmlidXRlKCJ4IiwgMSk7CisgICAgICAgIHN2Z1JlY3Quc2V0QXR0cmlidXRlKCJ5IiwgMSk7Cisg
ICAgICAgIHN2Z1JlY3Quc2V0QXR0cmlidXRlKCJ3aWR0aCIsIHJlY3Quc2l6ZS53aWR0aCk7Cisg
ICAgICAgIHN2Z1JlY3Quc2V0QXR0cmlidXRlKCJoZWlnaHQiLCByZWN0LnNpemUuaGVpZ2h0KTsK
KyAgICAgICAgc3ZnUmVjdC5zZXRBdHRyaWJ1dGUoInJ4Iiwgcik7CisgICAgICAgIHN2Z1JlY3Qu
c2V0QXR0cmlidXRlKCJyeSIsIHIpOworICAgICAgICByZXR1cm4gdGhpcy5fc3ZnLmFwcGVuZENo
aWxkKHN2Z1JlY3QpOworICAgIH0sCisKKyAgICBfYWRkUGF0aDogZnVuY3Rpb24oY29tbWFuZHMs
IHR4LCB0eSkKKyAgICB7CisgICAgICAgIHZhciBwYXRoID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJwYXRoIik7CisgICAgICAgIHBhdGgu
c2V0QXR0cmlidXRlKCJkIiwgY29tbWFuZHMuam9pbigiICIpKTsKKyAgICAgICAgcGF0aC5zZXRB
dHRyaWJ1dGUoInRyYW5zZm9ybSIsICJ0cmFuc2xhdGUoIiArICh0eCArIDEpICsgIiwiICsgKHR5
ICsgMSkgKyAiKSIpOworICAgICAgICByZXR1cm4gdGhpcy5fc3ZnLmFwcGVuZENoaWxkKHBhdGgp
OworICAgIH0sCisKKyAgICBfZHJhd1NpbmdsZUxpbmU6IGZ1bmN0aW9uKHJlY3QpCisgICAgewor
ICAgICAgICB0aGlzLl9hZGRSZWN0KHJlY3QucGFkKDIpKTsKKyAgICB9LAorCisgICAgX2RyYXdU
d29Ob25PdmVybGFwcGluZ0xpbmVzOiBmdW5jdGlvbihyZWN0cykKKyAgICB7CisgICAgICAgIGNv
bnN0IHIgPSA0OworCisgICAgICAgIHZhciBmaXJzdFJlY3QgPSByZWN0c1swXS5wYWQoMik7Cisg
ICAgICAgIHZhciBzZWNvbmRSZWN0ID0gcmVjdHNbMV0ucGFkKDIpOworCisgICAgICAgIHZhciB0
eCA9IC1zZWNvbmRSZWN0Lm1pblgoKTsKKyAgICAgICAgdmFyIHR5ID0gLWZpcnN0UmVjdC5taW5Z
KCk7CisKKyAgICAgICAgdmFyIHJlY3QgPSBmaXJzdFJlY3Q7CisgICAgICAgIHRoaXMuX2FkZFBh
dGgoWworICAgICAgICAgICAgIk0iLCByZWN0Lm1heFgoKSwgcmVjdC5taW5ZKCksCisgICAgICAg
ICAgICAiSCIsIHJlY3QubWluWCgpICsgciwKKyAgICAgICAgICAgICJxIiwgLXIsIDAsIC1yLCBy
LAorICAgICAgICAgICAgIlYiLCByZWN0Lm1heFkoKSAtIHIsCisgICAgICAgICAgICAicSIsIDAs
IHIsIHIsIHIsCisgICAgICAgICAgICAiSCIsIHJlY3QubWF4WCgpCisgICAgICAgIF0sIHR4LCB0
eSk7CisgICAgICAgIAorICAgICAgICByZWN0ID0gc2Vjb25kUmVjdDsKKyAgICAgICAgdGhpcy5f
YWRkUGF0aChbCisgICAgICAgICAgICAiTSIsIHJlY3QubWluWCgpLCByZWN0Lm1pblkoKSwKKyAg
ICAgICAgICAgICJIIiwgcmVjdC5tYXhYKCkgLSByLAorICAgICAgICAgICAgInEiLCByLCAwLCBy
LCByLAorICAgICAgICAgICAgIlYiLCByZWN0Lm1heFkoKSAtIHIsCisgICAgICAgICAgICAicSIs
IDAsIHIsIC1yLCByLAorICAgICAgICAgICAgIkgiLCByZWN0Lm1pblgoKQorICAgICAgICBdLCB0
eCwgdHkpOworICAgIH0sCisgICAgCisgICAgX2RyYXdPdmVybGFwcGluZ0xpbmVzOiBmdW5jdGlv
bihyZWN0cykKKyAgICB7CisgICAgICAgIGNvbnN0IFBBRERJTkcgPSAyOworICAgICAgICBjb25z
dCByID0gNDsKKworICAgICAgICB2YXIgbWluWCA9IE51bWJlci5NQVhfVkFMVUU7CisgICAgICAg
IHZhciBtYXhYID0gLU51bWJlci5NQVhfVkFMVUU7CisgICAgICAgIGZvciAodmFyIHJlY3Qgb2Yg
cmVjdHMpIHsKKyAgICAgICAgICAgIHZhciBtaW5YID0gTWF0aC5taW4ocmVjdC5taW5YKCksIG1p
blgpOworICAgICAgICAgICAgdmFyIG1heFggPSBNYXRoLm1heChyZWN0Lm1heFgoKSwgbWF4WCk7
CisgICAgICAgIH0KKworICAgICAgICBtaW5YIC09IFBBRERJTkc7CisgICAgICAgIG1heFggKz0g
UEFERElORzsKKworICAgICAgICB2YXIgbWluWSA9IHJlY3RzWzBdLm1pblkoKSAtIFBBRERJTkc7
CisgICAgICAgIHZhciBtYXhZID0gcmVjdHMubGFzdFZhbHVlLm1heFkoKSArIFBBRERJTkc7Cisg
ICAgICAgIHZhciBmaXJzdExpbmVNaW5YID0gcmVjdHNbMF0ubWluWCgpIC0gUEFERElORzsKKyAg
ICAgICAgdmFyIGxhc3RMaW5lTWF4WCA9IHJlY3RzLmxhc3RWYWx1ZS5tYXhYKCkgKyBQQURESU5H
OworICAgICAgICAKKyAgICAgICAgaWYgKGZpcnN0TGluZU1pblggPT09IG1pblggJiYgbGFzdExp
bmVNYXhYID09PSBtYXhYKQorICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2FkZFJlY3QobmV3IFdl
Ykluc3BlY3Rvci5SZWN0KG1pblgsIG1pblksIG1heFggLSBtaW5YLCBtYXhZIC0gbWluWSkpOwor
ICAgICAgICAKKyAgICAgICAgdmFyIGxhc3RMaW5lTWluWSA9IHJlY3RzLmxhc3RWYWx1ZS5taW5Z
KCkgKyBQQURESU5HOworICAgICAgICBpZiAocmVjdHNbMF0ubWluWCgpID09PSBtaW5YICsgUEFE
RElORykKKyAgICAgICAgICAgIHJldHVybiB0aGlzLl9hZGRQYXRoKFsKKyAgICAgICAgICAgICAg
ICAiTSIsIG1pblggKyByLCBtaW5ZLAorICAgICAgICAgICAgICAgICJIIiwgbWF4WCAtIHIsCisg
ICAgICAgICAgICAgICAgInEiLCByLCAwLCByLCByLAorICAgICAgICAgICAgICAgICJWIiwgbGFz
dExpbmVNaW5ZIC0gciwKKyAgICAgICAgICAgICAgICAicSIsIDAsIHIsIC1yLCByLAorICAgICAg
ICAgICAgICAgICJIIiwgbGFzdExpbmVNYXhYICsgciwKKyAgICAgICAgICAgICAgICAicSIsIC1y
LCAwLCAtciwgciwKKyAgICAgICAgICAgICAgICAiViIsIG1heFkgLSByLAorICAgICAgICAgICAg
ICAgICJxIiwgMCwgciwgLXIsIHIsCisgICAgICAgICAgICAgICAgIkgiLCBtaW5YICsgciwKKyAg
ICAgICAgICAgICAgICAicSIsIC1yLCAwLCAtciwgLXIsCisgICAgICAgICAgICAgICAgIlYiLCBt
aW5ZICsgciwKKyAgICAgICAgICAgICAgICAicSIsIDAsIC1yLCByLCAtcgorICAgICAgICAgICAg
XSwgLW1pblgsIC1taW5ZKTsKKyAgICAgICAgCisgICAgICAgIHZhciBmaXJzdExpbmVNYXhZID0g
cmVjdHNbMF0ubWF4WSgpIC0gUEFERElORzsKKyAgICAgICAgaWYgKHJlY3RzLmxhc3RWYWx1ZS5t
YXhYKCkgPT09IG1heFggLSBQQURESU5HKQorICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2FkZFBh
dGgoWworICAgICAgICAgICAgICAgICJNIiwgZmlyc3RMaW5lTWluWCArIHIsIG1pblksCisgICAg
ICAgICAgICAgICAgIkgiLCBtYXhYIC0gciwKKyAgICAgICAgICAgICAgICAicSIsIHIsIDAsIHIs
IHIsCisgICAgICAgICAgICAgICAgIlYiLCBtYXhZIC0gciwKKyAgICAgICAgICAgICAgICAicSIs
IDAsIHIsIC1yLCByLAorICAgICAgICAgICAgICAgICJIIiwgbWluWCArIHIsCisgICAgICAgICAg
ICAgICAgInEiLCAtciwgMCwgLXIsIC1yLAorICAgICAgICAgICAgICAgICJWIiwgZmlyc3RMaW5l
TWF4WSArIHIsCisgICAgICAgICAgICAgICAgInEiLCAwLCAtciwgciwgLXIsCisgICAgICAgICAg
ICAgICAgIkgiLCBmaXJzdExpbmVNaW5YIC0gciwKKyAgICAgICAgICAgICAgICAicSIsIHIsIDAs
IHIsIC1yLAorICAgICAgICAgICAgICAgICJWIiwgbWluWSArIHIsCisgICAgICAgICAgICAgICAg
InEiLCAwLCAtciwgciwgLXIKKyAgICAgICAgICAgIF0sIC1taW5YLCAtbWluWSk7CisgICAgICAg
IAorICAgICAgICByZXR1cm4gdGhpcy5fYWRkUGF0aChbCisgICAgICAgICAgICAiTSIsIGZpcnN0
TGluZU1pblggKyByLCBtaW5ZLAorICAgICAgICAgICAgIkgiLCBtYXhYIC0gciwKKyAgICAgICAg
ICAgICJxIiwgciwgMCwgciwgciwKKyAgICAgICAgICAgICJWIiwgbGFzdExpbmVNaW5ZIC0gciwK
KyAgICAgICAgICAgICJxIiwgMCwgciwgLXIsIHIsCisgICAgICAgICAgICAiSCIsIGxhc3RMaW5l
TWF4WCArIHIsCisgICAgICAgICAgICAicSIsIC1yLCAwLCAtciwgciwKKyAgICAgICAgICAgICJW
IiwgbWF4WSAtIHIsCisgICAgICAgICAgICAicSIsIDAsIHIsIC1yLCByLAorICAgICAgICAgICAg
IkgiLCBtaW5YICsgciwKKyAgICAgICAgICAgICJxIiwgLXIsIDAsIC1yLCAtciwKKyAgICAgICAg
ICAgICJWIiwgZmlyc3RMaW5lTWF4WSArIHIsCisgICAgICAgICAgICAicSIsIDAsIC1yLCByLCAt
ciwKKyAgICAgICAgICAgICJIIiwgZmlyc3RMaW5lTWluWCAtIHIsCisgICAgICAgICAgICAicSIs
IHIsIDAsIHIsIC1yLAorICAgICAgICAgICAgIlYiLCBtaW5ZICsgciwKKyAgICAgICAgICAgICJx
IiwgMCwgLXIsIHIsIC1yCisgICAgICAgIF0sIC1taW5YLCAtbWluWSk7CiAgICAgfQogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCmluZGV4IDk5NGEz
MDkwOWY3ZWNlYTc4YjkyMjczNDdkNWM1MzZmMTAxYTgxY2QuLjM5ZjIxZjQ2NDI5NzkxM2Q0MDlj
ZTY4MmE1NzQxNjE2YWExMTUwZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL01haW4uaHRtbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9NYWluLmh0bWwKQEAgLTQ0NCw2ICs0NDQsNyBAQAogICAgIDxzY3JpcHQgc3JjPSJH
b1RvTGluZURpYWxvZy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNvbnRlbnRGbG93
RE9NVHJlZUNvbnRlbnRWaWV3LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iSG92ZXJN
ZW51LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iQ29kZU1pcnJvckVkaXRpbmdDb250
cm9sbGVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ29kZU1pcnJvckNvbG9yRWRp
dGluZ0NvbnRyb2xsZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNYWluLmpzIj48
L3NjcmlwdD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvTWFpbi5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uanMK
aW5kZXggZTM0NTY0NjRkZTMxYjFlNWRlOGViNDkxYzgwZDRkYjdkMjhkZjMwZS4uYzQ1ZmZjZjA1
YTBhODM4ODIyM2RiMTcxNjI5Yjg1ODg4YTU3N2ZmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9NYWluLmpzCkBAIC0xNzUsNiArMTc1LDggQEAgV2ViSW5zcGVjdG9y
LmxvYWRlZCA9IGZ1bmN0aW9uKCkKICAgICAgICAgeDogMCwKICAgICAgICAgeTogMAogICAgIH07
CisKKyAgICB0aGlzLl93aW5kb3dLZXlkb3duTGlzdGVuZXJzID0gW107CiB9CiAKIFdlYkluc3Bl
Y3Rvci5jb250ZW50TG9hZGVkID0gZnVuY3Rpb24oKQpAQCAtMTc4NSwzICsxNzg3LDM5IEBAIFdl
Ykluc3BlY3Rvci5jYW5BcmNoaXZlTWFpbkZyYW1lID0gZnVuY3Rpb24oKQogCiAgICAgcmV0dXJu
IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLmZyb21NSU1FVHlwZShXZWJJbnNwZWN0b3IuZnJh
bWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lLm1haW5SZXNvdXJjZS5taW1lVHlwZSkgPT09IFdl
Ykluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLkRvY3VtZW50OwogfQorCitXZWJJbnNwZWN0b3IuYWRk
V2luZG93S2V5ZG93bkxpc3RlbmVyID0gZnVuY3Rpb24obGlzdGVuZXIpCit7CisgICAgaWYgKHR5
cGVvZiBsaXN0ZW5lci5oYW5kbGVLZXlkb3duRXZlbnQgIT09ICJmdW5jdGlvbiIpCisgICAgICAg
IHJldHVybjsKKyAgICAKKyAgICB0aGlzLl93aW5kb3dLZXlkb3duTGlzdGVuZXJzLnB1c2gobGlz
dGVuZXIpOworCisgICAgdGhpcy5fdXBkYXRlV2luZG93S2V5ZG93bkxpc3RlbmVyKCk7Cit9Owor
CitXZWJJbnNwZWN0b3IucmVtb3ZlV2luZG93S2V5ZG93bkxpc3RlbmVyID0gZnVuY3Rpb24obGlz
dGVuZXIpCit7CisgICAgdGhpcy5fd2luZG93S2V5ZG93bkxpc3RlbmVycy5yZW1vdmUobGlzdGVu
ZXIpOworICAgIAorICAgIHRoaXMuX3VwZGF0ZVdpbmRvd0tleWRvd25MaXN0ZW5lcigpOworfTsK
KworV2ViSW5zcGVjdG9yLl91cGRhdGVXaW5kb3dLZXlkb3duTGlzdGVuZXIgPSBmdW5jdGlvbigp
Cit7CisgICAgaWYgKHRoaXMuX3dpbmRvd0tleWRvd25MaXN0ZW5lcnMubGVuZ3RoID4gMCkKKyAg
ICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCBXZWJJbnNwZWN0b3IuX3No
YXJlZFdpbmRvd0tleWRvd25MaXN0ZW5lciwgdHJ1ZSk7CisgICAgZWxzZQorICAgICAgICB3aW5k
b3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsIFdlYkluc3BlY3Rvci5fc2hhcmVkV2lu
ZG93S2V5ZG93bkxpc3RlbmVyLCB0cnVlKTsKK30KKworV2ViSW5zcGVjdG9yLl9zaGFyZWRXaW5k
b3dLZXlkb3duTGlzdGVuZXIgPSBmdW5jdGlvbihldmVudCkKK3sKKyAgICBmb3IgKHZhciBpID0g
V2ViSW5zcGVjdG9yLl93aW5kb3dLZXlkb3duTGlzdGVuZXJzLmxlbmd0aCAtIDE7IGkgPj0gMDsg
LS1pKSB7CisgICAgICAgIGlmIChXZWJJbnNwZWN0b3IuX3dpbmRvd0tleWRvd25MaXN0ZW5lcnNb
aV0uaGFuZGxlS2V5ZG93bkV2ZW50KGV2ZW50KSkgeworICAgICAgICAgICAgZXZlbnQuc3RvcElt
bWVkaWF0ZVByb3BhZ2F0aW9uKCk7CisgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9Cit9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvU291cmNlQ29kZVRleHRFZGl0b3Iu
Y3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvU291cmNlQ29kZVRleHRF
ZGl0b3IuY3NzCmluZGV4IDkwZjBhODQwYjk0ZDk2ZjMxNWM2Nzc5MDMzNDI2YThlZTI5ZmQ1NGEu
LmVhNzE0M2FlNDRiZWE1Njg2OTFjMzBjZjA4ZjM1ZDZiNTRlZWJhNzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1NvdXJjZUNvZGVUZXh0RWRpdG9yLmNz
cworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Tb3VyY2VDb2RlVGV4
dEVkaXRvci5jc3MKQEAgLTcxLDYgKzcxLDcgQEAKIC5ob3Zlci1tZW51LmNvbG9yID4gaW1nIHsK
ICAgICB3aWR0aDogMTZweDsKICAgICBoZWlnaHQ6IDE2cHg7Ci0gICAgLXdlYmtpdC10cmFuc2Zv
cm06IHRyYW5zbGF0ZVgoMTRweCk7CiAgICAgY29udGVudDogLXdlYmtpdC1pbWFnZS1zZXQodXJs
KEltYWdlcy9Db2xvckljb24ucG5nKSAxeCwgdXJsKEltYWdlcy9Db2xvckljb25AMngucG5nKSAy
eCk7CisgICAgCisgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMXB4KTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1NvdXJjZUNvZGVU
ZXh0RWRpdG9yLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvU291cmNl
Q29kZVRleHRFZGl0b3IuanMKaW5kZXggN2NiMzU0YmRmNTNhMDdlNWJkZGU2OTQyZTJmYjBlZmZl
YmE2YzM4NC4uMDE2Njk0NWRkNTc3ZDQwMThkZDAzMWZjOWY5ZjJlNjM2ZDg5OGI5NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvU291cmNlQ29kZVRleHRF
ZGl0b3IuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvU291cmNl
Q29kZVRleHRFZGl0b3IuanMKQEAgLTEwNyw2ICsxMDcsOCBAQCBXZWJJbnNwZWN0b3IuU291cmNl
Q29kZVRleHRFZGl0b3IucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLnRva2VuVHJhY2tpbmdD
b250cm9sbGVyLnJlbW92ZUhpZ2hsaWdodGVkUmFuZ2UoKTsKIAogICAgICAgICB0aGlzLl9kaXNt
aXNzUG9wb3ZlcigpOworICAgICAgICAKKyAgICAgICAgdGhpcy5fZGlzbWlzc0VkaXRpbmdDb250
cm9sbGVyKHRydWUpOwogICAgIH0sCiAKICAgICBjbG9zZTogZnVuY3Rpb24oKQpAQCAtMjI2LDIz
ICsyMjgsOCBAQCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IucHJvdG90eXBlID0g
ewogICAgICAgICBpZiAodGhpcy5faWdub3JlQ29udGVudERpZENoYW5nZSA+IDApCiAgICAgICAg
ICAgICByZXR1cm47CiAKLSAgICAgICAgLy8gR2F0aGVyIGFsbCBsaW5lcyBjb250YWluaW5nIG5l
dyB0ZXh0LgotICAgICAgICB2YXIgbGluZXMgPSBuZXcgU2V0OwotICAgICAgICBmb3IgKHZhciBy
YW5nZSBvZiBuZXdSYW5nZXMpIHsKLSAgICAgICAgICAgIC8vIElmIHRoZSByYW5nZSBpcyBvbiBh
IHNpbmdsZSBsaW5lLCBvbmx5IGFkZCB0aGUgbGluZSBpZiB0aGUgcmFuZ2UgaXMgbm90IGVtcHR5
LgotICAgICAgICAgICAgaWYgKHJhbmdlLnN0YXJ0TGluZSA9PT0gcmFuZ2UuZW5kTGluZSkgewot
ICAgICAgICAgICAgICAgIGlmIChyYW5nZS5lbmRDb2x1bW4gPiByYW5nZS5zdGFydENvbHVtbikK
LSAgICAgICAgICAgICAgICAgICAgbGluZXMuYWRkKHJhbmdlLnN0YXJ0TGluZSk7Ci0gICAgICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIC8vIE9ubHkgYWRkIHRoZSBsYXN0IGxpbmUg
aWYgdGhlIHJhbmdlIGhhcyBjaGFyYWN0ZXJzIG9uIHRoaXMgbGluZS4KLSAgICAgICAgICAgICAg
ICBmb3IgKHZhciBsaW5lID0gcmFuZ2Uuc3RhcnRMaW5lOyBsaW5lIDwgcmFuZ2UuZW5kTGluZSB8
fCByYW5nZS5lbmRDb2x1bW4gPiAwOyArK2xpbmUpCi0gICAgICAgICAgICAgICAgICAgIGxpbmVz
LmFkZChsaW5lKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8vIENvbnNp
ZGVyIGFsbCBuZXcgbGluZXMgZm9yIG5ldyBjb2xvciBtYXJrZXJzLgotICAgICAgICBmb3IgKHZh
ciBsaW5lIG9mIGxpbmVzKQotICAgICAgICAgICAgdGhpcy5fdXBkYXRlQ29sb3JNYXJrZXJzKGxp
bmUpOworICAgICAgICBmb3IgKHZhciByYW5nZSBvZiBuZXdSYW5nZXMpCisgICAgICAgICAgICB0
aGlzLl91cGRhdGVFZGl0YWJsZU1hcmtlcnMocmFuZ2UpOwogICAgIH0sCiAKICAgICAvLyBQcml2
YXRlCkBAIC0zNjAsOCArMzQ3LDcgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9y
LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX2FkZElzc3VlKGlzc3VlKTsKICAgICAg
ICAgfQogCi0gICAgICAgIHRoaXMuX3VwZGF0ZVRva2VuVHJhY2tpbmdDb250cm9sbGVyU3RhdGUo
KTsKLSAgICAgICAgdGhpcy5fdXBkYXRlQ29sb3JNYXJrZXJzKCk7CisgICAgICAgIHRoaXMuX3Vw
ZGF0ZUVkaXRhYmxlTWFya2VycygpOwogICAgIH0sCiAKICAgICBfcG9wdWxhdGVXaXRoQ29udGVu
dDogZnVuY3Rpb24oY29udGVudCkKQEAgLTEwNzYsMTMgKzEwNjIsMTMgQEAgV2ViSW5zcGVjdG9y
LlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGlmIChtYXJr
ZXJzLmxlbmd0aCA+IDApCiAgICAgICAgICAgICAgICAgdGhpcy5fdG9rZW5UcmFja2luZ0NvbnRy
b2xsZXJIaWdobGlnaHRlZE1hcmtlZEV4cHJlc3Npb24oY2FuZGlkYXRlLCBtYXJrZXJzKTsKICAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB0aGlzLl9kaXNtaXNzQ29kZU1pcnJvckNv
bG9yRWRpdGluZ0NvbnRyb2xsZXIoKTsKKyAgICAgICAgICAgICAgICB0aGlzLl9kaXNtaXNzRWRp
dGluZ0NvbnRyb2xsZXIoKTsKICAgICAgICAgfQogICAgIH0sCiAKICAgICB0b2tlblRyYWNraW5n
Q29udHJvbGxlck1vdXNlT3V0T2ZIb3ZlcmVkTWFya2VyOiBmdW5jdGlvbih0b2tlblRyYWNraW5n
Q29udHJvbGxlciwgaG92ZXJlZE1hcmtlcikKICAgICB7Ci0gICAgICAgIHRoaXMuX2Rpc21pc3ND
b2RlTWlycm9yQ29sb3JFZGl0aW5nQ29udHJvbGxlcigpOworICAgICAgICB0aGlzLl9kaXNtaXNz
RWRpdGluZ0NvbnRyb2xsZXIoKTsKICAgICB9LAogCiAgICAgX3Rva2VuVHJhY2tpbmdDb250cm9s
bGVySGlnaGxpZ2h0ZWRKYXZhU2NyaXB0RXhwcmVzc2lvbjogZnVuY3Rpb24oY2FuZGlkYXRlKQpA
QCAtMTEzMSwxMiArMTExNywxMSBAQCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3Iu
cHJvdG90eXBlID0gewogICAgICAgICBpZiAoIWNhbmRpZGF0ZSkKICAgICAgICAgICAgIHJldHVy
bjsKIAotICAgICAgICB2YXIgYm91bmRzID0gdGhpcy5ib3VuZHNGb3JSYW5nZShjYW5kaWRhdGUu
aG92ZXJlZFRva2VuUmFuZ2UpOwotICAgICAgICBpZiAoIWJvdW5kcykKLSAgICAgICAgICAgIHJl
dHVybjsKLQogICAgICAgICBjb250ZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLlNvdXJj
ZUNvZGVUZXh0RWRpdG9yLlBvcG92ZXJEZWJ1Z2dlckNvbnRlbnRTdHlsZUNsYXNzTmFtZSk7CiAK
KyAgICAgICAgdmFyIHJlY3RzID0gdGhpcy5yZWN0c0ZvclJhbmdlKGNhbmRpZGF0ZS5ob3ZlcmVk
VG9rZW5SYW5nZSk7CisgICAgICAgIHZhciBib3VuZHMgPSBXZWJJbnNwZWN0b3IuUmVjdC51bmlv
bk9mUmVjdHMocmVjdHMpOworCiAgICAgICAgIHRoaXMuX3BvcG92ZXIgPSB0aGlzLl9wb3BvdmVy
IHx8IG5ldyBXZWJJbnNwZWN0b3IuUG9wb3Zlcih0aGlzKTsKICAgICAgICAgdGhpcy5fcG9wb3Zl
ci5jb250ZW50ID0gY29udGVudDsKICAgICAgICAgdGhpcy5fcG9wb3Zlci5wcmVzZW50KGJvdW5k
cy5wYWQoNSksIFtXZWJJbnNwZWN0b3IuUmVjdEVkZ2UuTUlOX1ksIFdlYkluc3BlY3Rvci5SZWN0
RWRnZS5NQVhfWSwgV2ViSW5zcGVjdG9yLlJlY3RFZGdlLk1BWF9YXSk7CkBAIC0xMjg5LDgwICsx
Mjc0LDg0IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUgPSB7
CiAgICAgICAgIHRoaXMuX21vdXNlSXNPdmVyUG9wb3ZlciA9IHRoaXMuX3BvcG92ZXIuZWxlbWVu
dC5jb250YWlucyhldmVudC5yZWxhdGVkVGFyZ2V0KTsKICAgICB9LAogCi0gICAgX3VwZGF0ZUNv
bG9yTWFya2VyczogZnVuY3Rpb24obGluZU51bWJlcikKKyAgICBfdXBkYXRlRWRpdGFibGVNYXJr
ZXJzOiBmdW5jdGlvbihyYW5nZSkKICAgICB7Ci0gICAgICAgIHRoaXMuY3JlYXRlQ29sb3JNYXJr
ZXJzKGxpbmVOdW1iZXIpOworICAgICAgICB0aGlzLmNyZWF0ZUNvbG9yTWFya2VycyhyYW5nZSk7
CiAKICAgICAgICAgdGhpcy5fdXBkYXRlVG9rZW5UcmFja2luZ0NvbnRyb2xsZXJTdGF0ZSgpOwog
ICAgIH0sCi0gICAgCisKICAgICBfdG9rZW5UcmFja2luZ0NvbnRyb2xsZXJIaWdobGlnaHRlZE1h
cmtlZEV4cHJlc3Npb246IGZ1bmN0aW9uKGNhbmRpZGF0ZSwgbWFya2VycykKICAgICB7Ci0gICAg
ICAgIHZhciBjb2xvck1hcmtlcjsKKyAgICAgICAgLy8gTG9vayBmb3IgdGhlIG91dGVybW9zdCBl
ZGl0YWJsZSBtYXJrZXIuCisgICAgICAgIHZhciBlZGl0YWJsZU1hcmtlcjsKICAgICAgICAgZm9y
ICh2YXIgbWFya2VyIG9mIG1hcmtlcnMpIHsKLSAgICAgICAgICAgIGlmIChtYXJrZXIudHlwZSA9
PT0gV2ViSW5zcGVjdG9yLlRleHRNYXJrZXIuVHlwZS5Db2xvcikgewotICAgICAgICAgICAgICAg
IGNvbG9yTWFya2VyID0gbWFya2VyOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgfQorICAgICAgICAgICAgaWYgKCFtYXJrZXIucmFuZ2UgfHwgbWFya2VyLnR5cGUgIT09IFdl
Ykluc3BlY3Rvci5UZXh0TWFya2VyLlR5cGUuQ29sb3IpCisgICAgICAgICAgICAgICAgY29udGlu
dWU7CisKKyAgICAgICAgICAgIGlmICghZWRpdGFibGVNYXJrZXIgfHwgKG1hcmtlci5yYW5nZS5z
dGFydExpbmUgPCBlZGl0YWJsZU1hcmtlci5yYW5nZS5zdGFydExpbmUgfHwgKG1hcmtlci5yYW5n
ZS5zdGFydExpbmUgPT09IGVkaXRhYmxlTWFya2VyLnJhbmdlLnN0YXJ0TGluZSAmJiBtYXJrZXIu
cmFuZ2Uuc3RhcnRDb2x1bW4gPCBlZGl0YWJsZU1hcmtlci5yYW5nZS5zdGFydENvbHVtbikpKQor
ICAgICAgICAgICAgICAgIGVkaXRhYmxlTWFya2VyID0gbWFya2VyOwogICAgICAgICB9CiAKLSAg
ICAgICAgaWYgKCFjb2xvck1hcmtlcikgeworICAgICAgICBpZiAoIWVkaXRhYmxlTWFya2VyKSB7
CiAgICAgICAgICAgICB0aGlzLnRva2VuVHJhY2tpbmdDb250cm9sbGVyLmhvdmVyZWRNYXJrZXIg
PSBudWxsOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKHRo
aXMudG9rZW5UcmFja2luZ0NvbnRyb2xsZXIuaG92ZXJlZE1hcmtlciA9PT0gY29sb3JNYXJrZXIp
CisgICAgICAgIGlmICh0aGlzLnRva2VuVHJhY2tpbmdDb250cm9sbGVyLmhvdmVyZWRNYXJrZXIg
PT09IGVkaXRhYmxlTWFya2VyKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHRoaXMu
X2Rpc21pc3NDb2RlTWlycm9yQ29sb3JFZGl0aW5nQ29udHJvbGxlcigpOworICAgICAgICB0aGlz
Ll9kaXNtaXNzRWRpdGluZ0NvbnRyb2xsZXIoKTsKIAotICAgICAgICB0aGlzLnRva2VuVHJhY2tp
bmdDb250cm9sbGVyLmhvdmVyZWRNYXJrZXIgPSBjb2xvck1hcmtlcjsKKyAgICAgICAgdGhpcy50
b2tlblRyYWNraW5nQ29udHJvbGxlci5ob3ZlcmVkTWFya2VyID0gZWRpdGFibGVNYXJrZXI7CiAK
LSAgICAgICAgdGhpcy5fY29sb3JFZGl0aW5nQ29udHJvbGxlciA9IHRoaXMuY29sb3JFZGl0aW5n
Q29udHJvbGxlckZvck1hcmtlcihjb2xvck1hcmtlcik7CisgICAgICAgIHRoaXMuX2VkaXRpbmdD
b250cm9sbGVyID0gdGhpcy5lZGl0aW5nQ29udHJvbGxlckZvck1hcmtlcihlZGl0YWJsZU1hcmtl
cik7CiAKLSAgICAgICAgdmFyIGNvbG9yID0gdGhpcy5fY29sb3JFZGl0aW5nQ29udHJvbGxlci5j
b2xvcjsKLSAgICAgICAgaWYgKCFjb2xvciB8fCAhY29sb3IudmFsaWQpIHsKLSAgICAgICAgICAg
IGNvbG9yTWFya2VyLmNsZWFyKCk7Ci0gICAgICAgICAgICBkZWxldGUgdGhpcy5fY29sb3JFZGl0
aW5nQ29udHJvbGxlcjsKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKG1hcmtlci50
eXBlID09PSBXZWJJbnNwZWN0b3IuVGV4dE1hcmtlci5UeXBlLkNvbG9yKSB7CisgICAgICAgICAg
ICB2YXIgY29sb3IgPSB0aGlzLl9lZGl0aW5nQ29udHJvbGxlci52YWx1ZTsKKyAgICAgICAgICAg
IGlmICghY29sb3IgfHwgIWNvbG9yLnZhbGlkKSB7CisgICAgICAgICAgICAgICAgZWRpdGFibGVN
YXJrZXIuY2xlYXIoKTsKKyAgICAgICAgICAgICAgICBkZWxldGUgdGhpcy5fZWRpdGluZ0NvbnRy
b2xsZXI7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQogICAgICAgICB9
CiAKLSAgICAgICAgdGhpcy5fY29sb3JFZGl0aW5nQ29udHJvbGxlci5kZWxlZ2F0ZSA9IHRoaXM7
Ci0gICAgICAgIHRoaXMuX2NvbG9yRWRpdGluZ0NvbnRyb2xsZXIucHJlc2VudEhvdmVyTWVudSgp
OworICAgICAgICB0aGlzLl9lZGl0aW5nQ29udHJvbGxlci5kZWxlZ2F0ZSA9IHRoaXM7CisgICAg
ICAgIHRoaXMuX2VkaXRpbmdDb250cm9sbGVyLnByZXNlbnRIb3Zlck1lbnUoKTsKICAgICB9LAog
Ci0gICAgX2Rpc21pc3NDb2RlTWlycm9yQ29sb3JFZGl0aW5nQ29udHJvbGxlcjogZnVuY3Rpb24o
KQorICAgIF9kaXNtaXNzRWRpdGluZ0NvbnRyb2xsZXI6IGZ1bmN0aW9uKGRpc2NyZXRlKQogICAg
IHsKLSAgICAgICAgaWYgKHRoaXMuX2NvbG9yRWRpdGluZ0NvbnRyb2xsZXIpCi0gICAgICAgICAg
ICB0aGlzLl9jb2xvckVkaXRpbmdDb250cm9sbGVyLmRpc21pc3NIb3Zlck1lbnUoKTsKKyAgICAg
ICAgaWYgKHRoaXMuX2VkaXRpbmdDb250cm9sbGVyKQorICAgICAgICAgICAgdGhpcy5fZWRpdGlu
Z0NvbnRyb2xsZXIuZGlzbWlzc0hvdmVyTWVudShkaXNjcmV0ZSk7CiAgICAgICAgIAogICAgICAg
ICB0aGlzLnRva2VuVHJhY2tpbmdDb250cm9sbGVyLmhvdmVyZWRNYXJrZXIgPSBudWxsOwotICAg
ICAgICBkZWxldGUgdGhpcy5fY29sb3JFZGl0aW5nQ29udHJvbGxlcjsKKyAgICAgICAgZGVsZXRl
IHRoaXMuX2VkaXRpbmdDb250cm9sbGVyOwogICAgIH0sCiAKLSAgICAvLyBDb2RlTWlycm9yQ29s
b3JFZGl0aW5nQ29udHJvbGxlciBEZWxlZ2F0ZQorICAgIC8vIENvZGVNaXJyb3JFZGl0aW5nQ29u
dHJvbGxlciBEZWxlZ2F0ZQogICAgIAotICAgIGNvbG9yRWRpdGluZ0NvbnRyb2xsZXJEaWRTdGFy
dEVkaXRpbmc6IGZ1bmN0aW9uKGNvbG9yRWRpdGluZ0NvbnRyb2xsZXIpCisgICAgZWRpdGluZ0Nv
bnRyb2xsZXJEaWRTdGFydEVkaXRpbmc6IGZ1bmN0aW9uKGVkaXRpbmdDb250cm9sbGVyKQogICAg
IHsKICAgICAgICAgLy8gV2UgY2FuIHBhdXNlIHRoZSB0b2tlbiB0cmFja2luZyBjb250cm9sbGVy
IGR1cmluZyBlZGl0aW5nLCBpdCB3aWxsIGJlIHJlc2V0Ci0gICAgICAgIC8vIHRvIHRoZSBleHBl
Y3RlZCBzdGF0ZSBieSBjYWxsaW5nIF91cGRhdGVDb2xvck1hcmtlcnMoKSBpbiB0aGUKLSAgICAg
ICAgLy8gY29sb3JFZGl0aW5nQ29udHJvbGxlckRpZEZpbmlzaEVkaXRpbmcgZGVsZWdhdGUuCisg
ICAgICAgIC8vIHRvIHRoZSBleHBlY3RlZCBzdGF0ZSBieSBjYWxsaW5nIF91cGRhdGVFZGl0YWJs
ZU1hcmtlcnMoKSBpbiB0aGUKKyAgICAgICAgLy8gZWRpdGluZ0NvbnRyb2xsZXJEaWRGaW5pc2hF
ZGl0aW5nIGRlbGVnYXRlLgogICAgICAgICB0aGlzLnRva2VuVHJhY2tpbmdDb250cm9sbGVyLmVu
YWJsZWQgPSBmYWxzZTsKIAogICAgICAgICAvLyBXZSBjbGVhciB0aGUgbWFya2VyIHNpbmNlIHdl
J2xsIHJlc2V0IGl0IGFmdGVyIGVkaXRpbmcuCi0gICAgICAgIGNvbG9yRWRpdGluZ0NvbnRyb2xs
ZXIubWFya2VyLmNsZWFyKCk7CisgICAgICAgIGVkaXRpbmdDb250cm9sbGVyLm1hcmtlci5jbGVh
cigpOwogICAgICAgICAKICAgICAgICAgLy8gV2UgaWdub3JlIGNvbnRlbnQgY2hhbmdlcyBtYWRl
IGFzIGEgcmVzdWx0IG9mIGNvbG9yIGVkaXRpbmcuCiAgICAgICAgIHRoaXMuX2lnbm9yZUNvbnRl
bnREaWRDaGFuZ2UrKzsKICAgICB9LAogICAgIAotICAgIGNvbG9yRWRpdGluZ0NvbnRyb2xsZXJE
aWRGaW5pc2hFZGl0aW5nOiBmdW5jdGlvbihjb2xvckVkaXRpbmdDb250cm9sbGVyKQorICAgIGVk
aXRpbmdDb250cm9sbGVyRGlkRmluaXNoRWRpdGluZzogZnVuY3Rpb24oZWRpdGluZ0NvbnRyb2xs
ZXIpCiAgICAgewotICAgICAgICB0aGlzLl91cGRhdGVDb2xvck1hcmtlcnMoY29sb3JFZGl0aW5n
Q29udHJvbGxlci5yYW5nZS5zdGFydExpbmUpOworICAgICAgICB0aGlzLl91cGRhdGVFZGl0YWJs
ZU1hcmtlcnMoZWRpdGluZ0NvbnRyb2xsZXIucmFuZ2UpOwogCiAgICAgICAgIHRoaXMuX2lnbm9y
ZUNvbnRlbnREaWRDaGFuZ2UtLTsKIAotICAgICAgICBkZWxldGUgdGhpcy5fY29sb3JFZGl0aW5n
Q29udHJvbGxlcjsKKyAgICAgICAgZGVsZXRlIHRoaXMuX2VkaXRpbmdDb250cm9sbGVyOwogICAg
IH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1RleHRFZGl0b3IuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXh0
RWRpdG9yLmpzCmluZGV4IDBlOTJlYjEwODQ5Yjg4ODMxZjk3ZTFmNjU2MGFlODQ2ZTRiNzA4ZGUu
Ljk5ZDZhMzE2YzI2NmU2YWE3YTc2MTdhNzI4NmFjZjNjZTZlOTJkZTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1RleHRFZGl0b3IuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGV4dEVkaXRvci5qcwpAQCAtNTk3LDkg
KzU5Nyw5IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yLnByb3RvdHlwZSA9IHsKICAgICAgICAg
Ly8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Nlcy4KICAgICB9LAogCi0gICAgYm91bmRzRm9yUmFu
Z2U6IGZ1bmN0aW9uKHJhbmdlKQorICAgIHJlY3RzRm9yUmFuZ2U6IGZ1bmN0aW9uKHJhbmdlKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2NvZGVNaXJyb3IuYm91bmRzRm9yUmFuZ2UocmFu
Z2UpOworICAgICAgICByZXR1cm4gdGhpcy5fY29kZU1pcnJvci5yZWN0c0ZvclJhbmdlKHJhbmdl
KTsKICAgICB9LAogCiAgICAgZ2V0IG1hcmtlcnMoKQpAQCAtNjE2LDE0ICs2MTYsMTkgQEAgV2Vi
SW5zcGVjdG9yLlRleHRFZGl0b3IucHJvdG90eXBlID0gewogICAgICAgICB9KTsKICAgICB9LAog
Ci0gICAgY3JlYXRlQ29sb3JNYXJrZXJzOiBmdW5jdGlvbihsaW5lTnVtYmVyKQorICAgIGNyZWF0
ZUNvbG9yTWFya2VyczogZnVuY3Rpb24ocmFuZ2UpCiAgICAgewotICAgICAgICByZXR1cm4gdGhp
cy5fY29kZU1pcnJvci5jcmVhdGVDb2xvck1hcmtlcnMobGluZU51bWJlcik7CisgICAgICAgIHJl
dHVybiB0aGlzLl9jb2RlTWlycm9yLmNyZWF0ZUNvbG9yTWFya2VycyhyYW5nZSk7CiAgICAgfSwK
IAotICAgIGNvbG9yRWRpdGluZ0NvbnRyb2xsZXJGb3JNYXJrZXI6IGZ1bmN0aW9uKGNvbG9yTWFy
a2VyKQorICAgIGVkaXRpbmdDb250cm9sbGVyRm9yTWFya2VyOiBmdW5jdGlvbihlZGl0YWJsZU1h
cmtlcikKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JD
b2xvckVkaXRpbmdDb250cm9sbGVyKHRoaXMuX2NvZGVNaXJyb3IsIGNvbG9yTWFya2VyKTsKKyAg
ICAgICAgc3dpdGNoIChlZGl0YWJsZU1hcmtlci50eXBlKSB7CisgICAgICAgIGNhc2UgV2ViSW5z
cGVjdG9yLlRleHRNYXJrZXIuVHlwZS5Db2xvcjoKKyAgICAgICAgICAgIHJldHVybiBuZXcgV2Vi
SW5zcGVjdG9yLkNvZGVNaXJyb3JDb2xvckVkaXRpbmdDb250cm9sbGVyKHRoaXMuX2NvZGVNaXJy
b3IsIGVkaXRhYmxlTWFya2VyKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVy
biBuZXcgV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JFZGl0aW5nQ29udHJvbGxlcih0aGlzLl9jb2Rl
TWlycm9yLCBlZGl0YWJsZU1hcmtlcik7CisgICAgICAgIH0KICAgICB9LAogCiAgICAgLy8gUHJp
dmF0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGV4
dE1hcmtlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1RleHRNYXJr
ZXIuanMKaW5kZXggZWZkY2ViMTU2MzZhZWIzYWU3ZjU5ZDBkNGUxMTlmMWQxYWUzYmZkOS4uZDE1
MDZiMDM1N2VjOWE3MTE4MWI4MTk1N2YxNzFmZmUwOWFhNWExZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGV4dE1hcmtlci5qcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXh0TWFya2VyLmpzCkBAIC02NywxMiArNjcs
MTIgQEAgV2ViSW5zcGVjdG9yLlRleHRNYXJrZXIucHJvdG90eXBlID0gewogICAgICAgICByZXR1
cm4gbmV3IFdlYkluc3BlY3Rvci5UZXh0UmFuZ2UocmFuZ2UuZnJvbS5saW5lLCByYW5nZS5mcm9t
LmNoLCByYW5nZS50by5saW5lLCByYW5nZS50by5jaCk7CiAgICAgfSwKIAotICAgIGdldCBib3Vu
ZHMoKQorICAgIGdldCByZWN0cygpCiAgICAgewogICAgICAgICB2YXIgcmFuZ2UgPSB0aGlzLl9j
b2RlTWlycm9yVGV4dE1hcmtlci5maW5kKCk7CiAgICAgICAgIGlmICghcmFuZ2UpCiAgICAgICAg
ICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlJlY3QuWkVST19SRUNUOwotICAgICAgICByZXR1cm4g
dGhpcy5fY29kZU1pcnJvclRleHRNYXJrZXIuZG9jLmNtLmJvdW5kc0ZvclJhbmdlKHsKKyAgICAg
ICAgcmV0dXJuIHRoaXMuX2NvZGVNaXJyb3JUZXh0TWFya2VyLmRvYy5jbS5yZWN0c0ZvclJhbmdl
KHsKICAgICAgICAgICAgIHN0YXJ0OiByYW5nZS5mcm9tLAogICAgICAgICAgICAgZW5kOiByYW5n
ZS50bwogICAgICAgICB9KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224761</attachid>
            <date>2014-02-20 09:31:25 -0800</date>
            <delta_ts>2014-02-20 10:06:08 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-129094-20140220183123.patch</filename>
            <type>text/plain</type>
            <size>54598</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY0MzU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA3
Mzg0YmQ1MzliYzUzMDI0NTQ0NTkzNmMyMDAwNGI2MmQxZDM0NDkyLi5kMWRiMDE1YmU0MTgwNWFl
ZDgwNWJmZjQ2MDIzZDMwOWExNzY3NWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOTggQEAKKzIwMTQtMDItMjAgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogY3JlYXRlIGEgQ29kZU1pcnJvckVkaXRpbmdD
b250cm9sbGVyIHN1cGVyY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEyOTA5NAorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hl
ci4KKworICAgICAgICBUYWtlIGNvZGUgdGhhdCBpcyBnZW5lcmljIHRvIGVkaXRpbmcgb2YgYW55
IHRleHQgbWFya2VyIG91dCBvZiBDb2RlTWlycm9yQ29sb3JFZGl0aW5nQ29udHJvbGxlciB0bwor
ICAgICAgICBjcmVhdGUgYSBuZXcgQ29kZU1pcnJvckVkaXRpbmdDb250cm9sbGVyIHN1cGVyY2xh
c3MgdGhhdCdsbCBiZSBmaXQgdG8gdXNlIGZvciBmdXR1cmUgZWRpdGluZyBjb250cm9sbGVycy4K
KyAgICAgICAgQWRkaXRpb2FubGx5LCB3ZSBmaXggZXhpc3RpbmcgaXNzdWVzIHdpdGggc3VjaCBl
ZGl0aW5nIGJ5IHN1cHBvcnRpbmcgdGV4dCBtYXJrZXJzIHNwcmVhZCBhY3Jvc3Mgc2V2ZXJhbAor
ICAgICAgICBsaW5lcyBhbmQgbW9yZSByb2J1c3RseSBoYW5kbGluZyB0aGUgRXNjLiBrZXkgYmVp
bmcgcHJlc3NlZCB0byBkaXNtaXNzIGEgY29udHJvbGxlcidzIHBvcG92ZXIuCisKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL0NTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yLmpzOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yLnByb3RvdHlwZS5f
Y3JlYXRlQ29sb3JTd2F0Y2hlcyk6CisgICAgICAgIEFkb3B0IHRoZSBuZXcgLmNyZWF0ZUNvbG9y
TWFya2VycygpIG1ldGhvZCBzaWduYXR1cmUgdG8gcHJvdmlkZSBhIFRleHRSYW5nZSBwYXJhbWV0
ZXIgcmF0aGVyIHRoYW4gYSBzaW5nbGUKKyAgICAgICAgbGluZSBudW1iZXIuCisKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL0NvZGVNaXJyb3JBZGRpdGlvbnMuanM6CisgICAgICAgIFJlbW92ZSB0
aGUgLmJvdW5kc0ZvclJhbmdlKCkgbWV0aG9kIGluIGZhdm9yIG9mIGEgLnJlY3RzRm9yUmFuZ2Uo
KSBtZXRob2Qgd2hpY2ggd2lsbCBhbGxvdyB1cyB0byBkcmF3IGJldHRlcgorICAgICAgICBtZW51
cyB3aGVuIGhvdmVyaW5nIG92ZXIgYSB0ZXh0IHJhbmdlIGJ5IHByb3ZpZGluZyB0aWdodCBib3Vu
ZHMgcmF0aGVyIHRoYW4gYSBsYXJnZSBib3guIFdlIGFsc28gaGFuZGxlIGFueQorICAgICAgICBs
aW5lIHdyYXBwaW5nIHByb2R1Y2VkIGJ5IENvZGVNaXJyb3IgYW5kIHJlbW92ZSBhbnkgbGVhZGlu
ZyB3aGl0ZS1zcGFjZSBzbyB0aGF0IHRoZSByZWN0cyBhcmUgdGlnaHQgdG8gdGhlCisgICAgICAg
IGFjdHVhbCBjaGFyYWN0ZXJzIGluIHRoZSB0ZXh0IG1hcmtlci4KKworICAgICAgICBXZSBhbHNv
IGNoYW5nZSAuY3JlYXRlQ29sb3JNYXJrZXJzKCkgdG8gdGFrZSBpbiBhIFRleHRSYW5nZSBwYXJh
bWV0ZXIgcmF0aGVyIHRoYW4gYSBsaW5lIG51bWJlciBpbiBvcmRlciB0bworICAgICAgICBiZXR0
ZXIgZGVhbCB3aXRoIHRleHQgbWFya2VycyBzcHJlYWQgYWNyb3NzIG11bHRpcGxlIGxpbmVzLgor
CisgICAgICAgICogVXNlckludGVyZmFjZS9Db2RlTWlycm9yQ29sb3JFZGl0aW5nQ29udHJvbGxl
ci5qczoKKyAgICAgICAgUmVtb3ZlIGFueSBjb2RlIHRoYXQgaXMgYWRlcXVhdGUgZm9yIGFueSBl
ZGl0aW5nIGNvbnRyb2xsZXIgKHdoaWNoIGlzIG1vdmluZyB0byBDb2RlTWlycm9yRWRpdGluZ0Nv
bnRyb2xsZXIpLgorICAgICAgICBXZSBhbHNvIGFkb3B0IG5ldyBpbnRlcmZhY2VzIGV4cG9zZWQg
YnkgQ29kZU1pcnJvckVkaXRpbmdDb250cm9sbGVyLgorCisgICAgICAgIChXZWJJbnNwZWN0b3Iu
Q29kZU1pcnJvckNvbG9yRWRpdGluZ0NvbnRyb2xsZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkNvZGVNaXJyb3JDb2xvckVkaXRpbmdDb250cm9sbGVyLnByb3RvdHlwZS5nZXQgaW5pdGlhbFZh
bHVlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2RlTWlycm9yQ29sb3JFZGl0aW5nQ29udHJv
bGxlci5wcm90b3R5cGUuZ2V0IGNzc0NsYXNzTmFtZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
Q29kZU1pcnJvckNvbG9yRWRpdGluZ0NvbnRyb2xsZXIucHJvdG90eXBlLnBvcG92ZXJXaWxsUHJl
c2VudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29kZU1pcnJvckNvbG9yRWRpdGluZ0NvbnRy
b2xsZXIucHJvdG90eXBlLnBvcG92ZXJEaWRQcmVzZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5Db2RlTWlycm9yQ29sb3JFZGl0aW5nQ29udHJvbGxlci5wcm90b3R5cGUuX2NvbG9yUGlja2Vy
Q29sb3JDaGFuZ2VkKToKKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29kZU1pcnJvckVkaXRp
bmdDb250cm9sbGVyLmpzOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Db2RlTWlycm9yQ29sb3JFZGl0aW5nQ29udHJvbGxlci5qcy4KKyAgICAgICAgTmV3
IGNsYXNzIG1lYW50IHRvIGJlIHN1YmNsYXNzZWQgYnkgYW55IGZ1dHVyZSBlZGl0aW5nIGNvbnRy
b2xsZXIsIGFuZCBhbHJlYWR5IHN1YmNsYXNzZWQgYnkKKyAgICAgICAgQ29kZU1pcnJvckNvbG9y
RWRpdGluZ0NvbnRyb2xsZXIuIFRoaXMgY2xhc3MgZXhwb3NlcyBzZXZlcmFsIGhvb2tzIGZvciBz
dWJjbGFzc2VzIHRvIGN1c3RvbWl6ZSBpdHMgYmVoYXZpb3I6CisgICAgICAgIAorICAgICAgICAu
aW5pdGlhbFZhbHVlOiBhIHZhbHVlIHdlIGNhbiByZXZlcnQgdG8gaWYgdGhlIGVkaXRpbmcgaXMg
Y2FuY2VsZWQKKyAgICAgICAgLmNzc0NsYXNzTmFtZTogYSBDU1MgY2xhc3MgbmFtZSB0aGF0IGNh
biBiZSBhZGRlZCB0byB0aGUgZWRpdGluZyBjb250cm9sbGVyJ3MgY29udGFpbmVyCisgICAgICAg
IC5wb3BvdmVyUHJlZmVycmVkRWRnZXM6IGEgbGlzdCBvZiBwcmVmZXJyZWRFZGdlcyBhcyBwYXNz
ZWQgdG8gUG9wb3Zlci5wcm90b3R5cGUucHJlc2VudCgpIHdpdGggYSBzZW5zaWJsZSBkZWZhdWx0
CisgICAgICAgIC5wb3BvdmVyVGFyZ2V0RnJhbWVXaXRoUmVjdHM6IGEgdGFyZ2V0RnJhbWUgcGFz
c2VkIHRvIFBvcG92ZXIucHJvdG90eXBlLnByZXNlbnQoKSwgZGVmYXVsdHMgdG8gYSB1bmlvbiBv
ZiBwcm92aWRlZCByZWN0cworICAgICAgICAucG9wb3ZlcldpbGxQcmVzZW50OiBjYWxsZWQgYXMg
dGhlIHBvcG92ZXIgaXMgYWJvdXQgdG8gYmUgcHJlc2VudGVkLCB0eXBpY2FsbHkgb3ZlcnJpZGRl
biB0byBzZXQgdGhlIHBvcG92ZXIncyBjb250ZW50CisgICAgICAgIC5wb3BvdmVyRGlkUHJlc2Vu
dDogY2FsbGVkIGFzIHRoZSBwb3BvdmVyIGp1c3Qgd2FzIHByZXNlbnRlZCwgdHlwaWNhbGx5IG92
ZXJyaWRkZW4gd2hlbiBjb250ZW50IG5lZWRzIHRvIHR1bmVkIG9ubHkgYWZ0ZXIKKyAgICAgICAg
YmVpbmcgYWRkZWQgdG8gdGhlIERPTSBhbmQgc2V0dGluZyBvZiB0aGUgbmVjZXNzYXJ5IG1hY2hp
bmVyeSB0byB1cGRhdGUgdGhlIHNlcmlhbGl6ZWQgdmFsdWUgaW4gdGhlIGVkaXRvciBiYXNlZCBv
biBpbnRlcmFjdGlvbgorICAgICAgICB3aXRoaW4gdGhlIHBvcG92ZXIgd2l0aG91dCBjaGFuZ2lu
ZyB0aGUgc2VyaWFsaXplZCB2YWx1ZSB1cG9uIHNob3dpbmcgdGhlIHBvcG92ZXIgdGhlIHZlcnkg
Zmlyc3QgdGltZS4KKyAgICAgICAgCisgICAgICAgIEFkZGl0aW9uYWxseSwgdGhlIC52YWx1ZSBw
cm9wZXJ0eSBtdXN0IGJlIGFuIG9iamVjdCBzdXBwb3J0aW5nIC50b1N0cmluZygpIGFuZCAuY29w
eSgpIG1ldGhvZC4KKworICAgICAgICBGaW5hbGx5LCB0aGUgLmVkaXRpbmdDb250cm9sbGVyRGlk
U3RhcnRFZGl0aW5nKCkgYW5kIC5lZGl0aW5nQ29udHJvbGxlckRpZEZpbmlzaEVkaXRpbmcoKSBk
ZWxlZ2F0ZSBtZXRob2RzIGFyZSBmaXJlZAorICAgICAgICBhcyBlZGl0aW5nIGJlZ2lucyBhbmQg
ZmluaXNoZXMuIAorCisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29kZU1pcnJvckVkaXRpbmdDb250
cm9sbGVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2RlTWlycm9yRWRpdGluZ0NvbnRyb2xs
ZXIucHJvdG90eXBlLmdldCBtYXJrZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvZGVNaXJy
b3JFZGl0aW5nQ29udHJvbGxlci5wcm90b3R5cGUuZ2V0IHJhbmdlKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5Db2RlTWlycm9yRWRpdGluZ0NvbnRyb2xsZXIucHJvdG90eXBlLmdldCB2YWx1ZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29kZU1pcnJvckVkaXRpbmdDb250cm9sbGVyLnByb3Rv
dHlwZS5zZXQgdmFsdWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JFZGl0aW5n
Q29udHJvbGxlci5wcm90b3R5cGUuZ2V0IGRlbGVnYXRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5Db2RlTWlycm9yRWRpdGluZ0NvbnRyb2xsZXIucHJvdG90eXBlLnNldCBkZWxlZ2F0ZSk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuQ29kZU1pcnJvckVkaXRpbmdDb250cm9sbGVyLnByb3RvdHlw
ZS5nZXQgdGV4dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29kZU1pcnJvckVkaXRpbmdDb250
cm9sbGVyLnByb3RvdHlwZS5zZXQgdGV4dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29kZU1p
cnJvckVkaXRpbmdDb250cm9sbGVyLnByb3RvdHlwZS5nZXQgaW5pdGlhbFZhbHVlKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5Db2RlTWlycm9yRWRpdGluZ0NvbnRyb2xsZXIucHJvdG90eXBlLmdl
dCBjc3NDbGFzc05hbWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JFZGl0aW5n
Q29udHJvbGxlci5wcm90b3R5cGUuZ2V0IHBvcG92ZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkNvZGVNaXJyb3JFZGl0aW5nQ29udHJvbGxlci5wcm90b3R5cGUuZ2V0IHBvcG92ZXJQcmVmZXJy
ZWRFZGdlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29kZU1pcnJvckVkaXRpbmdDb250cm9s
bGVyLnByb3RvdHlwZS5wb3BvdmVyVGFyZ2V0RnJhbWVXaXRoUmVjdHMpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkNvZGVNaXJyb3JFZGl0aW5nQ29udHJvbGxlci5wcm90b3R5cGUucHJlc2VudEhv
dmVyTWVudSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29kZU1pcnJvckVkaXRpbmdDb250cm9s
bGVyLnByb3RvdHlwZS5kaXNtaXNzSG92ZXJNZW51KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5D
b2RlTWlycm9yRWRpdGluZ0NvbnRyb2xsZXIucHJvdG90eXBlLnBvcG92ZXJXaWxsUHJlc2VudCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29kZU1pcnJvckVkaXRpbmdDb250cm9sbGVyLnByb3Rv
dHlwZS5wb3BvdmVyRGlkUHJlc2VudCk6CisKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2RlTWly
cm9yRWRpdGluZ0NvbnRyb2xsZXIucHJvdG90eXBlLmhhbmRsZUtleWRvd25FdmVudCk6CisgICAg
ICAgIEV2ZW50IGhhbmRsZXIgZm9yIGtleWRvd24gZXZlbnRzIGFzIHJlZ2lzdGVyZWQgdmlhIHRo
ZSBuZXcgV2ViSW5zcGVjdG9yLmFkZFdpbmRvd0tleWRvd25MaXN0ZW5lcigpIG1ldGhvZC4KKwor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JFZGl0aW5nQ29udHJvbGxlci5wcm90b3R5
cGUuaG92ZXJNZW51QnV0dG9uV2FzUHJlc3NlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29k
ZU1pcnJvckVkaXRpbmdDb250cm9sbGVyLnByb3RvdHlwZS5kaWREaXNtaXNzUG9wb3Zlcik6CisK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0dlb21ldHJ5LmpzOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlJlY3QudW5pb25PZlJlY3RzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZWN0LnByb3Rv
dHlwZS51bmlvbldpdGhSZWN0KToKKyAgICAgICAgTmV3IHV0aWxpdGllcyB0byBnZXQgYSBSZWN0
IHRoYXQgaXMgdGhlIHVuaW9uIG9mIHRoZSBwcm92aWRlZCBSZWN0IG9yIGFycmF5IG9mIFJlY3Rz
LgorCisgICAgICAgIChXZWJJbnNwZWN0b3IuUG9seWdvbik6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuUG9seWdvbi5wcm90b3R5cGUuYm91bmRzKToKKyAgICAgICAgTmV3IGNsYXNzIHVzZWQgdG8g
c3RvcmUgYSBsaXN0IG9mIHBvaW50cyBmb3IgYSBwb2x5Z29uIGFuZCBnZXQgaXRzIGJvdW5kcywg
dXNlZCBieSB0aGUgSG92ZXJNZW51IGNsYXNzLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9I
b3Zlck1lbnUuY3NzOgorICAgICAgICAoLmhvdmVyLW1lbnUpOgorICAgICAgICAoLmhvdmVyLW1l
bnUgPiBzdmcpOgorICAgICAgICAoLmhvdmVyLW1lbnUgPiBzdmcgPiByZWN0KToKKyAgICAgICAg
KC5ob3Zlci1tZW51ID4gaW1nKToKKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvSG92ZXJNZW51
LmpzOgorICAgICAgICBXZSByZW1vdmUgdGhlIGFzc3VtcHRpb24gdGhhdCBhIEhvdmVyTWVudSBp
cyBvbmx5IHVzZWQgdG8gZHJhdyBhIHNpbmdsZSByb3VuZGVkIHJlY3QgYmFzZWQgb24gYSBzaW1w
bGUKKyAgICAgICAgUmVjdCBhbmQgaW5zdGVhZCBzdXBwb3J0IHByZXNlbnRhdGlvbiBiYXNlZCBv
biBhbiBhcnJheSBvZiBSZWN0cyB3aGVyZSB3ZSBlaXRoZXI6CisgICAgICAgIAorICAgICAgICAt
IGRyYXcgYSBzaW5nbGUgcm91bmRlZCByZWN0YW5nbGUgaWYgdGhlcmUgaXMgb25seSBhIHNpbmds
ZSBSZWN0IHByb3ZpZGVkCisgICAgICAgIC0gZHJhdyB0d28gZGlzY29ubmVjdGVkIG9wZW4tZW5k
ZWQgcmVjdHMgaWYgd2UncmUgcHJvdmlkZWQgd2l0aCB0d28gbm9uLW92ZXJsYXBwaW5nIFJlY3Rz
CisgICAgICAgIC0gZHJhdyBhIHBvbHlnb24gc3Vycm91bmRpbmcgYWxsIHByb3ZpZGVkIFJlY3Rz
IGluIGFsbCBvdGhlciBjYXNlcworCisgICAgICAgIE5vIG1hdHRlciBob3cgdGhlIEhvdmVyTWVu
dSBpcyBkcmF3biwgdGhlIGRyYXdpbmcgaXMgcGVyZm9ybWVkIGluIFNWRyB3aXRoIGVpdGhlciA8
cmVjdD4gb3IgYSA8cGF0aD4gZWxlbWVudHMuCisKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Ib3Zl
ck1lbnUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhvdmVyTWVudS5wcm90b3R5cGUucHJlc2Vu
dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSG92ZXJNZW51LnByb3RvdHlwZS5kaXNtaXNzKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5Ib3Zlck1lbnUucHJvdG90eXBlLmhhbmRsZUV2ZW50KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5Ib3Zlck1lbnUucHJvdG90eXBlLl9oYW5kbGVDbGlja0V2
ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Ib3Zlck1lbnUucHJvdG90eXBlLl9kcmF3T3V0
bGluZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSG92ZXJNZW51LnByb3RvdHlwZS5fYWRkUmVj
dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSG92ZXJNZW51LnByb3RvdHlwZS5fYWRkUGF0aCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuSG92ZXJNZW51LnByb3RvdHlwZS5fZHJhd1NpbmdsZUxp
bmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhvdmVyTWVudS5wcm90b3R5cGUuX2RyYXdUd29O
b25PdmVybGFwcGluZ0xpbmVzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Ib3Zlck1lbnUucHJv
dG90eXBlLl9kcmF3T3ZlcmxhcHBpbmdMaW5lcyk6CisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNl
L01haW4uaHRtbDoKKyAgICAgICAgTGluayB0byB0aGUgbmV3IENvZGVNaXJyb3JFZGl0aW5nQ29u
dHJvbGxlciBjbGFzcy4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTWFpbi5qczoKKyAgICAg
ICAgRXhwb3NlIGEgbmV3IG1lY2hhbmlzbSB0byBkZWFsIHdpdGggd2luZG93LWxldmVsIGhhbmRs
aW5nIG9mIGtleWRvd24gZXZlbnRzIGluIG9yZGVyIHRvIGFsbG93CisgICAgICAgIGEgbGlzdCBv
ZiBoYW5kbGVycyB0byBhY2NlcHQgb3IgcmVqZWN0IGRlYWxpbmcgd2l0aCB0aGUgcHJvdmlkZWQg
a2V5ZG93biBldmVudCBiYXNlZCBvbiB0aGUgb3JkZXIKKyAgICAgICAgdGhleSB3ZXJlIHJlZ2lz
dGVyZWQsIGluIG1vc3QgcmVjZW50IHRvIG9sZGVzdCByZWdpc3RlcmVkIGhhbmRsZXIuIFRoaXMg
YWxsb3dzLCBmb3IgaW5zdGFuY2UsIGZvcgorICAgICAgICBhIG1vcmUgZ3JhY2VmdWwgaGFuZGxp
bmcgb2YgdGhlIEVzYy4ga2V5IGJlaW5nIHByZXNzZWQgaW4gdGhlIENvZGVNaXJyb3JFZGl0aW5n
Q29udHJvbGxlciBhbmQKKyAgICAgICAgYnlwYXNzZXMgdGhlIERPTSBzdHJ1Y3R1cmUgYWxsb3dp
bmcgZm9yIG9iamVjdHMgbWFuYWdpbmcgZWxlbWVudHMgaW4gZGlmZmVyZW50IERPTSBoaWVyYXJj
aGllcworICAgICAgICB0byBjb21wZXRlIHdpdGggaGFuZGxpbmcgb2Yga2V5ZG93biBldmVudHMu
CisKKyAgICAgICAgKFdlYkluc3BlY3Rvci5sb2FkZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LmFkZFdpbmRvd0tleWRvd25MaXN0ZW5lcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IucmVtb3Zl
V2luZG93S2V5ZG93bkxpc3RlbmVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5fdXBkYXRlV2lu
ZG93S2V5ZG93bkxpc3RlbmVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5fc2hhcmVkV2luZG93
S2V5ZG93bkxpc3RlbmVyKToKKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvU291cmNlQ29kZVRl
eHRFZGl0b3IuY3NzOgorICAgICAgICAoLmhvdmVyLW1lbnUuY29sb3IgPiBpbWcpOgorICAgICAg
ICBVcGRhdGUgdGhlIG9mZnNldCBhcHBsaWVkIHRvIGEgSG92ZXJNZW51IGJ1dHRvbiBiYXNlZCBv
biB0aGUgY2hhbmdlIG9mIGxheW91dCBmb3Igc3VjaCBidXR0b25zIHdoaWNoCisgICAgICAgIGFy
ZSBub3cgYWJzb2x1dGVseSBwb3NpdGlvbmVkIGluIGNvZGUgYnkgSG92ZXJNZW51IHJhdGhlciB0
aGFuIGJlaW5nIGxhaWQgb3V0IHVzaW5nIHRoZSBmbGV4LWJveCBtb2RlbC4KKworICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvU291cmNlQ29kZVRleHRFZGl0b3IuanM6CisgICAgICAgIEFic3RyY3Qg
YXdheSB0aGUgYXNzdW1wdGlvbiB0aGF0IG9ubHkgYSBjb2xvciBlZGl0aW5nIGNvbnRyb2xsZXIg
bWF5IGJlIHVzZWQgdG8gZWRpdCB0ZXh0IG1hcmtlcnMgaW4KKyAgICAgICAgYSBzb3VyY2UgY29k
ZSB0ZXh0IGVkaXRvci4KKworICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRp
dG9yLnByb3RvdHlwZS5oaWRkZW4pOgorICAgICAgICBFbnN1cmUgd2UgcmVtb3ZlIGFueSBjdXJy
ZW50bHktZGlzcGxheWVkIGhvdmVyIG1lbnUgZm9yIGFuIGVkaXRpbmcgY29udHJvbGxlciB3aGVu
IHRoZSBlZGl0b3IgaXMgaGlkZGVuLgorICAgICAgICBUaGlzIHdvdWxkIGhhcHBlbiBpbiB0aGUg
c2l0dWF0aW9uIHdoZXJlIGEga2V5Ym9hcmQgc2hvcnRjdXQgd2FzIHVzZWQgdG8ganVtcCB0byBh
bm90aGVyIHBhcnQgb2YgdGhlCisgICAgICAgIFdlYiBJbnNwZWN0b3IgVUkgd2l0aG91dCB1c2lu
ZyB0aGUgbW91c2UuCisKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRv
ci5wcm90b3R5cGUuY29udGVudERpZENoYW5nZSk6CisgICAgICAgIFNpbmNlIHdlJ3JlIG5vdyB3
b3JraW5nIHdpdGggdGV4dCByYW5nZXMgcmF0aGVyIHRoYW4gbGluZXMsIHJlbW92ZSB0aGUgY29k
ZSB3aGVyZSB3ZSdkIHdvcmsgb3V0IGEgc2V0IG9mCisgICAgICAgIGNoYW5nZWQgbGluZXMgYW5k
IGNhbGwgLl91cGRhdGVFZGl0YWJsZU1hcmtlcnMoKSB3aXRoIHRoZSBjaGFuZ2VkIHJhbmdlIGRp
cmVjdGx5IGluc3RlYWQuCisKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVk
aXRvci5wcm90b3R5cGUuX2NvbnRlbnREaWRQb3B1bGF0ZSk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuU291cmNlQ29kZVRleHRFZGl0b3IucHJvdG90eXBlLnRva2VuVHJhY2tpbmdDb250cm9sbGVy
TmV3SGlnaGxpZ2h0Q2FuZGlkYXRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VDb2Rl
VGV4dEVkaXRvci5wcm90b3R5cGUudG9rZW5UcmFja2luZ0NvbnRyb2xsZXJNb3VzZU91dE9mSG92
ZXJlZE1hcmtlcik6CisgICAgICAgIEFkb3B0IHRoZSBtb3JlIGdlbmVyaWMgbWV0aG9kIG5hbWVz
IHJhdGhlciB0aGFuIGNvbG9yLXNwZWNpZmljIG9uZXMuCisKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUuX3Nob3dQb3BvdmVyKToKKyAgICAgICAg
V2hlbiBzaG93aW5nIHRoZSBwb3BvdmVyIG91dHNpZGUgb2YgdGhlIHVzZSBvZiBhIENvZGVNaXJy
b3JFZGl0aW5nQ29udHJvbGxlciwgc3VjaCBhcyBhIEphdmFTY3JpcHQgZXhwcmVzc2lvbgorICAg
ICAgICB3aGVuIGRlYnVnZ2luZywgYWxzbyBkZWFsIHdpdGggdGhlIHBvc3NpYmlsaXR5IG9mIHRo
ZSBoaWdobGlnaHRlZCByYW5nZSBjb250YWluaW5nIG11bHRpcGxlIGxpbmVzIHJhdGhlcgorICAg
ICAgICB0aGFuIGFzc3VtZSBhIHNpbmdsZSBsaW5lLgorCisgICAgICAgIChXZWJJbnNwZWN0b3Iu
U291cmNlQ29kZVRleHRFZGl0b3IucHJvdG90eXBlLl91cGRhdGVFZGl0YWJsZU1hcmtlcnMpOgor
ICAgICAgICBNb3JlIGdlbmVyaWMgbWV0aG9kIG5hbWUgdG8gc3VwcG9ydCBmdXR1cmUsIG5vbi1j
b2xvciBlZGl0aW5nIGNvbnRyb2xsZXJzLgorCisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNl
Q29kZVRleHRFZGl0b3IucHJvdG90eXBlLl90b2tlblRyYWNraW5nQ29udHJvbGxlckhpZ2hsaWdo
dGVkTWFya2VkRXhwcmVzc2lvbik6CisgICAgICAgIEZpbmQgdGhlIG91dGVybW9zdCBtYXJrZXIg
aW4gdGhlIGxpc3Qgb2YgbWFya2VycyBwcm92aWRlZCBzdWNoIHRoYXQgYSBtYXJrZXIgY29udGFp
bmluZyBvdGhlciBtYXJrZXJzCisgICAgICAgIHNob3dzIHRoZSBVSSBmb3IgdGhlIGNvbnRhaW5p
bmcgbWFya2VyLiBGb3IgaW5zdGFuY2UsIGEgZ3JhZGllbnQgbWFya2VyIHdvdWxkIGNvbnRhaW4g
c2V2ZXJhbCBjb2xvcgorICAgICAgICBtYXJrZXJzIGFuZCBpdCdzIHByZWZlcmFibGUgdG8gc2hv
dyB0aGUgZWRpdGluZyBVSSBmb3IgdGhlIHdob2xlIGdyYWRpZW50IHJhdGhlciB0aGFuIGEgc3Bl
Y2lmaWMgY29sb3IuCisKKyAgICAgICAgQWRkaXRpb25hbGx5LCBhZG9wdCBtb3JlIGdlbmVyaWMg
aXZhcnMgYW5kIG1ldGhvZCBuYW1lcyB0byBzdXBwb3J0IGZ1dHVyZSwgbm9uLWNvbG9yIGVkaXRp
bmcgY29udHJvbGxlcnMuCisKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVk
aXRvci5wcm90b3R5cGUuX2Rpc21pc3NFZGl0aW5nQ29udHJvbGxlcik6CisgICAgICAgIFN1cHBv
cnQgZm9yIG5ldyBwYXJhbWV0ZXIgaW5zdHJ1Y3RpbmcgdGhhdCB0aGUgZWRpdGluZyBjb250cm9s
bGVyIGRpc21pc3NhbCBzaG91bGQgYmUgaW5zdGFudCByYXRoZXIgdGhhbgorICAgICAgICBhbmlt
YXRlZCwgd2hpY2ggaXMgdGhlIGRlZmF1bHQuIFRoaXMgaXMgdXNlZnVsIHdoZW4sIGZvciBpbnN0
YW5jZSwgdGhlIHRleHQgZWRpdG9yIGlzIGNsZWFyZWQuCisKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUuZWRpdGluZ0NvbnRyb2xsZXJEaWRTdGFy
dEVkaXRpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnBy
b3RvdHlwZS5lZGl0aW5nQ29udHJvbGxlckRpZEZpbmlzaEVkaXRpbmcpOgorICAgICAgICBBZG9w
dCB0aGUgbW9yZSBnZW5lcmljIG1ldGhvZCBuYW1lcyByYXRoZXIgdGhhbiBjb2xvci1zcGVjaWZp
YyBvbmVzLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9UZXh0RWRpdG9yLmpzOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3IucHJvdG90eXBlLnJlY3RzRm9yUmFuZ2UpOgorICAg
ICAgICBSZW1vdmUgLmJvdW5kc0ZvclJhbmdlKCkgaW4gZmF2b3Igb2YgdGhpcyBuZXcgbWV0aG9k
IHdoZXJlIHdlIHJldHVybiBhIHNlcmllcyBvZiByZWN0cyBzbyB0aGF0IHdlIG1heQorICAgICAg
ICBkcmF3IGEgbW9yZSBwbGVhc2luZyBIb3Zlck1lbnUuCisKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5UZXh0RWRpdG9yLnByb3RvdHlwZS5jcmVhdGVDb2xvck1hcmtlcnMpOgorICAgICAgICBVc2Ug
YSBUZXh0UmFuZ2VyIHJhdGhlciB0aGFuIGEgc2luZ2xlIGxpbmUgbnVtYmVyIHRvIG1hdGNoIHRo
ZSB1bmRlcmx5aW5nIENvZGVNaXJyb3IgZXh0ZW5zaW9uIG1ldGhvZC4KKworICAgICAgICAoV2Vi
SW5zcGVjdG9yLlRleHRFZGl0b3IucHJvdG90eXBlLmVkaXRpbmdDb250cm9sbGVyRm9yTWFya2Vy
KToKKyAgICAgICAgVXNlIHRoZSBwcm92aWRlZCBUZXh0TWFya2VyJ3MgdHlwZSB0byBwcm92aWRl
IHRoZSBtb3N0IGFkZXF1YXRlIENvZGVNaXJyb3JFZGl0aW5nQ29udHJvbGxlciBjbGFzcy4KKwor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVGV4dE1hcmtlci5qczoKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5UZXh0TWFya2VyLnByb3RvdHlwZS5nZXQgcmVjdHMpOgorICAgICAgICBSZW1vdmUgdGhl
IC5ib3VuZHMgcHJvcGVydHkgaW4gZmF2b3Igb2YgLnJlY3RzIHRvIG1hdGNoIHRoZSB1bmRlcmx5
aW5nIENvZGVNaXJyb3IgZXh0ZW5zaW9uIG1ldGhvZC4KKwogMjAxNC0wMi0xOCAgSmFtZXMgQ3Jh
aWcgIDxqY3JhaWdAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IEFYOiBtb3Jl
IHByb3BlcnRpZXM6IGV4aXN0cywgcmVxdWlyZWQsIGFuZCBpbnZhbGlkIChleGlzdHMgd2FzIHBy
ZXZpb3VzbHkgY29tYmluZWQgd2l0aCBpZ25vcmVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9DU1NTdHlsZURlY2xhcmF0aW9u
VGV4dEVkaXRvci5qcwppbmRleCA1OTEyYzM2YWQxOTQ2NjEwZmJhZTc0YzU0MDQzNDY5NTczMzY5
MTk2Li44ZjE2MmE5MTE0YzI0OGFlN2IyZjFmYmFjMjA5YTkzZTAzOTBkZTExIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9DU1NTdHlsZURlY2xhcmF0aW9u
VGV4dEVkaXRvci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9D
U1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5qcwpAQCAtMzkwLDggKzM5MCwxMCBAQCBXZWJJ
bnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IucHJvdG90eXBlID0gewogICAg
IHsKICAgICAgICAgZnVuY3Rpb24gdXBkYXRlKCkKICAgICAgICAgeworICAgICAgICAgICAgdmFy
IHJhbmdlID0gdHlwZW9mIGxpbmVOdW1iZXIgPT09ICJudW1iZXIiID8gbmV3IFdlYkluc3BlY3Rv
ci5UZXh0UmFuZ2UobGluZU51bWJlciwgMCwgbGluZU51bWJlciArIDEsIDApIDogbnVsbDsKKwog
ICAgICAgICAgICAgLy8gTG9vayBmb3IgY29sb3Igc3RyaW5ncyBhbmQgYWRkIHN3YXRjaGVzIGlu
IGZyb250IG9mIHRoZW0uCi0gICAgICAgICAgICB0aGlzLl9jb2RlTWlycm9yLmNyZWF0ZUNvbG9y
TWFya2VycyhsaW5lTnVtYmVyLCBmdW5jdGlvbihtYXJrZXIsIGNvbG9yLCBjb2xvclN0cmluZykg
eworICAgICAgICAgICAgdGhpcy5fY29kZU1pcnJvci5jcmVhdGVDb2xvck1hcmtlcnMocmFuZ2Us
IGZ1bmN0aW9uKG1hcmtlciwgY29sb3IsIGNvbG9yU3RyaW5nKSB7CiAgICAgICAgICAgICAgICAg
dmFyIHN3YXRjaEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICAg
ICAgICAgICAgICAgc3dhdGNoRWxlbWVudC50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygi
Q2xpY2sgdG8gb3BlbiBhIGNvbG9ycGlja2VyLiBTaGlmdC1jbGljayB0byBjaGFuZ2UgY29sb3Ig
Zm9ybWF0LiIpOwogICAgICAgICAgICAgICAgIHN3YXRjaEVsZW1lbnQuY2xhc3NOYW1lID0gV2Vi
SW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yLkNvbG9yU3dhdGNoRWxlbWVu
dFN0eWxlQ2xhc3NOYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvQ29kZU1pcnJvckFkZGl0aW9ucy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0NvZGVNaXJyb3JBZGRpdGlvbnMuanMKaW5kZXggNzI3NmI5MjViZjNkYzQz
NDhlNThkMWJkZDM1MTAzYjk2MzZkZTA1ZC4uNDgzNGM1YzEyZTgyYWI0MmZiOWZiMzc4MmQ0ZTlk
YWNkZGVlNTE0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvQ29kZU1pcnJvckFkZGl0aW9ucy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Db2RlTWlycm9yQWRkaXRpb25zLmpzCkBAIC00MTgsMTcgKzQxOCw1MCBAQAog
ICAgICAgICAgICAgcmV0dXJuIENvZGVNaXJyb3IuUGFzczsKICAgICB9CiAKLSAgICBDb2RlTWly
cm9yLmRlZmluZUV4dGVuc2lvbigiYm91bmRzRm9yUmFuZ2UiLCBmdW5jdGlvbihyYW5nZSkgewot
ICAgICAgICB2YXIgZmlyc3RDaGFyQ29vcmRzID0gdGhpcy5jdXJzb3JDb29yZHMocmFuZ2Uuc3Rh
cnQpOwotICAgICAgICB2YXIgbGFzdENoYXJDb29yZHMgPSB0aGlzLmN1cnNvckNvb3JkcyhyYW5n
ZS5lbmQpOwotICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5SZWN0KGZpcnN0Q2hhckNv
b3Jkcy5sZWZ0LCBmaXJzdENoYXJDb29yZHMudG9wLCBsYXN0Q2hhckNvb3Jkcy5yaWdodCAtIGZp
cnN0Q2hhckNvb3Jkcy5sZWZ0LCBmaXJzdENoYXJDb29yZHMuYm90dG9tIC0gZmlyc3RDaGFyQ29v
cmRzLnRvcCk7CisgICAgQ29kZU1pcnJvci5kZWZpbmVFeHRlbnNpb24oInJlY3RzRm9yUmFuZ2Ui
LCBmdW5jdGlvbihyYW5nZSkgeworICAgICAgICB2YXIgbGluZVJlY3RzID0gW107CisKKyAgICAg
ICAgZm9yICh2YXIgbGluZSA9IHJhbmdlLnN0YXJ0LmxpbmU7IGxpbmUgPD0gcmFuZ2UuZW5kLmxp
bmU7ICsrbGluZSkgeworICAgICAgICAgICAgdmFyIGxpbmVDb250ZW50ID0gdGhpcy5nZXRMaW5l
KGxpbmUpOworCisgICAgICAgICAgICB2YXIgc3RhcnRDaGFyID0gbGluZSA9PT0gcmFuZ2Uuc3Rh
cnQubGluZSA/IHJhbmdlLnN0YXJ0LmNoIDogKGxpbmVDb250ZW50Lmxlbmd0aCAtIGxpbmVDb250
ZW50LnRyaW1MZWZ0KCkubGVuZ3RoKTsKKyAgICAgICAgICAgIHZhciBlbmRDaGFyID0gbGluZSA9
PT0gcmFuZ2UuZW5kLmxpbmUgPyByYW5nZS5lbmQuY2ggOiBsaW5lQ29udGVudC5sZW5ndGg7Cisg
ICAgICAgICAgICB2YXIgZmlyc3RDaGFyQ29vcmRzID0gdGhpcy5jdXJzb3JDb29yZHMoe2NoOiBz
dGFydENoYXIsIGxpbmU6IGxpbmV9KTsKKyAgICAgICAgICAgIHZhciBlbmRDaGFyQ29vcmRzID0g
dGhpcy5jdXJzb3JDb29yZHMoe2NoOiBlbmRDaGFyLCBsaW5lOiBsaW5lfSk7CisKKyAgICAgICAg
ICAgIC8vIEhhbmRsZSBsaW5lIHdyYXBwaW5nLgorICAgICAgICAgICAgaWYgKGZpcnN0Q2hhckNv
b3Jkcy5ib3R0b20gIT09IGVuZENoYXJDb29yZHMuYm90dG9tKSB7CisgICAgICAgICAgICAgICAg
dmFyIG1heFkgPSAtTnVtYmVyLk1BWF9WQUxVRTsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBj
aCA9IHN0YXJ0Q2hhcjsgY2ggPD0gZW5kQ2hhcjsgKytjaCkgeworICAgICAgICAgICAgICAgICAg
ICB2YXIgY29vcmRzID0gdGhpcy5jdXJzb3JDb29yZHMoe2NoOiBjaCwgbGluZTogbGluZX0pOwor
ICAgICAgICAgICAgICAgICAgICBpZiAoY29vcmRzLmJvdHRvbSA+IG1heFkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChjaCA+IHN0YXJ0Q2hhcikgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHZhciBtYXhYID0gTWF0aC5jZWlsKHRoaXMuY3Vyc29yQ29vcmRzKHtjaDogY2gg
LSAxLCBsaW5lOiBsaW5lfSkucmlnaHQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxp
bmVSZWN0cy5wdXNoKG5ldyBXZWJJbnNwZWN0b3IuUmVjdChtaW5YLCBtaW5ZLCBtYXhYIC0gbWlu
WCwgbWF4WSAtIG1pblkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgICAgIHZhciBtaW5YID0gTWF0aC5mbG9vcihjb29yZHMubGVmdCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICB2YXIgbWluWSA9IE1hdGguZmxvb3IoY29vcmRzLnRvcCkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG1heFkgPSBNYXRoLmNlaWwoY29vcmRzLmJvdHRvbSk7CisgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbWF4
WCA9IE1hdGguY2VpbChjb29yZHMucmlnaHQpOworICAgICAgICAgICAgICAgIGxpbmVSZWN0cy5w
dXNoKG5ldyBXZWJJbnNwZWN0b3IuUmVjdChtaW5YLCBtaW5ZLCBtYXhYIC0gbWluWCwgbWF4WSAt
IG1pblkpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdmFyIG1pblgg
PSBNYXRoLmZsb29yKGZpcnN0Q2hhckNvb3Jkcy5sZWZ0KTsKKyAgICAgICAgICAgICAgICB2YXIg
bWluWSA9IE1hdGguZmxvb3IoZmlyc3RDaGFyQ29vcmRzLnRvcCk7CisgICAgICAgICAgICAgICAg
dmFyIG1heFggPSBNYXRoLmNlaWwoZW5kQ2hhckNvb3Jkcy5yaWdodCk7CisgICAgICAgICAgICAg
ICAgdmFyIG1heFkgPSBNYXRoLmNlaWwoZW5kQ2hhckNvb3Jkcy5ib3R0b20pOworICAgICAgICAg
ICAgICAgIGxpbmVSZWN0cy5wdXNoKG5ldyBXZWJJbnNwZWN0b3IuUmVjdChtaW5YLCBtaW5ZLCBt
YXhYIC0gbWluWCwgbWF4WSAtIG1pblkpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICByZXR1cm4gbGluZVJlY3RzOwogICAgIH0pOwogCi0gICAgQ29kZU1pcnJvci5kZWZpbmVF
eHRlbnNpb24oImNyZWF0ZUNvbG9yTWFya2VycyIsIGZ1bmN0aW9uKGxpbmVOdW1iZXIsIGNhbGxi
YWNrKSB7CisgICAgQ29kZU1pcnJvci5kZWZpbmVFeHRlbnNpb24oImNyZWF0ZUNvbG9yTWFya2Vy
cyIsIGZ1bmN0aW9uKHJhbmdlLCBjYWxsYmFjaykgewogICAgICAgICB2YXIgY3JlYXRlZE1hcmtl
cnMgPSBbXTsKIAotICAgICAgICB2YXIgc3RhcnQgPSB0eXBlb2YgbGluZU51bWJlciA9PT0gIm51
bWJlciIgPyBsaW5lTnVtYmVyIDogMDsKLSAgICAgICAgdmFyIGVuZCA9IHR5cGVvZiBsaW5lTnVt
YmVyID09PSAibnVtYmVyIiA/IGxpbmVOdW1iZXIgKyAxIDogdGhpcy5saW5lQ291bnQoKTsKKyAg
ICAgICAgdmFyIHN0YXJ0ID0gcmFuZ2UgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuVGV4dFJhbmdl
ID8gcmFuZ2Uuc3RhcnRMaW5lIDogMDsKKyAgICAgICAgdmFyIGVuZCA9IHJhbmdlIGluc3RhbmNl
b2YgV2ViSW5zcGVjdG9yLlRleHRSYW5nZSA/IHJhbmdlLmVuZExpbmUgKyAxIDogdGhpcy5saW5l
Q291bnQoKTsKIAogICAgICAgICAvLyBNYXRjaGVzIHJnYmEoMCwgMCwgMCwgMC41KSwgcmdiKDAs
IDAsIDApLCBoc2woKSwgaHNsYSgpLCAjZmZmLCAjZmZmZmZmLCB3aGl0ZQogICAgICAgICBjb25z
dCBjb2xvclJlZ2V4ID0gLygoPzpyZ2J8aHNsKWE/XChbXildK1wpfCNbMC05YS1mQS1GXXs2fXwj
WzAtOWEtZkEtRl17M318XGJcdytcYig/IVstLl0pKS9nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29kZU1pcnJvckNvbG9yRWRpdGluZ0NvbnRyb2xs
ZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db2RlTWlycm9yQ29s
b3JFZGl0aW5nQ29udHJvbGxlci5qcwppbmRleCBiZDI0MmEwYTdjMzY4NThiZmRhMTJhMTU1MWJj
YjViZTExNDBhNDBlLi5lMGMyZThhNDViZGZmZDZmMWU4ZjMzY2Y5YjQ3YzllYWVkYmNmMDE2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db2RlTWlycm9y
Q29sb3JFZGl0aW5nQ29udHJvbGxlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Db2RlTWlycm9yQ29sb3JFZGl0aW5nQ29udHJvbGxlci5qcwpAQCAtMjUsMTM3
ICsyNSw0MSBAQAogCiBXZWJJbnNwZWN0b3IuQ29kZU1pcnJvckNvbG9yRWRpdGluZ0NvbnRyb2xs
ZXIgPSBmdW5jdGlvbihjb2RlTWlycm9yLCBtYXJrZXIpCiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9i
amVjdC5jYWxsKHRoaXMpOwotCi0gICAgdGhpcy5fY29kZU1pcnJvciA9IGNvZGVNaXJyb3I7Ci0g
ICAgdGhpcy5fbWFya2VyID0gbWFya2VyOwotICAgIHRoaXMuX2RlbGVnYXRlID0gbnVsbDsKLQot
ICAgIHRoaXMuX3JhbmdlID0gbWFya2VyLnJhbmdlOwotICAgIHRoaXMuX2NvbG9yID0gV2ViSW5z
cGVjdG9yLkNvbG9yLmZyb21TdHJpbmcodGhpcy50ZXh0KTsKLQotICAgIHRoaXMuX2tleWJvYXJk
U2hvcnRjdXRFc2MgPSBuZXcgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQobnVsbCwgV2Vi
SW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuS2V5LkVzY2FwZSk7CisgICAgV2ViSW5zcGVjdG9y
LkNvZGVNaXJyb3JFZGl0aW5nQ29udHJvbGxlci5jYWxsKHRoaXMsIGNvZGVNaXJyb3IsIG1hcmtl
cik7CiB9CiAKIFdlYkluc3BlY3Rvci5Db2RlTWlycm9yQ29sb3JFZGl0aW5nQ29udHJvbGxlci5w
cm90b3R5cGUgPSB7CiAgICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5Db2RlTWlycm9yQ29s
b3JFZGl0aW5nQ29udHJvbGxlciwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5PYmplY3Qu
cHJvdG90eXBlLAorICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JFZGl0aW5n
Q29udHJvbGxlci5wcm90b3R5cGUsCiAgICAgCiAgICAgLy8gUHVibGljCi0gICAgCi0gICAgZ2V0
IG1hcmtlcigpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fbWFya2VyOwotICAgIH0sCi0g
ICAgCi0gICAgZ2V0IHJhbmdlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9yYW5nZTsK
LSAgICB9LAogCi0gICAgZ2V0IGNvbG9yKCkKKyAgICBnZXQgaW5pdGlhbFZhbHVlKCkKICAgICB7
Ci0gICAgICAgIHJldHVybiB0aGlzLl9jb2xvcjsKLSAgICB9LAotICAgIAotICAgIHNldCBjb2xv
cihjb2xvcikKLSAgICB7Ci0gICAgICAgIHRoaXMudGV4dCA9IGNvbG9yLnRvU3RyaW5nKCk7Ci0g
ICAgICAgIHRoaXMuX2NvbG9yID0gY29sb3I7CisgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3Iu
Q29sb3IuZnJvbVN0cmluZyh0aGlzLnRleHQpOwogICAgIH0sCiAKLSAgICBnZXQgZGVsZWdhdGUo
KQorICAgIGdldCBjc3NDbGFzc05hbWUoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2Rl
bGVnYXRlOworICAgICAgICByZXR1cm4gImNvbG9yIjsKICAgICB9LAogCi0gICAgc2V0IGRlbGVn
YXRlKGRlbGVnYXRlKQorICAgIHBvcG92ZXJXaWxsUHJlc2VudDogZnVuY3Rpb24ocG9wb3ZlcikK
ICAgICB7Ci0gICAgICAgIHRoaXMuX2RlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAgIHRoaXMu
X2NvbG9yUGlja2VyID0gbmV3IFdlYkluc3BlY3Rvci5Db2xvclBpY2tlcjsKKyAgICAgICAgdGhp
cy5fY29sb3JQaWNrZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQ29sb3JQaWNrZXIu
RXZlbnQuQ29sb3JDaGFuZ2VkLCB0aGlzLl9jb2xvclBpY2tlckNvbG9yQ2hhbmdlZCwgdGhpcyk7
CisgICAgICAgIHBvcG92ZXIuY29udGVudCA9IHRoaXMuX2NvbG9yUGlja2VyLmVsZW1lbnQ7CiAg
ICAgfSwKIAotICAgIGdldCB0ZXh0KCkKLSAgICB7Ci0gICAgICAgIHZhciBmcm9tID0ge2xpbmU6
IHRoaXMuX3JhbmdlLnN0YXJ0TGluZSwgY2g6IHRoaXMuX3JhbmdlLnN0YXJ0Q29sdW1ufTsKLSAg
ICAgICAgdmFyIHRvID0ge2xpbmU6IHRoaXMuX3JhbmdlLmVuZExpbmUsIGNoOiB0aGlzLl9yYW5n
ZS5lbmRDb2x1bW59OwotICAgICAgICByZXR1cm4gdGhpcy5fY29kZU1pcnJvci5nZXRSYW5nZShm
cm9tLCB0byk7Ci0gICAgfSwKLSAgICAKLSAgICBzZXQgdGV4dCh0ZXh0KQotICAgIHsKLSAgICAg
ICAgdmFyIGZyb20gPSB7bGluZTogdGhpcy5fcmFuZ2Uuc3RhcnRMaW5lLCBjaDogdGhpcy5fcmFu
Z2Uuc3RhcnRDb2x1bW59OwotICAgICAgICB2YXIgdG8gPSB7bGluZTogdGhpcy5fcmFuZ2UuZW5k
TGluZSwgY2g6IHRoaXMuX3JhbmdlLmVuZENvbHVtbn07Ci0gICAgICAgIHRoaXMuX2NvZGVNaXJy
b3IucmVwbGFjZVJhbmdlKHRleHQsIGZyb20sIHRvKTsKLQotICAgICAgICB2YXIgbGluZXMgPSB0
ZXh0LnNwbGl0KCJcbiIpOwotICAgICAgICB2YXIgZW5kTGluZSA9IHRoaXMuX3JhbmdlLnN0YXJ0
TGluZSArIGxpbmVzLmxlbmd0aCAtIDE7Ci0gICAgICAgIHZhciBlbmRDb2x1bW4gPSBsaW5lcy5s
ZW5ndGggPiAxID8gbGluZXMubGFzdFZhbHVlLmxlbmd0aCA6IHRoaXMuX3JhbmdlLnN0YXJ0Q29s
dW1uICsgdGV4dC5sZW5ndGg7Ci0gICAgICAgIHRoaXMuX3JhbmdlID0gbmV3IFdlYkluc3BlY3Rv
ci5UZXh0UmFuZ2UodGhpcy5fcmFuZ2Uuc3RhcnRMaW5lLCB0aGlzLl9yYW5nZS5zdGFydENvbHVt
biwgZW5kTGluZSwgZW5kQ29sdW1uKTsKLSAgICB9LAotICAgIAotICAgIHByZXNlbnRIb3Zlck1l
bnU6IGZ1bmN0aW9uKCkKKyAgICBwb3BvdmVyRGlkUHJlc2VudDogZnVuY3Rpb24ocG9wb3ZlcikK
ICAgICB7Ci0gICAgICAgIHRoaXMuX2hvdmVyTWVudSA9IG5ldyBXZWJJbnNwZWN0b3IuSG92ZXJN
ZW51KHRoaXMpOwotICAgICAgICB0aGlzLl9ob3Zlck1lbnUuZWxlbWVudC5jbGFzc0xpc3QuYWRk
KCJjb2xvciIpOwotICAgICAgICB0aGlzLl9ib3VuZHMgPSB0aGlzLl9tYXJrZXIuYm91bmRzOwot
ICAgICAgICB0aGlzLl9ob3Zlck1lbnUucHJlc2VudCh0aGlzLl9ib3VuZHMpOworICAgICAgICB0
aGlzLl9jb2xvclBpY2tlci5jb2xvciA9IHRoaXMuX3ZhbHVlOwogICAgIH0sCiAKLSAgICBkaXNt
aXNzSG92ZXJNZW51OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlzLl9ob3Zlck1lbnUu
ZGlzbWlzcygpOwotICAgIH0sCi0KLSAgICAvLyBQcm90ZWN0ZWQKLQotICAgIGhhbmRsZUV2ZW50
OiBmdW5jdGlvbihldmVudCkKLSAgICB7Ci0gICAgICAgIGlmICghdGhpcy5fa2V5Ym9hcmRTaG9y
dGN1dEVzYy5tYXRjaGVzRXZlbnQoZXZlbnQpIHx8ICF0aGlzLl9wb3BvdmVyLnZpc2libGUpCi0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIAotICAgICAgICB0aGlzLmNvbG9yID0gdGhpcy5f
b3JpZ2luYWxDb2xvcjsKLSAgICAgICAgdGhpcy5fcG9wb3Zlci5kaXNtaXNzKCk7Ci0KLSAgICAg
ICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7Ci0gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0
KCk7Ci0gICAgfSwKLQotICAgIGhvdmVyTWVudUJ1dHRvbldhc1ByZXNzZWQ6IGZ1bmN0aW9uKGhv
dmVyTWVudSkKLSAgICB7Ci0gICAgICAgIHZhciBjb2xvclBpY2tlciA9IG5ldyBXZWJJbnNwZWN0
b3IuQ29sb3JQaWNrZXI7Ci0gICAgICAgIGNvbG9yUGlja2VyLmFkZEV2ZW50TGlzdGVuZXIoV2Vi
SW5zcGVjdG9yLkNvbG9yUGlja2VyLkV2ZW50LkNvbG9yQ2hhbmdlZCwgdGhpcy5fY29sb3JQaWNr
ZXJDb2xvckNoYW5nZWQsIHRoaXMpOwotCi0gICAgICAgIHRoaXMuX3BvcG92ZXIgPSBuZXcgV2Vi
SW5zcGVjdG9yLlBvcG92ZXIodGhpcyk7Ci0gICAgICAgIHRoaXMuX3BvcG92ZXIuY29udGVudCA9
IGNvbG9yUGlja2VyLmVsZW1lbnQ7Ci0gICAgICAgIHRoaXMuX3BvcG92ZXIucHJlc2VudCh0aGlz
Ll9ib3VuZHMucGFkKDIpLCBbV2ViSW5zcGVjdG9yLlJlY3RFZGdlLk1BWF9ZLCBXZWJJbnNwZWN0
b3IuUmVjdEVkZ2UuTUFYX1hdKTsKLQotICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigi
a2V5ZG93biIsIHRoaXMsIHRydWUpOwotCi0gICAgICAgIGNvbG9yUGlja2VyLmNvbG9yID0gdGhp
cy5fY29sb3I7Ci0KLSAgICAgICAgaG92ZXJNZW51LmRpc21pc3MoKTsKLQotICAgICAgICBpZiAo
dGhpcy5fZGVsZWdhdGUgJiYgdHlwZW9mIHRoaXMuX2RlbGVnYXRlLmNvbG9yRWRpdGluZ0NvbnRy
b2xsZXJEaWRTdGFydEVkaXRpbmcgPT09ICJmdW5jdGlvbiIpCi0gICAgICAgICAgICB0aGlzLl9k
ZWxlZ2F0ZS5jb2xvckVkaXRpbmdDb250cm9sbGVyRGlkU3RhcnRFZGl0aW5nKHRoaXMpOwotCi0g
ICAgICAgIHRoaXMuX29yaWdpbmFsQ29sb3IgPSB0aGlzLl9jb2xvci5jb3B5KCk7Ci0gICAgfSwK
LSAgICAKLSAgICBkaWREaXNtaXNzUG9wb3ZlcjogZnVuY3Rpb24ocG9wb3ZlcikKLSAgICB7Ci0g
ICAgICAgIGRlbGV0ZSB0aGlzLl9wb3BvdmVyOwotICAgICAgICBkZWxldGUgdGhpcy5fb3JpZ2lu
YWxDb2xvcjsKLQotICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5ZG93biIs
IHRoaXMsIHRydWUpOwotCi0gICAgICAgIGlmICh0aGlzLl9kZWxlZ2F0ZSAmJiB0eXBlb2YgdGhp
cy5fZGVsZWdhdGUuY29sb3JFZGl0aW5nQ29udHJvbGxlckRpZEZpbmlzaEVkaXRpbmcgPT09ICJm
dW5jdGlvbiIpCi0gICAgICAgICAgICB0aGlzLl9kZWxlZ2F0ZS5jb2xvckVkaXRpbmdDb250cm9s
bGVyRGlkRmluaXNoRWRpdGluZyh0aGlzKTsKLSAgICB9LAotICAgIAogICAgIC8vIFByaXZhdGUK
ICAgICAKICAgICBfY29sb3JQaWNrZXJDb2xvckNoYW5nZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAg
IHsKLSAgICAgICAgdGhpcy5jb2xvciA9IGV2ZW50LnRhcmdldC5jb2xvcjsKKyAgICAgICAgdGhp
cy52YWx1ZSA9IGV2ZW50LnRhcmdldC5jb2xvcjsKICAgICB9ICAgIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29kZU1pcnJvckVkaXRpbmdDb250
cm9sbGVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29kZU1pcnJv
ckVkaXRpbmdDb250cm9sbGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0MjI2YWIxMTcwODA1YzIwYWE2MzY3
M2NmYjZkNzcxZmY4MzQ1NTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Db2RlTWlycm9yRWRpdGluZ0NvbnRyb2xsZXIuanMKQEAgLTAsMCAr
MSwxOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCitXZWJJbnNwZWN0b3IuQ29kZU1pcnJvckVkaXRpbmdDb250
cm9sbGVyID0gZnVuY3Rpb24oY29kZU1pcnJvciwgbWFya2VyKQoreworICAgIFdlYkluc3BlY3Rv
ci5PYmplY3QuY2FsbCh0aGlzKTsKKworICAgIHRoaXMuX2NvZGVNaXJyb3IgPSBjb2RlTWlycm9y
OworICAgIHRoaXMuX21hcmtlciA9IG1hcmtlcjsKKyAgICB0aGlzLl9kZWxlZ2F0ZSA9IG51bGw7
CisKKyAgICB0aGlzLl9yYW5nZSA9IG1hcmtlci5yYW5nZTsKKworICAgIC8vIFRoZSB2YWx1ZSBt
dXN0IHN1cHBvcnQgLnRvU3RyaW5nKCkgYW5kIC5jb3B5KCkgbWV0aG9kcy4KKyAgICB0aGlzLl92
YWx1ZSA9IHRoaXMuaW5pdGlhbFZhbHVlOworCisgICAgdGhpcy5fa2V5Ym9hcmRTaG9ydGN1dEVz
YyA9IG5ldyBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dChudWxsLCBXZWJJbnNwZWN0b3Iu
S2V5Ym9hcmRTaG9ydGN1dC5LZXkuRXNjYXBlKTsKK30KKworV2ViSW5zcGVjdG9yLkNvZGVNaXJy
b3JFZGl0aW5nQ29udHJvbGxlci5wcm90b3R5cGUgPSB7CisgICAgY29uc3RydWN0b3I6IFdlYklu
c3BlY3Rvci5Db2RlTWlycm9yRWRpdGluZ0NvbnRyb2xsZXIsCisgICAgX19wcm90b19fOiBXZWJJ
bnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZSwKKyAgICAKKyAgICAvLyBQdWJsaWMKKyAgICAKKyAg
ICBnZXQgbWFya2VyKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9tYXJrZXI7CisgICAg
fSwKKyAgICAKKyAgICBnZXQgcmFuZ2UoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3Jh
bmdlOworICAgIH0sCisKKyAgICBnZXQgdmFsdWUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRo
aXMuX3ZhbHVlOworICAgIH0sCisgICAgCisgICAgc2V0IHZhbHVlKHZhbHVlKQorICAgIHsKKyAg
ICAgICAgdGhpcy50ZXh0ID0gdmFsdWUudG9TdHJpbmcoKTsKKyAgICAgICAgdGhpcy5fdmFsdWUg
PSB2YWx1ZTsKKyAgICB9LAorCisgICAgZ2V0IGRlbGVnYXRlKCkKKyAgICB7CisgICAgICAgIHJl
dHVybiB0aGlzLl9kZWxlZ2F0ZTsKKyAgICB9LAorCisgICAgc2V0IGRlbGVnYXRlKGRlbGVnYXRl
KQorICAgIHsKKyAgICAgICAgdGhpcy5fZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICB9LAorCisg
ICAgZ2V0IHRleHQoKQorICAgIHsKKyAgICAgICAgdmFyIGZyb20gPSB7bGluZTogdGhpcy5fcmFu
Z2Uuc3RhcnRMaW5lLCBjaDogdGhpcy5fcmFuZ2Uuc3RhcnRDb2x1bW59OworICAgICAgICB2YXIg
dG8gPSB7bGluZTogdGhpcy5fcmFuZ2UuZW5kTGluZSwgY2g6IHRoaXMuX3JhbmdlLmVuZENvbHVt
bn07CisgICAgICAgIHJldHVybiB0aGlzLl9jb2RlTWlycm9yLmdldFJhbmdlKGZyb20sIHRvKTsK
KyAgICB9LAorICAgIAorICAgIHNldCB0ZXh0KHRleHQpCisgICAgeworICAgICAgICB2YXIgZnJv
bSA9IHtsaW5lOiB0aGlzLl9yYW5nZS5zdGFydExpbmUsIGNoOiB0aGlzLl9yYW5nZS5zdGFydENv
bHVtbn07CisgICAgICAgIHZhciB0byA9IHtsaW5lOiB0aGlzLl9yYW5nZS5lbmRMaW5lLCBjaDog
dGhpcy5fcmFuZ2UuZW5kQ29sdW1ufTsKKyAgICAgICAgdGhpcy5fY29kZU1pcnJvci5yZXBsYWNl
UmFuZ2UodGV4dCwgZnJvbSwgdG8pOworCisgICAgICAgIHZhciBsaW5lcyA9IHRleHQuc3BsaXQo
IlxuIik7CisgICAgICAgIHZhciBlbmRMaW5lID0gdGhpcy5fcmFuZ2Uuc3RhcnRMaW5lICsgbGlu
ZXMubGVuZ3RoIC0gMTsKKyAgICAgICAgdmFyIGVuZENvbHVtbiA9IGxpbmVzLmxlbmd0aCA+IDEg
PyBsaW5lcy5sYXN0VmFsdWUubGVuZ3RoIDogdGhpcy5fcmFuZ2Uuc3RhcnRDb2x1bW4gKyB0ZXh0
Lmxlbmd0aDsKKyAgICAgICAgdGhpcy5fcmFuZ2UgPSBuZXcgV2ViSW5zcGVjdG9yLlRleHRSYW5n
ZSh0aGlzLl9yYW5nZS5zdGFydExpbmUsIHRoaXMuX3JhbmdlLnN0YXJ0Q29sdW1uLCBlbmRMaW5l
LCBlbmRDb2x1bW4pOworICAgIH0sCisKKyAgICBnZXQgaW5pdGlhbFZhbHVlKCkKKyAgICB7Cisg
ICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuCisgICAgICAgIHJldHVybiB0aGlz
LnRleHQ7CisgICAgfSwKKyAgICAKKyAgICBnZXQgY3NzQ2xhc3NOYW1lKCkKKyAgICB7CisgICAg
ICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuCisgICAgICAgIHJldHVybiAiIjsKKyAg
ICB9LAorICAgIAorICAgIGdldCBwb3BvdmVyKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlz
Ll9wb3BvdmVyOworICAgIH0sCisKKyAgICBnZXQgcG9wb3ZlclByZWZlcnJlZEVkZ2VzKCkKKyAg
ICB7CisgICAgICAgIC8vIEJlc3QgdG8gZGlzcGxheSB0aGUgcG9wb3ZlciB0byB0aGUgbGVmdCBv
ciBhYm92ZSB0aGUgZWRpdGVkIHJhbmdlIHNpbmNlIGl0cyBlbmQgcG9zaXRpb24gbWF5IGNoYW5n
ZSwgYnV0IG5vdCBpdHMgc3RhcnQKKyAgICAgICAgLy8gcG9zaXRpb24uIFRoaXMgd2F5IHdlIG1p
bmltaXplIHRoZSBjaGFuY2VzIG9mIG92ZXJsYXlpbmcgdGhlIGVkaXRlZCByYW5nZSBhcyBpdCBj
aGFuZ2VzLgorICAgICAgICByZXR1cm4gW1dlYkluc3BlY3Rvci5SZWN0RWRnZS5NSU5fWCwgV2Vi
SW5zcGVjdG9yLlJlY3RFZGdlLk1JTl9ZLCBXZWJJbnNwZWN0b3IuUmVjdEVkZ2UuTUFYX1ksIFdl
Ykluc3BlY3Rvci5SZWN0RWRnZS5NQVhfWF07CisgICAgfSwKKworICAgIHBvcG92ZXJUYXJnZXRG
cmFtZVdpdGhSZWN0czogZnVuY3Rpb24ocmVjdHMpCisgICAgeworICAgICAgICByZXR1cm4gV2Vi
SW5zcGVjdG9yLlJlY3QudW5pb25PZlJlY3RzKHJlY3RzKTsKKyAgICB9LAorCisgICAgcHJlc2Vu
dEhvdmVyTWVudTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5faG92ZXJNZW51ID0g
bmV3IFdlYkluc3BlY3Rvci5Ib3Zlck1lbnUodGhpcyk7CisgICAgICAgIHRoaXMuX2hvdmVyTWVu
dS5lbGVtZW50LmNsYXNzTGlzdC5hZGQodGhpcy5jc3NDbGFzc05hbWUpOworICAgICAgICB0aGlz
Ll9yZWN0cyA9IHRoaXMuX21hcmtlci5yZWN0czsKKyAgICAgICAgdGhpcy5faG92ZXJNZW51LnBy
ZXNlbnQodGhpcy5fcmVjdHMpOworICAgIH0sCisKKyAgICBkaXNtaXNzSG92ZXJNZW51OiBmdW5j
dGlvbihkaXNjcmV0ZSkKKyAgICB7CisgICAgICAgIHRoaXMuX2hvdmVyTWVudS5kaXNtaXNzKGRp
c2NyZXRlKTsKKyAgICB9LAorCisgICAgcG9wb3ZlcldpbGxQcmVzZW50OiBmdW5jdGlvbihwb3Bv
dmVyKQorICAgIHsKKyAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Nlcy4KKyAgICB9
LAorCisgICAgcG9wb3ZlckRpZFByZXNlbnQ6IGZ1bmN0aW9uKHBvcG92ZXIpCisgICAgeworICAg
ICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLgorICAgIH0sCisKKyAgICAvLyBQcm90
ZWN0ZWQKKworICAgIGhhbmRsZUtleWRvd25FdmVudDogZnVuY3Rpb24oZXZlbnQpCisgICAgewor
ICAgICAgICBpZiAoIXRoaXMuX2tleWJvYXJkU2hvcnRjdXRFc2MubWF0Y2hlc0V2ZW50KGV2ZW50
KSB8fCAhdGhpcy5fcG9wb3Zlci52aXNpYmxlKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAKKyAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuX29yaWdpbmFsVmFsdWU7CisgICAg
ICAgIHRoaXMuX3BvcG92ZXIuZGlzbWlzcygpOworCisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0sCisKKyAgICBob3Zlck1lbnVCdXR0b25XYXNQcmVzc2VkOiBmdW5jdGlvbihob3Zlck1lbnUp
CisgICAgeworICAgICAgICB0aGlzLl9wb3BvdmVyID0gbmV3IFdlYkluc3BlY3Rvci5Qb3BvdmVy
KHRoaXMpOworICAgICAgICB0aGlzLnBvcG92ZXJXaWxsUHJlc2VudCh0aGlzLl9wb3BvdmVyKTsK
KyAgICAgICAgdGhpcy5fcG9wb3Zlci5wcmVzZW50KHRoaXMucG9wb3ZlclRhcmdldEZyYW1lV2l0
aFJlY3RzKHRoaXMuX3JlY3RzKS5wYWQoMiksIHRoaXMucG9wb3ZlclByZWZlcnJlZEVkZ2VzKTsK
KyAgICAgICAgdGhpcy5wb3BvdmVyRGlkUHJlc2VudCh0aGlzLl9wb3BvdmVyKTsKKworICAgICAg
ICBXZWJJbnNwZWN0b3IuYWRkV2luZG93S2V5ZG93bkxpc3RlbmVyKHRoaXMpOworCisgICAgICAg
IGhvdmVyTWVudS5kaXNtaXNzKCk7CisKKyAgICAgICAgaWYgKHRoaXMuX2RlbGVnYXRlICYmIHR5
cGVvZiB0aGlzLl9kZWxlZ2F0ZS5lZGl0aW5nQ29udHJvbGxlckRpZFN0YXJ0RWRpdGluZyA9PT0g
ImZ1bmN0aW9uIikKKyAgICAgICAgICAgIHRoaXMuX2RlbGVnYXRlLmVkaXRpbmdDb250cm9sbGVy
RGlkU3RhcnRFZGl0aW5nKHRoaXMpOworCisgICAgICAgIHRoaXMuX29yaWdpbmFsVmFsdWUgPSB0
aGlzLl92YWx1ZS5jb3B5KCk7CisgICAgfSwKKyAgICAKKyAgICBkaWREaXNtaXNzUG9wb3Zlcjog
ZnVuY3Rpb24ocG9wb3ZlcikKKyAgICB7CisgICAgICAgIGRlbGV0ZSB0aGlzLl9wb3BvdmVyOwor
ICAgICAgICBkZWxldGUgdGhpcy5fb3JpZ2luYWxWYWx1ZTsKKworICAgICAgICBXZWJJbnNwZWN0
b3IucmVtb3ZlV2luZG93S2V5ZG93bkxpc3RlbmVyKHRoaXMpOworCisgICAgICAgIGlmICh0aGlz
Ll9kZWxlZ2F0ZSAmJiB0eXBlb2YgdGhpcy5fZGVsZWdhdGUuZWRpdGluZ0NvbnRyb2xsZXJEaWRG
aW5pc2hFZGl0aW5nID09PSAiZnVuY3Rpb24iKQorICAgICAgICAgICAgdGhpcy5fZGVsZWdhdGUu
ZWRpdGluZ0NvbnRyb2xsZXJEaWRGaW5pc2hFZGl0aW5nKHRoaXMpOworICAgIH0KK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0dlb21ldHJ5LmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvR2VvbWV0cnkuanMKaW5kZXggODRm
MjhlZWMyNDkwNWMwMGRjNzUwYzVmODI0YTlhM2M4OWQyZTE3Yy4uMGU4ZWQzYmIyMmY5YTY1OGM2
OTlkOTJjZDFmYWZmZjFlNzA2ZDA3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvR2VvbWV0cnkuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvR2VvbWV0cnkuanMKQEAgLTk4LDYgKzk4LDE0IEBAIFdlYkluc3BlY3Rvci5S
ZWN0LnJlY3RGcm9tQ2xpZW50UmVjdCA9IGZ1bmN0aW9uKGNsaWVudFJlY3QpCiAgICAgcmV0dXJu
IG5ldyBXZWJJbnNwZWN0b3IuUmVjdChjbGllbnRSZWN0LmxlZnQsIGNsaWVudFJlY3QudG9wLCBj
bGllbnRSZWN0LndpZHRoLCBjbGllbnRSZWN0LmhlaWdodCk7CiB9OwogCitXZWJJbnNwZWN0b3Iu
UmVjdC51bmlvbk9mUmVjdHMgPSBmdW5jdGlvbihyZWN0cykKK3sKKyAgICB2YXIgdW5pb24gPSBy
ZWN0c1swXTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHJlY3RzLmxlbmd0aDsgKytpKQorICAg
ICAgICB1bmlvbiA9IHVuaW9uLnVuaW9uV2l0aFJlY3QocmVjdHNbaV0pOworICAgIHJldHVybiB1
bmlvbjsKK307CisKIFdlYkluc3BlY3Rvci5SZWN0LnByb3RvdHlwZSA9IHsKICAgICBjb25zdHJ1
Y3RvcjogV2ViSW5zcGVjdG9yLlJlY3QsCiAKQEAgLTE4Miw2ICsxOTAsMTUgQEAgV2ViSW5zcGVj
dG9yLlJlY3QucHJvdG90eXBlID0gewogICAgICAgICBpbnRlcnNlY3Rpb24ub3JpZ2luLnkgPSB5
MTsKICAgICAgICAgaW50ZXJzZWN0aW9uLnNpemUuaGVpZ2h0ID0geTIgLSB5MTsKICAgICAgICAg
cmV0dXJuIGludGVyc2VjdGlvbjsKKyAgICB9LAorICAgIAorICAgIHVuaW9uV2l0aFJlY3Q6IGZ1
bmN0aW9uKHJlY3QpCisgICAgeworICAgICAgICB2YXIgeCA9IE1hdGgubWluKHRoaXMubWluWCgp
LCByZWN0Lm1pblgoKSk7CisgICAgICAgIHZhciB5ID0gTWF0aC5taW4odGhpcy5taW5ZKCksIHJl
Y3QubWluWSgpKTsKKyAgICAgICAgdmFyIHdpZHRoID0gTWF0aC5tYXgodGhpcy5tYXhYKCksIHJl
Y3QubWF4WCgpKSAtIHg7CisgICAgICAgIHZhciBoZWlnaHQgPSBNYXRoLm1heCh0aGlzLm1heFko
KSwgcmVjdC5tYXhZKCkpIC0geTsKKyAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuUmVj
dCh4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKICAgICB9CiB9OwogCkBAIC0yNTMsMyArMjcwLDI3IEBA
IFdlYkluc3BlY3Rvci5RdWFkLnByb3RvdHlwZSA9IHsKICAgICAgICAgXTsKICAgICB9CiB9Owor
CitXZWJJbnNwZWN0b3IuUG9seWdvbiA9IGZ1bmN0aW9uKHBvaW50cykKK3sKKyAgICB0aGlzLnBv
aW50cyA9IHBvaW50czsKK30KKworV2ViSW5zcGVjdG9yLlBvbHlnb24ucHJvdG90eXBlID0gewor
ICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuUG9seWdvbiwKKworICAgIGJvdW5kczogZnVu
Y3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIG1pblggPSBOdW1iZXIuTUFYX1ZBTFVFOworICAg
ICAgICB2YXIgbWluWSA9IE51bWJlci5NQVhfVkFMVUU7CisgICAgICAgIHZhciBtYXhYID0gLU51
bWJlci5NQVhfVkFMVUU7CisgICAgICAgIHZhciBtYXhZID0gLU51bWJlci5NQVhfVkFMVUU7Cisg
ICAgICAgIGZvciAodmFyIHBvaW50IG9mIHRoaXMucG9pbnRzKSB7CisgICAgICAgICAgICBtaW5Y
ID0gTWF0aC5taW4obWluWCwgcG9pbnQueCk7CisgICAgICAgICAgICBtYXhYID0gTWF0aC5tYXgo
bWF4WCwgcG9pbnQueCk7CisgICAgICAgICAgICBtaW5ZID0gTWF0aC5taW4obWluWSwgcG9pbnQu
eSk7CisgICAgICAgICAgICBtYXhZID0gTWF0aC5tYXgobWF4WSwgcG9pbnQueSk7CisgICAgICAg
IH0KKyAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuUmVjdChtaW5YLCBtaW5ZLCBtYXhY
IC0gbWluWCwgbWF4WSAtIG1pblkpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0hvdmVyTWVudS5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Ib3Zlck1lbnUuY3NzCmluZGV4IGIzMDMxZjNkMGU1ZjM1NGY3
OGEwNmEyZGQyMWIzNDg1MGZkNTYyNmEuLjRhYjI0ZTI3OGYwYzEyZDNjZjQ0ZmYzMmMyODA4NWUw
YjRhMGI4ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L0hvdmVyTWVudS5jc3MKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
SG92ZXJNZW51LmNzcwpAQCAtMjUsMjYgKzI1LDggQEAKIAogLmhvdmVyLW1lbnUgewogICAgIHBv
c2l0aW9uOiBhYnNvbHV0ZTsKLSAgICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAKLSAgICAvKiBF
eGNlcHRpb25hbGx5IHVzZSBjb250ZW50LWJveCBzdWNoIHRoYXQgdGhlIGZyYW1lIHNldCBpcyB0
aGF0IG9mIHRoZSBoaWdobGlnaHRlZCBzdHJpbmcKLSAgICAgICBhbmQgc3R5bGluZyBhZGRzIHRo
ZSByZXF1aXJlZCBwYWRkaW5nIGFyb3VuZCBpdCAqLwotICAgIGJveC1zaXppbmc6IGNvbnRlbnQt
Ym94OwotCi0gICAgLyogUG9zaXRpb24gdGhlIGljb24gdG8gdGhlIHJpZ2h0IG9mIHRoZSBtZW51
IGFuZCBjZW50ZXJlZCB2ZXJ0aWNhbGx5ICovCi0gICAgLXdlYmtpdC1qdXN0aWZ5LWNvbnRlbnQ6
IGZsZXgtZW5kOwotICAgIC13ZWJraXQtYWxpZ24taXRlbXM6IGNlbnRlcjsKLQotICAgIC8qIFBy
b3ZpZGUgZXh0cmEgcm9vbSBmb3IgdGhlIGljb24gKi8KLSAgICBwYWRkaW5nLWxlZnQ6IDJweDsK
LSAgICBwYWRkaW5nLXJpZ2h0OiAxNnB4OwotCi0gICAgbWluLWhlaWdodDogMTdweDsKLQotICAg
IGJvcmRlci1yYWRpdXM6IDRweDsKLSAgICBib3JkZXI6IDJweCBzb2xpZCByZ2JhKDAsIDAsIDAs
IDAuMjIpOwotICAgIAotICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtM3B4LCAt
NXB4LCAwKTsKKyAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKC0xcHgsIC0xcHgpOwog
CiAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgb3BhY2l0eTogMDsKQEAgLTU2LDEwICsz
OCwyNyBAQAogICAgIG9wYWNpdHk6IDE7CiB9CiAKKy5ob3Zlci1tZW51ID4gc3ZnIHsKKyAgICBw
b3NpdGlvbjogYWJzb2x1dGU7CisgICAgdG9wOiAwOworICAgIGxlZnQ6IDA7Cit9CisKKy5ob3Zl
ci1tZW51ID4gc3ZnID4gcGF0aCwKKy5ob3Zlci1tZW51ID4gc3ZnID4gcmVjdCB7CisgICAgc3Ry
b2tlOiByZ2JhKDAsIDAsIDAsIDAuMjIpOworICAgIHN0cm9rZS13aWR0aDogMnB4OworICAgIGZp
bGw6IG5vbmU7Cit9CisKIC5ob3Zlci1tZW51ID4gaW1nIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1
dGU7CisKKyAgICBsZWZ0OiAwOworICAgIHRvcDogMDsKICAgICB3aWR0aDogMTVweDsKICAgICBo
ZWlnaHQ6IDEzcHg7Ci0gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTRweCk7CisK
ICAgICBjb250ZW50OiAtd2Via2l0LWltYWdlLXNldCh1cmwoSW1hZ2VzL0hvdmVyTWVudUJ1dHRv
bi5wbmcpIDF4LCB1cmwoSW1hZ2VzL0hvdmVyTWVudUJ1dHRvbkAyeC5wbmcpIDJ4KTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSG92ZXJNZW51
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSG92ZXJNZW51LmpzCmlu
ZGV4IDQ3NTE0ZmJlOWJiOGI3N2I0MDA3ZGQ0Y2Y0MDc1MDAxZTgxZDQwOTcuLmFiY2M0MDU1NzJk
NzcyMGUyNDBmMDNiYjEwY2RmN2U4NTdmMTdhOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0hvdmVyTWVudS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Ib3Zlck1lbnUuanMKQEAgLTMzLDYgKzMzLDggQEAgV2ViSW5z
cGVjdG9yLkhvdmVyTWVudSA9IGZ1bmN0aW9uKGRlbGVnYXRlKQogICAgIHRoaXMuX2VsZW1lbnQu
Y2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLkhvdmVyTWVudS5TdHlsZUNsYXNzTmFtZTsKICAgICB0
aGlzLl9lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoInRyYW5zaXRpb25lbmQiLCB0aGlzLCB0cnVl
KTsKIAorICAgIHRoaXMuX291dGxpbmVFbGVtZW50ID0gdGhpcy5fZWxlbWVudC5hcHBlbmRDaGls
ZChkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InN2ZyIpKTsKKwogICAgIHRoaXMuX2J1dHRvbiA9IHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQo
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIikpOwogICAgIHRoaXMuX2J1dHRvbi5hZGRFdmVu
dExpc3RlbmVyKCJjbGljayIsIHRoaXMpOwogfQpAQCAtNTEsMjggKzUzLDI1IEBAIFdlYkluc3Bl
Y3Rvci5Ib3Zlck1lbnUucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVu
dDsKICAgICB9LAogCi0gICAgcHJlc2VudDogZnVuY3Rpb24odGFyZ2V0RnJhbWUpCisgICAgcHJl
c2VudDogZnVuY3Rpb24ocmVjdHMpCiAgICAgewotICAgICAgICB2YXIgc3R5bGUgPSB0aGlzLl9l
bGVtZW50LnN0eWxlOwotICAgICAgICBzdHlsZS5sZWZ0ID0gTWF0aC5jZWlsKHRhcmdldEZyYW1l
Lm9yaWdpbi54KSArICJweCI7Ci0gICAgICAgIHN0eWxlLnRvcCA9IE1hdGguY2VpbCh0YXJnZXRG
cmFtZS5vcmlnaW4ueSkgKyAicHgiOwotICAgICAgICBzdHlsZS53aWR0aCA9IE1hdGguY2VpbCh0
YXJnZXRGcmFtZS5zaXplLndpZHRoKSArICJweCI7Ci0gICAgICAgIHN0eWxlLmhlaWdodCA9IE1h
dGguY2VpbCh0YXJnZXRGcmFtZS5zaXplLmhlaWdodCkgKyAicHgiOworICAgICAgICB0aGlzLl9v
dXRsaW5lRWxlbWVudC50ZXh0Q29udGVudCA9ICIiOwogCi0gICAgICAgIHZhciBlbGVtZW50ID0g
dGhpcy5fZWxlbWVudDsKLSAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbGVtZW50
KTsKLSAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGVsZW1lbnQu
Y2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuSG92ZXJNZW51LlZpc2libGVDbGFzc05hbWUpOwot
ICAgICAgICB9KTsKKyAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0aGlzLl9lbGVt
ZW50KTsKKyAgICAgICAgdGhpcy5fZHJhd091dGxpbmUocmVjdHMpOworICAgICAgICB0aGlzLl9l
bGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLkhvdmVyTWVudS5WaXNpYmxlQ2xhc3NO
YW1lKTsKIAogICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xsIiwgdGhpcywg
dHJ1ZSk7CiAgICAgfSwKIAotICAgIGRpc21pc3M6IGZ1bmN0aW9uKCkKKyAgICBkaXNtaXNzOiBm
dW5jdGlvbihkaXNjcmV0ZSkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9lbGVtZW50LnBhcmVu
dE5vZGUgIT09IGRvY3VtZW50LmJvZHkpCiAgICAgICAgICAgICByZXR1cm47CiAKKyAgICAgICAg
aWYgKGRpc2NyZXRlKQorICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5yZW1vdmUoKTsKKwogICAg
ICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLkhvdmVyTWVu
dS5WaXNpYmxlQ2xhc3NOYW1lKTsKIAogICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5l
cigic2Nyb2xsIiwgdGhpcywgdHJ1ZSk7CkBAIC04NSw3ICs4NCw3IEBAIFdlYkluc3BlY3Rvci5I
b3Zlck1lbnUucHJvdG90eXBlID0gewogICAgICAgICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHsKICAg
ICAgICAgY2FzZSAic2Nyb2xsIjoKICAgICAgICAgICAgIGlmICghdGhpcy5fZWxlbWVudC5jb250
YWlucyhldmVudC50YXJnZXQpKQotICAgICAgICAgICAgICAgIHRoaXMuZGlzbWlzcygpOworICAg
ICAgICAgICAgICAgIHRoaXMuZGlzbWlzcyh0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlICJjbGljayI6CiAgICAgICAgICAgICB0aGlzLl9oYW5kbGVDbGlja0V2ZW50KGV2
ZW50KTsKQEAgLTEwMyw1ICsxMDIsMTc1IEBAIFdlYkluc3BlY3Rvci5Ib3Zlck1lbnUucHJvdG90
eXBlID0gewogICAgIHsKICAgICAgICAgaWYgKHRoaXMuZGVsZWdhdGUgJiYgdHlwZW9mIHRoaXMu
ZGVsZWdhdGUuaG92ZXJNZW51QnV0dG9uV2FzUHJlc3NlZCA9PT0gImZ1bmN0aW9uIikKICAgICAg
ICAgICAgIHRoaXMuZGVsZWdhdGUuaG92ZXJNZW51QnV0dG9uV2FzUHJlc3NlZCh0aGlzKTsKKyAg
ICB9LAorCisgICAgX2RyYXdPdXRsaW5lOiBmdW5jdGlvbihyZWN0cykKKyAgICB7CisgICAgICAg
IHZhciBidXR0b25XaWR0aCA9IHRoaXMuX2J1dHRvbi53aWR0aDsKKyAgICAgICAgdmFyIGJ1dHRv
bkhlaWdodCA9IHRoaXMuX2J1dHRvbi5oZWlnaHQ7CisgICAgICAgIAorICAgICAgICAvLyBBZGQg
cm9vbSBmb3IgdGhlIGJ1dHRvbiBvbiB0aGUgbGFzdCBsaW5lLgorICAgICAgICB2YXIgbGFzdFJl
Y3QgPSByZWN0cy5wb3AoKTsKKyAgICAgICAgbGFzdFJlY3Quc2l6ZS53aWR0aCArPSBidXR0b25X
aWR0aDsKKyAgICAgICAgcmVjdHMucHVzaChsYXN0UmVjdCk7CisKKyAgICAgICAgaWYgKHJlY3Rz
Lmxlbmd0aCA9PT0gMSkKKyAgICAgICAgICAgIHRoaXMuX2RyYXdTaW5nbGVMaW5lKHJlY3RzWzBd
KTsKKyAgICAgICAgZWxzZSBpZiAocmVjdHMubGVuZ3RoID09PSAyICYmIHJlY3RzWzBdLm1pblgo
KSA+PSByZWN0c1sxXS5tYXhYKCkpCisgICAgICAgICAgICB0aGlzLl9kcmF3VHdvTm9uT3Zlcmxh
cHBpbmdMaW5lcyhyZWN0cyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRoaXMuX2RyYXdP
dmVybGFwcGluZ0xpbmVzKHJlY3RzKTsKKworICAgICAgICB2YXIgYm91bmRzID0gV2ViSW5zcGVj
dG9yLlJlY3QudW5pb25PZlJlY3RzKHJlY3RzKS5wYWQoMyk7IC8vIHBhZGRpbmcgKyAxLzIgc3Ry
b2tlLXdpZHRoCisKKyAgICAgICAgdmFyIHN0eWxlID0gdGhpcy5fZWxlbWVudC5zdHlsZTsKKyAg
ICAgICAgc3R5bGUubGVmdCA9IGJvdW5kcy5taW5YKCkgKyAicHgiOworICAgICAgICBzdHlsZS50
b3AgPSBib3VuZHMubWluWSgpICsgInB4IjsKKyAgICAgICAgc3R5bGUud2lkdGggPSBib3VuZHMu
c2l6ZS53aWR0aCArICJweCI7CisgICAgICAgIHN0eWxlLmhlaWdodCA9IGJvdW5kcy5zaXplLmhl
aWdodCArICJweCI7CisKKyAgICAgICAgdGhpcy5fb3V0bGluZUVsZW1lbnQuc3R5bGUud2lkdGgg
PSBib3VuZHMuc2l6ZS53aWR0aCArICJweCI7CisgICAgICAgIHRoaXMuX291dGxpbmVFbGVtZW50
LnN0eWxlLmhlaWdodCA9IGJvdW5kcy5zaXplLmhlaWdodCArICJweCI7CisKKyAgICAgICAgdGhp
cy5fYnV0dG9uLnN0eWxlLmxlZnQgPSAobGFzdFJlY3QubWF4WCgpIC0gYm91bmRzLm1pblgoKSAt
IGJ1dHRvbldpZHRoKSArICJweCI7CisgICAgICAgIHRoaXMuX2J1dHRvbi5zdHlsZS50b3AgPSAo
bGFzdFJlY3QubWF4WSgpIC0gYm91bmRzLm1pblkoKSAtIGJ1dHRvbkhlaWdodCkgKyAicHgiOwor
ICAgIH0sCisKKyAgICBfYWRkUmVjdDogZnVuY3Rpb24ocmVjdCkKKyAgICB7CisgICAgICAgIGNv
bnN0IHIgPSA0OworCisgICAgICAgIHZhciBzdmdSZWN0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJyZWN0Iik7CisgICAgICAgIHN2Z1Jl
Y3Quc2V0QXR0cmlidXRlKCJ4IiwgMSk7CisgICAgICAgIHN2Z1JlY3Quc2V0QXR0cmlidXRlKCJ5
IiwgMSk7CisgICAgICAgIHN2Z1JlY3Quc2V0QXR0cmlidXRlKCJ3aWR0aCIsIHJlY3Quc2l6ZS53
aWR0aCk7CisgICAgICAgIHN2Z1JlY3Quc2V0QXR0cmlidXRlKCJoZWlnaHQiLCByZWN0LnNpemUu
aGVpZ2h0KTsKKyAgICAgICAgc3ZnUmVjdC5zZXRBdHRyaWJ1dGUoInJ4Iiwgcik7CisgICAgICAg
IHN2Z1JlY3Quc2V0QXR0cmlidXRlKCJyeSIsIHIpOworICAgICAgICByZXR1cm4gdGhpcy5fb3V0
bGluZUVsZW1lbnQuYXBwZW5kQ2hpbGQoc3ZnUmVjdCk7CisgICAgfSwKKworICAgIF9hZGRQYXRo
OiBmdW5jdGlvbihjb21tYW5kcywgdHgsIHR5KQorICAgIHsKKyAgICAgICAgdmFyIHBhdGggPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInBh
dGgiKTsKKyAgICAgICAgcGF0aC5zZXRBdHRyaWJ1dGUoImQiLCBjb21tYW5kcy5qb2luKCIgIikp
OworICAgICAgICBwYXRoLnNldEF0dHJpYnV0ZSgidHJhbnNmb3JtIiwgInRyYW5zbGF0ZSgiICsg
KHR4ICsgMSkgKyAiLCIgKyAodHkgKyAxKSArICIpIik7CisgICAgICAgIHJldHVybiB0aGlzLl9v
dXRsaW5lRWxlbWVudC5hcHBlbmRDaGlsZChwYXRoKTsKKyAgICB9LAorCisgICAgX2RyYXdTaW5n
bGVMaW5lOiBmdW5jdGlvbihyZWN0KQorICAgIHsKKyAgICAgICAgdGhpcy5fYWRkUmVjdChyZWN0
LnBhZCgyKSk7CisgICAgfSwKKworICAgIF9kcmF3VHdvTm9uT3ZlcmxhcHBpbmdMaW5lczogZnVu
Y3Rpb24ocmVjdHMpCisgICAgeworICAgICAgICBjb25zdCByID0gNDsKKworICAgICAgICB2YXIg
Zmlyc3RSZWN0ID0gcmVjdHNbMF0ucGFkKDIpOworICAgICAgICB2YXIgc2Vjb25kUmVjdCA9IHJl
Y3RzWzFdLnBhZCgyKTsKKworICAgICAgICB2YXIgdHggPSAtc2Vjb25kUmVjdC5taW5YKCk7Cisg
ICAgICAgIHZhciB0eSA9IC1maXJzdFJlY3QubWluWSgpOworCisgICAgICAgIHZhciByZWN0ID0g
Zmlyc3RSZWN0OworICAgICAgICB0aGlzLl9hZGRQYXRoKFsKKyAgICAgICAgICAgICJNIiwgcmVj
dC5tYXhYKCksIHJlY3QubWluWSgpLAorICAgICAgICAgICAgIkgiLCByZWN0Lm1pblgoKSArIHIs
CisgICAgICAgICAgICAicSIsIC1yLCAwLCAtciwgciwKKyAgICAgICAgICAgICJWIiwgcmVjdC5t
YXhZKCkgLSByLAorICAgICAgICAgICAgInEiLCAwLCByLCByLCByLAorICAgICAgICAgICAgIkgi
LCByZWN0Lm1heFgoKQorICAgICAgICBdLCB0eCwgdHkpOworICAgICAgICAKKyAgICAgICAgcmVj
dCA9IHNlY29uZFJlY3Q7CisgICAgICAgIHRoaXMuX2FkZFBhdGgoWworICAgICAgICAgICAgIk0i
LCByZWN0Lm1pblgoKSwgcmVjdC5taW5ZKCksCisgICAgICAgICAgICAiSCIsIHJlY3QubWF4WCgp
IC0gciwKKyAgICAgICAgICAgICJxIiwgciwgMCwgciwgciwKKyAgICAgICAgICAgICJWIiwgcmVj
dC5tYXhZKCkgLSByLAorICAgICAgICAgICAgInEiLCAwLCByLCAtciwgciwKKyAgICAgICAgICAg
ICJIIiwgcmVjdC5taW5YKCkKKyAgICAgICAgXSwgdHgsIHR5KTsKKyAgICB9LAorICAgIAorICAg
IF9kcmF3T3ZlcmxhcHBpbmdMaW5lczogZnVuY3Rpb24ocmVjdHMpCisgICAgeworICAgICAgICBj
b25zdCBQQURESU5HID0gMjsKKyAgICAgICAgY29uc3QgciA9IDQ7CisKKyAgICAgICAgdmFyIG1p
blggPSBOdW1iZXIuTUFYX1ZBTFVFOworICAgICAgICB2YXIgbWF4WCA9IC1OdW1iZXIuTUFYX1ZB
TFVFOworICAgICAgICBmb3IgKHZhciByZWN0IG9mIHJlY3RzKSB7CisgICAgICAgICAgICB2YXIg
bWluWCA9IE1hdGgubWluKHJlY3QubWluWCgpLCBtaW5YKTsKKyAgICAgICAgICAgIHZhciBtYXhY
ID0gTWF0aC5tYXgocmVjdC5tYXhYKCksIG1heFgpOworICAgICAgICB9CisKKyAgICAgICAgbWlu
WCAtPSBQQURESU5HOworICAgICAgICBtYXhYICs9IFBBRERJTkc7CisKKyAgICAgICAgdmFyIG1p
blkgPSByZWN0c1swXS5taW5ZKCkgLSBQQURESU5HOworICAgICAgICB2YXIgbWF4WSA9IHJlY3Rz
Lmxhc3RWYWx1ZS5tYXhZKCkgKyBQQURESU5HOworICAgICAgICB2YXIgZmlyc3RMaW5lTWluWCA9
IHJlY3RzWzBdLm1pblgoKSAtIFBBRERJTkc7CisgICAgICAgIHZhciBsYXN0TGluZU1heFggPSBy
ZWN0cy5sYXN0VmFsdWUubWF4WCgpICsgUEFERElORzsKKyAgICAgICAgCisgICAgICAgIGlmIChm
aXJzdExpbmVNaW5YID09PSBtaW5YICYmIGxhc3RMaW5lTWF4WCA9PT0gbWF4WCkKKyAgICAgICAg
ICAgIHJldHVybiB0aGlzLl9hZGRSZWN0KG5ldyBXZWJJbnNwZWN0b3IuUmVjdChtaW5YLCBtaW5Z
LCBtYXhYIC0gbWluWCwgbWF4WSAtIG1pblkpKTsKKyAgICAgICAgCisgICAgICAgIHZhciBsYXN0
TGluZU1pblkgPSByZWN0cy5sYXN0VmFsdWUubWluWSgpICsgUEFERElORzsKKyAgICAgICAgaWYg
KHJlY3RzWzBdLm1pblgoKSA9PT0gbWluWCArIFBBRERJTkcpCisgICAgICAgICAgICByZXR1cm4g
dGhpcy5fYWRkUGF0aChbCisgICAgICAgICAgICAgICAgIk0iLCBtaW5YICsgciwgbWluWSwKKyAg
ICAgICAgICAgICAgICAiSCIsIG1heFggLSByLAorICAgICAgICAgICAgICAgICJxIiwgciwgMCwg
ciwgciwKKyAgICAgICAgICAgICAgICAiViIsIGxhc3RMaW5lTWluWSAtIHIsCisgICAgICAgICAg
ICAgICAgInEiLCAwLCByLCAtciwgciwKKyAgICAgICAgICAgICAgICAiSCIsIGxhc3RMaW5lTWF4
WCArIHIsCisgICAgICAgICAgICAgICAgInEiLCAtciwgMCwgLXIsIHIsCisgICAgICAgICAgICAg
ICAgIlYiLCBtYXhZIC0gciwKKyAgICAgICAgICAgICAgICAicSIsIDAsIHIsIC1yLCByLAorICAg
ICAgICAgICAgICAgICJIIiwgbWluWCArIHIsCisgICAgICAgICAgICAgICAgInEiLCAtciwgMCwg
LXIsIC1yLAorICAgICAgICAgICAgICAgICJWIiwgbWluWSArIHIsCisgICAgICAgICAgICAgICAg
InEiLCAwLCAtciwgciwgLXIKKyAgICAgICAgICAgIF0sIC1taW5YLCAtbWluWSk7CisgICAgICAg
IAorICAgICAgICB2YXIgZmlyc3RMaW5lTWF4WSA9IHJlY3RzWzBdLm1heFkoKSAtIFBBRERJTkc7
CisgICAgICAgIGlmIChyZWN0cy5sYXN0VmFsdWUubWF4WCgpID09PSBtYXhYIC0gUEFERElORykK
KyAgICAgICAgICAgIHJldHVybiB0aGlzLl9hZGRQYXRoKFsKKyAgICAgICAgICAgICAgICAiTSIs
IGZpcnN0TGluZU1pblggKyByLCBtaW5ZLAorICAgICAgICAgICAgICAgICJIIiwgbWF4WCAtIHIs
CisgICAgICAgICAgICAgICAgInEiLCByLCAwLCByLCByLAorICAgICAgICAgICAgICAgICJWIiwg
bWF4WSAtIHIsCisgICAgICAgICAgICAgICAgInEiLCAwLCByLCAtciwgciwKKyAgICAgICAgICAg
ICAgICAiSCIsIG1pblggKyByLAorICAgICAgICAgICAgICAgICJxIiwgLXIsIDAsIC1yLCAtciwK
KyAgICAgICAgICAgICAgICAiViIsIGZpcnN0TGluZU1heFkgKyByLAorICAgICAgICAgICAgICAg
ICJxIiwgMCwgLXIsIHIsIC1yLAorICAgICAgICAgICAgICAgICJIIiwgZmlyc3RMaW5lTWluWCAt
IHIsCisgICAgICAgICAgICAgICAgInEiLCByLCAwLCByLCAtciwKKyAgICAgICAgICAgICAgICAi
ViIsIG1pblkgKyByLAorICAgICAgICAgICAgICAgICJxIiwgMCwgLXIsIHIsIC1yCisgICAgICAg
ICAgICBdLCAtbWluWCwgLW1pblkpOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIHRoaXMuX2Fk
ZFBhdGgoWworICAgICAgICAgICAgIk0iLCBmaXJzdExpbmVNaW5YICsgciwgbWluWSwKKyAgICAg
ICAgICAgICJIIiwgbWF4WCAtIHIsCisgICAgICAgICAgICAicSIsIHIsIDAsIHIsIHIsCisgICAg
ICAgICAgICAiViIsIGxhc3RMaW5lTWluWSAtIHIsCisgICAgICAgICAgICAicSIsIDAsIHIsIC1y
LCByLAorICAgICAgICAgICAgIkgiLCBsYXN0TGluZU1heFggKyByLAorICAgICAgICAgICAgInEi
LCAtciwgMCwgLXIsIHIsCisgICAgICAgICAgICAiViIsIG1heFkgLSByLAorICAgICAgICAgICAg
InEiLCAwLCByLCAtciwgciwKKyAgICAgICAgICAgICJIIiwgbWluWCArIHIsCisgICAgICAgICAg
ICAicSIsIC1yLCAwLCAtciwgLXIsCisgICAgICAgICAgICAiViIsIGZpcnN0TGluZU1heFkgKyBy
LAorICAgICAgICAgICAgInEiLCAwLCAtciwgciwgLXIsCisgICAgICAgICAgICAiSCIsIGZpcnN0
TGluZU1pblggLSByLAorICAgICAgICAgICAgInEiLCByLCAwLCByLCAtciwKKyAgICAgICAgICAg
ICJWIiwgbWluWSArIHIsCisgICAgICAgICAgICAicSIsIDAsIC1yLCByLCAtcgorICAgICAgICBd
LCAtbWluWCwgLW1pblkpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbCBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL01haW4uaHRtbAppbmRleCA5OTRhMzA5MDlmN2VjZWE3OGI5MjI3MzQ3ZDVjNTM2
ZjEwMWE4MWNkLi4zOWYyMWY0NjQyOTc5MTNkNDA5Y2U2ODJhNTc0MTYxNmFhMTE1MGQ2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCkBAIC00NDQs
NiArNDQ0LDcgQEAKICAgICA8c2NyaXB0IHNyYz0iR29Ub0xpbmVEaWFsb2cuanMiPjwvc2NyaXB0
PgogICAgIDxzY3JpcHQgc3JjPSJDb250ZW50Rmxvd0RPTVRyZWVDb250ZW50Vmlldy5qcyI+PC9z
Y3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkhvdmVyTWVudS5qcyI+PC9zY3JpcHQ+CisgICAgPHNj
cmlwdCBzcmM9IkNvZGVNaXJyb3JFZGl0aW5nQ29udHJvbGxlci5qcyI+PC9zY3JpcHQ+CiAgICAg
PHNjcmlwdCBzcmM9IkNvZGVNaXJyb3JDb2xvckVkaXRpbmdDb250cm9sbGVyLmpzIj48L3Njcmlw
dD4KICAgICA8c2NyaXB0IHNyYz0iTWFpbi5qcyI+PC9zY3JpcHQ+CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmpzCmluZGV4IGUzNDU2NDY0ZGUzMWIxZTVkZThl
YjQ5MWM4MGQ0ZGI3ZDI4ZGYzMGUuLmM0NWZmY2YwNWEwYTgzODgyMjNkYjE3MTYyOWI4NTg4OGE1
NzdmZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01h
aW4uanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5qcwpA
QCAtMTc1LDYgKzE3NSw4IEBAIFdlYkluc3BlY3Rvci5sb2FkZWQgPSBmdW5jdGlvbigpCiAgICAg
ICAgIHg6IDAsCiAgICAgICAgIHk6IDAKICAgICB9OworCisgICAgdGhpcy5fd2luZG93S2V5ZG93
bkxpc3RlbmVycyA9IFtdOwogfQogCiBXZWJJbnNwZWN0b3IuY29udGVudExvYWRlZCA9IGZ1bmN0
aW9uKCkKQEAgLTE3ODUsMyArMTc4NywzOSBAQCBXZWJJbnNwZWN0b3IuY2FuQXJjaGl2ZU1haW5G
cmFtZSA9IGZ1bmN0aW9uKCkKIAogICAgIHJldHVybiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlw
ZS5mcm9tTUlNRVR5cGUoV2ViSW5zcGVjdG9yLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFt
ZS5tYWluUmVzb3VyY2UubWltZVR5cGUpID09PSBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5E
b2N1bWVudDsKIH0KKworV2ViSW5zcGVjdG9yLmFkZFdpbmRvd0tleWRvd25MaXN0ZW5lciA9IGZ1
bmN0aW9uKGxpc3RlbmVyKQoreworICAgIGlmICh0eXBlb2YgbGlzdGVuZXIuaGFuZGxlS2V5ZG93
bkV2ZW50ICE9PSAiZnVuY3Rpb24iKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgdGhpcy5f
d2luZG93S2V5ZG93bkxpc3RlbmVycy5wdXNoKGxpc3RlbmVyKTsKKworICAgIHRoaXMuX3VwZGF0
ZVdpbmRvd0tleWRvd25MaXN0ZW5lcigpOworfTsKKworV2ViSW5zcGVjdG9yLnJlbW92ZVdpbmRv
d0tleWRvd25MaXN0ZW5lciA9IGZ1bmN0aW9uKGxpc3RlbmVyKQoreworICAgIHRoaXMuX3dpbmRv
d0tleWRvd25MaXN0ZW5lcnMucmVtb3ZlKGxpc3RlbmVyKTsKKyAgICAKKyAgICB0aGlzLl91cGRh
dGVXaW5kb3dLZXlkb3duTGlzdGVuZXIoKTsKK307CisKK1dlYkluc3BlY3Rvci5fdXBkYXRlV2lu
ZG93S2V5ZG93bkxpc3RlbmVyID0gZnVuY3Rpb24oKQoreworICAgIGlmICh0aGlzLl93aW5kb3dL
ZXlkb3duTGlzdGVuZXJzLmxlbmd0aCA+IDApCisgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3Rl
bmVyKCJrZXlkb3duIiwgV2ViSW5zcGVjdG9yLl9zaGFyZWRXaW5kb3dLZXlkb3duTGlzdGVuZXIs
IHRydWUpOworICAgIGVsc2UKKyAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoImtl
eWRvd24iLCBXZWJJbnNwZWN0b3IuX3NoYXJlZFdpbmRvd0tleWRvd25MaXN0ZW5lciwgdHJ1ZSk7
Cit9CisKK1dlYkluc3BlY3Rvci5fc2hhcmVkV2luZG93S2V5ZG93bkxpc3RlbmVyID0gZnVuY3Rp
b24oZXZlbnQpCit7CisgICAgZm9yICh2YXIgaSA9IFdlYkluc3BlY3Rvci5fd2luZG93S2V5ZG93
bkxpc3RlbmVycy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkgeworICAgICAgICBpZiAoV2ViSW5z
cGVjdG9yLl93aW5kb3dLZXlkb3duTGlzdGVuZXJzW2ldLmhhbmRsZUtleWRvd25FdmVudChldmVu
dCkpIHsKKyAgICAgICAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpOworICAg
ICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgfQorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1NvdXJjZUNvZGVUZXh0RWRpdG9yLmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1NvdXJjZUNvZGVUZXh0RWRpdG9yLmNzcwppbmRleCA5MGYwYTg0MGI5
NGQ5NmYzMTVjNjc3OTAzMzQyNmE4ZWUyOWZkNTRhLi5lYTcxNDNhZTQ0YmVhNTY4NjkxYzMwY2Yw
OGYzNWQ2YjU0ZWViYTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Tb3VyY2VDb2RlVGV4dEVkaXRvci5jc3MKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvU291cmNlQ29kZVRleHRFZGl0b3IuY3NzCkBAIC03MSw2ICs3MSw3
IEBACiAuaG92ZXItbWVudS5jb2xvciA+IGltZyB7CiAgICAgd2lkdGg6IDE2cHg7CiAgICAgaGVp
Z2h0OiAxNnB4OwotICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDE0cHgpOwogICAg
IGNvbnRlbnQ6IC13ZWJraXQtaW1hZ2Utc2V0KHVybChJbWFnZXMvQ29sb3JJY29uLnBuZykgMXgs
IHVybChJbWFnZXMvQ29sb3JJY29uQDJ4LnBuZykgMngpOworICAgIAorICAgIC13ZWJraXQtdHJh
bnNmb3JtOiB0cmFuc2xhdGVZKDFweCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Tb3VyY2VDb2RlVGV4dEVkaXRvci5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1NvdXJjZUNvZGVUZXh0RWRpdG9yLmpzCmluZGV4IDdj
YjM1NGJkZjUzYTA3ZTViZGRlNjk0MmUyZmIwZWZmZWJhNmMzODQuLjAxNjY5NDVkZDU3N2Q0MDE4
ZGQwMzFmYzlmOWYyZTYzNmQ4OThiOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1NvdXJjZUNvZGVUZXh0RWRpdG9yLmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1NvdXJjZUNvZGVUZXh0RWRpdG9yLmpzCkBAIC0xMDcs
NiArMTA3LDggQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZSA9
IHsKICAgICAgICAgdGhpcy50b2tlblRyYWNraW5nQ29udHJvbGxlci5yZW1vdmVIaWdobGlnaHRl
ZFJhbmdlKCk7CiAKICAgICAgICAgdGhpcy5fZGlzbWlzc1BvcG92ZXIoKTsKKyAgICAgICAgCisg
ICAgICAgIHRoaXMuX2Rpc21pc3NFZGl0aW5nQ29udHJvbGxlcih0cnVlKTsKICAgICB9LAogCiAg
ICAgY2xvc2U6IGZ1bmN0aW9uKCkKQEAgLTIyNiwyMyArMjI4LDggQEAgV2ViSW5zcGVjdG9yLlNv
dXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKHRoaXMuX2lnbm9y
ZUNvbnRlbnREaWRDaGFuZ2UgPiAwKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIC8v
IEdhdGhlciBhbGwgbGluZXMgY29udGFpbmluZyBuZXcgdGV4dC4KLSAgICAgICAgdmFyIGxpbmVz
ID0gbmV3IFNldDsKLSAgICAgICAgZm9yICh2YXIgcmFuZ2Ugb2YgbmV3UmFuZ2VzKSB7Ci0gICAg
ICAgICAgICAvLyBJZiB0aGUgcmFuZ2UgaXMgb24gYSBzaW5nbGUgbGluZSwgb25seSBhZGQgdGhl
IGxpbmUgaWYgdGhlIHJhbmdlIGlzIG5vdCBlbXB0eS4KLSAgICAgICAgICAgIGlmIChyYW5nZS5z
dGFydExpbmUgPT09IHJhbmdlLmVuZExpbmUpIHsKLSAgICAgICAgICAgICAgICBpZiAocmFuZ2Uu
ZW5kQ29sdW1uID4gcmFuZ2Uuc3RhcnRDb2x1bW4pCi0gICAgICAgICAgICAgICAgICAgIGxpbmVz
LmFkZChyYW5nZS5zdGFydExpbmUpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICAgICAvLyBPbmx5IGFkZCB0aGUgbGFzdCBsaW5lIGlmIHRoZSByYW5nZSBoYXMgY2hhcmFjdGVy
cyBvbiB0aGlzIGxpbmUuCi0gICAgICAgICAgICAgICAgZm9yICh2YXIgbGluZSA9IHJhbmdlLnN0
YXJ0TGluZTsgbGluZSA8IHJhbmdlLmVuZExpbmUgfHwgcmFuZ2UuZW5kQ29sdW1uID4gMDsgKyts
aW5lKQotICAgICAgICAgICAgICAgICAgICBsaW5lcy5hZGQobGluZSk7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBDb25zaWRlciBhbGwgbmV3IGxpbmVzIGZvciBuZXcg
Y29sb3IgbWFya2Vycy4KLSAgICAgICAgZm9yICh2YXIgbGluZSBvZiBsaW5lcykKLSAgICAgICAg
ICAgIHRoaXMuX3VwZGF0ZUNvbG9yTWFya2VycyhsaW5lKTsKKyAgICAgICAgZm9yICh2YXIgcmFu
Z2Ugb2YgbmV3UmFuZ2VzKQorICAgICAgICAgICAgdGhpcy5fdXBkYXRlRWRpdGFibGVNYXJrZXJz
KHJhbmdlKTsKICAgICB9LAogCiAgICAgLy8gUHJpdmF0ZQpAQCAtMzYwLDggKzM0Nyw3IEBAIFdl
Ykluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAg
ICB0aGlzLl9hZGRJc3N1ZShpc3N1ZSk7CiAgICAgICAgIH0KIAotICAgICAgICB0aGlzLl91cGRh
dGVUb2tlblRyYWNraW5nQ29udHJvbGxlclN0YXRlKCk7Ci0gICAgICAgIHRoaXMuX3VwZGF0ZUNv
bG9yTWFya2VycygpOworICAgICAgICB0aGlzLl91cGRhdGVFZGl0YWJsZU1hcmtlcnMoKTsKICAg
ICB9LAogCiAgICAgX3BvcHVsYXRlV2l0aENvbnRlbnQ6IGZ1bmN0aW9uKGNvbnRlbnQpCkBAIC0x
MDc2LDEzICsxMDYyLDEzIEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5wcm90
b3R5cGUgPSB7CiAgICAgICAgICAgICBpZiAobWFya2Vycy5sZW5ndGggPiAwKQogICAgICAgICAg
ICAgICAgIHRoaXMuX3Rva2VuVHJhY2tpbmdDb250cm9sbGVySGlnaGxpZ2h0ZWRNYXJrZWRFeHBy
ZXNzaW9uKGNhbmRpZGF0ZSwgbWFya2Vycyk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgdGhpcy5fZGlzbWlzc0NvZGVNaXJyb3JDb2xvckVkaXRpbmdDb250cm9sbGVyKCk7Cisg
ICAgICAgICAgICAgICAgdGhpcy5fZGlzbWlzc0VkaXRpbmdDb250cm9sbGVyKCk7CiAgICAgICAg
IH0KICAgICB9LAogCiAgICAgdG9rZW5UcmFja2luZ0NvbnRyb2xsZXJNb3VzZU91dE9mSG92ZXJl
ZE1hcmtlcjogZnVuY3Rpb24odG9rZW5UcmFja2luZ0NvbnRyb2xsZXIsIGhvdmVyZWRNYXJrZXIp
CiAgICAgewotICAgICAgICB0aGlzLl9kaXNtaXNzQ29kZU1pcnJvckNvbG9yRWRpdGluZ0NvbnRy
b2xsZXIoKTsKKyAgICAgICAgdGhpcy5fZGlzbWlzc0VkaXRpbmdDb250cm9sbGVyKCk7CiAgICAg
fSwKIAogICAgIF90b2tlblRyYWNraW5nQ29udHJvbGxlckhpZ2hsaWdodGVkSmF2YVNjcmlwdEV4
cHJlc3Npb246IGZ1bmN0aW9uKGNhbmRpZGF0ZSkKQEAgLTExMzEsMTIgKzExMTcsMTEgQEAgV2Vi
SW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYg
KCFjYW5kaWRhdGUpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgdmFyIGJvdW5kcyA9
IHRoaXMuYm91bmRzRm9yUmFuZ2UoY2FuZGlkYXRlLmhvdmVyZWRUb2tlblJhbmdlKTsKLSAgICAg
ICAgaWYgKCFib3VuZHMpCi0gICAgICAgICAgICByZXR1cm47Ci0KICAgICAgICAgY29udGVudC5j
bGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5Qb3BvdmVyRGVi
dWdnZXJDb250ZW50U3R5bGVDbGFzc05hbWUpOwogCisgICAgICAgIHZhciByZWN0cyA9IHRoaXMu
cmVjdHNGb3JSYW5nZShjYW5kaWRhdGUuaG92ZXJlZFRva2VuUmFuZ2UpOworICAgICAgICB2YXIg
Ym91bmRzID0gV2ViSW5zcGVjdG9yLlJlY3QudW5pb25PZlJlY3RzKHJlY3RzKTsKKwogICAgICAg
ICB0aGlzLl9wb3BvdmVyID0gdGhpcy5fcG9wb3ZlciB8fCBuZXcgV2ViSW5zcGVjdG9yLlBvcG92
ZXIodGhpcyk7CiAgICAgICAgIHRoaXMuX3BvcG92ZXIuY29udGVudCA9IGNvbnRlbnQ7CiAgICAg
ICAgIHRoaXMuX3BvcG92ZXIucHJlc2VudChib3VuZHMucGFkKDUpLCBbV2ViSW5zcGVjdG9yLlJl
Y3RFZGdlLk1JTl9ZLCBXZWJJbnNwZWN0b3IuUmVjdEVkZ2UuTUFYX1ksIFdlYkluc3BlY3Rvci5S
ZWN0RWRnZS5NQVhfWF0pOwpAQCAtMTI4OSw4MCArMTI3NCw4NCBAQCBXZWJJbnNwZWN0b3IuU291
cmNlQ29kZVRleHRFZGl0b3IucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9tb3VzZUlzT3Zl
clBvcG92ZXIgPSB0aGlzLl9wb3BvdmVyLmVsZW1lbnQuY29udGFpbnMoZXZlbnQucmVsYXRlZFRh
cmdldCk7CiAgICAgfSwKIAotICAgIF91cGRhdGVDb2xvck1hcmtlcnM6IGZ1bmN0aW9uKGxpbmVO
dW1iZXIpCisgICAgX3VwZGF0ZUVkaXRhYmxlTWFya2VyczogZnVuY3Rpb24ocmFuZ2UpCiAgICAg
ewotICAgICAgICB0aGlzLmNyZWF0ZUNvbG9yTWFya2VycyhsaW5lTnVtYmVyKTsKKyAgICAgICAg
dGhpcy5jcmVhdGVDb2xvck1hcmtlcnMocmFuZ2UpOwogCiAgICAgICAgIHRoaXMuX3VwZGF0ZVRv
a2VuVHJhY2tpbmdDb250cm9sbGVyU3RhdGUoKTsKICAgICB9LAotICAgIAorCiAgICAgX3Rva2Vu
VHJhY2tpbmdDb250cm9sbGVySGlnaGxpZ2h0ZWRNYXJrZWRFeHByZXNzaW9uOiBmdW5jdGlvbihj
YW5kaWRhdGUsIG1hcmtlcnMpCiAgICAgewotICAgICAgICB2YXIgY29sb3JNYXJrZXI7CisgICAg
ICAgIC8vIExvb2sgZm9yIHRoZSBvdXRlcm1vc3QgZWRpdGFibGUgbWFya2VyLgorICAgICAgICB2
YXIgZWRpdGFibGVNYXJrZXI7CiAgICAgICAgIGZvciAodmFyIG1hcmtlciBvZiBtYXJrZXJzKSB7
Ci0gICAgICAgICAgICBpZiAobWFya2VyLnR5cGUgPT09IFdlYkluc3BlY3Rvci5UZXh0TWFya2Vy
LlR5cGUuQ29sb3IpIHsKLSAgICAgICAgICAgICAgICBjb2xvck1hcmtlciA9IG1hcmtlcjsKLSAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghbWFy
a2VyLnJhbmdlIHx8IG1hcmtlci50eXBlICE9PSBXZWJJbnNwZWN0b3IuVGV4dE1hcmtlci5UeXBl
LkNvbG9yKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBpZiAoIWVk
aXRhYmxlTWFya2VyIHx8IChtYXJrZXIucmFuZ2Uuc3RhcnRMaW5lIDwgZWRpdGFibGVNYXJrZXIu
cmFuZ2Uuc3RhcnRMaW5lIHx8IChtYXJrZXIucmFuZ2Uuc3RhcnRMaW5lID09PSBlZGl0YWJsZU1h
cmtlci5yYW5nZS5zdGFydExpbmUgJiYgbWFya2VyLnJhbmdlLnN0YXJ0Q29sdW1uIDwgZWRpdGFi
bGVNYXJrZXIucmFuZ2Uuc3RhcnRDb2x1bW4pKSkKKyAgICAgICAgICAgICAgICBlZGl0YWJsZU1h
cmtlciA9IG1hcmtlcjsKICAgICAgICAgfQogCi0gICAgICAgIGlmICghY29sb3JNYXJrZXIpIHsK
KyAgICAgICAgaWYgKCFlZGl0YWJsZU1hcmtlcikgewogICAgICAgICAgICAgdGhpcy50b2tlblRy
YWNraW5nQ29udHJvbGxlci5ob3ZlcmVkTWFya2VyID0gbnVsbDsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCi0gICAgICAgIGlmICh0aGlzLnRva2VuVHJhY2tpbmdDb250cm9sbGVy
LmhvdmVyZWRNYXJrZXIgPT09IGNvbG9yTWFya2VyKQorICAgICAgICBpZiAodGhpcy50b2tlblRy
YWNraW5nQ29udHJvbGxlci5ob3ZlcmVkTWFya2VyID09PSBlZGl0YWJsZU1hcmtlcikKICAgICAg
ICAgICAgIHJldHVybjsKIAotICAgICAgICB0aGlzLl9kaXNtaXNzQ29kZU1pcnJvckNvbG9yRWRp
dGluZ0NvbnRyb2xsZXIoKTsKKyAgICAgICAgdGhpcy5fZGlzbWlzc0VkaXRpbmdDb250cm9sbGVy
KCk7CiAKLSAgICAgICAgdGhpcy50b2tlblRyYWNraW5nQ29udHJvbGxlci5ob3ZlcmVkTWFya2Vy
ID0gY29sb3JNYXJrZXI7CisgICAgICAgIHRoaXMudG9rZW5UcmFja2luZ0NvbnRyb2xsZXIuaG92
ZXJlZE1hcmtlciA9IGVkaXRhYmxlTWFya2VyOwogCi0gICAgICAgIHRoaXMuX2NvbG9yRWRpdGlu
Z0NvbnRyb2xsZXIgPSB0aGlzLmNvbG9yRWRpdGluZ0NvbnRyb2xsZXJGb3JNYXJrZXIoY29sb3JN
YXJrZXIpOworICAgICAgICB0aGlzLl9lZGl0aW5nQ29udHJvbGxlciA9IHRoaXMuZWRpdGluZ0Nv
bnRyb2xsZXJGb3JNYXJrZXIoZWRpdGFibGVNYXJrZXIpOwogCi0gICAgICAgIHZhciBjb2xvciA9
IHRoaXMuX2NvbG9yRWRpdGluZ0NvbnRyb2xsZXIuY29sb3I7Ci0gICAgICAgIGlmICghY29sb3Ig
fHwgIWNvbG9yLnZhbGlkKSB7Ci0gICAgICAgICAgICBjb2xvck1hcmtlci5jbGVhcigpOwotICAg
ICAgICAgICAgZGVsZXRlIHRoaXMuX2NvbG9yRWRpdGluZ0NvbnRyb2xsZXI7Ci0gICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIGlmIChtYXJrZXIudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlRleHRN
YXJrZXIuVHlwZS5Db2xvcikgeworICAgICAgICAgICAgdmFyIGNvbG9yID0gdGhpcy5fZWRpdGlu
Z0NvbnRyb2xsZXIudmFsdWU7CisgICAgICAgICAgICBpZiAoIWNvbG9yIHx8ICFjb2xvci52YWxp
ZCkgeworICAgICAgICAgICAgICAgIGVkaXRhYmxlTWFya2VyLmNsZWFyKCk7CisgICAgICAgICAg
ICAgICAgZGVsZXRlIHRoaXMuX2VkaXRpbmdDb250cm9sbGVyOworICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIHRoaXMuX2NvbG9yRWRp
dGluZ0NvbnRyb2xsZXIuZGVsZWdhdGUgPSB0aGlzOwotICAgICAgICB0aGlzLl9jb2xvckVkaXRp
bmdDb250cm9sbGVyLnByZXNlbnRIb3Zlck1lbnUoKTsKKyAgICAgICAgdGhpcy5fZWRpdGluZ0Nv
bnRyb2xsZXIuZGVsZWdhdGUgPSB0aGlzOworICAgICAgICB0aGlzLl9lZGl0aW5nQ29udHJvbGxl
ci5wcmVzZW50SG92ZXJNZW51KCk7CiAgICAgfSwKIAotICAgIF9kaXNtaXNzQ29kZU1pcnJvckNv
bG9yRWRpdGluZ0NvbnRyb2xsZXI6IGZ1bmN0aW9uKCkKKyAgICBfZGlzbWlzc0VkaXRpbmdDb250
cm9sbGVyOiBmdW5jdGlvbihkaXNjcmV0ZSkKICAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9jb2xv
ckVkaXRpbmdDb250cm9sbGVyKQotICAgICAgICAgICAgdGhpcy5fY29sb3JFZGl0aW5nQ29udHJv
bGxlci5kaXNtaXNzSG92ZXJNZW51KCk7CisgICAgICAgIGlmICh0aGlzLl9lZGl0aW5nQ29udHJv
bGxlcikKKyAgICAgICAgICAgIHRoaXMuX2VkaXRpbmdDb250cm9sbGVyLmRpc21pc3NIb3Zlck1l
bnUoZGlzY3JldGUpOwogICAgICAgICAKICAgICAgICAgdGhpcy50b2tlblRyYWNraW5nQ29udHJv
bGxlci5ob3ZlcmVkTWFya2VyID0gbnVsbDsKLSAgICAgICAgZGVsZXRlIHRoaXMuX2NvbG9yRWRp
dGluZ0NvbnRyb2xsZXI7CisgICAgICAgIGRlbGV0ZSB0aGlzLl9lZGl0aW5nQ29udHJvbGxlcjsK
ICAgICB9LAogCi0gICAgLy8gQ29kZU1pcnJvckNvbG9yRWRpdGluZ0NvbnRyb2xsZXIgRGVsZWdh
dGUKKyAgICAvLyBDb2RlTWlycm9yRWRpdGluZ0NvbnRyb2xsZXIgRGVsZWdhdGUKICAgICAKLSAg
ICBjb2xvckVkaXRpbmdDb250cm9sbGVyRGlkU3RhcnRFZGl0aW5nOiBmdW5jdGlvbihjb2xvckVk
aXRpbmdDb250cm9sbGVyKQorICAgIGVkaXRpbmdDb250cm9sbGVyRGlkU3RhcnRFZGl0aW5nOiBm
dW5jdGlvbihlZGl0aW5nQ29udHJvbGxlcikKICAgICB7CiAgICAgICAgIC8vIFdlIGNhbiBwYXVz
ZSB0aGUgdG9rZW4gdHJhY2tpbmcgY29udHJvbGxlciBkdXJpbmcgZWRpdGluZywgaXQgd2lsbCBi
ZSByZXNldAotICAgICAgICAvLyB0byB0aGUgZXhwZWN0ZWQgc3RhdGUgYnkgY2FsbGluZyBfdXBk
YXRlQ29sb3JNYXJrZXJzKCkgaW4gdGhlCi0gICAgICAgIC8vIGNvbG9yRWRpdGluZ0NvbnRyb2xs
ZXJEaWRGaW5pc2hFZGl0aW5nIGRlbGVnYXRlLgorICAgICAgICAvLyB0byB0aGUgZXhwZWN0ZWQg
c3RhdGUgYnkgY2FsbGluZyBfdXBkYXRlRWRpdGFibGVNYXJrZXJzKCkgaW4gdGhlCisgICAgICAg
IC8vIGVkaXRpbmdDb250cm9sbGVyRGlkRmluaXNoRWRpdGluZyBkZWxlZ2F0ZS4KICAgICAgICAg
dGhpcy50b2tlblRyYWNraW5nQ29udHJvbGxlci5lbmFibGVkID0gZmFsc2U7CiAKICAgICAgICAg
Ly8gV2UgY2xlYXIgdGhlIG1hcmtlciBzaW5jZSB3ZSdsbCByZXNldCBpdCBhZnRlciBlZGl0aW5n
LgotICAgICAgICBjb2xvckVkaXRpbmdDb250cm9sbGVyLm1hcmtlci5jbGVhcigpOworICAgICAg
ICBlZGl0aW5nQ29udHJvbGxlci5tYXJrZXIuY2xlYXIoKTsKICAgICAgICAgCiAgICAgICAgIC8v
IFdlIGlnbm9yZSBjb250ZW50IGNoYW5nZXMgbWFkZSBhcyBhIHJlc3VsdCBvZiBjb2xvciBlZGl0
aW5nLgogICAgICAgICB0aGlzLl9pZ25vcmVDb250ZW50RGlkQ2hhbmdlKys7CiAgICAgfSwKICAg
ICAKLSAgICBjb2xvckVkaXRpbmdDb250cm9sbGVyRGlkRmluaXNoRWRpdGluZzogZnVuY3Rpb24o
Y29sb3JFZGl0aW5nQ29udHJvbGxlcikKKyAgICBlZGl0aW5nQ29udHJvbGxlckRpZEZpbmlzaEVk
aXRpbmc6IGZ1bmN0aW9uKGVkaXRpbmdDb250cm9sbGVyKQogICAgIHsKLSAgICAgICAgdGhpcy5f
dXBkYXRlQ29sb3JNYXJrZXJzKGNvbG9yRWRpdGluZ0NvbnRyb2xsZXIucmFuZ2Uuc3RhcnRMaW5l
KTsKKyAgICAgICAgdGhpcy5fdXBkYXRlRWRpdGFibGVNYXJrZXJzKGVkaXRpbmdDb250cm9sbGVy
LnJhbmdlKTsKIAogICAgICAgICB0aGlzLl9pZ25vcmVDb250ZW50RGlkQ2hhbmdlLS07CiAKLSAg
ICAgICAgZGVsZXRlIHRoaXMuX2NvbG9yRWRpdGluZ0NvbnRyb2xsZXI7CisgICAgICAgIGRlbGV0
ZSB0aGlzLl9lZGl0aW5nQ29udHJvbGxlcjsKICAgICB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXh0RWRpdG9yLmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGV4dEVkaXRvci5qcwppbmRleCAwZTkyZWIxMDg0
OWI4ODgzMWY5N2UxZjY1NjBhZTg0NmU0YjcwOGRlLi45OWQ2YTMxNmMyNjZlNmFhN2E3NjE3YTcy
ODZhY2YzY2U2ZTkyZGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9UZXh0RWRpdG9yLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1RleHRFZGl0b3IuanMKQEAgLTU5Nyw5ICs1OTcsOSBAQCBXZWJJbnNwZWN0b3IuVGV4
dEVkaXRvci5wcm90b3R5cGUgPSB7CiAgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNz
ZXMuCiAgICAgfSwKIAotICAgIGJvdW5kc0ZvclJhbmdlOiBmdW5jdGlvbihyYW5nZSkKKyAgICBy
ZWN0c0ZvclJhbmdlOiBmdW5jdGlvbihyYW5nZSkKICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlz
Ll9jb2RlTWlycm9yLmJvdW5kc0ZvclJhbmdlKHJhbmdlKTsKKyAgICAgICAgcmV0dXJuIHRoaXMu
X2NvZGVNaXJyb3IucmVjdHNGb3JSYW5nZShyYW5nZSk7CiAgICAgfSwKIAogICAgIGdldCBtYXJr
ZXJzKCkKQEAgLTYxNiwxNCArNjE2LDE5IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgfSk7CiAgICAgfSwKIAotICAgIGNyZWF0ZUNvbG9yTWFya2Vyczog
ZnVuY3Rpb24obGluZU51bWJlcikKKyAgICBjcmVhdGVDb2xvck1hcmtlcnM6IGZ1bmN0aW9uKHJh
bmdlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2NvZGVNaXJyb3IuY3JlYXRlQ29sb3JN
YXJrZXJzKGxpbmVOdW1iZXIpOworICAgICAgICByZXR1cm4gdGhpcy5fY29kZU1pcnJvci5jcmVh
dGVDb2xvck1hcmtlcnMocmFuZ2UpOwogICAgIH0sCiAKLSAgICBjb2xvckVkaXRpbmdDb250cm9s
bGVyRm9yTWFya2VyOiBmdW5jdGlvbihjb2xvck1hcmtlcikKKyAgICBlZGl0aW5nQ29udHJvbGxl
ckZvck1hcmtlcjogZnVuY3Rpb24oZWRpdGFibGVNYXJrZXIpCiAgICAgewotICAgICAgICByZXR1
cm4gbmV3IFdlYkluc3BlY3Rvci5Db2RlTWlycm9yQ29sb3JFZGl0aW5nQ29udHJvbGxlcih0aGlz
Ll9jb2RlTWlycm9yLCBjb2xvck1hcmtlcik7CisgICAgICAgIHN3aXRjaCAoZWRpdGFibGVNYXJr
ZXIudHlwZSkgeworICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5UZXh0TWFya2VyLlR5cGUuQ29s
b3I6CisgICAgICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5Db2RlTWlycm9yQ29sb3JF
ZGl0aW5nQ29udHJvbGxlcih0aGlzLl9jb2RlTWlycm9yLCBlZGl0YWJsZU1hcmtlcik7CisgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5Db2RlTWly
cm9yRWRpdGluZ0NvbnRyb2xsZXIodGhpcy5fY29kZU1pcnJvciwgZWRpdGFibGVNYXJrZXIpOwor
ICAgICAgICB9CiAgICAgfSwKIAogICAgIC8vIFByaXZhdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1RleHRNYXJrZXIuanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXh0TWFya2VyLmpzCmluZGV4IGVmZGNlYjE1NjM2YWVi
M2FlN2Y1OWQwZDRlMTE5ZjFkMWFlM2JmZDkuLmQxNTA2YjAzNTdlYzlhNzExODFiODE5NTdmMTcx
ZmZlMDlhYTVhMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1RleHRNYXJrZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVGV4dE1hcmtlci5qcwpAQCAtNjcsMTIgKzY3LDEyIEBAIFdlYkluc3BlY3Rvci5UZXh0TWFy
a2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuVGV4dFJh
bmdlKHJhbmdlLmZyb20ubGluZSwgcmFuZ2UuZnJvbS5jaCwgcmFuZ2UudG8ubGluZSwgcmFuZ2Uu
dG8uY2gpOwogICAgIH0sCiAKLSAgICBnZXQgYm91bmRzKCkKKyAgICBnZXQgcmVjdHMoKQogICAg
IHsKICAgICAgICAgdmFyIHJhbmdlID0gdGhpcy5fY29kZU1pcnJvclRleHRNYXJrZXIuZmluZCgp
OwogICAgICAgICBpZiAoIXJhbmdlKQogICAgICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5S
ZWN0LlpFUk9fUkVDVDsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2NvZGVNaXJyb3JUZXh0TWFya2Vy
LmRvYy5jbS5ib3VuZHNGb3JSYW5nZSh7CisgICAgICAgIHJldHVybiB0aGlzLl9jb2RlTWlycm9y
VGV4dE1hcmtlci5kb2MuY20ucmVjdHNGb3JSYW5nZSh7CiAgICAgICAgICAgICBzdGFydDogcmFu
Z2UuZnJvbSwKICAgICAgICAgICAgIGVuZDogcmFuZ2UudG8KICAgICAgICAgfSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224766</attachid>
            <date>2014-02-20 10:06:14 -0800</date>
            <delta_ts>2014-02-20 10:43:33 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-129094-20140220190612.patch</filename>
            <type>text/plain</type>
            <size>54660</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY0NDMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBl
N2Q2NTQ0MGU5ZTY3ZTliZTI3YzRhMmNmODUxZTliMzgxOWUyMjhkLi5hMmMxOTZmODRjMDAwYTlj
NGMzZmFmZDg1ODc4YmU4NWYxZGFkOWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwyMDAgQEAKIDIwMTQtMDItMjAgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQHdlYmtpdC5v
cmc+CiAKKyAgICAgICAgV2ViIEluc3BlY3RvcjogY3JlYXRlIGEgQ29kZU1pcnJvckVkaXRpbmdD
b250cm9sbGVyIHN1cGVyY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEyOTA5NAorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hl
ci4KKworICAgICAgICBUYWtlIGNvZGUgdGhhdCBpcyBnZW5lcmljIHRvIGVkaXRpbmcgb2YgYW55
IHRleHQgbWFya2VyIG91dCBvZiBDb2RlTWlycm9yQ29sb3JFZGl0aW5nQ29udHJvbGxlciB0bwor
ICAgICAgICBjcmVhdGUgYSBuZXcgQ29kZU1pcnJvckVkaXRpbmdDb250cm9sbGVyIHN1cGVyY2xh
c3MgdGhhdCdsbCBiZSBmaXQgdG8gdXNlIGZvciBmdXR1cmUgZWRpdGluZyBjb250cm9sbGVycy4K
KyAgICAgICAgQWRkaXRpb2FubGx5LCB3ZSBmaXggZXhpc3RpbmcgaXNzdWVzIHdpdGggc3VjaCBl
ZGl0aW5nIGJ5IHN1cHBvcnRpbmcgdGV4dCBtYXJrZXJzIHNwcmVhZCBhY3Jvc3Mgc2V2ZXJhbAor
ICAgICAgICBsaW5lcyBhbmQgbW9yZSByb2J1c3RseSBoYW5kbGluZyB0aGUgRXNjLiBrZXkgYmVp
bmcgcHJlc3NlZCB0byBkaXNtaXNzIGEgY29udHJvbGxlcidzIHBvcG92ZXIuCisKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL0NTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yLmpzOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yLnByb3RvdHlwZS5f
Y3JlYXRlQ29sb3JTd2F0Y2hlcyk6CisgICAgICAgIEFkb3B0IHRoZSBuZXcgLmNyZWF0ZUNvbG9y
TWFya2VycygpIG1ldGhvZCBzaWduYXR1cmUgdG8gcHJvdmlkZSBhIFRleHRSYW5nZSBwYXJhbWV0
ZXIgcmF0aGVyIHRoYW4gYSBzaW5nbGUKKyAgICAgICAgbGluZSBudW1iZXIuCisKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL0NvZGVNaXJyb3JBZGRpdGlvbnMuanM6CisgICAgICAgIFJlbW92ZSB0
aGUgLmJvdW5kc0ZvclJhbmdlKCkgbWV0aG9kIGluIGZhdm9yIG9mIGEgLnJlY3RzRm9yUmFuZ2Uo
KSBtZXRob2Qgd2hpY2ggd2lsbCBhbGxvdyB1cyB0byBkcmF3IGJldHRlcgorICAgICAgICBtZW51
cyB3aGVuIGhvdmVyaW5nIG92ZXIgYSB0ZXh0IHJhbmdlIGJ5IHByb3ZpZGluZyB0aWdodCBib3Vu
ZHMgcmF0aGVyIHRoYW4gYSBsYXJnZSBib3guIFdlIGFsc28gaGFuZGxlIGFueQorICAgICAgICBs
aW5lIHdyYXBwaW5nIHByb2R1Y2VkIGJ5IENvZGVNaXJyb3IgYW5kIHJlbW92ZSBhbnkgbGVhZGlu
ZyB3aGl0ZS1zcGFjZSBzbyB0aGF0IHRoZSByZWN0cyBhcmUgdGlnaHQgdG8gdGhlCisgICAgICAg
IGFjdHVhbCBjaGFyYWN0ZXJzIGluIHRoZSB0ZXh0IG1hcmtlci4KKworICAgICAgICBXZSBhbHNv
IGNoYW5nZSAuY3JlYXRlQ29sb3JNYXJrZXJzKCkgdG8gdGFrZSBpbiBhIFRleHRSYW5nZSBwYXJh
bWV0ZXIgcmF0aGVyIHRoYW4gYSBsaW5lIG51bWJlciBpbiBvcmRlciB0bworICAgICAgICBiZXR0
ZXIgZGVhbCB3aXRoIHRleHQgbWFya2VycyBzcHJlYWQgYWNyb3NzIG11bHRpcGxlIGxpbmVzLgor
CisgICAgICAgICogVXNlckludGVyZmFjZS9Db2RlTWlycm9yQ29sb3JFZGl0aW5nQ29udHJvbGxl
ci5qczoKKyAgICAgICAgUmVtb3ZlIGFueSBjb2RlIHRoYXQgaXMgYWRlcXVhdGUgZm9yIGFueSBl
ZGl0aW5nIGNvbnRyb2xsZXIgKHdoaWNoIGlzIG1vdmluZyB0byBDb2RlTWlycm9yRWRpdGluZ0Nv
bnRyb2xsZXIpLgorICAgICAgICBXZSBhbHNvIGFkb3B0IG5ldyBpbnRlcmZhY2VzIGV4cG9zZWQg
YnkgQ29kZU1pcnJvckVkaXRpbmdDb250cm9sbGVyLgorCisgICAgICAgIChXZWJJbnNwZWN0b3Iu
Q29kZU1pcnJvckNvbG9yRWRpdGluZ0NvbnRyb2xsZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkNvZGVNaXJyb3JDb2xvckVkaXRpbmdDb250cm9sbGVyLnByb3RvdHlwZS5nZXQgaW5pdGlhbFZh
bHVlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2RlTWlycm9yQ29sb3JFZGl0aW5nQ29udHJv
bGxlci5wcm90b3R5cGUuZ2V0IGNzc0NsYXNzTmFtZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
Q29kZU1pcnJvckNvbG9yRWRpdGluZ0NvbnRyb2xsZXIucHJvdG90eXBlLnBvcG92ZXJXaWxsUHJl
c2VudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29kZU1pcnJvckNvbG9yRWRpdGluZ0NvbnRy
b2xsZXIucHJvdG90eXBlLnBvcG92ZXJEaWRQcmVzZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5Db2RlTWlycm9yQ29sb3JFZGl0aW5nQ29udHJvbGxlci5wcm90b3R5cGUuX2NvbG9yUGlja2Vy
Q29sb3JDaGFuZ2VkKToKKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29kZU1pcnJvckVkaXRp
bmdDb250cm9sbGVyLmpzOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Db2RlTWlycm9yQ29sb3JFZGl0aW5nQ29udHJvbGxlci5qcy4KKyAgICAgICAgTmV3
IGNsYXNzIG1lYW50IHRvIGJlIHN1YmNsYXNzZWQgYnkgYW55IGZ1dHVyZSBlZGl0aW5nIGNvbnRy
b2xsZXIsIGFuZCBhbHJlYWR5IHN1YmNsYXNzZWQgYnkKKyAgICAgICAgQ29kZU1pcnJvckNvbG9y
RWRpdGluZ0NvbnRyb2xsZXIuIFRoaXMgY2xhc3MgZXhwb3NlcyBzZXZlcmFsIGhvb2tzIGZvciBz
dWJjbGFzc2VzIHRvIGN1c3RvbWl6ZSBpdHMgYmVoYXZpb3I6CisgICAgICAgIAorICAgICAgICAu
aW5pdGlhbFZhbHVlOiBhIHZhbHVlIHdlIGNhbiByZXZlcnQgdG8gaWYgdGhlIGVkaXRpbmcgaXMg
Y2FuY2VsZWQKKyAgICAgICAgLmNzc0NsYXNzTmFtZTogYSBDU1MgY2xhc3MgbmFtZSB0aGF0IGNh
biBiZSBhZGRlZCB0byB0aGUgZWRpdGluZyBjb250cm9sbGVyJ3MgY29udGFpbmVyCisgICAgICAg
IC5wb3BvdmVyUHJlZmVycmVkRWRnZXM6IGEgbGlzdCBvZiBwcmVmZXJyZWRFZGdlcyBhcyBwYXNz
ZWQgdG8gUG9wb3Zlci5wcm90b3R5cGUucHJlc2VudCgpIHdpdGggYSBzZW5zaWJsZSBkZWZhdWx0
CisgICAgICAgIC5wb3BvdmVyVGFyZ2V0RnJhbWVXaXRoUmVjdHM6IGEgdGFyZ2V0RnJhbWUgcGFz
c2VkIHRvIFBvcG92ZXIucHJvdG90eXBlLnByZXNlbnQoKSwgZGVmYXVsdHMgdG8gYSB1bmlvbiBv
ZiBwcm92aWRlZCByZWN0cworICAgICAgICAucG9wb3ZlcldpbGxQcmVzZW50OiBjYWxsZWQgYXMg
dGhlIHBvcG92ZXIgaXMgYWJvdXQgdG8gYmUgcHJlc2VudGVkLCB0eXBpY2FsbHkgb3ZlcnJpZGRl
biB0byBzZXQgdGhlIHBvcG92ZXIncyBjb250ZW50CisgICAgICAgIC5wb3BvdmVyRGlkUHJlc2Vu
dDogY2FsbGVkIGFzIHRoZSBwb3BvdmVyIGp1c3Qgd2FzIHByZXNlbnRlZCwgdHlwaWNhbGx5IG92
ZXJyaWRkZW4gd2hlbiBjb250ZW50IG5lZWRzIHRvIHR1bmVkIG9ubHkgYWZ0ZXIKKyAgICAgICAg
YmVpbmcgYWRkZWQgdG8gdGhlIERPTSBhbmQgc2V0dGluZyBvZiB0aGUgbmVjZXNzYXJ5IG1hY2hp
bmVyeSB0byB1cGRhdGUgdGhlIHNlcmlhbGl6ZWQgdmFsdWUgaW4gdGhlIGVkaXRvciBiYXNlZCBv
biBpbnRlcmFjdGlvbgorICAgICAgICB3aXRoaW4gdGhlIHBvcG92ZXIgd2l0aG91dCBjaGFuZ2lu
ZyB0aGUgc2VyaWFsaXplZCB2YWx1ZSB1cG9uIHNob3dpbmcgdGhlIHBvcG92ZXIgdGhlIHZlcnkg
Zmlyc3QgdGltZS4KKyAgICAgICAgCisgICAgICAgIEFkZGl0aW9uYWxseSwgdGhlIC52YWx1ZSBw
cm9wZXJ0eSBtdXN0IGJlIGFuIG9iamVjdCBzdXBwb3J0aW5nIC50b1N0cmluZygpIGFuZCAuY29w
eSgpIG1ldGhvZC4KKworICAgICAgICBGaW5hbGx5LCB0aGUgLmVkaXRpbmdDb250cm9sbGVyRGlk
U3RhcnRFZGl0aW5nKCkgYW5kIC5lZGl0aW5nQ29udHJvbGxlckRpZEZpbmlzaEVkaXRpbmcoKSBk
ZWxlZ2F0ZSBtZXRob2RzIGFyZSBmaXJlZAorICAgICAgICBhcyBlZGl0aW5nIGJlZ2lucyBhbmQg
ZmluaXNoZXMuIAorCisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29kZU1pcnJvckVkaXRpbmdDb250
cm9sbGVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2RlTWlycm9yRWRpdGluZ0NvbnRyb2xs
ZXIucHJvdG90eXBlLmdldCBtYXJrZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvZGVNaXJy
b3JFZGl0aW5nQ29udHJvbGxlci5wcm90b3R5cGUuZ2V0IHJhbmdlKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5Db2RlTWlycm9yRWRpdGluZ0NvbnRyb2xsZXIucHJvdG90eXBlLmdldCB2YWx1ZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29kZU1pcnJvckVkaXRpbmdDb250cm9sbGVyLnByb3Rv
dHlwZS5zZXQgdmFsdWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JFZGl0aW5n
Q29udHJvbGxlci5wcm90b3R5cGUuZ2V0IGRlbGVnYXRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5Db2RlTWlycm9yRWRpdGluZ0NvbnRyb2xsZXIucHJvdG90eXBlLnNldCBkZWxlZ2F0ZSk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuQ29kZU1pcnJvckVkaXRpbmdDb250cm9sbGVyLnByb3RvdHlw
ZS5nZXQgdGV4dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29kZU1pcnJvckVkaXRpbmdDb250
cm9sbGVyLnByb3RvdHlwZS5zZXQgdGV4dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29kZU1p
cnJvckVkaXRpbmdDb250cm9sbGVyLnByb3RvdHlwZS5nZXQgaW5pdGlhbFZhbHVlKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5Db2RlTWlycm9yRWRpdGluZ0NvbnRyb2xsZXIucHJvdG90eXBlLmdl
dCBjc3NDbGFzc05hbWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JFZGl0aW5n
Q29udHJvbGxlci5wcm90b3R5cGUuZ2V0IHBvcG92ZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkNvZGVNaXJyb3JFZGl0aW5nQ29udHJvbGxlci5wcm90b3R5cGUuZ2V0IHBvcG92ZXJQcmVmZXJy
ZWRFZGdlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29kZU1pcnJvckVkaXRpbmdDb250cm9s
bGVyLnByb3RvdHlwZS5wb3BvdmVyVGFyZ2V0RnJhbWVXaXRoUmVjdHMpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkNvZGVNaXJyb3JFZGl0aW5nQ29udHJvbGxlci5wcm90b3R5cGUucHJlc2VudEhv
dmVyTWVudSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29kZU1pcnJvckVkaXRpbmdDb250cm9s
bGVyLnByb3RvdHlwZS5kaXNtaXNzSG92ZXJNZW51KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5D
b2RlTWlycm9yRWRpdGluZ0NvbnRyb2xsZXIucHJvdG90eXBlLnBvcG92ZXJXaWxsUHJlc2VudCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29kZU1pcnJvckVkaXRpbmdDb250cm9sbGVyLnByb3Rv
dHlwZS5wb3BvdmVyRGlkUHJlc2VudCk6CisKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2RlTWly
cm9yRWRpdGluZ0NvbnRyb2xsZXIucHJvdG90eXBlLmhhbmRsZUtleWRvd25FdmVudCk6CisgICAg
ICAgIEV2ZW50IGhhbmRsZXIgZm9yIGtleWRvd24gZXZlbnRzIGFzIHJlZ2lzdGVyZWQgdmlhIHRo
ZSBuZXcgV2ViSW5zcGVjdG9yLmFkZFdpbmRvd0tleWRvd25MaXN0ZW5lcigpIG1ldGhvZC4KKwor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JFZGl0aW5nQ29udHJvbGxlci5wcm90b3R5
cGUuaG92ZXJNZW51QnV0dG9uV2FzUHJlc3NlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29k
ZU1pcnJvckVkaXRpbmdDb250cm9sbGVyLnByb3RvdHlwZS5kaWREaXNtaXNzUG9wb3Zlcik6CisK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0dlb21ldHJ5LmpzOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlJlY3QudW5pb25PZlJlY3RzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZWN0LnByb3Rv
dHlwZS51bmlvbldpdGhSZWN0KToKKyAgICAgICAgTmV3IHV0aWxpdGllcyB0byBnZXQgYSBSZWN0
IHRoYXQgaXMgdGhlIHVuaW9uIG9mIHRoZSBwcm92aWRlZCBSZWN0IG9yIGFycmF5IG9mIFJlY3Rz
LgorCisgICAgICAgIChXZWJJbnNwZWN0b3IuUG9seWdvbik6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuUG9seWdvbi5wcm90b3R5cGUuYm91bmRzKToKKyAgICAgICAgTmV3IGNsYXNzIHVzZWQgdG8g
c3RvcmUgYSBsaXN0IG9mIHBvaW50cyBmb3IgYSBwb2x5Z29uIGFuZCBnZXQgaXRzIGJvdW5kcywg
dXNlZCBieSB0aGUgSG92ZXJNZW51IGNsYXNzLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9I
b3Zlck1lbnUuY3NzOgorICAgICAgICAoLmhvdmVyLW1lbnUpOgorICAgICAgICAoLmhvdmVyLW1l
bnUgPiBzdmcpOgorICAgICAgICAoLmhvdmVyLW1lbnUgPiBzdmcgPiByZWN0KToKKyAgICAgICAg
KC5ob3Zlci1tZW51ID4gaW1nKToKKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvSG92ZXJNZW51
LmpzOgorICAgICAgICBXZSByZW1vdmUgdGhlIGFzc3VtcHRpb24gdGhhdCBhIEhvdmVyTWVudSBp
cyBvbmx5IHVzZWQgdG8gZHJhdyBhIHNpbmdsZSByb3VuZGVkIHJlY3QgYmFzZWQgb24gYSBzaW1w
bGUKKyAgICAgICAgUmVjdCBhbmQgaW5zdGVhZCBzdXBwb3J0IHByZXNlbnRhdGlvbiBiYXNlZCBv
biBhbiBhcnJheSBvZiBSZWN0cyB3aGVyZSB3ZSBlaXRoZXI6CisgICAgICAgIAorICAgICAgICAt
IGRyYXcgYSBzaW5nbGUgcm91bmRlZCByZWN0YW5nbGUgaWYgdGhlcmUgaXMgb25seSBhIHNpbmds
ZSBSZWN0IHByb3ZpZGVkCisgICAgICAgIC0gZHJhdyB0d28gZGlzY29ubmVjdGVkIG9wZW4tZW5k
ZWQgcmVjdHMgaWYgd2UncmUgcHJvdmlkZWQgd2l0aCB0d28gbm9uLW92ZXJsYXBwaW5nIFJlY3Rz
CisgICAgICAgIC0gZHJhdyBhIHBvbHlnb24gc3Vycm91bmRpbmcgYWxsIHByb3ZpZGVkIFJlY3Rz
IGluIGFsbCBvdGhlciBjYXNlcworCisgICAgICAgIE5vIG1hdHRlciBob3cgdGhlIEhvdmVyTWVu
dSBpcyBkcmF3biwgdGhlIGRyYXdpbmcgaXMgcGVyZm9ybWVkIGluIFNWRyB3aXRoIGVpdGhlciA8
cmVjdD4gb3IgYSA8cGF0aD4gZWxlbWVudHMuCisKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Ib3Zl
ck1lbnUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhvdmVyTWVudS5wcm90b3R5cGUucHJlc2Vu
dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSG92ZXJNZW51LnByb3RvdHlwZS5kaXNtaXNzKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5Ib3Zlck1lbnUucHJvdG90eXBlLmhhbmRsZUV2ZW50KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5Ib3Zlck1lbnUucHJvdG90eXBlLl9oYW5kbGVDbGlja0V2
ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Ib3Zlck1lbnUucHJvdG90eXBlLl9kcmF3T3V0
bGluZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSG92ZXJNZW51LnByb3RvdHlwZS5fYWRkUmVj
dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSG92ZXJNZW51LnByb3RvdHlwZS5fYWRkUGF0aCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuSG92ZXJNZW51LnByb3RvdHlwZS5fZHJhd1NpbmdsZUxp
bmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhvdmVyTWVudS5wcm90b3R5cGUuX2RyYXdUd29O
b25PdmVybGFwcGluZ0xpbmVzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Ib3Zlck1lbnUucHJv
dG90eXBlLl9kcmF3T3ZlcmxhcHBpbmdMaW5lcyk6CisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNl
L01haW4uaHRtbDoKKyAgICAgICAgTGluayB0byB0aGUgbmV3IENvZGVNaXJyb3JFZGl0aW5nQ29u
dHJvbGxlciBjbGFzcy4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTWFpbi5qczoKKyAgICAg
ICAgRXhwb3NlIGEgbmV3IG1lY2hhbmlzbSB0byBkZWFsIHdpdGggd2luZG93LWxldmVsIGhhbmRs
aW5nIG9mIGtleWRvd24gZXZlbnRzIGluIG9yZGVyIHRvIGFsbG93CisgICAgICAgIGEgbGlzdCBv
ZiBoYW5kbGVycyB0byBhY2NlcHQgb3IgcmVqZWN0IGRlYWxpbmcgd2l0aCB0aGUgcHJvdmlkZWQg
a2V5ZG93biBldmVudCBiYXNlZCBvbiB0aGUgb3JkZXIKKyAgICAgICAgdGhleSB3ZXJlIHJlZ2lz
dGVyZWQsIGluIG1vc3QgcmVjZW50IHRvIG9sZGVzdCByZWdpc3RlcmVkIGhhbmRsZXIuIFRoaXMg
YWxsb3dzLCBmb3IgaW5zdGFuY2UsIGZvcgorICAgICAgICBhIG1vcmUgZ3JhY2VmdWwgaGFuZGxp
bmcgb2YgdGhlIEVzYy4ga2V5IGJlaW5nIHByZXNzZWQgaW4gdGhlIENvZGVNaXJyb3JFZGl0aW5n
Q29udHJvbGxlciBhbmQKKyAgICAgICAgYnlwYXNzZXMgdGhlIERPTSBzdHJ1Y3R1cmUgYWxsb3dp
bmcgZm9yIG9iamVjdHMgbWFuYWdpbmcgZWxlbWVudHMgaW4gZGlmZmVyZW50IERPTSBoaWVyYXJj
aGllcworICAgICAgICB0byBjb21wZXRlIHdpdGggaGFuZGxpbmcgb2Yga2V5ZG93biBldmVudHMu
CisKKyAgICAgICAgKFdlYkluc3BlY3Rvci5sb2FkZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LmFkZFdpbmRvd0tleWRvd25MaXN0ZW5lcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IucmVtb3Zl
V2luZG93S2V5ZG93bkxpc3RlbmVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5fdXBkYXRlV2lu
ZG93S2V5ZG93bkxpc3RlbmVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5fc2hhcmVkV2luZG93
S2V5ZG93bkxpc3RlbmVyKToKKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvU291cmNlQ29kZVRl
eHRFZGl0b3IuY3NzOgorICAgICAgICAoLmhvdmVyLW1lbnUuY29sb3IgPiBpbWcpOgorICAgICAg
ICBVcGRhdGUgdGhlIG9mZnNldCBhcHBsaWVkIHRvIGEgSG92ZXJNZW51IGJ1dHRvbiBiYXNlZCBv
biB0aGUgY2hhbmdlIG9mIGxheW91dCBmb3Igc3VjaCBidXR0b25zIHdoaWNoCisgICAgICAgIGFy
ZSBub3cgYWJzb2x1dGVseSBwb3NpdGlvbmVkIGluIGNvZGUgYnkgSG92ZXJNZW51IHJhdGhlciB0
aGFuIGJlaW5nIGxhaWQgb3V0IHVzaW5nIHRoZSBmbGV4LWJveCBtb2RlbC4KKworICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvU291cmNlQ29kZVRleHRFZGl0b3IuanM6CisgICAgICAgIEFic3RyY3Qg
YXdheSB0aGUgYXNzdW1wdGlvbiB0aGF0IG9ubHkgYSBjb2xvciBlZGl0aW5nIGNvbnRyb2xsZXIg
bWF5IGJlIHVzZWQgdG8gZWRpdCB0ZXh0IG1hcmtlcnMgaW4KKyAgICAgICAgYSBzb3VyY2UgY29k
ZSB0ZXh0IGVkaXRvci4KKworICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRp
dG9yLnByb3RvdHlwZS5oaWRkZW4pOgorICAgICAgICBFbnN1cmUgd2UgcmVtb3ZlIGFueSBjdXJy
ZW50bHktZGlzcGxheWVkIGhvdmVyIG1lbnUgZm9yIGFuIGVkaXRpbmcgY29udHJvbGxlciB3aGVu
IHRoZSBlZGl0b3IgaXMgaGlkZGVuLgorICAgICAgICBUaGlzIHdvdWxkIGhhcHBlbiBpbiB0aGUg
c2l0dWF0aW9uIHdoZXJlIGEga2V5Ym9hcmQgc2hvcnRjdXQgd2FzIHVzZWQgdG8ganVtcCB0byBh
bm90aGVyIHBhcnQgb2YgdGhlCisgICAgICAgIFdlYiBJbnNwZWN0b3IgVUkgd2l0aG91dCB1c2lu
ZyB0aGUgbW91c2UuCisKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRv
ci5wcm90b3R5cGUuY29udGVudERpZENoYW5nZSk6CisgICAgICAgIFNpbmNlIHdlJ3JlIG5vdyB3
b3JraW5nIHdpdGggdGV4dCByYW5nZXMgcmF0aGVyIHRoYW4gbGluZXMsIHJlbW92ZSB0aGUgY29k
ZSB3aGVyZSB3ZSdkIHdvcmsgb3V0IGEgc2V0IG9mCisgICAgICAgIGNoYW5nZWQgbGluZXMgYW5k
IGNhbGwgLl91cGRhdGVFZGl0YWJsZU1hcmtlcnMoKSB3aXRoIHRoZSBjaGFuZ2VkIHJhbmdlIGRp
cmVjdGx5IGluc3RlYWQuCisKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVk
aXRvci5wcm90b3R5cGUuX2NvbnRlbnREaWRQb3B1bGF0ZSk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuU291cmNlQ29kZVRleHRFZGl0b3IucHJvdG90eXBlLnRva2VuVHJhY2tpbmdDb250cm9sbGVy
TmV3SGlnaGxpZ2h0Q2FuZGlkYXRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VDb2Rl
VGV4dEVkaXRvci5wcm90b3R5cGUudG9rZW5UcmFja2luZ0NvbnRyb2xsZXJNb3VzZU91dE9mSG92
ZXJlZE1hcmtlcik6CisgICAgICAgIEFkb3B0IHRoZSBtb3JlIGdlbmVyaWMgbWV0aG9kIG5hbWVz
IHJhdGhlciB0aGFuIGNvbG9yLXNwZWNpZmljIG9uZXMuCisKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUuX3Nob3dQb3BvdmVyKToKKyAgICAgICAg
V2hlbiBzaG93aW5nIHRoZSBwb3BvdmVyIG91dHNpZGUgb2YgdGhlIHVzZSBvZiBhIENvZGVNaXJy
b3JFZGl0aW5nQ29udHJvbGxlciwgc3VjaCBhcyBhIEphdmFTY3JpcHQgZXhwcmVzc2lvbgorICAg
ICAgICB3aGVuIGRlYnVnZ2luZywgYWxzbyBkZWFsIHdpdGggdGhlIHBvc3NpYmlsaXR5IG9mIHRo
ZSBoaWdobGlnaHRlZCByYW5nZSBjb250YWluaW5nIG11bHRpcGxlIGxpbmVzIHJhdGhlcgorICAg
ICAgICB0aGFuIGFzc3VtZSBhIHNpbmdsZSBsaW5lLgorCisgICAgICAgIChXZWJJbnNwZWN0b3Iu
U291cmNlQ29kZVRleHRFZGl0b3IucHJvdG90eXBlLl91cGRhdGVFZGl0YWJsZU1hcmtlcnMpOgor
ICAgICAgICBNb3JlIGdlbmVyaWMgbWV0aG9kIG5hbWUgdG8gc3VwcG9ydCBmdXR1cmUsIG5vbi1j
b2xvciBlZGl0aW5nIGNvbnRyb2xsZXJzLgorCisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNl
Q29kZVRleHRFZGl0b3IucHJvdG90eXBlLl90b2tlblRyYWNraW5nQ29udHJvbGxlckhpZ2hsaWdo
dGVkTWFya2VkRXhwcmVzc2lvbik6CisgICAgICAgIEZpbmQgdGhlIG91dGVybW9zdCBtYXJrZXIg
aW4gdGhlIGxpc3Qgb2YgbWFya2VycyBwcm92aWRlZCBzdWNoIHRoYXQgYSBtYXJrZXIgY29udGFp
bmluZyBvdGhlciBtYXJrZXJzCisgICAgICAgIHNob3dzIHRoZSBVSSBmb3IgdGhlIGNvbnRhaW5p
bmcgbWFya2VyLiBGb3IgaW5zdGFuY2UsIGEgZ3JhZGllbnQgbWFya2VyIHdvdWxkIGNvbnRhaW4g
c2V2ZXJhbCBjb2xvcgorICAgICAgICBtYXJrZXJzIGFuZCBpdCdzIHByZWZlcmFibGUgdG8gc2hv
dyB0aGUgZWRpdGluZyBVSSBmb3IgdGhlIHdob2xlIGdyYWRpZW50IHJhdGhlciB0aGFuIGEgc3Bl
Y2lmaWMgY29sb3IuCisKKyAgICAgICAgQWRkaXRpb25hbGx5LCBhZG9wdCBtb3JlIGdlbmVyaWMg
aXZhcnMgYW5kIG1ldGhvZCBuYW1lcyB0byBzdXBwb3J0IGZ1dHVyZSwgbm9uLWNvbG9yIGVkaXRp
bmcgY29udHJvbGxlcnMuCisKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVk
aXRvci5wcm90b3R5cGUuX2Rpc21pc3NFZGl0aW5nQ29udHJvbGxlcik6CisgICAgICAgIFN1cHBv
cnQgZm9yIG5ldyBwYXJhbWV0ZXIgaW5zdHJ1Y3RpbmcgdGhhdCB0aGUgZWRpdGluZyBjb250cm9s
bGVyIGRpc21pc3NhbCBzaG91bGQgYmUgaW5zdGFudCByYXRoZXIgdGhhbgorICAgICAgICBhbmlt
YXRlZCwgd2hpY2ggaXMgdGhlIGRlZmF1bHQuIFRoaXMgaXMgdXNlZnVsIHdoZW4sIGZvciBpbnN0
YW5jZSwgdGhlIHRleHQgZWRpdG9yIGlzIGNsZWFyZWQuCisKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUuZWRpdGluZ0NvbnRyb2xsZXJEaWRTdGFy
dEVkaXRpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnBy
b3RvdHlwZS5lZGl0aW5nQ29udHJvbGxlckRpZEZpbmlzaEVkaXRpbmcpOgorICAgICAgICBBZG9w
dCB0aGUgbW9yZSBnZW5lcmljIG1ldGhvZCBuYW1lcyByYXRoZXIgdGhhbiBjb2xvci1zcGVjaWZp
YyBvbmVzLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9UZXh0RWRpdG9yLmpzOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3IucHJvdG90eXBlLnJlY3RzRm9yUmFuZ2UpOgorICAg
ICAgICBSZW1vdmUgLmJvdW5kc0ZvclJhbmdlKCkgaW4gZmF2b3Igb2YgdGhpcyBuZXcgbWV0aG9k
IHdoZXJlIHdlIHJldHVybiBhIHNlcmllcyBvZiByZWN0cyBzbyB0aGF0IHdlIG1heQorICAgICAg
ICBkcmF3IGEgbW9yZSBwbGVhc2luZyBIb3Zlck1lbnUuCisKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5UZXh0RWRpdG9yLnByb3RvdHlwZS5jcmVhdGVDb2xvck1hcmtlcnMpOgorICAgICAgICBVc2Ug
YSBUZXh0UmFuZ2VyIHJhdGhlciB0aGFuIGEgc2luZ2xlIGxpbmUgbnVtYmVyIHRvIG1hdGNoIHRo
ZSB1bmRlcmx5aW5nIENvZGVNaXJyb3IgZXh0ZW5zaW9uIG1ldGhvZC4KKworICAgICAgICAoV2Vi
SW5zcGVjdG9yLlRleHRFZGl0b3IucHJvdG90eXBlLmVkaXRpbmdDb250cm9sbGVyRm9yTWFya2Vy
KToKKyAgICAgICAgVXNlIHRoZSBwcm92aWRlZCBUZXh0TWFya2VyJ3MgdHlwZSB0byBwcm92aWRl
IHRoZSBtb3N0IGFkZXF1YXRlIENvZGVNaXJyb3JFZGl0aW5nQ29udHJvbGxlciBjbGFzcy4KKwor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVGV4dE1hcmtlci5qczoKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5UZXh0TWFya2VyLnByb3RvdHlwZS5nZXQgcmVjdHMpOgorICAgICAgICBSZW1vdmUgdGhl
IC5ib3VuZHMgcHJvcGVydHkgaW4gZmF2b3Igb2YgLnJlY3RzIHRvIG1hdGNoIHRoZSB1bmRlcmx5
aW5nIENvZGVNaXJyb3IgZXh0ZW5zaW9uIG1ldGhvZC4KKworMjAxNC0wMi0yMCAgQW50b2luZSBR
dWludCAgPGdyYW91dHNAd2Via2l0Lm9yZz4KKwogICAgICAgICBXZWIgSW5zcGVjdG9yOiBQb3Bv
dmVyIHNob3VsZCBhbmltYXRlIGl0cyBmcmFtZSB0byBkaXNwbGF5IGl0cyByZWZyZXNoZWQgY29u
dGVudAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI5
MDg4CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NT
U1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IuanMKaW5kZXggMTk0Yjg0
NjJhYjM3NGY3MDM5ZTcyNmZhYjYzYTBhOWJkYzI5NWMzZi4uZDVlMGZhZDRjNjEzZWE2YjRlOWMz
YTNmYjFhYzllY2JjNDE0N2ZkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0
b3IuanMKQEAgLTM5MCw4ICszOTAsMTAgQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRp
b25UZXh0RWRpdG9yLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIGZ1bmN0aW9uIHVwZGF0
ZSgpCiAgICAgICAgIHsKKyAgICAgICAgICAgIHZhciByYW5nZSA9IHR5cGVvZiBsaW5lTnVtYmVy
ID09PSAibnVtYmVyIiA/IG5ldyBXZWJJbnNwZWN0b3IuVGV4dFJhbmdlKGxpbmVOdW1iZXIsIDAs
IGxpbmVOdW1iZXIgKyAxLCAwKSA6IG51bGw7CisKICAgICAgICAgICAgIC8vIExvb2sgZm9yIGNv
bG9yIHN0cmluZ3MgYW5kIGFkZCBzd2F0Y2hlcyBpbiBmcm9udCBvZiB0aGVtLgotICAgICAgICAg
ICAgdGhpcy5fY29kZU1pcnJvci5jcmVhdGVDb2xvck1hcmtlcnMobGluZU51bWJlciwgZnVuY3Rp
b24obWFya2VyLCBjb2xvciwgY29sb3JTdHJpbmcpIHsKKyAgICAgICAgICAgIHRoaXMuX2NvZGVN
aXJyb3IuY3JlYXRlQ29sb3JNYXJrZXJzKHJhbmdlLCBmdW5jdGlvbihtYXJrZXIsIGNvbG9yLCBj
b2xvclN0cmluZykgewogICAgICAgICAgICAgICAgIHZhciBzd2F0Y2hFbGVtZW50ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwogICAgICAgICAgICAgICAgIHN3YXRjaEVsZW1lbnQu
dGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNsaWNrIHRvIG9wZW4gYSBjb2xvcnBpY2tl
ci4gU2hpZnQtY2xpY2sgdG8gY2hhbmdlIGNvbG9yIGZvcm1hdC4iKTsKICAgICAgICAgICAgICAg
ICBzd2F0Y2hFbGVtZW50LmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0
aW9uVGV4dEVkaXRvci5Db2xvclN3YXRjaEVsZW1lbnRTdHlsZUNsYXNzTmFtZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvZGVNaXJyb3JBZGRpdGlv
bnMuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db2RlTWlycm9yQWRk
aXRpb25zLmpzCmluZGV4IDcyNzZiOTI1YmYzZGM0MzQ4ZTU4ZDFiZGQzNTEwM2I5NjM2ZGUwNWQu
LjQ4MzRjNWMxMmU4MmFiNDJmYjlmYjM3ODJkNGU5ZGFjZGRlZTUxNDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvZGVNaXJyb3JBZGRpdGlvbnMuanMK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29kZU1pcnJvckFkZGl0
aW9ucy5qcwpAQCAtNDE4LDE3ICs0MTgsNTAgQEAKICAgICAgICAgICAgIHJldHVybiBDb2RlTWly
cm9yLlBhc3M7CiAgICAgfQogCi0gICAgQ29kZU1pcnJvci5kZWZpbmVFeHRlbnNpb24oImJvdW5k
c0ZvclJhbmdlIiwgZnVuY3Rpb24ocmFuZ2UpIHsKLSAgICAgICAgdmFyIGZpcnN0Q2hhckNvb3Jk
cyA9IHRoaXMuY3Vyc29yQ29vcmRzKHJhbmdlLnN0YXJ0KTsKLSAgICAgICAgdmFyIGxhc3RDaGFy
Q29vcmRzID0gdGhpcy5jdXJzb3JDb29yZHMocmFuZ2UuZW5kKTsKLSAgICAgICAgcmV0dXJuIG5l
dyBXZWJJbnNwZWN0b3IuUmVjdChmaXJzdENoYXJDb29yZHMubGVmdCwgZmlyc3RDaGFyQ29vcmRz
LnRvcCwgbGFzdENoYXJDb29yZHMucmlnaHQgLSBmaXJzdENoYXJDb29yZHMubGVmdCwgZmlyc3RD
aGFyQ29vcmRzLmJvdHRvbSAtIGZpcnN0Q2hhckNvb3Jkcy50b3ApOworICAgIENvZGVNaXJyb3Iu
ZGVmaW5lRXh0ZW5zaW9uKCJyZWN0c0ZvclJhbmdlIiwgZnVuY3Rpb24ocmFuZ2UpIHsKKyAgICAg
ICAgdmFyIGxpbmVSZWN0cyA9IFtdOworCisgICAgICAgIGZvciAodmFyIGxpbmUgPSByYW5nZS5z
dGFydC5saW5lOyBsaW5lIDw9IHJhbmdlLmVuZC5saW5lOyArK2xpbmUpIHsKKyAgICAgICAgICAg
IHZhciBsaW5lQ29udGVudCA9IHRoaXMuZ2V0TGluZShsaW5lKTsKKworICAgICAgICAgICAgdmFy
IHN0YXJ0Q2hhciA9IGxpbmUgPT09IHJhbmdlLnN0YXJ0LmxpbmUgPyByYW5nZS5zdGFydC5jaCA6
IChsaW5lQ29udGVudC5sZW5ndGggLSBsaW5lQ29udGVudC50cmltTGVmdCgpLmxlbmd0aCk7Cisg
ICAgICAgICAgICB2YXIgZW5kQ2hhciA9IGxpbmUgPT09IHJhbmdlLmVuZC5saW5lID8gcmFuZ2Uu
ZW5kLmNoIDogbGluZUNvbnRlbnQubGVuZ3RoOworICAgICAgICAgICAgdmFyIGZpcnN0Q2hhckNv
b3JkcyA9IHRoaXMuY3Vyc29yQ29vcmRzKHtjaDogc3RhcnRDaGFyLCBsaW5lOiBsaW5lfSk7Cisg
ICAgICAgICAgICB2YXIgZW5kQ2hhckNvb3JkcyA9IHRoaXMuY3Vyc29yQ29vcmRzKHtjaDogZW5k
Q2hhciwgbGluZTogbGluZX0pOworCisgICAgICAgICAgICAvLyBIYW5kbGUgbGluZSB3cmFwcGlu
Zy4KKyAgICAgICAgICAgIGlmIChmaXJzdENoYXJDb29yZHMuYm90dG9tICE9PSBlbmRDaGFyQ29v
cmRzLmJvdHRvbSkgeworICAgICAgICAgICAgICAgIHZhciBtYXhZID0gLU51bWJlci5NQVhfVkFM
VUU7CisgICAgICAgICAgICAgICAgZm9yICh2YXIgY2ggPSBzdGFydENoYXI7IGNoIDw9IGVuZENo
YXI7ICsrY2gpIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGNvb3JkcyA9IHRoaXMuY3Vyc29y
Q29vcmRzKHtjaDogY2gsIGxpbmU6IGxpbmV9KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNv
b3Jkcy5ib3R0b20gPiBtYXhZKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2ggPiBz
dGFydENoYXIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbWF4WCA9IE1hdGgu
Y2VpbCh0aGlzLmN1cnNvckNvb3Jkcyh7Y2g6IGNoIC0gMSwgbGluZTogbGluZX0pLnJpZ2h0KTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUmVjdHMucHVzaChuZXcgV2ViSW5zcGVj
dG9yLlJlY3QobWluWCwgbWluWSwgbWF4WCAtIG1pblgsIG1heFkgLSBtaW5ZKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbWluWCA9IE1h
dGguZmxvb3IoY29vcmRzLmxlZnQpOworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG1pblkg
PSBNYXRoLmZsb29yKGNvb3Jkcy50b3ApCisgICAgICAgICAgICAgICAgICAgICAgICBtYXhZID0g
TWF0aC5jZWlsKGNvb3Jkcy5ib3R0b20pOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIG1heFggPSBNYXRoLmNlaWwoY29vcmRzLnJpZ2h0
KTsKKyAgICAgICAgICAgICAgICBsaW5lUmVjdHMucHVzaChuZXcgV2ViSW5zcGVjdG9yLlJlY3Qo
bWluWCwgbWluWSwgbWF4WCAtIG1pblgsIG1heFkgLSBtaW5ZKSk7CisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIHZhciBtaW5YID0gTWF0aC5mbG9vcihmaXJzdENoYXJDb29y
ZHMubGVmdCk7CisgICAgICAgICAgICAgICAgdmFyIG1pblkgPSBNYXRoLmZsb29yKGZpcnN0Q2hh
ckNvb3Jkcy50b3ApOworICAgICAgICAgICAgICAgIHZhciBtYXhYID0gTWF0aC5jZWlsKGVuZENo
YXJDb29yZHMucmlnaHQpOworICAgICAgICAgICAgICAgIHZhciBtYXhZID0gTWF0aC5jZWlsKGVu
ZENoYXJDb29yZHMuYm90dG9tKTsKKyAgICAgICAgICAgICAgICBsaW5lUmVjdHMucHVzaChuZXcg
V2ViSW5zcGVjdG9yLlJlY3QobWluWCwgbWluWSwgbWF4WCAtIG1pblgsIG1heFkgLSBtaW5ZKSk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGxpbmVSZWN0czsKICAg
ICB9KTsKIAotICAgIENvZGVNaXJyb3IuZGVmaW5lRXh0ZW5zaW9uKCJjcmVhdGVDb2xvck1hcmtl
cnMiLCBmdW5jdGlvbihsaW5lTnVtYmVyLCBjYWxsYmFjaykgeworICAgIENvZGVNaXJyb3IuZGVm
aW5lRXh0ZW5zaW9uKCJjcmVhdGVDb2xvck1hcmtlcnMiLCBmdW5jdGlvbihyYW5nZSwgY2FsbGJh
Y2spIHsKICAgICAgICAgdmFyIGNyZWF0ZWRNYXJrZXJzID0gW107CiAKLSAgICAgICAgdmFyIHN0
YXJ0ID0gdHlwZW9mIGxpbmVOdW1iZXIgPT09ICJudW1iZXIiID8gbGluZU51bWJlciA6IDA7Ci0g
ICAgICAgIHZhciBlbmQgPSB0eXBlb2YgbGluZU51bWJlciA9PT0gIm51bWJlciIgPyBsaW5lTnVt
YmVyICsgMSA6IHRoaXMubGluZUNvdW50KCk7CisgICAgICAgIHZhciBzdGFydCA9IHJhbmdlIGlu
c3RhbmNlb2YgV2ViSW5zcGVjdG9yLlRleHRSYW5nZSA/IHJhbmdlLnN0YXJ0TGluZSA6IDA7Cisg
ICAgICAgIHZhciBlbmQgPSByYW5nZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5UZXh0UmFuZ2Ug
PyByYW5nZS5lbmRMaW5lICsgMSA6IHRoaXMubGluZUNvdW50KCk7CiAKICAgICAgICAgLy8gTWF0
Y2hlcyByZ2JhKDAsIDAsIDAsIDAuNSksIHJnYigwLCAwLCAwKSwgaHNsKCksIGhzbGEoKSwgI2Zm
ZiwgI2ZmZmZmZiwgd2hpdGUKICAgICAgICAgY29uc3QgY29sb3JSZWdleCA9IC8oKD86cmdifGhz
bClhP1woW14pXStcKXwjWzAtOWEtZkEtRl17Nn18I1swLTlhLWZBLUZdezN9fFxiXHcrXGIoPyFb
LS5dKSkvZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L0NvZGVNaXJyb3JDb2xvckVkaXRpbmdDb250cm9sbGVyLmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvQ29kZU1pcnJvckNvbG9yRWRpdGluZ0NvbnRyb2xsZXIuanMKaW5k
ZXggYmQyNDJhMGE3YzM2ODU4YmZkYTEyYTE1NTFiY2I1YmUxMTQwYTQwZS4uZTBjMmU4YTQ1YmRm
ZmQ2ZjFlOGYzM2NmOWI0N2M5ZWFlZGJjZjAxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvQ29kZU1pcnJvckNvbG9yRWRpdGluZ0NvbnRyb2xsZXIuanMK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29kZU1pcnJvckNvbG9y
RWRpdGluZ0NvbnRyb2xsZXIuanMKQEAgLTI1LDEzNyArMjUsNDEgQEAKIAogV2ViSW5zcGVjdG9y
LkNvZGVNaXJyb3JDb2xvckVkaXRpbmdDb250cm9sbGVyID0gZnVuY3Rpb24oY29kZU1pcnJvciwg
bWFya2VyKQogewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKLQotICAgIHRo
aXMuX2NvZGVNaXJyb3IgPSBjb2RlTWlycm9yOwotICAgIHRoaXMuX21hcmtlciA9IG1hcmtlcjsK
LSAgICB0aGlzLl9kZWxlZ2F0ZSA9IG51bGw7Ci0KLSAgICB0aGlzLl9yYW5nZSA9IG1hcmtlci5y
YW5nZTsKLSAgICB0aGlzLl9jb2xvciA9IFdlYkluc3BlY3Rvci5Db2xvci5mcm9tU3RyaW5nKHRo
aXMudGV4dCk7Ci0KLSAgICB0aGlzLl9rZXlib2FyZFNob3J0Y3V0RXNjID0gbmV3IFdlYkluc3Bl
Y3Rvci5LZXlib2FyZFNob3J0Y3V0KG51bGwsIFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0
LktleS5Fc2NhcGUpOworICAgIFdlYkluc3BlY3Rvci5Db2RlTWlycm9yRWRpdGluZ0NvbnRyb2xs
ZXIuY2FsbCh0aGlzLCBjb2RlTWlycm9yLCBtYXJrZXIpOwogfQogCiBXZWJJbnNwZWN0b3IuQ29k
ZU1pcnJvckNvbG9yRWRpdGluZ0NvbnRyb2xsZXIucHJvdG90eXBlID0gewogICAgIGNvbnN0cnVj
dG9yOiBXZWJJbnNwZWN0b3IuQ29kZU1pcnJvckNvbG9yRWRpdGluZ0NvbnRyb2xsZXIsCi0gICAg
X19wcm90b19fOiBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZSwKKyAgICBfX3Byb3RvX186
IFdlYkluc3BlY3Rvci5Db2RlTWlycm9yRWRpdGluZ0NvbnRyb2xsZXIucHJvdG90eXBlLAogICAg
IAogICAgIC8vIFB1YmxpYwotICAgIAotICAgIGdldCBtYXJrZXIoKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIHRoaXMuX21hcmtlcjsKLSAgICB9LAotICAgIAotICAgIGdldCByYW5nZSgpCi0gICAg
ewotICAgICAgICByZXR1cm4gdGhpcy5fcmFuZ2U7Ci0gICAgfSwKIAotICAgIGdldCBjb2xvcigp
CisgICAgZ2V0IGluaXRpYWxWYWx1ZSgpCiAgICAgewotICAgICAgICByZXR1cm4gdGhpcy5fY29s
b3I7Ci0gICAgfSwKLSAgICAKLSAgICBzZXQgY29sb3IoY29sb3IpCi0gICAgewotICAgICAgICB0
aGlzLnRleHQgPSBjb2xvci50b1N0cmluZygpOwotICAgICAgICB0aGlzLl9jb2xvciA9IGNvbG9y
OworICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLkNvbG9yLmZyb21TdHJpbmcodGhpcy50ZXh0
KTsKICAgICB9LAogCi0gICAgZ2V0IGRlbGVnYXRlKCkKKyAgICBnZXQgY3NzQ2xhc3NOYW1lKCkK
ICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9kZWxlZ2F0ZTsKKyAgICAgICAgcmV0dXJuICJj
b2xvciI7CiAgICAgfSwKIAotICAgIHNldCBkZWxlZ2F0ZShkZWxlZ2F0ZSkKKyAgICBwb3BvdmVy
V2lsbFByZXNlbnQ6IGZ1bmN0aW9uKHBvcG92ZXIpCiAgICAgewotICAgICAgICB0aGlzLl9kZWxl
Z2F0ZSA9IGRlbGVnYXRlOworICAgICAgICB0aGlzLl9jb2xvclBpY2tlciA9IG5ldyBXZWJJbnNw
ZWN0b3IuQ29sb3JQaWNrZXI7CisgICAgICAgIHRoaXMuX2NvbG9yUGlja2VyLmFkZEV2ZW50TGlz
dGVuZXIoV2ViSW5zcGVjdG9yLkNvbG9yUGlja2VyLkV2ZW50LkNvbG9yQ2hhbmdlZCwgdGhpcy5f
Y29sb3JQaWNrZXJDb2xvckNoYW5nZWQsIHRoaXMpOworICAgICAgICBwb3BvdmVyLmNvbnRlbnQg
PSB0aGlzLl9jb2xvclBpY2tlci5lbGVtZW50OwogICAgIH0sCiAKLSAgICBnZXQgdGV4dCgpCi0g
ICAgewotICAgICAgICB2YXIgZnJvbSA9IHtsaW5lOiB0aGlzLl9yYW5nZS5zdGFydExpbmUsIGNo
OiB0aGlzLl9yYW5nZS5zdGFydENvbHVtbn07Ci0gICAgICAgIHZhciB0byA9IHtsaW5lOiB0aGlz
Ll9yYW5nZS5lbmRMaW5lLCBjaDogdGhpcy5fcmFuZ2UuZW5kQ29sdW1ufTsKLSAgICAgICAgcmV0
dXJuIHRoaXMuX2NvZGVNaXJyb3IuZ2V0UmFuZ2UoZnJvbSwgdG8pOwotICAgIH0sCi0gICAgCi0g
ICAgc2V0IHRleHQodGV4dCkKLSAgICB7Ci0gICAgICAgIHZhciBmcm9tID0ge2xpbmU6IHRoaXMu
X3JhbmdlLnN0YXJ0TGluZSwgY2g6IHRoaXMuX3JhbmdlLnN0YXJ0Q29sdW1ufTsKLSAgICAgICAg
dmFyIHRvID0ge2xpbmU6IHRoaXMuX3JhbmdlLmVuZExpbmUsIGNoOiB0aGlzLl9yYW5nZS5lbmRD
b2x1bW59OwotICAgICAgICB0aGlzLl9jb2RlTWlycm9yLnJlcGxhY2VSYW5nZSh0ZXh0LCBmcm9t
LCB0byk7Ci0KLSAgICAgICAgdmFyIGxpbmVzID0gdGV4dC5zcGxpdCgiXG4iKTsKLSAgICAgICAg
dmFyIGVuZExpbmUgPSB0aGlzLl9yYW5nZS5zdGFydExpbmUgKyBsaW5lcy5sZW5ndGggLSAxOwot
ICAgICAgICB2YXIgZW5kQ29sdW1uID0gbGluZXMubGVuZ3RoID4gMSA/IGxpbmVzLmxhc3RWYWx1
ZS5sZW5ndGggOiB0aGlzLl9yYW5nZS5zdGFydENvbHVtbiArIHRleHQubGVuZ3RoOwotICAgICAg
ICB0aGlzLl9yYW5nZSA9IG5ldyBXZWJJbnNwZWN0b3IuVGV4dFJhbmdlKHRoaXMuX3JhbmdlLnN0
YXJ0TGluZSwgdGhpcy5fcmFuZ2Uuc3RhcnRDb2x1bW4sIGVuZExpbmUsIGVuZENvbHVtbik7Ci0g
ICAgfSwKLSAgICAKLSAgICBwcmVzZW50SG92ZXJNZW51OiBmdW5jdGlvbigpCisgICAgcG9wb3Zl
ckRpZFByZXNlbnQ6IGZ1bmN0aW9uKHBvcG92ZXIpCiAgICAgewotICAgICAgICB0aGlzLl9ob3Zl
ck1lbnUgPSBuZXcgV2ViSW5zcGVjdG9yLkhvdmVyTWVudSh0aGlzKTsKLSAgICAgICAgdGhpcy5f
aG92ZXJNZW51LmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiY29sb3IiKTsKLSAgICAgICAgdGhpcy5f
Ym91bmRzID0gdGhpcy5fbWFya2VyLmJvdW5kczsKLSAgICAgICAgdGhpcy5faG92ZXJNZW51LnBy
ZXNlbnQodGhpcy5fYm91bmRzKTsKKyAgICAgICAgdGhpcy5fY29sb3JQaWNrZXIuY29sb3IgPSB0
aGlzLl92YWx1ZTsKICAgICB9LAogCi0gICAgZGlzbWlzc0hvdmVyTWVudTogZnVuY3Rpb24oKQot
ICAgIHsKLSAgICAgICAgdGhpcy5faG92ZXJNZW51LmRpc21pc3MoKTsKLSAgICB9LAotCi0gICAg
Ly8gUHJvdGVjdGVkCi0KLSAgICBoYW5kbGVFdmVudDogZnVuY3Rpb24oZXZlbnQpCi0gICAgewot
ICAgICAgICBpZiAoIXRoaXMuX2tleWJvYXJkU2hvcnRjdXRFc2MubWF0Y2hlc0V2ZW50KGV2ZW50
KSB8fCAhdGhpcy5fcG9wb3Zlci52aXNpYmxlKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAKLSAgICAgICAgdGhpcy5jb2xvciA9IHRoaXMuX29yaWdpbmFsQ29sb3I7Ci0gICAgICAgIHRo
aXMuX3BvcG92ZXIuZGlzbWlzcygpOwotCi0gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigp
OwotICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwotICAgIH0sCi0KLSAgICBob3Zlck1l
bnVCdXR0b25XYXNQcmVzc2VkOiBmdW5jdGlvbihob3Zlck1lbnUpCi0gICAgewotICAgICAgICB2
YXIgY29sb3JQaWNrZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbG9yUGlja2VyOwotICAgICAgICBj
b2xvclBpY2tlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Db2xvclBpY2tlci5FdmVu
dC5Db2xvckNoYW5nZWQsIHRoaXMuX2NvbG9yUGlja2VyQ29sb3JDaGFuZ2VkLCB0aGlzKTsKLQot
ICAgICAgICB0aGlzLl9wb3BvdmVyID0gbmV3IFdlYkluc3BlY3Rvci5Qb3BvdmVyKHRoaXMpOwot
ICAgICAgICB0aGlzLl9wb3BvdmVyLmNvbnRlbnQgPSBjb2xvclBpY2tlci5lbGVtZW50OwotICAg
ICAgICB0aGlzLl9wb3BvdmVyLnByZXNlbnQodGhpcy5fYm91bmRzLnBhZCgyKSwgW1dlYkluc3Bl
Y3Rvci5SZWN0RWRnZS5NQVhfWSwgV2ViSW5zcGVjdG9yLlJlY3RFZGdlLk1BWF9YXSk7Ci0KLSAg
ICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCB0aGlzLCB0cnVlKTsKLQot
ICAgICAgICBjb2xvclBpY2tlci5jb2xvciA9IHRoaXMuX2NvbG9yOwotCi0gICAgICAgIGhvdmVy
TWVudS5kaXNtaXNzKCk7Ci0KLSAgICAgICAgaWYgKHRoaXMuX2RlbGVnYXRlICYmIHR5cGVvZiB0
aGlzLl9kZWxlZ2F0ZS5jb2xvckVkaXRpbmdDb250cm9sbGVyRGlkU3RhcnRFZGl0aW5nID09PSAi
ZnVuY3Rpb24iKQotICAgICAgICAgICAgdGhpcy5fZGVsZWdhdGUuY29sb3JFZGl0aW5nQ29udHJv
bGxlckRpZFN0YXJ0RWRpdGluZyh0aGlzKTsKLQotICAgICAgICB0aGlzLl9vcmlnaW5hbENvbG9y
ID0gdGhpcy5fY29sb3IuY29weSgpOwotICAgIH0sCi0gICAgCi0gICAgZGlkRGlzbWlzc1BvcG92
ZXI6IGZ1bmN0aW9uKHBvcG92ZXIpCi0gICAgewotICAgICAgICBkZWxldGUgdGhpcy5fcG9wb3Zl
cjsKLSAgICAgICAgZGVsZXRlIHRoaXMuX29yaWdpbmFsQ29sb3I7Ci0KLSAgICAgICAgd2luZG93
LnJlbW92ZUV2ZW50TGlzdGVuZXIoImtleWRvd24iLCB0aGlzLCB0cnVlKTsKLQotICAgICAgICBp
ZiAodGhpcy5fZGVsZWdhdGUgJiYgdHlwZW9mIHRoaXMuX2RlbGVnYXRlLmNvbG9yRWRpdGluZ0Nv
bnRyb2xsZXJEaWRGaW5pc2hFZGl0aW5nID09PSAiZnVuY3Rpb24iKQotICAgICAgICAgICAgdGhp
cy5fZGVsZWdhdGUuY29sb3JFZGl0aW5nQ29udHJvbGxlckRpZEZpbmlzaEVkaXRpbmcodGhpcyk7
Ci0gICAgfSwKLSAgICAKICAgICAvLyBQcml2YXRlCiAgICAgCiAgICAgX2NvbG9yUGlja2VyQ29s
b3JDaGFuZ2VkOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHRoaXMuY29sb3IgPSBl
dmVudC50YXJnZXQuY29sb3I7CisgICAgICAgIHRoaXMudmFsdWUgPSBldmVudC50YXJnZXQuY29s
b3I7CiAgICAgfSAgICAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL0NvZGVNaXJyb3JFZGl0aW5nQ29udHJvbGxlci5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvZGVNaXJyb3JFZGl0aW5nQ29udHJvbGxlci5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4zNDIyNmFiMTE3MDgwNWMyMGFhNjM2NzNjZmI2ZDc3MWZmODM0NTUwCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29kZU1pcnJv
ckVkaXRpbmdDb250cm9sbGVyLmpzCkBAIC0wLDAgKzEsMTkwIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV2Vi
SW5zcGVjdG9yLkNvZGVNaXJyb3JFZGl0aW5nQ29udHJvbGxlciA9IGZ1bmN0aW9uKGNvZGVNaXJy
b3IsIG1hcmtlcikKK3sKKyAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CisKKyAg
ICB0aGlzLl9jb2RlTWlycm9yID0gY29kZU1pcnJvcjsKKyAgICB0aGlzLl9tYXJrZXIgPSBtYXJr
ZXI7CisgICAgdGhpcy5fZGVsZWdhdGUgPSBudWxsOworCisgICAgdGhpcy5fcmFuZ2UgPSBtYXJr
ZXIucmFuZ2U7CisKKyAgICAvLyBUaGUgdmFsdWUgbXVzdCBzdXBwb3J0IC50b1N0cmluZygpIGFu
ZCAuY29weSgpIG1ldGhvZHMuCisgICAgdGhpcy5fdmFsdWUgPSB0aGlzLmluaXRpYWxWYWx1ZTsK
KworICAgIHRoaXMuX2tleWJvYXJkU2hvcnRjdXRFc2MgPSBuZXcgV2ViSW5zcGVjdG9yLktleWJv
YXJkU2hvcnRjdXQobnVsbCwgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuS2V5LkVzY2Fw
ZSk7Cit9CisKK1dlYkluc3BlY3Rvci5Db2RlTWlycm9yRWRpdGluZ0NvbnRyb2xsZXIucHJvdG90
eXBlID0geworICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuQ29kZU1pcnJvckVkaXRpbmdD
b250cm9sbGVyLAorICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGUs
CisgICAgCisgICAgLy8gUHVibGljCisgICAgCisgICAgZ2V0IG1hcmtlcigpCisgICAgeworICAg
ICAgICByZXR1cm4gdGhpcy5fbWFya2VyOworICAgIH0sCisgICAgCisgICAgZ2V0IHJhbmdlKCkK
KyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9yYW5nZTsKKyAgICB9LAorCisgICAgZ2V0IHZh
bHVlKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl92YWx1ZTsKKyAgICB9LAorICAgIAor
ICAgIHNldCB2YWx1ZSh2YWx1ZSkKKyAgICB7CisgICAgICAgIHRoaXMudGV4dCA9IHZhbHVlLnRv
U3RyaW5nKCk7CisgICAgICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7CisgICAgfSwKKworICAgIGdl
dCBkZWxlZ2F0ZSgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fZGVsZWdhdGU7CisgICAg
fSwKKworICAgIHNldCBkZWxlZ2F0ZShkZWxlZ2F0ZSkKKyAgICB7CisgICAgICAgIHRoaXMuX2Rl
bGVnYXRlID0gZGVsZWdhdGU7CisgICAgfSwKKworICAgIGdldCB0ZXh0KCkKKyAgICB7CisgICAg
ICAgIHZhciBmcm9tID0ge2xpbmU6IHRoaXMuX3JhbmdlLnN0YXJ0TGluZSwgY2g6IHRoaXMuX3Jh
bmdlLnN0YXJ0Q29sdW1ufTsKKyAgICAgICAgdmFyIHRvID0ge2xpbmU6IHRoaXMuX3JhbmdlLmVu
ZExpbmUsIGNoOiB0aGlzLl9yYW5nZS5lbmRDb2x1bW59OworICAgICAgICByZXR1cm4gdGhpcy5f
Y29kZU1pcnJvci5nZXRSYW5nZShmcm9tLCB0byk7CisgICAgfSwKKyAgICAKKyAgICBzZXQgdGV4
dCh0ZXh0KQorICAgIHsKKyAgICAgICAgdmFyIGZyb20gPSB7bGluZTogdGhpcy5fcmFuZ2Uuc3Rh
cnRMaW5lLCBjaDogdGhpcy5fcmFuZ2Uuc3RhcnRDb2x1bW59OworICAgICAgICB2YXIgdG8gPSB7
bGluZTogdGhpcy5fcmFuZ2UuZW5kTGluZSwgY2g6IHRoaXMuX3JhbmdlLmVuZENvbHVtbn07Cisg
ICAgICAgIHRoaXMuX2NvZGVNaXJyb3IucmVwbGFjZVJhbmdlKHRleHQsIGZyb20sIHRvKTsKKwor
ICAgICAgICB2YXIgbGluZXMgPSB0ZXh0LnNwbGl0KCJcbiIpOworICAgICAgICB2YXIgZW5kTGlu
ZSA9IHRoaXMuX3JhbmdlLnN0YXJ0TGluZSArIGxpbmVzLmxlbmd0aCAtIDE7CisgICAgICAgIHZh
ciBlbmRDb2x1bW4gPSBsaW5lcy5sZW5ndGggPiAxID8gbGluZXMubGFzdFZhbHVlLmxlbmd0aCA6
IHRoaXMuX3JhbmdlLnN0YXJ0Q29sdW1uICsgdGV4dC5sZW5ndGg7CisgICAgICAgIHRoaXMuX3Jh
bmdlID0gbmV3IFdlYkluc3BlY3Rvci5UZXh0UmFuZ2UodGhpcy5fcmFuZ2Uuc3RhcnRMaW5lLCB0
aGlzLl9yYW5nZS5zdGFydENvbHVtbiwgZW5kTGluZSwgZW5kQ29sdW1uKTsKKyAgICB9LAorCisg
ICAgZ2V0IGluaXRpYWxWYWx1ZSgpCisgICAgeworICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBz
dWJjbGFzc2VzLgorICAgICAgICByZXR1cm4gdGhpcy50ZXh0OworICAgIH0sCisgICAgCisgICAg
Z2V0IGNzc0NsYXNzTmFtZSgpCisgICAgeworICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJj
bGFzc2VzLgorICAgICAgICByZXR1cm4gIiI7CisgICAgfSwKKyAgICAKKyAgICBnZXQgcG9wb3Zl
cigpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fcG9wb3ZlcjsKKyAgICB9LAorCisgICAg
Z2V0IHBvcG92ZXJQcmVmZXJyZWRFZGdlcygpCisgICAgeworICAgICAgICAvLyBCZXN0IHRvIGRp
c3BsYXkgdGhlIHBvcG92ZXIgdG8gdGhlIGxlZnQgb3IgYWJvdmUgdGhlIGVkaXRlZCByYW5nZSBz
aW5jZSBpdHMgZW5kIHBvc2l0aW9uIG1heSBjaGFuZ2UsIGJ1dCBub3QgaXRzIHN0YXJ0CisgICAg
ICAgIC8vIHBvc2l0aW9uLiBUaGlzIHdheSB3ZSBtaW5pbWl6ZSB0aGUgY2hhbmNlcyBvZiBvdmVy
bGF5aW5nIHRoZSBlZGl0ZWQgcmFuZ2UgYXMgaXQgY2hhbmdlcy4KKyAgICAgICAgcmV0dXJuIFtX
ZWJJbnNwZWN0b3IuUmVjdEVkZ2UuTUlOX1gsIFdlYkluc3BlY3Rvci5SZWN0RWRnZS5NSU5fWSwg
V2ViSW5zcGVjdG9yLlJlY3RFZGdlLk1BWF9ZLCBXZWJJbnNwZWN0b3IuUmVjdEVkZ2UuTUFYX1hd
OworICAgIH0sCisKKyAgICBwb3BvdmVyVGFyZ2V0RnJhbWVXaXRoUmVjdHM6IGZ1bmN0aW9uKHJl
Y3RzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5SZWN0LnVuaW9uT2ZSZWN0
cyhyZWN0cyk7CisgICAgfSwKKworICAgIHByZXNlbnRIb3Zlck1lbnU6IGZ1bmN0aW9uKCkKKyAg
ICB7CisgICAgICAgIHRoaXMuX2hvdmVyTWVudSA9IG5ldyBXZWJJbnNwZWN0b3IuSG92ZXJNZW51
KHRoaXMpOworICAgICAgICB0aGlzLl9ob3Zlck1lbnUuZWxlbWVudC5jbGFzc0xpc3QuYWRkKHRo
aXMuY3NzQ2xhc3NOYW1lKTsKKyAgICAgICAgdGhpcy5fcmVjdHMgPSB0aGlzLl9tYXJrZXIucmVj
dHM7CisgICAgICAgIHRoaXMuX2hvdmVyTWVudS5wcmVzZW50KHRoaXMuX3JlY3RzKTsKKyAgICB9
LAorCisgICAgZGlzbWlzc0hvdmVyTWVudTogZnVuY3Rpb24oZGlzY3JldGUpCisgICAgeworICAg
ICAgICB0aGlzLl9ob3Zlck1lbnUuZGlzbWlzcyhkaXNjcmV0ZSk7CisgICAgfSwKKworICAgIHBv
cG92ZXJXaWxsUHJlc2VudDogZnVuY3Rpb24ocG9wb3ZlcikKKyAgICB7CisgICAgICAgIC8vIElt
cGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuCisgICAgfSwKKworICAgIHBvcG92ZXJEaWRQcmVzZW50
OiBmdW5jdGlvbihwb3BvdmVyKQorICAgIHsKKyAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3Vi
Y2xhc3Nlcy4KKyAgICB9LAorCisgICAgLy8gUHJvdGVjdGVkCisKKyAgICBoYW5kbGVLZXlkb3du
RXZlbnQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9rZXlib2Fy
ZFNob3J0Y3V0RXNjLm1hdGNoZXNFdmVudChldmVudCkgfHwgIXRoaXMuX3BvcG92ZXIudmlzaWJs
ZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCisgICAgICAgIHRoaXMudmFs
dWUgPSB0aGlzLl9vcmlnaW5hbFZhbHVlOworICAgICAgICB0aGlzLl9wb3BvdmVyLmRpc21pc3Mo
KTsKKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9LAorCisgICAgaG92ZXJNZW51QnV0dG9u
V2FzUHJlc3NlZDogZnVuY3Rpb24oaG92ZXJNZW51KQorICAgIHsKKyAgICAgICAgdGhpcy5fcG9w
b3ZlciA9IG5ldyBXZWJJbnNwZWN0b3IuUG9wb3Zlcih0aGlzKTsKKyAgICAgICAgdGhpcy5wb3Bv
dmVyV2lsbFByZXNlbnQodGhpcy5fcG9wb3Zlcik7CisgICAgICAgIHRoaXMuX3BvcG92ZXIucHJl
c2VudCh0aGlzLnBvcG92ZXJUYXJnZXRGcmFtZVdpdGhSZWN0cyh0aGlzLl9yZWN0cykucGFkKDIp
LCB0aGlzLnBvcG92ZXJQcmVmZXJyZWRFZGdlcyk7CisgICAgICAgIHRoaXMucG9wb3ZlckRpZFBy
ZXNlbnQodGhpcy5fcG9wb3Zlcik7CisKKyAgICAgICAgV2ViSW5zcGVjdG9yLmFkZFdpbmRvd0tl
eWRvd25MaXN0ZW5lcih0aGlzKTsKKworICAgICAgICBob3Zlck1lbnUuZGlzbWlzcygpOworCisg
ICAgICAgIGlmICh0aGlzLl9kZWxlZ2F0ZSAmJiB0eXBlb2YgdGhpcy5fZGVsZWdhdGUuZWRpdGlu
Z0NvbnRyb2xsZXJEaWRTdGFydEVkaXRpbmcgPT09ICJmdW5jdGlvbiIpCisgICAgICAgICAgICB0
aGlzLl9kZWxlZ2F0ZS5lZGl0aW5nQ29udHJvbGxlckRpZFN0YXJ0RWRpdGluZyh0aGlzKTsKKwor
ICAgICAgICB0aGlzLl9vcmlnaW5hbFZhbHVlID0gdGhpcy5fdmFsdWUuY29weSgpOworICAgIH0s
CisgICAgCisgICAgZGlkRGlzbWlzc1BvcG92ZXI6IGZ1bmN0aW9uKHBvcG92ZXIpCisgICAgewor
ICAgICAgICBkZWxldGUgdGhpcy5fcG9wb3ZlcjsKKyAgICAgICAgZGVsZXRlIHRoaXMuX29yaWdp
bmFsVmFsdWU7CisKKyAgICAgICAgV2ViSW5zcGVjdG9yLnJlbW92ZVdpbmRvd0tleWRvd25MaXN0
ZW5lcih0aGlzKTsKKworICAgICAgICBpZiAodGhpcy5fZGVsZWdhdGUgJiYgdHlwZW9mIHRoaXMu
X2RlbGVnYXRlLmVkaXRpbmdDb250cm9sbGVyRGlkRmluaXNoRWRpdGluZyA9PT0gImZ1bmN0aW9u
IikKKyAgICAgICAgICAgIHRoaXMuX2RlbGVnYXRlLmVkaXRpbmdDb250cm9sbGVyRGlkRmluaXNo
RWRpdGluZyh0aGlzKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9HZW9tZXRyeS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL0dlb21ldHJ5LmpzCmluZGV4IDMxYTAyNWNhZGM5NDRjYmYzZDIyYzc5YTI3MzY3
MDBmN2I1MTEyMmIuLmVhNWMwODE5ZDQ4OTQwOGMzNjZmYTU4N2NkODJkYmM3YjM0ZmEyNzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0dlb21ldHJ5Lmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0dlb21ldHJ5LmpzCkBA
IC05OCw2ICs5OCwxNCBAQCBXZWJJbnNwZWN0b3IuUmVjdC5yZWN0RnJvbUNsaWVudFJlY3QgPSBm
dW5jdGlvbihjbGllbnRSZWN0KQogICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlJlY3QoY2xp
ZW50UmVjdC5sZWZ0LCBjbGllbnRSZWN0LnRvcCwgY2xpZW50UmVjdC53aWR0aCwgY2xpZW50UmVj
dC5oZWlnaHQpOwogfTsKIAorV2ViSW5zcGVjdG9yLlJlY3QudW5pb25PZlJlY3RzID0gZnVuY3Rp
b24ocmVjdHMpCit7CisgICAgdmFyIHVuaW9uID0gcmVjdHNbMF07CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCByZWN0cy5sZW5ndGg7ICsraSkKKyAgICAgICAgdW5pb24gPSB1bmlvbi51bmlvbldp
dGhSZWN0KHJlY3RzW2ldKTsKKyAgICByZXR1cm4gdW5pb247Cit9OworCiBXZWJJbnNwZWN0b3Iu
UmVjdC5wcm90b3R5cGUgPSB7CiAgICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5SZWN0LAog
CkBAIC0xODMsNyArMTkxLDE2IEBAIFdlYkluc3BlY3Rvci5SZWN0LnByb3RvdHlwZSA9IHsKICAg
ICAgICAgaW50ZXJzZWN0aW9uLnNpemUuaGVpZ2h0ID0geTIgLSB5MTsKICAgICAgICAgcmV0dXJu
IGludGVyc2VjdGlvbjsKICAgICB9LAotICAgIAorCisgICAgdW5pb25XaXRoUmVjdDogZnVuY3Rp
b24ocmVjdCkKKyAgICB7CisgICAgICAgIHZhciB4ID0gTWF0aC5taW4odGhpcy5taW5YKCksIHJl
Y3QubWluWCgpKTsKKyAgICAgICAgdmFyIHkgPSBNYXRoLm1pbih0aGlzLm1pblkoKSwgcmVjdC5t
aW5ZKCkpOworICAgICAgICB2YXIgd2lkdGggPSBNYXRoLm1heCh0aGlzLm1heFgoKSwgcmVjdC5t
YXhYKCkpIC0geDsKKyAgICAgICAgdmFyIGhlaWdodCA9IE1hdGgubWF4KHRoaXMubWF4WSgpLCBy
ZWN0Lm1heFkoKSkgLSB5OworICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5SZWN0KHgs
IHksIHdpZHRoLCBoZWlnaHQpOworICAgIH0sCisKICAgICByb3VuZDogZnVuY3Rpb24oKQogICAg
IHsKICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuUmVjdCgKQEAgLTI2MywzICsyODAs
MjcgQEAgV2ViSW5zcGVjdG9yLlF1YWQucHJvdG90eXBlID0gewogICAgICAgICBdOwogICAgIH0K
IH07CisKK1dlYkluc3BlY3Rvci5Qb2x5Z29uID0gZnVuY3Rpb24ocG9pbnRzKQoreworICAgIHRo
aXMucG9pbnRzID0gcG9pbnRzOworfQorCitXZWJJbnNwZWN0b3IuUG9seWdvbi5wcm90b3R5cGUg
PSB7CisgICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5Qb2x5Z29uLAorCisgICAgYm91bmRz
OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgbWluWCA9IE51bWJlci5NQVhfVkFMVUU7
CisgICAgICAgIHZhciBtaW5ZID0gTnVtYmVyLk1BWF9WQUxVRTsKKyAgICAgICAgdmFyIG1heFgg
PSAtTnVtYmVyLk1BWF9WQUxVRTsKKyAgICAgICAgdmFyIG1heFkgPSAtTnVtYmVyLk1BWF9WQUxV
RTsKKyAgICAgICAgZm9yICh2YXIgcG9pbnQgb2YgdGhpcy5wb2ludHMpIHsKKyAgICAgICAgICAg
IG1pblggPSBNYXRoLm1pbihtaW5YLCBwb2ludC54KTsKKyAgICAgICAgICAgIG1heFggPSBNYXRo
Lm1heChtYXhYLCBwb2ludC54KTsKKyAgICAgICAgICAgIG1pblkgPSBNYXRoLm1pbihtaW5ZLCBw
b2ludC55KTsKKyAgICAgICAgICAgIG1heFkgPSBNYXRoLm1heChtYXhZLCBwb2ludC55KTsKKyAg
ICAgICAgfQorICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5SZWN0KG1pblgsIG1pblks
IG1heFggLSBtaW5YLCBtYXhZIC0gbWluWSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSG92ZXJNZW51LmNzcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0hvdmVyTWVudS5jc3MKaW5kZXggYjMwMzFmM2QwZTVm
MzU0Zjc4YTA2YTJkZDIxYjM0ODUwZmQ1NjI2YS4uNGFiMjRlMjc4ZjBjMTJkM2NmNDRmZjMyYzI4
MDg1ZTBiNGEwYjhmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvSG92ZXJNZW51LmNzcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Ib3Zlck1lbnUuY3NzCkBAIC0yNSwyNiArMjUsOCBAQAogCiAuaG92ZXItbWVudSB7CiAg
ICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKIAotICAg
IC8qIEV4Y2VwdGlvbmFsbHkgdXNlIGNvbnRlbnQtYm94IHN1Y2ggdGhhdCB0aGUgZnJhbWUgc2V0
IGlzIHRoYXQgb2YgdGhlIGhpZ2hsaWdodGVkIHN0cmluZwotICAgICAgIGFuZCBzdHlsaW5nIGFk
ZHMgdGhlIHJlcXVpcmVkIHBhZGRpbmcgYXJvdW5kIGl0ICovCi0gICAgYm94LXNpemluZzogY29u
dGVudC1ib3g7Ci0KLSAgICAvKiBQb3NpdGlvbiB0aGUgaWNvbiB0byB0aGUgcmlnaHQgb2YgdGhl
IG1lbnUgYW5kIGNlbnRlcmVkIHZlcnRpY2FsbHkgKi8KLSAgICAtd2Via2l0LWp1c3RpZnktY29u
dGVudDogZmxleC1lbmQ7Ci0gICAgLXdlYmtpdC1hbGlnbi1pdGVtczogY2VudGVyOwotCi0gICAg
LyogUHJvdmlkZSBleHRyYSByb29tIGZvciB0aGUgaWNvbiAqLwotICAgIHBhZGRpbmctbGVmdDog
MnB4OwotICAgIHBhZGRpbmctcmlnaHQ6IDE2cHg7Ci0KLSAgICBtaW4taGVpZ2h0OiAxN3B4Owot
Ci0gICAgYm9yZGVyLXJhZGl1czogNHB4OwotICAgIGJvcmRlcjogMnB4IHNvbGlkIHJnYmEoMCwg
MCwgMCwgMC4yMik7Ci0gICAgCi0gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0z
cHgsIC01cHgsIDApOworICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTFweCwgLTFw
eCk7CiAKICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICBvcGFjaXR5OiAwOwpAQCAtNTYs
MTAgKzM4LDI3IEBACiAgICAgb3BhY2l0eTogMTsKIH0KIAorLmhvdmVyLW1lbnUgPiBzdmcgewor
ICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6IDA7CisgICAgbGVmdDogMDsKK30KKwor
LmhvdmVyLW1lbnUgPiBzdmcgPiBwYXRoLAorLmhvdmVyLW1lbnUgPiBzdmcgPiByZWN0IHsKKyAg
ICBzdHJva2U6IHJnYmEoMCwgMCwgMCwgMC4yMik7CisgICAgc3Ryb2tlLXdpZHRoOiAycHg7Cisg
ICAgZmlsbDogbm9uZTsKK30KKwogLmhvdmVyLW1lbnUgPiBpbWcgeworICAgIHBvc2l0aW9uOiBh
YnNvbHV0ZTsKKworICAgIGxlZnQ6IDA7CisgICAgdG9wOiAwOwogICAgIHdpZHRoOiAxNXB4Owog
ICAgIGhlaWdodDogMTNweDsKLSAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgxNHB4
KTsKKwogICAgIGNvbnRlbnQ6IC13ZWJraXQtaW1hZ2Utc2V0KHVybChJbWFnZXMvSG92ZXJNZW51
QnV0dG9uLnBuZykgMXgsIHVybChJbWFnZXMvSG92ZXJNZW51QnV0dG9uQDJ4LnBuZykgMngpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Ib3Zl
ck1lbnUuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Ib3Zlck1lbnUu
anMKaW5kZXggNDc1MTRmYmU5YmI4Yjc3YjQwMDdkZDRjZjQwNzUwMDFlODFkNDA5Ny4uYWJjYzQw
NTU3MmQ3NzIwZTI0MGYwM2JiMTBjZGY3ZTg1N2YxN2E5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSG92ZXJNZW51LmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0hvdmVyTWVudS5qcwpAQCAtMzMsNiArMzMsOCBAQCBX
ZWJJbnNwZWN0b3IuSG92ZXJNZW51ID0gZnVuY3Rpb24oZGVsZWdhdGUpCiAgICAgdGhpcy5fZWxl
bWVudC5jbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuSG92ZXJNZW51LlN0eWxlQ2xhc3NOYW1lOwog
ICAgIHRoaXMuX2VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidHJhbnNpdGlvbmVuZCIsIHRoaXMs
IHRydWUpOwogCisgICAgdGhpcy5fb3V0bGluZUVsZW1lbnQgPSB0aGlzLl9lbGVtZW50LmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAic3ZnIikpOworCiAgICAgdGhpcy5fYnV0dG9uID0gdGhpcy5fZWxlbWVudC5hcHBlbmRD
aGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKSk7CiAgICAgdGhpcy5fYnV0dG9uLmFk
ZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcyk7CiB9CkBAIC01MSwyOCArNTMsMjUgQEAgV2Vi
SW5zcGVjdG9yLkhvdmVyTWVudS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiB0aGlzLl9l
bGVtZW50OwogICAgIH0sCiAKLSAgICBwcmVzZW50OiBmdW5jdGlvbih0YXJnZXRGcmFtZSkKKyAg
ICBwcmVzZW50OiBmdW5jdGlvbihyZWN0cykKICAgICB7Ci0gICAgICAgIHZhciBzdHlsZSA9IHRo
aXMuX2VsZW1lbnQuc3R5bGU7Ci0gICAgICAgIHN0eWxlLmxlZnQgPSBNYXRoLmNlaWwodGFyZ2V0
RnJhbWUub3JpZ2luLngpICsgInB4IjsKLSAgICAgICAgc3R5bGUudG9wID0gTWF0aC5jZWlsKHRh
cmdldEZyYW1lLm9yaWdpbi55KSArICJweCI7Ci0gICAgICAgIHN0eWxlLndpZHRoID0gTWF0aC5j
ZWlsKHRhcmdldEZyYW1lLnNpemUud2lkdGgpICsgInB4IjsKLSAgICAgICAgc3R5bGUuaGVpZ2h0
ID0gTWF0aC5jZWlsKHRhcmdldEZyYW1lLnNpemUuaGVpZ2h0KSArICJweCI7CisgICAgICAgIHRo
aXMuX291dGxpbmVFbGVtZW50LnRleHRDb250ZW50ID0gIiI7CiAKLSAgICAgICAgdmFyIGVsZW1l
bnQgPSB0aGlzLl9lbGVtZW50OwotICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGVs
ZW1lbnQpOwotICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgZWxl
bWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5Ib3Zlck1lbnUuVmlzaWJsZUNsYXNzTmFt
ZSk7Ci0gICAgICAgIH0pOworICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRoaXMu
X2VsZW1lbnQpOworICAgICAgICB0aGlzLl9kcmF3T3V0bGluZShyZWN0cyk7CisgICAgICAgIHRo
aXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuSG92ZXJNZW51LlZpc2libGVD
bGFzc05hbWUpOwogCiAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJzY3JvbGwiLCB0
aGlzLCB0cnVlKTsKICAgICB9LAogCi0gICAgZGlzbWlzczogZnVuY3Rpb24oKQorICAgIGRpc21p
c3M6IGZ1bmN0aW9uKGRpc2NyZXRlKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2VsZW1lbnQu
cGFyZW50Tm9kZSAhPT0gZG9jdW1lbnQuYm9keSkKICAgICAgICAgICAgIHJldHVybjsKIAorICAg
ICAgICBpZiAoZGlzY3JldGUpCisgICAgICAgICAgICB0aGlzLl9lbGVtZW50LnJlbW92ZSgpOwor
CiAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuSG92
ZXJNZW51LlZpc2libGVDbGFzc05hbWUpOwogCiAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExp
c3RlbmVyKCJzY3JvbGwiLCB0aGlzLCB0cnVlKTsKQEAgLTg1LDcgKzg0LDcgQEAgV2ViSW5zcGVj
dG9yLkhvdmVyTWVudS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHN3aXRjaCAoZXZlbnQudHlwZSkg
ewogICAgICAgICBjYXNlICJzY3JvbGwiOgogICAgICAgICAgICAgaWYgKCF0aGlzLl9lbGVtZW50
LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpCi0gICAgICAgICAgICAgICAgdGhpcy5kaXNtaXNzKCk7
CisgICAgICAgICAgICAgICAgdGhpcy5kaXNtaXNzKHRydWUpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgImNsaWNrIjoKICAgICAgICAgICAgIHRoaXMuX2hhbmRsZUNsaWNrRXZl
bnQoZXZlbnQpOwpAQCAtMTAzLDUgKzEwMiwxNzUgQEAgV2ViSW5zcGVjdG9yLkhvdmVyTWVudS5w
cm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICBpZiAodGhpcy5kZWxlZ2F0ZSAmJiB0eXBlb2Yg
dGhpcy5kZWxlZ2F0ZS5ob3Zlck1lbnVCdXR0b25XYXNQcmVzc2VkID09PSAiZnVuY3Rpb24iKQog
ICAgICAgICAgICAgdGhpcy5kZWxlZ2F0ZS5ob3Zlck1lbnVCdXR0b25XYXNQcmVzc2VkKHRoaXMp
OworICAgIH0sCisKKyAgICBfZHJhd091dGxpbmU6IGZ1bmN0aW9uKHJlY3RzKQorICAgIHsKKyAg
ICAgICAgdmFyIGJ1dHRvbldpZHRoID0gdGhpcy5fYnV0dG9uLndpZHRoOworICAgICAgICB2YXIg
YnV0dG9uSGVpZ2h0ID0gdGhpcy5fYnV0dG9uLmhlaWdodDsKKyAgICAgICAgCisgICAgICAgIC8v
IEFkZCByb29tIGZvciB0aGUgYnV0dG9uIG9uIHRoZSBsYXN0IGxpbmUuCisgICAgICAgIHZhciBs
YXN0UmVjdCA9IHJlY3RzLnBvcCgpOworICAgICAgICBsYXN0UmVjdC5zaXplLndpZHRoICs9IGJ1
dHRvbldpZHRoOworICAgICAgICByZWN0cy5wdXNoKGxhc3RSZWN0KTsKKworICAgICAgICBpZiAo
cmVjdHMubGVuZ3RoID09PSAxKQorICAgICAgICAgICAgdGhpcy5fZHJhd1NpbmdsZUxpbmUocmVj
dHNbMF0pOworICAgICAgICBlbHNlIGlmIChyZWN0cy5sZW5ndGggPT09IDIgJiYgcmVjdHNbMF0u
bWluWCgpID49IHJlY3RzWzFdLm1heFgoKSkKKyAgICAgICAgICAgIHRoaXMuX2RyYXdUd29Ob25P
dmVybGFwcGluZ0xpbmVzKHJlY3RzKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGhpcy5f
ZHJhd092ZXJsYXBwaW5nTGluZXMocmVjdHMpOworCisgICAgICAgIHZhciBib3VuZHMgPSBXZWJJ
bnNwZWN0b3IuUmVjdC51bmlvbk9mUmVjdHMocmVjdHMpLnBhZCgzKTsgLy8gcGFkZGluZyArIDEv
MiBzdHJva2Utd2lkdGgKKworICAgICAgICB2YXIgc3R5bGUgPSB0aGlzLl9lbGVtZW50LnN0eWxl
OworICAgICAgICBzdHlsZS5sZWZ0ID0gYm91bmRzLm1pblgoKSArICJweCI7CisgICAgICAgIHN0
eWxlLnRvcCA9IGJvdW5kcy5taW5ZKCkgKyAicHgiOworICAgICAgICBzdHlsZS53aWR0aCA9IGJv
dW5kcy5zaXplLndpZHRoICsgInB4IjsKKyAgICAgICAgc3R5bGUuaGVpZ2h0ID0gYm91bmRzLnNp
emUuaGVpZ2h0ICsgInB4IjsKKworICAgICAgICB0aGlzLl9vdXRsaW5lRWxlbWVudC5zdHlsZS53
aWR0aCA9IGJvdW5kcy5zaXplLndpZHRoICsgInB4IjsKKyAgICAgICAgdGhpcy5fb3V0bGluZUVs
ZW1lbnQuc3R5bGUuaGVpZ2h0ID0gYm91bmRzLnNpemUuaGVpZ2h0ICsgInB4IjsKKworICAgICAg
ICB0aGlzLl9idXR0b24uc3R5bGUubGVmdCA9IChsYXN0UmVjdC5tYXhYKCkgLSBib3VuZHMubWlu
WCgpIC0gYnV0dG9uV2lkdGgpICsgInB4IjsKKyAgICAgICAgdGhpcy5fYnV0dG9uLnN0eWxlLnRv
cCA9IChsYXN0UmVjdC5tYXhZKCkgLSBib3VuZHMubWluWSgpIC0gYnV0dG9uSGVpZ2h0KSArICJw
eCI7CisgICAgfSwKKworICAgIF9hZGRSZWN0OiBmdW5jdGlvbihyZWN0KQorICAgIHsKKyAgICAg
ICAgY29uc3QgciA9IDQ7CisKKyAgICAgICAgdmFyIHN2Z1JlY3QgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInJlY3QiKTsKKyAgICAgICAg
c3ZnUmVjdC5zZXRBdHRyaWJ1dGUoIngiLCAxKTsKKyAgICAgICAgc3ZnUmVjdC5zZXRBdHRyaWJ1
dGUoInkiLCAxKTsKKyAgICAgICAgc3ZnUmVjdC5zZXRBdHRyaWJ1dGUoIndpZHRoIiwgcmVjdC5z
aXplLndpZHRoKTsKKyAgICAgICAgc3ZnUmVjdC5zZXRBdHRyaWJ1dGUoImhlaWdodCIsIHJlY3Qu
c2l6ZS5oZWlnaHQpOworICAgICAgICBzdmdSZWN0LnNldEF0dHJpYnV0ZSgicngiLCByKTsKKyAg
ICAgICAgc3ZnUmVjdC5zZXRBdHRyaWJ1dGUoInJ5Iiwgcik7CisgICAgICAgIHJldHVybiB0aGlz
Ll9vdXRsaW5lRWxlbWVudC5hcHBlbmRDaGlsZChzdmdSZWN0KTsKKyAgICB9LAorCisgICAgX2Fk
ZFBhdGg6IGZ1bmN0aW9uKGNvbW1hbmRzLCB0eCwgdHkpCisgICAgeworICAgICAgICB2YXIgcGF0
aCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAicGF0aCIpOworICAgICAgICBwYXRoLnNldEF0dHJpYnV0ZSgiZCIsIGNvbW1hbmRzLmpvaW4o
IiAiKSk7CisgICAgICAgIHBhdGguc2V0QXR0cmlidXRlKCJ0cmFuc2Zvcm0iLCAidHJhbnNsYXRl
KCIgKyAodHggKyAxKSArICIsIiArICh0eSArIDEpICsgIikiKTsKKyAgICAgICAgcmV0dXJuIHRo
aXMuX291dGxpbmVFbGVtZW50LmFwcGVuZENoaWxkKHBhdGgpOworICAgIH0sCisKKyAgICBfZHJh
d1NpbmdsZUxpbmU6IGZ1bmN0aW9uKHJlY3QpCisgICAgeworICAgICAgICB0aGlzLl9hZGRSZWN0
KHJlY3QucGFkKDIpKTsKKyAgICB9LAorCisgICAgX2RyYXdUd29Ob25PdmVybGFwcGluZ0xpbmVz
OiBmdW5jdGlvbihyZWN0cykKKyAgICB7CisgICAgICAgIGNvbnN0IHIgPSA0OworCisgICAgICAg
IHZhciBmaXJzdFJlY3QgPSByZWN0c1swXS5wYWQoMik7CisgICAgICAgIHZhciBzZWNvbmRSZWN0
ID0gcmVjdHNbMV0ucGFkKDIpOworCisgICAgICAgIHZhciB0eCA9IC1zZWNvbmRSZWN0Lm1pblgo
KTsKKyAgICAgICAgdmFyIHR5ID0gLWZpcnN0UmVjdC5taW5ZKCk7CisKKyAgICAgICAgdmFyIHJl
Y3QgPSBmaXJzdFJlY3Q7CisgICAgICAgIHRoaXMuX2FkZFBhdGgoWworICAgICAgICAgICAgIk0i
LCByZWN0Lm1heFgoKSwgcmVjdC5taW5ZKCksCisgICAgICAgICAgICAiSCIsIHJlY3QubWluWCgp
ICsgciwKKyAgICAgICAgICAgICJxIiwgLXIsIDAsIC1yLCByLAorICAgICAgICAgICAgIlYiLCBy
ZWN0Lm1heFkoKSAtIHIsCisgICAgICAgICAgICAicSIsIDAsIHIsIHIsIHIsCisgICAgICAgICAg
ICAiSCIsIHJlY3QubWF4WCgpCisgICAgICAgIF0sIHR4LCB0eSk7CisgICAgICAgIAorICAgICAg
ICByZWN0ID0gc2Vjb25kUmVjdDsKKyAgICAgICAgdGhpcy5fYWRkUGF0aChbCisgICAgICAgICAg
ICAiTSIsIHJlY3QubWluWCgpLCByZWN0Lm1pblkoKSwKKyAgICAgICAgICAgICJIIiwgcmVjdC5t
YXhYKCkgLSByLAorICAgICAgICAgICAgInEiLCByLCAwLCByLCByLAorICAgICAgICAgICAgIlYi
LCByZWN0Lm1heFkoKSAtIHIsCisgICAgICAgICAgICAicSIsIDAsIHIsIC1yLCByLAorICAgICAg
ICAgICAgIkgiLCByZWN0Lm1pblgoKQorICAgICAgICBdLCB0eCwgdHkpOworICAgIH0sCisgICAg
CisgICAgX2RyYXdPdmVybGFwcGluZ0xpbmVzOiBmdW5jdGlvbihyZWN0cykKKyAgICB7CisgICAg
ICAgIGNvbnN0IFBBRERJTkcgPSAyOworICAgICAgICBjb25zdCByID0gNDsKKworICAgICAgICB2
YXIgbWluWCA9IE51bWJlci5NQVhfVkFMVUU7CisgICAgICAgIHZhciBtYXhYID0gLU51bWJlci5N
QVhfVkFMVUU7CisgICAgICAgIGZvciAodmFyIHJlY3Qgb2YgcmVjdHMpIHsKKyAgICAgICAgICAg
IHZhciBtaW5YID0gTWF0aC5taW4ocmVjdC5taW5YKCksIG1pblgpOworICAgICAgICAgICAgdmFy
IG1heFggPSBNYXRoLm1heChyZWN0Lm1heFgoKSwgbWF4WCk7CisgICAgICAgIH0KKworICAgICAg
ICBtaW5YIC09IFBBRERJTkc7CisgICAgICAgIG1heFggKz0gUEFERElORzsKKworICAgICAgICB2
YXIgbWluWSA9IHJlY3RzWzBdLm1pblkoKSAtIFBBRERJTkc7CisgICAgICAgIHZhciBtYXhZID0g
cmVjdHMubGFzdFZhbHVlLm1heFkoKSArIFBBRERJTkc7CisgICAgICAgIHZhciBmaXJzdExpbmVN
aW5YID0gcmVjdHNbMF0ubWluWCgpIC0gUEFERElORzsKKyAgICAgICAgdmFyIGxhc3RMaW5lTWF4
WCA9IHJlY3RzLmxhc3RWYWx1ZS5tYXhYKCkgKyBQQURESU5HOworICAgICAgICAKKyAgICAgICAg
aWYgKGZpcnN0TGluZU1pblggPT09IG1pblggJiYgbGFzdExpbmVNYXhYID09PSBtYXhYKQorICAg
ICAgICAgICAgcmV0dXJuIHRoaXMuX2FkZFJlY3QobmV3IFdlYkluc3BlY3Rvci5SZWN0KG1pblgs
IG1pblksIG1heFggLSBtaW5YLCBtYXhZIC0gbWluWSkpOworICAgICAgICAKKyAgICAgICAgdmFy
IGxhc3RMaW5lTWluWSA9IHJlY3RzLmxhc3RWYWx1ZS5taW5ZKCkgKyBQQURESU5HOworICAgICAg
ICBpZiAocmVjdHNbMF0ubWluWCgpID09PSBtaW5YICsgUEFERElORykKKyAgICAgICAgICAgIHJl
dHVybiB0aGlzLl9hZGRQYXRoKFsKKyAgICAgICAgICAgICAgICAiTSIsIG1pblggKyByLCBtaW5Z
LAorICAgICAgICAgICAgICAgICJIIiwgbWF4WCAtIHIsCisgICAgICAgICAgICAgICAgInEiLCBy
LCAwLCByLCByLAorICAgICAgICAgICAgICAgICJWIiwgbGFzdExpbmVNaW5ZIC0gciwKKyAgICAg
ICAgICAgICAgICAicSIsIDAsIHIsIC1yLCByLAorICAgICAgICAgICAgICAgICJIIiwgbGFzdExp
bmVNYXhYICsgciwKKyAgICAgICAgICAgICAgICAicSIsIC1yLCAwLCAtciwgciwKKyAgICAgICAg
ICAgICAgICAiViIsIG1heFkgLSByLAorICAgICAgICAgICAgICAgICJxIiwgMCwgciwgLXIsIHIs
CisgICAgICAgICAgICAgICAgIkgiLCBtaW5YICsgciwKKyAgICAgICAgICAgICAgICAicSIsIC1y
LCAwLCAtciwgLXIsCisgICAgICAgICAgICAgICAgIlYiLCBtaW5ZICsgciwKKyAgICAgICAgICAg
ICAgICAicSIsIDAsIC1yLCByLCAtcgorICAgICAgICAgICAgXSwgLW1pblgsIC1taW5ZKTsKKyAg
ICAgICAgCisgICAgICAgIHZhciBmaXJzdExpbmVNYXhZID0gcmVjdHNbMF0ubWF4WSgpIC0gUEFE
RElORzsKKyAgICAgICAgaWYgKHJlY3RzLmxhc3RWYWx1ZS5tYXhYKCkgPT09IG1heFggLSBQQURE
SU5HKQorICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2FkZFBhdGgoWworICAgICAgICAgICAgICAg
ICJNIiwgZmlyc3RMaW5lTWluWCArIHIsIG1pblksCisgICAgICAgICAgICAgICAgIkgiLCBtYXhY
IC0gciwKKyAgICAgICAgICAgICAgICAicSIsIHIsIDAsIHIsIHIsCisgICAgICAgICAgICAgICAg
IlYiLCBtYXhZIC0gciwKKyAgICAgICAgICAgICAgICAicSIsIDAsIHIsIC1yLCByLAorICAgICAg
ICAgICAgICAgICJIIiwgbWluWCArIHIsCisgICAgICAgICAgICAgICAgInEiLCAtciwgMCwgLXIs
IC1yLAorICAgICAgICAgICAgICAgICJWIiwgZmlyc3RMaW5lTWF4WSArIHIsCisgICAgICAgICAg
ICAgICAgInEiLCAwLCAtciwgciwgLXIsCisgICAgICAgICAgICAgICAgIkgiLCBmaXJzdExpbmVN
aW5YIC0gciwKKyAgICAgICAgICAgICAgICAicSIsIHIsIDAsIHIsIC1yLAorICAgICAgICAgICAg
ICAgICJWIiwgbWluWSArIHIsCisgICAgICAgICAgICAgICAgInEiLCAwLCAtciwgciwgLXIKKyAg
ICAgICAgICAgIF0sIC1taW5YLCAtbWluWSk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gdGhp
cy5fYWRkUGF0aChbCisgICAgICAgICAgICAiTSIsIGZpcnN0TGluZU1pblggKyByLCBtaW5ZLAor
ICAgICAgICAgICAgIkgiLCBtYXhYIC0gciwKKyAgICAgICAgICAgICJxIiwgciwgMCwgciwgciwK
KyAgICAgICAgICAgICJWIiwgbGFzdExpbmVNaW5ZIC0gciwKKyAgICAgICAgICAgICJxIiwgMCwg
ciwgLXIsIHIsCisgICAgICAgICAgICAiSCIsIGxhc3RMaW5lTWF4WCArIHIsCisgICAgICAgICAg
ICAicSIsIC1yLCAwLCAtciwgciwKKyAgICAgICAgICAgICJWIiwgbWF4WSAtIHIsCisgICAgICAg
ICAgICAicSIsIDAsIHIsIC1yLCByLAorICAgICAgICAgICAgIkgiLCBtaW5YICsgciwKKyAgICAg
ICAgICAgICJxIiwgLXIsIDAsIC1yLCAtciwKKyAgICAgICAgICAgICJWIiwgZmlyc3RMaW5lTWF4
WSArIHIsCisgICAgICAgICAgICAicSIsIDAsIC1yLCByLCAtciwKKyAgICAgICAgICAgICJIIiwg
Zmlyc3RMaW5lTWluWCAtIHIsCisgICAgICAgICAgICAicSIsIHIsIDAsIHIsIC1yLAorICAgICAg
ICAgICAgIlYiLCBtaW5ZICsgciwKKyAgICAgICAgICAgICJxIiwgMCwgLXIsIHIsIC1yCisgICAg
ICAgIF0sIC1taW5YLCAtbWluWSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCmluZGV4IGQxMjI5NzUxZDkxODM1MTdjYzg5MjE3OWEw
NjY2YmQxY2MxM2M5M2UuLjMwZDNmNDI5Mjc0ZTQxZWMzNTEyMGQ0NDgxNzhhNjM2YzQwNzY3OTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRt
bAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKQEAg
LTQ0NSw2ICs0NDUsNyBAQAogICAgIDxzY3JpcHQgc3JjPSJHb1RvTGluZURpYWxvZy5qcyI+PC9z
Y3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNvbnRlbnRGbG93RE9NVHJlZUNvbnRlbnRWaWV3Lmpz
Ij48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iSG92ZXJNZW51LmpzIj48L3NjcmlwdD4KKyAg
ICA8c2NyaXB0IHNyYz0iQ29kZU1pcnJvckVkaXRpbmdDb250cm9sbGVyLmpzIj48L3NjcmlwdD4K
ICAgICA8c2NyaXB0IHNyYz0iQ29kZU1pcnJvckNvbG9yRWRpdGluZ0NvbnRyb2xsZXIuanMiPjwv
c2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNYWluLmpzIj48L3NjcmlwdD4KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uanMKaW5kZXggZTM0NTY0NjRkZTMxYjFl
NWRlOGViNDkxYzgwZDRkYjdkMjhkZjMwZS4uYzQ1ZmZjZjA1YTBhODM4ODIyM2RiMTcxNjI5Yjg1
ODg4YTU3N2ZmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvTWFpbi5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWlu
LmpzCkBAIC0xNzUsNiArMTc1LDggQEAgV2ViSW5zcGVjdG9yLmxvYWRlZCA9IGZ1bmN0aW9uKCkK
ICAgICAgICAgeDogMCwKICAgICAgICAgeTogMAogICAgIH07CisKKyAgICB0aGlzLl93aW5kb3dL
ZXlkb3duTGlzdGVuZXJzID0gW107CiB9CiAKIFdlYkluc3BlY3Rvci5jb250ZW50TG9hZGVkID0g
ZnVuY3Rpb24oKQpAQCAtMTc4NSwzICsxNzg3LDM5IEBAIFdlYkluc3BlY3Rvci5jYW5BcmNoaXZl
TWFpbkZyYW1lID0gZnVuY3Rpb24oKQogCiAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5SZXNvdXJj
ZS5UeXBlLmZyb21NSU1FVHlwZShXZWJJbnNwZWN0b3IuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFp
bkZyYW1lLm1haW5SZXNvdXJjZS5taW1lVHlwZSkgPT09IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5U
eXBlLkRvY3VtZW50OwogfQorCitXZWJJbnNwZWN0b3IuYWRkV2luZG93S2V5ZG93bkxpc3RlbmVy
ID0gZnVuY3Rpb24obGlzdGVuZXIpCit7CisgICAgaWYgKHR5cGVvZiBsaXN0ZW5lci5oYW5kbGVL
ZXlkb3duRXZlbnQgIT09ICJmdW5jdGlvbiIpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICB0
aGlzLl93aW5kb3dLZXlkb3duTGlzdGVuZXJzLnB1c2gobGlzdGVuZXIpOworCisgICAgdGhpcy5f
dXBkYXRlV2luZG93S2V5ZG93bkxpc3RlbmVyKCk7Cit9OworCitXZWJJbnNwZWN0b3IucmVtb3Zl
V2luZG93S2V5ZG93bkxpc3RlbmVyID0gZnVuY3Rpb24obGlzdGVuZXIpCit7CisgICAgdGhpcy5f
d2luZG93S2V5ZG93bkxpc3RlbmVycy5yZW1vdmUobGlzdGVuZXIpOworICAgIAorICAgIHRoaXMu
X3VwZGF0ZVdpbmRvd0tleWRvd25MaXN0ZW5lcigpOworfTsKKworV2ViSW5zcGVjdG9yLl91cGRh
dGVXaW5kb3dLZXlkb3duTGlzdGVuZXIgPSBmdW5jdGlvbigpCit7CisgICAgaWYgKHRoaXMuX3dp
bmRvd0tleWRvd25MaXN0ZW5lcnMubGVuZ3RoID4gMCkKKyAgICAgICAgd2luZG93LmFkZEV2ZW50
TGlzdGVuZXIoImtleWRvd24iLCBXZWJJbnNwZWN0b3IuX3NoYXJlZFdpbmRvd0tleWRvd25MaXN0
ZW5lciwgdHJ1ZSk7CisgICAgZWxzZQorICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5l
cigia2V5ZG93biIsIFdlYkluc3BlY3Rvci5fc2hhcmVkV2luZG93S2V5ZG93bkxpc3RlbmVyLCB0
cnVlKTsKK30KKworV2ViSW5zcGVjdG9yLl9zaGFyZWRXaW5kb3dLZXlkb3duTGlzdGVuZXIgPSBm
dW5jdGlvbihldmVudCkKK3sKKyAgICBmb3IgKHZhciBpID0gV2ViSW5zcGVjdG9yLl93aW5kb3dL
ZXlkb3duTGlzdGVuZXJzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7CisgICAgICAgIGlmIChX
ZWJJbnNwZWN0b3IuX3dpbmRvd0tleWRvd25MaXN0ZW5lcnNbaV0uaGFuZGxlS2V5ZG93bkV2ZW50
KGV2ZW50KSkgeworICAgICAgICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7
CisgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKyAgICB9Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvU291cmNlQ29kZVRleHRFZGl0b3IuY3NzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvU291cmNlQ29kZVRleHRFZGl0b3IuY3NzCmluZGV4IDkwZjBh
ODQwYjk0ZDk2ZjMxNWM2Nzc5MDMzNDI2YThlZTI5ZmQ1NGEuLmVhNzE0M2FlNDRiZWE1Njg2OTFj
MzBjZjA4ZjM1ZDZiNTRlZWJhNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1NvdXJjZUNvZGVUZXh0RWRpdG9yLmNzcworKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Tb3VyY2VDb2RlVGV4dEVkaXRvci5jc3MKQEAgLTcxLDYg
KzcxLDcgQEAKIC5ob3Zlci1tZW51LmNvbG9yID4gaW1nIHsKICAgICB3aWR0aDogMTZweDsKICAg
ICBoZWlnaHQ6IDE2cHg7Ci0gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTRweCk7
CiAgICAgY29udGVudDogLXdlYmtpdC1pbWFnZS1zZXQodXJsKEltYWdlcy9Db2xvckljb24ucG5n
KSAxeCwgdXJsKEltYWdlcy9Db2xvckljb25AMngucG5nKSAyeCk7CisgICAgCisgICAgLXdlYmtp
dC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMXB4KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1NvdXJjZUNvZGVUZXh0RWRpdG9yLmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvU291cmNlQ29kZVRleHRFZGl0b3IuanMKaW5k
ZXggN2NiMzU0YmRmNTNhMDdlNWJkZGU2OTQyZTJmYjBlZmZlYmE2YzM4NC4uMDE2Njk0NWRkNTc3
ZDQwMThkZDAzMWZjOWY5ZjJlNjM2ZDg5OGI5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvU291cmNlQ29kZVRleHRFZGl0b3IuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvU291cmNlQ29kZVRleHRFZGl0b3IuanMKQEAg
LTEwNyw2ICsxMDcsOCBAQCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IucHJvdG90
eXBlID0gewogICAgICAgICB0aGlzLnRva2VuVHJhY2tpbmdDb250cm9sbGVyLnJlbW92ZUhpZ2hs
aWdodGVkUmFuZ2UoKTsKIAogICAgICAgICB0aGlzLl9kaXNtaXNzUG9wb3ZlcigpOworICAgICAg
ICAKKyAgICAgICAgdGhpcy5fZGlzbWlzc0VkaXRpbmdDb250cm9sbGVyKHRydWUpOwogICAgIH0s
CiAKICAgICBjbG9zZTogZnVuY3Rpb24oKQpAQCAtMjI2LDIzICsyMjgsOCBAQCBXZWJJbnNwZWN0
b3IuU291cmNlQ29kZVRleHRFZGl0b3IucHJvdG90eXBlID0gewogICAgICAgICBpZiAodGhpcy5f
aWdub3JlQ29udGVudERpZENoYW5nZSA+IDApCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAg
ICAgLy8gR2F0aGVyIGFsbCBsaW5lcyBjb250YWluaW5nIG5ldyB0ZXh0LgotICAgICAgICB2YXIg
bGluZXMgPSBuZXcgU2V0OwotICAgICAgICBmb3IgKHZhciByYW5nZSBvZiBuZXdSYW5nZXMpIHsK
LSAgICAgICAgICAgIC8vIElmIHRoZSByYW5nZSBpcyBvbiBhIHNpbmdsZSBsaW5lLCBvbmx5IGFk
ZCB0aGUgbGluZSBpZiB0aGUgcmFuZ2UgaXMgbm90IGVtcHR5LgotICAgICAgICAgICAgaWYgKHJh
bmdlLnN0YXJ0TGluZSA9PT0gcmFuZ2UuZW5kTGluZSkgewotICAgICAgICAgICAgICAgIGlmIChy
YW5nZS5lbmRDb2x1bW4gPiByYW5nZS5zdGFydENvbHVtbikKLSAgICAgICAgICAgICAgICAgICAg
bGluZXMuYWRkKHJhbmdlLnN0YXJ0TGluZSk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgICAgIC8vIE9ubHkgYWRkIHRoZSBsYXN0IGxpbmUgaWYgdGhlIHJhbmdlIGhhcyBjaGFy
YWN0ZXJzIG9uIHRoaXMgbGluZS4KLSAgICAgICAgICAgICAgICBmb3IgKHZhciBsaW5lID0gcmFu
Z2Uuc3RhcnRMaW5lOyBsaW5lIDwgcmFuZ2UuZW5kTGluZSB8fCByYW5nZS5lbmRDb2x1bW4gPiAw
OyArK2xpbmUpCi0gICAgICAgICAgICAgICAgICAgIGxpbmVzLmFkZChsaW5lKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8vIENvbnNpZGVyIGFsbCBuZXcgbGluZXMgZm9y
IG5ldyBjb2xvciBtYXJrZXJzLgotICAgICAgICBmb3IgKHZhciBsaW5lIG9mIGxpbmVzKQotICAg
ICAgICAgICAgdGhpcy5fdXBkYXRlQ29sb3JNYXJrZXJzKGxpbmUpOworICAgICAgICBmb3IgKHZh
ciByYW5nZSBvZiBuZXdSYW5nZXMpCisgICAgICAgICAgICB0aGlzLl91cGRhdGVFZGl0YWJsZU1h
cmtlcnMocmFuZ2UpOwogICAgIH0sCiAKICAgICAvLyBQcml2YXRlCkBAIC0zNjAsOCArMzQ3LDcg
QEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgICAgIHRoaXMuX2FkZElzc3VlKGlzc3VlKTsKICAgICAgICAgfQogCi0gICAgICAgIHRoaXMu
X3VwZGF0ZVRva2VuVHJhY2tpbmdDb250cm9sbGVyU3RhdGUoKTsKLSAgICAgICAgdGhpcy5fdXBk
YXRlQ29sb3JNYXJrZXJzKCk7CisgICAgICAgIHRoaXMuX3VwZGF0ZUVkaXRhYmxlTWFya2Vycygp
OwogICAgIH0sCiAKICAgICBfcG9wdWxhdGVXaXRoQ29udGVudDogZnVuY3Rpb24oY29udGVudCkK
QEAgLTEwNzYsMTMgKzEwNjIsMTMgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9y
LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGlmIChtYXJrZXJzLmxlbmd0aCA+IDApCiAgICAg
ICAgICAgICAgICAgdGhpcy5fdG9rZW5UcmFja2luZ0NvbnRyb2xsZXJIaWdobGlnaHRlZE1hcmtl
ZEV4cHJlc3Npb24oY2FuZGlkYXRlLCBtYXJrZXJzKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICB0aGlzLl9kaXNtaXNzQ29kZU1pcnJvckNvbG9yRWRpdGluZ0NvbnRyb2xsZXIo
KTsKKyAgICAgICAgICAgICAgICB0aGlzLl9kaXNtaXNzRWRpdGluZ0NvbnRyb2xsZXIoKTsKICAg
ICAgICAgfQogICAgIH0sCiAKICAgICB0b2tlblRyYWNraW5nQ29udHJvbGxlck1vdXNlT3V0T2ZI
b3ZlcmVkTWFya2VyOiBmdW5jdGlvbih0b2tlblRyYWNraW5nQ29udHJvbGxlciwgaG92ZXJlZE1h
cmtlcikKICAgICB7Ci0gICAgICAgIHRoaXMuX2Rpc21pc3NDb2RlTWlycm9yQ29sb3JFZGl0aW5n
Q29udHJvbGxlcigpOworICAgICAgICB0aGlzLl9kaXNtaXNzRWRpdGluZ0NvbnRyb2xsZXIoKTsK
ICAgICB9LAogCiAgICAgX3Rva2VuVHJhY2tpbmdDb250cm9sbGVySGlnaGxpZ2h0ZWRKYXZhU2Ny
aXB0RXhwcmVzc2lvbjogZnVuY3Rpb24oY2FuZGlkYXRlKQpAQCAtMTEzMSwxMiArMTExNywxMSBA
QCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IucHJvdG90eXBlID0gewogICAgICAg
ICBpZiAoIWNhbmRpZGF0ZSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICB2YXIgYm91
bmRzID0gdGhpcy5ib3VuZHNGb3JSYW5nZShjYW5kaWRhdGUuaG92ZXJlZFRva2VuUmFuZ2UpOwot
ICAgICAgICBpZiAoIWJvdW5kcykKLSAgICAgICAgICAgIHJldHVybjsKLQogICAgICAgICBjb250
ZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLlBvcG92
ZXJEZWJ1Z2dlckNvbnRlbnRTdHlsZUNsYXNzTmFtZSk7CiAKKyAgICAgICAgdmFyIHJlY3RzID0g
dGhpcy5yZWN0c0ZvclJhbmdlKGNhbmRpZGF0ZS5ob3ZlcmVkVG9rZW5SYW5nZSk7CisgICAgICAg
IHZhciBib3VuZHMgPSBXZWJJbnNwZWN0b3IuUmVjdC51bmlvbk9mUmVjdHMocmVjdHMpOworCiAg
ICAgICAgIHRoaXMuX3BvcG92ZXIgPSB0aGlzLl9wb3BvdmVyIHx8IG5ldyBXZWJJbnNwZWN0b3Iu
UG9wb3Zlcih0aGlzKTsKICAgICAgICAgdGhpcy5fcG9wb3Zlci5jb250ZW50ID0gY29udGVudDsK
ICAgICAgICAgdGhpcy5fcG9wb3Zlci5wcmVzZW50KGJvdW5kcy5wYWQoNSksIFtXZWJJbnNwZWN0
b3IuUmVjdEVkZ2UuTUlOX1ksIFdlYkluc3BlY3Rvci5SZWN0RWRnZS5NQVhfWSwgV2ViSW5zcGVj
dG9yLlJlY3RFZGdlLk1BWF9YXSk7CkBAIC0xMjg5LDgwICsxMjc0LDg0IEBAIFdlYkluc3BlY3Rv
ci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX21vdXNl
SXNPdmVyUG9wb3ZlciA9IHRoaXMuX3BvcG92ZXIuZWxlbWVudC5jb250YWlucyhldmVudC5yZWxh
dGVkVGFyZ2V0KTsKICAgICB9LAogCi0gICAgX3VwZGF0ZUNvbG9yTWFya2VyczogZnVuY3Rpb24o
bGluZU51bWJlcikKKyAgICBfdXBkYXRlRWRpdGFibGVNYXJrZXJzOiBmdW5jdGlvbihyYW5nZSkK
ICAgICB7Ci0gICAgICAgIHRoaXMuY3JlYXRlQ29sb3JNYXJrZXJzKGxpbmVOdW1iZXIpOworICAg
ICAgICB0aGlzLmNyZWF0ZUNvbG9yTWFya2VycyhyYW5nZSk7CiAKICAgICAgICAgdGhpcy5fdXBk
YXRlVG9rZW5UcmFja2luZ0NvbnRyb2xsZXJTdGF0ZSgpOwogICAgIH0sCi0gICAgCisKICAgICBf
dG9rZW5UcmFja2luZ0NvbnRyb2xsZXJIaWdobGlnaHRlZE1hcmtlZEV4cHJlc3Npb246IGZ1bmN0
aW9uKGNhbmRpZGF0ZSwgbWFya2VycykKICAgICB7Ci0gICAgICAgIHZhciBjb2xvck1hcmtlcjsK
KyAgICAgICAgLy8gTG9vayBmb3IgdGhlIG91dGVybW9zdCBlZGl0YWJsZSBtYXJrZXIuCisgICAg
ICAgIHZhciBlZGl0YWJsZU1hcmtlcjsKICAgICAgICAgZm9yICh2YXIgbWFya2VyIG9mIG1hcmtl
cnMpIHsKLSAgICAgICAgICAgIGlmIChtYXJrZXIudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlRleHRN
YXJrZXIuVHlwZS5Db2xvcikgewotICAgICAgICAgICAgICAgIGNvbG9yTWFya2VyID0gbWFya2Vy
OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYg
KCFtYXJrZXIucmFuZ2UgfHwgbWFya2VyLnR5cGUgIT09IFdlYkluc3BlY3Rvci5UZXh0TWFya2Vy
LlR5cGUuQ29sb3IpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIGlm
ICghZWRpdGFibGVNYXJrZXIgfHwgKG1hcmtlci5yYW5nZS5zdGFydExpbmUgPCBlZGl0YWJsZU1h
cmtlci5yYW5nZS5zdGFydExpbmUgfHwgKG1hcmtlci5yYW5nZS5zdGFydExpbmUgPT09IGVkaXRh
YmxlTWFya2VyLnJhbmdlLnN0YXJ0TGluZSAmJiBtYXJrZXIucmFuZ2Uuc3RhcnRDb2x1bW4gPCBl
ZGl0YWJsZU1hcmtlci5yYW5nZS5zdGFydENvbHVtbikpKQorICAgICAgICAgICAgICAgIGVkaXRh
YmxlTWFya2VyID0gbWFya2VyOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKCFjb2xvck1hcmtl
cikgeworICAgICAgICBpZiAoIWVkaXRhYmxlTWFya2VyKSB7CiAgICAgICAgICAgICB0aGlzLnRv
a2VuVHJhY2tpbmdDb250cm9sbGVyLmhvdmVyZWRNYXJrZXIgPSBudWxsOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKHRoaXMudG9rZW5UcmFja2luZ0NvbnRy
b2xsZXIuaG92ZXJlZE1hcmtlciA9PT0gY29sb3JNYXJrZXIpCisgICAgICAgIGlmICh0aGlzLnRv
a2VuVHJhY2tpbmdDb250cm9sbGVyLmhvdmVyZWRNYXJrZXIgPT09IGVkaXRhYmxlTWFya2VyKQog
ICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHRoaXMuX2Rpc21pc3NDb2RlTWlycm9yQ29s
b3JFZGl0aW5nQ29udHJvbGxlcigpOworICAgICAgICB0aGlzLl9kaXNtaXNzRWRpdGluZ0NvbnRy
b2xsZXIoKTsKIAotICAgICAgICB0aGlzLnRva2VuVHJhY2tpbmdDb250cm9sbGVyLmhvdmVyZWRN
YXJrZXIgPSBjb2xvck1hcmtlcjsKKyAgICAgICAgdGhpcy50b2tlblRyYWNraW5nQ29udHJvbGxl
ci5ob3ZlcmVkTWFya2VyID0gZWRpdGFibGVNYXJrZXI7CiAKLSAgICAgICAgdGhpcy5fY29sb3JF
ZGl0aW5nQ29udHJvbGxlciA9IHRoaXMuY29sb3JFZGl0aW5nQ29udHJvbGxlckZvck1hcmtlcihj
b2xvck1hcmtlcik7CisgICAgICAgIHRoaXMuX2VkaXRpbmdDb250cm9sbGVyID0gdGhpcy5lZGl0
aW5nQ29udHJvbGxlckZvck1hcmtlcihlZGl0YWJsZU1hcmtlcik7CiAKLSAgICAgICAgdmFyIGNv
bG9yID0gdGhpcy5fY29sb3JFZGl0aW5nQ29udHJvbGxlci5jb2xvcjsKLSAgICAgICAgaWYgKCFj
b2xvciB8fCAhY29sb3IudmFsaWQpIHsKLSAgICAgICAgICAgIGNvbG9yTWFya2VyLmNsZWFyKCk7
Ci0gICAgICAgICAgICBkZWxldGUgdGhpcy5fY29sb3JFZGl0aW5nQ29udHJvbGxlcjsKLSAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKG1hcmtlci50eXBlID09PSBXZWJJbnNwZWN0b3Iu
VGV4dE1hcmtlci5UeXBlLkNvbG9yKSB7CisgICAgICAgICAgICB2YXIgY29sb3IgPSB0aGlzLl9l
ZGl0aW5nQ29udHJvbGxlci52YWx1ZTsKKyAgICAgICAgICAgIGlmICghY29sb3IgfHwgIWNvbG9y
LnZhbGlkKSB7CisgICAgICAgICAgICAgICAgZWRpdGFibGVNYXJrZXIuY2xlYXIoKTsKKyAgICAg
ICAgICAgICAgICBkZWxldGUgdGhpcy5fZWRpdGluZ0NvbnRyb2xsZXI7CisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgdGhpcy5fY29s
b3JFZGl0aW5nQ29udHJvbGxlci5kZWxlZ2F0ZSA9IHRoaXM7Ci0gICAgICAgIHRoaXMuX2NvbG9y
RWRpdGluZ0NvbnRyb2xsZXIucHJlc2VudEhvdmVyTWVudSgpOworICAgICAgICB0aGlzLl9lZGl0
aW5nQ29udHJvbGxlci5kZWxlZ2F0ZSA9IHRoaXM7CisgICAgICAgIHRoaXMuX2VkaXRpbmdDb250
cm9sbGVyLnByZXNlbnRIb3Zlck1lbnUoKTsKICAgICB9LAogCi0gICAgX2Rpc21pc3NDb2RlTWly
cm9yQ29sb3JFZGl0aW5nQ29udHJvbGxlcjogZnVuY3Rpb24oKQorICAgIF9kaXNtaXNzRWRpdGlu
Z0NvbnRyb2xsZXI6IGZ1bmN0aW9uKGRpc2NyZXRlKQogICAgIHsKLSAgICAgICAgaWYgKHRoaXMu
X2NvbG9yRWRpdGluZ0NvbnRyb2xsZXIpCi0gICAgICAgICAgICB0aGlzLl9jb2xvckVkaXRpbmdD
b250cm9sbGVyLmRpc21pc3NIb3Zlck1lbnUoKTsKKyAgICAgICAgaWYgKHRoaXMuX2VkaXRpbmdD
b250cm9sbGVyKQorICAgICAgICAgICAgdGhpcy5fZWRpdGluZ0NvbnRyb2xsZXIuZGlzbWlzc0hv
dmVyTWVudShkaXNjcmV0ZSk7CiAgICAgICAgIAogICAgICAgICB0aGlzLnRva2VuVHJhY2tpbmdD
b250cm9sbGVyLmhvdmVyZWRNYXJrZXIgPSBudWxsOwotICAgICAgICBkZWxldGUgdGhpcy5fY29s
b3JFZGl0aW5nQ29udHJvbGxlcjsKKyAgICAgICAgZGVsZXRlIHRoaXMuX2VkaXRpbmdDb250cm9s
bGVyOwogICAgIH0sCiAKLSAgICAvLyBDb2RlTWlycm9yQ29sb3JFZGl0aW5nQ29udHJvbGxlciBE
ZWxlZ2F0ZQorICAgIC8vIENvZGVNaXJyb3JFZGl0aW5nQ29udHJvbGxlciBEZWxlZ2F0ZQogICAg
IAotICAgIGNvbG9yRWRpdGluZ0NvbnRyb2xsZXJEaWRTdGFydEVkaXRpbmc6IGZ1bmN0aW9uKGNv
bG9yRWRpdGluZ0NvbnRyb2xsZXIpCisgICAgZWRpdGluZ0NvbnRyb2xsZXJEaWRTdGFydEVkaXRp
bmc6IGZ1bmN0aW9uKGVkaXRpbmdDb250cm9sbGVyKQogICAgIHsKICAgICAgICAgLy8gV2UgY2Fu
IHBhdXNlIHRoZSB0b2tlbiB0cmFja2luZyBjb250cm9sbGVyIGR1cmluZyBlZGl0aW5nLCBpdCB3
aWxsIGJlIHJlc2V0Ci0gICAgICAgIC8vIHRvIHRoZSBleHBlY3RlZCBzdGF0ZSBieSBjYWxsaW5n
IF91cGRhdGVDb2xvck1hcmtlcnMoKSBpbiB0aGUKLSAgICAgICAgLy8gY29sb3JFZGl0aW5nQ29u
dHJvbGxlckRpZEZpbmlzaEVkaXRpbmcgZGVsZWdhdGUuCisgICAgICAgIC8vIHRvIHRoZSBleHBl
Y3RlZCBzdGF0ZSBieSBjYWxsaW5nIF91cGRhdGVFZGl0YWJsZU1hcmtlcnMoKSBpbiB0aGUKKyAg
ICAgICAgLy8gZWRpdGluZ0NvbnRyb2xsZXJEaWRGaW5pc2hFZGl0aW5nIGRlbGVnYXRlLgogICAg
ICAgICB0aGlzLnRva2VuVHJhY2tpbmdDb250cm9sbGVyLmVuYWJsZWQgPSBmYWxzZTsKIAogICAg
ICAgICAvLyBXZSBjbGVhciB0aGUgbWFya2VyIHNpbmNlIHdlJ2xsIHJlc2V0IGl0IGFmdGVyIGVk
aXRpbmcuCi0gICAgICAgIGNvbG9yRWRpdGluZ0NvbnRyb2xsZXIubWFya2VyLmNsZWFyKCk7Cisg
ICAgICAgIGVkaXRpbmdDb250cm9sbGVyLm1hcmtlci5jbGVhcigpOwogICAgICAgICAKICAgICAg
ICAgLy8gV2UgaWdub3JlIGNvbnRlbnQgY2hhbmdlcyBtYWRlIGFzIGEgcmVzdWx0IG9mIGNvbG9y
IGVkaXRpbmcuCiAgICAgICAgIHRoaXMuX2lnbm9yZUNvbnRlbnREaWRDaGFuZ2UrKzsKICAgICB9
LAogICAgIAotICAgIGNvbG9yRWRpdGluZ0NvbnRyb2xsZXJEaWRGaW5pc2hFZGl0aW5nOiBmdW5j
dGlvbihjb2xvckVkaXRpbmdDb250cm9sbGVyKQorICAgIGVkaXRpbmdDb250cm9sbGVyRGlkRmlu
aXNoRWRpdGluZzogZnVuY3Rpb24oZWRpdGluZ0NvbnRyb2xsZXIpCiAgICAgewotICAgICAgICB0
aGlzLl91cGRhdGVDb2xvck1hcmtlcnMoY29sb3JFZGl0aW5nQ29udHJvbGxlci5yYW5nZS5zdGFy
dExpbmUpOworICAgICAgICB0aGlzLl91cGRhdGVFZGl0YWJsZU1hcmtlcnMoZWRpdGluZ0NvbnRy
b2xsZXIucmFuZ2UpOwogCiAgICAgICAgIHRoaXMuX2lnbm9yZUNvbnRlbnREaWRDaGFuZ2UtLTsK
IAotICAgICAgICBkZWxldGUgdGhpcy5fY29sb3JFZGl0aW5nQ29udHJvbGxlcjsKKyAgICAgICAg
ZGVsZXRlIHRoaXMuX2VkaXRpbmdDb250cm9sbGVyOwogICAgIH0KIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1RleHRFZGl0b3IuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXh0RWRpdG9yLmpzCmluZGV4IDBlOTJl
YjEwODQ5Yjg4ODMxZjk3ZTFmNjU2MGFlODQ2ZTRiNzA4ZGUuLjk5ZDZhMzE2YzI2NmU2YWE3YTc2
MTdhNzI4NmFjZjNjZTZlOTJkZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1RleHRFZGl0b3IuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVGV4dEVkaXRvci5qcwpAQCAtNTk3LDkgKzU5Nyw5IEBAIFdlYkluc3BlY3Rv
ci5UZXh0RWRpdG9yLnByb3RvdHlwZSA9IHsKICAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3Vi
Y2xhc3Nlcy4KICAgICB9LAogCi0gICAgYm91bmRzRm9yUmFuZ2U6IGZ1bmN0aW9uKHJhbmdlKQor
ICAgIHJlY3RzRm9yUmFuZ2U6IGZ1bmN0aW9uKHJhbmdlKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IHRoaXMuX2NvZGVNaXJyb3IuYm91bmRzRm9yUmFuZ2UocmFuZ2UpOworICAgICAgICByZXR1cm4g
dGhpcy5fY29kZU1pcnJvci5yZWN0c0ZvclJhbmdlKHJhbmdlKTsKICAgICB9LAogCiAgICAgZ2V0
IG1hcmtlcnMoKQpAQCAtNjE2LDE0ICs2MTYsMTkgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3Iu
cHJvdG90eXBlID0gewogICAgICAgICB9KTsKICAgICB9LAogCi0gICAgY3JlYXRlQ29sb3JNYXJr
ZXJzOiBmdW5jdGlvbihsaW5lTnVtYmVyKQorICAgIGNyZWF0ZUNvbG9yTWFya2VyczogZnVuY3Rp
b24ocmFuZ2UpCiAgICAgewotICAgICAgICByZXR1cm4gdGhpcy5fY29kZU1pcnJvci5jcmVhdGVD
b2xvck1hcmtlcnMobGluZU51bWJlcik7CisgICAgICAgIHJldHVybiB0aGlzLl9jb2RlTWlycm9y
LmNyZWF0ZUNvbG9yTWFya2VycyhyYW5nZSk7CiAgICAgfSwKIAotICAgIGNvbG9yRWRpdGluZ0Nv
bnRyb2xsZXJGb3JNYXJrZXI6IGZ1bmN0aW9uKGNvbG9yTWFya2VyKQorICAgIGVkaXRpbmdDb250
cm9sbGVyRm9yTWFya2VyOiBmdW5jdGlvbihlZGl0YWJsZU1hcmtlcikKICAgICB7Ci0gICAgICAg
IHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JDb2xvckVkaXRpbmdDb250cm9sbGVy
KHRoaXMuX2NvZGVNaXJyb3IsIGNvbG9yTWFya2VyKTsKKyAgICAgICAgc3dpdGNoIChlZGl0YWJs
ZU1hcmtlci50eXBlKSB7CisgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRleHRNYXJrZXIuVHlw
ZS5Db2xvcjoKKyAgICAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JD
b2xvckVkaXRpbmdDb250cm9sbGVyKHRoaXMuX2NvZGVNaXJyb3IsIGVkaXRhYmxlTWFya2VyKTsK
KyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkNv
ZGVNaXJyb3JFZGl0aW5nQ29udHJvbGxlcih0aGlzLl9jb2RlTWlycm9yLCBlZGl0YWJsZU1hcmtl
cik7CisgICAgICAgIH0KICAgICB9LAogCiAgICAgLy8gUHJpdmF0ZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGV4dE1hcmtlci5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1RleHRNYXJrZXIuanMKaW5kZXggZWZkY2ViMTU2
MzZhZWIzYWU3ZjU5ZDBkNGUxMTlmMWQxYWUzYmZkOS4uZDE1MDZiMDM1N2VjOWE3MTE4MWI4MTk1
N2YxNzFmZmUwOWFhNWExZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVGV4dE1hcmtlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9UZXh0TWFya2VyLmpzCkBAIC02NywxMiArNjcsMTIgQEAgV2ViSW5zcGVjdG9yLlRl
eHRNYXJrZXIucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5U
ZXh0UmFuZ2UocmFuZ2UuZnJvbS5saW5lLCByYW5nZS5mcm9tLmNoLCByYW5nZS50by5saW5lLCBy
YW5nZS50by5jaCk7CiAgICAgfSwKIAotICAgIGdldCBib3VuZHMoKQorICAgIGdldCByZWN0cygp
CiAgICAgewogICAgICAgICB2YXIgcmFuZ2UgPSB0aGlzLl9jb2RlTWlycm9yVGV4dE1hcmtlci5m
aW5kKCk7CiAgICAgICAgIGlmICghcmFuZ2UpCiAgICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVj
dG9yLlJlY3QuWkVST19SRUNUOwotICAgICAgICByZXR1cm4gdGhpcy5fY29kZU1pcnJvclRleHRN
YXJrZXIuZG9jLmNtLmJvdW5kc0ZvclJhbmdlKHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2NvZGVN
aXJyb3JUZXh0TWFya2VyLmRvYy5jbS5yZWN0c0ZvclJhbmdlKHsKICAgICAgICAgICAgIHN0YXJ0
OiByYW5nZS5mcm9tLAogICAgICAgICAgICAgZW5kOiByYW5nZS50bwogICAgICAgICB9KTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>