<?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>54671</bug_id>
          
          <creation_ts>2011-02-17 10:08:57 -0800</creation_ts>
          <short_desc>Web Inspector: provide a button to expand inspector toolbar when not all panel buttons fit</short_desc>
          <delta_ts>2011-02-22 05:25:03 -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 (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andrey Kosyakov">caseq</reporter>
          <assigned_to name="Andrey Kosyakov">caseq</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>dglazkov</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>352994</commentid>
    <comment_count>0</comment_count>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2011-02-17 10:08:57 -0800</bug_when>
    <thetext>When window is not wide enough for toolbar to accommodate everything, search control is retained, right-most icons are hidden and a button is displayed to open a drop down with the rest of the icons.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>352995</commentid>
    <comment_count>1</comment_count>
      <attachid>82826</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2011-02-17 10:09:29 -0800</bug_when>
    <thetext>Created attachment 82826
screenshot</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353001</commentid>
    <comment_count>2</comment_count>
      <attachid>82829</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2011-02-17 10:16:00 -0800</bug_when>
    <thetext>Created attachment 82829
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353002</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-02-17 10:18:40 -0800</bug_when>
    <thetext>Attachment 82829 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/inspector/front-end/ToolbarDropdown.js:1:  One or more unexpected \r (^M) found; better to use only a \n  [whitespace/carriage_return] [1]
Suppressing further [whitespace/carriage_return] reports for this file.
Total errors found: 125 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353011</commentid>
    <comment_count>4</comment_count>
      <attachid>82829</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-02-17 10:35:07 -0800</bug_when>
    <thetext>Comment on attachment 82829
patch

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

&gt; Source/WebCore/inspector/front-end/ToolbarDropdown.js:37
&gt; +    var toolbarStyle = getComputedStyle(this._toolbar);

You should make original style applicable to the new elements. Also won&apos;t work for the Mac port.

&gt; Source/WebCore/inspector/front-end/ToolbarDropdown.js:99
&gt; +    if (!WebInspector.toolbarDropdown) {

Could you keep it as a local state?

&gt; Source/WebCore/inspector/front-end/inspector.css:184
&gt; +    background-image: -webkit-gradient(linear, left top, left bottom, from(rgba(251, 251, 251, 0.9)), to(rgba(231, 231, 231, 0.9)));

Should it be themed? toolbar-label ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353552</commentid>
    <comment_count>5</comment_count>
      <attachid>82948</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2011-02-18 05:53:15 -0800</bug_when>
    <thetext>Created attachment 82948
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353562</commentid>
    <comment_count>6</comment_count>
      <attachid>82948</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-02-18 06:29:04 -0800</bug_when>
    <thetext>Comment on attachment 82948
patch

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

&gt; Source/WebCore/inspector/front-end/ToolbarDropdown.js:31
&gt; +WebInspector.ToolbarDropdown = function()

I think you should extract toobar component from inspector.js, not make it involved with dropdown in addition to the toolbar internals.

&gt; Source/WebCore/inspector/front-end/ToolbarDropdown.js:77
&gt; +                var clone = toolbarElement.cloneNode(true);

I don&apos;t think you should clone node here, it would be more intuitive to simply reuse toolbar button creation code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>354618</commentid>
    <comment_count>7</comment_count>
      <attachid>83170</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2011-02-21 08:54:57 -0800</bug_when>
    <thetext>Created attachment 83170
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>354619</commentid>
    <comment_count>8</comment_count>
      <attachid>83170</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-02-21 08:58:06 -0800</bug_when>
    <thetext>Comment on attachment 83170
patch

Could you split this into a number of changes that we could review?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>354668</commentid>
    <comment_count>9</comment_count>
      <attachid>83183</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2011-02-21 10:36:29 -0800</bug_when>
    <thetext>Created attachment 83183
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>354670</commentid>
    <comment_count>10</comment_count>
      <attachid>83184</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2011-02-21 10:38:59 -0800</bug_when>
    <thetext>Created attachment 83184
patch (added missing file)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>354672</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-02-21 10:39:48 -0800</bug_when>
    <thetext>Attachment 83183 did not build on chromium:
Build output: http://queues.webkit.org/results/7939811</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>354683</commentid>
    <comment_count>12</comment_count>
      <attachid>83184</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-02-21 10:45:39 -0800</bug_when>
    <thetext>Comment on attachment 83184
patch (added missing file)

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

&gt; Source/WebCore/inspector/front-end/Toolbar.js:110
&gt; +    {

Nuke this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355172</commentid>
    <comment_count>13</comment_count>
      <attachid>83297</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2011-02-22 04:13:25 -0800</bug_when>
    <thetext>Created attachment 83297
patch to land

- Fixed toolbar dragging
- Nuked _toolbarItemClicked</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355198</commentid>
    <comment_count>14</comment_count>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2011-02-22 05:25:03 -0800</bug_when>
    <thetext>Manually committed r79313: http://trac.webkit.org/changeset/79313</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>82826</attachid>
            <date>2011-02-17 10:09:29 -0800</date>
            <delta_ts>2011-02-17 10:09:29 -0800</delta_ts>
            <desc>screenshot</desc>
            <filename>toolbar-dropdown-screenshot.png</filename>
            <type>image/png</type>
            <size>57951</size>
            <attacher name="Andrey Kosyakov">caseq</attacher>
            
              <data encoding="base64">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
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82829</attachid>
            <date>2011-02-17 10:16:00 -0800</date>
            <delta_ts>2011-02-18 05:53:15 -0800</delta_ts>
            <desc>patch</desc>
            <filename>toolbar-expand.diff</filename>
            <type>text/plain</type>
            <size>20157</size>
            <attacher name="Andrey Kosyakov">caseq</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBmNDM1YTRkLi5lZjdmZDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTkg
QEAKKzIwMTEtMDItMTcgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBwcm92aWRlIGEgYnV0dG9uIHRvIGV4cGFuZCBpbnNwZWN0b3IgdG9vbGJhciB3aGVuIG5v
dCBhbGwgcGFuZWwgYnV0dG9ucyBmaXQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01NDY3MQorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAg
ICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvVG9vbGJhckRyb3Bkb3duLmpzOiBBZGRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5Ub29sYmFyRHJvcGRvd24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRvb2xiYXJEcm9wZG93
bi5wcm90b3R5cGUuc2hvdyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVG9vbGJhckRyb3Bkb3du
LnByb3RvdHlwZS5oaWRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Ub29sYmFyRHJvcGRvd24u
cHJvdG90eXBlLmdldCB2aXNpYmxlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Ub29sYmFyRHJv
cGRvd24ucHJvdG90eXBlLl9wb3B1bGF0ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVG9vbGJh
ckRyb3Bkb3duLnByb3RvdHlwZS5fb25LZXlEb3duKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5U
b29sYmFyRHJvcGRvd24uc2V0VmlzaWJsZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVG9vbGJh
ckRyb3Bkb3duLnRvZ2dsZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVG9vbGJhckRyb3Bkb3du
LnVwZGF0ZUJ1dHRvbkFuZFJlbW92ZURyb3Bkb3duKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJv
bnQtZW5kL1dlYktpdC5xcmM6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0
b3IuY3NzOgorICAgICAgICAoI3Rvb2xiYXIpOgorICAgICAgICAoLnRvb2xiYXItaXRlbSk6Cisg
ICAgICAgICgudG9vbGJhci1pdGVtLnRvZ2dsZWFibGUudG9nZ2xlZC1vbik6CisgICAgICAgICgj
dG9vbGJhci1kcm9wZG93biAudG9vbGJhci1pY29uKToKKyAgICAgICAgKCN0b29sYmFyLWRyb3Bk
b3duIC50b29sYmFyLWxhYmVsKToKKyAgICAgICAgKCN0b29sYmFyLWNvbnRyb2xzKToKKyAgICAg
ICAgKCN0b29sYmFyLWRyb3Bkb3duLWFycm93KToKKyAgICAgICAgKCN0b29sYmFyLWRyb3Bkb3du
LWFycm93LmRyb3Bkb3duLXZpc2libGUpOgorICAgICAgICAoI3Rvb2xiYXItZHJvcGRvd24tYXJy
b3c6aG92ZXIpOgorICAgICAgICAoI3Rvb2xiYXItZHJvcGRvd24tYXJyb3c6YWN0aXZlKToKKyAg
ICAgICAgKCN0b29sYmFyLWRyb3Bkb3duKToKKyAgICAgICAgKCN0b29sYmFyLWRyb3Bkb3duIC5z
Y3JvbGxhYmxlLWNvbnRlbnQpOgorICAgICAgICAoI3Rvb2xiYXItZHJvcGRvd24gLnRvb2xiYXIt
aXRlbSk6CisgICAgICAgICgjdG9vbGJhci1kcm9wZG93biAudG9vbGJhci1pdGVtLnRvZ2dsZWFi
bGUudG9nZ2xlZC1vbik6CisgICAgICAgICgjdG9vbGJhci1kcm9wZG93biAudG9vbGJhci1pdGVt
OmhvdmVyKToKKyAgICAgICAgKCN0b29sYmFyLWRyb3Bkb3duIC50b29sYmFyLWl0ZW0udG9nZ2xl
YWJsZS50b2dnbGVkLW9uOmhvdmVyKToKKyAgICAgICAgKCN0b29sYmFyLWRyb3Bkb3duIC50b29s
YmFyLWl0ZW06YWN0aXZlIC50b29sYmFyLWljb24pOgorICAgICAgICAoLnNjcm9sbGFibGUtY29u
dGVudCk6CisgICAgICAgICguc2Nyb2xsYWJsZS1jb250ZW50Ojotd2Via2l0LXNjcm9sbGJhcik6
CisgICAgICAgICguc2Nyb2xsYWJsZS1jb250ZW50Ojotd2Via2l0LXJlc2l6ZXIpOgorICAgICAg
ICAoLnNjcm9sbGFibGUtY29udGVudDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6dmVydGljYWwp
OgorICAgICAgICAoLnNjcm9sbGFibGUtY29udGVudDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6
dmVydGljYWw6YWN0aXZlKToKKyAgICAgICAgKC5zY3JvbGxhYmxlLWNvbnRlbnQ6Oi13ZWJraXQt
c2Nyb2xsYmFyLXRyYWNrOnZlcnRpY2FsKToKKyAgICAgICAgKC50b29sYmFyLXNlYXJjaC1pdGVt
KToKKyAgICAgICAgKCNzZWFyY2gpOgorICAgICAgICAoYm9keS5hdHRhY2hlZCAjc2VhcmNoKToK
KyAgICAgICAgKCNzZWFyY2gtcmVzdWx0cy1tYXRjaGVzKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
aW5zcGVjdG9yLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmFkZFBhbmVsVG9vbGJhckljb24p
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLndpbmRvd1Jlc2l6ZSk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IudG9nZ2xlQXR0YWNoKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci51cGRhdGVTZWFyY2hN
YXRjaGVzQ291bnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLl90b29sYmFySXRlbUNsaWNrZWQp
OgorCiAyMDExLTAyLTE2ICBQYXZlbCBQb2Rpdmlsb3YgIDxwb2Rpdmlsb3ZAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IFl1cnkgU2VtaWtoYXRza3kuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
aW5kZXggYTk5ZjdiOS4uYzgyNTRlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNDc2Myw2ICs0NzYz
LDcgQEAKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lT3ZlcnZpZXdQ
YW5lLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lR3JpZC5q
cycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZVBhbmVsLmpzJywK
KyAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL1Rvb2xiYXJEcm9wZG93bi5qcycsCiAg
ICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9Ub3BEb3duUHJvZmlsZURhdGFHcmlkVHJl
ZS5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC90cmVlb3V0bGluZS5qcycs
CiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC91dGlsaXRpZXMuanMnLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCAyN2MzYzVjLi43
MjkxNDAxIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
agpAQCAtNjYwOTMsNiArNjYwOTMsMTAgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8Rmls
ZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcVG9vbGJhckRyb3Bk
b3duLmpzIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0
aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxUb3BEb3duUHJvZmlsZURhdGFHcmlkVHJlZS5qcyIK
IAkJCQkJPgogCQkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvVG9vbGJhckRyb3Bkb3duLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9Ub29sYmFyRHJvcGRvd24uanMKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXgg
MDAwMDAwMC4uMmM1NzFlMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvVG9vbGJhckRyb3Bkb3duLmpzCkBAIC0wLDAgKzEsMTI1IEBACisvKg0K
KyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0K
KyAqDQorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0DQorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQ0KKyAqIG1ldDoNCisgKg0KKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0DQorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUNCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyDQorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQ0KKyAqIGRpc3RyaWJ1dGlvbi4NCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzDQorICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20NCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLg0KKyAq
DQorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUw0KKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UDQorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SDQorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQNCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwNCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UDQorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
DQorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZDQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVA0KKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQ0KKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuDQorICovDQorDQorV2ViSW5zcGVjdG9yLlRvb2xiYXJEcm9wZG93biA9IGZ1
bmN0aW9uKCkNCit7DQorICAgIHRoaXMuX3Rvb2xiYXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgidG9vbGJhciIpOw0KKyAgICB0aGlzLl9hcnJvdyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJ0b29sYmFyLWRyb3Bkb3duLWFycm93Iik7DQorICAgIHRoaXMuZWxlbWVudCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImRpdiIpOw0KKyAgICB0aGlzLmVsZW1lbnQuaWQgPSAidG9vbGJhci1k
cm9wZG93biI7DQorICAgIHZhciB0b29sYmFyU3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKHRoaXMu
X3Rvb2xiYXIpOw0KKyAgICB0aGlzLmVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZEltYWdlID0gdG9v
bGJhclN0eWxlLmJhY2tncm91bmRJbWFnZTsNCisgICAgdGhpcy5lbGVtZW50LnN0eWxlLmJhY2tn
cm91bmRDb2xvciA9IHRvb2xiYXJTdHlsZS5iYWNrZ3JvdW5kQ29sb3I7DQorICAgIA0KKyAgICB0
aGlzLl9jb250ZW50RWxlbWVudCA9IHRoaXMuZWxlbWVudC5jcmVhdGVDaGlsZCgiZGl2IiwgInNj
cm9sbGFibGUtY29udGVudCIpOw0KKyAgICB0aGlzLl9jb250ZW50RWxlbWVudC50YWJJbmRleCA9
IDA7DQorICAgIHRoaXMuX2NvbnRlbnRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24i
LCB0aGlzLl9vbktleURvd24uYmluZCh0aGlzKSwgdHJ1ZSk7DQorfQ0KKw0KK1dlYkluc3BlY3Rv
ci5Ub29sYmFyRHJvcGRvd24ucHJvdG90eXBlID0gew0KKyAgICBzaG93OiBmdW5jdGlvbigpDQor
ICAgIHsNCisgICAgICAgIGlmICh0aGlzLnZpc2libGUpDQorICAgICAgICAgICAgcmV0dXJuOw0K
KyAgICAgICAgdmFyIHN0eWxlID0gdGhpcy5lbGVtZW50LnN0eWxlOw0KKyAgICAgICAgdGhpcy5f
cG9wdWxhdGUoKTsNCisgICAgICAgIHZhciB0b3AgPSB0aGlzLl9hcnJvdy50b3RhbE9mZnNldFRv
cCArIHRoaXMuX2Fycm93LmNsaWVudEhlaWdodDsNCisgICAgICAgIHRoaXMuX2Fycm93LmFkZFN0
eWxlQ2xhc3MoImRyb3Bkb3duLXZpc2libGUiKTsNCisgICAgICAgIHRoaXMuZWxlbWVudC5zdHls
ZS50b3AgPSB0b3AgKyAicHgiOw0KKyAgICAgICAgdGhpcy5lbGVtZW50LnN0eWxlLmxlZnQgPSB0
aGlzLl9hcnJvdy50b3RhbE9mZnNldExlZnQgKyAicHgiOw0KKyAgICAgICAgdGhpcy5fY29udGVu
dEVsZW1lbnQuc3R5bGUubWF4SGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0IC0gdG9wIC0gMjAg
KyAicHgiOw0KKyAgICAgICAgdGhpcy5fdG9vbGJhci5hcHBlbmRDaGlsZCh0aGlzLmVsZW1lbnQp
Ow0KKyAgICAgICAgV2ViSW5zcGVjdG9yLmN1cnJlbnRGb2N1c0VsZW1lbnQgPSB0aGlzLmNvbnRl
bnRFbGVtZW50Ow0KKyAgICB9LA0KKw0KKyAgICBoaWRlOiBmdW5jdGlvbigpDQorICAgIHsNCisg
ICAgICAgIGlmICghdGhpcy52aXNpYmxlKQ0KKyAgICAgICAgICAgIHJldHVybjsNCisgICAgICAg
IHRoaXMuX2Fycm93LnJlbW92ZVN0eWxlQ2xhc3MoImRyb3Bkb3duLXZpc2libGUiKTsNCisgICAg
ICAgIHRoaXMuZWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMuZWxlbWVudCk7DQor
ICAgICAgICB0aGlzLl9jb250ZW50RWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOw0KKyAgICB9LA0K
Kw0KKyAgICBnZXQgdmlzaWJsZSgpDQorICAgIHsNCisgICAgICAgIHJldHVybiAhIXRoaXMuZWxl
bWVudC5wYXJlbnROb2RlOw0KKyAgICB9LA0KKw0KKyAgICBfcG9wdWxhdGU6IGZ1bmN0aW9uKCkN
CisgICAgew0KKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBXZWJJbnNwZWN0b3IucGFuZWxP
cmRlci5sZW5ndGg7ICsraSkgew0KKyAgICAgICAgICAgIHZhciB0b29sYmFyRWxlbWVudCA9IFdl
Ykluc3BlY3Rvci5wYW5lbE9yZGVyW2ldLnRvb2xiYXJJdGVtOw0KKyAgICAgICAgICAgIGlmICh0
b29sYmFyRWxlbWVudC5vZmZzZXRUb3AgPiAwKSB7DQorICAgICAgICAgICAgICAgIHZhciBjbG9u
ZSA9IHRvb2xiYXJFbGVtZW50LmNsb25lTm9kZSh0cnVlKTsNCisgICAgICAgICAgICAgICAgY2xv
bmUuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0b29sYmFyRWxlbWVudC5kaXNwYXRjaEV2ZW50
LmJpbmQodG9vbGJhckVsZW1lbnQpLCBmYWxzZSk7DQorICAgICAgICAgICAgICAgIHRoaXMuX2Nv
bnRlbnRFbGVtZW50LmFwcGVuZENoaWxkKGNsb25lKTsNCisgICAgICAgICAgICB9DQorICAgICAg
ICB9DQorICAgIH0sDQorDQorICAgIF9vbktleURvd246IGZ1bmN0aW9uKGV2ZW50KQ0KKyAgICB7
DQorICAgICAgICBpZiAoZXZlbnQua2V5Q29kZSAhPT0gV2ViSW5zcGVjdG9yLktleWJvYXJkU2hv
cnRjdXQuS2V5cy5Fc2MuY29kZSkNCisgICAgICAgICAgICByZXR1cm47DQorICAgICAgICBldmVu
dC5zdG9wUHJvcGFnYXRpb24oKTsNCisgICAgICAgIHRoaXMuaGlkZSgpOw0KKyAgICB9DQorfTsN
CisNCitXZWJJbnNwZWN0b3IuVG9vbGJhckRyb3Bkb3duLnNldFZpc2libGUgPSBmdW5jdGlvbih2
aXNpYmxlKQ0KK3sNCisgICAgaWYgKCFXZWJJbnNwZWN0b3IudG9vbGJhckRyb3Bkb3duKSB7DQor
ICAgICAgICBpZiAoIXZpc2libGUpDQorICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgV2Vi
SW5zcGVjdG9yLnRvb2xiYXJEcm9wZG93biA9IG5ldyBXZWJJbnNwZWN0b3IuVG9vbGJhckRyb3Bk
b3duKCk7DQorICAgIH0NCisgICAgaWYgKHZpc2libGUpDQorICAgICAgICBXZWJJbnNwZWN0b3Iu
dG9vbGJhckRyb3Bkb3duLnNob3coKTsNCisgICAgZWxzZQ0KKyAgICAgICAgV2ViSW5zcGVjdG9y
LnRvb2xiYXJEcm9wZG93bi5oaWRlKCk7DQorfQ0KKw0KK1dlYkluc3BlY3Rvci5Ub29sYmFyRHJv
cGRvd24udG9nZ2xlID0gZnVuY3Rpb24oKQ0KK3sNCisgICAgV2ViSW5zcGVjdG9yLlRvb2xiYXJE
cm9wZG93bi5zZXRWaXNpYmxlKCFXZWJJbnNwZWN0b3IudG9vbGJhckRyb3Bkb3duIHx8ICFXZWJJ
bnNwZWN0b3IudG9vbGJhckRyb3Bkb3duLnZpc2libGUpOw0KK30NCisNCitXZWJJbnNwZWN0b3Iu
VG9vbGJhckRyb3Bkb3duLnVwZGF0ZUJ1dHRvbkFuZFJlbW92ZURyb3Bkb3duID0gZnVuY3Rpb24o
KQ0KK3sNCisgICAgV2ViSW5zcGVjdG9yLlRvb2xiYXJEcm9wZG93bi5zZXRWaXNpYmxlKGZhbHNl
KTsNCisNCisgICAgdmFyIGJ1dHRvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0b29sYmFy
LWRyb3Bkb3duLWFycm93Iik7DQorICAgIHZhciB0b29sYmFyID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInRvb2xiYXIiKTsNCisgICAgaWYgKHRvb2xiYXIuc2Nyb2xsSGVpZ2h0ID4gdG9vbGJh
ci5jbGllbnRIZWlnaHQpDQorICAgICAgICBidXR0b24ucmVtb3ZlU3R5bGVDbGFzcygiaGlkZGVu
Iik7DQorICAgIGVsc2UNCisgICAgICAgIGJ1dHRvbi5hZGRTdHlsZUNsYXNzKCJoaWRkZW4iKTsN
Cit9DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJL
aXQucXJjIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCmlu
ZGV4IGJiZGZmOWMuLmFjN2JjZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvV2ViS2l0LnFyYworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1dlYktpdC5xcmMKQEAgLTExMSw2ICsxMTEsNyBAQAogICAgIDxmaWxlPlRpbWVsaW5l
R3JpZC5qczwvZmlsZT4KICAgICA8ZmlsZT5UaW1lbGluZU92ZXJ2aWV3UGFuZS5qczwvZmlsZT4K
ICAgICA8ZmlsZT5UaW1lbGluZVBhbmVsLmpzPC9maWxlPgorICAgIDxmaWxlPlRvb2xiYXJEcm9w
ZG93bi5qczwvZmlsZT4KICAgICA8ZmlsZT5Ub3BEb3duUHJvZmlsZURhdGFHcmlkVHJlZS5qczwv
ZmlsZT4KICAgICA8ZmlsZT50cmVlb3V0bGluZS5qczwvZmlsZT4KICAgICA8ZmlsZT51dGlsaXRp
ZXMuanM8L2ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL2luc3BlY3Rvci5jc3MgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2lu
c3BlY3Rvci5jc3MKaW5kZXggYzk5MjgwNi4uZmZhMDM1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcwpAQCAtNzYsNyArNzYsNiBAQCBp
bWcgewogICAgIGxlZnQ6IDA7CiAgICAgcmlnaHQ6IDA7CiAgICAgaGVpZ2h0OiA1NnB4OwotICAg
IGRpc3BsYXk6IC13ZWJraXQtYm94OwogICAgIHBhZGRpbmc6IDAgNXB4OwogICAgIGJhY2tncm91
bmQtaW1hZ2U6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCBsZWZ0IHRvcCwgbGVmdCBib3R0b20s
IGZyb20ocmdiKDE5MSwgMTkxLCAxOTEpKSwgdG8ocmdiKDE1MSwgMTUxLCAxNTEpKSk7CiAgICAg
Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYig4MCwgODAsIDgwKTsKQEAgLTExMSwzMiArMTEw
LDE5IEBAIGJvZHkuYXR0YWNoZWQuaW5hY3RpdmUgI3Rvb2xiYXIgewogfQogCiAudG9vbGJhci1p
dGVtIHsKLSAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKLSAgICBwYWRkaW5nOiA0cHggNnB4Owor
ICAgIHBhZGRpbmc6IDRweCA2cHggMCA0cHg7CiAgICAgbWFyZ2luOiAwOwogICAgIGJhY2tncm91
bmQtY29sb3I6IHRyYW5zcGFyZW50OwogICAgIGJvcmRlci1zdHlsZTogbm9uZTsKICAgICBib3Jk
ZXItY29sb3I6IHRyYW5zcGFyZW50OwotICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7
Ci0gICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjsKLSAgICAtd2Via2l0LWJveC1wYWNrOiBl
bmQ7CiB9CiAKIC50b29sYmFyLWl0ZW0udG9nZ2xlYWJsZS50b2dnbGVkLW9uIHsKICAgICBib3Jk
ZXItd2lkdGg6IDAgMnB4IDAgMnB4OwotICAgIHBhZGRpbmc6IDRweCA0cHg7CisgICAgcGFkZGlu
ZzogNHB4IDRweCAwIDRweDsKICAgICAtd2Via2l0LWJvcmRlci1pbWFnZTogdXJsKEltYWdlcy90
b29sYmFySXRlbVNlbGVjdGVkLnBuZykgMCAyIDAgMjsKIH0KIAotLnRvb2xiYXItaXRlbS5mbGV4
YWJsZS1zcGFjZSB7Ci0gICAgLXdlYmtpdC1ib3gtZmxleDogMTsKLSAgICB2aXNpYmlsaXR5OiBo
aWRkZW47Ci19Ci0KLS50b29sYmFyLWl0ZW0gaW5wdXQgewotICAgIG1hcmdpbi1ib3R0b206IDhw
eDsKLX0KLQogLnRvb2xiYXItaWNvbiB7CiAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAg
IHdpZHRoOiAzMnB4OwpAQCAtMTQ0LDcgKzEzMCw4IEBAIGJvZHkuYXR0YWNoZWQuaW5hY3RpdmUg
I3Rvb2xiYXIgewogICAgIC13ZWJraXQtYmFja2dyb3VuZC1zaXplOiAxMDAlIGF1dG87CiB9CiAK
LWJvZHkuYXR0YWNoZWQgLnRvb2xiYXItaWNvbiB7Citib2R5LmF0dGFjaGVkIC50b29sYmFyLWlj
b24sCisjdG9vbGJhci1kcm9wZG93biAudG9vbGJhci1pY29uIHsKICAgICB3aWR0aDogMjRweDsK
ICAgICBoZWlnaHQ6IDI0cHg7CiAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKQEAgLTE2OCw5
ICsxNTUsOSBAQCBib2R5LmF0dGFjaGVkIC50b29sYmFyLWl0ZW06YWN0aXZlIC50b29sYmFyLWlj
b24gewogICAgIHRleHQtc2hhZG93OiBub25lOwogfQogCi1ib2R5LmF0dGFjaGVkIC50b29sYmFy
LWxhYmVsIHsKK2JvZHkuYXR0YWNoZWQgLnRvb2xiYXItbGFiZWwsCisjdG9vbGJhci1kcm9wZG93
biAudG9vbGJhci1sYWJlbCB7CiAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwotICAgIHZlcnRp
Y2FsLWFsaWduOiBtaWRkbGU7CiAgICAgbWFyZ2luLWxlZnQ6IDNweDsKIH0KIApAQCAtMTc4LDI1
ICsxNjUsMTMzIEBAIGJvZHkuYXR0YWNoZWQgI3NlYXJjaC10b29sYmFyLWxhYmVsIHsKICAgICBk
aXNwbGF5OiBub25lOwogfQogCisjdG9vbGJhci1jb250cm9scyB7CisgICAgZmxvYXQ6IHJpZ2h0
OworICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OworICAgIC13ZWJraXQtYm94LWFsaWduOiBjZW50
ZXI7Cit9CisKKyN0b29sYmFyLWRyb3Bkb3duLWFycm93IHsKKyAgICBmb250LXNpemU6IDE2cHg7
CisgICAgZm9udC13ZWlnaHQ6IGJvbGQ7CisgICAgY29sb3I6IHJnYigxOCwgNTAsIDExNCk7Cisg
ICAgYm9yZGVyOiAwOworICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OworICAgIC13
ZWJraXQtYm9yZGVyLXJhZGl1czogNXB4OworfQorCisjdG9vbGJhci1kcm9wZG93bi1hcnJvdy5k
cm9wZG93bi12aXNpYmxlIHsKKyAgICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWdyYWRpZW50
KGxpbmVhciwgbGVmdCB0b3AsIGxlZnQgYm90dG9tLCBmcm9tKHJnYmEoMjUxLCAyNTEsIDI1MSwg
MC45KSksIHRvKHJnYmEoMjMxLCAyMzEsIDIzMSwgMC45KSkpOworfQorCisjdG9vbGJhci1kcm9w
ZG93bi1hcnJvdzpob3ZlciB7CisgICAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1ncmFkaWVu
dChsaW5lYXIsIGxlZnQgdG9wLCBsZWZ0IGJvdHRvbSwgZnJvbShyZ2JhKDE5MSwgMTkxLCAxOTEs
IDAuNykpLCB0byhyZ2JhKDE3MSwgMTcxLCAxNzEsIDAuNSkpKTsKK30KKworI3Rvb2xiYXItZHJv
cGRvd24tYXJyb3c6YWN0aXZlIHsKKyAgICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWdyYWRp
ZW50KGxpbmVhciwgbGVmdCB0b3AsIGxlZnQgYm90dG9tLCBmcm9tKHJnYmEoMTExLCAxMTEsIDEx
MSwgMC44KSksIHRvKHJnYmEoOTEsIDkxLCA5MSwgMC44KSkpOworfQorCisjdG9vbGJhci1kcm9w
ZG93biB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHotaW5kZXg6IDEwMDA7CisgICAg
LXdlYmtpdC1ib3gtc2hhZG93OiAzcHggM3B4IDNweCByZ2JhKDAsIDAsIDAsIDAuNCk7CisgICAg
Ym9yZGVyOiAxcHggc29saWQgcmdiKDEyOCwgMTI4LCAxMjgpOworICAgIG9wYWNpdHk6IDAuOTsK
KyAgICBwYWRkaW5nOiA0cHg7Cit9CisKKyN0b29sYmFyLWRyb3Bkb3duIC5zY3JvbGxhYmxlLWNv
bnRlbnQgeworICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OworICAgIC13ZWJraXQtYm94LW9yaWVu
dDogdmVydGljYWw7CisgICAgLXdlYmtpdC1ib3gtYWxpZ246IHN0YXJ0OworfQorCisjdG9vbGJh
ci1kcm9wZG93biAudG9vbGJhci1pdGVtIHsKKyAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKKyAg
ICAtd2Via2l0LWJveC1vcmllbnQ6IGhvcml6b250YWw7CisgICAgbWFyZ2luOiAwcHggMnB4Owor
ICAgIHBhZGRpbmc6IDRweDsKKyAgICB3aWR0aDogMTAwJTsKKyAgICBib3JkZXI6IDFweCBzb2xp
ZCByZ2JhKDAsIDAsIDAsIDApOworfQorCisjdG9vbGJhci1kcm9wZG93biAudG9vbGJhci1pdGVt
LnRvZ2dsZWFibGUudG9nZ2xlZC1vbiB7CisgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgxMDAs
IDEwMCwgMTIwLCAwLjQpOworICAgIC13ZWJraXQtYm9yZGVyLWltYWdlOiBub25lOworICAgIGJh
Y2tncm91bmQ6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCBsZWZ0IHRvcCwgbGVmdCBib3R0b20s
IGZyb20ocmdiYSgxMjgsIDEyOCwgMTI4LCAwLjYpKSwgdG8ocmdiYSgxMjgsIDEyOCwgMTI4LCAw
LjYpKSwgY29sb3Itc3RvcCgyMCUsIHJnYmEoMTU4LCAxNTgsIDE1OCwgMC4yKSksIGNvbG9yLXN0
b3AoODAlLCByZ2JhKDE1OCwgMTU4LCAxNTgsIDAuMikpKTsKK30KKworI3Rvb2xiYXItZHJvcGRv
d24gLnRvb2xiYXItaXRlbTpob3ZlciB7CisgICAgLXdlYmtpdC1ib3JkZXItaW1hZ2U6IG5vbmU7
CisgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgxMDAsIDEwMCwgMTIwLCAwLjgpOworfQorCisj
dG9vbGJhci1kcm9wZG93biAudG9vbGJhci1pdGVtLnRvZ2dsZWFibGUudG9nZ2xlZC1vbjpob3Zl
ciB7CisgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgxMDAsIDEwMCwgMTIwLCAxKTsKK30KKwor
I3Rvb2xiYXItZHJvcGRvd24gLnRvb2xiYXItaWNvbiB7CisgICAgbWFyZ2luLXJpZ2h0OiAwLjVl
bTsKK30KKworI3Rvb2xiYXItZHJvcGRvd24gLnRvb2xiYXItaXRlbTphY3RpdmUgLnRvb2xiYXIt
aWNvbiB7CisgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAyNHB4OworfQorCisuc2Nyb2xsYWJs
ZS1jb250ZW50IHsKKyAgICBwb3NpdGlvbjogc3RhdGljOworICAgIGhlaWdodDogMTAwJTsKKyAg
ICBvdmVyZmxvdy15OiBhdXRvOworICAgIHdpZHRoOiAxMDAlOworICAgIG1hcmdpbi1yaWdodDog
MTJweDsKKyAgICBwYWRkaW5nLXJpZ2h0OiAzcHg7Cit9CisKKy5zY3JvbGxhYmxlLWNvbnRlbnQ6
Oi13ZWJraXQtc2Nyb2xsYmFyIHsKKyAgICB3aWR0aDogMTFweDsKK30KKworLnNjcm9sbGFibGUt
Y29udGVudDo6LXdlYmtpdC1zY3JvbGxiYXItY29ybmVyLAorLnNjcm9sbGFibGUtY29udGVudDo6
LXdlYmtpdC1yZXNpemVyIHsKKyAgICBkaXNwbGF5OiBub25lOworfQorCisuc2Nyb2xsYWJsZS1j
b250ZW50Ojotd2Via2l0LXNjcm9sbGJhci10aHVtYjp2ZXJ0aWNhbCB7CisgICAgYmFja2dyb3Vu
ZDogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9wLCByaWdodCB0b3AsIGZyb20ocmdi
KDE5MiwgMTkyLCAxOTIpKSwgdG8ocmdiKDE5MiwgMTkyLCAxOTIpKSwgY29sb3Itc3RvcCg0MCUs
IHJnYigyMTQsIDIxNCwgMjE0KSkpOworICAgIGJvcmRlci1yYWRpdXM6IDVweDsKKyAgICBtaW4t
aGVpZ2h0OiAyMHB4OworfQorCisuc2Nyb2xsYWJsZS1jb250ZW50Ojotd2Via2l0LXNjcm9sbGJh
ci10aHVtYjp2ZXJ0aWNhbDpob3ZlciwKKy5zY3JvbGxhYmxlLWNvbnRlbnQ6Oi13ZWJraXQtc2Ny
b2xsYmFyLXRodW1iOnZlcnRpY2FsOmFjdGl2ZSB7CisgICAgYmFja2dyb3VuZDogLXdlYmtpdC1n
cmFkaWVudChsaW5lYXIsIGxlZnQgdG9wLCByaWdodCB0b3AsIGZyb20ocmdiKDIzMCwgMjMwLCAy
MzApKSwgdG8ocmdiKDIzMCwgMjMwLCAyMzApKSwgY29sb3Itc3RvcCg0MCUsIHJnYigyNTIsIDI1
MiwgMjUyKSkpOworfQorCisuc2Nyb2xsYWJsZS1jb250ZW50Ojotd2Via2l0LXNjcm9sbGJhci10
cmFjazp2ZXJ0aWNhbCB7CisgICAgYmFja2dyb3VuZDogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIs
IGxlZnQgdG9wLCByaWdodCB0b3AsIGZyb20ocmdiKDEyOCwgMTI4LCAxMjgpKSwgdG8ocmdiKDE2
NCwgMTY0LCAxNjQpKSwgY29sb3Itc3RvcCgyNSUsIHJnYigxNjQsIDE2NCwgMTY0KSkpOworICAg
IGJvcmRlci1yYWRpdXM6IDVweDsKK30KKworLnRvb2xiYXItc2VhcmNoLWl0ZW0geworICAgIGRp
c3BsYXk6IC13ZWJraXQtYm94OworICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7Cisg
ICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjsKKyAgICAtd2Via2l0LWJveC1wYWNrOiBlbmQ7
Cit9CisKICNzZWFyY2ggewogICAgIHdpZHRoOiAyMDVweDsKICAgICBmb250LXNpemU6IDE2cHg7
Ci0gICAgbWFyZ2luLWJvdHRvbTogNXB4OwogfQogCiBib2R5LmF0dGFjaGVkICNzZWFyY2ggewog
ICAgIGZvbnQtc2l6ZTogMTFweDsKLSAgICBtYXJnaW4tYm90dG9tOiA4cHg7CiB9CiAKICNzZWFy
Y2gtcmVzdWx0cy1tYXRjaGVzIHsKICAgICBmb250LXNpemU6IDExcHg7CiAgICAgdGV4dC1zaGFk
b3c6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KSAwIDFweCAwOwotICAgIG1hcmdpbi1ib3R0b206
IDIycHg7Ci19Ci0KLWJvZHkuYXR0YWNoZWQgI3NlYXJjaC1yZXN1bHRzLW1hdGNoZXMgewotICAg
IG1hcmdpbi1ib3R0b206IDZweDsKIH0KIAogLnRvb2xiYXItaXRlbS5lbGVtZW50cyAudG9vbGJh
ci1pY29uIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
aW5zcGVjdG9yLmh0bWwgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3Bl
Y3Rvci5odG1sCmluZGV4IDU1YjMyZmQuLmY1ZWRjMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbApAQCAtMTU1LDE0ICsxNTUsMTcg
QEAgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJTaG9y
dGN1dHNIZWxwLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlw
dCIgc3JjPSJIQVJFbnRyeS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2ph
dmFzY3JpcHQiIHNyYz0iQ29va2llUGFyc2VyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJUb29sYmFyRHJvcGRvd24uanMiPjwvc2NyaXB0Pgog
PC9oZWFkPgogPGJvZHkgY2xhc3M9ImRldGFjaGVkIj4KICAgICA8ZGl2IGlkPSJ0b29sYmFyIj4K
ICAgICAgICAgPGRpdiBjbGFzcz0idG9vbGJhci1pdGVtIGNsb3NlLWxlZnQiPjxidXR0b24gaWQ9
ImNsb3NlLWJ1dHRvbi1sZWZ0Ij48L2J1dHRvbj48L2Rpdj4KLSAgICAgICAgPGRpdiBjbGFzcz0i
dG9vbGJhci1pdGVtIGZsZXhhYmxlLXNwYWNlIj48L2Rpdj4KLSAgICAgICAgPGRpdiBjbGFzcz0i
dG9vbGJhci1pdGVtIGhpZGRlbiIgaWQ9InNlYXJjaC1yZXN1bHRzLW1hdGNoZXMiPjwvZGl2Pgot
ICAgICAgICA8ZGl2IGNsYXNzPSJ0b29sYmFyLWl0ZW0iPjxpbnB1dCBpZD0ic2VhcmNoIiB0eXBl
PSJzZWFyY2giIGluY3JlbWVudGFsIHJlc3VsdHM9IjAiPjxkaXYgaWQ9InNlYXJjaC10b29sYmFy
LWxhYmVsIiBjbGFzcz0idG9vbGJhci1sYWJlbCI+PC9kaXY+PC9kaXY+Ci0gICAgICAgIDxkaXYg
Y2xhc3M9InRvb2xiYXItaXRlbSBjbG9zZS1yaWdodCI+PGJ1dHRvbiBpZD0iY2xvc2UtYnV0dG9u
LXJpZ2h0Ij48L2J1dHRvbj48L2Rpdj4KKyAgICAgICAgPGRpdiBpZD0idG9vbGJhci1jb250cm9s
cyI+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b29sYmFyLWl0ZW0iPjxidXR0b24gaWQ9InRv
b2xiYXItZHJvcGRvd24tYXJyb3ciPiZyYXF1bzs8L2J1dHRvbj48L2Rpdj4KKyAgICAgICAgICAg
IDxkaXYgY2xhc3M9InRvb2xiYXItaXRlbSBoaWRkZW4iIGlkPSJzZWFyY2gtcmVzdWx0cy1tYXRj
aGVzIj48L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9InRvb2xiYXItaXRlbSB0b29sYmFy
LXNlYXJjaC1pdGVtIj48aW5wdXQgaWQ9InNlYXJjaCIgdHlwZT0ic2VhcmNoIiBpbmNyZW1lbnRh
bCByZXN1bHRzPSIwIj48ZGl2IGlkPSJzZWFyY2gtdG9vbGJhci1sYWJlbCIgY2xhc3M9InRvb2xi
YXItbGFiZWwiPjwvZGl2PjwvZGl2PgorICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9vbGJhci1p
dGVtIGNsb3NlLXJpZ2h0Ij48YnV0dG9uIGlkPSJjbG9zZS1idXR0b24tcmlnaHQiPjwvYnV0dG9u
PjwvZGl2PgorICAgICAgICA8L2Rpdj4KICAgICA8L2Rpdj4KICAgICA8ZGl2IGlkPSJtYWluIj4K
ICAgICAgICAgPGRpdiBpZD0ibWFpbi1wYW5lbHMiIHNwZWxsY2hlY2s9ImZhbHNlIj48L2Rpdj4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9y
LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKaW5k
ZXggNjI4NjhlOS4uZTU2ZGQ3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9pbnNwZWN0b3IuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9pbnNwZWN0b3IuanMKQEAgLTQ5OCw3ICs0OTgsNyBAQCBXZWJJbnNwZWN0b3IuZG9M
b2FkZWREb25lID0gZnVuY3Rpb24oKQogICAgIHRoaXMuX3BhbmVsSGlzdG9yeSA9IG5ldyBXZWJJ
bnNwZWN0b3IuUGFuZWxIaXN0b3J5KCk7CiAKICAgICB2YXIgdG9vbGJhckVsZW1lbnQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgidG9vbGJhciIpOwotICAgIHZhciBwcmV2aW91c1Rvb2xiYXJJ
dGVtID0gdG9vbGJhckVsZW1lbnQuY2hpbGRyZW5bMF07CisgICAgdmFyIHByZXZpb3VzVG9vbGJh
ckl0ZW0gPSB0b29sYmFyRWxlbWVudC5jaGlsZHJlblsxXTsKIAogICAgIHRoaXMucGFuZWxPcmRl
ciA9IFtdOwogICAgIGZvciAodmFyIHBhbmVsTmFtZSBpbiB0aGlzLnBhbmVscykKQEAgLTU0Myw2
ICs1NDMsOCBAQCBXZWJJbnNwZWN0b3IuZG9Mb2FkZWREb25lID0gZnVuY3Rpb24oKQogICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJjbG9zZS1idXR0b24tbGVmdCIpLmFkZEV2ZW50TGlzdGVu
ZXIoImNsaWNrIiwgdGhpcy5jbG9zZSwgdHJ1ZSk7CiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImNsb3NlLWJ1dHRvbi1yaWdodCIpLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5j
bG9zZSwgdHJ1ZSk7CiAKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidG9vbGJhci1kcm9w
ZG93bi1hcnJvdyIpLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgV2ViSW5zcGVjdG9yLlRvb2xi
YXJEcm9wZG93bi50b2dnbGUsIGZhbHNlKTsKKwogICAgIHRoaXMuZXh0ZW5zaW9uU2VydmVyLmlu
aXRFeHRlbnNpb25zKCk7CiAKICAgICBmdW5jdGlvbiBvblBvcHVsYXRlU2NyaXB0T2JqZWN0cygp
CkBAIC01NzQsMTAgKzU3Niw4IEBAIFdlYkluc3BlY3Rvci5hZGRQYW5lbFRvb2xiYXJJY29uID0g
ZnVuY3Rpb24odG9vbGJhckVsZW1lbnQsIHBhbmVsLCBwcmV2aW91c1Rvb2xiCiAgICAgdmFyIHBh
bmVsVG9vbGJhckl0ZW0gPSBwYW5lbC50b29sYmFySXRlbTsKICAgICB0aGlzLnBhbmVsT3JkZXIu
cHVzaChwYW5lbCk7CiAgICAgcGFuZWxUb29sYmFySXRlbS5hZGRFdmVudExpc3RlbmVyKCJjbGlj
ayIsIHRoaXMuX3Rvb2xiYXJJdGVtQ2xpY2tlZC5iaW5kKHRoaXMpKTsKLSAgICBpZiAocHJldmlv
dXNUb29sYmFySXRlbSkKLSAgICAgICAgdG9vbGJhckVsZW1lbnQuaW5zZXJ0QmVmb3JlKHBhbmVs
VG9vbGJhckl0ZW0sIHByZXZpb3VzVG9vbGJhckl0ZW0ubmV4dFNpYmxpbmcpOwotICAgIGVsc2UK
LSAgICAgICAgdG9vbGJhckVsZW1lbnQuaW5zZXJ0QmVmb3JlKHBhbmVsVG9vbGJhckl0ZW0sIHRv
b2xiYXJFbGVtZW50LmZpcnN0Q2hpbGQpOworICAgIHRvb2xiYXJFbGVtZW50Lmluc2VydEJlZm9y
ZShwYW5lbFRvb2xiYXJJdGVtLCBwcmV2aW91c1Rvb2xiYXJJdGVtLm5leHRTaWJsaW5nKTsKKyAg
ICBXZWJJbnNwZWN0b3IuVG9vbGJhckRyb3Bkb3duLnVwZGF0ZUJ1dHRvbkFuZFJlbW92ZURyb3Bk
b3duKCk7CiAgICAgcmV0dXJuIHBhbmVsVG9vbGJhckl0ZW07CiB9CiAKQEAgLTYxOCw2ICs2MTgs
NyBAQCBXZWJJbnNwZWN0b3IuZGlzcGF0Y2hNZXNzYWdlRnJvbUJhY2tlbmQgPSBmdW5jdGlvbiht
ZXNzYWdlT2JqZWN0KQogCiBXZWJJbnNwZWN0b3Iud2luZG93UmVzaXplID0gZnVuY3Rpb24oZXZl
bnQpCiB7CisgICAgV2ViSW5zcGVjdG9yLlRvb2xiYXJEcm9wZG93bi51cGRhdGVCdXR0b25BbmRS
ZW1vdmVEcm9wZG93bigpOwogICAgIGlmICh0aGlzLmN1cnJlbnRQYW5lbCkKICAgICAgICAgdGhp
cy5jdXJyZW50UGFuZWwucmVzaXplKCk7CiAgICAgdGhpcy5kcmF3ZXIucmVzaXplKCk7CkBAIC0x
MDI4LDYgKzEwMjksNyBAQCBXZWJJbnNwZWN0b3IuZm9jdXNTZWFyY2hGaWVsZCA9IGZ1bmN0aW9u
KCkKIAogV2ViSW5zcGVjdG9yLnRvZ2dsZUF0dGFjaCA9IGZ1bmN0aW9uKCkKIHsKKyAgICBXZWJJ
bnNwZWN0b3IuVG9vbGJhckRyb3Bkb3duLnVwZGF0ZUJ1dHRvbkFuZFJlbW92ZURyb3Bkb3duKCk7
CiAgICAgaWYgKCF0aGlzLmF0dGFjaGVkKQogICAgICAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3Qu
cmVxdWVzdEF0dGFjaFdpbmRvdygpOwogICAgIGVsc2UKQEAgLTE2NjYsNiArMTY2OCw3IEBAIFdl
Ykluc3BlY3Rvci51cGRhdGVTZWFyY2hNYXRjaGVzQ291bnQgPSBmdW5jdGlvbihtYXRjaGVzLCBw
YW5lbCkKICAgICB2YXIgbWF0Y2hlc1Rvb2xiYXJFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInNlYXJjaC1yZXN1bHRzLW1hdGNoZXMiKTsKICAgICBtYXRjaGVzVG9vbGJhckVsZW1l
bnQucmVtb3ZlU3R5bGVDbGFzcygiaGlkZGVuIik7CiAgICAgbWF0Y2hlc1Rvb2xiYXJFbGVtZW50
LnRleHRDb250ZW50ID0gbWF0Y2hlc1N0cmluZzsKKyAgICBXZWJJbnNwZWN0b3IudG9vbGJhckRy
b3Bkb3duLnVwZGF0ZUJ1dHRvbkFuZFJlbW92ZURyb3Bkb3duKCk7CiB9CiAKIFdlYkluc3BlY3Rv
ci5VSVN0cmluZyA9IGZ1bmN0aW9uKHN0cmluZykKQEAgLTE4NDMsNiArMTg0Niw3IEBAIFdlYklu
c3BlY3Rvci5zdGFydEVkaXRpbmcgPSBmdW5jdGlvbihlbGVtZW50LCBjb25maWcpCiBXZWJJbnNw
ZWN0b3IuX3Rvb2xiYXJJdGVtQ2xpY2tlZCA9IGZ1bmN0aW9uKGV2ZW50KQogewogICAgIHZhciB0
b29sYmFySXRlbSA9IGV2ZW50LmN1cnJlbnRUYXJnZXQ7CisgICAgV2ViSW5zcGVjdG9yLlRvb2xi
YXJEcm9wZG93bi51cGRhdGVCdXR0b25BbmRSZW1vdmVEcm9wZG93bigpOwogICAgIHRoaXMuY3Vy
cmVudFBhbmVsID0gdG9vbGJhckl0ZW0ucGFuZWw7CiB9CiAK
</data>
<flag name="review"
          id="74529"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82948</attachid>
            <date>2011-02-18 05:53:15 -0800</date>
            <delta_ts>2011-02-21 08:54:57 -0800</delta_ts>
            <desc>patch</desc>
            <filename>toolbar-expand.diff</filename>
            <type>text/plain</type>
            <size>20799</size>
            <attacher name="Andrey Kosyakov">caseq</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBmNDM1YTRkLi5lZjdmZDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTkg
QEAKKzIwMTEtMDItMTcgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBwcm92aWRlIGEgYnV0dG9uIHRvIGV4cGFuZCBpbnNwZWN0b3IgdG9vbGJhciB3aGVuIG5v
dCBhbGwgcGFuZWwgYnV0dG9ucyBmaXQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01NDY3MQorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAg
ICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvVG9vbGJhckRyb3Bkb3duLmpzOiBBZGRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5Ub29sYmFyRHJvcGRvd24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRvb2xiYXJEcm9wZG93
bi5wcm90b3R5cGUuc2hvdyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVG9vbGJhckRyb3Bkb3du
LnByb3RvdHlwZS5oaWRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Ub29sYmFyRHJvcGRvd24u
cHJvdG90eXBlLmdldCB2aXNpYmxlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Ub29sYmFyRHJv
cGRvd24ucHJvdG90eXBlLl9wb3B1bGF0ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVG9vbGJh
ckRyb3Bkb3duLnByb3RvdHlwZS5fb25LZXlEb3duKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5U
b29sYmFyRHJvcGRvd24uc2V0VmlzaWJsZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVG9vbGJh
ckRyb3Bkb3duLnRvZ2dsZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVG9vbGJhckRyb3Bkb3du
LnVwZGF0ZUJ1dHRvbkFuZFJlbW92ZURyb3Bkb3duKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJv
bnQtZW5kL1dlYktpdC5xcmM6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0
b3IuY3NzOgorICAgICAgICAoI3Rvb2xiYXIpOgorICAgICAgICAoLnRvb2xiYXItaXRlbSk6Cisg
ICAgICAgICgudG9vbGJhci1pdGVtLnRvZ2dsZWFibGUudG9nZ2xlZC1vbik6CisgICAgICAgICgj
dG9vbGJhci1kcm9wZG93biAudG9vbGJhci1pY29uKToKKyAgICAgICAgKCN0b29sYmFyLWRyb3Bk
b3duIC50b29sYmFyLWxhYmVsKToKKyAgICAgICAgKCN0b29sYmFyLWNvbnRyb2xzKToKKyAgICAg
ICAgKCN0b29sYmFyLWRyb3Bkb3duLWFycm93KToKKyAgICAgICAgKCN0b29sYmFyLWRyb3Bkb3du
LWFycm93LmRyb3Bkb3duLXZpc2libGUpOgorICAgICAgICAoI3Rvb2xiYXItZHJvcGRvd24tYXJy
b3c6aG92ZXIpOgorICAgICAgICAoI3Rvb2xiYXItZHJvcGRvd24tYXJyb3c6YWN0aXZlKToKKyAg
ICAgICAgKCN0b29sYmFyLWRyb3Bkb3duKToKKyAgICAgICAgKCN0b29sYmFyLWRyb3Bkb3duIC5z
Y3JvbGxhYmxlLWNvbnRlbnQpOgorICAgICAgICAoI3Rvb2xiYXItZHJvcGRvd24gLnRvb2xiYXIt
aXRlbSk6CisgICAgICAgICgjdG9vbGJhci1kcm9wZG93biAudG9vbGJhci1pdGVtLnRvZ2dsZWFi
bGUudG9nZ2xlZC1vbik6CisgICAgICAgICgjdG9vbGJhci1kcm9wZG93biAudG9vbGJhci1pdGVt
OmhvdmVyKToKKyAgICAgICAgKCN0b29sYmFyLWRyb3Bkb3duIC50b29sYmFyLWl0ZW0udG9nZ2xl
YWJsZS50b2dnbGVkLW9uOmhvdmVyKToKKyAgICAgICAgKCN0b29sYmFyLWRyb3Bkb3duIC50b29s
YmFyLWl0ZW06YWN0aXZlIC50b29sYmFyLWljb24pOgorICAgICAgICAoLnNjcm9sbGFibGUtY29u
dGVudCk6CisgICAgICAgICguc2Nyb2xsYWJsZS1jb250ZW50Ojotd2Via2l0LXNjcm9sbGJhcik6
CisgICAgICAgICguc2Nyb2xsYWJsZS1jb250ZW50Ojotd2Via2l0LXJlc2l6ZXIpOgorICAgICAg
ICAoLnNjcm9sbGFibGUtY29udGVudDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6dmVydGljYWwp
OgorICAgICAgICAoLnNjcm9sbGFibGUtY29udGVudDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6
dmVydGljYWw6YWN0aXZlKToKKyAgICAgICAgKC5zY3JvbGxhYmxlLWNvbnRlbnQ6Oi13ZWJraXQt
c2Nyb2xsYmFyLXRyYWNrOnZlcnRpY2FsKToKKyAgICAgICAgKC50b29sYmFyLXNlYXJjaC1pdGVt
KToKKyAgICAgICAgKCNzZWFyY2gpOgorICAgICAgICAoYm9keS5hdHRhY2hlZCAjc2VhcmNoKToK
KyAgICAgICAgKCNzZWFyY2gtcmVzdWx0cy1tYXRjaGVzKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
aW5zcGVjdG9yLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmFkZFBhbmVsVG9vbGJhckljb24p
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLndpbmRvd1Jlc2l6ZSk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IudG9nZ2xlQXR0YWNoKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci51cGRhdGVTZWFyY2hN
YXRjaGVzQ291bnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLl90b29sYmFySXRlbUNsaWNrZWQp
OgorCiAyMDExLTAyLTE2ICBQYXZlbCBQb2Rpdmlsb3YgIDxwb2Rpdmlsb3ZAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IFl1cnkgU2VtaWtoYXRza3kuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
aW5kZXggYTk5ZjdiOS4uYzgyNTRlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNDc2Myw2ICs0NzYz
LDcgQEAKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lT3ZlcnZpZXdQ
YW5lLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lR3JpZC5q
cycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZVBhbmVsLmpzJywK
KyAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL1Rvb2xiYXJEcm9wZG93bi5qcycsCiAg
ICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9Ub3BEb3duUHJvZmlsZURhdGFHcmlkVHJl
ZS5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC90cmVlb3V0bGluZS5qcycs
CiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC91dGlsaXRpZXMuanMnLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCAyN2MzYzVjLi43
MjkxNDAxIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
agpAQCAtNjYwOTMsNiArNjYwOTMsMTAgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8Rmls
ZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcVG9vbGJhckRyb3Bk
b3duLmpzIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0
aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxUb3BEb3duUHJvZmlsZURhdGFHcmlkVHJlZS5qcyIK
IAkJCQkJPgogCQkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvVG9vbGJhckRyb3Bkb3duLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9Ub29sYmFyRHJvcGRvd24uanMKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXgg
MDAwMDAwMC4uODQ2MTVjZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvVG9vbGJhckRyb3Bkb3duLmpzCkBAIC0wLDAgKzEsMTIxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRp
c3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV2ViSW5z
cGVjdG9yLlRvb2xiYXJEcm9wZG93biA9IGZ1bmN0aW9uKCkKK3sKKyAgICB0aGlzLl90b29sYmFy
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRvb2xiYXIiKTsKKyAgICB0aGlzLl9hcnJvdyA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0b29sYmFyLWRyb3Bkb3duLWFycm93Iik7CisgICAg
dGhpcy5lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgdGhpcy5l
bGVtZW50LmlkID0gInRvb2xiYXItZHJvcGRvd24iOworICAgIHRoaXMuX2NvbnRlbnRFbGVtZW50
ID0gdGhpcy5lbGVtZW50LmNyZWF0ZUNoaWxkKCJkaXYiLCAic2Nyb2xsYWJsZS1jb250ZW50Iik7
CisgICAgdGhpcy5fY29udGVudEVsZW1lbnQudGFiSW5kZXggPSAwOworICAgIHRoaXMuX2NvbnRl
bnRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCB0aGlzLl9vbktleURvd24uYmlu
ZCh0aGlzKSwgdHJ1ZSk7Cit9CisKK1dlYkluc3BlY3Rvci5Ub29sYmFyRHJvcGRvd24ucHJvdG90
eXBlID0geworICAgIHNob3c6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLnZp
c2libGUpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHZhciBzdHlsZSA9IHRoaXMuZWxl
bWVudC5zdHlsZTsKKyAgICAgICAgdGhpcy5fcG9wdWxhdGUoKTsKKyAgICAgICAgdmFyIHRvcCA9
IHRoaXMuX2Fycm93LnRvdGFsT2Zmc2V0VG9wICsgdGhpcy5fYXJyb3cuY2xpZW50SGVpZ2h0Owor
ICAgICAgICB0aGlzLl9hcnJvdy5hZGRTdHlsZUNsYXNzKCJkcm9wZG93bi12aXNpYmxlIik7Cisg
ICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS50b3AgPSB0b3AgKyAicHgiOworICAgICAgICB0aGlz
LmVsZW1lbnQuc3R5bGUubGVmdCA9IHRoaXMuX2Fycm93LnRvdGFsT2Zmc2V0TGVmdCArICJweCI7
CisgICAgICAgIHRoaXMuX2NvbnRlbnRFbGVtZW50LnN0eWxlLm1heEhlaWdodCA9IHdpbmRvdy5p
bm5lckhlaWdodCAtIHRvcCAtIDIwICsgInB4IjsKKyAgICAgICAgdGhpcy5fdG9vbGJhci5hcHBl
bmRDaGlsZCh0aGlzLmVsZW1lbnQpOworICAgICAgICBXZWJJbnNwZWN0b3IuY3VycmVudEZvY3Vz
RWxlbWVudCA9IHRoaXMuY29udGVudEVsZW1lbnQ7CisgICAgfSwKKworICAgIGhpZGU6IGZ1bmN0
aW9uKCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy52aXNpYmxlKQorICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB0aGlzLl9hcnJvdy5yZW1vdmVTdHlsZUNsYXNzKCJkcm9wZG93bi12aXNp
YmxlIik7CisgICAgICAgIHRoaXMuZWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMu
ZWxlbWVudCk7CisgICAgICAgIHRoaXMuX2NvbnRlbnRFbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7
CisgICAgfSwKKworICAgIGdldCB2aXNpYmxlKCkKKyAgICB7CisgICAgICAgIHJldHVybiAhIXRo
aXMuZWxlbWVudC5wYXJlbnROb2RlOworICAgIH0sCisKKyAgICBfcG9wdWxhdGU6IGZ1bmN0aW9u
KCkKKyAgICB7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgV2ViSW5zcGVjdG9yLnBhbmVs
T3JkZXIubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIHZhciB0b29sYmFyRWxlbWVudCA9IFdl
Ykluc3BlY3Rvci5wYW5lbE9yZGVyW2ldLnRvb2xiYXJJdGVtOworICAgICAgICAgICAgaWYgKHRv
b2xiYXJFbGVtZW50Lm9mZnNldFRvcCA+IDApIHsKKyAgICAgICAgICAgICAgICB2YXIgY2xvbmUg
PSB0b29sYmFyRWxlbWVudC5jbG9uZU5vZGUodHJ1ZSk7CisgICAgICAgICAgICAgICAgY2xvbmUu
YWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0b29sYmFyRWxlbWVudC5kaXNwYXRjaEV2ZW50LmJp
bmQodG9vbGJhckVsZW1lbnQpLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgdGhpcy5fY29udGVu
dEVsZW1lbnQuYXBwZW5kQ2hpbGQoY2xvbmUpOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgfSwKKworICAgIF9vbktleURvd246IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAg
aWYgKGV2ZW50LmtleUNvZGUgIT09IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleXMu
RXNjLmNvZGUpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdh
dGlvbigpOworICAgICAgICB0aGlzLmhpZGUoKTsKKyAgICB9Cit9OworCitXZWJJbnNwZWN0b3Iu
VG9vbGJhckRyb3Bkb3duLnNldFZpc2libGUgPSBmdW5jdGlvbih2aXNpYmxlKQoreworICAgIGlm
ICghV2ViSW5zcGVjdG9yLlRvb2xiYXJEcm9wZG93bi5faW5zdGFuY2UpIHsKKyAgICAgICAgaWYg
KCF2aXNpYmxlKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBXZWJJbnNwZWN0b3IuVG9v
bGJhckRyb3Bkb3duLl9pbnN0YW5jZSA9IG5ldyBXZWJJbnNwZWN0b3IuVG9vbGJhckRyb3Bkb3du
KCk7CisgICAgfQorICAgIGlmICh2aXNpYmxlKQorICAgICAgICBXZWJJbnNwZWN0b3IuVG9vbGJh
ckRyb3Bkb3duLl9pbnN0YW5jZS5zaG93KCk7CisgICAgZWxzZQorICAgICAgICBXZWJJbnNwZWN0
b3IuVG9vbGJhckRyb3Bkb3duLl9pbnN0YW5jZS5oaWRlKCk7Cit9CisKK1dlYkluc3BlY3Rvci5U
b29sYmFyRHJvcGRvd24udG9nZ2xlID0gZnVuY3Rpb24oKQoreworICAgIFdlYkluc3BlY3Rvci5U
b29sYmFyRHJvcGRvd24uc2V0VmlzaWJsZSghV2ViSW5zcGVjdG9yLlRvb2xiYXJEcm9wZG93bi5f
aW5zdGFuY2UgfHwgIVdlYkluc3BlY3Rvci5Ub29sYmFyRHJvcGRvd24uX2luc3RhbmNlLnZpc2li
bGUpOworfQorCitXZWJJbnNwZWN0b3IuVG9vbGJhckRyb3Bkb3duLnVwZGF0ZUJ1dHRvbkFuZFJl
bW92ZURyb3Bkb3duID0gZnVuY3Rpb24oKQoreworICAgIFdlYkluc3BlY3Rvci5Ub29sYmFyRHJv
cGRvd24uc2V0VmlzaWJsZShmYWxzZSk7CisKKyAgICB2YXIgYnV0dG9uID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInRvb2xiYXItZHJvcGRvd24tYXJyb3ciKTsKKyAgICB2YXIgdG9vbGJhciA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0b29sYmFyIik7CisgICAgaWYgKHRvb2xiYXIuc2Ny
b2xsSGVpZ2h0ID4gdG9vbGJhci5jbGllbnRIZWlnaHQpCisgICAgICAgIGJ1dHRvbi5yZW1vdmVT
dHlsZUNsYXNzKCJoaWRkZW4iKTsKKyAgICBlbHNlCisgICAgICAgIGJ1dHRvbi5hZGRTdHlsZUNs
YXNzKCJoaWRkZW4iKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvV2ViS2l0LnFyYyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
V2ViS2l0LnFyYwppbmRleCBiYmRmZjljLi5hYzdiY2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCkBAIC0xMTEsNiArMTExLDcgQEAKICAgICA8
ZmlsZT5UaW1lbGluZUdyaWQuanM8L2ZpbGU+CiAgICAgPGZpbGU+VGltZWxpbmVPdmVydmlld1Bh
bmUuanM8L2ZpbGU+CiAgICAgPGZpbGU+VGltZWxpbmVQYW5lbC5qczwvZmlsZT4KKyAgICA8Zmls
ZT5Ub29sYmFyRHJvcGRvd24uanM8L2ZpbGU+CiAgICAgPGZpbGU+VG9wRG93blByb2ZpbGVEYXRh
R3JpZFRyZWUuanM8L2ZpbGU+CiAgICAgPGZpbGU+dHJlZW91dGxpbmUuanM8L2ZpbGU+CiAgICAg
PGZpbGU+dXRpbGl0aWVzLmpzPC9maWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzCmluZGV4IGM5OTI4MDYuLmU0ZWZlZjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MKQEAgLTc2
LDcgKzc2LDYgQEAgaW1nIHsKICAgICBsZWZ0OiAwOwogICAgIHJpZ2h0OiAwOwogICAgIGhlaWdo
dDogNTZweDsKLSAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgICBwYWRkaW5nOiAwIDVweDsK
ICAgICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWdyYWRpZW50KGxpbmVhciwgbGVmdCB0b3As
IGxlZnQgYm90dG9tLCBmcm9tKHJnYigxOTEsIDE5MSwgMTkxKSksIHRvKHJnYigxNTEsIDE1MSwg
MTUxKSkpOwogICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2IoODAsIDgwLCA4MCk7CkBA
IC0xMTEsMzIgKzExMCwyMyBAQCBib2R5LmF0dGFjaGVkLmluYWN0aXZlICN0b29sYmFyIHsKIH0K
IAogLnRvb2xiYXItaXRlbSB7Ci0gICAgZGlzcGxheTogLXdlYmtpdC1ib3g7Ci0gICAgcGFkZGlu
ZzogNHB4IDZweDsKICAgICBtYXJnaW46IDA7CisgICAgcGFkZGluZzogMCA2cHg7CiAgICAgYmFj
a2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICAgYm9yZGVyLXN0eWxlOiBub25lOwogICAg
IGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7Ci0gICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0
aWNhbDsKLSAgICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyOwotICAgIC13ZWJraXQtYm94LXBh
Y2s6IGVuZDsKK30KKworLnRvb2xiYXItaXRlbS50b2dnbGVhYmxlIHsKKyAgICBwYWRkaW5nLXRv
cDogNHB4OwogfQogCiAudG9vbGJhci1pdGVtLnRvZ2dsZWFibGUudG9nZ2xlZC1vbiB7CiAgICAg
Ym9yZGVyLXdpZHRoOiAwIDJweCAwIDJweDsKLSAgICBwYWRkaW5nOiA0cHggNHB4OworICAgIHBh
ZGRpbmc6IDRweCA0cHggMCA0cHg7CiAgICAgLXdlYmtpdC1ib3JkZXItaW1hZ2U6IHVybChJbWFn
ZXMvdG9vbGJhckl0ZW1TZWxlY3RlZC5wbmcpIDAgMiAwIDI7CiB9CiAKLS50b29sYmFyLWl0ZW0u
ZmxleGFibGUtc3BhY2UgewotICAgIC13ZWJraXQtYm94LWZsZXg6IDE7Ci0gICAgdmlzaWJpbGl0
eTogaGlkZGVuOwotfQotCi0udG9vbGJhci1pdGVtIGlucHV0IHsKLSAgICBtYXJnaW4tYm90dG9t
OiA4cHg7Ci19Ci0KIC50b29sYmFyLWljb24gewogICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsK
ICAgICB3aWR0aDogMzJweDsKQEAgLTE0NCw3ICsxMzQsOCBAQCBib2R5LmF0dGFjaGVkLmluYWN0
aXZlICN0b29sYmFyIHsKICAgICAtd2Via2l0LWJhY2tncm91bmQtc2l6ZTogMTAwJSBhdXRvOwog
fQogCi1ib2R5LmF0dGFjaGVkIC50b29sYmFyLWljb24geworYm9keS5hdHRhY2hlZCAudG9vbGJh
ci1pY29uLAorI3Rvb2xiYXItZHJvcGRvd24gLnRvb2xiYXItaWNvbiB7CiAgICAgd2lkdGg6IDI0
cHg7CiAgICAgaGVpZ2h0OiAyNHB4OwogICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CkBAIC0x
NjgsOSArMTU5LDkgQEAgYm9keS5hdHRhY2hlZCAudG9vbGJhci1pdGVtOmFjdGl2ZSAudG9vbGJh
ci1pY29uIHsKICAgICB0ZXh0LXNoYWRvdzogbm9uZTsKIH0KIAotYm9keS5hdHRhY2hlZCAudG9v
bGJhci1sYWJlbCB7Citib2R5LmF0dGFjaGVkIC50b29sYmFyLWxhYmVsLAorI3Rvb2xiYXItZHJv
cGRvd24gLnRvb2xiYXItbGFiZWwgewogICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKLSAgICB2
ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogICAgIG1hcmdpbi1sZWZ0OiAzcHg7CiB9CiAKQEAgLTE3
OCwyNSArMTY5LDE0NSBAQCBib2R5LmF0dGFjaGVkICNzZWFyY2gtdG9vbGJhci1sYWJlbCB7CiAg
ICAgZGlzcGxheTogbm9uZTsKIH0KIAorI3Rvb2xiYXItY29udHJvbHMgeworICAgIGZsb2F0OiBy
aWdodDsKKyAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKKyAgICAtd2Via2l0LWJveC1hbGlnbjog
Y2VudGVyOworICAgIGhlaWdodDogMTAwJTsKK30KKworI3Rvb2xiYXItZHJvcGRvd24tYXJyb3cg
eworICAgIGZvbnQtc2l6ZTogMTZweDsKKyAgICBmb250LXdlaWdodDogYm9sZDsKKyAgICBib3Jk
ZXI6IDA7CisgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CisgICAgLXdlYmtpdC1i
b3JkZXItcmFkaXVzOiA1cHg7CisgICAgdGV4dC1zaGFkb3c6IG5vbmU7Cit9CisKK2JvZHkuYXR0
YWNoZWQgI3Rvb2xiYXItZHJvcGRvd24tYXJyb3cgeworICAgIGZvbnQtc2l6ZTogMTRweDsKKyAg
ICBwYWRkaW5nLWJvdHRvbTogNHB4OworfQorCisjdG9vbGJhci1kcm9wZG93bi1hcnJvdy5kcm9w
ZG93bi12aXNpYmxlIHsKKyAgICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWdyYWRpZW50KGxp
bmVhciwgbGVmdCB0b3AsIGxlZnQgYm90dG9tLCBmcm9tKHJnYmEoMjUxLCAyNTEsIDI1MSwgMC45
KSksIHRvKHJnYmEoMjMxLCAyMzEsIDIzMSwgMC45KSkpOworfQorCisjdG9vbGJhci1kcm9wZG93
bi1hcnJvdzpob3ZlciB7CisgICAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1ncmFkaWVudChs
aW5lYXIsIGxlZnQgdG9wLCBsZWZ0IGJvdHRvbSwgZnJvbShyZ2JhKDE5MSwgMTkxLCAxOTEsIDAu
NykpLCB0byhyZ2JhKDE3MSwgMTcxLCAxNzEsIDAuNSkpKTsKK30KKworI3Rvb2xiYXItZHJvcGRv
d24tYXJyb3c6YWN0aXZlIHsKKyAgICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWdyYWRpZW50
KGxpbmVhciwgbGVmdCB0b3AsIGxlZnQgYm90dG9tLCBmcm9tKHJnYmEoMTExLCAxMTEsIDExMSwg
MC44KSksIHRvKHJnYmEoOTEsIDkxLCA5MSwgMC44KSkpOworfQorCisjdG9vbGJhci1kcm9wZG93
biB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHotaW5kZXg6IDEwMDA7CisgICAgLXdl
YmtpdC1ib3gtc2hhZG93OiAzcHggM3B4IDNweCByZ2JhKDAsIDAsIDAsIDAuNCk7CisgICAgYm9y
ZGVyOiAxcHggc29saWQgcmdiKDEyOCwgMTI4LCAxMjgpOworICAgIHBhZGRpbmc6IDRweDsKKyAg
ICBiYWNrZ3JvdW5kLWNvbG9yOiBpbmhlcml0OworICAgIGJhY2tncm91bmQtaW1hZ2U6IGluaGVy
aXQ7Cit9CisKK2JvZHkuZGV0YWNoZWQucGxhdGZvcm0tbWFjLWxlb3BhcmQgI3Rvb2xiYXItZHJv
cGRvd24sCitib2R5LmRldGFjaGVkLnBsYXRmb3JtLW1hYy1zbm93bGVvcGFyZCAjdG9vbGJhci1k
cm9wZG93biB7CisgICAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIs
IGxlZnQgdG9wLCBsZWZ0IGJvdHRvbSwgZnJvbShyZ2IoMTkxLCAxOTEsIDE5MSkpLCB0byhyZ2Io
MTUxLCAxNTEsIDE1MSkpKTsKK30KKworI3Rvb2xiYXItZHJvcGRvd24gLnNjcm9sbGFibGUtY29u
dGVudCB7CisgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CisgICAgLXdlYmtpdC1ib3gtb3JpZW50
OiB2ZXJ0aWNhbDsKKyAgICAtd2Via2l0LWJveC1hbGlnbjogc3RhcnQ7Cit9CisKKyN0b29sYmFy
LWRyb3Bkb3duIC50b29sYmFyLWl0ZW0geworICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OworICAg
IC13ZWJraXQtYm94LW9yaWVudDogaG9yaXpvbnRhbDsKKyAgICBtYXJnaW46IDBweCAycHg7Cisg
ICAgcGFkZGluZzogNHB4OworICAgIHdpZHRoOiAxMDAlOworICAgIGJvcmRlcjogMXB4IHNvbGlk
IHJnYmEoMCwgMCwgMCwgMCk7Cit9CisKKyN0b29sYmFyLWRyb3Bkb3duIC50b29sYmFyLWl0ZW0u
dG9nZ2xlYWJsZS50b2dnbGVkLW9uIHsKKyAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDEwMCwg
MTAwLCAxMjAsIDAuNCk7CisgICAgLXdlYmtpdC1ib3JkZXItaW1hZ2U6IG5vbmU7CisgICAgYmFj
a2dyb3VuZDogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9wLCBsZWZ0IGJvdHRvbSwg
ZnJvbShyZ2JhKDEyOCwgMTI4LCAxMjgsIDAuNikpLCB0byhyZ2JhKDEyOCwgMTI4LCAxMjgsIDAu
NikpLCBjb2xvci1zdG9wKDIwJSwgcmdiYSgxNTgsIDE1OCwgMTU4LCAwLjIpKSwgY29sb3Itc3Rv
cCg4MCUsIHJnYmEoMTU4LCAxNTgsIDE1OCwgMC4yKSkpOworfQorCisjdG9vbGJhci1kcm9wZG93
biAudG9vbGJhci1pdGVtOmhvdmVyIHsKKyAgICAtd2Via2l0LWJvcmRlci1pbWFnZTogbm9uZTsK
KyAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDEwMCwgMTAwLCAxMjAsIDAuOCk7Cit9CisKKyN0
b29sYmFyLWRyb3Bkb3duIC50b29sYmFyLWl0ZW0udG9nZ2xlYWJsZS50b2dnbGVkLW9uOmhvdmVy
IHsKKyAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDEwMCwgMTAwLCAxMjAsIDEpOworfQorCisj
dG9vbGJhci1kcm9wZG93biAudG9vbGJhci1pY29uIHsKKyAgICBtYXJnaW4tcmlnaHQ6IDAuNWVt
OworfQorCisjdG9vbGJhci1kcm9wZG93biAudG9vbGJhci1pdGVtOmFjdGl2ZSAudG9vbGJhci1p
Y29uIHsKKyAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIDI0cHg7Cit9CisKKy5zY3JvbGxhYmxl
LWNvbnRlbnQgeworICAgIHBvc2l0aW9uOiBzdGF0aWM7CisgICAgaGVpZ2h0OiAxMDAlOworICAg
IG92ZXJmbG93LXk6IGF1dG87CisgICAgd2lkdGg6IDEwMCU7CisgICAgbWFyZ2luLXJpZ2h0OiAx
MnB4OworICAgIHBhZGRpbmctcmlnaHQ6IDNweDsKK30KKworLnNjcm9sbGFibGUtY29udGVudDo6
LXdlYmtpdC1zY3JvbGxiYXIgeworICAgIHdpZHRoOiAxMXB4OworfQorCisuc2Nyb2xsYWJsZS1j
b250ZW50Ojotd2Via2l0LXNjcm9sbGJhci1jb3JuZXIsCisuc2Nyb2xsYWJsZS1jb250ZW50Ojot
d2Via2l0LXJlc2l6ZXIgeworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKKy5zY3JvbGxhYmxlLWNv
bnRlbnQ6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOnZlcnRpY2FsIHsKKyAgICBiYWNrZ3JvdW5k
OiAtd2Via2l0LWdyYWRpZW50KGxpbmVhciwgbGVmdCB0b3AsIHJpZ2h0IHRvcCwgZnJvbShyZ2Io
MTkyLCAxOTIsIDE5MikpLCB0byhyZ2IoMTkyLCAxOTIsIDE5MikpLCBjb2xvci1zdG9wKDQwJSwg
cmdiKDIxNCwgMjE0LCAyMTQpKSk7CisgICAgYm9yZGVyLXJhZGl1czogNXB4OworICAgIG1pbi1o
ZWlnaHQ6IDIwcHg7Cit9CisKKy5zY3JvbGxhYmxlLWNvbnRlbnQ6Oi13ZWJraXQtc2Nyb2xsYmFy
LXRodW1iOnZlcnRpY2FsOmhvdmVyLAorLnNjcm9sbGFibGUtY29udGVudDo6LXdlYmtpdC1zY3Jv
bGxiYXItdGh1bWI6dmVydGljYWw6YWN0aXZlIHsKKyAgICBiYWNrZ3JvdW5kOiAtd2Via2l0LWdy
YWRpZW50KGxpbmVhciwgbGVmdCB0b3AsIHJpZ2h0IHRvcCwgZnJvbShyZ2IoMjMwLCAyMzAsIDIz
MCkpLCB0byhyZ2IoMjMwLCAyMzAsIDIzMCkpLCBjb2xvci1zdG9wKDQwJSwgcmdiKDI1MiwgMjUy
LCAyNTIpKSk7Cit9CisKKy5zY3JvbGxhYmxlLWNvbnRlbnQ6Oi13ZWJraXQtc2Nyb2xsYmFyLXRy
YWNrOnZlcnRpY2FsIHsKKyAgICBiYWNrZ3JvdW5kOiAtd2Via2l0LWdyYWRpZW50KGxpbmVhciwg
bGVmdCB0b3AsIHJpZ2h0IHRvcCwgZnJvbShyZ2IoMTI4LCAxMjgsIDEyOCkpLCB0byhyZ2IoMTY0
LCAxNjQsIDE2NCkpLCBjb2xvci1zdG9wKDI1JSwgcmdiKDE2NCwgMTY0LCAxNjQpKSk7CisgICAg
Ym9yZGVyLXJhZGl1czogNXB4OworfQorCisudG9vbGJhci1zZWFyY2gtaXRlbSB7CisgICAgZGlz
cGxheTogLXdlYmtpdC1ib3g7CisgICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDsKKyAg
ICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyOworICAgIC13ZWJraXQtYm94LXBhY2s6IGVuZDsK
K30KKwogI3NlYXJjaCB7CiAgICAgd2lkdGg6IDIwNXB4OwogICAgIGZvbnQtc2l6ZTogMTZweDsK
LSAgICBtYXJnaW4tYm90dG9tOiA1cHg7CiB9CiAKIGJvZHkuYXR0YWNoZWQgI3NlYXJjaCB7CiAg
ICAgZm9udC1zaXplOiAxMXB4OwotICAgIG1hcmdpbi1ib3R0b206IDhweDsKIH0KIAogI3NlYXJj
aC1yZXN1bHRzLW1hdGNoZXMgewogICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICB0ZXh0LXNoYWRv
dzogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpIDAgMXB4IDA7Ci0gICAgbWFyZ2luLWJvdHRvbTog
MjJweDsKLX0KLQotYm9keS5hdHRhY2hlZCAjc2VhcmNoLXJlc3VsdHMtbWF0Y2hlcyB7Ci0gICAg
bWFyZ2luLWJvdHRvbTogNnB4OwogfQogCiAudG9vbGJhci1pdGVtLmVsZW1lbnRzIC50b29sYmFy
LWljb24gewpAQCAtMjM4LDcgKzM0OSw3IEBAIGJvZHkuYXR0YWNoZWQgI3NlYXJjaC1yZXN1bHRz
LW1hdGNoZXMgewogICAgIGJhY2tncm91bmQtcG9zaXRpb246IDAgMDsKICAgICBiYWNrZ3JvdW5k
LWNvbG9yOiB0cmFuc3BhcmVudDsKICAgICBib3JkZXI6IDAgbm9uZSB0cmFuc3BhcmVudDsKLSAg
ICBtYXJnaW46IDVweCAwOworICAgIG1hcmdpbjogOXB4IDA7CiB9CiAKICNjbG9zZS1idXR0b24t
bGVmdDpob3ZlciwgI2Nsb3NlLWJ1dHRvbi1yaWdodDpob3ZlciB7CkBAIC0yNDksNiArMzYwLDEw
IEBAIGJvZHkuYXR0YWNoZWQgI3NlYXJjaC1yZXN1bHRzLW1hdGNoZXMgewogICAgIGJhY2tncm91
bmQtcG9zaXRpb246IDI4cHggMDsKIH0KIAorLmNsb3NlLWxlZnQgeworICAgIGZsb2F0OiBsZWZ0
OworfQorCiBib2R5LmRldGFjaGVkIC50b29sYmFyLWl0ZW0uY2xvc2UtbGVmdCwgYm9keS5kZXRh
Y2hlZCAudG9vbGJhci1pdGVtLmNsb3NlLXJpZ2h0IHsKICAgICBkaXNwbGF5OiBub25lOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3Iu
aHRtbCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwK
aW5kZXggNTViMzJmZC4uNGIxNDJlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCkBAIC0xNTUsMTQgKzE1NSwxNyBAQCBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlNob3J0Y3V0c0hlbHAu
anMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkhB
UkVudHJ5LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIg
c3JjPSJDb29raWVQYXJzZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0IiBzcmM9IlRvb2xiYXJEcm9wZG93bi5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8
Ym9keSBjbGFzcz0iZGV0YWNoZWQiPgogICAgIDxkaXYgaWQ9InRvb2xiYXIiPgogICAgICAgICA8
ZGl2IGNsYXNzPSJ0b29sYmFyLWl0ZW0gY2xvc2UtbGVmdCI+PGJ1dHRvbiBpZD0iY2xvc2UtYnV0
dG9uLWxlZnQiPjwvYnV0dG9uPjwvZGl2PgotICAgICAgICA8ZGl2IGNsYXNzPSJ0b29sYmFyLWl0
ZW0gZmxleGFibGUtc3BhY2UiPjwvZGl2PgotICAgICAgICA8ZGl2IGNsYXNzPSJ0b29sYmFyLWl0
ZW0gaGlkZGVuIiBpZD0ic2VhcmNoLXJlc3VsdHMtbWF0Y2hlcyI+PC9kaXY+Ci0gICAgICAgIDxk
aXYgY2xhc3M9InRvb2xiYXItaXRlbSI+PGlucHV0IGlkPSJzZWFyY2giIHR5cGU9InNlYXJjaCIg
aW5jcmVtZW50YWwgcmVzdWx0cz0iMCI+PGRpdiBpZD0ic2VhcmNoLXRvb2xiYXItbGFiZWwiIGNs
YXNzPSJ0b29sYmFyLWxhYmVsIj48L2Rpdj48L2Rpdj4KLSAgICAgICAgPGRpdiBjbGFzcz0idG9v
bGJhci1pdGVtIGNsb3NlLXJpZ2h0Ij48YnV0dG9uIGlkPSJjbG9zZS1idXR0b24tcmlnaHQiPjwv
YnV0dG9uPjwvZGl2PgorICAgICAgICA8ZGl2IGlkPSJ0b29sYmFyLWNvbnRyb2xzIj4KKyAgICAg
ICAgICAgIDxkaXYgY2xhc3M9InRvb2xiYXItaXRlbSI+PGJ1dHRvbiBpZD0idG9vbGJhci1kcm9w
ZG93bi1hcnJvdyIgY2xhc3M9InRvb2xiYXItbGFiZWwiPiZyYXF1bzs8L2J1dHRvbj48L2Rpdj4K
KyAgICAgICAgICAgIDxkaXYgY2xhc3M9InRvb2xiYXItaXRlbSBoaWRkZW4iIGlkPSJzZWFyY2gt
cmVzdWx0cy1tYXRjaGVzIj48L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9InRvb2xiYXIt
aXRlbSB0b29sYmFyLXNlYXJjaC1pdGVtIj48aW5wdXQgaWQ9InNlYXJjaCIgdHlwZT0ic2VhcmNo
IiBpbmNyZW1lbnRhbCByZXN1bHRzPSIwIj48ZGl2IGlkPSJzZWFyY2gtdG9vbGJhci1sYWJlbCIg
Y2xhc3M9InRvb2xiYXItbGFiZWwiPjwvZGl2PjwvZGl2PgorICAgICAgICAgICAgPGRpdiBjbGFz
cz0idG9vbGJhci1pdGVtIGNsb3NlLXJpZ2h0Ij48YnV0dG9uIGlkPSJjbG9zZS1idXR0b24tcmln
aHQiPjwvYnV0dG9uPjwvZGl2PgorICAgICAgICA8L2Rpdj4KICAgICA8L2Rpdj4KICAgICA8ZGl2
IGlkPSJtYWluIj4KICAgICAgICAgPGRpdiBpZD0ibWFpbi1wYW5lbHMiIHNwZWxsY2hlY2s9ImZh
bHNlIj48L2Rpdj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvaW5zcGVjdG9yLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNw
ZWN0b3IuanMKaW5kZXggNjI4NjhlOS4uYzdmZWRlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKQEAgLTI2NCw2ICsyNjQsNyBAQCB2YXIg
V2ViSW5zcGVjdG9yID0gewogICAgICAgICB9CiAgICAgICAgIGlmICh0aGlzLmRyYXdlcikKICAg
ICAgICAgICAgIHRoaXMuZHJhd2VyLnJlc2l6ZSgpOworICAgICAgICBXZWJJbnNwZWN0b3IuVG9v
bGJhckRyb3Bkb3duLnVwZGF0ZUJ1dHRvbkFuZFJlbW92ZURyb3Bkb3duKCk7CiAgICAgfSwKIAog
ICAgIGdldCBlcnJvcnMoKQpAQCAtNDk4LDcgKzQ5OSw3IEBAIFdlYkluc3BlY3Rvci5kb0xvYWRl
ZERvbmUgPSBmdW5jdGlvbigpCiAgICAgdGhpcy5fcGFuZWxIaXN0b3J5ID0gbmV3IFdlYkluc3Bl
Y3Rvci5QYW5lbEhpc3RvcnkoKTsKIAogICAgIHZhciB0b29sYmFyRWxlbWVudCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJ0b29sYmFyIik7Ci0gICAgdmFyIHByZXZpb3VzVG9vbGJhckl0ZW0g
PSB0b29sYmFyRWxlbWVudC5jaGlsZHJlblswXTsKKyAgICB2YXIgcHJldmlvdXNUb29sYmFySXRl
bSA9IHRvb2xiYXJFbGVtZW50LmNoaWxkcmVuWzFdOwogCiAgICAgdGhpcy5wYW5lbE9yZGVyID0g
W107CiAgICAgZm9yICh2YXIgcGFuZWxOYW1lIGluIHRoaXMucGFuZWxzKQpAQCAtNTQzLDYgKzU0
NCw4IEBAIFdlYkluc3BlY3Rvci5kb0xvYWRlZERvbmUgPSBmdW5jdGlvbigpCiAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImNsb3NlLWJ1dHRvbi1sZWZ0IikuYWRkRXZlbnRMaXN0ZW5lcigi
Y2xpY2siLCB0aGlzLmNsb3NlLCB0cnVlKTsKICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
Y2xvc2UtYnV0dG9uLXJpZ2h0IikuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLmNsb3Nl
LCB0cnVlKTsKIAorICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0b29sYmFyLWRyb3Bkb3du
LWFycm93IikuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBXZWJJbnNwZWN0b3IuVG9vbGJhckRy
b3Bkb3duLnRvZ2dsZSwgZmFsc2UpOworCiAgICAgdGhpcy5leHRlbnNpb25TZXJ2ZXIuaW5pdEV4
dGVuc2lvbnMoKTsKIAogICAgIGZ1bmN0aW9uIG9uUG9wdWxhdGVTY3JpcHRPYmplY3RzKCkKQEAg
LTU3NCwxMCArNTc3LDggQEAgV2ViSW5zcGVjdG9yLmFkZFBhbmVsVG9vbGJhckljb24gPSBmdW5j
dGlvbih0b29sYmFyRWxlbWVudCwgcGFuZWwsIHByZXZpb3VzVG9vbGIKICAgICB2YXIgcGFuZWxU
b29sYmFySXRlbSA9IHBhbmVsLnRvb2xiYXJJdGVtOwogICAgIHRoaXMucGFuZWxPcmRlci5wdXNo
KHBhbmVsKTsKICAgICBwYW5lbFRvb2xiYXJJdGVtLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwg
dGhpcy5fdG9vbGJhckl0ZW1DbGlja2VkLmJpbmQodGhpcykpOwotICAgIGlmIChwcmV2aW91c1Rv
b2xiYXJJdGVtKQotICAgICAgICB0b29sYmFyRWxlbWVudC5pbnNlcnRCZWZvcmUocGFuZWxUb29s
YmFySXRlbSwgcHJldmlvdXNUb29sYmFySXRlbS5uZXh0U2libGluZyk7Ci0gICAgZWxzZQotICAg
ICAgICB0b29sYmFyRWxlbWVudC5pbnNlcnRCZWZvcmUocGFuZWxUb29sYmFySXRlbSwgdG9vbGJh
ckVsZW1lbnQuZmlyc3RDaGlsZCk7CisgICAgdG9vbGJhckVsZW1lbnQuaW5zZXJ0QmVmb3JlKHBh
bmVsVG9vbGJhckl0ZW0sIHByZXZpb3VzVG9vbGJhckl0ZW0ubmV4dFNpYmxpbmcpOworICAgIFdl
Ykluc3BlY3Rvci5Ub29sYmFyRHJvcGRvd24udXBkYXRlQnV0dG9uQW5kUmVtb3ZlRHJvcGRvd24o
KTsKICAgICByZXR1cm4gcGFuZWxUb29sYmFySXRlbTsKIH0KIApAQCAtNjE4LDYgKzYxOSw3IEBA
IFdlYkluc3BlY3Rvci5kaXNwYXRjaE1lc3NhZ2VGcm9tQmFja2VuZCA9IGZ1bmN0aW9uKG1lc3Nh
Z2VPYmplY3QpCiAKIFdlYkluc3BlY3Rvci53aW5kb3dSZXNpemUgPSBmdW5jdGlvbihldmVudCkK
IHsKKyAgICBXZWJJbnNwZWN0b3IuVG9vbGJhckRyb3Bkb3duLnVwZGF0ZUJ1dHRvbkFuZFJlbW92
ZURyb3Bkb3duKCk7CiAgICAgaWYgKHRoaXMuY3VycmVudFBhbmVsKQogICAgICAgICB0aGlzLmN1
cnJlbnRQYW5lbC5yZXNpemUoKTsKICAgICB0aGlzLmRyYXdlci5yZXNpemUoKTsKQEAgLTE2NjYs
NiArMTY2OCw3IEBAIFdlYkluc3BlY3Rvci51cGRhdGVTZWFyY2hNYXRjaGVzQ291bnQgPSBmdW5j
dGlvbihtYXRjaGVzLCBwYW5lbCkKICAgICB2YXIgbWF0Y2hlc1Rvb2xiYXJFbGVtZW50ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNlYXJjaC1yZXN1bHRzLW1hdGNoZXMiKTsKICAgICBtYXRj
aGVzVG9vbGJhckVsZW1lbnQucmVtb3ZlU3R5bGVDbGFzcygiaGlkZGVuIik7CiAgICAgbWF0Y2hl
c1Rvb2xiYXJFbGVtZW50LnRleHRDb250ZW50ID0gbWF0Y2hlc1N0cmluZzsKKyAgICBXZWJJbnNw
ZWN0b3IudG9vbGJhckRyb3Bkb3duLnVwZGF0ZUJ1dHRvbkFuZFJlbW92ZURyb3Bkb3duKCk7CiB9
CiAKIFdlYkluc3BlY3Rvci5VSVN0cmluZyA9IGZ1bmN0aW9uKHN0cmluZykKQEAgLTE4NDMsNiAr
MTg0Niw3IEBAIFdlYkluc3BlY3Rvci5zdGFydEVkaXRpbmcgPSBmdW5jdGlvbihlbGVtZW50LCBj
b25maWcpCiBXZWJJbnNwZWN0b3IuX3Rvb2xiYXJJdGVtQ2xpY2tlZCA9IGZ1bmN0aW9uKGV2ZW50
KQogewogICAgIHZhciB0b29sYmFySXRlbSA9IGV2ZW50LmN1cnJlbnRUYXJnZXQ7CisgICAgV2Vi
SW5zcGVjdG9yLlRvb2xiYXJEcm9wZG93bi51cGRhdGVCdXR0b25BbmRSZW1vdmVEcm9wZG93bigp
OwogICAgIHRoaXMuY3VycmVudFBhbmVsID0gdG9vbGJhckl0ZW0ucGFuZWw7CiB9CiAK
</data>
<flag name="review"
          id="74662"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>83170</attachid>
            <date>2011-02-21 08:54:57 -0800</date>
            <delta_ts>2011-02-21 10:36:29 -0800</delta_ts>
            <desc>patch</desc>
            <filename>toolbar-refactoring</filename>
            <type>text/plain</type>
            <size>74935</size>
            <attacher name="Andrey Kosyakov">caseq</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1NTQ5MjkxLi5kOGYwNGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTI1
IEBACisyMDExLTAyLTIxICBBbmRyZXkgS29zeWFrb3YgIDxjYXNlcUBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogcHJvdmlkZSBhIGJ1dHRvbiB0byBleHBhbmQgaW5zcGVjdG9yIHRvb2xiYXIgd2hlbiBu
b3QgYWxsIHBhbmVsIGJ1dHRvbnMgZml0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01NDY3MQorCisgICAgICAgIEZhY3RvcmluZyBUb29sYmFyLCBQYW5l
bE1hbmFnZXIgYW5kIFNlYXJjaENvbnRyb2xsZXIgb3V0IG9mIGluc3BlY3Rvci5qcworCisgICAg
ICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5lbC5qczoKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZS5zZWFyY2hDYW5jZWxl
ZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUuc3dpdGNo
VG9BbmRGb2N1cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5
cGUuX3VwZGF0ZU1hdGNoZXNDb3VudCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9F
eHRlbnNpb25TZXJ2ZXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVy
LnByb3RvdHlwZS5fb25DcmVhdGVQYW5lbCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVu
ZC9QYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5QYW5lbC5wcm90b3R5cGUuc2hvdyk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuUGFuZWwucHJvdG90eXBlLmhpZGUpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlBhbmVsLnByb3RvdHlwZS5zZWFyY2hDYW5jZWxlZCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuUGFuZWwucHJvdG90eXBlLnBlcmZvcm1TZWFyY2gudXBkYXRlTWF0Y2hlc0Nv
dW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1BhbmVsTWFuYWdlci5qczogQWRk
ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuUGFuZWxNYW5hZ2VyKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5QYW5lbE1hbmFnZXIucHJvdG90eXBlLmFkZFBhbmVsKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5QYW5lbE1hbmFnZXIucHJvdG90eXBlLmFjdGl2YXRlUGFuZWwpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlBhbmVsTWFuYWdlci5wcm90b3R5cGUuZ2V0IGN1cnJlbnRQYW5lbCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuUGFuZWxNYW5hZ2VyLnByb3RvdHlwZS5fY3ljbGVQYW5lbHMp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlBhbmVsTWFuYWdlci5wcm90b3R5cGUuaGFuZGxlU2hv
cnRjdXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlBhbmVsSGlzdG9yeSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuUGFuZWxIaXN0b3J5LnByb3RvdHlwZS5jYW5Hb0JhY2spOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlBhbmVsSGlzdG9yeS5wcm90b3R5cGUuZ29CYWNrKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5QYW5lbEhpc3RvcnkucHJvdG90eXBlLmNhbkdvRm9yd2FyZCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuUGFuZWxIaXN0b3J5LnByb3RvdHlwZS5nb0ZvcndhcmQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlBhbmVsSGlzdG9yeS5wcm90b3R5cGUuc2V0UGFuZWwpOgorICAgICAg
ICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanM6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwucHJvdG90eXBlLnNob3dTb3VyY2VMaW5lKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qczoKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlLnJlc2V0KToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlLnNlYXJjaENhbmNlbGVkKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlLnBlcmZvcm1TZWFyY2guZmluaXNoZWRD
YWxsYmFjayk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZS5w
ZXJmb3JtU2VhcmNoKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1NlYXJjaENvbnRy
b2xsZXIuanM6IEFkZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNlYXJjaENvbnRyb2xsZXIp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNlYXJjaENvbnRyb2xsZXIucHJvdG90eXBlLmhhbmRs
ZVNob3J0Y3V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TZWFyY2hDb250cm9sbGVyLnByb3Rv
dHlwZS5wZXJmb3JtU2VhcmNoKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TZWFyY2hDb250cm9s
bGVyLnByb3RvdHlwZS5jYW5jZWxTZWFyY2gpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNlYXJj
aENvbnRyb2xsZXIucHJvdG90eXBlLnVwZGF0ZVNlYXJjaE1hdGNoZXNDb3VudCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuU2VhcmNoQ29udHJvbGxlci5wcm90b3R5cGUuX3VwZGF0ZVNlYXJjaE1h
dGNoZXNDb3VudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2VhcmNoQ29udHJvbGxlci5wcm90
b3R5cGUuX2ZvY3VzU2VhcmNoRmllbGQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNlYXJjaENv
bnRyb2xsZXIucHJvdG90eXBlLnVwZGF0ZVNlYXJjaExhYmVsKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5TZWFyY2hDb250cm9sbGVyLnByb3RvdHlwZS5fb25TZWFyY2hGaWVsZE1hbnVhbEZvY3Vz
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TZWFyY2hDb250cm9sbGVyLnByb3RvdHlwZS5fb25T
ZWFyY2hLZXlEb3duKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TZWFyY2hDb250cm9sbGVyLnBy
b3RvdHlwZS5fcGVyZm9ybVNlYXJjaCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2VhcmNoQ29u
dHJvbGxlci5wcm90b3R5cGUuX29uQWN0aXZlUGFuZWxDaGFuZ2VkLnBlcmZvcm1QYW5lbFNlYXJj
aCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2VhcmNoQ29udHJvbGxlci5wcm90b3R5cGUuX29u
QWN0aXZlUGFuZWxDaGFuZ2VkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Rvb2xi
YXIuanM6IEFkZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRvb2xiYXIpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlRvb2xiYXIucHJvdG90eXBlLnJlc2l6ZSk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuVG9vbGJhci5wcm90b3R5cGUuYWRkUGFuZWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlRvb2xiYXIucHJvdG90eXBlLmNyZWF0ZVBhbmVsVG9vbGJhckl0ZW0pOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlRvb2xiYXIucHJvdG90eXBlLl90b29sYmFySXRlbUNsaWNrZWQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlRvb2xiYXIucHJvdG90eXBlLl90b29sYmFyRHJhZ1N0YXJ0KToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5Ub29sYmFyLnByb3RvdHlwZS5fdG9vbGJhckRyYWdFbmQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlRvb2xiYXIucHJvdG90eXBlLl90b29sYmFyRHJhZyk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuVG9vbGJhci5wcm90b3R5cGUuX29uQ2xvc2UpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlRvb2xiYXIucHJvdG90eXBlLl9vbkFjdGl2ZVBhbmVsQ2hhbmdlZCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuVG9vbGJhckRyb3Bkb3duKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5Ub29sYmFyRHJvcGRvd24ucHJvdG90eXBlLnNob3cpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlRvb2xiYXJEcm9wZG93bi5wcm90b3R5cGUuaGlkZSk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuVG9vbGJhckRyb3Bkb3duLnByb3RvdHlwZS5nZXQgdmlzaWJsZSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuVG9vbGJhckRyb3Bkb3duLnByb3RvdHlwZS5fcG9wdWxhdGUpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlRvb2xiYXJEcm9wZG93bi5wcm90b3R5cGUuX29uS2V5RG93bik6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuVG9vbGJhckRyb3Bkb3duLl9zZXRWaXNpYmxlKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5Ub29sYmFyRHJvcGRvd24uX3RvZ2dsZSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuVG9vbGJhckRyb3Bkb3duLl91cGRhdGVCdXR0b25BbmRSZW1vdmVEcm9wZG93bik6
CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjOgorICAgICAgICAqIGlu
c3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzczoKKyAgICAgICAgKCN0b29sYmFyKToKKyAg
ICAgICAgKC50b29sYmFyLWl0ZW0pOgorICAgICAgICAoLnRvb2xiYXItaXRlbS50b2dnbGVhYmxl
KToKKyAgICAgICAgKC50b29sYmFyLWl0ZW0udG9nZ2xlYWJsZS50b2dnbGVkLW9uKToKKyAgICAg
ICAgKCN0b29sYmFyLWRyb3Bkb3duIC50b29sYmFyLWljb24pOgorICAgICAgICAoI3Rvb2xiYXIt
ZHJvcGRvd24gLnRvb2xiYXItbGFiZWwpOgorICAgICAgICAoI3Rvb2xiYXItY29udHJvbHMpOgor
ICAgICAgICAoI3Rvb2xiYXItZHJvcGRvd24tYXJyb3cpOgorICAgICAgICAoYm9keS5hdHRhY2hl
ZCAjdG9vbGJhci1kcm9wZG93bi1hcnJvdyk6CisgICAgICAgICgjdG9vbGJhci1kcm9wZG93bi1h
cnJvdy5kcm9wZG93bi12aXNpYmxlKToKKyAgICAgICAgKCN0b29sYmFyLWRyb3Bkb3duLWFycm93
OmhvdmVyKToKKyAgICAgICAgKCN0b29sYmFyLWRyb3Bkb3duLWFycm93OmFjdGl2ZSk6CisgICAg
ICAgICgjdG9vbGJhci1kcm9wZG93bik6CisgICAgICAgIChib2R5LmRldGFjaGVkLnBsYXRmb3Jt
LW1hYy1zbm93bGVvcGFyZCAjdG9vbGJhci1kcm9wZG93bik6CisgICAgICAgICgjdG9vbGJhci1k
cm9wZG93biAuc2Nyb2xsYWJsZS1jb250ZW50KToKKyAgICAgICAgKCN0b29sYmFyLWRyb3Bkb3du
IC50b29sYmFyLWl0ZW0pOgorICAgICAgICAoI3Rvb2xiYXItZHJvcGRvd24gLnRvb2xiYXItaXRl
bS50b2dnbGVhYmxlLnRvZ2dsZWQtb24pOgorICAgICAgICAoI3Rvb2xiYXItZHJvcGRvd24gLnRv
b2xiYXItaXRlbTpob3Zlcik6CisgICAgICAgICgjdG9vbGJhci1kcm9wZG93biAudG9vbGJhci1p
dGVtLnRvZ2dsZWFibGUudG9nZ2xlZC1vbjpob3Zlcik6CisgICAgICAgICgjdG9vbGJhci1kcm9w
ZG93biAudG9vbGJhci1pdGVtOmFjdGl2ZSAudG9vbGJhci1pY29uKToKKyAgICAgICAgKC5zY3Jv
bGxhYmxlLWNvbnRlbnQpOgorICAgICAgICAoLnNjcm9sbGFibGUtY29udGVudDo6LXdlYmtpdC1z
Y3JvbGxiYXIpOgorICAgICAgICAoLnNjcm9sbGFibGUtY29udGVudDo6LXdlYmtpdC1yZXNpemVy
KToKKyAgICAgICAgKC5zY3JvbGxhYmxlLWNvbnRlbnQ6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1i
OnZlcnRpY2FsKToKKyAgICAgICAgKC5zY3JvbGxhYmxlLWNvbnRlbnQ6Oi13ZWJraXQtc2Nyb2xs
YmFyLXRodW1iOnZlcnRpY2FsOmFjdGl2ZSk6CisgICAgICAgICguc2Nyb2xsYWJsZS1jb250ZW50
Ojotd2Via2l0LXNjcm9sbGJhci10cmFjazp2ZXJ0aWNhbCk6CisgICAgICAgICgudG9vbGJhci1z
ZWFyY2gtaXRlbSk6CisgICAgICAgICgjc2VhcmNoKToKKyAgICAgICAgKGJvZHkuYXR0YWNoZWQg
I3NlYXJjaCk6CisgICAgICAgICgjc2VhcmNoLXJlc3VsdHMtbWF0Y2hlcyk6CisgICAgICAgICgj
Y2xvc2UtYnV0dG9uLWxlZnQsICNjbG9zZS1idXR0b24tcmlnaHQpOgorICAgICAgICAoLmNsb3Nl
LWxlZnQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWw6Cisg
ICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanM6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuZ2V0IGN1cnJlbnRQYW5lbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iuc2V0IGF0
dGFjaGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5fdXBkYXRlRm9jdXNlZE5vZGUpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLndpbmRvd1Jlc2l6ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
ZG9jdW1lbnRLZXlEb3duKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5oYW5kbGVTaG9ydGN1dCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5yZXNldCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iuc2hvd1NvdXJjZUxpbmUpOgorCiAyMDEx
LTAyLTE4ICBBbmRyZXkgQWRhaWtpbiAgPGFhbmRyZXlAZ29vZ2xlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGMwYTdiZDQuLmM4
OWQ1ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTQ3MzQsNiArNDczNCw3IEBACiAgICAgICAgICAg
ICAnaW5zcGVjdG9yL2Zyb250LWVuZC9PYmplY3QuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rv
ci9mcm9udC1lbmQvT2JqZWN0UHJvcGVydGllc1NlY3Rpb24uanMnLAogICAgICAgICAgICAgJ2lu
c3BlY3Rvci9mcm9udC1lbmQvUGFuZWwuanMnLAorICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9u
dC1lbmQvUGFuZWxNYW5hZ2VyLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5k
L1BhbmVsRW5hYmxlclZpZXcuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQv
UGxhY2FyZC5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9QbGVhc2VXYWl0
TWVzc2FnZS5qcycsCkBAIC00NzU3LDEwICs0NzU4LDExIEBACiAgICAgICAgICAgICAnaW5zcGVj
dG9yL2Zyb250LWVuZC9TY3JpcHRGb3JtYXR0ZXIuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rv
ci9mcm9udC1lbmQvU2NyaXB0Rm9ybWF0dGVyV29ya2VyLmpzJywKICAgICAgICAgICAgICdpbnNw
ZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcycsCi0gICAgICAgICAgICAnaW5zcGVjdG9y
L2Zyb250LWVuZC9TaG9ydGN1dHNIZWxwLmpzJywKLSAgICAgICAgICAgICdpbnNwZWN0b3IvZnJv
bnQtZW5kL1Nob3dNb3JlRGF0YUdyaWROb2RlLmpzJywKKyAgICAgICAgICAgICdpbnNwZWN0b3Iv
ZnJvbnQtZW5kL1NlYXJjaENvbnRyb2xsZXIuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9m
cm9udC1lbmQvU2VjdGlvbi5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9T
ZXR0aW5ncy5qcycsCisgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9TaG9ydGN1dHNI
ZWxwLmpzJywKKyAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL1Nob3dNb3JlRGF0YUdy
aWROb2RlLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL1NpZGViYXJQYW5l
LmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL1NpZGViYXJUcmVlRWxlbWVu
dC5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VDU1NUb2tlbml6
ZXIuanMnLApAQCAtNDc4Miw2ICs0Nzg0LDcgQEAKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJv
bnQtZW5kL1RpbWVsaW5lT3ZlcnZpZXdQYW5lLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3Iv
ZnJvbnQtZW5kL1RpbWVsaW5lR3JpZC5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250
LWVuZC9UaW1lbGluZVBhbmVsLmpzJywKKyAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5k
L1Rvb2xiYXIuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvVG9wRG93blBy
b2ZpbGVEYXRhR3JpZFRyZWUuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQv
dHJlZW91dGxpbmUuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvdXRpbGl0
aWVzLmpzJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oK
aW5kZXggNTY5MTM0MS4uNDFmZDhmNCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oKQEAgLTY1OTQ1LDcgKzY1OTQ1LDcgQEAKIAkJCQkJPgogCQkJCTwv
RmlsZT4KIAkJCQk8RmlsZQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1l
bmRcVWdsaWZ5SlNccGFyc2UtanMuanMiCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9y
XGZyb250LWVuZFxQYW5lbE1hbmFnZXIuanMiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZp
bGUKQEAgLTY1OTY1LDEwICs2NTk2NSw2IEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZp
bGUKLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXFVnbGlmeUpTXHBy
b2Nlc3MuanMiCi0JCQkJCT4KLQkJCQk8L0ZpbGU+Ci0JCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXFByb2ZpbGVEYXRhR3JpZFRyZWUuanMiCiAJCQkJ
CT4KIAkJCQk8L0ZpbGU+CkBAIC02NjA0NSw2ICs2NjA0MSwxMCBAQAogCQkJCQk+CiAJCQkJPC9G
aWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVu
ZFxTZWFyY2hDb250cm9sbGVyLmpzIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJ
CQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxTZWN0aW9uLmpzIgogCQkJ
CQk+CiAJCQkJPC9GaWxlPgpAQCAtNjYxNDksNiArNjYxNDksMTAgQEAKIAkJCQkJPgogCQkJCTwv
RmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1l
bmRcVG9vbGJhci5qcyIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcVG9wRG93blByb2ZpbGVEYXRhR3JpZFRy
ZWUuanMiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CkBAIC02NjE1Nyw2ICs2NjE2MSwxNCBAQAogCQkJ
CQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVj
dG9yXGZyb250LWVuZFxVZ2xpZnlKU1xwYXJzZS1qcy5qcyIKKwkJCQkJPgorCQkJCTwvRmlsZT4K
KwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcVWds
aWZ5SlNccHJvY2Vzcy5qcyIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcdXRpbGl0aWVzLmpzIgogCQkJCQk+
CiAJCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9FbGVtZW50c1BhbmVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9FbGVtZW50c1BhbmVsLmpzCmluZGV4IDc5YWUyMGIuLjhjODMxM2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5lbC5qcworKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzUGFuZWwuanMKQEAgLTE3
NSw3ICsxNzUsNiBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUgPSB7CiAg
ICAgc2V0RG9jdW1lbnQ6IGZ1bmN0aW9uKGluc3BlY3RlZFJvb3REb2N1bWVudCkKICAgICB7CiAg
ICAgICAgIHRoaXMucmVzZXQoKTsKLSAgICAgICAgdGhpcy5zZWFyY2hDYW5jZWxlZCgpOwogCiAg
ICAgICAgIGlmICghaW5zcGVjdGVkUm9vdERvY3VtZW50KQogICAgICAgICAgICAgcmV0dXJuOwpA
QCAtMjIyLDggKzIyMSw2IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZSA9
IHsKICAgICAgICAgZGVsZXRlIHRoaXMuX3NlYXJjaFF1ZXJ5OwogICAgICAgICB0aGlzLl9oaWRl
U2VhcmNoSGlnaGxpZ2h0cygpOwogCi0gICAgICAgIFdlYkluc3BlY3Rvci51cGRhdGVTZWFyY2hN
YXRjaGVzQ291bnQoMCwgdGhpcyk7Ci0KICAgICAgICAgdGhpcy5fY3VycmVudFNlYXJjaFJlc3Vs
dEluZGV4ID0gMDsKICAgICAgICAgdGhpcy5fc2VhcmNoUmVzdWx0cyA9IFtdOwogICAgICAgICBE
T01BZ2VudC5zZWFyY2hDYW5jZWxlZCgpOwpAQCAtMjY0LDE0ICsyNjEsMTQgQEAgV2ViSW5zcGVj
dG9yLkVsZW1lbnRzUGFuZWwucHJvdG90eXBlID0gewogICAgIHN3aXRjaFRvQW5kRm9jdXM6IGZ1
bmN0aW9uKG5vZGUpCiAgICAgewogICAgICAgICAvLyBSZXNldCBzZWFyY2ggcmVzdG9yZS4KLSAg
ICAgICAgV2ViSW5zcGVjdG9yLmNhbmNlbFNlYXJjaCgpOwotICAgICAgICBXZWJJbnNwZWN0b3Iu
Y3VycmVudFBhbmVsID0gdGhpczsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnNlYXJjaENvbnRyb2xs
ZXIuY2FuY2VsU2VhcmNoKCk7CisgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbE1hbmFnZXIuYWN0
aXZhdGVQYW5lbCh0aGlzKTsKICAgICAgICAgdGhpcy5mb2N1c2VkRE9NTm9kZSA9IG5vZGU7CiAg
ICAgfSwKIAogICAgIF91cGRhdGVNYXRjaGVzQ291bnQ6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAg
ICAgIFdlYkluc3BlY3Rvci51cGRhdGVTZWFyY2hNYXRjaGVzQ291bnQodGhpcy5fc2VhcmNoUmVz
dWx0cy5sZW5ndGgsIHRoaXMpOworICAgICAgICBXZWJJbnNwZWN0b3Iuc2VhcmNoQ29udHJvbGxl
ci51cGRhdGVTZWFyY2hNYXRjaGVzQ291bnQodGhpcy5fc2VhcmNoUmVzdWx0cy5sZW5ndGgsIHRo
aXMpOwogICAgICAgICB0aGlzLl9tYXRjaGVzQ291bnRVcGRhdGVUaW1lb3V0ID0gbnVsbDsKICAg
ICAgICAgdGhpcy5fdXBkYXRlZE1hdGNoQ291bnRPbmNlID0gdHJ1ZTsKICAgICB9LApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25TZXJ2ZXIu
anMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvblNlcnZlci5q
cwppbmRleCBiYTMwZjczLi5mOWU2NWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvblNlcnZlci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvblNlcnZlci5qcwpAQCAtMTc4LDExICsxNzgsOCBA
QCBXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAg
IHJldHVybiB0aGlzLl9zdGF0dXMuRV9FWElTVFMoaWQpOwogICAgICAgICB2YXIgcGFuZWwgPSBu
ZXcgV2ViSW5zcGVjdG9yLkV4dGVuc2lvblBhbmVsKGlkLCBtZXNzYWdlLnRpdGxlLCBtZXNzYWdl
Lmljb24pOwogICAgICAgICB0aGlzLl9jbGllbnRPYmplY3RzW2lkXSA9IHBhbmVsOwotCi0gICAg
ICAgIHZhciB0b29sYmFyRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0b29sYmFy
Iik7Ci0gICAgICAgIHZhciBsYXN0VG9vbGJhckl0ZW0gPSBXZWJJbnNwZWN0b3IucGFuZWxPcmRl
cltXZWJJbnNwZWN0b3IucGFuZWxPcmRlci5sZW5ndGggLSAxXS50b29sYmFySXRlbTsKLSAgICAg
ICAgV2ViSW5zcGVjdG9yLmFkZFBhbmVsVG9vbGJhckljb24odG9vbGJhckVsZW1lbnQsIHBhbmVs
LCBsYXN0VG9vbGJhckl0ZW0pOwogICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzW2lkXSA9IHBh
bmVsOworICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxNYW5hZ2VyLmFkZFBhbmVsKHBhbmVscyk7
CiAgICAgICAgIHZhciBpZnJhbWUgPSB0aGlzLl9jcmVhdGVDbGllbnRJZnJhbWUocGFuZWwuZWxl
bWVudCwgbWVzc2FnZS51cmwpOwogICAgICAgICBpZnJhbWUuc3R5bGUuaGVpZ2h0ID0gIjEwMCUi
OwogICAgICAgICByZXR1cm4gdGhpcy5fc3RhdHVzLk9LKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1BhbmVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9QYW5lbC5qcwppbmRleCA0YzQyYTYwLi5hN2YyYzc5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1BhbmVsLmpzCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUGFuZWwuanMKQEAgLTQxLDM3ICs0MSw2
IEBAIFdlYkluc3BlY3Rvci5QYW5lbCA9IGZ1bmN0aW9uKG5hbWUpCiBXZWJJbnNwZWN0b3IuUGFu
ZWwuY291bnRlclJpZ2h0TWFyZ2luID0gMjU7CiAKIFdlYkluc3BlY3Rvci5QYW5lbC5wcm90b3R5
cGUgPSB7Ci0gICAgZ2V0IHRvb2xiYXJJdGVtKCkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLl90
b29sYmFySXRlbSkKLSAgICAgICAgICAgIHJldHVybiB0aGlzLl90b29sYmFySXRlbTsKLQotICAg
ICAgICAvLyBTYW1wbGUgdG9vbGJhciBpdGVtIGFzIG1hcmt1cDoKLSAgICAgICAgLy8gPGJ1dHRv
biBjbGFzcz0idG9vbGJhci1pdGVtIHJlc291cmNlcyB0b2dnbGVhYmxlIj4KLSAgICAgICAgLy8g
PGRpdiBjbGFzcz0idG9vbGJhci1pY29uIj48L2Rpdj4KLSAgICAgICAgLy8gPGRpdiBjbGFzcz0i
dG9vbGJhci1sYWJlbCI+UmVzb3VyY2VzPC9kaXY+Ci0gICAgICAgIC8vIDwvYnV0dG9uPgotCi0g
ICAgICAgIHRoaXMuX3Rvb2xiYXJJdGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnV0dG9u
Iik7Ci0gICAgICAgIHRoaXMuX3Rvb2xiYXJJdGVtLmNsYXNzTmFtZSA9ICJ0b29sYmFyLWl0ZW0g
dG9nZ2xlYWJsZSI7Ci0gICAgICAgIHRoaXMuX3Rvb2xiYXJJdGVtLnBhbmVsID0gdGhpczsKLQot
ICAgICAgICB0aGlzLl90b29sYmFySXRlbS5hZGRTdHlsZUNsYXNzKHRoaXMuX3BhbmVsTmFtZSk7
Ci0KLSAgICAgICAgdmFyIGljb25FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2
Iik7Ci0gICAgICAgIGljb25FbGVtZW50LmNsYXNzTmFtZSA9ICJ0b29sYmFyLWljb24iOwotICAg
ICAgICB0aGlzLl90b29sYmFySXRlbS5hcHBlbmRDaGlsZChpY29uRWxlbWVudCk7Ci0KLSAgICAg
ICAgaWYgKCJ0b29sYmFySXRlbUxhYmVsIiBpbiB0aGlzKSB7Ci0gICAgICAgICAgICB2YXIgbGFi
ZWxFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAgICAgICBs
YWJlbEVsZW1lbnQuY2xhc3NOYW1lID0gInRvb2xiYXItbGFiZWwiOwotICAgICAgICAgICAgbGFi
ZWxFbGVtZW50LnRleHRDb250ZW50ID0gdGhpcy50b29sYmFySXRlbUxhYmVsOwotICAgICAgICAg
ICAgdGhpcy5fdG9vbGJhckl0ZW0uYXBwZW5kQ2hpbGQobGFiZWxFbGVtZW50KTsKLSAgICAgICAg
fQotCi0gICAgICAgIHJldHVybiB0aGlzLl90b29sYmFySXRlbTsKLSAgICB9LAotCiAgICAgZ2V0
IG5hbWUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3BhbmVsTmFtZTsKQEAgLTg5LDkg
KzU4LDYgQEAgV2ViSW5zcGVjdG9yLlBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJtYWluLXN0YXR1cy1iYXIiKS5hcHBlbmRDaGlsZCh0aGlz
Ll9zdGF0dXNCYXJJdGVtQ29udGFpbmVyKTsKICAgICAgICAgfQogCi0gICAgICAgIGlmICgiX3Rv
b2xiYXJJdGVtIiBpbiB0aGlzKQotICAgICAgICAgICAgdGhpcy5fdG9vbGJhckl0ZW0uYWRkU3R5
bGVDbGFzcygidG9nZ2xlZC1vbiIpOwotCiAgICAgICAgIFdlYkluc3BlY3Rvci5jdXJyZW50Rm9j
dXNFbGVtZW50ID0gdGhpcy5kZWZhdWx0Rm9jdXNlZEVsZW1lbnQ7CiAKICAgICAgICAgdGhpcy5y
ZXN0b3JlU2lkZWJhcldpZHRoKCk7CkBAIC0xMDYsOCArNzIsNiBAQCBXZWJJbnNwZWN0b3IuUGFu
ZWwucHJvdG90eXBlID0gewogICAgICAgICBpZiAodGhpcy5fc3RhdHVzQmFySXRlbUNvbnRhaW5l
ciAmJiB0aGlzLl9zdGF0dXNCYXJJdGVtQ29udGFpbmVyLnBhcmVudE5vZGUpCiAgICAgICAgICAg
ICB0aGlzLl9zdGF0dXNCYXJJdGVtQ29udGFpbmVyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhp
cy5fc3RhdHVzQmFySXRlbUNvbnRhaW5lcik7CiAgICAgICAgIGRlbGV0ZSB0aGlzLl9zdGF0dXNC
YXJJdGVtQ29udGFpbmVyOwotICAgICAgICBpZiAoIl90b29sYmFySXRlbSIgaW4gdGhpcykKLSAg
ICAgICAgICAgIHRoaXMuX3Rvb2xiYXJJdGVtLnJlbW92ZVN0eWxlQ2xhc3MoInRvZ2dsZWQtb24i
KTsKICAgICB9LAogCiAgICAgZ2V0IGRlZmF1bHRGb2N1c2VkRWxlbWVudCgpCkBAIC0xMzIsOCAr
OTYsNiBAQCBXZWJJbnNwZWN0b3IuUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgfQog
ICAgICAgICB9CiAKLSAgICAgICAgV2ViSW5zcGVjdG9yLnVwZGF0ZVNlYXJjaE1hdGNoZXNDb3Vu
dCgwLCB0aGlzKTsKLQogICAgICAgICBpZiAodGhpcy5fY3VycmVudFNlYXJjaENodW5rSW50ZXJ2
YWxJZGVudGlmaWVyKSB7CiAgICAgICAgICAgICBjbGVhckludGVydmFsKHRoaXMuX2N1cnJlbnRT
ZWFyY2hDaHVua0ludGVydmFsSWRlbnRpZmllcik7CiAgICAgICAgICAgICBkZWxldGUgdGhpcy5f
Y3VycmVudFNlYXJjaENodW5rSW50ZXJ2YWxJZGVudGlmaWVyOwpAQCAtMTYxLDcgKzEyMyw3IEBA
IFdlYkluc3BlY3Rvci5QYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgZnVuY3Rpb24gdXBk
YXRlTWF0Y2hlc0NvdW50KCkKICAgICAgICAgewotICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnVw
ZGF0ZVNlYXJjaE1hdGNoZXNDb3VudCh0aGlzLl90b3RhbFNlYXJjaE1hdGNoZXMsIHRoaXMpOwor
ICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnNlYXJjaENvbnRyb2xsZXIudXBkYXRlU2VhcmNoTWF0
Y2hlc0NvdW50KHRoaXMuX3RvdGFsU2VhcmNoTWF0Y2hlcywgdGhpcyk7CiAgICAgICAgICAgICBt
YXRjaGVzQ291bnRVcGRhdGVUaW1lb3V0ID0gbnVsbDsKICAgICAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1BhbmVsTWFuYWdlci5qcyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUGFuZWxNYW5hZ2VyLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjkxYzM4NjAKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1BhbmVsTWFuYWdlci5qcwpAQCAtMCww
ICsxLDE3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3IE1hdHQgTGls
ZWsgKHBld3Rlcm1vb3NlQGdtYWlsLmNvbSkuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgSm9zZXBo
IFBlY29yYXJvCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFw
cGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRz
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCitXZWJJbnNwZWN0b3IuUGFuZWxNYW5hZ2VyID0gZnVuY3Rpb24oKQoreworICAgIFdl
Ykluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICB0aGlzLl9wYW5lbE9yZGVyID0gW107
CisgICAgdGhpcy5fcGFuZWxIaXN0b3J5ID0gbmV3IFdlYkluc3BlY3Rvci5QYW5lbEhpc3Rvcnko
KTsKK30KKworV2ViSW5zcGVjdG9yLlBhbmVsTWFuYWdlci5wcm90b3R5cGUgPSB7CisgICAgYWRk
UGFuZWw6IGZ1bmN0aW9uKHBhbmVsKQorICAgIHsKKyAgICAgICAgdGhpcy5fcGFuZWxPcmRlci5w
dXNoKHBhbmVsKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnRvb2xiYXIuYWRkUGFuZWwocGFuZWwp
OworICAgIH0sCisKKyAgICBhY3RpdmF0ZVBhbmVsOiBmdW5jdGlvbihwYW5lbCkKKyAgICB7Cisg
ICAgICAgIGlmICh0aGlzLl9jdXJyZW50UGFuZWwgPT09IHBhbmVsKQorICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgIGlmICh0aGlzLl9jdXJyZW50UGFuZWwpCisgICAgICAgICAgICB0aGlz
Ll9jdXJyZW50UGFuZWwuaGlkZSgpOworCisgICAgICAgIHRoaXMuX2N1cnJlbnRQYW5lbCA9IHBh
bmVsOworCisgICAgICAgIGlmIChwYW5lbCkgeworICAgICAgICAgICAgcGFuZWwuc2hvdygpOwor
ICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnNldHRpbmdzLmxhc3RBY3RpdmVQYW5lbCA9IHBhbmVs
Lm5hbWU7CisgICAgICAgICAgICB0aGlzLl9wYW5lbEhpc3Rvcnkuc2V0UGFuZWwocGFuZWwubmFt
ZSk7CisgICAgICAgIH0KKworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhX
ZWJJbnNwZWN0b3IuUGFuZWxNYW5hZ2VyLkV2ZW50cy5BY3RpdmVQYW5lbENoYW5nZWQsIHBhbmVs
KTsKKyAgICB9LAorCisgICAgZ2V0IGN1cnJlbnRQYW5lbCgpCisgICAgeworICAgICAgICByZXR1
cm4gdGhpcy5fY3VycmVudFBhbmVsOworICAgIH0sCisKKyAgICBfY3ljbGVQYW5lbHM6IGZ1bmN0
aW9uKGRpcmVjdGlvbikKKyAgICB7CisgICAgICAgIHZhciBwYW5lbE9yZGVyID0gdGhpcy5fcGFu
ZWxPcmRlcjsKKyAgICAgICAgdmFyIGluZGV4ID0gcGFuZWxPcmRlci5pbmRleE9mKHRoaXMuY3Vy
cmVudFBhbmVsKTsKKyAgICAgICAgdmFyIG51bWJlck9mUGFuZWxzID0gcGFuZWxPcmRlci5sZW5n
dGg7CisgICAgICAgIHZhciBwYW5lbCA9IHBhbmVsT3JkZXJbKGluZGV4ICsgbnVtYmVyT2ZQYW5l
bHMgKyBkaXJlY3Rpb24pICUgbnVtYmVyT2ZQYW5lbHNdOworICAgICAgICB0aGlzLmFjdGl2YXRl
UGFuZWwocGFuZWwpOworICAgIH0sCisKKyAgICBoYW5kbGVTaG9ydGN1dDogZnVuY3Rpb24oZXZl
bnQpCisgICAgeworICAgICAgICB2YXIgaXNNYWMgPSBXZWJJbnNwZWN0b3IuaXNNYWMoKTsKKyAg
ICAgICAgdmFyIGlzSW5FZGl0TW9kZSA9IGV2ZW50LnRhcmdldC5lbmNsb3NpbmdOb2RlT3JTZWxm
V2l0aENsYXNzKCJ0ZXh0LXByb21wdCIpOworCisgICAgICAgIHN3aXRjaCAoZXZlbnQua2V5SWRl
bnRpZmllcikgeworICAgICAgICAgICAgY2FzZSAiTGVmdCI6CisgICAgICAgICAgICAgICAgdmFy
IGlzQmFja0tleSA9ICFpc0luRWRpdE1vZGUgJiYgKGlzTWFjID8gZXZlbnQubWV0YUtleSA6IGV2
ZW50LmN0cmxLZXkpOworICAgICAgICAgICAgICAgIGlmIChpc0JhY2tLZXkgJiYgdGhpcy5fcGFu
ZWxIaXN0b3J5LmNhbkdvQmFjaygpKSB7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuX3BhbmVs
SGlzdG9yeS5nb0JhY2soKTsKKyAgICAgICAgICAgICAgICAgICAgZXZlbnQuaGFuZGxlZCA9IHRy
dWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAg
ICAgICBjYXNlICJSaWdodCI6CisgICAgICAgICAgICAgICAgdmFyIGlzRm9yd2FyZEtleSA9ICFp
c0luRWRpdE1vZGUgJiYgKGlzTWFjID8gZXZlbnQubWV0YUtleSA6IGV2ZW50LmN0cmxLZXkpOwor
ICAgICAgICAgICAgICAgIGlmIChpc0ZvcndhcmRLZXkgJiYgdGhpcy5fcGFuZWxIaXN0b3J5LmNh
bkdvRm9yd2FyZCgpKSB7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuX3BhbmVsSGlzdG9yeS5n
b0ZvcndhcmQoKTsKKyAgICAgICAgICAgICAgICAgICAgZXZlbnQuaGFuZGxlZCA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAv
LyBXaW5kb3dzIGFuZCBNYWMgaGF2ZSB0d28gZGlmZmVyZW50IGRlZmluaXRpb25zIG9mIFssIHNv
IGFjY2VwdCBib3RoLgorICAgICAgICAgICAgY2FzZSAiVSswMDVCIjoKKyAgICAgICAgICAgIGNh
c2UgIlUrMDBEQiI6IC8vIFsga2V5CisgICAgICAgICAgICAgICAgaWYgKGlzTWFjKQorICAgICAg
ICAgICAgICAgICAgICB2YXIgaXNSb3RhdGVMZWZ0ID0gZXZlbnQubWV0YUtleSAmJiAhZXZlbnQu
c2hpZnRLZXkgJiYgIWV2ZW50LmN0cmxLZXkgJiYgIWV2ZW50LmFsdEtleTsKKyAgICAgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHZhciBpc1JvdGF0ZUxlZnQgPSBldmVudC5j
dHJsS2V5ICYmICFldmVudC5zaGlmdEtleSAmJiAhZXZlbnQubWV0YUtleSAmJiAhZXZlbnQuYWx0
S2V5OworCisgICAgICAgICAgICAgICAgaWYgKGlzUm90YXRlTGVmdCkgeworICAgICAgICAgICAg
ICAgICAgICB0aGlzLl9jeWNsZVBhbmVscygtMSk7CisgICAgICAgICAgICAgICAgICAgIGV2ZW50
LmhhbmRsZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVh
azsKKworICAgICAgICAgICAgLy8gV2luZG93cyBhbmQgTWFjIGhhdmUgdHdvIGRpZmZlcmVudCBk
ZWZpbml0aW9ucyBvZiBdLCBzbyBhY2NlcHQgYm90aC4KKyAgICAgICAgICAgIGNhc2UgIlUrMDA1
RCI6CisgICAgICAgICAgICBjYXNlICJVKzAwREQiOiAgLy8gXSBrZXkKKyAgICAgICAgICAgICAg
ICBpZiAoaXNNYWMpCisgICAgICAgICAgICAgICAgICAgIHZhciBpc1JvdGF0ZVJpZ2h0ID0gZXZl
bnQubWV0YUtleSAmJiAhZXZlbnQuc2hpZnRLZXkgJiYgIWV2ZW50LmN0cmxLZXkgJiYgIWV2ZW50
LmFsdEtleTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHZhciBp
c1JvdGF0ZVJpZ2h0ID0gZXZlbnQuY3RybEtleSAmJiAhZXZlbnQuc2hpZnRLZXkgJiYgIWV2ZW50
Lm1ldGFLZXkgJiYgIWV2ZW50LmFsdEtleTsKKworICAgICAgICAgICAgICAgIGlmIChpc1JvdGF0
ZVJpZ2h0KSB7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuX2N5Y2xlUGFuZWxzKDEpOworICAg
ICAgICAgICAgICAgICAgICBldmVudC5oYW5kbGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9Cit9OworCitXZWJJbnNw
ZWN0b3IuUGFuZWxNYW5hZ2VyLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2Jq
ZWN0LnByb3RvdHlwZTsKKworV2ViSW5zcGVjdG9yLlBhbmVsTWFuYWdlci5FdmVudHMgPSB7Cisg
ICAgQWN0aXZlUGFuZWxDaGFuZ2VkOiAiQWN0aXZlUGFuZWxDaGFuZ2VkIgorfTsKKworV2ViSW5z
cGVjdG9yLlBhbmVsSGlzdG9yeSA9IGZ1bmN0aW9uKCkKK3sKKyAgICB0aGlzLl9oaXN0b3J5ID0g
W107CisgICAgdGhpcy5faGlzdG9yeUl0ZXJhdG9yID0gLTE7Cit9CisKK1dlYkluc3BlY3Rvci5Q
YW5lbEhpc3RvcnkucHJvdG90eXBlID0geworICAgIGNhbkdvQmFjazogZnVuY3Rpb24oKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2hpc3RvcnlJdGVyYXRvciA+IDA7CisgICAgfSwKKwor
ICAgIGdvQmFjazogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5faW5IaXN0b3J5ID0g
dHJ1ZTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVsTWFuYWdlci5hY3RpdmF0ZVBhbmVsKFdl
Ykluc3BlY3Rvci5wYW5lbHNbdGhpcy5faGlzdG9yeVstLXRoaXMuX2hpc3RvcnlJdGVyYXRvcl1d
KTsKKyAgICAgICAgZGVsZXRlIHRoaXMuX2luSGlzdG9yeTsKKyAgICB9LAorCisgICAgY2FuR29G
b3J3YXJkOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5faGlzdG9yeUl0
ZXJhdG9yIDwgdGhpcy5faGlzdG9yeS5sZW5ndGggLSAxOworICAgIH0sCisKKyAgICBnb0Zvcndh
cmQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuX2luSGlzdG9yeSA9IHRydWU7Cisg
ICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbE1hbmFnZXIuYWN0aXZhdGVQYW5lbChXZWJJbnNwZWN0
b3IucGFuZWxzW3RoaXMuX2hpc3RvcnlbKyt0aGlzLl9oaXN0b3J5SXRlcmF0b3JdXSk7CisgICAg
ICAgIGRlbGV0ZSB0aGlzLl9pbkhpc3Rvcnk7CisgICAgfSwKKworICAgIHNldFBhbmVsOiBmdW5j
dGlvbihwYW5lbE5hbWUpCisgICAgeworICAgICAgICBpZiAodGhpcy5faW5IaXN0b3J5KQorICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX2hpc3Rvcnkuc3BsaWNlKHRoaXMuX2hp
c3RvcnlJdGVyYXRvciArIDEsIHRoaXMuX2hpc3RvcnkubGVuZ3RoIC0gdGhpcy5faGlzdG9yeUl0
ZXJhdG9yIC0gMSk7CisgICAgICAgIGlmICghdGhpcy5faGlzdG9yeS5sZW5ndGggfHwgdGhpcy5f
aGlzdG9yeVt0aGlzLl9oaXN0b3J5Lmxlbmd0aCAtIDFdICE9PSBwYW5lbE5hbWUpCisgICAgICAg
ICAgICB0aGlzLl9oaXN0b3J5LnB1c2gocGFuZWxOYW1lKTsKKyAgICAgICAgdGhpcy5faGlzdG9y
eUl0ZXJhdG9yID0gdGhpcy5faGlzdG9yeS5sZW5ndGggLSAxOworICAgIH0KK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzCmlu
ZGV4IDNjODU4OTIuLjExZTJjOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcwpAQCAtMzM2LDcgKzMzNiw3IEBAIFdlYklu
c3BlY3Rvci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmIChyZXNvdXJj
ZS50eXBlID09PSBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5YSFIpIHsKICAgICAgICAgICAg
IC8vIFNob3cgWEhScyBpbiB0aGUgbmV0d29yayBwYW5lbCBvbmx5LgogICAgICAgICAgICAgaWYg
KFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yayAmJiBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdv
cmsuY2FuU2hvd1NvdXJjZUxpbmUodXJsLCBsaW5lKSkgewotICAgICAgICAgICAgICAgIFdlYklu
c3BlY3Rvci5jdXJyZW50UGFuZWwgPSBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcms7CisgICAg
ICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVsTWFuYWdlci5hY3RpdmF0ZVBhbmVsKFdlYklu
c3BlY3Rvci5wYW5lbHMubmV0d29yayk7CiAgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnBh
bmVscy5uZXR3b3JrLnNob3dTb3VyY2VMaW5lKHVybCwgbGluZSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvU2NyaXB0c1BhbmVsLmpzCmluZGV4IDg0YzI0ODguLjNmMDAwOWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCkBAIC00
MTcsNyArNDE3LDYgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIHRoaXMudmlzaWJsZVZpZXcgPSBudWxsOwogCiAgICAgICAgIGRlbGV0ZSB0aGlzLmN1
cnJlbnRRdWVyeTsKLSAgICAgICAgdGhpcy5zZWFyY2hDYW5jZWxlZCgpOwogCiAgICAgICAgIHRo
aXMuX2RlYnVnZ2VyUmVzdW1lZCgpOwogCkBAIC05NzIsOCArOTcxLDYgQEAgV2ViSW5zcGVjdG9y
LlNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICBzZWFyY2hDYW5jZWxlZDogZnVuY3Rp
b24oKQogICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnVwZGF0ZVNlYXJjaE1hdGNoZXNDb3Vu
dCgwLCB0aGlzKTsKLQogICAgICAgICBpZiAodGhpcy5fc2VhcmNoVmlldykKICAgICAgICAgICAg
IHRoaXMuX3NlYXJjaFZpZXcuc2VhcmNoQ2FuY2VsZWQoKTsKIApAQCAtOTk3LDcgKzk5NCw3IEBA
IFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgaWYg
KCFzZWFyY2hNYXRjaGVzKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAg
V2ViSW5zcGVjdG9yLnVwZGF0ZVNlYXJjaE1hdGNoZXNDb3VudChzZWFyY2hNYXRjaGVzLCB0aGlz
KTsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5zZWFyY2hDb250cm9sbGVyLnVwZGF0ZVNlYXJj
aE1hdGNoZXNDb3VudChzZWFyY2hNYXRjaGVzLCB0aGlzKTsKICAgICAgICAgICAgIHZpZXcuanVt
cFRvRmlyc3RTZWFyY2hSZXN1bHQoKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NlYXJjaENvbnRyb2xsZXIuanMgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NlYXJjaENvbnRyb2xsZXIuanMKbmV3IGZpbGUg
bW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZDg5NDBiNAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2VhcmNoQ29udHJvbGxlci5qcwpAQCAt
MCwwICsxLDI3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCBBcHBs
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3IE1hdHQg
TGlsZWsgKHBld3Rlcm1vb3NlQGdtYWlsLmNvbSkuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgSm9z
ZXBoIFBlY29yYXJvCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9m
IEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAg
aXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCitXZWJJbnNwZWN0b3IuU2VhcmNoQ29udHJvbGxlciA9IGZ1bmN0aW9uKCkKK3sK
KyAgICB0aGlzLmVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2VhcmNoIik7Cisg
ICAgdGhpcy5fbWF0Y2hlc0VsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2VhcmNo
LXJlc3VsdHMtbWF0Y2hlcyIpOworICAgIHRoaXMuX3Rvb2xiYXJMYWJlbEVsZW1lbnQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgic2VhcmNoLXRvb2xiYXItbGFiZWwiKTsKKworICAgIHRoaXMu
ZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJzZWFyY2giLCB0aGlzLnBlcmZvcm1TZWFyY2guYmlu
ZCh0aGlzKSwgZmFsc2UpOyAvLyB3aGVuIHRoZSBzZWFyY2ggaXMgZW1wdGllZAorICAgIHRoaXMu
ZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLl9vblNlYXJjaEZpZWxk
TWFudWFsRm9jdXMuYmluZCh0aGlzKSwgZmFsc2UpOyAvLyB3aGVuIHRoZSBzZWFyY2ggZmllbGQg
aXMgbWFudWFsbHkgc2VsZWN0ZWQKKyAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigi
a2V5ZG93biIsIHRoaXMuX29uU2VhcmNoS2V5RG93bi5iaW5kKHRoaXMpLCB0cnVlKTsKKworICAg
IFdlYkluc3BlY3Rvci5wYW5lbE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3Iu
UGFuZWxNYW5hZ2VyLkV2ZW50cy5BY3RpdmVQYW5lbENoYW5nZWQsIHRoaXMuX29uQWN0aXZlUGFu
ZWxDaGFuZ2VkLmJpbmQodGhpcykpOworfQorCitXZWJJbnNwZWN0b3IuU2VhcmNoQ29udHJvbGxl
ci5wcm90b3R5cGUgPSB7CisgICAgaGFuZGxlU2hvcnRjdXQ6IGZ1bmN0aW9uKGV2ZW50KQorICAg
IHsKKyAgICAgICAgdmFyIGlzTWFjID0gV2ViSW5zcGVjdG9yLmlzTWFjKCk7CisKKyAgICAgICAg
c3dpdGNoIChldmVudC5rZXlJZGVudGlmaWVyKSB7CisgICAgICAgICAgICBjYXNlICJVKzAwNDYi
OiAvLyBGIGtleQorICAgICAgICAgICAgICAgIGlmIChpc01hYykKKyAgICAgICAgICAgICAgICAg
ICAgdmFyIGlzRmluZEtleSA9IGV2ZW50Lm1ldGFLZXkgJiYgIWV2ZW50LmN0cmxLZXkgJiYgIWV2
ZW50LmFsdEtleSAmJiAhZXZlbnQuc2hpZnRLZXk7CisgICAgICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgICAgICB2YXIgaXNGaW5kS2V5ID0gZXZlbnQuY3RybEtleSAmJiAhZXZlbnQu
bWV0YUtleSAmJiAhZXZlbnQuYWx0S2V5ICYmICFldmVudC5zaGlmdEtleTsKKworICAgICAgICAg
ICAgICAgIGlmIChpc0ZpbmRLZXkpIHsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5fZm9jdXNT
ZWFyY2hGaWVsZCgpOworICAgICAgICAgICAgICAgICAgICBldmVudC5oYW5kbGVkID0gdHJ1ZTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKworICAgICAgICAg
ICAgY2FzZSAiRjMiOgorICAgICAgICAgICAgICAgIGlmICghaXNNYWMpIHsKKyAgICAgICAgICAg
ICAgICAgICAgdGhpcy5fZm9jdXNTZWFyY2hGaWVsZCgpOworICAgICAgICAgICAgICAgICAgICBl
dmVudC5oYW5kbGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgIlUrMDA0NyI6IC8vIEcga2V5CisgICAgICAgICAg
ICAgICAgdmFyIGN1cnJlbnRQYW5lbCA9IFdlYkluc3BlY3Rvci5jdXJyZW50UGFuZWw7CisKKyAg
ICAgICAgICAgICAgICBpZiAoaXNNYWMgJiYgZXZlbnQubWV0YUtleSAmJiAhZXZlbnQuY3RybEtl
eSAmJiAhZXZlbnQuYWx0S2V5KSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChldmVudC5zaGlm
dEtleSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRQYW5lbC5qdW1wVG9Q
cmV2aW91c1NlYXJjaFJlc3VsdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50
UGFuZWwuanVtcFRvUHJldmlvdXNTZWFyY2hSZXN1bHQoKTsKKyAgICAgICAgICAgICAgICAgICAg
fSBlbHNlIGlmIChjdXJyZW50UGFuZWwuanVtcFRvTmV4dFNlYXJjaFJlc3VsdCkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGN1cnJlbnRQYW5lbC5qdW1wVG9OZXh0U2VhcmNoUmVzdWx0KCk7Cisg
ICAgICAgICAgICAgICAgICAgIGV2ZW50LmhhbmRsZWQgPSB0cnVlOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICBwZXJm
b3JtU2VhcmNoOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHZhciBmb3JjZVNlYXJj
aCA9IGV2ZW50LmtleUlkZW50aWZpZXIgPT09ICJFbnRlciI7CisgICAgICAgIHRoaXMuX3BlcmZv
cm1TZWFyY2goZXZlbnQudGFyZ2V0LnZhbHVlLCBmb3JjZVNlYXJjaCwgZXZlbnQuc2hpZnRLZXks
IGZhbHNlKTsKKyAgICB9LAorCisgICAgY2FuY2VsU2VhcmNoOiBmdW5jdGlvbigpCisgICAgewor
ICAgICAgICB0aGlzLl9zZWFyY2hGaWVsZEVsZW1lbnQudmFsdWUgPSAiIjsKKyAgICAgICAgdGhp
cy5fcGVyZm9ybVNlYXJjaCgiIik7CisgICAgfSwKKworICAgIHVwZGF0ZVNlYXJjaE1hdGNoZXND
b3VudDogZnVuY3Rpb24obWF0Y2hlcywgcGFuZWwpCisgICAgeworICAgICAgICBpZiAoIXBhbmVs
KQorICAgICAgICAgICAgcGFuZWwgPSBXZWJJbnNwZWN0b3IuY3VycmVudFBhbmVsOworCisgICAg
ICAgIHBhbmVsLmN1cnJlbnRTZWFyY2hNYXRjaGVzID0gbWF0Y2hlczsKKworICAgICAgICBpZiAo
cGFuZWwgIT09IFdlYkluc3BlY3Rvci5jdXJyZW50UGFuZWwpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgaWYgKCFXZWJJbnNwZWN0b3IuY3VycmVudFBhbmVsLmN1cnJlbnRRdWVyeSkK
KyAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVNlYXJjaE1hdGNoZXNDb3VudCgpOworICAgICAgICBl
bHNlCisgICAgICAgICAgICB0aGlzLl91cGRhdGVTZWFyY2hNYXRjaGVzQ291bnQobWF0Y2hlcyk7
CisgICAgfSwKKworICAgIF91cGRhdGVTZWFyY2hNYXRjaGVzQ291bnQ6IGZ1bmN0aW9uKG1hdGNo
ZXMpCisgICAgeworICAgICAgICBpZiAobWF0Y2hlcyA9PSBudWxsKSB7CisgICAgICAgICAgICB0
aGlzLl9tYXRjaGVzRWxlbWVudC5hZGRTdHlsZUNsYXNzKCJoaWRkZW4iKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtYXRjaGVzKSB7CisgICAgICAgICAg
ICBpZiAobWF0Y2hlcyA9PT0gMSkKKyAgICAgICAgICAgICAgICB2YXIgbWF0Y2hlc1N0cmluZyA9
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiMSBtYXRjaCIpOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIHZhciBtYXRjaGVzU3RyaW5nID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIl
ZCBtYXRjaGVzIiwgbWF0Y2hlcyk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgdmFyIG1h
dGNoZXNTdHJpbmcgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk5vdCBGb3VuZCIpOworCisgICAg
ICAgIHRoaXMuX21hdGNoZXNFbGVtZW50LnJlbW92ZVN0eWxlQ2xhc3MoImhpZGRlbiIpOworICAg
ICAgICB0aGlzLl9tYXRjaGVzRWxlbWVudC50ZXh0Q29udGVudCA9IG1hdGNoZXNTdHJpbmc7Cisg
ICAgICAgIFdlYkluc3BlY3Rvci50b29sYmFyLnJlc2l6ZSgpOworICAgIH0sCisKKyAgICBfZm9j
dXNTZWFyY2hGaWVsZDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5lbGVtZW50LmZv
Y3VzKCk7CisgICAgICAgIHRoaXMuZWxlbWVudC5zZWxlY3QoKTsKKyAgICB9LAorCisgICAgdXBk
YXRlU2VhcmNoTGFiZWw6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBwYW5lbE5hbWUg
PSBXZWJJbnNwZWN0b3IuY3VycmVudFBhbmVsICYmIFdlYkluc3BlY3Rvci5jdXJyZW50UGFuZWwu
dG9vbGJhckl0ZW1MYWJlbDsKKyAgICAgICAgaWYgKCFwYW5lbE5hbWUpCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIHZhciBuZXdMYWJlbCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2Vh
cmNoICVzIiwgcGFuZWxOYW1lKTsKKyAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5hdHRhY2hlZCkK
KyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoInBsYWNlaG9sZGVyIiwgbmV3
TGFiZWwpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5yZW1vdmVB
dHRyaWJ1dGUoInBsYWNlaG9sZGVyIik7CisgICAgICAgICAgICB0aGlzLl90b29sYmFyTGFiZWxF
bGVtZW50LnRleHRDb250ZW50ID0gbmV3TGFiZWw7CisgICAgICAgIH0KKyAgICB9LAorCisgICAg
X29uU2VhcmNoRmllbGRNYW51YWxGb2N1czogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAg
ICBXZWJJbnNwZWN0b3IuY3VycmVudEZvY3VzRWxlbWVudCA9IGV2ZW50LnRhcmdldDsKKyAgICB9
LAorCisgICAgX29uU2VhcmNoS2V5RG93bjogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAg
ICAvLyBFc2NhcGUgS2V5IHdpbGwgY2xlYXIgdGhlIGZpZWxkIGFuZCBjbGVhciB0aGUgc2VhcmNo
IHJlc3VsdHMKKyAgICAgICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IFdlYkluc3BlY3Rvci5LZXli
b2FyZFNob3J0Y3V0LktleXMuRXNjLmNvZGUpIHsKKyAgICAgICAgICAgIC8vIElmIGZvY3VzIGJl
bG9uZ3MgaGVyZSBhbmQgdGV4dCBpcyBlbXB0eSAtIG5vdGhpbmcgdG8gZG8sIHJldHVybiB1bmhh
bmRsZWQuCisgICAgICAgICAgICBpZiAoZXZlbnQudGFyZ2V0LnZhbHVlID09PSAiIiAmJiB0aGlz
LmN1cnJlbnRGb2N1c0VsZW1lbnQgPT09IHRoaXMucHJldmlvdXNGb2N1c0VsZW1lbnQpCisgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsK
KyAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOworICAgICAgICAgICAgLy8gV2hl
biBzZWFyY2ggd2FzIHNlbGVjdGVkIG1hbnVhbGx5IGFuZCBpcyBjdXJyZW50bHkgYmxhbmssIHdl
J2QgbGlrZSBFc2Mgc3RheSB1bmhhbmRsZWQKKyAgICAgICAgICAgIC8vIGFuZCBoaXQgY29uc29s
ZSBkcmF3ZXIgaGFuZGxlci4KKyAgICAgICAgICAgIGV2ZW50LnRhcmdldC52YWx1ZSA9ICIiOwor
CisgICAgICAgICAgICB0aGlzLnBlcmZvcm1TZWFyY2goZXZlbnQpOworICAgICAgICAgICAgV2Vi
SW5zcGVjdG9yLmN1cnJlbnRGb2N1c0VsZW1lbnQgPSBXZWJJbnNwZWN0b3IucHJldmlvdXNGb2N1
c0VsZW1lbnQ7CisgICAgICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLmN1cnJlbnRGb2N1c0VsZW1l
bnQgPT09IGV2ZW50LnRhcmdldCkKKyAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuY3VycmVu
dEZvY3VzRWxlbWVudC5jdXJyZW50Rm9jdXNFbGVtZW50LnNlbGVjdCgpOworICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFpc0VudGVyS2V5KGV2ZW50
KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAvLyBTZWxlY3QgYWxsIG9m
IHRoZSB0ZXh0IHNvIHRoZSB1c2VyIGNhbiBlYXNpbHkgdHlwZSBhbiBlbnRpcmVseSBuZXcgcXVl
cnkuCisgICAgICAgIGV2ZW50LnRhcmdldC5zZWxlY3QoKTsKKworICAgICAgICAvLyBPbmx5IGNh
bGwgcGVyZm9ybVNlYXJjaCBpZiB0aGUgRW50ZXIga2V5IHdhcyBwcmVzc2VkLiBPdGhlcndpc2Ug
dGhlIHNlYXJjaAorICAgICAgICAvLyBwZXJmb3JtYW5jZSBpcyBwb29yIGJlY2F1c2Ugb2Ygc2Vh
cmNoaW5nIG9uIGV2ZXJ5IGtleS4gVGhlIHNlYXJjaCBmaWVsZCBoYXMKKyAgICAgICAgLy8gdGhl
IGluY3JlbWVudGFsIGF0dHJpYnV0ZSBzZXQsIHNvIHdlIHN0aWxsIGdldCBpbmNyZW1lbnRhbCBz
ZWFyY2hlcy4KKyAgICAgICAgdGhpcy5wZXJmb3JtU2VhcmNoKGV2ZW50KTsKKworICAgICAgICAv
LyBDYWxsIHByZXZlbnREZWZhdWx0IHNpbmNlIHRoaXMgd2FzIHRoZSBFbnRlciBrZXkuIFRoaXMg
cHJldmVudHMgYSAic2VhcmNoIiBldmVudAorICAgICAgICAvLyBmcm9tIGZpcmluZyBmb3Iga2V5
IGRvd24uIFRoaXMgc3RvcHMgcGVyZm9ybVNlYXJjaCBmcm9tIGJlaW5nIGNhbGxlZCB0d2ljZSBp
biBhIHJvdy4KKyAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAgICB9LAorCisgICAg
X3BlcmZvcm1TZWFyY2g6IGZ1bmN0aW9uKHF1ZXJ5LCBmb3JjZVNlYXJjaCwgaXNCYWNrd2FyZFNl
YXJjaCwgcmVwZWF0U2VhcmNoKQorICAgIHsKKyAgICAgICAgdmFyIGlzU2hvcnRTZWFyY2ggPSAo
cXVlcnkubGVuZ3RoIDwgMyk7CisKKyAgICAgICAgLy8gQ2xlYXIgYSBsZWZ0b3ZlciBzaG9ydCBz
ZWFyY2ggZmxhZyBkdWUgdG8gYSBub24tY29uZmxpY3RpbmcgZm9yY2VkIHNlYXJjaC4KKyAgICAg
ICAgaWYgKGlzU2hvcnRTZWFyY2ggJiYgdGhpcy5fc2hvcnRTZWFyY2hXYXNGb3JjZWRCeUtleUV2
ZW50ICYmIHRoaXMuY3VycmVudFF1ZXJ5ICE9PSBxdWVyeSkKKyAgICAgICAgICAgIGRlbGV0ZSB0
aGlzLl9zaG9ydFNlYXJjaFdhc0ZvcmNlZEJ5S2V5RXZlbnQ7CisKKyAgICAgICAgLy8gSW5kaWNh
dGUgdGhpcyB3YXMgYSBmb3JjZWQgc2VhcmNoIG9uIGEgc2hvcnQgcXVlcnkuCisgICAgICAgIGlm
IChpc1Nob3J0U2VhcmNoICYmIGZvcmNlU2VhcmNoKQorICAgICAgICAgICAgdGhpcy5fc2hvcnRT
ZWFyY2hXYXNGb3JjZWRCeUtleUV2ZW50ID0gdHJ1ZTsKKworICAgICAgICBpZiAoIXF1ZXJ5IHx8
ICFxdWVyeS5sZW5ndGggfHwgKCFmb3JjZVNlYXJjaCAmJiBpc1Nob3J0U2VhcmNoKSkgeworICAg
ICAgICAgICAgLy8gUHJldmVudCBjbG9iYmVyaW5nIGEgc2hvcnQgc2VhcmNoIGZvcmNlZCBieSB0
aGUgdXNlci4KKyAgICAgICAgICAgIGlmICh0aGlzLl9zaG9ydFNlYXJjaFdhc0ZvcmNlZEJ5S2V5
RXZlbnQpIHsKKyAgICAgICAgICAgICAgICBkZWxldGUgdGhpcy5fc2hvcnRTZWFyY2hXYXNGb3Jj
ZWRCeUtleUV2ZW50OworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgZGVsZXRlIHRoaXMuY3VycmVudFF1ZXJ5OworCisgICAgICAgICAgICBmb3Ig
KHZhciBwYW5lbE5hbWUgaW4gdGhpcy5wYW5lbHMpIHsKKyAgICAgICAgICAgICAgICB2YXIgcGFu
ZWwgPSB0aGlzLnBhbmVsc1twYW5lbE5hbWVdOworICAgICAgICAgICAgICAgIHZhciBoYWRDdXJy
ZW50UXVlcnkgPSAhIXBhbmVsLmN1cnJlbnRRdWVyeTsKKyAgICAgICAgICAgICAgICBkZWxldGUg
cGFuZWwuY3VycmVudFF1ZXJ5OworICAgICAgICAgICAgICAgIGlmIChoYWRDdXJyZW50UXVlcnkg
JiYgcGFuZWwuc2VhcmNoQ2FuY2VsZWQpCisgICAgICAgICAgICAgICAgICAgIHBhbmVsLnNlYXJj
aENhbmNlbGVkKCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHRoaXMudXBkYXRlU2Vh
cmNoTWF0Y2hlc0NvdW50KCk7CisKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisg
ICAgICAgIHZhciBjdXJyZW50UGFuZWwgPSBXZWJJbnNwZWN0b3IuY3VycmVudFBhbmVsOworICAg
ICAgICBpZiAoIXJlcGVhdFNlYXJjaCAmJiBxdWVyeSA9PT0gY3VycmVudFBhbmVsLmN1cnJlbnRR
dWVyeSAmJiBjdXJyZW50UGFuZWwuY3VycmVudFF1ZXJ5ID09PSB0aGlzLmN1cnJlbnRRdWVyeSkg
eworICAgICAgICAgICAgLy8gV2hlbiB0aGlzIGlzIHRoZSBzYW1lIHF1ZXJ5IGFuZCBhIGZvcmNl
ZCBzZWFyY2gsIGp1bXAgdG8gdGhlIG5leHQKKyAgICAgICAgICAgIC8vIHNlYXJjaCByZXN1bHQg
Zm9yIGEgZ29vZCB1c2VyIGV4cGVyaWVuY2UuCisgICAgICAgICAgICBpZiAoZm9yY2VTZWFyY2gp
IHsKKyAgICAgICAgICAgICAgICBpZiAoIWlzQmFja3dhcmRTZWFyY2ggJiYgY3VycmVudFBhbmVs
Lmp1bXBUb05leHRTZWFyY2hSZXN1bHQpCisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRQYW5l
bC5qdW1wVG9OZXh0U2VhcmNoUmVzdWx0KCk7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoaXNC
YWNrd2FyZFNlYXJjaCAmJiBjdXJyZW50UGFuZWwuanVtcFRvUHJldmlvdXNTZWFyY2hSZXN1bHQp
CisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRQYW5lbC5qdW1wVG9QcmV2aW91c1NlYXJjaFJl
c3VsdCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisK
KyAgICAgICAgdGhpcy5jdXJyZW50UXVlcnkgPSBxdWVyeTsKKworICAgICAgICB0aGlzLnVwZGF0
ZVNlYXJjaE1hdGNoZXNDb3VudCgpOworCisgICAgICAgIGlmICghY3VycmVudFBhbmVsLnBlcmZv
cm1TZWFyY2gpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgY3VycmVudFBhbmVsLmN1
cnJlbnRRdWVyeSA9IHF1ZXJ5OworICAgICAgICBjdXJyZW50UGFuZWwucGVyZm9ybVNlYXJjaChx
dWVyeSk7CisgICAgfSwKKworICAgIF9vbkFjdGl2ZVBhbmVsQ2hhbmdlZDogZnVuY3Rpb24oKQor
ICAgIHsKKyAgICAgICAgdGhpcy51cGRhdGVTZWFyY2hMYWJlbCgpOworCisgICAgICAgIGlmICgh
dGhpcy5jdXJyZW50UXVlcnkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAKKyAgICAg
ICAgcGFuZWwgPSBXZWJJbnNwZWN0b3IuY3VycmVudFBhbmVsOworICAgICAgICBpZiAocGFuZWwu
cGVyZm9ybVNlYXJjaCkgeworICAgICAgICAgICAgZnVuY3Rpb24gcGVyZm9ybVBhbmVsU2VhcmNo
KCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVNlYXJjaE1hdGNo
ZXNDb3VudCgpOworCisgICAgICAgICAgICAgICAgcGFuZWwuY3VycmVudFF1ZXJ5ID0gdGhpcy5j
dXJyZW50UXVlcnk7CisgICAgICAgICAgICAgICAgcGFuZWwucGVyZm9ybVNlYXJjaCh0aGlzLmN1
cnJlbnRRdWVyeSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFBlcmZvcm0gdGhl
IHNlYXJjaCBvbiBhIHRpbWVvdXQgc28gdGhlIHBhbmVsIHN3aXRjaGVzIGZhc3QuCisgICAgICAg
ICAgICBzZXRUaW1lb3V0KHBlcmZvcm1QYW5lbFNlYXJjaC5iaW5kKHRoaXMpLCAwKTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIFVwZGF0ZSB0byBzaG93IE5vdCBmb3VuZCBmb3Ig
cGFuZWxzIHRoYXQgY2FuJ3QgYmUgc2VhcmNoZWQuCisgICAgICAgICAgICB0aGlzLl91cGRhdGVT
ZWFyY2hNYXRjaGVzQ291bnQoKTsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVG9vbGJhci5qcyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVG9vbGJhci5qcwpuZXcgZmlsZSBtb2RlIDEwMDc1NQpp
bmRleCAwMDAwMDAwLi45Yzk2NGJiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9Ub29sYmFyLmpzCkBAIC0wLDAgKzEsMjMzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgTWF0dCBMaWxlayAocGV3dGVybW9vc2VAZ21h
aWwuY29tKS4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBKb3NlcGggUGVjb3Jhcm8KKyAqIENvcHly
aWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4g
KCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJv
bSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dlYkluc3BlY3Rv
ci5Ub29sYmFyID0gZnVuY3Rpb24oKQoreworICAgIHRoaXMuZWxlbWVudCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJ0b29sYmFyIik7CisgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVu
ZXIoIm1vdXNlZG93biIsIHRoaXMuX3Rvb2xiYXJEcmFnU3RhcnQsIHRydWUpOworCisgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRvb2xiYXItZHJvcGRvd24tYXJyb3ciKS5hZGRFdmVudExp
c3RlbmVyKCJjbGljayIsIFdlYkluc3BlY3Rvci5Ub29sYmFyRHJvcGRvd24uX3RvZ2dsZSwgZmFs
c2UpOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjbG9zZS1idXR0b24tbGVmdCIpLmFk
ZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fb25DbG9zZSwgdHJ1ZSk7CisgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImNsb3NlLWJ1dHRvbi1yaWdodCIpLmFkZEV2ZW50TGlzdGVuZXIo
ImNsaWNrIiwgdGhpcy5fb25DbG9zZSwgdHJ1ZSk7CisKKyAgICBXZWJJbnNwZWN0b3IucGFuZWxN
YW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlBhbmVsTWFuYWdlci5FdmVudHMu
QWN0aXZlUGFuZWxDaGFuZ2VkLCB0aGlzLl9vbkFjdGl2ZVBhbmVsQ2hhbmdlZC5iaW5kKHRoaXMp
KTsKK30KKworV2ViSW5zcGVjdG9yLlRvb2xiYXIucHJvdG90eXBlID0geworICAgIHJlc2l6ZTog
ZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgV2ViSW5zcGVjdG9yLlRvb2xiYXJEcm9wZG93bi5f
dXBkYXRlQnV0dG9uQW5kUmVtb3ZlRHJvcGRvd24oKTsKKyAgICB9LAorCisgICAgYWRkUGFuZWw6
IGZ1bmN0aW9uKHBhbmVsKQorICAgIHsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxk
KFdlYkluc3BlY3Rvci5Ub29sYmFyLmNyZWF0ZVBhbmVsVG9vbGJhckl0ZW0ocGFuZWwpKTsKKyAg
ICAgICAgdGhpcy5yZXNpemUoKTsKKyAgICB9LAorCisgICAgX3Rvb2xiYXJEcmFnU3RhcnQ6IGZ1
bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKCghV2ViSW5zcGVjdG9yLmF0dGFjaGVk
ICYmIFdlYkluc3BlY3Rvci5wbGF0Zm9ybUZsYXZvciAhPT0gV2ViSW5zcGVjdG9yLlBsYXRmb3Jt
Rmxhdm9yLk1hY0xlb3BhcmQgJiYgV2ViSW5zcGVjdG9yLnBsYXRmb3JtRmxhdm9yICE9PSBXZWJJ
bnNwZWN0b3IuUGxhdGZvcm1GbGF2b3IuTWFjU25vd0xlb3BhcmQpIHx8IFdlYkluc3BlY3Rvci5w
b3J0ID09ICJxdCIpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdmFyIHRhcmdldCA9
IGV2ZW50LnRhcmdldDsKKyAgICAgICAgaWYgKHRhcmdldC5oYXNTdHlsZUNsYXNzKCJ0b29sYmFy
LWl0ZW0iKSAmJiB0YXJnZXQuaGFzU3R5bGVDbGFzcygidG9nZ2xlYWJsZSIpKQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIHZhciB0b29sYmFyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInRvb2xiYXIiKTsKKyAgICAgICAgaWYgKHRhcmdldCAhPT0gdG9vbGJhciAmJiAhdGFyZ2V0
Lmhhc1N0eWxlQ2xhc3MoInRvb2xiYXItaXRlbSIpKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIHRvb2xiYXIubGFzdFNjcmVlblggPSBldmVudC5zY3JlZW5YOworICAgICAgICB0b29s
YmFyLmxhc3RTY3JlZW5ZID0gZXZlbnQuc2NyZWVuWTsKKworICAgICAgICBXZWJJbnNwZWN0b3Iu
ZWxlbWVudERyYWdTdGFydCh0b29sYmFyLCB0aGlzLl90b29sYmFyRHJhZy5iaW5kKHRoaXMpLCB0
aGlzLl90b29sYmFyRHJhZ0VuZC5iaW5kKHRoaXMpLCBldmVudCwgKFdlYkluc3BlY3Rvci5hdHRh
Y2hlZCA/ICJyb3ctcmVzaXplIiA6ICJkZWZhdWx0IikpOworICAgIH0sCisKKyAgICBfdG9vbGJh
ckRyYWdFbmQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgV2ViSW5zcGVjdG9yLmVs
ZW1lbnREcmFnRW5kKGV2ZW50KTsKKworICAgICAgICBkZWxldGUgdGhpcy5lbGVtZW50Lmxhc3RT
Y3JlZW5YOworICAgICAgICBkZWxldGUgdGhpcy5lbGVtZW50Lmxhc3RTY3JlZW5ZOworICAgIH0s
CisKKyAgICBfdG9vbGJhckRyYWc6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYg
KFdlYkluc3BlY3Rvci5hdHRhY2hlZCkgeworICAgICAgICAgICAgdmFyIGhlaWdodCA9IHdpbmRv
dy5pbm5lckhlaWdodCAtIChldmVudC5zY3JlZW5ZIC0gdG9vbGJhci5sYXN0U2NyZWVuWSk7CisK
KyAgICAgICAgICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC5zZXRBdHRhY2hlZFdpbmRvd0hlaWdo
dChoZWlnaHQpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdmFyIHggPSBldmVudC5z
Y3JlZW5YIC0gdG9vbGJhci5sYXN0U2NyZWVuWDsKKyAgICAgICAgICAgIHZhciB5ID0gZXZlbnQu
c2NyZWVuWSAtIHRvb2xiYXIubGFzdFNjcmVlblk7CisKKyAgICAgICAgICAgIC8vIFdlIGNhbm5v
dCBjYWxsIHdpbmRvdy5tb3ZlQnkgaGVyZSBiZWNhdXNlIGl0IHJlc3RyaWN0cyB0aGUgbW92ZW1l
bnQKKyAgICAgICAgICAgIC8vIG9mIHRoZSB3aW5kb3cgYXQgdGhlIGVkZ2VzLgorICAgICAgICAg
ICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0Lm1vdmVXaW5kb3dCeSh4LCB5KTsKKyAgICAgICAgfQor
CisgICAgICAgIHRoaXMuZWxlbWVudC5sYXN0U2NyZWVuWCA9IGV2ZW50LnNjcmVlblg7CisgICAg
ICAgIHRoaXMuZWxlbWVudC5sYXN0U2NyZWVuWSA9IGV2ZW50LnNjcmVlblk7CisKKyAgICAgICAg
ZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAgICB9LAorCisgICAgX29uQ2xvc2U6IGZ1bmN0aW9u
KCkKKyAgICB7CisgICAgICAgIFdlYkluc3BlY3Rvci5jbG9zZSgpOworICAgIH0sCisKKyAgICBf
b25BY3RpdmVQYW5lbENoYW5nZWQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBwYW5l
bEl0ZW1zID0gdGhpcy5lbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi50b29sYmFyLWl0ZW0udG9n
Z2xlYWJsZSIpOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBhbmVsSXRlbXMgLmxlbmd0
aDsgKytpKSB7CisgICAgICAgICAgICBpZiAocGFuZWxJdGVtc1tpXS5wYW5lbCA9PT0gV2ViSW5z
cGVjdG9yLmN1cnJlbnRQYW5lbCkKKyAgICAgICAgICAgICAgICBwYW5lbEl0ZW1zW2ldLmFkZFN0
eWxlQ2xhc3MoInRvZ2dsZWQtb24iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICBwYW5lbEl0ZW1zW2ldLnJlbW92ZVN0eWxlQ2xhc3MoInRvZ2dsZWQtb24iKTsKKyAgICAgICAg
fQorICAgIH0KK307CisKK1dlYkluc3BlY3Rvci5Ub29sYmFyLmNyZWF0ZVBhbmVsVG9vbGJhckl0
ZW0gPSBmdW5jdGlvbihwYW5lbCkKK3sKKyAgICB2YXIgdG9vbGJhckl0ZW0gPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJidXR0b24iKTsKKyAgICB0b29sYmFySXRlbS5jbGFzc05hbWUgPSAidG9v
bGJhci1pdGVtIHRvZ2dsZWFibGUiOworICAgIHRvb2xiYXJJdGVtLnBhbmVsID0gcGFuZWw7Cisg
ICAgdG9vbGJhckl0ZW0uYWRkU3R5bGVDbGFzcyhwYW5lbC5fcGFuZWxOYW1lKTsKKyAgICBmdW5j
dGlvbiBvblRvb2xiYXJJdGVtQ2xpY2tlZCgpCisgICAgeworICAgICAgICBXZWJJbnNwZWN0b3Iu
VG9vbGJhckRyb3Bkb3duLl91cGRhdGVCdXR0b25BbmRSZW1vdmVEcm9wZG93bigpOworICAgICAg
ICBXZWJJbnNwZWN0b3IucGFuZWxNYW5hZ2VyLmFjdGl2YXRlUGFuZWwocGFuZWwpOworICAgIH0K
KyAgICB0b29sYmFySXRlbS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIG9uVG9vbGJhckl0ZW1D
bGlja2VkKTsKKworICAgIHZhciBpY29uRWxlbWVudCA9IHRvb2xiYXJJdGVtLmNyZWF0ZUNoaWxk
KCJkaXYiLCAidG9vbGJhci1pY29uIik7CisKKyAgICBpZiAoInRvb2xiYXJJdGVtTGFiZWwiIGlu
IHBhbmVsKQorICAgICAgICB0b29sYmFySXRlbS5jcmVhdGVDaGlsZCgiZGl2IiwgInRvb2xiYXIt
bGFiZWwiKS50ZXh0Q29udGVudCA9IHBhbmVsLnRvb2xiYXJJdGVtTGFiZWw7CisKKyAgICBpZiAo
cGFuZWwgPT09IFdlYkluc3BlY3Rvci5jdXJyZW50UGFuZWwpCisgICAgICAgIHRvb2xiYXJJdGVt
LmFkZFN0eWxlQ2xhc3MoInRvZ2dsZWQtb24iKTsKKworICAgIHJldHVybiB0b29sYmFySXRlbTsK
K30KKworV2ViSW5zcGVjdG9yLlRvb2xiYXJEcm9wZG93biA9IGZ1bmN0aW9uKCkKK3sKKyAgICB0
aGlzLl90b29sYmFyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRvb2xiYXIiKTsKKyAgICB0
aGlzLl9hcnJvdyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0b29sYmFyLWRyb3Bkb3duLWFy
cm93Iik7CisgICAgdGhpcy5lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7
CisgICAgdGhpcy5lbGVtZW50LmlkID0gInRvb2xiYXItZHJvcGRvd24iOworICAgIHRoaXMuX2Nv
bnRlbnRFbGVtZW50ID0gdGhpcy5lbGVtZW50LmNyZWF0ZUNoaWxkKCJkaXYiLCAic2Nyb2xsYWJs
ZS1jb250ZW50Iik7CisgICAgdGhpcy5fY29udGVudEVsZW1lbnQudGFiSW5kZXggPSAwOworICAg
IHRoaXMuX2NvbnRlbnRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCB0aGlzLl9v
bktleURvd24uYmluZCh0aGlzKSwgdHJ1ZSk7Cit9CisKK1dlYkluc3BlY3Rvci5Ub29sYmFyRHJv
cGRvd24ucHJvdG90eXBlID0geworICAgIHNob3c6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAg
IGlmICh0aGlzLnZpc2libGUpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHZhciBzdHls
ZSA9IHRoaXMuZWxlbWVudC5zdHlsZTsKKyAgICAgICAgdGhpcy5fcG9wdWxhdGUoKTsKKyAgICAg
ICAgdmFyIHRvcCA9IHRoaXMuX2Fycm93LnRvdGFsT2Zmc2V0VG9wICsgdGhpcy5fYXJyb3cuY2xp
ZW50SGVpZ2h0OworICAgICAgICB0aGlzLl9hcnJvdy5hZGRTdHlsZUNsYXNzKCJkcm9wZG93bi12
aXNpYmxlIik7CisgICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS50b3AgPSB0b3AgKyAicHgiOwor
ICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUubGVmdCA9IHRoaXMuX2Fycm93LnRvdGFsT2Zmc2V0
TGVmdCArICJweCI7CisgICAgICAgIHRoaXMuX2NvbnRlbnRFbGVtZW50LnN0eWxlLm1heEhlaWdo
dCA9IHdpbmRvdy5pbm5lckhlaWdodCAtIHRvcCAtIDIwICsgInB4IjsKKyAgICAgICAgdGhpcy5f
dG9vbGJhci5hcHBlbmRDaGlsZCh0aGlzLmVsZW1lbnQpOworICAgICAgICBXZWJJbnNwZWN0b3Iu
Y3VycmVudEZvY3VzRWxlbWVudCA9IHRoaXMuY29udGVudEVsZW1lbnQ7CisgICAgfSwKKworICAg
IGhpZGU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy52aXNpYmxlKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB0aGlzLl9hcnJvdy5yZW1vdmVTdHlsZUNsYXNzKCJk
cm9wZG93bi12aXNpYmxlIik7CisgICAgICAgIHRoaXMuZWxlbWVudC5wYXJlbnROb2RlLnJlbW92
ZUNoaWxkKHRoaXMuZWxlbWVudCk7CisgICAgICAgIHRoaXMuX2NvbnRlbnRFbGVtZW50LnJlbW92
ZUNoaWxkcmVuKCk7CisgICAgfSwKKworICAgIGdldCB2aXNpYmxlKCkKKyAgICB7CisgICAgICAg
IHJldHVybiAhIXRoaXMuZWxlbWVudC5wYXJlbnROb2RlOworICAgIH0sCisKKyAgICBfcG9wdWxh
dGU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciB0b29sYmFySXRlbXMgPSB0aGlzLl90
b29sYmFyLnF1ZXJ5U2VsZWN0b3JBbGwoIi50b29sYmFyLWl0ZW0udG9nZ2xlYWJsZSIpOworCisg
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdG9vbGJhckl0ZW1zLmxlbmd0aDsgKytpKSB7Cisg
ICAgICAgICAgICBpZiAodG9vbGJhckl0ZW1zW2ldLm9mZnNldFRvcCA+IDApCisgICAgICAgICAg
ICAgICAgdGhpcy5fY29udGVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoV2ViSW5zcGVjdG9yLlRvb2xi
YXIuY3JlYXRlUGFuZWxUb29sYmFySXRlbSh0b29sYmFySXRlbXNbaV0ucGFuZWwpKTsKKyAgICAg
ICAgfQorICAgIH0sCisKKyAgICBfb25LZXlEb3duOiBmdW5jdGlvbihldmVudCkKKyAgICB7Cisg
ICAgICAgIGlmIChldmVudC5rZXlDb2RlICE9PSBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1
dC5LZXlzLkVzYy5jb2RlKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBldmVudC5zdG9w
UHJvcGFnYXRpb24oKTsKKyAgICAgICAgdGhpcy5oaWRlKCk7CisgICAgfQorfTsKKworV2ViSW5z
cGVjdG9yLlRvb2xiYXJEcm9wZG93bi5fc2V0VmlzaWJsZSA9IGZ1bmN0aW9uKHZpc2libGUpCit7
CisgICAgaWYgKCFXZWJJbnNwZWN0b3IuVG9vbGJhckRyb3Bkb3duLl9pbnN0YW5jZSkgeworICAg
ICAgICBpZiAoIXZpc2libGUpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIFdlYkluc3Bl
Y3Rvci5Ub29sYmFyRHJvcGRvd24uX2luc3RhbmNlID0gbmV3IFdlYkluc3BlY3Rvci5Ub29sYmFy
RHJvcGRvd24oKTsKKyAgICB9CisgICAgaWYgKHZpc2libGUpCisgICAgICAgIFdlYkluc3BlY3Rv
ci5Ub29sYmFyRHJvcGRvd24uX2luc3RhbmNlLnNob3coKTsKKyAgICBlbHNlCisgICAgICAgIFdl
Ykluc3BlY3Rvci5Ub29sYmFyRHJvcGRvd24uX2luc3RhbmNlLmhpZGUoKTsKK30KKworV2ViSW5z
cGVjdG9yLlRvb2xiYXJEcm9wZG93bi5fdG9nZ2xlID0gZnVuY3Rpb24oKQoreworICAgIFdlYklu
c3BlY3Rvci5Ub29sYmFyRHJvcGRvd24uX3NldFZpc2libGUoIVdlYkluc3BlY3Rvci5Ub29sYmFy
RHJvcGRvd24uX2luc3RhbmNlIHx8ICFXZWJJbnNwZWN0b3IuVG9vbGJhckRyb3Bkb3duLl9pbnN0
YW5jZS52aXNpYmxlKTsKK30KKworV2ViSW5zcGVjdG9yLlRvb2xiYXJEcm9wZG93bi5fdXBkYXRl
QnV0dG9uQW5kUmVtb3ZlRHJvcGRvd24gPSBmdW5jdGlvbigpCit7CisgICAgV2ViSW5zcGVjdG9y
LlRvb2xiYXJEcm9wZG93bi5fc2V0VmlzaWJsZShmYWxzZSk7CisKKyAgICB2YXIgYnV0dG9uID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRvb2xiYXItZHJvcGRvd24tYXJyb3ciKTsKKyAgICB2
YXIgdG9vbGJhciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0b29sYmFyIik7CisgICAgaWYg
KHRvb2xiYXIuc2Nyb2xsSGVpZ2h0ID4gdG9vbGJhci5jbGllbnRIZWlnaHQpCisgICAgICAgIGJ1
dHRvbi5yZW1vdmVTdHlsZUNsYXNzKCJoaWRkZW4iKTsKKyAgICBlbHNlCisgICAgICAgIGJ1dHRv
bi5hZGRTdHlsZUNsYXNzKCJoaWRkZW4iKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvV2ViS2l0LnFyYwppbmRleCBiYmRmZjljLi5iYzY0YTU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCkBAIC02Myw2ICs2Myw3
IEBACiAgICAgPGZpbGU+T2JqZWN0LmpzPC9maWxlPgogICAgIDxmaWxlPk9iamVjdFByb3BlcnRp
ZXNTZWN0aW9uLmpzPC9maWxlPgogICAgIDxmaWxlPlBhbmVsLmpzPC9maWxlPgorICAgIDxmaWxl
PlBhbmVsTWFuYWdlci5qczwvZmlsZT4KICAgICA8ZmlsZT5QYW5lbEVuYWJsZXJWaWV3LmpzPC9m
aWxlPgogICAgIDxmaWxlPlBsYWNhcmQuanM8L2ZpbGU+CiAgICAgPGZpbGU+UGxlYXNlV2FpdE1l
c3NhZ2UuanM8L2ZpbGU+CkBAIC04Nyw2ICs4OCw3IEBACiAgICAgPGZpbGU+U2NyaXB0Rm9ybWF0
dGVyV29ya2VyLmpzPC9maWxlPgogICAgIDxmaWxlPlNjcmlwdHNQYW5lbC5qczwvZmlsZT4KICAg
ICA8ZmlsZT5TZWN0aW9uLmpzPC9maWxlPgorICAgIDxmaWxlPlNlYXJjaENvbnRyb2xsZXIuanM8
L2ZpbGU+CiAgICAgPGZpbGU+U2V0dGluZ3MuanM8L2ZpbGU+CiAgICAgPGZpbGU+U2hvcnRjdXRz
SGVscC5qczwvZmlsZT4KICAgICA8ZmlsZT5TaG93TW9yZURhdGFHcmlkTm9kZS5qczwvZmlsZT4K
QEAgLTExMSw2ICsxMTMsNyBAQAogICAgIDxmaWxlPlRpbWVsaW5lR3JpZC5qczwvZmlsZT4KICAg
ICA8ZmlsZT5UaW1lbGluZU92ZXJ2aWV3UGFuZS5qczwvZmlsZT4KICAgICA8ZmlsZT5UaW1lbGlu
ZVBhbmVsLmpzPC9maWxlPgorICAgIDxmaWxlPlRvb2xiYXIuanM8L2ZpbGU+CiAgICAgPGZpbGU+
VG9wRG93blByb2ZpbGVEYXRhR3JpZFRyZWUuanM8L2ZpbGU+CiAgICAgPGZpbGU+dHJlZW91dGxp
bmUuanM8L2ZpbGU+CiAgICAgPGZpbGU+dXRpbGl0aWVzLmpzPC9maWxlPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzCmluZGV4IGM5OTI4MDYu
LmE3YmQzYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
aW5zcGVjdG9yLmNzcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2lu
c3BlY3Rvci5jc3MKQEAgLTc2LDcgKzc2LDYgQEAgaW1nIHsKICAgICBsZWZ0OiAwOwogICAgIHJp
Z2h0OiAwOwogICAgIGhlaWdodDogNTZweDsKLSAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAg
ICBwYWRkaW5nOiAwIDVweDsKICAgICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWdyYWRpZW50
KGxpbmVhciwgbGVmdCB0b3AsIGxlZnQgYm90dG9tLCBmcm9tKHJnYigxOTEsIDE5MSwgMTkxKSks
IHRvKHJnYigxNTEsIDE1MSwgMTUxKSkpOwogICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBy
Z2IoODAsIDgwLCA4MCk7CkBAIC0xMTEsMzIgKzExMCwyMyBAQCBib2R5LmF0dGFjaGVkLmluYWN0
aXZlICN0b29sYmFyIHsKIH0KIAogLnRvb2xiYXItaXRlbSB7Ci0gICAgZGlzcGxheTogLXdlYmtp
dC1ib3g7Ci0gICAgcGFkZGluZzogNHB4IDZweDsKICAgICBtYXJnaW46IDA7CisgICAgcGFkZGlu
ZzogMCA2cHg7CiAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICAgYm9yZGVy
LXN0eWxlOiBub25lOwogICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7Ci0gICAgLXdlYmtp
dC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDsKLSAgICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyOwot
ICAgIC13ZWJraXQtYm94LXBhY2s6IGVuZDsKK30KKworLnRvb2xiYXItaXRlbS50b2dnbGVhYmxl
IHsKKyAgICBwYWRkaW5nLXRvcDogNHB4OwogfQogCiAudG9vbGJhci1pdGVtLnRvZ2dsZWFibGUu
dG9nZ2xlZC1vbiB7CiAgICAgYm9yZGVyLXdpZHRoOiAwIDJweCAwIDJweDsKLSAgICBwYWRkaW5n
OiA0cHggNHB4OworICAgIHBhZGRpbmc6IDRweCA0cHggMCA0cHg7CiAgICAgLXdlYmtpdC1ib3Jk
ZXItaW1hZ2U6IHVybChJbWFnZXMvdG9vbGJhckl0ZW1TZWxlY3RlZC5wbmcpIDAgMiAwIDI7CiB9
CiAKLS50b29sYmFyLWl0ZW0uZmxleGFibGUtc3BhY2UgewotICAgIC13ZWJraXQtYm94LWZsZXg6
IDE7Ci0gICAgdmlzaWJpbGl0eTogaGlkZGVuOwotfQotCi0udG9vbGJhci1pdGVtIGlucHV0IHsK
LSAgICBtYXJnaW4tYm90dG9tOiA4cHg7Ci19Ci0KIC50b29sYmFyLWljb24gewogICAgIGRpc3Bs
YXk6IGlubGluZS1ibG9jazsKICAgICB3aWR0aDogMzJweDsKQEAgLTE0NCw3ICsxMzQsOCBAQCBi
b2R5LmF0dGFjaGVkLmluYWN0aXZlICN0b29sYmFyIHsKICAgICAtd2Via2l0LWJhY2tncm91bmQt
c2l6ZTogMTAwJSBhdXRvOwogfQogCi1ib2R5LmF0dGFjaGVkIC50b29sYmFyLWljb24geworYm9k
eS5hdHRhY2hlZCAudG9vbGJhci1pY29uLAorI3Rvb2xiYXItZHJvcGRvd24gLnRvb2xiYXItaWNv
biB7CiAgICAgd2lkdGg6IDI0cHg7CiAgICAgaGVpZ2h0OiAyNHB4OwogICAgIHZlcnRpY2FsLWFs
aWduOiBtaWRkbGU7CkBAIC0xNjgsOSArMTU5LDkgQEAgYm9keS5hdHRhY2hlZCAudG9vbGJhci1p
dGVtOmFjdGl2ZSAudG9vbGJhci1pY29uIHsKICAgICB0ZXh0LXNoYWRvdzogbm9uZTsKIH0KIAot
Ym9keS5hdHRhY2hlZCAudG9vbGJhci1sYWJlbCB7Citib2R5LmF0dGFjaGVkIC50b29sYmFyLWxh
YmVsLAorI3Rvb2xiYXItZHJvcGRvd24gLnRvb2xiYXItbGFiZWwgewogICAgIGRpc3BsYXk6IGlu
bGluZS1ibG9jazsKLSAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogICAgIG1hcmdpbi1sZWZ0
OiAzcHg7CiB9CiAKQEAgLTE3OCwyNSArMTY5LDE0NSBAQCBib2R5LmF0dGFjaGVkICNzZWFyY2gt
dG9vbGJhci1sYWJlbCB7CiAgICAgZGlzcGxheTogbm9uZTsKIH0KIAorI3Rvb2xiYXItY29udHJv
bHMgeworICAgIGZsb2F0OiByaWdodDsKKyAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKKyAgICAt
d2Via2l0LWJveC1hbGlnbjogY2VudGVyOworICAgIGhlaWdodDogMTAwJTsKK30KKworI3Rvb2xi
YXItZHJvcGRvd24tYXJyb3cgeworICAgIGZvbnQtc2l6ZTogMTZweDsKKyAgICBmb250LXdlaWdo
dDogYm9sZDsKKyAgICBib3JkZXI6IDA7CisgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJl
bnQ7CisgICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1cHg7CisgICAgdGV4dC1zaGFkb3c6IG5v
bmU7Cit9CisKK2JvZHkuYXR0YWNoZWQgI3Rvb2xiYXItZHJvcGRvd24tYXJyb3cgeworICAgIGZv
bnQtc2l6ZTogMTRweDsKKyAgICBwYWRkaW5nLWJvdHRvbTogNHB4OworfQorCisjdG9vbGJhci1k
cm9wZG93bi1hcnJvdy5kcm9wZG93bi12aXNpYmxlIHsKKyAgICBiYWNrZ3JvdW5kLWltYWdlOiAt
d2Via2l0LWdyYWRpZW50KGxpbmVhciwgbGVmdCB0b3AsIGxlZnQgYm90dG9tLCBmcm9tKHJnYmEo
MjUxLCAyNTEsIDI1MSwgMC45KSksIHRvKHJnYmEoMjMxLCAyMzEsIDIzMSwgMC45KSkpOworfQor
CisjdG9vbGJhci1kcm9wZG93bi1hcnJvdzpob3ZlciB7CisgICAgYmFja2dyb3VuZC1pbWFnZTog
LXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9wLCBsZWZ0IGJvdHRvbSwgZnJvbShyZ2Jh
KDE5MSwgMTkxLCAxOTEsIDAuNykpLCB0byhyZ2JhKDE3MSwgMTcxLCAxNzEsIDAuNSkpKTsKK30K
KworI3Rvb2xiYXItZHJvcGRvd24tYXJyb3c6YWN0aXZlIHsKKyAgICBiYWNrZ3JvdW5kLWltYWdl
OiAtd2Via2l0LWdyYWRpZW50KGxpbmVhciwgbGVmdCB0b3AsIGxlZnQgYm90dG9tLCBmcm9tKHJn
YmEoMTExLCAxMTEsIDExMSwgMC44KSksIHRvKHJnYmEoOTEsIDkxLCA5MSwgMC44KSkpOworfQor
CisjdG9vbGJhci1kcm9wZG93biB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHotaW5k
ZXg6IDEwMDA7CisgICAgLXdlYmtpdC1ib3gtc2hhZG93OiAzcHggM3B4IDNweCByZ2JhKDAsIDAs
IDAsIDAuNCk7CisgICAgYm9yZGVyOiAxcHggc29saWQgcmdiKDEyOCwgMTI4LCAxMjgpOworICAg
IHBhZGRpbmc6IDRweDsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBpbmhlcml0OworICAgIGJhY2tn
cm91bmQtaW1hZ2U6IGluaGVyaXQ7Cit9CisKK2JvZHkuZGV0YWNoZWQucGxhdGZvcm0tbWFjLWxl
b3BhcmQgI3Rvb2xiYXItZHJvcGRvd24sCitib2R5LmRldGFjaGVkLnBsYXRmb3JtLW1hYy1zbm93
bGVvcGFyZCAjdG9vbGJhci1kcm9wZG93biB7CisgICAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtp
dC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9wLCBsZWZ0IGJvdHRvbSwgZnJvbShyZ2IoMTkxLCAx
OTEsIDE5MSkpLCB0byhyZ2IoMTUxLCAxNTEsIDE1MSkpKTsKK30KKworI3Rvb2xiYXItZHJvcGRv
d24gLnNjcm9sbGFibGUtY29udGVudCB7CisgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CisgICAg
LXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDsKKyAgICAtd2Via2l0LWJveC1hbGlnbjogc3Rh
cnQ7Cit9CisKKyN0b29sYmFyLWRyb3Bkb3duIC50b29sYmFyLWl0ZW0geworICAgIGRpc3BsYXk6
IC13ZWJraXQtYm94OworICAgIC13ZWJraXQtYm94LW9yaWVudDogaG9yaXpvbnRhbDsKKyAgICBt
YXJnaW46IDBweCAycHg7CisgICAgcGFkZGluZzogNHB4OworICAgIHdpZHRoOiAxMDAlOworICAg
IGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMCk7Cit9CisKKyN0b29sYmFyLWRyb3Bk
b3duIC50b29sYmFyLWl0ZW0udG9nZ2xlYWJsZS50b2dnbGVkLW9uIHsKKyAgICBib3JkZXI6IDFw
eCBzb2xpZCByZ2JhKDEwMCwgMTAwLCAxMjAsIDAuNCk7CisgICAgLXdlYmtpdC1ib3JkZXItaW1h
Z2U6IG5vbmU7CisgICAgYmFja2dyb3VuZDogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQg
dG9wLCBsZWZ0IGJvdHRvbSwgZnJvbShyZ2JhKDEyOCwgMTI4LCAxMjgsIDAuNikpLCB0byhyZ2Jh
KDEyOCwgMTI4LCAxMjgsIDAuNikpLCBjb2xvci1zdG9wKDIwJSwgcmdiYSgxNTgsIDE1OCwgMTU4
LCAwLjIpKSwgY29sb3Itc3RvcCg4MCUsIHJnYmEoMTU4LCAxNTgsIDE1OCwgMC4yKSkpOworfQor
CisjdG9vbGJhci1kcm9wZG93biAudG9vbGJhci1pdGVtOmhvdmVyIHsKKyAgICAtd2Via2l0LWJv
cmRlci1pbWFnZTogbm9uZTsKKyAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDEwMCwgMTAwLCAx
MjAsIDAuOCk7Cit9CisKKyN0b29sYmFyLWRyb3Bkb3duIC50b29sYmFyLWl0ZW0udG9nZ2xlYWJs
ZS50b2dnbGVkLW9uOmhvdmVyIHsKKyAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDEwMCwgMTAw
LCAxMjAsIDEpOworfQorCisjdG9vbGJhci1kcm9wZG93biAudG9vbGJhci1pY29uIHsKKyAgICBt
YXJnaW4tcmlnaHQ6IDAuNWVtOworfQorCisjdG9vbGJhci1kcm9wZG93biAudG9vbGJhci1pdGVt
OmFjdGl2ZSAudG9vbGJhci1pY29uIHsKKyAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIDI0cHg7
Cit9CisKKy5zY3JvbGxhYmxlLWNvbnRlbnQgeworICAgIHBvc2l0aW9uOiBzdGF0aWM7CisgICAg
aGVpZ2h0OiAxMDAlOworICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgd2lkdGg6IDEwMCU7Cisg
ICAgbWFyZ2luLXJpZ2h0OiAxMnB4OworICAgIHBhZGRpbmctcmlnaHQ6IDNweDsKK30KKworLnNj
cm9sbGFibGUtY29udGVudDo6LXdlYmtpdC1zY3JvbGxiYXIgeworICAgIHdpZHRoOiAxMXB4Owor
fQorCisuc2Nyb2xsYWJsZS1jb250ZW50Ojotd2Via2l0LXNjcm9sbGJhci1jb3JuZXIsCisuc2Ny
b2xsYWJsZS1jb250ZW50Ojotd2Via2l0LXJlc2l6ZXIgeworICAgIGRpc3BsYXk6IG5vbmU7Cit9
CisKKy5zY3JvbGxhYmxlLWNvbnRlbnQ6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOnZlcnRpY2Fs
IHsKKyAgICBiYWNrZ3JvdW5kOiAtd2Via2l0LWdyYWRpZW50KGxpbmVhciwgbGVmdCB0b3AsIHJp
Z2h0IHRvcCwgZnJvbShyZ2IoMTkyLCAxOTIsIDE5MikpLCB0byhyZ2IoMTkyLCAxOTIsIDE5Mikp
LCBjb2xvci1zdG9wKDQwJSwgcmdiKDIxNCwgMjE0LCAyMTQpKSk7CisgICAgYm9yZGVyLXJhZGl1
czogNXB4OworICAgIG1pbi1oZWlnaHQ6IDIwcHg7Cit9CisKKy5zY3JvbGxhYmxlLWNvbnRlbnQ6
Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOnZlcnRpY2FsOmhvdmVyLAorLnNjcm9sbGFibGUtY29u
dGVudDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6dmVydGljYWw6YWN0aXZlIHsKKyAgICBiYWNr
Z3JvdW5kOiAtd2Via2l0LWdyYWRpZW50KGxpbmVhciwgbGVmdCB0b3AsIHJpZ2h0IHRvcCwgZnJv
bShyZ2IoMjMwLCAyMzAsIDIzMCkpLCB0byhyZ2IoMjMwLCAyMzAsIDIzMCkpLCBjb2xvci1zdG9w
KDQwJSwgcmdiKDI1MiwgMjUyLCAyNTIpKSk7Cit9CisKKy5zY3JvbGxhYmxlLWNvbnRlbnQ6Oi13
ZWJraXQtc2Nyb2xsYmFyLXRyYWNrOnZlcnRpY2FsIHsKKyAgICBiYWNrZ3JvdW5kOiAtd2Via2l0
LWdyYWRpZW50KGxpbmVhciwgbGVmdCB0b3AsIHJpZ2h0IHRvcCwgZnJvbShyZ2IoMTI4LCAxMjgs
IDEyOCkpLCB0byhyZ2IoMTY0LCAxNjQsIDE2NCkpLCBjb2xvci1zdG9wKDI1JSwgcmdiKDE2NCwg
MTY0LCAxNjQpKSk7CisgICAgYm9yZGVyLXJhZGl1czogNXB4OworfQorCisudG9vbGJhci1zZWFy
Y2gtaXRlbSB7CisgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CisgICAgLXdlYmtpdC1ib3gtb3Jp
ZW50OiB2ZXJ0aWNhbDsKKyAgICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyOworICAgIC13ZWJr
aXQtYm94LXBhY2s6IGVuZDsKK30KKwogI3NlYXJjaCB7CiAgICAgd2lkdGg6IDIwNXB4OwogICAg
IGZvbnQtc2l6ZTogMTZweDsKLSAgICBtYXJnaW4tYm90dG9tOiA1cHg7CiB9CiAKIGJvZHkuYXR0
YWNoZWQgI3NlYXJjaCB7CiAgICAgZm9udC1zaXplOiAxMXB4OwotICAgIG1hcmdpbi1ib3R0b206
IDhweDsKIH0KIAogI3NlYXJjaC1yZXN1bHRzLW1hdGNoZXMgewogICAgIGZvbnQtc2l6ZTogMTFw
eDsKICAgICB0ZXh0LXNoYWRvdzogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpIDAgMXB4IDA7Ci0g
ICAgbWFyZ2luLWJvdHRvbTogMjJweDsKLX0KLQotYm9keS5hdHRhY2hlZCAjc2VhcmNoLXJlc3Vs
dHMtbWF0Y2hlcyB7Ci0gICAgbWFyZ2luLWJvdHRvbTogNnB4OwogfQogCiAudG9vbGJhci1pdGVt
LmVsZW1lbnRzIC50b29sYmFyLWljb24gewpAQCAtMjM4LDcgKzM0OSw3IEBAIGJvZHkuYXR0YWNo
ZWQgI3NlYXJjaC1yZXN1bHRzLW1hdGNoZXMgewogICAgIGJhY2tncm91bmQtcG9zaXRpb246IDAg
MDsKICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICAgICBib3JkZXI6IDAgbm9u
ZSB0cmFuc3BhcmVudDsKLSAgICBtYXJnaW46IDVweCAwOworICAgIG1hcmdpbi10b3A6IDlweDsK
IH0KIAogI2Nsb3NlLWJ1dHRvbi1sZWZ0OmhvdmVyLCAjY2xvc2UtYnV0dG9uLXJpZ2h0OmhvdmVy
IHsKQEAgLTI0OSw2ICszNjAsMTAgQEAgYm9keS5hdHRhY2hlZCAjc2VhcmNoLXJlc3VsdHMtbWF0
Y2hlcyB7CiAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMjhweCAwOwogfQogCisuY2xvc2UtbGVm
dCB7CisgICAgZmxvYXQ6IGxlZnQ7Cit9CisKIGJvZHkuZGV0YWNoZWQgLnRvb2xiYXItaXRlbS5j
bG9zZS1sZWZ0LCBib2R5LmRldGFjaGVkIC50b29sYmFyLWl0ZW0uY2xvc2UtcmlnaHQgewogICAg
IGRpc3BsYXk6IG5vbmU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9pbnNwZWN0b3IuaHRtbAppbmRleCA1NWIzMmZkLi5iM2E4NTYzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKQEAgLTE1NSwx
NCArMTU1LDE5IEBAIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
IHNyYz0iU2hvcnRjdXRzSGVscC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0
L2phdmFzY3JpcHQiIHNyYz0iSEFSRW50cnkuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlw
ZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkNvb2tpZVBhcnNlci5qcyI+PC9zY3JpcHQ+CisgICAg
PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iUGFuZWxNYW5hZ2VyLmpzIj48L3Nj
cmlwdD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJTZWFyY2hDb250
cm9sbGVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIg
c3JjPSJUb29sYmFyLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5IGNsYXNzPSJkZXRhY2hl
ZCI+CiAgICAgPGRpdiBpZD0idG9vbGJhciI+CiAgICAgICAgIDxkaXYgY2xhc3M9InRvb2xiYXIt
aXRlbSBjbG9zZS1sZWZ0Ij48YnV0dG9uIGlkPSJjbG9zZS1idXR0b24tbGVmdCI+PC9idXR0b24+
PC9kaXY+Ci0gICAgICAgIDxkaXYgY2xhc3M9InRvb2xiYXItaXRlbSBmbGV4YWJsZS1zcGFjZSI+
PC9kaXY+Ci0gICAgICAgIDxkaXYgY2xhc3M9InRvb2xiYXItaXRlbSBoaWRkZW4iIGlkPSJzZWFy
Y2gtcmVzdWx0cy1tYXRjaGVzIj48L2Rpdj4KLSAgICAgICAgPGRpdiBjbGFzcz0idG9vbGJhci1p
dGVtIj48aW5wdXQgaWQ9InNlYXJjaCIgdHlwZT0ic2VhcmNoIiBpbmNyZW1lbnRhbCByZXN1bHRz
PSIwIj48ZGl2IGlkPSJzZWFyY2gtdG9vbGJhci1sYWJlbCIgY2xhc3M9InRvb2xiYXItbGFiZWwi
PjwvZGl2PjwvZGl2PgotICAgICAgICA8ZGl2IGNsYXNzPSJ0b29sYmFyLWl0ZW0gY2xvc2Utcmln
aHQiPjxidXR0b24gaWQ9ImNsb3NlLWJ1dHRvbi1yaWdodCI+PC9idXR0b24+PC9kaXY+CisgICAg
ICAgIDxkaXYgaWQ9InRvb2xiYXItY29udHJvbHMiPgorICAgICAgICAgICAgPGRpdiBjbGFzcz0i
dG9vbGJhci1pdGVtIj48YnV0dG9uIGlkPSJ0b29sYmFyLWRyb3Bkb3duLWFycm93IiBjbGFzcz0i
dG9vbGJhci1sYWJlbCI+JnJhcXVvOzwvYnV0dG9uPjwvZGl2PgorICAgICAgICAgICAgPGRpdiBj
bGFzcz0idG9vbGJhci1pdGVtIGhpZGRlbiIgaWQ9InNlYXJjaC1yZXN1bHRzLW1hdGNoZXMiPjwv
ZGl2PgorICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9vbGJhci1pdGVtIHRvb2xiYXItc2VhcmNo
LWl0ZW0iPjxpbnB1dCBpZD0ic2VhcmNoIiB0eXBlPSJzZWFyY2giIGluY3JlbWVudGFsIHJlc3Vs
dHM9IjAiPjxkaXYgaWQ9InNlYXJjaC10b29sYmFyLWxhYmVsIiBjbGFzcz0idG9vbGJhci1sYWJl
bCI+PC9kaXY+PC9kaXY+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b29sYmFyLWl0ZW0gY2xv
c2UtcmlnaHQiPjxidXR0b24gaWQ9ImNsb3NlLWJ1dHRvbi1yaWdodCI+PC9idXR0b24+PC9kaXY+
CisgICAgICAgIDwvZGl2PgogICAgIDwvZGl2PgogICAgIDxkaXYgaWQ9Im1haW4iPgogICAgICAg
ICA8ZGl2IGlkPSJtYWluLXBhbmVscyIgc3BlbGxjaGVjaz0iZmFsc2UiPjwvZGl2PgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwppbmRleCA2Mjg2
OGU5Li5kOWUwZTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL2luc3BlY3Rvci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L2luc3BlY3Rvci5qcwpAQCAtMTQwLDQ5ICsxNDAsNyBAQCB2YXIgV2ViSW5zcGVjdG9yID0gewog
CiAgICAgZ2V0IGN1cnJlbnRQYW5lbCgpCiAgICAgewotICAgICAgICByZXR1cm4gdGhpcy5fY3Vy
cmVudFBhbmVsOwotICAgIH0sCi0KLSAgICBzZXQgY3VycmVudFBhbmVsKHgpCi0gICAgewotICAg
ICAgICBpZiAodGhpcy5fY3VycmVudFBhbmVsID09PSB4KQotICAgICAgICAgICAgcmV0dXJuOwot
Ci0gICAgICAgIGlmICh0aGlzLl9jdXJyZW50UGFuZWwpCi0gICAgICAgICAgICB0aGlzLl9jdXJy
ZW50UGFuZWwuaGlkZSgpOwotCi0gICAgICAgIHRoaXMuX2N1cnJlbnRQYW5lbCA9IHg7Ci0KLSAg
ICAgICAgdGhpcy51cGRhdGVTZWFyY2hMYWJlbCgpOwotCi0gICAgICAgIGlmICh4KSB7Ci0gICAg
ICAgICAgICB4LnNob3coKTsKLQotICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudFF1ZXJ5KSB7
Ci0gICAgICAgICAgICAgICAgaWYgKHgucGVyZm9ybVNlYXJjaCkgewotICAgICAgICAgICAgICAg
ICAgICBmdW5jdGlvbiBwZXJmb3JtUGFuZWxTZWFyY2goKQotICAgICAgICAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVNlYXJjaE1hdGNoZXNDb3VudCgp
OwotCi0gICAgICAgICAgICAgICAgICAgICAgICB4LmN1cnJlbnRRdWVyeSA9IHRoaXMuY3VycmVu
dFF1ZXJ5OwotICAgICAgICAgICAgICAgICAgICAgICAgeC5wZXJmb3JtU2VhcmNoKHRoaXMuY3Vy
cmVudFF1ZXJ5KTsKLSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAg
IC8vIFBlcmZvcm0gdGhlIHNlYXJjaCBvbiBhIHRpbWVvdXQgc28gdGhlIHBhbmVsIHN3aXRjaGVz
IGZhc3QuCi0gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQocGVyZm9ybVBhbmVsU2VhcmNo
LmJpbmQodGhpcyksIDApOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgICAgIC8vIFVwZGF0ZSB0byBzaG93IE5vdCBmb3VuZCBmb3IgcGFuZWxzIHRoYXQgY2FuJ3Qg
YmUgc2VhcmNoZWQuCi0gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlU2VhcmNoTWF0Y2hl
c0NvdW50KCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0K
LSAgICAgICAgZm9yICh2YXIgcGFuZWxOYW1lIGluIFdlYkluc3BlY3Rvci5wYW5lbHMpIHsKLSAg
ICAgICAgICAgIGlmIChXZWJJbnNwZWN0b3IucGFuZWxzW3BhbmVsTmFtZV0gPT09IHgpIHsKLSAg
ICAgICAgICAgICAgICBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MubGFzdEFjdGl2ZVBhbmVsID0gcGFu
ZWxOYW1lOwotICAgICAgICAgICAgICAgIHRoaXMuX3BhbmVsSGlzdG9yeS5zZXRQYW5lbChwYW5l
bE5hbWUpOwotICAgICAgICAgICAgfQotICAgICAgICB9CisgICAgICAgIHJldHVybiB0aGlzLnBh
bmVsTWFuYWdlciAmJiB0aGlzLnBhbmVsTWFuYWdlci5jdXJyZW50UGFuZWw7CiAgICAgfSwKIAog
ICAgIGNyZWF0ZURPTUJyZWFrcG9pbnRzU2lkZWJhclBhbmU6IGZ1bmN0aW9uKCkKQEAgLTI0OCw3
ICsyMDYsOCBAQCB2YXIgV2ViSW5zcGVjdG9yID0gewogCiAgICAgICAgIHRoaXMuX2F0dGFjaGVk
ID0geDsKIAotICAgICAgICB0aGlzLnVwZGF0ZVNlYXJjaExhYmVsKCk7CisgICAgICAgIGlmICh0
aGlzLnNlYXJjaENvbnRyb2xsZXIpCisgICAgICAgICAgICB0aGlzLnNlYXJjaENvbnRyb2xsZXIu
dXBkYXRlU2VhcmNoTGFiZWwoKTsKIAogICAgICAgICB2YXIgZG9ja1RvZ2dsZUJ1dHRvbiA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJkb2NrLXN0YXR1cy1iYXItaXRlbSIpOwogICAgICAgICB2
YXIgYm9keSA9IGRvY3VtZW50LmJvZHk7CkBAIC0yNjQsNiArMjIzLDggQEAgdmFyIFdlYkluc3Bl
Y3RvciA9IHsKICAgICAgICAgfQogICAgICAgICBpZiAodGhpcy5kcmF3ZXIpCiAgICAgICAgICAg
ICB0aGlzLmRyYXdlci5yZXNpemUoKTsKKyAgICAgICAgaWYgKHRoaXMudG9vbGJhcikKKyAgICAg
ICAgICAgIHRoaXMudG9vbGJhci5yZXNpemUoKTsKICAgICB9LAogCiAgICAgZ2V0IGVycm9ycygp
CkBAIC0zODAsNyArMzQxLDcgQEAgdmFyIFdlYkluc3BlY3RvciA9IHsKIAogICAgIF91cGRhdGVG
b2N1c2VkTm9kZTogZnVuY3Rpb24obm9kZUlkKQogICAgIHsKLSAgICAgICAgdGhpcy5jdXJyZW50
UGFuZWwgPSB0aGlzLnBhbmVscy5lbGVtZW50czsKKyAgICAgICAgdGhpcy5wYW5lbE1hbmFnZXIu
YWN0aXZhdGVQYW5lbCh0aGlzLnBhbmVscy5lbGVtZW50cyk7CiAgICAgICAgIHRoaXMucGFuZWxz
LmVsZW1lbnRzLnVwZGF0ZUZvY3VzZWROb2RlKG5vZGVJZCk7CiAgICAgfSwKIApAQCAtNDk1LDE0
ICs0NTYsMTMgQEAgV2ViSW5zcGVjdG9yLmRvTG9hZGVkRG9uZSA9IGZ1bmN0aW9uKCkKIAogICAg
IHRoaXMucGFuZWxzID0ge307CiAgICAgdGhpcy5fY3JlYXRlUGFuZWxzKCk7Ci0gICAgdGhpcy5f
cGFuZWxIaXN0b3J5ID0gbmV3IFdlYkluc3BlY3Rvci5QYW5lbEhpc3RvcnkoKTsKLQotICAgIHZh
ciB0b29sYmFyRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0b29sYmFyIik7Ci0g
ICAgdmFyIHByZXZpb3VzVG9vbGJhckl0ZW0gPSB0b29sYmFyRWxlbWVudC5jaGlsZHJlblswXTsK
KyAgICAKKyAgICB0aGlzLnBhbmVsTWFuYWdlciA9IG5ldyBXZWJJbnNwZWN0b3IuUGFuZWxNYW5h
Z2VyKCk7CisgICAgdGhpcy50b29sYmFyID0gbmV3IFdlYkluc3BlY3Rvci5Ub29sYmFyKCk7Cisg
ICAgdGhpcy5zZWFyY2hDb250cm9sbGVyID0gbmV3IFdlYkluc3BlY3Rvci5TZWFyY2hDb250cm9s
bGVyKCk7CiAKLSAgICB0aGlzLnBhbmVsT3JkZXIgPSBbXTsKICAgICBmb3IgKHZhciBwYW5lbE5h
bWUgaW4gdGhpcy5wYW5lbHMpCi0gICAgICAgIHByZXZpb3VzVG9vbGJhckl0ZW0gPSBXZWJJbnNw
ZWN0b3IuYWRkUGFuZWxUb29sYmFySWNvbih0b29sYmFyRWxlbWVudCwgdGhpcy5wYW5lbHNbcGFu
ZWxOYW1lXSwgcHJldmlvdXNUb29sYmFySXRlbSk7CisgICAgICAgIHRoaXMucGFuZWxNYW5hZ2Vy
LmFkZFBhbmVsKHRoaXMucGFuZWxzW3BhbmVsTmFtZV0pOwogCiAgICAgdGhpcy5UaXBzID0gewog
ICAgICAgICBSZXNvdXJjZU5vdENvbXByZXNzZWQ6IHtpZDogMCwgbWVzc2FnZTogV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJZb3UgY291bGQgc2F2ZSBiYW5kd2lkdGggYnkgaGF2aW5nIHlvdXIgd2Vi
IHNlcnZlciBjb21wcmVzcyB0aGlzIHRyYW5zZmVyIHdpdGggZ3ppcCBvciB6bGliLiIpfQpAQCAt
NTM0LDE1ICs0OTQsNiBAQCBXZWJJbnNwZWN0b3IuZG9Mb2FkZWREb25lID0gZnVuY3Rpb24oKQog
ICAgIGVycm9yV2FybmluZ0NvdW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5zaG93
Q29uc29sZS5iaW5kKHRoaXMpLCBmYWxzZSk7CiAgICAgdGhpcy5fdXBkYXRlRXJyb3JBbmRXYXJu
aW5nQ291bnRzKCk7CiAKLSAgICB2YXIgc2VhcmNoRmllbGQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgic2VhcmNoIik7Ci0gICAgc2VhcmNoRmllbGQuYWRkRXZlbnRMaXN0ZW5lcigic2VhcmNo
IiwgdGhpcy5wZXJmb3JtU2VhcmNoLmJpbmQodGhpcyksIGZhbHNlKTsgLy8gd2hlbiB0aGUgc2Vh
cmNoIGlzIGVtcHRpZWQKLSAgICBzZWFyY2hGaWVsZC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRv
d24iLCB0aGlzLl9zZWFyY2hGaWVsZE1hbnVhbEZvY3VzLmJpbmQodGhpcyksIGZhbHNlKTsgLy8g
d2hlbiB0aGUgc2VhcmNoIGZpZWxkIGlzIG1hbnVhbGx5IHNlbGVjdGVkCi0gICAgc2VhcmNoRmll
bGQuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsIHRoaXMuX3NlYXJjaEtleURvd24uYmluZCh0
aGlzKSwgdHJ1ZSk7Ci0KLSAgICB0b29sYmFyRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3Vz
ZWRvd24iLCB0aGlzLnRvb2xiYXJEcmFnU3RhcnQsIHRydWUpOwotICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJjbG9zZS1idXR0b24tbGVmdCIpLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwg
dGhpcy5jbG9zZSwgdHJ1ZSk7Ci0gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNsb3NlLWJ1
dHRvbi1yaWdodCIpLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5jbG9zZSwgdHJ1ZSk7
Ci0KICAgICB0aGlzLmV4dGVuc2lvblNlcnZlci5pbml0RXh0ZW5zaW9ucygpOwogCiAgICAgZnVu
Y3Rpb24gb25Qb3B1bGF0ZVNjcmlwdE9iamVjdHMoKQpAQCAtNTY5LDE4ICs1MjAsNiBAQCBXZWJJ
bnNwZWN0b3IuZG9Mb2FkZWREb25lID0gZnVuY3Rpb24oKQogICAgIENTU0FnZW50LmdldFN1cHBv
cnRlZENTU1Byb3BlcnRpZXMocHJvcGVydHlOYW1lc0NhbGxiYWNrKTsKIH0KIAotV2ViSW5zcGVj
dG9yLmFkZFBhbmVsVG9vbGJhckljb24gPSBmdW5jdGlvbih0b29sYmFyRWxlbWVudCwgcGFuZWws
IHByZXZpb3VzVG9vbGJhckl0ZW0pCi17Ci0gICAgdmFyIHBhbmVsVG9vbGJhckl0ZW0gPSBwYW5l
bC50b29sYmFySXRlbTsKLSAgICB0aGlzLnBhbmVsT3JkZXIucHVzaChwYW5lbCk7Ci0gICAgcGFu
ZWxUb29sYmFySXRlbS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX3Rvb2xiYXJJdGVt
Q2xpY2tlZC5iaW5kKHRoaXMpKTsKLSAgICBpZiAocHJldmlvdXNUb29sYmFySXRlbSkKLSAgICAg
ICAgdG9vbGJhckVsZW1lbnQuaW5zZXJ0QmVmb3JlKHBhbmVsVG9vbGJhckl0ZW0sIHByZXZpb3Vz
VG9vbGJhckl0ZW0ubmV4dFNpYmxpbmcpOwotICAgIGVsc2UKLSAgICAgICAgdG9vbGJhckVsZW1l
bnQuaW5zZXJ0QmVmb3JlKHBhbmVsVG9vbGJhckl0ZW0sIHRvb2xiYXJFbGVtZW50LmZpcnN0Q2hp
bGQpOwotICAgIHJldHVybiBwYW5lbFRvb2xiYXJJdGVtOwotfQotCiB2YXIgd2luZG93TG9hZGVk
ID0gZnVuY3Rpb24oKQogewogICAgIHZhciBsb2NhbGl6ZWRTdHJpbmdzVVJMID0gSW5zcGVjdG9y
RnJvbnRlbmRIb3N0LmxvY2FsaXplZFN0cmluZ3NVUkwoKTsKQEAgLTYxOCw2ICs1NTcsNyBAQCBX
ZWJJbnNwZWN0b3IuZGlzcGF0Y2hNZXNzYWdlRnJvbUJhY2tlbmQgPSBmdW5jdGlvbihtZXNzYWdl
T2JqZWN0KQogCiBXZWJJbnNwZWN0b3Iud2luZG93UmVzaXplID0gZnVuY3Rpb24oZXZlbnQpCiB7
CisgICAgdGhpcy50b29sYmFyLnJlc2l6ZSgpOwogICAgIGlmICh0aGlzLmN1cnJlbnRQYW5lbCkK
ICAgICAgICAgdGhpcy5jdXJyZW50UGFuZWwucmVzaXplKCk7CiAgICAgdGhpcy5kcmF3ZXIucmVz
aXplKCk7CkBAIC03NjcsNDAgKzcwNywzMCBAQCBXZWJJbnNwZWN0b3IuZG9jdW1lbnRLZXlEb3du
ID0gZnVuY3Rpb24oZXZlbnQpCiAgICAgaWYgKFdlYkluc3BlY3Rvci5pc0VkaXRpbmdBbnlGaWVs
ZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAodGhpcy5jdXJyZW50Rm9jdXNFbGVtZW50
ICYmIHRoaXMuY3VycmVudEZvY3VzRWxlbWVudC5oYW5kbGVLZXlFdmVudCkgeworICAgIGlmICh0
aGlzLmN1cnJlbnRGb2N1c0VsZW1lbnQgJiYgdGhpcy5jdXJyZW50Rm9jdXNFbGVtZW50LmhhbmRs
ZUtleUV2ZW50KQogICAgICAgICB0aGlzLmN1cnJlbnRGb2N1c0VsZW1lbnQuaGFuZGxlS2V5RXZl
bnQoZXZlbnQpOwotICAgICAgICBpZiAoZXZlbnQuaGFuZGxlZCkgewotICAgICAgICAgICAgZXZl
bnQucHJldmVudERlZmF1bHQoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAg
IH0KIAotICAgIGlmICh0aGlzLmN1cnJlbnRQYW5lbCAmJiB0aGlzLmN1cnJlbnRQYW5lbC5oYW5k
bGVTaG9ydGN1dCkgewotICAgICAgICB0aGlzLmN1cnJlbnRQYW5lbC5oYW5kbGVTaG9ydGN1dChl
dmVudCk7Ci0gICAgICAgIGlmIChldmVudC5oYW5kbGVkKSB7Ci0gICAgICAgICAgICBldmVudC5w
cmV2ZW50RGVmYXVsdCgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgdmFy
IHNob3J0Y3V0VGFyZ2V0cyA9IFsKKyAgICAgICAgdGhpcy5jdXJyZW50UGFuZWwsCisgICAgICAg
IHRoaXMucGFuZWxNYW5hZ2VyLAorICAgICAgICB0aGlzLnNlYXJjaENvbnRyb2xsZXIsCisgICAg
ICAgIHRoaXMKKyAgICBdOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaG9ydGN1dFRhcmdl
dHMubGVuZ3RoICYmICFldmVudC5oYW5kbGVkOyArK2kpIHsKKyAgICAgICAgaWYgKHNob3J0Y3V0
VGFyZ2V0c1tpXSAmJiBzaG9ydGN1dFRhcmdldHNbaV0uaGFuZGxlU2hvcnRjdXQpCisgICAgICAg
ICAgICBzaG9ydGN1dFRhcmdldHNbaV0uaGFuZGxlU2hvcnRjdXQoZXZlbnQpOwogICAgIH0KIAot
ICAgIHZhciBpc01hYyA9IFdlYkluc3BlY3Rvci5pc01hYygpOwotICAgIHN3aXRjaCAoZXZlbnQu
a2V5SWRlbnRpZmllcikgewotICAgICAgICBjYXNlICJMZWZ0IjoKLSAgICAgICAgICAgIHZhciBp
c0JhY2tLZXkgPSAhaXNJbkVkaXRNb2RlICYmIChpc01hYyA/IGV2ZW50Lm1ldGFLZXkgOiBldmVu
dC5jdHJsS2V5KTsKLSAgICAgICAgICAgIGlmIChpc0JhY2tLZXkgJiYgdGhpcy5fcGFuZWxIaXN0
b3J5LmNhbkdvQmFjaygpKSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5fcGFuZWxIaXN0b3J5Lmdv
QmFjaygpOwotICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBicmVhazsKKyAgICBpZiAoZXZlbnQuaGFuZGxlZCkKKyAgICAg
ICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKK30KIAotICAgICAgICBjYXNlICJSaWdodCI6Ci0g
ICAgICAgICAgICB2YXIgaXNGb3J3YXJkS2V5ID0gIWlzSW5FZGl0TW9kZSAmJiAoaXNNYWMgPyBl
dmVudC5tZXRhS2V5IDogZXZlbnQuY3RybEtleSk7Ci0gICAgICAgICAgICBpZiAoaXNGb3J3YXJk
S2V5ICYmIHRoaXMuX3BhbmVsSGlzdG9yeS5jYW5Hb0ZvcndhcmQoKSkgewotICAgICAgICAgICAg
ICAgIHRoaXMuX3BhbmVsSGlzdG9yeS5nb0ZvcndhcmQoKTsKLSAgICAgICAgICAgICAgICBldmVu
dC5wcmV2ZW50RGVmYXVsdCgpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7CitX
ZWJJbnNwZWN0b3IuaGFuZGxlU2hvcnRjdXQgPSBmdW5jdGlvbihldmVudCkKK3sKKyAgICB2YXIg
aXNNYWMgPSBXZWJJbnNwZWN0b3IuaXNNYWMoKTsKIAorICAgIHN3aXRjaCAoZXZlbnQua2V5SWRl
bnRpZmllcikgewogICAgICAgICBjYXNlICJVKzAwMUIiOiAvLyBFc2NhcGUga2V5CiAgICAgICAg
ICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICAgaWYgKHRoaXMuZHJhd2Vy
LmZ1bGxQYW5lbCkKQEAgLTgwOSw3MCArNzM5LDYgQEAgV2ViSW5zcGVjdG9yLmRvY3VtZW50S2V5
RG93biA9IGZ1bmN0aW9uKGV2ZW50KQogICAgICAgICAgICAgdGhpcy5kcmF3ZXIudmlzaWJsZSA9
ICF0aGlzLmRyYXdlci52aXNpYmxlOwogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgY2Fz
ZSAiVSswMDQ2IjogLy8gRiBrZXkKLSAgICAgICAgICAgIGlmIChpc01hYykKLSAgICAgICAgICAg
ICAgICB2YXIgaXNGaW5kS2V5ID0gZXZlbnQubWV0YUtleSAmJiAhZXZlbnQuY3RybEtleSAmJiAh
ZXZlbnQuYWx0S2V5ICYmICFldmVudC5zaGlmdEtleTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICB2YXIgaXNGaW5kS2V5ID0gZXZlbnQuY3RybEtleSAmJiAhZXZlbnQubWV0YUtl
eSAmJiAhZXZlbnQuYWx0S2V5ICYmICFldmVudC5zaGlmdEtleTsKLQotICAgICAgICAgICAgaWYg
KGlzRmluZEtleSkgewotICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5mb2N1c1NlYXJjaEZp
ZWxkKCk7Ci0gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgIkYzIjoKLSAgICAgICAg
ICAgIGlmICghaXNNYWMpIHsKLSAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZm9jdXNTZWFy
Y2hGaWVsZCgpOwotICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlICJVKzAwNDciOiAv
LyBHIGtleQotICAgICAgICAgICAgaWYgKGlzTWFjICYmIGV2ZW50Lm1ldGFLZXkgJiYgIWV2ZW50
LmN0cmxLZXkgJiYgIWV2ZW50LmFsdEtleSkgewotICAgICAgICAgICAgICAgIGlmIChldmVudC5z
aGlmdEtleSkgewotICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50UGFuZWwuanVt
cFRvUHJldmlvdXNTZWFyY2hSZXN1bHQpCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmN1
cnJlbnRQYW5lbC5qdW1wVG9QcmV2aW91c1NlYXJjaFJlc3VsdCgpOwotICAgICAgICAgICAgICAg
IH0gZWxzZSBpZiAodGhpcy5jdXJyZW50UGFuZWwuanVtcFRvTmV4dFNlYXJjaFJlc3VsdCkKLSAg
ICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50UGFuZWwuanVtcFRvTmV4dFNlYXJjaFJlc3Vs
dCgpOwotICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICAvLyBXaW5kb3dzIGFuZCBNYWMgaGF2
ZSB0d28gZGlmZmVyZW50IGRlZmluaXRpb25zIG9mIFssIHNvIGFjY2VwdCBib3RoLgotICAgICAg
ICBjYXNlICJVKzAwNUIiOgotICAgICAgICBjYXNlICJVKzAwREIiOiAvLyBbIGtleQotICAgICAg
ICAgICAgaWYgKGlzTWFjKQotICAgICAgICAgICAgICAgIHZhciBpc1JvdGF0ZUxlZnQgPSBldmVu
dC5tZXRhS2V5ICYmICFldmVudC5zaGlmdEtleSAmJiAhZXZlbnQuY3RybEtleSAmJiAhZXZlbnQu
YWx0S2V5OwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHZhciBpc1JvdGF0ZUxl
ZnQgPSBldmVudC5jdHJsS2V5ICYmICFldmVudC5zaGlmdEtleSAmJiAhZXZlbnQubWV0YUtleSAm
JiAhZXZlbnQuYWx0S2V5OwotCi0gICAgICAgICAgICBpZiAoaXNSb3RhdGVMZWZ0KSB7Ci0gICAg
ICAgICAgICAgICAgdmFyIGluZGV4ID0gdGhpcy5wYW5lbE9yZGVyLmluZGV4T2YodGhpcy5jdXJy
ZW50UGFuZWwpOwotICAgICAgICAgICAgICAgIGluZGV4ID0gKGluZGV4ID09PSAwKSA/IHRoaXMu
cGFuZWxPcmRlci5sZW5ndGggLSAxIDogaW5kZXggLSAxOwotICAgICAgICAgICAgICAgIHRoaXMu
cGFuZWxPcmRlcltpbmRleF0udG9vbGJhckl0ZW0uY2xpY2soKTsKLSAgICAgICAgICAgICAgICBl
dmVudC5wcmV2ZW50RGVmYXVsdCgpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBicmVh
azsKLQotICAgICAgICAvLyBXaW5kb3dzIGFuZCBNYWMgaGF2ZSB0d28gZGlmZmVyZW50IGRlZmlu
aXRpb25zIG9mIF0sIHNvIGFjY2VwdCBib3RoLgotICAgICAgICBjYXNlICJVKzAwNUQiOgotICAg
ICAgICBjYXNlICJVKzAwREQiOiAgLy8gXSBrZXkKLSAgICAgICAgICAgIGlmIChpc01hYykKLSAg
ICAgICAgICAgICAgICB2YXIgaXNSb3RhdGVSaWdodCA9IGV2ZW50Lm1ldGFLZXkgJiYgIWV2ZW50
LnNoaWZ0S2V5ICYmICFldmVudC5jdHJsS2V5ICYmICFldmVudC5hbHRLZXk7Ci0gICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgdmFyIGlzUm90YXRlUmlnaHQgPSBldmVudC5jdHJsS2V5
ICYmICFldmVudC5zaGlmdEtleSAmJiAhZXZlbnQubWV0YUtleSAmJiAhZXZlbnQuYWx0S2V5Owot
Ci0gICAgICAgICAgICBpZiAoaXNSb3RhdGVSaWdodCkgewotICAgICAgICAgICAgICAgIHZhciBp
bmRleCA9IHRoaXMucGFuZWxPcmRlci5pbmRleE9mKHRoaXMuY3VycmVudFBhbmVsKTsKLSAgICAg
ICAgICAgICAgICBpbmRleCA9IChpbmRleCArIDEpICUgdGhpcy5wYW5lbE9yZGVyLmxlbmd0aDsK
LSAgICAgICAgICAgICAgICB0aGlzLnBhbmVsT3JkZXJbaW5kZXhdLnRvb2xiYXJJdGVtLmNsaWNr
KCk7Ci0gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKLSAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgYnJlYWs7Ci0KICAgICAgICAgY2FzZSAiVSswMDUyIjogLy8gUiBr
ZXkKICAgICAgICAgICAgIGlmICgoZXZlbnQubWV0YUtleSAmJiBpc01hYykgfHwgKGV2ZW50LmN0
cmxLZXkgJiYgIWlzTWFjKSkgewogICAgICAgICAgICAgICAgIEluc3BlY3RvckFnZW50LnJlbG9h
ZFBhZ2UoZXZlbnQuc2hpZnRLZXkpOwpAQCAtMTAwNSwyNyArODcxLDYgQEAgV2ViSW5zcGVjdG9y
LmFuaW1hdGVTdHlsZSA9IGZ1bmN0aW9uKGFuaW1hdGlvbnMsIGR1cmF0aW9uLCBjYWxsYmFjaykK
ICAgICB9OwogfQogCi1XZWJJbnNwZWN0b3IudXBkYXRlU2VhcmNoTGFiZWwgPSBmdW5jdGlvbigp
Ci17Ci0gICAgaWYgKCF0aGlzLmN1cnJlbnRQYW5lbCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
dmFyIG5ld0xhYmVsID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTZWFyY2ggJXMiLCB0aGlzLmN1
cnJlbnRQYW5lbC50b29sYmFySXRlbUxhYmVsKTsKLSAgICBpZiAodGhpcy5hdHRhY2hlZCkKLSAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNlYXJjaCIpLnNldEF0dHJpYnV0ZSgicGxh
Y2Vob2xkZXIiLCBuZXdMYWJlbCk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJzZWFyY2giKS5yZW1vdmVBdHRyaWJ1dGUoInBsYWNlaG9sZGVyIik7Ci0gICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzZWFyY2gtdG9vbGJhci1sYWJlbCIpLnRleHRD
b250ZW50ID0gbmV3TGFiZWw7Ci0gICAgfQotfQotCi1XZWJJbnNwZWN0b3IuZm9jdXNTZWFyY2hG
aWVsZCA9IGZ1bmN0aW9uKCkKLXsKLSAgICB2YXIgc2VhcmNoRmllbGQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgic2VhcmNoIik7Ci0gICAgc2VhcmNoRmllbGQuZm9jdXMoKTsKLSAgICBzZWFy
Y2hGaWVsZC5zZWxlY3QoKTsKLX0KLQogV2ViSW5zcGVjdG9yLnRvZ2dsZUF0dGFjaCA9IGZ1bmN0
aW9uKCkKIHsKICAgICBpZiAoIXRoaXMuYXR0YWNoZWQpCkBAIC0xMDM0LDU4ICs4NzksNiBAQCBX
ZWJJbnNwZWN0b3IudG9nZ2xlQXR0YWNoID0gZnVuY3Rpb24oKQogICAgICAgICBJbnNwZWN0b3JG
cm9udGVuZEhvc3QucmVxdWVzdERldGFjaFdpbmRvdygpOwogfQogCi1XZWJJbnNwZWN0b3IudG9v
bGJhckRyYWdTdGFydCA9IGZ1bmN0aW9uKGV2ZW50KQotewotICAgIGlmICgoIVdlYkluc3BlY3Rv
ci5hdHRhY2hlZCAmJiBXZWJJbnNwZWN0b3IucGxhdGZvcm1GbGF2b3IgIT09IFdlYkluc3BlY3Rv
ci5QbGF0Zm9ybUZsYXZvci5NYWNMZW9wYXJkICYmIFdlYkluc3BlY3Rvci5wbGF0Zm9ybUZsYXZv
ciAhPT0gV2ViSW5zcGVjdG9yLlBsYXRmb3JtRmxhdm9yLk1hY1Nub3dMZW9wYXJkKSB8fCBXZWJJ
bnNwZWN0b3IucG9ydCA9PSAicXQiKQotICAgICAgICByZXR1cm47Ci0KLSAgICB2YXIgdGFyZ2V0
ID0gZXZlbnQudGFyZ2V0OwotICAgIGlmICh0YXJnZXQuaGFzU3R5bGVDbGFzcygidG9vbGJhci1p
dGVtIikgJiYgdGFyZ2V0Lmhhc1N0eWxlQ2xhc3MoInRvZ2dsZWFibGUiKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgdmFyIHRvb2xiYXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidG9vbGJh
ciIpOwotICAgIGlmICh0YXJnZXQgIT09IHRvb2xiYXIgJiYgIXRhcmdldC5oYXNTdHlsZUNsYXNz
KCJ0b29sYmFyLWl0ZW0iKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgdG9vbGJhci5sYXN0U2Ny
ZWVuWCA9IGV2ZW50LnNjcmVlblg7Ci0gICAgdG9vbGJhci5sYXN0U2NyZWVuWSA9IGV2ZW50LnNj
cmVlblk7Ci0KLSAgICBXZWJJbnNwZWN0b3IuZWxlbWVudERyYWdTdGFydCh0b29sYmFyLCBXZWJJ
bnNwZWN0b3IudG9vbGJhckRyYWcsIFdlYkluc3BlY3Rvci50b29sYmFyRHJhZ0VuZCwgZXZlbnQs
IChXZWJJbnNwZWN0b3IuYXR0YWNoZWQgPyAicm93LXJlc2l6ZSIgOiAiZGVmYXVsdCIpKTsKLX0K
LQotV2ViSW5zcGVjdG9yLnRvb2xiYXJEcmFnRW5kID0gZnVuY3Rpb24oZXZlbnQpCi17Ci0gICAg
dmFyIHRvb2xiYXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidG9vbGJhciIpOwotCi0gICAg
V2ViSW5zcGVjdG9yLmVsZW1lbnREcmFnRW5kKGV2ZW50KTsKLQotICAgIGRlbGV0ZSB0b29sYmFy
Lmxhc3RTY3JlZW5YOwotICAgIGRlbGV0ZSB0b29sYmFyLmxhc3RTY3JlZW5ZOwotfQotCi1XZWJJ
bnNwZWN0b3IudG9vbGJhckRyYWcgPSBmdW5jdGlvbihldmVudCkKLXsKLSAgICB2YXIgdG9vbGJh
ciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0b29sYmFyIik7Ci0KLSAgICBpZiAoV2ViSW5z
cGVjdG9yLmF0dGFjaGVkKSB7Ci0gICAgICAgIHZhciBoZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWln
aHQgLSAoZXZlbnQuc2NyZWVuWSAtIHRvb2xiYXIubGFzdFNjcmVlblkpOwotCi0gICAgICAgIElu
c3BlY3RvckZyb250ZW5kSG9zdC5zZXRBdHRhY2hlZFdpbmRvd0hlaWdodChoZWlnaHQpOwotICAg
IH0gZWxzZSB7Ci0gICAgICAgIHZhciB4ID0gZXZlbnQuc2NyZWVuWCAtIHRvb2xiYXIubGFzdFNj
cmVlblg7Ci0gICAgICAgIHZhciB5ID0gZXZlbnQuc2NyZWVuWSAtIHRvb2xiYXIubGFzdFNjcmVl
blk7Ci0KLSAgICAgICAgLy8gV2UgY2Fubm90IGNhbGwgd2luZG93Lm1vdmVCeSBoZXJlIGJlY2F1
c2UgaXQgcmVzdHJpY3RzIHRoZSBtb3ZlbWVudAotICAgICAgICAvLyBvZiB0aGUgd2luZG93IGF0
IHRoZSBlZGdlcy4KLSAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0Lm1vdmVXaW5kb3dCeSh4
LCB5KTsKLSAgICB9Ci0KLSAgICB0b29sYmFyLmxhc3RTY3JlZW5YID0gZXZlbnQuc2NyZWVuWDsK
LSAgICB0b29sYmFyLmxhc3RTY3JlZW5ZID0gZXZlbnQuc2NyZWVuWTsKLQotICAgIGV2ZW50LnBy
ZXZlbnREZWZhdWx0KCk7Ci19Ci0KIFdlYkluc3BlY3Rvci5lbGVtZW50RHJhZ1N0YXJ0ID0gZnVu
Y3Rpb24oZWxlbWVudCwgZGl2aWRlckRyYWcsIGVsZW1lbnREcmFnRW5kLCBldmVudCwgY3Vyc29y
KQogewogICAgIGlmICh0aGlzLl9lbGVtZW50RHJhZ2dpbmdFdmVudExpc3RlbmVyIHx8IHRoaXMu
X2VsZW1lbnRFbmREcmFnZ2luZ0V2ZW50TGlzdGVuZXIpCkBAIC0xMTMyLDcgKzkyNSw3IEBAIFdl
Ykluc3BlY3Rvci5zaG93UGFuZWwgPSBmdW5jdGlvbihwYW5lbCkKIHsKICAgICBpZiAoIShwYW5l
bCBpbiB0aGlzLnBhbmVscykpCiAgICAgICAgIHBhbmVsID0gImVsZW1lbnRzIjsKLSAgICB0aGlz
LmN1cnJlbnRQYW5lbCA9IHRoaXMucGFuZWxzW3BhbmVsXTsKKyAgICB0aGlzLnBhbmVsTWFuYWdl
ci5hY3RpdmF0ZVBhbmVsKHRoaXMucGFuZWxzW3BhbmVsXSk7CiB9CiAKIFdlYkluc3BlY3Rvci5k
b21Db250ZW50RXZlbnRGaXJlZCA9IGZ1bmN0aW9uKHRpbWUpCkBAIC0xMTc4LDYgKzk3MSw3IEBA
IFdlYkluc3BlY3Rvci5yZXNldCA9IGZ1bmN0aW9uKCkKIAogICAgIHRoaXMuY29uc29sZS5jbGVh
ck1lc3NhZ2VzKCk7CiAgICAgdGhpcy5leHRlbnNpb25TZXJ2ZXIubm90aWZ5SW5zcGVjdG9yUmVz
ZXQoKTsKKyAgICB0aGlzLnNlYXJjaENvbnRyb2xsZXIuY2FuY2VsU2VhcmNoKCk7CiB9CiAKIFdl
Ykluc3BlY3Rvci5icmluZ1RvRnJvbnQgPSBmdW5jdGlvbigpCkBAIC0xMzU0LDcgKzExNDgsNyBA
QCBXZWJJbnNwZWN0b3IuY2FuU2hvd1NvdXJjZUxpbmUgPSBmdW5jdGlvbih1cmwsIGxpbmUsIHBy
ZWZlcnJlZFBhbmVsKQogCiBXZWJJbnNwZWN0b3Iuc2hvd1NvdXJjZUxpbmUgPSBmdW5jdGlvbih1
cmwsIGxpbmUsIHByZWZlcnJlZFBhbmVsKQogewotICAgIHRoaXMuY3VycmVudFBhbmVsID0gdGhp
cy5fY2hvb3NlUGFuZWxUb1Nob3dTb3VyY2VMaW5lKHVybCwgbGluZSwgcHJlZmVycmVkUGFuZWwp
OworICAgIHRoaXMucGFuZWxNYW5hZ2VyLmFjdGl2YXRlUGFuZWwodGhpcy5fY2hvb3NlUGFuZWxU
b1Nob3dTb3VyY2VMaW5lKHVybCwgbGluZSwgcHJlZmVycmVkUGFuZWwpKTsKICAgICBpZiAoIXRo
aXMuY3VycmVudFBhbmVsKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKHRoaXMuZHJh
d2VyKQpAQCAtMTUxOCwxMTcgKzEzMTIsNiBAQCBXZWJJbnNwZWN0b3IuYWRkTWFpbkV2ZW50TGlz
dGVuZXJzID0gZnVuY3Rpb24oZG9jKQogICAgIGRvYy5hZGRFdmVudExpc3RlbmVyKCJjbGljayIs
IHRoaXMuZG9jdW1lbnRDbGljay5iaW5kKHRoaXMpLCB0cnVlKTsKIH0KIAotV2ViSW5zcGVjdG9y
Ll9zZWFyY2hGaWVsZE1hbnVhbEZvY3VzID0gZnVuY3Rpb24oZXZlbnQpCi17Ci0gICAgdGhpcy5j
dXJyZW50Rm9jdXNFbGVtZW50ID0gZXZlbnQudGFyZ2V0OwotICAgIHRoaXMuX3ByZXZpb3VzRm9j
dXNFbGVtZW50ID0gZXZlbnQudGFyZ2V0OwotfQotCi1XZWJJbnNwZWN0b3IuX3NlYXJjaEtleURv
d24gPSBmdW5jdGlvbihldmVudCkKLXsKLSAgICAvLyBFc2NhcGUgS2V5IHdpbGwgY2xlYXIgdGhl
IGZpZWxkIGFuZCBjbGVhciB0aGUgc2VhcmNoIHJlc3VsdHMKLSAgICBpZiAoZXZlbnQua2V5Q29k
ZSA9PT0gV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuS2V5cy5Fc2MuY29kZSkgewotICAg
ICAgICAvLyBJZiBmb2N1cyBiZWxvbmdzIGhlcmUgYW5kIHRleHQgaXMgZW1wdHkgLSBub3RoaW5n
IHRvIGRvLCByZXR1cm4gdW5oYW5kbGVkLgotICAgICAgICBpZiAoZXZlbnQudGFyZ2V0LnZhbHVl
ID09PSAiIiAmJiB0aGlzLmN1cnJlbnRGb2N1c0VsZW1lbnQgPT09IHRoaXMucHJldmlvdXNGb2N1
c0VsZW1lbnQpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGV2ZW50LnByZXZlbnREZWZh
dWx0KCk7Ci0gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwotICAgICAgICAvLyBXaGVu
IHNlYXJjaCB3YXMgc2VsZWN0ZWQgbWFudWFsbHkgYW5kIGlzIGN1cnJlbnRseSBibGFuaywgd2Un
ZCBsaWtlIEVzYyBzdGF5IHVuaGFuZGxlZAotICAgICAgICAvLyBhbmQgaGl0IGNvbnNvbGUgZHJh
d2VyIGhhbmRsZXIuCi0gICAgICAgIGV2ZW50LnRhcmdldC52YWx1ZSA9ICIiOwotCi0gICAgICAg
IHRoaXMucGVyZm9ybVNlYXJjaChldmVudCk7Ci0gICAgICAgIHRoaXMuY3VycmVudEZvY3VzRWxl
bWVudCA9IHRoaXMucHJldmlvdXNGb2N1c0VsZW1lbnQ7Ci0gICAgICAgIGlmICh0aGlzLmN1cnJl
bnRGb2N1c0VsZW1lbnQgPT09IGV2ZW50LnRhcmdldCkKLSAgICAgICAgICAgIHRoaXMuY3VycmVu
dEZvY3VzRWxlbWVudC5zZWxlY3QoKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQot
ICAgIGlmICghaXNFbnRlcktleShldmVudCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IC8vIFNlbGVjdCBhbGwgb2YgdGhlIHRleHQgc28gdGhlIHVzZXIgY2FuIGVhc2lseSB0eXBlIGFu
IGVudGlyZWx5IG5ldyBxdWVyeS4KLSAgICBldmVudC50YXJnZXQuc2VsZWN0KCk7Ci0KLSAgICAv
LyBPbmx5IGNhbGwgcGVyZm9ybVNlYXJjaCBpZiB0aGUgRW50ZXIga2V5IHdhcyBwcmVzc2VkLiBP
dGhlcndpc2UgdGhlIHNlYXJjaAotICAgIC8vIHBlcmZvcm1hbmNlIGlzIHBvb3IgYmVjYXVzZSBv
ZiBzZWFyY2hpbmcgb24gZXZlcnkga2V5LiBUaGUgc2VhcmNoIGZpZWxkIGhhcwotICAgIC8vIHRo
ZSBpbmNyZW1lbnRhbCBhdHRyaWJ1dGUgc2V0LCBzbyB3ZSBzdGlsbCBnZXQgaW5jcmVtZW50YWwg
c2VhcmNoZXMuCi0gICAgdGhpcy5wZXJmb3JtU2VhcmNoKGV2ZW50KTsKLQotICAgIC8vIENhbGwg
cHJldmVudERlZmF1bHQgc2luY2UgdGhpcyB3YXMgdGhlIEVudGVyIGtleS4gVGhpcyBwcmV2ZW50
cyBhICJzZWFyY2giIGV2ZW50Ci0gICAgLy8gZnJvbSBmaXJpbmcgZm9yIGtleSBkb3duLiBUaGlz
IHN0b3BzIHBlcmZvcm1TZWFyY2ggZnJvbSBiZWluZyBjYWxsZWQgdHdpY2UgaW4gYSByb3cuCi0g
ICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKLX0KLQotV2ViSW5zcGVjdG9yLnBlcmZvcm1TZWFy
Y2ggPSBmdW5jdGlvbihldmVudCkKLXsKLSAgICB2YXIgZm9yY2VTZWFyY2ggPSBldmVudC5rZXlJ
ZGVudGlmaWVyID09PSAiRW50ZXIiOwotICAgIHRoaXMuZG9QZXJmb3JtU2VhcmNoKGV2ZW50LnRh
cmdldC52YWx1ZSwgZm9yY2VTZWFyY2gsIGV2ZW50LnNoaWZ0S2V5LCBmYWxzZSk7Ci19Ci0KLVdl
Ykluc3BlY3Rvci5jYW5jZWxTZWFyY2ggPSBmdW5jdGlvbigpCi17Ci0gICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInNlYXJjaCIpLnZhbHVlID0gIiI7Ci0gICAgdGhpcy5kb1BlcmZvcm1TZWFy
Y2goIiIpOwotfQotCi1XZWJJbnNwZWN0b3IuZG9QZXJmb3JtU2VhcmNoID0gZnVuY3Rpb24ocXVl
cnksIGZvcmNlU2VhcmNoLCBpc0JhY2t3YXJkU2VhcmNoLCByZXBlYXRTZWFyY2gpCi17Ci0gICAg
dmFyIGlzU2hvcnRTZWFyY2ggPSAocXVlcnkubGVuZ3RoIDwgMyk7Ci0KLSAgICAvLyBDbGVhciBh
IGxlZnRvdmVyIHNob3J0IHNlYXJjaCBmbGFnIGR1ZSB0byBhIG5vbi1jb25mbGljdGluZyBmb3Jj
ZWQgc2VhcmNoLgotICAgIGlmIChpc1Nob3J0U2VhcmNoICYmIHRoaXMuc2hvcnRTZWFyY2hXYXNG
b3JjZWRCeUtleUV2ZW50ICYmIHRoaXMuY3VycmVudFF1ZXJ5ICE9PSBxdWVyeSkKLSAgICAgICAg
ZGVsZXRlIHRoaXMuc2hvcnRTZWFyY2hXYXNGb3JjZWRCeUtleUV2ZW50OwotCi0gICAgLy8gSW5k
aWNhdGUgdGhpcyB3YXMgYSBmb3JjZWQgc2VhcmNoIG9uIGEgc2hvcnQgcXVlcnkuCi0gICAgaWYg
KGlzU2hvcnRTZWFyY2ggJiYgZm9yY2VTZWFyY2gpCi0gICAgICAgIHRoaXMuc2hvcnRTZWFyY2hX
YXNGb3JjZWRCeUtleUV2ZW50ID0gdHJ1ZTsKLQotICAgIGlmICghcXVlcnkgfHwgIXF1ZXJ5Lmxl
bmd0aCB8fCAoIWZvcmNlU2VhcmNoICYmIGlzU2hvcnRTZWFyY2gpKSB7Ci0gICAgICAgIC8vIFBy
ZXZlbnQgY2xvYmJlcmluZyBhIHNob3J0IHNlYXJjaCBmb3JjZWQgYnkgdGhlIHVzZXIuCi0gICAg
ICAgIGlmICh0aGlzLnNob3J0U2VhcmNoV2FzRm9yY2VkQnlLZXlFdmVudCkgewotICAgICAgICAg
ICAgZGVsZXRlIHRoaXMuc2hvcnRTZWFyY2hXYXNGb3JjZWRCeUtleUV2ZW50OwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgZGVsZXRlIHRoaXMuY3VycmVudFF1ZXJ5
OwotCi0gICAgICAgIGZvciAodmFyIHBhbmVsTmFtZSBpbiB0aGlzLnBhbmVscykgewotICAgICAg
ICAgICAgdmFyIHBhbmVsID0gdGhpcy5wYW5lbHNbcGFuZWxOYW1lXTsKLSAgICAgICAgICAgIHZh
ciBoYWRDdXJyZW50UXVlcnkgPSAhIXBhbmVsLmN1cnJlbnRRdWVyeTsKLSAgICAgICAgICAgIGRl
bGV0ZSBwYW5lbC5jdXJyZW50UXVlcnk7Ci0gICAgICAgICAgICBpZiAoaGFkQ3VycmVudFF1ZXJ5
ICYmIHBhbmVsLnNlYXJjaENhbmNlbGVkKQotICAgICAgICAgICAgICAgIHBhbmVsLnNlYXJjaENh
bmNlbGVkKCk7Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLnVwZGF0ZVNlYXJjaE1hdGNoZXND
b3VudCgpOwotCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIXJlcGVhdFNlYXJj
aCAmJiBxdWVyeSA9PT0gdGhpcy5jdXJyZW50UGFuZWwuY3VycmVudFF1ZXJ5ICYmIHRoaXMuY3Vy
cmVudFBhbmVsLmN1cnJlbnRRdWVyeSA9PT0gdGhpcy5jdXJyZW50UXVlcnkpIHsKLSAgICAgICAg
Ly8gV2hlbiB0aGlzIGlzIHRoZSBzYW1lIHF1ZXJ5IGFuZCBhIGZvcmNlZCBzZWFyY2gsIGp1bXAg
dG8gdGhlIG5leHQKLSAgICAgICAgLy8gc2VhcmNoIHJlc3VsdCBmb3IgYSBnb29kIHVzZXIgZXhw
ZXJpZW5jZS4KLSAgICAgICAgaWYgKGZvcmNlU2VhcmNoKSB7Ci0gICAgICAgICAgICBpZiAoIWlz
QmFja3dhcmRTZWFyY2ggJiYgdGhpcy5jdXJyZW50UGFuZWwuanVtcFRvTmV4dFNlYXJjaFJlc3Vs
dCkKLSAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRQYW5lbC5qdW1wVG9OZXh0U2VhcmNoUmVz
dWx0KCk7Ci0gICAgICAgICAgICBlbHNlIGlmIChpc0JhY2t3YXJkU2VhcmNoICYmIHRoaXMuY3Vy
cmVudFBhbmVsLmp1bXBUb1ByZXZpb3VzU2VhcmNoUmVzdWx0KQotICAgICAgICAgICAgICAgIHRo
aXMuY3VycmVudFBhbmVsLmp1bXBUb1ByZXZpb3VzU2VhcmNoUmVzdWx0KCk7Ci0gICAgICAgIH0K
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHRoaXMuY3VycmVudFF1ZXJ5ID0gcXVlcnk7
Ci0KLSAgICB0aGlzLnVwZGF0ZVNlYXJjaE1hdGNoZXNDb3VudCgpOwotCi0gICAgaWYgKCF0aGlz
LmN1cnJlbnRQYW5lbC5wZXJmb3JtU2VhcmNoKQotICAgICAgICByZXR1cm47Ci0KLSAgICB0aGlz
LmN1cnJlbnRQYW5lbC5jdXJyZW50UXVlcnkgPSBxdWVyeTsKLSAgICB0aGlzLmN1cnJlbnRQYW5l
bC5wZXJmb3JtU2VhcmNoKHF1ZXJ5KTsKLX0KLQogV2ViSW5zcGVjdG9yLmZyb250ZW5kUmV1c2Vk
ID0gZnVuY3Rpb24oKQogewogICAgIHRoaXMubmV0d29ya01hbmFnZXIucmVzZXQoKTsKQEAgLTE2
NDAsMzQgKzEzMjMsNiBAQCBXZWJJbnNwZWN0b3IuYWRkTm9kZXNUb1NlYXJjaFJlc3VsdCA9IGZ1
bmN0aW9uKG5vZGVJZHMpCiAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5lbGVtZW50cy5hZGROb2Rl
c1RvU2VhcmNoUmVzdWx0KG5vZGVJZHMpOwogfQogCi1XZWJJbnNwZWN0b3IudXBkYXRlU2VhcmNo
TWF0Y2hlc0NvdW50ID0gZnVuY3Rpb24obWF0Y2hlcywgcGFuZWwpCi17Ci0gICAgaWYgKCFwYW5l
bCkKLSAgICAgICAgcGFuZWwgPSB0aGlzLmN1cnJlbnRQYW5lbDsKLQotICAgIHBhbmVsLmN1cnJl
bnRTZWFyY2hNYXRjaGVzID0gbWF0Y2hlczsKLQotICAgIGlmIChwYW5lbCAhPT0gdGhpcy5jdXJy
ZW50UGFuZWwpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICghdGhpcy5jdXJyZW50UGFuZWwu
Y3VycmVudFF1ZXJ5KSB7Ci0gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzZWFyY2gt
cmVzdWx0cy1tYXRjaGVzIikuYWRkU3R5bGVDbGFzcygiaGlkZGVuIik7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBpZiAobWF0Y2hlcykgewotICAgICAgICBpZiAobWF0Y2hlcyA9PT0g
MSkKLSAgICAgICAgICAgIHZhciBtYXRjaGVzU3RyaW5nID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCIxIG1hdGNoIik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHZhciBtYXRjaGVzU3RyaW5n
ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIlZCBtYXRjaGVzIiwgbWF0Y2hlcyk7Ci0gICAgfSBl
bHNlCi0gICAgICAgIHZhciBtYXRjaGVzU3RyaW5nID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJO
b3QgRm91bmQiKTsKLQotICAgIHZhciBtYXRjaGVzVG9vbGJhckVsZW1lbnQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgic2VhcmNoLXJlc3VsdHMtbWF0Y2hlcyIpOwotICAgIG1hdGNoZXNUb29s
YmFyRWxlbWVudC5yZW1vdmVTdHlsZUNsYXNzKCJoaWRkZW4iKTsKLSAgICBtYXRjaGVzVG9vbGJh
ckVsZW1lbnQudGV4dENvbnRlbnQgPSBtYXRjaGVzU3RyaW5nOwotfQotCiBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcgPSBmdW5jdGlvbihzdHJpbmcpCiB7CiAgICAgaWYgKHdpbmRvdy5sb2NhbGl6ZWRT
dHJpbmdzICYmIHN0cmluZyBpbiB3aW5kb3cubG9jYWxpemVkU3RyaW5ncykKQEAgLTE4NDAsMTIg
KzE0OTUsNiBAQCBXZWJJbnNwZWN0b3Iuc3RhcnRFZGl0aW5nID0gZnVuY3Rpb24oZWxlbWVudCwg
Y29uZmlnKQogICAgIH07CiB9CiAKLVdlYkluc3BlY3Rvci5fdG9vbGJhckl0ZW1DbGlja2VkID0g
ZnVuY3Rpb24oZXZlbnQpCi17Ci0gICAgdmFyIHRvb2xiYXJJdGVtID0gZXZlbnQuY3VycmVudFRh
cmdldDsKLSAgICB0aGlzLmN1cnJlbnRQYW5lbCA9IHRvb2xiYXJJdGVtLnBhbmVsOwotfQotCiAv
LyBUaGlzIHRhYmxlIG1hcHMgTUlNRSB0eXBlcyB0byB0aGUgUmVzb3VyY2UuVHlwZXMgd2hpY2gg
YXJlIHZhbGlkIGZvciB0aGVtLgogLy8gVGhlIGZvbGxvd2luZyBsaW5lOgogLy8gICAgInRleHQv
aHRtbCI6ICAgICAgICAgICAgICAgIHswOiAxfSwKQEAgLTE4ODIsNDYgKzE1MzEsMyBAQCBXZWJJ
bnNwZWN0b3IuTUlNRVR5cGVzID0gewogICAgICJ0ZXh0L2pzY3JpcHQiOiAgICAgICAgICAgICAg
ICB7NDogdHJ1ZX0sCiAgICAgInRleHQvbGl2ZXNjcmlwdCI6ICAgICAgICAgICAgIHs0OiB0cnVl
fSwKIH0KLQotV2ViSW5zcGVjdG9yLlBhbmVsSGlzdG9yeSA9IGZ1bmN0aW9uKCkKLXsKLSAgICB0
aGlzLl9oaXN0b3J5ID0gW107Ci0gICAgdGhpcy5faGlzdG9yeUl0ZXJhdG9yID0gLTE7Ci19Ci0K
LVdlYkluc3BlY3Rvci5QYW5lbEhpc3RvcnkucHJvdG90eXBlID0gewotICAgIGNhbkdvQmFjazog
ZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2hpc3RvcnlJdGVyYXRvciA+
IDA7Ci0gICAgfSwKLQotICAgIGdvQmFjazogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhp
cy5faW5IaXN0b3J5ID0gdHJ1ZTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLmN1cnJlbnRQYW5lbCA9
IFdlYkluc3BlY3Rvci5wYW5lbHNbdGhpcy5faGlzdG9yeVstLXRoaXMuX2hpc3RvcnlJdGVyYXRv
cl1dOwotICAgICAgICBkZWxldGUgdGhpcy5faW5IaXN0b3J5OwotICAgIH0sCi0KLSAgICBjYW5H
b0ZvcndhcmQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9oaXN0b3J5
SXRlcmF0b3IgPCB0aGlzLl9oaXN0b3J5Lmxlbmd0aCAtIDE7Ci0gICAgfSwKLQotICAgIGdvRm9y
d2FyZDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhpcy5faW5IaXN0b3J5ID0gdHJ1ZTsK
LSAgICAgICAgV2ViSW5zcGVjdG9yLmN1cnJlbnRQYW5lbCA9IFdlYkluc3BlY3Rvci5wYW5lbHNb
dGhpcy5faGlzdG9yeVsrK3RoaXMuX2hpc3RvcnlJdGVyYXRvcl1dOwotICAgICAgICBkZWxldGUg
dGhpcy5faW5IaXN0b3J5OwotICAgIH0sCi0KLSAgICBzZXRQYW5lbDogZnVuY3Rpb24ocGFuZWxO
YW1lKQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX2luSGlzdG9yeSkKLSAgICAgICAgICAgIHJl
dHVybjsKLQotICAgICAgICB0aGlzLl9oaXN0b3J5LnNwbGljZSh0aGlzLl9oaXN0b3J5SXRlcmF0
b3IgKyAxLCB0aGlzLl9oaXN0b3J5Lmxlbmd0aCAtIHRoaXMuX2hpc3RvcnlJdGVyYXRvciAtIDEp
OwotICAgICAgICBpZiAoIXRoaXMuX2hpc3RvcnkubGVuZ3RoIHx8IHRoaXMuX2hpc3RvcnlbdGhp
cy5faGlzdG9yeS5sZW5ndGggLSAxXSAhPT0gcGFuZWxOYW1lKQotICAgICAgICAgICAgdGhpcy5f
aGlzdG9yeS5wdXNoKHBhbmVsTmFtZSk7Ci0gICAgICAgIHRoaXMuX2hpc3RvcnlJdGVyYXRvciA9
IHRoaXMuX2hpc3RvcnkubGVuZ3RoIC0gMTsKLSAgICB9Ci19Cg==
</data>
<flag name="review"
          id="74929"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>83183</attachid>
            <date>2011-02-21 10:36:29 -0800</date>
            <delta_ts>2011-02-21 10:38:59 -0800</delta_ts>
            <desc>patch</desc>
            <filename>toolbar-refactoring3</filename>
            <type>text/plain</type>
            <size>18039</size>
            <attacher name="Andrey Kosyakov">caseq</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiMGQwMDQ5Li4xOGY4Zjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTgg
QEAKKzIwMTEtMDItMjEgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBwcm92aWRlIGEgYnV0dG9uIHRvIGV4cGFuZCBpbnNwZWN0b3IgdG9vbGJhciB3aGVuIG5v
dCBhbGwgcGFuZWwgYnV0dG9ucyBmaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTU0NjcxCisKKyAgICAgICAgRmFjdG9yZWQgdG9vbGJhciBsb2dpYyBv
dXQgb2YgaW5zcGVjdG9yLmpzCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICog
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250
LWVuZC9FeHRlbnNpb25TZXJ2ZXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRXh0ZW5zaW9u
U2VydmVyLnByb3RvdHlwZS5fb25DcmVhdGVQYW5lbCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9QYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5QYW5lbC5wcm90b3R5cGUu
Z2V0IHRvb2xiYXJJdGVtKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5x
cmM6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzOgorICAgICAg
ICAoI3Rvb2xiYXIpOgorICAgICAgICAoLnRvb2xiYXItaXRlbSk6CisgICAgICAgICgudG9vbGJh
ci1pdGVtLnRvZ2dsZWFibGUpOgorICAgICAgICAoLnRvb2xiYXItaXRlbS50b2dnbGVhYmxlLnRv
Z2dsZWQtb24pOgorICAgICAgICAoI3Rvb2xiYXItZHJvcGRvd24gLnRvb2xiYXItaWNvbik6Cisg
ICAgICAgICgjdG9vbGJhci1kcm9wZG93biAudG9vbGJhci1sYWJlbCk6CisgICAgICAgICgjdG9v
bGJhci1jb250cm9scyk6CisgICAgICAgICgjdG9vbGJhci1kcm9wZG93bi1hcnJvdyk6CisgICAg
ICAgIChib2R5LmF0dGFjaGVkICN0b29sYmFyLWRyb3Bkb3duLWFycm93KToKKyAgICAgICAgKCN0
b29sYmFyLWRyb3Bkb3duLWFycm93LmRyb3Bkb3duLXZpc2libGUpOgorICAgICAgICAoI3Rvb2xi
YXItZHJvcGRvd24tYXJyb3c6aG92ZXIpOgorICAgICAgICAoI3Rvb2xiYXItZHJvcGRvd24tYXJy
b3c6YWN0aXZlKToKKyAgICAgICAgKCN0b29sYmFyLWRyb3Bkb3duKToKKyAgICAgICAgKGJvZHku
ZGV0YWNoZWQucGxhdGZvcm0tbWFjLXNub3dsZW9wYXJkICN0b29sYmFyLWRyb3Bkb3duKToKKyAg
ICAgICAgKCN0b29sYmFyLWRyb3Bkb3duIC5zY3JvbGxhYmxlLWNvbnRlbnQpOgorICAgICAgICAo
I3Rvb2xiYXItZHJvcGRvd24gLnRvb2xiYXItaXRlbSk6CisgICAgICAgICgjdG9vbGJhci1kcm9w
ZG93biAudG9vbGJhci1pdGVtLnRvZ2dsZWFibGUudG9nZ2xlZC1vbik6CisgICAgICAgICgjdG9v
bGJhci1kcm9wZG93biAudG9vbGJhci1pdGVtOmhvdmVyKToKKyAgICAgICAgKCN0b29sYmFyLWRy
b3Bkb3duIC50b29sYmFyLWl0ZW0udG9nZ2xlYWJsZS50b2dnbGVkLW9uOmhvdmVyKToKKyAgICAg
ICAgKCN0b29sYmFyLWRyb3Bkb3duIC50b29sYmFyLWl0ZW06YWN0aXZlIC50b29sYmFyLWljb24p
OgorICAgICAgICAoLnNjcm9sbGFibGUtY29udGVudCk6CisgICAgICAgICguc2Nyb2xsYWJsZS1j
b250ZW50Ojotd2Via2l0LXNjcm9sbGJhcik6CisgICAgICAgICguc2Nyb2xsYWJsZS1jb250ZW50
Ojotd2Via2l0LXJlc2l6ZXIpOgorICAgICAgICAoLnNjcm9sbGFibGUtY29udGVudDo6LXdlYmtp
dC1zY3JvbGxiYXItdGh1bWI6dmVydGljYWwpOgorICAgICAgICAoLnNjcm9sbGFibGUtY29udGVu
dDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6dmVydGljYWw6YWN0aXZlKToKKyAgICAgICAgKC5z
Y3JvbGxhYmxlLWNvbnRlbnQ6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrOnZlcnRpY2FsKToKKyAg
ICAgICAgKC50b29sYmFyLXNlYXJjaC1pdGVtKToKKyAgICAgICAgKCNzZWFyY2gpOgorICAgICAg
ICAoYm9keS5hdHRhY2hlZCAjc2VhcmNoKToKKyAgICAgICAgKCNzZWFyY2gtcmVzdWx0cy1tYXRj
aGVzKToKKyAgICAgICAgKCNjbG9zZS1idXR0b24tbGVmdCwgI2Nsb3NlLWJ1dHRvbi1yaWdodCk6
CisgICAgICAgICguY2xvc2UtbGVmdCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9p
bnNwZWN0b3IuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5q
czoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5zZXQgYXR0YWNoZWQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLmFkZFBhbmVsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci53aW5kb3dSZXNpemUpOgor
CiAyMDExLTAyLTA4ICBBbnRvbiBNdWhpbiAgPGFudG9ubUBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoIGFuZCBBbGV4ZXkgUHJvc2t1cnlha292LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCmluZGV4IGY3ZWE5MDYuLjA2NGQ3NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTQ3OTgs
NiArNDc5OCw3IEBACiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZU92
ZXJ2aWV3UGFuZS5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGlu
ZUdyaWQuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVQYW5l
bC5qcycsCisgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9Ub29sYmFyLmpzJywKICAg
ICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL1RvcERvd25Qcm9maWxlRGF0YUdyaWRUcmVl
LmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL3RyZWVvdXRsaW5lLmpzJywK
ICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL3V0aWxpdGllcy5qcycsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IGYzMTAyODguLmY1
NGMyNjUgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CkBAIC02NjIwNSw2ICs2NjIwNSwxMCBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxl
CisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxUb29sYmFyLmpzIgor
CQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5z
cGVjdG9yXGZyb250LWVuZFxUb3BEb3duUHJvZmlsZURhdGFHcmlkVHJlZS5qcyIKIAkJCQkJPgog
CQkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvRXh0ZW5zaW9uU2VydmVyLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9FeHRlbnNpb25TZXJ2ZXIuanMKaW5kZXggYmEzMGY3My4uY2EyZTg1NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25TZXJ2ZXIuanMKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25TZXJ2ZXIuanMK
QEAgLTE3NiwxMyArMTc2LDEyIEBAIFdlYkluc3BlY3Rvci5FeHRlbnNpb25TZXJ2ZXIucHJvdG90
eXBlID0gewogICAgICAgICAvLyBzaG91bGRuJ3QgYmUgaGl0IHVubGVzcyBzb21lb25lIGlzIGJ5
cGFzc2luZyB0aGUgQVBJLgogICAgICAgICBpZiAoaWQgaW4gdGhpcy5fY2xpZW50T2JqZWN0cyB8
fCBpZCBpbiBXZWJJbnNwZWN0b3IucGFuZWxzKQogICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3N0
YXR1cy5FX0VYSVNUUyhpZCk7CisKICAgICAgICAgdmFyIHBhbmVsID0gbmV3IFdlYkluc3BlY3Rv
ci5FeHRlbnNpb25QYW5lbChpZCwgbWVzc2FnZS50aXRsZSwgbWVzc2FnZS5pY29uKTsKICAgICAg
ICAgdGhpcy5fY2xpZW50T2JqZWN0c1tpZF0gPSBwYW5lbDsKLQotICAgICAgICB2YXIgdG9vbGJh
ckVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidG9vbGJhciIpOwotICAgICAgICB2
YXIgbGFzdFRvb2xiYXJJdGVtID0gV2ViSW5zcGVjdG9yLnBhbmVsT3JkZXJbV2ViSW5zcGVjdG9y
LnBhbmVsT3JkZXIubGVuZ3RoIC0gMV0udG9vbGJhckl0ZW07Ci0gICAgICAgIFdlYkluc3BlY3Rv
ci5hZGRQYW5lbFRvb2xiYXJJY29uKHRvb2xiYXJFbGVtZW50LCBwYW5lbCwgbGFzdFRvb2xiYXJJ
dGVtKTsKICAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVsc1tpZF0gPSBwYW5lbDsKKyAgICAgICAg
V2ViSW5zcGVjdG9yLmFkZFBhbmVsKHBhbmVsKTsKKwogICAgICAgICB2YXIgaWZyYW1lID0gdGhp
cy5fY3JlYXRlQ2xpZW50SWZyYW1lKHBhbmVsLmVsZW1lbnQsIG1lc3NhZ2UudXJsKTsKICAgICAg
ICAgaWZyYW1lLnN0eWxlLmhlaWdodCA9ICIxMDAlIjsKICAgICAgICAgcmV0dXJuIHRoaXMuX3N0
YXR1cy5PSygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9QYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUGFuZWwuanMK
aW5kZXggNGM0MmE2MC4uNzU4YzU2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9QYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1BhbmVsLmpzCkBAIC00NiwyOSArNDYsNyBAQCBXZWJJbnNwZWN0b3IuUGFuZWwucHJv
dG90eXBlID0gewogICAgICAgICBpZiAodGhpcy5fdG9vbGJhckl0ZW0pCiAgICAgICAgICAgICBy
ZXR1cm4gdGhpcy5fdG9vbGJhckl0ZW07CiAKLSAgICAgICAgLy8gU2FtcGxlIHRvb2xiYXIgaXRl
bSBhcyBtYXJrdXA6Ci0gICAgICAgIC8vIDxidXR0b24gY2xhc3M9InRvb2xiYXItaXRlbSByZXNv
dXJjZXMgdG9nZ2xlYWJsZSI+Ci0gICAgICAgIC8vIDxkaXYgY2xhc3M9InRvb2xiYXItaWNvbiI+
PC9kaXY+Ci0gICAgICAgIC8vIDxkaXYgY2xhc3M9InRvb2xiYXItbGFiZWwiPlJlc291cmNlczwv
ZGl2PgotICAgICAgICAvLyA8L2J1dHRvbj4KLQotICAgICAgICB0aGlzLl90b29sYmFySXRlbSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIpOwotICAgICAgICB0aGlzLl90b29sYmFy
SXRlbS5jbGFzc05hbWUgPSAidG9vbGJhci1pdGVtIHRvZ2dsZWFibGUiOwotICAgICAgICB0aGlz
Ll90b29sYmFySXRlbS5wYW5lbCA9IHRoaXM7Ci0KLSAgICAgICAgdGhpcy5fdG9vbGJhckl0ZW0u
YWRkU3R5bGVDbGFzcyh0aGlzLl9wYW5lbE5hbWUpOwotCi0gICAgICAgIHZhciBpY29uRWxlbWVu
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICBpY29uRWxlbWVudC5j
bGFzc05hbWUgPSAidG9vbGJhci1pY29uIjsKLSAgICAgICAgdGhpcy5fdG9vbGJhckl0ZW0uYXBw
ZW5kQ2hpbGQoaWNvbkVsZW1lbnQpOwotCi0gICAgICAgIGlmICgidG9vbGJhckl0ZW1MYWJlbCIg
aW4gdGhpcykgewotICAgICAgICAgICAgdmFyIGxhYmVsRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICAgICAgbGFiZWxFbGVtZW50LmNsYXNzTmFtZSA9ICJ0
b29sYmFyLWxhYmVsIjsKLSAgICAgICAgICAgIGxhYmVsRWxlbWVudC50ZXh0Q29udGVudCA9IHRo
aXMudG9vbGJhckl0ZW1MYWJlbDsKLSAgICAgICAgICAgIHRoaXMuX3Rvb2xiYXJJdGVtLmFwcGVu
ZENoaWxkKGxhYmVsRWxlbWVudCk7Ci0gICAgICAgIH0KLQorICAgICAgICB0aGlzLl90b29sYmFy
SXRlbSA9IFdlYkluc3BlY3Rvci5Ub29sYmFyLmNyZWF0ZVBhbmVsVG9vbGJhckl0ZW0odGhpcyk7
CiAgICAgICAgIHJldHVybiB0aGlzLl90b29sYmFySXRlbTsKICAgICB9LAogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKaW5kZXggYmJkZmY5Yy4uYmJm
YmVjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJL
aXQucXJjCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFy
YwpAQCAtMTExLDYgKzExMSw3IEBACiAgICAgPGZpbGU+VGltZWxpbmVHcmlkLmpzPC9maWxlPgog
ICAgIDxmaWxlPlRpbWVsaW5lT3ZlcnZpZXdQYW5lLmpzPC9maWxlPgogICAgIDxmaWxlPlRpbWVs
aW5lUGFuZWwuanM8L2ZpbGU+CisgICAgPGZpbGU+VG9vbGJhci5qczwvZmlsZT4KICAgICA8Zmls
ZT5Ub3BEb3duUHJvZmlsZURhdGFHcmlkVHJlZS5qczwvZmlsZT4KICAgICA8ZmlsZT50cmVlb3V0
bGluZS5qczwvZmlsZT4KICAgICA8ZmlsZT51dGlsaXRpZXMuanM8L2ZpbGU+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MKaW5kZXggYzk5Mjgw
Ni4uYTdiZDNiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9pbnNwZWN0b3IuY3NzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
aW5zcGVjdG9yLmNzcwpAQCAtNzYsNyArNzYsNiBAQCBpbWcgewogICAgIGxlZnQ6IDA7CiAgICAg
cmlnaHQ6IDA7CiAgICAgaGVpZ2h0OiA1NnB4OwotICAgIGRpc3BsYXk6IC13ZWJraXQtYm94Owog
ICAgIHBhZGRpbmc6IDAgNXB4OwogICAgIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtZ3JhZGll
bnQobGluZWFyLCBsZWZ0IHRvcCwgbGVmdCBib3R0b20sIGZyb20ocmdiKDE5MSwgMTkxLCAxOTEp
KSwgdG8ocmdiKDE1MSwgMTUxLCAxNTEpKSk7CiAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlk
IHJnYig4MCwgODAsIDgwKTsKQEAgLTExMSwzMiArMTEwLDIzIEBAIGJvZHkuYXR0YWNoZWQuaW5h
Y3RpdmUgI3Rvb2xiYXIgewogfQogCiAudG9vbGJhci1pdGVtIHsKLSAgICBkaXNwbGF5OiAtd2Vi
a2l0LWJveDsKLSAgICBwYWRkaW5nOiA0cHggNnB4OwogICAgIG1hcmdpbjogMDsKKyAgICBwYWRk
aW5nOiAwIDZweDsKICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICAgICBib3Jk
ZXItc3R5bGU6IG5vbmU7CiAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsKLSAgICAtd2Vi
a2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsOwotICAgIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7
Ci0gICAgLXdlYmtpdC1ib3gtcGFjazogZW5kOworfQorCisudG9vbGJhci1pdGVtLnRvZ2dsZWFi
bGUgeworICAgIHBhZGRpbmctdG9wOiA0cHg7CiB9CiAKIC50b29sYmFyLWl0ZW0udG9nZ2xlYWJs
ZS50b2dnbGVkLW9uIHsKICAgICBib3JkZXItd2lkdGg6IDAgMnB4IDAgMnB4OwotICAgIHBhZGRp
bmc6IDRweCA0cHg7CisgICAgcGFkZGluZzogNHB4IDRweCAwIDRweDsKICAgICAtd2Via2l0LWJv
cmRlci1pbWFnZTogdXJsKEltYWdlcy90b29sYmFySXRlbVNlbGVjdGVkLnBuZykgMCAyIDAgMjsK
IH0KIAotLnRvb2xiYXItaXRlbS5mbGV4YWJsZS1zcGFjZSB7Ci0gICAgLXdlYmtpdC1ib3gtZmxl
eDogMTsKLSAgICB2aXNpYmlsaXR5OiBoaWRkZW47Ci19Ci0KLS50b29sYmFyLWl0ZW0gaW5wdXQg
ewotICAgIG1hcmdpbi1ib3R0b206IDhweDsKLX0KLQogLnRvb2xiYXItaWNvbiB7CiAgICAgZGlz
cGxheTogaW5saW5lLWJsb2NrOwogICAgIHdpZHRoOiAzMnB4OwpAQCAtMTQ0LDcgKzEzNCw4IEBA
IGJvZHkuYXR0YWNoZWQuaW5hY3RpdmUgI3Rvb2xiYXIgewogICAgIC13ZWJraXQtYmFja2dyb3Vu
ZC1zaXplOiAxMDAlIGF1dG87CiB9CiAKLWJvZHkuYXR0YWNoZWQgLnRvb2xiYXItaWNvbiB7Citi
b2R5LmF0dGFjaGVkIC50b29sYmFyLWljb24sCisjdG9vbGJhci1kcm9wZG93biAudG9vbGJhci1p
Y29uIHsKICAgICB3aWR0aDogMjRweDsKICAgICBoZWlnaHQ6IDI0cHg7CiAgICAgdmVydGljYWwt
YWxpZ246IG1pZGRsZTsKQEAgLTE2OCw5ICsxNTksOSBAQCBib2R5LmF0dGFjaGVkIC50b29sYmFy
LWl0ZW06YWN0aXZlIC50b29sYmFyLWljb24gewogICAgIHRleHQtc2hhZG93OiBub25lOwogfQog
Ci1ib2R5LmF0dGFjaGVkIC50b29sYmFyLWxhYmVsIHsKK2JvZHkuYXR0YWNoZWQgLnRvb2xiYXIt
bGFiZWwsCisjdG9vbGJhci1kcm9wZG93biAudG9vbGJhci1sYWJlbCB7CiAgICAgZGlzcGxheTog
aW5saW5lLWJsb2NrOwotICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgICAgbWFyZ2luLWxl
ZnQ6IDNweDsKIH0KIApAQCAtMTc4LDI1ICsxNjksMTQ1IEBAIGJvZHkuYXR0YWNoZWQgI3NlYXJj
aC10b29sYmFyLWxhYmVsIHsKICAgICBkaXNwbGF5OiBub25lOwogfQogCisjdG9vbGJhci1jb250
cm9scyB7CisgICAgZmxvYXQ6IHJpZ2h0OworICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OworICAg
IC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7CisgICAgaGVpZ2h0OiAxMDAlOworfQorCisjdG9v
bGJhci1kcm9wZG93bi1hcnJvdyB7CisgICAgZm9udC1zaXplOiAxNnB4OworICAgIGZvbnQtd2Vp
Z2h0OiBib2xkOworICAgIGJvcmRlcjogMDsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3Bh
cmVudDsKKyAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDVweDsKKyAgICB0ZXh0LXNoYWRvdzog
bm9uZTsKK30KKworYm9keS5hdHRhY2hlZCAjdG9vbGJhci1kcm9wZG93bi1hcnJvdyB7CisgICAg
Zm9udC1zaXplOiAxNHB4OworICAgIHBhZGRpbmctYm90dG9tOiA0cHg7Cit9CisKKyN0b29sYmFy
LWRyb3Bkb3duLWFycm93LmRyb3Bkb3duLXZpc2libGUgeworICAgIGJhY2tncm91bmQtaW1hZ2U6
IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCBsZWZ0IHRvcCwgbGVmdCBib3R0b20sIGZyb20ocmdi
YSgyNTEsIDI1MSwgMjUxLCAwLjkpKSwgdG8ocmdiYSgyMzEsIDIzMSwgMjMxLCAwLjkpKSk7Cit9
CisKKyN0b29sYmFyLWRyb3Bkb3duLWFycm93OmhvdmVyIHsKKyAgICBiYWNrZ3JvdW5kLWltYWdl
OiAtd2Via2l0LWdyYWRpZW50KGxpbmVhciwgbGVmdCB0b3AsIGxlZnQgYm90dG9tLCBmcm9tKHJn
YmEoMTkxLCAxOTEsIDE5MSwgMC43KSksIHRvKHJnYmEoMTcxLCAxNzEsIDE3MSwgMC41KSkpOwor
fQorCisjdG9vbGJhci1kcm9wZG93bi1hcnJvdzphY3RpdmUgeworICAgIGJhY2tncm91bmQtaW1h
Z2U6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCBsZWZ0IHRvcCwgbGVmdCBib3R0b20sIGZyb20o
cmdiYSgxMTEsIDExMSwgMTExLCAwLjgpKSwgdG8ocmdiYSg5MSwgOTEsIDkxLCAwLjgpKSk7Cit9
CisKKyN0b29sYmFyLWRyb3Bkb3duIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgei1p
bmRleDogMTAwMDsKKyAgICAtd2Via2l0LWJveC1zaGFkb3c6IDNweCAzcHggM3B4IHJnYmEoMCwg
MCwgMCwgMC40KTsKKyAgICBib3JkZXI6IDFweCBzb2xpZCByZ2IoMTI4LCAxMjgsIDEyOCk7Cisg
ICAgcGFkZGluZzogNHB4OworICAgIGJhY2tncm91bmQtY29sb3I6IGluaGVyaXQ7CisgICAgYmFj
a2dyb3VuZC1pbWFnZTogaW5oZXJpdDsKK30KKworYm9keS5kZXRhY2hlZC5wbGF0Zm9ybS1tYWMt
bGVvcGFyZCAjdG9vbGJhci1kcm9wZG93biwKK2JvZHkuZGV0YWNoZWQucGxhdGZvcm0tbWFjLXNu
b3dsZW9wYXJkICN0b29sYmFyLWRyb3Bkb3duIHsKKyAgICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Vi
a2l0LWdyYWRpZW50KGxpbmVhciwgbGVmdCB0b3AsIGxlZnQgYm90dG9tLCBmcm9tKHJnYigxOTEs
IDE5MSwgMTkxKSksIHRvKHJnYigxNTEsIDE1MSwgMTUxKSkpOworfQorCisjdG9vbGJhci1kcm9w
ZG93biAuc2Nyb2xsYWJsZS1jb250ZW50IHsKKyAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKKyAg
ICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsOworICAgIC13ZWJraXQtYm94LWFsaWduOiBz
dGFydDsKK30KKworI3Rvb2xiYXItZHJvcGRvd24gLnRvb2xiYXItaXRlbSB7CisgICAgZGlzcGxh
eTogLXdlYmtpdC1ib3g7CisgICAgLXdlYmtpdC1ib3gtb3JpZW50OiBob3Jpem9udGFsOworICAg
IG1hcmdpbjogMHB4IDJweDsKKyAgICBwYWRkaW5nOiA0cHg7CisgICAgd2lkdGg6IDEwMCU7Cisg
ICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwKTsKK30KKworI3Rvb2xiYXItZHJv
cGRvd24gLnRvb2xiYXItaXRlbS50b2dnbGVhYmxlLnRvZ2dsZWQtb24geworICAgIGJvcmRlcjog
MXB4IHNvbGlkIHJnYmEoMTAwLCAxMDAsIDEyMCwgMC40KTsKKyAgICAtd2Via2l0LWJvcmRlci1p
bWFnZTogbm9uZTsKKyAgICBiYWNrZ3JvdW5kOiAtd2Via2l0LWdyYWRpZW50KGxpbmVhciwgbGVm
dCB0b3AsIGxlZnQgYm90dG9tLCBmcm9tKHJnYmEoMTI4LCAxMjgsIDEyOCwgMC42KSksIHRvKHJn
YmEoMTI4LCAxMjgsIDEyOCwgMC42KSksIGNvbG9yLXN0b3AoMjAlLCByZ2JhKDE1OCwgMTU4LCAx
NTgsIDAuMikpLCBjb2xvci1zdG9wKDgwJSwgcmdiYSgxNTgsIDE1OCwgMTU4LCAwLjIpKSk7Cit9
CisKKyN0b29sYmFyLWRyb3Bkb3duIC50b29sYmFyLWl0ZW06aG92ZXIgeworICAgIC13ZWJraXQt
Ym9yZGVyLWltYWdlOiBub25lOworICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMTAwLCAxMDAs
IDEyMCwgMC44KTsKK30KKworI3Rvb2xiYXItZHJvcGRvd24gLnRvb2xiYXItaXRlbS50b2dnbGVh
YmxlLnRvZ2dsZWQtb246aG92ZXIgeworICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMTAwLCAx
MDAsIDEyMCwgMSk7Cit9CisKKyN0b29sYmFyLWRyb3Bkb3duIC50b29sYmFyLWljb24geworICAg
IG1hcmdpbi1yaWdodDogMC41ZW07Cit9CisKKyN0b29sYmFyLWRyb3Bkb3duIC50b29sYmFyLWl0
ZW06YWN0aXZlIC50b29sYmFyLWljb24geworICAgIGJhY2tncm91bmQtcG9zaXRpb246IDAgMjRw
eDsKK30KKworLnNjcm9sbGFibGUtY29udGVudCB7CisgICAgcG9zaXRpb246IHN0YXRpYzsKKyAg
ICBoZWlnaHQ6IDEwMCU7CisgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICB3aWR0aDogMTAwJTsK
KyAgICBtYXJnaW4tcmlnaHQ6IDEycHg7CisgICAgcGFkZGluZy1yaWdodDogM3B4OworfQorCisu
c2Nyb2xsYWJsZS1jb250ZW50Ojotd2Via2l0LXNjcm9sbGJhciB7CisgICAgd2lkdGg6IDExcHg7
Cit9CisKKy5zY3JvbGxhYmxlLWNvbnRlbnQ6Oi13ZWJraXQtc2Nyb2xsYmFyLWNvcm5lciwKKy5z
Y3JvbGxhYmxlLWNvbnRlbnQ6Oi13ZWJraXQtcmVzaXplciB7CisgICAgZGlzcGxheTogbm9uZTsK
K30KKworLnNjcm9sbGFibGUtY29udGVudDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6dmVydGlj
YWwgeworICAgIGJhY2tncm91bmQ6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCBsZWZ0IHRvcCwg
cmlnaHQgdG9wLCBmcm9tKHJnYigxOTIsIDE5MiwgMTkyKSksIHRvKHJnYigxOTIsIDE5MiwgMTky
KSksIGNvbG9yLXN0b3AoNDAlLCByZ2IoMjE0LCAyMTQsIDIxNCkpKTsKKyAgICBib3JkZXItcmFk
aXVzOiA1cHg7CisgICAgbWluLWhlaWdodDogMjBweDsKK30KKworLnNjcm9sbGFibGUtY29udGVu
dDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6dmVydGljYWw6aG92ZXIsCisuc2Nyb2xsYWJsZS1j
b250ZW50Ojotd2Via2l0LXNjcm9sbGJhci10aHVtYjp2ZXJ0aWNhbDphY3RpdmUgeworICAgIGJh
Y2tncm91bmQ6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCBsZWZ0IHRvcCwgcmlnaHQgdG9wLCBm
cm9tKHJnYigyMzAsIDIzMCwgMjMwKSksIHRvKHJnYigyMzAsIDIzMCwgMjMwKSksIGNvbG9yLXN0
b3AoNDAlLCByZ2IoMjUyLCAyNTIsIDI1MikpKTsKK30KKworLnNjcm9sbGFibGUtY29udGVudDo6
LXdlYmtpdC1zY3JvbGxiYXItdHJhY2s6dmVydGljYWwgeworICAgIGJhY2tncm91bmQ6IC13ZWJr
aXQtZ3JhZGllbnQobGluZWFyLCBsZWZ0IHRvcCwgcmlnaHQgdG9wLCBmcm9tKHJnYigxMjgsIDEy
OCwgMTI4KSksIHRvKHJnYigxNjQsIDE2NCwgMTY0KSksIGNvbG9yLXN0b3AoMjUlLCByZ2IoMTY0
LCAxNjQsIDE2NCkpKTsKKyAgICBib3JkZXItcmFkaXVzOiA1cHg7Cit9CisKKy50b29sYmFyLXNl
YXJjaC1pdGVtIHsKKyAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKKyAgICAtd2Via2l0LWJveC1v
cmllbnQ6IHZlcnRpY2FsOworICAgIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7CisgICAgLXdl
YmtpdC1ib3gtcGFjazogZW5kOworfQorCiAjc2VhcmNoIHsKICAgICB3aWR0aDogMjA1cHg7CiAg
ICAgZm9udC1zaXplOiAxNnB4OwotICAgIG1hcmdpbi1ib3R0b206IDVweDsKIH0KIAogYm9keS5h
dHRhY2hlZCAjc2VhcmNoIHsKICAgICBmb250LXNpemU6IDExcHg7Ci0gICAgbWFyZ2luLWJvdHRv
bTogOHB4OwogfQogCiAjc2VhcmNoLXJlc3VsdHMtbWF0Y2hlcyB7CiAgICAgZm9udC1zaXplOiAx
MXB4OwogICAgIHRleHQtc2hhZG93OiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSkgMCAxcHggMDsK
LSAgICBtYXJnaW4tYm90dG9tOiAyMnB4OwotfQotCi1ib2R5LmF0dGFjaGVkICNzZWFyY2gtcmVz
dWx0cy1tYXRjaGVzIHsKLSAgICBtYXJnaW4tYm90dG9tOiA2cHg7CiB9CiAKIC50b29sYmFyLWl0
ZW0uZWxlbWVudHMgLnRvb2xiYXItaWNvbiB7CkBAIC0yMzgsNyArMzQ5LDcgQEAgYm9keS5hdHRh
Y2hlZCAjc2VhcmNoLXJlc3VsdHMtbWF0Y2hlcyB7CiAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjog
MCAwOwogICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogICAgIGJvcmRlcjogMCBu
b25lIHRyYW5zcGFyZW50OwotICAgIG1hcmdpbjogNXB4IDA7CisgICAgbWFyZ2luLXRvcDogOXB4
OwogfQogCiAjY2xvc2UtYnV0dG9uLWxlZnQ6aG92ZXIsICNjbG9zZS1idXR0b24tcmlnaHQ6aG92
ZXIgewpAQCAtMjQ5LDYgKzM2MCwxMCBAQCBib2R5LmF0dGFjaGVkICNzZWFyY2gtcmVzdWx0cy1t
YXRjaGVzIHsKICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAyOHB4IDA7CiB9CiAKKy5jbG9zZS1s
ZWZ0IHsKKyAgICBmbG9hdDogbGVmdDsKK30KKwogYm9keS5kZXRhY2hlZCAudG9vbGJhci1pdGVt
LmNsb3NlLWxlZnQsIGJvZHkuZGV0YWNoZWQgLnRvb2xiYXItaXRlbS5jbG9zZS1yaWdodCB7CiAg
ICAgZGlzcGxheTogbm9uZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL2luc3BlY3Rvci5odG1sCmluZGV4IDU1YjMyZmQuLjlhMmFhNjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbApAQCAtMTU1
LDE0ICsxNTUsMTcgQEAgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlw
dCIgc3JjPSJTaG9ydGN1dHNIZWxwLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRl
eHQvamF2YXNjcmlwdCIgc3JjPSJIQVJFbnRyeS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iQ29va2llUGFyc2VyLmpzIj48L3NjcmlwdD4KKyAg
ICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJUb29sYmFyLmpzIj48L3Njcmlw
dD4KIDwvaGVhZD4KIDxib2R5IGNsYXNzPSJkZXRhY2hlZCI+CiAgICAgPGRpdiBpZD0idG9vbGJh
ciI+CiAgICAgICAgIDxkaXYgY2xhc3M9InRvb2xiYXItaXRlbSBjbG9zZS1sZWZ0Ij48YnV0dG9u
IGlkPSJjbG9zZS1idXR0b24tbGVmdCI+PC9idXR0b24+PC9kaXY+Ci0gICAgICAgIDxkaXYgY2xh
c3M9InRvb2xiYXItaXRlbSBmbGV4YWJsZS1zcGFjZSI+PC9kaXY+Ci0gICAgICAgIDxkaXYgY2xh
c3M9InRvb2xiYXItaXRlbSBoaWRkZW4iIGlkPSJzZWFyY2gtcmVzdWx0cy1tYXRjaGVzIj48L2Rp
dj4KLSAgICAgICAgPGRpdiBjbGFzcz0idG9vbGJhci1pdGVtIj48aW5wdXQgaWQ9InNlYXJjaCIg
dHlwZT0ic2VhcmNoIiBpbmNyZW1lbnRhbCByZXN1bHRzPSIwIj48ZGl2IGlkPSJzZWFyY2gtdG9v
bGJhci1sYWJlbCIgY2xhc3M9InRvb2xiYXItbGFiZWwiPjwvZGl2PjwvZGl2PgotICAgICAgICA8
ZGl2IGNsYXNzPSJ0b29sYmFyLWl0ZW0gY2xvc2UtcmlnaHQiPjxidXR0b24gaWQ9ImNsb3NlLWJ1
dHRvbi1yaWdodCI+PC9idXR0b24+PC9kaXY+CisgICAgICAgIDxkaXYgaWQ9InRvb2xiYXItY29u
dHJvbHMiPgorICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9vbGJhci1pdGVtIj48YnV0dG9uIGlk
PSJ0b29sYmFyLWRyb3Bkb3duLWFycm93IiBjbGFzcz0idG9vbGJhci1sYWJlbCI+JnJhcXVvOzwv
YnV0dG9uPjwvZGl2PgorICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9vbGJhci1pdGVtIGhpZGRl
biIgaWQ9InNlYXJjaC1yZXN1bHRzLW1hdGNoZXMiPjwvZGl2PgorICAgICAgICAgICAgPGRpdiBj
bGFzcz0idG9vbGJhci1pdGVtIHRvb2xiYXItc2VhcmNoLWl0ZW0iPjxpbnB1dCBpZD0ic2VhcmNo
IiB0eXBlPSJzZWFyY2giIGluY3JlbWVudGFsIHJlc3VsdHM9IjAiPjxkaXYgaWQ9InNlYXJjaC10
b29sYmFyLWxhYmVsIiBjbGFzcz0idG9vbGJhci1sYWJlbCI+PC9kaXY+PC9kaXY+CisgICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJ0b29sYmFyLWl0ZW0gY2xvc2UtcmlnaHQiPjxidXR0b24gaWQ9ImNs
b3NlLWJ1dHRvbi1yaWdodCI+PC9idXR0b24+PC9kaXY+CisgICAgICAgIDwvZGl2PgogICAgIDwv
ZGl2PgogICAgIDxkaXYgaWQ9Im1haW4iPgogICAgICAgICA8ZGl2IGlkPSJtYWluLXBhbmVscyIg
c3BlbGxjaGVjaz0iZmFsc2UiPjwvZGl2PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL2luc3BlY3Rvci5qcwppbmRleCA2Mjg2OGU5Li40YjZhMmFkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcworKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwpAQCAtMjY0LDYg
KzI2NCw4IEBAIHZhciBXZWJJbnNwZWN0b3IgPSB7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHRo
aXMuZHJhd2VyKQogICAgICAgICAgICAgdGhpcy5kcmF3ZXIucmVzaXplKCk7CisgICAgICAgIGlm
ICh0aGlzLnRvb2xiYXIpCisgICAgICAgICAgICB0aGlzLnRvb2xiYXIucmVzaXplKCk7CiAgICAg
fSwKIAogICAgIGdldCBlcnJvcnMoKQpAQCAtNDk2LDEzICs0OTgsMTEgQEAgV2ViSW5zcGVjdG9y
LmRvTG9hZGVkRG9uZSA9IGZ1bmN0aW9uKCkKICAgICB0aGlzLnBhbmVscyA9IHt9OwogICAgIHRo
aXMuX2NyZWF0ZVBhbmVscygpOwogICAgIHRoaXMuX3BhbmVsSGlzdG9yeSA9IG5ldyBXZWJJbnNw
ZWN0b3IuUGFuZWxIaXN0b3J5KCk7Ci0KLSAgICB2YXIgdG9vbGJhckVsZW1lbnQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgidG9vbGJhciIpOwotICAgIHZhciBwcmV2aW91c1Rvb2xiYXJJdGVt
ID0gdG9vbGJhckVsZW1lbnQuY2hpbGRyZW5bMF07CisgICAgdGhpcy50b29sYmFyID0gbmV3IFdl
Ykluc3BlY3Rvci5Ub29sYmFyKCk7CiAKICAgICB0aGlzLnBhbmVsT3JkZXIgPSBbXTsKICAgICBm
b3IgKHZhciBwYW5lbE5hbWUgaW4gdGhpcy5wYW5lbHMpCi0gICAgICAgIHByZXZpb3VzVG9vbGJh
ckl0ZW0gPSBXZWJJbnNwZWN0b3IuYWRkUGFuZWxUb29sYmFySWNvbih0b29sYmFyRWxlbWVudCwg
dGhpcy5wYW5lbHNbcGFuZWxOYW1lXSwgcHJldmlvdXNUb29sYmFySXRlbSk7CisgICAgICAgIHRo
aXMuYWRkUGFuZWwodGhpcy5wYW5lbHNbcGFuZWxOYW1lXSk7CiAKICAgICB0aGlzLlRpcHMgPSB7
CiAgICAgICAgIFJlc291cmNlTm90Q29tcHJlc3NlZDoge2lkOiAwLCBtZXNzYWdlOiBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIllvdSBjb3VsZCBzYXZlIGJhbmR3aWR0aCBieSBoYXZpbmcgeW91ciB3
ZWIgc2VydmVyIGNvbXByZXNzIHRoaXMgdHJhbnNmZXIgd2l0aCBnemlwIG9yIHpsaWIuIil9CkBA
IC01MzksMTAgKzUzOSw2IEBAIFdlYkluc3BlY3Rvci5kb0xvYWRlZERvbmUgPSBmdW5jdGlvbigp
CiAgICAgc2VhcmNoRmllbGQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5fc2Vh
cmNoRmllbGRNYW51YWxGb2N1cy5iaW5kKHRoaXMpLCBmYWxzZSk7IC8vIHdoZW4gdGhlIHNlYXJj
aCBmaWVsZCBpcyBtYW51YWxseSBzZWxlY3RlZAogICAgIHNlYXJjaEZpZWxkLmFkZEV2ZW50TGlz
dGVuZXIoImtleWRvd24iLCB0aGlzLl9zZWFyY2hLZXlEb3duLmJpbmQodGhpcyksIHRydWUpOwog
Ci0gICAgdG9vbGJhckVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy50
b29sYmFyRHJhZ1N0YXJ0LCB0cnVlKTsKLSAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2xv
c2UtYnV0dG9uLWxlZnQiKS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuY2xvc2UsIHRy
dWUpOwotICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjbG9zZS1idXR0b24tcmlnaHQiKS5h
ZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuY2xvc2UsIHRydWUpOwotCiAgICAgdGhpcy5l
eHRlbnNpb25TZXJ2ZXIuaW5pdEV4dGVuc2lvbnMoKTsKIAogICAgIGZ1bmN0aW9uIG9uUG9wdWxh
dGVTY3JpcHRPYmplY3RzKCkKQEAgLTU2OSwxNiArNTY1LDEwIEBAIFdlYkluc3BlY3Rvci5kb0xv
YWRlZERvbmUgPSBmdW5jdGlvbigpCiAgICAgQ1NTQWdlbnQuZ2V0U3VwcG9ydGVkQ1NTUHJvcGVy
dGllcyhwcm9wZXJ0eU5hbWVzQ2FsbGJhY2spOwogfQogCi1XZWJJbnNwZWN0b3IuYWRkUGFuZWxU
b29sYmFySWNvbiA9IGZ1bmN0aW9uKHRvb2xiYXJFbGVtZW50LCBwYW5lbCwgcHJldmlvdXNUb29s
YmFySXRlbSkKK1dlYkluc3BlY3Rvci5hZGRQYW5lbCA9IGZ1bmN0aW9uKHBhbmVsKQogewotICAg
IHZhciBwYW5lbFRvb2xiYXJJdGVtID0gcGFuZWwudG9vbGJhckl0ZW07CiAgICAgdGhpcy5wYW5l
bE9yZGVyLnB1c2gocGFuZWwpOwotICAgIHBhbmVsVG9vbGJhckl0ZW0uYWRkRXZlbnRMaXN0ZW5l
cigiY2xpY2siLCB0aGlzLl90b29sYmFySXRlbUNsaWNrZWQuYmluZCh0aGlzKSk7Ci0gICAgaWYg
KHByZXZpb3VzVG9vbGJhckl0ZW0pCi0gICAgICAgIHRvb2xiYXJFbGVtZW50Lmluc2VydEJlZm9y
ZShwYW5lbFRvb2xiYXJJdGVtLCBwcmV2aW91c1Rvb2xiYXJJdGVtLm5leHRTaWJsaW5nKTsKLSAg
ICBlbHNlCi0gICAgICAgIHRvb2xiYXJFbGVtZW50Lmluc2VydEJlZm9yZShwYW5lbFRvb2xiYXJJ
dGVtLCB0b29sYmFyRWxlbWVudC5maXJzdENoaWxkKTsKLSAgICByZXR1cm4gcGFuZWxUb29sYmFy
SXRlbTsKKyAgICB0aGlzLnRvb2xiYXIuYWRkUGFuZWwocGFuZWwpOwogfQogCiB2YXIgd2luZG93
TG9hZGVkID0gZnVuY3Rpb24oKQpAQCAtNjIxLDYgKzYxMSw3IEBAIFdlYkluc3BlY3Rvci53aW5k
b3dSZXNpemUgPSBmdW5jdGlvbihldmVudCkKICAgICBpZiAodGhpcy5jdXJyZW50UGFuZWwpCiAg
ICAgICAgIHRoaXMuY3VycmVudFBhbmVsLnJlc2l6ZSgpOwogICAgIHRoaXMuZHJhd2VyLnJlc2l6
ZSgpOworICAgIHRoaXMudG9vbGJhci5yZXNpemUoKTsKIH0KIAogV2ViSW5zcGVjdG9yLndpbmRv
d0ZvY3VzZWQgPSBmdW5jdGlvbihldmVudCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>83184</attachid>
            <date>2011-02-21 10:38:59 -0800</date>
            <delta_ts>2011-02-22 04:13:25 -0800</delta_ts>
            <desc>patch (added missing file)</desc>
            <filename>toolbar-refactoring3</filename>
            <type>text/plain</type>
            <size>26451</size>
            <attacher name="Andrey Kosyakov">caseq</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiMGQwMDQ5Li4xOGY4Zjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTgg
QEAKKzIwMTEtMDItMjEgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBwcm92aWRlIGEgYnV0dG9uIHRvIGV4cGFuZCBpbnNwZWN0b3IgdG9vbGJhciB3aGVuIG5v
dCBhbGwgcGFuZWwgYnV0dG9ucyBmaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTU0NjcxCisKKyAgICAgICAgRmFjdG9yZWQgdG9vbGJhciBsb2dpYyBv
dXQgb2YgaW5zcGVjdG9yLmpzCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICog
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250
LWVuZC9FeHRlbnNpb25TZXJ2ZXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRXh0ZW5zaW9u
U2VydmVyLnByb3RvdHlwZS5fb25DcmVhdGVQYW5lbCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9QYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5QYW5lbC5wcm90b3R5cGUu
Z2V0IHRvb2xiYXJJdGVtKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5x
cmM6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzOgorICAgICAg
ICAoI3Rvb2xiYXIpOgorICAgICAgICAoLnRvb2xiYXItaXRlbSk6CisgICAgICAgICgudG9vbGJh
ci1pdGVtLnRvZ2dsZWFibGUpOgorICAgICAgICAoLnRvb2xiYXItaXRlbS50b2dnbGVhYmxlLnRv
Z2dsZWQtb24pOgorICAgICAgICAoI3Rvb2xiYXItZHJvcGRvd24gLnRvb2xiYXItaWNvbik6Cisg
ICAgICAgICgjdG9vbGJhci1kcm9wZG93biAudG9vbGJhci1sYWJlbCk6CisgICAgICAgICgjdG9v
bGJhci1jb250cm9scyk6CisgICAgICAgICgjdG9vbGJhci1kcm9wZG93bi1hcnJvdyk6CisgICAg
ICAgIChib2R5LmF0dGFjaGVkICN0b29sYmFyLWRyb3Bkb3duLWFycm93KToKKyAgICAgICAgKCN0
b29sYmFyLWRyb3Bkb3duLWFycm93LmRyb3Bkb3duLXZpc2libGUpOgorICAgICAgICAoI3Rvb2xi
YXItZHJvcGRvd24tYXJyb3c6aG92ZXIpOgorICAgICAgICAoI3Rvb2xiYXItZHJvcGRvd24tYXJy
b3c6YWN0aXZlKToKKyAgICAgICAgKCN0b29sYmFyLWRyb3Bkb3duKToKKyAgICAgICAgKGJvZHku
ZGV0YWNoZWQucGxhdGZvcm0tbWFjLXNub3dsZW9wYXJkICN0b29sYmFyLWRyb3Bkb3duKToKKyAg
ICAgICAgKCN0b29sYmFyLWRyb3Bkb3duIC5zY3JvbGxhYmxlLWNvbnRlbnQpOgorICAgICAgICAo
I3Rvb2xiYXItZHJvcGRvd24gLnRvb2xiYXItaXRlbSk6CisgICAgICAgICgjdG9vbGJhci1kcm9w
ZG93biAudG9vbGJhci1pdGVtLnRvZ2dsZWFibGUudG9nZ2xlZC1vbik6CisgICAgICAgICgjdG9v
bGJhci1kcm9wZG93biAudG9vbGJhci1pdGVtOmhvdmVyKToKKyAgICAgICAgKCN0b29sYmFyLWRy
b3Bkb3duIC50b29sYmFyLWl0ZW0udG9nZ2xlYWJsZS50b2dnbGVkLW9uOmhvdmVyKToKKyAgICAg
ICAgKCN0b29sYmFyLWRyb3Bkb3duIC50b29sYmFyLWl0ZW06YWN0aXZlIC50b29sYmFyLWljb24p
OgorICAgICAgICAoLnNjcm9sbGFibGUtY29udGVudCk6CisgICAgICAgICguc2Nyb2xsYWJsZS1j
b250ZW50Ojotd2Via2l0LXNjcm9sbGJhcik6CisgICAgICAgICguc2Nyb2xsYWJsZS1jb250ZW50
Ojotd2Via2l0LXJlc2l6ZXIpOgorICAgICAgICAoLnNjcm9sbGFibGUtY29udGVudDo6LXdlYmtp
dC1zY3JvbGxiYXItdGh1bWI6dmVydGljYWwpOgorICAgICAgICAoLnNjcm9sbGFibGUtY29udGVu
dDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6dmVydGljYWw6YWN0aXZlKToKKyAgICAgICAgKC5z
Y3JvbGxhYmxlLWNvbnRlbnQ6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrOnZlcnRpY2FsKToKKyAg
ICAgICAgKC50b29sYmFyLXNlYXJjaC1pdGVtKToKKyAgICAgICAgKCNzZWFyY2gpOgorICAgICAg
ICAoYm9keS5hdHRhY2hlZCAjc2VhcmNoKToKKyAgICAgICAgKCNzZWFyY2gtcmVzdWx0cy1tYXRj
aGVzKToKKyAgICAgICAgKCNjbG9zZS1idXR0b24tbGVmdCwgI2Nsb3NlLWJ1dHRvbi1yaWdodCk6
CisgICAgICAgICguY2xvc2UtbGVmdCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9p
bnNwZWN0b3IuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5q
czoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5zZXQgYXR0YWNoZWQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLmFkZFBhbmVsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci53aW5kb3dSZXNpemUpOgor
CiAyMDExLTAyLTA4ICBBbnRvbiBNdWhpbiAgPGFudG9ubUBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoIGFuZCBBbGV4ZXkgUHJvc2t1cnlha292LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCmluZGV4IGY3ZWE5MDYuLjA2NGQ3NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTQ3OTgs
NiArNDc5OCw3IEBACiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZU92
ZXJ2aWV3UGFuZS5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGlu
ZUdyaWQuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVQYW5l
bC5qcycsCisgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9Ub29sYmFyLmpzJywKICAg
ICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL1RvcERvd25Qcm9maWxlRGF0YUdyaWRUcmVl
LmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL3RyZWVvdXRsaW5lLmpzJywK
ICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL3V0aWxpdGllcy5qcycsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IGYzMTAyODguLmY1
NGMyNjUgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CkBAIC02NjIwNSw2ICs2NjIwNSwxMCBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxl
CisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxUb29sYmFyLmpzIgor
CQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5z
cGVjdG9yXGZyb250LWVuZFxUb3BEb3duUHJvZmlsZURhdGFHcmlkVHJlZS5qcyIKIAkJCQkJPgog
CQkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvRXh0ZW5zaW9uU2VydmVyLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9FeHRlbnNpb25TZXJ2ZXIuanMKaW5kZXggYmEzMGY3My4uY2EyZTg1NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25TZXJ2ZXIuanMKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25TZXJ2ZXIuanMK
QEAgLTE3NiwxMyArMTc2LDEyIEBAIFdlYkluc3BlY3Rvci5FeHRlbnNpb25TZXJ2ZXIucHJvdG90
eXBlID0gewogICAgICAgICAvLyBzaG91bGRuJ3QgYmUgaGl0IHVubGVzcyBzb21lb25lIGlzIGJ5
cGFzc2luZyB0aGUgQVBJLgogICAgICAgICBpZiAoaWQgaW4gdGhpcy5fY2xpZW50T2JqZWN0cyB8
fCBpZCBpbiBXZWJJbnNwZWN0b3IucGFuZWxzKQogICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3N0
YXR1cy5FX0VYSVNUUyhpZCk7CisKICAgICAgICAgdmFyIHBhbmVsID0gbmV3IFdlYkluc3BlY3Rv
ci5FeHRlbnNpb25QYW5lbChpZCwgbWVzc2FnZS50aXRsZSwgbWVzc2FnZS5pY29uKTsKICAgICAg
ICAgdGhpcy5fY2xpZW50T2JqZWN0c1tpZF0gPSBwYW5lbDsKLQotICAgICAgICB2YXIgdG9vbGJh
ckVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidG9vbGJhciIpOwotICAgICAgICB2
YXIgbGFzdFRvb2xiYXJJdGVtID0gV2ViSW5zcGVjdG9yLnBhbmVsT3JkZXJbV2ViSW5zcGVjdG9y
LnBhbmVsT3JkZXIubGVuZ3RoIC0gMV0udG9vbGJhckl0ZW07Ci0gICAgICAgIFdlYkluc3BlY3Rv
ci5hZGRQYW5lbFRvb2xiYXJJY29uKHRvb2xiYXJFbGVtZW50LCBwYW5lbCwgbGFzdFRvb2xiYXJJ
dGVtKTsKICAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVsc1tpZF0gPSBwYW5lbDsKKyAgICAgICAg
V2ViSW5zcGVjdG9yLmFkZFBhbmVsKHBhbmVsKTsKKwogICAgICAgICB2YXIgaWZyYW1lID0gdGhp
cy5fY3JlYXRlQ2xpZW50SWZyYW1lKHBhbmVsLmVsZW1lbnQsIG1lc3NhZ2UudXJsKTsKICAgICAg
ICAgaWZyYW1lLnN0eWxlLmhlaWdodCA9ICIxMDAlIjsKICAgICAgICAgcmV0dXJuIHRoaXMuX3N0
YXR1cy5PSygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9QYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUGFuZWwuanMK
aW5kZXggNGM0MmE2MC4uNzU4YzU2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9QYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1BhbmVsLmpzCkBAIC00NiwyOSArNDYsNyBAQCBXZWJJbnNwZWN0b3IuUGFuZWwucHJv
dG90eXBlID0gewogICAgICAgICBpZiAodGhpcy5fdG9vbGJhckl0ZW0pCiAgICAgICAgICAgICBy
ZXR1cm4gdGhpcy5fdG9vbGJhckl0ZW07CiAKLSAgICAgICAgLy8gU2FtcGxlIHRvb2xiYXIgaXRl
bSBhcyBtYXJrdXA6Ci0gICAgICAgIC8vIDxidXR0b24gY2xhc3M9InRvb2xiYXItaXRlbSByZXNv
dXJjZXMgdG9nZ2xlYWJsZSI+Ci0gICAgICAgIC8vIDxkaXYgY2xhc3M9InRvb2xiYXItaWNvbiI+
PC9kaXY+Ci0gICAgICAgIC8vIDxkaXYgY2xhc3M9InRvb2xiYXItbGFiZWwiPlJlc291cmNlczwv
ZGl2PgotICAgICAgICAvLyA8L2J1dHRvbj4KLQotICAgICAgICB0aGlzLl90b29sYmFySXRlbSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIpOwotICAgICAgICB0aGlzLl90b29sYmFy
SXRlbS5jbGFzc05hbWUgPSAidG9vbGJhci1pdGVtIHRvZ2dsZWFibGUiOwotICAgICAgICB0aGlz
Ll90b29sYmFySXRlbS5wYW5lbCA9IHRoaXM7Ci0KLSAgICAgICAgdGhpcy5fdG9vbGJhckl0ZW0u
YWRkU3R5bGVDbGFzcyh0aGlzLl9wYW5lbE5hbWUpOwotCi0gICAgICAgIHZhciBpY29uRWxlbWVu
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICBpY29uRWxlbWVudC5j
bGFzc05hbWUgPSAidG9vbGJhci1pY29uIjsKLSAgICAgICAgdGhpcy5fdG9vbGJhckl0ZW0uYXBw
ZW5kQ2hpbGQoaWNvbkVsZW1lbnQpOwotCi0gICAgICAgIGlmICgidG9vbGJhckl0ZW1MYWJlbCIg
aW4gdGhpcykgewotICAgICAgICAgICAgdmFyIGxhYmVsRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICAgICAgbGFiZWxFbGVtZW50LmNsYXNzTmFtZSA9ICJ0
b29sYmFyLWxhYmVsIjsKLSAgICAgICAgICAgIGxhYmVsRWxlbWVudC50ZXh0Q29udGVudCA9IHRo
aXMudG9vbGJhckl0ZW1MYWJlbDsKLSAgICAgICAgICAgIHRoaXMuX3Rvb2xiYXJJdGVtLmFwcGVu
ZENoaWxkKGxhYmVsRWxlbWVudCk7Ci0gICAgICAgIH0KLQorICAgICAgICB0aGlzLl90b29sYmFy
SXRlbSA9IFdlYkluc3BlY3Rvci5Ub29sYmFyLmNyZWF0ZVBhbmVsVG9vbGJhckl0ZW0odGhpcyk7
CiAgICAgICAgIHJldHVybiB0aGlzLl90b29sYmFySXRlbTsKICAgICB9LAogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Rvb2xiYXIuanMgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Rvb2xiYXIuanMKbmV3IGZpbGUgbW9kZSAxMDA3
NTUKaW5kZXggMDAwMDAwMC4uOWIwYzc5ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVG9vbGJhci5qcwpAQCAtMCwwICsxLDIyNSBAQAorIC8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNyBNYXR0IExpbGVrIChwZXd0ZXJtb29z
ZUBnbWFpbC5jb20pLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEpvc2VwaCBQZWNvcmFybworICog
Q29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
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
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV2ViSW5z
cGVjdG9yLlRvb2xiYXIgPSBmdW5jdGlvbigpCit7CisgICAgdGhpcy5lbGVtZW50ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInRvb2xiYXIiKTsKKyAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRM
aXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5fdG9vbGJhckRyYWdTdGFydCwgdHJ1ZSk7CisKKyAg
ICB0aGlzLl9kcm9wZG93bkJ1dHRvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0b29sYmFy
LWRyb3Bkb3duLWFycm93Iik7CisgICAgdGhpcy5fZHJvcGRvd25CdXR0b24uYWRkRXZlbnRMaXN0
ZW5lcigiY2xpY2siLCB0aGlzLl90b2dnbGVEcm9wZG93bi5iaW5kKHRoaXMpLCBmYWxzZSk7CisK
KyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2xvc2UtYnV0dG9uLWxlZnQiKS5hZGRFdmVu
dExpc3RlbmVyKCJjbGljayIsIHRoaXMuX29uQ2xvc2UsIHRydWUpOworICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJjbG9zZS1idXR0b24tcmlnaHQiKS5hZGRFdmVudExpc3RlbmVyKCJjbGlj
ayIsIHRoaXMuX29uQ2xvc2UsIHRydWUpOworfQorCitXZWJJbnNwZWN0b3IuVG9vbGJhci5wcm90
b3R5cGUgPSB7CisgICAgcmVzaXplOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLl91
cGRhdGVEcm9wZG93bkJ1dHRvbkFuZEhpZGVEcm9wZG93bigpOworICAgIH0sCisKKyAgICBhZGRQ
YW5lbDogZnVuY3Rpb24ocGFuZWwpCisgICAgeworICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5k
Q2hpbGQocGFuZWwudG9vbGJhckl0ZW0pOworICAgICAgICB0aGlzLnJlc2l6ZSgpOworICAgIH0s
CisKKyAgICBfdG9vbGJhckRyYWdTdGFydDogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAg
ICBpZiAoKCFXZWJJbnNwZWN0b3IuYXR0YWNoZWQgJiYgV2ViSW5zcGVjdG9yLnBsYXRmb3JtRmxh
dm9yICE9PSBXZWJJbnNwZWN0b3IuUGxhdGZvcm1GbGF2b3IuTWFjTGVvcGFyZCAmJiBXZWJJbnNw
ZWN0b3IucGxhdGZvcm1GbGF2b3IgIT09IFdlYkluc3BlY3Rvci5QbGF0Zm9ybUZsYXZvci5NYWNT
bm93TGVvcGFyZCkgfHwgV2ViSW5zcGVjdG9yLnBvcnQgPT0gInF0IikKKyAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICB2YXIgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0OworICAgICAgICBpZiAo
dGFyZ2V0Lmhhc1N0eWxlQ2xhc3MoInRvb2xiYXItaXRlbSIpICYmIHRhcmdldC5oYXNTdHlsZUNs
YXNzKCJ0b2dnbGVhYmxlIikpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdmFyIHRv
b2xiYXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidG9vbGJhciIpOworICAgICAgICBpZiAo
dGFyZ2V0ICE9PSB0b29sYmFyICYmICF0YXJnZXQuaGFzU3R5bGVDbGFzcygidG9vbGJhci1pdGVt
IikpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdG9vbGJhci5sYXN0U2NyZWVuWCA9
IGV2ZW50LnNjcmVlblg7CisgICAgICAgIHRvb2xiYXIubGFzdFNjcmVlblkgPSBldmVudC5zY3Jl
ZW5ZOworCisgICAgICAgIFdlYkluc3BlY3Rvci5lbGVtZW50RHJhZ1N0YXJ0KHRvb2xiYXIsIHRo
aXMuX3Rvb2xiYXJEcmFnLmJpbmQodGhpcyksIHRoaXMuX3Rvb2xiYXJEcmFnRW5kLmJpbmQodGhp
cyksIGV2ZW50LCAoV2ViSW5zcGVjdG9yLmF0dGFjaGVkID8gInJvdy1yZXNpemUiIDogImRlZmF1
bHQiKSk7CisgICAgfSwKKworICAgIF90b29sYmFyRHJhZ0VuZDogZnVuY3Rpb24oZXZlbnQpCisg
ICAgeworICAgICAgICBXZWJJbnNwZWN0b3IuZWxlbWVudERyYWdFbmQoZXZlbnQpOworCisgICAg
ICAgIGRlbGV0ZSB0aGlzLmVsZW1lbnQubGFzdFNjcmVlblg7CisgICAgICAgIGRlbGV0ZSB0aGlz
LmVsZW1lbnQubGFzdFNjcmVlblk7CisgICAgfSwKKworICAgIF90b29sYmFyRHJhZzogZnVuY3Rp
b24oZXZlbnQpCisgICAgeworICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLmF0dGFjaGVkKSB7Cisg
ICAgICAgICAgICB2YXIgaGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0IC0gKGV2ZW50LnNjcmVl
blkgLSB0b29sYmFyLmxhc3RTY3JlZW5ZKTsKKworICAgICAgICAgICAgSW5zcGVjdG9yRnJvbnRl
bmRIb3N0LnNldEF0dGFjaGVkV2luZG93SGVpZ2h0KGhlaWdodCk7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICB2YXIgeCA9IGV2ZW50LnNjcmVlblggLSB0b29sYmFyLmxhc3RTY3JlZW5Y
OworICAgICAgICAgICAgdmFyIHkgPSBldmVudC5zY3JlZW5ZIC0gdG9vbGJhci5sYXN0U2NyZWVu
WTsKKworICAgICAgICAgICAgLy8gV2UgY2Fubm90IGNhbGwgd2luZG93Lm1vdmVCeSBoZXJlIGJl
Y2F1c2UgaXQgcmVzdHJpY3RzIHRoZSBtb3ZlbWVudAorICAgICAgICAgICAgLy8gb2YgdGhlIHdp
bmRvdyBhdCB0aGUgZWRnZXMuCisgICAgICAgICAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3QubW92
ZVdpbmRvd0J5KHgsIHkpOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5lbGVtZW50Lmxhc3RT
Y3JlZW5YID0gZXZlbnQuc2NyZWVuWDsKKyAgICAgICAgdGhpcy5lbGVtZW50Lmxhc3RTY3JlZW5Z
ID0gZXZlbnQuc2NyZWVuWTsKKworICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworICAg
IH0sCisKKyAgICBfb25DbG9zZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgV2ViSW5zcGVj
dG9yLmNsb3NlKCk7CisgICAgfSwKKworICAgIF90b29sYmFySXRlbUNsaWNrZWQ6IGZ1bmN0aW9u
KCkKKyAgICB7CisgICAgfSwKKworICAgIF9zZXREcm9wZG93blZpc2libGU6IGZ1bmN0aW9uKHZp
c2libGUpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX2Ryb3Bkb3duKSB7CisgICAgICAgICAg
ICBpZiAoIXZpc2libGUpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgdGhp
cy5fZHJvcGRvd24gPSBuZXcgV2ViSW5zcGVjdG9yLlRvb2xiYXJEcm9wZG93bigpOworICAgICAg
ICB9CisgICAgICAgIGlmICh2aXNpYmxlKQorICAgICAgICAgICAgdGhpcy5fZHJvcGRvd24uc2hv
dygpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0aGlzLl9kcm9wZG93bi5oaWRlKCk7Cisg
ICAgfSwKKworICAgIF90b2dnbGVEcm9wZG93bjogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAg
dGhpcy5fc2V0RHJvcGRvd25WaXNpYmxlKCF0aGlzLl9kcm9wZG93biB8fCAhdGhpcy5fZHJvcGRv
d24udmlzaWJsZSk7CisgICAgfSwKKworICAgIF91cGRhdGVEcm9wZG93bkJ1dHRvbkFuZEhpZGVE
cm9wZG93bjogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5fc2V0RHJvcGRvd25WaXNp
YmxlKGZhbHNlKTsKKworICAgICAgICB2YXIgdG9vbGJhciA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJ0b29sYmFyIik7CisgICAgICAgIGlmICh0aGlzLmVsZW1lbnQuc2Nyb2xsSGVpZ2h0ID4g
dGhpcy5lbGVtZW50LmNsaWVudEhlaWdodCkKKyAgICAgICAgICAgIHRoaXMuX2Ryb3Bkb3duQnV0
dG9uLnJlbW92ZVN0eWxlQ2xhc3MoImhpZGRlbiIpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICB0aGlzLl9kcm9wZG93bkJ1dHRvbi5hZGRTdHlsZUNsYXNzKCJoaWRkZW4iKTsKKyAgICB9Cit9
OworCitXZWJJbnNwZWN0b3IuVG9vbGJhci5jcmVhdGVQYW5lbFRvb2xiYXJJdGVtID0gZnVuY3Rp
b24ocGFuZWwpCit7CisgICAgdmFyIHRvb2xiYXJJdGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiYnV0dG9uIik7CisgICAgdG9vbGJhckl0ZW0uY2xhc3NOYW1lID0gInRvb2xiYXItaXRlbSB0
b2dnbGVhYmxlIjsKKyAgICB0b29sYmFySXRlbS5wYW5lbCA9IHBhbmVsOworICAgIHRvb2xiYXJJ
dGVtLmFkZFN0eWxlQ2xhc3MocGFuZWwuX3BhbmVsTmFtZSk7CisgICAgZnVuY3Rpb24gb25Ub29s
YmFySXRlbUNsaWNrZWQoKQorICAgIHsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnRvb2xiYXIuX3Vw
ZGF0ZURyb3Bkb3duQnV0dG9uQW5kSGlkZURyb3Bkb3duKCk7CisgICAgICAgIFdlYkluc3BlY3Rv
ci5jdXJyZW50UGFuZWwgPSBwYW5lbDsKKyAgICB9CisgICAgdG9vbGJhckl0ZW0uYWRkRXZlbnRM
aXN0ZW5lcigiY2xpY2siLCBvblRvb2xiYXJJdGVtQ2xpY2tlZCk7CisKKyAgICB2YXIgaWNvbkVs
ZW1lbnQgPSB0b29sYmFySXRlbS5jcmVhdGVDaGlsZCgiZGl2IiwgInRvb2xiYXItaWNvbiIpOwor
CisgICAgaWYgKCJ0b29sYmFySXRlbUxhYmVsIiBpbiBwYW5lbCkKKyAgICAgICAgdG9vbGJhckl0
ZW0uY3JlYXRlQ2hpbGQoImRpdiIsICJ0b29sYmFyLWxhYmVsIikudGV4dENvbnRlbnQgPSBwYW5l
bC50b29sYmFySXRlbUxhYmVsOworCisgICAgaWYgKHBhbmVsID09PSBXZWJJbnNwZWN0b3IuY3Vy
cmVudFBhbmVsKQorICAgICAgICB0b29sYmFySXRlbS5hZGRTdHlsZUNsYXNzKCJ0b2dnbGVkLW9u
Iik7CisKKyAgICByZXR1cm4gdG9vbGJhckl0ZW07Cit9CisKK1dlYkluc3BlY3Rvci5Ub29sYmFy
RHJvcGRvd24gPSBmdW5jdGlvbigpCit7CisgICAgdGhpcy5fdG9vbGJhciA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJ0b29sYmFyIik7CisgICAgdGhpcy5fYXJyb3cgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgidG9vbGJhci1kcm9wZG93bi1hcnJvdyIpOworICAgIHRoaXMuZWxlbWVudCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgIHRoaXMuZWxlbWVudC5pZCA9ICJ0
b29sYmFyLWRyb3Bkb3duIjsKKyAgICB0aGlzLl9jb250ZW50RWxlbWVudCA9IHRoaXMuZWxlbWVu
dC5jcmVhdGVDaGlsZCgiZGl2IiwgInNjcm9sbGFibGUtY29udGVudCIpOworICAgIHRoaXMuX2Nv
bnRlbnRFbGVtZW50LnRhYkluZGV4ID0gMDsKKyAgICB0aGlzLl9jb250ZW50RWxlbWVudC5hZGRF
dmVudExpc3RlbmVyKCJrZXlkb3duIiwgdGhpcy5fb25LZXlEb3duLmJpbmQodGhpcyksIHRydWUp
OworfQorCitXZWJJbnNwZWN0b3IuVG9vbGJhckRyb3Bkb3duLnByb3RvdHlwZSA9IHsKKyAgICBz
aG93OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBpZiAodGhpcy52aXNpYmxlKQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB2YXIgc3R5bGUgPSB0aGlzLmVsZW1lbnQuc3R5bGU7Cisg
ICAgICAgIHRoaXMuX3BvcHVsYXRlKCk7CisgICAgICAgIHZhciB0b3AgPSB0aGlzLl9hcnJvdy50
b3RhbE9mZnNldFRvcCArIHRoaXMuX2Fycm93LmNsaWVudEhlaWdodDsKKyAgICAgICAgdGhpcy5f
YXJyb3cuYWRkU3R5bGVDbGFzcygiZHJvcGRvd24tdmlzaWJsZSIpOworICAgICAgICB0aGlzLmVs
ZW1lbnQuc3R5bGUudG9wID0gdG9wICsgInB4IjsKKyAgICAgICAgdGhpcy5lbGVtZW50LnN0eWxl
LmxlZnQgPSB0aGlzLl9hcnJvdy50b3RhbE9mZnNldExlZnQgKyAicHgiOworICAgICAgICB0aGlz
Ll9jb250ZW50RWxlbWVudC5zdHlsZS5tYXhIZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQgLSB0
b3AgLSAyMCArICJweCI7CisgICAgICAgIHRoaXMuX3Rvb2xiYXIuYXBwZW5kQ2hpbGQodGhpcy5l
bGVtZW50KTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLmN1cnJlbnRGb2N1c0VsZW1lbnQgPSB0aGlz
LmNvbnRlbnRFbGVtZW50OworICAgIH0sCisKKyAgICBoaWRlOiBmdW5jdGlvbigpCisgICAgewor
ICAgICAgICBpZiAoIXRoaXMudmlzaWJsZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
dGhpcy5fYXJyb3cucmVtb3ZlU3R5bGVDbGFzcygiZHJvcGRvd24tdmlzaWJsZSIpOworICAgICAg
ICB0aGlzLmVsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLmVsZW1lbnQpOworICAg
ICAgICB0aGlzLl9jb250ZW50RWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOworICAgIH0sCisKKyAg
ICBnZXQgdmlzaWJsZSgpCisgICAgeworICAgICAgICByZXR1cm4gISF0aGlzLmVsZW1lbnQucGFy
ZW50Tm9kZTsKKyAgICB9LAorCisgICAgX3BvcHVsYXRlOiBmdW5jdGlvbigpCisgICAgeworICAg
ICAgICB2YXIgdG9vbGJhckl0ZW1zID0gdGhpcy5fdG9vbGJhci5xdWVyeVNlbGVjdG9yQWxsKCIu
dG9vbGJhci1pdGVtLnRvZ2dsZWFibGUiKTsKKworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IHRvb2xiYXJJdGVtcy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgaWYgKHRvb2xiYXJJdGVt
c1tpXS5vZmZzZXRUb3AgPiAwKQorICAgICAgICAgICAgICAgIHRoaXMuX2NvbnRlbnRFbGVtZW50
LmFwcGVuZENoaWxkKFdlYkluc3BlY3Rvci5Ub29sYmFyLmNyZWF0ZVBhbmVsVG9vbGJhckl0ZW0o
dG9vbGJhckl0ZW1zW2ldLnBhbmVsKSk7CisgICAgICAgIH0KKyAgICB9LAorCisgICAgX29uS2V5
RG93bjogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICBpZiAoZXZlbnQua2V5Q29kZSAh
PT0gV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuS2V5cy5Fc2MuY29kZSkKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CisgICAgICAgIHRo
aXMuaGlkZSgpOworICAgIH0KK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1dlYktpdC5xcmMKaW5kZXggYmJkZmY5Yy4uYmJmYmVjYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYwpAQCAtMTExLDYgKzExMSw3IEBACiAg
ICAgPGZpbGU+VGltZWxpbmVHcmlkLmpzPC9maWxlPgogICAgIDxmaWxlPlRpbWVsaW5lT3ZlcnZp
ZXdQYW5lLmpzPC9maWxlPgogICAgIDxmaWxlPlRpbWVsaW5lUGFuZWwuanM8L2ZpbGU+CisgICAg
PGZpbGU+VG9vbGJhci5qczwvZmlsZT4KICAgICA8ZmlsZT5Ub3BEb3duUHJvZmlsZURhdGFHcmlk
VHJlZS5qczwvZmlsZT4KICAgICA8ZmlsZT50cmVlb3V0bGluZS5qczwvZmlsZT4KICAgICA8Zmls
ZT51dGlsaXRpZXMuanM8L2ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL2luc3BlY3Rvci5jc3MKaW5kZXggYzk5MjgwNi4uYTdiZDNiMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcwpAQCAtNzYsNyAr
NzYsNiBAQCBpbWcgewogICAgIGxlZnQ6IDA7CiAgICAgcmlnaHQ6IDA7CiAgICAgaGVpZ2h0OiA1
NnB4OwotICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwogICAgIHBhZGRpbmc6IDAgNXB4OwogICAg
IGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCBsZWZ0IHRvcCwgbGVm
dCBib3R0b20sIGZyb20ocmdiKDE5MSwgMTkxLCAxOTEpKSwgdG8ocmdiKDE1MSwgMTUxLCAxNTEp
KSk7CiAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYig4MCwgODAsIDgwKTsKQEAgLTEx
MSwzMiArMTEwLDIzIEBAIGJvZHkuYXR0YWNoZWQuaW5hY3RpdmUgI3Rvb2xiYXIgewogfQogCiAu
dG9vbGJhci1pdGVtIHsKLSAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKLSAgICBwYWRkaW5nOiA0
cHggNnB4OwogICAgIG1hcmdpbjogMDsKKyAgICBwYWRkaW5nOiAwIDZweDsKICAgICBiYWNrZ3Jv
dW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICAgICBib3JkZXItc3R5bGU6IG5vbmU7CiAgICAgYm9y
ZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsKLSAgICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2Fs
OwotICAgIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7Ci0gICAgLXdlYmtpdC1ib3gtcGFjazog
ZW5kOworfQorCisudG9vbGJhci1pdGVtLnRvZ2dsZWFibGUgeworICAgIHBhZGRpbmctdG9wOiA0
cHg7CiB9CiAKIC50b29sYmFyLWl0ZW0udG9nZ2xlYWJsZS50b2dnbGVkLW9uIHsKICAgICBib3Jk
ZXItd2lkdGg6IDAgMnB4IDAgMnB4OwotICAgIHBhZGRpbmc6IDRweCA0cHg7CisgICAgcGFkZGlu
ZzogNHB4IDRweCAwIDRweDsKICAgICAtd2Via2l0LWJvcmRlci1pbWFnZTogdXJsKEltYWdlcy90
b29sYmFySXRlbVNlbGVjdGVkLnBuZykgMCAyIDAgMjsKIH0KIAotLnRvb2xiYXItaXRlbS5mbGV4
YWJsZS1zcGFjZSB7Ci0gICAgLXdlYmtpdC1ib3gtZmxleDogMTsKLSAgICB2aXNpYmlsaXR5OiBo
aWRkZW47Ci19Ci0KLS50b29sYmFyLWl0ZW0gaW5wdXQgewotICAgIG1hcmdpbi1ib3R0b206IDhw
eDsKLX0KLQogLnRvb2xiYXItaWNvbiB7CiAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAg
IHdpZHRoOiAzMnB4OwpAQCAtMTQ0LDcgKzEzNCw4IEBAIGJvZHkuYXR0YWNoZWQuaW5hY3RpdmUg
I3Rvb2xiYXIgewogICAgIC13ZWJraXQtYmFja2dyb3VuZC1zaXplOiAxMDAlIGF1dG87CiB9CiAK
LWJvZHkuYXR0YWNoZWQgLnRvb2xiYXItaWNvbiB7Citib2R5LmF0dGFjaGVkIC50b29sYmFyLWlj
b24sCisjdG9vbGJhci1kcm9wZG93biAudG9vbGJhci1pY29uIHsKICAgICB3aWR0aDogMjRweDsK
ICAgICBoZWlnaHQ6IDI0cHg7CiAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKQEAgLTE2OCw5
ICsxNTksOSBAQCBib2R5LmF0dGFjaGVkIC50b29sYmFyLWl0ZW06YWN0aXZlIC50b29sYmFyLWlj
b24gewogICAgIHRleHQtc2hhZG93OiBub25lOwogfQogCi1ib2R5LmF0dGFjaGVkIC50b29sYmFy
LWxhYmVsIHsKK2JvZHkuYXR0YWNoZWQgLnRvb2xiYXItbGFiZWwsCisjdG9vbGJhci1kcm9wZG93
biAudG9vbGJhci1sYWJlbCB7CiAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwotICAgIHZlcnRp
Y2FsLWFsaWduOiBtaWRkbGU7CiAgICAgbWFyZ2luLWxlZnQ6IDNweDsKIH0KIApAQCAtMTc4LDI1
ICsxNjksMTQ1IEBAIGJvZHkuYXR0YWNoZWQgI3NlYXJjaC10b29sYmFyLWxhYmVsIHsKICAgICBk
aXNwbGF5OiBub25lOwogfQogCisjdG9vbGJhci1jb250cm9scyB7CisgICAgZmxvYXQ6IHJpZ2h0
OworICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OworICAgIC13ZWJraXQtYm94LWFsaWduOiBjZW50
ZXI7CisgICAgaGVpZ2h0OiAxMDAlOworfQorCisjdG9vbGJhci1kcm9wZG93bi1hcnJvdyB7Cisg
ICAgZm9udC1zaXplOiAxNnB4OworICAgIGZvbnQtd2VpZ2h0OiBib2xkOworICAgIGJvcmRlcjog
MDsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKKyAgICAtd2Via2l0LWJvcmRl
ci1yYWRpdXM6IDVweDsKKyAgICB0ZXh0LXNoYWRvdzogbm9uZTsKK30KKworYm9keS5hdHRhY2hl
ZCAjdG9vbGJhci1kcm9wZG93bi1hcnJvdyB7CisgICAgZm9udC1zaXplOiAxNHB4OworICAgIHBh
ZGRpbmctYm90dG9tOiA0cHg7Cit9CisKKyN0b29sYmFyLWRyb3Bkb3duLWFycm93LmRyb3Bkb3du
LXZpc2libGUgeworICAgIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtZ3JhZGllbnQobGluZWFy
LCBsZWZ0IHRvcCwgbGVmdCBib3R0b20sIGZyb20ocmdiYSgyNTEsIDI1MSwgMjUxLCAwLjkpKSwg
dG8ocmdiYSgyMzEsIDIzMSwgMjMxLCAwLjkpKSk7Cit9CisKKyN0b29sYmFyLWRyb3Bkb3duLWFy
cm93OmhvdmVyIHsKKyAgICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWdyYWRpZW50KGxpbmVh
ciwgbGVmdCB0b3AsIGxlZnQgYm90dG9tLCBmcm9tKHJnYmEoMTkxLCAxOTEsIDE5MSwgMC43KSks
IHRvKHJnYmEoMTcxLCAxNzEsIDE3MSwgMC41KSkpOworfQorCisjdG9vbGJhci1kcm9wZG93bi1h
cnJvdzphY3RpdmUgeworICAgIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtZ3JhZGllbnQobGlu
ZWFyLCBsZWZ0IHRvcCwgbGVmdCBib3R0b20sIGZyb20ocmdiYSgxMTEsIDExMSwgMTExLCAwLjgp
KSwgdG8ocmdiYSg5MSwgOTEsIDkxLCAwLjgpKSk7Cit9CisKKyN0b29sYmFyLWRyb3Bkb3duIHsK
KyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgei1pbmRleDogMTAwMDsKKyAgICAtd2Via2l0
LWJveC1zaGFkb3c6IDNweCAzcHggM3B4IHJnYmEoMCwgMCwgMCwgMC40KTsKKyAgICBib3JkZXI6
IDFweCBzb2xpZCByZ2IoMTI4LCAxMjgsIDEyOCk7CisgICAgcGFkZGluZzogNHB4OworICAgIGJh
Y2tncm91bmQtY29sb3I6IGluaGVyaXQ7CisgICAgYmFja2dyb3VuZC1pbWFnZTogaW5oZXJpdDsK
K30KKworYm9keS5kZXRhY2hlZC5wbGF0Zm9ybS1tYWMtbGVvcGFyZCAjdG9vbGJhci1kcm9wZG93
biwKK2JvZHkuZGV0YWNoZWQucGxhdGZvcm0tbWFjLXNub3dsZW9wYXJkICN0b29sYmFyLWRyb3Bk
b3duIHsKKyAgICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWdyYWRpZW50KGxpbmVhciwgbGVm
dCB0b3AsIGxlZnQgYm90dG9tLCBmcm9tKHJnYigxOTEsIDE5MSwgMTkxKSksIHRvKHJnYigxNTEs
IDE1MSwgMTUxKSkpOworfQorCisjdG9vbGJhci1kcm9wZG93biAuc2Nyb2xsYWJsZS1jb250ZW50
IHsKKyAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKKyAgICAtd2Via2l0LWJveC1vcmllbnQ6IHZl
cnRpY2FsOworICAgIC13ZWJraXQtYm94LWFsaWduOiBzdGFydDsKK30KKworI3Rvb2xiYXItZHJv
cGRvd24gLnRvb2xiYXItaXRlbSB7CisgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CisgICAgLXdl
YmtpdC1ib3gtb3JpZW50OiBob3Jpem9udGFsOworICAgIG1hcmdpbjogMHB4IDJweDsKKyAgICBw
YWRkaW5nOiA0cHg7CisgICAgd2lkdGg6IDEwMCU7CisgICAgYm9yZGVyOiAxcHggc29saWQgcmdi
YSgwLCAwLCAwLCAwKTsKK30KKworI3Rvb2xiYXItZHJvcGRvd24gLnRvb2xiYXItaXRlbS50b2dn
bGVhYmxlLnRvZ2dsZWQtb24geworICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMTAwLCAxMDAs
IDEyMCwgMC40KTsKKyAgICAtd2Via2l0LWJvcmRlci1pbWFnZTogbm9uZTsKKyAgICBiYWNrZ3Jv
dW5kOiAtd2Via2l0LWdyYWRpZW50KGxpbmVhciwgbGVmdCB0b3AsIGxlZnQgYm90dG9tLCBmcm9t
KHJnYmEoMTI4LCAxMjgsIDEyOCwgMC42KSksIHRvKHJnYmEoMTI4LCAxMjgsIDEyOCwgMC42KSks
IGNvbG9yLXN0b3AoMjAlLCByZ2JhKDE1OCwgMTU4LCAxNTgsIDAuMikpLCBjb2xvci1zdG9wKDgw
JSwgcmdiYSgxNTgsIDE1OCwgMTU4LCAwLjIpKSk7Cit9CisKKyN0b29sYmFyLWRyb3Bkb3duIC50
b29sYmFyLWl0ZW06aG92ZXIgeworICAgIC13ZWJraXQtYm9yZGVyLWltYWdlOiBub25lOworICAg
IGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMTAwLCAxMDAsIDEyMCwgMC44KTsKK30KKworI3Rvb2xi
YXItZHJvcGRvd24gLnRvb2xiYXItaXRlbS50b2dnbGVhYmxlLnRvZ2dsZWQtb246aG92ZXIgewor
ICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMTAwLCAxMDAsIDEyMCwgMSk7Cit9CisKKyN0b29s
YmFyLWRyb3Bkb3duIC50b29sYmFyLWljb24geworICAgIG1hcmdpbi1yaWdodDogMC41ZW07Cit9
CisKKyN0b29sYmFyLWRyb3Bkb3duIC50b29sYmFyLWl0ZW06YWN0aXZlIC50b29sYmFyLWljb24g
eworICAgIGJhY2tncm91bmQtcG9zaXRpb246IDAgMjRweDsKK30KKworLnNjcm9sbGFibGUtY29u
dGVudCB7CisgICAgcG9zaXRpb246IHN0YXRpYzsKKyAgICBoZWlnaHQ6IDEwMCU7CisgICAgb3Zl
cmZsb3cteTogYXV0bzsKKyAgICB3aWR0aDogMTAwJTsKKyAgICBtYXJnaW4tcmlnaHQ6IDEycHg7
CisgICAgcGFkZGluZy1yaWdodDogM3B4OworfQorCisuc2Nyb2xsYWJsZS1jb250ZW50Ojotd2Vi
a2l0LXNjcm9sbGJhciB7CisgICAgd2lkdGg6IDExcHg7Cit9CisKKy5zY3JvbGxhYmxlLWNvbnRl
bnQ6Oi13ZWJraXQtc2Nyb2xsYmFyLWNvcm5lciwKKy5zY3JvbGxhYmxlLWNvbnRlbnQ6Oi13ZWJr
aXQtcmVzaXplciB7CisgICAgZGlzcGxheTogbm9uZTsKK30KKworLnNjcm9sbGFibGUtY29udGVu
dDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6dmVydGljYWwgeworICAgIGJhY2tncm91bmQ6IC13
ZWJraXQtZ3JhZGllbnQobGluZWFyLCBsZWZ0IHRvcCwgcmlnaHQgdG9wLCBmcm9tKHJnYigxOTIs
IDE5MiwgMTkyKSksIHRvKHJnYigxOTIsIDE5MiwgMTkyKSksIGNvbG9yLXN0b3AoNDAlLCByZ2Io
MjE0LCAyMTQsIDIxNCkpKTsKKyAgICBib3JkZXItcmFkaXVzOiA1cHg7CisgICAgbWluLWhlaWdo
dDogMjBweDsKK30KKworLnNjcm9sbGFibGUtY29udGVudDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1
bWI6dmVydGljYWw6aG92ZXIsCisuc2Nyb2xsYWJsZS1jb250ZW50Ojotd2Via2l0LXNjcm9sbGJh
ci10aHVtYjp2ZXJ0aWNhbDphY3RpdmUgeworICAgIGJhY2tncm91bmQ6IC13ZWJraXQtZ3JhZGll
bnQobGluZWFyLCBsZWZ0IHRvcCwgcmlnaHQgdG9wLCBmcm9tKHJnYigyMzAsIDIzMCwgMjMwKSks
IHRvKHJnYigyMzAsIDIzMCwgMjMwKSksIGNvbG9yLXN0b3AoNDAlLCByZ2IoMjUyLCAyNTIsIDI1
MikpKTsKK30KKworLnNjcm9sbGFibGUtY29udGVudDo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2s6
dmVydGljYWwgeworICAgIGJhY2tncm91bmQ6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCBsZWZ0
IHRvcCwgcmlnaHQgdG9wLCBmcm9tKHJnYigxMjgsIDEyOCwgMTI4KSksIHRvKHJnYigxNjQsIDE2
NCwgMTY0KSksIGNvbG9yLXN0b3AoMjUlLCByZ2IoMTY0LCAxNjQsIDE2NCkpKTsKKyAgICBib3Jk
ZXItcmFkaXVzOiA1cHg7Cit9CisKKy50b29sYmFyLXNlYXJjaC1pdGVtIHsKKyAgICBkaXNwbGF5
OiAtd2Via2l0LWJveDsKKyAgICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsOworICAgIC13
ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7CisgICAgLXdlYmtpdC1ib3gtcGFjazogZW5kOworfQor
CiAjc2VhcmNoIHsKICAgICB3aWR0aDogMjA1cHg7CiAgICAgZm9udC1zaXplOiAxNnB4OwotICAg
IG1hcmdpbi1ib3R0b206IDVweDsKIH0KIAogYm9keS5hdHRhY2hlZCAjc2VhcmNoIHsKICAgICBm
b250LXNpemU6IDExcHg7Ci0gICAgbWFyZ2luLWJvdHRvbTogOHB4OwogfQogCiAjc2VhcmNoLXJl
c3VsdHMtbWF0Y2hlcyB7CiAgICAgZm9udC1zaXplOiAxMXB4OwogICAgIHRleHQtc2hhZG93OiBy
Z2JhKDI1NSwgMjU1LCAyNTUsIDAuNSkgMCAxcHggMDsKLSAgICBtYXJnaW4tYm90dG9tOiAyMnB4
OwotfQotCi1ib2R5LmF0dGFjaGVkICNzZWFyY2gtcmVzdWx0cy1tYXRjaGVzIHsKLSAgICBtYXJn
aW4tYm90dG9tOiA2cHg7CiB9CiAKIC50b29sYmFyLWl0ZW0uZWxlbWVudHMgLnRvb2xiYXItaWNv
biB7CkBAIC0yMzgsNyArMzQ5LDcgQEAgYm9keS5hdHRhY2hlZCAjc2VhcmNoLXJlc3VsdHMtbWF0
Y2hlcyB7CiAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAwOwogICAgIGJhY2tncm91bmQtY29s
b3I6IHRyYW5zcGFyZW50OwogICAgIGJvcmRlcjogMCBub25lIHRyYW5zcGFyZW50OwotICAgIG1h
cmdpbjogNXB4IDA7CisgICAgbWFyZ2luLXRvcDogOXB4OwogfQogCiAjY2xvc2UtYnV0dG9uLWxl
ZnQ6aG92ZXIsICNjbG9zZS1idXR0b24tcmlnaHQ6aG92ZXIgewpAQCAtMjQ5LDYgKzM2MCwxMCBA
QCBib2R5LmF0dGFjaGVkICNzZWFyY2gtcmVzdWx0cy1tYXRjaGVzIHsKICAgICBiYWNrZ3JvdW5k
LXBvc2l0aW9uOiAyOHB4IDA7CiB9CiAKKy5jbG9zZS1sZWZ0IHsKKyAgICBmbG9hdDogbGVmdDsK
K30KKwogYm9keS5kZXRhY2hlZCAudG9vbGJhci1pdGVtLmNsb3NlLWxlZnQsIGJvZHkuZGV0YWNo
ZWQgLnRvb2xiYXItaXRlbS5jbG9zZS1yaWdodCB7CiAgICAgZGlzcGxheTogbm9uZTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0
bWwgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCmlu
ZGV4IDU1YjMyZmQuLjlhMmFhNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbApAQCAtMTU1LDE0ICsxNTUsMTcgQEAgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
ICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJTaG9ydGN1dHNIZWxwLmpz
Ij48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJIQVJF
bnRyeS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNy
Yz0iQ29va2llUGFyc2VyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2
YXNjcmlwdCIgc3JjPSJUb29sYmFyLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5IGNsYXNz
PSJkZXRhY2hlZCI+CiAgICAgPGRpdiBpZD0idG9vbGJhciI+CiAgICAgICAgIDxkaXYgY2xhc3M9
InRvb2xiYXItaXRlbSBjbG9zZS1sZWZ0Ij48YnV0dG9uIGlkPSJjbG9zZS1idXR0b24tbGVmdCI+
PC9idXR0b24+PC9kaXY+Ci0gICAgICAgIDxkaXYgY2xhc3M9InRvb2xiYXItaXRlbSBmbGV4YWJs
ZS1zcGFjZSI+PC9kaXY+Ci0gICAgICAgIDxkaXYgY2xhc3M9InRvb2xiYXItaXRlbSBoaWRkZW4i
IGlkPSJzZWFyY2gtcmVzdWx0cy1tYXRjaGVzIj48L2Rpdj4KLSAgICAgICAgPGRpdiBjbGFzcz0i
dG9vbGJhci1pdGVtIj48aW5wdXQgaWQ9InNlYXJjaCIgdHlwZT0ic2VhcmNoIiBpbmNyZW1lbnRh
bCByZXN1bHRzPSIwIj48ZGl2IGlkPSJzZWFyY2gtdG9vbGJhci1sYWJlbCIgY2xhc3M9InRvb2xi
YXItbGFiZWwiPjwvZGl2PjwvZGl2PgotICAgICAgICA8ZGl2IGNsYXNzPSJ0b29sYmFyLWl0ZW0g
Y2xvc2UtcmlnaHQiPjxidXR0b24gaWQ9ImNsb3NlLWJ1dHRvbi1yaWdodCI+PC9idXR0b24+PC9k
aXY+CisgICAgICAgIDxkaXYgaWQ9InRvb2xiYXItY29udHJvbHMiPgorICAgICAgICAgICAgPGRp
diBjbGFzcz0idG9vbGJhci1pdGVtIj48YnV0dG9uIGlkPSJ0b29sYmFyLWRyb3Bkb3duLWFycm93
IiBjbGFzcz0idG9vbGJhci1sYWJlbCI+JnJhcXVvOzwvYnV0dG9uPjwvZGl2PgorICAgICAgICAg
ICAgPGRpdiBjbGFzcz0idG9vbGJhci1pdGVtIGhpZGRlbiIgaWQ9InNlYXJjaC1yZXN1bHRzLW1h
dGNoZXMiPjwvZGl2PgorICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9vbGJhci1pdGVtIHRvb2xi
YXItc2VhcmNoLWl0ZW0iPjxpbnB1dCBpZD0ic2VhcmNoIiB0eXBlPSJzZWFyY2giIGluY3JlbWVu
dGFsIHJlc3VsdHM9IjAiPjxkaXYgaWQ9InNlYXJjaC10b29sYmFyLWxhYmVsIiBjbGFzcz0idG9v
bGJhci1sYWJlbCI+PC9kaXY+PC9kaXY+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b29sYmFy
LWl0ZW0gY2xvc2UtcmlnaHQiPjxidXR0b24gaWQ9ImNsb3NlLWJ1dHRvbi1yaWdodCI+PC9idXR0
b24+PC9kaXY+CisgICAgICAgIDwvZGl2PgogICAgIDwvZGl2PgogICAgIDxkaXYgaWQ9Im1haW4i
PgogICAgICAgICA8ZGl2IGlkPSJtYWluLXBhbmVscyIgc3BlbGxjaGVjaz0iZmFsc2UiPjwvZGl2
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0
b3IuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwpp
bmRleCA2Mjg2OGU5Li40YjZhMmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL2luc3BlY3Rvci5qcwpAQCAtMjY0LDYgKzI2NCw4IEBAIHZhciBXZWJJbnNwZWN0
b3IgPSB7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHRoaXMuZHJhd2VyKQogICAgICAgICAgICAg
dGhpcy5kcmF3ZXIucmVzaXplKCk7CisgICAgICAgIGlmICh0aGlzLnRvb2xiYXIpCisgICAgICAg
ICAgICB0aGlzLnRvb2xiYXIucmVzaXplKCk7CiAgICAgfSwKIAogICAgIGdldCBlcnJvcnMoKQpA
QCAtNDk2LDEzICs0OTgsMTEgQEAgV2ViSW5zcGVjdG9yLmRvTG9hZGVkRG9uZSA9IGZ1bmN0aW9u
KCkKICAgICB0aGlzLnBhbmVscyA9IHt9OwogICAgIHRoaXMuX2NyZWF0ZVBhbmVscygpOwogICAg
IHRoaXMuX3BhbmVsSGlzdG9yeSA9IG5ldyBXZWJJbnNwZWN0b3IuUGFuZWxIaXN0b3J5KCk7Ci0K
LSAgICB2YXIgdG9vbGJhckVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidG9vbGJh
ciIpOwotICAgIHZhciBwcmV2aW91c1Rvb2xiYXJJdGVtID0gdG9vbGJhckVsZW1lbnQuY2hpbGRy
ZW5bMF07CisgICAgdGhpcy50b29sYmFyID0gbmV3IFdlYkluc3BlY3Rvci5Ub29sYmFyKCk7CiAK
ICAgICB0aGlzLnBhbmVsT3JkZXIgPSBbXTsKICAgICBmb3IgKHZhciBwYW5lbE5hbWUgaW4gdGhp
cy5wYW5lbHMpCi0gICAgICAgIHByZXZpb3VzVG9vbGJhckl0ZW0gPSBXZWJJbnNwZWN0b3IuYWRk
UGFuZWxUb29sYmFySWNvbih0b29sYmFyRWxlbWVudCwgdGhpcy5wYW5lbHNbcGFuZWxOYW1lXSwg
cHJldmlvdXNUb29sYmFySXRlbSk7CisgICAgICAgIHRoaXMuYWRkUGFuZWwodGhpcy5wYW5lbHNb
cGFuZWxOYW1lXSk7CiAKICAgICB0aGlzLlRpcHMgPSB7CiAgICAgICAgIFJlc291cmNlTm90Q29t
cHJlc3NlZDoge2lkOiAwLCBtZXNzYWdlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIllvdSBjb3Vs
ZCBzYXZlIGJhbmR3aWR0aCBieSBoYXZpbmcgeW91ciB3ZWIgc2VydmVyIGNvbXByZXNzIHRoaXMg
dHJhbnNmZXIgd2l0aCBnemlwIG9yIHpsaWIuIil9CkBAIC01MzksMTAgKzUzOSw2IEBAIFdlYklu
c3BlY3Rvci5kb0xvYWRlZERvbmUgPSBmdW5jdGlvbigpCiAgICAgc2VhcmNoRmllbGQuYWRkRXZl
bnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5fc2VhcmNoRmllbGRNYW51YWxGb2N1cy5iaW5k
KHRoaXMpLCBmYWxzZSk7IC8vIHdoZW4gdGhlIHNlYXJjaCBmaWVsZCBpcyBtYW51YWxseSBzZWxl
Y3RlZAogICAgIHNlYXJjaEZpZWxkLmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCB0aGlzLl9z
ZWFyY2hLZXlEb3duLmJpbmQodGhpcyksIHRydWUpOwogCi0gICAgdG9vbGJhckVsZW1lbnQuYWRk
RXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy50b29sYmFyRHJhZ1N0YXJ0LCB0cnVlKTsK
LSAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2xvc2UtYnV0dG9uLWxlZnQiKS5hZGRFdmVu
dExpc3RlbmVyKCJjbGljayIsIHRoaXMuY2xvc2UsIHRydWUpOwotICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJjbG9zZS1idXR0b24tcmlnaHQiKS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIs
IHRoaXMuY2xvc2UsIHRydWUpOwotCiAgICAgdGhpcy5leHRlbnNpb25TZXJ2ZXIuaW5pdEV4dGVu
c2lvbnMoKTsKIAogICAgIGZ1bmN0aW9uIG9uUG9wdWxhdGVTY3JpcHRPYmplY3RzKCkKQEAgLTU2
OSwxNiArNTY1LDEwIEBAIFdlYkluc3BlY3Rvci5kb0xvYWRlZERvbmUgPSBmdW5jdGlvbigpCiAg
ICAgQ1NTQWdlbnQuZ2V0U3VwcG9ydGVkQ1NTUHJvcGVydGllcyhwcm9wZXJ0eU5hbWVzQ2FsbGJh
Y2spOwogfQogCi1XZWJJbnNwZWN0b3IuYWRkUGFuZWxUb29sYmFySWNvbiA9IGZ1bmN0aW9uKHRv
b2xiYXJFbGVtZW50LCBwYW5lbCwgcHJldmlvdXNUb29sYmFySXRlbSkKK1dlYkluc3BlY3Rvci5h
ZGRQYW5lbCA9IGZ1bmN0aW9uKHBhbmVsKQogewotICAgIHZhciBwYW5lbFRvb2xiYXJJdGVtID0g
cGFuZWwudG9vbGJhckl0ZW07CiAgICAgdGhpcy5wYW5lbE9yZGVyLnB1c2gocGFuZWwpOwotICAg
IHBhbmVsVG9vbGJhckl0ZW0uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl90b29sYmFy
SXRlbUNsaWNrZWQuYmluZCh0aGlzKSk7Ci0gICAgaWYgKHByZXZpb3VzVG9vbGJhckl0ZW0pCi0g
ICAgICAgIHRvb2xiYXJFbGVtZW50Lmluc2VydEJlZm9yZShwYW5lbFRvb2xiYXJJdGVtLCBwcmV2
aW91c1Rvb2xiYXJJdGVtLm5leHRTaWJsaW5nKTsKLSAgICBlbHNlCi0gICAgICAgIHRvb2xiYXJF
bGVtZW50Lmluc2VydEJlZm9yZShwYW5lbFRvb2xiYXJJdGVtLCB0b29sYmFyRWxlbWVudC5maXJz
dENoaWxkKTsKLSAgICByZXR1cm4gcGFuZWxUb29sYmFySXRlbTsKKyAgICB0aGlzLnRvb2xiYXIu
YWRkUGFuZWwocGFuZWwpOwogfQogCiB2YXIgd2luZG93TG9hZGVkID0gZnVuY3Rpb24oKQpAQCAt
NjIxLDYgKzYxMSw3IEBAIFdlYkluc3BlY3Rvci53aW5kb3dSZXNpemUgPSBmdW5jdGlvbihldmVu
dCkKICAgICBpZiAodGhpcy5jdXJyZW50UGFuZWwpCiAgICAgICAgIHRoaXMuY3VycmVudFBhbmVs
LnJlc2l6ZSgpOwogICAgIHRoaXMuZHJhd2VyLnJlc2l6ZSgpOworICAgIHRoaXMudG9vbGJhci5y
ZXNpemUoKTsKIH0KIAogV2ViSW5zcGVjdG9yLndpbmRvd0ZvY3VzZWQgPSBmdW5jdGlvbihldmVu
dCkK
</data>
<flag name="review"
          id="74946"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>83297</attachid>
            <date>2011-02-22 04:13:25 -0800</date>
            <delta_ts>2011-02-22 04:13:25 -0800</delta_ts>
            <desc>patch to land</desc>
            <filename>toolbar-refactoring</filename>
            <type>text/plain</type>
            <size>29538</size>
            <attacher name="Andrey Kosyakov">caseq</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkMzE4NGNlLi5kZjBmZjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzgg
QEAKKzIwMTEtMDItMjIgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IHByb3ZpZGUgYSBidXR0b24gdG8gZXhwYW5kIGluc3BlY3RvciB0b29sYmFyIHdoZW4gbm90
IGFsbCBwYW5lbCBidXR0b25zIGZpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NTQ2NzEKKworICAgICAgICAtIGZhY3RvcmVkIHRvb2xiYXIgaGFuZGxp
bmcgb3V0IG9mIGluc3BlY3Rvci5qcworICAgICAgICAtIGFkZGVkIHRvb2xiYXIgZHJvcGRvd24K
KworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvajoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvblNlcnZl
ci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FeHRlbnNpb25TZXJ2ZXIucHJvdG90eXBlLl9v
bkNyZWF0ZVBhbmVsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1BhbmVsLmpzOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlBhbmVsLnByb3RvdHlwZS5nZXQgdG9vbGJhckl0ZW0pOgor
ICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvVG9vbGJhci5qczogQWRkZWQuCisgICAgICAg
IChXZWJJbnNwZWN0b3IuVG9vbGJhcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVG9vbGJhci5w
cm90b3R5cGUucmVzaXplKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Ub29sYmFyLnByb3RvdHlw
ZS5hZGRQYW5lbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVG9vbGJhci5wcm90b3R5cGUuX3Rv
b2xiYXJEcmFnU3RhcnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRvb2xiYXIucHJvdG90eXBl
Ll90b29sYmFyRHJhZ0VuZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVG9vbGJhci5wcm90b3R5
cGUuX3Rvb2xiYXJEcmFnKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Ub29sYmFyLnByb3RvdHlw
ZS5fb25DbG9zZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVG9vbGJhci5wcm90b3R5cGUuX3Nl
dERyb3Bkb3duVmlzaWJsZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVG9vbGJhci5wcm90b3R5
cGUuX3RvZ2dsZURyb3Bkb3duKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Ub29sYmFyLnByb3Rv
dHlwZS5fdXBkYXRlRHJvcGRvd25CdXR0b25BbmRIaWRlRHJvcGRvd24pOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlRvb2xiYXIuY3JlYXRlUGFuZWxUb29sYmFySXRlbS5vblRvb2xiYXJJdGVtQ2xp
Y2tlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVG9vbGJhci5jcmVhdGVQYW5lbFRvb2xiYXJJ
dGVtKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Ub29sYmFyRHJvcGRvd24pOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlRvb2xiYXJEcm9wZG93bi5wcm90b3R5cGUuc2hvdyk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuVG9vbGJhckRyb3Bkb3duLnByb3RvdHlwZS5oaWRlKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5Ub29sYmFyRHJvcGRvd24ucHJvdG90eXBlLmdldCB2aXNpYmxlKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5Ub29sYmFyRHJvcGRvd24ucHJvdG90eXBlLl9wb3B1bGF0ZSk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuVG9vbGJhckRyb3Bkb3duLnByb3RvdHlwZS5fb25LZXlEb3du
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmM6CisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzOgorICAgICAgICAoI3Rvb2xiYXIpOgor
ICAgICAgICAoLnRvb2xiYXItaXRlbSk6CisgICAgICAgICgudG9vbGJhci1pdGVtLnRvZ2dsZWFi
bGUpOgorICAgICAgICAoLnRvb2xiYXItaXRlbS50b2dnbGVhYmxlLnRvZ2dsZWQtb24pOgorICAg
ICAgICAoI3Rvb2xiYXItZHJvcGRvd24gLnRvb2xiYXItaWNvbik6CisgICAgICAgICgjdG9vbGJh
ci1kcm9wZG93biAudG9vbGJhci1sYWJlbCk6CisgICAgICAgICgjdG9vbGJhci1jb250cm9scyk6
CisgICAgICAgICgjdG9vbGJhci1kcm9wZG93bi1hcnJvdyk6CisgICAgICAgIChib2R5LmF0dGFj
aGVkICN0b29sYmFyLWRyb3Bkb3duLWFycm93KToKKyAgICAgICAgKCN0b29sYmFyLWRyb3Bkb3du
LWFycm93LmRyb3Bkb3duLXZpc2libGUpOgorICAgICAgICAoI3Rvb2xiYXItZHJvcGRvd24tYXJy
b3c6aG92ZXIpOgorICAgICAgICAoI3Rvb2xiYXItZHJvcGRvd24tYXJyb3c6YWN0aXZlKToKKyAg
ICAgICAgKCN0b29sYmFyLWRyb3Bkb3duKToKKyAgICAgICAgKGJvZHkuZGV0YWNoZWQucGxhdGZv
cm0tbWFjLXNub3dsZW9wYXJkICN0b29sYmFyLWRyb3Bkb3duKToKKyAgICAgICAgKCN0b29sYmFy
LWRyb3Bkb3duIC5zY3JvbGxhYmxlLWNvbnRlbnQpOgorICAgICAgICAoI3Rvb2xiYXItZHJvcGRv
d24gLnRvb2xiYXItaXRlbSk6CisgICAgICAgICgjdG9vbGJhci1kcm9wZG93biAudG9vbGJhci1p
dGVtLnRvZ2dsZWFibGUudG9nZ2xlZC1vbik6CisgICAgICAgICgjdG9vbGJhci1kcm9wZG93biAu
dG9vbGJhci1pdGVtOmhvdmVyKToKKyAgICAgICAgKCN0b29sYmFyLWRyb3Bkb3duIC50b29sYmFy
LWl0ZW0udG9nZ2xlYWJsZS50b2dnbGVkLW9uOmhvdmVyKToKKyAgICAgICAgKCN0b29sYmFyLWRy
b3Bkb3duIC50b29sYmFyLWl0ZW06YWN0aXZlIC50b29sYmFyLWljb24pOgorICAgICAgICAoLnNj
cm9sbGFibGUtY29udGVudCk6CisgICAgICAgICguc2Nyb2xsYWJsZS1jb250ZW50Ojotd2Via2l0
LXNjcm9sbGJhcik6CisgICAgICAgICguc2Nyb2xsYWJsZS1jb250ZW50Ojotd2Via2l0LXJlc2l6
ZXIpOgorICAgICAgICAoLnNjcm9sbGFibGUtY29udGVudDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1
bWI6dmVydGljYWwpOgorICAgICAgICAoLnNjcm9sbGFibGUtY29udGVudDo6LXdlYmtpdC1zY3Jv
bGxiYXItdGh1bWI6dmVydGljYWw6YWN0aXZlKToKKyAgICAgICAgKC5zY3JvbGxhYmxlLWNvbnRl
bnQ6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrOnZlcnRpY2FsKToKKyAgICAgICAgKC50b29sYmFy
LXNlYXJjaC1pdGVtKToKKyAgICAgICAgKCNzZWFyY2gpOgorICAgICAgICAoYm9keS5hdHRhY2hl
ZCAjc2VhcmNoKToKKyAgICAgICAgKCNzZWFyY2gtcmVzdWx0cy1tYXRjaGVzKToKKyAgICAgICAg
KCNjbG9zZS1idXR0b24tbGVmdCwgI2Nsb3NlLWJ1dHRvbi1yaWdodCk6CisgICAgICAgICguY2xv
c2UtbGVmdCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qczoKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5zZXQgYXR0YWNoZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmFkZFBhbmVs
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci53aW5kb3dSZXNpemUpOgorCiAyMDExLTAyLTIyICBT
dGV2ZSBMYWNleSAgPHNqbEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFy
aW4gRmlzaGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGY3ZWE5MDYuLjA2NGQ3NGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKQEAgLTQ3OTgsNiArNDc5OCw3IEBACiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zy
b250LWVuZC9UaW1lbGluZU92ZXJ2aWV3UGFuZS5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9y
L2Zyb250LWVuZC9UaW1lbGluZUdyaWQuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9u
dC1lbmQvVGltZWxpbmVQYW5lbC5qcycsCisgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVu
ZC9Ub29sYmFyLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL1RvcERvd25Q
cm9maWxlRGF0YUdyaWRUcmVlLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5k
L3RyZWVvdXRsaW5lLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL3V0aWxp
dGllcy5qcycsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CmluZGV4IGYzMTAyODguLmY1NGMyNjUgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qCkBAIC02NjIwNSw2ICs2NjIwNSwxMCBAQAogCQkJCQk+CiAJCQkJ
PC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250
LWVuZFxUb29sYmFyLmpzIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJl
bGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxUb3BEb3duUHJvZmlsZURhdGFHcmlk
VHJlZS5qcyIKIAkJCQkJPgogCQkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uU2VydmVyLmpzIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25TZXJ2ZXIuanMKaW5kZXggYmEzMGY3My4uY2Ey
ZTg1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRl
bnNpb25TZXJ2ZXIuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9F
eHRlbnNpb25TZXJ2ZXIuanMKQEAgLTE3NiwxMyArMTc2LDEyIEBAIFdlYkluc3BlY3Rvci5FeHRl
bnNpb25TZXJ2ZXIucHJvdG90eXBlID0gewogICAgICAgICAvLyBzaG91bGRuJ3QgYmUgaGl0IHVu
bGVzcyBzb21lb25lIGlzIGJ5cGFzc2luZyB0aGUgQVBJLgogICAgICAgICBpZiAoaWQgaW4gdGhp
cy5fY2xpZW50T2JqZWN0cyB8fCBpZCBpbiBXZWJJbnNwZWN0b3IucGFuZWxzKQogICAgICAgICAg
ICAgcmV0dXJuIHRoaXMuX3N0YXR1cy5FX0VYSVNUUyhpZCk7CisKICAgICAgICAgdmFyIHBhbmVs
ID0gbmV3IFdlYkluc3BlY3Rvci5FeHRlbnNpb25QYW5lbChpZCwgbWVzc2FnZS50aXRsZSwgbWVz
c2FnZS5pY29uKTsKICAgICAgICAgdGhpcy5fY2xpZW50T2JqZWN0c1tpZF0gPSBwYW5lbDsKLQot
ICAgICAgICB2YXIgdG9vbGJhckVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidG9v
bGJhciIpOwotICAgICAgICB2YXIgbGFzdFRvb2xiYXJJdGVtID0gV2ViSW5zcGVjdG9yLnBhbmVs
T3JkZXJbV2ViSW5zcGVjdG9yLnBhbmVsT3JkZXIubGVuZ3RoIC0gMV0udG9vbGJhckl0ZW07Ci0g
ICAgICAgIFdlYkluc3BlY3Rvci5hZGRQYW5lbFRvb2xiYXJJY29uKHRvb2xiYXJFbGVtZW50LCBw
YW5lbCwgbGFzdFRvb2xiYXJJdGVtKTsKICAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVsc1tpZF0g
PSBwYW5lbDsKKyAgICAgICAgV2ViSW5zcGVjdG9yLmFkZFBhbmVsKHBhbmVsKTsKKwogICAgICAg
ICB2YXIgaWZyYW1lID0gdGhpcy5fY3JlYXRlQ2xpZW50SWZyYW1lKHBhbmVsLmVsZW1lbnQsIG1l
c3NhZ2UudXJsKTsKICAgICAgICAgaWZyYW1lLnN0eWxlLmhlaWdodCA9ICIxMDAlIjsKICAgICAg
ICAgcmV0dXJuIHRoaXMuX3N0YXR1cy5PSygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9QYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvUGFuZWwuanMKaW5kZXggNGM0MmE2MC4uNzU4YzU2ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9QYW5lbC5qcworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1BhbmVsLmpzCkBAIC00NiwyOSArNDYsNyBAQCBXZWJJ
bnNwZWN0b3IuUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICBpZiAodGhpcy5fdG9vbGJhckl0
ZW0pCiAgICAgICAgICAgICByZXR1cm4gdGhpcy5fdG9vbGJhckl0ZW07CiAKLSAgICAgICAgLy8g
U2FtcGxlIHRvb2xiYXIgaXRlbSBhcyBtYXJrdXA6Ci0gICAgICAgIC8vIDxidXR0b24gY2xhc3M9
InRvb2xiYXItaXRlbSByZXNvdXJjZXMgdG9nZ2xlYWJsZSI+Ci0gICAgICAgIC8vIDxkaXYgY2xh
c3M9InRvb2xiYXItaWNvbiI+PC9kaXY+Ci0gICAgICAgIC8vIDxkaXYgY2xhc3M9InRvb2xiYXIt
bGFiZWwiPlJlc291cmNlczwvZGl2PgotICAgICAgICAvLyA8L2J1dHRvbj4KLQotICAgICAgICB0
aGlzLl90b29sYmFySXRlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIpOwotICAg
ICAgICB0aGlzLl90b29sYmFySXRlbS5jbGFzc05hbWUgPSAidG9vbGJhci1pdGVtIHRvZ2dsZWFi
bGUiOwotICAgICAgICB0aGlzLl90b29sYmFySXRlbS5wYW5lbCA9IHRoaXM7Ci0KLSAgICAgICAg
dGhpcy5fdG9vbGJhckl0ZW0uYWRkU3R5bGVDbGFzcyh0aGlzLl9wYW5lbE5hbWUpOwotCi0gICAg
ICAgIHZhciBpY29uRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAg
ICAgICBpY29uRWxlbWVudC5jbGFzc05hbWUgPSAidG9vbGJhci1pY29uIjsKLSAgICAgICAgdGhp
cy5fdG9vbGJhckl0ZW0uYXBwZW5kQ2hpbGQoaWNvbkVsZW1lbnQpOwotCi0gICAgICAgIGlmICgi
dG9vbGJhckl0ZW1MYWJlbCIgaW4gdGhpcykgewotICAgICAgICAgICAgdmFyIGxhYmVsRWxlbWVu
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICAgICAgbGFiZWxFbGVt
ZW50LmNsYXNzTmFtZSA9ICJ0b29sYmFyLWxhYmVsIjsKLSAgICAgICAgICAgIGxhYmVsRWxlbWVu
dC50ZXh0Q29udGVudCA9IHRoaXMudG9vbGJhckl0ZW1MYWJlbDsKLSAgICAgICAgICAgIHRoaXMu
X3Rvb2xiYXJJdGVtLmFwcGVuZENoaWxkKGxhYmVsRWxlbWVudCk7Ci0gICAgICAgIH0KLQorICAg
ICAgICB0aGlzLl90b29sYmFySXRlbSA9IFdlYkluc3BlY3Rvci5Ub29sYmFyLmNyZWF0ZVBhbmVs
VG9vbGJhckl0ZW0odGhpcyk7CiAgICAgICAgIHJldHVybiB0aGlzLl90b29sYmFySXRlbTsKICAg
ICB9LAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Rv
b2xiYXIuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Rvb2xiYXIuanMK
bmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZDFjYzlhNgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVG9vbGJhci5qcwpAQCAt
MCwwICsxLDIyMCBAQAorIC8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDggQXBw
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNyBNYXR0
IExpbGVrIChwZXd0ZXJtb29zZUBnbWFpbC5jb20pLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEpv
c2VwaCBQZWNvcmFybworICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBv
ZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAg
IGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworV2ViSW5zcGVjdG9yLlRvb2xiYXIgPSBmdW5jdGlvbigpCit7CisgICAgdGhp
cy5lbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRvb2xiYXIiKTsKKyAgICB0aGlz
LmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5fdG9vbGJhckRyYWdT
dGFydC5iaW5kKHRoaXMpLCB0cnVlKTsKKworICAgIHRoaXMuX2Ryb3Bkb3duQnV0dG9uID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRvb2xiYXItZHJvcGRvd24tYXJyb3ciKTsKKyAgICB0aGlz
Ll9kcm9wZG93bkJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX3RvZ2dsZURy
b3Bkb3duLmJpbmQodGhpcyksIGZhbHNlKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJjbG9zZS1idXR0b24tbGVmdCIpLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fb25D
bG9zZSwgdHJ1ZSk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNsb3NlLWJ1dHRvbi1y
aWdodCIpLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fb25DbG9zZSwgdHJ1ZSk7Cit9
CisKK1dlYkluc3BlY3Rvci5Ub29sYmFyLnByb3RvdHlwZSA9IHsKKyAgICByZXNpemU6IGZ1bmN0
aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuX3VwZGF0ZURyb3Bkb3duQnV0dG9uQW5kSGlkZURy
b3Bkb3duKCk7CisgICAgfSwKKworICAgIGFkZFBhbmVsOiBmdW5jdGlvbihwYW5lbCkKKyAgICB7
CisgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChwYW5lbC50b29sYmFySXRlbSk7Cisg
ICAgICAgIHRoaXMucmVzaXplKCk7CisgICAgfSwKKworICAgIF90b29sYmFyRHJhZ1N0YXJ0OiBm
dW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIGlmICgoIVdlYkluc3BlY3Rvci5hdHRhY2hl
ZCAmJiBXZWJJbnNwZWN0b3IucGxhdGZvcm1GbGF2b3IgIT09IFdlYkluc3BlY3Rvci5QbGF0Zm9y
bUZsYXZvci5NYWNMZW9wYXJkICYmIFdlYkluc3BlY3Rvci5wbGF0Zm9ybUZsYXZvciAhPT0gV2Vi
SW5zcGVjdG9yLlBsYXRmb3JtRmxhdm9yLk1hY1Nub3dMZW9wYXJkKSB8fCBXZWJJbnNwZWN0b3Iu
cG9ydCA9PSAicXQiKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHZhciB0YXJnZXQg
PSBldmVudC50YXJnZXQ7CisgICAgICAgIGlmICh0YXJnZXQuaGFzU3R5bGVDbGFzcygidG9vbGJh
ci1pdGVtIikgJiYgdGFyZ2V0Lmhhc1N0eWxlQ2xhc3MoInRvZ2dsZWFibGUiKSkKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICBpZiAodGFyZ2V0ICE9PSB0aGlzLmVsZW1lbnQgJiYgIXRh
cmdldC5oYXNTdHlsZUNsYXNzKCJ0b29sYmFyLWl0ZW0iKSkKKyAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICB0aGlzLmVsZW1lbnQubGFzdFNjcmVlblggPSBldmVudC5zY3JlZW5YOworICAg
ICAgICB0aGlzLmVsZW1lbnQubGFzdFNjcmVlblkgPSBldmVudC5zY3JlZW5ZOworCisgICAgICAg
IFdlYkluc3BlY3Rvci5lbGVtZW50RHJhZ1N0YXJ0KHRoaXMuZWxlbWVudCwgdGhpcy5fdG9vbGJh
ckRyYWcuYmluZCh0aGlzKSwgdGhpcy5fdG9vbGJhckRyYWdFbmQuYmluZCh0aGlzKSwgZXZlbnQs
IChXZWJJbnNwZWN0b3IuYXR0YWNoZWQgPyAicm93LXJlc2l6ZSIgOiAiZGVmYXVsdCIpKTsKKyAg
ICB9LAorCisgICAgX3Rvb2xiYXJEcmFnRW5kOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAg
ICAgIFdlYkluc3BlY3Rvci5lbGVtZW50RHJhZ0VuZChldmVudCk7CisKKyAgICAgICAgZGVsZXRl
IHRoaXMuZWxlbWVudC5sYXN0U2NyZWVuWDsKKyAgICAgICAgZGVsZXRlIHRoaXMuZWxlbWVudC5s
YXN0U2NyZWVuWTsKKyAgICB9LAorCisgICAgX3Rvb2xiYXJEcmFnOiBmdW5jdGlvbihldmVudCkK
KyAgICB7CisgICAgICAgIGlmIChXZWJJbnNwZWN0b3IuYXR0YWNoZWQpIHsKKyAgICAgICAgICAg
IHZhciBoZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQgLSAoZXZlbnQuc2NyZWVuWSAtIHRoaXMu
ZWxlbWVudC5sYXN0U2NyZWVuWSk7CisKKyAgICAgICAgICAgIEluc3BlY3RvckZyb250ZW5kSG9z
dC5zZXRBdHRhY2hlZFdpbmRvd0hlaWdodChoZWlnaHQpOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgdmFyIHggPSBldmVudC5zY3JlZW5YIC0gdGhpcy5lbGVtZW50Lmxhc3RTY3JlZW5Y
OworICAgICAgICAgICAgdmFyIHkgPSBldmVudC5zY3JlZW5ZIC0gdGhpcy5lbGVtZW50Lmxhc3RT
Y3JlZW5ZOworCisgICAgICAgICAgICAvLyBXZSBjYW5ub3QgY2FsbCB3aW5kb3cubW92ZUJ5IGhl
cmUgYmVjYXVzZSBpdCByZXN0cmljdHMgdGhlIG1vdmVtZW50CisgICAgICAgICAgICAvLyBvZiB0
aGUgd2luZG93IGF0IHRoZSBlZGdlcy4KKyAgICAgICAgICAgIEluc3BlY3RvckZyb250ZW5kSG9z
dC5tb3ZlV2luZG93QnkoeCwgeSk7CisgICAgICAgIH0KKworICAgICAgICB0aGlzLmVsZW1lbnQu
bGFzdFNjcmVlblggPSBldmVudC5zY3JlZW5YOworICAgICAgICB0aGlzLmVsZW1lbnQubGFzdFNj
cmVlblkgPSBldmVudC5zY3JlZW5ZOworCisgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7
CisgICAgfSwKKworICAgIF9vbkNsb3NlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBXZWJJ
bnNwZWN0b3IuY2xvc2UoKTsKKyAgICB9LAorCisgICAgX3NldERyb3Bkb3duVmlzaWJsZTogZnVu
Y3Rpb24odmlzaWJsZSkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5fZHJvcGRvd24pIHsKKyAg
ICAgICAgICAgIGlmICghdmlzaWJsZSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICB0aGlzLl9kcm9wZG93biA9IG5ldyBXZWJJbnNwZWN0b3IuVG9vbGJhckRyb3Bkb3duKCk7
CisgICAgICAgIH0KKyAgICAgICAgaWYgKHZpc2libGUpCisgICAgICAgICAgICB0aGlzLl9kcm9w
ZG93bi5zaG93KCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRoaXMuX2Ryb3Bkb3duLmhp
ZGUoKTsKKyAgICB9LAorCisgICAgX3RvZ2dsZURyb3Bkb3duOiBmdW5jdGlvbigpCisgICAgewor
ICAgICAgICB0aGlzLl9zZXREcm9wZG93blZpc2libGUoIXRoaXMuX2Ryb3Bkb3duIHx8ICF0aGlz
Ll9kcm9wZG93bi52aXNpYmxlKTsKKyAgICB9LAorCisgICAgX3VwZGF0ZURyb3Bkb3duQnV0dG9u
QW5kSGlkZURyb3Bkb3duOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLl9zZXREcm9w
ZG93blZpc2libGUoZmFsc2UpOworCisgICAgICAgIHZhciB0b29sYmFyID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInRvb2xiYXIiKTsKKyAgICAgICAgaWYgKHRoaXMuZWxlbWVudC5zY3JvbGxI
ZWlnaHQgPiB0aGlzLmVsZW1lbnQuY2xpZW50SGVpZ2h0KQorICAgICAgICAgICAgdGhpcy5fZHJv
cGRvd25CdXR0b24ucmVtb3ZlU3R5bGVDbGFzcygiaGlkZGVuIik7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIHRoaXMuX2Ryb3Bkb3duQnV0dG9uLmFkZFN0eWxlQ2xhc3MoImhpZGRlbiIpOwor
ICAgIH0KK307CisKK1dlYkluc3BlY3Rvci5Ub29sYmFyLmNyZWF0ZVBhbmVsVG9vbGJhckl0ZW0g
PSBmdW5jdGlvbihwYW5lbCkKK3sKKyAgICB2YXIgdG9vbGJhckl0ZW0gPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJidXR0b24iKTsKKyAgICB0b29sYmFySXRlbS5jbGFzc05hbWUgPSAidG9vbGJh
ci1pdGVtIHRvZ2dsZWFibGUiOworICAgIHRvb2xiYXJJdGVtLnBhbmVsID0gcGFuZWw7CisgICAg
dG9vbGJhckl0ZW0uYWRkU3R5bGVDbGFzcyhwYW5lbC5fcGFuZWxOYW1lKTsKKyAgICBmdW5jdGlv
biBvblRvb2xiYXJJdGVtQ2xpY2tlZCgpCisgICAgeworICAgICAgICBXZWJJbnNwZWN0b3IudG9v
bGJhci5fdXBkYXRlRHJvcGRvd25CdXR0b25BbmRIaWRlRHJvcGRvd24oKTsKKyAgICAgICAgV2Vi
SW5zcGVjdG9yLmN1cnJlbnRQYW5lbCA9IHBhbmVsOworICAgIH0KKyAgICB0b29sYmFySXRlbS5h
ZGRFdmVudExpc3RlbmVyKCJjbGljayIsIG9uVG9vbGJhckl0ZW1DbGlja2VkKTsKKworICAgIHZh
ciBpY29uRWxlbWVudCA9IHRvb2xiYXJJdGVtLmNyZWF0ZUNoaWxkKCJkaXYiLCAidG9vbGJhci1p
Y29uIik7CisKKyAgICBpZiAoInRvb2xiYXJJdGVtTGFiZWwiIGluIHBhbmVsKQorICAgICAgICB0
b29sYmFySXRlbS5jcmVhdGVDaGlsZCgiZGl2IiwgInRvb2xiYXItbGFiZWwiKS50ZXh0Q29udGVu
dCA9IHBhbmVsLnRvb2xiYXJJdGVtTGFiZWw7CisKKyAgICBpZiAocGFuZWwgPT09IFdlYkluc3Bl
Y3Rvci5jdXJyZW50UGFuZWwpCisgICAgICAgIHRvb2xiYXJJdGVtLmFkZFN0eWxlQ2xhc3MoInRv
Z2dsZWQtb24iKTsKKworICAgIHJldHVybiB0b29sYmFySXRlbTsKK30KKworV2ViSW5zcGVjdG9y
LlRvb2xiYXJEcm9wZG93biA9IGZ1bmN0aW9uKCkKK3sKKyAgICB0aGlzLl90b29sYmFyID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRvb2xiYXIiKTsKKyAgICB0aGlzLl9hcnJvdyA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJ0b29sYmFyLWRyb3Bkb3duLWFycm93Iik7CisgICAgdGhpcy5l
bGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgdGhpcy5lbGVtZW50
LmlkID0gInRvb2xiYXItZHJvcGRvd24iOworICAgIHRoaXMuX2NvbnRlbnRFbGVtZW50ID0gdGhp
cy5lbGVtZW50LmNyZWF0ZUNoaWxkKCJkaXYiLCAic2Nyb2xsYWJsZS1jb250ZW50Iik7CisgICAg
dGhpcy5fY29udGVudEVsZW1lbnQudGFiSW5kZXggPSAwOworICAgIHRoaXMuX2NvbnRlbnRFbGVt
ZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCB0aGlzLl9vbktleURvd24uYmluZCh0aGlz
KSwgdHJ1ZSk7Cit9CisKK1dlYkluc3BlY3Rvci5Ub29sYmFyRHJvcGRvd24ucHJvdG90eXBlID0g
eworICAgIHNob3c6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLnZpc2libGUp
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHZhciBzdHlsZSA9IHRoaXMuZWxlbWVudC5z
dHlsZTsKKyAgICAgICAgdGhpcy5fcG9wdWxhdGUoKTsKKyAgICAgICAgdmFyIHRvcCA9IHRoaXMu
X2Fycm93LnRvdGFsT2Zmc2V0VG9wICsgdGhpcy5fYXJyb3cuY2xpZW50SGVpZ2h0OworICAgICAg
ICB0aGlzLl9hcnJvdy5hZGRTdHlsZUNsYXNzKCJkcm9wZG93bi12aXNpYmxlIik7CisgICAgICAg
IHRoaXMuZWxlbWVudC5zdHlsZS50b3AgPSB0b3AgKyAicHgiOworICAgICAgICB0aGlzLmVsZW1l
bnQuc3R5bGUubGVmdCA9IHRoaXMuX2Fycm93LnRvdGFsT2Zmc2V0TGVmdCArICJweCI7CisgICAg
ICAgIHRoaXMuX2NvbnRlbnRFbGVtZW50LnN0eWxlLm1heEhlaWdodCA9IHdpbmRvdy5pbm5lckhl
aWdodCAtIHRvcCAtIDIwICsgInB4IjsKKyAgICAgICAgdGhpcy5fdG9vbGJhci5hcHBlbmRDaGls
ZCh0aGlzLmVsZW1lbnQpOworICAgICAgICBXZWJJbnNwZWN0b3IuY3VycmVudEZvY3VzRWxlbWVu
dCA9IHRoaXMuY29udGVudEVsZW1lbnQ7CisgICAgfSwKKworICAgIGhpZGU6IGZ1bmN0aW9uKCkK
KyAgICB7CisgICAgICAgIGlmICghdGhpcy52aXNpYmxlKQorICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB0aGlzLl9hcnJvdy5yZW1vdmVTdHlsZUNsYXNzKCJkcm9wZG93bi12aXNpYmxlIik7
CisgICAgICAgIHRoaXMuZWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMuZWxlbWVu
dCk7CisgICAgICAgIHRoaXMuX2NvbnRlbnRFbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7CisgICAg
fSwKKworICAgIGdldCB2aXNpYmxlKCkKKyAgICB7CisgICAgICAgIHJldHVybiAhIXRoaXMuZWxl
bWVudC5wYXJlbnROb2RlOworICAgIH0sCisKKyAgICBfcG9wdWxhdGU6IGZ1bmN0aW9uKCkKKyAg
ICB7CisgICAgICAgIHZhciB0b29sYmFySXRlbXMgPSB0aGlzLl90b29sYmFyLnF1ZXJ5U2VsZWN0
b3JBbGwoIi50b29sYmFyLWl0ZW0udG9nZ2xlYWJsZSIpOworCisgICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgdG9vbGJhckl0ZW1zLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBpZiAodG9v
bGJhckl0ZW1zW2ldLm9mZnNldFRvcCA+IDApCisgICAgICAgICAgICAgICAgdGhpcy5fY29udGVu
dEVsZW1lbnQuYXBwZW5kQ2hpbGQoV2ViSW5zcGVjdG9yLlRvb2xiYXIuY3JlYXRlUGFuZWxUb29s
YmFySXRlbSh0b29sYmFySXRlbXNbaV0ucGFuZWwpKTsKKyAgICAgICAgfQorICAgIH0sCisKKyAg
ICBfb25LZXlEb3duOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIGlmIChldmVudC5r
ZXlDb2RlICE9PSBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5LZXlzLkVzYy5jb2RlKQor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKKyAg
ICAgICAgdGhpcy5oaWRlKCk7CisgICAgfQorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvV2ViS2l0LnFyYwppbmRleCBiYmRmZjljLi5iYmZiZWNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCkBAIC0xMTEsNiArMTEx
LDcgQEAKICAgICA8ZmlsZT5UaW1lbGluZUdyaWQuanM8L2ZpbGU+CiAgICAgPGZpbGU+VGltZWxp
bmVPdmVydmlld1BhbmUuanM8L2ZpbGU+CiAgICAgPGZpbGU+VGltZWxpbmVQYW5lbC5qczwvZmls
ZT4KKyAgICA8ZmlsZT5Ub29sYmFyLmpzPC9maWxlPgogICAgIDxmaWxlPlRvcERvd25Qcm9maWxl
RGF0YUdyaWRUcmVlLmpzPC9maWxlPgogICAgIDxmaWxlPnRyZWVvdXRsaW5lLmpzPC9maWxlPgog
ICAgIDxmaWxlPnV0aWxpdGllcy5qczwvZmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcwppbmRleCBjOTkyODA2Li5hN2JkM2IzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzCkBA
IC03Niw3ICs3Niw2IEBAIGltZyB7CiAgICAgbGVmdDogMDsKICAgICByaWdodDogMDsKICAgICBo
ZWlnaHQ6IDU2cHg7Ci0gICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgICAgcGFkZGluZzogMCA1
cHg7CiAgICAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQg
dG9wLCBsZWZ0IGJvdHRvbSwgZnJvbShyZ2IoMTkxLCAxOTEsIDE5MSkpLCB0byhyZ2IoMTUxLCAx
NTEsIDE1MSkpKTsKICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiKDgwLCA4MCwgODAp
OwpAQCAtMTExLDMyICsxMTAsMjMgQEAgYm9keS5hdHRhY2hlZC5pbmFjdGl2ZSAjdG9vbGJhciB7
CiB9CiAKIC50b29sYmFyLWl0ZW0gewotICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwotICAgIHBh
ZGRpbmc6IDRweCA2cHg7CiAgICAgbWFyZ2luOiAwOworICAgIHBhZGRpbmc6IDAgNnB4OwogICAg
IGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogICAgIGJvcmRlci1zdHlsZTogbm9uZTsK
ICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50OwotICAgIC13ZWJraXQtYm94LW9yaWVudDog
dmVydGljYWw7Ci0gICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjsKLSAgICAtd2Via2l0LWJv
eC1wYWNrOiBlbmQ7Cit9CisKKy50b29sYmFyLWl0ZW0udG9nZ2xlYWJsZSB7CisgICAgcGFkZGlu
Zy10b3A6IDRweDsKIH0KIAogLnRvb2xiYXItaXRlbS50b2dnbGVhYmxlLnRvZ2dsZWQtb24gewog
ICAgIGJvcmRlci13aWR0aDogMCAycHggMCAycHg7Ci0gICAgcGFkZGluZzogNHB4IDRweDsKKyAg
ICBwYWRkaW5nOiA0cHggNHB4IDAgNHB4OwogICAgIC13ZWJraXQtYm9yZGVyLWltYWdlOiB1cmwo
SW1hZ2VzL3Rvb2xiYXJJdGVtU2VsZWN0ZWQucG5nKSAwIDIgMCAyOwogfQogCi0udG9vbGJhci1p
dGVtLmZsZXhhYmxlLXNwYWNlIHsKLSAgICAtd2Via2l0LWJveC1mbGV4OiAxOwotICAgIHZpc2li
aWxpdHk6IGhpZGRlbjsKLX0KLQotLnRvb2xiYXItaXRlbSBpbnB1dCB7Ci0gICAgbWFyZ2luLWJv
dHRvbTogOHB4OwotfQotCiAudG9vbGJhci1pY29uIHsKICAgICBkaXNwbGF5OiBpbmxpbmUtYmxv
Y2s7CiAgICAgd2lkdGg6IDMycHg7CkBAIC0xNDQsNyArMTM0LDggQEAgYm9keS5hdHRhY2hlZC5p
bmFjdGl2ZSAjdG9vbGJhciB7CiAgICAgLXdlYmtpdC1iYWNrZ3JvdW5kLXNpemU6IDEwMCUgYXV0
bzsKIH0KIAotYm9keS5hdHRhY2hlZCAudG9vbGJhci1pY29uIHsKK2JvZHkuYXR0YWNoZWQgLnRv
b2xiYXItaWNvbiwKKyN0b29sYmFyLWRyb3Bkb3duIC50b29sYmFyLWljb24gewogICAgIHdpZHRo
OiAyNHB4OwogICAgIGhlaWdodDogMjRweDsKICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwpA
QCAtMTY4LDkgKzE1OSw5IEBAIGJvZHkuYXR0YWNoZWQgLnRvb2xiYXItaXRlbTphY3RpdmUgLnRv
b2xiYXItaWNvbiB7CiAgICAgdGV4dC1zaGFkb3c6IG5vbmU7CiB9CiAKLWJvZHkuYXR0YWNoZWQg
LnRvb2xiYXItbGFiZWwgeworYm9keS5hdHRhY2hlZCAudG9vbGJhci1sYWJlbCwKKyN0b29sYmFy
LWRyb3Bkb3duIC50b29sYmFyLWxhYmVsIHsKICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Ci0g
ICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICAgICBtYXJnaW4tbGVmdDogM3B4OwogfQogCkBA
IC0xNzgsMjUgKzE2OSwxNDUgQEAgYm9keS5hdHRhY2hlZCAjc2VhcmNoLXRvb2xiYXItbGFiZWwg
ewogICAgIGRpc3BsYXk6IG5vbmU7CiB9CiAKKyN0b29sYmFyLWNvbnRyb2xzIHsKKyAgICBmbG9h
dDogcmlnaHQ7CisgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CisgICAgLXdlYmtpdC1ib3gtYWxp
Z246IGNlbnRlcjsKKyAgICBoZWlnaHQ6IDEwMCU7Cit9CisKKyN0b29sYmFyLWRyb3Bkb3duLWFy
cm93IHsKKyAgICBmb250LXNpemU6IDE2cHg7CisgICAgZm9udC13ZWlnaHQ6IGJvbGQ7CisgICAg
Ym9yZGVyOiAwOworICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OworICAgIC13ZWJr
aXQtYm9yZGVyLXJhZGl1czogNXB4OworICAgIHRleHQtc2hhZG93OiBub25lOworfQorCitib2R5
LmF0dGFjaGVkICN0b29sYmFyLWRyb3Bkb3duLWFycm93IHsKKyAgICBmb250LXNpemU6IDE0cHg7
CisgICAgcGFkZGluZy1ib3R0b206IDRweDsKK30KKworI3Rvb2xiYXItZHJvcGRvd24tYXJyb3cu
ZHJvcGRvd24tdmlzaWJsZSB7CisgICAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1ncmFkaWVu
dChsaW5lYXIsIGxlZnQgdG9wLCBsZWZ0IGJvdHRvbSwgZnJvbShyZ2JhKDI1MSwgMjUxLCAyNTEs
IDAuOSkpLCB0byhyZ2JhKDIzMSwgMjMxLCAyMzEsIDAuOSkpKTsKK30KKworI3Rvb2xiYXItZHJv
cGRvd24tYXJyb3c6aG92ZXIgeworICAgIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtZ3JhZGll
bnQobGluZWFyLCBsZWZ0IHRvcCwgbGVmdCBib3R0b20sIGZyb20ocmdiYSgxOTEsIDE5MSwgMTkx
LCAwLjcpKSwgdG8ocmdiYSgxNzEsIDE3MSwgMTcxLCAwLjUpKSk7Cit9CisKKyN0b29sYmFyLWRy
b3Bkb3duLWFycm93OmFjdGl2ZSB7CisgICAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1ncmFk
aWVudChsaW5lYXIsIGxlZnQgdG9wLCBsZWZ0IGJvdHRvbSwgZnJvbShyZ2JhKDExMSwgMTExLCAx
MTEsIDAuOCkpLCB0byhyZ2JhKDkxLCA5MSwgOTEsIDAuOCkpKTsKK30KKworI3Rvb2xiYXItZHJv
cGRvd24geworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB6LWluZGV4OiAxMDAwOworICAg
IC13ZWJraXQtYm94LXNoYWRvdzogM3B4IDNweCAzcHggcmdiYSgwLCAwLCAwLCAwLjQpOworICAg
IGJvcmRlcjogMXB4IHNvbGlkIHJnYigxMjgsIDEyOCwgMTI4KTsKKyAgICBwYWRkaW5nOiA0cHg7
CisgICAgYmFja2dyb3VuZC1jb2xvcjogaW5oZXJpdDsKKyAgICBiYWNrZ3JvdW5kLWltYWdlOiBp
bmhlcml0OworfQorCitib2R5LmRldGFjaGVkLnBsYXRmb3JtLW1hYy1sZW9wYXJkICN0b29sYmFy
LWRyb3Bkb3duLAorYm9keS5kZXRhY2hlZC5wbGF0Zm9ybS1tYWMtc25vd2xlb3BhcmQgI3Rvb2xi
YXItZHJvcGRvd24geworICAgIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtZ3JhZGllbnQobGlu
ZWFyLCBsZWZ0IHRvcCwgbGVmdCBib3R0b20sIGZyb20ocmdiKDE5MSwgMTkxLCAxOTEpKSwgdG8o
cmdiKDE1MSwgMTUxLCAxNTEpKSk7Cit9CisKKyN0b29sYmFyLWRyb3Bkb3duIC5zY3JvbGxhYmxl
LWNvbnRlbnQgeworICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OworICAgIC13ZWJraXQtYm94LW9y
aWVudDogdmVydGljYWw7CisgICAgLXdlYmtpdC1ib3gtYWxpZ246IHN0YXJ0OworfQorCisjdG9v
bGJhci1kcm9wZG93biAudG9vbGJhci1pdGVtIHsKKyAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsK
KyAgICAtd2Via2l0LWJveC1vcmllbnQ6IGhvcml6b250YWw7CisgICAgbWFyZ2luOiAwcHggMnB4
OworICAgIHBhZGRpbmc6IDRweDsKKyAgICB3aWR0aDogMTAwJTsKKyAgICBib3JkZXI6IDFweCBz
b2xpZCByZ2JhKDAsIDAsIDAsIDApOworfQorCisjdG9vbGJhci1kcm9wZG93biAudG9vbGJhci1p
dGVtLnRvZ2dsZWFibGUudG9nZ2xlZC1vbiB7CisgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgx
MDAsIDEwMCwgMTIwLCAwLjQpOworICAgIC13ZWJraXQtYm9yZGVyLWltYWdlOiBub25lOworICAg
IGJhY2tncm91bmQ6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCBsZWZ0IHRvcCwgbGVmdCBib3R0
b20sIGZyb20ocmdiYSgxMjgsIDEyOCwgMTI4LCAwLjYpKSwgdG8ocmdiYSgxMjgsIDEyOCwgMTI4
LCAwLjYpKSwgY29sb3Itc3RvcCgyMCUsIHJnYmEoMTU4LCAxNTgsIDE1OCwgMC4yKSksIGNvbG9y
LXN0b3AoODAlLCByZ2JhKDE1OCwgMTU4LCAxNTgsIDAuMikpKTsKK30KKworI3Rvb2xiYXItZHJv
cGRvd24gLnRvb2xiYXItaXRlbTpob3ZlciB7CisgICAgLXdlYmtpdC1ib3JkZXItaW1hZ2U6IG5v
bmU7CisgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgxMDAsIDEwMCwgMTIwLCAwLjgpOworfQor
CisjdG9vbGJhci1kcm9wZG93biAudG9vbGJhci1pdGVtLnRvZ2dsZWFibGUudG9nZ2xlZC1vbjpo
b3ZlciB7CisgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgxMDAsIDEwMCwgMTIwLCAxKTsKK30K
KworI3Rvb2xiYXItZHJvcGRvd24gLnRvb2xiYXItaWNvbiB7CisgICAgbWFyZ2luLXJpZ2h0OiAw
LjVlbTsKK30KKworI3Rvb2xiYXItZHJvcGRvd24gLnRvb2xiYXItaXRlbTphY3RpdmUgLnRvb2xi
YXItaWNvbiB7CisgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAyNHB4OworfQorCisuc2Nyb2xs
YWJsZS1jb250ZW50IHsKKyAgICBwb3NpdGlvbjogc3RhdGljOworICAgIGhlaWdodDogMTAwJTsK
KyAgICBvdmVyZmxvdy15OiBhdXRvOworICAgIHdpZHRoOiAxMDAlOworICAgIG1hcmdpbi1yaWdo
dDogMTJweDsKKyAgICBwYWRkaW5nLXJpZ2h0OiAzcHg7Cit9CisKKy5zY3JvbGxhYmxlLWNvbnRl
bnQ6Oi13ZWJraXQtc2Nyb2xsYmFyIHsKKyAgICB3aWR0aDogMTFweDsKK30KKworLnNjcm9sbGFi
bGUtY29udGVudDo6LXdlYmtpdC1zY3JvbGxiYXItY29ybmVyLAorLnNjcm9sbGFibGUtY29udGVu
dDo6LXdlYmtpdC1yZXNpemVyIHsKKyAgICBkaXNwbGF5OiBub25lOworfQorCisuc2Nyb2xsYWJs
ZS1jb250ZW50Ojotd2Via2l0LXNjcm9sbGJhci10aHVtYjp2ZXJ0aWNhbCB7CisgICAgYmFja2dy
b3VuZDogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9wLCByaWdodCB0b3AsIGZyb20o
cmdiKDE5MiwgMTkyLCAxOTIpKSwgdG8ocmdiKDE5MiwgMTkyLCAxOTIpKSwgY29sb3Itc3RvcCg0
MCUsIHJnYigyMTQsIDIxNCwgMjE0KSkpOworICAgIGJvcmRlci1yYWRpdXM6IDVweDsKKyAgICBt
aW4taGVpZ2h0OiAyMHB4OworfQorCisuc2Nyb2xsYWJsZS1jb250ZW50Ojotd2Via2l0LXNjcm9s
bGJhci10aHVtYjp2ZXJ0aWNhbDpob3ZlciwKKy5zY3JvbGxhYmxlLWNvbnRlbnQ6Oi13ZWJraXQt
c2Nyb2xsYmFyLXRodW1iOnZlcnRpY2FsOmFjdGl2ZSB7CisgICAgYmFja2dyb3VuZDogLXdlYmtp
dC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9wLCByaWdodCB0b3AsIGZyb20ocmdiKDIzMCwgMjMw
LCAyMzApKSwgdG8ocmdiKDIzMCwgMjMwLCAyMzApKSwgY29sb3Itc3RvcCg0MCUsIHJnYigyNTIs
IDI1MiwgMjUyKSkpOworfQorCisuc2Nyb2xsYWJsZS1jb250ZW50Ojotd2Via2l0LXNjcm9sbGJh
ci10cmFjazp2ZXJ0aWNhbCB7CisgICAgYmFja2dyb3VuZDogLXdlYmtpdC1ncmFkaWVudChsaW5l
YXIsIGxlZnQgdG9wLCByaWdodCB0b3AsIGZyb20ocmdiKDEyOCwgMTI4LCAxMjgpKSwgdG8ocmdi
KDE2NCwgMTY0LCAxNjQpKSwgY29sb3Itc3RvcCgyNSUsIHJnYigxNjQsIDE2NCwgMTY0KSkpOwor
ICAgIGJvcmRlci1yYWRpdXM6IDVweDsKK30KKworLnRvb2xiYXItc2VhcmNoLWl0ZW0geworICAg
IGRpc3BsYXk6IC13ZWJraXQtYm94OworICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7
CisgICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjsKKyAgICAtd2Via2l0LWJveC1wYWNrOiBl
bmQ7Cit9CisKICNzZWFyY2ggewogICAgIHdpZHRoOiAyMDVweDsKICAgICBmb250LXNpemU6IDE2
cHg7Ci0gICAgbWFyZ2luLWJvdHRvbTogNXB4OwogfQogCiBib2R5LmF0dGFjaGVkICNzZWFyY2gg
ewogICAgIGZvbnQtc2l6ZTogMTFweDsKLSAgICBtYXJnaW4tYm90dG9tOiA4cHg7CiB9CiAKICNz
ZWFyY2gtcmVzdWx0cy1tYXRjaGVzIHsKICAgICBmb250LXNpemU6IDExcHg7CiAgICAgdGV4dC1z
aGFkb3c6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KSAwIDFweCAwOwotICAgIG1hcmdpbi1ib3R0
b206IDIycHg7Ci19Ci0KLWJvZHkuYXR0YWNoZWQgI3NlYXJjaC1yZXN1bHRzLW1hdGNoZXMgewot
ICAgIG1hcmdpbi1ib3R0b206IDZweDsKIH0KIAogLnRvb2xiYXItaXRlbS5lbGVtZW50cyAudG9v
bGJhci1pY29uIHsKQEAgLTIzOCw3ICszNDksNyBAQCBib2R5LmF0dGFjaGVkICNzZWFyY2gtcmVz
dWx0cy1tYXRjaGVzIHsKICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIDA7CiAgICAgYmFja2dy
b3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICAgYm9yZGVyOiAwIG5vbmUgdHJhbnNwYXJlbnQ7
Ci0gICAgbWFyZ2luOiA1cHggMDsKKyAgICBtYXJnaW4tdG9wOiA5cHg7CiB9CiAKICNjbG9zZS1i
dXR0b24tbGVmdDpob3ZlciwgI2Nsb3NlLWJ1dHRvbi1yaWdodDpob3ZlciB7CkBAIC0yNDksNiAr
MzYwLDEwIEBAIGJvZHkuYXR0YWNoZWQgI3NlYXJjaC1yZXN1bHRzLW1hdGNoZXMgewogICAgIGJh
Y2tncm91bmQtcG9zaXRpb246IDI4cHggMDsKIH0KIAorLmNsb3NlLWxlZnQgeworICAgIGZsb2F0
OiBsZWZ0OworfQorCiBib2R5LmRldGFjaGVkIC50b29sYmFyLWl0ZW0uY2xvc2UtbGVmdCwgYm9k
eS5kZXRhY2hlZCAudG9vbGJhci1pdGVtLmNsb3NlLXJpZ2h0IHsKICAgICBkaXNwbGF5OiBub25l
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNw
ZWN0b3IuaHRtbCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9y
Lmh0bWwKaW5kZXggNTViMzJmZC4uOWEyYWE2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCkBAIC0xNTUsMTQgKzE1NSwxNyBAQCBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlNob3J0Y3V0
c0hlbHAuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBz
cmM9IkhBUkVudHJ5LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNj
cmlwdCIgc3JjPSJDb29raWVQYXJzZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0IiBzcmM9IlRvb2xiYXIuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJv
ZHkgY2xhc3M9ImRldGFjaGVkIj4KICAgICA8ZGl2IGlkPSJ0b29sYmFyIj4KICAgICAgICAgPGRp
diBjbGFzcz0idG9vbGJhci1pdGVtIGNsb3NlLWxlZnQiPjxidXR0b24gaWQ9ImNsb3NlLWJ1dHRv
bi1sZWZ0Ij48L2J1dHRvbj48L2Rpdj4KLSAgICAgICAgPGRpdiBjbGFzcz0idG9vbGJhci1pdGVt
IGZsZXhhYmxlLXNwYWNlIj48L2Rpdj4KLSAgICAgICAgPGRpdiBjbGFzcz0idG9vbGJhci1pdGVt
IGhpZGRlbiIgaWQ9InNlYXJjaC1yZXN1bHRzLW1hdGNoZXMiPjwvZGl2PgotICAgICAgICA8ZGl2
IGNsYXNzPSJ0b29sYmFyLWl0ZW0iPjxpbnB1dCBpZD0ic2VhcmNoIiB0eXBlPSJzZWFyY2giIGlu
Y3JlbWVudGFsIHJlc3VsdHM9IjAiPjxkaXYgaWQ9InNlYXJjaC10b29sYmFyLWxhYmVsIiBjbGFz
cz0idG9vbGJhci1sYWJlbCI+PC9kaXY+PC9kaXY+Ci0gICAgICAgIDxkaXYgY2xhc3M9InRvb2xi
YXItaXRlbSBjbG9zZS1yaWdodCI+PGJ1dHRvbiBpZD0iY2xvc2UtYnV0dG9uLXJpZ2h0Ij48L2J1
dHRvbj48L2Rpdj4KKyAgICAgICAgPGRpdiBpZD0idG9vbGJhci1jb250cm9scyI+CisgICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJ0b29sYmFyLWl0ZW0iPjxidXR0b24gaWQ9InRvb2xiYXItZHJvcGRv
d24tYXJyb3ciIGNsYXNzPSJ0b29sYmFyLWxhYmVsIj4mcmFxdW87PC9idXR0b24+PC9kaXY+Cisg
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b29sYmFyLWl0ZW0gaGlkZGVuIiBpZD0ic2VhcmNoLXJl
c3VsdHMtbWF0Y2hlcyI+PC9kaXY+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b29sYmFyLWl0
ZW0gdG9vbGJhci1zZWFyY2gtaXRlbSI+PGlucHV0IGlkPSJzZWFyY2giIHR5cGU9InNlYXJjaCIg
aW5jcmVtZW50YWwgcmVzdWx0cz0iMCI+PGRpdiBpZD0ic2VhcmNoLXRvb2xiYXItbGFiZWwiIGNs
YXNzPSJ0b29sYmFyLWxhYmVsIj48L2Rpdj48L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9
InRvb2xiYXItaXRlbSBjbG9zZS1yaWdodCI+PGJ1dHRvbiBpZD0iY2xvc2UtYnV0dG9uLXJpZ2h0
Ij48L2J1dHRvbj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CiAgICAgPC9kaXY+CiAgICAgPGRpdiBp
ZD0ibWFpbiI+CiAgICAgICAgIDxkaXYgaWQ9Im1haW4tcGFuZWxzIiBzcGVsbGNoZWNrPSJmYWxz
ZSI+PC9kaXY+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L2luc3BlY3Rvci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVj
dG9yLmpzCmluZGV4IDYyODY4ZTkuLjE2YWFlMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCkBAIC0yNjQsNiArMjY0LDggQEAgdmFyIFdl
Ykluc3BlY3RvciA9IHsKICAgICAgICAgfQogICAgICAgICBpZiAodGhpcy5kcmF3ZXIpCiAgICAg
ICAgICAgICB0aGlzLmRyYXdlci5yZXNpemUoKTsKKyAgICAgICAgaWYgKHRoaXMudG9vbGJhcikK
KyAgICAgICAgICAgIHRoaXMudG9vbGJhci5yZXNpemUoKTsKICAgICB9LAogCiAgICAgZ2V0IGVy
cm9ycygpCkBAIC00OTYsMTMgKzQ5OCwxMSBAQCBXZWJJbnNwZWN0b3IuZG9Mb2FkZWREb25lID0g
ZnVuY3Rpb24oKQogICAgIHRoaXMucGFuZWxzID0ge307CiAgICAgdGhpcy5fY3JlYXRlUGFuZWxz
KCk7CiAgICAgdGhpcy5fcGFuZWxIaXN0b3J5ID0gbmV3IFdlYkluc3BlY3Rvci5QYW5lbEhpc3Rv
cnkoKTsKLQotICAgIHZhciB0b29sYmFyRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJ0b29sYmFyIik7Ci0gICAgdmFyIHByZXZpb3VzVG9vbGJhckl0ZW0gPSB0b29sYmFyRWxlbWVu
dC5jaGlsZHJlblswXTsKKyAgICB0aGlzLnRvb2xiYXIgPSBuZXcgV2ViSW5zcGVjdG9yLlRvb2xi
YXIoKTsKIAogICAgIHRoaXMucGFuZWxPcmRlciA9IFtdOwogICAgIGZvciAodmFyIHBhbmVsTmFt
ZSBpbiB0aGlzLnBhbmVscykKLSAgICAgICAgcHJldmlvdXNUb29sYmFySXRlbSA9IFdlYkluc3Bl
Y3Rvci5hZGRQYW5lbFRvb2xiYXJJY29uKHRvb2xiYXJFbGVtZW50LCB0aGlzLnBhbmVsc1twYW5l
bE5hbWVdLCBwcmV2aW91c1Rvb2xiYXJJdGVtKTsKKyAgICAgICAgdGhpcy5hZGRQYW5lbCh0aGlz
LnBhbmVsc1twYW5lbE5hbWVdKTsKIAogICAgIHRoaXMuVGlwcyA9IHsKICAgICAgICAgUmVzb3Vy
Y2VOb3RDb21wcmVzc2VkOiB7aWQ6IDAsIG1lc3NhZ2U6IFdlYkluc3BlY3Rvci5VSVN0cmluZygi
WW91IGNvdWxkIHNhdmUgYmFuZHdpZHRoIGJ5IGhhdmluZyB5b3VyIHdlYiBzZXJ2ZXIgY29tcHJl
c3MgdGhpcyB0cmFuc2ZlciB3aXRoIGd6aXAgb3IgemxpYi4iKX0KQEAgLTUzOSwxMCArNTM5LDYg
QEAgV2ViSW5zcGVjdG9yLmRvTG9hZGVkRG9uZSA9IGZ1bmN0aW9uKCkKICAgICBzZWFyY2hGaWVs
ZC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLl9zZWFyY2hGaWVsZE1hbnVhbEZv
Y3VzLmJpbmQodGhpcyksIGZhbHNlKTsgLy8gd2hlbiB0aGUgc2VhcmNoIGZpZWxkIGlzIG1hbnVh
bGx5IHNlbGVjdGVkCiAgICAgc2VhcmNoRmllbGQuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIs
IHRoaXMuX3NlYXJjaEtleURvd24uYmluZCh0aGlzKSwgdHJ1ZSk7CiAKLSAgICB0b29sYmFyRWxl
bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLnRvb2xiYXJEcmFnU3RhcnQs
IHRydWUpOwotICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjbG9zZS1idXR0b24tbGVmdCIp
LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5jbG9zZSwgdHJ1ZSk7Ci0gICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImNsb3NlLWJ1dHRvbi1yaWdodCIpLmFkZEV2ZW50TGlzdGVuZXIo
ImNsaWNrIiwgdGhpcy5jbG9zZSwgdHJ1ZSk7Ci0KICAgICB0aGlzLmV4dGVuc2lvblNlcnZlci5p
bml0RXh0ZW5zaW9ucygpOwogCiAgICAgZnVuY3Rpb24gb25Qb3B1bGF0ZVNjcmlwdE9iamVjdHMo
KQpAQCAtNTY5LDE2ICs1NjUsMTAgQEAgV2ViSW5zcGVjdG9yLmRvTG9hZGVkRG9uZSA9IGZ1bmN0
aW9uKCkKICAgICBDU1NBZ2VudC5nZXRTdXBwb3J0ZWRDU1NQcm9wZXJ0aWVzKHByb3BlcnR5TmFt
ZXNDYWxsYmFjayk7CiB9CiAKLVdlYkluc3BlY3Rvci5hZGRQYW5lbFRvb2xiYXJJY29uID0gZnVu
Y3Rpb24odG9vbGJhckVsZW1lbnQsIHBhbmVsLCBwcmV2aW91c1Rvb2xiYXJJdGVtKQorV2ViSW5z
cGVjdG9yLmFkZFBhbmVsID0gZnVuY3Rpb24ocGFuZWwpCiB7Ci0gICAgdmFyIHBhbmVsVG9vbGJh
ckl0ZW0gPSBwYW5lbC50b29sYmFySXRlbTsKICAgICB0aGlzLnBhbmVsT3JkZXIucHVzaChwYW5l
bCk7Ci0gICAgcGFuZWxUb29sYmFySXRlbS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMu
X3Rvb2xiYXJJdGVtQ2xpY2tlZC5iaW5kKHRoaXMpKTsKLSAgICBpZiAocHJldmlvdXNUb29sYmFy
SXRlbSkKLSAgICAgICAgdG9vbGJhckVsZW1lbnQuaW5zZXJ0QmVmb3JlKHBhbmVsVG9vbGJhckl0
ZW0sIHByZXZpb3VzVG9vbGJhckl0ZW0ubmV4dFNpYmxpbmcpOwotICAgIGVsc2UKLSAgICAgICAg
dG9vbGJhckVsZW1lbnQuaW5zZXJ0QmVmb3JlKHBhbmVsVG9vbGJhckl0ZW0sIHRvb2xiYXJFbGVt
ZW50LmZpcnN0Q2hpbGQpOwotICAgIHJldHVybiBwYW5lbFRvb2xiYXJJdGVtOworICAgIHRoaXMu
dG9vbGJhci5hZGRQYW5lbChwYW5lbCk7CiB9CiAKIHZhciB3aW5kb3dMb2FkZWQgPSBmdW5jdGlv
bigpCkBAIC02MjEsNiArNjExLDcgQEAgV2ViSW5zcGVjdG9yLndpbmRvd1Jlc2l6ZSA9IGZ1bmN0
aW9uKGV2ZW50KQogICAgIGlmICh0aGlzLmN1cnJlbnRQYW5lbCkKICAgICAgICAgdGhpcy5jdXJy
ZW50UGFuZWwucmVzaXplKCk7CiAgICAgdGhpcy5kcmF3ZXIucmVzaXplKCk7CisgICAgdGhpcy50
b29sYmFyLnJlc2l6ZSgpOwogfQogCiBXZWJJbnNwZWN0b3Iud2luZG93Rm9jdXNlZCA9IGZ1bmN0
aW9uKGV2ZW50KQpAQCAtMTAzNCw1OCArMTAyNSw2IEBAIFdlYkluc3BlY3Rvci50b2dnbGVBdHRh
Y2ggPSBmdW5jdGlvbigpCiAgICAgICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC5yZXF1ZXN0RGV0
YWNoV2luZG93KCk7CiB9CiAKLVdlYkluc3BlY3Rvci50b29sYmFyRHJhZ1N0YXJ0ID0gZnVuY3Rp
b24oZXZlbnQpCi17Ci0gICAgaWYgKCghV2ViSW5zcGVjdG9yLmF0dGFjaGVkICYmIFdlYkluc3Bl
Y3Rvci5wbGF0Zm9ybUZsYXZvciAhPT0gV2ViSW5zcGVjdG9yLlBsYXRmb3JtRmxhdm9yLk1hY0xl
b3BhcmQgJiYgV2ViSW5zcGVjdG9yLnBsYXRmb3JtRmxhdm9yICE9PSBXZWJJbnNwZWN0b3IuUGxh
dGZvcm1GbGF2b3IuTWFjU25vd0xlb3BhcmQpIHx8IFdlYkluc3BlY3Rvci5wb3J0ID09ICJxdCIp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIHZhciB0YXJnZXQgPSBldmVudC50YXJnZXQ7Ci0gICAg
aWYgKHRhcmdldC5oYXNTdHlsZUNsYXNzKCJ0b29sYmFyLWl0ZW0iKSAmJiB0YXJnZXQuaGFzU3R5
bGVDbGFzcygidG9nZ2xlYWJsZSIpKQotICAgICAgICByZXR1cm47Ci0KLSAgICB2YXIgdG9vbGJh
ciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0b29sYmFyIik7Ci0gICAgaWYgKHRhcmdldCAh
PT0gdG9vbGJhciAmJiAhdGFyZ2V0Lmhhc1N0eWxlQ2xhc3MoInRvb2xiYXItaXRlbSIpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICB0b29sYmFyLmxhc3RTY3JlZW5YID0gZXZlbnQuc2NyZWVuWDsK
LSAgICB0b29sYmFyLmxhc3RTY3JlZW5ZID0gZXZlbnQuc2NyZWVuWTsKLQotICAgIFdlYkluc3Bl
Y3Rvci5lbGVtZW50RHJhZ1N0YXJ0KHRvb2xiYXIsIFdlYkluc3BlY3Rvci50b29sYmFyRHJhZywg
V2ViSW5zcGVjdG9yLnRvb2xiYXJEcmFnRW5kLCBldmVudCwgKFdlYkluc3BlY3Rvci5hdHRhY2hl
ZCA/ICJyb3ctcmVzaXplIiA6ICJkZWZhdWx0IikpOwotfQotCi1XZWJJbnNwZWN0b3IudG9vbGJh
ckRyYWdFbmQgPSBmdW5jdGlvbihldmVudCkKLXsKLSAgICB2YXIgdG9vbGJhciA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJ0b29sYmFyIik7Ci0KLSAgICBXZWJJbnNwZWN0b3IuZWxlbWVudERy
YWdFbmQoZXZlbnQpOwotCi0gICAgZGVsZXRlIHRvb2xiYXIubGFzdFNjcmVlblg7Ci0gICAgZGVs
ZXRlIHRvb2xiYXIubGFzdFNjcmVlblk7Ci19Ci0KLVdlYkluc3BlY3Rvci50b29sYmFyRHJhZyA9
IGZ1bmN0aW9uKGV2ZW50KQotewotICAgIHZhciB0b29sYmFyID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInRvb2xiYXIiKTsKLQotICAgIGlmIChXZWJJbnNwZWN0b3IuYXR0YWNoZWQpIHsKLSAg
ICAgICAgdmFyIGhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodCAtIChldmVudC5zY3JlZW5ZIC0g
dG9vbGJhci5sYXN0U2NyZWVuWSk7Ci0KLSAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0LnNl
dEF0dGFjaGVkV2luZG93SGVpZ2h0KGhlaWdodCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgdmFy
IHggPSBldmVudC5zY3JlZW5YIC0gdG9vbGJhci5sYXN0U2NyZWVuWDsKLSAgICAgICAgdmFyIHkg
PSBldmVudC5zY3JlZW5ZIC0gdG9vbGJhci5sYXN0U2NyZWVuWTsKLQotICAgICAgICAvLyBXZSBj
YW5ub3QgY2FsbCB3aW5kb3cubW92ZUJ5IGhlcmUgYmVjYXVzZSBpdCByZXN0cmljdHMgdGhlIG1v
dmVtZW50Ci0gICAgICAgIC8vIG9mIHRoZSB3aW5kb3cgYXQgdGhlIGVkZ2VzLgotICAgICAgICBJ
bnNwZWN0b3JGcm9udGVuZEhvc3QubW92ZVdpbmRvd0J5KHgsIHkpOwotICAgIH0KLQotICAgIHRv
b2xiYXIubGFzdFNjcmVlblggPSBldmVudC5zY3JlZW5YOwotICAgIHRvb2xiYXIubGFzdFNjcmVl
blkgPSBldmVudC5zY3JlZW5ZOwotCi0gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKLX0KLQog
V2ViSW5zcGVjdG9yLmVsZW1lbnREcmFnU3RhcnQgPSBmdW5jdGlvbihlbGVtZW50LCBkaXZpZGVy
RHJhZywgZWxlbWVudERyYWdFbmQsIGV2ZW50LCBjdXJzb3IpCiB7CiAgICAgaWYgKHRoaXMuX2Vs
ZW1lbnREcmFnZ2luZ0V2ZW50TGlzdGVuZXIgfHwgdGhpcy5fZWxlbWVudEVuZERyYWdnaW5nRXZl
bnRMaXN0ZW5lcikK
</data>

          </attachment>
      

    </bug>

</bugzilla>