<?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>54544</bug_id>
          
          <creation_ts>2011-02-16 03:47:59 -0800</creation_ts>
          <short_desc>Web Inspector: show all inlined scripts from single document in the same source frame</short_desc>
          <delta_ts>2011-02-17 04:08:46 -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 (Deprecated)</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Pavel Podivilov">podivilov</reporter>
          <assigned_to name="Pavel Podivilov">podivilov</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>351976</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-02-16 03:47:59 -0800</bug_when>
    <thetext>Web Inspector: show all inlined scripts from single document in the same source frame.

Currently when debugging synchronously executed inlined scripts each script is shown in it&apos;s own source frame (&quot;example.html:24&quot;).
We should show such scripts in the same source frame &quot;example.html&quot; with &lt;script&gt;&lt;/script&gt; framing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351977</commentid>
    <comment_count>1</comment_count>
      <attachid>82611</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-02-16 03:49:58 -0800</bug_when>
    <thetext>Created attachment 82611
Patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351985</commentid>
    <comment_count>2</comment_count>
      <attachid>82611</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-02-16 04:37:33 -0800</bug_when>
    <thetext>Comment on attachment 82611
Patch.

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

&gt; Source/WebCore/inspector/front-end/ScriptsPanel.js:264
&gt; +        var sourceName = script.sourceURL || script.sourceID;

You are passing sourceID while _recreateSourceFrame uses it for lookup in _urlToSource... These two types of ids shouldn&apos;t be mixed.

&gt; Source/WebCore/inspector/front-end/ScriptsPanel.js:531
&gt; +        var isScript = !script.lineOffset &amp;&amp; !script.columnOffset;

Will this code work correctly with JSC when columnOffset is always 0 and lineOffset may well be 0 for inline script.

&gt; Source/WebCore/inspector/front-end/ScriptsPanel.js:1080
&gt; +        var lineNumber = 0, columnNumber = 0;

Each statement should go on a separate line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>352057</commentid>
    <comment_count>3</comment_count>
      <attachid>82634</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-02-16 07:32:47 -0800</bug_when>
    <thetext>Created attachment 82634
Patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>352060</commentid>
    <comment_count>4</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-02-16 07:41:25 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 82611 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=82611&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/ScriptsPanel.js:264
&gt; &gt; +        var sourceName = script.sourceURL || script.sourceID;
&gt; 
&gt; You are passing sourceID while _recreateSourceFrame uses it for lookup in _urlToSource... These two types of ids shouldn&apos;t be mixed.
&gt; 
sourceID is used as source name for scripts without sourceURL. This is private implementation detail of ScriptsPanel, and it considerably simplifies source frames management.
Renamed _urlToSourceFrame to _sourceNameToSourceFrame to avoid confusion.

&gt; &gt; Source/WebCore/inspector/front-end/ScriptsPanel.js:531
&gt; &gt; +        var isScript = !script.lineOffset &amp;&amp; !script.columnOffset;
&gt; 
&gt; Will this code work correctly with JSC when columnOffset is always 0 and lineOffset may well be 0 for inline script.

JSC provides correct columnOffset, as ensured by inspector/debugger/debugger-scripts.html test.

&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/ScriptsPanel.js:1080
&gt; &gt; +        var lineNumber = 0, columnNumber = 0;
&gt; 
&gt; Each statement should go on a separate line.
Could you please clarify? 
The idea was to build source frame content with script tags at the same locations as in actual resource. Please check debug-inlined-scripts test expectations for example.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>352065</commentid>
    <comment_count>5</comment_count>
      <attachid>82635</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-02-16 07:47:29 -0800</bug_when>
    <thetext>Created attachment 82635
Patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>352066</commentid>
    <comment_count>6</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-02-16 07:47:57 -0800</bug_when>
    <thetext>&gt; Each statement should go on a separate line.
Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>352145</commentid>
    <comment_count>7</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2011-02-16 09:50:00 -0800</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=82635&amp;action=review

&gt; Source/WebCore/inspector/front-end/ScriptsPanel.js:429
&gt; +        this._sourceNameToFilesSelectOption = {};

Why you create another mapping from sourceName to something instead of a single map with complex objects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>352200</commentid>
    <comment_count>8</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-02-16 11:08:48 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=82635&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/ScriptsPanel.js:429
&gt; &gt; +        this._sourceNameToFilesSelectOption = {};
&gt; 
&gt; Why you create another mapping from sourceName to something instead of a single map with complex objects.

I don&apos;t see any benefits in merging these mappings together. They are never modified together, so the code is cleaner when mappings are separated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>352748</commentid>
    <comment_count>9</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-02-17 04:08:46 -0800</bug_when>
    <thetext>Committed r78808: &lt;http://trac.webkit.org/changeset/78808&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82611</attachid>
            <date>2011-02-16 03:49:58 -0800</date>
            <delta_ts>2011-02-16 07:32:47 -0800</delta_ts>
            <desc>Patch.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>16652</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhMGViZmQyLi5jY2ZlNTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcg
QEAKKzIwMTEtMDItMTYgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIElu
c3BlY3Rvcjogc2hvdyBhbGwgaW5saW5lZCBzY3JpcHRzIGZyb20gc2luZ2xlIGRvY3VtZW50IGlu
IHRoZSBzYW1lIHNvdXJjZSBmcmFtZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTU0NTQ0CisKKyAgICAgICAgQ3VycmVudGx5IHdoZW4gZGVidWdnaW5n
IHN5bmNocm9ub3VzbHkgZXhlY3V0ZWQgaW5saW5lZCBzY3JpcHRzIGVhY2ggc2NyaXB0IGlzIHNo
b3duIGluIGl0J3Mgb3duIHNvdXJjZSBmcmFtZSAoImV4YW1wbGUuaHRtbDoyNCIpLgorICAgICAg
ICBXZSBzaG91bGQgc2hvdyBzdWNoIHNjcmlwdHMgaW4gdGhlIHNhbWUgc291cmNlIGZyYW1lICJl
eGFtcGxlLmh0bWwiIHdpdGggPHNjcmlwdD48L3NjcmlwdD4gZnJhbWluZy4KKworICAgICAgICAq
IGluc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUuX3NjcmlwdFNvdXJjZUNoYW5nZWQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUuX2FkZFNjcmlwdCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZS5fcmVzb3VyY2VMb2FkaW5n
RmluaXNoZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUu
cmVzZXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUuX3Nv
dXJjZUZyYW1lRm9yUmVzb3VyY2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5l
bC5wcm90b3R5cGUuX3NvdXJjZUZyYW1lRm9yU2NyaXB0KToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5TY3JpcHRzUGFuZWwucHJvdG90eXBlLl9yZWNyZWF0ZVNvdXJjZUZyYW1lKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlLl9zaG93U2NyaXB0T3JSZXNvdXJj
ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZS5fYWRkU2Ny
aXB0VG9GaWxlc01lbnUub3B0aW9uQ29tcGFyZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2Ny
aXB0c1BhbmVsLnByb3RvdHlwZS5fYWRkU2NyaXB0VG9GaWxlc01lbnUpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlNvdXJjZUZyYW1lQ29udGVudFByb3ZpZGVyRm9yU2NyaXB0LnByb3RvdHlwZS5y
ZXF1ZXN0Q29udGVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlRnJhbWVDb250ZW50
UHJvdmlkZXJGb3JTY3JpcHQucHJvdG90eXBlLl9idWlsZFNvdXJjZSk6CisKIDIwMTEtMDItMTUg
IEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IERhcmluIEZpc2hlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvU2NyaXB0c1BhbmVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9TY3JpcHRzUGFuZWwuanMKaW5kZXggM2IyNGQ0NS4uNzZlZmQ4YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMKQEAgLTI1NSwy
MyArMjU1LDE0IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogICAg
ICAgICB2YXIgc291cmNlSUQgPSBldmVudC5kYXRhLnNvdXJjZUlEOwogICAgICAgICB2YXIgb2xk
U291cmNlID0gZXZlbnQuZGF0YS5vbGRTb3VyY2U7CiAKLSAgICAgICAgdmFyIG9sZFZpZXcsIG5l
d1ZpZXc7CiAgICAgICAgIHZhciBzY3JpcHQgPSBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5z
Y3JpcHRGb3JTb3VyY2VJRChzb3VyY2VJRCk7CiAgICAgICAgIGlmIChzY3JpcHQucmVzb3VyY2Up
IHsKLSAgICAgICAgICAgIG9sZFZpZXcgPSB0aGlzLl91cmxUb1NvdXJjZUZyYW1lW3NjcmlwdC5y
ZXNvdXJjZS51cmxdOwotICAgICAgICAgICAgZGVsZXRlIHRoaXMuX3VybFRvU291cmNlRnJhbWVb
c2NyaXB0LnJlc291cmNlLnVybF07Ci0gICAgICAgICAgICBuZXdWaWV3ID0gdGhpcy5fc291cmNl
RnJhbWVGb3JSZXNvdXJjZShzY3JpcHQucmVzb3VyY2UpOwogICAgICAgICAgICAgdmFyIHJldmVy
dEhhbmRsZSA9IFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLmVkaXRTY3JpcHRTb3VyY2UuYmlu
ZChXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbCwgc291cmNlSUQsIG9sZFNvdXJjZSk7CiAgICAg
ICAgICAgICBzY3JpcHQucmVzb3VyY2Uuc2V0Q29udGVudChzY3JpcHQuc291cmNlLCByZXZlcnRI
YW5kbGUpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgdmFyIG9sZFZpZXcgPSBzY3Jp
cHQuX3NvdXJjZUZyYW1lOwotICAgICAgICAgICAgZGVsZXRlIHNjcmlwdC5fc291cmNlRnJhbWU7
Ci0gICAgICAgICAgICBuZXdWaWV3ID0gdGhpcy5fc291cmNlRnJhbWVGb3JTY3JpcHQoc2NyaXB0
KTsKICAgICAgICAgfQotICAgICAgICBuZXdWaWV3LnNjcm9sbFRvcCA9IG9sZFZpZXcuc2Nyb2xs
VG9wOwogCi0gICAgICAgIGlmICh0aGlzLnZpc2libGVWaWV3ID09PSBvbGRWaWV3KQotICAgICAg
ICAgICAgdGhpcy52aXNpYmxlVmlldyA9IG5ld1ZpZXc7CisgICAgICAgIHZhciBzb3VyY2VOYW1l
ID0gc2NyaXB0LnNvdXJjZVVSTCB8fCBzY3JpcHQuc291cmNlSUQ7CisgICAgICAgIHRoaXMuX3Jl
Y3JlYXRlU291cmNlRnJhbWUoc291cmNlTmFtZSwgc2NyaXB0LnJlc291cmNlIHx8IHNjcmlwdCk7
CiAKICAgICAgICAgdmFyIGNhbGxGcmFtZXMgPSBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5j
YWxsRnJhbWVzOwogICAgICAgICBpZiAoY2FsbEZyYW1lcy5sZW5ndGgpCkBAIC0yODAsMTEgKzI3
MSwxNyBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgIF9h
ZGRTY3JpcHQ6IGZ1bmN0aW9uKHNjcmlwdCkKICAgICB7CisgICAgICAgIGlmICghc2NyaXB0LnNv
dXJjZVVSTCkgeworICAgICAgICAgICAgLy8gQW5vbnltb3VzIHNjcmlwdHMgYXJlIHNob3duIG9u
bHkgd2hlbiBzdGVwcGluZy4KKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCiAgICAg
ICAgIHZhciByZXNvdXJjZSA9IFdlYkluc3BlY3Rvci5uZXR3b3JrTWFuYWdlci5pbmZsaWdodFJl
c291cmNlRm9yVVJMKHNjcmlwdC5zb3VyY2VVUkwpIHx8IFdlYkluc3BlY3Rvci5yZXNvdXJjZUZv
clVSTChzY3JpcHQuc291cmNlVVJMKTsKICAgICAgICAgaWYgKHJlc291cmNlKSB7CiAgICAgICAg
ICAgICBpZiAocmVzb3VyY2UuZmluaXNoZWQpIHsKICAgICAgICAgICAgICAgICAvLyBSZXNvdXJj
ZSBpcyBmaW5pc2hlZCwgYmluZCB0aGUgc2NyaXB0IHJpZ2h0IGF3YXkuCi0gICAgICAgICAgICAg
ICAgc2NyaXB0LnJlc291cmNlID0gcmVzb3VyY2U7CisgICAgICAgICAgICAgICAgcmVzb3VyY2Uu
X3NjcmlwdHNQZW5kaW5nUmVzb3VyY2VMb2FkID0gW3NjcmlwdF07CisgICAgICAgICAgICAgICAg
dGhpcy5fcmVzb3VyY2VMb2FkaW5nRmluaXNoZWQoeyB0YXJnZXQ6IHJlc291cmNlIH0pOwogICAg
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAvLyBSZXNvdXJjZSBpcyBub3QgZmlu
aXNoZWQsIGJpbmQgdGhlIHNjcmlwdCBsYXRlci4KICAgICAgICAgICAgICAgICBpZiAoIXJlc291
cmNlLl9zY3JpcHRzUGVuZGluZ1Jlc291cmNlTG9hZCkgewpAQCAtMjkyLDM0ICsyODksMzIgQEAg
V2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAg
ICAgIHJlc291cmNlLmFkZEV2ZW50TGlzdGVuZXIoImZpbmlzaGVkIiwgdGhpcy5fcmVzb3VyY2VM
b2FkaW5nRmluaXNoZWQsIHRoaXMpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICByZXNvdXJjZS5fc2NyaXB0c1BlbmRpbmdSZXNvdXJjZUxvYWQucHVzaChzY3JpcHQpOworCisg
ICAgICAgICAgICAgICAgLy8gU291cmNlIGZyYW1lIGNvbnRlbnQgaXMgb3V0ZGF0ZWQgc2luY2Ug
d2UgaGF2ZSBuZXcgc2NyaXB0IHBhcnNlZC4KKyAgICAgICAgICAgICAgICB0aGlzLl9yZWNyZWF0
ZVNvdXJjZUZyYW1lKHNjcmlwdC5zb3VyY2VVUkwsIHNjcmlwdC5yZXNvdXJjZSB8fCBzY3JpcHQp
OwogICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gVGhpcyBp
cyBhIGR5bmFtaWMgc2NyaXB0IHdpdGggIi8vQCBzb3VyY2VVUkw9IiBjb21tZW50LgorICAgICAg
ICAgICAgdGhpcy5fYWRkU2NyaXB0VG9GaWxlc01lbnUoc2NyaXB0KTsKICAgICAgICAgfQotICAg
ICAgICB0aGlzLl9hZGRTY3JpcHRUb0ZpbGVzTWVudShzY3JpcHQpOwogICAgIH0sCiAKICAgICBf
cmVzb3VyY2VMb2FkaW5nRmluaXNoZWQ6IGZ1bmN0aW9uKGUpCiAgICAgewogICAgICAgICB2YXIg
cmVzb3VyY2UgPSBlLnRhcmdldDsKIAotICAgICAgICB2YXIgdmlzaWJsZSA9IGZhbHNlOwotICAg
ICAgICB2YXIgc2VsZWN0ID0gdGhpcy5maWxlc1NlbGVjdEVsZW1lbnQ7CiAgICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgcmVzb3VyY2UuX3NjcmlwdHNQZW5kaW5nUmVzb3VyY2VMb2FkLmxlbmd0
aDsgKytpKSB7CiAgICAgICAgICAgICAvLyBCaW5kIHNjcmlwdCB0byByZXNvdXJjZS4KICAgICAg
ICAgICAgIHZhciBzY3JpcHQgPSByZXNvdXJjZS5fc2NyaXB0c1BlbmRpbmdSZXNvdXJjZUxvYWRb
aV07CiAgICAgICAgICAgICBzY3JpcHQucmVzb3VyY2UgPSByZXNvdXJjZTsKKyAgICAgICAgfQog
Ci0gICAgICAgICAgICBpZiAoc2VsZWN0Lm9wdGlvbnNbc2VsZWN0LnNlbGVjdGVkSW5kZXhdID09
PSBzY3JpcHQuZmlsZXNTZWxlY3RPcHRpb24pCi0gICAgICAgICAgICAgICAgdmlzaWJsZSA9IHRy
dWU7CisgICAgICAgIC8vIFJlY3JlYXRlIHNvdXJjZSBmcmFtZSB0byBzaG93IHJlc291cmNlIGNv
bnRlbnQuCisgICAgICAgIHRoaXMuX3JlY3JlYXRlU291cmNlRnJhbWUocmVzb3VyY2UudXJsLCBy
ZXNvdXJjZSk7CiAKLSAgICAgICAgICAgIC8vIFJlbW92ZSBzY3JpcHQgZnJvbSB0aGUgZmlsZXMg
bGlzdC4KLSAgICAgICAgICAgIHNjcmlwdC5maWxlc1NlbGVjdE9wdGlvbi5wYXJlbnRFbGVtZW50
LnJlbW92ZUNoaWxkKHNjcmlwdC5maWxlc1NlbGVjdE9wdGlvbik7Ci0gICAgICAgIH0KICAgICAg
ICAgLy8gQWRkaW5nIGZpcnN0IHNjcmlwdCB3aWxsIGFkZCByZXNvdXJjZS4KICAgICAgICAgdGhp
cy5fYWRkU2NyaXB0VG9GaWxlc01lbnUocmVzb3VyY2UuX3NjcmlwdHNQZW5kaW5nUmVzb3VyY2VM
b2FkWzBdKTsKICAgICAgICAgZGVsZXRlIHJlc291cmNlLl9zY3JpcHRzUGVuZGluZ1Jlc291cmNl
TG9hZDsKLQotICAgICAgICBpZiAodmlzaWJsZSkKLSAgICAgICAgICAgIHRoaXMuX3Nob3dTY3Jp
cHRPclJlc291cmNlKHJlc291cmNlLCB7IGluaXRpYWxMb2FkOiB0cnVlIH0pOwogICAgIH0sCiAK
ICAgICBhZGRDb25zb2xlTWVzc2FnZTogZnVuY3Rpb24obWVzc2FnZSkKQEAgLTQyNiw4ICs0MjEs
OCBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhp
cy5fdXBkYXRlQmFja0FuZEZvcndhcmRCdXR0b25zKCk7CiAKICAgICAgICAgdGhpcy5fdXJsVG9T
b3VyY2VGcmFtZSA9IHt9OworICAgICAgICB0aGlzLl91cmxUb0ZpbGVzU2VsZWN0T3B0aW9uID0g
e307CiAgICAgICAgIHRoaXMuX21lc3NhZ2VzID0gW107Ci0gICAgICAgIHRoaXMuX3Jlc291cmNl
Rm9yVVJMSW5GaWxlc1NlbGVjdCA9IHt9OwogICAgICAgICB0aGlzLmZpbGVzU2VsZWN0RWxlbWVu
dC5yZW1vdmVDaGlsZHJlbigpOwogICAgICAgICB0aGlzLmZ1bmN0aW9uc1NlbGVjdEVsZW1lbnQu
cmVtb3ZlQ2hpbGRyZW4oKTsKICAgICAgICAgdGhpcy52aWV3c0NvbnRhaW5lckVsZW1lbnQucmVt
b3ZlQ2hpbGRyZW4oKTsKQEAgLTUxMiw2ICs1MDcsNyBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c1Bh
bmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIHNvdXJjZUZyYW1lID0gdGhpcy5fdXJsVG9T
b3VyY2VGcmFtZVtyZXNvdXJjZS51cmxdOwogICAgICAgICBpZiAoc291cmNlRnJhbWUpCiAgICAg
ICAgICAgICByZXR1cm4gc291cmNlRnJhbWU7CisKICAgICAgICAgdmFyIGNvbnRlbnRQcm92aWRl
ciA9IG5ldyBXZWJJbnNwZWN0b3IuU291cmNlRnJhbWVDb250ZW50UHJvdmlkZXJGb3JSZXNvdXJj
ZShyZXNvdXJjZSk7CiAgICAgICAgIHZhciBpc1NjcmlwdCA9IHJlc291cmNlLnR5cGUgPT09IFdl
Ykluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLlNjcmlwdDsKICAgICAgICAgc291cmNlRnJhbWUgPSBu
ZXcgV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lKGNvbnRlbnRQcm92aWRlciwgcmVzb3VyY2UudXJs
LCBpc1NjcmlwdCk7CkBAIC01MjYsMTEgKzUyMiwzMCBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c1Bh
bmVsLnByb3RvdHlwZSA9IHsKIAogICAgIF9zb3VyY2VGcmFtZUZvclNjcmlwdDogZnVuY3Rpb24o
c2NyaXB0KQogICAgIHsKLSAgICAgICAgaWYgKHNjcmlwdC5fc291cmNlRnJhbWUpCi0gICAgICAg
ICAgICByZXR1cm4gc2NyaXB0Ll9zb3VyY2VGcmFtZTsKKyAgICAgICAgdmFyIHNvdXJjZU5hbWUg
PSBzY3JpcHQuc291cmNlVVJMIHx8IHNjcmlwdC5zb3VyY2VJRDsKKyAgICAgICAgdmFyIHNvdXJj
ZUZyYW1lID0gdGhpcy5fdXJsVG9Tb3VyY2VGcmFtZVtzb3VyY2VOYW1lXTsKKyAgICAgICAgaWYg
KHNvdXJjZUZyYW1lKQorICAgICAgICAgICAgcmV0dXJuIHNvdXJjZUZyYW1lOworCiAgICAgICAg
IHZhciBjb250ZW50UHJvdmlkZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lQ29udGVu
dFByb3ZpZGVyRm9yU2NyaXB0KHNjcmlwdCk7Ci0gICAgICAgIHNjcmlwdC5fc291cmNlRnJhbWUg
PSBuZXcgV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lKGNvbnRlbnRQcm92aWRlciwgc2NyaXB0LnNv
dXJjZVVSTCwgdHJ1ZSk7Ci0gICAgICAgIHJldHVybiBzY3JpcHQuX3NvdXJjZUZyYW1lOworICAg
ICAgICB2YXIgaXNTY3JpcHQgPSAhc2NyaXB0LmxpbmVPZmZzZXQgJiYgIXNjcmlwdC5jb2x1bW5P
ZmZzZXQ7CisgICAgICAgIHNvdXJjZUZyYW1lID0gbmV3IFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFt
ZShjb250ZW50UHJvdmlkZXIsIHNjcmlwdC5zb3VyY2VVUkwsIGlzU2NyaXB0KTsKKyAgICAgICAg
dGhpcy5fdXJsVG9Tb3VyY2VGcmFtZVtzb3VyY2VOYW1lXSA9IHNvdXJjZUZyYW1lOworICAgICAg
ICByZXR1cm4gc291cmNlRnJhbWU7CisgICAgfSwKKworICAgIF9yZWNyZWF0ZVNvdXJjZUZyYW1l
OiBmdW5jdGlvbihzb3VyY2VOYW1lLCBzY3JpcHRPclJlc291cmNlKQorICAgIHsKKyAgICAgICAg
dmFyIG9sZFNvdXJjZUZyYW1lID0gdGhpcy5fdXJsVG9Tb3VyY2VGcmFtZVtzb3VyY2VOYW1lXTsK
KyAgICAgICAgaWYgKCFvbGRTb3VyY2VGcmFtZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgZGVsZXRlIHRoaXMuX3VybFRvU291cmNlRnJhbWVbc291cmNlTmFtZV07CisgICAgICAgIGlm
ICh0aGlzLnZpc2libGVWaWV3ICE9PSBvbGRTb3VyY2VGcmFtZSkKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICB2YXIgbmV3U291cmNlRnJhbWUgPSB0aGlzLl9zb3VyY2VGcmFtZUZvclNj
cmlwdE9yUmVzb3VyY2Uoc2NyaXB0T3JSZXNvdXJjZSkKKyAgICAgICAgbmV3U291cmNlRnJhbWUu
c2Nyb2xsVG9wID0gb2xkU291cmNlRnJhbWUuc2Nyb2xsVG9wOworICAgICAgICB0aGlzLnZpc2li
bGVWaWV3ID0gbmV3U291cmNlRnJhbWU7CiAgICAgfSwKIAogICAgIF9zaG93U2NyaXB0T3JSZXNv
dXJjZTogZnVuY3Rpb24oc2NyaXB0T3JSZXNvdXJjZSwgb3B0aW9ucykKQEAgLTU3OSw1NSArNTk0
LDQyIEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogCiAgICAgICAg
IHZhciBvcHRpb247CiAgICAgICAgIGlmIChzY3JpcHRPclJlc291cmNlIGluc3RhbmNlb2YgV2Vi
SW5zcGVjdG9yLlNjcmlwdCkgewotICAgICAgICAgICAgb3B0aW9uID0gc2NyaXB0T3JSZXNvdXJj
ZS5maWxlc1NlbGVjdE9wdGlvbjsKKyAgICAgICAgICAgIHZhciBzb3VyY2VOYW1lID0gc2NyaXB0
T3JSZXNvdXJjZS5zb3VyY2VVUkwgfHwgc2NyaXB0T3JSZXNvdXJjZS5zb3VyY2VJRDsKKyAgICAg
ICAgICAgIG9wdGlvbiA9IHRoaXMuX3VybFRvRmlsZXNTZWxlY3RPcHRpb25bc291cmNlTmFtZV07
CiAKLSAgICAgICAgICAgIC8vIGhhc24ndCBiZWVuIGFkZGVkIHlldCAtIGhhcHBlbnMgZm9yIHN0
ZXBwaW5nIGluIGV2YWxzLAotICAgICAgICAgICAgLy8gc28gdXNlIHRoZSBmb3JjZSBvcHRpb24g
dG8gZm9yY2UgdGhlIHNjcmlwdCBpbnRvIHRoZSBtZW51LgorICAgICAgICAgICAgLy8gSGFzbid0
IGJlZW4gYWRkZWQgeWV0IC0gaGFwcGVucyBmb3Igc3RlcHBpbmcgaW4gaW5saW5lIHNjcmlwdHMu
CiAgICAgICAgICAgICBpZiAoIW9wdGlvbikgewotICAgICAgICAgICAgICAgIHRoaXMuX2FkZFNj
cmlwdFRvRmlsZXNNZW51KHNjcmlwdE9yUmVzb3VyY2UsIHRydWUpOwotICAgICAgICAgICAgICAg
IG9wdGlvbiA9IHNjcmlwdE9yUmVzb3VyY2UuZmlsZXNTZWxlY3RPcHRpb247CisgICAgICAgICAg
ICAgICAgdGhpcy5fYWRkU2NyaXB0VG9GaWxlc01lbnUoc2NyaXB0T3JSZXNvdXJjZSk7CisgICAg
ICAgICAgICAgICAgb3B0aW9uID0gdGhpcy5fdXJsVG9GaWxlc1NlbGVjdE9wdGlvbltzb3VyY2VO
YW1lXTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgY29uc29sZS5hc3NlcnQob3B0aW9u
KTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBvcHRpb24gPSBzY3JpcHRPclJlc291cmNl
LmZpbGVzU2VsZWN0T3B0aW9uOworICAgICAgICAgICAgb3B0aW9uID0gdGhpcy5fdXJsVG9GaWxl
c1NlbGVjdE9wdGlvbltzY3JpcHRPclJlc291cmNlLnVybF07CiAKICAgICAgICAgaWYgKG9wdGlv
bikKICAgICAgICAgICAgIHRoaXMuZmlsZXNTZWxlY3RFbGVtZW50LnNlbGVjdGVkSW5kZXggPSBv
cHRpb24uaW5kZXg7CiAgICAgfSwKIAotICAgIF9hZGRTY3JpcHRUb0ZpbGVzTWVudTogZnVuY3Rp
b24oc2NyaXB0LCBmb3JjZSkKKyAgICBfYWRkU2NyaXB0VG9GaWxlc01lbnU6IGZ1bmN0aW9uKHNj
cmlwdCkKICAgICB7Ci0gICAgICAgIGlmICghc2NyaXB0LnNvdXJjZVVSTCAmJiAhZm9yY2UpCisg
ICAgICAgIHZhciBzb3VyY2VOYW1lID0gc2NyaXB0LnNvdXJjZVVSTCB8fCBzY3JpcHQuc291cmNl
SUQ7CisgICAgICAgIGlmIChzb3VyY2VOYW1lIGluIHRoaXMuX3VybFRvRmlsZXNTZWxlY3RPcHRp
b24pCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKHNjcmlwdC5yZXNvdXJjZSkg
ewotICAgICAgICAgICAgaWYgKHRoaXMuX3Jlc291cmNlRm9yVVJMSW5GaWxlc1NlbGVjdFtzY3Jp
cHQucmVzb3VyY2UudXJsXSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB0
aGlzLl9yZXNvdXJjZUZvclVSTEluRmlsZXNTZWxlY3Rbc2NyaXB0LnJlc291cmNlLnVybF0gPSBz
Y3JpcHQucmVzb3VyY2U7Ci0gICAgICAgIH0KLQogICAgICAgICB2YXIgZGlzcGxheU5hbWUgPSBz
Y3JpcHQuc291cmNlVVJMID8gV2ViSW5zcGVjdG9yLmRpc3BsYXlOYW1lRm9yVVJMKHNjcmlwdC5z
b3VyY2VVUkwpIDogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIocHJvZ3JhbSkiKTsKIAogICAgICAg
ICB2YXIgc2VsZWN0ID0gdGhpcy5maWxlc1NlbGVjdEVsZW1lbnQ7CiAgICAgICAgIHZhciBvcHRp
b24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvcHRpb24iKTsKICAgICAgICAgb3B0aW9uLnJl
cHJlc2VudGVkT2JqZWN0ID0gc2NyaXB0LnJlc291cmNlIHx8IHNjcmlwdDsKLSAgICAgICAgb3B0
aW9uLnVybCA9IGRpc3BsYXlOYW1lOwotICAgICAgICBvcHRpb24uc3RhcnRpbmdMaW5lID0gc2Ny
aXB0LnN0YXJ0aW5nTGluZTsKLSAgICAgICAgb3B0aW9uLnRleHQgPSBzY3JpcHQucmVzb3VyY2Ug
fHwgc2NyaXB0LnN0YXJ0aW5nTGluZSA9PT0gMSA/IGRpc3BsYXlOYW1lIDogU3RyaW5nLnNwcmlu
dGYoIiVzOiVkIiwgZGlzcGxheU5hbWUsIHNjcmlwdC5zdGFydGluZ0xpbmUpOworICAgICAgICBv
cHRpb24udGV4dCA9IGRpc3BsYXlOYW1lOworICAgICAgICB0aGlzLl91cmxUb0ZpbGVzU2VsZWN0
T3B0aW9uW3NvdXJjZU5hbWVdID0gb3B0aW9uOwogCiAgICAgICAgIGZ1bmN0aW9uIG9wdGlvbkNv
bXBhcmUoYSwgYikKICAgICAgICAgewotICAgICAgICAgICAgaWYgKGEudXJsIDwgYi51cmwpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgZWxzZSBpZiAoYS51cmwgPiBi
LnVybCkKLSAgICAgICAgICAgICAgICByZXR1cm4gMTsKLQotICAgICAgICAgICAgaWYgKHR5cGVv
ZiBhLnN0YXJ0aW5nTGluZSAhPT0gIm51bWJlciIpCi0gICAgICAgICAgICAgICAgcmV0dXJuIC0x
OwotICAgICAgICAgICAgaWYgKHR5cGVvZiBiLnN0YXJ0aW5nTGluZSAhPT0gIm51bWJlciIpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgcmV0dXJuIGEuc3RhcnRpbmdM
aW5lIC0gYi5zdGFydGluZ0xpbmU7CisgICAgICAgICAgICBpZiAoYS50ZXh0ID09PSBiLnRleHQp
CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gYS50ZXh0IDwg
Yi50ZXh0ID8gLTEgOiAxOwogICAgICAgICB9CiAKICAgICAgICAgdmFyIGluc2VydGlvbkluZGV4
ID0gaW5zZXJ0aW9uSW5kZXhGb3JPYmplY3RJbkxpc3RTb3J0ZWRCeUZ1bmN0aW9uKG9wdGlvbiwg
c2VsZWN0LmNoaWxkTm9kZXMsIG9wdGlvbkNvbXBhcmUpOwpAQCAtNjM2LDExICs2MzgsNiBAQCBX
ZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgc2VsZWN0Lmluc2VydEJlZm9yZShvcHRpb24sIHNlbGVjdC5jaGlsZE5vZGVzLml0
ZW0oaW5zZXJ0aW9uSW5kZXgpKTsKIAotICAgICAgICBpZiAoc2NyaXB0LnJlc291cmNlKQotICAg
ICAgICAgICAgc2NyaXB0LnJlc291cmNlLmZpbGVzU2VsZWN0T3B0aW9uID0gb3B0aW9uOwotICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBzY3JpcHQuZmlsZXNTZWxlY3RPcHRpb24gPSBvcHRpb247
Ci0KICAgICAgICAgaWYgKHNlbGVjdC5vcHRpb25zW3NlbGVjdC5zZWxlY3RlZEluZGV4XSA9PT0g
b3B0aW9uKSB7CiAgICAgICAgICAgICAvLyBDYWxsIF9zaG93U2NyaXB0T3JSZXNvdXJjZSBpZiB0
aGUgb3B0aW9uIHdlIGp1c3QgYXBwZW5kZWQgZW5kZWQgdXAgYmVpbmcgc2VsZWN0ZWQuCiAgICAg
ICAgICAgICAvLyBUaGlzIHdpbGwgaGFwcGVuIGZvciB0aGUgZmlyc3QgaXRlbSBhZGRlZCB0byB0
aGUgbWVudS4KQEAgLTY0OSwxOCArNjQ2LDEyIEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwu
cHJvdG90eXBlID0gewogICAgICAgICAgICAgLy8gSWYgbm90IGZpcnN0IGl0ZW0sIGNoZWNrIHRv
IHNlZSBpZiB0aGlzIHdhcyB0aGUgbGFzdCB2aWV3ZWQKICAgICAgICAgICAgIHZhciB1cmwgPSBv
cHRpb24ucmVwcmVzZW50ZWRPYmplY3QudXJsIHx8IG9wdGlvbi5yZXByZXNlbnRlZE9iamVjdC5z
b3VyY2VVUkw7CiAgICAgICAgICAgICB2YXIgbGFzdFVSTCA9IFdlYkluc3BlY3Rvci5zZXR0aW5n
cy5sYXN0Vmlld2VkU2NyaXB0RmlsZTsKLSAgICAgICAgICAgIGlmICh1cmwgJiYgdXJsID09PSBs
YXN0VVJMKSB7Ci0gICAgICAgICAgICAgICAgLy8gRm9yIHJlc291cmNlcyBjb250YWluaW5nIG11
bHRpcGxlIDxzY3JpcHQ+IHRhZ3MsIHdlIGZpcnN0IHJlcG9ydCB0aGVtIHNlcGFyYXRlbHkgYW5k
Ci0gICAgICAgICAgICAgICAgLy8gdGhlbiBnbHVlIHRoZW0gYWxsIHRvZ2V0aGVyLiBUaGV5IGFs
bCBzaGFyZSB1cmwgYW5kIHRoZXJlIGlzIG5vIG5lZWQgdG8gc2hvdyB0aGVtIGFsbCBvbmUKLSAg
ICAgICAgICAgICAgICAvLyBieSBvbmUuCi0gICAgICAgICAgICAgICAgdmFyIGlzUmVzb3VyY2Ug
PSAhIW9wdGlvbi5yZXByZXNlbnRlZE9iamVjdC51cmw7Ci0gICAgICAgICAgICAgICAgaWYgKGlz
UmVzb3VyY2UgfHwgIXRoaXMudmlzaWJsZVZpZXcgfHwgIXRoaXMudmlzaWJsZVZpZXcuc2NyaXB0
IHx8IHRoaXMudmlzaWJsZVZpZXcuc2NyaXB0LnNvdXJjZVVSTCAhPT0gdXJsKQotICAgICAgICAg
ICAgICAgICAgICB0aGlzLl9zaG93U2NyaXB0T3JSZXNvdXJjZShvcHRpb24ucmVwcmVzZW50ZWRP
YmplY3QsIHtpbml0aWFsTG9hZDogdHJ1ZX0pOwotICAgICAgICAgICAgfQorICAgICAgICAgICAg
aWYgKHVybCAmJiB1cmwgPT09IGxhc3RVUkwpCisgICAgICAgICAgICAgICAgdGhpcy5fc2hvd1Nj
cmlwdE9yUmVzb3VyY2Uob3B0aW9uLnJlcHJlc2VudGVkT2JqZWN0LCB7aW5pdGlhbExvYWQ6IHRy
dWV9KTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChzY3JpcHQud29ybGRUeXBlID09PSBXZWJJ
bnNwZWN0b3IuU2NyaXB0LldvcmxkVHlwZS5FWFRFTlNJT05TX1dPUkxEKQotICAgICAgICAgICAg
c2NyaXB0LmZpbGVzU2VsZWN0T3B0aW9uLmFkZFN0eWxlQ2xhc3MoImV4dGVuc2lvbi1zY3JpcHQi
KTsKKyAgICAgICAgICAgIG9wdGlvbi5hZGRTdHlsZUNsYXNzKCJleHRlbnNpb24tc2NyaXB0Iik7
CiAgICAgfSwKIAogICAgIF9jbGVhckN1cnJlbnRFeGVjdXRpb25MaW5lOiBmdW5jdGlvbigpCkBA
IC0xMDYyLDIxICsxMDUzLDczIEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZUNvbnRlbnRQcm92
aWRlckZvclNjcmlwdCA9IGZ1bmN0aW9uKHNjcmlwdCkKIFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFt
ZUNvbnRlbnRQcm92aWRlckZvclNjcmlwdC5wcm90b3R5cGUgPSB7CiAgICAgcmVxdWVzdENvbnRl
bnQ6IGZ1bmN0aW9uKGNhbGxiYWNrKQogICAgIHsKLSAgICAgICAgZnVuY3Rpb24gZGlkUmVxdWVz
dFNvdXJjZShzb3VyY2UpCisgICAgICAgIHZhciBzY3JpcHRzID0gW3RoaXMuX3NjcmlwdF07Cisg
ICAgICAgIGlmICh0aGlzLl9zY3JpcHQuc291cmNlVVJMKQorICAgICAgICAgICAgc2NyaXB0cyA9
IFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLnNjcmlwdHNGb3JVUkwodGhpcy5fc2NyaXB0LnNv
dXJjZVVSTCk7CisgICAgICAgIHNjcmlwdHMuc29ydChmdW5jdGlvbih4LCB5KSB7IHJldHVybiB4
LmxpbmVPZmZzZXQgLSB5LmxpbmVPZmZzZXQgfHwgeC5jb2x1bW5PZmZzZXQgLSB5LmNvbHVtbk9m
ZnNldDsgfSk7CisKKyAgICAgICAgdmFyIHNjcmlwdHNMZWZ0ID0gc2NyaXB0cy5sZW5ndGg7Cisg
ICAgICAgIHZhciBzb3VyY2VzID0gW107CisgICAgICAgIGZ1bmN0aW9uIGRpZFJlcXVlc3RTb3Vy
Y2UoaW5kZXgsIHNvdXJjZSkKICAgICAgICAgewotICAgICAgICAgICAgaWYgKHNvdXJjZSkgewot
ICAgICAgICAgICAgICAgIHZhciBwcmVmaXggPSAiIjsKLSAgICAgICAgICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IHRoaXMuX3NjcmlwdC5saW5lT2Zmc2V0OyArK2kpCi0gICAgICAgICAgICAg
ICAgICAgIHByZWZpeCArPSAiXG4iOwotICAgICAgICAgICAgICAgIHNvdXJjZSA9IHByZWZpeCAr
IHNvdXJjZTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHNvdXJjZSA9IFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiPHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlPiIpOwotCisgICAg
ICAgICAgICBzb3VyY2VzW2luZGV4XSA9IHNvdXJjZTsKKyAgICAgICAgICAgIGlmICgtLXNjcmlw
dHNMZWZ0KQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHZhciByZXN1bHQg
PSB0aGlzLl9idWlsZFNvdXJjZShzY3JpcHRzLCBzb3VyY2VzKTsKICAgICAgICAgICAgIHZhciBz
b3VyY2VNYXBwaW5nID0gbmV3IFdlYkluc3BlY3Rvci5JZGVudGljYWxTb3VyY2VNYXBwaW5nKCk7
Ci0gICAgICAgICAgICB2YXIgc2NyaXB0UmFuZ2VzID0gV2ViSW5zcGVjdG9yLlNjcmlwdEZvcm1h
dHRlci5maW5kU2NyaXB0UmFuZ2VzKHNvdXJjZS5saW5lRW5kaW5ncygpLCBbdGhpcy5fc2NyaXB0
XSk7Ci0gICAgICAgICAgICBjYWxsYmFjaygidGV4dC9qYXZhc2NyaXB0IiwgbmV3IFdlYkluc3Bl
Y3Rvci5Tb3VyY2VGcmFtZUNvbnRlbnQoc291cmNlLCBzb3VyY2VNYXBwaW5nLCBzY3JpcHRSYW5n
ZXMpKTsKKyAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdC5taW1lVHlwZSwgbmV3IFdlYkluc3Bl
Y3Rvci5Tb3VyY2VGcmFtZUNvbnRlbnQocmVzdWx0LnNvdXJjZSwgc291cmNlTWFwcGluZywgcmVz
dWx0LnNjcmlwdFJhbmdlcykpOworCisgICAgICAgIH0KKyAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBzY3JpcHRzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgc2NyaXB0c1tpXS5yZXF1ZXN0
U291cmNlKGRpZFJlcXVlc3RTb3VyY2UuYmluZCh0aGlzLCBpKSk7CisgICAgfSwKKworICAgIF9i
dWlsZFNvdXJjZTogZnVuY3Rpb24oc2NyaXB0cywgc291cmNlcykKKyAgICB7CisgICAgICAgIHZh
ciBzb3VyY2UgPSAiIjsKKyAgICAgICAgdmFyIGxpbmVOdW1iZXIgPSAwLCBjb2x1bW5OdW1iZXIg
PSAwOworICAgICAgICB2YXIgc2NyaXB0UmFuZ2VzID0gW107CisgICAgICAgIGZ1bmN0aW9uIGFw
cGVuZENodW5rKGNodW5rLCBpc1NjcmlwdCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHN0
YXJ0ID0geyBsaW5lTnVtYmVyOiBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXI6IGNvbHVtbk51bWJl
ciB9OworICAgICAgICAgICAgc291cmNlICs9IGNodW5rOworICAgICAgICAgICAgdmFyIGxpbmVF
bmRpbmdzID0gY2h1bmsubGluZUVuZGluZ3MoKTsKKyAgICAgICAgICAgIHZhciBsaW5lQ291bnQg
PSBsaW5lRW5kaW5ncy5sZW5ndGg7CisgICAgICAgICAgICBpZiAobGluZUNvdW50ID09PSAxKQor
ICAgICAgICAgICAgICAgIGNvbHVtbk51bWJlciArPSBjaHVuay5sZW5ndGg7CisgICAgICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgICAgICBsaW5lTnVtYmVyICs9IGxpbmVDb3VudCAtIDE7Cisg
ICAgICAgICAgICAgICAgY29sdW1uTnVtYmVyID0gbGluZUVuZGluZ3NbbGluZUNvdW50IC0gMV0g
LSBsaW5lRW5kaW5nc1tsaW5lQ291bnQgLSAyXSAtIDE7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICB2YXIgZW5kID0geyBsaW5lTnVtYmVyOiBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXI6IGNv
bHVtbk51bWJlciB9OworICAgICAgICAgICAgaWYgKGlzU2NyaXB0KQorICAgICAgICAgICAgICAg
IHNjcmlwdFJhbmdlcy5wdXNoKHsgc3RhcnQ6IHN0YXJ0LCBlbmQ6IGVuZCB9KTsKKyAgICAgICAg
fQorCisgICAgICAgIHZhciBtaW1lVHlwZTsKKyAgICAgICAgaWYgKHNjcmlwdHMubGVuZ3RoID09
PSAxICYmICFzY3JpcHRzWzBdLmxpbmVPZmZzZXQgJiYgIXNjcmlwdHNbMF0uY29sdW1uT2Zmc2V0
KSB7CisgICAgICAgICAgICAvLyBTaW5nbGUgc2NyaXB0IHNvdXJjZS4KKyAgICAgICAgICAgIG1p
bWVUeXBlID0gInRleHQvamF2YXNjcmlwdCI7CisgICAgICAgICAgICBhcHBlbmRDaHVuayhzb3Vy
Y2VzWzBdLCB0cnVlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIFNjcmlwdHMg
aW5saW5lZCBpbiBodG1sIGRvY3VtZW50LgorICAgICAgICAgICAgbWltZVR5cGUgPSAidGV4dC9o
dG1sIjsKKyAgICAgICAgICAgIHZhciBzY3JpcHRPcGVuVGFnID0gIjxzY3JpcHQ+IjsKKyAgICAg
ICAgICAgIHZhciBzY3JpcHRDbG9zZVRhZyA9ICI8L3NjcmlwdD4iOworICAgICAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBzY3JpcHRzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAg
Ly8gRmlsbCB0aGUgZ2FwIHdpdGggd2hpdGVzcGFjZSBjaGFyYWN0ZXJzLgorICAgICAgICAgICAg
ICAgIHdoaWxlIChsaW5lTnVtYmVyIDwgc2NyaXB0c1tpXS5saW5lT2Zmc2V0KQorICAgICAgICAg
ICAgICAgICAgICBhcHBlbmRDaHVuaygiXG4iKTsKKyAgICAgICAgICAgICAgICB3aGlsZSAoY29s
dW1uTnVtYmVyIDwgc2NyaXB0c1tpXS5jb2x1bW5PZmZzZXQgLSBzY3JpcHRPcGVuVGFnLmxlbmd0
aCkKKyAgICAgICAgICAgICAgICAgICAgYXBwZW5kQ2h1bmsoIiAiKTsKKworICAgICAgICAgICAg
ICAgIC8vIEFkZCBzY3JpcHQgdGFnLgorICAgICAgICAgICAgICAgIGFwcGVuZENodW5rKHNjcmlw
dE9wZW5UYWcpOworICAgICAgICAgICAgICAgIGFwcGVuZENodW5rKHNvdXJjZXNbaV0sIHRydWUp
OworICAgICAgICAgICAgICAgIGFwcGVuZENodW5rKHNjcmlwdENsb3NlVGFnKTsKKyAgICAgICAg
ICAgIH0KICAgICAgICAgfQotICAgICAgICB0aGlzLl9zY3JpcHQucmVxdWVzdFNvdXJjZShkaWRS
ZXF1ZXN0U291cmNlLmJpbmQodGhpcykpOworICAgICAgICByZXR1cm4geyBtaW1lVHlwZTogbWlt
ZVR5cGUsIHNvdXJjZTogc291cmNlLCBzY3JpcHRSYW5nZXM6IHNjcmlwdFJhbmdlcyB9OwogICAg
IH0KIH0KIAo=
</data>
<flag name="review"
          id="74287"
          type_id="1"
          status="-"
          setter="yurys"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82634</attachid>
            <date>2011-02-16 07:32:47 -0800</date>
            <delta_ts>2011-02-16 07:47:29 -0800</delta_ts>
            <desc>Patch.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>27092</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0OWM2OTQzLi44YTQ2N2Q1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDIt
MTYgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjogc2hv
dyBhbGwgaW5saW5lZCBzY3JpcHRzIGZyb20gc2luZ2xlIGRvY3VtZW50IGluIHRoZSBzYW1lIHNv
dXJjZSBmcmFtZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTU0NTQ0CisKKyAgICAgICAgQ3VycmVudGx5IHdoZW4gZGVidWdnaW5nIHN5bmNocm9ub3Vz
bHkgZXhlY3V0ZWQgaW5saW5lZCBzY3JpcHRzIGVhY2ggc2NyaXB0IGlzIHNob3duIGluIGl0J3Mg
b3duIHNvdXJjZSBmcmFtZSAoImV4YW1wbGUuaHRtbDoyNCIpLgorICAgICAgICBXZSBzaG91bGQg
c2hvdyBzdWNoIHNjcmlwdHMgaW4gdGhlIHNhbWUgc291cmNlIGZyYW1lICJleGFtcGxlLmh0bWwi
IHdpdGggPHNjcmlwdD48L3NjcmlwdD4gZnJhbWluZy4KKworICAgICAgICAqIGh0dHAvdGVzdHMv
aW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3QuanM6CisgICAgICAgIChpbml0aWFsaXplX0RlYnVnZ2Vy
VGVzdC5JbnNwZWN0b3JUZXN0Ll9wYXVzZWRTY3JpcHQpOgorICAgICAgICAoaW5pdGlhbGl6ZV9E
ZWJ1Z2dlclRlc3QuSW5zcGVjdG9yVGVzdC5fcmVzdW1lZFNjcmlwdCk6CisgICAgICAgICogaW5z
cGVjdG9yL2RlYnVnZ2VyL2RlYnVnLWlubGluZWQtc2NyaXB0cy1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9kZWJ1Zy1pbmxpbmVkLXNjcmlwdHMuaHRt
bDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL2RlYnVnZ2VyLWJyZWFrcG9p
bnRzLW5vdC1hY3RpdmF0ZWQtb24tcmVsb2FkLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2Rl
YnVnZ2VyL2RlYnVnZ2VyLXBhdXNlLW9uLWJyZWFrcG9pbnQuaHRtbDoKKwogMjAxMS0wMi0xNSAg
S2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
RGFyaW4gRmlzaGVyLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvZGVidWdnZXItdGVzdC5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2Rl
YnVnZ2VyLXRlc3QuanMKaW5kZXggNDIyZjVjNi4uNjAwNDg0MCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItdGVzdC5qcworKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10ZXN0LmpzCkBAIC0xLDcgKzEsOCBA
QAogdmFyIGluaXRpYWxpemVfRGVidWdnZXJUZXN0ID0gZnVuY3Rpb24oKSB7CiAKLUluc3BlY3Rv
clRlc3Quc3RhcnREZWJ1Z2dlclRlc3QgPSBmdW5jdGlvbihjYWxsYmFjaykKK0luc3BlY3RvclRl
c3Quc3RhcnREZWJ1Z2dlclRlc3QgPSBmdW5jdGlvbihjYWxsYmFjaywgcXVpZXQpCiB7CisgICAg
SW5zcGVjdG9yVGVzdC5fcXVpZXQgPSBxdWlldDsKICAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVs
KCJzY3JpcHRzIik7CiAKICAgICBpZiAoV2ViSW5zcGVjdG9yLnBhbmVscy5zY3JpcHRzLl9kZWJ1
Z2dlckVuYWJsZWQpCkBAIC05MCwxNCArOTEsMTAgQEAgSW5zcGVjdG9yVGVzdC5jYXB0dXJlU3Rh
Y2tUcmFjZSA9IGZ1bmN0aW9uKGNhbGxGcmFtZXMpCiAgICAgfQogfTsKIAotSW5zcGVjdG9yVGVz
dC5zZXRCcmVha3BvaW50SW5WaXNpYmxlVmlldyA9IGZ1bmN0aW9uKGxpbmVOdW1iZXIsIGNvbmRp
dGlvbiwgZW5hYmxlZCkKLXsKLSAgICBXZWJJbnNwZWN0b3IuY3VycmVudFBhbmVsLnZpc2libGVW
aWV3Ll9zZXRCcmVha3BvaW50KGxpbmVOdW1iZXIsIGNvbmRpdGlvbiwgZW5hYmxlZCk7Ci19Ci0K
IEluc3BlY3RvclRlc3QuX3BhdXNlZFNjcmlwdCA9IGZ1bmN0aW9uKGRldGFpbHMpCiB7Ci0gICAg
SW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIlNjcmlwdCBleGVjdXRpb24gcGF1c2VkLiIpOworICAg
IGlmICghSW5zcGVjdG9yVGVzdC5fcXVpZXQpCisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVz
dWx0KCJTY3JpcHQgZXhlY3V0aW9uIHBhdXNlZC4iKTsKICAgICBJbnNwZWN0b3JUZXN0Ll9jYWxs
RnJhbWVzID0gZGV0YWlscy5jYWxsRnJhbWVzOwogICAgIGlmIChJbnNwZWN0b3JUZXN0Ll93YWl0
VW50aWxQYXVzZWRDYWxsYmFjaykgewogICAgICAgICB2YXIgY2FsbGJhY2sgPSBJbnNwZWN0b3JU
ZXN0Ll93YWl0VW50aWxQYXVzZWRDYWxsYmFjazsKQEAgLTEwOCw3ICsxMDUsOCBAQCBJbnNwZWN0
b3JUZXN0Ll9wYXVzZWRTY3JpcHQgPSBmdW5jdGlvbihkZXRhaWxzKQogCiBJbnNwZWN0b3JUZXN0
Ll9yZXN1bWVkU2NyaXB0ID0gZnVuY3Rpb24oKQogewotICAgIEluc3BlY3RvclRlc3QuYWRkUmVz
dWx0KCJTY3JpcHQgZXhlY3V0aW9uIHJlc3VtZWQuIik7CisgICAgaWYgKCFJbnNwZWN0b3JUZXN0
Ll9xdWlldCkKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIlNjcmlwdCBleGVjdXRp
b24gcmVzdW1lZC4iKTsKICAgICBkZWxldGUgSW5zcGVjdG9yVGVzdC5fY2FsbEZyYW1lczsKICAg
ICBpZiAoSW5zcGVjdG9yVGVzdC5fd2FpdFVudGlsUmVzdW1lZENhbGxiYWNrKSB7CiAgICAgICAg
IHZhciBjYWxsYmFjayA9IEluc3BlY3RvclRlc3QuX3dhaXRVbnRpbFJlc3VtZWRDYWxsYmFjazsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9kZWJ1Zy1pbmxpbmVk
LXNjcmlwdHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2Rl
YnVnLWlubGluZWQtc2NyaXB0cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uZDZiMzY2NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kZWJ1Z2dlci9kZWJ1Zy1pbmxpbmVkLXNjcmlwdHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMzQgQEAKK1Rlc3RzIHRoYXQgYWxsIGlubGluZWQgc2NyaXB0cyBmcm9tIHRoZSBzYW1lIGRv
Y3VtZW50IGFyZSBzaG93biBpbiB0aGUgc2FtZSBzb3VyY2UgZnJhbWUgd2l0aCBodG1sIHNjcmlw
dCB0YWdzLiBCdWcgNTQ1NDQuCisKK0RlYnVnZ2VyIHdhcyBlbmFibGVkLgorU2NyaXB0IHNvdXJj
ZSB3YXMgc2hvd24uCitTY3JpcHQgZXhlY3V0aW9uIHBhdXNlZC4KK0NhbGwgc3RhY2s6CisgICAg
MCkgIChkZWJ1Zy1pbmxpbmVkLXNjcmlwdHMuaHRtbDozKQorPT1Tb3VyY2UgZnJhbWUgY29udGVu
dHMgc3RhcnQ9PQorCisKKyAgPHNjcmlwdD4gIGZ1bmN0aW9uIGYxKCkgeyByZXR1cm4gMDsgfTsg
ZjEoKTsgIDwvc2NyaXB0PgorPT1Tb3VyY2UgZnJhbWUgY29udGVudHMgZW5kPT0KK1NjcmlwdCBl
eGVjdXRpb24gcGF1c2VkLgorQ2FsbCBzdGFjazoKKyAgICAwKSBmNCAoZGVidWctaW5saW5lZC1z
Y3JpcHRzLmh0bWw6MTApCisgICAgMSkgIChkZWJ1Zy1pbmxpbmVkLXNjcmlwdHMuaHRtbDoxMikK
Kz09U291cmNlIGZyYW1lIGNvbnRlbnRzIHN0YXJ0PT0KKworCisgIDxzY3JpcHQ+ICBmdW5jdGlv
biBmMSgpIHsgcmV0dXJuIDA7IH07IGYxKCk7ICA8L3NjcmlwdD4gICAgIDxzY3JpcHQ+ZnVuY3Rp
b24gZjIoKSB7IHJldHVybiAwOyB9PC9zY3JpcHQ+PHNjcmlwdD4KK2Z1bmN0aW9uIGYzKCkgeyBy
ZXR1cm4gMDsgfQorPC9zY3JpcHQ+CisKKzxzY3JpcHQ+CitmdW5jdGlvbiBmNCgpCit7CisgICAg
cmV0dXJuIDA7Cit9CitmNCgpOworPC9zY3JpcHQ+Cis9PVNvdXJjZSBmcmFtZSBjb250ZW50cyBl
bmQ9PQorUGFnZSByZWxvYWRlZC4KK0RlYnVnZ2VyIHdhcyBkaXNhYmxlZC4KKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2RlYnVnLWlubGluZWQtc2NyaXB0cy5o
dG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2RlYnVnLWlubGluZWQtc2NyaXB0
cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1YTU0NjQKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvZGVidWctaW5saW5l
ZC1zY3JpcHRzLmh0bWwKQEAgLTAsMCArMSw5NSBAQAorPGh0bWw+Cis8aGVhZD4KKyAgPHNjcmlw
dD4gIGZ1bmN0aW9uIGYxKCkgeyByZXR1cm4gMDsgfTsgZjEoKTsgIDwvc2NyaXB0PiAgICAgPHNj
cmlwdD5mdW5jdGlvbiBmMigpIHsgcmV0dXJuIDA7IH08L3NjcmlwdD48c2NyaXB0PgorZnVuY3Rp
b24gZjMoKSB7IHJldHVybiAwOyB9Cis8L3NjcmlwdD4KKworPHNjcmlwdD4KK2Z1bmN0aW9uIGY0
KCkKK3sKKyAgICByZXR1cm4gMDsKK30KK2Y0KCk7Cis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9
Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10ZXN0Lmpz
Ij48L3NjcmlwdD4KKworPHNjcmlwdD4KKwordmFyIHRlc3QgPSBmdW5jdGlvbigpCit7CisgICAg
SW5zcGVjdG9yVGVzdC5zdGFydERlYnVnZ2VyVGVzdChzdGVwMSwgdHJ1ZSk7CisKKyAgICBmdW5j
dGlvbiBzdGVwMSgpCisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LnNob3dTY3JpcHRTb3Vy
Y2UoImRlYnVnLWlubGluZWQtc2NyaXB0cy5odG1sIiwgc3RlcDIpOworICAgIH0KKworICAgIGZ1
bmN0aW9uIHN0ZXAyKHNvdXJjZUZyYW1lKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5h
ZGRSZXN1bHQoIlNjcmlwdCBzb3VyY2Ugd2FzIHNob3duLiIpOworICAgICAgICBXZWJJbnNwZWN0
b3IucGFuZWxzLnNjcmlwdHMuX3Jlc291cmNlRm9yVVJMID0gZnVuY3Rpb24oKSB7IHJldHVybiBu
ZXcgV2ViSW5zcGVjdG9yLlJlc291cmNlKCk7IH07CisgICAgICAgIHNvdXJjZUZyYW1lLl9zZXRC
cmVha3BvaW50KDIsICIiLCB0cnVlKTsKKyAgICAgICAgc291cmNlRnJhbWUuX3NldEJyZWFrcG9p
bnQoOSwgIiIsIHRydWUpOworICAgICAgICBJbnNwZWN0b3JUZXN0LndhaXRVbnRpbFBhdXNlZChz
dGVwMyk7CisgICAgICAgIEluc3BlY3RvclRlc3QucmVsb2FkUGFnZShJbnNwZWN0b3JUZXN0LmNv
bXBsZXRlRGVidWdnZXJUZXN0LmJpbmQoSW5zcGVjdG9yVGVzdCkpOworICAgIH0KKworICAgIGZ1
bmN0aW9uIHN0ZXAzKGNhbGxGcmFtZXMpCisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmFk
ZFJlc3VsdCgiU2NyaXB0IGV4ZWN1dGlvbiBwYXVzZWQuIik7CisgICAgICAgIEluc3BlY3RvclRl
c3QuY2FwdHVyZVN0YWNrVHJhY2UoY2FsbEZyYW1lcyk7CisgICAgICAgIEluc3BlY3RvclRlc3Qu
c2hvd1NjcmlwdFNvdXJjZSgiZGVidWctaW5saW5lZC1zY3JpcHRzLmh0bWwiLCBzdGVwNCk7Cisg
ICAgfQorCisgICAgZnVuY3Rpb24gc3RlcDQoc291cmNlRnJhbWUpCisgICAgeworICAgICAgICBk
dW1wU291cmNlRnJhbWVDb250ZW50cyhzb3VyY2VGcmFtZSk7CisgICAgICAgIEluc3BlY3RvclRl
c3QucmVzdW1lRXhlY3V0aW9uKEluc3BlY3RvclRlc3Qud2FpdFVudGlsUGF1c2VkLmJpbmQobnVs
bCwgc3RlcDUpKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzdGVwNShjYWxsRnJhbWVzKQorICAg
IHsKKyAgICAgICAgaWYgKGNhbGxGcmFtZXNbMF0ubGluZSAhPT0gOSkgeworICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5yZXN1bWVFeGVjdXRpb24oSW5zcGVjdG9yVGVzdC53YWl0VW50aWxQYXVz
ZWQuYmluZChudWxsLCBzdGVwNSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisg
ICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJTY3JpcHQgZXhlY3V0aW9uIHBhdXNlZC4i
KTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5jYXB0dXJlU3RhY2tUcmFjZShjYWxsRnJhbWVzKTsK
KyAgICAgICAgSW5zcGVjdG9yVGVzdC5zaG93U2NyaXB0U291cmNlKCJkZWJ1Zy1pbmxpbmVkLXNj
cmlwdHMuaHRtbCIsIHN0ZXA2KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzdGVwNihzb3VyY2VG
cmFtZSkKKyAgICB7CisgICAgICAgIGR1bXBTb3VyY2VGcmFtZUNvbnRlbnRzKHNvdXJjZUZyYW1l
KTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5yZXN1bWVFeGVjdXRpb24oSW5zcGVjdG9yVGVzdC53
YWl0VW50aWxQYXVzZWQuYmluZChudWxsLCBzdGVwNykpOworICAgIH0KKworICAgIGZ1bmN0aW9u
IHN0ZXA3KCkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QucmVzdW1lRXhlY3V0aW9uKElu
c3BlY3RvclRlc3Qud2FpdFVudGlsUGF1c2VkLmJpbmQobnVsbCwgc3RlcDUpKTsKKyAgICB9CisK
KyAgICBmdW5jdGlvbiBkdW1wU291cmNlRnJhbWVDb250ZW50cyhzb3VyY2VGcmFtZSkKKyAgICB7
CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCI9PVNvdXJjZSBmcmFtZSBjb250ZW50
cyBzdGFydD09Iik7CisgICAgICAgIHZhciB0ZXh0TW9kZWwgPSBzb3VyY2VGcmFtZS5fdGV4dE1v
ZGVsOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRleHRNb2RlbC5saW5lc0NvdW50OyAr
K2kpCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCh0ZXh0TW9kZWwubGluZShp
KSk7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCI9PVNvdXJjZSBmcmFtZSBjb250
ZW50cyBlbmQ9PSIpOworICAgIH0KK30KKworPC9zY3JpcHQ+CisKKzwvaGVhZD4KKworPGJvZHkg
b25sb2FkPSJydW5UZXN0KCkiPgorPHA+CitUZXN0cyB0aGF0IGFsbCBpbmxpbmVkIHNjcmlwdHMg
ZnJvbSB0aGUgc2FtZSBkb2N1bWVudCBhcmUgc2hvd24gaW4gdGhlIHNhbWUgc291cmNlIGZyYW1l
IHdpdGggaHRtbCBzY3JpcHQgdGFncy4KKzxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01NDU0NCI+QnVnIDU0NTQ0LjwvYT4KKzwvcD4KKworPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2RlYnVn
Z2VyLWJyZWFrcG9pbnRzLW5vdC1hY3RpdmF0ZWQtb24tcmVsb2FkLmh0bWwgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZGVidWdnZXIvZGVidWdnZXItYnJlYWtwb2ludHMtbm90LWFjdGl2YXRlZC1v
bi1yZWxvYWQuaHRtbAppbmRleCA1OTNjYTc5Li5jOTNiYmQ3IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvZGVidWdnZXItYnJlYWtwb2ludHMtbm90LWFjdGl2YXRl
ZC1vbi1yZWxvYWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvZGVi
dWdnZXItYnJlYWtwb2ludHMtbm90LWFjdGl2YXRlZC1vbi1yZWxvYWQuaHRtbApAQCAtMjEsMTAg
KzIxLDEwIEBAIHZhciB0ZXN0ID0gZnVuY3Rpb24oKQogICAgICAgICBJbnNwZWN0b3JUZXN0LnNo
b3dTY3JpcHRTb3VyY2UodGVzdE5hbWUsIHN0ZXAyKTsKICAgICB9CiAKLSAgICBmdW5jdGlvbiBz
dGVwMigpCisgICAgZnVuY3Rpb24gc3RlcDIoc291cmNlRnJhbWUpCiAgICAgewogICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiTWFpbiByZXNvdXJjZSB3YXMgc2hvd24uIik7Ci0gICAg
ICAgIEluc3BlY3RvclRlc3Quc2V0QnJlYWtwb2ludEluVmlzaWJsZVZpZXcoOCwgIiIsIHRydWUp
OworICAgICAgICBzb3VyY2VGcmFtZS5fc2V0QnJlYWtwb2ludCg4LCAiIiwgdHJ1ZSk7CiAgICAg
ICAgIFdlYkluc3BlY3Rvci5wYW5lbHMuc2NyaXB0cy50b2dnbGVCcmVha3BvaW50c0J1dHRvbi5l
bGVtZW50LmNsaWNrKCk7CiAgICAgICAgIEluc3BlY3RvclRlc3QucmVsb2FkUGFnZShzdGVwNCk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2RlYnVn
Z2VyLXBhdXNlLW9uLWJyZWFrcG9pbnQuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1
Z2dlci9kZWJ1Z2dlci1wYXVzZS1vbi1icmVha3BvaW50Lmh0bWwKaW5kZXggZDdjOTMxMi4uZGM3
YTE1NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2RlYnVnZ2Vy
LXBhdXNlLW9uLWJyZWFrcG9pbnQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVi
dWdnZXIvZGVidWdnZXItcGF1c2Utb24tYnJlYWtwb2ludC5odG1sCkBAIC0xOSwxMCArMTksMTAg
QEAgdmFyIHRlc3QgPSBmdW5jdGlvbigpCiAgICAgICAgIEluc3BlY3RvclRlc3Quc2hvd1Njcmlw
dFNvdXJjZSgiZGVidWdnZXItcGF1c2Utb24tYnJlYWtwb2ludC5odG1sIiwgc3RlcDIpOwogICAg
IH0KIAotICAgIGZ1bmN0aW9uIHN0ZXAyKCkKKyAgICBmdW5jdGlvbiBzdGVwMihzb3VyY2VGcmFt
ZSkKICAgICB7CiAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJTY3JpcHQgc291cmNl
IHdhcyBzaG93bi4iKTsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5zZXRCcmVha3BvaW50SW5WaXNp
YmxlVmlldyg4LCAiIiwgdHJ1ZSk7CisgICAgICAgIHNvdXJjZUZyYW1lLl9zZXRCcmVha3BvaW50
KDgsICIiLCB0cnVlKTsKICAgICAgICAgSW5zcGVjdG9yVGVzdC5ydW5UZXN0RnVuY3Rpb25BbmRX
YWl0VW50aWxQYXVzZWQoc3RlcDMpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGEwZWJmZDIuLjdl
ZjM1MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAxMS0wMi0xNiAgUGF2ZWwgUG9k
aXZpbG92ICA8cG9kaXZpbG92QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBzaG93IGFsbCBpbmxpbmVk
IHNjcmlwdHMgZnJvbSBzaW5nbGUgZG9jdW1lbnQgaW4gdGhlIHNhbWUgc291cmNlIGZyYW1lLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQ1NDQKKwor
ICAgICAgICBDdXJyZW50bHkgd2hlbiBkZWJ1Z2dpbmcgc3luY2hyb25vdXNseSBleGVjdXRlZCBp
bmxpbmVkIHNjcmlwdHMgZWFjaCBzY3JpcHQgaXMgc2hvd24gaW4gaXQncyBvd24gc291cmNlIGZy
YW1lICgiZXhhbXBsZS5odG1sOjI0IikuCisgICAgICAgIFdlIHNob3VsZCBzaG93IHN1Y2ggc2Ny
aXB0cyBpbiB0aGUgc2FtZSBzb3VyY2UgZnJhbWUgImV4YW1wbGUuaHRtbCIgd2l0aCA8c2NyaXB0
Pjwvc2NyaXB0PiBmcmFtaW5nLgorCisgICAgICAgIFRlc3Q6IGluc3BlY3Rvci9kZWJ1Z2dlci9k
ZWJ1Zy1pbmxpbmVkLXNjcmlwdHMuaHRtbAorCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVu
ZC9TY3JpcHRzUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnBy
b3RvdHlwZS5fc2NyaXB0U291cmNlQ2hhbmdlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2Ny
aXB0c1BhbmVsLnByb3RvdHlwZS5fYWRkU2NyaXB0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5T
Y3JpcHRzUGFuZWwucHJvdG90eXBlLl9yZXNvdXJjZUZvclVSTCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZS5fcmVzb3VyY2VMb2FkaW5nRmluaXNoZWQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUuYWRkQ29uc29sZU1l
c3NhZ2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUuY2xl
YXJDb25zb2xlTWVzc2FnZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5w
cm90b3R5cGUucmVzZXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90
b3R5cGUuX3NvdXJjZUZyYW1lRm9yUmVzb3VyY2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNj
cmlwdHNQYW5lbC5wcm90b3R5cGUuX3NvdXJjZUZyYW1lRm9yU2NyaXB0KToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlLl9yZWNyZWF0ZVNvdXJjZUZyYW1lKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlLl9zaG93U2NyaXB0
T3JSZXNvdXJjZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlw
ZS5fYWRkU2NyaXB0VG9GaWxlc01lbnUub3B0aW9uQ29tcGFyZSk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZS5fYWRkU2NyaXB0VG9GaWxlc01lbnUpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lQ29udGVudFByb3ZpZGVyRm9yU2NyaXB0LnBy
b3RvdHlwZS5yZXF1ZXN0Q29udGVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlRnJh
bWVDb250ZW50UHJvdmlkZXJGb3JTY3JpcHQucHJvdG90eXBlLl9idWlsZFNvdXJjZSk6CisKIDIw
MTEtMDItMTUgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEZpc2hlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMKaW5kZXggM2IyNGQ0NS4uZWEyNWZmNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMK
QEAgLTI1NSwyMyArMjU1LDE0IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBl
ID0gewogICAgICAgICB2YXIgc291cmNlSUQgPSBldmVudC5kYXRhLnNvdXJjZUlEOwogICAgICAg
ICB2YXIgb2xkU291cmNlID0gZXZlbnQuZGF0YS5vbGRTb3VyY2U7CiAKLSAgICAgICAgdmFyIG9s
ZFZpZXcsIG5ld1ZpZXc7CiAgICAgICAgIHZhciBzY3JpcHQgPSBXZWJJbnNwZWN0b3IuZGVidWdn
ZXJNb2RlbC5zY3JpcHRGb3JTb3VyY2VJRChzb3VyY2VJRCk7CiAgICAgICAgIGlmIChzY3JpcHQu
cmVzb3VyY2UpIHsKLSAgICAgICAgICAgIG9sZFZpZXcgPSB0aGlzLl91cmxUb1NvdXJjZUZyYW1l
W3NjcmlwdC5yZXNvdXJjZS51cmxdOwotICAgICAgICAgICAgZGVsZXRlIHRoaXMuX3VybFRvU291
cmNlRnJhbWVbc2NyaXB0LnJlc291cmNlLnVybF07Ci0gICAgICAgICAgICBuZXdWaWV3ID0gdGhp
cy5fc291cmNlRnJhbWVGb3JSZXNvdXJjZShzY3JpcHQucmVzb3VyY2UpOwogICAgICAgICAgICAg
dmFyIHJldmVydEhhbmRsZSA9IFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLmVkaXRTY3JpcHRT
b3VyY2UuYmluZChXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbCwgc291cmNlSUQsIG9sZFNvdXJj
ZSk7CiAgICAgICAgICAgICBzY3JpcHQucmVzb3VyY2Uuc2V0Q29udGVudChzY3JpcHQuc291cmNl
LCByZXZlcnRIYW5kbGUpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgdmFyIG9sZFZp
ZXcgPSBzY3JpcHQuX3NvdXJjZUZyYW1lOwotICAgICAgICAgICAgZGVsZXRlIHNjcmlwdC5fc291
cmNlRnJhbWU7Ci0gICAgICAgICAgICBuZXdWaWV3ID0gdGhpcy5fc291cmNlRnJhbWVGb3JTY3Jp
cHQoc2NyaXB0KTsKICAgICAgICAgfQotICAgICAgICBuZXdWaWV3LnNjcm9sbFRvcCA9IG9sZFZp
ZXcuc2Nyb2xsVG9wOwogCi0gICAgICAgIGlmICh0aGlzLnZpc2libGVWaWV3ID09PSBvbGRWaWV3
KQotICAgICAgICAgICAgdGhpcy52aXNpYmxlVmlldyA9IG5ld1ZpZXc7CisgICAgICAgIHZhciBz
b3VyY2VOYW1lID0gc2NyaXB0LnNvdXJjZVVSTCB8fCBzY3JpcHQuc291cmNlSUQ7CisgICAgICAg
IHRoaXMuX3JlY3JlYXRlU291cmNlRnJhbWUoc291cmNlTmFtZSwgc2NyaXB0LnJlc291cmNlIHx8
IHNjcmlwdCk7CiAKICAgICAgICAgdmFyIGNhbGxGcmFtZXMgPSBXZWJJbnNwZWN0b3IuZGVidWdn
ZXJNb2RlbC5jYWxsRnJhbWVzOwogICAgICAgICBpZiAoY2FsbEZyYW1lcy5sZW5ndGgpCkBAIC0y
ODAsMTEgKzI3MSwxNyBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9IHsK
IAogICAgIF9hZGRTY3JpcHQ6IGZ1bmN0aW9uKHNjcmlwdCkKICAgICB7Ci0gICAgICAgIHZhciBy
ZXNvdXJjZSA9IFdlYkluc3BlY3Rvci5uZXR3b3JrTWFuYWdlci5pbmZsaWdodFJlc291cmNlRm9y
VVJMKHNjcmlwdC5zb3VyY2VVUkwpIHx8IFdlYkluc3BlY3Rvci5yZXNvdXJjZUZvclVSTChzY3Jp
cHQuc291cmNlVVJMKTsKKyAgICAgICAgaWYgKCFzY3JpcHQuc291cmNlVVJMKSB7CisgICAgICAg
ICAgICAvLyBBbm9ueW1vdXMgc2NyaXB0cyBhcmUgc2hvd24gb25seSB3aGVuIHN0ZXBwaW5nLgor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgdmFyIHJlc291cmNlID0g
dGhpcy5fcmVzb3VyY2VGb3JVUkwoc2NyaXB0LnNvdXJjZVVSTCk7CiAgICAgICAgIGlmIChyZXNv
dXJjZSkgewogICAgICAgICAgICAgaWYgKHJlc291cmNlLmZpbmlzaGVkKSB7CiAgICAgICAgICAg
ICAgICAgLy8gUmVzb3VyY2UgaXMgZmluaXNoZWQsIGJpbmQgdGhlIHNjcmlwdCByaWdodCBhd2F5
LgotICAgICAgICAgICAgICAgIHNjcmlwdC5yZXNvdXJjZSA9IHJlc291cmNlOworICAgICAgICAg
ICAgICAgIHJlc291cmNlLl9zY3JpcHRzUGVuZGluZ1Jlc291cmNlTG9hZCA9IFtzY3JpcHRdOwor
ICAgICAgICAgICAgICAgIHRoaXMuX3Jlc291cmNlTG9hZGluZ0ZpbmlzaGVkKHsgdGFyZ2V0OiBy
ZXNvdXJjZSB9KTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgLy8gUmVz
b3VyY2UgaXMgbm90IGZpbmlzaGVkLCBiaW5kIHRoZSBzY3JpcHQgbGF0ZXIuCiAgICAgICAgICAg
ICAgICAgaWYgKCFyZXNvdXJjZS5fc2NyaXB0c1BlbmRpbmdSZXNvdXJjZUxvYWQpIHsKQEAgLTI5
Miw0MCArMjg5LDQzIEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlID0gewog
ICAgICAgICAgICAgICAgICAgICByZXNvdXJjZS5hZGRFdmVudExpc3RlbmVyKCJmaW5pc2hlZCIs
IHRoaXMuX3Jlc291cmNlTG9hZGluZ0ZpbmlzaGVkLCB0aGlzKTsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgcmVzb3VyY2UuX3NjcmlwdHNQZW5kaW5nUmVzb3VyY2VMb2FkLnB1
c2goc2NyaXB0KTsKKworICAgICAgICAgICAgICAgIC8vIFNvdXJjZSBmcmFtZSBjb250ZW50IGlz
IG91dGRhdGVkIHNpbmNlIHdlIGhhdmUgbmV3IHNjcmlwdCBwYXJzZWQuCisgICAgICAgICAgICAg
ICAgdGhpcy5fcmVjcmVhdGVTb3VyY2VGcmFtZShzY3JpcHQuc291cmNlVVJMLCBzY3JpcHQucmVz
b3VyY2UgfHwgc2NyaXB0KTsKICAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIC8vIFRoaXMgaXMgYSBkeW5hbWljIHNjcmlwdCB3aXRoICIvL0Agc291cmNlVVJMPSIg
Y29tbWVudC4KKyAgICAgICAgICAgIHRoaXMuX2FkZFNjcmlwdFRvRmlsZXNNZW51KHNjcmlwdCk7
CiAgICAgICAgIH0KLSAgICAgICAgdGhpcy5fYWRkU2NyaXB0VG9GaWxlc01lbnUoc2NyaXB0KTsK
KyAgICB9LAorCisgICAgX3Jlc291cmNlRm9yVVJMOiBmdW5jdGlvbih1cmwpCisgICAgeworICAg
ICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLm5ldHdvcmtNYW5hZ2VyLmluZmxpZ2h0UmVzb3VyY2VG
b3JVUkwodXJsKSB8fCBXZWJJbnNwZWN0b3IucmVzb3VyY2VGb3JVUkwodXJsKTsKICAgICB9LAog
CiAgICAgX3Jlc291cmNlTG9hZGluZ0ZpbmlzaGVkOiBmdW5jdGlvbihlKQogICAgIHsKICAgICAg
ICAgdmFyIHJlc291cmNlID0gZS50YXJnZXQ7CiAKLSAgICAgICAgdmFyIHZpc2libGUgPSBmYWxz
ZTsKLSAgICAgICAgdmFyIHNlbGVjdCA9IHRoaXMuZmlsZXNTZWxlY3RFbGVtZW50OwogICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IHJlc291cmNlLl9zY3JpcHRzUGVuZGluZ1Jlc291cmNlTG9h
ZC5sZW5ndGg7ICsraSkgewogICAgICAgICAgICAgLy8gQmluZCBzY3JpcHQgdG8gcmVzb3VyY2Uu
CiAgICAgICAgICAgICB2YXIgc2NyaXB0ID0gcmVzb3VyY2UuX3NjcmlwdHNQZW5kaW5nUmVzb3Vy
Y2VMb2FkW2ldOwogICAgICAgICAgICAgc2NyaXB0LnJlc291cmNlID0gcmVzb3VyY2U7CisgICAg
ICAgIH0KIAotICAgICAgICAgICAgaWYgKHNlbGVjdC5vcHRpb25zW3NlbGVjdC5zZWxlY3RlZElu
ZGV4XSA9PT0gc2NyaXB0LmZpbGVzU2VsZWN0T3B0aW9uKQotICAgICAgICAgICAgICAgIHZpc2li
bGUgPSB0cnVlOworICAgICAgICAvLyBSZWNyZWF0ZSBzb3VyY2UgZnJhbWUgdG8gc2hvdyByZXNv
dXJjZSBjb250ZW50LgorICAgICAgICB0aGlzLl9yZWNyZWF0ZVNvdXJjZUZyYW1lKHJlc291cmNl
LnVybCwgcmVzb3VyY2UpOwogCi0gICAgICAgICAgICAvLyBSZW1vdmUgc2NyaXB0IGZyb20gdGhl
IGZpbGVzIGxpc3QuCi0gICAgICAgICAgICBzY3JpcHQuZmlsZXNTZWxlY3RPcHRpb24ucGFyZW50
RWxlbWVudC5yZW1vdmVDaGlsZChzY3JpcHQuZmlsZXNTZWxlY3RPcHRpb24pOwotICAgICAgICB9
CiAgICAgICAgIC8vIEFkZGluZyBmaXJzdCBzY3JpcHQgd2lsbCBhZGQgcmVzb3VyY2UuCiAgICAg
ICAgIHRoaXMuX2FkZFNjcmlwdFRvRmlsZXNNZW51KHJlc291cmNlLl9zY3JpcHRzUGVuZGluZ1Jl
c291cmNlTG9hZFswXSk7CiAgICAgICAgIGRlbGV0ZSByZXNvdXJjZS5fc2NyaXB0c1BlbmRpbmdS
ZXNvdXJjZUxvYWQ7Ci0KLSAgICAgICAgaWYgKHZpc2libGUpCi0gICAgICAgICAgICB0aGlzLl9z
aG93U2NyaXB0T3JSZXNvdXJjZShyZXNvdXJjZSwgeyBpbml0aWFsTG9hZDogdHJ1ZSB9KTsKICAg
ICB9LAogCiAgICAgYWRkQ29uc29sZU1lc3NhZ2U6IGZ1bmN0aW9uKG1lc3NhZ2UpCiAgICAgewog
ICAgICAgICB0aGlzLl9tZXNzYWdlcy5wdXNoKG1lc3NhZ2UpOwotICAgICAgICB2YXIgc291cmNl
RnJhbWUgPSB0aGlzLl91cmxUb1NvdXJjZUZyYW1lW21lc3NhZ2UudXJsXTsKKyAgICAgICAgdmFy
IHNvdXJjZUZyYW1lID0gdGhpcy5fc291cmNlTmFtZVRvU291cmNlRnJhbWVbbWVzc2FnZS51cmxd
OwogICAgICAgICBpZiAoc291cmNlRnJhbWUpCiAgICAgICAgICAgICBzb3VyY2VGcmFtZS5hZGRN
ZXNzYWdlKG1lc3NhZ2UpOwogICAgIH0sCkBAIC0zMzMsOCArMzMzLDggQEAgV2ViSW5zcGVjdG9y
LlNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgY2xlYXJDb25zb2xlTWVzc2FnZXM6IGZ1
bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHRoaXMuX21lc3NhZ2VzID0gW107Ci0gICAgICAgIGZv
ciAodmFyIHVybCBpbiB0aGlzLl91cmxUb1NvdXJjZUZyYW1lKQotICAgICAgICAgICAgdGhpcy5f
dXJsVG9Tb3VyY2VGcmFtZVt1cmxdLmNsZWFyTWVzc2FnZXMoKTsKKyAgICAgICAgZm9yICh2YXIg
dXJsIGluIHRoaXMuX3NvdXJjZU5hbWVUb1NvdXJjZUZyYW1lKQorICAgICAgICAgICAgdGhpcy5f
c291cmNlTmFtZVRvU291cmNlRnJhbWVbdXJsXS5jbGVhck1lc3NhZ2VzKCk7CiAgICAgfSwKIAog
ICAgIHNlbGVjdGVkQ2FsbEZyYW1lSWQ6IGZ1bmN0aW9uKCkKQEAgLTQyNSw5ICs0MjUsOSBAQCBX
ZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fY3Vy
cmVudEJhY2tGb3J3YXJkSW5kZXggPSAtMTsKICAgICAgICAgdGhpcy5fdXBkYXRlQmFja0FuZEZv
cndhcmRCdXR0b25zKCk7CiAKLSAgICAgICAgdGhpcy5fdXJsVG9Tb3VyY2VGcmFtZSA9IHt9Owor
ICAgICAgICB0aGlzLl9zb3VyY2VOYW1lVG9Tb3VyY2VGcmFtZSA9IHt9OworICAgICAgICB0aGlz
Ll9zb3VyY2VOYW1lVG9GaWxlc1NlbGVjdE9wdGlvbiA9IHt9OwogICAgICAgICB0aGlzLl9tZXNz
YWdlcyA9IFtdOwotICAgICAgICB0aGlzLl9yZXNvdXJjZUZvclVSTEluRmlsZXNTZWxlY3QgPSB7
fTsKICAgICAgICAgdGhpcy5maWxlc1NlbGVjdEVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKICAg
ICAgICAgdGhpcy5mdW5jdGlvbnNTZWxlY3RFbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7CiAgICAg
ICAgIHRoaXMudmlld3NDb250YWluZXJFbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7CkBAIC01MDks
OSArNTA5LDEwIEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogCiAg
ICAgX3NvdXJjZUZyYW1lRm9yUmVzb3VyY2U6IGZ1bmN0aW9uKHJlc291cmNlKQogICAgIHsKLSAg
ICAgICAgdmFyIHNvdXJjZUZyYW1lID0gdGhpcy5fdXJsVG9Tb3VyY2VGcmFtZVtyZXNvdXJjZS51
cmxdOworICAgICAgICB2YXIgc291cmNlRnJhbWUgPSB0aGlzLl9zb3VyY2VOYW1lVG9Tb3VyY2VG
cmFtZVtyZXNvdXJjZS51cmxdOwogICAgICAgICBpZiAoc291cmNlRnJhbWUpCiAgICAgICAgICAg
ICByZXR1cm4gc291cmNlRnJhbWU7CisKICAgICAgICAgdmFyIGNvbnRlbnRQcm92aWRlciA9IG5l
dyBXZWJJbnNwZWN0b3IuU291cmNlRnJhbWVDb250ZW50UHJvdmlkZXJGb3JSZXNvdXJjZShyZXNv
dXJjZSk7CiAgICAgICAgIHZhciBpc1NjcmlwdCA9IHJlc291cmNlLnR5cGUgPT09IFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZS5UeXBlLlNjcmlwdDsKICAgICAgICAgc291cmNlRnJhbWUgPSBuZXcgV2Vi
SW5zcGVjdG9yLlNvdXJjZUZyYW1lKGNvbnRlbnRQcm92aWRlciwgcmVzb3VyY2UudXJsLCBpc1Nj
cmlwdCk7CkBAIC01MjAsMTcgKzUyMSwzNiBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgICAgIGlmICh0aGlzLl9tZXNzYWdlc1tpXS51cmwgPT09IHJl
c291cmNlLnVybCkKICAgICAgICAgICAgICAgICBzb3VyY2VGcmFtZS5hZGRNZXNzYWdlKG1lc3Nh
Z2UpOwogICAgICAgICB9Ci0gICAgICAgIHRoaXMuX3VybFRvU291cmNlRnJhbWVbcmVzb3VyY2Uu
dXJsXSA9IHNvdXJjZUZyYW1lOworICAgICAgICB0aGlzLl9zb3VyY2VOYW1lVG9Tb3VyY2VGcmFt
ZVtyZXNvdXJjZS51cmxdID0gc291cmNlRnJhbWU7CiAgICAgICAgIHJldHVybiBzb3VyY2VGcmFt
ZTsKICAgICB9LAogCiAgICAgX3NvdXJjZUZyYW1lRm9yU2NyaXB0OiBmdW5jdGlvbihzY3JpcHQp
CiAgICAgewotICAgICAgICBpZiAoc2NyaXB0Ll9zb3VyY2VGcmFtZSkKLSAgICAgICAgICAgIHJl
dHVybiBzY3JpcHQuX3NvdXJjZUZyYW1lOworICAgICAgICB2YXIgc291cmNlTmFtZSA9IHNjcmlw
dC5zb3VyY2VVUkwgfHwgc2NyaXB0LnNvdXJjZUlEOworICAgICAgICB2YXIgc291cmNlRnJhbWUg
PSB0aGlzLl9zb3VyY2VOYW1lVG9Tb3VyY2VGcmFtZVtzb3VyY2VOYW1lXTsKKyAgICAgICAgaWYg
KHNvdXJjZUZyYW1lKQorICAgICAgICAgICAgcmV0dXJuIHNvdXJjZUZyYW1lOworCiAgICAgICAg
IHZhciBjb250ZW50UHJvdmlkZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lQ29udGVu
dFByb3ZpZGVyRm9yU2NyaXB0KHNjcmlwdCk7Ci0gICAgICAgIHNjcmlwdC5fc291cmNlRnJhbWUg
PSBuZXcgV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lKGNvbnRlbnRQcm92aWRlciwgc2NyaXB0LnNv
dXJjZVVSTCwgdHJ1ZSk7Ci0gICAgICAgIHJldHVybiBzY3JpcHQuX3NvdXJjZUZyYW1lOworICAg
ICAgICB2YXIgaXNTY3JpcHQgPSAhc2NyaXB0LmxpbmVPZmZzZXQgJiYgIXNjcmlwdC5jb2x1bW5P
ZmZzZXQ7CisgICAgICAgIHNvdXJjZUZyYW1lID0gbmV3IFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFt
ZShjb250ZW50UHJvdmlkZXIsIHNjcmlwdC5zb3VyY2VVUkwsIGlzU2NyaXB0KTsKKyAgICAgICAg
dGhpcy5fc291cmNlTmFtZVRvU291cmNlRnJhbWVbc291cmNlTmFtZV0gPSBzb3VyY2VGcmFtZTsK
KyAgICAgICAgcmV0dXJuIHNvdXJjZUZyYW1lOworICAgIH0sCisKKyAgICBfcmVjcmVhdGVTb3Vy
Y2VGcmFtZTogZnVuY3Rpb24oc291cmNlTmFtZSwgc2NyaXB0T3JSZXNvdXJjZSkKKyAgICB7Cisg
ICAgICAgIHZhciBvbGRTb3VyY2VGcmFtZSA9IHRoaXMuX3NvdXJjZU5hbWVUb1NvdXJjZUZyYW1l
W3NvdXJjZU5hbWVdOworICAgICAgICBpZiAoIW9sZFNvdXJjZUZyYW1lKQorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICBkZWxldGUgdGhpcy5fc291cmNlTmFtZVRvU291cmNlRnJhbWVbc291
cmNlTmFtZV07CisgICAgICAgIGlmICh0aGlzLnZpc2libGVWaWV3ICE9PSBvbGRTb3VyY2VGcmFt
ZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB2YXIgbmV3U291cmNlRnJhbWUgPSB0
aGlzLl9zb3VyY2VGcmFtZUZvclNjcmlwdE9yUmVzb3VyY2Uoc2NyaXB0T3JSZXNvdXJjZSkKKyAg
ICAgICAgbmV3U291cmNlRnJhbWUuc2Nyb2xsVG9wID0gb2xkU291cmNlRnJhbWUuc2Nyb2xsVG9w
OworICAgICAgICB0aGlzLnZpc2libGVWaWV3ID0gbmV3U291cmNlRnJhbWU7CiAgICAgfSwKIAog
ICAgIF9zaG93U2NyaXB0T3JSZXNvdXJjZTogZnVuY3Rpb24oc2NyaXB0T3JSZXNvdXJjZSwgb3B0
aW9ucykKQEAgLTU3OSw1NSArNTk5LDQyIEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJv
dG90eXBlID0gewogCiAgICAgICAgIHZhciBvcHRpb247CiAgICAgICAgIGlmIChzY3JpcHRPclJl
c291cmNlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlNjcmlwdCkgewotICAgICAgICAgICAgb3B0
aW9uID0gc2NyaXB0T3JSZXNvdXJjZS5maWxlc1NlbGVjdE9wdGlvbjsKKyAgICAgICAgICAgIHZh
ciBzb3VyY2VOYW1lID0gc2NyaXB0T3JSZXNvdXJjZS5zb3VyY2VVUkwgfHwgc2NyaXB0T3JSZXNv
dXJjZS5zb3VyY2VJRDsKKyAgICAgICAgICAgIG9wdGlvbiA9IHRoaXMuX3NvdXJjZU5hbWVUb0Zp
bGVzU2VsZWN0T3B0aW9uW3NvdXJjZU5hbWVdOwogCi0gICAgICAgICAgICAvLyBoYXNuJ3QgYmVl
biBhZGRlZCB5ZXQgLSBoYXBwZW5zIGZvciBzdGVwcGluZyBpbiBldmFscywKLSAgICAgICAgICAg
IC8vIHNvIHVzZSB0aGUgZm9yY2Ugb3B0aW9uIHRvIGZvcmNlIHRoZSBzY3JpcHQgaW50byB0aGUg
bWVudS4KKyAgICAgICAgICAgIC8vIEhhc24ndCBiZWVuIGFkZGVkIHlldCAtIGhhcHBlbnMgZm9y
IHN0ZXBwaW5nIGluIGlubGluZSBzY3JpcHRzIGFuZCBldmFscy4KICAgICAgICAgICAgIGlmICgh
b3B0aW9uKSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5fYWRkU2NyaXB0VG9GaWxlc01lbnUoc2Ny
aXB0T3JSZXNvdXJjZSwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgb3B0aW9uID0gc2NyaXB0T3JS
ZXNvdXJjZS5maWxlc1NlbGVjdE9wdGlvbjsKKyAgICAgICAgICAgICAgICB0aGlzLl9hZGRTY3Jp
cHRUb0ZpbGVzTWVudShzY3JpcHRPclJlc291cmNlKTsKKyAgICAgICAgICAgICAgICBvcHRpb24g
PSB0aGlzLl9zb3VyY2VOYW1lVG9GaWxlc1NlbGVjdE9wdGlvbltzb3VyY2VOYW1lXTsKICAgICAg
ICAgICAgIH0KIAogICAgICAgICAgICAgY29uc29sZS5hc3NlcnQob3B0aW9uKTsKICAgICAgICAg
fSBlbHNlCi0gICAgICAgICAgICBvcHRpb24gPSBzY3JpcHRPclJlc291cmNlLmZpbGVzU2VsZWN0
T3B0aW9uOworICAgICAgICAgICAgb3B0aW9uID0gdGhpcy5fc291cmNlTmFtZVRvRmlsZXNTZWxl
Y3RPcHRpb25bc2NyaXB0T3JSZXNvdXJjZS51cmxdOwogCiAgICAgICAgIGlmIChvcHRpb24pCiAg
ICAgICAgICAgICB0aGlzLmZpbGVzU2VsZWN0RWxlbWVudC5zZWxlY3RlZEluZGV4ID0gb3B0aW9u
LmluZGV4OwogICAgIH0sCiAKLSAgICBfYWRkU2NyaXB0VG9GaWxlc01lbnU6IGZ1bmN0aW9uKHNj
cmlwdCwgZm9yY2UpCisgICAgX2FkZFNjcmlwdFRvRmlsZXNNZW51OiBmdW5jdGlvbihzY3JpcHQp
CiAgICAgewotICAgICAgICBpZiAoIXNjcmlwdC5zb3VyY2VVUkwgJiYgIWZvcmNlKQorICAgICAg
ICB2YXIgc291cmNlTmFtZSA9IHNjcmlwdC5zb3VyY2VVUkwgfHwgc2NyaXB0LnNvdXJjZUlEOwor
ICAgICAgICBpZiAoc291cmNlTmFtZSBpbiB0aGlzLl9zb3VyY2VOYW1lVG9GaWxlc1NlbGVjdE9w
dGlvbikKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoc2NyaXB0LnJlc291cmNl
KSB7Ci0gICAgICAgICAgICBpZiAodGhpcy5fcmVzb3VyY2VGb3JVUkxJbkZpbGVzU2VsZWN0W3Nj
cmlwdC5yZXNvdXJjZS51cmxdKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAg
IHRoaXMuX3Jlc291cmNlRm9yVVJMSW5GaWxlc1NlbGVjdFtzY3JpcHQucmVzb3VyY2UudXJsXSA9
IHNjcmlwdC5yZXNvdXJjZTsKLSAgICAgICAgfQotCiAgICAgICAgIHZhciBkaXNwbGF5TmFtZSA9
IHNjcmlwdC5zb3VyY2VVUkwgPyBXZWJJbnNwZWN0b3IuZGlzcGxheU5hbWVGb3JVUkwoc2NyaXB0
LnNvdXJjZVVSTCkgOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIihwcm9ncmFtKSIpOwogCiAgICAg
ICAgIHZhciBzZWxlY3QgPSB0aGlzLmZpbGVzU2VsZWN0RWxlbWVudDsKICAgICAgICAgdmFyIG9w
dGlvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpOwogICAgICAgICBvcHRpb24u
cmVwcmVzZW50ZWRPYmplY3QgPSBzY3JpcHQucmVzb3VyY2UgfHwgc2NyaXB0OwotICAgICAgICBv
cHRpb24udXJsID0gZGlzcGxheU5hbWU7Ci0gICAgICAgIG9wdGlvbi5zdGFydGluZ0xpbmUgPSBz
Y3JpcHQuc3RhcnRpbmdMaW5lOwotICAgICAgICBvcHRpb24udGV4dCA9IHNjcmlwdC5yZXNvdXJj
ZSB8fCBzY3JpcHQuc3RhcnRpbmdMaW5lID09PSAxID8gZGlzcGxheU5hbWUgOiBTdHJpbmcuc3By
aW50ZigiJXM6JWQiLCBkaXNwbGF5TmFtZSwgc2NyaXB0LnN0YXJ0aW5nTGluZSk7CisgICAgICAg
IG9wdGlvbi50ZXh0ID0gZGlzcGxheU5hbWU7CisgICAgICAgIHRoaXMuX3NvdXJjZU5hbWVUb0Zp
bGVzU2VsZWN0T3B0aW9uW3NvdXJjZU5hbWVdID0gb3B0aW9uOwogCiAgICAgICAgIGZ1bmN0aW9u
IG9wdGlvbkNvbXBhcmUoYSwgYikKICAgICAgICAgewotICAgICAgICAgICAgaWYgKGEudXJsIDwg
Yi51cmwpCi0gICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgZWxzZSBpZiAo
YS51cmwgPiBiLnVybCkKLSAgICAgICAgICAgICAgICByZXR1cm4gMTsKLQotICAgICAgICAgICAg
aWYgKHR5cGVvZiBhLnN0YXJ0aW5nTGluZSAhPT0gIm51bWJlciIpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIC0xOwotICAgICAgICAgICAgaWYgKHR5cGVvZiBiLnN0YXJ0aW5nTGluZSAhPT0gIm51
bWJlciIpCi0gICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgcmV0dXJuIGEu
c3RhcnRpbmdMaW5lIC0gYi5zdGFydGluZ0xpbmU7CisgICAgICAgICAgICBpZiAoYS50ZXh0ID09
PSBiLnRleHQpCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4g
YS50ZXh0IDwgYi50ZXh0ID8gLTEgOiAxOwogICAgICAgICB9CiAKICAgICAgICAgdmFyIGluc2Vy
dGlvbkluZGV4ID0gaW5zZXJ0aW9uSW5kZXhGb3JPYmplY3RJbkxpc3RTb3J0ZWRCeUZ1bmN0aW9u
KG9wdGlvbiwgc2VsZWN0LmNoaWxkTm9kZXMsIG9wdGlvbkNvbXBhcmUpOwpAQCAtNjM2LDExICs2
NDMsNiBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgc2VsZWN0Lmluc2VydEJlZm9yZShvcHRpb24sIHNlbGVjdC5jaGls
ZE5vZGVzLml0ZW0oaW5zZXJ0aW9uSW5kZXgpKTsKIAotICAgICAgICBpZiAoc2NyaXB0LnJlc291
cmNlKQotICAgICAgICAgICAgc2NyaXB0LnJlc291cmNlLmZpbGVzU2VsZWN0T3B0aW9uID0gb3B0
aW9uOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBzY3JpcHQuZmlsZXNTZWxlY3RPcHRpb24g
PSBvcHRpb247Ci0KICAgICAgICAgaWYgKHNlbGVjdC5vcHRpb25zW3NlbGVjdC5zZWxlY3RlZElu
ZGV4XSA9PT0gb3B0aW9uKSB7CiAgICAgICAgICAgICAvLyBDYWxsIF9zaG93U2NyaXB0T3JSZXNv
dXJjZSBpZiB0aGUgb3B0aW9uIHdlIGp1c3QgYXBwZW5kZWQgZW5kZWQgdXAgYmVpbmcgc2VsZWN0
ZWQuCiAgICAgICAgICAgICAvLyBUaGlzIHdpbGwgaGFwcGVuIGZvciB0aGUgZmlyc3QgaXRlbSBh
ZGRlZCB0byB0aGUgbWVudS4KQEAgLTY0OSwxOCArNjUxLDEyIEBAIFdlYkluc3BlY3Rvci5TY3Jp
cHRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgLy8gSWYgbm90IGZpcnN0IGl0ZW0s
IGNoZWNrIHRvIHNlZSBpZiB0aGlzIHdhcyB0aGUgbGFzdCB2aWV3ZWQKICAgICAgICAgICAgIHZh
ciB1cmwgPSBvcHRpb24ucmVwcmVzZW50ZWRPYmplY3QudXJsIHx8IG9wdGlvbi5yZXByZXNlbnRl
ZE9iamVjdC5zb3VyY2VVUkw7CiAgICAgICAgICAgICB2YXIgbGFzdFVSTCA9IFdlYkluc3BlY3Rv
ci5zZXR0aW5ncy5sYXN0Vmlld2VkU2NyaXB0RmlsZTsKLSAgICAgICAgICAgIGlmICh1cmwgJiYg
dXJsID09PSBsYXN0VVJMKSB7Ci0gICAgICAgICAgICAgICAgLy8gRm9yIHJlc291cmNlcyBjb250
YWluaW5nIG11bHRpcGxlIDxzY3JpcHQ+IHRhZ3MsIHdlIGZpcnN0IHJlcG9ydCB0aGVtIHNlcGFy
YXRlbHkgYW5kCi0gICAgICAgICAgICAgICAgLy8gdGhlbiBnbHVlIHRoZW0gYWxsIHRvZ2V0aGVy
LiBUaGV5IGFsbCBzaGFyZSB1cmwgYW5kIHRoZXJlIGlzIG5vIG5lZWQgdG8gc2hvdyB0aGVtIGFs
bCBvbmUKLSAgICAgICAgICAgICAgICAvLyBieSBvbmUuCi0gICAgICAgICAgICAgICAgdmFyIGlz
UmVzb3VyY2UgPSAhIW9wdGlvbi5yZXByZXNlbnRlZE9iamVjdC51cmw7Ci0gICAgICAgICAgICAg
ICAgaWYgKGlzUmVzb3VyY2UgfHwgIXRoaXMudmlzaWJsZVZpZXcgfHwgIXRoaXMudmlzaWJsZVZp
ZXcuc2NyaXB0IHx8IHRoaXMudmlzaWJsZVZpZXcuc2NyaXB0LnNvdXJjZVVSTCAhPT0gdXJsKQot
ICAgICAgICAgICAgICAgICAgICB0aGlzLl9zaG93U2NyaXB0T3JSZXNvdXJjZShvcHRpb24ucmVw
cmVzZW50ZWRPYmplY3QsIHtpbml0aWFsTG9hZDogdHJ1ZX0pOwotICAgICAgICAgICAgfQorICAg
ICAgICAgICAgaWYgKHVybCAmJiB1cmwgPT09IGxhc3RVUkwpCisgICAgICAgICAgICAgICAgdGhp
cy5fc2hvd1NjcmlwdE9yUmVzb3VyY2Uob3B0aW9uLnJlcHJlc2VudGVkT2JqZWN0LCB7aW5pdGlh
bExvYWQ6IHRydWV9KTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChzY3JpcHQud29ybGRUeXBl
ID09PSBXZWJJbnNwZWN0b3IuU2NyaXB0LldvcmxkVHlwZS5FWFRFTlNJT05TX1dPUkxEKQotICAg
ICAgICAgICAgc2NyaXB0LmZpbGVzU2VsZWN0T3B0aW9uLmFkZFN0eWxlQ2xhc3MoImV4dGVuc2lv
bi1zY3JpcHQiKTsKKyAgICAgICAgICAgIG9wdGlvbi5hZGRTdHlsZUNsYXNzKCJleHRlbnNpb24t
c2NyaXB0Iik7CiAgICAgfSwKIAogICAgIF9jbGVhckN1cnJlbnRFeGVjdXRpb25MaW5lOiBmdW5j
dGlvbigpCkBAIC0xMDYyLDIxICsxMDU4LDczIEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZUNv
bnRlbnRQcm92aWRlckZvclNjcmlwdCA9IGZ1bmN0aW9uKHNjcmlwdCkKIFdlYkluc3BlY3Rvci5T
b3VyY2VGcmFtZUNvbnRlbnRQcm92aWRlckZvclNjcmlwdC5wcm90b3R5cGUgPSB7CiAgICAgcmVx
dWVzdENvbnRlbnQ6IGZ1bmN0aW9uKGNhbGxiYWNrKQogICAgIHsKLSAgICAgICAgZnVuY3Rpb24g
ZGlkUmVxdWVzdFNvdXJjZShzb3VyY2UpCisgICAgICAgIHZhciBzY3JpcHRzID0gW3RoaXMuX3Nj
cmlwdF07CisgICAgICAgIGlmICh0aGlzLl9zY3JpcHQuc291cmNlVVJMKQorICAgICAgICAgICAg
c2NyaXB0cyA9IFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLnNjcmlwdHNGb3JVUkwodGhpcy5f
c2NyaXB0LnNvdXJjZVVSTCk7CisgICAgICAgIHNjcmlwdHMuc29ydChmdW5jdGlvbih4LCB5KSB7
IHJldHVybiB4LmxpbmVPZmZzZXQgLSB5LmxpbmVPZmZzZXQgfHwgeC5jb2x1bW5PZmZzZXQgLSB5
LmNvbHVtbk9mZnNldDsgfSk7CisKKyAgICAgICAgdmFyIHNjcmlwdHNMZWZ0ID0gc2NyaXB0cy5s
ZW5ndGg7CisgICAgICAgIHZhciBzb3VyY2VzID0gW107CisgICAgICAgIGZ1bmN0aW9uIGRpZFJl
cXVlc3RTb3VyY2UoaW5kZXgsIHNvdXJjZSkKICAgICAgICAgewotICAgICAgICAgICAgaWYgKHNv
dXJjZSkgewotICAgICAgICAgICAgICAgIHZhciBwcmVmaXggPSAiIjsKLSAgICAgICAgICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX3NjcmlwdC5saW5lT2Zmc2V0OyArK2kpCi0gICAg
ICAgICAgICAgICAgICAgIHByZWZpeCArPSAiXG4iOwotICAgICAgICAgICAgICAgIHNvdXJjZSA9
IHByZWZpeCArIHNvdXJjZTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHNv
dXJjZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiPHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlPiIp
OwotCisgICAgICAgICAgICBzb3VyY2VzW2luZGV4XSA9IHNvdXJjZTsKKyAgICAgICAgICAgIGlm
ICgtLXNjcmlwdHNMZWZ0KQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHZh
ciByZXN1bHQgPSB0aGlzLl9idWlsZFNvdXJjZShzY3JpcHRzLCBzb3VyY2VzKTsKICAgICAgICAg
ICAgIHZhciBzb3VyY2VNYXBwaW5nID0gbmV3IFdlYkluc3BlY3Rvci5JZGVudGljYWxTb3VyY2VN
YXBwaW5nKCk7Ci0gICAgICAgICAgICB2YXIgc2NyaXB0UmFuZ2VzID0gV2ViSW5zcGVjdG9yLlNj
cmlwdEZvcm1hdHRlci5maW5kU2NyaXB0UmFuZ2VzKHNvdXJjZS5saW5lRW5kaW5ncygpLCBbdGhp
cy5fc2NyaXB0XSk7Ci0gICAgICAgICAgICBjYWxsYmFjaygidGV4dC9qYXZhc2NyaXB0IiwgbmV3
IFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZUNvbnRlbnQoc291cmNlLCBzb3VyY2VNYXBwaW5nLCBz
Y3JpcHRSYW5nZXMpKTsKKyAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdC5taW1lVHlwZSwgbmV3
IFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZUNvbnRlbnQocmVzdWx0LnNvdXJjZSwgc291cmNlTWFw
cGluZywgcmVzdWx0LnNjcmlwdFJhbmdlcykpOworCisgICAgICAgIH0KKyAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBzY3JpcHRzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgc2NyaXB0c1tp
XS5yZXF1ZXN0U291cmNlKGRpZFJlcXVlc3RTb3VyY2UuYmluZCh0aGlzLCBpKSk7CisgICAgfSwK
KworICAgIF9idWlsZFNvdXJjZTogZnVuY3Rpb24oc2NyaXB0cywgc291cmNlcykKKyAgICB7Cisg
ICAgICAgIHZhciBzb3VyY2UgPSAiIjsKKyAgICAgICAgdmFyIGxpbmVOdW1iZXIgPSAwLCBjb2x1
bW5OdW1iZXIgPSAwOworICAgICAgICB2YXIgc2NyaXB0UmFuZ2VzID0gW107CisgICAgICAgIGZ1
bmN0aW9uIGFwcGVuZENodW5rKGNodW5rLCBpc1NjcmlwdCkKKyAgICAgICAgeworICAgICAgICAg
ICAgdmFyIHN0YXJ0ID0geyBsaW5lTnVtYmVyOiBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXI6IGNv
bHVtbk51bWJlciB9OworICAgICAgICAgICAgc291cmNlICs9IGNodW5rOworICAgICAgICAgICAg
dmFyIGxpbmVFbmRpbmdzID0gY2h1bmsubGluZUVuZGluZ3MoKTsKKyAgICAgICAgICAgIHZhciBs
aW5lQ291bnQgPSBsaW5lRW5kaW5ncy5sZW5ndGg7CisgICAgICAgICAgICBpZiAobGluZUNvdW50
ID09PSAxKQorICAgICAgICAgICAgICAgIGNvbHVtbk51bWJlciArPSBjaHVuay5sZW5ndGg7Cisg
ICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBsaW5lTnVtYmVyICs9IGxpbmVDb3Vu
dCAtIDE7CisgICAgICAgICAgICAgICAgY29sdW1uTnVtYmVyID0gbGluZUVuZGluZ3NbbGluZUNv
dW50IC0gMV0gLSBsaW5lRW5kaW5nc1tsaW5lQ291bnQgLSAyXSAtIDE7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICB2YXIgZW5kID0geyBsaW5lTnVtYmVyOiBsaW5lTnVtYmVyLCBjb2x1bW5O
dW1iZXI6IGNvbHVtbk51bWJlciB9OworICAgICAgICAgICAgaWYgKGlzU2NyaXB0KQorICAgICAg
ICAgICAgICAgIHNjcmlwdFJhbmdlcy5wdXNoKHsgc3RhcnQ6IHN0YXJ0LCBlbmQ6IGVuZCB9KTsK
KyAgICAgICAgfQorCisgICAgICAgIHZhciBtaW1lVHlwZTsKKyAgICAgICAgaWYgKHNjcmlwdHMu
bGVuZ3RoID09PSAxICYmICFzY3JpcHRzWzBdLmxpbmVPZmZzZXQgJiYgIXNjcmlwdHNbMF0uY29s
dW1uT2Zmc2V0KSB7CisgICAgICAgICAgICAvLyBTaW5nbGUgc2NyaXB0IHNvdXJjZS4KKyAgICAg
ICAgICAgIG1pbWVUeXBlID0gInRleHQvamF2YXNjcmlwdCI7CisgICAgICAgICAgICBhcHBlbmRD
aHVuayhzb3VyY2VzWzBdLCB0cnVlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8v
IFNjcmlwdHMgaW5saW5lZCBpbiBodG1sIGRvY3VtZW50LgorICAgICAgICAgICAgbWltZVR5cGUg
PSAidGV4dC9odG1sIjsKKyAgICAgICAgICAgIHZhciBzY3JpcHRPcGVuVGFnID0gIjxzY3JpcHQ+
IjsKKyAgICAgICAgICAgIHZhciBzY3JpcHRDbG9zZVRhZyA9ICI8L3NjcmlwdD4iOworICAgICAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzY3JpcHRzLmxlbmd0aDsgKytpKSB7CisgICAgICAg
ICAgICAgICAgLy8gRmlsbCB0aGUgZ2FwIHdpdGggd2hpdGVzcGFjZSBjaGFyYWN0ZXJzLgorICAg
ICAgICAgICAgICAgIHdoaWxlIChsaW5lTnVtYmVyIDwgc2NyaXB0c1tpXS5saW5lT2Zmc2V0KQor
ICAgICAgICAgICAgICAgICAgICBhcHBlbmRDaHVuaygiXG4iKTsKKyAgICAgICAgICAgICAgICB3
aGlsZSAoY29sdW1uTnVtYmVyIDwgc2NyaXB0c1tpXS5jb2x1bW5PZmZzZXQgLSBzY3JpcHRPcGVu
VGFnLmxlbmd0aCkKKyAgICAgICAgICAgICAgICAgICAgYXBwZW5kQ2h1bmsoIiAiKTsKKworICAg
ICAgICAgICAgICAgIC8vIEFkZCBzY3JpcHQgdGFnLgorICAgICAgICAgICAgICAgIGFwcGVuZENo
dW5rKHNjcmlwdE9wZW5UYWcpOworICAgICAgICAgICAgICAgIGFwcGVuZENodW5rKHNvdXJjZXNb
aV0sIHRydWUpOworICAgICAgICAgICAgICAgIGFwcGVuZENodW5rKHNjcmlwdENsb3NlVGFnKTsK
KyAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICB0aGlzLl9zY3JpcHQucmVxdWVzdFNv
dXJjZShkaWRSZXF1ZXN0U291cmNlLmJpbmQodGhpcykpOworICAgICAgICByZXR1cm4geyBtaW1l
VHlwZTogbWltZVR5cGUsIHNvdXJjZTogc291cmNlLCBzY3JpcHRSYW5nZXM6IHNjcmlwdFJhbmdl
cyB9OwogICAgIH0KIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82635</attachid>
            <date>2011-02-16 07:47:29 -0800</date>
            <delta_ts>2011-02-16 09:36:35 -0800</delta_ts>
            <desc>Patch.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>27105</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0OWM2OTQzLi44YTQ2N2Q1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDIt
MTYgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjogc2hv
dyBhbGwgaW5saW5lZCBzY3JpcHRzIGZyb20gc2luZ2xlIGRvY3VtZW50IGluIHRoZSBzYW1lIHNv
dXJjZSBmcmFtZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTU0NTQ0CisKKyAgICAgICAgQ3VycmVudGx5IHdoZW4gZGVidWdnaW5nIHN5bmNocm9ub3Vz
bHkgZXhlY3V0ZWQgaW5saW5lZCBzY3JpcHRzIGVhY2ggc2NyaXB0IGlzIHNob3duIGluIGl0J3Mg
b3duIHNvdXJjZSBmcmFtZSAoImV4YW1wbGUuaHRtbDoyNCIpLgorICAgICAgICBXZSBzaG91bGQg
c2hvdyBzdWNoIHNjcmlwdHMgaW4gdGhlIHNhbWUgc291cmNlIGZyYW1lICJleGFtcGxlLmh0bWwi
IHdpdGggPHNjcmlwdD48L3NjcmlwdD4gZnJhbWluZy4KKworICAgICAgICAqIGh0dHAvdGVzdHMv
aW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3QuanM6CisgICAgICAgIChpbml0aWFsaXplX0RlYnVnZ2Vy
VGVzdC5JbnNwZWN0b3JUZXN0Ll9wYXVzZWRTY3JpcHQpOgorICAgICAgICAoaW5pdGlhbGl6ZV9E
ZWJ1Z2dlclRlc3QuSW5zcGVjdG9yVGVzdC5fcmVzdW1lZFNjcmlwdCk6CisgICAgICAgICogaW5z
cGVjdG9yL2RlYnVnZ2VyL2RlYnVnLWlubGluZWQtc2NyaXB0cy1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9kZWJ1Zy1pbmxpbmVkLXNjcmlwdHMuaHRt
bDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL2RlYnVnZ2VyLWJyZWFrcG9p
bnRzLW5vdC1hY3RpdmF0ZWQtb24tcmVsb2FkLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2Rl
YnVnZ2VyL2RlYnVnZ2VyLXBhdXNlLW9uLWJyZWFrcG9pbnQuaHRtbDoKKwogMjAxMS0wMi0xNSAg
S2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
RGFyaW4gRmlzaGVyLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvZGVidWdnZXItdGVzdC5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2Rl
YnVnZ2VyLXRlc3QuanMKaW5kZXggNDIyZjVjNi4uNjAwNDg0MCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItdGVzdC5qcworKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10ZXN0LmpzCkBAIC0xLDcgKzEsOCBA
QAogdmFyIGluaXRpYWxpemVfRGVidWdnZXJUZXN0ID0gZnVuY3Rpb24oKSB7CiAKLUluc3BlY3Rv
clRlc3Quc3RhcnREZWJ1Z2dlclRlc3QgPSBmdW5jdGlvbihjYWxsYmFjaykKK0luc3BlY3RvclRl
c3Quc3RhcnREZWJ1Z2dlclRlc3QgPSBmdW5jdGlvbihjYWxsYmFjaywgcXVpZXQpCiB7CisgICAg
SW5zcGVjdG9yVGVzdC5fcXVpZXQgPSBxdWlldDsKICAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVs
KCJzY3JpcHRzIik7CiAKICAgICBpZiAoV2ViSW5zcGVjdG9yLnBhbmVscy5zY3JpcHRzLl9kZWJ1
Z2dlckVuYWJsZWQpCkBAIC05MCwxNCArOTEsMTAgQEAgSW5zcGVjdG9yVGVzdC5jYXB0dXJlU3Rh
Y2tUcmFjZSA9IGZ1bmN0aW9uKGNhbGxGcmFtZXMpCiAgICAgfQogfTsKIAotSW5zcGVjdG9yVGVz
dC5zZXRCcmVha3BvaW50SW5WaXNpYmxlVmlldyA9IGZ1bmN0aW9uKGxpbmVOdW1iZXIsIGNvbmRp
dGlvbiwgZW5hYmxlZCkKLXsKLSAgICBXZWJJbnNwZWN0b3IuY3VycmVudFBhbmVsLnZpc2libGVW
aWV3Ll9zZXRCcmVha3BvaW50KGxpbmVOdW1iZXIsIGNvbmRpdGlvbiwgZW5hYmxlZCk7Ci19Ci0K
IEluc3BlY3RvclRlc3QuX3BhdXNlZFNjcmlwdCA9IGZ1bmN0aW9uKGRldGFpbHMpCiB7Ci0gICAg
SW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIlNjcmlwdCBleGVjdXRpb24gcGF1c2VkLiIpOworICAg
IGlmICghSW5zcGVjdG9yVGVzdC5fcXVpZXQpCisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVz
dWx0KCJTY3JpcHQgZXhlY3V0aW9uIHBhdXNlZC4iKTsKICAgICBJbnNwZWN0b3JUZXN0Ll9jYWxs
RnJhbWVzID0gZGV0YWlscy5jYWxsRnJhbWVzOwogICAgIGlmIChJbnNwZWN0b3JUZXN0Ll93YWl0
VW50aWxQYXVzZWRDYWxsYmFjaykgewogICAgICAgICB2YXIgY2FsbGJhY2sgPSBJbnNwZWN0b3JU
ZXN0Ll93YWl0VW50aWxQYXVzZWRDYWxsYmFjazsKQEAgLTEwOCw3ICsxMDUsOCBAQCBJbnNwZWN0
b3JUZXN0Ll9wYXVzZWRTY3JpcHQgPSBmdW5jdGlvbihkZXRhaWxzKQogCiBJbnNwZWN0b3JUZXN0
Ll9yZXN1bWVkU2NyaXB0ID0gZnVuY3Rpb24oKQogewotICAgIEluc3BlY3RvclRlc3QuYWRkUmVz
dWx0KCJTY3JpcHQgZXhlY3V0aW9uIHJlc3VtZWQuIik7CisgICAgaWYgKCFJbnNwZWN0b3JUZXN0
Ll9xdWlldCkKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIlNjcmlwdCBleGVjdXRp
b24gcmVzdW1lZC4iKTsKICAgICBkZWxldGUgSW5zcGVjdG9yVGVzdC5fY2FsbEZyYW1lczsKICAg
ICBpZiAoSW5zcGVjdG9yVGVzdC5fd2FpdFVudGlsUmVzdW1lZENhbGxiYWNrKSB7CiAgICAgICAg
IHZhciBjYWxsYmFjayA9IEluc3BlY3RvclRlc3QuX3dhaXRVbnRpbFJlc3VtZWRDYWxsYmFjazsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9kZWJ1Zy1pbmxpbmVk
LXNjcmlwdHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2Rl
YnVnLWlubGluZWQtc2NyaXB0cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uZDZiMzY2NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kZWJ1Z2dlci9kZWJ1Zy1pbmxpbmVkLXNjcmlwdHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMzQgQEAKK1Rlc3RzIHRoYXQgYWxsIGlubGluZWQgc2NyaXB0cyBmcm9tIHRoZSBzYW1lIGRv
Y3VtZW50IGFyZSBzaG93biBpbiB0aGUgc2FtZSBzb3VyY2UgZnJhbWUgd2l0aCBodG1sIHNjcmlw
dCB0YWdzLiBCdWcgNTQ1NDQuCisKK0RlYnVnZ2VyIHdhcyBlbmFibGVkLgorU2NyaXB0IHNvdXJj
ZSB3YXMgc2hvd24uCitTY3JpcHQgZXhlY3V0aW9uIHBhdXNlZC4KK0NhbGwgc3RhY2s6CisgICAg
MCkgIChkZWJ1Zy1pbmxpbmVkLXNjcmlwdHMuaHRtbDozKQorPT1Tb3VyY2UgZnJhbWUgY29udGVu
dHMgc3RhcnQ9PQorCisKKyAgPHNjcmlwdD4gIGZ1bmN0aW9uIGYxKCkgeyByZXR1cm4gMDsgfTsg
ZjEoKTsgIDwvc2NyaXB0PgorPT1Tb3VyY2UgZnJhbWUgY29udGVudHMgZW5kPT0KK1NjcmlwdCBl
eGVjdXRpb24gcGF1c2VkLgorQ2FsbCBzdGFjazoKKyAgICAwKSBmNCAoZGVidWctaW5saW5lZC1z
Y3JpcHRzLmh0bWw6MTApCisgICAgMSkgIChkZWJ1Zy1pbmxpbmVkLXNjcmlwdHMuaHRtbDoxMikK
Kz09U291cmNlIGZyYW1lIGNvbnRlbnRzIHN0YXJ0PT0KKworCisgIDxzY3JpcHQ+ICBmdW5jdGlv
biBmMSgpIHsgcmV0dXJuIDA7IH07IGYxKCk7ICA8L3NjcmlwdD4gICAgIDxzY3JpcHQ+ZnVuY3Rp
b24gZjIoKSB7IHJldHVybiAwOyB9PC9zY3JpcHQ+PHNjcmlwdD4KK2Z1bmN0aW9uIGYzKCkgeyBy
ZXR1cm4gMDsgfQorPC9zY3JpcHQ+CisKKzxzY3JpcHQ+CitmdW5jdGlvbiBmNCgpCit7CisgICAg
cmV0dXJuIDA7Cit9CitmNCgpOworPC9zY3JpcHQ+Cis9PVNvdXJjZSBmcmFtZSBjb250ZW50cyBl
bmQ9PQorUGFnZSByZWxvYWRlZC4KK0RlYnVnZ2VyIHdhcyBkaXNhYmxlZC4KKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2RlYnVnLWlubGluZWQtc2NyaXB0cy5o
dG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2RlYnVnLWlubGluZWQtc2NyaXB0
cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1YTU0NjQKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvZGVidWctaW5saW5l
ZC1zY3JpcHRzLmh0bWwKQEAgLTAsMCArMSw5NSBAQAorPGh0bWw+Cis8aGVhZD4KKyAgPHNjcmlw
dD4gIGZ1bmN0aW9uIGYxKCkgeyByZXR1cm4gMDsgfTsgZjEoKTsgIDwvc2NyaXB0PiAgICAgPHNj
cmlwdD5mdW5jdGlvbiBmMigpIHsgcmV0dXJuIDA7IH08L3NjcmlwdD48c2NyaXB0PgorZnVuY3Rp
b24gZjMoKSB7IHJldHVybiAwOyB9Cis8L3NjcmlwdD4KKworPHNjcmlwdD4KK2Z1bmN0aW9uIGY0
KCkKK3sKKyAgICByZXR1cm4gMDsKK30KK2Y0KCk7Cis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9
Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10ZXN0Lmpz
Ij48L3NjcmlwdD4KKworPHNjcmlwdD4KKwordmFyIHRlc3QgPSBmdW5jdGlvbigpCit7CisgICAg
SW5zcGVjdG9yVGVzdC5zdGFydERlYnVnZ2VyVGVzdChzdGVwMSwgdHJ1ZSk7CisKKyAgICBmdW5j
dGlvbiBzdGVwMSgpCisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LnNob3dTY3JpcHRTb3Vy
Y2UoImRlYnVnLWlubGluZWQtc2NyaXB0cy5odG1sIiwgc3RlcDIpOworICAgIH0KKworICAgIGZ1
bmN0aW9uIHN0ZXAyKHNvdXJjZUZyYW1lKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5h
ZGRSZXN1bHQoIlNjcmlwdCBzb3VyY2Ugd2FzIHNob3duLiIpOworICAgICAgICBXZWJJbnNwZWN0
b3IucGFuZWxzLnNjcmlwdHMuX3Jlc291cmNlRm9yVVJMID0gZnVuY3Rpb24oKSB7IHJldHVybiBu
ZXcgV2ViSW5zcGVjdG9yLlJlc291cmNlKCk7IH07CisgICAgICAgIHNvdXJjZUZyYW1lLl9zZXRC
cmVha3BvaW50KDIsICIiLCB0cnVlKTsKKyAgICAgICAgc291cmNlRnJhbWUuX3NldEJyZWFrcG9p
bnQoOSwgIiIsIHRydWUpOworICAgICAgICBJbnNwZWN0b3JUZXN0LndhaXRVbnRpbFBhdXNlZChz
dGVwMyk7CisgICAgICAgIEluc3BlY3RvclRlc3QucmVsb2FkUGFnZShJbnNwZWN0b3JUZXN0LmNv
bXBsZXRlRGVidWdnZXJUZXN0LmJpbmQoSW5zcGVjdG9yVGVzdCkpOworICAgIH0KKworICAgIGZ1
bmN0aW9uIHN0ZXAzKGNhbGxGcmFtZXMpCisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmFk
ZFJlc3VsdCgiU2NyaXB0IGV4ZWN1dGlvbiBwYXVzZWQuIik7CisgICAgICAgIEluc3BlY3RvclRl
c3QuY2FwdHVyZVN0YWNrVHJhY2UoY2FsbEZyYW1lcyk7CisgICAgICAgIEluc3BlY3RvclRlc3Qu
c2hvd1NjcmlwdFNvdXJjZSgiZGVidWctaW5saW5lZC1zY3JpcHRzLmh0bWwiLCBzdGVwNCk7Cisg
ICAgfQorCisgICAgZnVuY3Rpb24gc3RlcDQoc291cmNlRnJhbWUpCisgICAgeworICAgICAgICBk
dW1wU291cmNlRnJhbWVDb250ZW50cyhzb3VyY2VGcmFtZSk7CisgICAgICAgIEluc3BlY3RvclRl
c3QucmVzdW1lRXhlY3V0aW9uKEluc3BlY3RvclRlc3Qud2FpdFVudGlsUGF1c2VkLmJpbmQobnVs
bCwgc3RlcDUpKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzdGVwNShjYWxsRnJhbWVzKQorICAg
IHsKKyAgICAgICAgaWYgKGNhbGxGcmFtZXNbMF0ubGluZSAhPT0gOSkgeworICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5yZXN1bWVFeGVjdXRpb24oSW5zcGVjdG9yVGVzdC53YWl0VW50aWxQYXVz
ZWQuYmluZChudWxsLCBzdGVwNSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisg
ICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJTY3JpcHQgZXhlY3V0aW9uIHBhdXNlZC4i
KTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5jYXB0dXJlU3RhY2tUcmFjZShjYWxsRnJhbWVzKTsK
KyAgICAgICAgSW5zcGVjdG9yVGVzdC5zaG93U2NyaXB0U291cmNlKCJkZWJ1Zy1pbmxpbmVkLXNj
cmlwdHMuaHRtbCIsIHN0ZXA2KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzdGVwNihzb3VyY2VG
cmFtZSkKKyAgICB7CisgICAgICAgIGR1bXBTb3VyY2VGcmFtZUNvbnRlbnRzKHNvdXJjZUZyYW1l
KTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5yZXN1bWVFeGVjdXRpb24oSW5zcGVjdG9yVGVzdC53
YWl0VW50aWxQYXVzZWQuYmluZChudWxsLCBzdGVwNykpOworICAgIH0KKworICAgIGZ1bmN0aW9u
IHN0ZXA3KCkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QucmVzdW1lRXhlY3V0aW9uKElu
c3BlY3RvclRlc3Qud2FpdFVudGlsUGF1c2VkLmJpbmQobnVsbCwgc3RlcDUpKTsKKyAgICB9CisK
KyAgICBmdW5jdGlvbiBkdW1wU291cmNlRnJhbWVDb250ZW50cyhzb3VyY2VGcmFtZSkKKyAgICB7
CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCI9PVNvdXJjZSBmcmFtZSBjb250ZW50
cyBzdGFydD09Iik7CisgICAgICAgIHZhciB0ZXh0TW9kZWwgPSBzb3VyY2VGcmFtZS5fdGV4dE1v
ZGVsOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRleHRNb2RlbC5saW5lc0NvdW50OyAr
K2kpCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCh0ZXh0TW9kZWwubGluZShp
KSk7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCI9PVNvdXJjZSBmcmFtZSBjb250
ZW50cyBlbmQ9PSIpOworICAgIH0KK30KKworPC9zY3JpcHQ+CisKKzwvaGVhZD4KKworPGJvZHkg
b25sb2FkPSJydW5UZXN0KCkiPgorPHA+CitUZXN0cyB0aGF0IGFsbCBpbmxpbmVkIHNjcmlwdHMg
ZnJvbSB0aGUgc2FtZSBkb2N1bWVudCBhcmUgc2hvd24gaW4gdGhlIHNhbWUgc291cmNlIGZyYW1l
IHdpdGggaHRtbCBzY3JpcHQgdGFncy4KKzxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01NDU0NCI+QnVnIDU0NTQ0LjwvYT4KKzwvcD4KKworPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2RlYnVn
Z2VyLWJyZWFrcG9pbnRzLW5vdC1hY3RpdmF0ZWQtb24tcmVsb2FkLmh0bWwgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZGVidWdnZXIvZGVidWdnZXItYnJlYWtwb2ludHMtbm90LWFjdGl2YXRlZC1v
bi1yZWxvYWQuaHRtbAppbmRleCA1OTNjYTc5Li5jOTNiYmQ3IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvZGVidWdnZXItYnJlYWtwb2ludHMtbm90LWFjdGl2YXRl
ZC1vbi1yZWxvYWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvZGVi
dWdnZXItYnJlYWtwb2ludHMtbm90LWFjdGl2YXRlZC1vbi1yZWxvYWQuaHRtbApAQCAtMjEsMTAg
KzIxLDEwIEBAIHZhciB0ZXN0ID0gZnVuY3Rpb24oKQogICAgICAgICBJbnNwZWN0b3JUZXN0LnNo
b3dTY3JpcHRTb3VyY2UodGVzdE5hbWUsIHN0ZXAyKTsKICAgICB9CiAKLSAgICBmdW5jdGlvbiBz
dGVwMigpCisgICAgZnVuY3Rpb24gc3RlcDIoc291cmNlRnJhbWUpCiAgICAgewogICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiTWFpbiByZXNvdXJjZSB3YXMgc2hvd24uIik7Ci0gICAg
ICAgIEluc3BlY3RvclRlc3Quc2V0QnJlYWtwb2ludEluVmlzaWJsZVZpZXcoOCwgIiIsIHRydWUp
OworICAgICAgICBzb3VyY2VGcmFtZS5fc2V0QnJlYWtwb2ludCg4LCAiIiwgdHJ1ZSk7CiAgICAg
ICAgIFdlYkluc3BlY3Rvci5wYW5lbHMuc2NyaXB0cy50b2dnbGVCcmVha3BvaW50c0J1dHRvbi5l
bGVtZW50LmNsaWNrKCk7CiAgICAgICAgIEluc3BlY3RvclRlc3QucmVsb2FkUGFnZShzdGVwNCk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2RlYnVn
Z2VyLXBhdXNlLW9uLWJyZWFrcG9pbnQuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1
Z2dlci9kZWJ1Z2dlci1wYXVzZS1vbi1icmVha3BvaW50Lmh0bWwKaW5kZXggZDdjOTMxMi4uZGM3
YTE1NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2RlYnVnZ2Vy
LXBhdXNlLW9uLWJyZWFrcG9pbnQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVi
dWdnZXIvZGVidWdnZXItcGF1c2Utb24tYnJlYWtwb2ludC5odG1sCkBAIC0xOSwxMCArMTksMTAg
QEAgdmFyIHRlc3QgPSBmdW5jdGlvbigpCiAgICAgICAgIEluc3BlY3RvclRlc3Quc2hvd1Njcmlw
dFNvdXJjZSgiZGVidWdnZXItcGF1c2Utb24tYnJlYWtwb2ludC5odG1sIiwgc3RlcDIpOwogICAg
IH0KIAotICAgIGZ1bmN0aW9uIHN0ZXAyKCkKKyAgICBmdW5jdGlvbiBzdGVwMihzb3VyY2VGcmFt
ZSkKICAgICB7CiAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJTY3JpcHQgc291cmNl
IHdhcyBzaG93bi4iKTsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5zZXRCcmVha3BvaW50SW5WaXNp
YmxlVmlldyg4LCAiIiwgdHJ1ZSk7CisgICAgICAgIHNvdXJjZUZyYW1lLl9zZXRCcmVha3BvaW50
KDgsICIiLCB0cnVlKTsKICAgICAgICAgSW5zcGVjdG9yVGVzdC5ydW5UZXN0RnVuY3Rpb25BbmRX
YWl0VW50aWxQYXVzZWQoc3RlcDMpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGEwZWJmZDIuLjdl
ZjM1MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAxMS0wMi0xNiAgUGF2ZWwgUG9k
aXZpbG92ICA8cG9kaXZpbG92QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBzaG93IGFsbCBpbmxpbmVk
IHNjcmlwdHMgZnJvbSBzaW5nbGUgZG9jdW1lbnQgaW4gdGhlIHNhbWUgc291cmNlIGZyYW1lLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQ1NDQKKwor
ICAgICAgICBDdXJyZW50bHkgd2hlbiBkZWJ1Z2dpbmcgc3luY2hyb25vdXNseSBleGVjdXRlZCBp
bmxpbmVkIHNjcmlwdHMgZWFjaCBzY3JpcHQgaXMgc2hvd24gaW4gaXQncyBvd24gc291cmNlIGZy
YW1lICgiZXhhbXBsZS5odG1sOjI0IikuCisgICAgICAgIFdlIHNob3VsZCBzaG93IHN1Y2ggc2Ny
aXB0cyBpbiB0aGUgc2FtZSBzb3VyY2UgZnJhbWUgImV4YW1wbGUuaHRtbCIgd2l0aCA8c2NyaXB0
Pjwvc2NyaXB0PiBmcmFtaW5nLgorCisgICAgICAgIFRlc3Q6IGluc3BlY3Rvci9kZWJ1Z2dlci9k
ZWJ1Zy1pbmxpbmVkLXNjcmlwdHMuaHRtbAorCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVu
ZC9TY3JpcHRzUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnBy
b3RvdHlwZS5fc2NyaXB0U291cmNlQ2hhbmdlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2Ny
aXB0c1BhbmVsLnByb3RvdHlwZS5fYWRkU2NyaXB0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5T
Y3JpcHRzUGFuZWwucHJvdG90eXBlLl9yZXNvdXJjZUZvclVSTCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZS5fcmVzb3VyY2VMb2FkaW5nRmluaXNoZWQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUuYWRkQ29uc29sZU1l
c3NhZ2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUuY2xl
YXJDb25zb2xlTWVzc2FnZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5w
cm90b3R5cGUucmVzZXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90
b3R5cGUuX3NvdXJjZUZyYW1lRm9yUmVzb3VyY2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNj
cmlwdHNQYW5lbC5wcm90b3R5cGUuX3NvdXJjZUZyYW1lRm9yU2NyaXB0KToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlLl9yZWNyZWF0ZVNvdXJjZUZyYW1lKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlLl9zaG93U2NyaXB0
T3JSZXNvdXJjZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlw
ZS5fYWRkU2NyaXB0VG9GaWxlc01lbnUub3B0aW9uQ29tcGFyZSk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZS5fYWRkU2NyaXB0VG9GaWxlc01lbnUpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lQ29udGVudFByb3ZpZGVyRm9yU2NyaXB0LnBy
b3RvdHlwZS5yZXF1ZXN0Q29udGVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlRnJh
bWVDb250ZW50UHJvdmlkZXJGb3JTY3JpcHQucHJvdG90eXBlLl9idWlsZFNvdXJjZSk6CisKIDIw
MTEtMDItMTUgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEZpc2hlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMKaW5kZXggM2IyNGQ0NS4uOTJkMTYzYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMK
QEAgLTI1NSwyMyArMjU1LDE0IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBl
ID0gewogICAgICAgICB2YXIgc291cmNlSUQgPSBldmVudC5kYXRhLnNvdXJjZUlEOwogICAgICAg
ICB2YXIgb2xkU291cmNlID0gZXZlbnQuZGF0YS5vbGRTb3VyY2U7CiAKLSAgICAgICAgdmFyIG9s
ZFZpZXcsIG5ld1ZpZXc7CiAgICAgICAgIHZhciBzY3JpcHQgPSBXZWJJbnNwZWN0b3IuZGVidWdn
ZXJNb2RlbC5zY3JpcHRGb3JTb3VyY2VJRChzb3VyY2VJRCk7CiAgICAgICAgIGlmIChzY3JpcHQu
cmVzb3VyY2UpIHsKLSAgICAgICAgICAgIG9sZFZpZXcgPSB0aGlzLl91cmxUb1NvdXJjZUZyYW1l
W3NjcmlwdC5yZXNvdXJjZS51cmxdOwotICAgICAgICAgICAgZGVsZXRlIHRoaXMuX3VybFRvU291
cmNlRnJhbWVbc2NyaXB0LnJlc291cmNlLnVybF07Ci0gICAgICAgICAgICBuZXdWaWV3ID0gdGhp
cy5fc291cmNlRnJhbWVGb3JSZXNvdXJjZShzY3JpcHQucmVzb3VyY2UpOwogICAgICAgICAgICAg
dmFyIHJldmVydEhhbmRsZSA9IFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLmVkaXRTY3JpcHRT
b3VyY2UuYmluZChXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbCwgc291cmNlSUQsIG9sZFNvdXJj
ZSk7CiAgICAgICAgICAgICBzY3JpcHQucmVzb3VyY2Uuc2V0Q29udGVudChzY3JpcHQuc291cmNl
LCByZXZlcnRIYW5kbGUpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgdmFyIG9sZFZp
ZXcgPSBzY3JpcHQuX3NvdXJjZUZyYW1lOwotICAgICAgICAgICAgZGVsZXRlIHNjcmlwdC5fc291
cmNlRnJhbWU7Ci0gICAgICAgICAgICBuZXdWaWV3ID0gdGhpcy5fc291cmNlRnJhbWVGb3JTY3Jp
cHQoc2NyaXB0KTsKICAgICAgICAgfQotICAgICAgICBuZXdWaWV3LnNjcm9sbFRvcCA9IG9sZFZp
ZXcuc2Nyb2xsVG9wOwogCi0gICAgICAgIGlmICh0aGlzLnZpc2libGVWaWV3ID09PSBvbGRWaWV3
KQotICAgICAgICAgICAgdGhpcy52aXNpYmxlVmlldyA9IG5ld1ZpZXc7CisgICAgICAgIHZhciBz
b3VyY2VOYW1lID0gc2NyaXB0LnNvdXJjZVVSTCB8fCBzY3JpcHQuc291cmNlSUQ7CisgICAgICAg
IHRoaXMuX3JlY3JlYXRlU291cmNlRnJhbWUoc291cmNlTmFtZSwgc2NyaXB0LnJlc291cmNlIHx8
IHNjcmlwdCk7CiAKICAgICAgICAgdmFyIGNhbGxGcmFtZXMgPSBXZWJJbnNwZWN0b3IuZGVidWdn
ZXJNb2RlbC5jYWxsRnJhbWVzOwogICAgICAgICBpZiAoY2FsbEZyYW1lcy5sZW5ndGgpCkBAIC0y
ODAsMTEgKzI3MSwxNyBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9IHsK
IAogICAgIF9hZGRTY3JpcHQ6IGZ1bmN0aW9uKHNjcmlwdCkKICAgICB7Ci0gICAgICAgIHZhciBy
ZXNvdXJjZSA9IFdlYkluc3BlY3Rvci5uZXR3b3JrTWFuYWdlci5pbmZsaWdodFJlc291cmNlRm9y
VVJMKHNjcmlwdC5zb3VyY2VVUkwpIHx8IFdlYkluc3BlY3Rvci5yZXNvdXJjZUZvclVSTChzY3Jp
cHQuc291cmNlVVJMKTsKKyAgICAgICAgaWYgKCFzY3JpcHQuc291cmNlVVJMKSB7CisgICAgICAg
ICAgICAvLyBBbm9ueW1vdXMgc2NyaXB0cyBhcmUgc2hvd24gb25seSB3aGVuIHN0ZXBwaW5nLgor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgdmFyIHJlc291cmNlID0g
dGhpcy5fcmVzb3VyY2VGb3JVUkwoc2NyaXB0LnNvdXJjZVVSTCk7CiAgICAgICAgIGlmIChyZXNv
dXJjZSkgewogICAgICAgICAgICAgaWYgKHJlc291cmNlLmZpbmlzaGVkKSB7CiAgICAgICAgICAg
ICAgICAgLy8gUmVzb3VyY2UgaXMgZmluaXNoZWQsIGJpbmQgdGhlIHNjcmlwdCByaWdodCBhd2F5
LgotICAgICAgICAgICAgICAgIHNjcmlwdC5yZXNvdXJjZSA9IHJlc291cmNlOworICAgICAgICAg
ICAgICAgIHJlc291cmNlLl9zY3JpcHRzUGVuZGluZ1Jlc291cmNlTG9hZCA9IFtzY3JpcHRdOwor
ICAgICAgICAgICAgICAgIHRoaXMuX3Jlc291cmNlTG9hZGluZ0ZpbmlzaGVkKHsgdGFyZ2V0OiBy
ZXNvdXJjZSB9KTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgLy8gUmVz
b3VyY2UgaXMgbm90IGZpbmlzaGVkLCBiaW5kIHRoZSBzY3JpcHQgbGF0ZXIuCiAgICAgICAgICAg
ICAgICAgaWYgKCFyZXNvdXJjZS5fc2NyaXB0c1BlbmRpbmdSZXNvdXJjZUxvYWQpIHsKQEAgLTI5
Miw0MCArMjg5LDQzIEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlID0gewog
ICAgICAgICAgICAgICAgICAgICByZXNvdXJjZS5hZGRFdmVudExpc3RlbmVyKCJmaW5pc2hlZCIs
IHRoaXMuX3Jlc291cmNlTG9hZGluZ0ZpbmlzaGVkLCB0aGlzKTsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgcmVzb3VyY2UuX3NjcmlwdHNQZW5kaW5nUmVzb3VyY2VMb2FkLnB1
c2goc2NyaXB0KTsKKworICAgICAgICAgICAgICAgIC8vIFNvdXJjZSBmcmFtZSBjb250ZW50IGlz
IG91dGRhdGVkIHNpbmNlIHdlIGhhdmUgbmV3IHNjcmlwdCBwYXJzZWQuCisgICAgICAgICAgICAg
ICAgdGhpcy5fcmVjcmVhdGVTb3VyY2VGcmFtZShzY3JpcHQuc291cmNlVVJMLCBzY3JpcHQucmVz
b3VyY2UgfHwgc2NyaXB0KTsKICAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIC8vIFRoaXMgaXMgYSBkeW5hbWljIHNjcmlwdCB3aXRoICIvL0Agc291cmNlVVJMPSIg
Y29tbWVudC4KKyAgICAgICAgICAgIHRoaXMuX2FkZFNjcmlwdFRvRmlsZXNNZW51KHNjcmlwdCk7
CiAgICAgICAgIH0KLSAgICAgICAgdGhpcy5fYWRkU2NyaXB0VG9GaWxlc01lbnUoc2NyaXB0KTsK
KyAgICB9LAorCisgICAgX3Jlc291cmNlRm9yVVJMOiBmdW5jdGlvbih1cmwpCisgICAgeworICAg
ICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLm5ldHdvcmtNYW5hZ2VyLmluZmxpZ2h0UmVzb3VyY2VG
b3JVUkwodXJsKSB8fCBXZWJJbnNwZWN0b3IucmVzb3VyY2VGb3JVUkwodXJsKTsKICAgICB9LAog
CiAgICAgX3Jlc291cmNlTG9hZGluZ0ZpbmlzaGVkOiBmdW5jdGlvbihlKQogICAgIHsKICAgICAg
ICAgdmFyIHJlc291cmNlID0gZS50YXJnZXQ7CiAKLSAgICAgICAgdmFyIHZpc2libGUgPSBmYWxz
ZTsKLSAgICAgICAgdmFyIHNlbGVjdCA9IHRoaXMuZmlsZXNTZWxlY3RFbGVtZW50OwogICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IHJlc291cmNlLl9zY3JpcHRzUGVuZGluZ1Jlc291cmNlTG9h
ZC5sZW5ndGg7ICsraSkgewogICAgICAgICAgICAgLy8gQmluZCBzY3JpcHQgdG8gcmVzb3VyY2Uu
CiAgICAgICAgICAgICB2YXIgc2NyaXB0ID0gcmVzb3VyY2UuX3NjcmlwdHNQZW5kaW5nUmVzb3Vy
Y2VMb2FkW2ldOwogICAgICAgICAgICAgc2NyaXB0LnJlc291cmNlID0gcmVzb3VyY2U7CisgICAg
ICAgIH0KIAotICAgICAgICAgICAgaWYgKHNlbGVjdC5vcHRpb25zW3NlbGVjdC5zZWxlY3RlZElu
ZGV4XSA9PT0gc2NyaXB0LmZpbGVzU2VsZWN0T3B0aW9uKQotICAgICAgICAgICAgICAgIHZpc2li
bGUgPSB0cnVlOworICAgICAgICAvLyBSZWNyZWF0ZSBzb3VyY2UgZnJhbWUgdG8gc2hvdyByZXNv
dXJjZSBjb250ZW50LgorICAgICAgICB0aGlzLl9yZWNyZWF0ZVNvdXJjZUZyYW1lKHJlc291cmNl
LnVybCwgcmVzb3VyY2UpOwogCi0gICAgICAgICAgICAvLyBSZW1vdmUgc2NyaXB0IGZyb20gdGhl
IGZpbGVzIGxpc3QuCi0gICAgICAgICAgICBzY3JpcHQuZmlsZXNTZWxlY3RPcHRpb24ucGFyZW50
RWxlbWVudC5yZW1vdmVDaGlsZChzY3JpcHQuZmlsZXNTZWxlY3RPcHRpb24pOwotICAgICAgICB9
CiAgICAgICAgIC8vIEFkZGluZyBmaXJzdCBzY3JpcHQgd2lsbCBhZGQgcmVzb3VyY2UuCiAgICAg
ICAgIHRoaXMuX2FkZFNjcmlwdFRvRmlsZXNNZW51KHJlc291cmNlLl9zY3JpcHRzUGVuZGluZ1Jl
c291cmNlTG9hZFswXSk7CiAgICAgICAgIGRlbGV0ZSByZXNvdXJjZS5fc2NyaXB0c1BlbmRpbmdS
ZXNvdXJjZUxvYWQ7Ci0KLSAgICAgICAgaWYgKHZpc2libGUpCi0gICAgICAgICAgICB0aGlzLl9z
aG93U2NyaXB0T3JSZXNvdXJjZShyZXNvdXJjZSwgeyBpbml0aWFsTG9hZDogdHJ1ZSB9KTsKICAg
ICB9LAogCiAgICAgYWRkQ29uc29sZU1lc3NhZ2U6IGZ1bmN0aW9uKG1lc3NhZ2UpCiAgICAgewog
ICAgICAgICB0aGlzLl9tZXNzYWdlcy5wdXNoKG1lc3NhZ2UpOwotICAgICAgICB2YXIgc291cmNl
RnJhbWUgPSB0aGlzLl91cmxUb1NvdXJjZUZyYW1lW21lc3NhZ2UudXJsXTsKKyAgICAgICAgdmFy
IHNvdXJjZUZyYW1lID0gdGhpcy5fc291cmNlTmFtZVRvU291cmNlRnJhbWVbbWVzc2FnZS51cmxd
OwogICAgICAgICBpZiAoc291cmNlRnJhbWUpCiAgICAgICAgICAgICBzb3VyY2VGcmFtZS5hZGRN
ZXNzYWdlKG1lc3NhZ2UpOwogICAgIH0sCkBAIC0zMzMsOCArMzMzLDggQEAgV2ViSW5zcGVjdG9y
LlNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgY2xlYXJDb25zb2xlTWVzc2FnZXM6IGZ1
bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHRoaXMuX21lc3NhZ2VzID0gW107Ci0gICAgICAgIGZv
ciAodmFyIHVybCBpbiB0aGlzLl91cmxUb1NvdXJjZUZyYW1lKQotICAgICAgICAgICAgdGhpcy5f
dXJsVG9Tb3VyY2VGcmFtZVt1cmxdLmNsZWFyTWVzc2FnZXMoKTsKKyAgICAgICAgZm9yICh2YXIg
dXJsIGluIHRoaXMuX3NvdXJjZU5hbWVUb1NvdXJjZUZyYW1lKQorICAgICAgICAgICAgdGhpcy5f
c291cmNlTmFtZVRvU291cmNlRnJhbWVbdXJsXS5jbGVhck1lc3NhZ2VzKCk7CiAgICAgfSwKIAog
ICAgIHNlbGVjdGVkQ2FsbEZyYW1lSWQ6IGZ1bmN0aW9uKCkKQEAgLTQyNSw5ICs0MjUsOSBAQCBX
ZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fY3Vy
cmVudEJhY2tGb3J3YXJkSW5kZXggPSAtMTsKICAgICAgICAgdGhpcy5fdXBkYXRlQmFja0FuZEZv
cndhcmRCdXR0b25zKCk7CiAKLSAgICAgICAgdGhpcy5fdXJsVG9Tb3VyY2VGcmFtZSA9IHt9Owor
ICAgICAgICB0aGlzLl9zb3VyY2VOYW1lVG9Tb3VyY2VGcmFtZSA9IHt9OworICAgICAgICB0aGlz
Ll9zb3VyY2VOYW1lVG9GaWxlc1NlbGVjdE9wdGlvbiA9IHt9OwogICAgICAgICB0aGlzLl9tZXNz
YWdlcyA9IFtdOwotICAgICAgICB0aGlzLl9yZXNvdXJjZUZvclVSTEluRmlsZXNTZWxlY3QgPSB7
fTsKICAgICAgICAgdGhpcy5maWxlc1NlbGVjdEVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKICAg
ICAgICAgdGhpcy5mdW5jdGlvbnNTZWxlY3RFbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7CiAgICAg
ICAgIHRoaXMudmlld3NDb250YWluZXJFbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7CkBAIC01MDks
OSArNTA5LDEwIEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogCiAg
ICAgX3NvdXJjZUZyYW1lRm9yUmVzb3VyY2U6IGZ1bmN0aW9uKHJlc291cmNlKQogICAgIHsKLSAg
ICAgICAgdmFyIHNvdXJjZUZyYW1lID0gdGhpcy5fdXJsVG9Tb3VyY2VGcmFtZVtyZXNvdXJjZS51
cmxdOworICAgICAgICB2YXIgc291cmNlRnJhbWUgPSB0aGlzLl9zb3VyY2VOYW1lVG9Tb3VyY2VG
cmFtZVtyZXNvdXJjZS51cmxdOwogICAgICAgICBpZiAoc291cmNlRnJhbWUpCiAgICAgICAgICAg
ICByZXR1cm4gc291cmNlRnJhbWU7CisKICAgICAgICAgdmFyIGNvbnRlbnRQcm92aWRlciA9IG5l
dyBXZWJJbnNwZWN0b3IuU291cmNlRnJhbWVDb250ZW50UHJvdmlkZXJGb3JSZXNvdXJjZShyZXNv
dXJjZSk7CiAgICAgICAgIHZhciBpc1NjcmlwdCA9IHJlc291cmNlLnR5cGUgPT09IFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZS5UeXBlLlNjcmlwdDsKICAgICAgICAgc291cmNlRnJhbWUgPSBuZXcgV2Vi
SW5zcGVjdG9yLlNvdXJjZUZyYW1lKGNvbnRlbnRQcm92aWRlciwgcmVzb3VyY2UudXJsLCBpc1Nj
cmlwdCk7CkBAIC01MjAsMTcgKzUyMSwzNiBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgICAgIGlmICh0aGlzLl9tZXNzYWdlc1tpXS51cmwgPT09IHJl
c291cmNlLnVybCkKICAgICAgICAgICAgICAgICBzb3VyY2VGcmFtZS5hZGRNZXNzYWdlKG1lc3Nh
Z2UpOwogICAgICAgICB9Ci0gICAgICAgIHRoaXMuX3VybFRvU291cmNlRnJhbWVbcmVzb3VyY2Uu
dXJsXSA9IHNvdXJjZUZyYW1lOworICAgICAgICB0aGlzLl9zb3VyY2VOYW1lVG9Tb3VyY2VGcmFt
ZVtyZXNvdXJjZS51cmxdID0gc291cmNlRnJhbWU7CiAgICAgICAgIHJldHVybiBzb3VyY2VGcmFt
ZTsKICAgICB9LAogCiAgICAgX3NvdXJjZUZyYW1lRm9yU2NyaXB0OiBmdW5jdGlvbihzY3JpcHQp
CiAgICAgewotICAgICAgICBpZiAoc2NyaXB0Ll9zb3VyY2VGcmFtZSkKLSAgICAgICAgICAgIHJl
dHVybiBzY3JpcHQuX3NvdXJjZUZyYW1lOworICAgICAgICB2YXIgc291cmNlTmFtZSA9IHNjcmlw
dC5zb3VyY2VVUkwgfHwgc2NyaXB0LnNvdXJjZUlEOworICAgICAgICB2YXIgc291cmNlRnJhbWUg
PSB0aGlzLl9zb3VyY2VOYW1lVG9Tb3VyY2VGcmFtZVtzb3VyY2VOYW1lXTsKKyAgICAgICAgaWYg
KHNvdXJjZUZyYW1lKQorICAgICAgICAgICAgcmV0dXJuIHNvdXJjZUZyYW1lOworCiAgICAgICAg
IHZhciBjb250ZW50UHJvdmlkZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lQ29udGVu
dFByb3ZpZGVyRm9yU2NyaXB0KHNjcmlwdCk7Ci0gICAgICAgIHNjcmlwdC5fc291cmNlRnJhbWUg
PSBuZXcgV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lKGNvbnRlbnRQcm92aWRlciwgc2NyaXB0LnNv
dXJjZVVSTCwgdHJ1ZSk7Ci0gICAgICAgIHJldHVybiBzY3JpcHQuX3NvdXJjZUZyYW1lOworICAg
ICAgICB2YXIgaXNTY3JpcHQgPSAhc2NyaXB0LmxpbmVPZmZzZXQgJiYgIXNjcmlwdC5jb2x1bW5P
ZmZzZXQ7CisgICAgICAgIHNvdXJjZUZyYW1lID0gbmV3IFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFt
ZShjb250ZW50UHJvdmlkZXIsIHNjcmlwdC5zb3VyY2VVUkwsIGlzU2NyaXB0KTsKKyAgICAgICAg
dGhpcy5fc291cmNlTmFtZVRvU291cmNlRnJhbWVbc291cmNlTmFtZV0gPSBzb3VyY2VGcmFtZTsK
KyAgICAgICAgcmV0dXJuIHNvdXJjZUZyYW1lOworICAgIH0sCisKKyAgICBfcmVjcmVhdGVTb3Vy
Y2VGcmFtZTogZnVuY3Rpb24oc291cmNlTmFtZSwgc2NyaXB0T3JSZXNvdXJjZSkKKyAgICB7Cisg
ICAgICAgIHZhciBvbGRTb3VyY2VGcmFtZSA9IHRoaXMuX3NvdXJjZU5hbWVUb1NvdXJjZUZyYW1l
W3NvdXJjZU5hbWVdOworICAgICAgICBpZiAoIW9sZFNvdXJjZUZyYW1lKQorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICBkZWxldGUgdGhpcy5fc291cmNlTmFtZVRvU291cmNlRnJhbWVbc291
cmNlTmFtZV07CisgICAgICAgIGlmICh0aGlzLnZpc2libGVWaWV3ICE9PSBvbGRTb3VyY2VGcmFt
ZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB2YXIgbmV3U291cmNlRnJhbWUgPSB0
aGlzLl9zb3VyY2VGcmFtZUZvclNjcmlwdE9yUmVzb3VyY2Uoc2NyaXB0T3JSZXNvdXJjZSkKKyAg
ICAgICAgbmV3U291cmNlRnJhbWUuc2Nyb2xsVG9wID0gb2xkU291cmNlRnJhbWUuc2Nyb2xsVG9w
OworICAgICAgICB0aGlzLnZpc2libGVWaWV3ID0gbmV3U291cmNlRnJhbWU7CiAgICAgfSwKIAog
ICAgIF9zaG93U2NyaXB0T3JSZXNvdXJjZTogZnVuY3Rpb24oc2NyaXB0T3JSZXNvdXJjZSwgb3B0
aW9ucykKQEAgLTU3OSw1NSArNTk5LDQyIEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJv
dG90eXBlID0gewogCiAgICAgICAgIHZhciBvcHRpb247CiAgICAgICAgIGlmIChzY3JpcHRPclJl
c291cmNlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlNjcmlwdCkgewotICAgICAgICAgICAgb3B0
aW9uID0gc2NyaXB0T3JSZXNvdXJjZS5maWxlc1NlbGVjdE9wdGlvbjsKKyAgICAgICAgICAgIHZh
ciBzb3VyY2VOYW1lID0gc2NyaXB0T3JSZXNvdXJjZS5zb3VyY2VVUkwgfHwgc2NyaXB0T3JSZXNv
dXJjZS5zb3VyY2VJRDsKKyAgICAgICAgICAgIG9wdGlvbiA9IHRoaXMuX3NvdXJjZU5hbWVUb0Zp
bGVzU2VsZWN0T3B0aW9uW3NvdXJjZU5hbWVdOwogCi0gICAgICAgICAgICAvLyBoYXNuJ3QgYmVl
biBhZGRlZCB5ZXQgLSBoYXBwZW5zIGZvciBzdGVwcGluZyBpbiBldmFscywKLSAgICAgICAgICAg
IC8vIHNvIHVzZSB0aGUgZm9yY2Ugb3B0aW9uIHRvIGZvcmNlIHRoZSBzY3JpcHQgaW50byB0aGUg
bWVudS4KKyAgICAgICAgICAgIC8vIEhhc24ndCBiZWVuIGFkZGVkIHlldCAtIGhhcHBlbnMgZm9y
IHN0ZXBwaW5nIGluIGlubGluZSBzY3JpcHRzIGFuZCBldmFscy4KICAgICAgICAgICAgIGlmICgh
b3B0aW9uKSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5fYWRkU2NyaXB0VG9GaWxlc01lbnUoc2Ny
aXB0T3JSZXNvdXJjZSwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgb3B0aW9uID0gc2NyaXB0T3JS
ZXNvdXJjZS5maWxlc1NlbGVjdE9wdGlvbjsKKyAgICAgICAgICAgICAgICB0aGlzLl9hZGRTY3Jp
cHRUb0ZpbGVzTWVudShzY3JpcHRPclJlc291cmNlKTsKKyAgICAgICAgICAgICAgICBvcHRpb24g
PSB0aGlzLl9zb3VyY2VOYW1lVG9GaWxlc1NlbGVjdE9wdGlvbltzb3VyY2VOYW1lXTsKICAgICAg
ICAgICAgIH0KIAogICAgICAgICAgICAgY29uc29sZS5hc3NlcnQob3B0aW9uKTsKICAgICAgICAg
fSBlbHNlCi0gICAgICAgICAgICBvcHRpb24gPSBzY3JpcHRPclJlc291cmNlLmZpbGVzU2VsZWN0
T3B0aW9uOworICAgICAgICAgICAgb3B0aW9uID0gdGhpcy5fc291cmNlTmFtZVRvRmlsZXNTZWxl
Y3RPcHRpb25bc2NyaXB0T3JSZXNvdXJjZS51cmxdOwogCiAgICAgICAgIGlmIChvcHRpb24pCiAg
ICAgICAgICAgICB0aGlzLmZpbGVzU2VsZWN0RWxlbWVudC5zZWxlY3RlZEluZGV4ID0gb3B0aW9u
LmluZGV4OwogICAgIH0sCiAKLSAgICBfYWRkU2NyaXB0VG9GaWxlc01lbnU6IGZ1bmN0aW9uKHNj
cmlwdCwgZm9yY2UpCisgICAgX2FkZFNjcmlwdFRvRmlsZXNNZW51OiBmdW5jdGlvbihzY3JpcHQp
CiAgICAgewotICAgICAgICBpZiAoIXNjcmlwdC5zb3VyY2VVUkwgJiYgIWZvcmNlKQorICAgICAg
ICB2YXIgc291cmNlTmFtZSA9IHNjcmlwdC5zb3VyY2VVUkwgfHwgc2NyaXB0LnNvdXJjZUlEOwor
ICAgICAgICBpZiAoc291cmNlTmFtZSBpbiB0aGlzLl9zb3VyY2VOYW1lVG9GaWxlc1NlbGVjdE9w
dGlvbikKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoc2NyaXB0LnJlc291cmNl
KSB7Ci0gICAgICAgICAgICBpZiAodGhpcy5fcmVzb3VyY2VGb3JVUkxJbkZpbGVzU2VsZWN0W3Nj
cmlwdC5yZXNvdXJjZS51cmxdKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAg
IHRoaXMuX3Jlc291cmNlRm9yVVJMSW5GaWxlc1NlbGVjdFtzY3JpcHQucmVzb3VyY2UudXJsXSA9
IHNjcmlwdC5yZXNvdXJjZTsKLSAgICAgICAgfQotCiAgICAgICAgIHZhciBkaXNwbGF5TmFtZSA9
IHNjcmlwdC5zb3VyY2VVUkwgPyBXZWJJbnNwZWN0b3IuZGlzcGxheU5hbWVGb3JVUkwoc2NyaXB0
LnNvdXJjZVVSTCkgOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIihwcm9ncmFtKSIpOwogCiAgICAg
ICAgIHZhciBzZWxlY3QgPSB0aGlzLmZpbGVzU2VsZWN0RWxlbWVudDsKICAgICAgICAgdmFyIG9w
dGlvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpOwogICAgICAgICBvcHRpb24u
cmVwcmVzZW50ZWRPYmplY3QgPSBzY3JpcHQucmVzb3VyY2UgfHwgc2NyaXB0OwotICAgICAgICBv
cHRpb24udXJsID0gZGlzcGxheU5hbWU7Ci0gICAgICAgIG9wdGlvbi5zdGFydGluZ0xpbmUgPSBz
Y3JpcHQuc3RhcnRpbmdMaW5lOwotICAgICAgICBvcHRpb24udGV4dCA9IHNjcmlwdC5yZXNvdXJj
ZSB8fCBzY3JpcHQuc3RhcnRpbmdMaW5lID09PSAxID8gZGlzcGxheU5hbWUgOiBTdHJpbmcuc3By
aW50ZigiJXM6JWQiLCBkaXNwbGF5TmFtZSwgc2NyaXB0LnN0YXJ0aW5nTGluZSk7CisgICAgICAg
IG9wdGlvbi50ZXh0ID0gZGlzcGxheU5hbWU7CisgICAgICAgIHRoaXMuX3NvdXJjZU5hbWVUb0Zp
bGVzU2VsZWN0T3B0aW9uW3NvdXJjZU5hbWVdID0gb3B0aW9uOwogCiAgICAgICAgIGZ1bmN0aW9u
IG9wdGlvbkNvbXBhcmUoYSwgYikKICAgICAgICAgewotICAgICAgICAgICAgaWYgKGEudXJsIDwg
Yi51cmwpCi0gICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgZWxzZSBpZiAo
YS51cmwgPiBiLnVybCkKLSAgICAgICAgICAgICAgICByZXR1cm4gMTsKLQotICAgICAgICAgICAg
aWYgKHR5cGVvZiBhLnN0YXJ0aW5nTGluZSAhPT0gIm51bWJlciIpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIC0xOwotICAgICAgICAgICAgaWYgKHR5cGVvZiBiLnN0YXJ0aW5nTGluZSAhPT0gIm51
bWJlciIpCi0gICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgcmV0dXJuIGEu
c3RhcnRpbmdMaW5lIC0gYi5zdGFydGluZ0xpbmU7CisgICAgICAgICAgICBpZiAoYS50ZXh0ID09
PSBiLnRleHQpCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4g
YS50ZXh0IDwgYi50ZXh0ID8gLTEgOiAxOwogICAgICAgICB9CiAKICAgICAgICAgdmFyIGluc2Vy
dGlvbkluZGV4ID0gaW5zZXJ0aW9uSW5kZXhGb3JPYmplY3RJbkxpc3RTb3J0ZWRCeUZ1bmN0aW9u
KG9wdGlvbiwgc2VsZWN0LmNoaWxkTm9kZXMsIG9wdGlvbkNvbXBhcmUpOwpAQCAtNjM2LDExICs2
NDMsNiBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgc2VsZWN0Lmluc2VydEJlZm9yZShvcHRpb24sIHNlbGVjdC5jaGls
ZE5vZGVzLml0ZW0oaW5zZXJ0aW9uSW5kZXgpKTsKIAotICAgICAgICBpZiAoc2NyaXB0LnJlc291
cmNlKQotICAgICAgICAgICAgc2NyaXB0LnJlc291cmNlLmZpbGVzU2VsZWN0T3B0aW9uID0gb3B0
aW9uOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBzY3JpcHQuZmlsZXNTZWxlY3RPcHRpb24g
PSBvcHRpb247Ci0KICAgICAgICAgaWYgKHNlbGVjdC5vcHRpb25zW3NlbGVjdC5zZWxlY3RlZElu
ZGV4XSA9PT0gb3B0aW9uKSB7CiAgICAgICAgICAgICAvLyBDYWxsIF9zaG93U2NyaXB0T3JSZXNv
dXJjZSBpZiB0aGUgb3B0aW9uIHdlIGp1c3QgYXBwZW5kZWQgZW5kZWQgdXAgYmVpbmcgc2VsZWN0
ZWQuCiAgICAgICAgICAgICAvLyBUaGlzIHdpbGwgaGFwcGVuIGZvciB0aGUgZmlyc3QgaXRlbSBh
ZGRlZCB0byB0aGUgbWVudS4KQEAgLTY0OSwxOCArNjUxLDEyIEBAIFdlYkluc3BlY3Rvci5TY3Jp
cHRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgLy8gSWYgbm90IGZpcnN0IGl0ZW0s
IGNoZWNrIHRvIHNlZSBpZiB0aGlzIHdhcyB0aGUgbGFzdCB2aWV3ZWQKICAgICAgICAgICAgIHZh
ciB1cmwgPSBvcHRpb24ucmVwcmVzZW50ZWRPYmplY3QudXJsIHx8IG9wdGlvbi5yZXByZXNlbnRl
ZE9iamVjdC5zb3VyY2VVUkw7CiAgICAgICAgICAgICB2YXIgbGFzdFVSTCA9IFdlYkluc3BlY3Rv
ci5zZXR0aW5ncy5sYXN0Vmlld2VkU2NyaXB0RmlsZTsKLSAgICAgICAgICAgIGlmICh1cmwgJiYg
dXJsID09PSBsYXN0VVJMKSB7Ci0gICAgICAgICAgICAgICAgLy8gRm9yIHJlc291cmNlcyBjb250
YWluaW5nIG11bHRpcGxlIDxzY3JpcHQ+IHRhZ3MsIHdlIGZpcnN0IHJlcG9ydCB0aGVtIHNlcGFy
YXRlbHkgYW5kCi0gICAgICAgICAgICAgICAgLy8gdGhlbiBnbHVlIHRoZW0gYWxsIHRvZ2V0aGVy
LiBUaGV5IGFsbCBzaGFyZSB1cmwgYW5kIHRoZXJlIGlzIG5vIG5lZWQgdG8gc2hvdyB0aGVtIGFs
bCBvbmUKLSAgICAgICAgICAgICAgICAvLyBieSBvbmUuCi0gICAgICAgICAgICAgICAgdmFyIGlz
UmVzb3VyY2UgPSAhIW9wdGlvbi5yZXByZXNlbnRlZE9iamVjdC51cmw7Ci0gICAgICAgICAgICAg
ICAgaWYgKGlzUmVzb3VyY2UgfHwgIXRoaXMudmlzaWJsZVZpZXcgfHwgIXRoaXMudmlzaWJsZVZp
ZXcuc2NyaXB0IHx8IHRoaXMudmlzaWJsZVZpZXcuc2NyaXB0LnNvdXJjZVVSTCAhPT0gdXJsKQot
ICAgICAgICAgICAgICAgICAgICB0aGlzLl9zaG93U2NyaXB0T3JSZXNvdXJjZShvcHRpb24ucmVw
cmVzZW50ZWRPYmplY3QsIHtpbml0aWFsTG9hZDogdHJ1ZX0pOwotICAgICAgICAgICAgfQorICAg
ICAgICAgICAgaWYgKHVybCAmJiB1cmwgPT09IGxhc3RVUkwpCisgICAgICAgICAgICAgICAgdGhp
cy5fc2hvd1NjcmlwdE9yUmVzb3VyY2Uob3B0aW9uLnJlcHJlc2VudGVkT2JqZWN0LCB7aW5pdGlh
bExvYWQ6IHRydWV9KTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChzY3JpcHQud29ybGRUeXBl
ID09PSBXZWJJbnNwZWN0b3IuU2NyaXB0LldvcmxkVHlwZS5FWFRFTlNJT05TX1dPUkxEKQotICAg
ICAgICAgICAgc2NyaXB0LmZpbGVzU2VsZWN0T3B0aW9uLmFkZFN0eWxlQ2xhc3MoImV4dGVuc2lv
bi1zY3JpcHQiKTsKKyAgICAgICAgICAgIG9wdGlvbi5hZGRTdHlsZUNsYXNzKCJleHRlbnNpb24t
c2NyaXB0Iik7CiAgICAgfSwKIAogICAgIF9jbGVhckN1cnJlbnRFeGVjdXRpb25MaW5lOiBmdW5j
dGlvbigpCkBAIC0xMDYyLDIxICsxMDU4LDc0IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZUNv
bnRlbnRQcm92aWRlckZvclNjcmlwdCA9IGZ1bmN0aW9uKHNjcmlwdCkKIFdlYkluc3BlY3Rvci5T
b3VyY2VGcmFtZUNvbnRlbnRQcm92aWRlckZvclNjcmlwdC5wcm90b3R5cGUgPSB7CiAgICAgcmVx
dWVzdENvbnRlbnQ6IGZ1bmN0aW9uKGNhbGxiYWNrKQogICAgIHsKLSAgICAgICAgZnVuY3Rpb24g
ZGlkUmVxdWVzdFNvdXJjZShzb3VyY2UpCisgICAgICAgIHZhciBzY3JpcHRzID0gW3RoaXMuX3Nj
cmlwdF07CisgICAgICAgIGlmICh0aGlzLl9zY3JpcHQuc291cmNlVVJMKQorICAgICAgICAgICAg
c2NyaXB0cyA9IFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLnNjcmlwdHNGb3JVUkwodGhpcy5f
c2NyaXB0LnNvdXJjZVVSTCk7CisgICAgICAgIHNjcmlwdHMuc29ydChmdW5jdGlvbih4LCB5KSB7
IHJldHVybiB4LmxpbmVPZmZzZXQgLSB5LmxpbmVPZmZzZXQgfHwgeC5jb2x1bW5PZmZzZXQgLSB5
LmNvbHVtbk9mZnNldDsgfSk7CisKKyAgICAgICAgdmFyIHNjcmlwdHNMZWZ0ID0gc2NyaXB0cy5s
ZW5ndGg7CisgICAgICAgIHZhciBzb3VyY2VzID0gW107CisgICAgICAgIGZ1bmN0aW9uIGRpZFJl
cXVlc3RTb3VyY2UoaW5kZXgsIHNvdXJjZSkKICAgICAgICAgewotICAgICAgICAgICAgaWYgKHNv
dXJjZSkgewotICAgICAgICAgICAgICAgIHZhciBwcmVmaXggPSAiIjsKLSAgICAgICAgICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX3NjcmlwdC5saW5lT2Zmc2V0OyArK2kpCi0gICAg
ICAgICAgICAgICAgICAgIHByZWZpeCArPSAiXG4iOwotICAgICAgICAgICAgICAgIHNvdXJjZSA9
IHByZWZpeCArIHNvdXJjZTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHNv
dXJjZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiPHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlPiIp
OwotCisgICAgICAgICAgICBzb3VyY2VzW2luZGV4XSA9IHNvdXJjZTsKKyAgICAgICAgICAgIGlm
ICgtLXNjcmlwdHNMZWZ0KQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHZh
ciByZXN1bHQgPSB0aGlzLl9idWlsZFNvdXJjZShzY3JpcHRzLCBzb3VyY2VzKTsKICAgICAgICAg
ICAgIHZhciBzb3VyY2VNYXBwaW5nID0gbmV3IFdlYkluc3BlY3Rvci5JZGVudGljYWxTb3VyY2VN
YXBwaW5nKCk7Ci0gICAgICAgICAgICB2YXIgc2NyaXB0UmFuZ2VzID0gV2ViSW5zcGVjdG9yLlNj
cmlwdEZvcm1hdHRlci5maW5kU2NyaXB0UmFuZ2VzKHNvdXJjZS5saW5lRW5kaW5ncygpLCBbdGhp
cy5fc2NyaXB0XSk7Ci0gICAgICAgICAgICBjYWxsYmFjaygidGV4dC9qYXZhc2NyaXB0IiwgbmV3
IFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZUNvbnRlbnQoc291cmNlLCBzb3VyY2VNYXBwaW5nLCBz
Y3JpcHRSYW5nZXMpKTsKKyAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdC5taW1lVHlwZSwgbmV3
IFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZUNvbnRlbnQocmVzdWx0LnNvdXJjZSwgc291cmNlTWFw
cGluZywgcmVzdWx0LnNjcmlwdFJhbmdlcykpOworCisgICAgICAgIH0KKyAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBzY3JpcHRzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgc2NyaXB0c1tp
XS5yZXF1ZXN0U291cmNlKGRpZFJlcXVlc3RTb3VyY2UuYmluZCh0aGlzLCBpKSk7CisgICAgfSwK
KworICAgIF9idWlsZFNvdXJjZTogZnVuY3Rpb24oc2NyaXB0cywgc291cmNlcykKKyAgICB7Cisg
ICAgICAgIHZhciBzb3VyY2UgPSAiIjsKKyAgICAgICAgdmFyIGxpbmVOdW1iZXIgPSAwOworICAg
ICAgICB2YXIgY29sdW1uTnVtYmVyID0gMDsKKyAgICAgICAgdmFyIHNjcmlwdFJhbmdlcyA9IFtd
OworICAgICAgICBmdW5jdGlvbiBhcHBlbmRDaHVuayhjaHVuaywgaXNTY3JpcHQpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhciBzdGFydCA9IHsgbGluZU51bWJlcjogbGluZU51bWJlciwgY29s
dW1uTnVtYmVyOiBjb2x1bW5OdW1iZXIgfTsKKyAgICAgICAgICAgIHNvdXJjZSArPSBjaHVuazsK
KyAgICAgICAgICAgIHZhciBsaW5lRW5kaW5ncyA9IGNodW5rLmxpbmVFbmRpbmdzKCk7CisgICAg
ICAgICAgICB2YXIgbGluZUNvdW50ID0gbGluZUVuZGluZ3MubGVuZ3RoOworICAgICAgICAgICAg
aWYgKGxpbmVDb3VudCA9PT0gMSkKKyAgICAgICAgICAgICAgICBjb2x1bW5OdW1iZXIgKz0gY2h1
bmsubGVuZ3RoOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgbGluZU51bWJl
ciArPSBsaW5lQ291bnQgLSAxOworICAgICAgICAgICAgICAgIGNvbHVtbk51bWJlciA9IGxpbmVF
bmRpbmdzW2xpbmVDb3VudCAtIDFdIC0gbGluZUVuZGluZ3NbbGluZUNvdW50IC0gMl0gLSAxOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgdmFyIGVuZCA9IHsgbGluZU51bWJlcjogbGluZU51
bWJlciwgY29sdW1uTnVtYmVyOiBjb2x1bW5OdW1iZXIgfTsKKyAgICAgICAgICAgIGlmIChpc1Nj
cmlwdCkKKyAgICAgICAgICAgICAgICBzY3JpcHRSYW5nZXMucHVzaCh7IHN0YXJ0OiBzdGFydCwg
ZW5kOiBlbmQgfSk7CisgICAgICAgIH0KKworICAgICAgICB2YXIgbWltZVR5cGU7CisgICAgICAg
IGlmIChzY3JpcHRzLmxlbmd0aCA9PT0gMSAmJiAhc2NyaXB0c1swXS5saW5lT2Zmc2V0ICYmICFz
Y3JpcHRzWzBdLmNvbHVtbk9mZnNldCkgeworICAgICAgICAgICAgLy8gU2luZ2xlIHNjcmlwdCBz
b3VyY2UuCisgICAgICAgICAgICBtaW1lVHlwZSA9ICJ0ZXh0L2phdmFzY3JpcHQiOworICAgICAg
ICAgICAgYXBwZW5kQ2h1bmsoc291cmNlc1swXSwgdHJ1ZSk7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAvLyBTY3JpcHRzIGlubGluZWQgaW4gaHRtbCBkb2N1bWVudC4KKyAgICAgICAg
ICAgIG1pbWVUeXBlID0gInRleHQvaHRtbCI7CisgICAgICAgICAgICB2YXIgc2NyaXB0T3BlblRh
ZyA9ICI8c2NyaXB0PiI7CisgICAgICAgICAgICB2YXIgc2NyaXB0Q2xvc2VUYWcgPSAiPC9zY3Jp
cHQ+IjsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2NyaXB0cy5sZW5ndGg7ICsr
aSkgeworICAgICAgICAgICAgICAgIC8vIEZpbGwgdGhlIGdhcCB3aXRoIHdoaXRlc3BhY2UgY2hh
cmFjdGVycy4KKyAgICAgICAgICAgICAgICB3aGlsZSAobGluZU51bWJlciA8IHNjcmlwdHNbaV0u
bGluZU9mZnNldCkKKyAgICAgICAgICAgICAgICAgICAgYXBwZW5kQ2h1bmsoIlxuIik7CisgICAg
ICAgICAgICAgICAgd2hpbGUgKGNvbHVtbk51bWJlciA8IHNjcmlwdHNbaV0uY29sdW1uT2Zmc2V0
IC0gc2NyaXB0T3BlblRhZy5sZW5ndGgpCisgICAgICAgICAgICAgICAgICAgIGFwcGVuZENodW5r
KCIgIik7CisKKyAgICAgICAgICAgICAgICAvLyBBZGQgc2NyaXB0IHRhZy4KKyAgICAgICAgICAg
ICAgICBhcHBlbmRDaHVuayhzY3JpcHRPcGVuVGFnKTsKKyAgICAgICAgICAgICAgICBhcHBlbmRD
aHVuayhzb3VyY2VzW2ldLCB0cnVlKTsKKyAgICAgICAgICAgICAgICBhcHBlbmRDaHVuayhzY3Jp
cHRDbG9zZVRhZyk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgdGhpcy5fc2Ny
aXB0LnJlcXVlc3RTb3VyY2UoZGlkUmVxdWVzdFNvdXJjZS5iaW5kKHRoaXMpKTsKKyAgICAgICAg
cmV0dXJuIHsgbWltZVR5cGU6IG1pbWVUeXBlLCBzb3VyY2U6IHNvdXJjZSwgc2NyaXB0UmFuZ2Vz
OiBzY3JpcHRSYW5nZXMgfTsKICAgICB9CiB9CiAK
</data>
<flag name="review"
          id="74311"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>