<?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>187532</bug_id>
          
          <creation_ts>2018-07-10 12:36:20 -0700</creation_ts>
          <short_desc>Web Inspector: Execution highlighting in the frontend should be line/column-based</short_desc>
          <delta_ts>2018-07-13 14:53:23 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <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>
          <dependson>187612</dependson>
          <blocked>186453</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Matt Baker">mattbaker</reporter>
          <assigned_to name="Matt Baker">mattbaker</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1440941</commentid>
    <comment_count>0</comment_count>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2018-07-10 12:36:20 -0700</bug_when>
    <thetext>Summary:
Execution highlighting in the frontend should be line/column-based.

The call frame location payload uses line/column, but to simplify range calculations in the frontend, TextEditor converts these to character offsets when highlighting source code locations. The frontend should never use raw offsets into source code, since the values will depend on the particular line endings used.

This patch is a step toward allowing CodeMirror to auto-detect line endings again, instead of forcing Unix-style (\n) line endings. Specifying a line ending other than that of the original file causes problems when inspecting certain resources (see https://webkit.org/b/186453).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1440942</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-07-10 12:36:46 -0700</bug_when>
    <thetext>&lt;rdar://problem/42035580&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1440943</commentid>
    <comment_count>2</comment_count>
      <attachid>344716</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2018-07-10 13:00:09 -0700</bug_when>
    <thetext>Created attachment 344716
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1440986</commentid>
    <comment_count>3</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2018-07-10 15:04:17 -0700</bug_when>
    <thetext>Again I have a very bad feeling about this. Changing line endings affects many things, offsets was supposed to be an easy solution avoiding line endings.

Is this fixing a recent regression? If so, what caused it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441631</commentid>
    <comment_count>4</comment_count>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2018-07-12 12:26:02 -0700</bug_when>
    <thetext>I think we should land https://webkit.org/b/187612 first. It is a simpler change, and duplicates some of the changes here, allowing this patch to be smaller.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441796</commentid>
    <comment_count>5</comment_count>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2018-07-12 22:06:48 -0700</bug_when>
    <thetext>It looks like expression highlighting in inline scripts is currently broken in Safari, even in files with Unix-style line endings. For example,

// test.js
var o = {
    get x() {
        debugger;
        return 1;
    }
};

var x = o.x;

// test.html
&lt;html&gt;
&lt;head&gt;
&lt;script&gt;
var o = {
    get x() {
        debugger;
        return 1;
    }
};

var x = o.x;
&lt;/script&gt;
&lt;script src=&quot;test.js&quot;&gt;&lt;/script&gt;
&lt;/head&gt;
&lt;/html&gt;

Steps to Reproduce:
1. Inspect the test page
2. Reload the page
3. Debugger breaks at test.html:6
4. Select the call frame&apos;s parent

Expected:
 &gt; var x = |o.x|;

Actual:
 &gt; var x |= o|.x;

When breaking at the second debugger statement (in the separate script file) the parent call frame&apos;s selection appears correctly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441874</commentid>
    <comment_count>6</comment_count>
      <attachid>344948</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2018-07-13 08:47:57 -0700</bug_when>
    <thetext>Created attachment 344948
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441877</commentid>
    <comment_count>7</comment_count>
      <attachid>344950</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2018-07-13 09:18:29 -0700</bug_when>
    <thetext>Created attachment 344950
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441878</commentid>
    <comment_count>8</comment_count>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2018-07-13 09:19:14 -0700</bug_when>
    <thetext>(In reply to Matt Baker from comment #7)
&gt; Created attachment 344950 [details]
&gt; Patch

This also addresses the long standing bug with expression highlighting in inline scripts: https://bugs.webkit.org/show_bug.cgi?id=187532#c5.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441956</commentid>
    <comment_count>9</comment_count>
      <attachid>344950</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2018-07-13 12:24:22 -0700</bug_when>
    <thetext>Comment on attachment 344950
Patch

r=me Nice! I think using SourcePosition everywhere is cleaning things up a bit!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1442032</commentid>
    <comment_count>10</comment_count>
      <attachid>344950</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-07-13 14:53:21 -0700</bug_when>
    <thetext>Comment on attachment 344950
Patch

Clearing flags on attachment: 344950

Committed r233817: &lt;https://trac.webkit.org/changeset/233817&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1442033</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-07-13 14:53:23 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>344716</attachid>
            <date>2018-07-10 13:00:09 -0700</date>
            <delta_ts>2018-07-13 08:47:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-187532-20180710130008.patch</filename>
            <type>text/plain</type>
            <size>19449</size>
            <attacher name="Matt Baker">mattbaker</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMzNjkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBj
ODZiZjEyMTdmMzZiYzAyYjZjYzdkZmUzZTFmZWFhYWJjYzQzMWI1Li5lNTQyMzAyYmRlMTAwNjlh
MWUwOGExYjc3MDU3MWU1ODM4MWRmOThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0OCBAQAorMjAxOC0wNy0xMCAgTWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogRXhlY3V0aW9uIGhpZ2hsaWdodGluZyBpbiB0aGUg
ZnJvbnRlbmQgc2hvdWxkIGJlIGxpbmUvY29sdW1uLWJhc2VkCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODc1MzIKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzQyMDM1NTgwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMvU2NyaXB0U3ludGF4VHJlZS5qczoKKyAgICAg
ICAgUmV0cmlldmUgbGluZS9jb2x1bW4gbG9jYXRpb25zIGZvciBBU1Qgbm9kZXMsIGFuZCBsb29r
dXAgbm9kZXMKKyAgICAgICAgdXNpbmcgbGluZS9jb2x1bW4gbG9jYXRpb25zIGluc3RlYWQgb2Yg
b2Zmc2V0cyBpbnRvIHRoZSBvcmlnaW5hbCBmaWxlLgorCisgICAgICAgIChXSS5TY3JpcHRTeW50
YXhUcmVlKToKKyAgICAgICAgKFdJLlNjcmlwdFN5bnRheFRyZWUucHJvdG90eXBlLmNvbnRhaW5l
cnNPZlBvc2l0aW9uKToKKyAgICAgICAgKFdJLlNjcmlwdFN5bnRheFRyZWUucHJvdG90eXBlLl9j
cmVhdGVJbnRlcm5hbFN5bnRheFRyZWUpOgorICAgICAgICAoV0kuU2NyaXB0U3ludGF4VHJlZS5w
cm90b3R5cGUuY29udGFpbmVyc09mT2Zmc2V0KTogRGVsZXRlZC4KKworICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvTW9kZWxzL1NvdXJjZUNvZGVQb3NpdGlvbi5qczoKKyAgICAgICAgQ29udmVuaWVu
Y2UgbWV0aG9kcyBmb3IgY29tcGFyaW5nIGxpbmUvY29sdW1uIHBvc2l0aW9ucywgYW5kIGZvciBj
b252ZXJ0aW5nCisgICAgICAgIHRvIHRoZSBwb3NpdGlvbiBmb3JtYXQgZXhwZWN0ZWQgYnkgQ29k
ZU1pcnJvci4gU291cmNlQ29kZVBvc2l0aW9uIGNvdWxkCisgICAgICAgIGJlIG1hZGUgdG8gaW50
ZXJvcGVyYXRlIHdpdGggQ29kZU1pcnJvciBieSBleHBvc2luZyBwcm9wZXJ0aWVzIGBsaW5lYAor
ICAgICAgICBhbmQgYGNoYCwgYnV0IG1ha2luZyB0aGUgY29udmVyc2lvbiBleHBsaWNpdCBpbXBy
b3ZlcyBjb2RlIHJlYWRhYmlsaXR5LgorCisgICAgICAgIChXSS5Tb3VyY2VDb2RlUG9zaXRpb24p
OgorICAgICAgICAoV0kuU291cmNlQ29kZVBvc2l0aW9uLnByb3RvdHlwZS5vZmZzZXRDb2x1bW4p
OgorICAgICAgICAoV0kuU291cmNlQ29kZVBvc2l0aW9uLnByb3RvdHlwZS5lcXVhbHMpOgorICAg
ICAgICAoV0kuU291cmNlQ29kZVBvc2l0aW9uLnByb3RvdHlwZS5pc0JlZm9yZSk6CisgICAgICAg
IChXSS5Tb3VyY2VDb2RlUG9zaXRpb24ucHJvdG90eXBlLmlzQWZ0ZXIpOgorICAgICAgICAoV0ku
U291cmNlQ29kZVBvc2l0aW9uLnByb3RvdHlwZS5pc1dpdGhpbik6CisgICAgICAgIChXSS5Tb3Vy
Y2VDb2RlUG9zaXRpb24ucHJvdG90eXBlLnRvQ29kZU1pcnJvcik6CisKKyAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL1ZpZXdzL0NvZGVNaXJyb3JFZGl0b3IuanM6CisgICAgICAgIChXSS5Db2RlTWly
cm9yRWRpdG9yLmNyZWF0ZSk6CisgICAgICAgIChXSS5Db2RlTWlycm9yRWRpdG9yKToKKworICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlQ29kZVRleHRFZGl0b3IuanM6CisgICAg
ICAgIChXSS5Tb3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUudGV4dEVkaXRvckV4ZWN1dGlv
bkhpZ2hsaWdodFJhbmdlKToKKyAgICAgICAgTm8gbmVlZCB0byBwYXNzIGFyZ3VtZW50cyB0aGF0
IGNhbiBiZSBkZXJpdmVkIGludGVybmFsbHkuIERldGVybWluZQorICAgICAgICByYW5nZSBleHRl
bnRzIHVzaW5nIGxpbmUvY29sdW1uIHBvc2l0aW9ucyBpbnRzZWFkIG9mIG9mZnNldHMuCisgICAg
ICAgIChXSS5Tb3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUudGV4dEVkaXRvckV4ZWN1dGlv
bkhpZ2hsaWdodFJhbmdlLmNvbnZlcnRSYW5nZU9mZnNldHNUb1NvdXJjZUNvZGVPZmZzZXRzKTog
RGVsZXRlZC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVGV4dEVkaXRvci5qczoK
KyAgICAgICAgKFdJLlRleHRFZGl0b3IucHJvdG90eXBlLm9yaWdpbmFsUG9zaXRpb25Ub09yaWdp
bmFsT2Zmc2V0KToKKyAgICAgICAgKFdJLlRleHRFZGl0b3IucHJvdG90eXBlLl91cGRhdGVFeGVj
dXRpb25SYW5nZUhpZ2hsaWdodCk6CisKIDIwMTgtMDctMTAgIE1hdHQgQmFrZXIgIDxtYXR0YmFr
ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFJFR1JFU1NJT04gKHIyMTc1
MDUpOiBEZWJ1Z2dlciBjb250ZW50IHZpZXcgZG9lc24ndCB1cGRhdGUgd2hlbiBsZWZ0IHNpZGVi
YXIgaXMgY29sbGFwc2VkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Nb2RlbHMvU2NyaXB0U3ludGF4VHJlZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL01vZGVscy9TY3JpcHRTeW50YXhUcmVlLmpzCmluZGV4IDVkZTY0ZThj
ODFlMjIzYmE5Nzk0MWQxYzI3Y2FmYThmOTcwNTlkZjEuLjY1NTBmMzUxYTk1YWU0NTM5NDRlZjBm
YzNhMzE0ZTkyNjVhZjM1OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL01vZGVscy9TY3JpcHRTeW50YXhUcmVlLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9TY3JpcHRTeW50YXhUcmVlLmpzCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMz
LDcgKzMzLDcgQEAgV0kuU2NyaXB0U3ludGF4VHJlZSA9IGNsYXNzIFNjcmlwdFN5bnRheFRyZWUK
IAogICAgICAgICB0cnkgewogICAgICAgICAgICAgbGV0IHNvdXJjZVR5cGUgPSB0aGlzLl9zY3Jp
cHQuc291cmNlVHlwZSA9PT0gV0kuU2NyaXB0LlNvdXJjZVR5cGUuTW9kdWxlID8gIm1vZHVsZSIg
OiAic2NyaXB0IjsKLSAgICAgICAgICAgIGxldCBlc3ByaW1hU3ludGF4VHJlZSA9IGVzcHJpbWEu
cGFyc2Uoc291cmNlVGV4dCwge3JhbmdlOiB0cnVlLCBzb3VyY2VUeXBlfSk7CisgICAgICAgICAg
ICBsZXQgZXNwcmltYVN5bnRheFRyZWUgPSBlc3ByaW1hLnBhcnNlKHNvdXJjZVRleHQsIHtsb2M6
IHRydWUsIHJhbmdlOiB0cnVlLCBzb3VyY2VUeXBlfSk7CiAgICAgICAgICAgICB0aGlzLl9zeW50
YXhUcmVlID0gdGhpcy5fY3JlYXRlSW50ZXJuYWxTeW50YXhUcmVlKGVzcHJpbWFTeW50YXhUcmVl
KTsKICAgICAgICAgICAgIHRoaXMuX3BhcnNlZFN1Y2Nlc3NmdWxseSA9IHRydWU7CiAgICAgICAg
IH0gY2F0Y2ggKGVycm9yKSB7CkBAIC03OSwyMyArNzksMjMgQEAgV0kuU2NyaXB0U3ludGF4VHJl
ZSA9IGNsYXNzIFNjcmlwdFN5bnRheFRyZWUKICAgICAgICAgcmV0dXJuIG5vZGVzOwogICAgIH0K
IAotICAgIGNvbnRhaW5lcnNPZk9mZnNldChvZmZzZXQpCisgICAgY29udGFpbmVyc09mUG9zaXRp
b24ocG9zaXRpb24pCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9wYXJzZWRT
dWNjZXNzZnVsbHkpOwogICAgICAgICBpZiAoIXRoaXMuX3BhcnNlZFN1Y2Nlc3NmdWxseSkKICAg
ICAgICAgICAgIHJldHVybiBbXTsKIAogICAgICAgICBsZXQgYWxsTm9kZXMgPSBbXTsKLSAgICAg
ICAgY29uc3Qgc3RhcnQgPSAwOwotICAgICAgICBjb25zdCBlbmQgPSAxOwogCiAgICAgICAgIHRo
aXMuZm9yRWFjaE5vZGUoKG5vZGUsIHN0YXRlKSA9PiB7Ci0gICAgICAgICAgICBpZiAobm9kZS5y
YW5nZVtlbmRdIDwgb2Zmc2V0KQorICAgICAgICAgICAgaWYgKG5vZGUuZW5kUG9zaXRpb24uaXNC
ZWZvcmUocG9zaXRpb24pKQogICAgICAgICAgICAgICAgIHN0YXRlLnNraXBDaGlsZE5vZGVzID0g
dHJ1ZTsKLSAgICAgICAgICAgIGlmIChub2RlLnJhbmdlW3N0YXJ0XSA+IG9mZnNldCkKKyAgICAg
ICAgICAgIGVsc2UgaWYgKG5vZGUuc3RhcnRQb3NpdGlvbi5pc0FmdGVyKHBvc2l0aW9uKSkKICAg
ICAgICAgICAgICAgICBzdGF0ZS5zaG91bGRTdG9wRWFybHkgPSB0cnVlOwotICAgICAgICAgICAg
aWYgKG5vZGUucmFuZ2Vbc3RhcnRdIDw9IG9mZnNldCAmJiBub2RlLnJhbmdlW2VuZF0gPj0gb2Zm
c2V0KQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgY29uc29sZS5hc3NlcnQo
cG9zaXRpb24uaXNXaXRoaW4obm9kZS5zdGFydFBvc2l0aW9uLCBub2RlLmVuZFBvc2l0aW9uKSk7
CiAgICAgICAgICAgICAgICAgYWxsTm9kZXMucHVzaChub2RlKTsKKyAgICAgICAgICAgIH0KICAg
ICAgICAgfSk7CiAKICAgICAgICAgcmV0dXJuIGFsbE5vZGVzOwpAQCAtMTA1OCw2ICsxMDU4LDEw
IEBAIFdJLlNjcmlwdFN5bnRheFRyZWUgPSBjbGFzcyBTY3JpcHRTeW50YXhUcmVlCiAgICAgICAg
ICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgfQogCisgICAgICAgIGxldCB7c3RhcnQsIGVuZH0g
PSBub2RlLmxvYzsKKyAgICAgICAgcmVzdWx0LnN0YXJ0UG9zaXRpb24gPSBuZXcgV0kuU291cmNl
Q29kZVBvc2l0aW9uKHN0YXJ0LmxpbmUgLSAxLCBzdGFydC5jb2x1bW4pOworICAgICAgICByZXN1
bHQuZW5kUG9zaXRpb24gPSBuZXcgV0kuU291cmNlQ29kZVBvc2l0aW9uKGVuZC5saW5lIC0gMSwg
ZW5kLmNvbHVtbik7CisKICAgICAgICAgcmVzdWx0LnJhbmdlID0gbm9kZS5yYW5nZTsKICAgICAg
ICAgLy8gVGhpcyBpcyBhbiBvYmplY3QgZm9yIHdoaWNoIHlvdSBjYW4gYWRkIGZpZWxkcyB0byBh
biBBU1Qgbm9kZSB3aXRob3V0IHdvcnJ5aW5nIGFib3V0IHBvbGx1dGluZyB0aGUgc3ludGF4LXJl
bGF0ZWQgZmllbGRzIG9mIHRoZSBub2RlLgogICAgICAgICByZXN1bHQuYXR0YWNobWVudHMgPSB7
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVs
cy9Tb3VyY2VDb2RlUG9zaXRpb24uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Nb2RlbHMvU291cmNlQ29kZVBvc2l0aW9uLmpzCmluZGV4IDYyOGZkMTEwYzBjY2Q0MDM5
NTc1NGQyZTUzNjVmODNlYjlkNjVjODAuLjE3YTBhOWYwMDY5MWEzMjgwNTg5OTM2MDZiNGE5YzM1
ZDJmMWQ4MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L01vZGVscy9Tb3VyY2VDb2RlUG9zaXRpb24uanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvTW9kZWxzL1NvdXJjZUNvZGVQb3NpdGlvbi5qcwpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNSw0ICszNSw1MiBA
QCBXSS5Tb3VyY2VDb2RlUG9zaXRpb24gPSBjbGFzcyBTb3VyY2VDb2RlUG9zaXRpb24KIAogICAg
IGdldCBsaW5lTnVtYmVyKCkgeyByZXR1cm4gdGhpcy5fbGluZU51bWJlcjsgfQogICAgIGdldCBj
b2x1bW5OdW1iZXIoKSB7IHJldHVybiB0aGlzLl9jb2x1bW5OdW1iZXI7IH0KKworICAgIG9mZnNl
dENvbHVtbihkZWx0YSkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2NvbHVt
bk51bWJlciArIGRlbHRhID49IDApOworICAgICAgICByZXR1cm4gbmV3IFdJLlNvdXJjZUNvZGVQ
b3NpdGlvbih0aGlzLl9saW5lTnVtYmVyLCB0aGlzLl9jb2x1bW5OdW1iZXIgKyBkZWx0YSk7Cisg
ICAgfQorCisgICAgZXF1YWxzKHBvc2l0aW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMu
X2xpbmVOdW1iZXIgPT09IHBvc2l0aW9uLmxpbmVOdW1iZXIgJiYgdGhpcy5fY29sdW1uTnVtYmVy
ID09PSBwb3NpdGlvbi5jb2x1bW5OdW1iZXI7CisgICAgfQorCisgICAgaXNCZWZvcmUocG9zaXRp
b24pCisgICAgeworICAgICAgICBpZiAodGhpcy5fbGluZU51bWJlciA8IHBvc2l0aW9uLmxpbmVO
dW1iZXIpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKHRoaXMuX2xpbmVO
dW1iZXIgPT09IHBvc2l0aW9uLmxpbmVOdW1iZXIgJiYgdGhpcy5fY29sdW1uTnVtYmVyIDwgcG9z
aXRpb24uY29sdW1uTnVtYmVyKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlzQWZ0ZXIocG9zaXRpb24pCisgICAgeworICAg
ICAgICBpZiAodGhpcy5fbGluZU51bWJlciA+IHBvc2l0aW9uLmxpbmVOdW1iZXIpCisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKHRoaXMuX2xpbmVOdW1iZXIgPT09IHBvc2l0
aW9uLmxpbmVOdW1iZXIgJiYgdGhpcy5fY29sdW1uTnVtYmVyID4gcG9zaXRpb24uY29sdW1uTnVt
YmVyKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIGlzV2l0aGluKHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uKQorICAgIHsK
KyAgICAgICAgY29uc29sZS5hc3NlcnQoc3RhcnRQb3NpdGlvbi5pc0JlZm9yZShlbmRQb3NpdGlv
bikgfHwgc3RhcnRQb3NpdGlvbi5lcXVhbHMoZW5kUG9zaXRpb24pKTsKKworICAgICAgICBpZiAo
dGhpcy5lcXVhbHMoc3RhcnRQb3NpdGlvbikgfHwgdGhpcy5lcXVhbHMoZW5kUG9zaXRpb24pKQor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmICh0aGlzLmlzQWZ0ZXIoc3RhcnRQ
b3NpdGlvbikgJiYgdGhpcy5pc0JlZm9yZShlbmRQb3NpdGlvbikpCisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgdG9Db2RlTWly
cm9yKCkKKyAgICB7CisgICAgICAgIHJldHVybiB7bGluZTogdGhpcy5fbGluZU51bWJlciwgY2g6
IHRoaXMuX2NvbHVtbk51bWJlcn07CisgICAgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUZXh0RWRpdG9yLmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlQ29kZVRleHRF
ZGl0b3IuanMKaW5kZXggN2MxYWQ3YmRmZWFkMTgyYTFhZTkzYjQ3YWM1OGFjZTlhNmIyYTRiNi4u
NWViYmJlYjYyMGY5ZDcwN2NhMzZmNzEzNWMwNjcxNmZlZGJkMjU0NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlQ29kZVRleHRFZGl0
b3IuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU291
cmNlQ29kZVRleHRFZGl0b3IuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTQxMSw4ICsxNDExLDkgQEAgV0kuU291cmNlQ29k
ZVRleHRFZGl0b3IgPSBjbGFzcyBTb3VyY2VDb2RlVGV4dEVkaXRvciBleHRlbmRzIFdJLlRleHRF
ZGl0b3IKICAgICAgICAgdGhpcy5fcmVpbnNlcnRBbGxUaHJlYWRJbmRpY2F0b3JzKCk7CiAgICAg
fQogCi0gICAgdGV4dEVkaXRvckV4ZWN1dGlvbkhpZ2hsaWdodFJhbmdlKG9mZnNldCwgcG9zaXRp
b24sIGNoYXJhY3RlckF0T2Zmc2V0LCBjYWxsYmFjaykKKyAgICB0ZXh0RWRpdG9yRXhlY3V0aW9u
SGlnaGxpZ2h0UmFuZ2UoY3VycmVudFBvc2l0aW9uLCBjYWxsYmFjaykKICAgICB7CisgICAgICAg
IGxldCBwb3NpdGlvbiA9IHRoaXMuY3VycmVudFBvc2l0aW9uVG9PcmlnaW5hbFBvc2l0aW9uKGN1
cnJlbnRQb3NpdGlvbik7CiAgICAgICAgIGxldCBzY3JpcHQgPSB0aGlzLl9nZXRBc3NvY2lhdGVk
U2NyaXB0KHBvc2l0aW9uKTsKICAgICAgICAgaWYgKCFzY3JpcHQpIHsKICAgICAgICAgICAgIGNh
bGxiYWNrKG51bGwpOwpAQCAtMTQyMCwxNiArMTQyMSwyOSBAQCBXSS5Tb3VyY2VDb2RlVGV4dEVk
aXRvciA9IGNsYXNzIFNvdXJjZUNvZGVUZXh0RWRpdG9yIGV4dGVuZHMgV0kuVGV4dEVkaXRvcgog
ICAgICAgICB9CiAKICAgICAgICAgLy8gSWYgdGhpcyBpcyBhbiBpbmxpbmUgc2NyaXB0LCB0aGVu
IGNvbnZlcnQgdG8gb2Zmc2V0IHdpdGhpbiB0aGUgaW5saW5lIHNjcmlwdC4KLSAgICAgICAgbGV0
IGFkanVzdG1lbnQgPSBzY3JpcHQucmFuZ2Uuc3RhcnRPZmZzZXQgfHwgMDsKLSAgICAgICAgb2Zm
c2V0ID0gb2Zmc2V0IC0gYWRqdXN0bWVudDsKKyAgICAgICAgbGV0IHNjcmlwdE9mZnNldCA9IHNj
cmlwdC5yYW5nZS5zdGFydE9mZnNldDsKKyAgICAgICAgaWYgKHNjcmlwdE9mZnNldCkgeworICAg
ICAgICAgICAgbGV0IG9mZnNldCA9IHRoaXMuY3VycmVudFBvc2l0aW9uVG9PcmlnaW5hbE9mZnNl
dChjdXJyZW50UG9zaXRpb24pIC0gc2NyaXB0T2Zmc2V0OworICAgICAgICAgICAgcG9zaXRpb24g
PSB0aGlzLmN1cnJlbnRQb3NpdGlvblRvT3JpZ2luYWxQb3NpdGlvbih0aGlzLm9yaWdpbmFsT2Zm
c2V0VG9DdXJyZW50UG9zaXRpb24ob2Zmc2V0KSk7CisgICAgICAgIH0KKworICAgICAgICBwb3Np
dGlvbiA9IG5ldyBXSS5Tb3VyY2VDb2RlUG9zaXRpb24ocG9zaXRpb24ubGluZSwgcG9zaXRpb24u
Y2gpOwogCiAgICAgICAgIC8vIFdoZW4gcmV0dXJuaW5nIG9mZnNldHMsIGNvbnZlcnQgdG8gb2Zm
c2V0cyB3aXRoaW4gdGhlIFNvdXJjZUNvZGUgYmVpbmcgdmlld2VkLgotICAgICAgICBmdW5jdGlv
biBjb252ZXJ0UmFuZ2VPZmZzZXRzVG9Tb3VyY2VDb2RlT2Zmc2V0cyhyYW5nZSkgewotICAgICAg
ICAgICAgcmV0dXJuIHJhbmdlLm1hcCgob2Zmc2V0KSA9PiBvZmZzZXQgKyBhZGp1c3RtZW50KTsK
KyAgICAgICAgbGV0IGhpZ2hsaWdodFNvdXJjZUNvZGVSYW5nZSA9IChzdGFydFBvc2l0aW9uLCBl
bmRQb3NpdGlvbikgPT4geworICAgICAgICAgICAgaWYgKHNjcmlwdE9mZnNldCkgeworICAgICAg
ICAgICAgICAgIHN0YXJ0UG9zaXRpb24gPSB0aGlzLm9yaWdpbmFsT2Zmc2V0VG9DdXJyZW50UG9z
aXRpb24odGhpcy5vcmlnaW5hbFBvc2l0aW9uVG9PcmlnaW5hbE9mZnNldChzdGFydFBvc2l0aW9u
LnRvQ29kZU1pcnJvcigpKSAtIHNjcmlwdE9mZnNldCk7CisgICAgICAgICAgICAgICAgZW5kUG9z
aXRpb24gPSB0aGlzLm9yaWdpbmFsT2Zmc2V0VG9DdXJyZW50UG9zaXRpb24odGhpcy5vcmlnaW5h
bFBvc2l0aW9uVG9PcmlnaW5hbE9mZnNldChlbmRQb3NpdGlvbi50b0NvZGVNaXJyb3IoKSkgLSBz
Y3JpcHRPZmZzZXQpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBzdGFy
dFBvc2l0aW9uID0gc3RhcnRQb3NpdGlvbi50b0NvZGVNaXJyb3IoKTsKKyAgICAgICAgICAgICAg
ICBlbmRQb3NpdGlvbiA9IGVuZFBvc2l0aW9uLnRvQ29kZU1pcnJvcigpOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBjYWxsYmFjayh7c3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb259KTsK
ICAgICAgICAgfQogCiAgICAgICAgIHNjcmlwdC5yZXF1ZXN0U2NyaXB0U3ludGF4VHJlZSgoc3lu
dGF4VHJlZSkgPT4gewotICAgICAgICAgICAgbGV0IG5vZGVzID0gc3ludGF4VHJlZS5jb250YWlu
ZXJzT2ZPZmZzZXQob2Zmc2V0KTsKKyAgICAgICAgICAgIGxldCBub2RlcyA9IHN5bnRheFRyZWUu
Y29udGFpbmVyc09mUG9zaXRpb24ocG9zaXRpb24pOwogICAgICAgICAgICAgaWYgKCFub2Rlcy5s
ZW5ndGgpIHsKICAgICAgICAgICAgICAgICBjYWxsYmFjayhudWxsKTsKICAgICAgICAgICAgICAg
ICByZXR1cm47CkBAIC0xNDM5LDE4ICsxNDUzLDE3IEBAIFdJLlNvdXJjZUNvZGVUZXh0RWRpdG9y
ID0gY2xhc3MgU291cmNlQ29kZVRleHRFZGl0b3IgZXh0ZW5kcyBXSS5UZXh0RWRpdG9yCiAgICAg
ICAgICAgICAvLyBBdm9pZCBoaWdobGlnaHRpbmcgdGhlIGVudGlyZSBwcm9ncmFtIGlmIHRoaXMg
aXMgdGhlIHN0YXJ0IG9mIHRoZSBmaXJzdCBzdGF0ZW1lbnQuCiAgICAgICAgICAgICAvLyBTcGVj
aWFsIGNhc2UgdGhlIGFzc2lnbm1lbnQgZXhwcmVzc2lvbiBpbnNpZGUgb2YgYSBmb3IuLm9mIGFu
ZCBmb3IuLmluIHRvIGhpZ2hsaWdodCBhIGxhcmdlciByYW5nZS4KICAgICAgICAgICAgIGZvciAo
bGV0IG5vZGUgb2Ygbm9kZXMpIHsKLSAgICAgICAgICAgICAgICBsZXQgc3RhcnRPZmZzZXQgPSBu
b2RlLnJhbmdlWzBdOwotICAgICAgICAgICAgICAgIGlmIChzdGFydE9mZnNldCA9PT0gb2Zmc2V0
ICYmIG5vZGUudHlwZSAhPT0gV0kuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5Qcm9ncmFtKSB7
Ci0gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKGNvbnZlcnRSYW5nZU9mZnNldHNUb1NvdXJj
ZUNvZGVPZmZzZXRzKG5vZGUucmFuZ2UpKTsKKyAgICAgICAgICAgICAgICBpZiAobm9kZS5zdGFy
dFBvc2l0aW9uLmVxdWFscyhwb3NpdGlvbikgJiYgbm9kZS50eXBlICE9PSBXSS5TY3JpcHRTeW50
YXhUcmVlLk5vZGVUeXBlLlByb2dyYW0pIHsKKyAgICAgICAgICAgICAgICAgICAgaGlnaGxpZ2h0
U291cmNlQ29kZVJhbmdlKG5vZGUuc3RhcnRQb3NpdGlvbiwgbm9kZS5lbmRQb3NpdGlvbik7CiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgaWYgKG5vZGUudHlwZSA9PT0gV0kuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5Gb3JJ
blN0YXRlbWVudCB8fCBub2RlLnR5cGUgPT09IFdJLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUu
Rm9yT2ZTdGF0ZW1lbnQpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUubGVmdC5yYW5n
ZVswXSA9PT0gb2Zmc2V0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhjb252
ZXJ0UmFuZ2VPZmZzZXRzVG9Tb3VyY2VDb2RlT2Zmc2V0cyhbbm9kZS5sZWZ0LnJhbmdlWzBdLCBu
b2RlLnJpZ2h0LnJhbmdlWzFdXSkpOworICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS5sZWZ0
LnN0YXJ0UG9zaXRpb24uZXF1YWxzKHBvc2l0aW9uKSkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgaGlnaGxpZ2h0U291cmNlQ29kZVJhbmdlKG5vZGUubGVmdC5zdGFydFBvc2l0aW9uLCBub2Rl
LnJpZ2h0LmVuZFBvc2l0aW9uKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBp
ZiAoc3RhcnRPZmZzZXQgPiBvZmZzZXQpCisgICAgICAgICAgICAgICAgaWYgKG5vZGUuc3RhcnRQ
b3NpdGlvbi5pc0FmdGVyKHBvc2l0aW9uKSkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICB9CiAKQEAgLTE0NTgsMjggKzE0NzEsMzQgQEAgV0kuU291cmNlQ29kZVRleHRF
ZGl0b3IgPSBjbGFzcyBTb3VyY2VDb2RlVGV4dEVkaXRvciBleHRlbmRzIFdJLlRleHRFZGl0b3IK
ICAgICAgICAgICAgIC8vIFdlIGNoZWNrIHRoaXMgYWZ0ZXIgZW5zdXJpbmcgbm90aGluZyBzdGFy
dHMgd2l0aCB0aGlzIG9mZnNldCwKICAgICAgICAgICAgIC8vIGFzIHRoYXQgd291bGQgYmUgbW9y
ZSBpbXBvcnRhbnQuCiAgICAgICAgICAgICBmb3IgKGxldCBub2RlIG9mIG5vZGVzKSB7Ci0gICAg
ICAgICAgICAgICAgbGV0IHN0YXJ0T2Zmc2V0ID0gbm9kZS5yYW5nZVswXTsKLSAgICAgICAgICAg
ICAgICBsZXQgZW5kT2Zmc2V0ID0gbm9kZS5yYW5nZVsxXTsKLSAgICAgICAgICAgICAgICBpZiAo
ZW5kT2Zmc2V0ID09PSBvZmZzZXQpIHsKKyAgICAgICAgICAgICAgICBpZiAobm9kZS5lbmRQb3Np
dGlvbi5lcXVhbHMocG9zaXRpb24pKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLnR5
cGUgPT09IFdJLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuQmxvY2tTdGF0ZW1lbnQpIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIENsb3NpbmcgYnJhY2Ugb2YgYSBibG9jaywgb25seSBo
aWdobGlnaHQgdGhlIGNsb3NpbmcgYnJhY2UgY2hhcmFjdGVyLgotICAgICAgICAgICAgICAgICAg
ICAgICAgY2FsbGJhY2soY29udmVydFJhbmdlT2Zmc2V0c1RvU291cmNlQ29kZU9mZnNldHMoW29m
ZnNldCAtIDEsIG9mZnNldF0pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGhpZ2hsaWdodFNv
dXJjZUNvZGVSYW5nZShwb3NpdGlvbi5vZmZzZXRDb2x1bW4oLTEpLCBwb3NpdGlvbik7CiAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKHN0YXJ0T2Zmc2V0ID4gb2Zmc2V0KQor
ICAgICAgICAgICAgICAgIGlmIChub2RlLnN0YXJ0UG9zaXRpb24uaXNBZnRlcihwb3NpdGlvbikp
CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogCisgICAgICAgICAg
ICBsZXQgZGlzdGFuY2UgPSAoc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24pID0+IHsKKyAgICAg
ICAgICAgICAgICBpZiAoc3RhcnRQb3NpdGlvbi5saW5lTnVtYmVyID09PSBlbmRQb3NpdGlvbi5s
aW5lTnVtYmVyKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZW5kUG9zaXRpb24uY29sdW1u
TnVtYmVyIC0gc3RhcnRQb3NpdGlvbi5jb2x1bW5OdW1iZXI7CisKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gdGhpcy5vcmlnaW5hbFBvc2l0aW9uVG9PcmlnaW5hbE9mZnNldChlbmRQb3NpdGlvbi50
b0NvZGVNaXJyb3IoKSkgLSB0aGlzLm9yaWdpbmFsUG9zaXRpb25Ub09yaWdpbmFsT2Zmc2V0KHN0
YXJ0UG9zaXRpb24udG9Db2RlTWlycm9yKCkpOworCisgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAvLyBGaW5kIHRoZSBiZXN0IGNvbnRhaW5lciBub2RlIGZvciB0aGlzIGV4cHJlc3Npb24uCiAg
ICAgICAgICAgICAvLyBTb3J0IGJ5IHRoZSB0aWdodGVzdCBib3VuZHMgc28gd2UgY2FuIHdhbGsg
ZnJvbSBzcGVjaWZpYyB0byBnZW5lcmFsIG5vZGVzLgogICAgICAgICAgICAgbm9kZXMuc29ydCgo
YSwgYikgPT4gewotICAgICAgICAgICAgICAgIGxldCBhTGVuZ3RoID0gYS5yYW5nZVsxXSAtIGEu
cmFuZ2VbMF07Ci0gICAgICAgICAgICAgICAgbGV0IGJMZW5ndGggPSBiLnJhbmdlWzFdIC0gYi5y
YW5nZVswXTsKKyAgICAgICAgICAgICAgICBsZXQgYUxlbmd0aCA9IGRpc3RhbmNlKGEuc3RhcnRQ
b3NpdGlvbiwgYS5lbmRQb3NpdGlvbik7CisgICAgICAgICAgICAgICAgbGV0IGJMZW5ndGggPSBk
aXN0YW5jZShiLnN0YXJ0UG9zaXRpb24sIGIuZW5kUG9zaXRpb24pOwogICAgICAgICAgICAgICAg
IHJldHVybiBhTGVuZ3RoIC0gYkxlbmd0aDsKICAgICAgICAgICAgIH0pOwogCi0gICAgICAgICAg
ICBsZXQgY2hhcmFjdGVyQXRPZmZzZXRJc0RvdE9yQnJhY2tldCA9IGNoYXJhY3RlckF0T2Zmc2V0
ID09PSAiLiIgfHwgY2hhcmFjdGVyQXRPZmZzZXQgPT09ICJbIjsKKyAgICAgICAgICAgIGxldCBj
aGFyYWN0ZXJBdFBvc2l0aW9uID0gdGhpcy5nZXRUZXh0SW5SYW5nZShjdXJyZW50UG9zaXRpb24s
IHtsaW5lOiBjdXJyZW50UG9zaXRpb24ubGluZSwgY2g6IGN1cnJlbnRQb3NpdGlvbi5jaCArIDF9
KTsKKyAgICAgICAgICAgIGxldCBjaGFyYWN0ZXJBdFBvc2l0aW9uSXNEb3RPckJyYWNrZXQgPSBj
aGFyYWN0ZXJBdFBvc2l0aW9uID09PSAiLiIgfHwgY2hhcmFjdGVyQXRQb3NpdGlvbiA9PT0gIlsi
OwogCiAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgKytpKSB7
CiAgICAgICAgICAgICAgICAgbGV0IG5vZGUgPSBub2Rlc1tpXTsKQEAgLTE0ODgsNyArMTUwNyw3
IEBAIFdJLlNvdXJjZUNvZGVUZXh0RWRpdG9yID0gY2xhc3MgU291cmNlQ29kZVRleHRFZGl0b3Ig
ZXh0ZW5kcyBXSS5UZXh0RWRpdG9yCiAgICAgICAgICAgICAgICAgaWYgKG5vZGUudHlwZSA9PT0g
V0kuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5DYWxsRXhwcmVzc2lvbgogICAgICAgICAgICAg
ICAgICAgICB8fCBub2RlLnR5cGUgPT09IFdJLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuTmV3
RXhwcmVzc2lvbgogICAgICAgICAgICAgICAgICAgICB8fCBub2RlLnR5cGUgPT09IFdJLlNjcmlw
dFN5bnRheFRyZWUuTm9kZVR5cGUuVGhyb3dTdGF0ZW1lbnQpIHsKLSAgICAgICAgICAgICAgICAg
ICAgY2FsbGJhY2soY29udmVydFJhbmdlT2Zmc2V0c1RvU291cmNlQ29kZU9mZnNldHMobm9kZS5y
YW5nZSkpOworICAgICAgICAgICAgICAgICAgICBoaWdobGlnaHRTb3VyY2VDb2RlUmFuZ2Uobm9k
ZS5zdGFydFBvc2l0aW9uLCBub2RlLmVuZFBvc2l0aW9uKTsKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgICAgIH0KIApAQCAtMTUwNywyNCArMTUyNiwyNCBAQCBXSS5T
b3VyY2VDb2RlVGV4dEVkaXRvciA9IGNsYXNzIFNvdXJjZUNvZGVUZXh0RWRpdG9yIGV4dGVuZHMg
V0kuVGV4dEVkaXRvcgogICAgICAgICAgICAgICAgIC8vICAgICBmb29bIngiXSpbInkiXVsieiJd
ID0+IGluc2lkZSB5IGxvb2tpbmcgYXQgcGFyZW50IGNhbGwgZnJhbWUgPT4gfGZvb1sieCJdWyJ5
Il18WyJ6Il0KICAgICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgIGlmIChub2RlLnR5
cGUgPT09IFdJLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuVGhpc0V4cHJlc3Npb24KLSAgICAg
ICAgICAgICAgICAgICAgfHwgKGNoYXJhY3RlckF0T2Zmc2V0SXNEb3RPckJyYWNrZXQgJiYgKG5v
ZGUudHlwZSA9PT0gV0kuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5JZGVudGlmaWVyIHx8IG5v
ZGUudHlwZSA9PT0gV0kuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5NZW1iZXJFeHByZXNzaW9u
KSkpIHsKKyAgICAgICAgICAgICAgICAgICAgfHwgKGNoYXJhY3RlckF0UG9zaXRpb25Jc0RvdE9y
QnJhY2tldCAmJiAobm9kZS50eXBlID09PSBXSS5TY3JpcHRTeW50YXhUcmVlLk5vZGVUeXBlLklk
ZW50aWZpZXIgfHwgbm9kZS50eXBlID09PSBXSS5TY3JpcHRTeW50YXhUcmVlLk5vZGVUeXBlLk1l
bWJlckV4cHJlc3Npb24pKSkgewogICAgICAgICAgICAgICAgICAgICBsZXQgbWVtYmVyRXhwcmVz
c2lvbk5vZGUgPSBudWxsOwogICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gaSArIDE7
IGogPCBub2Rlcy5sZW5ndGg7ICsraikgewogICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG5l
eHROb2RlID0gbm9kZXNbal07CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobmV4dE5vZGUu
dHlwZSA9PT0gV0kuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5NZW1iZXJFeHByZXNzaW9uKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtYmVyRXhwcmVzc2lvbk5vZGUgPSBuZXh0
Tm9kZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob2Zmc2V0ID09PSBtZW1iZXJF
eHByZXNzaW9uTm9kZS5yYW5nZVsxXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
cG9zaXRpb24uZXF1YWxzKG1lbWJlckV4cHJlc3Npb25Ob2RlLmVuZFBvc2l0aW9uKSkKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICAgICAgICAgIGlmIChtZW1iZXJFeHByZXNzaW9uTm9kZSkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soY29udmVydFJhbmdlT2Zmc2V0c1RvU291
cmNlQ29kZU9mZnNldHMobWVtYmVyRXhwcmVzc2lvbk5vZGUucmFuZ2UpKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGhpZ2hsaWdodFNvdXJjZUNvZGVSYW5nZShtZW1iZXJFeHByZXNzaW9uTm9k
ZS5zdGFydFBvc2l0aW9uLCBtZW1iZXJFeHByZXNzaW9uTm9kZS5lbmRQb3NpdGlvbik7CiAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgIH0KIAotICAg
ICAgICAgICAgICAgICAgICBjYWxsYmFjayhjb252ZXJ0UmFuZ2VPZmZzZXRzVG9Tb3VyY2VDb2Rl
T2Zmc2V0cyhub2RlLnJhbmdlKSk7CisgICAgICAgICAgICAgICAgICAgIGhpZ2hsaWdodFNvdXJj
ZUNvZGVSYW5nZShub2RlLnN0YXJ0UG9zaXRpb24sIG5vZGUuZW5kUG9zaXRpb24pOwogICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGV4
dEVkaXRvci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Rl
eHRFZGl0b3IuanMKaW5kZXggNWY2ZTI0ZjAwZGM5NTA5YWE4NjU4OGY2NjU1NWI4ZWI4MTFhMjZl
NS4uZmZjOWIxZTM5Y2E3NjU3YTdhMjc1M2JkYzkyMDBkYmE2MzQxNDZkNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGV4dEVkaXRvci5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UZXh0RWRpdG9y
LmpzCkBAIC03MzIsNiArNzMyLDE4IEBAIFdJLlRleHRFZGl0b3IgPSBjbGFzcyBUZXh0RWRpdG9y
IGV4dGVuZHMgV0kuVmlldwogICAgICAgICByZXR1cm4gcG9zaXRpb247CiAgICAgfQogCisgICAg
b3JpZ2luYWxQb3NpdGlvblRvT3JpZ2luYWxPZmZzZXQocG9zaXRpb24pCisgICAgeworICAgICAg
ICBsZXQgY3VycmVudFBvc2l0aW9uID0gbnVsbDsKKyAgICAgICAgaWYgKHRoaXMuX2Zvcm1hdHRl
clNvdXJjZU1hcCkgeworICAgICAgICAgICAgbGV0IGZvcm1hdHRlZCA9IHRoaXMuX2Zvcm1hdHRl
clNvdXJjZU1hcC5vcmlnaW5hbFRvRm9ybWF0dGVkKHBvc2l0aW9uKTsKKyAgICAgICAgICAgIGN1
cnJlbnRQb3NpdGlvbiA9IHtsaW5lOiBmb3JtYXR0ZWQubGluZU51bWJlciwgY2g6IGZvcm1hdHRl
ZC5jb2x1bW5OdW1iZXJ9OworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGN1cnJlbnRQb3Np
dGlvbiA9IHBvc2l0aW9uOworCisgICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRQb3NpdGlvblRv
T3JpZ2luYWxPZmZzZXQoY3VycmVudFBvc2l0aW9uKTsKKyAgICB9CisKICAgICBjdXJyZW50T2Zm
c2V0VG9DdXJyZW50UG9zaXRpb24ob2Zmc2V0KQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMu
X2NvZGVNaXJyb3IuZ2V0RG9jKCkucG9zRnJvbUluZGV4KG9mZnNldCk7CkBAIC0xMjk0LDEyICsx
MzA2LDggQEAgV0kuVGV4dEVkaXRvciA9IGNsYXNzIFRleHRFZGl0b3IgZXh0ZW5kcyBXSS5WaWV3
CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgbGV0IGN1cnJlbnRQb3NpdGlvbiA9IHts
aW5lOiB0aGlzLl9leGVjdXRpb25MaW5lTnVtYmVyLCBjaDogdGhpcy5fZXhlY3V0aW9uQ29sdW1u
TnVtYmVyfTsKLSAgICAgICAgbGV0IG9yaWdpbmFsT2Zmc2V0ID0gdGhpcy5jdXJyZW50UG9zaXRp
b25Ub09yaWdpbmFsT2Zmc2V0KGN1cnJlbnRQb3NpdGlvbik7Ci0gICAgICAgIGxldCBvcmlnaW5h
bENvZGVNaXJyb3JQb3NpdGlvbiA9IHRoaXMuY3VycmVudFBvc2l0aW9uVG9PcmlnaW5hbFBvc2l0
aW9uKGN1cnJlbnRQb3NpdGlvbik7Ci0gICAgICAgIGxldCBvcmlnaW5hbFBvc2l0aW9uID0gbmV3
IFdJLlNvdXJjZUNvZGVQb3NpdGlvbihvcmlnaW5hbENvZGVNaXJyb3JQb3NpdGlvbi5saW5lLCBv
cmlnaW5hbENvZGVNaXJyb3JQb3NpdGlvbi5jaCk7Ci0gICAgICAgIGxldCBjaGFyYWN0ZXJBdE9m
ZnNldCA9IHRoaXMuX2NvZGVNaXJyb3IuZ2V0UmFuZ2UoY3VycmVudFBvc2l0aW9uLCB7bGluZTog
dGhpcy5fZXhlY3V0aW9uTGluZU51bWJlciwgY2g6IHRoaXMuX2V4ZWN1dGlvbkNvbHVtbk51bWJl
ciArIDF9KTsKIAotICAgICAgICB0aGlzLl9kZWxlZ2F0ZS50ZXh0RWRpdG9yRXhlY3V0aW9uSGln
aGxpZ2h0UmFuZ2Uob3JpZ2luYWxPZmZzZXQsIG9yaWdpbmFsUG9zaXRpb24sIGNoYXJhY3RlckF0
T2Zmc2V0LCAocmFuZ2UpID0+IHsKKyAgICAgICAgdGhpcy5fZGVsZWdhdGUudGV4dEVkaXRvckV4
ZWN1dGlvbkhpZ2hsaWdodFJhbmdlKGN1cnJlbnRQb3NpdGlvbiwgKHJhbmdlKSA9PiB7CiAgICAg
ICAgICAgICBsZXQgc3RhcnQsIGVuZDsKICAgICAgICAgICAgIGlmICghcmFuZ2UpIHsKICAgICAg
ICAgICAgICAgICAvLyBIaWdobGlnaHQgdGhlIHJlc3Qgb2YgdGhlIGxpbmUuCkBAIC0xMzA3LDgg
KzEzMTUsOCBAQCBXSS5UZXh0RWRpdG9yID0gY2xhc3MgVGV4dEVkaXRvciBleHRlbmRzIFdJLlZp
ZXcKICAgICAgICAgICAgICAgICBlbmQgPSB7bGluZTogdGhpcy5fZXhlY3V0aW9uTGluZU51bWJl
cn07CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIC8vIEhpZ2hsaWdodCB0
aGUgcmFuZ2UuCi0gICAgICAgICAgICAgICAgc3RhcnQgPSB0aGlzLm9yaWdpbmFsT2Zmc2V0VG9D
dXJyZW50UG9zaXRpb24ocmFuZ2VbMF0pOwotICAgICAgICAgICAgICAgIGVuZCA9IHRoaXMub3Jp
Z2luYWxPZmZzZXRUb0N1cnJlbnRQb3NpdGlvbihyYW5nZVsxXSk7CisgICAgICAgICAgICAgICAg
c3RhcnQgPSByYW5nZS5zdGFydFBvc2l0aW9uOworICAgICAgICAgICAgICAgIGVuZCA9IHJhbmdl
LmVuZFBvc2l0aW9uOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAvLyBFbnN1cmUgdGhl
IG1hcmtlciBpcyBjbGVhcmVkIGluIGNhc2UgdGhlcmUgd2VyZSBtdWx0aXBsZSB1cGRhdGVzIHZl
cnkgcXVpY2tseS4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>344948</attachid>
            <date>2018-07-13 08:47:57 -0700</date>
            <delta_ts>2018-07-13 09:00:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-187532-20180713084756.patch</filename>
            <type>text/plain</type>
            <size>14999</size>
            <attacher name="Matt Baker">mattbaker</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMzNzkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA3
MGFmODBmZTAxMzI1YWI4MmRkYjU2ZTk2MDlhYThjZTE4MGNjNjAzLi5mMzBjNmUwNGRkYTFhMjVh
M2FkMmNlNjgwMTBhN2UxNWVlMmE1ZTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMiBAQAorMjAxOC0wNy0xMyAgTWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogRXhlY3V0aW9uIGhpZ2hsaWdodGluZyBpbiB0aGUg
ZnJvbnRlbmQgc2hvdWxkIGJlIGxpbmUvY29sdW1uLWJhc2VkCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODc1MzIKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzQyMDM1NTgwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMvU2NyaXB0U3ludGF4VHJlZS5qczoKKyAgICAg
ICAgKFdJLlNjcmlwdFN5bnRheFRyZWUucHJvdG90eXBlLmNvbnRhaW5lcnNPZlBvc2l0aW9uKToK
KyAgICAgICAgKFdJLlNjcmlwdFN5bnRheFRyZWUucHJvdG90eXBlLmNvbnRhaW5lcnNPZk9mZnNl
dCk6IERlbGV0ZWQuCisgICAgICAgIExvb2t1cCBub2RlcyB1c2luZyBsaW5lL2NvbHVtbiBsb2Nh
dGlvbnMgaW5zdGVhZCBvZiBvZmZzZXRzIGludG8KKyAgICAgICAgdGhlIG9yaWdpbmFsIHNjcmlw
dC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL1NvdXJjZUNvZGVQb3NpdGlvbi5q
czoKKyAgICAgICAgKFdJLlNvdXJjZUNvZGVQb3NpdGlvbi5wcm90b3R5cGUub2Zmc2V0Q29sdW1u
KToKKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlQ29kZVRleHRFZGl0b3Iu
anM6CisgICAgICAgIChXSS5Tb3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUudGV4dEVkaXRv
ckV4ZWN1dGlvbkhpZ2hsaWdodFJhbmdlLnRvSW5saW5lU2NyaXB0UG9zaXRpb24pOgorICAgICAg
ICAoV0kuU291cmNlQ29kZVRleHRFZGl0b3IucHJvdG90eXBlLnRleHRFZGl0b3JFeGVjdXRpb25I
aWdobGlnaHRSYW5nZS5mcm9tSW5saW5lU2NyaXB0UG9zaXRpb24pOgorICAgICAgICAoV0kuU291
cmNlQ29kZVRleHRFZGl0b3IucHJvdG90eXBlLnRleHRFZGl0b3JFeGVjdXRpb25IaWdobGlnaHRS
YW5nZSk6CisgICAgICAgIE5vIG5lZWQgdG8gcGFzcyBhcmd1bWVudHMgdGhhdCBjYW4gYmUgZGVy
aXZlZCBpbnRlcm5hbGx5LiBEZXRlcm1pbmUgcmFuZ2UKKyAgICAgICAgZXh0ZW50cyB1c2luZyBs
aW5lL2NvbHVtbiBwb3NpdGlvbnMgaW50c2VhZCBvZiBvZmZzZXRzLgorCisgICAgICAgIChXSS5T
b3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUudGV4dEVkaXRvckV4ZWN1dGlvbkhpZ2hsaWdo
dFJhbmdlLmNvbnZlcnRSYW5nZU9mZnNldHNUb1NvdXJjZUNvZGVPZmZzZXRzKTogRGVsZXRlZC4K
KworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVGV4dEVkaXRvci5qczoKKyAgICAgICAg
KFdJLlRleHRFZGl0b3IucHJvdG90eXBlLl91cGRhdGVFeGVjdXRpb25SYW5nZUhpZ2hsaWdodCk6
CisKIDIwMTgtMDctMTIgIE1hdHQgQmFrZXIgIDxtYXR0YmFrZXJAYXBwbGUuY29tPgogCiAgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IFR5cGUgdG9rZW4gcG9zaXRpb25pbmcgc2hvdWxkIHVzZSBsaW5l
L2NvbHVtbiBsb2NhdGlvbnMgZnJvbSBFc3ByaW1hIGluc3RlYWQgb2Ygb2Zmc2V0cwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1NjcmlwdFN5
bnRheFRyZWUuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMv
U2NyaXB0U3ludGF4VHJlZS5qcwppbmRleCAyNjEyOGM5YTYwODFiOTViZGNlYTVhNTMzMTdlNDdm
YThjODFkZjNlLi44Yjc3YzNhNzYyNDkyZTA5ZDIxYjE2M2YwMDNlODVlZDcwYjZkNWI2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvU2NyaXB0
U3ludGF4VHJlZS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9N
b2RlbHMvU2NyaXB0U3ludGF4VHJlZS5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE0LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03OSwyMiArNzksMjAgQEAgV0kuU2NyaXB0
U3ludGF4VHJlZSA9IGNsYXNzIFNjcmlwdFN5bnRheFRyZWUKICAgICAgICAgcmV0dXJuIG5vZGVz
OwogICAgIH0KIAotICAgIGNvbnRhaW5lcnNPZk9mZnNldChvZmZzZXQpCisgICAgY29udGFpbmVy
c09mUG9zaXRpb24ocG9zaXRpb24pCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlz
Ll9wYXJzZWRTdWNjZXNzZnVsbHkpOwogICAgICAgICBpZiAoIXRoaXMuX3BhcnNlZFN1Y2Nlc3Nm
dWxseSkKICAgICAgICAgICAgIHJldHVybiBbXTsKIAogICAgICAgICBsZXQgYWxsTm9kZXMgPSBb
XTsKLSAgICAgICAgY29uc3Qgc3RhcnQgPSAwOwotICAgICAgICBjb25zdCBlbmQgPSAxOwogCiAg
ICAgICAgIHRoaXMuZm9yRWFjaE5vZGUoKG5vZGUsIHN0YXRlKSA9PiB7Ci0gICAgICAgICAgICBp
ZiAobm9kZS5yYW5nZVtlbmRdIDwgb2Zmc2V0KQorICAgICAgICAgICAgaWYgKG5vZGUuZW5kUG9z
aXRpb24uaXNCZWZvcmUocG9zaXRpb24pKQogICAgICAgICAgICAgICAgIHN0YXRlLnNraXBDaGls
ZE5vZGVzID0gdHJ1ZTsKLSAgICAgICAgICAgIGlmIChub2RlLnJhbmdlW3N0YXJ0XSA+IG9mZnNl
dCkKKyAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUuc3RhcnRQb3NpdGlvbi5pc0FmdGVyKHBvc2l0
aW9uKSkKICAgICAgICAgICAgICAgICBzdGF0ZS5zaG91bGRTdG9wRWFybHkgPSB0cnVlOwotICAg
ICAgICAgICAgaWYgKG5vZGUucmFuZ2Vbc3RhcnRdIDw9IG9mZnNldCAmJiBub2RlLnJhbmdlW2Vu
ZF0gPj0gb2Zmc2V0KQorICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGFsbE5vZGVz
LnB1c2gobm9kZSk7CiAgICAgICAgIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvU291cmNlQ29kZVBvc2l0aW9uLmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1NvdXJjZUNvZGVQb3NpdGlvbi5q
cwppbmRleCA1NWI1ZTc5MjAzM2ZlZmVkZGRmODY5N2Y2NmI3ZGE3MGY1ZGM3MjlkLi4xN2EwYTlm
MDA2OTFhMzI4MDU4OTkzNjA2YjRhOWMzNWQyZjFkODI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvU291cmNlQ29kZVBvc2l0aW9uLmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Tb3VyY2VDb2Rl
UG9zaXRpb24uanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMzYsNiArMzYsMTIgQEAgV0kuU291cmNlQ29kZVBvc2l0aW9uID0gY2xhc3Mg
U291cmNlQ29kZVBvc2l0aW9uCiAgICAgZ2V0IGxpbmVOdW1iZXIoKSB7IHJldHVybiB0aGlzLl9s
aW5lTnVtYmVyOyB9CiAgICAgZ2V0IGNvbHVtbk51bWJlcigpIHsgcmV0dXJuIHRoaXMuX2NvbHVt
bk51bWJlcjsgfQogCisgICAgb2Zmc2V0Q29sdW1uKGRlbHRhKQorICAgIHsKKyAgICAgICAgY29u
c29sZS5hc3NlcnQodGhpcy5fY29sdW1uTnVtYmVyICsgZGVsdGEgPj0gMCk7CisgICAgICAgIHJl
dHVybiBuZXcgV0kuU291cmNlQ29kZVBvc2l0aW9uKHRoaXMuX2xpbmVOdW1iZXIsIHRoaXMuX2Nv
bHVtbk51bWJlciArIGRlbHRhKTsKKyAgICB9CisKICAgICBlcXVhbHMocG9zaXRpb24pCiAgICAg
ewogICAgICAgICByZXR1cm4gdGhpcy5fbGluZU51bWJlciA9PT0gcG9zaXRpb24ubGluZU51bWJl
ciAmJiB0aGlzLl9jb2x1bW5OdW1iZXIgPT09IHBvc2l0aW9uLmNvbHVtbk51bWJlcjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNv
ZGVUZXh0RWRpdG9yLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvU291cmNlQ29kZVRleHRFZGl0b3IuanMKaW5kZXggN2MxYWQ3YmRmZWFkMTgyYTFhZTkzYjQ3
YWM1OGFjZTlhNmIyYTRiNi4uNzBhNjBhOTRjMzEyNmY5NWNlYTFkZTY2NTA4ZTUxNjI3ZjU4YjQw
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
U291cmNlQ29kZVRleHRFZGl0b3IuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvU291cmNlQ29kZVRleHRFZGl0b3IuanMKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTQxMSwyNSArMTQx
MSwzOCBAQCBXSS5Tb3VyY2VDb2RlVGV4dEVkaXRvciA9IGNsYXNzIFNvdXJjZUNvZGVUZXh0RWRp
dG9yIGV4dGVuZHMgV0kuVGV4dEVkaXRvcgogICAgICAgICB0aGlzLl9yZWluc2VydEFsbFRocmVh
ZEluZGljYXRvcnMoKTsKICAgICB9CiAKLSAgICB0ZXh0RWRpdG9yRXhlY3V0aW9uSGlnaGxpZ2h0
UmFuZ2Uob2Zmc2V0LCBwb3NpdGlvbiwgY2hhcmFjdGVyQXRPZmZzZXQsIGNhbGxiYWNrKQorICAg
IHRleHRFZGl0b3JFeGVjdXRpb25IaWdobGlnaHRSYW5nZShjdXJyZW50UG9zaXRpb24sIGNhbGxi
YWNrKQogICAgIHsKKyAgICAgICAgbGV0IHBvc2l0aW9uID0gdGhpcy5jdXJyZW50UG9zaXRpb25U
b09yaWdpbmFsUG9zaXRpb24oY3VycmVudFBvc2l0aW9uKTsKICAgICAgICAgbGV0IHNjcmlwdCA9
IHRoaXMuX2dldEFzc29jaWF0ZWRTY3JpcHQocG9zaXRpb24pOwogICAgICAgICBpZiAoIXNjcmlw
dCkgewogICAgICAgICAgICAgY2FsbGJhY2sobnVsbCk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIAotICAgICAgICAvLyBJZiB0aGlzIGlzIGFuIGlubGluZSBzY3JpcHQsIHRoZW4g
Y29udmVydCB0byBvZmZzZXQgd2l0aGluIHRoZSBpbmxpbmUgc2NyaXB0LgotICAgICAgICBsZXQg
YWRqdXN0bWVudCA9IHNjcmlwdC5yYW5nZS5zdGFydE9mZnNldCB8fCAwOwotICAgICAgICBvZmZz
ZXQgPSBvZmZzZXQgLSBhZGp1c3RtZW50OworICAgICAgICBsZXQge3N0YXJ0TGluZSwgc3RhcnRD
b2x1bW59ID0gc2NyaXB0LnJhbmdlOworCisgICAgICAgIGZ1bmN0aW9uIHRvSW5saW5lU2NyaXB0
UG9zaXRpb24ocG9zaXRpb24pIHsKKyAgICAgICAgICAgIGxldCBjb2x1bW5OdW1iZXIgPSBwb3Np
dGlvbi5saW5lTnVtYmVyID09PSBzdGFydExpbmUgPyBwb3NpdGlvbi5jb2x1bW5OdW1iZXIgLSBz
dGFydENvbHVtbiA6IHBvc2l0aW9uLmNvbHVtbk51bWJlcjsKKyAgICAgICAgICAgIHJldHVybiBu
ZXcgV0kuU291cmNlQ29kZVBvc2l0aW9uKHBvc2l0aW9uLmxpbmVOdW1iZXIgLSBzdGFydExpbmUs
IGNvbHVtbk51bWJlcik7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBmcm9tSW5saW5l
U2NyaXB0UG9zaXRpb24ocG9zaXRpb24pIHsKKyAgICAgICAgICAgIGxldCBjb2x1bW5OdW1iZXIg
PSBwb3NpdGlvbi5saW5lTnVtYmVyID8gcG9zaXRpb24uY29sdW1uTnVtYmVyIDogY29sdW1uTnVt
YmVyICsgc3RhcnRDb2x1bW47CisgICAgICAgICAgICByZXR1cm4gbmV3IFdJLlNvdXJjZUNvZGVQ
b3NpdGlvbihwb3NpdGlvbi5saW5lTnVtYmVyICsgc3RhcnRMaW5lLCBjb2x1bW5OdW1iZXIpOwor
ICAgICAgICB9CiAKICAgICAgICAgLy8gV2hlbiByZXR1cm5pbmcgb2Zmc2V0cywgY29udmVydCB0
byBvZmZzZXRzIHdpdGhpbiB0aGUgU291cmNlQ29kZSBiZWluZyB2aWV3ZWQuCi0gICAgICAgIGZ1
bmN0aW9uIGNvbnZlcnRSYW5nZU9mZnNldHNUb1NvdXJjZUNvZGVPZmZzZXRzKHJhbmdlKSB7Ci0g
ICAgICAgICAgICByZXR1cm4gcmFuZ2UubWFwKChvZmZzZXQpID0+IG9mZnNldCArIGFkanVzdG1l
bnQpOworICAgICAgICBsZXQgaGlnaGxpZ2h0U291cmNlQ29kZVJhbmdlID0gKHN0YXJ0UG9zaXRp
b24sIGVuZFBvc2l0aW9uKSA9PiB7CisgICAgICAgICAgICBzdGFydFBvc2l0aW9uID0gZnJvbUlu
bGluZVNjcmlwdFBvc2l0aW9uKHN0YXJ0UG9zaXRpb24pLnRvQ29kZU1pcnJvcigpOworICAgICAg
ICAgICAgZW5kUG9zaXRpb24gPSBmcm9tSW5saW5lU2NyaXB0UG9zaXRpb24oZW5kUG9zaXRpb24p
LnRvQ29kZU1pcnJvcigpOworICAgICAgICAgICAgY2FsbGJhY2soe3N0YXJ0UG9zaXRpb24sIGVu
ZFBvc2l0aW9ufSk7CiAgICAgICAgIH0KIAogICAgICAgICBzY3JpcHQucmVxdWVzdFNjcmlwdFN5
bnRheFRyZWUoKHN5bnRheFRyZWUpID0+IHsKLSAgICAgICAgICAgIGxldCBub2RlcyA9IHN5bnRh
eFRyZWUuY29udGFpbmVyc09mT2Zmc2V0KG9mZnNldCk7CisgICAgICAgICAgICAvLyBDb252ZXJ0
IHRvIHRoZSBwb3NpdGlvbiB3aXRoaW4gdGhlIGlubGluZSBzY3JpcHQgYmVmb3JlIHF1ZXJ5aW5n
IHRoZSBBU1QuCisgICAgICAgICAgICBwb3NpdGlvbiA9IHRvSW5saW5lU2NyaXB0UG9zaXRpb24o
cG9zaXRpb24pOworICAgICAgICAgICAgbGV0IG5vZGVzID0gc3ludGF4VHJlZS5jb250YWluZXJz
T2ZQb3NpdGlvbihwb3NpdGlvbik7CiAgICAgICAgICAgICBpZiAoIW5vZGVzLmxlbmd0aCkgewog
ICAgICAgICAgICAgICAgIGNhbGxiYWNrKG51bGwpOwogICAgICAgICAgICAgICAgIHJldHVybjsK
QEAgLTE0MzksMTggKzE0NTIsMTcgQEAgV0kuU291cmNlQ29kZVRleHRFZGl0b3IgPSBjbGFzcyBT
b3VyY2VDb2RlVGV4dEVkaXRvciBleHRlbmRzIFdJLlRleHRFZGl0b3IKICAgICAgICAgICAgIC8v
IEF2b2lkIGhpZ2hsaWdodGluZyB0aGUgZW50aXJlIHByb2dyYW0gaWYgdGhpcyBpcyB0aGUgc3Rh
cnQgb2YgdGhlIGZpcnN0IHN0YXRlbWVudC4KICAgICAgICAgICAgIC8vIFNwZWNpYWwgY2FzZSB0
aGUgYXNzaWdubWVudCBleHByZXNzaW9uIGluc2lkZSBvZiBhIGZvci4ub2YgYW5kIGZvci4uaW4g
dG8gaGlnaGxpZ2h0IGEgbGFyZ2VyIHJhbmdlLgogICAgICAgICAgICAgZm9yIChsZXQgbm9kZSBv
ZiBub2RlcykgewotICAgICAgICAgICAgICAgIGxldCBzdGFydE9mZnNldCA9IG5vZGUucmFuZ2Vb
MF07Ci0gICAgICAgICAgICAgICAgaWYgKHN0YXJ0T2Zmc2V0ID09PSBvZmZzZXQgJiYgbm9kZS50
eXBlICE9PSBXSS5TY3JpcHRTeW50YXhUcmVlLk5vZGVUeXBlLlByb2dyYW0pIHsKLSAgICAgICAg
ICAgICAgICAgICAgY2FsbGJhY2soY29udmVydFJhbmdlT2Zmc2V0c1RvU291cmNlQ29kZU9mZnNl
dHMobm9kZS5yYW5nZSkpOworICAgICAgICAgICAgICAgIGlmIChub2RlLnN0YXJ0UG9zaXRpb24u
ZXF1YWxzKHBvc2l0aW9uKSAmJiBub2RlLnR5cGUgIT09IFdJLlNjcmlwdFN5bnRheFRyZWUuTm9k
ZVR5cGUuUHJvZ3JhbSkgeworICAgICAgICAgICAgICAgICAgICBoaWdobGlnaHRTb3VyY2VDb2Rl
UmFuZ2Uobm9kZS5zdGFydFBvc2l0aW9uLCBub2RlLmVuZFBvc2l0aW9uKTsKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAo
bm9kZS50eXBlID09PSBXSS5TY3JpcHRTeW50YXhUcmVlLk5vZGVUeXBlLkZvckluU3RhdGVtZW50
IHx8IG5vZGUudHlwZSA9PT0gV0kuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5Gb3JPZlN0YXRl
bWVudCkgewotICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS5sZWZ0LnJhbmdlWzBdID09PSBv
ZmZzZXQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKGNvbnZlcnRSYW5nZU9m
ZnNldHNUb1NvdXJjZUNvZGVPZmZzZXRzKFtub2RlLmxlZnQucmFuZ2VbMF0sIG5vZGUucmlnaHQu
cmFuZ2VbMV1dKSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLmxlZnQuc3RhcnRQb3Np
dGlvbi5lcXVhbHMocG9zaXRpb24pKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBoaWdobGln
aHRTb3VyY2VDb2RlUmFuZ2Uobm9kZS5sZWZ0LnN0YXJ0UG9zaXRpb24sIG5vZGUucmlnaHQuZW5k
UG9zaXRpb24pOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChzdGFydE9m
ZnNldCA+IG9mZnNldCkKKyAgICAgICAgICAgICAgICBpZiAobm9kZS5zdGFydFBvc2l0aW9uLmlz
QWZ0ZXIocG9zaXRpb24pKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IH0KIApAQCAtMTQ1OCwxNiArMTQ3MCwxNCBAQCBXSS5Tb3VyY2VDb2RlVGV4dEVkaXRvciA9IGNs
YXNzIFNvdXJjZUNvZGVUZXh0RWRpdG9yIGV4dGVuZHMgV0kuVGV4dEVkaXRvcgogICAgICAgICAg
ICAgLy8gV2UgY2hlY2sgdGhpcyBhZnRlciBlbnN1cmluZyBub3RoaW5nIHN0YXJ0cyB3aXRoIHRo
aXMgb2Zmc2V0LAogICAgICAgICAgICAgLy8gYXMgdGhhdCB3b3VsZCBiZSBtb3JlIGltcG9ydGFu
dC4KICAgICAgICAgICAgIGZvciAobGV0IG5vZGUgb2Ygbm9kZXMpIHsKLSAgICAgICAgICAgICAg
ICBsZXQgc3RhcnRPZmZzZXQgPSBub2RlLnJhbmdlWzBdOwotICAgICAgICAgICAgICAgIGxldCBl
bmRPZmZzZXQgPSBub2RlLnJhbmdlWzFdOwotICAgICAgICAgICAgICAgIGlmIChlbmRPZmZzZXQg
PT09IG9mZnNldCkgeworICAgICAgICAgICAgICAgIGlmIChub2RlLmVuZFBvc2l0aW9uLmVxdWFs
cyhwb3NpdGlvbikpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUudHlwZSA9PT0gV0ku
U2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5CbG9ja1N0YXRlbWVudCkgewogICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gQ2xvc2luZyBicmFjZSBvZiBhIGJsb2NrLCBvbmx5IGhpZ2hsaWdodCB0
aGUgY2xvc2luZyBicmFjZSBjaGFyYWN0ZXIuCi0gICAgICAgICAgICAgICAgICAgICAgICBjYWxs
YmFjayhjb252ZXJ0UmFuZ2VPZmZzZXRzVG9Tb3VyY2VDb2RlT2Zmc2V0cyhbb2Zmc2V0IC0gMSwg
b2Zmc2V0XSkpOworICAgICAgICAgICAgICAgICAgICAgICAgaGlnaGxpZ2h0U291cmNlQ29kZVJh
bmdlKHBvc2l0aW9uLm9mZnNldENvbHVtbigtMSksIHBvc2l0aW9uKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICBpZiAoc3RhcnRPZmZzZXQgPiBvZmZzZXQpCisgICAgICAgICAg
ICAgICAgaWYgKG5vZGUuc3RhcnRQb3NpdGlvbi5pc0FmdGVyKHBvc2l0aW9uKSkKICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKQEAgLTE0NzksNyArMTQ4OSw4IEBA
IFdJLlNvdXJjZUNvZGVUZXh0RWRpdG9yID0gY2xhc3MgU291cmNlQ29kZVRleHRFZGl0b3IgZXh0
ZW5kcyBXSS5UZXh0RWRpdG9yCiAgICAgICAgICAgICAgICAgcmV0dXJuIGFMZW5ndGggLSBiTGVu
Z3RoOwogICAgICAgICAgICAgfSk7CiAKLSAgICAgICAgICAgIGxldCBjaGFyYWN0ZXJBdE9mZnNl
dElzRG90T3JCcmFja2V0ID0gY2hhcmFjdGVyQXRPZmZzZXQgPT09ICIuIiB8fCBjaGFyYWN0ZXJB
dE9mZnNldCA9PT0gIlsiOworICAgICAgICAgICAgbGV0IGNoYXJhY3RlckF0UG9zaXRpb24gPSB0
aGlzLmdldFRleHRJblJhbmdlKGN1cnJlbnRQb3NpdGlvbiwge2xpbmU6IGN1cnJlbnRQb3NpdGlv
bi5saW5lLCBjaDogY3VycmVudFBvc2l0aW9uLmNoICsgMX0pOworICAgICAgICAgICAgbGV0IGNo
YXJhY3RlckF0UG9zaXRpb25Jc0RvdE9yQnJhY2tldCA9IGNoYXJhY3RlckF0UG9zaXRpb24gPT09
ICIuIiB8fCBjaGFyYWN0ZXJBdFBvc2l0aW9uID09PSAiWyI7CiAKICAgICAgICAgICAgIGZvciAo
bGV0IGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgICAgICBsZXQg
bm9kZSA9IG5vZGVzW2ldOwpAQCAtMTQ4OCw3ICsxNDk5LDcgQEAgV0kuU291cmNlQ29kZVRleHRF
ZGl0b3IgPSBjbGFzcyBTb3VyY2VDb2RlVGV4dEVkaXRvciBleHRlbmRzIFdJLlRleHRFZGl0b3IK
ICAgICAgICAgICAgICAgICBpZiAobm9kZS50eXBlID09PSBXSS5TY3JpcHRTeW50YXhUcmVlLk5v
ZGVUeXBlLkNhbGxFeHByZXNzaW9uCiAgICAgICAgICAgICAgICAgICAgIHx8IG5vZGUudHlwZSA9
PT0gV0kuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5OZXdFeHByZXNzaW9uCiAgICAgICAgICAg
ICAgICAgICAgIHx8IG5vZGUudHlwZSA9PT0gV0kuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5U
aHJvd1N0YXRlbWVudCkgewotICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhjb252ZXJ0UmFu
Z2VPZmZzZXRzVG9Tb3VyY2VDb2RlT2Zmc2V0cyhub2RlLnJhbmdlKSk7CisgICAgICAgICAgICAg
ICAgICAgIGhpZ2hsaWdodFNvdXJjZUNvZGVSYW5nZShub2RlLnN0YXJ0UG9zaXRpb24sIG5vZGUu
ZW5kUG9zaXRpb24pOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAg
ICAgfQogCkBAIC0xNTA3LDI0ICsxNTE4LDI0IEBAIFdJLlNvdXJjZUNvZGVUZXh0RWRpdG9yID0g
Y2xhc3MgU291cmNlQ29kZVRleHRFZGl0b3IgZXh0ZW5kcyBXSS5UZXh0RWRpdG9yCiAgICAgICAg
ICAgICAgICAgLy8gICAgIGZvb1sieCJdKlsieSJdWyJ6Il0gPT4gaW5zaWRlIHkgbG9va2luZyBh
dCBwYXJlbnQgY2FsbCBmcmFtZSA9PiB8Zm9vWyJ4Il1bInkiXXxbInoiXQogICAgICAgICAgICAg
ICAgIC8vCiAgICAgICAgICAgICAgICAgaWYgKG5vZGUudHlwZSA9PT0gV0kuU2NyaXB0U3ludGF4
VHJlZS5Ob2RlVHlwZS5UaGlzRXhwcmVzc2lvbgotICAgICAgICAgICAgICAgICAgICB8fCAoY2hh
cmFjdGVyQXRPZmZzZXRJc0RvdE9yQnJhY2tldCAmJiAobm9kZS50eXBlID09PSBXSS5TY3JpcHRT
eW50YXhUcmVlLk5vZGVUeXBlLklkZW50aWZpZXIgfHwgbm9kZS50eXBlID09PSBXSS5TY3JpcHRT
eW50YXhUcmVlLk5vZGVUeXBlLk1lbWJlckV4cHJlc3Npb24pKSkgeworICAgICAgICAgICAgICAg
ICAgICB8fCAoY2hhcmFjdGVyQXRQb3NpdGlvbklzRG90T3JCcmFja2V0ICYmIChub2RlLnR5cGUg
PT09IFdJLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuSWRlbnRpZmllciB8fCBub2RlLnR5cGUg
PT09IFdJLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuTWVtYmVyRXhwcmVzc2lvbikpKSB7CiAg
ICAgICAgICAgICAgICAgICAgIGxldCBtZW1iZXJFeHByZXNzaW9uTm9kZSA9IG51bGw7CiAgICAg
ICAgICAgICAgICAgICAgIGZvciAobGV0IGogPSBpICsgMTsgaiA8IG5vZGVzLmxlbmd0aDsgKytq
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbmV4dE5vZGUgPSBub2Rlc1tqXTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChuZXh0Tm9kZS50eXBlID09PSBXSS5TY3JpcHRTeW50
YXhUcmVlLk5vZGVUeXBlLk1lbWJlckV4cHJlc3Npb24pIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtZW1iZXJFeHByZXNzaW9uTm9kZSA9IG5leHROb2RlOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChvZmZzZXQgPT09IG1lbWJlckV4cHJlc3Npb25Ob2RlLnJhbmdlWzFd
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwb3NpdGlvbi5lcXVhbHMobWVtYmVy
RXhwcmVzc2lvbk5vZGUuZW5kUG9zaXRpb24pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAg
ICAgICAgaWYgKG1lbWJlckV4cHJlc3Npb25Ob2RlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBjYWxsYmFjayhjb252ZXJ0UmFuZ2VPZmZzZXRzVG9Tb3VyY2VDb2RlT2Zmc2V0cyhtZW1iZXJF
eHByZXNzaW9uTm9kZS5yYW5nZSkpOworICAgICAgICAgICAgICAgICAgICAgICAgaGlnaGxpZ2h0
U291cmNlQ29kZVJhbmdlKG1lbWJlckV4cHJlc3Npb25Ob2RlLnN0YXJ0UG9zaXRpb24sIG1lbWJl
ckV4cHJlc3Npb25Ob2RlLmVuZFBvc2l0aW9uKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgICAgIGNhbGxi
YWNrKGNvbnZlcnRSYW5nZU9mZnNldHNUb1NvdXJjZUNvZGVPZmZzZXRzKG5vZGUucmFuZ2UpKTsK
KyAgICAgICAgICAgICAgICAgICAgaGlnaGxpZ2h0U291cmNlQ29kZVJhbmdlKG5vZGUuc3RhcnRQ
b3NpdGlvbiwgbm9kZS5lbmRQb3NpdGlvbik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UZXh0RWRpdG9yLmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGV4dEVkaXRvci5qcwppbmRleCA2ZTVl
MjYzNDEzNDVkNjkwZTRmNDEwNDk5MmVjMzIxMmU1NjQ3MWE3Li5mMjRlOGFmODJhOWZhZWYyNjdk
OGU5MmJiNmYxMGJjZmE4YTAwMGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9UZXh0RWRpdG9yLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RleHRFZGl0b3IuanMKQEAgLTEzMjQsMTIgKzEzMjQs
OCBAQCBXSS5UZXh0RWRpdG9yID0gY2xhc3MgVGV4dEVkaXRvciBleHRlbmRzIFdJLlZpZXcKICAg
ICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBsZXQgY3VycmVudFBvc2l0aW9uID0ge2xpbmU6
IHRoaXMuX2V4ZWN1dGlvbkxpbmVOdW1iZXIsIGNoOiB0aGlzLl9leGVjdXRpb25Db2x1bW5OdW1i
ZXJ9OwotICAgICAgICBsZXQgb3JpZ2luYWxPZmZzZXQgPSB0aGlzLmN1cnJlbnRQb3NpdGlvblRv
T3JpZ2luYWxPZmZzZXQoY3VycmVudFBvc2l0aW9uKTsKLSAgICAgICAgbGV0IG9yaWdpbmFsQ29k
ZU1pcnJvclBvc2l0aW9uID0gdGhpcy5jdXJyZW50UG9zaXRpb25Ub09yaWdpbmFsUG9zaXRpb24o
Y3VycmVudFBvc2l0aW9uKTsKLSAgICAgICAgbGV0IG9yaWdpbmFsUG9zaXRpb24gPSBuZXcgV0ku
U291cmNlQ29kZVBvc2l0aW9uKG9yaWdpbmFsQ29kZU1pcnJvclBvc2l0aW9uLmxpbmUsIG9yaWdp
bmFsQ29kZU1pcnJvclBvc2l0aW9uLmNoKTsKLSAgICAgICAgbGV0IGNoYXJhY3RlckF0T2Zmc2V0
ID0gdGhpcy5fY29kZU1pcnJvci5nZXRSYW5nZShjdXJyZW50UG9zaXRpb24sIHtsaW5lOiB0aGlz
Ll9leGVjdXRpb25MaW5lTnVtYmVyLCBjaDogdGhpcy5fZXhlY3V0aW9uQ29sdW1uTnVtYmVyICsg
MX0pOwogCi0gICAgICAgIHRoaXMuX2RlbGVnYXRlLnRleHRFZGl0b3JFeGVjdXRpb25IaWdobGln
aHRSYW5nZShvcmlnaW5hbE9mZnNldCwgb3JpZ2luYWxQb3NpdGlvbiwgY2hhcmFjdGVyQXRPZmZz
ZXQsIChyYW5nZSkgPT4geworICAgICAgICB0aGlzLl9kZWxlZ2F0ZS50ZXh0RWRpdG9yRXhlY3V0
aW9uSGlnaGxpZ2h0UmFuZ2UoY3VycmVudFBvc2l0aW9uLCAocmFuZ2UpID0+IHsKICAgICAgICAg
ICAgIGxldCBzdGFydCwgZW5kOwogICAgICAgICAgICAgaWYgKCFyYW5nZSkgewogICAgICAgICAg
ICAgICAgIC8vIEhpZ2hsaWdodCB0aGUgcmVzdCBvZiB0aGUgbGluZS4KQEAgLTEzMzcsOCArMTMz
Myw4IEBAIFdJLlRleHRFZGl0b3IgPSBjbGFzcyBUZXh0RWRpdG9yIGV4dGVuZHMgV0kuVmlldwog
ICAgICAgICAgICAgICAgIGVuZCA9IHtsaW5lOiB0aGlzLl9leGVjdXRpb25MaW5lTnVtYmVyfTsK
ICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgLy8gSGlnaGxpZ2h0IHRoZSBy
YW5nZS4KLSAgICAgICAgICAgICAgICBzdGFydCA9IHRoaXMub3JpZ2luYWxPZmZzZXRUb0N1cnJl
bnRQb3NpdGlvbihyYW5nZVswXSk7Ci0gICAgICAgICAgICAgICAgZW5kID0gdGhpcy5vcmlnaW5h
bE9mZnNldFRvQ3VycmVudFBvc2l0aW9uKHJhbmdlWzFdKTsKKyAgICAgICAgICAgICAgICBzdGFy
dCA9IHJhbmdlLnN0YXJ0UG9zaXRpb247CisgICAgICAgICAgICAgICAgZW5kID0gcmFuZ2UuZW5k
UG9zaXRpb247CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIC8vIEVuc3VyZSB0aGUgbWFy
a2VyIGlzIGNsZWFyZWQgaW4gY2FzZSB0aGVyZSB3ZXJlIG11bHRpcGxlIHVwZGF0ZXMgdmVyeSBx
dWlja2x5Lgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>344950</attachid>
            <date>2018-07-13 09:18:29 -0700</date>
            <delta_ts>2018-07-13 14:53:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-187532-20180713091828.patch</filename>
            <type>text/plain</type>
            <size>15335</size>
            <attacher name="Matt Baker">mattbaker</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMzNzkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA3
MGFmODBmZTAxMzI1YWI4MmRkYjU2ZTk2MDlhYThjZTE4MGNjNjAzLi44NTQwNDhjNjQ4OTIwNzcy
MWJmZGU0NWFjMDYyNmE1OGY5NDJiMTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNiBAQAorMjAxOC0wNy0xMyAgTWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogRXhlY3V0aW9uIGhpZ2hsaWdodGluZyBpbiB0aGUg
ZnJvbnRlbmQgc2hvdWxkIGJlIGxpbmUvY29sdW1uLWJhc2VkCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODc1MzIKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzQyMDM1NTgwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFNvdXJjZSBjb2RlIG9mZnNldHMgZnJvbSBFc3ByaW1hIHNob3VsZCBub3QgYmUgdXNl
ZCB0byBjYWxjdWxhdGUgcmFuZ2VzCisgICAgICAgIGluIENvZGVNaXJyb3IgZm9yIGV4cHJlc3Np
b24gaGlnaGxpZ2h0aW5nLgorCisgICAgICAgIFRoaXMgYWxzbyBmaXhlcyBhIGxvbmcgc3RhbmRp
bmcgYnVnIHdoZW4gYWRqdXN0aW5nIGZvciB0aGUgc3RhcnRpbmcKKyAgICAgICAgcG9zaXRpb24g
b2YgYW4gaW5saW5lIHNjcmlwdC4gUHJldmlvdXNseSB0aGUgc3RhcnQgb2Zmc2V0IGZyb20gdGhl
IHNjcmlwdAorICAgICAgICBUZXh0UmFuZ2Ugd2FzIHVzZWQgZm9yIHRoaXMgcHVycG9zZSwgYnV0
IHRoZSB2YWx1ZSBpcyBvZnRlbiBpbmNvcnJlY3QgKHNlZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg3NTMyI2M1KS4gQnkgdXNpbmcgdGhlIHN0YXJ0
aW5nCisgICAgICAgIGxpbmUvY29sdW1uIGluc3RlYWQsIHdlIGF2b2lkIHRoZSBwcm9ibGVtLgor
CisgICAgICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMvU2NyaXB0U3ludGF4VHJlZS5qczoKKyAg
ICAgICAgKFdJLlNjcmlwdFN5bnRheFRyZWUucHJvdG90eXBlLmNvbnRhaW5lcnNPZlBvc2l0aW9u
KToKKyAgICAgICAgKFdJLlNjcmlwdFN5bnRheFRyZWUucHJvdG90eXBlLmNvbnRhaW5lcnNPZk9m
ZnNldCk6IERlbGV0ZWQuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9Tb3VyY2VD
b2RlUG9zaXRpb24uanM6CisgICAgICAgIChXSS5Tb3VyY2VDb2RlUG9zaXRpb24ucHJvdG90eXBl
Lm9mZnNldENvbHVtbik6CisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNv
ZGVUZXh0RWRpdG9yLmpzOgorICAgICAgICAoV0kuU291cmNlQ29kZVRleHRFZGl0b3IucHJvdG90
eXBlLnRleHRFZGl0b3JFeGVjdXRpb25IaWdobGlnaHRSYW5nZS50b0lubGluZVNjcmlwdFBvc2l0
aW9uKToKKyAgICAgICAgKFdJLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZS50ZXh0RWRp
dG9yRXhlY3V0aW9uSGlnaGxpZ2h0UmFuZ2UuZnJvbUlubGluZVNjcmlwdFBvc2l0aW9uKToKKyAg
ICAgICAgKFdJLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZS50ZXh0RWRpdG9yRXhlY3V0
aW9uSGlnaGxpZ2h0UmFuZ2UpOgorICAgICAgICAoV0kuU291cmNlQ29kZVRleHRFZGl0b3IucHJv
dG90eXBlLnRleHRFZGl0b3JFeGVjdXRpb25IaWdobGlnaHRSYW5nZS5jb252ZXJ0UmFuZ2VPZmZz
ZXRzVG9Tb3VyY2VDb2RlT2Zmc2V0cyk6IERlbGV0ZWQuCisKKyAgICAgICAgKiBVc2VySW50ZXJm
YWNlL1ZpZXdzL1RleHRFZGl0b3IuanM6CisgICAgICAgIChXSS5UZXh0RWRpdG9yLnByb3RvdHlw
ZS5fdXBkYXRlRXhlY3V0aW9uUmFuZ2VIaWdobGlnaHQpOgorCiAyMDE4LTA3LTEyICBNYXR0IEJh
a2VyICA8bWF0dGJha2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBUeXBl
IHRva2VuIHBvc2l0aW9uaW5nIHNob3VsZCB1c2UgbGluZS9jb2x1bW4gbG9jYXRpb25zIGZyb20g
RXNwcmltYSBpbnN0ZWFkIG9mIG9mZnNldHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9TY3JpcHRTeW50YXhUcmVlLmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1NjcmlwdFN5bnRheFRyZWUuanMKaW5k
ZXggMjYxMjhjOWE2MDgxYjk1YmRjZWE1YTUzMzE3ZTQ3ZmE4YzgxZGYzZS4uOGI3N2MzYTc2MjQ5
MmUwOWQyMWIxNjNmMDAzZTg1ZWQ3MGI2ZDViNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1NjcmlwdFN5bnRheFRyZWUuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1NjcmlwdFN5bnRheFRyZWUu
anMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtNzksMjIgKzc5LDIwIEBAIFdJLlNjcmlwdFN5bnRheFRyZWUgPSBjbGFzcyBTY3Jp
cHRTeW50YXhUcmVlCiAgICAgICAgIHJldHVybiBub2RlczsKICAgICB9CiAKLSAgICBjb250YWlu
ZXJzT2ZPZmZzZXQob2Zmc2V0KQorICAgIGNvbnRhaW5lcnNPZlBvc2l0aW9uKHBvc2l0aW9uKQog
ICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fcGFyc2VkU3VjY2Vzc2Z1bGx5KTsK
ICAgICAgICAgaWYgKCF0aGlzLl9wYXJzZWRTdWNjZXNzZnVsbHkpCiAgICAgICAgICAgICByZXR1
cm4gW107CiAKICAgICAgICAgbGV0IGFsbE5vZGVzID0gW107Ci0gICAgICAgIGNvbnN0IHN0YXJ0
ID0gMDsKLSAgICAgICAgY29uc3QgZW5kID0gMTsKIAogICAgICAgICB0aGlzLmZvckVhY2hOb2Rl
KChub2RlLCBzdGF0ZSkgPT4gewotICAgICAgICAgICAgaWYgKG5vZGUucmFuZ2VbZW5kXSA8IG9m
ZnNldCkKKyAgICAgICAgICAgIGlmIChub2RlLmVuZFBvc2l0aW9uLmlzQmVmb3JlKHBvc2l0aW9u
KSkKICAgICAgICAgICAgICAgICBzdGF0ZS5za2lwQ2hpbGROb2RlcyA9IHRydWU7Ci0gICAgICAg
ICAgICBpZiAobm9kZS5yYW5nZVtzdGFydF0gPiBvZmZzZXQpCisgICAgICAgICAgICBlbHNlIGlm
IChub2RlLnN0YXJ0UG9zaXRpb24uaXNBZnRlcihwb3NpdGlvbikpCiAgICAgICAgICAgICAgICAg
c3RhdGUuc2hvdWxkU3RvcEVhcmx5ID0gdHJ1ZTsKLSAgICAgICAgICAgIGlmIChub2RlLnJhbmdl
W3N0YXJ0XSA8PSBvZmZzZXQgJiYgbm9kZS5yYW5nZVtlbmRdID49IG9mZnNldCkKKyAgICAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgICAgICBhbGxOb2Rlcy5wdXNoKG5vZGUpOwogICAgICAgICB9
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9k
ZWxzL1NvdXJjZUNvZGVQb3NpdGlvbi5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL01vZGVscy9Tb3VyY2VDb2RlUG9zaXRpb24uanMKaW5kZXggNTViNWU3OTIwMzNmZWZl
ZGRkZjg2OTdmNjZiN2RhNzBmNWRjNzI5ZC4uMTdhMGE5ZjAwNjkxYTMyODA1ODk5MzYwNmI0YTlj
MzVkMmYxZDgyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvTW9kZWxzL1NvdXJjZUNvZGVQb3NpdGlvbi5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Nb2RlbHMvU291cmNlQ29kZVBvc2l0aW9uLmpzCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM2LDYgKzM2LDEy
IEBAIFdJLlNvdXJjZUNvZGVQb3NpdGlvbiA9IGNsYXNzIFNvdXJjZUNvZGVQb3NpdGlvbgogICAg
IGdldCBsaW5lTnVtYmVyKCkgeyByZXR1cm4gdGhpcy5fbGluZU51bWJlcjsgfQogICAgIGdldCBj
b2x1bW5OdW1iZXIoKSB7IHJldHVybiB0aGlzLl9jb2x1bW5OdW1iZXI7IH0KIAorICAgIG9mZnNl
dENvbHVtbihkZWx0YSkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2NvbHVt
bk51bWJlciArIGRlbHRhID49IDApOworICAgICAgICByZXR1cm4gbmV3IFdJLlNvdXJjZUNvZGVQ
b3NpdGlvbih0aGlzLl9saW5lTnVtYmVyLCB0aGlzLl9jb2x1bW5OdW1iZXIgKyBkZWx0YSk7Cisg
ICAgfQorCiAgICAgZXF1YWxzKHBvc2l0aW9uKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMu
X2xpbmVOdW1iZXIgPT09IHBvc2l0aW9uLmxpbmVOdW1iZXIgJiYgdGhpcy5fY29sdW1uTnVtYmVy
ID09PSBwb3NpdGlvbi5jb2x1bW5OdW1iZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Tb3VyY2VDb2RlVGV4dEVkaXRvci5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUZXh0RWRpdG9y
LmpzCmluZGV4IDdjMWFkN2JkZmVhZDE4MmExYWU5M2I0N2FjNThhY2U5YTZiMmE0YjYuLjM3ZDRl
NGI2MjY0MjlhYWRhZmFiMjg5NTA4MjY4YmY1MGUzOGIwODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUZXh0RWRpdG9yLmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNv
ZGVUZXh0RWRpdG9yLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTE0MTEsMjUgKzE0MTEsNDAgQEAgV0kuU291cmNlQ29kZVRl
eHRFZGl0b3IgPSBjbGFzcyBTb3VyY2VDb2RlVGV4dEVkaXRvciBleHRlbmRzIFdJLlRleHRFZGl0
b3IKICAgICAgICAgdGhpcy5fcmVpbnNlcnRBbGxUaHJlYWRJbmRpY2F0b3JzKCk7CiAgICAgfQog
Ci0gICAgdGV4dEVkaXRvckV4ZWN1dGlvbkhpZ2hsaWdodFJhbmdlKG9mZnNldCwgcG9zaXRpb24s
IGNoYXJhY3RlckF0T2Zmc2V0LCBjYWxsYmFjaykKKyAgICB0ZXh0RWRpdG9yRXhlY3V0aW9uSGln
aGxpZ2h0UmFuZ2UoY3VycmVudFBvc2l0aW9uLCBjYWxsYmFjaykKICAgICB7CisgICAgICAgIGxl
dCB7bGluZSwgY2h9ID0gdGhpcy5jdXJyZW50UG9zaXRpb25Ub09yaWdpbmFsUG9zaXRpb24oY3Vy
cmVudFBvc2l0aW9uKTsKKyAgICAgICAgbGV0IHBvc2l0aW9uID0gbmV3IFdJLlNvdXJjZUNvZGVQ
b3NpdGlvbihsaW5lLCBjaCk7CisKICAgICAgICAgbGV0IHNjcmlwdCA9IHRoaXMuX2dldEFzc29j
aWF0ZWRTY3JpcHQocG9zaXRpb24pOwogICAgICAgICBpZiAoIXNjcmlwdCkgewogICAgICAgICAg
ICAgY2FsbGJhY2sobnVsbCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAg
ICAgICAvLyBJZiB0aGlzIGlzIGFuIGlubGluZSBzY3JpcHQsIHRoZW4gY29udmVydCB0byBvZmZz
ZXQgd2l0aGluIHRoZSBpbmxpbmUgc2NyaXB0LgotICAgICAgICBsZXQgYWRqdXN0bWVudCA9IHNj
cmlwdC5yYW5nZS5zdGFydE9mZnNldCB8fCAwOwotICAgICAgICBvZmZzZXQgPSBvZmZzZXQgLSBh
ZGp1c3RtZW50OworICAgICAgICBsZXQge3N0YXJ0TGluZSwgc3RhcnRDb2x1bW59ID0gc2NyaXB0
LnJhbmdlOworCisgICAgICAgIGZ1bmN0aW9uIHRvSW5saW5lU2NyaXB0UG9zaXRpb24ocG9zaXRp
b24pIHsKKyAgICAgICAgICAgIGxldCBjb2x1bW5OdW1iZXIgPSBwb3NpdGlvbi5saW5lTnVtYmVy
ID09PSBzdGFydExpbmUgPyBwb3NpdGlvbi5jb2x1bW5OdW1iZXIgLSBzdGFydENvbHVtbiA6IHBv
c2l0aW9uLmNvbHVtbk51bWJlcjsKKyAgICAgICAgICAgIHJldHVybiBuZXcgV0kuU291cmNlQ29k
ZVBvc2l0aW9uKHBvc2l0aW9uLmxpbmVOdW1iZXIgLSBzdGFydExpbmUsIGNvbHVtbk51bWJlcik7
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBmcm9tSW5saW5lU2NyaXB0UG9zaXRpb24o
cG9zaXRpb24pIHsKKyAgICAgICAgICAgIGxldCBjb2x1bW5OdW1iZXIgPSBwb3NpdGlvbi5saW5l
TnVtYmVyID8gcG9zaXRpb24uY29sdW1uTnVtYmVyIDogcG9zaXRpb24uY29sdW1uTnVtYmVyICsg
c3RhcnRDb2x1bW47CisgICAgICAgICAgICByZXR1cm4gbmV3IFdJLlNvdXJjZUNvZGVQb3NpdGlv
bihwb3NpdGlvbi5saW5lTnVtYmVyICsgc3RhcnRMaW5lLCBjb2x1bW5OdW1iZXIpOworICAgICAg
ICB9CiAKICAgICAgICAgLy8gV2hlbiByZXR1cm5pbmcgb2Zmc2V0cywgY29udmVydCB0byBvZmZz
ZXRzIHdpdGhpbiB0aGUgU291cmNlQ29kZSBiZWluZyB2aWV3ZWQuCi0gICAgICAgIGZ1bmN0aW9u
IGNvbnZlcnRSYW5nZU9mZnNldHNUb1NvdXJjZUNvZGVPZmZzZXRzKHJhbmdlKSB7Ci0gICAgICAg
ICAgICByZXR1cm4gcmFuZ2UubWFwKChvZmZzZXQpID0+IG9mZnNldCArIGFkanVzdG1lbnQpOwor
ICAgICAgICBsZXQgaGlnaGxpZ2h0U291cmNlQ29kZVJhbmdlID0gKHN0YXJ0UG9zaXRpb24sIGVu
ZFBvc2l0aW9uKSA9PiB7CisgICAgICAgICAgICBzdGFydFBvc2l0aW9uID0gZnJvbUlubGluZVNj
cmlwdFBvc2l0aW9uKHN0YXJ0UG9zaXRpb24pLnRvQ29kZU1pcnJvcigpOworICAgICAgICAgICAg
ZW5kUG9zaXRpb24gPSBmcm9tSW5saW5lU2NyaXB0UG9zaXRpb24oZW5kUG9zaXRpb24pLnRvQ29k
ZU1pcnJvcigpOworICAgICAgICAgICAgY2FsbGJhY2soe3N0YXJ0UG9zaXRpb24sIGVuZFBvc2l0
aW9ufSk7CiAgICAgICAgIH0KIAogICAgICAgICBzY3JpcHQucmVxdWVzdFNjcmlwdFN5bnRheFRy
ZWUoKHN5bnRheFRyZWUpID0+IHsKLSAgICAgICAgICAgIGxldCBub2RlcyA9IHN5bnRheFRyZWUu
Y29udGFpbmVyc09mT2Zmc2V0KG9mZnNldCk7CisgICAgICAgICAgICAvLyBDb252ZXJ0IHRvIHRo
ZSBwb3NpdGlvbiB3aXRoaW4gdGhlIGlubGluZSBzY3JpcHQgYmVmb3JlIHF1ZXJ5aW5nIHRoZSBB
U1QuCisgICAgICAgICAgICBwb3NpdGlvbiA9IHRvSW5saW5lU2NyaXB0UG9zaXRpb24ocG9zaXRp
b24pOworICAgICAgICAgICAgbGV0IG5vZGVzID0gc3ludGF4VHJlZS5jb250YWluZXJzT2ZQb3Np
dGlvbihwb3NpdGlvbik7CiAgICAgICAgICAgICBpZiAoIW5vZGVzLmxlbmd0aCkgewogICAgICAg
ICAgICAgICAgIGNhbGxiYWNrKG51bGwpOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTE0
MzksMTggKzE0NTQsMTcgQEAgV0kuU291cmNlQ29kZVRleHRFZGl0b3IgPSBjbGFzcyBTb3VyY2VD
b2RlVGV4dEVkaXRvciBleHRlbmRzIFdJLlRleHRFZGl0b3IKICAgICAgICAgICAgIC8vIEF2b2lk
IGhpZ2hsaWdodGluZyB0aGUgZW50aXJlIHByb2dyYW0gaWYgdGhpcyBpcyB0aGUgc3RhcnQgb2Yg
dGhlIGZpcnN0IHN0YXRlbWVudC4KICAgICAgICAgICAgIC8vIFNwZWNpYWwgY2FzZSB0aGUgYXNz
aWdubWVudCBleHByZXNzaW9uIGluc2lkZSBvZiBhIGZvci4ub2YgYW5kIGZvci4uaW4gdG8gaGln
aGxpZ2h0IGEgbGFyZ2VyIHJhbmdlLgogICAgICAgICAgICAgZm9yIChsZXQgbm9kZSBvZiBub2Rl
cykgewotICAgICAgICAgICAgICAgIGxldCBzdGFydE9mZnNldCA9IG5vZGUucmFuZ2VbMF07Ci0g
ICAgICAgICAgICAgICAgaWYgKHN0YXJ0T2Zmc2V0ID09PSBvZmZzZXQgJiYgbm9kZS50eXBlICE9
PSBXSS5TY3JpcHRTeW50YXhUcmVlLk5vZGVUeXBlLlByb2dyYW0pIHsKLSAgICAgICAgICAgICAg
ICAgICAgY2FsbGJhY2soY29udmVydFJhbmdlT2Zmc2V0c1RvU291cmNlQ29kZU9mZnNldHMobm9k
ZS5yYW5nZSkpOworICAgICAgICAgICAgICAgIGlmIChub2RlLnN0YXJ0UG9zaXRpb24uZXF1YWxz
KHBvc2l0aW9uKSAmJiBub2RlLnR5cGUgIT09IFdJLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUu
UHJvZ3JhbSkgeworICAgICAgICAgICAgICAgICAgICBoaWdobGlnaHRTb3VyY2VDb2RlUmFuZ2Uo
bm9kZS5zdGFydFBvc2l0aW9uLCBub2RlLmVuZFBvc2l0aW9uKTsKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAobm9kZS50
eXBlID09PSBXSS5TY3JpcHRTeW50YXhUcmVlLk5vZGVUeXBlLkZvckluU3RhdGVtZW50IHx8IG5v
ZGUudHlwZSA9PT0gV0kuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5Gb3JPZlN0YXRlbWVudCkg
ewotICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS5sZWZ0LnJhbmdlWzBdID09PSBvZmZzZXQp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKGNvbnZlcnRSYW5nZU9mZnNldHNU
b1NvdXJjZUNvZGVPZmZzZXRzKFtub2RlLmxlZnQucmFuZ2VbMF0sIG5vZGUucmlnaHQucmFuZ2Vb
MV1dKSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLmxlZnQuc3RhcnRQb3NpdGlvbi5l
cXVhbHMocG9zaXRpb24pKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBoaWdobGlnaHRTb3Vy
Y2VDb2RlUmFuZ2Uobm9kZS5sZWZ0LnN0YXJ0UG9zaXRpb24sIG5vZGUucmlnaHQuZW5kUG9zaXRp
b24pOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChzdGFydE9mZnNldCA+
IG9mZnNldCkKKyAgICAgICAgICAgICAgICBpZiAobm9kZS5zdGFydFBvc2l0aW9uLmlzQWZ0ZXIo
cG9zaXRpb24pKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KIApA
QCAtMTQ1OCwxNiArMTQ3MiwxNCBAQCBXSS5Tb3VyY2VDb2RlVGV4dEVkaXRvciA9IGNsYXNzIFNv
dXJjZUNvZGVUZXh0RWRpdG9yIGV4dGVuZHMgV0kuVGV4dEVkaXRvcgogICAgICAgICAgICAgLy8g
V2UgY2hlY2sgdGhpcyBhZnRlciBlbnN1cmluZyBub3RoaW5nIHN0YXJ0cyB3aXRoIHRoaXMgb2Zm
c2V0LAogICAgICAgICAgICAgLy8gYXMgdGhhdCB3b3VsZCBiZSBtb3JlIGltcG9ydGFudC4KICAg
ICAgICAgICAgIGZvciAobGV0IG5vZGUgb2Ygbm9kZXMpIHsKLSAgICAgICAgICAgICAgICBsZXQg
c3RhcnRPZmZzZXQgPSBub2RlLnJhbmdlWzBdOwotICAgICAgICAgICAgICAgIGxldCBlbmRPZmZz
ZXQgPSBub2RlLnJhbmdlWzFdOwotICAgICAgICAgICAgICAgIGlmIChlbmRPZmZzZXQgPT09IG9m
ZnNldCkgeworICAgICAgICAgICAgICAgIGlmIChub2RlLmVuZFBvc2l0aW9uLmVxdWFscyhwb3Np
dGlvbikpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUudHlwZSA9PT0gV0kuU2NyaXB0
U3ludGF4VHJlZS5Ob2RlVHlwZS5CbG9ja1N0YXRlbWVudCkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gQ2xvc2luZyBicmFjZSBvZiBhIGJsb2NrLCBvbmx5IGhpZ2hsaWdodCB0aGUgY2xv
c2luZyBicmFjZSBjaGFyYWN0ZXIuCi0gICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhj
b252ZXJ0UmFuZ2VPZmZzZXRzVG9Tb3VyY2VDb2RlT2Zmc2V0cyhbb2Zmc2V0IC0gMSwgb2Zmc2V0
XSkpOworICAgICAgICAgICAgICAgICAgICAgICAgaGlnaGxpZ2h0U291cmNlQ29kZVJhbmdlKHBv
c2l0aW9uLm9mZnNldENvbHVtbigtMSksIHBvc2l0aW9uKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICBpZiAoc3RhcnRPZmZzZXQgPiBvZmZzZXQpCisgICAgICAgICAgICAgICAg
aWYgKG5vZGUuc3RhcnRQb3NpdGlvbi5pc0FmdGVyKHBvc2l0aW9uKSkKICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKQEAgLTE0NzksNyArMTQ5MSw4IEBAIFdJLlNv
dXJjZUNvZGVUZXh0RWRpdG9yID0gY2xhc3MgU291cmNlQ29kZVRleHRFZGl0b3IgZXh0ZW5kcyBX
SS5UZXh0RWRpdG9yCiAgICAgICAgICAgICAgICAgcmV0dXJuIGFMZW5ndGggLSBiTGVuZ3RoOwog
ICAgICAgICAgICAgfSk7CiAKLSAgICAgICAgICAgIGxldCBjaGFyYWN0ZXJBdE9mZnNldElzRG90
T3JCcmFja2V0ID0gY2hhcmFjdGVyQXRPZmZzZXQgPT09ICIuIiB8fCBjaGFyYWN0ZXJBdE9mZnNl
dCA9PT0gIlsiOworICAgICAgICAgICAgbGV0IGNoYXJhY3RlckF0UG9zaXRpb24gPSB0aGlzLmdl
dFRleHRJblJhbmdlKGN1cnJlbnRQb3NpdGlvbiwge2xpbmU6IGN1cnJlbnRQb3NpdGlvbi5saW5l
LCBjaDogY3VycmVudFBvc2l0aW9uLmNoICsgMX0pOworICAgICAgICAgICAgbGV0IGNoYXJhY3Rl
ckF0UG9zaXRpb25Jc0RvdE9yQnJhY2tldCA9IGNoYXJhY3RlckF0UG9zaXRpb24gPT09ICIuIiB8
fCBjaGFyYWN0ZXJBdFBvc2l0aW9uID09PSAiWyI7CiAKICAgICAgICAgICAgIGZvciAobGV0IGkg
PSAwOyBpIDwgbm9kZXMubGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgICAgICBsZXQgbm9kZSA9
IG5vZGVzW2ldOwpAQCAtMTQ4OCw3ICsxNTAxLDcgQEAgV0kuU291cmNlQ29kZVRleHRFZGl0b3Ig
PSBjbGFzcyBTb3VyY2VDb2RlVGV4dEVkaXRvciBleHRlbmRzIFdJLlRleHRFZGl0b3IKICAgICAg
ICAgICAgICAgICBpZiAobm9kZS50eXBlID09PSBXSS5TY3JpcHRTeW50YXhUcmVlLk5vZGVUeXBl
LkNhbGxFeHByZXNzaW9uCiAgICAgICAgICAgICAgICAgICAgIHx8IG5vZGUudHlwZSA9PT0gV0ku
U2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5OZXdFeHByZXNzaW9uCiAgICAgICAgICAgICAgICAg
ICAgIHx8IG5vZGUudHlwZSA9PT0gV0kuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5UaHJvd1N0
YXRlbWVudCkgewotICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhjb252ZXJ0UmFuZ2VPZmZz
ZXRzVG9Tb3VyY2VDb2RlT2Zmc2V0cyhub2RlLnJhbmdlKSk7CisgICAgICAgICAgICAgICAgICAg
IGhpZ2hsaWdodFNvdXJjZUNvZGVSYW5nZShub2RlLnN0YXJ0UG9zaXRpb24sIG5vZGUuZW5kUG9z
aXRpb24pOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQog
CkBAIC0xNTA3LDI0ICsxNTIwLDI0IEBAIFdJLlNvdXJjZUNvZGVUZXh0RWRpdG9yID0gY2xhc3Mg
U291cmNlQ29kZVRleHRFZGl0b3IgZXh0ZW5kcyBXSS5UZXh0RWRpdG9yCiAgICAgICAgICAgICAg
ICAgLy8gICAgIGZvb1sieCJdKlsieSJdWyJ6Il0gPT4gaW5zaWRlIHkgbG9va2luZyBhdCBwYXJl
bnQgY2FsbCBmcmFtZSA9PiB8Zm9vWyJ4Il1bInkiXXxbInoiXQogICAgICAgICAgICAgICAgIC8v
CiAgICAgICAgICAgICAgICAgaWYgKG5vZGUudHlwZSA9PT0gV0kuU2NyaXB0U3ludGF4VHJlZS5O
b2RlVHlwZS5UaGlzRXhwcmVzc2lvbgotICAgICAgICAgICAgICAgICAgICB8fCAoY2hhcmFjdGVy
QXRPZmZzZXRJc0RvdE9yQnJhY2tldCAmJiAobm9kZS50eXBlID09PSBXSS5TY3JpcHRTeW50YXhU
cmVlLk5vZGVUeXBlLklkZW50aWZpZXIgfHwgbm9kZS50eXBlID09PSBXSS5TY3JpcHRTeW50YXhU
cmVlLk5vZGVUeXBlLk1lbWJlckV4cHJlc3Npb24pKSkgeworICAgICAgICAgICAgICAgICAgICB8
fCAoY2hhcmFjdGVyQXRQb3NpdGlvbklzRG90T3JCcmFja2V0ICYmIChub2RlLnR5cGUgPT09IFdJ
LlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuSWRlbnRpZmllciB8fCBub2RlLnR5cGUgPT09IFdJ
LlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuTWVtYmVyRXhwcmVzc2lvbikpKSB7CiAgICAgICAg
ICAgICAgICAgICAgIGxldCBtZW1iZXJFeHByZXNzaW9uTm9kZSA9IG51bGw7CiAgICAgICAgICAg
ICAgICAgICAgIGZvciAobGV0IGogPSBpICsgMTsgaiA8IG5vZGVzLmxlbmd0aDsgKytqKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBsZXQgbmV4dE5vZGUgPSBub2Rlc1tqXTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChuZXh0Tm9kZS50eXBlID09PSBXSS5TY3JpcHRTeW50YXhUcmVl
Lk5vZGVUeXBlLk1lbWJlckV4cHJlc3Npb24pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtZW1iZXJFeHByZXNzaW9uTm9kZSA9IG5leHROb2RlOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChvZmZzZXQgPT09IG1lbWJlckV4cHJlc3Npb25Ob2RlLnJhbmdlWzFdKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwb3NpdGlvbi5lcXVhbHMobWVtYmVyRXhwcmVz
c2lvbk5vZGUuZW5kUG9zaXRpb24pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICAgICAg
aWYgKG1lbWJlckV4cHJlc3Npb25Ob2RlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYWxs
YmFjayhjb252ZXJ0UmFuZ2VPZmZzZXRzVG9Tb3VyY2VDb2RlT2Zmc2V0cyhtZW1iZXJFeHByZXNz
aW9uTm9kZS5yYW5nZSkpOworICAgICAgICAgICAgICAgICAgICAgICAgaGlnaGxpZ2h0U291cmNl
Q29kZVJhbmdlKG1lbWJlckV4cHJlc3Npb25Ob2RlLnN0YXJ0UG9zaXRpb24sIG1lbWJlckV4cHJl
c3Npb25Ob2RlLmVuZFBvc2l0aW9uKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKGNv
bnZlcnRSYW5nZU9mZnNldHNUb1NvdXJjZUNvZGVPZmZzZXRzKG5vZGUucmFuZ2UpKTsKKyAgICAg
ICAgICAgICAgICAgICAgaGlnaGxpZ2h0U291cmNlQ29kZVJhbmdlKG5vZGUuc3RhcnRQb3NpdGlv
biwgbm9kZS5lbmRQb3NpdGlvbik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UZXh0RWRpdG9yLmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGV4dEVkaXRvci5qcwppbmRleCA2ZTVlMjYzNDEz
NDVkNjkwZTRmNDEwNDk5MmVjMzIxMmU1NjQ3MWE3Li5mMjRlOGFmODJhOWZhZWYyNjdkOGU5MmJi
NmYxMGJjZmE4YTAwMGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9UZXh0RWRpdG9yLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1RleHRFZGl0b3IuanMKQEAgLTEzMjQsMTIgKzEzMjQsOCBAQCBX
SS5UZXh0RWRpdG9yID0gY2xhc3MgVGV4dEVkaXRvciBleHRlbmRzIFdJLlZpZXcKICAgICAgICAg
ICAgIHJldHVybjsKIAogICAgICAgICBsZXQgY3VycmVudFBvc2l0aW9uID0ge2xpbmU6IHRoaXMu
X2V4ZWN1dGlvbkxpbmVOdW1iZXIsIGNoOiB0aGlzLl9leGVjdXRpb25Db2x1bW5OdW1iZXJ9Owot
ICAgICAgICBsZXQgb3JpZ2luYWxPZmZzZXQgPSB0aGlzLmN1cnJlbnRQb3NpdGlvblRvT3JpZ2lu
YWxPZmZzZXQoY3VycmVudFBvc2l0aW9uKTsKLSAgICAgICAgbGV0IG9yaWdpbmFsQ29kZU1pcnJv
clBvc2l0aW9uID0gdGhpcy5jdXJyZW50UG9zaXRpb25Ub09yaWdpbmFsUG9zaXRpb24oY3VycmVu
dFBvc2l0aW9uKTsKLSAgICAgICAgbGV0IG9yaWdpbmFsUG9zaXRpb24gPSBuZXcgV0kuU291cmNl
Q29kZVBvc2l0aW9uKG9yaWdpbmFsQ29kZU1pcnJvclBvc2l0aW9uLmxpbmUsIG9yaWdpbmFsQ29k
ZU1pcnJvclBvc2l0aW9uLmNoKTsKLSAgICAgICAgbGV0IGNoYXJhY3RlckF0T2Zmc2V0ID0gdGhp
cy5fY29kZU1pcnJvci5nZXRSYW5nZShjdXJyZW50UG9zaXRpb24sIHtsaW5lOiB0aGlzLl9leGVj
dXRpb25MaW5lTnVtYmVyLCBjaDogdGhpcy5fZXhlY3V0aW9uQ29sdW1uTnVtYmVyICsgMX0pOwog
Ci0gICAgICAgIHRoaXMuX2RlbGVnYXRlLnRleHRFZGl0b3JFeGVjdXRpb25IaWdobGlnaHRSYW5n
ZShvcmlnaW5hbE9mZnNldCwgb3JpZ2luYWxQb3NpdGlvbiwgY2hhcmFjdGVyQXRPZmZzZXQsIChy
YW5nZSkgPT4geworICAgICAgICB0aGlzLl9kZWxlZ2F0ZS50ZXh0RWRpdG9yRXhlY3V0aW9uSGln
aGxpZ2h0UmFuZ2UoY3VycmVudFBvc2l0aW9uLCAocmFuZ2UpID0+IHsKICAgICAgICAgICAgIGxl
dCBzdGFydCwgZW5kOwogICAgICAgICAgICAgaWYgKCFyYW5nZSkgewogICAgICAgICAgICAgICAg
IC8vIEhpZ2hsaWdodCB0aGUgcmVzdCBvZiB0aGUgbGluZS4KQEAgLTEzMzcsOCArMTMzMyw4IEBA
IFdJLlRleHRFZGl0b3IgPSBjbGFzcyBUZXh0RWRpdG9yIGV4dGVuZHMgV0kuVmlldwogICAgICAg
ICAgICAgICAgIGVuZCA9IHtsaW5lOiB0aGlzLl9leGVjdXRpb25MaW5lTnVtYmVyfTsKICAgICAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgLy8gSGlnaGxpZ2h0IHRoZSByYW5nZS4K
LSAgICAgICAgICAgICAgICBzdGFydCA9IHRoaXMub3JpZ2luYWxPZmZzZXRUb0N1cnJlbnRQb3Np
dGlvbihyYW5nZVswXSk7Ci0gICAgICAgICAgICAgICAgZW5kID0gdGhpcy5vcmlnaW5hbE9mZnNl
dFRvQ3VycmVudFBvc2l0aW9uKHJhbmdlWzFdKTsKKyAgICAgICAgICAgICAgICBzdGFydCA9IHJh
bmdlLnN0YXJ0UG9zaXRpb247CisgICAgICAgICAgICAgICAgZW5kID0gcmFuZ2UuZW5kUG9zaXRp
b247CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIC8vIEVuc3VyZSB0aGUgbWFya2VyIGlz
IGNsZWFyZWQgaW4gY2FzZSB0aGVyZSB3ZXJlIG11bHRpcGxlIHVwZGF0ZXMgdmVyeSBxdWlja2x5
Lgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>