<?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>175346</bug_id>
          
          <creation_ts>2017-08-08 15:02:39 -0700</creation_ts>
          <short_desc>Default passive touch event listeners on the root</short_desc>
          <delta_ts>2019-02-06 09:18:55 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=175869</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, WebExposed</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dean Jackson">dino</reporter>
          <assigned_to name="Dean Jackson">dino</assigned_to>
          <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>dave+webkit</cc>
    
    <cc>dbates</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>rbyers</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1336675</commentid>
    <comment_count>0</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2017-08-08 15:02:39 -0700</bug_when>
    <thetext>Interacting/scrolling pages on iOS is often a terrible experience because the page has poorly performing synchronous touch event handlers. This proposed intervention makes document-level listeners passive by default (meaning they can&apos;t call preventDefault to stop scrolling).

https://github.com/WICG/interventions/issues/35
https://docs.google.com/document/d/1II7oSIpd8pK91V5kEM3tDLKcIj398jOJn8Niqy6_loI/edit

https://github.com/whatwg/dom/issues/365</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1336676</commentid>
    <comment_count>1</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2017-08-08 15:03:00 -0700</bug_when>
    <thetext>&lt;rdar://problem/33164597&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337280</commentid>
    <comment_count>2</comment_count>
    <who name="Rick Byers">rbyers</who>
    <bug_when>2017-08-09 19:14:43 -0700</bug_when>
    <thetext>See also https://github.com/w3c/touch-events/issues/74

If WebKit ships the same behavior as Chromium then I will argue for updating the touch events spec to define it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337281</commentid>
    <comment_count>3</comment_count>
    <who name="Rick Byers">rbyers</who>
    <bug_when>2017-08-09 19:18:11 -0700</bug_when>
    <thetext>More details (and some of the debate) here: https://groups.google.com/a/chromium.org/d/msg/blink-dev/BW3qrkisqIs/v5Au-HVTAwAJ

In particular, note the detailed behavior description:
Touch Scroll blocking (touchstart, touchmove) event listeners are treated as passive=&quot;true&quot; if added to a root node (window, document, body) and if AddEventListenerOptions passive is not specified.

Are you planning on doing the same (window, document and body) or just &quot;document&quot;?

Also be sure not to apply this to &quot;touchend&quot; (just start/move).  Cancelling touchend is important for suppressing click events etc. (eg. sites relying on old fastclick libraries).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337284</commentid>
    <comment_count>4</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-08-09 19:38:47 -0700</bug_when>
    <thetext>We&apos;ll follow you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340777</commentid>
    <comment_count>5</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2017-08-21 15:01:55 -0700</bug_when>
    <thetext>*** Bug 164016 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341431</commentid>
    <comment_count>6</comment_count>
      <attachid>318847</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2017-08-22 20:00:32 -0700</bug_when>
    <thetext>Created attachment 318847
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341434</commentid>
    <comment_count>7</comment_count>
      <attachid>318849</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2017-08-22 20:11:11 -0700</bug_when>
    <thetext>Created attachment 318849
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341454</commentid>
    <comment_count>8</comment_count>
      <attachid>318849</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-08-22 22:08:01 -0700</bug_when>
    <thetext>Comment on attachment 318849
Patch

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

&gt; Source/WebCore/ChangeLog:12
&gt; +        now in the DOM specification:

This doesn&apos;t seem to be in the DOM spec yet.  It still has passive as having a default value of false.

&gt; Source/WebCore/ChangeLog:19
&gt; +        If the event listener explicitly defines &quot;passive&quot; to false in their
&gt; +        options dictionary, then the behaviour is overridden.

This sentence took me a while to figure out what you mean by &quot;the behavior&quot;.

&gt; Source/WebCore/dom/EventTarget.cpp:72
&gt; +    std::optional&lt;bool&gt; passive = options.passive;

You could use auto here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341456</commentid>
    <comment_count>9</comment_count>
      <attachid>318849</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-08-22 22:24:24 -0700</bug_when>
    <thetext>Comment on attachment 318849
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:19
&gt;&gt; +        options dictionary, then the behaviour is overridden.
&gt; 
&gt; This sentence took me a while to figure out what you mean by &quot;the behavior&quot;.

Yeah. Which behavior; the &quot;passive by default&quot;, or do you override the request for passive=false?

&gt; Source/WebCore/ChangeLog:24
&gt; +        NOTE: Any fallout from this bug should be collected in:
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=175869
&gt; +        Please do not revert this change just because a site is broken. We&apos;ll
&gt; +        gather the issues and see if we can evangelise or detect via code.

Seem weird to put this in the changelog.

&gt; Source/WebCore/dom/EventTarget.cpp:79
&gt; +        if (auto* node = toNode()) {
&gt; +            if (node-&gt;isDocumentNode() || node-&gt;document().documentElement() == node || node-&gt;document().body() == node)
&gt; +                passive = true;
&gt; +        } else if (toDOMWindow())
&gt; +            passive = true;

Maybe flip these around because the toDOMWindow check is cheaper than the node-related checks.

&gt; LayoutTests/fast/events/touch/ios/passive-by-default-on-document-and-window.html:98
&gt; +&lt;div style=&quot;height: 500vh&quot;&gt;
&gt; +    This is a tall element to make sure there is something to scroll.
&gt; +&lt;/div&gt;

Lame. Just style the body with height.

&gt; LayoutTests/fast/events/touch/ios/passive-by-default-overridden-on-document-and-window.html:98
&gt; +&lt;div style=&quot;height: 500vh&quot;&gt;
&gt; +    This is a tall element to make sure there is something to scroll.
&gt; +&lt;/div&gt;

Lame.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341495</commentid>
    <comment_count>10</comment_count>
      <attachid>318849</attachid>
    <who name="David Tapuska">dave+webkit</who>
    <bug_when>2017-08-23 03:37:27 -0700</bug_when>
    <thetext>Comment on attachment 318849
Patch

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

&gt; Source/WebCore/ChangeLog:15
&gt; +        https://docs.google.com/document/d/1II7oSIpd8pK91V5kEM3tDLKcIj398jOJn8Niqy6_loI/edit

Any devtools warnings? I know we generate them in chromium to help developers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341702</commentid>
    <comment_count>11</comment_count>
      <attachid>318849</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2017-08-23 12:15:32 -0700</bug_when>
    <thetext>Comment on attachment 318849
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:12
&gt;&gt; +        now in the DOM specification:
&gt; 
&gt; This doesn&apos;t seem to be in the DOM spec yet.  It still has passive as having a default value of false.

Fixed.

&gt;&gt; Source/WebCore/ChangeLog:15
&gt;&gt; +        https://docs.google.com/document/d/1II7oSIpd8pK91V5kEM3tDLKcIj398jOJn8Niqy6_loI/edit
&gt; 
&gt; Any devtools warnings? I know we generate them in chromium to help developers.

We&apos;ll do that in a separate bug.

&gt;&gt;&gt; Source/WebCore/ChangeLog:19
&gt;&gt;&gt; +        options dictionary, then the behaviour is overridden.
&gt;&gt; 
&gt;&gt; This sentence took me a while to figure out what you mean by &quot;the behavior&quot;.
&gt; 
&gt; Yeah. Which behavior; the &quot;passive by default&quot;, or do you override the request for passive=false?

I made this more clear - you get a non-passive listener.

&gt;&gt; Source/WebCore/ChangeLog:24
&gt;&gt; +        gather the issues and see if we can evangelise or detect via code.
&gt; 
&gt; Seem weird to put this in the changelog.

I want to make sure that, in 3 months time, when we autospade a regression, we know what to do with it.

&gt;&gt; Source/WebCore/dom/EventTarget.cpp:72
&gt;&gt; +    std::optional&lt;bool&gt; passive = options.passive;
&gt; 
&gt; You could use auto here.

Fixed.

&gt;&gt; Source/WebCore/dom/EventTarget.cpp:79
&gt;&gt; +            passive = true;
&gt; 
&gt; Maybe flip these around because the toDOMWindow check is cheaper than the node-related checks.

Fixed.

&gt;&gt; LayoutTests/fast/events/touch/ios/passive-by-default-on-document-and-window.html:98
&gt;&gt; +&lt;/div&gt;
&gt; 
&gt; Lame. Just style the body with height.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341707</commentid>
    <comment_count>12</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2017-08-23 12:23:22 -0700</bug_when>
    <thetext>Committed r221092: &lt;http://trac.webkit.org/changeset/221092&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1407364</commentid>
    <comment_count>13</comment_count>
    <who name="Rick Byers">rbyers</who>
    <bug_when>2018-03-19 08:12:53 -0700</bug_when>
    <thetext>See https://bugs.webkit.org/show_bug.cgi?id=182521 for discussion of the fall-out of shipping this without also shipping touch-action.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1503276</commentid>
    <comment_count>14</comment_count>
    <who name="Lucas Forschler">lforschler</who>
    <bug_when>2019-02-06 09:18:55 -0800</bug_when>
    <thetext>Mass move bugs into the DOM component.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318847</attachid>
            <date>2017-08-22 20:00:32 -0700</date>
            <delta_ts>2017-08-22 20:11:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175346-20170823130029.patch</filename>
            <type>text/plain</type>
            <size>18689</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwOTg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjAzNDBhMjA5NGFlMzg4
YmY3NGFhNzc1OTYxYjEyNGM2YmI5MWZjOC4uMTAzNjk3NzMwNTRiODI0ZjE2ZDI1ZGZiY2E3ZjI2
YmM4MTUzMmY5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDE3LTA4LTIyICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBEZWZhdWx0IHBhc3NpdmUgdG91
Y2ggZXZlbnQgbGlzdGVuZXJzIG9uIHRoZSByb290CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUzNDYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMz
MTY0NTk3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE1ha2UgYW55IHRvdWNoc3RhcnQgb3IgdG91Y2htb3ZlIGV2ZW50IGxpc3RlbmVycyBwYXNzaXZl
IGJ5IGRlZmF1bHQKKyAgICAgICAgaWYgdGhleSBhcmUgb24gdGhlIGRvY3VtZW50LCB3aW5kb3cs
IGJvZHkgb3IgZG9jdW1lbnQgZWxlbWVudCB0YXJnZXRzLgorICAgICAgICBUaGlzIGZvbGxvd3Mg
dGhlICJpbnRlcnZlbnRpb24iIGZpcnN0IGltcGxlbWVudGVkIGJ5IENocm9tZS9CbGluaywgYW5k
CisgICAgICAgIG5vdyBpbiB0aGUgRE9NIHNwZWNpZmljYXRpb246CisKKyAgICAgICAgaHR0cHM6
Ly9naXRodWIuY29tL1dJQ0cvaW50ZXJ2ZW50aW9ucy9pc3N1ZXMvMzUKKyAgICAgICAgaHR0cHM6
Ly9kb2NzLmdvb2dsZS5jb20vZG9jdW1lbnQvZC8xSUk3b1NJcGQ4cEs5MVY1a0VNM3RETEtjSWoz
OThqT0puOE5pcXk2X2xvSS9lZGl0CisgICAgICAgIGh0dHBzOi8vZ2l0aHViLmNvbS93aGF0d2cv
ZG9tL2lzc3Vlcy8zNjUKKworICAgICAgICBJZiB0aGUgZXZlbnQgbGlzdGVuZXIgZXhwbGljaXRs
eSBkZWZpbmVzICJwYXNzaXZlIiB0byBmYWxzZSBpbiB0aGVpcgorICAgICAgICBvcHRpb25zIGRp
Y3Rpb25hcnksIHRoZW4gdGhlIGJlaGF2aW91ciBpcyBvdmVycmlkZGVuLgorCisgICAgICAgIE5P
VEU6IEFueSBmYWxsb3V0IGZyb20gdGhpcyBidWcgc2hvdWxkIGJlIGNvbGxlY3RlZCBpbjoKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTg2OQorICAg
ICAgICBQbGVhc2UgZG8gbm90IHJldmVydCB0aGlzIGNoYW5nZSBqdXN0IGJlY2F1c2UgYSBzaXRl
IGlzIGJyb2tlbi4gV2UnbGwKKyAgICAgICAgZ2F0aGVyIHRoZSBpc3N1ZXMgYW5kIHNlZSBpZiB3
ZSBjYW4gZXZhbmdlbGlzZSBvciBkZXRlY3QgdmlhIGNvZGUuCisKKyAgICAgICAgVGVzdHM6IGZh
c3QvZXZlbnRzL3RvdWNoL2lvcy9wYXNzaXZlLWJ5LWRlZmF1bHQtb24tZG9jdW1lbnQtYW5kLXdp
bmRvdy5odG1sCisgICAgICAgICAgICAgICBmYXN0L2V2ZW50cy90b3VjaC9pb3MvcGFzc2l2ZS1i
eS1kZWZhdWx0LW92ZXJyaWRkZW4tb24tZG9jdW1lbnQtYW5kLXdpbmRvdy5odG1sCisKKyAgICAg
ICAgKiBkb20vRXZlbnROYW1lcy5oOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnROYW1lczo6aXNU
b3VjaFNjcm9sbEJsb2NraW5nRXZlbnRUeXBlIGNvbnN0KTogQWRkZWQgdGhpcyBoZWxwZXIKKyAg
ICAgICAgdG8gaWRlbnRpZnkgdGhlIHR5cGVzIG9mIHRvdWNoZXMgd2Ugd2FudCB0byBjaGVjayBm
b3IuCisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50VGFyZ2V0OjphZGRFdmVudExpc3RlbmVyKTogQ2hlY2sgZm9yIHRoZSBldmVudCBiZWluZyBv
bmUgb2YgdGhlIHRvdWNoLXR5cGVzCisgICAgICAgIHRoYXQgd2UgY2FyZSBhYm91dCwgYW5kIHRo
ZSB0YXJnZXQgYmVpbmcgb25lIG9mIHRoZSBOb2RlL1dpbmRvdyB0eXBlcyB3ZSBjYXJlIGFib3V0
LiBJZgorICAgICAgICBzbywgdGVsbCB0aGUgZXZlbnQgbGlzdGVuZXIgdG8gYmUgcGFzc2l2ZS4K
KyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXQuaDogVXNlIGFuIG9wdGlvbmFsIGZvciB0aGUgcGFz
c2l2ZSBtZW1iZXIuCisgICAgICAgIChXZWJDb3JlOjpFdmVudFRhcmdldDo6QWRkRXZlbnRMaXN0
ZW5lck9wdGlvbnM6OkFkZEV2ZW50TGlzdGVuZXJPcHRpb25zKToKKyAgICAgICAgKiBkb20vRXZl
bnRUYXJnZXQuaWRsOiBDaGFuZ2UgInBhc3NpdmUiIHRvIG5vdCBoYXZlIGEgZGVmYXVsdCB2YWx1
ZSwgc28gd2UKKyAgICAgICAgY2FuIGRldGVjdCBpZiBpdCB3YXMgZXhwbGljaXRseSBzZXQgdG8g
ZmFsc2UuCisKIDIwMTctMDgtMjEgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgog
CiAgICAgICAgIENsZWFudXAgVGV4dFBhaW50ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudE5hbWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCmluZGV4
IDI5ZmQyY2Q2OWM4YmIwZjM1MGVhMGE5ZTg2ZTk5NWU0M2FhYzEyODUuLjliZmIxZGRlOGQ3MWZm
YjBmODk3ODcyYjdkOTA1YTBkNDhlNGNhNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudE5hbWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaApAQCAt
MzI0LDYgKzMyNCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzV2hlZWxFdmVudFR5cGUoY29uc3Qg
QXRvbWljU3RyaW5nJiBldmVudFR5cGUpIGNvbnN0OwogICAgIGJvb2wgaXNHZXN0dXJlRXZlbnRU
eXBlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKSBjb25zdDsKICAgICBib29sIGlzVG91
Y2hFdmVudFR5cGUoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUpIGNvbnN0OworICAgIGJv
b2wgaXNUb3VjaFNjcm9sbEJsb2NraW5nRXZlbnRUeXBlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnRUeXBlKSBjb25zdDsKICNpZiBFTkFCTEUoR0FNRVBBRCkKICAgICBib29sIGlzR2FtZXBhZEV2
ZW50VHlwZShjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSkgY29uc3Q7CiAjZW5kaWYKQEAg
LTM1MCw2ICszNTEsMTIgQEAgaW5saW5lIGJvb2wgRXZlbnROYW1lczo6aXNHZXN0dXJlRXZlbnRU
eXBlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKSBjb25zdAogICAgIHJldHVybiBldmVu
dFR5cGUgPT0gZ2VzdHVyZXN0YXJ0RXZlbnQgfHwgZXZlbnRUeXBlID09IGdlc3R1cmVjaGFuZ2VF
dmVudCB8fCBldmVudFR5cGUgPT0gZ2VzdHVyZWVuZEV2ZW50OwogfQogCitpbmxpbmUgYm9vbCBF
dmVudE5hbWVzOjppc1RvdWNoU2Nyb2xsQmxvY2tpbmdFdmVudFR5cGUoY29uc3QgQXRvbWljU3Ry
aW5nJiBldmVudFR5cGUpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50VHlwZSA9PSB0b3VjaHN0
YXJ0RXZlbnQKKyAgICAgICAgfHwgZXZlbnRUeXBlID09IHRvdWNobW92ZUV2ZW50OworfQorCiBp
bmxpbmUgYm9vbCBFdmVudE5hbWVzOjppc1RvdWNoRXZlbnRUeXBlKGNvbnN0IEF0b21pY1N0cmlu
ZyYgZXZlbnRUeXBlKSBjb25zdAogewogICAgIHJldHVybiBldmVudFR5cGUgPT0gdG91Y2hzdGFy
dEV2ZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcAppbmRleCA2YTUyMzc0NWQxZjEyYjZk
Njk0M2M2M2EwYWIzNTVkYzhhYzM1MzBjLi5mY2Y2ZjQ4OTI4NDkwOWJhZjRkZTNmMWQyMmU3YWZk
NTM4NDIyMTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKQEAgLTM0LDYgKzM0LDcg
QEAKIAogI2luY2x1ZGUgIkRPTVdyYXBwZXJXb3JsZC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMu
aCIKKyNpbmNsdWRlICJIVE1MQm9keUVsZW1lbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJKU0V2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJO
b0V2ZW50RGlzcGF0Y2hBc3NlcnRpb24uaCIKQEAgLTY4LDkgKzY5LDE5IEBAIGJvb2wgRXZlbnRU
YXJnZXQ6OmlzTWVzc2FnZVBvcnQoKSBjb25zdAogCiBib29sIEV2ZW50VGFyZ2V0OjphZGRFdmVu
dExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5l
cj4mJiBsaXN0ZW5lciwgY29uc3QgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMmIG9wdGlvbnMpCiB7
CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBwYXNzaXZlID0gb3B0aW9ucy5wYXNzaXZlOworCisg
ICAgaWYgKCFwYXNzaXZlLmhhc192YWx1ZSgpICYmIGV2ZW50TmFtZXMoKS5pc1RvdWNoU2Nyb2xs
QmxvY2tpbmdFdmVudFR5cGUoZXZlbnRUeXBlKSkgeworICAgICAgICBpZiAoYXV0byogbm9kZSA9
IHRvTm9kZSgpKSB7CisgICAgICAgICAgICBpZiAobm9kZS0+aXNEb2N1bWVudE5vZGUoKSB8fCBu
b2RlLT5kb2N1bWVudCgpLmRvY3VtZW50RWxlbWVudCgpID09IG5vZGUgfHwgbm9kZS0+ZG9jdW1l
bnQoKS5ib2R5KCkgPT0gbm9kZSkKKyAgICAgICAgICAgICAgICBwYXNzaXZlID0gdHJ1ZTsKKyAg
ICAgICAgfSBlbHNlIGlmICh0b0RPTVdpbmRvdygpKQorICAgICAgICAgICAgcGFzc2l2ZSA9IHRy
dWU7CisgICAgfQorCiAgICAgYm9vbCBsaXN0ZW5lckNyZWF0ZWRGcm9tU2NyaXB0ID0gbGlzdGVu
ZXItPnR5cGUoKSA9PSBFdmVudExpc3RlbmVyOjpKU0V2ZW50TGlzdGVuZXJUeXBlICYmICFsaXN0
ZW5lci0+d2FzQ3JlYXRlZEZyb21NYXJrdXAoKTsKIAotICAgIGlmICghZW5zdXJlRXZlbnRUYXJn
ZXREYXRhKCkuZXZlbnRMaXN0ZW5lck1hcC5hZGQoZXZlbnRUeXBlLCBXVEZNb3ZlKGxpc3RlbmVy
KSwgeyBvcHRpb25zLmNhcHR1cmUsIG9wdGlvbnMucGFzc2l2ZSwgb3B0aW9ucy5vbmNlIH0pKQor
ICAgIGlmICghZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkuZXZlbnRMaXN0ZW5lck1hcC5hZGQoZXZl
bnRUeXBlLCBXVEZNb3ZlKGxpc3RlbmVyKSwgeyBvcHRpb25zLmNhcHR1cmUsIHBhc3NpdmUudmFs
dWVfb3IoZmFsc2UpLCBvcHRpb25zLm9uY2UgfSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIGlmIChsaXN0ZW5lckNyZWF0ZWRGcm9tU2NyaXB0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQu
aAppbmRleCA4OTJkNGI4MTJmZjIzM2FmOTNmZjZiOGU2MTM1ZTZjMmNhNjlhYWVjLi41MGNiNDdm
MWI0ZDkxYmEzMmJmMGM2OGNlNGY1ODRlMzg4ZDU1OTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnRUYXJnZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJn
ZXQuaApAQCAtODEsMTMgKzgxLDEzIEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgc3RydWN0IEFk
ZEV2ZW50TGlzdGVuZXJPcHRpb25zIDogTGlzdGVuZXJPcHRpb25zIHsKLSAgICAgICAgQWRkRXZl
bnRMaXN0ZW5lck9wdGlvbnMoYm9vbCBjYXB0dXJlID0gZmFsc2UsIGJvb2wgcGFzc2l2ZSA9IGZh
bHNlLCBib29sIG9uY2UgPSBmYWxzZSkKKyAgICAgICAgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMo
Ym9vbCBjYXB0dXJlID0gZmFsc2UsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gcGFzc2l2ZSA9IHN0ZDo6
bnVsbG9wdCwgYm9vbCBvbmNlID0gZmFsc2UpCiAgICAgICAgICAgICA6IExpc3RlbmVyT3B0aW9u
cyhjYXB0dXJlKQogICAgICAgICAgICAgLCBwYXNzaXZlKHBhc3NpdmUpCiAgICAgICAgICAgICAs
IG9uY2Uob25jZSkKICAgICAgICAgeyB9CiAKLSAgICAgICAgYm9vbCBwYXNzaXZlOworICAgICAg
ICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHBhc3NpdmU7CiAgICAgICAgIGJvb2wgb25jZTsKICAgICB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaWRsIGIvU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmlkbAppbmRleCAyYzkzODQ1MzNiYzZmZDRlN2Zk
Zjc0YjZiMDE5M2M5OWJkODYzNjg5Li4wZjkxZWYzMjRhNjZjMDJkYmIwMTlhZDU0MjE2YWExM2I2
YjJiMTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaWRsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5pZGwKQEAgLTM2LDYgKzM2LDYgQEAg
ZGljdGlvbmFyeSBFdmVudExpc3RlbmVyT3B0aW9ucyB7CiB9OwogCiBkaWN0aW9uYXJ5IEFkZEV2
ZW50TGlzdGVuZXJPcHRpb25zIDogRXZlbnRMaXN0ZW5lck9wdGlvbnMgewotICAgIGJvb2xlYW4g
cGFzc2l2ZSA9IGZhbHNlOworICAgIGJvb2xlYW4gcGFzc2l2ZTsKICAgICBib29sZWFuIG9uY2Ug
PSBmYWxzZTsKIH07CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggYzk3NTkzMGU3Y2I1NzliZDU1ZmE0ZDE3ZjBmYmU5NzgwOWMx
YmFkNC4uOWM1YTI1ZmI3MjliNDVlOWU1NjM1MTg0NDAyZDM0NGYwZGQ5MzU2ZCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE2IEBACisyMDE3LTA4LTIyICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4K
KworICAgICAgICBEZWZhdWx0IHBhc3NpdmUgdG91Y2ggZXZlbnQgbGlzdGVuZXJzIG9uIHRoZSBy
b290CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUz
NDYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMzMTY0NTk3PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9ldmVudHMvdG91Y2gvaW9zL3Bh
c3NpdmUtYnktZGVmYXVsdC1vbi1kb2N1bWVudC1hbmQtd2luZG93LWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvdG91Y2gvaW9zL3Bhc3NpdmUtYnktZGVmYXVsdC1v
bi1kb2N1bWVudC1hbmQtd2luZG93Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRz
L3RvdWNoL2lvcy9wYXNzaXZlLWJ5LWRlZmF1bHQtb3ZlcnJpZGRlbi1vbi1kb2N1bWVudC1hbmQt
d2luZG93LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvdG91Y2gv
aW9zL3Bhc3NpdmUtYnktZGVmYXVsdC1vdmVycmlkZGVuLW9uLWRvY3VtZW50LWFuZC13aW5kb3cu
aHRtbDogQWRkZWQuCisKIDIwMTctMDgtMjEgIE1hdHQgTGV3aXMgIDxqbGV3aXMzQGFwcGxlLmNv
bT4KIAogICAgICAgICBGaXhlZCBleHBlY3RhdGlvbnMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy90b3VjaC9pb3MvcGFzc2l2ZS1ieS1kZWZhdWx0LW9uLWRvY3VtZW50LWFu
ZC13aW5kb3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvaW9z
L3Bhc3NpdmUtYnktZGVmYXVsdC1vbi1kb2N1bWVudC1hbmQtd2luZG93LWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wNjY4YzRkOTQ1ODcxMDhmMGY4NzNjNzg3N2E2NzZlNDRkNDQ3ZDRhCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvaW9zL3Bhc3NpdmUt
YnktZGVmYXVsdC1vbi1kb2N1bWVudC1hbmQtd2luZG93LWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDE0IEBACit0b3VjaHN0YXJ0IG9uIGJvZHkgLSBjYW5jZWxhYmxlOiBmYWxzZSBkZWZhdWx0UHJl
dmVudGVkOiBmYWxzZSAKK3RvdWNoc3RhcnQgb24gZG9jdW1lbnRFbGVtZW50IC0gY2FuY2VsYWJs
ZTogZmFsc2UgZGVmYXVsdFByZXZlbnRlZDogZmFsc2UgCit0b3VjaHN0YXJ0IG9uIGRvY3VtZW50
IC0gY2FuY2VsYWJsZTogZmFsc2UgZGVmYXVsdFByZXZlbnRlZDogZmFsc2UgCit0b3VjaHN0YXJ0
IG9uIHdpbmRvdyAtIGNhbmNlbGFibGU6IGZhbHNlIGRlZmF1bHRQcmV2ZW50ZWQ6IGZhbHNlIAor
dG91Y2htb3ZlIG9uIGJvZHkgLSBjYW5jZWxhYmxlOiBmYWxzZSBkZWZhdWx0UHJldmVudGVkOiBm
YWxzZSAKK3RvdWNobW92ZSBvbiBkb2N1bWVudEVsZW1lbnQgLSBjYW5jZWxhYmxlOiBmYWxzZSBk
ZWZhdWx0UHJldmVudGVkOiBmYWxzZSAKK3RvdWNobW92ZSBvbiBkb2N1bWVudCAtIGNhbmNlbGFi
bGU6IGZhbHNlIGRlZmF1bHRQcmV2ZW50ZWQ6IGZhbHNlIAordG91Y2htb3ZlIG9uIHdpbmRvdyAt
IGNhbmNlbGFibGU6IGZhbHNlIGRlZmF1bHRQcmV2ZW50ZWQ6IGZhbHNlIAordG91Y2hlbmQgb24g
Ym9keSAtIGNhbmNlbGFibGU6IGZhbHNlIGRlZmF1bHRQcmV2ZW50ZWQ6IGZhbHNlIAordG91Y2hl
bmQgb24gZG9jdW1lbnRFbGVtZW50IC0gY2FuY2VsYWJsZTogZmFsc2UgZGVmYXVsdFByZXZlbnRl
ZDogZmFsc2UgCit0b3VjaGVuZCBvbiBkb2N1bWVudCAtIGNhbmNlbGFibGU6IGZhbHNlIGRlZmF1
bHRQcmV2ZW50ZWQ6IGZhbHNlIAordG91Y2hlbmQgb24gd2luZG93IC0gY2FuY2VsYWJsZTogZmFs
c2UgZGVmYXVsdFByZXZlbnRlZDogZmFsc2UgCitEb25lCitUaGlzIGlzIGEgdGFsbCBlbGVtZW50
IHRvIG1ha2Ugc3VyZSB0aGVyZSBpcyBzb21ldGhpbmcgdG8gc2Nyb2xsLgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvaW9zL3Bhc3NpdmUtYnktZGVmYXVsdC1vbi1k
b2N1bWVudC1hbmQtd2luZG93Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9p
b3MvcGFzc2l2ZS1ieS1kZWZhdWx0LW9uLWRvY3VtZW50LWFuZC13aW5kb3cuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lOTUwMTMwM2FiYmRhY2ZlNjdlZWZiMGM2OTcyMjUxYTM5MThlNWRmCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvaW9zL3Bhc3NpdmUtYnktZGVm
YXVsdC1vbi1kb2N1bWVudC1hbmQtd2luZG93Lmh0bWwKQEAgLTAsMCArMSw5OCBAQAorPHNjcmlw
dD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworfQorCitmdW5jdGlvbiBnZXRVSVNj
cmlwdCgpCit7CisgICAgcmV0dXJuIGAKKyAgICAoZnVuY3Rpb24oKSB7CisgICAgICAgIHVpQ29u
dHJvbGxlci5kcmFnRnJvbVBvaW50VG9Qb2ludCg1MCwgMjUwLCA1MCwgMzAsIDAuMSwgZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICB1aUNvbnRyb2xsZXIudWlTY3JpcHRDb21wbGV0ZSgiRG9uZSIp
OworICAgICAgICB9KTsKKyAgICB9KSgpO2AKK30KKworZnVuY3Rpb24gcnVuVGVzdCgpCit7Cisg
ICAgbGV0IG91dHB1dCA9ICIiOworICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaHN0
YXJ0IiwgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsK
KyAgICAgICAgb3V0cHV0ICs9IGB0b3VjaHN0YXJ0IG9uIHdpbmRvdyAtIGNhbmNlbGFibGU6ICR7
ZXZlbnQuY2FuY2VsYWJsZX0gZGVmYXVsdFByZXZlbnRlZDogJHtldmVudC5kZWZhdWx0UHJldmVu
dGVkfSA8YnI+YDsKKyAgICB9LCBmYWxzZSk7CisKKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5l
cigidG91Y2htb3ZlIiwgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZXZlbnQucHJldmVudERl
ZmF1bHQoKTsKKyAgICAgICAgb3V0cHV0ICs9IGB0b3VjaG1vdmUgb24gd2luZG93IC0gY2FuY2Vs
YWJsZTogJHtldmVudC5jYW5jZWxhYmxlfSBkZWZhdWx0UHJldmVudGVkOiAke2V2ZW50LmRlZmF1
bHRQcmV2ZW50ZWR9IDxicj5gOworICAgIH0sIGZhbHNlKTsKKworICAgIHdpbmRvdy5hZGRFdmVu
dExpc3RlbmVyKCJ0b3VjaGVuZCIsIGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGV2ZW50LnBy
ZXZlbnREZWZhdWx0KCk7CisgICAgICAgIG91dHB1dCArPSBgdG91Y2hlbmQgb24gd2luZG93IC0g
Y2FuY2VsYWJsZTogJHtldmVudC5jYW5jZWxhYmxlfSBkZWZhdWx0UHJldmVudGVkOiAke2V2ZW50
LmRlZmF1bHRQcmV2ZW50ZWR9IDxicj5gOworICAgIH0sIGZhbHNlKTsKKworICAgIGRvY3VtZW50
LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoc3RhcnQiLCBmdW5jdGlvbihldmVudCkgeworICAgICAg
ICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworICAgICAgICBvdXRwdXQgKz0gYHRvdWNoc3RhcnQg
b24gZG9jdW1lbnQgLSBjYW5jZWxhYmxlOiAke2V2ZW50LmNhbmNlbGFibGV9IGRlZmF1bHRQcmV2
ZW50ZWQ6ICR7ZXZlbnQuZGVmYXVsdFByZXZlbnRlZH0gPGJyPmA7CisgICAgfSwgZmFsc2UpOwor
CisgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2htb3ZlIiwgZnVuY3Rpb24oZXZl
bnQpIHsKKyAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAgICAgICAgb3V0cHV0ICs9
IGB0b3VjaG1vdmUgb24gZG9jdW1lbnQgLSBjYW5jZWxhYmxlOiAke2V2ZW50LmNhbmNlbGFibGV9
IGRlZmF1bHRQcmV2ZW50ZWQ6ICR7ZXZlbnQuZGVmYXVsdFByZXZlbnRlZH0gPGJyPmA7CisgICAg
fSwgZmFsc2UpOworCisgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hlbmQiLCBm
dW5jdGlvbihldmVudCkgeworICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworICAgICAg
ICBvdXRwdXQgKz0gYHRvdWNoZW5kIG9uIGRvY3VtZW50IC0gY2FuY2VsYWJsZTogJHtldmVudC5j
YW5jZWxhYmxlfSBkZWZhdWx0UHJldmVudGVkOiAke2V2ZW50LmRlZmF1bHRQcmV2ZW50ZWR9IDxi
cj5gOworICAgIH0sIGZhbHNlKTsKKworICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5hZGRF
dmVudExpc3RlbmVyKCJ0b3VjaHN0YXJ0IiwgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZXZl
bnQucHJldmVudERlZmF1bHQoKTsKKyAgICAgICAgb3V0cHV0ICs9IGB0b3VjaHN0YXJ0IG9uIGRv
Y3VtZW50RWxlbWVudCAtIGNhbmNlbGFibGU6ICR7ZXZlbnQuY2FuY2VsYWJsZX0gZGVmYXVsdFBy
ZXZlbnRlZDogJHtldmVudC5kZWZhdWx0UHJldmVudGVkfSA8YnI+YDsKKyAgICB9LCBmYWxzZSk7
CisKKyAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2ht
b3ZlIiwgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsK
KyAgICAgICAgb3V0cHV0ICs9IGB0b3VjaG1vdmUgb24gZG9jdW1lbnRFbGVtZW50IC0gY2FuY2Vs
YWJsZTogJHtldmVudC5jYW5jZWxhYmxlfSBkZWZhdWx0UHJldmVudGVkOiAke2V2ZW50LmRlZmF1
bHRQcmV2ZW50ZWR9IDxicj5gOworICAgIH0sIGZhbHNlKTsKKworICAgIGRvY3VtZW50LmRvY3Vt
ZW50RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaGVuZCIsIGZ1bmN0aW9uKGV2ZW50KSB7
CisgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CisgICAgICAgIG91dHB1dCArPSBgdG91
Y2hlbmQgb24gZG9jdW1lbnRFbGVtZW50IC0gY2FuY2VsYWJsZTogJHtldmVudC5jYW5jZWxhYmxl
fSBkZWZhdWx0UHJldmVudGVkOiAke2V2ZW50LmRlZmF1bHRQcmV2ZW50ZWR9IDxicj5gOworICAg
IH0sIGZhbHNlKTsKKworICAgIGxldCBib2R5ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiYm9k
eSIpOworCisgICAgYm9keS5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaHN0YXJ0IiwgZnVuY3Rpb24o
ZXZlbnQpIHsKKyAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAgICAgICAgb3V0cHV0
ICs9IGB0b3VjaHN0YXJ0IG9uIGJvZHkgLSBjYW5jZWxhYmxlOiAke2V2ZW50LmNhbmNlbGFibGV9
IGRlZmF1bHRQcmV2ZW50ZWQ6ICR7ZXZlbnQuZGVmYXVsdFByZXZlbnRlZH0gPGJyPmA7CisgICAg
fSwgZmFsc2UpOworCisgICAgYm9keS5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaG1vdmUiLCBmdW5j
dGlvbihldmVudCkgeworICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworICAgICAgICBv
dXRwdXQgKz0gYHRvdWNobW92ZSBvbiBib2R5IC0gY2FuY2VsYWJsZTogJHtldmVudC5jYW5jZWxh
YmxlfSBkZWZhdWx0UHJldmVudGVkOiAke2V2ZW50LmRlZmF1bHRQcmV2ZW50ZWR9IDxicj5gOwor
ICAgIH0sIGZhbHNlKTsKKworICAgIGJvZHkuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hlbmQiLCBm
dW5jdGlvbihldmVudCkgeworICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworICAgICAg
ICBvdXRwdXQgKz0gYHRvdWNoZW5kIG9uIGJvZHkgLSBjYW5jZWxhYmxlOiAke2V2ZW50LmNhbmNl
bGFibGV9IGRlZmF1bHRQcmV2ZW50ZWQ6ICR7ZXZlbnQuZGVmYXVsdFByZXZlbnRlZH0gPGJyPmA7
CisgICAgfSwgZmFsc2UpOworCisgICAgaWYgKHRlc3RSdW5uZXIucnVuVUlTY3JpcHQpIHsKKyAg
ICAgICAgdGVzdFJ1bm5lci5ydW5VSVNjcmlwdChnZXRVSVNjcmlwdCgpLCBmdW5jdGlvbihyZXN1
bHQpIHsKKyAgICAgICAgICAgIG91dHB1dCArPSByZXN1bHQ7CisgICAgICAgICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgib3V0cHV0IikuaW5uZXJIVE1MID0gb3V0cHV0OworICAgICAgICAg
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgIH0pOworICAgIH0KK30KKword2lu
ZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBydW5UZXN0LCBmYWxzZSk7Cis8L3NjcmlwdD4K
KzxkaXYgaWQ9b3V0cHV0PgorVGhpcyB0ZXN0IHJlcXVpcmVzIFVJU2NyaXB0Q29udHJvbGxlciB0
byBydW4uCis8L2Rpdj4KKzxkaXYgc3R5bGU9ImhlaWdodDogNTAwdmgiPgorICAgIFRoaXMgaXMg
YSB0YWxsIGVsZW1lbnQgdG8gbWFrZSBzdXJlIHRoZXJlIGlzIHNvbWV0aGluZyB0byBzY3JvbGwu
Cis8L2Rpdj4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2lvcy9w
YXNzaXZlLWJ5LWRlZmF1bHQtb3ZlcnJpZGRlbi1vbi1kb2N1bWVudC1hbmQtd2luZG93LWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2lvcy9wYXNzaXZlLWJ5LWRl
ZmF1bHQtb3ZlcnJpZGRlbi1vbi1kb2N1bWVudC1hbmQtd2luZG93LWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5kZjFkMWExNTMwMzc1ZWVlZGY0OTBmZWU5ZTE5NzgxMDBiNWFiMmU5Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvaW9zL3Bhc3NpdmUtYnkt
ZGVmYXVsdC1vdmVycmlkZGVuLW9uLWRvY3VtZW50LWFuZC13aW5kb3ctZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMTQgQEAKK3RvdWNoc3RhcnQgb24gYm9keSAtIGNhbmNlbGFibGU6IHRydWUgZGVm
YXVsdFByZXZlbnRlZDogdHJ1ZSAKK3RvdWNoc3RhcnQgb24gZG9jdW1lbnRFbGVtZW50IC0gY2Fu
Y2VsYWJsZTogdHJ1ZSBkZWZhdWx0UHJldmVudGVkOiB0cnVlIAordG91Y2hzdGFydCBvbiBkb2N1
bWVudCAtIGNhbmNlbGFibGU6IHRydWUgZGVmYXVsdFByZXZlbnRlZDogdHJ1ZSAKK3RvdWNoc3Rh
cnQgb24gd2luZG93IC0gY2FuY2VsYWJsZTogdHJ1ZSBkZWZhdWx0UHJldmVudGVkOiB0cnVlIAor
dG91Y2htb3ZlIG9uIGJvZHkgLSBjYW5jZWxhYmxlOiB0cnVlIGRlZmF1bHRQcmV2ZW50ZWQ6IHRy
dWUgCit0b3VjaG1vdmUgb24gZG9jdW1lbnRFbGVtZW50IC0gY2FuY2VsYWJsZTogdHJ1ZSBkZWZh
dWx0UHJldmVudGVkOiB0cnVlIAordG91Y2htb3ZlIG9uIGRvY3VtZW50IC0gY2FuY2VsYWJsZTog
dHJ1ZSBkZWZhdWx0UHJldmVudGVkOiB0cnVlIAordG91Y2htb3ZlIG9uIHdpbmRvdyAtIGNhbmNl
bGFibGU6IHRydWUgZGVmYXVsdFByZXZlbnRlZDogdHJ1ZSAKK3RvdWNoZW5kIG9uIGJvZHkgLSBj
YW5jZWxhYmxlOiB0cnVlIGRlZmF1bHRQcmV2ZW50ZWQ6IHRydWUgCit0b3VjaGVuZCBvbiBkb2N1
bWVudEVsZW1lbnQgLSBjYW5jZWxhYmxlOiB0cnVlIGRlZmF1bHRQcmV2ZW50ZWQ6IHRydWUgCit0
b3VjaGVuZCBvbiBkb2N1bWVudCAtIGNhbmNlbGFibGU6IHRydWUgZGVmYXVsdFByZXZlbnRlZDog
dHJ1ZSAKK3RvdWNoZW5kIG9uIHdpbmRvdyAtIGNhbmNlbGFibGU6IHRydWUgZGVmYXVsdFByZXZl
bnRlZDogdHJ1ZSAKK0RvbmUKK1RoaXMgaXMgYSB0YWxsIGVsZW1lbnQgdG8gbWFrZSBzdXJlIHRo
ZXJlIGlzIHNvbWV0aGluZyB0byBzY3JvbGwuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy90b3VjaC9pb3MvcGFzc2l2ZS1ieS1kZWZhdWx0LW92ZXJyaWRkZW4tb24tZG9jdW1l
bnQtYW5kLXdpbmRvdy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvaW9zL3Bh
c3NpdmUtYnktZGVmYXVsdC1vdmVycmlkZGVuLW9uLWRvY3VtZW50LWFuZC13aW5kb3cuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43ODk5MWY4YjIyZDM5MWUxNjVkOWY2OWIwOGVlZWRhNjdkOTRhMmY1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvaW9zL3Bhc3NpdmUt
YnktZGVmYXVsdC1vdmVycmlkZGVuLW9uLWRvY3VtZW50LWFuZC13aW5kb3cuaHRtbApAQCAtMCww
ICsxLDk4IEBACis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Cit9CisK
K2Z1bmN0aW9uIGdldFVJU2NyaXB0KCkKK3sKKyAgICByZXR1cm4gYAorICAgIChmdW5jdGlvbigp
IHsKKyAgICAgICAgdWlDb250cm9sbGVyLmRyYWdGcm9tUG9pbnRUb1BvaW50KDUwLCAyNTAsIDUw
LCAzMCwgMC4xLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHVpQ29udHJvbGxlci51aVNjcmlw
dENvbXBsZXRlKCJEb25lIik7CisgICAgICAgIH0pOworICAgIH0pKCk7YAorfQorCitmdW5jdGlv
biBydW5UZXN0KCkKK3sKKyAgICBsZXQgb3V0cHV0ID0gIiI7CisgICAgd2luZG93LmFkZEV2ZW50
TGlzdGVuZXIoInRvdWNoc3RhcnQiLCBmdW5jdGlvbihldmVudCkgeworICAgICAgICBldmVudC5w
cmV2ZW50RGVmYXVsdCgpOworICAgICAgICBvdXRwdXQgKz0gYHRvdWNoc3RhcnQgb24gd2luZG93
IC0gY2FuY2VsYWJsZTogJHtldmVudC5jYW5jZWxhYmxlfSBkZWZhdWx0UHJldmVudGVkOiAke2V2
ZW50LmRlZmF1bHRQcmV2ZW50ZWR9IDxicj5gOworICAgIH0sIHsgInBhc3NpdmUiOiBmYWxzZSB9
KTsKKworICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaG1vdmUiLCBmdW5jdGlvbihl
dmVudCkgeworICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworICAgICAgICBvdXRwdXQg
Kz0gYHRvdWNobW92ZSBvbiB3aW5kb3cgLSBjYW5jZWxhYmxlOiAke2V2ZW50LmNhbmNlbGFibGV9
IGRlZmF1bHRQcmV2ZW50ZWQ6ICR7ZXZlbnQuZGVmYXVsdFByZXZlbnRlZH0gPGJyPmA7CisgICAg
fSwgeyAicGFzc2l2ZSI6IGZhbHNlIH0pOworCisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIo
InRvdWNoZW5kIiwgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZXZlbnQucHJldmVudERlZmF1
bHQoKTsKKyAgICAgICAgb3V0cHV0ICs9IGB0b3VjaGVuZCBvbiB3aW5kb3cgLSBjYW5jZWxhYmxl
OiAke2V2ZW50LmNhbmNlbGFibGV9IGRlZmF1bHRQcmV2ZW50ZWQ6ICR7ZXZlbnQuZGVmYXVsdFBy
ZXZlbnRlZH0gPGJyPmA7CisgICAgfSwgeyAicGFzc2l2ZSI6IGZhbHNlIH0pOworCisgICAgZG9j
dW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFydCIsIGZ1bmN0aW9uKGV2ZW50KSB7Cisg
ICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CisgICAgICAgIG91dHB1dCArPSBgdG91Y2hz
dGFydCBvbiBkb2N1bWVudCAtIGNhbmNlbGFibGU6ICR7ZXZlbnQuY2FuY2VsYWJsZX0gZGVmYXVs
dFByZXZlbnRlZDogJHtldmVudC5kZWZhdWx0UHJldmVudGVkfSA8YnI+YDsKKyAgICB9LCB7ICJw
YXNzaXZlIjogZmFsc2UgfSk7CisKKyAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ0b3Vj
aG1vdmUiLCBmdW5jdGlvbihldmVudCkgeworICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgp
OworICAgICAgICBvdXRwdXQgKz0gYHRvdWNobW92ZSBvbiBkb2N1bWVudCAtIGNhbmNlbGFibGU6
ICR7ZXZlbnQuY2FuY2VsYWJsZX0gZGVmYXVsdFByZXZlbnRlZDogJHtldmVudC5kZWZhdWx0UHJl
dmVudGVkfSA8YnI+YDsKKyAgICB9LCB7ICJwYXNzaXZlIjogZmFsc2UgfSk7CisKKyAgICBkb2N1
bWVudC5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaGVuZCIsIGZ1bmN0aW9uKGV2ZW50KSB7CisgICAg
ICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CisgICAgICAgIG91dHB1dCArPSBgdG91Y2hlbmQg
b24gZG9jdW1lbnQgLSBjYW5jZWxhYmxlOiAke2V2ZW50LmNhbmNlbGFibGV9IGRlZmF1bHRQcmV2
ZW50ZWQ6ICR7ZXZlbnQuZGVmYXVsdFByZXZlbnRlZH0gPGJyPmA7CisgICAgfSwgeyAicGFzc2l2
ZSI6IGZhbHNlIH0pOworCisgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmFkZEV2ZW50TGlz
dGVuZXIoInRvdWNoc3RhcnQiLCBmdW5jdGlvbihldmVudCkgeworICAgICAgICBldmVudC5wcmV2
ZW50RGVmYXVsdCgpOworICAgICAgICBvdXRwdXQgKz0gYHRvdWNoc3RhcnQgb24gZG9jdW1lbnRF
bGVtZW50IC0gY2FuY2VsYWJsZTogJHtldmVudC5jYW5jZWxhYmxlfSBkZWZhdWx0UHJldmVudGVk
OiAke2V2ZW50LmRlZmF1bHRQcmV2ZW50ZWR9IDxicj5gOworICAgIH0sIHsgInBhc3NpdmUiOiBm
YWxzZSB9KTsKKworICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5hZGRFdmVudExpc3RlbmVy
KCJ0b3VjaG1vdmUiLCBmdW5jdGlvbihldmVudCkgeworICAgICAgICBldmVudC5wcmV2ZW50RGVm
YXVsdCgpOworICAgICAgICBvdXRwdXQgKz0gYHRvdWNobW92ZSBvbiBkb2N1bWVudEVsZW1lbnQg
LSBjYW5jZWxhYmxlOiAke2V2ZW50LmNhbmNlbGFibGV9IGRlZmF1bHRQcmV2ZW50ZWQ6ICR7ZXZl
bnQuZGVmYXVsdFByZXZlbnRlZH0gPGJyPmA7CisgICAgfSwgeyAicGFzc2l2ZSI6IGZhbHNlIH0p
OworCisgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNo
ZW5kIiwgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsK
KyAgICAgICAgb3V0cHV0ICs9IGB0b3VjaGVuZCBvbiBkb2N1bWVudEVsZW1lbnQgLSBjYW5jZWxh
YmxlOiAke2V2ZW50LmNhbmNlbGFibGV9IGRlZmF1bHRQcmV2ZW50ZWQ6ICR7ZXZlbnQuZGVmYXVs
dFByZXZlbnRlZH0gPGJyPmA7CisgICAgfSwgeyAicGFzc2l2ZSI6IGZhbHNlIH0pOworCisgICAg
bGV0IGJvZHkgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJib2R5Iik7CisKKyAgICBib2R5LmFk
ZEV2ZW50TGlzdGVuZXIoInRvdWNoc3RhcnQiLCBmdW5jdGlvbihldmVudCkgeworICAgICAgICBl
dmVudC5wcmV2ZW50RGVmYXVsdCgpOworICAgICAgICBvdXRwdXQgKz0gYHRvdWNoc3RhcnQgb24g
Ym9keSAtIGNhbmNlbGFibGU6ICR7ZXZlbnQuY2FuY2VsYWJsZX0gZGVmYXVsdFByZXZlbnRlZDog
JHtldmVudC5kZWZhdWx0UHJldmVudGVkfSA8YnI+YDsKKyAgICB9LCB7ICJwYXNzaXZlIjogZmFs
c2UgfSk7CisKKyAgICBib2R5LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNobW92ZSIsIGZ1bmN0aW9u
KGV2ZW50KSB7CisgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CisgICAgICAgIG91dHB1
dCArPSBgdG91Y2htb3ZlIG9uIGJvZHkgLSBjYW5jZWxhYmxlOiAke2V2ZW50LmNhbmNlbGFibGV9
IGRlZmF1bHRQcmV2ZW50ZWQ6ICR7ZXZlbnQuZGVmYXVsdFByZXZlbnRlZH0gPGJyPmA7CisgICAg
fSwgeyAicGFzc2l2ZSI6IGZhbHNlIH0pOworCisgICAgYm9keS5hZGRFdmVudExpc3RlbmVyKCJ0
b3VjaGVuZCIsIGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0
KCk7CisgICAgICAgIG91dHB1dCArPSBgdG91Y2hlbmQgb24gYm9keSAtIGNhbmNlbGFibGU6ICR7
ZXZlbnQuY2FuY2VsYWJsZX0gZGVmYXVsdFByZXZlbnRlZDogJHtldmVudC5kZWZhdWx0UHJldmVu
dGVkfSA8YnI+YDsKKyAgICB9LCB7ICJwYXNzaXZlIjogZmFsc2UgfSk7CisKKyAgICBpZiAodGVz
dFJ1bm5lci5ydW5VSVNjcmlwdCkgeworICAgICAgICB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KGdl
dFVJU2NyaXB0KCksIGZ1bmN0aW9uKHJlc3VsdCkgeworICAgICAgICAgICAgb3V0cHV0ICs9IHJl
c3VsdDsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvdXRwdXQiKS5pbm5l
ckhUTUwgPSBvdXRwdXQ7CisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAg
ICAgICAgfSk7CisgICAgfQorfQorCit3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIHJ1
blRlc3QsIHsgInBhc3NpdmUiOiBmYWxzZSB9KTsKKzwvc2NyaXB0PgorPGRpdiBpZD1vdXRwdXQ+
CitUaGlzIHRlc3QgcmVxdWlyZXMgVUlTY3JpcHRDb250cm9sbGVyIHRvIHJ1bi4KKzwvZGl2Pgor
PGRpdiBzdHlsZT0iaGVpZ2h0OiA1MDB2aCI+CisgICAgVGhpcyBpcyBhIHRhbGwgZWxlbWVudCB0
byBtYWtlIHN1cmUgdGhlcmUgaXMgc29tZXRoaW5nIHRvIHNjcm9sbC4KKzwvZGl2Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318849</attachid>
            <date>2017-08-22 20:11:11 -0700</date>
            <delta_ts>2017-08-22 22:08:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175346-20170823131108.patch</filename>
            <type>text/plain</type>
            <size>20472</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwOTg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjAzNDBhMjA5NGFlMzg4
YmY3NGFhNzc1OTYxYjEyNGM2YmI5MWZjOC4uMTAzNjk3NzMwNTRiODI0ZjE2ZDI1ZGZiY2E3ZjI2
YmM4MTUzMmY5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDE3LTA4LTIyICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBEZWZhdWx0IHBhc3NpdmUgdG91
Y2ggZXZlbnQgbGlzdGVuZXJzIG9uIHRoZSByb290CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUzNDYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMz
MTY0NTk3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE1ha2UgYW55IHRvdWNoc3RhcnQgb3IgdG91Y2htb3ZlIGV2ZW50IGxpc3RlbmVycyBwYXNzaXZl
IGJ5IGRlZmF1bHQKKyAgICAgICAgaWYgdGhleSBhcmUgb24gdGhlIGRvY3VtZW50LCB3aW5kb3cs
IGJvZHkgb3IgZG9jdW1lbnQgZWxlbWVudCB0YXJnZXRzLgorICAgICAgICBUaGlzIGZvbGxvd3Mg
dGhlICJpbnRlcnZlbnRpb24iIGZpcnN0IGltcGxlbWVudGVkIGJ5IENocm9tZS9CbGluaywgYW5k
CisgICAgICAgIG5vdyBpbiB0aGUgRE9NIHNwZWNpZmljYXRpb246CisKKyAgICAgICAgaHR0cHM6
Ly9naXRodWIuY29tL1dJQ0cvaW50ZXJ2ZW50aW9ucy9pc3N1ZXMvMzUKKyAgICAgICAgaHR0cHM6
Ly9kb2NzLmdvb2dsZS5jb20vZG9jdW1lbnQvZC8xSUk3b1NJcGQ4cEs5MVY1a0VNM3RETEtjSWoz
OThqT0puOE5pcXk2X2xvSS9lZGl0CisgICAgICAgIGh0dHBzOi8vZ2l0aHViLmNvbS93aGF0d2cv
ZG9tL2lzc3Vlcy8zNjUKKworICAgICAgICBJZiB0aGUgZXZlbnQgbGlzdGVuZXIgZXhwbGljaXRs
eSBkZWZpbmVzICJwYXNzaXZlIiB0byBmYWxzZSBpbiB0aGVpcgorICAgICAgICBvcHRpb25zIGRp
Y3Rpb25hcnksIHRoZW4gdGhlIGJlaGF2aW91ciBpcyBvdmVycmlkZGVuLgorCisgICAgICAgIE5P
VEU6IEFueSBmYWxsb3V0IGZyb20gdGhpcyBidWcgc2hvdWxkIGJlIGNvbGxlY3RlZCBpbjoKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTg2OQorICAg
ICAgICBQbGVhc2UgZG8gbm90IHJldmVydCB0aGlzIGNoYW5nZSBqdXN0IGJlY2F1c2UgYSBzaXRl
IGlzIGJyb2tlbi4gV2UnbGwKKyAgICAgICAgZ2F0aGVyIHRoZSBpc3N1ZXMgYW5kIHNlZSBpZiB3
ZSBjYW4gZXZhbmdlbGlzZSBvciBkZXRlY3QgdmlhIGNvZGUuCisKKyAgICAgICAgVGVzdHM6IGZh
c3QvZXZlbnRzL3RvdWNoL2lvcy9wYXNzaXZlLWJ5LWRlZmF1bHQtb24tZG9jdW1lbnQtYW5kLXdp
bmRvdy5odG1sCisgICAgICAgICAgICAgICBmYXN0L2V2ZW50cy90b3VjaC9pb3MvcGFzc2l2ZS1i
eS1kZWZhdWx0LW92ZXJyaWRkZW4tb24tZG9jdW1lbnQtYW5kLXdpbmRvdy5odG1sCisKKyAgICAg
ICAgKiBkb20vRXZlbnROYW1lcy5oOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnROYW1lczo6aXNU
b3VjaFNjcm9sbEJsb2NraW5nRXZlbnRUeXBlIGNvbnN0KTogQWRkZWQgdGhpcyBoZWxwZXIKKyAg
ICAgICAgdG8gaWRlbnRpZnkgdGhlIHR5cGVzIG9mIHRvdWNoZXMgd2Ugd2FudCB0byBjaGVjayBm
b3IuCisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50VGFyZ2V0OjphZGRFdmVudExpc3RlbmVyKTogQ2hlY2sgZm9yIHRoZSBldmVudCBiZWluZyBv
bmUgb2YgdGhlIHRvdWNoLXR5cGVzCisgICAgICAgIHRoYXQgd2UgY2FyZSBhYm91dCwgYW5kIHRo
ZSB0YXJnZXQgYmVpbmcgb25lIG9mIHRoZSBOb2RlL1dpbmRvdyB0eXBlcyB3ZSBjYXJlIGFib3V0
LiBJZgorICAgICAgICBzbywgdGVsbCB0aGUgZXZlbnQgbGlzdGVuZXIgdG8gYmUgcGFzc2l2ZS4K
KyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXQuaDogVXNlIGFuIG9wdGlvbmFsIGZvciB0aGUgcGFz
c2l2ZSBtZW1iZXIuCisgICAgICAgIChXZWJDb3JlOjpFdmVudFRhcmdldDo6QWRkRXZlbnRMaXN0
ZW5lck9wdGlvbnM6OkFkZEV2ZW50TGlzdGVuZXJPcHRpb25zKToKKyAgICAgICAgKiBkb20vRXZl
bnRUYXJnZXQuaWRsOiBDaGFuZ2UgInBhc3NpdmUiIHRvIG5vdCBoYXZlIGEgZGVmYXVsdCB2YWx1
ZSwgc28gd2UKKyAgICAgICAgY2FuIGRldGVjdCBpZiBpdCB3YXMgZXhwbGljaXRseSBzZXQgdG8g
ZmFsc2UuCisKIDIwMTctMDgtMjEgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgog
CiAgICAgICAgIENsZWFudXAgVGV4dFBhaW50ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudE5hbWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCmluZGV4
IDI5ZmQyY2Q2OWM4YmIwZjM1MGVhMGE5ZTg2ZTk5NWU0M2FhYzEyODUuLjliZmIxZGRlOGQ3MWZm
YjBmODk3ODcyYjdkOTA1YTBkNDhlNGNhNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudE5hbWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaApAQCAt
MzI0LDYgKzMyNCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzV2hlZWxFdmVudFR5cGUoY29uc3Qg
QXRvbWljU3RyaW5nJiBldmVudFR5cGUpIGNvbnN0OwogICAgIGJvb2wgaXNHZXN0dXJlRXZlbnRU
eXBlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKSBjb25zdDsKICAgICBib29sIGlzVG91
Y2hFdmVudFR5cGUoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUpIGNvbnN0OworICAgIGJv
b2wgaXNUb3VjaFNjcm9sbEJsb2NraW5nRXZlbnRUeXBlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnRUeXBlKSBjb25zdDsKICNpZiBFTkFCTEUoR0FNRVBBRCkKICAgICBib29sIGlzR2FtZXBhZEV2
ZW50VHlwZShjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSkgY29uc3Q7CiAjZW5kaWYKQEAg
LTM1MCw2ICszNTEsMTIgQEAgaW5saW5lIGJvb2wgRXZlbnROYW1lczo6aXNHZXN0dXJlRXZlbnRU
eXBlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKSBjb25zdAogICAgIHJldHVybiBldmVu
dFR5cGUgPT0gZ2VzdHVyZXN0YXJ0RXZlbnQgfHwgZXZlbnRUeXBlID09IGdlc3R1cmVjaGFuZ2VF
dmVudCB8fCBldmVudFR5cGUgPT0gZ2VzdHVyZWVuZEV2ZW50OwogfQogCitpbmxpbmUgYm9vbCBF
dmVudE5hbWVzOjppc1RvdWNoU2Nyb2xsQmxvY2tpbmdFdmVudFR5cGUoY29uc3QgQXRvbWljU3Ry
aW5nJiBldmVudFR5cGUpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50VHlwZSA9PSB0b3VjaHN0
YXJ0RXZlbnQKKyAgICAgICAgfHwgZXZlbnRUeXBlID09IHRvdWNobW92ZUV2ZW50OworfQorCiBp
bmxpbmUgYm9vbCBFdmVudE5hbWVzOjppc1RvdWNoRXZlbnRUeXBlKGNvbnN0IEF0b21pY1N0cmlu
ZyYgZXZlbnRUeXBlKSBjb25zdAogewogICAgIHJldHVybiBldmVudFR5cGUgPT0gdG91Y2hzdGFy
dEV2ZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcAppbmRleCA2YTUyMzc0NWQxZjEyYjZk
Njk0M2M2M2EwYWIzNTVkYzhhYzM1MzBjLi5mY2Y2ZjQ4OTI4NDkwOWJhZjRkZTNmMWQyMmU3YWZk
NTM4NDIyMTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKQEAgLTM0LDYgKzM0LDcg
QEAKIAogI2luY2x1ZGUgIkRPTVdyYXBwZXJXb3JsZC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMu
aCIKKyNpbmNsdWRlICJIVE1MQm9keUVsZW1lbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJKU0V2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJO
b0V2ZW50RGlzcGF0Y2hBc3NlcnRpb24uaCIKQEAgLTY4LDkgKzY5LDE5IEBAIGJvb2wgRXZlbnRU
YXJnZXQ6OmlzTWVzc2FnZVBvcnQoKSBjb25zdAogCiBib29sIEV2ZW50VGFyZ2V0OjphZGRFdmVu
dExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5l
cj4mJiBsaXN0ZW5lciwgY29uc3QgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMmIG9wdGlvbnMpCiB7
CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBwYXNzaXZlID0gb3B0aW9ucy5wYXNzaXZlOworCisg
ICAgaWYgKCFwYXNzaXZlLmhhc192YWx1ZSgpICYmIGV2ZW50TmFtZXMoKS5pc1RvdWNoU2Nyb2xs
QmxvY2tpbmdFdmVudFR5cGUoZXZlbnRUeXBlKSkgeworICAgICAgICBpZiAoYXV0byogbm9kZSA9
IHRvTm9kZSgpKSB7CisgICAgICAgICAgICBpZiAobm9kZS0+aXNEb2N1bWVudE5vZGUoKSB8fCBu
b2RlLT5kb2N1bWVudCgpLmRvY3VtZW50RWxlbWVudCgpID09IG5vZGUgfHwgbm9kZS0+ZG9jdW1l
bnQoKS5ib2R5KCkgPT0gbm9kZSkKKyAgICAgICAgICAgICAgICBwYXNzaXZlID0gdHJ1ZTsKKyAg
ICAgICAgfSBlbHNlIGlmICh0b0RPTVdpbmRvdygpKQorICAgICAgICAgICAgcGFzc2l2ZSA9IHRy
dWU7CisgICAgfQorCiAgICAgYm9vbCBsaXN0ZW5lckNyZWF0ZWRGcm9tU2NyaXB0ID0gbGlzdGVu
ZXItPnR5cGUoKSA9PSBFdmVudExpc3RlbmVyOjpKU0V2ZW50TGlzdGVuZXJUeXBlICYmICFsaXN0
ZW5lci0+d2FzQ3JlYXRlZEZyb21NYXJrdXAoKTsKIAotICAgIGlmICghZW5zdXJlRXZlbnRUYXJn
ZXREYXRhKCkuZXZlbnRMaXN0ZW5lck1hcC5hZGQoZXZlbnRUeXBlLCBXVEZNb3ZlKGxpc3RlbmVy
KSwgeyBvcHRpb25zLmNhcHR1cmUsIG9wdGlvbnMucGFzc2l2ZSwgb3B0aW9ucy5vbmNlIH0pKQor
ICAgIGlmICghZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkuZXZlbnRMaXN0ZW5lck1hcC5hZGQoZXZl
bnRUeXBlLCBXVEZNb3ZlKGxpc3RlbmVyKSwgeyBvcHRpb25zLmNhcHR1cmUsIHBhc3NpdmUudmFs
dWVfb3IoZmFsc2UpLCBvcHRpb25zLm9uY2UgfSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIGlmIChsaXN0ZW5lckNyZWF0ZWRGcm9tU2NyaXB0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQu
aAppbmRleCA4OTJkNGI4MTJmZjIzM2FmOTNmZjZiOGU2MTM1ZTZjMmNhNjlhYWVjLi41MGNiNDdm
MWI0ZDkxYmEzMmJmMGM2OGNlNGY1ODRlMzg4ZDU1OTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnRUYXJnZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJn
ZXQuaApAQCAtODEsMTMgKzgxLDEzIEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgc3RydWN0IEFk
ZEV2ZW50TGlzdGVuZXJPcHRpb25zIDogTGlzdGVuZXJPcHRpb25zIHsKLSAgICAgICAgQWRkRXZl
bnRMaXN0ZW5lck9wdGlvbnMoYm9vbCBjYXB0dXJlID0gZmFsc2UsIGJvb2wgcGFzc2l2ZSA9IGZh
bHNlLCBib29sIG9uY2UgPSBmYWxzZSkKKyAgICAgICAgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMo
Ym9vbCBjYXB0dXJlID0gZmFsc2UsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gcGFzc2l2ZSA9IHN0ZDo6
bnVsbG9wdCwgYm9vbCBvbmNlID0gZmFsc2UpCiAgICAgICAgICAgICA6IExpc3RlbmVyT3B0aW9u
cyhjYXB0dXJlKQogICAgICAgICAgICAgLCBwYXNzaXZlKHBhc3NpdmUpCiAgICAgICAgICAgICAs
IG9uY2Uob25jZSkKICAgICAgICAgeyB9CiAKLSAgICAgICAgYm9vbCBwYXNzaXZlOworICAgICAg
ICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHBhc3NpdmU7CiAgICAgICAgIGJvb2wgb25jZTsKICAgICB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaWRsIGIvU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmlkbAppbmRleCAyYzkzODQ1MzNiYzZmZDRlN2Zk
Zjc0YjZiMDE5M2M5OWJkODYzNjg5Li4wZjkxZWYzMjRhNjZjMDJkYmIwMTlhZDU0MjE2YWExM2I2
YjJiMTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaWRsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5pZGwKQEAgLTM2LDYgKzM2LDYgQEAg
ZGljdGlvbmFyeSBFdmVudExpc3RlbmVyT3B0aW9ucyB7CiB9OwogCiBkaWN0aW9uYXJ5IEFkZEV2
ZW50TGlzdGVuZXJPcHRpb25zIDogRXZlbnRMaXN0ZW5lck9wdGlvbnMgewotICAgIGJvb2xlYW4g
cGFzc2l2ZSA9IGZhbHNlOworICAgIGJvb2xlYW4gcGFzc2l2ZTsKICAgICBib29sZWFuIG9uY2Ug
PSBmYWxzZTsKIH07CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggYzk3NTkzMGU3Y2I1NzliZDU1ZmE0ZDE3ZjBmYmU5NzgwOWMx
YmFkNC4uM2Y4MDgwOWFhNmRiNzc5MDI5ODM0M2VhODdiODVmNGE3OTFjMGMzYiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE5IEBACisyMDE3LTA4LTIyICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4K
KworICAgICAgICBEZWZhdWx0IHBhc3NpdmUgdG91Y2ggZXZlbnQgbGlzdGVuZXJzIG9uIHRoZSBy
b290CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUz
NDYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMzMTY0NTk3PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9ldmVudHMvdG91Y2gvaW9zL3Bh
c3NpdmUtYnktZGVmYXVsdC1vbi1kb2N1bWVudC1hbmQtd2luZG93LWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvdG91Y2gvaW9zL3Bhc3NpdmUtYnktZGVmYXVsdC1v
bi1kb2N1bWVudC1hbmQtd2luZG93Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRz
L3RvdWNoL2lvcy9wYXNzaXZlLWJ5LWRlZmF1bHQtb3ZlcnJpZGRlbi1vbi1kb2N1bWVudC1hbmQt
d2luZG93LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvdG91Y2gv
aW9zL3Bhc3NpdmUtYnktZGVmYXVsdC1vdmVycmlkZGVuLW9uLWRvY3VtZW50LWFuZC13aW5kb3cu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvdG91Y2gvaW9zL3RhcC13aXRoLWFj
dGl2ZS1saXN0ZW5lci1vbi13aW5kb3cuaHRtbDogRXhwbGljaXRseSBzZXQgcGFzc2l2ZSB0byBm
YWxzZS4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy90b3VjaC9pb3MvdG91Y2gtZXZlbnQtcmVnaW9u
cy9kb2N1bWVudC5odG1sOiBEaXR0by4KKworCiAyMDE3LTA4LTIxICBNYXR0IExld2lzICA8amxl
d2lzM0BhcHBsZS5jb20+CiAKICAgICAgICAgRml4ZWQgZXhwZWN0YXRpb25zLgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvaW9zL3Bhc3NpdmUtYnktZGVmYXVsdC1v
bi1kb2N1bWVudC1hbmQtd2luZG93LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL3RvdWNoL2lvcy9wYXNzaXZlLWJ5LWRlZmF1bHQtb24tZG9jdW1lbnQtYW5kLXdpbmRvdy1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDY2OGM0ZDk0NTg3MTA4ZjBmODczYzc4NzdhNjc2ZTQ0
ZDQ0N2Q0YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNo
L2lvcy9wYXNzaXZlLWJ5LWRlZmF1bHQtb24tZG9jdW1lbnQtYW5kLXdpbmRvdy1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxNCBAQAordG91Y2hzdGFydCBvbiBib2R5IC0gY2FuY2VsYWJsZTogZmFs
c2UgZGVmYXVsdFByZXZlbnRlZDogZmFsc2UgCit0b3VjaHN0YXJ0IG9uIGRvY3VtZW50RWxlbWVu
dCAtIGNhbmNlbGFibGU6IGZhbHNlIGRlZmF1bHRQcmV2ZW50ZWQ6IGZhbHNlIAordG91Y2hzdGFy
dCBvbiBkb2N1bWVudCAtIGNhbmNlbGFibGU6IGZhbHNlIGRlZmF1bHRQcmV2ZW50ZWQ6IGZhbHNl
IAordG91Y2hzdGFydCBvbiB3aW5kb3cgLSBjYW5jZWxhYmxlOiBmYWxzZSBkZWZhdWx0UHJldmVu
dGVkOiBmYWxzZSAKK3RvdWNobW92ZSBvbiBib2R5IC0gY2FuY2VsYWJsZTogZmFsc2UgZGVmYXVs
dFByZXZlbnRlZDogZmFsc2UgCit0b3VjaG1vdmUgb24gZG9jdW1lbnRFbGVtZW50IC0gY2FuY2Vs
YWJsZTogZmFsc2UgZGVmYXVsdFByZXZlbnRlZDogZmFsc2UgCit0b3VjaG1vdmUgb24gZG9jdW1l
bnQgLSBjYW5jZWxhYmxlOiBmYWxzZSBkZWZhdWx0UHJldmVudGVkOiBmYWxzZSAKK3RvdWNobW92
ZSBvbiB3aW5kb3cgLSBjYW5jZWxhYmxlOiBmYWxzZSBkZWZhdWx0UHJldmVudGVkOiBmYWxzZSAK
K3RvdWNoZW5kIG9uIGJvZHkgLSBjYW5jZWxhYmxlOiBmYWxzZSBkZWZhdWx0UHJldmVudGVkOiBm
YWxzZSAKK3RvdWNoZW5kIG9uIGRvY3VtZW50RWxlbWVudCAtIGNhbmNlbGFibGU6IGZhbHNlIGRl
ZmF1bHRQcmV2ZW50ZWQ6IGZhbHNlIAordG91Y2hlbmQgb24gZG9jdW1lbnQgLSBjYW5jZWxhYmxl
OiBmYWxzZSBkZWZhdWx0UHJldmVudGVkOiBmYWxzZSAKK3RvdWNoZW5kIG9uIHdpbmRvdyAtIGNh
bmNlbGFibGU6IGZhbHNlIGRlZmF1bHRQcmV2ZW50ZWQ6IGZhbHNlIAorRG9uZQorVGhpcyBpcyBh
IHRhbGwgZWxlbWVudCB0byBtYWtlIHN1cmUgdGhlcmUgaXMgc29tZXRoaW5nIHRvIHNjcm9sbC4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2lvcy9wYXNzaXZlLWJ5
LWRlZmF1bHQtb24tZG9jdW1lbnQtYW5kLXdpbmRvdy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvdG91Y2gvaW9zL3Bhc3NpdmUtYnktZGVmYXVsdC1vbi1kb2N1bWVudC1hbmQtd2luZG93
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZTk1MDEzMDNhYmJkYWNmZTY3ZWVmYjBjNjk3MjI1MWEzOTE4ZTVk
ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2lvcy9w
YXNzaXZlLWJ5LWRlZmF1bHQtb24tZG9jdW1lbnQtYW5kLXdpbmRvdy5odG1sCkBAIC0wLDAgKzEs
OTggQEAKKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKK30KKworZnVu
Y3Rpb24gZ2V0VUlTY3JpcHQoKQoreworICAgIHJldHVybiBgCisgICAgKGZ1bmN0aW9uKCkgewor
ICAgICAgICB1aUNvbnRyb2xsZXIuZHJhZ0Zyb21Qb2ludFRvUG9pbnQoNTAsIDI1MCwgNTAsIDMw
LCAwLjEsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdWlDb250cm9sbGVyLnVpU2NyaXB0Q29t
cGxldGUoIkRvbmUiKTsKKyAgICAgICAgfSk7CisgICAgfSkoKTtgCit9CisKK2Z1bmN0aW9uIHJ1
blRlc3QoKQoreworICAgIGxldCBvdXRwdXQgPSAiIjsKKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0
ZW5lcigidG91Y2hzdGFydCIsIGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGV2ZW50LnByZXZl
bnREZWZhdWx0KCk7CisgICAgICAgIG91dHB1dCArPSBgdG91Y2hzdGFydCBvbiB3aW5kb3cgLSBj
YW5jZWxhYmxlOiAke2V2ZW50LmNhbmNlbGFibGV9IGRlZmF1bHRQcmV2ZW50ZWQ6ICR7ZXZlbnQu
ZGVmYXVsdFByZXZlbnRlZH0gPGJyPmA7CisgICAgfSwgZmFsc2UpOworCisgICAgd2luZG93LmFk
ZEV2ZW50TGlzdGVuZXIoInRvdWNobW92ZSIsIGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGV2
ZW50LnByZXZlbnREZWZhdWx0KCk7CisgICAgICAgIG91dHB1dCArPSBgdG91Y2htb3ZlIG9uIHdp
bmRvdyAtIGNhbmNlbGFibGU6ICR7ZXZlbnQuY2FuY2VsYWJsZX0gZGVmYXVsdFByZXZlbnRlZDog
JHtldmVudC5kZWZhdWx0UHJldmVudGVkfSA8YnI+YDsKKyAgICB9LCBmYWxzZSk7CisKKyAgICB3
aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hlbmQiLCBmdW5jdGlvbihldmVudCkgeworICAg
ICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworICAgICAgICBvdXRwdXQgKz0gYHRvdWNoZW5k
IG9uIHdpbmRvdyAtIGNhbmNlbGFibGU6ICR7ZXZlbnQuY2FuY2VsYWJsZX0gZGVmYXVsdFByZXZl
bnRlZDogJHtldmVudC5kZWZhdWx0UHJldmVudGVkfSA8YnI+YDsKKyAgICB9LCBmYWxzZSk7CisK
KyAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaHN0YXJ0IiwgZnVuY3Rpb24oZXZl
bnQpIHsKKyAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAgICAgICAgb3V0cHV0ICs9
IGB0b3VjaHN0YXJ0IG9uIGRvY3VtZW50IC0gY2FuY2VsYWJsZTogJHtldmVudC5jYW5jZWxhYmxl
fSBkZWZhdWx0UHJldmVudGVkOiAke2V2ZW50LmRlZmF1bHRQcmV2ZW50ZWR9IDxicj5gOworICAg
IH0sIGZhbHNlKTsKKworICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNobW92ZSIs
IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CisgICAg
ICAgIG91dHB1dCArPSBgdG91Y2htb3ZlIG9uIGRvY3VtZW50IC0gY2FuY2VsYWJsZTogJHtldmVu
dC5jYW5jZWxhYmxlfSBkZWZhdWx0UHJldmVudGVkOiAke2V2ZW50LmRlZmF1bHRQcmV2ZW50ZWR9
IDxicj5gOworICAgIH0sIGZhbHNlKTsKKworICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIo
InRvdWNoZW5kIiwgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZXZlbnQucHJldmVudERlZmF1
bHQoKTsKKyAgICAgICAgb3V0cHV0ICs9IGB0b3VjaGVuZCBvbiBkb2N1bWVudCAtIGNhbmNlbGFi
bGU6ICR7ZXZlbnQuY2FuY2VsYWJsZX0gZGVmYXVsdFByZXZlbnRlZDogJHtldmVudC5kZWZhdWx0
UHJldmVudGVkfSA8YnI+YDsKKyAgICB9LCBmYWxzZSk7CisKKyAgICBkb2N1bWVudC5kb2N1bWVu
dEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFydCIsIGZ1bmN0aW9uKGV2ZW50KSB7
CisgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CisgICAgICAgIG91dHB1dCArPSBgdG91
Y2hzdGFydCBvbiBkb2N1bWVudEVsZW1lbnQgLSBjYW5jZWxhYmxlOiAke2V2ZW50LmNhbmNlbGFi
bGV9IGRlZmF1bHRQcmV2ZW50ZWQ6ICR7ZXZlbnQuZGVmYXVsdFByZXZlbnRlZH0gPGJyPmA7Cisg
ICAgfSwgZmFsc2UpOworCisgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmFkZEV2ZW50TGlz
dGVuZXIoInRvdWNobW92ZSIsIGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGV2ZW50LnByZXZl
bnREZWZhdWx0KCk7CisgICAgICAgIG91dHB1dCArPSBgdG91Y2htb3ZlIG9uIGRvY3VtZW50RWxl
bWVudCAtIGNhbmNlbGFibGU6ICR7ZXZlbnQuY2FuY2VsYWJsZX0gZGVmYXVsdFByZXZlbnRlZDog
JHtldmVudC5kZWZhdWx0UHJldmVudGVkfSA8YnI+YDsKKyAgICB9LCBmYWxzZSk7CisKKyAgICBk
b2N1bWVudC5kb2N1bWVudEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hlbmQiLCBmdW5j
dGlvbihldmVudCkgeworICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworICAgICAgICBv
dXRwdXQgKz0gYHRvdWNoZW5kIG9uIGRvY3VtZW50RWxlbWVudCAtIGNhbmNlbGFibGU6ICR7ZXZl
bnQuY2FuY2VsYWJsZX0gZGVmYXVsdFByZXZlbnRlZDogJHtldmVudC5kZWZhdWx0UHJldmVudGVk
fSA8YnI+YDsKKyAgICB9LCBmYWxzZSk7CisKKyAgICBsZXQgYm9keSA9IGRvY3VtZW50LnF1ZXJ5
U2VsZWN0b3IoImJvZHkiKTsKKworICAgIGJvZHkuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFy
dCIsIGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7Cisg
ICAgICAgIG91dHB1dCArPSBgdG91Y2hzdGFydCBvbiBib2R5IC0gY2FuY2VsYWJsZTogJHtldmVu
dC5jYW5jZWxhYmxlfSBkZWZhdWx0UHJldmVudGVkOiAke2V2ZW50LmRlZmF1bHRQcmV2ZW50ZWR9
IDxicj5gOworICAgIH0sIGZhbHNlKTsKKworICAgIGJvZHkuYWRkRXZlbnRMaXN0ZW5lcigidG91
Y2htb3ZlIiwgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQo
KTsKKyAgICAgICAgb3V0cHV0ICs9IGB0b3VjaG1vdmUgb24gYm9keSAtIGNhbmNlbGFibGU6ICR7
ZXZlbnQuY2FuY2VsYWJsZX0gZGVmYXVsdFByZXZlbnRlZDogJHtldmVudC5kZWZhdWx0UHJldmVu
dGVkfSA8YnI+YDsKKyAgICB9LCBmYWxzZSk7CisKKyAgICBib2R5LmFkZEV2ZW50TGlzdGVuZXIo
InRvdWNoZW5kIiwgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZXZlbnQucHJldmVudERlZmF1
bHQoKTsKKyAgICAgICAgb3V0cHV0ICs9IGB0b3VjaGVuZCBvbiBib2R5IC0gY2FuY2VsYWJsZTog
JHtldmVudC5jYW5jZWxhYmxlfSBkZWZhdWx0UHJldmVudGVkOiAke2V2ZW50LmRlZmF1bHRQcmV2
ZW50ZWR9IDxicj5gOworICAgIH0sIGZhbHNlKTsKKworICAgIGlmICh0ZXN0UnVubmVyLnJ1blVJ
U2NyaXB0KSB7CisgICAgICAgIHRlc3RSdW5uZXIucnVuVUlTY3JpcHQoZ2V0VUlTY3JpcHQoKSwg
ZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgICAgICAgICBvdXRwdXQgKz0gcmVzdWx0OworICAgICAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm91dHB1dCIpLmlubmVySFRNTCA9IG91dHB1
dDsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICB9KTsKKyAg
ICB9Cit9CisKK3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgcnVuVGVzdCwgZmFsc2Up
OworPC9zY3JpcHQ+Cis8ZGl2IGlkPW91dHB1dD4KK1RoaXMgdGVzdCByZXF1aXJlcyBVSVNjcmlw
dENvbnRyb2xsZXIgdG8gcnVuLgorPC9kaXY+Cis8ZGl2IHN0eWxlPSJoZWlnaHQ6IDUwMHZoIj4K
KyAgICBUaGlzIGlzIGEgdGFsbCBlbGVtZW50IHRvIG1ha2Ugc3VyZSB0aGVyZSBpcyBzb21ldGhp
bmcgdG8gc2Nyb2xsLgorPC9kaXY+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy90b3VjaC9pb3MvcGFzc2l2ZS1ieS1kZWZhdWx0LW92ZXJyaWRkZW4tb24tZG9jdW1lbnQtYW5k
LXdpbmRvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9pb3Mv
cGFzc2l2ZS1ieS1kZWZhdWx0LW92ZXJyaWRkZW4tb24tZG9jdW1lbnQtYW5kLXdpbmRvdy1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZGYxZDFhMTUzMDM3NWVlZWRmNDkwZmVlOWUxOTc4MTAwYjVh
YjJlOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2lv
cy9wYXNzaXZlLWJ5LWRlZmF1bHQtb3ZlcnJpZGRlbi1vbi1kb2N1bWVudC1hbmQtd2luZG93LWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACit0b3VjaHN0YXJ0IG9uIGJvZHkgLSBjYW5jZWxh
YmxlOiB0cnVlIGRlZmF1bHRQcmV2ZW50ZWQ6IHRydWUgCit0b3VjaHN0YXJ0IG9uIGRvY3VtZW50
RWxlbWVudCAtIGNhbmNlbGFibGU6IHRydWUgZGVmYXVsdFByZXZlbnRlZDogdHJ1ZSAKK3RvdWNo
c3RhcnQgb24gZG9jdW1lbnQgLSBjYW5jZWxhYmxlOiB0cnVlIGRlZmF1bHRQcmV2ZW50ZWQ6IHRy
dWUgCit0b3VjaHN0YXJ0IG9uIHdpbmRvdyAtIGNhbmNlbGFibGU6IHRydWUgZGVmYXVsdFByZXZl
bnRlZDogdHJ1ZSAKK3RvdWNobW92ZSBvbiBib2R5IC0gY2FuY2VsYWJsZTogdHJ1ZSBkZWZhdWx0
UHJldmVudGVkOiB0cnVlIAordG91Y2htb3ZlIG9uIGRvY3VtZW50RWxlbWVudCAtIGNhbmNlbGFi
bGU6IHRydWUgZGVmYXVsdFByZXZlbnRlZDogdHJ1ZSAKK3RvdWNobW92ZSBvbiBkb2N1bWVudCAt
IGNhbmNlbGFibGU6IHRydWUgZGVmYXVsdFByZXZlbnRlZDogdHJ1ZSAKK3RvdWNobW92ZSBvbiB3
aW5kb3cgLSBjYW5jZWxhYmxlOiB0cnVlIGRlZmF1bHRQcmV2ZW50ZWQ6IHRydWUgCit0b3VjaGVu
ZCBvbiBib2R5IC0gY2FuY2VsYWJsZTogdHJ1ZSBkZWZhdWx0UHJldmVudGVkOiB0cnVlIAordG91
Y2hlbmQgb24gZG9jdW1lbnRFbGVtZW50IC0gY2FuY2VsYWJsZTogdHJ1ZSBkZWZhdWx0UHJldmVu
dGVkOiB0cnVlIAordG91Y2hlbmQgb24gZG9jdW1lbnQgLSBjYW5jZWxhYmxlOiB0cnVlIGRlZmF1
bHRQcmV2ZW50ZWQ6IHRydWUgCit0b3VjaGVuZCBvbiB3aW5kb3cgLSBjYW5jZWxhYmxlOiB0cnVl
IGRlZmF1bHRQcmV2ZW50ZWQ6IHRydWUgCitEb25lCitUaGlzIGlzIGEgdGFsbCBlbGVtZW50IHRv
IG1ha2Ugc3VyZSB0aGVyZSBpcyBzb21ldGhpbmcgdG8gc2Nyb2xsLgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvaW9zL3Bhc3NpdmUtYnktZGVmYXVsdC1vdmVycmlk
ZGVuLW9uLWRvY3VtZW50LWFuZC13aW5kb3cuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L3RvdWNoL2lvcy9wYXNzaXZlLWJ5LWRlZmF1bHQtb3ZlcnJpZGRlbi1vbi1kb2N1bWVudC1hbmQt
d2luZG93Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzg5OTFmOGIyMmQzOTFlMTY1ZDlmNjliMDhlZWVkYTY3
ZDk0YTJmNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNo
L2lvcy9wYXNzaXZlLWJ5LWRlZmF1bHQtb3ZlcnJpZGRlbi1vbi1kb2N1bWVudC1hbmQtd2luZG93
Lmh0bWwKQEAgLTAsMCArMSw5OCBAQAorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikg
eworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGls
RG9uZSgpOworfQorCitmdW5jdGlvbiBnZXRVSVNjcmlwdCgpCit7CisgICAgcmV0dXJuIGAKKyAg
ICAoZnVuY3Rpb24oKSB7CisgICAgICAgIHVpQ29udHJvbGxlci5kcmFnRnJvbVBvaW50VG9Qb2lu
dCg1MCwgMjUwLCA1MCwgMzAsIDAuMSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB1aUNvbnRy
b2xsZXIudWlTY3JpcHRDb21wbGV0ZSgiRG9uZSIpOworICAgICAgICB9KTsKKyAgICB9KSgpO2AK
K30KKworZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAgbGV0IG91dHB1dCA9ICIiOworICAgIHdp
bmRvdy5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaHN0YXJ0IiwgZnVuY3Rpb24oZXZlbnQpIHsKKyAg
ICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAgICAgICAgb3V0cHV0ICs9IGB0b3VjaHN0
YXJ0IG9uIHdpbmRvdyAtIGNhbmNlbGFibGU6ICR7ZXZlbnQuY2FuY2VsYWJsZX0gZGVmYXVsdFBy
ZXZlbnRlZDogJHtldmVudC5kZWZhdWx0UHJldmVudGVkfSA8YnI+YDsKKyAgICB9LCB7ICJwYXNz
aXZlIjogZmFsc2UgfSk7CisKKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2htb3Zl
IiwgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAg
ICAgICAgb3V0cHV0ICs9IGB0b3VjaG1vdmUgb24gd2luZG93IC0gY2FuY2VsYWJsZTogJHtldmVu
dC5jYW5jZWxhYmxlfSBkZWZhdWx0UHJldmVudGVkOiAke2V2ZW50LmRlZmF1bHRQcmV2ZW50ZWR9
IDxicj5gOworICAgIH0sIHsgInBhc3NpdmUiOiBmYWxzZSB9KTsKKworICAgIHdpbmRvdy5hZGRF
dmVudExpc3RlbmVyKCJ0b3VjaGVuZCIsIGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGV2ZW50
LnByZXZlbnREZWZhdWx0KCk7CisgICAgICAgIG91dHB1dCArPSBgdG91Y2hlbmQgb24gd2luZG93
IC0gY2FuY2VsYWJsZTogJHtldmVudC5jYW5jZWxhYmxlfSBkZWZhdWx0UHJldmVudGVkOiAke2V2
ZW50LmRlZmF1bHRQcmV2ZW50ZWR9IDxicj5gOworICAgIH0sIHsgInBhc3NpdmUiOiBmYWxzZSB9
KTsKKworICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoc3RhcnQiLCBmdW5jdGlv
bihldmVudCkgeworICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworICAgICAgICBvdXRw
dXQgKz0gYHRvdWNoc3RhcnQgb24gZG9jdW1lbnQgLSBjYW5jZWxhYmxlOiAke2V2ZW50LmNhbmNl
bGFibGV9IGRlZmF1bHRQcmV2ZW50ZWQ6ICR7ZXZlbnQuZGVmYXVsdFByZXZlbnRlZH0gPGJyPmA7
CisgICAgfSwgeyAicGFzc2l2ZSI6IGZhbHNlIH0pOworCisgICAgZG9jdW1lbnQuYWRkRXZlbnRM
aXN0ZW5lcigidG91Y2htb3ZlIiwgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZXZlbnQucHJl
dmVudERlZmF1bHQoKTsKKyAgICAgICAgb3V0cHV0ICs9IGB0b3VjaG1vdmUgb24gZG9jdW1lbnQg
LSBjYW5jZWxhYmxlOiAke2V2ZW50LmNhbmNlbGFibGV9IGRlZmF1bHRQcmV2ZW50ZWQ6ICR7ZXZl
bnQuZGVmYXVsdFByZXZlbnRlZH0gPGJyPmA7CisgICAgfSwgeyAicGFzc2l2ZSI6IGZhbHNlIH0p
OworCisgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hlbmQiLCBmdW5jdGlvbihl
dmVudCkgeworICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworICAgICAgICBvdXRwdXQg
Kz0gYHRvdWNoZW5kIG9uIGRvY3VtZW50IC0gY2FuY2VsYWJsZTogJHtldmVudC5jYW5jZWxhYmxl
fSBkZWZhdWx0UHJldmVudGVkOiAke2V2ZW50LmRlZmF1bHRQcmV2ZW50ZWR9IDxicj5gOworICAg
IH0sIHsgInBhc3NpdmUiOiBmYWxzZSB9KTsKKworICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVu
dC5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaHN0YXJ0IiwgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAg
ICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAgICAgICAgb3V0cHV0ICs9IGB0b3VjaHN0YXJ0
IG9uIGRvY3VtZW50RWxlbWVudCAtIGNhbmNlbGFibGU6ICR7ZXZlbnQuY2FuY2VsYWJsZX0gZGVm
YXVsdFByZXZlbnRlZDogJHtldmVudC5kZWZhdWx0UHJldmVudGVkfSA8YnI+YDsKKyAgICB9LCB7
ICJwYXNzaXZlIjogZmFsc2UgfSk7CisKKyAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuYWRk
RXZlbnRMaXN0ZW5lcigidG91Y2htb3ZlIiwgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZXZl
bnQucHJldmVudERlZmF1bHQoKTsKKyAgICAgICAgb3V0cHV0ICs9IGB0b3VjaG1vdmUgb24gZG9j
dW1lbnRFbGVtZW50IC0gY2FuY2VsYWJsZTogJHtldmVudC5jYW5jZWxhYmxlfSBkZWZhdWx0UHJl
dmVudGVkOiAke2V2ZW50LmRlZmF1bHRQcmV2ZW50ZWR9IDxicj5gOworICAgIH0sIHsgInBhc3Np
dmUiOiBmYWxzZSB9KTsKKworICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5hZGRFdmVudExp
c3RlbmVyKCJ0b3VjaGVuZCIsIGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGV2ZW50LnByZXZl
bnREZWZhdWx0KCk7CisgICAgICAgIG91dHB1dCArPSBgdG91Y2hlbmQgb24gZG9jdW1lbnRFbGVt
ZW50IC0gY2FuY2VsYWJsZTogJHtldmVudC5jYW5jZWxhYmxlfSBkZWZhdWx0UHJldmVudGVkOiAk
e2V2ZW50LmRlZmF1bHRQcmV2ZW50ZWR9IDxicj5gOworICAgIH0sIHsgInBhc3NpdmUiOiBmYWxz
ZSB9KTsKKworICAgIGxldCBib2R5ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiYm9keSIpOwor
CisgICAgYm9keS5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaHN0YXJ0IiwgZnVuY3Rpb24oZXZlbnQp
IHsKKyAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAgICAgICAgb3V0cHV0ICs9IGB0
b3VjaHN0YXJ0IG9uIGJvZHkgLSBjYW5jZWxhYmxlOiAke2V2ZW50LmNhbmNlbGFibGV9IGRlZmF1
bHRQcmV2ZW50ZWQ6ICR7ZXZlbnQuZGVmYXVsdFByZXZlbnRlZH0gPGJyPmA7CisgICAgfSwgeyAi
cGFzc2l2ZSI6IGZhbHNlIH0pOworCisgICAgYm9keS5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaG1v
dmUiLCBmdW5jdGlvbihldmVudCkgeworICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwor
ICAgICAgICBvdXRwdXQgKz0gYHRvdWNobW92ZSBvbiBib2R5IC0gY2FuY2VsYWJsZTogJHtldmVu
dC5jYW5jZWxhYmxlfSBkZWZhdWx0UHJldmVudGVkOiAke2V2ZW50LmRlZmF1bHRQcmV2ZW50ZWR9
IDxicj5gOworICAgIH0sIHsgInBhc3NpdmUiOiBmYWxzZSB9KTsKKworICAgIGJvZHkuYWRkRXZl
bnRMaXN0ZW5lcigidG91Y2hlbmQiLCBmdW5jdGlvbihldmVudCkgeworICAgICAgICBldmVudC5w
cmV2ZW50RGVmYXVsdCgpOworICAgICAgICBvdXRwdXQgKz0gYHRvdWNoZW5kIG9uIGJvZHkgLSBj
YW5jZWxhYmxlOiAke2V2ZW50LmNhbmNlbGFibGV9IGRlZmF1bHRQcmV2ZW50ZWQ6ICR7ZXZlbnQu
ZGVmYXVsdFByZXZlbnRlZH0gPGJyPmA7CisgICAgfSwgeyAicGFzc2l2ZSI6IGZhbHNlIH0pOwor
CisgICAgaWYgKHRlc3RSdW5uZXIucnVuVUlTY3JpcHQpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5y
dW5VSVNjcmlwdChnZXRVSVNjcmlwdCgpLCBmdW5jdGlvbihyZXN1bHQpIHsKKyAgICAgICAgICAg
IG91dHB1dCArPSByZXN1bHQ7CisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
b3V0cHV0IikuaW5uZXJIVE1MID0gb3V0cHV0OworICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7CisgICAgICAgIH0pOworICAgIH0KK30KKword2luZG93LmFkZEV2ZW50TGlzdGVu
ZXIoJ2xvYWQnLCBydW5UZXN0LCB7ICJwYXNzaXZlIjogZmFsc2UgfSk7Cis8L3NjcmlwdD4KKzxk
aXYgaWQ9b3V0cHV0PgorVGhpcyB0ZXN0IHJlcXVpcmVzIFVJU2NyaXB0Q29udHJvbGxlciB0byBy
dW4uCis8L2Rpdj4KKzxkaXYgc3R5bGU9ImhlaWdodDogNTAwdmgiPgorICAgIFRoaXMgaXMgYSB0
YWxsIGVsZW1lbnQgdG8gbWFrZSBzdXJlIHRoZXJlIGlzIHNvbWV0aGluZyB0byBzY3JvbGwuCis8
L2Rpdj4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2lvcy90YXAt
d2l0aC1hY3RpdmUtbGlzdGVuZXItb24td2luZG93Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy90b3VjaC9pb3MvdGFwLXdpdGgtYWN0aXZlLWxpc3RlbmVyLW9uLXdpbmRvdy5odG1sCmlu
ZGV4IGIzNjcwNzQyM2EwNjAwYmNmODdiN2JhYTAwNDhkOWIwOTdhYjViMjAuLjdiYWFhMzg4YjU0
NzcyYjI5MmY2ZjlmYWExYzdiYzI4Zjk5YTc0NjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL3RvdWNoL2lvcy90YXAtd2l0aC1hY3RpdmUtbGlzdGVuZXItb24td2luZG93Lmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvaW9zL3RhcC13aXRoLWFjdGl2
ZS1saXN0ZW5lci1vbi13aW5kb3cuaHRtbApAQCAtMjQsNyArMjQsNyBAQAogICAgICAgICAgICAg
d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCBmdW5jdGlvbihldmVudCkgewog
ICAgICAgICAgICAgICAgIG91dHB1dCArPSAnUmVjZWl2ZWQnICsgKGV2ZW50LmNhbmNlbGFibGUg
PyAnIGNhbmNlbGFibGUnIDogJycpICsgJyBldmVudCAnICsgZXZlbnQudHlwZSArICcgYXQgJyAr
IGV2ZW50LnRvdWNoZXNbMF0uY2xpZW50WCArICcsICcgKyBldmVudC50b3VjaGVzWzBdLmNsaWVu
dFkgKyAnPGJyPic7CiAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKLSAg
ICAgICAgICAgIH0pOworICAgICAgICAgICAgfSwgeyBwYXNzaXZlOiBmYWxzZSB9KTsKIAogICAg
ICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgZnVuY3Rpb24oZXZl
bnQpIHsKICAgICAgICAgICAgICAgICBvdXRwdXQgKz0gJ1JlY2VpdmVkJyArIChldmVudC5jYW5j
ZWxhYmxlID8gJyBjYW5jZWxhYmxlJyA6ICcnKSArICcgZXZlbnQgJyArIGV2ZW50LnR5cGUgKyAn
PGJyPic7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9pb3MvdG91
Y2gtZXZlbnQtcmVnaW9ucy9kb2N1bWVudC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
dG91Y2gvaW9zL3RvdWNoLWV2ZW50LXJlZ2lvbnMvZG9jdW1lbnQuaHRtbAppbmRleCA5MTE2Yjc3
OWY0NDZjZWEwOTkyYzUzMDkzNDYyY2ViZGZlNWQxNjRhLi4wYWQyNjFkNTgyOTFhNWRhZTg3YWM0
NTU2MDI4ZTUzY2RlNjY5MTRhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90
b3VjaC9pb3MvdG91Y2gtZXZlbnQtcmVnaW9ucy9kb2N1bWVudC5odG1sCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2lvcy90b3VjaC1ldmVudC1yZWdpb25zL2RvY3VtZW50Lmh0
bWwKQEAgLTEzLDcgKzEzLDcgQEAKIDwvaGVhZD4KIDxib2R5PgogICAgIDxzY3JpcHQ+Ci0gICAg
ICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCBmdW5jdGlvbigpIHsg
fSk7CisgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCBmdW5j
dGlvbigpIHsgfSwgeyBwYXNzaXZlOiBmYWxzZSB9KTsKICAgICA8L3NjcmlwdD4KIDwvYm9keT4K
IDwvaHRtbD4K
</data>
<flag name="review"
          id="339210"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>