<?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>93036</bug_id>
          
          <creation_ts>2012-08-02 15:41:35 -0700</creation_ts>
          <short_desc>[BlackBerry] Add default implementation of GraphicsLayerClient::contentsVisible()</short_desc>
          <delta_ts>2012-08-02 19:27:04 -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>WebKit BlackBerry</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>93040</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Arvid Nilsson">anilsson</reporter>
          <assigned_to name="Arvid Nilsson">anilsson</assigned_to>
          <cc>anilsson</cc>
    
    <cc>kpiascik</cc>
    
    <cc>manyoso</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yong.li.webkit</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>685918</commentid>
    <comment_count>0</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-08-02 15:41:35 -0700</bug_when>
    <thetext>This bug deals with a very specific situation where checkerboard would never resolve. In LayerTiler, render jobs are used for reactive rendering, to make sure checkerboard does not stay on screen. When checkerboard is detected on the compositing thread, a render job is scheduled to make sure it&apos;s resolved. Proactive rendering is handled by the prefill mechanism, ultimately falling back on GraphicsLayerClient::contentsVisible().

If the entire layer was invalidated, the render jobs were cleared, making us entirely dependent on the implementation of GraphicsLayerClient::contentsVisible() to determine which tiles should be rendered.

Fixed by not clearing visibility jobs when the entire layer is invalidated, thus making us more robust against contentsVisible implementation, even allowing it to always return false and make the layer rely entirely on reactive rendering.

Also removed dead code related to the deprecated LayerTiler::m_tilesWebKitThread mechanism, which has been replaced by the render jobs.

PR 187458</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>685921</commentid>
    <comment_count>1</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-08-02 15:46:09 -0700</bug_when>
    <thetext>Hmm, trying to think of a better title for this bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>685946</commentid>
    <comment_count>2</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-08-02 16:05:07 -0700</bug_when>
    <thetext>Whoa, I discovered contentsVisible isn&apos;t even upstreamed yet. How about this?

LayerTiler uses both proactive and reactive rendering to populate tiles. If contentsVisible() is accurate, it will cause the right tiles to be rendered. Failing that, when a dirty tile is found to be visible on the compositing thread, a render job is scheduled.

Returning true by default would cause memory usage to balloon, because the LayerTiler would believe every tile is visible and always needs to be rendered. Instead, we choose to return false by default, relying entirely on reactive rendering unless the client reimplements this method.

However this revealed a subtle bug. If the entire layer was invalidated every frame, checkerboard would never resolve.

Fixed by not clearing visibility jobs when the entire layer is invalidated, thus making us robust against an incomplete contentsVisible implementation.

Also removed dead code related to the deprecated LayerTiler::m_tilesWebKitThread mechanism, which has been replaced by the new visibility handling described here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>685955</commentid>
    <comment_count>3</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-08-02 16:13:38 -0700</bug_when>
    <thetext>Or should I upstream in a separate bug?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>685992</commentid>
    <comment_count>4</comment_count>
      <attachid>156207</attachid>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-08-02 16:54:09 -0700</bug_when>
    <thetext>Created attachment 156207
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>686012</commentid>
    <comment_count>5</comment_count>
      <attachid>156207</attachid>
    <who name="George Staikos">staikos</who>
    <bug_when>2012-08-02 17:08:14 -0700</bug_when>
    <thetext>Comment on attachment 156207
Patch

This is a nice cleanup.  I&apos;m not sure the bitfield change helps anything but doesn&apos;t make much of a difference to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>686146</commentid>
    <comment_count>6</comment_count>
      <attachid>156207</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-02 19:27:01 -0700</bug_when>
    <thetext>Comment on attachment 156207
Patch

Clearing flags on attachment: 156207

Committed r124550: &lt;http://trac.webkit.org/changeset/124550&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>686147</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-02 19:27:04 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156207</attachid>
            <date>2012-08-02 16:54:09 -0700</date>
            <delta_ts>2012-08-02 19:27:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93036-20120803015348.patch</filename>
            <type>text/plain</type>
            <size>18602</size>
            <attacher name="Arvid Nilsson">anilsson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0NTIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTJmMmJjY2Y3MzA2ZTU2
ODMyMzU3NTc2OGIyYzg4NjUxMmJjMGQyZC4uODBkN2YxMDViNWE0OTI5YjlkMGE4MWYxZmJhY2M3
YzlkOThjNzU2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDU1IEBACiAyMDEyLTA4LTAyICBBcnZp
ZCBOaWxzc29uICA8YW5pbHNzb25AcmltLmNvbT4KIAorICAgICAgICBbQmxhY2tCZXJyeV0gQWRk
IGRlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgR3JhcGhpY3NMYXllckNsaWVudDo6Y29udGVudHNW
aXNpYmxlKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTkzMDM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
UmV0dXJuaW5nIHRydWUgYnkgZGVmYXVsdCB3b3VsZCBjYXVzZSBtZW1vcnkgdXNhZ2UgdG8gYmFs
bG9vbiwgYmVjYXVzZQorICAgICAgICB0aGUgTGF5ZXJUaWxlciB3b3VsZCBiZWxpZXZlIGV2ZXJ5
IHRpbGUgaXMgdmlzaWJsZSBhbmQgYWx3YXlzIG5lZWRzIHRvCisgICAgICAgIGJlIHJlbmRlcmVk
LiBJbnN0ZWFkLCB3ZSBjaG9vc2UgdG8gcmV0dXJuIGZhbHNlIGJ5IGRlZmF1bHQsIHJlbHlpbmcK
KyAgICAgICAgZW50aXJlbHkgb24gcmVhY3RpdmUgcmVuZGVyaW5nIHRocm91Z2ggcmVuZGVyIGpv
YnMuCisKKyAgICAgICAgSG93ZXZlciB0aGlzIHJldmVhbGVkIGEgc3VidGxlIGJ1Zy4gSWYgdGhl
IGVudGlyZSBsYXllciB3YXMgaW52YWxpZGF0ZWQKKyAgICAgICAgZXZlcnkgZnJhbWUsIGNoZWNr
ZXJib2FyZCB3b3VsZCBuZXZlciByZXNvbHZlIHdpdGggdGhpcyBkZWZhdWx0CisgICAgICAgIGlt
cGxlbWVudGF0aW9uLgorCisgICAgICAgIEZpeGVkIGJ5IG5vdCBjbGVhcmluZyByZW5kZXIgam9i
cyB3aGVuIHRoZSBlbnRpcmUgbGF5ZXIgaXMgaW52YWxpZGF0ZWQsCisgICAgICAgIHRodXMgbWFr
aW5nIHVzIHJvYnVzdCBhZ2FpbnN0IGFuIGluY29tcGxldGUgY29udGVudHNWaXNpYmxlCisgICAg
ICAgIGltcGxlbWVudGF0aW9uLgorCisgICAgICAgIEFsc28gcmVtb3ZlZCBkZWFkIGNvZGUgcmVs
YXRlZCB0byB0aGUgZGVwcmVjYXRlZAorICAgICAgICBMYXllclRpbGVyOjptX3RpbGVzV2ViS2l0
VGhyZWFkIG1lY2hhbmlzbSwgd2hpY2ggaGFzIGJlZW4gcmVwbGFjZWQgYnkKKyAgICAgICAgdGhl
IGltcGxpY2l0IHZpc2liaWxpdHkgbWFuYWdlbWVudCByZXN1bHRpbmcgZnJvbSByZW5kZXIgam9i
cy4KKworICAgICAgICBXaXRoIG1fdGlsZXNXZWJLaXRUaHJlYWQgb3V0IG9mIHRoZSB3YXksIHJl
bmFtZSBtX3RpbGVzQ29tcG9zaXRpbmdUaHJlYWQKKyAgICAgICAgdG8gYmUgc2ltcGx5IG1fdGls
ZXMuCisKKyAgICAgICAgUFIgMTg3NDU4CisKKyAgICAgICAgVGhpcyBpcyBub3QgY3VycmVudGx5
IHRlc3RhYmxlIHVzaW5nIEJsYWNrQmVycnkgdGVzdGluZyBpbmZyYXN0cnVjdHVyZS4KKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDbGllbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDbGllbnQ6OmNvbnRlbnRzVmlzaWJsZSk6IEdldHMgYSBk
ZWZhdWx0IGltcGxlbWVudGF0aW9uIGluc3RlYWQgb2YgYmVpbmcgcHVyZSB2aXJ0dWFsLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJUaWxlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxheWVyVGlsZTo6TGF5ZXJUaWxlKTogTWVyZ2VkIExheWVyVGlsZURhdGEg
aW50byBMYXllclRpbGUgbm93IHRoYXQgbV90aWxlc1dlYktpdFRocmVhZCBpcyBnb25lLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJUaWxlLmg6CisgICAgICAg
IChMYXllclRpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5
ZXJUaWxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRpbGVyOjp+TGF5ZXJUaWxlcik6
CisgICAgICAgIChXZWJDb3JlOjpMYXllclRpbGVyOjp1cGRhdGVUZXh0dXJlQ29udGVudHNJZk5l
ZWRlZCk6IEJ1ZyBmaXggdG8gbWFrZSB1cyByb2J1c3QgYWdhaW5zdCB0aGUgbmV3IGRlZmF1bHQg
aW1wbGVtZW50YXRpb24gb2YgR3JhcGhpY3NMYXllckNsaWVudDo6Y29udGVudHNWaXNpYmxlKCkK
KyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGlsZXI6OnNob3VsZFBlcmZvcm1SZW5kZXJKb2IpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlcjo6bGF5ZXJWaXNpYmlsaXR5Q2hhbmdlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXllclRpbGVyOjp1cGxvYWRUZXh0dXJlc0lmTmVlZGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheWVyVGlsZXI6OmRyYXdUZXh0dXJlc0ludGVybmFsKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheWVyVGlsZXI6OmRlbGV0ZVRleHR1cmVzKToKKyAgICAgICAgKFdlYkNv
cmU6OkxheWVyVGlsZXI6OnBydW5lVGV4dHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJU
aWxlcjo6YmluZENvbnRlbnRzVGV4dHVyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YmxhY2tiZXJyeS9MYXllclRpbGVyLmg6CisgICAgICAgIChMYXllclRpbGVyKToKKworMjAxMi0w
OC0wMiAgQXJ2aWQgTmlsc3NvbiAgPGFuaWxzc29uQHJpbS5jb20+CisKICAgICAgICAgW0JsYWNr
QmVycnldIFVwc3RyZWFtIEdyYXBoaWNzTGF5ZXJDbGllbnQ6OmNvbnRlbnRzVmlzaWJsZSgpCiAg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MzA0MAogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwppbmRleCAyYmQ3OGQ4N2Y0YjE4NmI2MDRmOWIyNzk4
MWFkYzgyYzQ5ZWJjNzlkLi45ZGMxZWVlODA2ZTE5MzQ1NWExYmQ4NmFhMTk3M2EzMmI1MjIxZTM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAxMi0w
OC0wMiAgQXJ2aWQgTmlsc3NvbiAgPGFuaWxzc29uQHJpbS5jb20+CisKKyAgICAgICAgW0JsYWNr
QmVycnldIEFkZCBkZWZhdWx0IGltcGxlbWVudGF0aW9uIG9mIEdyYXBoaWNzTGF5ZXJDbGllbnQ6
OmNvbnRlbnRzVmlzaWJsZSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05MzAzNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFJlbW92ZSBpbXBsZW1lbnRhdGlvbiBvZiBHcmFwaGljc0xheWVyQ2xpZW50Ojpj
b250ZW50c1Zpc2libGUoKSBub3cKKyAgICAgICAgdGhhdCBpdCBoYXMgYSBkZWZhdWx0IGltcGxl
bWVudGF0aW9uLgorCisgICAgICAgIFRoaXMgYWxzbyBmaXhlcyBhIGJ1ZyB3aGVyZSBtZW1vcnkg
dXNhZ2UgZm9yIHRoZSBpbnNwZWN0b3IgaGlnaGxpZ2h0CisgICAgICAgIG92ZXJsYXkgd291bGQg
YmFsbG9vbiBiZWNhdXNlIGl0IHJldHVybmVkIHRydWUgZnJvbSBjb250ZW50c1Zpc2libGUoKQor
ICAgICAgICB3aGljaCB3b3VsZCBjYXVzZSB0aGUgTGF5ZXJUaWxlciB0byBwb3B1bGF0ZSBhbGwg
dGlsZXMuIFRoZSBkZWZhdWx0CisgICAgICAgIGltcGxlbWVudGF0aW9uIHJldHVybnMgZmFsc2Ug
aW5zdGVhZC4KKworICAgICAgICBQUiAxODc0NTgsIDE4NDM3NworCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvSW5zcGVjdG9yT3ZlcmxheS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JPdmVybGF5OjpzaG93UmVwYWludENvdW50ZXIpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0luc3BlY3Rvck92ZXJsYXkuaDoKKyAgICAgICAgKEluc3BlY3Rvck92ZXJsYXkpOgorICAgICAg
ICAqIFdlYktpdFN1cHBvcnQvRGVmYXVsdFRhcEhpZ2hsaWdodC5oOgorICAgICAgICAqIFdlYktp
dFN1cHBvcnQvU2VsZWN0aW9uT3ZlcmxheS5oOgorCiAyMDEyLTA4LTAyICBBbnRvbmlvIEdvbWVz
ICA8YWdvbWVzQHJpbS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBkZWJ1ZyBidWlsZCBmaXgg
KGJ1ZyA5Mjg4OSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzTGF5ZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzTGF5ZXJDbGllbnQuaAppbmRleCA4YzA4ZjQ5ZTViODI0OGI4YTQ1MDNmZDc1ZjNi
MWM2MzA0YzQ1Zjk5Li45MDJhMjU3M2Q1MWVhM2RhMjI2ZThhZDEzMzNjYWVkNjU5NDgzOTNmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVy
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NM
YXllckNsaWVudC5oCkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgUExB
VEZPUk0oQkxBQ0tCRVJSWSkKLSAgICB2aXJ0dWFsIGJvb2wgY29udGVudHNWaXNpYmxlKGNvbnN0
IEdyYXBoaWNzTGF5ZXIqLCBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgYm9vbCBjb250ZW50c1Zpc2libGUoY29uc3QgR3JhcGhpY3NMYXllciosIGNv
bnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogI2VuZGlm
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFj
a2JlcnJ5L0xheWVyVGlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9i
bGFja2JlcnJ5L0xheWVyVGlsZS5jcHAKaW5kZXggZGVjMTlkNDhiN2E1NDQwYzU4NjRlYWViMzIx
ZTlkZWJjNThjZDNjMS4uOWViNmY4MzZiMzhhNGQ3NzZhMTg0MGYxNzNkNjhjMjQ3NmQ5ZTA4YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9M
YXllclRpbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNr
YmVycnkvTGF5ZXJUaWxlLmNwcApAQCAtMjgsNiArMjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIExheWVyVGlsZTo6TGF5ZXJUaWxlKCkKICAgICA6IG1fY29udGVudHNEaXJ0eShmYWxzZSkK
KyAgICAsIG1fdmlzaWJsZShmYWxzZSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclRpbGUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJUaWxlLmgKaW5kZXggYWY0NDAz
ZGZmMTAwODljNzFkYWEzMDA3M2MyZTJjZWQzM2VmMmFlZi4uY2U5N2QyMWU5ZTJhMGU2YmRjZmVm
NzU5ZWM2ZGFmNjZmM2U1YTViOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclRpbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyVGlsZS5oCkBAIC0zMywyMCArMzMsNyBAQCBj
bGFzcyBDb2xvcjsKIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBUaWxlSW5kZXg7CiAKLWNsYXNzIExh
eWVyVGlsZURhdGEgewotcHVibGljOgotICAgIExheWVyVGlsZURhdGEoKQotICAgICAgICA6IG1f
dmlzaWJsZShmYWxzZSkKLSAgICB7Ci0gICAgfQotCi0gICAgYm9vbCBpc1Zpc2libGUoKSBjb25z
dCB7IHJldHVybiBtX3Zpc2libGU7IH0KLQotcHJvdGVjdGVkOgotICAgIGJvb2wgbV92aXNpYmxl
OwotfTsKLQotY2xhc3MgTGF5ZXJUaWxlIDogcHVibGljIExheWVyVGlsZURhdGEgeworY2xhc3Mg
TGF5ZXJUaWxlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBM
YXllclRpbGUoKTsKQEAgLTc2LDcgKzYzLDggQEAgcHJpdmF0ZToKIAogICAgIC8vIE5ldmVyIGFz
c2lnbiB0byBtX3RleHR1cmUgZGlyZWN0bHksIHVzZSBzZXRUZXh0dXJlKCkgYWJvdmUuCiAgICAg
UmVmUHRyPFRleHR1cmU+IG1fdGV4dHVyZTsKLSAgICBib29sIG1fY29udGVudHNEaXJ0eTsKKyAg
ICBib29sIG1fY29udGVudHNEaXJ0eSA6IDE7CisgICAgYm9vbCBtX3Zpc2libGUgOiAxOwogfTsK
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2ti
ZXJyeS9MYXllclRpbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Js
YWNrYmVycnkvTGF5ZXJUaWxlci5jcHAKaW5kZXggZGI2ZTc1YzJmZmEzMjM0NTk1ZDFiNGYzNWQ3
ZWUzOTIwYzkyMzRjMi4uOWY1YzZhZjNlODUwNjFhOTcyZDA0MzExYmU5MDMxNWU5NWI1ZTBkYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9M
YXllclRpbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFj
a2JlcnJ5L0xheWVyVGlsZXIuY3BwCkBAIC04Myw3ICs4Myw3IEBAIExheWVyVGlsZXI6On5MYXll
clRpbGVyKCkKICAgICAvLyBTb21lb25lIHNob3VsZCBoYXZlIGNhbGxlZCBMYXllclRpbGVyOjpk
ZWxldGVUZXh0dXJlcygpCiAgICAgLy8gYmVmb3JlIG5vdy4gV2UgY2FuJ3QgY2FsbCBpdCBoZXJl
IGJlY2F1c2Ugd2UgaGF2ZSBubwogICAgIC8vIE9wZW5HTCBjb250ZXh0LgotICAgIEFTU0VSVCht
X3RpbGVzQ29tcG9zaXRpbmdUaHJlYWQuaXNFbXB0eSgpKTsKKyAgICBBU1NFUlQobV90aWxlcy5p
c0VtcHR5KCkpOwogfQogCiB2b2lkIExheWVyVGlsZXI6OmxheWVyV2ViS2l0VGhyZWFkRGVzdHJv
eWVkKCkKQEAgLTE2NywxNiArMTY3LDIxIEBAIHZvaWQgTGF5ZXJUaWxlcjo6dXBkYXRlVGV4dHVy
ZUNvbnRlbnRzSWZOZWVkZWQoZG91YmxlIHNjYWxlKQogICAgICAgICBkaXJ0eVJlY3QgPSBJbnRS
ZWN0KEludFBvaW50Ojp6ZXJvKCksIHJlcXVpcmVkVGV4dHVyZVNpemUpOwogICAgIH0KIAorICAg
IC8vIElmIHRoZSBuZXcgc2l6ZSBpcyBlbXB0eSwgY2xlYXIgdGhlIHZpc2liaWxpdHkgam9icwor
ICAgIGlmIChyZXF1aXJlZFRleHR1cmVTaXplLmlzRW1wdHkoKSAmJiByZW5kZXJKb2JzLnNpemUo
KSkgeworICAgICAgICByZW5kZXJKb2JzLmNsZWFyKCk7CisKKyAgICAgICAgTXV0ZXhMb2NrZXIg
bG9ja2VyKG1fcmVuZGVySm9ic011dGV4KTsKKyAgICAgICAgbV9yZW5kZXJKb2JzLmNsZWFyKCk7
CisgICAgfQorCiAgICAgLy8gSWYgd2UgbmVlZCBkaXNwbGF5IGJlY2F1c2Ugd2Ugbm8gbG9uZ2Vy
IG5lZWQgdG8gYmUgZGlzcGxheWVkLCBkdWUgdG8gdGV4dHVyZSBzaXplIGJlY29taW5nIDAgeCAw
LAogICAgIC8vIG9yIGlmIHdlJ3JlIHJlLXJlbmRlcmluZyB0aGUgd2hvbGUgdGhpbmcgYW55d2F5
LCBjbGVhciBvbGQgdGV4dHVyZSBqb2JzLgotICAgIEhhc2hTZXQ8VGlsZUluZGV4PiBmaW5pc2hl
ZEpvYnM7Ci0gICAgaWYgKHJlcXVpcmVkVGV4dHVyZVNpemUuaXNFbXB0eSgpIHx8IGRpcnR5UmVj
dCA9PSBJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHJlcXVpcmVkVGV4dHVyZVNpemUpKSB7Ci0g
ICAgICAgIHsKLSAgICAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3JlbmRlckpvYnNNdXRl
eCk7Ci0gICAgICAgICAgICBtX3JlbmRlckpvYnMuY2xlYXIoKTsKLSAgICAgICAgfQorICAgIGlm
IChyZXF1aXJlZFRleHR1cmVTaXplLmlzRW1wdHkoKSB8fCBkaXJ0eVJlY3QgPT0gSW50UmVjdChJ
bnRQb2ludDo6emVybygpLCByZXF1aXJlZFRleHR1cmVTaXplKSkKICAgICAgICAgY2xlYXJUZXh0
dXJlSm9icygpOwotICAgIH0gZWxzZSBpZiAoIXJlbmRlckpvYnMuaXNFbXB0eSgpKSB7CisKKyAg
ICBIYXNoU2V0PFRpbGVJbmRleD4gZmluaXNoZWRKb2JzOworICAgIGlmICghcmVuZGVySm9icy5p
c0VtcHR5KCkpIHsKICAgICAgICAgaWYgKEltYWdlKiBpbWFnZSA9IG1fbGF5ZXItPmNvbnRlbnRz
KCkpIHsKICAgICAgICAgICAgIGJvb2wgaXNPcGFxdWUgPSBmYWxzZTsKICAgICAgICAgICAgIGlm
IChpbWFnZS0+aXNCaXRtYXBJbWFnZSgpKQpAQCAtMjE4LDYgKzIyMyw3IEBAIHZvaWQgTGF5ZXJU
aWxlcjo6dXBkYXRlVGV4dHVyZUNvbnRlbnRzSWZOZWVkZWQoZG91YmxlIHNjYWxlKQogICAgIH0K
IAogICAgIGJvb2wgZGlkUmVzaXplID0gZmFsc2U7CisgICAgSW50UmVjdCBwcmV2aW91c1RleHR1
cmVSZWN0KEludFBvaW50Ojp6ZXJvKCksIG1fcGVuZGluZ1RleHR1cmVTaXplKTsKICAgICBpZiAo
bV9wZW5kaW5nVGV4dHVyZVNpemUgIT0gcmVxdWlyZWRUZXh0dXJlU2l6ZSkgewogICAgICAgICBk
aWRSZXNpemUgPSB0cnVlOwogICAgICAgICBtX3BlbmRpbmdUZXh0dXJlU2l6ZSA9IHJlcXVpcmVk
VGV4dHVyZVNpemU7CkBAIC0yNDUsOSArMjUxLDEwIEBAIHZvaWQgTGF5ZXJUaWxlcjo6dXBkYXRl
VGV4dHVyZUNvbnRlbnRzSWZOZWVkZWQoZG91YmxlIHNjYWxlKQogICAgIEludFBvaW50IHRvcExl
ZnQgPSBkaXJ0eVJlY3QubWluWE1pbllDb3JuZXIoKTsKICAgICBJbnRQb2ludCBib3R0b21SaWdo
dCA9IGRpcnR5UmVjdC5tYXhYTWF4WUNvcm5lcigpOyAvLyBUaGlzIGlzIGFjdHVhbGx5IGEgcGl4
ZWwgYmVsb3cgYW5kIHRvIHRoZSByaWdodCBvZiB0aGUgZGlydHlSZWN0LgogCi0gICAgSW50U2l6
ZSB0aWxlTWF4aW11bVNpemUgPSB0aWxlU2l6ZSgpOwotICAgIGJvb2wgd2FzT25lVGlsZSA9IG1f
dGlsZXNXZWJLaXRUaHJlYWQuc2l6ZSgpID09IDE7Ci0gICAgYm9vbCBpc09uZVRpbGUgPSBtX3Bl
bmRpbmdUZXh0dXJlU2l6ZS53aWR0aCgpIDw9IHRpbGVNYXhpbXVtU2l6ZS53aWR0aCgpICYmIG1f
cGVuZGluZ1RleHR1cmVTaXplLmhlaWdodCgpIDw9IHRpbGVNYXhpbXVtU2l6ZS5oZWlnaHQoKTsK
KyAgICBJbnRTaXplIHRpbGVNYXhpbXVtU2l6ZSh0aWxlU2l6ZSgpKTsKKyAgICBJbnRSZWN0IHJl
Y3RGb3JPbmVUaWxlKEludFBvaW50Ojp6ZXJvKCksIHRpbGVNYXhpbXVtU2l6ZSk7CisgICAgYm9v
bCB3YXNPbmVUaWxlID0gcmVjdEZvck9uZVRpbGUuY29udGFpbnMocHJldmlvdXNUZXh0dXJlUmVj
dCk7CisgICAgYm9vbCBpc09uZVRpbGUgPSByZWN0Rm9yT25lVGlsZS5jb250YWlucyhJbnRSZWN0
KEludFBvaW50Ojp6ZXJvKCksIG1fcGVuZGluZ1RleHR1cmVTaXplKSk7CiAgICAgSW50UG9pbnQg
b3JpZ2luID0gb3JpZ2luT2ZUaWxlKGluZGV4T2ZUaWxlKHRvcExlZnQpKTsKICAgICBJbnRSZWN0
IHRpbGVSZWN0OwogICAgIGZvciAodGlsZVJlY3Quc2V0WChvcmlnaW4ueCgpKTsgdGlsZVJlY3Qu
eCgpIDwgYm90dG9tUmlnaHQueCgpOyB0aWxlUmVjdC5zZXRYKHRpbGVSZWN0LngoKSArIHRpbGVN
YXhpbXVtU2l6ZS53aWR0aCgpKSkgewpAQCAtMzEyLDE3ICszMTksOSBAQCB2b2lkIExheWVyVGls
ZXI6OnVwZGF0ZVRleHR1cmVDb250ZW50c0lmTmVlZGVkKGRvdWJsZSBzY2FsZSkKIAogYm9vbCBM
YXllclRpbGVyOjpzaG91bGRQZXJmb3JtUmVuZGVySm9iKGNvbnN0IFRpbGVJbmRleCYgaW5kZXgs
IGJvb2wgYWxsb3dQcmVmaWxsKQogewotICAgIC8vIElmIHRoZSB2aXNpYmlsaXR5IGluZm9ybWF0
aW9uIHdhcyBwcm9wYWdhdGVkIGZyb20gdGhlIGNvbXBvc2l0aW5nCi0gICAgLy8gdGhyZWFkLCB1
c2UgdGhhdCBpbmZvcm1hdGlvbi4KLSAgICAvLyBIb3dldmVyLCB3ZSBhcmUgYWJvdXQgdG8gY29t
bWl0IG5ldyBsYXllciBwcm9wZXJ0aWVzIHRoYXQgbWF5IG1ha2UKLSAgICAvLyBjdXJyZW50bHkg
aGlkZGVuIGxheWVycyB2aXNpYmxlLiBUbyBhdm9pZCBmYWxzZSBuZWdhdGl2ZXMsIHdlIG9ubHkg
YWxsb3cKLSAgICAvLyB0aGUgY3VycmVudCBzdGF0ZSB0byBiZSB1c2VkIHRvIGFjY2VwdCByZW5k
ZXIgam9icywgbm90IHRvIHJlamVjdCB0aGVtLgotICAgIGlmIChtX3RpbGVzV2ViS2l0VGhyZWFk
LmdldChpbmRleCkuaXNWaXNpYmxlKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCiAgICAgLy8g
VGlsZXMgdGhhdCBhcmUgbm90IGN1cnJlbnRseSB2aXNpYmxlIG9uIHRoZSBjb21wb3NpdGluZyB0
aHJlYWQgbWF5IHN0aWxsCiAgICAgLy8gZGVzZXJ2ZSB0byBiZSByZW5kZXJlZCBpZiB0aGV5IHNo
b3VsZCBiZSBwcmVmaWxsZWQuLi4KLSAgICBpZiAoYWxsb3dQcmVmaWxsICYmICFtX3RpbGVzV2Vi
S2l0VGhyZWFkLmNvbnRhaW5zKGluZGV4KSAmJiBzaG91bGRQcmVmaWxsVGlsZShpbmRleCkpCisg
ICAgaWYgKGFsbG93UHJlZmlsbCAmJiBzaG91bGRQcmVmaWxsVGlsZShpbmRleCkpCiAgICAgICAg
IHJldHVybiB0cnVlOwogCiAgICAgLy8gT3IgaWYgdGhleSBhcmUgdmlzaWJsZSBhY2NvcmRpbmcg
dG8gdGhlIHN0YXRlIHRoYXQncyBhYm91dCB0byBiZQpAQCAtMzY5LDcgKzM2OCw3IEBAIHZvaWQg
TGF5ZXJUaWxlcjo6bGF5ZXJWaXNpYmlsaXR5Q2hhbmdlZChMYXllckNvbXBvc2l0aW5nVGhyZWFk
KiwgYm9vbCB2aXNpYmxlKQogICAgICAgICBtX3JlbmRlckpvYnMuY2xlYXIoKTsKICAgICB9CiAK
LSAgICBmb3IgKFRpbGVNYXA6Oml0ZXJhdG9yIGl0ID0gbV90aWxlc0NvbXBvc2l0aW5nVGhyZWFk
LmJlZ2luKCk7IGl0ICE9IG1fdGlsZXNDb21wb3NpdGluZ1RocmVhZC5lbmQoKTsgKytpdCkgewor
ICAgIGZvciAoVGlsZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3RpbGVzLmJlZ2luKCk7IGl0ICE9IG1f
dGlsZXMuZW5kKCk7ICsraXQpIHsKICAgICAgICAgVGlsZUluZGV4IGluZGV4ID0gKCppdCkuZmly
c3Q7CiAgICAgICAgIExheWVyVGlsZSogdGlsZSA9ICgqaXQpLnNlY29uZDsKICAgICAgICAgdGls
ZS0+c2V0VmlzaWJsZShmYWxzZSk7CkBAIC0zODcsMTIgKzM4NiwxMiBAQCB2b2lkIExheWVyVGls
ZXI6OnVwbG9hZFRleHR1cmVzSWZOZWVkZWQoTGF5ZXJDb21wb3NpdGluZ1RocmVhZCopCiAgICAg
Zm9yIChUaWxlSm9ic01hcDo6Y29uc3RfaXRlcmF0b3IgdGlsZUpvYnNJdGVyID0gdGlsZUpvYnNN
YXAuYmVnaW4oKTsgdGlsZUpvYnNJdGVyICE9IHRpbGVKb2JzSXRlckVuZDsgKyt0aWxlSm9ic0l0
ZXIpIHsKICAgICAgICAgSW50UG9pbnQgb3JpZ2luID0gb3JpZ2luT2ZUaWxlKHRpbGVKb2JzSXRl
ci0+Zmlyc3QpOwogCi0gICAgICAgIExheWVyVGlsZSogdGlsZSA9IG1fdGlsZXNDb21wb3NpdGlu
Z1RocmVhZC5nZXQodGlsZUpvYnNJdGVyLT5maXJzdCk7CisgICAgICAgIExheWVyVGlsZSogdGls
ZSA9IG1fdGlsZXMuZ2V0KHRpbGVKb2JzSXRlci0+Zmlyc3QpOwogICAgICAgICBpZiAoIXRpbGUp
IHsKICAgICAgICAgICAgIGlmIChvcmlnaW4ueCgpID49IG1fcmVxdWlyZWRUZXh0dXJlU2l6ZS53
aWR0aCgpIHx8IG9yaWdpbi55KCkgPj0gbV9yZXF1aXJlZFRleHR1cmVTaXplLmhlaWdodCgpKQog
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgdGlsZSA9IG5ldyBMYXllclRp
bGUoKTsKLSAgICAgICAgICAgIG1fdGlsZXNDb21wb3NpdGluZ1RocmVhZC5hZGQodGlsZUpvYnNJ
dGVyLT5maXJzdCwgdGlsZSk7CisgICAgICAgICAgICBtX3RpbGVzLmFkZCh0aWxlSm9ic0l0ZXIt
PmZpcnN0LCB0aWxlKTsKICAgICAgICAgfQogCiAgICAgICAgIEludFJlY3QgdGlsZVJlY3Qob3Jp
Z2luLCB0aWxlU2l6ZSgpKTsKQEAgLTUxNiwxMCArNTE1LDEwIEBAIHZvaWQgTGF5ZXJUaWxlcjo6
ZHJhd1RleHR1cmVzSW50ZXJuYWwoTGF5ZXJDb21wb3NpdGluZ1RocmVhZCogbGF5ZXIsIGRvdWJs
ZSBzY2FsCiAgICAgZm9yICh0aWxlUmVjdC5zZXRYKDApOyB0aWxlUmVjdC54KCkgPCBtX3JlcXVp
cmVkVGV4dHVyZVNpemUud2lkdGgoKTsgdGlsZVJlY3Quc2V0WCh0aWxlUmVjdC54KCkgKyBtYXh3
KSkgewogICAgICAgICBmb3IgKHRpbGVSZWN0LnNldFkoMCk7IHRpbGVSZWN0LnkoKSA8IG1fcmVx
dWlyZWRUZXh0dXJlU2l6ZS5oZWlnaHQoKTsgdGlsZVJlY3Quc2V0WSh0aWxlUmVjdC55KCkgKyBt
YXhoKSkgewogICAgICAgICAgICAgVGlsZUluZGV4IGluZGV4ID0gaW5kZXhPZlRpbGUodGlsZVJl
Y3QubG9jYXRpb24oKSk7Ci0gICAgICAgICAgICBMYXllclRpbGUqIHRpbGUgPSBtX3RpbGVzQ29t
cG9zaXRpbmdUaHJlYWQuZ2V0KGluZGV4KTsKKyAgICAgICAgICAgIExheWVyVGlsZSogdGlsZSA9
IG1fdGlsZXMuZ2V0KGluZGV4KTsKICAgICAgICAgICAgIGlmICghdGlsZSkgewogICAgICAgICAg
ICAgICAgIHRpbGUgPSBuZXcgTGF5ZXJUaWxlKCk7Ci0gICAgICAgICAgICAgICAgbV90aWxlc0Nv
bXBvc2l0aW5nVGhyZWFkLmFkZChpbmRleCwgdGlsZSk7CisgICAgICAgICAgICAgICAgbV90aWxl
cy5hZGQoaW5kZXgsIHRpbGUpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBmbG9hdCB4
ID0gaW5kZXguaSgpICogbWF4dyAqIHN4OwpAQCAtNjI5LDEyICs2MjgsMTAgQEAgdm9pZCBMYXll
clRpbGVyOjpkZWxldGVUZXh0dXJlcyhMYXllckNvbXBvc2l0aW5nVGhyZWFkKikKICAgICAvLyBm
cm9tIFdlYktpdCB0aHJlYWQgdG8gY29tcG9zaXRpbmcgdGhyZWFkLCB3ZSBkb24ndCBuZWVkCiAg
ICAgLy8gYW55IHN5bmNocm9uaXphdGlvbiBtZWNoYW5pc20gaGVyZSwgZXZlbiB0aG91Z2ggd2Ug
YXJlCiAgICAgLy8gdG91Y2hpbmcgc29tZSBXZWJLaXQgdGhyZWFkIHN0YXRlLgotICAgIG1fdGls
ZXNXZWJLaXRUaHJlYWQuY2xlYXIoKTsKLQotICAgIGlmIChtX3RpbGVzQ29tcG9zaXRpbmdUaHJl
YWQuc2l6ZSgpKSB7Ci0gICAgICAgIGZvciAoVGlsZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3RpbGVz
Q29tcG9zaXRpbmdUaHJlYWQuYmVnaW4oKTsgaXQgIT0gbV90aWxlc0NvbXBvc2l0aW5nVGhyZWFk
LmVuZCgpOyArK2l0KQorICAgIGlmIChtX3RpbGVzLnNpemUoKSkgeworICAgICAgICBmb3IgKFRp
bGVNYXA6Oml0ZXJhdG9yIGl0ID0gbV90aWxlcy5iZWdpbigpOyBpdCAhPSBtX3RpbGVzLmVuZCgp
OyArK2l0KQogICAgICAgICAgICAgKCppdCkuc2Vjb25kLT5kaXNjYXJkQ29udGVudHMoKTsKLSAg
ICAgICAgbV90aWxlc0NvbXBvc2l0aW5nVGhyZWFkLmNsZWFyKCk7CisgICAgICAgIG1fdGlsZXMu
Y2xlYXIoKTsKIAogICAgICAgICBtX2NvbnRlbnRzRGlydHkgPSB0cnVlOwogICAgIH0KQEAgLTY0
OSw3ICs2NDYsNyBAQCB2b2lkIExheWVyVGlsZXI6OnBydW5lVGV4dHVyZXMoKQogewogICAgIC8v
IFBydW5lIHRpbGVzIHRoYXQgYXJlIG5vIGxvbmdlciBuZWVkZWQuCiAgICAgVmVjdG9yPFRpbGVJ
bmRleD4gdGlsZXNUb0RlbGV0ZTsKLSAgICBmb3IgKFRpbGVNYXA6Oml0ZXJhdG9yIGl0ID0gbV90
aWxlc0NvbXBvc2l0aW5nVGhyZWFkLmJlZ2luKCk7IGl0ICE9IG1fdGlsZXNDb21wb3NpdGluZ1Ro
cmVhZC5lbmQoKTsgKytpdCkgeworICAgIGZvciAoVGlsZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3Rp
bGVzLmJlZ2luKCk7IGl0ICE9IG1fdGlsZXMuZW5kKCk7ICsraXQpIHsKICAgICAgICAgVGlsZUlu
ZGV4IGluZGV4ID0gKCppdCkuZmlyc3Q7CiAKICAgICAgICAgSW50UG9pbnQgb3JpZ2luID0gb3Jp
Z2luT2ZUaWxlKGluZGV4KTsKQEAgLTY1OCw3ICs2NTUsNyBAQCB2b2lkIExheWVyVGlsZXI6OnBy
dW5lVGV4dHVyZXMoKQogICAgIH0KIAogICAgIGZvciAoVmVjdG9yPFRpbGVJbmRleD46Oml0ZXJh
dG9yIGl0ID0gdGlsZXNUb0RlbGV0ZS5iZWdpbigpOyBpdCAhPSB0aWxlc1RvRGVsZXRlLmVuZCgp
OyArK2l0KSB7Ci0gICAgICAgIExheWVyVGlsZSogdGlsZSA9IG1fdGlsZXNDb21wb3NpdGluZ1Ro
cmVhZC50YWtlKCppdCk7CisgICAgICAgIExheWVyVGlsZSogdGlsZSA9IG1fdGlsZXMudGFrZSgq
aXQpOwogICAgICAgICB0aWxlLT5kaXNjYXJkQ29udGVudHMoKTsKICAgICAgICAgZGVsZXRlIHRp
bGU7CiAgICAgfQpAQCAtNzM4LDExICs3MzUsMTEgQEAgSW50UmVjdCBMYXllclRpbGVyOjpyZWN0
Rm9yVGlsZShjb25zdCBUaWxlSW5kZXgmIGluZGV4LCBjb25zdCBJbnRTaXplJiBib3VuZHMpCiAK
IHZvaWQgTGF5ZXJUaWxlcjo6YmluZENvbnRlbnRzVGV4dHVyZShMYXllckNvbXBvc2l0aW5nVGhy
ZWFkKikKIHsKLSAgICBBU1NFUlQobV90aWxlc0NvbXBvc2l0aW5nVGhyZWFkLnNpemUoKSA9PSAx
KTsKLSAgICBpZiAobV90aWxlc0NvbXBvc2l0aW5nVGhyZWFkLnNpemUoKSAhPSAxKQorICAgIEFT
U0VSVChtX3RpbGVzLnNpemUoKSA9PSAxKTsKKyAgICBpZiAobV90aWxlcy5zaXplKCkgIT0gMSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgY29uc3QgTGF5ZXJUaWxlKiB0aWxlID0gbV90aWxlc0Nv
bXBvc2l0aW5nVGhyZWFkLmJlZ2luKCktPnNlY29uZDsKKyAgICBjb25zdCBMYXllclRpbGUqIHRp
bGUgPSBtX3RpbGVzLmJlZ2luKCktPnNlY29uZDsKIAogICAgIEFTU0VSVCh0aWxlLT5oYXNUZXh0
dXJlKCkpOwogICAgIGlmICghdGlsZS0+aGFzVGV4dHVyZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclRpbGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyVGlsZXIuaAppbmRl
eCA3Njk0ZGVjNzBhNTI0M2NkZTZlZDUyZDk0YjkyZTA5N2NjZjZiM2YxLi4wNGU0MGVlNWYyMDU2
N2JjZmQ5OGUyYWFjYWJlY2U5NTY1YjUwYzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyVGlsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyVGlsZXIuaApAQCAtMTM4LDcg
KzEzOCw2IEBAIHByaXZhdGU6CiAgICAgfTsKIAogICAgIHR5cGVkZWYgSGFzaE1hcDxUaWxlSW5k
ZXgsIExheWVyVGlsZSo+IFRpbGVNYXA7Ci0gICAgdHlwZWRlZiBIYXNoTWFwPFRpbGVJbmRleCwg
TGF5ZXJUaWxlRGF0YT4gVmlzaWJpbGl0eU1hcDsKICAgICB0eXBlZGVmIEhhc2hNYXA8VGlsZUlu
ZGV4LCBjb25zdCBUZXh0dXJlSm9iKj4gVGlsZUpvYnNNYXA7CiAKICAgICBJbnRTaXplIHRpbGVT
aXplKCkgY29uc3QgeyByZXR1cm4gbV90aWxlU2l6ZTsgfQpAQCAtMTc2LDkgKzE3NSw3IEBAIHBy
aXZhdGU6CiAKICAgICBMYXllcldlYktpdFRocmVhZCogbV9sYXllcjsKIAotICAgIFRpbGVNYXAg
bV90aWxlc0NvbXBvc2l0aW5nVGhyZWFkOwotCi0gICAgVmlzaWJpbGl0eU1hcCBtX3RpbGVzV2Vi
S2l0VGhyZWFkOworICAgIFRpbGVNYXAgbV90aWxlczsgLy8gQ29tcG9zaXRpbmcgdGhyZWFkIG9u
bHkKIAogICAgIGJvb2wgbV90aWxpbmdEaXNhYmxlZDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0luc3BlY3Rvck92ZXJsYXkuY3BwIGIvU291
cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0luc3BlY3Rvck92ZXJsYXkuY3Bw
CmluZGV4IGZhNDhjZDZhYTgzMDFlODNiNTE1ODFjOWUwYjIwMTcyNDY4NWZjZWEuLjkxNzg0MzIx
NTAzOWYyMzk0OGIwYjFjZWJjOGMxNWM3ZTU2ZTYyNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JPdmVybGF5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yT3ZlcmxheS5j
cHAKQEAgLTY2LDExICs2Niw2IEBAIGJvb2wgSW5zcGVjdG9yT3ZlcmxheTo6c2hvd1JlcGFpbnRD
b3VudGVyKGNvbnN0IEdyYXBoaWNzTGF5ZXIqKSBjb25zdAogewogICAgIHJldHVybiBtX3dlYlBh
Z2UtPm1fcGFnZS0+c2V0dGluZ3MoKS0+c2hvd1JlcGFpbnRDb3VudGVyKCk7CiB9Ci0KLWJvb2wg
SW5zcGVjdG9yT3ZlcmxheTo6Y29udGVudHNWaXNpYmxlKGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBj
b25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCkgY29uc3QKLXsKLSAgICByZXR1cm4gdHJ1ZTsKLX0K
ICNlbmRpZgogCiBJbnNwZWN0b3JPdmVybGF5Ojp+SW5zcGVjdG9yT3ZlcmxheSgpIHsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0luc3BlY3Rv
ck92ZXJsYXkuaCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9JbnNw
ZWN0b3JPdmVybGF5LmgKaW5kZXggN2Y5MWUzNTQxMmEzZDI2MGVmNjEyNzEwZTNkMTJlZmJiZjZl
NmQ5OC4uMjE1MzkxZjJmNGFjMDI3NjUzODc0MGY2OTUxMjYwOTMxNzRlMDA3ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0luc3BlY3Rvck92ZXJs
YXkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvSW5zcGVj
dG9yT3ZlcmxheS5oCkBAIC01OCw4ICs1OCw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
cGFpbnRDb250ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiwgR3JhcGhpY3NDb250ZXh0JiwgR3Jh
cGhpY3NMYXllclBhaW50aW5nUGhhc2UsIGNvbnN0IEludFJlY3QmIGluQ2xpcCk7CiAgICAgdmly
dHVhbCBib29sIHNob3dEZWJ1Z0JvcmRlcnMoY29uc3QgR3JhcGhpY3NMYXllciopIGNvbnN0Owog
ICAgIHZpcnR1YWwgYm9vbCBzaG93UmVwYWludENvdW50ZXIoY29uc3QgR3JhcGhpY3NMYXllciop
IGNvbnN0OwotCi0gICAgdmlydHVhbCBib29sIGNvbnRlbnRzVmlzaWJsZShjb25zdCBXZWJDb3Jl
OjpHcmFwaGljc0xheWVyKiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY29udGVudFJlY3QpIGNv
bnN0OwogI2VuZGlmCiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNr
YmVycnkvV2ViS2l0U3VwcG9ydC9EZWZhdWx0VGFwSGlnaGxpZ2h0LmggYi9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9EZWZhdWx0VGFwSGlnaGxpZ2h0LmgKaW5kZXggNzJl
YTQwMjUxMjY3ODUzMTZhYjc5YThmZDNiYWFmMmYzY2Q0ZDBjYy4uMzQ4OTMzNzcwMTA1MTQ0NWMz
ZTE2YzdlZGE3MjRiYWY2Yjc2NjEyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2Jl
cnJ5L1dlYktpdFN1cHBvcnQvRGVmYXVsdFRhcEhpZ2hsaWdodC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0RlZmF1bHRUYXBIaWdobGlnaHQuaApAQCAtNTgs
OCArNTgsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoY29uc3Qg
V2ViQ29yZTo6R3JhcGhpY3NMYXllciosIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXJQYWludGluZ1BoYXNlLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBp
bkNsaXApOwogICAgIHZpcnR1YWwgYm9vbCBzaG93RGVidWdCb3JkZXJzKGNvbnN0IFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXIqKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9v
bCBzaG93UmVwYWludENvdW50ZXIoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllciopIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGNvbnRlbnRzVmlzaWJsZShjb25z
dCBXZWJDb3JlOjpHcmFwaGljc0xheWVyKiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY29udGVu
dFJlY3QpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLQogCiBwcml2YXRlOgogICAgIERlZmF1bHRU
YXBIaWdobGlnaHQoV2ViUGFnZVByaXZhdGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
YmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1NlbGVjdGlvbk92ZXJsYXkuaCBiL1NvdXJjZS9XZWJL
aXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1NlbGVjdGlvbk92ZXJsYXkuaAppbmRleCAxMjcz
MWM1ODFiOWUzMjk4MjY3OTZjOTkxNDU4YTU4YWFkZjE4ZDkzLi42YzhkMDc1ZTkzZjZiYmI4NTI5
YjU0OTg4MjYzOWNkMGNmYzhjZjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVy
cnkvV2ViS2l0U3VwcG9ydC9TZWxlY3Rpb25PdmVybGF5LmgKKysrIGIvU291cmNlL1dlYktpdC9i
bGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvU2VsZWN0aW9uT3ZlcmxheS5oCkBAIC01NCw4ICs1NCw2
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBXZWJDb3Jl
OjpHcmFwaGljc0xheWVyKiwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgV2ViQ29yZTo6R3Jh
cGhpY3NMYXllclBhaW50aW5nUGhhc2UsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGluQ2xpcCk7
CiAgICAgdmlydHVhbCBib29sIHNob3dEZWJ1Z0JvcmRlcnMoY29uc3QgV2ViQ29yZTo6R3JhcGhp
Y3NMYXllciopIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIHNob3dS
ZXBhaW50Q291bnRlcihjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVyKikgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgY29udGVudHNWaXNpYmxlKGNvbnN0IFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXIqLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjb250ZW50UmVjdCkg
Y29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotCiAKIHByaXZhdGU6CiAgICAgU2VsZWN0aW9uT3Zlcmxh
eShXZWJQYWdlUHJpdmF0ZSopOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>