<?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>170851</bug_id>
          
          <creation_ts>2017-04-14 10:38:17 -0700</creation_ts>
          <short_desc>GraphicsLayerCA::recursiveCommitChanges should not descend into subtrees without changes</short_desc>
          <delta_ts>2017-04-18 03:09:26 -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>Layout and Rendering</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>170876</dependson>
          <blocked>170928</blocked>
    
    <blocked>170938</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1297427</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-04-14 10:38:17 -0700</bug_when>
    <thetext>With lots of layers this can be very slow as it always traverses the entire layer tree. We should track which branches actually have changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1297435</commentid>
    <comment_count>1</comment_count>
      <attachid>307124</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-04-14 11:04:39 -0700</bug_when>
    <thetext>Created attachment 307124
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1297440</commentid>
    <comment_count>2</comment_count>
      <attachid>307125</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-04-14 11:14:05 -0700</bug_when>
    <thetext>Created attachment 307125
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1297444</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-04-14 11:18:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/31631307&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1297517</commentid>
    <comment_count>4</comment_count>
      <attachid>307125</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-04-14 14:51:43 -0700</bug_when>
    <thetext>Comment on attachment 307125
patch

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

Nice, I always wanted to do this.

&gt; Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp:4033
&gt; +        if (ancestorCA.m_hasDescendantsWithUncommittedChanges)
&gt; +            return;
&gt; +        ancestorCA.m_hasDescendantsWithUncommittedChanges = true;

I would prefer you go through a setter and not poke the member variable directly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1297666</commentid>
    <comment_count>5</comment_count>
      <attachid>307197</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-04-15 04:49:51 -0700</bug_when>
    <thetext>Created attachment 307197
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1297667</commentid>
    <comment_count>6</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-04-15 06:16:04 -0700</bug_when>
    <thetext>https://trac.webkit.org/r215393</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1297676</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-04-15 11:13:54 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 170876</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1297888</commentid>
    <comment_count>8</comment_count>
      <attachid>307266</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-04-17 06:22:27 -0700</bug_when>
    <thetext>Created attachment 307266
patch

Enable the optimisation for Mac only for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1297890</commentid>
    <comment_count>9</comment_count>
      <attachid>307268</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-04-17 06:40:35 -0700</bug_when>
    <thetext>Created attachment 307268
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1297903</commentid>
    <comment_count>10</comment_count>
      <attachid>307268</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-04-17 08:00:36 -0700</bug_when>
    <thetext>Comment on attachment 307268
patch

Clearing flags on attachment: 307268

Committed r215410: &lt;http://trac.webkit.org/changeset/215410&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1297904</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-04-17 08:00:38 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1298000</commentid>
    <comment_count>12</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-04-17 13:54:31 -0700</bug_when>
    <thetext>That&apos;s unfortunate. Do we understand the iOS issue?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1298201</commentid>
    <comment_count>13</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-04-18 00:12:55 -0700</bug_when>
    <thetext>I think so. I just wanted to do some more testing on iOS before enabling it.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>307124</attachid>
            <date>2017-04-14 11:04:39 -0700</date>
            <delta_ts>2017-04-14 11:14:05 -0700</delta_ts>
            <desc>patch</desc>
            <filename>graphicslayerca-commit-dirty.patch</filename>
            <type>text/plain</type>
            <size>11728</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNTM2NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBACisyMDE3LTA0LTE0ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBHcmFwaGljc0xheWVyQ0E6OnJl
Y3Vyc2l2ZUNvbW1pdENoYW5nZXMgc2hvdWxkIG5vdCBkZXNjZW5kIGludG8gc3VidHJlZXMgd2l0
aG91dCBjaGFuZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzA4NTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBXaXRoIGxvdHMgb2YgbGF5ZXJzIHRoaXMgY2FuIGJlIHZlcnkgc2xvdyBhcyBpdCBhbHdh
eXMgdHJhdmVyc2VzIHRoZSBlbnRpcmUgbGF5ZXIgdHJlZS4KKyAgICAgICAgRm9yIGV4YW1wbGUg
R0lGIGFuaW1hdGlvbnMgb24gdHVtYmxyLmNvbSB0cmlnZ2VyIGV4cGVuc2l2ZSBjb21taXRzIHdo
ZXJlIGFsbW9zdCBub3RoaW5nIGNoYW5nZXMuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIG1f
aGFzRGVzY2VuZGFudHNXaXRoVW5jb21taXR0ZWRDaGFuZ2VzIGJpdCB0byBHcmFwaGljc0xheWVy
Q0EuIFdpdGggdGhpcworICAgICAgICB3ZSBjYW4gYXZvaWQgZGVzY2VuZGluZyB0byBicmFuY2hl
cyB3aXRob3V0IGNoYW5nZXMgd2hlbiBjb21taXR0aW5nLgorCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXJDQTo6cmVtb3ZlRnJvbVBhcmVudCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyQ0E6OnNldFZpc2libGVBbmRDb3ZlcmFnZVJlY3RzKToKKworICAgICAgICAgICAgRG8g
YWxsIHNldHRpbmcgb2YgbV91bmNvbW1pdHRlZENoYW5nZXMgYml0cyB2aWEgYWRkVW5jb21taXR0
ZWRDaGFuZ2VzIGZ1bmN0aW9uLgorCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6
OnJlY3Vyc2l2ZUNvbW1pdENoYW5nZXMpOgorCisgICAgICAgICAgICBCYWlsIG91dCBpZiBuZWl0
aGVyIHRoZSBjdXJyZW50IGxheWVyIG5vciBhbnkgb2YgaXRzIGRlc2NlbmRhbnRzIGhhdmUgYW55
IHVuY29tbWl0ZWQgY2hhbmdlcworICAgICAgICAgICAgYW5kIG5vbmUgb2YgdGhlIGFuY2VzdG9y
cyBoYWQgY2hhbmdlcy4KKworICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpjb21t
aXRMYXllckNoYW5nZXNCZWZvcmVTdWJsYXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllckNBOjplbnN1cmVTdHJ1Y3R1cmFsTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllckNBOjpjaGFuZ2VMYXllclR5cGVUbyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0xheWVyQ0E6OmFkZFVuY29tbWl0dGVkQ2hhbmdlcyk6CisKKyAgICAgICAgICAgIFNldCBt
X2hhc0Rlc2NlbmRhbnRzV2l0aFVuY29tbWl0dGVkQ2hhbmdlcyBiaXQgaW4gYW5jZXN0b3JzIHdo
ZW4gbXV0YXRpbmcgbV91bmNvbW1pdHRlZENoYW5nZXMuCisKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXJDQTo6bm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKToKKworICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NMYXllckNBOjpwYXJlbnQpOgorCisgICAgICAgICAgICBBZGQgb3ZlcmxvYWQgdGhh
dCByZXR1cm4gR3JhcGhpY3NMYXllckNBIGluc3RlYWQgb2YgR3JhcGhpY3NMYXllci4KKwogMjAx
Ny0wNC0xNCAgUnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBV
bnJldmlld2VkLCByb2xsaW5nIG91dCByMjE1MzUwLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCShyZXZp
c2lvbiAyMTUyNjIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFw
aGljc0xheWVyQ0EuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MzQsOCArNTM0LDggQEAgYm9vbCBH
cmFwaGljc0xheWVyQ0E6OnJlcGxhY2VDaGlsZChHcmFwaAogCiB2b2lkIEdyYXBoaWNzTGF5ZXJD
QTo6cmVtb3ZlRnJvbVBhcmVudCgpCiB7Ci0gICAgaWYgKG1fcGFyZW50KQotICAgICAgICBkb3du
Y2FzdDxHcmFwaGljc0xheWVyQ0E+KCptX3BhcmVudCkubm90ZVN1YmxheWVyc0NoYW5nZWQoKTsK
KyAgICBpZiAocGFyZW50KCkpCisgICAgICAgIHBhcmVudCgpLT5ub3RlU3VibGF5ZXJzQ2hhbmdl
ZCgpOwogICAgIEdyYXBoaWNzTGF5ZXI6OnJlbW92ZUZyb21QYXJlbnQoKTsKIH0KIApAQCAtMTM1
NCwxNyArMTM1NCwxNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0VmlzaWJsZUFuZENvdmVy
CiAgICAgLy8gRklYTUU6IHdlIG5lZWQgdG8gdGFrZSByZWZsZWN0aW9ucyBpbnRvIGFjY291bnQg
d2hlbiBkZXRlcm1pbmluZyB3aGV0aGVyIHRoaXMgbGF5ZXIgaW50ZXJzZWN0cyB0aGUgY292ZXJh
Z2UgcmVjdC4KICAgICBib29sIGludGVyc2VjdHNDb3ZlcmFnZVJlY3QgPSBpc1ZpZXdwb3J0Q29u
c3RyYWluZWQgfHwgcmVjdHMuY292ZXJhZ2VSZWN0LmludGVyc2VjdHMoRmxvYXRSZWN0KG1fYm91
bmRzT3JpZ2luLCBzaXplKCkpKTsKICAgICBpZiAoaW50ZXJzZWN0c0NvdmVyYWdlUmVjdCAhPSBt
X2ludGVyc2VjdHNDb3ZlcmFnZVJlY3QpIHsKLSAgICAgICAgbV91bmNvbW1pdHRlZENoYW5nZXMg
fD0gQ292ZXJhZ2VSZWN0Q2hhbmdlZDsKKyAgICAgICAgYWRkVW5jb21taXR0ZWRDaGFuZ2VzKENv
dmVyYWdlUmVjdENoYW5nZWQpOwogICAgICAgICBtX2ludGVyc2VjdHNDb3ZlcmFnZVJlY3QgPSBp
bnRlcnNlY3RzQ292ZXJhZ2VSZWN0OwogICAgIH0KIAogICAgIGlmICh2aXNpYmxlUmVjdENoYW5n
ZWQpIHsKLSAgICAgICAgbV91bmNvbW1pdHRlZENoYW5nZXMgfD0gQ292ZXJhZ2VSZWN0Q2hhbmdl
ZDsKKyAgICAgICAgYWRkVW5jb21taXR0ZWRDaGFuZ2VzKENvdmVyYWdlUmVjdENoYW5nZWQpOwog
ICAgICAgICBtX3Zpc2libGVSZWN0ID0gcmVjdHMudmlzaWJsZVJlY3Q7CiAgICAgfQogCiAgICAg
aWYgKGNvdmVyYWdlUmVjdENoYW5nZWQpIHsKLSAgICAgICAgbV91bmNvbW1pdHRlZENoYW5nZXMg
fD0gQ292ZXJhZ2VSZWN0Q2hhbmdlZDsKKyAgICAgICAgYWRkVW5jb21taXR0ZWRDaGFuZ2VzKENv
dmVyYWdlUmVjdENoYW5nZWQpOwogICAgICAgICBtX2NvdmVyYWdlUmVjdCA9IHJlY3RzLmNvdmVy
YWdlUmVjdDsKICAgICB9CiB9CkBAIC0xMzczLDggKzEzNzMsMTYgQEAgdm9pZCBHcmFwaGljc0xh
eWVyQ0E6OnNldFZpc2libGVBbmRDb3ZlcgogLy8gYW5pbWF0aW9uIHRoYXQgY29udHJpYnV0ZXMg
bWF4aW1hbGx5IHRvIHRoZSBzY2FsZSAob24gZXZlcnkgbGF5ZXIgd2l0aCBhbmltYXRpb25zIGRv
d24gdGhlIGhpZXJhcmNoeSkuCiB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6cmVjdXJzaXZlQ29tbWl0
Q2hhbmdlcyhjb25zdCBDb21taXRTdGF0ZSYgY29tbWl0U3RhdGUsIGNvbnN0IFRyYW5zZm9ybVN0
YXRlJiBzdGF0ZSwgZmxvYXQgcGFnZVNjYWxlRmFjdG9yLCBjb25zdCBGbG9hdFBvaW50JiBwb3Np
dGlvblJlbGF0aXZlVG9CYXNlLCBib29sIGFmZmVjdGVkQnlQYWdlU2NhbGUpCiB7CisgICAgaWYg
KCFjb21taXRTdGF0ZS5hbmNlc3RvckhhZENoYW5nZXMgJiYgIW1fdW5jb21taXR0ZWRDaGFuZ2Vz
ICYmICFtX2hhc0Rlc2NlbmRhbnRzV2l0aFVuY29tbWl0dGVkQ2hhbmdlcykKKyAgICAgICAgcmV0
dXJuOworCiAgICAgVHJhbnNmb3JtU3RhdGUgbG9jYWxTdGF0ZSA9IHN0YXRlOwogICAgIENvbW1p
dFN0YXRlIGNoaWxkQ29tbWl0U3RhdGUgPSBjb21taXRTdGF0ZTsKKworICAgIC8vIEZJWE1FOiBU
aGlzIGNvdWxkIGJlIG1vcmUgZmluZS1ncmFpbmVkLiBPbmx5IHNvbWUgdHlwZXMgb2YgY2hhbmdl
cyBoYXZlIGltcGFjdCBvbiBzdWJsYXllcnMuCisgICAgaWYgKCFjaGlsZENvbW1pdFN0YXRlLmFu
Y2VzdG9ySGFkQ2hhbmdlcykKKyAgICAgICAgY2hpbGRDb21taXRTdGF0ZS5hbmNlc3RvckhhZENo
YW5nZXMgPSAhIW1fdW5jb21taXR0ZWRDaGFuZ2VzOworCiAgICAgYm9vbCBhZmZlY3RlZEJ5VHJh
bnNmb3JtQW5pbWF0aW9uID0gY29tbWl0U3RhdGUuYW5jZXN0b3JIYXNUcmFuc2Zvcm1BbmltYXRp
b247CiAKICAgICBib29sIGFjY3VtdWxhdGVUcmFuc2Zvcm0gPSBhY2N1bXVsYXRlc1RyYW5zZm9y
bSgqdGhpcyk7CkBAIC0xNDUwLDYgKzE0NTgsOCBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6cmVj
dXJzaXZlQ29tbWl0Q2hhCiAgICAgaWYgKEdyYXBoaWNzTGF5ZXJDQSogbWFza0xheWVyID0gZG93
bmNhc3Q8R3JhcGhpY3NMYXllckNBPihtX21hc2tMYXllcikpCiAgICAgICAgIG1hc2tMYXllci0+
Y29tbWl0TGF5ZXJDaGFuZ2VzQWZ0ZXJTdWJsYXllcnMoY2hpbGRDb21taXRTdGF0ZSk7CiAKKyAg
ICBtX2hhc0Rlc2NlbmRhbnRzV2l0aFVuY29tbWl0dGVkQ2hhbmdlcyA9IGZhbHNlOworCiAgICAg
Ym9vbCBoYWREaXJ0eVJlY3RzID0gbV91bmNvbW1pdHRlZENoYW5nZXMgJiBEaXJ0eVJlY3RzQ2hh
bmdlZDsKICAgICBjb21taXRMYXllckNoYW5nZXNBZnRlclN1YmxheWVycyhjaGlsZENvbW1pdFN0
YXRlKTsKIApAQCAtMTU2NCw3ICsxNTc0LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OmNvbW1p
dExheWVyQ2hhbmdlcwogICAgIGlmICghbV91bmNvbW1pdHRlZENoYW5nZXMpIHsKICAgICAgICAg
Ly8gRW5zdXJlIHRoYXQgd2UgY2FwIGxheWVyIGRlcHRoIGluIGNvbW1pdExheWVyQ2hhbmdlc0Fm
dGVyU3VibGF5ZXJzKCkuCiAgICAgICAgIGlmIChjb21taXRTdGF0ZS50cmVlRGVwdGggPiBjTWF4
TGF5ZXJUcmVlRGVwdGgpCi0gICAgICAgICAgICBtX3VuY29tbWl0dGVkQ2hhbmdlcyB8PSBDaGls
ZHJlbkNoYW5nZWQ7CisgICAgICAgICAgICBhZGRVbmNvbW1pdHRlZENoYW5nZXMoQ2hpbGRyZW5D
aGFuZ2VkKTsKICAgICB9CiAKICAgICBib29sIG5lZWRUaWxlZExheWVyID0gcmVxdWlyZXNUaWxl
ZExheWVyKHBhZ2VTY2FsZUZhY3Rvcik7CkBAIC0xNzA2LDcgKzE3MTYsNyBAQCB2b2lkIEdyYXBo
aWNzTGF5ZXJDQTo6Y29tbWl0TGF5ZXJDaGFuZ2VzCiAKICAgICAvLyBFbnN1cmUgdGhhdCB3ZSBj
YXAgbGF5ZXIgZGVwdGggaW4gY29tbWl0TGF5ZXJDaGFuZ2VzQWZ0ZXJTdWJsYXllcnMoKS4KICAg
ICBpZiAoY29tbWl0U3RhdGUudHJlZURlcHRoID4gY01heExheWVyVHJlZURlcHRoKQotICAgICAg
ICBtX3VuY29tbWl0dGVkQ2hhbmdlcyB8PSBDaGlsZHJlbkNoYW5nZWQ7CisgICAgICAgIGFkZFVu
Y29tbWl0dGVkQ2hhbmdlcyhDaGlsZHJlbkNoYW5nZWQpOwogfQogCiB2b2lkIEdyYXBoaWNzTGF5
ZXJDQTo6Y29tbWl0TGF5ZXJDaGFuZ2VzQWZ0ZXJTdWJsYXllcnMoQ29tbWl0U3RhdGUmIGNvbW1p
dFN0YXRlKQpAQCAtMjExNiw3ICsyMTI2LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OmVuc3Vy
ZVN0cnVjdHVyYWxMYQogICAgICAgICAgICAgLy8gUmVsZWFzZSB0aGUgc3RydWN0dXJhbCBsYXll
ci4KICAgICAgICAgICAgIG1fc3RydWN0dXJhbExheWVyID0gbnVsbHB0cjsKIAotICAgICAgICAg
ICAgbV91bmNvbW1pdHRlZENoYW5nZXMgfD0gc3RydWN0dXJhbExheWVyQ2hhbmdlRmxhZ3M7Cisg
ICAgICAgICAgICBhZGRVbmNvbW1pdHRlZENoYW5nZXMoc3RydWN0dXJhbExheWVyQ2hhbmdlRmxh
Z3MpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yMTQ0LDExICsyMTU0
LDExIEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjplbnN1cmVTdHJ1Y3R1cmFsTGEKICAgICBpZiAo
IXN0cnVjdHVyYWxMYXllckNoYW5nZWQpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBtX3Vu
Y29tbWl0dGVkQ2hhbmdlcyB8PSBzdHJ1Y3R1cmFsTGF5ZXJDaGFuZ2VGbGFnczsKKyAgICBhZGRV
bmNvbW1pdHRlZENoYW5nZXMoc3RydWN0dXJhbExheWVyQ2hhbmdlRmxhZ3MpOwogCiAgICAgLy8g
V2UndmUgY2hhbmdlZCB0aGUgbGF5ZXIgdGhhdCBvdXIgcGFyZW50IGFkZGVkIHRvIGl0cyBzdWJs
YXllciBsaXN0LCBzbyB0ZWxsIGl0IHRvIHVwZGF0ZQogICAgIC8vIHN1YmxheWVycyBhZ2FpbiBp
biBpdHMgY29tbWl0TGF5ZXJDaGFuZ2VzQWZ0ZXJTdWJsYXllcnMoKS4KLSAgICBkb3duY2FzdDxH
cmFwaGljc0xheWVyQ0E+KCpwYXJlbnQoKSkubm90ZVN1YmxheWVyc0NoYW5nZWQoRG9udFNjaGVk
dWxlRmx1c2gpOworICAgIHBhcmVudCgpLT5ub3RlU3VibGF5ZXJzQ2hhbmdlZChEb250U2NoZWR1
bGVGbHVzaCk7CiAKICAgICAvLyBTZXQgcHJvcGVydGllcyBvZiBtX2xheWVyIHRvIHRoZWlyIGRl
ZmF1bHQgdmFsdWVzLCBzaW5jZSB0aGVzZSBhcmUgZXhwcmVzc2VkIG9uIG9uIHRoZSBzdHJ1Y3R1
cmFsIGxheWVyLgogICAgIEZsb2F0UG9pbnQgcG9pbnQobV9zaXplLndpZHRoKCkgLyAyLjBmLCBt
X3NpemUuaGVpZ2h0KCkgLyAyLjBmKTsKQEAgLTM2MDYsOCArMzYxNiw4IEBAIHZvaWQgR3JhcGhp
Y3NMYXllckNBOjpjaGFuZ2VMYXllclR5cGVUbygKICAgICBpZiAoaXNNYXNrTGF5ZXIoKSkgewog
ICAgICAgICAvLyBBIG1hc2sgbGF5ZXIncyBzdXBlcmxheWVyIGlzIHRoZSBsYXllciB0aGF0IGl0
IG1hc2tzLiBTZXQgdGhlIE1hc2tMYXllckNoYW5nZWQgZGlydHkgYml0CiAgICAgICAgIC8vIHNv
IHRoYXQgdGhlIHBhcmVudCB3aWxsIGZpeCB1cCB0aGUgcGxhdGZvcm0gbGF5ZXJzIGluIGNvbW1p
dExheWVyQ2hhbmdlc0FmdGVyU3VibGF5ZXJzKCkuCi0gICAgICAgIGlmIChHcmFwaGljc0xheWVy
KiBwYXJlbnRMYXllciA9IHBhcmVudCgpKQotICAgICAgICAgICAgZG93bmNhc3Q8R3JhcGhpY3NM
YXllckNBPigqcGFyZW50TGF5ZXIpLm5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChNYXNrTGF5ZXJD
aGFuZ2VkKTsKKyAgICAgICAgaWYgKGF1dG8qIHBhcmVudExheWVyID0gcGFyZW50KCkpCisgICAg
ICAgICAgICBwYXJlbnRMYXllci0+bm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKE1hc2tMYXllckNo
YW5nZWQpOwogICAgIH0gZWxzZSBpZiAob2xkTGF5ZXItPnN1cGVybGF5ZXIoKSkgewogICAgICAg
ICAvLyBTa2lwIHRoaXMgc3RlcCBpZiB3ZSBkb24ndCBoYXZlIGEgc3VwZXJsYXllci4gVGhpcyBp
cyBwcm9iYWJseSBhIGJlbmlnbgogICAgICAgICAvLyBjYXNlIHRoYXQgaGFwcGVucyB3aGlsZSBy
ZXN0cnVjdHVyaW5nIHRoZSBsYXllciB0cmVlLCBhbmQgYWxzbyBvY2N1cnMgd2l0aApAQCAtMzYx
NSw3ICszNjI1LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OmNoYW5nZUxheWVyVHlwZVRvKAog
ICAgICAgICBvbGRMYXllci0+c3VwZXJsYXllcigpLT5yZXBsYWNlU3VibGF5ZXIoKm9sZExheWVy
LCAqbV9sYXllcik7CiAgICAgfQogCi0gICAgbV91bmNvbW1pdHRlZENoYW5nZXMgfD0gQ2hpbGRy
ZW5DaGFuZ2VkCisgICAgYWRkVW5jb21taXR0ZWRDaGFuZ2VzKENoaWxkcmVuQ2hhbmdlZAogICAg
ICAgICB8IEdlb21ldHJ5Q2hhbmdlZAogICAgICAgICB8IFRyYW5zZm9ybUNoYW5nZWQKICAgICAg
ICAgfCBDaGlsZHJlblRyYW5zZm9ybUNoYW5nZWQKQEAgLTM2MzEsMTAgKzM2NDEsMTAgQEAgdm9p
ZCBHcmFwaGljc0xheWVyQ0E6OmNoYW5nZUxheWVyVHlwZVRvKAogICAgICAgICB8IE1hc2tMYXll
ckNoYW5nZWQKICAgICAgICAgfCBPcGFjaXR5Q2hhbmdlZAogICAgICAgICB8IE5hbWVDaGFuZ2Vk
Ci0gICAgICAgIHwgRGVidWdJbmRpY2F0b3JzQ2hhbmdlZDsKKyAgICAgICAgfCBEZWJ1Z0luZGlj
YXRvcnNDaGFuZ2VkKTsKICAgICAKICAgICBpZiAoaXNUaWxlZExheWVyKQotICAgICAgICBtX3Vu
Y29tbWl0dGVkQ2hhbmdlcyB8PSBDb3ZlcmFnZVJlY3RDaGFuZ2VkOworICAgICAgICBhZGRVbmNv
bW1pdHRlZENoYW5nZXMoQ292ZXJhZ2VSZWN0Q2hhbmdlZCk7CiAKICAgICBtb3ZlQW5pbWF0aW9u
cyhvbGRMYXllci5nZXQoKSwgbV9sYXllci5nZXQoKSk7CiAgICAgCkBAIC0zNzc0LDEzICszNzg0
LDEyIEBAIEZsb2F0UG9pbnQgR3JhcGhpY3NMYXllckNBOjpwb3NpdGlvbkZvckMKIAogdm9pZCBH
cmFwaGljc0xheWVyQ0E6OnByb3BhZ2F0ZUxheWVyQ2hhbmdlVG9SZXBsaWNhcyhTY2hlZHVsZUZs
dXNoT3JOb3Qgc2NoZWR1bGVGbHVzaCkKIHsKLSAgICBmb3IgKEdyYXBoaWNzTGF5ZXIqIGN1cnJl
bnRMYXllciA9IHRoaXM7IGN1cnJlbnRMYXllcjsgY3VycmVudExheWVyID0gY3VycmVudExheWVy
LT5wYXJlbnQoKSkgewotICAgICAgICBHcmFwaGljc0xheWVyQ0EmIGN1cnJlbnRMYXllckNBID0g
ZG93bmNhc3Q8R3JhcGhpY3NMYXllckNBPigqY3VycmVudExheWVyKTsKLSAgICAgICAgaWYgKCFj
dXJyZW50TGF5ZXJDQS5oYXNDbG9uZUxheWVycygpKQorICAgIGZvciAoYXV0byogY3VycmVudExh
eWVyID0gdGhpczsgY3VycmVudExheWVyOyBjdXJyZW50TGF5ZXIgPSBjdXJyZW50TGF5ZXItPnBh
cmVudCgpKSB7CisgICAgICAgIGlmICghY3VycmVudExheWVyLT5oYXNDbG9uZUxheWVycygpKQog
ICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgaWYgKGN1cnJlbnRMYXllckNBLnJlcGxpY2FM
YXllcigpKQotICAgICAgICAgICAgZG93bmNhc3Q8R3JhcGhpY3NMYXllckNBPigqY3VycmVudExh
eWVyQ0EucmVwbGljYUxheWVyKCkpLm5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChSZXBsaWNhdGVk
TGF5ZXJDaGFuZ2VkLCBzY2hlZHVsZUZsdXNoKTsKKyAgICAgICAgaWYgKGN1cnJlbnRMYXllci0+
cmVwbGljYUxheWVyKCkpCisgICAgICAgICAgICBkb3duY2FzdDxHcmFwaGljc0xheWVyQ0E+KCpj
dXJyZW50TGF5ZXItPnJlcGxpY2FMYXllcigpKS5ub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoUmVw
bGljYXRlZExheWVyQ2hhbmdlZCwgc2NoZWR1bGVGbHVzaCk7CiAgICAgfQogfQogCkBAIC00MDA4
LDEyICs0MDE3LDI3IEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjpjYW5UaHJvdHRsZUxheWVyRmwK
ICAgICByZXR1cm4gIShtX3VuY29tbWl0dGVkQ2hhbmdlcyAmIFRpbGVzQWRkZWQpOwogfQogCit2
b2lkIEdyYXBoaWNzTGF5ZXJDQTo6YWRkVW5jb21taXR0ZWRDaGFuZ2VzKExheWVyQ2hhbmdlRmxh
Z3MgZmxhZ3MpCit7CisgICAgbV91bmNvbW1pdHRlZENoYW5nZXMgfD0gZmxhZ3M7CisKKyAgICBp
ZiAobV9pc0NvbW1pdHRpbmdDaGFuZ2VzKQorICAgICAgICByZXR1cm47CisKKyAgICBmb3IgKGF1
dG8qIGFuY2VzdG9yID0gcGFyZW50KCk7IGFuY2VzdG9yOyBhbmNlc3RvciA9IGFuY2VzdG9yLT5w
YXJlbnQoKSkgeworICAgICAgICBBU1NFUlQoIWFuY2VzdG9yLT5tX2lzQ29tbWl0dGluZ0NoYW5n
ZXMpOworICAgICAgICBpZiAoYW5jZXN0b3ItPm1faGFzRGVzY2VuZGFudHNXaXRoVW5jb21taXR0
ZWRDaGFuZ2VzKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBhbmNlc3Rvci0+bV9oYXNE
ZXNjZW5kYW50c1dpdGhVbmNvbW1pdHRlZENoYW5nZXMgPSB0cnVlOworICAgIH0KK30KKwogdm9p
ZCBHcmFwaGljc0xheWVyQ0E6Om5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChMYXllckNoYW5nZUZs
YWdzIGZsYWdzLCBTY2hlZHVsZUZsdXNoT3JOb3Qgc2NoZWR1bGVGbHVzaCkKIHsKICAgICBib29s
IGhhZFVuY29tbWl0dGVkQ2hhbmdlcyA9ICEhbV91bmNvbW1pdHRlZENoYW5nZXM7CiAgICAgYm9v
bCBvbGRDYW5UaHJvdHRsZUxheWVyRmx1c2ggPSBjYW5UaHJvdHRsZUxheWVyRmx1c2goKTsKIAot
ICAgIG1fdW5jb21taXR0ZWRDaGFuZ2VzIHw9IGZsYWdzOworICAgIGFkZFVuY29tbWl0dGVkQ2hh
bmdlcyhmbGFncyk7CiAKICAgICBpZiAoc2NoZWR1bGVGbHVzaCA9PSBTY2hlZHVsZUZsdXNoKSB7
CiAgICAgICAgIGJvb2wgbmVlZHNGbHVzaCA9ICFoYWRVbmNvbW1pdHRlZENoYW5nZXMgfHwgb2xk
Q2FuVGhyb3R0bGVMYXllckZsdXNoICE9IGNhblRocm90dGxlTGF5ZXJGbHVzaCgpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NM
YXllckNBLmgJKHJldmlzaW9uIDIxNTI2MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw2ICs1Myw4
IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBHcmFwaGljc0xheWVyQ0Eo
VHlwZSwgR3JhcGhpY3NMYXllckNsaWVudCYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwg
fkdyYXBoaWNzTGF5ZXJDQSgpOwogCisgICAgR3JhcGhpY3NMYXllckNBKiBwYXJlbnQoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVyQ0EqPihHcmFwaGljc0xheWVyOjpw
YXJlbnQoKSk7IH07CisKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluaXRpYWxpemUoVHlwZSkg
b3ZlcnJpZGU7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE5hbWUoY29uc3QgU3RyaW5n
Jikgb3ZlcnJpZGU7CkBAIC0xNTIsNiArMTU0LDcgQEAgcHVibGljOgogCiAgICAgc3RydWN0IENv
bW1pdFN0YXRlIHsKICAgICAgICAgaW50IHRyZWVEZXB0aCB7IDAgfTsKKyAgICAgICAgYm9vbCBh
bmNlc3RvckhhZENoYW5nZXMgeyBmYWxzZSB9OwogICAgICAgICBib29sIGFuY2VzdG9ySGFzVHJh
bnNmb3JtQW5pbWF0aW9uIHsgZmFsc2UgfTsKICAgICAgICAgYm9vbCBhbmNlc3RvcklzVmlld3Bv
cnRDb25zdHJhaW5lZCB7IGZhbHNlIH07CiAgICAgfTsKQEAgLTQ5Niw2ICs0OTksNyBAQCBwcml2
YXRlOgogICAgICAgICBVc2VySW50ZXJhY3Rpb25FbmFibGVkQ2hhbmdlZCAgICAgICAgICAgPSAx
TExVIDw8IDM4LAogICAgIH07CiAgICAgdHlwZWRlZiB1aW50NjRfdCBMYXllckNoYW5nZUZsYWdz
OworICAgIHZvaWQgYWRkVW5jb21taXR0ZWRDaGFuZ2VzKExheWVyQ2hhbmdlRmxhZ3MpOwogICAg
IGVudW0gU2NoZWR1bGVGbHVzaE9yTm90IHsgU2NoZWR1bGVGbHVzaCwgRG9udFNjaGVkdWxlRmx1
c2ggfTsKICAgICB2b2lkIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChMYXllckNoYW5nZUZsYWdz
LCBTY2hlZHVsZUZsdXNoT3JOb3QgPSBTY2hlZHVsZUZsdXNoKTsKICAgICB2b2lkIG5vdGVTdWJs
YXllcnNDaGFuZ2VkKFNjaGVkdWxlRmx1c2hPck5vdCA9IFNjaGVkdWxlRmx1c2gpOwpAQCAtNTk2
LDYgKzYwMCw3IEBAIHByaXZhdGU6CiAjZWxzZQogICAgIExheWVyQ2hhbmdlRmxhZ3MgbV91bmNv
bW1pdHRlZENoYW5nZXMgeyBDb3ZlcmFnZVJlY3RDaGFuZ2VkIH07CiAjZW5kaWYKKyAgICBib29s
IG1faGFzRGVzY2VuZGFudHNXaXRoVW5jb21taXR0ZWRDaGFuZ2VzIHsgZmFsc2UgfTsKIAogICAg
IGJvb2wgbV9pc0NvbW1pdHRpbmdDaGFuZ2VzIHsgZmFsc2UgfTsKIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>307125</attachid>
            <date>2017-04-14 11:14:05 -0700</date>
            <delta_ts>2017-04-15 04:50:02 -0700</delta_ts>
            <desc>patch</desc>
            <filename>graphicslayerca-commit-dirty-2.patch</filename>
            <type>text/plain</type>
            <size>8930</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNTM2NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBACisyMDE3LTA0LTE0ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBHcmFwaGljc0xheWVyQ0E6OnJl
Y3Vyc2l2ZUNvbW1pdENoYW5nZXMgc2hvdWxkIG5vdCBkZXNjZW5kIGludG8gc3VidHJlZXMgd2l0
aG91dCBjaGFuZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzA4NTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBXaXRoIGxvdHMgb2YgbGF5ZXJzIHRoaXMgY2FuIGJlIHZlcnkgc2xvdyBhcyBpdCBhbHdh
eXMgdHJhdmVyc2VzIHRoZSBlbnRpcmUgbGF5ZXIgdHJlZS4KKyAgICAgICAgRm9yIGV4YW1wbGUg
R0lGIGFuaW1hdGlvbnMgb24gdHVtYmxyLmNvbSB0cmlnZ2VyIGV4cGVuc2l2ZSBjb21taXRzIHdo
ZXJlIGFsbW9zdCBub3RoaW5nIGNoYW5nZXMuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIG1f
aGFzRGVzY2VuZGFudHNXaXRoVW5jb21taXR0ZWRDaGFuZ2VzIGJpdCB0byBHcmFwaGljc0xheWVy
Q0EuIFdpdGggdGhpcworICAgICAgICB3ZSBjYW4gYXZvaWQgZGVzY2VuZGluZyB0byBicmFuY2hl
cyB3aXRob3V0IGNoYW5nZXMgd2hlbiBjb21taXR0aW5nLgorCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXJDQTo6c2V0VmlzaWJsZUFuZENvdmVyYWdlUmVjdHMpOgorCisgICAgICAgICAgICBE
byBhbGwgc2V0dGluZyBvZiBtX3VuY29tbWl0dGVkQ2hhbmdlcyBiaXRzIHZpYSBhZGRVbmNvbW1p
dHRlZENoYW5nZXMgZnVuY3Rpb24uCisKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJD
QTo6cmVjdXJzaXZlQ29tbWl0Q2hhbmdlcyk6CisKKyAgICAgICAgICAgIEJhaWwgb3V0IGlmIG5l
aXRoZXIgdGhlIGN1cnJlbnQgbGF5ZXIgbm9yIGFueSBvZiBpdHMgZGVzY2VuZGFudHMgaGF2ZSBh
bnkgdW5jb21taXRlZCBjaGFuZ2VzCisgICAgICAgICAgICBhbmQgbm9uZSBvZiB0aGUgYW5jZXN0
b3JzIGhhZCBjaGFuZ2VzLgorCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OmNv
bW1pdExheWVyQ2hhbmdlc0JlZm9yZVN1YmxheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0xheWVyQ0E6OmVuc3VyZVN0cnVjdHVyYWxMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0xheWVyQ0E6OmNoYW5nZUxheWVyVHlwZVRvKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXJDQTo6YWRkVW5jb21taXR0ZWRDaGFuZ2VzKToKKworICAgICAgICAgICAgU2V0
IG1faGFzRGVzY2VuZGFudHNXaXRoVW5jb21taXR0ZWRDaGFuZ2VzIGJpdCBpbiBhbmNlc3RvcnMg
d2hlbiBtdXRhdGluZyBtX3VuY29tbWl0dGVkQ2hhbmdlcy4KKworICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NMYXllckNBOjpub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oOgorCiAyMDE3LTA0LTE0ICBSeWFu
IEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJv
bGxpbmcgb3V0IHIyMTUzNTAuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAJKHJldmlzaW9uIDIxNTI2MikK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNTQsMTcgKzEzNTQsMTcgQEAgdm9pZCBHcmFwaGljc0xh
eWVyQ0E6OnNldFZpc2libGVBbmRDb3ZlcgogICAgIC8vIEZJWE1FOiB3ZSBuZWVkIHRvIHRha2Ug
cmVmbGVjdGlvbnMgaW50byBhY2NvdW50IHdoZW4gZGV0ZXJtaW5pbmcgd2hldGhlciB0aGlzIGxh
eWVyIGludGVyc2VjdHMgdGhlIGNvdmVyYWdlIHJlY3QuCiAgICAgYm9vbCBpbnRlcnNlY3RzQ292
ZXJhZ2VSZWN0ID0gaXNWaWV3cG9ydENvbnN0cmFpbmVkIHx8IHJlY3RzLmNvdmVyYWdlUmVjdC5p
bnRlcnNlY3RzKEZsb2F0UmVjdChtX2JvdW5kc09yaWdpbiwgc2l6ZSgpKSk7CiAgICAgaWYgKGlu
dGVyc2VjdHNDb3ZlcmFnZVJlY3QgIT0gbV9pbnRlcnNlY3RzQ292ZXJhZ2VSZWN0KSB7Ci0gICAg
ICAgIG1fdW5jb21taXR0ZWRDaGFuZ2VzIHw9IENvdmVyYWdlUmVjdENoYW5nZWQ7CisgICAgICAg
IGFkZFVuY29tbWl0dGVkQ2hhbmdlcyhDb3ZlcmFnZVJlY3RDaGFuZ2VkKTsKICAgICAgICAgbV9p
bnRlcnNlY3RzQ292ZXJhZ2VSZWN0ID0gaW50ZXJzZWN0c0NvdmVyYWdlUmVjdDsKICAgICB9CiAK
ICAgICBpZiAodmlzaWJsZVJlY3RDaGFuZ2VkKSB7Ci0gICAgICAgIG1fdW5jb21taXR0ZWRDaGFu
Z2VzIHw9IENvdmVyYWdlUmVjdENoYW5nZWQ7CisgICAgICAgIGFkZFVuY29tbWl0dGVkQ2hhbmdl
cyhDb3ZlcmFnZVJlY3RDaGFuZ2VkKTsKICAgICAgICAgbV92aXNpYmxlUmVjdCA9IHJlY3RzLnZp
c2libGVSZWN0OwogICAgIH0KIAogICAgIGlmIChjb3ZlcmFnZVJlY3RDaGFuZ2VkKSB7Ci0gICAg
ICAgIG1fdW5jb21taXR0ZWRDaGFuZ2VzIHw9IENvdmVyYWdlUmVjdENoYW5nZWQ7CisgICAgICAg
IGFkZFVuY29tbWl0dGVkQ2hhbmdlcyhDb3ZlcmFnZVJlY3RDaGFuZ2VkKTsKICAgICAgICAgbV9j
b3ZlcmFnZVJlY3QgPSByZWN0cy5jb3ZlcmFnZVJlY3Q7CiAgICAgfQogfQpAQCAtMTM3Myw4ICsx
MzczLDE2IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRWaXNpYmxlQW5kQ292ZXIKIC8vIGFu
aW1hdGlvbiB0aGF0IGNvbnRyaWJ1dGVzIG1heGltYWxseSB0byB0aGUgc2NhbGUgKG9uIGV2ZXJ5
IGxheWVyIHdpdGggYW5pbWF0aW9ucyBkb3duIHRoZSBoaWVyYXJjaHkpLgogdm9pZCBHcmFwaGlj
c0xheWVyQ0E6OnJlY3Vyc2l2ZUNvbW1pdENoYW5nZXMoY29uc3QgQ29tbWl0U3RhdGUmIGNvbW1p
dFN0YXRlLCBjb25zdCBUcmFuc2Zvcm1TdGF0ZSYgc3RhdGUsIGZsb2F0IHBhZ2VTY2FsZUZhY3Rv
ciwgY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb25SZWxhdGl2ZVRvQmFzZSwgYm9vbCBhZmZlY3Rl
ZEJ5UGFnZVNjYWxlKQogeworICAgIGlmICghY29tbWl0U3RhdGUuYW5jZXN0b3JIYWRDaGFuZ2Vz
ICYmICFtX3VuY29tbWl0dGVkQ2hhbmdlcyAmJiAhbV9oYXNEZXNjZW5kYW50c1dpdGhVbmNvbW1p
dHRlZENoYW5nZXMpCisgICAgICAgIHJldHVybjsKKwogICAgIFRyYW5zZm9ybVN0YXRlIGxvY2Fs
U3RhdGUgPSBzdGF0ZTsKICAgICBDb21taXRTdGF0ZSBjaGlsZENvbW1pdFN0YXRlID0gY29tbWl0
U3RhdGU7CisKKyAgICAvLyBGSVhNRTogVGhpcyBjb3VsZCBiZSBtb3JlIGZpbmUtZ3JhaW5lZC4g
T25seSBzb21lIHR5cGVzIG9mIGNoYW5nZXMgaGF2ZSBpbXBhY3Qgb24gc3VibGF5ZXJzLgorICAg
IGlmICghY2hpbGRDb21taXRTdGF0ZS5hbmNlc3RvckhhZENoYW5nZXMpCisgICAgICAgIGNoaWxk
Q29tbWl0U3RhdGUuYW5jZXN0b3JIYWRDaGFuZ2VzID0gISFtX3VuY29tbWl0dGVkQ2hhbmdlczsK
KwogICAgIGJvb2wgYWZmZWN0ZWRCeVRyYW5zZm9ybUFuaW1hdGlvbiA9IGNvbW1pdFN0YXRlLmFu
Y2VzdG9ySGFzVHJhbnNmb3JtQW5pbWF0aW9uOwogCiAgICAgYm9vbCBhY2N1bXVsYXRlVHJhbnNm
b3JtID0gYWNjdW11bGF0ZXNUcmFuc2Zvcm0oKnRoaXMpOwpAQCAtMTQ1MCw2ICsxNDU4LDggQEAg
dm9pZCBHcmFwaGljc0xheWVyQ0E6OnJlY3Vyc2l2ZUNvbW1pdENoYQogICAgIGlmIChHcmFwaGlj
c0xheWVyQ0EqIG1hc2tMYXllciA9IGRvd25jYXN0PEdyYXBoaWNzTGF5ZXJDQT4obV9tYXNrTGF5
ZXIpKQogICAgICAgICBtYXNrTGF5ZXItPmNvbW1pdExheWVyQ2hhbmdlc0FmdGVyU3VibGF5ZXJz
KGNoaWxkQ29tbWl0U3RhdGUpOwogCisgICAgbV9oYXNEZXNjZW5kYW50c1dpdGhVbmNvbW1pdHRl
ZENoYW5nZXMgPSBmYWxzZTsKKwogICAgIGJvb2wgaGFkRGlydHlSZWN0cyA9IG1fdW5jb21taXR0
ZWRDaGFuZ2VzICYgRGlydHlSZWN0c0NoYW5nZWQ7CiAgICAgY29tbWl0TGF5ZXJDaGFuZ2VzQWZ0
ZXJTdWJsYXllcnMoY2hpbGRDb21taXRTdGF0ZSk7CiAKQEAgLTE1NjQsNyArMTU3NCw3IEBAIHZv
aWQgR3JhcGhpY3NMYXllckNBOjpjb21taXRMYXllckNoYW5nZXMKICAgICBpZiAoIW1fdW5jb21t
aXR0ZWRDaGFuZ2VzKSB7CiAgICAgICAgIC8vIEVuc3VyZSB0aGF0IHdlIGNhcCBsYXllciBkZXB0
aCBpbiBjb21taXRMYXllckNoYW5nZXNBZnRlclN1YmxheWVycygpLgogICAgICAgICBpZiAoY29t
bWl0U3RhdGUudHJlZURlcHRoID4gY01heExheWVyVHJlZURlcHRoKQotICAgICAgICAgICAgbV91
bmNvbW1pdHRlZENoYW5nZXMgfD0gQ2hpbGRyZW5DaGFuZ2VkOworICAgICAgICAgICAgYWRkVW5j
b21taXR0ZWRDaGFuZ2VzKENoaWxkcmVuQ2hhbmdlZCk7CiAgICAgfQogCiAgICAgYm9vbCBuZWVk
VGlsZWRMYXllciA9IHJlcXVpcmVzVGlsZWRMYXllcihwYWdlU2NhbGVGYWN0b3IpOwpAQCAtMTcw
Niw3ICsxNzE2LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OmNvbW1pdExheWVyQ2hhbmdlcwog
CiAgICAgLy8gRW5zdXJlIHRoYXQgd2UgY2FwIGxheWVyIGRlcHRoIGluIGNvbW1pdExheWVyQ2hh
bmdlc0FmdGVyU3VibGF5ZXJzKCkuCiAgICAgaWYgKGNvbW1pdFN0YXRlLnRyZWVEZXB0aCA+IGNN
YXhMYXllclRyZWVEZXB0aCkKLSAgICAgICAgbV91bmNvbW1pdHRlZENoYW5nZXMgfD0gQ2hpbGRy
ZW5DaGFuZ2VkOworICAgICAgICBhZGRVbmNvbW1pdHRlZENoYW5nZXMoQ2hpbGRyZW5DaGFuZ2Vk
KTsKIH0KIAogdm9pZCBHcmFwaGljc0xheWVyQ0E6OmNvbW1pdExheWVyQ2hhbmdlc0FmdGVyU3Vi
bGF5ZXJzKENvbW1pdFN0YXRlJiBjb21taXRTdGF0ZSkKQEAgLTIxMTYsNyArMjEyNiw3IEBAIHZv
aWQgR3JhcGhpY3NMYXllckNBOjplbnN1cmVTdHJ1Y3R1cmFsTGEKICAgICAgICAgICAgIC8vIFJl
bGVhc2UgdGhlIHN0cnVjdHVyYWwgbGF5ZXIuCiAgICAgICAgICAgICBtX3N0cnVjdHVyYWxMYXll
ciA9IG51bGxwdHI7CiAKLSAgICAgICAgICAgIG1fdW5jb21taXR0ZWRDaGFuZ2VzIHw9IHN0cnVj
dHVyYWxMYXllckNoYW5nZUZsYWdzOworICAgICAgICAgICAgYWRkVW5jb21taXR0ZWRDaGFuZ2Vz
KHN0cnVjdHVyYWxMYXllckNoYW5nZUZsYWdzKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47
CiAgICAgfQpAQCAtMjE0NCw3ICsyMTU0LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OmVuc3Vy
ZVN0cnVjdHVyYWxMYQogICAgIGlmICghc3RydWN0dXJhbExheWVyQ2hhbmdlZCkKICAgICAgICAg
cmV0dXJuOwogICAgIAotICAgIG1fdW5jb21taXR0ZWRDaGFuZ2VzIHw9IHN0cnVjdHVyYWxMYXll
ckNoYW5nZUZsYWdzOworICAgIGFkZFVuY29tbWl0dGVkQ2hhbmdlcyhzdHJ1Y3R1cmFsTGF5ZXJD
aGFuZ2VGbGFncyk7CiAKICAgICAvLyBXZSd2ZSBjaGFuZ2VkIHRoZSBsYXllciB0aGF0IG91ciBw
YXJlbnQgYWRkZWQgdG8gaXRzIHN1YmxheWVyIGxpc3QsIHNvIHRlbGwgaXQgdG8gdXBkYXRlCiAg
ICAgLy8gc3VibGF5ZXJzIGFnYWluIGluIGl0cyBjb21taXRMYXllckNoYW5nZXNBZnRlclN1Ymxh
eWVycygpLgpAQCAtMzYxNSw3ICszNjI1LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OmNoYW5n
ZUxheWVyVHlwZVRvKAogICAgICAgICBvbGRMYXllci0+c3VwZXJsYXllcigpLT5yZXBsYWNlU3Vi
bGF5ZXIoKm9sZExheWVyLCAqbV9sYXllcik7CiAgICAgfQogCi0gICAgbV91bmNvbW1pdHRlZENo
YW5nZXMgfD0gQ2hpbGRyZW5DaGFuZ2VkCisgICAgYWRkVW5jb21taXR0ZWRDaGFuZ2VzKENoaWxk
cmVuQ2hhbmdlZAogICAgICAgICB8IEdlb21ldHJ5Q2hhbmdlZAogICAgICAgICB8IFRyYW5zZm9y
bUNoYW5nZWQKICAgICAgICAgfCBDaGlsZHJlblRyYW5zZm9ybUNoYW5nZWQKQEAgLTM2MzEsMTAg
KzM2NDEsMTAgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OmNoYW5nZUxheWVyVHlwZVRvKAogICAg
ICAgICB8IE1hc2tMYXllckNoYW5nZWQKICAgICAgICAgfCBPcGFjaXR5Q2hhbmdlZAogICAgICAg
ICB8IE5hbWVDaGFuZ2VkCi0gICAgICAgIHwgRGVidWdJbmRpY2F0b3JzQ2hhbmdlZDsKKyAgICAg
ICAgfCBEZWJ1Z0luZGljYXRvcnNDaGFuZ2VkKTsKICAgICAKICAgICBpZiAoaXNUaWxlZExheWVy
KQotICAgICAgICBtX3VuY29tbWl0dGVkQ2hhbmdlcyB8PSBDb3ZlcmFnZVJlY3RDaGFuZ2VkOwor
ICAgICAgICBhZGRVbmNvbW1pdHRlZENoYW5nZXMoQ292ZXJhZ2VSZWN0Q2hhbmdlZCk7CiAKICAg
ICBtb3ZlQW5pbWF0aW9ucyhvbGRMYXllci5nZXQoKSwgbV9sYXllci5nZXQoKSk7CiAgICAgCkBA
IC00MDA4LDEyICs0MDE4LDI4IEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjpjYW5UaHJvdHRsZUxh
eWVyRmwKICAgICByZXR1cm4gIShtX3VuY29tbWl0dGVkQ2hhbmdlcyAmIFRpbGVzQWRkZWQpOwog
fQogCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6YWRkVW5jb21taXR0ZWRDaGFuZ2VzKExheWVyQ2hh
bmdlRmxhZ3MgZmxhZ3MpCit7CisgICAgbV91bmNvbW1pdHRlZENoYW5nZXMgfD0gZmxhZ3M7CisK
KyAgICBpZiAobV9pc0NvbW1pdHRpbmdDaGFuZ2VzKQorICAgICAgICByZXR1cm47CisKKyAgICBm
b3IgKGF1dG8qIGFuY2VzdG9yID0gcGFyZW50KCk7IGFuY2VzdG9yOyBhbmNlc3RvciA9IGFuY2Vz
dG9yLT5wYXJlbnQoKSkgeworICAgICAgICBhdXRvJiBhbmNlc3RvckNBID0gc3RhdGljX2Nhc3Q8
R3JhcGhpY3NMYXllckNBJj4oKmFuY2VzdG9yKTsKKyAgICAgICAgQVNTRVJUKCFhbmNlc3RvckNB
Lm1faXNDb21taXR0aW5nQ2hhbmdlcyk7CisgICAgICAgIGlmIChhbmNlc3RvckNBLm1faGFzRGVz
Y2VuZGFudHNXaXRoVW5jb21taXR0ZWRDaGFuZ2VzKQorICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICBhbmNlc3RvckNBLm1faGFzRGVzY2VuZGFudHNXaXRoVW5jb21taXR0ZWRDaGFuZ2VzID0g
dHJ1ZTsKKyAgICB9Cit9CisKIHZvaWQgR3JhcGhpY3NMYXllckNBOjpub3RlTGF5ZXJQcm9wZXJ0
eUNoYW5nZWQoTGF5ZXJDaGFuZ2VGbGFncyBmbGFncywgU2NoZWR1bGVGbHVzaE9yTm90IHNjaGVk
dWxlRmx1c2gpCiB7CiAgICAgYm9vbCBoYWRVbmNvbW1pdHRlZENoYW5nZXMgPSAhIW1fdW5jb21t
aXR0ZWRDaGFuZ2VzOwogICAgIGJvb2wgb2xkQ2FuVGhyb3R0bGVMYXllckZsdXNoID0gY2FuVGhy
b3R0bGVMYXllckZsdXNoKCk7CiAKLSAgICBtX3VuY29tbWl0dGVkQ2hhbmdlcyB8PSBmbGFnczsK
KyAgICBhZGRVbmNvbW1pdHRlZENoYW5nZXMoZmxhZ3MpOwogCiAgICAgaWYgKHNjaGVkdWxlRmx1
c2ggPT0gU2NoZWR1bGVGbHVzaCkgewogICAgICAgICBib29sIG5lZWRzRmx1c2ggPSAhaGFkVW5j
b21taXR0ZWRDaGFuZ2VzIHx8IG9sZENhblRocm90dGxlTGF5ZXJGbHVzaCAhPSBjYW5UaHJvdHRs
ZUxheWVyRmx1c2goKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L0dyYXBoaWNzTGF5ZXJDQS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCShyZXZpc2lvbiAyMTUyNjIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTUyLDYgKzE1Miw3IEBAIHB1YmxpYzoKIAogICAgIHN0cnVjdCBDb21taXRT
dGF0ZSB7CiAgICAgICAgIGludCB0cmVlRGVwdGggeyAwIH07CisgICAgICAgIGJvb2wgYW5jZXN0
b3JIYWRDaGFuZ2VzIHsgZmFsc2UgfTsKICAgICAgICAgYm9vbCBhbmNlc3Rvckhhc1RyYW5zZm9y
bUFuaW1hdGlvbiB7IGZhbHNlIH07CiAgICAgICAgIGJvb2wgYW5jZXN0b3JJc1ZpZXdwb3J0Q29u
c3RyYWluZWQgeyBmYWxzZSB9OwogICAgIH07CkBAIC00OTYsNiArNDk3LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgVXNlckludGVyYWN0aW9uRW5hYmxlZENoYW5nZWQgICAgICAgICAgID0gMUxMVSA8
PCAzOCwKICAgICB9OwogICAgIHR5cGVkZWYgdWludDY0X3QgTGF5ZXJDaGFuZ2VGbGFnczsKKyAg
ICB2b2lkIGFkZFVuY29tbWl0dGVkQ2hhbmdlcyhMYXllckNoYW5nZUZsYWdzKTsKICAgICBlbnVt
IFNjaGVkdWxlRmx1c2hPck5vdCB7IFNjaGVkdWxlRmx1c2gsIERvbnRTY2hlZHVsZUZsdXNoIH07
CiAgICAgdm9pZCBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoTGF5ZXJDaGFuZ2VGbGFncywgU2No
ZWR1bGVGbHVzaE9yTm90ID0gU2NoZWR1bGVGbHVzaCk7CiAgICAgdm9pZCBub3RlU3VibGF5ZXJz
Q2hhbmdlZChTY2hlZHVsZUZsdXNoT3JOb3QgPSBTY2hlZHVsZUZsdXNoKTsKQEAgLTU5Niw2ICs1
OTgsNyBAQCBwcml2YXRlOgogI2Vsc2UKICAgICBMYXllckNoYW5nZUZsYWdzIG1fdW5jb21taXR0
ZWRDaGFuZ2VzIHsgQ292ZXJhZ2VSZWN0Q2hhbmdlZCB9OwogI2VuZGlmCisgICAgYm9vbCBtX2hh
c0Rlc2NlbmRhbnRzV2l0aFVuY29tbWl0dGVkQ2hhbmdlcyB7IGZhbHNlIH07CiAKICAgICBib29s
IG1faXNDb21taXR0aW5nQ2hhbmdlcyB7IGZhbHNlIH07CiB9Owo=
</data>
<flag name="review"
          id="328418"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>307197</attachid>
            <date>2017-04-15 04:49:51 -0700</date>
            <delta_ts>2017-04-17 06:22:27 -0700</delta_ts>
            <desc>patch</desc>
            <filename>graphicslayerca-commit-dirty-3.patch</filename>
            <type>text/plain</type>
            <size>11895</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNTM2NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBACisyMDE3LTA0LTE0ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBHcmFwaGljc0xheWVyQ0E6OnJl
Y3Vyc2l2ZUNvbW1pdENoYW5nZXMgc2hvdWxkIG5vdCBkZXNjZW5kIGludG8gc3VidHJlZXMgd2l0
aG91dCBjaGFuZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzA4NTEKKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAg
ICAgV2l0aCBsb3RzIG9mIGxheWVycyB0aGlzIGNhbiBiZSB2ZXJ5IHNsb3cgYXMgaXQgYWx3YXlz
IHRyYXZlcnNlcyB0aGUgZW50aXJlIGxheWVyIHRyZWUuCisgICAgICAgIEZvciBleGFtcGxlIEdJ
RiBhbmltYXRpb25zIG9uIHR1bWJsci5jb20gdHJpZ2dlciBleHBlbnNpdmUgY29tbWl0cyB3aGVy
ZSBhbG1vc3Qgbm90aGluZyBjaGFuZ2VzLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBtX2hh
c0Rlc2NlbmRhbnRzV2l0aFVuY29tbWl0dGVkQ2hhbmdlcyBiaXQgdG8gR3JhcGhpY3NMYXllckNB
LiBXaXRoIHRoaXMKKyAgICAgICAgd2UgY2FuIGF2b2lkIGRlc2NlbmRpbmcgdG8gYnJhbmNoZXMg
d2l0aG91dCBjaGFuZ2VzIHdoZW4gY29tbWl0dGluZy4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyQ0E6OnNldFZpc2libGVBbmRDb3ZlcmFnZVJlY3RzKToKKworICAgICAgICAgICAgRG8g
YWxsIHNldHRpbmcgb2YgbV91bmNvbW1pdHRlZENoYW5nZXMgYml0cyB2aWEgYWRkVW5jb21taXR0
ZWRDaGFuZ2VzIGZ1bmN0aW9uLgorCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6
OnJlY3Vyc2l2ZUNvbW1pdENoYW5nZXMpOgorCisgICAgICAgICAgICBCYWlsIG91dCBpZiBuZWl0
aGVyIHRoZSBjdXJyZW50IGxheWVyIG5vciBhbnkgb2YgaXRzIGRlc2NlbmRhbnRzIGhhdmUgYW55
IHVuY29tbWl0ZWQgY2hhbmdlcworICAgICAgICAgICAgYW5kIG5vbmUgb2YgdGhlIGFuY2VzdG9y
cyBoYWQgY2hhbmdlcy4KKworICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpjb21t
aXRMYXllckNoYW5nZXNCZWZvcmVTdWJsYXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllckNBOjplbnN1cmVTdHJ1Y3R1cmFsTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllckNBOjpjaGFuZ2VMYXllclR5cGVUbyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0xheWVyQ0E6OmFkZFVuY29tbWl0dGVkQ2hhbmdlcyk6CisKKyAgICAgICAgICAgIFNldCBt
X2hhc0Rlc2NlbmRhbnRzV2l0aFVuY29tbWl0dGVkQ2hhbmdlcyBiaXQgaW4gYW5jZXN0b3JzIHdo
ZW4gbXV0YXRpbmcgbV91bmNvbW1pdHRlZENoYW5nZXMuCisKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXJDQTo6bm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxheWVyQ29tcG9zaXRvcjo6ZnJhbWVWaWV3RGlkU2Nyb2xsKToKKworICAgICAgICAgICAg
VGVsbCB0aGUgc2Nyb2xsaW5nIGxheWVyIHRoYXQgaXQgbmVlZHMgdG8gcmVjb21wdXRlIGNvdmVy
YWdlLgorICAgICAgICAgICAgVGhpcyBhbHNvIHNjaGVkdWxlcyBhIGxheWVyIGZsdXNoIHNvIG5v
IG5lZWQgdG8gZG8gdGhhdCBzZXBhcmF0ZWx5LgorCiAyMDE3LTA0LTE0ICBSeWFuIEhhZGRhZCAg
PHJ5YW5oYWRkYWRAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0
IHIyMTUzNTAuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0xheWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NMYXllci5oCShyZXZpc2lvbiAyMTUyNjIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU2NSw2ICs1
NjUsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzR3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0Nvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0U2Nyb2xsUG9zaXRpb25DaGFuZ2VkKCkgeyB9CisKICAgICBzdGF0aWMgdm9p
ZCB0cmF2ZXJzZShHcmFwaGljc0xheWVyJiwgc3RkOjpmdW5jdGlvbjx2b2lkIChHcmFwaGljc0xh
eWVyJik+KTsKIAogcHJvdGVjdGVkOgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCShyZXZpc2lvbiAyMTUy
NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVy
Q0EuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQxLDYgKzEyNDEsMTIgQEAgVGlsZWRCYWNraW5n
KiBHcmFwaGljc0xheWVyQ0E6OnRpbGVkQmFjawogICAgIHJldHVybiBtX2xheWVyLT50aWxlZEJh
Y2tpbmcoKTsKIH0KIAordm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldFNjcm9sbFBvc2l0aW9uQ2hh
bmdlZCgpCit7CisgICAgLy8gVGhpcyBpbnZhbGlkYXRlcyB0aGUgbGF5ZXIgc28gdGhlIGNvdmVy
YWdlIHJlY3RzIGdldHMgdXBkYXRlZC4KKyAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoU2Ny
b2xsUG9zaXRpb25DaGFuZ2VkKTsKK30KKwogVHJhbnNmb3JtYXRpb25NYXRyaXggR3JhcGhpY3NM
YXllckNBOjpsYXllclRyYW5zZm9ybShjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbiwgY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgqIGN1c3RvbVRyYW5zZm9ybSkgY29uc3QKIHsKICAgICBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm07CkBAIC0xMzU0LDE3ICsxMzYwLDE3IEBAIHZvaWQg
R3JhcGhpY3NMYXllckNBOjpzZXRWaXNpYmxlQW5kQ292ZXIKICAgICAvLyBGSVhNRTogd2UgbmVl
ZCB0byB0YWtlIHJlZmxlY3Rpb25zIGludG8gYWNjb3VudCB3aGVuIGRldGVybWluaW5nIHdoZXRo
ZXIgdGhpcyBsYXllciBpbnRlcnNlY3RzIHRoZSBjb3ZlcmFnZSByZWN0LgogICAgIGJvb2wgaW50
ZXJzZWN0c0NvdmVyYWdlUmVjdCA9IGlzVmlld3BvcnRDb25zdHJhaW5lZCB8fCByZWN0cy5jb3Zl
cmFnZVJlY3QuaW50ZXJzZWN0cyhGbG9hdFJlY3QobV9ib3VuZHNPcmlnaW4sIHNpemUoKSkpOwog
ICAgIGlmIChpbnRlcnNlY3RzQ292ZXJhZ2VSZWN0ICE9IG1faW50ZXJzZWN0c0NvdmVyYWdlUmVj
dCkgewotICAgICAgICBtX3VuY29tbWl0dGVkQ2hhbmdlcyB8PSBDb3ZlcmFnZVJlY3RDaGFuZ2Vk
OworICAgICAgICBhZGRVbmNvbW1pdHRlZENoYW5nZXMoQ292ZXJhZ2VSZWN0Q2hhbmdlZCk7CiAg
ICAgICAgIG1faW50ZXJzZWN0c0NvdmVyYWdlUmVjdCA9IGludGVyc2VjdHNDb3ZlcmFnZVJlY3Q7
CiAgICAgfQogCiAgICAgaWYgKHZpc2libGVSZWN0Q2hhbmdlZCkgewotICAgICAgICBtX3VuY29t
bWl0dGVkQ2hhbmdlcyB8PSBDb3ZlcmFnZVJlY3RDaGFuZ2VkOworICAgICAgICBhZGRVbmNvbW1p
dHRlZENoYW5nZXMoQ292ZXJhZ2VSZWN0Q2hhbmdlZCk7CiAgICAgICAgIG1fdmlzaWJsZVJlY3Qg
PSByZWN0cy52aXNpYmxlUmVjdDsKICAgICB9CiAKICAgICBpZiAoY292ZXJhZ2VSZWN0Q2hhbmdl
ZCkgewotICAgICAgICBtX3VuY29tbWl0dGVkQ2hhbmdlcyB8PSBDb3ZlcmFnZVJlY3RDaGFuZ2Vk
OworICAgICAgICBhZGRVbmNvbW1pdHRlZENoYW5nZXMoQ292ZXJhZ2VSZWN0Q2hhbmdlZCk7CiAg
ICAgICAgIG1fY292ZXJhZ2VSZWN0ID0gcmVjdHMuY292ZXJhZ2VSZWN0OwogICAgIH0KIH0KQEAg
LTEzNzMsOCArMTM3OSwxMiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0VmlzaWJsZUFuZENv
dmVyCiAvLyBhbmltYXRpb24gdGhhdCBjb250cmlidXRlcyBtYXhpbWFsbHkgdG8gdGhlIHNjYWxl
IChvbiBldmVyeSBsYXllciB3aXRoIGFuaW1hdGlvbnMgZG93biB0aGUgaGllcmFyY2h5KS4KIHZv
aWQgR3JhcGhpY3NMYXllckNBOjpyZWN1cnNpdmVDb21taXRDaGFuZ2VzKGNvbnN0IENvbW1pdFN0
YXRlJiBjb21taXRTdGF0ZSwgY29uc3QgVHJhbnNmb3JtU3RhdGUmIHN0YXRlLCBmbG9hdCBwYWdl
U2NhbGVGYWN0b3IsIGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uUmVsYXRpdmVUb0Jhc2UsIGJv
b2wgYWZmZWN0ZWRCeVBhZ2VTY2FsZSkKIHsKKyAgICBpZiAoIWNvbW1pdFN0YXRlLmFuY2VzdG9y
SGFkQ2hhbmdlcyAmJiAhbV91bmNvbW1pdHRlZENoYW5nZXMgJiYgIWhhc0Rlc2NlbmRhbnRzV2l0
aFVuY29tbWl0dGVkQ2hhbmdlcygpKQorICAgICAgICByZXR1cm47CisKICAgICBUcmFuc2Zvcm1T
dGF0ZSBsb2NhbFN0YXRlID0gc3RhdGU7CiAgICAgQ29tbWl0U3RhdGUgY2hpbGRDb21taXRTdGF0
ZSA9IGNvbW1pdFN0YXRlOworCiAgICAgYm9vbCBhZmZlY3RlZEJ5VHJhbnNmb3JtQW5pbWF0aW9u
ID0gY29tbWl0U3RhdGUuYW5jZXN0b3JIYXNUcmFuc2Zvcm1BbmltYXRpb247CiAKICAgICBib29s
IGFjY3VtdWxhdGVUcmFuc2Zvcm0gPSBhY2N1bXVsYXRlc1RyYW5zZm9ybSgqdGhpcyk7CkBAIC0x
NDExLDcgKzE0MjEsMTEgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnJlY3Vyc2l2ZUNvbW1pdENo
YQogI2VuZGlmCiAKICAgICBib29sIGhhZENoYW5nZXMgPSBtX3VuY29tbWl0dGVkQ2hhbmdlczsK
LSAgICAKKworICAgIC8vIEZJWE1FOiBUaGlzIGNvdWxkIGJlIG1vcmUgZmluZS1ncmFpbmVkLiBP
bmx5IHNvbWUgdHlwZXMgb2YgY2hhbmdlcyBoYXZlIGltcGFjdCBvbiBzdWJsYXllcnMuCisgICAg
aWYgKCFjaGlsZENvbW1pdFN0YXRlLmFuY2VzdG9ySGFkQ2hhbmdlcykKKyAgICAgICAgY2hpbGRD
b21taXRTdGF0ZS5hbmNlc3RvckhhZENoYW5nZXMgPSBoYWRDaGFuZ2VzOworCiAgICAgaWYgKGFw
cGxpZXNQYWdlU2NhbGUoKSkgewogICAgICAgICBwYWdlU2NhbGVGYWN0b3IgPSB0aGlzLT5wYWdl
U2NhbGVGYWN0b3IoKTsKICAgICAgICAgYWZmZWN0ZWRCeVBhZ2VTY2FsZSA9IHRydWU7CkBAIC0x
NDUwLDYgKzE0NjQsOCBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6cmVjdXJzaXZlQ29tbWl0Q2hh
CiAgICAgaWYgKEdyYXBoaWNzTGF5ZXJDQSogbWFza0xheWVyID0gZG93bmNhc3Q8R3JhcGhpY3NM
YXllckNBPihtX21hc2tMYXllcikpCiAgICAgICAgIG1hc2tMYXllci0+Y29tbWl0TGF5ZXJDaGFu
Z2VzQWZ0ZXJTdWJsYXllcnMoY2hpbGRDb21taXRTdGF0ZSk7CiAKKyAgICBzZXRIYXNEZXNjZW5k
YW50c1dpdGhVbmNvbW1pdHRlZENoYW5nZXMoZmFsc2UpOworCiAgICAgYm9vbCBoYWREaXJ0eVJl
Y3RzID0gbV91bmNvbW1pdHRlZENoYW5nZXMgJiBEaXJ0eVJlY3RzQ2hhbmdlZDsKICAgICBjb21t
aXRMYXllckNoYW5nZXNBZnRlclN1YmxheWVycyhjaGlsZENvbW1pdFN0YXRlKTsKIApAQCAtMTU2
NCw3ICsxNTgwLDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OmNvbW1pdExheWVyQ2hhbmdlcwog
ICAgIGlmICghbV91bmNvbW1pdHRlZENoYW5nZXMpIHsKICAgICAgICAgLy8gRW5zdXJlIHRoYXQg
d2UgY2FwIGxheWVyIGRlcHRoIGluIGNvbW1pdExheWVyQ2hhbmdlc0FmdGVyU3VibGF5ZXJzKCku
CiAgICAgICAgIGlmIChjb21taXRTdGF0ZS50cmVlRGVwdGggPiBjTWF4TGF5ZXJUcmVlRGVwdGgp
Ci0gICAgICAgICAgICBtX3VuY29tbWl0dGVkQ2hhbmdlcyB8PSBDaGlsZHJlbkNoYW5nZWQ7Cisg
ICAgICAgICAgICBhZGRVbmNvbW1pdHRlZENoYW5nZXMoQ2hpbGRyZW5DaGFuZ2VkKTsKICAgICB9
CiAKICAgICBib29sIG5lZWRUaWxlZExheWVyID0gcmVxdWlyZXNUaWxlZExheWVyKHBhZ2VTY2Fs
ZUZhY3Rvcik7CkBAIC0xNzA2LDcgKzE3MjIsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6Y29t
bWl0TGF5ZXJDaGFuZ2VzCiAKICAgICAvLyBFbnN1cmUgdGhhdCB3ZSBjYXAgbGF5ZXIgZGVwdGgg
aW4gY29tbWl0TGF5ZXJDaGFuZ2VzQWZ0ZXJTdWJsYXllcnMoKS4KICAgICBpZiAoY29tbWl0U3Rh
dGUudHJlZURlcHRoID4gY01heExheWVyVHJlZURlcHRoKQotICAgICAgICBtX3VuY29tbWl0dGVk
Q2hhbmdlcyB8PSBDaGlsZHJlbkNoYW5nZWQ7CisgICAgICAgIGFkZFVuY29tbWl0dGVkQ2hhbmdl
cyhDaGlsZHJlbkNoYW5nZWQpOwogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6Y29tbWl0TGF5
ZXJDaGFuZ2VzQWZ0ZXJTdWJsYXllcnMoQ29tbWl0U3RhdGUmIGNvbW1pdFN0YXRlKQpAQCAtMjEx
Niw3ICsyMTMyLDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OmVuc3VyZVN0cnVjdHVyYWxMYQog
ICAgICAgICAgICAgLy8gUmVsZWFzZSB0aGUgc3RydWN0dXJhbCBsYXllci4KICAgICAgICAgICAg
IG1fc3RydWN0dXJhbExheWVyID0gbnVsbHB0cjsKIAotICAgICAgICAgICAgbV91bmNvbW1pdHRl
ZENoYW5nZXMgfD0gc3RydWN0dXJhbExheWVyQ2hhbmdlRmxhZ3M7CisgICAgICAgICAgICBhZGRV
bmNvbW1pdHRlZENoYW5nZXMoc3RydWN0dXJhbExheWVyQ2hhbmdlRmxhZ3MpOwogICAgICAgICB9
CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yMTQ0LDcgKzIxNjAsNyBAQCB2b2lkIEdyYXBo
aWNzTGF5ZXJDQTo6ZW5zdXJlU3RydWN0dXJhbExhCiAgICAgaWYgKCFzdHJ1Y3R1cmFsTGF5ZXJD
aGFuZ2VkKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgbV91bmNvbW1pdHRlZENoYW5nZXMg
fD0gc3RydWN0dXJhbExheWVyQ2hhbmdlRmxhZ3M7CisgICAgYWRkVW5jb21taXR0ZWRDaGFuZ2Vz
KHN0cnVjdHVyYWxMYXllckNoYW5nZUZsYWdzKTsKIAogICAgIC8vIFdlJ3ZlIGNoYW5nZWQgdGhl
IGxheWVyIHRoYXQgb3VyIHBhcmVudCBhZGRlZCB0byBpdHMgc3VibGF5ZXIgbGlzdCwgc28gdGVs
bCBpdCB0byB1cGRhdGUKICAgICAvLyBzdWJsYXllcnMgYWdhaW4gaW4gaXRzIGNvbW1pdExheWVy
Q2hhbmdlc0FmdGVyU3VibGF5ZXJzKCkuCkBAIC0zNjE1LDcgKzM2MzEsNyBAQCB2b2lkIEdyYXBo
aWNzTGF5ZXJDQTo6Y2hhbmdlTGF5ZXJUeXBlVG8oCiAgICAgICAgIG9sZExheWVyLT5zdXBlcmxh
eWVyKCktPnJlcGxhY2VTdWJsYXllcigqb2xkTGF5ZXIsICptX2xheWVyKTsKICAgICB9CiAKLSAg
ICBtX3VuY29tbWl0dGVkQ2hhbmdlcyB8PSBDaGlsZHJlbkNoYW5nZWQKKyAgICBhZGRVbmNvbW1p
dHRlZENoYW5nZXMoQ2hpbGRyZW5DaGFuZ2VkCiAgICAgICAgIHwgR2VvbWV0cnlDaGFuZ2VkCiAg
ICAgICAgIHwgVHJhbnNmb3JtQ2hhbmdlZAogICAgICAgICB8IENoaWxkcmVuVHJhbnNmb3JtQ2hh
bmdlZApAQCAtMzYzMSwxMCArMzY0NywxMCBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6Y2hhbmdl
TGF5ZXJUeXBlVG8oCiAgICAgICAgIHwgTWFza0xheWVyQ2hhbmdlZAogICAgICAgICB8IE9wYWNp
dHlDaGFuZ2VkCiAgICAgICAgIHwgTmFtZUNoYW5nZWQKLSAgICAgICAgfCBEZWJ1Z0luZGljYXRv
cnNDaGFuZ2VkOworICAgICAgICB8IERlYnVnSW5kaWNhdG9yc0NoYW5nZWQpOwogICAgIAogICAg
IGlmIChpc1RpbGVkTGF5ZXIpCi0gICAgICAgIG1fdW5jb21taXR0ZWRDaGFuZ2VzIHw9IENvdmVy
YWdlUmVjdENoYW5nZWQ7CisgICAgICAgIGFkZFVuY29tbWl0dGVkQ2hhbmdlcyhDb3ZlcmFnZVJl
Y3RDaGFuZ2VkKTsKIAogICAgIG1vdmVBbmltYXRpb25zKG9sZExheWVyLmdldCgpLCBtX2xheWVy
LmdldCgpKTsKICAgICAKQEAgLTQwMDgsMTIgKzQwMjQsMzMgQEAgYm9vbCBHcmFwaGljc0xheWVy
Q0E6OmNhblRocm90dGxlTGF5ZXJGbAogICAgIHJldHVybiAhKG1fdW5jb21taXR0ZWRDaGFuZ2Vz
ICYgVGlsZXNBZGRlZCk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjphZGRVbmNvbW1pdHRl
ZENoYW5nZXMoTGF5ZXJDaGFuZ2VGbGFncyBmbGFncykKK3sKKyAgICBtX3VuY29tbWl0dGVkQ2hh
bmdlcyB8PSBmbGFnczsKKworICAgIGlmIChtX2lzQ29tbWl0dGluZ0NoYW5nZXMpCisgICAgICAg
IHJldHVybjsKKworICAgIGZvciAoYXV0byogYW5jZXN0b3IgPSBwYXJlbnQoKTsgYW5jZXN0b3I7
IGFuY2VzdG9yID0gYW5jZXN0b3ItPnBhcmVudCgpKSB7CisgICAgICAgIGF1dG8mIGFuY2VzdG9y
Q0EgPSBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVyQ0EmPigqYW5jZXN0b3IpOworICAgICAgICBB
U1NFUlQoIWFuY2VzdG9yQ0EubV9pc0NvbW1pdHRpbmdDaGFuZ2VzKTsKKyAgICAgICAgaWYgKGFu
Y2VzdG9yQ0EuaGFzRGVzY2VuZGFudHNXaXRoVW5jb21taXR0ZWRDaGFuZ2VzKCkpCisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIGFuY2VzdG9yQ0Euc2V0SGFzRGVzY2VuZGFudHNXaXRoVW5j
b21taXR0ZWRDaGFuZ2VzKHRydWUpOworICAgIH0KK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6
OnNldEhhc0Rlc2NlbmRhbnRzV2l0aFVuY29tbWl0dGVkQ2hhbmdlcyhib29sIHZhbHVlKQorewor
ICAgIG1faGFzRGVzY2VuZGFudHNXaXRoVW5jb21taXR0ZWRDaGFuZ2VzID0gdmFsdWU7Cit9CisK
IHZvaWQgR3JhcGhpY3NMYXllckNBOjpub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoTGF5ZXJDaGFu
Z2VGbGFncyBmbGFncywgU2NoZWR1bGVGbHVzaE9yTm90IHNjaGVkdWxlRmx1c2gpCiB7CiAgICAg
Ym9vbCBoYWRVbmNvbW1pdHRlZENoYW5nZXMgPSAhIW1fdW5jb21taXR0ZWRDaGFuZ2VzOwogICAg
IGJvb2wgb2xkQ2FuVGhyb3R0bGVMYXllckZsdXNoID0gY2FuVGhyb3R0bGVMYXllckZsdXNoKCk7
CiAKLSAgICBtX3VuY29tbWl0dGVkQ2hhbmdlcyB8PSBmbGFnczsKKyAgICBhZGRVbmNvbW1pdHRl
ZENoYW5nZXMoZmxhZ3MpOwogCiAgICAgaWYgKHNjaGVkdWxlRmx1c2ggPT0gU2NoZWR1bGVGbHVz
aCkgewogICAgICAgICBib29sIG5lZWRzRmx1c2ggPSAhaGFkVW5jb21taXR0ZWRDaGFuZ2VzIHx8
IG9sZENhblRocm90dGxlTGF5ZXJGbHVzaCAhPSBjYW5UaHJvdHRsZUxheWVyRmx1c2goKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBo
aWNzTGF5ZXJDQS5oCShyZXZpc2lvbiAyMTUyNjIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaAkod29ya2luZyBjb3B5KQpAQCAtMTUyLDYg
KzE1Miw3IEBAIHB1YmxpYzoKIAogICAgIHN0cnVjdCBDb21taXRTdGF0ZSB7CiAgICAgICAgIGlu
dCB0cmVlRGVwdGggeyAwIH07CisgICAgICAgIGJvb2wgYW5jZXN0b3JIYWRDaGFuZ2VzIHsgZmFs
c2UgfTsKICAgICAgICAgYm9vbCBhbmNlc3Rvckhhc1RyYW5zZm9ybUFuaW1hdGlvbiB7IGZhbHNl
IH07CiAgICAgICAgIGJvb2wgYW5jZXN0b3JJc1ZpZXdwb3J0Q29uc3RyYWluZWQgeyBmYWxzZSB9
OwogICAgIH07CkBAIC0xNjQsNiArMTY1LDggQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBP
UlQgVGlsZWRCYWNraW5nKiB0aWxlZEJhY2tpbmcoKSBjb25zdCBvdmVycmlkZTsKIAorICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0U2Nyb2xsUG9zaXRpb25DaGFuZ2VkKCkgb3ZlcnJpZGU7CisK
IHByb3RlY3RlZDoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE9wYWNpdHlJbnRlcm5hbChm
bG9hdCkgb3ZlcnJpZGU7CiAgICAgCkBAIC00OTQsOCArNDk3LDEyIEBAIHByaXZhdGU6CiAgICAg
ICAgIFNoYXBlQ2hhbmdlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgMzYs
CiAgICAgICAgIFdpbmRSdWxlQ2hhbmdlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IDFMTFUg
PDwgMzcsCiAgICAgICAgIFVzZXJJbnRlcmFjdGlvbkVuYWJsZWRDaGFuZ2VkICAgICAgICAgICA9
IDFMTFUgPDwgMzgsCisgICAgICAgIFNjcm9sbFBvc2l0aW9uQ2hhbmdlZCAgICAgICAgICAgICAg
ICAgICA9IDFMTFUgPDwgMzksCiAgICAgfTsKICAgICB0eXBlZGVmIHVpbnQ2NF90IExheWVyQ2hh
bmdlRmxhZ3M7CisgICAgdm9pZCBhZGRVbmNvbW1pdHRlZENoYW5nZXMoTGF5ZXJDaGFuZ2VGbGFn
cyk7CisgICAgYm9vbCBoYXNEZXNjZW5kYW50c1dpdGhVbmNvbW1pdHRlZENoYW5nZXMoKSBjb25z
dCB7IHJldHVybiBtX2hhc0Rlc2NlbmRhbnRzV2l0aFVuY29tbWl0dGVkQ2hhbmdlczsgfQorICAg
IHZvaWQgc2V0SGFzRGVzY2VuZGFudHNXaXRoVW5jb21taXR0ZWRDaGFuZ2VzKGJvb2wpOwogICAg
IGVudW0gU2NoZWR1bGVGbHVzaE9yTm90IHsgU2NoZWR1bGVGbHVzaCwgRG9udFNjaGVkdWxlRmx1
c2ggfTsKICAgICB2b2lkIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChMYXllckNoYW5nZUZsYWdz
LCBTY2hlZHVsZUZsdXNoT3JOb3QgPSBTY2hlZHVsZUZsdXNoKTsKICAgICB2b2lkIG5vdGVTdWJs
YXllcnNDaGFuZ2VkKFNjaGVkdWxlRmx1c2hPck5vdCA9IFNjaGVkdWxlRmx1c2gpOwpAQCAtNTk2
LDYgKzYwMyw3IEBAIHByaXZhdGU6CiAjZWxzZQogICAgIExheWVyQ2hhbmdlRmxhZ3MgbV91bmNv
bW1pdHRlZENoYW5nZXMgeyBDb3ZlcmFnZVJlY3RDaGFuZ2VkIH07CiAjZW5kaWYKKyAgICBib29s
IG1faGFzRGVzY2VuZGFudHNXaXRoVW5jb21taXR0ZWRDaGFuZ2VzIHsgZmFsc2UgfTsKIAogICAg
IGJvb2wgbV9pc0NvbW1pdHRpbmdDaGFuZ2VzIHsgZmFsc2UgfTsKIH07CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAkocmV2
aXNpb24gMjE1MzQ3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29t
cG9zaXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3NTYsOCArMTc1Niw3IEBAIHZvaWQgUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjpmcmFtZVZpZXdEaWQKICAgICAvLyBJZiB0aGVyZSdzIGEgc2Ny
b2xsaW5nIGNvb3JkaW5hdG9yIHRoYXQgbWFuYWdlcyBzY3JvbGxpbmcgZm9yIHRoaXMgZnJhbWUg
dmlldywKICAgICAvLyBpdCB3aWxsIGFsc28gbWFuYWdlIHVwZGF0aW5nIHRoZSBzY3JvbGwgbGF5
ZXIgcG9zaXRpb24uCiAgICAgaWYgKGhhc0Nvb3JkaW5hdGVkU2Nyb2xsaW5nKCkpIHsKLSAgICAg
ICAgLy8gV2UgaGF2ZSB0byBzY2hlZHVsZSBhIGZsdXNoIGluIG9yZGVyIGZvciB0aGUgbWFpbiBU
aWxlZEJhY2tpbmcgdG8gdXBkYXRlIGl0cyB0aWxlIGNvdmVyYWdlLgotICAgICAgICBzY2hlZHVs
ZUxheWVyRmx1c2hOb3coKTsKKyAgICAgICAgbV9zY3JvbGxMYXllci0+c2V0U2Nyb2xsUG9zaXRp
b25DaGFuZ2VkKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>307266</attachid>
            <date>2017-04-17 06:22:27 -0700</date>
            <delta_ts>2017-04-17 06:40:35 -0700</delta_ts>
            <desc>patch</desc>
            <filename>graphicslayerca-commit-dirty-5.patch</filename>
            <type>text/plain</type>
            <size>15249</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNTM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBACisyMDE3LTA0LTE2ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBHcmFwaGljc0xheWVyQ0E6OnJl
Y3Vyc2l2ZUNvbW1pdENoYW5nZXMgc2hvdWxkIG5vdCBkZXNjZW5kIGludG8gc3VidHJlZXMgd2l0
aG91dCBjaGFuZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzA4NTEKKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAg
ICAgV2l0aCBsb3RzIG9mIGxheWVycyB0aGlzIGNhbiBiZSB2ZXJ5IHNsb3cgYXMgaXQgYWx3YXlz
IHRyYXZlcnNlcyB0aGUgZW50aXJlIGxheWVyIHRyZWUuCisgICAgICAgIEZvciBleGFtcGxlIEdJ
RiBhbmltYXRpb25zIG9uIHR1bWJsci5jb20gdHJpZ2dlciBleHBlbnNpdmUgY29tbWl0cyB3aGVy
ZSBhbG1vc3Qgbm90aGluZyBjaGFuZ2VzLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBtX2hh
c0Rlc2NlbmRhbnRzV2l0aFVuY29tbWl0dGVkQ2hhbmdlcyBiaXQgdG8gR3JhcGhpY3NMYXllckNB
LiBXaXRoIHRoaXMKKyAgICAgICAgd2UgY2FuIGF2b2lkIGRlc2NlbmRpbmcgdG8gYnJhbmNoZXMg
d2l0aG91dCBjaGFuZ2VzIHdoZW4gY29tbWl0dGluZy4KKworICAgICAgICBUaGlzIHBhdGNoIGVu
YWJsZWQgdGhlIG9wdGltaXphdGlvbiBvbiBub24taU9TIHBsYXRmb3Jtcy4KKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0xheWVyQ0E6OkdyYXBoaWNzTGF5ZXJDQTo6c3luY1Bvc2l0aW9uKToKKwor
ICAgICAgICAgICAgU2V0IFBvc2l0aW9uQ2hhbmdlZCBmbGFnIHdoZW4gc3luY2luZyBsYXllciBw
b3NpdGlvbi4gVGhpcyBmbGFnIGRvZXMgbm90aGluZyBleGNlcHQgbWFrZXMKKyAgICAgICAgICAg
IG5leHQgY29tbWl0IHRvIHVwZGF0ZSB0aGUgY292ZXJhZ2UgcmVjdCAoc28gdGlsaW5nIGdldHMg
dXBkYXRlZCkuCisKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6c2V0VmlzaWJs
ZUFuZENvdmVyYWdlUmVjdHMpOgorCisgICAgICAgICAgICBEbyBhbGwgc2V0dGluZyBvZiBtX3Vu
Y29tbWl0dGVkQ2hhbmdlcyBiaXRzIHZpYSBhZGRVbmNvbW1pdHRlZENoYW5nZXMgZnVuY3Rpb24u
CisKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6cmVjdXJzaXZlQ29tbWl0Q2hh
bmdlcyk6CisKKyAgICAgICAgICAgIEJhaWwgb3V0IGlmIG5laXRoZXIgdGhlIGN1cnJlbnQgbGF5
ZXIgbm9yIGFueSBvZiBpdHMgZGVzY2VuZGFudHMgaGF2ZSBhbnkgdW5jb21taXRlZCBjaGFuZ2Vz
CisgICAgICAgICAgICBhbmQgbm9uZSBvZiB0aGUgYW5jZXN0b3JzIGhhZCBjaGFuZ2VzLgorCisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OmNvbW1pdExheWVyQ2hhbmdlc0JlZm9y
ZVN1YmxheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OmVuc3VyZVN0
cnVjdHVyYWxMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OmNoYW5n
ZUxheWVyVHlwZVRvKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6YWRkVW5j
b21taXR0ZWRDaGFuZ2VzKToKKworICAgICAgICAgICAgU2V0IG1faGFzRGVzY2VuZGFudHNXaXRo
VW5jb21taXR0ZWRDaGFuZ2VzIGJpdCBpbiBhbmNlc3RvcnMgd2hlbiBtdXRhdGluZyBtX3VuY29t
bWl0dGVkQ2hhbmdlcy4KKworICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpub3Rl
TGF5ZXJQcm9wZXJ0eUNoYW5nZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dy
YXBoaWNzTGF5ZXJDQS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9y
OjpmcmFtZVZpZXdEaWRTY3JvbGwpOgorCisgICAgICAgICAgICBUZWxsIHRoZSBzY3JvbGxpbmcg
bGF5ZXIgdGhhdCBpdCBuZWVkcyB0byByZWNvbXB1dGUgY292ZXJhZ2UuCisgICAgICAgICAgICBU
aGlzIGFsc28gc2NoZWR1bGVzIGEgbGF5ZXIgZmx1c2ggc28gbm8gbmVlZCB0byBkbyB0aGF0IHNl
cGFyYXRlbHkuCisKIDIwMTctMDQtMTUgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5A
d2Via2l0Lm9yZz4KIAogICAgICAgICBGaXggV2luZG93cyBidWlsZCBhZnRlciByMjE1Mzk2LgpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5
ZXIuaAkocmV2aXNpb24gMjE1Mzk4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NMYXllci5oCSh3b3JraW5nIGNvcHkpCkBAIC01MjUsNyArNTI1LDggQEAgcHVi
bGljOgogICAgIC8vIFNvbWUgY29tcG9zaXRpbmcgc3lzdGVtcyBtYXkgZG8gaW50ZXJuYWwgYmF0
Y2hpbmcgdG8gc3luY2hyb25pemUgY29tcG9zaXRpbmcgdXBkYXRlcwogICAgIC8vIHdpdGggdXBk
YXRlcyBkcmF3biBpbnRvIHRoZSB3aW5kb3cuIFRoZXNlIG1ldGhvZHMgZmx1c2ggaW50ZXJuYWwg
YmF0Y2hlZCBzdGF0ZSBvbiB0aGlzIGxheWVyCiAgICAgLy8gYW5kIGRlc2NlbmRhbnQgbGF5ZXJz
LCBhbmQgdGhpcyBsYXllciBvbmx5LgotICAgIHZpcnR1YWwgdm9pZCBmbHVzaENvbXBvc2l0aW5n
U3RhdGUoY29uc3QgRmxvYXRSZWN0JiAvKiBjbGlwUmVjdCAqLykgeyB9CisgICAgZW51bSBjbGFz
cyBGbHVzaFNjb3BlIHsgVW5jb21taXR0ZWQsIEFsbCB9OworICAgIHZpcnR1YWwgdm9pZCBmbHVz
aENvbXBvc2l0aW5nU3RhdGUoY29uc3QgRmxvYXRSZWN0JiAvKiBjbGlwUmVjdCAqLywgRmx1c2hT
Y29wZSA9IEZsdXNoU2NvcGU6OkFsbCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGZsdXNoQ29tcG9z
aXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKSB7IH0KIAogICAgIC8vIElmIHRoZSBleHBvc2Vk
IHJlY3Qgb2YgdGhpcyBsYXllciBjaGFuZ2VzLCByZXR1cm5zIHRydWUgaWYgdGhpcyBvciBkZXNj
ZW5kYW50IGxheWVycyBuZWVkIGEgZmx1c2gsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAJKHJldmlzaW9u
IDIxNTM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNz
TGF5ZXJDQS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4MSw2ICs1ODEsMTYgQEAgdm9pZCBHcmFw
aGljc0xheWVyQ0E6OnNldFBvc2l0aW9uKGNvbnN0IAogICAgIG5vdGVMYXllclByb3BlcnR5Q2hh
bmdlZChHZW9tZXRyeUNoYW5nZWQpOwogfQogCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c3luY1Bv
c2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KQoreworICAgIGlmIChwb2ludCA9PSBtX3Bv
c2l0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBHcmFwaGljc0xheWVyOjpzeW5jUG9zaXRp
b24ocG9pbnQpOworICAgIC8vIEVuc3VyZSBmdXR1cmUgZmx1c2hlcyB3aWxsIHJlY29tcHV0ZSB0
aGUgY292ZXJhZ2UgcmVjdCBhbmQgdXBkYXRlIHRpbGluZy4KKyAgICBub3RlTGF5ZXJQcm9wZXJ0
eUNoYW5nZWQoUG9zaXRpb25DaGFuZ2VkLCBEb250U2NoZWR1bGVGbHVzaCk7Cit9CisKIHZvaWQg
R3JhcGhpY3NMYXllckNBOjpzZXRBbmNob3JQb2ludChjb25zdCBGbG9hdFBvaW50M0QmIHBvaW50
KQogewogICAgIGlmIChwb2ludCA9PSBtX2FuY2hvclBvaW50KQpAQCAtMTE2NCwxMiArMTE3NCwx
NyBAQCBGbG9hdFBvaW50IEdyYXBoaWNzTGF5ZXJDQTo6Y29tcHV0ZVBvc2l0CiAgICAgcmV0dXJu
IEZsb2F0UG9pbnQoKTsKIH0KIAotdm9pZCBHcmFwaGljc0xheWVyQ0E6OmZsdXNoQ29tcG9zaXRp
bmdTdGF0ZShjb25zdCBGbG9hdFJlY3QmIGNsaXBSZWN0KQordm9pZCBHcmFwaGljc0xheWVyQ0E6
OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZShjb25zdCBGbG9hdFJlY3QmIHZpc2libGVSZWN0LCBGbHVz
aFNjb3BlIGZsdXNoU2NvcGUpCiB7Ci0gICAgVHJhbnNmb3JtU3RhdGUgc3RhdGUoVHJhbnNmb3Jt
U3RhdGU6OlVuYXBwbHlJbnZlcnNlVHJhbnNmb3JtRGlyZWN0aW9uLCBGbG9hdFF1YWQoY2xpcFJl
Y3QpKTsKLSAgICBGbG9hdFF1YWQgY292ZXJhZ2VRdWFkKGNsaXBSZWN0KTsKKyAgICBUcmFuc2Zv
cm1TdGF0ZSBzdGF0ZShUcmFuc2Zvcm1TdGF0ZTo6VW5hcHBseUludmVyc2VUcmFuc2Zvcm1EaXJl
Y3Rpb24sIEZsb2F0UXVhZCh2aXNpYmxlUmVjdCkpOworICAgIEZsb2F0UXVhZCBjb3ZlcmFnZVF1
YWQodmlzaWJsZVJlY3QpOwogICAgIHN0YXRlLnNldFNlY29uZGFyeVF1YWQoJmNvdmVyYWdlUXVh
ZCk7Ci0gICAgcmVjdXJzaXZlQ29tbWl0Q2hhbmdlcyhDb21taXRTdGF0ZSgpLCBzdGF0ZSk7CisK
KyAgICBDb21taXRTdGF0ZSBjb21taXRTdGF0ZTsKKyAgICBjb21taXRTdGF0ZS5hbmNlc3Rvckhh
ZENoYW5nZXMgPSB2aXNpYmxlUmVjdCAhPSBtX3ByZXZpb3VzQ29tbWl0dGVkVmlzaWJsZVJlY3Qg
fHwgZmx1c2hTY29wZSA9PSBGbHVzaFNjb3BlOjpBbGw7CisgICAgbV9wcmV2aW91c0NvbW1pdHRl
ZFZpc2libGVSZWN0ID0gdmlzaWJsZVJlY3Q7CisKKyAgICByZWN1cnNpdmVDb21taXRDaGFuZ2Vz
KGNvbW1pdFN0YXRlLCBzdGF0ZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllckNBOjpmbHVzaENv
bXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KCkKQEAgLTEzNTQsMTcgKzEzNjksMTcgQEAg
dm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldFZpc2libGVBbmRDb3ZlcgogICAgIC8vIEZJWE1FOiB3
ZSBuZWVkIHRvIHRha2UgcmVmbGVjdGlvbnMgaW50byBhY2NvdW50IHdoZW4gZGV0ZXJtaW5pbmcg
d2hldGhlciB0aGlzIGxheWVyIGludGVyc2VjdHMgdGhlIGNvdmVyYWdlIHJlY3QuCiAgICAgYm9v
bCBpbnRlcnNlY3RzQ292ZXJhZ2VSZWN0ID0gaXNWaWV3cG9ydENvbnN0cmFpbmVkIHx8IHJlY3Rz
LmNvdmVyYWdlUmVjdC5pbnRlcnNlY3RzKEZsb2F0UmVjdChtX2JvdW5kc09yaWdpbiwgc2l6ZSgp
KSk7CiAgICAgaWYgKGludGVyc2VjdHNDb3ZlcmFnZVJlY3QgIT0gbV9pbnRlcnNlY3RzQ292ZXJh
Z2VSZWN0KSB7Ci0gICAgICAgIG1fdW5jb21taXR0ZWRDaGFuZ2VzIHw9IENvdmVyYWdlUmVjdENo
YW5nZWQ7CisgICAgICAgIGFkZFVuY29tbWl0dGVkQ2hhbmdlcyhDb3ZlcmFnZVJlY3RDaGFuZ2Vk
KTsKICAgICAgICAgbV9pbnRlcnNlY3RzQ292ZXJhZ2VSZWN0ID0gaW50ZXJzZWN0c0NvdmVyYWdl
UmVjdDsKICAgICB9CiAKICAgICBpZiAodmlzaWJsZVJlY3RDaGFuZ2VkKSB7Ci0gICAgICAgIG1f
dW5jb21taXR0ZWRDaGFuZ2VzIHw9IENvdmVyYWdlUmVjdENoYW5nZWQ7CisgICAgICAgIGFkZFVu
Y29tbWl0dGVkQ2hhbmdlcyhDb3ZlcmFnZVJlY3RDaGFuZ2VkKTsKICAgICAgICAgbV92aXNpYmxl
UmVjdCA9IHJlY3RzLnZpc2libGVSZWN0OwogICAgIH0KIAogICAgIGlmIChjb3ZlcmFnZVJlY3RD
aGFuZ2VkKSB7Ci0gICAgICAgIG1fdW5jb21taXR0ZWRDaGFuZ2VzIHw9IENvdmVyYWdlUmVjdENo
YW5nZWQ7CisgICAgICAgIGFkZFVuY29tbWl0dGVkQ2hhbmdlcyhDb3ZlcmFnZVJlY3RDaGFuZ2Vk
KTsKICAgICAgICAgbV9jb3ZlcmFnZVJlY3QgPSByZWN0cy5jb3ZlcmFnZVJlY3Q7CiAgICAgfQog
fQpAQCAtMTM3Myw4ICsxMzg4LDEyIEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRWaXNpYmxl
QW5kQ292ZXIKIC8vIGFuaW1hdGlvbiB0aGF0IGNvbnRyaWJ1dGVzIG1heGltYWxseSB0byB0aGUg
c2NhbGUgKG9uIGV2ZXJ5IGxheWVyIHdpdGggYW5pbWF0aW9ucyBkb3duIHRoZSBoaWVyYXJjaHkp
Lgogdm9pZCBHcmFwaGljc0xheWVyQ0E6OnJlY3Vyc2l2ZUNvbW1pdENoYW5nZXMoY29uc3QgQ29t
bWl0U3RhdGUmIGNvbW1pdFN0YXRlLCBjb25zdCBUcmFuc2Zvcm1TdGF0ZSYgc3RhdGUsIGZsb2F0
IHBhZ2VTY2FsZUZhY3RvciwgY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb25SZWxhdGl2ZVRvQmFz
ZSwgYm9vbCBhZmZlY3RlZEJ5UGFnZVNjYWxlKQogeworICAgIGlmICghY29tbWl0U3RhdGUuYW5j
ZXN0b3JIYWRDaGFuZ2VzICYmICFtX3VuY29tbWl0dGVkQ2hhbmdlcyAmJiAhaGFzRGVzY2VuZGFu
dHNXaXRoVW5jb21taXR0ZWRDaGFuZ2VzKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIFRyYW5z
Zm9ybVN0YXRlIGxvY2FsU3RhdGUgPSBzdGF0ZTsKICAgICBDb21taXRTdGF0ZSBjaGlsZENvbW1p
dFN0YXRlID0gY29tbWl0U3RhdGU7CisKICAgICBib29sIGFmZmVjdGVkQnlUcmFuc2Zvcm1Bbmlt
YXRpb24gPSBjb21taXRTdGF0ZS5hbmNlc3Rvckhhc1RyYW5zZm9ybUFuaW1hdGlvbjsKIAogICAg
IGJvb2wgYWNjdW11bGF0ZVRyYW5zZm9ybSA9IGFjY3VtdWxhdGVzVHJhbnNmb3JtKCp0aGlzKTsK
QEAgLTE0MTEsNyArMTQzMCwxMSBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6cmVjdXJzaXZlQ29t
bWl0Q2hhCiAjZW5kaWYKIAogICAgIGJvb2wgaGFkQ2hhbmdlcyA9IG1fdW5jb21taXR0ZWRDaGFu
Z2VzOwotICAgIAorCisgICAgLy8gRklYTUU6IFRoaXMgY291bGQgYmUgbW9yZSBmaW5lLWdyYWlu
ZWQuIE9ubHkgc29tZSB0eXBlcyBvZiBjaGFuZ2VzIGhhdmUgaW1wYWN0IG9uIHN1YmxheWVycy4K
KyAgICBpZiAoIWNoaWxkQ29tbWl0U3RhdGUuYW5jZXN0b3JIYWRDaGFuZ2VzKQorICAgICAgICBj
aGlsZENvbW1pdFN0YXRlLmFuY2VzdG9ySGFkQ2hhbmdlcyA9IGhhZENoYW5nZXM7CisKICAgICBp
ZiAoYXBwbGllc1BhZ2VTY2FsZSgpKSB7CiAgICAgICAgIHBhZ2VTY2FsZUZhY3RvciA9IHRoaXMt
PnBhZ2VTY2FsZUZhY3RvcigpOwogICAgICAgICBhZmZlY3RlZEJ5UGFnZVNjYWxlID0gdHJ1ZTsK
QEAgLTE0NTAsNiArMTQ3Myw4IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpyZWN1cnNpdmVDb21t
aXRDaGEKICAgICBpZiAoR3JhcGhpY3NMYXllckNBKiBtYXNrTGF5ZXIgPSBkb3duY2FzdDxHcmFw
aGljc0xheWVyQ0E+KG1fbWFza0xheWVyKSkKICAgICAgICAgbWFza0xheWVyLT5jb21taXRMYXll
ckNoYW5nZXNBZnRlclN1YmxheWVycyhjaGlsZENvbW1pdFN0YXRlKTsKIAorICAgIHNldEhhc0Rl
c2NlbmRhbnRzV2l0aFVuY29tbWl0dGVkQ2hhbmdlcyhmYWxzZSk7CisKICAgICBib29sIGhhZERp
cnR5UmVjdHMgPSBtX3VuY29tbWl0dGVkQ2hhbmdlcyAmIERpcnR5UmVjdHNDaGFuZ2VkOwogICAg
IGNvbW1pdExheWVyQ2hhbmdlc0FmdGVyU3VibGF5ZXJzKGNoaWxkQ29tbWl0U3RhdGUpOwogCkBA
IC0xNTY0LDcgKzE1ODksNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6Y29tbWl0TGF5ZXJDaGFu
Z2VzCiAgICAgaWYgKCFtX3VuY29tbWl0dGVkQ2hhbmdlcykgewogICAgICAgICAvLyBFbnN1cmUg
dGhhdCB3ZSBjYXAgbGF5ZXIgZGVwdGggaW4gY29tbWl0TGF5ZXJDaGFuZ2VzQWZ0ZXJTdWJsYXll
cnMoKS4KICAgICAgICAgaWYgKGNvbW1pdFN0YXRlLnRyZWVEZXB0aCA+IGNNYXhMYXllclRyZWVE
ZXB0aCkKLSAgICAgICAgICAgIG1fdW5jb21taXR0ZWRDaGFuZ2VzIHw9IENoaWxkcmVuQ2hhbmdl
ZDsKKyAgICAgICAgICAgIGFkZFVuY29tbWl0dGVkQ2hhbmdlcyhDaGlsZHJlbkNoYW5nZWQpOwog
ICAgIH0KIAogICAgIGJvb2wgbmVlZFRpbGVkTGF5ZXIgPSByZXF1aXJlc1RpbGVkTGF5ZXIocGFn
ZVNjYWxlRmFjdG9yKTsKQEAgLTE3MDYsNyArMTczMSw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNB
Ojpjb21taXRMYXllckNoYW5nZXMKIAogICAgIC8vIEVuc3VyZSB0aGF0IHdlIGNhcCBsYXllciBk
ZXB0aCBpbiBjb21taXRMYXllckNoYW5nZXNBZnRlclN1YmxheWVycygpLgogICAgIGlmIChjb21t
aXRTdGF0ZS50cmVlRGVwdGggPiBjTWF4TGF5ZXJUcmVlRGVwdGgpCi0gICAgICAgIG1fdW5jb21t
aXR0ZWRDaGFuZ2VzIHw9IENoaWxkcmVuQ2hhbmdlZDsKKyAgICAgICAgYWRkVW5jb21taXR0ZWRD
aGFuZ2VzKENoaWxkcmVuQ2hhbmdlZCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllckNBOjpjb21t
aXRMYXllckNoYW5nZXNBZnRlclN1YmxheWVycyhDb21taXRTdGF0ZSYgY29tbWl0U3RhdGUpCkBA
IC0yMTE2LDcgKzIxNDEsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6ZW5zdXJlU3RydWN0dXJh
bExhCiAgICAgICAgICAgICAvLyBSZWxlYXNlIHRoZSBzdHJ1Y3R1cmFsIGxheWVyLgogICAgICAg
ICAgICAgbV9zdHJ1Y3R1cmFsTGF5ZXIgPSBudWxscHRyOwogCi0gICAgICAgICAgICBtX3VuY29t
bWl0dGVkQ2hhbmdlcyB8PSBzdHJ1Y3R1cmFsTGF5ZXJDaGFuZ2VGbGFnczsKKyAgICAgICAgICAg
IGFkZFVuY29tbWl0dGVkQ2hhbmdlcyhzdHJ1Y3R1cmFsTGF5ZXJDaGFuZ2VGbGFncyk7CiAgICAg
ICAgIH0KICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTIxNDQsNyArMjE2OSw3IEBAIHZvaWQg
R3JhcGhpY3NMYXllckNBOjplbnN1cmVTdHJ1Y3R1cmFsTGEKICAgICBpZiAoIXN0cnVjdHVyYWxM
YXllckNoYW5nZWQpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBtX3VuY29tbWl0dGVkQ2hh
bmdlcyB8PSBzdHJ1Y3R1cmFsTGF5ZXJDaGFuZ2VGbGFnczsKKyAgICBhZGRVbmNvbW1pdHRlZENo
YW5nZXMoc3RydWN0dXJhbExheWVyQ2hhbmdlRmxhZ3MpOwogCiAgICAgLy8gV2UndmUgY2hhbmdl
ZCB0aGUgbGF5ZXIgdGhhdCBvdXIgcGFyZW50IGFkZGVkIHRvIGl0cyBzdWJsYXllciBsaXN0LCBz
byB0ZWxsIGl0IHRvIHVwZGF0ZQogICAgIC8vIHN1YmxheWVycyBhZ2FpbiBpbiBpdHMgY29tbWl0
TGF5ZXJDaGFuZ2VzQWZ0ZXJTdWJsYXllcnMoKS4KQEAgLTM2MTUsNyArMzY0MCw3IEBAIHZvaWQg
R3JhcGhpY3NMYXllckNBOjpjaGFuZ2VMYXllclR5cGVUbygKICAgICAgICAgb2xkTGF5ZXItPnN1
cGVybGF5ZXIoKS0+cmVwbGFjZVN1YmxheWVyKCpvbGRMYXllciwgKm1fbGF5ZXIpOwogICAgIH0K
IAotICAgIG1fdW5jb21taXR0ZWRDaGFuZ2VzIHw9IENoaWxkcmVuQ2hhbmdlZAorICAgIGFkZFVu
Y29tbWl0dGVkQ2hhbmdlcyhDaGlsZHJlbkNoYW5nZWQKICAgICAgICAgfCBHZW9tZXRyeUNoYW5n
ZWQKICAgICAgICAgfCBUcmFuc2Zvcm1DaGFuZ2VkCiAgICAgICAgIHwgQ2hpbGRyZW5UcmFuc2Zv
cm1DaGFuZ2VkCkBAIC0zNjMxLDEwICszNjU2LDEwIEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpj
aGFuZ2VMYXllclR5cGVUbygKICAgICAgICAgfCBNYXNrTGF5ZXJDaGFuZ2VkCiAgICAgICAgIHwg
T3BhY2l0eUNoYW5nZWQKICAgICAgICAgfCBOYW1lQ2hhbmdlZAotICAgICAgICB8IERlYnVnSW5k
aWNhdG9yc0NoYW5nZWQ7CisgICAgICAgIHwgRGVidWdJbmRpY2F0b3JzQ2hhbmdlZCk7CiAgICAg
CiAgICAgaWYgKGlzVGlsZWRMYXllcikKLSAgICAgICAgbV91bmNvbW1pdHRlZENoYW5nZXMgfD0g
Q292ZXJhZ2VSZWN0Q2hhbmdlZDsKKyAgICAgICAgYWRkVW5jb21taXR0ZWRDaGFuZ2VzKENvdmVy
YWdlUmVjdENoYW5nZWQpOwogCiAgICAgbW92ZUFuaW1hdGlvbnMob2xkTGF5ZXIuZ2V0KCksIG1f
bGF5ZXIuZ2V0KCkpOwogICAgIApAQCAtNDAwOCwxMiArNDAzMywzMyBAQCBib29sIEdyYXBoaWNz
TGF5ZXJDQTo6Y2FuVGhyb3R0bGVMYXllckZsCiAgICAgcmV0dXJuICEobV91bmNvbW1pdHRlZENo
YW5nZXMgJiBUaWxlc0FkZGVkKTsKIH0KIAordm9pZCBHcmFwaGljc0xheWVyQ0E6OmFkZFVuY29t
bWl0dGVkQ2hhbmdlcyhMYXllckNoYW5nZUZsYWdzIGZsYWdzKQoreworICAgIG1fdW5jb21taXR0
ZWRDaGFuZ2VzIHw9IGZsYWdzOworCisgICAgaWYgKG1faXNDb21taXR0aW5nQ2hhbmdlcykKKyAg
ICAgICAgcmV0dXJuOworCisgICAgZm9yIChhdXRvKiBhbmNlc3RvciA9IHBhcmVudCgpOyBhbmNl
c3RvcjsgYW5jZXN0b3IgPSBhbmNlc3Rvci0+cGFyZW50KCkpIHsKKyAgICAgICAgYXV0byYgYW5j
ZXN0b3JDQSA9IHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXJDQSY+KCphbmNlc3Rvcik7CisgICAg
ICAgIEFTU0VSVCghYW5jZXN0b3JDQS5tX2lzQ29tbWl0dGluZ0NoYW5nZXMpOworICAgICAgICBp
ZiAoYW5jZXN0b3JDQS5oYXNEZXNjZW5kYW50c1dpdGhVbmNvbW1pdHRlZENoYW5nZXMoKSkKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgYW5jZXN0b3JDQS5zZXRIYXNEZXNjZW5kYW50c1dp
dGhVbmNvbW1pdHRlZENoYW5nZXModHJ1ZSk7CisgICAgfQorfQorCit2b2lkIEdyYXBoaWNzTGF5
ZXJDQTo6c2V0SGFzRGVzY2VuZGFudHNXaXRoVW5jb21taXR0ZWRDaGFuZ2VzKGJvb2wgdmFsdWUp
Cit7CisgICAgbV9oYXNEZXNjZW5kYW50c1dpdGhVbmNvbW1pdHRlZENoYW5nZXMgPSB2YWx1ZTsK
K30KKwogdm9pZCBHcmFwaGljc0xheWVyQ0E6Om5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChMYXll
ckNoYW5nZUZsYWdzIGZsYWdzLCBTY2hlZHVsZUZsdXNoT3JOb3Qgc2NoZWR1bGVGbHVzaCkKIHsK
ICAgICBib29sIGhhZFVuY29tbWl0dGVkQ2hhbmdlcyA9ICEhbV91bmNvbW1pdHRlZENoYW5nZXM7
CiAgICAgYm9vbCBvbGRDYW5UaHJvdHRsZUxheWVyRmx1c2ggPSBjYW5UaHJvdHRsZUxheWVyRmx1
c2goKTsKIAotICAgIG1fdW5jb21taXR0ZWRDaGFuZ2VzIHw9IGZsYWdzOworICAgIGFkZFVuY29t
bWl0dGVkQ2hhbmdlcyhmbGFncyk7CiAKICAgICBpZiAoc2NoZWR1bGVGbHVzaCA9PSBTY2hlZHVs
ZUZsdXNoKSB7CiAgICAgICAgIGJvb2wgbmVlZHNGbHVzaCA9ICFoYWRVbmNvbW1pdHRlZENoYW5n
ZXMgfHwgb2xkQ2FuVGhyb3R0bGVMYXllckZsdXNoICE9IGNhblRocm90dGxlTGF5ZXJGbHVzaCgp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXll
ckNBLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
R3JhcGhpY3NMYXllckNBLmgJKHJldmlzaW9uIDIxNTM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCSh3b3JraW5nIGNvcHkpCkBAIC03
NSw2ICs3NSw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFJlcGxpY2F0
ZWRMYXllcihHcmFwaGljc0xheWVyKikgb3ZlcnJpZGU7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmKSBvdmVycmlkZTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHN5bmNQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50Jikgb3ZlcnJpZGU7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRBbmNob3JQb2ludChjb25zdCBGbG9hdFBvaW50M0Qm
KSBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNpemUoY29uc3QgRmxvYXRT
aXplJikgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRCb3VuZHNPcmlnaW4o
Y29uc3QgRmxvYXRQb2ludCYpIG92ZXJyaWRlOwpAQCAtMTUyLDEyICsxNTMsMTMgQEAgcHVibGlj
OgogCiAgICAgc3RydWN0IENvbW1pdFN0YXRlIHsKICAgICAgICAgaW50IHRyZWVEZXB0aCB7IDAg
fTsKKyAgICAgICAgYm9vbCBhbmNlc3RvckhhZENoYW5nZXMgeyBmYWxzZSB9OwogICAgICAgICBi
b29sIGFuY2VzdG9ySGFzVHJhbnNmb3JtQW5pbWF0aW9uIHsgZmFsc2UgfTsKICAgICAgICAgYm9v
bCBhbmNlc3RvcklzVmlld3BvcnRDb25zdHJhaW5lZCB7IGZhbHNlIH07CiAgICAgfTsKICAgICB2
b2lkIHJlY3Vyc2l2ZUNvbW1pdENoYW5nZXMoY29uc3QgQ29tbWl0U3RhdGUmLCBjb25zdCBUcmFu
c2Zvcm1TdGF0ZSYsIGZsb2F0IHBhZ2VTY2FsZUZhY3RvciA9IDEsIGNvbnN0IEZsb2F0UG9pbnQm
IHBvc2l0aW9uUmVsYXRpdmVUb0Jhc2UgPSBGbG9hdFBvaW50KCksIGJvb2wgYWZmZWN0ZWRCeVBh
Z2VTY2FsZSA9IGZhbHNlKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmx1c2hDb21wb3Np
dGluZ1N0YXRlKGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgZmx1c2hDb21wb3NpdGluZ1N0YXRlKGNvbnN0IEZsb2F0UmVjdCYsIEZsdXNoU2NvcGUp
IG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmx1c2hDb21wb3NpdGluZ1N0YXRl
Rm9yVGhpc0xheWVyT25seSgpIG92ZXJyaWRlOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCB2
aXNpYmxlUmVjdENoYW5nZVJlcXVpcmVzRmx1c2goY29uc3QgRmxvYXRSZWN0JiB2aXNpYmxlUmVj
dCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC00OTQsOCArNDk2LDEyIEBAIHByaXZhdGU6CiAgICAgICAg
IFNoYXBlQ2hhbmdlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgMzYsCiAg
ICAgICAgIFdpbmRSdWxlQ2hhbmdlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwg
MzcsCiAgICAgICAgIFVzZXJJbnRlcmFjdGlvbkVuYWJsZWRDaGFuZ2VkICAgICAgICAgICA9IDFM
TFUgPDwgMzgsCisgICAgICAgIFBvc2l0aW9uQ2hhbmdlZCAgICAgICAgICAgICAgICAgICAgICAg
ICA9IDFMTFUgPDwgMzksCiAgICAgfTsKICAgICB0eXBlZGVmIHVpbnQ2NF90IExheWVyQ2hhbmdl
RmxhZ3M7CisgICAgdm9pZCBhZGRVbmNvbW1pdHRlZENoYW5nZXMoTGF5ZXJDaGFuZ2VGbGFncyk7
CisgICAgYm9vbCBoYXNEZXNjZW5kYW50c1dpdGhVbmNvbW1pdHRlZENoYW5nZXMoKSBjb25zdCB7
IHJldHVybiBtX2hhc0Rlc2NlbmRhbnRzV2l0aFVuY29tbWl0dGVkQ2hhbmdlczsgfQorICAgIHZv
aWQgc2V0SGFzRGVzY2VuZGFudHNXaXRoVW5jb21taXR0ZWRDaGFuZ2VzKGJvb2wpOwogICAgIGVu
dW0gU2NoZWR1bGVGbHVzaE9yTm90IHsgU2NoZWR1bGVGbHVzaCwgRG9udFNjaGVkdWxlRmx1c2gg
fTsKICAgICB2b2lkIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChMYXllckNoYW5nZUZsYWdzLCBT
Y2hlZHVsZUZsdXNoT3JOb3QgPSBTY2hlZHVsZUZsdXNoKTsKICAgICB2b2lkIG5vdGVTdWJsYXll
cnNDaGFuZ2VkKFNjaGVkdWxlRmx1c2hPck5vdCA9IFNjaGVkdWxlRmx1c2gpOwpAQCAtNTg1LDcg
KzU5MSw3IEBAIHByaXZhdGU6CiAgICAgQW5pbWF0aW9uc01hcCBtX3J1bm5pbmdBbmltYXRpb25z
OwogCiAgICAgVmVjdG9yPEZsb2F0UmVjdD4gbV9kaXJ0eVJlY3RzOwotICAgIAorCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdD4gbV9kaXNwbGF5TGlzdDsKIAog
ICAgIEZsb2F0U2l6ZSBtX3BpeGVsQWxpZ25tZW50T2Zmc2V0OwpAQCAtNTk2LDggKzYwMiwxMCBA
QCBwcml2YXRlOgogI2Vsc2UKICAgICBMYXllckNoYW5nZUZsYWdzIG1fdW5jb21taXR0ZWRDaGFu
Z2VzIHsgQ292ZXJhZ2VSZWN0Q2hhbmdlZCB9OwogI2VuZGlmCisgICAgYm9vbCBtX2hhc0Rlc2Nl
bmRhbnRzV2l0aFVuY29tbWl0dGVkQ2hhbmdlcyB7IGZhbHNlIH07CiAKICAgICBib29sIG1faXND
b21taXR0aW5nQ2hhbmdlcyB7IGZhbHNlIH07CisgICAgRmxvYXRSZWN0IG1fcHJldmlvdXNDb21t
aXR0ZWRWaXNpYmxlUmVjdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3Bw
CShyZXZpc2lvbiAyMTUzOTgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJDb21wb3NpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQxLDYgKzQ0MSw4IEBAIHZvaWQg
UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpmbHVzaFBlbmRpbmcKICNpZiBQTEFURk9STShJT1MpCiAg
ICAgICAgIEZsb2F0UmVjdCBleHBvc2VkUmVjdCA9IGZyYW1lVmlldy5leHBvc2VkQ29udGVudFJl
Y3QoKTsKICAgICAgICAgTE9HX1dJVEhfU1RSRUFNKENvbXBvc2l0aW5nLCBzdHJlYW0gPDwgIlxu
UmVuZGVyTGF5ZXJDb21wb3NpdG9yICIgPDwgdGhpcyA8PCAiIGZsdXNoUGVuZGluZ0xheWVyQ2hh
bmdlcyAocm9vdCAiIDw8IGlzRmx1c2hSb290IDw8ICIpIGV4cG9zZWRSZWN0ICIgPDwgZXhwb3Nl
ZFJlY3QpOworCisgICAgICAgIC8vIEZJWE1FOiBVc2Ugb3B0aW1pemVkIGZsdXNoZXMuCiAgICAg
ICAgIHJvb3RMYXllci0+Zmx1c2hDb21wb3NpdGluZ1N0YXRlKGV4cG9zZWRSZWN0KTsKICNlbHNl
CiAgICAgICAgIC8vIEhhdmluZyBhIG1fY2xpcExheWVyIGluZGljYXRlcyB0aGF0IHdlJ3JlIGRv
aW5nIHNjcm9sbGluZyB2aWEgR3JhcGhpY3NMYXllcnMuCkBAIC00NTAsNyArNDUyLDcgQEAgdm9p
ZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmZsdXNoUGVuZGluZwogICAgICAgICAgICAgdmlzaWJs
ZVJlY3QuaW50ZXJzZWN0KGZyYW1lVmlldy52aWV3RXhwb3NlZFJlY3QoKS52YWx1ZSgpKTsKIAog
ICAgICAgICBMT0dfV0lUSF9TVFJFQU0oQ29tcG9zaXRpbmcsICBzdHJlYW0gPDwgIlxuUmVuZGVy
TGF5ZXJDb21wb3NpdG9yICIgPDwgdGhpcyA8PCAiIGZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlcygi
IDw8IGlzRmx1c2hSb290IDw8ICIpICIgPDwgdmlzaWJsZVJlY3QpOwotICAgICAgICByb290TGF5
ZXItPmZsdXNoQ29tcG9zaXRpbmdTdGF0ZSh2aXNpYmxlUmVjdCk7CisgICAgICAgIHJvb3RMYXll
ci0+Zmx1c2hDb21wb3NpdGluZ1N0YXRlKHZpc2libGVSZWN0LCBHcmFwaGljc0xheWVyOjpGbHVz
aFNjb3BlOjpVbmNvbW1pdHRlZCk7CiAgICAgICAgIExPR19XSVRIX1NUUkVBTShDb21wb3NpdGlu
ZywgIHN0cmVhbSA8PCAiUmVuZGVyTGF5ZXJDb21wb3NpdG9yICIgPDwgdGhpcyA8PCAiIGZsdXNo
IGNvbXBsZXRlXG4iKTsKICNlbmRpZgogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>307268</attachid>
            <date>2017-04-17 06:40:35 -0700</date>
            <delta_ts>2017-04-17 08:00:36 -0700</delta_ts>
            <desc>patch</desc>
            <filename>graphicslayerca-commit-dirty-6.patch</filename>
            <type>text/plain</type>
            <size>16943</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNTM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBACisyMDE3LTA0LTE2ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBHcmFwaGljc0xheWVyQ0E6OnJl
Y3Vyc2l2ZUNvbW1pdENoYW5nZXMgc2hvdWxkIG5vdCBkZXNjZW5kIGludG8gc3VidHJlZXMgd2l0
aG91dCBjaGFuZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzA4NTEKKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAg
ICAgV2l0aCBsb3RzIG9mIGxheWVycyB0aGlzIGNhbiBiZSB2ZXJ5IHNsb3cgYXMgaXQgYWx3YXlz
IHRyYXZlcnNlcyB0aGUgZW50aXJlIGxheWVyIHRyZWUuCisgICAgICAgIEZvciBleGFtcGxlIEdJ
RiBhbmltYXRpb25zIG9uIHR1bWJsci5jb20gdHJpZ2dlciBleHBlbnNpdmUgY29tbWl0cyB3aGVy
ZSBhbG1vc3Qgbm90aGluZyBjaGFuZ2VzLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBtX2hh
c0Rlc2NlbmRhbnRzV2l0aFVuY29tbWl0dGVkQ2hhbmdlcyBiaXQgdG8gR3JhcGhpY3NMYXllckNB
LiBXaXRoIHRoaXMKKyAgICAgICAgd2UgY2FuIGF2b2lkIGRlc2NlbmRpbmcgdG8gYnJhbmNoZXMg
d2l0aG91dCBjaGFuZ2VzIHdoZW4gY29tbWl0dGluZy4KKworICAgICAgICBUaGlzIHBhdGNoIGVu
YWJsZWQgdGhlIG9wdGltaXphdGlvbiBvbiBNYWMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NM
YXllckNBOjpHcmFwaGljc0xheWVyQ0E6OnN5bmNQb3NpdGlvbik6CisKKyAgICAgICAgICAgIFNl
dCBQb3NpdGlvbkNoYW5nZWQgZmxhZyB3aGVuIHN5bmNpbmcgbGF5ZXIgcG9zaXRpb24uIFRoaXMg
ZmxhZyBkb2VzIG5vdGhpbmcgZXhjZXB0IG1ha2VzCisgICAgICAgICAgICBuZXh0IGNvbW1pdCB0
byB1cGRhdGUgdGhlIGNvdmVyYWdlIHJlY3QgKHNvIHRpbGluZyBnZXRzIHVwZGF0ZWQpLgorCisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnNldFZpc2libGVBbmRDb3ZlcmFnZVJl
Y3RzKToKKworICAgICAgICAgICAgRG8gYWxsIHNldHRpbmcgb2YgbV91bmNvbW1pdHRlZENoYW5n
ZXMgYml0cyB2aWEgYWRkVW5jb21taXR0ZWRDaGFuZ2VzIGZ1bmN0aW9uLgorCisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnJlY3Vyc2l2ZUNvbW1pdENoYW5nZXMpOgorCisgICAg
ICAgICAgICBCYWlsIG91dCBpZiBuZWl0aGVyIHRoZSBjdXJyZW50IGxheWVyIG5vciBhbnkgb2Yg
aXRzIGRlc2NlbmRhbnRzIGhhdmUgYW55IHVuY29tbWl0ZWQgY2hhbmdlcworICAgICAgICAgICAg
YW5kIG5vbmUgb2YgdGhlIGFuY2VzdG9ycyBoYWQgY2hhbmdlcy4KKworICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NMYXllckNBOjpjb21taXRMYXllckNoYW5nZXNCZWZvcmVTdWJsYXllcnMpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjplbnN1cmVTdHJ1Y3R1cmFsTGF5ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpjaGFuZ2VMYXllclR5cGVUbyk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OmFkZFVuY29tbWl0dGVkQ2hhbmdl
cyk6CisKKyAgICAgICAgICAgIFNldCBtX2hhc0Rlc2NlbmRhbnRzV2l0aFVuY29tbWl0dGVkQ2hh
bmdlcyBiaXQgaW4gYW5jZXN0b3JzIHdoZW4gbXV0YXRpbmcgbV91bmNvbW1pdHRlZENoYW5nZXMu
CisKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6bm90ZUxheWVyUHJvcGVydHlD
aGFuZ2VkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0Eu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6ZnJhbWVWaWV3RGlk
U2Nyb2xsKToKKworICAgICAgICAgICAgVGVsbCB0aGUgc2Nyb2xsaW5nIGxheWVyIHRoYXQgaXQg
bmVlZHMgdG8gcmVjb21wdXRlIGNvdmVyYWdlLgorICAgICAgICAgICAgVGhpcyBhbHNvIHNjaGVk
dWxlcyBhIGxheWVyIGZsdXNoIHNvIG5vIG5lZWQgdG8gZG8gdGhhdCBzZXBhcmF0ZWx5LgorCiAy
MDE3LTA0LTE1ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgRml4IFdpbmRvd3MgYnVpbGQgYWZ0ZXIgcjIxNTM5Ni4KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgJKHJldmlzaW9u
IDIxNTM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTI1LDcgKzUyNSw4IEBAIHB1YmxpYzoKICAgICAvLyBT
b21lIGNvbXBvc2l0aW5nIHN5c3RlbXMgbWF5IGRvIGludGVybmFsIGJhdGNoaW5nIHRvIHN5bmNo
cm9uaXplIGNvbXBvc2l0aW5nIHVwZGF0ZXMKICAgICAvLyB3aXRoIHVwZGF0ZXMgZHJhd24gaW50
byB0aGUgd2luZG93LiBUaGVzZSBtZXRob2RzIGZsdXNoIGludGVybmFsIGJhdGNoZWQgc3RhdGUg
b24gdGhpcyBsYXllcgogICAgIC8vIGFuZCBkZXNjZW5kYW50IGxheWVycywgYW5kIHRoaXMgbGF5
ZXIgb25seS4KLSAgICB2aXJ0dWFsIHZvaWQgZmx1c2hDb21wb3NpdGluZ1N0YXRlKGNvbnN0IEZs
b2F0UmVjdCYgLyogY2xpcFJlY3QgKi8pIHsgfQorICAgIGVudW0gY2xhc3MgRmx1c2hTY29wZSB7
IFVuY29tbWl0dGVkLCBBbGwgfTsKKyAgICB2aXJ0dWFsIHZvaWQgZmx1c2hDb21wb3NpdGluZ1N0
YXRlKGNvbnN0IEZsb2F0UmVjdCYgLyogY2xpcFJlY3QgKi8sIEZsdXNoU2NvcGUgPSBGbHVzaFNj
b3BlOjpBbGwpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JU
aGlzTGF5ZXJPbmx5KCkgeyB9CiAKICAgICAvLyBJZiB0aGUgZXhwb3NlZCByZWN0IG9mIHRoaXMg
bGF5ZXIgY2hhbmdlcywgcmV0dXJucyB0cnVlIGlmIHRoaXMgb3IgZGVzY2VuZGFudCBsYXllcnMg
bmVlZCBhIGZsdXNoLApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
R3JhcGhpY3NMYXllckNBLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCShyZXZpc2lvbiAyMTUzOTgpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01ODEsNiArNTgxLDE2IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpz
ZXRQb3NpdGlvbihjb25zdCAKICAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoR2VvbWV0cnlD
aGFuZ2VkKTsKIH0KIAordm9pZCBHcmFwaGljc0xheWVyQ0E6OnN5bmNQb3NpdGlvbihjb25zdCBG
bG9hdFBvaW50JiBwb2ludCkKK3sKKyAgICBpZiAocG9pbnQgPT0gbV9wb3NpdGlvbikKKyAgICAg
ICAgcmV0dXJuOworCisgICAgR3JhcGhpY3NMYXllcjo6c3luY1Bvc2l0aW9uKHBvaW50KTsKKyAg
ICAvLyBFbnN1cmUgZnV0dXJlIGZsdXNoZXMgd2lsbCByZWNvbXB1dGUgdGhlIGNvdmVyYWdlIHJl
Y3QgYW5kIHVwZGF0ZSB0aWxpbmcuCisgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKFBvc2l0
aW9uQ2hhbmdlZCwgRG9udFNjaGVkdWxlRmx1c2gpOworfQorCiB2b2lkIEdyYXBoaWNzTGF5ZXJD
QTo6c2V0QW5jaG9yUG9pbnQoY29uc3QgRmxvYXRQb2ludDNEJiBwb2ludCkKIHsKICAgICBpZiAo
cG9pbnQgPT0gbV9hbmNob3JQb2ludCkKQEAgLTExNjQsMTIgKzExNzQsMTcgQEAgRmxvYXRQb2lu
dCBHcmFwaGljc0xheWVyQ0E6OmNvbXB1dGVQb3NpdAogICAgIHJldHVybiBGbG9hdFBvaW50KCk7
CiB9CiAKLXZvaWQgR3JhcGhpY3NMYXllckNBOjpmbHVzaENvbXBvc2l0aW5nU3RhdGUoY29uc3Qg
RmxvYXRSZWN0JiBjbGlwUmVjdCkKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpmbHVzaENvbXBvc2l0
aW5nU3RhdGUoY29uc3QgRmxvYXRSZWN0JiB2aXNpYmxlUmVjdCwgRmx1c2hTY29wZSBmbHVzaFNj
b3BlKQogewotICAgIFRyYW5zZm9ybVN0YXRlIHN0YXRlKFRyYW5zZm9ybVN0YXRlOjpVbmFwcGx5
SW52ZXJzZVRyYW5zZm9ybURpcmVjdGlvbiwgRmxvYXRRdWFkKGNsaXBSZWN0KSk7Ci0gICAgRmxv
YXRRdWFkIGNvdmVyYWdlUXVhZChjbGlwUmVjdCk7CisgICAgVHJhbnNmb3JtU3RhdGUgc3RhdGUo
VHJhbnNmb3JtU3RhdGU6OlVuYXBwbHlJbnZlcnNlVHJhbnNmb3JtRGlyZWN0aW9uLCBGbG9hdFF1
YWQodmlzaWJsZVJlY3QpKTsKKyAgICBGbG9hdFF1YWQgY292ZXJhZ2VRdWFkKHZpc2libGVSZWN0
KTsKICAgICBzdGF0ZS5zZXRTZWNvbmRhcnlRdWFkKCZjb3ZlcmFnZVF1YWQpOwotICAgIHJlY3Vy
c2l2ZUNvbW1pdENoYW5nZXMoQ29tbWl0U3RhdGUoKSwgc3RhdGUpOworCisgICAgQ29tbWl0U3Rh
dGUgY29tbWl0U3RhdGU7CisgICAgY29tbWl0U3RhdGUuYW5jZXN0b3JIYWRDaGFuZ2VzID0gdmlz
aWJsZVJlY3QgIT0gbV9wcmV2aW91c0NvbW1pdHRlZFZpc2libGVSZWN0IHx8IGZsdXNoU2NvcGUg
PT0gRmx1c2hTY29wZTo6QWxsOworICAgIG1fcHJldmlvdXNDb21taXR0ZWRWaXNpYmxlUmVjdCA9
IHZpc2libGVSZWN0OworCisgICAgcmVjdXJzaXZlQ29tbWl0Q2hhbmdlcyhjb21taXRTdGF0ZSwg
c3RhdGUpOwogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6Zmx1c2hDb21wb3NpdGluZ1N0YXRl
Rm9yVGhpc0xheWVyT25seSgpCkBAIC0xMzU0LDE3ICsxMzY5LDE3IEBAIHZvaWQgR3JhcGhpY3NM
YXllckNBOjpzZXRWaXNpYmxlQW5kQ292ZXIKICAgICAvLyBGSVhNRTogd2UgbmVlZCB0byB0YWtl
IHJlZmxlY3Rpb25zIGludG8gYWNjb3VudCB3aGVuIGRldGVybWluaW5nIHdoZXRoZXIgdGhpcyBs
YXllciBpbnRlcnNlY3RzIHRoZSBjb3ZlcmFnZSByZWN0LgogICAgIGJvb2wgaW50ZXJzZWN0c0Nv
dmVyYWdlUmVjdCA9IGlzVmlld3BvcnRDb25zdHJhaW5lZCB8fCByZWN0cy5jb3ZlcmFnZVJlY3Qu
aW50ZXJzZWN0cyhGbG9hdFJlY3QobV9ib3VuZHNPcmlnaW4sIHNpemUoKSkpOwogICAgIGlmIChp
bnRlcnNlY3RzQ292ZXJhZ2VSZWN0ICE9IG1faW50ZXJzZWN0c0NvdmVyYWdlUmVjdCkgewotICAg
ICAgICBtX3VuY29tbWl0dGVkQ2hhbmdlcyB8PSBDb3ZlcmFnZVJlY3RDaGFuZ2VkOworICAgICAg
ICBhZGRVbmNvbW1pdHRlZENoYW5nZXMoQ292ZXJhZ2VSZWN0Q2hhbmdlZCk7CiAgICAgICAgIG1f
aW50ZXJzZWN0c0NvdmVyYWdlUmVjdCA9IGludGVyc2VjdHNDb3ZlcmFnZVJlY3Q7CiAgICAgfQog
CiAgICAgaWYgKHZpc2libGVSZWN0Q2hhbmdlZCkgewotICAgICAgICBtX3VuY29tbWl0dGVkQ2hh
bmdlcyB8PSBDb3ZlcmFnZVJlY3RDaGFuZ2VkOworICAgICAgICBhZGRVbmNvbW1pdHRlZENoYW5n
ZXMoQ292ZXJhZ2VSZWN0Q2hhbmdlZCk7CiAgICAgICAgIG1fdmlzaWJsZVJlY3QgPSByZWN0cy52
aXNpYmxlUmVjdDsKICAgICB9CiAKICAgICBpZiAoY292ZXJhZ2VSZWN0Q2hhbmdlZCkgewotICAg
ICAgICBtX3VuY29tbWl0dGVkQ2hhbmdlcyB8PSBDb3ZlcmFnZVJlY3RDaGFuZ2VkOworICAgICAg
ICBhZGRVbmNvbW1pdHRlZENoYW5nZXMoQ292ZXJhZ2VSZWN0Q2hhbmdlZCk7CiAgICAgICAgIG1f
Y292ZXJhZ2VSZWN0ID0gcmVjdHMuY292ZXJhZ2VSZWN0OwogICAgIH0KIH0KQEAgLTEzNzMsOCAr
MTM4OCwxMiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0VmlzaWJsZUFuZENvdmVyCiAvLyBh
bmltYXRpb24gdGhhdCBjb250cmlidXRlcyBtYXhpbWFsbHkgdG8gdGhlIHNjYWxlIChvbiBldmVy
eSBsYXllciB3aXRoIGFuaW1hdGlvbnMgZG93biB0aGUgaGllcmFyY2h5KS4KIHZvaWQgR3JhcGhp
Y3NMYXllckNBOjpyZWN1cnNpdmVDb21taXRDaGFuZ2VzKGNvbnN0IENvbW1pdFN0YXRlJiBjb21t
aXRTdGF0ZSwgY29uc3QgVHJhbnNmb3JtU3RhdGUmIHN0YXRlLCBmbG9hdCBwYWdlU2NhbGVGYWN0
b3IsIGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uUmVsYXRpdmVUb0Jhc2UsIGJvb2wgYWZmZWN0
ZWRCeVBhZ2VTY2FsZSkKIHsKKyAgICBpZiAoIWNvbW1pdFN0YXRlLmFuY2VzdG9ySGFkQ2hhbmdl
cyAmJiAhbV91bmNvbW1pdHRlZENoYW5nZXMgJiYgIWhhc0Rlc2NlbmRhbnRzV2l0aFVuY29tbWl0
dGVkQ2hhbmdlcygpKQorICAgICAgICByZXR1cm47CisKICAgICBUcmFuc2Zvcm1TdGF0ZSBsb2Nh
bFN0YXRlID0gc3RhdGU7CiAgICAgQ29tbWl0U3RhdGUgY2hpbGRDb21taXRTdGF0ZSA9IGNvbW1p
dFN0YXRlOworCiAgICAgYm9vbCBhZmZlY3RlZEJ5VHJhbnNmb3JtQW5pbWF0aW9uID0gY29tbWl0
U3RhdGUuYW5jZXN0b3JIYXNUcmFuc2Zvcm1BbmltYXRpb247CiAKICAgICBib29sIGFjY3VtdWxh
dGVUcmFuc2Zvcm0gPSBhY2N1bXVsYXRlc1RyYW5zZm9ybSgqdGhpcyk7CkBAIC0xNDExLDcgKzE0
MzAsMTEgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnJlY3Vyc2l2ZUNvbW1pdENoYQogI2VuZGlm
CiAKICAgICBib29sIGhhZENoYW5nZXMgPSBtX3VuY29tbWl0dGVkQ2hhbmdlczsKLSAgICAKKwor
ICAgIC8vIEZJWE1FOiBUaGlzIGNvdWxkIGJlIG1vcmUgZmluZS1ncmFpbmVkLiBPbmx5IHNvbWUg
dHlwZXMgb2YgY2hhbmdlcyBoYXZlIGltcGFjdCBvbiBzdWJsYXllcnMuCisgICAgaWYgKCFjaGls
ZENvbW1pdFN0YXRlLmFuY2VzdG9ySGFkQ2hhbmdlcykKKyAgICAgICAgY2hpbGRDb21taXRTdGF0
ZS5hbmNlc3RvckhhZENoYW5nZXMgPSBoYWRDaGFuZ2VzOworCiAgICAgaWYgKGFwcGxpZXNQYWdl
U2NhbGUoKSkgewogICAgICAgICBwYWdlU2NhbGVGYWN0b3IgPSB0aGlzLT5wYWdlU2NhbGVGYWN0
b3IoKTsKICAgICAgICAgYWZmZWN0ZWRCeVBhZ2VTY2FsZSA9IHRydWU7CkBAIC0xNDUwLDYgKzE0
NzMsOCBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6cmVjdXJzaXZlQ29tbWl0Q2hhCiAgICAgaWYg
KEdyYXBoaWNzTGF5ZXJDQSogbWFza0xheWVyID0gZG93bmNhc3Q8R3JhcGhpY3NMYXllckNBPiht
X21hc2tMYXllcikpCiAgICAgICAgIG1hc2tMYXllci0+Y29tbWl0TGF5ZXJDaGFuZ2VzQWZ0ZXJT
dWJsYXllcnMoY2hpbGRDb21taXRTdGF0ZSk7CiAKKyAgICBzZXRIYXNEZXNjZW5kYW50c1dpdGhV
bmNvbW1pdHRlZENoYW5nZXMoZmFsc2UpOworCiAgICAgYm9vbCBoYWREaXJ0eVJlY3RzID0gbV91
bmNvbW1pdHRlZENoYW5nZXMgJiBEaXJ0eVJlY3RzQ2hhbmdlZDsKICAgICBjb21taXRMYXllckNo
YW5nZXNBZnRlclN1YmxheWVycyhjaGlsZENvbW1pdFN0YXRlKTsKIApAQCAtMTU2NCw3ICsxNTg5
LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OmNvbW1pdExheWVyQ2hhbmdlcwogICAgIGlmICgh
bV91bmNvbW1pdHRlZENoYW5nZXMpIHsKICAgICAgICAgLy8gRW5zdXJlIHRoYXQgd2UgY2FwIGxh
eWVyIGRlcHRoIGluIGNvbW1pdExheWVyQ2hhbmdlc0FmdGVyU3VibGF5ZXJzKCkuCiAgICAgICAg
IGlmIChjb21taXRTdGF0ZS50cmVlRGVwdGggPiBjTWF4TGF5ZXJUcmVlRGVwdGgpCi0gICAgICAg
ICAgICBtX3VuY29tbWl0dGVkQ2hhbmdlcyB8PSBDaGlsZHJlbkNoYW5nZWQ7CisgICAgICAgICAg
ICBhZGRVbmNvbW1pdHRlZENoYW5nZXMoQ2hpbGRyZW5DaGFuZ2VkKTsKICAgICB9CiAKICAgICBi
b29sIG5lZWRUaWxlZExheWVyID0gcmVxdWlyZXNUaWxlZExheWVyKHBhZ2VTY2FsZUZhY3Rvcik7
CkBAIC0xNzA2LDcgKzE3MzEsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6Y29tbWl0TGF5ZXJD
aGFuZ2VzCiAKICAgICAvLyBFbnN1cmUgdGhhdCB3ZSBjYXAgbGF5ZXIgZGVwdGggaW4gY29tbWl0
TGF5ZXJDaGFuZ2VzQWZ0ZXJTdWJsYXllcnMoKS4KICAgICBpZiAoY29tbWl0U3RhdGUudHJlZURl
cHRoID4gY01heExheWVyVHJlZURlcHRoKQotICAgICAgICBtX3VuY29tbWl0dGVkQ2hhbmdlcyB8
PSBDaGlsZHJlbkNoYW5nZWQ7CisgICAgICAgIGFkZFVuY29tbWl0dGVkQ2hhbmdlcyhDaGlsZHJl
bkNoYW5nZWQpOwogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6Y29tbWl0TGF5ZXJDaGFuZ2Vz
QWZ0ZXJTdWJsYXllcnMoQ29tbWl0U3RhdGUmIGNvbW1pdFN0YXRlKQpAQCAtMjExNiw3ICsyMTQx
LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OmVuc3VyZVN0cnVjdHVyYWxMYQogICAgICAgICAg
ICAgLy8gUmVsZWFzZSB0aGUgc3RydWN0dXJhbCBsYXllci4KICAgICAgICAgICAgIG1fc3RydWN0
dXJhbExheWVyID0gbnVsbHB0cjsKIAotICAgICAgICAgICAgbV91bmNvbW1pdHRlZENoYW5nZXMg
fD0gc3RydWN0dXJhbExheWVyQ2hhbmdlRmxhZ3M7CisgICAgICAgICAgICBhZGRVbmNvbW1pdHRl
ZENoYW5nZXMoc3RydWN0dXJhbExheWVyQ2hhbmdlRmxhZ3MpOwogICAgICAgICB9CiAgICAgICAg
IHJldHVybjsKICAgICB9CkBAIC0yMTQ0LDcgKzIxNjksNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJD
QTo6ZW5zdXJlU3RydWN0dXJhbExhCiAgICAgaWYgKCFzdHJ1Y3R1cmFsTGF5ZXJDaGFuZ2VkKQog
ICAgICAgICByZXR1cm47CiAgICAgCi0gICAgbV91bmNvbW1pdHRlZENoYW5nZXMgfD0gc3RydWN0
dXJhbExheWVyQ2hhbmdlRmxhZ3M7CisgICAgYWRkVW5jb21taXR0ZWRDaGFuZ2VzKHN0cnVjdHVy
YWxMYXllckNoYW5nZUZsYWdzKTsKIAogICAgIC8vIFdlJ3ZlIGNoYW5nZWQgdGhlIGxheWVyIHRo
YXQgb3VyIHBhcmVudCBhZGRlZCB0byBpdHMgc3VibGF5ZXIgbGlzdCwgc28gdGVsbCBpdCB0byB1
cGRhdGUKICAgICAvLyBzdWJsYXllcnMgYWdhaW4gaW4gaXRzIGNvbW1pdExheWVyQ2hhbmdlc0Fm
dGVyU3VibGF5ZXJzKCkuCkBAIC0zNjE1LDcgKzM2NDAsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJD
QTo6Y2hhbmdlTGF5ZXJUeXBlVG8oCiAgICAgICAgIG9sZExheWVyLT5zdXBlcmxheWVyKCktPnJl
cGxhY2VTdWJsYXllcigqb2xkTGF5ZXIsICptX2xheWVyKTsKICAgICB9CiAKLSAgICBtX3VuY29t
bWl0dGVkQ2hhbmdlcyB8PSBDaGlsZHJlbkNoYW5nZWQKKyAgICBhZGRVbmNvbW1pdHRlZENoYW5n
ZXMoQ2hpbGRyZW5DaGFuZ2VkCiAgICAgICAgIHwgR2VvbWV0cnlDaGFuZ2VkCiAgICAgICAgIHwg
VHJhbnNmb3JtQ2hhbmdlZAogICAgICAgICB8IENoaWxkcmVuVHJhbnNmb3JtQ2hhbmdlZApAQCAt
MzYzMSwxMCArMzY1NiwxMCBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6Y2hhbmdlTGF5ZXJUeXBl
VG8oCiAgICAgICAgIHwgTWFza0xheWVyQ2hhbmdlZAogICAgICAgICB8IE9wYWNpdHlDaGFuZ2Vk
CiAgICAgICAgIHwgTmFtZUNoYW5nZWQKLSAgICAgICAgfCBEZWJ1Z0luZGljYXRvcnNDaGFuZ2Vk
OworICAgICAgICB8IERlYnVnSW5kaWNhdG9yc0NoYW5nZWQpOwogICAgIAogICAgIGlmIChpc1Rp
bGVkTGF5ZXIpCi0gICAgICAgIG1fdW5jb21taXR0ZWRDaGFuZ2VzIHw9IENvdmVyYWdlUmVjdENo
YW5nZWQ7CisgICAgICAgIGFkZFVuY29tbWl0dGVkQ2hhbmdlcyhDb3ZlcmFnZVJlY3RDaGFuZ2Vk
KTsKIAogICAgIG1vdmVBbmltYXRpb25zKG9sZExheWVyLmdldCgpLCBtX2xheWVyLmdldCgpKTsK
ICAgICAKQEAgLTQwMDgsMTIgKzQwMzMsMzMgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OmNhblRo
cm90dGxlTGF5ZXJGbAogICAgIHJldHVybiAhKG1fdW5jb21taXR0ZWRDaGFuZ2VzICYgVGlsZXNB
ZGRlZCk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjphZGRVbmNvbW1pdHRlZENoYW5nZXMo
TGF5ZXJDaGFuZ2VGbGFncyBmbGFncykKK3sKKyAgICBtX3VuY29tbWl0dGVkQ2hhbmdlcyB8PSBm
bGFnczsKKworICAgIGlmIChtX2lzQ29tbWl0dGluZ0NoYW5nZXMpCisgICAgICAgIHJldHVybjsK
KworICAgIGZvciAoYXV0byogYW5jZXN0b3IgPSBwYXJlbnQoKTsgYW5jZXN0b3I7IGFuY2VzdG9y
ID0gYW5jZXN0b3ItPnBhcmVudCgpKSB7CisgICAgICAgIGF1dG8mIGFuY2VzdG9yQ0EgPSBzdGF0
aWNfY2FzdDxHcmFwaGljc0xheWVyQ0EmPigqYW5jZXN0b3IpOworICAgICAgICBBU1NFUlQoIWFu
Y2VzdG9yQ0EubV9pc0NvbW1pdHRpbmdDaGFuZ2VzKTsKKyAgICAgICAgaWYgKGFuY2VzdG9yQ0Eu
aGFzRGVzY2VuZGFudHNXaXRoVW5jb21taXR0ZWRDaGFuZ2VzKCkpCisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIGFuY2VzdG9yQ0Euc2V0SGFzRGVzY2VuZGFudHNXaXRoVW5jb21taXR0ZWRD
aGFuZ2VzKHRydWUpOworICAgIH0KK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldEhhc0Rl
c2NlbmRhbnRzV2l0aFVuY29tbWl0dGVkQ2hhbmdlcyhib29sIHZhbHVlKQoreworICAgIG1faGFz
RGVzY2VuZGFudHNXaXRoVW5jb21taXR0ZWRDaGFuZ2VzID0gdmFsdWU7Cit9CisKIHZvaWQgR3Jh
cGhpY3NMYXllckNBOjpub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoTGF5ZXJDaGFuZ2VGbGFncyBm
bGFncywgU2NoZWR1bGVGbHVzaE9yTm90IHNjaGVkdWxlRmx1c2gpCiB7CiAgICAgYm9vbCBoYWRV
bmNvbW1pdHRlZENoYW5nZXMgPSAhIW1fdW5jb21taXR0ZWRDaGFuZ2VzOwogICAgIGJvb2wgb2xk
Q2FuVGhyb3R0bGVMYXllckZsdXNoID0gY2FuVGhyb3R0bGVMYXllckZsdXNoKCk7CiAKLSAgICBt
X3VuY29tbWl0dGVkQ2hhbmdlcyB8PSBmbGFnczsKKyAgICBhZGRVbmNvbW1pdHRlZENoYW5nZXMo
ZmxhZ3MpOwogCiAgICAgaWYgKHNjaGVkdWxlRmx1c2ggPT0gU2NoZWR1bGVGbHVzaCkgewogICAg
ICAgICBib29sIG5lZWRzRmx1c2ggPSAhaGFkVW5jb21taXR0ZWRDaGFuZ2VzIHx8IG9sZENhblRo
cm90dGxlTGF5ZXJGbHVzaCAhPSBjYW5UaHJvdHRsZUxheWVyRmx1c2goKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJD
QS5oCShyZXZpc2lvbiAyMTUzOTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9HcmFwaGljc0xheWVyQ0EuaAkod29ya2luZyBjb3B5KQpAQCAtNzUsNiArNzUsNyBAQCBw
dWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRSZXBsaWNhdGVkTGF5ZXIoR3JhcGhp
Y3NMYXllciopIG92ZXJyaWRlOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRQb3NpdGlv
bihjb25zdCBGbG9hdFBvaW50Jikgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
eW5jUG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0QW5jaG9yUG9pbnQoY29uc3QgRmxvYXRQb2ludDNEJikgb3ZlcnJpZGU7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTaXplKGNvbnN0IEZsb2F0U2l6ZSYpIG92ZXJyaWRl
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Qm91bmRzT3JpZ2luKGNvbnN0IEZsb2F0UG9p
bnQmKSBvdmVycmlkZTsKQEAgLTE1MiwxMiArMTUzLDEzIEBAIHB1YmxpYzoKIAogICAgIHN0cnVj
dCBDb21taXRTdGF0ZSB7CiAgICAgICAgIGludCB0cmVlRGVwdGggeyAwIH07CisgICAgICAgIGJv
b2wgYW5jZXN0b3JIYWRDaGFuZ2VzIHsgZmFsc2UgfTsKICAgICAgICAgYm9vbCBhbmNlc3Rvckhh
c1RyYW5zZm9ybUFuaW1hdGlvbiB7IGZhbHNlIH07CiAgICAgICAgIGJvb2wgYW5jZXN0b3JJc1Zp
ZXdwb3J0Q29uc3RyYWluZWQgeyBmYWxzZSB9OwogICAgIH07CiAgICAgdm9pZCByZWN1cnNpdmVD
b21taXRDaGFuZ2VzKGNvbnN0IENvbW1pdFN0YXRlJiwgY29uc3QgVHJhbnNmb3JtU3RhdGUmLCBm
bG9hdCBwYWdlU2NhbGVGYWN0b3IgPSAxLCBjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvblJlbGF0
aXZlVG9CYXNlID0gRmxvYXRQb2ludCgpLCBib29sIGFmZmVjdGVkQnlQYWdlU2NhbGUgPSBmYWxz
ZSk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZsdXNoQ29tcG9zaXRpbmdTdGF0ZShjb25z
dCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZsdXNoQ29t
cG9zaXRpbmdTdGF0ZShjb25zdCBGbG9hdFJlY3QmLCBGbHVzaFNjb3BlKSBvdmVycmlkZTsKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9u
bHkoKSBvdmVycmlkZTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgdmlzaWJsZVJlY3RDaGFu
Z2VSZXF1aXJlc0ZsdXNoKGNvbnN0IEZsb2F0UmVjdCYgdmlzaWJsZVJlY3QpIGNvbnN0IG92ZXJy
aWRlOwpAQCAtNDk0LDggKzQ5NiwxMiBAQCBwcml2YXRlOgogICAgICAgICBTaGFwZUNoYW5nZWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDM2LAogICAgICAgICBXaW5kUnVs
ZUNoYW5nZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDM3LAogICAgICAgICBV
c2VySW50ZXJhY3Rpb25FbmFibGVkQ2hhbmdlZCAgICAgICAgICAgPSAxTExVIDw8IDM4LAorICAg
ICAgICBQb3NpdGlvbkNoYW5nZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDM5
LAogICAgIH07CiAgICAgdHlwZWRlZiB1aW50NjRfdCBMYXllckNoYW5nZUZsYWdzOworICAgIHZv
aWQgYWRkVW5jb21taXR0ZWRDaGFuZ2VzKExheWVyQ2hhbmdlRmxhZ3MpOworICAgIGJvb2wgaGFz
RGVzY2VuZGFudHNXaXRoVW5jb21taXR0ZWRDaGFuZ2VzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNE
ZXNjZW5kYW50c1dpdGhVbmNvbW1pdHRlZENoYW5nZXM7IH0KKyAgICB2b2lkIHNldEhhc0Rlc2Nl
bmRhbnRzV2l0aFVuY29tbWl0dGVkQ2hhbmdlcyhib29sKTsKICAgICBlbnVtIFNjaGVkdWxlRmx1
c2hPck5vdCB7IFNjaGVkdWxlRmx1c2gsIERvbnRTY2hlZHVsZUZsdXNoIH07CiAgICAgdm9pZCBu
b3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoTGF5ZXJDaGFuZ2VGbGFncywgU2NoZWR1bGVGbHVzaE9y
Tm90ID0gU2NoZWR1bGVGbHVzaCk7CiAgICAgdm9pZCBub3RlU3VibGF5ZXJzQ2hhbmdlZChTY2hl
ZHVsZUZsdXNoT3JOb3QgPSBTY2hlZHVsZUZsdXNoKTsKQEAgLTU4NSw3ICs1OTEsNyBAQCBwcml2
YXRlOgogICAgIEFuaW1hdGlvbnNNYXAgbV9ydW5uaW5nQW5pbWF0aW9uczsKIAogICAgIFZlY3Rv
cjxGbG9hdFJlY3Q+IG1fZGlydHlSZWN0czsKLSAgICAKKwogICAgIHN0ZDo6dW5pcXVlX3B0cjxE
aXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q+IG1fZGlzcGxheUxpc3Q7CiAKICAgICBGbG9hdFNpemUg
bV9waXhlbEFsaWdubWVudE9mZnNldDsKQEAgLTU5Niw4ICs2MDIsMTAgQEAgcHJpdmF0ZToKICNl
bHNlCiAgICAgTGF5ZXJDaGFuZ2VGbGFncyBtX3VuY29tbWl0dGVkQ2hhbmdlcyB7IENvdmVyYWdl
UmVjdENoYW5nZWQgfTsKICNlbmRpZgorICAgIGJvb2wgbV9oYXNEZXNjZW5kYW50c1dpdGhVbmNv
bW1pdHRlZENoYW5nZXMgeyBmYWxzZSB9OwogCiAgICAgYm9vbCBtX2lzQ29tbWl0dGluZ0NoYW5n
ZXMgeyBmYWxzZSB9OworICAgIEZsb2F0UmVjdCBtX3ByZXZpb3VzQ29tbWl0dGVkVmlzaWJsZVJl
Y3Q7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAkocmV2aXNpb24g
MjE1Mzk4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3Jk
aW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3
Miw3ICs1NzIsNyBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0Rml4ZWRUCiAg
ICAgZGlkQ2hhbmdlTGF5ZXJTdGF0ZSgpOwogfQogCi12b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NM
YXllcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKK3ZvaWQg
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGUoY29uc3QgRmxv
YXRSZWN0JiByZWN0LCBGbHVzaFNjb3BlKQogewogICAgIGlmIChDb29yZGluYXRlZEdyYXBoaWNz
TGF5ZXIqIG1hc2sgPSBkb3duY2FzdDxDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI+KG1hc2tMYXll
cigpKSkKICAgICAgICAgbWFzay0+Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25s
eSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3Jk
aW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdy
YXBoaWNzTGF5ZXIuaAkocmV2aXNpb24gMjE1Mzk4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsNyArMTAwLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0
TmVlZHNEaXNwbGF5SW5SZWN0KGNvbnN0IEZsb2F0UmVjdCYsIFNob3VsZENsaXBUb0xheWVyID0g
Q2xpcFRvTGF5ZXIpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0Q29udGVudHNOZWVkc0Rpc3BsYXko
KSBvdmVycmlkZTsKICAgICB2b2lkIGRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCgpIG92
ZXJyaWRlOwotICAgIHZvaWQgZmx1c2hDb21wb3NpdGluZ1N0YXRlKGNvbnN0IEZsb2F0UmVjdCYp
IG92ZXJyaWRlOworICAgIHZvaWQgZmx1c2hDb21wb3NpdGluZ1N0YXRlKGNvbnN0IEZsb2F0UmVj
dCYsIEZsdXNoU2NvcGUpIG92ZXJyaWRlOwogICAgIHZvaWQgZmx1c2hDb21wb3NpdGluZ1N0YXRl
Rm9yVGhpc0xheWVyT25seSgpIG92ZXJyaWRlOwogICAgIGJvb2wgc2V0RmlsdGVycyhjb25zdCBG
aWx0ZXJPcGVyYXRpb25zJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBhZGRBbmltYXRpb24oY29uc3Qg
S2V5ZnJhbWVWYWx1ZUxpc3QmLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBBbmltYXRpb24qLCBj
b25zdCBTdHJpbmcmLCBkb3VibGUpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAJKHJldmlzaW9uIDIxNTM5
OCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00NDEsNiArNDQxLDggQEAgdm9pZCBSZW5kZXJMYXllckNvbXBv
c2l0b3I6OmZsdXNoUGVuZGluZwogI2lmIFBMQVRGT1JNKElPUykKICAgICAgICAgRmxvYXRSZWN0
IGV4cG9zZWRSZWN0ID0gZnJhbWVWaWV3LmV4cG9zZWRDb250ZW50UmVjdCgpOwogICAgICAgICBM
T0dfV0lUSF9TVFJFQU0oQ29tcG9zaXRpbmcsIHN0cmVhbSA8PCAiXG5SZW5kZXJMYXllckNvbXBv
c2l0b3IgIiA8PCB0aGlzIDw8ICIgZmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzIChyb290ICIgPDwg
aXNGbHVzaFJvb3QgPDwgIikgZXhwb3NlZFJlY3QgIiA8PCBleHBvc2VkUmVjdCk7CisKKyAgICAg
ICAgLy8gRklYTUU6IFVzZSBvcHRpbWl6ZWQgZmx1c2hlcy4KICAgICAgICAgcm9vdExheWVyLT5m
bHVzaENvbXBvc2l0aW5nU3RhdGUoZXhwb3NlZFJlY3QpOwogI2Vsc2UKICAgICAgICAgLy8gSGF2
aW5nIGEgbV9jbGlwTGF5ZXIgaW5kaWNhdGVzIHRoYXQgd2UncmUgZG9pbmcgc2Nyb2xsaW5nIHZp
YSBHcmFwaGljc0xheWVycy4KQEAgLTQ1MCw3ICs0NTIsNyBAQCB2b2lkIFJlbmRlckxheWVyQ29t
cG9zaXRvcjo6Zmx1c2hQZW5kaW5nCiAgICAgICAgICAgICB2aXNpYmxlUmVjdC5pbnRlcnNlY3Qo
ZnJhbWVWaWV3LnZpZXdFeHBvc2VkUmVjdCgpLnZhbHVlKCkpOwogCiAgICAgICAgIExPR19XSVRI
X1NUUkVBTShDb21wb3NpdGluZywgIHN0cmVhbSA8PCAiXG5SZW5kZXJMYXllckNvbXBvc2l0b3Ig
IiA8PCB0aGlzIDw8ICIgZmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKCIgPDwgaXNGbHVzaFJvb3Qg
PDwgIikgIiA8PCB2aXNpYmxlUmVjdCk7Ci0gICAgICAgIHJvb3RMYXllci0+Zmx1c2hDb21wb3Np
dGluZ1N0YXRlKHZpc2libGVSZWN0KTsKKyAgICAgICAgcm9vdExheWVyLT5mbHVzaENvbXBvc2l0
aW5nU3RhdGUodmlzaWJsZVJlY3QsIEdyYXBoaWNzTGF5ZXI6OkZsdXNoU2NvcGU6OlVuY29tbWl0
dGVkKTsKICAgICAgICAgTE9HX1dJVEhfU1RSRUFNKENvbXBvc2l0aW5nLCAgc3RyZWFtIDw8ICJS
ZW5kZXJMYXllckNvbXBvc2l0b3IgIiA8PCB0aGlzIDw8ICIgZmx1c2ggY29tcGxldGVcbiIpOwog
I2VuZGlmCiAgICAgfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>