<?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>185644</bug_id>
          
          <creation_ts>2018-05-15 01:11:13 -0700</creation_ts>
          <short_desc>Web Inspector: create a navigation item for toggling the overlay rulers/guides</short_desc>
          <delta_ts>2018-05-16 18:38:16 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>32263</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Devin Rousso">hi</reporter>
          <assigned_to name="Devin Rousso">hi</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mattbaker</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1423957</commentid>
    <comment_count>0</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2018-05-15 01:11:13 -0700</bug_when>
    <thetext>As per Matt Baker&apos;s suggestion on &lt;https://webkit.org/b/32263#c6&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1423959</commentid>
    <comment_count>1</comment_count>
      <attachid>340397</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2018-05-15 01:17:20 -0700</bug_when>
    <thetext>Created attachment 340397
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1424112</commentid>
    <comment_count>2</comment_count>
      <attachid>340397</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2018-05-15 13:34:52 -0700</bug_when>
    <thetext>Comment on attachment 340397
Patch

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

Some preliminary feedback.

&gt; Source/JavaScriptCore/inspector/protocol/OverlayTypes.json:101
&gt; +                { &quot;name&quot;: &quot;shouldDrawRulers&quot;, &quot;type&quot;: &quot;boolean&quot; }

&quot;showRulers&quot;, see the next comment.

&gt; Source/JavaScriptCore/inspector/protocol/Page.json:169
&gt; +            &quot;name&quot;: &quot;setShouldDrawRulers&quot;,

What do you think about renaming this &quot;setShowRulers&quot;, to better match &quot;setShowPaintRects&quot;? I don&apos;t think we use &quot;should&quot; in any of the protocol commands. I&apos;d also be fine with &quot;setRulersEnabled&quot;, but since it&apos;s a visual thing the verb &quot;show&quot; seems like a better fit.

&gt; Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js:323
&gt; +localizedStrings[&quot;Draw Rulers&quot;] = &quot;Draw Rulers&quot;;

&quot;Show Rulers&quot; better matches &quot;Hide Rulers&quot;, even if you decide not to change the name of the protocol command.

&gt; Source/WebInspectorUI/UserInterface/Views/DOMTreeContentView.js:101
&gt; +        let items = [this._shouldDrawRulersButtonNavigationItem, this._showPrintStylesButtonNavigationItem, this._showsShadowDOMButtonNavigationItem];

This should be conditional on backend support:

let items = [this._showPrintStylesButtonNavigationItem, this._showsShadowDOMButtonNavigationItem];
if (PageAgent.setShouldDrawRulers)
    items.unshift(this._shouldDrawRulersButtonNavigationItem);

&gt; Source/WebInspectorUI/UserInterface/Views/DOMTreeContentView.js:581
&gt; +        PageAgent.setShouldDrawRulers(this._shouldDrawRulersButtonNavigationItem.activated);

This needs a compatibility check:

// COMPATIBILITY (iOS 11.3)
if (PageAgent.setShouldDrawRulers)
   ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1424202</commentid>
    <comment_count>3</comment_count>
      <attachid>340454</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2018-05-15 18:07:37 -0700</bug_when>
    <thetext>Created attachment 340454
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1424204</commentid>
    <comment_count>4</comment_count>
      <attachid>340456</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2018-05-15 18:10:14 -0700</bug_when>
    <thetext>Created attachment 340456
Patch

Forgot to add Rulers.svg 😅</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1424212</commentid>
    <comment_count>5</comment_count>
      <attachid>340456</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2018-05-15 18:39:30 -0700</bug_when>
    <thetext>Comment on attachment 340456
Patch

r-, because rulers still show up when inspecting an element after turning rulers off. Otherwise it looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1424219</commentid>
    <comment_count>6</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2018-05-15 19:30:51 -0700</bug_when>
    <thetext>(In reply to Matt Baker from comment #5)
&gt; Comment on attachment 340456 [details]
&gt; Patch
&gt; 
&gt; r-, because rulers still show up when inspecting an element after turning
&gt; rulers off. Otherwise it looks good.
I actually wanted to do it specifically this way.  I see the &quot;Show Rulers&quot; button more like as a &quot;keep them visible&quot;.  I think we always want to show the rulers whenever an element is being highlighted on the page, so the button is more of a &quot;always show them&quot;  or not.  Maybe the wording could be improved 🤔</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1424238</commentid>
    <comment_count>7</comment_count>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2018-05-15 21:46:07 -0700</bug_when>
    <thetext>(In reply to Devin Rousso from comment #6)
&gt; (In reply to Matt Baker from comment #5)
&gt; &gt; Comment on attachment 340456 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; r-, because rulers still show up when inspecting an element after turning
&gt; &gt; rulers off. Otherwise it looks good.
&gt; I actually wanted to do it specifically this way.  I see the &quot;Show Rulers&quot;
&gt; button more like as a &quot;keep them visible&quot;.  I think we always want to show
&gt; the rulers whenever an element is being highlighted on the page, so the
&gt; button is more of a &quot;always show them&quot;  or not.  Maybe the wording could be
&gt; improved 🤔

We might want to solicit more feedback. Personally I think this behavior is too subtle, and would prefer an option exist to turn rulers off completely when highlighting DOM elements. Both Chrome and FireFox allow this in their ruler implementations.

Their behaviors do differ though. Once enabled, Chrome only shows rulers during element inspection, whereas in FireFox they are always shown. FWIW, I prefer the approach taken by FF.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1424274</commentid>
    <comment_count>8</comment_count>
      <attachid>340480</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2018-05-16 01:43:39 -0700</bug_when>
    <thetext>Created attachment 340480
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1424447</commentid>
    <comment_count>9</comment_count>
      <attachid>340480</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2018-05-16 12:44:19 -0700</bug_when>
    <thetext>Comment on attachment 340480
Patch

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

r=me, with the one change I mentioned.

After playing with this more, I really like that the zero label is shown along with the first major tick mark on scroll-back. It&apos;s definitely a nice touch.

&gt; Source/WebInspectorUI/UserInterface/Base/Setting.js:124
&gt; +    showRulers: new WI.Setting(&quot;show-rulers&quot;, true),

This should be off by default. We can revisit this in the future as the feature matures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1424560</commentid>
    <comment_count>10</comment_count>
      <attachid>340544</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2018-05-16 17:46:41 -0700</bug_when>
    <thetext>Created attachment 340544
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1424570</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-05-16 18:37:03 -0700</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 340544:

media/modern-media-controls/tracks-panel/tracks-panel-up-click-over-media-does-not-dimiss-media-controls-when-media-is-playing.html bug 185709 (author: graouts@apple.com)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1424571</commentid>
    <comment_count>12</comment_count>
      <attachid>340544</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-05-16 18:37:38 -0700</bug_when>
    <thetext>Comment on attachment 340544
Patch

Clearing flags on attachment: 340544

Committed r231881: &lt;https://trac.webkit.org/changeset/231881&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1424572</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-05-16 18:37:40 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1424573</commentid>
    <comment_count>14</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-05-16 18:38:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/40317731&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>340397</attachid>
            <date>2018-05-15 01:17:20 -0700</date>
            <delta_ts>2018-05-15 18:07:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>185644.diff</filename>
            <type>text/plain</type>
            <size>16464</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDQ0OTQ3YWYwM2E4Li4wMDI0ODFlNzhlNyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTgtMDUtMTUgIERldmlu
IFJvdXNzbyAgPHdlYmtpdEBkZXZpbnJvdXNzby5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogY3JlYXRlIGEgbmF2aWdhdGlvbiBpdGVtIGZvciB0b2dnbGluZyB0aGUgb3ZlcmxheSBydWxl
cnMvZ3VpZGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xODU2NDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIGluc3BlY3Rvci9wcm90b2NvbC9PdmVybGF5VHlwZXMuanNvbjoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvcHJvdG9jb2wvUGFnZS5qc29uOgorCiAyMDE4LTA1LTE1ICBEZXZpbiBSb3Vzc28gIDx3
ZWJraXRAZGV2aW5yb3Vzc28uY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IEFkZCBydWxl
cnMgYW5kIGd1aWRlcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9wcm90b2NvbC9PdmVybGF5VHlwZXMuanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvcHJvdG9jb2wvT3ZlcmxheVR5cGVzLmpzb24KaW5kZXggZThlNDUzOTc4MzkuLjRhNmFi
ZjE2NGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3Rv
Y29sL092ZXJsYXlUeXBlcy5qc29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvcHJvdG9jb2wvT3ZlcmxheVR5cGVzLmpzb24KQEAgLTk3LDcgKzk3LDggQEAKICAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogInBhZ2VTY2FsZUZhY3RvciIsICJ0eXBlIjogIm51bWJlciIgfSwK
ICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInBhZ2Vab29tRmFjdG9yIiwgInR5cGUiOiAibnVt
YmVyIiB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic2Nyb2xsT2Zmc2V0IiwgIiRyZWYi
OiAiUG9pbnQiIH0sCi0gICAgICAgICAgICAgICAgeyAibmFtZSI6ICJjb250ZW50SW5zZXQiLCAi
JHJlZiI6ICJTaXplIiB9CisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJjb250ZW50SW5zZXQi
LCAiJHJlZiI6ICJTaXplIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic2hvdWxkRHJh
d1J1bGVycyIsICJ0eXBlIjogImJvb2xlYW4iIH0KICAgICAgICAgICAgIF0KICAgICAgICAgfQog
ICAgIF0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9j
b2wvUGFnZS5qc29uIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9Q
YWdlLmpzb24KaW5kZXggNmU4YjA5ZjUzNTUuLmYzNmJmODcwNDNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL1BhZ2UuanNvbgorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL1BhZ2UuanNvbgpAQCAtMTY1LDYg
KzE2NSwxMyBAQAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVzdWx0IiwgInR5cGUiOiAi
YXJyYXkiLCAiaXRlbXMiOiB7ICIkcmVmIjogIlNlYXJjaFJlc3VsdCIgfSwgImRlc2NyaXB0aW9u
IjogIkxpc3Qgb2Ygc2VhcmNoIHJlc3VsdHMuIiB9CiAgICAgICAgICAgICBdCiAgICAgICAgIH0s
CisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogInNldFNob3VsZERyYXdSdWxlcnMiLAor
ICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJlcXVlc3RzIHRoYXQgYmFja2VuZCBkcmF3IHJ1
bGVycyBpbiB0aGUgaW5zcGVjdG9yIG92ZXJsYXkiLAorICAgICAgICAgICAgInBhcmFtZXRlcnMi
OiBbCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXN1bHQiLCAidHlwZSI6ICJib29sZWFu
IiwgImRlc2NyaXB0aW9uIjogIlRydWUgZm9yIHNob3dpbmcgcnVsZXJzIiB9CisgICAgICAgICAg
ICBdCisgICAgICAgIH0sCiAgICAgICAgIHsKICAgICAgICAgICAgICJuYW1lIjogInNldFNob3dQ
YWludFJlY3RzIiwKICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXF1ZXN0cyB0aGF0IGJh
Y2tlbmQgc2hvd3MgcGFpbnQgcmVjdGFuZ2xlcyIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDlhY2MyMzQ5ZmQu
LjFkN2ZhZjBjZGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTgtMDUtMTUgIERl
dmluIFJvdXNzbyAgPHdlYmtpdEBkZXZpbnJvdXNzby5jb20+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogY3JlYXRlIGEgbmF2aWdhdGlvbiBpdGVtIGZvciB0b2dnbGluZyB0aGUgb3ZlcmxheSBy
dWxlcnMvZ3VpZGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODU2NDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGlzIHBhdGNoIGlzIHB1cmVseSBhIHZpc3VhbCBjaGFuZ2UgZm9yIFdlYkluc3BlY3Rv
ciwgYW5kIGRvZXNuJ3QgYWZmZWN0IGFueXRoaW5nIGVsc2UuCisKKyAgICAgICAgKiBpbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBh
Z2VBZ2VudDo6c2V0U2hvdWxkRHJhd1J1bGVycyk6CisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yT3ZlcmxheS5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck92ZXJsYXk6OnNldFNob3VsZERyYXdSdWxl
cnMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT3ZlcmxheTo6cmVzZXQpOgorCisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXlQYWdlLmpzOgorICAgICAgICAoZHJhd05v
ZGVIaWdobGlnaHQpOgorICAgICAgICAoZHJhd1F1YWRIaWdobGlnaHQpOgorICAgICAgICAocmVz
ZXQpOgorCiAyMDE4LTA1LTE1ICBEZXZpbiBSb3Vzc28gIDx3ZWJraXRAZGV2aW5yb3Vzc28uY29t
PgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IEFkZCBydWxlcnMgYW5kIGd1aWRlcwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCmluZGV4IDZlNjY1NWVk
NjdjLi42ZWY0NmEyMWJmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvck92ZXJsYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JPdmVybGF5LmNwcApAQCAtMzkyLDYgKzM5MiwxNiBAQCB2b2lkIEluc3BlY3Rvck92ZXJsYXk6
OnNob3dQYWludFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgIGZvcmNlUGFpbnQoKTsK
IH0KIAordm9pZCBJbnNwZWN0b3JPdmVybGF5OjpzZXRTaG91bGREcmF3UnVsZXJzKGJvb2wgc2hv
dWxkRHJhd1J1bGVycykKK3sKKyAgICBpZiAobV9zaG91bGREcmF3UnVsZXJzID09IHNob3VsZERy
YXdSdWxlcnMpCisgICAgICAgIHJldHVybjsKKworICAgIG1fc2hvdWxkRHJhd1J1bGVycyA9IHNo
b3VsZERyYXdSdWxlcnM7CisKKyAgICB1cGRhdGUoKTsKK30KKwogdm9pZCBJbnNwZWN0b3JPdmVy
bGF5Ojp1cGRhdGVQYWludFJlY3RzVGltZXJGaXJlZCgpCiB7CiAgICAgTW9ub3RvbmljVGltZSBu
b3cgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKQEAgLTc0Miw2ICs3NTIsNyBAQCB2b2lkIEluc3Bl
Y3Rvck92ZXJsYXk6OnJlc2V0KGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSwgY29uc3QgSW50
UG9pbnQmIHNjcm9sbAogICAgICAgICAuc2V0UGFnZVpvb21GYWN0b3IobV9wYWdlLm1haW5GcmFt
ZSgpLnBhZ2Vab29tRmFjdG9yKCkpCiAgICAgICAgIC5zZXRTY3JvbGxPZmZzZXQoYnVpbGRPYmpl
Y3RGb3JQb2ludChzY3JvbGxPZmZzZXQpKQogICAgICAgICAuc2V0Q29udGVudEluc2V0KGJ1aWxk
T2JqZWN0Rm9yU2l6ZShJbnRTaXplKDAsIG1fcGFnZS5tYWluRnJhbWUoKS52aWV3KCktPnRvcENv
bnRlbnRJbnNldChTY3JvbGxWaWV3OjpUb3BDb250ZW50SW5zZXRUeXBlOjpXZWJDb3JlT3JQbGF0
Zm9ybUNvbnRlbnRJbnNldCkpKSkKKyAgICAgICAgLnNldFNob3VsZERyYXdSdWxlcnMobV9zaG91
bGREcmF3UnVsZXJzKQogICAgICAgICAucmVsZWFzZSgpOwogICAgIGV2YWx1YXRlSW5PdmVybGF5
KCJyZXNldCIsIFdURk1vdmUoY29uZmlnT2JqZWN0KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5oIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuaAppbmRleCAzOGJhODUwZjQ2ZS4uMGQ1NTRmNmZmMDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuaApAQCAtMTE1
LDYgKzExNSw4IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIHNldFNob3dpbmdQYWludFJlY3Rz
KGJvb2wpOwogICAgIHZvaWQgc2hvd1BhaW50UmVjdChjb25zdCBGbG9hdFJlY3QmKTsKKworICAg
IHZvaWQgc2V0U2hvdWxkRHJhd1J1bGVycyhib29sKTsKICAgICAKICAgICBOb2RlKiBoaWdobGln
aHRlZE5vZGUoKSBjb25zdDsKIApAQCAtMTU3LDYgKzE1OSw3IEBAIHByaXZhdGU6CiAgICAgVGlt
ZXIgbV9wYWludFJlY3RVcGRhdGVUaW1lcjsKICAgICBib29sIG1faW5kaWNhdGluZyB7ZmFsc2V9
OwogICAgIGJvb2wgbV9zaG93aW5nUGFpbnRSZWN0cyB7ZmFsc2V9OworICAgIGJvb2wgbV9zaG91
bGREcmF3UnVsZXJzIHtmYWxzZX07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheVBhZ2UuanMg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheVBhZ2UuanMKaW5kZXgg
NzE0ZDhhNjZhYjMuLjZkOGQ5ZGFmMDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yT3ZlcmxheVBhZ2UuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvck92ZXJsYXlQYWdlLmpzCkBAIC02NCwxMCArNjQsMTIgQEAgZnVuY3Rpb24g
ZHJhd05vZGVIaWdobGlnaHQoYWxsSGlnaGxpZ2h0cykKICAgICAgICAgfSk7CiAgICAgfQogCi0g
ICAgX2RyYXdSdWxlcnMoewotICAgICAgICBtaXJyb3JYOiBib3VuZHMubWluWSA8IERBVEEuY29u
dGVudEluc2V0LmhlaWdodCArIGdyaWRTaXplICYmIGJvdW5kcy5tYXhZIDwgREFUQS52aWV3cG9y
dFNpemUuaGVpZ2h0IC0gZ3JpZFNpemUsCi0gICAgICAgIG1pcnJvclk6IGJvdW5kcy5taW5YIDwg
REFUQS5jb250ZW50SW5zZXQud2lkdGggKyBncmlkU2l6ZSAmJiBib3VuZHMubWF4WCA8IERBVEEu
dmlld3BvcnRTaXplLndpZHRoIC0gZ3JpZFNpemUsCi0gICAgfSk7CisgICAgaWYgKERBVEEuc2hv
dWxkRHJhd1J1bGVycykgeworICAgICAgICBfZHJhd1J1bGVycyh7CisgICAgICAgICAgICBtaXJy
b3JYOiBib3VuZHMubWluWSA8IERBVEEuY29udGVudEluc2V0LmhlaWdodCArIGdyaWRTaXplICYm
IGJvdW5kcy5tYXhZIDwgREFUQS52aWV3cG9ydFNpemUuaGVpZ2h0IC0gZ3JpZFNpemUsCisgICAg
ICAgICAgICBtaXJyb3JZOiBib3VuZHMubWluWCA8IERBVEEuY29udGVudEluc2V0LndpZHRoICsg
Z3JpZFNpemUgJiYgYm91bmRzLm1heFggPCBEQVRBLnZpZXdwb3J0U2l6ZS53aWR0aCAtIGdyaWRT
aXplLAorICAgICAgICB9KTsKKyAgICB9CiAKICAgICBpZiAoYWxsSGlnaGxpZ2h0cy5sZW5ndGgg
PT09IDEpIHsKICAgICAgICAgZm9yIChsZXQgZnJhZ21lbnQgb2YgYWxsSGlnaGxpZ2h0c1swXS5m
cmFnbWVudHMpCkBAIC04MywxMCArODUsMTIgQEAgZnVuY3Rpb24gZHJhd1F1YWRIaWdobGlnaHQo
aGlnaGxpZ2h0KQogICAgICAgICBfZHJhd091dGxpbmVkUXVhZChoaWdobGlnaHQucXVhZHNbMF0s
IGhpZ2hsaWdodC5jb250ZW50Q29sb3IsIGhpZ2hsaWdodC5jb250ZW50T3V0bGluZUNvbG9yLCBi
b3VuZHMpOwogICAgIH0pOwogCi0gICAgX2RyYXdSdWxlcnMoewotICAgICAgICBtaXJyb3JYOiBi
b3VuZHMubWluWSA8IERBVEEuY29udGVudEluc2V0LmhlaWdodCArIGdyaWRTaXplICYmIGJvdW5k
cy5tYXhZIDwgREFUQS52aWV3cG9ydFNpemUuaGVpZ2h0IC0gZ3JpZFNpemUsCi0gICAgICAgIG1p
cnJvclk6IGJvdW5kcy5taW5YIDwgREFUQS5jb250ZW50SW5zZXQud2lkdGggKyBncmlkU2l6ZSAm
JiBib3VuZHMubWF4WCA8IERBVEEudmlld3BvcnRTaXplLndpZHRoIC0gZ3JpZFNpemUsCi0gICAg
fSk7CisgICAgaWYgKERBVEEuc2hvdWxkRHJhd1J1bGVycykgeworICAgICAgICBfZHJhd1J1bGVy
cyh7CisgICAgICAgICAgICBtaXJyb3JYOiBib3VuZHMubWluWSA8IERBVEEuY29udGVudEluc2V0
LmhlaWdodCArIGdyaWRTaXplICYmIGJvdW5kcy5tYXhZIDwgREFUQS52aWV3cG9ydFNpemUuaGVp
Z2h0IC0gZ3JpZFNpemUsCisgICAgICAgICAgICBtaXJyb3JZOiBib3VuZHMubWluWCA8IERBVEEu
Y29udGVudEluc2V0LndpZHRoICsgZ3JpZFNpemUgJiYgYm91bmRzLm1heFggPCBEQVRBLnZpZXdw
b3J0U2l6ZS53aWR0aCAtIGdyaWRTaXplLAorICAgICAgICB9KTsKKyAgICB9CiB9CiAKIGZ1bmN0
aW9uIHF1YWRFcXVhbHMocXVhZDEsIHF1YWQyKQpAQCAtMTIxLDYgKzEyNSw3IEBAIGZ1bmN0aW9u
IHJlc2V0KHBheWxvYWQpCiAgICAgREFUQS5wYWdlWm9vbUZhY3RvciA9IHBheWxvYWQucGFnZVpv
b21GYWN0b3I7CiAgICAgREFUQS5zY3JvbGxPZmZzZXQgPSBwYXlsb2FkLnNjcm9sbE9mZnNldDsK
ICAgICBEQVRBLmNvbnRlbnRJbnNldCA9IHBheWxvYWQuY29udGVudEluc2V0OworICAgIERBVEEu
c2hvdWxkRHJhd1J1bGVycyA9IHBheWxvYWQuc2hvdWxkRHJhd1J1bGVyczsKIAogICAgIHdpbmRv
dy5jYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7CiAgICAgd2luZG93
LnBhaW50UmVjdHNDYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGFpbnRyZWN0cy1j
YW52YXMiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yUGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yUGFnZUFnZW50LmNwcAppbmRleCBhZWU5ZjU4NTY5OS4uY2RjYjljNDhjMDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VB
Z2VudC5jcHAKQEAgLTU0Miw2ICs1NDIsMTEgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNl
YXJjaEluUmVzb3VyY2VzKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB0ZXh0LCBjb24KICAg
ICAgICAgbmV0d29ya0FnZW50LT5zZWFyY2hPdGhlclJlcXVlc3RzKHJlZ2V4LCByZXN1bHQpOwog
fQogCit2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6c2V0U2hvdWxkRHJhd1J1bGVycyhFcnJvclN0
cmluZyYsIGJvb2wgc2hvdWxkRHJhd1J1bGVycykKK3sKKyAgICBtX292ZXJsYXktPnNldFNob3Vs
ZERyYXdSdWxlcnMoc2hvdWxkRHJhd1J1bGVycyk7Cit9CisKIHZvaWQgSW5zcGVjdG9yUGFnZUFn
ZW50OjpzZXRTaG93UGFpbnRSZWN0cyhFcnJvclN0cmluZyYsIGJvb2wgc2hvdykKIHsKICAgICBt
X3Nob3dQYWludFJlY3RzID0gc2hvdzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oCmluZGV4IDEwMjk2YjM4YzdkLi41ZDlkMzQ5
YzE5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JQYWdlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvclBhZ2VBZ2VudC5oCkBAIC05Nyw2ICs5Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGdldFJl
c291cmNlQ29udGVudChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgY29uc3Qg
U3RyaW5nJiB1cmwsIFN0cmluZyogY29udGVudCwgYm9vbCogYmFzZTY0RW5jb2RlZCkgZmluYWw7
CiAgICAgdm9pZCBzZWFyY2hJblJlc291cmNlKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBm
cmFtZUlkLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgY29uc3QgYm9v
bCogb3B0aW9uYWxDYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBvcHRpb25hbElzUmVnZXgsIGNv
bnN0IFN0cmluZyogb3B0aW9uYWxSZXF1ZXN0SWQsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+PiYpIGZpbmFsOwogICAg
IHZvaWQgc2VhcmNoSW5SZXNvdXJjZXMoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25z
dCBib29sKiBjYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBpc1JlZ2V4LCBSZWZQdHI8SlNPTjo6
QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpTZWFyY2hSZXN1bHQ+PiYpIGZpbmFs
OworICAgIHZvaWQgc2V0U2hvdWxkRHJhd1J1bGVycyhFcnJvclN0cmluZyYsIGJvb2wpIGZpbmFs
OwogICAgIHZvaWQgc2V0U2hvd1BhaW50UmVjdHMoRXJyb3JTdHJpbmcmLCBib29sIHNob3cpIGZp
bmFsOwogICAgIHZvaWQgc2V0RW11bGF0ZWRNZWRpYShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYpIGZpbmFsOwogICAgIHZvaWQgZ2V0Q29tcG9zaXRpbmdCb3JkZXJzVmlzaWJsZShFcnJvclN0
cmluZyYsIGJvb2wqIG91dF9wYXJhbSkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRl
eCA3ZDM1NjI1YzFiOS4uOTNmNzhkMGRhMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE5IEBACisyMDE4LTA1LTE1ICBEZXZpbiBSb3Vzc28gIDx3ZWJraXRAZGV2aW5yb3Vz
c28uY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGNyZWF0ZSBhIG5hdmlnYXRpb24gaXRl
bSBmb3IgdG9nZ2xpbmcgdGhlIG92ZXJsYXkgcnVsZXJzL2d1aWRlcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg1NjQ0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBMb2NhbGl6YXRpb25zL2VuLmxwcm9q
L2xvY2FsaXplZFN0cmluZ3MuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9CYXNlL1NldHRp
bmcuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlQ29udGVudFZpZXcu
anM6CisgICAgICAgIChXSS5ET01UcmVlQ29udGVudFZpZXcpOgorICAgICAgICAoV0kuRE9NVHJl
ZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5nZXQgbmF2aWdhdGlvbkl0ZW1zKToKKyAgICAgICAgKFdJ
LkRPTVRyZWVDb250ZW50Vmlldy5wcm90b3R5cGUuY2xvc2VkKToKKyAgICAgICAgKFdJLkRPTVRy
ZWVDb250ZW50Vmlldy5wcm90b3R5cGUuX3Nob3VsZERyYXdSdWxlcnNDaGFuZ2VkKTogQWRkZWQu
CisgICAgICAgIChXSS5ET01UcmVlQ29udGVudFZpZXcucHJvdG90eXBlLl90b2dnbGVTaG91bGRE
cmF3UnVsZXJzKTogQWRkZWQuCisKIDIwMTgtMDUtMTQgIERldmluIFJvdXNzbyAgPHdlYmtpdEBk
ZXZpbnJvdXNzby5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogQ2FudmFzIHRhYjogZG9u
J3QgYXV0b21hdGljYWxseSBzZWxlY3QgYSByZWNvcmRpbmcgd2hlbiB2aWV3aW5nIGEgY2FudmFz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMv
UnVsZXJzLnN2ZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ltYWdlcy9S
dWxlcnMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi42NWYxYjBi
YzRmOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0ltYWdlcy9SdWxlcnMuc3ZnCkBAIC0wLDAgKzEsMTEgQEAKKzw/eG1sIHZlcnNpb249IjEu
MCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8IS0tIENvcHlyaWdodCDCqSAyMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4gLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgaWQ9InJvb3QiIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDE2IDE2Ij4KKyAg
ICA8cG9seWdvbiBwb2ludHM9IjEuNSAxLjUgMTQuNSAxLjUgMTQuNSA1LjUgNS41IDUuNSA1LjUg
MTQuNSAxLjUgMTQuNSAxLjUgMS41IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIv
PgorICAgIDxsaW5lIHgxPSI4LjUiIHkxPSIzIiB4Mj0iOC41IiB5Mj0iNSIgc3Ryb2tlPSJjdXJy
ZW50Q29sb3IiLz4KKyAgICA8bGluZSB4MT0iMTEuNSIgeTE9IjMiIHgyPSIxMS41IiB5Mj0iNSIg
c3Ryb2tlPSJjdXJyZW50Q29sb3IiLz4KKyAgICA8bGluZSB4MT0iNS41IiB5MT0iMyIgeDI9IjUu
NSIgeTI9IjUiIHN0cm9rZT0iY3VycmVudENvbG9yIi8+CisgICAgPGxpbmUgeDE9IjMiIHkxPSIx
MS41IiB4Mj0iNSIgeTI9IjExLjUiIHN0cm9rZT0iY3VycmVudENvbG9yIi8+CisgICAgPGxpbmUg
eDE9IjMiIHkxPSI4LjUiIHgyPSI1IiB5Mj0iOC41IiBzdHJva2U9ImN1cnJlbnRDb2xvciIvPgor
ICAgIDxsaW5lIHgxPSIzIiB5MT0iNS41IiB4Mj0iNSIgeTI9IjUuNSIgc3Ryb2tlPSJjdXJyZW50
Q29sb3IiLz4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0xvY2Fs
aXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMKaW5kZXggODAz
ZDlkNDFlODUuLjI4NGQ2MmI1YzI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
TG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMK
QEAgLTMyMCw2ICszMjAsNyBAQCBsb2NhbGl6ZWRTdHJpbmdzWyJEb21haW4iXSA9ICJEb21haW4i
OwogbG9jYWxpemVkU3RyaW5nc1siRG9uZSJdID0gIkRvbmUiOwogbG9jYWxpemVkU3RyaW5nc1si
RG93bmxvYWQiXSA9ICJEb3dubG9hZCI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJEb3dubG9hZCBXZWIg
QXJjaGl2ZSJdID0gIkRvd25sb2FkIFdlYiBBcmNoaXZlIjsKK2xvY2FsaXplZFN0cmluZ3NbIkRy
YXcgUnVsZXJzIl0gPSAiRHJhdyBSdWxlcnMiOwogbG9jYWxpemVkU3RyaW5nc1siRHVwbGljYXRl
IFNlbGVjdG9yIl0gPSAiRHVwbGljYXRlIFNlbGVjdG9yIjsKIGxvY2FsaXplZFN0cmluZ3NbIkR1
cGxpY2F0ZSBwcm9wZXJ0eSJdID0gIkR1cGxpY2F0ZSBwcm9wZXJ0eSI7CiBsb2NhbGl6ZWRTdHJp
bmdzWyJEdXBsaWNhdGUgcHJvcGVydHkg4oCcJXPigJ0uXG5DbGljayB0byBkZWxldGUgdGhpcyBw
cm9wZXJ0eS4iXSA9ICJEdXBsaWNhdGUgcHJvcGVydHkg4oCcJXPigJ0uXG5DbGljayB0byBkZWxl
dGUgdGhpcyBwcm9wZXJ0eS4iOwpAQCAtNDgxLDYgKzQ4Miw3IEBAIGxvY2FsaXplZFN0cmluZ3Nb
IkhpZGUgQ29uc29sZSJdID0gIkhpZGUgQ29uc29sZSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJIaWRl
IENvbnNvbGUgKCVzKSJdID0gIkhpZGUgQ29uc29sZSAoJXMpIjsKIGxvY2FsaXplZFN0cmluZ3Nb
IkhpZGUgR3JpZCJdID0gIkhpZGUgR3JpZCI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJIaWRlIFBhdGgi
XSA9ICJIaWRlIFBhdGgiOworbG9jYWxpemVkU3RyaW5nc1siSGlkZSBSdWxlcnMiXSA9ICJIaWRl
IFJ1bGVycyI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJIaWRlIGNvbXBvc2l0aW5nIGJvcmRlcnMiXSA9
ICJIaWRlIGNvbXBvc2l0aW5nIGJvcmRlcnMiOwogbG9jYWxpemVkU3RyaW5nc1siSGlkZSBzaGFk
b3cgRE9NIG5vZGVzIl0gPSAiSGlkZSBzaGFkb3cgRE9NIG5vZGVzIjsKIGxvY2FsaXplZFN0cmlu
Z3NbIkhpZGUgdGhlIGRldGFpbHMgc2lkZWJhciAoJXMpIl0gPSAiSGlkZSB0aGUgZGV0YWlscyBz
aWRlYmFyICglcykiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvQmFzZS9TZXR0aW5nLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvQmFzZS9TZXR0aW5nLmpzCmluZGV4IDA5YTczYmUyZWIzLi4wODYwMzdmZGMwYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9TZXR0aW5nLmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvU2V0dGluZy5q
cwpAQCAtMTIxLDYgKzEyMSw3IEBAIFdJLnNldHRpbmdzID0gewogICAgIHNob3dJbWFnZUdyaWQ6
IG5ldyBXSS5TZXR0aW5nKCJzaG93LWltYWdlLWdyaWQiLCBmYWxzZSksCiAgICAgc2hvd0NhbnZh
c1BhdGg6IG5ldyBXSS5TZXR0aW5nKCJzaG93LWNhbnZhcy1wYXRoIiwgZmFsc2UpLAogICAgIHNl
bGVjdGVkTmV0d29ya0RldGFpbENvbnRlbnRWaWV3SWRlbnRpZmllcjogbmV3IFdJLlNldHRpbmco
Im5ldHdvcmstZGV0YWlsLWNvbnRlbnQtdmlldy1pZGVudGlmaWVyIiwgInByZXZpZXciKSwKKyAg
ICBzaG91bGREcmF3UnVsZXJzOiBuZXcgV0kuU2V0dGluZygic2hvdWxkLWRyYXctcnVsZXJzIiwg
dHJ1ZSksCiAKICAgICAvLyBFeHBlcmltZW50YWwKICAgICBleHBlcmltZW50YWxFbmFibGVMYXll
cnNUYWI6IG5ldyBXSS5TZXR0aW5nKCJleHBlcmltZW50YWwtZW5hYmxlLWxheWVycy10YWIiLCBm
YWxzZSksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9ET01UcmVlQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9ET01UcmVlQ29udGVudFZpZXcuanMKaW5kZXggYTY4MDk4NDgxNjcuLmRl
MDcxMDc2OWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9ET01UcmVlQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZUNvbnRlbnRWaWV3LmpzCkBAIC01NCw2ICs1NCwx
MiBAQCBXSS5ET01UcmVlQ29udGVudFZpZXcgPSBjbGFzcyBET01UcmVlQ29udGVudFZpZXcgZXh0
ZW5kcyBXSS5Db250ZW50VmlldwogICAgICAgICB0aGlzLl9zaG93UHJpbnRTdHlsZXNCdXR0b25O
YXZpZ2F0aW9uSXRlbS52aXNpYmlsaXR5UHJpb3JpdHkgPSBXSS5OYXZpZ2F0aW9uSXRlbS5WaXNp
YmlsaXR5UHJpb3JpdHkuTG93OwogICAgICAgICB0aGlzLl9zaG93UHJpbnRTdHlsZXNDaGFuZ2Vk
KCk7CiAKKyAgICAgICAgV0kuc2V0dGluZ3Muc2hvdWxkRHJhd1J1bGVycy5hZGRFdmVudExpc3Rl
bmVyKFdJLlNldHRpbmcuRXZlbnQuQ2hhbmdlZCwgdGhpcy5fc2hvdWxkRHJhd1J1bGVyc0NoYW5n
ZWQsIHRoaXMpOworICAgICAgICB0aGlzLl9zaG91bGREcmF3UnVsZXJzQnV0dG9uTmF2aWdhdGlv
bkl0ZW0gPSBuZXcgV0kuQWN0aXZhdGVCdXR0b25OYXZpZ2F0aW9uSXRlbSgic2hvdWxkLWRyYXct
cnVsZXJzIiwgV0kuVUlTdHJpbmcoIkRyYXcgUnVsZXJzIiksIFdJLlVJU3RyaW5nKCJIaWRlIFJ1
bGVycyIpLCAiSW1hZ2VzL1J1bGVycy5zdmciLCAxNiwgMTYpOworICAgICAgICB0aGlzLl9zaG91
bGREcmF3UnVsZXJzQnV0dG9uTmF2aWdhdGlvbkl0ZW0uYWRkRXZlbnRMaXN0ZW5lcihXSS5CdXR0
b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5DbGlja2VkLCB0aGlzLl90b2dnbGVTaG91bGREcmF3UnVs
ZXJzLCB0aGlzKTsKKyAgICAgICAgdGhpcy5fc2hvdWxkRHJhd1J1bGVyc0J1dHRvbk5hdmlnYXRp
b25JdGVtLnZpc2liaWxpdHlQcmlvcml0eSA9IFdJLk5hdmlnYXRpb25JdGVtLlZpc2liaWxpdHlQ
cmlvcml0eS5Mb3c7CisgICAgICAgIHRoaXMuX3Nob3VsZERyYXdSdWxlcnNDaGFuZ2VkKCk7CisK
ICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImRvbS10cmVlIik7CiAgICAgICAg
IHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX21vdXNlV2FzQ2xp
Y2tlZC5iaW5kKHRoaXMpLCBmYWxzZSk7CiAKQEAgLTkyLDcgKzk4LDcgQEAgV0kuRE9NVHJlZUNv
bnRlbnRWaWV3ID0gY2xhc3MgRE9NVHJlZUNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFZp
ZXcKIAogICAgIGdldCBuYXZpZ2F0aW9uSXRlbXMoKQogICAgIHsKLSAgICAgICAgbGV0IGl0ZW1z
ID0gW3RoaXMuX3Nob3dQcmludFN0eWxlc0J1dHRvbk5hdmlnYXRpb25JdGVtLCB0aGlzLl9zaG93
c1NoYWRvd0RPTUJ1dHRvbk5hdmlnYXRpb25JdGVtXTsKKyAgICAgICAgbGV0IGl0ZW1zID0gW3Ro
aXMuX3Nob3VsZERyYXdSdWxlcnNCdXR0b25OYXZpZ2F0aW9uSXRlbSwgdGhpcy5fc2hvd1ByaW50
U3R5bGVzQnV0dG9uTmF2aWdhdGlvbkl0ZW0sIHRoaXMuX3Nob3dzU2hhZG93RE9NQnV0dG9uTmF2
aWdhdGlvbkl0ZW1dOwogICAgICAgICBpZiAoIVdJLnNldHRpbmdzLmV4cGVyaW1lbnRhbEVuYWJs
ZUxheWVyc1RhYi52YWx1ZSkKICAgICAgICAgICAgIGl0ZW1zLnB1c2godGhpcy5fY29tcG9zaXRp
bmdCb3JkZXJzQnV0dG9uTmF2aWdhdGlvbkl0ZW0sIHRoaXMuX3BhaW50Rmxhc2hpbmdCdXR0b25O
YXZpZ2F0aW9uSXRlbSk7CiAKQEAgLTE1MCw2ICsxNTYsNyBAQCBXSS5ET01UcmVlQ29udGVudFZp
ZXcgPSBjbGFzcyBET01UcmVlQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50VmlldwogCiAg
ICAgICAgIFdJLnNob3dQYWludFJlY3RzU2V0dGluZy5yZW1vdmVFdmVudExpc3RlbmVyKG51bGws
IG51bGwsIHRoaXMpOwogICAgICAgICBXSS5zaG93U2hhZG93RE9NU2V0dGluZy5yZW1vdmVFdmVu
dExpc3RlbmVyKG51bGwsIG51bGwsIHRoaXMpOworICAgICAgICBXSS5zZXR0aW5ncy5zaG91bGRE
cmF3UnVsZXJzLnJlbW92ZUV2ZW50TGlzdGVuZXIobnVsbCwgbnVsbCwgdGhpcyk7CiAgICAgICAg
IFdJLmRlYnVnZ2VyTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKG51bGwsIG51bGwsIHRoaXMp
OwogICAgICAgICBXSS5kb21UcmVlTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKG51bGwsIG51
bGwsIHRoaXMpOwogICAgICAgICBXSS5kb21EZWJ1Z2dlck1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0
ZW5lcihudWxsLCBudWxsLCB0aGlzKTsKQEAgLTU2Nyw2ICs1NzQsMjAgQEAgV0kuRE9NVHJlZUNv
bnRlbnRWaWV3ID0gY2xhc3MgRE9NVHJlZUNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFZp
ZXcKICAgICAgICAgdGhpcy5fc2hvd1ByaW50U3R5bGVzQ2hhbmdlZCgpOwogICAgIH0KIAorICAg
IF9zaG91bGREcmF3UnVsZXJzQ2hhbmdlZCgpCisgICAgeworICAgICAgICB0aGlzLl9zaG91bGRE
cmF3UnVsZXJzQnV0dG9uTmF2aWdhdGlvbkl0ZW0uYWN0aXZhdGVkID0gV0kuc2V0dGluZ3Muc2hv
dWxkRHJhd1J1bGVycy52YWx1ZTsKKworICAgICAgICBQYWdlQWdlbnQuc2V0U2hvdWxkRHJhd1J1
bGVycyh0aGlzLl9zaG91bGREcmF3UnVsZXJzQnV0dG9uTmF2aWdhdGlvbkl0ZW0uYWN0aXZhdGVk
KTsKKyAgICB9CisKKyAgICBfdG9nZ2xlU2hvdWxkRHJhd1J1bGVycyhldmVudCkKKyAgICB7Cisg
ICAgICAgIFdJLnNldHRpbmdzLnNob3VsZERyYXdSdWxlcnMudmFsdWUgPSAhV0kuc2V0dGluZ3Mu
c2hvdWxkRHJhd1J1bGVycy52YWx1ZTsKKworICAgICAgICB0aGlzLl9zaG91bGREcmF3UnVsZXJz
Q2hhbmdlZCgpOworICAgIH0KKwogICAgIF9zaG93U2VhcmNoSGlnaGxpZ2h0cygpCiAgICAgewog
ICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9zZWFyY2hJZGVudGlmaWVyKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>340454</attachid>
            <date>2018-05-15 18:07:37 -0700</date>
            <delta_ts>2018-05-15 18:10:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185644-20180515180736.patch</filename>
            <type>text/plain</type>
            <size>27286</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDJjMjZkZTM3NGM2ZjlhMGIyNmY4Y2M2NGI5YmIx
ODIxN2RiMGY2NWMuLjg4YzVjMTdmZDlhY2RhOTU2ODUzNjllNGQyYjdkMDJkNWFmNWY2OGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE4LTA1LTE1ICBEZXZp
biBSb3Vzc28gIDx3ZWJraXRAZGV2aW5yb3Vzc28uY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IGNyZWF0ZSBhIG5hdmlnYXRpb24gaXRlbSBmb3IgdG9nZ2xpbmcgdGhlIG92ZXJsYXkgcnVs
ZXJzL2d1aWRlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTg1NjQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBpbnNwZWN0b3IvcHJvdG9jb2wvT3ZlcmxheVR5cGVzLmpzb246CisgICAgICAgICogaW5z
cGVjdG9yL3Byb3RvY29sL1BhZ2UuanNvbjoKKwogMjAxOC0wNS0xNSAgRGV2aW4gUm91c3NvICA8
d2Via2l0QGRldmlucm91c3NvLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBBZGQgcnVs
ZXJzIGFuZCBndWlkZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzODQ1MWQ0ZjViNzIxNmU5MTQxMTUyMGVlMzc5
OWNmNmVlYzRmZjNhLi4wOTg4YzlhNzIxNWUzYWQzYzAzNDNmZjg3YzQ5ZDYxZDJhNGU4MGVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTgtMDUtMTUgIERldmluIFJvdXNzbyAgPHdl
YmtpdEBkZXZpbnJvdXNzby5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogY3JlYXRlIGEg
bmF2aWdhdGlvbiBpdGVtIGZvciB0b2dnbGluZyB0aGUgb3ZlcmxheSBydWxlcnMvZ3VpZGVzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODU2NDQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNo
IGlzIHB1cmVseSBhIHZpc3VhbCBjaGFuZ2UgZm9yIFdlYkluc3BlY3RvciwgYW5kIGRvZXNuJ3Qg
YWZmZWN0IGFueXRoaW5nIGVsc2UuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvclBhZ2VBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFn
ZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6c2V0U2hv
d1J1bGVycyk6IEFkZGVkLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXku
aDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JPdmVybGF5OjpzaG91bGRTaG93T3ZlcmxheSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JPdmVybGF5Ojp1cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yT3ZlcmxheTo6c2V0U2hvd1J1bGVycyk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yT3ZlcmxheTo6ZHJhd1J1bGVycyk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yT3ZlcmxheTo6cmVzZXQpOgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ck92ZXJsYXlQYWdlLmpzOgorICAgICAgICAoZHJhd05vZGVIaWdobGlnaHQpOgorICAgICAgICAo
ZHJhd1F1YWRIaWdobGlnaHQpOgorICAgICAgICAoZHJhd1J1bGVycyk6IEFkZGVkLgorICAgICAg
ICAoX2RyYXdCb3VuZHMpOiBBZGRlZC4KKyAgICAgICAgKHJlc2V0KToKKyAgICAgICAgKF9kcmF3
UnVsZXJzKTogRGVsZXRlZC4KKwogMjAxOC0wNS0xNSAgRGV2aW4gUm91c3NvICA8d2Via2l0QGRl
dmlucm91c3NvLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBBZGQgcnVsZXJzIGFuZCBn
dWlkZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDE3ODRhMGNkNjNkZmUwZDU3YTJmOTcz
YjAxNGNjYjYyZmM5NmEyZmQuLmYzZWQ3Mzk4NjZjYTg5MGRiODNlNjkwOTczMjZhMDRjNmEyMDk1
NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE4LTA1LTE1
ICBEZXZpbiBSb3Vzc28gIDx3ZWJraXRAZGV2aW5yb3Vzc28uY29tPgorCisgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IGNyZWF0ZSBhIG5hdmlnYXRpb24gaXRlbSBmb3IgdG9nZ2xpbmcgdGhlIG92ZXJs
YXkgcnVsZXJzL2d1aWRlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTg1NjQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBMb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanM6Cisg
ICAgICAgICogVXNlckludGVyZmFjZS9CYXNlL1NldHRpbmcuanM6CisgICAgICAgICogVXNlcklu
dGVyZmFjZS9WaWV3cy9ET01UcmVlQ29udGVudFZpZXcuanM6CisgICAgICAgIChXSS5ET01UcmVl
Q29udGVudFZpZXcpOgorICAgICAgICAoV0kuRE9NVHJlZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5n
ZXQgbmF2aWdhdGlvbkl0ZW1zKToKKyAgICAgICAgKFdJLkRPTVRyZWVDb250ZW50Vmlldy5wcm90
b3R5cGUuY2xvc2VkKToKKyAgICAgICAgKFdJLkRPTVRyZWVDb250ZW50Vmlldy5wcm90b3R5cGUu
X3Nob3dSdWxlcnNDaGFuZ2VkKTogQWRkZWQuCisgICAgICAgIChXSS5ET01UcmVlQ29udGVudFZp
ZXcucHJvdG90eXBlLl90b2dnbGVTaG93UnVsZXJzKTogQWRkZWQuCisKIDIwMTgtMDUtMTQgIE5p
a2l0YSBWYXNpbHlldiAgPG52YXNpbHlldkBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3Bl
Y3RvcjogQ2FudmFzOiBSZW1vdmUgdW51c2VkIC0tdmFsdWUtdmlzdWFsLWhpZ2hsaWdodCBDU1Mg
dmFyaWFibGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJv
dG9jb2wvT3ZlcmxheVR5cGVzLmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3Byb3RvY29sL092ZXJsYXlUeXBlcy5qc29uCmluZGV4IGU4ZTQ1Mzk3ODM5MmNlNjQyM2M2Yzlh
MDk0ZTA2ZTc1YWE3YTg5NzguLjgxM2ZiNjA3OTZlMTc0ZjM4ODY5MGJlYzkzNGFiODQwMjA4MmIy
ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wv
T3ZlcmxheVR5cGVzLmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9w
cm90b2NvbC9PdmVybGF5VHlwZXMuanNvbgpAQCAtOTcsNyArOTcsOCBAQAogICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAicGFnZVNjYWxlRmFjdG9yIiwgInR5cGUiOiAibnVtYmVyIiB9LAogICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAicGFnZVpvb21GYWN0b3IiLCAidHlwZSI6ICJudW1iZXIi
IH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzY3JvbGxPZmZzZXQiLCAiJHJlZiI6ICJQ
b2ludCIgfSwKLSAgICAgICAgICAgICAgICB7ICJuYW1lIjogImNvbnRlbnRJbnNldCIsICIkcmVm
IjogIlNpemUiIH0KKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImNvbnRlbnRJbnNldCIsICIk
cmVmIjogIlNpemUiIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzaG93UnVsZXJzIiwg
InR5cGUiOiAiYm9vbGVhbiIgfQogICAgICAgICAgICAgXQogICAgICAgICB9CiAgICAgXQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9QYWdlLmpz
b24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL1BhZ2UuanNvbgpp
bmRleCA2ZThiMDlmNTM1NWRhYjc0NDk2Mjk0Y2FlNTFlZjg3NThjN2E1MDhmLi44ZjIyYzUzMTVj
YTQ1ZGI4ZDVhM2YxYTk2NGZjMTJlYWU0MTM1Nzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL1BhZ2UuanNvbgorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL1BhZ2UuanNvbgpAQCAtMTY1LDYgKzE2NSwxMyBA
QAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVzdWx0IiwgInR5cGUiOiAiYXJyYXkiLCAi
aXRlbXMiOiB7ICIkcmVmIjogIlNlYXJjaFJlc3VsdCIgfSwgImRlc2NyaXB0aW9uIjogIkxpc3Qg
b2Ygc2VhcmNoIHJlc3VsdHMuIiB9CiAgICAgICAgICAgICBdCiAgICAgICAgIH0sCisgICAgICAg
IHsKKyAgICAgICAgICAgICJuYW1lIjogInNldFNob3dSdWxlcnMiLAorICAgICAgICAgICAgImRl
c2NyaXB0aW9uIjogIlJlcXVlc3RzIHRoYXQgYmFja2VuZCBkcmF3IHJ1bGVycyBpbiB0aGUgaW5z
cGVjdG9yIG92ZXJsYXkiLAorICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJyZXN1bHQiLCAidHlwZSI6ICJib29sZWFuIiwgImRlc2NyaXB0aW9u
IjogIlRydWUgZm9yIHNob3dpbmcgcnVsZXJzIiB9CisgICAgICAgICAgICBdCisgICAgICAgIH0s
CiAgICAgICAgIHsKICAgICAgICAgICAgICJuYW1lIjogInNldFNob3dQYWludFJlY3RzIiwKICAg
ICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXF1ZXN0cyB0aGF0IGJhY2tlbmQgc2hvd3MgcGFp
bnQgcmVjdGFuZ2xlcyIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yT3ZlcmxheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3Zl
cmxheS5jcHAKaW5kZXggNmU2NjU1ZWQ2N2MxYzdjYzhiYzk1N2IwY2JlODE0ZTExZTU3ZmI3ZS4u
ZTVjODkwMjE0YzljNDkwMzVkMDEzMzE0NjNiNmRmMWQwMDNlYmE5MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcApAQCAtMjY4LDcgKzI2OCw3IEBA
IHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6c2V0SW5kaWNhdGluZyhib29sIGluZGljYXRpbmcpCiAK
IGJvb2wgSW5zcGVjdG9yT3ZlcmxheTo6c2hvdWxkU2hvd092ZXJsYXkoKSBjb25zdAogewotICAg
IHJldHVybiBtX2hpZ2hsaWdodE5vZGUgfHwgbV9oaWdobGlnaHROb2RlTGlzdCB8fCBtX2hpZ2hs
aWdodFF1YWQgfHwgbV9pbmRpY2F0aW5nIHx8IG1fc2hvd2luZ1BhaW50UmVjdHMgfHwgIW1fcGF1
c2VkSW5EZWJ1Z2dlck1lc3NhZ2UuaXNOdWxsKCk7CisgICAgcmV0dXJuIG1faGlnaGxpZ2h0Tm9k
ZSB8fCBtX2hpZ2hsaWdodE5vZGVMaXN0IHx8IG1faGlnaGxpZ2h0UXVhZCB8fCBtX2luZGljYXRp
bmcgfHwgbV9zaG93aW5nUGFpbnRSZWN0cyB8fCBtX3Nob3dSdWxlcnMgfHwgIW1fcGF1c2VkSW5E
ZWJ1Z2dlck1lc3NhZ2UuaXNOdWxsKCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6dXBk
YXRlKCkKQEAgLTI5Nyw2ICsyOTcsOSBAQCB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OnVwZGF0ZSgp
CiAgICAgZHJhd1BhdXNlZEluRGVidWdnZXJNZXNzYWdlKCk7CiAgICAgZHJhd1BhaW50UmVjdHMo
KTsKIAorICAgIGlmIChtX3Nob3dSdWxlcnMpCisgICAgICAgIGRyYXdSdWxlcnMoKTsKKwogICAg
IC8vIFBvc2l0aW9uIERPTSBlbGVtZW50cy4KICAgICBvdmVybGF5UGFnZSgpLT5tYWluRnJhbWUo
KS5kb2N1bWVudCgpLT5yZXNvbHZlU3R5bGUoRG9jdW1lbnQ6OlJlc29sdmVTdHlsZVR5cGU6OlJl
YnVpbGQpOwogICAgIGlmIChvdmVybGF5Vmlldy0+bmVlZHNMYXlvdXQoKSkKQEAgLTM5Miw2ICsz
OTUsMTYgQEAgdm9pZCBJbnNwZWN0b3JPdmVybGF5OjpzaG93UGFpbnRSZWN0KGNvbnN0IEZsb2F0
UmVjdCYgcmVjdCkKICAgICBmb3JjZVBhaW50KCk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yT3Zlcmxh
eTo6c2V0U2hvd1J1bGVycyhib29sIHNob3dSdWxlcnMpCit7CisgICAgaWYgKG1fc2hvd1J1bGVy
cyA9PSBzaG93UnVsZXJzKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3Nob3dSdWxlcnMgPSBz
aG93UnVsZXJzOworCisgICAgdXBkYXRlKCk7Cit9CisKIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6
dXBkYXRlUGFpbnRSZWN0c1RpbWVyRmlyZWQoKQogewogICAgIE1vbm90b25pY1RpbWUgbm93ID0g
TW9ub3RvbmljVGltZTo6bm93KCk7CkBAIC00MTksNiArNDMyLDExIEBAIHZvaWQgSW5zcGVjdG9y
T3ZlcmxheTo6ZHJhd1BhaW50UmVjdHMoKQogICAgIGV2YWx1YXRlSW5PdmVybGF5KEFTQ0lJTGl0
ZXJhbCgidXBkYXRlUGFpbnRSZWN0cyIpLCBXVEZNb3ZlKGFycmF5T2ZSZWN0cykpOwogfQogCit2
b2lkIEluc3BlY3Rvck92ZXJsYXk6OmRyYXdSdWxlcnMoKQoreworICAgIGV2YWx1YXRlSW5PdmVy
bGF5KEFTQ0lJTGl0ZXJhbCgiZHJhd1J1bGVycyIpKTsKK30KKwogc3RhdGljIFJlZlB0cjxKU09O
OjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6RnJhZ21lbnRIaWdo
bGlnaHREYXRhPj4gYnVpbGRBcnJheUZvclJlbmRlcmVyRnJhZ21lbnRzKFJlbmRlck9iamVjdCog
cmVuZGVyZXIsIGNvbnN0IEhpZ2hsaWdodENvbmZpZyYgY29uZmlnKQogewogICAgIGF1dG8gYXJy
YXlPZkZyYWdtZW50cyA9IEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6T3Zlcmxh
eVR5cGVzOjpGcmFnbWVudEhpZ2hsaWdodERhdGE+OjpjcmVhdGUoKTsKQEAgLTc0Miw2ICs3NjAs
NyBAQCB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OnJlc2V0KGNvbnN0IEludFNpemUmIHZpZXdwb3J0
U2l6ZSwgY29uc3QgSW50UG9pbnQmIHNjcm9sbAogICAgICAgICAuc2V0UGFnZVpvb21GYWN0b3Io
bV9wYWdlLm1haW5GcmFtZSgpLnBhZ2Vab29tRmFjdG9yKCkpCiAgICAgICAgIC5zZXRTY3JvbGxP
ZmZzZXQoYnVpbGRPYmplY3RGb3JQb2ludChzY3JvbGxPZmZzZXQpKQogICAgICAgICAuc2V0Q29u
dGVudEluc2V0KGJ1aWxkT2JqZWN0Rm9yU2l6ZShJbnRTaXplKDAsIG1fcGFnZS5tYWluRnJhbWUo
KS52aWV3KCktPnRvcENvbnRlbnRJbnNldChTY3JvbGxWaWV3OjpUb3BDb250ZW50SW5zZXRUeXBl
OjpXZWJDb3JlT3JQbGF0Zm9ybUNvbnRlbnRJbnNldCkpKSkKKyAgICAgICAgLnNldFNob3dSdWxl
cnMobV9zaG93UnVsZXJzKQogICAgICAgICAucmVsZWFzZSgpOwogICAgIGV2YWx1YXRlSW5PdmVy
bGF5KCJyZXNldCIsIFdURk1vdmUoY29uZmlnT2JqZWN0KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuaAppbmRleCAzOGJhODUwZjQ2ZTA5NTIyNzAyODE3
ODU0Y2RiOWEwYzhhZTc4NzlmLi5hMjRiZWNkZDI3MTI1YWIzYWEwZTI5NzFjMTcwOGYzZDNmNWNi
ZmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3Zlcmxh
eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmgKQEAg
LTExNSw2ICsxMTUsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBzZXRTaG93aW5nUGFpbnRS
ZWN0cyhib29sKTsKICAgICB2b2lkIHNob3dQYWludFJlY3QoY29uc3QgRmxvYXRSZWN0Jik7CisK
KyAgICB2b2lkIHNldFNob3dSdWxlcnMoYm9vbCk7CiAgICAgCiAgICAgTm9kZSogaGlnaGxpZ2h0
ZWROb2RlKCkgY29uc3Q7CiAKQEAgLTEzMiw2ICsxMzQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
ZHJhd1F1YWRIaWdobGlnaHQoKTsKICAgICB2b2lkIGRyYXdQYXVzZWRJbkRlYnVnZ2VyTWVzc2Fn
ZSgpOwogICAgIHZvaWQgZHJhd1BhaW50UmVjdHMoKTsKKyAgICB2b2lkIGRyYXdSdWxlcnMoKTsK
ICAgICB2b2lkIHVwZGF0ZVBhaW50UmVjdHNUaW1lckZpcmVkKCk7CiAKICAgICBQYWdlKiBvdmVy
bGF5UGFnZSgpOwpAQCAtMTU3LDYgKzE2MCw3IEBAIHByaXZhdGU6CiAgICAgVGltZXIgbV9wYWlu
dFJlY3RVcGRhdGVUaW1lcjsKICAgICBib29sIG1faW5kaWNhdGluZyB7ZmFsc2V9OwogICAgIGJv
b2wgbV9zaG93aW5nUGFpbnRSZWN0cyB7ZmFsc2V9OworICAgIGJvb2wgbV9zaG93UnVsZXJzIHtm
YWxzZX07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheVBhZ2UuanMgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheVBhZ2UuanMKaW5kZXggYmY3ZDU2ZGJlOGJhZDE3
NmVmYzRjNzkzZGEzYmZiMzIxODdmYWZjYy4uNjE5ZmYzNjUzMjYwODhkM2MwMTVmZmUxNDdkYjMw
MzQ3YTZlNTg0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ck92ZXJsYXlQYWdlLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JP
dmVybGF5UGFnZS5qcwpAQCAtMSwzICsxLDQgQEAKK2NvbnN0IGJvdW5kc0NvbG9yID0gInJnYmEo
MCwwLDAsMC40KSI7CiBjb25zdCBsaWdodEdyaWRDb2xvciA9ICJyZ2JhKDAsMCwwLDAuMikiOwog
Y29uc3QgZGFya0dyaWRDb2xvciA9ICJyZ2JhKDAsMCwwLDAuNSkiOwogY29uc3QgdHJhbnNwYXJl
bnRDb2xvciA9ICJyZ2JhKDAsIDAsIDAsIDApIjsKQEAgLTYzLDcgKzY0LDEwIEBAIGZ1bmN0aW9u
IGRyYXdOb2RlSGlnaGxpZ2h0KGFsbEhpZ2hsaWdodHMpCiAgICAgICAgIH0pOwogICAgIH0KIAot
ICAgIF9kcmF3UnVsZXJzKCk7CisgICAgaWYgKCFEQVRBLnNob3dSdWxlcnMpCisgICAgICAgIGRy
YXdSdWxlcnMoKTsKKworICAgIF9kcmF3Qm91bmRzKGJvdW5kcyk7CiAKICAgICBpZiAoYWxsSGln
aGxpZ2h0cy5sZW5ndGggPT09IDEpIHsKICAgICAgICAgZm9yIChsZXQgZnJhZ21lbnQgb2YgYWxs
SGlnaGxpZ2h0c1swXS5mcmFnbWVudHMpCkBAIC03OSw3ICs4MywxMCBAQCBmdW5jdGlvbiBkcmF3
UXVhZEhpZ2hsaWdodChoaWdobGlnaHQpCiAgICAgICAgIF9kcmF3T3V0bGluZWRRdWFkKGhpZ2hs
aWdodC5xdWFkc1swXSwgaGlnaGxpZ2h0LmNvbnRlbnRDb2xvciwgaGlnaGxpZ2h0LmNvbnRlbnRP
dXRsaW5lQ29sb3IsIGJvdW5kcyk7CiAgICAgfSk7CiAKLSAgICBfZHJhd1J1bGVycygpOworICAg
IGlmICghREFUQS5zaG93UnVsZXJzKQorICAgICAgICBkcmF3UnVsZXJzKCk7CisKKyAgICBfZHJh
d0JvdW5kcyhib3VuZHMpOwogfQogCiBmdW5jdGlvbiBxdWFkRXF1YWxzKHF1YWQxLCBxdWFkMikK
QEAgLTEwNiw2ICsxMTMsMTI5IEBAIGZ1bmN0aW9uIHVwZGF0ZVBhaW50UmVjdHMocGFpbnRSZWN0
TGlzdCkKICAgICBjb250ZXh0LnJlc3RvcmUoKTsKIH0KIAorZnVuY3Rpb24gZHJhd1J1bGVycygp
Cit7CisgICAgY29uc3QgZ3JpZExhYmVsU2l6ZSA9IDEzOworICAgIGNvbnN0IGdyaWRTaXplID0g
MTU7CisgICAgY29uc3QgZ3JpZFN0ZXBJbmNyZW1lbnQgPSA1MDsKKyAgICBjb25zdCBncmlkU3Rl
cExlbmd0aCA9IDg7CisgICAgY29uc3QgZ3JpZFN1YlN0ZXBJbmNyZW1lbnQgPSA1OworICAgIGNv
bnN0IGdyaWRTdWJTdGVwTGVuZ3RoID0gNTsKKworCisgICAgbGV0IHBhZ2VGYWN0b3IgPSBEQVRB
LnBhZ2Vab29tRmFjdG9yICogREFUQS5wYWdlU2NhbGVGYWN0b3I7CisgICAgbGV0IHNjcm9sbFgg
PSBEQVRBLnNjcm9sbE9mZnNldC54ICogREFUQS5wYWdlU2NhbGVGYWN0b3I7CisgICAgbGV0IHNj
cm9sbFkgPSBEQVRBLnNjcm9sbE9mZnNldC55ICogREFUQS5wYWdlU2NhbGVGYWN0b3I7CisKKyAg
ICBmdW5jdGlvbiB6b29tKHZhbHVlKSB7CisgICAgICAgIHJldHVybiB2YWx1ZSAqIHBhZ2VGYWN0
b3I7CisgICAgfQorCisgICAgZnVuY3Rpb24gdW56b29tKHZhbHVlKSB7CisgICAgICAgIHJldHVy
biB2YWx1ZSAvIHBhZ2VGYWN0b3I7CisgICAgfQorCisgICAgZnVuY3Rpb24gbXVsdGlwbGVCZWxv
dyh2YWx1ZSwgc3RlcCkgeworICAgICAgICByZXR1cm4gdmFsdWUgLSAodmFsdWUgJSBzdGVwKTsK
KyAgICB9CisKKyAgICBsZXQgd2lkdGggPSBEQVRBLnZpZXdwb3J0U2l6ZS53aWR0aCAvIHBhZ2VG
YWN0b3I7CisgICAgbGV0IGhlaWdodCA9IERBVEEudmlld3BvcnRTaXplLmhlaWdodCAvIHBhZ2VG
YWN0b3I7CisgICAgbGV0IG1pblggPSB1bnpvb20oc2Nyb2xsWCk7CisgICAgbGV0IG1pblkgPSB1
bnpvb20oc2Nyb2xsWSk7CisgICAgbGV0IG1heFggPSBtaW5YICsgd2lkdGg7CisgICAgbGV0IG1h
eFkgPSBtaW5ZICsgaGVpZ2h0OworCisgICAgLy8gRHJhdyBiYWNrZ3JvdW5kcworICAgIF9pc29s
YXRlQWN0aW9ucygoKSA9PiB7CisgICAgICAgIGxldCBvZmZzZXRYID0gREFUQS5jb250ZW50SW5z
ZXQud2lkdGggKyBncmlkU2l6ZTsKKyAgICAgICAgbGV0IG9mZnNldFkgPSBEQVRBLmNvbnRlbnRJ
bnNldC5oZWlnaHQgKyBncmlkU2l6ZTsKKworICAgICAgICBjb250ZXh0LmZpbGxTdHlsZSA9IGdy
aWRCYWNrZ3JvdW5kQ29sb3I7CisgICAgICAgIGNvbnRleHQuZmlsbFJlY3QoREFUQS5jb250ZW50
SW5zZXQud2lkdGgsIERBVEEuY29udGVudEluc2V0LmhlaWdodCwgZ3JpZFNpemUsIGdyaWRTaXpl
KTsKKyAgICAgICAgY29udGV4dC5maWxsUmVjdChvZmZzZXRYLCBEQVRBLmNvbnRlbnRJbnNldC5o
ZWlnaHQsIHpvb20od2lkdGgpIC0gb2Zmc2V0WCwgZ3JpZFNpemUpOworICAgICAgICBjb250ZXh0
LmZpbGxSZWN0KERBVEEuY29udGVudEluc2V0LndpZHRoLCBvZmZzZXRZLCBncmlkU2l6ZSwgem9v
bShoZWlnaHQpIC0gb2Zmc2V0WSk7CisgICAgfSk7CisKKyAgICAvLyBSdWxlciBzdHlsZXMKKyAg
ICBfaXNvbGF0ZUFjdGlvbnMoKCkgPT4geworICAgICAgICBjb250ZXh0LmxpbmVXaWR0aCA9IDE7
CisgICAgICAgIGNvbnRleHQuZmlsbFN0eWxlID0gZGFya0dyaWRDb2xvcjsKKworICAgICAgICAv
LyBEcmF3IGxhYmVscworICAgICAgICBfaXNvbGF0ZUFjdGlvbnMoKCkgPT4geworICAgICAgICAg
ICAgY29udGV4dC50cmFuc2xhdGUoREFUQS5jb250ZW50SW5zZXQud2lkdGggLSBzY3JvbGxYLCBE
QVRBLmNvbnRlbnRJbnNldC5oZWlnaHQgLSBzY3JvbGxZKTsKKworICAgICAgICAgICAgZm9yIChs
ZXQgeCA9IG11bHRpcGxlQmVsb3cobWluWCwgZ3JpZFN0ZXBJbmNyZW1lbnQgKiAyKTsgeCA8IG1h
eFg7IHggKz0gZ3JpZFN0ZXBJbmNyZW1lbnQgKiAyKSB7CisgICAgICAgICAgICAgICAgaWYgKCF4
ICYmICFzY3JvbGxYKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAg
ICAgICAgIF9pc29sYXRlQWN0aW9ucygoKSA9PiB7CisgICAgICAgICAgICAgICAgICAgIGNvbnRl
eHQudHJhbnNsYXRlKHpvb20oeCkgKyAwLjUsIHNjcm9sbFkpOworICAgICAgICAgICAgICAgICAg
ICBjb250ZXh0LmZpbGxUZXh0KHgsIDIsIGdyaWRMYWJlbFNpemUpOworICAgICAgICAgICAgICAg
IH0pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmb3IgKGxldCB5ID0gbXVsdGlwbGVC
ZWxvdyhtaW5ZLCBncmlkU3RlcEluY3JlbWVudCAqIDIpOyB5IDwgbWF4WTsgeSArPSBncmlkU3Rl
cEluY3JlbWVudCAqIDIpIHsKKyAgICAgICAgICAgICAgICBpZiAoIXkgJiYgIXNjcm9sbFkpCisg
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICAgICAgX2lzb2xhdGVB
Y3Rpb25zKCgpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC50cmFuc2xhdGUoc2Ny
b2xsWCwgem9vbSh5KSArIDAuNSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQucm90YXRl
KC1NYXRoLlBJIC8gMik7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZmlsbFRleHQoeSwg
MiwgZ3JpZExhYmVsU2l6ZSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0pOworCisgICAgICAgIC8vIERyYXcgaG9yaXpvbnRhbCBncmlkCisgICAgICAgIF9p
c29sYXRlQWN0aW9ucygoKSA9PiB7CisgICAgICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZShEQVRB
LmNvbnRlbnRJbnNldC53aWR0aCAtIHNjcm9sbFggKyAwLjUsIERBVEEuY29udGVudEluc2V0Lmhl
aWdodCAtIHNjcm9sbFkpOworCisgICAgICAgICAgICBmb3IgKGxldCB4ID0gbXVsdGlwbGVCZWxv
dyhtaW5YLCBncmlkU3ViU3RlcEluY3JlbWVudCk7IHggPCBtYXhYOyB4ICs9IGdyaWRTdWJTdGVw
SW5jcmVtZW50KSB7CisgICAgICAgICAgICAgICAgaWYgKCF4ICYmICFzY3JvbGxYKQorICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgICAgIGNvbnRleHQuYmVnaW5Q
YXRoKCk7CisgICAgICAgICAgICAgICAgY29udGV4dC5tb3ZlVG8oem9vbSh4KSwgc2Nyb2xsWSk7
CisKKyAgICAgICAgICAgICAgICBpZiAoeCAlIGdyaWRTdGVwSW5jcmVtZW50KSB7CisgICAgICAg
ICAgICAgICAgICAgIGNvbnRleHQuc3Ryb2tlU3R5bGUgPSBsaWdodEdyaWRDb2xvcjsKKyAgICAg
ICAgICAgICAgICAgICAgY29udGV4dC5saW5lVG8oem9vbSh4KSwgc2Nyb2xsWSArIGdyaWRTdWJT
dGVwTGVuZ3RoKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAg
ICBjb250ZXh0LnN0cm9rZVN0eWxlID0gZGFya0dyaWRDb2xvcjsKKyAgICAgICAgICAgICAgICAg
ICAgY29udGV4dC5saW5lVG8oem9vbSh4KSwgc2Nyb2xsWSArICgoeCAlIChncmlkU3RlcEluY3Jl
bWVudCAqIDIpKSA/IGdyaWRTdWJTdGVwTGVuZ3RoIDogZ3JpZFN0ZXBMZW5ndGgpKTsKKyAgICAg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBjb250ZXh0LnN0cm9rZSgpOworICAgICAg
ICAgICAgfQorICAgICAgICB9KTsKKworICAgICAgICAvLyBEcmF3IHZlcnRpY2FsIGdyaWQKKyAg
ICAgICAgX2lzb2xhdGVBY3Rpb25zKCgpID0+IHsKKyAgICAgICAgICAgIGNvbnRleHQudHJhbnNs
YXRlKERBVEEuY29udGVudEluc2V0LndpZHRoIC0gc2Nyb2xsWCwgREFUQS5jb250ZW50SW5zZXQu
aGVpZ2h0IC0gc2Nyb2xsWSArIDAuNSk7CisKKyAgICAgICAgICAgIGZvciAobGV0IHkgPSBtdWx0
aXBsZUJlbG93KG1pblksIGdyaWRTdWJTdGVwSW5jcmVtZW50KTsgeSA8IG1heFk7IHkgKz0gZ3Jp
ZFN1YlN0ZXBJbmNyZW1lbnQpIHsKKyAgICAgICAgICAgICAgICBpZiAoIXkgJiYgIXNjcm9sbFkp
CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICAgICAgY29udGV4
dC5iZWdpblBhdGgoKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhzY3JvbGxYLCB6
b29tKHkpKTsKKworICAgICAgICAgICAgICAgIGlmICh5ICUgZ3JpZFN0ZXBJbmNyZW1lbnQpIHsK
KyAgICAgICAgICAgICAgICAgICAgY29udGV4dC5zdHJva2VTdHlsZSA9IGxpZ2h0R3JpZENvbG9y
OworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhzY3JvbGxYICsgZ3JpZFN1YlN0
ZXBMZW5ndGgsIHpvb20oeSkpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgICAgIGNvbnRleHQuc3Ryb2tlU3R5bGUgPSBkYXJrR3JpZENvbG9yOworICAgICAgICAg
ICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhzY3JvbGxYICsgKCh5ICUgKGdyaWRTdGVwSW5jcmVt
ZW50ICogMikpID8gZ3JpZFN1YlN0ZXBMZW5ndGggOiBncmlkU3RlcExlbmd0aCksIHpvb20oeSkp
OworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGNvbnRleHQuc3Ryb2tlKCk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgIH0pOworfQorCiBmdW5jdGlvbiByZXNl
dChwYXlsb2FkKQogewogICAgIERBVEEudmlld3BvcnRTaXplID0gcGF5bG9hZC52aWV3cG9ydFNp
emU7CkBAIC0xMTQsNiArMjQ0LDcgQEAgZnVuY3Rpb24gcmVzZXQocGF5bG9hZCkKICAgICBEQVRB
LnBhZ2Vab29tRmFjdG9yID0gcGF5bG9hZC5wYWdlWm9vbUZhY3RvcjsKICAgICBEQVRBLnNjcm9s
bE9mZnNldCA9IHBheWxvYWQuc2Nyb2xsT2Zmc2V0OwogICAgIERBVEEuY29udGVudEluc2V0ID0g
cGF5bG9hZC5jb250ZW50SW5zZXQ7CisgICAgREFUQS5zaG93UnVsZXJzID0gcGF5bG9hZC5zaG93
UnVsZXJzOwogCiAgICAgd2luZG93LmNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJj
YW52YXMiKTsKICAgICB3aW5kb3cucGFpbnRSZWN0c0NhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJwYWludHJlY3RzLWNhbnZhcyIpOwpAQCAtMjg2LDYgKzQxNywzNiBAQCBmdW5jdGlv
biBfZHJhd091dGxpbmVkUXVhZFdpdGhDbGlwKHF1YWQsIGNsaXBRdWFkLCBmaWxsQ29sb3IsIGJv
dW5kcykKICAgICB9KTsKIH0KIAorZnVuY3Rpb24gX2RyYXdCb3VuZHMoYm91bmRzKQoreworICAg
IF9pc29sYXRlQWN0aW9ucygoKSA9PiB7CisgICAgICAgIGxldCBzdGFydFggPSBEQVRBLmNvbnRl
bnRJbnNldC53aWR0aDsKKyAgICAgICAgbGV0IHN0YXJ0WSA9IERBVEEuY29udGVudEluc2V0Lmhl
aWdodDsKKworICAgICAgICBjb250ZXh0LmJlZ2luUGF0aCgpOworCisgICAgICAgIGlmIChib3Vu
ZHMubWluWSAtIHN0YXJ0WSA+IDApIHsKKyAgICAgICAgICAgIGNvbnRleHQubW92ZVRvKGJvdW5k
cy5taW5YLCBib3VuZHMubWluWSk7CisgICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhib3VuZHMu
bWluWCwgc3RhcnRZKTsKKworICAgICAgICAgICAgY29udGV4dC5tb3ZlVG8oYm91bmRzLm1heFgs
IGJvdW5kcy5taW5ZKTsKKyAgICAgICAgICAgIGNvbnRleHQubGluZVRvKGJvdW5kcy5tYXhYLCBz
dGFydFkpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGJvdW5kcy5taW5YIC0gc3RhcnRYID4g
MCkgeworICAgICAgICAgICAgY29udGV4dC5tb3ZlVG8oYm91bmRzLm1pblgsIGJvdW5kcy5taW5Z
KTsKKyAgICAgICAgICAgIGNvbnRleHQubGluZVRvKHN0YXJ0WCwgYm91bmRzLm1pblkpOworCisg
ICAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhib3VuZHMubWluWCwgYm91bmRzLm1heFkpOworICAg
ICAgICAgICAgY29udGV4dC5saW5lVG8oc3RhcnRYLCBib3VuZHMubWF4WSk7CisgICAgICAgIH0K
KworICAgICAgICBjb250ZXh0LmxpbmVXaWR0aCA9IDE7CisgICAgICAgIGNvbnRleHQuc3Ryb2tl
U3R5bGUgPSBib3VuZHNDb2xvcjsKKyAgICAgICAgY29udGV4dC5zdHJva2UoKTsKKyAgICB9KTsK
K30KKwogZnVuY3Rpb24gX2NyZWF0ZUVsZW1lbnRUaXRsZShlbGVtZW50RGF0YSkKIHsKICAgICBs
ZXQgYnVpbGRlciA9IG5ldyBET01CdWlsZGVyKCJkaXYiLCAiZWxlbWVudC10aXRsZSIpOwpAQCAt
NDM4LDEyOCArNTk5LDYgQEAgZnVuY3Rpb24gaGlkZVBhZ2VJbmRpY2F0aW9uKCkKICAgICBkb2N1
bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoImluZGljYXRlIik7CiB9CiAKLWZ1bmN0aW9uIF9k
cmF3UnVsZXJzKG9wdGlvbnMgPSB7fSkKLXsKLSAgICBjb25zdCBncmlkTGFiZWxTaXplID0gMTM7
Ci0gICAgY29uc3QgZ3JpZFNpemUgPSAxNTsKLSAgICBjb25zdCBncmlkU3RlcEluY3JlbWVudCA9
IDUwOwotICAgIGNvbnN0IGdyaWRTdGVwTGVuZ3RoID0gODsKLSAgICBjb25zdCBncmlkU3ViU3Rl
cEluY3JlbWVudCA9IDU7Ci0gICAgY29uc3QgZ3JpZFN1YlN0ZXBMZW5ndGggPSA1OwotCi0gICAg
bGV0IHBhZ2VGYWN0b3IgPSBEQVRBLnBhZ2Vab29tRmFjdG9yICogREFUQS5wYWdlU2NhbGVGYWN0
b3I7Ci0gICAgbGV0IHNjcm9sbFggPSBEQVRBLnNjcm9sbE9mZnNldC54ICogREFUQS5wYWdlU2Nh
bGVGYWN0b3I7Ci0gICAgbGV0IHNjcm9sbFkgPSBEQVRBLnNjcm9sbE9mZnNldC55ICogREFUQS5w
YWdlU2NhbGVGYWN0b3I7Ci0KLSAgICBmdW5jdGlvbiB6b29tKHZhbHVlKSB7Ci0gICAgICAgIHJl
dHVybiB2YWx1ZSAqIHBhZ2VGYWN0b3I7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gdW56b29tKHZh
bHVlKSB7Ci0gICAgICAgIHJldHVybiB2YWx1ZSAvIHBhZ2VGYWN0b3I7Ci0gICAgfQotCi0gICAg
ZnVuY3Rpb24gbXVsdGlwbGVCZWxvdyh2YWx1ZSwgc3RlcCkgewotICAgICAgICByZXR1cm4gdmFs
dWUgLSAodmFsdWUgJSBzdGVwKTsKLSAgICB9Ci0KLSAgICBsZXQgd2lkdGggPSBEQVRBLnZpZXdw
b3J0U2l6ZS53aWR0aCAvIHBhZ2VGYWN0b3I7Ci0gICAgbGV0IGhlaWdodCA9IERBVEEudmlld3Bv
cnRTaXplLmhlaWdodCAvIHBhZ2VGYWN0b3I7Ci0gICAgbGV0IG1pblggPSB1bnpvb20oc2Nyb2xs
WCk7Ci0gICAgbGV0IG1pblkgPSB1bnpvb20oc2Nyb2xsWSk7Ci0gICAgbGV0IG1heFggPSBtaW5Y
ICsgd2lkdGg7Ci0gICAgbGV0IG1heFkgPSBtaW5ZICsgaGVpZ2h0OwotCi0gICAgLy8gRHJhdyBi
YWNrZ3JvdW5kcwotICAgIF9pc29sYXRlQWN0aW9ucygoKSA9PiB7Ci0gICAgICAgIGxldCBvZmZz
ZXRYID0gREFUQS5jb250ZW50SW5zZXQud2lkdGggKyBncmlkU2l6ZTsKLSAgICAgICAgbGV0IG9m
ZnNldFkgPSBEQVRBLmNvbnRlbnRJbnNldC5oZWlnaHQgKyBncmlkU2l6ZTsKLQotICAgICAgICBj
b250ZXh0LmZpbGxTdHlsZSA9IGdyaWRCYWNrZ3JvdW5kQ29sb3I7Ci0gICAgICAgIGNvbnRleHQu
ZmlsbFJlY3QoREFUQS5jb250ZW50SW5zZXQud2lkdGgsIERBVEEuY29udGVudEluc2V0LmhlaWdo
dCwgZ3JpZFNpemUsIGdyaWRTaXplKTsKLSAgICAgICAgY29udGV4dC5maWxsUmVjdChvZmZzZXRY
LCBEQVRBLmNvbnRlbnRJbnNldC5oZWlnaHQsIHpvb20od2lkdGgpIC0gb2Zmc2V0WCwgZ3JpZFNp
emUpOwotICAgICAgICBjb250ZXh0LmZpbGxSZWN0KERBVEEuY29udGVudEluc2V0LndpZHRoLCBv
ZmZzZXRZLCBncmlkU2l6ZSwgem9vbShoZWlnaHQpIC0gb2Zmc2V0WSk7Ci0gICAgfSk7Ci0KLSAg
ICAvLyBSdWxlciBzdHlsZXMKLSAgICBfaXNvbGF0ZUFjdGlvbnMoKCkgPT4gewotICAgICAgICBj
b250ZXh0LmxpbmVXaWR0aCA9IDE7Ci0gICAgICAgIGNvbnRleHQuZmlsbFN0eWxlID0gZGFya0dy
aWRDb2xvcjsKLQotICAgICAgICAvLyBEcmF3IGxhYmVscwotICAgICAgICBfaXNvbGF0ZUFjdGlv
bnMoKCkgPT4gewotICAgICAgICAgICAgY29udGV4dC50cmFuc2xhdGUoREFUQS5jb250ZW50SW5z
ZXQud2lkdGggLSBzY3JvbGxYLCBEQVRBLmNvbnRlbnRJbnNldC5oZWlnaHQgLSBzY3JvbGxZKTsK
LQotICAgICAgICAgICAgZm9yIChsZXQgeCA9IG11bHRpcGxlQmVsb3cobWluWCwgZ3JpZFN0ZXBJ
bmNyZW1lbnQgKiAyKTsgeCA8IG1heFg7IHggKz0gZ3JpZFN0ZXBJbmNyZW1lbnQgKiAyKSB7Ci0g
ICAgICAgICAgICAgICAgaWYgKCF4ICYmICFzY3JvbGxYKQotICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKLQotICAgICAgICAgICAgICAgIF9pc29sYXRlQWN0aW9ucygoKSA9PiB7Ci0gICAg
ICAgICAgICAgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKHpvb20oeCkgKyAwLjUsIHNjcm9sbFkp
OwotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmZpbGxUZXh0KHgsIDIsIGdyaWRMYWJlbFNp
emUpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBm
b3IgKGxldCB5ID0gbXVsdGlwbGVCZWxvdyhtaW5ZLCBncmlkU3RlcEluY3JlbWVudCAqIDIpOyB5
IDwgbWF4WTsgeSArPSBncmlkU3RlcEluY3JlbWVudCAqIDIpIHsKLSAgICAgICAgICAgICAgICBp
ZiAoIXkgJiYgIXNjcm9sbFkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAg
ICAgICAgICAgICAgX2lzb2xhdGVBY3Rpb25zKCgpID0+IHsKLSAgICAgICAgICAgICAgICAgICAg
Y29udGV4dC50cmFuc2xhdGUoc2Nyb2xsWCwgem9vbSh5KSArIDAuNSk7Ci0gICAgICAgICAgICAg
ICAgICAgIGNvbnRleHQucm90YXRlKC1NYXRoLlBJIC8gMik7Ci0gICAgICAgICAgICAgICAgICAg
IGNvbnRleHQuZmlsbFRleHQoeSwgMiwgZ3JpZExhYmVsU2l6ZSk7Ci0gICAgICAgICAgICAgICAg
fSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0pOwotCi0gICAgICAgIC8vIERyYXcgaG9yaXpv
bnRhbCBncmlkCi0gICAgICAgIF9pc29sYXRlQWN0aW9ucygoKSA9PiB7Ci0gICAgICAgICAgICBj
b250ZXh0LnRyYW5zbGF0ZShEQVRBLmNvbnRlbnRJbnNldC53aWR0aCAtIHNjcm9sbFggKyAwLjUs
IERBVEEuY29udGVudEluc2V0LmhlaWdodCAtIHNjcm9sbFkpOwotCi0gICAgICAgICAgICBmb3Ig
KGxldCB4ID0gbXVsdGlwbGVCZWxvdyhtaW5YLCBncmlkU3ViU3RlcEluY3JlbWVudCk7IHggPCBt
YXhYOyB4ICs9IGdyaWRTdWJTdGVwSW5jcmVtZW50KSB7Ci0gICAgICAgICAgICAgICAgaWYgKCF4
ICYmICFzY3JvbGxYKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAg
ICAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7Ci0gICAgICAgICAgICAgICAgY29udGV4dC5tb3Zl
VG8oem9vbSh4KSwgc2Nyb2xsWSk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoeCAlIGdyaWRTdGVw
SW5jcmVtZW50KSB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuc3Ryb2tlU3R5bGUgPSBs
aWdodEdyaWRDb2xvcjsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC5saW5lVG8oem9vbSh4
KSwgc2Nyb2xsWSArIGdyaWRTdWJTdGVwTGVuZ3RoKTsKLSAgICAgICAgICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LnN0cm9rZVN0eWxlID0gZGFya0dyaWRDb2xv
cjsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC5saW5lVG8oem9vbSh4KSwgc2Nyb2xsWSAr
ICgoeCAlIChncmlkU3RlcEluY3JlbWVudCAqIDIpKSA/IGdyaWRTdWJTdGVwTGVuZ3RoIDogZ3Jp
ZFN0ZXBMZW5ndGgpKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBjb250
ZXh0LnN0cm9rZSgpOwotICAgICAgICAgICAgfQotICAgICAgICB9KTsKLQotICAgICAgICAvLyBE
cmF3IHZlcnRpY2FsIGdyaWQKLSAgICAgICAgX2lzb2xhdGVBY3Rpb25zKCgpID0+IHsKLSAgICAg
ICAgICAgIGNvbnRleHQudHJhbnNsYXRlKERBVEEuY29udGVudEluc2V0LndpZHRoIC0gc2Nyb2xs
WCwgREFUQS5jb250ZW50SW5zZXQuaGVpZ2h0IC0gc2Nyb2xsWSArIDAuNSk7Ci0KLSAgICAgICAg
ICAgIGZvciAobGV0IHkgPSBtdWx0aXBsZUJlbG93KG1pblksIGdyaWRTdWJTdGVwSW5jcmVtZW50
KTsgeSA8IG1heFk7IHkgKz0gZ3JpZFN1YlN0ZXBJbmNyZW1lbnQpIHsKLSAgICAgICAgICAgICAg
ICBpZiAoIXkgJiYgIXNjcm9sbFkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0g
ICAgICAgICAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTsKLSAgICAgICAgICAgICAgICBjb250
ZXh0Lm1vdmVUbyhzY3JvbGxYLCB6b29tKHkpKTsKLQotICAgICAgICAgICAgICAgIGlmICh5ICUg
Z3JpZFN0ZXBJbmNyZW1lbnQpIHsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC5zdHJva2VT
dHlsZSA9IGxpZ2h0R3JpZENvbG9yOwotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmxpbmVU
byhzY3JvbGxYICsgZ3JpZFN1YlN0ZXBMZW5ndGgsIHpvb20oeSkpOwotICAgICAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuc3Ryb2tlU3R5bGUgPSBkYXJr
R3JpZENvbG9yOwotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhzY3JvbGxYICsg
KCh5ICUgKGdyaWRTdGVwSW5jcmVtZW50ICogMikpID8gZ3JpZFN1YlN0ZXBMZW5ndGggOiBncmlk
U3RlcExlbmd0aCksIHpvb20oeSkpOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
ICAgIGNvbnRleHQuc3Ryb2tlKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0pOwotICAgIH0p
OwotfQotCiBmdW5jdGlvbiBzZXRQbGF0Zm9ybShwbGF0Zm9ybSkKIHsKICAgICBkb2N1bWVudC5i
b2R5LmNsYXNzTGlzdC5hZGQoInBsYXRmb3JtLSIgKyBwbGF0Zm9ybSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5k
ZXggYWVlOWY1ODU2OTlkYmZiODBjNjI4MzE1YTllMjlhZDdmYjA4NmQ5Ny4uNThiN2I2ZTQ0MTk0
NmZmODQwY2JlY2I1NzkwNjFjM2UzMGJkMmRiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAtNTQyLDYgKzU0
MiwxMSBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6c2VhcmNoSW5SZXNvdXJjZXMoRXJyb3JT
dHJpbmcmLCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbgogICAgICAgICBuZXR3b3JrQWdlbnQtPnNl
YXJjaE90aGVyUmVxdWVzdHMocmVnZXgsIHJlc3VsdCk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yUGFn
ZUFnZW50OjpzZXRTaG93UnVsZXJzKEVycm9yU3RyaW5nJiwgYm9vbCBzaG93UnVsZXJzKQorewor
ICAgIG1fb3ZlcmxheS0+c2V0U2hvd1J1bGVycyhzaG93UnVsZXJzKTsKK30KKwogdm9pZCBJbnNw
ZWN0b3JQYWdlQWdlbnQ6OnNldFNob3dQYWludFJlY3RzKEVycm9yU3RyaW5nJiwgYm9vbCBzaG93
KQogewogICAgIG1fc2hvd1BhaW50UmVjdHMgPSBzaG93OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmgKaW5kZXggMTAyOTZiMzhj
N2RiMmI5ZTljZTEzY2QzODRhMTA4ZTlmZTkwOWJkNy4uNjcwOWY1MmJlMDM0MzJiMmM1NWViOTQ3
MWJjNGMwZGIyNWQwODZjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oCkBAIC05Nyw2ICs5Nyw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGdldFJlc291cmNlQ29udGVudChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgZnJh
bWVJZCwgY29uc3QgU3RyaW5nJiB1cmwsIFN0cmluZyogY29udGVudCwgYm9vbCogYmFzZTY0RW5j
b2RlZCkgZmluYWw7CiAgICAgdm9pZCBzZWFyY2hJblJlc291cmNlKEVycm9yU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiBmcmFtZUlkLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBxdWVy
eSwgY29uc3QgYm9vbCogb3B0aW9uYWxDYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBvcHRpb25h
bElzUmVnZXgsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxSZXF1ZXN0SWQsIFJlZlB0cjxKU09OOjpB
cnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+PiYp
IGZpbmFsOwogICAgIHZvaWQgc2VhcmNoSW5SZXNvdXJjZXMoRXJyb3JTdHJpbmcmLCBjb25zdCBT
dHJpbmcmLCBjb25zdCBib29sKiBjYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBpc1JlZ2V4LCBS
ZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpTZWFyY2hSZXN1
bHQ+PiYpIGZpbmFsOworICAgIHZvaWQgc2V0U2hvd1J1bGVycyhFcnJvclN0cmluZyYsIGJvb2wp
IGZpbmFsOwogICAgIHZvaWQgc2V0U2hvd1BhaW50UmVjdHMoRXJyb3JTdHJpbmcmLCBib29sIHNo
b3cpIGZpbmFsOwogICAgIHZvaWQgc2V0RW11bGF0ZWRNZWRpYShFcnJvclN0cmluZyYsIGNvbnN0
IFN0cmluZyYpIGZpbmFsOwogICAgIHZvaWQgZ2V0Q29tcG9zaXRpbmdCb3JkZXJzVmlzaWJsZShF
cnJvclN0cmluZyYsIGJvb2wqIG91dF9wYXJhbSkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVk
U3RyaW5ncy5qcwppbmRleCA4MDNkOWQ0MWU4NWNiNWNkMmU4NGU2OTU4ZGQyZTc5NGQwNTFmMTZj
Li4yODRkNjJiNWMyNDY0MGJkOTVlNTI0YTM1Yzc5ZjM2Y2ZiZGI5MTcwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJp
bmdzLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9q
L2xvY2FsaXplZFN0cmluZ3MuanMKQEAgLTMyMCw2ICszMjAsNyBAQCBsb2NhbGl6ZWRTdHJpbmdz
WyJEb21haW4iXSA9ICJEb21haW4iOwogbG9jYWxpemVkU3RyaW5nc1siRG9uZSJdID0gIkRvbmUi
OwogbG9jYWxpemVkU3RyaW5nc1siRG93bmxvYWQiXSA9ICJEb3dubG9hZCI7CiBsb2NhbGl6ZWRT
dHJpbmdzWyJEb3dubG9hZCBXZWIgQXJjaGl2ZSJdID0gIkRvd25sb2FkIFdlYiBBcmNoaXZlIjsK
K2xvY2FsaXplZFN0cmluZ3NbIkRyYXcgUnVsZXJzIl0gPSAiRHJhdyBSdWxlcnMiOwogbG9jYWxp
emVkU3RyaW5nc1siRHVwbGljYXRlIFNlbGVjdG9yIl0gPSAiRHVwbGljYXRlIFNlbGVjdG9yIjsK
IGxvY2FsaXplZFN0cmluZ3NbIkR1cGxpY2F0ZSBwcm9wZXJ0eSJdID0gIkR1cGxpY2F0ZSBwcm9w
ZXJ0eSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJEdXBsaWNhdGUgcHJvcGVydHkg4oCcJXPigJ0uXG5D
bGljayB0byBkZWxldGUgdGhpcyBwcm9wZXJ0eS4iXSA9ICJEdXBsaWNhdGUgcHJvcGVydHkg4oCc
JXPigJ0uXG5DbGljayB0byBkZWxldGUgdGhpcyBwcm9wZXJ0eS4iOwpAQCAtNDgxLDYgKzQ4Miw3
IEBAIGxvY2FsaXplZFN0cmluZ3NbIkhpZGUgQ29uc29sZSJdID0gIkhpZGUgQ29uc29sZSI7CiBs
b2NhbGl6ZWRTdHJpbmdzWyJIaWRlIENvbnNvbGUgKCVzKSJdID0gIkhpZGUgQ29uc29sZSAoJXMp
IjsKIGxvY2FsaXplZFN0cmluZ3NbIkhpZGUgR3JpZCJdID0gIkhpZGUgR3JpZCI7CiBsb2NhbGl6
ZWRTdHJpbmdzWyJIaWRlIFBhdGgiXSA9ICJIaWRlIFBhdGgiOworbG9jYWxpemVkU3RyaW5nc1si
SGlkZSBSdWxlcnMiXSA9ICJIaWRlIFJ1bGVycyI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJIaWRlIGNv
bXBvc2l0aW5nIGJvcmRlcnMiXSA9ICJIaWRlIGNvbXBvc2l0aW5nIGJvcmRlcnMiOwogbG9jYWxp
emVkU3RyaW5nc1siSGlkZSBzaGFkb3cgRE9NIG5vZGVzIl0gPSAiSGlkZSBzaGFkb3cgRE9NIG5v
ZGVzIjsKIGxvY2FsaXplZFN0cmluZ3NbIkhpZGUgdGhlIGRldGFpbHMgc2lkZWJhciAoJXMpIl0g
PSAiSGlkZSB0aGUgZGV0YWlscyBzaWRlYmFyICglcykiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9TZXR0aW5nLmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9TZXR0aW5nLmpzCmluZGV4IDA5YTczYmUyZWIz
YjVhNzViOTUyNjIxZjJkY2YzNDA3YzE5MGEyMTkuLjY4ZjA2MDAzMTRiOWNmYjNjYzVjYWNmZGYx
MTJkYmFkODU1Yzk5MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL0Jhc2UvU2V0dGluZy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9CYXNlL1NldHRpbmcuanMKQEAgLTEyMSw2ICsxMjEsNyBAQCBXSS5zZXR0aW5ncyA9
IHsKICAgICBzaG93SW1hZ2VHcmlkOiBuZXcgV0kuU2V0dGluZygic2hvdy1pbWFnZS1ncmlkIiwg
ZmFsc2UpLAogICAgIHNob3dDYW52YXNQYXRoOiBuZXcgV0kuU2V0dGluZygic2hvdy1jYW52YXMt
cGF0aCIsIGZhbHNlKSwKICAgICBzZWxlY3RlZE5ldHdvcmtEZXRhaWxDb250ZW50Vmlld0lkZW50
aWZpZXI6IG5ldyBXSS5TZXR0aW5nKCJuZXR3b3JrLWRldGFpbC1jb250ZW50LXZpZXctaWRlbnRp
ZmllciIsICJwcmV2aWV3IiksCisgICAgc2hvd1J1bGVyczogbmV3IFdJLlNldHRpbmcoInNob3ct
cnVsZXJzIiwgdHJ1ZSksCiAKICAgICAvLyBFeHBlcmltZW50YWwKICAgICBleHBlcmltZW50YWxF
bmFibGVMYXllcnNUYWI6IG5ldyBXSS5TZXR0aW5nKCJleHBlcmltZW50YWwtZW5hYmxlLWxheWVy
cy10YWIiLCBmYWxzZSksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9ET01UcmVlQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlQ29udGVudFZpZXcuanMKaW5kZXggYTY4MDk4
NDgxNjc1NWQ4MjI1ODZmYzE5N2YzNDM2ZWE3NjI1ZmJjZC4uOGQ5OWZmYzA0NzIzZDUwYTRmYjMx
OThhNmRjMGVkMGM0MWUxMTc0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZUNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVDb250ZW50Vmlldy5qcwpAQCAt
NTQsNiArNTQsMTIgQEAgV0kuRE9NVHJlZUNvbnRlbnRWaWV3ID0gY2xhc3MgRE9NVHJlZUNvbnRl
bnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFZpZXcKICAgICAgICAgdGhpcy5fc2hvd1ByaW50U3R5
bGVzQnV0dG9uTmF2aWdhdGlvbkl0ZW0udmlzaWJpbGl0eVByaW9yaXR5ID0gV0kuTmF2aWdhdGlv
bkl0ZW0uVmlzaWJpbGl0eVByaW9yaXR5LkxvdzsKICAgICAgICAgdGhpcy5fc2hvd1ByaW50U3R5
bGVzQ2hhbmdlZCgpOwogCisgICAgICAgIFdJLnNldHRpbmdzLnNob3dSdWxlcnMuYWRkRXZlbnRM
aXN0ZW5lcihXSS5TZXR0aW5nLkV2ZW50LkNoYW5nZWQsIHRoaXMuX3Nob3dSdWxlcnNDaGFuZ2Vk
LCB0aGlzKTsKKyAgICAgICAgdGhpcy5fc2hvd1J1bGVyc0J1dHRvbk5hdmlnYXRpb25JdGVtID0g
bmV3IFdJLkFjdGl2YXRlQnV0dG9uTmF2aWdhdGlvbkl0ZW0oInNob3ctcnVsZXJzIiwgV0kuVUlT
dHJpbmcoIlNob3cgUnVsZXJzIiksIFdJLlVJU3RyaW5nKCJIaWRlIFJ1bGVycyIpLCAiSW1hZ2Vz
L1J1bGVycy5zdmciLCAxNiwgMTYpOworICAgICAgICB0aGlzLl9zaG93UnVsZXJzQnV0dG9uTmF2
aWdhdGlvbkl0ZW0uYWRkRXZlbnRMaXN0ZW5lcihXSS5CdXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVu
dC5DbGlja2VkLCB0aGlzLl90b2dnbGVTaG93UnVsZXJzLCB0aGlzKTsKKyAgICAgICAgdGhpcy5f
c2hvd1J1bGVyc0J1dHRvbk5hdmlnYXRpb25JdGVtLnZpc2liaWxpdHlQcmlvcml0eSA9IFdJLk5h
dmlnYXRpb25JdGVtLlZpc2liaWxpdHlQcmlvcml0eS5Mb3c7CisgICAgICAgIHRoaXMuX3Nob3dS
dWxlcnNDaGFuZ2VkKCk7CisKICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImRv
bS10cmVlIik7CiAgICAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIs
IHRoaXMuX21vdXNlV2FzQ2xpY2tlZC5iaW5kKHRoaXMpLCBmYWxzZSk7CiAKQEAgLTkzLDYgKzk5
LDExIEBAIFdJLkRPTVRyZWVDb250ZW50VmlldyA9IGNsYXNzIERPTVRyZWVDb250ZW50VmlldyBl
eHRlbmRzIFdJLkNvbnRlbnRWaWV3CiAgICAgZ2V0IG5hdmlnYXRpb25JdGVtcygpCiAgICAgewog
ICAgICAgICBsZXQgaXRlbXMgPSBbdGhpcy5fc2hvd1ByaW50U3R5bGVzQnV0dG9uTmF2aWdhdGlv
bkl0ZW0sIHRoaXMuX3Nob3dzU2hhZG93RE9NQnV0dG9uTmF2aWdhdGlvbkl0ZW1dOworCisgICAg
ICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyAxMS4zKQorICAgICAgICBpZiAoUGFnZUFnZW50LnNl
dFNob3dSdWxlcnMpCisgICAgICAgICAgICBpdGVtcy51bnNoaWZ0KHRoaXMuX3Nob3dSdWxlcnNC
dXR0b25OYXZpZ2F0aW9uSXRlbSk7CisKICAgICAgICAgaWYgKCFXSS5zZXR0aW5ncy5leHBlcmlt
ZW50YWxFbmFibGVMYXllcnNUYWIudmFsdWUpCiAgICAgICAgICAgICBpdGVtcy5wdXNoKHRoaXMu
X2NvbXBvc2l0aW5nQm9yZGVyc0J1dHRvbk5hdmlnYXRpb25JdGVtLCB0aGlzLl9wYWludEZsYXNo
aW5nQnV0dG9uTmF2aWdhdGlvbkl0ZW0pOwogCkBAIC0xNTAsNiArMTYxLDcgQEAgV0kuRE9NVHJl
ZUNvbnRlbnRWaWV3ID0gY2xhc3MgRE9NVHJlZUNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVu
dFZpZXcKIAogICAgICAgICBXSS5zaG93UGFpbnRSZWN0c1NldHRpbmcucmVtb3ZlRXZlbnRMaXN0
ZW5lcihudWxsLCBudWxsLCB0aGlzKTsKICAgICAgICAgV0kuc2hvd1NoYWRvd0RPTVNldHRpbmcu
cmVtb3ZlRXZlbnRMaXN0ZW5lcihudWxsLCBudWxsLCB0aGlzKTsKKyAgICAgICAgV0kuc2V0dGlu
Z3Muc2hvd1J1bGVycy5yZW1vdmVFdmVudExpc3RlbmVyKG51bGwsIG51bGwsIHRoaXMpOwogICAg
ICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihudWxsLCBudWxsLCB0
aGlzKTsKICAgICAgICAgV0kuZG9tVHJlZU1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihudWxs
LCBudWxsLCB0aGlzKTsKICAgICAgICAgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLnJlbW92ZUV2ZW50
TGlzdGVuZXIobnVsbCwgbnVsbCwgdGhpcyk7CkBAIC01NjcsNiArNTc5LDI0IEBAIFdJLkRPTVRy
ZWVDb250ZW50VmlldyA9IGNsYXNzIERPTVRyZWVDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRl
bnRWaWV3CiAgICAgICAgIHRoaXMuX3Nob3dQcmludFN0eWxlc0NoYW5nZWQoKTsKICAgICB9CiAK
KyAgICBfc2hvd1J1bGVyc0NoYW5nZWQoKQorICAgIHsKKyAgICAgICAgdGhpcy5fc2hvd1J1bGVy
c0J1dHRvbk5hdmlnYXRpb25JdGVtLmFjdGl2YXRlZCA9IFdJLnNldHRpbmdzLnNob3dSdWxlcnMu
dmFsdWU7CisKKyAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDExLjMpCisgICAgICAgIGlm
ICghUGFnZUFnZW50LnNldFNob3dSdWxlcnMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgUGFnZUFnZW50LnNldFNob3dSdWxlcnModGhpcy5fc2hvd1J1bGVyc0J1dHRvbk5hdmlnYXRp
b25JdGVtLmFjdGl2YXRlZCk7CisgICAgfQorCisgICAgX3RvZ2dsZVNob3dSdWxlcnMoZXZlbnQp
CisgICAgeworICAgICAgICBXSS5zZXR0aW5ncy5zaG93UnVsZXJzLnZhbHVlID0gIVdJLnNldHRp
bmdzLnNob3dSdWxlcnMudmFsdWU7CisKKyAgICAgICAgdGhpcy5fc2hvd1J1bGVyc0NoYW5nZWQo
KTsKKyAgICB9CisKICAgICBfc2hvd1NlYXJjaEhpZ2hsaWdodHMoKQogICAgIHsKICAgICAgICAg
Y29uc29sZS5hc3NlcnQodGhpcy5fc2VhcmNoSWRlbnRpZmllcik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>340456</attachid>
            <date>2018-05-15 18:10:14 -0700</date>
            <delta_ts>2018-05-16 01:43:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185644-20180515181013.patch</filename>
            <type>text/plain</type>
            <size>28271</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDJjMjZkZTM3NGM2ZjlhMGIyNmY4Y2M2NGI5YmIx
ODIxN2RiMGY2NWMuLjg4YzVjMTdmZDlhY2RhOTU2ODUzNjllNGQyYjdkMDJkNWFmNWY2OGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE4LTA1LTE1ICBEZXZp
biBSb3Vzc28gIDx3ZWJraXRAZGV2aW5yb3Vzc28uY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IGNyZWF0ZSBhIG5hdmlnYXRpb24gaXRlbSBmb3IgdG9nZ2xpbmcgdGhlIG92ZXJsYXkgcnVs
ZXJzL2d1aWRlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTg1NjQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBpbnNwZWN0b3IvcHJvdG9jb2wvT3ZlcmxheVR5cGVzLmpzb246CisgICAgICAgICogaW5z
cGVjdG9yL3Byb3RvY29sL1BhZ2UuanNvbjoKKwogMjAxOC0wNS0xNSAgRGV2aW4gUm91c3NvICA8
d2Via2l0QGRldmlucm91c3NvLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBBZGQgcnVs
ZXJzIGFuZCBndWlkZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzODQ1MWQ0ZjViNzIxNmU5MTQxMTUyMGVlMzc5
OWNmNmVlYzRmZjNhLi4wOTg4YzlhNzIxNWUzYWQzYzAzNDNmZjg3YzQ5ZDYxZDJhNGU4MGVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTgtMDUtMTUgIERldmluIFJvdXNzbyAgPHdl
YmtpdEBkZXZpbnJvdXNzby5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogY3JlYXRlIGEg
bmF2aWdhdGlvbiBpdGVtIGZvciB0b2dnbGluZyB0aGUgb3ZlcmxheSBydWxlcnMvZ3VpZGVzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODU2NDQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNo
IGlzIHB1cmVseSBhIHZpc3VhbCBjaGFuZ2UgZm9yIFdlYkluc3BlY3RvciwgYW5kIGRvZXNuJ3Qg
YWZmZWN0IGFueXRoaW5nIGVsc2UuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvclBhZ2VBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFn
ZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6c2V0U2hv
d1J1bGVycyk6IEFkZGVkLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXku
aDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JPdmVybGF5OjpzaG91bGRTaG93T3ZlcmxheSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JPdmVybGF5Ojp1cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yT3ZlcmxheTo6c2V0U2hvd1J1bGVycyk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yT3ZlcmxheTo6ZHJhd1J1bGVycyk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yT3ZlcmxheTo6cmVzZXQpOgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ck92ZXJsYXlQYWdlLmpzOgorICAgICAgICAoZHJhd05vZGVIaWdobGlnaHQpOgorICAgICAgICAo
ZHJhd1F1YWRIaWdobGlnaHQpOgorICAgICAgICAoZHJhd1J1bGVycyk6IEFkZGVkLgorICAgICAg
ICAoX2RyYXdCb3VuZHMpOiBBZGRlZC4KKyAgICAgICAgKHJlc2V0KToKKyAgICAgICAgKF9kcmF3
UnVsZXJzKTogRGVsZXRlZC4KKwogMjAxOC0wNS0xNSAgRGV2aW4gUm91c3NvICA8d2Via2l0QGRl
dmlucm91c3NvLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBBZGQgcnVsZXJzIGFuZCBn
dWlkZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDE3ODRhMGNkNjNkZmUwZDU3YTJmOTcz
YjAxNGNjYjYyZmM5NmEyZmQuLmYzZWQ3Mzk4NjZjYTg5MGRiODNlNjkwOTczMjZhMDRjNmEyMDk1
NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE4LTA1LTE1
ICBEZXZpbiBSb3Vzc28gIDx3ZWJraXRAZGV2aW5yb3Vzc28uY29tPgorCisgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IGNyZWF0ZSBhIG5hdmlnYXRpb24gaXRlbSBmb3IgdG9nZ2xpbmcgdGhlIG92ZXJs
YXkgcnVsZXJzL2d1aWRlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTg1NjQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBMb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanM6Cisg
ICAgICAgICogVXNlckludGVyZmFjZS9CYXNlL1NldHRpbmcuanM6CisgICAgICAgICogVXNlcklu
dGVyZmFjZS9WaWV3cy9ET01UcmVlQ29udGVudFZpZXcuanM6CisgICAgICAgIChXSS5ET01UcmVl
Q29udGVudFZpZXcpOgorICAgICAgICAoV0kuRE9NVHJlZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5n
ZXQgbmF2aWdhdGlvbkl0ZW1zKToKKyAgICAgICAgKFdJLkRPTVRyZWVDb250ZW50Vmlldy5wcm90
b3R5cGUuY2xvc2VkKToKKyAgICAgICAgKFdJLkRPTVRyZWVDb250ZW50Vmlldy5wcm90b3R5cGUu
X3Nob3dSdWxlcnNDaGFuZ2VkKTogQWRkZWQuCisgICAgICAgIChXSS5ET01UcmVlQ29udGVudFZp
ZXcucHJvdG90eXBlLl90b2dnbGVTaG93UnVsZXJzKTogQWRkZWQuCisKIDIwMTgtMDUtMTQgIE5p
a2l0YSBWYXNpbHlldiAgPG52YXNpbHlldkBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3Bl
Y3RvcjogQ2FudmFzOiBSZW1vdmUgdW51c2VkIC0tdmFsdWUtdmlzdWFsLWhpZ2hsaWdodCBDU1Mg
dmFyaWFibGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJv
dG9jb2wvT3ZlcmxheVR5cGVzLmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3Byb3RvY29sL092ZXJsYXlUeXBlcy5qc29uCmluZGV4IGU4ZTQ1Mzk3ODM5MmNlNjQyM2M2Yzlh
MDk0ZTA2ZTc1YWE3YTg5NzguLjgxM2ZiNjA3OTZlMTc0ZjM4ODY5MGJlYzkzNGFiODQwMjA4MmIy
ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wv
T3ZlcmxheVR5cGVzLmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9w
cm90b2NvbC9PdmVybGF5VHlwZXMuanNvbgpAQCAtOTcsNyArOTcsOCBAQAogICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAicGFnZVNjYWxlRmFjdG9yIiwgInR5cGUiOiAibnVtYmVyIiB9LAogICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAicGFnZVpvb21GYWN0b3IiLCAidHlwZSI6ICJudW1iZXIi
IH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzY3JvbGxPZmZzZXQiLCAiJHJlZiI6ICJQ
b2ludCIgfSwKLSAgICAgICAgICAgICAgICB7ICJuYW1lIjogImNvbnRlbnRJbnNldCIsICIkcmVm
IjogIlNpemUiIH0KKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImNvbnRlbnRJbnNldCIsICIk
cmVmIjogIlNpemUiIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzaG93UnVsZXJzIiwg
InR5cGUiOiAiYm9vbGVhbiIgfQogICAgICAgICAgICAgXQogICAgICAgICB9CiAgICAgXQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9QYWdlLmpz
b24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL1BhZ2UuanNvbgpp
bmRleCA2ZThiMDlmNTM1NWRhYjc0NDk2Mjk0Y2FlNTFlZjg3NThjN2E1MDhmLi44ZjIyYzUzMTVj
YTQ1ZGI4ZDVhM2YxYTk2NGZjMTJlYWU0MTM1Nzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL1BhZ2UuanNvbgorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL1BhZ2UuanNvbgpAQCAtMTY1LDYgKzE2NSwxMyBA
QAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVzdWx0IiwgInR5cGUiOiAiYXJyYXkiLCAi
aXRlbXMiOiB7ICIkcmVmIjogIlNlYXJjaFJlc3VsdCIgfSwgImRlc2NyaXB0aW9uIjogIkxpc3Qg
b2Ygc2VhcmNoIHJlc3VsdHMuIiB9CiAgICAgICAgICAgICBdCiAgICAgICAgIH0sCisgICAgICAg
IHsKKyAgICAgICAgICAgICJuYW1lIjogInNldFNob3dSdWxlcnMiLAorICAgICAgICAgICAgImRl
c2NyaXB0aW9uIjogIlJlcXVlc3RzIHRoYXQgYmFja2VuZCBkcmF3IHJ1bGVycyBpbiB0aGUgaW5z
cGVjdG9yIG92ZXJsYXkiLAorICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJyZXN1bHQiLCAidHlwZSI6ICJib29sZWFuIiwgImRlc2NyaXB0aW9u
IjogIlRydWUgZm9yIHNob3dpbmcgcnVsZXJzIiB9CisgICAgICAgICAgICBdCisgICAgICAgIH0s
CiAgICAgICAgIHsKICAgICAgICAgICAgICJuYW1lIjogInNldFNob3dQYWludFJlY3RzIiwKICAg
ICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXF1ZXN0cyB0aGF0IGJhY2tlbmQgc2hvd3MgcGFp
bnQgcmVjdGFuZ2xlcyIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yT3ZlcmxheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3Zl
cmxheS5jcHAKaW5kZXggNmU2NjU1ZWQ2N2MxYzdjYzhiYzk1N2IwY2JlODE0ZTExZTU3ZmI3ZS4u
ZTVjODkwMjE0YzljNDkwMzVkMDEzMzE0NjNiNmRmMWQwMDNlYmE5MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcApAQCAtMjY4LDcgKzI2OCw3IEBA
IHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6c2V0SW5kaWNhdGluZyhib29sIGluZGljYXRpbmcpCiAK
IGJvb2wgSW5zcGVjdG9yT3ZlcmxheTo6c2hvdWxkU2hvd092ZXJsYXkoKSBjb25zdAogewotICAg
IHJldHVybiBtX2hpZ2hsaWdodE5vZGUgfHwgbV9oaWdobGlnaHROb2RlTGlzdCB8fCBtX2hpZ2hs
aWdodFF1YWQgfHwgbV9pbmRpY2F0aW5nIHx8IG1fc2hvd2luZ1BhaW50UmVjdHMgfHwgIW1fcGF1
c2VkSW5EZWJ1Z2dlck1lc3NhZ2UuaXNOdWxsKCk7CisgICAgcmV0dXJuIG1faGlnaGxpZ2h0Tm9k
ZSB8fCBtX2hpZ2hsaWdodE5vZGVMaXN0IHx8IG1faGlnaGxpZ2h0UXVhZCB8fCBtX2luZGljYXRp
bmcgfHwgbV9zaG93aW5nUGFpbnRSZWN0cyB8fCBtX3Nob3dSdWxlcnMgfHwgIW1fcGF1c2VkSW5E
ZWJ1Z2dlck1lc3NhZ2UuaXNOdWxsKCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6dXBk
YXRlKCkKQEAgLTI5Nyw2ICsyOTcsOSBAQCB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OnVwZGF0ZSgp
CiAgICAgZHJhd1BhdXNlZEluRGVidWdnZXJNZXNzYWdlKCk7CiAgICAgZHJhd1BhaW50UmVjdHMo
KTsKIAorICAgIGlmIChtX3Nob3dSdWxlcnMpCisgICAgICAgIGRyYXdSdWxlcnMoKTsKKwogICAg
IC8vIFBvc2l0aW9uIERPTSBlbGVtZW50cy4KICAgICBvdmVybGF5UGFnZSgpLT5tYWluRnJhbWUo
KS5kb2N1bWVudCgpLT5yZXNvbHZlU3R5bGUoRG9jdW1lbnQ6OlJlc29sdmVTdHlsZVR5cGU6OlJl
YnVpbGQpOwogICAgIGlmIChvdmVybGF5Vmlldy0+bmVlZHNMYXlvdXQoKSkKQEAgLTM5Miw2ICsz
OTUsMTYgQEAgdm9pZCBJbnNwZWN0b3JPdmVybGF5OjpzaG93UGFpbnRSZWN0KGNvbnN0IEZsb2F0
UmVjdCYgcmVjdCkKICAgICBmb3JjZVBhaW50KCk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yT3Zlcmxh
eTo6c2V0U2hvd1J1bGVycyhib29sIHNob3dSdWxlcnMpCit7CisgICAgaWYgKG1fc2hvd1J1bGVy
cyA9PSBzaG93UnVsZXJzKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3Nob3dSdWxlcnMgPSBz
aG93UnVsZXJzOworCisgICAgdXBkYXRlKCk7Cit9CisKIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6
dXBkYXRlUGFpbnRSZWN0c1RpbWVyRmlyZWQoKQogewogICAgIE1vbm90b25pY1RpbWUgbm93ID0g
TW9ub3RvbmljVGltZTo6bm93KCk7CkBAIC00MTksNiArNDMyLDExIEBAIHZvaWQgSW5zcGVjdG9y
T3ZlcmxheTo6ZHJhd1BhaW50UmVjdHMoKQogICAgIGV2YWx1YXRlSW5PdmVybGF5KEFTQ0lJTGl0
ZXJhbCgidXBkYXRlUGFpbnRSZWN0cyIpLCBXVEZNb3ZlKGFycmF5T2ZSZWN0cykpOwogfQogCit2
b2lkIEluc3BlY3Rvck92ZXJsYXk6OmRyYXdSdWxlcnMoKQoreworICAgIGV2YWx1YXRlSW5PdmVy
bGF5KEFTQ0lJTGl0ZXJhbCgiZHJhd1J1bGVycyIpKTsKK30KKwogc3RhdGljIFJlZlB0cjxKU09O
OjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6RnJhZ21lbnRIaWdo
bGlnaHREYXRhPj4gYnVpbGRBcnJheUZvclJlbmRlcmVyRnJhZ21lbnRzKFJlbmRlck9iamVjdCog
cmVuZGVyZXIsIGNvbnN0IEhpZ2hsaWdodENvbmZpZyYgY29uZmlnKQogewogICAgIGF1dG8gYXJy
YXlPZkZyYWdtZW50cyA9IEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6T3Zlcmxh
eVR5cGVzOjpGcmFnbWVudEhpZ2hsaWdodERhdGE+OjpjcmVhdGUoKTsKQEAgLTc0Miw2ICs3NjAs
NyBAQCB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OnJlc2V0KGNvbnN0IEludFNpemUmIHZpZXdwb3J0
U2l6ZSwgY29uc3QgSW50UG9pbnQmIHNjcm9sbAogICAgICAgICAuc2V0UGFnZVpvb21GYWN0b3Io
bV9wYWdlLm1haW5GcmFtZSgpLnBhZ2Vab29tRmFjdG9yKCkpCiAgICAgICAgIC5zZXRTY3JvbGxP
ZmZzZXQoYnVpbGRPYmplY3RGb3JQb2ludChzY3JvbGxPZmZzZXQpKQogICAgICAgICAuc2V0Q29u
dGVudEluc2V0KGJ1aWxkT2JqZWN0Rm9yU2l6ZShJbnRTaXplKDAsIG1fcGFnZS5tYWluRnJhbWUo
KS52aWV3KCktPnRvcENvbnRlbnRJbnNldChTY3JvbGxWaWV3OjpUb3BDb250ZW50SW5zZXRUeXBl
OjpXZWJDb3JlT3JQbGF0Zm9ybUNvbnRlbnRJbnNldCkpKSkKKyAgICAgICAgLnNldFNob3dSdWxl
cnMobV9zaG93UnVsZXJzKQogICAgICAgICAucmVsZWFzZSgpOwogICAgIGV2YWx1YXRlSW5PdmVy
bGF5KCJyZXNldCIsIFdURk1vdmUoY29uZmlnT2JqZWN0KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuaAppbmRleCAzOGJhODUwZjQ2ZTA5NTIyNzAyODE3
ODU0Y2RiOWEwYzhhZTc4NzlmLi5hMjRiZWNkZDI3MTI1YWIzYWEwZTI5NzFjMTcwOGYzZDNmNWNi
ZmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3Zlcmxh
eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmgKQEAg
LTExNSw2ICsxMTUsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBzZXRTaG93aW5nUGFpbnRS
ZWN0cyhib29sKTsKICAgICB2b2lkIHNob3dQYWludFJlY3QoY29uc3QgRmxvYXRSZWN0Jik7CisK
KyAgICB2b2lkIHNldFNob3dSdWxlcnMoYm9vbCk7CiAgICAgCiAgICAgTm9kZSogaGlnaGxpZ2h0
ZWROb2RlKCkgY29uc3Q7CiAKQEAgLTEzMiw2ICsxMzQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
ZHJhd1F1YWRIaWdobGlnaHQoKTsKICAgICB2b2lkIGRyYXdQYXVzZWRJbkRlYnVnZ2VyTWVzc2Fn
ZSgpOwogICAgIHZvaWQgZHJhd1BhaW50UmVjdHMoKTsKKyAgICB2b2lkIGRyYXdSdWxlcnMoKTsK
ICAgICB2b2lkIHVwZGF0ZVBhaW50UmVjdHNUaW1lckZpcmVkKCk7CiAKICAgICBQYWdlKiBvdmVy
bGF5UGFnZSgpOwpAQCAtMTU3LDYgKzE2MCw3IEBAIHByaXZhdGU6CiAgICAgVGltZXIgbV9wYWlu
dFJlY3RVcGRhdGVUaW1lcjsKICAgICBib29sIG1faW5kaWNhdGluZyB7ZmFsc2V9OwogICAgIGJv
b2wgbV9zaG93aW5nUGFpbnRSZWN0cyB7ZmFsc2V9OworICAgIGJvb2wgbV9zaG93UnVsZXJzIHtm
YWxzZX07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheVBhZ2UuanMgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheVBhZ2UuanMKaW5kZXggYmY3ZDU2ZGJlOGJhZDE3
NmVmYzRjNzkzZGEzYmZiMzIxODdmYWZjYy4uNjE5ZmYzNjUzMjYwODhkM2MwMTVmZmUxNDdkYjMw
MzQ3YTZlNTg0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ck92ZXJsYXlQYWdlLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JP
dmVybGF5UGFnZS5qcwpAQCAtMSwzICsxLDQgQEAKK2NvbnN0IGJvdW5kc0NvbG9yID0gInJnYmEo
MCwwLDAsMC40KSI7CiBjb25zdCBsaWdodEdyaWRDb2xvciA9ICJyZ2JhKDAsMCwwLDAuMikiOwog
Y29uc3QgZGFya0dyaWRDb2xvciA9ICJyZ2JhKDAsMCwwLDAuNSkiOwogY29uc3QgdHJhbnNwYXJl
bnRDb2xvciA9ICJyZ2JhKDAsIDAsIDAsIDApIjsKQEAgLTYzLDcgKzY0LDEwIEBAIGZ1bmN0aW9u
IGRyYXdOb2RlSGlnaGxpZ2h0KGFsbEhpZ2hsaWdodHMpCiAgICAgICAgIH0pOwogICAgIH0KIAot
ICAgIF9kcmF3UnVsZXJzKCk7CisgICAgaWYgKCFEQVRBLnNob3dSdWxlcnMpCisgICAgICAgIGRy
YXdSdWxlcnMoKTsKKworICAgIF9kcmF3Qm91bmRzKGJvdW5kcyk7CiAKICAgICBpZiAoYWxsSGln
aGxpZ2h0cy5sZW5ndGggPT09IDEpIHsKICAgICAgICAgZm9yIChsZXQgZnJhZ21lbnQgb2YgYWxs
SGlnaGxpZ2h0c1swXS5mcmFnbWVudHMpCkBAIC03OSw3ICs4MywxMCBAQCBmdW5jdGlvbiBkcmF3
UXVhZEhpZ2hsaWdodChoaWdobGlnaHQpCiAgICAgICAgIF9kcmF3T3V0bGluZWRRdWFkKGhpZ2hs
aWdodC5xdWFkc1swXSwgaGlnaGxpZ2h0LmNvbnRlbnRDb2xvciwgaGlnaGxpZ2h0LmNvbnRlbnRP
dXRsaW5lQ29sb3IsIGJvdW5kcyk7CiAgICAgfSk7CiAKLSAgICBfZHJhd1J1bGVycygpOworICAg
IGlmICghREFUQS5zaG93UnVsZXJzKQorICAgICAgICBkcmF3UnVsZXJzKCk7CisKKyAgICBfZHJh
d0JvdW5kcyhib3VuZHMpOwogfQogCiBmdW5jdGlvbiBxdWFkRXF1YWxzKHF1YWQxLCBxdWFkMikK
QEAgLTEwNiw2ICsxMTMsMTI5IEBAIGZ1bmN0aW9uIHVwZGF0ZVBhaW50UmVjdHMocGFpbnRSZWN0
TGlzdCkKICAgICBjb250ZXh0LnJlc3RvcmUoKTsKIH0KIAorZnVuY3Rpb24gZHJhd1J1bGVycygp
Cit7CisgICAgY29uc3QgZ3JpZExhYmVsU2l6ZSA9IDEzOworICAgIGNvbnN0IGdyaWRTaXplID0g
MTU7CisgICAgY29uc3QgZ3JpZFN0ZXBJbmNyZW1lbnQgPSA1MDsKKyAgICBjb25zdCBncmlkU3Rl
cExlbmd0aCA9IDg7CisgICAgY29uc3QgZ3JpZFN1YlN0ZXBJbmNyZW1lbnQgPSA1OworICAgIGNv
bnN0IGdyaWRTdWJTdGVwTGVuZ3RoID0gNTsKKworCisgICAgbGV0IHBhZ2VGYWN0b3IgPSBEQVRB
LnBhZ2Vab29tRmFjdG9yICogREFUQS5wYWdlU2NhbGVGYWN0b3I7CisgICAgbGV0IHNjcm9sbFgg
PSBEQVRBLnNjcm9sbE9mZnNldC54ICogREFUQS5wYWdlU2NhbGVGYWN0b3I7CisgICAgbGV0IHNj
cm9sbFkgPSBEQVRBLnNjcm9sbE9mZnNldC55ICogREFUQS5wYWdlU2NhbGVGYWN0b3I7CisKKyAg
ICBmdW5jdGlvbiB6b29tKHZhbHVlKSB7CisgICAgICAgIHJldHVybiB2YWx1ZSAqIHBhZ2VGYWN0
b3I7CisgICAgfQorCisgICAgZnVuY3Rpb24gdW56b29tKHZhbHVlKSB7CisgICAgICAgIHJldHVy
biB2YWx1ZSAvIHBhZ2VGYWN0b3I7CisgICAgfQorCisgICAgZnVuY3Rpb24gbXVsdGlwbGVCZWxv
dyh2YWx1ZSwgc3RlcCkgeworICAgICAgICByZXR1cm4gdmFsdWUgLSAodmFsdWUgJSBzdGVwKTsK
KyAgICB9CisKKyAgICBsZXQgd2lkdGggPSBEQVRBLnZpZXdwb3J0U2l6ZS53aWR0aCAvIHBhZ2VG
YWN0b3I7CisgICAgbGV0IGhlaWdodCA9IERBVEEudmlld3BvcnRTaXplLmhlaWdodCAvIHBhZ2VG
YWN0b3I7CisgICAgbGV0IG1pblggPSB1bnpvb20oc2Nyb2xsWCk7CisgICAgbGV0IG1pblkgPSB1
bnpvb20oc2Nyb2xsWSk7CisgICAgbGV0IG1heFggPSBtaW5YICsgd2lkdGg7CisgICAgbGV0IG1h
eFkgPSBtaW5ZICsgaGVpZ2h0OworCisgICAgLy8gRHJhdyBiYWNrZ3JvdW5kcworICAgIF9pc29s
YXRlQWN0aW9ucygoKSA9PiB7CisgICAgICAgIGxldCBvZmZzZXRYID0gREFUQS5jb250ZW50SW5z
ZXQud2lkdGggKyBncmlkU2l6ZTsKKyAgICAgICAgbGV0IG9mZnNldFkgPSBEQVRBLmNvbnRlbnRJ
bnNldC5oZWlnaHQgKyBncmlkU2l6ZTsKKworICAgICAgICBjb250ZXh0LmZpbGxTdHlsZSA9IGdy
aWRCYWNrZ3JvdW5kQ29sb3I7CisgICAgICAgIGNvbnRleHQuZmlsbFJlY3QoREFUQS5jb250ZW50
SW5zZXQud2lkdGgsIERBVEEuY29udGVudEluc2V0LmhlaWdodCwgZ3JpZFNpemUsIGdyaWRTaXpl
KTsKKyAgICAgICAgY29udGV4dC5maWxsUmVjdChvZmZzZXRYLCBEQVRBLmNvbnRlbnRJbnNldC5o
ZWlnaHQsIHpvb20od2lkdGgpIC0gb2Zmc2V0WCwgZ3JpZFNpemUpOworICAgICAgICBjb250ZXh0
LmZpbGxSZWN0KERBVEEuY29udGVudEluc2V0LndpZHRoLCBvZmZzZXRZLCBncmlkU2l6ZSwgem9v
bShoZWlnaHQpIC0gb2Zmc2V0WSk7CisgICAgfSk7CisKKyAgICAvLyBSdWxlciBzdHlsZXMKKyAg
ICBfaXNvbGF0ZUFjdGlvbnMoKCkgPT4geworICAgICAgICBjb250ZXh0LmxpbmVXaWR0aCA9IDE7
CisgICAgICAgIGNvbnRleHQuZmlsbFN0eWxlID0gZGFya0dyaWRDb2xvcjsKKworICAgICAgICAv
LyBEcmF3IGxhYmVscworICAgICAgICBfaXNvbGF0ZUFjdGlvbnMoKCkgPT4geworICAgICAgICAg
ICAgY29udGV4dC50cmFuc2xhdGUoREFUQS5jb250ZW50SW5zZXQud2lkdGggLSBzY3JvbGxYLCBE
QVRBLmNvbnRlbnRJbnNldC5oZWlnaHQgLSBzY3JvbGxZKTsKKworICAgICAgICAgICAgZm9yIChs
ZXQgeCA9IG11bHRpcGxlQmVsb3cobWluWCwgZ3JpZFN0ZXBJbmNyZW1lbnQgKiAyKTsgeCA8IG1h
eFg7IHggKz0gZ3JpZFN0ZXBJbmNyZW1lbnQgKiAyKSB7CisgICAgICAgICAgICAgICAgaWYgKCF4
ICYmICFzY3JvbGxYKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAg
ICAgICAgIF9pc29sYXRlQWN0aW9ucygoKSA9PiB7CisgICAgICAgICAgICAgICAgICAgIGNvbnRl
eHQudHJhbnNsYXRlKHpvb20oeCkgKyAwLjUsIHNjcm9sbFkpOworICAgICAgICAgICAgICAgICAg
ICBjb250ZXh0LmZpbGxUZXh0KHgsIDIsIGdyaWRMYWJlbFNpemUpOworICAgICAgICAgICAgICAg
IH0pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmb3IgKGxldCB5ID0gbXVsdGlwbGVC
ZWxvdyhtaW5ZLCBncmlkU3RlcEluY3JlbWVudCAqIDIpOyB5IDwgbWF4WTsgeSArPSBncmlkU3Rl
cEluY3JlbWVudCAqIDIpIHsKKyAgICAgICAgICAgICAgICBpZiAoIXkgJiYgIXNjcm9sbFkpCisg
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICAgICAgX2lzb2xhdGVB
Y3Rpb25zKCgpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC50cmFuc2xhdGUoc2Ny
b2xsWCwgem9vbSh5KSArIDAuNSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQucm90YXRl
KC1NYXRoLlBJIC8gMik7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZmlsbFRleHQoeSwg
MiwgZ3JpZExhYmVsU2l6ZSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0pOworCisgICAgICAgIC8vIERyYXcgaG9yaXpvbnRhbCBncmlkCisgICAgICAgIF9p
c29sYXRlQWN0aW9ucygoKSA9PiB7CisgICAgICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZShEQVRB
LmNvbnRlbnRJbnNldC53aWR0aCAtIHNjcm9sbFggKyAwLjUsIERBVEEuY29udGVudEluc2V0Lmhl
aWdodCAtIHNjcm9sbFkpOworCisgICAgICAgICAgICBmb3IgKGxldCB4ID0gbXVsdGlwbGVCZWxv
dyhtaW5YLCBncmlkU3ViU3RlcEluY3JlbWVudCk7IHggPCBtYXhYOyB4ICs9IGdyaWRTdWJTdGVw
SW5jcmVtZW50KSB7CisgICAgICAgICAgICAgICAgaWYgKCF4ICYmICFzY3JvbGxYKQorICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgICAgIGNvbnRleHQuYmVnaW5Q
YXRoKCk7CisgICAgICAgICAgICAgICAgY29udGV4dC5tb3ZlVG8oem9vbSh4KSwgc2Nyb2xsWSk7
CisKKyAgICAgICAgICAgICAgICBpZiAoeCAlIGdyaWRTdGVwSW5jcmVtZW50KSB7CisgICAgICAg
ICAgICAgICAgICAgIGNvbnRleHQuc3Ryb2tlU3R5bGUgPSBsaWdodEdyaWRDb2xvcjsKKyAgICAg
ICAgICAgICAgICAgICAgY29udGV4dC5saW5lVG8oem9vbSh4KSwgc2Nyb2xsWSArIGdyaWRTdWJT
dGVwTGVuZ3RoKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAg
ICBjb250ZXh0LnN0cm9rZVN0eWxlID0gZGFya0dyaWRDb2xvcjsKKyAgICAgICAgICAgICAgICAg
ICAgY29udGV4dC5saW5lVG8oem9vbSh4KSwgc2Nyb2xsWSArICgoeCAlIChncmlkU3RlcEluY3Jl
bWVudCAqIDIpKSA/IGdyaWRTdWJTdGVwTGVuZ3RoIDogZ3JpZFN0ZXBMZW5ndGgpKTsKKyAgICAg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBjb250ZXh0LnN0cm9rZSgpOworICAgICAg
ICAgICAgfQorICAgICAgICB9KTsKKworICAgICAgICAvLyBEcmF3IHZlcnRpY2FsIGdyaWQKKyAg
ICAgICAgX2lzb2xhdGVBY3Rpb25zKCgpID0+IHsKKyAgICAgICAgICAgIGNvbnRleHQudHJhbnNs
YXRlKERBVEEuY29udGVudEluc2V0LndpZHRoIC0gc2Nyb2xsWCwgREFUQS5jb250ZW50SW5zZXQu
aGVpZ2h0IC0gc2Nyb2xsWSArIDAuNSk7CisKKyAgICAgICAgICAgIGZvciAobGV0IHkgPSBtdWx0
aXBsZUJlbG93KG1pblksIGdyaWRTdWJTdGVwSW5jcmVtZW50KTsgeSA8IG1heFk7IHkgKz0gZ3Jp
ZFN1YlN0ZXBJbmNyZW1lbnQpIHsKKyAgICAgICAgICAgICAgICBpZiAoIXkgJiYgIXNjcm9sbFkp
CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICAgICAgY29udGV4
dC5iZWdpblBhdGgoKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhzY3JvbGxYLCB6
b29tKHkpKTsKKworICAgICAgICAgICAgICAgIGlmICh5ICUgZ3JpZFN0ZXBJbmNyZW1lbnQpIHsK
KyAgICAgICAgICAgICAgICAgICAgY29udGV4dC5zdHJva2VTdHlsZSA9IGxpZ2h0R3JpZENvbG9y
OworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhzY3JvbGxYICsgZ3JpZFN1YlN0
ZXBMZW5ndGgsIHpvb20oeSkpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgICAgIGNvbnRleHQuc3Ryb2tlU3R5bGUgPSBkYXJrR3JpZENvbG9yOworICAgICAgICAg
ICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhzY3JvbGxYICsgKCh5ICUgKGdyaWRTdGVwSW5jcmVt
ZW50ICogMikpID8gZ3JpZFN1YlN0ZXBMZW5ndGggOiBncmlkU3RlcExlbmd0aCksIHpvb20oeSkp
OworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGNvbnRleHQuc3Ryb2tlKCk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgIH0pOworfQorCiBmdW5jdGlvbiByZXNl
dChwYXlsb2FkKQogewogICAgIERBVEEudmlld3BvcnRTaXplID0gcGF5bG9hZC52aWV3cG9ydFNp
emU7CkBAIC0xMTQsNiArMjQ0LDcgQEAgZnVuY3Rpb24gcmVzZXQocGF5bG9hZCkKICAgICBEQVRB
LnBhZ2Vab29tRmFjdG9yID0gcGF5bG9hZC5wYWdlWm9vbUZhY3RvcjsKICAgICBEQVRBLnNjcm9s
bE9mZnNldCA9IHBheWxvYWQuc2Nyb2xsT2Zmc2V0OwogICAgIERBVEEuY29udGVudEluc2V0ID0g
cGF5bG9hZC5jb250ZW50SW5zZXQ7CisgICAgREFUQS5zaG93UnVsZXJzID0gcGF5bG9hZC5zaG93
UnVsZXJzOwogCiAgICAgd2luZG93LmNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJj
YW52YXMiKTsKICAgICB3aW5kb3cucGFpbnRSZWN0c0NhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJwYWludHJlY3RzLWNhbnZhcyIpOwpAQCAtMjg2LDYgKzQxNywzNiBAQCBmdW5jdGlv
biBfZHJhd091dGxpbmVkUXVhZFdpdGhDbGlwKHF1YWQsIGNsaXBRdWFkLCBmaWxsQ29sb3IsIGJv
dW5kcykKICAgICB9KTsKIH0KIAorZnVuY3Rpb24gX2RyYXdCb3VuZHMoYm91bmRzKQoreworICAg
IF9pc29sYXRlQWN0aW9ucygoKSA9PiB7CisgICAgICAgIGxldCBzdGFydFggPSBEQVRBLmNvbnRl
bnRJbnNldC53aWR0aDsKKyAgICAgICAgbGV0IHN0YXJ0WSA9IERBVEEuY29udGVudEluc2V0Lmhl
aWdodDsKKworICAgICAgICBjb250ZXh0LmJlZ2luUGF0aCgpOworCisgICAgICAgIGlmIChib3Vu
ZHMubWluWSAtIHN0YXJ0WSA+IDApIHsKKyAgICAgICAgICAgIGNvbnRleHQubW92ZVRvKGJvdW5k
cy5taW5YLCBib3VuZHMubWluWSk7CisgICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhib3VuZHMu
bWluWCwgc3RhcnRZKTsKKworICAgICAgICAgICAgY29udGV4dC5tb3ZlVG8oYm91bmRzLm1heFgs
IGJvdW5kcy5taW5ZKTsKKyAgICAgICAgICAgIGNvbnRleHQubGluZVRvKGJvdW5kcy5tYXhYLCBz
dGFydFkpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGJvdW5kcy5taW5YIC0gc3RhcnRYID4g
MCkgeworICAgICAgICAgICAgY29udGV4dC5tb3ZlVG8oYm91bmRzLm1pblgsIGJvdW5kcy5taW5Z
KTsKKyAgICAgICAgICAgIGNvbnRleHQubGluZVRvKHN0YXJ0WCwgYm91bmRzLm1pblkpOworCisg
ICAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhib3VuZHMubWluWCwgYm91bmRzLm1heFkpOworICAg
ICAgICAgICAgY29udGV4dC5saW5lVG8oc3RhcnRYLCBib3VuZHMubWF4WSk7CisgICAgICAgIH0K
KworICAgICAgICBjb250ZXh0LmxpbmVXaWR0aCA9IDE7CisgICAgICAgIGNvbnRleHQuc3Ryb2tl
U3R5bGUgPSBib3VuZHNDb2xvcjsKKyAgICAgICAgY29udGV4dC5zdHJva2UoKTsKKyAgICB9KTsK
K30KKwogZnVuY3Rpb24gX2NyZWF0ZUVsZW1lbnRUaXRsZShlbGVtZW50RGF0YSkKIHsKICAgICBs
ZXQgYnVpbGRlciA9IG5ldyBET01CdWlsZGVyKCJkaXYiLCAiZWxlbWVudC10aXRsZSIpOwpAQCAt
NDM4LDEyOCArNTk5LDYgQEAgZnVuY3Rpb24gaGlkZVBhZ2VJbmRpY2F0aW9uKCkKICAgICBkb2N1
bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoImluZGljYXRlIik7CiB9CiAKLWZ1bmN0aW9uIF9k
cmF3UnVsZXJzKG9wdGlvbnMgPSB7fSkKLXsKLSAgICBjb25zdCBncmlkTGFiZWxTaXplID0gMTM7
Ci0gICAgY29uc3QgZ3JpZFNpemUgPSAxNTsKLSAgICBjb25zdCBncmlkU3RlcEluY3JlbWVudCA9
IDUwOwotICAgIGNvbnN0IGdyaWRTdGVwTGVuZ3RoID0gODsKLSAgICBjb25zdCBncmlkU3ViU3Rl
cEluY3JlbWVudCA9IDU7Ci0gICAgY29uc3QgZ3JpZFN1YlN0ZXBMZW5ndGggPSA1OwotCi0gICAg
bGV0IHBhZ2VGYWN0b3IgPSBEQVRBLnBhZ2Vab29tRmFjdG9yICogREFUQS5wYWdlU2NhbGVGYWN0
b3I7Ci0gICAgbGV0IHNjcm9sbFggPSBEQVRBLnNjcm9sbE9mZnNldC54ICogREFUQS5wYWdlU2Nh
bGVGYWN0b3I7Ci0gICAgbGV0IHNjcm9sbFkgPSBEQVRBLnNjcm9sbE9mZnNldC55ICogREFUQS5w
YWdlU2NhbGVGYWN0b3I7Ci0KLSAgICBmdW5jdGlvbiB6b29tKHZhbHVlKSB7Ci0gICAgICAgIHJl
dHVybiB2YWx1ZSAqIHBhZ2VGYWN0b3I7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gdW56b29tKHZh
bHVlKSB7Ci0gICAgICAgIHJldHVybiB2YWx1ZSAvIHBhZ2VGYWN0b3I7Ci0gICAgfQotCi0gICAg
ZnVuY3Rpb24gbXVsdGlwbGVCZWxvdyh2YWx1ZSwgc3RlcCkgewotICAgICAgICByZXR1cm4gdmFs
dWUgLSAodmFsdWUgJSBzdGVwKTsKLSAgICB9Ci0KLSAgICBsZXQgd2lkdGggPSBEQVRBLnZpZXdw
b3J0U2l6ZS53aWR0aCAvIHBhZ2VGYWN0b3I7Ci0gICAgbGV0IGhlaWdodCA9IERBVEEudmlld3Bv
cnRTaXplLmhlaWdodCAvIHBhZ2VGYWN0b3I7Ci0gICAgbGV0IG1pblggPSB1bnpvb20oc2Nyb2xs
WCk7Ci0gICAgbGV0IG1pblkgPSB1bnpvb20oc2Nyb2xsWSk7Ci0gICAgbGV0IG1heFggPSBtaW5Y
ICsgd2lkdGg7Ci0gICAgbGV0IG1heFkgPSBtaW5ZICsgaGVpZ2h0OwotCi0gICAgLy8gRHJhdyBi
YWNrZ3JvdW5kcwotICAgIF9pc29sYXRlQWN0aW9ucygoKSA9PiB7Ci0gICAgICAgIGxldCBvZmZz
ZXRYID0gREFUQS5jb250ZW50SW5zZXQud2lkdGggKyBncmlkU2l6ZTsKLSAgICAgICAgbGV0IG9m
ZnNldFkgPSBEQVRBLmNvbnRlbnRJbnNldC5oZWlnaHQgKyBncmlkU2l6ZTsKLQotICAgICAgICBj
b250ZXh0LmZpbGxTdHlsZSA9IGdyaWRCYWNrZ3JvdW5kQ29sb3I7Ci0gICAgICAgIGNvbnRleHQu
ZmlsbFJlY3QoREFUQS5jb250ZW50SW5zZXQud2lkdGgsIERBVEEuY29udGVudEluc2V0LmhlaWdo
dCwgZ3JpZFNpemUsIGdyaWRTaXplKTsKLSAgICAgICAgY29udGV4dC5maWxsUmVjdChvZmZzZXRY
LCBEQVRBLmNvbnRlbnRJbnNldC5oZWlnaHQsIHpvb20od2lkdGgpIC0gb2Zmc2V0WCwgZ3JpZFNp
emUpOwotICAgICAgICBjb250ZXh0LmZpbGxSZWN0KERBVEEuY29udGVudEluc2V0LndpZHRoLCBv
ZmZzZXRZLCBncmlkU2l6ZSwgem9vbShoZWlnaHQpIC0gb2Zmc2V0WSk7Ci0gICAgfSk7Ci0KLSAg
ICAvLyBSdWxlciBzdHlsZXMKLSAgICBfaXNvbGF0ZUFjdGlvbnMoKCkgPT4gewotICAgICAgICBj
b250ZXh0LmxpbmVXaWR0aCA9IDE7Ci0gICAgICAgIGNvbnRleHQuZmlsbFN0eWxlID0gZGFya0dy
aWRDb2xvcjsKLQotICAgICAgICAvLyBEcmF3IGxhYmVscwotICAgICAgICBfaXNvbGF0ZUFjdGlv
bnMoKCkgPT4gewotICAgICAgICAgICAgY29udGV4dC50cmFuc2xhdGUoREFUQS5jb250ZW50SW5z
ZXQud2lkdGggLSBzY3JvbGxYLCBEQVRBLmNvbnRlbnRJbnNldC5oZWlnaHQgLSBzY3JvbGxZKTsK
LQotICAgICAgICAgICAgZm9yIChsZXQgeCA9IG11bHRpcGxlQmVsb3cobWluWCwgZ3JpZFN0ZXBJ
bmNyZW1lbnQgKiAyKTsgeCA8IG1heFg7IHggKz0gZ3JpZFN0ZXBJbmNyZW1lbnQgKiAyKSB7Ci0g
ICAgICAgICAgICAgICAgaWYgKCF4ICYmICFzY3JvbGxYKQotICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKLQotICAgICAgICAgICAgICAgIF9pc29sYXRlQWN0aW9ucygoKSA9PiB7Ci0gICAg
ICAgICAgICAgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKHpvb20oeCkgKyAwLjUsIHNjcm9sbFkp
OwotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmZpbGxUZXh0KHgsIDIsIGdyaWRMYWJlbFNp
emUpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBm
b3IgKGxldCB5ID0gbXVsdGlwbGVCZWxvdyhtaW5ZLCBncmlkU3RlcEluY3JlbWVudCAqIDIpOyB5
IDwgbWF4WTsgeSArPSBncmlkU3RlcEluY3JlbWVudCAqIDIpIHsKLSAgICAgICAgICAgICAgICBp
ZiAoIXkgJiYgIXNjcm9sbFkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAg
ICAgICAgICAgICAgX2lzb2xhdGVBY3Rpb25zKCgpID0+IHsKLSAgICAgICAgICAgICAgICAgICAg
Y29udGV4dC50cmFuc2xhdGUoc2Nyb2xsWCwgem9vbSh5KSArIDAuNSk7Ci0gICAgICAgICAgICAg
ICAgICAgIGNvbnRleHQucm90YXRlKC1NYXRoLlBJIC8gMik7Ci0gICAgICAgICAgICAgICAgICAg
IGNvbnRleHQuZmlsbFRleHQoeSwgMiwgZ3JpZExhYmVsU2l6ZSk7Ci0gICAgICAgICAgICAgICAg
fSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0pOwotCi0gICAgICAgIC8vIERyYXcgaG9yaXpv
bnRhbCBncmlkCi0gICAgICAgIF9pc29sYXRlQWN0aW9ucygoKSA9PiB7Ci0gICAgICAgICAgICBj
b250ZXh0LnRyYW5zbGF0ZShEQVRBLmNvbnRlbnRJbnNldC53aWR0aCAtIHNjcm9sbFggKyAwLjUs
IERBVEEuY29udGVudEluc2V0LmhlaWdodCAtIHNjcm9sbFkpOwotCi0gICAgICAgICAgICBmb3Ig
KGxldCB4ID0gbXVsdGlwbGVCZWxvdyhtaW5YLCBncmlkU3ViU3RlcEluY3JlbWVudCk7IHggPCBt
YXhYOyB4ICs9IGdyaWRTdWJTdGVwSW5jcmVtZW50KSB7Ci0gICAgICAgICAgICAgICAgaWYgKCF4
ICYmICFzY3JvbGxYKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAg
ICAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7Ci0gICAgICAgICAgICAgICAgY29udGV4dC5tb3Zl
VG8oem9vbSh4KSwgc2Nyb2xsWSk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoeCAlIGdyaWRTdGVw
SW5jcmVtZW50KSB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuc3Ryb2tlU3R5bGUgPSBs
aWdodEdyaWRDb2xvcjsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC5saW5lVG8oem9vbSh4
KSwgc2Nyb2xsWSArIGdyaWRTdWJTdGVwTGVuZ3RoKTsKLSAgICAgICAgICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LnN0cm9rZVN0eWxlID0gZGFya0dyaWRDb2xv
cjsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC5saW5lVG8oem9vbSh4KSwgc2Nyb2xsWSAr
ICgoeCAlIChncmlkU3RlcEluY3JlbWVudCAqIDIpKSA/IGdyaWRTdWJTdGVwTGVuZ3RoIDogZ3Jp
ZFN0ZXBMZW5ndGgpKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBjb250
ZXh0LnN0cm9rZSgpOwotICAgICAgICAgICAgfQotICAgICAgICB9KTsKLQotICAgICAgICAvLyBE
cmF3IHZlcnRpY2FsIGdyaWQKLSAgICAgICAgX2lzb2xhdGVBY3Rpb25zKCgpID0+IHsKLSAgICAg
ICAgICAgIGNvbnRleHQudHJhbnNsYXRlKERBVEEuY29udGVudEluc2V0LndpZHRoIC0gc2Nyb2xs
WCwgREFUQS5jb250ZW50SW5zZXQuaGVpZ2h0IC0gc2Nyb2xsWSArIDAuNSk7Ci0KLSAgICAgICAg
ICAgIGZvciAobGV0IHkgPSBtdWx0aXBsZUJlbG93KG1pblksIGdyaWRTdWJTdGVwSW5jcmVtZW50
KTsgeSA8IG1heFk7IHkgKz0gZ3JpZFN1YlN0ZXBJbmNyZW1lbnQpIHsKLSAgICAgICAgICAgICAg
ICBpZiAoIXkgJiYgIXNjcm9sbFkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0g
ICAgICAgICAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTsKLSAgICAgICAgICAgICAgICBjb250
ZXh0Lm1vdmVUbyhzY3JvbGxYLCB6b29tKHkpKTsKLQotICAgICAgICAgICAgICAgIGlmICh5ICUg
Z3JpZFN0ZXBJbmNyZW1lbnQpIHsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC5zdHJva2VT
dHlsZSA9IGxpZ2h0R3JpZENvbG9yOwotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmxpbmVU
byhzY3JvbGxYICsgZ3JpZFN1YlN0ZXBMZW5ndGgsIHpvb20oeSkpOwotICAgICAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuc3Ryb2tlU3R5bGUgPSBkYXJr
R3JpZENvbG9yOwotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhzY3JvbGxYICsg
KCh5ICUgKGdyaWRTdGVwSW5jcmVtZW50ICogMikpID8gZ3JpZFN1YlN0ZXBMZW5ndGggOiBncmlk
U3RlcExlbmd0aCksIHpvb20oeSkpOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
ICAgIGNvbnRleHQuc3Ryb2tlKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0pOwotICAgIH0p
OwotfQotCiBmdW5jdGlvbiBzZXRQbGF0Zm9ybShwbGF0Zm9ybSkKIHsKICAgICBkb2N1bWVudC5i
b2R5LmNsYXNzTGlzdC5hZGQoInBsYXRmb3JtLSIgKyBwbGF0Zm9ybSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5k
ZXggYWVlOWY1ODU2OTlkYmZiODBjNjI4MzE1YTllMjlhZDdmYjA4NmQ5Ny4uNThiN2I2ZTQ0MTk0
NmZmODQwY2JlY2I1NzkwNjFjM2UzMGJkMmRiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAtNTQyLDYgKzU0
MiwxMSBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6c2VhcmNoSW5SZXNvdXJjZXMoRXJyb3JT
dHJpbmcmLCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbgogICAgICAgICBuZXR3b3JrQWdlbnQtPnNl
YXJjaE90aGVyUmVxdWVzdHMocmVnZXgsIHJlc3VsdCk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yUGFn
ZUFnZW50OjpzZXRTaG93UnVsZXJzKEVycm9yU3RyaW5nJiwgYm9vbCBzaG93UnVsZXJzKQorewor
ICAgIG1fb3ZlcmxheS0+c2V0U2hvd1J1bGVycyhzaG93UnVsZXJzKTsKK30KKwogdm9pZCBJbnNw
ZWN0b3JQYWdlQWdlbnQ6OnNldFNob3dQYWludFJlY3RzKEVycm9yU3RyaW5nJiwgYm9vbCBzaG93
KQogewogICAgIG1fc2hvd1BhaW50UmVjdHMgPSBzaG93OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmgKaW5kZXggMTAyOTZiMzhj
N2RiMmI5ZTljZTEzY2QzODRhMTA4ZTlmZTkwOWJkNy4uNjcwOWY1MmJlMDM0MzJiMmM1NWViOTQ3
MWJjNGMwZGIyNWQwODZjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oCkBAIC05Nyw2ICs5Nyw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGdldFJlc291cmNlQ29udGVudChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgZnJh
bWVJZCwgY29uc3QgU3RyaW5nJiB1cmwsIFN0cmluZyogY29udGVudCwgYm9vbCogYmFzZTY0RW5j
b2RlZCkgZmluYWw7CiAgICAgdm9pZCBzZWFyY2hJblJlc291cmNlKEVycm9yU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiBmcmFtZUlkLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBxdWVy
eSwgY29uc3QgYm9vbCogb3B0aW9uYWxDYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBvcHRpb25h
bElzUmVnZXgsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxSZXF1ZXN0SWQsIFJlZlB0cjxKU09OOjpB
cnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+PiYp
IGZpbmFsOwogICAgIHZvaWQgc2VhcmNoSW5SZXNvdXJjZXMoRXJyb3JTdHJpbmcmLCBjb25zdCBT
dHJpbmcmLCBjb25zdCBib29sKiBjYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBpc1JlZ2V4LCBS
ZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpTZWFyY2hSZXN1
bHQ+PiYpIGZpbmFsOworICAgIHZvaWQgc2V0U2hvd1J1bGVycyhFcnJvclN0cmluZyYsIGJvb2wp
IGZpbmFsOwogICAgIHZvaWQgc2V0U2hvd1BhaW50UmVjdHMoRXJyb3JTdHJpbmcmLCBib29sIHNo
b3cpIGZpbmFsOwogICAgIHZvaWQgc2V0RW11bGF0ZWRNZWRpYShFcnJvclN0cmluZyYsIGNvbnN0
IFN0cmluZyYpIGZpbmFsOwogICAgIHZvaWQgZ2V0Q29tcG9zaXRpbmdCb3JkZXJzVmlzaWJsZShF
cnJvclN0cmluZyYsIGJvb2wqIG91dF9wYXJhbSkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVk
U3RyaW5ncy5qcwppbmRleCA4MDNkOWQ0MWU4NWNiNWNkMmU4NGU2OTU4ZGQyZTc5NGQwNTFmMTZj
Li41NmI2OTlhZTI2YjQ2YzMxNTUxZDliMjlmMGNiZjMxYTc3ZWZlNmVhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJp
bmdzLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9q
L2xvY2FsaXplZFN0cmluZ3MuanMKQEAgLTQ4MSw2ICs0ODEsNyBAQCBsb2NhbGl6ZWRTdHJpbmdz
WyJIaWRlIENvbnNvbGUiXSA9ICJIaWRlIENvbnNvbGUiOwogbG9jYWxpemVkU3RyaW5nc1siSGlk
ZSBDb25zb2xlICglcykiXSA9ICJIaWRlIENvbnNvbGUgKCVzKSI7CiBsb2NhbGl6ZWRTdHJpbmdz
WyJIaWRlIEdyaWQiXSA9ICJIaWRlIEdyaWQiOwogbG9jYWxpemVkU3RyaW5nc1siSGlkZSBQYXRo
Il0gPSAiSGlkZSBQYXRoIjsKK2xvY2FsaXplZFN0cmluZ3NbIkhpZGUgUnVsZXJzIl0gPSAiSGlk
ZSBSdWxlcnMiOwogbG9jYWxpemVkU3RyaW5nc1siSGlkZSBjb21wb3NpdGluZyBib3JkZXJzIl0g
PSAiSGlkZSBjb21wb3NpdGluZyBib3JkZXJzIjsKIGxvY2FsaXplZFN0cmluZ3NbIkhpZGUgc2hh
ZG93IERPTSBub2RlcyJdID0gIkhpZGUgc2hhZG93IERPTSBub2RlcyI7CiBsb2NhbGl6ZWRTdHJp
bmdzWyJIaWRlIHRoZSBkZXRhaWxzIHNpZGViYXIgKCVzKSJdID0gIkhpZGUgdGhlIGRldGFpbHMg
c2lkZWJhciAoJXMpIjsKQEAgLTg2OCw2ICs4NjksNyBAQCBsb2NhbGl6ZWRTdHJpbmdzWyJTaG93
IENvbnNvbGUgdGFiIl0gPSAiU2hvdyBDb25zb2xlIHRhYiI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJT
aG93IEdyaWQiXSA9ICJTaG93IEdyaWQiOwogbG9jYWxpemVkU3RyaW5nc1siU2hvdyBQYXRoIl0g
PSAiU2hvdyBQYXRoIjsKIGxvY2FsaXplZFN0cmluZ3NbIlNob3cgUmVtYWluaW5nICglZCkiXSA9
ICJTaG93IFJlbWFpbmluZyAoJWQpIjsKK2xvY2FsaXplZFN0cmluZ3NbIlNob3cgUnVsZXJzIl0g
PSAiU2hvdyBSdWxlcnMiOwogbG9jYWxpemVkU3RyaW5nc1siU2hvdyBTY29wZSBDaGFpbiBvbiBw
YXVzZSJdID0gIlNob3cgU2NvcGUgQ2hhaW4gb24gcGF1c2UiOwogbG9jYWxpemVkU3RyaW5nc1si
U2hvdyBTb3VyY2UiXSA9ICJTaG93IFNvdXJjZSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJTaG93IGFs
bCBhY3Rpb25zIl0gPSAiU2hvdyBhbGwgYWN0aW9ucyI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL1NldHRpbmcuanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL1NldHRpbmcuanMKaW5kZXggMDlhNzNiZTJlYjNi
NWE3NWI5NTI2MjFmMmRjZjM0MDdjMTkwYTIxOS4uNjhmMDYwMDMxNGI5Y2ZiM2NjNWNhY2ZkZjEx
MmRiYWQ4NTVjOTkxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvQmFzZS9TZXR0aW5nLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL0Jhc2UvU2V0dGluZy5qcwpAQCAtMTIxLDYgKzEyMSw3IEBAIFdJLnNldHRpbmdzID0g
ewogICAgIHNob3dJbWFnZUdyaWQ6IG5ldyBXSS5TZXR0aW5nKCJzaG93LWltYWdlLWdyaWQiLCBm
YWxzZSksCiAgICAgc2hvd0NhbnZhc1BhdGg6IG5ldyBXSS5TZXR0aW5nKCJzaG93LWNhbnZhcy1w
YXRoIiwgZmFsc2UpLAogICAgIHNlbGVjdGVkTmV0d29ya0RldGFpbENvbnRlbnRWaWV3SWRlbnRp
ZmllcjogbmV3IFdJLlNldHRpbmcoIm5ldHdvcmstZGV0YWlsLWNvbnRlbnQtdmlldy1pZGVudGlm
aWVyIiwgInByZXZpZXciKSwKKyAgICBzaG93UnVsZXJzOiBuZXcgV0kuU2V0dGluZygic2hvdy1y
dWxlcnMiLCB0cnVlKSwKIAogICAgIC8vIEV4cGVyaW1lbnRhbAogICAgIGV4cGVyaW1lbnRhbEVu
YWJsZUxheWVyc1RhYjogbmV3IFdJLlNldHRpbmcoImV4cGVyaW1lbnRhbC1lbmFibGUtbGF5ZXJz
LXRhYiIsIGZhbHNlKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL0ltYWdlcy9SdWxlcnMuc3ZnIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvSW1hZ2VzL1J1bGVycy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjVmMWIwYmM0ZjljOGM3YTdjNDdk
MzllN2YyZmQ1MTAwMWI1NTJkYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL0ltYWdlcy9SdWxlcnMuc3ZnCkBAIC0wLDAgKzEsMTEgQEAKKzw/
eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8IS0tIENvcHlyaWdodCDCqSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gLS0+Cis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9InJvb3QiIHZlcnNpb249IjEuMSIgdmlld0JveD0i
MCAwIDE2IDE2Ij4KKyAgICA8cG9seWdvbiBwb2ludHM9IjEuNSAxLjUgMTQuNSAxLjUgMTQuNSA1
LjUgNS41IDUuNSA1LjUgMTQuNSAxLjUgMTQuNSAxLjUgMS41IiBmaWxsPSJub25lIiBzdHJva2U9
ImN1cnJlbnRDb2xvciIvPgorICAgIDxsaW5lIHgxPSI4LjUiIHkxPSIzIiB4Mj0iOC41IiB5Mj0i
NSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiLz4KKyAgICA8bGluZSB4MT0iMTEuNSIgeTE9IjMiIHgy
PSIxMS41IiB5Mj0iNSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiLz4KKyAgICA8bGluZSB4MT0iNS41
IiB5MT0iMyIgeDI9IjUuNSIgeTI9IjUiIHN0cm9rZT0iY3VycmVudENvbG9yIi8+CisgICAgPGxp
bmUgeDE9IjMiIHkxPSIxMS41IiB4Mj0iNSIgeTI9IjExLjUiIHN0cm9rZT0iY3VycmVudENvbG9y
Ii8+CisgICAgPGxpbmUgeDE9IjMiIHkxPSI4LjUiIHgyPSI1IiB5Mj0iOC41IiBzdHJva2U9ImN1
cnJlbnRDb2xvciIvPgorICAgIDxsaW5lIHgxPSIzIiB5MT0iNS41IiB4Mj0iNSIgeTI9IjUuNSIg
c3Ryb2tlPSJjdXJyZW50Q29sb3IiLz4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZUNvbnRlbnRWaWV3LmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZUNvbnRlbnRWaWV3
LmpzCmluZGV4IGE2ODA5ODQ4MTY3NTVkODIyNTg2ZmMxOTdmMzQzNmVhNzYyNWZiY2QuLjhkOTlm
ZmMwNDcyM2Q1MGE0ZmIzMTk4YTZkYzBlZDBjNDFlMTE3NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVDb250ZW50Vmlldy5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlQ29u
dGVudFZpZXcuanMKQEAgLTU0LDYgKzU0LDEyIEBAIFdJLkRPTVRyZWVDb250ZW50VmlldyA9IGNs
YXNzIERPTVRyZWVDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRWaWV3CiAgICAgICAgIHRo
aXMuX3Nob3dQcmludFN0eWxlc0J1dHRvbk5hdmlnYXRpb25JdGVtLnZpc2liaWxpdHlQcmlvcml0
eSA9IFdJLk5hdmlnYXRpb25JdGVtLlZpc2liaWxpdHlQcmlvcml0eS5Mb3c7CiAgICAgICAgIHRo
aXMuX3Nob3dQcmludFN0eWxlc0NoYW5nZWQoKTsKIAorICAgICAgICBXSS5zZXR0aW5ncy5zaG93
UnVsZXJzLmFkZEV2ZW50TGlzdGVuZXIoV0kuU2V0dGluZy5FdmVudC5DaGFuZ2VkLCB0aGlzLl9z
aG93UnVsZXJzQ2hhbmdlZCwgdGhpcyk7CisgICAgICAgIHRoaXMuX3Nob3dSdWxlcnNCdXR0b25O
YXZpZ2F0aW9uSXRlbSA9IG5ldyBXSS5BY3RpdmF0ZUJ1dHRvbk5hdmlnYXRpb25JdGVtKCJzaG93
LXJ1bGVycyIsIFdJLlVJU3RyaW5nKCJTaG93IFJ1bGVycyIpLCBXSS5VSVN0cmluZygiSGlkZSBS
dWxlcnMiKSwgIkltYWdlcy9SdWxlcnMuc3ZnIiwgMTYsIDE2KTsKKyAgICAgICAgdGhpcy5fc2hv
d1J1bGVyc0J1dHRvbk5hdmlnYXRpb25JdGVtLmFkZEV2ZW50TGlzdGVuZXIoV0kuQnV0dG9uTmF2
aWdhdGlvbkl0ZW0uRXZlbnQuQ2xpY2tlZCwgdGhpcy5fdG9nZ2xlU2hvd1J1bGVycywgdGhpcyk7
CisgICAgICAgIHRoaXMuX3Nob3dSdWxlcnNCdXR0b25OYXZpZ2F0aW9uSXRlbS52aXNpYmlsaXR5
UHJpb3JpdHkgPSBXSS5OYXZpZ2F0aW9uSXRlbS5WaXNpYmlsaXR5UHJpb3JpdHkuTG93OworICAg
ICAgICB0aGlzLl9zaG93UnVsZXJzQ2hhbmdlZCgpOworCiAgICAgICAgIHRoaXMuZWxlbWVudC5j
bGFzc0xpc3QuYWRkKCJkb20tdHJlZSIpOwogICAgICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRM
aXN0ZW5lcigiY2xpY2siLCB0aGlzLl9tb3VzZVdhc0NsaWNrZWQuYmluZCh0aGlzKSwgZmFsc2Up
OwogCkBAIC05Myw2ICs5OSwxMSBAQCBXSS5ET01UcmVlQ29udGVudFZpZXcgPSBjbGFzcyBET01U
cmVlQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50VmlldwogICAgIGdldCBuYXZpZ2F0aW9u
SXRlbXMoKQogICAgIHsKICAgICAgICAgbGV0IGl0ZW1zID0gW3RoaXMuX3Nob3dQcmludFN0eWxl
c0J1dHRvbk5hdmlnYXRpb25JdGVtLCB0aGlzLl9zaG93c1NoYWRvd0RPTUJ1dHRvbk5hdmlnYXRp
b25JdGVtXTsKKworICAgICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgMTEuMykKKyAgICAgICAg
aWYgKFBhZ2VBZ2VudC5zZXRTaG93UnVsZXJzKQorICAgICAgICAgICAgaXRlbXMudW5zaGlmdCh0
aGlzLl9zaG93UnVsZXJzQnV0dG9uTmF2aWdhdGlvbkl0ZW0pOworCiAgICAgICAgIGlmICghV0ku
c2V0dGluZ3MuZXhwZXJpbWVudGFsRW5hYmxlTGF5ZXJzVGFiLnZhbHVlKQogICAgICAgICAgICAg
aXRlbXMucHVzaCh0aGlzLl9jb21wb3NpdGluZ0JvcmRlcnNCdXR0b25OYXZpZ2F0aW9uSXRlbSwg
dGhpcy5fcGFpbnRGbGFzaGluZ0J1dHRvbk5hdmlnYXRpb25JdGVtKTsKIApAQCAtMTUwLDYgKzE2
MSw3IEBAIFdJLkRPTVRyZWVDb250ZW50VmlldyA9IGNsYXNzIERPTVRyZWVDb250ZW50VmlldyBl
eHRlbmRzIFdJLkNvbnRlbnRWaWV3CiAKICAgICAgICAgV0kuc2hvd1BhaW50UmVjdHNTZXR0aW5n
LnJlbW92ZUV2ZW50TGlzdGVuZXIobnVsbCwgbnVsbCwgdGhpcyk7CiAgICAgICAgIFdJLnNob3dT
aGFkb3dET01TZXR0aW5nLnJlbW92ZUV2ZW50TGlzdGVuZXIobnVsbCwgbnVsbCwgdGhpcyk7Cisg
ICAgICAgIFdJLnNldHRpbmdzLnNob3dSdWxlcnMucmVtb3ZlRXZlbnRMaXN0ZW5lcihudWxsLCBu
dWxsLCB0aGlzKTsKICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVu
ZXIobnVsbCwgbnVsbCwgdGhpcyk7CiAgICAgICAgIFdJLmRvbVRyZWVNYW5hZ2VyLnJlbW92ZUV2
ZW50TGlzdGVuZXIobnVsbCwgbnVsbCwgdGhpcyk7CiAgICAgICAgIFdJLmRvbURlYnVnZ2VyTWFu
YWdlci5yZW1vdmVFdmVudExpc3RlbmVyKG51bGwsIG51bGwsIHRoaXMpOwpAQCAtNTY3LDYgKzU3
OSwyNCBAQCBXSS5ET01UcmVlQ29udGVudFZpZXcgPSBjbGFzcyBET01UcmVlQ29udGVudFZpZXcg
ZXh0ZW5kcyBXSS5Db250ZW50VmlldwogICAgICAgICB0aGlzLl9zaG93UHJpbnRTdHlsZXNDaGFu
Z2VkKCk7CiAgICAgfQogCisgICAgX3Nob3dSdWxlcnNDaGFuZ2VkKCkKKyAgICB7CisgICAgICAg
IHRoaXMuX3Nob3dSdWxlcnNCdXR0b25OYXZpZ2F0aW9uSXRlbS5hY3RpdmF0ZWQgPSBXSS5zZXR0
aW5ncy5zaG93UnVsZXJzLnZhbHVlOworCisgICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyAx
MS4zKQorICAgICAgICBpZiAoIVBhZ2VBZ2VudC5zZXRTaG93UnVsZXJzKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIFBhZ2VBZ2VudC5zZXRTaG93UnVsZXJzKHRoaXMuX3Nob3dSdWxl
cnNCdXR0b25OYXZpZ2F0aW9uSXRlbS5hY3RpdmF0ZWQpOworICAgIH0KKworICAgIF90b2dnbGVT
aG93UnVsZXJzKGV2ZW50KQorICAgIHsKKyAgICAgICAgV0kuc2V0dGluZ3Muc2hvd1J1bGVycy52
YWx1ZSA9ICFXSS5zZXR0aW5ncy5zaG93UnVsZXJzLnZhbHVlOworCisgICAgICAgIHRoaXMuX3No
b3dSdWxlcnNDaGFuZ2VkKCk7CisgICAgfQorCiAgICAgX3Nob3dTZWFyY2hIaWdobGlnaHRzKCkK
ICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3NlYXJjaElkZW50aWZpZXIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>340480</attachid>
            <date>2018-05-16 01:43:39 -0700</date>
            <delta_ts>2018-05-16 17:46:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185644-20180516014339.patch</filename>
            <type>text/plain</type>
            <size>28225</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDJjMjZkZTM3NGM2ZjlhMGIyNmY4Y2M2NGI5YmIx
ODIxN2RiMGY2NWMuLjIyNzQxMTBkMzRiN2VmMzQ4MmE4ZWJmMTNjYTEzZjBhNjM0YWYxZWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE4LTA1LTE2ICBEZXZp
biBSb3Vzc28gIDx3ZWJraXRAZGV2aW5yb3Vzc28uY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IGNyZWF0ZSBhIG5hdmlnYXRpb24gaXRlbSBmb3IgdG9nZ2xpbmcgdGhlIG92ZXJsYXkgcnVs
ZXJzL2d1aWRlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTg1NjQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBpbnNwZWN0b3IvcHJvdG9jb2wvT3ZlcmxheVR5cGVzLmpzb246CisgICAgICAgICogaW5z
cGVjdG9yL3Byb3RvY29sL1BhZ2UuanNvbjoKKwogMjAxOC0wNS0xNSAgRGV2aW4gUm91c3NvICA8
d2Via2l0QGRldmlucm91c3NvLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBBZGQgcnVs
ZXJzIGFuZCBndWlkZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzODQ1MWQ0ZjViNzIxNmU5MTQxMTUyMGVlMzc5
OWNmNmVlYzRmZjNhLi4yODViNmFjNzMzN2VhYmYxNGJlZTAxOTI2MjcxNmJiOWQzMGVkYWQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTgtMDUtMTYgIERldmluIFJvdXNzbyAgPHdl
YmtpdEBkZXZpbnJvdXNzby5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogY3JlYXRlIGEg
bmF2aWdhdGlvbiBpdGVtIGZvciB0b2dnbGluZyB0aGUgb3ZlcmxheSBydWxlcnMvZ3VpZGVzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODU2NDQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNo
IGlzIHB1cmVseSBhIHZpc3VhbCBjaGFuZ2UgZm9yIFdlYkluc3BlY3RvciwgYW5kIGRvZXNuJ3Qg
YWZmZWN0IGFueXRoaW5nIGVsc2UuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvclBhZ2VBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFn
ZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6c2V0U2hv
d1J1bGVycyk6IEFkZGVkLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXku
aDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JPdmVybGF5OjpzaG91bGRTaG93T3ZlcmxheSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JPdmVybGF5Ojp1cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yT3ZlcmxheTo6c2V0U2hvd1J1bGVycyk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yT3ZlcmxheTo6ZHJhd1J1bGVycyk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yT3ZlcmxheTo6cmVzZXQpOgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ck92ZXJsYXlQYWdlLmpzOgorICAgICAgICAoZHJhd05vZGVIaWdobGlnaHQpOgorICAgICAgICAo
ZHJhd1F1YWRIaWdobGlnaHQpOgorICAgICAgICAoZHJhd1J1bGVycyk6IEFkZGVkLgorICAgICAg
ICAoX2RyYXdCb3VuZHMpOiBBZGRlZC4KKyAgICAgICAgKHJlc2V0KToKKyAgICAgICAgKF9kcmF3
UnVsZXJzKTogRGVsZXRlZC4KKwogMjAxOC0wNS0xNSAgRGV2aW4gUm91c3NvICA8d2Via2l0QGRl
dmlucm91c3NvLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBBZGQgcnVsZXJzIGFuZCBn
dWlkZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDE3ODRhMGNkNjNkZmUwZDU3YTJmOTcz
YjAxNGNjYjYyZmM5NmEyZmQuLmE2YmQ1MzhkNWZlODk1OTRhYTliMDM4OTdkY2UwNTczNjFjM2Zm
Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE4LTA1LTE2
ICBEZXZpbiBSb3Vzc28gIDx3ZWJraXRAZGV2aW5yb3Vzc28uY29tPgorCisgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IGNyZWF0ZSBhIG5hdmlnYXRpb24gaXRlbSBmb3IgdG9nZ2xpbmcgdGhlIG92ZXJs
YXkgcnVsZXJzL2d1aWRlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTg1NjQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBMb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanM6Cisg
ICAgICAgICogVXNlckludGVyZmFjZS9CYXNlL1NldHRpbmcuanM6CisgICAgICAgICogVXNlcklu
dGVyZmFjZS9WaWV3cy9ET01UcmVlQ29udGVudFZpZXcuanM6CisgICAgICAgIChXSS5ET01UcmVl
Q29udGVudFZpZXcpOgorICAgICAgICAoV0kuRE9NVHJlZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5n
ZXQgbmF2aWdhdGlvbkl0ZW1zKToKKyAgICAgICAgKFdJLkRPTVRyZWVDb250ZW50Vmlldy5wcm90
b3R5cGUuY2xvc2VkKToKKyAgICAgICAgKFdJLkRPTVRyZWVDb250ZW50Vmlldy5wcm90b3R5cGUu
X3Nob3dSdWxlcnNDaGFuZ2VkKTogQWRkZWQuCisgICAgICAgIChXSS5ET01UcmVlQ29udGVudFZp
ZXcucHJvdG90eXBlLl90b2dnbGVTaG93UnVsZXJzKTogQWRkZWQuCisKIDIwMTgtMDUtMTQgIE5p
a2l0YSBWYXNpbHlldiAgPG52YXNpbHlldkBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3Bl
Y3RvcjogQ2FudmFzOiBSZW1vdmUgdW51c2VkIC0tdmFsdWUtdmlzdWFsLWhpZ2hsaWdodCBDU1Mg
dmFyaWFibGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJv
dG9jb2wvT3ZlcmxheVR5cGVzLmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3Byb3RvY29sL092ZXJsYXlUeXBlcy5qc29uCmluZGV4IGU4ZTQ1Mzk3ODM5MmNlNjQyM2M2Yzlh
MDk0ZTA2ZTc1YWE3YTg5NzguLjgxM2ZiNjA3OTZlMTc0ZjM4ODY5MGJlYzkzNGFiODQwMjA4MmIy
ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wv
T3ZlcmxheVR5cGVzLmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9w
cm90b2NvbC9PdmVybGF5VHlwZXMuanNvbgpAQCAtOTcsNyArOTcsOCBAQAogICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAicGFnZVNjYWxlRmFjdG9yIiwgInR5cGUiOiAibnVtYmVyIiB9LAogICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAicGFnZVpvb21GYWN0b3IiLCAidHlwZSI6ICJudW1iZXIi
IH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzY3JvbGxPZmZzZXQiLCAiJHJlZiI6ICJQ
b2ludCIgfSwKLSAgICAgICAgICAgICAgICB7ICJuYW1lIjogImNvbnRlbnRJbnNldCIsICIkcmVm
IjogIlNpemUiIH0KKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImNvbnRlbnRJbnNldCIsICIk
cmVmIjogIlNpemUiIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzaG93UnVsZXJzIiwg
InR5cGUiOiAiYm9vbGVhbiIgfQogICAgICAgICAgICAgXQogICAgICAgICB9CiAgICAgXQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9QYWdlLmpz
b24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL1BhZ2UuanNvbgpp
bmRleCA2ZThiMDlmNTM1NWRhYjc0NDk2Mjk0Y2FlNTFlZjg3NThjN2E1MDhmLi44ZjIyYzUzMTVj
YTQ1ZGI4ZDVhM2YxYTk2NGZjMTJlYWU0MTM1Nzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL1BhZ2UuanNvbgorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL1BhZ2UuanNvbgpAQCAtMTY1LDYgKzE2NSwxMyBA
QAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVzdWx0IiwgInR5cGUiOiAiYXJyYXkiLCAi
aXRlbXMiOiB7ICIkcmVmIjogIlNlYXJjaFJlc3VsdCIgfSwgImRlc2NyaXB0aW9uIjogIkxpc3Qg
b2Ygc2VhcmNoIHJlc3VsdHMuIiB9CiAgICAgICAgICAgICBdCiAgICAgICAgIH0sCisgICAgICAg
IHsKKyAgICAgICAgICAgICJuYW1lIjogInNldFNob3dSdWxlcnMiLAorICAgICAgICAgICAgImRl
c2NyaXB0aW9uIjogIlJlcXVlc3RzIHRoYXQgYmFja2VuZCBkcmF3IHJ1bGVycyBpbiB0aGUgaW5z
cGVjdG9yIG92ZXJsYXkiLAorICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJyZXN1bHQiLCAidHlwZSI6ICJib29sZWFuIiwgImRlc2NyaXB0aW9u
IjogIlRydWUgZm9yIHNob3dpbmcgcnVsZXJzIiB9CisgICAgICAgICAgICBdCisgICAgICAgIH0s
CiAgICAgICAgIHsKICAgICAgICAgICAgICJuYW1lIjogInNldFNob3dQYWludFJlY3RzIiwKICAg
ICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXF1ZXN0cyB0aGF0IGJhY2tlbmQgc2hvd3MgcGFp
bnQgcmVjdGFuZ2xlcyIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yT3ZlcmxheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3Zl
cmxheS5jcHAKaW5kZXggNmU2NjU1ZWQ2N2MxYzdjYzhiYzk1N2IwY2JlODE0ZTExZTU3ZmI3ZS4u
ZTVjODkwMjE0YzljNDkwMzVkMDEzMzE0NjNiNmRmMWQwMDNlYmE5MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcApAQCAtMjY4LDcgKzI2OCw3IEBA
IHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6c2V0SW5kaWNhdGluZyhib29sIGluZGljYXRpbmcpCiAK
IGJvb2wgSW5zcGVjdG9yT3ZlcmxheTo6c2hvdWxkU2hvd092ZXJsYXkoKSBjb25zdAogewotICAg
IHJldHVybiBtX2hpZ2hsaWdodE5vZGUgfHwgbV9oaWdobGlnaHROb2RlTGlzdCB8fCBtX2hpZ2hs
aWdodFF1YWQgfHwgbV9pbmRpY2F0aW5nIHx8IG1fc2hvd2luZ1BhaW50UmVjdHMgfHwgIW1fcGF1
c2VkSW5EZWJ1Z2dlck1lc3NhZ2UuaXNOdWxsKCk7CisgICAgcmV0dXJuIG1faGlnaGxpZ2h0Tm9k
ZSB8fCBtX2hpZ2hsaWdodE5vZGVMaXN0IHx8IG1faGlnaGxpZ2h0UXVhZCB8fCBtX2luZGljYXRp
bmcgfHwgbV9zaG93aW5nUGFpbnRSZWN0cyB8fCBtX3Nob3dSdWxlcnMgfHwgIW1fcGF1c2VkSW5E
ZWJ1Z2dlck1lc3NhZ2UuaXNOdWxsKCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6dXBk
YXRlKCkKQEAgLTI5Nyw2ICsyOTcsOSBAQCB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OnVwZGF0ZSgp
CiAgICAgZHJhd1BhdXNlZEluRGVidWdnZXJNZXNzYWdlKCk7CiAgICAgZHJhd1BhaW50UmVjdHMo
KTsKIAorICAgIGlmIChtX3Nob3dSdWxlcnMpCisgICAgICAgIGRyYXdSdWxlcnMoKTsKKwogICAg
IC8vIFBvc2l0aW9uIERPTSBlbGVtZW50cy4KICAgICBvdmVybGF5UGFnZSgpLT5tYWluRnJhbWUo
KS5kb2N1bWVudCgpLT5yZXNvbHZlU3R5bGUoRG9jdW1lbnQ6OlJlc29sdmVTdHlsZVR5cGU6OlJl
YnVpbGQpOwogICAgIGlmIChvdmVybGF5Vmlldy0+bmVlZHNMYXlvdXQoKSkKQEAgLTM5Miw2ICsz
OTUsMTYgQEAgdm9pZCBJbnNwZWN0b3JPdmVybGF5OjpzaG93UGFpbnRSZWN0KGNvbnN0IEZsb2F0
UmVjdCYgcmVjdCkKICAgICBmb3JjZVBhaW50KCk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yT3Zlcmxh
eTo6c2V0U2hvd1J1bGVycyhib29sIHNob3dSdWxlcnMpCit7CisgICAgaWYgKG1fc2hvd1J1bGVy
cyA9PSBzaG93UnVsZXJzKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3Nob3dSdWxlcnMgPSBz
aG93UnVsZXJzOworCisgICAgdXBkYXRlKCk7Cit9CisKIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6
dXBkYXRlUGFpbnRSZWN0c1RpbWVyRmlyZWQoKQogewogICAgIE1vbm90b25pY1RpbWUgbm93ID0g
TW9ub3RvbmljVGltZTo6bm93KCk7CkBAIC00MTksNiArNDMyLDExIEBAIHZvaWQgSW5zcGVjdG9y
T3ZlcmxheTo6ZHJhd1BhaW50UmVjdHMoKQogICAgIGV2YWx1YXRlSW5PdmVybGF5KEFTQ0lJTGl0
ZXJhbCgidXBkYXRlUGFpbnRSZWN0cyIpLCBXVEZNb3ZlKGFycmF5T2ZSZWN0cykpOwogfQogCit2
b2lkIEluc3BlY3Rvck92ZXJsYXk6OmRyYXdSdWxlcnMoKQoreworICAgIGV2YWx1YXRlSW5PdmVy
bGF5KEFTQ0lJTGl0ZXJhbCgiZHJhd1J1bGVycyIpKTsKK30KKwogc3RhdGljIFJlZlB0cjxKU09O
OjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6RnJhZ21lbnRIaWdo
bGlnaHREYXRhPj4gYnVpbGRBcnJheUZvclJlbmRlcmVyRnJhZ21lbnRzKFJlbmRlck9iamVjdCog
cmVuZGVyZXIsIGNvbnN0IEhpZ2hsaWdodENvbmZpZyYgY29uZmlnKQogewogICAgIGF1dG8gYXJy
YXlPZkZyYWdtZW50cyA9IEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6T3Zlcmxh
eVR5cGVzOjpGcmFnbWVudEhpZ2hsaWdodERhdGE+OjpjcmVhdGUoKTsKQEAgLTc0Miw2ICs3NjAs
NyBAQCB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OnJlc2V0KGNvbnN0IEludFNpemUmIHZpZXdwb3J0
U2l6ZSwgY29uc3QgSW50UG9pbnQmIHNjcm9sbAogICAgICAgICAuc2V0UGFnZVpvb21GYWN0b3Io
bV9wYWdlLm1haW5GcmFtZSgpLnBhZ2Vab29tRmFjdG9yKCkpCiAgICAgICAgIC5zZXRTY3JvbGxP
ZmZzZXQoYnVpbGRPYmplY3RGb3JQb2ludChzY3JvbGxPZmZzZXQpKQogICAgICAgICAuc2V0Q29u
dGVudEluc2V0KGJ1aWxkT2JqZWN0Rm9yU2l6ZShJbnRTaXplKDAsIG1fcGFnZS5tYWluRnJhbWUo
KS52aWV3KCktPnRvcENvbnRlbnRJbnNldChTY3JvbGxWaWV3OjpUb3BDb250ZW50SW5zZXRUeXBl
OjpXZWJDb3JlT3JQbGF0Zm9ybUNvbnRlbnRJbnNldCkpKSkKKyAgICAgICAgLnNldFNob3dSdWxl
cnMobV9zaG93UnVsZXJzKQogICAgICAgICAucmVsZWFzZSgpOwogICAgIGV2YWx1YXRlSW5PdmVy
bGF5KCJyZXNldCIsIFdURk1vdmUoY29uZmlnT2JqZWN0KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuaAppbmRleCAzOGJhODUwZjQ2ZTA5NTIyNzAyODE3
ODU0Y2RiOWEwYzhhZTc4NzlmLi5hMjRiZWNkZDI3MTI1YWIzYWEwZTI5NzFjMTcwOGYzZDNmNWNi
ZmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3Zlcmxh
eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmgKQEAg
LTExNSw2ICsxMTUsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBzZXRTaG93aW5nUGFpbnRS
ZWN0cyhib29sKTsKICAgICB2b2lkIHNob3dQYWludFJlY3QoY29uc3QgRmxvYXRSZWN0Jik7CisK
KyAgICB2b2lkIHNldFNob3dSdWxlcnMoYm9vbCk7CiAgICAgCiAgICAgTm9kZSogaGlnaGxpZ2h0
ZWROb2RlKCkgY29uc3Q7CiAKQEAgLTEzMiw2ICsxMzQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
ZHJhd1F1YWRIaWdobGlnaHQoKTsKICAgICB2b2lkIGRyYXdQYXVzZWRJbkRlYnVnZ2VyTWVzc2Fn
ZSgpOwogICAgIHZvaWQgZHJhd1BhaW50UmVjdHMoKTsKKyAgICB2b2lkIGRyYXdSdWxlcnMoKTsK
ICAgICB2b2lkIHVwZGF0ZVBhaW50UmVjdHNUaW1lckZpcmVkKCk7CiAKICAgICBQYWdlKiBvdmVy
bGF5UGFnZSgpOwpAQCAtMTU3LDYgKzE2MCw3IEBAIHByaXZhdGU6CiAgICAgVGltZXIgbV9wYWlu
dFJlY3RVcGRhdGVUaW1lcjsKICAgICBib29sIG1faW5kaWNhdGluZyB7ZmFsc2V9OwogICAgIGJv
b2wgbV9zaG93aW5nUGFpbnRSZWN0cyB7ZmFsc2V9OworICAgIGJvb2wgbV9zaG93UnVsZXJzIHtm
YWxzZX07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheVBhZ2UuanMgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheVBhZ2UuanMKaW5kZXggYmY3ZDU2ZGJlOGJhZDE3
NmVmYzRjNzkzZGEzYmZiMzIxODdmYWZjYy4uMTFlZTFmYTc1ODk5YzBjNDRkM2Q1MjY4NDc2OGRm
Yjg1YmM4ZTQ1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ck92ZXJsYXlQYWdlLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JP
dmVybGF5UGFnZS5qcwpAQCAtMSwzICsxLDQgQEAKK2NvbnN0IGJvdW5kc0NvbG9yID0gInJnYmEo
MCwwLDAsMC40KSI7CiBjb25zdCBsaWdodEdyaWRDb2xvciA9ICJyZ2JhKDAsMCwwLDAuMikiOwog
Y29uc3QgZGFya0dyaWRDb2xvciA9ICJyZ2JhKDAsMCwwLDAuNSkiOwogY29uc3QgdHJhbnNwYXJl
bnRDb2xvciA9ICJyZ2JhKDAsIDAsIDAsIDApIjsKQEAgLTYzLDcgKzY0LDggQEAgZnVuY3Rpb24g
ZHJhd05vZGVIaWdobGlnaHQoYWxsSGlnaGxpZ2h0cykKICAgICAgICAgfSk7CiAgICAgfQogCi0g
ICAgX2RyYXdSdWxlcnMoKTsKKyAgICBpZiAoREFUQS5zaG93UnVsZXJzKQorICAgICAgICBfZHJh
d0JvdW5kcyhib3VuZHMpOwogCiAgICAgaWYgKGFsbEhpZ2hsaWdodHMubGVuZ3RoID09PSAxKSB7
CiAgICAgICAgIGZvciAobGV0IGZyYWdtZW50IG9mIGFsbEhpZ2hsaWdodHNbMF0uZnJhZ21lbnRz
KQpAQCAtNzksNyArODEsOCBAQCBmdW5jdGlvbiBkcmF3UXVhZEhpZ2hsaWdodChoaWdobGlnaHQp
CiAgICAgICAgIF9kcmF3T3V0bGluZWRRdWFkKGhpZ2hsaWdodC5xdWFkc1swXSwgaGlnaGxpZ2h0
LmNvbnRlbnRDb2xvciwgaGlnaGxpZ2h0LmNvbnRlbnRPdXRsaW5lQ29sb3IsIGJvdW5kcyk7CiAg
ICAgfSk7CiAKLSAgICBfZHJhd1J1bGVycygpOworICAgIGlmIChEQVRBLnNob3dSdWxlcnMpCisg
ICAgICAgIF9kcmF3Qm91bmRzKGJvdW5kcyk7CiB9CiAKIGZ1bmN0aW9uIHF1YWRFcXVhbHMocXVh
ZDEsIHF1YWQyKQpAQCAtMTA2LDYgKzEwOSwxMjkgQEAgZnVuY3Rpb24gdXBkYXRlUGFpbnRSZWN0
cyhwYWludFJlY3RMaXN0KQogICAgIGNvbnRleHQucmVzdG9yZSgpOwogfQogCitmdW5jdGlvbiBk
cmF3UnVsZXJzKCkKK3sKKyAgICBjb25zdCBncmlkTGFiZWxTaXplID0gMTM7CisgICAgY29uc3Qg
Z3JpZFNpemUgPSAxNTsKKyAgICBjb25zdCBncmlkU3RlcEluY3JlbWVudCA9IDUwOworICAgIGNv
bnN0IGdyaWRTdGVwTGVuZ3RoID0gODsKKyAgICBjb25zdCBncmlkU3ViU3RlcEluY3JlbWVudCA9
IDU7CisgICAgY29uc3QgZ3JpZFN1YlN0ZXBMZW5ndGggPSA1OworCisKKyAgICBsZXQgcGFnZUZh
Y3RvciA9IERBVEEucGFnZVpvb21GYWN0b3IgKiBEQVRBLnBhZ2VTY2FsZUZhY3RvcjsKKyAgICBs
ZXQgc2Nyb2xsWCA9IERBVEEuc2Nyb2xsT2Zmc2V0LnggKiBEQVRBLnBhZ2VTY2FsZUZhY3RvcjsK
KyAgICBsZXQgc2Nyb2xsWSA9IERBVEEuc2Nyb2xsT2Zmc2V0LnkgKiBEQVRBLnBhZ2VTY2FsZUZh
Y3RvcjsKKworICAgIGZ1bmN0aW9uIHpvb20odmFsdWUpIHsKKyAgICAgICAgcmV0dXJuIHZhbHVl
ICogcGFnZUZhY3RvcjsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB1bnpvb20odmFsdWUpIHsKKyAg
ICAgICAgcmV0dXJuIHZhbHVlIC8gcGFnZUZhY3RvcjsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBt
dWx0aXBsZUJlbG93KHZhbHVlLCBzdGVwKSB7CisgICAgICAgIHJldHVybiB2YWx1ZSAtICh2YWx1
ZSAlIHN0ZXApOworICAgIH0KKworICAgIGxldCB3aWR0aCA9IERBVEEudmlld3BvcnRTaXplLndp
ZHRoIC8gcGFnZUZhY3RvcjsKKyAgICBsZXQgaGVpZ2h0ID0gREFUQS52aWV3cG9ydFNpemUuaGVp
Z2h0IC8gcGFnZUZhY3RvcjsKKyAgICBsZXQgbWluWCA9IHVuem9vbShzY3JvbGxYKTsKKyAgICBs
ZXQgbWluWSA9IHVuem9vbShzY3JvbGxZKTsKKyAgICBsZXQgbWF4WCA9IG1pblggKyB3aWR0aDsK
KyAgICBsZXQgbWF4WSA9IG1pblkgKyBoZWlnaHQ7CisKKyAgICAvLyBEcmF3IGJhY2tncm91bmRz
CisgICAgX2lzb2xhdGVBY3Rpb25zKCgpID0+IHsKKyAgICAgICAgbGV0IG9mZnNldFggPSBEQVRB
LmNvbnRlbnRJbnNldC53aWR0aCArIGdyaWRTaXplOworICAgICAgICBsZXQgb2Zmc2V0WSA9IERB
VEEuY29udGVudEluc2V0LmhlaWdodCArIGdyaWRTaXplOworCisgICAgICAgIGNvbnRleHQuZmls
bFN0eWxlID0gZ3JpZEJhY2tncm91bmRDb2xvcjsKKyAgICAgICAgY29udGV4dC5maWxsUmVjdChE
QVRBLmNvbnRlbnRJbnNldC53aWR0aCwgREFUQS5jb250ZW50SW5zZXQuaGVpZ2h0LCBncmlkU2l6
ZSwgZ3JpZFNpemUpOworICAgICAgICBjb250ZXh0LmZpbGxSZWN0KG9mZnNldFgsIERBVEEuY29u
dGVudEluc2V0LmhlaWdodCwgem9vbSh3aWR0aCkgLSBvZmZzZXRYLCBncmlkU2l6ZSk7CisgICAg
ICAgIGNvbnRleHQuZmlsbFJlY3QoREFUQS5jb250ZW50SW5zZXQud2lkdGgsIG9mZnNldFksIGdy
aWRTaXplLCB6b29tKGhlaWdodCkgLSBvZmZzZXRZKTsKKyAgICB9KTsKKworICAgIC8vIFJ1bGVy
IHN0eWxlcworICAgIF9pc29sYXRlQWN0aW9ucygoKSA9PiB7CisgICAgICAgIGNvbnRleHQubGlu
ZVdpZHRoID0gMTsKKyAgICAgICAgY29udGV4dC5maWxsU3R5bGUgPSBkYXJrR3JpZENvbG9yOwor
CisgICAgICAgIC8vIERyYXcgbGFiZWxzCisgICAgICAgIF9pc29sYXRlQWN0aW9ucygoKSA9PiB7
CisgICAgICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZShEQVRBLmNvbnRlbnRJbnNldC53aWR0aCAt
IHNjcm9sbFgsIERBVEEuY29udGVudEluc2V0LmhlaWdodCAtIHNjcm9sbFkpOworCisgICAgICAg
ICAgICBmb3IgKGxldCB4ID0gbXVsdGlwbGVCZWxvdyhtaW5YLCBncmlkU3RlcEluY3JlbWVudCAq
IDIpOyB4IDwgbWF4WDsgeCArPSBncmlkU3RlcEluY3JlbWVudCAqIDIpIHsKKyAgICAgICAgICAg
ICAgICBpZiAoIXggJiYgIXNjcm9sbFgpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
CisgICAgICAgICAgICAgICAgX2lzb2xhdGVBY3Rpb25zKCgpID0+IHsKKyAgICAgICAgICAgICAg
ICAgICAgY29udGV4dC50cmFuc2xhdGUoem9vbSh4KSArIDAuNSwgc2Nyb2xsWSk7CisgICAgICAg
ICAgICAgICAgICAgIGNvbnRleHQuZmlsbFRleHQoeCwgMiwgZ3JpZExhYmVsU2l6ZSk7CisgICAg
ICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZvciAobGV0IHkg
PSBtdWx0aXBsZUJlbG93KG1pblksIGdyaWRTdGVwSW5jcmVtZW50ICogMik7IHkgPCBtYXhZOyB5
ICs9IGdyaWRTdGVwSW5jcmVtZW50ICogMikgeworICAgICAgICAgICAgICAgIGlmICgheSAmJiAh
c2Nyb2xsWSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgICAg
ICBfaXNvbGF0ZUFjdGlvbnMoKCkgPT4geworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LnRy
YW5zbGF0ZShzY3JvbGxYLCB6b29tKHkpICsgMC41KTsKKyAgICAgICAgICAgICAgICAgICAgY29u
dGV4dC5yb3RhdGUoLU1hdGguUEkgLyAyKTsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC5m
aWxsVGV4dCh5LCAyLCBncmlkTGFiZWxTaXplKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfSk7CisKKyAgICAgICAgLy8gRHJhdyBob3Jpem9udGFsIGdyaWQK
KyAgICAgICAgX2lzb2xhdGVBY3Rpb25zKCgpID0+IHsKKyAgICAgICAgICAgIGNvbnRleHQudHJh
bnNsYXRlKERBVEEuY29udGVudEluc2V0LndpZHRoIC0gc2Nyb2xsWCArIDAuNSwgREFUQS5jb250
ZW50SW5zZXQuaGVpZ2h0IC0gc2Nyb2xsWSk7CisKKyAgICAgICAgICAgIGZvciAobGV0IHggPSBt
dWx0aXBsZUJlbG93KG1pblgsIGdyaWRTdWJTdGVwSW5jcmVtZW50KTsgeCA8IG1heFg7IHggKz0g
Z3JpZFN1YlN0ZXBJbmNyZW1lbnQpIHsKKyAgICAgICAgICAgICAgICBpZiAoIXggJiYgIXNjcm9s
bFgpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICAgICAgY29u
dGV4dC5iZWdpblBhdGgoKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0Lm1vdmVUbyh6b29tKHgp
LCBzY3JvbGxZKTsKKworICAgICAgICAgICAgICAgIGlmICh4ICUgZ3JpZFN0ZXBJbmNyZW1lbnQp
IHsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC5zdHJva2VTdHlsZSA9IGxpZ2h0R3JpZENv
bG9yOworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmxpbmVUbyh6b29tKHgpLCBzY3JvbGxZ
ICsgZ3JpZFN1YlN0ZXBMZW5ndGgpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgICAgIGNvbnRleHQuc3Ryb2tlU3R5bGUgPSBkYXJrR3JpZENvbG9yOworICAgICAg
ICAgICAgICAgICAgICBjb250ZXh0LmxpbmVUbyh6b29tKHgpLCBzY3JvbGxZICsgKCh4ICUgKGdy
aWRTdGVwSW5jcmVtZW50ICogMikpID8gZ3JpZFN1YlN0ZXBMZW5ndGggOiBncmlkU3RlcExlbmd0
aCkpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGNvbnRleHQuc3Ryb2tl
KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworCisgICAgICAgIC8vIERyYXcgdmVydGlj
YWwgZ3JpZAorICAgICAgICBfaXNvbGF0ZUFjdGlvbnMoKCkgPT4geworICAgICAgICAgICAgY29u
dGV4dC50cmFuc2xhdGUoREFUQS5jb250ZW50SW5zZXQud2lkdGggLSBzY3JvbGxYLCBEQVRBLmNv
bnRlbnRJbnNldC5oZWlnaHQgLSBzY3JvbGxZICsgMC41KTsKKworICAgICAgICAgICAgZm9yIChs
ZXQgeSA9IG11bHRpcGxlQmVsb3cobWluWSwgZ3JpZFN1YlN0ZXBJbmNyZW1lbnQpOyB5IDwgbWF4
WTsgeSArPSBncmlkU3ViU3RlcEluY3JlbWVudCkgeworICAgICAgICAgICAgICAgIGlmICgheSAm
JiAhc2Nyb2xsWSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAg
ICAgICBjb250ZXh0LmJlZ2luUGF0aCgpOworICAgICAgICAgICAgICAgIGNvbnRleHQubW92ZVRv
KHNjcm9sbFgsIHpvb20oeSkpOworCisgICAgICAgICAgICAgICAgaWYgKHkgJSBncmlkU3RlcElu
Y3JlbWVudCkgeworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LnN0cm9rZVN0eWxlID0gbGln
aHRHcmlkQ29sb3I7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQubGluZVRvKHNjcm9sbFgg
KyBncmlkU3ViU3RlcExlbmd0aCwgem9vbSh5KSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICAgICAgY29udGV4dC5zdHJva2VTdHlsZSA9IGRhcmtHcmlkQ29sb3I7
CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQubGluZVRvKHNjcm9sbFggKyAoKHkgJSAoZ3Jp
ZFN0ZXBJbmNyZW1lbnQgKiAyKSkgPyBncmlkU3ViU3RlcExlbmd0aCA6IGdyaWRTdGVwTGVuZ3Ro
KSwgem9vbSh5KSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgY29udGV4
dC5zdHJva2UoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKIGZ1
bmN0aW9uIHJlc2V0KHBheWxvYWQpCiB7CiAgICAgREFUQS52aWV3cG9ydFNpemUgPSBwYXlsb2Fk
LnZpZXdwb3J0U2l6ZTsKQEAgLTExNCw2ICsyNDAsNyBAQCBmdW5jdGlvbiByZXNldChwYXlsb2Fk
KQogICAgIERBVEEucGFnZVpvb21GYWN0b3IgPSBwYXlsb2FkLnBhZ2Vab29tRmFjdG9yOwogICAg
IERBVEEuc2Nyb2xsT2Zmc2V0ID0gcGF5bG9hZC5zY3JvbGxPZmZzZXQ7CiAgICAgREFUQS5jb250
ZW50SW5zZXQgPSBwYXlsb2FkLmNvbnRlbnRJbnNldDsKKyAgICBEQVRBLnNob3dSdWxlcnMgPSBw
YXlsb2FkLnNob3dSdWxlcnM7CiAKICAgICB3aW5kb3cuY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImNhbnZhcyIpOwogICAgIHdpbmRvdy5wYWludFJlY3RzQ2FudmFzID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInBhaW50cmVjdHMtY2FudmFzIik7CkBAIC0yODYsNiArNDEzLDM2
IEBAIGZ1bmN0aW9uIF9kcmF3T3V0bGluZWRRdWFkV2l0aENsaXAocXVhZCwgY2xpcFF1YWQsIGZp
bGxDb2xvciwgYm91bmRzKQogICAgIH0pOwogfQogCitmdW5jdGlvbiBfZHJhd0JvdW5kcyhib3Vu
ZHMpCit7CisgICAgX2lzb2xhdGVBY3Rpb25zKCgpID0+IHsKKyAgICAgICAgbGV0IHN0YXJ0WCA9
IERBVEEuY29udGVudEluc2V0LndpZHRoOworICAgICAgICBsZXQgc3RhcnRZID0gREFUQS5jb250
ZW50SW5zZXQuaGVpZ2h0OworCisgICAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7CisKKyAgICAg
ICAgaWYgKGJvdW5kcy5taW5ZIC0gc3RhcnRZID4gMCkgeworICAgICAgICAgICAgY29udGV4dC5t
b3ZlVG8oYm91bmRzLm1pblgsIGJvdW5kcy5taW5ZKTsKKyAgICAgICAgICAgIGNvbnRleHQubGlu
ZVRvKGJvdW5kcy5taW5YLCBzdGFydFkpOworCisgICAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhi
b3VuZHMubWF4WCwgYm91bmRzLm1pblkpOworICAgICAgICAgICAgY29udGV4dC5saW5lVG8oYm91
bmRzLm1heFgsIHN0YXJ0WSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoYm91bmRzLm1pblgg
LSBzdGFydFggPiAwKSB7CisgICAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhib3VuZHMubWluWCwg
Ym91bmRzLm1pblkpOworICAgICAgICAgICAgY29udGV4dC5saW5lVG8oc3RhcnRYLCBib3VuZHMu
bWluWSk7CisKKyAgICAgICAgICAgIGNvbnRleHQubW92ZVRvKGJvdW5kcy5taW5YLCBib3VuZHMu
bWF4WSk7CisgICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhzdGFydFgsIGJvdW5kcy5tYXhZKTsK
KyAgICAgICAgfQorCisgICAgICAgIGNvbnRleHQubGluZVdpZHRoID0gMTsKKyAgICAgICAgY29u
dGV4dC5zdHJva2VTdHlsZSA9IGJvdW5kc0NvbG9yOworICAgICAgICBjb250ZXh0LnN0cm9rZSgp
OworICAgIH0pOworfQorCiBmdW5jdGlvbiBfY3JlYXRlRWxlbWVudFRpdGxlKGVsZW1lbnREYXRh
KQogewogICAgIGxldCBidWlsZGVyID0gbmV3IERPTUJ1aWxkZXIoImRpdiIsICJlbGVtZW50LXRp
dGxlIik7CkBAIC00MzgsMTI4ICs1OTUsNiBAQCBmdW5jdGlvbiBoaWRlUGFnZUluZGljYXRpb24o
KQogICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZSgiaW5kaWNhdGUiKTsKIH0KIAot
ZnVuY3Rpb24gX2RyYXdSdWxlcnMob3B0aW9ucyA9IHt9KQotewotICAgIGNvbnN0IGdyaWRMYWJl
bFNpemUgPSAxMzsKLSAgICBjb25zdCBncmlkU2l6ZSA9IDE1OwotICAgIGNvbnN0IGdyaWRTdGVw
SW5jcmVtZW50ID0gNTA7Ci0gICAgY29uc3QgZ3JpZFN0ZXBMZW5ndGggPSA4OwotICAgIGNvbnN0
IGdyaWRTdWJTdGVwSW5jcmVtZW50ID0gNTsKLSAgICBjb25zdCBncmlkU3ViU3RlcExlbmd0aCA9
IDU7Ci0KLSAgICBsZXQgcGFnZUZhY3RvciA9IERBVEEucGFnZVpvb21GYWN0b3IgKiBEQVRBLnBh
Z2VTY2FsZUZhY3RvcjsKLSAgICBsZXQgc2Nyb2xsWCA9IERBVEEuc2Nyb2xsT2Zmc2V0LnggKiBE
QVRBLnBhZ2VTY2FsZUZhY3RvcjsKLSAgICBsZXQgc2Nyb2xsWSA9IERBVEEuc2Nyb2xsT2Zmc2V0
LnkgKiBEQVRBLnBhZ2VTY2FsZUZhY3RvcjsKLQotICAgIGZ1bmN0aW9uIHpvb20odmFsdWUpIHsK
LSAgICAgICAgcmV0dXJuIHZhbHVlICogcGFnZUZhY3RvcjsKLSAgICB9Ci0KLSAgICBmdW5jdGlv
biB1bnpvb20odmFsdWUpIHsKLSAgICAgICAgcmV0dXJuIHZhbHVlIC8gcGFnZUZhY3RvcjsKLSAg
ICB9Ci0KLSAgICBmdW5jdGlvbiBtdWx0aXBsZUJlbG93KHZhbHVlLCBzdGVwKSB7Ci0gICAgICAg
IHJldHVybiB2YWx1ZSAtICh2YWx1ZSAlIHN0ZXApOwotICAgIH0KLQotICAgIGxldCB3aWR0aCA9
IERBVEEudmlld3BvcnRTaXplLndpZHRoIC8gcGFnZUZhY3RvcjsKLSAgICBsZXQgaGVpZ2h0ID0g
REFUQS52aWV3cG9ydFNpemUuaGVpZ2h0IC8gcGFnZUZhY3RvcjsKLSAgICBsZXQgbWluWCA9IHVu
em9vbShzY3JvbGxYKTsKLSAgICBsZXQgbWluWSA9IHVuem9vbShzY3JvbGxZKTsKLSAgICBsZXQg
bWF4WCA9IG1pblggKyB3aWR0aDsKLSAgICBsZXQgbWF4WSA9IG1pblkgKyBoZWlnaHQ7Ci0KLSAg
ICAvLyBEcmF3IGJhY2tncm91bmRzCi0gICAgX2lzb2xhdGVBY3Rpb25zKCgpID0+IHsKLSAgICAg
ICAgbGV0IG9mZnNldFggPSBEQVRBLmNvbnRlbnRJbnNldC53aWR0aCArIGdyaWRTaXplOwotICAg
ICAgICBsZXQgb2Zmc2V0WSA9IERBVEEuY29udGVudEluc2V0LmhlaWdodCArIGdyaWRTaXplOwot
Ci0gICAgICAgIGNvbnRleHQuZmlsbFN0eWxlID0gZ3JpZEJhY2tncm91bmRDb2xvcjsKLSAgICAg
ICAgY29udGV4dC5maWxsUmVjdChEQVRBLmNvbnRlbnRJbnNldC53aWR0aCwgREFUQS5jb250ZW50
SW5zZXQuaGVpZ2h0LCBncmlkU2l6ZSwgZ3JpZFNpemUpOwotICAgICAgICBjb250ZXh0LmZpbGxS
ZWN0KG9mZnNldFgsIERBVEEuY29udGVudEluc2V0LmhlaWdodCwgem9vbSh3aWR0aCkgLSBvZmZz
ZXRYLCBncmlkU2l6ZSk7Ci0gICAgICAgIGNvbnRleHQuZmlsbFJlY3QoREFUQS5jb250ZW50SW5z
ZXQud2lkdGgsIG9mZnNldFksIGdyaWRTaXplLCB6b29tKGhlaWdodCkgLSBvZmZzZXRZKTsKLSAg
ICB9KTsKLQotICAgIC8vIFJ1bGVyIHN0eWxlcwotICAgIF9pc29sYXRlQWN0aW9ucygoKSA9PiB7
Ci0gICAgICAgIGNvbnRleHQubGluZVdpZHRoID0gMTsKLSAgICAgICAgY29udGV4dC5maWxsU3R5
bGUgPSBkYXJrR3JpZENvbG9yOwotCi0gICAgICAgIC8vIERyYXcgbGFiZWxzCi0gICAgICAgIF9p
c29sYXRlQWN0aW9ucygoKSA9PiB7Ci0gICAgICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZShEQVRB
LmNvbnRlbnRJbnNldC53aWR0aCAtIHNjcm9sbFgsIERBVEEuY29udGVudEluc2V0LmhlaWdodCAt
IHNjcm9sbFkpOwotCi0gICAgICAgICAgICBmb3IgKGxldCB4ID0gbXVsdGlwbGVCZWxvdyhtaW5Y
LCBncmlkU3RlcEluY3JlbWVudCAqIDIpOyB4IDwgbWF4WDsgeCArPSBncmlkU3RlcEluY3JlbWVu
dCAqIDIpIHsKLSAgICAgICAgICAgICAgICBpZiAoIXggJiYgIXNjcm9sbFgpCi0gICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICAgICAgX2lzb2xhdGVBY3Rpb25zKCgp
ID0+IHsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC50cmFuc2xhdGUoem9vbSh4KSArIDAu
NSwgc2Nyb2xsWSk7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZmlsbFRleHQoeCwgMiwg
Z3JpZExhYmVsU2l6ZSk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgIGZvciAobGV0IHkgPSBtdWx0aXBsZUJlbG93KG1pblksIGdyaWRTdGVwSW5jcmVt
ZW50ICogMik7IHkgPCBtYXhZOyB5ICs9IGdyaWRTdGVwSW5jcmVtZW50ICogMikgewotICAgICAg
ICAgICAgICAgIGlmICgheSAmJiAhc2Nyb2xsWSkKLSAgICAgICAgICAgICAgICAgICAgY29udGlu
dWU7Ci0KLSAgICAgICAgICAgICAgICBfaXNvbGF0ZUFjdGlvbnMoKCkgPT4gewotICAgICAgICAg
ICAgICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZShzY3JvbGxYLCB6b29tKHkpICsgMC41KTsKLSAg
ICAgICAgICAgICAgICAgICAgY29udGV4dC5yb3RhdGUoLU1hdGguUEkgLyAyKTsKLSAgICAgICAg
ICAgICAgICAgICAgY29udGV4dC5maWxsVGV4dCh5LCAyLCBncmlkTGFiZWxTaXplKTsKLSAgICAg
ICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSk7Ci0KLSAgICAgICAgLy8g
RHJhdyBob3Jpem9udGFsIGdyaWQKLSAgICAgICAgX2lzb2xhdGVBY3Rpb25zKCgpID0+IHsKLSAg
ICAgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKERBVEEuY29udGVudEluc2V0LndpZHRoIC0gc2Ny
b2xsWCArIDAuNSwgREFUQS5jb250ZW50SW5zZXQuaGVpZ2h0IC0gc2Nyb2xsWSk7Ci0KLSAgICAg
ICAgICAgIGZvciAobGV0IHggPSBtdWx0aXBsZUJlbG93KG1pblgsIGdyaWRTdWJTdGVwSW5jcmVt
ZW50KTsgeCA8IG1heFg7IHggKz0gZ3JpZFN1YlN0ZXBJbmNyZW1lbnQpIHsKLSAgICAgICAgICAg
ICAgICBpZiAoIXggJiYgIXNjcm9sbFgpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwot
Ci0gICAgICAgICAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTsKLSAgICAgICAgICAgICAgICBj
b250ZXh0Lm1vdmVUbyh6b29tKHgpLCBzY3JvbGxZKTsKLQotICAgICAgICAgICAgICAgIGlmICh4
ICUgZ3JpZFN0ZXBJbmNyZW1lbnQpIHsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC5zdHJv
a2VTdHlsZSA9IGxpZ2h0R3JpZENvbG9yOwotICAgICAgICAgICAgICAgICAgICBjb250ZXh0Lmxp
bmVUbyh6b29tKHgpLCBzY3JvbGxZICsgZ3JpZFN1YlN0ZXBMZW5ndGgpOwotICAgICAgICAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuc3Ryb2tlU3R5bGUgPSBk
YXJrR3JpZENvbG9yOwotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmxpbmVUbyh6b29tKHgp
LCBzY3JvbGxZICsgKCh4ICUgKGdyaWRTdGVwSW5jcmVtZW50ICogMikpID8gZ3JpZFN1YlN0ZXBM
ZW5ndGggOiBncmlkU3RlcExlbmd0aCkpOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgICAgIGNvbnRleHQuc3Ryb2tlKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0pOwotCi0g
ICAgICAgIC8vIERyYXcgdmVydGljYWwgZ3JpZAotICAgICAgICBfaXNvbGF0ZUFjdGlvbnMoKCkg
PT4gewotICAgICAgICAgICAgY29udGV4dC50cmFuc2xhdGUoREFUQS5jb250ZW50SW5zZXQud2lk
dGggLSBzY3JvbGxYLCBEQVRBLmNvbnRlbnRJbnNldC5oZWlnaHQgLSBzY3JvbGxZICsgMC41KTsK
LQotICAgICAgICAgICAgZm9yIChsZXQgeSA9IG11bHRpcGxlQmVsb3cobWluWSwgZ3JpZFN1YlN0
ZXBJbmNyZW1lbnQpOyB5IDwgbWF4WTsgeSArPSBncmlkU3ViU3RlcEluY3JlbWVudCkgewotICAg
ICAgICAgICAgICAgIGlmICgheSAmJiAhc2Nyb2xsWSkKLSAgICAgICAgICAgICAgICAgICAgY29u
dGludWU7Ci0KLSAgICAgICAgICAgICAgICBjb250ZXh0LmJlZ2luUGF0aCgpOwotICAgICAgICAg
ICAgICAgIGNvbnRleHQubW92ZVRvKHNjcm9sbFgsIHpvb20oeSkpOwotCi0gICAgICAgICAgICAg
ICAgaWYgKHkgJSBncmlkU3RlcEluY3JlbWVudCkgewotICAgICAgICAgICAgICAgICAgICBjb250
ZXh0LnN0cm9rZVN0eWxlID0gbGlnaHRHcmlkQ29sb3I7Ci0gICAgICAgICAgICAgICAgICAgIGNv
bnRleHQubGluZVRvKHNjcm9sbFggKyBncmlkU3ViU3RlcExlbmd0aCwgem9vbSh5KSk7Ci0gICAg
ICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC5zdHJva2VT
dHlsZSA9IGRhcmtHcmlkQ29sb3I7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQubGluZVRv
KHNjcm9sbFggKyAoKHkgJSAoZ3JpZFN0ZXBJbmNyZW1lbnQgKiAyKSkgPyBncmlkU3ViU3RlcExl
bmd0aCA6IGdyaWRTdGVwTGVuZ3RoKSwgem9vbSh5KSk7Ci0gICAgICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICAgICAgY29udGV4dC5zdHJva2UoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fSk7Ci0gICAgfSk7Ci19Ci0KIGZ1bmN0aW9uIHNldFBsYXRmb3JtKHBsYXRmb3JtKQogewogICAg
IGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCgicGxhdGZvcm0tIiArIHBsYXRmb3JtKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFn
ZW50LmNwcAppbmRleCBhZWU5ZjU4NTY5OWRiZmI4MGM2MjgzMTVhOWUyOWFkN2ZiMDg2ZDk3Li41
OGI3YjZlNDQxOTQ2ZmY4NDBjYmVjYjU3OTA2MWMzZTMwYmQyZGI3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBA
IC01NDIsNiArNTQyLDExIEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpzZWFyY2hJblJlc291
cmNlcyhFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgdGV4dCwgY29uCiAgICAgICAgIG5ldHdv
cmtBZ2VudC0+c2VhcmNoT3RoZXJSZXF1ZXN0cyhyZWdleCwgcmVzdWx0KTsKIH0KIAordm9pZCBJ
bnNwZWN0b3JQYWdlQWdlbnQ6OnNldFNob3dSdWxlcnMoRXJyb3JTdHJpbmcmLCBib29sIHNob3dS
dWxlcnMpCit7CisgICAgbV9vdmVybGF5LT5zZXRTaG93UnVsZXJzKHNob3dSdWxlcnMpOworfQor
CiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6c2V0U2hvd1BhaW50UmVjdHMoRXJyb3JTdHJpbmcm
LCBib29sIHNob3cpCiB7CiAgICAgbV9zaG93UGFpbnRSZWN0cyA9IHNob3c7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaAppbmRl
eCAxMDI5NmIzOGM3ZGIyYjllOWNlMTNjZDM4NGExMDhlOWZlOTA5YmQ3Li42NzA5ZjUyYmUwMzQz
MmIyYzU1ZWI5NDcxYmM0YzBkYjI1ZDA4NmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmgKQEAgLTk3LDYgKzk3LDcgQEAg
cHVibGljOgogICAgIHZvaWQgZ2V0UmVzb3VyY2VDb250ZW50KEVycm9yU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiBmcmFtZUlkLCBjb25zdCBTdHJpbmcmIHVybCwgU3RyaW5nKiBjb250ZW50LCBib29s
KiBiYXNlNjRFbmNvZGVkKSBmaW5hbDsKICAgICB2b2lkIHNlYXJjaEluUmVzb3VyY2UoRXJyb3JT
dHJpbmcmLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBT
dHJpbmcmIHF1ZXJ5LCBjb25zdCBib29sKiBvcHRpb25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJv
b2wqIG9wdGlvbmFsSXNSZWdleCwgY29uc3QgU3RyaW5nKiBvcHRpb25hbFJlcXVlc3RJZCwgUmVm
UHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6R2VuZXJpY1R5cGVzOjpTZWFy
Y2hNYXRjaD4+JikgZmluYWw7CiAgICAgdm9pZCBzZWFyY2hJblJlc291cmNlcyhFcnJvclN0cmlu
ZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IGJvb2wqIGNhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wq
IGlzUmVnZXgsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6
OlNlYXJjaFJlc3VsdD4+JikgZmluYWw7CisgICAgdm9pZCBzZXRTaG93UnVsZXJzKEVycm9yU3Ry
aW5nJiwgYm9vbCkgZmluYWw7CiAgICAgdm9pZCBzZXRTaG93UGFpbnRSZWN0cyhFcnJvclN0cmlu
ZyYsIGJvb2wgc2hvdykgZmluYWw7CiAgICAgdm9pZCBzZXRFbXVsYXRlZE1lZGlhKEVycm9yU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgdm9pZCBnZXRDb21wb3NpdGluZ0JvcmRl
cnNWaXNpYmxlKEVycm9yU3RyaW5nJiwgYm9vbCogb3V0X3BhcmFtKSBmaW5hbDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXpl
ZFN0cmluZ3MuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0aW9ucy9lbi5scHJv
ai9sb2NhbGl6ZWRTdHJpbmdzLmpzCmluZGV4IDgwM2Q5ZDQxZTg1Y2I1Y2QyZTg0ZTY5NThkZDJl
Nzk0ZDA1MWYxNmMuLjU2YjY5OWFlMjZiNDZjMzE1NTFkOWIyOWYwY2JmMzFhNzdlZmU2ZWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xv
Y2FsaXplZFN0cmluZ3MuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXphdGlv
bnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcwpAQCAtNDgxLDYgKzQ4MSw3IEBAIGxvY2Fs
aXplZFN0cmluZ3NbIkhpZGUgQ29uc29sZSJdID0gIkhpZGUgQ29uc29sZSI7CiBsb2NhbGl6ZWRT
dHJpbmdzWyJIaWRlIENvbnNvbGUgKCVzKSJdID0gIkhpZGUgQ29uc29sZSAoJXMpIjsKIGxvY2Fs
aXplZFN0cmluZ3NbIkhpZGUgR3JpZCJdID0gIkhpZGUgR3JpZCI7CiBsb2NhbGl6ZWRTdHJpbmdz
WyJIaWRlIFBhdGgiXSA9ICJIaWRlIFBhdGgiOworbG9jYWxpemVkU3RyaW5nc1siSGlkZSBSdWxl
cnMiXSA9ICJIaWRlIFJ1bGVycyI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJIaWRlIGNvbXBvc2l0aW5n
IGJvcmRlcnMiXSA9ICJIaWRlIGNvbXBvc2l0aW5nIGJvcmRlcnMiOwogbG9jYWxpemVkU3RyaW5n
c1siSGlkZSBzaGFkb3cgRE9NIG5vZGVzIl0gPSAiSGlkZSBzaGFkb3cgRE9NIG5vZGVzIjsKIGxv
Y2FsaXplZFN0cmluZ3NbIkhpZGUgdGhlIGRldGFpbHMgc2lkZWJhciAoJXMpIl0gPSAiSGlkZSB0
aGUgZGV0YWlscyBzaWRlYmFyICglcykiOwpAQCAtODY4LDYgKzg2OSw3IEBAIGxvY2FsaXplZFN0
cmluZ3NbIlNob3cgQ29uc29sZSB0YWIiXSA9ICJTaG93IENvbnNvbGUgdGFiIjsKIGxvY2FsaXpl
ZFN0cmluZ3NbIlNob3cgR3JpZCJdID0gIlNob3cgR3JpZCI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJT
aG93IFBhdGgiXSA9ICJTaG93IFBhdGgiOwogbG9jYWxpemVkU3RyaW5nc1siU2hvdyBSZW1haW5p
bmcgKCVkKSJdID0gIlNob3cgUmVtYWluaW5nICglZCkiOworbG9jYWxpemVkU3RyaW5nc1siU2hv
dyBSdWxlcnMiXSA9ICJTaG93IFJ1bGVycyI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJTaG93IFNjb3Bl
IENoYWluIG9uIHBhdXNlIl0gPSAiU2hvdyBTY29wZSBDaGFpbiBvbiBwYXVzZSI7CiBsb2NhbGl6
ZWRTdHJpbmdzWyJTaG93IFNvdXJjZSJdID0gIlNob3cgU291cmNlIjsKIGxvY2FsaXplZFN0cmlu
Z3NbIlNob3cgYWxsIGFjdGlvbnMiXSA9ICJTaG93IGFsbCBhY3Rpb25zIjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvU2V0dGluZy5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvU2V0dGluZy5qcwppbmRleCAw
OWE3M2JlMmViM2I1YTc1Yjk1MjYyMWYyZGNmMzQwN2MxOTBhMjE5Li42OGYwNjAwMzE0YjljZmIz
Y2M1Y2FjZmRmMTEyZGJhZDg1NWM5OTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9CYXNlL1NldHRpbmcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvQmFzZS9TZXR0aW5nLmpzCkBAIC0xMjEsNiArMTIxLDcgQEAgV0ku
c2V0dGluZ3MgPSB7CiAgICAgc2hvd0ltYWdlR3JpZDogbmV3IFdJLlNldHRpbmcoInNob3ctaW1h
Z2UtZ3JpZCIsIGZhbHNlKSwKICAgICBzaG93Q2FudmFzUGF0aDogbmV3IFdJLlNldHRpbmcoInNo
b3ctY2FudmFzLXBhdGgiLCBmYWxzZSksCiAgICAgc2VsZWN0ZWROZXR3b3JrRGV0YWlsQ29udGVu
dFZpZXdJZGVudGlmaWVyOiBuZXcgV0kuU2V0dGluZygibmV0d29yay1kZXRhaWwtY29udGVudC12
aWV3LWlkZW50aWZpZXIiLCAicHJldmlldyIpLAorICAgIHNob3dSdWxlcnM6IG5ldyBXSS5TZXR0
aW5nKCJzaG93LXJ1bGVycyIsIHRydWUpLAogCiAgICAgLy8gRXhwZXJpbWVudGFsCiAgICAgZXhw
ZXJpbWVudGFsRW5hYmxlTGF5ZXJzVGFiOiBuZXcgV0kuU2V0dGluZygiZXhwZXJpbWVudGFsLWVu
YWJsZS1sYXllcnMtdGFiIiwgZmFsc2UpLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL1J1bGVycy5zdmcgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9JbWFnZXMvUnVsZXJzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NWYxYjBiYzRm
OWM4YzdhN2M0N2QzOWU3ZjJmZDUxMDAxYjU1MmRiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL1J1bGVycy5zdmcKQEAgLTAsMCAr
MSwxMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzwhLS0gQ29w
eXJpZ2h0IMKpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAtLT4KKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0icm9vdCIgdmVyc2lvbj0iMS4x
IiB2aWV3Qm94PSIwIDAgMTYgMTYiPgorICAgIDxwb2x5Z29uIHBvaW50cz0iMS41IDEuNSAxNC41
IDEuNSAxNC41IDUuNSA1LjUgNS41IDUuNSAxNC41IDEuNSAxNC41IDEuNSAxLjUiIGZpbGw9Im5v
bmUiIHN0cm9rZT0iY3VycmVudENvbG9yIi8+CisgICAgPGxpbmUgeDE9IjguNSIgeTE9IjMiIHgy
PSI4LjUiIHkyPSI1IiBzdHJva2U9ImN1cnJlbnRDb2xvciIvPgorICAgIDxsaW5lIHgxPSIxMS41
IiB5MT0iMyIgeDI9IjExLjUiIHkyPSI1IiBzdHJva2U9ImN1cnJlbnRDb2xvciIvPgorICAgIDxs
aW5lIHgxPSI1LjUiIHkxPSIzIiB4Mj0iNS41IiB5Mj0iNSIgc3Ryb2tlPSJjdXJyZW50Q29sb3Ii
Lz4KKyAgICA8bGluZSB4MT0iMyIgeTE9IjExLjUiIHgyPSI1IiB5Mj0iMTEuNSIgc3Ryb2tlPSJj
dXJyZW50Q29sb3IiLz4KKyAgICA8bGluZSB4MT0iMyIgeTE9IjguNSIgeDI9IjUiIHkyPSI4LjUi
IHN0cm9rZT0iY3VycmVudENvbG9yIi8+CisgICAgPGxpbmUgeDE9IjMiIHkxPSI1LjUiIHgyPSI1
IiB5Mj0iNS41IiBzdHJva2U9ImN1cnJlbnRDb2xvciIvPgorPC9zdmc+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlQ29udGVudFZp
ZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVl
Q29udGVudFZpZXcuanMKaW5kZXggYTY4MDk4NDgxNjc1NWQ4MjI1ODZmYzE5N2YzNDM2ZWE3NjI1
ZmJjZC4uOGQ5OWZmYzA0NzIzZDUwYTRmYjMxOThhNmRjMGVkMGM0MWUxMTc0ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZUNvbnRl
bnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0RPTVRyZWVDb250ZW50Vmlldy5qcwpAQCAtNTQsNiArNTQsMTIgQEAgV0kuRE9NVHJlZUNvbnRl
bnRWaWV3ID0gY2xhc3MgRE9NVHJlZUNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFZpZXcK
ICAgICAgICAgdGhpcy5fc2hvd1ByaW50U3R5bGVzQnV0dG9uTmF2aWdhdGlvbkl0ZW0udmlzaWJp
bGl0eVByaW9yaXR5ID0gV0kuTmF2aWdhdGlvbkl0ZW0uVmlzaWJpbGl0eVByaW9yaXR5LkxvdzsK
ICAgICAgICAgdGhpcy5fc2hvd1ByaW50U3R5bGVzQ2hhbmdlZCgpOwogCisgICAgICAgIFdJLnNl
dHRpbmdzLnNob3dSdWxlcnMuYWRkRXZlbnRMaXN0ZW5lcihXSS5TZXR0aW5nLkV2ZW50LkNoYW5n
ZWQsIHRoaXMuX3Nob3dSdWxlcnNDaGFuZ2VkLCB0aGlzKTsKKyAgICAgICAgdGhpcy5fc2hvd1J1
bGVyc0J1dHRvbk5hdmlnYXRpb25JdGVtID0gbmV3IFdJLkFjdGl2YXRlQnV0dG9uTmF2aWdhdGlv
bkl0ZW0oInNob3ctcnVsZXJzIiwgV0kuVUlTdHJpbmcoIlNob3cgUnVsZXJzIiksIFdJLlVJU3Ry
aW5nKCJIaWRlIFJ1bGVycyIpLCAiSW1hZ2VzL1J1bGVycy5zdmciLCAxNiwgMTYpOworICAgICAg
ICB0aGlzLl9zaG93UnVsZXJzQnV0dG9uTmF2aWdhdGlvbkl0ZW0uYWRkRXZlbnRMaXN0ZW5lcihX
SS5CdXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5DbGlja2VkLCB0aGlzLl90b2dnbGVTaG93UnVs
ZXJzLCB0aGlzKTsKKyAgICAgICAgdGhpcy5fc2hvd1J1bGVyc0J1dHRvbk5hdmlnYXRpb25JdGVt
LnZpc2liaWxpdHlQcmlvcml0eSA9IFdJLk5hdmlnYXRpb25JdGVtLlZpc2liaWxpdHlQcmlvcml0
eS5Mb3c7CisgICAgICAgIHRoaXMuX3Nob3dSdWxlcnNDaGFuZ2VkKCk7CisKICAgICAgICAgdGhp
cy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImRvbS10cmVlIik7CiAgICAgICAgIHRoaXMuZWxlbWVu
dC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX21vdXNlV2FzQ2xpY2tlZC5iaW5kKHRo
aXMpLCBmYWxzZSk7CiAKQEAgLTkzLDYgKzk5LDExIEBAIFdJLkRPTVRyZWVDb250ZW50VmlldyA9
IGNsYXNzIERPTVRyZWVDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRWaWV3CiAgICAgZ2V0
IG5hdmlnYXRpb25JdGVtcygpCiAgICAgewogICAgICAgICBsZXQgaXRlbXMgPSBbdGhpcy5fc2hv
d1ByaW50U3R5bGVzQnV0dG9uTmF2aWdhdGlvbkl0ZW0sIHRoaXMuX3Nob3dzU2hhZG93RE9NQnV0
dG9uTmF2aWdhdGlvbkl0ZW1dOworCisgICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyAxMS4z
KQorICAgICAgICBpZiAoUGFnZUFnZW50LnNldFNob3dSdWxlcnMpCisgICAgICAgICAgICBpdGVt
cy51bnNoaWZ0KHRoaXMuX3Nob3dSdWxlcnNCdXR0b25OYXZpZ2F0aW9uSXRlbSk7CisKICAgICAg
ICAgaWYgKCFXSS5zZXR0aW5ncy5leHBlcmltZW50YWxFbmFibGVMYXllcnNUYWIudmFsdWUpCiAg
ICAgICAgICAgICBpdGVtcy5wdXNoKHRoaXMuX2NvbXBvc2l0aW5nQm9yZGVyc0J1dHRvbk5hdmln
YXRpb25JdGVtLCB0aGlzLl9wYWludEZsYXNoaW5nQnV0dG9uTmF2aWdhdGlvbkl0ZW0pOwogCkBA
IC0xNTAsNiArMTYxLDcgQEAgV0kuRE9NVHJlZUNvbnRlbnRWaWV3ID0gY2xhc3MgRE9NVHJlZUNv
bnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFZpZXcKIAogICAgICAgICBXSS5zaG93UGFpbnRS
ZWN0c1NldHRpbmcucmVtb3ZlRXZlbnRMaXN0ZW5lcihudWxsLCBudWxsLCB0aGlzKTsKICAgICAg
ICAgV0kuc2hvd1NoYWRvd0RPTVNldHRpbmcucmVtb3ZlRXZlbnRMaXN0ZW5lcihudWxsLCBudWxs
LCB0aGlzKTsKKyAgICAgICAgV0kuc2V0dGluZ3Muc2hvd1J1bGVycy5yZW1vdmVFdmVudExpc3Rl
bmVyKG51bGwsIG51bGwsIHRoaXMpOwogICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVtb3Zl
RXZlbnRMaXN0ZW5lcihudWxsLCBudWxsLCB0aGlzKTsKICAgICAgICAgV0kuZG9tVHJlZU1hbmFn
ZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihudWxsLCBudWxsLCB0aGlzKTsKICAgICAgICAgV0kuZG9t
RGVidWdnZXJNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIobnVsbCwgbnVsbCwgdGhpcyk7CkBA
IC01NjcsNiArNTc5LDI0IEBAIFdJLkRPTVRyZWVDb250ZW50VmlldyA9IGNsYXNzIERPTVRyZWVD
b250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRWaWV3CiAgICAgICAgIHRoaXMuX3Nob3dQcmlu
dFN0eWxlc0NoYW5nZWQoKTsKICAgICB9CiAKKyAgICBfc2hvd1J1bGVyc0NoYW5nZWQoKQorICAg
IHsKKyAgICAgICAgdGhpcy5fc2hvd1J1bGVyc0J1dHRvbk5hdmlnYXRpb25JdGVtLmFjdGl2YXRl
ZCA9IFdJLnNldHRpbmdzLnNob3dSdWxlcnMudmFsdWU7CisKKyAgICAgICAgLy8gQ09NUEFUSUJJ
TElUWSAoaU9TIDExLjMpCisgICAgICAgIGlmICghUGFnZUFnZW50LnNldFNob3dSdWxlcnMpCisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgUGFnZUFnZW50LnNldFNob3dSdWxlcnModGhp
cy5fc2hvd1J1bGVyc0J1dHRvbk5hdmlnYXRpb25JdGVtLmFjdGl2YXRlZCk7CisgICAgfQorCisg
ICAgX3RvZ2dsZVNob3dSdWxlcnMoZXZlbnQpCisgICAgeworICAgICAgICBXSS5zZXR0aW5ncy5z
aG93UnVsZXJzLnZhbHVlID0gIVdJLnNldHRpbmdzLnNob3dSdWxlcnMudmFsdWU7CisKKyAgICAg
ICAgdGhpcy5fc2hvd1J1bGVyc0NoYW5nZWQoKTsKKyAgICB9CisKICAgICBfc2hvd1NlYXJjaEhp
Z2hsaWdodHMoKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fc2VhcmNoSWRl
bnRpZmllcik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>340544</attachid>
            <date>2018-05-16 17:46:41 -0700</date>
            <delta_ts>2018-05-16 18:37:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185644-20180516174640.patch</filename>
            <type>text/plain</type>
            <size>27288</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGRmNTMyOWM2NzhkMTRhZTU5NDUxMzAwNzExODI5
ZGI3NTFkYjcyZmYuLjIwMThiMmVkMTYwNTMxZGJlN2RkMWEzYzRiZTFhMjcxYjFmNmFmNjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE4LTA1LTE2ICBEZXZp
biBSb3Vzc28gIDx3ZWJraXRAZGV2aW5yb3Vzc28uY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IGNyZWF0ZSBhIG5hdmlnYXRpb24gaXRlbSBmb3IgdG9nZ2xpbmcgdGhlIG92ZXJsYXkgcnVs
ZXJzL2d1aWRlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTg1NjQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTWF0dCBCYWtlci4KKworICAgICAgICAq
IGluc3BlY3Rvci9wcm90b2NvbC9PdmVybGF5VHlwZXMuanNvbjoKKyAgICAgICAgKiBpbnNwZWN0
b3IvcHJvdG9jb2wvUGFnZS5qc29uOgorCiAyMDE4LTA1LTE1ICBZdXN1a2UgU3V6dWtpICA8dXRh
dGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIFtKU0NdIENoZWNrIFR5cGVJbmZvIGZpcnN0
IGJlZm9yZSBjYWxsaW5nIGdldENhbGxEYXRhIHdoZW4gd2Ugd291bGQgbGlrZSB0byBjaGVjayB3
aGV0aGVyIGdpdmVuIG9iamVjdCBpcyBhIGZ1bmN0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmFmMjZhNWU3
NmEwMjI4YjM5ZGU0ZDA4YTNjZGVkNTE5ZTE0ZDgxMS4uMjliODQwZTIzOTY0OWNiMTc5ZWE0Mzg4
YjBmMDMzN2E1MWY5YWQzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE4LTA1LTE2
ICBEZXZpbiBSb3Vzc28gIDx3ZWJraXRAZGV2aW5yb3Vzc28uY29tPgorCisgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IGNyZWF0ZSBhIG5hdmlnYXRpb24gaXRlbSBmb3IgdG9nZ2xpbmcgdGhlIG92ZXJs
YXkgcnVsZXJzL2d1aWRlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTg1NjQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTWF0dCBCYWtlci4KKworICAg
ICAgICBUaGlzIHBhdGNoIGlzIHB1cmVseSBhIHZpc3VhbCBjaGFuZ2UgZm9yIFdlYkluc3BlY3Rv
ciwgYW5kIGRvZXNuJ3QgYWZmZWN0IGFueXRoaW5nIGVsc2UuCisKKyAgICAgICAgKiBpbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBh
Z2VBZ2VudDo6c2V0U2hvd1J1bGVycyk6IEFkZGVkLgorCisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3Rvck92ZXJsYXkuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPdmVybGF5OjpzaG91bGRTaG93T3Zlcmxh
eSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPdmVybGF5Ojp1cGRhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yT3ZlcmxheTo6c2V0U2hvd1J1bGVycyk6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT3ZlcmxheTo6ZHJhd1J1bGVycyk6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT3ZlcmxheTo6cmVzZXQpOgorCisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3Rvck92ZXJsYXlQYWdlLmpzOgorICAgICAgICAoZHJhd05vZGVIaWdobGln
aHQpOgorICAgICAgICAoZHJhd1F1YWRIaWdobGlnaHQpOgorICAgICAgICAoZHJhd1J1bGVycyk6
IEFkZGVkLgorICAgICAgICAoX2RyYXdCb3VuZHMpOiBBZGRlZC4KKyAgICAgICAgKHJlc2V0KToK
KyAgICAgICAgKF9kcmF3UnVsZXJzKTogRGVsZXRlZC4KKwogMjAxOC0wNS0xNiAgQW50b2luZSBR
dWludCAgPGdyYW91dHNAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyMzA1NzQp
OiBJbnRlcnJ1cHRlZCBoYXJkd2FyZSB0cmFuc2l0aW9ucyBkb24ndCBiZWhhdmUgY29ycmVjdGx5
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCAxNzg0YTBjZDYzZGZlMGQ1N2EyZjk3M2IwMTRj
Y2I2MmZjOTZhMmZkLi5jNzM2ZTIwMGZkOGQ5OTQ4OTJhNDZhNDQzNWM2NzZhODU0ZmJkNWNiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxOC0wNS0xNiAgRGV2
aW4gUm91c3NvICA8d2Via2l0QGRldmlucm91c3NvLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBjcmVhdGUgYSBuYXZpZ2F0aW9uIGl0ZW0gZm9yIHRvZ2dsaW5nIHRoZSBvdmVybGF5IHJ1
bGVycy9ndWlkZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4NTY0NAorCisgICAgICAgIFJldmlld2VkIGJ5IE1hdHQgQmFrZXIuCisKKyAgICAgICAg
KiBMb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanM6CisgICAgICAgICog
VXNlckludGVyZmFjZS9CYXNlL1NldHRpbmcuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9W
aWV3cy9ET01UcmVlQ29udGVudFZpZXcuanM6CisgICAgICAgIChXSS5ET01UcmVlQ29udGVudFZp
ZXcpOgorICAgICAgICAoV0kuRE9NVHJlZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5nZXQgbmF2aWdh
dGlvbkl0ZW1zKToKKyAgICAgICAgKFdJLkRPTVRyZWVDb250ZW50Vmlldy5wcm90b3R5cGUuY2xv
c2VkKToKKyAgICAgICAgKFdJLkRPTVRyZWVDb250ZW50Vmlldy5wcm90b3R5cGUuX3Nob3dSdWxl
cnNDaGFuZ2VkKTogQWRkZWQuCisgICAgICAgIChXSS5ET01UcmVlQ29udGVudFZpZXcucHJvdG90
eXBlLl90b2dnbGVTaG93UnVsZXJzKTogQWRkZWQuCisKIDIwMTgtMDUtMTQgIE5pa2l0YSBWYXNp
bHlldiAgPG52YXNpbHlldkBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogQ2Fu
dmFzOiBSZW1vdmUgdW51c2VkIC0tdmFsdWUtdmlzdWFsLWhpZ2hsaWdodCBDU1MgdmFyaWFibGUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvT3Zl
cmxheVR5cGVzLmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29s
L092ZXJsYXlUeXBlcy5qc29uCmluZGV4IGU4ZTQ1Mzk3ODM5MmNlNjQyM2M2YzlhMDk0ZTA2ZTc1
YWE3YTg5NzguLjgxM2ZiNjA3OTZlMTc0ZjM4ODY5MGJlYzkzNGFiODQwMjA4MmIyZTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvT3ZlcmxheVR5
cGVzLmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9P
dmVybGF5VHlwZXMuanNvbgpAQCAtOTcsNyArOTcsOCBAQAogICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAicGFnZVNjYWxlRmFjdG9yIiwgInR5cGUiOiAibnVtYmVyIiB9LAogICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAicGFnZVpvb21GYWN0b3IiLCAidHlwZSI6ICJudW1iZXIiIH0sCiAgICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJzY3JvbGxPZmZzZXQiLCAiJHJlZiI6ICJQb2ludCIgfSwK
LSAgICAgICAgICAgICAgICB7ICJuYW1lIjogImNvbnRlbnRJbnNldCIsICIkcmVmIjogIlNpemUi
IH0KKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImNvbnRlbnRJbnNldCIsICIkcmVmIjogIlNp
emUiIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzaG93UnVsZXJzIiwgInR5cGUiOiAi
Ym9vbGVhbiIgfQogICAgICAgICAgICAgXQogICAgICAgICB9CiAgICAgXQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9QYWdlLmpzb24gYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL1BhZ2UuanNvbgppbmRleCA2ZThi
MDlmNTM1NWRhYjc0NDk2Mjk0Y2FlNTFlZjg3NThjN2E1MDhmLi44ZjIyYzUzMTVjYTQ1ZGI4ZDVh
M2YxYTk2NGZjMTJlYWU0MTM1Nzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3Byb3RvY29sL1BhZ2UuanNvbgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3Byb3RvY29sL1BhZ2UuanNvbgpAQCAtMTY1LDYgKzE2NSwxMyBAQAogICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAicmVzdWx0IiwgInR5cGUiOiAiYXJyYXkiLCAiaXRlbXMiOiB7
ICIkcmVmIjogIlNlYXJjaFJlc3VsdCIgfSwgImRlc2NyaXB0aW9uIjogIkxpc3Qgb2Ygc2VhcmNo
IHJlc3VsdHMuIiB9CiAgICAgICAgICAgICBdCiAgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAg
ICAgICAgICJuYW1lIjogInNldFNob3dSdWxlcnMiLAorICAgICAgICAgICAgImRlc2NyaXB0aW9u
IjogIlJlcXVlc3RzIHRoYXQgYmFja2VuZCBkcmF3IHJ1bGVycyBpbiB0aGUgaW5zcGVjdG9yIG92
ZXJsYXkiLAorICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJyZXN1bHQiLCAidHlwZSI6ICJib29sZWFuIiwgImRlc2NyaXB0aW9uIjogIlRydWUg
Zm9yIHNob3dpbmcgcnVsZXJzIiB9CisgICAgICAgICAgICBdCisgICAgICAgIH0sCiAgICAgICAg
IHsKICAgICAgICAgICAgICJuYW1lIjogInNldFNob3dQYWludFJlY3RzIiwKICAgICAgICAgICAg
ICJkZXNjcmlwdGlvbiI6ICJSZXF1ZXN0cyB0aGF0IGJhY2tlbmQgc2hvd3MgcGFpbnQgcmVjdGFu
Z2xlcyIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3Zl
cmxheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAK
aW5kZXggNmU2NjU1ZWQ2N2MxYzdjYzhiYzk1N2IwY2JlODE0ZTExZTU3ZmI3ZS4uZTVjODkwMjE0
YzljNDkwMzVkMDEzMzE0NjNiNmRmMWQwMDNlYmE5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcApAQCAtMjY4LDcgKzI2OCw3IEBAIHZvaWQgSW5z
cGVjdG9yT3ZlcmxheTo6c2V0SW5kaWNhdGluZyhib29sIGluZGljYXRpbmcpCiAKIGJvb2wgSW5z
cGVjdG9yT3ZlcmxheTo6c2hvdWxkU2hvd092ZXJsYXkoKSBjb25zdAogewotICAgIHJldHVybiBt
X2hpZ2hsaWdodE5vZGUgfHwgbV9oaWdobGlnaHROb2RlTGlzdCB8fCBtX2hpZ2hsaWdodFF1YWQg
fHwgbV9pbmRpY2F0aW5nIHx8IG1fc2hvd2luZ1BhaW50UmVjdHMgfHwgIW1fcGF1c2VkSW5EZWJ1
Z2dlck1lc3NhZ2UuaXNOdWxsKCk7CisgICAgcmV0dXJuIG1faGlnaGxpZ2h0Tm9kZSB8fCBtX2hp
Z2hsaWdodE5vZGVMaXN0IHx8IG1faGlnaGxpZ2h0UXVhZCB8fCBtX2luZGljYXRpbmcgfHwgbV9z
aG93aW5nUGFpbnRSZWN0cyB8fCBtX3Nob3dSdWxlcnMgfHwgIW1fcGF1c2VkSW5EZWJ1Z2dlck1l
c3NhZ2UuaXNOdWxsKCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6dXBkYXRlKCkKQEAg
LTI5Nyw2ICsyOTcsOSBAQCB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OnVwZGF0ZSgpCiAgICAgZHJh
d1BhdXNlZEluRGVidWdnZXJNZXNzYWdlKCk7CiAgICAgZHJhd1BhaW50UmVjdHMoKTsKIAorICAg
IGlmIChtX3Nob3dSdWxlcnMpCisgICAgICAgIGRyYXdSdWxlcnMoKTsKKwogICAgIC8vIFBvc2l0
aW9uIERPTSBlbGVtZW50cy4KICAgICBvdmVybGF5UGFnZSgpLT5tYWluRnJhbWUoKS5kb2N1bWVu
dCgpLT5yZXNvbHZlU3R5bGUoRG9jdW1lbnQ6OlJlc29sdmVTdHlsZVR5cGU6OlJlYnVpbGQpOwog
ICAgIGlmIChvdmVybGF5Vmlldy0+bmVlZHNMYXlvdXQoKSkKQEAgLTM5Miw2ICszOTUsMTYgQEAg
dm9pZCBJbnNwZWN0b3JPdmVybGF5OjpzaG93UGFpbnRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCkKICAgICBmb3JjZVBhaW50KCk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6c2V0U2hv
d1J1bGVycyhib29sIHNob3dSdWxlcnMpCit7CisgICAgaWYgKG1fc2hvd1J1bGVycyA9PSBzaG93
UnVsZXJzKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3Nob3dSdWxlcnMgPSBzaG93UnVsZXJz
OworCisgICAgdXBkYXRlKCk7Cit9CisKIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6dXBkYXRlUGFp
bnRSZWN0c1RpbWVyRmlyZWQoKQogewogICAgIE1vbm90b25pY1RpbWUgbm93ID0gTW9ub3Rvbmlj
VGltZTo6bm93KCk7CkBAIC00MTksNiArNDMyLDExIEBAIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6
ZHJhd1BhaW50UmVjdHMoKQogICAgIGV2YWx1YXRlSW5PdmVybGF5KEFTQ0lJTGl0ZXJhbCgidXBk
YXRlUGFpbnRSZWN0cyIpLCBXVEZNb3ZlKGFycmF5T2ZSZWN0cykpOwogfQogCit2b2lkIEluc3Bl
Y3Rvck92ZXJsYXk6OmRyYXdSdWxlcnMoKQoreworICAgIGV2YWx1YXRlSW5PdmVybGF5KEFTQ0lJ
TGl0ZXJhbCgiZHJhd1J1bGVycyIpKTsKK30KKwogc3RhdGljIFJlZlB0cjxKU09OOjpBcnJheU9m
PEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6RnJhZ21lbnRIaWdobGlnaHREYXRh
Pj4gYnVpbGRBcnJheUZvclJlbmRlcmVyRnJhZ21lbnRzKFJlbmRlck9iamVjdCogcmVuZGVyZXIs
IGNvbnN0IEhpZ2hsaWdodENvbmZpZyYgY29uZmlnKQogewogICAgIGF1dG8gYXJyYXlPZkZyYWdt
ZW50cyA9IEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpG
cmFnbWVudEhpZ2hsaWdodERhdGE+OjpjcmVhdGUoKTsKQEAgLTc0Miw2ICs3NjAsNyBAQCB2b2lk
IEluc3BlY3Rvck92ZXJsYXk6OnJlc2V0KGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSwgY29u
c3QgSW50UG9pbnQmIHNjcm9sbAogICAgICAgICAuc2V0UGFnZVpvb21GYWN0b3IobV9wYWdlLm1h
aW5GcmFtZSgpLnBhZ2Vab29tRmFjdG9yKCkpCiAgICAgICAgIC5zZXRTY3JvbGxPZmZzZXQoYnVp
bGRPYmplY3RGb3JQb2ludChzY3JvbGxPZmZzZXQpKQogICAgICAgICAuc2V0Q29udGVudEluc2V0
KGJ1aWxkT2JqZWN0Rm9yU2l6ZShJbnRTaXplKDAsIG1fcGFnZS5tYWluRnJhbWUoKS52aWV3KCkt
PnRvcENvbnRlbnRJbnNldChTY3JvbGxWaWV3OjpUb3BDb250ZW50SW5zZXRUeXBlOjpXZWJDb3Jl
T3JQbGF0Zm9ybUNvbnRlbnRJbnNldCkpKSkKKyAgICAgICAgLnNldFNob3dSdWxlcnMobV9zaG93
UnVsZXJzKQogICAgICAgICAucmVsZWFzZSgpOwogICAgIGV2YWx1YXRlSW5PdmVybGF5KCJyZXNl
dCIsIFdURk1vdmUoY29uZmlnT2JqZWN0KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvck92ZXJsYXkuaAppbmRleCAzOGJhODUwZjQ2ZTA5NTIyNzAyODE3ODU0Y2RiOWEw
YzhhZTc4NzlmLi5hMjRiZWNkZDI3MTI1YWIzYWEwZTI5NzFjMTcwOGYzZDNmNWNiZmVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmgKQEAgLTExNSw2ICsx
MTUsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBzZXRTaG93aW5nUGFpbnRSZWN0cyhib29s
KTsKICAgICB2b2lkIHNob3dQYWludFJlY3QoY29uc3QgRmxvYXRSZWN0Jik7CisKKyAgICB2b2lk
IHNldFNob3dSdWxlcnMoYm9vbCk7CiAgICAgCiAgICAgTm9kZSogaGlnaGxpZ2h0ZWROb2RlKCkg
Y29uc3Q7CiAKQEAgLTEzMiw2ICsxMzQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZHJhd1F1YWRI
aWdobGlnaHQoKTsKICAgICB2b2lkIGRyYXdQYXVzZWRJbkRlYnVnZ2VyTWVzc2FnZSgpOwogICAg
IHZvaWQgZHJhd1BhaW50UmVjdHMoKTsKKyAgICB2b2lkIGRyYXdSdWxlcnMoKTsKICAgICB2b2lk
IHVwZGF0ZVBhaW50UmVjdHNUaW1lckZpcmVkKCk7CiAKICAgICBQYWdlKiBvdmVybGF5UGFnZSgp
OwpAQCAtMTU3LDYgKzE2MCw3IEBAIHByaXZhdGU6CiAgICAgVGltZXIgbV9wYWludFJlY3RVcGRh
dGVUaW1lcjsKICAgICBib29sIG1faW5kaWNhdGluZyB7ZmFsc2V9OwogICAgIGJvb2wgbV9zaG93
aW5nUGFpbnRSZWN0cyB7ZmFsc2V9OworICAgIGJvb2wgbV9zaG93UnVsZXJzIHtmYWxzZX07CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheVBhZ2UuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yT3ZlcmxheVBhZ2UuanMKaW5kZXggZDkyMTVmZTQwMWVhNjk5MDU3ODhhMWY2
Yjc0MWZlZWY0YzM0NTBmOC4uZjQyYzM5NGY2ZGM0NmZmNTgxZGNkZTQ4YWM2MTVjZTNkODBhN2U2
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXlQ
YWdlLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5UGFn
ZS5qcwpAQCAtMSwzICsxLDQgQEAKK2NvbnN0IGJvdW5kc0NvbG9yID0gInJnYmEoMCwwLDAsMC40
KSI7CiBjb25zdCBsaWdodEdyaWRDb2xvciA9ICJyZ2JhKDAsMCwwLDAuMikiOwogY29uc3QgZGFy
a0dyaWRDb2xvciA9ICJyZ2JhKDAsMCwwLDAuNSkiOwogY29uc3QgdHJhbnNwYXJlbnRDb2xvciA9
ICJyZ2JhKDAsIDAsIDAsIDApIjsKQEAgLTYzLDcgKzY0LDggQEAgZnVuY3Rpb24gZHJhd05vZGVI
aWdobGlnaHQoYWxsSGlnaGxpZ2h0cykKICAgICAgICAgfSk7CiAgICAgfQogCi0gICAgX2RyYXdS
dWxlcnMoKTsKKyAgICBpZiAoREFUQS5zaG93UnVsZXJzKQorICAgICAgICBfZHJhd0JvdW5kcyhi
b3VuZHMpOwogCiAgICAgaWYgKGFsbEhpZ2hsaWdodHMubGVuZ3RoID09PSAxKSB7CiAgICAgICAg
IGZvciAobGV0IGZyYWdtZW50IG9mIGFsbEhpZ2hsaWdodHNbMF0uZnJhZ21lbnRzKQpAQCAtNzks
NyArODEsOCBAQCBmdW5jdGlvbiBkcmF3UXVhZEhpZ2hsaWdodChoaWdobGlnaHQpCiAgICAgICAg
IF9kcmF3T3V0bGluZWRRdWFkKGhpZ2hsaWdodC5xdWFkc1swXSwgaGlnaGxpZ2h0LmNvbnRlbnRD
b2xvciwgaGlnaGxpZ2h0LmNvbnRlbnRPdXRsaW5lQ29sb3IsIGJvdW5kcyk7CiAgICAgfSk7CiAK
LSAgICBfZHJhd1J1bGVycygpOworICAgIGlmIChEQVRBLnNob3dSdWxlcnMpCisgICAgICAgIF9k
cmF3Qm91bmRzKGJvdW5kcyk7CiB9CiAKIGZ1bmN0aW9uIHF1YWRFcXVhbHMocXVhZDEsIHF1YWQy
KQpAQCAtMTA2LDYgKzEwOSwxMjkgQEAgZnVuY3Rpb24gdXBkYXRlUGFpbnRSZWN0cyhwYWludFJl
Y3RMaXN0KQogICAgIGNvbnRleHQucmVzdG9yZSgpOwogfQogCitmdW5jdGlvbiBkcmF3UnVsZXJz
KCkKK3sKKyAgICBjb25zdCBncmlkTGFiZWxTaXplID0gMTM7CisgICAgY29uc3QgZ3JpZFNpemUg
PSAxNTsKKyAgICBjb25zdCBncmlkU3RlcEluY3JlbWVudCA9IDUwOworICAgIGNvbnN0IGdyaWRT
dGVwTGVuZ3RoID0gODsKKyAgICBjb25zdCBncmlkU3ViU3RlcEluY3JlbWVudCA9IDU7CisgICAg
Y29uc3QgZ3JpZFN1YlN0ZXBMZW5ndGggPSA1OworCisKKyAgICBsZXQgcGFnZUZhY3RvciA9IERB
VEEucGFnZVpvb21GYWN0b3IgKiBEQVRBLnBhZ2VTY2FsZUZhY3RvcjsKKyAgICBsZXQgc2Nyb2xs
WCA9IERBVEEuc2Nyb2xsT2Zmc2V0LnggKiBEQVRBLnBhZ2VTY2FsZUZhY3RvcjsKKyAgICBsZXQg
c2Nyb2xsWSA9IERBVEEuc2Nyb2xsT2Zmc2V0LnkgKiBEQVRBLnBhZ2VTY2FsZUZhY3RvcjsKKwor
ICAgIGZ1bmN0aW9uIHpvb20odmFsdWUpIHsKKyAgICAgICAgcmV0dXJuIHZhbHVlICogcGFnZUZh
Y3RvcjsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB1bnpvb20odmFsdWUpIHsKKyAgICAgICAgcmV0
dXJuIHZhbHVlIC8gcGFnZUZhY3RvcjsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBtdWx0aXBsZUJl
bG93KHZhbHVlLCBzdGVwKSB7CisgICAgICAgIHJldHVybiB2YWx1ZSAtICh2YWx1ZSAlIHN0ZXAp
OworICAgIH0KKworICAgIGxldCB3aWR0aCA9IERBVEEudmlld3BvcnRTaXplLndpZHRoIC8gcGFn
ZUZhY3RvcjsKKyAgICBsZXQgaGVpZ2h0ID0gREFUQS52aWV3cG9ydFNpemUuaGVpZ2h0IC8gcGFn
ZUZhY3RvcjsKKyAgICBsZXQgbWluWCA9IHVuem9vbShzY3JvbGxYKTsKKyAgICBsZXQgbWluWSA9
IHVuem9vbShzY3JvbGxZKTsKKyAgICBsZXQgbWF4WCA9IG1pblggKyB3aWR0aDsKKyAgICBsZXQg
bWF4WSA9IG1pblkgKyBoZWlnaHQ7CisKKyAgICAvLyBEcmF3IGJhY2tncm91bmRzCisgICAgX2lz
b2xhdGVBY3Rpb25zKCgpID0+IHsKKyAgICAgICAgbGV0IG9mZnNldFggPSBEQVRBLmNvbnRlbnRJ
bnNldC53aWR0aCArIGdyaWRTaXplOworICAgICAgICBsZXQgb2Zmc2V0WSA9IERBVEEuY29udGVu
dEluc2V0LmhlaWdodCArIGdyaWRTaXplOworCisgICAgICAgIGNvbnRleHQuZmlsbFN0eWxlID0g
Z3JpZEJhY2tncm91bmRDb2xvcjsKKyAgICAgICAgY29udGV4dC5maWxsUmVjdChEQVRBLmNvbnRl
bnRJbnNldC53aWR0aCwgREFUQS5jb250ZW50SW5zZXQuaGVpZ2h0LCBncmlkU2l6ZSwgZ3JpZFNp
emUpOworICAgICAgICBjb250ZXh0LmZpbGxSZWN0KG9mZnNldFgsIERBVEEuY29udGVudEluc2V0
LmhlaWdodCwgem9vbSh3aWR0aCkgLSBvZmZzZXRYLCBncmlkU2l6ZSk7CisgICAgICAgIGNvbnRl
eHQuZmlsbFJlY3QoREFUQS5jb250ZW50SW5zZXQud2lkdGgsIG9mZnNldFksIGdyaWRTaXplLCB6
b29tKGhlaWdodCkgLSBvZmZzZXRZKTsKKyAgICB9KTsKKworICAgIC8vIFJ1bGVyIHN0eWxlcwor
ICAgIF9pc29sYXRlQWN0aW9ucygoKSA9PiB7CisgICAgICAgIGNvbnRleHQubGluZVdpZHRoID0g
MTsKKyAgICAgICAgY29udGV4dC5maWxsU3R5bGUgPSBkYXJrR3JpZENvbG9yOworCisgICAgICAg
IC8vIERyYXcgbGFiZWxzCisgICAgICAgIF9pc29sYXRlQWN0aW9ucygoKSA9PiB7CisgICAgICAg
ICAgICBjb250ZXh0LnRyYW5zbGF0ZShEQVRBLmNvbnRlbnRJbnNldC53aWR0aCAtIHNjcm9sbFgs
IERBVEEuY29udGVudEluc2V0LmhlaWdodCAtIHNjcm9sbFkpOworCisgICAgICAgICAgICBmb3Ig
KGxldCB4ID0gbXVsdGlwbGVCZWxvdyhtaW5YLCBncmlkU3RlcEluY3JlbWVudCAqIDIpOyB4IDwg
bWF4WDsgeCArPSBncmlkU3RlcEluY3JlbWVudCAqIDIpIHsKKyAgICAgICAgICAgICAgICBpZiAo
IXggJiYgIXNjcm9sbFgpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAg
ICAgICAgICAgX2lzb2xhdGVBY3Rpb25zKCgpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgY29u
dGV4dC50cmFuc2xhdGUoem9vbSh4KSArIDAuNSwgc2Nyb2xsWSk7CisgICAgICAgICAgICAgICAg
ICAgIGNvbnRleHQuZmlsbFRleHQoeCwgMiwgZ3JpZExhYmVsU2l6ZSk7CisgICAgICAgICAgICAg
ICAgfSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZvciAobGV0IHkgPSBtdWx0aXBs
ZUJlbG93KG1pblksIGdyaWRTdGVwSW5jcmVtZW50ICogMik7IHkgPCBtYXhZOyB5ICs9IGdyaWRT
dGVwSW5jcmVtZW50ICogMikgeworICAgICAgICAgICAgICAgIGlmICgheSAmJiAhc2Nyb2xsWSkK
KyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgICAgICBfaXNvbGF0
ZUFjdGlvbnMoKCkgPT4geworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZShz
Y3JvbGxYLCB6b29tKHkpICsgMC41KTsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC5yb3Rh
dGUoLU1hdGguUEkgLyAyKTsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC5maWxsVGV4dCh5
LCAyLCBncmlkTGFiZWxTaXplKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfSk7CisKKyAgICAgICAgLy8gRHJhdyBob3Jpem9udGFsIGdyaWQKKyAgICAgICAg
X2lzb2xhdGVBY3Rpb25zKCgpID0+IHsKKyAgICAgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKERB
VEEuY29udGVudEluc2V0LndpZHRoIC0gc2Nyb2xsWCArIDAuNSwgREFUQS5jb250ZW50SW5zZXQu
aGVpZ2h0IC0gc2Nyb2xsWSk7CisKKyAgICAgICAgICAgIGZvciAobGV0IHggPSBtdWx0aXBsZUJl
bG93KG1pblgsIGdyaWRTdWJTdGVwSW5jcmVtZW50KTsgeCA8IG1heFg7IHggKz0gZ3JpZFN1YlN0
ZXBJbmNyZW1lbnQpIHsKKyAgICAgICAgICAgICAgICBpZiAoIXggJiYgIXNjcm9sbFgpCisgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICAgICAgY29udGV4dC5iZWdp
blBhdGgoKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0Lm1vdmVUbyh6b29tKHgpLCBzY3JvbGxZ
KTsKKworICAgICAgICAgICAgICAgIGlmICh4ICUgZ3JpZFN0ZXBJbmNyZW1lbnQpIHsKKyAgICAg
ICAgICAgICAgICAgICAgY29udGV4dC5zdHJva2VTdHlsZSA9IGxpZ2h0R3JpZENvbG9yOworICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0LmxpbmVUbyh6b29tKHgpLCBzY3JvbGxZICsgZ3JpZFN1
YlN0ZXBMZW5ndGgpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
ICAgIGNvbnRleHQuc3Ryb2tlU3R5bGUgPSBkYXJrR3JpZENvbG9yOworICAgICAgICAgICAgICAg
ICAgICBjb250ZXh0LmxpbmVUbyh6b29tKHgpLCBzY3JvbGxZICsgKCh4ICUgKGdyaWRTdGVwSW5j
cmVtZW50ICogMikpID8gZ3JpZFN1YlN0ZXBMZW5ndGggOiBncmlkU3RlcExlbmd0aCkpOworICAg
ICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGNvbnRleHQuc3Ryb2tlKCk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0pOworCisgICAgICAgIC8vIERyYXcgdmVydGljYWwgZ3JpZAor
ICAgICAgICBfaXNvbGF0ZUFjdGlvbnMoKCkgPT4geworICAgICAgICAgICAgY29udGV4dC50cmFu
c2xhdGUoREFUQS5jb250ZW50SW5zZXQud2lkdGggLSBzY3JvbGxYLCBEQVRBLmNvbnRlbnRJbnNl
dC5oZWlnaHQgLSBzY3JvbGxZICsgMC41KTsKKworICAgICAgICAgICAgZm9yIChsZXQgeSA9IG11
bHRpcGxlQmVsb3cobWluWSwgZ3JpZFN1YlN0ZXBJbmNyZW1lbnQpOyB5IDwgbWF4WTsgeSArPSBn
cmlkU3ViU3RlcEluY3JlbWVudCkgeworICAgICAgICAgICAgICAgIGlmICgheSAmJiAhc2Nyb2xs
WSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgICAgICBjb250
ZXh0LmJlZ2luUGF0aCgpOworICAgICAgICAgICAgICAgIGNvbnRleHQubW92ZVRvKHNjcm9sbFgs
IHpvb20oeSkpOworCisgICAgICAgICAgICAgICAgaWYgKHkgJSBncmlkU3RlcEluY3JlbWVudCkg
eworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LnN0cm9rZVN0eWxlID0gbGlnaHRHcmlkQ29s
b3I7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQubGluZVRvKHNjcm9sbFggKyBncmlkU3Vi
U3RlcExlbmd0aCwgem9vbSh5KSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAgICAgY29udGV4dC5zdHJva2VTdHlsZSA9IGRhcmtHcmlkQ29sb3I7CisgICAgICAg
ICAgICAgICAgICAgIGNvbnRleHQubGluZVRvKHNjcm9sbFggKyAoKHkgJSAoZ3JpZFN0ZXBJbmNy
ZW1lbnQgKiAyKSkgPyBncmlkU3ViU3RlcExlbmd0aCA6IGdyaWRTdGVwTGVuZ3RoKSwgem9vbSh5
KSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgY29udGV4dC5zdHJva2Uo
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKIGZ1bmN0aW9uIHJl
c2V0KHBheWxvYWQpCiB7CiAgICAgREFUQS52aWV3cG9ydFNpemUgPSBwYXlsb2FkLnZpZXdwb3J0
U2l6ZTsKQEAgLTExNCw2ICsyNDAsNyBAQCBmdW5jdGlvbiByZXNldChwYXlsb2FkKQogICAgIERB
VEEucGFnZVpvb21GYWN0b3IgPSBwYXlsb2FkLnBhZ2Vab29tRmFjdG9yOwogICAgIERBVEEuc2Ny
b2xsT2Zmc2V0ID0gcGF5bG9hZC5zY3JvbGxPZmZzZXQ7CiAgICAgREFUQS5jb250ZW50SW5zZXQg
PSBwYXlsb2FkLmNvbnRlbnRJbnNldDsKKyAgICBEQVRBLnNob3dSdWxlcnMgPSBwYXlsb2FkLnNo
b3dSdWxlcnM7CiAKICAgICB3aW5kb3cuY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImNhbnZhcyIpOwogICAgIHdpbmRvdy5wYWludFJlY3RzQ2FudmFzID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInBhaW50cmVjdHMtY2FudmFzIik7CkBAIC0yODYsNiArNDEzLDM2IEBAIGZ1bmN0
aW9uIF9kcmF3T3V0bGluZWRRdWFkV2l0aENsaXAocXVhZCwgY2xpcFF1YWQsIGZpbGxDb2xvciwg
Ym91bmRzKQogICAgIH0pOwogfQogCitmdW5jdGlvbiBfZHJhd0JvdW5kcyhib3VuZHMpCit7Cisg
ICAgX2lzb2xhdGVBY3Rpb25zKCgpID0+IHsKKyAgICAgICAgbGV0IHN0YXJ0WCA9IERBVEEuY29u
dGVudEluc2V0LndpZHRoOworICAgICAgICBsZXQgc3RhcnRZID0gREFUQS5jb250ZW50SW5zZXQu
aGVpZ2h0OworCisgICAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7CisKKyAgICAgICAgaWYgKGJv
dW5kcy5taW5ZIC0gc3RhcnRZID4gMCkgeworICAgICAgICAgICAgY29udGV4dC5tb3ZlVG8oYm91
bmRzLm1pblgsIGJvdW5kcy5taW5ZKTsKKyAgICAgICAgICAgIGNvbnRleHQubGluZVRvKGJvdW5k
cy5taW5YLCBzdGFydFkpOworCisgICAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhib3VuZHMubWF4
WCwgYm91bmRzLm1pblkpOworICAgICAgICAgICAgY29udGV4dC5saW5lVG8oYm91bmRzLm1heFgs
IHN0YXJ0WSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoYm91bmRzLm1pblggLSBzdGFydFgg
PiAwKSB7CisgICAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhib3VuZHMubWluWCwgYm91bmRzLm1p
blkpOworICAgICAgICAgICAgY29udGV4dC5saW5lVG8oc3RhcnRYLCBib3VuZHMubWluWSk7CisK
KyAgICAgICAgICAgIGNvbnRleHQubW92ZVRvKGJvdW5kcy5taW5YLCBib3VuZHMubWF4WSk7Cisg
ICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhzdGFydFgsIGJvdW5kcy5tYXhZKTsKKyAgICAgICAg
fQorCisgICAgICAgIGNvbnRleHQubGluZVdpZHRoID0gMTsKKyAgICAgICAgY29udGV4dC5zdHJv
a2VTdHlsZSA9IGJvdW5kc0NvbG9yOworICAgICAgICBjb250ZXh0LnN0cm9rZSgpOworICAgIH0p
OworfQorCiBmdW5jdGlvbiBfY3JlYXRlRWxlbWVudFRpdGxlKGVsZW1lbnREYXRhKQogewogICAg
IGxldCBidWlsZGVyID0gbmV3IERPTUJ1aWxkZXIoImRpdiIsICJlbGVtZW50LXRpdGxlIik7CkBA
IC00NDIsMTI4ICs1OTksNiBAQCBmdW5jdGlvbiBoaWRlUGFnZUluZGljYXRpb24oKQogICAgIGRv
Y3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZSgiaW5kaWNhdGUiKTsKIH0KIAotZnVuY3Rpb24g
X2RyYXdSdWxlcnMob3B0aW9ucyA9IHt9KQotewotICAgIGNvbnN0IGdyaWRMYWJlbFNpemUgPSAx
MzsKLSAgICBjb25zdCBncmlkU2l6ZSA9IDE1OwotICAgIGNvbnN0IGdyaWRTdGVwSW5jcmVtZW50
ID0gNTA7Ci0gICAgY29uc3QgZ3JpZFN0ZXBMZW5ndGggPSA4OwotICAgIGNvbnN0IGdyaWRTdWJT
dGVwSW5jcmVtZW50ID0gNTsKLSAgICBjb25zdCBncmlkU3ViU3RlcExlbmd0aCA9IDU7Ci0KLSAg
ICBsZXQgcGFnZUZhY3RvciA9IERBVEEucGFnZVpvb21GYWN0b3IgKiBEQVRBLnBhZ2VTY2FsZUZh
Y3RvcjsKLSAgICBsZXQgc2Nyb2xsWCA9IERBVEEuc2Nyb2xsT2Zmc2V0LnggKiBEQVRBLnBhZ2VT
Y2FsZUZhY3RvcjsKLSAgICBsZXQgc2Nyb2xsWSA9IERBVEEuc2Nyb2xsT2Zmc2V0LnkgKiBEQVRB
LnBhZ2VTY2FsZUZhY3RvcjsKLQotICAgIGZ1bmN0aW9uIHpvb20odmFsdWUpIHsKLSAgICAgICAg
cmV0dXJuIHZhbHVlICogcGFnZUZhY3RvcjsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiB1bnpvb20o
dmFsdWUpIHsKLSAgICAgICAgcmV0dXJuIHZhbHVlIC8gcGFnZUZhY3RvcjsKLSAgICB9Ci0KLSAg
ICBmdW5jdGlvbiBtdWx0aXBsZUJlbG93KHZhbHVlLCBzdGVwKSB7Ci0gICAgICAgIHJldHVybiB2
YWx1ZSAtICh2YWx1ZSAlIHN0ZXApOwotICAgIH0KLQotICAgIGxldCB3aWR0aCA9IERBVEEudmll
d3BvcnRTaXplLndpZHRoIC8gcGFnZUZhY3RvcjsKLSAgICBsZXQgaGVpZ2h0ID0gREFUQS52aWV3
cG9ydFNpemUuaGVpZ2h0IC8gcGFnZUZhY3RvcjsKLSAgICBsZXQgbWluWCA9IHVuem9vbShzY3Jv
bGxYKTsKLSAgICBsZXQgbWluWSA9IHVuem9vbShzY3JvbGxZKTsKLSAgICBsZXQgbWF4WCA9IG1p
blggKyB3aWR0aDsKLSAgICBsZXQgbWF4WSA9IG1pblkgKyBoZWlnaHQ7Ci0KLSAgICAvLyBEcmF3
IGJhY2tncm91bmRzCi0gICAgX2lzb2xhdGVBY3Rpb25zKCgpID0+IHsKLSAgICAgICAgbGV0IG9m
ZnNldFggPSBEQVRBLmNvbnRlbnRJbnNldC53aWR0aCArIGdyaWRTaXplOwotICAgICAgICBsZXQg
b2Zmc2V0WSA9IERBVEEuY29udGVudEluc2V0LmhlaWdodCArIGdyaWRTaXplOwotCi0gICAgICAg
IGNvbnRleHQuZmlsbFN0eWxlID0gZ3JpZEJhY2tncm91bmRDb2xvcjsKLSAgICAgICAgY29udGV4
dC5maWxsUmVjdChEQVRBLmNvbnRlbnRJbnNldC53aWR0aCwgREFUQS5jb250ZW50SW5zZXQuaGVp
Z2h0LCBncmlkU2l6ZSwgZ3JpZFNpemUpOwotICAgICAgICBjb250ZXh0LmZpbGxSZWN0KG9mZnNl
dFgsIERBVEEuY29udGVudEluc2V0LmhlaWdodCwgem9vbSh3aWR0aCkgLSBvZmZzZXRYLCBncmlk
U2l6ZSk7Ci0gICAgICAgIGNvbnRleHQuZmlsbFJlY3QoREFUQS5jb250ZW50SW5zZXQud2lkdGgs
IG9mZnNldFksIGdyaWRTaXplLCB6b29tKGhlaWdodCkgLSBvZmZzZXRZKTsKLSAgICB9KTsKLQot
ICAgIC8vIFJ1bGVyIHN0eWxlcwotICAgIF9pc29sYXRlQWN0aW9ucygoKSA9PiB7Ci0gICAgICAg
IGNvbnRleHQubGluZVdpZHRoID0gMTsKLSAgICAgICAgY29udGV4dC5maWxsU3R5bGUgPSBkYXJr
R3JpZENvbG9yOwotCi0gICAgICAgIC8vIERyYXcgbGFiZWxzCi0gICAgICAgIF9pc29sYXRlQWN0
aW9ucygoKSA9PiB7Ci0gICAgICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZShEQVRBLmNvbnRlbnRJ
bnNldC53aWR0aCAtIHNjcm9sbFgsIERBVEEuY29udGVudEluc2V0LmhlaWdodCAtIHNjcm9sbFkp
OwotCi0gICAgICAgICAgICBmb3IgKGxldCB4ID0gbXVsdGlwbGVCZWxvdyhtaW5YLCBncmlkU3Rl
cEluY3JlbWVudCAqIDIpOyB4IDwgbWF4WDsgeCArPSBncmlkU3RlcEluY3JlbWVudCAqIDIpIHsK
LSAgICAgICAgICAgICAgICBpZiAoIXggJiYgIXNjcm9sbFgpCi0gICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwotCi0gICAgICAgICAgICAgICAgX2lzb2xhdGVBY3Rpb25zKCgpID0+IHsKLSAg
ICAgICAgICAgICAgICAgICAgY29udGV4dC50cmFuc2xhdGUoem9vbSh4KSArIDAuNSwgc2Nyb2xs
WSk7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZmlsbFRleHQoeCwgMiwgZ3JpZExhYmVs
U2l6ZSk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
IGZvciAobGV0IHkgPSBtdWx0aXBsZUJlbG93KG1pblksIGdyaWRTdGVwSW5jcmVtZW50ICogMik7
IHkgPCBtYXhZOyB5ICs9IGdyaWRTdGVwSW5jcmVtZW50ICogMikgewotICAgICAgICAgICAgICAg
IGlmICgheSAmJiAhc2Nyb2xsWSkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAg
ICAgICAgICAgICAgICBfaXNvbGF0ZUFjdGlvbnMoKCkgPT4gewotICAgICAgICAgICAgICAgICAg
ICBjb250ZXh0LnRyYW5zbGF0ZShzY3JvbGxYLCB6b29tKHkpICsgMC41KTsKLSAgICAgICAgICAg
ICAgICAgICAgY29udGV4dC5yb3RhdGUoLU1hdGguUEkgLyAyKTsKLSAgICAgICAgICAgICAgICAg
ICAgY29udGV4dC5maWxsVGV4dCh5LCAyLCBncmlkTGFiZWxTaXplKTsKLSAgICAgICAgICAgICAg
ICB9KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSk7Ci0KLSAgICAgICAgLy8gRHJhdyBob3Jp
em9udGFsIGdyaWQKLSAgICAgICAgX2lzb2xhdGVBY3Rpb25zKCgpID0+IHsKLSAgICAgICAgICAg
IGNvbnRleHQudHJhbnNsYXRlKERBVEEuY29udGVudEluc2V0LndpZHRoIC0gc2Nyb2xsWCArIDAu
NSwgREFUQS5jb250ZW50SW5zZXQuaGVpZ2h0IC0gc2Nyb2xsWSk7Ci0KLSAgICAgICAgICAgIGZv
ciAobGV0IHggPSBtdWx0aXBsZUJlbG93KG1pblgsIGdyaWRTdWJTdGVwSW5jcmVtZW50KTsgeCA8
IG1heFg7IHggKz0gZ3JpZFN1YlN0ZXBJbmNyZW1lbnQpIHsKLSAgICAgICAgICAgICAgICBpZiAo
IXggJiYgIXNjcm9sbFgpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAg
ICAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTsKLSAgICAgICAgICAgICAgICBjb250ZXh0Lm1v
dmVUbyh6b29tKHgpLCBzY3JvbGxZKTsKLQotICAgICAgICAgICAgICAgIGlmICh4ICUgZ3JpZFN0
ZXBJbmNyZW1lbnQpIHsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC5zdHJva2VTdHlsZSA9
IGxpZ2h0R3JpZENvbG9yOwotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmxpbmVUbyh6b29t
KHgpLCBzY3JvbGxZICsgZ3JpZFN1YlN0ZXBMZW5ndGgpOwotICAgICAgICAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuc3Ryb2tlU3R5bGUgPSBkYXJrR3JpZENv
bG9yOwotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmxpbmVUbyh6b29tKHgpLCBzY3JvbGxZ
ICsgKCh4ICUgKGdyaWRTdGVwSW5jcmVtZW50ICogMikpID8gZ3JpZFN1YlN0ZXBMZW5ndGggOiBn
cmlkU3RlcExlbmd0aCkpOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGNv
bnRleHQuc3Ryb2tlKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0pOwotCi0gICAgICAgIC8v
IERyYXcgdmVydGljYWwgZ3JpZAotICAgICAgICBfaXNvbGF0ZUFjdGlvbnMoKCkgPT4gewotICAg
ICAgICAgICAgY29udGV4dC50cmFuc2xhdGUoREFUQS5jb250ZW50SW5zZXQud2lkdGggLSBzY3Jv
bGxYLCBEQVRBLmNvbnRlbnRJbnNldC5oZWlnaHQgLSBzY3JvbGxZICsgMC41KTsKLQotICAgICAg
ICAgICAgZm9yIChsZXQgeSA9IG11bHRpcGxlQmVsb3cobWluWSwgZ3JpZFN1YlN0ZXBJbmNyZW1l
bnQpOyB5IDwgbWF4WTsgeSArPSBncmlkU3ViU3RlcEluY3JlbWVudCkgewotICAgICAgICAgICAg
ICAgIGlmICgheSAmJiAhc2Nyb2xsWSkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0K
LSAgICAgICAgICAgICAgICBjb250ZXh0LmJlZ2luUGF0aCgpOwotICAgICAgICAgICAgICAgIGNv
bnRleHQubW92ZVRvKHNjcm9sbFgsIHpvb20oeSkpOwotCi0gICAgICAgICAgICAgICAgaWYgKHkg
JSBncmlkU3RlcEluY3JlbWVudCkgewotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LnN0cm9r
ZVN0eWxlID0gbGlnaHRHcmlkQ29sb3I7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQubGlu
ZVRvKHNjcm9sbFggKyBncmlkU3ViU3RlcExlbmd0aCwgem9vbSh5KSk7Ci0gICAgICAgICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC5zdHJva2VTdHlsZSA9IGRh
cmtHcmlkQ29sb3I7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQubGluZVRvKHNjcm9sbFgg
KyAoKHkgJSAoZ3JpZFN0ZXBJbmNyZW1lbnQgKiAyKSkgPyBncmlkU3ViU3RlcExlbmd0aCA6IGdy
aWRTdGVwTGVuZ3RoKSwgem9vbSh5KSk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICAgICAgY29udGV4dC5zdHJva2UoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSk7Ci0gICAg
fSk7Ci19Ci0KIGZ1bmN0aW9uIHNldFBsYXRmb3JtKHBsYXRmb3JtKQogewogICAgIGRvY3VtZW50
LmJvZHkuY2xhc3NMaXN0LmFkZCgicGxhdGZvcm0tIiArIHBsYXRmb3JtKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApp
bmRleCBhZWU5ZjU4NTY5OWRiZmI4MGM2MjgzMTVhOWUyOWFkN2ZiMDg2ZDk3Li41OGI3YjZlNDQx
OTQ2ZmY4NDBjYmVjYjU3OTA2MWMzZTMwYmQyZGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC01NDIsNiAr
NTQyLDExIEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpzZWFyY2hJblJlc291cmNlcyhFcnJv
clN0cmluZyYsIGNvbnN0IFN0cmluZyYgdGV4dCwgY29uCiAgICAgICAgIG5ldHdvcmtBZ2VudC0+
c2VhcmNoT3RoZXJSZXF1ZXN0cyhyZWdleCwgcmVzdWx0KTsKIH0KIAordm9pZCBJbnNwZWN0b3JQ
YWdlQWdlbnQ6OnNldFNob3dSdWxlcnMoRXJyb3JTdHJpbmcmLCBib29sIHNob3dSdWxlcnMpCit7
CisgICAgbV9vdmVybGF5LT5zZXRTaG93UnVsZXJzKHNob3dSdWxlcnMpOworfQorCiB2b2lkIElu
c3BlY3RvclBhZ2VBZ2VudDo6c2V0U2hvd1BhaW50UmVjdHMoRXJyb3JTdHJpbmcmLCBib29sIHNo
b3cpCiB7CiAgICAgbV9zaG93UGFpbnRSZWN0cyA9IHNob3c7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaAppbmRleCAxMDI5NmIz
OGM3ZGIyYjllOWNlMTNjZDM4NGExMDhlOWZlOTA5YmQ3Li42NzA5ZjUyYmUwMzQzMmIyYzU1ZWI5
NDcxYmM0YzBkYjI1ZDA4NmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmgKQEAgLTk3LDYgKzk3LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgZ2V0UmVzb3VyY2VDb250ZW50KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBm
cmFtZUlkLCBjb25zdCBTdHJpbmcmIHVybCwgU3RyaW5nKiBjb250ZW50LCBib29sKiBiYXNlNjRF
bmNvZGVkKSBmaW5hbDsKICAgICB2b2lkIHNlYXJjaEluUmVzb3VyY2UoRXJyb3JTdHJpbmcmLCBj
b25zdCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHF1
ZXJ5LCBjb25zdCBib29sKiBvcHRpb25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIG9wdGlv
bmFsSXNSZWdleCwgY29uc3QgU3RyaW5nKiBvcHRpb25hbFJlcXVlc3RJZCwgUmVmUHRyPEpTT046
OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRjaD4+
JikgZmluYWw7CiAgICAgdm9pZCBzZWFyY2hJblJlc291cmNlcyhFcnJvclN0cmluZyYsIGNvbnN0
IFN0cmluZyYsIGNvbnN0IGJvb2wqIGNhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIGlzUmVnZXgs
IFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OlNlYXJjaFJl
c3VsdD4+JikgZmluYWw7CisgICAgdm9pZCBzZXRTaG93UnVsZXJzKEVycm9yU3RyaW5nJiwgYm9v
bCkgZmluYWw7CiAgICAgdm9pZCBzZXRTaG93UGFpbnRSZWN0cyhFcnJvclN0cmluZyYsIGJvb2wg
c2hvdykgZmluYWw7CiAgICAgdm9pZCBzZXRFbXVsYXRlZE1lZGlhKEVycm9yU3RyaW5nJiwgY29u
c3QgU3RyaW5nJikgZmluYWw7CiAgICAgdm9pZCBnZXRDb21wb3NpdGluZ0JvcmRlcnNWaXNpYmxl
KEVycm9yU3RyaW5nJiwgYm9vbCogb3V0X3BhcmFtKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3Mu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6
ZWRTdHJpbmdzLmpzCmluZGV4IDgwM2Q5ZDQxZTg1Y2I1Y2QyZTg0ZTY5NThkZDJlNzk0ZDA1MWYx
NmMuLjU2YjY5OWFlMjZiNDZjMzE1NTFkOWIyOWYwY2JmMzFhNzdlZmU2ZWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0
cmluZ3MuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4ubHBy
b2ovbG9jYWxpemVkU3RyaW5ncy5qcwpAQCAtNDgxLDYgKzQ4MSw3IEBAIGxvY2FsaXplZFN0cmlu
Z3NbIkhpZGUgQ29uc29sZSJdID0gIkhpZGUgQ29uc29sZSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJI
aWRlIENvbnNvbGUgKCVzKSJdID0gIkhpZGUgQ29uc29sZSAoJXMpIjsKIGxvY2FsaXplZFN0cmlu
Z3NbIkhpZGUgR3JpZCJdID0gIkhpZGUgR3JpZCI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJIaWRlIFBh
dGgiXSA9ICJIaWRlIFBhdGgiOworbG9jYWxpemVkU3RyaW5nc1siSGlkZSBSdWxlcnMiXSA9ICJI
aWRlIFJ1bGVycyI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJIaWRlIGNvbXBvc2l0aW5nIGJvcmRlcnMi
XSA9ICJIaWRlIGNvbXBvc2l0aW5nIGJvcmRlcnMiOwogbG9jYWxpemVkU3RyaW5nc1siSGlkZSBz
aGFkb3cgRE9NIG5vZGVzIl0gPSAiSGlkZSBzaGFkb3cgRE9NIG5vZGVzIjsKIGxvY2FsaXplZFN0
cmluZ3NbIkhpZGUgdGhlIGRldGFpbHMgc2lkZWJhciAoJXMpIl0gPSAiSGlkZSB0aGUgZGV0YWls
cyBzaWRlYmFyICglcykiOwpAQCAtODY4LDYgKzg2OSw3IEBAIGxvY2FsaXplZFN0cmluZ3NbIlNo
b3cgQ29uc29sZSB0YWIiXSA9ICJTaG93IENvbnNvbGUgdGFiIjsKIGxvY2FsaXplZFN0cmluZ3Nb
IlNob3cgR3JpZCJdID0gIlNob3cgR3JpZCI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJTaG93IFBhdGgi
XSA9ICJTaG93IFBhdGgiOwogbG9jYWxpemVkU3RyaW5nc1siU2hvdyBSZW1haW5pbmcgKCVkKSJd
ID0gIlNob3cgUmVtYWluaW5nICglZCkiOworbG9jYWxpemVkU3RyaW5nc1siU2hvdyBSdWxlcnMi
XSA9ICJTaG93IFJ1bGVycyI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJTaG93IFNjb3BlIENoYWluIG9u
IHBhdXNlIl0gPSAiU2hvdyBTY29wZSBDaGFpbiBvbiBwYXVzZSI7CiBsb2NhbGl6ZWRTdHJpbmdz
WyJTaG93IFNvdXJjZSJdID0gIlNob3cgU291cmNlIjsKIGxvY2FsaXplZFN0cmluZ3NbIlNob3cg
YWxsIGFjdGlvbnMiXSA9ICJTaG93IGFsbCBhY3Rpb25zIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvU2V0dGluZy5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvU2V0dGluZy5qcwppbmRleCAwOWE3M2JlMmVi
M2I1YTc1Yjk1MjYyMWYyZGNmMzQwN2MxOTBhMjE5Li4xZmJjMjUxMzBhZWYxMGExMTY5NGZhZGQ4
MTY4MmU4Y2VkZWUxY2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9CYXNlL1NldHRpbmcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvQmFzZS9TZXR0aW5nLmpzCkBAIC0xMjEsNiArMTIxLDcgQEAgV0kuc2V0dGluZ3Mg
PSB7CiAgICAgc2hvd0ltYWdlR3JpZDogbmV3IFdJLlNldHRpbmcoInNob3ctaW1hZ2UtZ3JpZCIs
IGZhbHNlKSwKICAgICBzaG93Q2FudmFzUGF0aDogbmV3IFdJLlNldHRpbmcoInNob3ctY2FudmFz
LXBhdGgiLCBmYWxzZSksCiAgICAgc2VsZWN0ZWROZXR3b3JrRGV0YWlsQ29udGVudFZpZXdJZGVu
dGlmaWVyOiBuZXcgV0kuU2V0dGluZygibmV0d29yay1kZXRhaWwtY29udGVudC12aWV3LWlkZW50
aWZpZXIiLCAicHJldmlldyIpLAorICAgIHNob3dSdWxlcnM6IG5ldyBXSS5TZXR0aW5nKCJzaG93
LXJ1bGVycyIsIGZhbHNlKSwKIAogICAgIC8vIEV4cGVyaW1lbnRhbAogICAgIGV4cGVyaW1lbnRh
bEVuYWJsZUxheWVyc1RhYjogbmV3IFdJLlNldHRpbmcoImV4cGVyaW1lbnRhbC1lbmFibGUtbGF5
ZXJzLXRhYiIsIGZhbHNlKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVDb250ZW50Vmlldy5qcwppbmRleCBhNjgw
OTg0ODE2NzU1ZDgyMjU4NmZjMTk3ZjM0MzZlYTc2MjVmYmNkLi44ZDk5ZmZjMDQ3MjNkNTBhNGZi
MzE5OGE2ZGMwZWQwYzQxZTExNzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZUNvbnRlbnRWaWV3LmpzCkBA
IC01NCw2ICs1NCwxMiBAQCBXSS5ET01UcmVlQ29udGVudFZpZXcgPSBjbGFzcyBET01UcmVlQ29u
dGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50VmlldwogICAgICAgICB0aGlzLl9zaG93UHJpbnRT
dHlsZXNCdXR0b25OYXZpZ2F0aW9uSXRlbS52aXNpYmlsaXR5UHJpb3JpdHkgPSBXSS5OYXZpZ2F0
aW9uSXRlbS5WaXNpYmlsaXR5UHJpb3JpdHkuTG93OwogICAgICAgICB0aGlzLl9zaG93UHJpbnRT
dHlsZXNDaGFuZ2VkKCk7CiAKKyAgICAgICAgV0kuc2V0dGluZ3Muc2hvd1J1bGVycy5hZGRFdmVu
dExpc3RlbmVyKFdJLlNldHRpbmcuRXZlbnQuQ2hhbmdlZCwgdGhpcy5fc2hvd1J1bGVyc0NoYW5n
ZWQsIHRoaXMpOworICAgICAgICB0aGlzLl9zaG93UnVsZXJzQnV0dG9uTmF2aWdhdGlvbkl0ZW0g
PSBuZXcgV0kuQWN0aXZhdGVCdXR0b25OYXZpZ2F0aW9uSXRlbSgic2hvdy1ydWxlcnMiLCBXSS5V
SVN0cmluZygiU2hvdyBSdWxlcnMiKSwgV0kuVUlTdHJpbmcoIkhpZGUgUnVsZXJzIiksICJJbWFn
ZXMvUnVsZXJzLnN2ZyIsIDE2LCAxNik7CisgICAgICAgIHRoaXMuX3Nob3dSdWxlcnNCdXR0b25O
YXZpZ2F0aW9uSXRlbS5hZGRFdmVudExpc3RlbmVyKFdJLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2
ZW50LkNsaWNrZWQsIHRoaXMuX3RvZ2dsZVNob3dSdWxlcnMsIHRoaXMpOworICAgICAgICB0aGlz
Ll9zaG93UnVsZXJzQnV0dG9uTmF2aWdhdGlvbkl0ZW0udmlzaWJpbGl0eVByaW9yaXR5ID0gV0ku
TmF2aWdhdGlvbkl0ZW0uVmlzaWJpbGl0eVByaW9yaXR5LkxvdzsKKyAgICAgICAgdGhpcy5fc2hv
d1J1bGVyc0NoYW5nZWQoKTsKKwogICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgi
ZG9tLXRyZWUiKTsKICAgICAgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNr
IiwgdGhpcy5fbW91c2VXYXNDbGlja2VkLmJpbmQodGhpcyksIGZhbHNlKTsKIApAQCAtOTMsNiAr
OTksMTEgQEAgV0kuRE9NVHJlZUNvbnRlbnRWaWV3ID0gY2xhc3MgRE9NVHJlZUNvbnRlbnRWaWV3
IGV4dGVuZHMgV0kuQ29udGVudFZpZXcKICAgICBnZXQgbmF2aWdhdGlvbkl0ZW1zKCkKICAgICB7
CiAgICAgICAgIGxldCBpdGVtcyA9IFt0aGlzLl9zaG93UHJpbnRTdHlsZXNCdXR0b25OYXZpZ2F0
aW9uSXRlbSwgdGhpcy5fc2hvd3NTaGFkb3dET01CdXR0b25OYXZpZ2F0aW9uSXRlbV07CisKKyAg
ICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDExLjMpCisgICAgICAgIGlmIChQYWdlQWdlbnQu
c2V0U2hvd1J1bGVycykKKyAgICAgICAgICAgIGl0ZW1zLnVuc2hpZnQodGhpcy5fc2hvd1J1bGVy
c0J1dHRvbk5hdmlnYXRpb25JdGVtKTsKKwogICAgICAgICBpZiAoIVdJLnNldHRpbmdzLmV4cGVy
aW1lbnRhbEVuYWJsZUxheWVyc1RhYi52YWx1ZSkKICAgICAgICAgICAgIGl0ZW1zLnB1c2godGhp
cy5fY29tcG9zaXRpbmdCb3JkZXJzQnV0dG9uTmF2aWdhdGlvbkl0ZW0sIHRoaXMuX3BhaW50Rmxh
c2hpbmdCdXR0b25OYXZpZ2F0aW9uSXRlbSk7CiAKQEAgLTE1MCw2ICsxNjEsNyBAQCBXSS5ET01U
cmVlQ29udGVudFZpZXcgPSBjbGFzcyBET01UcmVlQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250
ZW50VmlldwogCiAgICAgICAgIFdJLnNob3dQYWludFJlY3RzU2V0dGluZy5yZW1vdmVFdmVudExp
c3RlbmVyKG51bGwsIG51bGwsIHRoaXMpOwogICAgICAgICBXSS5zaG93U2hhZG93RE9NU2V0dGlu
Zy5yZW1vdmVFdmVudExpc3RlbmVyKG51bGwsIG51bGwsIHRoaXMpOworICAgICAgICBXSS5zZXR0
aW5ncy5zaG93UnVsZXJzLnJlbW92ZUV2ZW50TGlzdGVuZXIobnVsbCwgbnVsbCwgdGhpcyk7CiAg
ICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKG51bGwsIG51bGws
IHRoaXMpOwogICAgICAgICBXSS5kb21UcmVlTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKG51
bGwsIG51bGwsIHRoaXMpOwogICAgICAgICBXSS5kb21EZWJ1Z2dlck1hbmFnZXIucmVtb3ZlRXZl
bnRMaXN0ZW5lcihudWxsLCBudWxsLCB0aGlzKTsKQEAgLTU2Nyw2ICs1NzksMjQgQEAgV0kuRE9N
VHJlZUNvbnRlbnRWaWV3ID0gY2xhc3MgRE9NVHJlZUNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29u
dGVudFZpZXcKICAgICAgICAgdGhpcy5fc2hvd1ByaW50U3R5bGVzQ2hhbmdlZCgpOwogICAgIH0K
IAorICAgIF9zaG93UnVsZXJzQ2hhbmdlZCgpCisgICAgeworICAgICAgICB0aGlzLl9zaG93UnVs
ZXJzQnV0dG9uTmF2aWdhdGlvbkl0ZW0uYWN0aXZhdGVkID0gV0kuc2V0dGluZ3Muc2hvd1J1bGVy
cy52YWx1ZTsKKworICAgICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgMTEuMykKKyAgICAgICAg
aWYgKCFQYWdlQWdlbnQuc2V0U2hvd1J1bGVycykKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICBQYWdlQWdlbnQuc2V0U2hvd1J1bGVycyh0aGlzLl9zaG93UnVsZXJzQnV0dG9uTmF2aWdh
dGlvbkl0ZW0uYWN0aXZhdGVkKTsKKyAgICB9CisKKyAgICBfdG9nZ2xlU2hvd1J1bGVycyhldmVu
dCkKKyAgICB7CisgICAgICAgIFdJLnNldHRpbmdzLnNob3dSdWxlcnMudmFsdWUgPSAhV0kuc2V0
dGluZ3Muc2hvd1J1bGVycy52YWx1ZTsKKworICAgICAgICB0aGlzLl9zaG93UnVsZXJzQ2hhbmdl
ZCgpOworICAgIH0KKwogICAgIF9zaG93U2VhcmNoSGlnaGxpZ2h0cygpCiAgICAgewogICAgICAg
ICBjb25zb2xlLmFzc2VydCh0aGlzLl9zZWFyY2hJZGVudGlmaWVyKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>