<?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>147576</bug_id>
          
          <creation_ts>2015-08-03 11:32:41 -0700</creation_ts>
          <short_desc>Web Inspector: Add visual editors for CSS properties</short_desc>
          <delta_ts>2015-08-14 13:07:45 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>148021</dependson>
    
    <dependson>148022</dependson>
          <blocked>147563</blocked>
    
    <blocked>147570</blocked>
    
    <blocked>147578</blocked>
    
    <blocked>147711</blocked>
    
    <blocked>147712</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Devin Rousso">hi</reporter>
          <assigned_to name="Devin Rousso">hi</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>jonowells</cc>
    
    <cc>mattbaker</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1114269</commentid>
    <comment_count>0</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2015-08-03 11:32:41 -0700</bug_when>
    <thetext>Used in the new Visual style details panel in the CSS sidebar panel.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1114272</commentid>
    <comment_count>1</comment_count>
      <attachid>258091</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2015-08-03 11:36:57 -0700</bug_when>
    <thetext>Created attachment 258091
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1114727</commentid>
    <comment_count>2</comment_count>
      <attachid>258202</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2015-08-04 13:05:13 -0700</bug_when>
    <thetext>Created attachment 258202
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115217</commentid>
    <comment_count>3</comment_count>
      <attachid>258330</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2015-08-05 18:19:32 -0700</bug_when>
    <thetext>Created attachment 258330
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115377</commentid>
    <comment_count>4</comment_count>
      <attachid>258330</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-08-06 11:05:25 -0700</bug_when>
    <thetext>Comment on attachment 258330
Patch

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

Overall looks pretty good, with a few amusing spots. One major deficiency is that there are no aria roles set, so the new widgets are not accessible.

I did not get through the whole patch, will look at the rest later.

&gt; Source/WebInspectorUI/ChangeLog:6
&gt; +        Added parent class for property editors in the Visual style

Please add a better description of what this new widget does and how it works.

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStylePropertyCombiner.js:38
&gt; +            editor.addEventListener(WebInspector.VisualStylePropertyEditor.Event.ValueDidChange, this._handlePropertyEditorValueChanged.bind(this));

no need for bind.

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStylePropertyCombiner.js:44
&gt; +        this._valueRegExp = /([^\s]+\(.+\)|[^\s]+)(?:;?)/g;

new RegExp?

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStylePropertyCombiner.js:54
&gt; +        var value = &quot;&quot;;

let all the things, or even const them.

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStylePropertyEditor.js:35
&gt; +        function parseValues(values)

I would call this &quot;canonicalizeValues&quot; or something, since it&apos;s not really parsing.

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStylePropertyEditor.js:50
&gt; +            if (Array.isArray(possibleValues))

cool, we should use this more.

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStylePropertyEditor.js:63
&gt; +                this._possibleUnits = possibleUnits

trailing ;

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStylePropertyEditor.js:89
&gt; +        this._specialPropertyPlaceholder = document.createElement(&quot;span&quot;);

House style tries to keep the Element suffix for things that store elements, e.g.:

this._specialPropertyPlaceholderElement

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStylePropertyEditor.js:91
&gt; +        this._specialPropertyPlaceholder.hidden = true;

What does this do?

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStylePropertyEditor.js:98
&gt; +        this._valueRegExp = null;

Is there a way to make this a getter or a function, to avoid having to null it out?

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStylePropertyEditor.js:131
&gt; +        // Implemented by subclass

Nit: WK style requires trailing period for comments.

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStylePropertyEditor.js:164
&gt; +    set dontUpdateStyleText(flag)

Please rename this to avoid a contraction. Maybe suppressUpdateStyleText?

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStylePropertyEditor.js:215
&gt; +        // this._element.tabIndex = flag ? -1 : null;

?

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStylePropertyEditor.js:220
&gt; +        return this._element.classList.contains(&quot;disabled&quot;);

I am generally not a fan of keeping view state in the DOM, isn&apos;t there a member variable? this.disabled?

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStylePropertyEditor.js:269
&gt; +                conflictingValues = true;

rename: propertyValuesConflict?

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStylePropertyEditor.js:280
&gt; +        if (this._element.classList.contains(&quot;multiple&quot;))

I would prefer not checking classList here.

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStylePropertyEditor.js:318
&gt; +        var value = !propertyMissing ? placeholder : (this.valueIsKeyword(text) ? text : null);

~_~ please use if/else

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStylePropertyEditor.js:331
&gt; +        return value &amp;&amp; (this._valueRegExp &amp;&amp; this._valueRegExp.test(value) || this.valueIsKeyword(value));

I would put the keyword check before the regexp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115459</commentid>
    <comment_count>5</comment_count>
      <attachid>258330</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2015-08-06 14:41:13 -0700</bug_when>
    <thetext>Comment on attachment 258330
Patch

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

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/VisualStylePropertyCombiner.js:44
&gt;&gt; +        this._valueRegExp = /([^\s]+\(.+\)|[^\s]+)(?:;?)/g;
&gt; 
&gt; new RegExp?

I thought that it was better to not use new RegExp if there was no calculation (like adding strings).  Is this incorrect?

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/VisualStylePropertyEditor.js:91
&gt;&gt; +        this._specialPropertyPlaceholder.hidden = true;
&gt; 
&gt; What does this do?

It&apos;s used as an overlay for if there are multiple values that are conflicting or, if the current value of the property editor is &quot;Unchanged&quot;, to display the current computed value of that property for that node.

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/VisualStylePropertyEditor.js:98
&gt;&gt; +        this._valueRegExp = null;
&gt; 
&gt; Is there a way to make this a getter or a function, to avoid having to null it out?

Yeah I should do that.  Every subclass of this resets this value to something else, so that makes sense.

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/VisualStylePropertyEditor.js:215
&gt;&gt; +        // this._element.tabIndex = flag ? -1 : null;
&gt; 
&gt; ?

Ah right I had meant to ask Tim about that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115663</commentid>
    <comment_count>6</comment_count>
      <attachid>258461</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2015-08-06 23:15:42 -0700</bug_when>
    <thetext>Created attachment 258461
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116253</commentid>
    <comment_count>7</comment_count>
      <attachid>258626</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2015-08-10 11:07:30 -0700</bug_when>
    <thetext>Created attachment 258626
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117534</commentid>
    <comment_count>8</comment_count>
      <attachid>258626</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-08-13 19:42:25 -0700</bug_when>
    <thetext>Comment on attachment 258626
Patch

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

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStylePropertyCombiner.js:36
&gt; +        this._propertyEditors = propertyEditors || [];
&gt; +        for (let editor of this._propertyEditors) {

Line return between.

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStylePropertyEditor.css:42
&gt; +    -webkit-filter: opacity(0.7)

No prefix.

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStylePropertyEditor.css:83
&gt; +    background-color: hsl(0, 100%, 100%);

white

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStylePropertyEditor.js:275
&gt; +                this._specialPropertyPlaceholderElement.textContent = &quot;(&quot; + WebInspector.UIString(&quot;multiple&quot;) + &quot;)&quot;;

Include the () in the UIString.

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStyleTabbedPropertiesController.css:44
&gt; +    color: hsl(0, 100%, 100%);

white

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStyleTabbedPropertiesController.css:49
&gt; +    color: hsl(0, 100%, 100%);

white

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStyleTabbedPropertiesController.js:26
&gt; +WebInspector.VisualStyleTabbedPropertiesController = class VisualStyleTabbedPropertiesController extends WebInspector.DetailsSectionRow

It is odd that his inherits from DetailsSectionRow but ends up being a &quot;Controller&quot;. Class names should end in the same suffix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117535</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-08-13 19:42:42 -0700</bug_when>
    <thetext>&lt;rdar://problem/22281720&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117536</commentid>
    <comment_count>10</comment_count>
      <attachid>258626</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-08-13 19:42:52 -0700</bug_when>
    <thetext>Comment on attachment 258626
Patch

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

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStyleTabbedPropertiesController.js:28
&gt; +    constructor(tabMap)

Tab?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117598</commentid>
    <comment_count>11</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2015-08-13 23:46:31 -0700</bug_when>
    <thetext>&gt; &gt; Source/WebInspectorUI/UserInterface/Views/VisualStyleTabbedPropertiesController.js:28
&gt; &gt; +    constructor(tabMap)
&gt; 
&gt; Tab?

So I consider each of the different groups for Border (&quot;All&quot;, &quot;Top&quot;, &quot;Right&quot;, &quot;Bottom&quot;, &quot;Left&quot;) a tab that contains a bunch of editors, hence tabMap.  Is this not a good name?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117605</commentid>
    <comment_count>12</comment_count>
      <attachid>258993</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2015-08-14 00:20:14 -0700</bug_when>
    <thetext>Created attachment 258993
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117668</commentid>
    <comment_count>13</comment_count>
      <attachid>258993</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-08-14 10:56:31 -0700</bug_when>
    <thetext>Comment on attachment 258993
Patch

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

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStylePropertyEditor.css:42
&gt; +    filter: opacity(0.7)

Use opacity: 0.7;

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStylePropertyEditor.css:52
&gt; +    opacity: 0.4;

You did here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117700</commentid>
    <comment_count>14</comment_count>
      <attachid>259017</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2015-08-14 12:12:18 -0700</bug_when>
    <thetext>Created attachment 259017
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117701</commentid>
    <comment_count>15</comment_count>
      <attachid>259018</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2015-08-14 12:12:36 -0700</bug_when>
    <thetext>Created attachment 259018
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117727</commentid>
    <comment_count>16</comment_count>
      <attachid>259018</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-14 13:07:39 -0700</bug_when>
    <thetext>Comment on attachment 259018
Patch

Clearing flags on attachment: 259018

Committed r188484: &lt;http://trac.webkit.org/changeset/188484&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117728</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-14 13:07:45 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258091</attachid>
            <date>2015-08-03 11:36:57 -0700</date>
            <delta_ts>2015-08-04 13:05:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147576-20150803113651.patch</filename>
            <type>text/plain</type>
            <size>37180</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IGQzYzhiODQyZTNjZGQ1ODc0N2E4MzFmN2M0MmM2
OTUyZTMzNzA0OWEuLjYyZDRlZmQ1YjYyM2RjY2YwNzM2OGE4YTc5MmUyNjNiNzMyY2U4NmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg2IEBACisyMDE1LTA4LTAzICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBB
ZGQgdmlzdWFsIGVkaXRvcnMgZm9yIENTUyBwcm9wZXJ0aWVzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDc1NzYKKworICAgICAgICBBZGRlZCBwYXJl
bnQgY2xhc3MgZm9yIHByb3BlcnR5IGVkaXRvcnMgaW4gdGhlIFZpc3VhbCBzdHlsZQorICAgICAg
ICBkZXRhaWxzIHBhbmVsIGluIHRoZSBDU1Mgc2lkZWJhci4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFs
U3R5bGVQcm9wZXJ0eUNvbWJpbmVyLmpzOiBBZGRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5W
aXN1YWxTdHlsZVByb3BlcnR5Q29tYmluZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3Vh
bFN0eWxlUHJvcGVydHlDb21iaW5lci5wcm90b3R5cGUuZ2V0IHN0eWxlKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5Q29tYmluZXIucHJvdG90eXBlLmdldCBzeW50
aGVzaXplZFZhbHVlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5
Q29tYmluZXIucHJvdG90eXBlLm1vZGlmeVByb3BlcnR5VGV4dCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUNvbWJpbmVyLnByb3RvdHlwZS51cGRhdGUpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlDb21iaW5lci5wcm90b3R5cGUu
dXBkYXRlVmFsdWVzRnJvbVRleHQudXBkYXRlQ29tcGF0aWJsZUVkaXRvcik6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUNvbWJpbmVyLnByb3RvdHlwZS51cGRhdGVW
YWx1ZXNGcm9tVGV4dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0
eUNvbWJpbmVyLnByb3RvdHlwZS5fbWFya0VkaXRvcnMpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlZpc3VhbFN0eWxlUHJvcGVydHlDb21iaW5lci5wcm90b3R5cGUuX2hhbmRsZVByb3BlcnR5RWRp
dG9yVmFsdWVDaGFuZ2VkKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0
eWxlUHJvcGVydHlFZGl0b3IuY3NzOiBBZGRlZC4KKyAgICAgICAgKC52aXN1YWwtc3R5bGUtcHJv
cGVydHktY29udGFpbmVyKToKKyAgICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFp
bmVyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS10aXRsZSk6CisgICAgICAgICgudmlzdWFsLXN0
eWxlLXByb3BlcnR5LWNvbnRhaW5lciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdGl0bGUgPiAu
cHJvcGVydHktcmVmZXJlbmNlLWluZm8pOgorICAgICAgICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0
eS1jb250YWluZXIuZGlzYWJsZWQgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXRpdGxlID4gOm5v
dCgucHJvcGVydHktcmVmZXJlbmNlLWluZm8pKToKKyAgICAgICAgKC52aXN1YWwtc3R5bGUtcHJv
cGVydHktY29udGFpbmVyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIp
OgorICAgICAgICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuZGlzYWJsZWQgPiAu
dmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lcik6CisgICAgICAgICgudmlzdWFs
LXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUt
Y29udGFpbmVyIHNlbGVjdCk6CisgICAgICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRh
aW5lciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyIGlucHV0KToKKyAg
ICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLmRpc2FibGVkID4gLnZpc3Vh
bC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgaW5wdXQpOgorICAgICAgICAoLnZpc3Vh
bC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIubGF5b3V0LXJldmVyc2VkID4gLnZpc3VhbC1zdHls
ZS1wcm9wZXJ0eS10aXRsZSk6CisgICAgICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRh
aW5lciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyID4gLnZpc3VhbC1z
dHlsZS1zcGVjaWFsLXByb3BlcnR5LXBsYWNlaG9sZGVyKToKKyAgICAgICAgKC52aXN1YWwtc3R5
bGUtcHJvcGVydHktaW5mby1wb3BvdmVyKToKKyAgICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVy
dHktaW5mby1wb3BvdmVyID4gaDMpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVmlz
dWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5qczogQWRkZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3Iu
VmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5wYXJzZVZhbHVlcyk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvcik6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
VmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5wcm90b3R5cGUuZ2V0IGVsZW1lbnQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IucHJvdG90eXBlLmdldCBz
dHlsZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5w
cm90b3R5cGUuZ2V0IHZhbHVlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVBy
b3BlcnR5RWRpdG9yLnByb3RvdHlwZS5zZXQgdmFsdWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IucHJvdG90eXBlLmdldCB1bml0cyk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5wcm90b3R5cGUuc2V0IHVu
aXRzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnBy
b3RvdHlwZS5nZXQgcGxhY2Vob2xkZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0
eWxlUHJvcGVydHlFZGl0b3IucHJvdG90eXBlLnNldCBwbGFjZWhvbGRlcik6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5wcm90b3R5cGUuZ2V0IHN5bnRo
ZXNpemVkVmFsdWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlF
ZGl0b3IucHJvdG90eXBlLnNldCBkb250VXBkYXRlU3R5bGVUZXh0KToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnByb3RvdHlwZS5zZXQgbWFzdGVyUHJv
cGVydHkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3Iu
cHJvdG90eXBlLmdldCBtYXN0ZXJQcm9wZXJ0eSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlz
dWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5wcm90b3R5cGUuc2V0IG9wdGlvbmFsUHJvcGVydHkpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IucHJvdG90eXBl
LmdldCBvcHRpb25hbFByb3BlcnR5KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHls
ZVByb3BlcnR5RWRpdG9yLnByb3RvdHlwZS5zZXQgY29sb3JQcm9wZXJ0eSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5wcm90b3R5cGUuZ2V0IGNvbG9y
UHJvcGVydHkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0
b3IucHJvdG90eXBlLmdldCBwcm9wZXJ0eVJlZmVyZW5jZU5hbWUpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IucHJvdG90eXBlLnNldCBwcm9wZXJ0eVJl
ZmVyZW5jZU5hbWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlF
ZGl0b3IucHJvdG90eXBlLnNldCBkaXNhYmxlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlz
dWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5wcm90b3R5cGUuZ2V0IGRpc2FibGVkKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnByb3RvdHlwZS51cGRhdGUp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IucHJvdG90
eXBlLnVwZGF0ZUVkaXRvclZhbHVlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5
bGVQcm9wZXJ0eUVkaXRvci5wcm90b3R5cGUubW9kaWZ5UHJvcGVydHlUZXh0KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnByb3RvdHlwZS5nZXRWYWx1
ZXNGcm9tVGV4dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVk
aXRvci5wcm90b3R5cGUudmFsdWVJc0NvbXBhdGlibGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IucHJvdG90eXBlLnZhbHVlSXNLZXl3b3JkKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnByb3RvdHlwZS52
YWx1ZUlzVW5pdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVk
aXRvci5wcm90b3R5cGUuX3ZhbHVlSXNBZHZhbmNlZEtleXdvcmQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IucHJvdG90eXBlLl92YWx1ZUlzQWR2YW5j
ZWRVbml0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9y
LnByb3RvdHlwZS5fa2V5Rm9yS2V5d29yZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFs
U3R5bGVQcm9wZXJ0eUVkaXRvci5wcm90b3R5cGUuX3ZhbHVlRGlkQ2hhbmdlKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnByb3RvdHlwZS5fdGl0bGVF
bGVtZW50UHJlcGFyZUZvckNsaWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHls
ZVByb3BlcnR5RWRpdG9yLnByb3RvdHlwZS5fdGl0bGVFbGVtZW50TW91c2VPdmVyKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnByb3RvdHlwZS5fdGl0
bGVFbGVtZW50TW91c2VPdXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJv
cGVydHlFZGl0b3IucHJvdG90eXBlLl90aXRsZUVsZW1lbnRDbGljayk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5wcm90b3R5cGUuX3Nob3dQcm9wZXJ0
eUluZm9Qb3BvdmVyKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxl
VGFiYmVkUHJvcGVydGllc0NvbnRyb2xsZXIuY3NzOiBBZGRlZC4KKyAgICAgICAgKC52aXN1YWwt
c3R5bGUtdGFiYmVkLXByb3BlcnRpZXMtY29udHJvbGxlciB+IDpub3QoLnZpc2libGUpKToKKyAg
ICAgICAgKC52aXN1YWwtc3R5bGUtdGFiYmVkLXByb3BlcnRpZXMtY29udHJvbGxlciA+IC52aXN1
YWwtc3R5bGUtdGFiYmVkLXByb3BlcnRpZXMtY29udHJvbGxlci1jb250YWluZXIpOgorICAgICAg
ICAoLnZpc3VhbC1zdHlsZS10YWJiZWQtcHJvcGVydGllcy1jb250cm9sbGVyID4gLnZpc3VhbC1z
dHlsZS10YWJiZWQtcHJvcGVydGllcy1jb250cm9sbGVyLWNvbnRhaW5lciA+IGJ1dHRvbik6Cisg
ICAgICAgICgudmlzdWFsLXN0eWxlLXRhYmJlZC1wcm9wZXJ0aWVzLWNvbnRyb2xsZXIgPiAudmlz
dWFsLXN0eWxlLXRhYmJlZC1wcm9wZXJ0aWVzLWNvbnRyb2xsZXItY29udGFpbmVyID4gYnV0dG9u
LnNlbGVjdGVkKToKKyAgICAgICAgKC52aXN1YWwtc3R5bGUtdGFiYmVkLXByb3BlcnRpZXMtY29u
dHJvbGxlciA+IC52aXN1YWwtc3R5bGUtdGFiYmVkLXByb3BlcnRpZXMtY29udHJvbGxlci1jb250
YWluZXIgPiBidXR0b246bm90KC5zZWxlY3RlZCk6aG92ZXIpOgorICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvVmlld3MvVmlzdWFsU3R5bGVUYWJiZWRQcm9wZXJ0aWVzQ29udHJvbGxlci5qczogQWRk
ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVUYWJiZWRQcm9wZXJ0aWVzQ29u
dHJvbGxlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVUYWJiZWRQcm9wZXJ0
aWVzQ29udHJvbGxlci5wcm90b3R5cGUuX2hhbmRsZUJ1dHRvbkNsaWNrZWQpOgorCiAyMDE1LTA4
LTAyICBNYXR0IEJha2VyICA8bWF0dGJha2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5z
cGVjdG9yOiBVbm5hbWVzcGFjZWQgRm9ybWF0dGVyIGNsYXNzZXMgYnJlYWsgQ1NTU3R5bGVEZWNs
YXJhdGlvblRleHRFZGl0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlUHJvcGVydHlDb21iaW5lci5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlUHJvcGVydHlDb21i
aW5lci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5iZjk1ZGU5OTNlZWJlNDFlNDA2MGY0YjNkYjU4M2IwODU2MTQz
MjM4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvVmlzdWFsU3R5bGVQcm9wZXJ0eUNvbWJpbmVyLmpzCkBAIC0wLDAgKzEsMTc0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlDb21iaW5lciA9
IGNsYXNzIFZpc3VhbFN0eWxlUHJvcGVydHlDb21iaW5lciBleHRlbmRzIFdlYkluc3BlY3Rvci5P
YmplY3QKK3sKKyAgICBjb25zdHJ1Y3Rvcihwcm9wZXJ0eU5hbWUsIHByb3BlcnR5RWRpdG9ycykK
KyAgICB7CisgICAgICAgIHN1cGVyKCk7CisKKyAgICAgICAgdGhpcy5fc3R5bGUgPSBudWxsOwor
ICAgICAgICB0aGlzLl9wcm9wZXJ0eU5hbWUgPSBwcm9wZXJ0eU5hbWU7CisgICAgICAgIHRoaXMu
X3Byb3BlcnR5RWRpdG9ycyA9IHByb3BlcnR5RWRpdG9ycyB8fCBbXTsKKworICAgICAgICBmb3Ig
KHZhciBlZGl0b3Igb2YgdGhpcy5fcHJvcGVydHlFZGl0b3JzKSB7CisgICAgICAgICAgICBlZGl0
b3IuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRv
ci5FdmVudC5WYWx1ZURpZENoYW5nZSwgdGhpcy5faGFuZGxlUHJvcGVydHlFZGl0b3JWYWx1ZUNo
YW5nZWQuYmluZCh0aGlzKSk7CisgICAgICAgICAgICBlZGl0b3IuZG9udFVwZGF0ZVN0eWxlVGV4
dCA9IHRydWU7CisgICAgICAgIH0KKworICAgICAgICB0aGlzLl90ZXh0Q29udGFpbnNOYW1lUmVn
RXhwID0gbmV3IFJlZ0V4cCgiKD86KD86Xnw7KVxccyoiICsgdGhpcy5fcHJvcGVydHlOYW1lICsg
Ilxccyo6KSIpOworICAgICAgICB0aGlzLl9yZXBsYWNlbWVudFJlZ0V4cCA9IG5ldyBSZWdFeHAo
IihefDspKD86XFxzKikoIiArIHRoaXMuX3Byb3BlcnR5TmFtZSArICIpKC4rPyg/Ojt8JCkpIik7
CisgICAgICAgIHRoaXMuX3ZhbHVlUmVnRXhwID0gLyhbXlxzXStcKC4rXCl8W15cc10rKSg/Ojs/
KS9nOworICAgIH0KKworICAgIGdldCBzdHlsZSgpCisgICAgeworICAgICAgICByZXR1cm4gdGhp
cy5fc3R5bGU7CisgICAgfQorCisgICAgZ2V0IHN5bnRoZXNpemVkVmFsdWUoKQorICAgIHsKKyAg
ICAgICAgdmFyIHZhbHVlID0gIiI7CisgICAgICAgIHZhciBvbmVFZGl0b3JIYXNWYWx1ZSA9IGZh
bHNlOworCisgICAgICAgIGZvciAodmFyIGVkaXRvciBvZiB0aGlzLl9wcm9wZXJ0eUVkaXRvcnMp
IHsKKyAgICAgICAgICAgIHZhciBlZGl0b3JWYWx1ZSA9IGVkaXRvci5zeW50aGVzaXplZFZhbHVl
OworCisgICAgICAgICAgICBpZiAoZWRpdG9yVmFsdWUgJiYgZWRpdG9yVmFsdWUubGVuZ3RoKQor
ICAgICAgICAgICAgICAgIG9uZUVkaXRvckhhc1ZhbHVlID0gdHJ1ZTsKKyAgICAgICAgICAgIGVs
c2UgaWYgKGVkaXRvci5vcHRpb25hbFByb3BlcnR5KQorICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworCisgICAgICAgICAgICBpZiAoZWRpdG9yLm1hc3RlclByb3BlcnR5ICYmIGVkaXRvci52YWx1
ZUlzS2V5d29yZCgpKSB7CisgICAgICAgICAgICAgICAgdGhpcy5fbWFya0VkaXRvcnMoZWRpdG9y
LCB0cnVlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZWRpdG9yVmFsdWU7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGlmIChlZGl0b3IgIT09IHRoaXMuX3Byb3BlcnR5RWRpdG9yc1sw
XSkKKyAgICAgICAgICAgICAgICB2YWx1ZSArPSAiICI7CisKKyAgICAgICAgICAgIHZhbHVlICs9
IGVkaXRvclZhbHVlIHx8IChlZGl0b3IuY29sb3JQcm9wZXJ0eSA/ICJ0cmFuc3BhcmVudCIgOiAw
KTsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuX21hcmtFZGl0b3JzKCk7CisgICAgICAgIHJl
dHVybiB2YWx1ZS5sZW5ndGggJiYgb25lRWRpdG9ySGFzVmFsdWUgPyB2YWx1ZSA6IG51bGw7Cisg
ICAgfQorCisgICAgbW9kaWZ5UHJvcGVydHlUZXh0KHRleHQsIHZhbHVlKQorICAgIHsKKyAgICAg
ICAgdmFyIHRyaW1tZWRUZXh0ID0gdGV4dC50cmltUmlnaHQoKTsKKworICAgICAgICBpZiAodGhp
cy5fdGV4dENvbnRhaW5zTmFtZVJlZ0V4cC50ZXN0KHRleHQpKQorICAgICAgICAgICAgdGV4dCA9
IHRleHQucmVwbGFjZSh0aGlzLl9yZXBsYWNlbWVudFJlZ0V4cCwgdmFsdWUgPyAiJDEkMjogIiAr
IHZhbHVlICsgIjsiIDogIiQxIik7CisgICAgICAgIGVsc2UgaWYgKHZhbHVlKSB7CisgICAgICAg
ICAgICBpZiAodHJpbW1lZFRleHQudHJpbUxlZnQoKS5sZW5ndGggJiYgIXRyaW1tZWRUZXh0LmVu
ZHNXaXRoKCI7IikpCisgICAgICAgICAgICAgICAgdGV4dCArPSAiOyI7CisKKyAgICAgICAgICAg
IHRleHQgKz0gdGhpcy5fcHJvcGVydHlOYW1lICsgIjogIiArIHZhbHVlICsgIjsiOworICAgICAg
ICB9CisKKyAgICAgICAgcmV0dXJuIHRleHQ7CisgICAgfQorCisgICAgdXBkYXRlKHN0eWxlKQor
ICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX2lnbm9yZU5leHRVcGRhdGUpIHsKKyAgICAgICAgICAg
IHRoaXMuX2lnbm9yZU5leHRVcGRhdGUgPSBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmIChzdHlsZSkKKyAgICAgICAgICAgIHRoaXMuX3N0eWxlID0g
c3R5bGU7CisKKyAgICAgICAgaWYgKCF0aGlzLl9zdHlsZSB8fCAhdGhpcy5fdmFsdWVSZWdFeHAp
CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdmFyIHByb3BlcnR5ID0gdGhpcy5fc3R5
bGUucHJvcGVydHlGb3JOYW1lKHRoaXMuX3Byb3BlcnR5TmFtZSwgdHJ1ZSk7CisgICAgICAgIHZh
ciBwcm9wZXJ0eU1pc3NpbmcgPSAhcHJvcGVydHk7CisKKyAgICAgICAgaWYgKHByb3BlcnR5TWlz
c2luZyAmJiB0aGlzLl9zdHlsZS5ub2RlU3R5bGVzKQorICAgICAgICAgICAgcHJvcGVydHkgPSB0
aGlzLl9zdHlsZS5ub2RlU3R5bGVzLmNvbXB1dGVkU3R5bGUucHJvcGVydHlGb3JOYW1lKHRoaXMu
X3Byb3BlcnR5TmFtZSk7CisKKyAgICAgICAgaWYgKCFwcm9wZXJ0eSkKKyAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlc0Zyb21UZXh0KHByb3BlcnR5LnZhbHVl
LCBzdHlsZSwgcHJvcGVydHlNaXNzaW5nKTsKKyAgICB9CisKKyAgICB1cGRhdGVWYWx1ZXNGcm9t
VGV4dChzdHlsZVRleHQsIG5ld1N0eWxlLCBwcm9wZXJ0eU1pc3NpbmcpCisgICAgeworICAgICAg
ICBpZiAoc3R5bGVUZXh0ID09PSB0aGlzLnN5bnRoZXNpemVkVmFsdWUpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgZm9yICh2YXIgZWRpdG9yIG9mIHRoaXMuX3Byb3BlcnR5RWRpdG9y
cykKKyAgICAgICAgICAgIGVkaXRvci5fX3VwZGF0ZWQgPSBmYWxzZTsKKworICAgICAgICBmdW5j
dGlvbiB1cGRhdGVDb21wYXRpYmxlRWRpdG9yKHZhbHVlKQorICAgICAgICB7CisgICAgICAgICAg
ICBmb3IgKHZhciBlZGl0b3Igb2YgdGhpcy5fcHJvcGVydHlFZGl0b3JzKSB7CisgICAgICAgICAg
ICAgICAgaWYgKHZhbHVlICYmICFlZGl0b3IudmFsdWVJc0NvbXBhdGlibGUodmFsdWUpIHx8IGVk
aXRvci5fX3VwZGF0ZWQpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAg
ICAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnRWYWx1ZUlzS2V5d29yZCAmJiBlZGl0b3IuZGlzYWJs
ZWQpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICAgICAgdmFy
IHVwZGF0ZWRWYWx1ZXMgPSBlZGl0b3IuZ2V0VmFsdWVzRnJvbVRleHQodmFsdWUgfHwgIiIsIHBy
b3BlcnR5TWlzc2luZyk7CisgICAgICAgICAgICAgICAgZWRpdG9yLnVwZGF0ZUVkaXRvclZhbHVl
cyh1cGRhdGVkVmFsdWVzKTsKKyAgICAgICAgICAgICAgICBlZGl0b3IuX191cGRhdGVkID0gdHJ1
ZTsKKworICAgICAgICAgICAgICAgIGlmICh2YWx1ZSkKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgdmFyIG1hdGNoZXMgPSBz
dHlsZVRleHQubWF0Y2godGhpcy5fdmFsdWVSZWdFeHApOworICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IHRoaXMuX3Byb3BlcnR5RWRpdG9ycy5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgIHVw
ZGF0ZUNvbXBhdGlibGVFZGl0b3IuY2FsbCh0aGlzLCBtYXRjaGVzICYmIG1hdGNoZXNbaV0pOwor
ICAgIH0KKworICAgIC8vIFByaXZhdGUKKworICAgIF9tYXJrRWRpdG9ycyhpZ25vcmVkRWRpdG9y
LCBkaXNhYmxlZCkKKyAgICB7CisgICAgICAgIHRoaXMuX2N1cnJlbnRWYWx1ZUlzS2V5d29yZCA9
IGRpc2FibGVkIHx8IGZhbHNlOworCisgICAgICAgIGZvciAodmFyIGVkaXRvciBvZiB0aGlzLl9w
cm9wZXJ0eUVkaXRvcnMpIHsKKyAgICAgICAgICAgIGlmIChpZ25vcmVkRWRpdG9yICYmIGVkaXRv
ciA9PT0gaWdub3JlZEVkaXRvcikKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAg
ICAgICAgZWRpdG9yLmRpc2FibGVkID0gdGhpcy5fY3VycmVudFZhbHVlSXNLZXl3b3JkOworICAg
ICAgICB9CisgICAgfQorCisgICAgX2hhbmRsZVByb3BlcnR5RWRpdG9yVmFsdWVDaGFuZ2VkKCkK
KyAgICB7CisgICAgICAgIHRoaXMuX2lnbm9yZU5leHRVcGRhdGUgPSB0cnVlOworCisgICAgICAg
IGlmICh0aGlzLl9zdHlsZSkKKyAgICAgICAgICAgIHRoaXMuX3N0eWxlLnRleHQgPSB0aGlzLm1v
ZGlmeVByb3BlcnR5VGV4dCh0aGlzLl9zdHlsZS50ZXh0LCB0aGlzLnN5bnRoZXNpemVkVmFsdWUp
OworCisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5W
aXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLkV2ZW50LlZhbHVlRGlkQ2hhbmdlKTsKKyAgICB9Cit9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
VmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLmNzcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5hZGEzNzExYWJhMjgyYzA5YzkwMzIzYWM0OTMxMmFjOGJjYWE3MWE0Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5
bGVQcm9wZXJ0eUVkaXRvci5jc3MKQEAgLTAsMCArMSw5OSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy52aXN1
YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyIHsKKyAgICBkaXNwbGF5OiBmbGV4OworICAgIHdp
ZHRoOiAxMDAlOworICAgIG1pbi1oZWlnaHQ6IDIycHg7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJv
cGVydHktY29udGFpbmVyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS10aXRsZSB7CisgICAgbWFy
Z2luOiA0cHg7CisgICAgdGV4dC1hbGlnbjogcmlnaHQ7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJv
cGVydHktY29udGFpbmVyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS10aXRsZSA+IC5wcm9wZXJ0
eS1yZWZlcmVuY2UtaW5mb3sKKyAgICBjdXJzb3I6IGhlbHA7Cit9CisKKy52aXN1YWwtc3R5bGUt
cHJvcGVydHktY29udGFpbmVyLmRpc2FibGVkID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS10aXRs
ZSA+IDpub3QoLnByb3BlcnR5LXJlZmVyZW5jZS1pbmZvKSB7CisgICAgb3BhY2l0eTogMC40Owor
fQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lciA+IC52aXN1YWwtc3R5bGUtcHJv
cGVydHktdmFsdWUtY29udGFpbmVyIHsKKyAgICBmbGV4OiAxOworICAgIHBvc2l0aW9uOiByZWxh
dGl2ZTsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuZGlzYWJsZWQgPiAu
dmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciB7CisgICAgcG9pbnRlci1ldmVu
dHM6IG5vbmU7CisgICAgb3BhY2l0eTogMC40OworfQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5
LWNvbnRhaW5lciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyIHNlbGVj
dCB7CisgICAgd2lkdGg6IDEwMCU7CisgICAgbWFyZ2luOiAxcHggMDsKK30KKworLnZpc3VhbC1z
dHlsZS1wcm9wZXJ0eS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNv
bnRhaW5lciBpbnB1dCB7CisgICAgd2lkdGg6IGNhbGMoMTAwJSAtIDFweCk7CisgICAgbWFyZ2lu
OiAwOworICAgIG91dGxpbmU6IG5vbmU7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktY29u
dGFpbmVyLmRpc2FibGVkID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIg
aW5wdXQgeworICAgIHBvaW50ZXItZXZlbnRzOiBub25lICFpbXBvcnRhbnQ7Cit9CisKKy52aXN1
YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLmxheW91dC1yZXZlcnNlZCA+IC52aXN1YWwtc3R5
bGUtcHJvcGVydHktdGl0bGUgeworICAgIG9yZGVyOiAyOworICAgIHRleHQtYWxpZ246IGxlZnQ7
Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyID4gLnZpc3VhbC1zdHlsZS1w
cm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLXNwZWNpYWwtcHJvcGVydHkt
cGxhY2Vob2xkZXIgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6IDJweDsKKyAg
ICBsZWZ0OiAxcHg7CisgICAgd2lkdGg6IGNhbGMoMTAwJSAtIDIwcHgpOworICAgIGxpbmUtaGVp
Z2h0OiAxNnB4OworICAgIHRleHQtaW5kZW50OiA3cHg7CisgICAgYm9yZGVyLXJhZGl1czogNHB4
OworICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOworICAgIGNvbG9yOiBncmV5OworICAgIHBv
aW50ZXItZXZlbnRzOiBub25lOworICAgIG92ZXJmbG93OiBoaWRkZW47CisgICAgd2hpdGUtc3Bh
Y2U6IG5vd3JhcDsKKyAgICB6LWluZGV4OiAxOworfQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5
LWluZm8tcG9wb3ZlciB7CisgICAgd2lkdGg6IDIwMHB4OworICAgIG1hcmdpbjogMDsKKyAgICBw
YWRkaW5nOiAwOworfQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWluZm8tcG9wb3ZlciA+IGgz
IHsKKyAgICBtYXJnaW46IDZweCAzcHg7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVQcm9w
ZXJ0eUVkaXRvci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xN2I0ZGExNTM4MzFiMWY4Y2MwOWZiYzA2NGNlMTgw
NDZkYjYyMDg0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5qcwpAQCAtMCwwICsxLDQ0
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKK1dlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9y
ID0gY2xhc3MgVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvciBleHRlbmRzIFdlYkluc3BlY3Rvci5P
YmplY3QKK3sKKyAgICBjb25zdHJ1Y3Rvcihwcm9wZXJ0eU5hbWVzLCBsYWJlbCwgcG9zc2libGVW
YWx1ZXMsIHBvc3NpYmxlVW5pdHMsIGNsYXNzTmFtZSwgbGF5b3V0UmV2ZXJzZWQpCisgICAgewor
ICAgICAgICBzdXBlcigpOworCisgICAgICAgIHRoaXMuX3Byb3BlcnR5SW5mb0xpc3QgPSBbXTsK
KyAgICAgICAgdGhpcy5fc3R5bGUgPSBudWxsOworCisgICAgICAgIGZ1bmN0aW9uIHBhcnNlVmFs
dWVzKHZhbHVlcykKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCF2YWx1ZXMpCisgICAgICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICB2YXIgcGFyc2VkVmFsdWVzID0ge307Cisg
ICAgICAgICAgICBmb3IgKHZhciB2YWx1ZSBvZiB2YWx1ZXMpCisgICAgICAgICAgICAgICAgcGFy
c2VkVmFsdWVzW3ZhbHVlLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXHMvZywgIi0iKV0gPSB2YWx1
ZTsKKworICAgICAgICAgICAgcmV0dXJuIHBhcnNlZFZhbHVlczsKKyAgICAgICAgfQorCisgICAg
ICAgIHRoaXMuX3Bvc3NpYmxlVmFsdWVzID0gbnVsbDsKKyAgICAgICAgaWYgKHBvc3NpYmxlVmFs
dWVzKSB7CisgICAgICAgICAgICB0aGlzLl9wb3NzaWJsZVZhbHVlcyA9IHt9OworICAgICAgICAg
ICAgaWYgKEFycmF5LmlzQXJyYXkocG9zc2libGVWYWx1ZXMpKQorICAgICAgICAgICAgICAgIHRo
aXMuX3Bvc3NpYmxlVmFsdWVzLmJhc2ljID0gcGFyc2VWYWx1ZXMocG9zc2libGVWYWx1ZXMpOwor
ICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgdGhpcy5fcG9zc2libGVWYWx1ZXMu
YmFzaWMgPSBwYXJzZVZhbHVlcyhwb3NzaWJsZVZhbHVlcy5iYXNpYyk7CisgICAgICAgICAgICAg
ICAgdGhpcy5fcG9zc2libGVWYWx1ZXMuYWR2YW5jZWQgPSBwYXJzZVZhbHVlcyhwb3NzaWJsZVZh
bHVlcy5hZHZhbmNlZCk7CisgICAgICAgICAgICB9IAorICAgICAgICB9CisgICAgICAgIHRoaXMu
X3Bvc3NpYmxlVW5pdHMgPSBudWxsOworICAgICAgICBpZiAocG9zc2libGVVbml0cykgeworICAg
ICAgICAgICAgdGhpcy5fcG9zc2libGVVbml0cyA9IHt9OworICAgICAgICAgICAgaWYgKEFycmF5
LmlzQXJyYXkocG9zc2libGVVbml0cykpCisgICAgICAgICAgICAgICAgdGhpcy5fcG9zc2libGVV
bml0cy5iYXNpYyA9IHBvc3NpYmxlVW5pdHM7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgdGhpcy5fcG9zc2libGVVbml0cyA9IHBvc3NpYmxlVW5pdHMKKyAgICAgICAgfQorCisg
ICAgICAgIHRoaXMuX2VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAg
ICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJ2aXN1YWwtc3R5bGUtcHJvcGVydHkt
Y29udGFpbmVyIiwgY2xhc3NOYW1lKTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3Qu
dG9nZ2xlKCJsYXlvdXQtcmV2ZXJzZWQiLCBsYXlvdXRSZXZlcnNlZCk7CisKKyAgICAgICAgaWYg
KGxhYmVsICYmIGxhYmVsLmxlbmd0aCkgeworICAgICAgICAgICAgdmFyIHRpdGxlQ29udGFpbmVy
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgICAgICB0aXRsZUNvbnRh
aW5lci5jbGFzc0xpc3QuYWRkKCJ2aXN1YWwtc3R5bGUtcHJvcGVydHktdGl0bGUiKTsKKworICAg
ICAgICAgICAgdGhpcy5fdGl0bGVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3Bh
biIpOworICAgICAgICAgICAgdGhpcy5fdGl0bGVFbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50
LmNyZWF0ZVRleHROb2RlKGxhYmVsKSk7CisgICAgICAgICAgICB0aGlzLl90aXRsZUVsZW1lbnQu
YWRkRXZlbnRMaXN0ZW5lcigibW91c2VvdmVyIiwgdGhpcy5fdGl0bGVFbGVtZW50TW91c2VPdmVy
LmJpbmQodGhpcykpOworICAgICAgICAgICAgdGhpcy5fdGl0bGVFbGVtZW50LmFkZEV2ZW50TGlz
dGVuZXIoIm1vdXNlb3V0IiwgdGhpcy5fdGl0bGVFbGVtZW50TW91c2VPdXQuYmluZCh0aGlzKSk7
CisgICAgICAgICAgICB0aGlzLl90aXRsZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2si
LCB0aGlzLl90aXRsZUVsZW1lbnRDbGljay5iaW5kKHRoaXMpKTsKKyAgICAgICAgICAgIHRpdGxl
Q29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMuX3RpdGxlRWxlbWVudCk7CisKKyAgICAgICAgICAg
IHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGl0bGVDb250YWluZXIpOworCisgICAgICAgICAg
ICB0aGlzLl9ib3VuZFRpdGxlRWxlbWVudFByZXBhcmVGb3JDbGljayA9IHRoaXMuX3RpdGxlRWxl
bWVudFByZXBhcmVGb3JDbGljay5iaW5kKHRoaXMpOworICAgICAgICB9CisKKyAgICAgICAgdGhp
cy5fY29udGVudEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAg
ICAgdGhpcy5fY29udGVudEVsZW1lbnQuY2xhc3NMaXN0LmFkZCgidmlzdWFsLXN0eWxlLXByb3Bl
cnR5LXZhbHVlLWNvbnRhaW5lciIpOworCisgICAgICAgIHRoaXMuX3NwZWNpYWxQcm9wZXJ0eVBs
YWNlaG9sZGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworICAgICAgICB0aGlz
Ll9zcGVjaWFsUHJvcGVydHlQbGFjZWhvbGRlci5jbGFzc0xpc3QuYWRkKCJ2aXN1YWwtc3R5bGUt
c3BlY2lhbC1wcm9wZXJ0eS1wbGFjZWhvbGRlciIpOworICAgICAgICB0aGlzLl9zcGVjaWFsUHJv
cGVydHlQbGFjZWhvbGRlci5oaWRkZW4gPSB0cnVlOworICAgICAgICB0aGlzLl9jb250ZW50RWxl
bWVudC5hcHBlbmRDaGlsZCh0aGlzLl9zcGVjaWFsUHJvcGVydHlQbGFjZWhvbGRlcik7CisKKyAg
ICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9jb250ZW50RWxlbWVudCk7CisK
KyAgICAgICAgdGhpcy5fdXBkYXRlZFZhbHVlcyA9IHt9OworICAgICAgICB0aGlzLl9sYXN0VmFs
dWUgPSBudWxsOworICAgICAgICB0aGlzLl92YWx1ZVJlZ0V4cCA9IG51bGw7CisKKyAgICAgICAg
aWYgKHR5cGVvZiBwcm9wZXJ0eU5hbWVzID09PSAic3RyaW5nIikKKyAgICAgICAgICAgIHByb3Bl
cnR5TmFtZXMgPSBbcHJvcGVydHlOYW1lc107CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRo
aXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgibXVsdGlwbGUiKTsKKworICAgICAgICBmb3IgKHZh
ciBuYW1lIG9mIHByb3BlcnR5TmFtZXMpIHsKKyAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xh
c3NMaXN0LmFkZChuYW1lKTsKKyAgICAgICAgICAgIHRoaXMuX3Byb3BlcnR5SW5mb0xpc3QucHVz
aCh7CisgICAgICAgICAgICAgICAgbmFtZSwKKyAgICAgICAgICAgICAgICB0ZXh0Q29udGFpbnNO
YW1lUmVnRXhwOiBuZXcgUmVnRXhwKCIoPzooPzpefDspXFxzKiIgKyBuYW1lICsgIlxccyo6KSIp
LAorICAgICAgICAgICAgICAgIHJlcGxhY2VtZW50UmVnRXhwOiBuZXcgUmVnRXhwKCIoXnw7KSg/
OlxccyopKCIgKyBuYW1lICsgIikoLis/KD86O3wkKSkiKQorICAgICAgICAgICAgfSkKKyAgICAg
ICAgfQorCisgICAgICAgIHRoaXMuX3Byb3BlcnR5UmVmZXJlbmNlTmFtZSA9IHByb3BlcnR5TmFt
ZXNbMF07CisgICAgfQorCisgICAgLy8gUHVibGljCisKKyAgICBnZXQgZWxlbWVudCgpCisgICAg
eworICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudDsKKyAgICB9CisKKyAgICBnZXQgc3R5bGUo
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3N0eWxlOworICAgIH0KKworICAgIGdldCB2
YWx1ZSgpCisgICAgeworICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzcworICAgIH0K
KworICAgIHNldCB2YWx1ZSh2YWx1ZSkKKyAgICB7CisgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5
IHN1YmNsYXNzCisgICAgfQorCisgICAgZ2V0IHVuaXRzKCkKKyAgICB7CisgICAgICAgIC8vIElt
cGxlbWVudGVkIGJ5IHN1YmNsYXNzCisgICAgfQorCisgICAgc2V0IHVuaXRzKHVuaXQpCisgICAg
eworICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzcworICAgIH0KKworICAgIGdldCBw
bGFjZWhvbGRlcigpCisgICAgeworICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzcwor
ICAgIH0KKworICAgIHNldCBwbGFjZWhvbGRlcih0ZXh0KQorICAgIHsKKyAgICAgICAgLy8gSW1w
bGVtZW50ZWQgYnkgc3ViY2xhc3MKKyAgICB9CisKKyAgICBnZXQgc3ludGhlc2l6ZWRWYWx1ZSgp
CisgICAgeworICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzcworICAgIH0KKworICAg
IHNldCBkb250VXBkYXRlU3R5bGVUZXh0KGZsYWcpCisgICAgeworICAgICAgICB0aGlzLl9kb250
VXBkYXRlU3R5bGVUZXh0ID0gZmxhZzsKKyAgICB9CisKKyAgICBzZXQgbWFzdGVyUHJvcGVydHko
ZmxhZykKKyAgICB7CisgICAgICAgIHRoaXMuX21hc3RlclByb3BlcnR5ID0gZmxhZzsKKyAgICB9
CisKKyAgICBnZXQgbWFzdGVyUHJvcGVydHkoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMu
X21hc3RlclByb3BlcnR5OworICAgIH0KKworICAgIHNldCBvcHRpb25hbFByb3BlcnR5KGZsYWcp
CisgICAgeworICAgICAgICB0aGlzLl9vcHRpb25hbFByb3BlcnR5ID0gZmxhZzsKKyAgICB9CisK
KyAgICBnZXQgb3B0aW9uYWxQcm9wZXJ0eSgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5f
b3B0aW9uYWxQcm9wZXJ0eTsKKyAgICB9CisKKyAgICBzZXQgY29sb3JQcm9wZXJ0eShmbGFnKQor
ICAgIHsKKyAgICAgICAgdGhpcy5fY29sb3JQcm9wZXJ0eSA9IGZsYWc7CisgICAgfQorCisgICAg
Z2V0IGNvbG9yUHJvcGVydHkoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2NvbG9yUHJv
cGVydHk7CisgICAgfQorCisgICAgZ2V0IHByb3BlcnR5UmVmZXJlbmNlTmFtZSgpCisgICAgewor
ICAgICAgICByZXR1cm4gdGhpcy5fcHJvcGVydHlSZWZlcmVuY2VOYW1lOworICAgIH0KKworICAg
IHNldCBwcm9wZXJ0eVJlZmVyZW5jZU5hbWUobmFtZSkKKyAgICB7CisgICAgICAgIGlmICghbmFt
ZSB8fCAhbmFtZS5sZW5ndGgpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5f
cHJvcGVydHlSZWZlcmVuY2VOYW1lID0gbmFtZTsKKyAgICB9CisKKyAgICBzZXQgZGlzYWJsZWQo
ZmxhZykKKyAgICB7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgiZGlz
YWJsZWQiLCBmbGFnKTsKKyAgICAgICAgLy8gdGhpcy5fZWxlbWVudC50YWJJbmRleCA9IGZsYWcg
PyAtMSA6IG51bGw7CisgICAgfQorCisgICAgZ2V0IGRpc2FibGVkKCkKKyAgICB7CisgICAgICAg
IHJldHVybiB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygiZGlzYWJsZWQiKTsKKyAg
ICB9CisKKyAgICB1cGRhdGUoc3R5bGUpCisgICAgeworICAgICAgICBpZiAodGhpcy5faWdub3Jl
TmV4dFVwZGF0ZSkgeworICAgICAgICAgICAgdGhpcy5faWdub3JlTmV4dFVwZGF0ZSA9IGZhbHNl
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHN0eWxlKQor
ICAgICAgICAgICAgdGhpcy5fc3R5bGUgPSBzdHlsZTsKKworICAgICAgICBpZiAoIXRoaXMuX3N0
eWxlIHx8ICF0aGlzLl92YWx1ZVJlZ0V4cCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICB0aGlzLl91cGRhdGVkVmFsdWVzID0ge307CisgICAgICAgIHZhciBjb25mbGljdGluZ1ZhbHVl
cyA9IGZhbHNlOworICAgICAgICB2YXIgcHJvcGVydHlNaXNzaW5nID0gZmFsc2U7CisKKyAgICAg
ICAgZm9yICh2YXIgcHJvcGVydHlJbmZvIG9mIHRoaXMuX3Byb3BlcnR5SW5mb0xpc3QpIHsKKyAg
ICAgICAgICAgIHZhciBwcm9wZXJ0eSA9IHRoaXMuX3N0eWxlLnByb3BlcnR5Rm9yTmFtZShwcm9w
ZXJ0eUluZm8ubmFtZSwgdHJ1ZSk7CisgICAgICAgICAgICBwcm9wZXJ0eU1pc3NpbmcgPSAhcHJv
cGVydHk7CisKKyAgICAgICAgICAgIGlmIChwcm9wZXJ0eU1pc3NpbmcgJiYgdGhpcy5fc3R5bGUu
bm9kZVN0eWxlcykKKyAgICAgICAgICAgICAgICBwcm9wZXJ0eSA9IHRoaXMuX3N0eWxlLm5vZGVT
dHlsZXMuY29tcHV0ZWRTdHlsZS5wcm9wZXJ0eUZvck5hbWUocHJvcGVydHlJbmZvLm5hbWUpOwor
CisgICAgICAgICAgICBpZiAoIXByb3BlcnR5KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
CisgICAgICAgICAgICB2YXIgc2hvcnRoYW5kID0gcHJvcGVydHkucmVsYXRlZFNob3J0aGFuZFBy
b3BlcnR5OworICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eU1pc3NpbmcgJiYgcHJvcGVydHkuYW5v
bnltb3VzICYmIHNob3J0aGFuZCkgeworICAgICAgICAgICAgICAgIHZhciB0ZXh0ID0gIiI7Cisg
ICAgICAgICAgICAgICAgZm9yICh2YXIgbG9uZ2hhbmQgb2Ygc2hvcnRoYW5kLnJlbGF0ZWRMb25n
aGFuZFByb3BlcnRpZXMpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFsb25naGFuZC5hbm9u
eW1vdXMpCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAg
ICAgICAgICB0ZXh0ICs9IGxvbmdoYW5kLnN5bnRoZXNpemVkVGV4dDsKKyAgICAgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgICAgICBpZiAoIXRleHQubGVuZ3RoKQorICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIHRoaXMuX3N0eWxlLnRleHQgPSB0aGlzLl9z
dHlsZS50ZXh0LnJlcGxhY2Uoc2hvcnRoYW5kLnRleHQsIHRleHQpOworICAgICAgICAgICAgfQor
CisKKyAgICAgICAgICAgIHZhciBuZXdWYWx1ZXMgPSB0aGlzLmdldFZhbHVlc0Zyb21UZXh0KHBy
b3BlcnR5LnZhbHVlLCBwcm9wZXJ0eU1pc3NpbmcpOworCisgICAgICAgICAgICBpZiAodGhpcy5f
dXBkYXRlZFZhbHVlcy5wbGFjZWhvbGRlciAmJiB0aGlzLl91cGRhdGVkVmFsdWVzLnBsYWNlaG9s
ZGVyICE9PSBuZXdWYWx1ZXMucGxhY2Vob2xkZXIpCisgICAgICAgICAgICAgICAgY29uZmxpY3Rp
bmdWYWx1ZXMgPSB0cnVlOworCisgICAgICAgICAgICBpZiAoIXRoaXMuX3VwZGF0ZWRWYWx1ZXMu
cGxhY2Vob2xkZXIpCisgICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlZFZhbHVlcyA9IG5ld1Zh
bHVlczsKKworICAgICAgICAgICAgaWYgKGNvbmZsaWN0aW5nVmFsdWVzKSB7CisgICAgICAgICAg
ICAgICAgdGhpcy5fc3BlY2lhbFByb3BlcnR5UGxhY2Vob2xkZXIudGV4dENvbnRlbnQgPSAiKCIg
KyBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIm11bHRpcGxlIikgKyAiKSI7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAodGhpcy5f
ZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoIm11bHRpcGxlIikpCisgICAgICAgICAgICB0aGlz
Ll9zcGVjaWFsUHJvcGVydHlQbGFjZWhvbGRlci5oaWRkZW4gPSAhY29uZmxpY3RpbmdWYWx1ZXM7
CisKKyAgICAgICAgdGhpcy51cGRhdGVFZGl0b3JWYWx1ZXModGhpcy5fdXBkYXRlZFZhbHVlcyk7
CisgICAgfQorCisgICAgdXBkYXRlRWRpdG9yVmFsdWVzKHVwZGF0ZWRWYWx1ZXMpCisgICAgewor
ICAgICAgICB0aGlzLnZhbHVlID0gdXBkYXRlZFZhbHVlcy52YWx1ZTsKKyAgICAgICAgdGhpcy51
bml0cyA9IHVwZGF0ZWRWYWx1ZXMudW5pdHM7CisgICAgICAgIHRoaXMucGxhY2Vob2xkZXIgPSB1
cGRhdGVkVmFsdWVzLnBsYWNlaG9sZGVyOworCisgICAgICAgIHRoaXMuX2xhc3RWYWx1ZSA9IHRo
aXMuc3ludGhlc2l6ZWRWYWx1ZTsKKyAgICAgICAgdGhpcy5kaXNhYmxlZCA9IGZhbHNlOworICAg
IH0KKworICAgIG1vZGlmeVByb3BlcnR5VGV4dCh0ZXh0LCB2YWx1ZSkKKyAgICB7CisgICAgICAg
IHZhciB0cmltbWVkVGV4dCA9IHRleHQudHJpbVJpZ2h0KCk7CisKKyAgICAgICAgZm9yICh2YXIg
cHJvcGVydHkgb2YgdGhpcy5fcHJvcGVydHlJbmZvTGlzdCkgeworICAgICAgICAgICAgaWYgKHBy
b3BlcnR5LnRleHRDb250YWluc05hbWVSZWdFeHAudGVzdCh0ZXh0KSkKKyAgICAgICAgICAgICAg
ICB0ZXh0ID0gdGV4dC5yZXBsYWNlKHByb3BlcnR5LnJlcGxhY2VtZW50UmVnRXhwLCB2YWx1ZSA/
ICIkMSQyOiAiICsgdmFsdWUgKyAiOyIgOiAiJDEiKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHZh
bHVlKSB7CisgICAgICAgICAgICAgICAgaWYgKHRyaW1tZWRUZXh0LnRyaW1MZWZ0KCkubGVuZ3Ro
ICYmICF0cmltbWVkVGV4dC5lbmRzV2l0aCgiOyIpKQorICAgICAgICAgICAgICAgICAgICB0ZXh0
ICs9ICI7IjsKKworICAgICAgICAgICAgICAgIHRleHQgKz0gcHJvcGVydHkubmFtZSArICI6ICIg
KyB2YWx1ZSArICI7IjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVy
biB0ZXh0OworICAgIH0KKworICAgIGdldFZhbHVlc0Zyb21UZXh0KHRleHQsIHByb3BlcnR5TWlz
c2luZykKKyAgICB7CisgICAgICAgIHZhciBtYXRjaCA9IHRoaXMuX3ZhbHVlUmVnRXhwLmV4ZWMo
dGV4dCk7CisgICAgICAgIHZhciBwbGFjZWhvbGRlciA9IG1hdGNoID8gbWF0Y2hbMV0gOiB0ZXh0
OworICAgICAgICB2YXIgdmFsdWUgPSAhcHJvcGVydHlNaXNzaW5nID8gcGxhY2Vob2xkZXIgOiAo
dGhpcy52YWx1ZUlzS2V5d29yZCh0ZXh0KSA/IHRleHQgOiBudWxsKTsKKyAgICAgICAgdmFyIHVu
aXRzID0gbWF0Y2ggPyBtYXRjaFsyXSA6IG51bGw7CisKKyAgICAgICAgcmV0dXJuIHt2YWx1ZSwg
dW5pdHMsIHBsYWNlaG9sZGVyLCBwcm9wZXJ0eU1pc3Npbmd9OworICAgIH0KKworICAgIHZhbHVl
SXNDb21wYXRpYmxlKHZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHZhbHVlICYmICh0aGlz
Ll92YWx1ZVJlZ0V4cCAmJiB0aGlzLl92YWx1ZVJlZ0V4cC50ZXN0KHZhbHVlKSB8fCB0aGlzLnZh
bHVlSXNLZXl3b3JkKHZhbHVlKSk7CisgICAgfQorCisgICAgdmFsdWVJc0tleXdvcmQodmFsdWUp
IHsKKyAgICAgICAgaWYgKCF0aGlzLl9wb3NzaWJsZVZhbHVlcykKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgICAgICB2YWx1ZSA9IHZhbHVlIHx8IHRoaXMudmFsdWU7CisgICAgICAg
IGlmIChPYmplY3Qua2V5cyh0aGlzLl9wb3NzaWJsZVZhbHVlcy5iYXNpYykuaW5jbHVkZXModmFs
dWUpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgcmV0dXJuIHRoaXMuX3Zh
bHVlSXNBZHZhbmNlZEtleXdvcmQodmFsdWUpOworICAgIH0KKworICAgIHZhbHVlSXNVbml0KHVu
aXQpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX3Bvc3NpYmxlVW5pdHMpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgdW5pdCA9IHVuaXQgfHwgdGhpcy51bml0czsKKyAg
ICAgICAgaWYgKHRoaXMuX3Bvc3NpYmxlVW5pdHMuYmFzaWMuaW5jbHVkZXModW5pdCkpCisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWVJc0FkdmFu
Y2VkVW5pdCh1bml0KTsKKyAgICB9CisKKyAgICAvLyBQcml2YXRlCisKKyAgICBfdmFsdWVJc0Fk
dmFuY2VkS2V5d29yZCh2YWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9wb3NzaWJs
ZVZhbHVlcy5hZHZhbmNlZCAmJiBPYmplY3Qua2V5cyh0aGlzLl9wb3NzaWJsZVZhbHVlcy5hZHZh
bmNlZCkuaW5jbHVkZXModmFsdWUgfHwgdGhpcy52YWx1ZSk7CisgICAgfQorCisgICAgX3ZhbHVl
SXNBZHZhbmNlZFVuaXQodW5pdCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9wb3NzaWJs
ZVVuaXRzLmFkdmFuY2VkICYmIHRoaXMuX3Bvc3NpYmxlVW5pdHMuYWR2YW5jZWQuaW5jbHVkZXMo
dW5pdCB8fCB0aGlzLnVuaXRzKTsKKyAgICB9CisKKyAgICBfa2V5Rm9yS2V5d29yZCh2YWx1ZSkK
KyAgICB7CisgICAgICAgIGlmICghdmFsdWUgfHwgIXRoaXMuX3Bvc3NpYmxlVmFsdWVzKQorICAg
ICAgICAgICAgcmV0dXJuIG51bGw7CisKKyAgICAgICAgcmV0dXJuIHRoaXMuX3Bvc3NpYmxlVmFs
dWVzLmJhc2ljW3ZhbHVlXSB8fCAodGhpcy5fcG9zc2libGVWYWx1ZXMuYWR2YW5jZWQgJiYgdGhp
cy5fcG9zc2libGVWYWx1ZXMuYWR2YW5jZWRbdmFsdWVdKSB8fCBudWxsOworICAgIH0KKworICAg
IF92YWx1ZURpZENoYW5nZSgpCisgICAgeworICAgICAgICB2YXIgdmFsdWUgPSB0aGlzLnN5bnRo
ZXNpemVkVmFsdWU7CisgICAgICAgIGlmICh2YWx1ZSA9PT0gdGhpcy5fbGFzdFZhbHVlKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGlmICh0aGlzLl9zdHlsZSAmJiAhdGhp
cy5fZG9udFVwZGF0ZVN0eWxlVGV4dCkgeworICAgICAgICAgICAgdmFyIG5ld1RleHQgPSB0aGlz
Lm1vZGlmeVByb3BlcnR5VGV4dCh0aGlzLl9zdHlsZS50ZXh0LCB2YWx1ZSk7CisgICAgICAgICAg
ICB0aGlzLl9zdHlsZS50ZXh0ID0gbmV3VGV4dDsKKworICAgICAgICAgICAgaWYgKCFuZXdUZXh0
Lmxlbmd0aCkKKyAgICAgICAgICAgICAgICB0aGlzLl9zdHlsZS51cGRhdGUobnVsbCwgbnVsbCwg
dGhpcy5fc3R5bGUuc3R5bGVTaGVldFRleHRSYW5nZSk7CisgICAgICAgIH0KKworICAgICAgICB0
aGlzLl9sYXN0VmFsdWUgPSB2YWx1ZTsKKyAgICAgICAgdGhpcy5faWdub3JlTmV4dFVwZGF0ZSA9
IHRydWU7CisgICAgICAgIHRoaXMuX3NwZWNpYWxQcm9wZXJ0eVBsYWNlaG9sZGVyLmhpZGRlbiA9
IHRydWU7CisKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVj
dG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IuRXZlbnQuVmFsdWVEaWRDaGFuZ2UpOworICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBfdGl0bGVFbGVtZW50UHJlcGFyZUZvckNs
aWNrKGV2ZW50KQorICAgIHsKKyAgICAgICAgdGhpcy5fdGl0bGVFbGVtZW50LmNsYXNzTGlzdC50
b2dnbGUoInByb3BlcnR5LXJlZmVyZW5jZS1pbmZvIiwgZXZlbnQudHlwZSA9PT0gImtleWRvd24i
ICYmIGV2ZW50LmFsdEtleSk7CisgICAgfQorCisgICAgX3RpdGxlRWxlbWVudE1vdXNlT3Zlcihl
dmVudCkKKyAgICB7CisgICAgICAgIHRoaXMuX3RpdGxlRWxlbWVudC5jbGFzc0xpc3QudG9nZ2xl
KCJwcm9wZXJ0eS1yZWZlcmVuY2UtaW5mbyIsIGV2ZW50LmFsdEtleSk7CisgICAgICAgIGRvY3Vt
ZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCB0aGlzLl9ib3VuZFRpdGxlRWxlbWVudFBy
ZXBhcmVGb3JDbGljayk7CisgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleXVw
IiwgdGhpcy5fYm91bmRUaXRsZUVsZW1lbnRQcmVwYXJlRm9yQ2xpY2spOworICAgIH0KKworICAg
IF90aXRsZUVsZW1lbnRNb3VzZU91dCgpCisgICAgeworICAgICAgICB0aGlzLl90aXRsZUVsZW1l
bnQuY2xhc3NMaXN0LnJlbW92ZSgicHJvcGVydHktcmVmZXJlbmNlLWluZm8iKTsKKyAgICAgICAg
ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsIHRoaXMuX2JvdW5kVGl0bGVF
bGVtZW50UHJlcGFyZUZvckNsaWNrKTsKKyAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0
ZW5lcigia2V5dXAiLCB0aGlzLl9ib3VuZFRpdGxlRWxlbWVudFByZXBhcmVGb3JDbGljayk7Cisg
ICAgfQorCisgICAgX3RpdGxlRWxlbWVudENsaWNrKGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYg
KGV2ZW50LmFsdEtleSkKKyAgICAgICAgICAgIHRoaXMuX3Nob3dQcm9wZXJ0eUluZm9Qb3BvdmVy
KCk7CisgICAgfQorCisgICAgX3Nob3dQcm9wZXJ0eUluZm9Qb3BvdmVyKCkKKyAgICB7CisgICAg
ICAgIHZhciBwcm9wZXJ0eUluZm9FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgicCIp
OworICAgICAgICBwcm9wZXJ0eUluZm9FbGVtZW50LmNsYXNzTGlzdC5hZGQoInZpc3VhbC1zdHls
ZS1wcm9wZXJ0eS1pbmZvLXBvcG92ZXIiKTsKKworICAgICAgICB2YXIgcHJvcGVydHlJbmZvVGl0
bGVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaDMiKTsKKyAgICAgICAgcHJvcGVy
dHlJbmZvVGl0bGVFbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRo
aXMuX3Byb3BlcnR5UmVmZXJlbmNlTmFtZSkpOworICAgICAgICBwcm9wZXJ0eUluZm9FbGVtZW50
LmFwcGVuZENoaWxkKHByb3BlcnR5SW5mb1RpdGxlRWxlbWVudCk7CisKKyAgICAgICAgcHJvcGVy
dHlJbmZvRWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShXZWJJbnNw
ZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwucHJvcGVydHlSZWZlcmVuY2VJbmZvW3RoaXMu
X3Byb3BlcnR5UmVmZXJlbmNlTmFtZV0pKTsKKworICAgICAgICB2YXIgYm91bmRzID0gV2ViSW5z
cGVjdG9yLlJlY3QucmVjdEZyb21DbGllbnRSZWN0KHRoaXMuX3RpdGxlRWxlbWVudC5nZXRCb3Vu
ZGluZ0NsaWVudFJlY3QoKSk7CisgICAgICAgIHZhciBwb3BvdmVyID0gbmV3IFdlYkluc3BlY3Rv
ci5Qb3BvdmVyKHRoaXMpOworICAgICAgICBwb3BvdmVyLmNvbnRlbnQgPSBwcm9wZXJ0eUluZm9F
bGVtZW50OworICAgICAgICBwb3BvdmVyLnByZXNlbnQoYm91bmRzLnBhZCgyKSwgW1dlYkluc3Bl
Y3Rvci5SZWN0RWRnZS5NSU5fWV0pOworICAgIH0KK307CisKK1dlYkluc3BlY3Rvci5WaXN1YWxT
dHlsZVByb3BlcnR5RWRpdG9yLkV2ZW50ID0geworICAgIFZhbHVlRGlkQ2hhbmdlOiAidmlzdWFs
LXN0eWxlLXByb3BlcnR5LWVkaXRvci12YWx1ZS1jaGFuZ2VkIgorfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVUYWJiZWRQ
cm9wZXJ0aWVzQ29udHJvbGxlci5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9WaXN1YWxTdHlsZVRhYmJlZFByb3BlcnRpZXNDb250cm9sbGVyLmNzcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi44NGRjNjM5NDA3MmU5MDk2MWVlMGVkNjQ3NmE0ZWFhYTc1ZjUzZDA3Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlz
dWFsU3R5bGVUYWJiZWRQcm9wZXJ0aWVzQ29udHJvbGxlci5jc3MKQEAgLTAsMCArMSw1MSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKy52aXN1YWwtc3R5bGUtdGFiYmVkLXByb3BlcnRpZXMtY29udHJvbGxlciB+
IDpub3QoLnZpc2libGUpIHsKKyAgICB2aXNpYmlsaXR5OiBoaWRkZW47CisgICAgaGVpZ2h0OiAw
OworfQorCisudmlzdWFsLXN0eWxlLXRhYmJlZC1wcm9wZXJ0aWVzLWNvbnRyb2xsZXIgPiAudmlz
dWFsLXN0eWxlLXRhYmJlZC1wcm9wZXJ0aWVzLWNvbnRyb2xsZXItY29udGFpbmVyIHsKKyAgICBt
YXJnaW46IDAgYXV0bzsKK30KKworLnZpc3VhbC1zdHlsZS10YWJiZWQtcHJvcGVydGllcy1jb250
cm9sbGVyID4gLnZpc3VhbC1zdHlsZS10YWJiZWQtcHJvcGVydGllcy1jb250cm9sbGVyLWNvbnRh
aW5lciA+IGJ1dHRvbiB7CisgICAgbWFyZ2luOiAwIDJweCAycHg7CisgICAgYm9yZGVyLXJhZGl1
czogM3B4OworICAgIGJvcmRlci13aWR0aDogMCAxcHg7CisgICAgYm9yZGVyLWNvbG9yOiB0cmFu
c3BhcmVudDsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKK30KKworLnZpc3Vh
bC1zdHlsZS10YWJiZWQtcHJvcGVydGllcy1jb250cm9sbGVyID4gLnZpc3VhbC1zdHlsZS10YWJi
ZWQtcHJvcGVydGllcy1jb250cm9sbGVyLWNvbnRhaW5lciA+IGJ1dHRvbi5zZWxlY3RlZCB7Cisg
ICAgY29sb3I6IHdoaXRlOworICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMzQsIDEzMSwgMjQ2
LCAxKTsKK30KKworLnZpc3VhbC1zdHlsZS10YWJiZWQtcHJvcGVydGllcy1jb250cm9sbGVyID4g
LnZpc3VhbC1zdHlsZS10YWJiZWQtcHJvcGVydGllcy1jb250cm9sbGVyLWNvbnRhaW5lciA+IGJ1
dHRvbjpub3QoLnNlbGVjdGVkKTpob3ZlciB7CisgICAgY29sb3I6IHdoaXRlOworICAgIGJhY2tn
cm91bmQtY29sb3I6IHJnYmEoMzQsIDEzMSwgMjQ2LCAwLjUpOworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVUYWJiZWRQ
cm9wZXJ0aWVzQ29udHJvbGxlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1Zpc3VhbFN0eWxlVGFiYmVkUHJvcGVydGllc0NvbnRyb2xsZXIuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNWE2ZTZhZmI0NzY4YmVmZmVjYTYwZTVkNDQyNGJmN2VhODExYmY2MAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3Vh
bFN0eWxlVGFiYmVkUHJvcGVydGllc0NvbnRyb2xsZXIuanMKQEAgLTAsMCArMSw3MyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKK1dlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVRhYmJlZFByb3BlcnRpZXNDb250cm9s
bGVyID0gY2xhc3MgVmlzdWFsU3R5bGVUYWJiZWRQcm9wZXJ0aWVzQ29udHJvbGxlciBleHRlbmRz
IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdworeworICAgIGNvbnN0cnVjdG9yKHRhYk1h
cCkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CisKKyAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFz
c0xpc3QuYWRkKCJ2aXN1YWwtc3R5bGUtdGFiYmVkLXByb3BlcnRpZXMtY29udHJvbGxlciIpOwor
CisgICAgICAgIHRoaXMuX2NvbnRyb2xsZXJDb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJkaXYiKTsKKyAgICAgICAgdGhpcy5fY29udHJvbGxlckNvbnRhaW5lci5jbGFzc0xpc3Qu
YWRkKCJ2aXN1YWwtc3R5bGUtdGFiYmVkLXByb3BlcnRpZXMtY29udHJvbGxlci1jb250YWluZXIi
KTsKKworICAgICAgICB0aGlzLl90YWJNYXAgPSB0YWJNYXA7CisgICAgICAgIHRoaXMuX3RhYkJ1
dHRvbnMgPSBbXTsKKworICAgICAgICBmb3IgKHZhciBrZXkgaW4gdGhpcy5fdGFiTWFwKSB7Cisg
ICAgICAgICAgICB2YXIgYnV0dG9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnV0dG9uIik7
CisgICAgICAgICAgICBidXR0b24uaWQgPSBrZXk7CisgICAgICAgICAgICBidXR0b24udGV4dENv
bnRlbnQgPSB0aGlzLl90YWJNYXBba2V5XS50aXRsZTsKKyAgICAgICAgICAgIGJ1dHRvbi5hZGRF
dmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX2hhbmRsZUJ1dHRvbkNsaWNrZWQuYmluZCh0aGlz
KSk7CisKKyAgICAgICAgICAgIHRoaXMuX2NvbnRyb2xsZXJDb250YWluZXIuYXBwZW5kQ2hpbGQo
YnV0dG9uKTsKKyAgICAgICAgICAgIHRoaXMuX3RhYkJ1dHRvbnMucHVzaChidXR0b24pOworICAg
ICAgICB9CisKKyAgICAgICAgdmFyIGZpcnN0QnV0dG9uID0gdGhpcy5fdGFiQnV0dG9uc1swXTsK
KyAgICAgICAgZmlyc3RCdXR0b24uY2xhc3NMaXN0LmFkZCgic2VsZWN0ZWQiKTsKKyAgICAgICAg
dGhpcy5fdGFiTWFwW2ZpcnN0QnV0dG9uLmlkXS5lbGVtZW50LmNsYXNzTGlzdC5hZGQoInZpc2li
bGUiKTsKKworICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2NvbnRyb2xs
ZXJDb250YWluZXIpOworICAgIH0KKworICAgIC8vIFByaXZhdGUKKworICAgIF9oYW5kbGVCdXR0
b25DbGlja2VkKGV2ZW50KQorICAgIHsKKyAgICAgICAgZm9yICh2YXIgaXRlbSBvZiB0aGlzLl90
YWJCdXR0b25zKSB7CisgICAgICAgICAgICB2YXIgc2VsZWN0ZWQgPSBpdGVtID09PSBldmVudC50
YXJnZXQ7CisKKyAgICAgICAgICAgIGl0ZW0uY2xhc3NMaXN0LnRvZ2dsZSgic2VsZWN0ZWQiLCBz
ZWxlY3RlZCk7CisKKyAgICAgICAgICAgIHZhciB0YWIgPSB0aGlzLl90YWJNYXBbaXRlbS5pZF07
CisgICAgICAgICAgICB0YWIuZWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKCJ2aXNpYmxlIiwgc2Vs
ZWN0ZWQpOworCisgICAgICAgICAgICBmb3IgKHZhciBwcm9wZXJ0eUVkaXRvciBvZiB0YWIucHJv
cGVydGllcykKKyAgICAgICAgICAgICAgICBwcm9wZXJ0eUVkaXRvci51cGRhdGUoKTsKKyAgICAg
ICAgfQorICAgIH0KK307Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258202</attachid>
            <date>2015-08-04 13:05:13 -0700</date>
            <delta_ts>2015-08-05 18:19:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147576-20150804130506.patch</filename>
            <type>text/plain</type>
            <size>37877</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IGQzYzhiODQyZTNjZGQ1ODc0N2E4MzFmN2M0MmM2
OTUyZTMzNzA0OWEuLjEwOTQxMWE2MmMwYjJkMDY2Mjk4NGZlOGNkYzU2NDNlZDJlNTA5NTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg5IEBACisyMDE1LTA4LTA0ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBB
ZGQgdmlzdWFsIGVkaXRvcnMgZm9yIENTUyBwcm9wZXJ0aWVzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDc1NzYKKworICAgICAgICBBZGRlZCBwYXJl
bnQgY2xhc3MgZm9yIHByb3BlcnR5IGVkaXRvcnMgaW4gdGhlIFZpc3VhbCBzdHlsZQorICAgICAg
ICBkZXRhaWxzIHBhbmVsIGluIHRoZSBDU1Mgc2lkZWJhci4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFs
U3R5bGVQcm9wZXJ0eUNvbWJpbmVyLmpzOiBBZGRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5W
aXN1YWxTdHlsZVByb3BlcnR5Q29tYmluZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3Vh
bFN0eWxlUHJvcGVydHlDb21iaW5lci5wcm90b3R5cGUuZ2V0IHN0eWxlKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5Q29tYmluZXIucHJvdG90eXBlLmdldCBzeW50
aGVzaXplZFZhbHVlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5
Q29tYmluZXIucHJvdG90eXBlLm1vZGlmeVByb3BlcnR5VGV4dCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUNvbWJpbmVyLnByb3RvdHlwZS51cGRhdGUpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlDb21iaW5lci5wcm90b3R5cGUu
dXBkYXRlVmFsdWVzRnJvbVRleHQudXBkYXRlQ29tcGF0aWJsZUVkaXRvcik6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUNvbWJpbmVyLnByb3RvdHlwZS51cGRhdGVW
YWx1ZXNGcm9tVGV4dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0
eUNvbWJpbmVyLnByb3RvdHlwZS5wcm9wZXJ0eU1pc3NpbmcpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlZpc3VhbFN0eWxlUHJvcGVydHlDb21iaW5lci5wcm90b3R5cGUuX21hcmtFZGl0b3JzKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5Q29tYmluZXIucHJvdG90
eXBlLl9oYW5kbGVQcm9wZXJ0eUVkaXRvclZhbHVlQ2hhbmdlZCk6CisgICAgICAgICogVXNlcklu
dGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLmNzczogQWRkZWQuCisgICAg
ICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lcik6CisgICAgICAgICgudmlzdWFs
LXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdGl0bGUp
OgorICAgICAgICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIgPiAudmlzdWFsLXN0
eWxlLXByb3BlcnR5LXRpdGxlID4gLnByb3BlcnR5LXJlZmVyZW5jZS1pbmZvKToKKyAgICAgICAg
KC52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLmRpc2FibGVkID4gLnZpc3VhbC1zdHls
ZS1wcm9wZXJ0eS10aXRsZSA+IDpub3QoLnByb3BlcnR5LXJlZmVyZW5jZS1pbmZvKSk6CisgICAg
ICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lciA+IC52aXN1YWwtc3R5bGUtcHJv
cGVydHktdmFsdWUtY29udGFpbmVyKToKKyAgICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHkt
Y29udGFpbmVyLmRpc2FibGVkID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWlu
ZXIpOgorICAgICAgICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIgPiAudmlzdWFs
LXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciBzZWxlY3QpOgorICAgICAgICAoLnZpc3Vh
bC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVl
LWNvbnRhaW5lciBpbnB1dCk6CisgICAgICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRh
aW5lci5kaXNhYmxlZCA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyIGlu
cHV0KToKKyAgICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLmxheW91dC1y
ZXZlcnNlZCA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdGl0bGUpOgorICAgICAgICAoLnZpc3Vh
bC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVl
LWNvbnRhaW5lciA+IC52aXN1YWwtc3R5bGUtc3BlY2lhbC1wcm9wZXJ0eS1wbGFjZWhvbGRlcik6
CisgICAgICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWluZm8tcG9wb3Zlcik6CisgICAgICAg
ICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWluZm8tcG9wb3ZlciA+IGgzKToKKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IuanM6IEFkZGVkLgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IucGFyc2VWYWx1
ZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IucHJvdG90eXBl
LmdldCBlbGVtZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5
RWRpdG9yLnByb3RvdHlwZS5nZXQgc3R5bGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3Vh
bFN0eWxlUHJvcGVydHlFZGl0b3IucHJvdG90eXBlLmdldCB2YWx1ZSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5wcm90b3R5cGUuc2V0IHZhbHVlKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnByb3RvdHlw
ZS5nZXQgdW5pdHMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlF
ZGl0b3IucHJvdG90eXBlLnNldCB1bml0cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFs
U3R5bGVQcm9wZXJ0eUVkaXRvci5wcm90b3R5cGUuZ2V0IHBsYWNlaG9sZGVyKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnByb3RvdHlwZS5zZXQgcGxh
Y2Vob2xkZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0
b3IucHJvdG90eXBlLmdldCBzeW50aGVzaXplZFZhbHVlKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnByb3RvdHlwZS5zZXQgZG9udFVwZGF0ZVN0eWxl
VGV4dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5w
cm90b3R5cGUuc2V0IG1hc3RlclByb3BlcnR5KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1
YWxTdHlsZVByb3BlcnR5RWRpdG9yLnByb3RvdHlwZS5nZXQgbWFzdGVyUHJvcGVydHkpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IucHJvdG90eXBlLnNl
dCBvcHRpb25hbFByb3BlcnR5KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVBy
b3BlcnR5RWRpdG9yLnByb3RvdHlwZS5nZXQgb3B0aW9uYWxQcm9wZXJ0eSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5wcm90b3R5cGUuc2V0IGNvbG9y
UHJvcGVydHkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0
b3IucHJvdG90eXBlLmdldCBjb2xvclByb3BlcnR5KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5W
aXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnByb3RvdHlwZS5nZXQgcHJvcGVydHlSZWZlcmVuY2VO
YW1lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnBy
b3RvdHlwZS5zZXQgcHJvcGVydHlSZWZlcmVuY2VOYW1lKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnByb3RvdHlwZS5zZXQgZGlzYWJsZWQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IucHJvdG90eXBlLmdl
dCBkaXNhYmxlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVk
aXRvci5wcm90b3R5cGUudXBkYXRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHls
ZVByb3BlcnR5RWRpdG9yLnByb3RvdHlwZS51cGRhdGVFZGl0b3JWYWx1ZXMpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IucHJvdG90eXBlLm1vZGlmeVBy
b3BlcnR5VGV4dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVk
aXRvci5wcm90b3R5cGUuZ2V0VmFsdWVzRnJvbVRleHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IucHJvdG90eXBlLnByb3BlcnR5TWlzc2luZyk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5wcm90b3R5cGUu
dmFsdWVJc0NvbXBhdGlibGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJv
cGVydHlFZGl0b3IucHJvdG90eXBlLnZhbHVlSXNLZXl3b3JkKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnByb3RvdHlwZS52YWx1ZUlzVW5pdCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5wcm90b3R5cGUu
X3ZhbHVlSXNBZHZhbmNlZEtleXdvcmQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0
eWxlUHJvcGVydHlFZGl0b3IucHJvdG90eXBlLl92YWx1ZUlzQWR2YW5jZWRVbml0KToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnByb3RvdHlwZS5fa2V5
Rm9yS2V5d29yZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVk
aXRvci5wcm90b3R5cGUuX3ZhbHVlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5W
aXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnByb3RvdHlwZS5fdGl0bGVFbGVtZW50UHJlcGFyZUZv
ckNsaWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9y
LnByb3RvdHlwZS5fdGl0bGVFbGVtZW50TW91c2VPdmVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnByb3RvdHlwZS5fdGl0bGVFbGVtZW50TW91c2VP
dXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IucHJv
dG90eXBlLl90aXRsZUVsZW1lbnRDbGljayk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFs
U3R5bGVQcm9wZXJ0eUVkaXRvci5wcm90b3R5cGUuX2hhc011bHRpcGxlQ29uZmxpY3RpbmdWYWx1
ZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IucHJv
dG90eXBlLl9zaG93UHJvcGVydHlJbmZvUG9wb3Zlcik6CisgICAgICAgICogVXNlckludGVyZmFj
ZS9WaWV3cy9WaXN1YWxTdHlsZVRhYmJlZFByb3BlcnRpZXNDb250cm9sbGVyLmNzczogQWRkZWQu
CisgICAgICAgICgudmlzdWFsLXN0eWxlLXRhYmJlZC1wcm9wZXJ0aWVzLWNvbnRyb2xsZXIgfiA6
bm90KC52aXNpYmxlKSk6CisgICAgICAgICgudmlzdWFsLXN0eWxlLXRhYmJlZC1wcm9wZXJ0aWVz
LWNvbnRyb2xsZXIgPiAudmlzdWFsLXN0eWxlLXRhYmJlZC1wcm9wZXJ0aWVzLWNvbnRyb2xsZXIt
Y29udGFpbmVyKToKKyAgICAgICAgKC52aXN1YWwtc3R5bGUtdGFiYmVkLXByb3BlcnRpZXMtY29u
dHJvbGxlciA+IC52aXN1YWwtc3R5bGUtdGFiYmVkLXByb3BlcnRpZXMtY29udHJvbGxlci1jb250
YWluZXIgPiBidXR0b24pOgorICAgICAgICAoLnZpc3VhbC1zdHlsZS10YWJiZWQtcHJvcGVydGll
cy1jb250cm9sbGVyID4gLnZpc3VhbC1zdHlsZS10YWJiZWQtcHJvcGVydGllcy1jb250cm9sbGVy
LWNvbnRhaW5lciA+IGJ1dHRvbi5zZWxlY3RlZCk6CisgICAgICAgICgudmlzdWFsLXN0eWxlLXRh
YmJlZC1wcm9wZXJ0aWVzLWNvbnRyb2xsZXIgPiAudmlzdWFsLXN0eWxlLXRhYmJlZC1wcm9wZXJ0
aWVzLWNvbnRyb2xsZXItY29udGFpbmVyID4gYnV0dG9uOm5vdCguc2VsZWN0ZWQpOmhvdmVyKToK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlVGFiYmVkUHJvcGVydGll
c0NvbnRyb2xsZXIuanM6IEFkZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxl
VGFiYmVkUHJvcGVydGllc0NvbnRyb2xsZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3Vh
bFN0eWxlVGFiYmVkUHJvcGVydGllc0NvbnRyb2xsZXIucHJvdG90eXBlLl9oYW5kbGVCdXR0b25D
bGlja2VkKToKKwogMjAxNS0wOC0wMiAgTWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+
CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogVW5uYW1lc3BhY2VkIEZvcm1hdHRlciBjbGFzc2Vz
IGJyZWFrIENTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZVByb3BlcnR5Q29t
YmluZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1
YWxTdHlsZVByb3BlcnR5Q29tYmluZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDA4NGE2MDA4YzU0M2JhMTBm
MzNmNWZkNzQ4ZjM4ODg3NDY0NGU2OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlUHJvcGVydHlDb21iaW5lci5q
cwpAQCAtMCwwICsxLDE4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dlYkluc3BlY3Rvci5WaXN1YWxTdHls
ZVByb3BlcnR5Q29tYmluZXIgPSBjbGFzcyBWaXN1YWxTdHlsZVByb3BlcnR5Q29tYmluZXIgZXh0
ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0Cit7CisgICAgY29uc3RydWN0b3IocHJvcGVydHlOYW1l
LCBwcm9wZXJ0eUVkaXRvcnMpCisgICAgeworICAgICAgICBzdXBlcigpOworCisgICAgICAgIHRo
aXMuX3N0eWxlID0gbnVsbDsKKyAgICAgICAgdGhpcy5fcHJvcGVydHlOYW1lID0gcHJvcGVydHlO
YW1lOworICAgICAgICB0aGlzLl9wcm9wZXJ0eUVkaXRvcnMgPSBwcm9wZXJ0eUVkaXRvcnMgfHwg
W107CisgICAgICAgIHRoaXMuX3Byb3BlcnR5TWlzc2luZyA9IGZhbHNlOworCisgICAgICAgIGZv
ciAodmFyIGVkaXRvciBvZiB0aGlzLl9wcm9wZXJ0eUVkaXRvcnMpIHsKKyAgICAgICAgICAgIGVk
aXRvci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRp
dG9yLkV2ZW50LlZhbHVlRGlkQ2hhbmdlLCB0aGlzLl9oYW5kbGVQcm9wZXJ0eUVkaXRvclZhbHVl
Q2hhbmdlZC5iaW5kKHRoaXMpKTsKKyAgICAgICAgICAgIGVkaXRvci5kb250VXBkYXRlU3R5bGVU
ZXh0ID0gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuX3RleHRDb250YWluc05hbWVS
ZWdFeHAgPSBuZXcgUmVnRXhwKCIoPzooPzpefDspXFxzKiIgKyB0aGlzLl9wcm9wZXJ0eU5hbWUg
KyAiXFxzKjopIik7CisgICAgICAgIHRoaXMuX3JlcGxhY2VtZW50UmVnRXhwID0gbmV3IFJlZ0V4
cCgiKF58OykoPzpcXHMqKSgiICsgdGhpcy5fcHJvcGVydHlOYW1lICsgIikoLis/KD86O3wkKSki
KTsKKyAgICAgICAgdGhpcy5fdmFsdWVSZWdFeHAgPSAvKFteXHNdK1woLitcKXxbXlxzXSspKD86
Oz8pL2c7CisgICAgfQorCisgICAgZ2V0IHN0eWxlKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0
aGlzLl9zdHlsZTsKKyAgICB9CisKKyAgICBnZXQgc3ludGhlc2l6ZWRWYWx1ZSgpCisgICAgewor
ICAgICAgICB2YXIgdmFsdWUgPSAiIjsKKyAgICAgICAgdmFyIG9uZUVkaXRvckhhc1ZhbHVlID0g
ZmFsc2U7CisKKyAgICAgICAgZm9yICh2YXIgZWRpdG9yIG9mIHRoaXMuX3Byb3BlcnR5RWRpdG9y
cykgeworICAgICAgICAgICAgdmFyIGVkaXRvclZhbHVlID0gZWRpdG9yLnN5bnRoZXNpemVkVmFs
dWU7CisKKyAgICAgICAgICAgIGlmIChlZGl0b3JWYWx1ZSAmJiBlZGl0b3JWYWx1ZS5sZW5ndGgp
CisgICAgICAgICAgICAgICAgb25lRWRpdG9ySGFzVmFsdWUgPSB0cnVlOworICAgICAgICAgICAg
ZWxzZSBpZiAoZWRpdG9yLm9wdGlvbmFsUHJvcGVydHkpCisgICAgICAgICAgICAgICAgY29udGlu
dWU7CisKKyAgICAgICAgICAgIGlmIChlZGl0b3IubWFzdGVyUHJvcGVydHkgJiYgZWRpdG9yLnZh
bHVlSXNLZXl3b3JkKCkpIHsKKyAgICAgICAgICAgICAgICB0aGlzLl9tYXJrRWRpdG9ycyhlZGl0
b3IsIHRydWUpOworICAgICAgICAgICAgICAgIHJldHVybiBlZGl0b3JWYWx1ZTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgaWYgKGVkaXRvciAhPT0gdGhpcy5fcHJvcGVydHlFZGl0b3Jz
WzBdKQorICAgICAgICAgICAgICAgIHZhbHVlICs9ICIgIjsKKworICAgICAgICAgICAgdmFsdWUg
Kz0gZWRpdG9yVmFsdWUgfHwgKGVkaXRvci5jb2xvclByb3BlcnR5ID8gInRyYW5zcGFyZW50IiA6
IDApOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fbWFya0VkaXRvcnMoKTsKKyAgICAgICAg
cmV0dXJuIHZhbHVlLmxlbmd0aCAmJiBvbmVFZGl0b3JIYXNWYWx1ZSA/IHZhbHVlIDogbnVsbDsK
KyAgICB9CisKKyAgICBtb2RpZnlQcm9wZXJ0eVRleHQodGV4dCwgdmFsdWUpCisgICAgeworICAg
ICAgICB2YXIgdHJpbW1lZFRleHQgPSB0ZXh0LnRyaW1SaWdodCgpOworCisgICAgICAgIGlmICh0
aGlzLl90ZXh0Q29udGFpbnNOYW1lUmVnRXhwLnRlc3QodGV4dCkpCisgICAgICAgICAgICB0ZXh0
ID0gdGV4dC5yZXBsYWNlKHRoaXMuX3JlcGxhY2VtZW50UmVnRXhwLCB2YWx1ZSA/ICIkMSQyOiAi
ICsgdmFsdWUgKyAiOyIgOiAiJDEiKTsKKyAgICAgICAgZWxzZSBpZiAodmFsdWUpIHsKKyAgICAg
ICAgICAgIGlmICh0cmltbWVkVGV4dC50cmltTGVmdCgpLmxlbmd0aCAmJiAhdHJpbW1lZFRleHQu
ZW5kc1dpdGgoIjsiKSkKKyAgICAgICAgICAgICAgICB0ZXh0ICs9ICI7IjsKKworICAgICAgICAg
ICAgdGV4dCArPSB0aGlzLl9wcm9wZXJ0eU5hbWUgKyAiOiAiICsgdmFsdWUgKyAiOyI7CisgICAg
ICAgIH0KKworICAgICAgICByZXR1cm4gdGV4dDsKKyAgICB9CisKKyAgICB1cGRhdGUoc3R5bGUp
CisgICAgeworICAgICAgICBpZiAodGhpcy5faWdub3JlTmV4dFVwZGF0ZSkgeworICAgICAgICAg
ICAgdGhpcy5faWdub3JlTmV4dFVwZGF0ZSA9IGZhbHNlOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisKKyAgICAgICAgaWYgKHN0eWxlKQorICAgICAgICAgICAgdGhpcy5fc3R5bGUg
PSBzdHlsZTsKKworICAgICAgICBpZiAoIXRoaXMuX3N0eWxlIHx8ICF0aGlzLl92YWx1ZVJlZ0V4
cCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB2YXIgcHJvcGVydHkgPSB0aGlzLl9z
dHlsZS5wcm9wZXJ0eUZvck5hbWUodGhpcy5fcHJvcGVydHlOYW1lLCB0cnVlKTsKKyAgICAgICAg
dmFyIHByb3BlcnR5TWlzc2luZyA9ICFwcm9wZXJ0eTsKKworICAgICAgICBpZiAocHJvcGVydHlN
aXNzaW5nICYmIHRoaXMuX3N0eWxlLm5vZGVTdHlsZXMpCisgICAgICAgICAgICBwcm9wZXJ0eSA9
IHRoaXMuX3N0eWxlLm5vZGVTdHlsZXMuY29tcHV0ZWRTdHlsZS5wcm9wZXJ0eUZvck5hbWUodGhp
cy5fcHJvcGVydHlOYW1lKTsKKworICAgICAgICBpZiAoIXByb3BlcnR5KQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIHRoaXMudXBkYXRlVmFsdWVzRnJvbVRleHQocHJvcGVydHkudmFs
dWUsIHN0eWxlLCBwcm9wZXJ0eU1pc3NpbmcpOworICAgICAgICB0aGlzLl9wcm9wZXJ0eU1pc3Np
bmcgPSBwcm9wZXJ0eU1pc3Npbmc7CisgICAgfQorCisgICAgdXBkYXRlVmFsdWVzRnJvbVRleHQo
c3R5bGVUZXh0LCBuZXdTdHlsZSwgcHJvcGVydHlNaXNzaW5nKQorICAgIHsKKyAgICAgICAgaWYg
KHN0eWxlVGV4dCA9PT0gdGhpcy5zeW50aGVzaXplZFZhbHVlKQorICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgIGZvciAodmFyIGVkaXRvciBvZiB0aGlzLl9wcm9wZXJ0eUVkaXRvcnMpCisg
ICAgICAgICAgICBlZGl0b3IuX191cGRhdGVkID0gZmFsc2U7CisKKyAgICAgICAgZnVuY3Rpb24g
dXBkYXRlQ29tcGF0aWJsZUVkaXRvcih2YWx1ZSkKKyAgICAgICAgeworICAgICAgICAgICAgZm9y
ICh2YXIgZWRpdG9yIG9mIHRoaXMuX3Byb3BlcnR5RWRpdG9ycykgeworICAgICAgICAgICAgICAg
IGlmICh2YWx1ZSAmJiAhZWRpdG9yLnZhbHVlSXNDb21wYXRpYmxlKHZhbHVlKSB8fCBlZGl0b3Iu
X191cGRhdGVkKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAg
ICAgIGlmICh0aGlzLl9jdXJyZW50VmFsdWVJc0tleXdvcmQgJiYgZWRpdG9yLmRpc2FibGVkKQor
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgICAgIHZhciB1cGRh
dGVkVmFsdWVzID0gZWRpdG9yLmdldFZhbHVlc0Zyb21UZXh0KHZhbHVlIHx8ICIiLCBwcm9wZXJ0
eU1pc3NpbmcpOworICAgICAgICAgICAgICAgIGVkaXRvci51cGRhdGVFZGl0b3JWYWx1ZXModXBk
YXRlZFZhbHVlcyk7CisgICAgICAgICAgICAgICAgZWRpdG9yLl9fdXBkYXRlZCA9IHRydWU7CisK
KyAgICAgICAgICAgICAgICBpZiAodmFsdWUpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHZhciBtYXRjaGVzID0gc3R5bGVU
ZXh0Lm1hdGNoKHRoaXMuX3ZhbHVlUmVnRXhwKTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCB0aGlzLl9wcm9wZXJ0eUVkaXRvcnMubGVuZ3RoOyArK2kpCisgICAgICAgICAgICB1cGRhdGVD
b21wYXRpYmxlRWRpdG9yLmNhbGwodGhpcywgbWF0Y2hlcyAmJiBtYXRjaGVzW2ldKTsKKyAgICB9
CisKKyAgICBnZXQgcHJvcGVydHlNaXNzaW5nKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlz
Ll9wcm9wZXJ0eU1pc3Npbmc7CisgICAgfQorCisgICAgLy8gUHJpdmF0ZQorCisgICAgX21hcmtF
ZGl0b3JzKGlnbm9yZWRFZGl0b3IsIGRpc2FibGVkKQorICAgIHsKKyAgICAgICAgdGhpcy5fY3Vy
cmVudFZhbHVlSXNLZXl3b3JkID0gZGlzYWJsZWQgfHwgZmFsc2U7CisKKyAgICAgICAgZm9yICh2
YXIgZWRpdG9yIG9mIHRoaXMuX3Byb3BlcnR5RWRpdG9ycykgeworICAgICAgICAgICAgaWYgKGln
bm9yZWRFZGl0b3IgJiYgZWRpdG9yID09PSBpZ25vcmVkRWRpdG9yKQorICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworCisgICAgICAgICAgICBlZGl0b3IuZGlzYWJsZWQgPSB0aGlzLl9jdXJyZW50
VmFsdWVJc0tleXdvcmQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBfaGFuZGxlUHJvcGVydHlF
ZGl0b3JWYWx1ZUNoYW5nZWQoKQorICAgIHsKKyAgICAgICAgdGhpcy5faWdub3JlTmV4dFVwZGF0
ZSA9IHRydWU7CisKKyAgICAgICAgaWYgKHRoaXMuX3N0eWxlKQorICAgICAgICAgICAgdGhpcy5f
c3R5bGUudGV4dCA9IHRoaXMubW9kaWZ5UHJvcGVydHlUZXh0KHRoaXMuX3N0eWxlLnRleHQsIHRo
aXMuc3ludGhlc2l6ZWRWYWx1ZSk7CisKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0
ZW5lcnMoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IuRXZlbnQuVmFsdWVE
aWRDaGFuZ2UpOworICAgIH0KK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLmNzcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlUHJvcGVydHlF
ZGl0b3IuY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFkYTM3MTFhYmEyODJjMDljOTAzMjNhYzQ5MzEyYWM4YmNh
YTcxYTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLmNzcwpAQCAtMCwwICsxLDk5IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIgeworICAgIGRp
c3BsYXk6IGZsZXg7CisgICAgd2lkdGg6IDEwMCU7CisgICAgbWluLWhlaWdodDogMjJweDsKK30K
KworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLXByb3Bl
cnR5LXRpdGxlIHsKKyAgICBtYXJnaW46IDRweDsKKyAgICB0ZXh0LWFsaWduOiByaWdodDsKK30K
KworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLXByb3Bl
cnR5LXRpdGxlID4gLnByb3BlcnR5LXJlZmVyZW5jZS1pbmZveworICAgIGN1cnNvcjogaGVscDsK
K30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuZGlzYWJsZWQgPiAudmlzdWFs
LXN0eWxlLXByb3BlcnR5LXRpdGxlID4gOm5vdCgucHJvcGVydHktcmVmZXJlbmNlLWluZm8pIHsK
KyAgICBvcGFjaXR5OiAwLjQ7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVy
ID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgeworICAgIGZsZXg6IDE7
CisgICAgcG9zaXRpb246IHJlbGF0aXZlOworfQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNv
bnRhaW5lci5kaXNhYmxlZCA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVy
IHsKKyAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKKyAgICBvcGFjaXR5OiAwLjQ7Cit9CisKKy52
aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12
YWx1ZS1jb250YWluZXIgc2VsZWN0IHsKKyAgICB3aWR0aDogMTAwJTsKKyAgICBtYXJnaW46IDFw
eCAwOworfQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lciA+IC52aXN1YWwtc3R5
bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyIGlucHV0IHsKKyAgICB3aWR0aDogY2FsYygxMDAl
IC0gMXB4KTsKKyAgICBtYXJnaW46IDA7CisgICAgb3V0bGluZTogbm9uZTsKK30KKworLnZpc3Vh
bC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuZGlzYWJsZWQgPiAudmlzdWFsLXN0eWxlLXByb3Bl
cnR5LXZhbHVlLWNvbnRhaW5lciBpbnB1dCB7CisgICAgcG9pbnRlci1ldmVudHM6IG5vbmUgIWlt
cG9ydGFudDsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIubGF5b3V0LXJl
dmVyc2VkID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS10aXRsZSB7CisgICAgb3JkZXI6IDI7Cisg
ICAgdGV4dC1hbGlnbjogbGVmdDsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWlu
ZXIgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC52aXN1YWwtc3R5
bGUtc3BlY2lhbC1wcm9wZXJ0eS1wbGFjZWhvbGRlciB7CisgICAgcG9zaXRpb246IGFic29sdXRl
OworICAgIHRvcDogMnB4OworICAgIGxlZnQ6IDFweDsKKyAgICB3aWR0aDogY2FsYygxMDAlIC0g
MjBweCk7CisgICAgbGluZS1oZWlnaHQ6IDE2cHg7CisgICAgdGV4dC1pbmRlbnQ6IDdweDsKKyAg
ICBib3JkZXItcmFkaXVzOiA0cHg7CisgICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7CisgICAg
Y29sb3I6IGdyZXk7CisgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CisgICAgb3ZlcmZsb3c6IGhp
ZGRlbjsKKyAgICB3aGl0ZS1zcGFjZTogbm93cmFwOworICAgIHotaW5kZXg6IDE7Cit9CisKKy52
aXN1YWwtc3R5bGUtcHJvcGVydHktaW5mby1wb3BvdmVyIHsKKyAgICB3aWR0aDogMjAwcHg7Cisg
ICAgbWFyZ2luOiAwOworICAgIHBhZGRpbmc6IDA7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVy
dHktaW5mby1wb3BvdmVyID4gaDMgeworICAgIG1hcmdpbjogNnB4IDNweDsKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxl
UHJvcGVydHlFZGl0b3IuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMwMThkNTNmMTkz
M2YyOTJkODM1ZjcyM2E5Yzk0MWZkNGQzYWI2NWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZVByb3BlcnR5RWRp
dG9yLmpzCkBAIC0wLDAgKzEsNDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV2ViSW5zcGVjdG9yLlZpc3Vh
bFN0eWxlUHJvcGVydHlFZGl0b3IgPSBjbGFzcyBWaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yIGV4
dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAoreworICAgIGNvbnN0cnVjdG9yKHByb3BlcnR5TmFt
ZXMsIGxhYmVsLCBwb3NzaWJsZVZhbHVlcywgcG9zc2libGVVbml0cywgY2xhc3NOYW1lLCBsYXlv
dXRSZXZlcnNlZCkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CisKKyAgICAgICAgdGhpcy5fcHJv
cGVydHlJbmZvTGlzdCA9IFtdOworICAgICAgICB0aGlzLl9zdHlsZSA9IG51bGw7CisKKyAgICAg
ICAgZnVuY3Rpb24gcGFyc2VWYWx1ZXModmFsdWVzKQorICAgICAgICB7CisgICAgICAgICAgICBp
ZiAoIXZhbHVlcykKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIHZhciBw
YXJzZWRWYWx1ZXMgPSB7fTsKKyAgICAgICAgICAgIGZvciAodmFyIHZhbHVlIG9mIHZhbHVlcykK
KyAgICAgICAgICAgICAgICBwYXJzZWRWYWx1ZXNbdmFsdWUudG9Mb3dlckNhc2UoKS5yZXBsYWNl
KC9ccy9nLCAiLSIpXSA9IHZhbHVlOworCisgICAgICAgICAgICByZXR1cm4gcGFyc2VkVmFsdWVz
OworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fcG9zc2libGVWYWx1ZXMgPSBudWxsOworICAg
ICAgICBpZiAocG9zc2libGVWYWx1ZXMpIHsKKyAgICAgICAgICAgIHRoaXMuX3Bvc3NpYmxlVmFs
dWVzID0ge307CisgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShwb3NzaWJsZVZhbHVlcykp
CisgICAgICAgICAgICAgICAgdGhpcy5fcG9zc2libGVWYWx1ZXMuYmFzaWMgPSBwYXJzZVZhbHVl
cyhwb3NzaWJsZVZhbHVlcyk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICB0
aGlzLl9wb3NzaWJsZVZhbHVlcy5iYXNpYyA9IHBhcnNlVmFsdWVzKHBvc3NpYmxlVmFsdWVzLmJh
c2ljKTsKKyAgICAgICAgICAgICAgICB0aGlzLl9wb3NzaWJsZVZhbHVlcy5hZHZhbmNlZCA9IHBh
cnNlVmFsdWVzKHBvc3NpYmxlVmFsdWVzLmFkdmFuY2VkKTsKKyAgICAgICAgICAgIH0gCisgICAg
ICAgIH0KKyAgICAgICAgdGhpcy5fcG9zc2libGVVbml0cyA9IG51bGw7CisgICAgICAgIGlmIChw
b3NzaWJsZVVuaXRzKSB7CisgICAgICAgICAgICB0aGlzLl9wb3NzaWJsZVVuaXRzID0ge307Cisg
ICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShwb3NzaWJsZVVuaXRzKSkKKyAgICAgICAgICAg
ICAgICB0aGlzLl9wb3NzaWJsZVVuaXRzLmJhc2ljID0gcG9zc2libGVVbml0czsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0aGlzLl9wb3NzaWJsZVVuaXRzID0gcG9zc2libGVV
bml0cworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImRpdiIpOworICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoInZp
c3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIiLCBjbGFzc05hbWUpOworICAgICAgICB0aGlz
Ll9lbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoImxheW91dC1yZXZlcnNlZCIsIGxheW91dFJldmVy
c2VkKTsKKworICAgICAgICBpZiAobGFiZWwgJiYgbGFiZWwubGVuZ3RoKSB7CisgICAgICAgICAg
ICB2YXIgdGl0bGVDb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAg
ICAgICAgICAgIHRpdGxlQ29udGFpbmVyLmNsYXNzTGlzdC5hZGQoInZpc3VhbC1zdHlsZS1wcm9w
ZXJ0eS10aXRsZSIpOworCisgICAgICAgICAgICB0aGlzLl90aXRsZUVsZW1lbnQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CisgICAgICAgICAgICB0aGlzLl90aXRsZUVsZW1lbnQu
YXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobGFiZWwpKTsKKyAgICAgICAgICAg
IHRoaXMuX3RpdGxlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW92ZXIiLCB0aGlzLl90
aXRsZUVsZW1lbnRNb3VzZU92ZXIuYmluZCh0aGlzKSk7CisgICAgICAgICAgICB0aGlzLl90aXRs
ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VvdXQiLCB0aGlzLl90aXRsZUVsZW1lbnRN
b3VzZU91dC5iaW5kKHRoaXMpKTsKKyAgICAgICAgICAgIHRoaXMuX3RpdGxlRWxlbWVudC5hZGRF
dmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX3RpdGxlRWxlbWVudENsaWNrLmJpbmQodGhpcykp
OworICAgICAgICAgICAgdGl0bGVDb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5fdGl0bGVFbGVt
ZW50KTsKKworICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aXRsZUNvbnRh
aW5lcik7CisKKyAgICAgICAgICAgIHRoaXMuX2JvdW5kVGl0bGVFbGVtZW50UHJlcGFyZUZvckNs
aWNrID0gdGhpcy5fdGl0bGVFbGVtZW50UHJlcGFyZUZvckNsaWNrLmJpbmQodGhpcyk7CisgICAg
ICAgIH0KKworICAgICAgICB0aGlzLl9jb250ZW50RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImRpdiIpOworICAgICAgICB0aGlzLl9jb250ZW50RWxlbWVudC5jbGFzc0xpc3QuYWRk
KCJ2aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyIik7CisKKyAgICAgICAgdGhp
cy5fc3BlY2lhbFByb3BlcnR5UGxhY2Vob2xkZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJz
cGFuIik7CisgICAgICAgIHRoaXMuX3NwZWNpYWxQcm9wZXJ0eVBsYWNlaG9sZGVyLmNsYXNzTGlz
dC5hZGQoInZpc3VhbC1zdHlsZS1zcGVjaWFsLXByb3BlcnR5LXBsYWNlaG9sZGVyIik7CisgICAg
ICAgIHRoaXMuX3NwZWNpYWxQcm9wZXJ0eVBsYWNlaG9sZGVyLmhpZGRlbiA9IHRydWU7CisgICAg
ICAgIHRoaXMuX2NvbnRlbnRFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3NwZWNpYWxQcm9wZXJ0
eVBsYWNlaG9sZGVyKTsKKworICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMu
X2NvbnRlbnRFbGVtZW50KTsKKworICAgICAgICB0aGlzLl91cGRhdGVkVmFsdWVzID0ge307Cisg
ICAgICAgIHRoaXMuX2xhc3RWYWx1ZSA9IG51bGw7CisgICAgICAgIHRoaXMuX3ZhbHVlUmVnRXhw
ID0gbnVsbDsKKworICAgICAgICBpZiAodHlwZW9mIHByb3BlcnR5TmFtZXMgPT09ICJzdHJpbmci
KQorICAgICAgICAgICAgcHJvcGVydHlOYW1lcyA9IFtwcm9wZXJ0eU5hbWVzXTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJtdWx0aXBsZSIp
OworCisgICAgICAgIGZvciAodmFyIG5hbWUgb2YgcHJvcGVydHlOYW1lcykgeworICAgICAgICAg
ICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKG5hbWUpOworICAgICAgICAgICAgdGhpcy5f
cHJvcGVydHlJbmZvTGlzdC5wdXNoKHsKKyAgICAgICAgICAgICAgICBuYW1lLAorICAgICAgICAg
ICAgICAgIHRleHRDb250YWluc05hbWVSZWdFeHA6IG5ldyBSZWdFeHAoIig/Oig/Ol58OylcXHMq
IiArIG5hbWUgKyAiXFxzKjopIiksCisgICAgICAgICAgICAgICAgcmVwbGFjZW1lbnRSZWdFeHA6
IG5ldyBSZWdFeHAoIihefDspKD86XFxzKikoIiArIG5hbWUgKyAiKSguKz8oPzo7fCQpKSIpCisg
ICAgICAgICAgICB9KQorICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fcHJvcGVydHlSZWZlcmVu
Y2VOYW1lID0gcHJvcGVydHlOYW1lc1swXTsKKyAgICB9CisKKyAgICAvLyBQdWJsaWMKKworICAg
IGdldCBlbGVtZW50KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50OworICAg
IH0KKworICAgIGdldCBzdHlsZSgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fc3R5bGU7
CisgICAgfQorCisgICAgZ2V0IHZhbHVlKCkKKyAgICB7CisgICAgICAgIC8vIEltcGxlbWVudGVk
IGJ5IHN1YmNsYXNzCisgICAgfQorCisgICAgc2V0IHZhbHVlKHZhbHVlKQorICAgIHsKKyAgICAg
ICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3MKKyAgICB9CisKKyAgICBnZXQgdW5pdHMoKQor
ICAgIHsKKyAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3MKKyAgICB9CisKKyAgICBz
ZXQgdW5pdHModW5pdCkKKyAgICB7CisgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNz
CisgICAgfQorCisgICAgZ2V0IHBsYWNlaG9sZGVyKCkKKyAgICB7CisgICAgICAgIC8vIEltcGxl
bWVudGVkIGJ5IHN1YmNsYXNzCisgICAgfQorCisgICAgc2V0IHBsYWNlaG9sZGVyKHRleHQpCisg
ICAgeworICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzcworICAgIH0KKworICAgIGdl
dCBzeW50aGVzaXplZFZhbHVlKCkKKyAgICB7CisgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1
YmNsYXNzCisgICAgfQorCisgICAgc2V0IGRvbnRVcGRhdGVTdHlsZVRleHQoZmxhZykKKyAgICB7
CisgICAgICAgIHRoaXMuX2RvbnRVcGRhdGVTdHlsZVRleHQgPSBmbGFnOworICAgIH0KKworICAg
IHNldCBtYXN0ZXJQcm9wZXJ0eShmbGFnKQorICAgIHsKKyAgICAgICAgdGhpcy5fbWFzdGVyUHJv
cGVydHkgPSBmbGFnOworICAgIH0KKworICAgIGdldCBtYXN0ZXJQcm9wZXJ0eSgpCisgICAgewor
ICAgICAgICByZXR1cm4gdGhpcy5fbWFzdGVyUHJvcGVydHk7CisgICAgfQorCisgICAgc2V0IG9w
dGlvbmFsUHJvcGVydHkoZmxhZykKKyAgICB7CisgICAgICAgIHRoaXMuX29wdGlvbmFsUHJvcGVy
dHkgPSBmbGFnOworICAgIH0KKworICAgIGdldCBvcHRpb25hbFByb3BlcnR5KCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiB0aGlzLl9vcHRpb25hbFByb3BlcnR5OworICAgIH0KKworICAgIHNldCBj
b2xvclByb3BlcnR5KGZsYWcpCisgICAgeworICAgICAgICB0aGlzLl9jb2xvclByb3BlcnR5ID0g
ZmxhZzsKKyAgICB9CisKKyAgICBnZXQgY29sb3JQcm9wZXJ0eSgpCisgICAgeworICAgICAgICBy
ZXR1cm4gdGhpcy5fY29sb3JQcm9wZXJ0eTsKKyAgICB9CisKKyAgICBnZXQgcHJvcGVydHlSZWZl
cmVuY2VOYW1lKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9wcm9wZXJ0eVJlZmVyZW5j
ZU5hbWU7CisgICAgfQorCisgICAgc2V0IHByb3BlcnR5UmVmZXJlbmNlTmFtZShuYW1lKQorICAg
IHsKKyAgICAgICAgaWYgKCFuYW1lIHx8ICFuYW1lLmxlbmd0aCkKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICB0aGlzLl9wcm9wZXJ0eVJlZmVyZW5jZU5hbWUgPSBuYW1lOworICAgIH0K
KworICAgIHNldCBkaXNhYmxlZChmbGFnKQorICAgIHsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5j
bGFzc0xpc3QudG9nZ2xlKCJkaXNhYmxlZCIsIGZsYWcpOworICAgICAgICAvLyB0aGlzLl9lbGVt
ZW50LnRhYkluZGV4ID0gZmxhZyA/IC0xIDogbnVsbDsKKyAgICB9CisKKyAgICBnZXQgZGlzYWJs
ZWQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmNvbnRh
aW5zKCJkaXNhYmxlZCIpOworICAgIH0KKworICAgIHVwZGF0ZShzdHlsZSkKKyAgICB7CisgICAg
ICAgIGlmICh0aGlzLl9pZ25vcmVOZXh0VXBkYXRlKSB7CisgICAgICAgICAgICB0aGlzLl9pZ25v
cmVOZXh0VXBkYXRlID0gZmFsc2U7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICBpZiAoc3R5bGUpCisgICAgICAgICAgICB0aGlzLl9zdHlsZSA9IHN0eWxlOworCisg
ICAgICAgIGlmICghdGhpcy5fc3R5bGUgfHwgIXRoaXMuX3ZhbHVlUmVnRXhwKQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX3VwZGF0ZWRWYWx1ZXMgPSB7fTsKKyAgICAgICAg
dmFyIGNvbmZsaWN0aW5nVmFsdWVzID0gZmFsc2U7CisgICAgICAgIHZhciBwcm9wZXJ0eU1pc3Np
bmcgPSBmYWxzZTsKKworICAgICAgICBmb3IgKHZhciBwcm9wZXJ0eUluZm8gb2YgdGhpcy5fcHJv
cGVydHlJbmZvTGlzdCkgeworICAgICAgICAgICAgdmFyIHByb3BlcnR5ID0gdGhpcy5fc3R5bGUu
cHJvcGVydHlGb3JOYW1lKHByb3BlcnR5SW5mby5uYW1lLCB0cnVlKTsKKyAgICAgICAgICAgIHBy
b3BlcnR5TWlzc2luZyA9ICFwcm9wZXJ0eTsKKworICAgICAgICAgICAgaWYgKHByb3BlcnR5TWlz
c2luZyAmJiB0aGlzLl9zdHlsZS5ub2RlU3R5bGVzKQorICAgICAgICAgICAgICAgIHByb3BlcnR5
ID0gdGhpcy5fc3R5bGUubm9kZVN0eWxlcy5jb21wdXRlZFN0eWxlLnByb3BlcnR5Rm9yTmFtZShw
cm9wZXJ0eUluZm8ubmFtZSk7CisKKyAgICAgICAgICAgIGlmICghcHJvcGVydHkpCisgICAgICAg
ICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIHZhciBzaG9ydGhhbmQgPSBwcm9wZXJ0
eS5yZWxhdGVkU2hvcnRoYW5kUHJvcGVydHk7CisgICAgICAgICAgICBpZiAoIXByb3BlcnR5TWlz
c2luZyAmJiBwcm9wZXJ0eS5hbm9ueW1vdXMgJiYgc2hvcnRoYW5kKSB7CisgICAgICAgICAgICAg
ICAgdmFyIHRleHQgPSAiIjsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBsb25naGFuZCBvZiBz
aG9ydGhhbmQucmVsYXRlZExvbmdoYW5kUHJvcGVydGllcykgeworICAgICAgICAgICAgICAgICAg
ICBpZiAoIWxvbmdoYW5kLmFub255bW91cykKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworCisgICAgICAgICAgICAgICAgICAgIHRleHQgKz0gbG9uZ2hhbmQuc3ludGhlc2l6ZWRU
ZXh0OworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmICghdGV4dC5sZW5n
dGgpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgdGhpcy5f
c3R5bGUudGV4dCA9IHRoaXMuX3N0eWxlLnRleHQucmVwbGFjZShzaG9ydGhhbmQudGV4dCwgdGV4
dCk7CisgICAgICAgICAgICB9CisKKworICAgICAgICAgICAgdmFyIG5ld1ZhbHVlcyA9IHRoaXMu
Z2V0VmFsdWVzRnJvbVRleHQocHJvcGVydHkudmFsdWUsIHByb3BlcnR5TWlzc2luZyk7CisKKyAg
ICAgICAgICAgIGlmICh0aGlzLl91cGRhdGVkVmFsdWVzLnBsYWNlaG9sZGVyICYmIHRoaXMuX3Vw
ZGF0ZWRWYWx1ZXMucGxhY2Vob2xkZXIgIT09IG5ld1ZhbHVlcy5wbGFjZWhvbGRlcikKKyAgICAg
ICAgICAgICAgICBjb25mbGljdGluZ1ZhbHVlcyA9IHRydWU7CisKKyAgICAgICAgICAgIGlmICgh
dGhpcy5fdXBkYXRlZFZhbHVlcy5wbGFjZWhvbGRlcikKKyAgICAgICAgICAgICAgICB0aGlzLl91
cGRhdGVkVmFsdWVzID0gbmV3VmFsdWVzOworCisgICAgICAgICAgICBpZiAoY29uZmxpY3RpbmdW
YWx1ZXMpIHsKKyAgICAgICAgICAgICAgICB0aGlzLl9zcGVjaWFsUHJvcGVydHlQbGFjZWhvbGRl
ci50ZXh0Q29udGVudCA9ICIoIiArIFdlYkluc3BlY3Rvci5VSVN0cmluZygibXVsdGlwbGUiKSAr
ICIpIjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
CisgICAgICAgIGlmICh0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygibXVsdGlwbGUi
KSkKKyAgICAgICAgICAgIHRoaXMuX3NwZWNpYWxQcm9wZXJ0eVBsYWNlaG9sZGVyLmhpZGRlbiA9
ICFjb25mbGljdGluZ1ZhbHVlczsKKworICAgICAgICB0aGlzLnVwZGF0ZUVkaXRvclZhbHVlcyh0
aGlzLl91cGRhdGVkVmFsdWVzKTsKKyAgICB9CisKKyAgICB1cGRhdGVFZGl0b3JWYWx1ZXModXBk
YXRlZFZhbHVlcykKKyAgICB7CisgICAgICAgIHRoaXMudmFsdWUgPSB1cGRhdGVkVmFsdWVzLnZh
bHVlOworICAgICAgICB0aGlzLnVuaXRzID0gdXBkYXRlZFZhbHVlcy51bml0czsKKyAgICAgICAg
dGhpcy5wbGFjZWhvbGRlciA9IHVwZGF0ZWRWYWx1ZXMucGxhY2Vob2xkZXI7CisKKyAgICAgICAg
dGhpcy5fbGFzdFZhbHVlID0gdGhpcy5zeW50aGVzaXplZFZhbHVlOworICAgICAgICB0aGlzLmRp
c2FibGVkID0gZmFsc2U7CisgICAgfQorCisgICAgbW9kaWZ5UHJvcGVydHlUZXh0KHRleHQsIHZh
bHVlKQorICAgIHsKKyAgICAgICAgdmFyIHRyaW1tZWRUZXh0ID0gdGV4dC50cmltUmlnaHQoKTsK
KworICAgICAgICBmb3IgKHZhciBwcm9wZXJ0eSBvZiB0aGlzLl9wcm9wZXJ0eUluZm9MaXN0KSB7
CisgICAgICAgICAgICBpZiAocHJvcGVydHkudGV4dENvbnRhaW5zTmFtZVJlZ0V4cC50ZXN0KHRl
eHQpKQorICAgICAgICAgICAgICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UocHJvcGVydHkucmVwbGFj
ZW1lbnRSZWdFeHAsIHZhbHVlID8gIiQxJDI6ICIgKyB2YWx1ZSArICI7IiA6ICIkMSIpOworICAg
ICAgICAgICAgZWxzZSBpZiAodmFsdWUpIHsKKyAgICAgICAgICAgICAgICBpZiAodHJpbW1lZFRl
eHQudHJpbUxlZnQoKS5sZW5ndGggJiYgIXRyaW1tZWRUZXh0LmVuZHNXaXRoKCI7IikpCisgICAg
ICAgICAgICAgICAgICAgIHRleHQgKz0gIjsiOworCisgICAgICAgICAgICAgICAgdGV4dCArPSBw
cm9wZXJ0eS5uYW1lICsgIjogIiArIHZhbHVlICsgIjsiOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisKKyAgICAgICAgcmV0dXJuIHRleHQ7CisgICAgfQorCisgICAgZ2V0VmFsdWVzRnJvbVRl
eHQodGV4dCwgcHJvcGVydHlNaXNzaW5nKQorICAgIHsKKyAgICAgICAgdmFyIG1hdGNoID0gdGhp
cy5fdmFsdWVSZWdFeHAuZXhlYyh0ZXh0KTsKKyAgICAgICAgdmFyIHBsYWNlaG9sZGVyID0gbWF0
Y2ggPyBtYXRjaFsxXSA6IHRleHQ7CisgICAgICAgIHZhciB2YWx1ZSA9ICFwcm9wZXJ0eU1pc3Np
bmcgPyBwbGFjZWhvbGRlciA6ICh0aGlzLnZhbHVlSXNLZXl3b3JkKHRleHQpID8gdGV4dCA6IG51
bGwpOworICAgICAgICB2YXIgdW5pdHMgPSBtYXRjaCA/IG1hdGNoWzJdIDogbnVsbDsKKworICAg
ICAgICByZXR1cm4ge3ZhbHVlLCB1bml0cywgcGxhY2Vob2xkZXIsIHByb3BlcnR5TWlzc2luZ307
CisgICAgfQorCisgICAgZ2V0IHByb3BlcnR5TWlzc2luZygpCisgICAgeworICAgICAgICByZXR1
cm4gdGhpcy5fdXBkYXRlZFZhbHVlcyAmJiB0aGlzLl91cGRhdGVkVmFsdWVzLnByb3BlcnR5TWlz
c2luZzsKKyAgICB9CisKKyAgICB2YWx1ZUlzQ29tcGF0aWJsZSh2YWx1ZSkKKyAgICB7CisgICAg
ICAgIHJldHVybiB2YWx1ZSAmJiAodGhpcy5fdmFsdWVSZWdFeHAgJiYgdGhpcy5fdmFsdWVSZWdF
eHAudGVzdCh2YWx1ZSkgfHwgdGhpcy52YWx1ZUlzS2V5d29yZCh2YWx1ZSkpOworICAgIH0KKwor
ICAgIHZhbHVlSXNLZXl3b3JkKHZhbHVlKSB7CisgICAgICAgIGlmICghdGhpcy5fcG9zc2libGVW
YWx1ZXMpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgdmFsdWUgPSB2YWx1
ZSB8fCB0aGlzLnZhbHVlOworICAgICAgICBpZiAoT2JqZWN0LmtleXModGhpcy5fcG9zc2libGVW
YWx1ZXMuYmFzaWMpLmluY2x1ZGVzKHZhbHVlKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
CisgICAgICAgIHJldHVybiB0aGlzLl92YWx1ZUlzQWR2YW5jZWRLZXl3b3JkKHZhbHVlKTsKKyAg
ICB9CisKKyAgICB2YWx1ZUlzVW5pdCh1bml0KQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9w
b3NzaWJsZVVuaXRzKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHVuaXQg
PSB1bml0IHx8IHRoaXMudW5pdHM7CisgICAgICAgIGlmICh0aGlzLl9wb3NzaWJsZVVuaXRzLmJh
c2ljLmluY2x1ZGVzKHVuaXQpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAg
cmV0dXJuIHRoaXMuX3ZhbHVlSXNBZHZhbmNlZFVuaXQodW5pdCk7CisgICAgfQorCisgICAgLy8g
UHJpdmF0ZQorCisgICAgX3ZhbHVlSXNBZHZhbmNlZEtleXdvcmQodmFsdWUpCisgICAgeworICAg
ICAgICByZXR1cm4gdGhpcy5fcG9zc2libGVWYWx1ZXMuYWR2YW5jZWQgJiYgT2JqZWN0LmtleXMo
dGhpcy5fcG9zc2libGVWYWx1ZXMuYWR2YW5jZWQpLmluY2x1ZGVzKHZhbHVlIHx8IHRoaXMudmFs
dWUpOworICAgIH0KKworICAgIF92YWx1ZUlzQWR2YW5jZWRVbml0KHVuaXQpCisgICAgeworICAg
ICAgICByZXR1cm4gdGhpcy5fcG9zc2libGVVbml0cy5hZHZhbmNlZCAmJiB0aGlzLl9wb3NzaWJs
ZVVuaXRzLmFkdmFuY2VkLmluY2x1ZGVzKHVuaXQgfHwgdGhpcy51bml0cyk7CisgICAgfQorCisg
ICAgX2tleUZvcktleXdvcmQodmFsdWUpCisgICAgeworICAgICAgICBpZiAoIXZhbHVlIHx8ICF0
aGlzLl9wb3NzaWJsZVZhbHVlcykKKyAgICAgICAgICAgIHJldHVybiBudWxsOworCisgICAgICAg
IHJldHVybiB0aGlzLl9wb3NzaWJsZVZhbHVlcy5iYXNpY1t2YWx1ZV0gfHwgKHRoaXMuX3Bvc3Np
YmxlVmFsdWVzLmFkdmFuY2VkICYmIHRoaXMuX3Bvc3NpYmxlVmFsdWVzLmFkdmFuY2VkW3ZhbHVl
XSkgfHwgbnVsbDsKKyAgICB9CisKKyAgICBfdmFsdWVEaWRDaGFuZ2UoKQorICAgIHsKKyAgICAg
ICAgdmFyIHZhbHVlID0gdGhpcy5zeW50aGVzaXplZFZhbHVlOworICAgICAgICBpZiAodmFsdWUg
PT09IHRoaXMuX2xhc3RWYWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAg
ICBpZiAodGhpcy5fc3R5bGUgJiYgIXRoaXMuX2RvbnRVcGRhdGVTdHlsZVRleHQpIHsKKyAgICAg
ICAgICAgIHZhciBuZXdUZXh0ID0gdGhpcy5tb2RpZnlQcm9wZXJ0eVRleHQodGhpcy5fc3R5bGUu
dGV4dCwgdmFsdWUpOworICAgICAgICAgICAgdGhpcy5fc3R5bGUudGV4dCA9IG5ld1RleHQ7CisK
KyAgICAgICAgICAgIGlmICghbmV3VGV4dC5sZW5ndGgpCisgICAgICAgICAgICAgICAgdGhpcy5f
c3R5bGUudXBkYXRlKG51bGwsIG51bGwsIHRoaXMuX3N0eWxlLnN0eWxlU2hlZXRUZXh0UmFuZ2Up
OworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fbGFzdFZhbHVlID0gdmFsdWU7CisgICAgICAg
IHRoaXMuX2lnbm9yZU5leHRVcGRhdGUgPSB0cnVlOworICAgICAgICB0aGlzLl9zcGVjaWFsUHJv
cGVydHlQbGFjZWhvbGRlci5oaWRkZW4gPSB0cnVlOworCisgICAgICAgIHRoaXMuZGlzcGF0Y2hF
dmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLkV2
ZW50LlZhbHVlRGlkQ2hhbmdlKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAg
X3RpdGxlRWxlbWVudFByZXBhcmVGb3JDbGljayhldmVudCkKKyAgICB7CisgICAgICAgIHRoaXMu
X3RpdGxlRWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKCJwcm9wZXJ0eS1yZWZlcmVuY2UtaW5mbyIs
IGV2ZW50LnR5cGUgPT09ICJrZXlkb3duIiAmJiBldmVudC5hbHRLZXkpOworICAgIH0KKworICAg
IF90aXRsZUVsZW1lbnRNb3VzZU92ZXIoZXZlbnQpCisgICAgeworICAgICAgICB0aGlzLl90aXRs
ZUVsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgicHJvcGVydHktcmVmZXJlbmNlLWluZm8iLCBldmVu
dC5hbHRLZXkpOworICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIiwg
dGhpcy5fYm91bmRUaXRsZUVsZW1lbnRQcmVwYXJlRm9yQ2xpY2spOworICAgICAgICBkb2N1bWVu
dC5hZGRFdmVudExpc3RlbmVyKCJrZXl1cCIsIHRoaXMuX2JvdW5kVGl0bGVFbGVtZW50UHJlcGFy
ZUZvckNsaWNrKTsKKyAgICB9CisKKyAgICBfdGl0bGVFbGVtZW50TW91c2VPdXQoKQorICAgIHsK
KyAgICAgICAgdGhpcy5fdGl0bGVFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoInByb3BlcnR5LXJl
ZmVyZW5jZS1pbmZvIik7CisgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoImtl
eWRvd24iLCB0aGlzLl9ib3VuZFRpdGxlRWxlbWVudFByZXBhcmVGb3JDbGljayk7CisgICAgICAg
IGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoImtleXVwIiwgdGhpcy5fYm91bmRUaXRsZUVs
ZW1lbnRQcmVwYXJlRm9yQ2xpY2spOworICAgIH0KKworICAgIF90aXRsZUVsZW1lbnRDbGljayhl
dmVudCkKKyAgICB7CisgICAgICAgIGlmIChldmVudC5hbHRLZXkpCisgICAgICAgICAgICB0aGlz
Ll9zaG93UHJvcGVydHlJbmZvUG9wb3ZlcigpOworICAgIH0KKworICAgIF9oYXNNdWx0aXBsZUNv
bmZsaWN0aW5nVmFsdWVzKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50LmNs
YXNzTGlzdC5jb250YWlucygibXVsdGlwbGUiKSAmJiAhdGhpcy5fc3BlY2lhbFByb3BlcnR5UGxh
Y2Vob2xkZXIuaGlkZGVuOworICAgIH0KKworICAgIF9zaG93UHJvcGVydHlJbmZvUG9wb3Zlcigp
CisgICAgeworICAgICAgICB2YXIgcHJvcGVydHlJbmZvRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoInAiKTsKKyAgICAgICAgcHJvcGVydHlJbmZvRWxlbWVudC5jbGFzc0xpc3QuYWRk
KCJ2aXN1YWwtc3R5bGUtcHJvcGVydHktaW5mby1wb3BvdmVyIik7CisKKyAgICAgICAgdmFyIHBy
b3BlcnR5SW5mb1RpdGxlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImgzIik7Cisg
ICAgICAgIHByb3BlcnR5SW5mb1RpdGxlRWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVh
dGVUZXh0Tm9kZSh0aGlzLl9wcm9wZXJ0eVJlZmVyZW5jZU5hbWUpKTsKKyAgICAgICAgcHJvcGVy
dHlJbmZvRWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0eUluZm9UaXRsZUVsZW1lbnQpOworCisg
ICAgICAgIHByb3BlcnR5SW5mb0VsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4
dE5vZGUoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLnByb3BlcnR5UmVmZXJl
bmNlSW5mb1t0aGlzLl9wcm9wZXJ0eVJlZmVyZW5jZU5hbWVdKSk7CisKKyAgICAgICAgdmFyIGJv
dW5kcyA9IFdlYkluc3BlY3Rvci5SZWN0LnJlY3RGcm9tQ2xpZW50UmVjdCh0aGlzLl90aXRsZUVs
ZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpOworICAgICAgICB2YXIgcG9wb3ZlciA9IG5l
dyBXZWJJbnNwZWN0b3IuUG9wb3Zlcih0aGlzKTsKKyAgICAgICAgcG9wb3Zlci5jb250ZW50ID0g
cHJvcGVydHlJbmZvRWxlbWVudDsKKyAgICAgICAgcG9wb3Zlci5wcmVzZW50KGJvdW5kcy5wYWQo
MiksIFtXZWJJbnNwZWN0b3IuUmVjdEVkZ2UuTUlOX1ldKTsKKyAgICB9Cit9OworCitXZWJJbnNw
ZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5FdmVudCA9IHsKKyAgICBWYWx1ZURpZENo
YW5nZTogInZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItdmFsdWUtY2hhbmdlZCIKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3Vh
bFN0eWxlVGFiYmVkUHJvcGVydGllc0NvbnRyb2xsZXIuY3NzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVUYWJiZWRQcm9wZXJ0aWVzQ29udHJv
bGxlci5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uODRkYzYzOTQwNzJlOTA5NjFlZTBlZDY0NzZhNGVhYWE3NWY1
M2QwNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1Zpc3VhbFN0eWxlVGFiYmVkUHJvcGVydGllc0NvbnRyb2xsZXIuY3NzCkBAIC0w
LDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisudmlzdWFsLXN0eWxlLXRhYmJlZC1wcm9wZXJ0aWVz
LWNvbnRyb2xsZXIgfiA6bm90KC52aXNpYmxlKSB7CisgICAgdmlzaWJpbGl0eTogaGlkZGVuOwor
ICAgIGhlaWdodDogMDsKK30KKworLnZpc3VhbC1zdHlsZS10YWJiZWQtcHJvcGVydGllcy1jb250
cm9sbGVyID4gLnZpc3VhbC1zdHlsZS10YWJiZWQtcHJvcGVydGllcy1jb250cm9sbGVyLWNvbnRh
aW5lciB7CisgICAgbWFyZ2luOiAwIGF1dG87Cit9CisKKy52aXN1YWwtc3R5bGUtdGFiYmVkLXBy
b3BlcnRpZXMtY29udHJvbGxlciA+IC52aXN1YWwtc3R5bGUtdGFiYmVkLXByb3BlcnRpZXMtY29u
dHJvbGxlci1jb250YWluZXIgPiBidXR0b24geworICAgIG1hcmdpbjogMCAycHggMnB4OworICAg
IGJvcmRlci1yYWRpdXM6IDNweDsKKyAgICBib3JkZXItd2lkdGg6IDAgMXB4OworICAgIGJvcmRl
ci1jb2xvcjogdHJhbnNwYXJlbnQ7CisgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7
Cit9CisKKy52aXN1YWwtc3R5bGUtdGFiYmVkLXByb3BlcnRpZXMtY29udHJvbGxlciA+IC52aXN1
YWwtc3R5bGUtdGFiYmVkLXByb3BlcnRpZXMtY29udHJvbGxlci1jb250YWluZXIgPiBidXR0b24u
c2VsZWN0ZWQgeworICAgIGNvbG9yOiB3aGl0ZTsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2Jh
KDM0LCAxMzEsIDI0NiwgMSk7Cit9CisKKy52aXN1YWwtc3R5bGUtdGFiYmVkLXByb3BlcnRpZXMt
Y29udHJvbGxlciA+IC52aXN1YWwtc3R5bGUtdGFiYmVkLXByb3BlcnRpZXMtY29udHJvbGxlci1j
b250YWluZXIgPiBidXR0b246bm90KC5zZWxlY3RlZCk6aG92ZXIgeworICAgIGNvbG9yOiB3aGl0
ZTsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDM0LCAxMzEsIDI0NiwgMC41KTsKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3Vh
bFN0eWxlVGFiYmVkUHJvcGVydGllc0NvbnRyb2xsZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZVRhYmJlZFByb3BlcnRpZXNDb250cm9s
bGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjVhNmU2YWZiNDc2OGJlZmZlY2E2MGU1ZDQ0MjRiZjdlYTgxMWJm
NjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9WaXN1YWxTdHlsZVRhYmJlZFByb3BlcnRpZXNDb250cm9sbGVyLmpzCkBAIC0wLDAg
KzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCitXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVUYWJiZWRQcm9w
ZXJ0aWVzQ29udHJvbGxlciA9IGNsYXNzIFZpc3VhbFN0eWxlVGFiYmVkUHJvcGVydGllc0NvbnRy
b2xsZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3cKK3sKKyAgICBjb25z
dHJ1Y3Rvcih0YWJNYXApCisgICAgeworICAgICAgICBzdXBlcigpOworCisgICAgICAgIHRoaXMu
X2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgidmlzdWFsLXN0eWxlLXRhYmJlZC1wcm9wZXJ0aWVzLWNv
bnRyb2xsZXIiKTsKKworICAgICAgICB0aGlzLl9jb250cm9sbGVyQ29udGFpbmVyID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIHRoaXMuX2NvbnRyb2xsZXJDb250YWlu
ZXIuY2xhc3NMaXN0LmFkZCgidmlzdWFsLXN0eWxlLXRhYmJlZC1wcm9wZXJ0aWVzLWNvbnRyb2xs
ZXItY29udGFpbmVyIik7CisKKyAgICAgICAgdGhpcy5fdGFiTWFwID0gdGFiTWFwOworICAgICAg
ICB0aGlzLl90YWJCdXR0b25zID0gW107CisKKyAgICAgICAgZm9yICh2YXIga2V5IGluIHRoaXMu
X3RhYk1hcCkgeworICAgICAgICAgICAgdmFyIGJ1dHRvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImJ1dHRvbiIpOworICAgICAgICAgICAgYnV0dG9uLmlkID0ga2V5OworICAgICAgICAgICAg
YnV0dG9uLnRleHRDb250ZW50ID0gdGhpcy5fdGFiTWFwW2tleV0udGl0bGU7CisgICAgICAgICAg
ICBidXR0b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9oYW5kbGVCdXR0b25DbGlj
a2VkLmJpbmQodGhpcykpOworCisgICAgICAgICAgICB0aGlzLl9jb250cm9sbGVyQ29udGFpbmVy
LmFwcGVuZENoaWxkKGJ1dHRvbik7CisgICAgICAgICAgICB0aGlzLl90YWJCdXR0b25zLnB1c2go
YnV0dG9uKTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBmaXJzdEJ1dHRvbiA9IHRoaXMuX3Rh
YkJ1dHRvbnNbMF07CisgICAgICAgIGZpcnN0QnV0dG9uLmNsYXNzTGlzdC5hZGQoInNlbGVjdGVk
Iik7CisgICAgICAgIHRoaXMuX3RhYk1hcFtmaXJzdEJ1dHRvbi5pZF0uZWxlbWVudC5jbGFzc0xp
c3QuYWRkKCJ2aXNpYmxlIik7CisKKyAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0
aGlzLl9jb250cm9sbGVyQ29udGFpbmVyKTsKKyAgICB9CisKKyAgICAvLyBQcml2YXRlCisKKyAg
ICBfaGFuZGxlQnV0dG9uQ2xpY2tlZChldmVudCkKKyAgICB7CisgICAgICAgIGZvciAodmFyIGl0
ZW0gb2YgdGhpcy5fdGFiQnV0dG9ucykgeworICAgICAgICAgICAgdmFyIHNlbGVjdGVkID0gaXRl
bSA9PT0gZXZlbnQudGFyZ2V0OworCisgICAgICAgICAgICBpdGVtLmNsYXNzTGlzdC50b2dnbGUo
InNlbGVjdGVkIiwgc2VsZWN0ZWQpOworCisgICAgICAgICAgICB2YXIgdGFiID0gdGhpcy5fdGFi
TWFwW2l0ZW0uaWRdOworICAgICAgICAgICAgdGFiLmVsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgi
dmlzaWJsZSIsIHNlbGVjdGVkKTsKKworICAgICAgICAgICAgZm9yICh2YXIgcHJvcGVydHlFZGl0
b3Igb2YgdGFiLnByb3BlcnRpZXMpCisgICAgICAgICAgICAgICAgcHJvcGVydHlFZGl0b3IudXBk
YXRlKCk7CisgICAgICAgIH0KKyAgICB9Cit9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258330</attachid>
            <date>2015-08-05 18:19:32 -0700</date>
            <delta_ts>2015-08-06 23:15:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147576-20150805181924.patch</filename>
            <type>text/plain</type>
            <size>37903</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IGMxZjQwNGQ3ZGIzN2NiOTJiZDY0YmU5NTAzYmU0
OGUyMDAwNWVkZGMuLjA3MjBmMDIyYzc1ZGE1NjA1ZmIyZGVhNDQ2YzFjYTA4YjNkMjFlNzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg5IEBACisyMDE1LTA4LTA1ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBB
ZGQgdmlzdWFsIGVkaXRvcnMgZm9yIENTUyBwcm9wZXJ0aWVzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDc1NzYKKworICAgICAgICBBZGRlZCBwYXJl
bnQgY2xhc3MgZm9yIHByb3BlcnR5IGVkaXRvcnMgaW4gdGhlIFZpc3VhbCBzdHlsZQorICAgICAg
ICBkZXRhaWxzIHBhbmVsIGluIHRoZSBDU1Mgc2lkZWJhci4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFs
U3R5bGVQcm9wZXJ0eUNvbWJpbmVyLmpzOiBBZGRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5W
aXN1YWxTdHlsZVByb3BlcnR5Q29tYmluZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3Vh
bFN0eWxlUHJvcGVydHlDb21iaW5lci5wcm90b3R5cGUuZ2V0IHN0eWxlKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5Q29tYmluZXIucHJvdG90eXBlLmdldCBzeW50
aGVzaXplZFZhbHVlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5
Q29tYmluZXIucHJvdG90eXBlLm1vZGlmeVByb3BlcnR5VGV4dCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUNvbWJpbmVyLnByb3RvdHlwZS51cGRhdGUpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlDb21iaW5lci5wcm90b3R5cGUu
dXBkYXRlVmFsdWVzRnJvbVRleHQudXBkYXRlQ29tcGF0aWJsZUVkaXRvcik6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUNvbWJpbmVyLnByb3RvdHlwZS51cGRhdGVW
YWx1ZXNGcm9tVGV4dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0
eUNvbWJpbmVyLnByb3RvdHlwZS5wcm9wZXJ0eU1pc3NpbmcpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlZpc3VhbFN0eWxlUHJvcGVydHlDb21iaW5lci5wcm90b3R5cGUuX21hcmtFZGl0b3JzKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5Q29tYmluZXIucHJvdG90
eXBlLl9oYW5kbGVQcm9wZXJ0eUVkaXRvclZhbHVlQ2hhbmdlZCk6CisgICAgICAgICogVXNlcklu
dGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLmNzczogQWRkZWQuCisgICAg
ICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lcik6CisgICAgICAgICgudmlzdWFs
LXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdGl0bGUp
OgorICAgICAgICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIgPiAudmlzdWFsLXN0
eWxlLXByb3BlcnR5LXRpdGxlID4gLnByb3BlcnR5LXJlZmVyZW5jZS1pbmZvKToKKyAgICAgICAg
KC52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLmRpc2FibGVkID4gLnZpc3VhbC1zdHls
ZS1wcm9wZXJ0eS10aXRsZSA+IDpub3QoLnByb3BlcnR5LXJlZmVyZW5jZS1pbmZvKSk6CisgICAg
ICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lciA+IC52aXN1YWwtc3R5bGUtcHJv
cGVydHktdmFsdWUtY29udGFpbmVyKToKKyAgICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHkt
Y29udGFpbmVyLmRpc2FibGVkID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWlu
ZXIpOgorICAgICAgICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIgPiAudmlzdWFs
LXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciBzZWxlY3QpOgorICAgICAgICAoLnZpc3Vh
bC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVl
LWNvbnRhaW5lciBpbnB1dCk6CisgICAgICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRh
aW5lci5kaXNhYmxlZCA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyIGlu
cHV0KToKKyAgICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLmxheW91dC1y
ZXZlcnNlZCA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdGl0bGUpOgorICAgICAgICAoLnZpc3Vh
bC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVl
LWNvbnRhaW5lciA+IC52aXN1YWwtc3R5bGUtc3BlY2lhbC1wcm9wZXJ0eS1wbGFjZWhvbGRlcik6
CisgICAgICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWluZm8tcG9wb3Zlcik6CisgICAgICAg
ICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWluZm8tcG9wb3ZlciA+IGgzKToKKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IuanM6IEFkZGVkLgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IucGFyc2VWYWx1
ZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IucHJvdG90eXBl
LmdldCBlbGVtZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5
RWRpdG9yLnByb3RvdHlwZS5nZXQgc3R5bGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3Vh
bFN0eWxlUHJvcGVydHlFZGl0b3IucHJvdG90eXBlLmdldCB2YWx1ZSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5wcm90b3R5cGUuc2V0IHZhbHVlKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnByb3RvdHlw
ZS5nZXQgdW5pdHMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlF
ZGl0b3IucHJvdG90eXBlLnNldCB1bml0cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFs
U3R5bGVQcm9wZXJ0eUVkaXRvci5wcm90b3R5cGUuZ2V0IHBsYWNlaG9sZGVyKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnByb3RvdHlwZS5zZXQgcGxh
Y2Vob2xkZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0
b3IucHJvdG90eXBlLmdldCBzeW50aGVzaXplZFZhbHVlKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnByb3RvdHlwZS5zZXQgZG9udFVwZGF0ZVN0eWxl
VGV4dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5w
cm90b3R5cGUuc2V0IG1hc3RlclByb3BlcnR5KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1
YWxTdHlsZVByb3BlcnR5RWRpdG9yLnByb3RvdHlwZS5nZXQgbWFzdGVyUHJvcGVydHkpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IucHJvdG90eXBlLnNl
dCBvcHRpb25hbFByb3BlcnR5KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVBy
b3BlcnR5RWRpdG9yLnByb3RvdHlwZS5nZXQgb3B0aW9uYWxQcm9wZXJ0eSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5wcm90b3R5cGUuc2V0IGNvbG9y
UHJvcGVydHkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0
b3IucHJvdG90eXBlLmdldCBjb2xvclByb3BlcnR5KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5W
aXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnByb3RvdHlwZS5nZXQgcHJvcGVydHlSZWZlcmVuY2VO
YW1lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnBy
b3RvdHlwZS5zZXQgcHJvcGVydHlSZWZlcmVuY2VOYW1lKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnByb3RvdHlwZS5zZXQgZGlzYWJsZWQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IucHJvdG90eXBlLmdl
dCBkaXNhYmxlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVk
aXRvci5wcm90b3R5cGUudXBkYXRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHls
ZVByb3BlcnR5RWRpdG9yLnByb3RvdHlwZS51cGRhdGVFZGl0b3JWYWx1ZXMpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IucHJvdG90eXBlLm1vZGlmeVBy
b3BlcnR5VGV4dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVk
aXRvci5wcm90b3R5cGUuZ2V0VmFsdWVzRnJvbVRleHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IucHJvdG90eXBlLnByb3BlcnR5TWlzc2luZyk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5wcm90b3R5cGUu
dmFsdWVJc0NvbXBhdGlibGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJv
cGVydHlFZGl0b3IucHJvdG90eXBlLnZhbHVlSXNLZXl3b3JkKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnByb3RvdHlwZS52YWx1ZUlzVW5pdCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5wcm90b3R5cGUu
X3ZhbHVlSXNBZHZhbmNlZEtleXdvcmQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0
eWxlUHJvcGVydHlFZGl0b3IucHJvdG90eXBlLl92YWx1ZUlzQWR2YW5jZWRVbml0KToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnByb3RvdHlwZS5fa2V5
Rm9yS2V5d29yZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVk
aXRvci5wcm90b3R5cGUuX3ZhbHVlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5W
aXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnByb3RvdHlwZS5fdGl0bGVFbGVtZW50UHJlcGFyZUZv
ckNsaWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9y
LnByb3RvdHlwZS5fdGl0bGVFbGVtZW50TW91c2VPdmVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnByb3RvdHlwZS5fdGl0bGVFbGVtZW50TW91c2VP
dXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IucHJv
dG90eXBlLl90aXRsZUVsZW1lbnRDbGljayk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFs
U3R5bGVQcm9wZXJ0eUVkaXRvci5wcm90b3R5cGUuX2hhc011bHRpcGxlQ29uZmxpY3RpbmdWYWx1
ZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IucHJv
dG90eXBlLl9zaG93UHJvcGVydHlJbmZvUG9wb3Zlcik6CisgICAgICAgICogVXNlckludGVyZmFj
ZS9WaWV3cy9WaXN1YWxTdHlsZVRhYmJlZFByb3BlcnRpZXNDb250cm9sbGVyLmNzczogQWRkZWQu
CisgICAgICAgICgudmlzdWFsLXN0eWxlLXRhYmJlZC1wcm9wZXJ0aWVzLWNvbnRyb2xsZXIgfiA6
bm90KC52aXNpYmxlKSk6CisgICAgICAgICgudmlzdWFsLXN0eWxlLXRhYmJlZC1wcm9wZXJ0aWVz
LWNvbnRyb2xsZXIgPiAudmlzdWFsLXN0eWxlLXRhYmJlZC1wcm9wZXJ0aWVzLWNvbnRyb2xsZXIt
Y29udGFpbmVyKToKKyAgICAgICAgKC52aXN1YWwtc3R5bGUtdGFiYmVkLXByb3BlcnRpZXMtY29u
dHJvbGxlciA+IC52aXN1YWwtc3R5bGUtdGFiYmVkLXByb3BlcnRpZXMtY29udHJvbGxlci1jb250
YWluZXIgPiBidXR0b24pOgorICAgICAgICAoLnZpc3VhbC1zdHlsZS10YWJiZWQtcHJvcGVydGll
cy1jb250cm9sbGVyID4gLnZpc3VhbC1zdHlsZS10YWJiZWQtcHJvcGVydGllcy1jb250cm9sbGVy
LWNvbnRhaW5lciA+IGJ1dHRvbi5zZWxlY3RlZCk6CisgICAgICAgICgudmlzdWFsLXN0eWxlLXRh
YmJlZC1wcm9wZXJ0aWVzLWNvbnRyb2xsZXIgPiAudmlzdWFsLXN0eWxlLXRhYmJlZC1wcm9wZXJ0
aWVzLWNvbnRyb2xsZXItY29udGFpbmVyID4gYnV0dG9uOm5vdCguc2VsZWN0ZWQpOmhvdmVyKToK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlVGFiYmVkUHJvcGVydGll
c0NvbnRyb2xsZXIuanM6IEFkZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxl
VGFiYmVkUHJvcGVydGllc0NvbnRyb2xsZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3Vh
bFN0eWxlVGFiYmVkUHJvcGVydGllc0NvbnRyb2xsZXIucHJvdG90eXBlLl9oYW5kbGVCdXR0b25D
bGlja2VkKToKKwogMjAxNS0wOC0wNSAgTWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+
CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogUkVHUkVTU0lPTiAocjE4NzkwMCk6IEJyZWFrcG9p
bnQgY29udGV4dCBtZW51IGlzIGJyb2tlbiBpbiBEZWJ1Z2dlciB0YWIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlUHJvcGVy
dHlDb21iaW5lci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1Zpc3VhbFN0eWxlUHJvcGVydHlDb21iaW5lci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMDg0YTYwMDhjNTQz
YmExMGYzM2Y1ZmQ3NDhmMzg4ODc0NjQ0ZTY4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVQcm9wZXJ0eUNvbWJp
bmVyLmpzCkBAIC0wLDAgKzEsMTgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV2ViSW5zcGVjdG9yLlZpc3Vh
bFN0eWxlUHJvcGVydHlDb21iaW5lciA9IGNsYXNzIFZpc3VhbFN0eWxlUHJvcGVydHlDb21iaW5l
ciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKK3sKKyAgICBjb25zdHJ1Y3Rvcihwcm9wZXJ0
eU5hbWUsIHByb3BlcnR5RWRpdG9ycykKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CisKKyAgICAg
ICAgdGhpcy5fc3R5bGUgPSBudWxsOworICAgICAgICB0aGlzLl9wcm9wZXJ0eU5hbWUgPSBwcm9w
ZXJ0eU5hbWU7CisgICAgICAgIHRoaXMuX3Byb3BlcnR5RWRpdG9ycyA9IHByb3BlcnR5RWRpdG9y
cyB8fCBbXTsKKyAgICAgICAgdGhpcy5fcHJvcGVydHlNaXNzaW5nID0gZmFsc2U7CisKKyAgICAg
ICAgZm9yICh2YXIgZWRpdG9yIG9mIHRoaXMuX3Byb3BlcnR5RWRpdG9ycykgeworICAgICAgICAg
ICAgZWRpdG9yLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVy
dHlFZGl0b3IuRXZlbnQuVmFsdWVEaWRDaGFuZ2UsIHRoaXMuX2hhbmRsZVByb3BlcnR5RWRpdG9y
VmFsdWVDaGFuZ2VkLmJpbmQodGhpcykpOworICAgICAgICAgICAgZWRpdG9yLmRvbnRVcGRhdGVT
dHlsZVRleHQgPSB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fdGV4dENvbnRhaW5z
TmFtZVJlZ0V4cCA9IG5ldyBSZWdFeHAoIig/Oig/Ol58OylcXHMqIiArIHRoaXMuX3Byb3BlcnR5
TmFtZSArICJcXHMqOikiKTsKKyAgICAgICAgdGhpcy5fcmVwbGFjZW1lbnRSZWdFeHAgPSBuZXcg
UmVnRXhwKCIoXnw7KSg/OlxccyopKCIgKyB0aGlzLl9wcm9wZXJ0eU5hbWUgKyAiKSguKz8oPzo7
fCQpKSIpOworICAgICAgICB0aGlzLl92YWx1ZVJlZ0V4cCA9IC8oW15cc10rXCguK1wpfFteXHNd
KykoPzo7PykvZzsKKyAgICB9CisKKyAgICBnZXQgc3R5bGUoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHRoaXMuX3N0eWxlOworICAgIH0KKworICAgIGdldCBzeW50aGVzaXplZFZhbHVlKCkKKyAg
ICB7CisgICAgICAgIHZhciB2YWx1ZSA9ICIiOworICAgICAgICB2YXIgb25lRWRpdG9ySGFzVmFs
dWUgPSBmYWxzZTsKKworICAgICAgICBmb3IgKHZhciBlZGl0b3Igb2YgdGhpcy5fcHJvcGVydHlF
ZGl0b3JzKSB7CisgICAgICAgICAgICB2YXIgZWRpdG9yVmFsdWUgPSBlZGl0b3Iuc3ludGhlc2l6
ZWRWYWx1ZTsKKworICAgICAgICAgICAgaWYgKGVkaXRvclZhbHVlICYmIGVkaXRvclZhbHVlLmxl
bmd0aCkKKyAgICAgICAgICAgICAgICBvbmVFZGl0b3JIYXNWYWx1ZSA9IHRydWU7CisgICAgICAg
ICAgICBlbHNlIGlmIChlZGl0b3Iub3B0aW9uYWxQcm9wZXJ0eSkKKyAgICAgICAgICAgICAgICBj
b250aW51ZTsKKworICAgICAgICAgICAgaWYgKGVkaXRvci5tYXN0ZXJQcm9wZXJ0eSAmJiBlZGl0
b3IudmFsdWVJc0tleXdvcmQoKSkgeworICAgICAgICAgICAgICAgIHRoaXMuX21hcmtFZGl0b3Jz
KGVkaXRvciwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGVkaXRvclZhbHVlOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoZWRpdG9yICE9PSB0aGlzLl9wcm9wZXJ0eUVk
aXRvcnNbMF0pCisgICAgICAgICAgICAgICAgdmFsdWUgKz0gIiAiOworCisgICAgICAgICAgICB2
YWx1ZSArPSBlZGl0b3JWYWx1ZSB8fCAoZWRpdG9yLmNvbG9yUHJvcGVydHkgPyAidHJhbnNwYXJl
bnQiIDogMCk7CisgICAgICAgIH0KKworICAgICAgICB0aGlzLl9tYXJrRWRpdG9ycygpOworICAg
ICAgICByZXR1cm4gdmFsdWUubGVuZ3RoICYmIG9uZUVkaXRvckhhc1ZhbHVlID8gdmFsdWUgOiBu
dWxsOworICAgIH0KKworICAgIG1vZGlmeVByb3BlcnR5VGV4dCh0ZXh0LCB2YWx1ZSkKKyAgICB7
CisgICAgICAgIHZhciB0cmltbWVkVGV4dCA9IHRleHQudHJpbVJpZ2h0KCk7CisKKyAgICAgICAg
aWYgKHRoaXMuX3RleHRDb250YWluc05hbWVSZWdFeHAudGVzdCh0ZXh0KSkKKyAgICAgICAgICAg
IHRleHQgPSB0ZXh0LnJlcGxhY2UodGhpcy5fcmVwbGFjZW1lbnRSZWdFeHAsIHZhbHVlID8gIiQx
JDI6ICIgKyB2YWx1ZSArICI7IiA6ICIkMSIpOworICAgICAgICBlbHNlIGlmICh2YWx1ZSkgewor
ICAgICAgICAgICAgaWYgKHRyaW1tZWRUZXh0LnRyaW1MZWZ0KCkubGVuZ3RoICYmICF0cmltbWVk
VGV4dC5lbmRzV2l0aCgiOyIpKQorICAgICAgICAgICAgICAgIHRleHQgKz0gIjsiOworCisgICAg
ICAgICAgICB0ZXh0ICs9IHRoaXMuX3Byb3BlcnR5TmFtZSArICI6ICIgKyB2YWx1ZSArICI7IjsK
KyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB0ZXh0OworICAgIH0KKworICAgIHVwZGF0ZShz
dHlsZSkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9pZ25vcmVOZXh0VXBkYXRlKSB7CisgICAg
ICAgICAgICB0aGlzLl9pZ25vcmVOZXh0VXBkYXRlID0gZmFsc2U7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoc3R5bGUpCisgICAgICAgICAgICB0aGlzLl9z
dHlsZSA9IHN0eWxlOworCisgICAgICAgIGlmICghdGhpcy5fc3R5bGUgfHwgIXRoaXMuX3ZhbHVl
UmVnRXhwKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHZhciBwcm9wZXJ0eSA9IHRo
aXMuX3N0eWxlLnByb3BlcnR5Rm9yTmFtZSh0aGlzLl9wcm9wZXJ0eU5hbWUsIHRydWUpOworICAg
ICAgICB2YXIgcHJvcGVydHlNaXNzaW5nID0gIXByb3BlcnR5OworCisgICAgICAgIGlmIChwcm9w
ZXJ0eU1pc3NpbmcgJiYgdGhpcy5fc3R5bGUubm9kZVN0eWxlcykKKyAgICAgICAgICAgIHByb3Bl
cnR5ID0gdGhpcy5fc3R5bGUubm9kZVN0eWxlcy5jb21wdXRlZFN0eWxlLnByb3BlcnR5Rm9yTmFt
ZSh0aGlzLl9wcm9wZXJ0eU5hbWUpOworCisgICAgICAgIGlmICghcHJvcGVydHkpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy51cGRhdGVWYWx1ZXNGcm9tVGV4dChwcm9wZXJ0
eS52YWx1ZSwgc3R5bGUsIHByb3BlcnR5TWlzc2luZyk7CisgICAgICAgIHRoaXMuX3Byb3BlcnR5
TWlzc2luZyA9IHByb3BlcnR5TWlzc2luZzsKKyAgICB9CisKKyAgICB1cGRhdGVWYWx1ZXNGcm9t
VGV4dChzdHlsZVRleHQsIG5ld1N0eWxlLCBwcm9wZXJ0eU1pc3NpbmcpCisgICAgeworICAgICAg
ICBpZiAoc3R5bGVUZXh0ID09PSB0aGlzLnN5bnRoZXNpemVkVmFsdWUpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgZm9yICh2YXIgZWRpdG9yIG9mIHRoaXMuX3Byb3BlcnR5RWRpdG9y
cykKKyAgICAgICAgICAgIGVkaXRvci5fX3VwZGF0ZWQgPSBmYWxzZTsKKworICAgICAgICBmdW5j
dGlvbiB1cGRhdGVDb21wYXRpYmxlRWRpdG9yKHZhbHVlKQorICAgICAgICB7CisgICAgICAgICAg
ICBmb3IgKHZhciBlZGl0b3Igb2YgdGhpcy5fcHJvcGVydHlFZGl0b3JzKSB7CisgICAgICAgICAg
ICAgICAgaWYgKHZhbHVlICYmICFlZGl0b3IudmFsdWVJc0NvbXBhdGlibGUodmFsdWUpIHx8IGVk
aXRvci5fX3VwZGF0ZWQpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAg
ICAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnRWYWx1ZUlzS2V5d29yZCAmJiBlZGl0b3IuZGlzYWJs
ZWQpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICAgICAgdmFy
IHVwZGF0ZWRWYWx1ZXMgPSBlZGl0b3IuZ2V0VmFsdWVzRnJvbVRleHQodmFsdWUgfHwgIiIsIHBy
b3BlcnR5TWlzc2luZyk7CisgICAgICAgICAgICAgICAgZWRpdG9yLnVwZGF0ZUVkaXRvclZhbHVl
cyh1cGRhdGVkVmFsdWVzKTsKKyAgICAgICAgICAgICAgICBlZGl0b3IuX191cGRhdGVkID0gdHJ1
ZTsKKworICAgICAgICAgICAgICAgIGlmICh2YWx1ZSkKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgdmFyIG1hdGNoZXMgPSBz
dHlsZVRleHQubWF0Y2godGhpcy5fdmFsdWVSZWdFeHApOworICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IHRoaXMuX3Byb3BlcnR5RWRpdG9ycy5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgIHVw
ZGF0ZUNvbXBhdGlibGVFZGl0b3IuY2FsbCh0aGlzLCBtYXRjaGVzICYmIG1hdGNoZXNbaV0pOwor
ICAgIH0KKworICAgIGdldCBwcm9wZXJ0eU1pc3NpbmcoKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IHRoaXMuX3Byb3BlcnR5TWlzc2luZzsKKyAgICB9CisKKyAgICAvLyBQcml2YXRlCisKKyAgICBf
bWFya0VkaXRvcnMoaWdub3JlZEVkaXRvciwgZGlzYWJsZWQpCisgICAgeworICAgICAgICB0aGlz
Ll9jdXJyZW50VmFsdWVJc0tleXdvcmQgPSBkaXNhYmxlZCB8fCBmYWxzZTsKKworICAgICAgICBm
b3IgKHZhciBlZGl0b3Igb2YgdGhpcy5fcHJvcGVydHlFZGl0b3JzKSB7CisgICAgICAgICAgICBp
ZiAoaWdub3JlZEVkaXRvciAmJiBlZGl0b3IgPT09IGlnbm9yZWRFZGl0b3IpCisgICAgICAgICAg
ICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIGVkaXRvci5kaXNhYmxlZCA9IHRoaXMuX2N1
cnJlbnRWYWx1ZUlzS2V5d29yZDsKKyAgICAgICAgfQorICAgIH0KKworICAgIF9oYW5kbGVQcm9w
ZXJ0eUVkaXRvclZhbHVlQ2hhbmdlZCgpCisgICAgeworICAgICAgICB0aGlzLl9pZ25vcmVOZXh0
VXBkYXRlID0gdHJ1ZTsKKworICAgICAgICBpZiAodGhpcy5fc3R5bGUpCisgICAgICAgICAgICB0
aGlzLl9zdHlsZS50ZXh0ID0gdGhpcy5tb2RpZnlQcm9wZXJ0eVRleHQodGhpcy5fc3R5bGUudGV4
dCwgdGhpcy5zeW50aGVzaXplZFZhbHVlKTsKKworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRU
b0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5FdmVudC5W
YWx1ZURpZENoYW5nZSk7CisgICAgfQorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IuY3NzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVQcm9w
ZXJ0eUVkaXRvci5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWRhMzcxMWFiYTI4MmMwOWM5MDMyM2FjNDkzMTJh
YzhiY2FhNzFhNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IuY3NzCkBAIC0wLDAgKzEs
OTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lciB7Cisg
ICAgZGlzcGxheTogZmxleDsKKyAgICB3aWR0aDogMTAwJTsKKyAgICBtaW4taGVpZ2h0OiAyMnB4
OworfQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lciA+IC52aXN1YWwtc3R5bGUt
cHJvcGVydHktdGl0bGUgeworICAgIG1hcmdpbjogNHB4OworICAgIHRleHQtYWxpZ246IHJpZ2h0
OworfQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lciA+IC52aXN1YWwtc3R5bGUt
cHJvcGVydHktdGl0bGUgPiAucHJvcGVydHktcmVmZXJlbmNlLWluZm97CisgICAgY3Vyc29yOiBo
ZWxwOworfQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5kaXNhYmxlZCA+IC52
aXN1YWwtc3R5bGUtcHJvcGVydHktdGl0bGUgPiA6bm90KC5wcm9wZXJ0eS1yZWZlcmVuY2UtaW5m
bykgeworICAgIG9wYWNpdHk6IDAuNDsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250
YWluZXIgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciB7CisgICAgZmxl
eDogMTsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVy
dHktY29udGFpbmVyLmRpc2FibGVkID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250
YWluZXIgeworICAgIHBvaW50ZXItZXZlbnRzOiBub25lOworICAgIG9wYWNpdHk6IDAuNDsKK30K
KworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLXByb3Bl
cnR5LXZhbHVlLWNvbnRhaW5lciBzZWxlY3QgeworICAgIHdpZHRoOiAxMDAlOworICAgIG1hcmdp
bjogMXB4IDA7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyID4gLnZpc3Vh
bC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgaW5wdXQgeworICAgIHdpZHRoOiBjYWxj
KDEwMCUgLSAxcHgpOworICAgIG1hcmdpbjogMDsKKyAgICBvdXRsaW5lOiBub25lOworfQorCisu
dmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5kaXNhYmxlZCA+IC52aXN1YWwtc3R5bGUt
cHJvcGVydHktdmFsdWUtY29udGFpbmVyIGlucHV0IHsKKyAgICBwb2ludGVyLWV2ZW50czogbm9u
ZSAhaW1wb3J0YW50OworfQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5sYXlv
dXQtcmV2ZXJzZWQgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXRpdGxlIHsKKyAgICBvcmRlcjog
MjsKKyAgICB0ZXh0LWFsaWduOiBsZWZ0OworfQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNv
bnRhaW5lciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyID4gLnZpc3Vh
bC1zdHlsZS1zcGVjaWFsLXByb3BlcnR5LXBsYWNlaG9sZGVyIHsKKyAgICBwb3NpdGlvbjogYWJz
b2x1dGU7CisgICAgdG9wOiAycHg7CisgICAgbGVmdDogMXB4OworICAgIHdpZHRoOiBjYWxjKDEw
MCUgLSAyMHB4KTsKKyAgICBsaW5lLWhlaWdodDogMTZweDsKKyAgICB0ZXh0LWluZGVudDogN3B4
OworICAgIGJvcmRlci1yYWRpdXM6IDRweDsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsK
KyAgICBjb2xvcjogZ3JleTsKKyAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKKyAgICBvdmVyZmxv
dzogaGlkZGVuOworICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CisgICAgei1pbmRleDogMTsKK30K
KworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1pbmZvLXBvcG92ZXIgeworICAgIHdpZHRoOiAyMDBw
eDsKKyAgICBtYXJnaW46IDA7CisgICAgcGFkZGluZzogMDsKK30KKworLnZpc3VhbC1zdHlsZS1w
cm9wZXJ0eS1pbmZvLXBvcG92ZXIgPiBoMyB7CisgICAgbWFyZ2luOiA2cHggM3B4OworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFs
U3R5bGVQcm9wZXJ0eUVkaXRvci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1Zpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTM5MDBh
NzY1NTg4NWQ2Y2ExZDA5MTQwM2Y1Y2JiYzM1M2Q5ZTExOQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlUHJvcGVy
dHlFZGl0b3IuanMKQEAgLTAsMCArMSw0NDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXZWJJbnNwZWN0b3Iu
VmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvciA9IGNsYXNzIFZpc3VhbFN0eWxlUHJvcGVydHlFZGl0
b3IgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0Cit7CisgICAgY29uc3RydWN0b3IocHJvcGVy
dHlOYW1lcywgbGFiZWwsIHBvc3NpYmxlVmFsdWVzLCBwb3NzaWJsZVVuaXRzLCBjbGFzc05hbWUs
IGxheW91dFJldmVyc2VkKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKKworICAgICAgICB0aGlz
Ll9wcm9wZXJ0eUluZm9MaXN0ID0gW107CisgICAgICAgIHRoaXMuX3N0eWxlID0gbnVsbDsKKwor
ICAgICAgICBmdW5jdGlvbiBwYXJzZVZhbHVlcyh2YWx1ZXMpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGlmICghdmFsdWVzKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAg
dmFyIHBhcnNlZFZhbHVlcyA9IHt9OworICAgICAgICAgICAgZm9yICh2YXIgdmFsdWUgb2YgdmFs
dWVzKQorICAgICAgICAgICAgICAgIHBhcnNlZFZhbHVlc1t2YWx1ZS50b0xvd2VyQ2FzZSgpLnJl
cGxhY2UoL1xzL2csICItIildID0gdmFsdWU7CisKKyAgICAgICAgICAgIHJldHVybiBwYXJzZWRW
YWx1ZXM7CisgICAgICAgIH0KKworICAgICAgICB0aGlzLl9wb3NzaWJsZVZhbHVlcyA9IG51bGw7
CisgICAgICAgIGlmIChwb3NzaWJsZVZhbHVlcykgeworICAgICAgICAgICAgdGhpcy5fcG9zc2li
bGVWYWx1ZXMgPSB7fTsKKyAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHBvc3NpYmxlVmFs
dWVzKSkKKyAgICAgICAgICAgICAgICB0aGlzLl9wb3NzaWJsZVZhbHVlcy5iYXNpYyA9IHBhcnNl
VmFsdWVzKHBvc3NpYmxlVmFsdWVzKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
ICAgIHRoaXMuX3Bvc3NpYmxlVmFsdWVzLmJhc2ljID0gcGFyc2VWYWx1ZXMocG9zc2libGVWYWx1
ZXMuYmFzaWMpOworICAgICAgICAgICAgICAgIHRoaXMuX3Bvc3NpYmxlVmFsdWVzLmFkdmFuY2Vk
ID0gcGFyc2VWYWx1ZXMocG9zc2libGVWYWx1ZXMuYWR2YW5jZWQpOworICAgICAgICAgICAgfSAK
KyAgICAgICAgfQorICAgICAgICB0aGlzLl9wb3NzaWJsZVVuaXRzID0gbnVsbDsKKyAgICAgICAg
aWYgKHBvc3NpYmxlVW5pdHMpIHsKKyAgICAgICAgICAgIHRoaXMuX3Bvc3NpYmxlVW5pdHMgPSB7
fTsKKyAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHBvc3NpYmxlVW5pdHMpKQorICAgICAg
ICAgICAgICAgIHRoaXMuX3Bvc3NpYmxlVW5pdHMuYmFzaWMgPSBwb3NzaWJsZVVuaXRzOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRoaXMuX3Bvc3NpYmxlVW5pdHMgPSBwb3Nz
aWJsZVVuaXRzCisgICAgICAgIH0KKworICAgICAgICB0aGlzLl9lbGVtZW50ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFk
ZCgidmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lciIsIGNsYXNzTmFtZSk7CisgICAgICAg
IHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgibGF5b3V0LXJldmVyc2VkIiwgbGF5b3V0
UmV2ZXJzZWQpOworCisgICAgICAgIGlmIChsYWJlbCAmJiBsYWJlbC5sZW5ndGgpIHsKKyAgICAg
ICAgICAgIHZhciB0aXRsZUNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIp
OworICAgICAgICAgICAgdGl0bGVDb250YWluZXIuY2xhc3NMaXN0LmFkZCgidmlzdWFsLXN0eWxl
LXByb3BlcnR5LXRpdGxlIik7CisKKyAgICAgICAgICAgIHRoaXMuX3RpdGxlRWxlbWVudCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAgICAgICAgICAgIHRoaXMuX3RpdGxlRWxl
bWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShsYWJlbCkpOworICAgICAg
ICAgICAgdGhpcy5fdGl0bGVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlb3ZlciIsIHRo
aXMuX3RpdGxlRWxlbWVudE1vdXNlT3Zlci5iaW5kKHRoaXMpKTsKKyAgICAgICAgICAgIHRoaXMu
X3RpdGxlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW91dCIsIHRoaXMuX3RpdGxlRWxl
bWVudE1vdXNlT3V0LmJpbmQodGhpcykpOworICAgICAgICAgICAgdGhpcy5fdGl0bGVFbGVtZW50
LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fdGl0bGVFbGVtZW50Q2xpY2suYmluZCh0
aGlzKSk7CisgICAgICAgICAgICB0aXRsZUNvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLl90aXRs
ZUVsZW1lbnQpOworCisgICAgICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRpdGxl
Q29udGFpbmVyKTsKKworICAgICAgICAgICAgdGhpcy5fYm91bmRUaXRsZUVsZW1lbnRQcmVwYXJl
Rm9yQ2xpY2sgPSB0aGlzLl90aXRsZUVsZW1lbnRQcmVwYXJlRm9yQ2xpY2suYmluZCh0aGlzKTsK
KyAgICAgICAgfQorCisgICAgICAgIHRoaXMuX2NvbnRlbnRFbGVtZW50ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIHRoaXMuX2NvbnRlbnRFbGVtZW50LmNsYXNzTGlz
dC5hZGQoInZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIiKTsKKworICAgICAg
ICB0aGlzLl9zcGVjaWFsUHJvcGVydHlQbGFjZWhvbGRlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoInNwYW4iKTsKKyAgICAgICAgdGhpcy5fc3BlY2lhbFByb3BlcnR5UGxhY2Vob2xkZXIuY2xh
c3NMaXN0LmFkZCgidmlzdWFsLXN0eWxlLXNwZWNpYWwtcHJvcGVydHktcGxhY2Vob2xkZXIiKTsK
KyAgICAgICAgdGhpcy5fc3BlY2lhbFByb3BlcnR5UGxhY2Vob2xkZXIuaGlkZGVuID0gdHJ1ZTsK
KyAgICAgICAgdGhpcy5fY29udGVudEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fc3BlY2lhbFBy
b3BlcnR5UGxhY2Vob2xkZXIpOworCisgICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQo
dGhpcy5fY29udGVudEVsZW1lbnQpOworCisgICAgICAgIHRoaXMuX3VwZGF0ZWRWYWx1ZXMgPSB7
fTsKKyAgICAgICAgdGhpcy5fbGFzdFZhbHVlID0gbnVsbDsKKyAgICAgICAgdGhpcy5fdmFsdWVS
ZWdFeHAgPSBudWxsOworCisgICAgICAgIGlmICh0eXBlb2YgcHJvcGVydHlOYW1lcyA9PT0gInN0
cmluZyIpCisgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzID0gW3Byb3BlcnR5TmFtZXNdOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoIm11bHRp
cGxlIik7CisKKyAgICAgICAgZm9yICh2YXIgbmFtZSBvZiBwcm9wZXJ0eU5hbWVzKSB7CisgICAg
ICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQobmFtZSk7CisgICAgICAgICAgICB0
aGlzLl9wcm9wZXJ0eUluZm9MaXN0LnB1c2goeworICAgICAgICAgICAgICAgIG5hbWUsCisgICAg
ICAgICAgICAgICAgdGV4dENvbnRhaW5zTmFtZVJlZ0V4cDogbmV3IFJlZ0V4cCgiKD86KD86Xnw7
KVxccyoiICsgbmFtZSArICJcXHMqOikiKSwKKyAgICAgICAgICAgICAgICByZXBsYWNlbWVudFJl
Z0V4cDogbmV3IFJlZ0V4cCgiKF58OykoPzpcXHMqKSgiICsgbmFtZSArICIpKC4rPyg/Ojt8JCkp
IikKKyAgICAgICAgICAgIH0pCisgICAgICAgIH0KKworICAgICAgICB0aGlzLl9wcm9wZXJ0eVJl
ZmVyZW5jZU5hbWUgPSBwcm9wZXJ0eU5hbWVzWzBdOworICAgIH0KKworICAgIC8vIFB1YmxpYwor
CisgICAgZ2V0IGVsZW1lbnQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQ7
CisgICAgfQorCisgICAgZ2V0IHN0eWxlKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9z
dHlsZTsKKyAgICB9CisKKyAgICBnZXQgdmFsdWUoKQorICAgIHsKKyAgICAgICAgLy8gSW1wbGVt
ZW50ZWQgYnkgc3ViY2xhc3MKKyAgICB9CisKKyAgICBzZXQgdmFsdWUodmFsdWUpCisgICAgewor
ICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzcworICAgIH0KKworICAgIGdldCB1bml0
cygpCisgICAgeworICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzcworICAgIH0KKwor
ICAgIHNldCB1bml0cyh1bml0KQorICAgIHsKKyAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3Vi
Y2xhc3MKKyAgICB9CisKKyAgICBnZXQgcGxhY2Vob2xkZXIoKQorICAgIHsKKyAgICAgICAgLy8g
SW1wbGVtZW50ZWQgYnkgc3ViY2xhc3MKKyAgICB9CisKKyAgICBzZXQgcGxhY2Vob2xkZXIodGV4
dCkKKyAgICB7CisgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzCisgICAgfQorCisg
ICAgZ2V0IHN5bnRoZXNpemVkVmFsdWUoKQorICAgIHsKKyAgICAgICAgLy8gSW1wbGVtZW50ZWQg
Ynkgc3ViY2xhc3MKKyAgICB9CisKKyAgICBzZXQgZG9udFVwZGF0ZVN0eWxlVGV4dChmbGFnKQor
ICAgIHsKKyAgICAgICAgdGhpcy5fZG9udFVwZGF0ZVN0eWxlVGV4dCA9IGZsYWc7CisgICAgfQor
CisgICAgc2V0IG1hc3RlclByb3BlcnR5KGZsYWcpCisgICAgeworICAgICAgICB0aGlzLl9tYXN0
ZXJQcm9wZXJ0eSA9IGZsYWc7CisgICAgfQorCisgICAgZ2V0IG1hc3RlclByb3BlcnR5KCkKKyAg
ICB7CisgICAgICAgIHJldHVybiB0aGlzLl9tYXN0ZXJQcm9wZXJ0eTsKKyAgICB9CisKKyAgICBz
ZXQgb3B0aW9uYWxQcm9wZXJ0eShmbGFnKQorICAgIHsKKyAgICAgICAgdGhpcy5fb3B0aW9uYWxQ
cm9wZXJ0eSA9IGZsYWc7CisgICAgfQorCisgICAgZ2V0IG9wdGlvbmFsUHJvcGVydHkoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX29wdGlvbmFsUHJvcGVydHk7CisgICAgfQorCisgICAg
c2V0IGNvbG9yUHJvcGVydHkoZmxhZykKKyAgICB7CisgICAgICAgIHRoaXMuX2NvbG9yUHJvcGVy
dHkgPSBmbGFnOworICAgIH0KKworICAgIGdldCBjb2xvclByb3BlcnR5KCkKKyAgICB7CisgICAg
ICAgIHJldHVybiB0aGlzLl9jb2xvclByb3BlcnR5OworICAgIH0KKworICAgIGdldCBwcm9wZXJ0
eVJlZmVyZW5jZU5hbWUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3Byb3BlcnR5UmVm
ZXJlbmNlTmFtZTsKKyAgICB9CisKKyAgICBzZXQgcHJvcGVydHlSZWZlcmVuY2VOYW1lKG5hbWUp
CisgICAgeworICAgICAgICBpZiAoIW5hbWUgfHwgIW5hbWUubGVuZ3RoKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIHRoaXMuX3Byb3BlcnR5UmVmZXJlbmNlTmFtZSA9IG5hbWU7Cisg
ICAgfQorCisgICAgc2V0IGRpc2FibGVkKGZsYWcpCisgICAgeworICAgICAgICB0aGlzLl9lbGVt
ZW50LmNsYXNzTGlzdC50b2dnbGUoImRpc2FibGVkIiwgZmxhZyk7CisgICAgICAgIC8vIHRoaXMu
X2VsZW1lbnQudGFiSW5kZXggPSBmbGFnID8gLTEgOiBudWxsOworICAgIH0KKworICAgIGdldCBk
aXNhYmxlZCgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudC5jbGFzc0xpc3Qu
Y29udGFpbnMoImRpc2FibGVkIik7CisgICAgfQorCisgICAgdXBkYXRlKHN0eWxlKQorICAgIHsK
KyAgICAgICAgaWYgKHN0eWxlKQorICAgICAgICAgICAgdGhpcy5fc3R5bGUgPSBzdHlsZTsKKyAg
ICAgICAgZWxzZSBpZiAodGhpcy5faWdub3JlTmV4dFVwZGF0ZSkgeworICAgICAgICAgICAgdGhp
cy5faWdub3JlTmV4dFVwZGF0ZSA9IGZhbHNlOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisKKyAgICAgICAgaWYgKCF0aGlzLl9zdHlsZSB8fCAhdGhpcy5fdmFsdWVSZWdFeHApCisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5fdXBkYXRlZFZhbHVlcyA9IHt9Owor
ICAgICAgICB2YXIgY29uZmxpY3RpbmdWYWx1ZXMgPSBmYWxzZTsKKyAgICAgICAgdmFyIHByb3Bl
cnR5TWlzc2luZyA9IGZhbHNlOworCisgICAgICAgIGZvciAodmFyIHByb3BlcnR5SW5mbyBvZiB0
aGlzLl9wcm9wZXJ0eUluZm9MaXN0KSB7CisgICAgICAgICAgICB2YXIgcHJvcGVydHkgPSB0aGlz
Ll9zdHlsZS5wcm9wZXJ0eUZvck5hbWUocHJvcGVydHlJbmZvLm5hbWUsIHRydWUpOworICAgICAg
ICAgICAgcHJvcGVydHlNaXNzaW5nID0gIXByb3BlcnR5OworCisgICAgICAgICAgICBpZiAocHJv
cGVydHlNaXNzaW5nICYmIHRoaXMuX3N0eWxlLm5vZGVTdHlsZXMpCisgICAgICAgICAgICAgICAg
cHJvcGVydHkgPSB0aGlzLl9zdHlsZS5ub2RlU3R5bGVzLmNvbXB1dGVkU3R5bGUucHJvcGVydHlG
b3JOYW1lKHByb3BlcnR5SW5mby5uYW1lKTsKKworICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eSkK
KyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgdmFyIHNob3J0aGFuZCA9
IHByb3BlcnR5LnJlbGF0ZWRTaG9ydGhhbmRQcm9wZXJ0eTsKKyAgICAgICAgICAgIGlmICghcHJv
cGVydHlNaXNzaW5nICYmIHByb3BlcnR5LmFub255bW91cyAmJiBzaG9ydGhhbmQpIHsKKyAgICAg
ICAgICAgICAgICB2YXIgdGV4dCA9ICIiOworICAgICAgICAgICAgICAgIGZvciAodmFyIGxvbmdo
YW5kIG9mIHNob3J0aGFuZC5yZWxhdGVkTG9uZ2hhbmRQcm9wZXJ0aWVzKSB7CisgICAgICAgICAg
ICAgICAgICAgIGlmICghbG9uZ2hhbmQuYW5vbnltb3VzKQorICAgICAgICAgICAgICAgICAgICAg
ICAgY29udGludWU7CisKKyAgICAgICAgICAgICAgICAgICAgdGV4dCArPSBsb25naGFuZC5zeW50
aGVzaXplZFRleHQ7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKCF0
ZXh0Lmxlbmd0aCkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAg
ICB0aGlzLl9zdHlsZS50ZXh0ID0gdGhpcy5fc3R5bGUudGV4dC5yZXBsYWNlKHNob3J0aGFuZC50
ZXh0LCB0ZXh0KTsKKyAgICAgICAgICAgIH0KKworCisgICAgICAgICAgICB2YXIgbmV3VmFsdWVz
ID0gdGhpcy5nZXRWYWx1ZXNGcm9tVGV4dChwcm9wZXJ0eS52YWx1ZSwgcHJvcGVydHlNaXNzaW5n
KTsKKworICAgICAgICAgICAgaWYgKHRoaXMuX3VwZGF0ZWRWYWx1ZXMucGxhY2Vob2xkZXIgJiYg
dGhpcy5fdXBkYXRlZFZhbHVlcy5wbGFjZWhvbGRlciAhPT0gbmV3VmFsdWVzLnBsYWNlaG9sZGVy
KQorICAgICAgICAgICAgICAgIGNvbmZsaWN0aW5nVmFsdWVzID0gdHJ1ZTsKKworICAgICAgICAg
ICAgaWYgKCF0aGlzLl91cGRhdGVkVmFsdWVzLnBsYWNlaG9sZGVyKQorICAgICAgICAgICAgICAg
IHRoaXMuX3VwZGF0ZWRWYWx1ZXMgPSBuZXdWYWx1ZXM7CisKKyAgICAgICAgICAgIGlmIChjb25m
bGljdGluZ1ZhbHVlcykgeworICAgICAgICAgICAgICAgIHRoaXMuX3NwZWNpYWxQcm9wZXJ0eVBs
YWNlaG9sZGVyLnRleHRDb250ZW50ID0gIigiICsgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJtdWx0
aXBsZSIpICsgIikiOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisKKyAgICAgICAgaWYgKHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJt
dWx0aXBsZSIpKQorICAgICAgICAgICAgdGhpcy5fc3BlY2lhbFByb3BlcnR5UGxhY2Vob2xkZXIu
aGlkZGVuID0gIWNvbmZsaWN0aW5nVmFsdWVzOworCisgICAgICAgIHRoaXMudXBkYXRlRWRpdG9y
VmFsdWVzKHRoaXMuX3VwZGF0ZWRWYWx1ZXMpOworICAgIH0KKworICAgIHVwZGF0ZUVkaXRvclZh
bHVlcyh1cGRhdGVkVmFsdWVzKQorICAgIHsKKyAgICAgICAgdGhpcy52YWx1ZSA9IHVwZGF0ZWRW
YWx1ZXMudmFsdWU7CisgICAgICAgIHRoaXMudW5pdHMgPSB1cGRhdGVkVmFsdWVzLnVuaXRzOwor
ICAgICAgICB0aGlzLnBsYWNlaG9sZGVyID0gdXBkYXRlZFZhbHVlcy5wbGFjZWhvbGRlcjsKKwor
ICAgICAgICB0aGlzLl9sYXN0VmFsdWUgPSB0aGlzLnN5bnRoZXNpemVkVmFsdWU7CisgICAgICAg
IHRoaXMuZGlzYWJsZWQgPSBmYWxzZTsKKyAgICB9CisKKyAgICBtb2RpZnlQcm9wZXJ0eVRleHQo
dGV4dCwgdmFsdWUpCisgICAgeworICAgICAgICB2YXIgdHJpbW1lZFRleHQgPSB0ZXh0LnRyaW1S
aWdodCgpOworCisgICAgICAgIGZvciAodmFyIHByb3BlcnR5IG9mIHRoaXMuX3Byb3BlcnR5SW5m
b0xpc3QpIHsKKyAgICAgICAgICAgIGlmIChwcm9wZXJ0eS50ZXh0Q29udGFpbnNOYW1lUmVnRXhw
LnRlc3QodGV4dCkpCisgICAgICAgICAgICAgICAgdGV4dCA9IHRleHQucmVwbGFjZShwcm9wZXJ0
eS5yZXBsYWNlbWVudFJlZ0V4cCwgdmFsdWUgIT09IG51bGwgPyAiJDEkMjogIiArIHZhbHVlICsg
IjsiIDogIiQxIik7CisgICAgICAgICAgICBlbHNlIGlmICh2YWx1ZSAhPT0gbnVsbCkgeworICAg
ICAgICAgICAgICAgIGlmICh0cmltbWVkVGV4dC50cmltTGVmdCgpLmxlbmd0aCAmJiAhdHJpbW1l
ZFRleHQuZW5kc1dpdGgoIjsiKSkKKyAgICAgICAgICAgICAgICAgICAgdGV4dCArPSAiOyI7CisK
KyAgICAgICAgICAgICAgICB0ZXh0ICs9IHByb3BlcnR5Lm5hbWUgKyAiOiAiICsgdmFsdWUgKyAi
OyI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gdGV4dDsKKyAg
ICB9CisKKyAgICBnZXRWYWx1ZXNGcm9tVGV4dCh0ZXh0LCBwcm9wZXJ0eU1pc3NpbmcpCisgICAg
eworICAgICAgICB2YXIgbWF0Y2ggPSB0aGlzLl92YWx1ZVJlZ0V4cC5leGVjKHRleHQpOworICAg
ICAgICB2YXIgcGxhY2Vob2xkZXIgPSBtYXRjaCA/IG1hdGNoWzFdIDogdGV4dDsKKyAgICAgICAg
dmFyIHZhbHVlID0gIXByb3BlcnR5TWlzc2luZyA/IHBsYWNlaG9sZGVyIDogKHRoaXMudmFsdWVJ
c0tleXdvcmQodGV4dCkgPyB0ZXh0IDogbnVsbCk7CisgICAgICAgIHZhciB1bml0cyA9IG1hdGNo
ID8gbWF0Y2hbMl0gOiBudWxsOworCisgICAgICAgIHJldHVybiB7dmFsdWUsIHVuaXRzLCBwbGFj
ZWhvbGRlciwgcHJvcGVydHlNaXNzaW5nfTsKKyAgICB9CisKKyAgICBnZXQgcHJvcGVydHlNaXNz
aW5nKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl91cGRhdGVkVmFsdWVzICYmIHRoaXMu
X3VwZGF0ZWRWYWx1ZXMucHJvcGVydHlNaXNzaW5nOworICAgIH0KKworICAgIHZhbHVlSXNDb21w
YXRpYmxlKHZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHZhbHVlICYmICh0aGlzLl92YWx1
ZVJlZ0V4cCAmJiB0aGlzLl92YWx1ZVJlZ0V4cC50ZXN0KHZhbHVlKSB8fCB0aGlzLnZhbHVlSXNL
ZXl3b3JkKHZhbHVlKSk7CisgICAgfQorCisgICAgdmFsdWVJc0tleXdvcmQodmFsdWUpIHsKKyAg
ICAgICAgaWYgKCF0aGlzLl9wb3NzaWJsZVZhbHVlcykKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgICAgICB2YWx1ZSA9IHZhbHVlIHx8IHRoaXMudmFsdWU7CisgICAgICAgIGlmIChP
YmplY3Qua2V5cyh0aGlzLl9wb3NzaWJsZVZhbHVlcy5iYXNpYykuaW5jbHVkZXModmFsdWUpKQor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlSXNB
ZHZhbmNlZEtleXdvcmQodmFsdWUpOworICAgIH0KKworICAgIHZhbHVlSXNVbml0KHVuaXQpCisg
ICAgeworICAgICAgICBpZiAoIXRoaXMuX3Bvc3NpYmxlVW5pdHMpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICAgICAgdW5pdCA9IHVuaXQgfHwgdGhpcy51bml0czsKKyAgICAgICAg
aWYgKHRoaXMuX3Bvc3NpYmxlVW5pdHMuYmFzaWMuaW5jbHVkZXModW5pdCkpCisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKworICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWVJc0FkdmFuY2VkVW5p
dCh1bml0KTsKKyAgICB9CisKKyAgICAvLyBQcml2YXRlCisKKyAgICBfdmFsdWVJc0FkdmFuY2Vk
S2V5d29yZCh2YWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9wb3NzaWJsZVZhbHVl
cy5hZHZhbmNlZCAmJiBPYmplY3Qua2V5cyh0aGlzLl9wb3NzaWJsZVZhbHVlcy5hZHZhbmNlZCku
aW5jbHVkZXModmFsdWUgfHwgdGhpcy52YWx1ZSk7CisgICAgfQorCisgICAgX3ZhbHVlSXNBZHZh
bmNlZFVuaXQodW5pdCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9wb3NzaWJsZVVuaXRz
LmFkdmFuY2VkICYmIHRoaXMuX3Bvc3NpYmxlVW5pdHMuYWR2YW5jZWQuaW5jbHVkZXModW5pdCB8
fCB0aGlzLnVuaXRzKTsKKyAgICB9CisKKyAgICBfa2V5Rm9yS2V5d29yZCh2YWx1ZSkKKyAgICB7
CisgICAgICAgIGlmICghdmFsdWUgfHwgIXRoaXMuX3Bvc3NpYmxlVmFsdWVzKQorICAgICAgICAg
ICAgcmV0dXJuIG51bGw7CisKKyAgICAgICAgcmV0dXJuIHRoaXMuX3Bvc3NpYmxlVmFsdWVzLmJh
c2ljW3ZhbHVlXSB8fCAodGhpcy5fcG9zc2libGVWYWx1ZXMuYWR2YW5jZWQgJiYgdGhpcy5fcG9z
c2libGVWYWx1ZXMuYWR2YW5jZWRbdmFsdWVdKSB8fCBudWxsOworICAgIH0KKworICAgIF92YWx1
ZURpZENoYW5nZSgpCisgICAgeworICAgICAgICB2YXIgdmFsdWUgPSB0aGlzLnN5bnRoZXNpemVk
VmFsdWU7CisgICAgICAgIGlmICh2YWx1ZSA9PT0gdGhpcy5fbGFzdFZhbHVlKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGlmICh0aGlzLl9zdHlsZSAmJiAhdGhpcy5fZG9u
dFVwZGF0ZVN0eWxlVGV4dCkgeworICAgICAgICAgICAgdmFyIG5ld1RleHQgPSB0aGlzLm1vZGlm
eVByb3BlcnR5VGV4dCh0aGlzLl9zdHlsZS50ZXh0LCB2YWx1ZSk7CisgICAgICAgICAgICB0aGlz
Ll9zdHlsZS50ZXh0ID0gbmV3VGV4dDsKKworICAgICAgICAgICAgaWYgKCFuZXdUZXh0Lmxlbmd0
aCkKKyAgICAgICAgICAgICAgICB0aGlzLl9zdHlsZS51cGRhdGUobnVsbCwgbnVsbCwgdGhpcy5f
c3R5bGUuc3R5bGVTaGVldFRleHRSYW5nZSk7CisgICAgICAgIH0KKworICAgICAgICB0aGlzLl9s
YXN0VmFsdWUgPSB2YWx1ZTsKKyAgICAgICAgdGhpcy5faWdub3JlTmV4dFVwZGF0ZSA9IHRydWU7
CisgICAgICAgIHRoaXMuX3NwZWNpYWxQcm9wZXJ0eVBsYWNlaG9sZGVyLmhpZGRlbiA9IHRydWU7
CisKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlZp
c3VhbFN0eWxlUHJvcGVydHlFZGl0b3IuRXZlbnQuVmFsdWVEaWRDaGFuZ2UpOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBfdGl0bGVFbGVtZW50UHJlcGFyZUZvckNsaWNrKGV2
ZW50KQorICAgIHsKKyAgICAgICAgdGhpcy5fdGl0bGVFbGVtZW50LmNsYXNzTGlzdC50b2dnbGUo
InByb3BlcnR5LXJlZmVyZW5jZS1pbmZvIiwgZXZlbnQudHlwZSA9PT0gImtleWRvd24iICYmIGV2
ZW50LmFsdEtleSk7CisgICAgfQorCisgICAgX3RpdGxlRWxlbWVudE1vdXNlT3ZlcihldmVudCkK
KyAgICB7CisgICAgICAgIHRoaXMuX3RpdGxlRWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKCJwcm9w
ZXJ0eS1yZWZlcmVuY2UtaW5mbyIsIGV2ZW50LmFsdEtleSk7CisgICAgICAgIGRvY3VtZW50LmFk
ZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCB0aGlzLl9ib3VuZFRpdGxlRWxlbWVudFByZXBhcmVG
b3JDbGljayk7CisgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleXVwIiwgdGhp
cy5fYm91bmRUaXRsZUVsZW1lbnRQcmVwYXJlRm9yQ2xpY2spOworICAgIH0KKworICAgIF90aXRs
ZUVsZW1lbnRNb3VzZU91dCgpCisgICAgeworICAgICAgICB0aGlzLl90aXRsZUVsZW1lbnQuY2xh
c3NMaXN0LnJlbW92ZSgicHJvcGVydHktcmVmZXJlbmNlLWluZm8iKTsKKyAgICAgICAgZG9jdW1l
bnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsIHRoaXMuX2JvdW5kVGl0bGVFbGVtZW50
UHJlcGFyZUZvckNsaWNrKTsKKyAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigi
a2V5dXAiLCB0aGlzLl9ib3VuZFRpdGxlRWxlbWVudFByZXBhcmVGb3JDbGljayk7CisgICAgfQor
CisgICAgX3RpdGxlRWxlbWVudENsaWNrKGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKGV2ZW50
LmFsdEtleSkKKyAgICAgICAgICAgIHRoaXMuX3Nob3dQcm9wZXJ0eUluZm9Qb3BvdmVyKCk7Cisg
ICAgfQorCisgICAgX2hhc011bHRpcGxlQ29uZmxpY3RpbmdWYWx1ZXMoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJtdWx0aXBsZSIpICYm
ICF0aGlzLl9zcGVjaWFsUHJvcGVydHlQbGFjZWhvbGRlci5oaWRkZW47CisgICAgfQorCisgICAg
X3Nob3dQcm9wZXJ0eUluZm9Qb3BvdmVyKCkKKyAgICB7CisgICAgICAgIHZhciBwcm9wZXJ0eUlu
Zm9FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgicCIpOworICAgICAgICBwcm9wZXJ0
eUluZm9FbGVtZW50LmNsYXNzTGlzdC5hZGQoInZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1pbmZvLXBv
cG92ZXIiKTsKKworICAgICAgICB2YXIgcHJvcGVydHlJbmZvVGl0bGVFbGVtZW50ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiaDMiKTsKKyAgICAgICAgcHJvcGVydHlJbmZvVGl0bGVFbGVtZW50
LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRoaXMuX3Byb3BlcnR5UmVmZXJl
bmNlTmFtZSkpOworICAgICAgICBwcm9wZXJ0eUluZm9FbGVtZW50LmFwcGVuZENoaWxkKHByb3Bl
cnR5SW5mb1RpdGxlRWxlbWVudCk7CisKKyAgICAgICAgcHJvcGVydHlJbmZvRWxlbWVudC5hcHBl
bmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVE
ZXRhaWxzUGFuZWwucHJvcGVydHlSZWZlcmVuY2VJbmZvW3RoaXMuX3Byb3BlcnR5UmVmZXJlbmNl
TmFtZV0pKTsKKworICAgICAgICB2YXIgYm91bmRzID0gV2ViSW5zcGVjdG9yLlJlY3QucmVjdEZy
b21DbGllbnRSZWN0KHRoaXMuX3RpdGxlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSk7
CisgICAgICAgIHZhciBwb3BvdmVyID0gbmV3IFdlYkluc3BlY3Rvci5Qb3BvdmVyKHRoaXMpOwor
ICAgICAgICBwb3BvdmVyLmNvbnRlbnQgPSBwcm9wZXJ0eUluZm9FbGVtZW50OworICAgICAgICBw
b3BvdmVyLnByZXNlbnQoYm91bmRzLnBhZCgyKSwgW1dlYkluc3BlY3Rvci5SZWN0RWRnZS5NSU5f
WV0pOworICAgIH0KK307CisKK1dlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9y
LkV2ZW50ID0geworICAgIFZhbHVlRGlkQ2hhbmdlOiAidmlzdWFsLXN0eWxlLXByb3BlcnR5LWVk
aXRvci12YWx1ZS1jaGFuZ2VkIgorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVUYWJiZWRQcm9wZXJ0aWVzQ29udHJvbGxl
ci5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxT
dHlsZVRhYmJlZFByb3BlcnRpZXNDb250cm9sbGVyLmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NGRjNjM5NDA3
MmU5MDk2MWVlMGVkNjQ3NmE0ZWFhYTc1ZjUzZDA3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVUYWJiZWRQcm9w
ZXJ0aWVzQ29udHJvbGxlci5jc3MKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy52aXN1
YWwtc3R5bGUtdGFiYmVkLXByb3BlcnRpZXMtY29udHJvbGxlciB+IDpub3QoLnZpc2libGUpIHsK
KyAgICB2aXNpYmlsaXR5OiBoaWRkZW47CisgICAgaGVpZ2h0OiAwOworfQorCisudmlzdWFsLXN0
eWxlLXRhYmJlZC1wcm9wZXJ0aWVzLWNvbnRyb2xsZXIgPiAudmlzdWFsLXN0eWxlLXRhYmJlZC1w
cm9wZXJ0aWVzLWNvbnRyb2xsZXItY29udGFpbmVyIHsKKyAgICBtYXJnaW46IDAgYXV0bzsKK30K
KworLnZpc3VhbC1zdHlsZS10YWJiZWQtcHJvcGVydGllcy1jb250cm9sbGVyID4gLnZpc3VhbC1z
dHlsZS10YWJiZWQtcHJvcGVydGllcy1jb250cm9sbGVyLWNvbnRhaW5lciA+IGJ1dHRvbiB7Cisg
ICAgbWFyZ2luOiAwIDJweCAycHg7CisgICAgYm9yZGVyLXJhZGl1czogM3B4OworICAgIGJvcmRl
ci13aWR0aDogMCAxcHg7CisgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsKKyAgICBiYWNr
Z3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKK30KKworLnZpc3VhbC1zdHlsZS10YWJiZWQtcHJv
cGVydGllcy1jb250cm9sbGVyID4gLnZpc3VhbC1zdHlsZS10YWJiZWQtcHJvcGVydGllcy1jb250
cm9sbGVyLWNvbnRhaW5lciA+IGJ1dHRvbi5zZWxlY3RlZCB7CisgICAgY29sb3I6IHdoaXRlOwor
ICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMzQsIDEzMSwgMjQ2LCAxKTsKK30KKworLnZpc3Vh
bC1zdHlsZS10YWJiZWQtcHJvcGVydGllcy1jb250cm9sbGVyID4gLnZpc3VhbC1zdHlsZS10YWJi
ZWQtcHJvcGVydGllcy1jb250cm9sbGVyLWNvbnRhaW5lciA+IGJ1dHRvbjpub3QoLnNlbGVjdGVk
KTpob3ZlciB7CisgICAgY29sb3I6IHdoaXRlOworICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEo
MzQsIDEzMSwgMjQ2LCAwLjUpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVUYWJiZWRQcm9wZXJ0aWVzQ29udHJvbGxl
ci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0
eWxlVGFiYmVkUHJvcGVydGllc0NvbnRyb2xsZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWE2ZTZhZmI0NzY4
YmVmZmVjYTYwZTVkNDQyNGJmN2VhODExYmY2MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlVGFiYmVkUHJvcGVy
dGllc0NvbnRyb2xsZXIuanMKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dlYkluc3Bl
Y3Rvci5WaXN1YWxTdHlsZVRhYmJlZFByb3BlcnRpZXNDb250cm9sbGVyID0gY2xhc3MgVmlzdWFs
U3R5bGVUYWJiZWRQcm9wZXJ0aWVzQ29udHJvbGxlciBleHRlbmRzIFdlYkluc3BlY3Rvci5EZXRh
aWxzU2VjdGlvblJvdworeworICAgIGNvbnN0cnVjdG9yKHRhYk1hcCkKKyAgICB7CisgICAgICAg
IHN1cGVyKCk7CisKKyAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJ2aXN1YWwt
c3R5bGUtdGFiYmVkLXByb3BlcnRpZXMtY29udHJvbGxlciIpOworCisgICAgICAgIHRoaXMuX2Nv
bnRyb2xsZXJDb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAg
ICAgdGhpcy5fY29udHJvbGxlckNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCJ2aXN1YWwtc3R5bGUt
dGFiYmVkLXByb3BlcnRpZXMtY29udHJvbGxlci1jb250YWluZXIiKTsKKworICAgICAgICB0aGlz
Ll90YWJNYXAgPSB0YWJNYXA7CisgICAgICAgIHRoaXMuX3RhYkJ1dHRvbnMgPSBbXTsKKworICAg
ICAgICBmb3IgKHZhciBrZXkgaW4gdGhpcy5fdGFiTWFwKSB7CisgICAgICAgICAgICB2YXIgYnV0
dG9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnV0dG9uIik7CisgICAgICAgICAgICBidXR0
b24uaWQgPSBrZXk7CisgICAgICAgICAgICBidXR0b24udGV4dENvbnRlbnQgPSB0aGlzLl90YWJN
YXBba2V5XS50aXRsZTsKKyAgICAgICAgICAgIGJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGlj
ayIsIHRoaXMuX2hhbmRsZUJ1dHRvbkNsaWNrZWQuYmluZCh0aGlzKSk7CisKKyAgICAgICAgICAg
IHRoaXMuX2NvbnRyb2xsZXJDb250YWluZXIuYXBwZW5kQ2hpbGQoYnV0dG9uKTsKKyAgICAgICAg
ICAgIHRoaXMuX3RhYkJ1dHRvbnMucHVzaChidXR0b24pOworICAgICAgICB9CisKKyAgICAgICAg
dmFyIGZpcnN0QnV0dG9uID0gdGhpcy5fdGFiQnV0dG9uc1swXTsKKyAgICAgICAgZmlyc3RCdXR0
b24uY2xhc3NMaXN0LmFkZCgic2VsZWN0ZWQiKTsKKyAgICAgICAgdGhpcy5fdGFiTWFwW2ZpcnN0
QnV0dG9uLmlkXS5lbGVtZW50LmNsYXNzTGlzdC5hZGQoInZpc2libGUiKTsKKworICAgICAgICB0
aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2NvbnRyb2xsZXJDb250YWluZXIpOworICAg
IH0KKworICAgIC8vIFByaXZhdGUKKworICAgIF9oYW5kbGVCdXR0b25DbGlja2VkKGV2ZW50KQor
ICAgIHsKKyAgICAgICAgZm9yICh2YXIgaXRlbSBvZiB0aGlzLl90YWJCdXR0b25zKSB7CisgICAg
ICAgICAgICB2YXIgc2VsZWN0ZWQgPSBpdGVtID09PSBldmVudC50YXJnZXQ7CisKKyAgICAgICAg
ICAgIGl0ZW0uY2xhc3NMaXN0LnRvZ2dsZSgic2VsZWN0ZWQiLCBzZWxlY3RlZCk7CisKKyAgICAg
ICAgICAgIHZhciB0YWIgPSB0aGlzLl90YWJNYXBbaXRlbS5pZF07CisgICAgICAgICAgICB0YWIu
ZWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKCJ2aXNpYmxlIiwgc2VsZWN0ZWQpOworCisgICAgICAg
ICAgICBmb3IgKHZhciBwcm9wZXJ0eUVkaXRvciBvZiB0YWIucHJvcGVydGllcykKKyAgICAgICAg
ICAgICAgICBwcm9wZXJ0eUVkaXRvci51cGRhdGUoKTsKKyAgICAgICAgfQorICAgIH0KK307Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258461</attachid>
            <date>2015-08-06 23:15:42 -0700</date>
            <delta_ts>2015-08-10 11:07:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147576-20150806231532.patch</filename>
            <type>text/plain</type>
            <size>39017</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDE2YjI3ZTdiYzQyYTU0ZmMyMjRiZjMyODNhMDA5
MDg0ZmRkYzZkMGIuLjFkMzhlYTJhMzMxNTdlNmFiNjM0MmU5N2RkN2RhZjcxNTc1ODJiOWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk3IEBACisyMDE1LTA4LTA2ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBB
ZGQgdmlzdWFsIGVkaXRvcnMgZm9yIENTUyBwcm9wZXJ0aWVzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDc1NzYKKworICAgICAgICBBZGRlZCBwYXJl
bnQgY2xhc3MgZm9yIHByb3BlcnR5IGVkaXRvcnMgaW4gdGhlIFZpc3VhbCBzdHlsZQorICAgICAg
ICBkZXRhaWxzIHBhbmVsIGluIHRoZSBDU1Mgc2lkZWJhci4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFs
U3R5bGVQcm9wZXJ0eUNvbWJpbmVyLmpzOiBBZGRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5W
aXN1YWxTdHlsZVByb3BlcnR5Q29tYmluZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3Vh
bFN0eWxlUHJvcGVydHlDb21iaW5lci5wcm90b3R5cGUuZ2V0IHN0eWxlKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5Q29tYmluZXIucHJvdG90eXBlLmdldCBzeW50
aGVzaXplZFZhbHVlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5
Q29tYmluZXIucHJvdG90eXBlLm1vZGlmeVByb3BlcnR5VGV4dCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUNvbWJpbmVyLnByb3RvdHlwZS51cGRhdGUpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlDb21iaW5lci5wcm90b3R5cGUu
dXBkYXRlVmFsdWVzRnJvbVRleHQudXBkYXRlQ29tcGF0aWJsZUVkaXRvcik6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUNvbWJpbmVyLnByb3RvdHlwZS51cGRhdGVW
YWx1ZXNGcm9tVGV4dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0
eUNvbWJpbmVyLnByb3RvdHlwZS5wcm9wZXJ0eU1pc3NpbmcpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlZpc3VhbFN0eWxlUHJvcGVydHlDb21iaW5lci5wcm90b3R5cGUuX21hcmtFZGl0b3JzKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5Q29tYmluZXIucHJvdG90
eXBlLl9oYW5kbGVQcm9wZXJ0eUVkaXRvclZhbHVlQ2hhbmdlZCk6CisKKyAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IuY3NzOiBBZGRlZC4KKyAg
ICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyKToKKyAgICAgICAgKC52aXN1
YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS10aXRs
ZSk6CisgICAgICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lciA+IC52aXN1YWwt
c3R5bGUtcHJvcGVydHktdGl0bGUgPiAucHJvcGVydHktcmVmZXJlbmNlLWluZm8pOgorICAgICAg
ICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuZGlzYWJsZWQgPiAudmlzdWFsLXN0
eWxlLXByb3BlcnR5LXRpdGxlID4gOm5vdCgucHJvcGVydHktcmVmZXJlbmNlLWluZm8pKToKKyAg
ICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyID4gLnZpc3VhbC1zdHlsZS1w
cm9wZXJ0eS12YWx1ZS1jb250YWluZXIpOgorICAgICAgICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0
eS1jb250YWluZXIuZGlzYWJsZWQgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRh
aW5lcik6CisgICAgICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lciA+IC52aXN1
YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyIHNlbGVjdCk6CisgICAgICAgICgudmlz
dWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFs
dWUtY29udGFpbmVyIGlucHV0KToKKyAgICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHktY29u
dGFpbmVyLmRpc2FibGVkID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIg
aW5wdXQpOgorICAgICAgICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIubGF5b3V0
LXJldmVyc2VkID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS10aXRsZSk6CisgICAgICAgICgudmlz
dWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFs
dWUtY29udGFpbmVyID4gLnZpc3VhbC1zdHlsZS1zcGVjaWFsLXByb3BlcnR5LXBsYWNlaG9sZGVy
KToKKyAgICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHktaW5mby1wb3BvdmVyKToKKyAgICAg
ICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHktaW5mby1wb3BvdmVyID4gaDMpOgorCisgICAgICAg
ICogVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLmpzOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLmNhbm9u
aWNhbGl6ZVZhbHVlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0
eUVkaXRvcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRv
ci5wcm90b3R5cGUuZ2V0IGVsZW1lbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0
eWxlUHJvcGVydHlFZGl0b3IucHJvdG90eXBlLmdldCBzdHlsZSk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5wcm90b3R5cGUuZ2V0IHZhbHVlKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnByb3RvdHlwZS5z
ZXQgdmFsdWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0
b3IucHJvdG90eXBlLmdldCB1bml0cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5
bGVQcm9wZXJ0eUVkaXRvci5wcm90b3R5cGUuc2V0IHVuaXRzKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnByb3RvdHlwZS5nZXQgcGxhY2Vob2xkZXIp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IucHJvdG90
eXBlLnNldCBwbGFjZWhvbGRlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQ
cm9wZXJ0eUVkaXRvci5wcm90b3R5cGUuZ2V0IHN5bnRoZXNpemVkVmFsdWUpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IucHJvdG90eXBlLnNldCBzdXBw
cmVzc1N0eWxlVGV4dFVwZGF0ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQ
cm9wZXJ0eUVkaXRvci5wcm90b3R5cGUuc2V0IG1hc3RlclByb3BlcnR5KToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnByb3RvdHlwZS5nZXQgbWFzdGVy
UHJvcGVydHkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0
b3IucHJvdG90eXBlLnNldCBvcHRpb25hbFByb3BlcnR5KToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnByb3RvdHlwZS5nZXQgb3B0aW9uYWxQcm9wZXJ0
eSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5wcm90
b3R5cGUuc2V0IGNvbG9yUHJvcGVydHkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0
eWxlUHJvcGVydHlFZGl0b3IucHJvdG90eXBlLmdldCBjb2xvclByb3BlcnR5KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnByb3RvdHlwZS5nZXQgcHJv
cGVydHlSZWZlcmVuY2VOYW1lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVBy
b3BlcnR5RWRpdG9yLnByb3RvdHlwZS5zZXQgcHJvcGVydHlSZWZlcmVuY2VOYW1lKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnByb3RvdHlwZS5zZXQg
ZGlzYWJsZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0
b3IucHJvdG90eXBlLmdldCBkaXNhYmxlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFs
U3R5bGVQcm9wZXJ0eUVkaXRvci5wcm90b3R5cGUudXBkYXRlKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnByb3RvdHlwZS51cGRhdGVFZGl0b3JWYWx1
ZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IucHJv
dG90eXBlLm1vZGlmeVByb3BlcnR5VGV4dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFs
U3R5bGVQcm9wZXJ0eUVkaXRvci5wcm90b3R5cGUuZ2V0VmFsdWVzRnJvbVRleHQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IucHJvdG90eXBlLnByb3Bl
cnR5TWlzc2luZyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVk
aXRvci5wcm90b3R5cGUudmFsdWVJc0NvbXBhdGlibGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IucHJvdG90eXBlLnZhbHVlSXNLZXl3b3JkKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnByb3RvdHlwZS52
YWx1ZUlzVW5pdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVk
aXRvci5wcm90b3R5cGUuZ2V0IGNvbnRlbnRFbGVtZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnByb3RvdHlwZS5nZXQgc3BlY2lhbFByb3BlcnR5
UGxhY2Vob2xkZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVBy
b3BlcnR5RWRpdG9yLnByb3RvdHlwZS5wYXJzZVZhbHVlKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnByb3RvdHlwZS5fdmFsdWVJc0FkdmFuY2VkS2V5
d29yZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5w
cm90b3R5cGUuX3ZhbHVlSXNBZHZhbmNlZFVuaXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZp
c3VhbFN0eWxlUHJvcGVydHlFZGl0b3IucHJvdG90eXBlLl9rZXlGb3JLZXl3b3JkKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnByb3RvdHlwZS5fdmFs
dWVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlF
ZGl0b3IucHJvdG90eXBlLl90aXRsZUVsZW1lbnRQcmVwYXJlRm9yQ2xpY2spOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IucHJvdG90eXBlLl90aXRsZUVs
ZW1lbnRNb3VzZU92ZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVy
dHlFZGl0b3IucHJvdG90eXBlLl90aXRsZUVsZW1lbnRNb3VzZU91dCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5wcm90b3R5cGUuX3RpdGxlRWxlbWVu
dENsaWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9y
LnByb3RvdHlwZS5faGFzTXVsdGlwbGVDb25mbGljdGluZ1ZhbHVlcyk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5wcm90b3R5cGUuX3Nob3dQcm9wZXJ0
eUluZm9Qb3BvdmVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5
RWRpdG9yLnByb3RvdHlwZS5fdG9nZ2xlVGFiYmluZ09mU2VsZWN0YWJsZUVsZW1lbnRzKToKKwor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVUYWJiZWRQcm9wZXJ0aWVz
Q29udHJvbGxlci5jc3M6IEFkZGVkLgorICAgICAgICAoLnZpc3VhbC1zdHlsZS10YWJiZWQtcHJv
cGVydGllcy1jb250cm9sbGVyIH4gOm5vdCgudmlzaWJsZSkpOgorICAgICAgICAoLnZpc3VhbC1z
dHlsZS10YWJiZWQtcHJvcGVydGllcy1jb250cm9sbGVyID4gLnZpc3VhbC1zdHlsZS10YWJiZWQt
cHJvcGVydGllcy1jb250cm9sbGVyLWNvbnRhaW5lcik6CisgICAgICAgICgudmlzdWFsLXN0eWxl
LXRhYmJlZC1wcm9wZXJ0aWVzLWNvbnRyb2xsZXIgPiAudmlzdWFsLXN0eWxlLXRhYmJlZC1wcm9w
ZXJ0aWVzLWNvbnRyb2xsZXItY29udGFpbmVyID4gYnV0dG9uKToKKyAgICAgICAgKC52aXN1YWwt
c3R5bGUtdGFiYmVkLXByb3BlcnRpZXMtY29udHJvbGxlciA+IC52aXN1YWwtc3R5bGUtdGFiYmVk
LXByb3BlcnRpZXMtY29udHJvbGxlci1jb250YWluZXIgPiBidXR0b24uc2VsZWN0ZWQpOgorICAg
ICAgICAoLnZpc3VhbC1zdHlsZS10YWJiZWQtcHJvcGVydGllcy1jb250cm9sbGVyID4gLnZpc3Vh
bC1zdHlsZS10YWJiZWQtcHJvcGVydGllcy1jb250cm9sbGVyLWNvbnRhaW5lciA+IGJ1dHRvbjpu
b3QoLnNlbGVjdGVkKTpob3Zlcik6CisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Zp
c3VhbFN0eWxlVGFiYmVkUHJvcGVydGllc0NvbnRyb2xsZXIuanM6IEFkZGVkLgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlVGFiYmVkUHJvcGVydGllc0NvbnRyb2xsZXIpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlVGFiYmVkUHJvcGVydGllc0NvbnRyb2xsZXIu
cHJvdG90eXBlLl9oYW5kbGVCdXR0b25DbGlja2VkKToKKwogMjAxNS0wOC0wNSAgRGV2aW4gUm91
c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogTW92ZSB0
aGUgTWV0cmljcyBzdHlsZSBzaWRlYmFyIHBhbmVsIGludG8gQ29tcHV0ZWQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlUHJv
cGVydHlDb21iaW5lci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1Zpc3VhbFN0eWxlUHJvcGVydHlDb21iaW5lci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NGE3ODRmZDQ3
YTkwMjgzOTk5YTllZGE0ODczZTEzYjk1ZmM5YTJhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVQcm9wZXJ0eUNv
bWJpbmVyLmpzCkBAIC0wLDAgKzEsMTcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV2ViSW5zcGVjdG9yLlZp
c3VhbFN0eWxlUHJvcGVydHlDb21iaW5lciA9IGNsYXNzIFZpc3VhbFN0eWxlUHJvcGVydHlDb21i
aW5lciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKK3sKKyAgICBjb25zdHJ1Y3Rvcihwcm9w
ZXJ0eU5hbWUsIHByb3BlcnR5RWRpdG9ycykKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CisKKyAg
ICAgICAgdGhpcy5fc3R5bGUgPSBudWxsOworICAgICAgICB0aGlzLl9wcm9wZXJ0eU5hbWUgPSBw
cm9wZXJ0eU5hbWU7CisgICAgICAgIHRoaXMuX3Byb3BlcnR5TWlzc2luZyA9IGZhbHNlOworICAg
ICAgICB0aGlzLl9wcm9wZXJ0eUVkaXRvcnMgPSBwcm9wZXJ0eUVkaXRvcnMgfHwgW107CisgICAg
ICAgIGZvciAobGV0IGVkaXRvciBvZiB0aGlzLl9wcm9wZXJ0eUVkaXRvcnMpIHsKKyAgICAgICAg
ICAgIGVkaXRvci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3Bl
cnR5RWRpdG9yLkV2ZW50LlZhbHVlRGlkQ2hhbmdlLCB0aGlzLl9oYW5kbGVQcm9wZXJ0eUVkaXRv
clZhbHVlQ2hhbmdlZCwgdGhpcyk7CisgICAgICAgICAgICBlZGl0b3Iuc3VwcHJlc3NTdHlsZVRl
eHRVcGRhdGUgPSB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fdGV4dENvbnRhaW5z
TmFtZVJlZ0V4cCA9IG5ldyBSZWdFeHAoIig/Oig/Ol58OylcXHMqIiArIHRoaXMuX3Byb3BlcnR5
TmFtZSArICJcXHMqOikiKTsKKyAgICAgICAgdGhpcy5fcmVwbGFjZW1lbnRSZWdFeHAgPSBuZXcg
UmVnRXhwKCIoXnw7KSg/OlxccyopKCIgKyB0aGlzLl9wcm9wZXJ0eU5hbWUgKyAiKSguKz8oPzo7
fCQpKSIpOworICAgICAgICB0aGlzLl92YWx1ZVJlZ0V4cCA9IC8oW15cc10rXCguK1wpfFteXHNd
KykoPzo7PykvZzsKKyAgICB9CisKKyAgICBnZXQgc3R5bGUoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHRoaXMuX3N0eWxlOworICAgIH0KKworICAgIGdldCBzeW50aGVzaXplZFZhbHVlKCkKKyAg
ICB7CisgICAgICAgIGxldCB2YWx1ZSA9ICIiOworICAgICAgICBsZXQgb25lRWRpdG9ySGFzVmFs
dWUgPSBmYWxzZTsKKyAgICAgICAgZm9yIChsZXQgZWRpdG9yIG9mIHRoaXMuX3Byb3BlcnR5RWRp
dG9ycykgeworICAgICAgICAgICAgbGV0IGVkaXRvclZhbHVlID0gZWRpdG9yLnN5bnRoZXNpemVk
VmFsdWU7CisgICAgICAgICAgICBpZiAoZWRpdG9yVmFsdWUgJiYgZWRpdG9yVmFsdWUubGVuZ3Ro
KQorICAgICAgICAgICAgICAgIG9uZUVkaXRvckhhc1ZhbHVlID0gdHJ1ZTsKKyAgICAgICAgICAg
IGVsc2UgaWYgKGVkaXRvci5vcHRpb25hbFByb3BlcnR5KQorICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworCisgICAgICAgICAgICBpZiAoZWRpdG9yLm1hc3RlclByb3BlcnR5ICYmIGVkaXRvci52
YWx1ZUlzS2V5d29yZCgpKSB7CisgICAgICAgICAgICAgICAgdGhpcy5fbWFya0VkaXRvcnMoZWRp
dG9yLCB0cnVlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZWRpdG9yVmFsdWU7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGlmIChlZGl0b3IgIT09IHRoaXMuX3Byb3BlcnR5RWRpdG9y
c1swXSkKKyAgICAgICAgICAgICAgICB2YWx1ZSArPSAiICI7CisKKyAgICAgICAgICAgIHZhbHVl
ICs9IGVkaXRvclZhbHVlIHx8IChlZGl0b3IuY29sb3JQcm9wZXJ0eSA/ICJ0cmFuc3BhcmVudCIg
OiAwKTsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuX21hcmtFZGl0b3JzKCk7CisgICAgICAg
IHJldHVybiB2YWx1ZS5sZW5ndGggJiYgb25lRWRpdG9ySGFzVmFsdWUgPyB2YWx1ZSA6IG51bGw7
CisgICAgfQorCisgICAgbW9kaWZ5UHJvcGVydHlUZXh0KHRleHQsIHZhbHVlKQorICAgIHsKKyAg
ICAgICAgbGV0IHRyaW1tZWRUZXh0ID0gdGV4dC50cmltUmlnaHQoKTsKKyAgICAgICAgaWYgKHRo
aXMuX3RleHRDb250YWluc05hbWVSZWdFeHAudGVzdCh0ZXh0KSkKKyAgICAgICAgICAgIHRleHQg
PSB0ZXh0LnJlcGxhY2UodGhpcy5fcmVwbGFjZW1lbnRSZWdFeHAsIHZhbHVlICE9PSBudWxsID8g
IiQxJDI6ICIgKyB2YWx1ZSArICI7IiA6ICIkMSIpOworICAgICAgICBlbHNlIGlmICh2YWx1ZSAh
PT0gbnVsbCkgeworICAgICAgICAgICAgaWYgKHRyaW1tZWRUZXh0LnRyaW1MZWZ0KCkubGVuZ3Ro
ICYmICF0cmltbWVkVGV4dC5lbmRzV2l0aCgiOyIpKQorICAgICAgICAgICAgICAgIHRleHQgKz0g
IjsiOworCisgICAgICAgICAgICB0ZXh0ICs9IHRoaXMuX3Byb3BlcnR5TmFtZSArICI6ICIgKyB2
YWx1ZSArICI7IjsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdGV4dDsKKyAgICB9CisKKyAg
ICB1cGRhdGUoc3R5bGUpCisgICAgeworICAgICAgICBpZiAoc3R5bGUpCisgICAgICAgICAgICB0
aGlzLl9zdHlsZSA9IHN0eWxlOworICAgICAgICBlbHNlIGlmICh0aGlzLl9pZ25vcmVOZXh0VXBk
YXRlKSB7CisgICAgICAgICAgICB0aGlzLl9pZ25vcmVOZXh0VXBkYXRlID0gZmFsc2U7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXRoaXMuX3N0eWxlIHx8
ICF0aGlzLl92YWx1ZVJlZ0V4cCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBsZXQg
cHJvcGVydHkgPSB0aGlzLl9zdHlsZS5wcm9wZXJ0eUZvck5hbWUodGhpcy5fcHJvcGVydHlOYW1l
LCB0cnVlKTsKKyAgICAgICAgbGV0IHByb3BlcnR5TWlzc2luZyA9ICFwcm9wZXJ0eTsKKyAgICAg
ICAgaWYgKHByb3BlcnR5TWlzc2luZyAmJiB0aGlzLl9zdHlsZS5ub2RlU3R5bGVzKQorICAgICAg
ICAgICAgcHJvcGVydHkgPSB0aGlzLl9zdHlsZS5ub2RlU3R5bGVzLmNvbXB1dGVkU3R5bGUucHJv
cGVydHlGb3JOYW1lKHRoaXMuX3Byb3BlcnR5TmFtZSk7CisKKyAgICAgICAgaWYgKCFwcm9wZXJ0
eSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlc0Zyb21U
ZXh0KHByb3BlcnR5LnZhbHVlLCBzdHlsZSwgcHJvcGVydHlNaXNzaW5nKTsKKyAgICAgICAgdGhp
cy5fcHJvcGVydHlNaXNzaW5nID0gcHJvcGVydHlNaXNzaW5nOworICAgIH0KKworICAgIHVwZGF0
ZVZhbHVlc0Zyb21UZXh0KHN0eWxlVGV4dCwgbmV3U3R5bGUsIHByb3BlcnR5TWlzc2luZykKKyAg
ICB7CisgICAgICAgIGlmIChzdHlsZVRleHQgPT09IHRoaXMuc3ludGhlc2l6ZWRWYWx1ZSkKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICBmb3IgKGxldCBlZGl0b3Igb2YgdGhpcy5fcHJv
cGVydHlFZGl0b3JzKQorICAgICAgICAgICAgZWRpdG9yLl9fdXBkYXRlZCA9IGZhbHNlOworCisg
ICAgICAgIGZ1bmN0aW9uIHVwZGF0ZUNvbXBhdGlibGVFZGl0b3IodmFsdWUpIHsKKyAgICAgICAg
ICAgIGZvciAobGV0IGVkaXRvciBvZiB0aGlzLl9wcm9wZXJ0eUVkaXRvcnMpIHsKKyAgICAgICAg
ICAgICAgICBpZiAodmFsdWUgJiYgIWVkaXRvci52YWx1ZUlzQ29tcGF0aWJsZSh2YWx1ZSkgfHwg
ZWRpdG9yLl9fdXBkYXRlZCkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAg
ICAgICAgICAgICBpZiAodGhpcy5fY3VycmVudFZhbHVlSXNLZXl3b3JkICYmIGVkaXRvci5kaXNh
YmxlZCkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgICAgICBs
ZXQgdXBkYXRlZFZhbHVlcyA9IGVkaXRvci5nZXRWYWx1ZXNGcm9tVGV4dCh2YWx1ZSB8fCAiIiwg
cHJvcGVydHlNaXNzaW5nKTsKKyAgICAgICAgICAgICAgICBlZGl0b3IudXBkYXRlRWRpdG9yVmFs
dWVzKHVwZGF0ZWRWYWx1ZXMpOworICAgICAgICAgICAgICAgIGVkaXRvci5fX3VwZGF0ZWQgPSB0
cnVlOworCisgICAgICAgICAgICAgICAgaWYgKHZhbHVlKQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBsZXQgbWF0Y2hlcyA9
IHN0eWxlVGV4dC5tYXRjaCh0aGlzLl92YWx1ZVJlZ0V4cCk7CisgICAgICAgIGZvciAobGV0IGkg
PSAwOyBpIDwgdGhpcy5fcHJvcGVydHlFZGl0b3JzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAg
dXBkYXRlQ29tcGF0aWJsZUVkaXRvci5jYWxsKHRoaXMsIG1hdGNoZXMgJiYgbWF0Y2hlc1tpXSk7
CisgICAgfQorCisgICAgZ2V0IHByb3BlcnR5TWlzc2luZygpCisgICAgeworICAgICAgICByZXR1
cm4gdGhpcy5fcHJvcGVydHlNaXNzaW5nOworICAgIH0KKworICAgIC8vIFByaXZhdGUKKworICAg
IF9tYXJrRWRpdG9ycyhpZ25vcmVkRWRpdG9yLCBkaXNhYmxlZCkKKyAgICB7CisgICAgICAgIHRo
aXMuX2N1cnJlbnRWYWx1ZUlzS2V5d29yZCA9IGRpc2FibGVkIHx8IGZhbHNlOworICAgICAgICBm
b3IgKGxldCBlZGl0b3Igb2YgdGhpcy5fcHJvcGVydHlFZGl0b3JzKSB7CisgICAgICAgICAgICBp
ZiAoaWdub3JlZEVkaXRvciAmJiBlZGl0b3IgPT09IGlnbm9yZWRFZGl0b3IpCisgICAgICAgICAg
ICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIGVkaXRvci5kaXNhYmxlZCA9IHRoaXMuX2N1
cnJlbnRWYWx1ZUlzS2V5d29yZDsKKyAgICAgICAgfQorICAgIH0KKworICAgIF9oYW5kbGVQcm9w
ZXJ0eUVkaXRvclZhbHVlQ2hhbmdlZCgpCisgICAgeworICAgICAgICB0aGlzLl9pZ25vcmVOZXh0
VXBkYXRlID0gdHJ1ZTsKKyAgICAgICAgaWYgKHRoaXMuX3N0eWxlKQorICAgICAgICAgICAgdGhp
cy5fc3R5bGUudGV4dCA9IHRoaXMubW9kaWZ5UHJvcGVydHlUZXh0KHRoaXMuX3N0eWxlLnRleHQs
IHRoaXMuc3ludGhlc2l6ZWRWYWx1ZSk7CisKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9M
aXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IuRXZlbnQuVmFs
dWVEaWRDaGFuZ2UpOworICAgIH0KK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLmNzcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlUHJvcGVy
dHlFZGl0b3IuY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE3ODYzM2U5ODdkYTdmMDI4NDUwODkwMGRhMmM3YWZh
MzJjNTU3YzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLmNzcwpAQCAtMCwwICsxLDk5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIgeworICAg
IGRpc3BsYXk6IGZsZXg7CisgICAgd2lkdGg6IDEwMCU7CisgICAgbWluLWhlaWdodDogMjJweDsK
K30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLXBy
b3BlcnR5LXRpdGxlIHsKKyAgICBtYXJnaW46IDRweDsKKyAgICB0ZXh0LWFsaWduOiByaWdodDsK
K30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLXBy
b3BlcnR5LXRpdGxlID4gLnByb3BlcnR5LXJlZmVyZW5jZS1pbmZveworICAgIGN1cnNvcjogaGVs
cDsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuZGlzYWJsZWQgPiAudmlz
dWFsLXN0eWxlLXByb3BlcnR5LXRpdGxlID4gOm5vdCgucHJvcGVydHktcmVmZXJlbmNlLWluZm8p
IHsKKyAgICAtd2Via2l0LWZpbHRlcjogb3BhY2l0eSgwLjcpCit9CisKKy52aXN1YWwtc3R5bGUt
cHJvcGVydHktY29udGFpbmVyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWlu
ZXIgeworICAgIGZsZXg6IDE7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOworfQorCisudmlzdWFs
LXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5kaXNhYmxlZCA+IC52aXN1YWwtc3R5bGUtcHJvcGVy
dHktdmFsdWUtY29udGFpbmVyIHsKKyAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKKyAgICBvcGFj
aXR5OiAwLjQ7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyID4gLnZpc3Vh
bC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgc2VsZWN0IHsKKyAgICB3aWR0aDogMTAw
JTsKKyAgICBtYXJnaW46IDFweCAwOworfQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRh
aW5lciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyIGlucHV0IHsKKyAg
ICB3aWR0aDogY2FsYygxMDAlIC0gMXB4KTsKKyAgICBtYXJnaW46IDA7CisgICAgb3V0bGluZTog
bm9uZTsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuZGlzYWJsZWQgPiAu
dmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciBpbnB1dCB7CisgICAgcG9pbnRl
ci1ldmVudHM6IG5vbmUgIWltcG9ydGFudDsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1j
b250YWluZXIubGF5b3V0LXJldmVyc2VkID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS10aXRsZSB7
CisgICAgb3JkZXI6IDI7CisgICAgdGV4dC1hbGlnbjogbGVmdDsKK30KKworLnZpc3VhbC1zdHls
ZS1wcm9wZXJ0eS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRh
aW5lciA+IC52aXN1YWwtc3R5bGUtc3BlY2lhbC1wcm9wZXJ0eS1wbGFjZWhvbGRlciB7CisgICAg
cG9zaXRpb246IGFic29sdXRlOworICAgIHRvcDogMnB4OworICAgIGxlZnQ6IDFweDsKKyAgICB3
aWR0aDogY2FsYygxMDAlIC0gMjBweCk7CisgICAgbGluZS1oZWlnaHQ6IDE2cHg7CisgICAgdGV4
dC1pbmRlbnQ6IDdweDsKKyAgICBib3JkZXItcmFkaXVzOiA0cHg7CisgICAgYmFja2dyb3VuZC1j
b2xvcjogaHNsKDAsIDEwMCUsIDEwMCUpOworICAgIGNvbG9yOiBoc2woMCwgMCUsIDUwJSk7Cisg
ICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CisgICAgb3ZlcmZsb3c6IGhpZGRlbjsKKyAgICB3aGl0
ZS1zcGFjZTogbm93cmFwOworICAgIHotaW5kZXg6IDE7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJv
cGVydHktaW5mby1wb3BvdmVyIHsKKyAgICB3aWR0aDogMTkwcHg7CisgICAgbWFyZ2luOiAwIDVw
eCAzcHg7CisgICAgcGFkZGluZzogMDsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1pbmZv
LXBvcG92ZXIgPiBoMyB7CisgICAgbWFyZ2luOiA2cHggM3B4OworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVQcm9wZXJ0
eUVkaXRvci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zp
c3VhbFN0eWxlUHJvcGVydHlFZGl0b3IuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmZmMjZhYjZhNmQzNzIxYjI4
MmFkZGE3OWQ4ODA2MWRjYmNjMGRlOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IuanMK
QEAgLTAsMCArMSw0NzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQ
cm9wZXJ0eUVkaXRvciA9IGNsYXNzIFZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IgZXh0ZW5kcyBX
ZWJJbnNwZWN0b3IuT2JqZWN0Cit7CisgICAgY29uc3RydWN0b3IocHJvcGVydHlOYW1lcywgbGFi
ZWwsIHBvc3NpYmxlVmFsdWVzLCBwb3NzaWJsZVVuaXRzLCBjbGFzc05hbWUsIGxheW91dFJldmVy
c2VkKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKKworICAgICAgICB0aGlzLl9wcm9wZXJ0eUlu
Zm9MaXN0ID0gW107CisgICAgICAgIHRoaXMuX3N0eWxlID0gbnVsbDsKKworICAgICAgICBmdW5j
dGlvbiBjYW5vbmljYWxpemVWYWx1ZXModmFsdWVzKQorICAgICAgICB7CisgICAgICAgICAgICBp
ZiAoIXZhbHVlcykKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGxldCBj
YW5vbmljYWxpemVkVmFsdWVzID0ge307CisgICAgICAgICAgICBmb3IgKGxldCB2YWx1ZSBvZiB2
YWx1ZXMpCisgICAgICAgICAgICAgICAgY2Fub25pY2FsaXplZFZhbHVlc1t2YWx1ZS50b0xvd2Vy
Q2FzZSgpLnJlcGxhY2UoL1xzL2csICItIildID0gdmFsdWU7CisKKyAgICAgICAgICAgIHJldHVy
biBjYW5vbmljYWxpemVkVmFsdWVzOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fcG9zc2li
bGVWYWx1ZXMgPSBudWxsOworICAgICAgICBpZiAocG9zc2libGVWYWx1ZXMpIHsKKyAgICAgICAg
ICAgIHRoaXMuX3Bvc3NpYmxlVmFsdWVzID0ge307CisgICAgICAgICAgICBpZiAoQXJyYXkuaXNB
cnJheShwb3NzaWJsZVZhbHVlcykpCisgICAgICAgICAgICAgICAgdGhpcy5fcG9zc2libGVWYWx1
ZXMuYmFzaWMgPSBjYW5vbmljYWxpemVWYWx1ZXMocG9zc2libGVWYWx1ZXMpOworICAgICAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICAgICAgdGhpcy5fcG9zc2libGVWYWx1ZXMuYmFzaWMgPSBj
YW5vbmljYWxpemVWYWx1ZXMocG9zc2libGVWYWx1ZXMuYmFzaWMpOworICAgICAgICAgICAgICAg
IHRoaXMuX3Bvc3NpYmxlVmFsdWVzLmFkdmFuY2VkID0gY2Fub25pY2FsaXplVmFsdWVzKHBvc3Np
YmxlVmFsdWVzLmFkdmFuY2VkKTsKKyAgICAgICAgICAgIH0gCisgICAgICAgIH0KKyAgICAgICAg
dGhpcy5fcG9zc2libGVVbml0cyA9IG51bGw7CisgICAgICAgIGlmIChwb3NzaWJsZVVuaXRzKSB7
CisgICAgICAgICAgICB0aGlzLl9wb3NzaWJsZVVuaXRzID0ge307CisgICAgICAgICAgICBpZiAo
QXJyYXkuaXNBcnJheShwb3NzaWJsZVVuaXRzKSkKKyAgICAgICAgICAgICAgICB0aGlzLl9wb3Nz
aWJsZVVuaXRzLmJhc2ljID0gcG9zc2libGVVbml0czsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICB0aGlzLl9wb3NzaWJsZVVuaXRzID0gcG9zc2libGVVbml0czsKKyAgICAgICAg
fQorCisgICAgICAgIHRoaXMuX2VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYi
KTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJ2aXN1YWwtc3R5bGUtcHJv
cGVydHktY29udGFpbmVyIiwgY2xhc3NOYW1lKTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFz
c0xpc3QudG9nZ2xlKCJsYXlvdXQtcmV2ZXJzZWQiLCBsYXlvdXRSZXZlcnNlZCk7CisKKyAgICAg
ICAgaWYgKGxhYmVsICYmIGxhYmVsLmxlbmd0aCkgeworICAgICAgICAgICAgbGV0IHRpdGxlQ29u
dGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgICAgICB0aXRs
ZUNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCJ2aXN1YWwtc3R5bGUtcHJvcGVydHktdGl0bGUiKTsK
KworICAgICAgICAgICAgdGhpcy5fdGl0bGVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgic3BhbiIpOworICAgICAgICAgICAgdGhpcy5fdGl0bGVFbGVtZW50LmFwcGVuZENoaWxkKGRv
Y3VtZW50LmNyZWF0ZVRleHROb2RlKGxhYmVsKSk7CisgICAgICAgICAgICB0aGlzLl90aXRsZUVs
ZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VvdmVyIiwgdGhpcy5fdGl0bGVFbGVtZW50TW91
c2VPdmVyLmJpbmQodGhpcykpOworICAgICAgICAgICAgdGhpcy5fdGl0bGVFbGVtZW50LmFkZEV2
ZW50TGlzdGVuZXIoIm1vdXNlb3V0IiwgdGhpcy5fdGl0bGVFbGVtZW50TW91c2VPdXQuYmluZCh0
aGlzKSk7CisgICAgICAgICAgICB0aGlzLl90aXRsZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigi
Y2xpY2siLCB0aGlzLl90aXRsZUVsZW1lbnRDbGljay5iaW5kKHRoaXMpKTsKKyAgICAgICAgICAg
IHRpdGxlQ29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMuX3RpdGxlRWxlbWVudCk7CisKKyAgICAg
ICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGl0bGVDb250YWluZXIpOworCisgICAg
ICAgICAgICB0aGlzLl9ib3VuZFRpdGxlRWxlbWVudFByZXBhcmVGb3JDbGljayA9IHRoaXMuX3Rp
dGxlRWxlbWVudFByZXBhcmVGb3JDbGljay5iaW5kKHRoaXMpOworICAgICAgICB9CisKKyAgICAg
ICAgdGhpcy5fY29udGVudEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsK
KyAgICAgICAgdGhpcy5fY29udGVudEVsZW1lbnQuY2xhc3NMaXN0LmFkZCgidmlzdWFsLXN0eWxl
LXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciIpOworCisgICAgICAgIHRoaXMuX3NwZWNpYWxQcm9w
ZXJ0eVBsYWNlaG9sZGVyRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsK
KyAgICAgICAgdGhpcy5fc3BlY2lhbFByb3BlcnR5UGxhY2Vob2xkZXJFbGVtZW50LmNsYXNzTGlz
dC5hZGQoInZpc3VhbC1zdHlsZS1zcGVjaWFsLXByb3BlcnR5LXBsYWNlaG9sZGVyIik7CisgICAg
ICAgIHRoaXMuX3NwZWNpYWxQcm9wZXJ0eVBsYWNlaG9sZGVyRWxlbWVudC5oaWRkZW4gPSB0cnVl
OworICAgICAgICB0aGlzLl9jb250ZW50RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9zcGVjaWFs
UHJvcGVydHlQbGFjZWhvbGRlckVsZW1lbnQpOworCisgICAgICAgIHRoaXMuX2VsZW1lbnQuYXBw
ZW5kQ2hpbGQodGhpcy5fY29udGVudEVsZW1lbnQpOworCisgICAgICAgIHRoaXMuX3VwZGF0ZWRW
YWx1ZXMgPSB7fTsKKyAgICAgICAgdGhpcy5fbGFzdFZhbHVlID0gbnVsbDsKKworICAgICAgICBp
ZiAodHlwZW9mIHByb3BlcnR5TmFtZXMgPT09ICJzdHJpbmciKQorICAgICAgICAgICAgcHJvcGVy
dHlOYW1lcyA9IFtwcm9wZXJ0eU5hbWVzXTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB0
aGlzLl9oYXNNdWx0aXBsZVByb3BlcnRpZXMgPSB0cnVlOworICAgICAgICAgICAgdGhpcy5fZWxl
bWVudC5jbGFzc0xpc3QuYWRkKCJtdWx0aXBsZSIpOworICAgICAgICB9CisKKyAgICAgICAgZm9y
IChsZXQgbmFtZSBvZiBwcm9wZXJ0eU5hbWVzKSB7CisgICAgICAgICAgICB0aGlzLl9lbGVtZW50
LmNsYXNzTGlzdC5hZGQobmFtZSk7CisgICAgICAgICAgICB0aGlzLl9wcm9wZXJ0eUluZm9MaXN0
LnB1c2goeworICAgICAgICAgICAgICAgIG5hbWUsCisgICAgICAgICAgICAgICAgdGV4dENvbnRh
aW5zTmFtZVJlZ0V4cDogbmV3IFJlZ0V4cCgiKD86KD86Xnw7KVxccyoiICsgbmFtZSArICJcXHMq
OikiKSwKKyAgICAgICAgICAgICAgICByZXBsYWNlbWVudFJlZ0V4cDogbmV3IFJlZ0V4cCgiKF58
OykoPzpcXHMqKSgiICsgbmFtZSArICIpKC4rPyg/Ojt8JCkpIikKKyAgICAgICAgICAgIH0pCisg
ICAgICAgIH0KKworICAgICAgICB0aGlzLl9wcm9wZXJ0eVJlZmVyZW5jZU5hbWUgPSBwcm9wZXJ0
eU5hbWVzWzBdOworICAgIH0KKworICAgIC8vIFB1YmxpYworCisgICAgZ2V0IGVsZW1lbnQoKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQ7CisgICAgfQorCisgICAgZ2V0IHN0
eWxlKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9zdHlsZTsKKyAgICB9CisKKyAgICBn
ZXQgdmFsdWUoKQorICAgIHsKKyAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3MuCisg
ICAgfQorCisgICAgc2V0IHZhbHVlKHZhbHVlKQorICAgIHsKKyAgICAgICAgLy8gSW1wbGVtZW50
ZWQgYnkgc3ViY2xhc3MuCisgICAgfQorCisgICAgZ2V0IHVuaXRzKCkKKyAgICB7CisgICAgICAg
IC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzLgorICAgIH0KKworICAgIHNldCB1bml0cyh1bml0
KQorICAgIHsKKyAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3MuCisgICAgfQorCisg
ICAgZ2V0IHBsYWNlaG9sZGVyKCkKKyAgICB7CisgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1
YmNsYXNzLgorICAgIH0KKworICAgIHNldCBwbGFjZWhvbGRlcih0ZXh0KQorICAgIHsKKyAgICAg
ICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3MuCisgICAgfQorCisgICAgZ2V0IHN5bnRoZXNp
emVkVmFsdWUoKQorICAgIHsKKyAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3MuCisg
ICAgfQorCisgICAgc2V0IHN1cHByZXNzU3R5bGVUZXh0VXBkYXRlKGZsYWcpCisgICAgeworICAg
ICAgICB0aGlzLl9zdXBwcmVzc1N0eWxlVGV4dFVwZGF0ZSA9IGZsYWc7CisgICAgfQorCisgICAg
c2V0IG1hc3RlclByb3BlcnR5KGZsYWcpCisgICAgeworICAgICAgICB0aGlzLl9tYXN0ZXJQcm9w
ZXJ0eSA9IGZsYWc7CisgICAgfQorCisgICAgZ2V0IG1hc3RlclByb3BlcnR5KCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiB0aGlzLl9tYXN0ZXJQcm9wZXJ0eTsKKyAgICB9CisKKyAgICBzZXQgb3B0
aW9uYWxQcm9wZXJ0eShmbGFnKQorICAgIHsKKyAgICAgICAgdGhpcy5fb3B0aW9uYWxQcm9wZXJ0
eSA9IGZsYWc7CisgICAgfQorCisgICAgZ2V0IG9wdGlvbmFsUHJvcGVydHkoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHRoaXMuX29wdGlvbmFsUHJvcGVydHk7CisgICAgfQorCisgICAgc2V0IGNv
bG9yUHJvcGVydHkoZmxhZykKKyAgICB7CisgICAgICAgIHRoaXMuX2NvbG9yUHJvcGVydHkgPSBm
bGFnOworICAgIH0KKworICAgIGdldCBjb2xvclByb3BlcnR5KCkKKyAgICB7CisgICAgICAgIHJl
dHVybiB0aGlzLl9jb2xvclByb3BlcnR5OworICAgIH0KKworICAgIGdldCBwcm9wZXJ0eVJlZmVy
ZW5jZU5hbWUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3Byb3BlcnR5UmVmZXJlbmNl
TmFtZTsKKyAgICB9CisKKyAgICBzZXQgcHJvcGVydHlSZWZlcmVuY2VOYW1lKG5hbWUpCisgICAg
eworICAgICAgICBpZiAoIW5hbWUgfHwgIW5hbWUubGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgIHRoaXMuX3Byb3BlcnR5UmVmZXJlbmNlTmFtZSA9IG5hbWU7CisgICAgfQor
CisgICAgc2V0IGRpc2FibGVkKGZsYWcpCisgICAgeworICAgICAgICB0aGlzLl9kaXNhYmxlZCA9
IGZsYWc7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgiZGlzYWJsZWQi
LCB0aGlzLl9kaXNhYmxlZCk7CisgICAgICAgIHRoaXMuX3RvZ2dsZVRhYmJpbmdPZlNlbGVjdGFi
bGVFbGVtZW50cyh0aGlzLl9kaXNhYmxlZCk7CisgICAgfQorCisgICAgZ2V0IGRpc2FibGVkKCkK
KyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDsKKyAgICB9CisKKyAgICB1cGRh
dGUoc3R5bGUpCisgICAgeworICAgICAgICBpZiAoc3R5bGUpCisgICAgICAgICAgICB0aGlzLl9z
dHlsZSA9IHN0eWxlOworICAgICAgICBlbHNlIGlmICh0aGlzLl9pZ25vcmVOZXh0VXBkYXRlKSB7
CisgICAgICAgICAgICB0aGlzLl9pZ25vcmVOZXh0VXBkYXRlID0gZmFsc2U7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXRoaXMuX3N0eWxlKQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX3VwZGF0ZWRWYWx1ZXMgPSB7fTsKKyAgICAg
ICAgbGV0IHByb3BlcnR5VmFsdWVzQ29uZmxpY3QgPSBmYWxzZTsKKyAgICAgICAgbGV0IHByb3Bl
cnR5TWlzc2luZyA9IGZhbHNlOworICAgICAgICBmb3IgKGxldCBwcm9wZXJ0eUluZm8gb2YgdGhp
cy5fcHJvcGVydHlJbmZvTGlzdCkgeworICAgICAgICAgICAgbGV0IHByb3BlcnR5ID0gdGhpcy5f
c3R5bGUucHJvcGVydHlGb3JOYW1lKHByb3BlcnR5SW5mby5uYW1lLCB0cnVlKTsKKyAgICAgICAg
ICAgIHByb3BlcnR5TWlzc2luZyA9ICFwcm9wZXJ0eTsKKyAgICAgICAgICAgIGlmIChwcm9wZXJ0
eU1pc3NpbmcgJiYgdGhpcy5fc3R5bGUubm9kZVN0eWxlcykKKyAgICAgICAgICAgICAgICBwcm9w
ZXJ0eSA9IHRoaXMuX3N0eWxlLm5vZGVTdHlsZXMuY29tcHV0ZWRTdHlsZS5wcm9wZXJ0eUZvck5h
bWUocHJvcGVydHlJbmZvLm5hbWUpOworCisgICAgICAgICAgICBpZiAoIXByb3BlcnR5KQorICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBsZXQgc2hvcnRoYW5kID0gcHJv
cGVydHkucmVsYXRlZFNob3J0aGFuZFByb3BlcnR5OworICAgICAgICAgICAgaWYgKCFwcm9wZXJ0
eU1pc3NpbmcgJiYgcHJvcGVydHkuYW5vbnltb3VzICYmIHNob3J0aGFuZCkgeworICAgICAgICAg
ICAgICAgIGxldCB0ZXh0ID0gIiI7CisgICAgICAgICAgICAgICAgZm9yIChsZXQgbG9uZ2hhbmQg
b2Ygc2hvcnRoYW5kLnJlbGF0ZWRMb25naGFuZFByb3BlcnRpZXMpIHsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKCFsb25naGFuZC5hbm9ueW1vdXMpCisgICAgICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKKworICAgICAgICAgICAgICAgICAgICB0ZXh0ICs9IGxvbmdoYW5kLnN5bnRoZXNp
emVkVGV4dDsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoIXRleHQu
bGVuZ3RoKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIHRo
aXMuX3N0eWxlLnRleHQgPSB0aGlzLl9zdHlsZS50ZXh0LnJlcGxhY2Uoc2hvcnRoYW5kLnRleHQs
IHRleHQpOworICAgICAgICAgICAgfQorCisKKyAgICAgICAgICAgIGxldCBuZXdWYWx1ZXMgPSB0
aGlzLmdldFZhbHVlc0Zyb21UZXh0KHByb3BlcnR5LnZhbHVlLCBwcm9wZXJ0eU1pc3NpbmcpOwor
ICAgICAgICAgICAgaWYgKHRoaXMuX3VwZGF0ZWRWYWx1ZXMucGxhY2Vob2xkZXIgJiYgdGhpcy5f
dXBkYXRlZFZhbHVlcy5wbGFjZWhvbGRlciAhPT0gbmV3VmFsdWVzLnBsYWNlaG9sZGVyKQorICAg
ICAgICAgICAgICAgIHByb3BlcnR5VmFsdWVzQ29uZmxpY3QgPSB0cnVlOworCisgICAgICAgICAg
ICBpZiAoIXRoaXMuX3VwZGF0ZWRWYWx1ZXMucGxhY2Vob2xkZXIpCisgICAgICAgICAgICAgICAg
dGhpcy5fdXBkYXRlZFZhbHVlcyA9IG5ld1ZhbHVlczsKKworICAgICAgICAgICAgaWYgKHByb3Bl
cnR5VmFsdWVzQ29uZmxpY3QpIHsKKyAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVkVmFsdWVz
LmNvbmZsaWN0aW5nVmFsdWVzID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB0aGlzLl9zcGVjaWFs
UHJvcGVydHlQbGFjZWhvbGRlckVsZW1lbnQudGV4dENvbnRlbnQgPSAiKCIgKyBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIm11bHRpcGxlIikgKyAiKSI7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAodGhpcy5faGFzTXVsdGlwbGVQ
cm9wZXJ0aWVzKQorICAgICAgICAgICAgdGhpcy5fc3BlY2lhbFByb3BlcnR5UGxhY2Vob2xkZXJF
bGVtZW50LmhpZGRlbiA9ICFwcm9wZXJ0eVZhbHVlc0NvbmZsaWN0OworCisgICAgICAgIHRoaXMu
dXBkYXRlRWRpdG9yVmFsdWVzKHRoaXMuX3VwZGF0ZWRWYWx1ZXMpOworICAgIH0KKworICAgIHVw
ZGF0ZUVkaXRvclZhbHVlcyh1cGRhdGVkVmFsdWVzKQorICAgIHsKKyAgICAgICAgdGhpcy52YWx1
ZSA9IHVwZGF0ZWRWYWx1ZXMudmFsdWU7CisgICAgICAgIHRoaXMudW5pdHMgPSB1cGRhdGVkVmFs
dWVzLnVuaXRzOworICAgICAgICB0aGlzLnBsYWNlaG9sZGVyID0gdXBkYXRlZFZhbHVlcy5wbGFj
ZWhvbGRlcjsKKworICAgICAgICB0aGlzLl9sYXN0VmFsdWUgPSB0aGlzLnN5bnRoZXNpemVkVmFs
dWU7CisgICAgICAgIHRoaXMuZGlzYWJsZWQgPSBmYWxzZTsKKyAgICB9CisKKyAgICBtb2RpZnlQ
cm9wZXJ0eVRleHQodGV4dCwgdmFsdWUpCisgICAgeworICAgICAgICBsZXQgdHJpbW1lZFRleHQg
PSB0ZXh0LnRyaW1SaWdodCgpOworICAgICAgICBmb3IgKGxldCBwcm9wZXJ0eSBvZiB0aGlzLl9w
cm9wZXJ0eUluZm9MaXN0KSB7CisgICAgICAgICAgICBpZiAocHJvcGVydHkudGV4dENvbnRhaW5z
TmFtZVJlZ0V4cC50ZXN0KHRleHQpKQorICAgICAgICAgICAgICAgIHRleHQgPSB0ZXh0LnJlcGxh
Y2UocHJvcGVydHkucmVwbGFjZW1lbnRSZWdFeHAsIHZhbHVlICE9PSBudWxsID8gIiQxJDI6ICIg
KyB2YWx1ZSArICI7IiA6ICIkMSIpOworICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUgIT09IG51
bGwpIHsKKyAgICAgICAgICAgICAgICBpZiAodHJpbW1lZFRleHQudHJpbUxlZnQoKS5sZW5ndGgg
JiYgIXRyaW1tZWRUZXh0LmVuZHNXaXRoKCI7IikpCisgICAgICAgICAgICAgICAgICAgIHRleHQg
Kz0gIjsiOworCisgICAgICAgICAgICAgICAgdGV4dCArPSBwcm9wZXJ0eS5uYW1lICsgIjogIiAr
IHZhbHVlICsgIjsiOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiB0
ZXh0OworICAgIH0KKworICAgIGdldFZhbHVlc0Zyb21UZXh0KHRleHQsIHByb3BlcnR5TWlzc2lu
ZykKKyAgICB7CisgICAgICAgIGxldCBtYXRjaCA9IHRoaXMucGFyc2VWYWx1ZSh0ZXh0KTsKKyAg
ICAgICAgbGV0IHBsYWNlaG9sZGVyID0gbWF0Y2ggPyBtYXRjaFsxXSA6IHRleHQ7CisgICAgICAg
IGxldCB1bml0cyA9IG1hdGNoID8gbWF0Y2hbMl0gOiBudWxsOworICAgICAgICBsZXQgdmFsdWUg
PSBwbGFjZWhvbGRlcjsKKyAgICAgICAgaWYgKHByb3BlcnR5TWlzc2luZykKKyAgICAgICAgICAg
IHZhbHVlID0gdGhpcy52YWx1ZUlzS2V5d29yZCh0ZXh0KSA/IHRleHQgOiBudWxsOworCisgICAg
ICAgIHJldHVybiB7dmFsdWUsIHVuaXRzLCBwbGFjZWhvbGRlciwgcHJvcGVydHlNaXNzaW5nfTsK
KyAgICB9CisKKyAgICBnZXQgcHJvcGVydHlNaXNzaW5nKCkKKyAgICB7CisgICAgICAgIHJldHVy
biB0aGlzLl91cGRhdGVkVmFsdWVzICYmIHRoaXMuX3VwZGF0ZWRWYWx1ZXMucHJvcGVydHlNaXNz
aW5nOworICAgIH0KKworICAgIHZhbHVlSXNDb21wYXRpYmxlKHZhbHVlKQorICAgIHsKKyAgICAg
ICAgaWYgKCF2YWx1ZSB8fCAhdmFsdWUubGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgICAgIHJldHVybiB0aGlzLnZhbHVlSXNLZXl3b3JkKHZhbHVlKSB8fCAhIXRoaXMu
cGFyc2VWYWx1ZSh2YWx1ZSk7CisgICAgfQorCisgICAgdmFsdWVJc0tleXdvcmQodmFsdWUpIHsK
KyAgICAgICAgaWYgKCF0aGlzLl9wb3NzaWJsZVZhbHVlcykKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgICAgICB2YWx1ZSA9IHZhbHVlIHx8IHRoaXMudmFsdWU7CisgICAgICAgIGlm
IChPYmplY3Qua2V5cyh0aGlzLl9wb3NzaWJsZVZhbHVlcy5iYXNpYykuaW5jbHVkZXModmFsdWUp
KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVl
SXNBZHZhbmNlZEtleXdvcmQodmFsdWUpOworICAgIH0KKworICAgIHZhbHVlSXNVbml0KHVuaXQp
CisgICAgeworICAgICAgICBpZiAoIXRoaXMuX3Bvc3NpYmxlVW5pdHMpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICAgICAgdW5pdCA9IHVuaXQgfHwgdGhpcy51bml0czsKKyAgICAg
ICAgaWYgKHRoaXMuX3Bvc3NpYmxlVW5pdHMuYmFzaWMuaW5jbHVkZXModW5pdCkpCisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWVJc0FkdmFuY2Vk
VW5pdCh1bml0KTsKKyAgICB9CisKKyAgICAvLyBQcm90ZWN0ZWQKKworICAgIGdldCBjb250ZW50
RWxlbWVudCgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fY29udGVudEVsZW1lbnQ7Cisg
ICAgfQorCisgICAgZ2V0IHNwZWNpYWxQcm9wZXJ0eVBsYWNlaG9sZGVyRWxlbWVudCgpCisgICAg
eworICAgICAgICByZXR1cm4gdGhpcy5fc3BlY2lhbFByb3BlcnR5UGxhY2Vob2xkZXJFbGVtZW50
OworICAgIH0KKworICAgIHBhcnNlVmFsdWUodGV4dCkKKyAgICB7CisgICAgICAgIHJldHVybiAv
XihbXjtdKylccyo7PyQvLmV4ZWModGV4dCk7CisgICAgfQorCisgICAgLy8gUHJpdmF0ZQorCisg
ICAgX3ZhbHVlSXNBZHZhbmNlZEtleXdvcmQodmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4g
dGhpcy5fcG9zc2libGVWYWx1ZXMuYWR2YW5jZWQgJiYgT2JqZWN0LmtleXModGhpcy5fcG9zc2li
bGVWYWx1ZXMuYWR2YW5jZWQpLmluY2x1ZGVzKHZhbHVlIHx8IHRoaXMudmFsdWUpOworICAgIH0K
KworICAgIF92YWx1ZUlzQWR2YW5jZWRVbml0KHVuaXQpCisgICAgeworICAgICAgICByZXR1cm4g
dGhpcy5fcG9zc2libGVVbml0cy5hZHZhbmNlZCAmJiB0aGlzLl9wb3NzaWJsZVVuaXRzLmFkdmFu
Y2VkLmluY2x1ZGVzKHVuaXQgfHwgdGhpcy51bml0cyk7CisgICAgfQorCisgICAgX2tleUZvcktl
eXdvcmQodmFsdWUpCisgICAgeworICAgICAgICBpZiAoIXZhbHVlIHx8ICF0aGlzLl9wb3NzaWJs
ZVZhbHVlcykKKyAgICAgICAgICAgIHJldHVybiBudWxsOworCisgICAgICAgIHJldHVybiB0aGlz
Ll9wb3NzaWJsZVZhbHVlcy5iYXNpY1t2YWx1ZV0gfHwgKHRoaXMuX3Bvc3NpYmxlVmFsdWVzLmFk
dmFuY2VkICYmIHRoaXMuX3Bvc3NpYmxlVmFsdWVzLmFkdmFuY2VkW3ZhbHVlXSkgfHwgbnVsbDsK
KyAgICB9CisKKyAgICBfdmFsdWVEaWRDaGFuZ2UoKQorICAgIHsKKyAgICAgICAgbGV0IHZhbHVl
ID0gdGhpcy5zeW50aGVzaXplZFZhbHVlOworICAgICAgICBpZiAodmFsdWUgPT09IHRoaXMuX2xh
c3RWYWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBpZiAodGhpcy5f
c3R5bGUgJiYgIXRoaXMuX3N1cHByZXNzU3R5bGVUZXh0VXBkYXRlKSB7CisgICAgICAgICAgICBs
ZXQgbmV3VGV4dCA9IHRoaXMubW9kaWZ5UHJvcGVydHlUZXh0KHRoaXMuX3N0eWxlLnRleHQsIHZh
bHVlKTsKKyAgICAgICAgICAgIHRoaXMuX3N0eWxlLnRleHQgPSBuZXdUZXh0OworCisgICAgICAg
ICAgICBpZiAoIW5ld1RleHQubGVuZ3RoKQorICAgICAgICAgICAgICAgIHRoaXMuX3N0eWxlLnVw
ZGF0ZShudWxsLCBudWxsLCB0aGlzLl9zdHlsZS5zdHlsZVNoZWV0VGV4dFJhbmdlKTsKKyAgICAg
ICAgfQorCisgICAgICAgIHRoaXMuX2xhc3RWYWx1ZSA9IHZhbHVlOworICAgICAgICB0aGlzLl91
cGRhdGVkVmFsdWVzLnByb3BlcnR5TWlzc2luZyA9ICF2YWx1ZTsKKyAgICAgICAgdGhpcy5faWdu
b3JlTmV4dFVwZGF0ZSA9IHRydWU7CisgICAgICAgIHRoaXMuX3NwZWNpYWxQcm9wZXJ0eVBsYWNl
aG9sZGVyRWxlbWVudC5oaWRkZW4gPSB0cnVlOworCisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVu
dFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLkV2ZW50
LlZhbHVlRGlkQ2hhbmdlKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgX3Rp
dGxlRWxlbWVudFByZXBhcmVGb3JDbGljayhldmVudCkKKyAgICB7CisgICAgICAgIHRoaXMuX3Rp
dGxlRWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKCJwcm9wZXJ0eS1yZWZlcmVuY2UtaW5mbyIsIGV2
ZW50LnR5cGUgPT09ICJrZXlkb3duIiAmJiBldmVudC5hbHRLZXkpOworICAgIH0KKworICAgIF90
aXRsZUVsZW1lbnRNb3VzZU92ZXIoZXZlbnQpCisgICAgeworICAgICAgICB0aGlzLl90aXRsZUVs
ZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgicHJvcGVydHktcmVmZXJlbmNlLWluZm8iLCBldmVudC5h
bHRLZXkpOworICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIiwgdGhp
cy5fYm91bmRUaXRsZUVsZW1lbnRQcmVwYXJlRm9yQ2xpY2spOworICAgICAgICBkb2N1bWVudC5h
ZGRFdmVudExpc3RlbmVyKCJrZXl1cCIsIHRoaXMuX2JvdW5kVGl0bGVFbGVtZW50UHJlcGFyZUZv
ckNsaWNrKTsKKyAgICB9CisKKyAgICBfdGl0bGVFbGVtZW50TW91c2VPdXQoKQorICAgIHsKKyAg
ICAgICAgdGhpcy5fdGl0bGVFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoInByb3BlcnR5LXJlZmVy
ZW5jZS1pbmZvIik7CisgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoImtleWRv
d24iLCB0aGlzLl9ib3VuZFRpdGxlRWxlbWVudFByZXBhcmVGb3JDbGljayk7CisgICAgICAgIGRv
Y3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoImtleXVwIiwgdGhpcy5fYm91bmRUaXRsZUVsZW1l
bnRQcmVwYXJlRm9yQ2xpY2spOworICAgIH0KKworICAgIF90aXRsZUVsZW1lbnRDbGljayhldmVu
dCkKKyAgICB7CisgICAgICAgIGlmIChldmVudC5hbHRLZXkpCisgICAgICAgICAgICB0aGlzLl9z
aG93UHJvcGVydHlJbmZvUG9wb3ZlcigpOworICAgIH0KKworICAgIF9oYXNNdWx0aXBsZUNvbmZs
aWN0aW5nVmFsdWVzKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9oYXNNdWx0aXBsZVBy
b3BlcnRpZXMgJiYgIXRoaXMuX3NwZWNpYWxQcm9wZXJ0eVBsYWNlaG9sZGVyRWxlbWVudC5oaWRk
ZW47CisgICAgfQorCisgICAgX3Nob3dQcm9wZXJ0eUluZm9Qb3BvdmVyKCkKKyAgICB7CisgICAg
ICAgIGxldCBwcm9wZXJ0eUluZm9FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgicCIp
OworICAgICAgICBwcm9wZXJ0eUluZm9FbGVtZW50LmNsYXNzTGlzdC5hZGQoInZpc3VhbC1zdHls
ZS1wcm9wZXJ0eS1pbmZvLXBvcG92ZXIiKTsKKworICAgICAgICBsZXQgcHJvcGVydHlJbmZvVGl0
bGVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaDMiKTsKKyAgICAgICAgcHJvcGVy
dHlJbmZvVGl0bGVFbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRo
aXMuX3Byb3BlcnR5UmVmZXJlbmNlTmFtZSkpOworICAgICAgICBwcm9wZXJ0eUluZm9FbGVtZW50
LmFwcGVuZENoaWxkKHByb3BlcnR5SW5mb1RpdGxlRWxlbWVudCk7CisKKyAgICAgICAgcHJvcGVy
dHlJbmZvRWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShXZWJJbnNw
ZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwucHJvcGVydHlSZWZlcmVuY2VJbmZvW3RoaXMu
X3Byb3BlcnR5UmVmZXJlbmNlTmFtZV0pKTsKKworICAgICAgICBsZXQgYm91bmRzID0gV2ViSW5z
cGVjdG9yLlJlY3QucmVjdEZyb21DbGllbnRSZWN0KHRoaXMuX3RpdGxlRWxlbWVudC5nZXRCb3Vu
ZGluZ0NsaWVudFJlY3QoKSk7CisgICAgICAgIGxldCBwb3BvdmVyID0gbmV3IFdlYkluc3BlY3Rv
ci5Qb3BvdmVyKHRoaXMpOworICAgICAgICBwb3BvdmVyLmNvbnRlbnQgPSBwcm9wZXJ0eUluZm9F
bGVtZW50OworICAgICAgICBwb3BvdmVyLnByZXNlbnQoYm91bmRzLnBhZCgyKSwgW1dlYkluc3Bl
Y3Rvci5SZWN0RWRnZS5NSU5fWV0pOworICAgIH0KKworICAgIF90b2dnbGVUYWJiaW5nT2ZTZWxl
Y3RhYmxlRWxlbWVudHMoZGlzYWJsZWQpCisgICAgeworICAgICAgICAvLyBJbXBsZW1lbnRlZCBi
eSBzdWJjbGFzcy4KKyAgICB9Cit9OworCitXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0
eUVkaXRvci5FdmVudCA9IHsKKyAgICBWYWx1ZURpZENoYW5nZTogInZpc3VhbC1zdHlsZS1wcm9w
ZXJ0eS1lZGl0b3ItdmFsdWUtY2hhbmdlZCIKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlVGFiYmVkUHJvcGVydGllc0Nv
bnRyb2xsZXIuY3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
VmlzdWFsU3R5bGVUYWJiZWRQcm9wZXJ0aWVzQ29udHJvbGxlci5jc3MKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgw
ZDExNDM2ZjQxZTlmNWVlZDNjYTNjZGZkNjVlODRkM2IwMmRjZQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlVGFi
YmVkUHJvcGVydGllc0NvbnRyb2xsZXIuY3NzCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisudmlzdWFsLXN0eWxlLXRhYmJlZC1wcm9wZXJ0aWVzLWNvbnRyb2xsZXIgfiA6bm90KC52aXNp
YmxlKSB7CisgICAgdmlzaWJpbGl0eTogaGlkZGVuOworICAgIGhlaWdodDogMDsKK30KKworLnZp
c3VhbC1zdHlsZS10YWJiZWQtcHJvcGVydGllcy1jb250cm9sbGVyID4gLnZpc3VhbC1zdHlsZS10
YWJiZWQtcHJvcGVydGllcy1jb250cm9sbGVyLWNvbnRhaW5lciB7CisgICAgbWFyZ2luOiAwIGF1
dG87Cit9CisKKy52aXN1YWwtc3R5bGUtdGFiYmVkLXByb3BlcnRpZXMtY29udHJvbGxlciA+IC52
aXN1YWwtc3R5bGUtdGFiYmVkLXByb3BlcnRpZXMtY29udHJvbGxlci1jb250YWluZXIgPiBidXR0
b24geworICAgIG1hcmdpbjogMCAycHggMnB4OworICAgIGJvcmRlci1yYWRpdXM6IDNweDsKKyAg
ICBib3JkZXItd2lkdGg6IDAgMXB4OworICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7Cisg
ICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cit9CisKKy52aXN1YWwtc3R5bGUtdGFi
YmVkLXByb3BlcnRpZXMtY29udHJvbGxlciA+IC52aXN1YWwtc3R5bGUtdGFiYmVkLXByb3BlcnRp
ZXMtY29udHJvbGxlci1jb250YWluZXIgPiBidXR0b24uc2VsZWN0ZWQgeworICAgIGNvbG9yOiBo
c2woMCwgMTAwJSwgMTAwJSk7CisgICAgYmFja2dyb3VuZC1jb2xvcjogaHNsKDIxMywgOTIlLCA1
NSUpOworfQorCisudmlzdWFsLXN0eWxlLXRhYmJlZC1wcm9wZXJ0aWVzLWNvbnRyb2xsZXIgPiAu
dmlzdWFsLXN0eWxlLXRhYmJlZC1wcm9wZXJ0aWVzLWNvbnRyb2xsZXItY29udGFpbmVyID4gYnV0
dG9uOm5vdCguc2VsZWN0ZWQpOmhvdmVyIHsKKyAgICBjb2xvcjogaHNsKDAsIDEwMCUsIDEwMCUp
OworICAgIGJhY2tncm91bmQtY29sb3I6IGhzbGEoMjEzLCA5MiUsIDU1JSwgMC41KTsKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3Vh
bFN0eWxlVGFiYmVkUHJvcGVydGllc0NvbnRyb2xsZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZVRhYmJlZFByb3BlcnRpZXNDb250cm9s
bGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmJhYTI0NGM4ZTg4NThiOGE5MDgxYmI0OTI5ZmZmYzc1NzIzYTVk
ZWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9WaXN1YWxTdHlsZVRhYmJlZFByb3BlcnRpZXNDb250cm9sbGVyLmpzCkBAIC0wLDAg
KzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCitXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVUYWJiZWRQcm9w
ZXJ0aWVzQ29udHJvbGxlciA9IGNsYXNzIFZpc3VhbFN0eWxlVGFiYmVkUHJvcGVydGllc0NvbnRy
b2xsZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3cKK3sKKyAgICBjb25z
dHJ1Y3Rvcih0YWJNYXApCisgICAgeworICAgICAgICBzdXBlcigpOworCisgICAgICAgIHRoaXMu
X2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgidmlzdWFsLXN0eWxlLXRhYmJlZC1wcm9wZXJ0aWVzLWNv
bnRyb2xsZXIiKTsKKworICAgICAgICBsZXQgY29udHJvbGxlckNvbnRhaW5lckVsZW1lbnQgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgY29udHJvbGxlckNvbnRhaW5l
ckVsZW1lbnQuY2xhc3NMaXN0LmFkZCgidmlzdWFsLXN0eWxlLXRhYmJlZC1wcm9wZXJ0aWVzLWNv
bnRyb2xsZXItY29udGFpbmVyIik7CisKKyAgICAgICAgdGhpcy5fdGFiQnV0dG9ucyA9IFtdOwor
ICAgICAgICB0aGlzLl90YWJNYXAgPSB0YWJNYXA7CisgICAgICAgIGZvciAobGV0IGtleSBpbiB0
aGlzLl90YWJNYXApIHsKKyAgICAgICAgICAgIGxldCBidXR0b24gPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJidXR0b24iKTsKKyAgICAgICAgICAgIGJ1dHRvbi5pZCA9IGtleTsKKyAgICAgICAg
ICAgIGJ1dHRvbi50ZXh0Q29udGVudCA9IHRoaXMuX3RhYk1hcFtrZXldLnRpdGxlOworICAgICAg
ICAgICAgYnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5faGFuZGxlQnV0dG9u
Q2xpY2tlZC5iaW5kKHRoaXMpKTsKKworICAgICAgICAgICAgY29udHJvbGxlckNvbnRhaW5lckVs
ZW1lbnQuYXBwZW5kQ2hpbGQoYnV0dG9uKTsKKyAgICAgICAgICAgIHRoaXMuX3RhYkJ1dHRvbnMu
cHVzaChidXR0b24pOworICAgICAgICB9CisKKyAgICAgICAgbGV0IGZpcnN0QnV0dG9uID0gdGhp
cy5fdGFiQnV0dG9uc1swXTsKKyAgICAgICAgZmlyc3RCdXR0b24uY2xhc3NMaXN0LmFkZCgic2Vs
ZWN0ZWQiKTsKKyAgICAgICAgdGhpcy5fdGFiTWFwW2ZpcnN0QnV0dG9uLmlkXS5lbGVtZW50LmNs
YXNzTGlzdC5hZGQoInZpc2libGUiKTsKKworICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENo
aWxkKGNvbnRyb2xsZXJDb250YWluZXJFbGVtZW50KTsKKyAgICB9CisKKyAgICAvLyBQcml2YXRl
CisKKyAgICBfaGFuZGxlQnV0dG9uQ2xpY2tlZChldmVudCkKKyAgICB7CisgICAgICAgIGZvciAo
bGV0IGl0ZW0gb2YgdGhpcy5fdGFiQnV0dG9ucykgeworICAgICAgICAgICAgbGV0IHRhYiA9IHRo
aXMuX3RhYk1hcFtpdGVtLmlkXTsKKyAgICAgICAgICAgIGxldCBzZWxlY3RlZCA9IGl0ZW0gPT09
IGV2ZW50LnRhcmdldDsKKyAgICAgICAgICAgIGl0ZW0uY2xhc3NMaXN0LnRvZ2dsZSgic2VsZWN0
ZWQiLCBzZWxlY3RlZCk7CisgICAgICAgICAgICB0YWIuZWxlbWVudC5jbGFzc0xpc3QudG9nZ2xl
KCJ2aXNpYmxlIiwgc2VsZWN0ZWQpOworICAgICAgICAgICAgZm9yIChsZXQgcHJvcGVydHlFZGl0
b3Igb2YgdGFiLnByb3BlcnRpZXMpCisgICAgICAgICAgICAgICAgcHJvcGVydHlFZGl0b3IudXBk
YXRlKCk7CisgICAgICAgIH0KKyAgICB9Cit9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258626</attachid>
            <date>2015-08-10 11:07:30 -0700</date>
            <delta_ts>2015-08-14 00:20:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147576-20150810110716.patch</filename>
            <type>text/plain</type>
            <size>40148</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDMwMGE0YTIwMjQ2Yjg0NjE1NTExYTc5YTEzYzA2
MmI0ZjFiZjkzM2QuLmZjMTRmZjYwYWJhZDJjYmY5MmQ4M2EwNDIzNWU0M2ZmOWIyMTkyYjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk5IEBACisyMDE1LTA4LTEwICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBB
ZGQgdmlzdWFsIGVkaXRvcnMgZm9yIENTUyBwcm9wZXJ0aWVzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDc1NzYKKworICAgICAgICBBZGRlZCBwYXJl
bnQgY2xhc3MgZm9yIHByb3BlcnR5IGVkaXRvcnMgaW4gdGhlIFZpc3VhbCBzdHlsZQorICAgICAg
ICBkZXRhaWxzIHBhbmVsIGluIHRoZSBDU1Mgc2lkZWJhci4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFs
U3R5bGVQcm9wZXJ0eUNvbWJpbmVyLmpzOiBBZGRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5W
aXN1YWxTdHlsZVByb3BlcnR5Q29tYmluZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3Vh
bFN0eWxlUHJvcGVydHlDb21iaW5lci5wcm90b3R5cGUuZ2V0IHN0eWxlKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5Q29tYmluZXIucHJvdG90eXBlLmdldCBzeW50
aGVzaXplZFZhbHVlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5
Q29tYmluZXIucHJvdG90eXBlLm1vZGlmeVByb3BlcnR5VGV4dCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUNvbWJpbmVyLnByb3RvdHlwZS51cGRhdGUpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlDb21iaW5lci5wcm90b3R5cGUu
dXBkYXRlVmFsdWVzRnJvbVRleHQudXBkYXRlQ29tcGF0aWJsZUVkaXRvcik6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUNvbWJpbmVyLnByb3RvdHlwZS51cGRhdGVW
YWx1ZXNGcm9tVGV4dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0
eUNvbWJpbmVyLnByb3RvdHlwZS5wcm9wZXJ0eU1pc3NpbmcpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlZpc3VhbFN0eWxlUHJvcGVydHlDb21iaW5lci5wcm90b3R5cGUucmVzZXRFZGl0b3JWYWx1
ZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlDb21iaW5lci5w
cm90b3R5cGUuX21hcmtFZGl0b3JzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHls
ZVByb3BlcnR5Q29tYmluZXIucHJvdG90eXBlLl9oYW5kbGVQcm9wZXJ0eUVkaXRvclZhbHVlQ2hh
bmdlZCk6CisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlUHJvcGVy
dHlFZGl0b3IuY3NzOiBBZGRlZC4KKyAgICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHktY29u
dGFpbmVyKToKKyAgICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyID4gLnZp
c3VhbC1zdHlsZS1wcm9wZXJ0eS10aXRsZSk6CisgICAgICAgICgudmlzdWFsLXN0eWxlLXByb3Bl
cnR5LWNvbnRhaW5lciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdGl0bGUgPiAucHJvcGVydHkt
cmVmZXJlbmNlLWluZm8pOgorICAgICAgICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWlu
ZXIuZGlzYWJsZWQgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXRpdGxlID4gOm5vdCgucHJvcGVy
dHktcmVmZXJlbmNlLWluZm8pKToKKyAgICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHktY29u
dGFpbmVyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIpOgorICAgICAg
ICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuZGlzYWJsZWQgPiAudmlzdWFsLXN0
eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lcik6CisgICAgICAgICgudmlzdWFsLXN0eWxlLXBy
b3BlcnR5LWNvbnRhaW5lciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVy
IHNlbGVjdCk6CisgICAgICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lciA+IC52
aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyIGlucHV0KToKKyAgICAgICAgKC52
aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLmRpc2FibGVkID4gLnZpc3VhbC1zdHlsZS1w
cm9wZXJ0eS12YWx1ZS1jb250YWluZXIgaW5wdXQpOgorICAgICAgICAoLnZpc3VhbC1zdHlsZS1w
cm9wZXJ0eS1jb250YWluZXIubGF5b3V0LXJldmVyc2VkID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0
eS10aXRsZSk6CisgICAgICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lciA+IC52
aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyID4gLnZpc3VhbC1zdHlsZS1zcGVj
aWFsLXByb3BlcnR5LXBsYWNlaG9sZGVyKToKKyAgICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVy
dHktaW5mby1wb3BvdmVyKToKKyAgICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHktaW5mby1w
b3BvdmVyID4gaDMpOgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHls
ZVByb3BlcnR5RWRpdG9yLmpzOiBBZGRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxT
dHlsZVByb3BlcnR5RWRpdG9yLmNhbm9uaWNhbGl6ZVZhbHVlcyk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvcik6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
VmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5wcm90b3R5cGUuZ2V0IGVsZW1lbnQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IucHJvdG90eXBlLmdldCBz
dHlsZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5w
cm90b3R5cGUuZ2V0IHZhbHVlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVBy
b3BlcnR5RWRpdG9yLnByb3RvdHlwZS5zZXQgdmFsdWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IucHJvdG90eXBlLmdldCB1bml0cyk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5wcm90b3R5cGUuc2V0IHVu
aXRzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnBy
b3RvdHlwZS5nZXQgcGxhY2Vob2xkZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0
eWxlUHJvcGVydHlFZGl0b3IucHJvdG90eXBlLnNldCBwbGFjZWhvbGRlcik6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5wcm90b3R5cGUuZ2V0IHN5bnRo
ZXNpemVkVmFsdWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlF
ZGl0b3IucHJvdG90eXBlLnNldCBzdXBwcmVzc1N0eWxlVGV4dFVwZGF0ZSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5wcm90b3R5cGUuc2V0IG1hc3Rl
clByb3BlcnR5KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRp
dG9yLnByb3RvdHlwZS5nZXQgbWFzdGVyUHJvcGVydHkpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IucHJvdG90eXBlLnNldCBvcHRpb25hbFByb3BlcnR5
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnByb3Rv
dHlwZS5nZXQgb3B0aW9uYWxQcm9wZXJ0eSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFs
U3R5bGVQcm9wZXJ0eUVkaXRvci5wcm90b3R5cGUuc2V0IGNvbG9yUHJvcGVydHkpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IucHJvdG90eXBlLmdldCBj
b2xvclByb3BlcnR5KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5
RWRpdG9yLnByb3RvdHlwZS5nZXQgcHJvcGVydHlSZWZlcmVuY2VOYW1lKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnByb3RvdHlwZS5zZXQgcHJvcGVy
dHlSZWZlcmVuY2VOYW1lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3Bl
cnR5RWRpdG9yLnByb3RvdHlwZS5zZXQgZGlzYWJsZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IucHJvdG90eXBlLmdldCBkaXNhYmxlZCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5wcm90b3R5cGUudXBk
YXRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnBy
b3RvdHlwZS51cGRhdGVFZGl0b3JWYWx1ZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3Vh
bFN0eWxlUHJvcGVydHlFZGl0b3IucHJvdG90eXBlLnJlc2V0RWRpdG9yVmFsdWVzKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnByb3RvdHlwZS5tb2Rp
ZnlQcm9wZXJ0eVRleHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVy
dHlFZGl0b3IucHJvdG90eXBlLmdldFZhbHVlc0Zyb21UZXh0KToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnByb3RvdHlwZS5wcm9wZXJ0eU1pc3Npbmcp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IucHJvdG90
eXBlLnZhbHVlSXNDb21wYXRpYmxlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHls
ZVByb3BlcnR5RWRpdG9yLnByb3RvdHlwZS52YWx1ZUlzU3VwcG9ydGVkS2V5d29yZCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5wcm90b3R5cGUudmFs
dWVJc1N1cHBvcnRlZFVuaXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJv
cGVydHlFZGl0b3IucHJvdG90eXBlLmdldCBjb250ZW50RWxlbWVudCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5wcm90b3R5cGUuZ2V0IHNwZWNpYWxQ
cm9wZXJ0eVBsYWNlaG9sZGVyRWxlbWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFs
U3R5bGVQcm9wZXJ0eUVkaXRvci5wcm90b3R5cGUucGFyc2VWYWx1ZSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5wcm90b3R5cGUuX3ZhbHVlSXNTdXBw
b3J0ZWRBZHZhbmNlZEtleXdvcmQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxl
UHJvcGVydHlFZGl0b3IucHJvdG90eXBlLl92YWx1ZUlzU3VwcG9ydGVkQWR2YW5jZWRVbml0KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnByb3RvdHlw
ZS5fa2V5Rm9yS2V5d29yZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9w
ZXJ0eUVkaXRvci5wcm90b3R5cGUuX3ZhbHVlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnByb3RvdHlwZS5fdGl0bGVFbGVtZW50UHJl
cGFyZUZvckNsaWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5
RWRpdG9yLnByb3RvdHlwZS5fdGl0bGVFbGVtZW50TW91c2VPdmVyKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnByb3RvdHlwZS5fdGl0bGVFbGVtZW50
TW91c2VPdXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0
b3IucHJvdG90eXBlLl90aXRsZUVsZW1lbnRDbGljayk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
VmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5wcm90b3R5cGUuX2hhc011bHRpcGxlQ29uZmxpY3Rp
bmdWYWx1ZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0
b3IucHJvdG90eXBlLl9zaG93UHJvcGVydHlJbmZvUG9wb3Zlcik6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5wcm90b3R5cGUuX3RvZ2dsZVRhYmJpbmdP
ZlNlbGVjdGFibGVFbGVtZW50cyk6CisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Zp
c3VhbFN0eWxlVGFiYmVkUHJvcGVydGllc0NvbnRyb2xsZXIuY3NzOiBBZGRlZC4KKyAgICAgICAg
KC52aXN1YWwtc3R5bGUtdGFiYmVkLXByb3BlcnRpZXMtY29udHJvbGxlciB+IDpub3QoLnZpc2li
bGUpKToKKyAgICAgICAgKC52aXN1YWwtc3R5bGUtdGFiYmVkLXByb3BlcnRpZXMtY29udHJvbGxl
ciA+IC52aXN1YWwtc3R5bGUtdGFiYmVkLXByb3BlcnRpZXMtY29udHJvbGxlci1jb250YWluZXIp
OgorICAgICAgICAoLnZpc3VhbC1zdHlsZS10YWJiZWQtcHJvcGVydGllcy1jb250cm9sbGVyID4g
LnZpc3VhbC1zdHlsZS10YWJiZWQtcHJvcGVydGllcy1jb250cm9sbGVyLWNvbnRhaW5lciA+IGJ1
dHRvbik6CisgICAgICAgICgudmlzdWFsLXN0eWxlLXRhYmJlZC1wcm9wZXJ0aWVzLWNvbnRyb2xs
ZXIgPiAudmlzdWFsLXN0eWxlLXRhYmJlZC1wcm9wZXJ0aWVzLWNvbnRyb2xsZXItY29udGFpbmVy
ID4gYnV0dG9uLnNlbGVjdGVkKToKKyAgICAgICAgKC52aXN1YWwtc3R5bGUtdGFiYmVkLXByb3Bl
cnRpZXMtY29udHJvbGxlciA+IC52aXN1YWwtc3R5bGUtdGFiYmVkLXByb3BlcnRpZXMtY29udHJv
bGxlci1jb250YWluZXIgPiBidXR0b246bm90KC5zZWxlY3RlZCk6aG92ZXIpOgorCisgICAgICAg
ICogVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZVRhYmJlZFByb3BlcnRpZXNDb250cm9s
bGVyLmpzOiBBZGRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVRhYmJlZFBy
b3BlcnRpZXNDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVRh
YmJlZFByb3BlcnRpZXNDb250cm9sbGVyLnByb3RvdHlwZS5faGFuZGxlQnV0dG9uQ2xpY2tlZCk6
CisKIDIwMTUtMDgtMDggIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IFRpbWVsaW5lIHJ1bGVyIGhhbmRsZSB0b29sdGlwIHNob3dzIHdy
b25nIHZhbHVlIHdoZW4gaGFuZGxlcyBvdmVybGFwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZVByb3BlcnR5Q29tYmluZXIu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHls
ZVByb3BlcnR5Q29tYmluZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmY2YzE2NjU1ZGJkNTA0NmI5NjVmY2Nk
ZmJkZDljM2I2OGNjNzk2YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlUHJvcGVydHlDb21iaW5lci5qcwpAQCAt
MCwwICsxLDE4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3Bl
cnR5Q29tYmluZXIgPSBjbGFzcyBWaXN1YWxTdHlsZVByb3BlcnR5Q29tYmluZXIgZXh0ZW5kcyBX
ZWJJbnNwZWN0b3IuT2JqZWN0Cit7CisgICAgY29uc3RydWN0b3IocHJvcGVydHlOYW1lLCBwcm9w
ZXJ0eUVkaXRvcnMpCisgICAgeworICAgICAgICBzdXBlcigpOworCisgICAgICAgIHRoaXMuX3N0
eWxlID0gbnVsbDsKKyAgICAgICAgdGhpcy5fcHJvcGVydHlOYW1lID0gcHJvcGVydHlOYW1lOwor
ICAgICAgICB0aGlzLl9wcm9wZXJ0eU1pc3NpbmcgPSBmYWxzZTsKKyAgICAgICAgdGhpcy5fcHJv
cGVydHlFZGl0b3JzID0gcHJvcGVydHlFZGl0b3JzIHx8IFtdOworICAgICAgICBmb3IgKGxldCBl
ZGl0b3Igb2YgdGhpcy5fcHJvcGVydHlFZGl0b3JzKSB7CisgICAgICAgICAgICBlZGl0b3IuYWRk
RXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5FdmVu
dC5WYWx1ZURpZENoYW5nZSwgdGhpcy5faGFuZGxlUHJvcGVydHlFZGl0b3JWYWx1ZUNoYW5nZWQs
IHRoaXMpOworICAgICAgICAgICAgZWRpdG9yLnN1cHByZXNzU3R5bGVUZXh0VXBkYXRlID0gdHJ1
ZTsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuX3RleHRDb250YWluc05hbWVSZWdFeHAgPSBu
ZXcgUmVnRXhwKCIoPzooPzpefDspXFxzKiIgKyB0aGlzLl9wcm9wZXJ0eU5hbWUgKyAiXFxzKjop
Iik7CisgICAgICAgIHRoaXMuX3JlcGxhY2VtZW50UmVnRXhwID0gbmV3IFJlZ0V4cCgiKF58Oyko
PzpcXHMqKSgiICsgdGhpcy5fcHJvcGVydHlOYW1lICsgIikoLis/KD86O3wkKSkiKTsKKyAgICAg
ICAgdGhpcy5fdmFsdWVSZWdFeHAgPSAvKFteXHNdK1woLitcKXxbXlxzXSspKD86Oz8pL2c7Cisg
ICAgfQorCisgICAgZ2V0IHN0eWxlKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9zdHls
ZTsKKyAgICB9CisKKyAgICBnZXQgc3ludGhlc2l6ZWRWYWx1ZSgpCisgICAgeworICAgICAgICBs
ZXQgdmFsdWUgPSAiIjsKKyAgICAgICAgbGV0IG9uZUVkaXRvckhhc1ZhbHVlID0gZmFsc2U7Cisg
ICAgICAgIGZvciAobGV0IGVkaXRvciBvZiB0aGlzLl9wcm9wZXJ0eUVkaXRvcnMpIHsKKyAgICAg
ICAgICAgIGxldCBlZGl0b3JWYWx1ZSA9IGVkaXRvci5zeW50aGVzaXplZFZhbHVlOworICAgICAg
ICAgICAgaWYgKGVkaXRvclZhbHVlICYmIGVkaXRvclZhbHVlLmxlbmd0aCkKKyAgICAgICAgICAg
ICAgICBvbmVFZGl0b3JIYXNWYWx1ZSA9IHRydWU7CisgICAgICAgICAgICBlbHNlIGlmIChlZGl0
b3Iub3B0aW9uYWxQcm9wZXJ0eSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAg
ICAgICAgaWYgKGVkaXRvci5tYXN0ZXJQcm9wZXJ0eSAmJiBlZGl0b3IudmFsdWVJc1N1cHBvcnRl
ZEtleXdvcmQoKSkgeworICAgICAgICAgICAgICAgIHRoaXMuX21hcmtFZGl0b3JzKGVkaXRvciwg
dHJ1ZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGVkaXRvclZhbHVlOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBpZiAoZWRpdG9yICE9PSB0aGlzLl9wcm9wZXJ0eUVkaXRvcnNbMF0p
CisgICAgICAgICAgICAgICAgdmFsdWUgKz0gIiAiOworCisgICAgICAgICAgICB2YWx1ZSArPSBl
ZGl0b3JWYWx1ZSB8fCAoZWRpdG9yLmNvbG9yUHJvcGVydHkgPyAidHJhbnNwYXJlbnQiIDogMCk7
CisgICAgICAgIH0KKworICAgICAgICB0aGlzLl9tYXJrRWRpdG9ycygpOworICAgICAgICByZXR1
cm4gdmFsdWUubGVuZ3RoICYmIG9uZUVkaXRvckhhc1ZhbHVlID8gdmFsdWUgOiBudWxsOworICAg
IH0KKworICAgIG1vZGlmeVByb3BlcnR5VGV4dCh0ZXh0LCB2YWx1ZSkKKyAgICB7CisgICAgICAg
IGxldCB0cmltbWVkVGV4dCA9IHRleHQudHJpbVJpZ2h0KCk7CisgICAgICAgIGlmICh0aGlzLl90
ZXh0Q29udGFpbnNOYW1lUmVnRXhwLnRlc3QodGV4dCkpCisgICAgICAgICAgICB0ZXh0ID0gdGV4
dC5yZXBsYWNlKHRoaXMuX3JlcGxhY2VtZW50UmVnRXhwLCB2YWx1ZSAhPT0gbnVsbCA/ICIkMSQy
OiAiICsgdmFsdWUgKyAiOyIgOiAiJDEiKTsKKyAgICAgICAgZWxzZSBpZiAodmFsdWUgIT09IG51
bGwpIHsKKyAgICAgICAgICAgIGlmICh0cmltbWVkVGV4dC50cmltTGVmdCgpLmxlbmd0aCAmJiAh
dHJpbW1lZFRleHQuZW5kc1dpdGgoIjsiKSkKKyAgICAgICAgICAgICAgICB0ZXh0ICs9ICI7IjsK
KworICAgICAgICAgICAgdGV4dCArPSB0aGlzLl9wcm9wZXJ0eU5hbWUgKyAiOiAiICsgdmFsdWUg
KyAiOyI7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRleHQ7CisgICAgfQorCisgICAgdXBk
YXRlKHN0eWxlKQorICAgIHsKKyAgICAgICAgaWYgKHN0eWxlKQorICAgICAgICAgICAgdGhpcy5f
c3R5bGUgPSBzdHlsZTsKKyAgICAgICAgZWxzZSBpZiAodGhpcy5faWdub3JlTmV4dFVwZGF0ZSkg
eworICAgICAgICAgICAgdGhpcy5faWdub3JlTmV4dFVwZGF0ZSA9IGZhbHNlOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCF0aGlzLl9zdHlsZSB8fCAhdGhp
cy5fdmFsdWVSZWdFeHApCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbGV0IHByb3Bl
cnR5ID0gdGhpcy5fc3R5bGUucHJvcGVydHlGb3JOYW1lKHRoaXMuX3Byb3BlcnR5TmFtZSwgdHJ1
ZSk7CisgICAgICAgIGxldCBwcm9wZXJ0eU1pc3NpbmcgPSAhcHJvcGVydHk7CisgICAgICAgIGlm
IChwcm9wZXJ0eU1pc3NpbmcgJiYgdGhpcy5fc3R5bGUubm9kZVN0eWxlcykKKyAgICAgICAgICAg
IHByb3BlcnR5ID0gdGhpcy5fc3R5bGUubm9kZVN0eWxlcy5jb21wdXRlZFN0eWxlLnByb3BlcnR5
Rm9yTmFtZSh0aGlzLl9wcm9wZXJ0eU5hbWUpOworCisgICAgICAgIGlmICghcHJvcGVydHkpCisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy51cGRhdGVWYWx1ZXNGcm9tVGV4dChw
cm9wZXJ0eS52YWx1ZSwgcHJvcGVydHlNaXNzaW5nKTsKKyAgICAgICAgdGhpcy5fcHJvcGVydHlN
aXNzaW5nID0gcHJvcGVydHlNaXNzaW5nOworICAgIH0KKworICAgIHVwZGF0ZVZhbHVlc0Zyb21U
ZXh0KHN0eWxlVGV4dCwgcHJvcGVydHlNaXNzaW5nKQorICAgIHsKKyAgICAgICAgaWYgKHN0eWxl
VGV4dCA9PT0gdGhpcy5zeW50aGVzaXplZFZhbHVlKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIGZvciAobGV0IGVkaXRvciBvZiB0aGlzLl9wcm9wZXJ0eUVkaXRvcnMpCisgICAgICAg
ICAgICBlZGl0b3JbV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlDb21iaW5lci5FZGl0
b3JVcGRhdGVkU3ltYm9sXSA9IGZhbHNlOworCisgICAgICAgIGZ1bmN0aW9uIHVwZGF0ZUNvbXBh
dGlibGVFZGl0b3IodmFsdWUpIHsKKyAgICAgICAgICAgIGZvciAobGV0IGVkaXRvciBvZiB0aGlz
Ll9wcm9wZXJ0eUVkaXRvcnMpIHsKKyAgICAgICAgICAgICAgICBpZiAodmFsdWUgJiYgIWVkaXRv
ci52YWx1ZUlzQ29tcGF0aWJsZSh2YWx1ZSkgfHwgZWRpdG9yW1dlYkluc3BlY3Rvci5WaXN1YWxT
dHlsZVByb3BlcnR5Q29tYmluZXIuRWRpdG9yVXBkYXRlZFN5bWJvbF0pCisgICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnRWYWx1
ZUlzS2V5d29yZCAmJiBlZGl0b3IuZGlzYWJsZWQpCisgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworCisgICAgICAgICAgICAgICAgbGV0IHVwZGF0ZWRWYWx1ZXMgPSBlZGl0b3IuZ2V0VmFs
dWVzRnJvbVRleHQodmFsdWUgfHwgIiIsIHByb3BlcnR5TWlzc2luZyk7CisgICAgICAgICAgICAg
ICAgZWRpdG9yLnVwZGF0ZUVkaXRvclZhbHVlcyh1cGRhdGVkVmFsdWVzKTsKKyAgICAgICAgICAg
ICAgICBlZGl0b3JbV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlDb21iaW5lci5FZGl0
b3JVcGRhdGVkU3ltYm9sXSA9IHRydWU7CisKKyAgICAgICAgICAgICAgICBpZiAodmFsdWUpCisg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisg
ICAgICAgIGxldCBtYXRjaGVzID0gc3R5bGVUZXh0Lm1hdGNoKHRoaXMuX3ZhbHVlUmVnRXhwKTsK
KyAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLl9wcm9wZXJ0eUVkaXRvcnMubGVuZ3Ro
OyArK2kpCisgICAgICAgICAgICB1cGRhdGVDb21wYXRpYmxlRWRpdG9yLmNhbGwodGhpcywgbWF0
Y2hlcyAmJiBtYXRjaGVzW2ldKTsKKyAgICB9CisKKyAgICBnZXQgcHJvcGVydHlNaXNzaW5nKCkK
KyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9wcm9wZXJ0eU1pc3Npbmc7CisgICAgfQorCisg
ICAgcmVzZXRFZGl0b3JWYWx1ZXModmFsdWUpCisgICAgeworICAgICAgICB0aGlzLl9pZ25vcmVO
ZXh0VXBkYXRlID0gZmFsc2U7CisgICAgICAgIHRoaXMudXBkYXRlVmFsdWVzRnJvbVRleHQodmFs
dWUgfHwgIiIpOworICAgIH0KKworICAgIC8vIFByaXZhdGUKKworICAgIF9tYXJrRWRpdG9ycyhp
Z25vcmVkRWRpdG9yLCBkaXNhYmxlZCkKKyAgICB7CisgICAgICAgIHRoaXMuX2N1cnJlbnRWYWx1
ZUlzS2V5d29yZCA9IGRpc2FibGVkIHx8IGZhbHNlOworICAgICAgICBmb3IgKGxldCBlZGl0b3Ig
b2YgdGhpcy5fcHJvcGVydHlFZGl0b3JzKSB7CisgICAgICAgICAgICBpZiAoaWdub3JlZEVkaXRv
ciAmJiBlZGl0b3IgPT09IGlnbm9yZWRFZGl0b3IpCisgICAgICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgICAgIGVkaXRvci5kaXNhYmxlZCA9IHRoaXMuX2N1cnJlbnRWYWx1ZUlzS2V5
d29yZDsKKyAgICAgICAgfQorICAgIH0KKworICAgIF9oYW5kbGVQcm9wZXJ0eUVkaXRvclZhbHVl
Q2hhbmdlZCgpCisgICAgeworICAgICAgICB0aGlzLl9pZ25vcmVOZXh0VXBkYXRlID0gdHJ1ZTsK
KyAgICAgICAgbGV0IHZhbHVlID0gdGhpcy5zeW50aGVzaXplZFZhbHVlOworICAgICAgICBpZiAo
dGhpcy5fc3R5bGUpCisgICAgICAgICAgICB0aGlzLl9zdHlsZS50ZXh0ID0gdGhpcy5tb2RpZnlQ
cm9wZXJ0eVRleHQodGhpcy5fc3R5bGUudGV4dCwgdmFsdWUpOworCisgICAgICAgIHRoaXMuX3By
b3BlcnR5TWlzc2luZyA9ICF2YWx1ZTsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0
ZW5lcnMoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IuRXZlbnQuVmFsdWVE
aWRDaGFuZ2UpOworICAgIH0KK307CisKK1dlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5
Q29tYmluZXIuRWRpdG9yVXBkYXRlZFN5bWJvbCA9IFN5bWJvbCgidmlzdWFsLXN0eWxlLXByb3Bl
cnR5LWNvbWJpbmVyLWVkaXRvci11cGRhdGVkIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLmNz
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxl
UHJvcGVydHlFZGl0b3IuY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE3ODYzM2U5ODdkYTdmMDI4NDUwODkwMGRh
MmM3YWZhMzJjNTU3YzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLmNzcwpAQCAtMCww
ICsxLDk5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIg
eworICAgIGRpc3BsYXk6IGZsZXg7CisgICAgd2lkdGg6IDEwMCU7CisgICAgbWluLWhlaWdodDog
MjJweDsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIgPiAudmlzdWFsLXN0
eWxlLXByb3BlcnR5LXRpdGxlIHsKKyAgICBtYXJnaW46IDRweDsKKyAgICB0ZXh0LWFsaWduOiBy
aWdodDsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIgPiAudmlzdWFsLXN0
eWxlLXByb3BlcnR5LXRpdGxlID4gLnByb3BlcnR5LXJlZmVyZW5jZS1pbmZveworICAgIGN1cnNv
cjogaGVscDsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuZGlzYWJsZWQg
PiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXRpdGxlID4gOm5vdCgucHJvcGVydHktcmVmZXJlbmNl
LWluZm8pIHsKKyAgICAtd2Via2l0LWZpbHRlcjogb3BhY2l0eSgwLjcpCit9CisKKy52aXN1YWwt
c3R5bGUtcHJvcGVydHktY29udGFpbmVyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1j
b250YWluZXIgeworICAgIGZsZXg6IDE7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOworfQorCisu
dmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5kaXNhYmxlZCA+IC52aXN1YWwtc3R5bGUt
cHJvcGVydHktdmFsdWUtY29udGFpbmVyIHsKKyAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKKyAg
ICBvcGFjaXR5OiAwLjQ7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyID4g
LnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgc2VsZWN0IHsKKyAgICB3aWR0
aDogMTAwJTsKKyAgICBtYXJnaW46IDFweCAwOworfQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5
LWNvbnRhaW5lciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyIGlucHV0
IHsKKyAgICB3aWR0aDogY2FsYygxMDAlIC0gMXB4KTsKKyAgICBtYXJnaW46IDA7CisgICAgb3V0
bGluZTogbm9uZTsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuZGlzYWJs
ZWQgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciBpbnB1dCB7CisgICAg
cG9pbnRlci1ldmVudHM6IG5vbmUgIWltcG9ydGFudDsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9w
ZXJ0eS1jb250YWluZXIubGF5b3V0LXJldmVyc2VkID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS10
aXRsZSB7CisgICAgb3JkZXI6IDI7CisgICAgdGV4dC1hbGlnbjogbGVmdDsKK30KKworLnZpc3Vh
bC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVl
LWNvbnRhaW5lciA+IC52aXN1YWwtc3R5bGUtc3BlY2lhbC1wcm9wZXJ0eS1wbGFjZWhvbGRlciB7
CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHRvcDogMnB4OworICAgIGxlZnQ6IDFweDsK
KyAgICB3aWR0aDogY2FsYygxMDAlIC0gMjBweCk7CisgICAgbGluZS1oZWlnaHQ6IDE2cHg7Cisg
ICAgdGV4dC1pbmRlbnQ6IDdweDsKKyAgICBib3JkZXItcmFkaXVzOiA0cHg7CisgICAgYmFja2dy
b3VuZC1jb2xvcjogaHNsKDAsIDEwMCUsIDEwMCUpOworICAgIGNvbG9yOiBoc2woMCwgMCUsIDUw
JSk7CisgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CisgICAgb3ZlcmZsb3c6IGhpZGRlbjsKKyAg
ICB3aGl0ZS1zcGFjZTogbm93cmFwOworICAgIHotaW5kZXg6IDE7Cit9CisKKy52aXN1YWwtc3R5
bGUtcHJvcGVydHktaW5mby1wb3BvdmVyIHsKKyAgICB3aWR0aDogMTkwcHg7CisgICAgbWFyZ2lu
OiAwIDVweCAzcHg7CisgICAgcGFkZGluZzogMDsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0
eS1pbmZvLXBvcG92ZXIgPiBoMyB7CisgICAgbWFyZ2luOiA2cHggM3B4OworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVQ
cm9wZXJ0eUVkaXRvci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1Zpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGE0ZWM1ODJmMGVi
NzAzNGExMzRlY2Y3M2Y5MTNhYTIyNjczOGFiZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlUHJvcGVydHlFZGl0
b3IuanMKQEAgLTAsMCArMSw0ODcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXZWJJbnNwZWN0b3IuVmlzdWFs
U3R5bGVQcm9wZXJ0eUVkaXRvciA9IGNsYXNzIFZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IgZXh0
ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0Cit7CisgICAgY29uc3RydWN0b3IocHJvcGVydHlOYW1l
cywgbGFiZWwsIHBvc3NpYmxlVmFsdWVzLCBwb3NzaWJsZVVuaXRzLCBjbGFzc05hbWUsIGxheW91
dFJldmVyc2VkKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKKworICAgICAgICB0aGlzLl9wcm9w
ZXJ0eUluZm9MaXN0ID0gW107CisgICAgICAgIHRoaXMuX3N0eWxlID0gbnVsbDsKKworICAgICAg
ICBmdW5jdGlvbiBjYW5vbmljYWxpemVWYWx1ZXModmFsdWVzKQorICAgICAgICB7CisgICAgICAg
ICAgICBpZiAoIXZhbHVlcykKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAg
IGxldCBjYW5vbmljYWxpemVkVmFsdWVzID0ge307CisgICAgICAgICAgICBmb3IgKGxldCB2YWx1
ZSBvZiB2YWx1ZXMpCisgICAgICAgICAgICAgICAgY2Fub25pY2FsaXplZFZhbHVlc1t2YWx1ZS50
b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1xzL2csICItIildID0gdmFsdWU7CisKKyAgICAgICAgICAg
IHJldHVybiBjYW5vbmljYWxpemVkVmFsdWVzOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5f
cG9zc2libGVWYWx1ZXMgPSBudWxsOworICAgICAgICBpZiAocG9zc2libGVWYWx1ZXMpIHsKKyAg
ICAgICAgICAgIHRoaXMuX3Bvc3NpYmxlVmFsdWVzID0ge307CisgICAgICAgICAgICBpZiAoQXJy
YXkuaXNBcnJheShwb3NzaWJsZVZhbHVlcykpCisgICAgICAgICAgICAgICAgdGhpcy5fcG9zc2li
bGVWYWx1ZXMuYmFzaWMgPSBjYW5vbmljYWxpemVWYWx1ZXMocG9zc2libGVWYWx1ZXMpOworICAg
ICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgdGhpcy5fcG9zc2libGVWYWx1ZXMuYmFz
aWMgPSBjYW5vbmljYWxpemVWYWx1ZXMocG9zc2libGVWYWx1ZXMuYmFzaWMpOworICAgICAgICAg
ICAgICAgIHRoaXMuX3Bvc3NpYmxlVmFsdWVzLmFkdmFuY2VkID0gY2Fub25pY2FsaXplVmFsdWVz
KHBvc3NpYmxlVmFsdWVzLmFkdmFuY2VkKTsKKyAgICAgICAgICAgIH0gCisgICAgICAgIH0KKyAg
ICAgICAgdGhpcy5fcG9zc2libGVVbml0cyA9IG51bGw7CisgICAgICAgIGlmIChwb3NzaWJsZVVu
aXRzKSB7CisgICAgICAgICAgICB0aGlzLl9wb3NzaWJsZVVuaXRzID0ge307CisgICAgICAgICAg
ICBpZiAoQXJyYXkuaXNBcnJheShwb3NzaWJsZVVuaXRzKSkKKyAgICAgICAgICAgICAgICB0aGlz
Ll9wb3NzaWJsZVVuaXRzLmJhc2ljID0gcG9zc2libGVVbml0czsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICB0aGlzLl9wb3NzaWJsZVVuaXRzID0gcG9zc2libGVVbml0czsKKyAg
ICAgICAgfQorCisgICAgICAgIHRoaXMuX2VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJkaXYiKTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJ2aXN1YWwtc3R5
bGUtcHJvcGVydHktY29udGFpbmVyIiwgY2xhc3NOYW1lKTsKKyAgICAgICAgdGhpcy5fZWxlbWVu
dC5jbGFzc0xpc3QudG9nZ2xlKCJsYXlvdXQtcmV2ZXJzZWQiLCBsYXlvdXRSZXZlcnNlZCk7CisK
KyAgICAgICAgaWYgKGxhYmVsICYmIGxhYmVsLmxlbmd0aCkgeworICAgICAgICAgICAgbGV0IHRp
dGxlQ29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgICAg
ICB0aXRsZUNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCJ2aXN1YWwtc3R5bGUtcHJvcGVydHktdGl0
bGUiKTsKKworICAgICAgICAgICAgdGhpcy5fdGl0bGVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgic3BhbiIpOworICAgICAgICAgICAgdGhpcy5fdGl0bGVFbGVtZW50LmFwcGVuZENo
aWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGxhYmVsKSk7CisgICAgICAgICAgICB0aGlzLl90
aXRsZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VvdmVyIiwgdGhpcy5fdGl0bGVFbGVt
ZW50TW91c2VPdmVyLmJpbmQodGhpcykpOworICAgICAgICAgICAgdGhpcy5fdGl0bGVFbGVtZW50
LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlb3V0IiwgdGhpcy5fdGl0bGVFbGVtZW50TW91c2VPdXQu
YmluZCh0aGlzKSk7CisgICAgICAgICAgICB0aGlzLl90aXRsZUVsZW1lbnQuYWRkRXZlbnRMaXN0
ZW5lcigiY2xpY2siLCB0aGlzLl90aXRsZUVsZW1lbnRDbGljay5iaW5kKHRoaXMpKTsKKyAgICAg
ICAgICAgIHRpdGxlQ29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMuX3RpdGxlRWxlbWVudCk7CisK
KyAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGl0bGVDb250YWluZXIpOwor
CisgICAgICAgICAgICB0aGlzLl9ib3VuZFRpdGxlRWxlbWVudFByZXBhcmVGb3JDbGljayA9IHRo
aXMuX3RpdGxlRWxlbWVudFByZXBhcmVGb3JDbGljay5iaW5kKHRoaXMpOworICAgICAgICB9CisK
KyAgICAgICAgdGhpcy5fY29udGVudEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJk
aXYiKTsKKyAgICAgICAgdGhpcy5fY29udGVudEVsZW1lbnQuY2xhc3NMaXN0LmFkZCgidmlzdWFs
LXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciIpOworCisgICAgICAgIHRoaXMuX3NwZWNp
YWxQcm9wZXJ0eVBsYWNlaG9sZGVyRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNw
YW4iKTsKKyAgICAgICAgdGhpcy5fc3BlY2lhbFByb3BlcnR5UGxhY2Vob2xkZXJFbGVtZW50LmNs
YXNzTGlzdC5hZGQoInZpc3VhbC1zdHlsZS1zcGVjaWFsLXByb3BlcnR5LXBsYWNlaG9sZGVyIik7
CisgICAgICAgIHRoaXMuX3NwZWNpYWxQcm9wZXJ0eVBsYWNlaG9sZGVyRWxlbWVudC5oaWRkZW4g
PSB0cnVlOworICAgICAgICB0aGlzLl9jb250ZW50RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9z
cGVjaWFsUHJvcGVydHlQbGFjZWhvbGRlckVsZW1lbnQpOworCisgICAgICAgIHRoaXMuX2VsZW1l
bnQuYXBwZW5kQ2hpbGQodGhpcy5fY29udGVudEVsZW1lbnQpOworCisgICAgICAgIHRoaXMuX3Vw
ZGF0ZWRWYWx1ZXMgPSB7fTsKKyAgICAgICAgdGhpcy5fbGFzdFZhbHVlID0gbnVsbDsKKworICAg
ICAgICBpZiAodHlwZW9mIHByb3BlcnR5TmFtZXMgPT09ICJzdHJpbmciKQorICAgICAgICAgICAg
cHJvcGVydHlOYW1lcyA9IFtwcm9wZXJ0eU5hbWVzXTsKKyAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICB0aGlzLl9oYXNNdWx0aXBsZVByb3BlcnRpZXMgPSB0cnVlOworICAgICAgICAgICAgdGhp
cy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJtdWx0aXBsZSIpOworICAgICAgICB9CisKKyAgICAg
ICAgZm9yIChsZXQgbmFtZSBvZiBwcm9wZXJ0eU5hbWVzKSB7CisgICAgICAgICAgICB0aGlzLl9l
bGVtZW50LmNsYXNzTGlzdC5hZGQobmFtZSk7CisgICAgICAgICAgICB0aGlzLl9wcm9wZXJ0eUlu
Zm9MaXN0LnB1c2goeworICAgICAgICAgICAgICAgIG5hbWUsCisgICAgICAgICAgICAgICAgdGV4
dENvbnRhaW5zTmFtZVJlZ0V4cDogbmV3IFJlZ0V4cCgiKD86KD86Xnw7KVxccyoiICsgbmFtZSAr
ICJcXHMqOikiKSwKKyAgICAgICAgICAgICAgICByZXBsYWNlbWVudFJlZ0V4cDogbmV3IFJlZ0V4
cCgiKF58OykoPzpcXHMqKSgiICsgbmFtZSArICIpKC4rPyg/Ojt8JCkpIikKKyAgICAgICAgICAg
IH0pCisgICAgICAgIH0KKworICAgICAgICB0aGlzLl9wcm9wZXJ0eVJlZmVyZW5jZU5hbWUgPSBw
cm9wZXJ0eU5hbWVzWzBdOworICAgIH0KKworICAgIC8vIFB1YmxpYworCisgICAgZ2V0IGVsZW1l
bnQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQ7CisgICAgfQorCisgICAg
Z2V0IHN0eWxlKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9zdHlsZTsKKyAgICB9CisK
KyAgICBnZXQgdmFsdWUoKQorICAgIHsKKyAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xh
c3MuCisgICAgfQorCisgICAgc2V0IHZhbHVlKHZhbHVlKQorICAgIHsKKyAgICAgICAgLy8gSW1w
bGVtZW50ZWQgYnkgc3ViY2xhc3MuCisgICAgfQorCisgICAgZ2V0IHVuaXRzKCkKKyAgICB7Cisg
ICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzLgorICAgIH0KKworICAgIHNldCB1bml0
cyh1bml0KQorICAgIHsKKyAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3MuCisgICAg
fQorCisgICAgZ2V0IHBsYWNlaG9sZGVyKCkKKyAgICB7CisgICAgICAgIC8vIEltcGxlbWVudGVk
IGJ5IHN1YmNsYXNzLgorICAgIH0KKworICAgIHNldCBwbGFjZWhvbGRlcih0ZXh0KQorICAgIHsK
KyAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3MuCisgICAgfQorCisgICAgZ2V0IHN5
bnRoZXNpemVkVmFsdWUoKQorICAgIHsKKyAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xh
c3MuCisgICAgfQorCisgICAgc2V0IHN1cHByZXNzU3R5bGVUZXh0VXBkYXRlKGZsYWcpCisgICAg
eworICAgICAgICB0aGlzLl9zdXBwcmVzc1N0eWxlVGV4dFVwZGF0ZSA9IGZsYWc7CisgICAgfQor
CisgICAgc2V0IG1hc3RlclByb3BlcnR5KGZsYWcpCisgICAgeworICAgICAgICB0aGlzLl9tYXN0
ZXJQcm9wZXJ0eSA9IGZsYWc7CisgICAgfQorCisgICAgZ2V0IG1hc3RlclByb3BlcnR5KCkKKyAg
ICB7CisgICAgICAgIHJldHVybiB0aGlzLl9tYXN0ZXJQcm9wZXJ0eTsKKyAgICB9CisKKyAgICBz
ZXQgb3B0aW9uYWxQcm9wZXJ0eShmbGFnKQorICAgIHsKKyAgICAgICAgdGhpcy5fb3B0aW9uYWxQ
cm9wZXJ0eSA9IGZsYWc7CisgICAgfQorCisgICAgZ2V0IG9wdGlvbmFsUHJvcGVydHkoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX29wdGlvbmFsUHJvcGVydHk7CisgICAgfQorCisgICAg
c2V0IGNvbG9yUHJvcGVydHkoZmxhZykKKyAgICB7CisgICAgICAgIHRoaXMuX2NvbG9yUHJvcGVy
dHkgPSBmbGFnOworICAgIH0KKworICAgIGdldCBjb2xvclByb3BlcnR5KCkKKyAgICB7CisgICAg
ICAgIHJldHVybiB0aGlzLl9jb2xvclByb3BlcnR5OworICAgIH0KKworICAgIGdldCBwcm9wZXJ0
eVJlZmVyZW5jZU5hbWUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3Byb3BlcnR5UmVm
ZXJlbmNlTmFtZTsKKyAgICB9CisKKyAgICBzZXQgcHJvcGVydHlSZWZlcmVuY2VOYW1lKG5hbWUp
CisgICAgeworICAgICAgICBpZiAoIW5hbWUgfHwgIW5hbWUubGVuZ3RoKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIHRoaXMuX3Byb3BlcnR5UmVmZXJlbmNlTmFtZSA9IG5hbWU7Cisg
ICAgfQorCisgICAgc2V0IGRpc2FibGVkKGZsYWcpCisgICAgeworICAgICAgICB0aGlzLl9kaXNh
YmxlZCA9IGZsYWc7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgiZGlz
YWJsZWQiLCB0aGlzLl9kaXNhYmxlZCk7CisgICAgICAgIHRoaXMuX3RvZ2dsZVRhYmJpbmdPZlNl
bGVjdGFibGVFbGVtZW50cyh0aGlzLl9kaXNhYmxlZCk7CisgICAgfQorCisgICAgZ2V0IGRpc2Fi
bGVkKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDsKKyAgICB9CisKKyAg
ICB1cGRhdGUoc3R5bGUpCisgICAgeworICAgICAgICBpZiAoc3R5bGUpCisgICAgICAgICAgICB0
aGlzLl9zdHlsZSA9IHN0eWxlOworICAgICAgICBlbHNlIGlmICh0aGlzLl9pZ25vcmVOZXh0VXBk
YXRlKSB7CisgICAgICAgICAgICB0aGlzLl9pZ25vcmVOZXh0VXBkYXRlID0gZmFsc2U7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXRoaXMuX3N0eWxlKQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX3VwZGF0ZWRWYWx1ZXMgPSB7fTsK
KyAgICAgICAgbGV0IHByb3BlcnR5VmFsdWVzQ29uZmxpY3QgPSBmYWxzZTsKKyAgICAgICAgbGV0
IHByb3BlcnR5TWlzc2luZyA9IGZhbHNlOworICAgICAgICBmb3IgKGxldCBwcm9wZXJ0eUluZm8g
b2YgdGhpcy5fcHJvcGVydHlJbmZvTGlzdCkgeworICAgICAgICAgICAgbGV0IHByb3BlcnR5ID0g
dGhpcy5fc3R5bGUucHJvcGVydHlGb3JOYW1lKHByb3BlcnR5SW5mby5uYW1lLCB0cnVlKTsKKyAg
ICAgICAgICAgIHByb3BlcnR5TWlzc2luZyA9ICFwcm9wZXJ0eTsKKyAgICAgICAgICAgIGlmIChw
cm9wZXJ0eU1pc3NpbmcgJiYgdGhpcy5fc3R5bGUubm9kZVN0eWxlcykKKyAgICAgICAgICAgICAg
ICBwcm9wZXJ0eSA9IHRoaXMuX3N0eWxlLm5vZGVTdHlsZXMuY29tcHV0ZWRTdHlsZS5wcm9wZXJ0
eUZvck5hbWUocHJvcGVydHlJbmZvLm5hbWUpOworCisgICAgICAgICAgICBpZiAoIXByb3BlcnR5
KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBsZXQgc2hvcnRoYW5k
ID0gcHJvcGVydHkucmVsYXRlZFNob3J0aGFuZFByb3BlcnR5OworICAgICAgICAgICAgaWYgKCFw
cm9wZXJ0eU1pc3NpbmcgJiYgcHJvcGVydHkuYW5vbnltb3VzICYmIHNob3J0aGFuZCkgeworICAg
ICAgICAgICAgICAgIGxldCB0ZXh0ID0gIiI7CisgICAgICAgICAgICAgICAgZm9yIChsZXQgbG9u
Z2hhbmQgb2Ygc2hvcnRoYW5kLnJlbGF0ZWRMb25naGFuZFByb3BlcnRpZXMpIHsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKCFsb25naGFuZC5hbm9ueW1vdXMpCisgICAgICAgICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgICAgICAgICB0ZXh0ICs9IGxvbmdoYW5kLnN5
bnRoZXNpemVkVGV4dDsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAo
IXRleHQubGVuZ3RoKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAg
ICAgIHRoaXMuX3N0eWxlLnRleHQgPSB0aGlzLl9zdHlsZS50ZXh0LnJlcGxhY2Uoc2hvcnRoYW5k
LnRleHQsIHRleHQpOworICAgICAgICAgICAgfQorCisKKyAgICAgICAgICAgIGxldCBuZXdWYWx1
ZXMgPSB0aGlzLmdldFZhbHVlc0Zyb21UZXh0KHByb3BlcnR5LnZhbHVlLCBwcm9wZXJ0eU1pc3Np
bmcpOworICAgICAgICAgICAgaWYgKHRoaXMuX3VwZGF0ZWRWYWx1ZXMucGxhY2Vob2xkZXIgJiYg
dGhpcy5fdXBkYXRlZFZhbHVlcy5wbGFjZWhvbGRlciAhPT0gbmV3VmFsdWVzLnBsYWNlaG9sZGVy
KQorICAgICAgICAgICAgICAgIHByb3BlcnR5VmFsdWVzQ29uZmxpY3QgPSB0cnVlOworCisgICAg
ICAgICAgICBpZiAoIXRoaXMuX3VwZGF0ZWRWYWx1ZXMucGxhY2Vob2xkZXIpCisgICAgICAgICAg
ICAgICAgdGhpcy5fdXBkYXRlZFZhbHVlcyA9IG5ld1ZhbHVlczsKKworICAgICAgICAgICAgaWYg
KHByb3BlcnR5VmFsdWVzQ29uZmxpY3QpIHsKKyAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVk
VmFsdWVzLmNvbmZsaWN0aW5nVmFsdWVzID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB0aGlzLl9z
cGVjaWFsUHJvcGVydHlQbGFjZWhvbGRlckVsZW1lbnQudGV4dENvbnRlbnQgPSAiKCIgKyBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIm11bHRpcGxlIikgKyAiKSI7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAodGhpcy5faGFzTXVs
dGlwbGVQcm9wZXJ0aWVzKQorICAgICAgICAgICAgdGhpcy5fc3BlY2lhbFByb3BlcnR5UGxhY2Vo
b2xkZXJFbGVtZW50LmhpZGRlbiA9ICFwcm9wZXJ0eVZhbHVlc0NvbmZsaWN0OworCisgICAgICAg
IHRoaXMudXBkYXRlRWRpdG9yVmFsdWVzKHRoaXMuX3VwZGF0ZWRWYWx1ZXMpOworICAgIH0KKwor
ICAgIHVwZGF0ZUVkaXRvclZhbHVlcyh1cGRhdGVkVmFsdWVzKQorICAgIHsKKyAgICAgICAgdGhp
cy52YWx1ZSA9IHVwZGF0ZWRWYWx1ZXMudmFsdWU7CisgICAgICAgIHRoaXMudW5pdHMgPSB1cGRh
dGVkVmFsdWVzLnVuaXRzOworICAgICAgICB0aGlzLnBsYWNlaG9sZGVyID0gdXBkYXRlZFZhbHVl
cy5wbGFjZWhvbGRlcjsKKworICAgICAgICB0aGlzLl9sYXN0VmFsdWUgPSB0aGlzLnN5bnRoZXNp
emVkVmFsdWU7CisgICAgICAgIHRoaXMuZGlzYWJsZWQgPSBmYWxzZTsKKyAgICB9CisKKyAgICBy
ZXNldEVkaXRvclZhbHVlcyh2YWx1ZSkKKyAgICB7CisgICAgICAgIHRoaXMuX2lnbm9yZU5leHRV
cGRhdGUgPSBmYWxzZTsKKyAgICAgICAgaWYgKCF2YWx1ZSB8fCAhdmFsdWUubGVuZ3RoKSB7Cisg
ICAgICAgICAgICB0aGlzLnZhbHVlID0gbnVsbDsKKyAgICAgICAgICAgIHRoaXMuX3NwZWNpYWxQ
cm9wZXJ0eVBsYWNlaG9sZGVyRWxlbWVudC5oaWRkZW4gPSBmYWxzZTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGxldCB1cGRhdGVkVmFsdWVzID0gdGhpcy5nZXRW
YWx1ZXNGcm9tVGV4dCh2YWx1ZSk7CisgICAgICAgIHRoaXMudXBkYXRlRWRpdG9yVmFsdWVzKHVw
ZGF0ZWRWYWx1ZXMpOworICAgIH0KKworICAgIG1vZGlmeVByb3BlcnR5VGV4dCh0ZXh0LCB2YWx1
ZSkKKyAgICB7CisgICAgICAgIGxldCB0cmltbWVkVGV4dCA9IHRleHQudHJpbVJpZ2h0KCk7Cisg
ICAgICAgIGZvciAobGV0IHByb3BlcnR5IG9mIHRoaXMuX3Byb3BlcnR5SW5mb0xpc3QpIHsKKyAg
ICAgICAgICAgIGlmIChwcm9wZXJ0eS50ZXh0Q29udGFpbnNOYW1lUmVnRXhwLnRlc3QodGV4dCkp
CisgICAgICAgICAgICAgICAgdGV4dCA9IHRleHQucmVwbGFjZShwcm9wZXJ0eS5yZXBsYWNlbWVu
dFJlZ0V4cCwgdmFsdWUgIT09IG51bGwgPyAiJDEkMjogIiArIHZhbHVlICsgIjsiIDogIiQxIik7
CisgICAgICAgICAgICBlbHNlIGlmICh2YWx1ZSAhPT0gbnVsbCkgeworICAgICAgICAgICAgICAg
IGlmICh0cmltbWVkVGV4dC50cmltTGVmdCgpLmxlbmd0aCAmJiAhdHJpbW1lZFRleHQuZW5kc1dp
dGgoIjsiKSkKKyAgICAgICAgICAgICAgICAgICAgdGV4dCArPSAiOyI7CisKKyAgICAgICAgICAg
ICAgICB0ZXh0ICs9IHByb3BlcnR5Lm5hbWUgKyAiOiAiICsgdmFsdWUgKyAiOyI7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRleHQ7CisgICAgfQorCisgICAgZ2V0
VmFsdWVzRnJvbVRleHQodGV4dCwgcHJvcGVydHlNaXNzaW5nKQorICAgIHsKKyAgICAgICAgbGV0
IG1hdGNoID0gdGhpcy5wYXJzZVZhbHVlKHRleHQpOworICAgICAgICBsZXQgcGxhY2Vob2xkZXIg
PSBtYXRjaCA/IG1hdGNoWzFdIDogdGV4dDsKKyAgICAgICAgbGV0IHVuaXRzID0gbWF0Y2ggPyBt
YXRjaFsyXSA6IG51bGw7CisgICAgICAgIGxldCB2YWx1ZSA9IHBsYWNlaG9sZGVyOworICAgICAg
ICBpZiAocHJvcGVydHlNaXNzaW5nKQorICAgICAgICAgICAgdmFsdWUgPSB0aGlzLnZhbHVlSXNT
dXBwb3J0ZWRLZXl3b3JkKHRleHQpID8gdGV4dCA6IG51bGw7CisKKyAgICAgICAgcmV0dXJuIHt2
YWx1ZSwgdW5pdHMsIHBsYWNlaG9sZGVyLCBwcm9wZXJ0eU1pc3Npbmd9OworICAgIH0KKworICAg
IGdldCBwcm9wZXJ0eU1pc3NpbmcoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3VwZGF0
ZWRWYWx1ZXMgJiYgdGhpcy5fdXBkYXRlZFZhbHVlcy5wcm9wZXJ0eU1pc3Npbmc7CisgICAgfQor
CisgICAgdmFsdWVJc0NvbXBhdGlibGUodmFsdWUpCisgICAgeworICAgICAgICBpZiAoIXZhbHVl
IHx8ICF2YWx1ZS5sZW5ndGgpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAg
cmV0dXJuIHRoaXMudmFsdWVJc1N1cHBvcnRlZEtleXdvcmQodmFsdWUpIHx8ICEhdGhpcy5wYXJz
ZVZhbHVlKHZhbHVlKTsKKyAgICB9CisKKyAgICB2YWx1ZUlzU3VwcG9ydGVkS2V5d29yZCh2YWx1
ZSkgeworICAgICAgICBpZiAoIXRoaXMuX3Bvc3NpYmxlVmFsdWVzKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgICAgIHZhbHVlID0gdmFsdWUgfHwgdGhpcy52YWx1ZTsKKyAgICAg
ICAgaWYgKE9iamVjdC5rZXlzKHRoaXMuX3Bvc3NpYmxlVmFsdWVzLmJhc2ljKS5pbmNsdWRlcyh2
YWx1ZSkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICByZXR1cm4gdGhpcy5f
dmFsdWVJc1N1cHBvcnRlZEFkdmFuY2VkS2V5d29yZCh2YWx1ZSk7CisgICAgfQorCisgICAgdmFs
dWVJc1N1cHBvcnRlZFVuaXQodW5pdCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5fcG9zc2li
bGVVbml0cykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICB1bml0ID0gdW5p
dCB8fCB0aGlzLnVuaXRzOworICAgICAgICBpZiAodGhpcy5fcG9zc2libGVVbml0cy5iYXNpYy5p
bmNsdWRlcyh1bml0KSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgIHJldHVy
biB0aGlzLl92YWx1ZUlzU3VwcG9ydGVkQWR2YW5jZWRVbml0KHVuaXQpOworICAgIH0KKworICAg
IC8vIFByb3RlY3RlZAorCisgICAgZ2V0IGNvbnRlbnRFbGVtZW50KCkKKyAgICB7CisgICAgICAg
IHJldHVybiB0aGlzLl9jb250ZW50RWxlbWVudDsKKyAgICB9CisKKyAgICBnZXQgc3BlY2lhbFBy
b3BlcnR5UGxhY2Vob2xkZXJFbGVtZW50KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9z
cGVjaWFsUHJvcGVydHlQbGFjZWhvbGRlckVsZW1lbnQ7CisgICAgfQorCisgICAgcGFyc2VWYWx1
ZSh0ZXh0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIC9eKFteO10rKVxzKjs/JC8uZXhlYyh0ZXh0
KTsKKyAgICB9CisKKyAgICAvLyBQcml2YXRlCisKKyAgICBfdmFsdWVJc1N1cHBvcnRlZEFkdmFu
Y2VkS2V5d29yZCh2YWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9wb3NzaWJsZVZh
bHVlcy5hZHZhbmNlZCAmJiBPYmplY3Qua2V5cyh0aGlzLl9wb3NzaWJsZVZhbHVlcy5hZHZhbmNl
ZCkuaW5jbHVkZXModmFsdWUgfHwgdGhpcy52YWx1ZSk7CisgICAgfQorCisgICAgX3ZhbHVlSXNT
dXBwb3J0ZWRBZHZhbmNlZFVuaXQodW5pdCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9w
b3NzaWJsZVVuaXRzLmFkdmFuY2VkICYmIHRoaXMuX3Bvc3NpYmxlVW5pdHMuYWR2YW5jZWQuaW5j
bHVkZXModW5pdCB8fCB0aGlzLnVuaXRzKTsKKyAgICB9CisKKyAgICBfa2V5Rm9yS2V5d29yZCh2
YWx1ZSkKKyAgICB7CisgICAgICAgIGlmICghdmFsdWUgfHwgIXRoaXMuX3Bvc3NpYmxlVmFsdWVz
KQorICAgICAgICAgICAgcmV0dXJuIG51bGw7CisKKyAgICAgICAgcmV0dXJuIHRoaXMuX3Bvc3Np
YmxlVmFsdWVzLmJhc2ljW3ZhbHVlXSB8fCAodGhpcy5fcG9zc2libGVWYWx1ZXMuYWR2YW5jZWQg
JiYgdGhpcy5fcG9zc2libGVWYWx1ZXMuYWR2YW5jZWRbdmFsdWVdKSB8fCBudWxsOworICAgIH0K
KworICAgIF92YWx1ZURpZENoYW5nZSgpCisgICAgeworICAgICAgICBsZXQgdmFsdWUgPSB0aGlz
LnN5bnRoZXNpemVkVmFsdWU7CisgICAgICAgIGlmICh2YWx1ZSA9PT0gdGhpcy5fbGFzdFZhbHVl
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGlmICh0aGlzLl9zdHlsZSAm
JiAhdGhpcy5fc3VwcHJlc3NTdHlsZVRleHRVcGRhdGUpIHsKKyAgICAgICAgICAgIGxldCBuZXdU
ZXh0ID0gdGhpcy5tb2RpZnlQcm9wZXJ0eVRleHQodGhpcy5fc3R5bGUudGV4dCwgdmFsdWUpOwor
ICAgICAgICAgICAgdGhpcy5fc3R5bGUudGV4dCA9IG5ld1RleHQ7CisgICAgICAgICAgICBpZiAo
IW5ld1RleHQubGVuZ3RoKQorICAgICAgICAgICAgICAgIHRoaXMuX3N0eWxlLnVwZGF0ZShudWxs
LCBudWxsLCB0aGlzLl9zdHlsZS5zdHlsZVNoZWV0VGV4dFJhbmdlKTsKKyAgICAgICAgfQorCisg
ICAgICAgIHRoaXMuX2xhc3RWYWx1ZSA9IHZhbHVlOworICAgICAgICB0aGlzLl91cGRhdGVkVmFs
dWVzLnByb3BlcnR5TWlzc2luZyA9ICF2YWx1ZTsKKyAgICAgICAgdGhpcy5faWdub3JlTmV4dFVw
ZGF0ZSA9IHRydWU7CisgICAgICAgIHRoaXMuX3NwZWNpYWxQcm9wZXJ0eVBsYWNlaG9sZGVyRWxl
bWVudC5oaWRkZW4gPSB0cnVlOworCisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVu
ZXJzKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLkV2ZW50LlZhbHVlRGlk
Q2hhbmdlKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgX3RpdGxlRWxlbWVu
dFByZXBhcmVGb3JDbGljayhldmVudCkKKyAgICB7CisgICAgICAgIHRoaXMuX3RpdGxlRWxlbWVu
dC5jbGFzc0xpc3QudG9nZ2xlKCJwcm9wZXJ0eS1yZWZlcmVuY2UtaW5mbyIsIGV2ZW50LnR5cGUg
PT09ICJrZXlkb3duIiAmJiBldmVudC5hbHRLZXkpOworICAgIH0KKworICAgIF90aXRsZUVsZW1l
bnRNb3VzZU92ZXIoZXZlbnQpCisgICAgeworICAgICAgICB0aGlzLl90aXRsZUVsZW1lbnQuY2xh
c3NMaXN0LnRvZ2dsZSgicHJvcGVydHktcmVmZXJlbmNlLWluZm8iLCBldmVudC5hbHRLZXkpOwor
ICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIiwgdGhpcy5fYm91bmRU
aXRsZUVsZW1lbnRQcmVwYXJlRm9yQ2xpY2spOworICAgICAgICBkb2N1bWVudC5hZGRFdmVudExp
c3RlbmVyKCJrZXl1cCIsIHRoaXMuX2JvdW5kVGl0bGVFbGVtZW50UHJlcGFyZUZvckNsaWNrKTsK
KyAgICB9CisKKyAgICBfdGl0bGVFbGVtZW50TW91c2VPdXQoKQorICAgIHsKKyAgICAgICAgdGhp
cy5fdGl0bGVFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoInByb3BlcnR5LXJlZmVyZW5jZS1pbmZv
Iik7CisgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoImtleWRvd24iLCB0aGlz
Ll9ib3VuZFRpdGxlRWxlbWVudFByZXBhcmVGb3JDbGljayk7CisgICAgICAgIGRvY3VtZW50LnJl
bW92ZUV2ZW50TGlzdGVuZXIoImtleXVwIiwgdGhpcy5fYm91bmRUaXRsZUVsZW1lbnRQcmVwYXJl
Rm9yQ2xpY2spOworICAgIH0KKworICAgIF90aXRsZUVsZW1lbnRDbGljayhldmVudCkKKyAgICB7
CisgICAgICAgIGlmIChldmVudC5hbHRLZXkpCisgICAgICAgICAgICB0aGlzLl9zaG93UHJvcGVy
dHlJbmZvUG9wb3ZlcigpOworICAgIH0KKworICAgIF9oYXNNdWx0aXBsZUNvbmZsaWN0aW5nVmFs
dWVzKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9oYXNNdWx0aXBsZVByb3BlcnRpZXMg
JiYgIXRoaXMuX3NwZWNpYWxQcm9wZXJ0eVBsYWNlaG9sZGVyRWxlbWVudC5oaWRkZW47CisgICAg
fQorCisgICAgX3Nob3dQcm9wZXJ0eUluZm9Qb3BvdmVyKCkKKyAgICB7CisgICAgICAgIGxldCBw
cm9wZXJ0eUluZm9FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgicCIpOworICAgICAg
ICBwcm9wZXJ0eUluZm9FbGVtZW50LmNsYXNzTGlzdC5hZGQoInZpc3VhbC1zdHlsZS1wcm9wZXJ0
eS1pbmZvLXBvcG92ZXIiKTsKKworICAgICAgICBsZXQgcHJvcGVydHlJbmZvVGl0bGVFbGVtZW50
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaDMiKTsKKyAgICAgICAgcHJvcGVydHlJbmZvVGl0
bGVFbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRoaXMuX3Byb3Bl
cnR5UmVmZXJlbmNlTmFtZSkpOworICAgICAgICBwcm9wZXJ0eUluZm9FbGVtZW50LmFwcGVuZENo
aWxkKHByb3BlcnR5SW5mb1RpdGxlRWxlbWVudCk7CisKKyAgICAgICAgcHJvcGVydHlJbmZvRWxl
bWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShXZWJJbnNwZWN0b3IuVmlz
dWFsU3R5bGVEZXRhaWxzUGFuZWwucHJvcGVydHlSZWZlcmVuY2VJbmZvW3RoaXMuX3Byb3BlcnR5
UmVmZXJlbmNlTmFtZV0pKTsKKworICAgICAgICBsZXQgYm91bmRzID0gV2ViSW5zcGVjdG9yLlJl
Y3QucmVjdEZyb21DbGllbnRSZWN0KHRoaXMuX3RpdGxlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVu
dFJlY3QoKSk7CisgICAgICAgIGxldCBwb3BvdmVyID0gbmV3IFdlYkluc3BlY3Rvci5Qb3BvdmVy
KHRoaXMpOworICAgICAgICBwb3BvdmVyLmNvbnRlbnQgPSBwcm9wZXJ0eUluZm9FbGVtZW50Owor
ICAgICAgICBwb3BvdmVyLnByZXNlbnQoYm91bmRzLnBhZCgyKSwgW1dlYkluc3BlY3Rvci5SZWN0
RWRnZS5NSU5fWV0pOworICAgIH0KKworICAgIF90b2dnbGVUYWJiaW5nT2ZTZWxlY3RhYmxlRWxl
bWVudHMoZGlzYWJsZWQpCisgICAgeworICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFz
cy4KKyAgICB9Cit9OworCitXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5F
dmVudCA9IHsKKyAgICBWYWx1ZURpZENoYW5nZTogInZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0
b3ItdmFsdWUtY2hhbmdlZCIKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlVGFiYmVkUHJvcGVydGllc0NvbnRyb2xsZXIu
Y3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5
bGVUYWJiZWRQcm9wZXJ0aWVzQ29udHJvbGxlci5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgwZDExNDM2ZjQx
ZTlmNWVlZDNjYTNjZGZkNjVlODRkM2IwMmRjZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlVGFiYmVkUHJvcGVy
dGllc0NvbnRyb2xsZXIuY3NzCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisudmlzdWFs
LXN0eWxlLXRhYmJlZC1wcm9wZXJ0aWVzLWNvbnRyb2xsZXIgfiA6bm90KC52aXNpYmxlKSB7Cisg
ICAgdmlzaWJpbGl0eTogaGlkZGVuOworICAgIGhlaWdodDogMDsKK30KKworLnZpc3VhbC1zdHls
ZS10YWJiZWQtcHJvcGVydGllcy1jb250cm9sbGVyID4gLnZpc3VhbC1zdHlsZS10YWJiZWQtcHJv
cGVydGllcy1jb250cm9sbGVyLWNvbnRhaW5lciB7CisgICAgbWFyZ2luOiAwIGF1dG87Cit9CisK
Ky52aXN1YWwtc3R5bGUtdGFiYmVkLXByb3BlcnRpZXMtY29udHJvbGxlciA+IC52aXN1YWwtc3R5
bGUtdGFiYmVkLXByb3BlcnRpZXMtY29udHJvbGxlci1jb250YWluZXIgPiBidXR0b24geworICAg
IG1hcmdpbjogMCAycHggMnB4OworICAgIGJvcmRlci1yYWRpdXM6IDNweDsKKyAgICBib3JkZXIt
d2lkdGg6IDAgMXB4OworICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7CisgICAgYmFja2dy
b3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cit9CisKKy52aXN1YWwtc3R5bGUtdGFiYmVkLXByb3Bl
cnRpZXMtY29udHJvbGxlciA+IC52aXN1YWwtc3R5bGUtdGFiYmVkLXByb3BlcnRpZXMtY29udHJv
bGxlci1jb250YWluZXIgPiBidXR0b24uc2VsZWN0ZWQgeworICAgIGNvbG9yOiBoc2woMCwgMTAw
JSwgMTAwJSk7CisgICAgYmFja2dyb3VuZC1jb2xvcjogaHNsKDIxMywgOTIlLCA1NSUpOworfQor
CisudmlzdWFsLXN0eWxlLXRhYmJlZC1wcm9wZXJ0aWVzLWNvbnRyb2xsZXIgPiAudmlzdWFsLXN0
eWxlLXRhYmJlZC1wcm9wZXJ0aWVzLWNvbnRyb2xsZXItY29udGFpbmVyID4gYnV0dG9uOm5vdCgu
c2VsZWN0ZWQpOmhvdmVyIHsKKyAgICBjb2xvcjogaHNsKDAsIDEwMCUsIDEwMCUpOworICAgIGJh
Y2tncm91bmQtY29sb3I6IGhzbGEoMjEzLCA5MiUsIDU1JSwgMC41KTsKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlVGFi
YmVkUHJvcGVydGllc0NvbnRyb2xsZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZVRhYmJlZFByb3BlcnRpZXNDb250cm9sbGVyLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmJhYTI0NGM4ZTg4NThiOGE5MDgxYmI0OTI5ZmZmYzc1NzIzYTVkZWYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9W
aXN1YWxTdHlsZVRhYmJlZFByb3BlcnRpZXNDb250cm9sbGVyLmpzCkBAIC0wLDAgKzEsNjkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCitXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVUYWJiZWRQcm9wZXJ0aWVzQ29u
dHJvbGxlciA9IGNsYXNzIFZpc3VhbFN0eWxlVGFiYmVkUHJvcGVydGllc0NvbnRyb2xsZXIgZXh0
ZW5kcyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3cKK3sKKyAgICBjb25zdHJ1Y3Rvcih0
YWJNYXApCisgICAgeworICAgICAgICBzdXBlcigpOworCisgICAgICAgIHRoaXMuX2VsZW1lbnQu
Y2xhc3NMaXN0LmFkZCgidmlzdWFsLXN0eWxlLXRhYmJlZC1wcm9wZXJ0aWVzLWNvbnRyb2xsZXIi
KTsKKworICAgICAgICBsZXQgY29udHJvbGxlckNvbnRhaW5lckVsZW1lbnQgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgY29udHJvbGxlckNvbnRhaW5lckVsZW1lbnQu
Y2xhc3NMaXN0LmFkZCgidmlzdWFsLXN0eWxlLXRhYmJlZC1wcm9wZXJ0aWVzLWNvbnRyb2xsZXIt
Y29udGFpbmVyIik7CisKKyAgICAgICAgdGhpcy5fdGFiQnV0dG9ucyA9IFtdOworICAgICAgICB0
aGlzLl90YWJNYXAgPSB0YWJNYXA7CisgICAgICAgIGZvciAobGV0IGtleSBpbiB0aGlzLl90YWJN
YXApIHsKKyAgICAgICAgICAgIGxldCBidXR0b24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJi
dXR0b24iKTsKKyAgICAgICAgICAgIGJ1dHRvbi5pZCA9IGtleTsKKyAgICAgICAgICAgIGJ1dHRv
bi50ZXh0Q29udGVudCA9IHRoaXMuX3RhYk1hcFtrZXldLnRpdGxlOworICAgICAgICAgICAgYnV0
dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5faGFuZGxlQnV0dG9uQ2xpY2tlZC5i
aW5kKHRoaXMpKTsKKworICAgICAgICAgICAgY29udHJvbGxlckNvbnRhaW5lckVsZW1lbnQuYXBw
ZW5kQ2hpbGQoYnV0dG9uKTsKKyAgICAgICAgICAgIHRoaXMuX3RhYkJ1dHRvbnMucHVzaChidXR0
b24pOworICAgICAgICB9CisKKyAgICAgICAgbGV0IGZpcnN0QnV0dG9uID0gdGhpcy5fdGFiQnV0
dG9uc1swXTsKKyAgICAgICAgZmlyc3RCdXR0b24uY2xhc3NMaXN0LmFkZCgic2VsZWN0ZWQiKTsK
KyAgICAgICAgdGhpcy5fdGFiTWFwW2ZpcnN0QnV0dG9uLmlkXS5lbGVtZW50LmNsYXNzTGlzdC5h
ZGQoInZpc2libGUiKTsKKworICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKGNvbnRy
b2xsZXJDb250YWluZXJFbGVtZW50KTsKKyAgICB9CisKKyAgICAvLyBQcml2YXRlCisKKyAgICBf
aGFuZGxlQnV0dG9uQ2xpY2tlZChldmVudCkKKyAgICB7CisgICAgICAgIGZvciAobGV0IGl0ZW0g
b2YgdGhpcy5fdGFiQnV0dG9ucykgeworICAgICAgICAgICAgbGV0IHRhYiA9IHRoaXMuX3RhYk1h
cFtpdGVtLmlkXTsKKyAgICAgICAgICAgIGxldCBzZWxlY3RlZCA9IGl0ZW0gPT09IGV2ZW50LnRh
cmdldDsKKyAgICAgICAgICAgIGl0ZW0uY2xhc3NMaXN0LnRvZ2dsZSgic2VsZWN0ZWQiLCBzZWxl
Y3RlZCk7CisgICAgICAgICAgICB0YWIuZWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKCJ2aXNpYmxl
Iiwgc2VsZWN0ZWQpOworICAgICAgICAgICAgZm9yIChsZXQgcHJvcGVydHlFZGl0b3Igb2YgdGFi
LnByb3BlcnRpZXMpCisgICAgICAgICAgICAgICAgcHJvcGVydHlFZGl0b3IudXBkYXRlKCk7Cisg
ICAgICAgIH0KKyAgICB9Cit9Owo=
</data>
<flag name="review"
          id="283802"
          type_id="1"
          status="+"
          setter="timothy"
    />
    <flag name="commit-queue"
          id="284173"
          type_id="3"
          status="-"
          setter="timothy"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258993</attachid>
            <date>2015-08-14 00:20:14 -0700</date>
            <delta_ts>2015-08-14 12:12:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>147576.txt</filename>
            <type>text/plain</type>
            <size>40901</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDM4MjVhMDIuLjI2OTc3ODAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMSBAQAorMjAxNS0wOC0xMyAgRGV2aW4gUm91c3Nv
ICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQWRkIHZpc3Vh
bCBlZGl0b3JzIGZvciBDU1MgcHJvcGVydGllcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3NTc2CisKKyAgICAgICAgQWRkZWQgcGFyZW50IGNsYXNz
IGZvciBwcm9wZXJ0eSBlZGl0b3JzIGluIHRoZSBWaXN1YWwgc3R5bGUKKyAgICAgICAgZGV0YWls
cyBwYW5lbCBpbiB0aGUgQ1NTIHNpZGViYXIuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltb3Ro
eSBIYXRjaGVyLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZVBy
b3BlcnR5Q29tYmluZXIuanM6IEFkZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0
eWxlUHJvcGVydHlDb21iaW5lcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQ
cm9wZXJ0eUNvbWJpbmVyLnByb3RvdHlwZS5nZXQgc3R5bGUpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlZpc3VhbFN0eWxlUHJvcGVydHlDb21iaW5lci5wcm90b3R5cGUuZ2V0IHN5bnRoZXNpemVk
VmFsdWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlDb21iaW5l
ci5wcm90b3R5cGUubW9kaWZ5UHJvcGVydHlUZXh0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5W
aXN1YWxTdHlsZVByb3BlcnR5Q29tYmluZXIucHJvdG90eXBlLnVwZGF0ZSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUNvbWJpbmVyLnByb3RvdHlwZS51cGRhdGVW
YWx1ZXNGcm9tVGV4dC51cGRhdGVDb21wYXRpYmxlRWRpdG9yKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5Q29tYmluZXIucHJvdG90eXBlLnVwZGF0ZVZhbHVlc0Zy
b21UZXh0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5Q29tYmlu
ZXIucHJvdG90eXBlLnByb3BlcnR5TWlzc2luZyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlz
dWFsU3R5bGVQcm9wZXJ0eUNvbWJpbmVyLnByb3RvdHlwZS5yZXNldEVkaXRvclZhbHVlcyk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUNvbWJpbmVyLnByb3RvdHlw
ZS5fbWFya0VkaXRvcnMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVy
dHlDb21iaW5lci5wcm90b3R5cGUuX2hhbmRsZVByb3BlcnR5RWRpdG9yVmFsdWVDaGFuZ2VkKToK
KworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRv
ci5jc3M6IEFkZGVkLgorICAgICAgICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIp
OgorICAgICAgICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIgPiAudmlzdWFsLXN0
eWxlLXByb3BlcnR5LXRpdGxlKToKKyAgICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHktY29u
dGFpbmVyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS10aXRsZSA+IC5wcm9wZXJ0eS1yZWZlcmVu
Y2UtaW5mbyk6CisgICAgICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5kaXNh
YmxlZCA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdGl0bGUgPiA6bm90KC5wcm9wZXJ0eS1yZWZl
cmVuY2UtaW5mbykpOgorICAgICAgICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIg
PiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lcik6CisgICAgICAgICgudmlz
dWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5kaXNhYmxlZCA+IC52aXN1YWwtc3R5bGUtcHJv
cGVydHktdmFsdWUtY29udGFpbmVyKToKKyAgICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHkt
Y29udGFpbmVyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgc2VsZWN0
KToKKyAgICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyID4gLnZpc3VhbC1z
dHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgaW5wdXQpOgorICAgICAgICAoLnZpc3VhbC1z
dHlsZS1wcm9wZXJ0eS1jb250YWluZXIuZGlzYWJsZWQgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5
LXZhbHVlLWNvbnRhaW5lciBpbnB1dCk6CisgICAgICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5
LWNvbnRhaW5lci5sYXlvdXQtcmV2ZXJzZWQgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXRpdGxl
KToKKyAgICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyID4gLnZpc3VhbC1z
dHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLXNwZWNpYWwtcHJv
cGVydHktcGxhY2Vob2xkZXIpOgorICAgICAgICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1pbmZv
LXBvcG92ZXIpOgorICAgICAgICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1pbmZvLXBvcG92ZXIg
PiBoMyk6CisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlUHJvcGVy
dHlFZGl0b3IuanM6IEFkZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJv
cGVydHlFZGl0b3IuY2Fub25pY2FsaXplVmFsdWVzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5W
aXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxT
dHlsZVByb3BlcnR5RWRpdG9yLnByb3RvdHlwZS5nZXQgZWxlbWVudCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5wcm90b3R5cGUuZ2V0IHN0eWxlKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnByb3RvdHlw
ZS5nZXQgdmFsdWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlF
ZGl0b3IucHJvdG90eXBlLnNldCB2YWx1ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFs
U3R5bGVQcm9wZXJ0eUVkaXRvci5wcm90b3R5cGUuZ2V0IHVuaXRzKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnByb3RvdHlwZS5zZXQgdW5pdHMpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IucHJvdG90eXBl
LmdldCBwbGFjZWhvbGRlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9w
ZXJ0eUVkaXRvci5wcm90b3R5cGUuc2V0IHBsYWNlaG9sZGVyKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnByb3RvdHlwZS5nZXQgc3ludGhlc2l6ZWRW
YWx1ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5w
cm90b3R5cGUuc2V0IHN1cHByZXNzU3R5bGVUZXh0VXBkYXRlKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnByb3RvdHlwZS5zZXQgbWFzdGVyUHJvcGVy
dHkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IucHJv
dG90eXBlLmdldCBtYXN0ZXJQcm9wZXJ0eSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFs
U3R5bGVQcm9wZXJ0eUVkaXRvci5wcm90b3R5cGUuc2V0IG9wdGlvbmFsUHJvcGVydHkpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IucHJvdG90eXBlLmdl
dCBvcHRpb25hbFByb3BlcnR5KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVBy
b3BlcnR5RWRpdG9yLnByb3RvdHlwZS5zZXQgY29sb3JQcm9wZXJ0eSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5wcm90b3R5cGUuZ2V0IGNvbG9yUHJv
cGVydHkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3Iu
cHJvdG90eXBlLmdldCBwcm9wZXJ0eVJlZmVyZW5jZU5hbWUpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IucHJvdG90eXBlLnNldCBwcm9wZXJ0eVJlZmVy
ZW5jZU5hbWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0
b3IucHJvdG90eXBlLnNldCBkaXNhYmxlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFs
U3R5bGVQcm9wZXJ0eUVkaXRvci5wcm90b3R5cGUuZ2V0IGRpc2FibGVkKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnByb3RvdHlwZS51cGRhdGUpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IucHJvdG90eXBl
LnVwZGF0ZUVkaXRvclZhbHVlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQ
cm9wZXJ0eUVkaXRvci5wcm90b3R5cGUucmVzZXRFZGl0b3JWYWx1ZXMpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IucHJvdG90eXBlLm1vZGlmeVByb3Bl
cnR5VGV4dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRv
ci5wcm90b3R5cGUuZ2V0VmFsdWVzRnJvbVRleHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZp
c3VhbFN0eWxlUHJvcGVydHlFZGl0b3IucHJvdG90eXBlLnByb3BlcnR5TWlzc2luZyk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5wcm90b3R5cGUudmFs
dWVJc0NvbXBhdGlibGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVy
dHlFZGl0b3IucHJvdG90eXBlLnZhbHVlSXNTdXBwb3J0ZWRLZXl3b3JkKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnByb3RvdHlwZS52YWx1ZUlzU3Vw
cG9ydGVkVW5pdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVk
aXRvci5wcm90b3R5cGUuZ2V0IGNvbnRlbnRFbGVtZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnByb3RvdHlwZS5nZXQgc3BlY2lhbFByb3BlcnR5
UGxhY2Vob2xkZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVBy
b3BlcnR5RWRpdG9yLnByb3RvdHlwZS5wYXJzZVZhbHVlKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnByb3RvdHlwZS5fdmFsdWVJc1N1cHBvcnRlZEFk
dmFuY2VkS2V5d29yZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0
eUVkaXRvci5wcm90b3R5cGUuX3ZhbHVlSXNTdXBwb3J0ZWRBZHZhbmNlZFVuaXQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IucHJvdG90eXBlLl9jYW5v
bmljYWxpemVkS2V5d29yZEZvcktleSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5
bGVQcm9wZXJ0eUVkaXRvci5wcm90b3R5cGUuX2tleUZvcktleXdvcmQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IucHJvdG90eXBlLl92YWx1ZURpZENo
YW5nZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5w
cm90b3R5cGUuX3JlcGxhY2VTaG9ydGhhbmRQcm9wZXJ0eVdpdGhMb25naGFuZFByb3BlcnRpZXMp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IucHJvdG90
eXBlLl90aXRsZUVsZW1lbnRQcmVwYXJlRm9yQ2xpY2spOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IucHJvdG90eXBlLl90aXRsZUVsZW1lbnRNb3VzZU92
ZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IucHJv
dG90eXBlLl90aXRsZUVsZW1lbnRNb3VzZU91dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlz
dWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5wcm90b3R5cGUuX3RpdGxlRWxlbWVudENsaWNrKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnByb3RvdHlwZS5f
aGFzTXVsdGlwbGVDb25mbGljdGluZ1ZhbHVlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlz
dWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5wcm90b3R5cGUuX3Nob3dQcm9wZXJ0eUluZm9Qb3BvdmVy
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnByb3Rv
dHlwZS5fdG9nZ2xlVGFiYmluZ09mU2VsZWN0YWJsZUVsZW1lbnRzKToKKworICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVUYWJiZWRQcm9wZXJ0aWVzUm93LmNzczogQWRk
ZWQuCisgICAgICAgICgudmlzdWFsLXN0eWxlLXRhYmJlZC1wcm9wZXJ0aWVzLXJvdyB+IDpub3Qo
LnZpc2libGUpKToKKyAgICAgICAgKC52aXN1YWwtc3R5bGUtdGFiYmVkLXByb3BlcnRpZXMtcm93
ID4gLnZpc3VhbC1zdHlsZS10YWJiZWQtcHJvcGVydGllcy1yb3ctY29udGFpbmVyKToKKyAgICAg
ICAgKC52aXN1YWwtc3R5bGUtdGFiYmVkLXByb3BlcnRpZXMtcm93ID4gLnZpc3VhbC1zdHlsZS10
YWJiZWQtcHJvcGVydGllcy1yb3ctY29udGFpbmVyID4gYnV0dG9uKToKKyAgICAgICAgKC52aXN1
YWwtc3R5bGUtdGFiYmVkLXByb3BlcnRpZXMtcm93ID4gLnZpc3VhbC1zdHlsZS10YWJiZWQtcHJv
cGVydGllcy1yb3ctY29udGFpbmVyID4gYnV0dG9uLnNlbGVjdGVkKToKKyAgICAgICAgKC52aXN1
YWwtc3R5bGUtdGFiYmVkLXByb3BlcnRpZXMtcm93ID4gLnZpc3VhbC1zdHlsZS10YWJiZWQtcHJv
cGVydGllcy1yb3ctY29udGFpbmVyID4gYnV0dG9uOm5vdCguc2VsZWN0ZWQpOmhvdmVyKToKKwor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVUYWJiZWRQcm9wZXJ0aWVz
Um93LmpzOiBBZGRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVRhYmJlZFBy
b3BlcnRpZXNSb3cpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlVGFiYmVkUHJv
cGVydGllc1Jvdy5wcm90b3R5cGUuX2hhbmRsZUJ1dHRvbkNsaWNrZWQpOgorCiAyMDE1LTA4LTEz
ICBOaWtpdGEgVmFzaWx5ZXYgIDxudmFzaWx5ZXZAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IENhbid0IHJlc2l6ZSBzcGxpdCBjb25zb2xlIHdoZW4gd2luZG93IGlzIHRvbyBu
YXJyb3cKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1Zpc3VhbFN0eWxlUHJvcGVydHlDb21iaW5lci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlUHJvcGVydHlDb21iaW5lci5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYTdlZDFjCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVQ
cm9wZXJ0eUNvbWJpbmVyLmpzCkBAIC0wLDAgKzEsMTgyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV2ViSW5z
cGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlDb21iaW5lciA9IGNsYXNzIFZpc3VhbFN0eWxlUHJv
cGVydHlDb21iaW5lciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKK3sKKyAgICBjb25zdHJ1
Y3Rvcihwcm9wZXJ0eU5hbWUsIHByb3BlcnR5RWRpdG9ycykKKyAgICB7CisgICAgICAgIHN1cGVy
KCk7CisKKyAgICAgICAgdGhpcy5fc3R5bGUgPSBudWxsOworICAgICAgICB0aGlzLl9wcm9wZXJ0
eU5hbWUgPSBwcm9wZXJ0eU5hbWU7CisgICAgICAgIHRoaXMuX3Byb3BlcnR5TWlzc2luZyA9IGZh
bHNlOworICAgICAgICB0aGlzLl9wcm9wZXJ0eUVkaXRvcnMgPSBwcm9wZXJ0eUVkaXRvcnMgfHwg
W107CisKKyAgICAgICAgZm9yIChsZXQgZWRpdG9yIG9mIHRoaXMuX3Byb3BlcnR5RWRpdG9ycykg
eworICAgICAgICAgICAgZWRpdG9yLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlZpc3Vh
bFN0eWxlUHJvcGVydHlFZGl0b3IuRXZlbnQuVmFsdWVEaWRDaGFuZ2UsIHRoaXMuX2hhbmRsZVBy
b3BlcnR5RWRpdG9yVmFsdWVDaGFuZ2VkLCB0aGlzKTsKKyAgICAgICAgICAgIGVkaXRvci5zdXBw
cmVzc1N0eWxlVGV4dFVwZGF0ZSA9IHRydWU7CisgICAgICAgIH0KKworICAgICAgICB0aGlzLl90
ZXh0Q29udGFpbnNOYW1lUmVnRXhwID0gbmV3IFJlZ0V4cCgiKD86KD86Xnw7KVxccyoiICsgdGhp
cy5fcHJvcGVydHlOYW1lICsgIlxccyo6KSIpOworICAgICAgICB0aGlzLl9yZXBsYWNlbWVudFJl
Z0V4cCA9IG5ldyBSZWdFeHAoIihefDspKD86XFxzKikoIiArIHRoaXMuX3Byb3BlcnR5TmFtZSAr
ICIpKC4rPyg/Ojt8JCkpIik7CisgICAgICAgIHRoaXMuX3ZhbHVlUmVnRXhwID0gLyhbXlxzXStc
KC4rXCl8W15cc10rKSg/Ojs/KS9nOworICAgIH0KKworICAgIGdldCBzdHlsZSgpCisgICAgewor
ICAgICAgICByZXR1cm4gdGhpcy5fc3R5bGU7CisgICAgfQorCisgICAgZ2V0IHN5bnRoZXNpemVk
VmFsdWUoKQorICAgIHsKKyAgICAgICAgbGV0IHZhbHVlID0gIiI7CisgICAgICAgIGxldCBvbmVF
ZGl0b3JIYXNWYWx1ZSA9IGZhbHNlOworICAgICAgICBmb3IgKGxldCBlZGl0b3Igb2YgdGhpcy5f
cHJvcGVydHlFZGl0b3JzKSB7CisgICAgICAgICAgICBsZXQgZWRpdG9yVmFsdWUgPSBlZGl0b3Iu
c3ludGhlc2l6ZWRWYWx1ZTsKKyAgICAgICAgICAgIGlmIChlZGl0b3JWYWx1ZSAmJiBlZGl0b3JW
YWx1ZS5sZW5ndGgpCisgICAgICAgICAgICAgICAgb25lRWRpdG9ySGFzVmFsdWUgPSB0cnVlOwor
ICAgICAgICAgICAgZWxzZSBpZiAoZWRpdG9yLm9wdGlvbmFsUHJvcGVydHkpCisgICAgICAgICAg
ICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIGlmIChlZGl0b3IubWFzdGVyUHJvcGVydHkg
JiYgZWRpdG9yLnZhbHVlSXNTdXBwb3J0ZWRLZXl3b3JkKCkpIHsKKyAgICAgICAgICAgICAgICB0
aGlzLl9tYXJrRWRpdG9ycyhlZGl0b3IsIHRydWUpOworICAgICAgICAgICAgICAgIHJldHVybiBl
ZGl0b3JWYWx1ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGVkaXRvciAhPT0g
dGhpcy5fcHJvcGVydHlFZGl0b3JzWzBdKQorICAgICAgICAgICAgICAgIHZhbHVlICs9ICIgIjsK
KworICAgICAgICAgICAgdmFsdWUgKz0gZWRpdG9yVmFsdWUgfHwgKGVkaXRvci5jb2xvclByb3Bl
cnR5ID8gInRyYW5zcGFyZW50IiA6IDApOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fbWFy
a0VkaXRvcnMoKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlLmxlbmd0aCAmJiBvbmVFZGl0b3JIYXNW
YWx1ZSA/IHZhbHVlIDogbnVsbDsKKyAgICB9CisKKyAgICBtb2RpZnlQcm9wZXJ0eVRleHQodGV4
dCwgdmFsdWUpCisgICAgeworICAgICAgICBsZXQgdHJpbW1lZFRleHQgPSB0ZXh0LnRyaW1SaWdo
dCgpOworICAgICAgICBpZiAodGhpcy5fdGV4dENvbnRhaW5zTmFtZVJlZ0V4cC50ZXN0KHRleHQp
KQorICAgICAgICAgICAgdGV4dCA9IHRleHQucmVwbGFjZSh0aGlzLl9yZXBsYWNlbWVudFJlZ0V4
cCwgdmFsdWUgIT09IG51bGwgPyAiJDEkMjogIiArIHZhbHVlICsgIjsiIDogIiQxIik7CisgICAg
ICAgIGVsc2UgaWYgKHZhbHVlICE9PSBudWxsKSB7CisgICAgICAgICAgICBpZiAodHJpbW1lZFRl
eHQudHJpbUxlZnQoKS5sZW5ndGggJiYgIXRyaW1tZWRUZXh0LmVuZHNXaXRoKCI7IikpCisgICAg
ICAgICAgICAgICAgdGV4dCArPSAiOyI7CisKKyAgICAgICAgICAgIHRleHQgKz0gdGhpcy5fcHJv
cGVydHlOYW1lICsgIjogIiArIHZhbHVlICsgIjsiOworICAgICAgICB9CisgICAgICAgIHJldHVy
biB0ZXh0OworICAgIH0KKworICAgIHVwZGF0ZShzdHlsZSkKKyAgICB7CisgICAgICAgIGlmIChz
dHlsZSkKKyAgICAgICAgICAgIHRoaXMuX3N0eWxlID0gc3R5bGU7CisgICAgICAgIGVsc2UgaWYg
KHRoaXMuX2lnbm9yZU5leHRVcGRhdGUpIHsKKyAgICAgICAgICAgIHRoaXMuX2lnbm9yZU5leHRV
cGRhdGUgPSBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IGlmICghdGhpcy5fc3R5bGUgfHwgIXRoaXMuX3ZhbHVlUmVnRXhwKQorICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgIGxldCBwcm9wZXJ0eSA9IHRoaXMuX3N0eWxlLnByb3BlcnR5Rm9yTmFt
ZSh0aGlzLl9wcm9wZXJ0eU5hbWUsIHRydWUpOworICAgICAgICBsZXQgcHJvcGVydHlNaXNzaW5n
ID0gIXByb3BlcnR5OworICAgICAgICBpZiAocHJvcGVydHlNaXNzaW5nICYmIHRoaXMuX3N0eWxl
Lm5vZGVTdHlsZXMpCisgICAgICAgICAgICBwcm9wZXJ0eSA9IHRoaXMuX3N0eWxlLm5vZGVTdHls
ZXMuY29tcHV0ZWRTdHlsZS5wcm9wZXJ0eUZvck5hbWUodGhpcy5fcHJvcGVydHlOYW1lKTsKKwor
ICAgICAgICBpZiAoIXByb3BlcnR5KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRo
aXMudXBkYXRlVmFsdWVzRnJvbVRleHQocHJvcGVydHkudmFsdWUsIHByb3BlcnR5TWlzc2luZyk7
CisgICAgICAgIHRoaXMuX3Byb3BlcnR5TWlzc2luZyA9IHByb3BlcnR5TWlzc2luZzsKKyAgICB9
CisKKyAgICB1cGRhdGVWYWx1ZXNGcm9tVGV4dChzdHlsZVRleHQsIHByb3BlcnR5TWlzc2luZykK
KyAgICB7CisgICAgICAgIGlmIChzdHlsZVRleHQgPT09IHRoaXMuc3ludGhlc2l6ZWRWYWx1ZSkK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBmb3IgKGxldCBlZGl0b3Igb2YgdGhpcy5f
cHJvcGVydHlFZGl0b3JzKQorICAgICAgICAgICAgZWRpdG9yW1dlYkluc3BlY3Rvci5WaXN1YWxT
dHlsZVByb3BlcnR5Q29tYmluZXIuRWRpdG9yVXBkYXRlZFN5bWJvbF0gPSBmYWxzZTsKKworICAg
ICAgICBmdW5jdGlvbiB1cGRhdGVDb21wYXRpYmxlRWRpdG9yKHZhbHVlKSB7CisgICAgICAgICAg
ICBmb3IgKGxldCBlZGl0b3Igb2YgdGhpcy5fcHJvcGVydHlFZGl0b3JzKSB7CisgICAgICAgICAg
ICAgICAgaWYgKHZhbHVlICYmICFlZGl0b3IudmFsdWVJc0NvbXBhdGlibGUodmFsdWUpIHx8IGVk
aXRvcltXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUNvbWJpbmVyLkVkaXRvclVwZGF0
ZWRTeW1ib2xdKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAg
ICAgIGlmICh0aGlzLl9jdXJyZW50VmFsdWVJc0tleXdvcmQgJiYgZWRpdG9yLmRpc2FibGVkKQor
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgICAgIGxldCB1cGRh
dGVkVmFsdWVzID0gZWRpdG9yLmdldFZhbHVlc0Zyb21UZXh0KHZhbHVlIHx8ICIiLCBwcm9wZXJ0
eU1pc3NpbmcpOworICAgICAgICAgICAgICAgIGVkaXRvci51cGRhdGVFZGl0b3JWYWx1ZXModXBk
YXRlZFZhbHVlcyk7CisgICAgICAgICAgICAgICAgZWRpdG9yW1dlYkluc3BlY3Rvci5WaXN1YWxT
dHlsZVByb3BlcnR5Q29tYmluZXIuRWRpdG9yVXBkYXRlZFN5bWJvbF0gPSB0cnVlOworCisgICAg
ICAgICAgICAgICAgaWYgKHZhbHVlKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBsZXQgbWF0Y2hlcyA9IHN0eWxlVGV4dC5t
YXRjaCh0aGlzLl92YWx1ZVJlZ0V4cCk7CisgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhp
cy5fcHJvcGVydHlFZGl0b3JzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgdXBkYXRlQ29tcGF0
aWJsZUVkaXRvci5jYWxsKHRoaXMsIG1hdGNoZXMgJiYgbWF0Y2hlc1tpXSk7CisgICAgfQorCisg
ICAgZ2V0IHByb3BlcnR5TWlzc2luZygpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fcHJv
cGVydHlNaXNzaW5nOworICAgIH0KKworICAgIHJlc2V0RWRpdG9yVmFsdWVzKHZhbHVlKQorICAg
IHsKKyAgICAgICAgdGhpcy5faWdub3JlTmV4dFVwZGF0ZSA9IGZhbHNlOworICAgICAgICB0aGlz
LnVwZGF0ZVZhbHVlc0Zyb21UZXh0KHZhbHVlIHx8ICIiKTsKKyAgICB9CisKKyAgICAvLyBQcml2
YXRlCisKKyAgICBfbWFya0VkaXRvcnMoaWdub3JlZEVkaXRvciwgZGlzYWJsZWQpCisgICAgewor
ICAgICAgICB0aGlzLl9jdXJyZW50VmFsdWVJc0tleXdvcmQgPSBkaXNhYmxlZCB8fCBmYWxzZTsK
KyAgICAgICAgZm9yIChsZXQgZWRpdG9yIG9mIHRoaXMuX3Byb3BlcnR5RWRpdG9ycykgeworICAg
ICAgICAgICAgaWYgKGlnbm9yZWRFZGl0b3IgJiYgZWRpdG9yID09PSBpZ25vcmVkRWRpdG9yKQor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBlZGl0b3IuZGlzYWJsZWQg
PSB0aGlzLl9jdXJyZW50VmFsdWVJc0tleXdvcmQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBf
aGFuZGxlUHJvcGVydHlFZGl0b3JWYWx1ZUNoYW5nZWQoKQorICAgIHsKKyAgICAgICAgdGhpcy5f
aWdub3JlTmV4dFVwZGF0ZSA9IHRydWU7CisgICAgICAgIGxldCB2YWx1ZSA9IHRoaXMuc3ludGhl
c2l6ZWRWYWx1ZTsKKyAgICAgICAgaWYgKHRoaXMuX3N0eWxlKQorICAgICAgICAgICAgdGhpcy5f
c3R5bGUudGV4dCA9IHRoaXMubW9kaWZ5UHJvcGVydHlUZXh0KHRoaXMuX3N0eWxlLnRleHQsIHZh
bHVlKTsKKworICAgICAgICB0aGlzLl9wcm9wZXJ0eU1pc3NpbmcgPSAhdmFsdWU7CisgICAgICAg
IHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVBy
b3BlcnR5RWRpdG9yLkV2ZW50LlZhbHVlRGlkQ2hhbmdlKTsKKyAgICB9Cit9OworCitXZWJJbnNw
ZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUNvbWJpbmVyLkVkaXRvclVwZGF0ZWRTeW1ib2wgPSBT
eW1ib2woInZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb21iaW5lci1lZGl0b3ItdXBkYXRlZCIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlz
dWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLmNzcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi40NzBjNTBlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVQcm9wZXJ0eUVk
aXRvci5jc3MKQEAgLTAsMCArMSw5OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy52aXN1YWwtc3R5bGUtcHJv
cGVydHktY29udGFpbmVyIHsKKyAgICBkaXNwbGF5OiBmbGV4OworICAgIHdpZHRoOiAxMDAlOwor
ICAgIG1pbi1oZWlnaHQ6IDIycHg7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFp
bmVyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS10aXRsZSB7CisgICAgbWFyZ2luOiA0cHg7Cisg
ICAgdGV4dC1hbGlnbjogcmlnaHQ7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFp
bmVyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS10aXRsZSA+IC5wcm9wZXJ0eS1yZWZlcmVuY2Ut
aW5mb3sKKyAgICBjdXJzb3I6IGhlbHA7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktY29u
dGFpbmVyLmRpc2FibGVkID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS10aXRsZSA+IDpub3QoLnBy
b3BlcnR5LXJlZmVyZW5jZS1pbmZvKSB7CisgICAgZmlsdGVyOiBvcGFjaXR5KDAuNykKK30KKwor
LnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5
LXZhbHVlLWNvbnRhaW5lciB7CisgICAgZmxleDogMTsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7
Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLmRpc2FibGVkID4gLnZpc3Vh
bC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgeworICAgIHBvaW50ZXItZXZlbnRzOiBu
b25lOworICAgIG9wYWNpdHk6IDAuNDsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250
YWluZXIgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciBzZWxlY3Qgewor
ICAgIHdpZHRoOiAxMDAlOworICAgIG1hcmdpbjogMXB4IDA7Cit9CisKKy52aXN1YWwtc3R5bGUt
cHJvcGVydHktY29udGFpbmVyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWlu
ZXIgaW5wdXQgeworICAgIHdpZHRoOiBjYWxjKDEwMCUgLSAxcHgpOworICAgIG1hcmdpbjogMDsK
KyAgICBvdXRsaW5lOiBub25lOworfQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5l
ci5kaXNhYmxlZCA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyIGlucHV0
IHsKKyAgICBwb2ludGVyLWV2ZW50czogbm9uZSAhaW1wb3J0YW50OworfQorCisudmlzdWFsLXN0
eWxlLXByb3BlcnR5LWNvbnRhaW5lci5sYXlvdXQtcmV2ZXJzZWQgPiAudmlzdWFsLXN0eWxlLXBy
b3BlcnR5LXRpdGxlIHsKKyAgICBvcmRlcjogMjsKKyAgICB0ZXh0LWFsaWduOiBsZWZ0OworfQor
CisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lciA+IC52aXN1YWwtc3R5bGUtcHJvcGVy
dHktdmFsdWUtY29udGFpbmVyID4gLnZpc3VhbC1zdHlsZS1zcGVjaWFsLXByb3BlcnR5LXBsYWNl
aG9sZGVyIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgdG9wOiAycHg7CisgICAgbGVm
dDogMXB4OworICAgIHdpZHRoOiBjYWxjKDEwMCUgLSAyMHB4KTsKKyAgICBsaW5lLWhlaWdodDog
MTZweDsKKyAgICB0ZXh0LWluZGVudDogN3B4OworICAgIGJvcmRlci1yYWRpdXM6IDRweDsKKyAg
ICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKKyAgICBjb2xvcjogaHNsKDAsIDAlLCA1MCUpOwor
ICAgIHBvaW50ZXItZXZlbnRzOiBub25lOworICAgIG92ZXJmbG93OiBoaWRkZW47CisgICAgd2hp
dGUtc3BhY2U6IG5vd3JhcDsKKyAgICB6LWluZGV4OiAxOworfQorCisudmlzdWFsLXN0eWxlLXBy
b3BlcnR5LWluZm8tcG9wb3ZlciB7CisgICAgd2lkdGg6IDE5MHB4OworICAgIG1hcmdpbjogMCA1
cHggM3B4OworICAgIHBhZGRpbmc6IDA7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktaW5m
by1wb3BvdmVyID4gaDMgeworICAgIG1hcmdpbjogNnB4IDNweDsKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlUHJvcGVy
dHlFZGl0b3IuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9W
aXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjFkZGRmMDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLmpzCkBAIC0wLDAg
KzEsNTI1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlF
ZGl0b3IgPSBjbGFzcyBWaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yIGV4dGVuZHMgV2ViSW5zcGVj
dG9yLk9iamVjdAoreworICAgIGNvbnN0cnVjdG9yKHByb3BlcnR5TmFtZXMsIGxhYmVsLCBwb3Nz
aWJsZVZhbHVlcywgcG9zc2libGVVbml0cywgY2xhc3NOYW1lLCBsYXlvdXRSZXZlcnNlZCkKKyAg
ICB7CisgICAgICAgIHN1cGVyKCk7CisKKyAgICAgICAgdGhpcy5fcHJvcGVydHlJbmZvTGlzdCA9
IFtdOworICAgICAgICB0aGlzLl9zdHlsZSA9IG51bGw7CisKKyAgICAgICAgZnVuY3Rpb24gY2Fu
b25pY2FsaXplVmFsdWVzKHZhbHVlcykKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCF2YWx1
ZXMpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBsZXQgY2Fub25pY2Fs
aXplZFZhbHVlcyA9IHt9OworICAgICAgICAgICAgZm9yIChsZXQgdmFsdWUgb2YgdmFsdWVzKQor
ICAgICAgICAgICAgICAgIGNhbm9uaWNhbGl6ZWRWYWx1ZXNbdmFsdWUudG9Mb3dlckNhc2UoKS5y
ZXBsYWNlKC9ccy9nLCAiLSIpXSA9IHZhbHVlOworCisgICAgICAgICAgICByZXR1cm4gY2Fub25p
Y2FsaXplZFZhbHVlczsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuX3Bvc3NpYmxlVmFsdWVz
ID0gbnVsbDsKKyAgICAgICAgaWYgKHBvc3NpYmxlVmFsdWVzKSB7CisgICAgICAgICAgICB0aGlz
Ll9wb3NzaWJsZVZhbHVlcyA9IHt9OworICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocG9z
c2libGVWYWx1ZXMpKQorICAgICAgICAgICAgICAgIHRoaXMuX3Bvc3NpYmxlVmFsdWVzLmJhc2lj
ID0gY2Fub25pY2FsaXplVmFsdWVzKHBvc3NpYmxlVmFsdWVzKTsKKyAgICAgICAgICAgIGVsc2Ug
eworICAgICAgICAgICAgICAgIHRoaXMuX3Bvc3NpYmxlVmFsdWVzLmJhc2ljID0gY2Fub25pY2Fs
aXplVmFsdWVzKHBvc3NpYmxlVmFsdWVzLmJhc2ljKTsKKyAgICAgICAgICAgICAgICB0aGlzLl9w
b3NzaWJsZVZhbHVlcy5hZHZhbmNlZCA9IGNhbm9uaWNhbGl6ZVZhbHVlcyhwb3NzaWJsZVZhbHVl
cy5hZHZhbmNlZCk7CisgICAgICAgICAgICB9IAorICAgICAgICB9CisgICAgICAgIHRoaXMuX3Bv
c3NpYmxlVW5pdHMgPSBudWxsOworICAgICAgICBpZiAocG9zc2libGVVbml0cykgeworICAgICAg
ICAgICAgdGhpcy5fcG9zc2libGVVbml0cyA9IHt9OworICAgICAgICAgICAgaWYgKEFycmF5Lmlz
QXJyYXkocG9zc2libGVVbml0cykpCisgICAgICAgICAgICAgICAgdGhpcy5fcG9zc2libGVVbml0
cy5iYXNpYyA9IHBvc3NpYmxlVW5pdHM7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgdGhpcy5fcG9zc2libGVVbml0cyA9IHBvc3NpYmxlVW5pdHM7CisgICAgICAgIH0KKworICAg
ICAgICB0aGlzLl9lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAg
ICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgidmlzdWFsLXN0eWxlLXByb3BlcnR5LWNv
bnRhaW5lciIsIGNsYXNzTmFtZSk7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnRv
Z2dsZSgibGF5b3V0LXJldmVyc2VkIiwgbGF5b3V0UmV2ZXJzZWQpOworCisgICAgICAgIGlmIChs
YWJlbCAmJiBsYWJlbC5sZW5ndGgpIHsKKyAgICAgICAgICAgIGxldCB0aXRsZUNvbnRhaW5lciA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICAgICAgdGl0bGVDb250YWlu
ZXIuY2xhc3NMaXN0LmFkZCgidmlzdWFsLXN0eWxlLXByb3BlcnR5LXRpdGxlIik7CisKKyAgICAg
ICAgICAgIHRoaXMuX3RpdGxlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4i
KTsKKyAgICAgICAgICAgIHRoaXMuX3RpdGxlRWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5j
cmVhdGVUZXh0Tm9kZShsYWJlbCkpOworICAgICAgICAgICAgdGhpcy5fdGl0bGVFbGVtZW50LmFk
ZEV2ZW50TGlzdGVuZXIoIm1vdXNlb3ZlciIsIHRoaXMuX3RpdGxlRWxlbWVudE1vdXNlT3Zlci5i
aW5kKHRoaXMpKTsKKyAgICAgICAgICAgIHRoaXMuX3RpdGxlRWxlbWVudC5hZGRFdmVudExpc3Rl
bmVyKCJtb3VzZW91dCIsIHRoaXMuX3RpdGxlRWxlbWVudE1vdXNlT3V0LmJpbmQodGhpcykpOwor
ICAgICAgICAgICAgdGhpcy5fdGl0bGVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwg
dGhpcy5fdGl0bGVFbGVtZW50Q2xpY2suYmluZCh0aGlzKSk7CisgICAgICAgICAgICB0aXRsZUNv
bnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLl90aXRsZUVsZW1lbnQpOworCisgICAgICAgICAgICB0
aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRpdGxlQ29udGFpbmVyKTsKKworICAgICAgICAgICAg
dGhpcy5fYm91bmRUaXRsZUVsZW1lbnRQcmVwYXJlRm9yQ2xpY2sgPSB0aGlzLl90aXRsZUVsZW1l
bnRQcmVwYXJlRm9yQ2xpY2suYmluZCh0aGlzKTsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMu
X2NvbnRlbnRFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAg
IHRoaXMuX2NvbnRlbnRFbGVtZW50LmNsYXNzTGlzdC5hZGQoInZpc3VhbC1zdHlsZS1wcm9wZXJ0
eS12YWx1ZS1jb250YWluZXIiKTsKKworICAgICAgICB0aGlzLl9zcGVjaWFsUHJvcGVydHlQbGFj
ZWhvbGRlckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CisgICAgICAg
IHRoaXMuX3NwZWNpYWxQcm9wZXJ0eVBsYWNlaG9sZGVyRWxlbWVudC5jbGFzc0xpc3QuYWRkKCJ2
aXN1YWwtc3R5bGUtc3BlY2lhbC1wcm9wZXJ0eS1wbGFjZWhvbGRlciIpOworICAgICAgICB0aGlz
Ll9zcGVjaWFsUHJvcGVydHlQbGFjZWhvbGRlckVsZW1lbnQuaGlkZGVuID0gdHJ1ZTsKKyAgICAg
ICAgdGhpcy5fY29udGVudEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fc3BlY2lhbFByb3BlcnR5
UGxhY2Vob2xkZXJFbGVtZW50KTsKKworICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxk
KHRoaXMuX2NvbnRlbnRFbGVtZW50KTsKKworICAgICAgICB0aGlzLl91cGRhdGVkVmFsdWVzID0g
e307CisgICAgICAgIHRoaXMuX2xhc3RWYWx1ZSA9IG51bGw7CisKKyAgICAgICAgaWYgKHR5cGVv
ZiBwcm9wZXJ0eU5hbWVzID09PSAic3RyaW5nIikKKyAgICAgICAgICAgIHByb3BlcnR5TmFtZXMg
PSBbcHJvcGVydHlOYW1lc107CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdGhpcy5faGFz
TXVsdGlwbGVQcm9wZXJ0aWVzID0gdHJ1ZTsKKyAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xh
c3NMaXN0LmFkZCgibXVsdGlwbGUiKTsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAobGV0IG5h
bWUgb2YgcHJvcGVydHlOYW1lcykgeworICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xp
c3QuYWRkKG5hbWUpOworICAgICAgICAgICAgdGhpcy5fcHJvcGVydHlJbmZvTGlzdC5wdXNoKHsK
KyAgICAgICAgICAgICAgICBuYW1lLAorICAgICAgICAgICAgICAgIHRleHRDb250YWluc05hbWVS
ZWdFeHA6IG5ldyBSZWdFeHAoIig/Oig/Ol58OylcXHMqIiArIG5hbWUgKyAiXFxzKjopIiksCisg
ICAgICAgICAgICAgICAgcmVwbGFjZW1lbnRSZWdFeHA6IG5ldyBSZWdFeHAoIihefDspKD86XFxz
KikoIiArIG5hbWUgKyAiKSguKz8oPzo7fCQpKSIpCisgICAgICAgICAgICB9KQorICAgICAgICB9
CisKKyAgICAgICAgdGhpcy5fcHJvcGVydHlSZWZlcmVuY2VOYW1lID0gcHJvcGVydHlOYW1lc1sw
XTsKKyAgICAgICAgdGhpcy5fcHJvcGVydHlSZWZlcmVuY2VUZXh0ID0gV2ViSW5zcGVjdG9yLlZp
c3VhbFN0eWxlRGV0YWlsc1BhbmVsLnByb3BlcnR5UmVmZXJlbmNlSW5mb1t0aGlzLl9wcm9wZXJ0
eVJlZmVyZW5jZU5hbWVdOworICAgICAgICB0aGlzLl9oYXNQcm9wZXJ0eVJlZmVyZW5jZSA9IHRo
aXMuX3Byb3BlcnR5UmVmZXJlbmNlVGV4dCAmJiAhIXRoaXMuX3Byb3BlcnR5UmVmZXJlbmNlVGV4
dC50cmltKCkubGVuZ3RoOworICAgICAgICB0aGlzLl9yZXByZXNlbnRlZFByb3BlcnR5ID0gbnVs
bDsKKyAgICB9CisKKyAgICAvLyBQdWJsaWMKKworICAgIGdldCBlbGVtZW50KCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50OworICAgIH0KKworICAgIGdldCBzdHlsZSgpCisg
ICAgeworICAgICAgICByZXR1cm4gdGhpcy5fc3R5bGU7CisgICAgfQorCisgICAgZ2V0IHZhbHVl
KCkKKyAgICB7CisgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzLgorICAgIH0KKwor
ICAgIHNldCB2YWx1ZSh2YWx1ZSkKKyAgICB7CisgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1
YmNsYXNzLgorICAgIH0KKworICAgIGdldCB1bml0cygpCisgICAgeworICAgICAgICAvLyBJbXBs
ZW1lbnRlZCBieSBzdWJjbGFzcy4KKyAgICB9CisKKyAgICBzZXQgdW5pdHModW5pdCkKKyAgICB7
CisgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzLgorICAgIH0KKworICAgIGdldCBw
bGFjZWhvbGRlcigpCisgICAgeworICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzcy4K
KyAgICB9CisKKyAgICBzZXQgcGxhY2Vob2xkZXIodGV4dCkKKyAgICB7CisgICAgICAgIC8vIElt
cGxlbWVudGVkIGJ5IHN1YmNsYXNzLgorICAgIH0KKworICAgIGdldCBzeW50aGVzaXplZFZhbHVl
KCkKKyAgICB7CisgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzLgorICAgIH0KKwor
ICAgIHNldCBzdXBwcmVzc1N0eWxlVGV4dFVwZGF0ZShmbGFnKQorICAgIHsKKyAgICAgICAgdGhp
cy5fc3VwcHJlc3NTdHlsZVRleHRVcGRhdGUgPSBmbGFnOworICAgIH0KKworICAgIHNldCBtYXN0
ZXJQcm9wZXJ0eShmbGFnKQorICAgIHsKKyAgICAgICAgdGhpcy5fbWFzdGVyUHJvcGVydHkgPSBm
bGFnOworICAgIH0KKworICAgIGdldCBtYXN0ZXJQcm9wZXJ0eSgpCisgICAgeworICAgICAgICBy
ZXR1cm4gdGhpcy5fbWFzdGVyUHJvcGVydHk7CisgICAgfQorCisgICAgc2V0IG9wdGlvbmFsUHJv
cGVydHkoZmxhZykKKyAgICB7CisgICAgICAgIHRoaXMuX29wdGlvbmFsUHJvcGVydHkgPSBmbGFn
OworICAgIH0KKworICAgIGdldCBvcHRpb25hbFByb3BlcnR5KCkKKyAgICB7CisgICAgICAgIHJl
dHVybiB0aGlzLl9vcHRpb25hbFByb3BlcnR5OworICAgIH0KKworICAgIHNldCBjb2xvclByb3Bl
cnR5KGZsYWcpCisgICAgeworICAgICAgICB0aGlzLl9jb2xvclByb3BlcnR5ID0gZmxhZzsKKyAg
ICB9CisKKyAgICBnZXQgY29sb3JQcm9wZXJ0eSgpCisgICAgeworICAgICAgICByZXR1cm4gdGhp
cy5fY29sb3JQcm9wZXJ0eTsKKyAgICB9CisKKyAgICBnZXQgcHJvcGVydHlSZWZlcmVuY2VOYW1l
KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9wcm9wZXJ0eVJlZmVyZW5jZU5hbWU7Cisg
ICAgfQorCisgICAgc2V0IHByb3BlcnR5UmVmZXJlbmNlTmFtZShuYW1lKQorICAgIHsKKyAgICAg
ICAgaWYgKCFuYW1lIHx8ICFuYW1lLmxlbmd0aCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICB0aGlzLl9wcm9wZXJ0eVJlZmVyZW5jZU5hbWUgPSBuYW1lOworICAgIH0KKworICAgIHNl
dCBkaXNhYmxlZChmbGFnKQorICAgIHsKKyAgICAgICAgdGhpcy5fZGlzYWJsZWQgPSBmbGFnOwor
ICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoImRpc2FibGVkIiwgdGhpcy5f
ZGlzYWJsZWQpOworICAgICAgICB0aGlzLl90b2dnbGVUYWJiaW5nT2ZTZWxlY3RhYmxlRWxlbWVu
dHModGhpcy5fZGlzYWJsZWQpOworICAgIH0KKworICAgIGdldCBkaXNhYmxlZCgpCisgICAgewor
ICAgICAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7CisgICAgfQorCisgICAgdXBkYXRlKHN0eWxl
KQorICAgIHsKKyAgICAgICAgaWYgKHN0eWxlKQorICAgICAgICAgICAgdGhpcy5fc3R5bGUgPSBz
dHlsZTsKKyAgICAgICAgZWxzZSBpZiAodGhpcy5faWdub3JlTmV4dFVwZGF0ZSkgeworICAgICAg
ICAgICAgdGhpcy5faWdub3JlTmV4dFVwZGF0ZSA9IGZhbHNlOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKCF0aGlzLl9zdHlsZSkKKyAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICB0aGlzLl91cGRhdGVkVmFsdWVzID0ge307CisgICAgICAgIGxldCBw
cm9wZXJ0eVZhbHVlc0NvbmZsaWN0ID0gZmFsc2U7CisgICAgICAgIGxldCBwcm9wZXJ0eU1pc3Np
bmcgPSBmYWxzZTsKKyAgICAgICAgZm9yIChsZXQgcHJvcGVydHlJbmZvIG9mIHRoaXMuX3Byb3Bl
cnR5SW5mb0xpc3QpIHsKKyAgICAgICAgICAgIGxldCBwcm9wZXJ0eSA9IHRoaXMuX3N0eWxlLnBy
b3BlcnR5Rm9yTmFtZShwcm9wZXJ0eUluZm8ubmFtZSwgdHJ1ZSk7CisgICAgICAgICAgICBwcm9w
ZXJ0eU1pc3NpbmcgPSAhcHJvcGVydHk7CisgICAgICAgICAgICBpZiAocHJvcGVydHlNaXNzaW5n
ICYmIHRoaXMuX3N0eWxlLm5vZGVTdHlsZXMpCisgICAgICAgICAgICAgICAgcHJvcGVydHkgPSB0
aGlzLl9zdHlsZS5ub2RlU3R5bGVzLmNvbXB1dGVkU3R5bGUucHJvcGVydHlGb3JOYW1lKHByb3Bl
cnR5SW5mby5uYW1lKTsKKworICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eSkKKyAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eU1pc3NpbmcgJiYgcHJv
cGVydHkuYW5vbnltb3VzKQorICAgICAgICAgICAgICAgIHRoaXMuX3JlcHJlc2VudGVkUHJvcGVy
dHkgPSBwcm9wZXJ0eTsKKworICAgICAgICAgICAgbGV0IG5ld1ZhbHVlcyA9IHRoaXMuZ2V0VmFs
dWVzRnJvbVRleHQocHJvcGVydHkudmFsdWUsIHByb3BlcnR5TWlzc2luZyk7CisgICAgICAgICAg
ICBpZiAodGhpcy5fdXBkYXRlZFZhbHVlcy5wbGFjZWhvbGRlciAmJiB0aGlzLl91cGRhdGVkVmFs
dWVzLnBsYWNlaG9sZGVyICE9PSBuZXdWYWx1ZXMucGxhY2Vob2xkZXIpCisgICAgICAgICAgICAg
ICAgcHJvcGVydHlWYWx1ZXNDb25mbGljdCA9IHRydWU7CisKKyAgICAgICAgICAgIGlmICghdGhp
cy5fdXBkYXRlZFZhbHVlcy5wbGFjZWhvbGRlcikKKyAgICAgICAgICAgICAgICB0aGlzLl91cGRh
dGVkVmFsdWVzID0gbmV3VmFsdWVzOworCisgICAgICAgICAgICBpZiAocHJvcGVydHlWYWx1ZXND
b25mbGljdCkgeworICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZWRWYWx1ZXMuY29uZmxpY3Rp
bmdWYWx1ZXMgPSB0cnVlOworICAgICAgICAgICAgICAgIHRoaXMuX3NwZWNpYWxQcm9wZXJ0eVBs
YWNlaG9sZGVyRWxlbWVudC50ZXh0Q29udGVudCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiKG11
bHRpcGxlKSIpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisKKyAgICAgICAgaWYgKHRoaXMuX2hhc011bHRpcGxlUHJvcGVydGllcykKKyAgICAgICAg
ICAgIHRoaXMuX3NwZWNpYWxQcm9wZXJ0eVBsYWNlaG9sZGVyRWxlbWVudC5oaWRkZW4gPSAhcHJv
cGVydHlWYWx1ZXNDb25mbGljdDsKKworICAgICAgICB0aGlzLnVwZGF0ZUVkaXRvclZhbHVlcyh0
aGlzLl91cGRhdGVkVmFsdWVzKTsKKyAgICB9CisKKyAgICB1cGRhdGVFZGl0b3JWYWx1ZXModXBk
YXRlZFZhbHVlcykKKyAgICB7CisgICAgICAgIHRoaXMudmFsdWUgPSB1cGRhdGVkVmFsdWVzLnZh
bHVlOworICAgICAgICB0aGlzLnVuaXRzID0gdXBkYXRlZFZhbHVlcy51bml0czsKKyAgICAgICAg
dGhpcy5wbGFjZWhvbGRlciA9IHVwZGF0ZWRWYWx1ZXMucGxhY2Vob2xkZXI7CisKKyAgICAgICAg
dGhpcy5fbGFzdFZhbHVlID0gdGhpcy5zeW50aGVzaXplZFZhbHVlOworICAgICAgICB0aGlzLmRp
c2FibGVkID0gZmFsc2U7CisgICAgfQorCisgICAgcmVzZXRFZGl0b3JWYWx1ZXModmFsdWUpCisg
ICAgeworICAgICAgICB0aGlzLl9pZ25vcmVOZXh0VXBkYXRlID0gZmFsc2U7CisgICAgICAgIGlm
ICghdmFsdWUgfHwgIXZhbHVlLmxlbmd0aCkgeworICAgICAgICAgICAgdGhpcy52YWx1ZSA9IG51
bGw7CisgICAgICAgICAgICB0aGlzLl9zcGVjaWFsUHJvcGVydHlQbGFjZWhvbGRlckVsZW1lbnQu
aGlkZGVuID0gZmFsc2U7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAg
ICBsZXQgdXBkYXRlZFZhbHVlcyA9IHRoaXMuZ2V0VmFsdWVzRnJvbVRleHQodmFsdWUpOworICAg
ICAgICB0aGlzLnVwZGF0ZUVkaXRvclZhbHVlcyh1cGRhdGVkVmFsdWVzKTsKKyAgICB9CisKKyAg
ICBtb2RpZnlQcm9wZXJ0eVRleHQodGV4dCwgdmFsdWUpCisgICAgeworICAgICAgICBsZXQgdHJp
bW1lZFRleHQgPSB0ZXh0LnRyaW1SaWdodCgpOworICAgICAgICBmb3IgKGxldCBwcm9wZXJ0eSBv
ZiB0aGlzLl9wcm9wZXJ0eUluZm9MaXN0KSB7CisgICAgICAgICAgICBpZiAocHJvcGVydHkudGV4
dENvbnRhaW5zTmFtZVJlZ0V4cC50ZXN0KHRleHQpKQorICAgICAgICAgICAgICAgIHRleHQgPSB0
ZXh0LnJlcGxhY2UocHJvcGVydHkucmVwbGFjZW1lbnRSZWdFeHAsIHZhbHVlICE9PSBudWxsID8g
IiQxJDI6ICIgKyB2YWx1ZSArICI7IiA6ICIkMSIpOworICAgICAgICAgICAgZWxzZSBpZiAodmFs
dWUgIT09IG51bGwpIHsKKyAgICAgICAgICAgICAgICBpZiAodHJpbW1lZFRleHQudHJpbUxlZnQo
KS5sZW5ndGggJiYgIXRyaW1tZWRUZXh0LmVuZHNXaXRoKCI7IikpCisgICAgICAgICAgICAgICAg
ICAgIHRleHQgKz0gIjsiOworCisgICAgICAgICAgICAgICAgdGV4dCArPSBwcm9wZXJ0eS5uYW1l
ICsgIjogIiArIHZhbHVlICsgIjsiOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IHJldHVybiB0ZXh0OworICAgIH0KKworICAgIGdldFZhbHVlc0Zyb21UZXh0KHRleHQsIHByb3Bl
cnR5TWlzc2luZykKKyAgICB7CisgICAgICAgIGxldCBtYXRjaCA9IHRoaXMucGFyc2VWYWx1ZSh0
ZXh0KTsKKyAgICAgICAgbGV0IHBsYWNlaG9sZGVyID0gbWF0Y2ggPyBtYXRjaFsxXSA6IHRleHQ7
CisgICAgICAgIGxldCB1bml0cyA9IG1hdGNoID8gbWF0Y2hbMl0gOiBudWxsOworICAgICAgICBs
ZXQgdmFsdWUgPSBwbGFjZWhvbGRlcjsKKyAgICAgICAgaWYgKHByb3BlcnR5TWlzc2luZykKKyAg
ICAgICAgICAgIHZhbHVlID0gdGhpcy52YWx1ZUlzU3VwcG9ydGVkS2V5d29yZCh0ZXh0KSA/IHRl
eHQgOiBudWxsOworCisgICAgICAgIHJldHVybiB7dmFsdWUsIHVuaXRzLCBwbGFjZWhvbGRlciwg
cHJvcGVydHlNaXNzaW5nfTsKKyAgICB9CisKKyAgICBnZXQgcHJvcGVydHlNaXNzaW5nKCkKKyAg
ICB7CisgICAgICAgIHJldHVybiB0aGlzLl91cGRhdGVkVmFsdWVzICYmIHRoaXMuX3VwZGF0ZWRW
YWx1ZXMucHJvcGVydHlNaXNzaW5nOworICAgIH0KKworICAgIHZhbHVlSXNDb21wYXRpYmxlKHZh
bHVlKQorICAgIHsKKyAgICAgICAgaWYgKCF2YWx1ZSB8fCAhdmFsdWUubGVuZ3RoKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHJldHVybiB0aGlzLnZhbHVlSXNTdXBwb3J0
ZWRLZXl3b3JkKHZhbHVlKSB8fCAhIXRoaXMucGFyc2VWYWx1ZSh2YWx1ZSk7CisgICAgfQorCisg
ICAgdmFsdWVJc1N1cHBvcnRlZEtleXdvcmQodmFsdWUpIHsKKyAgICAgICAgaWYgKCF0aGlzLl9w
b3NzaWJsZVZhbHVlcykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICB2YWx1
ZSA9IHZhbHVlIHx8IHRoaXMudmFsdWU7CisgICAgICAgIGlmIChPYmplY3Qua2V5cyh0aGlzLl9w
b3NzaWJsZVZhbHVlcy5iYXNpYykuaW5jbHVkZXModmFsdWUpKQorICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisKKyAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlSXNTdXBwb3J0ZWRBZHZhbmNlZEtl
eXdvcmQodmFsdWUpOworICAgIH0KKworICAgIHZhbHVlSXNTdXBwb3J0ZWRVbml0KHVuaXQpCisg
ICAgeworICAgICAgICBpZiAoIXRoaXMuX3Bvc3NpYmxlVW5pdHMpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICAgICAgdW5pdCA9IHVuaXQgfHwgdGhpcy51bml0czsKKyAgICAgICAg
aWYgKHRoaXMuX3Bvc3NpYmxlVW5pdHMuYmFzaWMuaW5jbHVkZXModW5pdCkpCisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKworICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWVJc1N1cHBvcnRlZEFk
dmFuY2VkVW5pdCh1bml0KTsKKyAgICB9CisKKyAgICAvLyBQcm90ZWN0ZWQKKworICAgIGdldCBj
b250ZW50RWxlbWVudCgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fY29udGVudEVsZW1l
bnQ7CisgICAgfQorCisgICAgZ2V0IHNwZWNpYWxQcm9wZXJ0eVBsYWNlaG9sZGVyRWxlbWVudCgp
CisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fc3BlY2lhbFByb3BlcnR5UGxhY2Vob2xkZXJF
bGVtZW50OworICAgIH0KKworICAgIHBhcnNlVmFsdWUodGV4dCkKKyAgICB7CisgICAgICAgIHJl
dHVybiAvXihbXjtdKylccyo7PyQvLmV4ZWModGV4dCk7CisgICAgfQorCisgICAgLy8gUHJpdmF0
ZQorCisgICAgX3ZhbHVlSXNTdXBwb3J0ZWRBZHZhbmNlZEtleXdvcmQodmFsdWUpCisgICAgewor
ICAgICAgICByZXR1cm4gdGhpcy5fcG9zc2libGVWYWx1ZXMuYWR2YW5jZWQgJiYgT2JqZWN0Lmtl
eXModGhpcy5fcG9zc2libGVWYWx1ZXMuYWR2YW5jZWQpLmluY2x1ZGVzKHZhbHVlIHx8IHRoaXMu
dmFsdWUpOworICAgIH0KKworICAgIF92YWx1ZUlzU3VwcG9ydGVkQWR2YW5jZWRVbml0KHVuaXQp
CisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fcG9zc2libGVVbml0cy5hZHZhbmNlZCAmJiB0
aGlzLl9wb3NzaWJsZVVuaXRzLmFkdmFuY2VkLmluY2x1ZGVzKHVuaXQgfHwgdGhpcy51bml0cyk7
CisgICAgfQorCisgICAgX2Nhbm9uaWNhbGl6ZWRLZXl3b3JkRm9yS2V5KHZhbHVlKQorICAgIHsK
KyAgICAgICAgaWYgKCF2YWx1ZSB8fCAhdGhpcy5fcG9zc2libGVWYWx1ZXMpCisgICAgICAgICAg
ICByZXR1cm4gbnVsbDsKKworICAgICAgICByZXR1cm4gdGhpcy5fcG9zc2libGVWYWx1ZXMuYmFz
aWNbdmFsdWVdIHx8ICh0aGlzLl9wb3NzaWJsZVZhbHVlcy5hZHZhbmNlZCAmJiB0aGlzLl9wb3Nz
aWJsZVZhbHVlcy5hZHZhbmNlZFt2YWx1ZV0pIHx8IG51bGw7CisgICAgfQorCisgICAgX2tleUZv
cktleXdvcmQoa2V5d29yZCkKKyAgICB7CisgICAgICAgIGlmICgha2V5d29yZCB8fCAha2V5d29y
ZC5sZW5ndGggfHwgIXRoaXMuX3Bvc3NpYmxlVmFsdWVzKQorICAgICAgICAgICAgcmV0dXJuIG51
bGw7CisKKyAgICAgICAgZm9yIChsZXQgYmFzaWNLZXkgaW4gdGhpcy5fcG9zc2libGVWYWx1ZXMu
YmFzaWMpIHsKKyAgICAgICAgICAgIGlmICh0aGlzLl9wb3NzaWJsZVZhbHVlcy5iYXNpY1tiYXNp
Y0tleV0gPT09IGtleXdvcmQpCisgICAgICAgICAgICAgICAgcmV0dXJuIGJhc2ljS2V5OworICAg
ICAgICB9CisKKyAgICAgICAgaWYgKCF0aGlzLl9wb3NzaWJsZVZhbHVlcy5hZHZhbmNlZCkKKyAg
ICAgICAgICAgIHJldHVybiBudWxsOworCisgICAgICAgIGZvciAobGV0IGFkdmFuY2VkS2V5IGlu
IHRoaXMuX3Bvc3NpYmxlVmFsdWVzLmFkdmFuY2VkKSB7CisgICAgICAgICAgICBpZiAodGhpcy5f
cG9zc2libGVWYWx1ZXMuYWR2YW5jZWRbYWR2YW5jZWRLZXldID09PSBrZXl3b3JkKQorICAgICAg
ICAgICAgICAgIHJldHVybiBhZHZhbmNlZEtleTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVy
biBudWxsOworICAgIH0KKworICAgIF92YWx1ZURpZENoYW5nZSgpCisgICAgeworICAgICAgICBs
ZXQgdmFsdWUgPSB0aGlzLnN5bnRoZXNpemVkVmFsdWU7CisgICAgICAgIGlmICh2YWx1ZSA9PT0g
dGhpcy5fbGFzdFZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGlm
ICh0aGlzLl9zdHlsZSAmJiAhdGhpcy5fc3VwcHJlc3NTdHlsZVRleHRVcGRhdGUpIHsKKyAgICAg
ICAgICAgIGxldCBuZXdUZXh0ID0gdGhpcy5fc3R5bGUudGV4dDsKKyAgICAgICAgICAgIG5ld1Rl
eHQgPSB0aGlzLl9yZXBsYWNlU2hvcnRoYW5kUHJvcGVydHlXaXRoTG9uZ2hhbmRQcm9wZXJ0aWVz
KG5ld1RleHQpOworICAgICAgICAgICAgbmV3VGV4dCA9IHRoaXMubW9kaWZ5UHJvcGVydHlUZXh0
KG5ld1RleHQsIHZhbHVlKTsKKyAgICAgICAgICAgIHRoaXMuX3N0eWxlLnRleHQgPSBuZXdUZXh0
OworICAgICAgICAgICAgaWYgKCFuZXdUZXh0Lmxlbmd0aCkKKyAgICAgICAgICAgICAgICB0aGlz
Ll9zdHlsZS51cGRhdGUobnVsbCwgbnVsbCwgdGhpcy5fc3R5bGUuc3R5bGVTaGVldFRleHRSYW5n
ZSk7CisgICAgICAgIH0KKworICAgICAgICB0aGlzLl9sYXN0VmFsdWUgPSB2YWx1ZTsKKyAgICAg
ICAgdGhpcy5fdXBkYXRlZFZhbHVlcy5wcm9wZXJ0eU1pc3NpbmcgPSAhdmFsdWU7CisgICAgICAg
IHRoaXMuX2lnbm9yZU5leHRVcGRhdGUgPSB0cnVlOworICAgICAgICB0aGlzLl9zcGVjaWFsUHJv
cGVydHlQbGFjZWhvbGRlckVsZW1lbnQuaGlkZGVuID0gdHJ1ZTsKKworICAgICAgICB0aGlzLmRp
c3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVk
aXRvci5FdmVudC5WYWx1ZURpZENoYW5nZSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
KworICAgIF9yZXBsYWNlU2hvcnRoYW5kUHJvcGVydHlXaXRoTG9uZ2hhbmRQcm9wZXJ0aWVzKHRl
eHQpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX3JlcHJlc2VudGVkUHJvcGVydHkpCisgICAg
ICAgICAgICByZXR1cm4gdGV4dDsKKworICAgICAgICBsZXQgc2hvcnRoYW5kID0gdGhpcy5fcmVw
cmVzZW50ZWRQcm9wZXJ0eS5yZWxhdGVkU2hvcnRoYW5kUHJvcGVydHk7CisgICAgICAgIGlmICgh
c2hvcnRoYW5kKQorICAgICAgICAgICAgcmV0dXJuIHRleHQ7CisKKyAgICAgICAgbGV0IGxvbmdo
YW5kVGV4dCA9ICIiOworICAgICAgICBmb3IgKGxldCBsb25naGFuZFByb3BlcnR5IG9mIHNob3J0
aGFuZC5yZWxhdGVkTG9uZ2hhbmRQcm9wZXJ0aWVzKSB7CisgICAgICAgICAgICBpZiAobG9uZ2hh
bmRQcm9wZXJ0eS5hbm9ueW1vdXMpCisgICAgICAgICAgICAgICAgbG9uZ2hhbmRUZXh0ICs9IGxv
bmdoYW5kUHJvcGVydHkuc3ludGhlc2l6ZWRUZXh0OworICAgICAgICB9CisgICAgICAgIHJldHVy
biBsb25naGFuZFRleHQgPyB0ZXh0LnJlcGxhY2Uoc2hvcnRoYW5kLnRleHQsIGxvbmdoYW5kVGV4
dCkgOiB0ZXh0OworICAgIH0KKworICAgIF90aXRsZUVsZW1lbnRQcmVwYXJlRm9yQ2xpY2soZXZl
bnQpCisgICAgeworICAgICAgICB0aGlzLl90aXRsZUVsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgi
cHJvcGVydHktcmVmZXJlbmNlLWluZm8iLCBldmVudC50eXBlID09PSAia2V5ZG93biIgJiYgZXZl
bnQuYWx0S2V5KTsKKyAgICB9CisKKyAgICBfdGl0bGVFbGVtZW50TW91c2VPdmVyKGV2ZW50KQor
ICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9oYXNQcm9wZXJ0eVJlZmVyZW5jZSkKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl90aXRsZUVsZW1lbnQuY2xhc3NMaXN0LnRvZ2ds
ZSgicHJvcGVydHktcmVmZXJlbmNlLWluZm8iLCBldmVudC5hbHRLZXkpOworICAgICAgICBkb2N1
bWVudC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIiwgdGhpcy5fYm91bmRUaXRsZUVsZW1lbnRQ
cmVwYXJlRm9yQ2xpY2spOworICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJrZXl1
cCIsIHRoaXMuX2JvdW5kVGl0bGVFbGVtZW50UHJlcGFyZUZvckNsaWNrKTsKKyAgICB9CisKKyAg
ICBfdGl0bGVFbGVtZW50TW91c2VPdXQoKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9oYXNQ
cm9wZXJ0eVJlZmVyZW5jZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl90
aXRsZUVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgicHJvcGVydHktcmVmZXJlbmNlLWluZm8iKTsK
KyAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsIHRoaXMuX2Jv
dW5kVGl0bGVFbGVtZW50UHJlcGFyZUZvckNsaWNrKTsKKyAgICAgICAgZG9jdW1lbnQucmVtb3Zl
RXZlbnRMaXN0ZW5lcigia2V5dXAiLCB0aGlzLl9ib3VuZFRpdGxlRWxlbWVudFByZXBhcmVGb3JD
bGljayk7CisgICAgfQorCisgICAgX3RpdGxlRWxlbWVudENsaWNrKGV2ZW50KQorICAgIHsKKyAg
ICAgICAgaWYgKGV2ZW50LmFsdEtleSkKKyAgICAgICAgICAgIHRoaXMuX3Nob3dQcm9wZXJ0eUlu
Zm9Qb3BvdmVyKCk7CisgICAgfQorCisgICAgX2hhc011bHRpcGxlQ29uZmxpY3RpbmdWYWx1ZXMo
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2hhc011bHRpcGxlUHJvcGVydGllcyAmJiAh
dGhpcy5fc3BlY2lhbFByb3BlcnR5UGxhY2Vob2xkZXJFbGVtZW50LmhpZGRlbjsKKyAgICB9CisK
KyAgICBfc2hvd1Byb3BlcnR5SW5mb1BvcG92ZXIoKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlz
Ll9oYXNQcm9wZXJ0eVJlZmVyZW5jZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBs
ZXQgcHJvcGVydHlJbmZvRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInAiKTsKKyAg
ICAgICAgcHJvcGVydHlJbmZvRWxlbWVudC5jbGFzc0xpc3QuYWRkKCJ2aXN1YWwtc3R5bGUtcHJv
cGVydHktaW5mby1wb3BvdmVyIik7CisKKyAgICAgICAgbGV0IHByb3BlcnR5SW5mb1RpdGxlRWxl
bWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImgzIik7CisgICAgICAgIHByb3BlcnR5SW5m
b1RpdGxlRWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0aGlzLl9w
cm9wZXJ0eVJlZmVyZW5jZU5hbWUpKTsKKyAgICAgICAgcHJvcGVydHlJbmZvRWxlbWVudC5hcHBl
bmRDaGlsZChwcm9wZXJ0eUluZm9UaXRsZUVsZW1lbnQpOworCisgICAgICAgIHByb3BlcnR5SW5m
b0VsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGhpcy5fcHJvcGVy
dHlSZWZlcmVuY2VUZXh0KSk7CisKKyAgICAgICAgbGV0IGJvdW5kcyA9IFdlYkluc3BlY3Rvci5S
ZWN0LnJlY3RGcm9tQ2xpZW50UmVjdCh0aGlzLl90aXRsZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGll
bnRSZWN0KCkpOworICAgICAgICBsZXQgcG9wb3ZlciA9IG5ldyBXZWJJbnNwZWN0b3IuUG9wb3Zl
cih0aGlzKTsKKyAgICAgICAgcG9wb3Zlci5jb250ZW50ID0gcHJvcGVydHlJbmZvRWxlbWVudDsK
KyAgICAgICAgcG9wb3Zlci5wcmVzZW50KGJvdW5kcy5wYWQoMiksIFtXZWJJbnNwZWN0b3IuUmVj
dEVkZ2UuTUlOX1ldKTsKKyAgICB9CisKKyAgICBfdG9nZ2xlVGFiYmluZ09mU2VsZWN0YWJsZUVs
ZW1lbnRzKGRpc2FibGVkKQorICAgIHsKKyAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xh
c3MuCisgICAgfQorfTsKKworV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3Iu
RXZlbnQgPSB7CisgICAgVmFsdWVEaWRDaGFuZ2U6ICJ2aXN1YWwtc3R5bGUtcHJvcGVydHktZWRp
dG9yLXZhbHVlLWNoYW5nZWQiCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZVRhYmJlZFByb3BlcnRpZXNSb3cuY3NzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVUYWJi
ZWRQcm9wZXJ0aWVzUm93LmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44
NzkwMGRiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvVmlzdWFsU3R5bGVUYWJiZWRQcm9wZXJ0aWVzUm93LmNzcwpAQCAtMCwwICsx
LDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworLnZpc3VhbC1zdHlsZS10YWJiZWQtcHJvcGVydGllcy1yb3cg
fiA6bm90KC52aXNpYmxlKSB7CisgICAgdmlzaWJpbGl0eTogaGlkZGVuOworICAgIGhlaWdodDog
MDsKK30KKworLnZpc3VhbC1zdHlsZS10YWJiZWQtcHJvcGVydGllcy1yb3cgPiAudmlzdWFsLXN0
eWxlLXRhYmJlZC1wcm9wZXJ0aWVzLXJvdy1jb250YWluZXIgeworICAgIG1hcmdpbjogMCBhdXRv
OworfQorCisudmlzdWFsLXN0eWxlLXRhYmJlZC1wcm9wZXJ0aWVzLXJvdyA+IC52aXN1YWwtc3R5
bGUtdGFiYmVkLXByb3BlcnRpZXMtcm93LWNvbnRhaW5lciA+IGJ1dHRvbiB7CisgICAgbWFyZ2lu
OiAwIDJweCAycHg7CisgICAgYm9yZGVyLXJhZGl1czogM3B4OworICAgIGJvcmRlci13aWR0aDog
MCAxcHg7CisgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsKKyAgICBiYWNrZ3JvdW5kLWNv
bG9yOiB0cmFuc3BhcmVudDsKK30KKworLnZpc3VhbC1zdHlsZS10YWJiZWQtcHJvcGVydGllcy1y
b3cgPiAudmlzdWFsLXN0eWxlLXRhYmJlZC1wcm9wZXJ0aWVzLXJvdy1jb250YWluZXIgPiBidXR0
b24uc2VsZWN0ZWQgeworICAgIGNvbG9yOiB3aGl0ZTsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBo
c2woMjEzLCA5MiUsIDU1JSk7Cit9CisKKy52aXN1YWwtc3R5bGUtdGFiYmVkLXByb3BlcnRpZXMt
cm93ID4gLnZpc3VhbC1zdHlsZS10YWJiZWQtcHJvcGVydGllcy1yb3ctY29udGFpbmVyID4gYnV0
dG9uOm5vdCguc2VsZWN0ZWQpOmhvdmVyIHsKKyAgICBjb2xvcjogd2hpdGU7CisgICAgYmFja2dy
b3VuZC1jb2xvcjogaHNsYSgyMTMsIDkyJSwgNTUlLCAwLjUpOworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVUYWJiZWRQ
cm9wZXJ0aWVzUm93LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvVmlzdWFsU3R5bGVUYWJiZWRQcm9wZXJ0aWVzUm93LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjYzYmRiYjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZVRhYmJlZFByb3BlcnRpZXNS
b3cuanMKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dlYkluc3BlY3Rvci5WaXN1YWxT
dHlsZVRhYmJlZFByb3BlcnRpZXNSb3cgPSBjbGFzcyBWaXN1YWxTdHlsZVRhYmJlZFByb3BlcnRp
ZXNSb3cgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3cKK3sKKyAgICBjb25z
dHJ1Y3Rvcih0YWJNYXApCisgICAgeworICAgICAgICBzdXBlcigpOworCisgICAgICAgIHRoaXMu
X2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgidmlzdWFsLXN0eWxlLXRhYmJlZC1wcm9wZXJ0aWVzLXJv
dyIpOworCisgICAgICAgIGxldCBjb250YWluZXJFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZGl2Iik7CisgICAgICAgIGNvbnRhaW5lckVsZW1lbnQuY2xhc3NMaXN0LmFkZCgidmlz
dWFsLXN0eWxlLXRhYmJlZC1wcm9wZXJ0aWVzLXJvdy1jb250YWluZXIiKTsKKworICAgICAgICB0
aGlzLl90YWJCdXR0b25zID0gW107CisgICAgICAgIHRoaXMuX3RhYk1hcCA9IHRhYk1hcDsKKyAg
ICAgICAgZm9yIChsZXQga2V5IGluIHRoaXMuX3RhYk1hcCkgeworICAgICAgICAgICAgbGV0IGJ1
dHRvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIpOworICAgICAgICAgICAgYnV0
dG9uLmlkID0ga2V5OworICAgICAgICAgICAgYnV0dG9uLnRleHRDb250ZW50ID0gdGhpcy5fdGFi
TWFwW2tleV0udGl0bGU7CisgICAgICAgICAgICBidXR0b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xp
Y2siLCB0aGlzLl9oYW5kbGVCdXR0b25DbGlja2VkLmJpbmQodGhpcykpOworCisgICAgICAgICAg
ICBjb250YWluZXJFbGVtZW50LmFwcGVuZENoaWxkKGJ1dHRvbik7CisgICAgICAgICAgICB0aGlz
Ll90YWJCdXR0b25zLnB1c2goYnV0dG9uKTsKKyAgICAgICAgfQorCisgICAgICAgIGxldCBmaXJz
dEJ1dHRvbiA9IHRoaXMuX3RhYkJ1dHRvbnNbMF07CisgICAgICAgIGZpcnN0QnV0dG9uLmNsYXNz
TGlzdC5hZGQoInNlbGVjdGVkIik7CisgICAgICAgIHRoaXMuX3RhYk1hcFtmaXJzdEJ1dHRvbi5p
ZF0uZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJ2aXNpYmxlIik7CisKKyAgICAgICAgdGhpcy5fZWxl
bWVudC5hcHBlbmRDaGlsZChjb250YWluZXJFbGVtZW50KTsKKyAgICB9CisKKyAgICAvLyBQcml2
YXRlCisKKyAgICBfaGFuZGxlQnV0dG9uQ2xpY2tlZChldmVudCkKKyAgICB7CisgICAgICAgIGZv
ciAobGV0IGl0ZW0gb2YgdGhpcy5fdGFiQnV0dG9ucykgeworICAgICAgICAgICAgbGV0IHRhYiA9
IHRoaXMuX3RhYk1hcFtpdGVtLmlkXTsKKyAgICAgICAgICAgIGxldCBzZWxlY3RlZCA9IGl0ZW0g
PT09IGV2ZW50LnRhcmdldDsKKyAgICAgICAgICAgIGl0ZW0uY2xhc3NMaXN0LnRvZ2dsZSgic2Vs
ZWN0ZWQiLCBzZWxlY3RlZCk7CisgICAgICAgICAgICB0YWIuZWxlbWVudC5jbGFzc0xpc3QudG9n
Z2xlKCJ2aXNpYmxlIiwgc2VsZWN0ZWQpOworICAgICAgICAgICAgZm9yIChsZXQgcHJvcGVydHlF
ZGl0b3Igb2YgdGFiLnByb3BlcnRpZXMpCisgICAgICAgICAgICAgICAgcHJvcGVydHlFZGl0b3Iu
dXBkYXRlKCk7CisgICAgICAgIH0KKyAgICB9Cit9Owo=
</data>
<flag name="review"
          id="284206"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259017</attachid>
            <date>2015-08-14 12:12:18 -0700</date>
            <delta_ts>2015-08-14 12:12:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>147576.txt</filename>
            <type>text/plain</type>
            <size>40894</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDM4MjVhMDIuLjUyYmIzMTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMSBAQAorMjAxNS0wOC0xNCAgRGV2aW4gUm91c3Nv
ICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQWRkIHZpc3Vh
bCBlZGl0b3JzIGZvciBDU1MgcHJvcGVydGllcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3NTc2CisKKyAgICAgICAgQWRkZWQgcGFyZW50IGNsYXNz
IGZvciBwcm9wZXJ0eSBlZGl0b3JzIGluIHRoZSBWaXN1YWwgc3R5bGUKKyAgICAgICAgZGV0YWls
cyBwYW5lbCBpbiB0aGUgQ1NTIHNpZGViYXIuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltb3Ro
eSBIYXRjaGVyLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZVBy
b3BlcnR5Q29tYmluZXIuanM6IEFkZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0
eWxlUHJvcGVydHlDb21iaW5lcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQ
cm9wZXJ0eUNvbWJpbmVyLnByb3RvdHlwZS5nZXQgc3R5bGUpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlZpc3VhbFN0eWxlUHJvcGVydHlDb21iaW5lci5wcm90b3R5cGUuZ2V0IHN5bnRoZXNpemVk
VmFsdWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlDb21iaW5l
ci5wcm90b3R5cGUubW9kaWZ5UHJvcGVydHlUZXh0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5W
aXN1YWxTdHlsZVByb3BlcnR5Q29tYmluZXIucHJvdG90eXBlLnVwZGF0ZSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUNvbWJpbmVyLnByb3RvdHlwZS51cGRhdGVW
YWx1ZXNGcm9tVGV4dC51cGRhdGVDb21wYXRpYmxlRWRpdG9yKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5Q29tYmluZXIucHJvdG90eXBlLnVwZGF0ZVZhbHVlc0Zy
b21UZXh0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5Q29tYmlu
ZXIucHJvdG90eXBlLnByb3BlcnR5TWlzc2luZyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlz
dWFsU3R5bGVQcm9wZXJ0eUNvbWJpbmVyLnByb3RvdHlwZS5yZXNldEVkaXRvclZhbHVlcyk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUNvbWJpbmVyLnByb3RvdHlw
ZS5fbWFya0VkaXRvcnMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVy
dHlDb21iaW5lci5wcm90b3R5cGUuX2hhbmRsZVByb3BlcnR5RWRpdG9yVmFsdWVDaGFuZ2VkKToK
KworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRv
ci5jc3M6IEFkZGVkLgorICAgICAgICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIp
OgorICAgICAgICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIgPiAudmlzdWFsLXN0
eWxlLXByb3BlcnR5LXRpdGxlKToKKyAgICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHktY29u
dGFpbmVyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS10aXRsZSA+IC5wcm9wZXJ0eS1yZWZlcmVu
Y2UtaW5mbyk6CisgICAgICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5kaXNh
YmxlZCA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdGl0bGUgPiA6bm90KC5wcm9wZXJ0eS1yZWZl
cmVuY2UtaW5mbykpOgorICAgICAgICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIg
PiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lcik6CisgICAgICAgICgudmlz
dWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5kaXNhYmxlZCA+IC52aXN1YWwtc3R5bGUtcHJv
cGVydHktdmFsdWUtY29udGFpbmVyKToKKyAgICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHkt
Y29udGFpbmVyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgc2VsZWN0
KToKKyAgICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyID4gLnZpc3VhbC1z
dHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgaW5wdXQpOgorICAgICAgICAoLnZpc3VhbC1z
dHlsZS1wcm9wZXJ0eS1jb250YWluZXIuZGlzYWJsZWQgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5
LXZhbHVlLWNvbnRhaW5lciBpbnB1dCk6CisgICAgICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5
LWNvbnRhaW5lci5sYXlvdXQtcmV2ZXJzZWQgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXRpdGxl
KToKKyAgICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyID4gLnZpc3VhbC1z
dHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLXNwZWNpYWwtcHJv
cGVydHktcGxhY2Vob2xkZXIpOgorICAgICAgICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1pbmZv
LXBvcG92ZXIpOgorICAgICAgICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1pbmZvLXBvcG92ZXIg
PiBoMyk6CisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlUHJvcGVy
dHlFZGl0b3IuanM6IEFkZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJv
cGVydHlFZGl0b3IuY2Fub25pY2FsaXplVmFsdWVzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5W
aXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxT
dHlsZVByb3BlcnR5RWRpdG9yLnByb3RvdHlwZS5nZXQgZWxlbWVudCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5wcm90b3R5cGUuZ2V0IHN0eWxlKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnByb3RvdHlw
ZS5nZXQgdmFsdWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlF
ZGl0b3IucHJvdG90eXBlLnNldCB2YWx1ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFs
U3R5bGVQcm9wZXJ0eUVkaXRvci5wcm90b3R5cGUuZ2V0IHVuaXRzKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnByb3RvdHlwZS5zZXQgdW5pdHMpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IucHJvdG90eXBl
LmdldCBwbGFjZWhvbGRlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9w
ZXJ0eUVkaXRvci5wcm90b3R5cGUuc2V0IHBsYWNlaG9sZGVyKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnByb3RvdHlwZS5nZXQgc3ludGhlc2l6ZWRW
YWx1ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5w
cm90b3R5cGUuc2V0IHN1cHByZXNzU3R5bGVUZXh0VXBkYXRlKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnByb3RvdHlwZS5zZXQgbWFzdGVyUHJvcGVy
dHkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IucHJv
dG90eXBlLmdldCBtYXN0ZXJQcm9wZXJ0eSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFs
U3R5bGVQcm9wZXJ0eUVkaXRvci5wcm90b3R5cGUuc2V0IG9wdGlvbmFsUHJvcGVydHkpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IucHJvdG90eXBlLmdl
dCBvcHRpb25hbFByb3BlcnR5KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVBy
b3BlcnR5RWRpdG9yLnByb3RvdHlwZS5zZXQgY29sb3JQcm9wZXJ0eSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5wcm90b3R5cGUuZ2V0IGNvbG9yUHJv
cGVydHkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3Iu
cHJvdG90eXBlLmdldCBwcm9wZXJ0eVJlZmVyZW5jZU5hbWUpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IucHJvdG90eXBlLnNldCBwcm9wZXJ0eVJlZmVy
ZW5jZU5hbWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0
b3IucHJvdG90eXBlLnNldCBkaXNhYmxlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFs
U3R5bGVQcm9wZXJ0eUVkaXRvci5wcm90b3R5cGUuZ2V0IGRpc2FibGVkKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnByb3RvdHlwZS51cGRhdGUpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IucHJvdG90eXBl
LnVwZGF0ZUVkaXRvclZhbHVlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQ
cm9wZXJ0eUVkaXRvci5wcm90b3R5cGUucmVzZXRFZGl0b3JWYWx1ZXMpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IucHJvdG90eXBlLm1vZGlmeVByb3Bl
cnR5VGV4dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRv
ci5wcm90b3R5cGUuZ2V0VmFsdWVzRnJvbVRleHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZp
c3VhbFN0eWxlUHJvcGVydHlFZGl0b3IucHJvdG90eXBlLnByb3BlcnR5TWlzc2luZyk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5wcm90b3R5cGUudmFs
dWVJc0NvbXBhdGlibGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVy
dHlFZGl0b3IucHJvdG90eXBlLnZhbHVlSXNTdXBwb3J0ZWRLZXl3b3JkKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnByb3RvdHlwZS52YWx1ZUlzU3Vw
cG9ydGVkVW5pdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVk
aXRvci5wcm90b3R5cGUuZ2V0IGNvbnRlbnRFbGVtZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnByb3RvdHlwZS5nZXQgc3BlY2lhbFByb3BlcnR5
UGxhY2Vob2xkZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVBy
b3BlcnR5RWRpdG9yLnByb3RvdHlwZS5wYXJzZVZhbHVlKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnByb3RvdHlwZS5fdmFsdWVJc1N1cHBvcnRlZEFk
dmFuY2VkS2V5d29yZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0
eUVkaXRvci5wcm90b3R5cGUuX3ZhbHVlSXNTdXBwb3J0ZWRBZHZhbmNlZFVuaXQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IucHJvdG90eXBlLl9jYW5v
bmljYWxpemVkS2V5d29yZEZvcktleSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5
bGVQcm9wZXJ0eUVkaXRvci5wcm90b3R5cGUuX2tleUZvcktleXdvcmQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IucHJvdG90eXBlLl92YWx1ZURpZENo
YW5nZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5w
cm90b3R5cGUuX3JlcGxhY2VTaG9ydGhhbmRQcm9wZXJ0eVdpdGhMb25naGFuZFByb3BlcnRpZXMp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IucHJvdG90
eXBlLl90aXRsZUVsZW1lbnRQcmVwYXJlRm9yQ2xpY2spOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IucHJvdG90eXBlLl90aXRsZUVsZW1lbnRNb3VzZU92
ZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IucHJv
dG90eXBlLl90aXRsZUVsZW1lbnRNb3VzZU91dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlz
dWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5wcm90b3R5cGUuX3RpdGxlRWxlbWVudENsaWNrKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnByb3RvdHlwZS5f
aGFzTXVsdGlwbGVDb25mbGljdGluZ1ZhbHVlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlz
dWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5wcm90b3R5cGUuX3Nob3dQcm9wZXJ0eUluZm9Qb3BvdmVy
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnByb3Rv
dHlwZS5fdG9nZ2xlVGFiYmluZ09mU2VsZWN0YWJsZUVsZW1lbnRzKToKKworICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVUYWJiZWRQcm9wZXJ0aWVzUm93LmNzczogQWRk
ZWQuCisgICAgICAgICgudmlzdWFsLXN0eWxlLXRhYmJlZC1wcm9wZXJ0aWVzLXJvdyB+IDpub3Qo
LnZpc2libGUpKToKKyAgICAgICAgKC52aXN1YWwtc3R5bGUtdGFiYmVkLXByb3BlcnRpZXMtcm93
ID4gLnZpc3VhbC1zdHlsZS10YWJiZWQtcHJvcGVydGllcy1yb3ctY29udGFpbmVyKToKKyAgICAg
ICAgKC52aXN1YWwtc3R5bGUtdGFiYmVkLXByb3BlcnRpZXMtcm93ID4gLnZpc3VhbC1zdHlsZS10
YWJiZWQtcHJvcGVydGllcy1yb3ctY29udGFpbmVyID4gYnV0dG9uKToKKyAgICAgICAgKC52aXN1
YWwtc3R5bGUtdGFiYmVkLXByb3BlcnRpZXMtcm93ID4gLnZpc3VhbC1zdHlsZS10YWJiZWQtcHJv
cGVydGllcy1yb3ctY29udGFpbmVyID4gYnV0dG9uLnNlbGVjdGVkKToKKyAgICAgICAgKC52aXN1
YWwtc3R5bGUtdGFiYmVkLXByb3BlcnRpZXMtcm93ID4gLnZpc3VhbC1zdHlsZS10YWJiZWQtcHJv
cGVydGllcy1yb3ctY29udGFpbmVyID4gYnV0dG9uOm5vdCguc2VsZWN0ZWQpOmhvdmVyKToKKwor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVUYWJiZWRQcm9wZXJ0aWVz
Um93LmpzOiBBZGRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVRhYmJlZFBy
b3BlcnRpZXNSb3cpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlVGFiYmVkUHJv
cGVydGllc1Jvdy5wcm90b3R5cGUuX2hhbmRsZUJ1dHRvbkNsaWNrZWQpOgorCiAyMDE1LTA4LTEz
ICBOaWtpdGEgVmFzaWx5ZXYgIDxudmFzaWx5ZXZAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IENhbid0IHJlc2l6ZSBzcGxpdCBjb25zb2xlIHdoZW4gd2luZG93IGlzIHRvbyBu
YXJyb3cKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1Zpc3VhbFN0eWxlUHJvcGVydHlDb21iaW5lci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlUHJvcGVydHlDb21iaW5lci5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYTdlZDFjCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVQ
cm9wZXJ0eUNvbWJpbmVyLmpzCkBAIC0wLDAgKzEsMTgyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV2ViSW5z
cGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlDb21iaW5lciA9IGNsYXNzIFZpc3VhbFN0eWxlUHJv
cGVydHlDb21iaW5lciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKK3sKKyAgICBjb25zdHJ1
Y3Rvcihwcm9wZXJ0eU5hbWUsIHByb3BlcnR5RWRpdG9ycykKKyAgICB7CisgICAgICAgIHN1cGVy
KCk7CisKKyAgICAgICAgdGhpcy5fc3R5bGUgPSBudWxsOworICAgICAgICB0aGlzLl9wcm9wZXJ0
eU5hbWUgPSBwcm9wZXJ0eU5hbWU7CisgICAgICAgIHRoaXMuX3Byb3BlcnR5TWlzc2luZyA9IGZh
bHNlOworICAgICAgICB0aGlzLl9wcm9wZXJ0eUVkaXRvcnMgPSBwcm9wZXJ0eUVkaXRvcnMgfHwg
W107CisKKyAgICAgICAgZm9yIChsZXQgZWRpdG9yIG9mIHRoaXMuX3Byb3BlcnR5RWRpdG9ycykg
eworICAgICAgICAgICAgZWRpdG9yLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlZpc3Vh
bFN0eWxlUHJvcGVydHlFZGl0b3IuRXZlbnQuVmFsdWVEaWRDaGFuZ2UsIHRoaXMuX2hhbmRsZVBy
b3BlcnR5RWRpdG9yVmFsdWVDaGFuZ2VkLCB0aGlzKTsKKyAgICAgICAgICAgIGVkaXRvci5zdXBw
cmVzc1N0eWxlVGV4dFVwZGF0ZSA9IHRydWU7CisgICAgICAgIH0KKworICAgICAgICB0aGlzLl90
ZXh0Q29udGFpbnNOYW1lUmVnRXhwID0gbmV3IFJlZ0V4cCgiKD86KD86Xnw7KVxccyoiICsgdGhp
cy5fcHJvcGVydHlOYW1lICsgIlxccyo6KSIpOworICAgICAgICB0aGlzLl9yZXBsYWNlbWVudFJl
Z0V4cCA9IG5ldyBSZWdFeHAoIihefDspKD86XFxzKikoIiArIHRoaXMuX3Byb3BlcnR5TmFtZSAr
ICIpKC4rPyg/Ojt8JCkpIik7CisgICAgICAgIHRoaXMuX3ZhbHVlUmVnRXhwID0gLyhbXlxzXStc
KC4rXCl8W15cc10rKSg/Ojs/KS9nOworICAgIH0KKworICAgIGdldCBzdHlsZSgpCisgICAgewor
ICAgICAgICByZXR1cm4gdGhpcy5fc3R5bGU7CisgICAgfQorCisgICAgZ2V0IHN5bnRoZXNpemVk
VmFsdWUoKQorICAgIHsKKyAgICAgICAgbGV0IHZhbHVlID0gIiI7CisgICAgICAgIGxldCBvbmVF
ZGl0b3JIYXNWYWx1ZSA9IGZhbHNlOworICAgICAgICBmb3IgKGxldCBlZGl0b3Igb2YgdGhpcy5f
cHJvcGVydHlFZGl0b3JzKSB7CisgICAgICAgICAgICBsZXQgZWRpdG9yVmFsdWUgPSBlZGl0b3Iu
c3ludGhlc2l6ZWRWYWx1ZTsKKyAgICAgICAgICAgIGlmIChlZGl0b3JWYWx1ZSAmJiBlZGl0b3JW
YWx1ZS5sZW5ndGgpCisgICAgICAgICAgICAgICAgb25lRWRpdG9ySGFzVmFsdWUgPSB0cnVlOwor
ICAgICAgICAgICAgZWxzZSBpZiAoZWRpdG9yLm9wdGlvbmFsUHJvcGVydHkpCisgICAgICAgICAg
ICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIGlmIChlZGl0b3IubWFzdGVyUHJvcGVydHkg
JiYgZWRpdG9yLnZhbHVlSXNTdXBwb3J0ZWRLZXl3b3JkKCkpIHsKKyAgICAgICAgICAgICAgICB0
aGlzLl9tYXJrRWRpdG9ycyhlZGl0b3IsIHRydWUpOworICAgICAgICAgICAgICAgIHJldHVybiBl
ZGl0b3JWYWx1ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGVkaXRvciAhPT0g
dGhpcy5fcHJvcGVydHlFZGl0b3JzWzBdKQorICAgICAgICAgICAgICAgIHZhbHVlICs9ICIgIjsK
KworICAgICAgICAgICAgdmFsdWUgKz0gZWRpdG9yVmFsdWUgfHwgKGVkaXRvci5jb2xvclByb3Bl
cnR5ID8gInRyYW5zcGFyZW50IiA6IDApOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fbWFy
a0VkaXRvcnMoKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlLmxlbmd0aCAmJiBvbmVFZGl0b3JIYXNW
YWx1ZSA/IHZhbHVlIDogbnVsbDsKKyAgICB9CisKKyAgICBtb2RpZnlQcm9wZXJ0eVRleHQodGV4
dCwgdmFsdWUpCisgICAgeworICAgICAgICBsZXQgdHJpbW1lZFRleHQgPSB0ZXh0LnRyaW1SaWdo
dCgpOworICAgICAgICBpZiAodGhpcy5fdGV4dENvbnRhaW5zTmFtZVJlZ0V4cC50ZXN0KHRleHQp
KQorICAgICAgICAgICAgdGV4dCA9IHRleHQucmVwbGFjZSh0aGlzLl9yZXBsYWNlbWVudFJlZ0V4
cCwgdmFsdWUgIT09IG51bGwgPyAiJDEkMjogIiArIHZhbHVlICsgIjsiIDogIiQxIik7CisgICAg
ICAgIGVsc2UgaWYgKHZhbHVlICE9PSBudWxsKSB7CisgICAgICAgICAgICBpZiAodHJpbW1lZFRl
eHQudHJpbUxlZnQoKS5sZW5ndGggJiYgIXRyaW1tZWRUZXh0LmVuZHNXaXRoKCI7IikpCisgICAg
ICAgICAgICAgICAgdGV4dCArPSAiOyI7CisKKyAgICAgICAgICAgIHRleHQgKz0gdGhpcy5fcHJv
cGVydHlOYW1lICsgIjogIiArIHZhbHVlICsgIjsiOworICAgICAgICB9CisgICAgICAgIHJldHVy
biB0ZXh0OworICAgIH0KKworICAgIHVwZGF0ZShzdHlsZSkKKyAgICB7CisgICAgICAgIGlmIChz
dHlsZSkKKyAgICAgICAgICAgIHRoaXMuX3N0eWxlID0gc3R5bGU7CisgICAgICAgIGVsc2UgaWYg
KHRoaXMuX2lnbm9yZU5leHRVcGRhdGUpIHsKKyAgICAgICAgICAgIHRoaXMuX2lnbm9yZU5leHRV
cGRhdGUgPSBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IGlmICghdGhpcy5fc3R5bGUgfHwgIXRoaXMuX3ZhbHVlUmVnRXhwKQorICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgIGxldCBwcm9wZXJ0eSA9IHRoaXMuX3N0eWxlLnByb3BlcnR5Rm9yTmFt
ZSh0aGlzLl9wcm9wZXJ0eU5hbWUsIHRydWUpOworICAgICAgICBsZXQgcHJvcGVydHlNaXNzaW5n
ID0gIXByb3BlcnR5OworICAgICAgICBpZiAocHJvcGVydHlNaXNzaW5nICYmIHRoaXMuX3N0eWxl
Lm5vZGVTdHlsZXMpCisgICAgICAgICAgICBwcm9wZXJ0eSA9IHRoaXMuX3N0eWxlLm5vZGVTdHls
ZXMuY29tcHV0ZWRTdHlsZS5wcm9wZXJ0eUZvck5hbWUodGhpcy5fcHJvcGVydHlOYW1lKTsKKwor
ICAgICAgICBpZiAoIXByb3BlcnR5KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRo
aXMudXBkYXRlVmFsdWVzRnJvbVRleHQocHJvcGVydHkudmFsdWUsIHByb3BlcnR5TWlzc2luZyk7
CisgICAgICAgIHRoaXMuX3Byb3BlcnR5TWlzc2luZyA9IHByb3BlcnR5TWlzc2luZzsKKyAgICB9
CisKKyAgICB1cGRhdGVWYWx1ZXNGcm9tVGV4dChzdHlsZVRleHQsIHByb3BlcnR5TWlzc2luZykK
KyAgICB7CisgICAgICAgIGlmIChzdHlsZVRleHQgPT09IHRoaXMuc3ludGhlc2l6ZWRWYWx1ZSkK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBmb3IgKGxldCBlZGl0b3Igb2YgdGhpcy5f
cHJvcGVydHlFZGl0b3JzKQorICAgICAgICAgICAgZWRpdG9yW1dlYkluc3BlY3Rvci5WaXN1YWxT
dHlsZVByb3BlcnR5Q29tYmluZXIuRWRpdG9yVXBkYXRlZFN5bWJvbF0gPSBmYWxzZTsKKworICAg
ICAgICBmdW5jdGlvbiB1cGRhdGVDb21wYXRpYmxlRWRpdG9yKHZhbHVlKSB7CisgICAgICAgICAg
ICBmb3IgKGxldCBlZGl0b3Igb2YgdGhpcy5fcHJvcGVydHlFZGl0b3JzKSB7CisgICAgICAgICAg
ICAgICAgaWYgKHZhbHVlICYmICFlZGl0b3IudmFsdWVJc0NvbXBhdGlibGUodmFsdWUpIHx8IGVk
aXRvcltXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUNvbWJpbmVyLkVkaXRvclVwZGF0
ZWRTeW1ib2xdKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAg
ICAgIGlmICh0aGlzLl9jdXJyZW50VmFsdWVJc0tleXdvcmQgJiYgZWRpdG9yLmRpc2FibGVkKQor
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgICAgIGxldCB1cGRh
dGVkVmFsdWVzID0gZWRpdG9yLmdldFZhbHVlc0Zyb21UZXh0KHZhbHVlIHx8ICIiLCBwcm9wZXJ0
eU1pc3NpbmcpOworICAgICAgICAgICAgICAgIGVkaXRvci51cGRhdGVFZGl0b3JWYWx1ZXModXBk
YXRlZFZhbHVlcyk7CisgICAgICAgICAgICAgICAgZWRpdG9yW1dlYkluc3BlY3Rvci5WaXN1YWxT
dHlsZVByb3BlcnR5Q29tYmluZXIuRWRpdG9yVXBkYXRlZFN5bWJvbF0gPSB0cnVlOworCisgICAg
ICAgICAgICAgICAgaWYgKHZhbHVlKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBsZXQgbWF0Y2hlcyA9IHN0eWxlVGV4dC5t
YXRjaCh0aGlzLl92YWx1ZVJlZ0V4cCk7CisgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhp
cy5fcHJvcGVydHlFZGl0b3JzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgdXBkYXRlQ29tcGF0
aWJsZUVkaXRvci5jYWxsKHRoaXMsIG1hdGNoZXMgJiYgbWF0Y2hlc1tpXSk7CisgICAgfQorCisg
ICAgZ2V0IHByb3BlcnR5TWlzc2luZygpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fcHJv
cGVydHlNaXNzaW5nOworICAgIH0KKworICAgIHJlc2V0RWRpdG9yVmFsdWVzKHZhbHVlKQorICAg
IHsKKyAgICAgICAgdGhpcy5faWdub3JlTmV4dFVwZGF0ZSA9IGZhbHNlOworICAgICAgICB0aGlz
LnVwZGF0ZVZhbHVlc0Zyb21UZXh0KHZhbHVlIHx8ICIiKTsKKyAgICB9CisKKyAgICAvLyBQcml2
YXRlCisKKyAgICBfbWFya0VkaXRvcnMoaWdub3JlZEVkaXRvciwgZGlzYWJsZWQpCisgICAgewor
ICAgICAgICB0aGlzLl9jdXJyZW50VmFsdWVJc0tleXdvcmQgPSBkaXNhYmxlZCB8fCBmYWxzZTsK
KyAgICAgICAgZm9yIChsZXQgZWRpdG9yIG9mIHRoaXMuX3Byb3BlcnR5RWRpdG9ycykgeworICAg
ICAgICAgICAgaWYgKGlnbm9yZWRFZGl0b3IgJiYgZWRpdG9yID09PSBpZ25vcmVkRWRpdG9yKQor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBlZGl0b3IuZGlzYWJsZWQg
PSB0aGlzLl9jdXJyZW50VmFsdWVJc0tleXdvcmQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBf
aGFuZGxlUHJvcGVydHlFZGl0b3JWYWx1ZUNoYW5nZWQoKQorICAgIHsKKyAgICAgICAgdGhpcy5f
aWdub3JlTmV4dFVwZGF0ZSA9IHRydWU7CisgICAgICAgIGxldCB2YWx1ZSA9IHRoaXMuc3ludGhl
c2l6ZWRWYWx1ZTsKKyAgICAgICAgaWYgKHRoaXMuX3N0eWxlKQorICAgICAgICAgICAgdGhpcy5f
c3R5bGUudGV4dCA9IHRoaXMubW9kaWZ5UHJvcGVydHlUZXh0KHRoaXMuX3N0eWxlLnRleHQsIHZh
bHVlKTsKKworICAgICAgICB0aGlzLl9wcm9wZXJ0eU1pc3NpbmcgPSAhdmFsdWU7CisgICAgICAg
IHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVBy
b3BlcnR5RWRpdG9yLkV2ZW50LlZhbHVlRGlkQ2hhbmdlKTsKKyAgICB9Cit9OworCitXZWJJbnNw
ZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUNvbWJpbmVyLkVkaXRvclVwZGF0ZWRTeW1ib2wgPSBT
eW1ib2woInZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb21iaW5lci1lZGl0b3ItdXBkYXRlZCIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlz
dWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLmNzcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZDRkODgyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVQcm9wZXJ0eUVk
aXRvci5jc3MKQEAgLTAsMCArMSw5OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy52aXN1YWwtc3R5bGUtcHJv
cGVydHktY29udGFpbmVyIHsKKyAgICBkaXNwbGF5OiBmbGV4OworICAgIHdpZHRoOiAxMDAlOwor
ICAgIG1pbi1oZWlnaHQ6IDIycHg7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFp
bmVyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS10aXRsZSB7CisgICAgbWFyZ2luOiA0cHg7Cisg
ICAgdGV4dC1hbGlnbjogcmlnaHQ7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFp
bmVyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS10aXRsZSA+IC5wcm9wZXJ0eS1yZWZlcmVuY2Ut
aW5mb3sKKyAgICBjdXJzb3I6IGhlbHA7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktY29u
dGFpbmVyLmRpc2FibGVkID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS10aXRsZSA+IDpub3QoLnBy
b3BlcnR5LXJlZmVyZW5jZS1pbmZvKSB7CisgICAgb3BhY2l0eTogMC43OworfQorCisudmlzdWFs
LXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUt
Y29udGFpbmVyIHsKKyAgICBmbGV4OiAxOworICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKK30KKwor
LnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuZGlzYWJsZWQgPiAudmlzdWFsLXN0eWxl
LXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciB7CisgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7Cisg
ICAgb3BhY2l0eTogMC40OworfQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lciA+
IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyIHNlbGVjdCB7CisgICAgd2lk
dGg6IDEwMCU7CisgICAgbWFyZ2luOiAxcHggMDsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0
eS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciBpbnB1
dCB7CisgICAgd2lkdGg6IGNhbGMoMTAwJSAtIDFweCk7CisgICAgbWFyZ2luOiAwOworICAgIG91
dGxpbmU6IG5vbmU7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLmRpc2Fi
bGVkID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgaW5wdXQgeworICAg
IHBvaW50ZXItZXZlbnRzOiBub25lICFpbXBvcnRhbnQ7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJv
cGVydHktY29udGFpbmVyLmxheW91dC1yZXZlcnNlZCA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHkt
dGl0bGUgeworICAgIG9yZGVyOiAyOworICAgIHRleHQtYWxpZ246IGxlZnQ7Cit9CisKKy52aXN1
YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1
ZS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLXNwZWNpYWwtcHJvcGVydHktcGxhY2Vob2xkZXIg
eworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6IDJweDsKKyAgICBsZWZ0OiAxcHg7
CisgICAgd2lkdGg6IGNhbGMoMTAwJSAtIDIwcHgpOworICAgIGxpbmUtaGVpZ2h0OiAxNnB4Owor
ICAgIHRleHQtaW5kZW50OiA3cHg7CisgICAgYm9yZGVyLXJhZGl1czogNHB4OworICAgIGJhY2tn
cm91bmQtY29sb3I6IHdoaXRlOworICAgIGNvbG9yOiBoc2woMCwgMCUsIDUwJSk7CisgICAgcG9p
bnRlci1ldmVudHM6IG5vbmU7CisgICAgb3ZlcmZsb3c6IGhpZGRlbjsKKyAgICB3aGl0ZS1zcGFj
ZTogbm93cmFwOworICAgIHotaW5kZXg6IDE7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHkt
aW5mby1wb3BvdmVyIHsKKyAgICB3aWR0aDogMTkwcHg7CisgICAgbWFyZ2luOiAwIDVweCAzcHg7
CisgICAgcGFkZGluZzogMDsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1pbmZvLXBvcG92
ZXIgPiBoMyB7CisgICAgbWFyZ2luOiA2cHggM3B4OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRv
ci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0
eWxlUHJvcGVydHlFZGl0b3IuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
MWRkZGYwNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IuanMKQEAgLTAsMCArMSw1MjUg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCitXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvciA9
IGNsYXNzIFZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2Jq
ZWN0Cit7CisgICAgY29uc3RydWN0b3IocHJvcGVydHlOYW1lcywgbGFiZWwsIHBvc3NpYmxlVmFs
dWVzLCBwb3NzaWJsZVVuaXRzLCBjbGFzc05hbWUsIGxheW91dFJldmVyc2VkKQorICAgIHsKKyAg
ICAgICAgc3VwZXIoKTsKKworICAgICAgICB0aGlzLl9wcm9wZXJ0eUluZm9MaXN0ID0gW107Cisg
ICAgICAgIHRoaXMuX3N0eWxlID0gbnVsbDsKKworICAgICAgICBmdW5jdGlvbiBjYW5vbmljYWxp
emVWYWx1ZXModmFsdWVzKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIXZhbHVlcykKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGxldCBjYW5vbmljYWxpemVkVmFs
dWVzID0ge307CisgICAgICAgICAgICBmb3IgKGxldCB2YWx1ZSBvZiB2YWx1ZXMpCisgICAgICAg
ICAgICAgICAgY2Fub25pY2FsaXplZFZhbHVlc1t2YWx1ZS50b0xvd2VyQ2FzZSgpLnJlcGxhY2Uo
L1xzL2csICItIildID0gdmFsdWU7CisKKyAgICAgICAgICAgIHJldHVybiBjYW5vbmljYWxpemVk
VmFsdWVzOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fcG9zc2libGVWYWx1ZXMgPSBudWxs
OworICAgICAgICBpZiAocG9zc2libGVWYWx1ZXMpIHsKKyAgICAgICAgICAgIHRoaXMuX3Bvc3Np
YmxlVmFsdWVzID0ge307CisgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShwb3NzaWJsZVZh
bHVlcykpCisgICAgICAgICAgICAgICAgdGhpcy5fcG9zc2libGVWYWx1ZXMuYmFzaWMgPSBjYW5v
bmljYWxpemVWYWx1ZXMocG9zc2libGVWYWx1ZXMpOworICAgICAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICAgICAgdGhpcy5fcG9zc2libGVWYWx1ZXMuYmFzaWMgPSBjYW5vbmljYWxpemVWYWx1
ZXMocG9zc2libGVWYWx1ZXMuYmFzaWMpOworICAgICAgICAgICAgICAgIHRoaXMuX3Bvc3NpYmxl
VmFsdWVzLmFkdmFuY2VkID0gY2Fub25pY2FsaXplVmFsdWVzKHBvc3NpYmxlVmFsdWVzLmFkdmFu
Y2VkKTsKKyAgICAgICAgICAgIH0gCisgICAgICAgIH0KKyAgICAgICAgdGhpcy5fcG9zc2libGVV
bml0cyA9IG51bGw7CisgICAgICAgIGlmIChwb3NzaWJsZVVuaXRzKSB7CisgICAgICAgICAgICB0
aGlzLl9wb3NzaWJsZVVuaXRzID0ge307CisgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShw
b3NzaWJsZVVuaXRzKSkKKyAgICAgICAgICAgICAgICB0aGlzLl9wb3NzaWJsZVVuaXRzLmJhc2lj
ID0gcG9zc2libGVVbml0czsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0aGlz
Ll9wb3NzaWJsZVVuaXRzID0gcG9zc2libGVVbml0czsKKyAgICAgICAgfQorCisgICAgICAgIHRo
aXMuX2VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgdGhp
cy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJ2aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVy
IiwgY2xhc3NOYW1lKTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKCJs
YXlvdXQtcmV2ZXJzZWQiLCBsYXlvdXRSZXZlcnNlZCk7CisKKyAgICAgICAgaWYgKGxhYmVsICYm
IGxhYmVsLmxlbmd0aCkgeworICAgICAgICAgICAgbGV0IHRpdGxlQ29udGFpbmVyID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgICAgICB0aXRsZUNvbnRhaW5lci5jbGFz
c0xpc3QuYWRkKCJ2aXN1YWwtc3R5bGUtcHJvcGVydHktdGl0bGUiKTsKKworICAgICAgICAgICAg
dGhpcy5fdGl0bGVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworICAg
ICAgICAgICAgdGhpcy5fdGl0bGVFbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRl
eHROb2RlKGxhYmVsKSk7CisgICAgICAgICAgICB0aGlzLl90aXRsZUVsZW1lbnQuYWRkRXZlbnRM
aXN0ZW5lcigibW91c2VvdmVyIiwgdGhpcy5fdGl0bGVFbGVtZW50TW91c2VPdmVyLmJpbmQodGhp
cykpOworICAgICAgICAgICAgdGhpcy5fdGl0bGVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1v
dXNlb3V0IiwgdGhpcy5fdGl0bGVFbGVtZW50TW91c2VPdXQuYmluZCh0aGlzKSk7CisgICAgICAg
ICAgICB0aGlzLl90aXRsZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl90
aXRsZUVsZW1lbnRDbGljay5iaW5kKHRoaXMpKTsKKyAgICAgICAgICAgIHRpdGxlQ29udGFpbmVy
LmFwcGVuZENoaWxkKHRoaXMuX3RpdGxlRWxlbWVudCk7CisKKyAgICAgICAgICAgIHRoaXMuX2Vs
ZW1lbnQuYXBwZW5kQ2hpbGQodGl0bGVDb250YWluZXIpOworCisgICAgICAgICAgICB0aGlzLl9i
b3VuZFRpdGxlRWxlbWVudFByZXBhcmVGb3JDbGljayA9IHRoaXMuX3RpdGxlRWxlbWVudFByZXBh
cmVGb3JDbGljay5iaW5kKHRoaXMpOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fY29udGVu
dEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgdGhpcy5f
Y29udGVudEVsZW1lbnQuY2xhc3NMaXN0LmFkZCgidmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVl
LWNvbnRhaW5lciIpOworCisgICAgICAgIHRoaXMuX3NwZWNpYWxQcm9wZXJ0eVBsYWNlaG9sZGVy
RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAgICAgICAgdGhpcy5f
c3BlY2lhbFByb3BlcnR5UGxhY2Vob2xkZXJFbGVtZW50LmNsYXNzTGlzdC5hZGQoInZpc3VhbC1z
dHlsZS1zcGVjaWFsLXByb3BlcnR5LXBsYWNlaG9sZGVyIik7CisgICAgICAgIHRoaXMuX3NwZWNp
YWxQcm9wZXJ0eVBsYWNlaG9sZGVyRWxlbWVudC5oaWRkZW4gPSB0cnVlOworICAgICAgICB0aGlz
Ll9jb250ZW50RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9zcGVjaWFsUHJvcGVydHlQbGFjZWhv
bGRlckVsZW1lbnQpOworCisgICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5f
Y29udGVudEVsZW1lbnQpOworCisgICAgICAgIHRoaXMuX3VwZGF0ZWRWYWx1ZXMgPSB7fTsKKyAg
ICAgICAgdGhpcy5fbGFzdFZhbHVlID0gbnVsbDsKKworICAgICAgICBpZiAodHlwZW9mIHByb3Bl
cnR5TmFtZXMgPT09ICJzdHJpbmciKQorICAgICAgICAgICAgcHJvcGVydHlOYW1lcyA9IFtwcm9w
ZXJ0eU5hbWVzXTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB0aGlzLl9oYXNNdWx0aXBs
ZVByb3BlcnRpZXMgPSB0cnVlOworICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3Qu
YWRkKCJtdWx0aXBsZSIpOworICAgICAgICB9CisKKyAgICAgICAgZm9yIChsZXQgbmFtZSBvZiBw
cm9wZXJ0eU5hbWVzKSB7CisgICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQo
bmFtZSk7CisgICAgICAgICAgICB0aGlzLl9wcm9wZXJ0eUluZm9MaXN0LnB1c2goeworICAgICAg
ICAgICAgICAgIG5hbWUsCisgICAgICAgICAgICAgICAgdGV4dENvbnRhaW5zTmFtZVJlZ0V4cDog
bmV3IFJlZ0V4cCgiKD86KD86Xnw7KVxccyoiICsgbmFtZSArICJcXHMqOikiKSwKKyAgICAgICAg
ICAgICAgICByZXBsYWNlbWVudFJlZ0V4cDogbmV3IFJlZ0V4cCgiKF58OykoPzpcXHMqKSgiICsg
bmFtZSArICIpKC4rPyg/Ojt8JCkpIikKKyAgICAgICAgICAgIH0pCisgICAgICAgIH0KKworICAg
ICAgICB0aGlzLl9wcm9wZXJ0eVJlZmVyZW5jZU5hbWUgPSBwcm9wZXJ0eU5hbWVzWzBdOworICAg
ICAgICB0aGlzLl9wcm9wZXJ0eVJlZmVyZW5jZVRleHQgPSBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5
bGVEZXRhaWxzUGFuZWwucHJvcGVydHlSZWZlcmVuY2VJbmZvW3RoaXMuX3Byb3BlcnR5UmVmZXJl
bmNlTmFtZV07CisgICAgICAgIHRoaXMuX2hhc1Byb3BlcnR5UmVmZXJlbmNlID0gdGhpcy5fcHJv
cGVydHlSZWZlcmVuY2VUZXh0ICYmICEhdGhpcy5fcHJvcGVydHlSZWZlcmVuY2VUZXh0LnRyaW0o
KS5sZW5ndGg7CisgICAgICAgIHRoaXMuX3JlcHJlc2VudGVkUHJvcGVydHkgPSBudWxsOworICAg
IH0KKworICAgIC8vIFB1YmxpYworCisgICAgZ2V0IGVsZW1lbnQoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIHRoaXMuX2VsZW1lbnQ7CisgICAgfQorCisgICAgZ2V0IHN0eWxlKCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiB0aGlzLl9zdHlsZTsKKyAgICB9CisKKyAgICBnZXQgdmFsdWUoKQorICAg
IHsKKyAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3MuCisgICAgfQorCisgICAgc2V0
IHZhbHVlKHZhbHVlKQorICAgIHsKKyAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Mu
CisgICAgfQorCisgICAgZ2V0IHVuaXRzKCkKKyAgICB7CisgICAgICAgIC8vIEltcGxlbWVudGVk
IGJ5IHN1YmNsYXNzLgorICAgIH0KKworICAgIHNldCB1bml0cyh1bml0KQorICAgIHsKKyAgICAg
ICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3MuCisgICAgfQorCisgICAgZ2V0IHBsYWNlaG9s
ZGVyKCkKKyAgICB7CisgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzLgorICAgIH0K
KworICAgIHNldCBwbGFjZWhvbGRlcih0ZXh0KQorICAgIHsKKyAgICAgICAgLy8gSW1wbGVtZW50
ZWQgYnkgc3ViY2xhc3MuCisgICAgfQorCisgICAgZ2V0IHN5bnRoZXNpemVkVmFsdWUoKQorICAg
IHsKKyAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3MuCisgICAgfQorCisgICAgc2V0
IHN1cHByZXNzU3R5bGVUZXh0VXBkYXRlKGZsYWcpCisgICAgeworICAgICAgICB0aGlzLl9zdXBw
cmVzc1N0eWxlVGV4dFVwZGF0ZSA9IGZsYWc7CisgICAgfQorCisgICAgc2V0IG1hc3RlclByb3Bl
cnR5KGZsYWcpCisgICAgeworICAgICAgICB0aGlzLl9tYXN0ZXJQcm9wZXJ0eSA9IGZsYWc7Cisg
ICAgfQorCisgICAgZ2V0IG1hc3RlclByb3BlcnR5KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0
aGlzLl9tYXN0ZXJQcm9wZXJ0eTsKKyAgICB9CisKKyAgICBzZXQgb3B0aW9uYWxQcm9wZXJ0eShm
bGFnKQorICAgIHsKKyAgICAgICAgdGhpcy5fb3B0aW9uYWxQcm9wZXJ0eSA9IGZsYWc7CisgICAg
fQorCisgICAgZ2V0IG9wdGlvbmFsUHJvcGVydHkoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRo
aXMuX29wdGlvbmFsUHJvcGVydHk7CisgICAgfQorCisgICAgc2V0IGNvbG9yUHJvcGVydHkoZmxh
ZykKKyAgICB7CisgICAgICAgIHRoaXMuX2NvbG9yUHJvcGVydHkgPSBmbGFnOworICAgIH0KKwor
ICAgIGdldCBjb2xvclByb3BlcnR5KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9jb2xv
clByb3BlcnR5OworICAgIH0KKworICAgIGdldCBwcm9wZXJ0eVJlZmVyZW5jZU5hbWUoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3Byb3BlcnR5UmVmZXJlbmNlTmFtZTsKKyAgICB9CisK
KyAgICBzZXQgcHJvcGVydHlSZWZlcmVuY2VOYW1lKG5hbWUpCisgICAgeworICAgICAgICBpZiAo
IW5hbWUgfHwgIW5hbWUubGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRo
aXMuX3Byb3BlcnR5UmVmZXJlbmNlTmFtZSA9IG5hbWU7CisgICAgfQorCisgICAgc2V0IGRpc2Fi
bGVkKGZsYWcpCisgICAgeworICAgICAgICB0aGlzLl9kaXNhYmxlZCA9IGZsYWc7CisgICAgICAg
IHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgiZGlzYWJsZWQiLCB0aGlzLl9kaXNhYmxl
ZCk7CisgICAgICAgIHRoaXMuX3RvZ2dsZVRhYmJpbmdPZlNlbGVjdGFibGVFbGVtZW50cyh0aGlz
Ll9kaXNhYmxlZCk7CisgICAgfQorCisgICAgZ2V0IGRpc2FibGVkKCkKKyAgICB7CisgICAgICAg
IHJldHVybiB0aGlzLl9kaXNhYmxlZDsKKyAgICB9CisKKyAgICB1cGRhdGUoc3R5bGUpCisgICAg
eworICAgICAgICBpZiAoc3R5bGUpCisgICAgICAgICAgICB0aGlzLl9zdHlsZSA9IHN0eWxlOwor
ICAgICAgICBlbHNlIGlmICh0aGlzLl9pZ25vcmVOZXh0VXBkYXRlKSB7CisgICAgICAgICAgICB0
aGlzLl9pZ25vcmVOZXh0VXBkYXRlID0gZmFsc2U7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKworICAgICAgICBpZiAoIXRoaXMuX3N0eWxlKQorICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgIHRoaXMuX3VwZGF0ZWRWYWx1ZXMgPSB7fTsKKyAgICAgICAgbGV0IHByb3BlcnR5
VmFsdWVzQ29uZmxpY3QgPSBmYWxzZTsKKyAgICAgICAgbGV0IHByb3BlcnR5TWlzc2luZyA9IGZh
bHNlOworICAgICAgICBmb3IgKGxldCBwcm9wZXJ0eUluZm8gb2YgdGhpcy5fcHJvcGVydHlJbmZv
TGlzdCkgeworICAgICAgICAgICAgbGV0IHByb3BlcnR5ID0gdGhpcy5fc3R5bGUucHJvcGVydHlG
b3JOYW1lKHByb3BlcnR5SW5mby5uYW1lLCB0cnVlKTsKKyAgICAgICAgICAgIHByb3BlcnR5TWlz
c2luZyA9ICFwcm9wZXJ0eTsKKyAgICAgICAgICAgIGlmIChwcm9wZXJ0eU1pc3NpbmcgJiYgdGhp
cy5fc3R5bGUubm9kZVN0eWxlcykKKyAgICAgICAgICAgICAgICBwcm9wZXJ0eSA9IHRoaXMuX3N0
eWxlLm5vZGVTdHlsZXMuY29tcHV0ZWRTdHlsZS5wcm9wZXJ0eUZvck5hbWUocHJvcGVydHlJbmZv
Lm5hbWUpOworCisgICAgICAgICAgICBpZiAoIXByb3BlcnR5KQorICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworCisgICAgICAgICAgICBpZiAoIXByb3BlcnR5TWlzc2luZyAmJiBwcm9wZXJ0eS5h
bm9ueW1vdXMpCisgICAgICAgICAgICAgICAgdGhpcy5fcmVwcmVzZW50ZWRQcm9wZXJ0eSA9IHBy
b3BlcnR5OworCisgICAgICAgICAgICBsZXQgbmV3VmFsdWVzID0gdGhpcy5nZXRWYWx1ZXNGcm9t
VGV4dChwcm9wZXJ0eS52YWx1ZSwgcHJvcGVydHlNaXNzaW5nKTsKKyAgICAgICAgICAgIGlmICh0
aGlzLl91cGRhdGVkVmFsdWVzLnBsYWNlaG9sZGVyICYmIHRoaXMuX3VwZGF0ZWRWYWx1ZXMucGxh
Y2Vob2xkZXIgIT09IG5ld1ZhbHVlcy5wbGFjZWhvbGRlcikKKyAgICAgICAgICAgICAgICBwcm9w
ZXJ0eVZhbHVlc0NvbmZsaWN0ID0gdHJ1ZTsKKworICAgICAgICAgICAgaWYgKCF0aGlzLl91cGRh
dGVkVmFsdWVzLnBsYWNlaG9sZGVyKQorICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZWRWYWx1
ZXMgPSBuZXdWYWx1ZXM7CisKKyAgICAgICAgICAgIGlmIChwcm9wZXJ0eVZhbHVlc0NvbmZsaWN0
KSB7CisgICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlZFZhbHVlcy5jb25mbGljdGluZ1ZhbHVl
cyA9IHRydWU7CisgICAgICAgICAgICAgICAgdGhpcy5fc3BlY2lhbFByb3BlcnR5UGxhY2Vob2xk
ZXJFbGVtZW50LnRleHRDb250ZW50ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIobXVsdGlwbGUp
Iik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwor
ICAgICAgICBpZiAodGhpcy5faGFzTXVsdGlwbGVQcm9wZXJ0aWVzKQorICAgICAgICAgICAgdGhp
cy5fc3BlY2lhbFByb3BlcnR5UGxhY2Vob2xkZXJFbGVtZW50LmhpZGRlbiA9ICFwcm9wZXJ0eVZh
bHVlc0NvbmZsaWN0OworCisgICAgICAgIHRoaXMudXBkYXRlRWRpdG9yVmFsdWVzKHRoaXMuX3Vw
ZGF0ZWRWYWx1ZXMpOworICAgIH0KKworICAgIHVwZGF0ZUVkaXRvclZhbHVlcyh1cGRhdGVkVmFs
dWVzKQorICAgIHsKKyAgICAgICAgdGhpcy52YWx1ZSA9IHVwZGF0ZWRWYWx1ZXMudmFsdWU7Cisg
ICAgICAgIHRoaXMudW5pdHMgPSB1cGRhdGVkVmFsdWVzLnVuaXRzOworICAgICAgICB0aGlzLnBs
YWNlaG9sZGVyID0gdXBkYXRlZFZhbHVlcy5wbGFjZWhvbGRlcjsKKworICAgICAgICB0aGlzLl9s
YXN0VmFsdWUgPSB0aGlzLnN5bnRoZXNpemVkVmFsdWU7CisgICAgICAgIHRoaXMuZGlzYWJsZWQg
PSBmYWxzZTsKKyAgICB9CisKKyAgICByZXNldEVkaXRvclZhbHVlcyh2YWx1ZSkKKyAgICB7Cisg
ICAgICAgIHRoaXMuX2lnbm9yZU5leHRVcGRhdGUgPSBmYWxzZTsKKyAgICAgICAgaWYgKCF2YWx1
ZSB8fCAhdmFsdWUubGVuZ3RoKSB7CisgICAgICAgICAgICB0aGlzLnZhbHVlID0gbnVsbDsKKyAg
ICAgICAgICAgIHRoaXMuX3NwZWNpYWxQcm9wZXJ0eVBsYWNlaG9sZGVyRWxlbWVudC5oaWRkZW4g
PSBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGxldCB1
cGRhdGVkVmFsdWVzID0gdGhpcy5nZXRWYWx1ZXNGcm9tVGV4dCh2YWx1ZSk7CisgICAgICAgIHRo
aXMudXBkYXRlRWRpdG9yVmFsdWVzKHVwZGF0ZWRWYWx1ZXMpOworICAgIH0KKworICAgIG1vZGlm
eVByb3BlcnR5VGV4dCh0ZXh0LCB2YWx1ZSkKKyAgICB7CisgICAgICAgIGxldCB0cmltbWVkVGV4
dCA9IHRleHQudHJpbVJpZ2h0KCk7CisgICAgICAgIGZvciAobGV0IHByb3BlcnR5IG9mIHRoaXMu
X3Byb3BlcnR5SW5mb0xpc3QpIHsKKyAgICAgICAgICAgIGlmIChwcm9wZXJ0eS50ZXh0Q29udGFp
bnNOYW1lUmVnRXhwLnRlc3QodGV4dCkpCisgICAgICAgICAgICAgICAgdGV4dCA9IHRleHQucmVw
bGFjZShwcm9wZXJ0eS5yZXBsYWNlbWVudFJlZ0V4cCwgdmFsdWUgIT09IG51bGwgPyAiJDEkMjog
IiArIHZhbHVlICsgIjsiIDogIiQxIik7CisgICAgICAgICAgICBlbHNlIGlmICh2YWx1ZSAhPT0g
bnVsbCkgeworICAgICAgICAgICAgICAgIGlmICh0cmltbWVkVGV4dC50cmltTGVmdCgpLmxlbmd0
aCAmJiAhdHJpbW1lZFRleHQuZW5kc1dpdGgoIjsiKSkKKyAgICAgICAgICAgICAgICAgICAgdGV4
dCArPSAiOyI7CisKKyAgICAgICAgICAgICAgICB0ZXh0ICs9IHByb3BlcnR5Lm5hbWUgKyAiOiAi
ICsgdmFsdWUgKyAiOyI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJu
IHRleHQ7CisgICAgfQorCisgICAgZ2V0VmFsdWVzRnJvbVRleHQodGV4dCwgcHJvcGVydHlNaXNz
aW5nKQorICAgIHsKKyAgICAgICAgbGV0IG1hdGNoID0gdGhpcy5wYXJzZVZhbHVlKHRleHQpOwor
ICAgICAgICBsZXQgcGxhY2Vob2xkZXIgPSBtYXRjaCA/IG1hdGNoWzFdIDogdGV4dDsKKyAgICAg
ICAgbGV0IHVuaXRzID0gbWF0Y2ggPyBtYXRjaFsyXSA6IG51bGw7CisgICAgICAgIGxldCB2YWx1
ZSA9IHBsYWNlaG9sZGVyOworICAgICAgICBpZiAocHJvcGVydHlNaXNzaW5nKQorICAgICAgICAg
ICAgdmFsdWUgPSB0aGlzLnZhbHVlSXNTdXBwb3J0ZWRLZXl3b3JkKHRleHQpID8gdGV4dCA6IG51
bGw7CisKKyAgICAgICAgcmV0dXJuIHt2YWx1ZSwgdW5pdHMsIHBsYWNlaG9sZGVyLCBwcm9wZXJ0
eU1pc3Npbmd9OworICAgIH0KKworICAgIGdldCBwcm9wZXJ0eU1pc3NpbmcoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHRoaXMuX3VwZGF0ZWRWYWx1ZXMgJiYgdGhpcy5fdXBkYXRlZFZhbHVlcy5w
cm9wZXJ0eU1pc3Npbmc7CisgICAgfQorCisgICAgdmFsdWVJc0NvbXBhdGlibGUodmFsdWUpCisg
ICAgeworICAgICAgICBpZiAoIXZhbHVlIHx8ICF2YWx1ZS5sZW5ndGgpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVJc1N1cHBvcnRlZEtleXdv
cmQodmFsdWUpIHx8ICEhdGhpcy5wYXJzZVZhbHVlKHZhbHVlKTsKKyAgICB9CisKKyAgICB2YWx1
ZUlzU3VwcG9ydGVkS2V5d29yZCh2YWx1ZSkgeworICAgICAgICBpZiAoIXRoaXMuX3Bvc3NpYmxl
VmFsdWVzKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHZhbHVlID0gdmFs
dWUgfHwgdGhpcy52YWx1ZTsKKyAgICAgICAgaWYgKE9iamVjdC5rZXlzKHRoaXMuX3Bvc3NpYmxl
VmFsdWVzLmJhc2ljKS5pbmNsdWRlcyh2YWx1ZSkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KworICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWVJc1N1cHBvcnRlZEFkdmFuY2VkS2V5d29yZCh2
YWx1ZSk7CisgICAgfQorCisgICAgdmFsdWVJc1N1cHBvcnRlZFVuaXQodW5pdCkKKyAgICB7Cisg
ICAgICAgIGlmICghdGhpcy5fcG9zc2libGVVbml0cykKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgICAgICB1bml0ID0gdW5pdCB8fCB0aGlzLnVuaXRzOworICAgICAgICBpZiAodGhp
cy5fcG9zc2libGVVbml0cy5iYXNpYy5pbmNsdWRlcyh1bml0KSkKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworCisgICAgICAgIHJldHVybiB0aGlzLl92YWx1ZUlzU3VwcG9ydGVkQWR2YW5jZWRV
bml0KHVuaXQpOworICAgIH0KKworICAgIC8vIFByb3RlY3RlZAorCisgICAgZ2V0IGNvbnRlbnRF
bGVtZW50KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9jb250ZW50RWxlbWVudDsKKyAg
ICB9CisKKyAgICBnZXQgc3BlY2lhbFByb3BlcnR5UGxhY2Vob2xkZXJFbGVtZW50KCkKKyAgICB7
CisgICAgICAgIHJldHVybiB0aGlzLl9zcGVjaWFsUHJvcGVydHlQbGFjZWhvbGRlckVsZW1lbnQ7
CisgICAgfQorCisgICAgcGFyc2VWYWx1ZSh0ZXh0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIC9e
KFteO10rKVxzKjs/JC8uZXhlYyh0ZXh0KTsKKyAgICB9CisKKyAgICAvLyBQcml2YXRlCisKKyAg
ICBfdmFsdWVJc1N1cHBvcnRlZEFkdmFuY2VkS2V5d29yZCh2YWx1ZSkKKyAgICB7CisgICAgICAg
IHJldHVybiB0aGlzLl9wb3NzaWJsZVZhbHVlcy5hZHZhbmNlZCAmJiBPYmplY3Qua2V5cyh0aGlz
Ll9wb3NzaWJsZVZhbHVlcy5hZHZhbmNlZCkuaW5jbHVkZXModmFsdWUgfHwgdGhpcy52YWx1ZSk7
CisgICAgfQorCisgICAgX3ZhbHVlSXNTdXBwb3J0ZWRBZHZhbmNlZFVuaXQodW5pdCkKKyAgICB7
CisgICAgICAgIHJldHVybiB0aGlzLl9wb3NzaWJsZVVuaXRzLmFkdmFuY2VkICYmIHRoaXMuX3Bv
c3NpYmxlVW5pdHMuYWR2YW5jZWQuaW5jbHVkZXModW5pdCB8fCB0aGlzLnVuaXRzKTsKKyAgICB9
CisKKyAgICBfY2Fub25pY2FsaXplZEtleXdvcmRGb3JLZXkodmFsdWUpCisgICAgeworICAgICAg
ICBpZiAoIXZhbHVlIHx8ICF0aGlzLl9wb3NzaWJsZVZhbHVlcykKKyAgICAgICAgICAgIHJldHVy
biBudWxsOworCisgICAgICAgIHJldHVybiB0aGlzLl9wb3NzaWJsZVZhbHVlcy5iYXNpY1t2YWx1
ZV0gfHwgKHRoaXMuX3Bvc3NpYmxlVmFsdWVzLmFkdmFuY2VkICYmIHRoaXMuX3Bvc3NpYmxlVmFs
dWVzLmFkdmFuY2VkW3ZhbHVlXSkgfHwgbnVsbDsKKyAgICB9CisKKyAgICBfa2V5Rm9yS2V5d29y
ZChrZXl3b3JkKQorICAgIHsKKyAgICAgICAgaWYgKCFrZXl3b3JkIHx8ICFrZXl3b3JkLmxlbmd0
aCB8fCAhdGhpcy5fcG9zc2libGVWYWx1ZXMpCisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKwor
ICAgICAgICBmb3IgKGxldCBiYXNpY0tleSBpbiB0aGlzLl9wb3NzaWJsZVZhbHVlcy5iYXNpYykg
eworICAgICAgICAgICAgaWYgKHRoaXMuX3Bvc3NpYmxlVmFsdWVzLmJhc2ljW2Jhc2ljS2V5XSA9
PT0ga2V5d29yZCkKKyAgICAgICAgICAgICAgICByZXR1cm4gYmFzaWNLZXk7CisgICAgICAgIH0K
KworICAgICAgICBpZiAoIXRoaXMuX3Bvc3NpYmxlVmFsdWVzLmFkdmFuY2VkKQorICAgICAgICAg
ICAgcmV0dXJuIG51bGw7CisKKyAgICAgICAgZm9yIChsZXQgYWR2YW5jZWRLZXkgaW4gdGhpcy5f
cG9zc2libGVWYWx1ZXMuYWR2YW5jZWQpIHsKKyAgICAgICAgICAgIGlmICh0aGlzLl9wb3NzaWJs
ZVZhbHVlcy5hZHZhbmNlZFthZHZhbmNlZEtleV0gPT09IGtleXdvcmQpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGFkdmFuY2VkS2V5OworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG51bGw7
CisgICAgfQorCisgICAgX3ZhbHVlRGlkQ2hhbmdlKCkKKyAgICB7CisgICAgICAgIGxldCB2YWx1
ZSA9IHRoaXMuc3ludGhlc2l6ZWRWYWx1ZTsKKyAgICAgICAgaWYgKHZhbHVlID09PSB0aGlzLl9s
YXN0VmFsdWUpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgaWYgKHRoaXMu
X3N0eWxlICYmICF0aGlzLl9zdXBwcmVzc1N0eWxlVGV4dFVwZGF0ZSkgeworICAgICAgICAgICAg
bGV0IG5ld1RleHQgPSB0aGlzLl9zdHlsZS50ZXh0OworICAgICAgICAgICAgbmV3VGV4dCA9IHRo
aXMuX3JlcGxhY2VTaG9ydGhhbmRQcm9wZXJ0eVdpdGhMb25naGFuZFByb3BlcnRpZXMobmV3VGV4
dCk7CisgICAgICAgICAgICBuZXdUZXh0ID0gdGhpcy5tb2RpZnlQcm9wZXJ0eVRleHQobmV3VGV4
dCwgdmFsdWUpOworICAgICAgICAgICAgdGhpcy5fc3R5bGUudGV4dCA9IG5ld1RleHQ7CisgICAg
ICAgICAgICBpZiAoIW5ld1RleHQubGVuZ3RoKQorICAgICAgICAgICAgICAgIHRoaXMuX3N0eWxl
LnVwZGF0ZShudWxsLCBudWxsLCB0aGlzLl9zdHlsZS5zdHlsZVNoZWV0VGV4dFJhbmdlKTsKKyAg
ICAgICAgfQorCisgICAgICAgIHRoaXMuX2xhc3RWYWx1ZSA9IHZhbHVlOworICAgICAgICB0aGlz
Ll91cGRhdGVkVmFsdWVzLnByb3BlcnR5TWlzc2luZyA9ICF2YWx1ZTsKKyAgICAgICAgdGhpcy5f
aWdub3JlTmV4dFVwZGF0ZSA9IHRydWU7CisgICAgICAgIHRoaXMuX3NwZWNpYWxQcm9wZXJ0eVBs
YWNlaG9sZGVyRWxlbWVudC5oaWRkZW4gPSB0cnVlOworCisgICAgICAgIHRoaXMuZGlzcGF0Y2hF
dmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLkV2
ZW50LlZhbHVlRGlkQ2hhbmdlKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAg
X3JlcGxhY2VTaG9ydGhhbmRQcm9wZXJ0eVdpdGhMb25naGFuZFByb3BlcnRpZXModGV4dCkKKyAg
ICB7CisgICAgICAgIGlmICghdGhpcy5fcmVwcmVzZW50ZWRQcm9wZXJ0eSkKKyAgICAgICAgICAg
IHJldHVybiB0ZXh0OworCisgICAgICAgIGxldCBzaG9ydGhhbmQgPSB0aGlzLl9yZXByZXNlbnRl
ZFByb3BlcnR5LnJlbGF0ZWRTaG9ydGhhbmRQcm9wZXJ0eTsKKyAgICAgICAgaWYgKCFzaG9ydGhh
bmQpCisgICAgICAgICAgICByZXR1cm4gdGV4dDsKKworICAgICAgICBsZXQgbG9uZ2hhbmRUZXh0
ID0gIiI7CisgICAgICAgIGZvciAobGV0IGxvbmdoYW5kUHJvcGVydHkgb2Ygc2hvcnRoYW5kLnJl
bGF0ZWRMb25naGFuZFByb3BlcnRpZXMpIHsKKyAgICAgICAgICAgIGlmIChsb25naGFuZFByb3Bl
cnR5LmFub255bW91cykKKyAgICAgICAgICAgICAgICBsb25naGFuZFRleHQgKz0gbG9uZ2hhbmRQ
cm9wZXJ0eS5zeW50aGVzaXplZFRleHQ7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGxvbmdo
YW5kVGV4dCA/IHRleHQucmVwbGFjZShzaG9ydGhhbmQudGV4dCwgbG9uZ2hhbmRUZXh0KSA6IHRl
eHQ7CisgICAgfQorCisgICAgX3RpdGxlRWxlbWVudFByZXBhcmVGb3JDbGljayhldmVudCkKKyAg
ICB7CisgICAgICAgIHRoaXMuX3RpdGxlRWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKCJwcm9wZXJ0
eS1yZWZlcmVuY2UtaW5mbyIsIGV2ZW50LnR5cGUgPT09ICJrZXlkb3duIiAmJiBldmVudC5hbHRL
ZXkpOworICAgIH0KKworICAgIF90aXRsZUVsZW1lbnRNb3VzZU92ZXIoZXZlbnQpCisgICAgewor
ICAgICAgICBpZiAoIXRoaXMuX2hhc1Byb3BlcnR5UmVmZXJlbmNlKQorICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgIHRoaXMuX3RpdGxlRWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKCJwcm9w
ZXJ0eS1yZWZlcmVuY2UtaW5mbyIsIGV2ZW50LmFsdEtleSk7CisgICAgICAgIGRvY3VtZW50LmFk
ZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCB0aGlzLl9ib3VuZFRpdGxlRWxlbWVudFByZXBhcmVG
b3JDbGljayk7CisgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleXVwIiwgdGhp
cy5fYm91bmRUaXRsZUVsZW1lbnRQcmVwYXJlRm9yQ2xpY2spOworICAgIH0KKworICAgIF90aXRs
ZUVsZW1lbnRNb3VzZU91dCgpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX2hhc1Byb3BlcnR5
UmVmZXJlbmNlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX3RpdGxlRWxl
bWVudC5jbGFzc0xpc3QucmVtb3ZlKCJwcm9wZXJ0eS1yZWZlcmVuY2UtaW5mbyIpOworICAgICAg
ICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJrZXlkb3duIiwgdGhpcy5fYm91bmRUaXRs
ZUVsZW1lbnRQcmVwYXJlRm9yQ2xpY2spOworICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExp
c3RlbmVyKCJrZXl1cCIsIHRoaXMuX2JvdW5kVGl0bGVFbGVtZW50UHJlcGFyZUZvckNsaWNrKTsK
KyAgICB9CisKKyAgICBfdGl0bGVFbGVtZW50Q2xpY2soZXZlbnQpCisgICAgeworICAgICAgICBp
ZiAoZXZlbnQuYWx0S2V5KQorICAgICAgICAgICAgdGhpcy5fc2hvd1Byb3BlcnR5SW5mb1BvcG92
ZXIoKTsKKyAgICB9CisKKyAgICBfaGFzTXVsdGlwbGVDb25mbGljdGluZ1ZhbHVlcygpCisgICAg
eworICAgICAgICByZXR1cm4gdGhpcy5faGFzTXVsdGlwbGVQcm9wZXJ0aWVzICYmICF0aGlzLl9z
cGVjaWFsUHJvcGVydHlQbGFjZWhvbGRlckVsZW1lbnQuaGlkZGVuOworICAgIH0KKworICAgIF9z
aG93UHJvcGVydHlJbmZvUG9wb3ZlcigpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX2hhc1By
b3BlcnR5UmVmZXJlbmNlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGxldCBwcm9w
ZXJ0eUluZm9FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgicCIpOworICAgICAgICBw
cm9wZXJ0eUluZm9FbGVtZW50LmNsYXNzTGlzdC5hZGQoInZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1p
bmZvLXBvcG92ZXIiKTsKKworICAgICAgICBsZXQgcHJvcGVydHlJbmZvVGl0bGVFbGVtZW50ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaDMiKTsKKyAgICAgICAgcHJvcGVydHlJbmZvVGl0bGVF
bGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRoaXMuX3Byb3BlcnR5
UmVmZXJlbmNlTmFtZSkpOworICAgICAgICBwcm9wZXJ0eUluZm9FbGVtZW50LmFwcGVuZENoaWxk
KHByb3BlcnR5SW5mb1RpdGxlRWxlbWVudCk7CisKKyAgICAgICAgcHJvcGVydHlJbmZvRWxlbWVu
dC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0aGlzLl9wcm9wZXJ0eVJlZmVy
ZW5jZVRleHQpKTsKKworICAgICAgICBsZXQgYm91bmRzID0gV2ViSW5zcGVjdG9yLlJlY3QucmVj
dEZyb21DbGllbnRSZWN0KHRoaXMuX3RpdGxlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3Qo
KSk7CisgICAgICAgIGxldCBwb3BvdmVyID0gbmV3IFdlYkluc3BlY3Rvci5Qb3BvdmVyKHRoaXMp
OworICAgICAgICBwb3BvdmVyLmNvbnRlbnQgPSBwcm9wZXJ0eUluZm9FbGVtZW50OworICAgICAg
ICBwb3BvdmVyLnByZXNlbnQoYm91bmRzLnBhZCgyKSwgW1dlYkluc3BlY3Rvci5SZWN0RWRnZS5N
SU5fWV0pOworICAgIH0KKworICAgIF90b2dnbGVUYWJiaW5nT2ZTZWxlY3RhYmxlRWxlbWVudHMo
ZGlzYWJsZWQpCisgICAgeworICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzcy4KKyAg
ICB9Cit9OworCitXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5FdmVudCA9
IHsKKyAgICBWYWx1ZURpZENoYW5nZTogInZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItdmFs
dWUtY2hhbmdlZCIKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlVGFiYmVkUHJvcGVydGllc1Jvdy5jc3MgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZVRhYmJlZFByb3Bl
cnRpZXNSb3cuY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3OTAwZGIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9WaXN1YWxTdHlsZVRhYmJlZFByb3BlcnRpZXNSb3cuY3NzCkBAIC0wLDAgKzEsNTEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisudmlzdWFsLXN0eWxlLXRhYmJlZC1wcm9wZXJ0aWVzLXJvdyB+IDpub3Qo
LnZpc2libGUpIHsKKyAgICB2aXNpYmlsaXR5OiBoaWRkZW47CisgICAgaGVpZ2h0OiAwOworfQor
CisudmlzdWFsLXN0eWxlLXRhYmJlZC1wcm9wZXJ0aWVzLXJvdyA+IC52aXN1YWwtc3R5bGUtdGFi
YmVkLXByb3BlcnRpZXMtcm93LWNvbnRhaW5lciB7CisgICAgbWFyZ2luOiAwIGF1dG87Cit9CisK
Ky52aXN1YWwtc3R5bGUtdGFiYmVkLXByb3BlcnRpZXMtcm93ID4gLnZpc3VhbC1zdHlsZS10YWJi
ZWQtcHJvcGVydGllcy1yb3ctY29udGFpbmVyID4gYnV0dG9uIHsKKyAgICBtYXJnaW46IDAgMnB4
IDJweDsKKyAgICBib3JkZXItcmFkaXVzOiAzcHg7CisgICAgYm9yZGVyLXdpZHRoOiAwIDFweDsK
KyAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50OworICAgIGJhY2tncm91bmQtY29sb3I6IHRy
YW5zcGFyZW50OworfQorCisudmlzdWFsLXN0eWxlLXRhYmJlZC1wcm9wZXJ0aWVzLXJvdyA+IC52
aXN1YWwtc3R5bGUtdGFiYmVkLXByb3BlcnRpZXMtcm93LWNvbnRhaW5lciA+IGJ1dHRvbi5zZWxl
Y3RlZCB7CisgICAgY29sb3I6IHdoaXRlOworICAgIGJhY2tncm91bmQtY29sb3I6IGhzbCgyMTMs
IDkyJSwgNTUlKTsKK30KKworLnZpc3VhbC1zdHlsZS10YWJiZWQtcHJvcGVydGllcy1yb3cgPiAu
dmlzdWFsLXN0eWxlLXRhYmJlZC1wcm9wZXJ0aWVzLXJvdy1jb250YWluZXIgPiBidXR0b246bm90
KC5zZWxlY3RlZCk6aG92ZXIgeworICAgIGNvbG9yOiB3aGl0ZTsKKyAgICBiYWNrZ3JvdW5kLWNv
bG9yOiBoc2xhKDIxMywgOTIlLCA1NSUsIDAuNSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZVRhYmJlZFByb3BlcnRp
ZXNSb3cuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1
YWxTdHlsZVRhYmJlZFByb3BlcnRpZXNSb3cuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uNjNiZGJiMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlVGFiYmVkUHJvcGVydGllc1Jvdy5qcwpA
QCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlVGFi
YmVkUHJvcGVydGllc1JvdyA9IGNsYXNzIFZpc3VhbFN0eWxlVGFiYmVkUHJvcGVydGllc1JvdyBl
eHRlbmRzIFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdworeworICAgIGNvbnN0cnVjdG9y
KHRhYk1hcCkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CisKKyAgICAgICAgdGhpcy5fZWxlbWVu
dC5jbGFzc0xpc3QuYWRkKCJ2aXN1YWwtc3R5bGUtdGFiYmVkLXByb3BlcnRpZXMtcm93Iik7CisK
KyAgICAgICAgbGV0IGNvbnRhaW5lckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJk
aXYiKTsKKyAgICAgICAgY29udGFpbmVyRWxlbWVudC5jbGFzc0xpc3QuYWRkKCJ2aXN1YWwtc3R5
bGUtdGFiYmVkLXByb3BlcnRpZXMtcm93LWNvbnRhaW5lciIpOworCisgICAgICAgIHRoaXMuX3Rh
YkJ1dHRvbnMgPSBbXTsKKyAgICAgICAgdGhpcy5fdGFiTWFwID0gdGFiTWFwOworICAgICAgICBm
b3IgKGxldCBrZXkgaW4gdGhpcy5fdGFiTWFwKSB7CisgICAgICAgICAgICBsZXQgYnV0dG9uID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnV0dG9uIik7CisgICAgICAgICAgICBidXR0b24uaWQg
PSBrZXk7CisgICAgICAgICAgICBidXR0b24udGV4dENvbnRlbnQgPSB0aGlzLl90YWJNYXBba2V5
XS50aXRsZTsKKyAgICAgICAgICAgIGJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRo
aXMuX2hhbmRsZUJ1dHRvbkNsaWNrZWQuYmluZCh0aGlzKSk7CisKKyAgICAgICAgICAgIGNvbnRh
aW5lckVsZW1lbnQuYXBwZW5kQ2hpbGQoYnV0dG9uKTsKKyAgICAgICAgICAgIHRoaXMuX3RhYkJ1
dHRvbnMucHVzaChidXR0b24pOworICAgICAgICB9CisKKyAgICAgICAgbGV0IGZpcnN0QnV0dG9u
ID0gdGhpcy5fdGFiQnV0dG9uc1swXTsKKyAgICAgICAgZmlyc3RCdXR0b24uY2xhc3NMaXN0LmFk
ZCgic2VsZWN0ZWQiKTsKKyAgICAgICAgdGhpcy5fdGFiTWFwW2ZpcnN0QnV0dG9uLmlkXS5lbGVt
ZW50LmNsYXNzTGlzdC5hZGQoInZpc2libGUiKTsKKworICAgICAgICB0aGlzLl9lbGVtZW50LmFw
cGVuZENoaWxkKGNvbnRhaW5lckVsZW1lbnQpOworICAgIH0KKworICAgIC8vIFByaXZhdGUKKwor
ICAgIF9oYW5kbGVCdXR0b25DbGlja2VkKGV2ZW50KQorICAgIHsKKyAgICAgICAgZm9yIChsZXQg
aXRlbSBvZiB0aGlzLl90YWJCdXR0b25zKSB7CisgICAgICAgICAgICBsZXQgdGFiID0gdGhpcy5f
dGFiTWFwW2l0ZW0uaWRdOworICAgICAgICAgICAgbGV0IHNlbGVjdGVkID0gaXRlbSA9PT0gZXZl
bnQudGFyZ2V0OworICAgICAgICAgICAgaXRlbS5jbGFzc0xpc3QudG9nZ2xlKCJzZWxlY3RlZCIs
IHNlbGVjdGVkKTsKKyAgICAgICAgICAgIHRhYi5lbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoInZp
c2libGUiLCBzZWxlY3RlZCk7CisgICAgICAgICAgICBmb3IgKGxldCBwcm9wZXJ0eUVkaXRvciBv
ZiB0YWIucHJvcGVydGllcykKKyAgICAgICAgICAgICAgICBwcm9wZXJ0eUVkaXRvci51cGRhdGUo
KTsKKyAgICAgICAgfQorICAgIH0KK307Cg==
</data>
<flag name="commit-queue"
          id="284218"
          type_id="3"
          status="+"
          setter="hi"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259018</attachid>
            <date>2015-08-14 12:12:36 -0700</date>
            <delta_ts>2015-08-14 13:07:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>147576.txt</filename>
            <type>text/plain</type>
            <size>40894</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDM4MjVhMDIuLjUyYmIzMTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMSBAQAorMjAxNS0wOC0xNCAgRGV2aW4gUm91c3Nv
ICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQWRkIHZpc3Vh
bCBlZGl0b3JzIGZvciBDU1MgcHJvcGVydGllcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3NTc2CisKKyAgICAgICAgQWRkZWQgcGFyZW50IGNsYXNz
IGZvciBwcm9wZXJ0eSBlZGl0b3JzIGluIHRoZSBWaXN1YWwgc3R5bGUKKyAgICAgICAgZGV0YWls
cyBwYW5lbCBpbiB0aGUgQ1NTIHNpZGViYXIuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltb3Ro
eSBIYXRjaGVyLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZVBy
b3BlcnR5Q29tYmluZXIuanM6IEFkZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0
eWxlUHJvcGVydHlDb21iaW5lcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQ
cm9wZXJ0eUNvbWJpbmVyLnByb3RvdHlwZS5nZXQgc3R5bGUpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlZpc3VhbFN0eWxlUHJvcGVydHlDb21iaW5lci5wcm90b3R5cGUuZ2V0IHN5bnRoZXNpemVk
VmFsdWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlDb21iaW5l
ci5wcm90b3R5cGUubW9kaWZ5UHJvcGVydHlUZXh0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5W
aXN1YWxTdHlsZVByb3BlcnR5Q29tYmluZXIucHJvdG90eXBlLnVwZGF0ZSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUNvbWJpbmVyLnByb3RvdHlwZS51cGRhdGVW
YWx1ZXNGcm9tVGV4dC51cGRhdGVDb21wYXRpYmxlRWRpdG9yKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5Q29tYmluZXIucHJvdG90eXBlLnVwZGF0ZVZhbHVlc0Zy
b21UZXh0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5Q29tYmlu
ZXIucHJvdG90eXBlLnByb3BlcnR5TWlzc2luZyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlz
dWFsU3R5bGVQcm9wZXJ0eUNvbWJpbmVyLnByb3RvdHlwZS5yZXNldEVkaXRvclZhbHVlcyk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUNvbWJpbmVyLnByb3RvdHlw
ZS5fbWFya0VkaXRvcnMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVy
dHlDb21iaW5lci5wcm90b3R5cGUuX2hhbmRsZVByb3BlcnR5RWRpdG9yVmFsdWVDaGFuZ2VkKToK
KworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRv
ci5jc3M6IEFkZGVkLgorICAgICAgICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIp
OgorICAgICAgICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIgPiAudmlzdWFsLXN0
eWxlLXByb3BlcnR5LXRpdGxlKToKKyAgICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHktY29u
dGFpbmVyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS10aXRsZSA+IC5wcm9wZXJ0eS1yZWZlcmVu
Y2UtaW5mbyk6CisgICAgICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5kaXNh
YmxlZCA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdGl0bGUgPiA6bm90KC5wcm9wZXJ0eS1yZWZl
cmVuY2UtaW5mbykpOgorICAgICAgICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIg
PiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lcik6CisgICAgICAgICgudmlz
dWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5kaXNhYmxlZCA+IC52aXN1YWwtc3R5bGUtcHJv
cGVydHktdmFsdWUtY29udGFpbmVyKToKKyAgICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHkt
Y29udGFpbmVyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgc2VsZWN0
KToKKyAgICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyID4gLnZpc3VhbC1z
dHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgaW5wdXQpOgorICAgICAgICAoLnZpc3VhbC1z
dHlsZS1wcm9wZXJ0eS1jb250YWluZXIuZGlzYWJsZWQgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5
LXZhbHVlLWNvbnRhaW5lciBpbnB1dCk6CisgICAgICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5
LWNvbnRhaW5lci5sYXlvdXQtcmV2ZXJzZWQgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXRpdGxl
KToKKyAgICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyID4gLnZpc3VhbC1z
dHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLXNwZWNpYWwtcHJv
cGVydHktcGxhY2Vob2xkZXIpOgorICAgICAgICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1pbmZv
LXBvcG92ZXIpOgorICAgICAgICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1pbmZvLXBvcG92ZXIg
PiBoMyk6CisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlUHJvcGVy
dHlFZGl0b3IuanM6IEFkZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJv
cGVydHlFZGl0b3IuY2Fub25pY2FsaXplVmFsdWVzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5W
aXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxT
dHlsZVByb3BlcnR5RWRpdG9yLnByb3RvdHlwZS5nZXQgZWxlbWVudCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5wcm90b3R5cGUuZ2V0IHN0eWxlKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnByb3RvdHlw
ZS5nZXQgdmFsdWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlF
ZGl0b3IucHJvdG90eXBlLnNldCB2YWx1ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFs
U3R5bGVQcm9wZXJ0eUVkaXRvci5wcm90b3R5cGUuZ2V0IHVuaXRzKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnByb3RvdHlwZS5zZXQgdW5pdHMpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IucHJvdG90eXBl
LmdldCBwbGFjZWhvbGRlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9w
ZXJ0eUVkaXRvci5wcm90b3R5cGUuc2V0IHBsYWNlaG9sZGVyKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnByb3RvdHlwZS5nZXQgc3ludGhlc2l6ZWRW
YWx1ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5w
cm90b3R5cGUuc2V0IHN1cHByZXNzU3R5bGVUZXh0VXBkYXRlKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnByb3RvdHlwZS5zZXQgbWFzdGVyUHJvcGVy
dHkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IucHJv
dG90eXBlLmdldCBtYXN0ZXJQcm9wZXJ0eSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFs
U3R5bGVQcm9wZXJ0eUVkaXRvci5wcm90b3R5cGUuc2V0IG9wdGlvbmFsUHJvcGVydHkpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IucHJvdG90eXBlLmdl
dCBvcHRpb25hbFByb3BlcnR5KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVBy
b3BlcnR5RWRpdG9yLnByb3RvdHlwZS5zZXQgY29sb3JQcm9wZXJ0eSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5wcm90b3R5cGUuZ2V0IGNvbG9yUHJv
cGVydHkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3Iu
cHJvdG90eXBlLmdldCBwcm9wZXJ0eVJlZmVyZW5jZU5hbWUpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IucHJvdG90eXBlLnNldCBwcm9wZXJ0eVJlZmVy
ZW5jZU5hbWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0
b3IucHJvdG90eXBlLnNldCBkaXNhYmxlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFs
U3R5bGVQcm9wZXJ0eUVkaXRvci5wcm90b3R5cGUuZ2V0IGRpc2FibGVkKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnByb3RvdHlwZS51cGRhdGUpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IucHJvdG90eXBl
LnVwZGF0ZUVkaXRvclZhbHVlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQ
cm9wZXJ0eUVkaXRvci5wcm90b3R5cGUucmVzZXRFZGl0b3JWYWx1ZXMpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IucHJvdG90eXBlLm1vZGlmeVByb3Bl
cnR5VGV4dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRv
ci5wcm90b3R5cGUuZ2V0VmFsdWVzRnJvbVRleHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZp
c3VhbFN0eWxlUHJvcGVydHlFZGl0b3IucHJvdG90eXBlLnByb3BlcnR5TWlzc2luZyk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5wcm90b3R5cGUudmFs
dWVJc0NvbXBhdGlibGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVy
dHlFZGl0b3IucHJvdG90eXBlLnZhbHVlSXNTdXBwb3J0ZWRLZXl3b3JkKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnByb3RvdHlwZS52YWx1ZUlzU3Vw
cG9ydGVkVW5pdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVk
aXRvci5wcm90b3R5cGUuZ2V0IGNvbnRlbnRFbGVtZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnByb3RvdHlwZS5nZXQgc3BlY2lhbFByb3BlcnR5
UGxhY2Vob2xkZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVBy
b3BlcnR5RWRpdG9yLnByb3RvdHlwZS5wYXJzZVZhbHVlKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnByb3RvdHlwZS5fdmFsdWVJc1N1cHBvcnRlZEFk
dmFuY2VkS2V5d29yZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0
eUVkaXRvci5wcm90b3R5cGUuX3ZhbHVlSXNTdXBwb3J0ZWRBZHZhbmNlZFVuaXQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IucHJvdG90eXBlLl9jYW5v
bmljYWxpemVkS2V5d29yZEZvcktleSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5
bGVQcm9wZXJ0eUVkaXRvci5wcm90b3R5cGUuX2tleUZvcktleXdvcmQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IucHJvdG90eXBlLl92YWx1ZURpZENo
YW5nZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5w
cm90b3R5cGUuX3JlcGxhY2VTaG9ydGhhbmRQcm9wZXJ0eVdpdGhMb25naGFuZFByb3BlcnRpZXMp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IucHJvdG90
eXBlLl90aXRsZUVsZW1lbnRQcmVwYXJlRm9yQ2xpY2spOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IucHJvdG90eXBlLl90aXRsZUVsZW1lbnRNb3VzZU92
ZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IucHJv
dG90eXBlLl90aXRsZUVsZW1lbnRNb3VzZU91dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlz
dWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5wcm90b3R5cGUuX3RpdGxlRWxlbWVudENsaWNrKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnByb3RvdHlwZS5f
aGFzTXVsdGlwbGVDb25mbGljdGluZ1ZhbHVlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlz
dWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5wcm90b3R5cGUuX3Nob3dQcm9wZXJ0eUluZm9Qb3BvdmVy
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLnByb3Rv
dHlwZS5fdG9nZ2xlVGFiYmluZ09mU2VsZWN0YWJsZUVsZW1lbnRzKToKKworICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVUYWJiZWRQcm9wZXJ0aWVzUm93LmNzczogQWRk
ZWQuCisgICAgICAgICgudmlzdWFsLXN0eWxlLXRhYmJlZC1wcm9wZXJ0aWVzLXJvdyB+IDpub3Qo
LnZpc2libGUpKToKKyAgICAgICAgKC52aXN1YWwtc3R5bGUtdGFiYmVkLXByb3BlcnRpZXMtcm93
ID4gLnZpc3VhbC1zdHlsZS10YWJiZWQtcHJvcGVydGllcy1yb3ctY29udGFpbmVyKToKKyAgICAg
ICAgKC52aXN1YWwtc3R5bGUtdGFiYmVkLXByb3BlcnRpZXMtcm93ID4gLnZpc3VhbC1zdHlsZS10
YWJiZWQtcHJvcGVydGllcy1yb3ctY29udGFpbmVyID4gYnV0dG9uKToKKyAgICAgICAgKC52aXN1
YWwtc3R5bGUtdGFiYmVkLXByb3BlcnRpZXMtcm93ID4gLnZpc3VhbC1zdHlsZS10YWJiZWQtcHJv
cGVydGllcy1yb3ctY29udGFpbmVyID4gYnV0dG9uLnNlbGVjdGVkKToKKyAgICAgICAgKC52aXN1
YWwtc3R5bGUtdGFiYmVkLXByb3BlcnRpZXMtcm93ID4gLnZpc3VhbC1zdHlsZS10YWJiZWQtcHJv
cGVydGllcy1yb3ctY29udGFpbmVyID4gYnV0dG9uOm5vdCguc2VsZWN0ZWQpOmhvdmVyKToKKwor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVUYWJiZWRQcm9wZXJ0aWVz
Um93LmpzOiBBZGRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVRhYmJlZFBy
b3BlcnRpZXNSb3cpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlVGFiYmVkUHJv
cGVydGllc1Jvdy5wcm90b3R5cGUuX2hhbmRsZUJ1dHRvbkNsaWNrZWQpOgorCiAyMDE1LTA4LTEz
ICBOaWtpdGEgVmFzaWx5ZXYgIDxudmFzaWx5ZXZAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IENhbid0IHJlc2l6ZSBzcGxpdCBjb25zb2xlIHdoZW4gd2luZG93IGlzIHRvbyBu
YXJyb3cKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1Zpc3VhbFN0eWxlUHJvcGVydHlDb21iaW5lci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlUHJvcGVydHlDb21iaW5lci5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYTdlZDFjCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVQ
cm9wZXJ0eUNvbWJpbmVyLmpzCkBAIC0wLDAgKzEsMTgyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV2ViSW5z
cGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlDb21iaW5lciA9IGNsYXNzIFZpc3VhbFN0eWxlUHJv
cGVydHlDb21iaW5lciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKK3sKKyAgICBjb25zdHJ1
Y3Rvcihwcm9wZXJ0eU5hbWUsIHByb3BlcnR5RWRpdG9ycykKKyAgICB7CisgICAgICAgIHN1cGVy
KCk7CisKKyAgICAgICAgdGhpcy5fc3R5bGUgPSBudWxsOworICAgICAgICB0aGlzLl9wcm9wZXJ0
eU5hbWUgPSBwcm9wZXJ0eU5hbWU7CisgICAgICAgIHRoaXMuX3Byb3BlcnR5TWlzc2luZyA9IGZh
bHNlOworICAgICAgICB0aGlzLl9wcm9wZXJ0eUVkaXRvcnMgPSBwcm9wZXJ0eUVkaXRvcnMgfHwg
W107CisKKyAgICAgICAgZm9yIChsZXQgZWRpdG9yIG9mIHRoaXMuX3Byb3BlcnR5RWRpdG9ycykg
eworICAgICAgICAgICAgZWRpdG9yLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlZpc3Vh
bFN0eWxlUHJvcGVydHlFZGl0b3IuRXZlbnQuVmFsdWVEaWRDaGFuZ2UsIHRoaXMuX2hhbmRsZVBy
b3BlcnR5RWRpdG9yVmFsdWVDaGFuZ2VkLCB0aGlzKTsKKyAgICAgICAgICAgIGVkaXRvci5zdXBw
cmVzc1N0eWxlVGV4dFVwZGF0ZSA9IHRydWU7CisgICAgICAgIH0KKworICAgICAgICB0aGlzLl90
ZXh0Q29udGFpbnNOYW1lUmVnRXhwID0gbmV3IFJlZ0V4cCgiKD86KD86Xnw7KVxccyoiICsgdGhp
cy5fcHJvcGVydHlOYW1lICsgIlxccyo6KSIpOworICAgICAgICB0aGlzLl9yZXBsYWNlbWVudFJl
Z0V4cCA9IG5ldyBSZWdFeHAoIihefDspKD86XFxzKikoIiArIHRoaXMuX3Byb3BlcnR5TmFtZSAr
ICIpKC4rPyg/Ojt8JCkpIik7CisgICAgICAgIHRoaXMuX3ZhbHVlUmVnRXhwID0gLyhbXlxzXStc
KC4rXCl8W15cc10rKSg/Ojs/KS9nOworICAgIH0KKworICAgIGdldCBzdHlsZSgpCisgICAgewor
ICAgICAgICByZXR1cm4gdGhpcy5fc3R5bGU7CisgICAgfQorCisgICAgZ2V0IHN5bnRoZXNpemVk
VmFsdWUoKQorICAgIHsKKyAgICAgICAgbGV0IHZhbHVlID0gIiI7CisgICAgICAgIGxldCBvbmVF
ZGl0b3JIYXNWYWx1ZSA9IGZhbHNlOworICAgICAgICBmb3IgKGxldCBlZGl0b3Igb2YgdGhpcy5f
cHJvcGVydHlFZGl0b3JzKSB7CisgICAgICAgICAgICBsZXQgZWRpdG9yVmFsdWUgPSBlZGl0b3Iu
c3ludGhlc2l6ZWRWYWx1ZTsKKyAgICAgICAgICAgIGlmIChlZGl0b3JWYWx1ZSAmJiBlZGl0b3JW
YWx1ZS5sZW5ndGgpCisgICAgICAgICAgICAgICAgb25lRWRpdG9ySGFzVmFsdWUgPSB0cnVlOwor
ICAgICAgICAgICAgZWxzZSBpZiAoZWRpdG9yLm9wdGlvbmFsUHJvcGVydHkpCisgICAgICAgICAg
ICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIGlmIChlZGl0b3IubWFzdGVyUHJvcGVydHkg
JiYgZWRpdG9yLnZhbHVlSXNTdXBwb3J0ZWRLZXl3b3JkKCkpIHsKKyAgICAgICAgICAgICAgICB0
aGlzLl9tYXJrRWRpdG9ycyhlZGl0b3IsIHRydWUpOworICAgICAgICAgICAgICAgIHJldHVybiBl
ZGl0b3JWYWx1ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGVkaXRvciAhPT0g
dGhpcy5fcHJvcGVydHlFZGl0b3JzWzBdKQorICAgICAgICAgICAgICAgIHZhbHVlICs9ICIgIjsK
KworICAgICAgICAgICAgdmFsdWUgKz0gZWRpdG9yVmFsdWUgfHwgKGVkaXRvci5jb2xvclByb3Bl
cnR5ID8gInRyYW5zcGFyZW50IiA6IDApOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fbWFy
a0VkaXRvcnMoKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlLmxlbmd0aCAmJiBvbmVFZGl0b3JIYXNW
YWx1ZSA/IHZhbHVlIDogbnVsbDsKKyAgICB9CisKKyAgICBtb2RpZnlQcm9wZXJ0eVRleHQodGV4
dCwgdmFsdWUpCisgICAgeworICAgICAgICBsZXQgdHJpbW1lZFRleHQgPSB0ZXh0LnRyaW1SaWdo
dCgpOworICAgICAgICBpZiAodGhpcy5fdGV4dENvbnRhaW5zTmFtZVJlZ0V4cC50ZXN0KHRleHQp
KQorICAgICAgICAgICAgdGV4dCA9IHRleHQucmVwbGFjZSh0aGlzLl9yZXBsYWNlbWVudFJlZ0V4
cCwgdmFsdWUgIT09IG51bGwgPyAiJDEkMjogIiArIHZhbHVlICsgIjsiIDogIiQxIik7CisgICAg
ICAgIGVsc2UgaWYgKHZhbHVlICE9PSBudWxsKSB7CisgICAgICAgICAgICBpZiAodHJpbW1lZFRl
eHQudHJpbUxlZnQoKS5sZW5ndGggJiYgIXRyaW1tZWRUZXh0LmVuZHNXaXRoKCI7IikpCisgICAg
ICAgICAgICAgICAgdGV4dCArPSAiOyI7CisKKyAgICAgICAgICAgIHRleHQgKz0gdGhpcy5fcHJv
cGVydHlOYW1lICsgIjogIiArIHZhbHVlICsgIjsiOworICAgICAgICB9CisgICAgICAgIHJldHVy
biB0ZXh0OworICAgIH0KKworICAgIHVwZGF0ZShzdHlsZSkKKyAgICB7CisgICAgICAgIGlmIChz
dHlsZSkKKyAgICAgICAgICAgIHRoaXMuX3N0eWxlID0gc3R5bGU7CisgICAgICAgIGVsc2UgaWYg
KHRoaXMuX2lnbm9yZU5leHRVcGRhdGUpIHsKKyAgICAgICAgICAgIHRoaXMuX2lnbm9yZU5leHRV
cGRhdGUgPSBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IGlmICghdGhpcy5fc3R5bGUgfHwgIXRoaXMuX3ZhbHVlUmVnRXhwKQorICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgIGxldCBwcm9wZXJ0eSA9IHRoaXMuX3N0eWxlLnByb3BlcnR5Rm9yTmFt
ZSh0aGlzLl9wcm9wZXJ0eU5hbWUsIHRydWUpOworICAgICAgICBsZXQgcHJvcGVydHlNaXNzaW5n
ID0gIXByb3BlcnR5OworICAgICAgICBpZiAocHJvcGVydHlNaXNzaW5nICYmIHRoaXMuX3N0eWxl
Lm5vZGVTdHlsZXMpCisgICAgICAgICAgICBwcm9wZXJ0eSA9IHRoaXMuX3N0eWxlLm5vZGVTdHls
ZXMuY29tcHV0ZWRTdHlsZS5wcm9wZXJ0eUZvck5hbWUodGhpcy5fcHJvcGVydHlOYW1lKTsKKwor
ICAgICAgICBpZiAoIXByb3BlcnR5KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRo
aXMudXBkYXRlVmFsdWVzRnJvbVRleHQocHJvcGVydHkudmFsdWUsIHByb3BlcnR5TWlzc2luZyk7
CisgICAgICAgIHRoaXMuX3Byb3BlcnR5TWlzc2luZyA9IHByb3BlcnR5TWlzc2luZzsKKyAgICB9
CisKKyAgICB1cGRhdGVWYWx1ZXNGcm9tVGV4dChzdHlsZVRleHQsIHByb3BlcnR5TWlzc2luZykK
KyAgICB7CisgICAgICAgIGlmIChzdHlsZVRleHQgPT09IHRoaXMuc3ludGhlc2l6ZWRWYWx1ZSkK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBmb3IgKGxldCBlZGl0b3Igb2YgdGhpcy5f
cHJvcGVydHlFZGl0b3JzKQorICAgICAgICAgICAgZWRpdG9yW1dlYkluc3BlY3Rvci5WaXN1YWxT
dHlsZVByb3BlcnR5Q29tYmluZXIuRWRpdG9yVXBkYXRlZFN5bWJvbF0gPSBmYWxzZTsKKworICAg
ICAgICBmdW5jdGlvbiB1cGRhdGVDb21wYXRpYmxlRWRpdG9yKHZhbHVlKSB7CisgICAgICAgICAg
ICBmb3IgKGxldCBlZGl0b3Igb2YgdGhpcy5fcHJvcGVydHlFZGl0b3JzKSB7CisgICAgICAgICAg
ICAgICAgaWYgKHZhbHVlICYmICFlZGl0b3IudmFsdWVJc0NvbXBhdGlibGUodmFsdWUpIHx8IGVk
aXRvcltXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUNvbWJpbmVyLkVkaXRvclVwZGF0
ZWRTeW1ib2xdKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAg
ICAgIGlmICh0aGlzLl9jdXJyZW50VmFsdWVJc0tleXdvcmQgJiYgZWRpdG9yLmRpc2FibGVkKQor
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgICAgIGxldCB1cGRh
dGVkVmFsdWVzID0gZWRpdG9yLmdldFZhbHVlc0Zyb21UZXh0KHZhbHVlIHx8ICIiLCBwcm9wZXJ0
eU1pc3NpbmcpOworICAgICAgICAgICAgICAgIGVkaXRvci51cGRhdGVFZGl0b3JWYWx1ZXModXBk
YXRlZFZhbHVlcyk7CisgICAgICAgICAgICAgICAgZWRpdG9yW1dlYkluc3BlY3Rvci5WaXN1YWxT
dHlsZVByb3BlcnR5Q29tYmluZXIuRWRpdG9yVXBkYXRlZFN5bWJvbF0gPSB0cnVlOworCisgICAg
ICAgICAgICAgICAgaWYgKHZhbHVlKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBsZXQgbWF0Y2hlcyA9IHN0eWxlVGV4dC5t
YXRjaCh0aGlzLl92YWx1ZVJlZ0V4cCk7CisgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhp
cy5fcHJvcGVydHlFZGl0b3JzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgdXBkYXRlQ29tcGF0
aWJsZUVkaXRvci5jYWxsKHRoaXMsIG1hdGNoZXMgJiYgbWF0Y2hlc1tpXSk7CisgICAgfQorCisg
ICAgZ2V0IHByb3BlcnR5TWlzc2luZygpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fcHJv
cGVydHlNaXNzaW5nOworICAgIH0KKworICAgIHJlc2V0RWRpdG9yVmFsdWVzKHZhbHVlKQorICAg
IHsKKyAgICAgICAgdGhpcy5faWdub3JlTmV4dFVwZGF0ZSA9IGZhbHNlOworICAgICAgICB0aGlz
LnVwZGF0ZVZhbHVlc0Zyb21UZXh0KHZhbHVlIHx8ICIiKTsKKyAgICB9CisKKyAgICAvLyBQcml2
YXRlCisKKyAgICBfbWFya0VkaXRvcnMoaWdub3JlZEVkaXRvciwgZGlzYWJsZWQpCisgICAgewor
ICAgICAgICB0aGlzLl9jdXJyZW50VmFsdWVJc0tleXdvcmQgPSBkaXNhYmxlZCB8fCBmYWxzZTsK
KyAgICAgICAgZm9yIChsZXQgZWRpdG9yIG9mIHRoaXMuX3Byb3BlcnR5RWRpdG9ycykgeworICAg
ICAgICAgICAgaWYgKGlnbm9yZWRFZGl0b3IgJiYgZWRpdG9yID09PSBpZ25vcmVkRWRpdG9yKQor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBlZGl0b3IuZGlzYWJsZWQg
PSB0aGlzLl9jdXJyZW50VmFsdWVJc0tleXdvcmQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBf
aGFuZGxlUHJvcGVydHlFZGl0b3JWYWx1ZUNoYW5nZWQoKQorICAgIHsKKyAgICAgICAgdGhpcy5f
aWdub3JlTmV4dFVwZGF0ZSA9IHRydWU7CisgICAgICAgIGxldCB2YWx1ZSA9IHRoaXMuc3ludGhl
c2l6ZWRWYWx1ZTsKKyAgICAgICAgaWYgKHRoaXMuX3N0eWxlKQorICAgICAgICAgICAgdGhpcy5f
c3R5bGUudGV4dCA9IHRoaXMubW9kaWZ5UHJvcGVydHlUZXh0KHRoaXMuX3N0eWxlLnRleHQsIHZh
bHVlKTsKKworICAgICAgICB0aGlzLl9wcm9wZXJ0eU1pc3NpbmcgPSAhdmFsdWU7CisgICAgICAg
IHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVBy
b3BlcnR5RWRpdG9yLkV2ZW50LlZhbHVlRGlkQ2hhbmdlKTsKKyAgICB9Cit9OworCitXZWJJbnNw
ZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUNvbWJpbmVyLkVkaXRvclVwZGF0ZWRTeW1ib2wgPSBT
eW1ib2woInZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb21iaW5lci1lZGl0b3ItdXBkYXRlZCIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlz
dWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLmNzcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZDRkODgyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVQcm9wZXJ0eUVk
aXRvci5jc3MKQEAgLTAsMCArMSw5OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy52aXN1YWwtc3R5bGUtcHJv
cGVydHktY29udGFpbmVyIHsKKyAgICBkaXNwbGF5OiBmbGV4OworICAgIHdpZHRoOiAxMDAlOwor
ICAgIG1pbi1oZWlnaHQ6IDIycHg7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFp
bmVyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS10aXRsZSB7CisgICAgbWFyZ2luOiA0cHg7Cisg
ICAgdGV4dC1hbGlnbjogcmlnaHQ7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFp
bmVyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS10aXRsZSA+IC5wcm9wZXJ0eS1yZWZlcmVuY2Ut
aW5mb3sKKyAgICBjdXJzb3I6IGhlbHA7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktY29u
dGFpbmVyLmRpc2FibGVkID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS10aXRsZSA+IDpub3QoLnBy
b3BlcnR5LXJlZmVyZW5jZS1pbmZvKSB7CisgICAgb3BhY2l0eTogMC43OworfQorCisudmlzdWFs
LXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUt
Y29udGFpbmVyIHsKKyAgICBmbGV4OiAxOworICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKK30KKwor
LnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuZGlzYWJsZWQgPiAudmlzdWFsLXN0eWxl
LXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciB7CisgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7Cisg
ICAgb3BhY2l0eTogMC40OworfQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lciA+
IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyIHNlbGVjdCB7CisgICAgd2lk
dGg6IDEwMCU7CisgICAgbWFyZ2luOiAxcHggMDsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0
eS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciBpbnB1
dCB7CisgICAgd2lkdGg6IGNhbGMoMTAwJSAtIDFweCk7CisgICAgbWFyZ2luOiAwOworICAgIG91
dGxpbmU6IG5vbmU7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLmRpc2Fi
bGVkID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgaW5wdXQgeworICAg
IHBvaW50ZXItZXZlbnRzOiBub25lICFpbXBvcnRhbnQ7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJv
cGVydHktY29udGFpbmVyLmxheW91dC1yZXZlcnNlZCA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHkt
dGl0bGUgeworICAgIG9yZGVyOiAyOworICAgIHRleHQtYWxpZ246IGxlZnQ7Cit9CisKKy52aXN1
YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1
ZS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLXNwZWNpYWwtcHJvcGVydHktcGxhY2Vob2xkZXIg
eworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6IDJweDsKKyAgICBsZWZ0OiAxcHg7
CisgICAgd2lkdGg6IGNhbGMoMTAwJSAtIDIwcHgpOworICAgIGxpbmUtaGVpZ2h0OiAxNnB4Owor
ICAgIHRleHQtaW5kZW50OiA3cHg7CisgICAgYm9yZGVyLXJhZGl1czogNHB4OworICAgIGJhY2tn
cm91bmQtY29sb3I6IHdoaXRlOworICAgIGNvbG9yOiBoc2woMCwgMCUsIDUwJSk7CisgICAgcG9p
bnRlci1ldmVudHM6IG5vbmU7CisgICAgb3ZlcmZsb3c6IGhpZGRlbjsKKyAgICB3aGl0ZS1zcGFj
ZTogbm93cmFwOworICAgIHotaW5kZXg6IDE7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHkt
aW5mby1wb3BvdmVyIHsKKyAgICB3aWR0aDogMTkwcHg7CisgICAgbWFyZ2luOiAwIDVweCAzcHg7
CisgICAgcGFkZGluZzogMDsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1pbmZvLXBvcG92
ZXIgPiBoMyB7CisgICAgbWFyZ2luOiA2cHggM3B4OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRv
ci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0
eWxlUHJvcGVydHlFZGl0b3IuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
MWRkZGYwNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IuanMKQEAgLTAsMCArMSw1MjUg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCitXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvciA9
IGNsYXNzIFZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2Jq
ZWN0Cit7CisgICAgY29uc3RydWN0b3IocHJvcGVydHlOYW1lcywgbGFiZWwsIHBvc3NpYmxlVmFs
dWVzLCBwb3NzaWJsZVVuaXRzLCBjbGFzc05hbWUsIGxheW91dFJldmVyc2VkKQorICAgIHsKKyAg
ICAgICAgc3VwZXIoKTsKKworICAgICAgICB0aGlzLl9wcm9wZXJ0eUluZm9MaXN0ID0gW107Cisg
ICAgICAgIHRoaXMuX3N0eWxlID0gbnVsbDsKKworICAgICAgICBmdW5jdGlvbiBjYW5vbmljYWxp
emVWYWx1ZXModmFsdWVzKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIXZhbHVlcykKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGxldCBjYW5vbmljYWxpemVkVmFs
dWVzID0ge307CisgICAgICAgICAgICBmb3IgKGxldCB2YWx1ZSBvZiB2YWx1ZXMpCisgICAgICAg
ICAgICAgICAgY2Fub25pY2FsaXplZFZhbHVlc1t2YWx1ZS50b0xvd2VyQ2FzZSgpLnJlcGxhY2Uo
L1xzL2csICItIildID0gdmFsdWU7CisKKyAgICAgICAgICAgIHJldHVybiBjYW5vbmljYWxpemVk
VmFsdWVzOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fcG9zc2libGVWYWx1ZXMgPSBudWxs
OworICAgICAgICBpZiAocG9zc2libGVWYWx1ZXMpIHsKKyAgICAgICAgICAgIHRoaXMuX3Bvc3Np
YmxlVmFsdWVzID0ge307CisgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShwb3NzaWJsZVZh
bHVlcykpCisgICAgICAgICAgICAgICAgdGhpcy5fcG9zc2libGVWYWx1ZXMuYmFzaWMgPSBjYW5v
bmljYWxpemVWYWx1ZXMocG9zc2libGVWYWx1ZXMpOworICAgICAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICAgICAgdGhpcy5fcG9zc2libGVWYWx1ZXMuYmFzaWMgPSBjYW5vbmljYWxpemVWYWx1
ZXMocG9zc2libGVWYWx1ZXMuYmFzaWMpOworICAgICAgICAgICAgICAgIHRoaXMuX3Bvc3NpYmxl
VmFsdWVzLmFkdmFuY2VkID0gY2Fub25pY2FsaXplVmFsdWVzKHBvc3NpYmxlVmFsdWVzLmFkdmFu
Y2VkKTsKKyAgICAgICAgICAgIH0gCisgICAgICAgIH0KKyAgICAgICAgdGhpcy5fcG9zc2libGVV
bml0cyA9IG51bGw7CisgICAgICAgIGlmIChwb3NzaWJsZVVuaXRzKSB7CisgICAgICAgICAgICB0
aGlzLl9wb3NzaWJsZVVuaXRzID0ge307CisgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShw
b3NzaWJsZVVuaXRzKSkKKyAgICAgICAgICAgICAgICB0aGlzLl9wb3NzaWJsZVVuaXRzLmJhc2lj
ID0gcG9zc2libGVVbml0czsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0aGlz
Ll9wb3NzaWJsZVVuaXRzID0gcG9zc2libGVVbml0czsKKyAgICAgICAgfQorCisgICAgICAgIHRo
aXMuX2VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgdGhp
cy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJ2aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVy
IiwgY2xhc3NOYW1lKTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKCJs
YXlvdXQtcmV2ZXJzZWQiLCBsYXlvdXRSZXZlcnNlZCk7CisKKyAgICAgICAgaWYgKGxhYmVsICYm
IGxhYmVsLmxlbmd0aCkgeworICAgICAgICAgICAgbGV0IHRpdGxlQ29udGFpbmVyID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgICAgICB0aXRsZUNvbnRhaW5lci5jbGFz
c0xpc3QuYWRkKCJ2aXN1YWwtc3R5bGUtcHJvcGVydHktdGl0bGUiKTsKKworICAgICAgICAgICAg
dGhpcy5fdGl0bGVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworICAg
ICAgICAgICAgdGhpcy5fdGl0bGVFbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRl
eHROb2RlKGxhYmVsKSk7CisgICAgICAgICAgICB0aGlzLl90aXRsZUVsZW1lbnQuYWRkRXZlbnRM
aXN0ZW5lcigibW91c2VvdmVyIiwgdGhpcy5fdGl0bGVFbGVtZW50TW91c2VPdmVyLmJpbmQodGhp
cykpOworICAgICAgICAgICAgdGhpcy5fdGl0bGVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1v
dXNlb3V0IiwgdGhpcy5fdGl0bGVFbGVtZW50TW91c2VPdXQuYmluZCh0aGlzKSk7CisgICAgICAg
ICAgICB0aGlzLl90aXRsZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl90
aXRsZUVsZW1lbnRDbGljay5iaW5kKHRoaXMpKTsKKyAgICAgICAgICAgIHRpdGxlQ29udGFpbmVy
LmFwcGVuZENoaWxkKHRoaXMuX3RpdGxlRWxlbWVudCk7CisKKyAgICAgICAgICAgIHRoaXMuX2Vs
ZW1lbnQuYXBwZW5kQ2hpbGQodGl0bGVDb250YWluZXIpOworCisgICAgICAgICAgICB0aGlzLl9i
b3VuZFRpdGxlRWxlbWVudFByZXBhcmVGb3JDbGljayA9IHRoaXMuX3RpdGxlRWxlbWVudFByZXBh
cmVGb3JDbGljay5iaW5kKHRoaXMpOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fY29udGVu
dEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgdGhpcy5f
Y29udGVudEVsZW1lbnQuY2xhc3NMaXN0LmFkZCgidmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVl
LWNvbnRhaW5lciIpOworCisgICAgICAgIHRoaXMuX3NwZWNpYWxQcm9wZXJ0eVBsYWNlaG9sZGVy
RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAgICAgICAgdGhpcy5f
c3BlY2lhbFByb3BlcnR5UGxhY2Vob2xkZXJFbGVtZW50LmNsYXNzTGlzdC5hZGQoInZpc3VhbC1z
dHlsZS1zcGVjaWFsLXByb3BlcnR5LXBsYWNlaG9sZGVyIik7CisgICAgICAgIHRoaXMuX3NwZWNp
YWxQcm9wZXJ0eVBsYWNlaG9sZGVyRWxlbWVudC5oaWRkZW4gPSB0cnVlOworICAgICAgICB0aGlz
Ll9jb250ZW50RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9zcGVjaWFsUHJvcGVydHlQbGFjZWhv
bGRlckVsZW1lbnQpOworCisgICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5f
Y29udGVudEVsZW1lbnQpOworCisgICAgICAgIHRoaXMuX3VwZGF0ZWRWYWx1ZXMgPSB7fTsKKyAg
ICAgICAgdGhpcy5fbGFzdFZhbHVlID0gbnVsbDsKKworICAgICAgICBpZiAodHlwZW9mIHByb3Bl
cnR5TmFtZXMgPT09ICJzdHJpbmciKQorICAgICAgICAgICAgcHJvcGVydHlOYW1lcyA9IFtwcm9w
ZXJ0eU5hbWVzXTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB0aGlzLl9oYXNNdWx0aXBs
ZVByb3BlcnRpZXMgPSB0cnVlOworICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3Qu
YWRkKCJtdWx0aXBsZSIpOworICAgICAgICB9CisKKyAgICAgICAgZm9yIChsZXQgbmFtZSBvZiBw
cm9wZXJ0eU5hbWVzKSB7CisgICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQo
bmFtZSk7CisgICAgICAgICAgICB0aGlzLl9wcm9wZXJ0eUluZm9MaXN0LnB1c2goeworICAgICAg
ICAgICAgICAgIG5hbWUsCisgICAgICAgICAgICAgICAgdGV4dENvbnRhaW5zTmFtZVJlZ0V4cDog
bmV3IFJlZ0V4cCgiKD86KD86Xnw7KVxccyoiICsgbmFtZSArICJcXHMqOikiKSwKKyAgICAgICAg
ICAgICAgICByZXBsYWNlbWVudFJlZ0V4cDogbmV3IFJlZ0V4cCgiKF58OykoPzpcXHMqKSgiICsg
bmFtZSArICIpKC4rPyg/Ojt8JCkpIikKKyAgICAgICAgICAgIH0pCisgICAgICAgIH0KKworICAg
ICAgICB0aGlzLl9wcm9wZXJ0eVJlZmVyZW5jZU5hbWUgPSBwcm9wZXJ0eU5hbWVzWzBdOworICAg
ICAgICB0aGlzLl9wcm9wZXJ0eVJlZmVyZW5jZVRleHQgPSBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5
bGVEZXRhaWxzUGFuZWwucHJvcGVydHlSZWZlcmVuY2VJbmZvW3RoaXMuX3Byb3BlcnR5UmVmZXJl
bmNlTmFtZV07CisgICAgICAgIHRoaXMuX2hhc1Byb3BlcnR5UmVmZXJlbmNlID0gdGhpcy5fcHJv
cGVydHlSZWZlcmVuY2VUZXh0ICYmICEhdGhpcy5fcHJvcGVydHlSZWZlcmVuY2VUZXh0LnRyaW0o
KS5sZW5ndGg7CisgICAgICAgIHRoaXMuX3JlcHJlc2VudGVkUHJvcGVydHkgPSBudWxsOworICAg
IH0KKworICAgIC8vIFB1YmxpYworCisgICAgZ2V0IGVsZW1lbnQoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIHRoaXMuX2VsZW1lbnQ7CisgICAgfQorCisgICAgZ2V0IHN0eWxlKCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiB0aGlzLl9zdHlsZTsKKyAgICB9CisKKyAgICBnZXQgdmFsdWUoKQorICAg
IHsKKyAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3MuCisgICAgfQorCisgICAgc2V0
IHZhbHVlKHZhbHVlKQorICAgIHsKKyAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Mu
CisgICAgfQorCisgICAgZ2V0IHVuaXRzKCkKKyAgICB7CisgICAgICAgIC8vIEltcGxlbWVudGVk
IGJ5IHN1YmNsYXNzLgorICAgIH0KKworICAgIHNldCB1bml0cyh1bml0KQorICAgIHsKKyAgICAg
ICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3MuCisgICAgfQorCisgICAgZ2V0IHBsYWNlaG9s
ZGVyKCkKKyAgICB7CisgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzLgorICAgIH0K
KworICAgIHNldCBwbGFjZWhvbGRlcih0ZXh0KQorICAgIHsKKyAgICAgICAgLy8gSW1wbGVtZW50
ZWQgYnkgc3ViY2xhc3MuCisgICAgfQorCisgICAgZ2V0IHN5bnRoZXNpemVkVmFsdWUoKQorICAg
IHsKKyAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3MuCisgICAgfQorCisgICAgc2V0
IHN1cHByZXNzU3R5bGVUZXh0VXBkYXRlKGZsYWcpCisgICAgeworICAgICAgICB0aGlzLl9zdXBw
cmVzc1N0eWxlVGV4dFVwZGF0ZSA9IGZsYWc7CisgICAgfQorCisgICAgc2V0IG1hc3RlclByb3Bl
cnR5KGZsYWcpCisgICAgeworICAgICAgICB0aGlzLl9tYXN0ZXJQcm9wZXJ0eSA9IGZsYWc7Cisg
ICAgfQorCisgICAgZ2V0IG1hc3RlclByb3BlcnR5KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0
aGlzLl9tYXN0ZXJQcm9wZXJ0eTsKKyAgICB9CisKKyAgICBzZXQgb3B0aW9uYWxQcm9wZXJ0eShm
bGFnKQorICAgIHsKKyAgICAgICAgdGhpcy5fb3B0aW9uYWxQcm9wZXJ0eSA9IGZsYWc7CisgICAg
fQorCisgICAgZ2V0IG9wdGlvbmFsUHJvcGVydHkoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRo
aXMuX29wdGlvbmFsUHJvcGVydHk7CisgICAgfQorCisgICAgc2V0IGNvbG9yUHJvcGVydHkoZmxh
ZykKKyAgICB7CisgICAgICAgIHRoaXMuX2NvbG9yUHJvcGVydHkgPSBmbGFnOworICAgIH0KKwor
ICAgIGdldCBjb2xvclByb3BlcnR5KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9jb2xv
clByb3BlcnR5OworICAgIH0KKworICAgIGdldCBwcm9wZXJ0eVJlZmVyZW5jZU5hbWUoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3Byb3BlcnR5UmVmZXJlbmNlTmFtZTsKKyAgICB9CisK
KyAgICBzZXQgcHJvcGVydHlSZWZlcmVuY2VOYW1lKG5hbWUpCisgICAgeworICAgICAgICBpZiAo
IW5hbWUgfHwgIW5hbWUubGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRo
aXMuX3Byb3BlcnR5UmVmZXJlbmNlTmFtZSA9IG5hbWU7CisgICAgfQorCisgICAgc2V0IGRpc2Fi
bGVkKGZsYWcpCisgICAgeworICAgICAgICB0aGlzLl9kaXNhYmxlZCA9IGZsYWc7CisgICAgICAg
IHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgiZGlzYWJsZWQiLCB0aGlzLl9kaXNhYmxl
ZCk7CisgICAgICAgIHRoaXMuX3RvZ2dsZVRhYmJpbmdPZlNlbGVjdGFibGVFbGVtZW50cyh0aGlz
Ll9kaXNhYmxlZCk7CisgICAgfQorCisgICAgZ2V0IGRpc2FibGVkKCkKKyAgICB7CisgICAgICAg
IHJldHVybiB0aGlzLl9kaXNhYmxlZDsKKyAgICB9CisKKyAgICB1cGRhdGUoc3R5bGUpCisgICAg
eworICAgICAgICBpZiAoc3R5bGUpCisgICAgICAgICAgICB0aGlzLl9zdHlsZSA9IHN0eWxlOwor
ICAgICAgICBlbHNlIGlmICh0aGlzLl9pZ25vcmVOZXh0VXBkYXRlKSB7CisgICAgICAgICAgICB0
aGlzLl9pZ25vcmVOZXh0VXBkYXRlID0gZmFsc2U7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKworICAgICAgICBpZiAoIXRoaXMuX3N0eWxlKQorICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgIHRoaXMuX3VwZGF0ZWRWYWx1ZXMgPSB7fTsKKyAgICAgICAgbGV0IHByb3BlcnR5
VmFsdWVzQ29uZmxpY3QgPSBmYWxzZTsKKyAgICAgICAgbGV0IHByb3BlcnR5TWlzc2luZyA9IGZh
bHNlOworICAgICAgICBmb3IgKGxldCBwcm9wZXJ0eUluZm8gb2YgdGhpcy5fcHJvcGVydHlJbmZv
TGlzdCkgeworICAgICAgICAgICAgbGV0IHByb3BlcnR5ID0gdGhpcy5fc3R5bGUucHJvcGVydHlG
b3JOYW1lKHByb3BlcnR5SW5mby5uYW1lLCB0cnVlKTsKKyAgICAgICAgICAgIHByb3BlcnR5TWlz
c2luZyA9ICFwcm9wZXJ0eTsKKyAgICAgICAgICAgIGlmIChwcm9wZXJ0eU1pc3NpbmcgJiYgdGhp
cy5fc3R5bGUubm9kZVN0eWxlcykKKyAgICAgICAgICAgICAgICBwcm9wZXJ0eSA9IHRoaXMuX3N0
eWxlLm5vZGVTdHlsZXMuY29tcHV0ZWRTdHlsZS5wcm9wZXJ0eUZvck5hbWUocHJvcGVydHlJbmZv
Lm5hbWUpOworCisgICAgICAgICAgICBpZiAoIXByb3BlcnR5KQorICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworCisgICAgICAgICAgICBpZiAoIXByb3BlcnR5TWlzc2luZyAmJiBwcm9wZXJ0eS5h
bm9ueW1vdXMpCisgICAgICAgICAgICAgICAgdGhpcy5fcmVwcmVzZW50ZWRQcm9wZXJ0eSA9IHBy
b3BlcnR5OworCisgICAgICAgICAgICBsZXQgbmV3VmFsdWVzID0gdGhpcy5nZXRWYWx1ZXNGcm9t
VGV4dChwcm9wZXJ0eS52YWx1ZSwgcHJvcGVydHlNaXNzaW5nKTsKKyAgICAgICAgICAgIGlmICh0
aGlzLl91cGRhdGVkVmFsdWVzLnBsYWNlaG9sZGVyICYmIHRoaXMuX3VwZGF0ZWRWYWx1ZXMucGxh
Y2Vob2xkZXIgIT09IG5ld1ZhbHVlcy5wbGFjZWhvbGRlcikKKyAgICAgICAgICAgICAgICBwcm9w
ZXJ0eVZhbHVlc0NvbmZsaWN0ID0gdHJ1ZTsKKworICAgICAgICAgICAgaWYgKCF0aGlzLl91cGRh
dGVkVmFsdWVzLnBsYWNlaG9sZGVyKQorICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZWRWYWx1
ZXMgPSBuZXdWYWx1ZXM7CisKKyAgICAgICAgICAgIGlmIChwcm9wZXJ0eVZhbHVlc0NvbmZsaWN0
KSB7CisgICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlZFZhbHVlcy5jb25mbGljdGluZ1ZhbHVl
cyA9IHRydWU7CisgICAgICAgICAgICAgICAgdGhpcy5fc3BlY2lhbFByb3BlcnR5UGxhY2Vob2xk
ZXJFbGVtZW50LnRleHRDb250ZW50ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIobXVsdGlwbGUp
Iik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwor
ICAgICAgICBpZiAodGhpcy5faGFzTXVsdGlwbGVQcm9wZXJ0aWVzKQorICAgICAgICAgICAgdGhp
cy5fc3BlY2lhbFByb3BlcnR5UGxhY2Vob2xkZXJFbGVtZW50LmhpZGRlbiA9ICFwcm9wZXJ0eVZh
bHVlc0NvbmZsaWN0OworCisgICAgICAgIHRoaXMudXBkYXRlRWRpdG9yVmFsdWVzKHRoaXMuX3Vw
ZGF0ZWRWYWx1ZXMpOworICAgIH0KKworICAgIHVwZGF0ZUVkaXRvclZhbHVlcyh1cGRhdGVkVmFs
dWVzKQorICAgIHsKKyAgICAgICAgdGhpcy52YWx1ZSA9IHVwZGF0ZWRWYWx1ZXMudmFsdWU7Cisg
ICAgICAgIHRoaXMudW5pdHMgPSB1cGRhdGVkVmFsdWVzLnVuaXRzOworICAgICAgICB0aGlzLnBs
YWNlaG9sZGVyID0gdXBkYXRlZFZhbHVlcy5wbGFjZWhvbGRlcjsKKworICAgICAgICB0aGlzLl9s
YXN0VmFsdWUgPSB0aGlzLnN5bnRoZXNpemVkVmFsdWU7CisgICAgICAgIHRoaXMuZGlzYWJsZWQg
PSBmYWxzZTsKKyAgICB9CisKKyAgICByZXNldEVkaXRvclZhbHVlcyh2YWx1ZSkKKyAgICB7Cisg
ICAgICAgIHRoaXMuX2lnbm9yZU5leHRVcGRhdGUgPSBmYWxzZTsKKyAgICAgICAgaWYgKCF2YWx1
ZSB8fCAhdmFsdWUubGVuZ3RoKSB7CisgICAgICAgICAgICB0aGlzLnZhbHVlID0gbnVsbDsKKyAg
ICAgICAgICAgIHRoaXMuX3NwZWNpYWxQcm9wZXJ0eVBsYWNlaG9sZGVyRWxlbWVudC5oaWRkZW4g
PSBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGxldCB1
cGRhdGVkVmFsdWVzID0gdGhpcy5nZXRWYWx1ZXNGcm9tVGV4dCh2YWx1ZSk7CisgICAgICAgIHRo
aXMudXBkYXRlRWRpdG9yVmFsdWVzKHVwZGF0ZWRWYWx1ZXMpOworICAgIH0KKworICAgIG1vZGlm
eVByb3BlcnR5VGV4dCh0ZXh0LCB2YWx1ZSkKKyAgICB7CisgICAgICAgIGxldCB0cmltbWVkVGV4
dCA9IHRleHQudHJpbVJpZ2h0KCk7CisgICAgICAgIGZvciAobGV0IHByb3BlcnR5IG9mIHRoaXMu
X3Byb3BlcnR5SW5mb0xpc3QpIHsKKyAgICAgICAgICAgIGlmIChwcm9wZXJ0eS50ZXh0Q29udGFp
bnNOYW1lUmVnRXhwLnRlc3QodGV4dCkpCisgICAgICAgICAgICAgICAgdGV4dCA9IHRleHQucmVw
bGFjZShwcm9wZXJ0eS5yZXBsYWNlbWVudFJlZ0V4cCwgdmFsdWUgIT09IG51bGwgPyAiJDEkMjog
IiArIHZhbHVlICsgIjsiIDogIiQxIik7CisgICAgICAgICAgICBlbHNlIGlmICh2YWx1ZSAhPT0g
bnVsbCkgeworICAgICAgICAgICAgICAgIGlmICh0cmltbWVkVGV4dC50cmltTGVmdCgpLmxlbmd0
aCAmJiAhdHJpbW1lZFRleHQuZW5kc1dpdGgoIjsiKSkKKyAgICAgICAgICAgICAgICAgICAgdGV4
dCArPSAiOyI7CisKKyAgICAgICAgICAgICAgICB0ZXh0ICs9IHByb3BlcnR5Lm5hbWUgKyAiOiAi
ICsgdmFsdWUgKyAiOyI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJu
IHRleHQ7CisgICAgfQorCisgICAgZ2V0VmFsdWVzRnJvbVRleHQodGV4dCwgcHJvcGVydHlNaXNz
aW5nKQorICAgIHsKKyAgICAgICAgbGV0IG1hdGNoID0gdGhpcy5wYXJzZVZhbHVlKHRleHQpOwor
ICAgICAgICBsZXQgcGxhY2Vob2xkZXIgPSBtYXRjaCA/IG1hdGNoWzFdIDogdGV4dDsKKyAgICAg
ICAgbGV0IHVuaXRzID0gbWF0Y2ggPyBtYXRjaFsyXSA6IG51bGw7CisgICAgICAgIGxldCB2YWx1
ZSA9IHBsYWNlaG9sZGVyOworICAgICAgICBpZiAocHJvcGVydHlNaXNzaW5nKQorICAgICAgICAg
ICAgdmFsdWUgPSB0aGlzLnZhbHVlSXNTdXBwb3J0ZWRLZXl3b3JkKHRleHQpID8gdGV4dCA6IG51
bGw7CisKKyAgICAgICAgcmV0dXJuIHt2YWx1ZSwgdW5pdHMsIHBsYWNlaG9sZGVyLCBwcm9wZXJ0
eU1pc3Npbmd9OworICAgIH0KKworICAgIGdldCBwcm9wZXJ0eU1pc3NpbmcoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHRoaXMuX3VwZGF0ZWRWYWx1ZXMgJiYgdGhpcy5fdXBkYXRlZFZhbHVlcy5w
cm9wZXJ0eU1pc3Npbmc7CisgICAgfQorCisgICAgdmFsdWVJc0NvbXBhdGlibGUodmFsdWUpCisg
ICAgeworICAgICAgICBpZiAoIXZhbHVlIHx8ICF2YWx1ZS5sZW5ndGgpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVJc1N1cHBvcnRlZEtleXdv
cmQodmFsdWUpIHx8ICEhdGhpcy5wYXJzZVZhbHVlKHZhbHVlKTsKKyAgICB9CisKKyAgICB2YWx1
ZUlzU3VwcG9ydGVkS2V5d29yZCh2YWx1ZSkgeworICAgICAgICBpZiAoIXRoaXMuX3Bvc3NpYmxl
VmFsdWVzKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHZhbHVlID0gdmFs
dWUgfHwgdGhpcy52YWx1ZTsKKyAgICAgICAgaWYgKE9iamVjdC5rZXlzKHRoaXMuX3Bvc3NpYmxl
VmFsdWVzLmJhc2ljKS5pbmNsdWRlcyh2YWx1ZSkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KworICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWVJc1N1cHBvcnRlZEFkdmFuY2VkS2V5d29yZCh2
YWx1ZSk7CisgICAgfQorCisgICAgdmFsdWVJc1N1cHBvcnRlZFVuaXQodW5pdCkKKyAgICB7Cisg
ICAgICAgIGlmICghdGhpcy5fcG9zc2libGVVbml0cykKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgICAgICB1bml0ID0gdW5pdCB8fCB0aGlzLnVuaXRzOworICAgICAgICBpZiAodGhp
cy5fcG9zc2libGVVbml0cy5iYXNpYy5pbmNsdWRlcyh1bml0KSkKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworCisgICAgICAgIHJldHVybiB0aGlzLl92YWx1ZUlzU3VwcG9ydGVkQWR2YW5jZWRV
bml0KHVuaXQpOworICAgIH0KKworICAgIC8vIFByb3RlY3RlZAorCisgICAgZ2V0IGNvbnRlbnRF
bGVtZW50KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9jb250ZW50RWxlbWVudDsKKyAg
ICB9CisKKyAgICBnZXQgc3BlY2lhbFByb3BlcnR5UGxhY2Vob2xkZXJFbGVtZW50KCkKKyAgICB7
CisgICAgICAgIHJldHVybiB0aGlzLl9zcGVjaWFsUHJvcGVydHlQbGFjZWhvbGRlckVsZW1lbnQ7
CisgICAgfQorCisgICAgcGFyc2VWYWx1ZSh0ZXh0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIC9e
KFteO10rKVxzKjs/JC8uZXhlYyh0ZXh0KTsKKyAgICB9CisKKyAgICAvLyBQcml2YXRlCisKKyAg
ICBfdmFsdWVJc1N1cHBvcnRlZEFkdmFuY2VkS2V5d29yZCh2YWx1ZSkKKyAgICB7CisgICAgICAg
IHJldHVybiB0aGlzLl9wb3NzaWJsZVZhbHVlcy5hZHZhbmNlZCAmJiBPYmplY3Qua2V5cyh0aGlz
Ll9wb3NzaWJsZVZhbHVlcy5hZHZhbmNlZCkuaW5jbHVkZXModmFsdWUgfHwgdGhpcy52YWx1ZSk7
CisgICAgfQorCisgICAgX3ZhbHVlSXNTdXBwb3J0ZWRBZHZhbmNlZFVuaXQodW5pdCkKKyAgICB7
CisgICAgICAgIHJldHVybiB0aGlzLl9wb3NzaWJsZVVuaXRzLmFkdmFuY2VkICYmIHRoaXMuX3Bv
c3NpYmxlVW5pdHMuYWR2YW5jZWQuaW5jbHVkZXModW5pdCB8fCB0aGlzLnVuaXRzKTsKKyAgICB9
CisKKyAgICBfY2Fub25pY2FsaXplZEtleXdvcmRGb3JLZXkodmFsdWUpCisgICAgeworICAgICAg
ICBpZiAoIXZhbHVlIHx8ICF0aGlzLl9wb3NzaWJsZVZhbHVlcykKKyAgICAgICAgICAgIHJldHVy
biBudWxsOworCisgICAgICAgIHJldHVybiB0aGlzLl9wb3NzaWJsZVZhbHVlcy5iYXNpY1t2YWx1
ZV0gfHwgKHRoaXMuX3Bvc3NpYmxlVmFsdWVzLmFkdmFuY2VkICYmIHRoaXMuX3Bvc3NpYmxlVmFs
dWVzLmFkdmFuY2VkW3ZhbHVlXSkgfHwgbnVsbDsKKyAgICB9CisKKyAgICBfa2V5Rm9yS2V5d29y
ZChrZXl3b3JkKQorICAgIHsKKyAgICAgICAgaWYgKCFrZXl3b3JkIHx8ICFrZXl3b3JkLmxlbmd0
aCB8fCAhdGhpcy5fcG9zc2libGVWYWx1ZXMpCisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKwor
ICAgICAgICBmb3IgKGxldCBiYXNpY0tleSBpbiB0aGlzLl9wb3NzaWJsZVZhbHVlcy5iYXNpYykg
eworICAgICAgICAgICAgaWYgKHRoaXMuX3Bvc3NpYmxlVmFsdWVzLmJhc2ljW2Jhc2ljS2V5XSA9
PT0ga2V5d29yZCkKKyAgICAgICAgICAgICAgICByZXR1cm4gYmFzaWNLZXk7CisgICAgICAgIH0K
KworICAgICAgICBpZiAoIXRoaXMuX3Bvc3NpYmxlVmFsdWVzLmFkdmFuY2VkKQorICAgICAgICAg
ICAgcmV0dXJuIG51bGw7CisKKyAgICAgICAgZm9yIChsZXQgYWR2YW5jZWRLZXkgaW4gdGhpcy5f
cG9zc2libGVWYWx1ZXMuYWR2YW5jZWQpIHsKKyAgICAgICAgICAgIGlmICh0aGlzLl9wb3NzaWJs
ZVZhbHVlcy5hZHZhbmNlZFthZHZhbmNlZEtleV0gPT09IGtleXdvcmQpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGFkdmFuY2VkS2V5OworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG51bGw7
CisgICAgfQorCisgICAgX3ZhbHVlRGlkQ2hhbmdlKCkKKyAgICB7CisgICAgICAgIGxldCB2YWx1
ZSA9IHRoaXMuc3ludGhlc2l6ZWRWYWx1ZTsKKyAgICAgICAgaWYgKHZhbHVlID09PSB0aGlzLl9s
YXN0VmFsdWUpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgaWYgKHRoaXMu
X3N0eWxlICYmICF0aGlzLl9zdXBwcmVzc1N0eWxlVGV4dFVwZGF0ZSkgeworICAgICAgICAgICAg
bGV0IG5ld1RleHQgPSB0aGlzLl9zdHlsZS50ZXh0OworICAgICAgICAgICAgbmV3VGV4dCA9IHRo
aXMuX3JlcGxhY2VTaG9ydGhhbmRQcm9wZXJ0eVdpdGhMb25naGFuZFByb3BlcnRpZXMobmV3VGV4
dCk7CisgICAgICAgICAgICBuZXdUZXh0ID0gdGhpcy5tb2RpZnlQcm9wZXJ0eVRleHQobmV3VGV4
dCwgdmFsdWUpOworICAgICAgICAgICAgdGhpcy5fc3R5bGUudGV4dCA9IG5ld1RleHQ7CisgICAg
ICAgICAgICBpZiAoIW5ld1RleHQubGVuZ3RoKQorICAgICAgICAgICAgICAgIHRoaXMuX3N0eWxl
LnVwZGF0ZShudWxsLCBudWxsLCB0aGlzLl9zdHlsZS5zdHlsZVNoZWV0VGV4dFJhbmdlKTsKKyAg
ICAgICAgfQorCisgICAgICAgIHRoaXMuX2xhc3RWYWx1ZSA9IHZhbHVlOworICAgICAgICB0aGlz
Ll91cGRhdGVkVmFsdWVzLnByb3BlcnR5TWlzc2luZyA9ICF2YWx1ZTsKKyAgICAgICAgdGhpcy5f
aWdub3JlTmV4dFVwZGF0ZSA9IHRydWU7CisgICAgICAgIHRoaXMuX3NwZWNpYWxQcm9wZXJ0eVBs
YWNlaG9sZGVyRWxlbWVudC5oaWRkZW4gPSB0cnVlOworCisgICAgICAgIHRoaXMuZGlzcGF0Y2hF
dmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLkV2
ZW50LlZhbHVlRGlkQ2hhbmdlKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAg
X3JlcGxhY2VTaG9ydGhhbmRQcm9wZXJ0eVdpdGhMb25naGFuZFByb3BlcnRpZXModGV4dCkKKyAg
ICB7CisgICAgICAgIGlmICghdGhpcy5fcmVwcmVzZW50ZWRQcm9wZXJ0eSkKKyAgICAgICAgICAg
IHJldHVybiB0ZXh0OworCisgICAgICAgIGxldCBzaG9ydGhhbmQgPSB0aGlzLl9yZXByZXNlbnRl
ZFByb3BlcnR5LnJlbGF0ZWRTaG9ydGhhbmRQcm9wZXJ0eTsKKyAgICAgICAgaWYgKCFzaG9ydGhh
bmQpCisgICAgICAgICAgICByZXR1cm4gdGV4dDsKKworICAgICAgICBsZXQgbG9uZ2hhbmRUZXh0
ID0gIiI7CisgICAgICAgIGZvciAobGV0IGxvbmdoYW5kUHJvcGVydHkgb2Ygc2hvcnRoYW5kLnJl
bGF0ZWRMb25naGFuZFByb3BlcnRpZXMpIHsKKyAgICAgICAgICAgIGlmIChsb25naGFuZFByb3Bl
cnR5LmFub255bW91cykKKyAgICAgICAgICAgICAgICBsb25naGFuZFRleHQgKz0gbG9uZ2hhbmRQ
cm9wZXJ0eS5zeW50aGVzaXplZFRleHQ7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGxvbmdo
YW5kVGV4dCA/IHRleHQucmVwbGFjZShzaG9ydGhhbmQudGV4dCwgbG9uZ2hhbmRUZXh0KSA6IHRl
eHQ7CisgICAgfQorCisgICAgX3RpdGxlRWxlbWVudFByZXBhcmVGb3JDbGljayhldmVudCkKKyAg
ICB7CisgICAgICAgIHRoaXMuX3RpdGxlRWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKCJwcm9wZXJ0
eS1yZWZlcmVuY2UtaW5mbyIsIGV2ZW50LnR5cGUgPT09ICJrZXlkb3duIiAmJiBldmVudC5hbHRL
ZXkpOworICAgIH0KKworICAgIF90aXRsZUVsZW1lbnRNb3VzZU92ZXIoZXZlbnQpCisgICAgewor
ICAgICAgICBpZiAoIXRoaXMuX2hhc1Byb3BlcnR5UmVmZXJlbmNlKQorICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgIHRoaXMuX3RpdGxlRWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKCJwcm9w
ZXJ0eS1yZWZlcmVuY2UtaW5mbyIsIGV2ZW50LmFsdEtleSk7CisgICAgICAgIGRvY3VtZW50LmFk
ZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCB0aGlzLl9ib3VuZFRpdGxlRWxlbWVudFByZXBhcmVG
b3JDbGljayk7CisgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleXVwIiwgdGhp
cy5fYm91bmRUaXRsZUVsZW1lbnRQcmVwYXJlRm9yQ2xpY2spOworICAgIH0KKworICAgIF90aXRs
ZUVsZW1lbnRNb3VzZU91dCgpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX2hhc1Byb3BlcnR5
UmVmZXJlbmNlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX3RpdGxlRWxl
bWVudC5jbGFzc0xpc3QucmVtb3ZlKCJwcm9wZXJ0eS1yZWZlcmVuY2UtaW5mbyIpOworICAgICAg
ICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJrZXlkb3duIiwgdGhpcy5fYm91bmRUaXRs
ZUVsZW1lbnRQcmVwYXJlRm9yQ2xpY2spOworICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExp
c3RlbmVyKCJrZXl1cCIsIHRoaXMuX2JvdW5kVGl0bGVFbGVtZW50UHJlcGFyZUZvckNsaWNrKTsK
KyAgICB9CisKKyAgICBfdGl0bGVFbGVtZW50Q2xpY2soZXZlbnQpCisgICAgeworICAgICAgICBp
ZiAoZXZlbnQuYWx0S2V5KQorICAgICAgICAgICAgdGhpcy5fc2hvd1Byb3BlcnR5SW5mb1BvcG92
ZXIoKTsKKyAgICB9CisKKyAgICBfaGFzTXVsdGlwbGVDb25mbGljdGluZ1ZhbHVlcygpCisgICAg
eworICAgICAgICByZXR1cm4gdGhpcy5faGFzTXVsdGlwbGVQcm9wZXJ0aWVzICYmICF0aGlzLl9z
cGVjaWFsUHJvcGVydHlQbGFjZWhvbGRlckVsZW1lbnQuaGlkZGVuOworICAgIH0KKworICAgIF9z
aG93UHJvcGVydHlJbmZvUG9wb3ZlcigpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX2hhc1By
b3BlcnR5UmVmZXJlbmNlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGxldCBwcm9w
ZXJ0eUluZm9FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgicCIpOworICAgICAgICBw
cm9wZXJ0eUluZm9FbGVtZW50LmNsYXNzTGlzdC5hZGQoInZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1p
bmZvLXBvcG92ZXIiKTsKKworICAgICAgICBsZXQgcHJvcGVydHlJbmZvVGl0bGVFbGVtZW50ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaDMiKTsKKyAgICAgICAgcHJvcGVydHlJbmZvVGl0bGVF
bGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRoaXMuX3Byb3BlcnR5
UmVmZXJlbmNlTmFtZSkpOworICAgICAgICBwcm9wZXJ0eUluZm9FbGVtZW50LmFwcGVuZENoaWxk
KHByb3BlcnR5SW5mb1RpdGxlRWxlbWVudCk7CisKKyAgICAgICAgcHJvcGVydHlJbmZvRWxlbWVu
dC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0aGlzLl9wcm9wZXJ0eVJlZmVy
ZW5jZVRleHQpKTsKKworICAgICAgICBsZXQgYm91bmRzID0gV2ViSW5zcGVjdG9yLlJlY3QucmVj
dEZyb21DbGllbnRSZWN0KHRoaXMuX3RpdGxlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3Qo
KSk7CisgICAgICAgIGxldCBwb3BvdmVyID0gbmV3IFdlYkluc3BlY3Rvci5Qb3BvdmVyKHRoaXMp
OworICAgICAgICBwb3BvdmVyLmNvbnRlbnQgPSBwcm9wZXJ0eUluZm9FbGVtZW50OworICAgICAg
ICBwb3BvdmVyLnByZXNlbnQoYm91bmRzLnBhZCgyKSwgW1dlYkluc3BlY3Rvci5SZWN0RWRnZS5N
SU5fWV0pOworICAgIH0KKworICAgIF90b2dnbGVUYWJiaW5nT2ZTZWxlY3RhYmxlRWxlbWVudHMo
ZGlzYWJsZWQpCisgICAgeworICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzcy4KKyAg
ICB9Cit9OworCitXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5FdmVudCA9
IHsKKyAgICBWYWx1ZURpZENoYW5nZTogInZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItdmFs
dWUtY2hhbmdlZCIKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlVGFiYmVkUHJvcGVydGllc1Jvdy5jc3MgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZVRhYmJlZFByb3Bl
cnRpZXNSb3cuY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3OTAwZGIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9WaXN1YWxTdHlsZVRhYmJlZFByb3BlcnRpZXNSb3cuY3NzCkBAIC0wLDAgKzEsNTEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisudmlzdWFsLXN0eWxlLXRhYmJlZC1wcm9wZXJ0aWVzLXJvdyB+IDpub3Qo
LnZpc2libGUpIHsKKyAgICB2aXNpYmlsaXR5OiBoaWRkZW47CisgICAgaGVpZ2h0OiAwOworfQor
CisudmlzdWFsLXN0eWxlLXRhYmJlZC1wcm9wZXJ0aWVzLXJvdyA+IC52aXN1YWwtc3R5bGUtdGFi
YmVkLXByb3BlcnRpZXMtcm93LWNvbnRhaW5lciB7CisgICAgbWFyZ2luOiAwIGF1dG87Cit9CisK
Ky52aXN1YWwtc3R5bGUtdGFiYmVkLXByb3BlcnRpZXMtcm93ID4gLnZpc3VhbC1zdHlsZS10YWJi
ZWQtcHJvcGVydGllcy1yb3ctY29udGFpbmVyID4gYnV0dG9uIHsKKyAgICBtYXJnaW46IDAgMnB4
IDJweDsKKyAgICBib3JkZXItcmFkaXVzOiAzcHg7CisgICAgYm9yZGVyLXdpZHRoOiAwIDFweDsK
KyAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50OworICAgIGJhY2tncm91bmQtY29sb3I6IHRy
YW5zcGFyZW50OworfQorCisudmlzdWFsLXN0eWxlLXRhYmJlZC1wcm9wZXJ0aWVzLXJvdyA+IC52
aXN1YWwtc3R5bGUtdGFiYmVkLXByb3BlcnRpZXMtcm93LWNvbnRhaW5lciA+IGJ1dHRvbi5zZWxl
Y3RlZCB7CisgICAgY29sb3I6IHdoaXRlOworICAgIGJhY2tncm91bmQtY29sb3I6IGhzbCgyMTMs
IDkyJSwgNTUlKTsKK30KKworLnZpc3VhbC1zdHlsZS10YWJiZWQtcHJvcGVydGllcy1yb3cgPiAu
dmlzdWFsLXN0eWxlLXRhYmJlZC1wcm9wZXJ0aWVzLXJvdy1jb250YWluZXIgPiBidXR0b246bm90
KC5zZWxlY3RlZCk6aG92ZXIgeworICAgIGNvbG9yOiB3aGl0ZTsKKyAgICBiYWNrZ3JvdW5kLWNv
bG9yOiBoc2xhKDIxMywgOTIlLCA1NSUsIDAuNSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZVRhYmJlZFByb3BlcnRp
ZXNSb3cuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1
YWxTdHlsZVRhYmJlZFByb3BlcnRpZXNSb3cuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uNjNiZGJiMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlVGFiYmVkUHJvcGVydGllc1Jvdy5qcwpA
QCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlVGFi
YmVkUHJvcGVydGllc1JvdyA9IGNsYXNzIFZpc3VhbFN0eWxlVGFiYmVkUHJvcGVydGllc1JvdyBl
eHRlbmRzIFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdworeworICAgIGNvbnN0cnVjdG9y
KHRhYk1hcCkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CisKKyAgICAgICAgdGhpcy5fZWxlbWVu
dC5jbGFzc0xpc3QuYWRkKCJ2aXN1YWwtc3R5bGUtdGFiYmVkLXByb3BlcnRpZXMtcm93Iik7CisK
KyAgICAgICAgbGV0IGNvbnRhaW5lckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJk
aXYiKTsKKyAgICAgICAgY29udGFpbmVyRWxlbWVudC5jbGFzc0xpc3QuYWRkKCJ2aXN1YWwtc3R5
bGUtdGFiYmVkLXByb3BlcnRpZXMtcm93LWNvbnRhaW5lciIpOworCisgICAgICAgIHRoaXMuX3Rh
YkJ1dHRvbnMgPSBbXTsKKyAgICAgICAgdGhpcy5fdGFiTWFwID0gdGFiTWFwOworICAgICAgICBm
b3IgKGxldCBrZXkgaW4gdGhpcy5fdGFiTWFwKSB7CisgICAgICAgICAgICBsZXQgYnV0dG9uID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnV0dG9uIik7CisgICAgICAgICAgICBidXR0b24uaWQg
PSBrZXk7CisgICAgICAgICAgICBidXR0b24udGV4dENvbnRlbnQgPSB0aGlzLl90YWJNYXBba2V5
XS50aXRsZTsKKyAgICAgICAgICAgIGJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRo
aXMuX2hhbmRsZUJ1dHRvbkNsaWNrZWQuYmluZCh0aGlzKSk7CisKKyAgICAgICAgICAgIGNvbnRh
aW5lckVsZW1lbnQuYXBwZW5kQ2hpbGQoYnV0dG9uKTsKKyAgICAgICAgICAgIHRoaXMuX3RhYkJ1
dHRvbnMucHVzaChidXR0b24pOworICAgICAgICB9CisKKyAgICAgICAgbGV0IGZpcnN0QnV0dG9u
ID0gdGhpcy5fdGFiQnV0dG9uc1swXTsKKyAgICAgICAgZmlyc3RCdXR0b24uY2xhc3NMaXN0LmFk
ZCgic2VsZWN0ZWQiKTsKKyAgICAgICAgdGhpcy5fdGFiTWFwW2ZpcnN0QnV0dG9uLmlkXS5lbGVt
ZW50LmNsYXNzTGlzdC5hZGQoInZpc2libGUiKTsKKworICAgICAgICB0aGlzLl9lbGVtZW50LmFw
cGVuZENoaWxkKGNvbnRhaW5lckVsZW1lbnQpOworICAgIH0KKworICAgIC8vIFByaXZhdGUKKwor
ICAgIF9oYW5kbGVCdXR0b25DbGlja2VkKGV2ZW50KQorICAgIHsKKyAgICAgICAgZm9yIChsZXQg
aXRlbSBvZiB0aGlzLl90YWJCdXR0b25zKSB7CisgICAgICAgICAgICBsZXQgdGFiID0gdGhpcy5f
dGFiTWFwW2l0ZW0uaWRdOworICAgICAgICAgICAgbGV0IHNlbGVjdGVkID0gaXRlbSA9PT0gZXZl
bnQudGFyZ2V0OworICAgICAgICAgICAgaXRlbS5jbGFzc0xpc3QudG9nZ2xlKCJzZWxlY3RlZCIs
IHNlbGVjdGVkKTsKKyAgICAgICAgICAgIHRhYi5lbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoInZp
c2libGUiLCBzZWxlY3RlZCk7CisgICAgICAgICAgICBmb3IgKGxldCBwcm9wZXJ0eUVkaXRvciBv
ZiB0YWIucHJvcGVydGllcykKKyAgICAgICAgICAgICAgICBwcm9wZXJ0eUVkaXRvci51cGRhdGUo
KTsKKyAgICAgICAgfQorICAgIH0KK307Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>