<?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>160222</bug_id>
          
          <creation_ts>2016-07-26 16:15:18 -0700</creation_ts>
          <short_desc>HTMLVideoElement with MediaStream src shows paused image when all video tracks are disabled</short_desc>
          <delta_ts>2016-07-29 10:01:19 -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>Media</component>
          <version>WebKit Local Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>Other</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>Minor</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>160314</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="George Ruan">gruan</reporter>
          <assigned_to name="George Ruan">gruan</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1214736</commentid>
    <comment_count>0</comment_count>
    <who name="George Ruan">gruan</who>
    <bug_when>2016-07-26 16:15:18 -0700</bug_when>
    <thetext>According to HTML 5 Spec https://w3c.github.io/mediacapture-main/#life-cycle-and-media-flow, &quot;A muted or disabled MediaStreamTrack renders either silence (audio), black frames (video), or a zero-information-content equivalent.&quot;

Currently, when all MediaStreamTracks are disabled, the video renders a paused image from the last moment that the MediaStream had a track that was enabled.

It&apos;s preferred that the HTMLVideoElement render black frames for video, since 
- The MSE equivalent of de-selecting all tracks renders black frames.
- If a canvas is painted to from a HTMLVideoElement with all of its tracks disabled, it is painted black.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214737</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-07-26 16:16:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/27557313&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1215011</commentid>
    <comment_count>2</comment_count>
      <attachid>284725</attachid>
    <who name="George Ruan">gruan</who>
    <bug_when>2016-07-27 13:51:35 -0700</bug_when>
    <thetext>Created attachment 284725
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1215024</commentid>
    <comment_count>3</comment_count>
      <attachid>284725</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2016-07-27 14:07:10 -0700</bug_when>
    <thetext>Comment on attachment 284725
Patch

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

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:153
&gt; +    if ([m_sampleBufferDisplayLayer isReadyForMoreMediaData]) {
&gt; +        if (m_displayMode == LivePreview)
&gt; +            return true;
&gt; +
&gt; +        if (m_displayMode == PausedImage &amp;&amp; !m_isFrameDisplayed)
&gt; +            return true;
&gt; +    }

Nit: I would get rid of this indentation by returning false immediately if the layer is not ready for media data.

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:296
&gt; +    RefPtr&lt;Image&gt; image = m_mediaStreamPrivate-&gt;currentFrameImage();
&gt; +
&gt; +    ASSERT(image);

If there is a chance that currentFrameImage() can return null, you should add an early return here so we don&apos;t crash in a release build.

&gt; LayoutTests/fast/mediastream/MediaStream-video-element-video-tracks-disabled-then-enabled.html:52
&gt; +        setTimeout(function() {
&gt; +            attempt(--numberOfTries, call, callback, successMessage);
&gt; +        }, 50);

Nit: Fat arrow functions are the new hotness:

setTimeout(() =&gt; { attempt(--numberOfTries, call, callback, successMessage) }, 50);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1215054</commentid>
    <comment_count>4</comment_count>
      <attachid>284734</attachid>
    <who name="George Ruan">gruan</who>
    <bug_when>2016-07-27 15:15:23 -0700</bug_when>
    <thetext>Created attachment 284734
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1215286</commentid>
    <comment_count>5</comment_count>
      <attachid>284734</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-28 11:19:15 -0700</bug_when>
    <thetext>Comment on attachment 284734
Patch

Rejecting attachment 284734 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-02&apos;, &apos;land-attachment&apos;, &apos;--force-clean&apos;, &apos;--non-interactive&apos;, &apos;--parent-command=commit-queue&apos;, 284734, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
fs/remotes/origin/master/.rev_map.268f45cc-cd09-0410-ab3c-d52691b4dbfc ...
Currently at 203818 = d76af4e2980eab559600f17125b3742ef227f3a5
r203819 = 27a911a3631a0d8ca8528f7c68b6b64cbbdea797
r203820 = ee06b56411117e8d1d0a74edf13229b6250c64ce
r203821 = 3a6b2d23ab1bb3e1e7bc7332393d878c130ac67e
Done rebuilding .git/svn/refs/remotes/origin/master/.rev_map.268f45cc-cd09-0410-ab3c-d52691b4dbfc
First, rewinding head to replay your work on top of it...
Fast-forwarded master to refs/remotes/origin/master.

Full output: http://webkit-queues.webkit.org/results/1768705</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1215296</commentid>
    <comment_count>6</comment_count>
      <attachid>284734</attachid>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2016-07-28 11:27:35 -0700</bug_when>
    <thetext>Comment on attachment 284734
Patch

Clearing flags on attachment: 284734

Committed r203826: &lt;http://trac.webkit.org/changeset/203826&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1215297</commentid>
    <comment_count>7</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2016-07-28 11:27:39 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1215378</commentid>
    <comment_count>8</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2016-07-28 13:59:20 -0700</bug_when>
    <thetext>The test for this change is failing on El Capitan WK2:
https://build.webkit.org/results/Apple%20El%20Capitan%20Release%20WK2%20(Tests)/r203830%20(8053)/results.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1215381</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-28 14:00:44 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 160314</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1215465</commentid>
    <comment_count>10</comment_count>
      <attachid>284839</attachid>
    <who name="George Ruan">gruan</who>
    <bug_when>2016-07-28 16:58:53 -0700</bug_when>
    <thetext>Created attachment 284839
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1215570</commentid>
    <comment_count>11</comment_count>
      <attachid>284839</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-29 10:01:15 -0700</bug_when>
    <thetext>Comment on attachment 284839
Patch

Clearing flags on attachment: 284839

Committed r203901: &lt;http://trac.webkit.org/changeset/203901&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1215571</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-29 10:01:19 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284725</attachid>
            <date>2016-07-27 13:51:35 -0700</date>
            <delta_ts>2016-07-27 15:15:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160222-20160727135024.patch</filename>
            <type>text/plain</type>
            <size>18388</size>
            <attacher name="George Ruan">gruan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzMzg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTQ1NmM0YjhhMDA1MjJl
MTBkZDIxZjcxN2Y2ZWNlZDllMDAwNjJkZS4uNmJmYTVjOWEwN2IwMDllMTI4YTE5MTRlMzQxOGE4
Mzg2Mzc3ZDQyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE2LTA3LTI3ICBHZW9y
Z2UgUnVhbiAgPGdydWFuQGFwcGxlLmNvbT4KKworICAgICAgICBIVE1MVmlkZW9FbGVtZW50IHdp
dGggTWVkaWFTdHJlYW0gc3JjIHNob3dzIHBhdXNlZCBpbWFnZSB3aGVuIGFsbCB2aWRlbyB0cmFj
a3MgYXJlIGRpc2FibGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNjAyMjIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI3NTU3MzEzPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzOiBmYXN0L21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtLXZpZGVvLWVsZW1lbnQtdmlkZW8tdHJhY2tzLWRpc2FibGVk
LXRoZW4tZW5hYmxlZC5odG1sCisgICAgICAgICAgICAgICBmYXN0L21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtLXZpZGVvLWVsZW1lbnQtdmlkZW8tdHJhY2tzLWRpc2FibGVkLmh0bWwKKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZW5x
dWV1ZVZpZGVvU2FtcGxlQnVmZmVyRnJvbVRyYWNrKTogQ2hhbmdlIGNyaXRlcmlhIHRvIGVucXVl
dWUgYSAKKyAgICAgICAgU2FtcGxlIEJ1ZmZlciB0byB0aGUgQVZTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXIgdG8gYWxsb3cgYW4gaW5pdGlhbCBmcmFtZSB0byBiZSBzaG93bi4KKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2hvdWxkRW5xdWV1
ZVZpZGVvU2FtcGxlQnVmZmVyKTogQWxsb3cgYW4gaW5pdGlhbCBmcmFtZSB0byBiZSBzaG93bi4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6
Zmx1c2hBbmRSZW1vdmVWaWRlb1NhbXBsZUJ1ZmZlcnMpOiBSZW1vdmVzIGFsbCBidWZmZXJzIGZy
b20gdGhlIAorICAgICAgICBBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci4KKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZW5zdXJlTGF5ZXIp
OiBNYWtlIHRoZSBBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcidzIGJhY2tncm91bmQgYmxhY2su
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6
OnVwZGF0ZURpc3BsYXlNb2RlKTogUmVtb3ZlIGFsbCBidWZmZXJzIGZyb20gdGhlIEFWU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyCisgICAgICAgIHdoZW4gc3RhdGUgb2YgTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDIGlzIGNoYW5nZWQgdG8gTm9uZSBvZiBQYWludEl0QmxhY2su
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6
OnVwZGF0ZVBhdXNlZEltYWdlKTogVXBkYXRlcyBwYXVzZWQgaW1hZ2UuCisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBhdXNlKTogQ2FsbHMg
dXBkYXRlUGF1c2VkSW1hZ2UuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVN0cmVhbUFWRk9iakM6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KTogQWxsb3cgYW4g
aW5pdGlhbCBmcmFtZSB0byBiZSBwYWludGVkIHRvIGNhbnZhcy4KKwogMjAxNi0wNy0yNiAgR2Vv
cmdlIFJ1YW4gIDxncnVhbkBhcHBsZS5jb20+CiAKICAgICAgICAgSFRNTFZpZGVvRWxlbWVudCBm
cmFtZXMgZG8gbm90IHVwZGF0ZSBvbiBpT1Mgd2hlbiBzcmMgaXMgYSBNZWRpYVN0cmVhbSBibG9i
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oCmluZGV4IDczNjBmMjRlNjBlM2MwNmEyYzEzZjBlZGU3
ZmZmNjQ5MmYwZWE3NWIuLjY5ZDNiMmVkNTIyM2UyMDczNDg3NDg4NmE3NDQ5Y2ExMGNlOWQxY2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oCkBAIC0xMjQsNiArMTI0LDggQEAgcHJpdmF0ZToK
IAogICAgIHZvaWQgZW5xdWV1ZUF1ZGlvU2FtcGxlQnVmZmVyRnJvbVRyYWNrKE1lZGlhU3RyZWFt
VHJhY2tQcml2YXRlJiwgUGxhdGZvcm1TYW1wbGUpOwogICAgIHZvaWQgZW5xdWV1ZVZpZGVvU2Ft
cGxlQnVmZmVyRnJvbVRyYWNrKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJiwgUGxhdGZvcm1TYW1w
bGUpOworICAgIGJvb2wgc2hvdWxkRW5xdWV1ZVZpZGVvU2FtcGxlQnVmZmVyKCkgY29uc3Q7Cisg
ICAgdm9pZCBmbHVzaEFuZFJlbW92ZVZpZGVvU2FtcGxlQnVmZmVycygpOwogCiAgICAgdm9pZCBw
YWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKICAgICB2
b2lkIHBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZs
b2F0UmVjdCYpIG92ZXJyaWRlOwpAQCAtMTYxLDYgKzE2Myw3IEBAIHByaXZhdGU6CiAgICAgfTsK
ICAgICBEaXNwbGF5TW9kZSBjdXJyZW50RGlzcGxheU1vZGUoKSBjb25zdDsKICAgICB2b2lkIHVw
ZGF0ZURpc3BsYXlNb2RlKCk7CisgICAgdm9pZCB1cGRhdGVQYXVzZWRJbWFnZSgpOwogCiAgICAg
Ly8gTWVkaWFTdHJlYW1Qcml2YXRlOjpPYnNlcnZlcgogICAgIHZvaWQgYWN0aXZlU3RhdHVzQ2hh
bmdlZCgpIG92ZXJyaWRlOwpAQCAtMjAxLDYgKzIwNCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBt
X2VuZGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1faGFzRXZlckVucXVldWVkVmlkZW9GcmFtZSB7
IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhc1JlY2VpdmVkTWVkaWEgeyBmYWxzZSB9OworICAgIGJv
b2wgbV9pc0ZyYW1lRGlzcGxheWVkIHsgZmFsc2UgfTsKIAogI2lmIFBMQVRGT1JNKE1BQykgJiYg
RU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxWaWRl
b0Z1bGxzY3JlZW5MYXllck1hbmFnZXI+IG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCmluZGV4IDk2OTM4MjU0MTllODI1NTQwZTg4NWY5Yzkx
ODUzYmFiZDAyMGNmZGYuLjhiOTY0ZjEwOGI2MzgyNWY1ZjYxNWMzYmI4YmUyZTZhNjZhZTczNDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KQEAgLTEyOSwxNiArMTI5LDM4IEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjplbnF1ZXVlVmlkZW9TYW1wbGVC
dWZmZXJGcm9tVHJhY2soTWVkCiAgICAgaWYgKCZ0cmFjayAhPSBtX21lZGlhU3RyZWFtUHJpdmF0
ZS0+YWN0aXZlVmlkZW9UcmFjaygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9kaXNw
bGF5TW9kZSA9PSBMaXZlUHJldmlldyAmJiBbbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgaXNS
ZWFkeUZvck1vcmVNZWRpYURhdGFdKSB7CisgICAgaWYgKHNob3VsZEVucXVldWVWaWRlb1NhbXBs
ZUJ1ZmZlcigpKSB7CiAgICAgICAgIFttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBlbnF1ZXVl
U2FtcGxlQnVmZmVyOnBsYXRmb3JtU2FtcGxlLnNhbXBsZS5jbVNhbXBsZUJ1ZmZlcl07CisgICAg
ICAgIG1faXNGcmFtZURpc3BsYXllZCA9IHRydWU7CiAgICAgICAgIAogICAgICAgICBpZiAoIW1f
aGFzRXZlckVucXVldWVkVmlkZW9GcmFtZSkgewogICAgICAgICAgICAgbV9oYXNFdmVyRW5xdWV1
ZWRWaWRlb0ZyYW1lID0gdHJ1ZTsKICAgICAgICAgICAgIG1fcGxheWVyLT5maXJzdFZpZGVvRnJh
bWVBdmFpbGFibGUoKTsKKworICAgICAgICAgICAgdXBkYXRlUGF1c2VkSW1hZ2UoKTsKICAgICAg
ICAgfQogICAgIH0KIH0KIAorYm9vbCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akM6OnNob3VsZEVucXVldWVWaWRlb1NhbXBsZUJ1ZmZlcigpIGNvbnN0Cit7CisgICAgaWYgKFtt
X3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBpc1JlYWR5Rm9yTW9yZU1lZGlhRGF0YV0pIHsKKyAg
ICAgICAgaWYgKG1fZGlzcGxheU1vZGUgPT0gTGl2ZVByZXZpZXcpCisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKworICAgICAgICBpZiAobV9kaXNwbGF5TW9kZSA9PSBQYXVzZWRJbWFnZSAmJiAh
bV9pc0ZyYW1lRGlzcGxheWVkKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisg
ICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFt
QVZGT2JqQzo6Zmx1c2hBbmRSZW1vdmVWaWRlb1NhbXBsZUJ1ZmZlcnMoKQoreworICAgIFttX3Nh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllciBmbHVzaEFuZFJlbW92ZUltYWdlXTsKKyAgICBtX2lzRnJh
bWVEaXNwbGF5ZWQgPSBmYWxzZTsKK30KKwogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0
cmVhbUFWRk9iakM6OmVuc3VyZUxheWVyKCkKIHsKICAgICBpZiAobV9zYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXIpCkBAIC0xNDgsNiArMTcwLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRp
YVN0cmVhbUFWRk9iakM6OmVuc3VyZUxheWVyKCkKICNpZm5kZWYgTkRFQlVHCiAgICAgW21fc2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyIHNldE5hbWU6QCJNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0
cmVhbUFWRk9iakMgQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIiXTsKICNlbmRpZgorICAgIG1f
c2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgpLmJhY2tncm91bmRDb2xvciA9IGNhY2hlZENH
Q29sb3IoQ29sb3I6OmJsYWNrKTsKICAgICAKICAgICByZW5kZXJpbmdNb2RlQ2hhbmdlZCgpOwog
ICAgIApAQCAtMjU3LDggKzI4MCwyNCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3Ry
ZWFtQVZGT2JqQzo6dXBkYXRlRGlzcGxheU1vZGUoKQogICAgICAgICByZXR1cm47CiAgICAgbV9k
aXNwbGF5TW9kZSA9IGRpc3BsYXlNb2RlOwogCi0gICAgaWYgKG1fZGlzcGxheU1vZGUgPT0gTm9u
ZSkKKyAgICBpZiAobV9kaXNwbGF5TW9kZSA8IFBhdXNlZEltYWdlICYmIG1fc2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyKQorICAgICAgICBmbHVzaEFuZFJlbW92ZVZpZGVvU2FtcGxlQnVmZmVycygp
OworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRl
UGF1c2VkSW1hZ2UoKQoreworICAgIEFTU0VSVChtX2Rpc3BsYXlNb2RlID09IGN1cnJlbnREaXNw
bGF5TW9kZSgpKTsKKworICAgIGlmIChtX2Rpc3BsYXlNb2RlIDwgUGF1c2VkSW1hZ2UpCiAgICAg
ICAgIHJldHVybjsKKworICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBtX21lZGlhU3RyZWFtUHJp
dmF0ZS0+Y3VycmVudEZyYW1lSW1hZ2UoKTsKKworICAgIEFTU0VSVChpbWFnZSk7CisKKyAgICBt
X3BhdXNlZEltYWdlID0gaW1hZ2UtPmdldENHSW1hZ2VSZWYoKTsKKyAgICBpZiAoIW1fcGF1c2Vk
SW1hZ2UpCisgICAgICAgIG1fZGlzcGxheU1vZGUgPSBQYWludEl0QmxhY2s7CiB9CiAKIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpwbGF5KCkKQEAgLTI4Niw2ICsz
MjUsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cGF1c2Uo
KQogICAgIG1fY2xvY2stPnN0b3AoKTsKICAgICBtX3BsYXlpbmcgPSBmYWxzZTsKICAgICB1cGRh
dGVEaXNwbGF5TW9kZSgpOworICAgIHVwZGF0ZVBhdXNlZEltYWdlKCk7CiB9CiAKIGJvb2wgTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpwYXVzZWQoKSBjb25zdApAQCAtNTc3
LDEwICs2MTcsOSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6
cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdAogCiB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7Ci0gICAgaWYg
KG1fZGlzcGxheU1vZGUgPT0gTm9uZSB8fCAhbWV0YURhdGFBdmFpbGFibGUoKSB8fCBjb250ZXh0
LnBhaW50aW5nRGlzYWJsZWQoKSB8fCAhbV9oYXZlRXZlclBsYXllZCkKKyAgICBpZiAobV9kaXNw
bGF5TW9kZSA9PSBOb25lIHx8ICFtZXRhRGF0YUF2YWlsYWJsZSgpIHx8IGNvbnRleHQucGFpbnRp
bmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLQogICAgIGlmIChtX2Rpc3BsYXlNb2Rl
ID09IExpdmVQcmV2aWV3KQogICAgICAgICBtX21lZGlhU3RyZWFtUHJpdmF0ZS0+cGFpbnRDdXJy
ZW50RnJhbWVJbkNvbnRleHQoY29udGV4dCwgcmVjdCk7CiAgICAgZWxzZSB7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMjUx
MTY0ZmNlZWNhOGE1Y2NlNWQxY2FhZjI1OWE3MTcwYmZlZGMzYy4uMDEzMDEzNWY0NTkzOTY1NTRk
ZGU4Y2QwNGI0MGJiMDQzMDYxYzA2MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE2LTA3LTI3
ICBHZW9yZ2UgUnVhbiAgPGdydWFuQGFwcGxlLmNvbT4KKworICAgICAgICBIVE1MVmlkZW9FbGVt
ZW50IHdpdGggTWVkaWFTdHJlYW0gc3JjIHNob3dzIHBhdXNlZCBpbWFnZSB3aGVuIGFsbCB2aWRl
byB0cmFja3MgYXJlIGRpc2FibGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjAyMjIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI3NTU3MzEzPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS12aWRlby1lbGVtZW50LXZpZGVvLXRyYWNrcy1kaXNhYmxl
ZC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtLXZpZGVvLWVsZW1lbnQtdmlkZW8tdHJhY2tzLWRpc2FibGVkLXRoZW4tZW5hYmxlZC1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW0tdmlkZW8tZWxlbWVudC12aWRlby10cmFja3MtZGlzYWJsZWQtdGhlbi1lbmFibGVkLmh0bWw6
IEFkZGVkLiBDaGVja3MgCisgICAgICAgIHRoYXQgdGhlIHZpZGVvIGZyYW1lcyBkaXNwbGF5IGNh
cHR1cmVkIG1lZGlhIGlmIGFsbCB2aWRlbyB0cmFja3Mgd2VyZSBkaXNhYmxlZCBhbmQgdGhlbiBh
IHNpbmdsZQorICAgICAgICB2aWRlbyB0cmFjayBpcyByZS1lbmFibGVkLiBUaGlzIHRlc3QgYWxz
byBjaGVja3MgdGhhdCBhbiBpbml0aWFsIGZyYW1lIGlzIHBhaW50ZWQgdG8gCisgICAgICAgIGNh
bnZhcyBpZiB0aGUgdmlkZW8gaGFzIG5vdCB5ZXQgYmVlbiBwbGF5ZWQuCisgICAgICAgICogZmFz
dC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS12aWRlby1lbGVtZW50LXZpZGVvLXRyYWNrcy1kaXNh
YmxlZC5odG1sOiBBZGRlZC4gUmVmZXJlbmNlIHRlc3RzIHRoZSAKKyAgICAgICAgZnJhbWVzIG9m
IHRoZSB2aWRlbyB0byBiZSBibGFjaywgc2luY2UgdGhlIGNhbnZhcyBpcyBwYWludGVkIGJsYWNr
IHJlZ2FyZGxlc3Mgb2YgdGhlIHN0YXRlIG9mIHRoZSB2aWRlbyBmcmFtZXMKKyAgICAgICAgaWYg
ZGlzcGxheU1vZGUgb2YgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDIGlzIFBh
aW50SXRCbGFjay4KKwogMjAxNi0wNy0yNiAgR2VvcmdlIFJ1YW4gIDxncnVhbkBhcHBsZS5jb20+
CiAKICAgICAgICAgSFRNTFZpZGVvRWxlbWVudCBmcmFtZXMgZG8gbm90IHVwZGF0ZSBvbiBpT1Mg
d2hlbiBzcmMgaXMgYSBNZWRpYVN0cmVhbSBibG9iCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLXZpZGVvLWVsZW1lbnQtdmlkZW8tdHJhY2tzLWRp
c2FibGVkLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtLXZpZGVvLWVsZW1lbnQtdmlkZW8tdHJhY2tzLWRpc2FibGVkLWV4cGVjdGVkLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNWM1NTY5ODIyNDdjMTg1M2I3ODA2NzI3YjJiOTAwNDU3NjIxZWFlMAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0t
dmlkZW8tZWxlbWVudC12aWRlby10cmFja3MtZGlzYWJsZWQtZXhwZWN0ZWQuaHRtbApAQCAtMCww
ICsxLDM2IEBACis8IURPQ1RZUEUgaHRtbD4KKworPGh0bWw+Cis8aGVhZD4KKyAgICA8c3R5bGU+
CisgICAgICAgIC52aWRlbyB7CisgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAg
ICAgICAgICBsZWZ0OiAxMHB4OworICAgICAgICAgICAgdG9wOiA1MHB4OworICAgICAgICAgICAg
aGVpZ2h0OiAzNjBweDsKKyAgICAgICAgICAgIHdpZHRoOiA2ODBweDsKKyAgICAgICAgICAgIGJh
Y2tncm91bmQtY29sb3I6IGJsYWNrOworICAgICAgICAgICAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9y
bTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLm1hc2tlciB7CisgICAgICAgICAgICBw
b3NpdGlvbjogYWJzb2x1dGU7CisgICAgICAgICAgICBsZWZ0OiAxMHB4OworICAgICAgICAgICAg
dG9wOiA1MHB4OworICAgICAgICAgICAgaGVpZ2h0OiAzNjBweDsKKyAgICAgICAgICAgIHdpZHRo
OiA2ODBweDsKKyAgICAgICAgICAgIGJvcmRlci10b3A6IDUwcHggc29saWQgd2hpdGU7CisgICAg
ICAgICAgICBib3JkZXItcmlnaHQ6IDMwMHB4IHNvbGlkIHdoaXRlOworICAgICAgICAgICAgYm9y
ZGVyLWJvdHRvbTogNTBweCBzb2xpZCB3aGl0ZTsKKyAgICAgICAgICAgIGJvcmRlci1sZWZ0OiAz
MDBweCBzb2xpZCB3aGl0ZTsKKyAgICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7Cisg
ICAgICAgIH0KKyAgICA8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8cD5UZXN0cyB0aGF0IHRo
ZSB2aWRlbyBmcmFtZXMgb2YgYW4gSFRNTFZpZGVvRWxlbWVudCBhcmUgYmxhY2sgaWYgbm8gdmlk
ZW8gTWVkaWFTdHJlYW1UcmFjayBpcyBlbmFibGVkLjwvcD4KKzxkaXYgY2xhc3M9InZpZGVvIj48
L2Rpdj4KKzxkaXYgY2xhc3M9Im1hc2tlciI+PC9kaXY+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tdmlkZW8t
ZWxlbWVudC12aWRlby10cmFja3MtZGlzYWJsZWQtdGhlbi1lbmFibGVkLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tdmlkZW8tZWxlbWVudC12
aWRlby10cmFja3MtZGlzYWJsZWQtdGhlbi1lbmFibGVkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5kYWYwNzRkODMyZTIyMGMyYzJkNzkxNDUyZThmMGVhZmQzZTc5NzZkCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS12aWRlby1lbGVt
ZW50LXZpZGVvLXRyYWNrcy1kaXNhYmxlZC10aGVuLWVuYWJsZWQtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMzIgQEAKK1Rlc3RzIHRoYXQgcmUtZW5hYmxpbmcgYSB2aWRlbyBNZWRpYVN0cmVhbVRy
YWNrIHdoZW4gYWxsIHRyYWNrcyB3ZXJlIHByZXZpb3VzbHkgZGlzYWJsZWQgY2F1c2VzIGNhcHR1
cmVkIG1lZGlhIHRvIGRpc3BsYXkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQ
QVNTIG1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEgZ2VuZXJhdGVkIGEgc3RyZWFtIHN1Y2Nlc3Nm
dWxseS4KK3ZpZGVvLnNyYyA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKG1lZGlhU3RyZWFt
KQorCisgPT09IGJlZ2lubmluZyByb3VuZCBvZiBwaXhlbCB0ZXN0cyA9PT0KK1BBU1MgcGl4ZWwg
d2FzIHdoaXRlCisKKyA9PT0gYWxsIHZpZGVvIHRyYWNrcyBkaXNhYmxlZCA9PT0KK1BBU1MgcGl4
ZWwgd2FzIGJsYWNrLgorCisgPT09IHZpZGVvIHRyYWNrIHJlZW5hYmxlZCA9PT0KK1BBU1MgcGl4
ZWwgd2FzIHdoaXRlLgorCisgPT09PT0gcGxheSB2aWRlbyA9PT09PQordmlkZW8ucGxheSgpCisK
KyA9PT0gYmVnaW5uaW5nIHJvdW5kIG9mIHBpeGVsIHRlc3RzID09PQorUEFTUyBwaXhlbCB3YXMg
d2hpdGUKKworID09PSBhbGwgdmlkZW8gdHJhY2tzIGRpc2FibGVkID09PQorUEFTUyBwaXhlbCB3
YXMgYmxhY2suCisKKyA9PT0gdmlkZW8gdHJhY2sgcmVlbmFibGVkID09PQorUEFTUyBwaXhlbCB3
YXMgd2hpdGUuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKyAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW0tdmlkZW8tZWxlbWVudC12aWRlby10cmFja3MtZGlzYWJsZWQtdGhlbi1lbmFibGVkLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLXZpZGVvLWVsZW1lbnQt
dmlkZW8tdHJhY2tzLWRpc2FibGVkLXRoZW4tZW5hYmxlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM1ZTNi
YjQyMTU1YWJhYzQ3Nzg1NzQzNDAxYjllNWI4ZGUyYzQwMGYKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLXZpZGVvLWVsZW1lbnQtdmlk
ZW8tdHJhY2tzLWRpc2FibGVkLXRoZW4tZW5hYmxlZC5odG1sCkBAIC0wLDAgKzEsMTMwIEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4vcmVz
b3VyY2VzL2dldFVzZXJNZWRpYS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkg
b25sb2FkPSJzdGFydCgpIj4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8dmlkZW8gY29udHJvbHMgd2lkdGg9IjY4MCIgaGVpZ2h0PSIzNjAiPjwv
dmlkZW8+Cis8Y2FudmFzIHdpZHRoPSI2ODAiIGhlaWdodD0iMzYwIj48L2NhbnZhcz4KKzxzY3Jp
cHQ+CisgICAgbGV0IGNhbnZhczsKKyAgICBsZXQgY29udGV4dDsKKyAgICBsZXQgbWVkaWFTdHJl
YW07CisgICAgbGV0IHZpZGVvOworICAgIAorICAgIGxldCBidWZmZXI7CisKKyAgICBmdW5jdGlv
biBpc1BpeGVsQmxhY2socGl4ZWwpCisgICAgeworICAgICAgICByZXR1cm4gcGl4ZWxbMF0gPT09
IDAgJiYgcGl4ZWxbMV0gPT09IDAgJiYgcGl4ZWxbMl0gPT09IDAgJiYgcGl4ZWxbM10gPT09IDI1
NTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBpc1BpeGVsVHJhbnNwYXJlbnQocGl4ZWwpCisgICAg
eworICAgICAgICByZXR1cm4gcGl4ZWxbMF0gPT09IDAgJiYgcGl4ZWxbMV0gPT09IDAgJiYgcGl4
ZWxbMl0gPT09IDAgJiYgcGl4ZWxbM10gPT09IDA7CisgICAgfQorCisgICAgZnVuY3Rpb24gaXNQ
aXhlbFdoaXRlKHBpeGVsKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHBpeGVsWzBdID09PSAyNTUg
JiYgcGl4ZWxbMV0gPT09IDI1NSAmJiBwaXhlbFsyXSA9PT0gMjU1ICYmIHBpeGVsWzNdID09PSAy
NTU7CisgICAgfQorCisgICAgZnVuY3Rpb24gYXR0ZW1wdChudW1iZXJPZlRyaWVzLCBjYWxsLCBj
YWxsYmFjaywgc3VjY2Vzc01lc3NhZ2UpCisgICAgeworICAgICAgICBpZiAobnVtYmVyT2ZUcmll
cyA8PSAwKSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCdQaXhlbCBjaGVjayBkaWQgbm90IHN1
Y2NlZWQgYWZ0ZXIgbXVsdGlwbGUgdHJpZXMuJyk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKworICAgICAgICBsZXQgYXR0ZW1wdFN1Y2NlZWRlZCA9IGNhbGwoKTsKKyAgICAgICAg
aWYgKGF0dGVtcHRTdWNjZWVkZWQpIHsKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoc3VjY2Vzc01l
c3NhZ2UpOworICAgICAgICAgICAgY2FsbGJhY2soKTsKKworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgICAgIAorICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgYXR0ZW1wdCgtLW51bWJlck9mVHJpZXMsIGNhbGwsIGNhbGxiYWNrLCBzdWNjZXNz
TWVzc2FnZSk7CisgICAgICAgIH0sIDUwKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiByZXBlYXRX
aXRoVmlkZW9QbGF5aW5nQW5kRmluaXNoVGVzdCgpCisgICAgeworICAgICAgICBpZiAodmlkZW8u
cGF1c2VkKSB7CisgICAgICAgICAgICBkZWJ1ZygnPGJyPiA9PT09PSBwbGF5IHZpZGVvID09PT09
Jyk7CisgICAgICAgICAgICBldmFsQW5kTG9nKCd2aWRlby5wbGF5KCknKTsKKyAgICAgICAgICAg
IGJlZ2luVGVzdFJvdW5kKCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgZmluaXNoSlNU
ZXN0KCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gcmVlbmFibGVUcmFjaygpCisgICAgeworICAg
ICAgICBtZWRpYVN0cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBdLmVuYWJsZWQgPSB0cnVlOworICAg
ICAgICBkZWJ1ZygnPGJyPiA9PT0gdmlkZW8gdHJhY2sgcmVlbmFibGVkID09PScpOworCisgICAg
ICAgIC8vIFRoZSB2aWRlbyBpcyBub3QgZ3VhcmFudGVlZCB0byByZW5kZXIgbm9uLWJsYWNrIGZy
YW1lcyBiZWZvcmUgdGhlIGNhbnZhcyBpcyBkcmF3biB0byBhbmQgdGhlIHBpeGVscyBhcmUgY2hl
Y2tlZC4KKyAgICAgICAgLy8gQSB0aW1lb3V0IGlzIHVzZWQgdG8gZW5zdXJlIHRoYXQgdGhlIHBp
eGVsIGNoZWNrIGlzIGRvbmUgYWZ0ZXIgdGhlIHZpZGVvIHJlbmRlcnMgbm9uLWJsYWNrIGZyYW1l
cy4KKyAgICAgICAgYXR0ZW1wdCgxMCwgY2hlY2tQaXhlbHMsIHJlcGVhdFdpdGhWaWRlb1BsYXlp
bmdBbmRGaW5pc2hUZXN0LCAncGl4ZWwgd2FzIHdoaXRlLicpOworICAgIH0KKworICAgIGZ1bmN0
aW9uIGNoZWNrUGl4ZWxzKCkKKyAgICB7CisgICAgICAgIGNvbnRleHQuY2xlYXJSZWN0KDAsIDAs
IGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7CisgICAgICAgIGJ1ZmZlciA9IGNvbnRleHQu
Z2V0SW1hZ2VEYXRhKDMwLCAyNDIsIDEsIDEpLmRhdGE7CisgICAgICAgIGlmKCFpc1BpeGVsVHJh
bnNwYXJlbnQoYnVmZmVyKSkgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgncGl4ZWwgd2FzIG5v
dCB0cmFuc3BhcmVudCBhZnRlciBjbGVhcmluZyBjYW52YXMuJyk7CisgICAgICAgIH0KKworICAg
ICAgICBjb250ZXh0LmRyYXdJbWFnZSh2aWRlbywgMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMu
aGVpZ2h0KTsKKyAgICAgICAgYnVmZmVyID0gY29udGV4dC5nZXRJbWFnZURhdGEoMzAsIDI0Miwg
MSwgMSkuZGF0YTsKKworICAgICAgICBpZiAobWVkaWFTdHJlYW0uZ2V0VmlkZW9UcmFja3MoKVsw
XS5lbmFibGVkKQorICAgICAgICAgICAgcmV0dXJuIGlzUGl4ZWxXaGl0ZShidWZmZXIpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gaXNQaXhlbEJsYWNrKGJ1ZmZlcik7CisgICAg
fQorCisgICAgZnVuY3Rpb24gZGlzYWJsZUFsbFRyYWNrcygpCisgICAgeworICAgICAgICBtZWRp
YVN0cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBdLmVuYWJsZWQgPSBmYWxzZTsKKyAgICAgICAgZGVi
dWcoJzxicj4gPT09IGFsbCB2aWRlbyB0cmFja3MgZGlzYWJsZWQgPT09Jyk7CisgICAgICAgIAor
ICAgICAgICAvLyBUaGUgdmlkZW8gaXMgbm90IGd1YXJhbnRlZWQgdG8gcmVuZGVyIGJsYWNrIGZy
YW1lcyBiZWZvcmUgdGhlIGNhbnZhcyBpcyBkcmF3biB0byBhbmQgdGhlIHBpeGVscyBhcmUgY2hl
Y2tlZC4KKyAgICAgICAgLy8gQSB0aW1lb3V0IGlzIHVzZWQgdG8gZW5zdXJlIHRoYXQgdGhlIHBp
eGVsIGNoZWNrIGlzIGRvbmUgYWZ0ZXIgdGhlIHZpZGVvIHJlbmRlcnMgYmxhY2sgZnJhbWVzLgor
ICAgICAgICBhdHRlbXB0KDEwLCBjaGVja1BpeGVscywgcmVlbmFibGVUcmFjaywgJ3BpeGVsIHdh
cyBibGFjay4nKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBiZWdpblRlc3RSb3VuZCgpCisgICAg
eworICAgICAgICBkZWJ1ZygnPGJyPiA9PT0gYmVnaW5uaW5nIHJvdW5kIG9mIHBpeGVsIHRlc3Rz
ID09PScpOworICAgICAgICBhdHRlbXB0KDEsIGNoZWNrUGl4ZWxzLCBkaXNhYmxlQWxsVHJhY2tz
LCAncGl4ZWwgd2FzIHdoaXRlJyk7CisgICAgfQorCisgICAgZnVuY3Rpb24gY2FucGxheSgpCisg
ICAgeworICAgICAgICBjYW52YXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdjYW52YXMnKTsK
KyAgICAgICAgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpOworCisgICAgICAgIGJl
Z2luVGVzdFJvdW5kKCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gc3RhcnQoKQorICAgIHsKKyAg
ICAgICAgZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgcmUtZW5hYmxpbmcgYSB2aWRlbyBNZWRpYVN0
cmVhbVRyYWNrIHdoZW4gYWxsIHRyYWNrcyB3ZXJlIHByZXZpb3VzbHkgZGlzYWJsZWQgY2F1c2Vz
IGNhcHR1cmVkIG1lZGlhIHRvIGRpc3BsYXkuIik7CisKKyAgICAgICAgdmlkZW8gPSBkb2N1bWVu
dC5xdWVyeVNlbGVjdG9yKCd2aWRlbycpOworICAgICAgICB2aWRlby5hZGRFdmVudExpc3RlbmVy
KCdjYW5wbGF5JywgY2FucGxheSk7CisKKyAgICAgICAgZ2V0VXNlck1lZGlhKCJhbGxvdyIsIHt2
aWRlbzp0cnVlfSwgc2V0dXBWaWRlb0VsZW1lbnRXaXRoU3RyZWFtKTsKKyAgICB9CisKKyAgICB3
aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLXZpZGVvLWVsZW1lbnQtdmlkZW8tdHJhY2tzLWRpc2Fi
bGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLXZpZGVv
LWVsZW1lbnQtdmlkZW8tdHJhY2tzLWRpc2FibGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTA2YmQ3ZjY0
ZTQ5YjUwZTA3ZGZmZWU4ZmZkNmFiZDMxYTc4ZDhlZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tdmlkZW8tZWxlbWVudC12aWRlby10
cmFja3MtZGlzYWJsZWQuaHRtbApAQCAtMCwwICsxLDgxIEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+CisgICAgPHN0eWxlPgorICAgICAgICB2aWRlbyB7CisgICAgICAgICAgICBw
b3NpdGlvbjogYWJzb2x1dGU7CisgICAgICAgICAgICBsZWZ0OiAxMHB4OworICAgICAgICAgICAg
dG9wOiA1MHB4OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAubWFza2VyIHsKKyAgICAg
ICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAgICAgIGxlZnQ6IDEwcHg7CisgICAg
ICAgICAgICB0b3A6IDUwcHg7CisgICAgICAgICAgICBoZWlnaHQ6IDM2MHB4OworICAgICAgICAg
ICAgd2lkdGg6IDY4MHB4OworICAgICAgICAgICAgYm9yZGVyLXRvcDogNTBweCBzb2xpZCB3aGl0
ZTsKKyAgICAgICAgICAgIGJvcmRlci1yaWdodDogMzAwcHggc29saWQgd2hpdGU7CisgICAgICAg
ICAgICBib3JkZXItYm90dG9tOiA1MHB4IHNvbGlkIHdoaXRlOworICAgICAgICAgICAgYm9yZGVy
LWxlZnQ6IDMwMHB4IHNvbGlkIHdoaXRlOworICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVy
LWJveDsKKyAgICAgICAgfQorICAgIDwvc3R5bGU+Cis8L2hlYWQ+CisKKzxib2R5PgorPHA+VGVz
dHMgdGhhdCB0aGUgdmlkZW8gZnJhbWVzIG9mIGFuIEhUTUxWaWRlb0VsZW1lbnQgYXJlIGJsYWNr
IGlmIG5vIHZpZGVvIE1lZGlhU3RyZWFtVHJhY2sgaXMgZW5hYmxlZC48L3A+Cis8dmlkZW8gY29u
dHJvbHMgd2lkdGg9IjY4MCIgaGVpZ2h0PSIzNjAiPjwvdmlkZW8+Cis8ZGl2IGNsYXNzPSJtYXNr
ZXIiPjwvZGl2PgorCis8c2NyaXB0PgorICAgIGxldCBtZWRpYVN0cmVhbTsKKyAgICBsZXQgdmlk
ZW87CisKKyAgICBmdW5jdGlvbiBkZWJ1Zyhtc2cpCisgICAgeworICAgICAgICBsZXQgc3BhbiA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTsKKyAgICAgICAgZG9jdW1lbnQuYm9keS5h
cHBlbmRDaGlsZChzcGFuKTsKKyAgICAgICAgc3Bhbi5pbm5lckhUTUwgPSBgJHttc2d9IDxiciAv
PmA7CisgICAgfQorCisgICAgZnVuY3Rpb24gY2FucGxheXRocm91Z2goKQorICAgIHsgICAgCisg
ICAgICAgIG1lZGlhU3RyZWFtLmdldFZpZGVvVHJhY2tzKClbMF0uZW5hYmxlZCA9IGZhbHNlOwor
ICAgICAgICB3aW5kb3cudGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgfQorCisgICAgZnVu
Y3Rpb24gY2FucGxheSgpCisgICAgeworICAgICAgICB2aWRlby5wbGF5KCk7CisgICAgfQorCisg
ICAgZnVuY3Rpb24gc2V0dXBTdHJlYW0oc3RyZWFtKQorICAgIHsKKyAgICAgICAgbWVkaWFTdHJl
YW0gPSBzdHJlYW07CisgICAgICAgIHZpZGVvLnNyYyA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0
VVJMKG1lZGlhU3RyZWFtKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBmYWlsZWRUb1NldHVwU3Ry
ZWFtKCkKKyAgICB7CisgICAgICAgIGRlYnVnKCdGYWlsZWQgdG8gc2V0dXAgc3RyZWFtJyk7Cisg
ICAgfQorCisgICAgZnVuY3Rpb24gc3RhcnQoKQorICAgIHsKKyAgICAgICAgdmlkZW8gPSBkb2N1
bWVudC5xdWVyeVNlbGVjdG9yKCd2aWRlbycpOworICAgICAgICB2aWRlby5hZGRFdmVudExpc3Rl
bmVyKCdjYW5wbGF5JywgY2FucGxheSwgZmFsc2UpOworICAgICAgICB2aWRlby5hZGRFdmVudExp
c3RlbmVyKCdjYW5wbGF5dGhyb3VnaCcsIGNhbnBsYXl0aHJvdWdoLCBmYWxzZSk7CisgICAgICAg
IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHt2aWRlbzp0cnVlfSkKKyAgICAg
ICAgICAgIC50aGVuKHNldHVwU3RyZWFtKQorICAgICAgICAgICAgLmNhdGNoKGZhaWxlZFRvU2V0
dXBTdHJlYW0pOworICAgIH0KKworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAg
ICB3aW5kb3cudGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgICAgIHdpbmRvdy50ZXN0
UnVubmVyLnNldFVzZXJNZWRpYVBlcm1pc3Npb24odHJ1ZSk7CisgICAgICAgIHN0YXJ0KCk7Cisg
ICAgfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284734</attachid>
            <date>2016-07-27 15:15:23 -0700</date>
            <delta_ts>2016-07-28 16:58:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160222-20160727151413.patch</filename>
            <type>text/plain</type>
            <size>18353</size>
            <attacher name="George Ruan">gruan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzMzg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTQ1NmM0YjhhMDA1MjJl
MTBkZDIxZjcxN2Y2ZWNlZDllMDAwNjJkZS4uMmZiOTdjN2FiMDViMWM3YjZiZjdmNDFiMjMwNzY4
YWEwNTJkNGVhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE2LTA3LTI3ICBHZW9y
Z2UgUnVhbiAgPGdydWFuQGFwcGxlLmNvbT4KKworICAgICAgICBIVE1MVmlkZW9FbGVtZW50IHdp
dGggTWVkaWFTdHJlYW0gc3JjIHNob3dzIHBhdXNlZCBpbWFnZSB3aGVuIGFsbCB2aWRlbyB0cmFj
a3MgYXJlIGRpc2FibGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNjAyMjIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI3NTU3MzEzPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzOiBmYXN0L21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtLXZpZGVvLWVsZW1lbnQtdmlkZW8tdHJhY2tzLWRpc2FibGVk
LXRoZW4tZW5hYmxlZC5odG1sCisgICAgICAgICAgICAgICBmYXN0L21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtLXZpZGVvLWVsZW1lbnQtdmlkZW8tdHJhY2tzLWRpc2FibGVkLmh0bWwKKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZW5x
dWV1ZVZpZGVvU2FtcGxlQnVmZmVyRnJvbVRyYWNrKTogQ2hhbmdlIGNyaXRlcmlhIHRvIGVucXVl
dWUgYQorICAgICAgICBTYW1wbGUgQnVmZmVyIHRvIHRoZSBBVlNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllciB0byBhbGxvdyBhbiBpbml0aWFsIGZyYW1lIHRvIGJlIHNob3duLgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpzaG91bGRFbnF1ZXVl
VmlkZW9TYW1wbGVCdWZmZXIpOiBBbGxvdyBhbiBpbml0aWFsIGZyYW1lIHRvIGJlIHNob3duLgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpm
bHVzaEFuZFJlbW92ZVZpZGVvU2FtcGxlQnVmZmVycyk6IFJlbW92ZXMgYWxsIGJ1ZmZlcnMgZnJv
bSB0aGUKKyAgICAgICAgQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuCisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmVuc3VyZUxheWVyKTog
TWFrZSB0aGUgQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIncyBiYWNrZ3JvdW5kIGJsYWNrLgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1
cGRhdGVEaXNwbGF5TW9kZSk6IFJlbW92ZSBhbGwgYnVmZmVycyBmcm9tIHRoZSBBVlNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllcgorICAgICAgICB3aGVuIHN0YXRlIG9mIE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQyBpcyBjaGFuZ2VkIHRvIE5vbmUgb2YgUGFpbnRJdEJsYWNrLgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1
cGRhdGVQYXVzZWRJbWFnZSk6IFVwZGF0ZXMgcGF1c2VkIGltYWdlLgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpwYXVzZSk6IENhbGxzIHVw
ZGF0ZVBhdXNlZEltYWdlLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDOjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dCk6IEFsbG93IGFuIGlu
aXRpYWwgZnJhbWUgdG8gYmUgcGFpbnRlZCB0byBjYW52YXMuCisKIDIwMTYtMDctMjYgIEdlb3Jn
ZSBSdWFuICA8Z3J1YW5AYXBwbGUuY29tPgogCiAgICAgICAgIEhUTUxWaWRlb0VsZW1lbnQgZnJh
bWVzIGRvIG5vdCB1cGRhdGUgb24gaU9TIHdoZW4gc3JjIGlzIGEgTWVkaWFTdHJlYW0gYmxvYgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakMuaAppbmRleCA3MzYwZjI0ZTYwZTNjMDZhMmMxM2YwZWRlN2Zm
ZjY0OTJmMGVhNzViLi42OWQzYjJlZDUyMjNlMjA3MzQ4NzQ4ODZhNzQ0OWNhMTBjZTlkMWNlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaApAQCAtMTI0LDYgKzEyNCw4IEBAIHByaXZhdGU6CiAK
ICAgICB2b2lkIGVucXVldWVBdWRpb1NhbXBsZUJ1ZmZlckZyb21UcmFjayhNZWRpYVN0cmVhbVRy
YWNrUHJpdmF0ZSYsIFBsYXRmb3JtU2FtcGxlKTsKICAgICB2b2lkIGVucXVldWVWaWRlb1NhbXBs
ZUJ1ZmZlckZyb21UcmFjayhNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYsIFBsYXRmb3JtU2FtcGxl
KTsKKyAgICBib29sIHNob3VsZEVucXVldWVWaWRlb1NhbXBsZUJ1ZmZlcigpIGNvbnN0OworICAg
IHZvaWQgZmx1c2hBbmRSZW1vdmVWaWRlb1NhbXBsZUJ1ZmZlcnMoKTsKIAogICAgIHZvaWQgcGFp
bnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9h
dFJlY3QmKSBvdmVycmlkZTsKQEAgLTE2MSw2ICsxNjMsNyBAQCBwcml2YXRlOgogICAgIH07CiAg
ICAgRGlzcGxheU1vZGUgY3VycmVudERpc3BsYXlNb2RlKCkgY29uc3Q7CiAgICAgdm9pZCB1cGRh
dGVEaXNwbGF5TW9kZSgpOworICAgIHZvaWQgdXBkYXRlUGF1c2VkSW1hZ2UoKTsKIAogICAgIC8v
IE1lZGlhU3RyZWFtUHJpdmF0ZTo6T2JzZXJ2ZXIKICAgICB2b2lkIGFjdGl2ZVN0YXR1c0NoYW5n
ZWQoKSBvdmVycmlkZTsKQEAgLTIwMSw2ICsyMDQsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9l
bmRlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhc0V2ZXJFbnF1ZXVlZFZpZGVvRnJhbWUgeyBm
YWxzZSB9OwogICAgIGJvb2wgbV9oYXNSZWNlaXZlZE1lZGlhIHsgZmFsc2UgfTsKKyAgICBib29s
IG1faXNGcmFtZURpc3BsYXllZCB7IGZhbHNlIH07CiAKICNpZiBQTEFURk9STShNQUMpICYmIEVO
QUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9G
dWxsc2NyZWVuTGF5ZXJNYW5hZ2VyPiBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQppbmRleCA5NjkzODI1NDE5ZTgyNTU0MGU4ODVmOWM5MTg1
M2JhYmQwMjBjZmRmLi41MzlhZTg1YzAxYTUwNjgwZTE4NWUxYWM5MmMwM2EwNTNlNTRmNjM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCkBAIC0xMjksMTYgKzEyOSwzOSBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZW5xdWV1ZVZpZGVvU2FtcGxlQnVm
ZmVyRnJvbVRyYWNrKE1lZAogICAgIGlmICgmdHJhY2sgIT0gbV9tZWRpYVN0cmVhbVByaXZhdGUt
PmFjdGl2ZVZpZGVvVHJhY2soKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1fZGlzcGxh
eU1vZGUgPT0gTGl2ZVByZXZpZXcgJiYgW21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIGlzUmVh
ZHlGb3JNb3JlTWVkaWFEYXRhXSkgeworICAgIGlmIChzaG91bGRFbnF1ZXVlVmlkZW9TYW1wbGVC
dWZmZXIoKSkgewogICAgICAgICBbbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgZW5xdWV1ZVNh
bXBsZUJ1ZmZlcjpwbGF0Zm9ybVNhbXBsZS5zYW1wbGUuY21TYW1wbGVCdWZmZXJdOworICAgICAg
ICBtX2lzRnJhbWVEaXNwbGF5ZWQgPSB0cnVlOwogICAgICAgICAKICAgICAgICAgaWYgKCFtX2hh
c0V2ZXJFbnF1ZXVlZFZpZGVvRnJhbWUpIHsKICAgICAgICAgICAgIG1faGFzRXZlckVucXVldWVk
VmlkZW9GcmFtZSA9IHRydWU7CiAgICAgICAgICAgICBtX3BsYXllci0+Zmlyc3RWaWRlb0ZyYW1l
QXZhaWxhYmxlKCk7CisKKyAgICAgICAgICAgIHVwZGF0ZVBhdXNlZEltYWdlKCk7CiAgICAgICAg
IH0KICAgICB9CiB9CiAKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
OjpzaG91bGRFbnF1ZXVlVmlkZW9TYW1wbGVCdWZmZXIoKSBjb25zdAoreworICAgIGlmICghW21f
c2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIGlzUmVhZHlGb3JNb3JlTWVkaWFEYXRhXSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG1fZGlzcGxheU1vZGUgPT0gTGl2ZVByZXZpZXcp
CisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKG1fZGlzcGxheU1vZGUgPT0gUGF1c2Vk
SW1hZ2UgJiYgIW1faXNGcmFtZURpc3BsYXllZCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDOjpmbHVzaEFuZFJlbW92ZVZpZGVvU2FtcGxlQnVmZmVycygpCit7CisgICAgW21fc2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyIGZsdXNoQW5kUmVtb3ZlSW1hZ2VdOworICAgIG1faXNGcmFt
ZURpc3BsYXllZCA9IGZhbHNlOworfQorCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3Ry
ZWFtQVZGT2JqQzo6ZW5zdXJlTGF5ZXIoKQogewogICAgIGlmIChtX3NhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllcikKQEAgLTE0OCw2ICsxNzEsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQzo6ZW5zdXJlTGF5ZXIoKQogI2lmbmRlZiBOREVCVUcKICAgICBbbV9zYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXIgc2V0TmFtZTpAIk1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3Ry
ZWFtQVZGT2JqQyBBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciJdOwogI2VuZGlmCisgICAgbV9z
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuZ2V0KCkuYmFja2dyb3VuZENvbG9yID0gY2FjaGVkQ0dD
b2xvcihDb2xvcjo6YmxhY2spOwogICAgIAogICAgIHJlbmRlcmluZ01vZGVDaGFuZ2VkKCk7CiAg
ICAgCkBAIC0yNTcsOCArMjgxLDI0IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJl
YW1BVkZPYmpDOjp1cGRhdGVEaXNwbGF5TW9kZSgpCiAgICAgICAgIHJldHVybjsKICAgICBtX2Rp
c3BsYXlNb2RlID0gZGlzcGxheU1vZGU7CiAKLSAgICBpZiAobV9kaXNwbGF5TW9kZSA9PSBOb25l
KQorICAgIGlmIChtX2Rpc3BsYXlNb2RlIDwgUGF1c2VkSW1hZ2UgJiYgbV9zYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXIpCisgICAgICAgIGZsdXNoQW5kUmVtb3ZlVmlkZW9TYW1wbGVCdWZmZXJzKCk7
Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1cGRhdGVQ
YXVzZWRJbWFnZSgpCit7CisgICAgQVNTRVJUKG1fZGlzcGxheU1vZGUgPT0gY3VycmVudERpc3Bs
YXlNb2RlKCkpOworCisgICAgaWYgKG1fZGlzcGxheU1vZGUgPCBQYXVzZWRJbWFnZSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IG1fbWVkaWFTdHJlYW1Qcml2
YXRlLT5jdXJyZW50RnJhbWVJbWFnZSgpOworICAgIEFTU0VSVChpbWFnZSk7CisgICAgaWYgKCFp
bWFnZSkKICAgICAgICAgcmV0dXJuOworCisgICAgbV9wYXVzZWRJbWFnZSA9IGltYWdlLT5nZXRD
R0ltYWdlUmVmKCk7CisgICAgQVNTRVJUKG1fcGF1c2VkSW1hZ2UpOwogfQogCiB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cGxheSgpCkBAIC0yODYsNiArMzI2LDcg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBhdXNlKCkKICAg
ICBtX2Nsb2NrLT5zdG9wKCk7CiAgICAgbV9wbGF5aW5nID0gZmFsc2U7CiAgICAgdXBkYXRlRGlz
cGxheU1vZGUoKTsKKyAgICB1cGRhdGVQYXVzZWRJbWFnZSgpOwogfQogCiBib29sIE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cGF1c2VkKCkgY29uc3QKQEAgLTU3NywxMCAr
NjE4LDkgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBhaW50
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QKIAogdm9pZCBNZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakM6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewotICAgIGlmIChtX2Rp
c3BsYXlNb2RlID09IE5vbmUgfHwgIW1ldGFEYXRhQXZhaWxhYmxlKCkgfHwgY29udGV4dC5wYWlu
dGluZ0Rpc2FibGVkKCkgfHwgIW1faGF2ZUV2ZXJQbGF5ZWQpCisgICAgaWYgKG1fZGlzcGxheU1v
ZGUgPT0gTm9uZSB8fCAhbWV0YURhdGFBdmFpbGFibGUoKSB8fCBjb250ZXh0LnBhaW50aW5nRGlz
YWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0KICAgICBpZiAobV9kaXNwbGF5TW9kZSA9PSBM
aXZlUHJldmlldykKICAgICAgICAgbV9tZWRpYVN0cmVhbVByaXZhdGUtPnBhaW50Q3VycmVudEZy
YW1lSW5Db250ZXh0KGNvbnRleHQsIHJlY3QpOwogICAgIGVsc2UgewpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDI1MTE2NGZj
ZWVjYThhNWNjZTVkMWNhYWYyNTlhNzE3MGJmZWRjM2MuLjRmZjgyNDFjNmM3MjRmZTVmMWVjMDBj
Y2UwODU1YmFhOGQyYTZiYmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxNi0wNy0yNyAgR2Vv
cmdlIFJ1YW4gIDxncnVhbkBhcHBsZS5jb20+CisKKyAgICAgICAgSFRNTFZpZGVvRWxlbWVudCB3
aXRoIE1lZGlhU3RyZWFtIHNyYyBzaG93cyBwYXVzZWQgaW1hZ2Ugd2hlbiBhbGwgdmlkZW8gdHJh
Y2tzIGFyZSBkaXNhYmxlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTYwMjIyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yNzU1NzMxMz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW0tdmlkZW8tZWxlbWVudC12aWRlby10cmFja3MtZGlzYWJsZWQtZXhw
ZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVh
bS12aWRlby1lbGVtZW50LXZpZGVvLXRyYWNrcy1kaXNhYmxlZC10aGVuLWVuYWJsZWQtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLXZp
ZGVvLWVsZW1lbnQtdmlkZW8tdHJhY2tzLWRpc2FibGVkLXRoZW4tZW5hYmxlZC5odG1sOiBBZGRl
ZC4gQ2hlY2tzCisgICAgICAgIHRoYXQgdGhlIHZpZGVvIGZyYW1lcyBkaXNwbGF5IGNhcHR1cmVk
IG1lZGlhIGlmIGFsbCB2aWRlbyB0cmFja3Mgd2VyZSBkaXNhYmxlZCBhbmQgdGhlbiBhIHNpbmds
ZQorICAgICAgICB2aWRlbyB0cmFjayBpcyByZS1lbmFibGVkLiBUaGlzIHRlc3QgYWxzbyBjaGVj
a3MgdGhhdCBhbiBpbml0aWFsIGZyYW1lIGlzIHBhaW50ZWQgdG8KKyAgICAgICAgY2FudmFzIGlm
IHRoZSB2aWRlbyBoYXMgbm90IHlldCBiZWVuIHBsYXllZC4KKyAgICAgICAgKiBmYXN0L21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtLXZpZGVvLWVsZW1lbnQtdmlkZW8tdHJhY2tzLWRpc2FibGVkLmh0
bWw6IEFkZGVkLiBSZWZlcmVuY2UgdGVzdHMgdGhlCisgICAgICAgIGZyYW1lcyBvZiB0aGUgdmlk
ZW8gdG8gYmUgYmxhY2ssIHNpbmNlIHRoZSBjYW52YXMgaXMgcGFpbnRlZCBibGFjayByZWdhcmRs
ZXNzIG9mIHRoZSBzdGF0ZSBvZiB0aGUgdmlkZW8gZnJhbWVzCisgICAgICAgIGlmIGRpc3BsYXlN
b2RlIG9mIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQyBpcyBQYWludEl0Qmxh
Y2suCisKIDIwMTYtMDctMjYgIEdlb3JnZSBSdWFuICA8Z3J1YW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIEhUTUxWaWRlb0VsZW1lbnQgZnJhbWVzIGRvIG5vdCB1cGRhdGUgb24gaU9TIHdoZW4gc3Jj
IGlzIGEgTWVkaWFTdHJlYW0gYmxvYgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbS12aWRlby1lbGVtZW50LXZpZGVvLXRyYWNrcy1kaXNhYmxlZC1l
eHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS12
aWRlby1lbGVtZW50LXZpZGVvLXRyYWNrcy1kaXNhYmxlZC1leHBlY3RlZC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjVjNTU2OTgyMjQ3YzE4NTNiNzgwNjcyN2IyYjkwMDQ1NzYyMWVhZTAKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLXZpZGVvLWVs
ZW1lbnQtdmlkZW8tdHJhY2tzLWRpc2FibGVkLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwzNiBA
QAorPCFET0NUWVBFIGh0bWw+CisKKzxodG1sPgorPGhlYWQ+CisgICAgPHN0eWxlPgorICAgICAg
ICAudmlkZW8geworICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgICAgICAg
bGVmdDogMTBweDsKKyAgICAgICAgICAgIHRvcDogNTBweDsKKyAgICAgICAgICAgIGhlaWdodDog
MzYwcHg7CisgICAgICAgICAgICB3aWR0aDogNjgwcHg7CisgICAgICAgICAgICBiYWNrZ3JvdW5k
LWNvbG9yOiBibGFjazsKKyAgICAgICAgICAgIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07CisgICAg
ICAgIH0KKyAgICAgICAgCisgICAgICAgIC5tYXNrZXIgeworICAgICAgICAgICAgcG9zaXRpb246
IGFic29sdXRlOworICAgICAgICAgICAgbGVmdDogMTBweDsKKyAgICAgICAgICAgIHRvcDogNTBw
eDsKKyAgICAgICAgICAgIGhlaWdodDogMzYwcHg7CisgICAgICAgICAgICB3aWR0aDogNjgwcHg7
CisgICAgICAgICAgICBib3JkZXItdG9wOiA1MHB4IHNvbGlkIHdoaXRlOworICAgICAgICAgICAg
Ym9yZGVyLXJpZ2h0OiAzMDBweCBzb2xpZCB3aGl0ZTsKKyAgICAgICAgICAgIGJvcmRlci1ib3R0
b206IDUwcHggc29saWQgd2hpdGU7CisgICAgICAgICAgICBib3JkZXItbGVmdDogMzAwcHggc29s
aWQgd2hpdGU7CisgICAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OworICAgICAgICB9
CisgICAgPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGVzdHMgdGhhdCB0aGUgdmlkZW8g
ZnJhbWVzIG9mIGFuIEhUTUxWaWRlb0VsZW1lbnQgYXJlIGJsYWNrIGlmIG5vIHZpZGVvIE1lZGlh
U3RyZWFtVHJhY2sgaXMgZW5hYmxlZC48L3A+Cis8ZGl2IGNsYXNzPSJ2aWRlbyI+PC9kaXY+Cis8
ZGl2IGNsYXNzPSJtYXNrZXIiPjwvZGl2PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLXZpZGVvLWVsZW1lbnQt
dmlkZW8tdHJhY2tzLWRpc2FibGVkLXRoZW4tZW5hYmxlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLXZpZGVvLWVsZW1lbnQtdmlkZW8tdHJh
Y2tzLWRpc2FibGVkLXRoZW4tZW5hYmxlZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGFmMDc0
ZDgzMmUyMjBjMmMyZDc5MTQ1MmU4ZjBlYWZkM2U3OTc2ZAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tdmlkZW8tZWxlbWVudC12aWRl
by10cmFja3MtZGlzYWJsZWQtdGhlbi1lbmFibGVkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMy
IEBACitUZXN0cyB0aGF0IHJlLWVuYWJsaW5nIGEgdmlkZW8gTWVkaWFTdHJlYW1UcmFjayB3aGVu
IGFsbCB0cmFja3Mgd2VyZSBwcmV2aW91c2x5IGRpc2FibGVkIGNhdXNlcyBjYXB0dXJlZCBtZWRp
YSB0byBkaXNwbGF5LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBtZWRp
YURldmljZXMuZ2V0VXNlck1lZGlhIGdlbmVyYXRlZCBhIHN0cmVhbSBzdWNjZXNzZnVsbHkuCit2
aWRlby5zcmMgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChtZWRpYVN0cmVhbSkKKworID09
PSBiZWdpbm5pbmcgcm91bmQgb2YgcGl4ZWwgdGVzdHMgPT09CitQQVNTIHBpeGVsIHdhcyB3aGl0
ZQorCisgPT09IGFsbCB2aWRlbyB0cmFja3MgZGlzYWJsZWQgPT09CitQQVNTIHBpeGVsIHdhcyBi
bGFjay4KKworID09PSB2aWRlbyB0cmFjayByZWVuYWJsZWQgPT09CitQQVNTIHBpeGVsIHdhcyB3
aGl0ZS4KKworID09PT09IHBsYXkgdmlkZW8gPT09PT0KK3ZpZGVvLnBsYXkoKQorCisgPT09IGJl
Z2lubmluZyByb3VuZCBvZiBwaXhlbCB0ZXN0cyA9PT0KK1BBU1MgcGl4ZWwgd2FzIHdoaXRlCisK
KyA9PT0gYWxsIHZpZGVvIHRyYWNrcyBkaXNhYmxlZCA9PT0KK1BBU1MgcGl4ZWwgd2FzIGJsYWNr
LgorCisgPT09IHZpZGVvIHRyYWNrIHJlZW5hYmxlZCA9PT0KK1BBU1MgcGl4ZWwgd2FzIHdoaXRl
LgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisgCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLXZpZGVv
LWVsZW1lbnQtdmlkZW8tdHJhY2tzLWRpc2FibGVkLXRoZW4tZW5hYmxlZC5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS12aWRlby1lbGVtZW50LXZpZGVvLXRy
YWNrcy1kaXNhYmxlZC10aGVuLWVuYWJsZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNjE1MzBjZjc0MDhj
ZTUxYWM2MDRlMzg5NGE3MGJhYzMzYTg5Njc2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS12aWRlby1lbGVtZW50LXZpZGVvLXRyYWNr
cy1kaXNhYmxlZC10aGVuLWVuYWJsZWQuaHRtbApAQCAtMCwwICsxLDEyOCBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuL3Jlc291cmNlcy9n
ZXRVc2VyTWVkaWEtaGVscGVyLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0i
c3RhcnQoKSI+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPHZpZGVvIGNvbnRyb2xzIHdpZHRoPSI2ODAiIGhlaWdodD0iMzYwIj48L3ZpZGVvPgor
PGNhbnZhcyB3aWR0aD0iNjgwIiBoZWlnaHQ9IjM2MCI+PC9jYW52YXM+Cis8c2NyaXB0PgorICAg
IGxldCBjYW52YXM7CisgICAgbGV0IGNvbnRleHQ7CisgICAgbGV0IG1lZGlhU3RyZWFtOworICAg
IGxldCB2aWRlbzsKKyAgICAKKyAgICBsZXQgYnVmZmVyOworCisgICAgZnVuY3Rpb24gaXNQaXhl
bEJsYWNrKHBpeGVsKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHBpeGVsWzBdID09PSAwICYmIHBp
eGVsWzFdID09PSAwICYmIHBpeGVsWzJdID09PSAwICYmIHBpeGVsWzNdID09PSAyNTU7CisgICAg
fQorCisgICAgZnVuY3Rpb24gaXNQaXhlbFRyYW5zcGFyZW50KHBpeGVsKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHBpeGVsWzBdID09PSAwICYmIHBpeGVsWzFdID09PSAwICYmIHBpeGVsWzJdID09
PSAwICYmIHBpeGVsWzNdID09PSAwOworICAgIH0KKworICAgIGZ1bmN0aW9uIGlzUGl4ZWxXaGl0
ZShwaXhlbCkKKyAgICB7CisgICAgICAgIHJldHVybiBwaXhlbFswXSA9PT0gMjU1ICYmIHBpeGVs
WzFdID09PSAyNTUgJiYgcGl4ZWxbMl0gPT09IDI1NSAmJiBwaXhlbFszXSA9PT0gMjU1OworICAg
IH0KKworICAgIGZ1bmN0aW9uIGF0dGVtcHQobnVtYmVyT2ZUcmllcywgY2FsbCwgY2FsbGJhY2ss
IHN1Y2Nlc3NNZXNzYWdlKQorICAgIHsKKyAgICAgICAgaWYgKG51bWJlck9mVHJpZXMgPD0gMCkg
eworICAgICAgICAgICAgdGVzdEZhaWxlZCgnUGl4ZWwgY2hlY2sgZGlkIG5vdCBzdWNjZWVkIGFm
dGVyIG11bHRpcGxlIHRyaWVzLicpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisK
KyAgICAgICAgbGV0IGF0dGVtcHRTdWNjZWVkZWQgPSBjYWxsKCk7CisgICAgICAgIGlmIChhdHRl
bXB0U3VjY2VlZGVkKSB7CisgICAgICAgICAgICB0ZXN0UGFzc2VkKHN1Y2Nlc3NNZXNzYWdlKTsK
KyAgICAgICAgICAgIGNhbGxiYWNrKCk7CisKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgICAgICAKKyAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7IGF0dGVtcHQoLS1udW1iZXJP
ZlRyaWVzLCBjYWxsLCBjYWxsYmFjaywgc3VjY2Vzc01lc3NhZ2UpOyB9LCA1MCk7CisgICAgfQor
CisgICAgZnVuY3Rpb24gcmVwZWF0V2l0aFZpZGVvUGxheWluZ0FuZEZpbmlzaFRlc3QoKQorICAg
IHsKKyAgICAgICAgaWYgKHZpZGVvLnBhdXNlZCkgeworICAgICAgICAgICAgZGVidWcoJzxicj4g
PT09PT0gcGxheSB2aWRlbyA9PT09PScpOworICAgICAgICAgICAgZXZhbEFuZExvZygndmlkZW8u
cGxheSgpJyk7CisgICAgICAgICAgICBiZWdpblRlc3RSb3VuZCgpOworICAgICAgICB9IGVsc2UK
KyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHJlZW5h
YmxlVHJhY2soKQorICAgIHsKKyAgICAgICAgbWVkaWFTdHJlYW0uZ2V0VmlkZW9UcmFja3MoKVsw
XS5lbmFibGVkID0gdHJ1ZTsKKyAgICAgICAgZGVidWcoJzxicj4gPT09IHZpZGVvIHRyYWNrIHJl
ZW5hYmxlZCA9PT0nKTsKKworICAgICAgICAvLyBUaGUgdmlkZW8gaXMgbm90IGd1YXJhbnRlZWQg
dG8gcmVuZGVyIG5vbi1ibGFjayBmcmFtZXMgYmVmb3JlIHRoZSBjYW52YXMgaXMgZHJhd24gdG8g
YW5kIHRoZSBwaXhlbHMgYXJlIGNoZWNrZWQuCisgICAgICAgIC8vIEEgdGltZW91dCBpcyB1c2Vk
IHRvIGVuc3VyZSB0aGF0IHRoZSBwaXhlbCBjaGVjayBpcyBkb25lIGFmdGVyIHRoZSB2aWRlbyBy
ZW5kZXJzIG5vbi1ibGFjayBmcmFtZXMuCisgICAgICAgIGF0dGVtcHQoMTAsIGNoZWNrUGl4ZWxz
LCByZXBlYXRXaXRoVmlkZW9QbGF5aW5nQW5kRmluaXNoVGVzdCwgJ3BpeGVsIHdhcyB3aGl0ZS4n
KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBjaGVja1BpeGVscygpCisgICAgeworICAgICAgICBj
b250ZXh0LmNsZWFyUmVjdCgwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpOworICAg
ICAgICBidWZmZXIgPSBjb250ZXh0LmdldEltYWdlRGF0YSgzMCwgMjQyLCAxLCAxKS5kYXRhOwor
ICAgICAgICBpZighaXNQaXhlbFRyYW5zcGFyZW50KGJ1ZmZlcikpIHsKKyAgICAgICAgICAgIHRl
c3RGYWlsZWQoJ3BpeGVsIHdhcyBub3QgdHJhbnNwYXJlbnQgYWZ0ZXIgY2xlYXJpbmcgY2FudmFz
LicpOworICAgICAgICB9CisKKyAgICAgICAgY29udGV4dC5kcmF3SW1hZ2UodmlkZW8sIDAsIDAs
IGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7CisgICAgICAgIGJ1ZmZlciA9IGNvbnRleHQu
Z2V0SW1hZ2VEYXRhKDMwLCAyNDIsIDEsIDEpLmRhdGE7CisKKyAgICAgICAgaWYgKG1lZGlhU3Ry
ZWFtLmdldFZpZGVvVHJhY2tzKClbMF0uZW5hYmxlZCkKKyAgICAgICAgICAgIHJldHVybiBpc1Bp
eGVsV2hpdGUoYnVmZmVyKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIGlzUGl4
ZWxCbGFjayhidWZmZXIpOworICAgIH0KKworICAgIGZ1bmN0aW9uIGRpc2FibGVBbGxUcmFja3Mo
KQorICAgIHsKKyAgICAgICAgbWVkaWFTdHJlYW0uZ2V0VmlkZW9UcmFja3MoKVswXS5lbmFibGVk
ID0gZmFsc2U7CisgICAgICAgIGRlYnVnKCc8YnI+ID09PSBhbGwgdmlkZW8gdHJhY2tzIGRpc2Fi
bGVkID09PScpOworICAgICAgICAKKyAgICAgICAgLy8gVGhlIHZpZGVvIGlzIG5vdCBndWFyYW50
ZWVkIHRvIHJlbmRlciBibGFjayBmcmFtZXMgYmVmb3JlIHRoZSBjYW52YXMgaXMgZHJhd24gdG8g
YW5kIHRoZSBwaXhlbHMgYXJlIGNoZWNrZWQuCisgICAgICAgIC8vIEEgdGltZW91dCBpcyB1c2Vk
IHRvIGVuc3VyZSB0aGF0IHRoZSBwaXhlbCBjaGVjayBpcyBkb25lIGFmdGVyIHRoZSB2aWRlbyBy
ZW5kZXJzIGJsYWNrIGZyYW1lcy4KKyAgICAgICAgYXR0ZW1wdCgxMCwgY2hlY2tQaXhlbHMsIHJl
ZW5hYmxlVHJhY2ssICdwaXhlbCB3YXMgYmxhY2suJyk7CisgICAgfQorCisgICAgZnVuY3Rpb24g
YmVnaW5UZXN0Um91bmQoKQorICAgIHsKKyAgICAgICAgZGVidWcoJzxicj4gPT09IGJlZ2lubmlu
ZyByb3VuZCBvZiBwaXhlbCB0ZXN0cyA9PT0nKTsKKyAgICAgICAgYXR0ZW1wdCgxLCBjaGVja1Bp
eGVscywgZGlzYWJsZUFsbFRyYWNrcywgJ3BpeGVsIHdhcyB3aGl0ZScpOworICAgIH0KKworICAg
IGZ1bmN0aW9uIGNhbnBsYXkoKQorICAgIHsKKyAgICAgICAgY2FudmFzID0gZG9jdW1lbnQucXVl
cnlTZWxlY3RvcignY2FudmFzJyk7CisgICAgICAgIGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4
dCgnMmQnKTsKKworICAgICAgICBiZWdpblRlc3RSb3VuZCgpOworICAgIH0KKworICAgIGZ1bmN0
aW9uIHN0YXJ0KCkKKyAgICB7CisgICAgICAgIGRlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IHJlLWVu
YWJsaW5nIGEgdmlkZW8gTWVkaWFTdHJlYW1UcmFjayB3aGVuIGFsbCB0cmFja3Mgd2VyZSBwcmV2
aW91c2x5IGRpc2FibGVkIGNhdXNlcyBjYXB0dXJlZCBtZWRpYSB0byBkaXNwbGF5LiIpOworCisg
ICAgICAgIHZpZGVvID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigndmlkZW8nKTsKKyAgICAgICAg
dmlkZW8uYWRkRXZlbnRMaXN0ZW5lcignY2FucGxheScsIGNhbnBsYXkpOworCisgICAgICAgIGdl
dFVzZXJNZWRpYSgiYWxsb3ciLCB7dmlkZW86dHJ1ZX0sIHNldHVwVmlkZW9FbGVtZW50V2l0aFN0
cmVhbSk7CisgICAgfQorCisgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS12aWRlby1lbGVt
ZW50LXZpZGVvLXRyYWNrcy1kaXNhYmxlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbS12aWRlby1lbGVtZW50LXZpZGVvLXRyYWNrcy1kaXNhYmxlZC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjEwNmJkN2Y2NGU0OWI1MGUwN2RmZmVlOGZmZDZhYmQzMWE3OGQ4ZWQKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
LXZpZGVvLWVsZW1lbnQtdmlkZW8tdHJhY2tzLWRpc2FibGVkLmh0bWwKQEAgLTAsMCArMSw4MSBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzdHlsZT4KKyAgICAgICAg
dmlkZW8geworICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgICAgICAgbGVm
dDogMTBweDsKKyAgICAgICAgICAgIHRvcDogNTBweDsKKyAgICAgICAgfQorICAgICAgICAKKyAg
ICAgICAgLm1hc2tlciB7CisgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgICAg
ICAgICBsZWZ0OiAxMHB4OworICAgICAgICAgICAgdG9wOiA1MHB4OworICAgICAgICAgICAgaGVp
Z2h0OiAzNjBweDsKKyAgICAgICAgICAgIHdpZHRoOiA2ODBweDsKKyAgICAgICAgICAgIGJvcmRl
ci10b3A6IDUwcHggc29saWQgd2hpdGU7CisgICAgICAgICAgICBib3JkZXItcmlnaHQ6IDMwMHB4
IHNvbGlkIHdoaXRlOworICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogNTBweCBzb2xpZCB3aGl0
ZTsKKyAgICAgICAgICAgIGJvcmRlci1sZWZ0OiAzMDBweCBzb2xpZCB3aGl0ZTsKKyAgICAgICAg
ICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CisgICAgICAgIH0KKyAgICA8L3N0eWxlPgorPC9o
ZWFkPgorCis8Ym9keT4KKzxwPlRlc3RzIHRoYXQgdGhlIHZpZGVvIGZyYW1lcyBvZiBhbiBIVE1M
VmlkZW9FbGVtZW50IGFyZSBibGFjayBpZiBubyB2aWRlbyBNZWRpYVN0cmVhbVRyYWNrIGlzIGVu
YWJsZWQuPC9wPgorPHZpZGVvIGNvbnRyb2xzIHdpZHRoPSI2ODAiIGhlaWdodD0iMzYwIj48L3Zp
ZGVvPgorPGRpdiBjbGFzcz0ibWFza2VyIj48L2Rpdj4KKworPHNjcmlwdD4KKyAgICBsZXQgbWVk
aWFTdHJlYW07CisgICAgbGV0IHZpZGVvOworCisgICAgZnVuY3Rpb24gZGVidWcobXNnKQorICAg
IHsKKyAgICAgICAgbGV0IHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7Cisg
ICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoc3Bhbik7CisgICAgICAgIHNwYW4uaW5u
ZXJIVE1MID0gYCR7bXNnfSA8YnIgLz5gOworICAgIH0KKworICAgIGZ1bmN0aW9uIGNhbnBsYXl0
aHJvdWdoKCkKKyAgICB7ICAgIAorICAgICAgICBtZWRpYVN0cmVhbS5nZXRWaWRlb1RyYWNrcygp
WzBdLmVuYWJsZWQgPSBmYWxzZTsKKyAgICAgICAgd2luZG93LnRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpOworICAgIH0KKworICAgIGZ1bmN0aW9uIGNhbnBsYXkoKQorICAgIHsKKyAgICAgICAgdmlk
ZW8ucGxheSgpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHNldHVwU3RyZWFtKHN0cmVhbSkKKyAg
ICB7CisgICAgICAgIG1lZGlhU3RyZWFtID0gc3RyZWFtOworICAgICAgICB2aWRlby5zcmMgPSB3
aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChtZWRpYVN0cmVhbSk7CisgICAgfQorCisgICAgZnVu
Y3Rpb24gZmFpbGVkVG9TZXR1cFN0cmVhbSgpCisgICAgeworICAgICAgICBkZWJ1ZygnRmFpbGVk
IHRvIHNldHVwIHN0cmVhbScpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0YXJ0KCkKKyAgICB7
CisgICAgICAgIHZpZGVvID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigndmlkZW8nKTsKKyAgICAg
ICAgdmlkZW8uYWRkRXZlbnRMaXN0ZW5lcignY2FucGxheScsIGNhbnBsYXksIGZhbHNlKTsKKyAg
ICAgICAgdmlkZW8uYWRkRXZlbnRMaXN0ZW5lcignY2FucGxheXRocm91Z2gnLCBjYW5wbGF5dGhy
b3VnaCwgZmFsc2UpOworICAgICAgICBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRp
YSh7dmlkZW86dHJ1ZX0pCisgICAgICAgICAgICAudGhlbihzZXR1cFN0cmVhbSkKKyAgICAgICAg
ICAgIC5jYXRjaChmYWlsZWRUb1NldHVwU3RyZWFtKTsKKyAgICB9CisKKyAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgd2luZG93LnRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgp
OworICAgICAgICB3aW5kb3cudGVzdFJ1bm5lci5zZXRVc2VyTWVkaWFQZXJtaXNzaW9uKHRydWUp
OworICAgICAgICBzdGFydCgpOworICAgIH0KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284839</attachid>
            <date>2016-07-28 16:58:53 -0700</date>
            <delta_ts>2016-07-29 10:01:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160222-20160728165740.patch</filename>
            <type>text/plain</type>
            <size>19277</size>
            <attacher name="George Ruan">gruan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzMzg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTQ1NmM0YjhhMDA1MjJl
MTBkZDIxZjcxN2Y2ZWNlZDllMDAwNjJkZS4uNjgyZjQzMjllNTQ3NTBkNDZkYmQxYjk0YmQzNjYx
ODUyZWI1ZmQ0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE2LTA3LTI4ICBHZW9y
Z2UgUnVhbiAgPGdydWFuQGFwcGxlLmNvbT4KKworICAgICAgICBIVE1MVmlkZW9FbGVtZW50IHdp
dGggTWVkaWFTdHJlYW0gc3JjIHNob3dzIHBhdXNlZCBpbWFnZSB3aGVuIGFsbCB2aWRlbyB0cmFj
a3MgYXJlIGRpc2FibGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNjAyMjIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI3NTU3MzEzPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzOiBmYXN0L21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtLXZpZGVvLWVsZW1lbnQtdmlkZW8tdHJhY2tzLWRpc2FibGVk
LXRoZW4tZW5hYmxlZC5odG1sCisgICAgICAgICAgICAgICBmYXN0L21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtLXZpZGVvLWVsZW1lbnQtdmlkZW8tdHJhY2tzLWRpc2FibGVkLmh0bWwKKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZW5x
dWV1ZVZpZGVvU2FtcGxlQnVmZmVyRnJvbVRyYWNrKTogQ2hhbmdlIGNyaXRlcmlhIHRvIGVucXVl
dWUgYQorICAgICAgICBTYW1wbGUgQnVmZmVyIHRvIHRoZSBBVlNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllciB0byBhbGxvdyBhbiBpbml0aWFsIGZyYW1lIHRvIGJlIHNob3duLgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpzaG91bGRFbnF1ZXVl
VmlkZW9TYW1wbGVCdWZmZXIpOiBBbGxvdyBhbiBpbml0aWFsIGZyYW1lIHRvIGJlIHNob3duLgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpm
bHVzaEFuZFJlbW92ZVZpZGVvU2FtcGxlQnVmZmVycyk6IFJlbW92ZXMgYWxsIGJ1ZmZlcnMgZnJv
bSB0aGUKKyAgICAgICAgQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuCisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmVuc3VyZUxheWVyKTog
TWFrZSB0aGUgQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIncyBiYWNrZ3JvdW5kIGJsYWNrLgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1
cGRhdGVEaXNwbGF5TW9kZSk6IFJlbW92ZSBhbGwgYnVmZmVycyBmcm9tIHRoZSBBVlNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllcgorICAgICAgICB3aGVuIHN0YXRlIG9mIE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQyBpcyBjaGFuZ2VkIHRvIE5vbmUgb2YgUGFpbnRJdEJsYWNrLgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1
cGRhdGVQYXVzZWRJbWFnZSk6IFVwZGF0ZXMgcGF1c2VkIGltYWdlLgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpwYXVzZSk6IENhbGxzIHVw
ZGF0ZVBhdXNlZEltYWdlLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDOjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dCk6IEFsbG93IGFuIGlu
aXRpYWwgZnJhbWUgdG8gYmUgcGFpbnRlZCB0byBjYW52YXMuCisKIDIwMTYtMDctMjYgIEdlb3Jn
ZSBSdWFuICA8Z3J1YW5AYXBwbGUuY29tPgogCiAgICAgICAgIEhUTUxWaWRlb0VsZW1lbnQgZnJh
bWVzIGRvIG5vdCB1cGRhdGUgb24gaU9TIHdoZW4gc3JjIGlzIGEgTWVkaWFTdHJlYW0gYmxvYgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakMuaAppbmRleCA3MzYwZjI0ZTYwZTNjMDZhMmMxM2YwZWRlN2Zm
ZjY0OTJmMGVhNzViLi42OWQzYjJlZDUyMjNlMjA3MzQ4NzQ4ODZhNzQ0OWNhMTBjZTlkMWNlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaApAQCAtMTI0LDYgKzEyNCw4IEBAIHByaXZhdGU6CiAK
ICAgICB2b2lkIGVucXVldWVBdWRpb1NhbXBsZUJ1ZmZlckZyb21UcmFjayhNZWRpYVN0cmVhbVRy
YWNrUHJpdmF0ZSYsIFBsYXRmb3JtU2FtcGxlKTsKICAgICB2b2lkIGVucXVldWVWaWRlb1NhbXBs
ZUJ1ZmZlckZyb21UcmFjayhNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYsIFBsYXRmb3JtU2FtcGxl
KTsKKyAgICBib29sIHNob3VsZEVucXVldWVWaWRlb1NhbXBsZUJ1ZmZlcigpIGNvbnN0OworICAg
IHZvaWQgZmx1c2hBbmRSZW1vdmVWaWRlb1NhbXBsZUJ1ZmZlcnMoKTsKIAogICAgIHZvaWQgcGFp
bnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9h
dFJlY3QmKSBvdmVycmlkZTsKQEAgLTE2MSw2ICsxNjMsNyBAQCBwcml2YXRlOgogICAgIH07CiAg
ICAgRGlzcGxheU1vZGUgY3VycmVudERpc3BsYXlNb2RlKCkgY29uc3Q7CiAgICAgdm9pZCB1cGRh
dGVEaXNwbGF5TW9kZSgpOworICAgIHZvaWQgdXBkYXRlUGF1c2VkSW1hZ2UoKTsKIAogICAgIC8v
IE1lZGlhU3RyZWFtUHJpdmF0ZTo6T2JzZXJ2ZXIKICAgICB2b2lkIGFjdGl2ZVN0YXR1c0NoYW5n
ZWQoKSBvdmVycmlkZTsKQEAgLTIwMSw2ICsyMDQsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9l
bmRlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhc0V2ZXJFbnF1ZXVlZFZpZGVvRnJhbWUgeyBm
YWxzZSB9OwogICAgIGJvb2wgbV9oYXNSZWNlaXZlZE1lZGlhIHsgZmFsc2UgfTsKKyAgICBib29s
IG1faXNGcmFtZURpc3BsYXllZCB7IGZhbHNlIH07CiAKICNpZiBQTEFURk9STShNQUMpICYmIEVO
QUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9G
dWxsc2NyZWVuTGF5ZXJNYW5hZ2VyPiBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQppbmRleCA5NjkzODI1NDE5ZTgyNTU0MGU4ODVmOWM5MTg1
M2JhYmQwMjBjZmRmLi41MzlhZTg1YzAxYTUwNjgwZTE4NWUxYWM5MmMwM2EwNTNlNTRmNjM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCkBAIC0xMjksMTYgKzEyOSwzOSBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZW5xdWV1ZVZpZGVvU2FtcGxlQnVm
ZmVyRnJvbVRyYWNrKE1lZAogICAgIGlmICgmdHJhY2sgIT0gbV9tZWRpYVN0cmVhbVByaXZhdGUt
PmFjdGl2ZVZpZGVvVHJhY2soKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1fZGlzcGxh
eU1vZGUgPT0gTGl2ZVByZXZpZXcgJiYgW21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIGlzUmVh
ZHlGb3JNb3JlTWVkaWFEYXRhXSkgeworICAgIGlmIChzaG91bGRFbnF1ZXVlVmlkZW9TYW1wbGVC
dWZmZXIoKSkgewogICAgICAgICBbbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgZW5xdWV1ZVNh
bXBsZUJ1ZmZlcjpwbGF0Zm9ybVNhbXBsZS5zYW1wbGUuY21TYW1wbGVCdWZmZXJdOworICAgICAg
ICBtX2lzRnJhbWVEaXNwbGF5ZWQgPSB0cnVlOwogICAgICAgICAKICAgICAgICAgaWYgKCFtX2hh
c0V2ZXJFbnF1ZXVlZFZpZGVvRnJhbWUpIHsKICAgICAgICAgICAgIG1faGFzRXZlckVucXVldWVk
VmlkZW9GcmFtZSA9IHRydWU7CiAgICAgICAgICAgICBtX3BsYXllci0+Zmlyc3RWaWRlb0ZyYW1l
QXZhaWxhYmxlKCk7CisKKyAgICAgICAgICAgIHVwZGF0ZVBhdXNlZEltYWdlKCk7CiAgICAgICAg
IH0KICAgICB9CiB9CiAKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
OjpzaG91bGRFbnF1ZXVlVmlkZW9TYW1wbGVCdWZmZXIoKSBjb25zdAoreworICAgIGlmICghW21f
c2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIGlzUmVhZHlGb3JNb3JlTWVkaWFEYXRhXSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG1fZGlzcGxheU1vZGUgPT0gTGl2ZVByZXZpZXcp
CisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKG1fZGlzcGxheU1vZGUgPT0gUGF1c2Vk
SW1hZ2UgJiYgIW1faXNGcmFtZURpc3BsYXllZCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDOjpmbHVzaEFuZFJlbW92ZVZpZGVvU2FtcGxlQnVmZmVycygpCit7CisgICAgW21fc2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyIGZsdXNoQW5kUmVtb3ZlSW1hZ2VdOworICAgIG1faXNGcmFt
ZURpc3BsYXllZCA9IGZhbHNlOworfQorCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3Ry
ZWFtQVZGT2JqQzo6ZW5zdXJlTGF5ZXIoKQogewogICAgIGlmIChtX3NhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllcikKQEAgLTE0OCw2ICsxNzEsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQzo6ZW5zdXJlTGF5ZXIoKQogI2lmbmRlZiBOREVCVUcKICAgICBbbV9zYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXIgc2V0TmFtZTpAIk1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3Ry
ZWFtQVZGT2JqQyBBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciJdOwogI2VuZGlmCisgICAgbV9z
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuZ2V0KCkuYmFja2dyb3VuZENvbG9yID0gY2FjaGVkQ0dD
b2xvcihDb2xvcjo6YmxhY2spOwogICAgIAogICAgIHJlbmRlcmluZ01vZGVDaGFuZ2VkKCk7CiAg
ICAgCkBAIC0yNTcsOCArMjgxLDI0IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJl
YW1BVkZPYmpDOjp1cGRhdGVEaXNwbGF5TW9kZSgpCiAgICAgICAgIHJldHVybjsKICAgICBtX2Rp
c3BsYXlNb2RlID0gZGlzcGxheU1vZGU7CiAKLSAgICBpZiAobV9kaXNwbGF5TW9kZSA9PSBOb25l
KQorICAgIGlmIChtX2Rpc3BsYXlNb2RlIDwgUGF1c2VkSW1hZ2UgJiYgbV9zYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXIpCisgICAgICAgIGZsdXNoQW5kUmVtb3ZlVmlkZW9TYW1wbGVCdWZmZXJzKCk7
Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1cGRhdGVQ
YXVzZWRJbWFnZSgpCit7CisgICAgQVNTRVJUKG1fZGlzcGxheU1vZGUgPT0gY3VycmVudERpc3Bs
YXlNb2RlKCkpOworCisgICAgaWYgKG1fZGlzcGxheU1vZGUgPCBQYXVzZWRJbWFnZSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IG1fbWVkaWFTdHJlYW1Qcml2
YXRlLT5jdXJyZW50RnJhbWVJbWFnZSgpOworICAgIEFTU0VSVChpbWFnZSk7CisgICAgaWYgKCFp
bWFnZSkKICAgICAgICAgcmV0dXJuOworCisgICAgbV9wYXVzZWRJbWFnZSA9IGltYWdlLT5nZXRD
R0ltYWdlUmVmKCk7CisgICAgQVNTRVJUKG1fcGF1c2VkSW1hZ2UpOwogfQogCiB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cGxheSgpCkBAIC0yODYsNiArMzI2LDcg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBhdXNlKCkKICAg
ICBtX2Nsb2NrLT5zdG9wKCk7CiAgICAgbV9wbGF5aW5nID0gZmFsc2U7CiAgICAgdXBkYXRlRGlz
cGxheU1vZGUoKTsKKyAgICB1cGRhdGVQYXVzZWRJbWFnZSgpOwogfQogCiBib29sIE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cGF1c2VkKCkgY29uc3QKQEAgLTU3NywxMCAr
NjE4LDkgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBhaW50
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QKIAogdm9pZCBNZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakM6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewotICAgIGlmIChtX2Rp
c3BsYXlNb2RlID09IE5vbmUgfHwgIW1ldGFEYXRhQXZhaWxhYmxlKCkgfHwgY29udGV4dC5wYWlu
dGluZ0Rpc2FibGVkKCkgfHwgIW1faGF2ZUV2ZXJQbGF5ZWQpCisgICAgaWYgKG1fZGlzcGxheU1v
ZGUgPT0gTm9uZSB8fCAhbWV0YURhdGFBdmFpbGFibGUoKSB8fCBjb250ZXh0LnBhaW50aW5nRGlz
YWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0KICAgICBpZiAobV9kaXNwbGF5TW9kZSA9PSBM
aXZlUHJldmlldykKICAgICAgICAgbV9tZWRpYVN0cmVhbVByaXZhdGUtPnBhaW50Q3VycmVudEZy
YW1lSW5Db250ZXh0KGNvbnRleHQsIHJlY3QpOwogICAgIGVsc2UgewpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDI1MTE2NGZj
ZWVjYThhNWNjZTVkMWNhYWYyNTlhNzE3MGJmZWRjM2MuLjc4ZGViZTk5M2ViM2MyNTE2YmEzNWMy
YjBlMTM5YmIwOTAyZGQzOTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxNi0wNy0yOCAgR2Vv
cmdlIFJ1YW4gIDxncnVhbkBhcHBsZS5jb20+CisKKyAgICAgICAgSFRNTFZpZGVvRWxlbWVudCB3
aXRoIE1lZGlhU3RyZWFtIHNyYyBzaG93cyBwYXVzZWQgaW1hZ2Ugd2hlbiBhbGwgdmlkZW8gdHJh
Y2tzIGFyZSBkaXNhYmxlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTYwMjIyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yNzU1NzMxMz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW0tdmlkZW8tZWxlbWVudC12aWRlby10cmFja3MtZGlzYWJsZWQtZXhw
ZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVh
bS12aWRlby1lbGVtZW50LXZpZGVvLXRyYWNrcy1kaXNhYmxlZC10aGVuLWVuYWJsZWQtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLXZp
ZGVvLWVsZW1lbnQtdmlkZW8tdHJhY2tzLWRpc2FibGVkLXRoZW4tZW5hYmxlZC5odG1sOiBBZGRl
ZC4gQ2hlY2tzCisgICAgICAgIHRoYXQgdGhlIHZpZGVvIGZyYW1lcyBkaXNwbGF5IGNhcHR1cmVk
IG1lZGlhIGlmIGFsbCB2aWRlbyB0cmFja3Mgd2VyZSBkaXNhYmxlZCBhbmQgdGhlbiBhIHNpbmds
ZQorICAgICAgICB2aWRlbyB0cmFjayBpcyByZS1lbmFibGVkLiBUaGlzIHRlc3QgYWxzbyBjaGVj
a3MgdGhhdCBhbiBpbml0aWFsIGZyYW1lIGlzIHBhaW50ZWQgdG8KKyAgICAgICAgY2FudmFzIGlm
IHRoZSB2aWRlbyBoYXMgbm90IHlldCBiZWVuIHBsYXllZC4KKyAgICAgICAgKiBmYXN0L21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtLXZpZGVvLWVsZW1lbnQtdmlkZW8tdHJhY2tzLWRpc2FibGVkLmh0
bWw6IEFkZGVkLiBSZWZlcmVuY2UgdGVzdHMgdGhlCisgICAgICAgIGZyYW1lcyBvZiB0aGUgdmlk
ZW8gdG8gYmUgYmxhY2ssIHNpbmNlIHRoZSBjYW52YXMgaXMgcGFpbnRlZCBibGFjayByZWdhcmRs
ZXNzIG9mIHRoZSBzdGF0ZSBvZiB0aGUgdmlkZW8gZnJhbWVzCisgICAgICAgIGlmIGRpc3BsYXlN
b2RlIG9mIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQyBpcyBQYWludEl0Qmxh
Y2suCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zOiBNZWRpYVN0
cmVhbS12aWRlby1lbGVtZW50LXZpZGVvLXRyYWNrcy1kaXNhYmxlZC5odG1sIGZhaWxzIG9uIEVs
CisgICAgICAgIENhcGl0YW4gZHVlIHRvIGluY29ycmVjdCBiZWhhdmlvciBvZiBBVlNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllcidzIEFQSSBjYWxsIGZsdXNoQW5kUmVtb3ZlSW1hZ2UuCisKIDIwMTYt
MDctMjYgIEdlb3JnZSBSdWFuICA8Z3J1YW5AYXBwbGUuY29tPgogCiAgICAgICAgIEhUTUxWaWRl
b0VsZW1lbnQgZnJhbWVzIGRvIG5vdCB1cGRhdGUgb24gaU9TIHdoZW4gc3JjIGlzIGEgTWVkaWFT
dHJlYW0gYmxvYgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbS12aWRlby1lbGVtZW50LXZpZGVvLXRyYWNrcy1kaXNhYmxlZC1leHBlY3RlZC5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS12aWRlby1lbGVtZW50
LXZpZGVvLXRyYWNrcy1kaXNhYmxlZC1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVjNTU2OTgy
MjQ3YzE4NTNiNzgwNjcyN2IyYjkwMDQ1NzYyMWVhZTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLXZpZGVvLWVsZW1lbnQtdmlkZW8t
dHJhY2tzLWRpc2FibGVkLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwzNiBAQAorPCFET0NUWVBF
IGh0bWw+CisKKzxodG1sPgorPGhlYWQ+CisgICAgPHN0eWxlPgorICAgICAgICAudmlkZW8gewor
ICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgICAgICAgbGVmdDogMTBweDsK
KyAgICAgICAgICAgIHRvcDogNTBweDsKKyAgICAgICAgICAgIGhlaWdodDogMzYwcHg7CisgICAg
ICAgICAgICB3aWR0aDogNjgwcHg7CisgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibGFj
azsKKyAgICAgICAgICAgIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07CisgICAgICAgIH0KKyAgICAg
ICAgCisgICAgICAgIC5tYXNrZXIgeworICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwor
ICAgICAgICAgICAgbGVmdDogMTBweDsKKyAgICAgICAgICAgIHRvcDogNTBweDsKKyAgICAgICAg
ICAgIGhlaWdodDogMzYwcHg7CisgICAgICAgICAgICB3aWR0aDogNjgwcHg7CisgICAgICAgICAg
ICBib3JkZXItdG9wOiA1MHB4IHNvbGlkIHdoaXRlOworICAgICAgICAgICAgYm9yZGVyLXJpZ2h0
OiAzMDBweCBzb2xpZCB3aGl0ZTsKKyAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDUwcHggc29s
aWQgd2hpdGU7CisgICAgICAgICAgICBib3JkZXItbGVmdDogMzAwcHggc29saWQgd2hpdGU7Cisg
ICAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OworICAgICAgICB9CisgICAgPC9zdHls
ZT4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGVzdHMgdGhhdCB0aGUgdmlkZW8gZnJhbWVzIG9mIGFu
IEhUTUxWaWRlb0VsZW1lbnQgYXJlIGJsYWNrIGlmIG5vIHZpZGVvIE1lZGlhU3RyZWFtVHJhY2sg
aXMgZW5hYmxlZC48L3A+Cis8ZGl2IGNsYXNzPSJ2aWRlbyI+PC9kaXY+Cis8ZGl2IGNsYXNzPSJt
YXNrZXIiPjwvZGl2PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLXZpZGVvLWVsZW1lbnQtdmlkZW8tdHJhY2tz
LWRpc2FibGVkLXRoZW4tZW5hYmxlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtLXZpZGVvLWVsZW1lbnQtdmlkZW8tdHJhY2tzLWRpc2FibGVk
LXRoZW4tZW5hYmxlZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGFmMDc0ZDgzMmUyMjBjMmMy
ZDc5MTQ1MmU4ZjBlYWZkM2U3OTc2ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tdmlkZW8tZWxlbWVudC12aWRlby10cmFja3MtZGlz
YWJsZWQtdGhlbi1lbmFibGVkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMyIEBACitUZXN0cyB0
aGF0IHJlLWVuYWJsaW5nIGEgdmlkZW8gTWVkaWFTdHJlYW1UcmFjayB3aGVuIGFsbCB0cmFja3Mg
d2VyZSBwcmV2aW91c2x5IGRpc2FibGVkIGNhdXNlcyBjYXB0dXJlZCBtZWRpYSB0byBkaXNwbGF5
LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBtZWRpYURldmljZXMuZ2V0
VXNlck1lZGlhIGdlbmVyYXRlZCBhIHN0cmVhbSBzdWNjZXNzZnVsbHkuCit2aWRlby5zcmMgPSB3
aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChtZWRpYVN0cmVhbSkKKworID09PSBiZWdpbm5pbmcg
cm91bmQgb2YgcGl4ZWwgdGVzdHMgPT09CitQQVNTIHBpeGVsIHdhcyB3aGl0ZQorCisgPT09IGFs
bCB2aWRlbyB0cmFja3MgZGlzYWJsZWQgPT09CitQQVNTIHBpeGVsIHdhcyBibGFjay4KKworID09
PSB2aWRlbyB0cmFjayByZWVuYWJsZWQgPT09CitQQVNTIHBpeGVsIHdhcyB3aGl0ZS4KKworID09
PT09IHBsYXkgdmlkZW8gPT09PT0KK3ZpZGVvLnBsYXkoKQorCisgPT09IGJlZ2lubmluZyByb3Vu
ZCBvZiBwaXhlbCB0ZXN0cyA9PT0KK1BBU1MgcGl4ZWwgd2FzIHdoaXRlCisKKyA9PT0gYWxsIHZp
ZGVvIHRyYWNrcyBkaXNhYmxlZCA9PT0KK1BBU1MgcGl4ZWwgd2FzIGJsYWNrLgorCisgPT09IHZp
ZGVvIHRyYWNrIHJlZW5hYmxlZCA9PT0KK1BBU1MgcGl4ZWwgd2FzIHdoaXRlLgorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisgCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLXZpZGVvLWVsZW1lbnQtdmlk
ZW8tdHJhY2tzLWRpc2FibGVkLXRoZW4tZW5hYmxlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS12aWRlby1lbGVtZW50LXZpZGVvLXRyYWNrcy1kaXNhYmxl
ZC10aGVuLWVuYWJsZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNjE1MzBjZjc0MDhjZTUxYWM2MDRlMzg5
NGE3MGJhYzMzYTg5Njc2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbS12aWRlby1lbGVtZW50LXZpZGVvLXRyYWNrcy1kaXNhYmxlZC10
aGVuLWVuYWJsZWQuaHRtbApAQCAtMCwwICsxLDEyOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuL3Jlc291cmNlcy9nZXRVc2VyTWVkaWEt
aGVscGVyLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0ic3RhcnQoKSI+Cis8
cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHZpZGVv
IGNvbnRyb2xzIHdpZHRoPSI2ODAiIGhlaWdodD0iMzYwIj48L3ZpZGVvPgorPGNhbnZhcyB3aWR0
aD0iNjgwIiBoZWlnaHQ9IjM2MCI+PC9jYW52YXM+Cis8c2NyaXB0PgorICAgIGxldCBjYW52YXM7
CisgICAgbGV0IGNvbnRleHQ7CisgICAgbGV0IG1lZGlhU3RyZWFtOworICAgIGxldCB2aWRlbzsK
KyAgICAKKyAgICBsZXQgYnVmZmVyOworCisgICAgZnVuY3Rpb24gaXNQaXhlbEJsYWNrKHBpeGVs
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHBpeGVsWzBdID09PSAwICYmIHBpeGVsWzFdID09PSAw
ICYmIHBpeGVsWzJdID09PSAwICYmIHBpeGVsWzNdID09PSAyNTU7CisgICAgfQorCisgICAgZnVu
Y3Rpb24gaXNQaXhlbFRyYW5zcGFyZW50KHBpeGVsKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHBp
eGVsWzBdID09PSAwICYmIHBpeGVsWzFdID09PSAwICYmIHBpeGVsWzJdID09PSAwICYmIHBpeGVs
WzNdID09PSAwOworICAgIH0KKworICAgIGZ1bmN0aW9uIGlzUGl4ZWxXaGl0ZShwaXhlbCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBwaXhlbFswXSA9PT0gMjU1ICYmIHBpeGVsWzFdID09PSAyNTUg
JiYgcGl4ZWxbMl0gPT09IDI1NSAmJiBwaXhlbFszXSA9PT0gMjU1OworICAgIH0KKworICAgIGZ1
bmN0aW9uIGF0dGVtcHQobnVtYmVyT2ZUcmllcywgY2FsbCwgY2FsbGJhY2ssIHN1Y2Nlc3NNZXNz
YWdlKQorICAgIHsKKyAgICAgICAgaWYgKG51bWJlck9mVHJpZXMgPD0gMCkgeworICAgICAgICAg
ICAgdGVzdEZhaWxlZCgnUGl4ZWwgY2hlY2sgZGlkIG5vdCBzdWNjZWVkIGFmdGVyIG11bHRpcGxl
IHRyaWVzLicpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgbGV0
IGF0dGVtcHRTdWNjZWVkZWQgPSBjYWxsKCk7CisgICAgICAgIGlmIChhdHRlbXB0U3VjY2VlZGVk
KSB7CisgICAgICAgICAgICB0ZXN0UGFzc2VkKHN1Y2Nlc3NNZXNzYWdlKTsKKyAgICAgICAgICAg
IGNhbGxiYWNrKCk7CisKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAK
KyAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7IGF0dGVtcHQoLS1udW1iZXJPZlRyaWVzLCBjYWxs
LCBjYWxsYmFjaywgc3VjY2Vzc01lc3NhZ2UpOyB9LCA1MCk7CisgICAgfQorCisgICAgZnVuY3Rp
b24gcmVwZWF0V2l0aFZpZGVvUGxheWluZ0FuZEZpbmlzaFRlc3QoKQorICAgIHsKKyAgICAgICAg
aWYgKHZpZGVvLnBhdXNlZCkgeworICAgICAgICAgICAgZGVidWcoJzxicj4gPT09PT0gcGxheSB2
aWRlbyA9PT09PScpOworICAgICAgICAgICAgZXZhbEFuZExvZygndmlkZW8ucGxheSgpJyk7Cisg
ICAgICAgICAgICBiZWdpblRlc3RSb3VuZCgpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAg
IGZpbmlzaEpTVGVzdCgpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHJlZW5hYmxlVHJhY2soKQor
ICAgIHsKKyAgICAgICAgbWVkaWFTdHJlYW0uZ2V0VmlkZW9UcmFja3MoKVswXS5lbmFibGVkID0g
dHJ1ZTsKKyAgICAgICAgZGVidWcoJzxicj4gPT09IHZpZGVvIHRyYWNrIHJlZW5hYmxlZCA9PT0n
KTsKKworICAgICAgICAvLyBUaGUgdmlkZW8gaXMgbm90IGd1YXJhbnRlZWQgdG8gcmVuZGVyIG5v
bi1ibGFjayBmcmFtZXMgYmVmb3JlIHRoZSBjYW52YXMgaXMgZHJhd24gdG8gYW5kIHRoZSBwaXhl
bHMgYXJlIGNoZWNrZWQuCisgICAgICAgIC8vIEEgdGltZW91dCBpcyB1c2VkIHRvIGVuc3VyZSB0
aGF0IHRoZSBwaXhlbCBjaGVjayBpcyBkb25lIGFmdGVyIHRoZSB2aWRlbyByZW5kZXJzIG5vbi1i
bGFjayBmcmFtZXMuCisgICAgICAgIGF0dGVtcHQoMTAsIGNoZWNrUGl4ZWxzLCByZXBlYXRXaXRo
VmlkZW9QbGF5aW5nQW5kRmluaXNoVGVzdCwgJ3BpeGVsIHdhcyB3aGl0ZS4nKTsKKyAgICB9CisK
KyAgICBmdW5jdGlvbiBjaGVja1BpeGVscygpCisgICAgeworICAgICAgICBjb250ZXh0LmNsZWFy
UmVjdCgwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpOworICAgICAgICBidWZmZXIg
PSBjb250ZXh0LmdldEltYWdlRGF0YSgzMCwgMjQyLCAxLCAxKS5kYXRhOworICAgICAgICBpZigh
aXNQaXhlbFRyYW5zcGFyZW50KGJ1ZmZlcikpIHsKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoJ3Bp
eGVsIHdhcyBub3QgdHJhbnNwYXJlbnQgYWZ0ZXIgY2xlYXJpbmcgY2FudmFzLicpOworICAgICAg
ICB9CisKKyAgICAgICAgY29udGV4dC5kcmF3SW1hZ2UodmlkZW8sIDAsIDAsIGNhbnZhcy53aWR0
aCwgY2FudmFzLmhlaWdodCk7CisgICAgICAgIGJ1ZmZlciA9IGNvbnRleHQuZ2V0SW1hZ2VEYXRh
KDMwLCAyNDIsIDEsIDEpLmRhdGE7CisKKyAgICAgICAgaWYgKG1lZGlhU3RyZWFtLmdldFZpZGVv
VHJhY2tzKClbMF0uZW5hYmxlZCkKKyAgICAgICAgICAgIHJldHVybiBpc1BpeGVsV2hpdGUoYnVm
ZmVyKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIGlzUGl4ZWxCbGFjayhidWZm
ZXIpOworICAgIH0KKworICAgIGZ1bmN0aW9uIGRpc2FibGVBbGxUcmFja3MoKQorICAgIHsKKyAg
ICAgICAgbWVkaWFTdHJlYW0uZ2V0VmlkZW9UcmFja3MoKVswXS5lbmFibGVkID0gZmFsc2U7Cisg
ICAgICAgIGRlYnVnKCc8YnI+ID09PSBhbGwgdmlkZW8gdHJhY2tzIGRpc2FibGVkID09PScpOwor
ICAgICAgICAKKyAgICAgICAgLy8gVGhlIHZpZGVvIGlzIG5vdCBndWFyYW50ZWVkIHRvIHJlbmRl
ciBibGFjayBmcmFtZXMgYmVmb3JlIHRoZSBjYW52YXMgaXMgZHJhd24gdG8gYW5kIHRoZSBwaXhl
bHMgYXJlIGNoZWNrZWQuCisgICAgICAgIC8vIEEgdGltZW91dCBpcyB1c2VkIHRvIGVuc3VyZSB0
aGF0IHRoZSBwaXhlbCBjaGVjayBpcyBkb25lIGFmdGVyIHRoZSB2aWRlbyByZW5kZXJzIGJsYWNr
IGZyYW1lcy4KKyAgICAgICAgYXR0ZW1wdCgxMCwgY2hlY2tQaXhlbHMsIHJlZW5hYmxlVHJhY2ss
ICdwaXhlbCB3YXMgYmxhY2suJyk7CisgICAgfQorCisgICAgZnVuY3Rpb24gYmVnaW5UZXN0Um91
bmQoKQorICAgIHsKKyAgICAgICAgZGVidWcoJzxicj4gPT09IGJlZ2lubmluZyByb3VuZCBvZiBw
aXhlbCB0ZXN0cyA9PT0nKTsKKyAgICAgICAgYXR0ZW1wdCgxLCBjaGVja1BpeGVscywgZGlzYWJs
ZUFsbFRyYWNrcywgJ3BpeGVsIHdhcyB3aGl0ZScpOworICAgIH0KKworICAgIGZ1bmN0aW9uIGNh
bnBsYXkoKQorICAgIHsKKyAgICAgICAgY2FudmFzID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcign
Y2FudmFzJyk7CisgICAgICAgIGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTsKKwor
ICAgICAgICBiZWdpblRlc3RSb3VuZCgpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0YXJ0KCkK
KyAgICB7CisgICAgICAgIGRlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IHJlLWVuYWJsaW5nIGEgdmlk
ZW8gTWVkaWFTdHJlYW1UcmFjayB3aGVuIGFsbCB0cmFja3Mgd2VyZSBwcmV2aW91c2x5IGRpc2Fi
bGVkIGNhdXNlcyBjYXB0dXJlZCBtZWRpYSB0byBkaXNwbGF5LiIpOworCisgICAgICAgIHZpZGVv
ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigndmlkZW8nKTsKKyAgICAgICAgdmlkZW8uYWRkRXZl
bnRMaXN0ZW5lcignY2FucGxheScsIGNhbnBsYXkpOworCisgICAgICAgIGdldFVzZXJNZWRpYSgi
YWxsb3ciLCB7dmlkZW86dHJ1ZX0sIHNldHVwVmlkZW9FbGVtZW50V2l0aFN0cmVhbSk7CisgICAg
fQorCisgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS12aWRlby1lbGVtZW50LXZpZGVvLXRy
YWNrcy1kaXNhYmxlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbS12aWRlby1lbGVtZW50LXZpZGVvLXRyYWNrcy1kaXNhYmxlZC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjEwNmJkN2Y2NGU0OWI1MGUwN2RmZmVlOGZmZDZhYmQzMWE3OGQ4ZWQKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLXZpZGVvLWVsZW1l
bnQtdmlkZW8tdHJhY2tzLWRpc2FibGVkLmh0bWwKQEAgLTAsMCArMSw4MSBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzdHlsZT4KKyAgICAgICAgdmlkZW8geworICAg
ICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgICAgICAgbGVmdDogMTBweDsKKyAg
ICAgICAgICAgIHRvcDogNTBweDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLm1hc2tl
ciB7CisgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgICAgICAgICBsZWZ0OiAx
MHB4OworICAgICAgICAgICAgdG9wOiA1MHB4OworICAgICAgICAgICAgaGVpZ2h0OiAzNjBweDsK
KyAgICAgICAgICAgIHdpZHRoOiA2ODBweDsKKyAgICAgICAgICAgIGJvcmRlci10b3A6IDUwcHgg
c29saWQgd2hpdGU7CisgICAgICAgICAgICBib3JkZXItcmlnaHQ6IDMwMHB4IHNvbGlkIHdoaXRl
OworICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogNTBweCBzb2xpZCB3aGl0ZTsKKyAgICAgICAg
ICAgIGJvcmRlci1sZWZ0OiAzMDBweCBzb2xpZCB3aGl0ZTsKKyAgICAgICAgICAgIGJveC1zaXpp
bmc6IGJvcmRlci1ib3g7CisgICAgICAgIH0KKyAgICA8L3N0eWxlPgorPC9oZWFkPgorCis8Ym9k
eT4KKzxwPlRlc3RzIHRoYXQgdGhlIHZpZGVvIGZyYW1lcyBvZiBhbiBIVE1MVmlkZW9FbGVtZW50
IGFyZSBibGFjayBpZiBubyB2aWRlbyBNZWRpYVN0cmVhbVRyYWNrIGlzIGVuYWJsZWQuPC9wPgor
PHZpZGVvIGNvbnRyb2xzIHdpZHRoPSI2ODAiIGhlaWdodD0iMzYwIj48L3ZpZGVvPgorPGRpdiBj
bGFzcz0ibWFza2VyIj48L2Rpdj4KKworPHNjcmlwdD4KKyAgICBsZXQgbWVkaWFTdHJlYW07Cisg
ICAgbGV0IHZpZGVvOworCisgICAgZnVuY3Rpb24gZGVidWcobXNnKQorICAgIHsKKyAgICAgICAg
bGV0IHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7CisgICAgICAgIGRvY3Vt
ZW50LmJvZHkuYXBwZW5kQ2hpbGQoc3Bhbik7CisgICAgICAgIHNwYW4uaW5uZXJIVE1MID0gYCR7
bXNnfSA8YnIgLz5gOworICAgIH0KKworICAgIGZ1bmN0aW9uIGNhbnBsYXl0aHJvdWdoKCkKKyAg
ICB7ICAgIAorICAgICAgICBtZWRpYVN0cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBdLmVuYWJsZWQg
PSBmYWxzZTsKKyAgICAgICAgd2luZG93LnRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgIH0K
KworICAgIGZ1bmN0aW9uIGNhbnBsYXkoKQorICAgIHsKKyAgICAgICAgdmlkZW8ucGxheSgpOwor
ICAgIH0KKworICAgIGZ1bmN0aW9uIHNldHVwU3RyZWFtKHN0cmVhbSkKKyAgICB7CisgICAgICAg
IG1lZGlhU3RyZWFtID0gc3RyZWFtOworICAgICAgICB2aWRlby5zcmMgPSB3aW5kb3cuVVJMLmNy
ZWF0ZU9iamVjdFVSTChtZWRpYVN0cmVhbSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gZmFpbGVk
VG9TZXR1cFN0cmVhbSgpCisgICAgeworICAgICAgICBkZWJ1ZygnRmFpbGVkIHRvIHNldHVwIHN0
cmVhbScpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0YXJ0KCkKKyAgICB7CisgICAgICAgIHZp
ZGVvID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigndmlkZW8nKTsKKyAgICAgICAgdmlkZW8uYWRk
RXZlbnRMaXN0ZW5lcignY2FucGxheScsIGNhbnBsYXksIGZhbHNlKTsKKyAgICAgICAgdmlkZW8u
YWRkRXZlbnRMaXN0ZW5lcignY2FucGxheXRocm91Z2gnLCBjYW5wbGF5dGhyb3VnaCwgZmFsc2Up
OworICAgICAgICBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7dmlkZW86dHJ1
ZX0pCisgICAgICAgICAgICAudGhlbihzZXR1cFN0cmVhbSkKKyAgICAgICAgICAgIC5jYXRjaChm
YWlsZWRUb1NldHVwU3RyZWFtKTsKKyAgICB9CisKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKKyAgICAgICAgd2luZG93LnRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICB3
aW5kb3cudGVzdFJ1bm5lci5zZXRVc2VyTWVkaWFQZXJtaXNzaW9uKHRydWUpOworICAgICAgICBz
dGFydCgpOworICAgIH0KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDkwOWY4NzM2MjdmY2Uy
NTU2ZjA4ZDQwNDg4Mjk2ZmNlNmViZWEwOGUuLjM3YTlmZjhkNGM1MTM1OGQ1YzAxZDgwYmIwMTFm
YTU4NmE5N2ViY2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVz
dEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBl
Y3RhdGlvbnMKQEAgLTM3Myw2ICszNzMsOSBAQCB3ZWJraXQub3JnL2IvMTQyNzI2IFsgWW9zZW1p
dGUgXSBmYXN0L2ltYWdlcy9hbmltYXRlZC1wbmcuaHRtbCBbIFNraXAgXQogCiBbIERlYnVnIF0g
ZWRpdGluZy91bmRvL3JlbW92ZS1jc3MtcHJvcGVydHktYW5kLXJlbW92ZS1zdHlsZS5odG1sIFsg
UGFzcyBGYWlsdXJlIF0KIAorIyBUaGlzIHRlc3QgZmFpbHMgZXZlcnkgdGltZSBvbiBFbCBDYXBp
dGFuCitbIEVsQ2FwaXRhbiBdIGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tdmlkZW8tZWxl
bWVudC12aWRlby10cmFja3MtZGlzYWJsZWQuaHRtbCBbIFNraXAgXQorCiAjIyMgRU5EIE9GICgz
KSBVbmNsYXNzaWZpZWQgZmFpbHVyZXMKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>