<?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>58649</bug_id>
          
          <creation_ts>2011-04-15 02:04:29 -0700</creation_ts>
          <short_desc>Web Inspector: refactor resource setContent / revisions infrastructure to get rid of onRevert callback.</short_desc>
          <delta_ts>2011-04-15 05:39:54 -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>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>386481</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-04-15 02:04:29 -0700</bug_when>
    <thetext>Instead, we will have DomainModel/Resource binding responsible for changing underlying model upon resource changes and vice versa.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386486</commentid>
    <comment_count>1</comment_count>
      <attachid>89757</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-04-15 02:11:31 -0700</bug_when>
    <thetext>Created attachment 89757
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386496</commentid>
    <comment_count>2</comment_count>
      <attachid>89757</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-04-15 03:39:40 -0700</bug_when>
    <thetext>Comment on attachment 89757
Patch

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

&gt; Source/WebCore/inspector/front-end/CSSStyleModel.js:633
&gt; +    _innerSetContent: function(url, content, majorChange, userCallback, error)

Do we really need the &quot;error&quot; argument here? It looks confusing.

&gt; Source/WebCore/inspector/front-end/DebuggerPresentationModel.js:150
&gt; +                this._updateBreakpointsAfterLiveEdit(sourceFile.id, oldSource, newSource);

This should only be called when content is changed via &quot;revert to this revision&quot;. When editing script in scripts panel breakpoints are moved accurately by editor, and we don&apos;t want to move them again here.

&gt; Source/WebCore/inspector/front-end/DebuggerPresentationModel.js:155
&gt; +                sourceFile.reload();

Why this changed? Errors during live edit should not lead to source frame reload.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386507</commentid>
    <comment_count>3</comment_count>
      <attachid>89768</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-04-15 04:20:28 -0700</bug_when>
    <thetext>Created attachment 89768
[PATCH] Review comments addressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386523</commentid>
    <comment_count>4</comment_count>
      <attachid>89768</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-04-15 05:02:29 -0700</bug_when>
    <thetext>Comment on attachment 89768
[PATCH] Review comments addressed.

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

LGTM with nit.

&gt; Source/WebCore/inspector/front-end/CSSStyleModel.js:635
&gt; +        if (error)

Return.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386525</commentid>
    <comment_count>5</comment_count>
      <attachid>89770</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-04-15 05:04:23 -0700</bug_when>
    <thetext>Created attachment 89770
[PATCH] Review comments addressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386529</commentid>
    <comment_count>6</comment_count>
      <attachid>89770</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-04-15 05:24:41 -0700</bug_when>
    <thetext>Comment on attachment 89770
[PATCH] Review comments addressed.

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

&gt; Source/WebCore/inspector/front-end/CSSStyleModel.js:179
&gt; +            this.dispatchEventToListeners(WebInspector.CSSStyleModel.Events.StyleSheetChanged, {styleSheetId:styleSheetId, content:content, majorChange:majorChange});

A common object notation across Web Inspector is: { prop1: prop1Val, prop2: prop2Val }

&gt; Source/WebCore/inspector/front-end/CSSStyleModel.js:643
&gt; +                userCallback(&quot;No stylesheet found&quot;);

A good idea is to include the url into the message. We also can refine the message saying that the stylesheet is not accessible from DOM (since this stylesheet can be linked as &quot;stylesheet alternate&quot; and still be non-accessible).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386530</commentid>
    <comment_count>7</comment_count>
      <attachid>89770</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-04-15 05:31:51 -0700</bug_when>
    <thetext>Comment on attachment 89770
[PATCH] Review comments addressed.

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

&gt; LayoutTests/inspector/styles/get-set-stylesheet-text.html:45
&gt; +                InspectorTest.addResult(&quot;Failed to set stylesheet text&quot;);

Can you add the error string to the result as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386534</commentid>
    <comment_count>8</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-04-15 05:39:54 -0700</bug_when>
    <thetext>Committed r83962: &lt;http://trac.webkit.org/changeset/83962&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89757</attachid>
            <date>2011-04-15 02:11:31 -0700</date>
            <delta_ts>2011-04-15 04:20:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58649-20110415131127.patch</filename>
            <type>text/plain</type>
            <size>41745</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODM4NDUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9zdHlsZXMvZ2V0LXNldC1zdHlsZXNoZWV0LXRleHQuaHRtbCBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9zdHlsZXMvZ2V0LXNldC1zdHlsZXNoZWV0LXRleHQuaHRtbAppbmRleCBhMGIxMDVl
ZmYyOGIyNTNlNWUxYmZjZmQzZTQ0MWQyNjNmM2U4MGUyLi5iOGI1ZGVhNDc5NTZlZmIyNDExYjg3
MWIzYzU2M2U0M2U0OGRiNDIxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5
bGVzL2dldC1zZXQtc3R5bGVzaGVldC10ZXh0Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3N0eWxlcy9nZXQtc2V0LXN0eWxlc2hlZXQtdGV4dC5odG1sCkBAIC0zOSwxMCArMzksMTAg
QEAgZnVuY3Rpb24gdGVzdCgpCiAKICAgICBmdW5jdGlvbiB0ZXN0U2V0VGV4dChuZXh0KQogICAg
IHsKLSAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2soc3VjY2VzcykKKyAgICAgICAgZnVuY3Rpb24g
Y2FsbGJhY2soZXJyb3IpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmICghc3VjY2Vzcykgewot
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkRXJyb3IoIkZhaWxlZCB0byBzZXQgc3R5
bGVzaGVldCB0ZXh0Iik7CisgICAgICAgICAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiRmFpbGVkIHRvIHNldCBzdHlsZXNoZWV0IHRleHQi
KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCBhODI4ZmQ0NjkyYmJmNTM3ZjlhN2I2ZTJjZmZiMTNhZGU2MWVmYjNhLi5lMDVhMGRjMzQ1YTNj
ZmZjMWYyMzhjMzcxMmQ2Y2Q2MjY2MTAyMTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODEgQEAK
KzIwMTEtMDQtMTUgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBnb29nbGUuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6
IHJlZmFjdG9yIHJlc291cmNlIHNldENvbnRlbnQgLyByZXZpc2lvbnMgaW5mcmFzdHJ1Y3R1cmUg
dG8gZ2V0CisgICAgICAgIHJpZCBvZiBvblJldmVydCBjYWxsYmFjay4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4NjQ5CisKKyAgICAgICAgSW5zdGVh
ZCwgd2Ugd2lsbCBoYXZlIERvbWFpbk1vZGVsL1Jlc291cmNlIGJpbmRpbmcgcmVzcG9uc2libGUg
Zm9yIGNoYW5naW5nCisgICAgICAgIHVuZGVybHlpbmcgbW9kZWwgdXBvbiByZXNvdXJjZSBjaGFu
Z2VzIGFuZCB2aWNlIHZlcnNhLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvci5qc29u
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0U3R5bGVTaGVldCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0U3R5bGVTaGVldFRleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFN0eWxlU2hlZXRUZXh0KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpzZXRQcm9wZXJ0eVRleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OnRvZ2dsZVByb3BlcnR5KToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNTU0FnZW50OjpzZXRSdWxlU2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmFzc2VydFN0eWxlU2hlZXRGb3JJZCk6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250
LWVuZC9DU1NTdHlsZU1vZGVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9k
ZWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwucHJvdG90eXBlLnNldFJ1
bGVTZWxlY3Rvcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5wcm90b3R5
cGUuYWRkUnVsZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5wcm90b3R5
cGUuX2ZpcmVTdHlsZVNoZWV0Q2hhbmdlZC5jYWxsYmFjayk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuQ1NTU3R5bGVNb2RlbC5wcm90b3R5cGUuX2ZpcmVTdHlsZVNoZWV0Q2hhbmdlZCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5wcm90b3R5cGUuc2V0U3R5bGVTaGVldFRl
eHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb24ucHJvdG90eXBl
Lmluc2VydFByb3BlcnR5QXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1Byb3BlcnR5LnBy
b3RvdHlwZS5zZXRUZXh0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NQcm9wZXJ0eS5wcm90
b3R5cGUuc2V0VGV4dC5jYWxsYmFjayk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTUHJvcGVy
dHkucHJvdG90eXBlLnNldERpc2FibGVkLmNhbGxiYWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5DU1NQcm9wZXJ0eS5wcm90b3R5cGUuc2V0RGlzYWJsZWQpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkNTU1N0eWxlU2hlZXQucHJvdG90eXBlLnNldFRleHQpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkNTU1N0eWxlTW9kZWxSZXNvdXJjZUJpbmRpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkNTU1N0eWxlTW9kZWxSZXNvdXJjZUJpbmRpbmcucHJvdG90eXBlLnNldENvbnRlbnQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWxSZXNvdXJjZUJpbmRpbmcucHJvdG90eXBl
Ll9mcmFtZU5hdmlnYXRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbFJl
c291cmNlQmluZGluZy5wcm90b3R5cGUuX2lubmVyU2V0Q29udGVudCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuQ1NTU3R5bGVNb2RlbFJlc291cmNlQmluZGluZy5wcm90b3R5cGUuX2xvYWRTdHls
ZVNoZWV0SGVhZGVycyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbFJlc291
cmNlQmluZGluZy5wcm90b3R5cGUuX3N0eWxlU2hlZXRDaGFuZ2VkLnNldENvbnRlbnQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWxSZXNvdXJjZUJpbmRpbmcucHJvdG90eXBl
Ll9zdHlsZVNoZWV0Q2hhbmdlZCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1
Z2dlclByZXNlbnRhdGlvbk1vZGVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2Vy
UHJlc2VudGF0aW9uTW9kZWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2Vu
dGF0aW9uTW9kZWwucHJvdG90eXBlLmVkaXRTY3JpcHRTb3VyY2UuZGlkRWRpdFNjcmlwdFNvdXJj
ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90
b3R5cGUuZWRpdFNjcmlwdFNvdXJjZS5kaWRSZWNlaXZlU291cmNlKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZS5lZGl0U2NyaXB0U291
cmNlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsUmVz
b3VyY2VCaW5kaW5nKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlv
bk1vZGVsUmVzb3VyY2VCaW5kaW5nLnByb3RvdHlwZS5jYW5TZXRDb250ZW50KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsUmVzb3VyY2VCaW5kaW5nLnBy
b3RvdHlwZS5zZXRDb250ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL09iamVj
dC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlLmhhc0V2ZW50TGlz
dGVuZXJzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlLmpzOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNv
dXJjZS5yZWdpc3RlckRvbWFpbk1vZGVsQmluZGluZyk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
UmVzb3VyY2UucHJvdG90eXBlLmlzRWRpdGFibGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJl
c291cmNlLnByb3RvdHlwZS5zZXRDb250ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNv
dXJjZS5wcm90b3R5cGUuYWRkUmV2aXNpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291
cmNlLnByb3RvdHlwZS5yZXZlcnRUb1RoaXMuY2FsbGJhY2spOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlJlc291cmNlLnByb3RvdHlwZS5yZXZlcnRUb1RoaXMpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlJlc291cmNlRG9tYWluTW9kZWxCaW5kaW5nKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5S
ZXNvdXJjZURvbWFpbk1vZGVsQmluZGluZy5wcm90b3R5cGUuY2FuU2V0Q29udGVudCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VEb21haW5Nb2RlbEJpbmRpbmcucHJvdG90eXBlLnNl
dENvbnRlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VWaWV3Lmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlVmlldy5jcmVhdGVSZXNvdXJjZVZpZXcp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlVmlldy5yZXNvdXJjZVZpZXdUeXBlTWF0
Y2hlc1Jlc291cmNlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVNvdXJjZUZyYW1l
LnByb3RvdHlwZS5pc0NvbnRlbnRFZGl0YWJsZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVz
b3VyY2VTb3VyY2VGcmFtZS5wcm90b3R5cGUuZWRpdENvbnRlbnQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlJlc291cmNlU291cmNlRnJhbWUucHJvdG90eXBlLmVuZEVkaXRpbmcpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlJlc291cmNlU291cmNlRnJhbWUucHJvdG90eXBlLl9jbGVhckluY3Jl
bWVudGFsVXBkYXRlVGltZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlU291cmNl
RnJhbWUucHJvdG90eXBlLl9yZXF1ZXN0Q29udGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9SZXNvdXJjZXNQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJj
ZXNQYW5lbC5wcm90b3R5cGUuX3Jlc291cmNlQWRkZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkZyYW1lUmVzb3VyY2VUcmVlRWxlbWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRnJhbWVS
ZXNvdXJjZVRyZWVFbGVtZW50LnByb3RvdHlwZS5fcG9wdWxhdGVSZXZpc2lvbnMpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkZyYW1lUmVzb3VyY2VUcmVlRWxlbWVudC5wcm90b3R5cGUuX3Jldmlz
aW9uQWRkZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZyYW1lUmVzb3VyY2VUcmVlRWxlbWVu
dC5wcm90b3R5cGUuX2FwcGVuZFJldmlzaW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQt
ZW5kL2luc3BlY3Rvci5odG1sOgorCiAyMDExLTA0LTE0ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRt
YW5AZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBZdXJ5IFNlbWlraGF0c2t5Lgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCmluZGV4IDQzYTAzOTNjMDdjZmU0
ZmM0MzMyY2QzNWNkZTYxNDFmYTkzYTA0MDkuLjBhOTViMzhiMzFiODc3NjkzMzYwZGQ2M2E5ZTVl
NzgxYjllMGQ2ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3IuanNvbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KQEAg
LTExNjMsNyArMTE2Myw2IEBACiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic3R5bGVT
aGVldElkIiwgInR5cGUiOiAic3RyaW5nIiB9CiAgICAgICAgICAgICAgICAgXSwKICAgICAgICAg
ICAgICAgICAicmV0dXJucyI6IFsKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ1cmwi
LCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiVGhlIHN0eWxlc2hlZXQgcmVzb3Vy
Y2UgVVJMLiIgfSwKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ0ZXh0IiwgInR5cGUi
OiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIlRoZSBzdHlsZXNoZWV0IHRleHQuIiB9CiAgICAg
ICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0
aGUgY3VycmVudCB0ZXh0dWFsIGNvbnRlbnQgYW5kIHRoZSBVUkwgZm9yIGEgc3R5bGVzaGVldC4i
CkBAIC0xMTc0LDkgKzExNzMsNiBAQAogICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInN0
eWxlU2hlZXRJZCIsICJ0eXBlIjogInN0cmluZyIgfSwKICAgICAgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJ0ZXh0IiwgInR5cGUiOiAic3RyaW5nIiB9CiAgICAgICAgICAgICAgICAgXSwKLSAg
ICAgICAgICAgICAgICAicmV0dXJucyI6IFsKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJzdWNjZXNzIiwgInR5cGUiOiAiYm9vbGVhbiIsICJkZXNjcmlwdGlvbiI6ICJXaGV0aGVyIHRo
ZSBtb2RpZmljYXRpb24gd2FzIHN1Y2Nlc3NmdWwuIiB9Ci0gICAgICAgICAgICAgICAgXSwKICAg
ICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiU2V0cyB0aGUgbmV3IHN0eWxlc2hlZXQgdGV4
dCwgdGhlcmVieSBpbnZhbGlkYXRpbmcgYWxsIGV4aXN0aW5nIDxjb2RlPkNTU1N0eWxlSWQ8L2Nv
ZGU+J3MgYW5kIDxjb2RlPkNTU1J1bGVJZDwvY29kZT4ncyBjb250YWluZWQgYnkgdGhpcyBzdHls
ZXNoZWV0LiIKICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRleCA4MGIyZTIwMzQzN2UxNTQw
MWI0NTVkNWNkMjk2YzgwMGJmYTcxMjdjLi40ZDI4ODc4ZDZjODI0ZDA0OThlN2MyZTM0NjhhNzdj
NjAyOGJmYWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q1NTQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NB
Z2VudC5jcHAKQEAgLTI3NywzMyArMjc3LDMyIEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6Omdl
dEFsbFN0eWxlU2hlZXRzKEVycm9yU3RyaW5nKiwgUmVmUHRyPEluc3BlY3RvckFycmF5PioKIAog
dm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0U3R5bGVTaGVldChFcnJvclN0cmluZyogZXJyb3JT
dHJpbmcsIGNvbnN0IFN0cmluZyYgc3R5bGVTaGVldElkLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
Piogc3R5bGVTaGVldE9iamVjdCkKIHsKLSAgICBJbnNwZWN0b3JTdHlsZVNoZWV0KiBpbnNwZWN0
b3JTdHlsZVNoZWV0ID0gc3R5bGVTaGVldEZvcklkKGVycm9yU3RyaW5nLCBzdHlsZVNoZWV0SWQp
OworICAgIEluc3BlY3RvclN0eWxlU2hlZXQqIGluc3BlY3RvclN0eWxlU2hlZXQgPSBhc3NlcnRT
dHlsZVNoZWV0Rm9ySWQoZXJyb3JTdHJpbmcsIHN0eWxlU2hlZXRJZCk7CiAgICAgaWYgKCFpbnNw
ZWN0b3JTdHlsZVNoZWV0KQogICAgICAgICByZXR1cm47CiAKICAgICAqc3R5bGVTaGVldE9iamVj
dCA9IGluc3BlY3RvclN0eWxlU2hlZXQtPmJ1aWxkT2JqZWN0Rm9yU3R5bGVTaGVldCgpOwogfQog
Ci12b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRTdHlsZVNoZWV0VGV4dChFcnJvclN0cmluZyog
ZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgc3R5bGVTaGVldElkLCBTdHJpbmcqIHVybCwgU3Ry
aW5nKiByZXN1bHQpCit2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRTdHlsZVNoZWV0VGV4dChF
cnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgc3R5bGVTaGVldElkLCBTdHJp
bmcqIHJlc3VsdCkKIHsKLSAgICBJbnNwZWN0b3JTdHlsZVNoZWV0KiBpbnNwZWN0b3JTdHlsZVNo
ZWV0ID0gc3R5bGVTaGVldEZvcklkKGVycm9yU3RyaW5nLCBzdHlsZVNoZWV0SWQpOworICAgIElu
c3BlY3RvclN0eWxlU2hlZXQqIGluc3BlY3RvclN0eWxlU2hlZXQgPSBhc3NlcnRTdHlsZVNoZWV0
Rm9ySWQoZXJyb3JTdHJpbmcsIHN0eWxlU2hlZXRJZCk7CiAgICAgaWYgKCFpbnNwZWN0b3JTdHls
ZVNoZWV0KQogICAgICAgICByZXR1cm47Ci0gICAgKnVybCA9IGluc3BlY3RvclN0eWxlU2hlZXQt
PmZpbmFsVVJMKCk7CisKICAgICBpbnNwZWN0b3JTdHlsZVNoZWV0LT50ZXh0KHJlc3VsdCk7CiB9
CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFN0eWxlU2hlZXRUZXh0KEVycm9yU3RyaW5n
KiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBzdHlsZVNoZWV0SWQsIGNvbnN0IFN0cmluZyYg
dGV4dCwgYm9vbCogc3VjY2VzcykKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFN0eWxlU2hl
ZXRUZXh0KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBzdHlsZVNoZWV0
SWQsIGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKLSAgICBJbnNwZWN0b3JTdHlsZVNoZWV0KiBpbnNw
ZWN0b3JTdHlsZVNoZWV0ID0gc3R5bGVTaGVldEZvcklkKGVycm9yU3RyaW5nLCBzdHlsZVNoZWV0
SWQpOwotICAgIGlmICghaW5zcGVjdG9yU3R5bGVTaGVldCkgewotICAgICAgICAqc3VjY2VzcyA9
IGZhbHNlOworICAgIEluc3BlY3RvclN0eWxlU2hlZXQqIGluc3BlY3RvclN0eWxlU2hlZXQgPSBh
c3NlcnRTdHlsZVNoZWV0Rm9ySWQoZXJyb3JTdHJpbmcsIHN0eWxlU2hlZXRJZCk7CisgICAgaWYg
KCFpbnNwZWN0b3JTdHlsZVNoZWV0KQogICAgICAgICByZXR1cm47Ci0gICAgfQogCi0gICAgKnN1
Y2Nlc3MgPSBpbnNwZWN0b3JTdHlsZVNoZWV0LT5zZXRUZXh0KHRleHQpOwotICAgIGlmICgqc3Vj
Y2VzcykKKyAgICBpZiAoaW5zcGVjdG9yU3R5bGVTaGVldC0+c2V0VGV4dCh0ZXh0KSkKICAgICAg
ICAgaW5zcGVjdG9yU3R5bGVTaGVldC0+cmVwYXJzZVN0eWxlU2hlZXQodGV4dCk7CisgICAgZWxz
ZQorICAgICAgICAqZXJyb3JTdHJpbmcgPSAiSW50ZXJuYWwgZXJyb3Igc2V0dGluZyBzdHlsZSBz
aGVldCB0ZXh0LiI7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFByb3BlcnR5VGV4
dChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
JiBmdWxsU3R5bGVJZCwgaW50IHByb3BlcnR5SW5kZXgsIGNvbnN0IFN0cmluZyYgdGV4dCwgYm9v
bCBvdmVyd3JpdGUsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiByZXN1bHQpCkBAIC0zMTEsNyAr
MzEwLDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6c2V0UHJvcGVydHlUZXh0KEVycm9yU3Ry
aW5nKiBlcnJvclN0cmluZywgY29uc3QgUmVmUHRyPEkKICAgICBJbnNwZWN0b3JDU1NJZCBjb21w
b3VuZElkKGZ1bGxTdHlsZUlkKTsKICAgICBBU1NFUlQoIWNvbXBvdW5kSWQuaXNFbXB0eSgpKTsK
IAotICAgIEluc3BlY3RvclN0eWxlU2hlZXQqIGluc3BlY3RvclN0eWxlU2hlZXQgPSBzdHlsZVNo
ZWV0Rm9ySWQoZXJyb3JTdHJpbmcsIGNvbXBvdW5kSWQuc3R5bGVTaGVldElkKCkpOworICAgIElu
c3BlY3RvclN0eWxlU2hlZXQqIGluc3BlY3RvclN0eWxlU2hlZXQgPSBhc3NlcnRTdHlsZVNoZWV0
Rm9ySWQoZXJyb3JTdHJpbmcsIGNvbXBvdW5kSWQuc3R5bGVTaGVldElkKCkpOwogICAgIGlmICgh
aW5zcGVjdG9yU3R5bGVTaGVldCkKICAgICAgICAgcmV0dXJuOwogCkBAIC0zMjUsNyArMzI0LDcg
QEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6dG9nZ2xlUHJvcGVydHkoRXJyb3JTdHJpbmcqIGVy
cm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8SW4KICAgICBJbnNwZWN0b3JDU1NJZCBjb21wb3VuZElk
KGZ1bGxTdHlsZUlkKTsKICAgICBBU1NFUlQoIWNvbXBvdW5kSWQuaXNFbXB0eSgpKTsKIAotICAg
IEluc3BlY3RvclN0eWxlU2hlZXQqIGluc3BlY3RvclN0eWxlU2hlZXQgPSBzdHlsZVNoZWV0Rm9y
SWQoZXJyb3JTdHJpbmcsIGNvbXBvdW5kSWQuc3R5bGVTaGVldElkKCkpOworICAgIEluc3BlY3Rv
clN0eWxlU2hlZXQqIGluc3BlY3RvclN0eWxlU2hlZXQgPSBhc3NlcnRTdHlsZVNoZWV0Rm9ySWQo
ZXJyb3JTdHJpbmcsIGNvbXBvdW5kSWQuc3R5bGVTaGVldElkKCkpOwogICAgIGlmICghaW5zcGVj
dG9yU3R5bGVTaGVldCkKICAgICAgICAgcmV0dXJuOwogCkBAIC0zMzksNyArMzM4LDcgQEAgdm9p
ZCBJbnNwZWN0b3JDU1NBZ2VudDo6c2V0UnVsZVNlbGVjdG9yKEVycm9yU3RyaW5nKiBlcnJvclN0
cmluZywgY29uc3QgUmVmUHRyPEkKICAgICBJbnNwZWN0b3JDU1NJZCBjb21wb3VuZElkKGZ1bGxS
dWxlSWQpOwogICAgIEFTU0VSVCghY29tcG91bmRJZC5pc0VtcHR5KCkpOwogCi0gICAgSW5zcGVj
dG9yU3R5bGVTaGVldCogaW5zcGVjdG9yU3R5bGVTaGVldCA9IHN0eWxlU2hlZXRGb3JJZChlcnJv
clN0cmluZywgY29tcG91bmRJZC5zdHlsZVNoZWV0SWQoKSk7CisgICAgSW5zcGVjdG9yU3R5bGVT
aGVldCogaW5zcGVjdG9yU3R5bGVTaGVldCA9IGFzc2VydFN0eWxlU2hlZXRGb3JJZChlcnJvclN0
cmluZywgY29tcG91bmRJZC5zdHlsZVNoZWV0SWQoKSk7CiAgICAgaWYgKCFpbnNwZWN0b3JTdHls
ZVNoZWV0KQogICAgICAgICByZXR1cm47CiAKQEAgLTQ3MSw3ICs0NzAsNyBAQCBJbnNwZWN0b3JT
dHlsZVNoZWV0KiBJbnNwZWN0b3JDU1NBZ2VudDo6dmlhSW5zcGVjdG9yU3R5bGVTaGVldChEb2N1
bWVudCogZG9jdW1lbgogICAgIHJldHVybiBpbnNwZWN0b3JTdHlsZVNoZWV0LmdldCgpOwogfQog
Ci1JbnNwZWN0b3JTdHlsZVNoZWV0KiBJbnNwZWN0b3JDU1NBZ2VudDo6c3R5bGVTaGVldEZvcklk
KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBzdHlsZVNoZWV0SWQpCitJ
bnNwZWN0b3JTdHlsZVNoZWV0KiBJbnNwZWN0b3JDU1NBZ2VudDo6YXNzZXJ0U3R5bGVTaGVldEZv
cklkKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBzdHlsZVNoZWV0SWQp
CiB7CiAgICAgSWRUb0luc3BlY3RvclN0eWxlU2hlZXQ6Oml0ZXJhdG9yIGl0ID0gbV9pZFRvSW5z
cGVjdG9yU3R5bGVTaGVldC5maW5kKHN0eWxlU2hlZXRJZCk7CiAgICAgaWYgKGl0ID09IG1faWRU
b0luc3BlY3RvclN0eWxlU2hlZXQuZW5kKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNTU0FnZW50LmgKaW5kZXggNDBiYzJhYmIzODdiNjc1MGU1OGQ3NDdlYjgwZTI5
MDU0YjlhNGU1NC4uYzUzMzdkNmY2Nzg4ZWFlNDYwMmQ0YjI0ZGU5MDNmMmE0ZTM3ZWZlMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgKQEAgLTY2LDgg
KzY2LDggQEAgcHVibGljOgogICAgIHZvaWQgZ2V0Q29tcHV0ZWRTdHlsZUZvck5vZGUoRXJyb3JT
dHJpbmcqLCBpbnQgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piogc3R5bGUpOwogICAg
IHZvaWQgZ2V0QWxsU3R5bGVTaGVldHMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yQXJy
YXk+KiBzdHlsZVNoZWV0SW5mb3MpOwogICAgIHZvaWQgZ2V0U3R5bGVTaGVldChFcnJvclN0cmlu
ZyosIGNvbnN0IFN0cmluZyYgc3R5bGVTaGVldElkLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piog
cmVzdWx0KTsKLSAgICB2b2lkIGdldFN0eWxlU2hlZXRUZXh0KEVycm9yU3RyaW5nKiwgY29uc3Qg
U3RyaW5nJiBzdHlsZVNoZWV0SWQsIFN0cmluZyogdXJsLCBTdHJpbmcqIHJlc3VsdCk7Ci0gICAg
dm9pZCBzZXRTdHlsZVNoZWV0VGV4dChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc3R5bGVT
aGVldElkLCBjb25zdCBTdHJpbmcmIHRleHQsIGJvb2wqIHN1Y2Nlc3MpOworICAgIHZvaWQgZ2V0
U3R5bGVTaGVldFRleHQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHN0eWxlU2hlZXRJZCwg
U3RyaW5nKiByZXN1bHQpOworICAgIHZvaWQgc2V0U3R5bGVTaGVldFRleHQoRXJyb3JTdHJpbmcq
LCBjb25zdCBTdHJpbmcmIHN0eWxlU2hlZXRJZCwgY29uc3QgU3RyaW5nJiB0ZXh0KTsKICAgICB2
b2lkIHNldFByb3BlcnR5VGV4dChFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+JiBzdHlsZUlkLCBpbnQgcHJvcGVydHlJbmRleCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBi
b29sIG92ZXJ3cml0ZSwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIHJlc3VsdCk7CiAgICAgdm9p
ZCB0b2dnbGVQcm9wZXJ0eShFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+JiBzdHlsZUlkLCBpbnQgcHJvcGVydHlJbmRleCwgYm9vbCBkaXNhYmxlLCBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiogcmVzdWx0KTsKICAgICB2b2lkIHNldFJ1bGVTZWxlY3RvcihFcnJvclN0
cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBydWxlSWQsIGNvbnN0IFN0cmlu
ZyYgc2VsZWN0b3IsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiByZXN1bHQpOwpAQCAtODcsNyAr
ODcsNyBAQCBwcml2YXRlOgogCiAgICAgSW5zcGVjdG9yU3R5bGVTaGVldCogYmluZFN0eWxlU2hl
ZXQoQ1NTU3R5bGVTaGVldCopOwogICAgIEluc3BlY3RvclN0eWxlU2hlZXQqIHZpYUluc3BlY3Rv
clN0eWxlU2hlZXQoRG9jdW1lbnQqLCBib29sIGNyZWF0ZUlmQWJzZW50KTsKLSAgICBJbnNwZWN0
b3JTdHlsZVNoZWV0KiBzdHlsZVNoZWV0Rm9ySWQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcm
KTsKKyAgICBJbnNwZWN0b3JTdHlsZVNoZWV0KiBhc3NlcnRTdHlsZVNoZWV0Rm9ySWQoRXJyb3JT
dHJpbmcqLCBjb25zdCBTdHJpbmcmKTsKICAgICBTdHJpbmcgZGV0ZWN0T3JpZ2luKENTU1N0eWxl
U2hlZXQqIHBhZ2VTdHlsZVNoZWV0LCBEb2N1bWVudCogb3duZXJEb2N1bWVudCk7CiAKICAgICBQ
YXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBidWlsZEFycmF5Rm9yUnVsZUxpc3QoQ1NTUnVsZUxp
c3QqIHJ1bGVMaXN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvQ1NTU3R5bGVNb2RlbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvQ1NTU3R5bGVNb2RlbC5qcwppbmRleCAzOGY1Mjg0NGNjM2JkYzU0NTFlMTNjZjFmOTM0OTI3
YThjZGY4NTdmLi40MDNmZjk1ZTk4MjFlNmNlM2RhODVmMzJiMDNjMjM1Y2MzZTUyNDZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1N0eWxlTW9kZWwu
anMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTdHlsZU1vZGVs
LmpzCkBAIC0zMCw2ICszMCw3IEBACiAKIFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsID0gZnVu
Y3Rpb24oKQogeworICAgIG5ldyBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbFJlc291cmNlQmlu
ZGluZyh0aGlzKTsKIH0KIAogV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwucGFyc2VSdWxlQXJy
YXlQYXlsb2FkID0gZnVuY3Rpb24ocnVsZUFycmF5KQpAQCAtNDAsNiArNDEsMTAgQEAgV2ViSW5z
cGVjdG9yLkNTU1N0eWxlTW9kZWwucGFyc2VSdWxlQXJyYXlQYXlsb2FkID0gZnVuY3Rpb24ocnVs
ZUFycmF5KQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK1dlYkluc3BlY3Rvci5DU1NTdHlsZU1v
ZGVsLkV2ZW50cyA9IHsKKyAgICBTdHlsZVNoZWV0Q2hhbmdlZDogMAorfQorCiBXZWJJbnNwZWN0
b3IuQ1NTU3R5bGVNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgZ2V0U3R5bGVzQXN5bmM6IGZ1bmN0
aW9uKG5vZGVJZCwgdXNlckNhbGxiYWNrKQogICAgIHsKQEAgLTEyNCw3ICsxMjksNyBAQCBXZWJJ
bnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB2YXIgZG9l
c0FmZmVjdFNlbGVjdGVkTm9kZSA9IChzZWxlY3RlZE5vZGVJZHMuaW5kZXhPZihub2RlSWQpID49
IDApOwogICAgICAgICAgICAgdmFyIHJ1bGUgPSBXZWJJbnNwZWN0b3IuQ1NTUnVsZS5wYXJzZVBh
eWxvYWQocnVsZVBheWxvYWQpOwogICAgICAgICAgICAgc3VjY2Vzc0NhbGxiYWNrKHJ1bGUsIGRv
ZXNBZmZlY3RTZWxlY3RlZE5vZGUpOwotICAgICAgICAgICAgdGhpcy5fc3R5bGVTaGVldENoYW5n
ZWQocnVsZS5pZC5zdHlsZVNoZWV0SWQsIHRydWUpOworICAgICAgICAgICAgdGhpcy5fZmlyZVN0
eWxlU2hlZXRDaGFuZ2VkKHJ1bGUuaWQuc3R5bGVTaGVldElkLCB0cnVlKTsKICAgICAgICAgfQog
CiAgICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrKG5vZGVJZCwgc3VjY2Vzc0NhbGxiYWNrLCBmYWls
dXJlQ2FsbGJhY2ssIGVycm9yLCBuZXdTZWxlY3RvciwgcnVsZVBheWxvYWQpCkBAIC0xNDYsNyAr
MTUxLDcgQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwucHJvdG90eXBlID0gewogICAgICAg
ICAgICAgdmFyIGRvZXNBZmZlY3RTZWxlY3RlZE5vZGUgPSAoc2VsZWN0ZWROb2RlSWRzLmluZGV4
T2Yobm9kZUlkKSA+PSAwKTsKICAgICAgICAgICAgIHZhciBydWxlID0gV2ViSW5zcGVjdG9yLkNT
U1J1bGUucGFyc2VQYXlsb2FkKHJ1bGVQYXlsb2FkKTsKICAgICAgICAgICAgIHN1Y2Nlc3NDYWxs
YmFjayhydWxlLCBkb2VzQWZmZWN0U2VsZWN0ZWROb2RlKTsKLSAgICAgICAgICAgIHRoaXMuX3N0
eWxlU2hlZXRDaGFuZ2VkKHJ1bGUuaWQuc3R5bGVTaGVldElkLCB0cnVlKTsKKyAgICAgICAgICAg
IHRoaXMuX2ZpcmVTdHlsZVNoZWV0Q2hhbmdlZChydWxlLmlkLnN0eWxlU2hlZXRJZCwgdHJ1ZSk7
CiAgICAgICAgIH0KIAogICAgICAgICBmdW5jdGlvbiBjYWxsYmFjayhzdWNjZXNzQ2FsbGJhY2ss
IGZhaWx1cmVDYWxsYmFjaywgc2VsZWN0b3IsIGVycm9yLCBydWxlUGF5bG9hZCkKQEAgLTE2MSwz
MyArMTY2LDMzIEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgQ1NTQWdlbnQuYWRkUnVsZShub2RlSWQsIHNlbGVjdG9yLCBjYWxsYmFjay5iaW5kKHRo
aXMsIHN1Y2Nlc3NDYWxsYmFjaywgZmFpbHVyZUNhbGxiYWNrLCBzZWxlY3RvcikpOwogICAgIH0s
CiAKLSAgICBfc3R5bGVTaGVldENoYW5nZWQ6IGZ1bmN0aW9uKHN0eWxlU2hlZXRJZCwgbWFqb3JD
aGFuZ2UpCisgICAgX2ZpcmVTdHlsZVNoZWV0Q2hhbmdlZDogZnVuY3Rpb24oc3R5bGVTaGVldElk
LCBtYWpvckNoYW5nZSkKICAgICB7CiAgICAgICAgIGlmICghbWFqb3JDaGFuZ2UgfHwgIXN0eWxl
U2hlZXRJZCkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBmdW5jdGlvbiBjYWxsYmFj
ayhlcnJvciwgaHJlZiwgY29udGVudCkKKyAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2soZXJyb3Is
IGNvbnRlbnQpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChlcnJvcikKICAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICB2YXIgcmVzb3VyY2UgPSBXZWJJbnNwZWN0b3IucmVz
b3VyY2VGb3JVUkwoaHJlZik7Ci0gICAgICAgICAgICBpZiAocmVzb3VyY2UgJiYgcmVzb3VyY2Uu
dHlwZSA9PT0gV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuU3R5bGVzaGVldCkgewotICAgICAg
ICAgICAgICAgIHJlc291cmNlLnNldENvbnRlbnQoY29udGVudCwgdGhpcy5fb25SZXZlcnQuYmlu
ZCh0aGlzLCBzdHlsZVNoZWV0SWQpKTsKLSAgICAgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZl
bnRUb0xpc3RlbmVycygic3R5bGVzaGVldCBjaGFuZ2VkIik7Ci0gICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5DU1NT
dHlsZU1vZGVsLkV2ZW50cy5TdHlsZVNoZWV0Q2hhbmdlZCwge3N0eWxlU2hlZXRJZDpzdHlsZVNo
ZWV0SWQsIGNvbnRlbnQ6Y29udGVudCwgbWFqb3JDaGFuZ2U6bWFqb3JDaGFuZ2V9KTsKICAgICAg
ICAgfQotICAgICAgICBDU1NBZ2VudC5nZXRTdHlsZVNoZWV0VGV4dChzdHlsZVNoZWV0SWQsIGNh
bGxiYWNrLmJpbmQodGhpcykpOworICAgICAgICBpZiAodGhpcy5oYXNFdmVudExpc3RlbmVycyhX
ZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5FdmVudHMuU3R5bGVTaGVldENoYW5nZWQpKQorICAg
ICAgICAgICAgQ1NTQWdlbnQuZ2V0U3R5bGVTaGVldFRleHQoc3R5bGVTaGVldElkLCBjYWxsYmFj
ay5iaW5kKHRoaXMpKTsKICAgICB9LAogCi0gICAgX29uUmV2ZXJ0OiBmdW5jdGlvbihzdHlsZVNo
ZWV0SWQsIGNvbnRlbnRUb1JldmVydFRvKQorICAgIHNldFN0eWxlU2hlZXRUZXh0OiBmdW5jdGlv
bihzdHlsZVNoZWV0SWQsIG5ld1RleHQsIG1ham9yQ2hhbmdlLCB1c2VyQ2FsbGJhY2spCiAgICAg
ewotICAgICAgICBmdW5jdGlvbiBjYWxsYmFjayhlcnJvciwgc3VjY2VzcykKKyAgICAgICAgZnVu
Y3Rpb24gY2FsbGJhY2soZXJyb3IpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChlcnJvcikK
LSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB0aGlzLl9zdHlsZVNoZWV0Q2hh
bmdlZChzdHlsZVNoZWV0SWQsIHRydWUpOworICAgICAgICAgICAgIGlmICghZXJyb3IpCisgICAg
ICAgICAgICAgICAgIHRoaXMuX2ZpcmVTdHlsZVNoZWV0Q2hhbmdlZCh0aGlzLmlkLCBtYWpvckNo
YW5nZSk7CisKKyAgICAgICAgICAgICBpZiAodXNlckNhbGxiYWNrKQorICAgICAgICAgICAgICAg
ICB1c2VyQ2FsbGJhY2soZXJyb3IpOwogICAgICAgICB9Ci0gICAgICAgIENTU0FnZW50LnNldFN0
eWxlU2hlZXRUZXh0KHN0eWxlU2hlZXRJZCwgY29udGVudFRvUmV2ZXJ0VG8sIGNhbGxiYWNrLmJp
bmQodGhpcykpOworICAgICAgICBDU1NBZ2VudC5zZXRTdHlsZVNoZWV0VGV4dChzdHlsZVNoZWV0
SWQsIG5ld1RleHQsIGNhbGxiYWNrLmJpbmQodGhpcykpOwogICAgIH0KIH0KIApAQCAtMzY1LDcg
KzM3MCw3IEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgICAgICAgICB1c2VyQ2FsbGJhY2sobnVsbCk7CiAgICAgICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgICAgICB1c2VyQ2FsbGJhY2soV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFy
YXRpb24ucGFyc2VQYXlsb2FkKHBheWxvYWQpKTsKLSAgICAgICAgICAgICAgICBXZWJJbnNwZWN0
b3IuY3NzTW9kZWwuX3N0eWxlU2hlZXRDaGFuZ2VkKHRoaXMuaWQuc3R5bGVTaGVldElkLCB0cnVl
KTsKKyAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuY3NzTW9kZWwuX2ZpcmVTdHlsZVNoZWV0
Q2hhbmdlZCh0aGlzLmlkLnN0eWxlU2hlZXRJZCwgdHJ1ZSk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KIApAQCAtNDg2LDcgKzQ5MSw3IEBAIFdlYkluc3BlY3Rvci5DU1NQcm9wZXJ0eS5wcm90
b3R5cGUgPSB7CiAgICAgICAgIGZ1bmN0aW9uIGVuYWJsZWRDYWxsYmFjayhzdHlsZSkKICAgICAg
ICAgewogICAgICAgICAgICAgaWYgKHN0eWxlKQotICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rv
ci5jc3NNb2RlbC5fc3R5bGVTaGVldENoYW5nZWQoc3R5bGUuaWQuc3R5bGVTaGVldElkLCBtYWpv
ckNoYW5nZSk7CisgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmNzc01vZGVsLl9maXJlU3R5
bGVTaGVldENoYW5nZWQoc3R5bGUuaWQuc3R5bGVTaGVldElkLCBtYWpvckNoYW5nZSk7CiAgICAg
ICAgICAgICBpZiAodXNlckNhbGxiYWNrKQogICAgICAgICAgICAgICAgIHVzZXJDYWxsYmFjayhz
dHlsZSk7CiAgICAgICAgIH0KQEAgLTUwMiw3ICs1MDcsNyBAQCBXZWJJbnNwZWN0b3IuQ1NTUHJv
cGVydHkucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgICAgICBuZXdQcm9wZXJ0eS5zZXRE
aXNhYmxlZChmYWxzZSwgZW5hYmxlZENhbGxiYWNrKTsKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICBXZWJJbnNw
ZWN0b3IuY3NzTW9kZWwuX3N0eWxlU2hlZXRDaGFuZ2VkKHN0eWxlLmlkLnN0eWxlU2hlZXRJZCwg
bWFqb3JDaGFuZ2UpOworICAgICAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuY3NzTW9kZWwu
X2ZpcmVTdHlsZVNoZWV0Q2hhbmdlZChzdHlsZS5pZC5zdHlsZVNoZWV0SWQsIG1ham9yQ2hhbmdl
KTsKICAgICAgICAgICAgICAgICBpZiAodXNlckNhbGxiYWNrKQogICAgICAgICAgICAgICAgICAg
ICB1c2VyQ2FsbGJhY2soc3R5bGUpOwogICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTU0MCw3ICs1
NDUsNyBAQCBXZWJJbnNwZWN0b3IuQ1NTUHJvcGVydHkucHJvdG90eXBlID0gewogICAgICAgICAg
ICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgdmFyIHN0eWxlID0gV2ViSW5zcGVjdG9yLkNTU1N0
eWxlRGVjbGFyYXRpb24ucGFyc2VQYXlsb2FkKHN0eWxlUGF5bG9hZCk7CiAgICAgICAgICAgICAg
ICAgdXNlckNhbGxiYWNrKHN0eWxlKTsKLSAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuY3Nz
TW9kZWwuX3N0eWxlU2hlZXRDaGFuZ2VkKHRoaXMub3duZXJTdHlsZS5pZC5zdHlsZVNoZWV0SWQs
IGZhbHNlKTsKKyAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuY3NzTW9kZWwuX2ZpcmVTdHls
ZVNoZWV0Q2hhbmdlZCh0aGlzLm93bmVyU3R5bGUuaWQuc3R5bGVTaGVldElkLCBmYWxzZSk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtNTgzLDE0ICs1ODgsMTA1IEBAIFdlYkluc3Bl
Y3Rvci5DU1NTdHlsZVNoZWV0LnByb3RvdHlwZSA9IHsKIAogICAgIHNldFRleHQ6IGZ1bmN0aW9u
KG5ld1RleHQsIG1ham9yQ2hhbmdlLCB1c2VyQ2FsbGJhY2spCiAgICAgewotICAgICAgICBmdW5j
dGlvbiBjYWxsYmFjayhlcnJvciwgaXNDaGFuZ2VTdWNjZXNzZnVsKQorICAgICAgICBmdW5jdGlv
biBjYWxsYmFjayhlcnJvcikKICAgICAgICAgewogICAgICAgICAgICAgIGlmICh1c2VyQ2FsbGJh
Y2spCi0gICAgICAgICAgICAgICAgIHVzZXJDYWxsYmFjayhpc0NoYW5nZVN1Y2Nlc3NmdWwpOwot
ICAgICAgICAgICAgIGlmIChpc0NoYW5nZVN1Y2Nlc3NmdWwpCi0gICAgICAgICAgICAgICAgIFdl
Ykluc3BlY3Rvci5jc3NNb2RlbC5fc3R5bGVTaGVldENoYW5nZWQodGhpcy5pZCwgbWFqb3JDaGFu
Z2UpOworICAgICAgICAgICAgICAgICB1c2VyQ2FsbGJhY2soZXJyb3IpOworICAgICAgICAgICAg
IGlmICghZXJyb3IpCisgICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5jc3NNb2RlbC5fZmly
ZVN0eWxlU2hlZXRDaGFuZ2VkKHRoaXMuaWQsIG1ham9yQ2hhbmdlKTsKICAgICAgICAgfQogCiAg
ICAgICAgIENTU0FnZW50LnNldFN0eWxlU2hlZXRUZXh0KHRoaXMuaWQsIG5ld1RleHQsIGNhbGxi
YWNrLmJpbmQodGhpcykpOwogICAgIH0KIH0KKworV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWxS
ZXNvdXJjZUJpbmRpbmcgPSBmdW5jdGlvbihjc3NNb2RlbCkKK3sKKyAgICB0aGlzLl9jc3NNb2Rl
bCA9IGNzc01vZGVsOworICAgIHRoaXMuX3VybFRvU3R5bGVTaGVldElkID0ge307CisgICAgdGhp
cy5fc3R5bGVTaGVldElkVG9VUkwgPSB7fTsKKyAgICB0aGlzLl9jc3NNb2RlbC5hZGRFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLkV2ZW50cy5TdHlsZVNoZWV0Q2hhbmdl
ZCwgdGhpcy5fc3R5bGVTaGVldENoYW5nZWQsIHRoaXMpOworICAgIFdlYkluc3BlY3Rvci5yZXNv
dXJjZVRyZWVNb2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVN
b2RlbC5FdmVudFR5cGVzLkZyYW1lTmF2aWdhdGVkLCB0aGlzLl9mcmFtZU5hdmlnYXRlZCwgdGhp
cyk7CisgICAgV2ViSW5zcGVjdG9yLlJlc291cmNlLnJlZ2lzdGVyRG9tYWluTW9kZWxCaW5kaW5n
KFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLlN0eWxlc2hlZXQsIHRoaXMpOworfQorCitXZWJJ
bnNwZWN0b3IuQ1NTU3R5bGVNb2RlbFJlc291cmNlQmluZGluZy5wcm90b3R5cGUgPSB7CisgICAg
c2V0Q29udGVudDogZnVuY3Rpb24ocmVzb3VyY2UsIGNvbnRlbnQsIG1ham9yQ2hhbmdlLCB1c2Vy
Q2FsbGJhY2spCisgICAgeworICAgICAgICBpZiAodGhpcy5fdXJsVG9TdHlsZVNoZWV0SWRbcmVz
b3VyY2UudXJsXSkgeworICAgICAgICAgICAgdGhpcy5faW5uZXJTZXRDb250ZW50KHJlc291cmNl
LnVybCwgY29udGVudCwgbWFqb3JDaGFuZ2UsIHVzZXJDYWxsYmFjayk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgdGhpcy5fbG9hZFN0eWxlU2hlZXRIZWFkZXJzKHRo
aXMuX2lubmVyU2V0Q29udGVudC5iaW5kKHRoaXMsIHJlc291cmNlLnVybCwgY29udGVudCwgbWFq
b3JDaGFuZ2UsIHVzZXJDYWxsYmFjaykpOworICAgIH0sCisKKyAgICBfZnJhbWVOYXZpZ2F0ZWQ6
IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgdmFyIGZyYW1lSWQgPSBldmVudC5kYXRh
OworICAgICAgICBpZiAoIWZyYW1lSWQpIHsKKyAgICAgICAgICAgIC8vIE1haW4gZnJhbWUgbmF2
aWdhdGlvbiAtIGNsZWFyIGhpc3RvcnkuCisgICAgICAgICAgICB0aGlzLl91cmxUb1N0eWxlU2hl
ZXRJZCA9IHt9OworICAgICAgICAgICAgdGhpcy5fc3R5bGVTaGVldElkVG9VUkwgPSB7fTsKKyAg
ICAgICAgfQorICAgIH0sCisKKyAgICBfaW5uZXJTZXRDb250ZW50OiBmdW5jdGlvbih1cmwsIGNv
bnRlbnQsIG1ham9yQ2hhbmdlLCB1c2VyQ2FsbGJhY2ssIGVycm9yKQorICAgIHsKKyAgICAgICAg
aWYgKGVycm9yKQorICAgICAgICAgICAgdXNlckNhbGxiYWNrKGVycm9yKTsKKworICAgICAgICB2
YXIgc3R5bGVTaGVldElkID0gdGhpcy5fdXJsVG9TdHlsZVNoZWV0SWRbdXJsXTsKKyAgICAgICAg
aWYgKCFzdHlsZVNoZWV0SWQpIHsKKyAgICAgICAgICAgIGlmICh1c2VyQ2FsbGJhY2spCisgICAg
ICAgICAgICAgICAgdXNlckNhbGxiYWNrKCJObyBzdHlsZXNoZWV0IGZvdW5kIik7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgdGhpcy5fY3NzTW9kZWwuc2V0U3R5bGVT
aGVldFRleHQoc3R5bGVTaGVldElkLCBjb250ZW50LCBtYWpvckNoYW5nZSwgdXNlckNhbGxiYWNr
KTsKKyAgICB9LAorCisgICAgX2xvYWRTdHlsZVNoZWV0SGVhZGVyczogZnVuY3Rpb24oY2FsbGJh
Y2spCisgICAgeworICAgICAgICBmdW5jdGlvbiBkaWRHZXRBbGxTdHlsZVNoZWV0cyhlcnJvciwg
aW5mb3MpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChlcnJvcikgeworICAgICAgICAgICAg
ICAgIGNhbGxiYWNrKGVycm9yKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaW5mb3MubGVuZ3RoOyArK2kp
IHsKKyAgICAgICAgICAgICAgICB2YXIgaW5mbyA9IGluZm9zW2ldOworICAgICAgICAgICAgICAg
IHRoaXMuX3VybFRvU3R5bGVTaGVldElkW2luZm8uc291cmNlVVJMXSA9IGluZm8uc3R5bGVTaGVl
dElkOworICAgICAgICAgICAgICAgIHRoaXMuX3N0eWxlU2hlZXRJZFRvVVJMW2luZm8uc3R5bGVT
aGVldElkXSA9IGluZm8uc291cmNlVVJMOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2Fs
bGJhY2soKTsKKyAgICAgICAgfQorICAgICAgICBDU1NBZ2VudC5nZXRBbGxTdHlsZVNoZWV0cyhk
aWRHZXRBbGxTdHlsZVNoZWV0cy5iaW5kKHRoaXMpKTsKKyAgICB9LAorCisgICAgX3N0eWxlU2hl
ZXRDaGFuZ2VkOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHZhciBzdHlsZVNoZWV0
SWQgPSBldmVudC5kYXRhLnN0eWxlU2hlZXRJZDsKKyAgICAgICAgZnVuY3Rpb24gc2V0Q29udGVu
dCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciB1cmwgPSB0aGlzLl9zdHlsZVNoZWV0SWRU
b1VSTFtzdHlsZVNoZWV0SWRdOworICAgICAgICAgICAgaWYgKCF1cmwpCisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgIAorICAgICAgICAgICAgdmFyIHJlc291cmNlID0gV2ViSW5zcGVjdG9y
LnJlc291cmNlRm9yVVJMKHVybCk7CisgICAgICAgICAgICBpZiAoIXJlc291cmNlKQorICAgICAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgdmFyIG1ham9yQ2hhbmdlID0gZXZlbnQu
ZGF0YS5tYWpvckNoYW5nZTsKKyAgICAgICAgICAgIGlmIChtYWpvckNoYW5nZSkKKyAgICAgICAg
ICAgICAgICByZXNvdXJjZS5hZGRSZXZpc2lvbihldmVudC5kYXRhLmNvbnRlbnQpOworICAgICAg
ICB9CisKKyAgICAgICAgaWYgKCF0aGlzLl9zdHlsZVNoZWV0SWRUb1VSTFtzdHlsZVNoZWV0SWRd
KSB7CisgICAgICAgICAgICB0aGlzLl9sb2FkU3R5bGVTaGVldEhlYWRlcnMoc2V0Q29udGVudC5i
aW5kKHRoaXMpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBzZXRD
b250ZW50LmNhbGwodGhpcyk7CisgICAgfQorfQorCitXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2Rl
bFJlc291cmNlQmluZGluZy5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlJlc291
cmNlRG9tYWluTW9kZWxCaW5kaW5nLnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5qcyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJQcmVzZW50YXRpb25Nb2Rl
bC5qcwppbmRleCBkNzQ3Y2QzOTQ0NGNiMjY5YWRmZmY2ZmNmNmRiMTEzNjM3ZDI1YjQ0Li4zMDJm
OWY3ZWI1YjYxMjRhODkxZDQ2ZjI2ZmVmOTJiOTg1YzUyMTYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuanMK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlclByZXNlbnRh
dGlvbk1vZGVsLmpzCkBAIC00NSw2ICs0NSw4IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNl
bnRhdGlvbk1vZGVsID0gZnVuY3Rpb24oKQogICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVs
LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuRXZlbnRzLkRlYnVn
Z2VyUGF1c2VkLCB0aGlzLl9kZWJ1Z2dlclBhdXNlZCwgdGhpcyk7CiAgICAgV2ViSW5zcGVjdG9y
LmRlYnVnZ2VyTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2Rl
bC5FdmVudHMuRGVidWdnZXJSZXN1bWVkLCB0aGlzLl9kZWJ1Z2dlclJlc3VtZWQsIHRoaXMpOwog
ICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVj
dG9yLkRlYnVnZ2VyTW9kZWwuRXZlbnRzLlJlc2V0LCB0aGlzLl9kZWJ1Z2dlclJlc2V0LCB0aGlz
KTsKKworICAgIG5ldyBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbFJlc291
cmNlQmluZGluZyh0aGlzKTsKIH0KIAogV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9u
TW9kZWwuRXZlbnRzID0gewpAQCAtMTQwLDM1ICsxNDIsMjkgQEAgV2ViSW5zcGVjdG9yLkRlYnVn
Z2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgdmFyIHNj
cmlwdCA9IHRoaXMuX3NjcmlwdEZvclNvdXJjZUZpbGVJZChzb3VyY2VGaWxlSWQpOwogICAgICAg
ICB2YXIgc291cmNlRmlsZSA9IHRoaXMuX3NvdXJjZUZpbGVzW3NvdXJjZUZpbGVJZF07Ci0gICAg
ICAgIHZhciBvbGRTb3VyY2UgPSBzb3VyY2VGaWxlLmNvbnRlbnQ7Ci0gICAgICAgIGZ1bmN0aW9u
IGRpZEVkaXRTY3JpcHRTb3VyY2UoZXJyb3IpCisKKyAgICAgICAgZnVuY3Rpb24gZGlkRWRpdFNj
cmlwdFNvdXJjZShvbGRTb3VyY2UsIGVycm9yKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAo
IWVycm9yKSB7CiAgICAgICAgICAgICAgICAgc291cmNlRmlsZS5jb250ZW50ID0gbmV3U291cmNl
OwotICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVJlc291cmNlQ29udGVudChzb3VyY2VGaWxl
LCBvbGRTb3VyY2UsIG5ld1NvdXJjZSk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
dGhpcy5fdXBkYXRlQnJlYWtwb2ludHNBZnRlckxpdmVFZGl0KHNvdXJjZUZpbGUuaWQsIG9sZFNv
dXJjZSwgbmV3U291cmNlKTsKKyAgICAgICAgICAgICAgICB2YXIgcmVzb3VyY2UgPSBXZWJJbnNw
ZWN0b3IucmVzb3VyY2VGb3JVUkwoc291cmNlRmlsZS51cmwpOworICAgICAgICAgICAgICAgIGlm
IChyZXNvdXJjZSkKKyAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2UuYWRkUmV2aXNpb24obmV3
U291cmNlKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHNvdXJjZUZpbGUu
cmVsb2FkKCk7CiAKICAgICAgICAgICAgIGNhbGxiYWNrKGVycm9yKTsKIAogICAgICAgICAgICAg
aWYgKCFlcnJvciAmJiBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5jYWxsRnJhbWVzKQogICAg
ICAgICAgICAgICAgIHRoaXMuX2RlYnVnZ2VyUGF1c2VkKCk7CiAgICAgICAgIH0KLSAgICAgICAg
V2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuZWRpdFNjcmlwdFNvdXJjZShzY3JpcHQuc291cmNl
SUQsIG5ld1NvdXJjZSwgZGlkRWRpdFNjcmlwdFNvdXJjZS5iaW5kKHRoaXMpKTsKLSAgICB9LAog
Ci0gICAgX3VwZGF0ZVJlc291cmNlQ29udGVudDogZnVuY3Rpb24oc291cmNlRmlsZSwgb2xkU291
cmNlLCBuZXdTb3VyY2UpCi0gICAgewotICAgICAgICB2YXIgcmVzb3VyY2UgPSBXZWJJbnNwZWN0
b3IucmVzb3VyY2VGb3JVUkwoc291cmNlRmlsZS51cmwpOwotICAgICAgICBpZiAoIXJlc291cmNl
KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGZ1bmN0aW9uIGRpZEVkaXRTY3JpcHRT
b3VyY2UoZXJyb3IpCisgICAgICAgIHZhciBvbGRTb3VyY2UgPSBzb3VyY2VGaWxlLnJlcXVlc3RD
b250ZW50KGRpZFJlY2VpdmVTb3VyY2UuYmluZCh0aGlzKSk7CisgICAgICAgIGZ1bmN0aW9uIGRp
ZFJlY2VpdmVTb3VyY2Uob2xkU291cmNlKQogICAgICAgICB7Ci0gICAgICAgICAgICB0aGlzLl91
cGRhdGVCcmVha3BvaW50c0FmdGVyTGl2ZUVkaXQoc291cmNlRmlsZS5pZCwgb2xkU291cmNlLCBu
ZXdTb3VyY2UpOwotICAgICAgICAgICAgc291cmNlRmlsZS5yZWxvYWQoKTsKKyAgICAgICAgICAg
IFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLmVkaXRTY3JpcHRTb3VyY2Uoc2NyaXB0LnNvdXJj
ZUlELCBuZXdTb3VyY2UsIGRpZEVkaXRTY3JpcHRTb3VyY2UuYmluZCh0aGlzLCBvbGRTb3VyY2Up
KTsKICAgICAgICAgfQotICAgICAgICB2YXIgcmV2ZXJ0SGFuZGxlID0gdGhpcy5lZGl0U2NyaXB0
U291cmNlLmJpbmQodGhpcywgc291cmNlRmlsZS5pZCwgb2xkU291cmNlLCBkaWRFZGl0U2NyaXB0
U291cmNlLmJpbmQodGhpcykpOwotICAgICAgICByZXNvdXJjZS5zZXRDb250ZW50KG5ld1NvdXJj
ZSwgcmV2ZXJ0SGFuZGxlKTsKICAgICB9LAogCiAgICAgX3VwZGF0ZUJyZWFrcG9pbnRzQWZ0ZXJM
aXZlRWRpdDogZnVuY3Rpb24oc291cmNlRmlsZUlkLCBvbGRTb3VyY2UsIG5ld1NvdXJjZSkKQEAg
LTcxMiwzICs3MDgsMzQgQEAgV2ViSW5zcGVjdG9yLlByZXNlbmF0aW9uQ2FsbEZyYW1lLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgdGhpcy5fc291cmNlRmlsZS5yZXF1ZXN0U291cmNlTWFwcGluZyhk
aWRSZXF1ZXN0U291cmNlTWFwcGluZy5iaW5kKHRoaXMpKTsKICAgICB9CiB9CisKK1dlYkluc3Bl
Y3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsUmVzb3VyY2VCaW5kaW5nID0gZnVuY3Rpb24o
bW9kZWwpCit7CisgICAgdGhpcy5fcHJlc2VudGF0aW9uTW9kZWwgPSBtb2RlbDsKKyAgICBXZWJJ
bnNwZWN0b3IuUmVzb3VyY2UucmVnaXN0ZXJEb21haW5Nb2RlbEJpbmRpbmcoV2ViSW5zcGVjdG9y
LlJlc291cmNlLlR5cGUuU2NyaXB0LCB0aGlzKTsKK30KKworV2ViSW5zcGVjdG9yLkRlYnVnZ2Vy
UHJlc2VudGF0aW9uTW9kZWxSZXNvdXJjZUJpbmRpbmcucHJvdG90eXBlID0geworICAgIGNhblNl
dENvbnRlbnQ6IGZ1bmN0aW9uKHJlc291cmNlKQorICAgIHsKKyAgICAgICAgdmFyIHNvdXJjZUZp
bGUgPSB0aGlzLl9wcmVzZW50YXRpb25Nb2RlbC5fc291cmNlRmlsZUZvclNjcmlwdChyZXNvdXJj
ZS51cmwpCisgICAgICAgIGlmICghc291cmNlRmlsZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLmNhbkVkaXRTY3JpcHRT
b3VyY2Uoc291cmNlRmlsZS5pZCk7CisgICAgfSwKKworICAgIHNldENvbnRlbnQ6IGZ1bmN0aW9u
KHJlc291cmNlLCBjb250ZW50LCBtYWpvckNoYW5nZSwgdXNlckNhbGxiYWNrKQorICAgIHsKKyAg
ICAgICAgaWYgKCFtYWpvckNoYW5nZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB2
YXIgc291cmNlRmlsZSA9IHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLl9zb3VyY2VGaWxlRm9yU2Ny
aXB0KHJlc291cmNlLnVybCk7CisgICAgICAgIGlmICghc291cmNlRmlsZSkgeworICAgICAgICAg
ICAgdXNlckNhbGxiYWNrKCJSZXNvdXJjZSBpcyBub3QgZWRpdGFibGUiKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICB0aGlzLl9wcmVzZW50YXRpb25Nb2RlbC5lZGl0
U2NyaXB0U291cmNlKHNvdXJjZUZpbGUuaWQsIGNvbnRlbnQsIHVzZXJDYWxsYmFjayk7CisgICAg
fQorfQorCitXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbFJlc291cmNlQmlu
ZGluZy5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlJlc291cmNlRG9tYWluTW9k
ZWxCaW5kaW5nLnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvT2JqZWN0LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9PYmplY3QuanMKaW5kZXggNTg3MmI4YjUxZmJjYjUzZDRmYjQ2ZmE2Y2ViYjNmYzcwMjQ4MDY4
MC4uNTNjMjBlMjllNWQ2NmZmYTU0YjM0MTg5ODBmYTRiY2JiNDQzNzQzYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9PYmplY3QuanMKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9PYmplY3QuanMKQEAgLTU3LDYgKzU3LDEzIEBA
IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlID0gewogICAgICAgICBkZWxldGUgdGhpcy5f
bGlzdGVuZXJzOwogICAgIH0sCiAKKyAgICBoYXNFdmVudExpc3RlbmVyczogZnVuY3Rpb24oZXZl
bnRUeXBlKQorICAgIHsKKyAgICAgICAgaWYgKCEoIl9saXN0ZW5lcnMiIGluIHRoaXMpIHx8ICEo
ZXZlbnRUeXBlIGluIHRoaXMuX2xpc3RlbmVycykpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0sCisKICAgICBkaXNwYXRjaEV2ZW50VG9MaXN0
ZW5lcnM6IGZ1bmN0aW9uKGV2ZW50VHlwZSwgZXZlbnREYXRhKQogICAgIHsKICAgICAgICAgaWYg
KCEoIl9saXN0ZW5lcnMiIGluIHRoaXMpIHx8ICEoZXZlbnRUeXBlIGluIHRoaXMuX2xpc3RlbmVy
cykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291
cmNlLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZS5qcwpp
bmRleCBjNjQ3NGMyOGFiZjYyZGE0YjQ4YTVjNTExYmVlMjQwMmRlNDEzMjI2Li40N2JlZGViMjE4
ZTc5YWFiN2JkMTY3NDNjMTFjMzBkNDRkNzQ3YTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2UuanMKQEAgLTM0LDYgKzM0LDcgQEAgV2ViSW5zcGVj
dG9yLlJlc291cmNlID0gZnVuY3Rpb24oaWRlbnRpZmllciwgdXJsKQogICAgIHRoaXMuX2NhdGVn
b3J5ID0gV2ViSW5zcGVjdG9yLnJlc291cmNlQ2F0ZWdvcmllcy5vdGhlcjsKICAgICB0aGlzLl9w
ZW5kaW5nQ29udGVudENhbGxiYWNrcyA9IFtdOwogICAgIHRoaXMuX3Jlc3BvbnNlSGVhZGVyc1Np
emUgPSAwOworICAgIHRoaXMuaGlzdG9yeSA9IFtdOwogfQogCiAvLyBLZWVwIHRoZXNlIGluIHN5
bmMgd2l0aCBXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZTo6VHlwZQpAQCAtMTAxLDYgKzEwMiwx
NyBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZSA9IHsKICAgICB9CiB9CiAKK1dlYkluc3Bl
Y3Rvci5SZXNvdXJjZS5fZG9tYWluTW9kZWxCaW5kaW5ncyA9IFtdOworCitXZWJJbnNwZWN0b3Iu
UmVzb3VyY2UucmVnaXN0ZXJEb21haW5Nb2RlbEJpbmRpbmcgPSBmdW5jdGlvbih0eXBlLCBiaW5k
aW5nKQoreworICAgIFdlYkluc3BlY3Rvci5SZXNvdXJjZS5fZG9tYWluTW9kZWxCaW5kaW5nc1t0
eXBlXSA9IGJpbmRpbmc7Cit9CisKK1dlYkluc3BlY3Rvci5SZXNvdXJjZS5FdmVudHMgPSB7Cisg
ICAgUmV2aXNpb25BZGRlZDogMAorfQorCiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBl
ID0gewogICAgIGdldCB1cmwoKQogICAgIHsKQEAgLTY0MCwyMCArNjUyLDM2IEBAIFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2NvbnRlbnQgPSBjb250
ZW50OwogICAgIH0sCiAKLSAgICBpc1Jlc291cmNlUmV2aXNpb246IGZ1bmN0aW9uKCkKKyAgICBp
c0VkaXRhYmxlOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICByZXR1cm4gISF0aGlzLl9hY3R1
YWxSZXNvdXJjZTsKKyAgICAgICAgaWYgKHRoaXMuX2FjdHVhbFJlc291cmNlKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICB2YXIgYmluZGluZyA9IFdlYkluc3BlY3Rvci5SZXNv
dXJjZS5fZG9tYWluTW9kZWxCaW5kaW5nc1t0aGlzLnR5cGVdOworICAgICAgICByZXR1cm4gYmlu
ZGluZyAmJiBiaW5kaW5nLmNhblNldENvbnRlbnQodGhpcyk7CisgICAgfSwKKworICAgIHNldENv
bnRlbnQ6IGZ1bmN0aW9uKG5ld0NvbnRlbnQsIG1ham9yQ2hhbmdlLCBjYWxsYmFjaykKKyAgICB7
CisgICAgICAgIGlmICghdGhpcy5pc0VkaXRhYmxlKHRoaXMpKSB7CisgICAgICAgICAgICBpZiAo
Y2FsbGJhY2spCisgICAgICAgICAgICAgICAgY2FsbGJhY2soIlJlc291cmNlIGlzIG5vdCBlZGl0
YWJsZSIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHZhciBiaW5k
aW5nID0gV2ViSW5zcGVjdG9yLlJlc291cmNlLl9kb21haW5Nb2RlbEJpbmRpbmdzW3RoaXMudHlw
ZV07CisgICAgICAgIGJpbmRpbmcuc2V0Q29udGVudCh0aGlzLCBuZXdDb250ZW50LCBtYWpvckNo
YW5nZSwgY2FsbGJhY2spOwogICAgIH0sCiAKLSAgICBzZXRDb250ZW50OiBmdW5jdGlvbihuZXdD
b250ZW50LCBvblJldmVydCkKKyAgICBhZGRSZXZpc2lvbjogZnVuY3Rpb24obmV3Q29udGVudCkK
ICAgICB7CiAgICAgICAgIHZhciByZXZpc2lvblJlc291cmNlID0gbmV3IFdlYkluc3BlY3Rvci5S
ZXNvdXJjZShudWxsLCB0aGlzLnVybCk7CisgICAgICAgIHJldmlzaW9uUmVzb3VyY2UuZnJhbWVJ
ZCA9IHRoaXMuZnJhbWVJZDsKKyAgICAgICAgcmV2aXNpb25SZXNvdXJjZS5sb2FkZXJJZCA9IHRo
aXMubG9hZGVySWQ7CisgICAgICAgIHJldmlzaW9uUmVzb3VyY2UuZG9jdW1lbnRVUkwgPSB0aGlz
LmRvY3VtZW50VVJMOwogICAgICAgICByZXZpc2lvblJlc291cmNlLnR5cGUgPSB0aGlzLnR5cGU7
CiAgICAgICAgIHJldmlzaW9uUmVzb3VyY2UubG9hZGVyID0gdGhpcy5sb2FkZXI7CiAgICAgICAg
IHJldmlzaW9uUmVzb3VyY2UudGltZXN0YW1wID0gdGhpcy50aW1lc3RhbXA7CiAgICAgICAgIHJl
dmlzaW9uUmVzb3VyY2UuX2NvbnRlbnQgPSB0aGlzLl9jb250ZW50OwogICAgICAgICByZXZpc2lv
blJlc291cmNlLl9hY3R1YWxSZXNvdXJjZSA9IHRoaXM7Ci0gICAgICAgIHJldmlzaW9uUmVzb3Vy
Y2UuX2ZpcmVPblJldmVydCA9IG9uUmV2ZXJ0OwogCiAgICAgICAgIGlmICh0aGlzLmZpbmlzaGVk
KQogICAgICAgICAgICAgcmV2aXNpb25SZXNvdXJjZS5maW5pc2hlZCA9IHRydWU7CkBAIC02NzEs
MjIgKzY5OSwyMiBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlID0gewogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICByZXZpc2lvblJlc291cmNlLl9iYXNlUmV2aXNpb24gPSB0aGlz
Ll9iYXNlUmV2aXNpb247CiAKLSAgICAgICAgdmFyIGRhdGEgPSB7IHJldmlzaW9uOiByZXZpc2lv
blJlc291cmNlIH07CiAgICAgICAgIHRoaXMuX2NvbnRlbnQgPSBuZXdDb250ZW50OwogICAgICAg
ICB0aGlzLnRpbWVzdGFtcCA9IG5ldyBEYXRlKCk7CiAKLSAgICAgICAgdGhpcy5kaXNwYXRjaEV2
ZW50VG9MaXN0ZW5lcnMoImNvbnRlbnQtY2hhbmdlZCIsIGRhdGEpOworICAgICAgICB0aGlzLmhp
c3RvcnkucHVzaChyZXZpc2lvblJlc291cmNlKTsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50
VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlJlc291cmNlLkV2ZW50cy5SZXZpc2lvbkFkZGVkLCBy
ZXZpc2lvblJlc291cmNlKTsKICAgICB9LAogCiAgICAgcmV2ZXJ0VG9UaGlzOiBmdW5jdGlvbigp
CiAgICAgewotICAgICAgICBpZiAoIXRoaXMuX2FjdHVhbFJlc291cmNlIHx8ICF0aGlzLl9maXJl
T25SZXZlcnQpCisgICAgICAgIGlmICghdGhpcy5fYWN0dWFsUmVzb3VyY2UpCiAgICAgICAgICAg
ICByZXR1cm47CiAKICAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2soY29udGVudCkKICAgICAgICAg
ewogICAgICAgICAgICAgaWYgKGNvbnRlbnQpCi0gICAgICAgICAgICAgICAgdGhpcy5fZmlyZU9u
UmV2ZXJ0KGNvbnRlbnQpOworICAgICAgICAgICAgICAgIHRoaXMuX2FjdHVhbFJlc291cmNlLnNl
dENvbnRlbnQoY29udGVudCwgdHJ1ZSk7CiAgICAgICAgIH0KICAgICAgICAgdGhpcy5yZXF1ZXN0
Q29udGVudChjYWxsYmFjay5iaW5kKHRoaXMpKTsKICAgICB9LApAQCAtNzYzLDMgKzc5MSwyMSBA
QCBXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlID0gewogfQogCiBXZWJJbnNwZWN0b3Iu
UmVzb3VyY2UucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90
eXBlOworCisKK1dlYkluc3BlY3Rvci5SZXNvdXJjZURvbWFpbk1vZGVsQmluZGluZyA9IGZ1bmN0
aW9uKCkKK3sKK30KKworV2ViSW5zcGVjdG9yLlJlc291cmNlRG9tYWluTW9kZWxCaW5kaW5nLnBy
b3RvdHlwZSA9IHsKKyAgICBjYW5TZXRDb250ZW50OiBmdW5jdGlvbigpCisgICAgeworICAgICAg
ICAvLyBJbXBsZW1lbnRlZCBieSB0aGUgZG9tYWlucy4KKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfSwKKworICAgIHNldENvbnRlbnQ6IGZ1bmN0aW9uKHJlc291cmNlLCBjb250ZW50LCBtYWpv
ckNoYW5nZSwgY2FsbGJhY2spCisgICAgeworICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSB0aGUg
ZG9tYWlucy4KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1Jlc291cmNlVmlldy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvUmVzb3VyY2VWaWV3LmpzCmluZGV4IDcyMDI1N2NlZjg3ODk1ZjY0ZTQ3NTI1YjlhOTQ1
ZjMxYTg1NjM1Y2QuLmE3YzYxMTAzNmI2YTQ1YjYxN2E4MGI0OTg4YTcwZGMyYjdmZjE4ODcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VWaWV3
LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VWaWV3
LmpzCkBAIC00OSw5ICs0OSw4IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVZpZXcuY3JlYXRlUmVz
b3VyY2VWaWV3ID0gZnVuY3Rpb24ocmVzb3VyY2UpCiAgICAgY2FzZSBXZWJJbnNwZWN0b3IucmVz
b3VyY2VDYXRlZ29yaWVzLmRvY3VtZW50czoKICAgICBjYXNlIFdlYkluc3BlY3Rvci5yZXNvdXJj
ZUNhdGVnb3JpZXMuc2NyaXB0czoKICAgICBjYXNlIFdlYkluc3BlY3Rvci5yZXNvdXJjZUNhdGVn
b3JpZXMueGhyOgotICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5SZXNvdXJjZVNvdXJj
ZUZyYW1lKHJlc291cmNlKTsKICAgICBjYXNlIFdlYkluc3BlY3Rvci5yZXNvdXJjZUNhdGVnb3Jp
ZXMuc3R5bGVzaGVldHM6Ci0gICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkNTU1NvdXJj
ZUZyYW1lKHJlc291cmNlKTsKKyAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2VTb3VyY2VGcmFtZShyZXNvdXJjZSk7CiAgICAgY2FzZSBXZWJJbnNwZWN0b3IucmVzb3VyY2VD
YXRlZ29yaWVzLmltYWdlczoKICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuSW1hZ2VW
aWV3KHJlc291cmNlKTsKICAgICBjYXNlIFdlYkluc3BlY3Rvci5yZXNvdXJjZUNhdGVnb3JpZXMu
Zm9udHM6CkBAIC02OCw5ICs2Nyw4IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVZpZXcucmVzb3Vy
Y2VWaWV3VHlwZU1hdGNoZXNSZXNvdXJjZSA9IGZ1bmN0aW9uKHJlc291cmNlKQogICAgIGNhc2Ug
V2ViSW5zcGVjdG9yLnJlc291cmNlQ2F0ZWdvcmllcy5kb2N1bWVudHM6CiAgICAgY2FzZSBXZWJJ
bnNwZWN0b3IucmVzb3VyY2VDYXRlZ29yaWVzLnNjcmlwdHM6CiAgICAgY2FzZSBXZWJJbnNwZWN0
b3IucmVzb3VyY2VDYXRlZ29yaWVzLnhocjoKLSAgICAgICAgcmV0dXJuIHJlc291cmNlVmlldy5f
X3Byb3RvX18gPT09IFdlYkluc3BlY3Rvci5SZXNvdXJjZVNvdXJjZUZyYW1lLnByb3RvdHlwZTsK
ICAgICBjYXNlIFdlYkluc3BlY3Rvci5yZXNvdXJjZUNhdGVnb3JpZXMuc3R5bGVzaGVldHM6Ci0g
ICAgICAgIHJldHVybiByZXNvdXJjZVZpZXcuX19wcm90b19fID09PSBXZWJJbnNwZWN0b3IuQ1NT
U291cmNlRnJhbWUucHJvdG90eXBlOworICAgICAgICByZXR1cm4gcmVzb3VyY2VWaWV3Ll9fcHJv
dG9fXyA9PT0gV2ViSW5zcGVjdG9yLlJlc291cmNlU291cmNlRnJhbWUucHJvdG90eXBlOwogICAg
IGNhc2UgV2ViSW5zcGVjdG9yLnJlc291cmNlQ2F0ZWdvcmllcy5pbWFnZXM6CiAgICAgICAgIHJl
dHVybiByZXNvdXJjZVZpZXcuX19wcm90b19fID09PSBXZWJJbnNwZWN0b3IuSW1hZ2VWaWV3LnBy
b3RvdHlwZTsKICAgICBjYXNlIFdlYkluc3BlY3Rvci5yZXNvdXJjZUNhdGVnb3JpZXMuZm9udHM6
CkBAIC0xNDAsNzkgKzEzOCwxNCBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VTb3VyY2VGcmFtZS5w
cm90b3R5cGUgPSB7CiAKICAgICBpc0NvbnRlbnRFZGl0YWJsZTogZnVuY3Rpb24oKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0sCi0KLSAgICBfcmVxdWVzdENvbnRlbnQ6IGZ1
bmN0aW9uKGNhbGxiYWNrKQotICAgIHsKLSAgICAgICAgZnVuY3Rpb24gY29udGVudExvYWRlZCh0
ZXh0KQotICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgbWltZVR5cGUgPSBXZWJJbnNwZWN0b3Iu
UmVzb3VyY2VTb3VyY2VGcmFtZS5EZWZhdWx0TUlNRVR5cGVGb3JSZXNvdXJjZVR5cGVbdGhpcy5f
cmVzb3VyY2UudHlwZV0gfHwgdGhpcy5fcmVzb3VyY2UubWltZVR5cGU7Ci0gICAgICAgICAgICBj
YWxsYmFjayhtaW1lVHlwZSwgdGV4dCk7Ci0gICAgICAgIH0KLSAgICAgICAgdGhpcy5fcmVzb3Vy
Y2UucmVxdWVzdENvbnRlbnQoY29udGVudExvYWRlZC5iaW5kKHRoaXMpKTsKLSAgICB9Ci19Ci0K
LVdlYkluc3BlY3Rvci5SZXNvdXJjZVNvdXJjZUZyYW1lLnByb3RvdHlwZS5fX3Byb3RvX18gPSBX
ZWJJbnNwZWN0b3IuU291cmNlRnJhbWUucHJvdG90eXBlOwotCi0KLVdlYkluc3BlY3Rvci5DU1NT
b3VyY2VGcmFtZSA9IGZ1bmN0aW9uKHJlc291cmNlKQotewotICAgIFdlYkluc3BlY3Rvci5SZXNv
dXJjZVNvdXJjZUZyYW1lLmNhbGwodGhpcywgcmVzb3VyY2UpOwotICAgIHRoaXMuX2xvYWRTdHls
ZVNoZWV0KCk7Ci19Ci0KLVdlYkluc3BlY3Rvci5DU1NTb3VyY2VGcmFtZS5wcm90b3R5cGUgPSB7
Ci0gICAgaXNDb250ZW50RWRpdGFibGU6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVy
biAhIXRoaXMuX3N0eWxlU2hlZXQgJiYgIXRoaXMuX3Jlc291cmNlLmlzUmVzb3VyY2VSZXZpc2lv
bigpOwotICAgIH0sCi0KLSAgICBfbG9hZFN0eWxlU2hlZXQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0g
ICAgICAgIGZ1bmN0aW9uIGRpZEdldEFsbFN0eWxlU2hlZXRzKGVycm9yLCBpbmZvcykKLSAgICAg
ICAgewotICAgICAgICAgICAgaWYgKGVycm9yKQotICAgICAgICAgICAgICAgIHJldHVybjsKLQot
ICAgICAgICAgICAgdmFyIHN0eWxlc2hlZXRJZDsKLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgaW5mb3MubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgICAgICB2YXIgaW5mbyA9IGlu
Zm9zW2ldOwotICAgICAgICAgICAgICAgIGlmIChpbmZvLnNvdXJjZVVSTCA9PT0gdGhpcy5fcmVz
b3VyY2UudXJsKSB7Ci0gICAgICAgICAgICAgICAgICAgIHN0eWxlc2hlZXRJZCA9IGluZm8uc3R5
bGVTaGVldElkOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoIXN0eWxlc2hlZXRJZCkKLSAgICAgICAg
ICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIGZ1bmN0aW9uIGRpZENyZWF0ZUZvcklkKHN0
eWxlU2hlZXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdGhpcy5fc3R5bGVTaGVl
dCA9IHN0eWxlU2hlZXQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBXZWJJbnNwZWN0b3Iu
Q1NTU3R5bGVTaGVldC5jcmVhdGVGb3JJZChzdHlsZXNoZWV0SWQsIGRpZENyZWF0ZUZvcklkLmJp
bmQodGhpcykpOwotICAgICAgICB9Ci0gICAgICAgIENTU0FnZW50LmdldEFsbFN0eWxlU2hlZXRz
KGRpZEdldEFsbFN0eWxlU2hlZXRzLmJpbmQodGhpcykpOworICAgICAgICByZXR1cm4gdGhpcy5f
cmVzb3VyY2UuaXNFZGl0YWJsZSgpOwogICAgIH0sCiAKICAgICBlZGl0Q29udGVudDogZnVuY3Rp
b24obmV3VGV4dCwgY2FsbGJhY2spCiAgICAgewotICAgICAgICBpZiAoIXRoaXMuX3N0eWxlU2hl
ZXQpIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKCJTdHlsZXNoZWV0IG5vdCBmb3VuZC4iKTsKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIHRoaXMuX3Jlc2V0SW5jcmVt
ZW50YWxVcGRhdGVUaW1lcigpOwotCi0gICAgICAgIGZ1bmN0aW9uIGRpZFNldFRleHQoc3VjY2Vz
cykKLSAgICAgICAgewotICAgICAgICAgICAgdmFyIGVycm9yOwotICAgICAgICAgICAgaWYgKCFz
dWNjZXNzKQotICAgICAgICAgICAgICAgIGVycm9yID0gIkZhaWxlZCB0byBzYXZlIG1vZGlmaWVk
IHN0eWxlc2hlZXQgIiArIHRoaXMuX3Jlc291cmNlLnVybDsKLSAgICAgICAgICAgIGNhbGxiYWNr
KGVycm9yKTsKLSAgICAgICAgfQotICAgICAgICB0aGlzLl9zdHlsZVNoZWV0LnNldFRleHQobmV3
VGV4dCwgdHJ1ZSwgZGlkU2V0VGV4dC5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5fY2xlYXJJ
bmNyZW1lbnRhbFVwZGF0ZVRpbWVyKCk7CisgICAgICAgIHZhciBtYWpvckNoYW5nZSA9IHRydWU7
CisgICAgICAgIHRoaXMuX3Jlc291cmNlLnNldENvbnRlbnQobmV3VGV4dCwgbWFqb3JDaGFuZ2Us
IGNhbGxiYWNrKTsKICAgICB9LAogCiAgICAgZW5kRWRpdGluZzogZnVuY3Rpb24ob2xkUmFuZ2Us
IG5ld1JhbmdlKQpAQCAtMjIwLDE4ICsxNTMsMjggQEAgV2ViSW5zcGVjdG9yLkNTU1NvdXJjZUZy
YW1lLnByb3RvdHlwZSA9IHsKICAgICAgICAgZnVuY3Rpb24gY29tbWl0SW5jcmVtZW50YWxFZGl0
KCkKICAgICAgICAgewogICAgICAgICAgICAgdmFyIG1ham9yQ2hhbmdlID0gZmFsc2U7Ci0gICAg
ICAgICAgICB0aGlzLl9zdHlsZVNoZWV0LnNldFRleHQodGhpcy5fdGV4dE1vZGVsLnRleHQsIG1h
am9yQ2hhbmdlKTsKKyAgICAgICAgICAgIHRoaXMuX3Jlc291cmNlLnNldENvbnRlbnQodGhpcy5f
dGV4dE1vZGVsLnRleHQsIG1ham9yQ2hhbmdlLCBmdW5jdGlvbigpIHt9KTsKICAgICAgICAgfQog
ICAgICAgICBjb25zdCB1cGRhdGVUaW1lb3V0ID0gMjAwOwogICAgICAgICB0aGlzLl9pbmNyZW1l
bnRhbFVwZGF0ZVRpbWVyID0gc2V0VGltZW91dChjb21taXRJbmNyZW1lbnRhbEVkaXQuYmluZCh0
aGlzKSwgdXBkYXRlVGltZW91dCk7CiAgICAgfSwKIAotICAgIF9yZXNldEluY3JlbWVudGFsVXBk
YXRlVGltZXI6IGZ1bmN0aW9uKCkKKyAgICBfY2xlYXJJbmNyZW1lbnRhbFVwZGF0ZVRpbWVyOiBm
dW5jdGlvbigpCiAgICAgewogICAgICAgICBpZiAodGhpcy5faW5jcmVtZW50YWxVcGRhdGVUaW1l
cikKICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLl9pbmNyZW1lbnRhbFVwZGF0ZVRpbWVy
KTsKICAgICAgICAgZGVsZXRlIHRoaXMuX2luY3JlbWVudGFsVXBkYXRlVGltZXI7CisgICAgfSwK
KworICAgIF9yZXF1ZXN0Q29udGVudDogZnVuY3Rpb24oY2FsbGJhY2spCisgICAgeworICAgICAg
ICBmdW5jdGlvbiBjb250ZW50TG9hZGVkKHRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciBtaW1lVHlwZSA9IFdlYkluc3BlY3Rvci5SZXNvdXJjZVNvdXJjZUZyYW1lLkRlZmF1bHRNSU1F
VHlwZUZvclJlc291cmNlVHlwZVt0aGlzLl9yZXNvdXJjZS50eXBlXSB8fCB0aGlzLl9yZXNvdXJj
ZS5taW1lVHlwZTsKKyAgICAgICAgICAgIGNhbGxiYWNrKG1pbWVUeXBlLCB0ZXh0KTsKKyAgICAg
ICAgfQorICAgICAgICB0aGlzLl9yZXNvdXJjZS5yZXF1ZXN0Q29udGVudChjb250ZW50TG9hZGVk
LmJpbmQodGhpcykpOwogICAgIH0KIH0KIAotV2ViSW5zcGVjdG9yLkNTU1NvdXJjZUZyYW1lLnBy
b3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VTb3VyY2VGcmFtZS5wcm90
b3R5cGU7CitXZWJJbnNwZWN0b3IuUmVzb3VyY2VTb3VyY2VGcmFtZS5wcm90b3R5cGUuX19wcm90
b19fID0gV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lLnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzCmluZGV4IDY3
YTE5YTdlOTdjYjgzYjcwZDljNWZkYzNlMTM3ZDU2ZDhlZTYzYWUuLmFlYThiZTkzZGQ0OTI4MWJk
MjIzODQ2NWQ3NzU1MmFmOWZjZjdiMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcwpAQCAtMjYwLDE4ICsyNjAsMTcgQEAg
V2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgICAgICAvLyBJ
bnNlcnQgaW4gdGhlIGFscGhhYmV0aWNhbCBvcmRlciwgZmlyc3QgZnJhbWVzLCB0aGVuIHJlc291
cmNlcy4gRG9jdW1lbnQgcmVzb3VyY2UgZ29lcyBmaXJzdC4KICAgICAgICAgdmFyIGNoaWxkcmVu
ID0gZnJhbWVUcmVlRWxlbWVudC5jaGlsZHJlbjsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBjaGlsZHJlbi5sZW5ndGg7ICsraSkgeworICAgICAgICB2YXIgaTsKKyAgICAgICAgZm9yIChp
ID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICB2YXIgY2hpbGQg
PSBjaGlsZHJlbltpXTsKICAgICAgICAgICAgIGlmICghKGNoaWxkIGluc3RhbmNlb2YgV2ViSW5z
cGVjdG9yLkZyYW1lUmVzb3VyY2VUcmVlRWxlbWVudCkpCiAgICAgICAgICAgICAgICAgY29udGlu
dWU7CiAKLSAgICAgICAgICAgIGlmIChyZXNvdXJjZS50eXBlID09PSBXZWJJbnNwZWN0b3IuUmVz
b3VyY2UuVHlwZS5Eb2N1bWVudCB8fAotICAgICAgICAgICAgICAgICAgICAoY2hpbGQuX3Jlc291
cmNlLnR5cGUgIT09IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLkRvY3VtZW50ICYmIGNoaWxk
Ll9yZXNvdXJjZS5kaXNwbGF5TmFtZS5sb2NhbGVDb21wYXJlKHJlc291cmNlLmRpc3BsYXlOYW1l
KSA+IDApKSB7Ci0gICAgICAgICAgICAgICAgZnJhbWVUcmVlRWxlbWVudC5pbnNlcnRDaGlsZChy
ZXNvdXJjZVRyZWVFbGVtZW50LCBpKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICB9CisgICAgICAgICAgICBpZiAocmVzb3VyY2UudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlJl
c291cmNlLlR5cGUuRG9jdW1lbnQgfHwgKGNoaWxkLl9yZXNvdXJjZS50eXBlICE9PSBXZWJJbnNw
ZWN0b3IuUmVzb3VyY2UuVHlwZS5Eb2N1bWVudCAmJiBjaGlsZC5fcmVzb3VyY2UuZGlzcGxheU5h
bWUubG9jYWxlQ29tcGFyZShyZXNvdXJjZS5kaXNwbGF5TmFtZSkgPiAwKSkKKyAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBmcmFtZVRyZWVFbGVtZW50LmFwcGVuZENo
aWxkKHJlc291cmNlVHJlZUVsZW1lbnQpOworICAgICAgICBmcmFtZVRyZWVFbGVtZW50Lmluc2Vy
dENoaWxkKHJlc291cmNlVHJlZUVsZW1lbnQsIGkpOworICAgICAgICByZXNvdXJjZVRyZWVFbGVt
ZW50Ll9wb3B1bGF0ZVJldmlzaW9ucygpOwogICAgIH0sCiAKICAgICBfZnJhbWVOYXZpZ2F0ZWQ6
IGZ1bmN0aW9uKGV2ZW50KQpAQCAtOTkxLDcgKzk5MCw3IEBAIFdlYkluc3BlY3Rvci5GcmFtZVJl
c291cmNlVHJlZUVsZW1lbnQgPSBmdW5jdGlvbihzdG9yYWdlUGFuZWwsIHJlc291cmNlKQogICAg
IFdlYkluc3BlY3Rvci5CYXNlU3RvcmFnZVRyZWVFbGVtZW50LmNhbGwodGhpcywgc3RvcmFnZVBh
bmVsLCByZXNvdXJjZSwgcmVzb3VyY2UuZGlzcGxheU5hbWUsIFsicmVzb3VyY2Utc2lkZWJhci10
cmVlLWl0ZW0iLCAicmVzb3VyY2VzLWNhdGVnb3J5LSIgKyByZXNvdXJjZS5jYXRlZ29yeS5uYW1l
XSk7CiAgICAgdGhpcy5fcmVzb3VyY2UgPSByZXNvdXJjZTsKICAgICB0aGlzLl9yZXNvdXJjZS5h
ZGRFdmVudExpc3RlbmVyKCJlcnJvcnMtd2FybmluZ3MtdXBkYXRlZCIsIHRoaXMuX2Vycm9yc1dh
cm5pbmdzVXBkYXRlZCwgdGhpcyk7Ci0gICAgdGhpcy5fcmVzb3VyY2UuYWRkRXZlbnRMaXN0ZW5l
cigiY29udGVudC1jaGFuZ2VkIiwgdGhpcy5fY29udGVudENoYW5nZWQsIHRoaXMpOworICAgIHRo
aXMuX3Jlc291cmNlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJlc291cmNlLkV2ZW50
cy5SZXZpc2lvbkFkZGVkLCB0aGlzLl9yZXZpc2lvbkFkZGVkLCB0aGlzKTsKICAgICB0aGlzLnRv
b2x0aXAgPSByZXNvdXJjZS51cmw7CiB9CiAKQEAgLTExMDMsOSArMTEwMiwyMCBAQCBXZWJJbnNw
ZWN0b3IuRnJhbWVSZXNvdXJjZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAg
IHRoaXMuX2J1YmJsZUVsZW1lbnQuYWRkU3R5bGVDbGFzcygiZXJyb3IiKTsKICAgICB9LAogCi0g
ICAgX2NvbnRlbnRDaGFuZ2VkOiBmdW5jdGlvbihldmVudCkKKyAgICBfcG9wdWxhdGVSZXZpc2lv
bnM6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5f
cmVzb3VyY2UuaGlzdG9yeS5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgIHRoaXMuX2FwcGVuZFJl
dmlzaW9uKHRoaXMuX3Jlc291cmNlLmhpc3RvcnlbaV0pOworICAgIH0sCisKKyAgICBfcmV2aXNp
b25BZGRlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICB0aGlzLl9hcHBlbmRSZXZp
c2lvbihldmVudC5kYXRhKTsKKyAgICB9LAorCisgICAgX2FwcGVuZFJldmlzaW9uOiBmdW5jdGlv
bihyZXZpc2lvbikKICAgICB7Ci0gICAgICAgIHRoaXMuaW5zZXJ0Q2hpbGQobmV3IFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZVJldmlzaW9uVHJlZUVsZW1lbnQodGhpcy5fc3RvcmFnZVBhbmVsLCBldmVu
dC5kYXRhLnJldmlzaW9uKSwgMCk7CisgICAgICAgIHRoaXMuaW5zZXJ0Q2hpbGQobmV3IFdlYklu
c3BlY3Rvci5SZXNvdXJjZVJldmlzaW9uVHJlZUVsZW1lbnQodGhpcy5fc3RvcmFnZVBhbmVsLCBy
ZXZpc2lvbiksIDApOwogICAgICAgICB2YXIgb2xkVmlldyA9IFdlYkluc3BlY3Rvci5SZXNvdXJj
ZVZpZXcuZXhpc3RpbmdSZXNvdXJjZVZpZXdGb3JSZXNvdXJjZSh0aGlzLl9yZXNvdXJjZSk7CiAg
ICAgICAgIGlmIChvbGRWaWV3KSB7CiAgICAgICAgICAgICB2YXIgbmV3VmlldyA9IFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZVZpZXcucmVjcmVhdGVSZXNvdXJjZVZpZXcodGhpcy5fcmVzb3VyY2UpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3Iu
aHRtbCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwK
aW5kZXggZThjYjEwZmQyODFhZjcxNGJiZGZmMGE2YTg5MjA3NWY1ODZhY2M3ZC4uZDEwMjAxNmVm
ZWU0OTE1OTNkZDM4YWEyNGRjYjkxMTkwODEwMDdkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCkBAIC00Niw3ICs0Niw2IEBAIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iRXh0ZW5zaW9u
UmVnaXN0cnlTdHViLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNj
cmlwdCIgc3JjPSJPYmplY3QuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0IiBzcmM9IlNldHRpbmdzLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHR5cGU9
InRleHQvamF2YXNjcmlwdCIgc3JjPSJDU1NTdHlsZU1vZGVsLmpzIj48L3NjcmlwdD4KICAgICA8
c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJDaGVja2JveC5qcyI+PC9zY3JpcHQ+
CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iQ29udGV4dE1lbnUuanMi
Pjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IktleWJv
YXJkU2hvcnRjdXQuanMiPjwvc2NyaXB0PgpAQCAtNjEsNiArNjAsNyBAQCBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICAg
IDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlBhbmVsLmpzIj48L3NjcmlwdD4K
ICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJUaW1lbGluZUdyaWQuanMi
Pjwvc2NyaXB0PiAgICAKICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJS
ZXNvdXJjZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
IHNyYz0iQ1NTU3R5bGVNb2RlbC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0
L2phdmFzY3JpcHQiIHNyYz0iTmV0d29ya01hbmFnZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3Jp
cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlJlc291cmNlVHJlZU1vZGVsLmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJSZXNvdXJjZUNh
dGVnb3J5LmpzIj48L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89768</attachid>
            <date>2011-04-15 04:20:28 -0700</date>
            <delta_ts>2011-04-15 05:04:11 -0700</delta_ts>
            <desc>[PATCH] Review comments addressed.</desc>
            <filename>bug-58649-20110415152025.patch</filename>
            <type>text/plain</type>
            <size>42219</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODM4NDUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9zdHlsZXMvZ2V0LXNldC1zdHlsZXNoZWV0LXRleHQuaHRtbCBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9zdHlsZXMvZ2V0LXNldC1zdHlsZXNoZWV0LXRleHQuaHRtbAppbmRleCBhMGIxMDVl
ZmYyOGIyNTNlNWUxYmZjZmQzZTQ0MWQyNjNmM2U4MGUyLi5iOGI1ZGVhNDc5NTZlZmIyNDExYjg3
MWIzYzU2M2U0M2U0OGRiNDIxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5
bGVzL2dldC1zZXQtc3R5bGVzaGVldC10ZXh0Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3N0eWxlcy9nZXQtc2V0LXN0eWxlc2hlZXQtdGV4dC5odG1sCkBAIC0zOSwxMCArMzksMTAg
QEAgZnVuY3Rpb24gdGVzdCgpCiAKICAgICBmdW5jdGlvbiB0ZXN0U2V0VGV4dChuZXh0KQogICAg
IHsKLSAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2soc3VjY2VzcykKKyAgICAgICAgZnVuY3Rpb24g
Y2FsbGJhY2soZXJyb3IpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmICghc3VjY2Vzcykgewot
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkRXJyb3IoIkZhaWxlZCB0byBzZXQgc3R5
bGVzaGVldCB0ZXh0Iik7CisgICAgICAgICAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiRmFpbGVkIHRvIHNldCBzdHlsZXNoZWV0IHRleHQi
KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCBhODI4ZmQ0NjkyYmJmNTM3ZjlhN2I2ZTJjZmZiMTNhZGU2MWVmYjNhLi5lMDVhMGRjMzQ1YTNj
ZmZjMWYyMzhjMzcxMmQ2Y2Q2MjY2MTAyMTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODEgQEAK
KzIwMTEtMDQtMTUgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBnb29nbGUuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6
IHJlZmFjdG9yIHJlc291cmNlIHNldENvbnRlbnQgLyByZXZpc2lvbnMgaW5mcmFzdHJ1Y3R1cmUg
dG8gZ2V0CisgICAgICAgIHJpZCBvZiBvblJldmVydCBjYWxsYmFjay4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4NjQ5CisKKyAgICAgICAgSW5zdGVh
ZCwgd2Ugd2lsbCBoYXZlIERvbWFpbk1vZGVsL1Jlc291cmNlIGJpbmRpbmcgcmVzcG9uc2libGUg
Zm9yIGNoYW5naW5nCisgICAgICAgIHVuZGVybHlpbmcgbW9kZWwgdXBvbiByZXNvdXJjZSBjaGFu
Z2VzIGFuZCB2aWNlIHZlcnNhLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvci5qc29u
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0U3R5bGVTaGVldCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0U3R5bGVTaGVldFRleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFN0eWxlU2hlZXRUZXh0KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpzZXRQcm9wZXJ0eVRleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OnRvZ2dsZVByb3BlcnR5KToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNTU0FnZW50OjpzZXRSdWxlU2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmFzc2VydFN0eWxlU2hlZXRGb3JJZCk6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250
LWVuZC9DU1NTdHlsZU1vZGVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9k
ZWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwucHJvdG90eXBlLnNldFJ1
bGVTZWxlY3Rvcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5wcm90b3R5
cGUuYWRkUnVsZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5wcm90b3R5
cGUuX2ZpcmVTdHlsZVNoZWV0Q2hhbmdlZC5jYWxsYmFjayk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuQ1NTU3R5bGVNb2RlbC5wcm90b3R5cGUuX2ZpcmVTdHlsZVNoZWV0Q2hhbmdlZCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5wcm90b3R5cGUuc2V0U3R5bGVTaGVldFRl
eHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb24ucHJvdG90eXBl
Lmluc2VydFByb3BlcnR5QXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1Byb3BlcnR5LnBy
b3RvdHlwZS5zZXRUZXh0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NQcm9wZXJ0eS5wcm90
b3R5cGUuc2V0VGV4dC5jYWxsYmFjayk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTUHJvcGVy
dHkucHJvdG90eXBlLnNldERpc2FibGVkLmNhbGxiYWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5DU1NQcm9wZXJ0eS5wcm90b3R5cGUuc2V0RGlzYWJsZWQpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkNTU1N0eWxlU2hlZXQucHJvdG90eXBlLnNldFRleHQpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkNTU1N0eWxlTW9kZWxSZXNvdXJjZUJpbmRpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkNTU1N0eWxlTW9kZWxSZXNvdXJjZUJpbmRpbmcucHJvdG90eXBlLnNldENvbnRlbnQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWxSZXNvdXJjZUJpbmRpbmcucHJvdG90eXBl
Ll9mcmFtZU5hdmlnYXRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbFJl
c291cmNlQmluZGluZy5wcm90b3R5cGUuX2lubmVyU2V0Q29udGVudCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuQ1NTU3R5bGVNb2RlbFJlc291cmNlQmluZGluZy5wcm90b3R5cGUuX2xvYWRTdHls
ZVNoZWV0SGVhZGVycyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbFJlc291
cmNlQmluZGluZy5wcm90b3R5cGUuX3N0eWxlU2hlZXRDaGFuZ2VkLnNldENvbnRlbnQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWxSZXNvdXJjZUJpbmRpbmcucHJvdG90eXBl
Ll9zdHlsZVNoZWV0Q2hhbmdlZCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1
Z2dlclByZXNlbnRhdGlvbk1vZGVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2Vy
UHJlc2VudGF0aW9uTW9kZWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2Vu
dGF0aW9uTW9kZWwucHJvdG90eXBlLmVkaXRTY3JpcHRTb3VyY2UuZGlkRWRpdFNjcmlwdFNvdXJj
ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90
b3R5cGUuZWRpdFNjcmlwdFNvdXJjZS5kaWRSZWNlaXZlU291cmNlKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZS5lZGl0U2NyaXB0U291
cmNlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsUmVz
b3VyY2VCaW5kaW5nKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlv
bk1vZGVsUmVzb3VyY2VCaW5kaW5nLnByb3RvdHlwZS5jYW5TZXRDb250ZW50KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsUmVzb3VyY2VCaW5kaW5nLnBy
b3RvdHlwZS5zZXRDb250ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL09iamVj
dC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlLmhhc0V2ZW50TGlz
dGVuZXJzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlLmpzOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNv
dXJjZS5yZWdpc3RlckRvbWFpbk1vZGVsQmluZGluZyk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
UmVzb3VyY2UucHJvdG90eXBlLmlzRWRpdGFibGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJl
c291cmNlLnByb3RvdHlwZS5zZXRDb250ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNv
dXJjZS5wcm90b3R5cGUuYWRkUmV2aXNpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291
cmNlLnByb3RvdHlwZS5yZXZlcnRUb1RoaXMuY2FsbGJhY2spOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlJlc291cmNlLnByb3RvdHlwZS5yZXZlcnRUb1RoaXMpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlJlc291cmNlRG9tYWluTW9kZWxCaW5kaW5nKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5S
ZXNvdXJjZURvbWFpbk1vZGVsQmluZGluZy5wcm90b3R5cGUuY2FuU2V0Q29udGVudCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VEb21haW5Nb2RlbEJpbmRpbmcucHJvdG90eXBlLnNl
dENvbnRlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VWaWV3Lmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlVmlldy5jcmVhdGVSZXNvdXJjZVZpZXcp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlVmlldy5yZXNvdXJjZVZpZXdUeXBlTWF0
Y2hlc1Jlc291cmNlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVNvdXJjZUZyYW1l
LnByb3RvdHlwZS5pc0NvbnRlbnRFZGl0YWJsZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVz
b3VyY2VTb3VyY2VGcmFtZS5wcm90b3R5cGUuZWRpdENvbnRlbnQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlJlc291cmNlU291cmNlRnJhbWUucHJvdG90eXBlLmVuZEVkaXRpbmcpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlJlc291cmNlU291cmNlRnJhbWUucHJvdG90eXBlLl9jbGVhckluY3Jl
bWVudGFsVXBkYXRlVGltZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlU291cmNl
RnJhbWUucHJvdG90eXBlLl9yZXF1ZXN0Q29udGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9SZXNvdXJjZXNQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJj
ZXNQYW5lbC5wcm90b3R5cGUuX3Jlc291cmNlQWRkZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkZyYW1lUmVzb3VyY2VUcmVlRWxlbWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRnJhbWVS
ZXNvdXJjZVRyZWVFbGVtZW50LnByb3RvdHlwZS5fcG9wdWxhdGVSZXZpc2lvbnMpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkZyYW1lUmVzb3VyY2VUcmVlRWxlbWVudC5wcm90b3R5cGUuX3Jldmlz
aW9uQWRkZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZyYW1lUmVzb3VyY2VUcmVlRWxlbWVu
dC5wcm90b3R5cGUuX2FwcGVuZFJldmlzaW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQt
ZW5kL2luc3BlY3Rvci5odG1sOgorCiAyMDExLTA0LTE0ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRt
YW5AZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBZdXJ5IFNlbWlraGF0c2t5Lgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCmluZGV4IDQzYTAzOTNjMDdjZmU0
ZmM0MzMyY2QzNWNkZTYxNDFmYTkzYTA0MDkuLjBhOTViMzhiMzFiODc3NjkzMzYwZGQ2M2E5ZTVl
NzgxYjllMGQ2ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3IuanNvbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KQEAg
LTExNjMsNyArMTE2Myw2IEBACiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic3R5bGVT
aGVldElkIiwgInR5cGUiOiAic3RyaW5nIiB9CiAgICAgICAgICAgICAgICAgXSwKICAgICAgICAg
ICAgICAgICAicmV0dXJucyI6IFsKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ1cmwi
LCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiVGhlIHN0eWxlc2hlZXQgcmVzb3Vy
Y2UgVVJMLiIgfSwKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ0ZXh0IiwgInR5cGUi
OiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIlRoZSBzdHlsZXNoZWV0IHRleHQuIiB9CiAgICAg
ICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0
aGUgY3VycmVudCB0ZXh0dWFsIGNvbnRlbnQgYW5kIHRoZSBVUkwgZm9yIGEgc3R5bGVzaGVldC4i
CkBAIC0xMTc0LDkgKzExNzMsNiBAQAogICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInN0
eWxlU2hlZXRJZCIsICJ0eXBlIjogInN0cmluZyIgfSwKICAgICAgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJ0ZXh0IiwgInR5cGUiOiAic3RyaW5nIiB9CiAgICAgICAgICAgICAgICAgXSwKLSAg
ICAgICAgICAgICAgICAicmV0dXJucyI6IFsKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJzdWNjZXNzIiwgInR5cGUiOiAiYm9vbGVhbiIsICJkZXNjcmlwdGlvbiI6ICJXaGV0aGVyIHRo
ZSBtb2RpZmljYXRpb24gd2FzIHN1Y2Nlc3NmdWwuIiB9Ci0gICAgICAgICAgICAgICAgXSwKICAg
ICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiU2V0cyB0aGUgbmV3IHN0eWxlc2hlZXQgdGV4
dCwgdGhlcmVieSBpbnZhbGlkYXRpbmcgYWxsIGV4aXN0aW5nIDxjb2RlPkNTU1N0eWxlSWQ8L2Nv
ZGU+J3MgYW5kIDxjb2RlPkNTU1J1bGVJZDwvY29kZT4ncyBjb250YWluZWQgYnkgdGhpcyBzdHls
ZXNoZWV0LiIKICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRleCA4MGIyZTIwMzQzN2UxNTQw
MWI0NTVkNWNkMjk2YzgwMGJmYTcxMjdjLi40ZDI4ODc4ZDZjODI0ZDA0OThlN2MyZTM0NjhhNzdj
NjAyOGJmYWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q1NTQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NB
Z2VudC5jcHAKQEAgLTI3NywzMyArMjc3LDMyIEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6Omdl
dEFsbFN0eWxlU2hlZXRzKEVycm9yU3RyaW5nKiwgUmVmUHRyPEluc3BlY3RvckFycmF5PioKIAog
dm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0U3R5bGVTaGVldChFcnJvclN0cmluZyogZXJyb3JT
dHJpbmcsIGNvbnN0IFN0cmluZyYgc3R5bGVTaGVldElkLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
Piogc3R5bGVTaGVldE9iamVjdCkKIHsKLSAgICBJbnNwZWN0b3JTdHlsZVNoZWV0KiBpbnNwZWN0
b3JTdHlsZVNoZWV0ID0gc3R5bGVTaGVldEZvcklkKGVycm9yU3RyaW5nLCBzdHlsZVNoZWV0SWQp
OworICAgIEluc3BlY3RvclN0eWxlU2hlZXQqIGluc3BlY3RvclN0eWxlU2hlZXQgPSBhc3NlcnRT
dHlsZVNoZWV0Rm9ySWQoZXJyb3JTdHJpbmcsIHN0eWxlU2hlZXRJZCk7CiAgICAgaWYgKCFpbnNw
ZWN0b3JTdHlsZVNoZWV0KQogICAgICAgICByZXR1cm47CiAKICAgICAqc3R5bGVTaGVldE9iamVj
dCA9IGluc3BlY3RvclN0eWxlU2hlZXQtPmJ1aWxkT2JqZWN0Rm9yU3R5bGVTaGVldCgpOwogfQog
Ci12b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRTdHlsZVNoZWV0VGV4dChFcnJvclN0cmluZyog
ZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgc3R5bGVTaGVldElkLCBTdHJpbmcqIHVybCwgU3Ry
aW5nKiByZXN1bHQpCit2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRTdHlsZVNoZWV0VGV4dChF
cnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgc3R5bGVTaGVldElkLCBTdHJp
bmcqIHJlc3VsdCkKIHsKLSAgICBJbnNwZWN0b3JTdHlsZVNoZWV0KiBpbnNwZWN0b3JTdHlsZVNo
ZWV0ID0gc3R5bGVTaGVldEZvcklkKGVycm9yU3RyaW5nLCBzdHlsZVNoZWV0SWQpOworICAgIElu
c3BlY3RvclN0eWxlU2hlZXQqIGluc3BlY3RvclN0eWxlU2hlZXQgPSBhc3NlcnRTdHlsZVNoZWV0
Rm9ySWQoZXJyb3JTdHJpbmcsIHN0eWxlU2hlZXRJZCk7CiAgICAgaWYgKCFpbnNwZWN0b3JTdHls
ZVNoZWV0KQogICAgICAgICByZXR1cm47Ci0gICAgKnVybCA9IGluc3BlY3RvclN0eWxlU2hlZXQt
PmZpbmFsVVJMKCk7CisKICAgICBpbnNwZWN0b3JTdHlsZVNoZWV0LT50ZXh0KHJlc3VsdCk7CiB9
CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFN0eWxlU2hlZXRUZXh0KEVycm9yU3RyaW5n
KiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBzdHlsZVNoZWV0SWQsIGNvbnN0IFN0cmluZyYg
dGV4dCwgYm9vbCogc3VjY2VzcykKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFN0eWxlU2hl
ZXRUZXh0KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBzdHlsZVNoZWV0
SWQsIGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKLSAgICBJbnNwZWN0b3JTdHlsZVNoZWV0KiBpbnNw
ZWN0b3JTdHlsZVNoZWV0ID0gc3R5bGVTaGVldEZvcklkKGVycm9yU3RyaW5nLCBzdHlsZVNoZWV0
SWQpOwotICAgIGlmICghaW5zcGVjdG9yU3R5bGVTaGVldCkgewotICAgICAgICAqc3VjY2VzcyA9
IGZhbHNlOworICAgIEluc3BlY3RvclN0eWxlU2hlZXQqIGluc3BlY3RvclN0eWxlU2hlZXQgPSBh
c3NlcnRTdHlsZVNoZWV0Rm9ySWQoZXJyb3JTdHJpbmcsIHN0eWxlU2hlZXRJZCk7CisgICAgaWYg
KCFpbnNwZWN0b3JTdHlsZVNoZWV0KQogICAgICAgICByZXR1cm47Ci0gICAgfQogCi0gICAgKnN1
Y2Nlc3MgPSBpbnNwZWN0b3JTdHlsZVNoZWV0LT5zZXRUZXh0KHRleHQpOwotICAgIGlmICgqc3Vj
Y2VzcykKKyAgICBpZiAoaW5zcGVjdG9yU3R5bGVTaGVldC0+c2V0VGV4dCh0ZXh0KSkKICAgICAg
ICAgaW5zcGVjdG9yU3R5bGVTaGVldC0+cmVwYXJzZVN0eWxlU2hlZXQodGV4dCk7CisgICAgZWxz
ZQorICAgICAgICAqZXJyb3JTdHJpbmcgPSAiSW50ZXJuYWwgZXJyb3Igc2V0dGluZyBzdHlsZSBz
aGVldCB0ZXh0LiI7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFByb3BlcnR5VGV4
dChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
JiBmdWxsU3R5bGVJZCwgaW50IHByb3BlcnR5SW5kZXgsIGNvbnN0IFN0cmluZyYgdGV4dCwgYm9v
bCBvdmVyd3JpdGUsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiByZXN1bHQpCkBAIC0zMTEsNyAr
MzEwLDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6c2V0UHJvcGVydHlUZXh0KEVycm9yU3Ry
aW5nKiBlcnJvclN0cmluZywgY29uc3QgUmVmUHRyPEkKICAgICBJbnNwZWN0b3JDU1NJZCBjb21w
b3VuZElkKGZ1bGxTdHlsZUlkKTsKICAgICBBU1NFUlQoIWNvbXBvdW5kSWQuaXNFbXB0eSgpKTsK
IAotICAgIEluc3BlY3RvclN0eWxlU2hlZXQqIGluc3BlY3RvclN0eWxlU2hlZXQgPSBzdHlsZVNo
ZWV0Rm9ySWQoZXJyb3JTdHJpbmcsIGNvbXBvdW5kSWQuc3R5bGVTaGVldElkKCkpOworICAgIElu
c3BlY3RvclN0eWxlU2hlZXQqIGluc3BlY3RvclN0eWxlU2hlZXQgPSBhc3NlcnRTdHlsZVNoZWV0
Rm9ySWQoZXJyb3JTdHJpbmcsIGNvbXBvdW5kSWQuc3R5bGVTaGVldElkKCkpOwogICAgIGlmICgh
aW5zcGVjdG9yU3R5bGVTaGVldCkKICAgICAgICAgcmV0dXJuOwogCkBAIC0zMjUsNyArMzI0LDcg
QEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6dG9nZ2xlUHJvcGVydHkoRXJyb3JTdHJpbmcqIGVy
cm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8SW4KICAgICBJbnNwZWN0b3JDU1NJZCBjb21wb3VuZElk
KGZ1bGxTdHlsZUlkKTsKICAgICBBU1NFUlQoIWNvbXBvdW5kSWQuaXNFbXB0eSgpKTsKIAotICAg
IEluc3BlY3RvclN0eWxlU2hlZXQqIGluc3BlY3RvclN0eWxlU2hlZXQgPSBzdHlsZVNoZWV0Rm9y
SWQoZXJyb3JTdHJpbmcsIGNvbXBvdW5kSWQuc3R5bGVTaGVldElkKCkpOworICAgIEluc3BlY3Rv
clN0eWxlU2hlZXQqIGluc3BlY3RvclN0eWxlU2hlZXQgPSBhc3NlcnRTdHlsZVNoZWV0Rm9ySWQo
ZXJyb3JTdHJpbmcsIGNvbXBvdW5kSWQuc3R5bGVTaGVldElkKCkpOwogICAgIGlmICghaW5zcGVj
dG9yU3R5bGVTaGVldCkKICAgICAgICAgcmV0dXJuOwogCkBAIC0zMzksNyArMzM4LDcgQEAgdm9p
ZCBJbnNwZWN0b3JDU1NBZ2VudDo6c2V0UnVsZVNlbGVjdG9yKEVycm9yU3RyaW5nKiBlcnJvclN0
cmluZywgY29uc3QgUmVmUHRyPEkKICAgICBJbnNwZWN0b3JDU1NJZCBjb21wb3VuZElkKGZ1bGxS
dWxlSWQpOwogICAgIEFTU0VSVCghY29tcG91bmRJZC5pc0VtcHR5KCkpOwogCi0gICAgSW5zcGVj
dG9yU3R5bGVTaGVldCogaW5zcGVjdG9yU3R5bGVTaGVldCA9IHN0eWxlU2hlZXRGb3JJZChlcnJv
clN0cmluZywgY29tcG91bmRJZC5zdHlsZVNoZWV0SWQoKSk7CisgICAgSW5zcGVjdG9yU3R5bGVT
aGVldCogaW5zcGVjdG9yU3R5bGVTaGVldCA9IGFzc2VydFN0eWxlU2hlZXRGb3JJZChlcnJvclN0
cmluZywgY29tcG91bmRJZC5zdHlsZVNoZWV0SWQoKSk7CiAgICAgaWYgKCFpbnNwZWN0b3JTdHls
ZVNoZWV0KQogICAgICAgICByZXR1cm47CiAKQEAgLTQ3MSw3ICs0NzAsNyBAQCBJbnNwZWN0b3JT
dHlsZVNoZWV0KiBJbnNwZWN0b3JDU1NBZ2VudDo6dmlhSW5zcGVjdG9yU3R5bGVTaGVldChEb2N1
bWVudCogZG9jdW1lbgogICAgIHJldHVybiBpbnNwZWN0b3JTdHlsZVNoZWV0LmdldCgpOwogfQog
Ci1JbnNwZWN0b3JTdHlsZVNoZWV0KiBJbnNwZWN0b3JDU1NBZ2VudDo6c3R5bGVTaGVldEZvcklk
KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBzdHlsZVNoZWV0SWQpCitJ
bnNwZWN0b3JTdHlsZVNoZWV0KiBJbnNwZWN0b3JDU1NBZ2VudDo6YXNzZXJ0U3R5bGVTaGVldEZv
cklkKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBzdHlsZVNoZWV0SWQp
CiB7CiAgICAgSWRUb0luc3BlY3RvclN0eWxlU2hlZXQ6Oml0ZXJhdG9yIGl0ID0gbV9pZFRvSW5z
cGVjdG9yU3R5bGVTaGVldC5maW5kKHN0eWxlU2hlZXRJZCk7CiAgICAgaWYgKGl0ID09IG1faWRU
b0luc3BlY3RvclN0eWxlU2hlZXQuZW5kKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNTU0FnZW50LmgKaW5kZXggNDBiYzJhYmIzODdiNjc1MGU1OGQ3NDdlYjgwZTI5
MDU0YjlhNGU1NC4uYzUzMzdkNmY2Nzg4ZWFlNDYwMmQ0YjI0ZGU5MDNmMmE0ZTM3ZWZlMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgKQEAgLTY2LDgg
KzY2LDggQEAgcHVibGljOgogICAgIHZvaWQgZ2V0Q29tcHV0ZWRTdHlsZUZvck5vZGUoRXJyb3JT
dHJpbmcqLCBpbnQgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piogc3R5bGUpOwogICAg
IHZvaWQgZ2V0QWxsU3R5bGVTaGVldHMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yQXJy
YXk+KiBzdHlsZVNoZWV0SW5mb3MpOwogICAgIHZvaWQgZ2V0U3R5bGVTaGVldChFcnJvclN0cmlu
ZyosIGNvbnN0IFN0cmluZyYgc3R5bGVTaGVldElkLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piog
cmVzdWx0KTsKLSAgICB2b2lkIGdldFN0eWxlU2hlZXRUZXh0KEVycm9yU3RyaW5nKiwgY29uc3Qg
U3RyaW5nJiBzdHlsZVNoZWV0SWQsIFN0cmluZyogdXJsLCBTdHJpbmcqIHJlc3VsdCk7Ci0gICAg
dm9pZCBzZXRTdHlsZVNoZWV0VGV4dChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc3R5bGVT
aGVldElkLCBjb25zdCBTdHJpbmcmIHRleHQsIGJvb2wqIHN1Y2Nlc3MpOworICAgIHZvaWQgZ2V0
U3R5bGVTaGVldFRleHQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHN0eWxlU2hlZXRJZCwg
U3RyaW5nKiByZXN1bHQpOworICAgIHZvaWQgc2V0U3R5bGVTaGVldFRleHQoRXJyb3JTdHJpbmcq
LCBjb25zdCBTdHJpbmcmIHN0eWxlU2hlZXRJZCwgY29uc3QgU3RyaW5nJiB0ZXh0KTsKICAgICB2
b2lkIHNldFByb3BlcnR5VGV4dChFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+JiBzdHlsZUlkLCBpbnQgcHJvcGVydHlJbmRleCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBi
b29sIG92ZXJ3cml0ZSwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIHJlc3VsdCk7CiAgICAgdm9p
ZCB0b2dnbGVQcm9wZXJ0eShFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+JiBzdHlsZUlkLCBpbnQgcHJvcGVydHlJbmRleCwgYm9vbCBkaXNhYmxlLCBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiogcmVzdWx0KTsKICAgICB2b2lkIHNldFJ1bGVTZWxlY3RvcihFcnJvclN0
cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBydWxlSWQsIGNvbnN0IFN0cmlu
ZyYgc2VsZWN0b3IsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiByZXN1bHQpOwpAQCAtODcsNyAr
ODcsNyBAQCBwcml2YXRlOgogCiAgICAgSW5zcGVjdG9yU3R5bGVTaGVldCogYmluZFN0eWxlU2hl
ZXQoQ1NTU3R5bGVTaGVldCopOwogICAgIEluc3BlY3RvclN0eWxlU2hlZXQqIHZpYUluc3BlY3Rv
clN0eWxlU2hlZXQoRG9jdW1lbnQqLCBib29sIGNyZWF0ZUlmQWJzZW50KTsKLSAgICBJbnNwZWN0
b3JTdHlsZVNoZWV0KiBzdHlsZVNoZWV0Rm9ySWQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcm
KTsKKyAgICBJbnNwZWN0b3JTdHlsZVNoZWV0KiBhc3NlcnRTdHlsZVNoZWV0Rm9ySWQoRXJyb3JT
dHJpbmcqLCBjb25zdCBTdHJpbmcmKTsKICAgICBTdHJpbmcgZGV0ZWN0T3JpZ2luKENTU1N0eWxl
U2hlZXQqIHBhZ2VTdHlsZVNoZWV0LCBEb2N1bWVudCogb3duZXJEb2N1bWVudCk7CiAKICAgICBQ
YXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBidWlsZEFycmF5Rm9yUnVsZUxpc3QoQ1NTUnVsZUxp
c3QqIHJ1bGVMaXN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvQ1NTU3R5bGVNb2RlbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvQ1NTU3R5bGVNb2RlbC5qcwppbmRleCAzOGY1Mjg0NGNjM2JkYzU0NTFlMTNjZjFmOTM0OTI3
YThjZGY4NTdmLi40MDNmZjk1ZTk4MjFlNmNlM2RhODVmMzJiMDNjMjM1Y2MzZTUyNDZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1N0eWxlTW9kZWwu
anMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTdHlsZU1vZGVs
LmpzCkBAIC0zMCw2ICszMCw3IEBACiAKIFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsID0gZnVu
Y3Rpb24oKQogeworICAgIG5ldyBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbFJlc291cmNlQmlu
ZGluZyh0aGlzKTsKIH0KIAogV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwucGFyc2VSdWxlQXJy
YXlQYXlsb2FkID0gZnVuY3Rpb24ocnVsZUFycmF5KQpAQCAtNDAsNiArNDEsMTAgQEAgV2ViSW5z
cGVjdG9yLkNTU1N0eWxlTW9kZWwucGFyc2VSdWxlQXJyYXlQYXlsb2FkID0gZnVuY3Rpb24ocnVs
ZUFycmF5KQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK1dlYkluc3BlY3Rvci5DU1NTdHlsZU1v
ZGVsLkV2ZW50cyA9IHsKKyAgICBTdHlsZVNoZWV0Q2hhbmdlZDogMAorfQorCiBXZWJJbnNwZWN0
b3IuQ1NTU3R5bGVNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgZ2V0U3R5bGVzQXN5bmM6IGZ1bmN0
aW9uKG5vZGVJZCwgdXNlckNhbGxiYWNrKQogICAgIHsKQEAgLTEyNCw3ICsxMjksNyBAQCBXZWJJ
bnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB2YXIgZG9l
c0FmZmVjdFNlbGVjdGVkTm9kZSA9IChzZWxlY3RlZE5vZGVJZHMuaW5kZXhPZihub2RlSWQpID49
IDApOwogICAgICAgICAgICAgdmFyIHJ1bGUgPSBXZWJJbnNwZWN0b3IuQ1NTUnVsZS5wYXJzZVBh
eWxvYWQocnVsZVBheWxvYWQpOwogICAgICAgICAgICAgc3VjY2Vzc0NhbGxiYWNrKHJ1bGUsIGRv
ZXNBZmZlY3RTZWxlY3RlZE5vZGUpOwotICAgICAgICAgICAgdGhpcy5fc3R5bGVTaGVldENoYW5n
ZWQocnVsZS5pZC5zdHlsZVNoZWV0SWQsIHRydWUpOworICAgICAgICAgICAgdGhpcy5fZmlyZVN0
eWxlU2hlZXRDaGFuZ2VkKHJ1bGUuaWQuc3R5bGVTaGVldElkLCB0cnVlKTsKICAgICAgICAgfQog
CiAgICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrKG5vZGVJZCwgc3VjY2Vzc0NhbGxiYWNrLCBmYWls
dXJlQ2FsbGJhY2ssIGVycm9yLCBuZXdTZWxlY3RvciwgcnVsZVBheWxvYWQpCkBAIC0xNDYsNyAr
MTUxLDcgQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwucHJvdG90eXBlID0gewogICAgICAg
ICAgICAgdmFyIGRvZXNBZmZlY3RTZWxlY3RlZE5vZGUgPSAoc2VsZWN0ZWROb2RlSWRzLmluZGV4
T2Yobm9kZUlkKSA+PSAwKTsKICAgICAgICAgICAgIHZhciBydWxlID0gV2ViSW5zcGVjdG9yLkNT
U1J1bGUucGFyc2VQYXlsb2FkKHJ1bGVQYXlsb2FkKTsKICAgICAgICAgICAgIHN1Y2Nlc3NDYWxs
YmFjayhydWxlLCBkb2VzQWZmZWN0U2VsZWN0ZWROb2RlKTsKLSAgICAgICAgICAgIHRoaXMuX3N0
eWxlU2hlZXRDaGFuZ2VkKHJ1bGUuaWQuc3R5bGVTaGVldElkLCB0cnVlKTsKKyAgICAgICAgICAg
IHRoaXMuX2ZpcmVTdHlsZVNoZWV0Q2hhbmdlZChydWxlLmlkLnN0eWxlU2hlZXRJZCwgdHJ1ZSk7
CiAgICAgICAgIH0KIAogICAgICAgICBmdW5jdGlvbiBjYWxsYmFjayhzdWNjZXNzQ2FsbGJhY2ss
IGZhaWx1cmVDYWxsYmFjaywgc2VsZWN0b3IsIGVycm9yLCBydWxlUGF5bG9hZCkKQEAgLTE2MSwz
MyArMTY2LDMzIEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgQ1NTQWdlbnQuYWRkUnVsZShub2RlSWQsIHNlbGVjdG9yLCBjYWxsYmFjay5iaW5kKHRo
aXMsIHN1Y2Nlc3NDYWxsYmFjaywgZmFpbHVyZUNhbGxiYWNrLCBzZWxlY3RvcikpOwogICAgIH0s
CiAKLSAgICBfc3R5bGVTaGVldENoYW5nZWQ6IGZ1bmN0aW9uKHN0eWxlU2hlZXRJZCwgbWFqb3JD
aGFuZ2UpCisgICAgX2ZpcmVTdHlsZVNoZWV0Q2hhbmdlZDogZnVuY3Rpb24oc3R5bGVTaGVldElk
LCBtYWpvckNoYW5nZSkKICAgICB7CiAgICAgICAgIGlmICghbWFqb3JDaGFuZ2UgfHwgIXN0eWxl
U2hlZXRJZCkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBmdW5jdGlvbiBjYWxsYmFj
ayhlcnJvciwgaHJlZiwgY29udGVudCkKKyAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2soZXJyb3Is
IGNvbnRlbnQpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChlcnJvcikKICAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICB2YXIgcmVzb3VyY2UgPSBXZWJJbnNwZWN0b3IucmVz
b3VyY2VGb3JVUkwoaHJlZik7Ci0gICAgICAgICAgICBpZiAocmVzb3VyY2UgJiYgcmVzb3VyY2Uu
dHlwZSA9PT0gV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuU3R5bGVzaGVldCkgewotICAgICAg
ICAgICAgICAgIHJlc291cmNlLnNldENvbnRlbnQoY29udGVudCwgdGhpcy5fb25SZXZlcnQuYmlu
ZCh0aGlzLCBzdHlsZVNoZWV0SWQpKTsKLSAgICAgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZl
bnRUb0xpc3RlbmVycygic3R5bGVzaGVldCBjaGFuZ2VkIik7Ci0gICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5DU1NT
dHlsZU1vZGVsLkV2ZW50cy5TdHlsZVNoZWV0Q2hhbmdlZCwge3N0eWxlU2hlZXRJZDpzdHlsZVNo
ZWV0SWQsIGNvbnRlbnQ6Y29udGVudCwgbWFqb3JDaGFuZ2U6bWFqb3JDaGFuZ2V9KTsKICAgICAg
ICAgfQotICAgICAgICBDU1NBZ2VudC5nZXRTdHlsZVNoZWV0VGV4dChzdHlsZVNoZWV0SWQsIGNh
bGxiYWNrLmJpbmQodGhpcykpOworICAgICAgICBpZiAodGhpcy5oYXNFdmVudExpc3RlbmVycyhX
ZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5FdmVudHMuU3R5bGVTaGVldENoYW5nZWQpKQorICAg
ICAgICAgICAgQ1NTQWdlbnQuZ2V0U3R5bGVTaGVldFRleHQoc3R5bGVTaGVldElkLCBjYWxsYmFj
ay5iaW5kKHRoaXMpKTsKICAgICB9LAogCi0gICAgX29uUmV2ZXJ0OiBmdW5jdGlvbihzdHlsZVNo
ZWV0SWQsIGNvbnRlbnRUb1JldmVydFRvKQorICAgIHNldFN0eWxlU2hlZXRUZXh0OiBmdW5jdGlv
bihzdHlsZVNoZWV0SWQsIG5ld1RleHQsIG1ham9yQ2hhbmdlLCB1c2VyQ2FsbGJhY2spCiAgICAg
ewotICAgICAgICBmdW5jdGlvbiBjYWxsYmFjayhlcnJvciwgc3VjY2VzcykKKyAgICAgICAgZnVu
Y3Rpb24gY2FsbGJhY2soZXJyb3IpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChlcnJvcikK
LSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB0aGlzLl9zdHlsZVNoZWV0Q2hh
bmdlZChzdHlsZVNoZWV0SWQsIHRydWUpOworICAgICAgICAgICAgIGlmICghZXJyb3IpCisgICAg
ICAgICAgICAgICAgIHRoaXMuX2ZpcmVTdHlsZVNoZWV0Q2hhbmdlZCh0aGlzLmlkLCBtYWpvckNo
YW5nZSk7CisKKyAgICAgICAgICAgICBpZiAodXNlckNhbGxiYWNrKQorICAgICAgICAgICAgICAg
ICB1c2VyQ2FsbGJhY2soZXJyb3IpOwogICAgICAgICB9Ci0gICAgICAgIENTU0FnZW50LnNldFN0
eWxlU2hlZXRUZXh0KHN0eWxlU2hlZXRJZCwgY29udGVudFRvUmV2ZXJ0VG8sIGNhbGxiYWNrLmJp
bmQodGhpcykpOworICAgICAgICBDU1NBZ2VudC5zZXRTdHlsZVNoZWV0VGV4dChzdHlsZVNoZWV0
SWQsIG5ld1RleHQsIGNhbGxiYWNrLmJpbmQodGhpcykpOwogICAgIH0KIH0KIApAQCAtMzY1LDcg
KzM3MCw3IEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgICAgICAgICB1c2VyQ2FsbGJhY2sobnVsbCk7CiAgICAgICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgICAgICB1c2VyQ2FsbGJhY2soV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFy
YXRpb24ucGFyc2VQYXlsb2FkKHBheWxvYWQpKTsKLSAgICAgICAgICAgICAgICBXZWJJbnNwZWN0
b3IuY3NzTW9kZWwuX3N0eWxlU2hlZXRDaGFuZ2VkKHRoaXMuaWQuc3R5bGVTaGVldElkLCB0cnVl
KTsKKyAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuY3NzTW9kZWwuX2ZpcmVTdHlsZVNoZWV0
Q2hhbmdlZCh0aGlzLmlkLnN0eWxlU2hlZXRJZCwgdHJ1ZSk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KIApAQCAtNDg2LDcgKzQ5MSw3IEBAIFdlYkluc3BlY3Rvci5DU1NQcm9wZXJ0eS5wcm90
b3R5cGUgPSB7CiAgICAgICAgIGZ1bmN0aW9uIGVuYWJsZWRDYWxsYmFjayhzdHlsZSkKICAgICAg
ICAgewogICAgICAgICAgICAgaWYgKHN0eWxlKQotICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rv
ci5jc3NNb2RlbC5fc3R5bGVTaGVldENoYW5nZWQoc3R5bGUuaWQuc3R5bGVTaGVldElkLCBtYWpv
ckNoYW5nZSk7CisgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmNzc01vZGVsLl9maXJlU3R5
bGVTaGVldENoYW5nZWQoc3R5bGUuaWQuc3R5bGVTaGVldElkLCBtYWpvckNoYW5nZSk7CiAgICAg
ICAgICAgICBpZiAodXNlckNhbGxiYWNrKQogICAgICAgICAgICAgICAgIHVzZXJDYWxsYmFjayhz
dHlsZSk7CiAgICAgICAgIH0KQEAgLTUwMiw3ICs1MDcsNyBAQCBXZWJJbnNwZWN0b3IuQ1NTUHJv
cGVydHkucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgICAgICBuZXdQcm9wZXJ0eS5zZXRE
aXNhYmxlZChmYWxzZSwgZW5hYmxlZENhbGxiYWNrKTsKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICBXZWJJbnNw
ZWN0b3IuY3NzTW9kZWwuX3N0eWxlU2hlZXRDaGFuZ2VkKHN0eWxlLmlkLnN0eWxlU2hlZXRJZCwg
bWFqb3JDaGFuZ2UpOworICAgICAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuY3NzTW9kZWwu
X2ZpcmVTdHlsZVNoZWV0Q2hhbmdlZChzdHlsZS5pZC5zdHlsZVNoZWV0SWQsIG1ham9yQ2hhbmdl
KTsKICAgICAgICAgICAgICAgICBpZiAodXNlckNhbGxiYWNrKQogICAgICAgICAgICAgICAgICAg
ICB1c2VyQ2FsbGJhY2soc3R5bGUpOwogICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTU0MCw3ICs1
NDUsNyBAQCBXZWJJbnNwZWN0b3IuQ1NTUHJvcGVydHkucHJvdG90eXBlID0gewogICAgICAgICAg
ICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgdmFyIHN0eWxlID0gV2ViSW5zcGVjdG9yLkNTU1N0
eWxlRGVjbGFyYXRpb24ucGFyc2VQYXlsb2FkKHN0eWxlUGF5bG9hZCk7CiAgICAgICAgICAgICAg
ICAgdXNlckNhbGxiYWNrKHN0eWxlKTsKLSAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuY3Nz
TW9kZWwuX3N0eWxlU2hlZXRDaGFuZ2VkKHRoaXMub3duZXJTdHlsZS5pZC5zdHlsZVNoZWV0SWQs
IGZhbHNlKTsKKyAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuY3NzTW9kZWwuX2ZpcmVTdHls
ZVNoZWV0Q2hhbmdlZCh0aGlzLm93bmVyU3R5bGUuaWQuc3R5bGVTaGVldElkLCBmYWxzZSk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtNTgzLDE0ICs1ODgsMTA1IEBAIFdlYkluc3Bl
Y3Rvci5DU1NTdHlsZVNoZWV0LnByb3RvdHlwZSA9IHsKIAogICAgIHNldFRleHQ6IGZ1bmN0aW9u
KG5ld1RleHQsIG1ham9yQ2hhbmdlLCB1c2VyQ2FsbGJhY2spCiAgICAgewotICAgICAgICBmdW5j
dGlvbiBjYWxsYmFjayhlcnJvciwgaXNDaGFuZ2VTdWNjZXNzZnVsKQorICAgICAgICBmdW5jdGlv
biBjYWxsYmFjayhlcnJvcikKICAgICAgICAgewogICAgICAgICAgICAgIGlmICh1c2VyQ2FsbGJh
Y2spCi0gICAgICAgICAgICAgICAgIHVzZXJDYWxsYmFjayhpc0NoYW5nZVN1Y2Nlc3NmdWwpOwot
ICAgICAgICAgICAgIGlmIChpc0NoYW5nZVN1Y2Nlc3NmdWwpCi0gICAgICAgICAgICAgICAgIFdl
Ykluc3BlY3Rvci5jc3NNb2RlbC5fc3R5bGVTaGVldENoYW5nZWQodGhpcy5pZCwgbWFqb3JDaGFu
Z2UpOworICAgICAgICAgICAgICAgICB1c2VyQ2FsbGJhY2soZXJyb3IpOworICAgICAgICAgICAg
IGlmICghZXJyb3IpCisgICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5jc3NNb2RlbC5fZmly
ZVN0eWxlU2hlZXRDaGFuZ2VkKHRoaXMuaWQsIG1ham9yQ2hhbmdlKTsKICAgICAgICAgfQogCiAg
ICAgICAgIENTU0FnZW50LnNldFN0eWxlU2hlZXRUZXh0KHRoaXMuaWQsIG5ld1RleHQsIGNhbGxi
YWNrLmJpbmQodGhpcykpOwogICAgIH0KIH0KKworV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWxS
ZXNvdXJjZUJpbmRpbmcgPSBmdW5jdGlvbihjc3NNb2RlbCkKK3sKKyAgICB0aGlzLl9jc3NNb2Rl
bCA9IGNzc01vZGVsOworICAgIHRoaXMuX3VybFRvU3R5bGVTaGVldElkID0ge307CisgICAgdGhp
cy5fc3R5bGVTaGVldElkVG9VUkwgPSB7fTsKKyAgICB0aGlzLl9jc3NNb2RlbC5hZGRFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLkV2ZW50cy5TdHlsZVNoZWV0Q2hhbmdl
ZCwgdGhpcy5fc3R5bGVTaGVldENoYW5nZWQsIHRoaXMpOworICAgIFdlYkluc3BlY3Rvci5yZXNv
dXJjZVRyZWVNb2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVN
b2RlbC5FdmVudFR5cGVzLkZyYW1lTmF2aWdhdGVkLCB0aGlzLl9mcmFtZU5hdmlnYXRlZCwgdGhp
cyk7CisgICAgV2ViSW5zcGVjdG9yLlJlc291cmNlLnJlZ2lzdGVyRG9tYWluTW9kZWxCaW5kaW5n
KFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLlN0eWxlc2hlZXQsIHRoaXMpOworfQorCitXZWJJ
bnNwZWN0b3IuQ1NTU3R5bGVNb2RlbFJlc291cmNlQmluZGluZy5wcm90b3R5cGUgPSB7CisgICAg
c2V0Q29udGVudDogZnVuY3Rpb24ocmVzb3VyY2UsIGNvbnRlbnQsIG1ham9yQ2hhbmdlLCB1c2Vy
Q2FsbGJhY2spCisgICAgeworICAgICAgICBpZiAodGhpcy5fdXJsVG9TdHlsZVNoZWV0SWRbcmVz
b3VyY2UudXJsXSkgeworICAgICAgICAgICAgdGhpcy5faW5uZXJTZXRDb250ZW50KHJlc291cmNl
LnVybCwgY29udGVudCwgbWFqb3JDaGFuZ2UsIHVzZXJDYWxsYmFjayk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgdGhpcy5fbG9hZFN0eWxlU2hlZXRIZWFkZXJzKHRo
aXMuX2lubmVyU2V0Q29udGVudC5iaW5kKHRoaXMsIHJlc291cmNlLnVybCwgY29udGVudCwgbWFq
b3JDaGFuZ2UsIHVzZXJDYWxsYmFjaykpOworICAgIH0sCisKKyAgICBfZnJhbWVOYXZpZ2F0ZWQ6
IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgdmFyIGZyYW1lSWQgPSBldmVudC5kYXRh
OworICAgICAgICBpZiAoIWZyYW1lSWQpIHsKKyAgICAgICAgICAgIC8vIE1haW4gZnJhbWUgbmF2
aWdhdGlvbiAtIGNsZWFyIGhpc3RvcnkuCisgICAgICAgICAgICB0aGlzLl91cmxUb1N0eWxlU2hl
ZXRJZCA9IHt9OworICAgICAgICAgICAgdGhpcy5fc3R5bGVTaGVldElkVG9VUkwgPSB7fTsKKyAg
ICAgICAgfQorICAgIH0sCisKKyAgICBfaW5uZXJTZXRDb250ZW50OiBmdW5jdGlvbih1cmwsIGNv
bnRlbnQsIG1ham9yQ2hhbmdlLCB1c2VyQ2FsbGJhY2ssIGVycm9yKQorICAgIHsKKyAgICAgICAg
aWYgKGVycm9yKQorICAgICAgICAgICAgdXNlckNhbGxiYWNrKGVycm9yKTsKKworICAgICAgICB2
YXIgc3R5bGVTaGVldElkID0gdGhpcy5fdXJsVG9TdHlsZVNoZWV0SWRbdXJsXTsKKyAgICAgICAg
aWYgKCFzdHlsZVNoZWV0SWQpIHsKKyAgICAgICAgICAgIGlmICh1c2VyQ2FsbGJhY2spCisgICAg
ICAgICAgICAgICAgdXNlckNhbGxiYWNrKCJObyBzdHlsZXNoZWV0IGZvdW5kIik7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgdGhpcy5fY3NzTW9kZWwuc2V0U3R5bGVT
aGVldFRleHQoc3R5bGVTaGVldElkLCBjb250ZW50LCBtYWpvckNoYW5nZSwgdXNlckNhbGxiYWNr
KTsKKyAgICB9LAorCisgICAgX2xvYWRTdHlsZVNoZWV0SGVhZGVyczogZnVuY3Rpb24oY2FsbGJh
Y2spCisgICAgeworICAgICAgICBmdW5jdGlvbiBkaWRHZXRBbGxTdHlsZVNoZWV0cyhlcnJvciwg
aW5mb3MpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChlcnJvcikgeworICAgICAgICAgICAg
ICAgIGNhbGxiYWNrKGVycm9yKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaW5mb3MubGVuZ3RoOyArK2kp
IHsKKyAgICAgICAgICAgICAgICB2YXIgaW5mbyA9IGluZm9zW2ldOworICAgICAgICAgICAgICAg
IHRoaXMuX3VybFRvU3R5bGVTaGVldElkW2luZm8uc291cmNlVVJMXSA9IGluZm8uc3R5bGVTaGVl
dElkOworICAgICAgICAgICAgICAgIHRoaXMuX3N0eWxlU2hlZXRJZFRvVVJMW2luZm8uc3R5bGVT
aGVldElkXSA9IGluZm8uc291cmNlVVJMOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2Fs
bGJhY2soKTsKKyAgICAgICAgfQorICAgICAgICBDU1NBZ2VudC5nZXRBbGxTdHlsZVNoZWV0cyhk
aWRHZXRBbGxTdHlsZVNoZWV0cy5iaW5kKHRoaXMpKTsKKyAgICB9LAorCisgICAgX3N0eWxlU2hl
ZXRDaGFuZ2VkOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHZhciBzdHlsZVNoZWV0
SWQgPSBldmVudC5kYXRhLnN0eWxlU2hlZXRJZDsKKyAgICAgICAgZnVuY3Rpb24gc2V0Q29udGVu
dCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciB1cmwgPSB0aGlzLl9zdHlsZVNoZWV0SWRU
b1VSTFtzdHlsZVNoZWV0SWRdOworICAgICAgICAgICAgaWYgKCF1cmwpCisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgIAorICAgICAgICAgICAgdmFyIHJlc291cmNlID0gV2ViSW5zcGVjdG9y
LnJlc291cmNlRm9yVVJMKHVybCk7CisgICAgICAgICAgICBpZiAoIXJlc291cmNlKQorICAgICAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgdmFyIG1ham9yQ2hhbmdlID0gZXZlbnQu
ZGF0YS5tYWpvckNoYW5nZTsKKyAgICAgICAgICAgIGlmIChtYWpvckNoYW5nZSkKKyAgICAgICAg
ICAgICAgICByZXNvdXJjZS5hZGRSZXZpc2lvbihldmVudC5kYXRhLmNvbnRlbnQpOworICAgICAg
ICB9CisKKyAgICAgICAgaWYgKCF0aGlzLl9zdHlsZVNoZWV0SWRUb1VSTFtzdHlsZVNoZWV0SWRd
KSB7CisgICAgICAgICAgICB0aGlzLl9sb2FkU3R5bGVTaGVldEhlYWRlcnMoc2V0Q29udGVudC5i
aW5kKHRoaXMpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBzZXRD
b250ZW50LmNhbGwodGhpcyk7CisgICAgfQorfQorCitXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2Rl
bFJlc291cmNlQmluZGluZy5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlJlc291
cmNlRG9tYWluTW9kZWxCaW5kaW5nLnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5qcyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJQcmVzZW50YXRpb25Nb2Rl
bC5qcwppbmRleCBkNzQ3Y2QzOTQ0NGNiMjY5YWRmZmY2ZmNmNmRiMTEzNjM3ZDI1YjQ0Li4xMDZk
NjJmNjk3YmFiMmNhYjQzYTcxNmE0YTMyZGQ0ZDUwYTVlZDIwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuanMK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlclByZXNlbnRh
dGlvbk1vZGVsLmpzCkBAIC00NSw2ICs0NSw4IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNl
bnRhdGlvbk1vZGVsID0gZnVuY3Rpb24oKQogICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVs
LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuRXZlbnRzLkRlYnVn
Z2VyUGF1c2VkLCB0aGlzLl9kZWJ1Z2dlclBhdXNlZCwgdGhpcyk7CiAgICAgV2ViSW5zcGVjdG9y
LmRlYnVnZ2VyTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2Rl
bC5FdmVudHMuRGVidWdnZXJSZXN1bWVkLCB0aGlzLl9kZWJ1Z2dlclJlc3VtZWQsIHRoaXMpOwog
ICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVj
dG9yLkRlYnVnZ2VyTW9kZWwuRXZlbnRzLlJlc2V0LCB0aGlzLl9kZWJ1Z2dlclJlc2V0LCB0aGlz
KTsKKworICAgIG5ldyBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbFJlc291
cmNlQmluZGluZyh0aGlzKTsKIH0KIAogV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9u
TW9kZWwuRXZlbnRzID0gewpAQCAtMTQwLDEyICsxNDIsMTUgQEAgV2ViSW5zcGVjdG9yLkRlYnVn
Z2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgdmFyIHNj
cmlwdCA9IHRoaXMuX3NjcmlwdEZvclNvdXJjZUZpbGVJZChzb3VyY2VGaWxlSWQpOwogICAgICAg
ICB2YXIgc291cmNlRmlsZSA9IHRoaXMuX3NvdXJjZUZpbGVzW3NvdXJjZUZpbGVJZF07Ci0gICAg
ICAgIHZhciBvbGRTb3VyY2UgPSBzb3VyY2VGaWxlLmNvbnRlbnQ7Ci0gICAgICAgIGZ1bmN0aW9u
IGRpZEVkaXRTY3JpcHRTb3VyY2UoZXJyb3IpCisKKyAgICAgICAgZnVuY3Rpb24gZGlkRWRpdFNj
cmlwdFNvdXJjZShvbGRTb3VyY2UsIGVycm9yKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAo
IWVycm9yKSB7CiAgICAgICAgICAgICAgICAgc291cmNlRmlsZS5jb250ZW50ID0gbmV3U291cmNl
OwotICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVJlc291cmNlQ29udGVudChzb3VyY2VGaWxl
LCBvbGRTb3VyY2UsIG5ld1NvdXJjZSk7CisKKyAgICAgICAgICAgICAgICB2YXIgcmVzb3VyY2Ug
PSBXZWJJbnNwZWN0b3IucmVzb3VyY2VGb3JVUkwoc291cmNlRmlsZS51cmwpOworICAgICAgICAg
ICAgICAgIGlmIChyZXNvdXJjZSkKKyAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2UuYWRkUmV2
aXNpb24obmV3U291cmNlKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgY2FsbGJhY2so
ZXJyb3IpOwpAQCAtMTUzLDIyICsxNTgsMTIgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2Vu
dGF0aW9uTW9kZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgaWYgKCFlcnJvciAmJiBXZWJJ
bnNwZWN0b3IuZGVidWdnZXJNb2RlbC5jYWxsRnJhbWVzKQogICAgICAgICAgICAgICAgIHRoaXMu
X2RlYnVnZ2VyUGF1c2VkKCk7CiAgICAgICAgIH0KLSAgICAgICAgV2ViSW5zcGVjdG9yLmRlYnVn
Z2VyTW9kZWwuZWRpdFNjcmlwdFNvdXJjZShzY3JpcHQuc291cmNlSUQsIG5ld1NvdXJjZSwgZGlk
RWRpdFNjcmlwdFNvdXJjZS5iaW5kKHRoaXMpKTsKLSAgICB9LAogCi0gICAgX3VwZGF0ZVJlc291
cmNlQ29udGVudDogZnVuY3Rpb24oc291cmNlRmlsZSwgb2xkU291cmNlLCBuZXdTb3VyY2UpCi0g
ICAgewotICAgICAgICB2YXIgcmVzb3VyY2UgPSBXZWJJbnNwZWN0b3IucmVzb3VyY2VGb3JVUkwo
c291cmNlRmlsZS51cmwpOwotICAgICAgICBpZiAoIXJlc291cmNlKQotICAgICAgICAgICAgcmV0
dXJuOwotCi0gICAgICAgIGZ1bmN0aW9uIGRpZEVkaXRTY3JpcHRTb3VyY2UoZXJyb3IpCisgICAg
ICAgIHZhciBvbGRTb3VyY2UgPSBzb3VyY2VGaWxlLnJlcXVlc3RDb250ZW50KGRpZFJlY2VpdmVT
b3VyY2UuYmluZCh0aGlzKSk7CisgICAgICAgIGZ1bmN0aW9uIGRpZFJlY2VpdmVTb3VyY2Uob2xk
U291cmNlKQogICAgICAgICB7Ci0gICAgICAgICAgICB0aGlzLl91cGRhdGVCcmVha3BvaW50c0Fm
dGVyTGl2ZUVkaXQoc291cmNlRmlsZS5pZCwgb2xkU291cmNlLCBuZXdTb3VyY2UpOwotICAgICAg
ICAgICAgc291cmNlRmlsZS5yZWxvYWQoKTsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5kZWJ1
Z2dlck1vZGVsLmVkaXRTY3JpcHRTb3VyY2Uoc2NyaXB0LnNvdXJjZUlELCBuZXdTb3VyY2UsIGRp
ZEVkaXRTY3JpcHRTb3VyY2UuYmluZCh0aGlzLCBvbGRTb3VyY2UpKTsKICAgICAgICAgfQotICAg
ICAgICB2YXIgcmV2ZXJ0SGFuZGxlID0gdGhpcy5lZGl0U2NyaXB0U291cmNlLmJpbmQodGhpcywg
c291cmNlRmlsZS5pZCwgb2xkU291cmNlLCBkaWRFZGl0U2NyaXB0U291cmNlLmJpbmQodGhpcykp
OwotICAgICAgICByZXNvdXJjZS5zZXRDb250ZW50KG5ld1NvdXJjZSwgcmV2ZXJ0SGFuZGxlKTsK
ICAgICB9LAogCiAgICAgX3VwZGF0ZUJyZWFrcG9pbnRzQWZ0ZXJMaXZlRWRpdDogZnVuY3Rpb24o
c291cmNlRmlsZUlkLCBvbGRTb3VyY2UsIG5ld1NvdXJjZSkKQEAgLTcxMiwzICs3MDcsNDkgQEAg
V2ViSW5zcGVjdG9yLlByZXNlbmF0aW9uQ2FsbEZyYW1lLnByb3RvdHlwZSA9IHsKICAgICAgICAg
dGhpcy5fc291cmNlRmlsZS5yZXF1ZXN0U291cmNlTWFwcGluZyhkaWRSZXF1ZXN0U291cmNlTWFw
cGluZy5iaW5kKHRoaXMpKTsKICAgICB9CiB9CisKK1dlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNl
bnRhdGlvbk1vZGVsUmVzb3VyY2VCaW5kaW5nID0gZnVuY3Rpb24obW9kZWwpCit7CisgICAgdGhp
cy5fcHJlc2VudGF0aW9uTW9kZWwgPSBtb2RlbDsKKyAgICBXZWJJbnNwZWN0b3IuUmVzb3VyY2Uu
cmVnaXN0ZXJEb21haW5Nb2RlbEJpbmRpbmcoV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuU2Ny
aXB0LCB0aGlzKTsKK30KKworV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWxS
ZXNvdXJjZUJpbmRpbmcucHJvdG90eXBlID0geworICAgIGNhblNldENvbnRlbnQ6IGZ1bmN0aW9u
KHJlc291cmNlKQorICAgIHsKKyAgICAgICAgdmFyIHNvdXJjZUZpbGUgPSB0aGlzLl9wcmVzZW50
YXRpb25Nb2RlbC5fc291cmNlRmlsZUZvclNjcmlwdChyZXNvdXJjZS51cmwpCisgICAgICAgIGlm
ICghc291cmNlRmlsZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJu
IHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLmNhbkVkaXRTY3JpcHRTb3VyY2Uoc291cmNlRmlsZS5p
ZCk7CisgICAgfSwKKworICAgIHNldENvbnRlbnQ6IGZ1bmN0aW9uKHJlc291cmNlLCBjb250ZW50
LCBtYWpvckNoYW5nZSwgdXNlckNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgaWYgKCFtYWpvckNo
YW5nZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB2YXIgc291cmNlRmlsZSA9IHRo
aXMuX3ByZXNlbnRhdGlvbk1vZGVsLl9zb3VyY2VGaWxlRm9yU2NyaXB0KHJlc291cmNlLnVybCk7
CisgICAgICAgIGlmICghc291cmNlRmlsZSkgeworICAgICAgICAgICAgdXNlckNhbGxiYWNrKCJS
ZXNvdXJjZSBpcyBub3QgZWRpdGFibGUiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorCisgICAgICAgIHJlc291cmNlLnJlcXVlc3RDb250ZW50KHRoaXMuX3NldENvbnRlbnRXaXRo
SW5pdGlhbENvbnRlbnQuYmluZCh0aGlzLCBzb3VyY2VGaWxlLCBjb250ZW50LCB1c2VyQ2FsbGJh
Y2spKTsKKyAgICB9LAorCisgICAgX3NldENvbnRlbnRXaXRoSW5pdGlhbENvbnRlbnQ6IGZ1bmN0
aW9uKHNvdXJjZUZpbGUsIGNvbnRlbnQsIHVzZXJDYWxsYmFjaywgb2xkQ29udGVudCkKKyAgICB7
CisgICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrKGVycm9yKQorICAgICAgICB7CisgICAgICAgICAg
ICBpZiAodXNlckNhbGxiYWNrKQorICAgICAgICAgICAgICAgIHVzZXJDYWxsYmFjayhlcnJvcik7
CisgICAgICAgICAgICBpZiAoIWVycm9yKSB7CisgICAgICAgICAgICAgICAgdGhpcy5fcHJlc2Vu
dGF0aW9uTW9kZWwuX3VwZGF0ZUJyZWFrcG9pbnRzQWZ0ZXJMaXZlRWRpdChzb3VyY2VGaWxlLmlk
LCBvbGRDb250ZW50LCBjb250ZW50KTsKKyAgICAgICAgICAgICAgICBzb3VyY2VGaWxlLnJlbG9h
ZCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHRoaXMuX3ByZXNlbnRhdGlv
bk1vZGVsLmVkaXRTY3JpcHRTb3VyY2Uoc291cmNlRmlsZS5pZCwgY29udGVudCwgY2FsbGJhY2su
YmluZCh0aGlzKSk7CisgICAgfQorfQorCitXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRp
b25Nb2RlbFJlc291cmNlQmluZGluZy5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9y
LlJlc291cmNlRG9tYWluTW9kZWxCaW5kaW5nLnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvT2JqZWN0LmpzIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9PYmplY3QuanMKaW5kZXggNTg3MmI4YjUxZmJjYjUzZDRmYjQ2
ZmE2Y2ViYjNmYzcwMjQ4MDY4MC4uNTNjMjBlMjllNWQ2NmZmYTU0YjM0MTg5ODBmYTRiY2JiNDQz
NzQzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9PYmpl
Y3QuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9PYmplY3QuanMK
QEAgLTU3LDYgKzU3LDEzIEBAIFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlID0gewogICAg
ICAgICBkZWxldGUgdGhpcy5fbGlzdGVuZXJzOwogICAgIH0sCiAKKyAgICBoYXNFdmVudExpc3Rl
bmVyczogZnVuY3Rpb24oZXZlbnRUeXBlKQorICAgIHsKKyAgICAgICAgaWYgKCEoIl9saXN0ZW5l
cnMiIGluIHRoaXMpIHx8ICEoZXZlbnRUeXBlIGluIHRoaXMuX2xpc3RlbmVycykpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0sCisKICAgICBk
aXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnM6IGZ1bmN0aW9uKGV2ZW50VHlwZSwgZXZlbnREYXRhKQog
ICAgIHsKICAgICAgICAgaWYgKCEoIl9saXN0ZW5lcnMiIGluIHRoaXMpIHx8ICEoZXZlbnRUeXBl
IGluIHRoaXMuX2xpc3RlbmVycykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1Jlc291cmNlLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9SZXNvdXJjZS5qcwppbmRleCBjNjQ3NGMyOGFiZjYyZGE0YjQ4YTVjNTExYmVlMjQwMmRl
NDEzMjI2Li40N2JlZGViMjE4ZTc5YWFiN2JkMTY3NDNjMTFjMzBkNDRkNzQ3YTQzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlLmpzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2UuanMKQEAgLTM0LDYg
KzM0LDcgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlID0gZnVuY3Rpb24oaWRlbnRpZmllciwgdXJs
KQogICAgIHRoaXMuX2NhdGVnb3J5ID0gV2ViSW5zcGVjdG9yLnJlc291cmNlQ2F0ZWdvcmllcy5v
dGhlcjsKICAgICB0aGlzLl9wZW5kaW5nQ29udGVudENhbGxiYWNrcyA9IFtdOwogICAgIHRoaXMu
X3Jlc3BvbnNlSGVhZGVyc1NpemUgPSAwOworICAgIHRoaXMuaGlzdG9yeSA9IFtdOwogfQogCiAv
LyBLZWVwIHRoZXNlIGluIHN5bmMgd2l0aCBXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZTo6VHlw
ZQpAQCAtMTAxLDYgKzEwMiwxNyBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZSA9IHsKICAg
ICB9CiB9CiAKK1dlYkluc3BlY3Rvci5SZXNvdXJjZS5fZG9tYWluTW9kZWxCaW5kaW5ncyA9IFtd
OworCitXZWJJbnNwZWN0b3IuUmVzb3VyY2UucmVnaXN0ZXJEb21haW5Nb2RlbEJpbmRpbmcgPSBm
dW5jdGlvbih0eXBlLCBiaW5kaW5nKQoreworICAgIFdlYkluc3BlY3Rvci5SZXNvdXJjZS5fZG9t
YWluTW9kZWxCaW5kaW5nc1t0eXBlXSA9IGJpbmRpbmc7Cit9CisKK1dlYkluc3BlY3Rvci5SZXNv
dXJjZS5FdmVudHMgPSB7CisgICAgUmV2aXNpb25BZGRlZDogMAorfQorCiBXZWJJbnNwZWN0b3Iu
UmVzb3VyY2UucHJvdG90eXBlID0gewogICAgIGdldCB1cmwoKQogICAgIHsKQEAgLTY0MCwyMCAr
NjUyLDM2IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRo
aXMuX2NvbnRlbnQgPSBjb250ZW50OwogICAgIH0sCiAKLSAgICBpc1Jlc291cmNlUmV2aXNpb246
IGZ1bmN0aW9uKCkKKyAgICBpc0VkaXRhYmxlOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICBy
ZXR1cm4gISF0aGlzLl9hY3R1YWxSZXNvdXJjZTsKKyAgICAgICAgaWYgKHRoaXMuX2FjdHVhbFJl
c291cmNlKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB2YXIgYmluZGluZyA9
IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5fZG9tYWluTW9kZWxCaW5kaW5nc1t0aGlzLnR5cGVdOwor
ICAgICAgICByZXR1cm4gYmluZGluZyAmJiBiaW5kaW5nLmNhblNldENvbnRlbnQodGhpcyk7Cisg
ICAgfSwKKworICAgIHNldENvbnRlbnQ6IGZ1bmN0aW9uKG5ld0NvbnRlbnQsIG1ham9yQ2hhbmdl
LCBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5pc0VkaXRhYmxlKHRoaXMpKSB7
CisgICAgICAgICAgICBpZiAoY2FsbGJhY2spCisgICAgICAgICAgICAgICAgY2FsbGJhY2soIlJl
c291cmNlIGlzIG5vdCBlZGl0YWJsZSIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisgICAgICAgIHZhciBiaW5kaW5nID0gV2ViSW5zcGVjdG9yLlJlc291cmNlLl9kb21haW5Nb2Rl
bEJpbmRpbmdzW3RoaXMudHlwZV07CisgICAgICAgIGJpbmRpbmcuc2V0Q29udGVudCh0aGlzLCBu
ZXdDb250ZW50LCBtYWpvckNoYW5nZSwgY2FsbGJhY2spOwogICAgIH0sCiAKLSAgICBzZXRDb250
ZW50OiBmdW5jdGlvbihuZXdDb250ZW50LCBvblJldmVydCkKKyAgICBhZGRSZXZpc2lvbjogZnVu
Y3Rpb24obmV3Q29udGVudCkKICAgICB7CiAgICAgICAgIHZhciByZXZpc2lvblJlc291cmNlID0g
bmV3IFdlYkluc3BlY3Rvci5SZXNvdXJjZShudWxsLCB0aGlzLnVybCk7CisgICAgICAgIHJldmlz
aW9uUmVzb3VyY2UuZnJhbWVJZCA9IHRoaXMuZnJhbWVJZDsKKyAgICAgICAgcmV2aXNpb25SZXNv
dXJjZS5sb2FkZXJJZCA9IHRoaXMubG9hZGVySWQ7CisgICAgICAgIHJldmlzaW9uUmVzb3VyY2Uu
ZG9jdW1lbnRVUkwgPSB0aGlzLmRvY3VtZW50VVJMOwogICAgICAgICByZXZpc2lvblJlc291cmNl
LnR5cGUgPSB0aGlzLnR5cGU7CiAgICAgICAgIHJldmlzaW9uUmVzb3VyY2UubG9hZGVyID0gdGhp
cy5sb2FkZXI7CiAgICAgICAgIHJldmlzaW9uUmVzb3VyY2UudGltZXN0YW1wID0gdGhpcy50aW1l
c3RhbXA7CiAgICAgICAgIHJldmlzaW9uUmVzb3VyY2UuX2NvbnRlbnQgPSB0aGlzLl9jb250ZW50
OwogICAgICAgICByZXZpc2lvblJlc291cmNlLl9hY3R1YWxSZXNvdXJjZSA9IHRoaXM7Ci0gICAg
ICAgIHJldmlzaW9uUmVzb3VyY2UuX2ZpcmVPblJldmVydCA9IG9uUmV2ZXJ0OwogCiAgICAgICAg
IGlmICh0aGlzLmZpbmlzaGVkKQogICAgICAgICAgICAgcmV2aXNpb25SZXNvdXJjZS5maW5pc2hl
ZCA9IHRydWU7CkBAIC02NzEsMjIgKzY5OSwyMiBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJv
dG90eXBlID0gewogICAgICAgICBlbHNlCiAgICAgICAgICAgICByZXZpc2lvblJlc291cmNlLl9i
YXNlUmV2aXNpb24gPSB0aGlzLl9iYXNlUmV2aXNpb247CiAKLSAgICAgICAgdmFyIGRhdGEgPSB7
IHJldmlzaW9uOiByZXZpc2lvblJlc291cmNlIH07CiAgICAgICAgIHRoaXMuX2NvbnRlbnQgPSBu
ZXdDb250ZW50OwogICAgICAgICB0aGlzLnRpbWVzdGFtcCA9IG5ldyBEYXRlKCk7CiAKLSAgICAg
ICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoImNvbnRlbnQtY2hhbmdlZCIsIGRhdGEp
OworICAgICAgICB0aGlzLmhpc3RvcnkucHVzaChyZXZpc2lvblJlc291cmNlKTsKKyAgICAgICAg
dGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlJlc291cmNlLkV2ZW50
cy5SZXZpc2lvbkFkZGVkLCByZXZpc2lvblJlc291cmNlKTsKICAgICB9LAogCiAgICAgcmV2ZXJ0
VG9UaGlzOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICBpZiAoIXRoaXMuX2FjdHVhbFJlc291
cmNlIHx8ICF0aGlzLl9maXJlT25SZXZlcnQpCisgICAgICAgIGlmICghdGhpcy5fYWN0dWFsUmVz
b3VyY2UpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2so
Y29udGVudCkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKGNvbnRlbnQpCi0gICAgICAgICAg
ICAgICAgdGhpcy5fZmlyZU9uUmV2ZXJ0KGNvbnRlbnQpOworICAgICAgICAgICAgICAgIHRoaXMu
X2FjdHVhbFJlc291cmNlLnNldENvbnRlbnQoY29udGVudCwgdHJ1ZSk7CiAgICAgICAgIH0KICAg
ICAgICAgdGhpcy5yZXF1ZXN0Q29udGVudChjYWxsYmFjay5iaW5kKHRoaXMpKTsKICAgICB9LApA
QCAtNzYzLDMgKzc5MSwyMSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlID0gewog
fQogCiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3Bl
Y3Rvci5PYmplY3QucHJvdG90eXBlOworCisKK1dlYkluc3BlY3Rvci5SZXNvdXJjZURvbWFpbk1v
ZGVsQmluZGluZyA9IGZ1bmN0aW9uKCkKK3sKK30KKworV2ViSW5zcGVjdG9yLlJlc291cmNlRG9t
YWluTW9kZWxCaW5kaW5nLnByb3RvdHlwZSA9IHsKKyAgICBjYW5TZXRDb250ZW50OiBmdW5jdGlv
bigpCisgICAgeworICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSB0aGUgZG9tYWlucy4KKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfSwKKworICAgIHNldENvbnRlbnQ6IGZ1bmN0aW9uKHJlc291
cmNlLCBjb250ZW50LCBtYWpvckNoYW5nZSwgY2FsbGJhY2spCisgICAgeworICAgICAgICAvLyBJ
bXBsZW1lbnRlZCBieSB0aGUgZG9tYWlucy4KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVmlldy5qcyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VWaWV3LmpzCmluZGV4IDcyMDI1N2NlZjg3
ODk1ZjY0ZTQ3NTI1YjlhOTQ1ZjMxYTg1NjM1Y2QuLmE3YzYxMTAzNmI2YTQ1YjYxN2E4MGI0OTg4
YTcwZGMyYjdmZjE4ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvUmVzb3VyY2VWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvUmVzb3VyY2VWaWV3LmpzCkBAIC00OSw5ICs0OSw4IEBAIFdlYkluc3BlY3Rvci5SZXNv
dXJjZVZpZXcuY3JlYXRlUmVzb3VyY2VWaWV3ID0gZnVuY3Rpb24ocmVzb3VyY2UpCiAgICAgY2Fz
ZSBXZWJJbnNwZWN0b3IucmVzb3VyY2VDYXRlZ29yaWVzLmRvY3VtZW50czoKICAgICBjYXNlIFdl
Ykluc3BlY3Rvci5yZXNvdXJjZUNhdGVnb3JpZXMuc2NyaXB0czoKICAgICBjYXNlIFdlYkluc3Bl
Y3Rvci5yZXNvdXJjZUNhdGVnb3JpZXMueGhyOgotICAgICAgICByZXR1cm4gbmV3IFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZVNvdXJjZUZyYW1lKHJlc291cmNlKTsKICAgICBjYXNlIFdlYkluc3BlY3Rv
ci5yZXNvdXJjZUNhdGVnb3JpZXMuc3R5bGVzaGVldHM6Ci0gICAgICAgIHJldHVybiBuZXcgV2Vi
SW5zcGVjdG9yLkNTU1NvdXJjZUZyYW1lKHJlc291cmNlKTsKKyAgICAgICAgcmV0dXJuIG5ldyBX
ZWJJbnNwZWN0b3IuUmVzb3VyY2VTb3VyY2VGcmFtZShyZXNvdXJjZSk7CiAgICAgY2FzZSBXZWJJ
bnNwZWN0b3IucmVzb3VyY2VDYXRlZ29yaWVzLmltYWdlczoKICAgICAgICAgcmV0dXJuIG5ldyBX
ZWJJbnNwZWN0b3IuSW1hZ2VWaWV3KHJlc291cmNlKTsKICAgICBjYXNlIFdlYkluc3BlY3Rvci5y
ZXNvdXJjZUNhdGVnb3JpZXMuZm9udHM6CkBAIC02OCw5ICs2Nyw4IEBAIFdlYkluc3BlY3Rvci5S
ZXNvdXJjZVZpZXcucmVzb3VyY2VWaWV3VHlwZU1hdGNoZXNSZXNvdXJjZSA9IGZ1bmN0aW9uKHJl
c291cmNlKQogICAgIGNhc2UgV2ViSW5zcGVjdG9yLnJlc291cmNlQ2F0ZWdvcmllcy5kb2N1bWVu
dHM6CiAgICAgY2FzZSBXZWJJbnNwZWN0b3IucmVzb3VyY2VDYXRlZ29yaWVzLnNjcmlwdHM6CiAg
ICAgY2FzZSBXZWJJbnNwZWN0b3IucmVzb3VyY2VDYXRlZ29yaWVzLnhocjoKLSAgICAgICAgcmV0
dXJuIHJlc291cmNlVmlldy5fX3Byb3RvX18gPT09IFdlYkluc3BlY3Rvci5SZXNvdXJjZVNvdXJj
ZUZyYW1lLnByb3RvdHlwZTsKICAgICBjYXNlIFdlYkluc3BlY3Rvci5yZXNvdXJjZUNhdGVnb3Jp
ZXMuc3R5bGVzaGVldHM6Ci0gICAgICAgIHJldHVybiByZXNvdXJjZVZpZXcuX19wcm90b19fID09
PSBXZWJJbnNwZWN0b3IuQ1NTU291cmNlRnJhbWUucHJvdG90eXBlOworICAgICAgICByZXR1cm4g
cmVzb3VyY2VWaWV3Ll9fcHJvdG9fXyA9PT0gV2ViSW5zcGVjdG9yLlJlc291cmNlU291cmNlRnJh
bWUucHJvdG90eXBlOwogICAgIGNhc2UgV2ViSW5zcGVjdG9yLnJlc291cmNlQ2F0ZWdvcmllcy5p
bWFnZXM6CiAgICAgICAgIHJldHVybiByZXNvdXJjZVZpZXcuX19wcm90b19fID09PSBXZWJJbnNw
ZWN0b3IuSW1hZ2VWaWV3LnByb3RvdHlwZTsKICAgICBjYXNlIFdlYkluc3BlY3Rvci5yZXNvdXJj
ZUNhdGVnb3JpZXMuZm9udHM6CkBAIC0xNDAsNzkgKzEzOCwxNCBAQCBXZWJJbnNwZWN0b3IuUmVz
b3VyY2VTb3VyY2VGcmFtZS5wcm90b3R5cGUgPSB7CiAKICAgICBpc0NvbnRlbnRFZGl0YWJsZTog
ZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0sCi0KLSAgICBf
cmVxdWVzdENvbnRlbnQ6IGZ1bmN0aW9uKGNhbGxiYWNrKQotICAgIHsKLSAgICAgICAgZnVuY3Rp
b24gY29udGVudExvYWRlZCh0ZXh0KQotICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgbWltZVR5
cGUgPSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VTb3VyY2VGcmFtZS5EZWZhdWx0TUlNRVR5cGVGb3JS
ZXNvdXJjZVR5cGVbdGhpcy5fcmVzb3VyY2UudHlwZV0gfHwgdGhpcy5fcmVzb3VyY2UubWltZVR5
cGU7Ci0gICAgICAgICAgICBjYWxsYmFjayhtaW1lVHlwZSwgdGV4dCk7Ci0gICAgICAgIH0KLSAg
ICAgICAgdGhpcy5fcmVzb3VyY2UucmVxdWVzdENvbnRlbnQoY29udGVudExvYWRlZC5iaW5kKHRo
aXMpKTsKLSAgICB9Ci19Ci0KLVdlYkluc3BlY3Rvci5SZXNvdXJjZVNvdXJjZUZyYW1lLnByb3Rv
dHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUucHJvdG90eXBlOwotCi0K
LVdlYkluc3BlY3Rvci5DU1NTb3VyY2VGcmFtZSA9IGZ1bmN0aW9uKHJlc291cmNlKQotewotICAg
IFdlYkluc3BlY3Rvci5SZXNvdXJjZVNvdXJjZUZyYW1lLmNhbGwodGhpcywgcmVzb3VyY2UpOwot
ICAgIHRoaXMuX2xvYWRTdHlsZVNoZWV0KCk7Ci19Ci0KLVdlYkluc3BlY3Rvci5DU1NTb3VyY2VG
cmFtZS5wcm90b3R5cGUgPSB7Ci0gICAgaXNDb250ZW50RWRpdGFibGU6IGZ1bmN0aW9uKCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiAhIXRoaXMuX3N0eWxlU2hlZXQgJiYgIXRoaXMuX3Jlc291cmNl
LmlzUmVzb3VyY2VSZXZpc2lvbigpOwotICAgIH0sCi0KLSAgICBfbG9hZFN0eWxlU2hlZXQ6IGZ1
bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGZ1bmN0aW9uIGRpZEdldEFsbFN0eWxlU2hlZXRzKGVy
cm9yLCBpbmZvcykKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKGVycm9yKQotICAgICAgICAg
ICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgdmFyIHN0eWxlc2hlZXRJZDsKLSAgICAgICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaW5mb3MubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAg
ICAgICB2YXIgaW5mbyA9IGluZm9zW2ldOwotICAgICAgICAgICAgICAgIGlmIChpbmZvLnNvdXJj
ZVVSTCA9PT0gdGhpcy5fcmVzb3VyY2UudXJsKSB7Ci0gICAgICAgICAgICAgICAgICAgIHN0eWxl
c2hlZXRJZCA9IGluZm8uc3R5bGVTaGVldElkOwotICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoIXN0eWxl
c2hlZXRJZCkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIGZ1bmN0aW9u
IGRpZENyZWF0ZUZvcklkKHN0eWxlU2hlZXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgdGhpcy5fc3R5bGVTaGVldCA9IHN0eWxlU2hlZXQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVTaGVldC5jcmVhdGVGb3JJZChzdHlsZXNoZWV0SWQs
IGRpZENyZWF0ZUZvcklkLmJpbmQodGhpcykpOwotICAgICAgICB9Ci0gICAgICAgIENTU0FnZW50
LmdldEFsbFN0eWxlU2hlZXRzKGRpZEdldEFsbFN0eWxlU2hlZXRzLmJpbmQodGhpcykpOworICAg
ICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2UuaXNFZGl0YWJsZSgpOwogICAgIH0sCiAKICAgICBl
ZGl0Q29udGVudDogZnVuY3Rpb24obmV3VGV4dCwgY2FsbGJhY2spCiAgICAgewotICAgICAgICBp
ZiAoIXRoaXMuX3N0eWxlU2hlZXQpIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKCJTdHlsZXNoZWV0
IG5vdCBmb3VuZC4iKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAg
IHRoaXMuX3Jlc2V0SW5jcmVtZW50YWxVcGRhdGVUaW1lcigpOwotCi0gICAgICAgIGZ1bmN0aW9u
IGRpZFNldFRleHQoc3VjY2VzcykKLSAgICAgICAgewotICAgICAgICAgICAgdmFyIGVycm9yOwot
ICAgICAgICAgICAgaWYgKCFzdWNjZXNzKQotICAgICAgICAgICAgICAgIGVycm9yID0gIkZhaWxl
ZCB0byBzYXZlIG1vZGlmaWVkIHN0eWxlc2hlZXQgIiArIHRoaXMuX3Jlc291cmNlLnVybDsKLSAg
ICAgICAgICAgIGNhbGxiYWNrKGVycm9yKTsKLSAgICAgICAgfQotICAgICAgICB0aGlzLl9zdHls
ZVNoZWV0LnNldFRleHQobmV3VGV4dCwgdHJ1ZSwgZGlkU2V0VGV4dC5iaW5kKHRoaXMpKTsKKyAg
ICAgICAgdGhpcy5fY2xlYXJJbmNyZW1lbnRhbFVwZGF0ZVRpbWVyKCk7CisgICAgICAgIHZhciBt
YWpvckNoYW5nZSA9IHRydWU7CisgICAgICAgIHRoaXMuX3Jlc291cmNlLnNldENvbnRlbnQobmV3
VGV4dCwgbWFqb3JDaGFuZ2UsIGNhbGxiYWNrKTsKICAgICB9LAogCiAgICAgZW5kRWRpdGluZzog
ZnVuY3Rpb24ob2xkUmFuZ2UsIG5ld1JhbmdlKQpAQCAtMjIwLDE4ICsxNTMsMjggQEAgV2ViSW5z
cGVjdG9yLkNTU1NvdXJjZUZyYW1lLnByb3RvdHlwZSA9IHsKICAgICAgICAgZnVuY3Rpb24gY29t
bWl0SW5jcmVtZW50YWxFZGl0KCkKICAgICAgICAgewogICAgICAgICAgICAgdmFyIG1ham9yQ2hh
bmdlID0gZmFsc2U7Ci0gICAgICAgICAgICB0aGlzLl9zdHlsZVNoZWV0LnNldFRleHQodGhpcy5f
dGV4dE1vZGVsLnRleHQsIG1ham9yQ2hhbmdlKTsKKyAgICAgICAgICAgIHRoaXMuX3Jlc291cmNl
LnNldENvbnRlbnQodGhpcy5fdGV4dE1vZGVsLnRleHQsIG1ham9yQ2hhbmdlLCBmdW5jdGlvbigp
IHt9KTsKICAgICAgICAgfQogICAgICAgICBjb25zdCB1cGRhdGVUaW1lb3V0ID0gMjAwOwogICAg
ICAgICB0aGlzLl9pbmNyZW1lbnRhbFVwZGF0ZVRpbWVyID0gc2V0VGltZW91dChjb21taXRJbmNy
ZW1lbnRhbEVkaXQuYmluZCh0aGlzKSwgdXBkYXRlVGltZW91dCk7CiAgICAgfSwKIAotICAgIF9y
ZXNldEluY3JlbWVudGFsVXBkYXRlVGltZXI6IGZ1bmN0aW9uKCkKKyAgICBfY2xlYXJJbmNyZW1l
bnRhbFVwZGF0ZVRpbWVyOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICBpZiAodGhpcy5faW5j
cmVtZW50YWxVcGRhdGVUaW1lcikKICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLl9pbmNy
ZW1lbnRhbFVwZGF0ZVRpbWVyKTsKICAgICAgICAgZGVsZXRlIHRoaXMuX2luY3JlbWVudGFsVXBk
YXRlVGltZXI7CisgICAgfSwKKworICAgIF9yZXF1ZXN0Q29udGVudDogZnVuY3Rpb24oY2FsbGJh
Y2spCisgICAgeworICAgICAgICBmdW5jdGlvbiBjb250ZW50TG9hZGVkKHRleHQpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhciBtaW1lVHlwZSA9IFdlYkluc3BlY3Rvci5SZXNvdXJjZVNvdXJj
ZUZyYW1lLkRlZmF1bHRNSU1FVHlwZUZvclJlc291cmNlVHlwZVt0aGlzLl9yZXNvdXJjZS50eXBl
XSB8fCB0aGlzLl9yZXNvdXJjZS5taW1lVHlwZTsKKyAgICAgICAgICAgIGNhbGxiYWNrKG1pbWVU
eXBlLCB0ZXh0KTsKKyAgICAgICAgfQorICAgICAgICB0aGlzLl9yZXNvdXJjZS5yZXF1ZXN0Q29u
dGVudChjb250ZW50TG9hZGVkLmJpbmQodGhpcykpOwogICAgIH0KIH0KIAotV2ViSW5zcGVjdG9y
LkNTU1NvdXJjZUZyYW1lLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2VTb3VyY2VGcmFtZS5wcm90b3R5cGU7CitXZWJJbnNwZWN0b3IuUmVzb3VyY2VTb3VyY2VGcmFt
ZS5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lLnByb3RvdHlw
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3Vy
Y2VzUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNl
c1BhbmVsLmpzCmluZGV4IDY3YTE5YTdlOTdjYjgzYjcwZDljNWZkYzNlMTM3ZDU2ZDhlZTYzYWUu
LmFlYThiZTkzZGQ0OTI4MWJkMjIzODQ2NWQ3NzU1MmFmOWZjZjdiMDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcwpAQCAt
MjYwLDE4ICsyNjAsMTcgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVsLnByb3RvdHlwZSA9
IHsKIAogICAgICAgICAvLyBJbnNlcnQgaW4gdGhlIGFscGhhYmV0aWNhbCBvcmRlciwgZmlyc3Qg
ZnJhbWVzLCB0aGVuIHJlc291cmNlcy4gRG9jdW1lbnQgcmVzb3VyY2UgZ29lcyBmaXJzdC4KICAg
ICAgICAgdmFyIGNoaWxkcmVuID0gZnJhbWVUcmVlRWxlbWVudC5jaGlsZHJlbjsKLSAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7ICsraSkgeworICAgICAgICB2YXIg
aTsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgKytpKSB7CiAgICAg
ICAgICAgICB2YXIgY2hpbGQgPSBjaGlsZHJlbltpXTsKICAgICAgICAgICAgIGlmICghKGNoaWxk
IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkZyYW1lUmVzb3VyY2VUcmVlRWxlbWVudCkpCiAgICAg
ICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIGlmIChyZXNvdXJjZS50eXBlID09
PSBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5Eb2N1bWVudCB8fAotICAgICAgICAgICAgICAg
ICAgICAoY2hpbGQuX3Jlc291cmNlLnR5cGUgIT09IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBl
LkRvY3VtZW50ICYmIGNoaWxkLl9yZXNvdXJjZS5kaXNwbGF5TmFtZS5sb2NhbGVDb21wYXJlKHJl
c291cmNlLmRpc3BsYXlOYW1lKSA+IDApKSB7Ci0gICAgICAgICAgICAgICAgZnJhbWVUcmVlRWxl
bWVudC5pbnNlcnRDaGlsZChyZXNvdXJjZVRyZWVFbGVtZW50LCBpKTsKLSAgICAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAocmVzb3VyY2UudHlwZSA9
PT0gV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuRG9jdW1lbnQgfHwgKGNoaWxkLl9yZXNvdXJj
ZS50eXBlICE9PSBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5Eb2N1bWVudCAmJiBjaGlsZC5f
cmVzb3VyY2UuZGlzcGxheU5hbWUubG9jYWxlQ29tcGFyZShyZXNvdXJjZS5kaXNwbGF5TmFtZSkg
PiAwKSkKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBmcmFtZVRy
ZWVFbGVtZW50LmFwcGVuZENoaWxkKHJlc291cmNlVHJlZUVsZW1lbnQpOworICAgICAgICBmcmFt
ZVRyZWVFbGVtZW50Lmluc2VydENoaWxkKHJlc291cmNlVHJlZUVsZW1lbnQsIGkpOworICAgICAg
ICByZXNvdXJjZVRyZWVFbGVtZW50Ll9wb3B1bGF0ZVJldmlzaW9ucygpOwogICAgIH0sCiAKICAg
ICBfZnJhbWVOYXZpZ2F0ZWQ6IGZ1bmN0aW9uKGV2ZW50KQpAQCAtOTkxLDcgKzk5MCw3IEBAIFdl
Ykluc3BlY3Rvci5GcmFtZVJlc291cmNlVHJlZUVsZW1lbnQgPSBmdW5jdGlvbihzdG9yYWdlUGFu
ZWwsIHJlc291cmNlKQogICAgIFdlYkluc3BlY3Rvci5CYXNlU3RvcmFnZVRyZWVFbGVtZW50LmNh
bGwodGhpcywgc3RvcmFnZVBhbmVsLCByZXNvdXJjZSwgcmVzb3VyY2UuZGlzcGxheU5hbWUsIFsi
cmVzb3VyY2Utc2lkZWJhci10cmVlLWl0ZW0iLCAicmVzb3VyY2VzLWNhdGVnb3J5LSIgKyByZXNv
dXJjZS5jYXRlZ29yeS5uYW1lXSk7CiAgICAgdGhpcy5fcmVzb3VyY2UgPSByZXNvdXJjZTsKICAg
ICB0aGlzLl9yZXNvdXJjZS5hZGRFdmVudExpc3RlbmVyKCJlcnJvcnMtd2FybmluZ3MtdXBkYXRl
ZCIsIHRoaXMuX2Vycm9yc1dhcm5pbmdzVXBkYXRlZCwgdGhpcyk7Ci0gICAgdGhpcy5fcmVzb3Vy
Y2UuYWRkRXZlbnRMaXN0ZW5lcigiY29udGVudC1jaGFuZ2VkIiwgdGhpcy5fY29udGVudENoYW5n
ZWQsIHRoaXMpOworICAgIHRoaXMuX3Jlc291cmNlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVj
dG9yLlJlc291cmNlLkV2ZW50cy5SZXZpc2lvbkFkZGVkLCB0aGlzLl9yZXZpc2lvbkFkZGVkLCB0
aGlzKTsKICAgICB0aGlzLnRvb2x0aXAgPSByZXNvdXJjZS51cmw7CiB9CiAKQEAgLTExMDMsOSAr
MTEwMiwyMCBAQCBXZWJJbnNwZWN0b3IuRnJhbWVSZXNvdXJjZVRyZWVFbGVtZW50LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgICAgIHRoaXMuX2J1YmJsZUVsZW1lbnQuYWRkU3R5bGVDbGFzcygiZXJy
b3IiKTsKICAgICB9LAogCi0gICAgX2NvbnRlbnRDaGFuZ2VkOiBmdW5jdGlvbihldmVudCkKKyAg
ICBfcG9wdWxhdGVSZXZpc2lvbnM6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgdGhpcy5fcmVzb3VyY2UuaGlzdG9yeS5sZW5ndGg7ICsraSkKKyAgICAgICAg
ICAgIHRoaXMuX2FwcGVuZFJldmlzaW9uKHRoaXMuX3Jlc291cmNlLmhpc3RvcnlbaV0pOworICAg
IH0sCisKKyAgICBfcmV2aXNpb25BZGRlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAg
ICB0aGlzLl9hcHBlbmRSZXZpc2lvbihldmVudC5kYXRhKTsKKyAgICB9LAorCisgICAgX2FwcGVu
ZFJldmlzaW9uOiBmdW5jdGlvbihyZXZpc2lvbikKICAgICB7Ci0gICAgICAgIHRoaXMuaW5zZXJ0
Q2hpbGQobmV3IFdlYkluc3BlY3Rvci5SZXNvdXJjZVJldmlzaW9uVHJlZUVsZW1lbnQodGhpcy5f
c3RvcmFnZVBhbmVsLCBldmVudC5kYXRhLnJldmlzaW9uKSwgMCk7CisgICAgICAgIHRoaXMuaW5z
ZXJ0Q2hpbGQobmV3IFdlYkluc3BlY3Rvci5SZXNvdXJjZVJldmlzaW9uVHJlZUVsZW1lbnQodGhp
cy5fc3RvcmFnZVBhbmVsLCByZXZpc2lvbiksIDApOwogICAgICAgICB2YXIgb2xkVmlldyA9IFdl
Ykluc3BlY3Rvci5SZXNvdXJjZVZpZXcuZXhpc3RpbmdSZXNvdXJjZVZpZXdGb3JSZXNvdXJjZSh0
aGlzLl9yZXNvdXJjZSk7CiAgICAgICAgIGlmIChvbGRWaWV3KSB7CiAgICAgICAgICAgICB2YXIg
bmV3VmlldyA9IFdlYkluc3BlY3Rvci5SZXNvdXJjZVZpZXcucmVjcmVhdGVSZXNvdXJjZVZpZXco
dGhpcy5fcmVzb3VyY2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9pbnNwZWN0b3IuaHRtbCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvaW5zcGVjdG9yLmh0bWwKaW5kZXggZThjYjEwZmQyODFhZjcxNGJiZGZmMGE2YTg5MjA3NWY1
ODZhY2M3ZC4uZDEwMjAxNmVmZWU0OTE1OTNkZDM4YWEyNGRjYjkxMTkwODEwMDdkZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCkBA
IC00Niw3ICs0Niw2IEBAIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiIHNyYz0iRXh0ZW5zaW9uUmVnaXN0cnlTdHViLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0
IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJPYmplY3QuanMiPjwvc2NyaXB0PgogICAgIDxz
Y3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlNldHRpbmdzLmpzIj48L3NjcmlwdD4K
LSAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJDU1NTdHlsZU1vZGVsLmpz
Ij48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJDaGVj
a2JveC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNy
Yz0iQ29udGV4dE1lbnUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZh
c2NyaXB0IiBzcmM9IktleWJvYXJkU2hvcnRjdXQuanMiPjwvc2NyaXB0PgpAQCAtNjEsNiArNjAs
NyBAQCBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlBh
bmVsLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3Jj
PSJUaW1lbGluZUdyaWQuanMiPjwvc2NyaXB0PiAgICAKICAgICA8c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCIgc3JjPSJSZXNvdXJjZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCB0eXBl
PSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iQ1NTU3R5bGVNb2RlbC5qcyI+PC9zY3JpcHQ+CiAgICAg
PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iTmV0d29ya01hbmFnZXIuanMiPjwv
c2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlJlc291cmNl
VHJlZU1vZGVsLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlw
dCIgc3JjPSJSZXNvdXJjZUNhdGVnb3J5LmpzIj48L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89770</attachid>
            <date>2011-04-15 05:04:23 -0700</date>
            <delta_ts>2011-04-15 05:31:51 -0700</delta_ts>
            <desc>[PATCH] Review comments addressed.</desc>
            <filename>bug-58649-20110415160417.patch</filename>
            <type>text/plain</type>
            <size>42253</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODM4NDUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9zdHlsZXMvZ2V0LXNldC1zdHlsZXNoZWV0LXRleHQuaHRtbCBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9zdHlsZXMvZ2V0LXNldC1zdHlsZXNoZWV0LXRleHQuaHRtbAppbmRleCBhMGIxMDVl
ZmYyOGIyNTNlNWUxYmZjZmQzZTQ0MWQyNjNmM2U4MGUyLi5iOGI1ZGVhNDc5NTZlZmIyNDExYjg3
MWIzYzU2M2U0M2U0OGRiNDIxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5
bGVzL2dldC1zZXQtc3R5bGVzaGVldC10ZXh0Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3N0eWxlcy9nZXQtc2V0LXN0eWxlc2hlZXQtdGV4dC5odG1sCkBAIC0zOSwxMCArMzksMTAg
QEAgZnVuY3Rpb24gdGVzdCgpCiAKICAgICBmdW5jdGlvbiB0ZXN0U2V0VGV4dChuZXh0KQogICAg
IHsKLSAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2soc3VjY2VzcykKKyAgICAgICAgZnVuY3Rpb24g
Y2FsbGJhY2soZXJyb3IpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmICghc3VjY2Vzcykgewot
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkRXJyb3IoIkZhaWxlZCB0byBzZXQgc3R5
bGVzaGVldCB0ZXh0Iik7CisgICAgICAgICAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiRmFpbGVkIHRvIHNldCBzdHlsZXNoZWV0IHRleHQi
KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCBhODI4ZmQ0NjkyYmJmNTM3ZjlhN2I2ZTJjZmZiMTNhZGU2MWVmYjNhLi5lMDVhMGRjMzQ1YTNj
ZmZjMWYyMzhjMzcxMmQ2Y2Q2MjY2MTAyMTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODEgQEAK
KzIwMTEtMDQtMTUgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBnb29nbGUuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6
IHJlZmFjdG9yIHJlc291cmNlIHNldENvbnRlbnQgLyByZXZpc2lvbnMgaW5mcmFzdHJ1Y3R1cmUg
dG8gZ2V0CisgICAgICAgIHJpZCBvZiBvblJldmVydCBjYWxsYmFjay4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4NjQ5CisKKyAgICAgICAgSW5zdGVh
ZCwgd2Ugd2lsbCBoYXZlIERvbWFpbk1vZGVsL1Jlc291cmNlIGJpbmRpbmcgcmVzcG9uc2libGUg
Zm9yIGNoYW5naW5nCisgICAgICAgIHVuZGVybHlpbmcgbW9kZWwgdXBvbiByZXNvdXJjZSBjaGFu
Z2VzIGFuZCB2aWNlIHZlcnNhLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvci5qc29u
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0U3R5bGVTaGVldCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0U3R5bGVTaGVldFRleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFN0eWxlU2hlZXRUZXh0KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpzZXRQcm9wZXJ0eVRleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OnRvZ2dsZVByb3BlcnR5KToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNTU0FnZW50OjpzZXRSdWxlU2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmFzc2VydFN0eWxlU2hlZXRGb3JJZCk6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250
LWVuZC9DU1NTdHlsZU1vZGVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9k
ZWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwucHJvdG90eXBlLnNldFJ1
bGVTZWxlY3Rvcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5wcm90b3R5
cGUuYWRkUnVsZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5wcm90b3R5
cGUuX2ZpcmVTdHlsZVNoZWV0Q2hhbmdlZC5jYWxsYmFjayk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuQ1NTU3R5bGVNb2RlbC5wcm90b3R5cGUuX2ZpcmVTdHlsZVNoZWV0Q2hhbmdlZCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5wcm90b3R5cGUuc2V0U3R5bGVTaGVldFRl
eHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb24ucHJvdG90eXBl
Lmluc2VydFByb3BlcnR5QXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1Byb3BlcnR5LnBy
b3RvdHlwZS5zZXRUZXh0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NQcm9wZXJ0eS5wcm90
b3R5cGUuc2V0VGV4dC5jYWxsYmFjayk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTUHJvcGVy
dHkucHJvdG90eXBlLnNldERpc2FibGVkLmNhbGxiYWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5DU1NQcm9wZXJ0eS5wcm90b3R5cGUuc2V0RGlzYWJsZWQpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkNTU1N0eWxlU2hlZXQucHJvdG90eXBlLnNldFRleHQpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkNTU1N0eWxlTW9kZWxSZXNvdXJjZUJpbmRpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkNTU1N0eWxlTW9kZWxSZXNvdXJjZUJpbmRpbmcucHJvdG90eXBlLnNldENvbnRlbnQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWxSZXNvdXJjZUJpbmRpbmcucHJvdG90eXBl
Ll9mcmFtZU5hdmlnYXRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbFJl
c291cmNlQmluZGluZy5wcm90b3R5cGUuX2lubmVyU2V0Q29udGVudCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuQ1NTU3R5bGVNb2RlbFJlc291cmNlQmluZGluZy5wcm90b3R5cGUuX2xvYWRTdHls
ZVNoZWV0SGVhZGVycyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbFJlc291
cmNlQmluZGluZy5wcm90b3R5cGUuX3N0eWxlU2hlZXRDaGFuZ2VkLnNldENvbnRlbnQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWxSZXNvdXJjZUJpbmRpbmcucHJvdG90eXBl
Ll9zdHlsZVNoZWV0Q2hhbmdlZCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1
Z2dlclByZXNlbnRhdGlvbk1vZGVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2Vy
UHJlc2VudGF0aW9uTW9kZWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2Vu
dGF0aW9uTW9kZWwucHJvdG90eXBlLmVkaXRTY3JpcHRTb3VyY2UuZGlkRWRpdFNjcmlwdFNvdXJj
ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90
b3R5cGUuZWRpdFNjcmlwdFNvdXJjZS5kaWRSZWNlaXZlU291cmNlKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZS5lZGl0U2NyaXB0U291
cmNlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsUmVz
b3VyY2VCaW5kaW5nKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlv
bk1vZGVsUmVzb3VyY2VCaW5kaW5nLnByb3RvdHlwZS5jYW5TZXRDb250ZW50KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsUmVzb3VyY2VCaW5kaW5nLnBy
b3RvdHlwZS5zZXRDb250ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL09iamVj
dC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlLmhhc0V2ZW50TGlz
dGVuZXJzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlLmpzOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNv
dXJjZS5yZWdpc3RlckRvbWFpbk1vZGVsQmluZGluZyk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
UmVzb3VyY2UucHJvdG90eXBlLmlzRWRpdGFibGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJl
c291cmNlLnByb3RvdHlwZS5zZXRDb250ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNv
dXJjZS5wcm90b3R5cGUuYWRkUmV2aXNpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291
cmNlLnByb3RvdHlwZS5yZXZlcnRUb1RoaXMuY2FsbGJhY2spOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlJlc291cmNlLnByb3RvdHlwZS5yZXZlcnRUb1RoaXMpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlJlc291cmNlRG9tYWluTW9kZWxCaW5kaW5nKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5S
ZXNvdXJjZURvbWFpbk1vZGVsQmluZGluZy5wcm90b3R5cGUuY2FuU2V0Q29udGVudCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VEb21haW5Nb2RlbEJpbmRpbmcucHJvdG90eXBlLnNl
dENvbnRlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VWaWV3Lmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlVmlldy5jcmVhdGVSZXNvdXJjZVZpZXcp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlVmlldy5yZXNvdXJjZVZpZXdUeXBlTWF0
Y2hlc1Jlc291cmNlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVNvdXJjZUZyYW1l
LnByb3RvdHlwZS5pc0NvbnRlbnRFZGl0YWJsZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVz
b3VyY2VTb3VyY2VGcmFtZS5wcm90b3R5cGUuZWRpdENvbnRlbnQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlJlc291cmNlU291cmNlRnJhbWUucHJvdG90eXBlLmVuZEVkaXRpbmcpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlJlc291cmNlU291cmNlRnJhbWUucHJvdG90eXBlLl9jbGVhckluY3Jl
bWVudGFsVXBkYXRlVGltZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlU291cmNl
RnJhbWUucHJvdG90eXBlLl9yZXF1ZXN0Q29udGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9SZXNvdXJjZXNQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJj
ZXNQYW5lbC5wcm90b3R5cGUuX3Jlc291cmNlQWRkZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkZyYW1lUmVzb3VyY2VUcmVlRWxlbWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRnJhbWVS
ZXNvdXJjZVRyZWVFbGVtZW50LnByb3RvdHlwZS5fcG9wdWxhdGVSZXZpc2lvbnMpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkZyYW1lUmVzb3VyY2VUcmVlRWxlbWVudC5wcm90b3R5cGUuX3Jldmlz
aW9uQWRkZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZyYW1lUmVzb3VyY2VUcmVlRWxlbWVu
dC5wcm90b3R5cGUuX2FwcGVuZFJldmlzaW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQt
ZW5kL2luc3BlY3Rvci5odG1sOgorCiAyMDExLTA0LTE0ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRt
YW5AZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBZdXJ5IFNlbWlraGF0c2t5Lgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCmluZGV4IDQzYTAzOTNjMDdjZmU0
ZmM0MzMyY2QzNWNkZTYxNDFmYTkzYTA0MDkuLjBhOTViMzhiMzFiODc3NjkzMzYwZGQ2M2E5ZTVl
NzgxYjllMGQ2ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3IuanNvbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KQEAg
LTExNjMsNyArMTE2Myw2IEBACiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic3R5bGVT
aGVldElkIiwgInR5cGUiOiAic3RyaW5nIiB9CiAgICAgICAgICAgICAgICAgXSwKICAgICAgICAg
ICAgICAgICAicmV0dXJucyI6IFsKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ1cmwi
LCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiVGhlIHN0eWxlc2hlZXQgcmVzb3Vy
Y2UgVVJMLiIgfSwKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ0ZXh0IiwgInR5cGUi
OiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIlRoZSBzdHlsZXNoZWV0IHRleHQuIiB9CiAgICAg
ICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0
aGUgY3VycmVudCB0ZXh0dWFsIGNvbnRlbnQgYW5kIHRoZSBVUkwgZm9yIGEgc3R5bGVzaGVldC4i
CkBAIC0xMTc0LDkgKzExNzMsNiBAQAogICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInN0
eWxlU2hlZXRJZCIsICJ0eXBlIjogInN0cmluZyIgfSwKICAgICAgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJ0ZXh0IiwgInR5cGUiOiAic3RyaW5nIiB9CiAgICAgICAgICAgICAgICAgXSwKLSAg
ICAgICAgICAgICAgICAicmV0dXJucyI6IFsKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJzdWNjZXNzIiwgInR5cGUiOiAiYm9vbGVhbiIsICJkZXNjcmlwdGlvbiI6ICJXaGV0aGVyIHRo
ZSBtb2RpZmljYXRpb24gd2FzIHN1Y2Nlc3NmdWwuIiB9Ci0gICAgICAgICAgICAgICAgXSwKICAg
ICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiU2V0cyB0aGUgbmV3IHN0eWxlc2hlZXQgdGV4
dCwgdGhlcmVieSBpbnZhbGlkYXRpbmcgYWxsIGV4aXN0aW5nIDxjb2RlPkNTU1N0eWxlSWQ8L2Nv
ZGU+J3MgYW5kIDxjb2RlPkNTU1J1bGVJZDwvY29kZT4ncyBjb250YWluZWQgYnkgdGhpcyBzdHls
ZXNoZWV0LiIKICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRleCA4MGIyZTIwMzQzN2UxNTQw
MWI0NTVkNWNkMjk2YzgwMGJmYTcxMjdjLi40ZDI4ODc4ZDZjODI0ZDA0OThlN2MyZTM0NjhhNzdj
NjAyOGJmYWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q1NTQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NB
Z2VudC5jcHAKQEAgLTI3NywzMyArMjc3LDMyIEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6Omdl
dEFsbFN0eWxlU2hlZXRzKEVycm9yU3RyaW5nKiwgUmVmUHRyPEluc3BlY3RvckFycmF5PioKIAog
dm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0U3R5bGVTaGVldChFcnJvclN0cmluZyogZXJyb3JT
dHJpbmcsIGNvbnN0IFN0cmluZyYgc3R5bGVTaGVldElkLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
Piogc3R5bGVTaGVldE9iamVjdCkKIHsKLSAgICBJbnNwZWN0b3JTdHlsZVNoZWV0KiBpbnNwZWN0
b3JTdHlsZVNoZWV0ID0gc3R5bGVTaGVldEZvcklkKGVycm9yU3RyaW5nLCBzdHlsZVNoZWV0SWQp
OworICAgIEluc3BlY3RvclN0eWxlU2hlZXQqIGluc3BlY3RvclN0eWxlU2hlZXQgPSBhc3NlcnRT
dHlsZVNoZWV0Rm9ySWQoZXJyb3JTdHJpbmcsIHN0eWxlU2hlZXRJZCk7CiAgICAgaWYgKCFpbnNw
ZWN0b3JTdHlsZVNoZWV0KQogICAgICAgICByZXR1cm47CiAKICAgICAqc3R5bGVTaGVldE9iamVj
dCA9IGluc3BlY3RvclN0eWxlU2hlZXQtPmJ1aWxkT2JqZWN0Rm9yU3R5bGVTaGVldCgpOwogfQog
Ci12b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRTdHlsZVNoZWV0VGV4dChFcnJvclN0cmluZyog
ZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgc3R5bGVTaGVldElkLCBTdHJpbmcqIHVybCwgU3Ry
aW5nKiByZXN1bHQpCit2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRTdHlsZVNoZWV0VGV4dChF
cnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgc3R5bGVTaGVldElkLCBTdHJp
bmcqIHJlc3VsdCkKIHsKLSAgICBJbnNwZWN0b3JTdHlsZVNoZWV0KiBpbnNwZWN0b3JTdHlsZVNo
ZWV0ID0gc3R5bGVTaGVldEZvcklkKGVycm9yU3RyaW5nLCBzdHlsZVNoZWV0SWQpOworICAgIElu
c3BlY3RvclN0eWxlU2hlZXQqIGluc3BlY3RvclN0eWxlU2hlZXQgPSBhc3NlcnRTdHlsZVNoZWV0
Rm9ySWQoZXJyb3JTdHJpbmcsIHN0eWxlU2hlZXRJZCk7CiAgICAgaWYgKCFpbnNwZWN0b3JTdHls
ZVNoZWV0KQogICAgICAgICByZXR1cm47Ci0gICAgKnVybCA9IGluc3BlY3RvclN0eWxlU2hlZXQt
PmZpbmFsVVJMKCk7CisKICAgICBpbnNwZWN0b3JTdHlsZVNoZWV0LT50ZXh0KHJlc3VsdCk7CiB9
CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFN0eWxlU2hlZXRUZXh0KEVycm9yU3RyaW5n
KiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBzdHlsZVNoZWV0SWQsIGNvbnN0IFN0cmluZyYg
dGV4dCwgYm9vbCogc3VjY2VzcykKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFN0eWxlU2hl
ZXRUZXh0KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBzdHlsZVNoZWV0
SWQsIGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKLSAgICBJbnNwZWN0b3JTdHlsZVNoZWV0KiBpbnNw
ZWN0b3JTdHlsZVNoZWV0ID0gc3R5bGVTaGVldEZvcklkKGVycm9yU3RyaW5nLCBzdHlsZVNoZWV0
SWQpOwotICAgIGlmICghaW5zcGVjdG9yU3R5bGVTaGVldCkgewotICAgICAgICAqc3VjY2VzcyA9
IGZhbHNlOworICAgIEluc3BlY3RvclN0eWxlU2hlZXQqIGluc3BlY3RvclN0eWxlU2hlZXQgPSBh
c3NlcnRTdHlsZVNoZWV0Rm9ySWQoZXJyb3JTdHJpbmcsIHN0eWxlU2hlZXRJZCk7CisgICAgaWYg
KCFpbnNwZWN0b3JTdHlsZVNoZWV0KQogICAgICAgICByZXR1cm47Ci0gICAgfQogCi0gICAgKnN1
Y2Nlc3MgPSBpbnNwZWN0b3JTdHlsZVNoZWV0LT5zZXRUZXh0KHRleHQpOwotICAgIGlmICgqc3Vj
Y2VzcykKKyAgICBpZiAoaW5zcGVjdG9yU3R5bGVTaGVldC0+c2V0VGV4dCh0ZXh0KSkKICAgICAg
ICAgaW5zcGVjdG9yU3R5bGVTaGVldC0+cmVwYXJzZVN0eWxlU2hlZXQodGV4dCk7CisgICAgZWxz
ZQorICAgICAgICAqZXJyb3JTdHJpbmcgPSAiSW50ZXJuYWwgZXJyb3Igc2V0dGluZyBzdHlsZSBz
aGVldCB0ZXh0LiI7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFByb3BlcnR5VGV4
dChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
JiBmdWxsU3R5bGVJZCwgaW50IHByb3BlcnR5SW5kZXgsIGNvbnN0IFN0cmluZyYgdGV4dCwgYm9v
bCBvdmVyd3JpdGUsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiByZXN1bHQpCkBAIC0zMTEsNyAr
MzEwLDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6c2V0UHJvcGVydHlUZXh0KEVycm9yU3Ry
aW5nKiBlcnJvclN0cmluZywgY29uc3QgUmVmUHRyPEkKICAgICBJbnNwZWN0b3JDU1NJZCBjb21w
b3VuZElkKGZ1bGxTdHlsZUlkKTsKICAgICBBU1NFUlQoIWNvbXBvdW5kSWQuaXNFbXB0eSgpKTsK
IAotICAgIEluc3BlY3RvclN0eWxlU2hlZXQqIGluc3BlY3RvclN0eWxlU2hlZXQgPSBzdHlsZVNo
ZWV0Rm9ySWQoZXJyb3JTdHJpbmcsIGNvbXBvdW5kSWQuc3R5bGVTaGVldElkKCkpOworICAgIElu
c3BlY3RvclN0eWxlU2hlZXQqIGluc3BlY3RvclN0eWxlU2hlZXQgPSBhc3NlcnRTdHlsZVNoZWV0
Rm9ySWQoZXJyb3JTdHJpbmcsIGNvbXBvdW5kSWQuc3R5bGVTaGVldElkKCkpOwogICAgIGlmICgh
aW5zcGVjdG9yU3R5bGVTaGVldCkKICAgICAgICAgcmV0dXJuOwogCkBAIC0zMjUsNyArMzI0LDcg
QEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6dG9nZ2xlUHJvcGVydHkoRXJyb3JTdHJpbmcqIGVy
cm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8SW4KICAgICBJbnNwZWN0b3JDU1NJZCBjb21wb3VuZElk
KGZ1bGxTdHlsZUlkKTsKICAgICBBU1NFUlQoIWNvbXBvdW5kSWQuaXNFbXB0eSgpKTsKIAotICAg
IEluc3BlY3RvclN0eWxlU2hlZXQqIGluc3BlY3RvclN0eWxlU2hlZXQgPSBzdHlsZVNoZWV0Rm9y
SWQoZXJyb3JTdHJpbmcsIGNvbXBvdW5kSWQuc3R5bGVTaGVldElkKCkpOworICAgIEluc3BlY3Rv
clN0eWxlU2hlZXQqIGluc3BlY3RvclN0eWxlU2hlZXQgPSBhc3NlcnRTdHlsZVNoZWV0Rm9ySWQo
ZXJyb3JTdHJpbmcsIGNvbXBvdW5kSWQuc3R5bGVTaGVldElkKCkpOwogICAgIGlmICghaW5zcGVj
dG9yU3R5bGVTaGVldCkKICAgICAgICAgcmV0dXJuOwogCkBAIC0zMzksNyArMzM4LDcgQEAgdm9p
ZCBJbnNwZWN0b3JDU1NBZ2VudDo6c2V0UnVsZVNlbGVjdG9yKEVycm9yU3RyaW5nKiBlcnJvclN0
cmluZywgY29uc3QgUmVmUHRyPEkKICAgICBJbnNwZWN0b3JDU1NJZCBjb21wb3VuZElkKGZ1bGxS
dWxlSWQpOwogICAgIEFTU0VSVCghY29tcG91bmRJZC5pc0VtcHR5KCkpOwogCi0gICAgSW5zcGVj
dG9yU3R5bGVTaGVldCogaW5zcGVjdG9yU3R5bGVTaGVldCA9IHN0eWxlU2hlZXRGb3JJZChlcnJv
clN0cmluZywgY29tcG91bmRJZC5zdHlsZVNoZWV0SWQoKSk7CisgICAgSW5zcGVjdG9yU3R5bGVT
aGVldCogaW5zcGVjdG9yU3R5bGVTaGVldCA9IGFzc2VydFN0eWxlU2hlZXRGb3JJZChlcnJvclN0
cmluZywgY29tcG91bmRJZC5zdHlsZVNoZWV0SWQoKSk7CiAgICAgaWYgKCFpbnNwZWN0b3JTdHls
ZVNoZWV0KQogICAgICAgICByZXR1cm47CiAKQEAgLTQ3MSw3ICs0NzAsNyBAQCBJbnNwZWN0b3JT
dHlsZVNoZWV0KiBJbnNwZWN0b3JDU1NBZ2VudDo6dmlhSW5zcGVjdG9yU3R5bGVTaGVldChEb2N1
bWVudCogZG9jdW1lbgogICAgIHJldHVybiBpbnNwZWN0b3JTdHlsZVNoZWV0LmdldCgpOwogfQog
Ci1JbnNwZWN0b3JTdHlsZVNoZWV0KiBJbnNwZWN0b3JDU1NBZ2VudDo6c3R5bGVTaGVldEZvcklk
KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBzdHlsZVNoZWV0SWQpCitJ
bnNwZWN0b3JTdHlsZVNoZWV0KiBJbnNwZWN0b3JDU1NBZ2VudDo6YXNzZXJ0U3R5bGVTaGVldEZv
cklkKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBzdHlsZVNoZWV0SWQp
CiB7CiAgICAgSWRUb0luc3BlY3RvclN0eWxlU2hlZXQ6Oml0ZXJhdG9yIGl0ID0gbV9pZFRvSW5z
cGVjdG9yU3R5bGVTaGVldC5maW5kKHN0eWxlU2hlZXRJZCk7CiAgICAgaWYgKGl0ID09IG1faWRU
b0luc3BlY3RvclN0eWxlU2hlZXQuZW5kKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNTU0FnZW50LmgKaW5kZXggNDBiYzJhYmIzODdiNjc1MGU1OGQ3NDdlYjgwZTI5
MDU0YjlhNGU1NC4uYzUzMzdkNmY2Nzg4ZWFlNDYwMmQ0YjI0ZGU5MDNmMmE0ZTM3ZWZlMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgKQEAgLTY2LDgg
KzY2LDggQEAgcHVibGljOgogICAgIHZvaWQgZ2V0Q29tcHV0ZWRTdHlsZUZvck5vZGUoRXJyb3JT
dHJpbmcqLCBpbnQgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piogc3R5bGUpOwogICAg
IHZvaWQgZ2V0QWxsU3R5bGVTaGVldHMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yQXJy
YXk+KiBzdHlsZVNoZWV0SW5mb3MpOwogICAgIHZvaWQgZ2V0U3R5bGVTaGVldChFcnJvclN0cmlu
ZyosIGNvbnN0IFN0cmluZyYgc3R5bGVTaGVldElkLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piog
cmVzdWx0KTsKLSAgICB2b2lkIGdldFN0eWxlU2hlZXRUZXh0KEVycm9yU3RyaW5nKiwgY29uc3Qg
U3RyaW5nJiBzdHlsZVNoZWV0SWQsIFN0cmluZyogdXJsLCBTdHJpbmcqIHJlc3VsdCk7Ci0gICAg
dm9pZCBzZXRTdHlsZVNoZWV0VGV4dChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc3R5bGVT
aGVldElkLCBjb25zdCBTdHJpbmcmIHRleHQsIGJvb2wqIHN1Y2Nlc3MpOworICAgIHZvaWQgZ2V0
U3R5bGVTaGVldFRleHQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHN0eWxlU2hlZXRJZCwg
U3RyaW5nKiByZXN1bHQpOworICAgIHZvaWQgc2V0U3R5bGVTaGVldFRleHQoRXJyb3JTdHJpbmcq
LCBjb25zdCBTdHJpbmcmIHN0eWxlU2hlZXRJZCwgY29uc3QgU3RyaW5nJiB0ZXh0KTsKICAgICB2
b2lkIHNldFByb3BlcnR5VGV4dChFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+JiBzdHlsZUlkLCBpbnQgcHJvcGVydHlJbmRleCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBi
b29sIG92ZXJ3cml0ZSwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIHJlc3VsdCk7CiAgICAgdm9p
ZCB0b2dnbGVQcm9wZXJ0eShFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+JiBzdHlsZUlkLCBpbnQgcHJvcGVydHlJbmRleCwgYm9vbCBkaXNhYmxlLCBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiogcmVzdWx0KTsKICAgICB2b2lkIHNldFJ1bGVTZWxlY3RvcihFcnJvclN0
cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBydWxlSWQsIGNvbnN0IFN0cmlu
ZyYgc2VsZWN0b3IsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiByZXN1bHQpOwpAQCAtODcsNyAr
ODcsNyBAQCBwcml2YXRlOgogCiAgICAgSW5zcGVjdG9yU3R5bGVTaGVldCogYmluZFN0eWxlU2hl
ZXQoQ1NTU3R5bGVTaGVldCopOwogICAgIEluc3BlY3RvclN0eWxlU2hlZXQqIHZpYUluc3BlY3Rv
clN0eWxlU2hlZXQoRG9jdW1lbnQqLCBib29sIGNyZWF0ZUlmQWJzZW50KTsKLSAgICBJbnNwZWN0
b3JTdHlsZVNoZWV0KiBzdHlsZVNoZWV0Rm9ySWQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcm
KTsKKyAgICBJbnNwZWN0b3JTdHlsZVNoZWV0KiBhc3NlcnRTdHlsZVNoZWV0Rm9ySWQoRXJyb3JT
dHJpbmcqLCBjb25zdCBTdHJpbmcmKTsKICAgICBTdHJpbmcgZGV0ZWN0T3JpZ2luKENTU1N0eWxl
U2hlZXQqIHBhZ2VTdHlsZVNoZWV0LCBEb2N1bWVudCogb3duZXJEb2N1bWVudCk7CiAKICAgICBQ
YXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBidWlsZEFycmF5Rm9yUnVsZUxpc3QoQ1NTUnVsZUxp
c3QqIHJ1bGVMaXN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvQ1NTU3R5bGVNb2RlbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvQ1NTU3R5bGVNb2RlbC5qcwppbmRleCAzOGY1Mjg0NGNjM2JkYzU0NTFlMTNjZjFmOTM0OTI3
YThjZGY4NTdmLi5mNTViY2I0ZWVjYzgwODhjODA5YmUwNjJhMzQ3ZDM3M2MyN2E5MmY4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1N0eWxlTW9kZWwu
anMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTdHlsZU1vZGVs
LmpzCkBAIC0zMCw2ICszMCw3IEBACiAKIFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsID0gZnVu
Y3Rpb24oKQogeworICAgIG5ldyBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbFJlc291cmNlQmlu
ZGluZyh0aGlzKTsKIH0KIAogV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwucGFyc2VSdWxlQXJy
YXlQYXlsb2FkID0gZnVuY3Rpb24ocnVsZUFycmF5KQpAQCAtNDAsNiArNDEsMTAgQEAgV2ViSW5z
cGVjdG9yLkNTU1N0eWxlTW9kZWwucGFyc2VSdWxlQXJyYXlQYXlsb2FkID0gZnVuY3Rpb24ocnVs
ZUFycmF5KQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK1dlYkluc3BlY3Rvci5DU1NTdHlsZU1v
ZGVsLkV2ZW50cyA9IHsKKyAgICBTdHlsZVNoZWV0Q2hhbmdlZDogMAorfQorCiBXZWJJbnNwZWN0
b3IuQ1NTU3R5bGVNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgZ2V0U3R5bGVzQXN5bmM6IGZ1bmN0
aW9uKG5vZGVJZCwgdXNlckNhbGxiYWNrKQogICAgIHsKQEAgLTEyNCw3ICsxMjksNyBAQCBXZWJJ
bnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB2YXIgZG9l
c0FmZmVjdFNlbGVjdGVkTm9kZSA9IChzZWxlY3RlZE5vZGVJZHMuaW5kZXhPZihub2RlSWQpID49
IDApOwogICAgICAgICAgICAgdmFyIHJ1bGUgPSBXZWJJbnNwZWN0b3IuQ1NTUnVsZS5wYXJzZVBh
eWxvYWQocnVsZVBheWxvYWQpOwogICAgICAgICAgICAgc3VjY2Vzc0NhbGxiYWNrKHJ1bGUsIGRv
ZXNBZmZlY3RTZWxlY3RlZE5vZGUpOwotICAgICAgICAgICAgdGhpcy5fc3R5bGVTaGVldENoYW5n
ZWQocnVsZS5pZC5zdHlsZVNoZWV0SWQsIHRydWUpOworICAgICAgICAgICAgdGhpcy5fZmlyZVN0
eWxlU2hlZXRDaGFuZ2VkKHJ1bGUuaWQuc3R5bGVTaGVldElkLCB0cnVlKTsKICAgICAgICAgfQog
CiAgICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrKG5vZGVJZCwgc3VjY2Vzc0NhbGxiYWNrLCBmYWls
dXJlQ2FsbGJhY2ssIGVycm9yLCBuZXdTZWxlY3RvciwgcnVsZVBheWxvYWQpCkBAIC0xNDYsNyAr
MTUxLDcgQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwucHJvdG90eXBlID0gewogICAgICAg
ICAgICAgdmFyIGRvZXNBZmZlY3RTZWxlY3RlZE5vZGUgPSAoc2VsZWN0ZWROb2RlSWRzLmluZGV4
T2Yobm9kZUlkKSA+PSAwKTsKICAgICAgICAgICAgIHZhciBydWxlID0gV2ViSW5zcGVjdG9yLkNT
U1J1bGUucGFyc2VQYXlsb2FkKHJ1bGVQYXlsb2FkKTsKICAgICAgICAgICAgIHN1Y2Nlc3NDYWxs
YmFjayhydWxlLCBkb2VzQWZmZWN0U2VsZWN0ZWROb2RlKTsKLSAgICAgICAgICAgIHRoaXMuX3N0
eWxlU2hlZXRDaGFuZ2VkKHJ1bGUuaWQuc3R5bGVTaGVldElkLCB0cnVlKTsKKyAgICAgICAgICAg
IHRoaXMuX2ZpcmVTdHlsZVNoZWV0Q2hhbmdlZChydWxlLmlkLnN0eWxlU2hlZXRJZCwgdHJ1ZSk7
CiAgICAgICAgIH0KIAogICAgICAgICBmdW5jdGlvbiBjYWxsYmFjayhzdWNjZXNzQ2FsbGJhY2ss
IGZhaWx1cmVDYWxsYmFjaywgc2VsZWN0b3IsIGVycm9yLCBydWxlUGF5bG9hZCkKQEAgLTE2MSwz
MyArMTY2LDMzIEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgQ1NTQWdlbnQuYWRkUnVsZShub2RlSWQsIHNlbGVjdG9yLCBjYWxsYmFjay5iaW5kKHRo
aXMsIHN1Y2Nlc3NDYWxsYmFjaywgZmFpbHVyZUNhbGxiYWNrLCBzZWxlY3RvcikpOwogICAgIH0s
CiAKLSAgICBfc3R5bGVTaGVldENoYW5nZWQ6IGZ1bmN0aW9uKHN0eWxlU2hlZXRJZCwgbWFqb3JD
aGFuZ2UpCisgICAgX2ZpcmVTdHlsZVNoZWV0Q2hhbmdlZDogZnVuY3Rpb24oc3R5bGVTaGVldElk
LCBtYWpvckNoYW5nZSkKICAgICB7CiAgICAgICAgIGlmICghbWFqb3JDaGFuZ2UgfHwgIXN0eWxl
U2hlZXRJZCkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBmdW5jdGlvbiBjYWxsYmFj
ayhlcnJvciwgaHJlZiwgY29udGVudCkKKyAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2soZXJyb3Is
IGNvbnRlbnQpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChlcnJvcikKICAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICB2YXIgcmVzb3VyY2UgPSBXZWJJbnNwZWN0b3IucmVz
b3VyY2VGb3JVUkwoaHJlZik7Ci0gICAgICAgICAgICBpZiAocmVzb3VyY2UgJiYgcmVzb3VyY2Uu
dHlwZSA9PT0gV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuU3R5bGVzaGVldCkgewotICAgICAg
ICAgICAgICAgIHJlc291cmNlLnNldENvbnRlbnQoY29udGVudCwgdGhpcy5fb25SZXZlcnQuYmlu
ZCh0aGlzLCBzdHlsZVNoZWV0SWQpKTsKLSAgICAgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZl
bnRUb0xpc3RlbmVycygic3R5bGVzaGVldCBjaGFuZ2VkIik7Ci0gICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5DU1NT
dHlsZU1vZGVsLkV2ZW50cy5TdHlsZVNoZWV0Q2hhbmdlZCwge3N0eWxlU2hlZXRJZDpzdHlsZVNo
ZWV0SWQsIGNvbnRlbnQ6Y29udGVudCwgbWFqb3JDaGFuZ2U6bWFqb3JDaGFuZ2V9KTsKICAgICAg
ICAgfQotICAgICAgICBDU1NBZ2VudC5nZXRTdHlsZVNoZWV0VGV4dChzdHlsZVNoZWV0SWQsIGNh
bGxiYWNrLmJpbmQodGhpcykpOworICAgICAgICBpZiAodGhpcy5oYXNFdmVudExpc3RlbmVycyhX
ZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5FdmVudHMuU3R5bGVTaGVldENoYW5nZWQpKQorICAg
ICAgICAgICAgQ1NTQWdlbnQuZ2V0U3R5bGVTaGVldFRleHQoc3R5bGVTaGVldElkLCBjYWxsYmFj
ay5iaW5kKHRoaXMpKTsKICAgICB9LAogCi0gICAgX29uUmV2ZXJ0OiBmdW5jdGlvbihzdHlsZVNo
ZWV0SWQsIGNvbnRlbnRUb1JldmVydFRvKQorICAgIHNldFN0eWxlU2hlZXRUZXh0OiBmdW5jdGlv
bihzdHlsZVNoZWV0SWQsIG5ld1RleHQsIG1ham9yQ2hhbmdlLCB1c2VyQ2FsbGJhY2spCiAgICAg
ewotICAgICAgICBmdW5jdGlvbiBjYWxsYmFjayhlcnJvciwgc3VjY2VzcykKKyAgICAgICAgZnVu
Y3Rpb24gY2FsbGJhY2soZXJyb3IpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChlcnJvcikK
LSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB0aGlzLl9zdHlsZVNoZWV0Q2hh
bmdlZChzdHlsZVNoZWV0SWQsIHRydWUpOworICAgICAgICAgICAgIGlmICghZXJyb3IpCisgICAg
ICAgICAgICAgICAgIHRoaXMuX2ZpcmVTdHlsZVNoZWV0Q2hhbmdlZCh0aGlzLmlkLCBtYWpvckNo
YW5nZSk7CisKKyAgICAgICAgICAgICBpZiAodXNlckNhbGxiYWNrKQorICAgICAgICAgICAgICAg
ICB1c2VyQ2FsbGJhY2soZXJyb3IpOwogICAgICAgICB9Ci0gICAgICAgIENTU0FnZW50LnNldFN0
eWxlU2hlZXRUZXh0KHN0eWxlU2hlZXRJZCwgY29udGVudFRvUmV2ZXJ0VG8sIGNhbGxiYWNrLmJp
bmQodGhpcykpOworICAgICAgICBDU1NBZ2VudC5zZXRTdHlsZVNoZWV0VGV4dChzdHlsZVNoZWV0
SWQsIG5ld1RleHQsIGNhbGxiYWNrLmJpbmQodGhpcykpOwogICAgIH0KIH0KIApAQCAtMzY1LDcg
KzM3MCw3IEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgICAgICAgICB1c2VyQ2FsbGJhY2sobnVsbCk7CiAgICAgICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgICAgICB1c2VyQ2FsbGJhY2soV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFy
YXRpb24ucGFyc2VQYXlsb2FkKHBheWxvYWQpKTsKLSAgICAgICAgICAgICAgICBXZWJJbnNwZWN0
b3IuY3NzTW9kZWwuX3N0eWxlU2hlZXRDaGFuZ2VkKHRoaXMuaWQuc3R5bGVTaGVldElkLCB0cnVl
KTsKKyAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuY3NzTW9kZWwuX2ZpcmVTdHlsZVNoZWV0
Q2hhbmdlZCh0aGlzLmlkLnN0eWxlU2hlZXRJZCwgdHJ1ZSk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KIApAQCAtNDg2LDcgKzQ5MSw3IEBAIFdlYkluc3BlY3Rvci5DU1NQcm9wZXJ0eS5wcm90
b3R5cGUgPSB7CiAgICAgICAgIGZ1bmN0aW9uIGVuYWJsZWRDYWxsYmFjayhzdHlsZSkKICAgICAg
ICAgewogICAgICAgICAgICAgaWYgKHN0eWxlKQotICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rv
ci5jc3NNb2RlbC5fc3R5bGVTaGVldENoYW5nZWQoc3R5bGUuaWQuc3R5bGVTaGVldElkLCBtYWpv
ckNoYW5nZSk7CisgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmNzc01vZGVsLl9maXJlU3R5
bGVTaGVldENoYW5nZWQoc3R5bGUuaWQuc3R5bGVTaGVldElkLCBtYWpvckNoYW5nZSk7CiAgICAg
ICAgICAgICBpZiAodXNlckNhbGxiYWNrKQogICAgICAgICAgICAgICAgIHVzZXJDYWxsYmFjayhz
dHlsZSk7CiAgICAgICAgIH0KQEAgLTUwMiw3ICs1MDcsNyBAQCBXZWJJbnNwZWN0b3IuQ1NTUHJv
cGVydHkucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgICAgICBuZXdQcm9wZXJ0eS5zZXRE
aXNhYmxlZChmYWxzZSwgZW5hYmxlZENhbGxiYWNrKTsKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICBXZWJJbnNw
ZWN0b3IuY3NzTW9kZWwuX3N0eWxlU2hlZXRDaGFuZ2VkKHN0eWxlLmlkLnN0eWxlU2hlZXRJZCwg
bWFqb3JDaGFuZ2UpOworICAgICAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuY3NzTW9kZWwu
X2ZpcmVTdHlsZVNoZWV0Q2hhbmdlZChzdHlsZS5pZC5zdHlsZVNoZWV0SWQsIG1ham9yQ2hhbmdl
KTsKICAgICAgICAgICAgICAgICBpZiAodXNlckNhbGxiYWNrKQogICAgICAgICAgICAgICAgICAg
ICB1c2VyQ2FsbGJhY2soc3R5bGUpOwogICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTU0MCw3ICs1
NDUsNyBAQCBXZWJJbnNwZWN0b3IuQ1NTUHJvcGVydHkucHJvdG90eXBlID0gewogICAgICAgICAg
ICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgdmFyIHN0eWxlID0gV2ViSW5zcGVjdG9yLkNTU1N0
eWxlRGVjbGFyYXRpb24ucGFyc2VQYXlsb2FkKHN0eWxlUGF5bG9hZCk7CiAgICAgICAgICAgICAg
ICAgdXNlckNhbGxiYWNrKHN0eWxlKTsKLSAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuY3Nz
TW9kZWwuX3N0eWxlU2hlZXRDaGFuZ2VkKHRoaXMub3duZXJTdHlsZS5pZC5zdHlsZVNoZWV0SWQs
IGZhbHNlKTsKKyAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuY3NzTW9kZWwuX2ZpcmVTdHls
ZVNoZWV0Q2hhbmdlZCh0aGlzLm93bmVyU3R5bGUuaWQuc3R5bGVTaGVldElkLCBmYWxzZSk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtNTgzLDE0ICs1ODgsMTA3IEBAIFdlYkluc3Bl
Y3Rvci5DU1NTdHlsZVNoZWV0LnByb3RvdHlwZSA9IHsKIAogICAgIHNldFRleHQ6IGZ1bmN0aW9u
KG5ld1RleHQsIG1ham9yQ2hhbmdlLCB1c2VyQ2FsbGJhY2spCiAgICAgewotICAgICAgICBmdW5j
dGlvbiBjYWxsYmFjayhlcnJvciwgaXNDaGFuZ2VTdWNjZXNzZnVsKQorICAgICAgICBmdW5jdGlv
biBjYWxsYmFjayhlcnJvcikKICAgICAgICAgewogICAgICAgICAgICAgIGlmICh1c2VyQ2FsbGJh
Y2spCi0gICAgICAgICAgICAgICAgIHVzZXJDYWxsYmFjayhpc0NoYW5nZVN1Y2Nlc3NmdWwpOwot
ICAgICAgICAgICAgIGlmIChpc0NoYW5nZVN1Y2Nlc3NmdWwpCi0gICAgICAgICAgICAgICAgIFdl
Ykluc3BlY3Rvci5jc3NNb2RlbC5fc3R5bGVTaGVldENoYW5nZWQodGhpcy5pZCwgbWFqb3JDaGFu
Z2UpOworICAgICAgICAgICAgICAgICB1c2VyQ2FsbGJhY2soZXJyb3IpOworICAgICAgICAgICAg
IGlmICghZXJyb3IpCisgICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5jc3NNb2RlbC5fZmly
ZVN0eWxlU2hlZXRDaGFuZ2VkKHRoaXMuaWQsIG1ham9yQ2hhbmdlKTsKICAgICAgICAgfQogCiAg
ICAgICAgIENTU0FnZW50LnNldFN0eWxlU2hlZXRUZXh0KHRoaXMuaWQsIG5ld1RleHQsIGNhbGxi
YWNrLmJpbmQodGhpcykpOwogICAgIH0KIH0KKworV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWxS
ZXNvdXJjZUJpbmRpbmcgPSBmdW5jdGlvbihjc3NNb2RlbCkKK3sKKyAgICB0aGlzLl9jc3NNb2Rl
bCA9IGNzc01vZGVsOworICAgIHRoaXMuX3VybFRvU3R5bGVTaGVldElkID0ge307CisgICAgdGhp
cy5fc3R5bGVTaGVldElkVG9VUkwgPSB7fTsKKyAgICB0aGlzLl9jc3NNb2RlbC5hZGRFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLkV2ZW50cy5TdHlsZVNoZWV0Q2hhbmdl
ZCwgdGhpcy5fc3R5bGVTaGVldENoYW5nZWQsIHRoaXMpOworICAgIFdlYkluc3BlY3Rvci5yZXNv
dXJjZVRyZWVNb2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVN
b2RlbC5FdmVudFR5cGVzLkZyYW1lTmF2aWdhdGVkLCB0aGlzLl9mcmFtZU5hdmlnYXRlZCwgdGhp
cyk7CisgICAgV2ViSW5zcGVjdG9yLlJlc291cmNlLnJlZ2lzdGVyRG9tYWluTW9kZWxCaW5kaW5n
KFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLlN0eWxlc2hlZXQsIHRoaXMpOworfQorCitXZWJJ
bnNwZWN0b3IuQ1NTU3R5bGVNb2RlbFJlc291cmNlQmluZGluZy5wcm90b3R5cGUgPSB7CisgICAg
c2V0Q29udGVudDogZnVuY3Rpb24ocmVzb3VyY2UsIGNvbnRlbnQsIG1ham9yQ2hhbmdlLCB1c2Vy
Q2FsbGJhY2spCisgICAgeworICAgICAgICBpZiAodGhpcy5fdXJsVG9TdHlsZVNoZWV0SWRbcmVz
b3VyY2UudXJsXSkgeworICAgICAgICAgICAgdGhpcy5faW5uZXJTZXRDb250ZW50KHJlc291cmNl
LnVybCwgY29udGVudCwgbWFqb3JDaGFuZ2UsIHVzZXJDYWxsYmFjayk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgdGhpcy5fbG9hZFN0eWxlU2hlZXRIZWFkZXJzKHRo
aXMuX2lubmVyU2V0Q29udGVudC5iaW5kKHRoaXMsIHJlc291cmNlLnVybCwgY29udGVudCwgbWFq
b3JDaGFuZ2UsIHVzZXJDYWxsYmFjaykpOworICAgIH0sCisKKyAgICBfZnJhbWVOYXZpZ2F0ZWQ6
IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgdmFyIGZyYW1lSWQgPSBldmVudC5kYXRh
OworICAgICAgICBpZiAoIWZyYW1lSWQpIHsKKyAgICAgICAgICAgIC8vIE1haW4gZnJhbWUgbmF2
aWdhdGlvbiAtIGNsZWFyIGhpc3RvcnkuCisgICAgICAgICAgICB0aGlzLl91cmxUb1N0eWxlU2hl
ZXRJZCA9IHt9OworICAgICAgICAgICAgdGhpcy5fc3R5bGVTaGVldElkVG9VUkwgPSB7fTsKKyAg
ICAgICAgfQorICAgIH0sCisKKyAgICBfaW5uZXJTZXRDb250ZW50OiBmdW5jdGlvbih1cmwsIGNv
bnRlbnQsIG1ham9yQ2hhbmdlLCB1c2VyQ2FsbGJhY2ssIGVycm9yKQorICAgIHsKKyAgICAgICAg
aWYgKGVycm9yKSB7CisgICAgICAgICAgICB1c2VyQ2FsbGJhY2soZXJyb3IpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgdmFyIHN0eWxlU2hlZXRJZCA9IHRoaXMu
X3VybFRvU3R5bGVTaGVldElkW3VybF07CisgICAgICAgIGlmICghc3R5bGVTaGVldElkKSB7Cisg
ICAgICAgICAgICBpZiAodXNlckNhbGxiYWNrKQorICAgICAgICAgICAgICAgIHVzZXJDYWxsYmFj
aygiTm8gc3R5bGVzaGVldCBmb3VuZCIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisgICAgICAgIHRoaXMuX2Nzc01vZGVsLnNldFN0eWxlU2hlZXRUZXh0KHN0eWxlU2hlZXRJZCwg
Y29udGVudCwgbWFqb3JDaGFuZ2UsIHVzZXJDYWxsYmFjayk7CisgICAgfSwKKworICAgIF9sb2Fk
U3R5bGVTaGVldEhlYWRlcnM6IGZ1bmN0aW9uKGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgZnVu
Y3Rpb24gZGlkR2V0QWxsU3R5bGVTaGVldHMoZXJyb3IsIGluZm9zKQorICAgICAgICB7CisgICAg
ICAgICAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhlcnJvcik7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IGluZm9zLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgdmFy
IGluZm8gPSBpbmZvc1tpXTsKKyAgICAgICAgICAgICAgICB0aGlzLl91cmxUb1N0eWxlU2hlZXRJ
ZFtpbmZvLnNvdXJjZVVSTF0gPSBpbmZvLnN0eWxlU2hlZXRJZDsKKyAgICAgICAgICAgICAgICB0
aGlzLl9zdHlsZVNoZWV0SWRUb1VSTFtpbmZvLnN0eWxlU2hlZXRJZF0gPSBpbmZvLnNvdXJjZVVS
TDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhbGxiYWNrKCk7CisgICAgICAgIH0KKyAg
ICAgICAgQ1NTQWdlbnQuZ2V0QWxsU3R5bGVTaGVldHMoZGlkR2V0QWxsU3R5bGVTaGVldHMuYmlu
ZCh0aGlzKSk7CisgICAgfSwKKworICAgIF9zdHlsZVNoZWV0Q2hhbmdlZDogZnVuY3Rpb24oZXZl
bnQpCisgICAgeworICAgICAgICB2YXIgc3R5bGVTaGVldElkID0gZXZlbnQuZGF0YS5zdHlsZVNo
ZWV0SWQ7CisgICAgICAgIGZ1bmN0aW9uIHNldENvbnRlbnQoKQorICAgICAgICB7CisgICAgICAg
ICAgICB2YXIgdXJsID0gdGhpcy5fc3R5bGVTaGVldElkVG9VUkxbc3R5bGVTaGVldElkXTsKKyAg
ICAgICAgICAgIGlmICghdXJsKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAKKyAgICAg
ICAgICAgIHZhciByZXNvdXJjZSA9IFdlYkluc3BlY3Rvci5yZXNvdXJjZUZvclVSTCh1cmwpOwor
ICAgICAgICAgICAgaWYgKCFyZXNvdXJjZSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgICAgIHZhciBtYWpvckNoYW5nZSA9IGV2ZW50LmRhdGEubWFqb3JDaGFuZ2U7CisgICAg
ICAgICAgICBpZiAobWFqb3JDaGFuZ2UpCisgICAgICAgICAgICAgICAgcmVzb3VyY2UuYWRkUmV2
aXNpb24oZXZlbnQuZGF0YS5jb250ZW50KTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghdGhp
cy5fc3R5bGVTaGVldElkVG9VUkxbc3R5bGVTaGVldElkXSkgeworICAgICAgICAgICAgdGhpcy5f
bG9hZFN0eWxlU2hlZXRIZWFkZXJzKHNldENvbnRlbnQuYmluZCh0aGlzKSk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgc2V0Q29udGVudC5jYWxsKHRoaXMpOworICAg
IH0KK30KKworV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWxSZXNvdXJjZUJpbmRpbmcucHJvdG90
eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5SZXNvdXJjZURvbWFpbk1vZGVsQmluZGluZy5w
cm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0RlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0RlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuanMKaW5kZXggZDc0N2NkMzk0NDRj
YjI2OWFkZmZmNmZjZjZkYjExMzYzN2QyNWI0NC4uMTA2ZDYyZjY5N2JhYjJjYWI0M2E3MTZhNGEz
MmRkNGQ1MGE1ZWQyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5qcwpAQCAtNDUsNiAr
NDUsOCBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbCA9IGZ1bmN0aW9u
KCkKICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYklu
c3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkV2ZW50cy5EZWJ1Z2dlclBhdXNlZCwgdGhpcy5fZGVidWdn
ZXJQYXVzZWQsIHRoaXMpOwogICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLmFkZEV2ZW50
TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuRXZlbnRzLkRlYnVnZ2VyUmVzdW1l
ZCwgdGhpcy5fZGVidWdnZXJSZXN1bWVkLCB0aGlzKTsKICAgICBXZWJJbnNwZWN0b3IuZGVidWdn
ZXJNb2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkV2ZW50
cy5SZXNldCwgdGhpcy5fZGVidWdnZXJSZXNldCwgdGhpcyk7CisKKyAgICBuZXcgV2ViSW5zcGVj
dG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWxSZXNvdXJjZUJpbmRpbmcodGhpcyk7CiB9CiAK
IFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLkV2ZW50cyA9IHsKQEAgLTE0
MCwxMiArMTQyLDE1IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnBy
b3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIHZhciBzY3JpcHQgPSB0aGlzLl9zY3JpcHRGb3JT
b3VyY2VGaWxlSWQoc291cmNlRmlsZUlkKTsKICAgICAgICAgdmFyIHNvdXJjZUZpbGUgPSB0aGlz
Ll9zb3VyY2VGaWxlc1tzb3VyY2VGaWxlSWRdOwotICAgICAgICB2YXIgb2xkU291cmNlID0gc291
cmNlRmlsZS5jb250ZW50OwotICAgICAgICBmdW5jdGlvbiBkaWRFZGl0U2NyaXB0U291cmNlKGVy
cm9yKQorCisgICAgICAgIGZ1bmN0aW9uIGRpZEVkaXRTY3JpcHRTb3VyY2Uob2xkU291cmNlLCBl
cnJvcikKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFlcnJvcikgewogICAgICAgICAgICAg
ICAgIHNvdXJjZUZpbGUuY29udGVudCA9IG5ld1NvdXJjZTsKLSAgICAgICAgICAgICAgICB0aGlz
Ll91cGRhdGVSZXNvdXJjZUNvbnRlbnQoc291cmNlRmlsZSwgb2xkU291cmNlLCBuZXdTb3VyY2Up
OworCisgICAgICAgICAgICAgICAgdmFyIHJlc291cmNlID0gV2ViSW5zcGVjdG9yLnJlc291cmNl
Rm9yVVJMKHNvdXJjZUZpbGUudXJsKTsKKyAgICAgICAgICAgICAgICBpZiAocmVzb3VyY2UpCisg
ICAgICAgICAgICAgICAgICAgIHJlc291cmNlLmFkZFJldmlzaW9uKG5ld1NvdXJjZSk7CiAgICAg
ICAgICAgICB9CiAKICAgICAgICAgICAgIGNhbGxiYWNrKGVycm9yKTsKQEAgLTE1MywyMiArMTU4
LDEyIEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZSA9
IHsKICAgICAgICAgICAgIGlmICghZXJyb3IgJiYgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwu
Y2FsbEZyYW1lcykKICAgICAgICAgICAgICAgICB0aGlzLl9kZWJ1Z2dlclBhdXNlZCgpOwogICAg
ICAgICB9Ci0gICAgICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLmVkaXRTY3JpcHRTb3Vy
Y2Uoc2NyaXB0LnNvdXJjZUlELCBuZXdTb3VyY2UsIGRpZEVkaXRTY3JpcHRTb3VyY2UuYmluZCh0
aGlzKSk7Ci0gICAgfSwKIAotICAgIF91cGRhdGVSZXNvdXJjZUNvbnRlbnQ6IGZ1bmN0aW9uKHNv
dXJjZUZpbGUsIG9sZFNvdXJjZSwgbmV3U291cmNlKQotICAgIHsKLSAgICAgICAgdmFyIHJlc291
cmNlID0gV2ViSW5zcGVjdG9yLnJlc291cmNlRm9yVVJMKHNvdXJjZUZpbGUudXJsKTsKLSAgICAg
ICAgaWYgKCFyZXNvdXJjZSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBmdW5jdGlv
biBkaWRFZGl0U2NyaXB0U291cmNlKGVycm9yKQorICAgICAgICB2YXIgb2xkU291cmNlID0gc291
cmNlRmlsZS5yZXF1ZXN0Q29udGVudChkaWRSZWNlaXZlU291cmNlLmJpbmQodGhpcykpOworICAg
ICAgICBmdW5jdGlvbiBkaWRSZWNlaXZlU291cmNlKG9sZFNvdXJjZSkKICAgICAgICAgewotICAg
ICAgICAgICAgdGhpcy5fdXBkYXRlQnJlYWtwb2ludHNBZnRlckxpdmVFZGl0KHNvdXJjZUZpbGUu
aWQsIG9sZFNvdXJjZSwgbmV3U291cmNlKTsKLSAgICAgICAgICAgIHNvdXJjZUZpbGUucmVsb2Fk
KCk7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5lZGl0U2NyaXB0U291
cmNlKHNjcmlwdC5zb3VyY2VJRCwgbmV3U291cmNlLCBkaWRFZGl0U2NyaXB0U291cmNlLmJpbmQo
dGhpcywgb2xkU291cmNlKSk7CiAgICAgICAgIH0KLSAgICAgICAgdmFyIHJldmVydEhhbmRsZSA9
IHRoaXMuZWRpdFNjcmlwdFNvdXJjZS5iaW5kKHRoaXMsIHNvdXJjZUZpbGUuaWQsIG9sZFNvdXJj
ZSwgZGlkRWRpdFNjcmlwdFNvdXJjZS5iaW5kKHRoaXMpKTsKLSAgICAgICAgcmVzb3VyY2Uuc2V0
Q29udGVudChuZXdTb3VyY2UsIHJldmVydEhhbmRsZSk7CiAgICAgfSwKIAogICAgIF91cGRhdGVC
cmVha3BvaW50c0FmdGVyTGl2ZUVkaXQ6IGZ1bmN0aW9uKHNvdXJjZUZpbGVJZCwgb2xkU291cmNl
LCBuZXdTb3VyY2UpCkBAIC03MTIsMyArNzA3LDQ5IEBAIFdlYkluc3BlY3Rvci5QcmVzZW5hdGlv
bkNhbGxGcmFtZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3NvdXJjZUZpbGUucmVxdWVz
dFNvdXJjZU1hcHBpbmcoZGlkUmVxdWVzdFNvdXJjZU1hcHBpbmcuYmluZCh0aGlzKSk7CiAgICAg
fQogfQorCitXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbFJlc291cmNlQmlu
ZGluZyA9IGZ1bmN0aW9uKG1vZGVsKQoreworICAgIHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsID0g
bW9kZWw7CisgICAgV2ViSW5zcGVjdG9yLlJlc291cmNlLnJlZ2lzdGVyRG9tYWluTW9kZWxCaW5k
aW5nKFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLlNjcmlwdCwgdGhpcyk7Cit9CisKK1dlYklu
c3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsUmVzb3VyY2VCaW5kaW5nLnByb3RvdHlw
ZSA9IHsKKyAgICBjYW5TZXRDb250ZW50OiBmdW5jdGlvbihyZXNvdXJjZSkKKyAgICB7CisgICAg
ICAgIHZhciBzb3VyY2VGaWxlID0gdGhpcy5fcHJlc2VudGF0aW9uTW9kZWwuX3NvdXJjZUZpbGVG
b3JTY3JpcHQocmVzb3VyY2UudXJsKQorICAgICAgICBpZiAoIXNvdXJjZUZpbGUpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB0aGlzLl9wcmVzZW50YXRpb25Nb2Rl
bC5jYW5FZGl0U2NyaXB0U291cmNlKHNvdXJjZUZpbGUuaWQpOworICAgIH0sCisKKyAgICBzZXRD
b250ZW50OiBmdW5jdGlvbihyZXNvdXJjZSwgY29udGVudCwgbWFqb3JDaGFuZ2UsIHVzZXJDYWxs
YmFjaykKKyAgICB7CisgICAgICAgIGlmICghbWFqb3JDaGFuZ2UpCisgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgdmFyIHNvdXJjZUZpbGUgPSB0aGlzLl9wcmVzZW50YXRpb25Nb2RlbC5f
c291cmNlRmlsZUZvclNjcmlwdChyZXNvdXJjZS51cmwpOworICAgICAgICBpZiAoIXNvdXJjZUZp
bGUpIHsKKyAgICAgICAgICAgIHVzZXJDYWxsYmFjaygiUmVzb3VyY2UgaXMgbm90IGVkaXRhYmxl
Iik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICByZXNvdXJjZS5y
ZXF1ZXN0Q29udGVudCh0aGlzLl9zZXRDb250ZW50V2l0aEluaXRpYWxDb250ZW50LmJpbmQodGhp
cywgc291cmNlRmlsZSwgY29udGVudCwgdXNlckNhbGxiYWNrKSk7CisgICAgfSwKKworICAgIF9z
ZXRDb250ZW50V2l0aEluaXRpYWxDb250ZW50OiBmdW5jdGlvbihzb3VyY2VGaWxlLCBjb250ZW50
LCB1c2VyQ2FsbGJhY2ssIG9sZENvbnRlbnQpCisgICAgeworICAgICAgICBmdW5jdGlvbiBjYWxs
YmFjayhlcnJvcikKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHVzZXJDYWxsYmFjaykKKyAg
ICAgICAgICAgICAgICB1c2VyQ2FsbGJhY2soZXJyb3IpOworICAgICAgICAgICAgaWYgKCFlcnJv
cikgeworICAgICAgICAgICAgICAgIHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLl91cGRhdGVCcmVh
a3BvaW50c0FmdGVyTGl2ZUVkaXQoc291cmNlRmlsZS5pZCwgb2xkQ29udGVudCwgY29udGVudCk7
CisgICAgICAgICAgICAgICAgc291cmNlRmlsZS5yZWxvYWQoKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgICB0aGlzLl9wcmVzZW50YXRpb25Nb2RlbC5lZGl0U2NyaXB0U291cmNl
KHNvdXJjZUZpbGUuaWQsIGNvbnRlbnQsIGNhbGxiYWNrLmJpbmQodGhpcykpOworICAgIH0KK30K
KworV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWxSZXNvdXJjZUJpbmRpbmcu
cHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5SZXNvdXJjZURvbWFpbk1vZGVsQmlu
ZGluZy5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL09iamVjdC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvT2Jq
ZWN0LmpzCmluZGV4IDU4NzJiOGI1MWZiY2I1M2Q0ZmI0NmZhNmNlYmIzZmM3MDI0ODA2ODAuLjUz
YzIwZTI5ZTVkNjZmZmE1NGIzNDE4OTgwZmE0YmNiYjQ0Mzc0M2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvT2JqZWN0LmpzCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvT2JqZWN0LmpzCkBAIC01Nyw2ICs1NywxMyBAQCBXZWJJ
bnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZSA9IHsKICAgICAgICAgZGVsZXRlIHRoaXMuX2xpc3Rl
bmVyczsKICAgICB9LAogCisgICAgaGFzRXZlbnRMaXN0ZW5lcnM6IGZ1bmN0aW9uKGV2ZW50VHlw
ZSkKKyAgICB7CisgICAgICAgIGlmICghKCJfbGlzdGVuZXJzIiBpbiB0aGlzKSB8fCAhKGV2ZW50
VHlwZSBpbiB0aGlzLl9saXN0ZW5lcnMpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9LAorCiAgICAgZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJz
OiBmdW5jdGlvbihldmVudFR5cGUsIGV2ZW50RGF0YSkKICAgICB7CiAgICAgICAgIGlmICghKCJf
bGlzdGVuZXJzIiBpbiB0aGlzKSB8fCAhKGV2ZW50VHlwZSBpbiB0aGlzLl9saXN0ZW5lcnMpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZS5q
cyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2UuanMKaW5kZXgg
YzY0NzRjMjhhYmY2MmRhNGI0OGE1YzUxMWJlZTI0MDJkZTQxMzIyNi4uNDdiZWRlYjIxOGU3OWFh
YjdiZDE2NzQzYzExYzMwZDQ0ZDc0N2E0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1Jlc291cmNlLmpzCkBAIC0zNCw2ICszNCw3IEBAIFdlYkluc3BlY3Rvci5S
ZXNvdXJjZSA9IGZ1bmN0aW9uKGlkZW50aWZpZXIsIHVybCkKICAgICB0aGlzLl9jYXRlZ29yeSA9
IFdlYkluc3BlY3Rvci5yZXNvdXJjZUNhdGVnb3JpZXMub3RoZXI7CiAgICAgdGhpcy5fcGVuZGlu
Z0NvbnRlbnRDYWxsYmFja3MgPSBbXTsKICAgICB0aGlzLl9yZXNwb25zZUhlYWRlcnNTaXplID0g
MDsKKyAgICB0aGlzLmhpc3RvcnkgPSBbXTsKIH0KIAogLy8gS2VlcCB0aGVzZSBpbiBzeW5jIHdp
dGggV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2U6OlR5cGUKQEAgLTEwMSw2ICsxMDIsMTcgQEAg
V2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUgPSB7CiAgICAgfQogfQogCitXZWJJbnNwZWN0b3Iu
UmVzb3VyY2UuX2RvbWFpbk1vZGVsQmluZGluZ3MgPSBbXTsKKworV2ViSW5zcGVjdG9yLlJlc291
cmNlLnJlZ2lzdGVyRG9tYWluTW9kZWxCaW5kaW5nID0gZnVuY3Rpb24odHlwZSwgYmluZGluZykK
K3sKKyAgICBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuX2RvbWFpbk1vZGVsQmluZGluZ3NbdHlwZV0g
PSBiaW5kaW5nOworfQorCitXZWJJbnNwZWN0b3IuUmVzb3VyY2UuRXZlbnRzID0geworICAgIFJl
dmlzaW9uQWRkZWQ6IDAKK30KKwogV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlwZSA9IHsK
ICAgICBnZXQgdXJsKCkKICAgICB7CkBAIC02NDAsMjAgKzY1MiwzNiBAQCBXZWJJbnNwZWN0b3Iu
UmVzb3VyY2UucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9jb250ZW50ID0gY29udGVudDsK
ICAgICB9LAogCi0gICAgaXNSZXNvdXJjZVJldmlzaW9uOiBmdW5jdGlvbigpCisgICAgaXNFZGl0
YWJsZTogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgcmV0dXJuICEhdGhpcy5fYWN0dWFsUmVz
b3VyY2U7CisgICAgICAgIGlmICh0aGlzLl9hY3R1YWxSZXNvdXJjZSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgdmFyIGJpbmRpbmcgPSBXZWJJbnNwZWN0b3IuUmVzb3VyY2Uu
X2RvbWFpbk1vZGVsQmluZGluZ3NbdGhpcy50eXBlXTsKKyAgICAgICAgcmV0dXJuIGJpbmRpbmcg
JiYgYmluZGluZy5jYW5TZXRDb250ZW50KHRoaXMpOworICAgIH0sCisKKyAgICBzZXRDb250ZW50
OiBmdW5jdGlvbihuZXdDb250ZW50LCBtYWpvckNoYW5nZSwgY2FsbGJhY2spCisgICAgeworICAg
ICAgICBpZiAoIXRoaXMuaXNFZGl0YWJsZSh0aGlzKSkgeworICAgICAgICAgICAgaWYgKGNhbGxi
YWNrKQorICAgICAgICAgICAgICAgIGNhbGxiYWNrKCJSZXNvdXJjZSBpcyBub3QgZWRpdGFibGUi
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICB2YXIgYmluZGluZyA9
IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5fZG9tYWluTW9kZWxCaW5kaW5nc1t0aGlzLnR5cGVdOwor
ICAgICAgICBiaW5kaW5nLnNldENvbnRlbnQodGhpcywgbmV3Q29udGVudCwgbWFqb3JDaGFuZ2Us
IGNhbGxiYWNrKTsKICAgICB9LAogCi0gICAgc2V0Q29udGVudDogZnVuY3Rpb24obmV3Q29udGVu
dCwgb25SZXZlcnQpCisgICAgYWRkUmV2aXNpb246IGZ1bmN0aW9uKG5ld0NvbnRlbnQpCiAgICAg
ewogICAgICAgICB2YXIgcmV2aXNpb25SZXNvdXJjZSA9IG5ldyBXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2UobnVsbCwgdGhpcy51cmwpOworICAgICAgICByZXZpc2lvblJlc291cmNlLmZyYW1lSWQgPSB0
aGlzLmZyYW1lSWQ7CisgICAgICAgIHJldmlzaW9uUmVzb3VyY2UubG9hZGVySWQgPSB0aGlzLmxv
YWRlcklkOworICAgICAgICByZXZpc2lvblJlc291cmNlLmRvY3VtZW50VVJMID0gdGhpcy5kb2N1
bWVudFVSTDsKICAgICAgICAgcmV2aXNpb25SZXNvdXJjZS50eXBlID0gdGhpcy50eXBlOwogICAg
ICAgICByZXZpc2lvblJlc291cmNlLmxvYWRlciA9IHRoaXMubG9hZGVyOwogICAgICAgICByZXZp
c2lvblJlc291cmNlLnRpbWVzdGFtcCA9IHRoaXMudGltZXN0YW1wOwogICAgICAgICByZXZpc2lv
blJlc291cmNlLl9jb250ZW50ID0gdGhpcy5fY29udGVudDsKICAgICAgICAgcmV2aXNpb25SZXNv
dXJjZS5fYWN0dWFsUmVzb3VyY2UgPSB0aGlzOwotICAgICAgICByZXZpc2lvblJlc291cmNlLl9m
aXJlT25SZXZlcnQgPSBvblJldmVydDsKIAogICAgICAgICBpZiAodGhpcy5maW5pc2hlZCkKICAg
ICAgICAgICAgIHJldmlzaW9uUmVzb3VyY2UuZmluaXNoZWQgPSB0cnVlOwpAQCAtNjcxLDIyICs2
OTksMjIgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlwZSA9IHsKICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgcmV2aXNpb25SZXNvdXJjZS5fYmFzZVJldmlzaW9uID0gdGhpcy5fYmFz
ZVJldmlzaW9uOwogCi0gICAgICAgIHZhciBkYXRhID0geyByZXZpc2lvbjogcmV2aXNpb25SZXNv
dXJjZSB9OwogICAgICAgICB0aGlzLl9jb250ZW50ID0gbmV3Q29udGVudDsKICAgICAgICAgdGhp
cy50aW1lc3RhbXAgPSBuZXcgRGF0ZSgpOwogCi0gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRv
TGlzdGVuZXJzKCJjb250ZW50LWNoYW5nZWQiLCBkYXRhKTsKKyAgICAgICAgdGhpcy5oaXN0b3J5
LnB1c2gocmV2aXNpb25SZXNvdXJjZSk7CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlz
dGVuZXJzKFdlYkluc3BlY3Rvci5SZXNvdXJjZS5FdmVudHMuUmV2aXNpb25BZGRlZCwgcmV2aXNp
b25SZXNvdXJjZSk7CiAgICAgfSwKIAogICAgIHJldmVydFRvVGhpczogZnVuY3Rpb24oKQogICAg
IHsKLSAgICAgICAgaWYgKCF0aGlzLl9hY3R1YWxSZXNvdXJjZSB8fCAhdGhpcy5fZmlyZU9uUmV2
ZXJ0KQorICAgICAgICBpZiAoIXRoaXMuX2FjdHVhbFJlc291cmNlKQogICAgICAgICAgICAgcmV0
dXJuOwogCiAgICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrKGNvbnRlbnQpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIGlmIChjb250ZW50KQotICAgICAgICAgICAgICAgIHRoaXMuX2ZpcmVPblJldmVy
dChjb250ZW50KTsKKyAgICAgICAgICAgICAgICB0aGlzLl9hY3R1YWxSZXNvdXJjZS5zZXRDb250
ZW50KGNvbnRlbnQsIHRydWUpOwogICAgICAgICB9CiAgICAgICAgIHRoaXMucmVxdWVzdENvbnRl
bnQoY2FsbGJhY2suYmluZCh0aGlzKSk7CiAgICAgfSwKQEAgLTc2MywzICs3OTEsMjEgQEAgV2Vi
SW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlwZSA9IHsKIH0KIAogV2ViSW5zcGVjdG9yLlJlc291
cmNlLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsK
KworCitXZWJJbnNwZWN0b3IuUmVzb3VyY2VEb21haW5Nb2RlbEJpbmRpbmcgPSBmdW5jdGlvbigp
Cit7Cit9CisKK1dlYkluc3BlY3Rvci5SZXNvdXJjZURvbWFpbk1vZGVsQmluZGluZy5wcm90b3R5
cGUgPSB7CisgICAgY2FuU2V0Q29udGVudDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgLy8g
SW1wbGVtZW50ZWQgYnkgdGhlIGRvbWFpbnMuCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0s
CisKKyAgICBzZXRDb250ZW50OiBmdW5jdGlvbihyZXNvdXJjZSwgY29udGVudCwgbWFqb3JDaGFu
Z2UsIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgdGhlIGRvbWFp
bnMuCisgICAgfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9SZXNvdXJjZVZpZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1Jlc291cmNlVmlldy5qcwppbmRleCA3MjAyNTdjZWY4Nzg5NWY2NGU0NzUyNWI5YTk0NWYzMWE4
NTYzNWNkLi5hN2M2MTEwMzZiNmE0NWI2MTdhODBiNDk4OGE3MGRjMmI3ZmYxODg3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVmlldy5qcwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVmlldy5qcwpA
QCAtNDksOSArNDksOCBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VWaWV3LmNyZWF0ZVJlc291cmNl
VmlldyA9IGZ1bmN0aW9uKHJlc291cmNlKQogICAgIGNhc2UgV2ViSW5zcGVjdG9yLnJlc291cmNl
Q2F0ZWdvcmllcy5kb2N1bWVudHM6CiAgICAgY2FzZSBXZWJJbnNwZWN0b3IucmVzb3VyY2VDYXRl
Z29yaWVzLnNjcmlwdHM6CiAgICAgY2FzZSBXZWJJbnNwZWN0b3IucmVzb3VyY2VDYXRlZ29yaWVz
LnhocjoKLSAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuUmVzb3VyY2VTb3VyY2VGcmFt
ZShyZXNvdXJjZSk7CiAgICAgY2FzZSBXZWJJbnNwZWN0b3IucmVzb3VyY2VDYXRlZ29yaWVzLnN0
eWxlc2hlZXRzOgotICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5DU1NTb3VyY2VGcmFt
ZShyZXNvdXJjZSk7CisgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlJlc291cmNlU291
cmNlRnJhbWUocmVzb3VyY2UpOwogICAgIGNhc2UgV2ViSW5zcGVjdG9yLnJlc291cmNlQ2F0ZWdv
cmllcy5pbWFnZXM6CiAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkltYWdlVmlldyhy
ZXNvdXJjZSk7CiAgICAgY2FzZSBXZWJJbnNwZWN0b3IucmVzb3VyY2VDYXRlZ29yaWVzLmZvbnRz
OgpAQCAtNjgsOSArNjcsOCBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VWaWV3LnJlc291cmNlVmll
d1R5cGVNYXRjaGVzUmVzb3VyY2UgPSBmdW5jdGlvbihyZXNvdXJjZSkKICAgICBjYXNlIFdlYklu
c3BlY3Rvci5yZXNvdXJjZUNhdGVnb3JpZXMuZG9jdW1lbnRzOgogICAgIGNhc2UgV2ViSW5zcGVj
dG9yLnJlc291cmNlQ2F0ZWdvcmllcy5zY3JpcHRzOgogICAgIGNhc2UgV2ViSW5zcGVjdG9yLnJl
c291cmNlQ2F0ZWdvcmllcy54aHI6Ci0gICAgICAgIHJldHVybiByZXNvdXJjZVZpZXcuX19wcm90
b19fID09PSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VTb3VyY2VGcmFtZS5wcm90b3R5cGU7CiAgICAg
Y2FzZSBXZWJJbnNwZWN0b3IucmVzb3VyY2VDYXRlZ29yaWVzLnN0eWxlc2hlZXRzOgotICAgICAg
ICByZXR1cm4gcmVzb3VyY2VWaWV3Ll9fcHJvdG9fXyA9PT0gV2ViSW5zcGVjdG9yLkNTU1NvdXJj
ZUZyYW1lLnByb3RvdHlwZTsKKyAgICAgICAgcmV0dXJuIHJlc291cmNlVmlldy5fX3Byb3RvX18g
PT09IFdlYkluc3BlY3Rvci5SZXNvdXJjZVNvdXJjZUZyYW1lLnByb3RvdHlwZTsKICAgICBjYXNl
IFdlYkluc3BlY3Rvci5yZXNvdXJjZUNhdGVnb3JpZXMuaW1hZ2VzOgogICAgICAgICByZXR1cm4g
cmVzb3VyY2VWaWV3Ll9fcHJvdG9fXyA9PT0gV2ViSW5zcGVjdG9yLkltYWdlVmlldy5wcm90b3R5
cGU7CiAgICAgY2FzZSBXZWJJbnNwZWN0b3IucmVzb3VyY2VDYXRlZ29yaWVzLmZvbnRzOgpAQCAt
MTQwLDc5ICsxMzgsMTQgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlU291cmNlRnJhbWUucHJvdG90
eXBlID0gewogCiAgICAgaXNDb250ZW50RWRpdGFibGU6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICB9LAotCi0gICAgX3JlcXVlc3RDb250ZW50OiBmdW5jdGlv
bihjYWxsYmFjaykKLSAgICB7Ci0gICAgICAgIGZ1bmN0aW9uIGNvbnRlbnRMb2FkZWQodGV4dCkK
LSAgICAgICAgewotICAgICAgICAgICAgdmFyIG1pbWVUeXBlID0gV2ViSW5zcGVjdG9yLlJlc291
cmNlU291cmNlRnJhbWUuRGVmYXVsdE1JTUVUeXBlRm9yUmVzb3VyY2VUeXBlW3RoaXMuX3Jlc291
cmNlLnR5cGVdIHx8IHRoaXMuX3Jlc291cmNlLm1pbWVUeXBlOwotICAgICAgICAgICAgY2FsbGJh
Y2sobWltZVR5cGUsIHRleHQpOwotICAgICAgICB9Ci0gICAgICAgIHRoaXMuX3Jlc291cmNlLnJl
cXVlc3RDb250ZW50KGNvbnRlbnRMb2FkZWQuYmluZCh0aGlzKSk7Ci0gICAgfQotfQotCi1XZWJJ
bnNwZWN0b3IuUmVzb3VyY2VTb3VyY2VGcmFtZS5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5z
cGVjdG9yLlNvdXJjZUZyYW1lLnByb3RvdHlwZTsKLQotCi1XZWJJbnNwZWN0b3IuQ1NTU291cmNl
RnJhbWUgPSBmdW5jdGlvbihyZXNvdXJjZSkKLXsKLSAgICBXZWJJbnNwZWN0b3IuUmVzb3VyY2VT
b3VyY2VGcmFtZS5jYWxsKHRoaXMsIHJlc291cmNlKTsKLSAgICB0aGlzLl9sb2FkU3R5bGVTaGVl
dCgpOwotfQotCi1XZWJJbnNwZWN0b3IuQ1NTU291cmNlRnJhbWUucHJvdG90eXBlID0gewotICAg
IGlzQ29udGVudEVkaXRhYmxlOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gISF0
aGlzLl9zdHlsZVNoZWV0ICYmICF0aGlzLl9yZXNvdXJjZS5pc1Jlc291cmNlUmV2aXNpb24oKTsK
LSAgICB9LAotCi0gICAgX2xvYWRTdHlsZVNoZWV0OiBmdW5jdGlvbigpCi0gICAgewotICAgICAg
ICBmdW5jdGlvbiBkaWRHZXRBbGxTdHlsZVNoZWV0cyhlcnJvciwgaW5mb3MpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGlmIChlcnJvcikKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAg
ICAgICAgIHZhciBzdHlsZXNoZWV0SWQ7Ci0gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IGluZm9zLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgdmFyIGluZm8gPSBpbmZvc1tp
XTsKLSAgICAgICAgICAgICAgICBpZiAoaW5mby5zb3VyY2VVUkwgPT09IHRoaXMuX3Jlc291cmNl
LnVybCkgewotICAgICAgICAgICAgICAgICAgICBzdHlsZXNoZWV0SWQgPSBpbmZvLnN0eWxlU2hl
ZXRJZDsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgaWYgKCFzdHlsZXNoZWV0SWQpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuOwotCi0gICAgICAgICAgICBmdW5jdGlvbiBkaWRDcmVhdGVGb3JJZChzdHlsZVNo
ZWV0KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHRoaXMuX3N0eWxlU2hlZXQgPSBz
dHlsZVNoZWV0OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgV2ViSW5zcGVjdG9yLkNTU1N0
eWxlU2hlZXQuY3JlYXRlRm9ySWQoc3R5bGVzaGVldElkLCBkaWRDcmVhdGVGb3JJZC5iaW5kKHRo
aXMpKTsKLSAgICAgICAgfQotICAgICAgICBDU1NBZ2VudC5nZXRBbGxTdHlsZVNoZWV0cyhkaWRH
ZXRBbGxTdHlsZVNoZWV0cy5iaW5kKHRoaXMpKTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291
cmNlLmlzRWRpdGFibGUoKTsKICAgICB9LAogCiAgICAgZWRpdENvbnRlbnQ6IGZ1bmN0aW9uKG5l
d1RleHQsIGNhbGxiYWNrKQogICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLl9zdHlsZVNoZWV0KSB7
Ci0gICAgICAgICAgICBjYWxsYmFjaygiU3R5bGVzaGVldCBub3QgZm91bmQuIik7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLl9yZXNldEluY3JlbWVudGFs
VXBkYXRlVGltZXIoKTsKLQotICAgICAgICBmdW5jdGlvbiBkaWRTZXRUZXh0KHN1Y2Nlc3MpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHZhciBlcnJvcjsKLSAgICAgICAgICAgIGlmICghc3VjY2Vz
cykKLSAgICAgICAgICAgICAgICBlcnJvciA9ICJGYWlsZWQgdG8gc2F2ZSBtb2RpZmllZCBzdHls
ZXNoZWV0ICIgKyB0aGlzLl9yZXNvdXJjZS51cmw7Ci0gICAgICAgICAgICBjYWxsYmFjayhlcnJv
cik7Ci0gICAgICAgIH0KLSAgICAgICAgdGhpcy5fc3R5bGVTaGVldC5zZXRUZXh0KG5ld1RleHQs
IHRydWUsIGRpZFNldFRleHQuYmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuX2NsZWFySW5jcmVt
ZW50YWxVcGRhdGVUaW1lcigpOworICAgICAgICB2YXIgbWFqb3JDaGFuZ2UgPSB0cnVlOworICAg
ICAgICB0aGlzLl9yZXNvdXJjZS5zZXRDb250ZW50KG5ld1RleHQsIG1ham9yQ2hhbmdlLCBjYWxs
YmFjayk7CiAgICAgfSwKIAogICAgIGVuZEVkaXRpbmc6IGZ1bmN0aW9uKG9sZFJhbmdlLCBuZXdS
YW5nZSkKQEAgLTIyMCwxOCArMTUzLDI4IEBAIFdlYkluc3BlY3Rvci5DU1NTb3VyY2VGcmFtZS5w
cm90b3R5cGUgPSB7CiAgICAgICAgIGZ1bmN0aW9uIGNvbW1pdEluY3JlbWVudGFsRWRpdCgpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIHZhciBtYWpvckNoYW5nZSA9IGZhbHNlOwotICAgICAgICAg
ICAgdGhpcy5fc3R5bGVTaGVldC5zZXRUZXh0KHRoaXMuX3RleHRNb2RlbC50ZXh0LCBtYWpvckNo
YW5nZSk7CisgICAgICAgICAgICB0aGlzLl9yZXNvdXJjZS5zZXRDb250ZW50KHRoaXMuX3RleHRN
b2RlbC50ZXh0LCBtYWpvckNoYW5nZSwgZnVuY3Rpb24oKSB7fSk7CiAgICAgICAgIH0KICAgICAg
ICAgY29uc3QgdXBkYXRlVGltZW91dCA9IDIwMDsKICAgICAgICAgdGhpcy5faW5jcmVtZW50YWxV
cGRhdGVUaW1lciA9IHNldFRpbWVvdXQoY29tbWl0SW5jcmVtZW50YWxFZGl0LmJpbmQodGhpcyks
IHVwZGF0ZVRpbWVvdXQpOwogICAgIH0sCiAKLSAgICBfcmVzZXRJbmNyZW1lbnRhbFVwZGF0ZVRp
bWVyOiBmdW5jdGlvbigpCisgICAgX2NsZWFySW5jcmVtZW50YWxVcGRhdGVUaW1lcjogZnVuY3Rp
b24oKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2luY3JlbWVudGFsVXBkYXRlVGltZXIpCiAg
ICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5faW5jcmVtZW50YWxVcGRhdGVUaW1lcik7CiAg
ICAgICAgIGRlbGV0ZSB0aGlzLl9pbmNyZW1lbnRhbFVwZGF0ZVRpbWVyOworICAgIH0sCisKKyAg
ICBfcmVxdWVzdENvbnRlbnQ6IGZ1bmN0aW9uKGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgZnVu
Y3Rpb24gY29udGVudExvYWRlZCh0ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgbWlt
ZVR5cGUgPSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VTb3VyY2VGcmFtZS5EZWZhdWx0TUlNRVR5cGVG
b3JSZXNvdXJjZVR5cGVbdGhpcy5fcmVzb3VyY2UudHlwZV0gfHwgdGhpcy5fcmVzb3VyY2UubWlt
ZVR5cGU7CisgICAgICAgICAgICBjYWxsYmFjayhtaW1lVHlwZSwgdGV4dCk7CisgICAgICAgIH0K
KyAgICAgICAgdGhpcy5fcmVzb3VyY2UucmVxdWVzdENvbnRlbnQoY29udGVudExvYWRlZC5iaW5k
KHRoaXMpKTsKICAgICB9CiB9CiAKLVdlYkluc3BlY3Rvci5DU1NTb3VyY2VGcmFtZS5wcm90b3R5
cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlJlc291cmNlU291cmNlRnJhbWUucHJvdG90eXBl
OworV2ViSW5zcGVjdG9yLlJlc291cmNlU291cmNlRnJhbWUucHJvdG90eXBlLl9fcHJvdG9fXyA9
IFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcwppbmRleCA2N2ExOWE3
ZTk3Y2I4M2I3MGQ5YzVmZGMzZTEzN2Q1NmQ4ZWU2M2FlLi5hZWE4YmU5M2RkNDkyODFiZDIyMzg0
NjVkNzc1NTJhZjlmY2Y3YjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMKQEAgLTI2MCwxOCArMjYwLDE3IEBAIFdlYklu
c3BlY3Rvci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgLy8gSW5zZXJ0
IGluIHRoZSBhbHBoYWJldGljYWwgb3JkZXIsIGZpcnN0IGZyYW1lcywgdGhlbiByZXNvdXJjZXMu
IERvY3VtZW50IHJlc291cmNlIGdvZXMgZmlyc3QuCiAgICAgICAgIHZhciBjaGlsZHJlbiA9IGZy
YW1lVHJlZUVsZW1lbnQuY2hpbGRyZW47Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hp
bGRyZW4ubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgdmFyIGk7CisgICAgICAgIGZvciAoaSA9IDA7
IGkgPCBjaGlsZHJlbi5sZW5ndGg7ICsraSkgewogICAgICAgICAgICAgdmFyIGNoaWxkID0gY2hp
bGRyZW5baV07CiAgICAgICAgICAgICBpZiAoIShjaGlsZCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rv
ci5GcmFtZVJlc291cmNlVHJlZUVsZW1lbnQpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
Ci0gICAgICAgICAgICBpZiAocmVzb3VyY2UudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlJlc291cmNl
LlR5cGUuRG9jdW1lbnQgfHwKLSAgICAgICAgICAgICAgICAgICAgKGNoaWxkLl9yZXNvdXJjZS50
eXBlICE9PSBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5Eb2N1bWVudCAmJiBjaGlsZC5fcmVz
b3VyY2UuZGlzcGxheU5hbWUubG9jYWxlQ29tcGFyZShyZXNvdXJjZS5kaXNwbGF5TmFtZSkgPiAw
KSkgewotICAgICAgICAgICAgICAgIGZyYW1lVHJlZUVsZW1lbnQuaW5zZXJ0Q2hpbGQocmVzb3Vy
Y2VUcmVlRWxlbWVudCwgaSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAg
fQorICAgICAgICAgICAgaWYgKHJlc291cmNlLnR5cGUgPT09IFdlYkluc3BlY3Rvci5SZXNvdXJj
ZS5UeXBlLkRvY3VtZW50IHx8IChjaGlsZC5fcmVzb3VyY2UudHlwZSAhPT0gV2ViSW5zcGVjdG9y
LlJlc291cmNlLlR5cGUuRG9jdW1lbnQgJiYgY2hpbGQuX3Jlc291cmNlLmRpc3BsYXlOYW1lLmxv
Y2FsZUNvbXBhcmUocmVzb3VyY2UuZGlzcGxheU5hbWUpID4gMCkpCisgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgZnJhbWVUcmVlRWxlbWVudC5hcHBlbmRDaGlsZChy
ZXNvdXJjZVRyZWVFbGVtZW50KTsKKyAgICAgICAgZnJhbWVUcmVlRWxlbWVudC5pbnNlcnRDaGls
ZChyZXNvdXJjZVRyZWVFbGVtZW50LCBpKTsKKyAgICAgICAgcmVzb3VyY2VUcmVlRWxlbWVudC5f
cG9wdWxhdGVSZXZpc2lvbnMoKTsKICAgICB9LAogCiAgICAgX2ZyYW1lTmF2aWdhdGVkOiBmdW5j
dGlvbihldmVudCkKQEAgLTk5MSw3ICs5OTAsNyBAQCBXZWJJbnNwZWN0b3IuRnJhbWVSZXNvdXJj
ZVRyZWVFbGVtZW50ID0gZnVuY3Rpb24oc3RvcmFnZVBhbmVsLCByZXNvdXJjZSkKICAgICBXZWJJ
bnNwZWN0b3IuQmFzZVN0b3JhZ2VUcmVlRWxlbWVudC5jYWxsKHRoaXMsIHN0b3JhZ2VQYW5lbCwg
cmVzb3VyY2UsIHJlc291cmNlLmRpc3BsYXlOYW1lLCBbInJlc291cmNlLXNpZGViYXItdHJlZS1p
dGVtIiwgInJlc291cmNlcy1jYXRlZ29yeS0iICsgcmVzb3VyY2UuY2F0ZWdvcnkubmFtZV0pOwog
ICAgIHRoaXMuX3Jlc291cmNlID0gcmVzb3VyY2U7CiAgICAgdGhpcy5fcmVzb3VyY2UuYWRkRXZl
bnRMaXN0ZW5lcigiZXJyb3JzLXdhcm5pbmdzLXVwZGF0ZWQiLCB0aGlzLl9lcnJvcnNXYXJuaW5n
c1VwZGF0ZWQsIHRoaXMpOwotICAgIHRoaXMuX3Jlc291cmNlLmFkZEV2ZW50TGlzdGVuZXIoImNv
bnRlbnQtY2hhbmdlZCIsIHRoaXMuX2NvbnRlbnRDaGFuZ2VkLCB0aGlzKTsKKyAgICB0aGlzLl9y
ZXNvdXJjZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5SZXNvdXJjZS5FdmVudHMuUmV2
aXNpb25BZGRlZCwgdGhpcy5fcmV2aXNpb25BZGRlZCwgdGhpcyk7CiAgICAgdGhpcy50b29sdGlw
ID0gcmVzb3VyY2UudXJsOwogfQogCkBAIC0xMTAzLDkgKzExMDIsMjAgQEAgV2ViSW5zcGVjdG9y
LkZyYW1lUmVzb3VyY2VUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlz
Ll9idWJibGVFbGVtZW50LmFkZFN0eWxlQ2xhc3MoImVycm9yIik7CiAgICAgfSwKIAotICAgIF9j
b250ZW50Q2hhbmdlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX3BvcHVsYXRlUmV2aXNpb25zOiBm
dW5jdGlvbigpCisgICAgeworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX3Jlc291
cmNlLmhpc3RvcnkubGVuZ3RoOyArK2kpCisgICAgICAgICAgICB0aGlzLl9hcHBlbmRSZXZpc2lv
bih0aGlzLl9yZXNvdXJjZS5oaXN0b3J5W2ldKTsKKyAgICB9LAorCisgICAgX3JldmlzaW9uQWRk
ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgdGhpcy5fYXBwZW5kUmV2aXNpb24o
ZXZlbnQuZGF0YSk7CisgICAgfSwKKworICAgIF9hcHBlbmRSZXZpc2lvbjogZnVuY3Rpb24ocmV2
aXNpb24pCiAgICAgewotICAgICAgICB0aGlzLmluc2VydENoaWxkKG5ldyBXZWJJbnNwZWN0b3Iu
UmVzb3VyY2VSZXZpc2lvblRyZWVFbGVtZW50KHRoaXMuX3N0b3JhZ2VQYW5lbCwgZXZlbnQuZGF0
YS5yZXZpc2lvbiksIDApOworICAgICAgICB0aGlzLmluc2VydENoaWxkKG5ldyBXZWJJbnNwZWN0
b3IuUmVzb3VyY2VSZXZpc2lvblRyZWVFbGVtZW50KHRoaXMuX3N0b3JhZ2VQYW5lbCwgcmV2aXNp
b24pLCAwKTsKICAgICAgICAgdmFyIG9sZFZpZXcgPSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VWaWV3
LmV4aXN0aW5nUmVzb3VyY2VWaWV3Rm9yUmVzb3VyY2UodGhpcy5fcmVzb3VyY2UpOwogICAgICAg
ICBpZiAob2xkVmlldykgewogICAgICAgICAgICAgdmFyIG5ld1ZpZXcgPSBXZWJJbnNwZWN0b3Iu
UmVzb3VyY2VWaWV3LnJlY3JlYXRlUmVzb3VyY2VWaWV3KHRoaXMuX3Jlc291cmNlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCmluZGV4
IGU4Y2IxMGZkMjgxYWY3MTRiYmRmZjBhNmE4OTIwNzVmNTg2YWNjN2QuLmQxMDIwMTZlZmVlNDkx
NTkzZGQzOGFhMjRkY2I5MTE5MDgxMDA3ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbApAQCAtNDYsNyArNDYsNiBAQCBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkV4dGVuc2lvblJlZ2lz
dHJ5U3R1Yi5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
IHNyYz0iT2JqZWN0LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNj
cmlwdCIgc3JjPSJTZXR0aW5ncy5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCB0eXBlPSJ0ZXh0
L2phdmFzY3JpcHQiIHNyYz0iQ1NTU3R5bGVNb2RlbC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlw
dCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iQ2hlY2tib3guanMiPjwvc2NyaXB0PgogICAg
IDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkNvbnRleHRNZW51LmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJLZXlib2FyZFNo
b3J0Y3V0LmpzIj48L3NjcmlwdD4KQEAgLTYxLDYgKzYwLDcgQEAgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAgICA8c2Ny
aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJQYW5lbC5qcyI+PC9zY3JpcHQ+CiAgICAg
PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iVGltZWxpbmVHcmlkLmpzIj48L3Nj
cmlwdD4gICAgCiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iUmVzb3Vy
Y2UuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9
IkNTU1N0eWxlTW9kZWwuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZh
c2NyaXB0IiBzcmM9Ik5ldHdvcmtNYW5hZ2VyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJSZXNvdXJjZVRyZWVNb2RlbC5qcyI+PC9zY3JpcHQ+
CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iUmVzb3VyY2VDYXRlZ29y
eS5qcyI+PC9zY3JpcHQ+Cg==
</data>
<flag name="review"
          id="82485"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>