<?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>55237</bug_id>
          
          <creation_ts>2011-02-25 11:05:36 -0800</creation_ts>
          <short_desc>Web Inspector: extract content loading logic from scripts panel</short_desc>
          <delta_ts>2011-03-18 07:26:34 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (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>
          <dependson>56579</dependson>
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Pavel Podivilov">podivilov</reporter>
          <assigned_to name="Pavel Podivilov">podivilov</assigned_to>
          <cc>abarth</cc>
    
    <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>eric</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>358050</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-02-25 11:05:36 -0800</bug_when>
    <thetext>Web Inspector: extract content loading logic from scripts panel.

We need to encapsulate source frame content loading logic in debugger presentation model to support beautification, de-obfuscation and source maps in a pluggable way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>358052</commentid>
    <comment_count>1</comment_count>
      <attachid>83843</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-02-25 11:06:57 -0800</bug_when>
    <thetext>Created attachment 83843
Patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>359091</commentid>
    <comment_count>2</comment_count>
      <attachid>83843</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-02-28 08:54:09 -0800</bug_when>
    <thetext>Comment on attachment 83843
Patch.

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

This change looks scary. Could you split it into number of changes?

&gt; Source/WebCore/ChangeLog:950
&gt; +        to -1. Since WebKit2 doesnï¿½t support non-activating clicks yet (&lt;http://webkit.org/b/55053&gt;

Is this change intentional?

&gt; Source/WebCore/inspector/front-end/DebuggerModel.js:47
&gt;      BreakpointAdded: &quot;breakpoint-added&quot;,

I thought you were going to get rid of this one?

&gt; Source/WebCore/inspector/front-end/DebuggerModel.js:50
&gt; +    InspectedURLChanged: &quot;inspected-url-changed&quot;

It is not clear why this event should be fired on debugger model.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365961</commentid>
    <comment_count>3</comment_count>
      <attachid>85467</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-03-11 06:18:33 -0800</bug_when>
    <thetext>Created attachment 85467
Patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365962</commentid>
    <comment_count>4</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-03-11 06:18:55 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 83843 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=83843&amp;action=review
&gt; 
&gt; This change looks scary. Could you split it into number of changes?
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:950
&gt; &gt; +        to -1. Since WebKit2 doesnï¿½t support non-activating clicks yet (&lt;http://webkit.org/b/55053&gt;
&gt; 
&gt; Is this change intentional?
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/DebuggerModel.js:47
&gt; &gt;      BreakpointAdded: &quot;breakpoint-added&quot;,
&gt; 
&gt; I thought you were going to get rid of this one?
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/DebuggerModel.js:50
&gt; &gt; +    InspectedURLChanged: &quot;inspected-url-changed&quot;
&gt; 
&gt; It is not clear why this event should be fired on debugger model.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>367009</commentid>
    <comment_count>5</comment_count>
      <attachid>85681</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-03-14 09:01:25 -0700</bug_when>
    <thetext>Created attachment 85681
Rebase.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>368321</commentid>
    <comment_count>6</comment_count>
      <attachid>85926</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-03-16 07:11:53 -0700</bug_when>
    <thetext>Created attachment 85926
Patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>368400</commentid>
    <comment_count>7</comment_count>
      <attachid>85926</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-03-16 11:12:18 -0700</bug_when>
    <thetext>Comment on attachment 85926
Patch.

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

&gt; Source/WebCore/inspector/front-end/DebuggerPresentationModel.js:315
&gt; +WebInspector.SourceFileProvider.prototype = {

So SourceFileProvider has a fairly strange interface:
- addScript
- ensureSourceFileAdded
- sourceFile
- requestSourceFileContent
- scriptLocationToSourceLocation

what is it really responsible for?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>368973</commentid>
    <comment_count>8</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-03-17 04:11:06 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 85926 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=85926&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/DebuggerPresentationModel.js:315
&gt; &gt; +WebInspector.SourceFileProvider.prototype = {
&gt; 
&gt; So SourceFileProvider has a fairly strange interface:
&gt; - addScript
&gt; - ensureSourceFileAdded
&gt; - sourceFile
&gt; - requestSourceFileContent
&gt; - scriptLocationToSourceLocation
&gt; 
&gt; what is it really responsible for?

It&apos;s a private DPM utility class responsible for mapping VM scripts to UI source files. I agree that interface looks strange, but I need an interface like this  to hide scripts &lt;-&gt; sources mapping strategy from DPM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>369173</commentid>
    <comment_count>9</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-03-17 11:17:57 -0700</bug_when>
    <thetext>Committed r81369: &lt;http://trac.webkit.org/changeset/81369&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>369191</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-17 11:54:55 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/81369 might have broken SnowLeopard Intel Release (Tests)
The following tests are not passing:
inspector/debugger/debug-inlined-scripts.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>369617</commentid>
    <comment_count>11</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-03-18 07:26:34 -0700</bug_when>
    <thetext>Committed r81467: &lt;http://trac.webkit.org/changeset/81467&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>83843</attachid>
            <date>2011-02-25 11:06:57 -0800</date>
            <delta_ts>2011-03-11 06:18:33 -0800</delta_ts>
            <desc>Patch.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>36863</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyY2ZhNjRiLi5mZjVjZmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTgg
QEAKKzIwMTEtMDItMjUgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogZXh0cmFjdCBjb250ZW50IGxvYWRpbmcgbG9naWMgZnJvbSBzY3JpcHRzIHBhbmVs
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NTIzNwor
CisgICAgICAgIFdlIG5lZWQgdG8gZW5jYXBzdWxhdGUgc291cmNlIGZyYW1lIGNvbnRlbnQgbG9h
ZGluZyBsb2dpYyBpbiBkZWJ1Z2dlciBwcmVzZW50YXRpb24gbW9kZWwKKyAgICAgICAgdG8gc3Vw
cG9ydCBiZWF1dGlmaWNhdGlvbiwgZGUtb2JmdXNjYXRpb24gYW5kIHNvdXJjZSBtYXBzIGluIGEg
cGx1Z2dhYmxlIHdheS4KKworICAgICAgICBUZXN0OiBpbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0
cy1wYW5lbC5odG1sCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyTW9k
ZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5wcm90b3R5cGUucmVz
ZXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwucHJvdG90eXBlLl91cGRh
dGVTY3JpcHRTb3VyY2UpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJQ
cmVzZW50YXRpb25Nb2RlbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNl
bnRhdGlvbk1vZGVsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlv
bk1vZGVsLnByb3RvdHlwZS5icmVha3BvaW50c0ZvclNvdXJjZUZpbGVJZCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUuX2JyZWFrcG9p
bnRBZGRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2Rl
bC5wcm90b3R5cGUuX2JyZWFrcG9pbnRSZW1vdmVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5E
ZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZS5fZW5jb2RlU291cmNlTG9jYXRpb24p
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90
eXBlLl9hY3R1YWxMb2NhdGlvblRvU291cmNlTG9jYXRpb24pOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlNvdXJjZUZpbGVzTWFuYWdlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlRmls
ZXNNYW5hZ2VyLnByb3RvdHlwZS5fcGFyc2VkU2NyaXB0U291cmNlKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5Tb3VyY2VGaWxlc01hbmFnZXIucHJvdG90eXBlLl9mYWlsZWRUb1BhcnNlU2NyaXB0
U291cmNlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VGaWxlc01hbmFnZXIucHJvdG90
eXBlLl9zY3JpcHRTb3VyY2VDaGFuZ2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VG
aWxlc01hbmFnZXIucHJvdG90eXBlLl9yZXNvdXJjZUZvclVSTCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuU291cmNlRmlsZXNNYW5hZ2VyLnByb3RvdHlwZS5fcmVzb3VyY2VMb2FkaW5nRmluaXNo
ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUZpbGVzTWFuYWdlci5wcm90b3R5cGUu
X3NvdXJjZUZpbGVJZEZvclNjcmlwdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlRmls
ZXNNYW5hZ2VyLnByb3RvdHlwZS5faW5zcGVjdGVkVVJMQ2hhbmdlZCk6CisgICAgICAgICogaW5z
cGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
UmVzb3VyY2VWaWV3LmNyZWF0ZVJlc291cmNlVmlldyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9TY3JpcHRzUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1Bh
bmVsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlLl9zY3Jp
cHRTb3VyY2VDaGFuZ2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJv
dG90eXBlLl9zb3VyY2VGaWxlQWRkZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQ
YW5lbC5wcm90b3R5cGUuX3NvdXJjZUZpbGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5TY3JpcHRzUGFuZWwucHJvdG90eXBlLl9hZGRPcHRpb25Ub0ZpbGVzU2VsZWN0KToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlLmFkZENvbnNvbGVNZXNzYWdl
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlLmNsZWFyQ29u
c29sZU1lc3NhZ2VzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90
eXBlLl9icmVha3BvaW50QWRkZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5l
bC5wcm90b3R5cGUuX2JyZWFrcG9pbnRSZW1vdmVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5T
Y3JpcHRzUGFuZWwucHJvdG90eXBlLnJlc2V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3Jp
cHRzUGFuZWwucHJvdG90eXBlLmNhblNob3dTb3VyY2VMaW5lKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlLnNob3dTb3VyY2VMaW5lKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlLl9zaG93U291cmNlRnJhbWVBbmRBZGRU
b0hpc3RvcnkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUu
X3Nob3dTb3VyY2VGcmFtZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnBy
b3RvdHlwZS5fY3JlYXRlU291cmNlRnJhbWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlw
dHNQYW5lbC5wcm90b3R5cGUuX3NvdXJjZUZyYW1lTG9hZGVkKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlLl9zb3VyY2VGaWxlSWRGb3JTY3JpcHQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUuX2NhbGxGcmFtZVNlbGVj
dGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlLl9maWxl
c1NlbGVjdENoYW5nZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU291cmNlRnJh
bWUuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUpOgorCiAyMDExLTAyLTIz
ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IFl1cnkgU2VtaWtoYXRza3kuCkBAIC04OTIsOCArOTQ3LDggQEAKIAogICAgICAgICAq
IHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKICAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6
RXZlbnRIYW5kbGVyKTogSW5pdGlhbGl6ZSBtX2FjdGl2YXRpb25FdmVudE51bWJlcgotICAgICAg
ICB0byAtMS4gU2luY2UgV2ViS2l0MiBkb2VzbtV0IHN1cHBvcnQgbm9uLWFjdGl2YXRpbmcgY2xp
Y2tzIHlldCAoPGh0dHA6Ly93ZWJraXQub3JnL2IvNTUwNTM+Ci0gICAgICAgIDxyZGFyOi8vcHJv
YmxlbS85MDQyMTk3PikgYW5kIGRvZXNu1XQgc2VuZCBldmVudCBudW1iZXJzLCBhbGwgZXZlbnRz
IHdlcmUgY29uc2lkZXJlZCB0byBiZQorICAgICAgICB0byAtMS4gU2luY2UgV2ViS2l0MiBkb2Vz
bu+/vXQgc3VwcG9ydCBub24tYWN0aXZhdGluZyBjbGlja3MgeWV0ICg8aHR0cDovL3dlYmtpdC5v
cmcvYi81NTA1Mz4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzkwNDIxOTc+KSBhbmQgZG9lc27v
v710IHNlbmQgZXZlbnQgbnVtYmVycywgYWxsIGV2ZW50cyB3ZXJlIGNvbnNpZGVyZWQgdG8gYmUK
ICAgICAgICAgd2luZG93LWFjdGl2YXRpbmcgZXZlbnRzLiBUaGlzIGluIHR1cm4gcHJldmVudGVk
IHRoZW0gZnJvbSBjbGVhcmluZyB0aGUgc2VsZWN0aW9uIGFuZCByZXN1bWluZwogICAgICAgICBj
YXJldCBibGlua2luZyBvbiBtb3VzZSB1cC4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlck1vZGVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlck1vZGVsLmpzCmluZGV4IGRjN2UwYWQuLjdjMjk1ZDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJN
b2RlbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2Vy
TW9kZWwuanMKQEAgLTQ2LDcgKzQ2LDggQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuRXZl
bnRzID0gewogICAgIFNjcmlwdFNvdXJjZUNoYW5nZWQ6ICJzY3JpcHQtc291cmNlLWNoYW5nZWQi
LAogICAgIEJyZWFrcG9pbnRBZGRlZDogImJyZWFrcG9pbnQtYWRkZWQiLAogICAgIEJyZWFrcG9p
bnRSZW1vdmVkOiAiYnJlYWtwb2ludC1yZW1vdmVkIiwKLSAgICBCcmVha3BvaW50UmVzb2x2ZWQ6
ICJicmVha3BvaW50LXJlc29sdmVkIgorICAgIEJyZWFrcG9pbnRSZXNvbHZlZDogImJyZWFrcG9p
bnQtcmVzb2x2ZWQiLAorICAgIEluc3BlY3RlZFVSTENoYW5nZWQ6ICJpbnNwZWN0ZWQtdXJsLWNo
YW5nZWQiCiB9CiAKIFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLnByb3RvdHlwZSA9IHsKQEAg
LTE4NSw2ICsxODYsNyBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5wcm90b3R5cGUgPSB7
CiAgICAgICAgICAgICAgICAgYnJlYWtwb2ludC5sb2NhdGlvbnMgPSBbXTsKICAgICAgICAgfQog
ICAgICAgICB0aGlzLl9zY3JpcHRzID0ge307CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRv
TGlzdGVuZXJzKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkV2ZW50cy5JbnNwZWN0ZWRVUkxD
aGFuZ2VkKTsKICAgICB9LAogCiAgICAgc2NyaXB0Rm9yU291cmNlSUQ6IGZ1bmN0aW9uKHNvdXJj
ZUlEKQpAQCAtMjYzLDcgKzI2NSw3IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgICAgICAgICB0aGlzLnNldEJyZWFrcG9pbnRCeVNvdXJjZUlkKHNv
dXJjZUlELCBuZXdMaW5lTnVtYmVyLCBicmVha3BvaW50LmNvbHVtbk51bWJlciwgYnJlYWtwb2lu
dC5jb25kaXRpb24sIGJyZWFrcG9pbnQuZW5hYmxlZCk7CiAgICAgICAgIH0KIAotICAgICAgICB0
aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5F
dmVudHMuU2NyaXB0U291cmNlQ2hhbmdlZCwgeyBzb3VyY2VJRDogc291cmNlSUQsIG9sZFNvdXJj
ZTogb2xkU291cmNlIH0pOworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhX
ZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5FdmVudHMuU2NyaXB0U291cmNlQ2hhbmdlZCwgeyBz
Y3JpcHQ6IHNjcmlwdCwgb2xkU291cmNlOiBvbGRTb3VyY2UgfSk7CiAgICAgfSwKIAogICAgIGdl
dCBjYWxsRnJhbWVzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5qcwppbmRleCA0NDczN2Y5
Li45OTQ0ODk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0RlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLmpzCkBAIC0zMCw2ICszMCw3
IEBACiAKIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsID0gZnVuY3Rpb24o
KQogeworICAgIHRoaXMuX3NvdXJjZUZpbGVzTWFuYWdlciA9IG5ldyBXZWJJbnNwZWN0b3IuU291
cmNlRmlsZXNNYW5hZ2VyKHRoaXMpOwogICAgIHRoaXMuX2JyZWFrcG9pbnRzID0ge307CiAgICAg
dGhpcy5fc291cmNlTG9jYXRpb25Ub0JyZWFrcG9pbnRJZCA9IHt9OwogCkBAIC0zOSwxNyArNDAs
MTkgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwgPSBmdW5jdGlvbigp
CiB9CiAKIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLkV2ZW50cyA9IHsK
KyAgICBTb3VyY2VGaWxlQWRkZWQ6ICJzb3VyY2UtZmlsZS1hZGRlZCIsCisgICAgU291cmNlRmls
ZUNoYW5nZWQ6ICJzb3VyY2UtZmlsZS1jaGFuZ2VkIiwKICAgICBCcmVha3BvaW50QWRkZWQ6ICJi
cmVha3BvaW50LWFkZGVkIiwKICAgICBCcmVha3BvaW50UmVtb3ZlZDogImJyZWFrcG9pbnQtcmVt
b3ZlZCIKIH0KIAogV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90
eXBlID0gewotICAgIGJyZWFrcG9pbnRzRm9yU291cmNlTmFtZTogZnVuY3Rpb24oc291cmNlTmFt
ZSkKKyAgICBicmVha3BvaW50c0ZvclNvdXJjZUZpbGVJZDogZnVuY3Rpb24oc291cmNlRmlsZUlk
KQogICAgIHsKICAgICAgICAgdmFyIGJyZWFrcG9pbnRzID0gW107CiAgICAgICAgIGZvciAodmFy
IGlkIGluIHRoaXMuX2JyZWFrcG9pbnRzKSB7CiAgICAgICAgICAgICB2YXIgYnJlYWtwb2ludCA9
IHRoaXMuX2JyZWFrcG9pbnRzW2lkXTsKLSAgICAgICAgICAgIGlmIChicmVha3BvaW50LnNvdXJj
ZU5hbWUgPT09IHNvdXJjZU5hbWUpCisgICAgICAgICAgICBpZiAoYnJlYWtwb2ludC5zb3VyY2VG
aWxlSWQgPT09IHNvdXJjZUZpbGVJZCkKICAgICAgICAgICAgICAgICBicmVha3BvaW50cy5wdXNo
KGJyZWFrcG9pbnQpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBicmVha3BvaW50czsKQEAg
LTYxLDcgKzY0LDcgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJv
dG90eXBlID0gewogICAgICAgICB2YXIgbG9jYXRpb24gPSBicmVha3BvaW50LmxvY2F0aW9ucy5s
ZW5ndGggPyBicmVha3BvaW50LmxvY2F0aW9uc1swXSA6IGJyZWFrcG9pbnQ7CiAgICAgICAgIHZh
ciBzb3VyY2VMb2NhdGlvbiA9IHRoaXMuX2FjdHVhbExvY2F0aW9uVG9Tb3VyY2VMb2NhdGlvbihi
cmVha3BvaW50LnVybCB8fCBicmVha3BvaW50LnNvdXJjZUlELCBsb2NhdGlvbi5saW5lTnVtYmVy
LCBsb2NhdGlvbi5jb2x1bW5OdW1iZXIpOwogCi0gICAgICAgIHZhciBlbmNvZGVkU291cmNlTG9j
YXRpb24gPSB0aGlzLl9lbmNvZGVTb3VyY2VMb2NhdGlvbihzb3VyY2VMb2NhdGlvbi5zb3VyY2VO
YW1lLCBzb3VyY2VMb2NhdGlvbi5saW5lTnVtYmVyKTsKKyAgICAgICAgdmFyIGVuY29kZWRTb3Vy
Y2VMb2NhdGlvbiA9IHRoaXMuX2VuY29kZVNvdXJjZUxvY2F0aW9uKHNvdXJjZUxvY2F0aW9uLnNv
dXJjZUZpbGVJZCwgc291cmNlTG9jYXRpb24ubGluZU51bWJlcik7CiAgICAgICAgIGlmIChlbmNv
ZGVkU291cmNlTG9jYXRpb24gaW4gdGhpcy5fc291cmNlTG9jYXRpb25Ub0JyZWFrcG9pbnRJZCkg
ewogICAgICAgICAgICAgLy8gV2UgY2FuJ3Qgc2hvdyBtb3JlIHRoYW4gb25lIGJyZWFrcG9pbnQg
b24gYSBzaW5nbGUgc291cmNlIGZyYW1lIGxpbmUuIFJlbW92ZSBuZXdseSBhZGRlZCBicmVha3Bv
aW50LgogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwucmVtb3ZlQnJlYWtw
b2ludChicmVha3BvaW50LmlkKTsKQEAgLTY5LDcgKzcyLDcgQEAgV2ViSW5zcGVjdG9yLkRlYnVn
Z2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAg
dmFyIHByZXNlbnRhdGlvbkJyZWFrcG9pbnQgPSB7Ci0gICAgICAgICAgICBzb3VyY2VOYW1lOiBz
b3VyY2VMb2NhdGlvbi5zb3VyY2VOYW1lLAorICAgICAgICAgICAgc291cmNlRmlsZUlkOiBzb3Vy
Y2VMb2NhdGlvbi5zb3VyY2VGaWxlSWQsCiAgICAgICAgICAgICBsaW5lTnVtYmVyOiBzb3VyY2VM
b2NhdGlvbi5saW5lTnVtYmVyLAogICAgICAgICAgICAgdXJsOiBicmVha3BvaW50LnVybCwKICAg
ICAgICAgICAgIHJlc29sdmVkOiAhIWJyZWFrcG9pbnQubG9jYXRpb25zLmxlbmd0aCwKQEAgLTgw
LDE3ICs4MywxOSBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90
b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3NvdXJjZUxvY2F0aW9uVG9CcmVha3BvaW50SWRbZW5j
b2RlZFNvdXJjZUxvY2F0aW9uXSA9IGJyZWFrcG9pbnQuaWQ7CiAgICAgICAgIHRoaXMuX2JyZWFr
cG9pbnRzW2JyZWFrcG9pbnQuaWRdID0gcHJlc2VudGF0aW9uQnJlYWtwb2ludDsKIAotICAgICAg
ICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVz
ZW50YXRpb25Nb2RlbC5FdmVudHMuQnJlYWtwb2ludEFkZGVkLCBwcmVzZW50YXRpb25CcmVha3Bv
aW50KTsKKyAgICAgICAgaWYgKHByZXNlbnRhdGlvbkJyZWFrcG9pbnQuc291cmNlRmlsZUlkIGlu
IHRoaXMuX3NvdXJjZUZpbGVzTWFuYWdlci5fc291cmNlRmlsZXMpCisgICAgICAgICAgICB0aGlz
LmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRp
b25Nb2RlbC5FdmVudHMuQnJlYWtwb2ludEFkZGVkLCBwcmVzZW50YXRpb25CcmVha3BvaW50KTsK
ICAgICB9LAogCiAgICAgX2JyZWFrcG9pbnRSZW1vdmVkOiBmdW5jdGlvbihldmVudCkKICAgICB7
CiAgICAgICAgIHZhciBicmVha3BvaW50SWQgPSBldmVudC5kYXRhOwogICAgICAgICB2YXIgYnJl
YWtwb2ludCA9IHRoaXMuX2JyZWFrcG9pbnRzW2JyZWFrcG9pbnRJZF07Ci0gICAgICAgIHZhciBl
bmNvZGVkU291cmNlTG9jYXRpb24gPSB0aGlzLl9lbmNvZGVTb3VyY2VMb2NhdGlvbihicmVha3Bv
aW50LnNvdXJjZU5hbWUsIGJyZWFrcG9pbnQubGluZU51bWJlcik7CisgICAgICAgIHZhciBlbmNv
ZGVkU291cmNlTG9jYXRpb24gPSB0aGlzLl9lbmNvZGVTb3VyY2VMb2NhdGlvbihicmVha3BvaW50
LnNvdXJjZUZpbGVJZCwgYnJlYWtwb2ludC5saW5lTnVtYmVyKTsKICAgICAgICAgZGVsZXRlIHRo
aXMuX2JyZWFrcG9pbnRzW2JyZWFrcG9pbnRJZF07CiAgICAgICAgIGRlbGV0ZSB0aGlzLl9zb3Vy
Y2VMb2NhdGlvblRvQnJlYWtwb2ludElkW2VuY29kZWRTb3VyY2VMb2NhdGlvbl07Ci0gICAgICAg
IHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNl
bnRhdGlvbk1vZGVsLkV2ZW50cy5CcmVha3BvaW50UmVtb3ZlZCwgYnJlYWtwb2ludCk7CisgICAg
ICAgIGlmIChicmVha3BvaW50LnNvdXJjZUZpbGVJZCBpbiB0aGlzLl9zb3VyY2VGaWxlc01hbmFn
ZXIuX3NvdXJjZUZpbGVzKQorICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5l
cnMoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuRXZlbnRzLkJyZWFrcG9p
bnRSZW1vdmVkLCBicmVha3BvaW50KTsKICAgICB9LAogCiAgICAgX2JyZWFrcG9pbnRSZXNvbHZl
ZDogZnVuY3Rpb24oZXZlbnQpCkBAIC0xMDAsMTYgKzEwNSwxMTkgQEAgV2ViSW5zcGVjdG9yLkRl
YnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9icmVh
a3BvaW50QWRkZWQoeyBkYXRhOiBicmVha3BvaW50IH0pOwogICAgIH0sCiAKLSAgICBfZW5jb2Rl
U291cmNlTG9jYXRpb246IGZ1bmN0aW9uKHNvdXJjZU5hbWUsIGxpbmVOdW1iZXIpCisgICAgX2Vu
Y29kZVNvdXJjZUxvY2F0aW9uOiBmdW5jdGlvbihzb3VyY2VGaWxlSWQsIGxpbmVOdW1iZXIpCiAg
ICAgewotICAgICAgICByZXR1cm4gc291cmNlTmFtZSArICI6IiArIGxpbmVOdW1iZXI7CisgICAg
ICAgIHJldHVybiBzb3VyY2VGaWxlSWQgKyAiOiIgKyBsaW5lTnVtYmVyOwogICAgIH0sCiAKICAg
ICBfYWN0dWFsTG9jYXRpb25Ub1NvdXJjZUxvY2F0aW9uOiBmdW5jdGlvbihzb3VyY2VOYW1lLCBs
aW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgewogICAgICAgICAvLyBUT0RPOiB1c2Ugc291
cmNlIG1hcHBpbmcgdG8gb2J0YWluIHNvdXJjZSBsb2NhdGlvbi4KLSAgICAgICAgcmV0dXJuIHsg
c291cmNlTmFtZTogc291cmNlTmFtZSwgbGluZU51bWJlcjogbGluZU51bWJlciwgY29sdW1uTnVt
YmVyOiBjb2x1bW5OdW1iZXIgfTsKKyAgICAgICAgcmV0dXJuIHsgc291cmNlRmlsZUlkOiBzb3Vy
Y2VOYW1lLCBsaW5lTnVtYmVyOiBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXI6IGNvbHVtbk51bWJl
ciB9OwogICAgIH0KIH0KIAogV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwu
cHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOworCisK
K1dlYkluc3BlY3Rvci5Tb3VyY2VGaWxlc01hbmFnZXIgPSBmdW5jdGlvbihtb2RlbCkKK3sKKyAg
ICB0aGlzLl9tb2RlbCA9IG1vZGVsOworICAgIHRoaXMuX3NvdXJjZUZpbGVzID0ge307CisKKyAg
ICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rv
ci5EZWJ1Z2dlck1vZGVsLkV2ZW50cy5QYXJzZWRTY3JpcHRTb3VyY2UsIHRoaXMuX3BhcnNlZFNj
cmlwdFNvdXJjZSwgdGhpcyk7CisgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuYWRkRXZl
bnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5FdmVudHMuRmFpbGVkVG9QYXJz
ZVNjcmlwdFNvdXJjZSwgdGhpcy5fZmFpbGVkVG9QYXJzZVNjcmlwdFNvdXJjZSwgdGhpcyk7Cisg
ICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0
b3IuRGVidWdnZXJNb2RlbC5FdmVudHMuU2NyaXB0U291cmNlQ2hhbmdlZCwgdGhpcy5fc2NyaXB0
U291cmNlQ2hhbmdlZCwgdGhpcyk7CisgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuYWRk
RXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5FdmVudHMuSW5zcGVjdGVk
VVJMQ2hhbmdlZCwgdGhpcy5faW5zcGVjdGVkVVJMQ2hhbmdlZCwgdGhpcyk7Cit9CisKK1dlYklu
c3BlY3Rvci5Tb3VyY2VGaWxlc01hbmFnZXIucHJvdG90eXBlID0geworICAgIF9wYXJzZWRTY3Jp
cHRTb3VyY2U6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgdmFyIHNjcmlwdCA9IGV2
ZW50LmRhdGE7CisgICAgICAgIHZhciBzb3VyY2VGaWxlSWQgPSB0aGlzLl9zb3VyY2VGaWxlSWRG
b3JTY3JpcHQoc2NyaXB0KTsKKworICAgICAgICAvLyBDaGVjayBpZiB3ZSBhbHJlYWR5IGhhdmUg
c291cmNlIGZpbGUgZm9yIHRoaXMgc2NyaXB0IChoYXBwZW5zIGZvciBodG1sIGRvY3VtZW50cwor
ICAgICAgICAvLyB0aGF0IGhhdmUgc2V2ZXJhbCBpbmxpbmVkIHNjcmlwdHMpLgorICAgICAgICB2
YXIgc291cmNlRmlsZSA9IHRoaXMuX3NvdXJjZUZpbGVzW3NvdXJjZUZpbGVJZF07CisgICAgICAg
IGlmIChzb3VyY2VGaWxlKSB7CisgICAgICAgICAgICAvLyBTb3VyY2UgZmlsZSB0ZXh0IG1heSBi
ZSBvdXRkYXRlZCBub3cgKGUuZy4gaWYgc291cmNlIGZpbGUgaXMgaHRtbCBkb2N1bWVudCB3aXRo
IGZvcm1hdHRlZCBzY3JpcHRzKS4KKyAgICAgICAgICAgIHRoaXMuX21vZGVsLmRpc3BhdGNoRXZl
bnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5FdmVu
dHMuU291cmNlRmlsZUNoYW5nZWQsIHNvdXJjZUZpbGUpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisKKyAgICAgICAgdmFyIHNvdXJjZUZpbGUgPSB7IGlkOiBzb3VyY2VGaWxlSWQg
fTsKKyAgICAgICAgdGhpcy5fc291cmNlRmlsZXNbc291cmNlRmlsZUlkXSA9IHNvdXJjZUZpbGU7
CisKKyAgICAgICAgLy8gQ2hlY2sgaWYgc2NyaXB0IGhhcyBjb3JyZXNwb25kaW5nIHJlc291cmNl
IG9yIHNob3VsZCBiZSBsb2FkZWQgZnJvbSBkZWJ1Z2dlci4KKyAgICAgICAgdmFyIHJlc291cmNl
ID0gc2NyaXB0LnNvdXJjZVVSTCA/IHRoaXMuX3Jlc291cmNlRm9yVVJMKHNjcmlwdC5zb3VyY2VV
UkwpIDogbnVsbDsKKyAgICAgICAgaWYgKCFyZXNvdXJjZSkgeworICAgICAgICAgICAgdmFyIGNv
bnRlbnRQcm92aWRlciA9IG5ldyBXZWJJbnNwZWN0b3IuU291cmNlRnJhbWVDb250ZW50UHJvdmlk
ZXJGb3JTY3JpcHQoc2NyaXB0KTsKKyAgICAgICAgICAgIHNvdXJjZUZpbGUucmVxdWVzdENvbnRl
bnQgPSBjb250ZW50UHJvdmlkZXIucmVxdWVzdENvbnRlbnQuYmluZChjb250ZW50UHJvdmlkZXIp
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKHJlc291cmNlLmZpbmlzaGVkKSB7
CisgICAgICAgICAgICAgICAgdmFyIGNvbnRlbnRQcm92aWRlciA9IG5ldyBXZWJJbnNwZWN0b3Iu
U291cmNlRnJhbWVDb250ZW50UHJvdmlkZXJGb3JSZXNvdXJjZShyZXNvdXJjZSk7CisgICAgICAg
ICAgICAgICAgc291cmNlRmlsZS5yZXF1ZXN0Q29udGVudCA9IGNvbnRlbnRQcm92aWRlci5yZXF1
ZXN0Q29udGVudC5iaW5kKGNvbnRlbnRQcm92aWRlcik7CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIC8vIFJlc291cmNlIGlzIG5vdCBmaW5pc2hlZCB5ZXQuIFVzZSB0ZW1w
b3JhcnkgY29udGVudCBwcm92aWRlciB0aGF0IHdpbGwgbG9hZCBhbGwgc2NyaXB0cworICAgICAg
ICAgICAgICAgIC8vIHdpdGggdGhlIHNhbWUgdXJsIGZyb20gZGVidWdnZXIgYW5kIGpvaW4gdGhl
bSB0b2dldGhlci4KKyAgICAgICAgICAgICAgICB2YXIgY29udGVudFByb3ZpZGVyID0gbmV3IFdl
Ykluc3BlY3Rvci5Tb3VyY2VGcmFtZUNvbnRlbnRQcm92aWRlckZvclNjcmlwdChzY3JpcHQpOwor
ICAgICAgICAgICAgICAgIHNvdXJjZUZpbGUucmVxdWVzdENvbnRlbnQgPSBjb250ZW50UHJvdmlk
ZXIucmVxdWVzdENvbnRlbnQuYmluZChjb250ZW50UHJvdmlkZXIpOworCisgICAgICAgICAgICAg
ICAgLy8gV2hlbiByZXNvdXJjZSBpcyBmaW5pc2hlZCB3ZSBzaG91bGQgc3RhcnQgdXNpbmcgaXRz
IGNvbnRlbnQuCisgICAgICAgICAgICAgICAgcmVzb3VyY2UuYWRkRXZlbnRMaXN0ZW5lcigiZmlu
aXNoZWQiLCB0aGlzLl9yZXNvdXJjZUxvYWRpbmdGaW5pc2hlZCwgdGhpcyk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKworICAgICAgICBzb3VyY2VGaWxlLnVybCA9IHNjcmlwdC5zb3VyY2VV
Ukw7CisgICAgICAgIHNvdXJjZUZpbGUuaXNUZW1wb3JhcnkgPSByZXNvdXJjZSAmJiAhcmVzb3Vy
Y2UuZmluaXNoZWQ7CisgICAgICAgIHNvdXJjZUZpbGUuaXNFeHRlbnNpb25TY3JpcHQgPSBzY3Jp
cHQud29ybGRUeXBlID09PSBXZWJJbnNwZWN0b3IuU2NyaXB0LldvcmxkVHlwZS5FWFRFTlNJT05T
X1dPUkxEOworICAgICAgICB0aGlzLl9tb2RlbC5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2Vi
SW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuRXZlbnRzLlNvdXJjZUZpbGVBZGRl
ZCwgc291cmNlRmlsZSk7CisgICAgfSwKKworICAgIF9mYWlsZWRUb1BhcnNlU2NyaXB0U291cmNl
OiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHRoaXMuX3BhcnNlZFNjcmlwdFNvdXJj
ZShldmVudCk7CisgICAgfSwKKworICAgIF9zY3JpcHRTb3VyY2VDaGFuZ2VkOiBmdW5jdGlvbihl
dmVudCkKKyAgICB7CisgICAgICAgIHZhciBzY3JpcHQgPSBldmVudC5kYXRhLnNjcmlwdDsKKyAg
ICAgICAgdmFyIG9sZFNvdXJjZSA9IGV2ZW50LmRhdGEub2xkU291cmNlOworCisgICAgICAgIHZh
ciByZXNvdXJjZSA9IFdlYkluc3BlY3Rvci5yZXNvdXJjZUZvclVSTChzY3JpcHQuc291cmNlVVJM
KTsKKyAgICAgICAgaWYgKHJlc291cmNlKSB7CisgICAgICAgICAgICB2YXIgcmV2ZXJ0SGFuZGxl
ID0gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuZWRpdFNjcmlwdFNvdXJjZS5iaW5kKFdlYklu
c3BlY3Rvci5kZWJ1Z2dlck1vZGVsLCBzY3JpcHQuc291cmNlSUQsIG9sZFNvdXJjZSk7CisgICAg
ICAgICAgICByZXNvdXJjZS5zZXRDb250ZW50KHNjcmlwdC5zb3VyY2UsIHJldmVydEhhbmRsZSk7
CisgICAgICAgIH0KKworICAgICAgICB2YXIgc291cmNlRmlsZSA9IHRoaXMuX3NvdXJjZUZpbGVz
W3RoaXMuX3NvdXJjZUZpbGVJZEZvclNjcmlwdChldmVudC5kYXRhLnNjcmlwdCldOworICAgICAg
ICB0aGlzLl9tb2RlbC5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRlYnVn
Z2VyUHJlc2VudGF0aW9uTW9kZWwuRXZlbnRzLlNvdXJjZUZpbGVDaGFuZ2VkLCBzb3VyY2VGaWxl
KTsKKyAgICB9LAorCisgICAgX3Jlc291cmNlRm9yVVJMOiBmdW5jdGlvbih1cmwpCisgICAgewor
ICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLm5ldHdvcmtNYW5hZ2VyLmluZmxpZ2h0UmVzb3Vy
Y2VGb3JVUkwodXJsKSB8fCBXZWJJbnNwZWN0b3IucmVzb3VyY2VGb3JVUkwodXJsKTsKKyAgICB9
LAorCisgICAgX3Jlc291cmNlTG9hZGluZ0ZpbmlzaGVkOiBmdW5jdGlvbihlKQorICAgIHsKKyAg
ICAgICAgdmFyIHJlc291cmNlID0gZS50YXJnZXQ7CisKKyAgICAgICAgdmFyIHNvdXJjZUZpbGUg
PSB0aGlzLl9zb3VyY2VGaWxlc1tyZXNvdXJjZS51cmxdOworICAgICAgICB2YXIgY29udGVudFBy
b3ZpZGVyID0gbmV3IFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZUNvbnRlbnRQcm92aWRlckZvclJl
c291cmNlKHJlc291cmNlKTsKKyAgICAgICAgc291cmNlRmlsZS5pc1RlbXBvcmFyeSA9IGZhbHNl
OworICAgICAgICBzb3VyY2VGaWxlLnJlcXVlc3RDb250ZW50ID0gY29udGVudFByb3ZpZGVyLnJl
cXVlc3RDb250ZW50LmJpbmQoY29udGVudFByb3ZpZGVyKTsKKyAgICAgICAgdGhpcy5fbW9kZWwu
ZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlv
bk1vZGVsLkV2ZW50cy5Tb3VyY2VGaWxlQ2hhbmdlZCwgc291cmNlRmlsZSk7CisgICAgfSwKKwor
ICAgIF9zb3VyY2VGaWxlSWRGb3JTY3JpcHQ6IGZ1bmN0aW9uKHNjcmlwdCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBzY3JpcHQuc291cmNlVVJMIHx8IHNjcmlwdC5zb3VyY2VJRDsKKyAgICB9LAor
CisgICAgX2luc3BlY3RlZFVSTENoYW5nZWQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRo
aXMuX3NvdXJjZUZpbGVzID0ge307CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVZpZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVmlldy5qcwppbmRleCA0NTNhNjAyLi4yMTlmYjU2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNl
Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNl
Vmlldy5qcwpAQCAtNTEsOCArNTEsNyBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VWaWV3LmNyZWF0
ZVJlc291cmNlVmlldyA9IGZ1bmN0aW9uKHJlc291cmNlKQogICAgIGNhc2UgV2ViSW5zcGVjdG9y
LnJlc291cmNlQ2F0ZWdvcmllcy5zY3JpcHRzOgogICAgIGNhc2UgV2ViSW5zcGVjdG9yLnJlc291
cmNlQ2F0ZWdvcmllcy54aHI6CiAgICAgICAgIHZhciBjb250ZW50UHJvdmlkZXIgPSBuZXcgV2Vi
SW5zcGVjdG9yLlNvdXJjZUZyYW1lQ29udGVudFByb3ZpZGVyRm9yUmVzb3VyY2UocmVzb3VyY2Up
OwotICAgICAgICB2YXIgaXNTY3JpcHQgPSByZXNvdXJjZS50eXBlID09PSBXZWJJbnNwZWN0b3Iu
UmVzb3VyY2UuVHlwZS5TY3JpcHQ7Ci0gICAgICAgIHZhciB2aWV3ID0gbmV3IFdlYkluc3BlY3Rv
ci5Tb3VyY2VGcmFtZShjb250ZW50UHJvdmlkZXIsIHJlc291cmNlLnVybCwgaXNTY3JpcHQpOwor
ICAgICAgICB2YXIgdmlldyA9IG5ldyBXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUoY29udGVudFBy
b3ZpZGVyLCByZXNvdXJjZS51cmwpOwogICAgICAgICB2aWV3LnJlc291cmNlID0gcmVzb3VyY2U7
CiAgICAgICAgIHJldHVybiB2aWV3OwogICAgIGNhc2UgV2ViSW5zcGVjdG9yLnJlc291cmNlQ2F0
ZWdvcmllcy5pbWFnZXM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1NjcmlwdHNQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvU2NyaXB0c1BhbmVsLmpzCmluZGV4IDk3ZWVlMDYuLjVlNzgyMDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCkBAIC0xODYs
OCArMTg2LDggQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbCA9IGZ1bmN0aW9uKCkKIAogICAg
IHRoaXMucmVzZXQoKTsKIAotICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLmFkZEV2ZW50
TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuRXZlbnRzLlBhcnNlZFNjcmlwdFNv
dXJjZSwgdGhpcy5fcGFyc2VkU2NyaXB0U291cmNlLCB0aGlzKTsKLSAgICBXZWJJbnNwZWN0b3Iu
ZGVidWdnZXJNb2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVs
LkV2ZW50cy5GYWlsZWRUb1BhcnNlU2NyaXB0U291cmNlLCB0aGlzLl9mYWlsZWRUb1BhcnNlU2Ny
aXB0U291cmNlLCB0aGlzKTsKKyAgICB0aGlzLl9wcmVzZW50YXRpb25Nb2RlbC5hZGRFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLkV2ZW50cy5Tb3Vy
Y2VGaWxlQWRkZWQsIHRoaXMuX3NvdXJjZUZpbGVBZGRlZCwgdGhpcyk7CisgICAgdGhpcy5fcHJl
c2VudGF0aW9uTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVz
ZW50YXRpb25Nb2RlbC5FdmVudHMuU291cmNlRmlsZUNoYW5nZWQsIHRoaXMuX3NvdXJjZUZpbGVD
aGFuZ2VkLCB0aGlzKTsKICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5hZGRFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkV2ZW50cy5TY3JpcHRTb3VyY2VDaGFu
Z2VkLCB0aGlzLl9zY3JpcHRTb3VyY2VDaGFuZ2VkLCB0aGlzKTsKICAgICBXZWJJbnNwZWN0b3Iu
ZGVidWdnZXJNb2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVs
LkV2ZW50cy5EZWJ1Z2dlclBhdXNlZCwgdGhpcy5fZGVidWdnZXJQYXVzZWQsIHRoaXMpOwogICAg
IFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9y
LkRlYnVnZ2VyTW9kZWwuRXZlbnRzLkRlYnVnZ2VyUmVzdW1lZCwgdGhpcy5fZGVidWdnZXJSZXN1
bWVkLCB0aGlzKTsKQEAgLTI0NCwxMTIgKzI0NCw2NyBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c1Bh
bmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHRoaXMudG9nZ2xlQnJlYWtwb2ludHNC
dXR0b24udG9nZ2xlZDsKICAgICB9LAogCi0gICAgX3BhcnNlZFNjcmlwdFNvdXJjZTogZnVuY3Rp
b24oZXZlbnQpCi0gICAgewotICAgICAgICB0aGlzLl9hZGRTY3JpcHQoZXZlbnQuZGF0YSk7Ci0g
ICAgfSwKLQotICAgIF9mYWlsZWRUb1BhcnNlU2NyaXB0U291cmNlOiBmdW5jdGlvbihldmVudCkK
LSAgICB7Ci0gICAgICAgIHRoaXMuX2FkZFNjcmlwdChldmVudC5kYXRhKTsKLSAgICB9LAotCiAg
ICAgX3NjcmlwdFNvdXJjZUNoYW5nZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAg
dmFyIHNvdXJjZUlEID0gZXZlbnQuZGF0YS5zb3VyY2VJRDsKLSAgICAgICAgdmFyIG9sZFNvdXJj
ZSA9IGV2ZW50LmRhdGEub2xkU291cmNlOwotCi0gICAgICAgIHZhciBzY3JpcHQgPSBXZWJJbnNw
ZWN0b3IuZGVidWdnZXJNb2RlbC5zY3JpcHRGb3JTb3VyY2VJRChzb3VyY2VJRCk7Ci0gICAgICAg
IGlmIChzY3JpcHQucmVzb3VyY2UpIHsKLSAgICAgICAgICAgIHZhciByZXZlcnRIYW5kbGUgPSBX
ZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5lZGl0U2NyaXB0U291cmNlLmJpbmQoV2ViSW5zcGVj
dG9yLmRlYnVnZ2VyTW9kZWwsIHNvdXJjZUlELCBvbGRTb3VyY2UpOwotICAgICAgICAgICAgc2Ny
aXB0LnJlc291cmNlLnNldENvbnRlbnQoc2NyaXB0LnNvdXJjZSwgcmV2ZXJ0SGFuZGxlKTsKLSAg
ICAgICAgfQotCi0gICAgICAgIHZhciBzb3VyY2VOYW1lID0gdGhpcy5fc291cmNlTmFtZUZvclNj
cmlwdChzY3JpcHQpOwotICAgICAgICB0aGlzLl9yZWNyZWF0ZVNvdXJjZUZyYW1lKHNvdXJjZU5h
bWUpOwotCiAgICAgICAgIHZhciBjYWxsRnJhbWVzID0gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9k
ZWwuY2FsbEZyYW1lczsKICAgICAgICAgaWYgKGNhbGxGcmFtZXMubGVuZ3RoKQogICAgICAgICAg
ICAgdGhpcy5fZGVidWdnZXJQYXVzZWQoeyBkYXRhOiB7IGNhbGxGcmFtZXM6IGNhbGxGcmFtZXMg
fSB9KTsKICAgICB9LAogCi0gICAgX2FkZFNjcmlwdDogZnVuY3Rpb24oc2NyaXB0KQorICAgIF9z
b3VyY2VGaWxlQWRkZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgaWYgKCFzY3Jp
cHQuc291cmNlVVJMKSB7Ci0gICAgICAgICAgICAvLyBBbm9ueW1vdXMgc2NyaXB0cyBhcmUgc2hv
d24gb25seSB3aGVuIHN0ZXBwaW5nLgotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Cisg
ICAgICAgIHZhciBzb3VyY2VGaWxlID0gZXZlbnQuZGF0YTsKIAotICAgICAgICB2YXIgcmVzb3Vy
Y2UgPSB0aGlzLl9yZXNvdXJjZUZvclVSTChzY3JpcHQuc291cmNlVVJMKTsKLSAgICAgICAgaWYg
KHJlc291cmNlKSB7Ci0gICAgICAgICAgICBpZiAocmVzb3VyY2UuZmluaXNoZWQpIHsKLSAgICAg
ICAgICAgICAgICAvLyBSZXNvdXJjZSBpcyBmaW5pc2hlZCwgYmluZCB0aGUgc2NyaXB0IHJpZ2h0
IGF3YXkuCi0gICAgICAgICAgICAgICAgcmVzb3VyY2UuX3NjcmlwdHNQZW5kaW5nUmVzb3VyY2VM
b2FkID0gW3NjcmlwdF07Ci0gICAgICAgICAgICAgICAgdGhpcy5fcmVzb3VyY2VMb2FkaW5nRmlu
aXNoZWQoeyB0YXJnZXQ6IHJlc291cmNlIH0pOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgICAgICAvLyBSZXNvdXJjZSBpcyBub3QgZmluaXNoZWQsIGJpbmQgdGhlIHNjcmlwdCBs
YXRlci4KLSAgICAgICAgICAgICAgICBpZiAoIXJlc291cmNlLl9zY3JpcHRzUGVuZGluZ1Jlc291
cmNlTG9hZCkgewotICAgICAgICAgICAgICAgICAgICByZXNvdXJjZS5fc2NyaXB0c1BlbmRpbmdS
ZXNvdXJjZUxvYWQgPSBbXTsKLSAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2UuYWRkRXZlbnRM
aXN0ZW5lcigiZmluaXNoZWQiLCB0aGlzLl9yZXNvdXJjZUxvYWRpbmdGaW5pc2hlZCwgdGhpcyk7
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJlc291cmNlLl9zY3JpcHRzUGVu
ZGluZ1Jlc291cmNlTG9hZC5wdXNoKHNjcmlwdCk7Ci0KLSAgICAgICAgICAgICAgICAvLyBTb3Vy
Y2UgZnJhbWUgY29udGVudCBpcyBvdXRkYXRlZCBzaW5jZSB3ZSBoYXZlIG5ldyBzY3JpcHQgcGFy
c2VkLgotICAgICAgICAgICAgICAgIHRoaXMuX3JlY3JlYXRlU291cmNlRnJhbWUoc2NyaXB0LnNv
dXJjZVVSTCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAoIShzY3JpcHQuc291
cmNlVVJMIGluIHRoaXMuX3NvdXJjZU5hbWVUb0ZpbGVzU2VsZWN0T3B0aW9uKSkgewotICAgICAg
ICAgICAgLy8gVGhpcyBpcyBhIGR5bmFtaWMgc2NyaXB0IHdpdGggIi8vQCBzb3VyY2VVUkw9IiBj
b21tZW50LgotICAgICAgICAgICAgdGhpcy5fYWRkT3B0aW9uVG9GaWxlc1NlbGVjdEFuZFNob3dT
b3VyY2VGcmFtZUlmTmVlZGVkKHNjcmlwdC5zb3VyY2VVUkwpOwotICAgICAgICB9Ci0gICAgfSwK
KyAgICAgICAgdGhpcy5fc291cmNlRmlsZXNbc291cmNlRmlsZS5pZF0gPSBzb3VyY2VGaWxlOwog
Ci0gICAgX3Jlc291cmNlRm9yVVJMOiBmdW5jdGlvbih1cmwpCi0gICAgewotICAgICAgICByZXR1
cm4gV2ViSW5zcGVjdG9yLm5ldHdvcmtNYW5hZ2VyLmluZmxpZ2h0UmVzb3VyY2VGb3JVUkwodXJs
KSB8fCBXZWJJbnNwZWN0b3IucmVzb3VyY2VGb3JVUkwodXJsKTsKLSAgICB9LAotCi0gICAgX3Jl
c291cmNlTG9hZGluZ0ZpbmlzaGVkOiBmdW5jdGlvbihlKQotICAgIHsKLSAgICAgICAgdmFyIHJl
c291cmNlID0gZS50YXJnZXQ7Ci0KLSAgICAgICAgLy8gQmluZCBzY3JpcHRzIHRvIHJlc291cmNl
LgotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlc291cmNlLl9zY3JpcHRzUGVuZGluZ1Jl
c291cmNlTG9hZC5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgdmFyIHNjcmlwdCA9IHJlc291
cmNlLl9zY3JpcHRzUGVuZGluZ1Jlc291cmNlTG9hZFtpXTsKLSAgICAgICAgICAgIHNjcmlwdC5y
ZXNvdXJjZSA9IHJlc291cmNlOworICAgICAgICBpZiAoIXNvdXJjZUZpbGUudXJsIHx8IHNvdXJj
ZUZpbGUuaXNUZW1wb3JhcnkpIHsKKyAgICAgICAgICAgIC8vIEFub255bW91cyBhbmQgdGVtcG9y
YXJ5IHNvdXJjZXMgYXJlIHNob3duIG9ubHkgd2hlbiBzdGVwcGluZy4KKyAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQotICAgICAgICBkZWxldGUgcmVzb3VyY2UuX3NjcmlwdHNQZW5kaW5n
UmVzb3VyY2VMb2FkOwotCi0gICAgICAgIC8vIFJlY3JlYXRlIHNvdXJjZSBmcmFtZSB0byBzaG93
IHJlc291cmNlIGNvbnRlbnQuCi0gICAgICAgIHRoaXMuX3JlY3JlYXRlU291cmNlRnJhbWUocmVz
b3VyY2UudXJsKTsKIAotICAgICAgICAvLyBBZGQgcmVzb3VyY2UgdXJsIHRvIGZpbGVzIHNlbGVj
dCBpZiBub3QgYWxyZWFkeSBhZGRlZCB3aGlsZSBkZWJ1Z2dpbmcgaW5saW5lZCBzY3JpcHRzLgot
ICAgICAgICBpZiAoIShyZXNvdXJjZS51cmwgaW4gdGhpcy5fc291cmNlTmFtZVRvRmlsZXNTZWxl
Y3RPcHRpb24pKQotICAgICAgICAgICAgdGhpcy5fYWRkT3B0aW9uVG9GaWxlc1NlbGVjdEFuZFNo
b3dTb3VyY2VGcmFtZUlmTmVlZGVkKHJlc291cmNlLnVybCk7Ci0gICAgfSwKLQotICAgIF9hZGRP
cHRpb25Ub0ZpbGVzU2VsZWN0QW5kU2hvd1NvdXJjZUZyYW1lSWZOZWVkZWQ6IGZ1bmN0aW9uKHVy
bCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX2FkZE9wdGlvblRvRmlsZXNTZWxlY3QodXJsKTsKKyAg
ICAgICAgc291cmNlRmlsZS5fb3B0aW9uID0gdGhpcy5fYWRkT3B0aW9uVG9GaWxlc1NlbGVjdChz
b3VyY2VGaWxlKTsKIAogICAgICAgICB2YXIgbGFzdFZpZXdlZFVSTCA9IFdlYkluc3BlY3Rvci5z
ZXR0aW5ncy5sYXN0Vmlld2VkU2NyaXB0RmlsZTsKICAgICAgICAgaWYgKHRoaXMuX2ZpbGVzU2Vs
ZWN0RWxlbWVudC5sZW5ndGggPT09IDEpIHsKICAgICAgICAgICAgIC8vIE9wdGlvbiB3ZSBqdXN0
IGFkZGVkIGlzIHRoZSBvbmx5IG9wdGlvbiBpbiBmaWxlcyBzZWxlY3QuCiAgICAgICAgICAgICAv
LyBXZSBoYXZlIHRvIHNob3cgY29ycmVzcG9uZGluZyBzb3VyY2UgZnJhbWUgaW1tZWRpYXRlbHku
Ci0gICAgICAgICAgICB0aGlzLl9zaG93U291cmNlRnJhbWVBbmRBZGRUb0hpc3RvcnkodXJsKTsK
KyAgICAgICAgICAgIHRoaXMuX3Nob3dTb3VyY2VGcmFtZUFuZEFkZFRvSGlzdG9yeShzb3VyY2VG
aWxlKTsKICAgICAgICAgICAgIC8vIFJlc3RvcmUgb3JpZ2luYWwgdmFsdWUgb2YgbGFzdFZpZXdl
ZFNjcmlwdEZpbGUgYmVjYXVzZQogICAgICAgICAgICAgLy8gc291cmNlIGZyYW1lIHdhcyBzaG93
biBhcyBhIHJlc3VsdCBvZiBpbml0aWFsIGxvYWQuCiAgICAgICAgICAgICBXZWJJbnNwZWN0b3Iu
c2V0dGluZ3MubGFzdFZpZXdlZFNjcmlwdEZpbGUgPSBsYXN0Vmlld2VkVVJMOwotICAgICAgICB9
IGVsc2UgaWYgKHVybCA9PT0gbGFzdFZpZXdlZFVSTCkKLSAgICAgICAgICAgIHRoaXMuX3Nob3dT
b3VyY2VGcmFtZUFuZEFkZFRvSGlzdG9yeSh1cmwpOworICAgICAgICB9IGVsc2UgaWYgKHNvdXJj
ZUZpbGUudXJsID09PSBsYXN0Vmlld2VkVVJMKQorICAgICAgICAgICAgdGhpcy5fc2hvd1NvdXJj
ZUZyYW1lQW5kQWRkVG9IaXN0b3J5KHNvdXJjZUZpbGUpOwogICAgIH0sCiAKLSAgICBfYWRkT3B0
aW9uVG9GaWxlc1NlbGVjdDogZnVuY3Rpb24oc291cmNlTmFtZSkKKyAgICBfc291cmNlRmlsZUNo
YW5nZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgdmFyIHNvdXJjZUZpbGUgPSBl
dmVudC5kYXRhOworCisgICAgICAgIGlmICghc291cmNlRmlsZS5pc1RlbXBvcmFyeSAmJiAhc291
cmNlRmlsZS5fb3B0aW9uKSB7CisgICAgICAgICAgICAvLyBGaW5hbCB2ZXJzaW9uIG9mIHNvdXJj
ZSBmaWxlIGNvbnRlbnQgaXMgcmVhZHksIGFkZCBmaWxlIHNlbGVjdCBvcHRpb24uCisgICAgICAg
ICAgICBzb3VyY2VGaWxlLl9vcHRpb24gPSB0aGlzLl9hZGRPcHRpb25Ub0ZpbGVzU2VsZWN0KHNv
dXJjZUZpbGUpOworICAgICAgICB9CisKKyAgICAgICAgdmFyIG9sZFNvdXJjZUZyYW1lID0gc291
cmNlRmlsZS5fc291cmNlRnJhbWU7CisgICAgICAgIGlmICghb2xkU291cmNlRnJhbWUpCisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIG9sZFNvdXJjZUZyYW1lLnJlbW92ZUV2ZW50TGlzdGVu
ZXIoV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lLkV2ZW50cy5Mb2FkZWQsIHRoaXMuX3NvdXJjZUZy
YW1lTG9hZGVkLCB0aGlzKTsKKyAgICAgICAgZGVsZXRlIHNvdXJjZUZpbGUuX3NvdXJjZUZyYW1l
OworCisgICAgICAgIGlmICh0aGlzLnZpc2libGVWaWV3ICE9PSBvbGRTb3VyY2VGcmFtZSkKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICBzb3VyY2VGaWxlLl9zb3VyY2VGcmFtZSA9IHRo
aXMuX2NyZWF0ZVNvdXJjZUZyYW1lKHNvdXJjZUZpbGUpCisgICAgICAgIHNvdXJjZUZpbGUuX3Nv
dXJjZUZyYW1lLnNjcm9sbFRvcCA9IG9sZFNvdXJjZUZyYW1lLnNjcm9sbFRvcDsKKyAgICAgICAg
dGhpcy52aXNpYmxlVmlldyA9IHNvdXJjZUZpbGUuX3NvdXJjZUZyYW1lOworICAgIH0sCisKKyAg
ICBfYWRkT3B0aW9uVG9GaWxlc1NlbGVjdDogZnVuY3Rpb24oc291cmNlRmlsZSkKICAgICB7Ci0g
ICAgICAgIHZhciBzY3JpcHQgPSB0aGlzLl9zY3JpcHRGb3JTb3VyY2VOYW1lKHNvdXJjZU5hbWUp
OwogICAgICAgICB2YXIgc2VsZWN0ID0gdGhpcy5fZmlsZXNTZWxlY3RFbGVtZW50OwogICAgICAg
ICB2YXIgb3B0aW9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib3B0aW9uIik7Ci0gICAgICAg
IG9wdGlvbi50ZXh0ID0gc2NyaXB0LnNvdXJjZVVSTCA/IFdlYkluc3BlY3Rvci5kaXNwbGF5TmFt
ZUZvclVSTChzY3JpcHQuc291cmNlVVJMKSA6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiKHByb2dy
YW0pIik7Ci0gICAgICAgIGlmIChzY3JpcHQud29ybGRUeXBlID09PSBXZWJJbnNwZWN0b3IuU2Ny
aXB0LldvcmxkVHlwZS5FWFRFTlNJT05TX1dPUkxEKQorICAgICAgICBvcHRpb24udGV4dCA9IHNv
dXJjZUZpbGUudXJsID8gV2ViSW5zcGVjdG9yLmRpc3BsYXlOYW1lRm9yVVJMKHNvdXJjZUZpbGUu
dXJsKSA6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiKHByb2dyYW0pIik7CisgICAgICAgIGlmIChz
b3VyY2VGaWxlLmlzRXh0ZW5zaW9uU2NyaXB0KQogICAgICAgICAgICAgb3B0aW9uLmFkZFN0eWxl
Q2xhc3MoImV4dGVuc2lvbi1zY3JpcHQiKTsKICAgICAgICAgZnVuY3Rpb24gb3B0aW9uQ29tcGFy
ZShhLCBiKQogICAgICAgICB7CkBAIC0zNjIsMzEgKzMxNywzMyBAQCBXZWJJbnNwZWN0b3IuU2Ny
aXB0c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHNlbGVjdC5hcHBlbmRDaGlsZChv
cHRpb24pOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBzZWxlY3QuaW5zZXJ0QmVmb3JlKG9w
dGlvbiwgc2VsZWN0LmNoaWxkTm9kZXMuaXRlbShpbnNlcnRpb25JbmRleCkpOwotCi0gICAgICAg
IG9wdGlvbi5fc291cmNlTmFtZSA9IHNvdXJjZU5hbWU7Ci0gICAgICAgIHRoaXMuX3NvdXJjZU5h
bWVUb0ZpbGVzU2VsZWN0T3B0aW9uW3NvdXJjZU5hbWVdID0gb3B0aW9uOworICAgICAgICBvcHRp
b24uX3NvdXJjZUZpbGUgPSBzb3VyY2VGaWxlOworICAgICAgICByZXR1cm4gb3B0aW9uOwogICAg
IH0sCiAKICAgICBhZGRDb25zb2xlTWVzc2FnZTogZnVuY3Rpb24obWVzc2FnZSkKICAgICB7CiAg
ICAgICAgIHRoaXMuX21lc3NhZ2VzLnB1c2gobWVzc2FnZSk7Ci0gICAgICAgIHZhciBzb3VyY2VG
cmFtZSA9IHRoaXMuX3NvdXJjZU5hbWVUb1NvdXJjZUZyYW1lW21lc3NhZ2UudXJsXTsKLSAgICAg
ICAgaWYgKHNvdXJjZUZyYW1lKQotICAgICAgICAgICAgc291cmNlRnJhbWUuYWRkTWVzc2FnZSht
ZXNzYWdlKTsKKyAgICAgICAgdmFyIHNvdXJjZUZpbGUgPSB0aGlzLl9zb3VyY2VGaWxlc1ttZXNz
YWdlLnVybF07CisgICAgICAgIGlmIChzb3VyY2VGaWxlICYmIHNvdXJjZUZpbGUuX3NvdXJjZUZy
YW1lICYmIHNvdXJjZUZpbGUuX3NvdXJjZUZyYW1lLmxvYWRlZCkKKyAgICAgICAgICAgIHNvdXJj
ZUZpbGUuX3NvdXJjZUZyYW1lLmFkZE1lc3NhZ2UobWVzc2FnZSk7CiAgICAgfSwKIAogICAgIGNs
ZWFyQ29uc29sZU1lc3NhZ2VzOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICB0aGlzLl9tZXNz
YWdlcyA9IFtdOwotICAgICAgICBmb3IgKHZhciB1cmwgaW4gdGhpcy5fc291cmNlTmFtZVRvU291
cmNlRnJhbWUpCi0gICAgICAgICAgICB0aGlzLl9zb3VyY2VOYW1lVG9Tb3VyY2VGcmFtZVt1cmxd
LmNsZWFyTWVzc2FnZXMoKTsKKyAgICAgICAgZm9yICh2YXIgaWQgaW4gdGhpcy5fc291cmNlRmls
ZXMpIHsKKyAgICAgICAgICAgIHZhciBzb3VyY2VGaWxlID0gdGhpcy5fc291cmNlRmlsZXNbaWRd
OworICAgICAgICAgICAgaWYgKHNvdXJjZUZpbGUuX3NvdXJjZUZyYW1lICYmIHNvdXJjZUZpbGUu
X3NvdXJjZUZyYW1lLmxvYWRlZCkKKyAgICAgICAgICAgICAgICBzb3VyY2VGaWxlLl9zb3VyY2VG
cmFtZS5jbGVhck1lc3NhZ2VzKCk7CisgICAgICAgIH0KICAgICB9LAogCiAgICAgX2JyZWFrcG9p
bnRBZGRlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgYnJlYWtwb2ludCA9
IGV2ZW50LmRhdGE7CiAKLSAgICAgICAgdmFyIHNvdXJjZUZyYW1lID0gdGhpcy5fc291cmNlTmFt
ZVRvU291cmNlRnJhbWVbYnJlYWtwb2ludC5zb3VyY2VOYW1lXTsKKyAgICAgICAgdmFyIHNvdXJj
ZUZyYW1lID0gdGhpcy5fc291cmNlRmlsZXNbYnJlYWtwb2ludC5zb3VyY2VGaWxlSWRdLl9zb3Vy
Y2VGcmFtZTsKICAgICAgICAgaWYgKHNvdXJjZUZyYW1lICYmIHNvdXJjZUZyYW1lLmxvYWRlZCkK
ICAgICAgICAgICAgIHNvdXJjZUZyYW1lLmFkZEJyZWFrcG9pbnQoYnJlYWtwb2ludC5saW5lTnVt
YmVyLCBicmVha3BvaW50LnJlc29sdmVkLCBicmVha3BvaW50LmNvbmRpdGlvbiwgYnJlYWtwb2lu
dC5lbmFibGVkKTsKICAgICB9LApAQCAtMzk1LDcgKzM1Miw3IEBAIFdlYkluc3BlY3Rvci5TY3Jp
cHRzUGFuZWwucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSBl
dmVudC5kYXRhOwogCi0gICAgICAgIHZhciBzb3VyY2VGcmFtZSA9IHRoaXMuX3NvdXJjZU5hbWVU
b1NvdXJjZUZyYW1lW2JyZWFrcG9pbnQuc291cmNlTmFtZV07CisgICAgICAgIHZhciBzb3VyY2VG
cmFtZSA9IHRoaXMuX3NvdXJjZUZpbGVzW2JyZWFrcG9pbnQuc291cmNlRmlsZUlkXS5fc291cmNl
RnJhbWU7CiAgICAgICAgIGlmIChzb3VyY2VGcmFtZSAmJiBzb3VyY2VGcmFtZS5sb2FkZWQpCiAg
ICAgICAgICAgICBzb3VyY2VGcmFtZS5yZW1vdmVCcmVha3BvaW50KGJyZWFrcG9pbnQubGluZU51
bWJlcik7CiAgICAgfSwKQEAgLTQ4OCw4ICs0NDUsNyBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c1Bh
bmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fY3VycmVudEJhY2tGb3J3YXJkSW5kZXgg
PSAtMTsKICAgICAgICAgdGhpcy5fdXBkYXRlQmFja0FuZEZvcndhcmRCdXR0b25zKCk7CiAKLSAg
ICAgICAgdGhpcy5fc291cmNlTmFtZVRvU291cmNlRnJhbWUgPSB7fTsKLSAgICAgICAgdGhpcy5f
c291cmNlTmFtZVRvRmlsZXNTZWxlY3RPcHRpb24gPSB7fTsKKyAgICAgICAgdGhpcy5fc291cmNl
RmlsZXMgPSB7fTsKICAgICAgICAgdGhpcy5fbWVzc2FnZXMgPSBbXTsKICAgICAgICAgdGhpcy5f
ZmlsZXNTZWxlY3RFbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7CiAgICAgICAgIHRoaXMuZnVuY3Rp
b25zU2VsZWN0RWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOwpAQCAtNTIxLDE1ICs0NzcsMTUgQEAg
V2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICBjYW5TaG93U291
cmNlTGluZTogZnVuY3Rpb24odXJsLCBsaW5lKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMu
X2RlYnVnZ2VyRW5hYmxlZCAmJiAodXJsIGluIHRoaXMuX3NvdXJjZU5hbWVUb0ZpbGVzU2VsZWN0
T3B0aW9uKTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2RlYnVnZ2VyRW5hYmxlZCAmJiAodXJsIGlu
IHRoaXMuX3NvdXJjZUZpbGVzKTsKICAgICB9LAogCiAgICAgc2hvd1NvdXJjZUxpbmU6IGZ1bmN0
aW9uKHVybCwgbGluZSkKICAgICB7Ci0gICAgICAgIGlmICghKHVybCBpbiB0aGlzLl9zb3VyY2VO
YW1lVG9GaWxlc1NlbGVjdE9wdGlvbikpCisgICAgICAgIGlmICghKHVybCBpbiB0aGlzLl9zb3Vy
Y2VGaWxlcykpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHZhciBzb3VyY2VGcmFtZSA9
IHRoaXMuX3Nob3dTb3VyY2VGcmFtZUFuZEFkZFRvSGlzdG9yeSh1cmwpOwotICAgICAgICBzb3Vy
Y2VGcmFtZS5oaWdobGlnaHRMaW5lKGxpbmUpOworICAgICAgICB0aGlzLl9zaG93U291cmNlRnJh
bWVBbmRBZGRUb0hpc3RvcnkodGhpcy5fc291cmNlRmlsZXNbdXJsXSk7CisgICAgICAgIHRoaXMu
dmlzaWJsZVZpZXcuaGlnaGxpZ2h0TGluZShsaW5lKTsKICAgICB9LAogCiAgICAgaGFuZGxlU2hv
cnRjdXQ6IGZ1bmN0aW9uKGV2ZW50KQpAQCAtNTQzLDkgKzQ5OSw5IEBAIFdlYkluc3BlY3Rvci5T
Y3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5zaWRlYmFyUGFuZXMu
Y2FsbHN0YWNrLmhhbmRsZVNob3J0Y3V0KGV2ZW50KTsKICAgICB9LAogCi0gICAgX3Nob3dTb3Vy
Y2VGcmFtZUFuZEFkZFRvSGlzdG9yeTogZnVuY3Rpb24oc291cmNlTmFtZSkKKyAgICBfc2hvd1Nv
dXJjZUZyYW1lQW5kQWRkVG9IaXN0b3J5OiBmdW5jdGlvbihzb3VyY2VGaWxlKQogICAgIHsKLSAg
ICAgICAgdmFyIHNvdXJjZUZyYW1lID0gdGhpcy5fc2hvd1NvdXJjZUZyYW1lKHNvdXJjZU5hbWUp
OworICAgICAgICB0aGlzLl9zaG93U291cmNlRnJhbWUoc291cmNlRmlsZSk7CiAKICAgICAgICAg
dmFyIG9sZEluZGV4ID0gdGhpcy5fY3VycmVudEJhY2tGb3J3YXJkSW5kZXg7CiAgICAgICAgIGlm
IChvbGRJbmRleCA+PSAwKQpAQCAtNTUzLDg0ICs1MDksNTYgQEAgV2ViSW5zcGVjdG9yLlNjcmlw
dHNQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgLy8gQ2hlY2sgZm9yIGEgcHJldmlvdXMg
ZW50cnkgb2YgdGhlIHNhbWUgb2JqZWN0IGluIF9iYWNrRm9yd2FyZExpc3QuCiAgICAgICAgIC8v
IElmIG9uZSBpcyBmb3VuZCwgcmVtb3ZlIGl0LgotICAgICAgICB2YXIgcHJldmlvdXNFbnRyeUlu
ZGV4ID0gdGhpcy5fYmFja0ZvcndhcmRMaXN0LmluZGV4T2Yoc291cmNlTmFtZSk7CisgICAgICAg
IHZhciBwcmV2aW91c0VudHJ5SW5kZXggPSB0aGlzLl9iYWNrRm9yd2FyZExpc3QuaW5kZXhPZihz
b3VyY2VGaWxlKTsKICAgICAgICAgaWYgKHByZXZpb3VzRW50cnlJbmRleCAhPT0gLTEpCiAgICAg
ICAgICAgICB0aGlzLl9iYWNrRm9yd2FyZExpc3Quc3BsaWNlKHByZXZpb3VzRW50cnlJbmRleCwg
MSk7CiAKLSAgICAgICAgdGhpcy5fYmFja0ZvcndhcmRMaXN0LnB1c2goc291cmNlTmFtZSk7Cisg
ICAgICAgIHRoaXMuX2JhY2tGb3J3YXJkTGlzdC5wdXNoKHNvdXJjZUZpbGUpOwogICAgICAgICB0
aGlzLl9jdXJyZW50QmFja0ZvcndhcmRJbmRleCA9IHRoaXMuX2JhY2tGb3J3YXJkTGlzdC5sZW5n
dGggLSAxOwogCiAgICAgICAgIHRoaXMuX3VwZGF0ZUJhY2tBbmRGb3J3YXJkQnV0dG9ucygpOwot
Ci0gICAgICAgIHJldHVybiBzb3VyY2VGcmFtZTsKICAgICB9LAogCi0gICAgX3Nob3dTb3VyY2VG
cmFtZTogZnVuY3Rpb24oc291cmNlTmFtZSkKKyAgICBfc2hvd1NvdXJjZUZyYW1lOiBmdW5jdGlv
bihzb3VyY2VGaWxlKQogICAgIHsKLSAgICAgICAgdmFyIGluZGV4ID0gdGhpcy5fc291cmNlTmFt
ZVRvRmlsZXNTZWxlY3RPcHRpb25bc291cmNlTmFtZV0uaW5kZXg7Ci0gICAgICAgIHRoaXMuX2Zp
bGVzU2VsZWN0RWxlbWVudC5zZWxlY3RlZEluZGV4ID0gaW5kZXg7CisgICAgICAgIC8vIENoZWNr
IGlmIHdlIG5lZWQgdG8gY3JlYXRlIGFuIG9wdGlvbiBpbiBmaWxlcyBzZWxlY3QgYmVmb3JlIHNo
b3dpbmcgdGhpcyBzb3VyY2UgZmlsZS4KKyAgICAgICAgaWYgKCFzb3VyY2VGaWxlLl9vcHRpb24p
CisgICAgICAgICAgICBzb3VyY2VGaWxlLl9vcHRpb24gPSB0aGlzLl9hZGRPcHRpb25Ub0ZpbGVz
U2VsZWN0KHNvdXJjZUZpbGUpOwogCi0gICAgICAgIHZhciBzb3VyY2VGcmFtZSA9IHRoaXMuX3Nv
dXJjZUZyYW1lRm9yU291cmNlTmFtZShzb3VyY2VOYW1lKTsKLSAgICAgICAgdGhpcy52aXNpYmxl
VmlldyA9IHNvdXJjZUZyYW1lOworICAgICAgICAvLyBVcGRhdGUgZmlsZXMgc2VsZWN0LgorICAg
ICAgICB0aGlzLl9maWxlc1NlbGVjdEVsZW1lbnQuc2VsZWN0ZWRJbmRleCA9IHNvdXJjZUZpbGUu
X29wdGlvbi5pbmRleDsKIAotICAgICAgICB2YXIgc2NyaXB0ID0gdGhpcy5fc2NyaXB0Rm9yU291
cmNlTmFtZShzb3VyY2VOYW1lKTsKLSAgICAgICAgaWYgKHNjcmlwdC5zb3VyY2VVUkwpCi0gICAg
ICAgICAgICBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MubGFzdFZpZXdlZFNjcmlwdEZpbGUgPSBzY3Jp
cHQuc291cmNlVVJMOworICAgICAgICAvLyBVcGRhdGUgdmlzaWJsZSB2aWV3LgorICAgICAgICBp
ZiAoIXNvdXJjZUZpbGUuX3NvdXJjZUZyYW1lKQorICAgICAgICAgICAgc291cmNlRmlsZS5fc291
cmNlRnJhbWUgPSB0aGlzLl9jcmVhdGVTb3VyY2VGcmFtZShzb3VyY2VGaWxlKTsKKyAgICAgICAg
dGhpcy52aXNpYmxlVmlldyA9IHNvdXJjZUZpbGUuX3NvdXJjZUZyYW1lOwogCi0gICAgICAgIHJl
dHVybiBzb3VyY2VGcmFtZTsKKyAgICAgICAgLy8gVXBkYXRlIGxhc3Qgdmlld2VkIGZpbGUgdXJs
LgorICAgICAgICBpZiAoc291cmNlRmlsZS51cmwpCisgICAgICAgICAgICBXZWJJbnNwZWN0b3Iu
c2V0dGluZ3MubGFzdFZpZXdlZFNjcmlwdEZpbGUgPSBzb3VyY2VGaWxlLnVybDsKICAgICB9LAog
Ci0gICAgX3NvdXJjZUZyYW1lRm9yU291cmNlTmFtZTogZnVuY3Rpb24oc291cmNlTmFtZSkKKyAg
ICBfY3JlYXRlU291cmNlRnJhbWU6IGZ1bmN0aW9uKHNvdXJjZUZpbGUpCiAgICAgewotICAgICAg
ICB2YXIgc291cmNlRnJhbWUgPSB0aGlzLl9zb3VyY2VOYW1lVG9Tb3VyY2VGcmFtZVtzb3VyY2VO
YW1lXTsKLSAgICAgICAgaWYgKHNvdXJjZUZyYW1lKQotICAgICAgICAgICAgcmV0dXJuIHNvdXJj
ZUZyYW1lOwotCi0gICAgICAgIHZhciBzY3JpcHQgPSB0aGlzLl9zY3JpcHRGb3JTb3VyY2VOYW1l
KHNvdXJjZU5hbWUpOwotICAgICAgICB2YXIgY29udGVudFByb3ZpZGVyOwotICAgICAgICB2YXIg
aXNTY3JpcHQ7Ci0gICAgICAgIGlmIChzY3JpcHQucmVzb3VyY2UpIHsKLSAgICAgICAgICAgIGNv
bnRlbnRQcm92aWRlciA9IG5ldyBXZWJJbnNwZWN0b3IuU291cmNlRnJhbWVDb250ZW50UHJvdmlk
ZXJGb3JSZXNvdXJjZShzY3JpcHQucmVzb3VyY2UpOwotICAgICAgICAgICAgaXNTY3JpcHQgPSBz
Y3JpcHQucmVzb3VyY2UudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuU2NyaXB0
OwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgY29udGVudFByb3ZpZGVyID0gbmV3IFdl
Ykluc3BlY3Rvci5Tb3VyY2VGcmFtZUNvbnRlbnRQcm92aWRlckZvclNjcmlwdChzY3JpcHQpOwot
ICAgICAgICAgICAgaXNTY3JpcHQgPSAhc2NyaXB0LmxpbmVPZmZzZXQgJiYgIXNjcmlwdC5jb2x1
bW5PZmZzZXQ7Ci0gICAgICAgIH0KLSAgICAgICAgc291cmNlRnJhbWUgPSBuZXcgV2ViSW5zcGVj
dG9yLlNvdXJjZUZyYW1lKGNvbnRlbnRQcm92aWRlciwgc2NyaXB0LnNvdXJjZVVSTCwgaXNTY3Jp
cHQpOwotICAgICAgICBzb3VyY2VGcmFtZS5fc291cmNlTmFtZSA9IHNvdXJjZU5hbWU7CisgICAg
ICAgIC8vIEZJWE1FOiB3ZSBzaG91bGQgcGFzcyBkZWxlZ2F0ZSBoZXJlIChzb3VyY2VGaWxlIGlz
bid0IGEgZGVsZWdhdGUpLgorICAgICAgICB2YXIgc291cmNlRnJhbWUgPSBuZXcgV2ViSW5zcGVj
dG9yLlNvdXJjZUZyYW1lKHNvdXJjZUZpbGUsIHNvdXJjZUZpbGUudXJsKTsKKyAgICAgICAgc291
cmNlRnJhbWUuX3NvdXJjZUZpbGUgPSBzb3VyY2VGaWxlOwogICAgICAgICBzb3VyY2VGcmFtZS5h
ZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5FdmVudHMuTG9hZGVkLCB0
aGlzLl9zb3VyY2VGcmFtZUxvYWRlZCwgdGhpcyk7Ci0gICAgICAgIHRoaXMuX3NvdXJjZU5hbWVU
b1NvdXJjZUZyYW1lW3NvdXJjZU5hbWVdID0gc291cmNlRnJhbWU7CiAgICAgICAgIHJldHVybiBz
b3VyY2VGcmFtZTsKICAgICB9LAogCi0gICAgX3JlY3JlYXRlU291cmNlRnJhbWU6IGZ1bmN0aW9u
KHNvdXJjZU5hbWUpCi0gICAgewotICAgICAgICB2YXIgb2xkU291cmNlRnJhbWUgPSB0aGlzLl9z
b3VyY2VOYW1lVG9Tb3VyY2VGcmFtZVtzb3VyY2VOYW1lXTsKLSAgICAgICAgaWYgKCFvbGRTb3Vy
Y2VGcmFtZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgb2xkU291cmNlRnJhbWUucmVt
b3ZlRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUuRXZlbnRzLkxvYWRlZCwg
dGhpcy5fc291cmNlRnJhbWVMb2FkZWQsIHRoaXMpOwotICAgICAgICBkZWxldGUgdGhpcy5fc291
cmNlTmFtZVRvU291cmNlRnJhbWVbc291cmNlTmFtZV07Ci0gICAgICAgIG9sZFNvdXJjZUZyYW1l
LnJlbW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lLkV2ZW50cy5Mb2Fk
ZWQsIHRoaXMuX3NvdXJjZUZyYW1lTG9hZGVkLCB0aGlzKTsKLSAgICAgICAgaWYgKHRoaXMudmlz
aWJsZVZpZXcgIT09IG9sZFNvdXJjZUZyYW1lKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAg
ICAgIHZhciBuZXdTb3VyY2VGcmFtZSA9IHRoaXMuX3NvdXJjZUZyYW1lRm9yU291cmNlTmFtZShz
b3VyY2VOYW1lKQotICAgICAgICBuZXdTb3VyY2VGcmFtZS5zY3JvbGxUb3AgPSBvbGRTb3VyY2VG
cmFtZS5zY3JvbGxUb3A7Ci0gICAgICAgIHRoaXMudmlzaWJsZVZpZXcgPSBuZXdTb3VyY2VGcmFt
ZTsKLSAgICB9LAotCiAgICAgX3NvdXJjZUZyYW1lTG9hZGVkOiBmdW5jdGlvbihldmVudCkKICAg
ICB7CiAgICAgICAgIHZhciBzb3VyY2VGcmFtZSA9IGV2ZW50LnRhcmdldDsKLSAgICAgICAgdmFy
IHNvdXJjZU5hbWUgPSBzb3VyY2VGcmFtZS5fc291cmNlTmFtZTsKKyAgICAgICAgdmFyIHNvdXJj
ZUZpbGVJZCA9IHNvdXJjZUZyYW1lLl9zb3VyY2VGaWxlLmlkOwogCiAgICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgdGhpcy5fbWVzc2FnZXMubGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgIHZh
ciBtZXNzYWdlID0gdGhpcy5fbWVzc2FnZXNbaV07Ci0gICAgICAgICAgICBpZiAobWVzc2FnZS51
cmwgPT09IHNvdXJjZU5hbWUpCisgICAgICAgICAgICBpZiAobWVzc2FnZS51cmwgPT09IHNvdXJj
ZUZpbGVJZCkKICAgICAgICAgICAgICAgICBzb3VyY2VGcmFtZS5hZGRNZXNzYWdlKG1lc3NhZ2Up
OwogICAgICAgICB9CiAKLSAgICAgICAgdmFyIGJyZWFrcG9pbnRzID0gdGhpcy5fcHJlc2VudGF0
aW9uTW9kZWwuYnJlYWtwb2ludHNGb3JTb3VyY2VOYW1lKHNvdXJjZU5hbWUpOworICAgICAgICB2
YXIgYnJlYWtwb2ludHMgPSB0aGlzLl9wcmVzZW50YXRpb25Nb2RlbC5icmVha3BvaW50c0ZvclNv
dXJjZUZpbGVJZChzb3VyY2VGaWxlSWQpOwogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJy
ZWFrcG9pbnRzLmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICB2YXIgYnJlYWtwb2ludCA9IGJy
ZWFrcG9pbnRzW2ldOwogICAgICAgICAgICAgc291cmNlRnJhbWUuYWRkQnJlYWtwb2ludChicmVh
a3BvaW50LmxpbmVOdW1iZXIsIGJyZWFrcG9pbnQucmVzb2x2ZWQsIGJyZWFrcG9pbnQuY29uZGl0
aW9uLCBicmVha3BvaW50LmVuYWJsZWQpOwpAQCAtNjM5LDI3ICs1NjcsMTkgQEAgV2ViSW5zcGVj
dG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBzZWxlY3RlZENhbGxG
cmFtZSA9IHRoaXMuc2lkZWJhclBhbmVzLmNhbGxzdGFjay5zZWxlY3RlZENhbGxGcmFtZTsKICAg
ICAgICAgaWYgKHNlbGVjdGVkQ2FsbEZyYW1lKSB7CiAgICAgICAgICAgICB2YXIgc2NyaXB0ID0g
V2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuc2NyaXB0Rm9yU291cmNlSUQoc2VsZWN0ZWRDYWxs
RnJhbWUuc291cmNlSUQpOwotICAgICAgICAgICAgaWYgKHRoaXMuX3NvdXJjZU5hbWVGb3JTY3Jp
cHQoc2NyaXB0KSA9PT0gc291cmNlTmFtZSkgeworICAgICAgICAgICAgLy8gRklYTUU6IGNhbGwg
ZnJhbWVzIHNob3VsZCBoYXZlIHNvdXJjZUZpbGVJZCBmaWVsZCBkaXJlY3RseSB1c2FibGUgYnkg
c2NyaXB0cyBwYW5lbC4KKyAgICAgICAgICAgIGlmICh0aGlzLl9zb3VyY2VGaWxlSWRGb3JTY3Jp
cHQoc2NyaXB0KSA9PT0gc291cmNlRmlsZUlkKSB7CiAgICAgICAgICAgICAgICAgc291cmNlRnJh
bWUuc2V0RXhlY3V0aW9uTGluZShzZWxlY3RlZENhbGxGcmFtZS5saW5lKTsKICAgICAgICAgICAg
ICAgICB0aGlzLl9leGVjdXRpb25Tb3VyY2VGcmFtZSA9IHNvdXJjZUZyYW1lOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAgICAgfSwKIAotICAgIF9zb3VyY2VOYW1lRm9yU2NyaXB0OiBmdW5j
dGlvbihzY3JpcHQpCisgICAgX3NvdXJjZUZpbGVJZEZvclNjcmlwdDogZnVuY3Rpb24oc2NyaXB0
KQogICAgIHsKICAgICAgICAgcmV0dXJuIHNjcmlwdC5zb3VyY2VVUkwgfHwgc2NyaXB0LnNvdXJj
ZUlEOwogICAgIH0sCiAKLSAgICBfc2NyaXB0Rm9yU291cmNlTmFtZTogZnVuY3Rpb24oc291cmNl
TmFtZSkKLSAgICB7Ci0gICAgICAgIGZ1bmN0aW9uIGZpbHRlcihzY3JpcHQpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiAoc2NyaXB0LnNvdXJjZVVSTCB8fCBzY3JpcHQuc291cmNlSUQp
ID09PSBzb3VyY2VOYW1lOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3Iu
ZGVidWdnZXJNb2RlbC5xdWVyeVNjcmlwdHMoZmlsdGVyKVswXTsKLSAgICB9LAotCiAgICAgX2Ns
ZWFyQ3VycmVudEV4ZWN1dGlvbkxpbmU6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIGlmICh0
aGlzLl9leGVjdXRpb25Tb3VyY2VGcmFtZSkKQEAgLTY3OSwyNSArNTk5LDE5IEBAIFdlYkluc3Bl
Y3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLnNpZGViYXJQYW5l
cy5zY29wZWNoYWluLnVwZGF0ZShjdXJyZW50RnJhbWUpOwogICAgICAgICB0aGlzLnNpZGViYXJQ
YW5lcy53YXRjaEV4cHJlc3Npb25zLnJlZnJlc2hFeHByZXNzaW9ucygpOwogCisgICAgICAgIC8v
IEZJWE1FOiBjYWxsIGZyYW1lcyBzaG91bGQgaGF2ZSBzb3VyY2VGaWxlSWQgZmllbGQgZGlyZWN0
bHkgdXNhYmxlIGJ5IHNjcmlwdHMgcGFuZWwuCiAgICAgICAgIHZhciBzY3JpcHQgPSBXZWJJbnNw
ZWN0b3IuZGVidWdnZXJNb2RlbC5zY3JpcHRGb3JTb3VyY2VJRChjdXJyZW50RnJhbWUuc291cmNl
SUQpOwotICAgICAgICB2YXIgc291cmNlTmFtZSA9IHRoaXMuX3NvdXJjZU5hbWVGb3JTY3JpcHQo
c2NyaXB0KTsKLSAgICAgICAgaWYgKCEoc291cmNlTmFtZSBpbiB0aGlzLl9zb3VyY2VOYW1lVG9G
aWxlc1NlbGVjdE9wdGlvbikpIHsKLSAgICAgICAgICAgIC8vIFRoaXMgaGFwcGVucyBpbiB0d28g
Y2FzZXM6Ci0gICAgICAgICAgICAvLyAxKSBDdXJyZW50IGNhbGwgZnJhbWUgZnVuY3Rpb24gaXMg
ZGVmaW5lZCBpbiBhbm9ueW1vdXMgc2NyaXB0IChhbm9ueW1vdXMgc2NyaXB0cyBhcmVuJ3QgYWRk
ZWQgdG8gZmlsZXMgc2VsZWN0IGJ5IGRlZmF1bHQpCi0gICAgICAgICAgICAvLyAyKSBXZSBhcmUg
ZGVidWdnaW5nIHN5bmNocm9ub3VzbHkgZXhlY3V0ZWQgaW5saW5lZCBzY3JpcHQgYW5kIHRoZXJl
IGlzIG5vIHJlc291cmNlIHNvIGZhcgotICAgICAgICAgICAgdGhpcy5fYWRkT3B0aW9uVG9GaWxl
c1NlbGVjdChzb3VyY2VOYW1lKTsKLSAgICAgICAgfQotICAgICAgICB2YXIgc291cmNlRnJhbWUg
PSB0aGlzLl9zaG93U291cmNlRnJhbWVBbmRBZGRUb0hpc3Rvcnkoc291cmNlTmFtZSk7Ci0gICAg
ICAgIGlmIChzb3VyY2VGcmFtZS5sb2FkZWQpIHsKLSAgICAgICAgICAgIHNvdXJjZUZyYW1lLnNl
dEV4ZWN1dGlvbkxpbmUoY3VycmVudEZyYW1lLmxpbmUpOwotICAgICAgICAgICAgdGhpcy5fZXhl
Y3V0aW9uU291cmNlRnJhbWUgPSBzb3VyY2VGcmFtZTsKKyAgICAgICAgdGhpcy5fc2hvd1NvdXJj
ZUZyYW1lQW5kQWRkVG9IaXN0b3J5KHRoaXMuX3NvdXJjZUZpbGVzW3RoaXMuX3NvdXJjZUZpbGVJ
ZEZvclNjcmlwdChzY3JpcHQpXSk7CisgICAgICAgIGlmICh0aGlzLnZpc2libGVWaWV3LmxvYWRl
ZCkgeworICAgICAgICAgICAgdGhpcy52aXNpYmxlVmlldy5zZXRFeGVjdXRpb25MaW5lKGN1cnJl
bnRGcmFtZS5saW5lKTsKKyAgICAgICAgICAgIHRoaXMuX2V4ZWN1dGlvblNvdXJjZUZyYW1lID0g
dGhpcy52aXNpYmxlVmlldzsKICAgICAgICAgfQogICAgIH0sCiAKICAgICBfZmlsZXNTZWxlY3RD
aGFuZ2VkOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB2YXIgc291cmNlTmFtZSA9IHRoaXMu
X2ZpbGVzU2VsZWN0RWxlbWVudFt0aGlzLl9maWxlc1NlbGVjdEVsZW1lbnQuc2VsZWN0ZWRJbmRl
eF0uX3NvdXJjZU5hbWU7Ci0gICAgICAgIHRoaXMuX3Nob3dTb3VyY2VGcmFtZUFuZEFkZFRvSGlz
dG9yeShzb3VyY2VOYW1lKTsKKyAgICAgICAgdmFyIHNvdXJjZUZpbGUgPSB0aGlzLl9maWxlc1Nl
bGVjdEVsZW1lbnRbdGhpcy5fZmlsZXNTZWxlY3RFbGVtZW50LnNlbGVjdGVkSW5kZXhdLl9zb3Vy
Y2VGaWxlOworICAgICAgICB0aGlzLl9zaG93U291cmNlRnJhbWVBbmRBZGRUb0hpc3Rvcnkoc291
cmNlRmlsZSk7CiAgICAgfSwKIAogICAgIF9zdGFydFNpZGViYXJSZXNpemVEcmFnOiBmdW5jdGlv
bihldmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
U291cmNlRnJhbWUuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJj
ZUZyYW1lLmpzCmluZGV4IDgwNTE4YjMuLmRkZWMyZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU291cmNlRnJhbWUuanMKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VGcmFtZS5qcwpAQCAtMjgsNyArMjgsNyBAQAog
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuU291cmNlRnJhbWUgPSBmdW5jdGlv
bihjb250ZW50UHJvdmlkZXIsIHVybCwgaXNTY3JpcHQpCitXZWJJbnNwZWN0b3IuU291cmNlRnJh
bWUgPSBmdW5jdGlvbihjb250ZW50UHJvdmlkZXIsIHVybCkKIHsKICAgICBXZWJJbnNwZWN0b3Iu
Vmlldy5jYWxsKHRoaXMpOwogCkBAIC0zNiw3ICszNiw2IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VG
cmFtZSA9IGZ1bmN0aW9uKGNvbnRlbnRQcm92aWRlciwgdXJsLCBpc1NjcmlwdCkKIAogICAgIHRo
aXMuX2NvbnRlbnRQcm92aWRlciA9IGNvbnRlbnRQcm92aWRlcjsKICAgICB0aGlzLl91cmwgPSB1
cmw7Ci0gICAgdGhpcy5faXNTY3JpcHQgPSBpc1NjcmlwdDsKIAogICAgIHRoaXMuX3RleHRNb2Rl
bCA9IG5ldyBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1vZGVsKCk7CiAgICAgdGhpcy5fdGV4dE1v
ZGVsLnJlcGxhY2VUYWJzV2l0aFNwYWNlcyA9IHRydWU7CkBAIC04MDQsNyArODAzLDcgQEAgV2Vi
SW5zcGVjdG9yLlNvdXJjZUZyYW1lLnByb3RvdHlwZSA9IHsKIAogICAgIF9kb3VibGVDbGljazog
ZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICBpZiAoIVByZWZlcmVuY2VzLmNhbkVkaXRT
Y3JpcHRTb3VyY2UgfHwgIXRoaXMuX2lzU2NyaXB0KQorICAgICAgICBpZiAoIVByZWZlcmVuY2Vz
LmNhbkVkaXRTY3JpcHRTb3VyY2UpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgdmFy
IGxpbmVSb3cgPSBldmVudC50YXJnZXQuZW5jbG9zaW5nTm9kZU9yU2VsZldpdGhDbGFzcygid2Vi
a2l0LWxpbmUtY29udGVudCIpOwpAQCAtODE1LDYgKzgxNCw5IEBAIFdlYkluc3BlY3Rvci5Tb3Vy
Y2VGcmFtZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBsb2NhdGlvbiA9IHRoaXMuX2NvbnRl
bnQuc291cmNlRnJhbWVMaW5lTnVtYmVyVG9BY3R1YWxMb2NhdGlvbihsaW5lTnVtYmVyKTsKICAg
ICAgICAgaWYgKCFsb2NhdGlvbi5zb3VyY2VJRCkKICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgdmFyIHNjcmlwdCA9IFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLnNjcmlwdEZvclNvdXJj
ZUlEKGxvY2F0aW9uLnNvdXJjZUlEKTsKKyAgICAgICAgaWYgKHNjcmlwdC5saW5lT2Zmc2V0IHx8
IHNjcmlwdC5jb2x1bW5PZmZzZXQpCisgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgZnVu
Y3Rpb24gZGlkRWRpdExpbmUobmV3Q29udGVudCkKICAgICAgICAgewo=
</data>
<flag name="review"
          id="75736"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85467</attachid>
            <date>2011-03-11 06:18:33 -0800</date>
            <delta_ts>2011-03-14 09:01:25 -0700</delta_ts>
            <desc>Patch.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>27211</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlNTc2NGUyLi5kZjc2MWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDQg
QEAKKzIwMTEtMDMtMTEgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogZXh0cmFjdCBjb250ZW50IGxvYWRpbmcgbG9naWMgZnJvbSBzY3JpcHRzIHBhbmVs
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTUyMzcK
KworICAgICAgICBFbmNhcHN1bGF0ZSBzb3VyY2UgZnJhbWUgY29udGVudCBsb2FkaW5nIGxvZ2lj
IGluIGRlYnVnZ2VyIHByZXNlbnRhdGlvbiBtb2RlbAorICAgICAgICB0byBzdXBwb3J0IHNvdXJj
ZSBtYXBwaW5ncyBpbiBhIHBsdWdnYWJsZSB3YXkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJv
bnQtZW5kL0RlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVi
dWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUuc291cmNlRmlsZSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUuX3BhcnNlZFNj
cmlwdFNvdXJjZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25N
b2RlbC5wcm90b3R5cGUuX2ZhaWxlZFRvUGFyc2VTY3JpcHRTb3VyY2UpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlLl9zY3JpcHRTb3Vy
Y2VDaGFuZ2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1v
ZGVsLnByb3RvdHlwZS5fY3JlYXRlU291cmNlRmlsZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUuX3Jlc291cmNlRm9yVVJMKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZS5f
cmVzb3VyY2VMb2FkaW5nRmluaXNoZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2Vy
UHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlLmJyZWFrcG9pbnRzRm9yU291cmNlRmlsZUlkKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlw
ZS5maW5kQnJlYWtwb2ludCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50
YXRpb25Nb2RlbC5wcm90b3R5cGUuX2JyZWFrcG9pbnRBZGRlZCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUuX2JyZWFrcG9pbnRSZW1v
dmVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnBy
b3RvdHlwZS5fYnJlYWtwb2ludFJlc29sdmVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1
Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZS5zZXQgc2VsZWN0ZWRDYWxsRnJhbWUpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBl
LmdldCBzZWxlY3RlZENhbGxGcmFtZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJQ
cmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUuX2FjdHVhbExvY2F0aW9uVG9Tb3VyY2VMb2NhdGlv
bik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90
b3R5cGUuX3NvdXJjZUxvY2F0aW9uVG9BY3R1YWxMb2NhdGlvbik6CisgICAgICAgICogaW5zcGVj
dG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2Ny
aXB0c1BhbmVsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBl
Ll9zY3JpcHRTb3VyY2VDaGFuZ2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFu
ZWwucHJvdG90eXBlLl9zb3VyY2VGaWxlQWRkZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNj
cmlwdHNQYW5lbC5wcm90b3R5cGUuX2FkZE9wdGlvblRvRmlsZXNTZWxlY3QpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUuX3Nob3dTb3VyY2VGcmFtZSk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZS5fY3JlYXRlU291cmNl
RnJhbWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUuX3Nv
dXJjZUZpbGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJv
dG90eXBlLl9zb3VyY2VGcmFtZUxvYWRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0
c1BhbmVsLnByb3RvdHlwZS5fY2FsbEZyYW1lU2VsZWN0ZWQpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlNvdXJjZUZyYW1lRGVsZWdhdGVGb3JTY3JpcHRzUGFuZWwpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlNvdXJjZUZyYW1lRGVsZWdhdGVGb3JTY3JpcHRzUGFuZWwucHJvdG90eXBlLnJlcXVl
c3RDb250ZW50KToKKwogMjAxMS0wMy0xMCAgUGF2ZWwgUG9kaXZpbG92ICA8cG9kaXZpbG92QGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJQcmVzZW50
YXRpb25Nb2RlbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdn
ZXJQcmVzZW50YXRpb25Nb2RlbC5qcwppbmRleCBmZDA4YTk5Li4zMDU1MmE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyUHJlc2VudGF0aW9u
TW9kZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dl
clByZXNlbnRhdGlvbk1vZGVsLmpzCkBAIC0zNSwxMCArMzUsMTMgQEAgV2ViSW5zcGVjdG9yLkRl
YnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwgPSBmdW5jdGlvbigpCiAgICAgV2ViSW5zcGVjdG9yLmRl
YnVnZ2VyTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5F
dmVudHMuRGVidWdnZXJXYXNFbmFibGVkLCB0aGlzLl9kZWJ1Z2dlcldhc0VuYWJsZWQsIHRoaXMp
OwogICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5z
cGVjdG9yLkRlYnVnZ2VyTW9kZWwuRXZlbnRzLlBhcnNlZFNjcmlwdFNvdXJjZSwgdGhpcy5fcGFy
c2VkU2NyaXB0U291cmNlLCB0aGlzKTsKICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5h
ZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkV2ZW50cy5GYWlsZWRU
b1BhcnNlU2NyaXB0U291cmNlLCB0aGlzLl9mYWlsZWRUb1BhcnNlU2NyaXB0U291cmNlLCB0aGlz
KTsKKyAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYklu
c3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkV2ZW50cy5TY3JpcHRTb3VyY2VDaGFuZ2VkLCB0aGlzLl9z
Y3JpcHRTb3VyY2VDaGFuZ2VkLCB0aGlzKTsKICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2Rl
bC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkV2ZW50cy5CcmVh
a3BvaW50UmVzb2x2ZWQsIHRoaXMuX2JyZWFrcG9pbnRSZXNvbHZlZCwgdGhpcyk7CiB9CiAKIFdl
Ykluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLkV2ZW50cyA9IHsKKyAgICBTb3Vy
Y2VGaWxlQWRkZWQ6ICJzb3VyY2UtZmlsZS1hZGRlZCIsCisgICAgU291cmNlRmlsZUNoYW5nZWQ6
ICJzb3VyY2UtZmlsZS1jaGFuZ2VkIiwKICAgICBCcmVha3BvaW50QWRkZWQ6ICJicmVha3BvaW50
LWFkZGVkIiwKICAgICBCcmVha3BvaW50UmVtb3ZlZDogImJyZWFrcG9pbnQtcmVtb3ZlZCIKIH0K
QEAgLTUyLDE2ICs1NSwzNiBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2Rl
bC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KICAgICB9LAogCisgICAgc291cmNlRmlsZTogZnVu
Y3Rpb24oc291cmNlRmlsZUlkKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3NvdXJjZUZp
bGVzW3NvdXJjZUZpbGVJZF07CisgICAgfSwKKwogICAgIF9wYXJzZWRTY3JpcHRTb3VyY2U6IGZ1
bmN0aW9uKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIHNjcmlwdCA9IGV2ZW50LmRhdGE7Ci0g
ICAgICAgIHZhciBicmVha3BvaW50cyA9IFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLmJyZWFr
cG9pbnRzOwotICAgICAgICBmb3IgKHZhciBpZCBpbiBicmVha3BvaW50cykgewotICAgICAgICAg
ICAgaWYgKGlkIGluIHRoaXMuX2JyZWFrcG9pbnRzKQotICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSBicmVha3BvaW50c1tpZF07Ci0gICAgICAg
ICAgICBpZiAoYnJlYWtwb2ludC51cmwgJiYgYnJlYWtwb2ludC51cmwgPT09IHNjcmlwdC5zb3Vy
Y2VVUkwpCi0gICAgICAgICAgICAgICAgdGhpcy5fYnJlYWtwb2ludEFkZGVkKGJyZWFrcG9pbnQp
OworCisgICAgICAgIHZhciByZXNvdXJjZSA9IHNjcmlwdC5zb3VyY2VVUkwgPyB0aGlzLl9yZXNv
dXJjZUZvclVSTChzY3JpcHQuc291cmNlVVJMKSA6IG51bGw7CisgICAgICAgIGlmIChyZXNvdXJj
ZSkgeworICAgICAgICAgICAgaWYgKHNjcmlwdC5zb3VyY2VVUkwgaW4gdGhpcy5fc291cmNlRmls
ZXMpIHsKKyAgICAgICAgICAgICAgICBpZiAoIXJlc291cmNlLmZpbmlzaGVkKSB7CisgICAgICAg
ICAgICAgICAgICAgIC8vIFdlIGdvdCBhbm90aGVyIHNjcmlwdCBmb3IgZXhpc3Rpbmcgc291cmNl
IGZpbGUgdGhhdCBkb2VzIG5vdCBoYXZlIGEgZmluaXNoZWQgcmVzb3VyY2UgeWV0LgorICAgICAg
ICAgICAgICAgICAgICAvLyBTb3VyY2UgZmlsZSBjb250ZW50IHNob3VsZCBiZSB1cGRhdGVkIHdp
dGggcGFyc2VkIHNjcmlwdCBzb3VyY2UuCisgICAgICAgICAgICAgICAgICAgIHRoaXMuZGlzcGF0
Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVs
LkV2ZW50cy5Tb3VyY2VGaWxlQ2hhbmdlZCwgdGhpcy5fc291cmNlRmlsZXNbc2NyaXB0LnNvdXJj
ZVVSTF0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgaWYgKHJlc291cmNlLmZpbmlzaGVkKSB7CisgICAgICAgICAgICAgICAgICAgIC8v
IENyZWF0ZSBzb3VyY2UgZmlsZSBpbW1lZGlhdGVseSBzaW5jZSByZXNvdXJjZSBpcyBhbHJlYWR5
IGZpbmlzaGVkIGFuZCB3ZSBjYW4gcmVxdWVzdCBpdHMgY29udGVudC4KKyAgICAgICAgICAgICAg
ICAgICAgdGhpcy5fY3JlYXRlU291cmNlRmlsZShzY3JpcHQsIHJlc291cmNlKTsKKyAgICAgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAvLyBDcmVhdGUgc291cmNlIGZp
bGUgbGF0ZXIgd2hlbiByZXNvdXJjZSBpcyBmaW5pc2hlZC4KKyAgICAgICAgICAgICAgICAgICAg
cmVzb3VyY2UucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZmluaXNoZWQiLCB0aGlzLl9yZXNvdXJjZUxv
YWRpbmdGaW5pc2hlZCwgdGhpcyk7CisgICAgICAgICAgICAgICAgICAgIHJlc291cmNlLmFkZEV2
ZW50TGlzdGVuZXIoImZpbmlzaGVkIiwgdGhpcy5fcmVzb3VyY2VMb2FkaW5nRmluaXNoZWQsIHRo
aXMpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIC8vIFdlIGNhbiBjcmVhdGUgc291cmNlIGZpbGUgZm9yIHRoaXMgc2NyaXB0
IGltbWVkaWF0ZWx5IHNpbmNlIGl0IGRvZXMgbm90IGhhdmUgYSByZXNvdXJjZS4KKyAgICAgICAg
ICAgIHRoaXMuX2NyZWF0ZVNvdXJjZUZpbGUoc2NyaXB0KTsKICAgICAgICAgfQogICAgIH0sCiAK
QEAgLTcwLDYgKzkzLDY0IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVs
LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fcGFyc2VkU2NyaXB0U291cmNlKGV2ZW50KTsK
ICAgICB9LAogCisgICAgX3NjcmlwdFNvdXJjZUNoYW5nZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAg
IHsKKyAgICAgICAgdmFyIHNjcmlwdCA9IFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLnNjcmlw
dEZvclNvdXJjZUlEKGV2ZW50LmRhdGEuc291cmNlSUQpOworICAgICAgICB2YXIgb2xkU291cmNl
ID0gZXZlbnQuZGF0YS5vbGRTb3VyY2U7CisKKyAgICAgICAgdmFyIHJlc291cmNlID0gV2ViSW5z
cGVjdG9yLnJlc291cmNlRm9yVVJMKHNjcmlwdC5zb3VyY2VVUkwpOworICAgICAgICBpZiAocmVz
b3VyY2UpIHsKKyAgICAgICAgICAgIHZhciByZXZlcnRIYW5kbGUgPSBXZWJJbnNwZWN0b3IuZGVi
dWdnZXJNb2RlbC5lZGl0U2NyaXB0U291cmNlLmJpbmQoV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9k
ZWwsIHNjcmlwdC5zb3VyY2VJRCwgb2xkU291cmNlKTsKKyAgICAgICAgICAgIHJlc291cmNlLnNl
dENvbnRlbnQoc2NyaXB0LnNvdXJjZSwgcmV2ZXJ0SGFuZGxlKTsKKyAgICAgICAgfQorCisgICAg
ICAgIHZhciBzb3VyY2VGaWxlID0gdGhpcy5fc291cmNlRmlsZXNbc2NyaXB0LnNvdXJjZVVSTCB8
fCBzY3JpcHQuc291cmNlSURdOworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVy
cyhXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5FdmVudHMuU291cmNlRmls
ZUNoYW5nZWQsIHNvdXJjZUZpbGUpOworICAgIH0sCisKKyAgICBfY3JlYXRlU291cmNlRmlsZTog
ZnVuY3Rpb24oc2NyaXB0LCByZXNvdXJjZSkKKyAgICB7CisgICAgICAgIGlmIChzY3JpcHQuc291
cmNlVVJMICYmIHNjcmlwdC5zb3VyY2VVUkwgaW4gdGhpcy5fc291cmNlRmlsZXMpIHsKKyAgICAg
ICAgICAgIC8vIFdlIGFscmVhZHkgaGF2ZSBzb3VyY2UgZmlsZSBmb3IgdGhpcyB1cmwuCisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB2YXIgc291cmNlRmlsZSA9IHsg
aWQ6IHNjcmlwdC5zb3VyY2VVUkwgfHwgc2NyaXB0LnNvdXJjZUlEIH07CisgICAgICAgIHNvdXJj
ZUZpbGUudXJsID0gc2NyaXB0LnNvdXJjZVVSTDsKKyAgICAgICAgc291cmNlRmlsZS5pc0V4dGVu
c2lvblNjcmlwdCA9IHNjcmlwdC53b3JsZFR5cGUgPT09IFdlYkluc3BlY3Rvci5TY3JpcHQuV29y
bGRUeXBlLkVYVEVOU0lPTlNfV09STEQ7CisgICAgICAgIHNvdXJjZUZpbGUuc2NyaXB0ID0gc2Ny
aXB0OworICAgICAgICBzb3VyY2VGaWxlLnJlc291cmNlID0gcmVzb3VyY2U7CisgICAgICAgIHNv
dXJjZUZpbGUuX2JyZWFrcG9pbnRzID0ge307CisgICAgICAgIHRoaXMuX3NvdXJjZUZpbGVzW3Nv
dXJjZUZpbGUuaWRdID0gc291cmNlRmlsZTsKKworICAgICAgICB2YXIgYnJlYWtwb2ludHMgPSBX
ZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5icmVha3BvaW50czsKKyAgICAgICAgZm9yICh2YXIg
aWQgaW4gYnJlYWtwb2ludHMpIHsKKyAgICAgICAgICAgIGlmICghKGlkIGluIHRoaXMuX2JyZWFr
cG9pbnRzKSkKKyAgICAgICAgICAgICAgICB0aGlzLl9icmVha3BvaW50QWRkZWQoYnJlYWtwb2lu
dHNbaWRdKTsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVu
ZXJzKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLkV2ZW50cy5Tb3VyY2VG
aWxlQWRkZWQsIHNvdXJjZUZpbGUpOworICAgIH0sCisKKyAgICBfcmVzb3VyY2VGb3JVUkw6IGZ1
bmN0aW9uKHVybCkKKyAgICB7CisgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IubmV0d29ya01h
bmFnZXIuaW5mbGlnaHRSZXNvdXJjZUZvclVSTCh1cmwpIHx8IFdlYkluc3BlY3Rvci5yZXNvdXJj
ZUZvclVSTCh1cmwpOworICAgIH0sCisKKyAgICBfcmVzb3VyY2VMb2FkaW5nRmluaXNoZWQ6IGZ1
bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgdmFyIHJlc291cmNlID0gZXZlbnQudGFyZ2V0
OworCisgICAgICAgIHZhciBzb3VyY2VGaWxlID0gdGhpcy5fc291cmNlRmlsZXNbcmVzb3VyY2Uu
dXJsXTsKKyAgICAgICAgaWYgKHNvdXJjZUZpbGUpIHsKKyAgICAgICAgICAgIHNvdXJjZUZpbGUu
cmVzb3VyY2UgPSByZXNvdXJjZTsKKyAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlz
dGVuZXJzKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLkV2ZW50cy5Tb3Vy
Y2VGaWxlQ2hhbmdlZCwgc291cmNlRmlsZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICB2YXIgc2NyaXB0ID0gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuc2NyaXB0c0ZvclVSTChy
ZXNvdXJjZS51cmwpWzBdOworICAgICAgICAgICAgdGhpcy5fY3JlYXRlU291cmNlRmlsZShzY3Jp
cHQsIHJlc291cmNlKTsKKyAgICAgICAgfQorICAgIH0sCisKICAgICBjb250aW51ZVRvTGluZTog
ZnVuY3Rpb24oc291cmNlRmlsZUlkLCBsaW5lTnVtYmVyKQogICAgIHsKICAgICAgICAgdmFyIGxv
Y2F0aW9uID0gdGhpcy5fc291cmNlTG9jYXRpb25Ub0FjdHVhbExvY2F0aW9uKHNvdXJjZUZpbGVJ
ZCwgbGluZU51bWJlcik7CkBAIC03OSwxMiArMTYwLDEyIEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dl
clByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZSA9IHsKIAogICAgIGJyZWFrcG9pbnRzRm9yU291
cmNlRmlsZUlkOiBmdW5jdGlvbihzb3VyY2VGaWxlSWQpCiAgICAgeworICAgICAgICB2YXIgc291
cmNlRmlsZSA9IHRoaXMuX3NvdXJjZUZpbGVzW3NvdXJjZUZpbGVJZF07CisgICAgICAgIGlmICgh
c291cmNlRmlsZSkKKyAgICAgICAgICAgIHJldHVybiBbXTsKICAgICAgICAgdmFyIGJyZWFrcG9p
bnRzID0gW107Ci0gICAgICAgIGZvciAodmFyIGlkIGluIHRoaXMuX2JyZWFrcG9pbnRzKSB7Ci0g
ICAgICAgICAgICB2YXIgYnJlYWtwb2ludCA9IHRoaXMuX2JyZWFrcG9pbnRzW2lkXTsKLSAgICAg
ICAgICAgIGlmIChicmVha3BvaW50LnNvdXJjZUZpbGVJZCA9PT0gc291cmNlRmlsZUlkKQotICAg
ICAgICAgICAgICAgIGJyZWFrcG9pbnRzLnB1c2goYnJlYWtwb2ludCk7Ci0gICAgICAgIH0KKyAg
ICAgICAgZm9yICh2YXIgbGluZU51bWJlciBpbiBzb3VyY2VGaWxlLl9icmVha3BvaW50cykKKyAg
ICAgICAgICAgIGJyZWFrcG9pbnRzLnB1c2goc291cmNlRmlsZS5fYnJlYWtwb2ludHNbbGluZU51
bWJlcl0pOwogICAgICAgICByZXR1cm4gYnJlYWtwb2ludHM7CiAgICAgfSwKIApAQCAtMTI3LDE4
ICsyMDgsMjAgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90
eXBlID0gewogCiAgICAgZmluZEJyZWFrcG9pbnQ6IGZ1bmN0aW9uKHNvdXJjZUZpbGVJZCwgbGlu
ZU51bWJlcikKICAgICB7Ci0gICAgICAgIHZhciBlbmNvZGVkU291cmNlTG9jYXRpb24gPSB0aGlz
Ll9lbmNvZGVTb3VyY2VMb2NhdGlvbihzb3VyY2VGaWxlSWQsIGxpbmVOdW1iZXIpOwotICAgICAg
ICByZXR1cm4gdGhpcy5fc291cmNlTG9jYXRpb25Ub0JyZWFrcG9pbnRbZW5jb2RlZFNvdXJjZUxv
Y2F0aW9uXTsKKyAgICAgICAgdmFyIHNvdXJjZUZpbGUgPSB0aGlzLl9zb3VyY2VGaWxlc1tzb3Vy
Y2VGaWxlSWRdOworICAgICAgICBpZiAoc291cmNlRmlsZSkKKyAgICAgICAgICAgIHJldHVybiBz
b3VyY2VGaWxlLl9icmVha3BvaW50c1tsaW5lTnVtYmVyXTsKICAgICB9LAogCiAgICAgX2JyZWFr
cG9pbnRBZGRlZDogZnVuY3Rpb24oYnJlYWtwb2ludCkKICAgICB7CiAgICAgICAgIHZhciBsb2Nh
dGlvbiA9IGJyZWFrcG9pbnQubG9jYXRpb25zLmxlbmd0aCA/IGJyZWFrcG9pbnQubG9jYXRpb25z
WzBdIDogYnJlYWtwb2ludDsKLSAgICAgICAgdmFyIHNvdXJjZUxvY2F0aW9uID0gdGhpcy5fYWN0
dWFsTG9jYXRpb25Ub1NvdXJjZUxvY2F0aW9uKGJyZWFrcG9pbnQudXJsIHx8IGJyZWFrcG9pbnQu
c291cmNlSUQsIGxvY2F0aW9uLmxpbmVOdW1iZXIsIGxvY2F0aW9uLmNvbHVtbk51bWJlcik7Cisg
ICAgICAgIHZhciBzb3VyY2VMb2NhdGlvbiA9IHRoaXMuX2FjdHVhbExvY2F0aW9uVG9Tb3VyY2VM
b2NhdGlvbihicmVha3BvaW50LnVybCwgYnJlYWtwb2ludC5zb3VyY2VJRCwgbG9jYXRpb24ubGlu
ZU51bWJlciwgbG9jYXRpb24uY29sdW1uTnVtYmVyKTsKKyAgICAgICAgaWYgKCFzb3VyY2VMb2Nh
dGlvbikKKyAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICB2YXIgZW5jb2RlZFNvdXJjZUxv
Y2F0aW9uID0gdGhpcy5fZW5jb2RlU291cmNlTG9jYXRpb24oc291cmNlTG9jYXRpb24uc291cmNl
RmlsZUlkLCBzb3VyY2VMb2NhdGlvbi5saW5lTnVtYmVyKTsKLSAgICAgICAgaWYgKGVuY29kZWRT
b3VyY2VMb2NhdGlvbiBpbiB0aGlzLl9zb3VyY2VMb2NhdGlvblRvQnJlYWtwb2ludCkgewotICAg
ICAgICAgICAgLy8gV2UgY2FuJ3Qgc2hvdyBtb3JlIHRoYW4gb25lIGJyZWFrcG9pbnQgb24gYSBz
aW5nbGUgc291cmNlIGZyYW1lIGxpbmUuCisgICAgICAgIGlmICh0aGlzLmZpbmRCcmVha3BvaW50
KHNvdXJjZUxvY2F0aW9uLnNvdXJjZUZpbGVJZCwgc291cmNlTG9jYXRpb24ubGluZU51bWJlcikp
IHsKKyAgICAgICAgICAgIC8vIFdlIGNhbid0IHNob3cgbW9yZSB0aGFuIG9uZSBicmVha3BvaW50
IG9uIGEgc2luZ2xlIHNvdXJjZSBmaWxlIGxpbmUuCiAgICAgICAgICAgICBXZWJJbnNwZWN0b3Iu
ZGVidWdnZXJNb2RlbC5yZW1vdmVCcmVha3BvaW50KGJyZWFrcG9pbnQuaWQpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0xNTAsMTYgKzIzMywxNSBAQCBXZWJJbnNwZWN0b3Iu
RGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXNv
bHZlZDogISFicmVha3BvaW50LmxvY2F0aW9ucy5sZW5ndGgsCiAgICAgICAgICAgICBjb25kaXRp
b246IGJyZWFrcG9pbnQuY29uZGl0aW9uLAogICAgICAgICAgICAgZW5hYmxlZDogYnJlYWtwb2lu
dC5lbmFibGVkLAotICAgICAgICAgICAgX2lkOiBicmVha3BvaW50LmlkLAotICAgICAgICAgICAg
X2VuY29kZWRTb3VyY2VMb2NhdGlvbjogZW5jb2RlZFNvdXJjZUxvY2F0aW9uCisgICAgICAgICAg
ICBfaWQ6IGJyZWFrcG9pbnQuaWQKICAgICAgICAgfTsKICAgICAgICAgaWYgKGxvY2F0aW9uLnNv
dXJjZUlEKSB7CiAgICAgICAgICAgICB2YXIgc2NyaXB0ID0gV2ViSW5zcGVjdG9yLmRlYnVnZ2Vy
TW9kZWwuc2NyaXB0Rm9yU291cmNlSUQobG9jYXRpb24uc291cmNlSUQpOwogICAgICAgICAgICAg
cHJlc2VudGF0aW9uQnJlYWtwb2ludC5sb2FkU25pcHBldCA9IHNjcmlwdC5zb3VyY2VMaW5lLmJp
bmQoc2NyaXB0LCBsb2NhdGlvbi5saW5lTnVtYmVyKTsKICAgICAgICAgfQogCi0gICAgICAgIHRo
aXMuX3NvdXJjZUxvY2F0aW9uVG9CcmVha3BvaW50W2VuY29kZWRTb3VyY2VMb2NhdGlvbl0gPSBw
cmVzZW50YXRpb25CcmVha3BvaW50OwogICAgICAgICB0aGlzLl9icmVha3BvaW50c1ticmVha3Bv
aW50LmlkXSA9IHByZXNlbnRhdGlvbkJyZWFrcG9pbnQ7CisgICAgICAgIHRoaXMuX3NvdXJjZUZp
bGVzW3NvdXJjZUxvY2F0aW9uLnNvdXJjZUZpbGVJZF0uX2JyZWFrcG9pbnRzW3NvdXJjZUxvY2F0
aW9uLmxpbmVOdW1iZXJdID0gcHJlc2VudGF0aW9uQnJlYWtwb2ludDsKICAgICAgICAgdGhpcy5k
aXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9u
TW9kZWwuRXZlbnRzLkJyZWFrcG9pbnRBZGRlZCwgcHJlc2VudGF0aW9uQnJlYWtwb2ludCk7CiAg
ICAgfSwKIApAQCAtMTY3LDI3ICsyNDksMjQgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2Vu
dGF0aW9uTW9kZWwucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgdmFyIGJyZWFrcG9pbnQg
PSB0aGlzLl9icmVha3BvaW50c1ticmVha3BvaW50SWRdOwogICAgICAgICBkZWxldGUgdGhpcy5f
YnJlYWtwb2ludHNbYnJlYWtwb2ludElkXTsKLSAgICAgICAgZGVsZXRlIHRoaXMuX3NvdXJjZUxv
Y2F0aW9uVG9CcmVha3BvaW50W2JyZWFrcG9pbnQuX2VuY29kZWRTb3VyY2VMb2NhdGlvbl07Cisg
ICAgICAgIGRlbGV0ZSB0aGlzLl9zb3VyY2VGaWxlc1ticmVha3BvaW50LnNvdXJjZUZpbGVJZF0u
X2JyZWFrcG9pbnRzW2JyZWFrcG9pbnQubGluZU51bWJlcl07CiAgICAgICAgIHRoaXMuZGlzcGF0
Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVs
LkV2ZW50cy5CcmVha3BvaW50UmVtb3ZlZCwgYnJlYWtwb2ludCk7CiAgICAgfSwKIAogICAgIF9i
cmVha3BvaW50UmVzb2x2ZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIGJy
ZWFrcG9pbnQgPSBldmVudC5kYXRhOworICAgICAgICBpZiAoIShicmVha3BvaW50LmlkIGluIHRo
aXMuX2JyZWFrcG9pbnRzKSkKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgdGhpcy5fYnJl
YWtwb2ludFJlbW92ZWQoYnJlYWtwb2ludC5pZCk7CiAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnRB
ZGRlZChicmVha3BvaW50KTsKICAgICB9LAogCi0gICAgX2VuY29kZVNvdXJjZUxvY2F0aW9uOiBm
dW5jdGlvbihzb3VyY2VGaWxlSWQsIGxpbmVOdW1iZXIpCi0gICAgewotICAgICAgICByZXR1cm4g
c291cmNlRmlsZUlkICsgIjoiICsgbGluZU51bWJlcjsKLSAgICB9LAotCiAgICAgX3Jlc3RvcmVC
cmVha3BvaW50czogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgZnVuY3Rpb24gZGlkU2V0QnJl
YWtwb2ludChicmVha3BvaW50KQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoYnJlYWtwb2lu
dCAmJiBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5zY3JpcHRzRm9yVVJMKGJyZWFrcG9pbnQu
dXJsKS5sZW5ndGgpCisgICAgICAgICAgICBpZiAoYnJlYWtwb2ludCkKICAgICAgICAgICAgICAg
ICB0aGlzLl9icmVha3BvaW50QWRkZWQoYnJlYWtwb2ludCk7CiAgICAgICAgIH0KICAgICAgICAg
dmFyIGJyZWFrcG9pbnRzID0gV2ViSW5zcGVjdG9yLnNldHRpbmdzLmJyZWFrcG9pbnRzOwpAQCAt
MjI1LDcgKzMwNCwxMiBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5w
cm90b3R5cGUgPSB7CiAgICAgICAgIGlmICghY2FsbEZyYW1lKQogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB2YXIgc2NyaXB0ID0gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuc2NyaXB0
Rm9yU291cmNlSUQoY2FsbEZyYW1lLnNvdXJjZUlEKTsKLSAgICAgICAgY2FsbEZyYW1lLnNvdXJj
ZUxvY2F0aW9uID0gdGhpcy5fYWN0dWFsTG9jYXRpb25Ub1NvdXJjZUxvY2F0aW9uKHNjcmlwdC5z
b3VyY2VVUkwgfHwgc2NyaXB0LnNvdXJjZUlELCBjYWxsRnJhbWUubGluZSwgY2FsbEZyYW1lLmNv
bHVtbik7CisgICAgICAgIGlmIChzY3JpcHQgJiYgc2NyaXB0LnNvdXJjZVVSTCAmJiAhKHNjcmlw
dC5zb3VyY2VVUkwgaW4gdGhpcy5fc291cmNlRmlsZXMpKSB7CisgICAgICAgICAgICAvLyBEZWJ1
Z2dlciBwYXVzZWQgYmVmb3JlIHNjcmlwdCByZXNvdXJjZSB3YXMgZmluaXNoZWQuIFdlIGhhdmUg
dG8gY3JlYXRlCisgICAgICAgICAgICAvLyB0ZW1wb3Jhcnkgc291cmNlIGZpbGUgaW1tZWRpYXRl
bHkgKGl0IHdpbGwgYmUgcmVwbGFjZWQgbGF0ZXIgd2hlbiByZXNvdXJjZSBpcyBmaW5pc2hlZCku
CisgICAgICAgICAgICB0aGlzLl9jcmVhdGVTb3VyY2VGaWxlKHNjcmlwdCk7CisgICAgICAgIH0K
KyAgICAgICAgY2FsbEZyYW1lLnNvdXJjZUxvY2F0aW9uID0gdGhpcy5fYWN0dWFsTG9jYXRpb25U
b1NvdXJjZUxvY2F0aW9uKHNjcmlwdC5zb3VyY2VVUkwsIHNjcmlwdC5zb3VyY2VJRCwgY2FsbEZy
YW1lLmxpbmUsIGNhbGxGcmFtZS5jb2x1bW4pOwogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRU
b0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5FdmVudHMu
Q2FsbEZyYW1lU2VsZWN0ZWQsIGNhbGxGcmFtZSk7CiAgICAgfSwKIApAQCAtMjM0LDEwICszMTgs
MTIgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlID0g
ewogICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRDYWxsRnJhbWU7CiAgICAgfSwKIAotICAg
IF9hY3R1YWxMb2NhdGlvblRvU291cmNlTG9jYXRpb246IGZ1bmN0aW9uKHNvdXJjZUlELCBsaW5l
TnVtYmVyLCBjb2x1bW5OdW1iZXIpCisgICAgX2FjdHVhbExvY2F0aW9uVG9Tb3VyY2VMb2NhdGlv
bjogZnVuY3Rpb24oc2NyaXB0VVJMLCBzY3JpcHRJZCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVy
KQogICAgIHsKICAgICAgICAgLy8gVE9ETzogdXNlIHNvdXJjZSBtYXBwaW5nIHRvIG9idGFpbiBz
b3VyY2UgbG9jYXRpb24uCi0gICAgICAgIHJldHVybiB7IHNvdXJjZUZpbGVJZDogc291cmNlSUQs
IGxpbmVOdW1iZXI6IGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcjogY29sdW1uTnVtYmVyIH07Cisg
ICAgICAgIHZhciBzb3VyY2VGaWxlSWQgPSBzY3JpcHRVUkwgfHwgc2NyaXB0SWQ7CisgICAgICAg
IGlmIChzb3VyY2VGaWxlSWQgaW4gdGhpcy5fc291cmNlRmlsZXMpCisgICAgICAgICAgICByZXR1
cm4geyBzb3VyY2VGaWxlSWQ6IHNvdXJjZUZpbGVJZCwgbGluZU51bWJlcjogbGluZU51bWJlciwg
Y29sdW1uTnVtYmVyOiBjb2x1bW5OdW1iZXIgfTsKICAgICB9LAogCiAgICAgX3NvdXJjZUxvY2F0
aW9uVG9BY3R1YWxMb2NhdGlvbjogZnVuY3Rpb24oc291cmNlRmlsZUlkLCBsaW5lTnVtYmVyKQpA
QCAtMjUzLDggKzMzOSw4IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVs
LnByb3RvdHlwZSA9IHsKIAogICAgIHJlc2V0OiBmdW5jdGlvbigpCiAgICAgeworICAgICAgICB0
aGlzLl9zb3VyY2VGaWxlcyA9IHt9OwogICAgICAgICB0aGlzLl9icmVha3BvaW50cyA9IHt9Owot
ICAgICAgICB0aGlzLl9zb3VyY2VMb2NhdGlvblRvQnJlYWtwb2ludCA9IHt9OwogICAgIH0KIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRz
UGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5l
bC5qcwppbmRleCAxODJiMDFmLi5hNDA4ZTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcwpAQCAtMTg2LDExICsxODYsMTEgQEAg
V2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbCA9IGZ1bmN0aW9uKCkKICAgICB0aGlzLnJlc2V0KCk7
CiAKICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYklu
c3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkV2ZW50cy5EZWJ1Z2dlcldhc0VuYWJsZWQsIHRoaXMuX2Rl
YnVnZ2VyV2FzRW5hYmxlZCwgdGhpcyk7Ci0gICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwu
YWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5FdmVudHMuUGFyc2Vk
U2NyaXB0U291cmNlLCB0aGlzLl9wYXJzZWRTY3JpcHRTb3VyY2UsIHRoaXMpOwotICAgIFdlYklu
c3BlY3Rvci5kZWJ1Z2dlck1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRlYnVn
Z2VyTW9kZWwuRXZlbnRzLkZhaWxlZFRvUGFyc2VTY3JpcHRTb3VyY2UsIHRoaXMuX2ZhaWxlZFRv
UGFyc2VTY3JpcHRTb3VyY2UsIHRoaXMpOwotICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVs
LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuRXZlbnRzLlNjcmlw
dFNvdXJjZUNoYW5nZWQsIHRoaXMuX3NjcmlwdFNvdXJjZUNoYW5nZWQsIHRoaXMpOwogICAgIFdl
Ykluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRl
YnVnZ2VyTW9kZWwuRXZlbnRzLkRlYnVnZ2VyUGF1c2VkLCB0aGlzLl9kZWJ1Z2dlclBhdXNlZCwg
dGhpcyk7CiAgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihX
ZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5FdmVudHMuRGVidWdnZXJSZXN1bWVkLCB0aGlzLl9k
ZWJ1Z2dlclJlc3VtZWQsIHRoaXMpOworCisgICAgdGhpcy5fcHJlc2VudGF0aW9uTW9kZWwuYWRk
RXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5FdmVu
dHMuU291cmNlRmlsZUFkZGVkLCB0aGlzLl9zb3VyY2VGaWxlQWRkZWQsIHRoaXMpCisgICAgdGhp
cy5fcHJlc2VudGF0aW9uTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGVidWdn
ZXJQcmVzZW50YXRpb25Nb2RlbC5FdmVudHMuU291cmNlRmlsZUNoYW5nZWQsIHRoaXMuX3NvdXJj
ZUZpbGVDaGFuZ2VkLCB0aGlzKTsKICAgICB0aGlzLl9wcmVzZW50YXRpb25Nb2RlbC5hZGRFdmVu
dExpc3RlbmVyKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLkV2ZW50cy5C
cmVha3BvaW50QWRkZWQsIHRoaXMuX2JyZWFrcG9pbnRBZGRlZCwgdGhpcyk7CiAgICAgdGhpcy5f
cHJlc2VudGF0aW9uTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGVidWdnZXJQ
cmVzZW50YXRpb25Nb2RlbC5FdmVudHMuQnJlYWtwb2ludFJlbW92ZWQsIHRoaXMuX2JyZWFrcG9p
bnRSZW1vdmVkLCB0aGlzKTsKICAgICB0aGlzLl9wcmVzZW50YXRpb25Nb2RlbC5hZGRFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLkV2ZW50cy5DYWxs
RnJhbWVTZWxlY3RlZCwgdGhpcy5fY2FsbEZyYW1lU2VsZWN0ZWQsIHRoaXMpOwpAQCAtMjQ1LDEx
NSArMjQ1LDQzIEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogICAg
ICAgICByZXR1cm4gdGhpcy50b2dnbGVCcmVha3BvaW50c0J1dHRvbi50b2dnbGVkOwogICAgIH0s
CiAKLSAgICBfcGFyc2VkU2NyaXB0U291cmNlOiBmdW5jdGlvbihldmVudCkKLSAgICB7Ci0gICAg
ICAgIHRoaXMuX2FkZFNjcmlwdChldmVudC5kYXRhKTsKLSAgICB9LAotCi0gICAgX2ZhaWxlZFRv
UGFyc2VTY3JpcHRTb3VyY2U6IGZ1bmN0aW9uKGV2ZW50KQotICAgIHsKLSAgICAgICAgdGhpcy5f
YWRkU2NyaXB0KGV2ZW50LmRhdGEpOwotICAgIH0sCi0KICAgICBfc2NyaXB0U291cmNlQ2hhbmdl
ZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICB2YXIgc291cmNlSUQgPSBldmVudC5k
YXRhLnNvdXJjZUlEOwotICAgICAgICB2YXIgb2xkU291cmNlID0gZXZlbnQuZGF0YS5vbGRTb3Vy
Y2U7Ci0KLSAgICAgICAgdmFyIHNjcmlwdCA9IFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLnNj
cmlwdEZvclNvdXJjZUlEKHNvdXJjZUlEKTsKLSAgICAgICAgaWYgKHNjcmlwdC5yZXNvdXJjZSkg
ewotICAgICAgICAgICAgdmFyIHJldmVydEhhbmRsZSA9IFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1v
ZGVsLmVkaXRTY3JpcHRTb3VyY2UuYmluZChXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbCwgc291
cmNlSUQsIG9sZFNvdXJjZSk7Ci0gICAgICAgICAgICBzY3JpcHQucmVzb3VyY2Uuc2V0Q29udGVu
dChzY3JpcHQuc291cmNlLCByZXZlcnRIYW5kbGUpOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFy
IHNvdXJjZUZpbGVJZCA9IHRoaXMuX3NvdXJjZUZpbGVJZEZvclNjcmlwdChzY3JpcHQpOwotICAg
ICAgICB0aGlzLl9yZWNyZWF0ZVNvdXJjZUZyYW1lKHNvdXJjZUZpbGVJZCk7Ci0KICAgICAgICAg
dmFyIGNhbGxGcmFtZXMgPSBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5jYWxsRnJhbWVzOwog
ICAgICAgICBpZiAoY2FsbEZyYW1lcy5sZW5ndGgpCiAgICAgICAgICAgICB0aGlzLl9kZWJ1Z2dl
clBhdXNlZCh7IGRhdGE6IHsgY2FsbEZyYW1lczogY2FsbEZyYW1lcyB9IH0pOwogICAgIH0sCiAK
LSAgICBfYWRkU2NyaXB0OiBmdW5jdGlvbihzY3JpcHQpCi0gICAgewotICAgICAgICBpZiAoIXNj
cmlwdC5zb3VyY2VVUkwpIHsKLSAgICAgICAgICAgIC8vIEFub255bW91cyBzY3JpcHRzIGFyZSBz
aG93biBvbmx5IHdoZW4gc3RlcHBpbmcuCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
LQotICAgICAgICB2YXIgcmVzb3VyY2UgPSB0aGlzLl9yZXNvdXJjZUZvclVSTChzY3JpcHQuc291
cmNlVVJMKTsKLSAgICAgICAgaWYgKHJlc291cmNlKSB7Ci0gICAgICAgICAgICBpZiAocmVzb3Vy
Y2UuZmluaXNoZWQpIHsKLSAgICAgICAgICAgICAgICAvLyBSZXNvdXJjZSBpcyBmaW5pc2hlZCwg
YmluZCB0aGUgc2NyaXB0IHJpZ2h0IGF3YXkuCi0gICAgICAgICAgICAgICAgc2NyaXB0LnJlc291
cmNlID0gcmVzb3VyY2U7Ci0KLSAgICAgICAgICAgICAgICAvLyBBZGQgcmVzb3VyY2UgdXJsIHRv
IGZpbGVzIHNlbGVjdCBpZiBub3QgYWxyZWFkeSBhZGRlZCB3aGlsZSBkZWJ1Z2dpbmcgaW5saW5l
ZCBzY3JpcHRzLgotICAgICAgICAgICAgICAgIGlmICghKHJlc291cmNlLnVybCBpbiB0aGlzLl9z
b3VyY2VGaWxlSWRUb0ZpbGVzU2VsZWN0T3B0aW9uKSkKLSAgICAgICAgICAgICAgICAgICAgdGhp
cy5fYWRkT3B0aW9uVG9GaWxlc1NlbGVjdEFuZFNob3dTb3VyY2VGcmFtZUlmTmVlZGVkKHJlc291
cmNlLnVybCk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIC8vIFJlc291
cmNlIGlzIG5vdCBmaW5pc2hlZCwgYmluZCB0aGUgc2NyaXB0IGxhdGVyLgotICAgICAgICAgICAg
ICAgIGlmICghcmVzb3VyY2UuX3NjcmlwdHNQZW5kaW5nUmVzb3VyY2VMb2FkKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIHJlc291cmNlLl9zY3JpcHRzUGVuZGluZ1Jlc291cmNlTG9hZCA9IFtdOwot
ICAgICAgICAgICAgICAgICAgICByZXNvdXJjZS5hZGRFdmVudExpc3RlbmVyKCJmaW5pc2hlZCIs
IHRoaXMuX3Jlc291cmNlTG9hZGluZ0ZpbmlzaGVkLCB0aGlzKTsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgcmVzb3VyY2UuX3NjcmlwdHNQZW5kaW5nUmVzb3VyY2VMb2FkLnB1
c2goc2NyaXB0KTsKLQotICAgICAgICAgICAgICAgIC8vIFNvdXJjZSBmcmFtZSBjb250ZW50IGlz
IG91dGRhdGVkIHNpbmNlIHdlIGhhdmUgbmV3IHNjcmlwdCBwYXJzZWQuCi0gICAgICAgICAgICAg
ICAgdGhpcy5fcmVjcmVhdGVTb3VyY2VGcmFtZShzY3JpcHQuc291cmNlVVJMKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfSBlbHNlIGlmICghKHNjcmlwdC5zb3VyY2VVUkwgaW4gdGhpcy5fc291
cmNlRmlsZUlkVG9GaWxlc1NlbGVjdE9wdGlvbikpIHsKLSAgICAgICAgICAgIC8vIFRoaXMgaXMg
YSBkeW5hbWljIHNjcmlwdCB3aXRoICIvL0Agc291cmNlVVJMPSIgY29tbWVudC4KLSAgICAgICAg
ICAgIHRoaXMuX2FkZE9wdGlvblRvRmlsZXNTZWxlY3RBbmRTaG93U291cmNlRnJhbWVJZk5lZWRl
ZChzY3JpcHQuc291cmNlVVJMKTsKLSAgICAgICAgfQotICAgIH0sCi0KLSAgICBfcmVzb3VyY2VG
b3JVUkw6IGZ1bmN0aW9uKHVybCkKKyAgICBfc291cmNlRmlsZUFkZGVkOiBmdW5jdGlvbihldmVu
dCkKICAgICB7Ci0gICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IubmV0d29ya01hbmFnZXIuaW5m
bGlnaHRSZXNvdXJjZUZvclVSTCh1cmwpIHx8IFdlYkluc3BlY3Rvci5yZXNvdXJjZUZvclVSTCh1
cmwpOwotICAgIH0sCi0KLSAgICBfcmVzb3VyY2VMb2FkaW5nRmluaXNoZWQ6IGZ1bmN0aW9uKGUp
Ci0gICAgewotICAgICAgICB2YXIgcmVzb3VyY2UgPSBlLnRhcmdldDsKKyAgICAgICAgdmFyIHNv
dXJjZUZpbGUgPSBldmVudC5kYXRhOwogCi0gICAgICAgIC8vIEJpbmQgc2NyaXB0cyB0byByZXNv
dXJjZS4KLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXNvdXJjZS5fc2NyaXB0c1BlbmRp
bmdSZXNvdXJjZUxvYWQubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIHZhciBzY3JpcHQgPSBy
ZXNvdXJjZS5fc2NyaXB0c1BlbmRpbmdSZXNvdXJjZUxvYWRbaV07Ci0gICAgICAgICAgICBzY3Jp
cHQucmVzb3VyY2UgPSByZXNvdXJjZTsKKyAgICAgICAgaWYgKCFzb3VyY2VGaWxlLnVybCkgewor
ICAgICAgICAgICAgLy8gQW5vbnltb3VzIHNvdXJjZXMgYXJlIHNob3duIG9ubHkgd2hlbiBzdGVw
cGluZy4KKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBkZWxldGUgcmVz
b3VyY2UuX3NjcmlwdHNQZW5kaW5nUmVzb3VyY2VMb2FkOwotCi0gICAgICAgIC8vIFJlY3JlYXRl
IHNvdXJjZSBmcmFtZSB0byBzaG93IHJlc291cmNlIGNvbnRlbnQuCi0gICAgICAgIHRoaXMuX3Jl
Y3JlYXRlU291cmNlRnJhbWUocmVzb3VyY2UudXJsKTsKIAotICAgICAgICAvLyBBZGQgcmVzb3Vy
Y2UgdXJsIHRvIGZpbGVzIHNlbGVjdCBpZiBub3QgYWxyZWFkeSBhZGRlZCB3aGlsZSBkZWJ1Z2dp
bmcgaW5saW5lZCBzY3JpcHRzLgotICAgICAgICBpZiAoIShyZXNvdXJjZS51cmwgaW4gdGhpcy5f
c291cmNlRmlsZUlkVG9GaWxlc1NlbGVjdE9wdGlvbikpCi0gICAgICAgICAgICB0aGlzLl9hZGRP
cHRpb25Ub0ZpbGVzU2VsZWN0QW5kU2hvd1NvdXJjZUZyYW1lSWZOZWVkZWQocmVzb3VyY2UudXJs
KTsKLSAgICB9LAotCi0gICAgX2FkZE9wdGlvblRvRmlsZXNTZWxlY3RBbmRTaG93U291cmNlRnJh
bWVJZk5lZWRlZDogZnVuY3Rpb24odXJsKQotICAgIHsKLSAgICAgICAgdGhpcy5fYWRkT3B0aW9u
VG9GaWxlc1NlbGVjdCh1cmwpOworICAgICAgICB0aGlzLl9hZGRPcHRpb25Ub0ZpbGVzU2VsZWN0
KHNvdXJjZUZpbGUuaWQpOwogCiAgICAgICAgIHZhciBsYXN0Vmlld2VkVVJMID0gV2ViSW5zcGVj
dG9yLnNldHRpbmdzLmxhc3RWaWV3ZWRTY3JpcHRGaWxlOwogICAgICAgICBpZiAodGhpcy5fZmls
ZXNTZWxlY3RFbGVtZW50Lmxlbmd0aCA9PT0gMSkgewogICAgICAgICAgICAgLy8gT3B0aW9uIHdl
IGp1c3QgYWRkZWQgaXMgdGhlIG9ubHkgb3B0aW9uIGluIGZpbGVzIHNlbGVjdC4KICAgICAgICAg
ICAgIC8vIFdlIGhhdmUgdG8gc2hvdyBjb3JyZXNwb25kaW5nIHNvdXJjZSBmcmFtZSBpbW1lZGlh
dGVseS4KLSAgICAgICAgICAgIHRoaXMuX3Nob3dTb3VyY2VGcmFtZUFuZEFkZFRvSGlzdG9yeSh1
cmwpOworICAgICAgICAgICAgdGhpcy5fc2hvd1NvdXJjZUZyYW1lQW5kQWRkVG9IaXN0b3J5KHNv
dXJjZUZpbGUuaWQpOwogICAgICAgICAgICAgLy8gUmVzdG9yZSBvcmlnaW5hbCB2YWx1ZSBvZiBs
YXN0Vmlld2VkU2NyaXB0RmlsZSBiZWNhdXNlCiAgICAgICAgICAgICAvLyBzb3VyY2UgZnJhbWUg
d2FzIHNob3duIGFzIGEgcmVzdWx0IG9mIGluaXRpYWwgbG9hZC4KICAgICAgICAgICAgIFdlYklu
c3BlY3Rvci5zZXR0aW5ncy5sYXN0Vmlld2VkU2NyaXB0RmlsZSA9IGxhc3RWaWV3ZWRVUkw7Ci0g
ICAgICAgIH0gZWxzZSBpZiAodXJsID09PSBsYXN0Vmlld2VkVVJMKQotICAgICAgICAgICAgdGhp
cy5fc2hvd1NvdXJjZUZyYW1lQW5kQWRkVG9IaXN0b3J5KHVybCk7CisgICAgICAgIH0gZWxzZSBp
ZiAoc291cmNlRmlsZS51cmwgPT09IGxhc3RWaWV3ZWRVUkwpCisgICAgICAgICAgICB0aGlzLl9z
aG93U291cmNlRnJhbWVBbmRBZGRUb0hpc3Rvcnkoc291cmNlRmlsZS5pZCk7CiAgICAgfSwKIAog
ICAgIF9hZGRPcHRpb25Ub0ZpbGVzU2VsZWN0OiBmdW5jdGlvbihzb3VyY2VGaWxlSWQpCiAgICAg
ewotICAgICAgICB2YXIgc2NyaXB0ID0gdGhpcy5fc2NyaXB0Rm9yU291cmNlRmlsZUlkKHNvdXJj
ZUZpbGVJZCk7CisgICAgICAgIHZhciBzb3VyY2VGaWxlID0gdGhpcy5fcHJlc2VudGF0aW9uTW9k
ZWwuc291cmNlRmlsZShzb3VyY2VGaWxlSWQpOwogICAgICAgICB2YXIgc2VsZWN0ID0gdGhpcy5f
ZmlsZXNTZWxlY3RFbGVtZW50OwogICAgICAgICB2YXIgb3B0aW9uID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgib3B0aW9uIik7Ci0gICAgICAgIG9wdGlvbi50ZXh0ID0gc2NyaXB0LnNvdXJjZVVS
TCA/IFdlYkluc3BlY3Rvci5kaXNwbGF5TmFtZUZvclVSTChzY3JpcHQuc291cmNlVVJMKSA6IFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiKHByb2dyYW0pIik7Ci0gICAgICAgIGlmIChzY3JpcHQud29y
bGRUeXBlID09PSBXZWJJbnNwZWN0b3IuU2NyaXB0LldvcmxkVHlwZS5FWFRFTlNJT05TX1dPUkxE
KQorICAgICAgICBvcHRpb24udGV4dCA9IHNvdXJjZUZpbGUudXJsID8gV2ViSW5zcGVjdG9yLmRp
c3BsYXlOYW1lRm9yVVJMKHNvdXJjZUZpbGUudXJsKSA6IFdlYkluc3BlY3Rvci5VSVN0cmluZygi
KHByb2dyYW0pIik7CisgICAgICAgIGlmIChzb3VyY2VGaWxlLmlzRXh0ZW5zaW9uU2NyaXB0KQog
ICAgICAgICAgICAgb3B0aW9uLmFkZFN0eWxlQ2xhc3MoImV4dGVuc2lvbi1zY3JpcHQiKTsKICAg
ICAgICAgZnVuY3Rpb24gb3B0aW9uQ29tcGFyZShhLCBiKQogICAgICAgICB7CkBAIC01NzUsOSAr
NTAzLDkgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAg
IHZhciBzb3VyY2VGcmFtZSA9IHRoaXMuX3NvdXJjZUZyYW1lRm9yU291cmNlRmlsZUlkKHNvdXJj
ZUZpbGVJZCk7CiAgICAgICAgIHRoaXMudmlzaWJsZVZpZXcgPSBzb3VyY2VGcmFtZTsKIAotICAg
ICAgICB2YXIgc2NyaXB0ID0gdGhpcy5fc2NyaXB0Rm9yU291cmNlRmlsZUlkKHNvdXJjZUZpbGVJ
ZCk7Ci0gICAgICAgIGlmIChzY3JpcHQuc291cmNlVVJMKQotICAgICAgICAgICAgV2ViSW5zcGVj
dG9yLnNldHRpbmdzLmxhc3RWaWV3ZWRTY3JpcHRGaWxlID0gc2NyaXB0LnNvdXJjZVVSTDsKKyAg
ICAgICAgdmFyIHNvdXJjZUZpbGUgPSB0aGlzLl9wcmVzZW50YXRpb25Nb2RlbC5zb3VyY2VGaWxl
KHNvdXJjZUZpbGVJZCk7CisgICAgICAgIGlmIChzb3VyY2VGaWxlLnVybCkKKyAgICAgICAgICAg
IFdlYkluc3BlY3Rvci5zZXR0aW5ncy5sYXN0Vmlld2VkU2NyaXB0RmlsZSA9IHNvdXJjZUZpbGUu
dXJsOwogCiAgICAgICAgIHJldHVybiBzb3VyY2VGcmFtZTsKICAgICB9LApAQCAtNTkwLDIzICs1
MTgsMjQgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICBf
Y3JlYXRlU291cmNlRnJhbWU6IGZ1bmN0aW9uKHNvdXJjZUZpbGVJZCkKICAgICB7Ci0gICAgICAg
IHZhciBzY3JpcHQgPSB0aGlzLl9zY3JpcHRGb3JTb3VyY2VGaWxlSWQoc291cmNlRmlsZUlkKTsK
LSAgICAgICAgdmFyIGRlbGVnYXRlID0gbmV3IFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZURlbGVn
YXRlRm9yU2NyaXB0c1BhbmVsKHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLCBzb3VyY2VGaWxlSWQs
IHNjcmlwdCk7Ci0gICAgICAgIHZhciBzb3VyY2VGcmFtZSA9IG5ldyBXZWJJbnNwZWN0b3IuU291
cmNlRnJhbWUoZGVsZWdhdGUsIHNjcmlwdC5zb3VyY2VVUkwpOworICAgICAgICB2YXIgc291cmNl
RmlsZSA9IHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLnNvdXJjZUZpbGUoc291cmNlRmlsZUlkKTsK
KyAgICAgICAgdmFyIGRlbGVnYXRlID0gbmV3IFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZURlbGVn
YXRlRm9yU2NyaXB0c1BhbmVsKHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLCBzb3VyY2VGaWxlSWQp
OworICAgICAgICB2YXIgc291cmNlRnJhbWUgPSBuZXcgV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1l
KGRlbGVnYXRlLCBzb3VyY2VGaWxlLnVybCk7CiAgICAgICAgIHNvdXJjZUZyYW1lLl9zb3VyY2VG
aWxlSWQgPSBzb3VyY2VGaWxlSWQ7CiAgICAgICAgIHNvdXJjZUZyYW1lLmFkZEV2ZW50TGlzdGVu
ZXIoV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lLkV2ZW50cy5Mb2FkZWQsIHRoaXMuX3NvdXJjZUZy
YW1lTG9hZGVkLCB0aGlzKTsKICAgICAgICAgdGhpcy5fc291cmNlRmlsZUlkVG9Tb3VyY2VGcmFt
ZVtzb3VyY2VGaWxlSWRdID0gc291cmNlRnJhbWU7CiAgICAgICAgIHJldHVybiBzb3VyY2VGcmFt
ZTsKICAgICB9LAogCi0gICAgX3JlY3JlYXRlU291cmNlRnJhbWU6IGZ1bmN0aW9uKHNvdXJjZUZp
bGVJZCkKKyAgICBfc291cmNlRmlsZUNoYW5nZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKKyAg
ICAgICAgdmFyIHNvdXJjZUZpbGVJZCA9IGV2ZW50LmRhdGEuaWQ7CisKICAgICAgICAgdmFyIG9s
ZFNvdXJjZUZyYW1lID0gdGhpcy5fc291cmNlRmlsZUlkVG9Tb3VyY2VGcmFtZVtzb3VyY2VGaWxl
SWRdOwogICAgICAgICBpZiAoIW9sZFNvdXJjZUZyYW1lKQogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICBvbGRTb3VyY2VGcmFtZS5yZW1vdmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5T
b3VyY2VGcmFtZS5FdmVudHMuTG9hZGVkLCB0aGlzLl9zb3VyY2VGcmFtZUxvYWRlZCwgdGhpcyk7
CiAgICAgICAgIGRlbGV0ZSB0aGlzLl9zb3VyY2VGaWxlSWRUb1NvdXJjZUZyYW1lW3NvdXJjZUZp
bGVJZF07Ci0gICAgICAgIG9sZFNvdXJjZUZyYW1lLnJlbW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5z
cGVjdG9yLlNvdXJjZUZyYW1lLkV2ZW50cy5Mb2FkZWQsIHRoaXMuX3NvdXJjZUZyYW1lTG9hZGVk
LCB0aGlzKTsKICAgICAgICAgaWYgKHRoaXMudmlzaWJsZVZpZXcgIT09IG9sZFNvdXJjZUZyYW1l
KQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC02NDEsMjAgKzU3MCw2IEBAIFdlYkluc3BlY3Rv
ci5TY3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB9CiAgICAgfSwKIAotICAgIF9z
b3VyY2VGaWxlSWRGb3JTY3JpcHQ6IGZ1bmN0aW9uKHNjcmlwdCkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBzY3JpcHQuc291cmNlVVJMIHx8IHNjcmlwdC5zb3VyY2VJRDsKLSAgICB9LAotCi0gICAg
X3NjcmlwdEZvclNvdXJjZUZpbGVJZDogZnVuY3Rpb24oc291cmNlRmlsZUlkKQotICAgIHsKLSAg
ICAgICAgZnVuY3Rpb24gZmlsdGVyKHNjcmlwdCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuIChzY3JpcHQuc291cmNlVVJMIHx8IHNjcmlwdC5zb3VyY2VJRCkgPT09IHNvdXJjZUZpbGVJ
ZDsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwu
cXVlcnlTY3JpcHRzKGZpbHRlcilbMF07Ci0gICAgfSwKLQogICAgIF9jbGVhckN1cnJlbnRFeGVj
dXRpb25MaW5lOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fZXhlY3V0aW9u
U291cmNlRnJhbWUpCkBAIC02NzYsOSArNTkxLDcgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5l
bC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdmFyIHNvdXJjZUZpbGVJZCA9IGNhbGxGcmFtZS5z
b3VyY2VMb2NhdGlvbi5zb3VyY2VGaWxlSWQ7CiAgICAgICAgIGlmICghKHNvdXJjZUZpbGVJZCBp
biB0aGlzLl9zb3VyY2VGaWxlSWRUb0ZpbGVzU2VsZWN0T3B0aW9uKSkgewotICAgICAgICAgICAg
Ly8gVGhpcyBoYXBwZW5zIGluIHR3byBjYXNlczoKLSAgICAgICAgICAgIC8vIDEpIEN1cnJlbnQg
Y2FsbCBmcmFtZSBmdW5jdGlvbiBpcyBkZWZpbmVkIGluIGFub255bW91cyBzY3JpcHQgKGFub255
bW91cyBzY3JpcHRzIGFyZW4ndCBhZGRlZCB0byBmaWxlcyBzZWxlY3QgYnkgZGVmYXVsdCkKLSAg
ICAgICAgICAgIC8vIDIpIFdlIGFyZSBkZWJ1Z2dpbmcgc3luY2hyb25vdXNseSBleGVjdXRlZCBp
bmxpbmVkIHNjcmlwdCBhbmQgdGhlcmUgaXMgbm8gcmVzb3VyY2Ugc28gZmFyCisgICAgICAgICAg
ICAvLyBBbm9ueW1vdXMgc2NyaXB0cyBhcmUgbm90IGFkZGVkIHRvIGZpbGVzIHNlbGVjdCBieSBk
ZWZhdWx0LgogICAgICAgICAgICAgdGhpcy5fYWRkT3B0aW9uVG9GaWxlc1NlbGVjdChzb3VyY2VG
aWxlSWQpOwogICAgICAgICB9CiAgICAgICAgIHZhciBzb3VyY2VGcmFtZSA9IHRoaXMuX3Nob3dT
b3VyY2VGcmFtZUFuZEFkZFRvSGlzdG9yeShzb3VyY2VGaWxlSWQpOwpAQCAtMTA1MSwxMyArOTY0
LDE2IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogV2ViSW5zcGVj
dG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlBhbmVs
LnByb3RvdHlwZTsKIAogCi1XZWJJbnNwZWN0b3IuU291cmNlRnJhbWVEZWxlZ2F0ZUZvclNjcmlw
dHNQYW5lbCA9IGZ1bmN0aW9uKG1vZGVsLCBzb3VyY2VGaWxlSWQsIHNjcmlwdCkKK1dlYkluc3Bl
Y3Rvci5Tb3VyY2VGcmFtZURlbGVnYXRlRm9yU2NyaXB0c1BhbmVsID0gZnVuY3Rpb24obW9kZWws
IHNvdXJjZUZpbGVJZCkKIHsKICAgICBXZWJJbnNwZWN0b3IuU291cmNlRnJhbWVEZWxlZ2F0ZS5j
YWxsKHRoaXMpOwogICAgIHRoaXMuX21vZGVsID0gbW9kZWw7CiAgICAgdGhpcy5fc291cmNlRmls
ZUlkID0gc291cmNlRmlsZUlkOwotICAgIHRoaXMuX3NjcmlwdCA9IHNjcmlwdDsKICAgICB0aGlz
Ll9wb3BvdmVyT2JqZWN0R3JvdXAgPSAicG9wb3ZlciI7CisKKyAgICB2YXIgc291cmNlRmlsZSA9
IHRoaXMuX21vZGVsLnNvdXJjZUZpbGUoc291cmNlRmlsZUlkKTsKKyAgICB0aGlzLl9zY3JpcHQg
PSBzb3VyY2VGaWxlLnNjcmlwdDsKKyAgICB0aGlzLl9yZXNvdXJjZSA9IHNvdXJjZUZpbGUucmVz
b3VyY2U7CiB9CiAKIFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZURlbGVnYXRlRm9yU2NyaXB0c1Bh
bmVsLnByb3RvdHlwZSA9IHsKQEAgLTEwNjksOCArOTg1LDggQEAgV2ViSW5zcGVjdG9yLlNvdXJj
ZUZyYW1lRGVsZWdhdGVGb3JTY3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAg
Y2FsbGJhY2sobWltZVR5cGUsIHRoaXMuX2NvbnRlbnQpOwogICAgICAgICB9CiAKLSAgICAgICAg
aWYgKHRoaXMuX3NjcmlwdC5yZXNvdXJjZSkKLSAgICAgICAgICAgIHRoaXMuX2xvYWRSZXNvdXJj
ZUNvbnRlbnQodGhpcy5fc2NyaXB0LnJlc291cmNlLCBkaWRHZXRUZXh0QW5kU2NyaXB0UmFuZ2Vz
LmJpbmQodGhpcykpOworICAgICAgICBpZiAodGhpcy5fcmVzb3VyY2UpCisgICAgICAgICAgICB0
aGlzLl9sb2FkUmVzb3VyY2VDb250ZW50KHRoaXMuX3Jlc291cmNlLCBkaWRHZXRUZXh0QW5kU2Ny
aXB0UmFuZ2VzLmJpbmQodGhpcykpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICB0aGlzLl9s
b2FkQW5kQ29uY2F0ZW5hdGVTY3JpcHRzQ29udGVudChkaWRHZXRUZXh0QW5kU2NyaXB0UmFuZ2Vz
LmJpbmQodGhpcykpOwogICAgIH0sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85681</attachid>
            <date>2011-03-14 09:01:25 -0700</date>
            <delta_ts>2011-03-16 07:11:53 -0700</delta_ts>
            <desc>Rebase.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>26910</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4YThkZTViLi5kYTM0OTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDQg
QEAKKzIwMTEtMDMtMTEgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogZXh0cmFjdCBjb250ZW50IGxvYWRpbmcgbG9naWMgZnJvbSBzY3JpcHRzIHBhbmVs
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTUyMzcK
KworICAgICAgICBFbmNhcHN1bGF0ZSBzb3VyY2UgZnJhbWUgY29udGVudCBsb2FkaW5nIGxvZ2lj
IGluIGRlYnVnZ2VyIHByZXNlbnRhdGlvbiBtb2RlbAorICAgICAgICB0byBzdXBwb3J0IHNvdXJj
ZSBtYXBwaW5ncyBpbiBhIHBsdWdnYWJsZSB3YXkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJv
bnQtZW5kL0RlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVi
dWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUuc291cmNlRmlsZSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUuX3BhcnNlZFNj
cmlwdFNvdXJjZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25N
b2RlbC5wcm90b3R5cGUuX2ZhaWxlZFRvUGFyc2VTY3JpcHRTb3VyY2UpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlLl9zY3JpcHRTb3Vy
Y2VDaGFuZ2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1v
ZGVsLnByb3RvdHlwZS5fY3JlYXRlU291cmNlRmlsZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUuX3Jlc291cmNlRm9yVVJMKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZS5f
cmVzb3VyY2VMb2FkaW5nRmluaXNoZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2Vy
UHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlLmJyZWFrcG9pbnRzRm9yU291cmNlRmlsZUlkKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlw
ZS5maW5kQnJlYWtwb2ludCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50
YXRpb25Nb2RlbC5wcm90b3R5cGUuX2JyZWFrcG9pbnRBZGRlZCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUuX2JyZWFrcG9pbnRSZW1v
dmVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnBy
b3RvdHlwZS5fYnJlYWtwb2ludFJlc29sdmVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1
Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZS5zZXQgc2VsZWN0ZWRDYWxsRnJhbWUpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBl
LmdldCBzZWxlY3RlZENhbGxGcmFtZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJQ
cmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUuX2FjdHVhbExvY2F0aW9uVG9Tb3VyY2VMb2NhdGlv
bik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90
b3R5cGUuX3NvdXJjZUxvY2F0aW9uVG9BY3R1YWxMb2NhdGlvbik6CisgICAgICAgICogaW5zcGVj
dG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2Ny
aXB0c1BhbmVsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBl
Ll9zY3JpcHRTb3VyY2VDaGFuZ2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFu
ZWwucHJvdG90eXBlLl9zb3VyY2VGaWxlQWRkZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNj
cmlwdHNQYW5lbC5wcm90b3R5cGUuX2FkZE9wdGlvblRvRmlsZXNTZWxlY3QpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUuX3Nob3dTb3VyY2VGcmFtZSk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZS5fY3JlYXRlU291cmNl
RnJhbWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUuX3Nv
dXJjZUZpbGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJv
dG90eXBlLl9zb3VyY2VGcmFtZUxvYWRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0
c1BhbmVsLnByb3RvdHlwZS5fY2FsbEZyYW1lU2VsZWN0ZWQpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlNvdXJjZUZyYW1lRGVsZWdhdGVGb3JTY3JpcHRzUGFuZWwpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlNvdXJjZUZyYW1lRGVsZWdhdGVGb3JTY3JpcHRzUGFuZWwucHJvdG90eXBlLnJlcXVl
c3RDb250ZW50KToKKwogMjAxMS0wMy0xNCAgUGF2ZWwgUG9kaXZpbG92ICA8cG9kaXZpbG92QGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJQcmVzZW50
YXRpb25Nb2RlbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdn
ZXJQcmVzZW50YXRpb25Nb2RlbC5qcwppbmRleCBmYWNmNWVhLi42MmVjNmYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyUHJlc2VudGF0aW9u
TW9kZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dl
clByZXNlbnRhdGlvbk1vZGVsLmpzCkBAIC00MCw2ICs0MCw4IEBAIFdlYkluc3BlY3Rvci5EZWJ1
Z2dlclByZXNlbnRhdGlvbk1vZGVsID0gZnVuY3Rpb24oKQogfQogCiBXZWJJbnNwZWN0b3IuRGVi
dWdnZXJQcmVzZW50YXRpb25Nb2RlbC5FdmVudHMgPSB7CisgICAgU291cmNlRmlsZUFkZGVkOiAi
c291cmNlLWZpbGUtYWRkZWQiLAorICAgIFNvdXJjZUZpbGVDaGFuZ2VkOiAic291cmNlLWZpbGUt
Y2hhbmdlZCIsCiAgICAgQnJlYWtwb2ludEFkZGVkOiAiYnJlYWtwb2ludC1hZGRlZCIsCiAgICAg
QnJlYWtwb2ludFJlbW92ZWQ6ICJicmVha3BvaW50LXJlbW92ZWQiCiB9CkBAIC01MCwxNiArNTIs
MzYgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlID0g
ewogICAgICAgICB0aGlzLl9yZXN0b3JlQnJlYWtwb2ludHMoKTsKICAgICB9LAogCisgICAgc291
cmNlRmlsZTogZnVuY3Rpb24oc291cmNlRmlsZUlkKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRo
aXMuX3NvdXJjZUZpbGVzW3NvdXJjZUZpbGVJZF07CisgICAgfSwKKwogICAgIF9wYXJzZWRTY3Jp
cHRTb3VyY2U6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIHNjcmlwdCA9IGV2
ZW50LmRhdGE7Ci0gICAgICAgIHZhciBicmVha3BvaW50cyA9IFdlYkluc3BlY3Rvci5kZWJ1Z2dl
ck1vZGVsLmJyZWFrcG9pbnRzOwotICAgICAgICBmb3IgKHZhciBpZCBpbiBicmVha3BvaW50cykg
ewotICAgICAgICAgICAgaWYgKGlkIGluIHRoaXMuX3ByZXNlbnRhdGlvbkJyZWFrcG9pbnRzKQot
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSBi
cmVha3BvaW50c1tpZF07Ci0gICAgICAgICAgICBpZiAoYnJlYWtwb2ludC51cmwgJiYgYnJlYWtw
b2ludC51cmwgPT09IHNjcmlwdC5zb3VyY2VVUkwpCi0gICAgICAgICAgICAgICAgdGhpcy5fYnJl
YWtwb2ludEFkZGVkKGJyZWFrcG9pbnQpOworCisgICAgICAgIHZhciByZXNvdXJjZSA9IHNjcmlw
dC5zb3VyY2VVUkwgPyB0aGlzLl9yZXNvdXJjZUZvclVSTChzY3JpcHQuc291cmNlVVJMKSA6IG51
bGw7CisgICAgICAgIGlmIChyZXNvdXJjZSkgeworICAgICAgICAgICAgaWYgKHNjcmlwdC5zb3Vy
Y2VVUkwgaW4gdGhpcy5fc291cmNlRmlsZXMpIHsKKyAgICAgICAgICAgICAgICBpZiAoIXJlc291
cmNlLmZpbmlzaGVkKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFdlIGdvdCBhbm90aGVyIHNj
cmlwdCBmb3IgZXhpc3Rpbmcgc291cmNlIGZpbGUgdGhhdCBkb2VzIG5vdCBoYXZlIGEgZmluaXNo
ZWQgcmVzb3VyY2UgeWV0LgorICAgICAgICAgICAgICAgICAgICAvLyBTb3VyY2UgZmlsZSBjb250
ZW50IHNob3VsZCBiZSB1cGRhdGVkIHdpdGggcGFyc2VkIHNjcmlwdCBzb3VyY2UuCisgICAgICAg
ICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5E
ZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLkV2ZW50cy5Tb3VyY2VGaWxlQ2hhbmdlZCwgdGhpcy5f
c291cmNlRmlsZXNbc2NyaXB0LnNvdXJjZVVSTF0pOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKHJlc291cmNlLmZpbmlzaGVkKSB7
CisgICAgICAgICAgICAgICAgICAgIC8vIENyZWF0ZSBzb3VyY2UgZmlsZSBpbW1lZGlhdGVseSBz
aW5jZSByZXNvdXJjZSBpcyBhbHJlYWR5IGZpbmlzaGVkIGFuZCB3ZSBjYW4gcmVxdWVzdCBpdHMg
Y29udGVudC4KKyAgICAgICAgICAgICAgICAgICAgdGhpcy5fY3JlYXRlU291cmNlRmlsZShzY3Jp
cHQsIHJlc291cmNlKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
ICAgICAvLyBDcmVhdGUgc291cmNlIGZpbGUgbGF0ZXIgd2hlbiByZXNvdXJjZSBpcyBmaW5pc2hl
ZC4KKyAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2UucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZmlu
aXNoZWQiLCB0aGlzLl9yZXNvdXJjZUxvYWRpbmdGaW5pc2hlZCwgdGhpcyk7CisgICAgICAgICAg
ICAgICAgICAgIHJlc291cmNlLmFkZEV2ZW50TGlzdGVuZXIoImZpbmlzaGVkIiwgdGhpcy5fcmVz
b3VyY2VMb2FkaW5nRmluaXNoZWQsIHRoaXMpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIFdlIGNhbiBjcmVhdGUgc291
cmNlIGZpbGUgZm9yIHRoaXMgc2NyaXB0IGltbWVkaWF0ZWx5IHNpbmNlIGl0IGRvZXMgbm90IGhh
dmUgYSByZXNvdXJjZS4KKyAgICAgICAgICAgIHRoaXMuX2NyZWF0ZVNvdXJjZUZpbGUoc2NyaXB0
KTsKICAgICAgICAgfQogICAgIH0sCiAKQEAgLTczLDYgKzk1LDEzIEBAIFdlYkluc3BlY3Rvci5E
ZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIHNvdXJj
ZUlEID0gZXZlbnQuZGF0YS5zb3VyY2VJRDsKICAgICAgICAgdmFyIG9sZFNvdXJjZSA9IGV2ZW50
LmRhdGEub2xkU291cmNlOwogICAgICAgICB2YXIgc2NyaXB0ID0gV2ViSW5zcGVjdG9yLmRlYnVn
Z2VyTW9kZWwuc2NyaXB0Rm9yU291cmNlSUQoc291cmNlSUQpOworCisgICAgICAgIHZhciByZXNv
dXJjZSA9IFdlYkluc3BlY3Rvci5yZXNvdXJjZUZvclVSTChzY3JpcHQuc291cmNlVVJMKTsKKyAg
ICAgICAgaWYgKHJlc291cmNlKSB7CisgICAgICAgICAgICB2YXIgcmV2ZXJ0SGFuZGxlID0gV2Vi
SW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuZWRpdFNjcmlwdFNvdXJjZS5iaW5kKFdlYkluc3BlY3Rv
ci5kZWJ1Z2dlck1vZGVsLCBzY3JpcHQuc291cmNlSUQsIG9sZFNvdXJjZSk7CisgICAgICAgICAg
ICByZXNvdXJjZS5zZXRDb250ZW50KHNjcmlwdC5zb3VyY2UsIHJldmVydEhhbmRsZSk7CisgICAg
ICAgIH0KKwogICAgICAgICB2YXIgc291cmNlRmlsZUlkID0gc2NyaXB0LnNvdXJjZVVSTCB8fCBz
Y3JpcHQuc291cmNlSUQ7CiAKICAgICAgICAgLy8gQ2xlYXIgYW5kIHJlLWNyZWF0ZSBicmVha3Bv
aW50cyBhY2NvcmRpbmcgdG8gdGV4dCBkaWZmLgpAQCAtMTAxLDYgKzEzMCw1MSBAQCBXZWJJbnNw
ZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAg
ICBpZiAobmV3TGluZU51bWJlciAhPT0gdW5kZWZpbmVkKQogICAgICAgICAgICAgICAgIHRoaXMu
c2V0QnJlYWtwb2ludChzb3VyY2VGaWxlSWQsIG5ld0xpbmVOdW1iZXIsIGJyZWFrcG9pbnQuY29u
ZGl0aW9uLCBicmVha3BvaW50LmVuYWJsZWQpOwogICAgICAgICB9CisKKyAgICAgICAgdGhpcy5k
aXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9u
TW9kZWwuRXZlbnRzLlNvdXJjZUZpbGVDaGFuZ2VkLCB0aGlzLl9zb3VyY2VGaWxlc1tzb3VyY2VG
aWxlSWRdKTsKKyAgICB9LAorCisgICAgX2NyZWF0ZVNvdXJjZUZpbGU6IGZ1bmN0aW9uKHNjcmlw
dCwgcmVzb3VyY2UpCisgICAgeworICAgICAgICBpZiAoc2NyaXB0LnNvdXJjZVVSTCAmJiBzY3Jp
cHQuc291cmNlVVJMIGluIHRoaXMuX3NvdXJjZUZpbGVzKSB7CisgICAgICAgICAgICAvLyBXZSBh
bHJlYWR5IGhhdmUgc291cmNlIGZpbGUgZm9yIHRoaXMgdXJsLgorICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisKKyAgICAgICAgdmFyIHNvdXJjZUZpbGUgPSB7IGlkOiBzY3JpcHQuc291
cmNlVVJMIHx8IHNjcmlwdC5zb3VyY2VJRCB9OworICAgICAgICBzb3VyY2VGaWxlLnVybCA9IHNj
cmlwdC5zb3VyY2VVUkw7CisgICAgICAgIHNvdXJjZUZpbGUuaXNFeHRlbnNpb25TY3JpcHQgPSBz
Y3JpcHQud29ybGRUeXBlID09PSBXZWJJbnNwZWN0b3IuU2NyaXB0LldvcmxkVHlwZS5FWFRFTlNJ
T05TX1dPUkxEOworICAgICAgICBzb3VyY2VGaWxlLnNjcmlwdCA9IHNjcmlwdDsKKyAgICAgICAg
c291cmNlRmlsZS5yZXNvdXJjZSA9IHJlc291cmNlOworICAgICAgICBzb3VyY2VGaWxlLl9icmVh
a3BvaW50cyA9IHt9OworICAgICAgICB0aGlzLl9zb3VyY2VGaWxlc1tzb3VyY2VGaWxlLmlkXSA9
IHNvdXJjZUZpbGU7CisKKyAgICAgICAgdmFyIGJyZWFrcG9pbnRzID0gV2ViSW5zcGVjdG9yLmRl
YnVnZ2VyTW9kZWwuYnJlYWtwb2ludHM7CisgICAgICAgIGZvciAodmFyIGlkIGluIGJyZWFrcG9p
bnRzKSB7CisgICAgICAgICAgICBpZiAoIShpZCBpbiB0aGlzLl9wcmVzZW50YXRpb25CcmVha3Bv
aW50cykpCisgICAgICAgICAgICAgICAgdGhpcy5fYnJlYWtwb2ludEFkZGVkKGJyZWFrcG9pbnRz
W2lkXSk7CisgICAgICAgIH0KKworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVy
cyhXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5FdmVudHMuU291cmNlRmls
ZUFkZGVkLCBzb3VyY2VGaWxlKTsKKyAgICB9LAorCisgICAgX3Jlc291cmNlRm9yVVJMOiBmdW5j
dGlvbih1cmwpCisgICAgeworICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLm5ldHdvcmtNYW5h
Z2VyLmluZmxpZ2h0UmVzb3VyY2VGb3JVUkwodXJsKSB8fCBXZWJJbnNwZWN0b3IucmVzb3VyY2VG
b3JVUkwodXJsKTsKKyAgICB9LAorCisgICAgX3Jlc291cmNlTG9hZGluZ0ZpbmlzaGVkOiBmdW5j
dGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHZhciByZXNvdXJjZSA9IGV2ZW50LnRhcmdldDsK
KworICAgICAgICB2YXIgc291cmNlRmlsZSA9IHRoaXMuX3NvdXJjZUZpbGVzW3Jlc291cmNlLnVy
bF07CisgICAgICAgIGlmIChzb3VyY2VGaWxlKSB7CisgICAgICAgICAgICBzb3VyY2VGaWxlLnJl
c291cmNlID0gcmVzb3VyY2U7CisgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3Rl
bmVycyhXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5FdmVudHMuU291cmNl
RmlsZUNoYW5nZWQsIHNvdXJjZUZpbGUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
dmFyIHNjcmlwdCA9IFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLnNjcmlwdHNGb3JVUkwocmVz
b3VyY2UudXJsKVswXTsKKyAgICAgICAgICAgIHRoaXMuX2NyZWF0ZVNvdXJjZUZpbGUoc2NyaXB0
LCByZXNvdXJjZSk7CisgICAgICAgIH0KICAgICB9LAogCiAgICAgY29udGludWVUb0xpbmU6IGZ1
bmN0aW9uKHNvdXJjZUZpbGVJZCwgbGluZU51bWJlcikKQEAgLTExMiwxMiArMTg2LDEyIEBAIFdl
Ykluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZSA9IHsKIAogICAg
IGJyZWFrcG9pbnRzRm9yU291cmNlRmlsZUlkOiBmdW5jdGlvbihzb3VyY2VGaWxlSWQpCiAgICAg
eworICAgICAgICB2YXIgc291cmNlRmlsZSA9IHRoaXMuX3NvdXJjZUZpbGVzW3NvdXJjZUZpbGVJ
ZF07CisgICAgICAgIGlmICghc291cmNlRmlsZSkKKyAgICAgICAgICAgIHJldHVybiBbXTsKICAg
ICAgICAgdmFyIGJyZWFrcG9pbnRzID0gW107Ci0gICAgICAgIGZvciAodmFyIGlkIGluIHRoaXMu
X3ByZXNlbnRhdGlvbkJyZWFrcG9pbnRzKSB7Ci0gICAgICAgICAgICB2YXIgYnJlYWtwb2ludCA9
IHRoaXMuX3ByZXNlbnRhdGlvbkJyZWFrcG9pbnRzW2lkXTsKLSAgICAgICAgICAgIGlmIChicmVh
a3BvaW50LnNvdXJjZUZpbGVJZCA9PT0gc291cmNlRmlsZUlkKQotICAgICAgICAgICAgICAgIGJy
ZWFrcG9pbnRzLnB1c2goYnJlYWtwb2ludCk7Ci0gICAgICAgIH0KKyAgICAgICAgZm9yICh2YXIg
bGluZU51bWJlciBpbiBzb3VyY2VGaWxlLl9icmVha3BvaW50cykKKyAgICAgICAgICAgIGJyZWFr
cG9pbnRzLnB1c2goc291cmNlRmlsZS5fYnJlYWtwb2ludHNbbGluZU51bWJlcl0pOwogICAgICAg
ICByZXR1cm4gYnJlYWtwb2ludHM7CiAgICAgfSwKIApAQCAtMTYwLDE4ICsyMzQsMjAgQEAgV2Vi
SW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlID0gewogCiAgICAg
ZmluZEJyZWFrcG9pbnQ6IGZ1bmN0aW9uKHNvdXJjZUZpbGVJZCwgbGluZU51bWJlcikKICAgICB7
Ci0gICAgICAgIHZhciBlbmNvZGVkU291cmNlTG9jYXRpb24gPSB0aGlzLl9lbmNvZGVTb3VyY2VM
b2NhdGlvbihzb3VyY2VGaWxlSWQsIGxpbmVOdW1iZXIpOwotICAgICAgICByZXR1cm4gdGhpcy5f
c291cmNlTG9jYXRpb25Ub0JyZWFrcG9pbnRbZW5jb2RlZFNvdXJjZUxvY2F0aW9uXTsKKyAgICAg
ICAgdmFyIHNvdXJjZUZpbGUgPSB0aGlzLl9zb3VyY2VGaWxlc1tzb3VyY2VGaWxlSWRdOworICAg
ICAgICBpZiAoc291cmNlRmlsZSkKKyAgICAgICAgICAgIHJldHVybiBzb3VyY2VGaWxlLl9icmVh
a3BvaW50c1tsaW5lTnVtYmVyXTsKICAgICB9LAogCiAgICAgX2JyZWFrcG9pbnRBZGRlZDogZnVu
Y3Rpb24oYnJlYWtwb2ludCkKICAgICB7CiAgICAgICAgIHZhciBsb2NhdGlvbiA9IGJyZWFrcG9p
bnQubG9jYXRpb25zLmxlbmd0aCA/IGJyZWFrcG9pbnQubG9jYXRpb25zWzBdIDogYnJlYWtwb2lu
dDsKLSAgICAgICAgdmFyIHNvdXJjZUxvY2F0aW9uID0gdGhpcy5fYWN0dWFsTG9jYXRpb25Ub1Nv
dXJjZUxvY2F0aW9uKGJyZWFrcG9pbnQudXJsIHx8IGJyZWFrcG9pbnQuc291cmNlSUQsIGxvY2F0
aW9uLmxpbmVOdW1iZXIsIGxvY2F0aW9uLmNvbHVtbk51bWJlcik7CisgICAgICAgIHZhciBzb3Vy
Y2VMb2NhdGlvbiA9IHRoaXMuX2FjdHVhbExvY2F0aW9uVG9Tb3VyY2VMb2NhdGlvbihicmVha3Bv
aW50LnVybCwgYnJlYWtwb2ludC5zb3VyY2VJRCwgbG9jYXRpb24ubGluZU51bWJlciwgbG9jYXRp
b24uY29sdW1uTnVtYmVyKTsKKyAgICAgICAgaWYgKCFzb3VyY2VMb2NhdGlvbikKKyAgICAgICAg
ICAgIHJldHVybjsKIAotICAgICAgICB2YXIgZW5jb2RlZFNvdXJjZUxvY2F0aW9uID0gdGhpcy5f
ZW5jb2RlU291cmNlTG9jYXRpb24oc291cmNlTG9jYXRpb24uc291cmNlRmlsZUlkLCBzb3VyY2VM
b2NhdGlvbi5saW5lTnVtYmVyKTsKLSAgICAgICAgaWYgKGVuY29kZWRTb3VyY2VMb2NhdGlvbiBp
biB0aGlzLl9zb3VyY2VMb2NhdGlvblRvQnJlYWtwb2ludCkgewotICAgICAgICAgICAgLy8gV2Ug
Y2FuJ3Qgc2hvdyBtb3JlIHRoYW4gb25lIGJyZWFrcG9pbnQgb24gYSBzaW5nbGUgc291cmNlIGZy
YW1lIGxpbmUuCisgICAgICAgIGlmICh0aGlzLmZpbmRCcmVha3BvaW50KHNvdXJjZUxvY2F0aW9u
LnNvdXJjZUZpbGVJZCwgc291cmNlTG9jYXRpb24ubGluZU51bWJlcikpIHsKKyAgICAgICAgICAg
IC8vIFdlIGNhbid0IHNob3cgbW9yZSB0aGFuIG9uZSBicmVha3BvaW50IG9uIGEgc2luZ2xlIHNv
dXJjZSBmaWxlIGxpbmUuCiAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5y
ZW1vdmVCcmVha3BvaW50KGJyZWFrcG9pbnQuaWQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CkBAIC0xODMsMTUgKzI1OSwxNCBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50
YXRpb25Nb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXNvbHZlZDogISFicmVha3Bv
aW50LmxvY2F0aW9ucy5sZW5ndGgsCiAgICAgICAgICAgICBjb25kaXRpb246IGJyZWFrcG9pbnQu
Y29uZGl0aW9uLAogICAgICAgICAgICAgZW5hYmxlZDogYnJlYWtwb2ludC5lbmFibGVkLAotICAg
ICAgICAgICAgX2lkOiBicmVha3BvaW50LmlkLAotICAgICAgICAgICAgX2VuY29kZWRTb3VyY2VM
b2NhdGlvbjogZW5jb2RlZFNvdXJjZUxvY2F0aW9uCisgICAgICAgICAgICBfaWQ6IGJyZWFrcG9p
bnQuaWQKICAgICAgICAgfTsKICAgICAgICAgaWYgKGxvY2F0aW9uLnNvdXJjZUlEKSB7CiAgICAg
ICAgICAgICB2YXIgc2NyaXB0ID0gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuc2NyaXB0Rm9y
U291cmNlSUQobG9jYXRpb24uc291cmNlSUQpOwogICAgICAgICAgICAgcHJlc2VudGF0aW9uQnJl
YWtwb2ludC5sb2FkU25pcHBldCA9IHNjcmlwdC5zb3VyY2VMaW5lLmJpbmQoc2NyaXB0LCBsb2Nh
dGlvbi5saW5lTnVtYmVyKTsKICAgICAgICAgfQogCi0gICAgICAgIHRoaXMuX3NvdXJjZUxvY2F0
aW9uVG9CcmVha3BvaW50W2VuY29kZWRTb3VyY2VMb2NhdGlvbl0gPSBwcmVzZW50YXRpb25CcmVh
a3BvaW50OworICAgICAgICB0aGlzLl9zb3VyY2VGaWxlc1tzb3VyY2VMb2NhdGlvbi5zb3VyY2VG
aWxlSWRdLl9icmVha3BvaW50c1tzb3VyY2VMb2NhdGlvbi5saW5lTnVtYmVyXSA9IHByZXNlbnRh
dGlvbkJyZWFrcG9pbnQ7CiAgICAgICAgIHRoaXMuX3ByZXNlbnRhdGlvbkJyZWFrcG9pbnRzW2Jy
ZWFrcG9pbnQuaWRdID0gcHJlc2VudGF0aW9uQnJlYWtwb2ludDsKICAgICAgICAgdGhpcy5kaXNw
YXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9k
ZWwuRXZlbnRzLkJyZWFrcG9pbnRBZGRlZCwgcHJlc2VudGF0aW9uQnJlYWtwb2ludCk7CiAgICAg
fSwKQEAgLTIwMCwyNyArMjc1LDI0IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlv
bk1vZGVsLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIHZhciBicmVha3BvaW50ID0gdGhp
cy5fcHJlc2VudGF0aW9uQnJlYWtwb2ludHNbYnJlYWtwb2ludElkXTsKICAgICAgICAgZGVsZXRl
IHRoaXMuX3ByZXNlbnRhdGlvbkJyZWFrcG9pbnRzW2JyZWFrcG9pbnRJZF07Ci0gICAgICAgIGRl
bGV0ZSB0aGlzLl9zb3VyY2VMb2NhdGlvblRvQnJlYWtwb2ludFticmVha3BvaW50Ll9lbmNvZGVk
U291cmNlTG9jYXRpb25dOworICAgICAgICBkZWxldGUgdGhpcy5fc291cmNlRmlsZXNbYnJlYWtw
b2ludC5zb3VyY2VGaWxlSWRdLl9icmVha3BvaW50c1ticmVha3BvaW50LmxpbmVOdW1iZXJdOwog
ICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRGVidWdn
ZXJQcmVzZW50YXRpb25Nb2RlbC5FdmVudHMuQnJlYWtwb2ludFJlbW92ZWQsIGJyZWFrcG9pbnQp
OwogICAgIH0sCiAKICAgICBfYnJlYWtwb2ludFJlc29sdmVkOiBmdW5jdGlvbihldmVudCkKICAg
ICB7CiAgICAgICAgIHZhciBicmVha3BvaW50ID0gZXZlbnQuZGF0YTsKKyAgICAgICAgaWYgKCEo
YnJlYWtwb2ludC5pZCBpbiB0aGlzLl9wcmVzZW50YXRpb25CcmVha3BvaW50cykpCisgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnRSZW1vdmVkKGJyZWFrcG9pbnQu
aWQpOwogICAgICAgICB0aGlzLl9icmVha3BvaW50QWRkZWQoYnJlYWtwb2ludCk7CiAgICAgfSwK
IAotICAgIF9lbmNvZGVTb3VyY2VMb2NhdGlvbjogZnVuY3Rpb24oc291cmNlRmlsZUlkLCBsaW5l
TnVtYmVyKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHNvdXJjZUZpbGVJZCArICI6IiArIGxpbmVO
dW1iZXI7Ci0gICAgfSwKLQogICAgIF9yZXN0b3JlQnJlYWtwb2ludHM6IGZ1bmN0aW9uKCkKICAg
ICB7CiAgICAgICAgIGZ1bmN0aW9uIGRpZFNldEJyZWFrcG9pbnQoYnJlYWtwb2ludCkKICAgICAg
ICAgewotICAgICAgICAgICAgaWYgKGJyZWFrcG9pbnQgJiYgV2ViSW5zcGVjdG9yLmRlYnVnZ2Vy
TW9kZWwuc2NyaXB0c0ZvclVSTChicmVha3BvaW50LnVybCkubGVuZ3RoKQorICAgICAgICAgICAg
aWYgKGJyZWFrcG9pbnQpCiAgICAgICAgICAgICAgICAgdGhpcy5fYnJlYWtwb2ludEFkZGVkKGJy
ZWFrcG9pbnQpOwogICAgICAgICB9CiAgICAgICAgIHZhciBicmVha3BvaW50cyA9IFdlYkluc3Bl
Y3Rvci5zZXR0aW5ncy5icmVha3BvaW50czsKQEAgLTI1OCw3ICszMzAsMTIgQEAgV2ViSW5zcGVj
dG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlID0gewogICAgICAgICBpZiAo
IWNhbGxGcmFtZSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgdmFyIHNjcmlwdCA9IFdl
Ykluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLnNjcmlwdEZvclNvdXJjZUlEKGNhbGxGcmFtZS5zb3Vy
Y2VJRCk7Ci0gICAgICAgIGNhbGxGcmFtZS5zb3VyY2VMb2NhdGlvbiA9IHRoaXMuX2FjdHVhbExv
Y2F0aW9uVG9Tb3VyY2VMb2NhdGlvbihzY3JpcHQuc291cmNlVVJMIHx8IHNjcmlwdC5zb3VyY2VJ
RCwgY2FsbEZyYW1lLmxpbmUsIGNhbGxGcmFtZS5jb2x1bW4pOworICAgICAgICBpZiAoc2NyaXB0
ICYmIHNjcmlwdC5zb3VyY2VVUkwgJiYgIShzY3JpcHQuc291cmNlVVJMIGluIHRoaXMuX3NvdXJj
ZUZpbGVzKSkgeworICAgICAgICAgICAgLy8gRGVidWdnZXIgcGF1c2VkIGJlZm9yZSBzY3JpcHQg
cmVzb3VyY2Ugd2FzIGZpbmlzaGVkLiBXZSBuZWVkIHRvIGNyZWF0ZQorICAgICAgICAgICAgLy8g
dGVtcG9yYXJ5IHNvdXJjZSBmaWxlIGltbWVkaWF0ZWx5IChpdCB3aWxsIGJlIHJlcGxhY2VkIGxh
dGVyIHdoZW4gcmVzb3VyY2UgaXMgZmluaXNoZWQpLgorICAgICAgICAgICAgdGhpcy5fY3JlYXRl
U291cmNlRmlsZShzY3JpcHQpOworICAgICAgICB9CisgICAgICAgIGNhbGxGcmFtZS5zb3VyY2VM
b2NhdGlvbiA9IHRoaXMuX2FjdHVhbExvY2F0aW9uVG9Tb3VyY2VMb2NhdGlvbihzY3JpcHQuc291
cmNlVVJMLCBzY3JpcHQuc291cmNlSUQsIGNhbGxGcmFtZS5saW5lLCBjYWxsRnJhbWUuY29sdW1u
KTsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRl
YnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuRXZlbnRzLkNhbGxGcmFtZVNlbGVjdGVkLCBjYWxsRnJh
bWUpOwogICAgIH0sCiAKQEAgLTI2NywxMCArMzQ0LDEyIEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dl
clByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3Nl
bGVjdGVkQ2FsbEZyYW1lOwogICAgIH0sCiAKLSAgICBfYWN0dWFsTG9jYXRpb25Ub1NvdXJjZUxv
Y2F0aW9uOiBmdW5jdGlvbihzb3VyY2VJRCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKQorICAg
IF9hY3R1YWxMb2NhdGlvblRvU291cmNlTG9jYXRpb246IGZ1bmN0aW9uKHNjcmlwdFVSTCwgc2Ny
aXB0SWQsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICB7CiAgICAgICAgIC8vIFRPRE86
IHVzZSBzb3VyY2UgbWFwcGluZyB0byBvYnRhaW4gc291cmNlIGxvY2F0aW9uLgotICAgICAgICBy
ZXR1cm4geyBzb3VyY2VGaWxlSWQ6IHNvdXJjZUlELCBsaW5lTnVtYmVyOiBsaW5lTnVtYmVyLCBj
b2x1bW5OdW1iZXI6IGNvbHVtbk51bWJlciB9OworICAgICAgICB2YXIgc291cmNlRmlsZUlkID0g
c2NyaXB0VVJMIHx8IHNjcmlwdElkOworICAgICAgICBpZiAoc291cmNlRmlsZUlkIGluIHRoaXMu
X3NvdXJjZUZpbGVzKQorICAgICAgICAgICAgcmV0dXJuIHsgc291cmNlRmlsZUlkOiBzb3VyY2VG
aWxlSWQsIGxpbmVOdW1iZXI6IGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcjogY29sdW1uTnVtYmVy
IH07CiAgICAgfSwKIAogICAgIF9zb3VyY2VMb2NhdGlvblRvQWN0dWFsTG9jYXRpb246IGZ1bmN0
aW9uKHNvdXJjZUZpbGVJZCwgbGluZU51bWJlcikKQEAgLTI4Nyw3ICszNjYsNyBAQCBXZWJJbnNw
ZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgcmVzZXQ6
IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHRoaXMuX3ByZXNlbnRhdGlvbkJyZWFrcG9pbnRz
ID0ge307Ci0gICAgICAgIHRoaXMuX3NvdXJjZUxvY2F0aW9uVG9CcmVha3BvaW50ID0ge307Cisg
ICAgICAgIHRoaXMuX3NvdXJjZUZpbGVzID0ge307CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCmluZGV4IDdkNzJm
ZDcuLmFiYmEyNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvU2NyaXB0c1BhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvU2NyaXB0c1BhbmVsLmpzCkBAIC0xODcsMTEgKzE4NywxMSBAQCBXZWJJbnNwZWN0b3IuU2Ny
aXB0c1BhbmVsID0gZnVuY3Rpb24oKQogCiAgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwu
YWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5FdmVudHMuRGVidWdn
ZXJXYXNFbmFibGVkLCB0aGlzLl9kZWJ1Z2dlcldhc0VuYWJsZWQsIHRoaXMpOwogICAgIFdlYklu
c3BlY3Rvci5kZWJ1Z2dlck1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRlYnVn
Z2VyTW9kZWwuRXZlbnRzLkRlYnVnZ2VyV2FzRGlzYWJsZWQsIHRoaXMuX2RlYnVnZ2VyV2FzRGlz
YWJsZWQsIHRoaXMpOwotICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLmFkZEV2ZW50TGlz
dGVuZXIoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuRXZlbnRzLlBhcnNlZFNjcmlwdFNvdXJj
ZSwgdGhpcy5fcGFyc2VkU2NyaXB0U291cmNlLCB0aGlzKTsKLSAgICBXZWJJbnNwZWN0b3IuZGVi
dWdnZXJNb2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkV2
ZW50cy5GYWlsZWRUb1BhcnNlU2NyaXB0U291cmNlLCB0aGlzLl9mYWlsZWRUb1BhcnNlU2NyaXB0
U291cmNlLCB0aGlzKTsKLSAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5hZGRFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkV2ZW50cy5TY3JpcHRTb3VyY2VDaGFu
Z2VkLCB0aGlzLl9zY3JpcHRTb3VyY2VDaGFuZ2VkLCB0aGlzKTsKICAgICBXZWJJbnNwZWN0b3Iu
ZGVidWdnZXJNb2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVs
LkV2ZW50cy5EZWJ1Z2dlclBhdXNlZCwgdGhpcy5fZGVidWdnZXJQYXVzZWQsIHRoaXMpOwogICAg
IFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9y
LkRlYnVnZ2VyTW9kZWwuRXZlbnRzLkRlYnVnZ2VyUmVzdW1lZCwgdGhpcy5fZGVidWdnZXJSZXN1
bWVkLCB0aGlzKTsKKworICAgIHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLmFkZEV2ZW50TGlzdGVu
ZXIoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuRXZlbnRzLlNvdXJjZUZp
bGVBZGRlZCwgdGhpcy5fc291cmNlRmlsZUFkZGVkLCB0aGlzKQorICAgIHRoaXMuX3ByZXNlbnRh
dGlvbk1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0
aW9uTW9kZWwuRXZlbnRzLlNvdXJjZUZpbGVDaGFuZ2VkLCB0aGlzLl9zb3VyY2VGaWxlQ2hhbmdl
ZCwgdGhpcyk7CiAgICAgdGhpcy5fcHJlc2VudGF0aW9uTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihX
ZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5FdmVudHMuQnJlYWtwb2ludEFk
ZGVkLCB0aGlzLl9icmVha3BvaW50QWRkZWQsIHRoaXMpOwogICAgIHRoaXMuX3ByZXNlbnRhdGlv
bk1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9u
TW9kZWwuRXZlbnRzLkJyZWFrcG9pbnRSZW1vdmVkLCB0aGlzLl9icmVha3BvaW50UmVtb3ZlZCwg
dGhpcyk7CiAgICAgdGhpcy5fcHJlc2VudGF0aW9uTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJ
bnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5FdmVudHMuQ2FsbEZyYW1lU2VsZWN0
ZWQsIHRoaXMuX2NhbGxGcmFtZVNlbGVjdGVkLCB0aGlzKTsKQEAgLTI0NiwxMTEgKzI0NiwzNiBA
QCBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJu
IHRoaXMudG9nZ2xlQnJlYWtwb2ludHNCdXR0b24udG9nZ2xlZDsKICAgICB9LAogCi0gICAgX3Bh
cnNlZFNjcmlwdFNvdXJjZTogZnVuY3Rpb24oZXZlbnQpCi0gICAgewotICAgICAgICB0aGlzLl9h
ZGRTY3JpcHQoZXZlbnQuZGF0YSk7Ci0gICAgfSwKLQotICAgIF9mYWlsZWRUb1BhcnNlU2NyaXB0
U291cmNlOiBmdW5jdGlvbihldmVudCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX2FkZFNjcmlwdChl
dmVudC5kYXRhKTsKLSAgICB9LAotCi0gICAgX3NjcmlwdFNvdXJjZUNoYW5nZWQ6IGZ1bmN0aW9u
KGV2ZW50KQorICAgIF9zb3VyY2VGaWxlQWRkZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAg
ICAgICAgdmFyIHNvdXJjZUlEID0gZXZlbnQuZGF0YS5zb3VyY2VJRDsKLSAgICAgICAgdmFyIG9s
ZFNvdXJjZSA9IGV2ZW50LmRhdGEub2xkU291cmNlOwotCi0gICAgICAgIHZhciBzY3JpcHQgPSBX
ZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5zY3JpcHRGb3JTb3VyY2VJRChzb3VyY2VJRCk7Ci0g
ICAgICAgIGlmIChzY3JpcHQucmVzb3VyY2UpIHsKLSAgICAgICAgICAgIHZhciByZXZlcnRIYW5k
bGUgPSBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5lZGl0U2NyaXB0U291cmNlLmJpbmQoV2Vi
SW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwsIHNvdXJjZUlELCBvbGRTb3VyY2UpOwotICAgICAgICAg
ICAgc2NyaXB0LnJlc291cmNlLnNldENvbnRlbnQoc2NyaXB0LnNvdXJjZSwgcmV2ZXJ0SGFuZGxl
KTsKLSAgICAgICAgfQotCi0gICAgICAgIHZhciBzb3VyY2VGaWxlSWQgPSB0aGlzLl9zb3VyY2VG
aWxlSWRGb3JTY3JpcHQoc2NyaXB0KTsKLSAgICAgICAgdGhpcy5fcmVjcmVhdGVTb3VyY2VGcmFt
ZShzb3VyY2VGaWxlSWQpOwotICAgIH0sCisgICAgICAgIHZhciBzb3VyY2VGaWxlID0gZXZlbnQu
ZGF0YTsKIAotICAgIF9hZGRTY3JpcHQ6IGZ1bmN0aW9uKHNjcmlwdCkKLSAgICB7Ci0gICAgICAg
IGlmICghc2NyaXB0LnNvdXJjZVVSTCkgewotICAgICAgICAgICAgLy8gQW5vbnltb3VzIHNjcmlw
dHMgYXJlIHNob3duIG9ubHkgd2hlbiBzdGVwcGluZy4KKyAgICAgICAgaWYgKCFzb3VyY2VGaWxl
LnVybCkgeworICAgICAgICAgICAgLy8gQW5vbnltb3VzIHNvdXJjZXMgYXJlIHNob3duIG9ubHkg
d2hlbiBzdGVwcGluZy4KICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAg
IHZhciByZXNvdXJjZSA9IHRoaXMuX3Jlc291cmNlRm9yVVJMKHNjcmlwdC5zb3VyY2VVUkwpOwot
ICAgICAgICBpZiAocmVzb3VyY2UpIHsKLSAgICAgICAgICAgIGlmIChyZXNvdXJjZS5maW5pc2hl
ZCkgewotICAgICAgICAgICAgICAgIC8vIFJlc291cmNlIGlzIGZpbmlzaGVkLCBiaW5kIHRoZSBz
Y3JpcHQgcmlnaHQgYXdheS4KLSAgICAgICAgICAgICAgICBzY3JpcHQucmVzb3VyY2UgPSByZXNv
dXJjZTsKLQotICAgICAgICAgICAgICAgIC8vIEFkZCByZXNvdXJjZSB1cmwgdG8gZmlsZXMgc2Vs
ZWN0IGlmIG5vdCBhbHJlYWR5IGFkZGVkIHdoaWxlIGRlYnVnZ2luZyBpbmxpbmVkIHNjcmlwdHMu
Ci0gICAgICAgICAgICAgICAgaWYgKCEocmVzb3VyY2UudXJsIGluIHRoaXMuX3NvdXJjZUZpbGVJ
ZFRvRmlsZXNTZWxlY3RPcHRpb24pKQotICAgICAgICAgICAgICAgICAgICB0aGlzLl9hZGRPcHRp
b25Ub0ZpbGVzU2VsZWN0QW5kU2hvd1NvdXJjZUZyYW1lSWZOZWVkZWQocmVzb3VyY2UudXJsKTsK
LSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgLy8gUmVzb3VyY2UgaXMgbm90
IGZpbmlzaGVkLCBiaW5kIHRoZSBzY3JpcHQgbGF0ZXIuCi0gICAgICAgICAgICAgICAgaWYgKCFy
ZXNvdXJjZS5fc2NyaXB0c1BlbmRpbmdSZXNvdXJjZUxvYWQpIHsKLSAgICAgICAgICAgICAgICAg
ICAgcmVzb3VyY2UuX3NjcmlwdHNQZW5kaW5nUmVzb3VyY2VMb2FkID0gW107Ci0gICAgICAgICAg
ICAgICAgICAgIHJlc291cmNlLmFkZEV2ZW50TGlzdGVuZXIoImZpbmlzaGVkIiwgdGhpcy5fcmVz
b3VyY2VMb2FkaW5nRmluaXNoZWQsIHRoaXMpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICByZXNvdXJjZS5fc2NyaXB0c1BlbmRpbmdSZXNvdXJjZUxvYWQucHVzaChzY3JpcHQp
OwotCi0gICAgICAgICAgICAgICAgLy8gU291cmNlIGZyYW1lIGNvbnRlbnQgaXMgb3V0ZGF0ZWQg
c2luY2Ugd2UgaGF2ZSBuZXcgc2NyaXB0IHBhcnNlZC4KLSAgICAgICAgICAgICAgICB0aGlzLl9y
ZWNyZWF0ZVNvdXJjZUZyYW1lKHNjcmlwdC5zb3VyY2VVUkwpOwotICAgICAgICAgICAgfQotICAg
ICAgICB9IGVsc2UgaWYgKCEoc2NyaXB0LnNvdXJjZVVSTCBpbiB0aGlzLl9zb3VyY2VGaWxlSWRU
b0ZpbGVzU2VsZWN0T3B0aW9uKSkgewotICAgICAgICAgICAgLy8gVGhpcyBpcyBhIGR5bmFtaWMg
c2NyaXB0IHdpdGggIi8vQCBzb3VyY2VVUkw9IiBjb21tZW50LgotICAgICAgICAgICAgdGhpcy5f
YWRkT3B0aW9uVG9GaWxlc1NlbGVjdEFuZFNob3dTb3VyY2VGcmFtZUlmTmVlZGVkKHNjcmlwdC5z
b3VyY2VVUkwpOwotICAgICAgICB9Ci0gICAgfSwKLQotICAgIF9yZXNvdXJjZUZvclVSTDogZnVu
Y3Rpb24odXJsKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5uZXR3b3JrTWFu
YWdlci5pbmZsaWdodFJlc291cmNlRm9yVVJMKHVybCkgfHwgV2ViSW5zcGVjdG9yLnJlc291cmNl
Rm9yVVJMKHVybCk7Ci0gICAgfSwKLQotICAgIF9yZXNvdXJjZUxvYWRpbmdGaW5pc2hlZDogZnVu
Y3Rpb24oZSkKLSAgICB7Ci0gICAgICAgIHZhciByZXNvdXJjZSA9IGUudGFyZ2V0OwotCi0gICAg
ICAgIC8vIEJpbmQgc2NyaXB0cyB0byByZXNvdXJjZS4KLSAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCByZXNvdXJjZS5fc2NyaXB0c1BlbmRpbmdSZXNvdXJjZUxvYWQubGVuZ3RoOyArK2kpIHsK
LSAgICAgICAgICAgIHZhciBzY3JpcHQgPSByZXNvdXJjZS5fc2NyaXB0c1BlbmRpbmdSZXNvdXJj
ZUxvYWRbaV07Ci0gICAgICAgICAgICBzY3JpcHQucmVzb3VyY2UgPSByZXNvdXJjZTsKLSAgICAg
ICAgfQotICAgICAgICBkZWxldGUgcmVzb3VyY2UuX3NjcmlwdHNQZW5kaW5nUmVzb3VyY2VMb2Fk
OwotCi0gICAgICAgIC8vIFJlY3JlYXRlIHNvdXJjZSBmcmFtZSB0byBzaG93IHJlc291cmNlIGNv
bnRlbnQuCi0gICAgICAgIHRoaXMuX3JlY3JlYXRlU291cmNlRnJhbWUocmVzb3VyY2UudXJsKTsK
LQotICAgICAgICAvLyBBZGQgcmVzb3VyY2UgdXJsIHRvIGZpbGVzIHNlbGVjdCBpZiBub3QgYWxy
ZWFkeSBhZGRlZCB3aGlsZSBkZWJ1Z2dpbmcgaW5saW5lZCBzY3JpcHRzLgotICAgICAgICBpZiAo
IShyZXNvdXJjZS51cmwgaW4gdGhpcy5fc291cmNlRmlsZUlkVG9GaWxlc1NlbGVjdE9wdGlvbikp
Ci0gICAgICAgICAgICB0aGlzLl9hZGRPcHRpb25Ub0ZpbGVzU2VsZWN0QW5kU2hvd1NvdXJjZUZy
YW1lSWZOZWVkZWQocmVzb3VyY2UudXJsKTsKLSAgICB9LAotCi0gICAgX2FkZE9wdGlvblRvRmls
ZXNTZWxlY3RBbmRTaG93U291cmNlRnJhbWVJZk5lZWRlZDogZnVuY3Rpb24odXJsKQotICAgIHsK
LSAgICAgICAgdGhpcy5fYWRkT3B0aW9uVG9GaWxlc1NlbGVjdCh1cmwpOworICAgICAgICB0aGlz
Ll9hZGRPcHRpb25Ub0ZpbGVzU2VsZWN0KHNvdXJjZUZpbGUuaWQpOwogCiAgICAgICAgIHZhciBs
YXN0Vmlld2VkVVJMID0gV2ViSW5zcGVjdG9yLnNldHRpbmdzLmxhc3RWaWV3ZWRTY3JpcHRGaWxl
OwogICAgICAgICBpZiAodGhpcy5fZmlsZXNTZWxlY3RFbGVtZW50Lmxlbmd0aCA9PT0gMSkgewog
ICAgICAgICAgICAgLy8gT3B0aW9uIHdlIGp1c3QgYWRkZWQgaXMgdGhlIG9ubHkgb3B0aW9uIGlu
IGZpbGVzIHNlbGVjdC4KICAgICAgICAgICAgIC8vIFdlIGhhdmUgdG8gc2hvdyBjb3JyZXNwb25k
aW5nIHNvdXJjZSBmcmFtZSBpbW1lZGlhdGVseS4KLSAgICAgICAgICAgIHRoaXMuX3Nob3dTb3Vy
Y2VGcmFtZUFuZEFkZFRvSGlzdG9yeSh1cmwpOworICAgICAgICAgICAgdGhpcy5fc2hvd1NvdXJj
ZUZyYW1lQW5kQWRkVG9IaXN0b3J5KHNvdXJjZUZpbGUuaWQpOwogICAgICAgICAgICAgLy8gUmVz
dG9yZSBvcmlnaW5hbCB2YWx1ZSBvZiBsYXN0Vmlld2VkU2NyaXB0RmlsZSBiZWNhdXNlCiAgICAg
ICAgICAgICAvLyBzb3VyY2UgZnJhbWUgd2FzIHNob3duIGFzIGEgcmVzdWx0IG9mIGluaXRpYWwg
bG9hZC4KICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5zZXR0aW5ncy5sYXN0Vmlld2VkU2NyaXB0
RmlsZSA9IGxhc3RWaWV3ZWRVUkw7Ci0gICAgICAgIH0gZWxzZSBpZiAodXJsID09PSBsYXN0Vmll
d2VkVVJMKQotICAgICAgICAgICAgdGhpcy5fc2hvd1NvdXJjZUZyYW1lQW5kQWRkVG9IaXN0b3J5
KHVybCk7CisgICAgICAgIH0gZWxzZSBpZiAoc291cmNlRmlsZS51cmwgPT09IGxhc3RWaWV3ZWRV
UkwpCisgICAgICAgICAgICB0aGlzLl9zaG93U291cmNlRnJhbWVBbmRBZGRUb0hpc3Rvcnkoc291
cmNlRmlsZS5pZCk7CiAgICAgfSwKIAogICAgIF9hZGRPcHRpb25Ub0ZpbGVzU2VsZWN0OiBmdW5j
dGlvbihzb3VyY2VGaWxlSWQpCiAgICAgewotICAgICAgICB2YXIgc2NyaXB0ID0gdGhpcy5fc2Ny
aXB0Rm9yU291cmNlRmlsZUlkKHNvdXJjZUZpbGVJZCk7CisgICAgICAgIHZhciBzb3VyY2VGaWxl
ID0gdGhpcy5fcHJlc2VudGF0aW9uTW9kZWwuc291cmNlRmlsZShzb3VyY2VGaWxlSWQpOwogICAg
ICAgICB2YXIgc2VsZWN0ID0gdGhpcy5fZmlsZXNTZWxlY3RFbGVtZW50OwogICAgICAgICB2YXIg
b3B0aW9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib3B0aW9uIik7Ci0gICAgICAgIG9wdGlv
bi50ZXh0ID0gc2NyaXB0LnNvdXJjZVVSTCA/IFdlYkluc3BlY3Rvci5kaXNwbGF5TmFtZUZvclVS
TChzY3JpcHQuc291cmNlVVJMKSA6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiKHByb2dyYW0pIik7
Ci0gICAgICAgIGlmIChzY3JpcHQud29ybGRUeXBlID09PSBXZWJJbnNwZWN0b3IuU2NyaXB0Lldv
cmxkVHlwZS5FWFRFTlNJT05TX1dPUkxEKQorICAgICAgICBvcHRpb24udGV4dCA9IHNvdXJjZUZp
bGUudXJsID8gV2ViSW5zcGVjdG9yLmRpc3BsYXlOYW1lRm9yVVJMKHNvdXJjZUZpbGUudXJsKSA6
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiKHByb2dyYW0pIik7CisgICAgICAgIGlmIChzb3VyY2VG
aWxlLmlzRXh0ZW5zaW9uU2NyaXB0KQogICAgICAgICAgICAgb3B0aW9uLmFkZFN0eWxlQ2xhc3Mo
ImV4dGVuc2lvbi1zY3JpcHQiKTsKICAgICAgICAgZnVuY3Rpb24gb3B0aW9uQ29tcGFyZShhLCBi
KQogICAgICAgICB7CkBAIC01NzIsOSArNDk3LDkgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5l
bC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBzb3VyY2VGcmFtZSA9IHRoaXMuX3NvdXJjZUZy
YW1lRm9yU291cmNlRmlsZUlkKHNvdXJjZUZpbGVJZCk7CiAgICAgICAgIHRoaXMudmlzaWJsZVZp
ZXcgPSBzb3VyY2VGcmFtZTsKIAotICAgICAgICB2YXIgc2NyaXB0ID0gdGhpcy5fc2NyaXB0Rm9y
U291cmNlRmlsZUlkKHNvdXJjZUZpbGVJZCk7Ci0gICAgICAgIGlmIChzY3JpcHQuc291cmNlVVJM
KQotICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnNldHRpbmdzLmxhc3RWaWV3ZWRTY3JpcHRGaWxl
ID0gc2NyaXB0LnNvdXJjZVVSTDsKKyAgICAgICAgdmFyIHNvdXJjZUZpbGUgPSB0aGlzLl9wcmVz
ZW50YXRpb25Nb2RlbC5zb3VyY2VGaWxlKHNvdXJjZUZpbGVJZCk7CisgICAgICAgIGlmIChzb3Vy
Y2VGaWxlLnVybCkKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5zZXR0aW5ncy5sYXN0Vmlld2Vk
U2NyaXB0RmlsZSA9IHNvdXJjZUZpbGUudXJsOwogCiAgICAgICAgIHJldHVybiBzb3VyY2VGcmFt
ZTsKICAgICB9LApAQCAtNTg3LDIzICs1MTIsMjQgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5l
bC5wcm90b3R5cGUgPSB7CiAKICAgICBfY3JlYXRlU291cmNlRnJhbWU6IGZ1bmN0aW9uKHNvdXJj
ZUZpbGVJZCkKICAgICB7Ci0gICAgICAgIHZhciBzY3JpcHQgPSB0aGlzLl9zY3JpcHRGb3JTb3Vy
Y2VGaWxlSWQoc291cmNlRmlsZUlkKTsKLSAgICAgICAgdmFyIGRlbGVnYXRlID0gbmV3IFdlYklu
c3BlY3Rvci5Tb3VyY2VGcmFtZURlbGVnYXRlRm9yU2NyaXB0c1BhbmVsKHRoaXMuX3ByZXNlbnRh
dGlvbk1vZGVsLCBzb3VyY2VGaWxlSWQsIHNjcmlwdCk7Ci0gICAgICAgIHZhciBzb3VyY2VGcmFt
ZSA9IG5ldyBXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUoZGVsZWdhdGUsIHNjcmlwdC5zb3VyY2VV
UkwpOworICAgICAgICB2YXIgc291cmNlRmlsZSA9IHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLnNv
dXJjZUZpbGUoc291cmNlRmlsZUlkKTsKKyAgICAgICAgdmFyIGRlbGVnYXRlID0gbmV3IFdlYklu
c3BlY3Rvci5Tb3VyY2VGcmFtZURlbGVnYXRlRm9yU2NyaXB0c1BhbmVsKHRoaXMuX3ByZXNlbnRh
dGlvbk1vZGVsLCBzb3VyY2VGaWxlSWQpOworICAgICAgICB2YXIgc291cmNlRnJhbWUgPSBuZXcg
V2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lKGRlbGVnYXRlLCBzb3VyY2VGaWxlLnVybCk7CiAgICAg
ICAgIHNvdXJjZUZyYW1lLl9zb3VyY2VGaWxlSWQgPSBzb3VyY2VGaWxlSWQ7CiAgICAgICAgIHNv
dXJjZUZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lLkV2ZW50
cy5Mb2FkZWQsIHRoaXMuX3NvdXJjZUZyYW1lTG9hZGVkLCB0aGlzKTsKICAgICAgICAgdGhpcy5f
c291cmNlRmlsZUlkVG9Tb3VyY2VGcmFtZVtzb3VyY2VGaWxlSWRdID0gc291cmNlRnJhbWU7CiAg
ICAgICAgIHJldHVybiBzb3VyY2VGcmFtZTsKICAgICB9LAogCi0gICAgX3JlY3JlYXRlU291cmNl
RnJhbWU6IGZ1bmN0aW9uKHNvdXJjZUZpbGVJZCkKKyAgICBfc291cmNlRmlsZUNoYW5nZWQ6IGZ1
bmN0aW9uKGV2ZW50KQogICAgIHsKKyAgICAgICAgdmFyIHNvdXJjZUZpbGVJZCA9IGV2ZW50LmRh
dGEuaWQ7CisKICAgICAgICAgdmFyIG9sZFNvdXJjZUZyYW1lID0gdGhpcy5fc291cmNlRmlsZUlk
VG9Tb3VyY2VGcmFtZVtzb3VyY2VGaWxlSWRdOwogICAgICAgICBpZiAoIW9sZFNvdXJjZUZyYW1l
KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBvbGRTb3VyY2VGcmFtZS5yZW1vdmVFdmVu
dExpc3RlbmVyKFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5FdmVudHMuTG9hZGVkLCB0aGlzLl9z
b3VyY2VGcmFtZUxvYWRlZCwgdGhpcyk7CiAgICAgICAgIGRlbGV0ZSB0aGlzLl9zb3VyY2VGaWxl
SWRUb1NvdXJjZUZyYW1lW3NvdXJjZUZpbGVJZF07Ci0gICAgICAgIG9sZFNvdXJjZUZyYW1lLnJl
bW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lLkV2ZW50cy5Mb2FkZWQs
IHRoaXMuX3NvdXJjZUZyYW1lTG9hZGVkLCB0aGlzKTsKICAgICAgICAgaWYgKHRoaXMudmlzaWJs
ZVZpZXcgIT09IG9sZFNvdXJjZUZyYW1lKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC02Mzgs
MjAgKzU2NCw2IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogICAg
ICAgICB9CiAgICAgfSwKIAotICAgIF9zb3VyY2VGaWxlSWRGb3JTY3JpcHQ6IGZ1bmN0aW9uKHNj
cmlwdCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBzY3JpcHQuc291cmNlVVJMIHx8IHNjcmlwdC5z
b3VyY2VJRDsKLSAgICB9LAotCi0gICAgX3NjcmlwdEZvclNvdXJjZUZpbGVJZDogZnVuY3Rpb24o
c291cmNlRmlsZUlkKQotICAgIHsKLSAgICAgICAgZnVuY3Rpb24gZmlsdGVyKHNjcmlwdCkKLSAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIChzY3JpcHQuc291cmNlVVJMIHx8IHNjcmlwdC5z
b3VyY2VJRCkgPT09IHNvdXJjZUZpbGVJZDsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gV2Vi
SW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwucXVlcnlTY3JpcHRzKGZpbHRlcilbMF07Ci0gICAgfSwK
LQogICAgIF9jbGVhckN1cnJlbnRFeGVjdXRpb25MaW5lOiBmdW5jdGlvbigpCiAgICAgewogICAg
ICAgICBpZiAodGhpcy5fZXhlY3V0aW9uU291cmNlRnJhbWUpCkBAIC02NzEsMTEgKzU4MywxMiBA
QCBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5z
aWRlYmFyUGFuZXMuc2NvcGVjaGFpbi51cGRhdGUoY2FsbEZyYW1lKTsKICAgICAgICAgdGhpcy5z
aWRlYmFyUGFuZXMud2F0Y2hFeHByZXNzaW9ucy5yZWZyZXNoRXhwcmVzc2lvbnMoKTsKIAorICAg
ICAgICBpZiAoIWNhbGxGcmFtZS5zb3VyY2VMb2NhdGlvbikKKyAgICAgICAgICAgIHJldHVybjsK
KwogICAgICAgICB2YXIgc291cmNlRmlsZUlkID0gY2FsbEZyYW1lLnNvdXJjZUxvY2F0aW9uLnNv
dXJjZUZpbGVJZDsKICAgICAgICAgaWYgKCEoc291cmNlRmlsZUlkIGluIHRoaXMuX3NvdXJjZUZp
bGVJZFRvRmlsZXNTZWxlY3RPcHRpb24pKSB7Ci0gICAgICAgICAgICAvLyBUaGlzIGhhcHBlbnMg
aW4gdHdvIGNhc2VzOgotICAgICAgICAgICAgLy8gMSkgQ3VycmVudCBjYWxsIGZyYW1lIGZ1bmN0
aW9uIGlzIGRlZmluZWQgaW4gYW5vbnltb3VzIHNjcmlwdCAoYW5vbnltb3VzIHNjcmlwdHMgYXJl
bid0IGFkZGVkIHRvIGZpbGVzIHNlbGVjdCBieSBkZWZhdWx0KQotICAgICAgICAgICAgLy8gMikg
V2UgYXJlIGRlYnVnZ2luZyBzeW5jaHJvbm91c2x5IGV4ZWN1dGVkIGlubGluZWQgc2NyaXB0IGFu
ZCB0aGVyZSBpcyBubyByZXNvdXJjZSBzbyBmYXIKKyAgICAgICAgICAgIC8vIEFub255bW91cyBz
Y3JpcHRzIGFyZSBub3QgYWRkZWQgdG8gZmlsZXMgc2VsZWN0IGJ5IGRlZmF1bHQuCiAgICAgICAg
ICAgICB0aGlzLl9hZGRPcHRpb25Ub0ZpbGVzU2VsZWN0KHNvdXJjZUZpbGVJZCk7CiAgICAgICAg
IH0KICAgICAgICAgdmFyIHNvdXJjZUZyYW1lID0gdGhpcy5fc2hvd1NvdXJjZUZyYW1lQW5kQWRk
VG9IaXN0b3J5KHNvdXJjZUZpbGVJZCk7CkBAIC0xMDUwLDEzICs5NjMsMTYgQEAgV2ViSW5zcGVj
dG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7CiBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVs
LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuUGFuZWwucHJvdG90eXBlOwogCiAK
LVdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZURlbGVnYXRlRm9yU2NyaXB0c1BhbmVsID0gZnVuY3Rp
b24obW9kZWwsIHNvdXJjZUZpbGVJZCwgc2NyaXB0KQorV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1l
RGVsZWdhdGVGb3JTY3JpcHRzUGFuZWwgPSBmdW5jdGlvbihtb2RlbCwgc291cmNlRmlsZUlkKQog
ewogICAgIFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZURlbGVnYXRlLmNhbGwodGhpcyk7CiAgICAg
dGhpcy5fbW9kZWwgPSBtb2RlbDsKICAgICB0aGlzLl9zb3VyY2VGaWxlSWQgPSBzb3VyY2VGaWxl
SWQ7Ci0gICAgdGhpcy5fc2NyaXB0ID0gc2NyaXB0OwogICAgIHRoaXMuX3BvcG92ZXJPYmplY3RH
cm91cCA9ICJwb3BvdmVyIjsKKworICAgIHZhciBzb3VyY2VGaWxlID0gdGhpcy5fbW9kZWwuc291
cmNlRmlsZShzb3VyY2VGaWxlSWQpOworICAgIHRoaXMuX3NjcmlwdCA9IHNvdXJjZUZpbGUuc2Ny
aXB0OworICAgIHRoaXMuX3Jlc291cmNlID0gc291cmNlRmlsZS5yZXNvdXJjZTsKIH0KIAogV2Vi
SW5zcGVjdG9yLlNvdXJjZUZyYW1lRGVsZWdhdGVGb3JTY3JpcHRzUGFuZWwucHJvdG90eXBlID0g
ewpAQCAtMTA2OCw4ICs5ODQsOCBAQCBXZWJJbnNwZWN0b3IuU291cmNlRnJhbWVEZWxlZ2F0ZUZv
clNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBjYWxsYmFjayhtaW1lVHlw
ZSwgdGhpcy5fY29udGVudCk7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAodGhpcy5fc2NyaXB0
LnJlc291cmNlKQotICAgICAgICAgICAgdGhpcy5fbG9hZFJlc291cmNlQ29udGVudCh0aGlzLl9z
Y3JpcHQucmVzb3VyY2UsIGRpZEdldFRleHRBbmRTY3JpcHRSYW5nZXMuYmluZCh0aGlzKSk7Cisg
ICAgICAgIGlmICh0aGlzLl9yZXNvdXJjZSkKKyAgICAgICAgICAgIHRoaXMuX2xvYWRSZXNvdXJj
ZUNvbnRlbnQodGhpcy5fcmVzb3VyY2UsIGRpZEdldFRleHRBbmRTY3JpcHRSYW5nZXMuYmluZCh0
aGlzKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHRoaXMuX2xvYWRBbmRDb25jYXRlbmF0
ZVNjcmlwdHNDb250ZW50KGRpZEdldFRleHRBbmRTY3JpcHRSYW5nZXMuYmluZCh0aGlzKSk7CiAg
ICAgfSwK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85926</attachid>
            <date>2011-03-16 07:11:53 -0700</date>
            <delta_ts>2011-03-16 11:12:18 -0700</delta_ts>
            <desc>Patch.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>29128</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzYTcxZTU0Li4xMDM3OTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAg
QEAKKzIwMTEtMDMtMTYgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogZXh0cmFjdCBjb250ZW50IGxvYWRpbmcgbG9naWMgZnJvbSBzY3JpcHRzIHBhbmVs
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTUyMzcK
KworICAgICAgICBFbmNhcHN1bGF0ZSBzb3VyY2UgZmlsZXMgY3JlYXRpb24gbG9naWMgaW4gZGVi
dWdnZXIgcHJlc2VudGF0aW9uIG1vZGVsCisgICAgICAgIHRvIHN1cHBvcnQgc291cmNlIG1hcHBp
bmdzIGluIGEgcGx1Z2dhYmxlIHdheS4KKworICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
RGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1
Z2dlclByZXNlbnRhdGlvbk1vZGVsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclBy
ZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZS5zb3VyY2VGaWxlKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZS5yZXF1ZXN0U291cmNlRmls
ZUNvbnRlbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9k
ZWwucHJvdG90eXBlLl9wYXJzZWRTY3JpcHRTb3VyY2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlLl9mYWlsZWRUb1BhcnNlU2NyaXB0
U291cmNlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVs
LnByb3RvdHlwZS5fc2NyaXB0U291cmNlQ2hhbmdlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUuX3NvdXJjZUZpbGVBZGRlZCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUu
X3NvdXJjZUZpbGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNl
bnRhdGlvbk1vZGVsLnByb3RvdHlwZS5jb250aW51ZVRvTGluZSk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUuYnJlYWtwb2ludHNGb3JT
b3VyY2VGaWxlSWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9u
TW9kZWwucHJvdG90eXBlLnNldEJyZWFrcG9pbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRl
YnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlLmZpbmRCcmVha3BvaW50KToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZS5fYnJl
YWtwb2ludEFkZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlv
bk1vZGVsLnByb3RvdHlwZS5fYnJlYWtwb2ludFJlbW92ZWQpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlLl9icmVha3BvaW50UmVzb2x2
ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJv
dG90eXBlLl9yZXN0b3JlQnJlYWtwb2ludHMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVn
Z2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlLnNldCBzZWxlY3RlZENhbGxGcmFtZSk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUu
cmVzZXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUZpbGVQcm92aWRlcik6IENvbnZl
cnRzIHNjcmlwdHMgdG8gc291cmNlIGZpbGVzLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJj
ZUZpbGVQcm92aWRlci5wcm90b3R5cGUuYWRkU2NyaXB0LmVsc2UucmVzb3VyY2VGaW5pc2hlZCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlRmlsZVByb3ZpZGVyLnByb3RvdHlwZS5hZGRT
Y3JpcHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUZpbGVQcm92aWRlci5wcm90b3R5
cGUuZW5zdXJlU291cmNlRmlsZUFkZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VG
aWxlUHJvdmlkZXIucHJvdG90eXBlLl9yZXNvdXJjZUZvclVSTCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuU291cmNlRmlsZVByb3ZpZGVyLnByb3RvdHlwZS5zb3VyY2VGaWxlKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5Tb3VyY2VGaWxlUHJvdmlkZXIucHJvdG90eXBlLnJlcXVlc3RTb3VyY2VG
aWxlQ29udGVudC5lbHNlLmRpZFJlcXVlc3RTb3VyY2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlNvdXJjZUZpbGVQcm92aWRlci5wcm90b3R5cGUucmVxdWVzdFNvdXJjZUZpbGVDb250ZW50KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VGaWxlUHJvdmlkZXIucHJvdG90eXBlLnNjcmlw
dExvY2F0aW9uVG9Tb3VyY2VMb2NhdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNl
RmlsZVByb3ZpZGVyLnByb3RvdHlwZS5yZXNldCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250
LWVuZC9TY3JpcHRzUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVs
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlLl9zb3VyY2VG
aWxlQWRkZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUu
X3Nob3dTb3VyY2VGcmFtZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnBy
b3RvdHlwZS5fc291cmNlRmlsZUNoYW5nZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlw
dHNQYW5lbC5wcm90b3R5cGUuX2NhbGxGcmFtZVNlbGVjdGVkKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5Tb3VyY2VGcmFtZURlbGVnYXRlRm9yU2NyaXB0c1BhbmVsLnByb3RvdHlwZS5yZXF1ZXN0
Q29udGVudCk6CisKIDIwMTEtMDMtMTUgIERpbWl0cmkgR2xhemtvdiAgPGRnbGF6a292QGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW50IFRhbXVyYS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJQcmVzZW50YXRpb25N
b2RlbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJQcmVz
ZW50YXRpb25Nb2RlbC5qcwppbmRleCA1ZWYwNTE3Li5lZDQ3ZWQ5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwu
anMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlclByZXNl
bnRhdGlvbk1vZGVsLmpzCkBAIC0zMCw3ICszMCw4IEBACiAKIFdlYkluc3BlY3Rvci5EZWJ1Z2dl
clByZXNlbnRhdGlvbk1vZGVsID0gZnVuY3Rpb24oKQogewotICAgIHRoaXMucmVzZXQoKTsKKyAg
ICB0aGlzLl9zb3VyY2VGaWxlUHJvdmlkZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlNvdXJjZUZpbGVQ
cm92aWRlcih0aGlzLl9zb3VyY2VGaWxlQWRkZWQuYmluZCh0aGlzKSwgdGhpcy5fc291cmNlRmls
ZUNoYW5nZWQuYmluZCh0aGlzKSk7CisgICAgdGhpcy5fcHJlc2VudGF0aW9uQnJlYWtwb2ludHMg
PSB7fTsKIAogICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLmFkZEV2ZW50TGlzdGVuZXIo
V2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuRXZlbnRzLkRlYnVnZ2VyV2FzRW5hYmxlZCwgdGhp
cy5fZGVidWdnZXJXYXNFbmFibGVkLCB0aGlzKTsKICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJN
b2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkV2ZW50cy5Q
YXJzZWRTY3JpcHRTb3VyY2UsIHRoaXMuX3BhcnNlZFNjcmlwdFNvdXJjZSwgdGhpcyk7CkBAIC00
MCw2ICs0MSw4IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsID0gZnVu
Y3Rpb24oKQogfQogCiBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5FdmVu
dHMgPSB7CisgICAgU291cmNlRmlsZUFkZGVkOiAic291cmNlLWZpbGUtYWRkZWQiLAorICAgIFNv
dXJjZUZpbGVDaGFuZ2VkOiAic291cmNlLWZpbGUtY2hhbmdlZCIsCiAgICAgQnJlYWtwb2ludEFk
ZGVkOiAiYnJlYWtwb2ludC1hZGRlZCIsCiAgICAgQnJlYWtwb2ludFJlbW92ZWQ6ICJicmVha3Bv
aW50LXJlbW92ZWQiCiB9CkBAIC01MCwyMiArNTMsMjQgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2Vy
UHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9yZXN0b3JlQnJl
YWtwb2ludHMoKTsKICAgICB9LAogCisgICAgc291cmNlRmlsZTogZnVuY3Rpb24oc291cmNlRmls
ZUlkKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3NvdXJjZUZpbGVQcm92aWRlci5zb3Vy
Y2VGaWxlKHNvdXJjZUZpbGVJZCk7CisgICAgfSwKKworICAgIHJlcXVlc3RTb3VyY2VGaWxlQ29u
dGVudDogZnVuY3Rpb24oc291cmNlRmlsZUlkLCBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIHRo
aXMuX3NvdXJjZUZpbGVQcm92aWRlci5yZXF1ZXN0U291cmNlRmlsZUNvbnRlbnQoc291cmNlRmls
ZUlkLCBjYWxsYmFjayk7CisgICAgfSwKKwogICAgIF9wYXJzZWRTY3JpcHRTb3VyY2U6IGZ1bmN0
aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgdmFyIHNjcmlwdCA9IGV2ZW50LmRhdGE7Ci0gICAg
ICAgIHZhciBicmVha3BvaW50cyA9IFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLmJyZWFrcG9p
bnRzOwotICAgICAgICBmb3IgKHZhciBpZCBpbiBicmVha3BvaW50cykgewotICAgICAgICAgICAg
aWYgKGlkIGluIHRoaXMuX3ByZXNlbnRhdGlvbkJyZWFrcG9pbnRzKQotICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSBicmVha3BvaW50c1tpZF07
Ci0gICAgICAgICAgICBpZiAoYnJlYWtwb2ludC51cmwgJiYgYnJlYWtwb2ludC51cmwgPT09IHNj
cmlwdC5zb3VyY2VVUkwpCi0gICAgICAgICAgICAgICAgdGhpcy5fYnJlYWtwb2ludEFkZGVkKGJy
ZWFrcG9pbnQpOwotICAgICAgICB9CisgICAgICAgIHRoaXMuX3NvdXJjZUZpbGVQcm92aWRlci5h
ZGRTY3JpcHQoZXZlbnQuZGF0YSk7CiAgICAgfSwKIAogICAgIF9mYWlsZWRUb1BhcnNlU2NyaXB0
U291cmNlOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHRoaXMuX3BhcnNlZFNjcmlw
dFNvdXJjZShldmVudCk7CisgICAgICAgIHRoaXMuX3NvdXJjZUZpbGVQcm92aWRlci5hZGRTY3Jp
cHQoZXZlbnQuZGF0YSk7CiAgICAgfSwKIAogICAgIF9zY3JpcHRTb3VyY2VDaGFuZ2VkOiBmdW5j
dGlvbihldmVudCkKQEAgLTczLDYgKzc4LDEzIEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNl
bnRhdGlvbk1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIHNvdXJjZUlEID0gZXZlbnQu
ZGF0YS5zb3VyY2VJRDsKICAgICAgICAgdmFyIG9sZFNvdXJjZSA9IGV2ZW50LmRhdGEub2xkU291
cmNlOwogICAgICAgICB2YXIgc2NyaXB0ID0gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuc2Ny
aXB0Rm9yU291cmNlSUQoc291cmNlSUQpOworCisgICAgICAgIHZhciByZXNvdXJjZSA9IFdlYklu
c3BlY3Rvci5yZXNvdXJjZUZvclVSTChzY3JpcHQuc291cmNlVVJMKTsKKyAgICAgICAgaWYgKHJl
c291cmNlKSB7CisgICAgICAgICAgICB2YXIgcmV2ZXJ0SGFuZGxlID0gV2ViSW5zcGVjdG9yLmRl
YnVnZ2VyTW9kZWwuZWRpdFNjcmlwdFNvdXJjZS5iaW5kKFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1v
ZGVsLCBzY3JpcHQuc291cmNlSUQsIG9sZFNvdXJjZSk7CisgICAgICAgICAgICByZXNvdXJjZS5z
ZXRDb250ZW50KHNjcmlwdC5zb3VyY2UsIHJldmVydEhhbmRsZSk7CisgICAgICAgIH0KKwogICAg
ICAgICB2YXIgc291cmNlRmlsZUlkID0gc2NyaXB0LnNvdXJjZVVSTCB8fCBzY3JpcHQuc291cmNl
SUQ7CiAKICAgICAgICAgLy8gQ2xlYXIgYW5kIHJlLWNyZWF0ZSBicmVha3BvaW50cyBhY2NvcmRp
bmcgdG8gdGV4dCBkaWZmLgpAQCAtMTAxLDIzICsxMTMsNDIgQEAgV2ViSW5zcGVjdG9yLkRlYnVn
Z2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgaWYgKG5ld0xp
bmVOdW1iZXIgIT09IHVuZGVmaW5lZCkKICAgICAgICAgICAgICAgICB0aGlzLnNldEJyZWFrcG9p
bnQoc291cmNlRmlsZUlkLCBuZXdMaW5lTnVtYmVyLCBicmVha3BvaW50LmNvbmRpdGlvbiwgYnJl
YWtwb2ludC5lbmFibGVkKTsKICAgICAgICAgfQorCisgICAgICAgIHZhciBzb3VyY2VGaWxlID0g
dGhpcy5zb3VyY2VGaWxlKHNvdXJjZUZpbGVJZCk7CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVu
dFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLkV2ZW50
cy5Tb3VyY2VGaWxlQ2hhbmdlZCwgc291cmNlRmlsZSk7CisgICAgfSwKKworICAgIF9zb3VyY2VG
aWxlQWRkZWQ6IGZ1bmN0aW9uKHNvdXJjZUZpbGUpCisgICAgeworICAgICAgICBzb3VyY2VGaWxl
Ll9icmVha3BvaW50cyA9IFtdOworICAgICAgICB2YXIgYnJlYWtwb2ludHMgPSBXZWJJbnNwZWN0
b3IuZGVidWdnZXJNb2RlbC5icmVha3BvaW50czsKKyAgICAgICAgZm9yICh2YXIgaWQgaW4gYnJl
YWtwb2ludHMpIHsKKyAgICAgICAgICAgIGlmICghKGlkIGluIHRoaXMuX3ByZXNlbnRhdGlvbkJy
ZWFrcG9pbnRzKSkKKyAgICAgICAgICAgICAgICB0aGlzLl9icmVha3BvaW50QWRkZWQoYnJlYWtw
b2ludHNbaWRdKTsKKyAgICAgICAgfQorICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3Rl
bmVycyhXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5FdmVudHMuU291cmNl
RmlsZUFkZGVkLCBzb3VyY2VGaWxlKTsKKyAgICB9LAorCisgICAgX3NvdXJjZUZpbGVDaGFuZ2Vk
OiBmdW5jdGlvbihzb3VyY2VGaWxlKQorICAgIHsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50
VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuRXZlbnRz
LlNvdXJjZUZpbGVDaGFuZ2VkLCBzb3VyY2VGaWxlKTsKICAgICB9LAogCiAgICAgY29udGludWVU
b0xpbmU6IGZ1bmN0aW9uKHNvdXJjZUZpbGVJZCwgbGluZU51bWJlcikKICAgICB7Ci0gICAgICAg
IHZhciBsb2NhdGlvbiA9IHRoaXMuX3NvdXJjZUxvY2F0aW9uVG9BY3R1YWxMb2NhdGlvbihzb3Vy
Y2VGaWxlSWQsIGxpbmVOdW1iZXIpOworICAgICAgICB2YXIgbG9jYXRpb24gPSB0aGlzLl9zb3Vy
Y2VGaWxlUHJvdmlkZXIuc291cmNlTG9jYXRpb25Ub1NjcmlwdExvY2F0aW9uKHNvdXJjZUZpbGVJ
ZCwgbGluZU51bWJlcik7CiAgICAgICAgIGlmIChsb2NhdGlvbi5zb3VyY2VJRCkKICAgICAgICAg
ICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLmNvbnRpbnVlVG9Mb2NhdGlvbihsb2NhdGlv
bi5zb3VyY2VJRCwgbG9jYXRpb24ubGluZU51bWJlciwgbG9jYXRpb24uY29sdW1uTnVtYmVyKTsK
ICAgICB9LAogCiAgICAgYnJlYWtwb2ludHNGb3JTb3VyY2VGaWxlSWQ6IGZ1bmN0aW9uKHNvdXJj
ZUZpbGVJZCkKICAgICB7CisgICAgICAgIHZhciBzb3VyY2VGaWxlID0gdGhpcy5zb3VyY2VGaWxl
KHNvdXJjZUZpbGVJZCk7CisgICAgICAgIGlmICghc291cmNlRmlsZSkKKyAgICAgICAgICAgIHJl
dHVybiBbXTsKICAgICAgICAgdmFyIGJyZWFrcG9pbnRzID0gW107Ci0gICAgICAgIGZvciAodmFy
IGlkIGluIHRoaXMuX3ByZXNlbnRhdGlvbkJyZWFrcG9pbnRzKSB7Ci0gICAgICAgICAgICB2YXIg
YnJlYWtwb2ludCA9IHRoaXMuX3ByZXNlbnRhdGlvbkJyZWFrcG9pbnRzW2lkXTsKLSAgICAgICAg
ICAgIGlmIChicmVha3BvaW50LnNvdXJjZUZpbGVJZCA9PT0gc291cmNlRmlsZUlkKQotICAgICAg
ICAgICAgICAgIGJyZWFrcG9pbnRzLnB1c2goYnJlYWtwb2ludCk7Ci0gICAgICAgIH0KKyAgICAg
ICAgZm9yICh2YXIgbGluZU51bWJlciBpbiBzb3VyY2VGaWxlLl9icmVha3BvaW50cykKKyAgICAg
ICAgICAgIGJyZWFrcG9pbnRzLnB1c2goc291cmNlRmlsZS5fYnJlYWtwb2ludHNbbGluZU51bWJl
cl0pOwogICAgICAgICByZXR1cm4gYnJlYWtwb2ludHM7CiAgICAgfSwKIApAQCAtMTMwLDcgKzE2
MSw3IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZSA9
IHsKICAgICAgICAgICAgICAgICB0aGlzLl9zYXZlQnJlYWtwb2ludHMoKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQotICAgICAgICB2YXIgbG9jYXRpb24gPSB0aGlzLl9zb3VyY2VMb2NhdGlv
blRvQWN0dWFsTG9jYXRpb24oc291cmNlRmlsZUlkLCBsaW5lTnVtYmVyKTsKKyAgICAgICAgdmFy
IGxvY2F0aW9uID0gdGhpcy5fc291cmNlRmlsZVByb3ZpZGVyLnNvdXJjZUxvY2F0aW9uVG9TY3Jp
cHRMb2NhdGlvbihzb3VyY2VGaWxlSWQsIGxpbmVOdW1iZXIpOwogICAgICAgICBpZiAobG9jYXRp
b24udXJsKQogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuc2V0QnJlYWtw
b2ludChsb2NhdGlvbi51cmwsIGxvY2F0aW9uLmxpbmVOdW1iZXIsIGxvY2F0aW9uLmNvbHVtbk51
bWJlciwgY29uZGl0aW9uLCBlbmFibGVkLCBkaWRTZXRCcmVha3BvaW50LmJpbmQodGhpcykpOwog
ICAgICAgICBlbHNlCkBAIC0xNjAsMTggKzE5MSwyMCBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJQ
cmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUgPSB7CiAKICAgICBmaW5kQnJlYWtwb2ludDogZnVu
Y3Rpb24oc291cmNlRmlsZUlkLCBsaW5lTnVtYmVyKQogICAgIHsKLSAgICAgICAgdmFyIGVuY29k
ZWRTb3VyY2VMb2NhdGlvbiA9IHRoaXMuX2VuY29kZVNvdXJjZUxvY2F0aW9uKHNvdXJjZUZpbGVJ
ZCwgbGluZU51bWJlcik7Ci0gICAgICAgIHJldHVybiB0aGlzLl9zb3VyY2VMb2NhdGlvblRvQnJl
YWtwb2ludFtlbmNvZGVkU291cmNlTG9jYXRpb25dOworICAgICAgICB2YXIgc291cmNlRmlsZSA9
IHRoaXMuc291cmNlRmlsZShzb3VyY2VGaWxlSWQpOworICAgICAgICBpZiAoc291cmNlRmlsZSkK
KyAgICAgICAgICAgIHJldHVybiBzb3VyY2VGaWxlLl9icmVha3BvaW50c1tsaW5lTnVtYmVyXTsK
ICAgICB9LAogCiAgICAgX2JyZWFrcG9pbnRBZGRlZDogZnVuY3Rpb24oYnJlYWtwb2ludCkKICAg
ICB7CiAgICAgICAgIHZhciBsb2NhdGlvbiA9IGJyZWFrcG9pbnQubG9jYXRpb25zLmxlbmd0aCA/
IGJyZWFrcG9pbnQubG9jYXRpb25zWzBdIDogYnJlYWtwb2ludDsKLSAgICAgICAgdmFyIHNvdXJj
ZUxvY2F0aW9uID0gdGhpcy5fYWN0dWFsTG9jYXRpb25Ub1NvdXJjZUxvY2F0aW9uKGJyZWFrcG9p
bnQudXJsIHx8IGJyZWFrcG9pbnQuc291cmNlSUQsIGxvY2F0aW9uLmxpbmVOdW1iZXIsIGxvY2F0
aW9uLmNvbHVtbk51bWJlcik7CisgICAgICAgIHZhciBzb3VyY2VMb2NhdGlvbiA9IHRoaXMuX3Nv
dXJjZUZpbGVQcm92aWRlci5zY3JpcHRMb2NhdGlvblRvU291cmNlTG9jYXRpb24oYnJlYWtwb2lu
dC51cmwsIGJyZWFrcG9pbnQuc291cmNlSUQsIGxvY2F0aW9uLmxpbmVOdW1iZXIsIGxvY2F0aW9u
LmNvbHVtbk51bWJlcik7CisgICAgICAgIGlmICghc291cmNlTG9jYXRpb24pCisgICAgICAgICAg
ICByZXR1cm47CiAKLSAgICAgICAgdmFyIGVuY29kZWRTb3VyY2VMb2NhdGlvbiA9IHRoaXMuX2Vu
Y29kZVNvdXJjZUxvY2F0aW9uKHNvdXJjZUxvY2F0aW9uLnNvdXJjZUZpbGVJZCwgc291cmNlTG9j
YXRpb24ubGluZU51bWJlcik7Ci0gICAgICAgIGlmIChlbmNvZGVkU291cmNlTG9jYXRpb24gaW4g
dGhpcy5fc291cmNlTG9jYXRpb25Ub0JyZWFrcG9pbnQpIHsKLSAgICAgICAgICAgIC8vIFdlIGNh
bid0IHNob3cgbW9yZSB0aGFuIG9uZSBicmVha3BvaW50IG9uIGEgc2luZ2xlIHNvdXJjZSBmcmFt
ZSBsaW5lLgorICAgICAgICBpZiAodGhpcy5maW5kQnJlYWtwb2ludChzb3VyY2VMb2NhdGlvbi5z
b3VyY2VGaWxlSWQsIHNvdXJjZUxvY2F0aW9uLmxpbmVOdW1iZXIpKSB7CisgICAgICAgICAgICAv
LyBXZSBjYW4ndCBzaG93IG1vcmUgdGhhbiBvbmUgYnJlYWtwb2ludCBvbiBhIHNpbmdsZSBzb3Vy
Y2UgZmlsZSBsaW5lLgogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwucmVt
b3ZlQnJlYWtwb2ludChicmVha3BvaW50LmlkKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQpAQCAtMTgzLDE2ICsyMTYsMTYgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0
aW9uTW9kZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmVzb2x2ZWQ6ICEhYnJlYWtwb2lu
dC5sb2NhdGlvbnMubGVuZ3RoLAogICAgICAgICAgICAgY29uZGl0aW9uOiBicmVha3BvaW50LmNv
bmRpdGlvbiwKICAgICAgICAgICAgIGVuYWJsZWQ6IGJyZWFrcG9pbnQuZW5hYmxlZCwKLSAgICAg
ICAgICAgIF9pZDogYnJlYWtwb2ludC5pZCwKLSAgICAgICAgICAgIF9lbmNvZGVkU291cmNlTG9j
YXRpb246IGVuY29kZWRTb3VyY2VMb2NhdGlvbgorICAgICAgICAgICAgX2lkOiBicmVha3BvaW50
LmlkCiAgICAgICAgIH07CiAgICAgICAgIGlmIChsb2NhdGlvbi5zb3VyY2VJRCkgewogICAgICAg
ICAgICAgdmFyIHNjcmlwdCA9IFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLnNjcmlwdEZvclNv
dXJjZUlEKGxvY2F0aW9uLnNvdXJjZUlEKTsKICAgICAgICAgICAgIHByZXNlbnRhdGlvbkJyZWFr
cG9pbnQubG9hZFNuaXBwZXQgPSBzY3JpcHQuc291cmNlTGluZS5iaW5kKHNjcmlwdCwgbG9jYXRp
b24ubGluZU51bWJlcik7CiAgICAgICAgIH0KIAotICAgICAgICB0aGlzLl9zb3VyY2VMb2NhdGlv
blRvQnJlYWtwb2ludFtlbmNvZGVkU291cmNlTG9jYXRpb25dID0gcHJlc2VudGF0aW9uQnJlYWtw
b2ludDsKICAgICAgICAgdGhpcy5fcHJlc2VudGF0aW9uQnJlYWtwb2ludHNbYnJlYWtwb2ludC5p
ZF0gPSBwcmVzZW50YXRpb25CcmVha3BvaW50OworICAgICAgICB2YXIgc291cmNlRmlsZSA9IHRo
aXMuc291cmNlRmlsZShzb3VyY2VMb2NhdGlvbi5zb3VyY2VGaWxlSWQpOworICAgICAgICBzb3Vy
Y2VGaWxlLl9icmVha3BvaW50c1tzb3VyY2VMb2NhdGlvbi5saW5lTnVtYmVyXSA9IHByZXNlbnRh
dGlvbkJyZWFrcG9pbnQ7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdl
Ykluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLkV2ZW50cy5CcmVha3BvaW50QWRk
ZWQsIHByZXNlbnRhdGlvbkJyZWFrcG9pbnQpOwogICAgIH0sCiAKQEAgLTIwMCwyNyArMjMzLDI1
IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZSA9IHsK
ICAgICB7CiAgICAgICAgIHZhciBicmVha3BvaW50ID0gdGhpcy5fcHJlc2VudGF0aW9uQnJlYWtw
b2ludHNbYnJlYWtwb2ludElkXTsKICAgICAgICAgZGVsZXRlIHRoaXMuX3ByZXNlbnRhdGlvbkJy
ZWFrcG9pbnRzW2JyZWFrcG9pbnRJZF07Ci0gICAgICAgIGRlbGV0ZSB0aGlzLl9zb3VyY2VMb2Nh
dGlvblRvQnJlYWtwb2ludFticmVha3BvaW50Ll9lbmNvZGVkU291cmNlTG9jYXRpb25dOworICAg
ICAgICB2YXIgc291cmNlRmlsZSA9IHRoaXMuc291cmNlRmlsZShicmVha3BvaW50LnNvdXJjZUZp
bGVJZCk7CisgICAgICAgIGRlbGV0ZSBzb3VyY2VGaWxlLl9icmVha3BvaW50c1ticmVha3BvaW50
LmxpbmVOdW1iZXJdOwogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJ
bnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5FdmVudHMuQnJlYWtwb2ludFJlbW92
ZWQsIGJyZWFrcG9pbnQpOwogICAgIH0sCiAKICAgICBfYnJlYWtwb2ludFJlc29sdmVkOiBmdW5j
dGlvbihldmVudCkKICAgICB7CiAgICAgICAgIHZhciBicmVha3BvaW50ID0gZXZlbnQuZGF0YTsK
KyAgICAgICAgaWYgKCEoYnJlYWtwb2ludC5pZCBpbiB0aGlzLl9wcmVzZW50YXRpb25CcmVha3Bv
aW50cykpCisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnRSZW1v
dmVkKGJyZWFrcG9pbnQuaWQpOwogICAgICAgICB0aGlzLl9icmVha3BvaW50QWRkZWQoYnJlYWtw
b2ludCk7CiAgICAgfSwKIAotICAgIF9lbmNvZGVTb3VyY2VMb2NhdGlvbjogZnVuY3Rpb24oc291
cmNlRmlsZUlkLCBsaW5lTnVtYmVyKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHNvdXJjZUZpbGVJ
ZCArICI6IiArIGxpbmVOdW1iZXI7Ci0gICAgfSwKLQogICAgIF9yZXN0b3JlQnJlYWtwb2ludHM6
IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIGZ1bmN0aW9uIGRpZFNldEJyZWFrcG9pbnQoYnJl
YWtwb2ludCkKICAgICAgICAgewotICAgICAgICAgICAgaWYgKGJyZWFrcG9pbnQgJiYgV2ViSW5z
cGVjdG9yLmRlYnVnZ2VyTW9kZWwuc2NyaXB0c0ZvclVSTChicmVha3BvaW50LnVybCkubGVuZ3Ro
KQorICAgICAgICAgICAgaWYgKGJyZWFrcG9pbnQpCiAgICAgICAgICAgICAgICAgdGhpcy5fYnJl
YWtwb2ludEFkZGVkKGJyZWFrcG9pbnQpOwogICAgICAgICB9CiAgICAgICAgIHZhciBicmVha3Bv
aW50cyA9IFdlYkluc3BlY3Rvci5zZXR0aW5ncy5icmVha3BvaW50czsKQEAgLTI1NSw3ICsyODYs
OCBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUgPSB7
CiAgICAgICAgIGlmICghY2FsbEZyYW1lKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB2
YXIgc2NyaXB0ID0gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuc2NyaXB0Rm9yU291cmNlSUQo
Y2FsbEZyYW1lLnNvdXJjZUlEKTsKLSAgICAgICAgY2FsbEZyYW1lLnNvdXJjZUxvY2F0aW9uID0g
dGhpcy5fYWN0dWFsTG9jYXRpb25Ub1NvdXJjZUxvY2F0aW9uKHNjcmlwdC5zb3VyY2VVUkwgfHwg
c2NyaXB0LnNvdXJjZUlELCBjYWxsRnJhbWUubGluZSwgY2FsbEZyYW1lLmNvbHVtbik7CisgICAg
ICAgIHRoaXMuX3NvdXJjZUZpbGVQcm92aWRlci5lbnN1cmVTb3VyY2VGaWxlQWRkZWQoc2NyaXB0
KTsKKyAgICAgICAgY2FsbEZyYW1lLnNvdXJjZUxvY2F0aW9uID0gdGhpcy5fc291cmNlRmlsZVBy
b3ZpZGVyLnNjcmlwdExvY2F0aW9uVG9Tb3VyY2VMb2NhdGlvbihzY3JpcHQuc291cmNlVVJMLCBz
Y3JpcHQuc291cmNlSUQsIGNhbGxGcmFtZS5saW5lLCBjYWxsRnJhbWUuY29sdW1uKTsKICAgICAg
ICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJl
c2VudGF0aW9uTW9kZWwuRXZlbnRzLkNhbGxGcmFtZVNlbGVjdGVkLCBjYWxsRnJhbWUpOwogICAg
IH0sCiAKQEAgLTI2NCwxMyArMjk2LDExMCBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50
YXRpb25Nb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZENh
bGxGcmFtZTsKICAgICB9LAogCi0gICAgX2FjdHVhbExvY2F0aW9uVG9Tb3VyY2VMb2NhdGlvbjog
ZnVuY3Rpb24oc291cmNlSUQsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKKyAgICByZXNldDog
ZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5fc291cmNlRmlsZVByb3ZpZGVyLnJlc2V0
KCk7CisgICAgICAgIHRoaXMuX3ByZXNlbnRhdGlvbkJyZWFrcG9pbnRzID0ge307CisgICAgfQor
fQorCitXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUuX19w
cm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CisKK1dlYkluc3BlY3Rvci5T
b3VyY2VGaWxlUHJvdmlkZXIgPSBmdW5jdGlvbihzb3VyY2VGaWxlQWRkZWREZWxlZ2F0ZSwgc291
cmNlRmlsZUNoYW5nZWREZWxlZ2F0ZSkKK3sKKyAgICB0aGlzLl9zb3VyY2VGaWxlQWRkZWREZWxl
Z2F0ZSA9IHNvdXJjZUZpbGVBZGRlZERlbGVnYXRlOworICAgIHRoaXMuX3NvdXJjZUZpbGVDaGFu
Z2VkRGVsZWdhdGUgPSBzb3VyY2VGaWxlQ2hhbmdlZERlbGVnYXRlOworICAgIHRoaXMuX3NvdXJj
ZUZpbGVzID0ge307Cit9CisKK1dlYkluc3BlY3Rvci5Tb3VyY2VGaWxlUHJvdmlkZXIucHJvdG90
eXBlID0geworICAgIGFkZFNjcmlwdDogZnVuY3Rpb24oc2NyaXB0KQorICAgIHsKKyAgICAgICAg
dmFyIHNvdXJjZUZpbGVJZCA9IHNjcmlwdC5zb3VyY2VVUkwgfHwgc2NyaXB0LnNvdXJjZUlEOwor
ICAgICAgICBpZiAoc291cmNlRmlsZUlkIGluIHRoaXMuX3NvdXJjZUZpbGVzKQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIHZhciBzb3VyY2VGaWxlID0ge307CisgICAgICAgIHNvdXJj
ZUZpbGUuaWQgPSBzb3VyY2VGaWxlSWQ7CisgICAgICAgIHNvdXJjZUZpbGUudXJsID0gc2NyaXB0
LnNvdXJjZVVSTDsKKyAgICAgICAgc291cmNlRmlsZS5pc0V4dGVuc2lvblNjcmlwdCA9IHNjcmlw
dC53b3JsZFR5cGUgPT09IFdlYkluc3BlY3Rvci5TY3JpcHQuV29ybGRUeXBlLkVYVEVOU0lPTlNf
V09STEQ7CisgICAgICAgIHNvdXJjZUZpbGUuX3NjcmlwdCA9IHNjcmlwdDsKKyAgICAgICAgc291
cmNlRmlsZS5fcmVzb3VyY2UgPSBzY3JpcHQuc291cmNlVVJMID8gdGhpcy5fcmVzb3VyY2VGb3JV
Ukwoc2NyaXB0LnNvdXJjZVVSTCkgOiBudWxsOworICAgICAgICB0aGlzLl9zb3VyY2VGaWxlc1tz
b3VyY2VGaWxlSWRdID0gc291cmNlRmlsZTsKKworICAgICAgICBpZiAoIXNvdXJjZUZpbGUuX3Jl
c291cmNlIHx8IHNvdXJjZUZpbGUuX3Jlc291cmNlLmZpbmlzaGVkKQorICAgICAgICAgICAgdGhp
cy5fc291cmNlRmlsZUFkZGVkRGVsZWdhdGUoc291cmNlRmlsZSk7CisgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgc291cmNlRmlsZS5fcGVuZGluZyA9IHRydWU7CisgICAgICAgICAgICBmdW5j
dGlvbiByZXNvdXJjZUZpbmlzaGVkKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBp
ZiAoc291cmNlRmlsZS5fcGVuZGluZykgeworICAgICAgICAgICAgICAgICAgICBkZWxldGUgc291
cmNlRmlsZS5fcGVuZGluZzsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5fc291cmNlRmlsZUFk
ZGVkRGVsZWdhdGUoc291cmNlRmlsZSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICAgICAgLy8gU291cmNlIGZpbGUgd2FzIGZvcmNpYmx5IGFkZGVkIGJlZm9yZSBy
ZXNvdXJjZSB3YXMgZmluaXNoZWQuCisgICAgICAgICAgICAgICAgICAgIHRoaXMuX3NvdXJjZUZp
bGVDaGFuZ2VkRGVsZWdhdGUoc291cmNlRmlsZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorICAgICAgICAgICAgc291cmNlRmlsZS5fcmVzb3VyY2UuYWRkRXZlbnRMaXN0ZW5l
cigiZmluaXNoZWQiLCByZXNvdXJjZUZpbmlzaGVkLmJpbmQodGhpcykpOworICAgICAgICB9Cisg
ICAgfSwKKworICAgIGVuc3VyZVNvdXJjZUZpbGVBZGRlZDogZnVuY3Rpb24oc2NyaXB0KQorICAg
IHsKKyAgICAgICAgdmFyIHNvdXJjZUZpbGUgPSB0aGlzLl9zb3VyY2VGaWxlc1tzY3JpcHQuc291
cmNlVVJMIHx8IHNjcmlwdC5zb3VyY2VJRF07CisgICAgICAgIGlmICghc291cmNlRmlsZS5fcmVz
b3VyY2UgfHwgc291cmNlRmlsZS5fcmVzb3VyY2UuZmluaXNoZWQpCisgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgaWYgKHNvdXJjZUZpbGUuX3BlbmRpbmcpIHsKKyAgICAgICAgICAgIGRl
bGV0ZSBzb3VyY2VGaWxlLl9wZW5kaW5nOworICAgICAgICAgICAgdGhpcy5fc291cmNlRmlsZUFk
ZGVkRGVsZWdhdGUoc291cmNlRmlsZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAv
LyBTb3VyY2UgZmlsZSB3YXMgYWxyZWFkeSBhZGRlZCwgbm93IGl0cyBjb250ZW50IHNob3VsZCBi
ZSB1cGRhdGVkIHdpdGggbmV3IHNjcmlwdCBib2R5LgorICAgICAgICAgICAgdGhpcy5fc291cmNl
RmlsZUNoYW5nZWREZWxlZ2F0ZShzb3VyY2VGaWxlKTsKKyAgICAgICAgfQorICAgIH0sCisKKyAg
ICBfcmVzb3VyY2VGb3JVUkw6IGZ1bmN0aW9uKHVybCkKKyAgICB7CisgICAgICAgIHJldHVybiBX
ZWJJbnNwZWN0b3IubmV0d29ya01hbmFnZXIuaW5mbGlnaHRSZXNvdXJjZUZvclVSTCh1cmwpIHx8
IFdlYkluc3BlY3Rvci5yZXNvdXJjZUZvclVSTCh1cmwpOworICAgIH0sCisKKyAgICBzb3VyY2VG
aWxlOiBmdW5jdGlvbihzb3VyY2VGaWxlSWQpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5f
c291cmNlRmlsZXNbc291cmNlRmlsZUlkXTsKKyAgICB9LAorCisgICAgcmVxdWVzdFNvdXJjZUZp
bGVDb250ZW50OiBmdW5jdGlvbihzb3VyY2VGaWxlSWQsIGNhbGxiYWNrKQorICAgIHsKKyAgICAg
ICAgdmFyIHNvdXJjZUZpbGUgPSB0aGlzLl9zb3VyY2VGaWxlc1tzb3VyY2VGaWxlSWRdOworICAg
ICAgICB2YXIgc2NyaXB0ID0gc291cmNlRmlsZS5fc2NyaXB0OworICAgICAgICB2YXIgcmVzb3Vy
Y2UgPSBzb3VyY2VGaWxlLl9yZXNvdXJjZTsKKyAgICAgICAgaWYgKHJlc291cmNlKSB7CisgICAg
ICAgICAgICAvLyBGSVhNRTogbW92ZSBwcm92aWRlcidzIGxvYWQgZnVuY3Rpb25zIGhlcmUuCisg
ICAgICAgICAgICB2YXIgcHJvdmlkZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lRGVs
ZWdhdGVGb3JTY3JpcHRzUGFuZWwobnVsbCwgbnVsbCwgc2NyaXB0KTsKKyAgICAgICAgICAgIGlm
IChyZXNvdXJjZS5maW5pc2hlZCkKKyAgICAgICAgICAgICAgICBwcm92aWRlci5fbG9hZFJlc291
cmNlQ29udGVudChyZXNvdXJjZSwgY2FsbGJhY2spOworICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgIHByb3ZpZGVyLl9sb2FkQW5kQ29uY2F0ZW5hdGVTY3JpcHRzQ29udGVudChjYWxs
YmFjayk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBmdW5jdGlvbiBkaWRSZXF1ZXN0
U291cmNlKHNvdXJjZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYWxsYmFjaygi
dGV4dC9qYXZhc2NyaXB0Iiwgc291cmNlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHNj
cmlwdC5yZXF1ZXN0U291cmNlKGRpZFJlcXVlc3RTb3VyY2UpOworICAgICAgICB9CisgICAgfSwK
KworICAgIHNjcmlwdExvY2F0aW9uVG9Tb3VyY2VMb2NhdGlvbjogZnVuY3Rpb24oc2NyaXB0VVJM
LCBzY3JpcHRJZCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgIHsKICAgICAgICAgLy8g
VE9ETzogdXNlIHNvdXJjZSBtYXBwaW5nIHRvIG9idGFpbiBzb3VyY2UgbG9jYXRpb24uCi0gICAg
ICAgIHJldHVybiB7IHNvdXJjZUZpbGVJZDogc291cmNlSUQsIGxpbmVOdW1iZXI6IGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlcjogY29sdW1uTnVtYmVyIH07CisgICAgICAgIHZhciBzb3VyY2VGaWxl
ID0gdGhpcy5fc291cmNlRmlsZXNbc2NyaXB0VVJMIHx8IHNjcmlwdElkXTsKKyAgICAgICAgaWYg
KHNvdXJjZUZpbGUgJiYgIXNvdXJjZUZpbGUuX3BlbmRpbmcpCisgICAgICAgICAgICByZXR1cm4g
eyBzb3VyY2VGaWxlSWQ6IHNvdXJjZUZpbGUuaWQsIGxpbmVOdW1iZXI6IGxpbmVOdW1iZXIsIGNv
bHVtbk51bWJlcjogY29sdW1uTnVtYmVyIH07CiAgICAgfSwKIAotICAgIF9zb3VyY2VMb2NhdGlv
blRvQWN0dWFsTG9jYXRpb246IGZ1bmN0aW9uKHNvdXJjZUZpbGVJZCwgbGluZU51bWJlcikKKyAg
ICBzb3VyY2VMb2NhdGlvblRvU2NyaXB0TG9jYXRpb246IGZ1bmN0aW9uKHNvdXJjZUZpbGVJZCwg
bGluZU51bWJlcikKICAgICB7CiAgICAgICAgIC8vIFRPRE86IHVzZSBzb3VyY2UgbWFwcGluZyB0
byBvYnRhaW4gYWN0dWFsIGxvY2F0aW9uLgogICAgICAgICBmdW5jdGlvbiBmaWx0ZXIoc2NyaXB0
KQpAQCAtMjgzLDkgKzQxMiw2IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1v
ZGVsLnByb3RvdHlwZSA9IHsKIAogICAgIHJlc2V0OiBmdW5jdGlvbigpCiAgICAgewotICAgICAg
ICB0aGlzLl9wcmVzZW50YXRpb25CcmVha3BvaW50cyA9IHt9OwotICAgICAgICB0aGlzLl9zb3Vy
Y2VMb2NhdGlvblRvQnJlYWtwb2ludCA9IHt9OworICAgICAgICB0aGlzLl9zb3VyY2VGaWxlcyA9
IHt9OwogICAgIH0KIH0KLQotV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwu
cHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwu
anMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcwpp
bmRleCA2ZmNhZmY4Li40ZDU4OGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcwpAQCAtMTg3LDExICsxODcsMTEgQEAgV2ViSW5z
cGVjdG9yLlNjcmlwdHNQYW5lbCA9IGZ1bmN0aW9uKCkKIAogICAgIFdlYkluc3BlY3Rvci5kZWJ1
Z2dlck1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuRXZl
bnRzLkRlYnVnZ2VyV2FzRW5hYmxlZCwgdGhpcy5fZGVidWdnZXJXYXNFbmFibGVkLCB0aGlzKTsK
ICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3Bl
Y3Rvci5EZWJ1Z2dlck1vZGVsLkV2ZW50cy5EZWJ1Z2dlcldhc0Rpc2FibGVkLCB0aGlzLl9kZWJ1
Z2dlcldhc0Rpc2FibGVkLCB0aGlzKTsKLSAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5h
ZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkV2ZW50cy5QYXJzZWRT
Y3JpcHRTb3VyY2UsIHRoaXMuX3BhcnNlZFNjcmlwdFNvdXJjZSwgdGhpcyk7Ci0gICAgV2ViSW5z
cGVjdG9yLmRlYnVnZ2VyTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGVidWdn
ZXJNb2RlbC5FdmVudHMuRmFpbGVkVG9QYXJzZVNjcmlwdFNvdXJjZSwgdGhpcy5fZmFpbGVkVG9Q
YXJzZVNjcmlwdFNvdXJjZSwgdGhpcyk7Ci0gICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwu
YWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5FdmVudHMuU2NyaXB0
U291cmNlQ2hhbmdlZCwgdGhpcy5fc2NyaXB0U291cmNlQ2hhbmdlZCwgdGhpcyk7CiAgICAgV2Vi
SW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGVi
dWdnZXJNb2RlbC5FdmVudHMuRGVidWdnZXJQYXVzZWQsIHRoaXMuX2RlYnVnZ2VyUGF1c2VkLCB0
aGlzKTsKICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5hZGRFdmVudExpc3RlbmVyKFdl
Ykluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkV2ZW50cy5EZWJ1Z2dlclJlc3VtZWQsIHRoaXMuX2Rl
YnVnZ2VyUmVzdW1lZCwgdGhpcyk7CisKKyAgICB0aGlzLl9wcmVzZW50YXRpb25Nb2RlbC5hZGRF
dmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLkV2ZW50
cy5Tb3VyY2VGaWxlQWRkZWQsIHRoaXMuX3NvdXJjZUZpbGVBZGRlZCwgdGhpcykKKyAgICB0aGlz
Ll9wcmVzZW50YXRpb25Nb2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5EZWJ1Z2dl
clByZXNlbnRhdGlvbk1vZGVsLkV2ZW50cy5Tb3VyY2VGaWxlQ2hhbmdlZCwgdGhpcy5fc291cmNl
RmlsZUNoYW5nZWQsIHRoaXMpOwogICAgIHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLmFkZEV2ZW50
TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuRXZlbnRzLkJy
ZWFrcG9pbnRBZGRlZCwgdGhpcy5fYnJlYWtwb2ludEFkZGVkLCB0aGlzKTsKICAgICB0aGlzLl9w
cmVzZW50YXRpb25Nb2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclBy
ZXNlbnRhdGlvbk1vZGVsLkV2ZW50cy5CcmVha3BvaW50UmVtb3ZlZCwgdGhpcy5fYnJlYWtwb2lu
dFJlbW92ZWQsIHRoaXMpOwogICAgIHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLmFkZEV2ZW50TGlz
dGVuZXIoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuRXZlbnRzLkNhbGxG
cmFtZVNlbGVjdGVkLCB0aGlzLl9jYWxsRnJhbWVTZWxlY3RlZCwgdGhpcyk7CkBAIC0yNDYsMTEx
ICsyNDYsMzYgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIHJldHVybiB0aGlzLnRvZ2dsZUJyZWFrcG9pbnRzQnV0dG9uLnRvZ2dsZWQ7CiAgICAgfSwK
IAotICAgIF9wYXJzZWRTY3JpcHRTb3VyY2U6IGZ1bmN0aW9uKGV2ZW50KQotICAgIHsKLSAgICAg
ICAgdGhpcy5fYWRkU2NyaXB0KGV2ZW50LmRhdGEpOwotICAgIH0sCi0KLSAgICBfZmFpbGVkVG9Q
YXJzZVNjcmlwdFNvdXJjZTogZnVuY3Rpb24oZXZlbnQpCi0gICAgewotICAgICAgICB0aGlzLl9h
ZGRTY3JpcHQoZXZlbnQuZGF0YSk7Ci0gICAgfSwKLQotICAgIF9zY3JpcHRTb3VyY2VDaGFuZ2Vk
OiBmdW5jdGlvbihldmVudCkKKyAgICBfc291cmNlRmlsZUFkZGVkOiBmdW5jdGlvbihldmVudCkK
ICAgICB7Ci0gICAgICAgIHZhciBzb3VyY2VJRCA9IGV2ZW50LmRhdGEuc291cmNlSUQ7Ci0gICAg
ICAgIHZhciBvbGRTb3VyY2UgPSBldmVudC5kYXRhLm9sZFNvdXJjZTsKKyAgICAgICAgdmFyIHNv
dXJjZUZpbGUgPSBldmVudC5kYXRhOwogCi0gICAgICAgIHZhciBzY3JpcHQgPSBXZWJJbnNwZWN0
b3IuZGVidWdnZXJNb2RlbC5zY3JpcHRGb3JTb3VyY2VJRChzb3VyY2VJRCk7Ci0gICAgICAgIGlm
IChzY3JpcHQucmVzb3VyY2UpIHsKLSAgICAgICAgICAgIHZhciByZXZlcnRIYW5kbGUgPSBXZWJJ
bnNwZWN0b3IuZGVidWdnZXJNb2RlbC5lZGl0U2NyaXB0U291cmNlLmJpbmQoV2ViSW5zcGVjdG9y
LmRlYnVnZ2VyTW9kZWwsIHNvdXJjZUlELCBvbGRTb3VyY2UpOwotICAgICAgICAgICAgc2NyaXB0
LnJlc291cmNlLnNldENvbnRlbnQoc2NyaXB0LnNvdXJjZSwgcmV2ZXJ0SGFuZGxlKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIHZhciBzb3VyY2VGaWxlSWQgPSB0aGlzLl9zb3VyY2VGaWxlSWRGb3JT
Y3JpcHQoc2NyaXB0KTsKLSAgICAgICAgdGhpcy5fcmVjcmVhdGVTb3VyY2VGcmFtZShzb3VyY2VG
aWxlSWQpOwotICAgIH0sCi0KLSAgICBfYWRkU2NyaXB0OiBmdW5jdGlvbihzY3JpcHQpCi0gICAg
ewotICAgICAgICBpZiAoIXNjcmlwdC5zb3VyY2VVUkwpIHsKLSAgICAgICAgICAgIC8vIEFub255
bW91cyBzY3JpcHRzIGFyZSBzaG93biBvbmx5IHdoZW4gc3RlcHBpbmcuCisgICAgICAgIGlmICgh
c291cmNlRmlsZS51cmwpIHsKKyAgICAgICAgICAgIC8vIEFub255bW91cyBzb3VyY2VzIGFyZSBz
aG93biBvbmx5IHdoZW4gc3RlcHBpbmcuCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
IAotICAgICAgICB2YXIgcmVzb3VyY2UgPSB0aGlzLl9yZXNvdXJjZUZvclVSTChzY3JpcHQuc291
cmNlVVJMKTsKLSAgICAgICAgaWYgKHJlc291cmNlKSB7Ci0gICAgICAgICAgICBpZiAocmVzb3Vy
Y2UuZmluaXNoZWQpIHsKLSAgICAgICAgICAgICAgICAvLyBSZXNvdXJjZSBpcyBmaW5pc2hlZCwg
YmluZCB0aGUgc2NyaXB0IHJpZ2h0IGF3YXkuCi0gICAgICAgICAgICAgICAgc2NyaXB0LnJlc291
cmNlID0gcmVzb3VyY2U7Ci0KLSAgICAgICAgICAgICAgICAvLyBBZGQgcmVzb3VyY2UgdXJsIHRv
IGZpbGVzIHNlbGVjdCBpZiBub3QgYWxyZWFkeSBhZGRlZCB3aGlsZSBkZWJ1Z2dpbmcgaW5saW5l
ZCBzY3JpcHRzLgotICAgICAgICAgICAgICAgIGlmICghKHJlc291cmNlLnVybCBpbiB0aGlzLl9z
b3VyY2VGaWxlSWRUb0ZpbGVzU2VsZWN0T3B0aW9uKSkKLSAgICAgICAgICAgICAgICAgICAgdGhp
cy5fYWRkT3B0aW9uVG9GaWxlc1NlbGVjdEFuZFNob3dTb3VyY2VGcmFtZUlmTmVlZGVkKHJlc291
cmNlLnVybCk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIC8vIFJlc291
cmNlIGlzIG5vdCBmaW5pc2hlZCwgYmluZCB0aGUgc2NyaXB0IGxhdGVyLgotICAgICAgICAgICAg
ICAgIGlmICghcmVzb3VyY2UuX3NjcmlwdHNQZW5kaW5nUmVzb3VyY2VMb2FkKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIHJlc291cmNlLl9zY3JpcHRzUGVuZGluZ1Jlc291cmNlTG9hZCA9IFtdOwot
ICAgICAgICAgICAgICAgICAgICByZXNvdXJjZS5hZGRFdmVudExpc3RlbmVyKCJmaW5pc2hlZCIs
IHRoaXMuX3Jlc291cmNlTG9hZGluZ0ZpbmlzaGVkLCB0aGlzKTsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgcmVzb3VyY2UuX3NjcmlwdHNQZW5kaW5nUmVzb3VyY2VMb2FkLnB1
c2goc2NyaXB0KTsKLQotICAgICAgICAgICAgICAgIC8vIFNvdXJjZSBmcmFtZSBjb250ZW50IGlz
IG91dGRhdGVkIHNpbmNlIHdlIGhhdmUgbmV3IHNjcmlwdCBwYXJzZWQuCi0gICAgICAgICAgICAg
ICAgdGhpcy5fcmVjcmVhdGVTb3VyY2VGcmFtZShzY3JpcHQuc291cmNlVVJMKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfSBlbHNlIGlmICghKHNjcmlwdC5zb3VyY2VVUkwgaW4gdGhpcy5fc291
cmNlRmlsZUlkVG9GaWxlc1NlbGVjdE9wdGlvbikpIHsKLSAgICAgICAgICAgIC8vIFRoaXMgaXMg
YSBkeW5hbWljIHNjcmlwdCB3aXRoICIvL0Agc291cmNlVVJMPSIgY29tbWVudC4KLSAgICAgICAg
ICAgIHRoaXMuX2FkZE9wdGlvblRvRmlsZXNTZWxlY3RBbmRTaG93U291cmNlRnJhbWVJZk5lZWRl
ZChzY3JpcHQuc291cmNlVVJMKTsKLSAgICAgICAgfQotICAgIH0sCi0KLSAgICBfcmVzb3VyY2VG
b3JVUkw6IGZ1bmN0aW9uKHVybCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3Iu
bmV0d29ya01hbmFnZXIuaW5mbGlnaHRSZXNvdXJjZUZvclVSTCh1cmwpIHx8IFdlYkluc3BlY3Rv
ci5yZXNvdXJjZUZvclVSTCh1cmwpOwotICAgIH0sCi0KLSAgICBfcmVzb3VyY2VMb2FkaW5nRmlu
aXNoZWQ6IGZ1bmN0aW9uKGUpCi0gICAgewotICAgICAgICB2YXIgcmVzb3VyY2UgPSBlLnRhcmdl
dDsKLQotICAgICAgICAvLyBCaW5kIHNjcmlwdHMgdG8gcmVzb3VyY2UuCi0gICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgcmVzb3VyY2UuX3NjcmlwdHNQZW5kaW5nUmVzb3VyY2VMb2FkLmxlbmd0
aDsgKytpKSB7Ci0gICAgICAgICAgICB2YXIgc2NyaXB0ID0gcmVzb3VyY2UuX3NjcmlwdHNQZW5k
aW5nUmVzb3VyY2VMb2FkW2ldOwotICAgICAgICAgICAgc2NyaXB0LnJlc291cmNlID0gcmVzb3Vy
Y2U7Ci0gICAgICAgIH0KLSAgICAgICAgZGVsZXRlIHJlc291cmNlLl9zY3JpcHRzUGVuZGluZ1Jl
c291cmNlTG9hZDsKLQotICAgICAgICAvLyBSZWNyZWF0ZSBzb3VyY2UgZnJhbWUgdG8gc2hvdyBy
ZXNvdXJjZSBjb250ZW50LgotICAgICAgICB0aGlzLl9yZWNyZWF0ZVNvdXJjZUZyYW1lKHJlc291
cmNlLnVybCk7Ci0KLSAgICAgICAgLy8gQWRkIHJlc291cmNlIHVybCB0byBmaWxlcyBzZWxlY3Qg
aWYgbm90IGFscmVhZHkgYWRkZWQgd2hpbGUgZGVidWdnaW5nIGlubGluZWQgc2NyaXB0cy4KLSAg
ICAgICAgaWYgKCEocmVzb3VyY2UudXJsIGluIHRoaXMuX3NvdXJjZUZpbGVJZFRvRmlsZXNTZWxl
Y3RPcHRpb24pKQotICAgICAgICAgICAgdGhpcy5fYWRkT3B0aW9uVG9GaWxlc1NlbGVjdEFuZFNo
b3dTb3VyY2VGcmFtZUlmTmVlZGVkKHJlc291cmNlLnVybCk7Ci0gICAgfSwKLQotICAgIF9hZGRP
cHRpb25Ub0ZpbGVzU2VsZWN0QW5kU2hvd1NvdXJjZUZyYW1lSWZOZWVkZWQ6IGZ1bmN0aW9uKHVy
bCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX2FkZE9wdGlvblRvRmlsZXNTZWxlY3QodXJsKTsKKyAg
ICAgICAgdGhpcy5fYWRkT3B0aW9uVG9GaWxlc1NlbGVjdChzb3VyY2VGaWxlLmlkKTsKIAogICAg
ICAgICB2YXIgbGFzdFZpZXdlZFVSTCA9IFdlYkluc3BlY3Rvci5zZXR0aW5ncy5sYXN0Vmlld2Vk
U2NyaXB0RmlsZTsKICAgICAgICAgaWYgKHRoaXMuX2ZpbGVzU2VsZWN0RWxlbWVudC5sZW5ndGgg
PT09IDEpIHsKICAgICAgICAgICAgIC8vIE9wdGlvbiB3ZSBqdXN0IGFkZGVkIGlzIHRoZSBvbmx5
IG9wdGlvbiBpbiBmaWxlcyBzZWxlY3QuCiAgICAgICAgICAgICAvLyBXZSBoYXZlIHRvIHNob3cg
Y29ycmVzcG9uZGluZyBzb3VyY2UgZnJhbWUgaW1tZWRpYXRlbHkuCi0gICAgICAgICAgICB0aGlz
Ll9zaG93U291cmNlRnJhbWVBbmRBZGRUb0hpc3RvcnkodXJsKTsKKyAgICAgICAgICAgIHRoaXMu
X3Nob3dTb3VyY2VGcmFtZUFuZEFkZFRvSGlzdG9yeShzb3VyY2VGaWxlLmlkKTsKICAgICAgICAg
ICAgIC8vIFJlc3RvcmUgb3JpZ2luYWwgdmFsdWUgb2YgbGFzdFZpZXdlZFNjcmlwdEZpbGUgYmVj
YXVzZQogICAgICAgICAgICAgLy8gc291cmNlIGZyYW1lIHdhcyBzaG93biBhcyBhIHJlc3VsdCBv
ZiBpbml0aWFsIGxvYWQuCiAgICAgICAgICAgICBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MubGFzdFZp
ZXdlZFNjcmlwdEZpbGUgPSBsYXN0Vmlld2VkVVJMOwotICAgICAgICB9IGVsc2UgaWYgKHVybCA9
PT0gbGFzdFZpZXdlZFVSTCkKLSAgICAgICAgICAgIHRoaXMuX3Nob3dTb3VyY2VGcmFtZUFuZEFk
ZFRvSGlzdG9yeSh1cmwpOworICAgICAgICB9IGVsc2UgaWYgKHNvdXJjZUZpbGUudXJsID09PSBs
YXN0Vmlld2VkVVJMKQorICAgICAgICAgICAgdGhpcy5fc2hvd1NvdXJjZUZyYW1lQW5kQWRkVG9I
aXN0b3J5KHNvdXJjZUZpbGUuaWQpOwogICAgIH0sCiAKICAgICBfYWRkT3B0aW9uVG9GaWxlc1Nl
bGVjdDogZnVuY3Rpb24oc291cmNlRmlsZUlkKQogICAgIHsKLSAgICAgICAgdmFyIHNjcmlwdCA9
IHRoaXMuX3NjcmlwdEZvclNvdXJjZUZpbGVJZChzb3VyY2VGaWxlSWQpOworICAgICAgICB2YXIg
c291cmNlRmlsZSA9IHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLnNvdXJjZUZpbGUoc291cmNlRmls
ZUlkKTsKICAgICAgICAgdmFyIHNlbGVjdCA9IHRoaXMuX2ZpbGVzU2VsZWN0RWxlbWVudDsKICAg
ICAgICAgdmFyIG9wdGlvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpOwotICAg
ICAgICBvcHRpb24udGV4dCA9IHNjcmlwdC5zb3VyY2VVUkwgPyBXZWJJbnNwZWN0b3IuZGlzcGxh
eU5hbWVGb3JVUkwoc2NyaXB0LnNvdXJjZVVSTCkgOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIihw
cm9ncmFtKSIpOwotICAgICAgICBpZiAoc2NyaXB0LndvcmxkVHlwZSA9PT0gV2ViSW5zcGVjdG9y
LlNjcmlwdC5Xb3JsZFR5cGUuRVhURU5TSU9OU19XT1JMRCkKKyAgICAgICAgb3B0aW9uLnRleHQg
PSBzb3VyY2VGaWxlLnVybCA/IFdlYkluc3BlY3Rvci5kaXNwbGF5TmFtZUZvclVSTChzb3VyY2VG
aWxlLnVybCkgOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIihwcm9ncmFtKSIpOworICAgICAgICBp
ZiAoc291cmNlRmlsZS5pc0V4dGVuc2lvblNjcmlwdCkKICAgICAgICAgICAgIG9wdGlvbi5hZGRT
dHlsZUNsYXNzKCJleHRlbnNpb24tc2NyaXB0Iik7CiAgICAgICAgIGZ1bmN0aW9uIG9wdGlvbkNv
bXBhcmUoYSwgYikKICAgICAgICAgewpAQCAtNTc4LDkgKzUwMyw5IEBAIFdlYkluc3BlY3Rvci5T
Y3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB2YXIgc291cmNlRnJhbWUgPSB0aGlz
Ll9zb3VyY2VGcmFtZUZvclNvdXJjZUZpbGVJZChzb3VyY2VGaWxlSWQpOwogICAgICAgICB0aGlz
LnZpc2libGVWaWV3ID0gc291cmNlRnJhbWU7CiAKLSAgICAgICAgdmFyIHNjcmlwdCA9IHRoaXMu
X3NjcmlwdEZvclNvdXJjZUZpbGVJZChzb3VyY2VGaWxlSWQpOwotICAgICAgICBpZiAoc2NyaXB0
LnNvdXJjZVVSTCkKLSAgICAgICAgICAgIFdlYkluc3BlY3Rvci5zZXR0aW5ncy5sYXN0Vmlld2Vk
U2NyaXB0RmlsZSA9IHNjcmlwdC5zb3VyY2VVUkw7CisgICAgICAgIHZhciBzb3VyY2VGaWxlID0g
dGhpcy5fcHJlc2VudGF0aW9uTW9kZWwuc291cmNlRmlsZShzb3VyY2VGaWxlSWQpOworICAgICAg
ICBpZiAoc291cmNlRmlsZS51cmwpCisgICAgICAgICAgICBXZWJJbnNwZWN0b3Iuc2V0dGluZ3Mu
bGFzdFZpZXdlZFNjcmlwdEZpbGUgPSBzb3VyY2VGaWxlLnVybDsKIAogICAgICAgICByZXR1cm4g
c291cmNlRnJhbWU7CiAgICAgfSwKQEAgLTYwMiwxNCArNTI3LDE1IEBAIFdlYkluc3BlY3Rvci5T
Y3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gc291cmNlRnJhbWU7CiAg
ICAgfSwKIAotICAgIF9yZWNyZWF0ZVNvdXJjZUZyYW1lOiBmdW5jdGlvbihzb3VyY2VGaWxlSWQp
CisgICAgX3NvdXJjZUZpbGVDaGFuZ2VkOiBmdW5jdGlvbihldmVudCkKICAgICB7CisgICAgICAg
IHZhciBzb3VyY2VGaWxlSWQgPSBldmVudC5kYXRhLmlkOworCiAgICAgICAgIHZhciBvbGRTb3Vy
Y2VGcmFtZSA9IHRoaXMuX3NvdXJjZUZpbGVJZFRvU291cmNlRnJhbWVbc291cmNlRmlsZUlkXTsK
ICAgICAgICAgaWYgKCFvbGRTb3VyY2VGcmFtZSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgb2xkU291cmNlRnJhbWUucmVtb3ZlRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU291cmNl
RnJhbWUuRXZlbnRzLkxvYWRlZCwgdGhpcy5fc291cmNlRnJhbWVMb2FkZWQsIHRoaXMpOwogICAg
ICAgICBkZWxldGUgdGhpcy5fc291cmNlRmlsZUlkVG9Tb3VyY2VGcmFtZVtzb3VyY2VGaWxlSWRd
OwotICAgICAgICBvbGRTb3VyY2VGcmFtZS5yZW1vdmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rv
ci5Tb3VyY2VGcmFtZS5FdmVudHMuTG9hZGVkLCB0aGlzLl9zb3VyY2VGcmFtZUxvYWRlZCwgdGhp
cyk7CiAgICAgICAgIGlmICh0aGlzLnZpc2libGVWaWV3ICE9PSBvbGRTb3VyY2VGcmFtZSkKICAg
ICAgICAgICAgIHJldHVybjsKIApAQCAtNjQ0LDExICs1NzAsNiBAQCBXZWJJbnNwZWN0b3IuU2Ny
aXB0c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogICAgIH0sCiAKLSAgICBfc291cmNl
RmlsZUlkRm9yU2NyaXB0OiBmdW5jdGlvbihzY3JpcHQpCi0gICAgewotICAgICAgICByZXR1cm4g
c2NyaXB0LnNvdXJjZVVSTCB8fCBzY3JpcHQuc291cmNlSUQ7Ci0gICAgfSwKLQogICAgIF9zY3Jp
cHRGb3JTb3VyY2VGaWxlSWQ6IGZ1bmN0aW9uKHNvdXJjZUZpbGVJZCkKICAgICB7CiAgICAgICAg
IGZ1bmN0aW9uIGZpbHRlcihzY3JpcHQpCkBAIC02NzcsMTEgKzU5OCwxMiBAQCBXZWJJbnNwZWN0
b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5zaWRlYmFyUGFuZXMu
c2NvcGVjaGFpbi51cGRhdGUoY2FsbEZyYW1lKTsKICAgICAgICAgdGhpcy5zaWRlYmFyUGFuZXMu
d2F0Y2hFeHByZXNzaW9ucy5yZWZyZXNoRXhwcmVzc2lvbnMoKTsKIAorICAgICAgICBpZiAoIWNh
bGxGcmFtZS5zb3VyY2VMb2NhdGlvbikKKyAgICAgICAgICAgIHJldHVybjsKKwogICAgICAgICB2
YXIgc291cmNlRmlsZUlkID0gY2FsbEZyYW1lLnNvdXJjZUxvY2F0aW9uLnNvdXJjZUZpbGVJZDsK
ICAgICAgICAgaWYgKCEoc291cmNlRmlsZUlkIGluIHRoaXMuX3NvdXJjZUZpbGVJZFRvRmlsZXNT
ZWxlY3RPcHRpb24pKSB7Ci0gICAgICAgICAgICAvLyBUaGlzIGhhcHBlbnMgaW4gdHdvIGNhc2Vz
OgotICAgICAgICAgICAgLy8gMSkgQ3VycmVudCBjYWxsIGZyYW1lIGZ1bmN0aW9uIGlzIGRlZmlu
ZWQgaW4gYW5vbnltb3VzIHNjcmlwdCAoYW5vbnltb3VzIHNjcmlwdHMgYXJlbid0IGFkZGVkIHRv
IGZpbGVzIHNlbGVjdCBieSBkZWZhdWx0KQotICAgICAgICAgICAgLy8gMikgV2UgYXJlIGRlYnVn
Z2luZyBzeW5jaHJvbm91c2x5IGV4ZWN1dGVkIGlubGluZWQgc2NyaXB0IGFuZCB0aGVyZSBpcyBu
byByZXNvdXJjZSBzbyBmYXIKKyAgICAgICAgICAgIC8vIEFub255bW91cyBzY3JpcHRzIGFyZSBu
b3QgYWRkZWQgdG8gZmlsZXMgc2VsZWN0IGJ5IGRlZmF1bHQuCiAgICAgICAgICAgICB0aGlzLl9h
ZGRPcHRpb25Ub0ZpbGVzU2VsZWN0KHNvdXJjZUZpbGVJZCk7CiAgICAgICAgIH0KICAgICAgICAg
dmFyIHNvdXJjZUZyYW1lID0gdGhpcy5fc2hvd1NvdXJjZUZyYW1lQW5kQWRkVG9IaXN0b3J5KHNv
dXJjZUZpbGVJZCk7CkBAIC0xMDcwLDE2ICs5OTIsMTEgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUZy
YW1lRGVsZWdhdGVGb3JTY3JpcHRzUGFuZWwgPSBmdW5jdGlvbihtb2RlbCwgc291cmNlRmlsZUlk
LAogV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lRGVsZWdhdGVGb3JTY3JpcHRzUGFuZWwucHJvdG90
eXBlID0gewogICAgIHJlcXVlc3RDb250ZW50OiBmdW5jdGlvbihjYWxsYmFjaykKICAgICB7Ci0g
ICAgICAgIGZ1bmN0aW9uIGRpZEdldFRleHRBbmRTY3JpcHRSYW5nZXMobWltZVR5cGUsIHRleHQs
IHNjcmlwdFJhbmdlcykKKyAgICAgICAgZnVuY3Rpb24gZGlkUmVxdWVzdFNvdXJjZUZpbGVDb250
ZW50KG1pbWVUeXBlLCB0ZXh0KQogICAgICAgICB7Ci0gICAgICAgICAgICB0aGlzLl9jb250ZW50
ID0gbmV3IFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZUNvbnRlbnQodGV4dCwgbmV3IFdlYkluc3Bl
Y3Rvci5JZGVudGljYWxTb3VyY2VNYXBwaW5nKCksIHNjcmlwdFJhbmdlcyk7Ci0gICAgICAgICAg
ICBjYWxsYmFjayhtaW1lVHlwZSwgdGhpcy5fY29udGVudCk7CisgICAgICAgICAgICBjYWxsYmFj
ayhtaW1lVHlwZSwgeyB0ZXh0OiB0ZXh0IH0pOwogICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHRo
aXMuX3NjcmlwdC5yZXNvdXJjZSkKLSAgICAgICAgICAgIHRoaXMuX2xvYWRSZXNvdXJjZUNvbnRl
bnQodGhpcy5fc2NyaXB0LnJlc291cmNlLCBkaWRHZXRUZXh0QW5kU2NyaXB0UmFuZ2VzLmJpbmQo
dGhpcykpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0aGlzLl9sb2FkQW5kQ29uY2F0ZW5h
dGVTY3JpcHRzQ29udGVudChkaWRHZXRUZXh0QW5kU2NyaXB0UmFuZ2VzLmJpbmQodGhpcykpOwor
ICAgICAgICB0aGlzLl9tb2RlbC5yZXF1ZXN0U291cmNlRmlsZUNvbnRlbnQodGhpcy5fc291cmNl
RmlsZUlkLCBkaWRSZXF1ZXN0U291cmNlRmlsZUNvbnRlbnQuYmluZCh0aGlzKSk7CiAgICAgfSwK
IAogICAgIF9sb2FkUmVzb3VyY2VDb250ZW50OiBmdW5jdGlvbihyZXNvdXJjZSwgY2FsbGJhY2sp
Cg==
</data>
<flag name="review"
          id="78123"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>