<?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>119686</bug_id>
          
          <creation_ts>2013-08-12 08:49:01 -0700</creation_ts>
          <short_desc>Web Inspector: rich editing of CSS gradients</short_desc>
          <delta_ts>2014-02-20 14:05:33 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</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>129088</dependson>
    
    <dependson>129089</dependson>
    
    <dependson>129094</dependson>
          <blocked>129095</blocked>
    
    <blocked>129096</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Antoine Quint">graouts</reporter>
          <assigned_to name="Antoine Quint">graouts</assigned_to>
          <cc>chrisjshull</cc>
    
    <cc>dino</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>916286</commentid>
    <comment_count>0</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2013-08-12 08:49:01 -0700</bug_when>
    <thetext>In order to alleviate the complexity of the CSS gradients syntax and make it more visually efficient to edit them, we should offer rich editing of gradients within Web Inspector, for instance in the form of a popover allowing to edit the gradient type, direction and stops.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>916288</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2013-08-12 08:50:23 -0700</bug_when>
    <thetext>&lt;rdar://problem/14712396&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>916297</commentid>
    <comment_count>2</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2013-08-12 09:11:41 -0700</bug_when>
    <thetext>I think that to do this right, we&apos;ll need backend support to do the parsing of the CSS value, which we should be able to do via CSSParser::parseGeneratedImage() and checking if the passed value is of type CSSGradientValue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>916390</commentid>
    <comment_count>3</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-08-12 13:53:38 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; I think that to do this right, we&apos;ll need backend support to do the parsing of the CSS value, which we should be able to do via CSSParser::parseGeneratedImage() and checking if the passed value is of type CSSGradientValue.

Note that CSSParser::parse*Gradient take CSSParserValueLists rather than strings so you&apos;ll have to treat this like a new stylesheet. And the output is designed to go onto a RenderStyle.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934984</commentid>
    <comment_count>4</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2013-10-01 05:06:34 -0700</bug_when>
    <thetext>Another option is to do the parsing in JS, there is existing work in that area, for instance Daniel Glazman&apos;s JSCSSP has support for parsing gradients: http://sources.disruptive-innovations.com/jscssp/trunk/src/parser/gradients.js.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>935202</commentid>
    <comment_count>5</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-10-01 14:30:54 -0700</bug_when>
    <thetext>I think having our WebKit parser sense. But at the same time, if you use a newer Web Inspector with an older device you will be locked into the old syntax. Having a JS parser lets the Inspector handle new syntaxes that the device might not support but are new and valid.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>935208</commentid>
    <comment_count>6</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-10-01 14:37:30 -0700</bug_when>
    <thetext>I bungled that last message.

&quot;I think having our WebKit parser makes some sense.&quot;

&quot;Having a JS CSS parser lets…&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>982310</commentid>
    <comment_count>7</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2014-02-19 03:30:34 -0800</bug_when>
    <thetext>Work on this feature is being done on my own WebKit fork at https://github.com/graouts/webkit/tree/gradients. It&apos;s mostly done, save for integration in the CSSStylesDeclarationTextEditor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>982774</commentid>
    <comment_count>8</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2014-02-20 03:43:00 -0800</bug_when>
    <thetext>The blocking bugs are:

https://bugs.webkit.org/show_bug.cgi?id=129088
https://bugs.webkit.org/show_bug.cgi?id=129089
https://bugs.webkit.org/show_bug.cgi?id=129094

The good news is that they all have patches out for review, and the patch for this bug is ready to be sent out as soon as the blocking bugs have landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>982785</commentid>
    <comment_count>9</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2014-02-20 04:14:34 -0800</bug_when>
    <thetext>Some followup tasks:

http://webkit.org/b/129095
http://webkit.org/b/129096</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>982918</commentid>
    <comment_count>10</comment_count>
      <attachid>224777</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2014-02-20 11:44:08 -0800</bug_when>
    <thetext>Created attachment 224777
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>982940</commentid>
    <comment_count>11</comment_count>
      <attachid>224777</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-02-20 12:43:37 -0800</bug_when>
    <thetext>Comment on attachment 224777
Patch

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

&gt; Source/WebInspectorUI/UserInterface/CodeMirrorGradientEditingController.js:177
&gt; +        var matches = this._angleInput.value.match(/Âº/g);

Should unicode escape the symbol.

&gt; Source/WebInspectorUI/UserInterface/CodeMirrorGradientEditingController.js:180
&gt; +            this._angleInput.value = angle + &quot;Âº&quot;;

Ditto.

&gt; Source/WebInspectorUI/UserInterface/CodeMirrorGradientEditingController.js:192
&gt; +                this._angleInput.value = &quot;180Âº&quot;;

Ditto.

&gt; Source/WebInspectorUI/UserInterface/GradientSlider.css:103
&gt; +    border: 1px solid rgba(0,0,0,0.25);

Spaces after the commas.

&gt; Source/WebInspectorUI/UserInterface/GradientSlider.js:357
&gt; +        if (selected)
&gt; +            this._element.classList.add(WebInspector.GradientSliderKnob.SelectedClassName);
&gt; +        else
&gt; +            this._element.classList.remove(WebInspector.GradientSliderKnob.SelectedClassName);

This can be one line: this._element.classList.toggle(WebInspector.GradientSliderKnob.SelectedClassName, selected);

&gt; Source/WebInspectorUI/UserInterface/Images/Checkers.svg:2
&gt; +&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;6&quot; height=&quot;6&quot; fill=&quot;rgb(204, 204, 204)&quot;&gt;&lt;rect width=&quot;3&quot; height=&quot;3&quot; /&gt;&lt;rect x=&quot;3&quot; y=&quot;3&quot; width=&quot;3&quot; height=&quot;3&quot;/&gt;&lt;/svg&gt;
&gt;  \ No newline at end of file

This should get the license header comment and have newlines.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>982973</commentid>
    <comment_count>12</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2014-02-20 14:04:41 -0800</bug_when>
    <thetext>Landed r164446 addressing Tim&apos;s feedback: &lt;http://trac.webkit.org/changeset/164446&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224777</attachid>
            <date>2014-02-20 11:44:08 -0800</date>
            <delta_ts>2014-02-20 12:43:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-119686-20140220204407.patch</filename>
            <type>text/plain</type>
            <size>82213</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY0NDM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBh
MmMxOTZmODRjMDAwYTljNGMzZmFmZDg1ODc4YmU4NWYxZGFkOWEzLi40ODljNTZkMDQxNzhjNDll
MDU4YTRjY2JmYTNhMmQxZGNhODVlMWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwyMDMgQEAKIDIwMTQtMDItMjAgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQHdlYmtpdC5v
cmc+CiAKKyAgICAgICAgV2ViIEluc3BlY3RvcjogcmljaCBlZGl0aW5nIG9mIENTUyBncmFkaWVu
dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExOTY4
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIExvb2sg
Zm9yIGdyYWRpZW50IGRlZmluaXRpb25zIGluIENTUyByZXNvdXJjZXMgYW5kIGltcGxlbWVudCBh
IGdyYWRpZW50LXNwZWNpZmljIENvZGVNaXJyb3JFZGl0aW5nQ29udHJvbGxlcgorICAgICAgICB0
byBlZGl0IHRob3NlIENTUyBncmFkaWVudHMuIFRoZSBDb2RlTWlycm9yR3JhZGllbnRFZGl0aW5n
Q29udHJvbGxlciBjb25zaXN0cyBvZiBhIEdyYWRpZW50U2xpZGVyLCBhIG5ldyB3aWRnZXQKKyAg
ICAgICAgYWxsb3dpbmcgdGhlIGVkaXRpbmcgb2YgZ3JhZGllbnQgc3RvcHMsIGEgPHNlbGVjdD4g
dG8gcGljayBiZXR3ZWVuIHZhcmlvdXMgZ3JhZGllbnQgdHlwZXMsIGEgdGV4dCBpbnB1dCB0byBl
ZGl0CisgICAgICAgIHRoZSBncmFkaWVudCBhbmdsZSAoZm9yIGxpbmVhciBncmFkaWVudHMpIGFu
ZCBmaW5hbGx5IGEgQ29sb3JQaWNrZXIgd2hlbiBhIGdyYWRpZW50IHN0b3AgaXMgcGlja2VkIGZv
ciBlZGl0aW5nLgorCisgICAgICAgICogTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRT
dHJpbmdzLmpzOgorICAgICAgICBOZXcgbG9jYWxpemVkIHN0cmluZ3MgZm9yIHRoZSBjb250ZW50
IG9mIHRoZSBncmFkaWVudCBlZGl0aW5nIGNvbnRyb2xsZXIgcG9wb3Zlci4KKworICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvQ29kZU1pcnJvckFkZGl0aW9ucy5qczoKKyAgICAgICAgTmV3IC5jcmVh
dGVHcmFkaWVudE1hcmtlcnMoKSBtZXRob2Qgd2hpY2gsIHNpbWlsYXIgdG8gLmNyZWF0ZUNvbG9y
TWFya2VycygpLCB0YWtlcyBpbiBhbiBvcHRpb25hbCBUZXh0UmFuZ2UsIGFuZAorICAgICAgICBs
b29rcyBmb3IgYWxsIGdyYWRpZW50cyBzcGVjaWZpZWQgaW4gQ1NTIHRvIGNyZWF0ZSBUZXh0TWFy
a2VycyB3aXRoIG5ldyB0eXBlIFdlYkluc3BlY3Rvci5UZXh0TWFya2VyLlR5cGUuR3JhZGllbnQu
CisgICAgICAgIEluIG9yZGVyIHRvIGZ1bGx5IGlkZW50aWZ5IHRoZXNlIENTUyBncmFkaWVudCBz
dHJpbmdzLCB3ZSBpbXBsZW1lbnQgYSB0b2tlbml6ZXIgdG8gbG9vayBmb3IgdGhlIGZpbmFsIGNs
b3NpbmcKKyAgICAgICAgcGFyZW50aGVzaXMgc2luY2UgdGhlcmUgY2FuIGJlIG5lc3RlZCBvcGVu
aW5nIGFuZCBjbG9zaW5nIHBhcmVudGhlc2VzIGFzIGNvbG9ycyBhcmUgc3BlY2lmaWVkIGZvciBz
dG9wcy4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29kZU1pcnJvckdyYWRpZW50RWRpdGlu
Z0NvbnRyb2xsZXIuY3NzOiBBZGRlZC4KKyAgICAgICAgKC5ncmFkaWVudC1lZGl0aW5nLWNvbnRy
b2xsZXIpOgorICAgICAgICAoLmdyYWRpZW50LWVkaXRpbmctY29udHJvbGxlci5lZGl0cy1jb2xv
cik6CisgICAgICAgICguZ3JhZGllbnQtZWRpdGluZy1jb250cm9sbGVyLnJhZGlhbC1ncmFkaWVu
dCk6CisgICAgICAgICguZ3JhZGllbnQtZWRpdGluZy1jb250cm9sbGVyLmVkaXRzLWNvbG9yLnJh
ZGlhbC1ncmFkaWVudCk6CisgICAgICAgICguZ3JhZGllbnQtZWRpdGluZy1jb250cm9sbGVyIHNl
bGVjdCk6CisgICAgICAgICguZ3JhZGllbnQtZWRpdGluZy1jb250cm9sbGVyIC5ncmFkaWVudC1z
bGlkZXIpOgorICAgICAgICAoLmdyYWRpZW50LWVkaXRpbmctY29udHJvbGxlciAuY29sb3ItcGlj
a2VyKToKKyAgICAgICAgKC5ncmFkaWVudC1lZGl0aW5nLWNvbnRyb2xsZXIgPiAuY29sb3ItcGlj
a2VyID4gLnNsaWRlcik6CisgICAgICAgICguZ3JhZGllbnQtZWRpdGluZy1jb250cm9sbGVyID4g
LmNvbG9yLXBpY2tlciA+IC5icmlnaHRuZXNzKToKKyAgICAgICAgKC5ncmFkaWVudC1lZGl0aW5n
LWNvbnRyb2xsZXIgPiAuY29sb3ItcGlja2VyID4gLm9wYWNpdHkpOgorICAgICAgICAoLmdyYWRp
ZW50LWVkaXRpbmctY29udHJvbGxlciA+IGxhYmVsKToKKyAgICAgICAgKC5ncmFkaWVudC1lZGl0
aW5nLWNvbnRyb2xsZXIucmFkaWFsLWdyYWRpZW50ID4gbGFiZWwpOgorICAgICAgICAoLmdyYWRp
ZW50LWVkaXRpbmctY29udHJvbGxlci5lZGl0cy1jb2xvciA+IGxhYmVsKToKKyAgICAgICAgKC5n
cmFkaWVudC1lZGl0aW5nLWNvbnRyb2xsZXIgPiBsYWJlbCA+IGlucHV0KToKKworICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvQ29kZU1pcnJvckdyYWRpZW50RWRpdGluZ0NvbnRyb2xsZXIuanM6IEFk
ZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JHcmFkaWVudEVkaXRpbmdDb250
cm9sbGVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2RlTWlycm9yR3JhZGllbnRFZGl0aW5n
Q29udHJvbGxlci5wcm90b3R5cGUuZ2V0IGluaXRpYWxWYWx1ZSk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuQ29kZU1pcnJvckdyYWRpZW50RWRpdGluZ0NvbnRyb2xsZXIucHJvdG90eXBlLmdldCBj
c3NDbGFzc05hbWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JHcmFkaWVudEVk
aXRpbmdDb250cm9sbGVyLnByb3RvdHlwZS5nZXQgcG9wb3ZlclByZWZlcnJlZEVkZ2VzKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5Db2RlTWlycm9yR3JhZGllbnRFZGl0aW5nQ29udHJvbGxlci5w
cm90b3R5cGUucG9wb3ZlclRhcmdldEZyYW1lV2l0aFJlY3RzKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5Db2RlTWlycm9yR3JhZGllbnRFZGl0aW5nQ29udHJvbGxlci5wcm90b3R5cGUucG9wb3Zl
cldpbGxQcmVzZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2RlTWlycm9yR3JhZGllbnRF
ZGl0aW5nQ29udHJvbGxlci5wcm90b3R5cGUucG9wb3ZlckRpZFByZXNlbnQpOgorICAgICAgICBJ
bXBsZW1lbnRhdGlvbiBvZiBDb2RlTWlycm9yRWRpdGluZ0NvbnRyb2xsZXIgbWV0aG9kcyBtZWFu
dCB0byBiZSBvdmVycmlkZGVuLiBUaGlzIGFsbG93cyB1cworICAgICAgICB0byBjdXN0b21pemUg
dGhlIHBvcG92ZXIncyBhcHBlYXJhbmNlLCBtb3N0bHkgdG8gY29udHJvbCBob3cgaXQgYXR0YWNo
ZXMgdG8gdGhlIGdyYWRpZW50CisgICAgICAgIHN0cmluZ3MgaW4gdGhlIGVkaXRvci4KKworICAg
ICAgICAoV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JHcmFkaWVudEVkaXRpbmdDb250cm9sbGVyLnBy
b3RvdHlwZS5oYW5kbGVFdmVudCk6CisgICAgICAgIEV2ZW50IGhhbmRsZXIgZm9yIGNoYW5nZXMg
aW4gdGhlIDxzZWxlY3Q+IGdvdmVybmluZyBncmFkaWVudCB0eXBlIGFuZCA8aW5wdXQ+IGZvciB0
aGUgYW5nbGUuCisKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2RlTWlycm9yR3JhZGllbnRFZGl0
aW5nQ29udHJvbGxlci5wcm90b3R5cGUuZ3JhZGllbnRTbGlkZXJTdG9wc0RpZENoYW5nZSk6Cisg
ICAgICAgIEltcGxlbWVudGF0aW9uIG9mIGEgR3JhZGllbnRTbGlkZXIgZGVsZWdhdGlvbiBtZXRo
b2QsIHdlIHVzZSB0aGlzIHRvIHVwZGF0ZSB0aGUgLnRleHQgcHJvcGVydHkKKyAgICAgICAgaW4g
b3JkZXIgdG8gcHJvcGFnYXRlIHRoZSBzdG9wcyBjaGFuZ2UgdG8gdGhlIGVkaXRvci4KKworICAg
ICAgICAoV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JHcmFkaWVudEVkaXRpbmdDb250cm9sbGVyLnBy
b3RvdHlwZS5ncmFkaWVudFNsaWRlclN0b3BXYXNTZWxlY3RlZCk6CisgICAgICAgIEltcGxlbWVu
dGF0aW9uIG9mIGEgR3JhZGllbnRTbGlkZXIgZGVsZWdhdGlvbiBtZXRob2QsIHdlIHVzZSB0aGlz
IHRvIGNvbnRyb2wgdGhlIGRpc3BsYXkgb2YgdGhlCisgICAgICAgIENvbG9yUGlja2VyIHVzZWQg
dG8gZWRpdCB0aGUgY29sb3Igb2YgYSBzZWxlY3RlZCBzdG9wLgorCisgICAgICAgIChXZWJJbnNw
ZWN0b3IuQ29kZU1pcnJvckdyYWRpZW50RWRpdGluZ0NvbnRyb2xsZXIucHJvdG90eXBlLl9oYW5k
bGVJbnB1dEV2ZW50KToKKyAgICAgICAgRGVhbCB3aXRoIGNoYW5nZXMgaW4gdGhlIDxpbnB1dD4g
Zm9yIHRoZSBhbmdsZSwgZW5zdXJpbmcgd2UgaGF2ZSBhICLCuiIgc3RyaW5nIGFkZGVkIHRvIHRo
ZSB2YWx1ZS4KKworICAgICAgICAoV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JHcmFkaWVudEVkaXRp
bmdDb250cm9sbGVyLnByb3RvdHlwZS5faGFuZGxlQ2hhbmdlRXZlbnQpOgorICAgICAgICBEZWFs
IHdpdGggY2hhbmdlcyBpbiB0aGUgPHNlbGVjdD4gZm9yIHRoZSB0eXBlLCBwcmVzZXJ2aW5nIHRo
ZSBzdG9wcyBsaXN0IGZyb20gb25lIGdyYWRpZW50IHR5cGUKKyAgICAgICAgdG8gdGhlIG90aGVy
LiBHcmFkaWVudCB0eXBlLXNwZWNpZmljIGluZm9ybWF0aW9uIChhbmdsZSBmb3IgbGluZWFyIGdy
YWRpZW50cywgc2l6aW5nIGZvciByYWRpYWwKKyAgICAgICAgZ3JhZGllbnRzKSBpcyBsb3N0IGFz
IHdlIHRvZ2dsZSBiZXR3ZWVuIGdyYWRpZW50IHR5cGVzLgorCisgICAgICAgIChXZWJJbnNwZWN0
b3IuQ29kZU1pcnJvckdyYWRpZW50RWRpdGluZ0NvbnRyb2xsZXIucHJvdG90eXBlLl9jb2xvclBp
Y2tlckNvbG9yQ2hhbmdlZCk6CisgICAgICAgIFByb3BhZ2F0ZSBhIGNvbG9yIGNoYW5nZSBpbiB0
aGUgQ29sb3JQaWNrZXIgdG8gdGhlIHN0b3AgYmVpbmcgZWRpdGVkIGluIHRoZSBHcmFkaWVudFNs
aWRlciBhbmQKKyAgICAgICAgYW5kIHVwZGF0ZSB0aGUgLnRleHQgcHJvcGVydHkgaW4gb3JkZXIg
dG8gcHJvcGFnYXRlIHRoZSBzdG9wcyBjaGFuZ2UgdG8gdGhlIGVkaXRvci4KKworICAgICAgICAo
V2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JHcmFkaWVudEVkaXRpbmdDb250cm9sbGVyLnByb3RvdHlw
ZS5fdXBkYXRlQ1NTQ2xhc3NGb3JHcmFkaWVudFR5cGUpOgorICAgICAgICBBcyB3ZSB0b2dnbGUg
dGhlIGdyYWRpZW50IHR5cGUgaW4gLl9oYW5kbGVDaGFuZ2VFdmVudCgpLCB1cGRhdGUgdGhlIENT
UyBjbGFzcyB1c2VkIHRvIGhpZGUgb3Igc2hvdworICAgICAgICB0aGUgYW5nbGUgPGlucHV0PiB3
aGljaCBpcyBvbmx5IHJlbGV2YW50IGZvciBsaW5lYXIgZ3JhZGllbnRzLgorCisgICAgICAgICog
VXNlckludGVyZmFjZS9Db2xvclBpY2tlci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2xv
clBpY2tlcik6CisgICAgICAgIEFkb3B0IHRoZSBuZXcgQ2hlY2tlcnMuc3ZnIGZpbGUgdG8gZGlz
cGxheSB0aGUgY2hlY2tlcnMgcGF0dGVybiBpbiB0aGUgYmFja2dyb3VuZCBvZiB0aGUgb3BhY2l0
eSBzbGlkZXIuCisKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2xvclBpY2tlci5wcm90b3R5cGUu
Z2V0IGNvbG9yV2hlZWwpOgorICAgICAgICBFeHBvc2UgdGhlIENvbG9yV2hlZWwgc3VjaCB0aGF0
IGl0IGNhbiBiZSBzaXplZCBieSBDb2xvclBpY2tlciBjbGllbnRzLgorCisgICAgICAgIChXZWJJ
bnNwZWN0b3IuQ29sb3JQaWNrZXIucHJvdG90eXBlLl91cGRhdGVDb2xvcik6CisgICAgICAgIERy
aXZlLWJ5IGZpeCBmb3IgYSBidWcgd2hlcmUgd2UnZCBhdHRlbXB0IHRvIHVzZSB0aGUgUkdCIGNv
bXBvbmVudHMgb2YgYSBjb2xvciB0byBnZXQgdGhlIGFscGhhLWF3YXJlIHZlcnNpb24KKyAgICAg
ICAgb2YgdGhlIGNvbG9yIGV2ZW4gdGhvdWdoIHRoZSBiYXNlIGZvcm1hdCB3YXMgSFNMLgorCisg
ICAgICAgICogVXNlckludGVyZmFjZS9HcmFkaWVudC5qczogQWRkZWQuCisgICAgICAgIFBhcnNl
ciBmb3IgZ3JhZGllbnQgc3RyaW5ncyBhcyBwYXNzZWQgZnJvbSB0aGUgQ29kZU1pcnJvciAuY3Jl
YXRlR3JhZGllbnRNYXJrZXJzKCkgZXh0ZW5zaW9uIG1ldGhvZC4gSW4gdGhlIGNhc2UKKyAgICAg
ICAgb2YgbGluZWFyIGdyYWRpZW50cywgd2UgcGFyc2UgYWxsIHZhbHVlcywgc2F2ZSBmb3IgbGVu
Z3RocywgYW5kIGluIHRoZSBjYXNlIG9mIHJhZGlhbCBncmFkaWVudHMsIHdlIHByZXNlcnZlIHRo
ZQorICAgICAgICBzaXppbmcgaW5mb3JtYXRpb24gYXMgYSBzdHJpbmcgYW5kIHBhcnNlIG9ubHkg
dGhlIGdyYWRpZW50IHN0b3BzIGFzIHRoZSBzaXppbmcgaW5mb3JtYXRpb24gaXMgb25seSB1c2Vm
dWwgdG8gc2hvdworICAgICAgICBpbiBhbiBlZGl0b3IgaWYgYXR0YWNoZWQgdG8gYW4gZWxlbWVu
dCB3aXRoIG1ldHJpY3MuCisgICAgICAgIAorICAgICAgICBTaW5jZSBpbnN0YW5jZXMgb2YgR3Jh
ZGllbnQgYXJlIHVzZWQgYXMgdGhlIC52YWx1ZSBwcm9wZXJ0eSBvZiBDb2RlTWlycm9yR3JhZGll
bnRFZGl0aW5nQ29udHJvbGxlciwgd2UgaW1wbGVtZW50CisgICAgICAgIHRoZSByZXF1aXJlZCAu
Y29weSgpIGFuZCAudG9TdHJpbmcoKSBtZXRob2RzLiBUaGUgLnRvU3RyaW5nKCkgaW1wbGVtZW50
YXRpb25zIGFyZSBhd2FyZSBvZiBkZWZhdWx0IHZhbHVlcyBmb3IgYW5nbGVzCisgICAgICAgIGFu
ZCBjb2xvciBzdG9wIG9mZnNldHMgYW5kIG9ubHkgcHJpbnQgdGhvc2UgYXMgbmVjZXNzYXJ5IGFu
ZCB1c2Ugc2hvcnRoYW5kcyB3aGVuIHBvc3NpYmxlLgorCisgICAgICAgIChXZWJJbnNwZWN0b3Iu
R3JhZGllbnQuZnJvbVN0cmluZyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuR3JhZGllbnQuc3Rv
cHNXaXRoQ29tcG9uZW50cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuR3JhZGllbnQuc3RyaW5n
RnJvbVN0b3BzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5MaW5lYXJHcmFkaWVudCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuTGluZWFyR3JhZGllbnQubGluZWFyR3JhZGllbnRXaXRoQ29tcG9u
ZW50cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTGluZWFyR3JhZGllbnQucHJvdG90eXBlLmNv
cHkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkxpbmVhckdyYWRpZW50LnByb3RvdHlwZS50b1N0
cmluZyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmFkaWFsR3JhZGllbnQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlJhZGlhbEdyYWRpZW50LnJhZGlhbEdyYWRpZW50V2l0aENvbXBvbmVudHMp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJhZGlhbEdyYWRpZW50LnByb3RvdHlwZS5jb3B5KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5SYWRpYWxHcmFkaWVudC5wcm90b3R5cGUudG9TdHJpbmcp
OgorCisgICAgICAgICogVXNlckludGVyZmFjZS9HcmFkaWVudFNsaWRlci5jc3M6IEFkZGVkLgor
ICAgICAgICAoLmdyYWRpZW50LXNsaWRlcik6CisgICAgICAgICguZ3JhZGllbnQtc2xpZGVyID4g
Y2FudmFzKToKKyAgICAgICAgKC5ncmFkaWVudC1zbGlkZXIgPiAuYWRkLWFyZWEpOgorICAgICAg
ICAoLmdyYWRpZW50LXNsaWRlci1rbm9iKToKKyAgICAgICAgKC5ncmFkaWVudC1zbGlkZXIta25v
Yi5zaGFkb3cpOgorICAgICAgICAoLmdyYWRpZW50LXNsaWRlci1rbm9iLnNlbGVjdGVkKToKKyAg
ICAgICAgKC5ncmFkaWVudC1zbGlkZXIta25vYi5kZXRhY2hpbmcpOgorICAgICAgICAoLmdyYWRp
ZW50LXNsaWRlci1rbm9iLmZhZGUtb3V0KToKKyAgICAgICAgKC5ncmFkaWVudC1zbGlkZXIta25v
YiA+IGRpdik6CisgICAgICAgICguZ3JhZGllbnQtc2xpZGVyLWtub2IgPiBpbWcpOgorCisgICAg
ICAgICogVXNlckludGVyZmFjZS9HcmFkaWVudFNsaWRlci5qczogQWRkZWQuCisgICAgICAgIFdp
ZGdldCB1c2VkIHRvIGVkaXQgYSBsaXN0IG9mIHN0b3BzIGZvciBhIGdyYWRpZW50LCBsaW5lYXIg
b3IgcmFkaWFsLiBUaGUgd2lkZ2V0IGZlYXR1cmVzIGEgPGNhbnZhcz4gZWxlbWVudAorICAgICAg
ICB0aGF0IGRyYXdzIHRoZSBncmFkaWVudCBhcyBhIGxpbmVhciBncmFkaWVudCBmcm9tIGxlZnQg
dG8gcmlnaHQgd2l0aCBjaGVja2VycyBpbiB0aGUgYmFja2dyb3VuZCB0byBjb3JyZWN0bHkKKyAg
ICAgICAgZGlzcGxheSB0cmFuc3BhcmVudCBjb2xvcnMuIEF0dGFjaGVkIHRvIHRoaXMgYmFja2dy
b3VuZCwgaW5kaXZpZHVhbCBrbm9icyBhcmUgc2hvd24gZm9yIGVhY2ggc3RvcCBpbiB0aGUgcHJv
dmlkZWQKKyAgICAgICAgc3RvcHMgYXJyYXkuIFRoZXNlIGtub2JzIGNhbiBiZSBkcmFnZ2VkIGZy
b20gbGVmdCB0byByaWdodCB0byBjaGFuZ2UgdGhlIG1hdGNoaW5nIHN0b3Agb2Zmc2V0LCBidXQg
YWxzbyBkb3duIHRvCisgICAgICAgIGRldGFjaCB0aGUga25vYiBhbmQgcmVtb3ZlIHRoaXMgc3Rv
cC4gQWRkaXRpb25hbGx5LCBrbm9icyBjYW4gYmUgY2xpY2tlZCB0byB0b2dnbGUgdGhlaXIgc2Vs
ZWN0ZWQgc3RhdGUsIHdoZXJlIG9ubHkKKyAgICAgICAgb25lIGtub2IgY2FuIGJlIHNlbGVjdGVk
IGF0IGEgdGltZS4gVGhlIEVzYy4ga2V5IGlzIHVzZWQgdG8gcmVtb3ZlIHNlbGVjdGlvbiBvZiB0
aGUgY3VycmVudGx5IHNlbGVjdGVkIGtub2IuCisKKyAgICAgICAgKFdlYkluc3BlY3Rvci5HcmFk
aWVudFNsaWRlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuR3JhZGllbnRTbGlkZXIucHJvdG90
eXBlLmdldCBlbGVtZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5HcmFkaWVudFNsaWRlci5w
cm90b3R5cGUuZ2V0IHN0b3BzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5HcmFkaWVudFNsaWRl
ci5wcm90b3R5cGUuc2V0IHN0b3BzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5HcmFkaWVudFNs
aWRlci5wcm90b3R5cGUuZ2V0IHNlbGVjdGVkU3RvcCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
R3JhZGllbnRTbGlkZXIucHJvdG90eXBlLmhhbmRsZUV2ZW50KToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5HcmFkaWVudFNsaWRlci5wcm90b3R5cGUuaGFuZGxlS2V5ZG93bkV2ZW50KToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5HcmFkaWVudFNsaWRlci5wcm90b3R5cGUua25vYlhEaWRDaGFuZ2Up
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkdyYWRpZW50U2xpZGVyLnByb3RvdHlwZS5rbm9iQ2Fu
RGV0YWNoKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5HcmFkaWVudFNsaWRlci5wcm90b3R5cGUu
a25vYldpbGxEZXRhY2gpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkdyYWRpZW50U2xpZGVyLnBy
b3RvdHlwZS5rbm9iU2VsZWN0aW9uQ2hhbmdlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuR3Jh
ZGllbnRTbGlkZXIucHJvdG90eXBlLl9oYW5kbGVNb3VzZW92ZXIpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkdyYWRpZW50U2xpZGVyLnByb3RvdHlwZS5faGFuZGxlTW91c2Vtb3ZlKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5HcmFkaWVudFNsaWRlci5wcm90b3R5cGUuX2hhbmRsZU1vdXNlb3V0
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5HcmFkaWVudFNsaWRlci5wcm90b3R5cGUuX2hhbmRs
ZUNsaWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5HcmFkaWVudFNsaWRlci5wcm90b3R5cGUu
X3VwZGF0ZVNoYWRvd0tub2IpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkdyYWRpZW50U2xpZGVy
LnByb3RvdHlwZS5fc29ydFN0b3BzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5HcmFkaWVudFNs
aWRlci5wcm90b3R5cGUuX3VwZGF0ZVN0b3BzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5HcmFk
aWVudFNsaWRlci5wcm90b3R5cGUuX3VwZGF0ZUNhbnZhcyk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuR3JhZGllbnRTbGlkZXIucHJvdG90eXBlLl91cGRhdGVLbm9icyk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuR3JhZGllbnRTbGlkZXJLbm9iKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5HcmFk
aWVudFNsaWRlcktub2IucHJvdG90eXBlLmdldCBlbGVtZW50KToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5HcmFkaWVudFNsaWRlcktub2IucHJvdG90eXBlLmdldCBzdG9wKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5HcmFkaWVudFNsaWRlcktub2IucHJvdG90eXBlLnNldCBzdG9wKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5HcmFkaWVudFNsaWRlcktub2IucHJvdG90eXBlLmdldCB4KToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5HcmFkaWVudFNsaWRlcktub2IucHJvdG90eXBlLnNldCB4KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5HcmFkaWVudFNsaWRlcktub2IucHJvdG90eXBlLmdldCB5
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5HcmFkaWVudFNsaWRlcktub2IucHJvdG90eXBlLnNl
dCB5KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5HcmFkaWVudFNsaWRlcktub2IucHJvdG90eXBl
LmdldCB3ZWxsQ29sb3IpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkdyYWRpZW50U2xpZGVyS25v
Yi5wcm90b3R5cGUuc2V0IHdlbGxDb2xvcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuR3JhZGll
bnRTbGlkZXJLbm9iLnByb3RvdHlwZS5nZXQgc2VsZWN0ZWQpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkdyYWRpZW50U2xpZGVyS25vYi5wcm90b3R5cGUuc2V0IHNlbGVjdGVkKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5HcmFkaWVudFNsaWRlcktub2IucHJvdG90eXBlLmhhbmRsZUV2ZW50KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5HcmFkaWVudFNsaWRlcktub2IucHJvdG90eXBlLl9oYW5k
bGVNb3VzZWRvd24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkdyYWRpZW50U2xpZGVyS25vYi5w
cm90b3R5cGUuX2hhbmRsZU1vdXNlbW92ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuR3JhZGll
bnRTbGlkZXJLbm9iLnByb3RvdHlwZS5faGFuZGxlTW91c2V1cCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuR3JhZGllbnRTbGlkZXJLbm9iLnByb3RvdHlwZS5faGFuZGxlVHJhbnNpdGlvbkVuZCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuR3JhZGllbnRTbGlkZXJLbm9iLnByb3RvdHlwZS5fdXBk
YXRlVHJhbnNmb3JtKToKKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvSW1hZ2VzL0NoZWNrZXJz
LnN2ZzogQWRkZWQuCisgICAgICAgIE5ldyBhc3NldCB0byBkcmF3IGNoZWNrZXJzIGZvciBjb2xv
ciB3ZWxscy4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvSW1hZ2VzL0dyYWRpZW50U3RvcC5w
bmc6IEFkZGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvSW1hZ2VzL0dyYWRpZW50U3RvcEAy
eC5wbmc6IEFkZGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvSW1hZ2VzL0dyYWRpZW50U3Rv
cFNlbGVjdGVkLnBuZzogQWRkZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9JbWFnZXMvR3Jh
ZGllbnRTdG9wU2VsZWN0ZWRAMngucG5nOiBBZGRlZC4KKyAgICAgICAgTmV3IGFzc2V0cyB1c2Vk
IGJ5IHRoZSBncmFkaWVudCBzbGlkZXIuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01haW4u
aHRtbDoKKyAgICAgICAgTGluayB0byB0aGUgbmV3IHNvdXJjZSBmaWxlcy4KKworICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvU291cmNlQ29kZVRleHRFZGl0b3IuanM6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IucHJvdG90eXBlLl91cGRhdGVFZGl0YWJsZU1hcmtl
cnMpOgorICAgICAgICBBZGQgYSBjYWxsIHRvIC5jcmVhdGVHcmFkaWVudE1hcmtlcnMoKSBzdWNo
IHRoYXQgd2Ugc3VwcG9ydCBlZGl0aW5nIG9mIENTUyBncmFkaWVudHMgaW4gc3VjaCBlZGl0b3Jz
LgorCisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IucHJvdG90eXBl
Ll90b2tlblRyYWNraW5nQ29udHJvbGxlckhpZ2hsaWdodGVkTWFya2VkRXhwcmVzc2lvbik6Cisg
ICAgICAgIEFsc28gcmVjb2duaXplIGdyYWRpZW50IG1hcmtlcnMgYXMgdmFsaWQgZWRpdGFibGUg
bWFya2Vycy4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVGV4dEVkaXRvci5qczoKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yLnByb3RvdHlwZS5jcmVhdGVHcmFkaWVudE1hcmtl
cnMpOgorICAgICAgICBXcmFwcGVyIGZvciB0aGUgQ29kZU1pcnJvciBleHRlbnNpb24gbWV0aG9k
IC5jcmVhdGVHcmFkaWVudE1hcmtlcnMoKSBzdWNoIHRoYXQgaXQgbWF5IGJlIHVzZWQgYnkgc3Vi
Y2xhc3NlcworICAgICAgICB0aGF0IGhhdmUgbm8ga25vd2xlZGdlIG9mIENvZGVNaXJyb3IuCisK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yLnByb3RvdHlwZS5lZGl0aW5nQ29udHJv
bGxlckZvck1hcmtlcik6CisgICAgICAgIFJldHVybiBhIENvZGVNaXJyb3JHcmFkaWVudEVkaXRp
bmdDb250cm9sbGVyIGZvciBUZXh0TWFya2VycyB3aXRoIFdlYkluc3BlY3Rvci5UZXh0TWFya2Vy
LlR5cGUuR3JhZGllbnQgdHlwZS4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVGV4dE1hcmtl
ci5qczoKKyAgICAgICAgQWRkIHRoZSBXZWJJbnNwZWN0b3IuVGV4dE1hcmtlci5UeXBlLkdyYWRp
ZW50IHR5cGUuCisKKzIwMTQtMDItMjAgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQHdlYmtpdC5v
cmc+CisKICAgICAgICAgV2ViIEluc3BlY3RvcjogY3JlYXRlIGEgQ29kZU1pcnJvckVkaXRpbmdD
b250cm9sbGVyIHN1cGVyY2xhc3MKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEyOTA5NAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
TG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcwppbmRl
eCBjNzI2YzAzNjFkYTQ5OTJkYTIyMTNlN2I3NGNiMjNiYzFmODQ3ZDFiLi4wMDMwZjlmNWJlYmIy
NDc5N2M3MTUxZTEzMzdmMmFiMjQwNDAxODM0IDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRh
IDUzMAp6Y21lQmJWN31NTnlkamloXkt9aiMjPnhJMU9fUTBxOT1Le1NscnJRb1dQKSlDa1dPVUMw
Z19iPXNTR0kkbmhaKHwKenU/enxmd21fYEpmSmYhejBCUE9Ma0dYc30jblhZPlEmRkB6MCp5fGVZ
flpmSFN6QmFRQE1RNmZXc3tHbTJXO00qCnphZlYkUVdOaitZJHw5Zno/bSNqVFhsVyk7QiMpdEZh
em5sLUticCtzSURmOypgd0taWF9aQ2R5LW5fZX1nPU1tUQp6JjgpQHRqcUg8cUpCbFYtY2xkNG8t
PVZAfTNvLT1jNC03KzU5Mk53JTRveE08bEZqbm5aJipfY3otfEt0M2VYMlkKdSErZ0xqOVBVTGtJ
K2NNKS01fjJTZ01jPW50SDxGeU5henI+NFRvLVUyKEYqUnY2K0EzWiNAN2RJZVNGXwoKZGVsdGEg
MTAyCnpjbVYtczBHYT5aZyMoSSExRiUmSGxlcX5abGNAPD52cmg7ejBoMHA/O0ltWj1PYk41PTZx
Wnd5QzIzTlZmb1BfKQp6ZDE9WkFsa2Fpe3YlN0pXM3pPQT5uNnBpTmg2Sk4rZihNaTFpQXN9Y2lG
VUlzaVg7TSk8JXxAUTR8b2MqO2YlQCEKSXYpX35kRXsqTGlKT0JVeQoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvZGVNaXJyb3JBZGRpdGlvbnMuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db2RlTWlycm9yQWRkaXRpb25z
LmpzCmluZGV4IDQ4MzRjNWMxMmU4MmFiNDJmYjlmYjM3ODJkNGU5ZGFjZGRlZTUxNDcuLjc1ZjA5
Mzg2Mjk1NTAzN2JlOTA4MGY5NDhjMGE4ODU3ZjBlYTdhYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvZGVNaXJyb3JBZGRpdGlvbnMuanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29kZU1pcnJvckFkZGl0aW9ucy5q
cwpAQCAtNTIzLDYgKzUyMyw3MyBAQAogICAgICAgICByZXR1cm4gY3JlYXRlZE1hcmtlcnM7CiAg
ICAgfSk7CiAKKyAgICBDb2RlTWlycm9yLmRlZmluZUV4dGVuc2lvbigiY3JlYXRlR3JhZGllbnRN
YXJrZXJzIiwgZnVuY3Rpb24ocmFuZ2UsIGNhbGxiYWNrKSB7CisgICAgICAgIHZhciBjcmVhdGVk
TWFya2VycyA9IFtdOworCisgICAgICAgIHZhciBzdGFydCA9IHJhbmdlIGluc3RhbmNlb2YgV2Vi
SW5zcGVjdG9yLlRleHRSYW5nZSA/IHJhbmdlLnN0YXJ0TGluZSA6IDA7CisgICAgICAgIHZhciBl
bmQgPSByYW5nZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5UZXh0UmFuZ2UgPyByYW5nZS5lbmRM
aW5lICsgMSA6IHRoaXMubGluZUNvdW50KCk7CisKKyAgICAgICAgY29uc3QgZ3JhZGllbnRSZWdl
eCA9IC8ocmVwZWF0aW5nLSk/KGxpbmVhcnxyYWRpYWwpLWdyYWRpZW50XHMqXChccyovZzsKKwor
ICAgICAgICBmb3IgKHZhciBsaW5lTnVtYmVyID0gc3RhcnQ7IGxpbmVOdW1iZXIgPCBlbmQ7ICsr
bGluZU51bWJlcikgeworICAgICAgICAgICAgdmFyIGxpbmVDb250ZW50ID0gdGhpcy5nZXRMaW5l
KGxpbmVOdW1iZXIpOworICAgICAgICAgICAgdmFyIG1hdGNoID0gZ3JhZGllbnRSZWdleC5leGVj
KGxpbmVDb250ZW50KTsKKyAgICAgICAgICAgIHdoaWxlIChtYXRjaCkgeworICAgICAgICAgICAg
ICAgIHZhciBzdGFydExpbmUgPSBsaW5lTnVtYmVyOworICAgICAgICAgICAgICAgIHZhciBzdGFy
dENoYXIgPSBtYXRjaC5pbmRleDsKKyAgICAgICAgICAgICAgICB2YXIgZW5kQ2hhciA9IG1hdGNo
LmluZGV4ICsgbWF0Y2hbMF0ubGVuZ3RoOworCisgICAgICAgICAgICAgICAgdmFyIG9wZW5QYXJl
bnRoZXNlcyA9IDA7CisgICAgICAgICAgICAgICAgd2hpbGUgKGMgPSBsaW5lQ29udGVudFtlbmRD
aGFyXSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoYyA9PT0gIigiKQorICAgICAgICAgICAg
ICAgICAgICAgICAgb3BlblBhcmVudGhlc2VzKys7CisgICAgICAgICAgICAgICAgICAgIGlmIChj
ID09PSAiKSIpCisgICAgICAgICAgICAgICAgICAgICAgICBvcGVuUGFyZW50aGVzZXMtLTsKKwor
ICAgICAgICAgICAgICAgICAgICBpZiAob3BlblBhcmVudGhlc2VzID09PSAtMSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgZW5kQ2hhcisrOworICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBlbmRDaGFy
Kys7CisgICAgICAgICAgICAgICAgICAgIGlmIChlbmRDaGFyID49IGxpbmVDb250ZW50Lmxlbmd0
aCkgeworICAgICAgICAgICAgICAgICAgICAgICAgbGluZU51bWJlcisrOworICAgICAgICAgICAg
ICAgICAgICAgICAgZW5kQ2hhciA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICBsaW5lQ29u
dGVudCA9IHRoaXMuZ2V0TGluZShsaW5lTnVtYmVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGlmICghbGluZUNvbnRlbnQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAg
ICBpZiAob3BlblBhcmVudGhlc2VzICE9PSAtMSkgeworICAgICAgICAgICAgICAgICAgICBtYXRj
aCA9IGdyYWRpZW50UmVnZXguZXhlYyhsaW5lQ29udGVudCk7CisgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHZhciBmcm9t
ID0ge2xpbmU6IHN0YXJ0TGluZSwgY2g6IHN0YXJ0Q2hhcn07CisgICAgICAgICAgICAgICAgdmFy
IHRvID0ge2xpbmU6IGxpbmVOdW1iZXIsIGNoOiBlbmRDaGFyfTsKKworICAgICAgICAgICAgICAg
IHZhciBncmFkaWVudFN0cmluZyA9IHRoaXMuZ2V0UmFuZ2UoZnJvbSwgdG8pOworICAgICAgICAg
ICAgICAgIHZhciBncmFkaWVudCA9IFdlYkluc3BlY3Rvci5HcmFkaWVudC5mcm9tU3RyaW5nKGdy
YWRpZW50U3RyaW5nKTsKKyAgICAgICAgICAgICAgICBpZiAoIWdyYWRpZW50KSB7CisgICAgICAg
ICAgICAgICAgICAgIG1hdGNoID0gZ3JhZGllbnRSZWdleC5leGVjKGxpbmVDb250ZW50KTsKKyAg
ICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAgICAgdmFyIG1hcmtlciA9IG5ldyBXZWJJbnNwZWN0b3IuVGV4dE1hcmtlcih0aGlzLm1h
cmtUZXh0KGZyb20sIHRvKSwgV2ViSW5zcGVjdG9yLlRleHRNYXJrZXIuVHlwZS5HcmFkaWVudCk7
CisKKyAgICAgICAgICAgICAgICBjcmVhdGVkTWFya2Vycy5wdXNoKG1hcmtlcik7CisKKyAgICAg
ICAgICAgICAgICBpZiAoY2FsbGJhY2spCisgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKG1h
cmtlciwgZ3JhZGllbnQsIGdyYWRpZW50U3RyaW5nKTsKKworICAgICAgICAgICAgICAgIG1hdGNo
ID0gZ3JhZGllbnRSZWdleC5leGVjKGxpbmVDb250ZW50KTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorCisgICAgICAgIHJldHVybiBjcmVhdGVkTWFya2VyczsKKyAgICB9KTsKKwogICAgIGZ1
bmN0aW9uIGlnbm9yZUtleShjb2RlTWlycm9yKQogICAgIHsKICAgICAgICAgLy8gRG8gbm90aGlu
ZyB0byBpZ25vcmUgdGhlIGtleS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0NvZGVNaXJyb3JHcmFkaWVudEVkaXRpbmdDb250cm9sbGVyLmNzcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvZGVNaXJyb3JHcmFkaWVudEVkaXRp
bmdDb250cm9sbGVyLmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZjA2NTFmMDcyZDZiNzkwZTU1YzE3ZDRiYzdk
ZWNjNDA3MDY2MjdiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvQ29kZU1pcnJvckdyYWRpZW50RWRpdGluZ0NvbnRyb2xsZXIuY3NzCkBAIC0w
LDAgKzEsMTE0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLmdyYWRpZW50LWVkaXRpbmctY29udHJvbGxlciB7
CisgICAgd2lkdGg6IDI2MHB4OworICAgIGhlaWdodDogMTA5cHg7CisKKyAgICBmb250LWZhbWls
eTogIkx1Y2lkYSBHcmFuZGUiLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7Cit9CisKKy5ncmFkaWVu
dC1lZGl0aW5nLWNvbnRyb2xsZXIuZWRpdHMtY29sb3IgeworICAgIGhlaWdodDogMzA2cHg7Cit9
CisKKy5ncmFkaWVudC1lZGl0aW5nLWNvbnRyb2xsZXIucmFkaWFsLWdyYWRpZW50IHsKKyAgICBo
ZWlnaHQ6IDc4cHg7Cit9CisKKy5ncmFkaWVudC1lZGl0aW5nLWNvbnRyb2xsZXIuZWRpdHMtY29s
b3IucmFkaWFsLWdyYWRpZW50IHsKKyAgICBoZWlnaHQ6IDI3NXB4OworfQorCisuZ3JhZGllbnQt
ZWRpdGluZy1jb250cm9sbGVyIHNlbGVjdCB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAg
IGxlZnQ6IDE3cHg7CisgICAgdG9wOiA5cHg7CisgICAgd2lkdGg6IDIzN3B4OworCisgICAgZm9u
dC1zaXplOiAxNnB4OworfQorCisuZ3JhZGllbnQtZWRpdGluZy1jb250cm9sbGVyIC5ncmFkaWVu
dC1zbGlkZXIgeworICAgIGxlZnQ6IDE2cHg7CisgICAgcmlnaHQ6IDI2cHg7CisgICAgdG9wOiA0
MnB4OworfQorCisuZ3JhZGllbnQtZWRpdGluZy1jb250cm9sbGVyIC5jb2xvci1waWNrZXIgewor
ICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKworICAgIHRvcDogODZweDsKKyAgICB3aWR0aDogMjAy
cHg7CisgICAgaGVpZ2h0OiAxNzJweDsKKyAgICBwYWRkaW5nOiAwIDEwcHg7Cit9CisKKy5ncmFk
aWVudC1lZGl0aW5nLWNvbnRyb2xsZXIgPiAuY29sb3ItcGlja2VyID4gLnNsaWRlciB7CisgICAg
dG9wOiAycHg7CisgICAgd2lkdGg6IDE4NnB4OworfQorCisuZ3JhZGllbnQtZWRpdGluZy1jb250
cm9sbGVyID4gLmNvbG9yLXBpY2tlciA+IC5icmlnaHRuZXNzIHsKKyAgICBsZWZ0OiAyMTRweDsK
K30KKworLmdyYWRpZW50LWVkaXRpbmctY29udHJvbGxlciA+IC5jb2xvci1waWNrZXIgPiAub3Bh
Y2l0eSB7CisgICAgbGVmdDogMjM3cHg7Cit9CisKKy5ncmFkaWVudC1lZGl0aW5nLWNvbnRyb2xs
ZXIgPiBsYWJlbCB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHRvcDogODVweDsKKyAg
ICByaWdodDogMTZweDsKKworICAgIHRleHQtYWxpZ246IHJpZ2h0OworICAgIGZvbnQtc2l6ZTog
MTNweDsKK30KKworLmdyYWRpZW50LWVkaXRpbmctY29udHJvbGxlci5yYWRpYWwtZ3JhZGllbnQg
PiBsYWJlbCB7CisgICAgZGlzcGxheTogbm9uZTsKK30KKworLmdyYWRpZW50LWVkaXRpbmctY29u
dHJvbGxlci5lZGl0cy1jb2xvciA+IGxhYmVsIHsKKyAgICB0b3A6IDI4M3B4OworfQorCisuZ3Jh
ZGllbnQtZWRpdGluZy1jb250cm9sbGVyID4gbGFiZWwgPiBpbnB1dCB7CisgICAgd2lkdGg6IDQ4
cHg7CisKKyAgICBwYWRkaW5nLXJpZ2h0OiA0cHg7CisgICAgbWFyZ2luLWxlZnQ6IDVweDsKKwor
ICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOworCisgICAgYm9yZGVyLXJhZGl1czogNHB4Owor
ICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYigxNTUsMTU1LDE1NSk7CisgICAgYm94LXNoYWRvdzog
aW5zZXQgMCAwIDFweCAxcHggcmdiKDIyNywyMjcsMjI3KTsKKyAgICBvdXRsaW5lOiAwOworCisg
ICAgZm9udC1zaXplOiAxM3B4OworICAgIHRleHQtYWxpZ246IHJpZ2h0OworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29kZU1pcnJvckdyYWRpZW50
RWRpdGluZ0NvbnRyb2xsZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Db2RlTWlycm9yR3JhZGllbnRFZGl0aW5nQ29udHJvbGxlci5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZmVh
NzhmZWU5NTA1Y2YzMTQwMzY0MjNjYzgyOGEzOTJmNGMwMzc5Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29kZU1pcnJvckdyYWRpZW50RWRp
dGluZ0NvbnRyb2xsZXIuanMKQEAgLTAsMCArMSwyMTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXZWJJbnNw
ZWN0b3IuQ29kZU1pcnJvckdyYWRpZW50RWRpdGluZ0NvbnRyb2xsZXIgPSBmdW5jdGlvbihjb2Rl
TWlycm9yLCBtYXJrZXIpCit7CisgICAgV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JFZGl0aW5nQ29u
dHJvbGxlci5jYWxsKHRoaXMsIGNvZGVNaXJyb3IsIG1hcmtlcik7Cit9CisKK1dlYkluc3BlY3Rv
ci5Db2RlTWlycm9yR3JhZGllbnRFZGl0aW5nQ29udHJvbGxlci5TdHlsZUNsYXNzTmFtZSA9ICJn
cmFkaWVudC1lZGl0aW5nLWNvbnRyb2xsZXIiOworV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JHcmFk
aWVudEVkaXRpbmdDb250cm9sbGVyLkVkaXRzQ29sb3JDbGFzc05hbWUgPSAiZWRpdHMtY29sb3Ii
OworV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JHcmFkaWVudEVkaXRpbmdDb250cm9sbGVyLlJhZGlh
bEdyYWRpZW50Q2xhc3NOYW1lID0gInJhZGlhbC1ncmFkaWVudCI7CisKK1dlYkluc3BlY3Rvci5D
b2RlTWlycm9yR3JhZGllbnRFZGl0aW5nQ29udHJvbGxlci5HcmFkaWVudFR5cGVzID0geworICAg
ICJsaW5lYXItZ3JhZGllbnQiOiB7CisgICAgICAgIHR5cGU6IFdlYkluc3BlY3Rvci5MaW5lYXJH
cmFkaWVudCwKKyAgICAgICAgbGFiZWw6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiTGluZWFyIEdy
YWRpZW50IiksCisgICAgICAgIHJlcGVhdHM6IGZhbHNlCisgICAgfSwKKyAgICAicmFkaWFsLWdy
YWRpZW50IjogeworICAgICAgICB0eXBlOiBXZWJJbnNwZWN0b3IuUmFkaWFsR3JhZGllbnQsCisg
ICAgICAgIGxhYmVsOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJhZGlhbCBHcmFkaWVudCIpLAor
ICAgICAgICByZXBlYXRzOiBmYWxzZQorICAgIH0sCisgICAgInJlcGVhdGluZy1saW5lYXItZ3Jh
ZGllbnQiOiB7CisgICAgICAgIHR5cGU6IFdlYkluc3BlY3Rvci5MaW5lYXJHcmFkaWVudCwKKyAg
ICAgICAgbGFiZWw6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVwZWF0aW5nIExpbmVhciBHcmFk
aWVudCIpLAorICAgICAgICByZXBlYXRzOiB0cnVlCisgICAgfSwKKyAgICAicmVwZWF0aW5nLXJh
ZGlhbC1ncmFkaWVudCI6IHsKKyAgICAgICAgdHlwZTogV2ViSW5zcGVjdG9yLlJhZGlhbEdyYWRp
ZW50LAorICAgICAgICBsYWJlbDogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZXBlYXRpbmcgUmFk
aWFsIEdyYWRpZW50IiksCisgICAgICAgIHJlcGVhdHM6IHRydWUKKyAgICB9Cit9OworCitXZWJJ
bnNwZWN0b3IuQ29kZU1pcnJvckdyYWRpZW50RWRpdGluZ0NvbnRyb2xsZXIucHJvdG90eXBlID0g
eworICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuQ29kZU1pcnJvckdyYWRpZW50RWRpdGlu
Z0NvbnRyb2xsZXIsCisgICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuQ29kZU1pcnJvckVkaXRp
bmdDb250cm9sbGVyLnByb3RvdHlwZSwKKworICAgIC8vIFB1YmxpYworCisgICAgZ2V0IGluaXRp
YWxWYWx1ZSgpCisgICAgeworICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLkdyYWRpZW50LmZy
b21TdHJpbmcodGhpcy50ZXh0KTsKKyAgICB9LAorCisgICAgZ2V0IGNzc0NsYXNzTmFtZSgpCisg
ICAgeworICAgICAgICByZXR1cm4gImdyYWRpZW50IjsKKyAgICB9LAorCisgICAgZ2V0IHBvcG92
ZXJQcmVmZXJyZWRFZGdlcygpCisgICAgeworICAgICAgICAvLyBTaW5jZSB0aGUgZ3JhZGllbnQg
ZWRpdG9yIGNhbiByZXNpemUgdG8gYmUgcXVpdGUgdGFsbCwgbGV0J3MgYXZvaWQgZGlzcGxheWlu
ZyB0aGUgcG9wb3ZlcgorICAgICAgICAvLyBhYm92ZSB0aGUgZWRpdGVkIHZhbHVlIHNvIHRoYXQg
aXQgbWF5IG5vdCBjaGFuZ2Ugd2hpY2ggZWRnZSBpdCBhdHRhY2hlcyB0byB1cG9uIGVkaXRpbmcg
YSBzdG9wLgorICAgICAgICByZXR1cm4gW1dlYkluc3BlY3Rvci5SZWN0RWRnZS5NSU5fWCwgV2Vi
SW5zcGVjdG9yLlJlY3RFZGdlLk1BWF9ZLCBXZWJJbnNwZWN0b3IuUmVjdEVkZ2UuTUFYX1hdOwor
ICAgIH0sCisKKyAgICBwb3BvdmVyVGFyZ2V0RnJhbWVXaXRoUmVjdHM6IGZ1bmN0aW9uKHJlY3Rz
KQorICAgIHsKKyAgICAgICAgLy8gSWYgYSBncmFkaWVudCBpcyBkZWZpbmVkIGFjcm9zcyBzZXZl
cmFsIGxpbmVzLCB3ZSBwcm9iYWJseSB3YW50IHRvIHVzZSB0aGUgZmlyc3QgbGluZSBvbmx5Cisg
ICAgICAgIC8vIGFzIGEgdGFyZ2V0IGZyYW1lIGZvciB0aGUgZWRpdG9yIHNpbmNlIHdlIG1heSBy
ZWZvcm1hdCB0aGUgZ3JhZGllbnQgdmFsdWUgdG8gZml0IG9uIGEgc2luZ2xlIGxpbmUuCisgICAg
ICAgIHJldHVybiByZWN0c1swXTsKKyAgICB9LAorCisgICAgcG9wb3ZlcldpbGxQcmVzZW50OiBm
dW5jdGlvbihwb3BvdmVyKQorICAgIHsKKyAgICAgICAgdGhpcy5fY29udGFpbmVyID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIHRoaXMuX2NvbnRhaW5lci5jbGFzc05h
bWUgPSBXZWJJbnNwZWN0b3IuQ29kZU1pcnJvckdyYWRpZW50RWRpdGluZ0NvbnRyb2xsZXIuU3R5
bGVDbGFzc05hbWU7CisKKyAgICAgICAgdGhpcy5fZ3JhZGllbnRUeXBlUGlja2VyID0gdGhpcy5f
Y29udGFpbmVyLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIpKTsK
KyAgICAgICAgZm9yICh2YXIgdHlwZSBpbiBXZWJJbnNwZWN0b3IuQ29kZU1pcnJvckdyYWRpZW50
RWRpdGluZ0NvbnRyb2xsZXIuR3JhZGllbnRUeXBlcykgeworICAgICAgICAgICAgdmFyIG9wdGlv
biA9IHRoaXMuX2dyYWRpZW50VHlwZVBpY2tlci5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJvcHRpb24iKSk7CisgICAgICAgICAgICBvcHRpb24udmFsdWUgPSB0eXBlOworICAg
ICAgICAgICAgb3B0aW9uLmlubmVyVGV4dCA9IFdlYkluc3BlY3Rvci5Db2RlTWlycm9yR3JhZGll
bnRFZGl0aW5nQ29udHJvbGxlci5HcmFkaWVudFR5cGVzW3R5cGVdLmxhYmVsOworICAgICAgICB9
CisgICAgICAgIHRoaXMuX2dyYWRpZW50VHlwZVBpY2tlci5hZGRFdmVudExpc3RlbmVyKCJjaGFu
Z2UiLCB0aGlzKTsKKworICAgICAgICB0aGlzLl9ncmFkaWVudFNsaWRlciA9IG5ldyBXZWJJbnNw
ZWN0b3IuR3JhZGllbnRTbGlkZXI7CisgICAgICAgIHRoaXMuX2NvbnRhaW5lci5hcHBlbmRDaGls
ZCh0aGlzLl9ncmFkaWVudFNsaWRlci5lbGVtZW50KTsKKworICAgICAgICB0aGlzLl9jb2xvclBp
Y2tlciA9IG5ldyBXZWJJbnNwZWN0b3IuQ29sb3JQaWNrZXI7CisgICAgICAgIHRoaXMuX2NvbG9y
UGlja2VyLmNvbG9yV2hlZWwuZGltZW5zaW9uID0gMTkwOworICAgICAgICB0aGlzLl9jb2xvclBp
Y2tlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Db2xvclBpY2tlci5FdmVudC5Db2xv
ckNoYW5nZWQsIHRoaXMuX2NvbG9yUGlja2VyQ29sb3JDaGFuZ2VkLCB0aGlzKTsKKworICAgICAg
ICB2YXIgYW5nbGVMYWJlbCA9IHRoaXMuX2NvbnRhaW5lci5hcHBlbmRDaGlsZChkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJsYWJlbCIpKTsKKyAgICAgICAgYW5nbGVMYWJlbC50ZXh0Q29udGVudCA9
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQW5nbGUiKTsKKworICAgICAgICB0aGlzLl9hbmdsZUlu
cHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKKyAgICAgICAgdGhpcy5fYW5n
bGVJbnB1dC50eXBlID0gInRleHQiOworICAgICAgICB0aGlzLl9hbmdsZUlucHV0LnNpemUgPSAz
OworICAgICAgICB0aGlzLl9hbmdsZUlucHV0LmFkZEV2ZW50TGlzdGVuZXIoImlucHV0IiwgdGhp
cyk7CisgICAgICAgIGFuZ2xlTGFiZWwuYXBwZW5kQ2hpbGQodGhpcy5fYW5nbGVJbnB1dCk7CisK
KyAgICAgICAgdGhpcy5fdXBkYXRlQ1NTQ2xhc3NGb3JHcmFkaWVudFR5cGUoKTsKKworICAgICAg
ICBwb3BvdmVyLmNvbnRlbnQgPSB0aGlzLl9jb250YWluZXI7CisgICAgfSwKKworICAgIHBvcG92
ZXJEaWRQcmVzZW50OiBmdW5jdGlvbihwb3BvdmVyKQorICAgIHsKKyAgICAgICAgdGhpcy5fZ3Jh
ZGllbnRTbGlkZXIuc3RvcHMgPSB0aGlzLnZhbHVlLnN0b3BzOworCisgICAgICAgIGlmICh0aGlz
LnZhbHVlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkxpbmVhckdyYWRpZW50KSB7CisgICAgICAg
ICAgICB0aGlzLl9ncmFkaWVudFR5cGVQaWNrZXIudmFsdWUgPSB0aGlzLnZhbHVlLnJlcGVhdHMg
PyAicmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCIgOiAibGluZWFyLWdyYWRpZW50IjsKKyAgICAg
ICAgICAgIHRoaXMuX2FuZ2xlSW5wdXQudmFsdWUgPSB0aGlzLnZhbHVlLmFuZ2xlICsgIsK6IjsK
KyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICB0aGlzLl9ncmFkaWVudFR5cGVQaWNrZXIudmFs
dWUgPSB0aGlzLnZhbHVlLnJlcGVhdHMgPyAicmVwZWF0aW5nLXJhZGlhbC1ncmFkaWVudCIgOiAi
cmFkaWFsLWdyYWRpZW50IgorCisgICAgICAgIHRoaXMuX2dyYWRpZW50U2xpZGVyLmRlbGVnYXRl
ID0gdGhpczsKKyAgICB9LAorCisgICAgLy8gUHJvdGVjdGVkCisKKyAgICBoYW5kbGVFdmVudDog
ZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICBpZiAoZXZlbnQudHlwZSA9PT0gImlucHV0
IikKKyAgICAgICAgICAgIHRoaXMuX2hhbmRsZUlucHV0RXZlbnQoZXZlbnQpOworICAgICAgICBl
bHNlIGlmIChldmVudC50eXBlID09PSAiY2hhbmdlIikKKyAgICAgICAgICAgIHRoaXMuX2hhbmRs
ZUNoYW5nZUV2ZW50KGV2ZW50KTsKKyAgICB9LAorCisgICAgZ3JhZGllbnRTbGlkZXJTdG9wc0Rp
ZENoYW5nZTogZnVuY3Rpb24oZ3JhZGllbnRTbGlkZXIpCisgICAgeworICAgICAgICB0aGlzLnRl
eHQgPSB0aGlzLnZhbHVlLnRvU3RyaW5nKCk7CisgICAgfSwKKyAgICAKKyAgICBncmFkaWVudFNs
aWRlclN0b3BXYXNTZWxlY3RlZDogZnVuY3Rpb24oZ3JhZGllbnRTbGlkZXIsIHN0b3ApCisgICAg
eworICAgICAgICB2YXIgc2VsZWN0ZWRTdG9wID0gZ3JhZGllbnRTbGlkZXIuc2VsZWN0ZWRTdG9w
OworCisgICAgICAgIGlmIChzZWxlY3RlZFN0b3AgJiYgIXRoaXMuX2NvbnRhaW5lci5jbGFzc0xp
c3QuY29udGFpbnMoV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JHcmFkaWVudEVkaXRpbmdDb250cm9s
bGVyLkVkaXRzQ29sb3JDbGFzc05hbWUpKSB7CisgICAgICAgICAgICB0aGlzLl9jb250YWluZXIu
YXBwZW5kQ2hpbGQodGhpcy5fY29sb3JQaWNrZXIuZWxlbWVudCk7CisgICAgICAgICAgICB0aGlz
Ll9jb250YWluZXIuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuQ29kZU1pcnJvckdyYWRpZW50
RWRpdGluZ0NvbnRyb2xsZXIuRWRpdHNDb2xvckNsYXNzTmFtZSk7CisgICAgICAgICAgICB0aGlz
Ll9jb2xvclBpY2tlci5jb2xvciA9IHNlbGVjdGVkU3RvcC5jb2xvcjsKKyAgICAgICAgfSBlbHNl
IGlmICghc2VsZWN0ZWRTdG9wKSB7CisgICAgICAgICAgICB0aGlzLl9jb2xvclBpY2tlci5lbGVt
ZW50LnJlbW92ZSgpOworICAgICAgICAgICAgdGhpcy5fY29udGFpbmVyLmNsYXNzTGlzdC5yZW1v
dmUoV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JHcmFkaWVudEVkaXRpbmdDb250cm9sbGVyLkVkaXRz
Q29sb3JDbGFzc05hbWUpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB0aGlzLnBvcG92
ZXIudXBkYXRlKCk7CisgICAgfSwKKworICAgIC8vIFByaXZhdGUKKworICAgIF9oYW5kbGVJbnB1
dEV2ZW50OiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHZhciBhbmdsZSA9IHBhcnNl
RmxvYXQodGhpcy5fYW5nbGVJbnB1dC52YWx1ZSk7CisgICAgICAgIGlmIChpc05hTihhbmdsZSkp
CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy52YWx1ZS5hbmdsZSA9IGFuZ2xl
OworICAgICAgICB0aGlzLnRleHQgPSB0aGlzLnZhbHVlLnRvU3RyaW5nKCk7CisKKyAgICAgICAg
dmFyIG1hdGNoZXMgPSB0aGlzLl9hbmdsZUlucHV0LnZhbHVlLm1hdGNoKC/Cui9nKTsKKyAgICAg
ICAgaWYgKCFtYXRjaGVzIHx8IG1hdGNoZXMubGVuZ3RoICE9PSAxKSB7CisgICAgICAgICAgICB2
YXIgc2VsZWN0aW9uU3RhcnQgPSB0aGlzLl9hbmdsZUlucHV0LnNlbGVjdGlvblN0YXJ0OworICAg
ICAgICAgICAgdGhpcy5fYW5nbGVJbnB1dC52YWx1ZSA9IGFuZ2xlICsgIsK6IjsKKyAgICAgICAg
ICAgIHRoaXMuX2FuZ2xlSW5wdXQuc2VsZWN0aW9uU3RhcnQgPSBzZWxlY3Rpb25TdGFydDsKKyAg
ICAgICAgICAgIHRoaXMuX2FuZ2xlSW5wdXQuc2VsZWN0aW9uRW5kID0gc2VsZWN0aW9uU3RhcnQ7
CisgICAgICAgIH0KKyAgICB9LAorCisgICAgX2hhbmRsZUNoYW5nZUV2ZW50OiBmdW5jdGlvbihl
dmVudCkKKyAgICB7CisgICAgICAgIHZhciBkZXNjcmlwdG9yID0gV2ViSW5zcGVjdG9yLkNvZGVN
aXJyb3JHcmFkaWVudEVkaXRpbmdDb250cm9sbGVyLkdyYWRpZW50VHlwZXNbdGhpcy5fZ3JhZGll
bnRUeXBlUGlja2VyLnZhbHVlXTsKKyAgICAgICAgaWYgKCEodGhpcy52YWx1ZSBpbnN0YW5jZW9m
IGRlc2NyaXB0b3IudHlwZSkpIHsKKyAgICAgICAgICAgIGlmIChkZXNjcmlwdG9yLnR5cGUgPT09
IFdlYkluc3BlY3Rvci5MaW5lYXJHcmFkaWVudCkgeworICAgICAgICAgICAgICAgIHRoaXMudmFs
dWUgPSBuZXcgV2ViSW5zcGVjdG9yLkxpbmVhckdyYWRpZW50KDE4MCwgdGhpcy52YWx1ZS5zdG9w
cyk7CisgICAgICAgICAgICAgICAgdGhpcy5fYW5nbGVJbnB1dC52YWx1ZSA9ICIxODDCuiI7Cisg
ICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gbmV3IFdlYklu
c3BlY3Rvci5SYWRpYWxHcmFkaWVudCgiIiwgdGhpcy52YWx1ZS5zdG9wcyk7CisKKyAgICAgICAg
ICAgIHRoaXMuX3VwZGF0ZUNTU0NsYXNzRm9yR3JhZGllbnRUeXBlKCk7CisgICAgICAgICAgICB0
aGlzLnBvcG92ZXIudXBkYXRlKCk7CisgICAgICAgIH0KKyAgICAgICAgdGhpcy52YWx1ZS5yZXBl
YXRzID0gZGVzY3JpcHRvci5yZXBlYXRzOworICAgICAgICB0aGlzLnRleHQgPSB0aGlzLnZhbHVl
LnRvU3RyaW5nKCk7CisgICAgfSwKKworICAgIF9jb2xvclBpY2tlckNvbG9yQ2hhbmdlZDogZnVu
Y3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICB0aGlzLl9ncmFkaWVudFNsaWRlci5zZWxlY3Rl
ZFN0b3AuY29sb3IgPSBldmVudC50YXJnZXQuY29sb3I7CisgICAgICAgIHRoaXMuX2dyYWRpZW50
U2xpZGVyLnN0b3BzID0gdGhpcy52YWx1ZS5zdG9wczsKKyAgICAgICAgdGhpcy50ZXh0ID0gdGhp
cy52YWx1ZS50b1N0cmluZygpOworICAgIH0sCisgICAgCisgICAgX3VwZGF0ZUNTU0NsYXNzRm9y
R3JhZGllbnRUeXBlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBpZiAodGhpcy52YWx1ZSBp
bnN0YW5jZW9mIFdlYkluc3BlY3Rvci5MaW5lYXJHcmFkaWVudCkKKyAgICAgICAgICAgIHRoaXMu
X2NvbnRhaW5lci5jbGFzc0xpc3QucmVtb3ZlKFdlYkluc3BlY3Rvci5Db2RlTWlycm9yR3JhZGll
bnRFZGl0aW5nQ29udHJvbGxlci5SYWRpYWxHcmFkaWVudENsYXNzTmFtZSk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIHRoaXMuX2NvbnRhaW5lci5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rv
ci5Db2RlTWlycm9yR3JhZGllbnRFZGl0aW5nQ29udHJvbGxlci5SYWRpYWxHcmFkaWVudENsYXNz
TmFtZSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvQ29sb3JQaWNrZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Db2xvclBpY2tlci5qcwppbmRleCBmYTUwZTA1ZWU0ZTBmZWMzODllMDhlMzFkNjFhMjg3
ODYxMDc4OTQ2Li5jOTkyYzNjMDQwOTQ4MjMwNTlhNzY0NjYzMWU5ZDNhMDI3ZDNjN2U2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db2xvclBpY2tlci5q
cworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db2xvclBpY2tlci5q
cwpAQCAtNDYsNyArNDYsNyBAQCBXZWJJbnNwZWN0b3IuQ29sb3JQaWNrZXIgPSBmdW5jdGlvbigp
CiAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9icmlnaHRuZXNzU2xpZGVyLmVs
ZW1lbnQpOwogICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fb3BhY2l0eVNsaWRl
ci5lbGVtZW50KTsKIAotICAgIHRoaXMuX29wYWNpdHlQYXR0ZXJuID0gJ3VybCgiZGF0YTppbWFn
ZS9zdmcreG1sO2Jhc2U2NCwnICsgYnRvYSgnPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHdpZHRoPSI2IiBoZWlnaHQ9IjYiIGZpbGw9InJnYigyMDQsIDIwNCwgMjA0KSI+
PHJlY3Qgd2lkdGg9IjMiIGhlaWdodD0iMyIgLz48cmVjdCB4PSIzIiB5PSIzIiB3aWR0aD0iMyIg
aGVpZ2h0PSIzIi8+PC9zdmc+JykgKyAnIiknOworICAgIHRoaXMuX29wYWNpdHlQYXR0ZXJuID0g
J3VybChJbWFnZXMvQ2hlY2tlcnMuc3ZnKSc7CiAKICAgICB0aGlzLl9jb2xvciA9ICJ3aGl0ZSI7
CiB9OwpAQCAtODYsNiArODYsMTEgQEAgV2ViSW5zcGVjdG9yLkNvbG9yUGlja2VyLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgdGhpcy5fdXBkYXRlQ29sb3IoKTsKICAgICB9LAogCisgICAgZ2V0IGNv
bG9yV2hlZWwoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2NvbG9yV2hlZWw7CisgICAg
fSwKKwogICAgIGdldCBjb2xvcigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fY29sb3I7
CkBAIC0xMjgsOCArMTMzLDE0IEBAIFdlYkluc3BlY3Rvci5Db2xvclBpY2tlci5wcm90b3R5cGUg
PSB7CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgdmFyIG9wYWNpdHkgPSBNYXRoLnJv
dW5kKHRoaXMuX29wYWNpdHkgKiAxMDApIC8gMTAwOwotICAgICAgICB2YXIgcmdiYSA9IHRoaXMu
X2NvbG9yV2hlZWwudGludGVkQ29sb3IucmdiLmNvbmNhdChvcGFjaXR5KTsKLSAgICAgICAgdGhp
cy5fY29sb3IgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbG9yKFdlYkluc3BlY3Rvci5Db2xvci5Gb3Jt
YXQuUkdCQSwgcmdiYSkudG9TdHJpbmcodGhpcy5fY29sb3JGb3JtYXQpOworCisgICAgICAgIHZh
ciBjb21wb25lbnRzOworICAgICAgICBpZiAodGhpcy5fY29sb3JGb3JtYXQgPT09IFdlYkluc3Bl
Y3Rvci5Db2xvci5Gb3JtYXQuSFNMIHx8IHRoaXMuX2NvbG9yRm9ybWF0ID09PSBXZWJJbnNwZWN0
b3IuQ29sb3IuRm9ybWF0LkhTTEEpCisgICAgICAgICAgICBjb21wb25lbnRzID0gdGhpcy5fY29s
b3JXaGVlbC50aW50ZWRDb2xvci5oc2wuY29uY2F0KG9wYWNpdHkpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBjb21wb25lbnRzID0gdGhpcy5fY29sb3JXaGVlbC50aW50ZWRDb2xvci5yZ2Iu
Y29uY2F0KG9wYWNpdHkpOworCisgICAgICAgIHRoaXMuX2NvbG9yID0gbmV3IFdlYkluc3BlY3Rv
ci5Db2xvcih0aGlzLl9jb2xvckZvcm1hdCwgY29tcG9uZW50cyk7CiAgICAgICAgIHRoaXMuZGlz
cGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5Db2xvclBpY2tlci5FdmVudC5Db2xv
ckNoYW5nZWQsIHtjb2xvcjogdGhpcy5fY29sb3J9KTsKICAgICB9LAogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9HcmFkaWVudC5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0dyYWRpZW50LmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjExNmQ2
NjM2OTg5ZGIxNmQ2MTFhN2UzNmU0YjIwNjE5Mjg5M2UyOTkKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9HcmFkaWVudC5qcwpAQCAtMCwwICsx
LDI2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKK1dlYkluc3BlY3Rvci5HcmFkaWVudCA9IHsKKyAgICBUeXBl
cyA6IHsKKyAgICAgICAgTGluZWFyOiAibGluZWFyLWdyYWRpZW50IiwKKyAgICAgICAgUmFkaWFs
OiAicmFkaWFsLWdyYWRpZW50IgorICAgIH0sCisgICAgCisgICAgZnJvbVN0cmluZzogZnVuY3Rp
b24oY3NzU3RyaW5nKQorICAgIHsKKyAgICAgICAgdmFyIHR5cGU7CisgICAgICAgIHZhciBvcGVu
aW5nUGFyZW50aGVzaXNJbmRleCA9IGNzc1N0cmluZy5pbmRleE9mKCIoIik7CisgICAgICAgIHZh
ciB0eXBlU3RyaW5nID0gY3NzU3RyaW5nLnN1YnN0cmluZygwLCBvcGVuaW5nUGFyZW50aGVzaXNJ
bmRleCk7CisgICAgICAgIGlmICh0eXBlU3RyaW5nLmluZGV4T2YoV2ViSW5zcGVjdG9yLkdyYWRp
ZW50LlR5cGVzLkxpbmVhcikgIT09IC0xKQorICAgICAgICAgICAgdHlwZSA9IFdlYkluc3BlY3Rv
ci5HcmFkaWVudC5UeXBlcy5MaW5lYXI7CisgICAgICAgIGVsc2UgaWYgKHR5cGVTdHJpbmcuaW5k
ZXhPZihXZWJJbnNwZWN0b3IuR3JhZGllbnQuVHlwZXMuUmFkaWFsKSAhPT0gLTEpCisgICAgICAg
ICAgICB0eXBlID0gV2ViSW5zcGVjdG9yLkdyYWRpZW50LlR5cGVzLlJhZGlhbDsKKyAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICBjb25zb2xlLmVycm9yKCJDb3VsZG4ndCBwYXJzZSBhbmdsZSBc
IiIgKyB0eXBlU3RyaW5nICsgIlwiIik7CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAg
ICAgfQorCisgICAgICAgIHZhciBjb21wb25lbnRzID0gW107CisgICAgICAgIHZhciBjdXJyZW50
UGFyYW1zID0gW107CisgICAgICAgIHZhciBjdXJyZW50UGFyYW0gPSAiIjsKKyAgICAgICAgdmFy
IG9wZW5QYXJlbnRoZXNlcyA9IDA7CisgICAgICAgIHZhciBjaCA9IG9wZW5pbmdQYXJlbnRoZXNp
c0luZGV4ICsgMTsKKyAgICAgICAgd2hpbGUgKGMgPSBjc3NTdHJpbmdbY2hdKSB7CisgICAgICAg
ICAgICBpZiAoYyA9PT0gIigiKQorICAgICAgICAgICAgICAgIG9wZW5QYXJlbnRoZXNlcysrOwor
ICAgICAgICAgICAgaWYgKGMgPT09ICIpIikKKyAgICAgICAgICAgICAgICBvcGVuUGFyZW50aGVz
ZXMtLTsKKworICAgICAgICAgICAgdmFyIGlzQ29tbWEgPSBjID09PSAiLCI7CisgICAgICAgICAg
ICB2YXIgaXNTcGFjZSA9IC9ccy8udGVzdChjKTsKKworICAgICAgICAgICAgaWYgKG9wZW5QYXJl
bnRoZXNlcyA9PT0gMCkgeworICAgICAgICAgICAgICAgIGlmIChpc1NwYWNlKSB7CisgICAgICAg
ICAgICAgICAgICAgIGlmIChjdXJyZW50UGFyYW0gIT09ICIiKQorICAgICAgICAgICAgICAgICAg
ICAgICAgY3VycmVudFBhcmFtcy5wdXNoKGN1cnJlbnRQYXJhbSk7CisgICAgICAgICAgICAgICAg
ICAgIGN1cnJlbnRQYXJhbSA9ICIiOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNDb21t
YSkgeworICAgICAgICAgICAgICAgICAgICBjdXJyZW50UGFyYW1zLnB1c2goY3VycmVudFBhcmFt
KTsKKyAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50cy5wdXNoKGN1cnJlbnRQYXJhbXMpOwor
ICAgICAgICAgICAgICAgICAgICBjdXJyZW50UGFyYW1zID0gW107CisgICAgICAgICAgICAgICAg
ICAgIGN1cnJlbnRQYXJhbSA9ICIiOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgaWYgKG9wZW5QYXJlbnRoZXNlcyA9PT0gLTEpIHsKKyAgICAgICAgICAg
ICAgICBjdXJyZW50UGFyYW1zLnB1c2goY3VycmVudFBhcmFtKTsKKyAgICAgICAgICAgICAgICBj
b21wb25lbnRzLnB1c2goY3VycmVudFBhcmFtcyk7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChvcGVuUGFyZW50aGVzZXMgPiAwIHx8ICgh
aXNDb21tYSAmJiAhaXNTcGFjZSkpCisgICAgICAgICAgICAgICAgY3VycmVudFBhcmFtICs9IGM7
CisKKyAgICAgICAgICAgIGNoKys7CisgICAgICAgIH0KKworICAgICAgICB2YXIgZ3JhZGllbnQ7
CisgICAgICAgIGlmICh0eXBlID09PSBXZWJJbnNwZWN0b3IuR3JhZGllbnQuVHlwZXMuTGluZWFy
KQorICAgICAgICAgICAgZ3JhZGllbnQgPSBXZWJJbnNwZWN0b3IuTGluZWFyR3JhZGllbnQubGlu
ZWFyR3JhZGllbnRXaXRoQ29tcG9uZW50cyhjb21wb25lbnRzKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgZ3JhZGllbnQgPSBXZWJJbnNwZWN0b3IuUmFkaWFsR3JhZGllbnQucmFkaWFsR3Jh
ZGllbnRXaXRoQ29tcG9uZW50cyhjb21wb25lbnRzKTsKKyAgICAKKyAgICAgICAgaWYgKGdyYWRp
ZW50KQorICAgICAgICAgICAgZ3JhZGllbnQucmVwZWF0cyA9IHR5cGVTdHJpbmcuaW5kZXhPZigi
cmVwZWF0aW5nIikgPT09IDA7CisgICAgCisgICAgICAgIHJldHVybiBncmFkaWVudDsKKyAgICB9
LAorICAgIAorICAgIHN0b3BzV2l0aENvbXBvbmVudHM6IGZ1bmN0aW9uKGNvbXBvbmVudHMpCisg
ICAgeworICAgICAgICAvLyBGSVhNRTogaGFuZGxlIGxlbmd0aHMuCisgICAgICAgIHZhciBzdG9w
cyA9IGNvbXBvbmVudHMubWFwKGZ1bmN0aW9uKGNvbXBvbmVudCkgeworICAgICAgICAgICAgd2hp
bGUgKGNvbXBvbmVudC5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICB2YXIgY29sb3IgPSBXZWJJ
bnNwZWN0b3IuQ29sb3IuZnJvbVN0cmluZyhjb21wb25lbnQuc2hpZnQoKSk7CisgICAgICAgICAg
ICAgICAgaWYgKCFjb2xvcikKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAg
ICAgICAgICAgICB2YXIgc3RvcCA9IHtjb2xvcjogY29sb3J9OworICAgICAgICAgICAgICAgIGlm
IChjb21wb25lbnQubGVuZ3RoICYmIGNvbXBvbmVudFswXS5zdWJzdHIoLTEpID09PSAiJSIpCisg
ICAgICAgICAgICAgICAgICAgIHN0b3Aub2Zmc2V0ID0gcGFyc2VGbG9hdChjb21wb25lbnQuc2hp
ZnQoKSkgLyAxMDA7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0b3A7CisgICAgICAgICAgICB9
CisgICAgICAgIH0pOworCisgICAgICAgIGlmICghc3RvcHMubGVuZ3RoKSB7CisgICAgICAgICAg
ICBjb25zb2xlLmVycm9yKCJDb3VsZG4ndCBwYXJzZSBhbnkgc3RvcHMiKTsKKyAgICAgICAgICAg
IHJldHVybiBudWxsOworICAgICAgICB9CisKKyAgICAgICAgZm9yICh2YXIgaSA9IDAsIGNvdW50
ID0gc3RvcHMubGVuZ3RoOyBpIDwgY291bnQ7ICsraSkgeworICAgICAgICAgICAgdmFyIHN0b3Ag
PSBzdG9wc1tpXTsKKyAgICAgICAgICAgIGlmICghc3RvcC5vZmZzZXQpCisgICAgICAgICAgICAg
ICAgc3RvcC5vZmZzZXQgPSBpIC8gKGNvdW50IC0gMSk7CisgICAgICAgIH0KKworICAgICAgICBy
ZXR1cm4gc3RvcHM7CisgICAgfSwKKyAgICAKKyAgICBzdHJpbmdGcm9tU3RvcHM6IGZ1bmN0aW9u
KHN0b3BzKQorICAgIHsKKyAgICAgICAgdmFyIGNvdW50ID0gc3RvcHMubGVuZ3RoIC0gMTsKKyAg
ICAgICAgcmV0dXJuIHN0b3BzLm1hcChmdW5jdGlvbihzdG9wLCBpbmRleCkgeworICAgICAgICAg
ICAgdmFyIHN0ciA9IHN0b3AuY29sb3I7CisgICAgICAgICAgICBpZiAoc3RvcC5vZmZzZXQgIT09
IGluZGV4IC8gY291bnQpCisgICAgICAgICAgICAgICAgc3RyICs9ICIgIiArIE1hdGgucm91bmQo
c3RvcC5vZmZzZXQgKiAxMDAwMCkgLyAxMDAgKyAiJSI7CisgICAgICAgICAgICByZXR1cm4gc3Ry
OworICAgICAgICB9KS5qb2luKCIsICIpOworICAgIH0KK307CisKK1dlYkluc3BlY3Rvci5MaW5l
YXJHcmFkaWVudCA9IGZ1bmN0aW9uKGFuZ2xlLCBzdG9wcykKK3sKKyAgICB0aGlzLnR5cGUgPSBX
ZWJJbnNwZWN0b3IuR3JhZGllbnQuVHlwZXMuTGluZWFyOworICAgIHRoaXMuYW5nbGUgPSBhbmds
ZTsKKyAgICB0aGlzLnN0b3BzID0gc3RvcHM7Cit9CisKK1dlYkluc3BlY3Rvci5MaW5lYXJHcmFk
aWVudC5saW5lYXJHcmFkaWVudFdpdGhDb21wb25lbnRzID0gZnVuY3Rpb24oY29tcG9uZW50cykK
K3sKKyAgICB2YXIgYW5nbGUgPSAxODA7CisKKyAgICBpZiAoY29tcG9uZW50c1swXS5sZW5ndGgg
PT09IDEgJiYgY29tcG9uZW50c1swXVswXS5zdWJzdHIoLTMpID09PSAiZGVnIikgeworICAgICAg
ICBhbmdsZSA9IChwYXJzZUZsb2F0KGNvbXBvbmVudHNbMF1bMF0pICUgMzYwICsgMzYwKSAlIDM2
MDsKKyAgICAgICAgY29tcG9uZW50cy5zaGlmdCgpOworICAgIH0gZWxzZSBpZiAoY29tcG9uZW50
c1swXVswXSA9PT0gInRvIikgeworICAgICAgICBjb21wb25lbnRzWzBdLnNoaWZ0KCk7CisgICAg
ICAgIHN3aXRjaCAoY29tcG9uZW50c1swXS5zb3J0KCkuam9pbigiICIpKSB7CisgICAgICAgIGNh
c2UgInRvcCI6CisgICAgICAgICAgICBhbmdsZSA9IDA7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSAicmlnaHQgdG9wIjoKKyAgICAgICAgICAgIGFuZ2xlID0gNDU7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSAicmlnaHQiOgorICAgICAgICAgICAgYW5nbGUgPSA5
MDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICJib3R0b20gcmlnaHQiOgorICAg
ICAgICAgICAgYW5nbGUgPSAxMzU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAi
Ym90dG9tIjoKKyAgICAgICAgICAgIGFuZ2xlID0gMTgwOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgImJvdHRvbSBsZWZ0IjoKKyAgICAgICAgICAgIGFuZ2xlID0gMjI1OworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgImxlZnQiOgorICAgICAgICAgICAgYW5nbGUg
PSAyNzA7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAibGVmdCB0b3AiOgorICAg
ICAgICAgICAgYW5nbGUgPSAzMTU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIkNvdWxkbid0IHBhcnNlIGFuZ2xlIFwidG8g
IiArIGNvbXBvbmVudHNbMF0uam9pbigiICIpICsgIlwiIik7CisgICAgICAgICAgICByZXR1cm4g
bnVsbDsKKyAgICAgICAgfQorICAgICAgICBjb21wb25lbnRzLnNoaWZ0KCk7CisgICAgfQorCisg
ICAgdmFyIHN0b3BzID0gV2ViSW5zcGVjdG9yLkdyYWRpZW50LnN0b3BzV2l0aENvbXBvbmVudHMo
Y29tcG9uZW50cyk7CisgICAgaWYgKCFzdG9wcykKKyAgICAgICAgcmV0dXJuIG51bGw7CisKKyAg
ICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5MaW5lYXJHcmFkaWVudChhbmdsZSwgc3RvcHMpOwor
fQorCitXZWJJbnNwZWN0b3IuTGluZWFyR3JhZGllbnQucHJvdG90eXBlID0geworICAgIGNvbnN0
cnVjdG9yOiBXZWJJbnNwZWN0b3IuTGluZWFyR3JhZGllbnQsCisKKyAgICBjb3B5OiBmdW5jdGlv
bigpCisgICAgeworICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5MaW5lYXJHcmFkaWVu
dCh0aGlzLmFuZ2xlLCB0aGlzLnN0b3BzLmNvbmNhdCgpKTsKKyAgICB9LAorCisgICAgdG9TdHJp
bmc6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBzdHIgPSAiIjsKKworICAgICAgICBp
ZiAodGhpcy5hbmdsZSA9PT0gMCkKKyAgICAgICAgICAgIHN0ciArPSAidG8gdG9wIjsKKyAgICAg
ICAgZWxzZSBpZiAodGhpcy5hbmdsZSA9PT0gNDUpCisgICAgICAgICAgICBzdHIgKz0gInRvIHRv
cCByaWdodCI7CisgICAgICAgIGVsc2UgaWYgKHRoaXMuYW5nbGUgPT09IDkwKQorICAgICAgICAg
ICAgc3RyICs9ICJ0byByaWdodCI7CisgICAgICAgIGVsc2UgaWYgKHRoaXMuYW5nbGUgPT09IDEz
NSkKKyAgICAgICAgICAgIHN0ciArPSAidG8gYm90dG9tIHJpZ2h0IjsKKyAgICAgICAgZWxzZSBp
ZiAodGhpcy5hbmdsZSA9PT0gMjI1KQorICAgICAgICAgICAgc3RyICs9ICJ0byBib3R0b20gbGVm
dCI7CisgICAgICAgIGVsc2UgaWYgKHRoaXMuYW5nbGUgPT09IDI3MCkKKyAgICAgICAgICAgIHN0
ciArPSAidG8gbGVmdCI7CisgICAgICAgIGVsc2UgaWYgKHRoaXMuYW5nbGUgPT09IDMxNSkKKyAg
ICAgICAgICAgIHN0ciArPSAidG8gdG9wIGxlZnQiOworICAgICAgICBlbHNlIGlmICh0aGlzLmFu
Z2xlICE9PSAxODApCisgICAgICAgICAgICBzdHIgKz0gdGhpcy5hbmdsZSArICJkZWciOworCisg
ICAgICAgIGlmIChzdHIgIT09ICIiKQorICAgICAgICAgICAgc3RyICs9ICIsICI7CisKKyAgICAg
ICAgc3RyICs9IFdlYkluc3BlY3Rvci5HcmFkaWVudC5zdHJpbmdGcm9tU3RvcHModGhpcy5zdG9w
cyk7CisKKyAgICAgICAgcmV0dXJuICh0aGlzLnJlcGVhdHMgPyAicmVwZWF0aW5nLSIgOiAiIikg
KyB0aGlzLnR5cGUgKyAiKCIgKyBzdHIgKyAiKSI7CisgICAgfQorfQorCitXZWJJbnNwZWN0b3Iu
UmFkaWFsR3JhZGllbnQgPSBmdW5jdGlvbihzaXppbmcsIHN0b3BzKQoreworICAgIHRoaXMudHlw
ZSA9IFdlYkluc3BlY3Rvci5HcmFkaWVudC5UeXBlcy5SYWRpYWw7CisgICAgdGhpcy5zaXppbmcg
PSBzaXppbmc7CisgICAgdGhpcy5zdG9wcyA9IHN0b3BzOworfQorCitXZWJJbnNwZWN0b3IuUmFk
aWFsR3JhZGllbnQucmFkaWFsR3JhZGllbnRXaXRoQ29tcG9uZW50cyA9IGZ1bmN0aW9uKGNvbXBv
bmVudHMpCit7CisgICAgdmFyIHNpemluZyA9ICFXZWJJbnNwZWN0b3IuQ29sb3IuZnJvbVN0cmlu
Zyhjb21wb25lbnRzWzBdLmpvaW4oIiAiKSkgPyBjb21wb25lbnRzLnNoaWZ0KCkuam9pbigiICIp
IDogIiI7CisKKyAgICB2YXIgc3RvcHMgPSBXZWJJbnNwZWN0b3IuR3JhZGllbnQuc3RvcHNXaXRo
Q29tcG9uZW50cyhjb21wb25lbnRzKTsKKyAgICBpZiAoIXN0b3BzKQorICAgICAgICByZXR1cm4g
bnVsbDsKKworICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlJhZGlhbEdyYWRpZW50KHNpemlu
Zywgc3RvcHMpOworfQorCitXZWJJbnNwZWN0b3IuUmFkaWFsR3JhZGllbnQucHJvdG90eXBlID0g
eworICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuUmFkaWFsR3JhZGllbnQsCisKKyAgICBj
b3B5OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5S
YWRpYWxHcmFkaWVudCh0aGlzLnNpemluZywgdGhpcy5zdG9wcy5jb25jYXQoKSk7CisgICAgfSwK
KworICAgIHRvU3RyaW5nOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgc3RyID0gdGhp
cy5zaXppbmc7CisKKyAgICAgICAgaWYgKHN0ciAhPT0gIiIpCisgICAgICAgICAgICBzdHIgKz0g
IiwgIjsKKworICAgICAgICBzdHIgKz0gV2ViSW5zcGVjdG9yLkdyYWRpZW50LnN0cmluZ0Zyb21T
dG9wcyh0aGlzLnN0b3BzKTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiAodGhpcy5yZXBlYXRz
ID8gInJlcGVhdGluZy0iIDogIiIpICsgdGhpcy50eXBlICsgIigiICsgc3RyICsgIikiOworICAg
IH0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0dy
YWRpZW50U2xpZGVyLmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0dy
YWRpZW50U2xpZGVyLmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42M2M4ZjUyOTg3YmU3MjE0OWVkMmIyZWFlOTY4
MzYwMDBhNGFkMTFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvR3JhZGllbnRTbGlkZXIuY3NzCkBAIC0wLDAgKzEsMTA2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwg
SW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAg
ICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisg
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLmdyYWRp
ZW50LXNsaWRlciB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworCisgICAgbGVmdDogMjZweDsK
KyAgICB3aWR0aDogMjM4cHg7CisgICAgaGVpZ2h0OiAyMXB4OworCisgICAgYm9yZGVyOiAxcHgg
c29saWQgcmdiKDE0NiwgMTQ2LCAxNDYpOworfQorCisuZ3JhZGllbnQtc2xpZGVyID4gY2FudmFz
IHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgd2lkdGg6IDEwMCU7CisgICAgaGVpZ2h0
OiAxMDAlOworCisgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKEltYWdlcy9DaGVja2Vycy5zdmcp
OworICAgIGJhY2tncm91bmQtc2l6ZTogNnB4IDZweDsKK30KKworLmdyYWRpZW50LXNsaWRlciA+
IC5hZGQtYXJlYSB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIAorICAgIHRvcDogMTRw
eDsKKyAgICBsZWZ0OiAwOworICAgIGhlaWdodDogMjBweDsKKyAgICB3aWR0aDogMTAwJTsKK30K
KworLmdyYWRpZW50LXNsaWRlci1rbm9iIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisKKyAg
ICBsZWZ0OiAtMTFweDsKKyAgICB0b3A6IDEwcHg7CisgICAgd2lkdGg6IDIwcHg7CisgICAgaGVp
Z2h0OiAyNnB4OworCisgICAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1pbWFnZS1zZXQodXJs
KEltYWdlcy9HcmFkaWVudFN0b3AucG5nKSAxeCwgdXJsKEltYWdlcy9HcmFkaWVudFN0b3BAMngu
cG5nKSAyeCk7CisKKyAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDM1MG1zOworfQorCisuZ3JhZGll
bnQtc2xpZGVyLWtub2Iuc2hhZG93IHsKKyAgICBvcGFjaXR5OiAwLjU7CisgICAgcG9pbnRlci1l
dmVudHM6IG5vbmU7Cit9CisKKy5ncmFkaWVudC1zbGlkZXIta25vYi5zZWxlY3RlZCB7CisgICAg
YmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1pbWFnZS1zZXQodXJsKEltYWdlcy9HcmFkaWVudFN0
b3BTZWxlY3RlZC5wbmcpIDF4LCB1cmwoSW1hZ2VzL0dyYWRpZW50U3RvcFNlbGVjdGVkQDJ4LnBu
ZykgMngpOworfQorCisuZ3JhZGllbnQtc2xpZGVyLWtub2IuZGV0YWNoaW5nIHsKKyAgICBvcGFj
aXR5OiAwLjc1OworfQorCisuZ3JhZGllbnQtc2xpZGVyLWtub2IuZmFkZS1vdXQgeworICAgIHRy
YW5zaXRpb246IG9wYWNpdHkgMC4zNXM7CisgICAgb3BhY2l0eTogMDsKK30KKworLmdyYWRpZW50
LXNsaWRlci1rbm9iID4gaW1nLAorLmdyYWRpZW50LXNsaWRlci1rbm9iID4gZGl2IHsKKyAgICBw
b3NpdGlvbjogYWJzb2x1dGU7CisgICAgCisgICAgbGVmdDogNXB4OworICAgIHRvcDogMTJweDsK
KyAgICB3aWR0aDogMTBweDsKKyAgICBoZWlnaHQ6IDEwcHg7Cit9CisKKy5ncmFkaWVudC1zbGlk
ZXIta25vYiA+IGltZyB7CisgICAgY29udGVudDogdXJsKEltYWdlcy9DaGVja2Vycy5zdmcpOwor
fQorCisuZ3JhZGllbnQtc2xpZGVyLWtub2IgPiBkaXYgeworICAgIGJvcmRlcjogMXB4IHNvbGlk
IHJnYmEoMCwwLDAsMC4yNSk7CisKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0dyYWRpZW50U2xp
ZGVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvR3JhZGllbnRTbGlk
ZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uODkxMDQzZjI1ZjE3NDI3N2E2YmRhMWQzY2VkMmJiZjk5OWZmY2Y5
NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L0dyYWRpZW50U2xpZGVyLmpzCkBAIC0wLDAgKzEsNDUzIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE0IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxl
Iikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV2ViSW5zcGVjdG9yLkdyYWRp
ZW50U2xpZGVyID0gZnVuY3Rpb24oZGVsZWdhdGUpCit7CisgICAgdGhpcy5kZWxlZ2F0ZSA9IGRl
bGVnYXRlOworICAgIAorICAgIHRoaXMuX2VsZW1lbnQgPSBudWxsOworICAgIHRoaXMuX3N0b3Bz
ID0gW107CisgICAgdGhpcy5fa25vYnMgPSBbXTsKKyAgICAKKyAgICB0aGlzLl9zZWxlY3RlZEtu
b2IgPSBudWxsOworICAgIHRoaXMuX2NhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNh
bnZhcyIpOworCisgICAgdGhpcy5fa2V5Ym9hcmRTaG9ydGN1dEVzYyA9IG5ldyBXZWJJbnNwZWN0
b3IuS2V5Ym9hcmRTaG9ydGN1dChudWxsLCBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5L
ZXkuRXNjYXBlKTsKK30KKworV2ViSW5zcGVjdG9yLkdyYWRpZW50U2xpZGVyLldpZHRoID0gMjM4
OworV2ViSW5zcGVjdG9yLkdyYWRpZW50U2xpZGVyLkhlaWdodCA9IDE5OworCitXZWJJbnNwZWN0
b3IuR3JhZGllbnRTbGlkZXIuU3R5bGVDbGFzc05hbWUgPSAiZ3JhZGllbnQtc2xpZGVyIjsKK1dl
Ykluc3BlY3Rvci5HcmFkaWVudFNsaWRlci5BZGRBcmVhQ2xhc3NOYW1lID0gImFkZC1hcmVhIjsK
K1dlYkluc3BlY3Rvci5HcmFkaWVudFNsaWRlci5EZXRhY2hpbmdDbGFzc05hbWUgPSAiZGV0YWNo
aW5nIjsKK1dlYkluc3BlY3Rvci5HcmFkaWVudFNsaWRlci5TaGFkb3dDbGFzc05hbWUgPSAic2hh
ZG93IjsKKworV2ViSW5zcGVjdG9yLkdyYWRpZW50U2xpZGVyLnByb3RvdHlwZSA9IHsKKyAgICBj
b25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkdyYWRpZW50U2xpZGVyLAorCisgICAgLy8gUHVibGlj
CisKKyAgICBnZXQgZWxlbWVudCgpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX2VsZW1lbnQp
IHsKKyAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJk
aXYiKTsKKyAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9y
LkdyYWRpZW50U2xpZGVyLlN0eWxlQ2xhc3NOYW1lOworICAgICAgICAgICAgdGhpcy5fZWxlbWVu
dC5hcHBlbmRDaGlsZCh0aGlzLl9jYW52YXMpOworICAgICAgICAgICAgCisgICAgICAgICAgICB0
aGlzLl9hZGRBcmVhID0gdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJkaXYiKSk7CisgICAgICAgICAgICB0aGlzLl9hZGRBcmVhLmFkZEV2ZW50TGlzdGVu
ZXIoIm1vdXNlb3ZlciIsIHRoaXMpOworICAgICAgICAgICAgdGhpcy5fYWRkQXJlYS5hZGRFdmVu
dExpc3RlbmVyKCJtb3VzZW1vdmUiLCB0aGlzKTsKKyAgICAgICAgICAgIHRoaXMuX2FkZEFyZWEu
YWRkRXZlbnRMaXN0ZW5lcigibW91c2VvdXQiLCB0aGlzKTsKKyAgICAgICAgICAgIHRoaXMuX2Fk
ZEFyZWEuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzKTsKKyAgICAgICAgICAgIHRoaXMu
X2FkZEFyZWEuY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLkdyYWRpZW50U2xpZGVyLkFkZEFyZWFD
bGFzc05hbWU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQ7CisgICAg
fSwKKworICAgIGdldCBzdG9wcygpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fc3RvcHM7
CisgICAgfSwKKworICAgIHNldCBzdG9wcyhzdG9wcykKKyAgICB7CisgICAgICAgIHRoaXMuX3N0
b3BzID0gc3RvcHM7CisKKyAgICAgICAgdGhpcy5fdXBkYXRlU3RvcHMoKTsKKyAgICB9LAorCisg
ICAgZ2V0IHNlbGVjdGVkU3RvcCgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0
ZWRLbm9iID8gdGhpcy5fc2VsZWN0ZWRLbm9iLnN0b3AgOiBudWxsOworICAgIH0sCisKKyAgICAv
LyBQcm90ZWN0ZWQKKworICAgIGhhbmRsZUV2ZW50OiBmdW5jdGlvbihldmVudCkKKyAgICB7Cisg
ICAgICAgIHN3aXRjaCAoZXZlbnQudHlwZSkgeworICAgICAgICBjYXNlICJtb3VzZW92ZXIiOgor
ICAgICAgICAgICAgdGhpcy5faGFuZGxlTW91c2VvdmVyKGV2ZW50KTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlICJtb3VzZW1vdmUiOgorICAgICAgICAgICAgdGhpcy5faGFuZGxl
TW91c2Vtb3ZlKGV2ZW50KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICJtb3Vz
ZW91dCI6CisgICAgICAgICAgICB0aGlzLl9oYW5kbGVNb3VzZW91dChldmVudCk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSAiY2xpY2siOgorICAgICAgICAgICAgdGhpcy5faGFu
ZGxlQ2xpY2soZXZlbnQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9LAor
CisgICAgaGFuZGxlS2V5ZG93bkV2ZW50OiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAg
IGlmICghdGhpcy5fa2V5Ym9hcmRTaG9ydGN1dEVzYy5tYXRjaGVzRXZlbnQoZXZlbnQpIHx8ICF0
aGlzLl9zZWxlY3RlZEtub2IgfHwgIXRoaXMuX3NlbGVjdGVkS25vYi5zZWxlY3RlZCkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICB0aGlzLl9zZWxlY3RlZEtub2Iuc2VsZWN0
ZWQgPSBmYWxzZTsKKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9LAorCisgICAga25vYlhE
aWRDaGFuZ2U6IGZ1bmN0aW9uKGtub2IpCisgICAgeworICAgICAgICBrbm9iLnN0b3Aub2Zmc2V0
ID0ga25vYi54IC8gV2ViSW5zcGVjdG9yLkdyYWRpZW50U2xpZGVyLldpZHRoOworICAgICAgICB0
aGlzLl9zb3J0U3RvcHMoKTsKKyAgICAgICAgdGhpcy5fdXBkYXRlQ2FudmFzKCk7CisgICAgfSwK
KworICAgIGtub2JDYW5EZXRhY2g6IGZ1bmN0aW9uKGtub2IpCisgICAgeworICAgICAgICByZXR1
cm4gdGhpcy5fa25vYnMubGVuZ3RoID4gMjsKKyAgICB9LAorCisgICAga25vYldpbGxEZXRhY2g6
IGZ1bmN0aW9uKGtub2IpCisgICAgeworICAgICAgICBrbm9iLmVsZW1lbnQuY2xhc3NMaXN0LmFk
ZChXZWJJbnNwZWN0b3IuR3JhZGllbnRTbGlkZXIuRGV0YWNoaW5nQ2xhc3NOYW1lKTsKKyAgICAg
ICAgCisgICAgICAgIHRoaXMuX3N0b3BzLnJlbW92ZShrbm9iLnN0b3ApOworICAgICAgICB0aGlz
Ll9rbm9icy5yZW1vdmUoa25vYik7CisgICAgICAgIHRoaXMuX3NvcnRTdG9wcygpOworICAgICAg
ICB0aGlzLl91cGRhdGVDYW52YXMoKTsKKyAgICB9LAorCisgICAga25vYlNlbGVjdGlvbkNoYW5n
ZWQ6IGZ1bmN0aW9uKGtub2IpCisgICAgeworICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWRLbm9i
ICYmIHRoaXMuX3NlbGVjdGVkS25vYiAhPT0ga25vYiAmJiBrbm9iLnNlbGVjdGVkKQorICAgICAg
ICAgICAgdGhpcy5fc2VsZWN0ZWRLbm9iLnNlbGVjdGVkID0gZmFsc2U7CisKKyAgICAgICAgdGhp
cy5fc2VsZWN0ZWRLbm9iID0ga25vYi5zZWxlY3RlZCA/IGtub2IgOiBudWxsOworCisgICAgICAg
IGlmICh0aGlzLmRlbGVnYXRlICYmIHR5cGVvZiB0aGlzLmRlbGVnYXRlLmdyYWRpZW50U2xpZGVy
U3RvcFdhc1NlbGVjdGVkID09PSAiZnVuY3Rpb24iKQorICAgICAgICAgICAgdGhpcy5kZWxlZ2F0
ZS5ncmFkaWVudFNsaWRlclN0b3BXYXNTZWxlY3RlZCh0aGlzLCBrbm9iLnN0b3ApOworCisgICAg
ICAgIGlmICh0aGlzLl9zZWxlY3RlZEtub2IpCisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuYWRk
V2luZG93S2V5ZG93bkxpc3RlbmVyKHRoaXMpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBX
ZWJJbnNwZWN0b3IucmVtb3ZlV2luZG93S2V5ZG93bkxpc3RlbmVyKHRoaXMpOworICAgIH0sCisK
KyAgICAvLyBQcml2YXRlCisKKyAgICBfaGFuZGxlTW91c2VvdmVyOiBmdW5jdGlvbihldmVudCkK
KyAgICB7CisgICAgICAgIHRoaXMuX3VwZGF0ZVNoYWRvd0tub2IoZXZlbnQpOworICAgIH0sCisK
KyAgICBfaGFuZGxlTW91c2Vtb3ZlOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHRo
aXMuX3VwZGF0ZVNoYWRvd0tub2IoZXZlbnQpOworICAgIH0sCisKKyAgICBfaGFuZGxlTW91c2Vv
dXQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9zaGFkb3dLbm9i
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX3NoYWRvd0tub2IuZWxlbWVu
dC5yZW1vdmUoKTsKKyAgICAgICAgZGVsZXRlIHRoaXMuX3NoYWRvd0tub2I7CisgICAgfSwKKwor
ICAgIF9oYW5kbGVDbGljazogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICB0aGlzLl91
cGRhdGVTaGFkb3dLbm9iKGV2ZW50KTsKKworICAgICAgICB0aGlzLl9rbm9icy5wdXNoKHRoaXMu
X3NoYWRvd0tub2IpOworCisgICAgICAgIHRoaXMuX3NoYWRvd0tub2IuZWxlbWVudC5jbGFzc0xp
c3QucmVtb3ZlKFdlYkluc3BlY3Rvci5HcmFkaWVudFNsaWRlci5TaGFkb3dDbGFzc05hbWUpOwor
CisgICAgICAgIHZhciBzdG9wID0ge29mZnNldDogdGhpcy5fc2hhZG93S25vYi54IC8gV2ViSW5z
cGVjdG9yLkdyYWRpZW50U2xpZGVyLldpZHRoLCBjb2xvcjogdGhpcy5fc2hhZG93S25vYi53ZWxs
Q29sb3J9OworICAgICAgICB0aGlzLl9zdG9wcy5wdXNoKHN0b3ApOworICAgICAgICB0aGlzLl9z
b3J0U3RvcHMoKTsKKyAgICAgICAgdGhpcy5fdXBkYXRlU3RvcHMoKTsKKworICAgICAgICB0aGlz
Ll9rbm9ic1t0aGlzLl9zdG9wcy5pbmRleE9mKHN0b3ApXS5zZWxlY3RlZCA9IHRydWU7CisKKyAg
ICAgICAgZGVsZXRlIHRoaXMuX3NoYWRvd0tub2I7CisgICAgfSwKKworICAgIF91cGRhdGVTaGFk
b3dLbm9iOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5fc2hhZG93
S25vYikgeworICAgICAgICAgICAgdGhpcy5fc2hhZG93S25vYiA9IG5ldyBXZWJJbnNwZWN0b3Iu
R3JhZGllbnRTbGlkZXJLbm9iKHRoaXMpOworICAgICAgICAgICAgdGhpcy5fc2hhZG93S25vYi5l
bGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLkdyYWRpZW50U2xpZGVyLlNoYWRvd0Ns
YXNzTmFtZSk7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fc2hh
ZG93S25vYi5lbGVtZW50KTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdGhpcy5fc2hh
ZG93S25vYi54ID0gd2luZG93LndlYmtpdENvbnZlcnRQb2ludEZyb21QYWdlVG9Ob2RlKHRoaXMu
ZWxlbWVudCwgbmV3IFdlYktpdFBvaW50KGV2ZW50LnBhZ2VYLCBldmVudC5wYWdlWSkpLng7CisK
KyAgICAgICAgdmFyIGNvbG9yRGF0YSA9IHRoaXMuX2NhbnZhcy5nZXRDb250ZXh0KCIyZCIpLmdl
dEltYWdlRGF0YSh0aGlzLl9zaGFkb3dLbm9iLnggLSAxLCAwLCAxLCAxKS5kYXRhOworICAgICAg
ICB0aGlzLl9zaGFkb3dLbm9iLndlbGxDb2xvciA9IG5ldyBXZWJJbnNwZWN0b3IuQ29sb3IoV2Vi
SW5zcGVjdG9yLkNvbG9yLkZvcm1hdC5SR0IsIFtjb2xvckRhdGFbMF0sIGNvbG9yRGF0YVsxXSwg
Y29sb3JEYXRhWzJdLCBjb2xvckRhdGFbM10gLyAyNTVdKTsKKyAgICB9LAorCisgICAgX3NvcnRT
dG9wczogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5fc3RvcHMuc29ydChmdW5jdGlv
bihhLCBiKSB7CisgICAgICAgICAgICByZXR1cm4gYS5vZmZzZXQgLSBiLm9mZnNldDsKKyAgICAg
ICAgfSk7CisgICAgfSwKKworICAgIF91cGRhdGVTdG9wczogZnVuY3Rpb24oKQorICAgIHsKKyAg
ICAgICAgdGhpcy5fdXBkYXRlQ2FudmFzKCk7CisgICAgICAgIHRoaXMuX3VwZGF0ZUtub2JzKCk7
CisgICAgfSwKKworICAgIF91cGRhdGVDYW52YXM6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAg
IHZhciB3ID0gV2ViSW5zcGVjdG9yLkdyYWRpZW50U2xpZGVyLldpZHRoOworICAgICAgICB2YXIg
aCA9IFdlYkluc3BlY3Rvci5HcmFkaWVudFNsaWRlci5IZWlnaHQ7CisgICAgICAgIAorICAgICAg
ICB0aGlzLl9jYW52YXMud2lkdGggPSB3OworICAgICAgICB0aGlzLl9jYW52YXMuaGVpZ2h0ID0g
aDsKKworICAgICAgICB2YXIgY3R4ID0gdGhpcy5fY2FudmFzLmdldENvbnRleHQoIjJkIik7Cisg
ICAgICAgIHZhciBncmFkaWVudCA9IGN0eC5jcmVhdGVMaW5lYXJHcmFkaWVudCgwLCAwLCB3LCAw
KTsKKyAgICAgICAgZm9yICh2YXIgc3RvcCBvZiB0aGlzLl9zdG9wcykKKyAgICAgICAgICAgIGdy
YWRpZW50LmFkZENvbG9yU3RvcChzdG9wLm9mZnNldCwgc3RvcC5jb2xvcik7CisKKyAgICAgICAg
Y3R4LmNsZWFyUmVjdCgwLCAwLCB3LCBoKTsKKyAgICAgICAgY3R4LmZpbGxTdHlsZSA9IGdyYWRp
ZW50OworICAgICAgICBjdHguZmlsbFJlY3QoMCwgMCwgdywgaCk7CisKKyAgICAgICAgaWYgKHRo
aXMuZGVsZWdhdGUgJiYgdHlwZW9mIHRoaXMuZGVsZWdhdGUuZ3JhZGllbnRTbGlkZXJTdG9wc0Rp
ZENoYW5nZSA9PT0gImZ1bmN0aW9uIikKKyAgICAgICAgICAgIHRoaXMuZGVsZWdhdGUuZ3JhZGll
bnRTbGlkZXJTdG9wc0RpZENoYW5nZSh0aGlzKTsKKyAgICB9LAorCisgICAgX3VwZGF0ZUtub2Jz
OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgc2VsZWN0ZWRTdG9wID0gdGhpcy5fc2Vs
ZWN0ZWRLbm9iID8gdGhpcy5fc2VsZWN0ZWRLbm9iLnN0b3AgOiBudWxsOworICAgICAgICAKKyAg
ICAgICAgd2hpbGUgKHRoaXMuX2tub2JzLmxlbmd0aCA+IHRoaXMuX3N0b3BzLmxlbmd0aCkKKyAg
ICAgICAgICAgIHRoaXMuX2tub2JzLnBvcCgpLmVsZW1lbnQucmVtb3ZlKCk7CisKKyAgICAgICAg
d2hpbGUgKHRoaXMuX2tub2JzLmxlbmd0aCA8IHRoaXMuX3N0b3BzLmxlbmd0aCkgeworICAgICAg
ICAgICAgdmFyIGtub2IgPSBuZXcgV2ViSW5zcGVjdG9yLkdyYWRpZW50U2xpZGVyS25vYih0aGlz
KTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChrbm9iLmVsZW1lbnQpOwor
ICAgICAgICAgICAgdGhpcy5fa25vYnMucHVzaChrbm9iKTsKKyAgICAgICAgfQorCisgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fc3RvcHMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAg
ICAgIHZhciBzdG9wID0gdGhpcy5fc3RvcHNbaV07CisgICAgICAgICAgICB2YXIga25vYiA9IHRo
aXMuX2tub2JzW2ldOworCisgICAgICAgICAgICBrbm9iLnN0b3AgPSBzdG9wOworICAgICAgICAg
ICAga25vYi54ID0gTWF0aC5yb3VuZChzdG9wLm9mZnNldCAqIFdlYkluc3BlY3Rvci5HcmFkaWVu
dFNsaWRlci5XaWR0aCk7CisgICAgICAgICAgICBrbm9iLnNlbGVjdGVkID0gc3RvcCA9PT0gc2Vs
ZWN0ZWRTdG9wOworICAgICAgICB9CisgICAgfQorfQorCitXZWJJbnNwZWN0b3IuR3JhZGllbnRT
bGlkZXJLbm9iID0gZnVuY3Rpb24oZGVsZWdhdGUpCit7CisgICAgdGhpcy5feCA9IDA7CisgICAg
dGhpcy5feSA9IDA7CisgICAgdGhpcy5fc3RvcCA9IG51bGw7CisgICAgCisgICAgdGhpcy5kZWxl
Z2F0ZSA9IGRlbGVnYXRlOworICAgIAorICAgIHRoaXMuX2VsZW1lbnQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJkaXYiKTsKKyAgICB0aGlzLl9lbGVtZW50LmNsYXNzTmFtZSA9IFdlYkluc3Bl
Y3Rvci5HcmFkaWVudFNsaWRlcktub2IuU3R5bGVDbGFzc05hbWU7CisKKyAgICAvLyBDaGVja2Vy
cyBwYXR0ZXJuLgorICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiaW1nIikpOworCisgICAgdGhpcy5fd2VsbCA9IHRoaXMuX2VsZW1lbnQuYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpOworCisgICAgdGhpcy5fZWxlbWVu
dC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzKTsKK307CisKK1dlYkluc3BlY3Rv
ci5HcmFkaWVudFNsaWRlcktub2IuU3R5bGVDbGFzc05hbWUgPSAiZ3JhZGllbnQtc2xpZGVyLWtu
b2IiOworV2ViSW5zcGVjdG9yLkdyYWRpZW50U2xpZGVyS25vYi5TZWxlY3RlZENsYXNzTmFtZSA9
ICJzZWxlY3RlZCI7CitXZWJJbnNwZWN0b3IuR3JhZGllbnRTbGlkZXJLbm9iLkZhZGVPdXRDbGFz
c05hbWUgPSAiZmFkZS1vdXQiOworCitXZWJJbnNwZWN0b3IuR3JhZGllbnRTbGlkZXJLbm9iLnBy
b3RvdHlwZSA9IHsKKyAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkdyYWRpZW50U2xpZGVy
S25vYiwKKworICAgIC8vIFB1YmxpYworCisgICAgZ2V0IGVsZW1lbnQoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQ7CisgICAgfSwKKworICAgIGdldCBzdG9wKCkKKyAgICB7
CisgICAgICAgIHJldHVybiB0aGlzLl9zdG9wOworICAgIH0sCisKKyAgICBzZXQgc3RvcChzdG9w
KQorICAgIHsKKyAgICAgICAgdGhpcy53ZWxsQ29sb3IgPSBzdG9wLmNvbG9yOworICAgICAgICB0
aGlzLl9zdG9wID0gc3RvcDsKKyAgICB9LAorCisgICAgZ2V0IHgoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIHRoaXMuX3g7CisgICAgfSwKKyAgICAKKyAgICBzZXQgeCh4KSB7CisgICAgICAgIHRo
aXMuX3ggPSB4OworICAgICAgICB0aGlzLl91cGRhdGVUcmFuc2Zvcm0oKTsKKyAgICB9LAorCisg
ICAgZ2V0IHkoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3g7CisgICAgfSwKKyAgICAK
KyAgICBzZXQgeSh5KSB7CisgICAgICAgIHRoaXMuX3kgPSB5OworICAgICAgICB0aGlzLl91cGRh
dGVUcmFuc2Zvcm0oKTsKKyAgICB9LAorCisgICAgZ2V0IHdlbGxDb2xvcihjb2xvcikKKyAgICB7
CisgICAgICAgIHJldHVybiB0aGlzLl93ZWxsQ29sb3I7CisgICAgfSwKKworICAgIHNldCB3ZWxs
Q29sb3IoY29sb3IpCisgICAgeworICAgICAgICB0aGlzLl93ZWxsQ29sb3IgPSBjb2xvcjsKKyAg
ICAgICAgdGhpcy5fd2VsbC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBjb2xvcjsKKyAgICB9LAor
CisgICAgZ2V0IHNlbGVjdGVkKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50
LmNsYXNzTGlzdC5jb250YWlucyhXZWJJbnNwZWN0b3IuR3JhZGllbnRTbGlkZXJLbm9iLlNlbGVj
dGVkQ2xhc3NOYW1lKTsKKyAgICB9LAorCisgICAgc2V0IHNlbGVjdGVkKHNlbGVjdGVkKQorICAg
IHsKKyAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWQgPT09IHNlbGVjdGVkKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIGlmIChzZWxlY3RlZCkKKyAgICAgICAgICAgIHRoaXMuX2VsZW1l
bnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuR3JhZGllbnRTbGlkZXJLbm9iLlNlbGVjdGVk
Q2xhc3NOYW1lKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFz
c0xpc3QucmVtb3ZlKFdlYkluc3BlY3Rvci5HcmFkaWVudFNsaWRlcktub2IuU2VsZWN0ZWRDbGFz
c05hbWUpOworICAgICAgICAKKyAgICAgICAgaWYgKHRoaXMuZGVsZWdhdGUgJiYgdHlwZW9mIHRo
aXMuZGVsZWdhdGUua25vYlNlbGVjdGlvbkNoYW5nZWQgPT09ICJmdW5jdGlvbiIpCisgICAgICAg
ICAgICB0aGlzLmRlbGVnYXRlLmtub2JTZWxlY3Rpb25DaGFuZ2VkKHRoaXMpOworICAgIH0sCisK
KyAgICAvLyBQcm90ZWN0ZWQKKworICAgIGhhbmRsZUV2ZW50OiBmdW5jdGlvbihldmVudCkKKyAg
ICB7CisgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CisgICAgICAgIGV2ZW50LnN0b3BQ
cm9wYWdhdGlvbigpOworCisgICAgICAgIHN3aXRjaCAoZXZlbnQudHlwZSkgeworICAgICAgICBj
YXNlICJtb3VzZWRvd24iOgorICAgICAgICAgICAgdGhpcy5faGFuZGxlTW91c2Vkb3duKGV2ZW50
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICJtb3VzZW1vdmUiOgorICAgICAg
ICAgICAgdGhpcy5faGFuZGxlTW91c2Vtb3ZlKGV2ZW50KTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlICJtb3VzZXVwIjoKKyAgICAgICAgICAgIHRoaXMuX2hhbmRsZU1vdXNldXAo
ZXZlbnQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgInRyYW5zaXRpb25lbmQi
OgorICAgICAgICAgICAgdGhpcy5faGFuZGxlVHJhbnNpdGlvbkVuZChldmVudCk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICAvLyBQcml2YXRlCisKKyAgICBf
aGFuZGxlTW91c2Vkb3duOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHRoaXMuX21v
dmVkID0gZmFsc2U7CisgICAgICAgIHRoaXMuX2RldGFjaGluZyA9IGZhbHNlOworCisgICAgICAg
IHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLCB0aGlzLCB0cnVlKTsKKyAgICAg
ICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLCB0aGlzLCB0cnVlKTsKKworICAg
ICAgICB0aGlzLl9zdGFydFggPSB0aGlzLng7CisgICAgICAgIHRoaXMuX3N0YXJ0TW91c2VYID0g
ZXZlbnQucGFnZVg7CisgICAgICAgIHRoaXMuX3N0YXJ0TW91c2VZID0gZXZlbnQucGFnZVk7Cisg
ICAgfSwKKworICAgIF9oYW5kbGVNb3VzZW1vdmU6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAg
ICAgICAgdmFyIHcgPSBXZWJJbnNwZWN0b3IuR3JhZGllbnRTbGlkZXIuV2lkdGg7CisKKyAgICAg
ICAgdGhpcy5fbW92ZWQgPSB0cnVlOworCisgICAgICAgIGlmICghdGhpcy5fZGV0YWNoaW5nICYm
IE1hdGguYWJzKGV2ZW50LnBhZ2VZIC0gdGhpcy5fc3RhcnRNb3VzZVkpID4gNTApIHsKKyAgICAg
ICAgICAgIHRoaXMuX2RldGFjaGluZyA9IHRoaXMuZGVsZWdhdGUgJiYgdHlwZW9mIHRoaXMuZGVs
ZWdhdGUua25vYkNhbkRldGFjaCA9PT0gImZ1bmN0aW9uIiAmJiB0aGlzLmRlbGVnYXRlLmtub2JD
YW5EZXRhY2godGhpcyk7CisgICAgICAgICAgICBpZiAodGhpcy5fZGV0YWNoaW5nICYmIHRoaXMu
ZGVsZWdhdGUgJiYgdHlwZW9mIHRoaXMuZGVsZWdhdGUua25vYldpbGxEZXRhY2ggPT09ICJmdW5j
dGlvbiIpIHsKKyAgICAgICAgICAgICAgICB2YXIgdHJhbnNsYXRpb25Gcm9tUGFyZW50VG9Cb2R5
ID0gd2luZG93LndlYmtpdENvbnZlcnRQb2ludEZyb21Ob2RlVG9QYWdlKHRoaXMuZWxlbWVudC5w
YXJlbnROb2RlLCBuZXcgV2ViS2l0UG9pbnQoMCwgMCkpOworICAgICAgICAgICAgICAgIHRoaXMu
X3N0YXJ0TW91c2VYIC09IHRyYW5zbGF0aW9uRnJvbVBhcmVudFRvQm9keS54OworICAgICAgICAg
ICAgICAgIHRoaXMuX3N0YXJ0TW91c2VZIC09IHRyYW5zbGF0aW9uRnJvbVBhcmVudFRvQm9keS55
OworICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy5lbGVtZW50
KTsKKyAgICAgICAgICAgICAgICB0aGlzLmRlbGVnYXRlLmtub2JXaWxsRGV0YWNoKHRoaXMpOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgdmFyIHggPSB0aGlzLl9zdGFydFgg
KyBldmVudC5wYWdlWCAtIHRoaXMuX3N0YXJ0TW91c2VYOworICAgICAgICBpZiAoIXRoaXMuX2Rl
dGFjaGluZykKKyAgICAgICAgICAgIHggPSBNYXRoLm1pbihNYXRoLm1heCgwLCB4KSwgdyk7Cisg
ICAgICAgIHRoaXMueCA9IHg7CisKKyAgICAgICAgaWYgKHRoaXMuX2RldGFjaGluZykKKyAgICAg
ICAgICAgIHRoaXMueSA9IGV2ZW50LnBhZ2VZIC0gdGhpcy5fc3RhcnRNb3VzZVk7CisgICAgICAg
IGVsc2UgaWYgKHRoaXMuZGVsZWdhdGUgJiYgdHlwZW9mIHRoaXMuZGVsZWdhdGUua25vYlhEaWRD
aGFuZ2UgPT09ICJmdW5jdGlvbiIpCisgICAgICAgICAgICB0aGlzLmRlbGVnYXRlLmtub2JYRGlk
Q2hhbmdlKHRoaXMpOworICAgIH0sCisKKyAgICBfaGFuZGxlTW91c2V1cDogZnVuY3Rpb24oZXZl
bnQpCisgICAgeworICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vtb3Zl
IiwgdGhpcywgdHJ1ZSk7CisgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3Vz
ZXVwIiwgdGhpcywgdHJ1ZSk7CisKKyAgICAgICAgaWYgKHRoaXMuX2RldGFjaGluZykgeworICAg
ICAgICAgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoInRyYW5zaXRpb25lbmQiLCB0
aGlzKTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rv
ci5HcmFkaWVudFNsaWRlcktub2IuRmFkZU91dENsYXNzTmFtZSk7CisgICAgICAgICAgICB0aGlz
LnNlbGVjdGVkID0gZmFsc2U7CisgICAgICAgIH0gZWxzZSBpZiAoIXRoaXMuX21vdmVkKQorICAg
ICAgICAgICAgdGhpcy5zZWxlY3RlZCA9ICF0aGlzLnNlbGVjdGVkOworICAgIH0sCisKKyAgICBf
aGFuZGxlVHJhbnNpdGlvbkVuZDogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICB0aGlz
LmVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigidHJhbnNpdGlvbmVuZCIsIHRoaXMpOworICAg
ICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuR3JhZGllbnRT
bGlkZXJLbm9iLkZhZGVPdXRDbGFzc05hbWUpOworICAgICAgICB0aGlzLmVsZW1lbnQucmVtb3Zl
KCk7CisgICAgfSwKKworICAgIF91cGRhdGVUcmFuc2Zvcm06IGZ1bmN0aW9uKCkKKyAgICB7Cisg
ICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS53ZWJraXRUcmFuc2Zvcm0gPSAidHJhbnNsYXRlM2Qo
IiArIHRoaXMuX3ggKyAicHgsICIgKyB0aGlzLl95ICsgInB4LCAwKSI7CisgICAgfQorfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL0NoZWNr
ZXJzLnN2ZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ltYWdlcy9DaGVj
a2Vycy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNjRlNzRhZjFhMTZkMzVkZTE3MWYyYTc0ZjM1ZTZkOTA3YzA4
Zjc0MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0ltYWdlcy9DaGVja2Vycy5zdmcKQEAgLTAsMCArMSBAQAorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2IiBoZWlnaHQ9IjYiIGZpbGw9InJnYigyMDQs
IDIwNCwgMjA0KSI+PHJlY3Qgd2lkdGg9IjMiIGhlaWdodD0iMyIgLz48cmVjdCB4PSIzIiB5PSIz
IiB3aWR0aD0iMyIgaGVpZ2h0PSIzIi8+PC9zdmc+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2Vz
L0dyYWRpZW50U3RvcC5wbmcgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9J
bWFnZXMvR3JhZGllbnRTdG9wLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNjI0N2U4YmM1MjBkNDJhYjkzNTNk
MTQ4MDQ2Mjk1ZTQ5NGZkYTcyCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAyOTMxCnpjbVYtKDN5
ayFNUCk8aDszS3xMazAwMGUxTkpMVHEwMDB5SzAwMF5ZMV5AczZ3fVg2cjAwMFV2WCt1TCROa2M7
Kgp6UDt6ZihYPjRUeDA3JUUzbVVtUUMqQXxEKnk/MSh7JWBubSNkWHB8TmZiPWRQOVJ5SnJXKEY5
XzBLKkpUWT4yMnAKekw9aDFJTVViRj8waSZUdnRjWVNFRDV6aSRORHhxQkZwOCtDV0pjQ1hlMGgy
QTw+bUxzejJEa3I/e29McmQhTXh+CnowMz1UekUtd1heMHc5P3U7MEptKihecktAKDZSamgyNiV1
MHJUe1FtPjhaWCE/IWlETEZFPHhAeTJ1SXFpezE8WQp6TmNfSEs9Oz0/VmdhMSNgdFc+QEwwTFdq
Jj00PyhuT1Rfc2lQUmJPZGl0UkhacnA2P1M4QWdlakZHXjZ2YSQ9NUsKejxmV2Z8N1RIbkU+fGBF
VyNOd1AmKn54NCVfbFM2VmhMOXMtIzdEI2g4QypgTGg7TkhuR2Y5fXQ3NGNoZlklKyhMCno0Z2lX
SXdoSzZ7Y29DYjNuOFhoYmJQQDQjMEMxJFpGRjU4NDdJM2x6O3pQTmxxLU9LRWFxJEFXRT0hTVlZ
SGlKKwp6ZHZZPzlJMEF2OEthLVduPGdAODZEYW9sIVVOISlXWFp8YzFhYyR8TUIzcWhUVFVye0w4
SlRganNRPGU3SHpuQHYKekJFMVV1KyV0JlFfbE5EVHs4SCl3VjliaFl2K0VDQSV6Z2ttd2dNbmB7
fH1xeUFwaiZyZVFVcSojZCZEcmQ1SVNZCnpRZi1XbEdjei1keEV6Knx4UytyNWU+KGdQZWVwZGJA
cGl3TGh3alJXV2VTcjdiYUNCU0RNPXxwSzBRNV4kPlB1cgp6fDIpTTFJUGtDWVNRXk5RPD91Tj9R
QURVeyVEQjhaUU0tOTt1N0kxdXFqUCF4c2ZxdEU+YHoqcFltcTRScDh6JD0KejJ1UihhMF81akRm
VDlvcTVfd1NFXzIydkVnQVdEYm4tYGAhdXtpZ2kxXnhUM2FFYlZsJlcteVY9TW9yOVg5QFdrCnpp
KS1SKjNEQUg1Qm1vdTMwfk1lRmJiJW8tMTZJSG1JMDg0WTB7RFNvNUR3TT83S2pKUWZEYlozRjR6
blRLb1FzbAp6X0pUQEsxTHtFfFhhT2ZjMlJJRWJmWG09SXhDIW9uMlZld0BnWGRyZHlhRHFOMVlz
ZEVNMWtaWFJZKGdtZlhwQlUKeldEbUpQSzJSVk80bjskODVEeVlVeHpIQTwycjdqdHA8MVhCYFc4
OWBVNFg3YTFKRkhhNnE8czVoMkZ5bU9vRk1mCnpHT1BfNyF3bEY3X0opSnVIRTxsOTJJcyl9QEpf
ZV91N2kpaz9lR1FvSSghRW5mdUY7KDJ0YkdrNE4qZjM1ZURMZAp6XyNxS1VFVyRATkFjYVVkUWly
cjRUfVVyLTNtSE1DayN7SHppaGBufTN7a2N5UGdEcXNnLVN6aEtvejRaUUFiaGoKenMyPGNVKUZe
NU9eJEFUekUxP2IwSGZTJk9EcyZ0PTZKM0JWTT5uOWAoM2pBNihCdFNnN3p+RG4oWk5fQEpUYyp6
CnoxazVeMkczRWZLNj59YWxmRW1OZ1Z6RjN4dE8zPno+eFg0eDE9c0BZZShXKnFJcVY+STlRemhX
I0hyJVVhUEdKVwp6OTFvWD1FNXxrQSZmKjRmNlMjVDI2a1pFJmdaSU87QCE5d2lkX0JHa2UqLV5g
cEM/RVliTz81WVVfdF82R29nYWUKekxieWJETk8obWc2NGk7OyF+aTBmeFFTUm5KV2prcTkze1Ja
JCZtQyhFfkg0M2toR0lAZ21qKkNrTXhSNkNUbykmCnokcXs0JGNfK0QlZTNBVF57OG9ZQFZJPCl0
IUlzITRRNjxxWEYofm11NS0rSkc9X0kqVUdEb3NwQH0lU3EkIVJJUAp6bCh2K002ak4lMFJGJXt6
c2JRJkVYXk9PfHc0WmRjYmdeYGteaX1DZThMVyk5akdHS3dDU1ReVCV0ZV9vM1BSREsKenhLTFA+
RXRHbzdDQ1dHekwpRD5yUTRePnwpTmlRJClFUVlCKj00ZSF2UlNmS3ZTKHlSWGI0VDQ9MCFgUW1D
I1BtCnpoR180WENAKm5aIWRiRm9OejBQS0MzQTkkYSpsRXd4azk7Q3hqUzwyPD5+VG5AYD5gaDx2
WmpiRFdEWWU2I143OAp6NiVIeX5Ra1loeEQldld0NmJsdGtEQmYzc21HcVNZbURWWDhSX2FybFJh
UX48UCk9M2V1WTZIP1Q3ezxLc0ZJKmsKenJnQnpnTnxtQiZ1Z1g7fFEkNDVwajRuJWVxOUBUUz1z
b2xxSDY9QXFIS0FJcVRFRSk3eHtpOD9kWSpjI2BYZGQzCnoyMTZyT3FmRGIpVkA2WHwoXm9UQnZz
dkBMN0c4Xj82fGMyVnQ1PDdJVFNxJWdkeipITF9OMCFTaithaTNQUDVLSwp6VTl6ciZaa2xlTD9y
bEFjOXohb3Q/fHxNLWVPVFdAS1ZIOHx8QXFsPFV9P1pMSUFBY2E2dXMxWERRe2ByKHFUaUEKenBf
NV5UVllBXz01eldaUUQ5QDxGPSFMUFNhZkk9MTw2aCVXQ0tlYDFDaU54e09sM0AwbkM2KnduZl97
flpea21LCnpHUGBYfkhnYEFRWHg/ZjVhKyQkMCZhIzhjP3BqYlJkQFooRmJYJEQxdzZmJHx3cGRQ
Q1g8OXtGUmEqQCtzMEBFYgp6RzJAQ2crUz1LQXF4RVUpY1ElJGIwLUY7eXp0fGV1Q2ZZWEhQQT1E
MyZSSmYrZTlUVldqJWluR0gpMm4+a0c0TiMKektqTlV+ejt2aXtjO2N3eCRhWlhTb04mQH1OXm07
bl51cFExbmVXYEBKbStITHZma3lxRThePG1USWt5RUNnVD8zCnpSX1hUR1VFTXYtejFlLW4hQF5e
byQ5WWUqcj89O0ImdFdmUkZQMnhNKlVTcDU3Myl7QGMkMig/eWVxdypffmByYQp6ZVkkKk0teGE9
bGQ+XmpWVEZHMTQ7UnBQQHtQeUBnXjRJWkNeWnp+bzZXfHxFNzRTNkJHJXo9P0g7NTd4NzFSezsK
ekNmR1QrQj18dnlaaXEwWEo1KHw+R1BFJnRGM2RIb0c7Q3kqQHY4TiF1N0BqeGJIaDYkdW8wbVY0
SDJgZS1CI35pCnpKc3hRaFNyOXEyTXJUZGRueVlJUykrVmh6NkQxa05qNS07T2p0K30laXZHYSNX
N2FXZVc0dk9qVmBmK2B0Yk1ISwp6WSk1dChkeH5TbkRka01XK1FwV31QUjd+QT9UTVI7Y1plXktw
WFIhN0U0ZVFkSlFIZFg8YFZyOWswZFQ2ZyhiQm4KejxDM0czUHdgfVVpTSpaXm02V1dNZm1ET2tn
NEJeVG8zeT1ZR2trQTtMcHFlY0NjUlRZNzV6OzAzM1l7QWdgKmt2Cno4QzRsP0dlYXteVz1VdTl2
aWg/MXZ2KmBxPGhiWDJ5JC1kR3dYUW8/RXE4UDc9ejZGMXdIdSVmRiZueCFZSFpCawp6SUtJaGEp
NnZhQCY1NF9UJFRQXysmM25CaVkpZTxaYXtpfEx2OF42a24rcWZnX3l4bjtZYDR7SE17VmJCQDg0
bSoKeldCLW0laDN2dj5NSjdlJU1JVlk7I24tK3Z7aUA9dGdgS2ZHYCU1Zks0KGBKMjtfVnZSP1hk
ZjNzZFE7aD5EVjZNCnpKPyYtbXZjal8wZCF6UFZFbmlrJXZ5WlMoeE5vR3dyPW9NZT1LZnYjS1VC
dDctbD1rfllPUGtQLWNkYndmUEctXwp6cHlSPW84cyhhem4paXBlaHdqI1QpVjl9WSpPZWN9OUxf
bFd2Xzc9SF9pTSkyalNVSjdNR1lVMUBRI2NlNExzVkAKelh3fSUqcXx7Vz4zXnhtI3I7YkcpeVpN
ZGxIPVFrcEV3IXoqKX1ySSF4YlhQMVo9PTUqSV5saHlgeX1JSiVYZURlCnpSa3U7djNmck9mP0Rt
PENfPlBnekBYbW8jRF43S0gqPjwma1p9azA8KGB1KXkmZDhvQUlaSFUzZXxGKHEmYml0MQp6c3Bx
RkojOWJLY2pfUTdKYW47NCFKcG4hYW0lSn1zeCRKKVZWeXsjMHhocjs4UEc3YVRkZz5iRVRFfShF
PitPOU8KemVRaUhqe0x0MksrMjRNez5QRntIPnppRXolTG1SNUl0KlU4PCRDTSNaTGl6Y0AydEV0
RmNkTyRjUXxyKjxTelR9Cno8aGBWT0ZZam1FcE1TOUZBXkt0QUJkSkhfa0NoKFJ7aXllMj54a3Za
bk5pbyN6OSZJWDkqbldacDh1NW8ofShmPQp6cnt0JlE2UkghOWxWKzJycmApRypLM25+NHtDVnAw
YFJSaDZyR0t0fHE1STt5VW1TbnduXmBxOHsqd1E0O24oNjwKekB+QDcoVWlQfHMpXz9aI284Jmsx
YkFAbF4teVZJKGMtUStyP0VTPWk8X0dNRGlqUjY5eUZQaDtkYnA2aHU8I3JBCnpnIUI3MTFTdVc+
MDAwU2FOTGgwTDAxRmNVMDFGY1YwR2daXzAwMDIkTmtsPFpOWFBBIVRNQnxlNm96ZER0KStxPgp6
NjUyfkcmNC0+ZmJ5WiNfNn0pP3pVcSZkOSEpVWpNOHUoekNgT1hKfTQ7bjtkeWJ8TmJnVW5oZk0l
VUVmK0kzd1UKeiRvPU5vO01WdGpvN0JQe1hMRXgpOEYwRjtxa0N8TXlEN25pI0tkNlJ3JHdEdTEy
fEpyUUBMeXEhb2w7ck9JX0RnCnpSbjtpQ2c5OF5jVHlTcSQpKV8tKFN5RTlIcXU+cT5UK0RGNlY7
RmA0MTlfZ2F6Pik0MUdoRmJMQm5kQFBMX3JYKwp6ej00YUlmQTltcklGOWlKUz5TdnhEMV8qciF+
c1Z1bX1NQ2FRNFRuOHdTc0F5XzUmUG53MVJgSTZWIVYwOUp0X2UKZDRzWlNJLTJofjdhU2ooP1c/
MjlMMDAyb3ZQREhMa1YxbWklaz1nKE4KCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ltYWdlcy9HcmFkaWVudFN0
b3BAMngucG5nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL0dy
YWRpZW50U3RvcEAyeC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDg3MDdmZDkwZjlkOGM5YTY5MGY2NGU4Yzcz
NjQzZmRjNjZiNTQ5ZApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMzU2Mgp6Y21WPEc0SGZjPFAp
PGg7M0t8TGswMDBlMU5KTFRxMDAxWmUwMDEteTFeQHM2YDA5RiUwMDAwOWE3YkJtMDAwWFUKejAw
MFhVMFJXbnU3eXRrWU89Jnx6UCo3LVpiWj5LTFoqVSs8THFpfk5hJkttN1ktSW9kYy1veSljVVk3
NjdDenRpCnpXZS0rRCp6bUVKWT1IbkdCZGlGPjVMdSFTa15vX1o1RTRNZWdAXzdQNmNySmlOTDlw
dyllMTxSaH5sNnF4TXg5JQp6aCsyelBUc1pDQCteNG1EZGhoTStgYDchdD1iWSNLJlV3IWRmRHNa
Vms+O1htMDY5e0hKVVpBUGs1NVIlJC1SSUEKejYtZUwmQVEweHUhZTw0PTAwOGc8ZDNiKHd1c3sz
KHVXdFlYMEMzZVZCb2ZFcnxBVj92Q1JZRjtrcFNRIzY2WHM2CnprV3Y4MUU+eUBBMExUfnN1djQ+
UzNJTFA8MEJtYERMTHZhRjRGSyUpTmo/UHQqcn03OzdYYTl6OUh8SFpqUjYzZQp6Q2BUaiRLKVYy
N1JlQDQwMD5IdW1wc1lZNUUoRX0/MGYxU3lHRGlZe3kjKVl2aiMhV25Ld3RvWG5MO2VnMDNiTDUK
ejA3RClWJT55N3oxRTRVe3p1Pjd+YUR9KT8wUlhfdW1DY3QrKGxacGVtQ3piQF42PW98QT56VnB1
fGk9TkRHKzd9Cno8UllBeG48RW9RPUwxYTYzOytOY2BPKDR0STZzaSo9SCVoI1g2SjEwXnU/bjdZ
dyZMKEp8WGVuez1BRj0xT08wRAp6Jitwbl88Pmw0YGFLezAjYi0hej1UTDlXdDBCR08mVHtHSldw
anJ5aGRpamZhSVEmMiFvfXAwNEpSS1lnM2smVGYKelZ4aGUtPEJMQjNHdlJPR2krPVh9S3B5X3Zk
aGheb25uMFBZekB2bHhhYmEkRHUyUFFZJUxHQyhadWpSU3s+TyFYCnp7ZjtUbzt4d15iRUVTNkpT
YyRrJEIyQ0E2eGwpbHRBPDMyRTY2dD8zQGdKN2AzNnBtWDBJWV5qeilyUll3YWFZNAp6ZShuSlJp
dzs9UWJedChyXkRUQFQzeX1hMlhFWlctX1clSHN6eGpfcUQqKnRfbSEjdFcwS0RpSlQmUj42T3ZW
VFIKejA3UmdIRHpISFo0OGF0dnp6Jj9qOWxYRjcwJH5QM0tueF9uSlA8KyM8YldJc3AlfDd5OEMx
WUoqYVdxKDB+KCthCnpuJkErJSE3KEB1PWltfXRmJE1NPTI0RVBUIVdnYFUyP1JtTjJvcXI7SSox
V3NqQFRtMzJwNUAtMVJgTmJHP0lYJQp6QW5Bd3tRNmswMmEtOyZPTFRacytORih3c2F1aGpAVHRO
RGUrc0dnP2l1e1ZhTT1fTHZ2UVkhbjAoQyZTczI+YE4KeiMtTVoyYlRraUxmUj5fYihIZ1dLSiVG
fk5yX29GM2Ijd3JJaWpIR3woSj5CWWpNLXNhakU2O0ZpQzd2WSN9O0dkCnpTVCRDVUhEZXVFSCtC
XnB6QEIwNjJxWGZGZkRgTnBVVzU/Qlk9ViVHTV81YylMI1FSfUJlVzhfMnYtUyVnZllTPQp6Qjlv
fDN2P1kySGBOVmkpSTxiJmdNeXd8OEFzISl+QzAte0U2SkxgXkJvNGB2PFczNDlDNkY+bjNyVEI4
K2VqXj4KelE9fnI5NU5WdURDaEwlRyQ9PjckdlZnMjBteXglUzUwRm9pYF5tJVB3LWg/WGh+aThN
cTlqdEpsb0NvY1drMk52CnpySnBpRm5WX21zJjhlUSQyJiN4V3BJUys2cG10QyVRLWBTJkc8QkxL
JjZeZk8lY0whJSl6RiUwWEtEOW5GWD9vOwp6M0VoSnBNVkhXKihyZjRrPkY0USNebWh5bWg3RShx
Tk1hfSVZWi1lUHJ4Pj54RlBUaUgxPUUrQSRXJD1iRzg+c14Kem09Qm41UmFoJGFEdHJ9QCRgWH0y
bH4kRjBtRktFZFJkWkU4KXBARTVSSTYxRnQ2by1wcmJibj5QfilpeSlFMkFOCnpzVTIwanNXel84
UWc+MzFQfHMwY3FyUEFMZzhFfCh2V0E2NXBvVTFKUkFhWnM4STIocCN4aUJgU1ZHb3ZScy11Uwp6
WW5WLTlUZUE3PU9tK3FQOCtJPnlPakFSMXMlRVRhayFHRmRhbUBoXiM8QWU9SW9YXl8mTFBlWCZV
LUJiRWs3LT4KeilAclMwdCR3WEgrSXJmKStHNmM7P0gyOXArVjZGNm9qeyF8byVLM3hJYD8lNng7
REJ8eGBuI2liPGdUUChfYHktCno9P1Y0OV4kekxYKE1SPWReclE2YD5oSVI/KEh9UTNHemQxMzhF
aTIpV0FNejdXOVZ5YFh9SG53Z3lFPFclVkBmaAp6I0F1X0BOdXd2WUNobXU0PDI4NX1LNHo/TTlB
ZDBBLWV1ZnRKWWl5S0dUV3JZcXtaYUVEYjE4P25yNkR1dzl8Q1YKeiUqWlU8dGt8cns/MmI5cm9O
Sno4elMrRm57RWRhQk1WIVMtaSNDaExtZkR0bCVMU0hBbWlNZmZSejZtRlJgcGliCnp0Vnp+Zj5u
IVZTKT5tdiQ4JntoUW4+dzR6d3kzUn10O0JZbFpRbTUpNnB0eT1EZkxycytBLXw+PjxhOWY+O347
UQp6X0Y/dVZfSEZqaDluMmdPOW85UV5KQTg2PGI8QjJiYUo9aUo7V1dkayNIcXZTUzcjZSVwPnYo
e0g1YUIha2pvTzYKemM5JDFaWktzTi1abDhMfm1Fe2BseTMpMU5eYG8xK283fUQwWlBlWSZKO2k7
aWAlTnlKOF84WTZKP315RUBiXzVhCnphbT9lTHI8PHEzXk57QitVVXB0dFVpLVpzUHFVbVJwNEtw
SiRsSnRRO0p3UnhVXitmTVclfHpQMTN0eiswLXQpSAp6aHJYdTFCSHVsfUJZeEk/blNLWlNwOEdy
YyVsKGh8enV8ZkU3ViVDNlU7KTdhPHBJNWM4aUJJfFlYY3R5bkZPVD0KekgzZnxZeTlPQHxKezNY
PzJAUDJ2YSs3YnM3eEVrVlY+OEBtRVNrfDMkX1NrbVN7d1E+JXFDMTgpKTlffCZqe1pUCnplczhB
dk96RihGMiNEWkVZPjJvWVgmSVJwYEYje0FEbCkxcj5RU14pYmE4YXxFWV9eI1NeSDxiamA1R0Zq
Slo0OAp6WVBORUFYUks7JFFmeT1GbzRBMHVzPD9yOGh4a1NEbWxBWG5Cbmo8XzxpeXktSiZFSVUw
X1NYK0dvMGpfUkYtc08KenVJMWRLeGZrWj8mZFoqNkpYdGtha2JGM1dtPWMkPUtqbmlVTFFwUmxQ
dnhnPk8mdF5SZ3F3dj1NWlRocXFFV0g4Cnp4Sm8+ZD1BQmxSX0JoPTtlTTk8YWhFR095I3huXnxR
WSgzcDhJcmpwXkcjTW4qNTBobyo+VHd8SWgzNH5vVEV8PQp6WF9tQXIqRCR2endAK3AoRTBZYzZk
RkV9KDg8VTYxX3Y5bl9iTXhDM1k9dW5HcXFJYDRQITFNTUZRX1ljVE5xbi0KenhKYlE3VEdUViZY
OCE4PUJNWDhTZTclc2NQYEkkTyp0bUZFQCElckFNWXxSd2kmR2JPRS1fdEZ4QDM1MUBYfiRECnpY
dj95ZXtaUWdxUWRSUDVkRUR9alFpSVpecjkmJSVTMlVIV2wqITkodUpsXkRWLTtiUVdMNThLbShe
UVZlPH5OMQp6VSN4SmZzSUtfMU0hNHFVUzU5Qm1lRCEmNCtTPVlxeDYxQTdOYjk4UVptam9OenBx
TllZQytZfGhWVHVvOH1XX2gKejgoKGNvLWdLZFFZVzBySXc5VSVSMTJ0aGE/T1YqWXRsUlJUSGx5
fT5vcXRgK1J7Z0UzeDR6algrU2IzX2NZRV49CnpnQj13Ky10VXlgeXRPTk1TOEtnUmVmNGhBP3Q8
TnE4ZSR1fHp2aDEzeEpQJFMjaCNDUXJGI2VWTWVwbHNiWj4wagp6dWZNO3QzMmptfmpVR3JrYU9J
blRaYHp5Zm5zPkV1U31HMzBMRktfRy09PShmPDUxfEsmY29jcCZFSmBTeEFoMz8Kek5PPiNMST1e
K1NFdShGcUopeW50PSF+UEM5Yk8kcnpQSkI9Pz1qPEpiO21XMlNEdjdxQ19WQXs8YnNwcXIofnl8
CnpvbFpZSilTMjlRX2V9aG1ZaDYpWXk9T3p1bzxBM0s/bzc4fF9zUjMjPVp7X1J5bTBnKV9oUT42
d0BhLSh1MDJQNwp6YVEpIyh1VWx7SFcldFlOUzNJdENeaUF0SyhlS2xMYGY5K3tiSnpJU0U/dThf
ejM7fkM4QEZ5SS01al9qeTdsO1cKel9VI3ZVM2hxcVlVMyFtcnVsJkIre3B0dCQ1OSl1a3s7XzRp
WlElR3x6K2xoQVNyNnxIMzVUQmtsPmdJKjtuR0xVCnpON1ctbkJhTSVwQTBIYkg4b2x5bCZYZUol
dlpvV3olNj9ZPWRGeWtsPWltTH1gJUJNUXtNaGdkYEhSb0x1NmUyUgp6YV9fNkR1UjZ5ZyN+LX1U
Y3xHeF97SEBPMGVlYnlNeTVHbVdBREpscEs+a3FrKGZWVkByX2ZMTEtJZVM/ezRlKX0Kel5aTzt6
cEVDZGUwM2MmWFFjVkI9ZEw7az1mUCgtNGBUcWFfZmF3NExidWEoYD5SPG8+SSt5P2U3aktlWiNZ
Ty1DCnowfmJqfEt+IzkhP0FnbXMrZHZjczs2RTJvWHhnJFVCQ3pXUXNTLU9qQW1Da0NARHkzVjR6
VkY+NVIlbk9DUEcwJQp6UipMZHUjSjQhYypHdn5aTCNHYWJAZFpqTmtNd1Z4Yzs/SG88RlAkcGpO
dlRAQzlualJ6IUxiJXojT2ZUTlQmN0AKenp6VHBXZkVzezByQUZILWU7WmdLJW1SUVYwTmEhJCtF
ej04RUUzM1ppdlpwTypjfWRzZ1crKWExSGRrQVRURntBCnozTWs/fTBONVc0MXskTXdkd1ooXipy
KDRAQSZVVWM7NTFGVVZUP2BMPz41eW0/SXNIe0ZFRU1RPi1ZUUQoX2Y3eAp6R1ZTO0sqOHVqP0Fv
Qm9jYUY+XnRTOTVSPSRYPjVebD9Jcz1JRD1ERndhME9COTZ1VjRSOF9Te2YxR0VMUyU2OTAKenVB
KFN2NmgoMHkkMUlBWENxdihmNi03fkhrWkZONG15JkxgYHo/eTFTVlYral8tR1E/YDI3NipgKlc5
fEcoYks+CnphTkpJKCheMH1PajczQmMxV3pWYGp5cyk+MCRAaSN7eFJkbzArWUR5bGFySCtBUDdQ
YzxAPiU9TH5JWlE7cHlxPQp6MTxnMSFORXNsPEVkWGMmKmc4NW9gcyh8Qm1fJko9Q3pUfURfeDxx
cl9fenlUaV5mPnNOTGdTVnomaWsmP1JOWGoKel5Fe3Y5X0BNWHFfbypVY2dDSm1APWxTaCtgd1lN
KWphOFFnQDxhTyh6PTdqOXhwREs1al5wP000cnJgSjA5NkBhCnpqcVhOMTBYWEN4aVpJdThHZXZ+
KkpePnVrU1c1dEV2Y00qUVJSRCtNQHRFMVIlfW1vfHh+e1gpWHZGVUI/bE5VRwp6OFpsa2huUTVC
THdyd15aazIhRmEjKl9scT5FRzRqSytDZTJWSGt4MDRafm9UV3JASFJqYWczdlR6Zl59VDR0YmEK
eitZaTd6STEkTiN3ciFXZDU/QklEO0Z8fE5IcjNfSG9UPV9WMjBEKHojS1d4WGRhajZ2Kkt3VHV6
e3pDNyMzfnd3CnprdDxeTENYLTFxSyhVSVpZMzdQcHl+MlBUJHQhN0RSO0tYRWFhPl9RKkw1RiY5
R05BMmY1Jmx7PiQpI2YhRmZQbAp6QXo1SHk2JTskcFREZmA5SlF3T0Z6dmEoKnpSNTxvPCF7T1lZ
eEpERExPWmBrUiVsRz1yQDk3IVdkUTJ7Sl9GYlEKekBUSzV2UH5ZbmBSem50ODcyZXR9KTMwbU1j
fldGciljM05tRG97PVBabCp6e1pfLUl6V1NaMT5Ca2pBSDxsPkNECmtLdlEmVCR3aS1rWm1zVTsw
Ml9fcUJNN2d6bmc5UiowNypxb002TjwkZzFyWEZgVHpnYAoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAx
CgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2Vz
L0dyYWRpZW50U3RvcFNlbGVjdGVkLnBuZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL0ltYWdlcy9HcmFkaWVudFN0b3BTZWxlY3RlZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODQyODFh
OGE5ZWE5NzQzODZhZGEyYTA1ZTgxYWYyYTI4MWNkMzg4OQpHSVQgYmluYXJ5IHBhdGNoCmxpdGVy
YWwgMzQyMgp6Y21WLWs0V2FVaFApPGg7M0t8TGswMDBlMU5KTFRxMDAweUswMDBeWTFeQHM2d31Y
NnIwMDAwOWE3YkJtMDAwWFUKejAwMFhVMFJXbnU3eXRrWU89Jnx6UCo3LVpiWj5LTFoqVSs8THFp
fk5hJkttN1ktSW9kYy1veSljVVk3NjdDenRpCnpXZS0rRCp6bUVKWT1IbkdCZGlGPjVMdSFTa15v
X1o1RTRNZWdAXzdQNmNySmlOTDlwdyllMTxSaH5sNnF4TXg5JQp6aCsyelBUc1pDQCteNG1EZGho
TStgYDchdD1iWSNLJlV3IWRmRHNaVms+O1htMDY5e0hKVVpBUGs1NVIlJC1SSUEKejYtZUwmQVEw
eHUhZTw0PTAwOGc8ZDNiKHd1c3szKHVXdFlYMEMzZVZCb2ZFcnxBVj92Q1JZRjtrcFNRIzY2WHM2
CnprV3Y4MUU+eUBBMExUfnN1djQ+UzNJTFA8MEJtYERMTHZhRjRGSyUpTmo/UHQqcn03OzdYYTl6
OUh8SFpqUjYzZQp6Q2BUaiRLKVYyN1JlQDQwMD5IdW1wc1lZNUUoRX0/MGYxU3lHRGlZe3kjKVl2
aiMhV25Ld3RvWG5MO2VnMDNiTDUKejA3RClWJT55N3oxRTRVe3p1Pjd+YUR9KT8wUlhfdW1DY3Qr
KGxacGVtQ3piQF42PW98QT56VnB1fGk9TkRHKzd9Cno8UllBeG48RW9RPUwxYTYzOytOY2BPKDR0
STZzaSo9SCVoI1g2SjEwXnU/bjdZdyZMKEp8WGVuez1BRj0xT08wRAp6Jitwbl88Pmw0YGFLezAj
Yi0hej1UTDlXdDBCR08mVHtHSldwanJ5aGRpamZhSVEmMiFvfXAwNEpSS1lnM2smVGYKelZ4aGUt
PEJMQjNHdlJPR2krPVh9S3B5X3ZkaGheb25uMFBZekB2bHhhYmEkRHUyUFFZJUxHQyhadWpSU3s+
TyFYCnp7ZjtUbzt4d15iRUVTNkpTYyRrJEIyQ0E2eGwpbHRBPDMyRTY2dD8zQGdKN2AzNnBtWDBJ
WV5qeilyUll3YWFZNAp6ZShuSlJpdzs9UWJedChyXkRUQFQzeX1hMlhFWlctX1clSHN6eGpfcUQq
KnRfbSEjdFcwS0RpSlQmUj42T3ZWVFIKejA3UmdIRHpISFo0OGF0dnp6Jj9qOWxYRjcwJH5QM0tu
eF9uSlA8KyM8YldJc3AlfDd5OEMxWUoqYVdxKDB+KCthCnpuJkErJSE3KEB1PWltfXRmJE1NPTI0
RVBUIVdnYFUyP1JtTjJvcXI7SSoxV3NqQFRtMzJwNUAtMVJgTmJHP0lYJQp6QW5Bd3tRNmswMmEt
OyZPTFRacytORih3c2F1aGpAVHRORGUrc0dnP2l1e1ZhTT1fTHZ2UVkhbjAoQyZTczI+YE4KeiMt
TVoyYlRraUxmUj5fYihIZ1dLSiVGfk5yX29GM2Ijd3JJaWpIR3woSj5CWWpNLXNhakU2O0ZpQzd2
WSN9O0dkCnpTVCRDVUhEZXVFSCtCXnB6QEIwNjJxWGZGZkRgTnBVVzU/Qlk9ViVHTV81YylMI1FS
fUJlVzhfMnYtUyVnZllTPQp6QjlvfDN2P1kySGBOVmkpSTxiJmdNeXd8OEFzISl+QzAte0U2Skxg
XkJvNGB2PFczNDlDNkY+bjNyVEI4K2VqXj4KelE9fnI5NU5WdURDaEwlRyQ9PjckdlZnMjBteXgl
UzUwRm9pYF5tJVB3LWg/WGh+aThNcTlqdEpsb0NvY1drMk52CnpySnBpRm5WX21zJjhlUSQyJiN4
V3BJUys2cG10QyVRLWBTJkc8QkxLJjZeZk8lY0whJSl6RiUwWEtEOW5GWD9vOwp6M0VoSnBNVkhX
KihyZjRrPkY0USNebWh5bWg3RShxTk1hfSVZWi1lUHJ4Pj54RlBUaUgxPUUrQSRXJD1iRzg+c14K
em09Qm41UmFoJGFEdHJ9QCRgWH0ybH4kRjBtRktFZFJkWkU4KXBARTVSSTYxRnQ2by1wcmJibj5Q
filpeSlFMkFOCnpzVTIwanNXel84UWc+MzFQfHMwY3FyUEFMZzhFfCh2V0E2NXBvVTFKUkFhWnM4
STIocCN4aUJgU1ZHb3ZScy11Uwp6WW5WLTlUZUE3PU9tK3FQOCtJPnlPakFSMXMlRVRhayFHRmRh
bUBoXiM8QWU9SW9YXl8mTFBlWCZVLUJiRWs3LT4KeilAclMwdCR3WEgrSXJmKStHNmM7P0gyOXAr
VjZGNm9qeyF8byVLM3hJYD8lNng7REJ8eGBuI2liPGdUUChfYHktCno9P1Y0OV4kekxYKE1SPWRe
clE2YD5oSVI/KEh9UTNHemQxMzhFaTIpV0FNejdXOVZ5YFh9SG53Z3lFPFclVkBmaAp6I0F1X0BO
dXd2WUNobXU0PDI4NX1LNHo/TTlBZDBBLWV1ZnRKWWl5S0dUV3JZcXtaYUVEYjE4P25yNkR1dzl8
Q1YKeiUqWlU8dGt8cns/MmI5cm9OSno4elMrRm57RWRhQk1WIVMtaSNDaExtZkR0bCVMU0hBbWlN
ZmZSejZtRlJgcGliCnp0Vnp+Zj5uIVZTKT5tdiQ4JntoUW4+dzR6d3kzUn10O0JZbFpRbTUpNnB0
eT1EZkxycytBLXw+PjxhOWY+O347UQp6X0Y/dVZfSEZqaDluMmdPOW85UV5KQTg2PGI8QjJiYUo9
aUo7V1dkayNIcXZTUzcjZSVwPnYoe0g1YUIha2pvTzYKemM5JDFaWktzTi1abDhMfm1Fe2BseTMp
MU5eYG8xK283fUQwWlBlWSZKO2k7aWAlTnlKOF84WTZKP315RUBiXzVhCnphbT9lTHI8PHEzXk57
QitVVXB0dFVpLVpzUHFVbVJwNEtwSiRsSnRRO0p3UnhVXitmTVclfHpQMTN0eiswLXQpSAp6aHJY
dTFCSHVsfUJZeEk/blNLWlNwOEdyYyVsKGh8enV8ZkU3ViVDNlU7KTdhPHBJNWM4aUJJfFlYY3R5
bkZPVD0KekgzZnxZeTlPQHxKezNYPzJAUDJ2YSs3YnM3eEVrVlY+OEBtRVNrfDMkX1NrbVN7d1E+
JXFDMTgpKTlffCZqe1pUCnplczhBdk96RihGMiNEWkVZPjJvWVgmSVJwYEYje0FEbCkxcj5RU14p
YmE4YXxFWV9eI1NeSDxiamA1R0ZqSlo0OAp6WVBORUFYUks7JFFmeT1GbzRBMHVzPD9yOGh4a1NE
bWxBWG5Cbmo8XzxpeXktSiZFSVUwX1NYK0dvMGpfUkYtc08KenVJMWRLeGZrWj8mZFoqNkpYdGth
a2JGM1dtPWMkPUtqbmlVTFFwUmxQdnhnPk8mdF5SZ3F3dj1NWlRocXFFV0g4Cnp4Sm8+ZD1BQmxS
X0JoPTtlTTk8YWhFR095I3huXnxRWSgzcDhJcmpwXkcjTW4qNTBobyo+VHd8SWgzNH5vVEV8PQp6
WF9tQXIqRCR2endAK3AoRTBZYzZkRkV9KDg8VTYxX3Y5bl9iTXhDM1k9dW5HcXFJYDRQITFNTUZR
X1ljVE5xbi0KenhKYlE3VEdUViZYOCE4PUJNWDhTZTclc2NQYEkkTyp0bUZFQCElckFNWXxSd2km
R2JPRS1fdEZ4QDM1MUBYfiRECnpYdj95ZXtaUWdxUWRSUDVkRUR9alFpSVpecjkmJSVTMlVIV2wq
ITkodUpsXkRWLTtiUVdMNThLbSheUVZlPH5OMQp6VSN4SmZzSUtfMU0hNHFVUzU5Qm1lRCEmNCtT
PVlxeDYxQTdOYjk4UVptam9OenBxTllZQytZfGhWVHVvOH1XX2gKejgoKGNvLWdLZFFZVzBySXc5
VSVSMTJ0aGE/T1YqWXRsUlJUSGx5fT5vcXRgK1J7Z0UzeDR6algrU2IzX2NZRV49CnpnQj13Ky10
VXlgeXRPTk1TOEtnUmVmNGhBP3Q8TnE4ZSR1fHp2aDEzeEpQJFMjaCNDUXJGI2VWTWVwbHNiWj4w
agp6dWZNO3QzMmptfmpVR3JrYU9JblRaYHp5Zm5zPkV1U31HMzBMRktfRy09PShmPDUxfEsmY29j
cCZFSmBTeEFoMz8Kek5PPiNMST1eK1NFdShGcUopeW50PSF+UEM5Yk8kcnpQSkI9Pz1qPEpiO21X
MlNEdjdxQ19WQXs8YnNwcXIofnl8CnpvbFpZSilTMjlRX2V9aG1ZaDYpWXk9T3p1bzxBM0s/bzc4
fF9zUjMjPVp7X1J5bTBnKV9oUT42d0BhLSh1MDJQNwp6YVEpIyh1VWx7SFcldFlOUzNJdENeaUF0
SyhlS2xMYGY5K3tiSnpJU0U/dThfejM7fkM4QEZ5SS01al9qeTdsO1cKel9VI3ZVM2hxcVlVMyFt
cnVsJkIre3B0dCQ1OSl1a3s7XzRpWlElR3x6K2xoQVNyNnxIMzVUQmtsPmdJKjtuR0xVCnpON1ct
bkJhTSVwQTBIYkg4b2x5bCZYZUoldlpvV3olNj9ZPWRGeWtsPWltTH1gJUJNUXtNaGdkYEhSb0x1
NmUyUgp6YV9fNkR1UjZ5ZyN+LX1UY3xHeF97SEBPMGVlYnlNeTVHbVdBREpscEs+a3FrKGZWVkBy
X2ZMTEtJZVM/ezRlKX0Kel5aTzt6cEVDZGUwM2MmWFFjVkI9ZEw7az1mUCgtNGBUcWFfZmF3NExi
dWEoYD5SPG8+SSt5P2U3aktlWiNZTy1DCnowKmdzUkt+IzkhJSM9K31RJFpBbHBQNCZ0c2MyfnRn
YX1ldiEkKUdgJEohV09BWmY2PUBoYis1e3RES3RGdk9Ncgp6S3YhendGTDNTTnJBOSoxZkBsZVpt
Zjk9clpTUlo9PWJFT3BNYnczcG9KPXhqPTl4RWg9RGZsZiFAbkYjSm5OYmwKekV3Z0V2NCs2V3Vx
eiVVZ2ZOdytGXy0meEh4aFQqQk1DYGY7P0F2SXhnUV5hJjVZUClHZmN+PylBMT91e14tc1NDCnpj
N1k8YDBgKnA/PkgtQEMmVyFIbXVHfilmY0t9fGw9aVk0ZWpsVG9kP2Z3SCQpZHFJbCFjcnNVe09y
QjR7YVkpSwp6JiFxdHgmcCN9QC1wSSFgVzY4SStQfUBNSThTMFEoWTZ+MFAlZ3NHVj9xe0Rxbm9i
OGQmUiFmeTZtbmxydCM3JU0KemQqVkN4TyZoalExfjNrcEMxSTV3MHx0ZExzaitoSSN7RmI8WnNw
LXIrODlHflQpIX1vREM3JFJwU0xRTUJrXnM3CnpzNU9DJkx1Tl9aTit5SWNXNjlFNV9ITUZ2XlUx
PHdUNUMtISY9fHdhYElDdTRlcnhiY3Ezck1WQnNMTV5kak9VOAp6RXk2JXdzPD9WfVd+aUUzb31X
bCp0PzNyYV5Bbzk9cD11Xm9UKWhWTFMld0hjWnY9PSU+K2FOSV9WbDxoaEVEMzUKemJCbyFMUko4
NisweGA+dyR8X1ZxUjcpcDE5MWxmWSpGfGdId0lgKk40OThWaU9EQWRAS21gaGdaN3BSR3BgKTZD
CnpKKTxsYCRkLVI3ez1pXl9KXktzTiZSdmNRcSFhTSh7amx3b0xMZndVdjdQZSZ6cnRwcTI3RD1o
UHFkVTB5VnF9TAp6VW1FYkZAdkZoQGhrKmx5X0tYKW1yTH48cDs0MUFgNChwS1NwfHdWN3p0VXYx
TXA8JFZEMjA1bGN6T0JMM3R5QGUKelRGM3xwciRjfUUoJihDXzh7ZmpkUnxIQ3lwX050VzBpfUZB
e2lALUY7PVhXdEw0PUtIe3xrZ2NnWWd7V3lVTVNaCnpFWUolUzJFZldyQDZlaWNqWm5+PTliNVFr
RzNyKVhAUSZ1azBRbztSS3M7NitIdmordDA3KnFvTTZOPCRnMkRIVgpBSVJGM3YKCmxpdGVyYWwg
MApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL0ltYWdlcy9HcmFkaWVudFN0b3BTZWxlY3RlZEAyeC5wbmcgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMvR3JhZGllbnRTdG9wU2VsZWN0ZWRAMngucG5n
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmQ2Y2UyNTgwZGY4Y2M3ZDY4YWFhYTJhN2E3OWQ4MDlhNjFmOGNlMTcKR0lU
IGJpbmFyeSBwYXRjaApsaXRlcmFsIDQzMDEKemNtVjs7NUhqekhQKTxoOzNLfExrMDAwZTFOSkxU
cTAwMVplMDAxLXkxXkBzNmAwOUYlMDAwMDlhN2JCbTAwMFhVCnowMDBYVTBSV251N3l0a1lPPSZ8
elAqNy1aYlo+S0xaKlUrPExxaX5OYSZLbTdZLUlvZGMtb3kpY1VZNzY3Q3p0aQp6V2UtK0Qqem1F
Slk9SG5HQmRpRj41THUhU2teb19aNUU0TWVnQF83UDZjckppTkw5cHcpZTE8Umh+bDZxeE14OSUK
emgrMnpQVHNaQ0ArXjRtRGRoaE0rYGA3IXQ9YlkjSyZVdyFkZkRzWlZrPjtYbTA2OXtISlVaQVBr
NTVSJSQtUklBCno2LWVMJkFRMHh1IWU8ND0wMDhnPGQzYih3dXN7Myh1V3RZWDBDM2VWQm9mRXJ8
QVY/dkNSWUY7a3BTUSM2NlhzNgp6a1d2ODFFPnlAQTBMVH5zdXY0PlMzSUxQPDBCbWBETEx2YUY0
RkslKU5qP1B0KnJ9Nzs3WGE5ejlIfEhaalI2M2UKekNgVGokSylWMjdSZUA0MDA+SHVtcHNZWTVF
KEV9PzBmMVN5R0RpWXt5IylZdmojIVduS3d0b1huTDtlZzAzYkw1CnowN0QpViU+eTd6MUU0VXt6
dT43fmFEfSk/MFJYX3VtQ2N0KyhsWnBlbUN6YkBeNj1vfEE+elZwdXxpPU5ERys3fQp6PFJZQXhu
PEVvUT1MMWE2MzsrTmNgTyg0dEk2c2kqPUglaCNYNkoxMF51P243WXcmTChKfFhlbns9QUY9MU9P
MEQKeiYrcG5fPD5sNGBhS3swI2ItIXo9VEw5V3QwQkdPJlR7R0pXcGpyeWhkaWpmYUlRJjIhb31w
MDRKUktZZzNrJlRmCnpWeGhlLTxCTEIzR3ZST0dpKz1YfUtweV92ZGhoXm9ubjBQWXpAdmx4YWJh
JER1MlBRWSVMR0MoWnVqUlN7Pk8hWAp6e2Y7VG87eHdeYkVFUzZKU2MkayRCMkNBNnhsKWx0QTwz
MkU2NnQ/M0BnSjdgMzZwbVgwSVleanopclJZd2FhWTQKemUobkpSaXc7PVFiXnQocl5EVEBUM3l9
YTJYRVpXLV9XJUhzenhqX3FEKip0X20hI3RXMEtEaUpUJlI+Nk92VlRSCnowN1JnSER6SEhaNDhh
dHZ6eiY/ajlsWEY3MCR+UDNLbnhfbkpQPCsjPGJXSXNwJXw3eThDMVlKKmFXcSgwfigrYQp6biZB
KyUhNyhAdT1pbX10ZiRNTT0yNEVQVCFXZ2BVMj9SbU4yb3FyO0kqMVdzakBUbTMycDVALTFSYE5i
Rz9JWCUKekFuQXd7UTZrMDJhLTsmT0xUWnMrTkYod3NhdWhqQFR0TkRlK3NHZz9pdXtWYU09X0x2
dlFZIW4wKEMmU3MyPmBOCnojLU1aMmJUa2lMZlI+X2IoSGdXS0olRn5Ocl9vRjNiI3dySWlqSEd8
KEo+QllqTS1zYWpFNjtGaUM3dlkjfTtHZAp6U1QkQ1VIRGV1RUgrQl5wekBCMDYycVhmRmZEYE5w
VVc1P0JZPVYlR01fNWMpTCNRUn1CZVc4XzJ2LVMlZ2ZZUz0KekI5b3wzdj9ZMkhgTlZpKUk8YiZn
TXl3fDhBcyEpfkMwLXtFNkpMYF5CbzRgdjxXMzQ5QzZGPm4zclRCOCtlal4+CnpRPX5yOTVOVnVE
Q2hMJUckPT43JHZWZzIwbXl4JVM1MEZvaWBebSVQdy1oP1hofmk4TXE5anRKbG9Db2NXazJOdgp6
ckpwaUZuVl9tcyY4ZVEkMiYjeFdwSVMrNnBtdEMlUS1gUyZHPEJMSyY2XmZPJWNMISUpekYlMFhL
RDluRlg/bzsKejNFaEpwTVZIVyoocmY0az5GNFEjXm1oeW1oN0UocU5NYX0lWVotZVByeD4+eEZQ
VGlIMT1FK0EkVyQ9Ykc4PnNeCnptPUJuNVJhaCRhRHRyfUAkYFh9Mmx+JEYwbUZLRWRSZFpFOClw
QEU1Ukk2MUZ0Nm8tcHJiYm4+UH4paXkpRTJBTgp6c1UyMGpzV3pfOFFnPjMxUHxzMGNxclBBTGc4
RXwodldBNjVwb1UxSlJBYVpzOEkyKHAjeGlCYFNWR292UnMtdVMKelluVi05VGVBNz1PbStxUDgr
ST55T2pBUjFzJUVUYWshR0ZkYW1AaF4jPEFlPUlvWF5fJkxQZVgmVS1CYkVrNy0+CnopQHJTMHQk
d1hIK0lyZikrRzZjOz9IMjlwK1Y2RjZvanshfG8lSzN4SWA/JTZ4O0RCfHhgbiNpYjxnVFAoX2B5
LQp6PT9WNDleJHpMWChNUj1kXnJRNmA+aElSPyhIfVEzR3pkMTM4RWkyKVdBTXo3VzlWeWBYfUhu
d2d5RTxXJVZAZmgKeiNBdV9ATnV3dllDaG11NDwyODV9SzR6P005QWQwQS1ldWZ0SllpeUtHVFdy
WXF7WmFFRGIxOD9ucjZEdXc5fENWCnolKlpVPHRrfHJ7PzJiOXJvTkp6OHpTK0Zue0VkYUJNViFT
LWkjQ2hMbWZEdGwlTFNIQW1pTWZmUno2bUZSYHBpYgp6dFZ6fmY+biFWUyk+bXYkOCZ7aFFuPnc0
end5M1J9dDtCWWxaUW01KTZwdHk9RGZMcnMrQS18Pj48YTlmPjt+O1EKel9GP3VWX0hGamg5bjJn
TzlvOVFeSkE4NjxiPEIyYmFKPWlKO1dXZGsjSHF2U1M3I2UlcD52KHtINWFCIWtqb082CnpjOSQx
WlpLc04tWmw4TH5tRXtgbHkzKTFOXmBvMStvN31EMFpQZVkmSjtpO2lgJU55SjhfOFk2Sj99eUVA
Yl81YQp6YW0/ZUxyPDxxM15Oe0IrVVVwdHRVaS1ac1BxVW1ScDRLcEokbEp0UTtKd1J4VV4rZk1X
JXx6UDEzdHorMC10KUgKemhyWHUxQkh1bH1CWXhJP25TS1pTcDhHcmMlbChofHp1fGZFN1YlQzZV
Oyk3YTxwSTVjOGlCSXxZWGN0eW5GT1Q9CnpIM2Z8WXk5T0B8SnszWD8yQFAydmErN2JzN3hFa1ZW
PjhAbUVTa3wzJF9Ta21Te3dRPiVxQzE4KSk5X3wmantaVAp6ZXM4QXZPekYoRjIjRFpFWT4yb1lY
JklScGBGI3tBRGwpMXI+UVNeKWJhOGF8RVlfXiNTXkg8YmpgNUdGakpaNDgKellQTkVBWFJLOyRR
Znk9Rm80QTB1czw/cjhoeGtTRG1sQVhuQm5qPF88aXl5LUomRUlVMF9TWCtHbzBqX1JGLXNPCnp1
STFkS3hma1o/JmRaKjZKWHRrYWtiRjNXbT1jJD1Lam5pVUxRcFJsUHZ4Zz5PJnReUmdxd3Y9TVpU
aHFxRVdIOAp6eEpvPmQ9QUJsUl9CaD07ZU05PGFoRUdPeSN4bl58UVkoM3A4SXJqcF5HI01uKjUw
aG8qPlR3fEloMzR+b1RFfD0KelhfbUFyKkQkdnp3QCtwKEUwWWM2ZEZFfSg4PFU2MV92OW5fYk14
QzNZPXVuR3FxSWA0UCExTU1GUV9ZY1ROcW4tCnp4SmJRN1RHVFYmWDghOD1CTVg4U2U3JXNjUGBJ
JE8qdG1GRUAhJXJBTVl8UndpJkdiT0UtX3RGeEAzNTFAWH4kRAp6WHY/eWV7WlFncVFkUlA1ZEVE
fWpRaUlaXnI5JiUlUzJVSFdsKiE5KHVKbF5EVi07YlFXTDU4S20oXlFWZTx+TjEKelUjeEpmc0lL
XzFNITRxVVM1OUJtZUQhJjQrUz1ZcXg2MUE3TmI5OFFabWpvTnpwcU5ZWUMrWXxoVlR1bzh9V19o
Cno4KChjby1nS2RRWVcwckl3OVUlUjEydGhhP09WKll0bFJSVEhseX0+b3F0YCtSe2dFM3g0empY
K1NiM19jWUVePQp6Z0I9dystdFV5YHl0T05NUzhLZ1JlZjRoQT90PE5xOGUkdXx6dmgxM3hKUCRT
I2gjQ1FyRiNlVk1lcGxzYlo+MGoKenVmTTt0MzJqbX5qVUdya2FPSW5UWmB6eWZucz5FdVN9RzMw
TEZLX0ctPT0oZjw1MXxLJmNvY3AmRUpgU3hBaDM/CnpOTz4jTEk9XitTRXUoRnFKKXludD0hflBD
OWJPJHJ6UEpCPT89ajxKYjttVzJTRHY3cUNfVkF7PGJzcHFyKH55fAp6b2xaWUopUzI5UV9lfWht
WWg2KVl5PU96dW88QTNLP283OHxfc1IzIz1ae19SeW0wZylfaFE+NndAYS0odTAyUDcKemFRKSMo
dVVse0hXJXRZTlMzSXRDXmlBdEsoZUtsTGBmOSt7Ykp6SVNFP3U4X3ozO35DOEBGeUktNWpfank3
bDtXCnpfVSN2VTNocXFZVTMhbXJ1bCZCK3twdHQkNTkpdWt7O180aVpRJUd8eitsaEFTcjZ8SDM1
VEJrbD5nSSo7bkdMVQp6TjdXLW5CYU0lcEEwSGJIOG9seWwmWGVKJXZab1d6JTY/WT1kRnlrbD1p
bUx9YCVCTVF7TWhnZGBIUm9MdTZlMlIKemFfXzZEdVI2eWcjfi19VGN8R3hfe0hATzBlZWJ5TXk1
R21XQURKbHBLPmtxayhmVlZAcl9mTExLSWVTP3s0ZSl9CnpeWk87enBFQ2RlMDNjJlhRY1ZCPWRM
O2s9ZlAoLTRgVHFhX2ZhdzRMYnVhKGA+UjxvPkkreT9lN2pLZVojWU8tQwp6MV5QKXVLfiM5IT8z
cW4oVGdNZkstKmFYektQMVljQilYRjliUm5SMlQqKTtnQ2JiajVrIT5MPChqdSQ7Z2EjRVgKekNx
VnYxSHtCI2FmVFVeUWVFZmlKeC1pZmAoUVgxMSV7RTBNSTxTTTx5cmcoJSZZSn5FXkBnRyhpZWYk
KmN6XipmCnphUE9WLS0xcDN4SWNGIyZAbmRkXkE5O0hNXz4lfHAwM2RIcVkmX314UDkqYTlXKUUt
ekskNSNnNHc5ekBfTlJvPwp6VCRjZF8zQllvbC16VDV8YUpsWmlXdTZlJXl+ITlmMj49M3MqemRw
bl9nQGJ7LW47bmYjRGs7ez1LJk8paDNPPUEKeld8Y1BRRXpFbGheR2NnYlZyU01fbTxDWWpKP3Jq
V2R7d15kRDkqemI5Yj81WVIrVXl1Vnoje1VAVXpYOGhvNWFHCnpGPFZ3eiVgc0xUVitCQlFUdTQw
eStfWU0oM1ZHSUJfU0RraiYjJTktZzVTVGdnNGRRRmV9M0l0X0xQdWspbmU1Iwp6UExCKWVQWG5q
NG56d0I2WFUjOXllfEo4LXtITkRgUlJANjFVcGBJI19NYjBqOHEtVnY0NFFadDFQYTlONnokS3cK
enA+dUteeihLZ0Y5XjZAUDtvUkJnPyM5Y0BvIWA4QGVmZGlOZ300NSZ3dnFrJFErTXgrLVFAb0Mo
bSNURmZkTm8oCno1YzBVXykpTklwN2pDWXJUc1QpdGNrM0BMd3FKWl9kLVYhUEFxa1FJRGVyOHJV
VV9NO3tiRFdNdCRQZFNsdlkhVgp6YkI9SztBMj50UyZ5ZktLO2lod049V0ZTMWVRVGskXzFeOFpi
czF0cjBEMTVCK1dKPGx3Ymc/PnBNI3RwNjtqODUKeko2QjcwPm9AMXl3PzI0JVo5ezs0PHAjUnxe
MSs/OGpocGxCVGVZO1lGYChvfmtiMS1wO2N7P1FyN2QqZjh1amFRCno+Q058ZEY0YU1ibmMqLSVH
WHFGQGY5RiNEYGRzcj9FcDdET3leeEZVTGVHe0NnVmFPZGBpdDxDVEFifiFYPEBtUgp6SHROcnhO
akxBX1MkKVB5UzIrTk8wYH43WWYhd3tiYHBvbVElXlM2fVFGamM+SnRiJEloNVZkNjBJNyQjSGdP
aXAKejA/c0lIITcoaD1udk1Ga0d3Qk4teT5hUVA7KHF+Z29QenlwMT84akhmQkVaY1hWTXBIJXxf
aVpFR2NiNHohXyh1CnozP0xjaVk4fmNVWj1vcFF3NmAkbEVpQmZXanJDX00+RV8rclBoYWdUY08y
WlhYUGlMcC1oVFModnoydFMpQC1iTQp6M3lhPnVUK2RjPG41eiF9Q2I1JFV0Pmk3dElFeEdPdF4y
RiU8QENuS0l+VDdOSmFpUE9xaEpkamB0aT1pWXdKX1oKejh9cUlFdElwenJ3PWc1TFFXODdLUUdm
dVQ2IURJKz5AOEkxVFZHdlJGRXpKNXgkfSRYaWl6bDklQTc8K2t8LXZrCnpwWF4rQ1pvU21wbnMw
cXwhQ1I8MCN4aDB4QWQ/T3hvVHt7ZigjbEchUk5EX09mNElHfUlhUEZTYU4/Z2hKMDF3QQp6c2lK
Y3FabSg9cytZY0ApdDx0a3U3fGJwR3BvQGh9bChEM1k2JDBmLSp9R3dwSWYrJiZkcTwkR2oxe0du
Z3prV2cKentqZXhqdkxJeFVxRGh1emApPG0rWU9FfCoxUj9AZWd7bmVDSysjMFZxTFBKQ3FGNGxV
MERVailIU2Q7NXdTbj1wCnpZbTJeWGBgaCk2NGxqYTQwNGdFaGQwRT1FTEc5WjdSdn51eVVkLUhB
PGRyK0VsN3NLKHU3eEErI2V5SGMkKkFlcAp6bGNTRihmS0xHYlo7cyFOK24ofjwpVCE1eS1aLU88
X3RRfDI8aXIpc2Qqe0BFQ21DP2tGN340aStFO05CZkc3RF8KemY1PkxvSjBiMXY9S1VPUUZtYXVY
ZEwjaEtBIWpzeCRoazVBUWgrR2tsaEooelB3VkZWeVpjXyp4NUpfNSpASUNgCnpBeCglVldEcl55
SE5gKXZzezA+STN0ZH0/TExOQkZLQUBuMFFEQitTX0xTX3o4MjcqWUQyUCMlOWhPQHYqJTh7Rgp6
eiVse2pRR2Yoc0xQakM/NnFZSnVZdHJmZEFnRDY3NnFYOVBDdUFKX044a1Y7MXMkUWFnPyF7S1l1
QDxkenVxLSoKekJALT1+TlJtczwkSHI0S1EoOVhZK3VwTEtrZEs3Y3JsNH5hQU9NJiUzaihHOXpX
IXE3PVlJensyakMyVjV9XnFOCnpaaFN+bWgkeWZPS3BWaCswZUp9RVlYTVZkN0o3Z09UK0V6O25U
ZlZjb0pPSmJVPl5gdHByfEp4a1RGWEdmK0M+TQp6ZmBBPFdFa1lpZHhKTUAxcTlEc0QkZX1KYShK
WFRYMj1eJUpHNkdHQzZoSnROQ3s5ITliO35kbHN6REhpPjxGK0kKek1mV21TWHEjd3VvUXMoemx7
bDM+TSUyVSV0YG8obE5ePXdscTFwQGV1QG4/YDRHWVlLcG92RHU1RDUoPzhxPWg1CnZZIW1+NHJB
ZFdJNUNMU2xMVkQ1X0FDS3QoZk51cj5rTlpvemJTPkpuMDAwMDBOa3ZYWHUwbWpmeFNtOEAKCmxp
dGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL01haW4uaHRtbCBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01haW4uaHRtbAppbmRleCAzMGQzZjQyOTI3NGU0MWVjMzUxMjBkNDQ4MTc4YTYzNmM0MDc2
NzkyLi41ODhlNDcxMGMxNTEzYmRmNjNiOTRjMGFhNTQyNDQyZjk5ZWQ5MTdhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCkBAIC0xMjgsNiArMTI4
LDggQEAKICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlNsaWRlci5jc3MiPgogICAg
IDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iQ29sb3JXaGVlbC5jc3MiPgogICAgIDxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iQ29sb3JQaWNrZXIuY3NzIj4KKyAgICA8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9IkdyYWRpZW50U2xpZGVyLmNzcyI+CisgICAgPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSJDb2RlTWlycm9yR3JhZGllbnRFZGl0aW5nQ29udHJvbGxlci5jc3Mi
PgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iQ29kZU1pcnJvckRyYWdUb0FsdGVy
TnVtYmVyQ29udHJvbGxlci5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
R29Ub0xpbmVEaWFsb2cuY3NzIj4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ikhv
dmVyTWVudS5jc3MiPgpAQCAtNDQ3LDcgKzQ0OSwxMCBAQAogICAgIDxzY3JpcHQgc3JjPSJIb3Zl
ck1lbnUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb2RlTWlycm9yRWRpdGluZ0Nv
bnRyb2xsZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb2RlTWlycm9yQ29sb3JF
ZGl0aW5nQ29udHJvbGxlci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IkdyYWRpZW50
LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iR3JhZGllbnRTbGlkZXIuanMiPjwvc2Ny
aXB0PgogICAgIDxzY3JpcHQgc3JjPSJNYWluLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNy
Yz0iQ29kZU1pcnJvckdyYWRpZW50RWRpdGluZ0NvbnRyb2xsZXIuanMiPjwvc2NyaXB0PgogCiAg
ICAgPHNjcmlwdD4KICAgICAgICAgV2ViSW5zcGVjdG9yLmxvYWRlZCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvU291cmNlQ29kZVRleHRFZGl0b3Iu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Tb3VyY2VDb2RlVGV4dEVk
aXRvci5qcwppbmRleCAwMTY2OTQ1ZGQ1NzdkNDAxOGRkMDMxZmM5ZjlmMmU2MzZkODk4Yjk3Li5m
NzlmYTkwZDdkMDkxM2Y1ZmEwY2RiMjI3ZTdiN2Y2M2E3Y2FjNDRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Tb3VyY2VDb2RlVGV4dEVkaXRvci5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Tb3VyY2VDb2RlVGV4dEVk
aXRvci5qcwpAQCAtMTI3Nyw2ICsxMjc3LDcgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0
RWRpdG9yLnByb3RvdHlwZSA9IHsKICAgICBfdXBkYXRlRWRpdGFibGVNYXJrZXJzOiBmdW5jdGlv
bihyYW5nZSkKICAgICB7CiAgICAgICAgIHRoaXMuY3JlYXRlQ29sb3JNYXJrZXJzKHJhbmdlKTsK
KyAgICAgICAgdGhpcy5jcmVhdGVHcmFkaWVudE1hcmtlcnMocmFuZ2UpOwogCiAgICAgICAgIHRo
aXMuX3VwZGF0ZVRva2VuVHJhY2tpbmdDb250cm9sbGVyU3RhdGUoKTsKICAgICB9LApAQCAtMTI4
Niw3ICsxMjg3LDcgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgLy8gTG9vayBmb3IgdGhlIG91dGVybW9zdCBlZGl0YWJsZSBtYXJrZXIu
CiAgICAgICAgIHZhciBlZGl0YWJsZU1hcmtlcjsKICAgICAgICAgZm9yICh2YXIgbWFya2VyIG9m
IG1hcmtlcnMpIHsKLSAgICAgICAgICAgIGlmICghbWFya2VyLnJhbmdlIHx8IG1hcmtlci50eXBl
ICE9PSBXZWJJbnNwZWN0b3IuVGV4dE1hcmtlci5UeXBlLkNvbG9yKQorICAgICAgICAgICAgaWYg
KCFtYXJrZXIucmFuZ2UgfHwgKG1hcmtlci50eXBlICE9PSBXZWJJbnNwZWN0b3IuVGV4dE1hcmtl
ci5UeXBlLkNvbG9yICYmIG1hcmtlci50eXBlICE9PSBXZWJJbnNwZWN0b3IuVGV4dE1hcmtlci5U
eXBlLkdyYWRpZW50KSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAg
aWYgKCFlZGl0YWJsZU1hcmtlciB8fCAobWFya2VyLnJhbmdlLnN0YXJ0TGluZSA8IGVkaXRhYmxl
TWFya2VyLnJhbmdlLnN0YXJ0TGluZSB8fCAobWFya2VyLnJhbmdlLnN0YXJ0TGluZSA9PT0gZWRp
dGFibGVNYXJrZXIucmFuZ2Uuc3RhcnRMaW5lICYmIG1hcmtlci5yYW5nZS5zdGFydENvbHVtbiA8
IGVkaXRhYmxlTWFya2VyLnJhbmdlLnN0YXJ0Q29sdW1uKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXh0RWRpdG9yLmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGV4dEVkaXRvci5qcwppbmRleCA5OWQ2YTMxNmMyNjZl
NmFhN2E3NjE3YTcyODZhY2YzY2U2ZTkyZGU1Li5hMDQ1MjVjNjcxMzdhNjNlZjQyZDNmZTljMDMy
NjgxMjI4NzU1ZWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9UZXh0RWRpdG9yLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1RleHRFZGl0b3IuanMKQEAgLTYyMSwxMSArNjIxLDE4IEBAIFdlYkluc3BlY3Rvci5UZXh0
RWRpdG9yLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2NvZGVNaXJyb3IuY3Jl
YXRlQ29sb3JNYXJrZXJzKHJhbmdlKTsKICAgICB9LAogCisgICAgY3JlYXRlR3JhZGllbnRNYXJr
ZXJzOiBmdW5jdGlvbihyYW5nZSkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9jb2RlTWly
cm9yLmNyZWF0ZUdyYWRpZW50TWFya2VycyhyYW5nZSk7CisgICAgfSwKKwogICAgIGVkaXRpbmdD
b250cm9sbGVyRm9yTWFya2VyOiBmdW5jdGlvbihlZGl0YWJsZU1hcmtlcikKICAgICB7CiAgICAg
ICAgIHN3aXRjaCAoZWRpdGFibGVNYXJrZXIudHlwZSkgewogICAgICAgICBjYXNlIFdlYkluc3Bl
Y3Rvci5UZXh0TWFya2VyLlR5cGUuQ29sb3I6CiAgICAgICAgICAgICByZXR1cm4gbmV3IFdlYklu
c3BlY3Rvci5Db2RlTWlycm9yQ29sb3JFZGl0aW5nQ29udHJvbGxlcih0aGlzLl9jb2RlTWlycm9y
LCBlZGl0YWJsZU1hcmtlcik7CisgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRleHRNYXJrZXIu
VHlwZS5HcmFkaWVudDoKKyAgICAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkNvZGVN
aXJyb3JHcmFkaWVudEVkaXRpbmdDb250cm9sbGVyKHRoaXMuX2NvZGVNaXJyb3IsIGVkaXRhYmxl
TWFya2VyKTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiBuZXcgV2ViSW5z
cGVjdG9yLkNvZGVNaXJyb3JFZGl0aW5nQ29udHJvbGxlcih0aGlzLl9jb2RlTWlycm9yLCBlZGl0
YWJsZU1hcmtlcik7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1RleHRNYXJrZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9UZXh0TWFya2VyLmpzCmluZGV4IGQxNTA2YjAzNTdlYzlhNzExODFiODE5NTdm
MTcxZmZlMDlhYTVhMWQuLmU4MTlhZWYxZjMxNWQ1OWI0YzAyZmYyOGIwMjQ0YmY1NmZlOTdmODgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1RleHRNYXJr
ZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGV4dE1hcmtl
ci5qcwpAQCAtMzUsNiArMzUsNyBAQCBXZWJJbnNwZWN0b3IuVGV4dE1hcmtlciA9IGZ1bmN0aW9u
KGNvZGVNaXJyb3JUZXh0TWFya2VyLCB0eXBlKQogCiBXZWJJbnNwZWN0b3IuVGV4dE1hcmtlci5U
eXBlID0gewogICAgIENvbG9yOiAidGV4dC1tYXJrZXItdHlwZS1jb2xvciIsCisgICAgR3JhZGll
bnQ6ICJ0ZXh0LW1hcmtlci10eXBlLWdyYWRpZW50IiwKICAgICBQbGFpbjogInRleHQtbWFya2Vy
LXR5cGUtcGxhaW4iCiB9OwogCg==
</data>
<flag name="review"
          id="248887"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
      

    </bug>

</bugzilla>