<?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>64283</bug_id>
          
          <creation_ts>2011-07-11 08:12:10 -0700</creation_ts>
          <short_desc>Web Inspector: Focusing on another node while editing CSS property does not update styles</short_desc>
          <delta_ts>2011-07-15 08:34:43 -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>1</everconfirmed>
          <reporter name="Alexander Pavlov (apavlov)">apavlov</reporter>
          <assigned_to name="Alexander Pavlov (apavlov)">apavlov</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>434885</commentid>
    <comment_count>0</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-07-11 08:12:10 -0700</bug_when>
    <thetext>1. Select an element in the Elements panel, start editing one of its applicable styles&apos; CSS properties
2. Commit the edit by clicking on another element in the DOM tree
3. Observe that the Styles pane does not update to reflect the new node styles</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434915</commentid>
    <comment_count>1</comment_count>
      <attachid>100309</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-07-11 09:04:40 -0700</bug_when>
    <thetext>Created attachment 100309
[PATCH] Suggested fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435581</commentid>
    <comment_count>2</comment_count>
      <attachid>100309</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-07-12 05:19:35 -0700</bug_when>
    <thetext>Comment on attachment 100309
[PATCH] Suggested fix

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

&gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:1969
&gt; +                WebInspector.panels.elements.startEditingStyle();

There is no guarantee that endEditingStyle is going to be called. Can we add an &quot;editing&quot; state that we enter once upon start editing and exit upon canceling / navigating out of the rule?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>437024</commentid>
    <comment_count>3</comment_count>
      <attachid>100795</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-07-14 03:40:45 -0700</bug_when>
    <thetext>Created attachment 100795
[PATCH] Introduced a kind of an &quot;editing session&quot; for a CSS style</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>437025</commentid>
    <comment_count>4</comment_count>
      <attachid>100796</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-07-14 03:55:13 -0700</bug_when>
    <thetext>Created attachment 100796
[PATCH] Removed unused method</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>437045</commentid>
    <comment_count>5</comment_count>
      <attachid>100796</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-07-14 06:02:26 -0700</bug_when>
    <thetext>Comment on attachment 100796
[PATCH] Removed unused method

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

Lets see how stylesheet update affects standard update routines.

&gt; LayoutTests/inspector/styles/commit-with-selection-change.html:9
&gt; +    WebInspector.showPanel(&quot;elements&quot;);

selectNodeAndWaitForStyles does select elements panel.

&gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:1935
&gt; +    //   &quot;selector&quot; - edit selector (|target|: section whose selector to edit next).

We need constants for these.

&gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:1999
&gt; +        var newTarget = this._newEditorTarget(userInput, previousContent, context, moveDirection);

var nextTarget = this._nextEditorTarget...

&gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:2000
&gt; +        this.editingEnded(context, !!newTarget);

this.editingEnded(context, newTarget) ?

&gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:2027
&gt; +        function editTargetCallback(newTarget)

Make this a top level function _startEditingTarget() ?

&gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:2038
&gt; +                var subtarget = newTarget.subtarget;

name, value?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>437082</commentid>
    <comment_count>6</comment_count>
      <attachid>100806</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-07-14 07:38:45 -0700</bug_when>
    <thetext>Created attachment 100806
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>437088</commentid>
    <comment_count>7</comment_count>
      <attachid>100806</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-07-14 07:56:27 -0700</bug_when>
    <thetext>Comment on attachment 100806
Patch

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

&gt; Source/WebCore/inspector/front-end/MetricsSidebarPane.js:42
&gt; +        this._innerUpdate();

Please add a FIXME somewhere around here to avoid updates of a collapsed pane.

&gt; Source/WebCore/inspector/front-end/MetricsSidebarPane.js:81
&gt; +        // &quot;style&quot; attribute might have changed. update styles unless they are being edited.

&quot;update&quot; should probably be capitalized to stick to the WebKit comment style.
&quot;styles&quot; -&gt; &quot;metrics&quot;

&gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:216
&gt; +    update: function(node, forceUpdate, callback)

Please add a FIXME somewhere around here to avoid updates of a collapsed pane.

&gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:287
&gt; +        // &quot;style&quot; attribute might have changed. update styles unless they are being edited.

&quot;update&quot; should probably be capitalized.

&gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:-1909
&gt; -

Should we keep this blank line?

&gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:2098
&gt; +        section.pane._userOperation = true;

I&apos;m a bit wary of this hacky access to private fields of other objects. Or do we allow this in the scope of a single file?

&gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:2125
&gt; +

odd blank line</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>437119</commentid>
    <comment_count>8</comment_count>
      <attachid>100814</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-07-14 09:14:51 -0700</bug_when>
    <thetext>Created attachment 100814
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>437696</commentid>
    <comment_count>9</comment_count>
      <attachid>100814</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-07-15 06:25:26 -0700</bug_when>
    <thetext>Comment on attachment 100814
Patch

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

Is there a test that covers this change?

&gt; LayoutTests/http/tests/inspector/elements-test.js:87
&gt; +        InspectorTest.addSniffer(WebInspector.StylesSidebarPane.prototype, &quot;_nodeStylesUpdatedForTest&quot;, sniff);

Since the method is for tests only it makes sense to convert it into a property and don&apos;t use addSniffer.

&gt; Source/WebCore/inspector/front-end/CSSStyleModel.js:516
&gt; +                WebInspector.cssModel._fireStyleSheetChanged(style.id.styleSheetId, majorChange, userCallback ? userCallback.bind(this, style) : null);

It is not clear which object is going to be &apos;this&apos; at the moment of binding.

&gt; Source/WebCore/inspector/front-end/DOMAgent.js:432
&gt; +    _inlineStyleInvalidated: function(nodeIds)

Inline this?

&gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:2106
&gt; +            this._parentPane._userOperation = true;

Is intentional that _userOperation is never reset to false?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>437737</commentid>
    <comment_count>10</comment_count>
      <attachid>100814</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-07-15 08:05:18 -0700</bug_when>
    <thetext>Comment on attachment 100814
Patch

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

&gt;&gt; LayoutTests/http/tests/inspector/elements-test.js:87
&gt;&gt; +        InspectorTest.addSniffer(WebInspector.StylesSidebarPane.prototype, &quot;_nodeStylesUpdatedForTest&quot;, sniff);
&gt; 
&gt; Since the method is for tests only it makes sense to convert it into a property and don&apos;t use addSniffer.

I only want to react on it once, sniffer is ideal for that.

&gt;&gt; Source/WebCore/inspector/front-end/CSSStyleModel.js:516

&gt; 
&gt; It is not clear which object is going to be &apos;this&apos; at the moment of binding.

Done.

&gt;&gt; Source/WebCore/inspector/front-end/DOMAgent.js:432
&gt;&gt; +    _inlineStyleInvalidated: function(nodeIds)
&gt; 
&gt; Inline this?

I&apos;ll add fixme.

&gt;&gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:2106
&gt;&gt; +            this._parentPane._userOperation = true;
&gt; 
&gt; Is intentional that _userOperation is never reset to false?

Good catch, thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>437739</commentid>
    <comment_count>11</comment_count>
      <attachid>100981</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-07-15 08:08:02 -0700</bug_when>
    <thetext>Created attachment 100981
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>437747</commentid>
    <comment_count>12</comment_count>
      <attachid>100985</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-07-15 08:22:03 -0700</bug_when>
    <thetext>Created attachment 100985
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>437752</commentid>
    <comment_count>13</comment_count>
      <attachid>100986</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-07-15 08:25:58 -0700</bug_when>
    <thetext>Created attachment 100986
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>437762</commentid>
    <comment_count>14</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-07-15 08:34:43 -0700</bug_when>
    <thetext>Committed r91070: &lt;http://trac.webkit.org/changeset/91070&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100309</attachid>
            <date>2011-07-11 09:04:40 -0700</date>
            <delta_ts>2011-07-14 03:40:45 -0700</delta_ts>
            <desc>[PATCH] Suggested fix</desc>
            <filename>updateonfocus.patch</filename>
            <type>text/plain</type>
            <size>7322</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">Y29tbWl0IDgxMWE1MzJmYzk3Y2M4YjFiYmM0Mjg1YWQ0MzdjZDVhZjgxZmJkZmMKQXV0aG9yOiBB
bGV4YW5kZXIgUGF2bG92IDxhcGF2bG92QGNocm9taXVtLm9yZz4KRGF0ZTogICBNb24gSnVsIDEx
IDE5OjUyOjQ3IDIwMTEgKzA0MDAKCiAgICBXZWIgSW5zcGVjdG9yOiBGb2N1c2luZyBvbiBhbm90
aGVyIG5vZGUgd2hpbGUgZWRpdGluZyBDU1MgcHJvcGVydHkgZG9lcyBub3QgdXBkYXRlIHN0eWxl
cwogICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0MjgzCiAgICAK
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgogICAgCiAgICBTb3VyY2UvV2ViQ29yZToK
ICAgIAogICAgVGVzdDogaW5zcGVjdG9yL3N0eWxlcy9jb21taXQtd2l0aC1zZWxlY3Rpb24tY2hh
bmdlLmh0bWwKICAgIAogICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5l
LmpzOgogICAgKFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBl
LnNlbGVjdEVsZW1lbnQpOgogICAgCiAgICBMYXlvdXRUZXN0czoKICAgIAogICAgKiBpbnNwZWN0
b3Ivc3R5bGVzL2NvbW1pdC13aXRoLXNlbGVjdGlvbi1jaGFuZ2UtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KICAgICogaW5zcGVjdG9yL3N0eWxlcy9jb21taXQtd2l0aC1zZWxlY3Rpb24tY2hhbmdlLmh0
bWw6IEFkZGVkLgoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCA1YzNhY2JiLi5kN2JiYmY0IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMTEtMDctMTEgIEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4K
KworICAgICAgICBXZWIgSW5zcGVjdG9yOiBGb2N1c2luZyBvbiBhbm90aGVyIG5vZGUgd2hpbGUg
ZWRpdGluZyBDU1MgcHJvcGVydHkgZG9lcyBub3QgdXBkYXRlIHN0eWxlcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQyODMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9zdHlsZXMvY29t
bWl0LXdpdGgtc2VsZWN0aW9uLWNoYW5nZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGluc3BlY3Rvci9zdHlsZXMvY29tbWl0LXdpdGgtc2VsZWN0aW9uLWNoYW5nZS5odG1sOiBBZGRl
ZC4KKwogMjAxMS0wNy0xMSAgQW5kcmV5IEtvc3lha292ICA8Y2FzZXFAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL2NvbW1pdC13aXRoLXNlbGVjdGlvbi1jaGFuZ2UtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9jb21taXQtd2l0aC1zZWxlY3Rp
b24tY2hhbmdlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAw
Li45MjFmNzcyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxl
cy9jb21taXQtd2l0aC1zZWxlY3Rpb24tY2hhbmdlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI1
IEBACitUZXN0cyB0aGF0IGNvbW1pdHRpbmcgYSBDU1MgcHJvcGVydHkgZWRpdCBieSBzZWxlY3Rp
bmcgYW5vdGhlciBlbGVtZW50IHVwZGF0ZXMgdGhlIFN0eWxlcyBwYW5lLiBCdWcgNjQyODMuCisK
K1RleHQKK0JlZm9yZSBlZGl0OgorW2V4cGFuZGVkXSBlbGVtZW50LnN0eWxlIHsgKCkKK2ZvbnQt
c2l6ZTogMTJweDsKKworPT09PT09PT0gTWF0Y2hlZCBDU1MgUnVsZXMgPT09PT09PT0KK1tleHBh
bmRlZF0gZGl2IHsgKHVzZXIgYWdlbnQgc3R5bGVzaGVldCkKK2Rpc3BsYXk6IGJsb2NrOworCisK
K0FmdGVyIHNlbGVjdGlvbiBjaGFuZ2U6CitbZXhwYW5kZWRdIGVsZW1lbnQuc3R5bGUgeyAoKQor
Cis9PT09PT09PSBNYXRjaGVkIENTUyBSdWxlcyA9PT09PT09PQorW2V4cGFuZGVkXSBwIHsgKHVz
ZXIgYWdlbnQgc3R5bGVzaGVldCkKK2Rpc3BsYXk6IGJsb2NrOworLXdlYmtpdC1tYXJnaW4tYmVm
b3JlOiAxZW07Cistd2Via2l0LW1hcmdpbi1hZnRlcjogMWVtOworLXdlYmtpdC1tYXJnaW4tc3Rh
cnQ6IDBweDsKKy13ZWJraXQtbWFyZ2luLWVuZDogMHB4OworCisKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9jb21taXQtd2l0aC1zZWxlY3Rpb24tY2hhbmdlLmh0
bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL2NvbW1pdC13aXRoLXNlbGVjdGlvbi1j
aGFuZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi43NGM0ODJmCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9jb21taXQtd2l0
aC1zZWxlY3Rpb24tY2hhbmdlLmh0bWwKQEAgLTAsMCArMSw1NiBAQAorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvZWxl
bWVudHMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitmdW5jdGlvbiB0ZXN0KCkKK3sK
KyAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJlbGVtZW50cyIpOworICAgIEluc3BlY3RvclRl
c3Quc2VsZWN0Tm9kZUFuZFdhaXRGb3JTdHlsZXMoImluc3BlY3RlZCIsIHN0ZXAxKTsKKworICAg
IHZhciB0cmVlRWxlbWVudDsKKyAgICB2YXIgc2VjdGlvbjsKKworICAgIGZ1bmN0aW9uIHN0ZXAx
KCkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJCZWZvcmUgZWRpdDoi
KTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wU2VsZWN0ZWRFbGVtZW50U3R5bGVzKHRydWUp
OworICAgICAgICBzZWN0aW9uID0gV2ViSW5zcGVjdG9yLnBhbmVscy5lbGVtZW50cy5zaWRlYmFy
UGFuZXMuc3R5bGVzLnNlY3Rpb25zWzBdWzFdOworICAgICAgICBzZWN0aW9uLmV4cGFuZCgpOwor
CisgICAgICAgIC8vIENyZWF0ZSBhIHByb3BlcnR5LgorICAgICAgICB0cmVlRWxlbWVudCA9IHNl
Y3Rpb24uYWRkTmV3QmxhbmtQcm9wZXJ0eSgpOworICAgICAgICB0cmVlRWxlbWVudC5zdGFydEVk
aXRpbmcoKTsKKyAgICAgICAgdHJlZUVsZW1lbnQubmFtZUVsZW1lbnQudGV4dENvbnRlbnQgPSAi
bWFyZ2luLWxlZnQiOworICAgICAgICB0cmVlRWxlbWVudC5uYW1lRWxlbWVudC5kaXNwYXRjaEV2
ZW50KEluc3BlY3RvclRlc3QuY3JlYXRlS2V5RXZlbnQoIkVudGVyIikpOworCisgICAgICAgIHRy
ZWVFbGVtZW50LnZhbHVlRWxlbWVudC50ZXh0Q29udGVudCA9ICIxcHgiOworICAgICAgICB0cmVl
RWxlbWVudC52YWx1ZUVsZW1lbnQuZmlyc3RDaGlsZC5zZWxlY3QoKTsKKworICAgICAgICAvLyBD
b21taXQgYnkgc2VsZWN0aW5nIGFub3RoZXIgZWxlbWVudC4KKyAgICAgICAgSW5zcGVjdG9yVGVz
dC5zZWxlY3ROb2RlQW5kV2FpdEZvclN0eWxlcygib3RoZXIiKTsKKyAgICAgICAgSW5zcGVjdG9y
VGVzdC5ydW5BZnRlclBlbmRpbmdEaXNwYXRjaGVzKHN0ZXAyKTsKKyAgICB9CisKKyAgICBmdW5j
dGlvbiBzdGVwMigpCisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiQWZ0
ZXIgc2VsZWN0aW9uIGNoYW5nZToiKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wU2VsZWN0
ZWRFbGVtZW50U3R5bGVzKHRydWUpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVz
dCgpOworICAgIH0KK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5IG9ubG9hZD0icnVu
VGVzdCgpIj4KKzxwPgorVGVzdHMgdGhhdCBjb21taXR0aW5nIGEgQ1NTIHByb3BlcnR5IGVkaXQg
Ynkgc2VsZWN0aW5nIGFub3RoZXIgZWxlbWVudCB1cGRhdGVzIHRoZSBTdHlsZXMgcGFuZS4gQnVn
IDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NDI4MyI+
NjQyODM8L2E+LgorPC9wPgorCis8ZGl2IGlkPSJpbnNwZWN0ZWQiIHN0eWxlPSJmb250LXNpemU6
IDEycHgiPlRleHQ8L2Rpdj4KKzxwIGlkPSJvdGhlciI+PC9kaXY+CisKKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCA4NzcyNjI3Li4zNzY4Nzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTUgQEAKKzIwMTEtMDctMTEgIEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9y
Zz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBGb2N1c2luZyBvbiBhbm90aGVyIG5vZGUgd2hp
bGUgZWRpdGluZyBDU1MgcHJvcGVydHkgZG9lcyBub3QgdXBkYXRlIHN0eWxlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQyODMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBpbnNwZWN0b3Ivc3R5
bGVzL2NvbW1pdC13aXRoLXNlbGVjdGlvbi1jaGFuZ2UuaHRtbAorCisgICAgICAgICogaW5zcGVj
dG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5TdHlsZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlLnNlbGVjdEVsZW1lbnQpOgorCiAy
MDExLTA3LTExICBBbmRyZXkgS29zeWFrb3YgIDxjYXNlcUBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanMgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzCmluZGV4IGQ2OWIzN2Uu
LmIyZWE0NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
U3R5bGVzU2lkZWJhclBhbmUuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qcwpAQCAtMTc0NSw2ICsxNzQ1LDcgQEAgV2ViSW5zcGVj
dG9yLlN0eWxlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBp
ZiAoaXNFbnRlcktleShldmVudCkgfHwgaXNGaWVsZElucHV0VGVybWluYXRlZCkgewogICAgICAg
ICAgICAgICAgIC8vIEVudGVyIG9yIGNvbG9uIChmb3IgbmFtZSkvc2VtaWNvbG9uIG91dHNpZGUg
b2Ygc3RyaW5nIChmb3IgdmFsdWUpLgogICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZh
dWx0KCk7CisgICAgICAgICAgICAgICAgY29udGV4dC5jb250aW51ZUVkaXRpbmcgPSB0cnVlOwog
ICAgICAgICAgICAgICAgIHJldHVybiAibW92ZS1mb3J3YXJkIjsKICAgICAgICAgICAgIH0gZWxz
ZSBpZiAoZXZlbnQua2V5Q29kZSA9PT0gV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuS2V5
cy5Fc2MuY29kZSB8fCBldmVudC5rZXlJZGVudGlmaWVyID09PSAiVSswMDFCIikKICAgICAgICAg
ICAgICAgICByZXR1cm4gImNhbmNlbCI7CkBAIC0xNzUzLDEwICsxNzU0LDEzIEBAIFdlYkluc3Bl
Y3Rvci5TdHlsZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAg
ICAgIHZhciBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CiAgICAgICAgICAgICAg
ICAgaWYgKHNlbGVjdGlvbi5pc0NvbGxhcHNlZCAmJiAhc2VsZWN0aW9uLmZvY3VzT2Zmc2V0KSB7
CiAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CisgICAgICAgICAg
ICAgICAgICAgIGNvbnRleHQuY29udGludWVFZGl0aW5nID0gdHJ1ZTsKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuICJtb3ZlLWJhY2t3YXJkIjsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB9IGVsc2UgaWYgKGV2ZW50LmtleUlkZW50aWZpZXIgPT09ICJVKzAwMDkiKSAvLyBUYWIg
a2V5LgorICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudC5rZXlJZGVudGlmaWVyID09PSAiVSsw
MDA5IikgeyAvLyBUYWIga2V5LgorICAgICAgICAgICAgICAgIGNvbnRleHQuY29udGludWVFZGl0
aW5nID0gdHJ1ZTsKICAgICAgICAgICAgICAgICByZXR1cm4gIm1vdmUtIiArIChldmVudC5zaGlm
dEtleSA/ICJiYWNrd2FyZCIgOiAiZm9yd2FyZCIpOworICAgICAgICAgICAgfQogICAgICAgICB9
CiAKICAgICAgICAgZnVuY3Rpb24gcGFzdGVIYW5kbGVyKGNvbnRleHQsIGV2ZW50KQpAQCAtMTk2
MSw3ICsxOTY1LDggQEAgV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90
b3R5cGUgPSB7CiAgICAgICAgIHZhciBpc0RpcnR5VmlhUGFzdGUgPSBpc0RhdGFQYXN0ZWQgJiYg
KHRoaXMubmFtZUVsZW1lbnQudGV4dENvbnRlbnQgIT09IGNvbnRleHQub3JpZ2luYWxOYW1lIHx8
IHRoaXMudmFsdWVFbGVtZW50LnRleHRDb250ZW50ICE9PSBjb250ZXh0Lm9yaWdpbmFsVmFsdWUp
OwogICAgICAgICB2YXIgc2hvdWxkQ29tbWl0TmV3UHJvcGVydHkgPSB0aGlzLl9uZXdQcm9wZXJ0
eSAmJiAobW92ZVRvT3RoZXIgfHwgKCFtb3ZlRGlyZWN0aW9uICYmICFpc0VkaXRpbmdOYW1lKSB8
fCAoaXNFZGl0aW5nTmFtZSAmJiBibGFua0lucHV0KSk7CiAgICAgICAgIGlmICgoKHVzZXJJbnB1
dCAhPT0gcHJldmlvdXNDb250ZW50IHx8IGlzRGlydHlWaWFQYXN0ZSkgJiYgIXRoaXMuX25ld1By
b3BlcnR5KSB8fCBzaG91bGRDb21taXROZXdQcm9wZXJ0eSkgewotICAgICAgICAgICAgV2ViSW5z
cGVjdG9yLnBhbmVscy5lbGVtZW50cy5zdGFydEVkaXRpbmdTdHlsZSgpOworICAgICAgICAgICAg
aWYgKGNvbnRleHQuY29udGludWVFZGl0aW5nKQorICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rv
ci5wYW5lbHMuZWxlbWVudHMuc3RhcnRFZGl0aW5nU3R5bGUoKTsKICAgICAgICAgICAgIHRoaXMu
dHJlZU91dGxpbmUuc2VjdGlvbi5fYWZ0ZXJVcGRhdGUgPSBtb3ZlVG9OZXh0Q2FsbGJhY2suYmlu
ZCh0aGlzLCB0aGlzLl9uZXdQcm9wZXJ0eSwgIWJsYW5rSW5wdXQsIHRoaXMudHJlZU91dGxpbmUu
c2VjdGlvbik7CiAgICAgICAgICAgICB2YXIgcHJvcGVydHlUZXh0OwogICAgICAgICAgICAgaWYg
KGJsYW5rSW5wdXQgfHwgKHRoaXMuX25ld1Byb3BlcnR5ICYmIC9eXHMqJC8udGVzdCh0aGlzLnZh
bHVlRWxlbWVudC50ZXh0Q29udGVudCkpKQo=
</data>
<flag name="review"
          id="94971"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100795</attachid>
            <date>2011-07-14 03:40:45 -0700</date>
            <delta_ts>2011-07-14 03:55:13 -0700</delta_ts>
            <desc>[PATCH] Introduced a kind of an &quot;editing session&quot; for a CSS style</desc>
            <filename>updateonfocus.patch</filename>
            <type>text/plain</type>
            <size>22261</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">Y29tbWl0IDY5Yjk2ZTRhOTgzNzliY2FkNzdhMDQyODUyMjdmYWE4YjZmYTNmOTUKQXV0aG9yOiBB
bGV4YW5kZXIgUGF2bG92IDxhcGF2bG92QGNocm9taXVtLm9yZz4KRGF0ZTogICBNb24gSnVsIDEx
IDE5OjUyOjQ3IDIwMTEgKzA0MDAKCiAgICBXZWIgSW5zcGVjdG9yOiBGb2N1c2luZyBvbiBhbm90
aGVyIG5vZGUgd2hpbGUgZWRpdGluZyBDU1MgcHJvcGVydHkgZG9lcyBub3QgdXBkYXRlIHN0eWxl
cwogICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0MjgzCiAgICAK
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgogICAgCiAgICBTb3VyY2UvV2ViQ29yZToK
ICAgIAogICAgVGVzdDogaW5zcGVjdG9yL3N0eWxlcy9jb21taXQtd2l0aC1zZWxlY3Rpb24tY2hh
bmdlLmh0bWwKICAgIAogICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHA6CiAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGRPYmplY3RGb3JSdWxlKToKICAg
ICogaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qczoKICAgIChXZWJJbnNw
ZWN0b3IuU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbi5wcm90b3R5cGUudXBkYXRlKToKICAgIChXZWJJ
bnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSk6CiAgICAoV2ViSW5z
cGVjdG9yLlN0eWxlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUudXNlcklucHV0LnByZXZp
b3VzQ29udGVudC5jb250ZXh0Lm1vdmVEaXJlY3Rpb24pOgogICAgKFdlYkluc3BlY3Rvci5TdHls
ZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlLmVsZW1lbnQudXNlcklucHV0LnByZXZpb3Vz
Q29udGVudC5jb250ZXh0Lm1vdmVEaXJlY3Rpb24ubmV3VGFyZ2V0KToKICAgIChXZWJJbnNwZWN0
b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZS5zdHlsZVRleHQudXBkYXRlSW50
ZXJmYWNlLm1ham9yQ2hhbmdlLmlzUmV2ZXJ0LnVzZXJDYWxsYmFjay5vcmlnaW5hbFByb3BlcnR5
VGV4dCk6CiAgICAKICAgIExheW91dFRlc3RzOgogICAgCiAgICAqIGluc3BlY3Rvci9zdHlsZXMv
Y29tbWl0LXdpdGgtc2VsZWN0aW9uLWNoYW5nZS1leHBlY3RlZC50eHQ6IEFkZGVkLgogICAgKiBp
bnNwZWN0b3Ivc3R5bGVzL2NvbW1pdC13aXRoLXNlbGVjdGlvbi1jaGFuZ2UuaHRtbDogQWRkZWQu
CgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IDIwMTViOWQuLjkxNjkxZGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0w
Ny0xNCAgQWxleGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFdlYiBJbnNwZWN0b3I6IEZvY3VzaW5nIG9uIGFub3RoZXIgbm9kZSB3aGlsZSBlZGl0aW5nIENT
UyBwcm9wZXJ0eSBkb2VzIG5vdCB1cGRhdGUgc3R5bGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NDI4MworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL3N0eWxlcy9jb21taXQtd2l0aC1z
ZWxlY3Rpb24tY2hhbmdlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9y
L3N0eWxlcy9jb21taXQtd2l0aC1zZWxlY3Rpb24tY2hhbmdlLmh0bWw6IEFkZGVkLgorCiAyMDEx
LTA3LTEyICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAogICAgICAgICBbUXRdIE5S
V1Qgc2hvdWxkIHBpY2sgdXAgdGhlIHJpZ2h0IGh0dHBkIGNvbmZpZyBmaWxlCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL2NvbW1pdC13aXRoLXNlbGVjdGlvbi1jaGFu
Z2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9jb21taXQtd2l0
aC1zZWxlY3Rpb24tY2hhbmdlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRl
eCAwMDAwMDAwLi45MjFmNzcyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3N0eWxlcy9jb21taXQtd2l0aC1zZWxlY3Rpb24tY2hhbmdlLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDI1IEBACitUZXN0cyB0aGF0IGNvbW1pdHRpbmcgYSBDU1MgcHJvcGVydHkgZWRpdCBi
eSBzZWxlY3RpbmcgYW5vdGhlciBlbGVtZW50IHVwZGF0ZXMgdGhlIFN0eWxlcyBwYW5lLiBCdWcg
NjQyODMuCisKK1RleHQKK0JlZm9yZSBlZGl0OgorW2V4cGFuZGVkXSBlbGVtZW50LnN0eWxlIHsg
KCkKK2ZvbnQtc2l6ZTogMTJweDsKKworPT09PT09PT0gTWF0Y2hlZCBDU1MgUnVsZXMgPT09PT09
PT0KK1tleHBhbmRlZF0gZGl2IHsgKHVzZXIgYWdlbnQgc3R5bGVzaGVldCkKK2Rpc3BsYXk6IGJs
b2NrOworCisKK0FmdGVyIHNlbGVjdGlvbiBjaGFuZ2U6CitbZXhwYW5kZWRdIGVsZW1lbnQuc3R5
bGUgeyAoKQorCis9PT09PT09PSBNYXRjaGVkIENTUyBSdWxlcyA9PT09PT09PQorW2V4cGFuZGVk
XSBwIHsgKHVzZXIgYWdlbnQgc3R5bGVzaGVldCkKK2Rpc3BsYXk6IGJsb2NrOworLXdlYmtpdC1t
YXJnaW4tYmVmb3JlOiAxZW07Cistd2Via2l0LW1hcmdpbi1hZnRlcjogMWVtOworLXdlYmtpdC1t
YXJnaW4tc3RhcnQ6IDBweDsKKy13ZWJraXQtbWFyZ2luLWVuZDogMHB4OworCisKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9jb21taXQtd2l0aC1zZWxlY3Rpb24t
Y2hhbmdlLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL2NvbW1pdC13aXRoLXNl
bGVjdGlvbi1jaGFuZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi43
NGM0ODJmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9j
b21taXQtd2l0aC1zZWxlY3Rpb24tY2hhbmdlLmh0bWwKQEAgLTAsMCArMSw1NiBAQAorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0
b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvZWxlbWVudHMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitmdW5jdGlvbiB0
ZXN0KCkKK3sKKyAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJlbGVtZW50cyIpOworICAgIElu
c3BlY3RvclRlc3Quc2VsZWN0Tm9kZUFuZFdhaXRGb3JTdHlsZXMoImluc3BlY3RlZCIsIHN0ZXAx
KTsKKworICAgIHZhciB0cmVlRWxlbWVudDsKKyAgICB2YXIgc2VjdGlvbjsKKworICAgIGZ1bmN0
aW9uIHN0ZXAxKCkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJCZWZv
cmUgZWRpdDoiKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wU2VsZWN0ZWRFbGVtZW50U3R5
bGVzKHRydWUpOworICAgICAgICBzZWN0aW9uID0gV2ViSW5zcGVjdG9yLnBhbmVscy5lbGVtZW50
cy5zaWRlYmFyUGFuZXMuc3R5bGVzLnNlY3Rpb25zWzBdWzFdOworICAgICAgICBzZWN0aW9uLmV4
cGFuZCgpOworCisgICAgICAgIC8vIENyZWF0ZSBhIHByb3BlcnR5LgorICAgICAgICB0cmVlRWxl
bWVudCA9IHNlY3Rpb24uYWRkTmV3QmxhbmtQcm9wZXJ0eSgpOworICAgICAgICB0cmVlRWxlbWVu
dC5zdGFydEVkaXRpbmcoKTsKKyAgICAgICAgdHJlZUVsZW1lbnQubmFtZUVsZW1lbnQudGV4dENv
bnRlbnQgPSAibWFyZ2luLWxlZnQiOworICAgICAgICB0cmVlRWxlbWVudC5uYW1lRWxlbWVudC5k
aXNwYXRjaEV2ZW50KEluc3BlY3RvclRlc3QuY3JlYXRlS2V5RXZlbnQoIkVudGVyIikpOworCisg
ICAgICAgIHRyZWVFbGVtZW50LnZhbHVlRWxlbWVudC50ZXh0Q29udGVudCA9ICIxcHgiOworICAg
ICAgICB0cmVlRWxlbWVudC52YWx1ZUVsZW1lbnQuZmlyc3RDaGlsZC5zZWxlY3QoKTsKKworICAg
ICAgICAvLyBDb21taXQgYnkgc2VsZWN0aW5nIGFub3RoZXIgZWxlbWVudC4KKyAgICAgICAgSW5z
cGVjdG9yVGVzdC5zZWxlY3ROb2RlQW5kV2FpdEZvclN0eWxlcygib3RoZXIiKTsKKyAgICAgICAg
SW5zcGVjdG9yVGVzdC5ydW5BZnRlclBlbmRpbmdEaXNwYXRjaGVzKHN0ZXAyKTsKKyAgICB9CisK
KyAgICBmdW5jdGlvbiBzdGVwMigpCisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJl
c3VsdCgiQWZ0ZXIgc2VsZWN0aW9uIGNoYW5nZToiKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5k
dW1wU2VsZWN0ZWRFbGVtZW50U3R5bGVzKHRydWUpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmNv
bXBsZXRlVGVzdCgpOworICAgIH0KK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5IG9u
bG9hZD0icnVuVGVzdCgpIj4KKzxwPgorVGVzdHMgdGhhdCBjb21taXR0aW5nIGEgQ1NTIHByb3Bl
cnR5IGVkaXQgYnkgc2VsZWN0aW5nIGFub3RoZXIgZWxlbWVudCB1cGRhdGVzIHRoZSBTdHlsZXMg
cGFuZS4gQnVnIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02NDI4MyI+NjQyODM8L2E+LgorPC9wPgorCis8ZGl2IGlkPSJpbnNwZWN0ZWQiIHN0eWxlPSJm
b250LXNpemU6IDEycHgiPlRleHQ8L2Rpdj4KKzxwIGlkPSJvdGhlciI+PC9kaXY+CisKKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmMDQ1MzhlLi40OTljYmU2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjEgQEAKKzIwMTEtMDctMTQgIEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92QGNo
cm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBGb2N1c2luZyBvbiBhbm90aGVy
IG5vZGUgd2hpbGUgZWRpdGluZyBDU1MgcHJvcGVydHkgZG9lcyBub3QgdXBkYXRlIHN0eWxlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQyODMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBpbnNw
ZWN0b3Ivc3R5bGVzL2NvbW1pdC13aXRoLXNlbGVjdGlvbi1jaGFuZ2UuaHRtbAorCisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGRPYmplY3RGb3JSdWxlKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlN0eWxlUHJvcGVydGllc1NlY3Rpb24ucHJvdG90eXBlLnVwZGF0ZSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZS51c2VySW5w
dXQucHJldmlvdXNDb250ZW50LmNvbnRleHQubW92ZURpcmVjdGlvbik6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZS5lbGVtZW50LnVzZXJJ
bnB1dC5wcmV2aW91c0NvbnRlbnQuY29udGV4dC5tb3ZlRGlyZWN0aW9uLm5ld1RhcmdldCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZS5z
dHlsZVRleHQudXBkYXRlSW50ZXJmYWNlLm1ham9yQ2hhbmdlLmlzUmV2ZXJ0LnVzZXJDYWxsYmFj
ay5vcmlnaW5hbFByb3BlcnR5VGV4dCk6CisKIDIwMTEtMDctMTEgIFplbmcgSHVpcWluZyAgPGh1
aXFpbmcuemVuZ0BpbnRlbC5jb20+CiAKICAgICAgICAgT3B0aW1pemUgSFRNTElucHV0RWxlbWVu
dDo6dXBkYXRlQ2hlY2tlZFJhZGlvQnV0dG9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCmluZGV4IDQ1ODkwMDQuLmUxZjcxYjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKQEAg
LTcwMCw3ICs3MDAsNyBAQCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gSW5zcGVjdG9yU3R5
bGVTaGVldDo6YnVpbGRPYmplY3RGb3JSdWxlKENTU1N0eWxlUnVsZQogCiAgICAgUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4gcmVzdWx0ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICBy
ZXN1bHQtPnNldFN0cmluZygic2VsZWN0b3JUZXh0IiwgcnVsZS0+c2VsZWN0b3JUZXh0KCkpOwot
ICAgIC8vICJzb3VyY2VVUkwiIGlzIHByZXNlbnQgb25seSBmb3IgcmVndWxhciBydWxlcywgb3Ro
ZXJ3aXNlICJvcmlnaW4iIHNob3VsZCBiZSB1c2VkIGluIHRoZSBmcm9udGVuZC4KKyAgICAvLyAi
c291cmNlVVJMIiBpcyBwcmVzZW50IG9ubHkgZm9yIHJlZ3VsYXIgYW5kIGluc3BlY3Rvci1tYWRl
IHJ1bGVzLCBvdGhlcndpc2UgIm9yaWdpbiIgc2hvdWxkIGJlIHVzZWQgaW4gdGhlIGZyb250ZW5k
LgogICAgIGlmICghbV9vcmlnaW4ubGVuZ3RoKCkpCiAgICAgICAgIHJlc3VsdC0+c2V0U3RyaW5n
KCJzb3VyY2VVUkwiLCBmaW5hbFVSTCgpKTsKICAgICByZXN1bHQtPnNldE51bWJlcigic291cmNl
TGluZSIsIHJ1bGUtPnNvdXJjZUxpbmUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qcwppbmRleCBkNjliMzdlLi42
YjFlZWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0
eWxlc1NpZGViYXJQYW5lLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvU3R5bGVzU2lkZWJhclBhbmUuanMKQEAgLTg5NSw3ICs4OTUsNyBAQCBXZWJJbnNwZWN0b3Iu
U3R5bGVQcm9wZXJ0aWVzU2VjdGlvbi5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiBjdXJT
ZWN0aW9uOwogICAgIH0sCiAKLSAgICB1cGRhdGU6IGZ1bmN0aW9uKGZ1bGwpCisgICAgdXBkYXRl
OiBmdW5jdGlvbihmdWxsLCBjYWxsYmFjaykKICAgICB7CiAgICAgICAgIGlmIChmdWxsKSB7CiAg
ICAgICAgICAgICB0aGlzLnByb3BlcnRpZXNUcmVlT3V0bGluZS5yZW1vdmVDaGlsZHJlbigpOwpA
QCAtOTA3LDcgKzkwNyw4IEBAIFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnRpZXNTZWN0aW9uLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICBjaGlsZCA9IGNoaWxkLnRyYXZlcnNlTmV4dFRy
ZWVFbGVtZW50KGZhbHNlLCBudWxsLCB0cnVlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQot
ICAgICAgICB0aGlzLmFmdGVyVXBkYXRlKCk7CisgICAgICAgIGlmIChjYWxsYmFjaykKKyAgICAg
ICAgICAgIGNhbGxiYWNrKCk7CiAgICAgfSwKIAogICAgIGFmdGVyVXBkYXRlOiBmdW5jdGlvbigp
CkBAIC0xNTgxLDE2ICsxNTgyLDE5IEBAIFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnR5VHJlZUVs
ZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLnRvb2x0aXAgPSB0aGlzLnByb3BlcnR5
LnByb3BlcnR5VGV4dDsKICAgICB9LAogCi0gICAgdXBkYXRlQWxsOiBmdW5jdGlvbih1cGRhdGVB
bGxSdWxlcykKKyAgICB1cGRhdGVBbGw6IGZ1bmN0aW9uKHVwZGF0ZUFsbFJ1bGVzLCBjYWxsYmFj
aykKICAgICB7CiAgICAgICAgIGlmICghdGhpcy50cmVlT3V0bGluZSkKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgaWYgKHVwZGF0ZUFsbFJ1bGVzICYmIHRoaXMudHJlZU91dGxpbmUuc2Vj
dGlvbiAmJiB0aGlzLnRyZWVPdXRsaW5lLnNlY3Rpb24ucGFuZSkKLSAgICAgICAgICAgIHRoaXMu
dHJlZU91dGxpbmUuc2VjdGlvbi5wYW5lLnVwZGF0ZShudWxsLCB0aGlzLnRyZWVPdXRsaW5lLnNl
Y3Rpb24pOworICAgICAgICAgICAgdGhpcy50cmVlT3V0bGluZS5zZWN0aW9uLnBhbmUudXBkYXRl
KG51bGwsIHRoaXMudHJlZU91dGxpbmUuc2VjdGlvbiwgbnVsbCwgY2FsbGJhY2spOwogICAgICAg
ICBlbHNlIGlmICh0aGlzLnRyZWVPdXRsaW5lLnNlY3Rpb24pCi0gICAgICAgICAgICB0aGlzLnRy
ZWVPdXRsaW5lLnNlY3Rpb24udXBkYXRlKHRydWUpOwotICAgICAgICBlbHNlCisgICAgICAgICAg
ICB0aGlzLnRyZWVPdXRsaW5lLnNlY3Rpb24udXBkYXRlKHRydWUsIGNhbGxiYWNrKTsKKyAgICAg
ICAgZWxzZSB7CiAgICAgICAgICAgICB0aGlzLnVwZGF0ZVRpdGxlKCk7IC8vIEZJWE1FOiB0aGlz
IHdpbGwgbm90IHNob3cgbmV3IHByb3BlcnRpZXMuIEJ1dCB3ZSBkb24ndCBoaXQgdGhpcyBjYXNl
IHlldC4KKyAgICAgICAgICAgIGlmIChjYWxsYmFjaykKKyAgICAgICAgICAgICAgICBjYWxsYmFj
aygpOworICAgICAgICB9CiAgICAgfSwKIAogICAgIHRvZ2dsZUVuYWJsZWQ6IGZ1bmN0aW9uKGV2
ZW50KQpAQCAtMTg5Myw3ICsxODk3LDcgQEAgV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydHlUcmVl
RWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0sCiAKLSAg
ICBlZGl0aW5nRW5kZWQ6IGZ1bmN0aW9uKGNvbnRleHQpCisgICAgZWRpdGluZ0VuZGVkOiBmdW5j
dGlvbihjb250ZXh0LCBuZXdUYXJnZXQpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fYXBwbHlG
cmVlRmxvd1N0eWxlVGV4dEVkaXRUaW1lcikKICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlz
Ll9hcHBseUZyZWVGbG93U3R5bGVUZXh0RWRpdFRpbWVyKTsKQEAgLTE5MDcsNyArMTkxMSw4IEBA
IFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAg
ICAgICBpZiAoZWRpdGVkRWxlbWVudC5wYXJlbnRFbGVtZW50KQogICAgICAgICAgICAgZWRpdGVk
RWxlbWVudC5wYXJlbnRFbGVtZW50LnJlbW92ZVN0eWxlQ2xhc3MoImNoaWxkLWVkaXRpbmciKTsK
IAotICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLmVsZW1lbnRzLmVuZEVkaXRpbmdTdHlsZSgp
OworICAgICAgICBpZiAoIW5ld1RhcmdldCB8fCBuZXdUYXJnZXQudHlwZSA9PT0gInNlbGVjdG9y
IikKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMuZWxlbWVudHMuZW5kRWRpdGluZ1N0
eWxlKCk7CiAgICAgfSwKIAogICAgIGVkaXRpbmdDYW5jZWxsZWQ6IGZ1bmN0aW9uKGVsZW1lbnQs
IGNvbnRleHQpCkBAIC0xOTE4LDExOSArMTkyMywxNDMgQEAgV2ViSW5zcGVjdG9yLlN0eWxlUHJv
cGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuZWRpdGluZ0VuZGVk
KGNvbnRleHQpOwogICAgIH0sCiAKLSAgICBfcmV2ZXJ0U3R5bGVVcG9uRWRpdGluZ0NhbmNlbGVk
OiBmdW5jdGlvbihvcmlnaW5hbFByb3BlcnR5VGV4dCkKKyAgICBfcmV2ZXJ0U3R5bGVVcG9uRWRp
dGluZ0NhbmNlbGVkOiBmdW5jdGlvbihvcmlnaW5hbFByb3BlcnR5VGV4dCwgY2FsbGJhY2spCiAg
ICAgewogICAgICAgICBpZiAodHlwZW9mIG9yaWdpbmFsUHJvcGVydHlUZXh0ID09PSAic3RyaW5n
IikgewogICAgICAgICAgICAgZGVsZXRlIHRoaXMub3JpZ2luYWxQcm9wZXJ0eVRleHQ7Ci0gICAg
ICAgICAgICB0aGlzLmFwcGx5U3R5bGVUZXh0KG9yaWdpbmFsUHJvcGVydHlUZXh0LCB0cnVlLCBm
YWxzZSwgdHJ1ZSk7CisgICAgICAgICAgICB0aGlzLmFwcGx5U3R5bGVUZXh0KG9yaWdpbmFsUHJv
cGVydHlUZXh0LCB0cnVlLCBmYWxzZSwgdHJ1ZSwgY2FsbGJhY2spOwogICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgaWYgKHRoaXMuX25ld1Byb3BlcnR5KQogICAgICAgICAgICAgICAgIHRo
aXMudHJlZU91dGxpbmUucmVtb3ZlQ2hpbGQodGhpcyk7CiAgICAgICAgICAgICBlbHNlCiAgICAg
ICAgICAgICAgICAgdGhpcy51cGRhdGVUaXRsZSgpOworICAgICAgICAgICAgaWYgKGNhbGxiYWNr
KQorICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7CiAgICAgICAgIH0KLSAgICB9LCAKKyAgICB9
LAogCi0gICAgZWRpdGluZ0NvbW1pdHRlZDogZnVuY3Rpb24oZWxlbWVudCwgdXNlcklucHV0LCBw
cmV2aW91c0NvbnRlbnQsIGNvbnRleHQsIG1vdmVEaXJlY3Rpb24pCisgICAgLy8gUmV0dXJuIG9i
amVjdDoKKyAgICAvLyB8dHlwZXw6CisgICAgLy8gICAic2VsZWN0b3IiIC0gZWRpdCBzZWxlY3Rv
ciAofHRhcmdldHw6IHNlY3Rpb24gd2hvc2Ugc2VsZWN0b3IgdG8gZWRpdCBuZXh0KS4KKyAgICAv
LyAgICJwcm9wZXJ0eSIgLSBlZGl0IHByb3BlcnR5IGluIHRoZSBzYW1lIHNlY3Rpb24gKHx0YXJn
ZXR8OiB0cmVlRWxlbWVudCB0byBlZGl0LAorICAgIC8vICAgICAgICAgICAgICAgIHx0YXJnZXRJ
bmRleHw6IHByb3BlcnR5IGluZGV4IGluIHRoZSBuZXcgc3R5bGUgdG8gc3RhcnQgZWRpdGluZyAo
YSBmYWxsYmFjayBpZiB8dGFyZ2V0SW5kZXh8IGdldHMgZGV0YWNoZWQpLCB8c3VidGFyZ2V0fDog
Im5hbWUiIHwgInZhbHVlIikuCisgICAgLy8gICAibmV3UHJvcGVydHkiIC0gYWRkIGEgYmxhbmsg
cHJvcGVydHkgKHx0YXJnZXR8OiBzZWN0aW9uIHRvIGFkZCBibGFuayBwcm9wZXJ0eSB0bykuCisg
ICAgX25ld0VkaXRvclRhcmdldDogZnVuY3Rpb24odXNlcklucHV0LCBwcmV2aW91c0NvbnRlbnQs
IGNvbnRleHQsIG1vdmVEaXJlY3Rpb24pCiAgICAgewotICAgICAgICB0aGlzLl9yZW1vdmVQcm9t
cHQoKTsKLSAgICAgICAgdGhpcy5lZGl0aW5nRW5kZWQoY29udGV4dCk7Ci0gICAgICAgIHZhciBp
c0VkaXRpbmdOYW1lID0gY29udGV4dC5pc0VkaXRpbmdOYW1lOwotCi0gICAgICAgIC8vIERldGVy
bWluZSB3aGVyZSB0byBtb3ZlIHRvIGJlZm9yZSBtYWtpbmcgY2hhbmdlcworICAgICAgICAvLyBE
ZXRlcm1pbmUgd2hlcmUgdG8gbW92ZSB0byBiZWZvcmUgbWFraW5nIGNoYW5nZXMuCiAgICAgICAg
IHZhciBjcmVhdGVOZXdQcm9wZXJ0eSwgbW92ZVRvUHJvcGVydHlOYW1lLCBtb3ZlVG9TZWxlY3Rv
cjsKKyAgICAgICAgdmFyIGlzRWRpdGluZ05hbWUgPSBjb250ZXh0LmlzRWRpdGluZ05hbWU7CiAg
ICAgICAgIHZhciBtb3ZlVG8gPSB0aGlzOwotICAgICAgICB2YXIgbW92ZVRvT3RoZXIgPSAoaXNF
ZGl0aW5nTmFtZSBeIChtb3ZlRGlyZWN0aW9uID09PSAiZm9yd2FyZCIpKTsKKyAgICAgICAgdmFy
IG1vdmVUb090aGVyID0gaXNFZGl0aW5nTmFtZSBeIChtb3ZlRGlyZWN0aW9uID09PSAiZm9yd2Fy
ZCIpOworICAgICAgICB2YXIgYmxhbmtJbnB1dCA9IC9eXHMqJC8udGVzdCh1c2VySW5wdXQpOwog
ICAgICAgICB2YXIgYWJhbmRvbk5ld1Byb3BlcnR5ID0gdGhpcy5fbmV3UHJvcGVydHkgJiYgIXVz
ZXJJbnB1dCAmJiAobW92ZVRvT3RoZXIgfHwgaXNFZGl0aW5nTmFtZSk7Ci0gICAgICAgIGlmICht
b3ZlRGlyZWN0aW9uID09PSAiZm9yd2FyZCIgJiYgIWlzRWRpdGluZ05hbWUgfHwgbW92ZURpcmVj
dGlvbiA9PT0gImJhY2t3YXJkIiAmJiBpc0VkaXRpbmdOYW1lKSB7CisgICAgICAgIHZhciBjdXJy
ZW50U2VjdGlvbiA9IHRoaXMudHJlZU91dGxpbmUuc2VjdGlvbjsKKworICAgICAgICBmdW5jdGlv
biBzZWxlY3RvckFmdGVyRW1wdHlSZXN1bHQoKQorICAgICAgICB7CisgICAgICAgICAgICAvLyBS
ZXR1cm5zIGFuIGVkaXRvciB0YXJnZXQgcmVzdWx0IHdoZW4gYSBibGFuay9lbXB0aWVkIHByb3Bl
cnR5IGhhcyBiZWVuIGxlZnQgaW4gZmF2b3Igb2YgYSBzZWxlY3Rvci4KKworICAgICAgICAgICAg
dmFyIHNlY3Rpb25Ub0VkaXQgPSBtb3ZlRGlyZWN0aW9uID09PSAiYmFja3dhcmQiID8gY3VycmVu
dFNlY3Rpb24gOiBjdXJyZW50U2VjdGlvbi5uZXh0RWRpdGFibGVTaWJsaW5nKCk7CisgICAgICAg
ICAgICBpZiAoc2VjdGlvblRvRWRpdCAmJiBzZWN0aW9uVG9FZGl0LnJ1bGUpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIHsgdHlwZTogInNlbGVjdG9yIiwgdGFyZ2V0OiBzZWN0aW9uVG9FZGl0IH07
CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghbW92
ZURpcmVjdGlvbikKKyAgICAgICAgICAgIHJldHVybiBudWxsOyAvLyBUZXJtaW5hdGUgZWRpdGlu
ZyBzZXNzaW9uLgorCisgICAgICAgIGlmIChtb3ZlVG9PdGhlcikgewogICAgICAgICAgICAgZG8g
ewotICAgICAgICAgICAgICAgIG1vdmVUbyA9IChtb3ZlRGlyZWN0aW9uID09PSAiZm9yd2FyZCIg
PyBtb3ZlVG8ubmV4dFNpYmxpbmcgOiBtb3ZlVG8ucHJldmlvdXNTaWJsaW5nKTsKKyAgICAgICAg
ICAgICAgICBtb3ZlVG8gPSBtb3ZlRGlyZWN0aW9uID09PSAiZm9yd2FyZCIgPyBtb3ZlVG8ubmV4
dFNpYmxpbmcgOiBtb3ZlVG8ucHJldmlvdXNTaWJsaW5nOwogICAgICAgICAgICAgfSB3aGlsZSht
b3ZlVG8gJiYgIW1vdmVUby5zZWxlY3RhYmxlKTsKIAotICAgICAgICAgICBpZiAobW92ZVRvKQor
ICAgICAgICAgICAgaWYgKG1vdmVUbykgewogICAgICAgICAgICAgICAgIG1vdmVUb1Byb3BlcnR5
TmFtZSA9IG1vdmVUby5uYW1lOwotICAgICAgICAgICAgZWxzZSBpZiAobW92ZURpcmVjdGlvbiA9
PT0gImZvcndhcmQiICYmICghdGhpcy5fbmV3UHJvcGVydHkgfHwgdXNlcklucHV0KSkKLSAgICAg
ICAgICAgICAgICBjcmVhdGVOZXdQcm9wZXJ0eSA9IHRydWU7Ci0gICAgICAgICAgICBlbHNlIGlm
IChtb3ZlRGlyZWN0aW9uID09PSAiYmFja3dhcmQiICYmIHRoaXMudHJlZU91dGxpbmUuc2VjdGlv
bi5ydWxlKQotICAgICAgICAgICAgICAgIG1vdmVUb1NlbGVjdG9yID0gdHJ1ZTsKLSAgICAgICAg
fQorICAgICAgICAgICAgICAgIHZhciBtb3ZlVG9JbmRleCA9IHRoaXMudHJlZU91dGxpbmUgPyB0
aGlzLnRyZWVPdXRsaW5lLmNoaWxkcmVuLmluZGV4T2YobW92ZVRvKSA6IC0xOworICAgICAgICAg
ICAgICAgIGlmIChtb3ZlVG9JbmRleCAhPT0gLTEpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KGJsYW5rSW5wdXQpCisgICAgICAgICAgICAgICAgICAgICAgICAtLW1vdmVUb0luZGV4OyAvLyBU
aGUgY3VycmVudCBwcm9wZXJ0eSB3aWxsIGdldCByZW1vdmVkLCBzbyBhZGp1c3QgdGhlIG5leHQg
ZWRpdGFibGUgcHJvcGVydHkgaW5kZXggaWYgcG9zc2libGUuCisgICAgICAgICAgICAgICAgICAg
IHZhciBzdWJ0YXJnZXRJc05hbWUgPSBibGFua0lucHV0IHx8ICFpc0VkaXRpbmdOYW1lOworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4geyB0eXBlOiAicHJvcGVydHkiLCB0YXJnZXQ6IG1vdmVU
bywgdGFyZ2V0SW5kZXg6IG1vdmVUb0luZGV4LCBzdWJ0YXJnZXQ6IHN1YnRhcmdldElzTmFtZSA/
ICJuYW1lIiA6ICJ2YWx1ZSIsIHRyZWVPdXRsaW5lOiB0aGlzLnRyZWVPdXRsaW5lIH07CisgICAg
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7IC8vIFVua25vd24g
dHJlZUVsZW1lbnQgdG8gZWRpdCBuZXh0LgorICAgICAgICAgICAgfSBlbHNlIGlmIChtb3ZlRGly
ZWN0aW9uID09PSAiZm9yd2FyZCIgJiYgKCF0aGlzLl9uZXdQcm9wZXJ0eSB8fCB1c2VySW5wdXQp
KQorICAgICAgICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJuZXdQcm9wZXJ0eSIsIHRhcmdldDog
Y3VycmVudFNlY3Rpb24gfTsKKyAgICAgICAgICAgIGVsc2UgaWYgKG1vdmVEaXJlY3Rpb24gPT09
ICJiYWNrd2FyZCIgJiYgY3VycmVudFNlY3Rpb24ucnVsZSkKKyAgICAgICAgICAgICAgICByZXR1
cm4geyB0eXBlOiAic2VsZWN0b3IiLCB0YXJnZXQ6IGN1cnJlbnRTZWN0aW9uIH07CisgICAgICAg
IH0gZWxzZSBpZiAodGhpcy50cmVlT3V0bGluZSkgeworICAgICAgICAgICAgLy8gRWRpdGluZyBs
YXN0IHByb3BlcnR5IChhIG5ld1Byb3BlcnR5IG9yIGEgcmVndWxhciBvbmUpLgorICAgICAgICAg
ICAgdmFyIHRoaXNJbmRleCA9IHRoaXMudHJlZU91dGxpbmUuY2hpbGRyZW4uaW5kZXhPZih0aGlz
KTsKKyAgICAgICAgICAgIGlmIChibGFua0lucHV0ICYmIHRoaXNJbmRleCA9PT0gdGhpcy50cmVl
T3V0bGluZS5jaGlsZHJlbi5sZW5ndGggLSAxKSAvLyBCbGFuayBpbnB1dCBvbiB0aGUgbGFzdCBw
cm9wZXJ0eS4KKyAgICAgICAgICAgICAgICByZXR1cm4gYWJhbmRvbk5ld1Byb3BlcnR5ID8gc2Vs
ZWN0b3JBZnRlckVtcHR5UmVzdWx0KCkgOiB7IHR5cGU6ICJuZXdQcm9wZXJ0eSIsIHRhcmdldDog
Y3VycmVudFNlY3Rpb24gfTsKKworICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogInByb3BlcnR5
IiwgdGFyZ2V0OiB0aGlzLCB0YXJnZXRJbmRleDogdGhpc0luZGV4LCBzdWJ0YXJnZXQ6IGJsYW5r
SW5wdXQgfHwgIWlzRWRpdGluZ05hbWUgPyAibmFtZSIgOiAidmFsdWUiLCB0cmVlT3V0bGluZTog
dGhpcy50cmVlT3V0bGluZSB9OworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHJldHVybiBu
dWxsOyAvLyBUaGlzIHRyZWVFbGVtZW50IGlzIGRldGFjaGVkIGZyb20gdHJlZU91dGxpbmUuCisK
KyAgICAgICAgcmV0dXJuIGFiYW5kb25OZXdQcm9wZXJ0eSA/IHNlbGVjdG9yQWZ0ZXJFbXB0eVJl
c3VsdCgpIDogbnVsbDsKKyAgICB9LAorCisgICAgZWRpdGluZ0NvbW1pdHRlZDogZnVuY3Rpb24o
ZWxlbWVudCwgdXNlcklucHV0LCBwcmV2aW91c0NvbnRlbnQsIGNvbnRleHQsIG1vdmVEaXJlY3Rp
b24pCisgICAgeworICAgICAgICB0aGlzLl9yZW1vdmVQcm9tcHQoKTsKKyAgICAgICAgdmFyIG5l
d1RhcmdldCA9IHRoaXMuX25ld0VkaXRvclRhcmdldCh1c2VySW5wdXQsIHByZXZpb3VzQ29udGVu
dCwgY29udGV4dCwgbW92ZURpcmVjdGlvbik7CisgICAgICAgIHRoaXMuZWRpdGluZ0VuZGVkKGNv
bnRleHQsICEhbmV3VGFyZ2V0KTsKIAogICAgICAgICAvLyBNYWtlIHRoZSBDaGFuZ2VzIGFuZCB0
cmlnZ2VyIHRoZSBtb3ZlVG9OZXh0Q2FsbGJhY2sgYWZ0ZXIgdXBkYXRpbmcuCisgICAgICAgIHZh
ciBpc0VkaXRpbmdOYW1lID0gY29udGV4dC5pc0VkaXRpbmdOYW1lOwogICAgICAgICB2YXIgYmxh
bmtJbnB1dCA9IC9eXHMqJC8udGVzdCh1c2VySW5wdXQpOwogICAgICAgICB2YXIgaXNEYXRhUGFz
dGVkID0gIm9yaWdpbmFsTmFtZSIgaW4gY29udGV4dDsKICAgICAgICAgdmFyIGlzRGlydHlWaWFQ
YXN0ZSA9IGlzRGF0YVBhc3RlZCAmJiAodGhpcy5uYW1lRWxlbWVudC50ZXh0Q29udGVudCAhPT0g
Y29udGV4dC5vcmlnaW5hbE5hbWUgfHwgdGhpcy52YWx1ZUVsZW1lbnQudGV4dENvbnRlbnQgIT09
IGNvbnRleHQub3JpZ2luYWxWYWx1ZSk7CisgICAgICAgIHZhciBtb3ZlVG9PdGhlciA9IG1vdmVE
aXJlY3Rpb24gJiYgKGlzRWRpdGluZ05hbWUgXiAobW92ZURpcmVjdGlvbiA9PT0gImZvcndhcmQi
KSk7CiAgICAgICAgIHZhciBzaG91bGRDb21taXROZXdQcm9wZXJ0eSA9IHRoaXMuX25ld1Byb3Bl
cnR5ICYmIChtb3ZlVG9PdGhlciB8fCAoIW1vdmVEaXJlY3Rpb24gJiYgIWlzRWRpdGluZ05hbWUp
IHx8IChpc0VkaXRpbmdOYW1lICYmIGJsYW5rSW5wdXQpKTsKKwogICAgICAgICBpZiAoKCh1c2Vy
SW5wdXQgIT09IHByZXZpb3VzQ29udGVudCB8fCBpc0RpcnR5VmlhUGFzdGUpICYmICF0aGlzLl9u
ZXdQcm9wZXJ0eSkgfHwgc2hvdWxkQ29tbWl0TmV3UHJvcGVydHkpIHsKLSAgICAgICAgICAgIFdl
Ykluc3BlY3Rvci5wYW5lbHMuZWxlbWVudHMuc3RhcnRFZGl0aW5nU3R5bGUoKTsKLSAgICAgICAg
ICAgIHRoaXMudHJlZU91dGxpbmUuc2VjdGlvbi5fYWZ0ZXJVcGRhdGUgPSBtb3ZlVG9OZXh0Q2Fs
bGJhY2suYmluZCh0aGlzLCB0aGlzLl9uZXdQcm9wZXJ0eSwgIWJsYW5rSW5wdXQsIHRoaXMudHJl
ZU91dGxpbmUuc2VjdGlvbik7CiAgICAgICAgICAgICB2YXIgcHJvcGVydHlUZXh0OwogICAgICAg
ICAgICAgaWYgKGJsYW5rSW5wdXQgfHwgKHRoaXMuX25ld1Byb3BlcnR5ICYmIC9eXHMqJC8udGVz
dCh0aGlzLnZhbHVlRWxlbWVudC50ZXh0Q29udGVudCkpKQogICAgICAgICAgICAgICAgIHByb3Bl
cnR5VGV4dCA9ICIiOwogICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKGlz
RWRpdGluZ05hbWUpCisgICAgICAgICAgICAgICAgaWYgKGNvbnRleHQuaXNFZGl0aW5nTmFtZSkK
ICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlUZXh0ID0gdXNlcklucHV0ICsgIjogIiArIHRo
aXMudmFsdWVFbGVtZW50LnRleHRDb250ZW50OwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgICAgICAgICAgcHJvcGVydHlUZXh0ID0gdGhpcy5uYW1lRWxlbWVudC50ZXh0Q29udGVu
dCArICI6ICIgKyB1c2VySW5wdXQ7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB0aGlzLmFw
cGx5U3R5bGVUZXh0KHByb3BlcnR5VGV4dCwgdHJ1ZSwgdHJ1ZSk7CisgICAgICAgICAgICB0aGlz
LmFwcGx5U3R5bGVUZXh0KHByb3BlcnR5VGV4dCwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIGVkaXRUYXJn
ZXRDYWxsYmFjay5iaW5kKHRoaXMsIG5ld1RhcmdldCkpOwogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgaWYgKCFpc0RhdGFQYXN0ZWQgJiYgIXRoaXMuX25ld1Byb3BlcnR5KQogICAgICAg
ICAgICAgICAgIHRoaXMudXBkYXRlVGl0bGUoKTsKLSAgICAgICAgICAgIG1vdmVUb05leHRDYWxs
YmFjay5jYWxsKHRoaXMsIHRoaXMuX25ld1Byb3BlcnR5LCBmYWxzZSwgdGhpcy50cmVlT3V0bGlu
ZS5zZWN0aW9uKTsKKyAgICAgICAgICAgIGVkaXRUYXJnZXRDYWxsYmFjay5jYWxsKHRoaXMsIG5l
d1RhcmdldCk7CiAgICAgICAgIH0KIAotICAgICAgICB2YXIgbW92ZVRvSW5kZXggPSBtb3ZlVG8g
JiYgdGhpcy50cmVlT3V0bGluZSA/IHRoaXMudHJlZU91dGxpbmUuY2hpbGRyZW4uaW5kZXhPZiht
b3ZlVG8pIDogLTE7Ci0KLSAgICAgICAgLy8gVGhlIENhbGxiYWNrIHRvIHN0YXJ0IGVkaXRpbmcg
dGhlIG5leHQvcHJldmlvdXMgcHJvcGVydHkvc2VsZWN0b3IuCi0gICAgICAgIGZ1bmN0aW9uIG1v
dmVUb05leHRDYWxsYmFjayhhbHJlYWR5TmV3LCB2YWx1ZUNoYW5nZWQsIHNlY3Rpb24pCisgICAg
ICAgIGZ1bmN0aW9uIGVkaXRUYXJnZXRDYWxsYmFjayhuZXdUYXJnZXQpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMuZWxlbWVudHMuZW5kRWRpdGluZ1N0eWxlKCk7
Ci0KLSAgICAgICAgICAgIGlmICghbW92ZURpcmVjdGlvbikKKyAgICAgICAgICAgIGlmICghbmV3
VGFyZ2V0KQogICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgLy8gVXNlciBq
dXN0IHRhYmJlZCB0aHJvdWdoIHdpdGhvdXQgY2hhbmdlcy4KLSAgICAgICAgICAgIGlmIChtb3Zl
VG8gJiYgbW92ZVRvLnBhcmVudCkgewotICAgICAgICAgICAgICAgIG1vdmVUby5zdGFydEVkaXRp
bmcoIWlzRWRpdGluZ05hbWUgPyBtb3ZlVG8ubmFtZUVsZW1lbnQgOiBtb3ZlVG8udmFsdWVFbGVt
ZW50KTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgIC8vIFVzZXIgaGFzIG1hZGUgYSBjaGFuZ2UgdGhlbiB0YWJiZWQsIHdpcGluZyBhbGwgdGhl
IG9yaWdpbmFsIHRyZWVFbGVtZW50cy4KLSAgICAgICAgICAgIC8vIFJlY2FsY3VsYXRlIHRoZSBu
ZXcgdHJlZUVsZW1lbnQgZm9yIHRoZSBzYW1lIHByb3BlcnR5IHdlIHdlcmUgZ29pbmcgdG8gZWRp
dCBuZXh0LgotICAgICAgICAgICAgaWYgKG1vdmVUbyAmJiAhbW92ZVRvLnBhcmVudCkgewotICAg
ICAgICAgICAgICAgIHZhciBwcm9wZXJ0eUVsZW1lbnRzID0gc2VjdGlvbi5wcm9wZXJ0aWVzVHJl
ZU91dGxpbmUuY2hpbGRyZW47Ci0gICAgICAgICAgICAgICAgaWYgKG1vdmVEaXJlY3Rpb24gPT09
ICJmb3J3YXJkIiAmJiBibGFua0lucHV0ICYmICFpc0VkaXRpbmdOYW1lKQotICAgICAgICAgICAg
ICAgICAgICAtLW1vdmVUb0luZGV4OwotICAgICAgICAgICAgICAgIGlmIChtb3ZlVG9JbmRleCA+
PSBwcm9wZXJ0eUVsZW1lbnRzLmxlbmd0aCAmJiAhdGhpcy5fbmV3UHJvcGVydHkpCi0gICAgICAg
ICAgICAgICAgICAgIGNyZWF0ZU5ld1Byb3BlcnR5ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBl
bHNlIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIHRyZWVFbGVtZW50ID0gbW92ZVRvSW5kZXgg
Pj0gMCA/IHByb3BlcnR5RWxlbWVudHNbbW92ZVRvSW5kZXhdIDogbnVsbDsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKHRyZWVFbGVtZW50KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0cmVl
RWxlbWVudC5zdGFydEVkaXRpbmcoIWlzRWRpdGluZ05hbWUgPyB0cmVlRWxlbWVudC5uYW1lRWxl
bWVudCA6IHRyZWVFbGVtZW50LnZhbHVlRWxlbWVudCk7CisgICAgICAgICAgICBzd2l0Y2ggKG5l
d1RhcmdldC50eXBlKSB7CisgICAgICAgICAgICBjYXNlICJzZWxlY3RvciI6CisgICAgICAgICAg
ICAgICAgbmV3VGFyZ2V0LnRhcmdldC5zdGFydEVkaXRpbmdTZWxlY3RvcigpOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAicHJvcGVydHkiOgorICAgICAgICAgICAg
ICAgIHZhciB0cmVlRWxlbWVudCA9IG5ld1RhcmdldC50YXJnZXQ7CisgICAgICAgICAgICAgICAg
dmFyIHN1YnRhcmdldCA9IG5ld1RhcmdldC5zdWJ0YXJnZXQ7CisgICAgICAgICAgICAgICAgdmFy
IHRyZWVPdXRsaW5lID0gbmV3VGFyZ2V0LnRyZWVPdXRsaW5lOworICAgICAgICAgICAgICAgIGlm
ICghdHJlZUVsZW1lbnQudHJlZU91dGxpbmUpIHsKKyAgICAgICAgICAgICAgICAgICAgdHJlZUVs
ZW1lbnQgPSB0cmVlT3V0bGluZS5jaGlsZHJlbltuZXdUYXJnZXQudGFyZ2V0SW5kZXhdOworICAg
ICAgICAgICAgICAgICAgICBpZiAoIXRyZWVFbGVtZW50KSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zb2xlLmVycm9yKCJQcm9wZXJ0eSB0cmVlRWxlbWVudCBub3QgZm91bmQgYXQgaW5k
ZXggJW8iLCBuZXdUYXJnZXQudGFyZ2V0SW5kZXgpOwogICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFhbHJlYWR5TmV3KQotICAg
ICAgICAgICAgICAgICAgICAgICAgbW92ZVRvU2VsZWN0b3IgPSB0cnVlOworICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHRyZWVFbGVtZW50
LnN0YXJ0RWRpdGluZyhzdWJ0YXJnZXQgPT09ICJuYW1lIiA/IHRyZWVFbGVtZW50Lm5hbWVFbGVt
ZW50IDogdHJlZUVsZW1lbnQudmFsdWVFbGVtZW50KTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgIm5ld1Byb3BlcnR5IjoKKyAgICAgICAgICAgICAgICBuZXdUYXJn
ZXQudGFyZ2V0LmFkZE5ld0JsYW5rUHJvcGVydHkoKS5zdGFydEVkaXRpbmcoKTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgY29u
c29sZS5lcnJvcigiVW5rbm93biBwcm9wZXJ0eSBlZGl0b3IgdGFyZ2V0IHR5cGU6ICVvIiwgbmV3
VGFyZ2V0LnR5cGUpOwogICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBDcmVhdGUgYSBu
ZXcgYXR0cmlidXRlIGluIHRoaXMgc2VjdGlvbiAob3IgbW92ZSB0byBuZXh0IGVkaXRhYmxlIHNl
bGVjdG9yIGlmIHBvc3NpYmxlKS4KLSAgICAgICAgICAgIGlmIChjcmVhdGVOZXdQcm9wZXJ0eSkg
ewotICAgICAgICAgICAgICAgIGlmIChhbHJlYWR5TmV3ICYmICF2YWx1ZUNoYW5nZWQgJiYgKGlz
RWRpdGluZ05hbWUgXiAobW92ZURpcmVjdGlvbiA9PT0gImJhY2t3YXJkIikpKQotICAgICAgICAg
ICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgICAgICBzZWN0aW9uLmFkZE5ld0JsYW5r
UHJvcGVydHkoKS5zdGFydEVkaXRpbmcoKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChhYmFuZG9uTmV3UHJvcGVydHkpIHsKLSAgICAg
ICAgICAgICAgICB2YXIgc2VjdGlvblRvRWRpdCA9IG1vdmVEaXJlY3Rpb24gPT09ICJiYWNrd2Fy
ZCIgPyBzZWN0aW9uIDogc2VjdGlvbi5uZXh0RWRpdGFibGVTaWJsaW5nKCk7Ci0gICAgICAgICAg
ICAgICAgaWYgKHNlY3Rpb25Ub0VkaXQgJiYgc2VjdGlvblRvRWRpdC5ydWxlKQotICAgICAgICAg
ICAgICAgICAgICBzZWN0aW9uVG9FZGl0LnN0YXJ0RWRpdGluZ1NlbGVjdG9yKCk7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAobW92ZVRv
U2VsZWN0b3IpCi0gICAgICAgICAgICAgICAgc2VjdGlvbi5zdGFydEVkaXRpbmdTZWxlY3Rvcigp
OwogICAgICAgICB9CiAgICAgfSwKIApAQCAtMjA1MCw3ICsyMDc5LDcgQEAgV2ViSW5zcGVjdG9y
LlN0eWxlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiB0
eXBlb2YgdGhpcy5vcmlnaW5hbFByb3BlcnR5VGV4dCA9PT0gInN0cmluZyI7CiAgICAgfSwKIAot
ICAgIGFwcGx5U3R5bGVUZXh0OiBmdW5jdGlvbihzdHlsZVRleHQsIHVwZGF0ZUludGVyZmFjZSwg
bWFqb3JDaGFuZ2UsIGlzUmV2ZXJ0KQorICAgIGFwcGx5U3R5bGVUZXh0OiBmdW5jdGlvbihzdHls
ZVRleHQsIHVwZGF0ZUludGVyZmFjZSwgbWFqb3JDaGFuZ2UsIGlzUmV2ZXJ0LCB1c2VyQ2FsbGJh
Y2spCiAgICAgewogICAgICAgICAvLyBMZWF2ZSBhIHdheSB0byBjYW5jZWwgZWRpdGluZyBhZnRl
ciBpbmNyZW1lbnRhbCBjaGFuZ2VzLgogICAgICAgICBpZiAoIWlzUmV2ZXJ0ICYmICF1cGRhdGVJ
bnRlcmZhY2UgJiYgIXRoaXMuX2hhc0JlZW5Nb2RpZmllZEluY3JlbWVudGFsbHkoKSkgewpAQCAt
MjA2Niw3ICsyMDk1LDggQEAgV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydHlUcmVlRWxlbWVudC5w
cm90b3R5cGUgPSB7CiAgICAgICAgIGlmICghc3R5bGVUZXh0TGVuZ3RoICYmIHVwZGF0ZUludGVy
ZmFjZSAmJiAhaXNSZXZlcnQgJiYgdGhpcy5fbmV3UHJvcGVydHkgJiYgIXRoaXMuX2hhc0JlZW5N
b2RpZmllZEluY3JlbWVudGFsbHkoKSkgewogICAgICAgICAgICAgLy8gVGhlIHVzZXIgZGVsZXRl
ZCBldmVyeXRoaW5nIGFuZCBuZXZlciBhcHBsaWVkIGEgbmV3IHByb3BlcnR5IHZhbHVlIHZpYSBV
cC9Eb3duIHNjcm9sbGluZywgc28gcmVtb3ZlIHRoZSB0cmVlIGVsZW1lbnQgYW5kIHVwZGF0ZS4K
ICAgICAgICAgICAgIHRoaXMucGFyZW50LnJlbW92ZUNoaWxkKHRoaXMpOwotICAgICAgICAgICAg
c2VjdGlvbi5hZnRlclVwZGF0ZSgpOworICAgICAgICAgICAgaWYgKHVzZXJDYWxsYmFjaykKKyAg
ICAgICAgICAgICAgICB1c2VyQ2FsbGJhY2soKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCkBAIC0yMDc1LDggKzIxMDUsOSBAQCBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRy
ZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGlmICghbmV3U3R5bGUpIHsKICAg
ICAgICAgICAgICAgICBpZiAodXBkYXRlSW50ZXJmYWNlKSB7CiAgICAgICAgICAgICAgICAgICAg
IC8vIEl0IGRpZCBub3QgYXBwbHksIGNhbmNlbCBlZGl0aW5nLgotICAgICAgICAgICAgICAgICAg
ICB0aGlzLl9yZXZlcnRTdHlsZVVwb25FZGl0aW5nQ2FuY2VsZWQob3JpZ2luYWxQcm9wZXJ0eVRl
eHQpOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgdGhpcy5fcmV2ZXJ0
U3R5bGVVcG9uRWRpdGluZ0NhbmNlbGVkKG9yaWdpbmFsUHJvcGVydHlUZXh0LCB1c2VyQ2FsbGJh
Y2spOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodXNlckNhbGxiYWNrKQorICAgICAgICAg
ICAgICAgICAgICB1c2VyQ2FsbGJhY2soKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgICAgICB9CiAKQEAgLTIwODgsNyArMjExOSw5IEBAIFdlYkluc3BlY3Rvci5TdHlsZVByb3Bl
cnR5VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIHNlY3Rpb24ucGFu
ZS5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoInN0eWxlIGVkaXRlZCIpOwogCiAgICAgICAgICAg
ICBpZiAodXBkYXRlSW50ZXJmYWNlKQotICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQWxsKHRy
dWUpOworICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQWxsKHRydWUsIHVzZXJDYWxsYmFjayk7
CisgICAgICAgICAgICBlbHNlIGlmICh1c2VyQ2FsbGJhY2spCisgICAgICAgICAgICAgICAgdXNl
ckNhbGxiYWNrKCk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBBcHBlbmQgYSAiOyIgaWYgdGhl
IG5ldyB0ZXh0IGRvZXMgbm90IGVuZCBpbiAiOyIuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100796</attachid>
            <date>2011-07-14 03:55:13 -0700</date>
            <delta_ts>2011-07-14 07:38:38 -0700</delta_ts>
            <desc>[PATCH] Removed unused method</desc>
            <filename>updateonfocus.patch</filename>
            <type>text/plain</type>
            <size>22429</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">Y29tbWl0IDdmODI4OWM5NDRjYmJhNDcwYzM2OGQzNDZlNjk4NTQzNzQ2N2E5NTcKQXV0aG9yOiBB
bGV4YW5kZXIgUGF2bG92IDxhcGF2bG92QGNocm9taXVtLm9yZz4KRGF0ZTogICBNb24gSnVsIDEx
IDE5OjUyOjQ3IDIwMTEgKzA0MDAKCiAgICBXZWIgSW5zcGVjdG9yOiBGb2N1c2luZyBvbiBhbm90
aGVyIG5vZGUgd2hpbGUgZWRpdGluZyBDU1MgcHJvcGVydHkgZG9lcyBub3QgdXBkYXRlIHN0eWxl
cwogICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0MjgzCiAgICAK
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgogICAgCiAgICBTb3VyY2UvV2ViQ29yZToK
ICAgIAogICAgVGVzdDogaW5zcGVjdG9yL3N0eWxlcy9jb21taXQtd2l0aC1zZWxlY3Rpb24tY2hh
bmdlLmh0bWwKICAgIAogICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHA6CiAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGRPYmplY3RGb3JSdWxlKToKICAg
ICogaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qczoKICAgIChXZWJJbnNw
ZWN0b3IuU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbi5wcm90b3R5cGUudXBkYXRlKToKICAgIChXZWJJ
bnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSk6CiAgICAoV2ViSW5z
cGVjdG9yLlN0eWxlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUudXNlcklucHV0LnByZXZp
b3VzQ29udGVudC5jb250ZXh0Lm1vdmVEaXJlY3Rpb24pOgogICAgKFdlYkluc3BlY3Rvci5TdHls
ZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlLmVsZW1lbnQudXNlcklucHV0LnByZXZpb3Vz
Q29udGVudC5jb250ZXh0Lm1vdmVEaXJlY3Rpb24ubmV3VGFyZ2V0KToKICAgIChXZWJJbnNwZWN0
b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZS5zdHlsZVRleHQudXBkYXRlSW50
ZXJmYWNlLm1ham9yQ2hhbmdlLmlzUmV2ZXJ0LnVzZXJDYWxsYmFjay5vcmlnaW5hbFByb3BlcnR5
VGV4dCk6CiAgICAKICAgIExheW91dFRlc3RzOgogICAgCiAgICAqIGluc3BlY3Rvci9zdHlsZXMv
Y29tbWl0LXdpdGgtc2VsZWN0aW9uLWNoYW5nZS1leHBlY3RlZC50eHQ6IEFkZGVkLgogICAgKiBp
bnNwZWN0b3Ivc3R5bGVzL2NvbW1pdC13aXRoLXNlbGVjdGlvbi1jaGFuZ2UuaHRtbDogQWRkZWQu
CgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IDIwMTViOWQuLjkxNjkxZGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0w
Ny0xNCAgQWxleGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFdlYiBJbnNwZWN0b3I6IEZvY3VzaW5nIG9uIGFub3RoZXIgbm9kZSB3aGlsZSBlZGl0aW5nIENT
UyBwcm9wZXJ0eSBkb2VzIG5vdCB1cGRhdGUgc3R5bGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NDI4MworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL3N0eWxlcy9jb21taXQtd2l0aC1z
ZWxlY3Rpb24tY2hhbmdlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9y
L3N0eWxlcy9jb21taXQtd2l0aC1zZWxlY3Rpb24tY2hhbmdlLmh0bWw6IEFkZGVkLgorCiAyMDEx
LTA3LTEyICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAogICAgICAgICBbUXRdIE5S
V1Qgc2hvdWxkIHBpY2sgdXAgdGhlIHJpZ2h0IGh0dHBkIGNvbmZpZyBmaWxlCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL2NvbW1pdC13aXRoLXNlbGVjdGlvbi1jaGFu
Z2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9jb21taXQtd2l0
aC1zZWxlY3Rpb24tY2hhbmdlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRl
eCAwMDAwMDAwLi45MjFmNzcyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3N0eWxlcy9jb21taXQtd2l0aC1zZWxlY3Rpb24tY2hhbmdlLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDI1IEBACitUZXN0cyB0aGF0IGNvbW1pdHRpbmcgYSBDU1MgcHJvcGVydHkgZWRpdCBi
eSBzZWxlY3RpbmcgYW5vdGhlciBlbGVtZW50IHVwZGF0ZXMgdGhlIFN0eWxlcyBwYW5lLiBCdWcg
NjQyODMuCisKK1RleHQKK0JlZm9yZSBlZGl0OgorW2V4cGFuZGVkXSBlbGVtZW50LnN0eWxlIHsg
KCkKK2ZvbnQtc2l6ZTogMTJweDsKKworPT09PT09PT0gTWF0Y2hlZCBDU1MgUnVsZXMgPT09PT09
PT0KK1tleHBhbmRlZF0gZGl2IHsgKHVzZXIgYWdlbnQgc3R5bGVzaGVldCkKK2Rpc3BsYXk6IGJs
b2NrOworCisKK0FmdGVyIHNlbGVjdGlvbiBjaGFuZ2U6CitbZXhwYW5kZWRdIGVsZW1lbnQuc3R5
bGUgeyAoKQorCis9PT09PT09PSBNYXRjaGVkIENTUyBSdWxlcyA9PT09PT09PQorW2V4cGFuZGVk
XSBwIHsgKHVzZXIgYWdlbnQgc3R5bGVzaGVldCkKK2Rpc3BsYXk6IGJsb2NrOworLXdlYmtpdC1t
YXJnaW4tYmVmb3JlOiAxZW07Cistd2Via2l0LW1hcmdpbi1hZnRlcjogMWVtOworLXdlYmtpdC1t
YXJnaW4tc3RhcnQ6IDBweDsKKy13ZWJraXQtbWFyZ2luLWVuZDogMHB4OworCisKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9jb21taXQtd2l0aC1zZWxlY3Rpb24t
Y2hhbmdlLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL2NvbW1pdC13aXRoLXNl
bGVjdGlvbi1jaGFuZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi43
NGM0ODJmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9j
b21taXQtd2l0aC1zZWxlY3Rpb24tY2hhbmdlLmh0bWwKQEAgLTAsMCArMSw1NiBAQAorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0
b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvZWxlbWVudHMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitmdW5jdGlvbiB0
ZXN0KCkKK3sKKyAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJlbGVtZW50cyIpOworICAgIElu
c3BlY3RvclRlc3Quc2VsZWN0Tm9kZUFuZFdhaXRGb3JTdHlsZXMoImluc3BlY3RlZCIsIHN0ZXAx
KTsKKworICAgIHZhciB0cmVlRWxlbWVudDsKKyAgICB2YXIgc2VjdGlvbjsKKworICAgIGZ1bmN0
aW9uIHN0ZXAxKCkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJCZWZv
cmUgZWRpdDoiKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wU2VsZWN0ZWRFbGVtZW50U3R5
bGVzKHRydWUpOworICAgICAgICBzZWN0aW9uID0gV2ViSW5zcGVjdG9yLnBhbmVscy5lbGVtZW50
cy5zaWRlYmFyUGFuZXMuc3R5bGVzLnNlY3Rpb25zWzBdWzFdOworICAgICAgICBzZWN0aW9uLmV4
cGFuZCgpOworCisgICAgICAgIC8vIENyZWF0ZSBhIHByb3BlcnR5LgorICAgICAgICB0cmVlRWxl
bWVudCA9IHNlY3Rpb24uYWRkTmV3QmxhbmtQcm9wZXJ0eSgpOworICAgICAgICB0cmVlRWxlbWVu
dC5zdGFydEVkaXRpbmcoKTsKKyAgICAgICAgdHJlZUVsZW1lbnQubmFtZUVsZW1lbnQudGV4dENv
bnRlbnQgPSAibWFyZ2luLWxlZnQiOworICAgICAgICB0cmVlRWxlbWVudC5uYW1lRWxlbWVudC5k
aXNwYXRjaEV2ZW50KEluc3BlY3RvclRlc3QuY3JlYXRlS2V5RXZlbnQoIkVudGVyIikpOworCisg
ICAgICAgIHRyZWVFbGVtZW50LnZhbHVlRWxlbWVudC50ZXh0Q29udGVudCA9ICIxcHgiOworICAg
ICAgICB0cmVlRWxlbWVudC52YWx1ZUVsZW1lbnQuZmlyc3RDaGlsZC5zZWxlY3QoKTsKKworICAg
ICAgICAvLyBDb21taXQgYnkgc2VsZWN0aW5nIGFub3RoZXIgZWxlbWVudC4KKyAgICAgICAgSW5z
cGVjdG9yVGVzdC5zZWxlY3ROb2RlQW5kV2FpdEZvclN0eWxlcygib3RoZXIiKTsKKyAgICAgICAg
SW5zcGVjdG9yVGVzdC5ydW5BZnRlclBlbmRpbmdEaXNwYXRjaGVzKHN0ZXAyKTsKKyAgICB9CisK
KyAgICBmdW5jdGlvbiBzdGVwMigpCisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJl
c3VsdCgiQWZ0ZXIgc2VsZWN0aW9uIGNoYW5nZToiKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5k
dW1wU2VsZWN0ZWRFbGVtZW50U3R5bGVzKHRydWUpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmNv
bXBsZXRlVGVzdCgpOworICAgIH0KK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5IG9u
bG9hZD0icnVuVGVzdCgpIj4KKzxwPgorVGVzdHMgdGhhdCBjb21taXR0aW5nIGEgQ1NTIHByb3Bl
cnR5IGVkaXQgYnkgc2VsZWN0aW5nIGFub3RoZXIgZWxlbWVudCB1cGRhdGVzIHRoZSBTdHlsZXMg
cGFuZS4gQnVnIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02NDI4MyI+NjQyODM8L2E+LgorPC9wPgorCis8ZGl2IGlkPSJpbnNwZWN0ZWQiIHN0eWxlPSJm
b250LXNpemU6IDEycHgiPlRleHQ8L2Rpdj4KKzxwIGlkPSJvdGhlciI+PC9kaXY+CisKKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmMDQ1MzhlLi40OTljYmU2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjEgQEAKKzIwMTEtMDctMTQgIEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92QGNo
cm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBGb2N1c2luZyBvbiBhbm90aGVy
IG5vZGUgd2hpbGUgZWRpdGluZyBDU1MgcHJvcGVydHkgZG9lcyBub3QgdXBkYXRlIHN0eWxlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQyODMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBpbnNw
ZWN0b3Ivc3R5bGVzL2NvbW1pdC13aXRoLXNlbGVjdGlvbi1jaGFuZ2UuaHRtbAorCisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGRPYmplY3RGb3JSdWxlKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlN0eWxlUHJvcGVydGllc1NlY3Rpb24ucHJvdG90eXBlLnVwZGF0ZSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZS51c2VySW5w
dXQucHJldmlvdXNDb250ZW50LmNvbnRleHQubW92ZURpcmVjdGlvbik6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZS5lbGVtZW50LnVzZXJJ
bnB1dC5wcmV2aW91c0NvbnRlbnQuY29udGV4dC5tb3ZlRGlyZWN0aW9uLm5ld1RhcmdldCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZS5z
dHlsZVRleHQudXBkYXRlSW50ZXJmYWNlLm1ham9yQ2hhbmdlLmlzUmV2ZXJ0LnVzZXJDYWxsYmFj
ay5vcmlnaW5hbFByb3BlcnR5VGV4dCk6CisKIDIwMTEtMDctMTEgIFplbmcgSHVpcWluZyAgPGh1
aXFpbmcuemVuZ0BpbnRlbC5jb20+CiAKICAgICAgICAgT3B0aW1pemUgSFRNTElucHV0RWxlbWVu
dDo6dXBkYXRlQ2hlY2tlZFJhZGlvQnV0dG9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCmluZGV4IDQ1ODkwMDQuLmUxZjcxYjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKQEAg
LTcwMCw3ICs3MDAsNyBAQCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gSW5zcGVjdG9yU3R5
bGVTaGVldDo6YnVpbGRPYmplY3RGb3JSdWxlKENTU1N0eWxlUnVsZQogCiAgICAgUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4gcmVzdWx0ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICBy
ZXN1bHQtPnNldFN0cmluZygic2VsZWN0b3JUZXh0IiwgcnVsZS0+c2VsZWN0b3JUZXh0KCkpOwot
ICAgIC8vICJzb3VyY2VVUkwiIGlzIHByZXNlbnQgb25seSBmb3IgcmVndWxhciBydWxlcywgb3Ro
ZXJ3aXNlICJvcmlnaW4iIHNob3VsZCBiZSB1c2VkIGluIHRoZSBmcm9udGVuZC4KKyAgICAvLyAi
c291cmNlVVJMIiBpcyBwcmVzZW50IG9ubHkgZm9yIHJlZ3VsYXIgYW5kIGluc3BlY3Rvci1tYWRl
IHJ1bGVzLCBvdGhlcndpc2UgIm9yaWdpbiIgc2hvdWxkIGJlIHVzZWQgaW4gdGhlIGZyb250ZW5k
LgogICAgIGlmICghbV9vcmlnaW4ubGVuZ3RoKCkpCiAgICAgICAgIHJlc3VsdC0+c2V0U3RyaW5n
KCJzb3VyY2VVUkwiLCBmaW5hbFVSTCgpKTsKICAgICByZXN1bHQtPnNldE51bWJlcigic291cmNl
TGluZSIsIHJ1bGUtPnNvdXJjZUxpbmUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qcwppbmRleCBkNjliMzdlLi41
NTFhYzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0
eWxlc1NpZGViYXJQYW5lLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvU3R5bGVzU2lkZWJhclBhbmUuanMKQEAgLTg5NSw3ICs4OTUsNyBAQCBXZWJJbnNwZWN0b3Iu
U3R5bGVQcm9wZXJ0aWVzU2VjdGlvbi5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiBjdXJT
ZWN0aW9uOwogICAgIH0sCiAKLSAgICB1cGRhdGU6IGZ1bmN0aW9uKGZ1bGwpCisgICAgdXBkYXRl
OiBmdW5jdGlvbihmdWxsLCBjYWxsYmFjaykKICAgICB7CiAgICAgICAgIGlmIChmdWxsKSB7CiAg
ICAgICAgICAgICB0aGlzLnByb3BlcnRpZXNUcmVlT3V0bGluZS5yZW1vdmVDaGlsZHJlbigpOwpA
QCAtOTA3LDE1ICs5MDcsOCBAQCBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbi5w
cm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgY2hpbGQgPSBjaGlsZC50cmF2ZXJzZU5leHRU
cmVlRWxlbWVudChmYWxzZSwgbnVsbCwgdHJ1ZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
LSAgICAgICAgdGhpcy5hZnRlclVwZGF0ZSgpOwotICAgIH0sCi0KLSAgICBhZnRlclVwZGF0ZTog
ZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX2FmdGVyVXBkYXRlKSB7Ci0gICAg
ICAgICAgICB0aGlzLl9hZnRlclVwZGF0ZSh0aGlzKTsKLSAgICAgICAgICAgIGRlbGV0ZSB0aGlz
Ll9hZnRlclVwZGF0ZTsKLSAgICAgICAgfQorICAgICAgICBpZiAoY2FsbGJhY2spCisgICAgICAg
ICAgICBjYWxsYmFjaygpOwogICAgIH0sCiAKICAgICBvbnBvcHVsYXRlOiBmdW5jdGlvbigpCkBA
IC0xNTgxLDE2ICsxNTc0LDE5IEBAIFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnR5VHJlZUVsZW1l
bnQucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLnRvb2x0aXAgPSB0aGlzLnByb3BlcnR5LnBy
b3BlcnR5VGV4dDsKICAgICB9LAogCi0gICAgdXBkYXRlQWxsOiBmdW5jdGlvbih1cGRhdGVBbGxS
dWxlcykKKyAgICB1cGRhdGVBbGw6IGZ1bmN0aW9uKHVwZGF0ZUFsbFJ1bGVzLCBjYWxsYmFjaykK
ICAgICB7CiAgICAgICAgIGlmICghdGhpcy50cmVlT3V0bGluZSkKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgaWYgKHVwZGF0ZUFsbFJ1bGVzICYmIHRoaXMudHJlZU91dGxpbmUuc2VjdGlv
biAmJiB0aGlzLnRyZWVPdXRsaW5lLnNlY3Rpb24ucGFuZSkKLSAgICAgICAgICAgIHRoaXMudHJl
ZU91dGxpbmUuc2VjdGlvbi5wYW5lLnVwZGF0ZShudWxsLCB0aGlzLnRyZWVPdXRsaW5lLnNlY3Rp
b24pOworICAgICAgICAgICAgdGhpcy50cmVlT3V0bGluZS5zZWN0aW9uLnBhbmUudXBkYXRlKG51
bGwsIHRoaXMudHJlZU91dGxpbmUuc2VjdGlvbiwgbnVsbCwgY2FsbGJhY2spOwogICAgICAgICBl
bHNlIGlmICh0aGlzLnRyZWVPdXRsaW5lLnNlY3Rpb24pCi0gICAgICAgICAgICB0aGlzLnRyZWVP
dXRsaW5lLnNlY3Rpb24udXBkYXRlKHRydWUpOwotICAgICAgICBlbHNlCisgICAgICAgICAgICB0
aGlzLnRyZWVPdXRsaW5lLnNlY3Rpb24udXBkYXRlKHRydWUsIGNhbGxiYWNrKTsKKyAgICAgICAg
ZWxzZSB7CiAgICAgICAgICAgICB0aGlzLnVwZGF0ZVRpdGxlKCk7IC8vIEZJWE1FOiB0aGlzIHdp
bGwgbm90IHNob3cgbmV3IHByb3BlcnRpZXMuIEJ1dCB3ZSBkb24ndCBoaXQgdGhpcyBjYXNlIHll
dC4KKyAgICAgICAgICAgIGlmIChjYWxsYmFjaykKKyAgICAgICAgICAgICAgICBjYWxsYmFjaygp
OworICAgICAgICB9CiAgICAgfSwKIAogICAgIHRvZ2dsZUVuYWJsZWQ6IGZ1bmN0aW9uKGV2ZW50
KQpAQCAtMTg5Myw3ICsxODg5LDcgQEAgV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydHlUcmVlRWxl
bWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0sCiAKLSAgICBl
ZGl0aW5nRW5kZWQ6IGZ1bmN0aW9uKGNvbnRleHQpCisgICAgZWRpdGluZ0VuZGVkOiBmdW5jdGlv
bihjb250ZXh0LCBuZXdUYXJnZXQpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fYXBwbHlGcmVl
Rmxvd1N0eWxlVGV4dEVkaXRUaW1lcikKICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLl9h
cHBseUZyZWVGbG93U3R5bGVUZXh0RWRpdFRpbWVyKTsKQEAgLTE5MDcsNyArMTkwMyw4IEBAIFdl
Ykluc3BlY3Rvci5TdHlsZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAg
ICBpZiAoZWRpdGVkRWxlbWVudC5wYXJlbnRFbGVtZW50KQogICAgICAgICAgICAgZWRpdGVkRWxl
bWVudC5wYXJlbnRFbGVtZW50LnJlbW92ZVN0eWxlQ2xhc3MoImNoaWxkLWVkaXRpbmciKTsKIAot
ICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLmVsZW1lbnRzLmVuZEVkaXRpbmdTdHlsZSgpOwor
ICAgICAgICBpZiAoIW5ld1RhcmdldCB8fCBuZXdUYXJnZXQudHlwZSA9PT0gInNlbGVjdG9yIikK
KyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMuZWxlbWVudHMuZW5kRWRpdGluZ1N0eWxl
KCk7CiAgICAgfSwKIAogICAgIGVkaXRpbmdDYW5jZWxsZWQ6IGZ1bmN0aW9uKGVsZW1lbnQsIGNv
bnRleHQpCkBAIC0xOTE4LDExOSArMTkxNSwxNDMgQEAgV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVy
dHlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuZWRpdGluZ0VuZGVkKGNv
bnRleHQpOwogICAgIH0sCiAKLSAgICBfcmV2ZXJ0U3R5bGVVcG9uRWRpdGluZ0NhbmNlbGVkOiBm
dW5jdGlvbihvcmlnaW5hbFByb3BlcnR5VGV4dCkKKyAgICBfcmV2ZXJ0U3R5bGVVcG9uRWRpdGlu
Z0NhbmNlbGVkOiBmdW5jdGlvbihvcmlnaW5hbFByb3BlcnR5VGV4dCwgY2FsbGJhY2spCiAgICAg
ewogICAgICAgICBpZiAodHlwZW9mIG9yaWdpbmFsUHJvcGVydHlUZXh0ID09PSAic3RyaW5nIikg
ewogICAgICAgICAgICAgZGVsZXRlIHRoaXMub3JpZ2luYWxQcm9wZXJ0eVRleHQ7Ci0gICAgICAg
ICAgICB0aGlzLmFwcGx5U3R5bGVUZXh0KG9yaWdpbmFsUHJvcGVydHlUZXh0LCB0cnVlLCBmYWxz
ZSwgdHJ1ZSk7CisgICAgICAgICAgICB0aGlzLmFwcGx5U3R5bGVUZXh0KG9yaWdpbmFsUHJvcGVy
dHlUZXh0LCB0cnVlLCBmYWxzZSwgdHJ1ZSwgY2FsbGJhY2spOwogICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgaWYgKHRoaXMuX25ld1Byb3BlcnR5KQogICAgICAgICAgICAgICAgIHRoaXMu
dHJlZU91dGxpbmUucmVtb3ZlQ2hpbGQodGhpcyk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAg
ICAgICAgICAgdGhpcy51cGRhdGVUaXRsZSgpOworICAgICAgICAgICAgaWYgKGNhbGxiYWNrKQor
ICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7CiAgICAgICAgIH0KLSAgICB9LCAKKyAgICB9LAog
Ci0gICAgZWRpdGluZ0NvbW1pdHRlZDogZnVuY3Rpb24oZWxlbWVudCwgdXNlcklucHV0LCBwcmV2
aW91c0NvbnRlbnQsIGNvbnRleHQsIG1vdmVEaXJlY3Rpb24pCisgICAgLy8gUmV0dXJuIG9iamVj
dDoKKyAgICAvLyB8dHlwZXw6CisgICAgLy8gICAic2VsZWN0b3IiIC0gZWRpdCBzZWxlY3RvciAo
fHRhcmdldHw6IHNlY3Rpb24gd2hvc2Ugc2VsZWN0b3IgdG8gZWRpdCBuZXh0KS4KKyAgICAvLyAg
ICJwcm9wZXJ0eSIgLSBlZGl0IHByb3BlcnR5IGluIHRoZSBzYW1lIHNlY3Rpb24gKHx0YXJnZXR8
OiB0cmVlRWxlbWVudCB0byBlZGl0LAorICAgIC8vICAgICAgICAgICAgICAgIHx0YXJnZXRJbmRl
eHw6IHByb3BlcnR5IGluZGV4IGluIHRoZSBuZXcgc3R5bGUgdG8gc3RhcnQgZWRpdGluZyAoYSBm
YWxsYmFjayBpZiB8dGFyZ2V0SW5kZXh8IGdldHMgZGV0YWNoZWQpLCB8c3VidGFyZ2V0fDogIm5h
bWUiIHwgInZhbHVlIikuCisgICAgLy8gICAibmV3UHJvcGVydHkiIC0gYWRkIGEgYmxhbmsgcHJv
cGVydHkgKHx0YXJnZXR8OiBzZWN0aW9uIHRvIGFkZCBibGFuayBwcm9wZXJ0eSB0bykuCisgICAg
X25ld0VkaXRvclRhcmdldDogZnVuY3Rpb24odXNlcklucHV0LCBwcmV2aW91c0NvbnRlbnQsIGNv
bnRleHQsIG1vdmVEaXJlY3Rpb24pCiAgICAgewotICAgICAgICB0aGlzLl9yZW1vdmVQcm9tcHQo
KTsKLSAgICAgICAgdGhpcy5lZGl0aW5nRW5kZWQoY29udGV4dCk7Ci0gICAgICAgIHZhciBpc0Vk
aXRpbmdOYW1lID0gY29udGV4dC5pc0VkaXRpbmdOYW1lOwotCi0gICAgICAgIC8vIERldGVybWlu
ZSB3aGVyZSB0byBtb3ZlIHRvIGJlZm9yZSBtYWtpbmcgY2hhbmdlcworICAgICAgICAvLyBEZXRl
cm1pbmUgd2hlcmUgdG8gbW92ZSB0byBiZWZvcmUgbWFraW5nIGNoYW5nZXMuCiAgICAgICAgIHZh
ciBjcmVhdGVOZXdQcm9wZXJ0eSwgbW92ZVRvUHJvcGVydHlOYW1lLCBtb3ZlVG9TZWxlY3RvcjsK
KyAgICAgICAgdmFyIGlzRWRpdGluZ05hbWUgPSBjb250ZXh0LmlzRWRpdGluZ05hbWU7CiAgICAg
ICAgIHZhciBtb3ZlVG8gPSB0aGlzOwotICAgICAgICB2YXIgbW92ZVRvT3RoZXIgPSAoaXNFZGl0
aW5nTmFtZSBeIChtb3ZlRGlyZWN0aW9uID09PSAiZm9yd2FyZCIpKTsKKyAgICAgICAgdmFyIG1v
dmVUb090aGVyID0gaXNFZGl0aW5nTmFtZSBeIChtb3ZlRGlyZWN0aW9uID09PSAiZm9yd2FyZCIp
OworICAgICAgICB2YXIgYmxhbmtJbnB1dCA9IC9eXHMqJC8udGVzdCh1c2VySW5wdXQpOwogICAg
ICAgICB2YXIgYWJhbmRvbk5ld1Byb3BlcnR5ID0gdGhpcy5fbmV3UHJvcGVydHkgJiYgIXVzZXJJ
bnB1dCAmJiAobW92ZVRvT3RoZXIgfHwgaXNFZGl0aW5nTmFtZSk7Ci0gICAgICAgIGlmIChtb3Zl
RGlyZWN0aW9uID09PSAiZm9yd2FyZCIgJiYgIWlzRWRpdGluZ05hbWUgfHwgbW92ZURpcmVjdGlv
biA9PT0gImJhY2t3YXJkIiAmJiBpc0VkaXRpbmdOYW1lKSB7CisgICAgICAgIHZhciBjdXJyZW50
U2VjdGlvbiA9IHRoaXMudHJlZU91dGxpbmUuc2VjdGlvbjsKKworICAgICAgICBmdW5jdGlvbiBz
ZWxlY3RvckFmdGVyRW1wdHlSZXN1bHQoKQorICAgICAgICB7CisgICAgICAgICAgICAvLyBSZXR1
cm5zIGFuIGVkaXRvciB0YXJnZXQgcmVzdWx0IHdoZW4gYSBibGFuay9lbXB0aWVkIHByb3BlcnR5
IGhhcyBiZWVuIGxlZnQgaW4gZmF2b3Igb2YgYSBzZWxlY3Rvci4KKworICAgICAgICAgICAgdmFy
IHNlY3Rpb25Ub0VkaXQgPSBtb3ZlRGlyZWN0aW9uID09PSAiYmFja3dhcmQiID8gY3VycmVudFNl
Y3Rpb24gOiBjdXJyZW50U2VjdGlvbi5uZXh0RWRpdGFibGVTaWJsaW5nKCk7CisgICAgICAgICAg
ICBpZiAoc2VjdGlvblRvRWRpdCAmJiBzZWN0aW9uVG9FZGl0LnJ1bGUpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIHsgdHlwZTogInNlbGVjdG9yIiwgdGFyZ2V0OiBzZWN0aW9uVG9FZGl0IH07Cisg
ICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghbW92ZURp
cmVjdGlvbikKKyAgICAgICAgICAgIHJldHVybiBudWxsOyAvLyBUZXJtaW5hdGUgZWRpdGluZyBz
ZXNzaW9uLgorCisgICAgICAgIGlmIChtb3ZlVG9PdGhlcikgewogICAgICAgICAgICAgZG8gewot
ICAgICAgICAgICAgICAgIG1vdmVUbyA9IChtb3ZlRGlyZWN0aW9uID09PSAiZm9yd2FyZCIgPyBt
b3ZlVG8ubmV4dFNpYmxpbmcgOiBtb3ZlVG8ucHJldmlvdXNTaWJsaW5nKTsKKyAgICAgICAgICAg
ICAgICBtb3ZlVG8gPSBtb3ZlRGlyZWN0aW9uID09PSAiZm9yd2FyZCIgPyBtb3ZlVG8ubmV4dFNp
YmxpbmcgOiBtb3ZlVG8ucHJldmlvdXNTaWJsaW5nOwogICAgICAgICAgICAgfSB3aGlsZShtb3Zl
VG8gJiYgIW1vdmVUby5zZWxlY3RhYmxlKTsKIAotICAgICAgICAgICBpZiAobW92ZVRvKQorICAg
ICAgICAgICAgaWYgKG1vdmVUbykgewogICAgICAgICAgICAgICAgIG1vdmVUb1Byb3BlcnR5TmFt
ZSA9IG1vdmVUby5uYW1lOwotICAgICAgICAgICAgZWxzZSBpZiAobW92ZURpcmVjdGlvbiA9PT0g
ImZvcndhcmQiICYmICghdGhpcy5fbmV3UHJvcGVydHkgfHwgdXNlcklucHV0KSkKLSAgICAgICAg
ICAgICAgICBjcmVhdGVOZXdQcm9wZXJ0eSA9IHRydWU7Ci0gICAgICAgICAgICBlbHNlIGlmICht
b3ZlRGlyZWN0aW9uID09PSAiYmFja3dhcmQiICYmIHRoaXMudHJlZU91dGxpbmUuc2VjdGlvbi5y
dWxlKQotICAgICAgICAgICAgICAgIG1vdmVUb1NlbGVjdG9yID0gdHJ1ZTsKLSAgICAgICAgfQor
ICAgICAgICAgICAgICAgIHZhciBtb3ZlVG9JbmRleCA9IHRoaXMudHJlZU91dGxpbmUgPyB0aGlz
LnRyZWVPdXRsaW5lLmNoaWxkcmVuLmluZGV4T2YobW92ZVRvKSA6IC0xOworICAgICAgICAgICAg
ICAgIGlmIChtb3ZlVG9JbmRleCAhPT0gLTEpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGJs
YW5rSW5wdXQpCisgICAgICAgICAgICAgICAgICAgICAgICAtLW1vdmVUb0luZGV4OyAvLyBUaGUg
Y3VycmVudCBwcm9wZXJ0eSB3aWxsIGdldCByZW1vdmVkLCBzbyBhZGp1c3QgdGhlIG5leHQgZWRp
dGFibGUgcHJvcGVydHkgaW5kZXggaWYgcG9zc2libGUuCisgICAgICAgICAgICAgICAgICAgIHZh
ciBzdWJ0YXJnZXRJc05hbWUgPSBibGFua0lucHV0IHx8ICFpc0VkaXRpbmdOYW1lOworICAgICAg
ICAgICAgICAgICAgICByZXR1cm4geyB0eXBlOiAicHJvcGVydHkiLCB0YXJnZXQ6IG1vdmVUbywg
dGFyZ2V0SW5kZXg6IG1vdmVUb0luZGV4LCBzdWJ0YXJnZXQ6IHN1YnRhcmdldElzTmFtZSA/ICJu
YW1lIiA6ICJ2YWx1ZSIsIHRyZWVPdXRsaW5lOiB0aGlzLnRyZWVPdXRsaW5lIH07CisgICAgICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7IC8vIFVua25vd24gdHJl
ZUVsZW1lbnQgdG8gZWRpdCBuZXh0LgorICAgICAgICAgICAgfSBlbHNlIGlmIChtb3ZlRGlyZWN0
aW9uID09PSAiZm9yd2FyZCIgJiYgKCF0aGlzLl9uZXdQcm9wZXJ0eSB8fCB1c2VySW5wdXQpKQor
ICAgICAgICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJuZXdQcm9wZXJ0eSIsIHRhcmdldDogY3Vy
cmVudFNlY3Rpb24gfTsKKyAgICAgICAgICAgIGVsc2UgaWYgKG1vdmVEaXJlY3Rpb24gPT09ICJi
YWNrd2FyZCIgJiYgY3VycmVudFNlY3Rpb24ucnVsZSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
eyB0eXBlOiAic2VsZWN0b3IiLCB0YXJnZXQ6IGN1cnJlbnRTZWN0aW9uIH07CisgICAgICAgIH0g
ZWxzZSBpZiAodGhpcy50cmVlT3V0bGluZSkgeworICAgICAgICAgICAgLy8gRWRpdGluZyBsYXN0
IHByb3BlcnR5IChhIG5ld1Byb3BlcnR5IG9yIGEgcmVndWxhciBvbmUpLgorICAgICAgICAgICAg
dmFyIHRoaXNJbmRleCA9IHRoaXMudHJlZU91dGxpbmUuY2hpbGRyZW4uaW5kZXhPZih0aGlzKTsK
KyAgICAgICAgICAgIGlmIChibGFua0lucHV0ICYmIHRoaXNJbmRleCA9PT0gdGhpcy50cmVlT3V0
bGluZS5jaGlsZHJlbi5sZW5ndGggLSAxKSAvLyBCbGFuayBpbnB1dCBvbiB0aGUgbGFzdCBwcm9w
ZXJ0eS4KKyAgICAgICAgICAgICAgICByZXR1cm4gYWJhbmRvbk5ld1Byb3BlcnR5ID8gc2VsZWN0
b3JBZnRlckVtcHR5UmVzdWx0KCkgOiB7IHR5cGU6ICJuZXdQcm9wZXJ0eSIsIHRhcmdldDogY3Vy
cmVudFNlY3Rpb24gfTsKKworICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogInByb3BlcnR5Iiwg
dGFyZ2V0OiB0aGlzLCB0YXJnZXRJbmRleDogdGhpc0luZGV4LCBzdWJ0YXJnZXQ6IGJsYW5rSW5w
dXQgfHwgIWlzRWRpdGluZ05hbWUgPyAibmFtZSIgOiAidmFsdWUiLCB0cmVlT3V0bGluZTogdGhp
cy50cmVlT3V0bGluZSB9OworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHJldHVybiBudWxs
OyAvLyBUaGlzIHRyZWVFbGVtZW50IGlzIGRldGFjaGVkIGZyb20gdHJlZU91dGxpbmUuCisKKyAg
ICAgICAgcmV0dXJuIGFiYW5kb25OZXdQcm9wZXJ0eSA/IHNlbGVjdG9yQWZ0ZXJFbXB0eVJlc3Vs
dCgpIDogbnVsbDsKKyAgICB9LAorCisgICAgZWRpdGluZ0NvbW1pdHRlZDogZnVuY3Rpb24oZWxl
bWVudCwgdXNlcklucHV0LCBwcmV2aW91c0NvbnRlbnQsIGNvbnRleHQsIG1vdmVEaXJlY3Rpb24p
CisgICAgeworICAgICAgICB0aGlzLl9yZW1vdmVQcm9tcHQoKTsKKyAgICAgICAgdmFyIG5ld1Rh
cmdldCA9IHRoaXMuX25ld0VkaXRvclRhcmdldCh1c2VySW5wdXQsIHByZXZpb3VzQ29udGVudCwg
Y29udGV4dCwgbW92ZURpcmVjdGlvbik7CisgICAgICAgIHRoaXMuZWRpdGluZ0VuZGVkKGNvbnRl
eHQsICEhbmV3VGFyZ2V0KTsKIAogICAgICAgICAvLyBNYWtlIHRoZSBDaGFuZ2VzIGFuZCB0cmln
Z2VyIHRoZSBtb3ZlVG9OZXh0Q2FsbGJhY2sgYWZ0ZXIgdXBkYXRpbmcuCisgICAgICAgIHZhciBp
c0VkaXRpbmdOYW1lID0gY29udGV4dC5pc0VkaXRpbmdOYW1lOwogICAgICAgICB2YXIgYmxhbmtJ
bnB1dCA9IC9eXHMqJC8udGVzdCh1c2VySW5wdXQpOwogICAgICAgICB2YXIgaXNEYXRhUGFzdGVk
ID0gIm9yaWdpbmFsTmFtZSIgaW4gY29udGV4dDsKICAgICAgICAgdmFyIGlzRGlydHlWaWFQYXN0
ZSA9IGlzRGF0YVBhc3RlZCAmJiAodGhpcy5uYW1lRWxlbWVudC50ZXh0Q29udGVudCAhPT0gY29u
dGV4dC5vcmlnaW5hbE5hbWUgfHwgdGhpcy52YWx1ZUVsZW1lbnQudGV4dENvbnRlbnQgIT09IGNv
bnRleHQub3JpZ2luYWxWYWx1ZSk7CisgICAgICAgIHZhciBtb3ZlVG9PdGhlciA9IG1vdmVEaXJl
Y3Rpb24gJiYgKGlzRWRpdGluZ05hbWUgXiAobW92ZURpcmVjdGlvbiA9PT0gImZvcndhcmQiKSk7
CiAgICAgICAgIHZhciBzaG91bGRDb21taXROZXdQcm9wZXJ0eSA9IHRoaXMuX25ld1Byb3BlcnR5
ICYmIChtb3ZlVG9PdGhlciB8fCAoIW1vdmVEaXJlY3Rpb24gJiYgIWlzRWRpdGluZ05hbWUpIHx8
IChpc0VkaXRpbmdOYW1lICYmIGJsYW5rSW5wdXQpKTsKKwogICAgICAgICBpZiAoKCh1c2VySW5w
dXQgIT09IHByZXZpb3VzQ29udGVudCB8fCBpc0RpcnR5VmlhUGFzdGUpICYmICF0aGlzLl9uZXdQ
cm9wZXJ0eSkgfHwgc2hvdWxkQ29tbWl0TmV3UHJvcGVydHkpIHsKLSAgICAgICAgICAgIFdlYklu
c3BlY3Rvci5wYW5lbHMuZWxlbWVudHMuc3RhcnRFZGl0aW5nU3R5bGUoKTsKLSAgICAgICAgICAg
IHRoaXMudHJlZU91dGxpbmUuc2VjdGlvbi5fYWZ0ZXJVcGRhdGUgPSBtb3ZlVG9OZXh0Q2FsbGJh
Y2suYmluZCh0aGlzLCB0aGlzLl9uZXdQcm9wZXJ0eSwgIWJsYW5rSW5wdXQsIHRoaXMudHJlZU91
dGxpbmUuc2VjdGlvbik7CiAgICAgICAgICAgICB2YXIgcHJvcGVydHlUZXh0OwogICAgICAgICAg
ICAgaWYgKGJsYW5rSW5wdXQgfHwgKHRoaXMuX25ld1Byb3BlcnR5ICYmIC9eXHMqJC8udGVzdCh0
aGlzLnZhbHVlRWxlbWVudC50ZXh0Q29udGVudCkpKQogICAgICAgICAgICAgICAgIHByb3BlcnR5
VGV4dCA9ICIiOwogICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKGlzRWRp
dGluZ05hbWUpCisgICAgICAgICAgICAgICAgaWYgKGNvbnRleHQuaXNFZGl0aW5nTmFtZSkKICAg
ICAgICAgICAgICAgICAgICAgcHJvcGVydHlUZXh0ID0gdXNlcklucHV0ICsgIjogIiArIHRoaXMu
dmFsdWVFbGVtZW50LnRleHRDb250ZW50OwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgICAgICAgICAgcHJvcGVydHlUZXh0ID0gdGhpcy5uYW1lRWxlbWVudC50ZXh0Q29udGVudCAr
ICI6ICIgKyB1c2VySW5wdXQ7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB0aGlzLmFwcGx5
U3R5bGVUZXh0KHByb3BlcnR5VGV4dCwgdHJ1ZSwgdHJ1ZSk7CisgICAgICAgICAgICB0aGlzLmFw
cGx5U3R5bGVUZXh0KHByb3BlcnR5VGV4dCwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIGVkaXRUYXJnZXRD
YWxsYmFjay5iaW5kKHRoaXMsIG5ld1RhcmdldCkpOwogICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgaWYgKCFpc0RhdGFQYXN0ZWQgJiYgIXRoaXMuX25ld1Byb3BlcnR5KQogICAgICAgICAg
ICAgICAgIHRoaXMudXBkYXRlVGl0bGUoKTsKLSAgICAgICAgICAgIG1vdmVUb05leHRDYWxsYmFj
ay5jYWxsKHRoaXMsIHRoaXMuX25ld1Byb3BlcnR5LCBmYWxzZSwgdGhpcy50cmVlT3V0bGluZS5z
ZWN0aW9uKTsKKyAgICAgICAgICAgIGVkaXRUYXJnZXRDYWxsYmFjay5jYWxsKHRoaXMsIG5ld1Rh
cmdldCk7CiAgICAgICAgIH0KIAotICAgICAgICB2YXIgbW92ZVRvSW5kZXggPSBtb3ZlVG8gJiYg
dGhpcy50cmVlT3V0bGluZSA/IHRoaXMudHJlZU91dGxpbmUuY2hpbGRyZW4uaW5kZXhPZihtb3Zl
VG8pIDogLTE7Ci0KLSAgICAgICAgLy8gVGhlIENhbGxiYWNrIHRvIHN0YXJ0IGVkaXRpbmcgdGhl
IG5leHQvcHJldmlvdXMgcHJvcGVydHkvc2VsZWN0b3IuCi0gICAgICAgIGZ1bmN0aW9uIG1vdmVU
b05leHRDYWxsYmFjayhhbHJlYWR5TmV3LCB2YWx1ZUNoYW5nZWQsIHNlY3Rpb24pCisgICAgICAg
IGZ1bmN0aW9uIGVkaXRUYXJnZXRDYWxsYmFjayhuZXdUYXJnZXQpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMuZWxlbWVudHMuZW5kRWRpdGluZ1N0eWxlKCk7Ci0K
LSAgICAgICAgICAgIGlmICghbW92ZURpcmVjdGlvbikKKyAgICAgICAgICAgIGlmICghbmV3VGFy
Z2V0KQogICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgLy8gVXNlciBqdXN0
IHRhYmJlZCB0aHJvdWdoIHdpdGhvdXQgY2hhbmdlcy4KLSAgICAgICAgICAgIGlmIChtb3ZlVG8g
JiYgbW92ZVRvLnBhcmVudCkgewotICAgICAgICAgICAgICAgIG1vdmVUby5zdGFydEVkaXRpbmco
IWlzRWRpdGluZ05hbWUgPyBtb3ZlVG8ubmFtZUVsZW1lbnQgOiBtb3ZlVG8udmFsdWVFbGVtZW50
KTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
IC8vIFVzZXIgaGFzIG1hZGUgYSBjaGFuZ2UgdGhlbiB0YWJiZWQsIHdpcGluZyBhbGwgdGhlIG9y
aWdpbmFsIHRyZWVFbGVtZW50cy4KLSAgICAgICAgICAgIC8vIFJlY2FsY3VsYXRlIHRoZSBuZXcg
dHJlZUVsZW1lbnQgZm9yIHRoZSBzYW1lIHByb3BlcnR5IHdlIHdlcmUgZ29pbmcgdG8gZWRpdCBu
ZXh0LgotICAgICAgICAgICAgaWYgKG1vdmVUbyAmJiAhbW92ZVRvLnBhcmVudCkgewotICAgICAg
ICAgICAgICAgIHZhciBwcm9wZXJ0eUVsZW1lbnRzID0gc2VjdGlvbi5wcm9wZXJ0aWVzVHJlZU91
dGxpbmUuY2hpbGRyZW47Ci0gICAgICAgICAgICAgICAgaWYgKG1vdmVEaXJlY3Rpb24gPT09ICJm
b3J3YXJkIiAmJiBibGFua0lucHV0ICYmICFpc0VkaXRpbmdOYW1lKQotICAgICAgICAgICAgICAg
ICAgICAtLW1vdmVUb0luZGV4OwotICAgICAgICAgICAgICAgIGlmIChtb3ZlVG9JbmRleCA+PSBw
cm9wZXJ0eUVsZW1lbnRzLmxlbmd0aCAmJiAhdGhpcy5fbmV3UHJvcGVydHkpCi0gICAgICAgICAg
ICAgICAgICAgIGNyZWF0ZU5ld1Byb3BlcnR5ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBlbHNl
IHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIHRyZWVFbGVtZW50ID0gbW92ZVRvSW5kZXggPj0g
MCA/IHByb3BlcnR5RWxlbWVudHNbbW92ZVRvSW5kZXhdIDogbnVsbDsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKHRyZWVFbGVtZW50KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0cmVlRWxl
bWVudC5zdGFydEVkaXRpbmcoIWlzRWRpdGluZ05hbWUgPyB0cmVlRWxlbWVudC5uYW1lRWxlbWVu
dCA6IHRyZWVFbGVtZW50LnZhbHVlRWxlbWVudCk7CisgICAgICAgICAgICBzd2l0Y2ggKG5ld1Rh
cmdldC50eXBlKSB7CisgICAgICAgICAgICBjYXNlICJzZWxlY3RvciI6CisgICAgICAgICAgICAg
ICAgbmV3VGFyZ2V0LnRhcmdldC5zdGFydEVkaXRpbmdTZWxlY3RvcigpOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAicHJvcGVydHkiOgorICAgICAgICAgICAgICAg
IHZhciB0cmVlRWxlbWVudCA9IG5ld1RhcmdldC50YXJnZXQ7CisgICAgICAgICAgICAgICAgdmFy
IHN1YnRhcmdldCA9IG5ld1RhcmdldC5zdWJ0YXJnZXQ7CisgICAgICAgICAgICAgICAgdmFyIHRy
ZWVPdXRsaW5lID0gbmV3VGFyZ2V0LnRyZWVPdXRsaW5lOworICAgICAgICAgICAgICAgIGlmICgh
dHJlZUVsZW1lbnQudHJlZU91dGxpbmUpIHsKKyAgICAgICAgICAgICAgICAgICAgdHJlZUVsZW1l
bnQgPSB0cmVlT3V0bGluZS5jaGlsZHJlbltuZXdUYXJnZXQudGFyZ2V0SW5kZXhdOworICAgICAg
ICAgICAgICAgICAgICBpZiAoIXRyZWVFbGVtZW50KSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zb2xlLmVycm9yKCJQcm9wZXJ0eSB0cmVlRWxlbWVudCBub3QgZm91bmQgYXQgaW5kZXgg
JW8iLCBuZXdUYXJnZXQudGFyZ2V0SW5kZXgpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFhbHJlYWR5TmV3KQotICAgICAg
ICAgICAgICAgICAgICAgICAgbW92ZVRvU2VsZWN0b3IgPSB0cnVlOworICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHRyZWVFbGVtZW50LnN0
YXJ0RWRpdGluZyhzdWJ0YXJnZXQgPT09ICJuYW1lIiA/IHRyZWVFbGVtZW50Lm5hbWVFbGVtZW50
IDogdHJlZUVsZW1lbnQudmFsdWVFbGVtZW50KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIGNhc2UgIm5ld1Byb3BlcnR5IjoKKyAgICAgICAgICAgICAgICBuZXdUYXJnZXQu
dGFyZ2V0LmFkZE5ld0JsYW5rUHJvcGVydHkoKS5zdGFydEVkaXRpbmcoKTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgY29uc29s
ZS5lcnJvcigiVW5rbm93biBwcm9wZXJ0eSBlZGl0b3IgdGFyZ2V0IHR5cGU6ICVvIiwgbmV3VGFy
Z2V0LnR5cGUpOwogICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBDcmVhdGUgYSBuZXcg
YXR0cmlidXRlIGluIHRoaXMgc2VjdGlvbiAob3IgbW92ZSB0byBuZXh0IGVkaXRhYmxlIHNlbGVj
dG9yIGlmIHBvc3NpYmxlKS4KLSAgICAgICAgICAgIGlmIChjcmVhdGVOZXdQcm9wZXJ0eSkgewot
ICAgICAgICAgICAgICAgIGlmIChhbHJlYWR5TmV3ICYmICF2YWx1ZUNoYW5nZWQgJiYgKGlzRWRp
dGluZ05hbWUgXiAobW92ZURpcmVjdGlvbiA9PT0gImJhY2t3YXJkIikpKQotICAgICAgICAgICAg
ICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgICAgICBzZWN0aW9uLmFkZE5ld0JsYW5rUHJv
cGVydHkoKS5zdGFydEVkaXRpbmcoKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChhYmFuZG9uTmV3UHJvcGVydHkpIHsKLSAgICAgICAg
ICAgICAgICB2YXIgc2VjdGlvblRvRWRpdCA9IG1vdmVEaXJlY3Rpb24gPT09ICJiYWNrd2FyZCIg
PyBzZWN0aW9uIDogc2VjdGlvbi5uZXh0RWRpdGFibGVTaWJsaW5nKCk7Ci0gICAgICAgICAgICAg
ICAgaWYgKHNlY3Rpb25Ub0VkaXQgJiYgc2VjdGlvblRvRWRpdC5ydWxlKQotICAgICAgICAgICAg
ICAgICAgICBzZWN0aW9uVG9FZGl0LnN0YXJ0RWRpdGluZ1NlbGVjdG9yKCk7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAobW92ZVRvU2Vs
ZWN0b3IpCi0gICAgICAgICAgICAgICAgc2VjdGlvbi5zdGFydEVkaXRpbmdTZWxlY3RvcigpOwog
ICAgICAgICB9CiAgICAgfSwKIApAQCAtMjA1MCw3ICsyMDcxLDcgQEAgV2ViSW5zcGVjdG9yLlN0
eWxlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiB0eXBl
b2YgdGhpcy5vcmlnaW5hbFByb3BlcnR5VGV4dCA9PT0gInN0cmluZyI7CiAgICAgfSwKIAotICAg
IGFwcGx5U3R5bGVUZXh0OiBmdW5jdGlvbihzdHlsZVRleHQsIHVwZGF0ZUludGVyZmFjZSwgbWFq
b3JDaGFuZ2UsIGlzUmV2ZXJ0KQorICAgIGFwcGx5U3R5bGVUZXh0OiBmdW5jdGlvbihzdHlsZVRl
eHQsIHVwZGF0ZUludGVyZmFjZSwgbWFqb3JDaGFuZ2UsIGlzUmV2ZXJ0LCB1c2VyQ2FsbGJhY2sp
CiAgICAgewogICAgICAgICAvLyBMZWF2ZSBhIHdheSB0byBjYW5jZWwgZWRpdGluZyBhZnRlciBp
bmNyZW1lbnRhbCBjaGFuZ2VzLgogICAgICAgICBpZiAoIWlzUmV2ZXJ0ICYmICF1cGRhdGVJbnRl
cmZhY2UgJiYgIXRoaXMuX2hhc0JlZW5Nb2RpZmllZEluY3JlbWVudGFsbHkoKSkgewpAQCAtMjA2
Niw3ICsyMDg3LDggQEAgV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90
b3R5cGUgPSB7CiAgICAgICAgIGlmICghc3R5bGVUZXh0TGVuZ3RoICYmIHVwZGF0ZUludGVyZmFj
ZSAmJiAhaXNSZXZlcnQgJiYgdGhpcy5fbmV3UHJvcGVydHkgJiYgIXRoaXMuX2hhc0JlZW5Nb2Rp
ZmllZEluY3JlbWVudGFsbHkoKSkgewogICAgICAgICAgICAgLy8gVGhlIHVzZXIgZGVsZXRlZCBl
dmVyeXRoaW5nIGFuZCBuZXZlciBhcHBsaWVkIGEgbmV3IHByb3BlcnR5IHZhbHVlIHZpYSBVcC9E
b3duIHNjcm9sbGluZywgc28gcmVtb3ZlIHRoZSB0cmVlIGVsZW1lbnQgYW5kIHVwZGF0ZS4KICAg
ICAgICAgICAgIHRoaXMucGFyZW50LnJlbW92ZUNoaWxkKHRoaXMpOwotICAgICAgICAgICAgc2Vj
dGlvbi5hZnRlclVwZGF0ZSgpOworICAgICAgICAgICAgaWYgKHVzZXJDYWxsYmFjaykKKyAgICAg
ICAgICAgICAgICB1c2VyQ2FsbGJhY2soKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCkBAIC0yMDc1LDggKzIwOTcsOSBAQCBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVF
bGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGlmICghbmV3U3R5bGUpIHsKICAgICAg
ICAgICAgICAgICBpZiAodXBkYXRlSW50ZXJmYWNlKSB7CiAgICAgICAgICAgICAgICAgICAgIC8v
IEl0IGRpZCBub3QgYXBwbHksIGNhbmNlbCBlZGl0aW5nLgotICAgICAgICAgICAgICAgICAgICB0
aGlzLl9yZXZlcnRTdHlsZVVwb25FZGl0aW5nQ2FuY2VsZWQob3JpZ2luYWxQcm9wZXJ0eVRleHQp
OwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgdGhpcy5fcmV2ZXJ0U3R5
bGVVcG9uRWRpdGluZ0NhbmNlbGVkKG9yaWdpbmFsUHJvcGVydHlUZXh0LCB1c2VyQ2FsbGJhY2sp
OworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodXNlckNhbGxiYWNrKQorICAgICAgICAgICAg
ICAgICAgICB1c2VyQ2FsbGJhY2soKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICB9CiAKQEAgLTIwODgsNyArMjExMSw5IEBAIFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnR5
VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIHNlY3Rpb24ucGFuZS5k
aXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoInN0eWxlIGVkaXRlZCIpOwogCiAgICAgICAgICAgICBp
ZiAodXBkYXRlSW50ZXJmYWNlKQotICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQWxsKHRydWUp
OworICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQWxsKHRydWUsIHVzZXJDYWxsYmFjayk7Cisg
ICAgICAgICAgICBlbHNlIGlmICh1c2VyQ2FsbGJhY2spCisgICAgICAgICAgICAgICAgdXNlckNh
bGxiYWNrKCk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBBcHBlbmQgYSAiOyIgaWYgdGhlIG5l
dyB0ZXh0IGRvZXMgbm90IGVuZCBpbiAiOyIuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100806</attachid>
            <date>2011-07-14 07:38:45 -0700</date>
            <delta_ts>2011-07-14 09:14:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64283-20110714183843.patch</filename>
            <type>text/plain</type>
            <size>16755</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTA5OTgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlZDBjZTg3MTBhYzU4ODc3
YzM5MTAzYWFkYTAxNGM3YmE2MzRmYmI3Li5mNjkxYzk2Y2JiZjg5NmU2NDE2NGQyMTA2Y2E4YjUx
Zjk5ZTY5MDc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcgQEAKKzIwMTEtMDctMTQgIFBhdmVs
IEZlbGRtYW4gIDxwZmVsZG1hbkBnb29nbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6
IEZvY3VzaW5nIG9uIGFub3RoZXIgbm9kZSB3aGlsZSBlZGl0aW5nIENTUyBwcm9wZXJ0eSBkb2Vz
IG5vdCB1cGRhdGUgc3R5bGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02NDI4MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9ET01BZ2VudC5qczoKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5ET01BZ2VudC5wcm90b3R5cGUuX2lubGluZVN0eWxlSW52YWxpZGF0ZWQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTURpc3BhdGNoZXIucHJvdG90eXBlLmlubGluZVN0eWxl
SW52YWxpZGF0ZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5l
bC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZS5fYXR0cmlidXRlc1VwZGF0ZWQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJvdG90eXBlLnVwZGF0ZVN0eWxl
cyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9NZXRyaWNzU2lkZWJhclBhbmUuanM6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuTWV0cmljc1NpZGViYXJQYW5lKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5NZXRyaWNzU2lkZWJhclBhbmUucHJvdG90eXBlLnVwZGF0ZSk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuTWV0cmljc1NpZGViYXJQYW5lLnByb3RvdHlwZS5faW5uZXJVcGRhdGUu
Y2FsbGJhY2spOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk1ldHJpY3NTaWRlYmFyUGFuZS5wcm90
b3R5cGUuX2lubmVyVXBkYXRlLmlubGluZVN0eWxlQ2FsbGJhY2spOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLk1ldHJpY3NTaWRlYmFyUGFuZS5wcm90b3R5cGUuX2lubmVyVXBkYXRlKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5NZXRyaWNzU2lkZWJhclBhbmUucHJvdG90eXBlLl9zdHlsZVNoZWV0
Q2hhbmdlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTWV0cmljc1NpZGViYXJQYW5lLnByb3Rv
dHlwZS5fYXR0cmlidXRlc1VwZGF0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk1ldHJpY3NT
aWRlYmFyUGFuZS5wcm90b3R5cGUuc3RhcnRFZGl0aW5nKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5NZXRyaWNzU2lkZWJhclBhbmUucHJvdG90eXBlLmVkaXRpbmdFbmRlZCk6CisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qczoKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVz
U2lkZWJhclBhbmUucHJvdG90eXBlLnVwZGF0ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5
bGVzU2lkZWJhclBhbmUucHJvdG90eXBlLl9zdHlsZVNoZWV0Q2hhbmdlZCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUucHJvdG90eXBlLl9hdHRyaWJ1dGVzVXBkYXRl
ZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3Rv
dHlwZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnBy
b3RvdHlwZS5ldmVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVF
bGVtZW50LnByb3RvdHlwZS5lbGVtZW50LnVzZXJJbnB1dC5wcmV2aW91c0NvbnRlbnQuY29udGV4
dC5tb3ZlRGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnR5VHJl
ZUVsZW1lbnQucHJvdG90eXBlLnN0eWxlVGV4dC51cGRhdGVJbnRlcmZhY2UubWFqb3JDaGFuZ2Uu
aXNSZXZlcnQpOgorCiAyMDExLTA3LTE0ICBBbmRyZXkgS29zeWFrb3YgIDxjYXNlcUBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogcmVtb3ZlIG1vcmUgZGVhZCBjb2RlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTUFnZW50Lmpz
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01BZ2VudC5qcwppbmRleCBj
YjJlYmQ0NGNhNDRhMGRhMTI1MGM0ODJmMmIxYjA1ZjFiMmIwZTQ4Li5mYTE4YTkwMDY3NzliYTY4
ZGM3ZmVjNDM5NmMwNDI1MWNiNDBjMjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0RPTUFnZW50LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvRE9NQWdlbnQuanMKQEAgLTQyOSw2ICs0MjksMTEgQEAgV2ViSW5zcGVjdG9y
LkRPTUFnZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fbG9hZE5vZGVBdHRyaWJ1dGVz
U29vbihub2RlSWRzKTsKICAgICB9LAogCisgICAgX2lubGluZVN0eWxlSW52YWxpZGF0ZWQ6IGZ1
bmN0aW9uKG5vZGVJZHMpCisgICAgeworICAgICAgICB0aGlzLl9sb2FkTm9kZUF0dHJpYnV0ZXNT
b29uKG5vZGVJZHMpOworICAgIH0sCisKICAgICBfbG9hZE5vZGVBdHRyaWJ1dGVzU29vbjogZnVu
Y3Rpb24obm9kZUlkcykKICAgICB7CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZUlk
cy5sZW5ndGg7ICsraSkKQEAgLTU5MCw3ICs1OTUsNyBAQCBXZWJJbnNwZWN0b3IuRE9NRGlzcGF0
Y2hlci5wcm90b3R5cGUgPSB7CiAKICAgICBpbmxpbmVTdHlsZUludmFsaWRhdGVkOiBmdW5jdGlv
bihub2RlSWRzKQogICAgIHsKLSAgICAgICAgdGhpcy5fZG9tQWdlbnQuX2F0dHJpYnV0ZXNVcGRh
dGVkKG5vZGVJZHMpOworICAgICAgICB0aGlzLl9kb21BZ2VudC5faW5saW5lU3R5bGVJbnZhbGlk
YXRlZChub2RlSWRzKTsKICAgICB9LAogCiAgICAgY2hhcmFjdGVyRGF0YU1vZGlmaWVkOiBmdW5j
dGlvbihub2RlSWQsIG5ld1ZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9FbGVtZW50c1BhbmVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9FbGVtZW50c1BhbmVsLmpzCmluZGV4IGJhOWZkYjlhNDgyYWE2ZGNkZTM3ZTEz
ODkyZmNhM2Y4ZDIyMDY2OGYuLmQwYmJmNjU5MzlkY2M5NDQ5OTM3NmMzNzg0YWNjY2RkNzc4MDlh
NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVu
dHNQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1l
bnRzUGFuZWwuanMKQEAgLTkzLDcgKzkzLDYgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwg
PSBmdW5jdGlvbigpCiAgICAgdGhpcy5zaWRlYmFyUGFuZXMuc3R5bGVzLmFkZEV2ZW50TGlzdGVu
ZXIoInN0eWxlIGVkaXRlZCIsIHRoaXMuX3N0eWxlc1BhbmVFZGl0ZWQsIHRoaXMpOwogICAgIHRo
aXMuc2lkZWJhclBhbmVzLnN0eWxlcy5hZGRFdmVudExpc3RlbmVyKCJzdHlsZSBwcm9wZXJ0eSB0
b2dnbGVkIiwgdGhpcy5fc3R5bGVzUGFuZUVkaXRlZCwgdGhpcyk7CiAgICAgdGhpcy5zaWRlYmFy
UGFuZXMubWV0cmljcy5hZGRFdmVudExpc3RlbmVyKCJtZXRyaWNzIGVkaXRlZCIsIHRoaXMuX21l
dHJpY3NQYW5lRWRpdGVkLCB0aGlzKTsKLSAgICBXZWJJbnNwZWN0b3IuY3NzTW9kZWwuYWRkRXZl
bnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5FdmVudHMuU3R5bGVTaGVldENo
YW5nZWQsIHRoaXMuX3N0eWxlU2hlZXRDaGFuZ2VkLCB0aGlzKTsKIAogICAgIHRoaXMuc2lkZWJh
ckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICB0aGlzLnNpZGVi
YXJFbGVtZW50LmlkID0gImVsZW1lbnRzLXNpZGViYXIiOwpAQCAtNDI2LDI0ICs0MjUsMTEgQEAg
V2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLnRy
ZWVPdXRsaW5lLmZvY3VzZWRET01Ob2RlID0geDsKICAgICB9LAogCi0gICAgc3RhcnRFZGl0aW5n
U3R5bGU6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX2lzRWRpdGluZ1N0eWxlID0g
dHJ1ZTsKLSAgICB9LAotCi0gICAgZW5kRWRpdGluZ1N0eWxlOiBmdW5jdGlvbigpCi0gICAgewot
ICAgICAgICBkZWxldGUgdGhpcy5faXNFZGl0aW5nU3R5bGU7Ci0gICAgfSwKLQogICAgIF9hdHRy
aWJ1dGVzVXBkYXRlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLnJlY2Vu
dGx5TW9kaWZpZWROb2Rlcy5wdXNoKHtub2RlOiBldmVudC5kYXRhLCB1cGRhdGVkOiB0cnVlfSk7
CiAgICAgICAgIGlmICh0aGlzLnZpc2libGUpCiAgICAgICAgICAgICB0aGlzLl91cGRhdGVNb2Rp
ZmllZE5vZGVzU29vbigpOwotCi0gICAgICAgIGlmICghdGhpcy5faXNFZGl0aW5nU3R5bGUgJiYg
ZXZlbnQuZGF0YSA9PT0gdGhpcy5mb2N1c2VkRE9NTm9kZSkKLSAgICAgICAgICAgIHRoaXMuX3N0
eWxlU2hlZXRDaGFuZ2VkKCk7CiAgICAgfSwKIAogICAgIF9jaGFyYWN0ZXJEYXRhTW9kaWZpZWQ6
IGZ1bmN0aW9uKGV2ZW50KQpAQCAtNTM5LDEyICs1MjUsNiBAQCBXZWJJbnNwZWN0b3IuRWxlbWVu
dHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMudXBkYXRlU3R5bGVzKHRydWUpOwog
ICAgIH0sCiAKLSAgICBfc3R5bGVTaGVldENoYW5nZWQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAg
ICAgIHRoaXMuX21ldHJpY3NQYW5lRWRpdGVkKCk7Ci0gICAgICAgIHRoaXMuX3N0eWxlc1BhbmVF
ZGl0ZWQoKTsKLSAgICB9LAotCiAgICAgX21vdXNlTW92ZWRJbkNydW1iczogZnVuY3Rpb24oZXZl
bnQpCiAgICAgewogICAgICAgICB2YXIgbm9kZVVuZGVyTW91c2UgPSBkb2N1bWVudC5lbGVtZW50
RnJvbVBvaW50KGV2ZW50LnBhZ2VYLCBldmVudC5wYWdlWSk7CkBAIC0xMDE3LDEwICs5OTcsMTAg
QEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJvdG90eXBlID0gewogICAgIHsKICAgICAg
ICAgdmFyIHN0eWxlc1NpZGViYXJQYW5lID0gdGhpcy5zaWRlYmFyUGFuZXMuc3R5bGVzOwogICAg
ICAgICB2YXIgY29tcHV0ZWRTdHlsZVBhbmUgPSB0aGlzLnNpZGViYXJQYW5lcy5jb21wdXRlZFN0
eWxlOwotICAgICAgICBpZiAoKCFzdHlsZXNTaWRlYmFyUGFuZS5leHBhbmRlZCAmJiAhY29tcHV0
ZWRTdHlsZVBhbmUuZXhwYW5kZWQpIHx8ICFzdHlsZXNTaWRlYmFyUGFuZS5uZWVkc1VwZGF0ZSB8
fCB0aGlzLl9pc0VkaXRpbmdTdHlsZSkKKyAgICAgICAgaWYgKCghc3R5bGVzU2lkZWJhclBhbmUu
ZXhwYW5kZWQgJiYgIWNvbXB1dGVkU3R5bGVQYW5lLmV4cGFuZGVkKSB8fCAhc3R5bGVzU2lkZWJh
clBhbmUubmVlZHNVcGRhdGUpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgc3R5bGVz
U2lkZWJhclBhbmUudXBkYXRlKHRoaXMuZm9jdXNlZERPTU5vZGUsIG51bGwsIGZvcmNlVXBkYXRl
LCB0aGlzLl9zdHlsZXNVcGRhdGVkLmJpbmQodGhpcywgdGhpcy5mb2N1c2VkRE9NTm9kZSkpOwor
ICAgICAgICBzdHlsZXNTaWRlYmFyUGFuZS51cGRhdGUodGhpcy5mb2N1c2VkRE9NTm9kZSwgZm9y
Y2VVcGRhdGUsIHRoaXMuX3N0eWxlc1VwZGF0ZWQuYmluZCh0aGlzLCB0aGlzLmZvY3VzZWRET01O
b2RlKSk7CiAgICAgICAgIHN0eWxlc1NpZGViYXJQYW5lLm5lZWRzVXBkYXRlID0gZmFsc2U7CiAg
ICAgfSwKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9N
ZXRyaWNzU2lkZWJhclBhbmUuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L01ldHJpY3NTaWRlYmFyUGFuZS5qcwppbmRleCA5NjJhOTU2NzI4MDc1MDg4YmQyNWNkNzQ5ZDk0
NDI5OGVlYzlhOTU2Li5lY2UyODY3MmM4YTk5YjEzMzRiNGI1MjlkYWE5YzkzMjBjMjhmZWI2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL01ldHJpY3NTaWRl
YmFyUGFuZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL01ldHJp
Y3NTaWRlYmFyUGFuZS5qcwpAQCAtMjksNiArMjksOSBAQAogV2ViSW5zcGVjdG9yLk1ldHJpY3NT
aWRlYmFyUGFuZSA9IGZ1bmN0aW9uKCkKIHsKICAgICBXZWJJbnNwZWN0b3IuU2lkZWJhclBhbmUu
Y2FsbCh0aGlzLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk1ldHJpY3MiKSk7CisKKyAgICBXZWJJ
bnNwZWN0b3IuY3NzTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQ1NTU3R5bGVN
b2RlbC5FdmVudHMuU3R5bGVTaGVldENoYW5nZWQsIHRoaXMuX3N0eWxlU2hlZXRDaGFuZ2VkLCB0
aGlzKTsKKyAgICBXZWJJbnNwZWN0b3IuZG9tQWdlbnQuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNw
ZWN0b3IuRE9NQWdlbnQuRXZlbnRzLkF0dHJNb2RpZmllZCwgdGhpcy5fYXR0cmlidXRlc1VwZGF0
ZWQsIHRoaXMpOwogfQogCiBXZWJJbnNwZWN0b3IuTWV0cmljc1NpZGViYXJQYW5lLnByb3RvdHlw
ZSA9IHsKQEAgLTM2LDMwICszOSw1MCBAQCBXZWJJbnNwZWN0b3IuTWV0cmljc1NpZGViYXJQYW5l
LnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIGlmIChub2RlKQogICAgICAgICAgICAgdGhp
cy5ub2RlID0gbm9kZTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbm9kZSA9IHRoaXMubm9k
ZTsKKyAgICAgICAgdGhpcy5faW5uZXJVcGRhdGUoKTsKKyAgICB9LAorCisgICAgX2lubmVyVXBk
YXRlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgbm9kZSA9IHRoaXMubm9kZTsKIAog
ICAgICAgICBpZiAoIW5vZGUgfHwgbm9kZS5ub2RlVHlwZSgpICE9PSBOb2RlLkVMRU1FTlRfTk9E
RSkgewogICAgICAgICAgICAgdGhpcy5ib2R5RWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwot
ICAgICAgICB2YXIgY2FsbGJhY2sgPSBmdW5jdGlvbihzdHlsZSkgewotICAgICAgICAgICAgaWYg
KCFzdHlsZSkKKyAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2soc3R5bGUpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGlmICghc3R5bGUgfHwgdGhpcy5ub2RlICE9PSBub2RlKQogICAgICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgICAgIHNlbGYuX3VwZGF0ZShzdHlsZSk7Ci0gICAgICAgIH07
Ci0gICAgICAgIFdlYkluc3BlY3Rvci5jc3NNb2RlbC5nZXRDb21wdXRlZFN0eWxlQXN5bmMobm9k
ZS5pZCwgY2FsbGJhY2spOworICAgICAgICAgICAgdGhpcy5fdXBkYXRlTWV0cmljcyhzdHlsZSk7
CisgICAgICAgIH0KKyAgICAgICAgV2ViSW5zcGVjdG9yLmNzc01vZGVsLmdldENvbXB1dGVkU3R5
bGVBc3luYyhub2RlLmlkLCBjYWxsYmFjay5iaW5kKHRoaXMpKTsKIAotICAgICAgICB2YXIgaW5s
aW5lU3R5bGVDYWxsYmFjayA9IGZ1bmN0aW9uKHN0eWxlKSB7Ci0gICAgICAgICAgICBpZiAoIXN0
eWxlKQorICAgICAgICBmdW5jdGlvbiBpbmxpbmVTdHlsZUNhbGxiYWNrKHN0eWxlKQorICAgICAg
ICB7CisgICAgICAgICAgICBpZiAoIXN0eWxlIHx8IHRoaXMubm9kZSAhPT0gbm9kZSkKICAgICAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBzZWxmLmlubGluZVN0eWxlID0gc3R5bGU7
Ci0gICAgICAgIH07Ci0gICAgICAgIFdlYkluc3BlY3Rvci5jc3NNb2RlbC5nZXRJbmxpbmVTdHls
ZUFzeW5jKG5vZGUuaWQsIGlubGluZVN0eWxlQ2FsbGJhY2spOworICAgICAgICAgICAgdGhpcy5p
bmxpbmVTdHlsZSA9IHN0eWxlOworICAgICAgICB9CisgICAgICAgIFdlYkluc3BlY3Rvci5jc3NN
b2RlbC5nZXRJbmxpbmVTdHlsZUFzeW5jKG5vZGUuaWQsIGlubGluZVN0eWxlQ2FsbGJhY2suYmlu
ZCh0aGlzKSk7CiAgICAgfSwKIAorICAgIF9zdHlsZVNoZWV0Q2hhbmdlZDogZnVuY3Rpb24oKQor
ICAgIHsKKyAgICAgICAgdGhpcy5faW5uZXJVcGRhdGUoKTsKKyAgICB9LAorCisgICAgX2F0dHJp
YnV0ZXNVcGRhdGVkOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLm5v
ZGUgIT09IGV2ZW50LmRhdGEpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgLy8gInN0
eWxlIiBhdHRyaWJ1dGUgbWlnaHQgaGF2ZSBjaGFuZ2VkLiB1cGRhdGUgc3R5bGVzIHVubGVzcyB0
aGV5IGFyZSBiZWluZyBlZGl0ZWQuCisgICAgICAgIGlmICghdGhpcy5faXNFZGl0aW5nTWV0cmlj
cykKKyAgICAgICAgICAgIHRoaXMuX2lubmVyVXBkYXRlKCk7CisgICAgfSwgICAgCisKICAgICBf
Z2V0UHJvcGVydHlWYWx1ZUFzUHg6IGZ1bmN0aW9uKHN0eWxlLCBwcm9wZXJ0eU5hbWUpCiAgICAg
ewogICAgICAgICByZXR1cm4gTnVtYmVyKHN0eWxlLmdldFByb3BlcnR5VmFsdWUocHJvcGVydHlO
YW1lKS5yZXBsYWNlKC9weCQvLCAiIikgfHwgMCk7CkBAIC0xMjQsNyArMTQ3LDcgQEAgV2ViSW5z
cGVjdG9yLk1ldHJpY3NTaWRlYmFyUGFuZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIFdlYkluc3Bl
Y3Rvci5oaWdobGlnaHRET01Ob2RlKG5vZGVJZCwgbW9kZSk7CiAgICAgfSwKIAotICAgIF91cGRh
dGU6IGZ1bmN0aW9uKHN0eWxlKQorICAgIF91cGRhdGVNZXRyaWNzOiBmdW5jdGlvbihzdHlsZSkK
ICAgICB7CiAgICAgICAgIC8vIFVwZGF0aW5nIHdpdGggY29tcHV0ZWQgc3R5bGUuCiAgICAgICAg
IHZhciBtZXRyaWNzRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwpAQCAt
MjcyLDcgKzI5NSw3IEBAIFdlYkluc3BlY3Rvci5NZXRyaWNzU2lkZWJhclBhbmUucHJvdG90eXBl
ID0gewogICAgICAgICBjb250ZXh0LmtleURvd25IYW5kbGVyID0gYm91bmRLZXlEb3duOwogICAg
ICAgICB0YXJnZXRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCBib3VuZEtleURv
d24sIGZhbHNlKTsKIAotICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLmVsZW1lbnRzLnN0YXJ0
RWRpdGluZ1N0eWxlKCk7CisgICAgICAgIHRoaXMuX2lzRWRpdGluZ01ldHJpY3MgPSB0cnVlOwog
ICAgICAgICBXZWJJbnNwZWN0b3Iuc3RhcnRFZGl0aW5nKHRhcmdldEVsZW1lbnQsIHsKICAgICAg
ICAgICAgIGNvbnRleHQ6IGNvbnRleHQsCiAgICAgICAgICAgICBjb21taXRIYW5kbGVyOiB0aGlz
LmVkaXRpbmdDb21taXR0ZWQuYmluZCh0aGlzKSwKQEAgLTM0MCw3ICszNjMsNyBAQCBXZWJJbnNw
ZWN0b3IuTWV0cmljc1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKICAgICAgICAgZGVsZXRlIHRo
aXMub3JpZ2luYWxQcm9wZXJ0eURhdGE7CiAgICAgICAgIGRlbGV0ZSB0aGlzLnByZXZpb3VzUHJv
cGVydHlEYXRhQ2FuZGlkYXRlOwogICAgICAgICBlbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIo
ImtleWRvd24iLCBjb250ZXh0LmtleURvd25IYW5kbGVyLCBmYWxzZSk7Ci0gICAgICAgIFdlYklu
c3BlY3Rvci5wYW5lbHMuZWxlbWVudHMuZW5kRWRpdGluZ1N0eWxlKCk7CisgICAgICAgIGRlbGV0
ZSB0aGlzLl9pc0VkaXRpbmdNZXRyaWNzOwogICAgIH0sCiAKICAgICBlZGl0aW5nQ2FuY2VsbGVk
OiBmdW5jdGlvbihlbGVtZW50LCBjb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qcyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanMKaW5kZXggZDY5YjM3ZTQw
MDI3YjU2NjMwMmZkNzczYWVlZmJkYTVlOTNlYWQ0Ni4uYjBkZTc4ODk3ODAzMTEyYThiMThkODJk
YzgzOTljN2Y2OWQyYmFmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzCkBAIC04Myw2ICs4Myw5IEBAIFdlYklu
c3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZSA9IGZ1bmN0aW9uKGNvbXB1dGVkU3R5bGVQYW5lKQog
ICAgIHRoaXMuYm9keUVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fZWxlbWVudFN0YXRlUGFuZSk7
CiAgICAgdGhpcy5fc2VjdGlvbnNDb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJk
aXYiKTsKICAgICB0aGlzLmJvZHlFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3NlY3Rpb25zQ29u
dGFpbmVyKTsKKworICAgIFdlYkluc3BlY3Rvci5jc3NNb2RlbC5hZGRFdmVudExpc3RlbmVyKFdl
Ykluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLkV2ZW50cy5TdHlsZVNoZWV0Q2hhbmdlZCwgdGhpcy5f
c3R5bGVTaGVldENoYW5nZWQsIHRoaXMpOworICAgIFdlYkluc3BlY3Rvci5kb21BZ2VudC5hZGRF
dmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5ET01BZ2VudC5FdmVudHMuQXR0ck1vZGlmaWVkLCB0
aGlzLl9hdHRyaWJ1dGVzVXBkYXRlZCwgdGhpcyk7CiB9CiAKIFdlYkluc3BlY3Rvci5TdHlsZXNT
aWRlYmFyUGFuZS5Db2xvckZvcm1hdCA9IHsKQEAgLTIxMCwxNCArMjEzLDE0IEBAIFdlYkluc3Bl
Y3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KICAgICB9LAog
Ci0gICAgdXBkYXRlOiBmdW5jdGlvbihub2RlLCBlZGl0ZWRTZWN0aW9uLCBmb3JjZVVwZGF0ZSwg
Y2FsbGJhY2spCisgICAgdXBkYXRlOiBmdW5jdGlvbihub2RlLCBmb3JjZVVwZGF0ZSwgY2FsbGJh
Y2spCiAgICAgewogICAgICAgICB2YXIgcmVmcmVzaCA9IGZhbHNlOwogCiAgICAgICAgIGlmIChm
b3JjZVVwZGF0ZSkKICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLm5vZGU7CiAKLSAgICAgICAgaWYg
KCFmb3JjZVVwZGF0ZSAmJiAoIW5vZGUgfHwgbm9kZSA9PT0gdGhpcy5ub2RlKSkKKyAgICAgICAg
aWYgKCFmb3JjZVVwZGF0ZSAmJiAobm9kZSA9PT0gdGhpcy5ub2RlKSkKICAgICAgICAgICAgIHJl
ZnJlc2ggPSB0cnVlOwogCiAgICAgICAgIGlmIChub2RlICYmIG5vZGUubm9kZVR5cGUoKSA9PT0g
Tm9kZS5URVhUX05PREUgJiYgbm9kZS5wYXJlbnROb2RlKQpAQCAtMjMxLDYgKzIzNCwxMiBAQCBX
ZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUucHJvdG90eXBlID0gewogICAgICAgICBlbHNl
CiAgICAgICAgICAgICBub2RlID0gdGhpcy5ub2RlOwogCisgICAgICAgIHRoaXMuX2lubmVyVXBk
YXRlKHJlZnJlc2gsIG51bGwsIGNhbGxiYWNrKTsKKyAgICB9LAorCisgICAgX2lubmVyVXBkYXRl
OiBmdW5jdGlvbihyZWZyZXNoLCBlZGl0ZWRTZWN0aW9uLCBjYWxsYmFjaykKKyAgICB7CisgICAg
ICAgIHZhciBub2RlID0gdGhpcy5ub2RlOwogICAgICAgICBpZiAoIW5vZGUpIHsKICAgICAgICAg
ICAgIHRoaXMuX3NlY3Rpb25zQ29udGFpbmVyLnJlbW92ZUNoaWxkcmVuKCk7CiAgICAgICAgICAg
ICB0aGlzLl9jb21wdXRlZFN0eWxlUGFuZS5ib2R5RWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOwpA
QCAtMjYyLDYgKzI3MSwyNCBAQCBXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUucHJvdG90
eXBlID0gewogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmNzc01vZGVsLmdldFN0eWxlc0FzeW5j
KG5vZGUuaWQsIHRoaXMuX2ZvcmNlZFBzZXVkb0NsYXNzZXMsIHN0eWxlc0NhbGxiYWNrLmJpbmQo
dGhpcykpOwogICAgIH0sCiAKKyAgICBfc3R5bGVTaGVldENoYW5nZWQ6IGZ1bmN0aW9uKCkKKyAg
ICB7CisgICAgICAgIGlmICh0aGlzLl91c2VyT3BlcmF0aW9uKQorICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgIHRoaXMuX2lubmVyVXBkYXRlKGZhbHNlKTsKKyAgICB9LAorCisgICAgX2F0
dHJpYnV0ZXNVcGRhdGVkOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIGlmICh0aGlz
Lm5vZGUgIT09IGV2ZW50LmRhdGEpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgLy8g
InN0eWxlIiBhdHRyaWJ1dGUgbWlnaHQgaGF2ZSBjaGFuZ2VkLiB1cGRhdGUgc3R5bGVzIHVubGVz
cyB0aGV5IGFyZSBiZWluZyBlZGl0ZWQuCisgICAgICAgIGlmICghdGhpcy5faXNFZGl0aW5nU3R5
bGUpCisgICAgICAgICAgICB0aGlzLl9pbm5lclVwZGF0ZShmYWxzZSk7CisgICAgfSwKKwogICAg
IF9yZWZyZXNoVXBkYXRlOiBmdW5jdGlvbihub2RlLCBjb21wdXRlZFN0eWxlLCBlZGl0ZWRTZWN0
aW9uKQogICAgIHsKICAgICAgICAgZm9yICh2YXIgcHNldWRvSWQgaW4gdGhpcy5zZWN0aW9ucykg
ewpAQCAtMTU4MSwxMiArMTYwOCwxMiBAQCBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVF
bGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy50b29sdGlwID0gdGhpcy5wcm9wZXJ0
eS5wcm9wZXJ0eVRleHQ7CiAgICAgfSwKIAotICAgIHVwZGF0ZUFsbDogZnVuY3Rpb24odXBkYXRl
QWxsUnVsZXMpCisgICAgX3VwZGF0ZUFsbDogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgaWYg
KCF0aGlzLnRyZWVPdXRsaW5lKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBpZiAodXBk
YXRlQWxsUnVsZXMgJiYgdGhpcy50cmVlT3V0bGluZS5zZWN0aW9uICYmIHRoaXMudHJlZU91dGxp
bmUuc2VjdGlvbi5wYW5lKQotICAgICAgICAgICAgdGhpcy50cmVlT3V0bGluZS5zZWN0aW9uLnBh
bmUudXBkYXRlKG51bGwsIHRoaXMudHJlZU91dGxpbmUuc2VjdGlvbik7CisgICAgICAgIGlmICh0
aGlzLnRyZWVPdXRsaW5lLnNlY3Rpb24gJiYgdGhpcy50cmVlT3V0bGluZS5zZWN0aW9uLnBhbmUp
CisgICAgICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLnNlY3Rpb24ucGFuZS5faW5uZXJVcGRhdGUo
dHJ1ZSwgdGhpcy50cmVlT3V0bGluZS5zZWN0aW9uKTsKICAgICAgICAgZWxzZSBpZiAodGhpcy50
cmVlT3V0bGluZS5zZWN0aW9uKQogICAgICAgICAgICAgdGhpcy50cmVlT3V0bGluZS5zZWN0aW9u
LnVwZGF0ZSh0cnVlKTsKICAgICAgICAgZWxzZQpAQCAtMTYwOCw3ICsxNjM1LDcgQEAgV2ViSW5z
cGVjdG9yLlN0eWxlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAg
ICBpZiAodGhpcy50cmVlT3V0bGluZS5zZWN0aW9uICYmIHRoaXMudHJlZU91dGxpbmUuc2VjdGlv
bi5wYW5lKQogICAgICAgICAgICAgICAgIHRoaXMudHJlZU91dGxpbmUuc2VjdGlvbi5wYW5lLmRp
c3BhdGNoRXZlbnRUb0xpc3RlbmVycygic3R5bGUgcHJvcGVydHkgdG9nZ2xlZCIpOwogCi0gICAg
ICAgICAgICB0aGlzLnVwZGF0ZUFsbCh0cnVlKTsKKyAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUFs
bCgpOwogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5wcm9wZXJ0eS5zZXREaXNhYmxlZChkaXNh
YmxlZCwgY2FsbGJhY2suYmluZCh0aGlzKSk7CkBAIC0xNzg1LDcgKzE4MTIsOCBAQCBXZWJJbnNw
ZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgfQog
CiAgICAgICAgIGRlbGV0ZSB0aGlzLm9yaWdpbmFsUHJvcGVydHlUZXh0OwotICAgICAgICBXZWJJ
bnNwZWN0b3IucGFuZWxzLmVsZW1lbnRzLnN0YXJ0RWRpdGluZ1N0eWxlKCk7CisKKyAgICAgICAg
dGhpcy50cmVlT3V0bGluZS5zZWN0aW9uLnBhbmUuX2lzRWRpdGluZ1N0eWxlID0gdHJ1ZTsKICAg
ICAgICAgV2ViSW5zcGVjdG9yLnN0YXJ0RWRpdGluZyhzZWxlY3RFbGVtZW50LCB7CiAgICAgICAg
ICAgICBjb250ZXh0OiBjb250ZXh0LAogICAgICAgICAgICAgY29tbWl0SGFuZGxlcjogdGhpcy5l
ZGl0aW5nQ29tbWl0dGVkLmJpbmQodGhpcyksCkBAIC0xOTA2LDggKzE5MzQsNyBAQCBXZWJJbnNw
ZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAg
IGVkaXRlZEVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsIGNvbnRleHQua2V5
RG93bkxpc3RlbmVyLCBmYWxzZSk7CiAgICAgICAgIGlmIChlZGl0ZWRFbGVtZW50LnBhcmVudEVs
ZW1lbnQpCiAgICAgICAgICAgICBlZGl0ZWRFbGVtZW50LnBhcmVudEVsZW1lbnQucmVtb3ZlU3R5
bGVDbGFzcygiY2hpbGQtZWRpdGluZyIpOwotCi0gICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMu
ZWxlbWVudHMuZW5kRWRpdGluZ1N0eWxlKCk7CisgICAgICAgIGRlbGV0ZSB0aGlzLnRyZWVPdXRs
aW5lLnNlY3Rpb24ucGFuZS5faXNFZGl0aW5nU3R5bGU7CiAgICAgfSwKIAogICAgIGVkaXRpbmdD
YW5jZWxsZWQ6IGZ1bmN0aW9uKGVsZW1lbnQsIGNvbnRleHQpCkBAIC0xOTYxLDcgKzE5ODgsNiBA
QCBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAg
ICAgICAgdmFyIGlzRGlydHlWaWFQYXN0ZSA9IGlzRGF0YVBhc3RlZCAmJiAodGhpcy5uYW1lRWxl
bWVudC50ZXh0Q29udGVudCAhPT0gY29udGV4dC5vcmlnaW5hbE5hbWUgfHwgdGhpcy52YWx1ZUVs
ZW1lbnQudGV4dENvbnRlbnQgIT09IGNvbnRleHQub3JpZ2luYWxWYWx1ZSk7CiAgICAgICAgIHZh
ciBzaG91bGRDb21taXROZXdQcm9wZXJ0eSA9IHRoaXMuX25ld1Byb3BlcnR5ICYmIChtb3ZlVG9P
dGhlciB8fCAoIW1vdmVEaXJlY3Rpb24gJiYgIWlzRWRpdGluZ05hbWUpIHx8IChpc0VkaXRpbmdO
YW1lICYmIGJsYW5rSW5wdXQpKTsKICAgICAgICAgaWYgKCgodXNlcklucHV0ICE9PSBwcmV2aW91
c0NvbnRlbnQgfHwgaXNEaXJ0eVZpYVBhc3RlKSAmJiAhdGhpcy5fbmV3UHJvcGVydHkpIHx8IHNo
b3VsZENvbW1pdE5ld1Byb3BlcnR5KSB7Ci0gICAgICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxz
LmVsZW1lbnRzLnN0YXJ0RWRpdGluZ1N0eWxlKCk7CiAgICAgICAgICAgICB0aGlzLnRyZWVPdXRs
aW5lLnNlY3Rpb24uX2FmdGVyVXBkYXRlID0gbW92ZVRvTmV4dENhbGxiYWNrLmJpbmQodGhpcywg
dGhpcy5fbmV3UHJvcGVydHksICFibGFua0lucHV0LCB0aGlzLnRyZWVPdXRsaW5lLnNlY3Rpb24p
OwogICAgICAgICAgICAgdmFyIHByb3BlcnR5VGV4dDsKICAgICAgICAgICAgIGlmIChibGFua0lu
cHV0IHx8ICh0aGlzLl9uZXdQcm9wZXJ0eSAmJiAvXlxzKiQvLnRlc3QodGhpcy52YWx1ZUVsZW1l
bnQudGV4dENvbnRlbnQpKSkKQEAgLTE5ODQsOCArMjAxMCw2IEBAIFdlYkluc3BlY3Rvci5TdHls
ZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAvLyBUaGUgQ2FsbGJh
Y2sgdG8gc3RhcnQgZWRpdGluZyB0aGUgbmV4dC9wcmV2aW91cyBwcm9wZXJ0eS9zZWxlY3Rvci4K
ICAgICAgICAgZnVuY3Rpb24gbW92ZVRvTmV4dENhbGxiYWNrKGFscmVhZHlOZXcsIHZhbHVlQ2hh
bmdlZCwgc2VjdGlvbikKICAgICAgICAgewotICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVs
cy5lbGVtZW50cy5lbmRFZGl0aW5nU3R5bGUoKTsKLQogICAgICAgICAgICAgaWYgKCFtb3ZlRGly
ZWN0aW9uKQogICAgICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMjA3MCw4ICsyMDk0LDExIEBA
IFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKKyAgICAgICAgdmFyIGN1cnJlbnROb2RlID0g
c2VjdGlvbi5wYW5lLm5vZGU7CisgICAgICAgIHNlY3Rpb24ucGFuZS5fdXNlck9wZXJhdGlvbiA9
IHRydWU7CiAgICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrKG9yaWdpbmFsUHJvcGVydHlUZXh0LCBu
ZXdTdHlsZSkKICAgICAgICAgeworICAgICAgICAgICAgZGVsZXRlIHNlY3Rpb24ucGFuZS5fdXNl
ck9wZXJhdGlvbjsKICAgICAgICAgICAgIGlmICghbmV3U3R5bGUpIHsKICAgICAgICAgICAgICAg
ICBpZiAodXBkYXRlSW50ZXJmYWNlKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIEl0IGRpZCBu
b3QgYXBwbHksIGNhbmNlbCBlZGl0aW5nLgpAQCAtMjA4NywxNCArMjExNCwxNSBAQCBXZWJJbnNw
ZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAg
IGlmIChzZWN0aW9uICYmIHNlY3Rpb24ucGFuZSkKICAgICAgICAgICAgICAgICBzZWN0aW9uLnBh
bmUuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKCJzdHlsZSBlZGl0ZWQiKTsKIAotICAgICAgICAg
ICAgaWYgKHVwZGF0ZUludGVyZmFjZSkKLSAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUFsbCh0
cnVlKTsKKyAgICAgICAgICAgIGlmICh1cGRhdGVJbnRlcmZhY2UgJiYgY3VycmVudE5vZGUgPT09
IHNlY3Rpb24ucGFuZS5ub2RlKQorICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUFsbCgpOwog
ICAgICAgICB9CiAKICAgICAgICAgLy8gQXBwZW5kIGEgIjsiIGlmIHRoZSBuZXcgdGV4dCBkb2Vz
IG5vdCBlbmQgaW4gIjsiLgogICAgICAgICAvLyBGSVhNRTogdGhpcyBkb2VzIG5vdCBoYW5kbGUg
dHJhaWxpbmcgY29tbWVudHMuCiAgICAgICAgIGlmIChzdHlsZVRleHQubGVuZ3RoICYmICEvO1xz
KiQvLnRlc3Qoc3R5bGVUZXh0KSkKICAgICAgICAgICAgIHN0eWxlVGV4dCArPSAiOyI7CisKICAg
ICAgICAgdGhpcy5wcm9wZXJ0eS5zZXRUZXh0KHN0eWxlVGV4dCwgbWFqb3JDaGFuZ2UsIGNhbGxi
YWNrLmJpbmQodGhpcywgdGhpcy5vcmlnaW5hbFByb3BlcnR5VGV4dCkpOwogICAgIH0KIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100814</attachid>
            <date>2011-07-14 09:14:51 -0700</date>
            <delta_ts>2011-07-15 08:07:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64283-20110714201449.patch</filename>
            <type>text/plain</type>
            <size>20475</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTA5OTgKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXRlc3QuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9lbGVtZW50cy10ZXN0LmpzCmluZGV4IDkyOGI0ZmM4YWUyMjQyOWYxZTE4MTY1
ZWM2MDBkYjczYTIwZTYxOGQuLmMyY2UxMWEzN2JlYjc5ODk0MTQ3M2M3NjgyMzY2MGFkZmY2Y2Q2
YTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRz
LXRlc3QuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMt
dGVzdC5qcwpAQCAtODQsNyArODQsNyBAQCBJbnNwZWN0b3JUZXN0LndhaXRGb3JTdHlsZXMgPSBm
dW5jdGlvbihpZFZhbHVlLCBjYWxsYmFjaykKICAgICAgICAgICAgIGNhbGxiYWNrKCk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRTbmlm
ZmVyKFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZSwgIl9zdHlsZXNVcGRhdGVk
Iiwgc25pZmYpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFNuaWZmZXIoV2ViSW5zcGVjdG9y
LlN0eWxlc1NpZGViYXJQYW5lLnByb3RvdHlwZSwgIl9ub2RlU3R5bGVzVXBkYXRlZEZvclRlc3Qi
LCBzbmlmZik7CiAgICAgfSkobnVsbCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlZDBjZTg3MTBhYzU4
ODc3YzM5MTAzYWFkYTAxNGM3YmE2MzRmYmI3Li5mNjkxYzk2Y2JiZjg5NmU2NDE2NGQyMTA2Y2E4
YjUxZjk5ZTY5MDc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcgQEAKKzIwMTEtMDctMTQgIFBh
dmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBnb29nbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IEZvY3VzaW5nIG9uIGFub3RoZXIgbm9kZSB3aGlsZSBlZGl0aW5nIENTUyBwcm9wZXJ0eSBk
b2VzIG5vdCB1cGRhdGUgc3R5bGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD02NDI4MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9ET01BZ2VudC5qczoKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5ET01BZ2VudC5wcm90b3R5cGUuX2lubGluZVN0eWxlSW52YWxpZGF0ZWQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTURpc3BhdGNoZXIucHJvdG90eXBlLmlubGluZVN0
eWxlSW52YWxpZGF0ZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQ
YW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZS5fYXR0cmlidXRlc1VwZGF0ZWQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJvdG90eXBlLnVwZGF0ZVN0
eWxlcyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9NZXRyaWNzU2lkZWJhclBhbmUu
anM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTWV0cmljc1NpZGViYXJQYW5lKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5NZXRyaWNzU2lkZWJhclBhbmUucHJvdG90eXBlLnVwZGF0ZSk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuTWV0cmljc1NpZGViYXJQYW5lLnByb3RvdHlwZS5faW5uZXJVcGRh
dGUuY2FsbGJhY2spOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk1ldHJpY3NTaWRlYmFyUGFuZS5w
cm90b3R5cGUuX2lubmVyVXBkYXRlLmlubGluZVN0eWxlQ2FsbGJhY2spOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLk1ldHJpY3NTaWRlYmFyUGFuZS5wcm90b3R5cGUuX2lubmVyVXBkYXRlKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5NZXRyaWNzU2lkZWJhclBhbmUucHJvdG90eXBlLl9zdHlsZVNo
ZWV0Q2hhbmdlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTWV0cmljc1NpZGViYXJQYW5lLnBy
b3RvdHlwZS5fYXR0cmlidXRlc1VwZGF0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk1ldHJp
Y3NTaWRlYmFyUGFuZS5wcm90b3R5cGUuc3RhcnRFZGl0aW5nKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5NZXRyaWNzU2lkZWJhclBhbmUucHJvdG90eXBlLmVkaXRpbmdFbmRlZCk6CisgICAgICAg
ICogaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qczoKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5
bGVzU2lkZWJhclBhbmUucHJvdG90eXBlLnVwZGF0ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
U3R5bGVzU2lkZWJhclBhbmUucHJvdG90eXBlLl9zdHlsZVNoZWV0Q2hhbmdlZCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUucHJvdG90eXBlLl9hdHRyaWJ1dGVzVXBk
YXRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnBy
b3RvdHlwZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50
LnByb3RvdHlwZS5ldmVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRy
ZWVFbGVtZW50LnByb3RvdHlwZS5lbGVtZW50LnVzZXJJbnB1dC5wcmV2aW91c0NvbnRlbnQuY29u
dGV4dC5tb3ZlRGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnR5
VHJlZUVsZW1lbnQucHJvdG90eXBlLnN0eWxlVGV4dC51cGRhdGVJbnRlcmZhY2UubWFqb3JDaGFu
Z2UuaXNSZXZlcnQpOgorCiAyMDExLTA3LTE0ICBBbmRyZXkgS29zeWFrb3YgIDxjYXNlcUBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogcmVtb3ZlIG1vcmUgZGVhZCBjb2Rl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1N0eWxl
TW9kZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1N0eWxlTW9k
ZWwuanMKaW5kZXggZTRlODcyM2I5YTcwZWI4NTRmNDRjOGZkOTU2NGJiNmViY2RkNTM2YS4uMWM4
NDNkNmEwOGIwNDk2ZDA0ODczZTQ3ZWZhY2Y1MzA0M2VjMzJlMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTdHlsZU1vZGVsLmpzCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTU3R5bGVNb2RlbC5qcwpAQCAtNTEzLDgg
KzUxMyw4IEBAIFdlYkluc3BlY3Rvci5DU1NQcm9wZXJ0eS5wcm90b3R5cGUgPSB7CiAgICAgICAg
IGZ1bmN0aW9uIGVuYWJsZWRDYWxsYmFjayhzdHlsZSkKICAgICAgICAgewogICAgICAgICAgICAg
aWYgKHN0eWxlKQotICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5jc3NNb2RlbC5fZmlyZVN0
eWxlU2hlZXRDaGFuZ2VkKHN0eWxlLmlkLnN0eWxlU2hlZXRJZCwgbWFqb3JDaGFuZ2UpOwotICAg
ICAgICAgICAgaWYgKHVzZXJDYWxsYmFjaykKKyAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3Iu
Y3NzTW9kZWwuX2ZpcmVTdHlsZVNoZWV0Q2hhbmdlZChzdHlsZS5pZC5zdHlsZVNoZWV0SWQsIG1h
am9yQ2hhbmdlLCB1c2VyQ2FsbGJhY2sgPyB1c2VyQ2FsbGJhY2suYmluZCh0aGlzLCBzdHlsZSkg
OiBudWxsKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHVzZXJDYWxsYmFjaykKICAgICAgICAgICAg
ICAgICB1c2VyQ2FsbGJhY2soc3R5bGUpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9NQWdlbnQuanMgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTUFnZW50LmpzCmluZGV4IGNiMmViZDQ0Y2E0NGEwZGEx
MjUwYzQ4MmYyYjFiMDVmMWIyYjBlNDguLmZhMThhOTAwNjc3OWJhNjhkYzdmZWM0Mzk2YzA0MjUx
Y2I0MGMyNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
RE9NQWdlbnQuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01B
Z2VudC5qcwpAQCAtNDI5LDYgKzQyOSwxMSBAQCBXZWJJbnNwZWN0b3IuRE9NQWdlbnQucHJvdG90
eXBlID0gewogICAgICAgICB0aGlzLl9sb2FkTm9kZUF0dHJpYnV0ZXNTb29uKG5vZGVJZHMpOwog
ICAgIH0sCiAKKyAgICBfaW5saW5lU3R5bGVJbnZhbGlkYXRlZDogZnVuY3Rpb24obm9kZUlkcykK
KyAgICB7CisgICAgICAgIHRoaXMuX2xvYWROb2RlQXR0cmlidXRlc1Nvb24obm9kZUlkcyk7Cisg
ICAgfSwKKwogICAgIF9sb2FkTm9kZUF0dHJpYnV0ZXNTb29uOiBmdW5jdGlvbihub2RlSWRzKQog
ICAgIHsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2RlSWRzLmxlbmd0aDsgKytpKQpA
QCAtNTkwLDcgKzU5NSw3IEBAIFdlYkluc3BlY3Rvci5ET01EaXNwYXRjaGVyLnByb3RvdHlwZSA9
IHsKIAogICAgIGlubGluZVN0eWxlSW52YWxpZGF0ZWQ6IGZ1bmN0aW9uKG5vZGVJZHMpCiAgICAg
ewotICAgICAgICB0aGlzLl9kb21BZ2VudC5fYXR0cmlidXRlc1VwZGF0ZWQobm9kZUlkcyk7Cisg
ICAgICAgIHRoaXMuX2RvbUFnZW50Ll9pbmxpbmVTdHlsZUludmFsaWRhdGVkKG5vZGVJZHMpOwog
ICAgIH0sCiAKICAgICBjaGFyYWN0ZXJEYXRhTW9kaWZpZWQ6IGZ1bmN0aW9uKG5vZGVJZCwgbmV3
VmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Vs
ZW1lbnRzUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1l
bnRzUGFuZWwuanMKaW5kZXggYmE5ZmRiOWE0ODJhYTZkY2RlMzdlMTM4OTJmY2EzZjhkMjIwNjY4
Zi4uMTJhOTMxZmNiMWIwMjdhZTgzOTVjOTFjNzAwMzUzN2IwYzkxNDRlMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1BhbmVsLmpzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5lbC5qcwpAQCAt
OTMsNyArOTMsNiBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbCA9IGZ1bmN0aW9uKCkKICAg
ICB0aGlzLnNpZGViYXJQYW5lcy5zdHlsZXMuYWRkRXZlbnRMaXN0ZW5lcigic3R5bGUgZWRpdGVk
IiwgdGhpcy5fc3R5bGVzUGFuZUVkaXRlZCwgdGhpcyk7CiAgICAgdGhpcy5zaWRlYmFyUGFuZXMu
c3R5bGVzLmFkZEV2ZW50TGlzdGVuZXIoInN0eWxlIHByb3BlcnR5IHRvZ2dsZWQiLCB0aGlzLl9z
dHlsZXNQYW5lRWRpdGVkLCB0aGlzKTsKICAgICB0aGlzLnNpZGViYXJQYW5lcy5tZXRyaWNzLmFk
ZEV2ZW50TGlzdGVuZXIoIm1ldHJpY3MgZWRpdGVkIiwgdGhpcy5fbWV0cmljc1BhbmVFZGl0ZWQs
IHRoaXMpOwotICAgIFdlYkluc3BlY3Rvci5jc3NNb2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYklu
c3BlY3Rvci5DU1NTdHlsZU1vZGVsLkV2ZW50cy5TdHlsZVNoZWV0Q2hhbmdlZCwgdGhpcy5fc3R5
bGVTaGVldENoYW5nZWQsIHRoaXMpOwogCiAgICAgdGhpcy5zaWRlYmFyRWxlbWVudCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgIHRoaXMuc2lkZWJhckVsZW1lbnQuaWQgPSAi
ZWxlbWVudHMtc2lkZWJhciI7CkBAIC00MjYsMjQgKzQyNSwxMSBAQCBXZWJJbnNwZWN0b3IuRWxl
bWVudHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMudHJlZU91dGxpbmUuZm9jdXNl
ZERPTU5vZGUgPSB4OwogICAgIH0sCiAKLSAgICBzdGFydEVkaXRpbmdTdHlsZTogZnVuY3Rpb24o
KQotICAgIHsKLSAgICAgICAgdGhpcy5faXNFZGl0aW5nU3R5bGUgPSB0cnVlOwotICAgIH0sCi0K
LSAgICBlbmRFZGl0aW5nU3R5bGU6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGRlbGV0ZSB0
aGlzLl9pc0VkaXRpbmdTdHlsZTsKLSAgICB9LAotCiAgICAgX2F0dHJpYnV0ZXNVcGRhdGVkOiBm
dW5jdGlvbihldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMucmVjZW50bHlNb2RpZmllZE5vZGVz
LnB1c2goe25vZGU6IGV2ZW50LmRhdGEsIHVwZGF0ZWQ6IHRydWV9KTsKICAgICAgICAgaWYgKHRo
aXMudmlzaWJsZSkKICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZU1vZGlmaWVkTm9kZXNTb29uKCk7
Ci0KLSAgICAgICAgaWYgKCF0aGlzLl9pc0VkaXRpbmdTdHlsZSAmJiBldmVudC5kYXRhID09PSB0
aGlzLmZvY3VzZWRET01Ob2RlKQotICAgICAgICAgICAgdGhpcy5fc3R5bGVTaGVldENoYW5nZWQo
KTsKICAgICB9LAogCiAgICAgX2NoYXJhY3RlckRhdGFNb2RpZmllZDogZnVuY3Rpb24oZXZlbnQp
CkBAIC01MzksMTIgKzUyNSw2IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgdGhpcy51cGRhdGVTdHlsZXModHJ1ZSk7CiAgICAgfSwKIAotICAgIF9z
dHlsZVNoZWV0Q2hhbmdlZDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhpcy5fbWV0cmlj
c1BhbmVFZGl0ZWQoKTsKLSAgICAgICAgdGhpcy5fc3R5bGVzUGFuZUVkaXRlZCgpOwotICAgIH0s
Ci0KICAgICBfbW91c2VNb3ZlZEluQ3J1bWJzOiBmdW5jdGlvbihldmVudCkKICAgICB7CiAgICAg
ICAgIHZhciBub2RlVW5kZXJNb3VzZSA9IGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoZXZlbnQu
cGFnZVgsIGV2ZW50LnBhZ2VZKTsKQEAgLTEwMTcsMTggKzk5NywxMyBAQCBXZWJJbnNwZWN0b3Iu
RWxlbWVudHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICB2YXIgc3R5bGVzU2lk
ZWJhclBhbmUgPSB0aGlzLnNpZGViYXJQYW5lcy5zdHlsZXM7CiAgICAgICAgIHZhciBjb21wdXRl
ZFN0eWxlUGFuZSA9IHRoaXMuc2lkZWJhclBhbmVzLmNvbXB1dGVkU3R5bGU7Ci0gICAgICAgIGlm
ICgoIXN0eWxlc1NpZGViYXJQYW5lLmV4cGFuZGVkICYmICFjb21wdXRlZFN0eWxlUGFuZS5leHBh
bmRlZCkgfHwgIXN0eWxlc1NpZGViYXJQYW5lLm5lZWRzVXBkYXRlIHx8IHRoaXMuX2lzRWRpdGlu
Z1N0eWxlKQorICAgICAgICBpZiAoKCFzdHlsZXNTaWRlYmFyUGFuZS5leHBhbmRlZCAmJiAhY29t
cHV0ZWRTdHlsZVBhbmUuZXhwYW5kZWQpIHx8ICFzdHlsZXNTaWRlYmFyUGFuZS5uZWVkc1VwZGF0
ZSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBzdHlsZXNTaWRlYmFyUGFuZS51cGRh
dGUodGhpcy5mb2N1c2VkRE9NTm9kZSwgbnVsbCwgZm9yY2VVcGRhdGUsIHRoaXMuX3N0eWxlc1Vw
ZGF0ZWQuYmluZCh0aGlzLCB0aGlzLmZvY3VzZWRET01Ob2RlKSk7CisgICAgICAgIHN0eWxlc1Np
ZGViYXJQYW5lLnVwZGF0ZSh0aGlzLmZvY3VzZWRET01Ob2RlLCBmb3JjZVVwZGF0ZSk7CiAgICAg
ICAgIHN0eWxlc1NpZGViYXJQYW5lLm5lZWRzVXBkYXRlID0gZmFsc2U7CiAgICAgfSwKIAotICAg
IF9zdHlsZXNVcGRhdGVkOiBmdW5jdGlvbihub2RlKQotICAgIHsKLSAgICAgICAgLy8gVGhpcyBt
ZXRob2QgaXMgb3ZlcnJpZGVuIGluIHRlc3RzLgotICAgIH0sCi0KICAgICB1cGRhdGVNZXRyaWNz
OiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICB2YXIgbWV0cmljc1NpZGViYXJQYW5lID0gdGhp
cy5zaWRlYmFyUGFuZXMubWV0cmljczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvTWV0cmljc1NpZGViYXJQYW5lLmpzIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9NZXRyaWNzU2lkZWJhclBhbmUuanMKaW5kZXggOTYyYTk1NjcyODA3
NTA4OGJkMjVjZDc0OWQ5NDQyOThlZWM5YTk1Ni4uYjA1OGE0MDAzMWIwYWMwNGUxYjBiOGE3MjEy
MzJlOGYzMTU1NDEzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9NZXRyaWNzU2lkZWJhclBhbmUuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9NZXRyaWNzU2lkZWJhclBhbmUuanMKQEAgLTI5LDYgKzI5LDkgQEAKIFdlYklu
c3BlY3Rvci5NZXRyaWNzU2lkZWJhclBhbmUgPSBmdW5jdGlvbigpCiB7CiAgICAgV2ViSW5zcGVj
dG9yLlNpZGViYXJQYW5lLmNhbGwodGhpcywgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJNZXRyaWNz
IikpOworCisgICAgV2ViSW5zcGVjdG9yLmNzc01vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5z
cGVjdG9yLkNTU1N0eWxlTW9kZWwuRXZlbnRzLlN0eWxlU2hlZXRDaGFuZ2VkLCB0aGlzLl9zdHls
ZVNoZWV0Q2hhbmdlZCwgdGhpcyk7CisgICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50LmFkZEV2ZW50
TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTUFnZW50LkV2ZW50cy5BdHRyTW9kaWZpZWQsIHRoaXMu
X2F0dHJpYnV0ZXNVcGRhdGVkLCB0aGlzKTsKIH0KIAogV2ViSW5zcGVjdG9yLk1ldHJpY3NTaWRl
YmFyUGFuZS5wcm90b3R5cGUgPSB7CkBAIC0zNiwzMCArMzksNTEgQEAgV2ViSW5zcGVjdG9yLk1l
dHJpY3NTaWRlYmFyUGFuZS5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICBpZiAobm9kZSkK
ICAgICAgICAgICAgIHRoaXMubm9kZSA9IG5vZGU7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAg
IG5vZGUgPSB0aGlzLm5vZGU7CisgICAgICAgIHRoaXMuX2lubmVyVXBkYXRlKCk7CisgICAgfSwK
KworICAgIF9pbm5lclVwZGF0ZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgLy8gRklYTUU6
IGF2b2lkIHVwZGF0ZXMgb2YgYSBjb2xsYXBzZWQgcGFuZS4KKyAgICAgICAgdmFyIG5vZGUgPSB0
aGlzLm5vZGU7CiAKICAgICAgICAgaWYgKCFub2RlIHx8IG5vZGUubm9kZVR5cGUoKSAhPT0gTm9k
ZS5FTEVNRU5UX05PREUpIHsKICAgICAgICAgICAgIHRoaXMuYm9keUVsZW1lbnQucmVtb3ZlQ2hp
bGRyZW4oKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIHZhciBz
ZWxmID0gdGhpczsKLSAgICAgICAgdmFyIGNhbGxiYWNrID0gZnVuY3Rpb24oc3R5bGUpIHsKLSAg
ICAgICAgICAgIGlmICghc3R5bGUpCisgICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrKHN0eWxlKQor
ICAgICAgICB7CisgICAgICAgICAgICBpZiAoIXN0eWxlIHx8IHRoaXMubm9kZSAhPT0gbm9kZSkK
ICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBzZWxmLl91cGRhdGUoc3R5bGUp
OwotICAgICAgICB9OwotICAgICAgICBXZWJJbnNwZWN0b3IuY3NzTW9kZWwuZ2V0Q29tcHV0ZWRT
dHlsZUFzeW5jKG5vZGUuaWQsIGNhbGxiYWNrKTsKKyAgICAgICAgICAgIHRoaXMuX3VwZGF0ZU1l
dHJpY3Moc3R5bGUpOworICAgICAgICB9CisgICAgICAgIFdlYkluc3BlY3Rvci5jc3NNb2RlbC5n
ZXRDb21wdXRlZFN0eWxlQXN5bmMobm9kZS5pZCwgY2FsbGJhY2suYmluZCh0aGlzKSk7CiAKLSAg
ICAgICAgdmFyIGlubGluZVN0eWxlQ2FsbGJhY2sgPSBmdW5jdGlvbihzdHlsZSkgewotICAgICAg
ICAgICAgaWYgKCFzdHlsZSkKKyAgICAgICAgZnVuY3Rpb24gaW5saW5lU3R5bGVDYWxsYmFjayhz
dHlsZSkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFzdHlsZSB8fCB0aGlzLm5vZGUgIT09
IG5vZGUpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgc2VsZi5pbmxpbmVT
dHlsZSA9IHN0eWxlOwotICAgICAgICB9OwotICAgICAgICBXZWJJbnNwZWN0b3IuY3NzTW9kZWwu
Z2V0SW5saW5lU3R5bGVBc3luYyhub2RlLmlkLCBpbmxpbmVTdHlsZUNhbGxiYWNrKTsKKyAgICAg
ICAgICAgIHRoaXMuaW5saW5lU3R5bGUgPSBzdHlsZTsKKyAgICAgICAgfQorICAgICAgICBXZWJJ
bnNwZWN0b3IuY3NzTW9kZWwuZ2V0SW5saW5lU3R5bGVBc3luYyhub2RlLmlkLCBpbmxpbmVTdHls
ZUNhbGxiYWNrLmJpbmQodGhpcykpOwogICAgIH0sCiAKKyAgICBfc3R5bGVTaGVldENoYW5nZWQ6
IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuX2lubmVyVXBkYXRlKCk7CisgICAgfSwK
KworICAgIF9hdHRyaWJ1dGVzVXBkYXRlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAg
ICBpZiAodGhpcy5ub2RlICE9PSBldmVudC5kYXRhKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIC8vICJzdHlsZSIgYXR0cmlidXRlIG1pZ2h0IGhhdmUgY2hhbmdlZC4gVXBkYXRlIG1l
dHJpY3MgdW5sZXNzIHRoZXkgYXJlIGJlaW5nIGVkaXRlZC4KKyAgICAgICAgaWYgKCF0aGlzLl9p
c0VkaXRpbmdNZXRyaWNzKQorICAgICAgICAgICAgdGhpcy5faW5uZXJVcGRhdGUoKTsKKyAgICB9
LCAgICAKKwogICAgIF9nZXRQcm9wZXJ0eVZhbHVlQXNQeDogZnVuY3Rpb24oc3R5bGUsIHByb3Bl
cnR5TmFtZSkKICAgICB7CiAgICAgICAgIHJldHVybiBOdW1iZXIoc3R5bGUuZ2V0UHJvcGVydHlW
YWx1ZShwcm9wZXJ0eU5hbWUpLnJlcGxhY2UoL3B4JC8sICIiKSB8fCAwKTsKQEAgLTEyNCw3ICsx
NDgsNyBAQCBXZWJJbnNwZWN0b3IuTWV0cmljc1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgV2ViSW5zcGVjdG9yLmhpZ2hsaWdodERPTU5vZGUobm9kZUlkLCBtb2RlKTsKICAgICB9
LAogCi0gICAgX3VwZGF0ZTogZnVuY3Rpb24oc3R5bGUpCisgICAgX3VwZGF0ZU1ldHJpY3M6IGZ1
bmN0aW9uKHN0eWxlKQogICAgIHsKICAgICAgICAgLy8gVXBkYXRpbmcgd2l0aCBjb21wdXRlZCBz
dHlsZS4KICAgICAgICAgdmFyIG1ldHJpY3NFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2Iik7CkBAIC0yNzIsNyArMjk2LDcgQEAgV2ViSW5zcGVjdG9yLk1ldHJpY3NTaWRlYmFy
UGFuZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIGNvbnRleHQua2V5RG93bkhhbmRsZXIgPSBib3Vu
ZEtleURvd247CiAgICAgICAgIHRhcmdldEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93
biIsIGJvdW5kS2V5RG93biwgZmFsc2UpOwogCi0gICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMu
ZWxlbWVudHMuc3RhcnRFZGl0aW5nU3R5bGUoKTsKKyAgICAgICAgdGhpcy5faXNFZGl0aW5nTWV0
cmljcyA9IHRydWU7CiAgICAgICAgIFdlYkluc3BlY3Rvci5zdGFydEVkaXRpbmcodGFyZ2V0RWxl
bWVudCwgewogICAgICAgICAgICAgY29udGV4dDogY29udGV4dCwKICAgICAgICAgICAgIGNvbW1p
dEhhbmRsZXI6IHRoaXMuZWRpdGluZ0NvbW1pdHRlZC5iaW5kKHRoaXMpLApAQCAtMzQwLDcgKzM2
NCw3IEBAIFdlYkluc3BlY3Rvci5NZXRyaWNzU2lkZWJhclBhbmUucHJvdG90eXBlID0gewogICAg
ICAgICBkZWxldGUgdGhpcy5vcmlnaW5hbFByb3BlcnR5RGF0YTsKICAgICAgICAgZGVsZXRlIHRo
aXMucHJldmlvdXNQcm9wZXJ0eURhdGFDYW5kaWRhdGU7CiAgICAgICAgIGVsZW1lbnQucmVtb3Zl
RXZlbnRMaXN0ZW5lcigia2V5ZG93biIsIGNvbnRleHQua2V5RG93bkhhbmRsZXIsIGZhbHNlKTsK
LSAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5lbGVtZW50cy5lbmRFZGl0aW5nU3R5bGUoKTsK
KyAgICAgICAgZGVsZXRlIHRoaXMuX2lzRWRpdGluZ01ldHJpY3M7CiAgICAgfSwKIAogICAgIGVk
aXRpbmdDYW5jZWxsZWQ6IGZ1bmN0aW9uKGVsZW1lbnQsIGNvbnRleHQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qcwpp
bmRleCBkNjliMzdlNDAwMjdiNTY2MzAyZmQ3NzNhZWVmYmRhNWU5M2VhZDQ2Li40NDdiNDQ0NWNk
OGQ1NjVjMGYwZmEwMjk4ZDdmMjc0YTViODJjZGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanMKQEAgLTgzLDYg
KzgzLDkgQEAgV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lID0gZnVuY3Rpb24oY29tcHV0
ZWRTdHlsZVBhbmUpCiAgICAgdGhpcy5ib2R5RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9lbGVt
ZW50U3RhdGVQYW5lKTsKICAgICB0aGlzLl9zZWN0aW9uc0NvbnRhaW5lciA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgIHRoaXMuYm9keUVsZW1lbnQuYXBwZW5kQ2hpbGQodGhp
cy5fc2VjdGlvbnNDb250YWluZXIpOworCisgICAgV2ViSW5zcGVjdG9yLmNzc01vZGVsLmFkZEV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwuRXZlbnRzLlN0eWxlU2hlZXRD
aGFuZ2VkLCB0aGlzLl9zdHlsZVNoZWV0Q2hhbmdlZCwgdGhpcyk7CisgICAgV2ViSW5zcGVjdG9y
LmRvbUFnZW50LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTUFnZW50LkV2ZW50cy5B
dHRyTW9kaWZpZWQsIHRoaXMuX2F0dHJpYnV0ZXNVcGRhdGVkLCB0aGlzKTsKIH0KIAogV2ViSW5z
cGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLkNvbG9yRm9ybWF0ID0gewpAQCAtMjEwLDE0ICsyMTMs
MTQgQEAgV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgfQogICAgIH0sCiAKLSAgICB1cGRhdGU6IGZ1bmN0aW9uKG5vZGUsIGVkaXRlZFNlY3Rpb24s
IGZvcmNlVXBkYXRlLCBjYWxsYmFjaykKKyAgICB1cGRhdGU6IGZ1bmN0aW9uKG5vZGUsIGZvcmNl
VXBkYXRlKQogICAgIHsKICAgICAgICAgdmFyIHJlZnJlc2ggPSBmYWxzZTsKIAogICAgICAgICBp
ZiAoZm9yY2VVcGRhdGUpCiAgICAgICAgICAgICBkZWxldGUgdGhpcy5ub2RlOwogCi0gICAgICAg
IGlmICghZm9yY2VVcGRhdGUgJiYgKCFub2RlIHx8IG5vZGUgPT09IHRoaXMubm9kZSkpCisgICAg
ICAgIGlmICghZm9yY2VVcGRhdGUgJiYgKG5vZGUgPT09IHRoaXMubm9kZSkpCiAgICAgICAgICAg
ICByZWZyZXNoID0gdHJ1ZTsKIAogICAgICAgICBpZiAobm9kZSAmJiBub2RlLm5vZGVUeXBlKCkg
PT09IE5vZGUuVEVYVF9OT0RFICYmIG5vZGUucGFyZW50Tm9kZSkKQEAgLTIzMSwxMiArMjM0LDE2
IEBAIFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5wcm90b3R5cGUgPSB7CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIG5vZGUgPSB0aGlzLm5vZGU7CiAKKyAgICAgICAgdGhpcy5faW5u
ZXJVcGRhdGUocmVmcmVzaCwgbnVsbCk7CisgICAgfSwKKworICAgIF9pbm5lclVwZGF0ZTogZnVu
Y3Rpb24ocmVmcmVzaCwgZWRpdGVkU2VjdGlvbikKKyAgICB7CisgICAgICAgIHZhciBub2RlID0g
dGhpcy5ub2RlOwogICAgICAgICBpZiAoIW5vZGUpIHsKICAgICAgICAgICAgIHRoaXMuX3NlY3Rp
b25zQ29udGFpbmVyLnJlbW92ZUNoaWxkcmVuKCk7CiAgICAgICAgICAgICB0aGlzLl9jb21wdXRl
ZFN0eWxlUGFuZS5ib2R5RWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOwogICAgICAgICAgICAgdGhp
cy5zZWN0aW9ucyA9IHt9OwotICAgICAgICAgICAgaWYgKGNhbGxiYWNrKQotICAgICAgICAgICAg
ICAgIGNhbGxiYWNrKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMjQ0
LDE2ICsyNTEsMTIgQEAgV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLnByb3RvdHlwZSA9
IHsKICAgICAgICAgewogICAgICAgICAgICAgaWYgKHRoaXMubm9kZSA9PT0gbm9kZSAmJiBzdHls
ZXMpCiAgICAgICAgICAgICAgICAgdGhpcy5fcmVidWlsZFVwZGF0ZShub2RlLCBzdHlsZXMpOwot
ICAgICAgICAgICAgaWYgKGNhbGxiYWNrKQotICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7CiAg
ICAgICAgIH0KIAogICAgICAgICBmdW5jdGlvbiBjb21wdXRlZFN0eWxlQ2FsbGJhY2soY29tcHV0
ZWRTdHlsZSkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKHRoaXMubm9kZSA9PT0gbm9kZSAm
JiBjb21wdXRlZFN0eWxlKQogICAgICAgICAgICAgICAgIHRoaXMuX3JlZnJlc2hVcGRhdGUobm9k
ZSwgY29tcHV0ZWRTdHlsZSwgZWRpdGVkU2VjdGlvbik7Ci0gICAgICAgICAgICBpZiAoY2FsbGJh
Y2spCi0gICAgICAgICAgICAgICAgY2FsbGJhY2soKTsKICAgICAgICAgfQogCiAgICAgICAgIGlm
IChyZWZyZXNoKQpAQCAtMjYyLDYgKzI2NSwyNCBAQCBXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJh
clBhbmUucHJvdG90eXBlID0gewogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmNzc01vZGVsLmdl
dFN0eWxlc0FzeW5jKG5vZGUuaWQsIHRoaXMuX2ZvcmNlZFBzZXVkb0NsYXNzZXMsIHN0eWxlc0Nh
bGxiYWNrLmJpbmQodGhpcykpOwogICAgIH0sCiAKKyAgICBfc3R5bGVTaGVldENoYW5nZWQ6IGZ1
bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl91c2VyT3BlcmF0aW9uIHx8IHRoaXMu
X2lzRWRpdGluZ1N0eWxlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX2lu
bmVyVXBkYXRlKGZhbHNlKTsKKyAgICB9LAorCisgICAgX2F0dHJpYnV0ZXNVcGRhdGVkOiBmdW5j
dGlvbihldmVudCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLm5vZGUgIT09IGV2ZW50LmRhdGEp
CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgLy8gInN0eWxlIiBhdHRyaWJ1dGUgbWln
aHQgaGF2ZSBjaGFuZ2VkLiBVcGRhdGUgc3R5bGVzIHVubGVzcyB0aGV5IGFyZSBiZWluZyBlZGl0
ZWQuCisgICAgICAgIGlmICghdGhpcy5faXNFZGl0aW5nU3R5bGUgJiYgIXRoaXMuX3VzZXJPcGVy
YXRpb24pCisgICAgICAgICAgICB0aGlzLl9pbm5lclVwZGF0ZShmYWxzZSk7CisgICAgfSwKKwog
ICAgIF9yZWZyZXNoVXBkYXRlOiBmdW5jdGlvbihub2RlLCBjb21wdXRlZFN0eWxlLCBlZGl0ZWRT
ZWN0aW9uKQogICAgIHsKICAgICAgICAgZm9yICh2YXIgcHNldWRvSWQgaW4gdGhpcy5zZWN0aW9u
cykgewpAQCAtMjczLDYgKzI5NCw4IEBAIFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5w
cm90b3R5cGUgPSB7CiAgICAgICAgIH0KICAgICAgICAgLy8gVHJhY2UgdGhlIGNvbXB1dGVkIHN0
eWxlLgogICAgICAgICB0aGlzLnNlY3Rpb25zWzBdWzBdLnJlYnVpbGRDb21wdXRlZFRyYWNlKHRo
aXMuc2VjdGlvbnNbMF0pOworCisgICAgICAgIHRoaXMuX25vZGVTdHlsZXNVcGRhdGVkRm9yVGVz
dChub2RlLCB0cnVlKTsKICAgICB9LAogCiAgICAgX3JlYnVpbGRVcGRhdGU6IGZ1bmN0aW9uKG5v
ZGUsIHN0eWxlcykKQEAgLTMwOCw2ICszMzEsMTMgQEAgV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGVi
YXJQYW5lLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX21hcmtVc2VkUHJvcGVydGll
cyhzdHlsZVJ1bGVzLCB1c2VkUHJvcGVydGllcywgZGlzYWJsZWRDb21wdXRlZFByb3BlcnRpZXMp
OwogICAgICAgICAgICAgdGhpcy5zZWN0aW9uc1twc2V1ZG9JZF0gPSB0aGlzLl9yZWJ1aWxkU2Vj
dGlvbnNGb3JTdHlsZVJ1bGVzKHN0eWxlUnVsZXMsIHVzZWRQcm9wZXJ0aWVzLCBkaXNhYmxlZENv
bXB1dGVkUHJvcGVydGllcywgcHNldWRvSWQsIGFuY2hvckVsZW1lbnQpOwogICAgICAgICB9CisK
KyAgICAgICAgdGhpcy5fbm9kZVN0eWxlc1VwZGF0ZWRGb3JUZXN0KG5vZGUsIGZhbHNlKTsKKyAg
ICB9LAorCisgICAgX25vZGVTdHlsZXNVcGRhdGVkRm9yVGVzdDogZnVuY3Rpb24obm9kZSwgcmVm
cmVzaCkKKyAgICB7CisgICAgICAgIC8vIFRlc3RzIG92ZXJyaWRlIHRoaXMgbWV0aG9kLgogICAg
IH0sCiAKICAgICBfcmVmcmVzaFN0eWxlUnVsZXM6IGZ1bmN0aW9uKHNlY3Rpb25zLCBjb21wdXRl
ZFN0eWxlKQpAQCAtNjgwLDcgKzcxMCw3IEBAIFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFu
ZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlz
Ll9lbGVtZW50U3RhdGVQYW5lLmlucHV0cy5sZW5ndGg7ICsraSkKICAgICAgICAgICAgICAgICAg
ICAgdGhpcy5fZWxlbWVudFN0YXRlUGFuZS5pbnB1dHNbaV0uY2hlY2tlZCA9IGZhbHNlOwogICAg
ICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9mb3JjZWRQc2V1ZG9DbGFzc2VzOwotICAgICAgICAg
ICAgICAgIHRoaXMudXBkYXRlKFdlYkluc3BlY3Rvci5wYW5lbHMuZWxlbWVudHMuZm9jdXNlZERP
TU5vZGUsIG51bGwsIHRydWUpOworICAgICAgICAgICAgICAgIHRoaXMuX2lubmVyVXBkYXRlKGZh
bHNlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0sCkBAIC03MDIsNyArNzMyLDcg
QEAgV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgICAgICAgICAgcHNldWRvQ2xhc3Nlcy5wdXNoKGlucHV0c1tpXS5zdGF0ZSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICB0aGlzLl9mb3JjZWRQc2V1ZG9DbGFzc2VzID0gcHNldWRvQ2xh
c3Nlcy5sZW5ndGggPyBwc2V1ZG9DbGFzc2VzIDogdW5kZWZpbmVkOwotICAgICAgICAgICAgdGhp
cy51cGRhdGUoV2ViSW5zcGVjdG9yLnBhbmVscy5lbGVtZW50cy5mb2N1c2VkRE9NTm9kZSwgbnVs
bCwgdHJ1ZSk7CisgICAgICAgICAgICB0aGlzLl9pbm5lclVwZGF0ZShmYWxzZSk7CiAgICAgICAg
IH0KIAogICAgICAgICBmdW5jdGlvbiBjcmVhdGVDaGVja2JveChzdGF0ZSkKQEAgLTE1ODEsMTIg
KzE2MTEsMTIgQEAgV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5
cGUgPSB7CiAgICAgICAgIHRoaXMudG9vbHRpcCA9IHRoaXMucHJvcGVydHkucHJvcGVydHlUZXh0
OwogICAgIH0sCiAKLSAgICB1cGRhdGVBbGw6IGZ1bmN0aW9uKHVwZGF0ZUFsbFJ1bGVzKQorICAg
IF91cGRhdGVBbGw6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy50cmVlT3V0
bGluZSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgaWYgKHVwZGF0ZUFsbFJ1bGVzICYm
IHRoaXMudHJlZU91dGxpbmUuc2VjdGlvbiAmJiB0aGlzLnRyZWVPdXRsaW5lLnNlY3Rpb24ucGFu
ZSkKLSAgICAgICAgICAgIHRoaXMudHJlZU91dGxpbmUuc2VjdGlvbi5wYW5lLnVwZGF0ZShudWxs
LCB0aGlzLnRyZWVPdXRsaW5lLnNlY3Rpb24pOworICAgICAgICBpZiAodGhpcy50cmVlT3V0bGlu
ZS5zZWN0aW9uICYmIHRoaXMudHJlZU91dGxpbmUuc2VjdGlvbi5wYW5lKQorICAgICAgICAgICAg
dGhpcy50cmVlT3V0bGluZS5zZWN0aW9uLnBhbmUuX2lubmVyVXBkYXRlKHRydWUsIHRoaXMudHJl
ZU91dGxpbmUuc2VjdGlvbik7CiAgICAgICAgIGVsc2UgaWYgKHRoaXMudHJlZU91dGxpbmUuc2Vj
dGlvbikKICAgICAgICAgICAgIHRoaXMudHJlZU91dGxpbmUuc2VjdGlvbi51cGRhdGUodHJ1ZSk7
CiAgICAgICAgIGVsc2UKQEAgLTE2MDgsNyArMTYzOCw3IEBAIFdlYkluc3BlY3Rvci5TdHlsZVBy
b3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAgaWYgKHRoaXMudHJl
ZU91dGxpbmUuc2VjdGlvbiAmJiB0aGlzLnRyZWVPdXRsaW5lLnNlY3Rpb24ucGFuZSkKICAgICAg
ICAgICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLnNlY3Rpb24ucGFuZS5kaXNwYXRjaEV2ZW50VG9M
aXN0ZW5lcnMoInN0eWxlIHByb3BlcnR5IHRvZ2dsZWQiKTsKIAotICAgICAgICAgICAgdGhpcy51
cGRhdGVBbGwodHJ1ZSk7CisgICAgICAgICAgICB0aGlzLl91cGRhdGVBbGwoKTsKICAgICAgICAg
fQogCiAgICAgICAgIHRoaXMucHJvcGVydHkuc2V0RGlzYWJsZWQoZGlzYWJsZWQsIGNhbGxiYWNr
LmJpbmQodGhpcykpOwpAQCAtMTc4NSw3ICsxODE1LDggQEAgV2ViSW5zcGVjdG9yLlN0eWxlUHJv
cGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICBkZWxl
dGUgdGhpcy5vcmlnaW5hbFByb3BlcnR5VGV4dDsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVs
cy5lbGVtZW50cy5zdGFydEVkaXRpbmdTdHlsZSgpOworCisgICAgICAgIHRoaXMuX3BhcmVudFBh
bmUuX2lzRWRpdGluZ1N0eWxlID0gdHJ1ZTsKICAgICAgICAgV2ViSW5zcGVjdG9yLnN0YXJ0RWRp
dGluZyhzZWxlY3RFbGVtZW50LCB7CiAgICAgICAgICAgICBjb250ZXh0OiBjb250ZXh0LAogICAg
ICAgICAgICAgY29tbWl0SGFuZGxlcjogdGhpcy5lZGl0aW5nQ29tbWl0dGVkLmJpbmQodGhpcyks
CkBAIC0xOTA3LDcgKzE5MzgsNyBAQCBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVt
ZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKGVkaXRlZEVsZW1lbnQucGFyZW50RWxlbWVu
dCkKICAgICAgICAgICAgIGVkaXRlZEVsZW1lbnQucGFyZW50RWxlbWVudC5yZW1vdmVTdHlsZUNs
YXNzKCJjaGlsZC1lZGl0aW5nIik7CiAKLSAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5lbGVt
ZW50cy5lbmRFZGl0aW5nU3R5bGUoKTsKKyAgICAgICAgZGVsZXRlIHRoaXMuX3BhcmVudFBhbmUu
X2lzRWRpdGluZ1N0eWxlOwogICAgIH0sCiAKICAgICBlZGl0aW5nQ2FuY2VsbGVkOiBmdW5jdGlv
bihlbGVtZW50LCBjb250ZXh0KQpAQCAtMTk2MSw3ICsxOTkyLDYgQEAgV2ViSW5zcGVjdG9yLlN0
eWxlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBpc0RpcnR5
VmlhUGFzdGUgPSBpc0RhdGFQYXN0ZWQgJiYgKHRoaXMubmFtZUVsZW1lbnQudGV4dENvbnRlbnQg
IT09IGNvbnRleHQub3JpZ2luYWxOYW1lIHx8IHRoaXMudmFsdWVFbGVtZW50LnRleHRDb250ZW50
ICE9PSBjb250ZXh0Lm9yaWdpbmFsVmFsdWUpOwogICAgICAgICB2YXIgc2hvdWxkQ29tbWl0TmV3
UHJvcGVydHkgPSB0aGlzLl9uZXdQcm9wZXJ0eSAmJiAobW92ZVRvT3RoZXIgfHwgKCFtb3ZlRGly
ZWN0aW9uICYmICFpc0VkaXRpbmdOYW1lKSB8fCAoaXNFZGl0aW5nTmFtZSAmJiBibGFua0lucHV0
KSk7CiAgICAgICAgIGlmICgoKHVzZXJJbnB1dCAhPT0gcHJldmlvdXNDb250ZW50IHx8IGlzRGly
dHlWaWFQYXN0ZSkgJiYgIXRoaXMuX25ld1Byb3BlcnR5KSB8fCBzaG91bGRDb21taXROZXdQcm9w
ZXJ0eSkgewotICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5lbGVtZW50cy5zdGFydEVk
aXRpbmdTdHlsZSgpOwogICAgICAgICAgICAgdGhpcy50cmVlT3V0bGluZS5zZWN0aW9uLl9hZnRl
clVwZGF0ZSA9IG1vdmVUb05leHRDYWxsYmFjay5iaW5kKHRoaXMsIHRoaXMuX25ld1Byb3BlcnR5
LCAhYmxhbmtJbnB1dCwgdGhpcy50cmVlT3V0bGluZS5zZWN0aW9uKTsKICAgICAgICAgICAgIHZh
ciBwcm9wZXJ0eVRleHQ7CiAgICAgICAgICAgICBpZiAoYmxhbmtJbnB1dCB8fCAodGhpcy5fbmV3
UHJvcGVydHkgJiYgL15ccyokLy50ZXN0KHRoaXMudmFsdWVFbGVtZW50LnRleHRDb250ZW50KSkp
CkBAIC0xOTg0LDggKzIwMTQsNiBAQCBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVt
ZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgLy8gVGhlIENhbGxiYWNrIHRvIHN0YXJ0IGVkaXRp
bmcgdGhlIG5leHQvcHJldmlvdXMgcHJvcGVydHkvc2VsZWN0b3IuCiAgICAgICAgIGZ1bmN0aW9u
IG1vdmVUb05leHRDYWxsYmFjayhhbHJlYWR5TmV3LCB2YWx1ZUNoYW5nZWQsIHNlY3Rpb24pCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMuZWxlbWVudHMuZW5kRWRp
dGluZ1N0eWxlKCk7Ci0KICAgICAgICAgICAgIGlmICghbW92ZURpcmVjdGlvbikKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAKQEAgLTIwNzAsOCArMjA5OCwxMiBAQCBXZWJJbnNwZWN0b3IuU3R5
bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogCisgICAgICAgIHZhciBjdXJyZW50Tm9kZSA9IHRoaXMuX3BhcmVudFBhbmUu
bm9kZTsKKyAgICAgICAgdGhpcy5fcGFyZW50UGFuZS5fdXNlck9wZXJhdGlvbiA9IHRydWU7CisK
ICAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2sob3JpZ2luYWxQcm9wZXJ0eVRleHQsIG5ld1N0eWxl
KQogICAgICAgICB7CisgICAgICAgICAgICB0aGlzLl9wYXJlbnRQYW5lLl91c2VyT3BlcmF0aW9u
ID0gdHJ1ZTsKICAgICAgICAgICAgIGlmICghbmV3U3R5bGUpIHsKICAgICAgICAgICAgICAgICBp
ZiAodXBkYXRlSW50ZXJmYWNlKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIEl0IGRpZCBub3Qg
YXBwbHksIGNhbmNlbCBlZGl0aW5nLgpAQCAtMjA4Nyw4ICsyMTE5LDggQEAgV2ViSW5zcGVjdG9y
LlN0eWxlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBpZiAo
c2VjdGlvbiAmJiBzZWN0aW9uLnBhbmUpCiAgICAgICAgICAgICAgICAgc2VjdGlvbi5wYW5lLmRp
c3BhdGNoRXZlbnRUb0xpc3RlbmVycygic3R5bGUgZWRpdGVkIik7CiAKLSAgICAgICAgICAgIGlm
ICh1cGRhdGVJbnRlcmZhY2UpCi0gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVBbGwodHJ1ZSk7
CisgICAgICAgICAgICBpZiAodXBkYXRlSW50ZXJmYWNlICYmIGN1cnJlbnROb2RlID09PSBzZWN0
aW9uLnBhbmUubm9kZSkKKyAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVBbGwoKTsKICAgICAg
ICAgfQogCiAgICAgICAgIC8vIEFwcGVuZCBhICI7IiBpZiB0aGUgbmV3IHRleHQgZG9lcyBub3Qg
ZW5kIGluICI7Ii4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100981</attachid>
            <date>2011-07-15 08:08:02 -0700</date>
            <delta_ts>2011-07-15 08:21:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64283-20110715190800.patch</filename>
            <type>text/plain</type>
            <size>21110</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTEwNjcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXRlc3QuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9lbGVtZW50cy10ZXN0LmpzCmluZGV4IDkyOGI0ZmM4YWUyMjQyOWYxZTE4MTY1
ZWM2MDBkYjczYTIwZTYxOGQuLmMyY2UxMWEzN2JlYjc5ODk0MTQ3M2M3NjgyMzY2MGFkZmY2Y2Q2
YTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRz
LXRlc3QuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMt
dGVzdC5qcwpAQCAtODQsNyArODQsNyBAQCBJbnNwZWN0b3JUZXN0LndhaXRGb3JTdHlsZXMgPSBm
dW5jdGlvbihpZFZhbHVlLCBjYWxsYmFjaykKICAgICAgICAgICAgIGNhbGxiYWNrKCk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRTbmlm
ZmVyKFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZSwgIl9zdHlsZXNVcGRhdGVk
Iiwgc25pZmYpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFNuaWZmZXIoV2ViSW5zcGVjdG9y
LlN0eWxlc1NpZGViYXJQYW5lLnByb3RvdHlwZSwgIl9ub2RlU3R5bGVzVXBkYXRlZEZvclRlc3Qi
LCBzbmlmZik7CiAgICAgfSkobnVsbCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5NTNmNTNjZjcyODE5
ZjQ0YTRiZmIzNjBmOTE3MWUwM2Y0ODA1NGY5Li41MzFkNWQ0Yzc1MzE3NzM4MzM5ZDE3MzUwNmVh
ZmE5YzhlZmU2ZDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcgQEAKKzIwMTEtMDctMTQgIFBh
dmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBnb29nbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IEZvY3VzaW5nIG9uIGFub3RoZXIgbm9kZSB3aGlsZSBlZGl0aW5nIENTUyBwcm9wZXJ0eSBk
b2VzIG5vdCB1cGRhdGUgc3R5bGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD02NDI4MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9ET01BZ2VudC5qczoKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5ET01BZ2VudC5wcm90b3R5cGUuX2lubGluZVN0eWxlSW52YWxpZGF0ZWQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTURpc3BhdGNoZXIucHJvdG90eXBlLmlubGluZVN0
eWxlSW52YWxpZGF0ZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQ
YW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZS5fYXR0cmlidXRlc1VwZGF0ZWQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJvdG90eXBlLnVwZGF0ZVN0
eWxlcyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9NZXRyaWNzU2lkZWJhclBhbmUu
anM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTWV0cmljc1NpZGViYXJQYW5lKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5NZXRyaWNzU2lkZWJhclBhbmUucHJvdG90eXBlLnVwZGF0ZSk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuTWV0cmljc1NpZGViYXJQYW5lLnByb3RvdHlwZS5faW5uZXJVcGRh
dGUuY2FsbGJhY2spOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk1ldHJpY3NTaWRlYmFyUGFuZS5w
cm90b3R5cGUuX2lubmVyVXBkYXRlLmlubGluZVN0eWxlQ2FsbGJhY2spOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLk1ldHJpY3NTaWRlYmFyUGFuZS5wcm90b3R5cGUuX2lubmVyVXBkYXRlKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5NZXRyaWNzU2lkZWJhclBhbmUucHJvdG90eXBlLl9zdHlsZVNo
ZWV0Q2hhbmdlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTWV0cmljc1NpZGViYXJQYW5lLnBy
b3RvdHlwZS5fYXR0cmlidXRlc1VwZGF0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk1ldHJp
Y3NTaWRlYmFyUGFuZS5wcm90b3R5cGUuc3RhcnRFZGl0aW5nKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5NZXRyaWNzU2lkZWJhclBhbmUucHJvdG90eXBlLmVkaXRpbmdFbmRlZCk6CisgICAgICAg
ICogaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qczoKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5
bGVzU2lkZWJhclBhbmUucHJvdG90eXBlLnVwZGF0ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
U3R5bGVzU2lkZWJhclBhbmUucHJvdG90eXBlLl9zdHlsZVNoZWV0Q2hhbmdlZCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUucHJvdG90eXBlLl9hdHRyaWJ1dGVzVXBk
YXRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnBy
b3RvdHlwZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50
LnByb3RvdHlwZS5ldmVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRy
ZWVFbGVtZW50LnByb3RvdHlwZS5lbGVtZW50LnVzZXJJbnB1dC5wcmV2aW91c0NvbnRlbnQuY29u
dGV4dC5tb3ZlRGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnR5
VHJlZUVsZW1lbnQucHJvdG90eXBlLnN0eWxlVGV4dC51cGRhdGVJbnRlcmZhY2UubWFqb3JDaGFu
Z2UuaXNSZXZlcnQpOgorCiAyMDExLTA3LTE1ICBQaXJvc2thIEFuZHLDoXMgIDxQaXJvc2thLkFu
ZHJhc0BzdHVkLnUtc3plZ2VkLmh1PgogCiAgICAgICAgIFBpeGVsIGRpZmZlcmVuY2UgaW4gRkVN
b3JwaG9sb2d5IGVmZmVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9DU1NTdHlsZU1vZGVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9DU1NTdHlsZU1vZGVsLmpzCmluZGV4IGU0ZTg3MjNiOWE3MGViODU0ZjQ0YzhmZDk1NjRi
YjZlYmNkZDUzNmEuLjkzNTc5MmZiYzZmMWUwMDc1ZDk0OWM5ZGVlMTdiNDQxNmQ2YzE1MTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTU3R5bGVNb2Rl
bC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1N0eWxlTW9k
ZWwuanMKQEAgLTUxMyw4ICs1MTMsOCBAQCBXZWJJbnNwZWN0b3IuQ1NTUHJvcGVydHkucHJvdG90
eXBlID0gewogICAgICAgICBmdW5jdGlvbiBlbmFibGVkQ2FsbGJhY2soc3R5bGUpCiAgICAgICAg
IHsKICAgICAgICAgICAgIGlmIChzdHlsZSkKLSAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3Iu
Y3NzTW9kZWwuX2ZpcmVTdHlsZVNoZWV0Q2hhbmdlZChzdHlsZS5pZC5zdHlsZVNoZWV0SWQsIG1h
am9yQ2hhbmdlKTsKLSAgICAgICAgICAgIGlmICh1c2VyQ2FsbGJhY2spCisgICAgICAgICAgICAg
ICAgV2ViSW5zcGVjdG9yLmNzc01vZGVsLl9maXJlU3R5bGVTaGVldENoYW5nZWQoc3R5bGUuaWQu
c3R5bGVTaGVldElkLCBtYWpvckNoYW5nZSwgdXNlckNhbGxiYWNrID8gdXNlckNhbGxiYWNrLmJp
bmQobnVsbCwgc3R5bGUpIDogbnVsbCk7CisgICAgICAgICAgICBlbHNlIGlmICh1c2VyQ2FsbGJh
Y2spCiAgICAgICAgICAgICAgICAgdXNlckNhbGxiYWNrKHN0eWxlKTsKICAgICAgICAgfQogCkBA
IC01MzAsNyArNTMwLDcgQEAgV2ViSW5zcGVjdG9yLkNTU1Byb3BlcnR5LnByb3RvdHlwZSA9IHsK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAg
ICAgICAgICAgIFdlYkluc3BlY3Rvci5jc3NNb2RlbC5fZmlyZVN0eWxlU2hlZXRDaGFuZ2VkKHN0
eWxlLmlkLnN0eWxlU2hlZXRJZCwgbWFqb3JDaGFuZ2UsIHVzZXJDYWxsYmFjayA/IHVzZXJDYWxs
YmFjay5iaW5kKHRoaXMsIHN0eWxlKSA6IG51bGwpOworICAgICAgICAgICAgICAgIFdlYkluc3Bl
Y3Rvci5jc3NNb2RlbC5fZmlyZVN0eWxlU2hlZXRDaGFuZ2VkKHN0eWxlLmlkLnN0eWxlU2hlZXRJ
ZCwgbWFqb3JDaGFuZ2UsIHVzZXJDYWxsYmFjayA/IHVzZXJDYWxsYmFjay5iaW5kKG51bGwsIHN0
eWxlKSA6IG51bGwpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBpZiAo
dXNlckNhbGxiYWNrKQogICAgICAgICAgICAgICAgICAgICB1c2VyQ2FsbGJhY2sobnVsbCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTUFnZW50Lmpz
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01BZ2VudC5qcwppbmRleCBj
YjJlYmQ0NGNhNDRhMGRhMTI1MGM0ODJmMmIxYjA1ZjFiMmIwZTQ4Li45Y2FjOGQwMTQ5ZjA3YTU0
YmNlYjI3YzMwYzc4YThiNjI0MzM2MjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0RPTUFnZW50LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvRE9NQWdlbnQuanMKQEAgLTQyOSw2ICs0MjksMTIgQEAgV2ViSW5zcGVjdG9y
LkRPTUFnZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fbG9hZE5vZGVBdHRyaWJ1dGVz
U29vbihub2RlSWRzKTsKICAgICB9LAogCisgICAgX2lubGluZVN0eWxlSW52YWxpZGF0ZWQ6IGZ1
bmN0aW9uKG5vZGVJZHMpCisgICAgeworICAgICAgICAvLyBGSVhNRTogaGFuZGxlIGRpZmZlcmVu
dGx5ICh3ZSBkb24ndCBuZWNlc3NhcmlseSBuZWVkIHRvIHVwZGF0ZSBhdHRyaWJ1dGVzIHVwb24g
dGhpcyBtZXNzYWdlKS4KKyAgICAgICAgdGhpcy5fbG9hZE5vZGVBdHRyaWJ1dGVzU29vbihub2Rl
SWRzKTsKKyAgICB9LAorCiAgICAgX2xvYWROb2RlQXR0cmlidXRlc1Nvb246IGZ1bmN0aW9uKG5v
ZGVJZHMpCiAgICAgewogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVJZHMubGVuZ3Ro
OyArK2kpCkBAIC01OTAsNyArNTk2LDcgQEAgV2ViSW5zcGVjdG9yLkRPTURpc3BhdGNoZXIucHJv
dG90eXBlID0gewogCiAgICAgaW5saW5lU3R5bGVJbnZhbGlkYXRlZDogZnVuY3Rpb24obm9kZUlk
cykKICAgICB7Ci0gICAgICAgIHRoaXMuX2RvbUFnZW50Ll9hdHRyaWJ1dGVzVXBkYXRlZChub2Rl
SWRzKTsKKyAgICAgICAgdGhpcy5fZG9tQWdlbnQuX2lubGluZVN0eWxlSW52YWxpZGF0ZWQobm9k
ZUlkcyk7CiAgICAgfSwKIAogICAgIGNoYXJhY3RlckRhdGFNb2RpZmllZDogZnVuY3Rpb24obm9k
ZUlkLCBuZXdWYWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvRWxlbWVudHNQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvRWxlbWVudHNQYW5lbC5qcwppbmRleCBiYTlmZGI5YTQ4MmFhNmRjZGUzN2UxMzg5MmZjYTNm
OGQyMjA2NjhmLi4xMmE5MzFmY2IxYjAyN2FlODM5NWM5MWM3MDAzNTM3YjBjOTE0NGUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzUGFuZWwu
anMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1BhbmVs
LmpzCkBAIC05Myw3ICs5Myw2IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsID0gZnVuY3Rp
b24oKQogICAgIHRoaXMuc2lkZWJhclBhbmVzLnN0eWxlcy5hZGRFdmVudExpc3RlbmVyKCJzdHls
ZSBlZGl0ZWQiLCB0aGlzLl9zdHlsZXNQYW5lRWRpdGVkLCB0aGlzKTsKICAgICB0aGlzLnNpZGVi
YXJQYW5lcy5zdHlsZXMuYWRkRXZlbnRMaXN0ZW5lcigic3R5bGUgcHJvcGVydHkgdG9nZ2xlZCIs
IHRoaXMuX3N0eWxlc1BhbmVFZGl0ZWQsIHRoaXMpOwogICAgIHRoaXMuc2lkZWJhclBhbmVzLm1l
dHJpY3MuYWRkRXZlbnRMaXN0ZW5lcigibWV0cmljcyBlZGl0ZWQiLCB0aGlzLl9tZXRyaWNzUGFu
ZUVkaXRlZCwgdGhpcyk7Ci0gICAgV2ViSW5zcGVjdG9yLmNzc01vZGVsLmFkZEV2ZW50TGlzdGVu
ZXIoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwuRXZlbnRzLlN0eWxlU2hlZXRDaGFuZ2VkLCB0
aGlzLl9zdHlsZVNoZWV0Q2hhbmdlZCwgdGhpcyk7CiAKICAgICB0aGlzLnNpZGViYXJFbGVtZW50
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgdGhpcy5zaWRlYmFyRWxlbWVu
dC5pZCA9ICJlbGVtZW50cy1zaWRlYmFyIjsKQEAgLTQyNiwyNCArNDI1LDExIEBAIFdlYkluc3Bl
Y3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy50cmVlT3V0bGlu
ZS5mb2N1c2VkRE9NTm9kZSA9IHg7CiAgICAgfSwKIAotICAgIHN0YXJ0RWRpdGluZ1N0eWxlOiBm
dW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlzLl9pc0VkaXRpbmdTdHlsZSA9IHRydWU7Ci0g
ICAgfSwKLQotICAgIGVuZEVkaXRpbmdTdHlsZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAg
ZGVsZXRlIHRoaXMuX2lzRWRpdGluZ1N0eWxlOwotICAgIH0sCi0KICAgICBfYXR0cmlidXRlc1Vw
ZGF0ZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5yZWNlbnRseU1vZGlm
aWVkTm9kZXMucHVzaCh7bm9kZTogZXZlbnQuZGF0YSwgdXBkYXRlZDogdHJ1ZX0pOwogICAgICAg
ICBpZiAodGhpcy52aXNpYmxlKQogICAgICAgICAgICAgdGhpcy5fdXBkYXRlTW9kaWZpZWROb2Rl
c1Nvb24oKTsKLQotICAgICAgICBpZiAoIXRoaXMuX2lzRWRpdGluZ1N0eWxlICYmIGV2ZW50LmRh
dGEgPT09IHRoaXMuZm9jdXNlZERPTU5vZGUpCi0gICAgICAgICAgICB0aGlzLl9zdHlsZVNoZWV0
Q2hhbmdlZCgpOwogICAgIH0sCiAKICAgICBfY2hhcmFjdGVyRGF0YU1vZGlmaWVkOiBmdW5jdGlv
bihldmVudCkKQEAgLTUzOSwxMiArNTI1LDYgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwu
cHJvdG90eXBlID0gewogICAgICAgICB0aGlzLnVwZGF0ZVN0eWxlcyh0cnVlKTsKICAgICB9LAog
Ci0gICAgX3N0eWxlU2hlZXRDaGFuZ2VkOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlz
Ll9tZXRyaWNzUGFuZUVkaXRlZCgpOwotICAgICAgICB0aGlzLl9zdHlsZXNQYW5lRWRpdGVkKCk7
Ci0gICAgfSwKLQogICAgIF9tb3VzZU1vdmVkSW5DcnVtYnM6IGZ1bmN0aW9uKGV2ZW50KQogICAg
IHsKICAgICAgICAgdmFyIG5vZGVVbmRlck1vdXNlID0gZG9jdW1lbnQuZWxlbWVudEZyb21Qb2lu
dChldmVudC5wYWdlWCwgZXZlbnQucGFnZVkpOwpAQCAtMTAxNywxOCArOTk3LDEzIEBAIFdlYklu
c3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIHZhciBz
dHlsZXNTaWRlYmFyUGFuZSA9IHRoaXMuc2lkZWJhclBhbmVzLnN0eWxlczsKICAgICAgICAgdmFy
IGNvbXB1dGVkU3R5bGVQYW5lID0gdGhpcy5zaWRlYmFyUGFuZXMuY29tcHV0ZWRTdHlsZTsKLSAg
ICAgICAgaWYgKCghc3R5bGVzU2lkZWJhclBhbmUuZXhwYW5kZWQgJiYgIWNvbXB1dGVkU3R5bGVQ
YW5lLmV4cGFuZGVkKSB8fCAhc3R5bGVzU2lkZWJhclBhbmUubmVlZHNVcGRhdGUgfHwgdGhpcy5f
aXNFZGl0aW5nU3R5bGUpCisgICAgICAgIGlmICgoIXN0eWxlc1NpZGViYXJQYW5lLmV4cGFuZGVk
ICYmICFjb21wdXRlZFN0eWxlUGFuZS5leHBhbmRlZCkgfHwgIXN0eWxlc1NpZGViYXJQYW5lLm5l
ZWRzVXBkYXRlKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHN0eWxlc1NpZGViYXJQ
YW5lLnVwZGF0ZSh0aGlzLmZvY3VzZWRET01Ob2RlLCBudWxsLCBmb3JjZVVwZGF0ZSwgdGhpcy5f
c3R5bGVzVXBkYXRlZC5iaW5kKHRoaXMsIHRoaXMuZm9jdXNlZERPTU5vZGUpKTsKKyAgICAgICAg
c3R5bGVzU2lkZWJhclBhbmUudXBkYXRlKHRoaXMuZm9jdXNlZERPTU5vZGUsIGZvcmNlVXBkYXRl
KTsKICAgICAgICAgc3R5bGVzU2lkZWJhclBhbmUubmVlZHNVcGRhdGUgPSBmYWxzZTsKICAgICB9
LAogCi0gICAgX3N0eWxlc1VwZGF0ZWQ6IGZ1bmN0aW9uKG5vZGUpCi0gICAgewotICAgICAgICAv
LyBUaGlzIG1ldGhvZCBpcyBvdmVycmlkZW4gaW4gdGVzdHMuCi0gICAgfSwKLQogICAgIHVwZGF0
ZU1ldHJpY3M6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHZhciBtZXRyaWNzU2lkZWJhclBh
bmUgPSB0aGlzLnNpZGViYXJQYW5lcy5tZXRyaWNzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9NZXRyaWNzU2lkZWJhclBhbmUuanMgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL01ldHJpY3NTaWRlYmFyUGFuZS5qcwppbmRleCA5NjJh
OTU2NzI4MDc1MDg4YmQyNWNkNzQ5ZDk0NDI5OGVlYzlhOTU2Li5iMDU4YTQwMDMxYjBhYzA0ZTFi
MGI4YTcyMTIzMmU4ZjMxNTU0MTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL01ldHJpY3NTaWRlYmFyUGFuZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL01ldHJpY3NTaWRlYmFyUGFuZS5qcwpAQCAtMjksNiArMjksOSBA
QAogV2ViSW5zcGVjdG9yLk1ldHJpY3NTaWRlYmFyUGFuZSA9IGZ1bmN0aW9uKCkKIHsKICAgICBX
ZWJJbnNwZWN0b3IuU2lkZWJhclBhbmUuY2FsbCh0aGlzLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
Ik1ldHJpY3MiKSk7CisKKyAgICBXZWJJbnNwZWN0b3IuY3NzTW9kZWwuYWRkRXZlbnRMaXN0ZW5l
cihXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5FdmVudHMuU3R5bGVTaGVldENoYW5nZWQsIHRo
aXMuX3N0eWxlU2hlZXRDaGFuZ2VkLCB0aGlzKTsKKyAgICBXZWJJbnNwZWN0b3IuZG9tQWdlbnQu
YWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NQWdlbnQuRXZlbnRzLkF0dHJNb2RpZmll
ZCwgdGhpcy5fYXR0cmlidXRlc1VwZGF0ZWQsIHRoaXMpOwogfQogCiBXZWJJbnNwZWN0b3IuTWV0
cmljc1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKQEAgLTM2LDMwICszOSw1MSBAQCBXZWJJbnNw
ZWN0b3IuTWV0cmljc1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIGlm
IChub2RlKQogICAgICAgICAgICAgdGhpcy5ub2RlID0gbm9kZTsKLSAgICAgICAgZWxzZQotICAg
ICAgICAgICAgbm9kZSA9IHRoaXMubm9kZTsKKyAgICAgICAgdGhpcy5faW5uZXJVcGRhdGUoKTsK
KyAgICB9LAorCisgICAgX2lubmVyVXBkYXRlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICAv
LyBGSVhNRTogYXZvaWQgdXBkYXRlcyBvZiBhIGNvbGxhcHNlZCBwYW5lLgorICAgICAgICB2YXIg
bm9kZSA9IHRoaXMubm9kZTsKIAogICAgICAgICBpZiAoIW5vZGUgfHwgbm9kZS5ub2RlVHlwZSgp
ICE9PSBOb2RlLkVMRU1FTlRfTk9ERSkgewogICAgICAgICAgICAgdGhpcy5ib2R5RWxlbWVudC5y
ZW1vdmVDaGlsZHJlbigpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAg
ICAgdmFyIHNlbGYgPSB0aGlzOwotICAgICAgICB2YXIgY2FsbGJhY2sgPSBmdW5jdGlvbihzdHls
ZSkgewotICAgICAgICAgICAgaWYgKCFzdHlsZSkKKyAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2so
c3R5bGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghc3R5bGUgfHwgdGhpcy5ub2RlICE9
PSBub2RlKQogICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIHNlbGYuX3VwZGF0
ZShzdHlsZSk7Ci0gICAgICAgIH07Ci0gICAgICAgIFdlYkluc3BlY3Rvci5jc3NNb2RlbC5nZXRD
b21wdXRlZFN0eWxlQXN5bmMobm9kZS5pZCwgY2FsbGJhY2spOworICAgICAgICAgICAgdGhpcy5f
dXBkYXRlTWV0cmljcyhzdHlsZSk7CisgICAgICAgIH0KKyAgICAgICAgV2ViSW5zcGVjdG9yLmNz
c01vZGVsLmdldENvbXB1dGVkU3R5bGVBc3luYyhub2RlLmlkLCBjYWxsYmFjay5iaW5kKHRoaXMp
KTsKIAotICAgICAgICB2YXIgaW5saW5lU3R5bGVDYWxsYmFjayA9IGZ1bmN0aW9uKHN0eWxlKSB7
Ci0gICAgICAgICAgICBpZiAoIXN0eWxlKQorICAgICAgICBmdW5jdGlvbiBpbmxpbmVTdHlsZUNh
bGxiYWNrKHN0eWxlKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIXN0eWxlIHx8IHRoaXMu
bm9kZSAhPT0gbm9kZSkKICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBzZWxm
LmlubGluZVN0eWxlID0gc3R5bGU7Ci0gICAgICAgIH07Ci0gICAgICAgIFdlYkluc3BlY3Rvci5j
c3NNb2RlbC5nZXRJbmxpbmVTdHlsZUFzeW5jKG5vZGUuaWQsIGlubGluZVN0eWxlQ2FsbGJhY2sp
OworICAgICAgICAgICAgdGhpcy5pbmxpbmVTdHlsZSA9IHN0eWxlOworICAgICAgICB9CisgICAg
ICAgIFdlYkluc3BlY3Rvci5jc3NNb2RlbC5nZXRJbmxpbmVTdHlsZUFzeW5jKG5vZGUuaWQsIGlu
bGluZVN0eWxlQ2FsbGJhY2suYmluZCh0aGlzKSk7CiAgICAgfSwKIAorICAgIF9zdHlsZVNoZWV0
Q2hhbmdlZDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5faW5uZXJVcGRhdGUoKTsK
KyAgICB9LAorCisgICAgX2F0dHJpYnV0ZXNVcGRhdGVkOiBmdW5jdGlvbihldmVudCkKKyAgICB7
CisgICAgICAgIGlmICh0aGlzLm5vZGUgIT09IGV2ZW50LmRhdGEpCisgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgLy8gInN0eWxlIiBhdHRyaWJ1dGUgbWlnaHQgaGF2ZSBjaGFuZ2VkLiBV
cGRhdGUgbWV0cmljcyB1bmxlc3MgdGhleSBhcmUgYmVpbmcgZWRpdGVkLgorICAgICAgICBpZiAo
IXRoaXMuX2lzRWRpdGluZ01ldHJpY3MpCisgICAgICAgICAgICB0aGlzLl9pbm5lclVwZGF0ZSgp
OworICAgIH0sICAgIAorCiAgICAgX2dldFByb3BlcnR5VmFsdWVBc1B4OiBmdW5jdGlvbihzdHls
ZSwgcHJvcGVydHlOYW1lKQogICAgIHsKICAgICAgICAgcmV0dXJuIE51bWJlcihzdHlsZS5nZXRQ
cm9wZXJ0eVZhbHVlKHByb3BlcnR5TmFtZSkucmVwbGFjZSgvcHgkLywgIiIpIHx8IDApOwpAQCAt
MTI0LDcgKzE0OCw3IEBAIFdlYkluc3BlY3Rvci5NZXRyaWNzU2lkZWJhclBhbmUucHJvdG90eXBl
ID0gewogICAgICAgICBXZWJJbnNwZWN0b3IuaGlnaGxpZ2h0RE9NTm9kZShub2RlSWQsIG1vZGUp
OwogICAgIH0sCiAKLSAgICBfdXBkYXRlOiBmdW5jdGlvbihzdHlsZSkKKyAgICBfdXBkYXRlTWV0
cmljczogZnVuY3Rpb24oc3R5bGUpCiAgICAgewogICAgICAgICAvLyBVcGRhdGluZyB3aXRoIGNv
bXB1dGVkIHN0eWxlLgogICAgICAgICB2YXIgbWV0cmljc0VsZW1lbnQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJkaXYiKTsKQEAgLTI3Miw3ICsyOTYsNyBAQCBXZWJJbnNwZWN0b3IuTWV0cmlj
c1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKICAgICAgICAgY29udGV4dC5rZXlEb3duSGFuZGxl
ciA9IGJvdW5kS2V5RG93bjsKICAgICAgICAgdGFyZ2V0RWxlbWVudC5hZGRFdmVudExpc3RlbmVy
KCJrZXlkb3duIiwgYm91bmRLZXlEb3duLCBmYWxzZSk7CiAKLSAgICAgICAgV2ViSW5zcGVjdG9y
LnBhbmVscy5lbGVtZW50cy5zdGFydEVkaXRpbmdTdHlsZSgpOworICAgICAgICB0aGlzLl9pc0Vk
aXRpbmdNZXRyaWNzID0gdHJ1ZTsKICAgICAgICAgV2ViSW5zcGVjdG9yLnN0YXJ0RWRpdGluZyh0
YXJnZXRFbGVtZW50LCB7CiAgICAgICAgICAgICBjb250ZXh0OiBjb250ZXh0LAogICAgICAgICAg
ICAgY29tbWl0SGFuZGxlcjogdGhpcy5lZGl0aW5nQ29tbWl0dGVkLmJpbmQodGhpcyksCkBAIC0z
NDAsNyArMzY0LDcgQEAgV2ViSW5zcGVjdG9yLk1ldHJpY3NTaWRlYmFyUGFuZS5wcm90b3R5cGUg
PSB7CiAgICAgICAgIGRlbGV0ZSB0aGlzLm9yaWdpbmFsUHJvcGVydHlEYXRhOwogICAgICAgICBk
ZWxldGUgdGhpcy5wcmV2aW91c1Byb3BlcnR5RGF0YUNhbmRpZGF0ZTsKICAgICAgICAgZWxlbWVu
dC5yZW1vdmVFdmVudExpc3RlbmVyKCJrZXlkb3duIiwgY29udGV4dC5rZXlEb3duSGFuZGxlciwg
ZmFsc2UpOwotICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLmVsZW1lbnRzLmVuZEVkaXRpbmdT
dHlsZSgpOworICAgICAgICBkZWxldGUgdGhpcy5faXNFZGl0aW5nTWV0cmljczsKICAgICB9LAog
CiAgICAgZWRpdGluZ0NhbmNlbGxlZDogZnVuY3Rpb24oZWxlbWVudCwgY29udGV4dCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBh
bmUuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQ
YW5lLmpzCmluZGV4IGQ2OWIzN2U0MDAyN2I1NjYzMDJmZDc3M2FlZWZiZGE1ZTkzZWFkNDYuLjY3
MGNmYTg4Y2YxMWYyMGU1ZTIzNjFhZjY1ODIxMjczNDg4MDRiZmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanMKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qcwpA
QCAtODMsNiArODMsOSBAQCBXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUgPSBmdW5jdGlv
bihjb21wdXRlZFN0eWxlUGFuZSkKICAgICB0aGlzLmJvZHlFbGVtZW50LmFwcGVuZENoaWxkKHRo
aXMuX2VsZW1lbnRTdGF0ZVBhbmUpOwogICAgIHRoaXMuX3NlY3Rpb25zQ29udGFpbmVyID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgdGhpcy5ib2R5RWxlbWVudC5hcHBlbmRD
aGlsZCh0aGlzLl9zZWN0aW9uc0NvbnRhaW5lcik7CisKKyAgICBXZWJJbnNwZWN0b3IuY3NzTW9k
ZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5FdmVudHMuU3R5
bGVTaGVldENoYW5nZWQsIHRoaXMuX3N0eWxlU2hlZXRDaGFuZ2VkLCB0aGlzKTsKKyAgICBXZWJJ
bnNwZWN0b3IuZG9tQWdlbnQuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NQWdlbnQu
RXZlbnRzLkF0dHJNb2RpZmllZCwgdGhpcy5fYXR0cmlidXRlc1VwZGF0ZWQsIHRoaXMpOwogfQog
CiBXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUuQ29sb3JGb3JtYXQgPSB7CkBAIC0yMTAs
MTQgKzIxMywxNCBAQCBXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUucHJvdG90eXBlID0g
ewogICAgICAgICB9CiAgICAgfSwKIAotICAgIHVwZGF0ZTogZnVuY3Rpb24obm9kZSwgZWRpdGVk
U2VjdGlvbiwgZm9yY2VVcGRhdGUsIGNhbGxiYWNrKQorICAgIHVwZGF0ZTogZnVuY3Rpb24obm9k
ZSwgZm9yY2VVcGRhdGUpCiAgICAgewogICAgICAgICB2YXIgcmVmcmVzaCA9IGZhbHNlOwogCiAg
ICAgICAgIGlmIChmb3JjZVVwZGF0ZSkKICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLm5vZGU7CiAK
LSAgICAgICAgaWYgKCFmb3JjZVVwZGF0ZSAmJiAoIW5vZGUgfHwgbm9kZSA9PT0gdGhpcy5ub2Rl
KSkKKyAgICAgICAgaWYgKCFmb3JjZVVwZGF0ZSAmJiAobm9kZSA9PT0gdGhpcy5ub2RlKSkKICAg
ICAgICAgICAgIHJlZnJlc2ggPSB0cnVlOwogCiAgICAgICAgIGlmIChub2RlICYmIG5vZGUubm9k
ZVR5cGUoKSA9PT0gTm9kZS5URVhUX05PREUgJiYgbm9kZS5wYXJlbnROb2RlKQpAQCAtMjMxLDEy
ICsyMzQsMTYgQEAgV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgbm9kZSA9IHRoaXMubm9kZTsKIAorICAgICAgICB0
aGlzLl9pbm5lclVwZGF0ZShyZWZyZXNoLCBudWxsKTsKKyAgICB9LAorCisgICAgX2lubmVyVXBk
YXRlOiBmdW5jdGlvbihyZWZyZXNoLCBlZGl0ZWRTZWN0aW9uKQorICAgIHsKKyAgICAgICAgdmFy
IG5vZGUgPSB0aGlzLm5vZGU7CiAgICAgICAgIGlmICghbm9kZSkgewogICAgICAgICAgICAgdGhp
cy5fc2VjdGlvbnNDb250YWluZXIucmVtb3ZlQ2hpbGRyZW4oKTsKICAgICAgICAgICAgIHRoaXMu
X2NvbXB1dGVkU3R5bGVQYW5lLmJvZHlFbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7CiAgICAgICAg
ICAgICB0aGlzLnNlY3Rpb25zID0ge307Ci0gICAgICAgICAgICBpZiAoY2FsbGJhY2spCi0gICAg
ICAgICAgICAgICAgY2FsbGJhY2soKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
CkBAIC0yNDQsMTYgKzI1MSwxMiBAQCBXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUucHJv
dG90eXBlID0gewogICAgICAgICB7CiAgICAgICAgICAgICBpZiAodGhpcy5ub2RlID09PSBub2Rl
ICYmIHN0eWxlcykKICAgICAgICAgICAgICAgICB0aGlzLl9yZWJ1aWxkVXBkYXRlKG5vZGUsIHN0
eWxlcyk7Ci0gICAgICAgICAgICBpZiAoY2FsbGJhY2spCi0gICAgICAgICAgICAgICAgY2FsbGJh
Y2soKTsKICAgICAgICAgfQogCiAgICAgICAgIGZ1bmN0aW9uIGNvbXB1dGVkU3R5bGVDYWxsYmFj
ayhjb21wdXRlZFN0eWxlKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAodGhpcy5ub2RlID09
PSBub2RlICYmIGNvbXB1dGVkU3R5bGUpCiAgICAgICAgICAgICAgICAgdGhpcy5fcmVmcmVzaFVw
ZGF0ZShub2RlLCBjb21wdXRlZFN0eWxlLCBlZGl0ZWRTZWN0aW9uKTsKLSAgICAgICAgICAgIGlm
IChjYWxsYmFjaykKLSAgICAgICAgICAgICAgICBjYWxsYmFjaygpOwogICAgICAgICB9CiAKICAg
ICAgICAgaWYgKHJlZnJlc2gpCkBAIC0yNjIsNiArMjY1LDI0IEBAIFdlYkluc3BlY3Rvci5TdHls
ZXNTaWRlYmFyUGFuZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuY3Nz
TW9kZWwuZ2V0U3R5bGVzQXN5bmMobm9kZS5pZCwgdGhpcy5fZm9yY2VkUHNldWRvQ2xhc3Nlcywg
c3R5bGVzQ2FsbGJhY2suYmluZCh0aGlzKSk7CiAgICAgfSwKIAorICAgIF9zdHlsZVNoZWV0Q2hh
bmdlZDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX3VzZXJPcGVyYXRpb24g
fHwgdGhpcy5faXNFZGl0aW5nU3R5bGUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
dGhpcy5faW5uZXJVcGRhdGUoZmFsc2UpOworICAgIH0sCisKKyAgICBfYXR0cmlidXRlc1VwZGF0
ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMubm9kZSAhPT0gZXZl
bnQuZGF0YSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAvLyAic3R5bGUiIGF0dHJp
YnV0ZSBtaWdodCBoYXZlIGNoYW5nZWQuIFVwZGF0ZSBzdHlsZXMgdW5sZXNzIHRoZXkgYXJlIGJl
aW5nIGVkaXRlZC4KKyAgICAgICAgaWYgKCF0aGlzLl9pc0VkaXRpbmdTdHlsZSAmJiAhdGhpcy5f
dXNlck9wZXJhdGlvbikKKyAgICAgICAgICAgIHRoaXMuX2lubmVyVXBkYXRlKGZhbHNlKTsKKyAg
ICB9LAorCiAgICAgX3JlZnJlc2hVcGRhdGU6IGZ1bmN0aW9uKG5vZGUsIGNvbXB1dGVkU3R5bGUs
IGVkaXRlZFNlY3Rpb24pCiAgICAgewogICAgICAgICBmb3IgKHZhciBwc2V1ZG9JZCBpbiB0aGlz
LnNlY3Rpb25zKSB7CkBAIC0yNzMsNiArMjk0LDggQEAgV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGVi
YXJQYW5lLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogICAgICAgICAvLyBUcmFjZSB0aGUgY29t
cHV0ZWQgc3R5bGUuCiAgICAgICAgIHRoaXMuc2VjdGlvbnNbMF1bMF0ucmVidWlsZENvbXB1dGVk
VHJhY2UodGhpcy5zZWN0aW9uc1swXSk7CisKKyAgICAgICAgdGhpcy5fbm9kZVN0eWxlc1VwZGF0
ZWRGb3JUZXN0KG5vZGUsIHRydWUpOwogICAgIH0sCiAKICAgICBfcmVidWlsZFVwZGF0ZTogZnVu
Y3Rpb24obm9kZSwgc3R5bGVzKQpAQCAtMzA4LDYgKzMzMSwxMyBAQCBXZWJJbnNwZWN0b3IuU3R5
bGVzU2lkZWJhclBhbmUucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fbWFya1VzZWRQ
cm9wZXJ0aWVzKHN0eWxlUnVsZXMsIHVzZWRQcm9wZXJ0aWVzLCBkaXNhYmxlZENvbXB1dGVkUHJv
cGVydGllcyk7CiAgICAgICAgICAgICB0aGlzLnNlY3Rpb25zW3BzZXVkb0lkXSA9IHRoaXMuX3Jl
YnVpbGRTZWN0aW9uc0ZvclN0eWxlUnVsZXMoc3R5bGVSdWxlcywgdXNlZFByb3BlcnRpZXMsIGRp
c2FibGVkQ29tcHV0ZWRQcm9wZXJ0aWVzLCBwc2V1ZG9JZCwgYW5jaG9yRWxlbWVudCk7CiAgICAg
ICAgIH0KKworICAgICAgICB0aGlzLl9ub2RlU3R5bGVzVXBkYXRlZEZvclRlc3Qobm9kZSwgZmFs
c2UpOworICAgIH0sCisKKyAgICBfbm9kZVN0eWxlc1VwZGF0ZWRGb3JUZXN0OiBmdW5jdGlvbihu
b2RlLCByZWZyZXNoKQorICAgIHsKKyAgICAgICAgLy8gVGVzdHMgb3ZlcnJpZGUgdGhpcyBtZXRo
b2QuCiAgICAgfSwKIAogICAgIF9yZWZyZXNoU3R5bGVSdWxlczogZnVuY3Rpb24oc2VjdGlvbnMs
IGNvbXB1dGVkU3R5bGUpCkBAIC02ODAsNyArNzEwLDcgQEAgV2ViSW5zcGVjdG9yLlN0eWxlc1Np
ZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IHRoaXMuX2VsZW1lbnRTdGF0ZVBhbmUuaW5wdXRzLmxlbmd0aDsgKytpKQogICAgICAgICAg
ICAgICAgICAgICB0aGlzLl9lbGVtZW50U3RhdGVQYW5lLmlucHV0c1tpXS5jaGVja2VkID0gZmFs
c2U7CiAgICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMuX2ZvcmNlZFBzZXVkb0NsYXNzZXM7Ci0g
ICAgICAgICAgICAgICAgdGhpcy51cGRhdGUoV2ViSW5zcGVjdG9yLnBhbmVscy5lbGVtZW50cy5m
b2N1c2VkRE9NTm9kZSwgbnVsbCwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgdGhpcy5faW5uZXJV
cGRhdGUoZmFsc2UpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfSwKQEAgLTcwMiw3
ICs3MzIsNyBAQCBXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUucHJvdG90eXBlID0gewog
ICAgICAgICAgICAgICAgICAgICBwc2V1ZG9DbGFzc2VzLnB1c2goaW5wdXRzW2ldLnN0YXRlKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHRoaXMuX2ZvcmNlZFBzZXVkb0NsYXNzZXMgPSBw
c2V1ZG9DbGFzc2VzLmxlbmd0aCA/IHBzZXVkb0NsYXNzZXMgOiB1bmRlZmluZWQ7Ci0gICAgICAg
ICAgICB0aGlzLnVwZGF0ZShXZWJJbnNwZWN0b3IucGFuZWxzLmVsZW1lbnRzLmZvY3VzZWRET01O
b2RlLCBudWxsLCB0cnVlKTsKKyAgICAgICAgICAgIHRoaXMuX2lubmVyVXBkYXRlKGZhbHNlKTsK
ICAgICAgICAgfQogCiAgICAgICAgIGZ1bmN0aW9uIGNyZWF0ZUNoZWNrYm94KHN0YXRlKQpAQCAt
MTU4MSwxMiArMTYxMSwxMiBAQCBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50
LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy50b29sdGlwID0gdGhpcy5wcm9wZXJ0eS5wcm9w
ZXJ0eVRleHQ7CiAgICAgfSwKIAotICAgIHVwZGF0ZUFsbDogZnVuY3Rpb24odXBkYXRlQWxsUnVs
ZXMpCisgICAgX3VwZGF0ZUFsbDogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlz
LnRyZWVPdXRsaW5lKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBpZiAodXBkYXRlQWxs
UnVsZXMgJiYgdGhpcy50cmVlT3V0bGluZS5zZWN0aW9uICYmIHRoaXMudHJlZU91dGxpbmUuc2Vj
dGlvbi5wYW5lKQotICAgICAgICAgICAgdGhpcy50cmVlT3V0bGluZS5zZWN0aW9uLnBhbmUudXBk
YXRlKG51bGwsIHRoaXMudHJlZU91dGxpbmUuc2VjdGlvbik7CisgICAgICAgIGlmICh0aGlzLnRy
ZWVPdXRsaW5lLnNlY3Rpb24gJiYgdGhpcy50cmVlT3V0bGluZS5zZWN0aW9uLnBhbmUpCisgICAg
ICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLnNlY3Rpb24ucGFuZS5faW5uZXJVcGRhdGUodHJ1ZSwg
dGhpcy50cmVlT3V0bGluZS5zZWN0aW9uKTsKICAgICAgICAgZWxzZSBpZiAodGhpcy50cmVlT3V0
bGluZS5zZWN0aW9uKQogICAgICAgICAgICAgdGhpcy50cmVlT3V0bGluZS5zZWN0aW9uLnVwZGF0
ZSh0cnVlKTsKICAgICAgICAgZWxzZQpAQCAtMTYwOCw3ICsxNjM4LDcgQEAgV2ViSW5zcGVjdG9y
LlN0eWxlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBpZiAo
dGhpcy50cmVlT3V0bGluZS5zZWN0aW9uICYmIHRoaXMudHJlZU91dGxpbmUuc2VjdGlvbi5wYW5l
KQogICAgICAgICAgICAgICAgIHRoaXMudHJlZU91dGxpbmUuc2VjdGlvbi5wYW5lLmRpc3BhdGNo
RXZlbnRUb0xpc3RlbmVycygic3R5bGUgcHJvcGVydHkgdG9nZ2xlZCIpOwogCi0gICAgICAgICAg
ICB0aGlzLnVwZGF0ZUFsbCh0cnVlKTsKKyAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUFsbCgpOwog
ICAgICAgICB9CiAKICAgICAgICAgdGhpcy5wcm9wZXJ0eS5zZXREaXNhYmxlZChkaXNhYmxlZCwg
Y2FsbGJhY2suYmluZCh0aGlzKSk7CkBAIC0xNzg1LDcgKzE4MTUsOCBAQCBXZWJJbnNwZWN0b3Iu
U3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAg
ICAgIGRlbGV0ZSB0aGlzLm9yaWdpbmFsUHJvcGVydHlUZXh0OwotICAgICAgICBXZWJJbnNwZWN0
b3IucGFuZWxzLmVsZW1lbnRzLnN0YXJ0RWRpdGluZ1N0eWxlKCk7CisKKyAgICAgICAgdGhpcy5f
cGFyZW50UGFuZS5faXNFZGl0aW5nU3R5bGUgPSB0cnVlOwogICAgICAgICBXZWJJbnNwZWN0b3Iu
c3RhcnRFZGl0aW5nKHNlbGVjdEVsZW1lbnQsIHsKICAgICAgICAgICAgIGNvbnRleHQ6IGNvbnRl
eHQsCiAgICAgICAgICAgICBjb21taXRIYW5kbGVyOiB0aGlzLmVkaXRpbmdDb21taXR0ZWQuYmlu
ZCh0aGlzKSwKQEAgLTE5MDcsNyArMTkzOCw3IEBAIFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnR5
VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICBpZiAoZWRpdGVkRWxlbWVudC5wYXJl
bnRFbGVtZW50KQogICAgICAgICAgICAgZWRpdGVkRWxlbWVudC5wYXJlbnRFbGVtZW50LnJlbW92
ZVN0eWxlQ2xhc3MoImNoaWxkLWVkaXRpbmciKTsKIAotICAgICAgICBXZWJJbnNwZWN0b3IucGFu
ZWxzLmVsZW1lbnRzLmVuZEVkaXRpbmdTdHlsZSgpOworICAgICAgICBkZWxldGUgdGhpcy5fcGFy
ZW50UGFuZS5faXNFZGl0aW5nU3R5bGU7CiAgICAgfSwKIAogICAgIGVkaXRpbmdDYW5jZWxsZWQ6
IGZ1bmN0aW9uKGVsZW1lbnQsIGNvbnRleHQpCkBAIC0xOTYxLDcgKzE5OTIsNiBAQCBXZWJJbnNw
ZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFy
IGlzRGlydHlWaWFQYXN0ZSA9IGlzRGF0YVBhc3RlZCAmJiAodGhpcy5uYW1lRWxlbWVudC50ZXh0
Q29udGVudCAhPT0gY29udGV4dC5vcmlnaW5hbE5hbWUgfHwgdGhpcy52YWx1ZUVsZW1lbnQudGV4
dENvbnRlbnQgIT09IGNvbnRleHQub3JpZ2luYWxWYWx1ZSk7CiAgICAgICAgIHZhciBzaG91bGRD
b21taXROZXdQcm9wZXJ0eSA9IHRoaXMuX25ld1Byb3BlcnR5ICYmIChtb3ZlVG9PdGhlciB8fCAo
IW1vdmVEaXJlY3Rpb24gJiYgIWlzRWRpdGluZ05hbWUpIHx8IChpc0VkaXRpbmdOYW1lICYmIGJs
YW5rSW5wdXQpKTsKICAgICAgICAgaWYgKCgodXNlcklucHV0ICE9PSBwcmV2aW91c0NvbnRlbnQg
fHwgaXNEaXJ0eVZpYVBhc3RlKSAmJiAhdGhpcy5fbmV3UHJvcGVydHkpIHx8IHNob3VsZENvbW1p
dE5ld1Byb3BlcnR5KSB7Ci0gICAgICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLmVsZW1lbnRz
LnN0YXJ0RWRpdGluZ1N0eWxlKCk7CiAgICAgICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLnNlY3Rp
b24uX2FmdGVyVXBkYXRlID0gbW92ZVRvTmV4dENhbGxiYWNrLmJpbmQodGhpcywgdGhpcy5fbmV3
UHJvcGVydHksICFibGFua0lucHV0LCB0aGlzLnRyZWVPdXRsaW5lLnNlY3Rpb24pOwogICAgICAg
ICAgICAgdmFyIHByb3BlcnR5VGV4dDsKICAgICAgICAgICAgIGlmIChibGFua0lucHV0IHx8ICh0
aGlzLl9uZXdQcm9wZXJ0eSAmJiAvXlxzKiQvLnRlc3QodGhpcy52YWx1ZUVsZW1lbnQudGV4dENv
bnRlbnQpKSkKQEAgLTE5ODQsOCArMjAxNCw2IEBAIFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnR5
VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAvLyBUaGUgQ2FsbGJhY2sgdG8gc3Rh
cnQgZWRpdGluZyB0aGUgbmV4dC9wcmV2aW91cyBwcm9wZXJ0eS9zZWxlY3Rvci4KICAgICAgICAg
ZnVuY3Rpb24gbW92ZVRvTmV4dENhbGxiYWNrKGFscmVhZHlOZXcsIHZhbHVlQ2hhbmdlZCwgc2Vj
dGlvbikKICAgICAgICAgewotICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5lbGVtZW50
cy5lbmRFZGl0aW5nU3R5bGUoKTsKLQogICAgICAgICAgICAgaWYgKCFtb3ZlRGlyZWN0aW9uKQog
ICAgICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMjA3MCw4ICsyMDk4LDEyIEBAIFdlYkluc3Bl
Y3Rvci5TdHlsZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAKKyAgICAgICAgdmFyIGN1cnJlbnROb2RlID0gdGhpcy5fcGFy
ZW50UGFuZS5ub2RlOworICAgICAgICB0aGlzLl9wYXJlbnRQYW5lLl91c2VyT3BlcmF0aW9uID0g
dHJ1ZTsKKwogICAgICAgICBmdW5jdGlvbiBjYWxsYmFjayhvcmlnaW5hbFByb3BlcnR5VGV4dCwg
bmV3U3R5bGUpCiAgICAgICAgIHsKKyAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9wYXJlbnRQYW5l
Ll91c2VyT3BlcmF0aW9uOwogICAgICAgICAgICAgaWYgKCFuZXdTdHlsZSkgewogICAgICAgICAg
ICAgICAgIGlmICh1cGRhdGVJbnRlcmZhY2UpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gSXQg
ZGlkIG5vdCBhcHBseSwgY2FuY2VsIGVkaXRpbmcuCkBAIC0yMDg3LDggKzIxMTksOCBAQCBXZWJJ
bnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgIGlmIChzZWN0aW9uICYmIHNlY3Rpb24ucGFuZSkKICAgICAgICAgICAgICAgICBzZWN0aW9u
LnBhbmUuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKCJzdHlsZSBlZGl0ZWQiKTsKIAotICAgICAg
ICAgICAgaWYgKHVwZGF0ZUludGVyZmFjZSkKLSAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUFs
bCh0cnVlKTsKKyAgICAgICAgICAgIGlmICh1cGRhdGVJbnRlcmZhY2UgJiYgY3VycmVudE5vZGUg
PT09IHNlY3Rpb24ucGFuZS5ub2RlKQorICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUFsbCgp
OwogICAgICAgICB9CiAKICAgICAgICAgLy8gQXBwZW5kIGEgIjsiIGlmIHRoZSBuZXcgdGV4dCBk
b2VzIG5vdCBlbmQgaW4gIjsiLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100985</attachid>
            <date>2011-07-15 08:22:03 -0700</date>
            <delta_ts>2011-07-15 08:25:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64283-20110715192201.patch</filename>
            <type>text/plain</type>
            <size>25166</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTEwNjcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3NjMwNTA3NTdjNTk1MTM5MjJiYTEx
NjFmMzQ4MWE5ZDQ0OWY0NjNiLi4zMzZmMzI5ZGNiYzM3NzgzMTVhNDBjNjhiMTAzMWQ5ZDJiZDE3
YzU1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDctMTUgIFBhdmVsIEZlbGRtYW4gIDxw
ZmVsZG1hbkBnb29nbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEZvY3VzaW5nIG9u
IGFub3RoZXIgbm9kZSB3aGlsZSBlZGl0aW5nIENTUyBwcm9wZXJ0eSBkb2VzIG5vdCB1cGRhdGUg
c3R5bGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
NDI4MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
aHR0cC90ZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtdGVzdC5qczoKKyAgICAgICAgKGluaXRpYWxp
emVfRWxlbWVudFRlc3QuSW5zcGVjdG9yVGVzdC53YWl0Rm9yU3R5bGVzKToKKyAgICAgICAgKiBp
bnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1jaGFuZ2Utbm9kZS13aGlsZS1lZGl0aW5nLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtY2hhbmdlLW5v
ZGUtd2hpbGUtZWRpdGluZy5odG1sOiBBZGRlZC4KKwogMjAxMS0wNy0xNSAgR2Fib3IgTG9raSAg
PGxva2lAd2Via2l0Lm9yZz4KIAogICAgICAgICBQaXhlbCBkaWZmZXJlbmNlIGluIEZFTW9ycGhv
bG9neSBlZmZlY3QKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L2VsZW1lbnRzLXRlc3QuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9lbGVt
ZW50cy10ZXN0LmpzCmluZGV4IDkyOGI0ZmM4YWUyMjQyOWYxZTE4MTY1ZWM2MDBkYjczYTIwZTYx
OGQuLmMyY2UxMWEzN2JlYjc5ODk0MTQ3M2M3NjgyMzY2MGFkZmY2Y2Q2YTYgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXRlc3QuanMKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtdGVzdC5qcwpAQCAtODQs
NyArODQsNyBAQCBJbnNwZWN0b3JUZXN0LndhaXRGb3JTdHlsZXMgPSBmdW5jdGlvbihpZFZhbHVl
LCBjYWxsYmFjaykKICAgICAgICAgICAgIGNhbGxiYWNrKCk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KLSAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRTbmlmZmVyKFdlYkluc3BlY3Rv
ci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZSwgIl9zdHlsZXNVcGRhdGVkIiwgc25pZmYpOworICAg
ICAgICBJbnNwZWN0b3JUZXN0LmFkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQ
YW5lLnByb3RvdHlwZSwgIl9ub2RlU3R5bGVzVXBkYXRlZEZvclRlc3QiLCBzbmlmZik7CiAgICAg
fSkobnVsbCk7CiB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMv
c3R5bGVzLWNoYW5nZS1ub2RlLXdoaWxlLWVkaXRpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtY2hhbmdlLW5vZGUtd2hpbGUtZWRpdGluZy1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYTU4NWQ5YjIwOWVkZjIwYmVjYTk5NDBiNjYwMzRiZTZhY2Ix
YjllNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvc3R5
bGVzLWNoYW5nZS1ub2RlLXdoaWxlLWVkaXRpbmctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTYg
QEAKK1Rlc3RzIHRoYXQgY2hhbmdpbmcgc2VsZWN0ZWQgbm9kZSB3aGlsZSBlZGl0aW5nIHN0eWxl
IGRvZXMgdXBkYXRlIHN0eWxlcyBzaWRlYmFyLgorCitUZXh0CitbZXhwYW5kZWRdIGVsZW1lbnQu
c3R5bGUgeyAoKQorY29sb3I6IHJlZDsKKworCitbZXhwYW5kZWRdIGVsZW1lbnQuc3R5bGUgeyAo
KQorY29sb3I6IGJsdWU7CisKKworW2V4cGFuZGVkXSBlbGVtZW50LnN0eWxlIHsgKCkKK2JhY2tn
cm91bmQ6IHJlZDsKKworCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHls
ZXMvc3R5bGVzLWNoYW5nZS1ub2RlLXdoaWxlLWVkaXRpbmcuaHRtbCBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9zdHlsZXMvc3R5bGVzLWNoYW5nZS1ub2RlLXdoaWxlLWVkaXRpbmcuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42YTIwYzQ4NjBjYzQ0NzU2MjdhZmE5MjJhZDAyOTUxMTEzNzU2MTM2Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtY2hhbmdlLW5v
ZGUtd2hpbGUtZWRpdGluZy5odG1sCkBAIC0wLDAgKzEsNTIgQEAKKzxodG1sPgorPGhlYWQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2VsZW1l
bnRzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworZnVuY3Rpb24gdGVzdCgpCit7Cisg
ICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgiZWxlbWVudHMiKTsKKyAgICBJbnNwZWN0b3JUZXN0
LnNlbGVjdE5vZGVBbmRXYWl0Rm9yU3R5bGVzKCJpbnNwZWN0ZWQiLCBzdGVwMSk7CisKKyAgICB2
YXIgdHJlZUVsZW1lbnQ7CisgICAgdmFyIHNlY3Rpb247CisKKyAgICBmdW5jdGlvbiBzdGVwMSgp
CisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBTZWxlY3RlZEVsZW1lbnRTdHlsZXMo
dHJ1ZSwgdHJ1ZSwgdHJ1ZSk7CisgICAgICAgIHRyZWVFbGVtZW50ID0gSW5zcGVjdG9yVGVzdC5n
ZXRFbGVtZW50U3R5bGVQcm9wZXJ0eVRyZWVJdGVtKCJjb2xvciIpOworCisgICAgICAgIHRyZWVF
bGVtZW50LnN0YXJ0RWRpdGluZygpOworICAgICAgICB0cmVlRWxlbWVudC5uYW1lRWxlbWVudC50
ZXh0Q29udGVudCA9ICJiYWNrZ3JvdW5kIjsKKyAgICAgICAgdHJlZUVsZW1lbnQubmFtZUVsZW1l
bnQuZGlzcGF0Y2hFdmVudChJbnNwZWN0b3JUZXN0LmNyZWF0ZUtleUV2ZW50KCJFbnRlciIpKTsK
KworICAgICAgICBJbnNwZWN0b3JUZXN0LnNlbGVjdE5vZGVBbmRXYWl0Rm9yU3R5bGVzKCJvdGhl
ciIsIHN0ZXAyKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzdGVwMigpCisgICAgeworICAgICAg
ICBJbnNwZWN0b3JUZXN0LmR1bXBTZWxlY3RlZEVsZW1lbnRTdHlsZXModHJ1ZSwgdHJ1ZSwgdHJ1
ZSk7CisgICAgICAgIEluc3BlY3RvclRlc3Quc2VsZWN0Tm9kZUFuZFdhaXRGb3JTdHlsZXMoImlu
c3BlY3RlZCIsIHN0ZXAzKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzdGVwMygpCisgICAgewor
ICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBTZWxlY3RlZEVsZW1lbnRTdHlsZXModHJ1ZSwgdHJ1
ZSwgdHJ1ZSk7CisgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgfQor
fQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+
CitUZXN0cyB0aGF0IGNoYW5naW5nIHNlbGVjdGVkIG5vZGUgd2hpbGUgZWRpdGluZyBzdHlsZSBk
b2VzIHVwZGF0ZSBzdHlsZXMgc2lkZWJhci4KKzwvcD4KKworPGRpdiBpZD0iaW5zcGVjdGVkIiBz
dHlsZT0iY29sb3I6IHJlZCI+VGV4dDwvZGl2PgorPGRpdiBpZD0ib3RoZXIiIHN0eWxlPSJjb2xv
cjogYmx1ZSI+PC9kaXY+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5NTNmNTNj
ZjcyODE5ZjQ0YTRiZmIzNjBmOTE3MWUwM2Y0ODA1NGY5Li5mZmRiYjUyZjI5YzBjY2Q0ZDYyMjky
NmRkNTRjMzJlMmM5MjY2YTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAgQEAKKzIwMTEtMDct
MTUgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBnb29nbGUuY29tPgorCisgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IEZvY3VzaW5nIG9uIGFub3RoZXIgbm9kZSB3aGlsZSBlZGl0aW5nIENTUyBwcm9w
ZXJ0eSBkb2VzIG5vdCB1cGRhdGUgc3R5bGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD02NDI4MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRlc3Q6IGluc3BlY3Rvci9zdHlsZXMvc3R5bGVzLWNoYW5nZS1u
b2RlLXdoaWxlLWVkaXRpbmcuaHRtbAorCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9D
U1NTdHlsZU1vZGVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1Byb3BlcnR5LnByb3Rv
dHlwZS5zZXRUZXh0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NQcm9wZXJ0eS5wcm90b3R5
cGUuc2V0VGV4dC5jYWxsYmFjayk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9ET01B
Z2VudC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01BZ2VudC5wcm90b3R5cGUuX2lubGlu
ZVN0eWxlSW52YWxpZGF0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTURpc3BhdGNoZXIu
cHJvdG90eXBlLmlubGluZVN0eWxlSW52YWxpZGF0ZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvRWxlbWVudHNQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FbGVtZW50
c1BhbmVsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZS5f
YXR0cmlidXRlc1VwZGF0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwu
cHJvdG90eXBlLnVwZGF0ZVN0eWxlcyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9N
ZXRyaWNzU2lkZWJhclBhbmUuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTWV0cmljc1NpZGVi
YXJQYW5lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5NZXRyaWNzU2lkZWJhclBhbmUucHJvdG90
eXBlLnVwZGF0ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTWV0cmljc1NpZGViYXJQYW5lLnBy
b3RvdHlwZS5faW5uZXJVcGRhdGUuY2FsbGJhY2spOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk1l
dHJpY3NTaWRlYmFyUGFuZS5wcm90b3R5cGUuX2lubmVyVXBkYXRlLmlubGluZVN0eWxlQ2FsbGJh
Y2spOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk1ldHJpY3NTaWRlYmFyUGFuZS5wcm90b3R5cGUu
X2lubmVyVXBkYXRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5NZXRyaWNzU2lkZWJhclBhbmUu
cHJvdG90eXBlLl9zdHlsZVNoZWV0Q2hhbmdlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTWV0
cmljc1NpZGViYXJQYW5lLnByb3RvdHlwZS5fYXR0cmlidXRlc1VwZGF0ZWQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLk1ldHJpY3NTaWRlYmFyUGFuZS5wcm90b3R5cGUuc3RhcnRFZGl0aW5nKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5NZXRyaWNzU2lkZWJhclBhbmUucHJvdG90eXBlLmVkaXRp
bmdFbmRlZCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFu
ZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZSk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUucHJvdG90eXBlLnVwZGF0ZSk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUucHJvdG90eXBlLl9pbm5lclVwZGF0
ZS5zdHlsZXNDYWxsYmFjayk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBh
bmUucHJvdG90eXBlLl9pbm5lclVwZGF0ZS5jb21wdXRlZFN0eWxlQ2FsbGJhY2spOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLnByb3RvdHlwZS5faW5uZXJVcGRhdGUp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLnByb3RvdHlwZS5fc3R5
bGVTaGVldENoYW5nZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5l
LnByb3RvdHlwZS5fYXR0cmlidXRlc1VwZGF0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0
eWxlc1NpZGViYXJQYW5lLnByb3RvdHlwZS5fcmVmcmVzaFVwZGF0ZSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUucHJvdG90eXBlLl9yZWJ1aWxkVXBkYXRlKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5wcm90b3R5cGUuX25vZGVTdHls
ZXNVcGRhdGVkRm9yVGVzdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBh
bmUucHJvdG90eXBlLl90b2dnbGVFbGVtZW50U3RhdGVQYW5lKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5wcm90b3R5cGUuX2NyZWF0ZUVsZW1lbnRTdGF0ZVBhbmUu
Y2xpY2tMaXN0ZW5lcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVF
bGVtZW50LnByb3RvdHlwZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRy
ZWVFbGVtZW50LnByb3RvdHlwZS5ldmVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVQ
cm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZS5lbGVtZW50LnVzZXJJbnB1dC5wcmV2aW91c0Nv
bnRlbnQuY29udGV4dC5tb3ZlRGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdHls
ZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlLnN0eWxlVGV4dC51cGRhdGVJbnRlcmZhY2Uu
bWFqb3JDaGFuZ2UuaXNSZXZlcnQpOgorCiAyMDExLTA3LTE1ICBQaXJvc2thIEFuZHLDoXMgIDxQ
aXJvc2thLkFuZHJhc0BzdHVkLnUtc3plZ2VkLmh1PgogCiAgICAgICAgIFBpeGVsIGRpZmZlcmVu
Y2UgaW4gRkVNb3JwaG9sb2d5IGVmZmVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9DU1NTdHlsZU1vZGVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9DU1NTdHlsZU1vZGVsLmpzCmluZGV4IGU0ZTg3MjNiOWE3MGViODU0ZjQ0
YzhmZDk1NjRiYjZlYmNkZDUzNmEuLjkzNTc5MmZiYzZmMWUwMDc1ZDk0OWM5ZGVlMTdiNDQxNmQ2
YzE1MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ1NT
U3R5bGVNb2RlbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NT
U1N0eWxlTW9kZWwuanMKQEAgLTUxMyw4ICs1MTMsOCBAQCBXZWJJbnNwZWN0b3IuQ1NTUHJvcGVy
dHkucHJvdG90eXBlID0gewogICAgICAgICBmdW5jdGlvbiBlbmFibGVkQ2FsbGJhY2soc3R5bGUp
CiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChzdHlsZSkKLSAgICAgICAgICAgICAgICBXZWJJ
bnNwZWN0b3IuY3NzTW9kZWwuX2ZpcmVTdHlsZVNoZWV0Q2hhbmdlZChzdHlsZS5pZC5zdHlsZVNo
ZWV0SWQsIG1ham9yQ2hhbmdlKTsKLSAgICAgICAgICAgIGlmICh1c2VyQ2FsbGJhY2spCisgICAg
ICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmNzc01vZGVsLl9maXJlU3R5bGVTaGVldENoYW5nZWQo
c3R5bGUuaWQuc3R5bGVTaGVldElkLCBtYWpvckNoYW5nZSwgdXNlckNhbGxiYWNrID8gdXNlckNh
bGxiYWNrLmJpbmQobnVsbCwgc3R5bGUpIDogbnVsbCk7CisgICAgICAgICAgICBlbHNlIGlmICh1
c2VyQ2FsbGJhY2spCiAgICAgICAgICAgICAgICAgdXNlckNhbGxiYWNrKHN0eWxlKTsKICAgICAg
ICAgfQogCkBAIC01MzAsNyArNTMwLDcgQEAgV2ViSW5zcGVjdG9yLkNTU1Byb3BlcnR5LnByb3Rv
dHlwZSA9IHsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0K
IAotICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5jc3NNb2RlbC5fZmlyZVN0eWxlU2hlZXRD
aGFuZ2VkKHN0eWxlLmlkLnN0eWxlU2hlZXRJZCwgbWFqb3JDaGFuZ2UsIHVzZXJDYWxsYmFjayA/
IHVzZXJDYWxsYmFjay5iaW5kKHRoaXMsIHN0eWxlKSA6IG51bGwpOworICAgICAgICAgICAgICAg
IFdlYkluc3BlY3Rvci5jc3NNb2RlbC5fZmlyZVN0eWxlU2hlZXRDaGFuZ2VkKHN0eWxlLmlkLnN0
eWxlU2hlZXRJZCwgbWFqb3JDaGFuZ2UsIHVzZXJDYWxsYmFjayA/IHVzZXJDYWxsYmFjay5iaW5k
KG51bGwsIHN0eWxlKSA6IG51bGwpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
ICAgICBpZiAodXNlckNhbGxiYWNrKQogICAgICAgICAgICAgICAgICAgICB1c2VyQ2FsbGJhY2so
bnVsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RP
TUFnZW50LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01BZ2VudC5q
cwppbmRleCBjYjJlYmQ0NGNhNDRhMGRhMTI1MGM0ODJmMmIxYjA1ZjFiMmIwZTQ4Li45Y2FjOGQw
MTQ5ZjA3YTU0YmNlYjI3YzMwYzc4YThiNjI0MzM2MjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTUFnZW50LmpzCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvRE9NQWdlbnQuanMKQEAgLTQyOSw2ICs0MjksMTIgQEAgV2Vi
SW5zcGVjdG9yLkRPTUFnZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fbG9hZE5vZGVB
dHRyaWJ1dGVzU29vbihub2RlSWRzKTsKICAgICB9LAogCisgICAgX2lubGluZVN0eWxlSW52YWxp
ZGF0ZWQ6IGZ1bmN0aW9uKG5vZGVJZHMpCisgICAgeworICAgICAgICAvLyBGSVhNRTogaGFuZGxl
IGRpZmZlcmVudGx5ICh3ZSBkb24ndCBuZWNlc3NhcmlseSBuZWVkIHRvIHVwZGF0ZSBhdHRyaWJ1
dGVzIHVwb24gdGhpcyBtZXNzYWdlKS4KKyAgICAgICAgdGhpcy5fbG9hZE5vZGVBdHRyaWJ1dGVz
U29vbihub2RlSWRzKTsKKyAgICB9LAorCiAgICAgX2xvYWROb2RlQXR0cmlidXRlc1Nvb246IGZ1
bmN0aW9uKG5vZGVJZHMpCiAgICAgewogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVJ
ZHMubGVuZ3RoOyArK2kpCkBAIC01OTAsNyArNTk2LDcgQEAgV2ViSW5zcGVjdG9yLkRPTURpc3Bh
dGNoZXIucHJvdG90eXBlID0gewogCiAgICAgaW5saW5lU3R5bGVJbnZhbGlkYXRlZDogZnVuY3Rp
b24obm9kZUlkcykKICAgICB7Ci0gICAgICAgIHRoaXMuX2RvbUFnZW50Ll9hdHRyaWJ1dGVzVXBk
YXRlZChub2RlSWRzKTsKKyAgICAgICAgdGhpcy5fZG9tQWdlbnQuX2lubGluZVN0eWxlSW52YWxp
ZGF0ZWQobm9kZUlkcyk7CiAgICAgfSwKIAogICAgIGNoYXJhY3RlckRhdGFNb2RpZmllZDogZnVu
Y3Rpb24obm9kZUlkLCBuZXdWYWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvRWxlbWVudHNQYW5lbC5qcwppbmRleCBiYTlmZGI5YTQ4MmFhNmRjZGUzN2Ux
Mzg5MmZjYTNmOGQyMjA2NjhmLi4xMmE5MzFmY2IxYjAyN2FlODM5NWM5MWM3MDAzNTM3YjBjOTE0
NGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1l
bnRzUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVt
ZW50c1BhbmVsLmpzCkBAIC05Myw3ICs5Myw2IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVs
ID0gZnVuY3Rpb24oKQogICAgIHRoaXMuc2lkZWJhclBhbmVzLnN0eWxlcy5hZGRFdmVudExpc3Rl
bmVyKCJzdHlsZSBlZGl0ZWQiLCB0aGlzLl9zdHlsZXNQYW5lRWRpdGVkLCB0aGlzKTsKICAgICB0
aGlzLnNpZGViYXJQYW5lcy5zdHlsZXMuYWRkRXZlbnRMaXN0ZW5lcigic3R5bGUgcHJvcGVydHkg
dG9nZ2xlZCIsIHRoaXMuX3N0eWxlc1BhbmVFZGl0ZWQsIHRoaXMpOwogICAgIHRoaXMuc2lkZWJh
clBhbmVzLm1ldHJpY3MuYWRkRXZlbnRMaXN0ZW5lcigibWV0cmljcyBlZGl0ZWQiLCB0aGlzLl9t
ZXRyaWNzUGFuZUVkaXRlZCwgdGhpcyk7Ci0gICAgV2ViSW5zcGVjdG9yLmNzc01vZGVsLmFkZEV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwuRXZlbnRzLlN0eWxlU2hlZXRD
aGFuZ2VkLCB0aGlzLl9zdHlsZVNoZWV0Q2hhbmdlZCwgdGhpcyk7CiAKICAgICB0aGlzLnNpZGVi
YXJFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgdGhpcy5zaWRl
YmFyRWxlbWVudC5pZCA9ICJlbGVtZW50cy1zaWRlYmFyIjsKQEAgLTQyNiwyNCArNDI1LDExIEBA
IFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy50
cmVlT3V0bGluZS5mb2N1c2VkRE9NTm9kZSA9IHg7CiAgICAgfSwKIAotICAgIHN0YXJ0RWRpdGlu
Z1N0eWxlOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlzLl9pc0VkaXRpbmdTdHlsZSA9
IHRydWU7Ci0gICAgfSwKLQotICAgIGVuZEVkaXRpbmdTdHlsZTogZnVuY3Rpb24oKQotICAgIHsK
LSAgICAgICAgZGVsZXRlIHRoaXMuX2lzRWRpdGluZ1N0eWxlOwotICAgIH0sCi0KICAgICBfYXR0
cmlidXRlc1VwZGF0ZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5yZWNl
bnRseU1vZGlmaWVkTm9kZXMucHVzaCh7bm9kZTogZXZlbnQuZGF0YSwgdXBkYXRlZDogdHJ1ZX0p
OwogICAgICAgICBpZiAodGhpcy52aXNpYmxlKQogICAgICAgICAgICAgdGhpcy5fdXBkYXRlTW9k
aWZpZWROb2Rlc1Nvb24oKTsKLQotICAgICAgICBpZiAoIXRoaXMuX2lzRWRpdGluZ1N0eWxlICYm
IGV2ZW50LmRhdGEgPT09IHRoaXMuZm9jdXNlZERPTU5vZGUpCi0gICAgICAgICAgICB0aGlzLl9z
dHlsZVNoZWV0Q2hhbmdlZCgpOwogICAgIH0sCiAKICAgICBfY2hhcmFjdGVyRGF0YU1vZGlmaWVk
OiBmdW5jdGlvbihldmVudCkKQEAgLTUzOSwxMiArNTI1LDYgQEAgV2ViSW5zcGVjdG9yLkVsZW1l
bnRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLnVwZGF0ZVN0eWxlcyh0cnVlKTsK
ICAgICB9LAogCi0gICAgX3N0eWxlU2hlZXRDaGFuZ2VkOiBmdW5jdGlvbigpCi0gICAgewotICAg
ICAgICB0aGlzLl9tZXRyaWNzUGFuZUVkaXRlZCgpOwotICAgICAgICB0aGlzLl9zdHlsZXNQYW5l
RWRpdGVkKCk7Ci0gICAgfSwKLQogICAgIF9tb3VzZU1vdmVkSW5DcnVtYnM6IGZ1bmN0aW9uKGV2
ZW50KQogICAgIHsKICAgICAgICAgdmFyIG5vZGVVbmRlck1vdXNlID0gZG9jdW1lbnQuZWxlbWVu
dEZyb21Qb2ludChldmVudC5wYWdlWCwgZXZlbnQucGFnZVkpOwpAQCAtMTAxNywxOCArOTk3LDEz
IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAg
ICAgIHZhciBzdHlsZXNTaWRlYmFyUGFuZSA9IHRoaXMuc2lkZWJhclBhbmVzLnN0eWxlczsKICAg
ICAgICAgdmFyIGNvbXB1dGVkU3R5bGVQYW5lID0gdGhpcy5zaWRlYmFyUGFuZXMuY29tcHV0ZWRT
dHlsZTsKLSAgICAgICAgaWYgKCghc3R5bGVzU2lkZWJhclBhbmUuZXhwYW5kZWQgJiYgIWNvbXB1
dGVkU3R5bGVQYW5lLmV4cGFuZGVkKSB8fCAhc3R5bGVzU2lkZWJhclBhbmUubmVlZHNVcGRhdGUg
fHwgdGhpcy5faXNFZGl0aW5nU3R5bGUpCisgICAgICAgIGlmICgoIXN0eWxlc1NpZGViYXJQYW5l
LmV4cGFuZGVkICYmICFjb21wdXRlZFN0eWxlUGFuZS5leHBhbmRlZCkgfHwgIXN0eWxlc1NpZGVi
YXJQYW5lLm5lZWRzVXBkYXRlKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHN0eWxl
c1NpZGViYXJQYW5lLnVwZGF0ZSh0aGlzLmZvY3VzZWRET01Ob2RlLCBudWxsLCBmb3JjZVVwZGF0
ZSwgdGhpcy5fc3R5bGVzVXBkYXRlZC5iaW5kKHRoaXMsIHRoaXMuZm9jdXNlZERPTU5vZGUpKTsK
KyAgICAgICAgc3R5bGVzU2lkZWJhclBhbmUudXBkYXRlKHRoaXMuZm9jdXNlZERPTU5vZGUsIGZv
cmNlVXBkYXRlKTsKICAgICAgICAgc3R5bGVzU2lkZWJhclBhbmUubmVlZHNVcGRhdGUgPSBmYWxz
ZTsKICAgICB9LAogCi0gICAgX3N0eWxlc1VwZGF0ZWQ6IGZ1bmN0aW9uKG5vZGUpCi0gICAgewot
ICAgICAgICAvLyBUaGlzIG1ldGhvZCBpcyBvdmVycmlkZW4gaW4gdGVzdHMuCi0gICAgfSwKLQog
ICAgIHVwZGF0ZU1ldHJpY3M6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHZhciBtZXRyaWNz
U2lkZWJhclBhbmUgPSB0aGlzLnNpZGViYXJQYW5lcy5tZXRyaWNzOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9NZXRyaWNzU2lkZWJhclBhbmUuanMgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL01ldHJpY3NTaWRlYmFyUGFuZS5qcwpp
bmRleCA5NjJhOTU2NzI4MDc1MDg4YmQyNWNkNzQ5ZDk0NDI5OGVlYzlhOTU2Li5iMDU4YTQwMDMx
YjBhYzA0ZTFiMGI4YTcyMTIzMmU4ZjMxNTU0MTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL01ldHJpY3NTaWRlYmFyUGFuZS5qcworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL01ldHJpY3NTaWRlYmFyUGFuZS5qcwpAQCAtMjks
NiArMjksOSBAQAogV2ViSW5zcGVjdG9yLk1ldHJpY3NTaWRlYmFyUGFuZSA9IGZ1bmN0aW9uKCkK
IHsKICAgICBXZWJJbnNwZWN0b3IuU2lkZWJhclBhbmUuY2FsbCh0aGlzLCBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIk1ldHJpY3MiKSk7CisKKyAgICBXZWJJbnNwZWN0b3IuY3NzTW9kZWwuYWRkRXZl
bnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5FdmVudHMuU3R5bGVTaGVldENo
YW5nZWQsIHRoaXMuX3N0eWxlU2hlZXRDaGFuZ2VkLCB0aGlzKTsKKyAgICBXZWJJbnNwZWN0b3Iu
ZG9tQWdlbnQuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NQWdlbnQuRXZlbnRzLkF0
dHJNb2RpZmllZCwgdGhpcy5fYXR0cmlidXRlc1VwZGF0ZWQsIHRoaXMpOwogfQogCiBXZWJJbnNw
ZWN0b3IuTWV0cmljc1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKQEAgLTM2LDMwICszOSw1MSBA
QCBXZWJJbnNwZWN0b3IuTWV0cmljc1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKICAgICB7CiAg
ICAgICAgIGlmIChub2RlKQogICAgICAgICAgICAgdGhpcy5ub2RlID0gbm9kZTsKLSAgICAgICAg
ZWxzZQotICAgICAgICAgICAgbm9kZSA9IHRoaXMubm9kZTsKKyAgICAgICAgdGhpcy5faW5uZXJV
cGRhdGUoKTsKKyAgICB9LAorCisgICAgX2lubmVyVXBkYXRlOiBmdW5jdGlvbigpCisgICAgewor
ICAgICAgICAvLyBGSVhNRTogYXZvaWQgdXBkYXRlcyBvZiBhIGNvbGxhcHNlZCBwYW5lLgorICAg
ICAgICB2YXIgbm9kZSA9IHRoaXMubm9kZTsKIAogICAgICAgICBpZiAoIW5vZGUgfHwgbm9kZS5u
b2RlVHlwZSgpICE9PSBOb2RlLkVMRU1FTlRfTk9ERSkgewogICAgICAgICAgICAgdGhpcy5ib2R5
RWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKLSAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwotICAgICAgICB2YXIgY2FsbGJhY2sgPSBmdW5j
dGlvbihzdHlsZSkgewotICAgICAgICAgICAgaWYgKCFzdHlsZSkKKyAgICAgICAgZnVuY3Rpb24g
Y2FsbGJhY2soc3R5bGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghc3R5bGUgfHwgdGhp
cy5ub2RlICE9PSBub2RlKQogICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIHNl
bGYuX3VwZGF0ZShzdHlsZSk7Ci0gICAgICAgIH07Ci0gICAgICAgIFdlYkluc3BlY3Rvci5jc3NN
b2RlbC5nZXRDb21wdXRlZFN0eWxlQXN5bmMobm9kZS5pZCwgY2FsbGJhY2spOworICAgICAgICAg
ICAgdGhpcy5fdXBkYXRlTWV0cmljcyhzdHlsZSk7CisgICAgICAgIH0KKyAgICAgICAgV2ViSW5z
cGVjdG9yLmNzc01vZGVsLmdldENvbXB1dGVkU3R5bGVBc3luYyhub2RlLmlkLCBjYWxsYmFjay5i
aW5kKHRoaXMpKTsKIAotICAgICAgICB2YXIgaW5saW5lU3R5bGVDYWxsYmFjayA9IGZ1bmN0aW9u
KHN0eWxlKSB7Ci0gICAgICAgICAgICBpZiAoIXN0eWxlKQorICAgICAgICBmdW5jdGlvbiBpbmxp
bmVTdHlsZUNhbGxiYWNrKHN0eWxlKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIXN0eWxl
IHx8IHRoaXMubm9kZSAhPT0gbm9kZSkKICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICBzZWxmLmlubGluZVN0eWxlID0gc3R5bGU7Ci0gICAgICAgIH07Ci0gICAgICAgIFdlYklu
c3BlY3Rvci5jc3NNb2RlbC5nZXRJbmxpbmVTdHlsZUFzeW5jKG5vZGUuaWQsIGlubGluZVN0eWxl
Q2FsbGJhY2spOworICAgICAgICAgICAgdGhpcy5pbmxpbmVTdHlsZSA9IHN0eWxlOworICAgICAg
ICB9CisgICAgICAgIFdlYkluc3BlY3Rvci5jc3NNb2RlbC5nZXRJbmxpbmVTdHlsZUFzeW5jKG5v
ZGUuaWQsIGlubGluZVN0eWxlQ2FsbGJhY2suYmluZCh0aGlzKSk7CiAgICAgfSwKIAorICAgIF9z
dHlsZVNoZWV0Q2hhbmdlZDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5faW5uZXJV
cGRhdGUoKTsKKyAgICB9LAorCisgICAgX2F0dHJpYnV0ZXNVcGRhdGVkOiBmdW5jdGlvbihldmVu
dCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLm5vZGUgIT09IGV2ZW50LmRhdGEpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgLy8gInN0eWxlIiBhdHRyaWJ1dGUgbWlnaHQgaGF2ZSBj
aGFuZ2VkLiBVcGRhdGUgbWV0cmljcyB1bmxlc3MgdGhleSBhcmUgYmVpbmcgZWRpdGVkLgorICAg
ICAgICBpZiAoIXRoaXMuX2lzRWRpdGluZ01ldHJpY3MpCisgICAgICAgICAgICB0aGlzLl9pbm5l
clVwZGF0ZSgpOworICAgIH0sICAgIAorCiAgICAgX2dldFByb3BlcnR5VmFsdWVBc1B4OiBmdW5j
dGlvbihzdHlsZSwgcHJvcGVydHlOYW1lKQogICAgIHsKICAgICAgICAgcmV0dXJuIE51bWJlcihz
dHlsZS5nZXRQcm9wZXJ0eVZhbHVlKHByb3BlcnR5TmFtZSkucmVwbGFjZSgvcHgkLywgIiIpIHx8
IDApOwpAQCAtMTI0LDcgKzE0OCw3IEBAIFdlYkluc3BlY3Rvci5NZXRyaWNzU2lkZWJhclBhbmUu
cHJvdG90eXBlID0gewogICAgICAgICBXZWJJbnNwZWN0b3IuaGlnaGxpZ2h0RE9NTm9kZShub2Rl
SWQsIG1vZGUpOwogICAgIH0sCiAKLSAgICBfdXBkYXRlOiBmdW5jdGlvbihzdHlsZSkKKyAgICBf
dXBkYXRlTWV0cmljczogZnVuY3Rpb24oc3R5bGUpCiAgICAgewogICAgICAgICAvLyBVcGRhdGlu
ZyB3aXRoIGNvbXB1dGVkIHN0eWxlLgogICAgICAgICB2YXIgbWV0cmljc0VsZW1lbnQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKQEAgLTI3Miw3ICsyOTYsNyBAQCBXZWJJbnNwZWN0
b3IuTWV0cmljc1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKICAgICAgICAgY29udGV4dC5rZXlE
b3duSGFuZGxlciA9IGJvdW5kS2V5RG93bjsKICAgICAgICAgdGFyZ2V0RWxlbWVudC5hZGRFdmVu
dExpc3RlbmVyKCJrZXlkb3duIiwgYm91bmRLZXlEb3duLCBmYWxzZSk7CiAKLSAgICAgICAgV2Vi
SW5zcGVjdG9yLnBhbmVscy5lbGVtZW50cy5zdGFydEVkaXRpbmdTdHlsZSgpOworICAgICAgICB0
aGlzLl9pc0VkaXRpbmdNZXRyaWNzID0gdHJ1ZTsKICAgICAgICAgV2ViSW5zcGVjdG9yLnN0YXJ0
RWRpdGluZyh0YXJnZXRFbGVtZW50LCB7CiAgICAgICAgICAgICBjb250ZXh0OiBjb250ZXh0LAog
ICAgICAgICAgICAgY29tbWl0SGFuZGxlcjogdGhpcy5lZGl0aW5nQ29tbWl0dGVkLmJpbmQodGhp
cyksCkBAIC0zNDAsNyArMzY0LDcgQEAgV2ViSW5zcGVjdG9yLk1ldHJpY3NTaWRlYmFyUGFuZS5w
cm90b3R5cGUgPSB7CiAgICAgICAgIGRlbGV0ZSB0aGlzLm9yaWdpbmFsUHJvcGVydHlEYXRhOwog
ICAgICAgICBkZWxldGUgdGhpcy5wcmV2aW91c1Byb3BlcnR5RGF0YUNhbmRpZGF0ZTsKICAgICAg
ICAgZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJrZXlkb3duIiwgY29udGV4dC5rZXlEb3du
SGFuZGxlciwgZmFsc2UpOwotICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLmVsZW1lbnRzLmVu
ZEVkaXRpbmdTdHlsZSgpOworICAgICAgICBkZWxldGUgdGhpcy5faXNFZGl0aW5nTWV0cmljczsK
ICAgICB9LAogCiAgICAgZWRpdGluZ0NhbmNlbGxlZDogZnVuY3Rpb24oZWxlbWVudCwgY29udGV4
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVz
U2lkZWJhclBhbmUuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxl
c1NpZGViYXJQYW5lLmpzCmluZGV4IGQ2OWIzN2U0MDAyN2I1NjYzMDJmZDc3M2FlZWZiZGE1ZTkz
ZWFkNDYuLjY3MGNmYTg4Y2YxMWYyMGU1ZTIzNjFhZjY1ODIxMjczNDg4MDRiZmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUu
anMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFy
UGFuZS5qcwpAQCAtODMsNiArODMsOSBAQCBXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUg
PSBmdW5jdGlvbihjb21wdXRlZFN0eWxlUGFuZSkKICAgICB0aGlzLmJvZHlFbGVtZW50LmFwcGVu
ZENoaWxkKHRoaXMuX2VsZW1lbnRTdGF0ZVBhbmUpOwogICAgIHRoaXMuX3NlY3Rpb25zQ29udGFp
bmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgdGhpcy5ib2R5RWxlbWVu
dC5hcHBlbmRDaGlsZCh0aGlzLl9zZWN0aW9uc0NvbnRhaW5lcik7CisKKyAgICBXZWJJbnNwZWN0
b3IuY3NzTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5F
dmVudHMuU3R5bGVTaGVldENoYW5nZWQsIHRoaXMuX3N0eWxlU2hlZXRDaGFuZ2VkLCB0aGlzKTsK
KyAgICBXZWJJbnNwZWN0b3IuZG9tQWdlbnQuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3Iu
RE9NQWdlbnQuRXZlbnRzLkF0dHJNb2RpZmllZCwgdGhpcy5fYXR0cmlidXRlc1VwZGF0ZWQsIHRo
aXMpOwogfQogCiBXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUuQ29sb3JGb3JtYXQgPSB7
CkBAIC0yMTAsMTQgKzIxMywxNCBAQCBXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUucHJv
dG90eXBlID0gewogICAgICAgICB9CiAgICAgfSwKIAotICAgIHVwZGF0ZTogZnVuY3Rpb24obm9k
ZSwgZWRpdGVkU2VjdGlvbiwgZm9yY2VVcGRhdGUsIGNhbGxiYWNrKQorICAgIHVwZGF0ZTogZnVu
Y3Rpb24obm9kZSwgZm9yY2VVcGRhdGUpCiAgICAgewogICAgICAgICB2YXIgcmVmcmVzaCA9IGZh
bHNlOwogCiAgICAgICAgIGlmIChmb3JjZVVwZGF0ZSkKICAgICAgICAgICAgIGRlbGV0ZSB0aGlz
Lm5vZGU7CiAKLSAgICAgICAgaWYgKCFmb3JjZVVwZGF0ZSAmJiAoIW5vZGUgfHwgbm9kZSA9PT0g
dGhpcy5ub2RlKSkKKyAgICAgICAgaWYgKCFmb3JjZVVwZGF0ZSAmJiAobm9kZSA9PT0gdGhpcy5u
b2RlKSkKICAgICAgICAgICAgIHJlZnJlc2ggPSB0cnVlOwogCiAgICAgICAgIGlmIChub2RlICYm
IG5vZGUubm9kZVR5cGUoKSA9PT0gTm9kZS5URVhUX05PREUgJiYgbm9kZS5wYXJlbnROb2RlKQpA
QCAtMjMxLDEyICsyMzQsMTYgQEAgV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbm9kZSA9IHRoaXMubm9kZTsKIAor
ICAgICAgICB0aGlzLl9pbm5lclVwZGF0ZShyZWZyZXNoLCBudWxsKTsKKyAgICB9LAorCisgICAg
X2lubmVyVXBkYXRlOiBmdW5jdGlvbihyZWZyZXNoLCBlZGl0ZWRTZWN0aW9uKQorICAgIHsKKyAg
ICAgICAgdmFyIG5vZGUgPSB0aGlzLm5vZGU7CiAgICAgICAgIGlmICghbm9kZSkgewogICAgICAg
ICAgICAgdGhpcy5fc2VjdGlvbnNDb250YWluZXIucmVtb3ZlQ2hpbGRyZW4oKTsKICAgICAgICAg
ICAgIHRoaXMuX2NvbXB1dGVkU3R5bGVQYW5lLmJvZHlFbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7
CiAgICAgICAgICAgICB0aGlzLnNlY3Rpb25zID0ge307Ci0gICAgICAgICAgICBpZiAoY2FsbGJh
Y2spCi0gICAgICAgICAgICAgICAgY2FsbGJhY2soKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCkBAIC0yNDQsMTYgKzI1MSwxMiBAQCBXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJh
clBhbmUucHJvdG90eXBlID0gewogICAgICAgICB7CiAgICAgICAgICAgICBpZiAodGhpcy5ub2Rl
ID09PSBub2RlICYmIHN0eWxlcykKICAgICAgICAgICAgICAgICB0aGlzLl9yZWJ1aWxkVXBkYXRl
KG5vZGUsIHN0eWxlcyk7Ci0gICAgICAgICAgICBpZiAoY2FsbGJhY2spCi0gICAgICAgICAgICAg
ICAgY2FsbGJhY2soKTsKICAgICAgICAgfQogCiAgICAgICAgIGZ1bmN0aW9uIGNvbXB1dGVkU3R5
bGVDYWxsYmFjayhjb21wdXRlZFN0eWxlKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAodGhp
cy5ub2RlID09PSBub2RlICYmIGNvbXB1dGVkU3R5bGUpCiAgICAgICAgICAgICAgICAgdGhpcy5f
cmVmcmVzaFVwZGF0ZShub2RlLCBjb21wdXRlZFN0eWxlLCBlZGl0ZWRTZWN0aW9uKTsKLSAgICAg
ICAgICAgIGlmIChjYWxsYmFjaykKLSAgICAgICAgICAgICAgICBjYWxsYmFjaygpOwogICAgICAg
ICB9CiAKICAgICAgICAgaWYgKHJlZnJlc2gpCkBAIC0yNjIsNiArMjY1LDI0IEBAIFdlYkluc3Bl
Y3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBXZWJJbnNw
ZWN0b3IuY3NzTW9kZWwuZ2V0U3R5bGVzQXN5bmMobm9kZS5pZCwgdGhpcy5fZm9yY2VkUHNldWRv
Q2xhc3Nlcywgc3R5bGVzQ2FsbGJhY2suYmluZCh0aGlzKSk7CiAgICAgfSwKIAorICAgIF9zdHls
ZVNoZWV0Q2hhbmdlZDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX3VzZXJP
cGVyYXRpb24gfHwgdGhpcy5faXNFZGl0aW5nU3R5bGUpCisgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgdGhpcy5faW5uZXJVcGRhdGUoZmFsc2UpOworICAgIH0sCisKKyAgICBfYXR0cmli
dXRlc1VwZGF0ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMubm9k
ZSAhPT0gZXZlbnQuZGF0YSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAvLyAic3R5
bGUiIGF0dHJpYnV0ZSBtaWdodCBoYXZlIGNoYW5nZWQuIFVwZGF0ZSBzdHlsZXMgdW5sZXNzIHRo
ZXkgYXJlIGJlaW5nIGVkaXRlZC4KKyAgICAgICAgaWYgKCF0aGlzLl9pc0VkaXRpbmdTdHlsZSAm
JiAhdGhpcy5fdXNlck9wZXJhdGlvbikKKyAgICAgICAgICAgIHRoaXMuX2lubmVyVXBkYXRlKGZh
bHNlKTsKKyAgICB9LAorCiAgICAgX3JlZnJlc2hVcGRhdGU6IGZ1bmN0aW9uKG5vZGUsIGNvbXB1
dGVkU3R5bGUsIGVkaXRlZFNlY3Rpb24pCiAgICAgewogICAgICAgICBmb3IgKHZhciBwc2V1ZG9J
ZCBpbiB0aGlzLnNlY3Rpb25zKSB7CkBAIC0yNzMsNiArMjk0LDggQEAgV2ViSW5zcGVjdG9yLlN0
eWxlc1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogICAgICAgICAvLyBUcmFj
ZSB0aGUgY29tcHV0ZWQgc3R5bGUuCiAgICAgICAgIHRoaXMuc2VjdGlvbnNbMF1bMF0ucmVidWls
ZENvbXB1dGVkVHJhY2UodGhpcy5zZWN0aW9uc1swXSk7CisKKyAgICAgICAgdGhpcy5fbm9kZVN0
eWxlc1VwZGF0ZWRGb3JUZXN0KG5vZGUsIHRydWUpOwogICAgIH0sCiAKICAgICBfcmVidWlsZFVw
ZGF0ZTogZnVuY3Rpb24obm9kZSwgc3R5bGVzKQpAQCAtMzA4LDYgKzMzMSwxMyBAQCBXZWJJbnNw
ZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5f
bWFya1VzZWRQcm9wZXJ0aWVzKHN0eWxlUnVsZXMsIHVzZWRQcm9wZXJ0aWVzLCBkaXNhYmxlZENv
bXB1dGVkUHJvcGVydGllcyk7CiAgICAgICAgICAgICB0aGlzLnNlY3Rpb25zW3BzZXVkb0lkXSA9
IHRoaXMuX3JlYnVpbGRTZWN0aW9uc0ZvclN0eWxlUnVsZXMoc3R5bGVSdWxlcywgdXNlZFByb3Bl
cnRpZXMsIGRpc2FibGVkQ29tcHV0ZWRQcm9wZXJ0aWVzLCBwc2V1ZG9JZCwgYW5jaG9yRWxlbWVu
dCk7CiAgICAgICAgIH0KKworICAgICAgICB0aGlzLl9ub2RlU3R5bGVzVXBkYXRlZEZvclRlc3Qo
bm9kZSwgZmFsc2UpOworICAgIH0sCisKKyAgICBfbm9kZVN0eWxlc1VwZGF0ZWRGb3JUZXN0OiBm
dW5jdGlvbihub2RlLCByZWZyZXNoKQorICAgIHsKKyAgICAgICAgLy8gVGVzdHMgb3ZlcnJpZGUg
dGhpcyBtZXRob2QuCiAgICAgfSwKIAogICAgIF9yZWZyZXNoU3R5bGVSdWxlczogZnVuY3Rpb24o
c2VjdGlvbnMsIGNvbXB1dGVkU3R5bGUpCkBAIC02ODAsNyArNzEwLDcgQEAgV2ViSW5zcGVjdG9y
LlN0eWxlc1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IHRoaXMuX2VsZW1lbnRTdGF0ZVBhbmUuaW5wdXRzLmxlbmd0aDsgKytpKQog
ICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbGVtZW50U3RhdGVQYW5lLmlucHV0c1tpXS5jaGVj
a2VkID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMuX2ZvcmNlZFBzZXVkb0Ns
YXNzZXM7Ci0gICAgICAgICAgICAgICAgdGhpcy51cGRhdGUoV2ViSW5zcGVjdG9yLnBhbmVscy5l
bGVtZW50cy5mb2N1c2VkRE9NTm9kZSwgbnVsbCwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgdGhp
cy5faW5uZXJVcGRhdGUoZmFsc2UpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfSwK
QEAgLTcwMiw3ICs3MzIsNyBAQCBXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUucHJvdG90
eXBlID0gewogICAgICAgICAgICAgICAgICAgICBwc2V1ZG9DbGFzc2VzLnB1c2goaW5wdXRzW2ld
LnN0YXRlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHRoaXMuX2ZvcmNlZFBzZXVkb0Ns
YXNzZXMgPSBwc2V1ZG9DbGFzc2VzLmxlbmd0aCA/IHBzZXVkb0NsYXNzZXMgOiB1bmRlZmluZWQ7
Ci0gICAgICAgICAgICB0aGlzLnVwZGF0ZShXZWJJbnNwZWN0b3IucGFuZWxzLmVsZW1lbnRzLmZv
Y3VzZWRET01Ob2RlLCBudWxsLCB0cnVlKTsKKyAgICAgICAgICAgIHRoaXMuX2lubmVyVXBkYXRl
KGZhbHNlKTsKICAgICAgICAgfQogCiAgICAgICAgIGZ1bmN0aW9uIGNyZWF0ZUNoZWNrYm94KHN0
YXRlKQpAQCAtMTU4MSwxMiArMTYxMSwxMiBAQCBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRy
ZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy50b29sdGlwID0gdGhpcy5wcm9w
ZXJ0eS5wcm9wZXJ0eVRleHQ7CiAgICAgfSwKIAotICAgIHVwZGF0ZUFsbDogZnVuY3Rpb24odXBk
YXRlQWxsUnVsZXMpCisgICAgX3VwZGF0ZUFsbDogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAg
aWYgKCF0aGlzLnRyZWVPdXRsaW5lKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBpZiAo
dXBkYXRlQWxsUnVsZXMgJiYgdGhpcy50cmVlT3V0bGluZS5zZWN0aW9uICYmIHRoaXMudHJlZU91
dGxpbmUuc2VjdGlvbi5wYW5lKQotICAgICAgICAgICAgdGhpcy50cmVlT3V0bGluZS5zZWN0aW9u
LnBhbmUudXBkYXRlKG51bGwsIHRoaXMudHJlZU91dGxpbmUuc2VjdGlvbik7CisgICAgICAgIGlm
ICh0aGlzLnRyZWVPdXRsaW5lLnNlY3Rpb24gJiYgdGhpcy50cmVlT3V0bGluZS5zZWN0aW9uLnBh
bmUpCisgICAgICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLnNlY3Rpb24ucGFuZS5faW5uZXJVcGRh
dGUodHJ1ZSwgdGhpcy50cmVlT3V0bGluZS5zZWN0aW9uKTsKICAgICAgICAgZWxzZSBpZiAodGhp
cy50cmVlT3V0bGluZS5zZWN0aW9uKQogICAgICAgICAgICAgdGhpcy50cmVlT3V0bGluZS5zZWN0
aW9uLnVwZGF0ZSh0cnVlKTsKICAgICAgICAgZWxzZQpAQCAtMTYwOCw3ICsxNjM4LDcgQEAgV2Vi
SW5zcGVjdG9yLlN0eWxlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAg
ICAgICBpZiAodGhpcy50cmVlT3V0bGluZS5zZWN0aW9uICYmIHRoaXMudHJlZU91dGxpbmUuc2Vj
dGlvbi5wYW5lKQogICAgICAgICAgICAgICAgIHRoaXMudHJlZU91dGxpbmUuc2VjdGlvbi5wYW5l
LmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycygic3R5bGUgcHJvcGVydHkgdG9nZ2xlZCIpOwogCi0g
ICAgICAgICAgICB0aGlzLnVwZGF0ZUFsbCh0cnVlKTsKKyAgICAgICAgICAgIHRoaXMuX3VwZGF0
ZUFsbCgpOwogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5wcm9wZXJ0eS5zZXREaXNhYmxlZChk
aXNhYmxlZCwgY2FsbGJhY2suYmluZCh0aGlzKSk7CkBAIC0xNzg1LDcgKzE4MTUsOCBAQCBXZWJJ
bnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAg
fQogCiAgICAgICAgIGRlbGV0ZSB0aGlzLm9yaWdpbmFsUHJvcGVydHlUZXh0OwotICAgICAgICBX
ZWJJbnNwZWN0b3IucGFuZWxzLmVsZW1lbnRzLnN0YXJ0RWRpdGluZ1N0eWxlKCk7CisKKyAgICAg
ICAgdGhpcy5fcGFyZW50UGFuZS5faXNFZGl0aW5nU3R5bGUgPSB0cnVlOwogICAgICAgICBXZWJJ
bnNwZWN0b3Iuc3RhcnRFZGl0aW5nKHNlbGVjdEVsZW1lbnQsIHsKICAgICAgICAgICAgIGNvbnRl
eHQ6IGNvbnRleHQsCiAgICAgICAgICAgICBjb21taXRIYW5kbGVyOiB0aGlzLmVkaXRpbmdDb21t
aXR0ZWQuYmluZCh0aGlzKSwKQEAgLTE5MDcsNyArMTkzOCw3IEBAIFdlYkluc3BlY3Rvci5TdHls
ZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICBpZiAoZWRpdGVkRWxl
bWVudC5wYXJlbnRFbGVtZW50KQogICAgICAgICAgICAgZWRpdGVkRWxlbWVudC5wYXJlbnRFbGVt
ZW50LnJlbW92ZVN0eWxlQ2xhc3MoImNoaWxkLWVkaXRpbmciKTsKIAotICAgICAgICBXZWJJbnNw
ZWN0b3IucGFuZWxzLmVsZW1lbnRzLmVuZEVkaXRpbmdTdHlsZSgpOworICAgICAgICBkZWxldGUg
dGhpcy5fcGFyZW50UGFuZS5faXNFZGl0aW5nU3R5bGU7CiAgICAgfSwKIAogICAgIGVkaXRpbmdD
YW5jZWxsZWQ6IGZ1bmN0aW9uKGVsZW1lbnQsIGNvbnRleHQpCkBAIC0xOTYxLDcgKzE5OTIsNiBA
QCBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAg
ICAgICAgdmFyIGlzRGlydHlWaWFQYXN0ZSA9IGlzRGF0YVBhc3RlZCAmJiAodGhpcy5uYW1lRWxl
bWVudC50ZXh0Q29udGVudCAhPT0gY29udGV4dC5vcmlnaW5hbE5hbWUgfHwgdGhpcy52YWx1ZUVs
ZW1lbnQudGV4dENvbnRlbnQgIT09IGNvbnRleHQub3JpZ2luYWxWYWx1ZSk7CiAgICAgICAgIHZh
ciBzaG91bGRDb21taXROZXdQcm9wZXJ0eSA9IHRoaXMuX25ld1Byb3BlcnR5ICYmIChtb3ZlVG9P
dGhlciB8fCAoIW1vdmVEaXJlY3Rpb24gJiYgIWlzRWRpdGluZ05hbWUpIHx8IChpc0VkaXRpbmdO
YW1lICYmIGJsYW5rSW5wdXQpKTsKICAgICAgICAgaWYgKCgodXNlcklucHV0ICE9PSBwcmV2aW91
c0NvbnRlbnQgfHwgaXNEaXJ0eVZpYVBhc3RlKSAmJiAhdGhpcy5fbmV3UHJvcGVydHkpIHx8IHNo
b3VsZENvbW1pdE5ld1Byb3BlcnR5KSB7Ci0gICAgICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxz
LmVsZW1lbnRzLnN0YXJ0RWRpdGluZ1N0eWxlKCk7CiAgICAgICAgICAgICB0aGlzLnRyZWVPdXRs
aW5lLnNlY3Rpb24uX2FmdGVyVXBkYXRlID0gbW92ZVRvTmV4dENhbGxiYWNrLmJpbmQodGhpcywg
dGhpcy5fbmV3UHJvcGVydHksICFibGFua0lucHV0LCB0aGlzLnRyZWVPdXRsaW5lLnNlY3Rpb24p
OwogICAgICAgICAgICAgdmFyIHByb3BlcnR5VGV4dDsKICAgICAgICAgICAgIGlmIChibGFua0lu
cHV0IHx8ICh0aGlzLl9uZXdQcm9wZXJ0eSAmJiAvXlxzKiQvLnRlc3QodGhpcy52YWx1ZUVsZW1l
bnQudGV4dENvbnRlbnQpKSkKQEAgLTE5ODQsOCArMjAxNCw2IEBAIFdlYkluc3BlY3Rvci5TdHls
ZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAvLyBUaGUgQ2FsbGJh
Y2sgdG8gc3RhcnQgZWRpdGluZyB0aGUgbmV4dC9wcmV2aW91cyBwcm9wZXJ0eS9zZWxlY3Rvci4K
ICAgICAgICAgZnVuY3Rpb24gbW92ZVRvTmV4dENhbGxiYWNrKGFscmVhZHlOZXcsIHZhbHVlQ2hh
bmdlZCwgc2VjdGlvbikKICAgICAgICAgewotICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVs
cy5lbGVtZW50cy5lbmRFZGl0aW5nU3R5bGUoKTsKLQogICAgICAgICAgICAgaWYgKCFtb3ZlRGly
ZWN0aW9uKQogICAgICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMjA3MCw4ICsyMDk4LDEyIEBA
IFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKKyAgICAgICAgdmFyIGN1cnJlbnROb2RlID0g
dGhpcy5fcGFyZW50UGFuZS5ub2RlOworICAgICAgICB0aGlzLl9wYXJlbnRQYW5lLl91c2VyT3Bl
cmF0aW9uID0gdHJ1ZTsKKwogICAgICAgICBmdW5jdGlvbiBjYWxsYmFjayhvcmlnaW5hbFByb3Bl
cnR5VGV4dCwgbmV3U3R5bGUpCiAgICAgICAgIHsKKyAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9w
YXJlbnRQYW5lLl91c2VyT3BlcmF0aW9uOwogICAgICAgICAgICAgaWYgKCFuZXdTdHlsZSkgewog
ICAgICAgICAgICAgICAgIGlmICh1cGRhdGVJbnRlcmZhY2UpIHsKICAgICAgICAgICAgICAgICAg
ICAgLy8gSXQgZGlkIG5vdCBhcHBseSwgY2FuY2VsIGVkaXRpbmcuCkBAIC0yMDg3LDggKzIxMTks
OCBAQCBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsK
ICAgICAgICAgICAgIGlmIChzZWN0aW9uICYmIHNlY3Rpb24ucGFuZSkKICAgICAgICAgICAgICAg
ICBzZWN0aW9uLnBhbmUuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKCJzdHlsZSBlZGl0ZWQiKTsK
IAotICAgICAgICAgICAgaWYgKHVwZGF0ZUludGVyZmFjZSkKLSAgICAgICAgICAgICAgICB0aGlz
LnVwZGF0ZUFsbCh0cnVlKTsKKyAgICAgICAgICAgIGlmICh1cGRhdGVJbnRlcmZhY2UgJiYgY3Vy
cmVudE5vZGUgPT09IHNlY3Rpb24ucGFuZS5ub2RlKQorICAgICAgICAgICAgICAgIHRoaXMuX3Vw
ZGF0ZUFsbCgpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gQXBwZW5kIGEgIjsiIGlmIHRoZSBu
ZXcgdGV4dCBkb2VzIG5vdCBlbmQgaW4gIjsiLgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100986</attachid>
            <date>2011-07-15 08:25:58 -0700</date>
            <delta_ts>2011-07-15 08:28:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64283-20110715192556.patch</filename>
            <type>text/plain</type>
            <size>25079</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTEwNjcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3NjMwNTA3NTdjNTk1MTM5MjJiYTEx
NjFmMzQ4MWE5ZDQ0OWY0NjNiLi4zMzZmMzI5ZGNiYzM3NzgzMTVhNDBjNjhiMTAzMWQ5ZDJiZDE3
YzU1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDctMTUgIFBhdmVsIEZlbGRtYW4gIDxw
ZmVsZG1hbkBnb29nbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEZvY3VzaW5nIG9u
IGFub3RoZXIgbm9kZSB3aGlsZSBlZGl0aW5nIENTUyBwcm9wZXJ0eSBkb2VzIG5vdCB1cGRhdGUg
c3R5bGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
NDI4MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
aHR0cC90ZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtdGVzdC5qczoKKyAgICAgICAgKGluaXRpYWxp
emVfRWxlbWVudFRlc3QuSW5zcGVjdG9yVGVzdC53YWl0Rm9yU3R5bGVzKToKKyAgICAgICAgKiBp
bnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1jaGFuZ2Utbm9kZS13aGlsZS1lZGl0aW5nLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtY2hhbmdlLW5v
ZGUtd2hpbGUtZWRpdGluZy5odG1sOiBBZGRlZC4KKwogMjAxMS0wNy0xNSAgR2Fib3IgTG9raSAg
PGxva2lAd2Via2l0Lm9yZz4KIAogICAgICAgICBQaXhlbCBkaWZmZXJlbmNlIGluIEZFTW9ycGhv
bG9neSBlZmZlY3QKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L2VsZW1lbnRzLXRlc3QuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9lbGVt
ZW50cy10ZXN0LmpzCmluZGV4IDkyOGI0ZmM4YWUyMjQyOWYxZTE4MTY1ZWM2MDBkYjczYTIwZTYx
OGQuLmMyY2UxMWEzN2JlYjc5ODk0MTQ3M2M3NjgyMzY2MGFkZmY2Y2Q2YTYgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXRlc3QuanMKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtdGVzdC5qcwpAQCAtODQs
NyArODQsNyBAQCBJbnNwZWN0b3JUZXN0LndhaXRGb3JTdHlsZXMgPSBmdW5jdGlvbihpZFZhbHVl
LCBjYWxsYmFjaykKICAgICAgICAgICAgIGNhbGxiYWNrKCk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KLSAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRTbmlmZmVyKFdlYkluc3BlY3Rv
ci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZSwgIl9zdHlsZXNVcGRhdGVkIiwgc25pZmYpOworICAg
ICAgICBJbnNwZWN0b3JUZXN0LmFkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQ
YW5lLnByb3RvdHlwZSwgIl9ub2RlU3R5bGVzVXBkYXRlZEZvclRlc3QiLCBzbmlmZik7CiAgICAg
fSkobnVsbCk7CiB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMv
c3R5bGVzLWNoYW5nZS1ub2RlLXdoaWxlLWVkaXRpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtY2hhbmdlLW5vZGUtd2hpbGUtZWRpdGluZy1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYTU4NWQ5YjIwOWVkZjIwYmVjYTk5NDBiNjYwMzRiZTZhY2Ix
YjllNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvc3R5
bGVzLWNoYW5nZS1ub2RlLXdoaWxlLWVkaXRpbmctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTYg
QEAKK1Rlc3RzIHRoYXQgY2hhbmdpbmcgc2VsZWN0ZWQgbm9kZSB3aGlsZSBlZGl0aW5nIHN0eWxl
IGRvZXMgdXBkYXRlIHN0eWxlcyBzaWRlYmFyLgorCitUZXh0CitbZXhwYW5kZWRdIGVsZW1lbnQu
c3R5bGUgeyAoKQorY29sb3I6IHJlZDsKKworCitbZXhwYW5kZWRdIGVsZW1lbnQuc3R5bGUgeyAo
KQorY29sb3I6IGJsdWU7CisKKworW2V4cGFuZGVkXSBlbGVtZW50LnN0eWxlIHsgKCkKK2JhY2tn
cm91bmQ6IHJlZDsKKworCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHls
ZXMvc3R5bGVzLWNoYW5nZS1ub2RlLXdoaWxlLWVkaXRpbmcuaHRtbCBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9zdHlsZXMvc3R5bGVzLWNoYW5nZS1ub2RlLXdoaWxlLWVkaXRpbmcuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi44MjkxZTM3ZmYzYmVhYzQyNGE4NzVjMmYxZTA2OTY5YWZhNjA2NTQyCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtY2hhbmdlLW5v
ZGUtd2hpbGUtZWRpdGluZy5odG1sCkBAIC0wLDAgKzEsNTEgQEAKKzxodG1sPgorPGhlYWQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2VsZW1l
bnRzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworZnVuY3Rpb24gdGVzdCgpCit7Cisg
ICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgiZWxlbWVudHMiKTsKKyAgICBJbnNwZWN0b3JUZXN0
LnNlbGVjdE5vZGVBbmRXYWl0Rm9yU3R5bGVzKCJpbnNwZWN0ZWQiLCBzdGVwMSk7CisKKyAgICB2
YXIgdHJlZUVsZW1lbnQ7CisgICAgdmFyIHNlY3Rpb247CisKKyAgICBmdW5jdGlvbiBzdGVwMSgp
CisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBTZWxlY3RlZEVsZW1lbnRTdHlsZXMo
dHJ1ZSwgdHJ1ZSwgdHJ1ZSk7CisgICAgICAgIHRyZWVFbGVtZW50ID0gSW5zcGVjdG9yVGVzdC5n
ZXRFbGVtZW50U3R5bGVQcm9wZXJ0eVRyZWVJdGVtKCJjb2xvciIpOworCisgICAgICAgIHRyZWVF
bGVtZW50LnN0YXJ0RWRpdGluZygpOworICAgICAgICB0cmVlRWxlbWVudC5uYW1lRWxlbWVudC50
ZXh0Q29udGVudCA9ICJiYWNrZ3JvdW5kIjsKKworICAgICAgICBJbnNwZWN0b3JUZXN0LnNlbGVj
dE5vZGVBbmRXYWl0Rm9yU3R5bGVzKCJvdGhlciIsIHN0ZXAyKTsKKyAgICB9CisKKyAgICBmdW5j
dGlvbiBzdGVwMigpCisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBTZWxlY3RlZEVs
ZW1lbnRTdHlsZXModHJ1ZSwgdHJ1ZSwgdHJ1ZSk7CisgICAgICAgIEluc3BlY3RvclRlc3Quc2Vs
ZWN0Tm9kZUFuZFdhaXRGb3JTdHlsZXMoImluc3BlY3RlZCIsIHN0ZXAzKTsKKyAgICB9CisKKyAg
ICBmdW5jdGlvbiBzdGVwMygpCisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBTZWxl
Y3RlZEVsZW1lbnRTdHlsZXModHJ1ZSwgdHJ1ZSwgdHJ1ZSk7CisgICAgICAgIEluc3BlY3RvclRl
c3QuY29tcGxldGVUZXN0KCk7CisgICAgfQorfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKworPGJv
ZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+CitUZXN0cyB0aGF0IGNoYW5naW5nIHNlbGVjdGVk
IG5vZGUgd2hpbGUgZWRpdGluZyBzdHlsZSBkb2VzIHVwZGF0ZSBzdHlsZXMgc2lkZWJhci4KKzwv
cD4KKworPGRpdiBpZD0iaW5zcGVjdGVkIiBzdHlsZT0iY29sb3I6IHJlZCI+VGV4dDwvZGl2Pgor
PGRpdiBpZD0ib3RoZXIiIHN0eWxlPSJjb2xvcjogYmx1ZSI+PC9kaXY+CisKKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCA5NTNmNTNjZjcyODE5ZjQ0YTRiZmIzNjBmOTE3MWUwM2Y0ODA1
NGY5Li5mZmRiYjUyZjI5YzBjY2Q0ZDYyMjkyNmRkNTRjMzJlMmM5MjY2YTEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNTAgQEAKKzIwMTEtMDctMTUgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBn
b29nbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEZvY3VzaW5nIG9uIGFub3RoZXIg
bm9kZSB3aGlsZSBlZGl0aW5nIENTUyBwcm9wZXJ0eSBkb2VzIG5vdCB1cGRhdGUgc3R5bGVzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NDI4MworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGluc3Bl
Y3Rvci9zdHlsZXMvc3R5bGVzLWNoYW5nZS1ub2RlLXdoaWxlLWVkaXRpbmcuaHRtbAorCisgICAg
ICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTdHlsZU1vZGVsLmpzOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkNTU1Byb3BlcnR5LnByb3RvdHlwZS5zZXRUZXh0KToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5DU1NQcm9wZXJ0eS5wcm90b3R5cGUuc2V0VGV4dC5jYWxsYmFjayk6CisgICAgICAg
ICogaW5zcGVjdG9yL2Zyb250LWVuZC9ET01BZ2VudC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5ET01BZ2VudC5wcm90b3R5cGUuX2lubGluZVN0eWxlSW52YWxpZGF0ZWQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkRPTURpc3BhdGNoZXIucHJvdG90eXBlLmlubGluZVN0eWxlSW52YWxpZGF0
ZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5lbC5qczoKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZS5fYXR0cmlidXRlc1VwZGF0ZWQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJvdG90eXBlLnVwZGF0ZVN0eWxlcyk6CisgICAg
ICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9NZXRyaWNzU2lkZWJhclBhbmUuanM6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuTWV0cmljc1NpZGViYXJQYW5lKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5NZXRyaWNzU2lkZWJhclBhbmUucHJvdG90eXBlLnVwZGF0ZSk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuTWV0cmljc1NpZGViYXJQYW5lLnByb3RvdHlwZS5faW5uZXJVcGRhdGUuY2FsbGJhY2sp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLk1ldHJpY3NTaWRlYmFyUGFuZS5wcm90b3R5cGUuX2lu
bmVyVXBkYXRlLmlubGluZVN0eWxlQ2FsbGJhY2spOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk1l
dHJpY3NTaWRlYmFyUGFuZS5wcm90b3R5cGUuX2lubmVyVXBkYXRlKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5NZXRyaWNzU2lkZWJhclBhbmUucHJvdG90eXBlLl9zdHlsZVNoZWV0Q2hhbmdlZCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuTWV0cmljc1NpZGViYXJQYW5lLnByb3RvdHlwZS5fYXR0
cmlidXRlc1VwZGF0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk1ldHJpY3NTaWRlYmFyUGFu
ZS5wcm90b3R5cGUuc3RhcnRFZGl0aW5nKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5NZXRyaWNz
U2lkZWJhclBhbmUucHJvdG90eXBlLmVkaXRpbmdFbmRlZCk6CisgICAgICAgICogaW5zcGVjdG9y
L2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5T
dHlsZXNTaWRlYmFyUGFuZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBh
bmUucHJvdG90eXBlLnVwZGF0ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJh
clBhbmUucHJvdG90eXBlLl9pbm5lclVwZGF0ZS5zdHlsZXNDYWxsYmFjayk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUucHJvdG90eXBlLl9pbm5lclVwZGF0ZS5jb21w
dXRlZFN0eWxlQ2FsbGJhY2spOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQ
YW5lLnByb3RvdHlwZS5faW5uZXJVcGRhdGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0eWxl
c1NpZGViYXJQYW5lLnByb3RvdHlwZS5fc3R5bGVTaGVldENoYW5nZWQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLnByb3RvdHlwZS5fYXR0cmlidXRlc1VwZGF0ZWQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLnByb3RvdHlwZS5fcmVm
cmVzaFVwZGF0ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUucHJv
dG90eXBlLl9yZWJ1aWxkVXBkYXRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdHlsZXNTaWRl
YmFyUGFuZS5wcm90b3R5cGUuX25vZGVTdHlsZXNVcGRhdGVkRm9yVGVzdCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUucHJvdG90eXBlLl90b2dnbGVFbGVtZW50U3Rh
dGVQYW5lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5wcm90b3R5
cGUuX2NyZWF0ZUVsZW1lbnRTdGF0ZVBhbmUuY2xpY2tMaXN0ZW5lcik6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZS5ldmVudCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZS5l
bGVtZW50LnVzZXJJbnB1dC5wcmV2aW91c0NvbnRlbnQuY29udGV4dC5tb3ZlRGlyZWN0aW9uKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBl
LnN0eWxlVGV4dC51cGRhdGVJbnRlcmZhY2UubWFqb3JDaGFuZ2UuaXNSZXZlcnQpOgorCiAyMDEx
LTA3LTE1ICBQaXJvc2thIEFuZHLDoXMgIDxQaXJvc2thLkFuZHJhc0BzdHVkLnUtc3plZ2VkLmh1
PgogCiAgICAgICAgIFBpeGVsIGRpZmZlcmVuY2UgaW4gRkVNb3JwaG9sb2d5IGVmZmVjdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTdHlsZU1vZGVs
LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTdHlsZU1vZGVsLmpz
CmluZGV4IGU0ZTg3MjNiOWE3MGViODU0ZjQ0YzhmZDk1NjRiYjZlYmNkZDUzNmEuLjkzNTc5MmZi
YzZmMWUwMDc1ZDk0OWM5ZGVlMTdiNDQxNmQ2YzE1MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTU3R5bGVNb2RlbC5qcworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1N0eWxlTW9kZWwuanMKQEAgLTUxMyw4ICs1MTMs
OCBAQCBXZWJJbnNwZWN0b3IuQ1NTUHJvcGVydHkucHJvdG90eXBlID0gewogICAgICAgICBmdW5j
dGlvbiBlbmFibGVkQ2FsbGJhY2soc3R5bGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChz
dHlsZSkKLSAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuY3NzTW9kZWwuX2ZpcmVTdHlsZVNo
ZWV0Q2hhbmdlZChzdHlsZS5pZC5zdHlsZVNoZWV0SWQsIG1ham9yQ2hhbmdlKTsKLSAgICAgICAg
ICAgIGlmICh1c2VyQ2FsbGJhY2spCisgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmNzc01v
ZGVsLl9maXJlU3R5bGVTaGVldENoYW5nZWQoc3R5bGUuaWQuc3R5bGVTaGVldElkLCBtYWpvckNo
YW5nZSwgdXNlckNhbGxiYWNrID8gdXNlckNhbGxiYWNrLmJpbmQobnVsbCwgc3R5bGUpIDogbnVs
bCk7CisgICAgICAgICAgICBlbHNlIGlmICh1c2VyQ2FsbGJhY2spCiAgICAgICAgICAgICAgICAg
dXNlckNhbGxiYWNrKHN0eWxlKTsKICAgICAgICAgfQogCkBAIC01MzAsNyArNTMwLDcgQEAgV2Vi
SW5zcGVjdG9yLkNTU1Byb3BlcnR5LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rv
ci5jc3NNb2RlbC5fZmlyZVN0eWxlU2hlZXRDaGFuZ2VkKHN0eWxlLmlkLnN0eWxlU2hlZXRJZCwg
bWFqb3JDaGFuZ2UsIHVzZXJDYWxsYmFjayA/IHVzZXJDYWxsYmFjay5iaW5kKHRoaXMsIHN0eWxl
KSA6IG51bGwpOworICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5jc3NNb2RlbC5fZmlyZVN0
eWxlU2hlZXRDaGFuZ2VkKHN0eWxlLmlkLnN0eWxlU2hlZXRJZCwgbWFqb3JDaGFuZ2UsIHVzZXJD
YWxsYmFjayA/IHVzZXJDYWxsYmFjay5iaW5kKG51bGwsIHN0eWxlKSA6IG51bGwpOwogICAgICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBpZiAodXNlckNhbGxiYWNrKQogICAgICAg
ICAgICAgICAgICAgICB1c2VyQ2FsbGJhY2sobnVsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTUFnZW50LmpzIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9ET01BZ2VudC5qcwppbmRleCBjYjJlYmQ0NGNhNDRhMGRhMTI1MGM0
ODJmMmIxYjA1ZjFiMmIwZTQ4Li45Y2FjOGQwMTQ5ZjA3YTU0YmNlYjI3YzMwYzc4YThiNjI0MzM2
MjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTUFn
ZW50LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9NQWdlbnQu
anMKQEAgLTQyOSw2ICs0MjksMTIgQEAgV2ViSW5zcGVjdG9yLkRPTUFnZW50LnByb3RvdHlwZSA9
IHsKICAgICAgICAgdGhpcy5fbG9hZE5vZGVBdHRyaWJ1dGVzU29vbihub2RlSWRzKTsKICAgICB9
LAogCisgICAgX2lubGluZVN0eWxlSW52YWxpZGF0ZWQ6IGZ1bmN0aW9uKG5vZGVJZHMpCisgICAg
eworICAgICAgICAvLyBGSVhNRTogaGFuZGxlIGRpZmZlcmVudGx5ICh3ZSBkb24ndCBuZWNlc3Nh
cmlseSBuZWVkIHRvIHVwZGF0ZSBhdHRyaWJ1dGVzIHVwb24gdGhpcyBtZXNzYWdlKS4KKyAgICAg
ICAgdGhpcy5fbG9hZE5vZGVBdHRyaWJ1dGVzU29vbihub2RlSWRzKTsKKyAgICB9LAorCiAgICAg
X2xvYWROb2RlQXR0cmlidXRlc1Nvb246IGZ1bmN0aW9uKG5vZGVJZHMpCiAgICAgewogICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVJZHMubGVuZ3RoOyArK2kpCkBAIC01OTAsNyArNTk2
LDcgQEAgV2ViSW5zcGVjdG9yLkRPTURpc3BhdGNoZXIucHJvdG90eXBlID0gewogCiAgICAgaW5s
aW5lU3R5bGVJbnZhbGlkYXRlZDogZnVuY3Rpb24obm9kZUlkcykKICAgICB7Ci0gICAgICAgIHRo
aXMuX2RvbUFnZW50Ll9hdHRyaWJ1dGVzVXBkYXRlZChub2RlSWRzKTsKKyAgICAgICAgdGhpcy5f
ZG9tQWdlbnQuX2lubGluZVN0eWxlSW52YWxpZGF0ZWQobm9kZUlkcyk7CiAgICAgfSwKIAogICAg
IGNoYXJhY3RlckRhdGFNb2RpZmllZDogZnVuY3Rpb24obm9kZUlkLCBuZXdWYWx1ZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5lbC5q
cyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5lbC5qcwpp
bmRleCBiYTlmZGI5YTQ4MmFhNmRjZGUzN2UxMzg5MmZjYTNmOGQyMjA2NjhmLi4xMmE5MzFmY2Ix
YjAyN2FlODM5NWM5MWM3MDAzNTM3YjBjOTE0NGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1BhbmVsLmpzCkBAIC05Myw3ICs5Myw2IEBA
IFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsID0gZnVuY3Rpb24oKQogICAgIHRoaXMuc2lkZWJh
clBhbmVzLnN0eWxlcy5hZGRFdmVudExpc3RlbmVyKCJzdHlsZSBlZGl0ZWQiLCB0aGlzLl9zdHls
ZXNQYW5lRWRpdGVkLCB0aGlzKTsKICAgICB0aGlzLnNpZGViYXJQYW5lcy5zdHlsZXMuYWRkRXZl
bnRMaXN0ZW5lcigic3R5bGUgcHJvcGVydHkgdG9nZ2xlZCIsIHRoaXMuX3N0eWxlc1BhbmVFZGl0
ZWQsIHRoaXMpOwogICAgIHRoaXMuc2lkZWJhclBhbmVzLm1ldHJpY3MuYWRkRXZlbnRMaXN0ZW5l
cigibWV0cmljcyBlZGl0ZWQiLCB0aGlzLl9tZXRyaWNzUGFuZUVkaXRlZCwgdGhpcyk7Ci0gICAg
V2ViSW5zcGVjdG9yLmNzc01vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNTU1N0
eWxlTW9kZWwuRXZlbnRzLlN0eWxlU2hlZXRDaGFuZ2VkLCB0aGlzLl9zdHlsZVNoZWV0Q2hhbmdl
ZCwgdGhpcyk7CiAKICAgICB0aGlzLnNpZGViYXJFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZGl2Iik7CiAgICAgdGhpcy5zaWRlYmFyRWxlbWVudC5pZCA9ICJlbGVtZW50cy1zaWRl
YmFyIjsKQEAgLTQyNiwyNCArNDI1LDExIEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy50cmVlT3V0bGluZS5mb2N1c2VkRE9NTm9kZSA9IHg7
CiAgICAgfSwKIAotICAgIHN0YXJ0RWRpdGluZ1N0eWxlOiBmdW5jdGlvbigpCi0gICAgewotICAg
ICAgICB0aGlzLl9pc0VkaXRpbmdTdHlsZSA9IHRydWU7Ci0gICAgfSwKLQotICAgIGVuZEVkaXRp
bmdTdHlsZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgZGVsZXRlIHRoaXMuX2lzRWRpdGlu
Z1N0eWxlOwotICAgIH0sCi0KICAgICBfYXR0cmlidXRlc1VwZGF0ZWQ6IGZ1bmN0aW9uKGV2ZW50
KQogICAgIHsKICAgICAgICAgdGhpcy5yZWNlbnRseU1vZGlmaWVkTm9kZXMucHVzaCh7bm9kZTog
ZXZlbnQuZGF0YSwgdXBkYXRlZDogdHJ1ZX0pOwogICAgICAgICBpZiAodGhpcy52aXNpYmxlKQog
ICAgICAgICAgICAgdGhpcy5fdXBkYXRlTW9kaWZpZWROb2Rlc1Nvb24oKTsKLQotICAgICAgICBp
ZiAoIXRoaXMuX2lzRWRpdGluZ1N0eWxlICYmIGV2ZW50LmRhdGEgPT09IHRoaXMuZm9jdXNlZERP
TU5vZGUpCi0gICAgICAgICAgICB0aGlzLl9zdHlsZVNoZWV0Q2hhbmdlZCgpOwogICAgIH0sCiAK
ICAgICBfY2hhcmFjdGVyRGF0YU1vZGlmaWVkOiBmdW5jdGlvbihldmVudCkKQEAgLTUzOSwxMiAr
NTI1LDYgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAg
ICB0aGlzLnVwZGF0ZVN0eWxlcyh0cnVlKTsKICAgICB9LAogCi0gICAgX3N0eWxlU2hlZXRDaGFu
Z2VkOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlzLl9tZXRyaWNzUGFuZUVkaXRlZCgp
OwotICAgICAgICB0aGlzLl9zdHlsZXNQYW5lRWRpdGVkKCk7Ci0gICAgfSwKLQogICAgIF9tb3Vz
ZU1vdmVkSW5DcnVtYnM6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIG5vZGVV
bmRlck1vdXNlID0gZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludChldmVudC5wYWdlWCwgZXZlbnQu
cGFnZVkpOwpAQCAtMTAxNywxOCArOTk3LDEzIEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVs
LnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIHZhciBzdHlsZXNTaWRlYmFyUGFuZSA9IHRo
aXMuc2lkZWJhclBhbmVzLnN0eWxlczsKICAgICAgICAgdmFyIGNvbXB1dGVkU3R5bGVQYW5lID0g
dGhpcy5zaWRlYmFyUGFuZXMuY29tcHV0ZWRTdHlsZTsKLSAgICAgICAgaWYgKCghc3R5bGVzU2lk
ZWJhclBhbmUuZXhwYW5kZWQgJiYgIWNvbXB1dGVkU3R5bGVQYW5lLmV4cGFuZGVkKSB8fCAhc3R5
bGVzU2lkZWJhclBhbmUubmVlZHNVcGRhdGUgfHwgdGhpcy5faXNFZGl0aW5nU3R5bGUpCisgICAg
ICAgIGlmICgoIXN0eWxlc1NpZGViYXJQYW5lLmV4cGFuZGVkICYmICFjb21wdXRlZFN0eWxlUGFu
ZS5leHBhbmRlZCkgfHwgIXN0eWxlc1NpZGViYXJQYW5lLm5lZWRzVXBkYXRlKQogICAgICAgICAg
ICAgcmV0dXJuOwogCi0gICAgICAgIHN0eWxlc1NpZGViYXJQYW5lLnVwZGF0ZSh0aGlzLmZvY3Vz
ZWRET01Ob2RlLCBudWxsLCBmb3JjZVVwZGF0ZSwgdGhpcy5fc3R5bGVzVXBkYXRlZC5iaW5kKHRo
aXMsIHRoaXMuZm9jdXNlZERPTU5vZGUpKTsKKyAgICAgICAgc3R5bGVzU2lkZWJhclBhbmUudXBk
YXRlKHRoaXMuZm9jdXNlZERPTU5vZGUsIGZvcmNlVXBkYXRlKTsKICAgICAgICAgc3R5bGVzU2lk
ZWJhclBhbmUubmVlZHNVcGRhdGUgPSBmYWxzZTsKICAgICB9LAogCi0gICAgX3N0eWxlc1VwZGF0
ZWQ6IGZ1bmN0aW9uKG5vZGUpCi0gICAgewotICAgICAgICAvLyBUaGlzIG1ldGhvZCBpcyBvdmVy
cmlkZW4gaW4gdGVzdHMuCi0gICAgfSwKLQogICAgIHVwZGF0ZU1ldHJpY3M6IGZ1bmN0aW9uKCkK
ICAgICB7CiAgICAgICAgIHZhciBtZXRyaWNzU2lkZWJhclBhbmUgPSB0aGlzLnNpZGViYXJQYW5l
cy5tZXRyaWNzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9NZXRyaWNzU2lkZWJhclBhbmUuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL01ldHJpY3NTaWRlYmFyUGFuZS5qcwppbmRleCA5NjJhOTU2NzI4MDc1MDg4YmQyNWNkNzQ5
ZDk0NDI5OGVlYzlhOTU2Li5iMDU4YTQwMDMxYjBhYzA0ZTFiMGI4YTcyMTIzMmU4ZjMxNTU0MTNm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL01ldHJpY3NT
aWRlYmFyUGFuZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL01l
dHJpY3NTaWRlYmFyUGFuZS5qcwpAQCAtMjksNiArMjksOSBAQAogV2ViSW5zcGVjdG9yLk1ldHJp
Y3NTaWRlYmFyUGFuZSA9IGZ1bmN0aW9uKCkKIHsKICAgICBXZWJJbnNwZWN0b3IuU2lkZWJhclBh
bmUuY2FsbCh0aGlzLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk1ldHJpY3MiKSk7CisKKyAgICBX
ZWJJbnNwZWN0b3IuY3NzTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQ1NTU3R5
bGVNb2RlbC5FdmVudHMuU3R5bGVTaGVldENoYW5nZWQsIHRoaXMuX3N0eWxlU2hlZXRDaGFuZ2Vk
LCB0aGlzKTsKKyAgICBXZWJJbnNwZWN0b3IuZG9tQWdlbnQuYWRkRXZlbnRMaXN0ZW5lcihXZWJJ
bnNwZWN0b3IuRE9NQWdlbnQuRXZlbnRzLkF0dHJNb2RpZmllZCwgdGhpcy5fYXR0cmlidXRlc1Vw
ZGF0ZWQsIHRoaXMpOwogfQogCiBXZWJJbnNwZWN0b3IuTWV0cmljc1NpZGViYXJQYW5lLnByb3Rv
dHlwZSA9IHsKQEAgLTM2LDMwICszOSw1MSBAQCBXZWJJbnNwZWN0b3IuTWV0cmljc1NpZGViYXJQ
YW5lLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIGlmIChub2RlKQogICAgICAgICAgICAg
dGhpcy5ub2RlID0gbm9kZTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbm9kZSA9IHRoaXMu
bm9kZTsKKyAgICAgICAgdGhpcy5faW5uZXJVcGRhdGUoKTsKKyAgICB9LAorCisgICAgX2lubmVy
VXBkYXRlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICAvLyBGSVhNRTogYXZvaWQgdXBkYXRl
cyBvZiBhIGNvbGxhcHNlZCBwYW5lLgorICAgICAgICB2YXIgbm9kZSA9IHRoaXMubm9kZTsKIAog
ICAgICAgICBpZiAoIW5vZGUgfHwgbm9kZS5ub2RlVHlwZSgpICE9PSBOb2RlLkVMRU1FTlRfTk9E
RSkgewogICAgICAgICAgICAgdGhpcy5ib2R5RWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwot
ICAgICAgICB2YXIgY2FsbGJhY2sgPSBmdW5jdGlvbihzdHlsZSkgewotICAgICAgICAgICAgaWYg
KCFzdHlsZSkKKyAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2soc3R5bGUpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGlmICghc3R5bGUgfHwgdGhpcy5ub2RlICE9PSBub2RlKQogICAgICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgICAgIHNlbGYuX3VwZGF0ZShzdHlsZSk7Ci0gICAgICAgIH07
Ci0gICAgICAgIFdlYkluc3BlY3Rvci5jc3NNb2RlbC5nZXRDb21wdXRlZFN0eWxlQXN5bmMobm9k
ZS5pZCwgY2FsbGJhY2spOworICAgICAgICAgICAgdGhpcy5fdXBkYXRlTWV0cmljcyhzdHlsZSk7
CisgICAgICAgIH0KKyAgICAgICAgV2ViSW5zcGVjdG9yLmNzc01vZGVsLmdldENvbXB1dGVkU3R5
bGVBc3luYyhub2RlLmlkLCBjYWxsYmFjay5iaW5kKHRoaXMpKTsKIAotICAgICAgICB2YXIgaW5s
aW5lU3R5bGVDYWxsYmFjayA9IGZ1bmN0aW9uKHN0eWxlKSB7Ci0gICAgICAgICAgICBpZiAoIXN0
eWxlKQorICAgICAgICBmdW5jdGlvbiBpbmxpbmVTdHlsZUNhbGxiYWNrKHN0eWxlKQorICAgICAg
ICB7CisgICAgICAgICAgICBpZiAoIXN0eWxlIHx8IHRoaXMubm9kZSAhPT0gbm9kZSkKICAgICAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBzZWxmLmlubGluZVN0eWxlID0gc3R5bGU7
Ci0gICAgICAgIH07Ci0gICAgICAgIFdlYkluc3BlY3Rvci5jc3NNb2RlbC5nZXRJbmxpbmVTdHls
ZUFzeW5jKG5vZGUuaWQsIGlubGluZVN0eWxlQ2FsbGJhY2spOworICAgICAgICAgICAgdGhpcy5p
bmxpbmVTdHlsZSA9IHN0eWxlOworICAgICAgICB9CisgICAgICAgIFdlYkluc3BlY3Rvci5jc3NN
b2RlbC5nZXRJbmxpbmVTdHlsZUFzeW5jKG5vZGUuaWQsIGlubGluZVN0eWxlQ2FsbGJhY2suYmlu
ZCh0aGlzKSk7CiAgICAgfSwKIAorICAgIF9zdHlsZVNoZWV0Q2hhbmdlZDogZnVuY3Rpb24oKQor
ICAgIHsKKyAgICAgICAgdGhpcy5faW5uZXJVcGRhdGUoKTsKKyAgICB9LAorCisgICAgX2F0dHJp
YnV0ZXNVcGRhdGVkOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLm5v
ZGUgIT09IGV2ZW50LmRhdGEpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgLy8gInN0
eWxlIiBhdHRyaWJ1dGUgbWlnaHQgaGF2ZSBjaGFuZ2VkLiBVcGRhdGUgbWV0cmljcyB1bmxlc3Mg
dGhleSBhcmUgYmVpbmcgZWRpdGVkLgorICAgICAgICBpZiAoIXRoaXMuX2lzRWRpdGluZ01ldHJp
Y3MpCisgICAgICAgICAgICB0aGlzLl9pbm5lclVwZGF0ZSgpOworICAgIH0sICAgIAorCiAgICAg
X2dldFByb3BlcnR5VmFsdWVBc1B4OiBmdW5jdGlvbihzdHlsZSwgcHJvcGVydHlOYW1lKQogICAg
IHsKICAgICAgICAgcmV0dXJuIE51bWJlcihzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKHByb3BlcnR5
TmFtZSkucmVwbGFjZSgvcHgkLywgIiIpIHx8IDApOwpAQCAtMTI0LDcgKzE0OCw3IEBAIFdlYklu
c3BlY3Rvci5NZXRyaWNzU2lkZWJhclBhbmUucHJvdG90eXBlID0gewogICAgICAgICBXZWJJbnNw
ZWN0b3IuaGlnaGxpZ2h0RE9NTm9kZShub2RlSWQsIG1vZGUpOwogICAgIH0sCiAKLSAgICBfdXBk
YXRlOiBmdW5jdGlvbihzdHlsZSkKKyAgICBfdXBkYXRlTWV0cmljczogZnVuY3Rpb24oc3R5bGUp
CiAgICAgewogICAgICAgICAvLyBVcGRhdGluZyB3aXRoIGNvbXB1dGVkIHN0eWxlLgogICAgICAg
ICB2YXIgbWV0cmljc0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKQEAg
LTI3Miw3ICsyOTYsNyBAQCBXZWJJbnNwZWN0b3IuTWV0cmljc1NpZGViYXJQYW5lLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgY29udGV4dC5rZXlEb3duSGFuZGxlciA9IGJvdW5kS2V5RG93bjsKICAg
ICAgICAgdGFyZ2V0RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIiwgYm91bmRLZXlE
b3duLCBmYWxzZSk7CiAKLSAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5lbGVtZW50cy5zdGFy
dEVkaXRpbmdTdHlsZSgpOworICAgICAgICB0aGlzLl9pc0VkaXRpbmdNZXRyaWNzID0gdHJ1ZTsK
ICAgICAgICAgV2ViSW5zcGVjdG9yLnN0YXJ0RWRpdGluZyh0YXJnZXRFbGVtZW50LCB7CiAgICAg
ICAgICAgICBjb250ZXh0OiBjb250ZXh0LAogICAgICAgICAgICAgY29tbWl0SGFuZGxlcjogdGhp
cy5lZGl0aW5nQ29tbWl0dGVkLmJpbmQodGhpcyksCkBAIC0zNDAsNyArMzY0LDcgQEAgV2ViSW5z
cGVjdG9yLk1ldHJpY3NTaWRlYmFyUGFuZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIGRlbGV0ZSB0
aGlzLm9yaWdpbmFsUHJvcGVydHlEYXRhOwogICAgICAgICBkZWxldGUgdGhpcy5wcmV2aW91c1By
b3BlcnR5RGF0YUNhbmRpZGF0ZTsKICAgICAgICAgZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVy
KCJrZXlkb3duIiwgY29udGV4dC5rZXlEb3duSGFuZGxlciwgZmFsc2UpOwotICAgICAgICBXZWJJ
bnNwZWN0b3IucGFuZWxzLmVsZW1lbnRzLmVuZEVkaXRpbmdTdHlsZSgpOworICAgICAgICBkZWxl
dGUgdGhpcy5faXNFZGl0aW5nTWV0cmljczsKICAgICB9LAogCiAgICAgZWRpdGluZ0NhbmNlbGxl
ZDogZnVuY3Rpb24oZWxlbWVudCwgY29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanMgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzCmluZGV4IGQ2OWIzN2U0
MDAyN2I1NjYzMDJmZDc3M2FlZWZiZGE1ZTkzZWFkNDYuLjY3MGNmYTg4Y2YxMWYyMGU1ZTIzNjFh
ZjY1ODIxMjczNDg4MDRiZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qcwpAQCAtODMsNiArODMsOSBAQCBXZWJJ
bnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUgPSBmdW5jdGlvbihjb21wdXRlZFN0eWxlUGFuZSkK
ICAgICB0aGlzLmJvZHlFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2VsZW1lbnRTdGF0ZVBhbmUp
OwogICAgIHRoaXMuX3NlY3Rpb25zQ29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
ZGl2Iik7CiAgICAgdGhpcy5ib2R5RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9zZWN0aW9uc0Nv
bnRhaW5lcik7CisKKyAgICBXZWJJbnNwZWN0b3IuY3NzTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihX
ZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5FdmVudHMuU3R5bGVTaGVldENoYW5nZWQsIHRoaXMu
X3N0eWxlU2hlZXRDaGFuZ2VkLCB0aGlzKTsKKyAgICBXZWJJbnNwZWN0b3IuZG9tQWdlbnQuYWRk
RXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NQWdlbnQuRXZlbnRzLkF0dHJNb2RpZmllZCwg
dGhpcy5fYXR0cmlidXRlc1VwZGF0ZWQsIHRoaXMpOwogfQogCiBXZWJJbnNwZWN0b3IuU3R5bGVz
U2lkZWJhclBhbmUuQ29sb3JGb3JtYXQgPSB7CkBAIC0yMTAsMTQgKzIxMywxNCBAQCBXZWJJbnNw
ZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUucHJvdG90eXBlID0gewogICAgICAgICB9CiAgICAgfSwK
IAotICAgIHVwZGF0ZTogZnVuY3Rpb24obm9kZSwgZWRpdGVkU2VjdGlvbiwgZm9yY2VVcGRhdGUs
IGNhbGxiYWNrKQorICAgIHVwZGF0ZTogZnVuY3Rpb24obm9kZSwgZm9yY2VVcGRhdGUpCiAgICAg
ewogICAgICAgICB2YXIgcmVmcmVzaCA9IGZhbHNlOwogCiAgICAgICAgIGlmIChmb3JjZVVwZGF0
ZSkKICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLm5vZGU7CiAKLSAgICAgICAgaWYgKCFmb3JjZVVw
ZGF0ZSAmJiAoIW5vZGUgfHwgbm9kZSA9PT0gdGhpcy5ub2RlKSkKKyAgICAgICAgaWYgKCFmb3Jj
ZVVwZGF0ZSAmJiAobm9kZSA9PT0gdGhpcy5ub2RlKSkKICAgICAgICAgICAgIHJlZnJlc2ggPSB0
cnVlOwogCiAgICAgICAgIGlmIChub2RlICYmIG5vZGUubm9kZVR5cGUoKSA9PT0gTm9kZS5URVhU
X05PREUgJiYgbm9kZS5wYXJlbnROb2RlKQpAQCAtMjMxLDEyICsyMzQsMTYgQEAgV2ViSW5zcGVj
dG9yLlN0eWxlc1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgbm9kZSA9IHRoaXMubm9kZTsKIAorICAgICAgICB0aGlzLl9pbm5lclVwZGF0ZShyZWZy
ZXNoLCBudWxsKTsKKyAgICB9LAorCisgICAgX2lubmVyVXBkYXRlOiBmdW5jdGlvbihyZWZyZXNo
LCBlZGl0ZWRTZWN0aW9uKQorICAgIHsKKyAgICAgICAgdmFyIG5vZGUgPSB0aGlzLm5vZGU7CiAg
ICAgICAgIGlmICghbm9kZSkgewogICAgICAgICAgICAgdGhpcy5fc2VjdGlvbnNDb250YWluZXIu
cmVtb3ZlQ2hpbGRyZW4oKTsKICAgICAgICAgICAgIHRoaXMuX2NvbXB1dGVkU3R5bGVQYW5lLmJv
ZHlFbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7CiAgICAgICAgICAgICB0aGlzLnNlY3Rpb25zID0g
e307Ci0gICAgICAgICAgICBpZiAoY2FsbGJhY2spCi0gICAgICAgICAgICAgICAgY2FsbGJhY2so
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0yNDQsMTYgKzI1MSwxMiBA
QCBXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUucHJvdG90eXBlID0gewogICAgICAgICB7
CiAgICAgICAgICAgICBpZiAodGhpcy5ub2RlID09PSBub2RlICYmIHN0eWxlcykKICAgICAgICAg
ICAgICAgICB0aGlzLl9yZWJ1aWxkVXBkYXRlKG5vZGUsIHN0eWxlcyk7Ci0gICAgICAgICAgICBp
ZiAoY2FsbGJhY2spCi0gICAgICAgICAgICAgICAgY2FsbGJhY2soKTsKICAgICAgICAgfQogCiAg
ICAgICAgIGZ1bmN0aW9uIGNvbXB1dGVkU3R5bGVDYWxsYmFjayhjb21wdXRlZFN0eWxlKQogICAg
ICAgICB7CiAgICAgICAgICAgICBpZiAodGhpcy5ub2RlID09PSBub2RlICYmIGNvbXB1dGVkU3R5
bGUpCiAgICAgICAgICAgICAgICAgdGhpcy5fcmVmcmVzaFVwZGF0ZShub2RlLCBjb21wdXRlZFN0
eWxlLCBlZGl0ZWRTZWN0aW9uKTsKLSAgICAgICAgICAgIGlmIChjYWxsYmFjaykKLSAgICAgICAg
ICAgICAgICBjYWxsYmFjaygpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKHJlZnJlc2gpCkBA
IC0yNjIsNiArMjY1LDI0IEBAIFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuY3NzTW9kZWwuZ2V0U3R5bGVzQXN5bmMo
bm9kZS5pZCwgdGhpcy5fZm9yY2VkUHNldWRvQ2xhc3Nlcywgc3R5bGVzQ2FsbGJhY2suYmluZCh0
aGlzKSk7CiAgICAgfSwKIAorICAgIF9zdHlsZVNoZWV0Q2hhbmdlZDogZnVuY3Rpb24oKQorICAg
IHsKKyAgICAgICAgaWYgKHRoaXMuX3VzZXJPcGVyYXRpb24gfHwgdGhpcy5faXNFZGl0aW5nU3R5
bGUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5faW5uZXJVcGRhdGUoZmFs
c2UpOworICAgIH0sCisKKyAgICBfYXR0cmlidXRlc1VwZGF0ZWQ6IGZ1bmN0aW9uKGV2ZW50KQor
ICAgIHsKKyAgICAgICAgaWYgKHRoaXMubm9kZSAhPT0gZXZlbnQuZGF0YSkKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICAvLyAic3R5bGUiIGF0dHJpYnV0ZSBtaWdodCBoYXZlIGNoYW5n
ZWQuIFVwZGF0ZSBzdHlsZXMgdW5sZXNzIHRoZXkgYXJlIGJlaW5nIGVkaXRlZC4KKyAgICAgICAg
aWYgKCF0aGlzLl9pc0VkaXRpbmdTdHlsZSAmJiAhdGhpcy5fdXNlck9wZXJhdGlvbikKKyAgICAg
ICAgICAgIHRoaXMuX2lubmVyVXBkYXRlKGZhbHNlKTsKKyAgICB9LAorCiAgICAgX3JlZnJlc2hV
cGRhdGU6IGZ1bmN0aW9uKG5vZGUsIGNvbXB1dGVkU3R5bGUsIGVkaXRlZFNlY3Rpb24pCiAgICAg
ewogICAgICAgICBmb3IgKHZhciBwc2V1ZG9JZCBpbiB0aGlzLnNlY3Rpb25zKSB7CkBAIC0yNzMs
NiArMjk0LDggQEAgV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgfQogICAgICAgICAvLyBUcmFjZSB0aGUgY29tcHV0ZWQgc3R5bGUuCiAgICAgICAg
IHRoaXMuc2VjdGlvbnNbMF1bMF0ucmVidWlsZENvbXB1dGVkVHJhY2UodGhpcy5zZWN0aW9uc1sw
XSk7CisKKyAgICAgICAgdGhpcy5fbm9kZVN0eWxlc1VwZGF0ZWRGb3JUZXN0KG5vZGUsIHRydWUp
OwogICAgIH0sCiAKICAgICBfcmVidWlsZFVwZGF0ZTogZnVuY3Rpb24obm9kZSwgc3R5bGVzKQpA
QCAtMzA4LDYgKzMzMSwxMyBAQCBXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUucHJvdG90
eXBlID0gewogICAgICAgICAgICAgdGhpcy5fbWFya1VzZWRQcm9wZXJ0aWVzKHN0eWxlUnVsZXMs
IHVzZWRQcm9wZXJ0aWVzLCBkaXNhYmxlZENvbXB1dGVkUHJvcGVydGllcyk7CiAgICAgICAgICAg
ICB0aGlzLnNlY3Rpb25zW3BzZXVkb0lkXSA9IHRoaXMuX3JlYnVpbGRTZWN0aW9uc0ZvclN0eWxl
UnVsZXMoc3R5bGVSdWxlcywgdXNlZFByb3BlcnRpZXMsIGRpc2FibGVkQ29tcHV0ZWRQcm9wZXJ0
aWVzLCBwc2V1ZG9JZCwgYW5jaG9yRWxlbWVudCk7CiAgICAgICAgIH0KKworICAgICAgICB0aGlz
Ll9ub2RlU3R5bGVzVXBkYXRlZEZvclRlc3Qobm9kZSwgZmFsc2UpOworICAgIH0sCisKKyAgICBf
bm9kZVN0eWxlc1VwZGF0ZWRGb3JUZXN0OiBmdW5jdGlvbihub2RlLCByZWZyZXNoKQorICAgIHsK
KyAgICAgICAgLy8gVGVzdHMgb3ZlcnJpZGUgdGhpcyBtZXRob2QuCiAgICAgfSwKIAogICAgIF9y
ZWZyZXNoU3R5bGVSdWxlczogZnVuY3Rpb24oc2VjdGlvbnMsIGNvbXB1dGVkU3R5bGUpCkBAIC02
ODAsNyArNzEwLDcgQEAgV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLnByb3RvdHlwZSA9
IHsKICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX2VsZW1lbnRTdGF0
ZVBhbmUuaW5wdXRzLmxlbmd0aDsgKytpKQogICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbGVt
ZW50U3RhdGVQYW5lLmlucHV0c1tpXS5jaGVja2VkID0gZmFsc2U7CiAgICAgICAgICAgICAgICAg
ZGVsZXRlIHRoaXMuX2ZvcmNlZFBzZXVkb0NsYXNzZXM7Ci0gICAgICAgICAgICAgICAgdGhpcy51
cGRhdGUoV2ViSW5zcGVjdG9yLnBhbmVscy5lbGVtZW50cy5mb2N1c2VkRE9NTm9kZSwgbnVsbCwg
dHJ1ZSk7CisgICAgICAgICAgICAgICAgdGhpcy5faW5uZXJVcGRhdGUoZmFsc2UpOwogICAgICAg
ICAgICAgfQogICAgICAgICB9CiAgICAgfSwKQEAgLTcwMiw3ICs3MzIsNyBAQCBXZWJJbnNwZWN0
b3IuU3R5bGVzU2lkZWJhclBhbmUucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgICAgICBw
c2V1ZG9DbGFzc2VzLnB1c2goaW5wdXRzW2ldLnN0YXRlKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIHRoaXMuX2ZvcmNlZFBzZXVkb0NsYXNzZXMgPSBwc2V1ZG9DbGFzc2VzLmxlbmd0aCA/
IHBzZXVkb0NsYXNzZXMgOiB1bmRlZmluZWQ7Ci0gICAgICAgICAgICB0aGlzLnVwZGF0ZShXZWJJ
bnNwZWN0b3IucGFuZWxzLmVsZW1lbnRzLmZvY3VzZWRET01Ob2RlLCBudWxsLCB0cnVlKTsKKyAg
ICAgICAgICAgIHRoaXMuX2lubmVyVXBkYXRlKGZhbHNlKTsKICAgICAgICAgfQogCiAgICAgICAg
IGZ1bmN0aW9uIGNyZWF0ZUNoZWNrYm94KHN0YXRlKQpAQCAtMTU4MSwxMiArMTYxMSwxMiBAQCBX
ZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAg
ICAgdGhpcy50b29sdGlwID0gdGhpcy5wcm9wZXJ0eS5wcm9wZXJ0eVRleHQ7CiAgICAgfSwKIAot
ICAgIHVwZGF0ZUFsbDogZnVuY3Rpb24odXBkYXRlQWxsUnVsZXMpCisgICAgX3VwZGF0ZUFsbDog
ZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLnRyZWVPdXRsaW5lKQogICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICBpZiAodXBkYXRlQWxsUnVsZXMgJiYgdGhpcy50cmVlT3V0
bGluZS5zZWN0aW9uICYmIHRoaXMudHJlZU91dGxpbmUuc2VjdGlvbi5wYW5lKQotICAgICAgICAg
ICAgdGhpcy50cmVlT3V0bGluZS5zZWN0aW9uLnBhbmUudXBkYXRlKG51bGwsIHRoaXMudHJlZU91
dGxpbmUuc2VjdGlvbik7CisgICAgICAgIGlmICh0aGlzLnRyZWVPdXRsaW5lLnNlY3Rpb24gJiYg
dGhpcy50cmVlT3V0bGluZS5zZWN0aW9uLnBhbmUpCisgICAgICAgICAgICB0aGlzLnRyZWVPdXRs
aW5lLnNlY3Rpb24ucGFuZS5faW5uZXJVcGRhdGUodHJ1ZSwgdGhpcy50cmVlT3V0bGluZS5zZWN0
aW9uKTsKICAgICAgICAgZWxzZSBpZiAodGhpcy50cmVlT3V0bGluZS5zZWN0aW9uKQogICAgICAg
ICAgICAgdGhpcy50cmVlT3V0bGluZS5zZWN0aW9uLnVwZGF0ZSh0cnVlKTsKICAgICAgICAgZWxz
ZQpAQCAtMTYwOCw3ICsxNjM4LDcgQEAgV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydHlUcmVlRWxl
bWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBpZiAodGhpcy50cmVlT3V0bGluZS5zZWN0
aW9uICYmIHRoaXMudHJlZU91dGxpbmUuc2VjdGlvbi5wYW5lKQogICAgICAgICAgICAgICAgIHRo
aXMudHJlZU91dGxpbmUuc2VjdGlvbi5wYW5lLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycygic3R5
bGUgcHJvcGVydHkgdG9nZ2xlZCIpOwogCi0gICAgICAgICAgICB0aGlzLnVwZGF0ZUFsbCh0cnVl
KTsKKyAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUFsbCgpOwogICAgICAgICB9CiAKICAgICAgICAg
dGhpcy5wcm9wZXJ0eS5zZXREaXNhYmxlZChkaXNhYmxlZCwgY2FsbGJhY2suYmluZCh0aGlzKSk7
CkBAIC0xNzg1LDcgKzE4MTUsOCBAQCBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVt
ZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIGRlbGV0ZSB0aGlzLm9yaWdp
bmFsUHJvcGVydHlUZXh0OwotICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLmVsZW1lbnRzLnN0
YXJ0RWRpdGluZ1N0eWxlKCk7CisKKyAgICAgICAgdGhpcy5fcGFyZW50UGFuZS5faXNFZGl0aW5n
U3R5bGUgPSB0cnVlOwogICAgICAgICBXZWJJbnNwZWN0b3Iuc3RhcnRFZGl0aW5nKHNlbGVjdEVs
ZW1lbnQsIHsKICAgICAgICAgICAgIGNvbnRleHQ6IGNvbnRleHQsCiAgICAgICAgICAgICBjb21t
aXRIYW5kbGVyOiB0aGlzLmVkaXRpbmdDb21taXR0ZWQuYmluZCh0aGlzKSwKQEAgLTE5MDcsNyAr
MTkzOCw3IEBAIFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBl
ID0gewogICAgICAgICBpZiAoZWRpdGVkRWxlbWVudC5wYXJlbnRFbGVtZW50KQogICAgICAgICAg
ICAgZWRpdGVkRWxlbWVudC5wYXJlbnRFbGVtZW50LnJlbW92ZVN0eWxlQ2xhc3MoImNoaWxkLWVk
aXRpbmciKTsKIAotICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLmVsZW1lbnRzLmVuZEVkaXRp
bmdTdHlsZSgpOworICAgICAgICBkZWxldGUgdGhpcy5fcGFyZW50UGFuZS5faXNFZGl0aW5nU3R5
bGU7CiAgICAgfSwKIAogICAgIGVkaXRpbmdDYW5jZWxsZWQ6IGZ1bmN0aW9uKGVsZW1lbnQsIGNv
bnRleHQpCkBAIC0xOTYxLDcgKzE5OTIsNiBAQCBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRy
ZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIGlzRGlydHlWaWFQYXN0ZSA9IGlz
RGF0YVBhc3RlZCAmJiAodGhpcy5uYW1lRWxlbWVudC50ZXh0Q29udGVudCAhPT0gY29udGV4dC5v
cmlnaW5hbE5hbWUgfHwgdGhpcy52YWx1ZUVsZW1lbnQudGV4dENvbnRlbnQgIT09IGNvbnRleHQu
b3JpZ2luYWxWYWx1ZSk7CiAgICAgICAgIHZhciBzaG91bGRDb21taXROZXdQcm9wZXJ0eSA9IHRo
aXMuX25ld1Byb3BlcnR5ICYmIChtb3ZlVG9PdGhlciB8fCAoIW1vdmVEaXJlY3Rpb24gJiYgIWlz
RWRpdGluZ05hbWUpIHx8IChpc0VkaXRpbmdOYW1lICYmIGJsYW5rSW5wdXQpKTsKICAgICAgICAg
aWYgKCgodXNlcklucHV0ICE9PSBwcmV2aW91c0NvbnRlbnQgfHwgaXNEaXJ0eVZpYVBhc3RlKSAm
JiAhdGhpcy5fbmV3UHJvcGVydHkpIHx8IHNob3VsZENvbW1pdE5ld1Byb3BlcnR5KSB7Ci0gICAg
ICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLmVsZW1lbnRzLnN0YXJ0RWRpdGluZ1N0eWxlKCk7
CiAgICAgICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLnNlY3Rpb24uX2FmdGVyVXBkYXRlID0gbW92
ZVRvTmV4dENhbGxiYWNrLmJpbmQodGhpcywgdGhpcy5fbmV3UHJvcGVydHksICFibGFua0lucHV0
LCB0aGlzLnRyZWVPdXRsaW5lLnNlY3Rpb24pOwogICAgICAgICAgICAgdmFyIHByb3BlcnR5VGV4
dDsKICAgICAgICAgICAgIGlmIChibGFua0lucHV0IHx8ICh0aGlzLl9uZXdQcm9wZXJ0eSAmJiAv
XlxzKiQvLnRlc3QodGhpcy52YWx1ZUVsZW1lbnQudGV4dENvbnRlbnQpKSkKQEAgLTE5ODQsOCAr
MjAxNCw2IEBAIFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBl
ID0gewogICAgICAgICAvLyBUaGUgQ2FsbGJhY2sgdG8gc3RhcnQgZWRpdGluZyB0aGUgbmV4dC9w
cmV2aW91cyBwcm9wZXJ0eS9zZWxlY3Rvci4KICAgICAgICAgZnVuY3Rpb24gbW92ZVRvTmV4dENh
bGxiYWNrKGFscmVhZHlOZXcsIHZhbHVlQ2hhbmdlZCwgc2VjdGlvbikKICAgICAgICAgewotICAg
ICAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5lbGVtZW50cy5lbmRFZGl0aW5nU3R5bGUoKTsK
LQogICAgICAgICAgICAgaWYgKCFtb3ZlRGlyZWN0aW9uKQogICAgICAgICAgICAgICAgIHJldHVy
bjsKIApAQCAtMjA3MCw4ICsyMDk4LDEyIEBAIFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnR5VHJl
ZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
KyAgICAgICAgdmFyIGN1cnJlbnROb2RlID0gdGhpcy5fcGFyZW50UGFuZS5ub2RlOworICAgICAg
ICB0aGlzLl9wYXJlbnRQYW5lLl91c2VyT3BlcmF0aW9uID0gdHJ1ZTsKKwogICAgICAgICBmdW5j
dGlvbiBjYWxsYmFjayhvcmlnaW5hbFByb3BlcnR5VGV4dCwgbmV3U3R5bGUpCiAgICAgICAgIHsK
KyAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9wYXJlbnRQYW5lLl91c2VyT3BlcmF0aW9uOwogICAg
ICAgICAgICAgaWYgKCFuZXdTdHlsZSkgewogICAgICAgICAgICAgICAgIGlmICh1cGRhdGVJbnRl
cmZhY2UpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gSXQgZGlkIG5vdCBhcHBseSwgY2FuY2Vs
IGVkaXRpbmcuCkBAIC0yMDg3LDggKzIxMTksOCBAQCBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0
eVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGlmIChzZWN0aW9uICYmIHNl
Y3Rpb24ucGFuZSkKICAgICAgICAgICAgICAgICBzZWN0aW9uLnBhbmUuZGlzcGF0Y2hFdmVudFRv
TGlzdGVuZXJzKCJzdHlsZSBlZGl0ZWQiKTsKIAotICAgICAgICAgICAgaWYgKHVwZGF0ZUludGVy
ZmFjZSkKLSAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUFsbCh0cnVlKTsKKyAgICAgICAgICAg
IGlmICh1cGRhdGVJbnRlcmZhY2UgJiYgY3VycmVudE5vZGUgPT09IHNlY3Rpb24ucGFuZS5ub2Rl
KQorICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUFsbCgpOwogICAgICAgICB9CiAKICAgICAg
ICAgLy8gQXBwZW5kIGEgIjsiIGlmIHRoZSBuZXcgdGV4dCBkb2VzIG5vdCBlbmQgaW4gIjsiLgo=
</data>
<flag name="review"
          id="95783"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>