<?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>59129</bug_id>
          
          <creation_ts>2011-04-21 12:22:13 -0700</creation_ts>
          <short_desc>[chromium] Texture manager textures don&apos;t always get unreserved</short_desc>
          <delta_ts>2011-04-21 18:05:58 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Vangelis Kokkevis">vangelis</reporter>
          <assigned_to name="Vangelis Kokkevis">vangelis</assigned_to>
          <cc>enne</cc>
    
    <cc>jamesr</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>390242</commentid>
    <comment_count>0</comment_count>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2011-04-21 12:22:13 -0700</bug_when>
    <thetext>Currently layers reserve textures in the texture manager when their contents are painted and unreserve after the layer has been drawn.  Since the compositor can skip layers at draw time (e.g. when the layer is outside the clip rect) some textures are left reserved.  Over time they add to the memory (VRAM) bloat.

The debug chromium builds currently assert when a texture is reserved twice (which is an indication that the texture was not unreserved after the previous draw).

An easy repro case for the assert is loading this page:

http://www.satine.org/research/webkit/snowleopard/snowstack.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>390249</commentid>
    <comment_count>1</comment_count>
      <attachid>90577</attachid>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2011-04-21 12:27:52 -0700</bug_when>
    <thetext>Created attachment 90577
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>390266</commentid>
    <comment_count>2</comment_count>
      <attachid>90577</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-04-21 12:58:37 -0700</bug_when>
    <thetext>Comment on attachment 90577
Patch

Looks good.  I&apos;m pretty sure this will conflict with enne&apos;s upload patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>390509</commentid>
    <comment_count>3</comment_count>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2011-04-21 18:05:58 -0700</bug_when>
    <thetext>Committed r84582: &lt;http://trac.webkit.org/changeset/84582&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90577</attachid>
            <date>2011-04-21 12:27:52 -0700</date>
            <delta_ts>2011-04-21 12:58:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59129-20110421122751.patch</filename>
            <type>text/plain</type>
            <size>17252</size>
            <attacher name="Vangelis Kokkevis">vangelis</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg0NTM2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTEtMDQtMjEgIFZhbmdlbGlz
IEtva2tldmlzICA8dmFuZ2VsaXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtjaHJvbWl1bV0gT25seSB1cGRhdGUgdGhlIGNv
bnRlbnRzIG9mIGxheWVycyB0aGF0IGFyZSBnb2luZyB0bworICAgICAgICBiZSBkcmF3bi4gUmVt
b3ZlIGluZGl2aWR1YWwgdGV4dHVyZSB1bnJlc2VydmVzIHRoYXQgaGFwcGVuCisgICAgICAgIGFm
dGVyIHRoZSBsYXllciBkcmF3IGNhbGxzIHdpdGggYSBzaW5nbGUgdW5yZXNlcnZlIGZvciBhbGwg
dGhlCisgICAgICAgIHRleHR1cmVzIGluIHRoZSB0ZXh0dXJlIG1hbmFnZXIuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTEyOQorCisgICAgICAgIFRl
c3RzOiBObyBuZXcgZnVuY3Rpb25hbGl0eS4gIENvdmVyZWQgYnkgZXhpc3RpbmcgbGF5b3V0IHRl
c3RzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVy
Q2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudExheWVyQ2hyb21pdW06OmRy
YXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNo
cm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXll
ckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTGF5ZXJDaHJvbWl1bTo6cGFp
bnRDb250ZW50c0lmRGlydHkpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMYXllckNocm9taXVt
Ojp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3Um9vdExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dXBkYXRlQW5kRHJhd0xheWVycyk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnVwZGF0ZUxheWVycyk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnBhaW50TGF5ZXJDb250ZW50cyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlLmNwcDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmUuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRpbGVyQ2hyb21pdW0uY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGlsZXJDaHJvbWl1
bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1cmZhY2VD
aHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdXJmYWNlQ2hyb21pdW06OmRy
YXdTdXJmYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJl
TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFuYWdlcjo6dW5wcm90ZWN0
QWxsVGV4dHVyZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1
cmVNYW5hZ2VyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NI
ZWFkc1VwRGlzcGxheS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0hlYWRzVXBEaXNwbGF5Ojpk
cmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1w
bC5oOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6Om93bmVyKToKKwogMjAxMS0wNC0y
MSAgTWlrZSBSZWVkICA8cmVlZEBnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtl
bm5ldGggUnVzc2VsbC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAJ
KHJldmlzaW9uIDg0NDQ5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODIsNyAr
MTgyLDYgQEAgdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6ZHJhdyhjb25zdCBJbgogICAgIElu
dFJlY3QgbGF5ZXJSZWN0ID0gdmlzaWJsZUxheWVyUmVjdCh0YXJnZXRTdXJmYWNlUmVjdCk7CiAg
ICAgaWYgKCFsYXllclJlY3QuaXNFbXB0eSgpKQogICAgICAgICBtX3RpbGVyLT5kcmF3KGxheWVy
UmVjdCwgdHJhbnNmb3JtLCBjY0xheWVySW1wbCgpLT5kcmF3T3BhY2l0eSgpKTsKLSAgICBtX3Rp
bGVyLT51bnJlc2VydmVUZXh0dXJlcygpOwogfQogCiB2b2lkIENvbnRlbnRMYXllckNocm9taXVt
OjpjcmVhdGVUaWxlcklmTmVlZGVkKCkKQEAgLTIxNSwxMSArMjE0LDYgQEAgdm9pZCBDb250ZW50
TGF5ZXJDaHJvbWl1bTo6YmluZENvbnRlbnRzVAogICAgIHRleHR1cmUtPmJpbmRUZXh0dXJlKCk7
CiB9CiAKLXZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OnVucmVzZXJ2ZUNvbnRlbnRzVGV4dHVy
ZSgpCi17Ci0gICAgbV90aWxlci0+dW5yZXNlcnZlVGV4dHVyZXMoKTsKLX0KLQogdm9pZCBDb250
ZW50TGF5ZXJDaHJvbWl1bTo6c2V0SXNNYXNrKGJvb2wgaXNNYXNrKQogewogICAgIHNldFRpbGlu
Z09wdGlvbihpc01hc2sgPyBOZXZlclRpbGUgOiBBdXRvVGlsZSk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Nv
bnRlbnRMYXllckNocm9taXVtLmgJKHJldmlzaW9uIDg0NDQ5KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTUsNyArNTUsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBhaW50
Q29udGVudHNJZkRpcnR5KGNvbnN0IEludFJlY3QmIHRhcmdldFN1cmZhY2VSZWN0KTsKICAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygpOwogICAgIHZpcnR1YWwgdm9p
ZCBzZXRJc01hc2soYm9vbCk7Ci0gICAgdmlydHVhbCB2b2lkIHVucmVzZXJ2ZUNvbnRlbnRzVGV4
dHVyZSgpOwogICAgIHZpcnR1YWwgdm9pZCBiaW5kQ29udGVudHNUZXh0dXJlKCk7CiAKICAgICB2
aXJ0dWFsIHZvaWQgZHJhdyhjb25zdCBJbnRSZWN0JiB0YXJnZXRTdXJmYWNlUmVjdCk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hy
b21pdW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAJKHJldmlzaW9uIDg0NDQ5KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVt
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQsMTggKzc0LDE4IEBAIHZvaWQgSW1hZ2VMYXllckNo
cm9taXVtOjpwYWludENvbnRlbnRzSWYKIAogICAgIGlmICghbV9kaXJ0eVJlY3QuaXNFbXB0eSgp
KSB7CiAgICAgICAgIG1fZGVjb2RlZEltYWdlLnVwZGF0ZUZyb21JbWFnZShtX2NvbnRlbnRzLT5u
YXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpKTsKKyAgICAgICAgdXBkYXRlTGF5ZXJTaXplKG1f
ZGVjb2RlZEltYWdlLnNpemUoKSk7CisgICAgICAgIEludFJlY3QgcGFpbnRSZWN0KEludFBvaW50
KDAsIDApLCBtX2RlY29kZWRJbWFnZS5zaXplKCkpOworICAgICAgICBpZiAoIW1fZGlydHlSZWN0
LmlzRW1wdHkoKSkgeworICAgICAgICAgICAgbV90aWxlci0+aW52YWxpZGF0ZVJlY3QocGFpbnRS
ZWN0KTsKKyAgICAgICAgICAgIG1fZGlydHlSZWN0ID0gSW50UmVjdCgpOworICAgICAgICB9CiAg
ICAgfQogfQogCiB2b2lkIEltYWdlTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291
cmNlcygpCiB7Ci0gICAgdXBkYXRlTGF5ZXJTaXplKG1fZGVjb2RlZEltYWdlLnNpemUoKSk7Ci0K
ICAgICBJbnRSZWN0IHBhaW50UmVjdChJbnRQb2ludCgwLCAwKSwgbV9kZWNvZGVkSW1hZ2Uuc2l6
ZSgpKTsKLSAgICBpZiAoIW1fZGlydHlSZWN0LmlzRW1wdHkoKSkgewotICAgICAgICBtX3RpbGVy
LT5pbnZhbGlkYXRlUmVjdChwYWludFJlY3QpOwotICAgICAgICBtX2RpcnR5UmVjdCA9IEludFJl
Y3QoKTsKLSAgICB9CiAgICAgbV90aWxlci0+dXBkYXRlRnJvbVBpeGVscyhwYWludFJlY3QsIG1f
ZGVjb2RlZEltYWdlLnBpeGVscygpKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRl
cmVyQ2hyb21pdW0uY3BwCShyZXZpc2lvbiA4NDQ0OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE3MSw3ICsxNzEsNiBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJh
d1Jvb3RMYXllCiAKICAgICBtX3Jvb3RMYXllckNvbnRlbnRUaWxlci0+dXBsb2FkQ2FudmFzKCk7
CiAgICAgbV9yb290TGF5ZXJDb250ZW50VGlsZXItPmRyYXcobV92aWV3cG9ydFZpc2libGVSZWN0
LCBzY3JvbGwsIDEuMGYpOwotICAgIG1fcm9vdExheWVyQ29udGVudFRpbGVyLT51bnJlc2VydmVU
ZXh0dXJlcygpOwogfQogCiB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6c2V0Vmlld3BvcnQo
Y29uc3QgSW50UmVjdCYgdmlzaWJsZVJlY3QsIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBj
b25zdCBJbnRQb2ludCYgc2Nyb2xsUG9zaXRpb24pCkBAIC0yMzUsNiArMjM0LDggQEAgdm9pZCBM
YXllclJlbmRlcmVyQ2hyb21pdW06OnVwZGF0ZUFuZERyYQogCiAgICAgZHJhd0xheWVycyhyZW5k
ZXJTdXJmYWNlTGF5ZXJMaXN0KTsKIAorICAgIG1fdGV4dHVyZU1hbmFnZXItPnVucHJvdGVjdEFs
bFRleHR1cmVzKCk7CisKICAgICAvLyBBZnRlciBkcmF3TGF5ZXJzOgogICAgIGlmIChoYXJkd2Fy
ZUNvbXBvc2l0aW5nKCkgJiYgbV9jb250ZXh0U3VwcG9ydHNMYXRjaCkgewogICAgICAgICBFeHRl
bnNpb25zM0RDaHJvbWl1bSogcGFyZW50RXh0ID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNEQ2hy
b21pdW0qPihtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKSk7CkBAIC0yODIsNyArMjgzLDcgQEAg
dm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnVwZGF0ZUxheWVycwogICAgIC8vIGNvbmNlcHQg
b2YgYSBsYXJnZSBjb250ZW50IGxheWVyLgogICAgIHVwZGF0ZVByb3BlcnRpZXNBbmRSZW5kZXJT
dXJmYWNlcyhtX3Jvb3RMYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIHJlbmRlclN1cmZhY2VM
YXllckxpc3QsIG1fZGVmYXVsdFJlbmRlclN1cmZhY2UtPm1fbGF5ZXJMaXN0KTsKIAotICAgIHBh
aW50Q29udGVudHNSZWN1cnNpdmUobV9yb290TGF5ZXIuZ2V0KCkpOworICAgIHBhaW50TGF5ZXJD
b250ZW50cyhyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKIAogICAgIC8vIEZJWE1FOiBCZWZvcmUg
dXBkYXRlQ29tcG9zaXRvclJlc291cmNlc1JlY3Vyc2l2ZSwgd2hlbiB0aGUgY29tcG9zaXRvciBy
dW5zIGluCiAgICAgLy8gaXRzIG93biB0aHJlYWQsIGFuZCB3aGVuIHRoZSBjb3B5VGV4SW1hZ2Uy
RCBidWcgaXMgZml4ZWQsIGluc2VydApAQCAtMzI4LDYgKzMyOSw0NiBAQCB2b2lkIExheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6dXBkYXRlTGF5ZXJzCiAgICAgfQogfQogCit2b2lkIExheWVyUmVuZGVy
ZXJDaHJvbWl1bTo6cGFpbnRMYXllckNvbnRlbnRzKGNvbnN0IExheWVyTGlzdCYgcmVuZGVyU3Vy
ZmFjZUxheWVyTGlzdCkKK3sKKyAgICBmb3IgKGludCBzdXJmYWNlSW5kZXggPSByZW5kZXJTdXJm
YWNlTGF5ZXJMaXN0LnNpemUoKSAtIDE7IHN1cmZhY2VJbmRleCA+PSAwIDsgLS1zdXJmYWNlSW5k
ZXgpIHsKKyAgICAgICAgQ0NMYXllckltcGwqIHJlbmRlclN1cmZhY2VMYXllciA9IHJlbmRlclN1
cmZhY2VMYXllckxpc3Rbc3VyZmFjZUluZGV4XS5nZXQoKTsKKyAgICAgICAgUmVuZGVyU3VyZmFj
ZUNocm9taXVtKiByZW5kZXJTdXJmYWNlID0gcmVuZGVyU3VyZmFjZUxheWVyLT5yZW5kZXJTdXJm
YWNlKCk7CisgICAgICAgIEFTU0VSVChyZW5kZXJTdXJmYWNlKTsKKworICAgICAgICAvLyBSZW5k
ZXIgc3VyZmFjZXMgd2hvc2UgZHJhd2FibGUgYXJlYSBoYXMgemVybyB3aWR0aCBvciBoZWlnaHQK
KyAgICAgICAgLy8gd2lsbCBoYXZlIG5vIGxheWVycyBhc3NvY2lhdGVkIHdpdGggdGhlbSBhbmQg
c2hvdWxkIGJlIHNraXBwZWQuCisgICAgICAgIGlmICghcmVuZGVyU3VyZmFjZS0+bV9sYXllckxp
c3Quc2l6ZSgpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgTGF5ZXJMaXN0JiBs
YXllckxpc3QgPSByZW5kZXJTdXJmYWNlLT5tX2xheWVyTGlzdDsKKyAgICAgICAgQVNTRVJUKGxh
eWVyTGlzdC5zaXplKCkpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGxheWVySW5kZXggPSAwOyBs
YXllckluZGV4IDwgbGF5ZXJMaXN0LnNpemUoKTsgKytsYXllckluZGV4KSB7CisgICAgICAgICAg
ICBDQ0xheWVySW1wbCogY2NMYXllckltcGwgPSBsYXllckxpc3RbbGF5ZXJJbmRleF0uZ2V0KCk7
CisKKyAgICAgICAgICAgIC8vIExheWVycyB0aGF0IHN0YXJ0IGEgbmV3IHJlbmRlciBzdXJmYWNl
IHdpbGwgYmUgcGFpbnRlZCB3aGVuIHRoZSByZW5kZXIKKyAgICAgICAgICAgIC8vIHN1cmZhY2Un
cyBsaXN0IGlzIHByb2Nlc3NlZC4KKyAgICAgICAgICAgIGlmIChjY0xheWVySW1wbC0+cmVuZGVy
U3VyZmFjZSgpICYmIGNjTGF5ZXJJbXBsLT5yZW5kZXJTdXJmYWNlKCkgIT0gcmVuZGVyU3VyZmFj
ZSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgTGF5ZXJDaHJvbWl1
bSogbGF5ZXIgPSBjY0xheWVySW1wbC0+b3duZXIoKTsKKyAgICAgICAgICAgIGlmIChsYXllci0+
Ym91bmRzKCkuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAg
ICAgICBjb25zdCBJbnRSZWN0IHRhcmdldFN1cmZhY2VSZWN0ID0gbGF5ZXItPmNjTGF5ZXJJbXBs
KCktPnNjaXNzb3JSZWN0KCk7CisKKyAgICAgICAgICAgIGlmIChsYXllci0+ZHJhd3NDb250ZW50
KCkpCisgICAgICAgICAgICAgICAgbGF5ZXItPnBhaW50Q29udGVudHNJZkRpcnR5KHRhcmdldFN1
cmZhY2VSZWN0KTsKKyAgICAgICAgICAgIGlmIChsYXllci0+bWFza0xheWVyKCkgJiYgbGF5ZXIt
Pm1hc2tMYXllcigpLT5kcmF3c0NvbnRlbnQoKSkKKyAgICAgICAgICAgICAgICBsYXllci0+bWFz
a0xheWVyKCktPnBhaW50Q29udGVudHNJZkRpcnR5KHRhcmdldFN1cmZhY2VSZWN0KTsKKyAgICAg
ICAgICAgIGlmIChsYXllci0+cmVwbGljYUxheWVyKCkgJiYgbGF5ZXItPnJlcGxpY2FMYXllcigp
LT5kcmF3c0NvbnRlbnQoKSkKKyAgICAgICAgICAgICAgICBsYXllci0+cmVwbGljYUxheWVyKCkt
PnBhaW50Q29udGVudHNJZkRpcnR5KHRhcmdldFN1cmZhY2VSZWN0KTsKKyAgICAgICAgICAgIGlm
IChsYXllci0+cmVwbGljYUxheWVyKCkgJiYgbGF5ZXItPnJlcGxpY2FMYXllcigpLT5tYXNrTGF5
ZXIoKSAmJiBsYXllci0+cmVwbGljYUxheWVyKCktPm1hc2tMYXllcigpLT5kcmF3c0NvbnRlbnQo
KSkKKyAgICAgICAgICAgICAgICBsYXllci0+cmVwbGljYUxheWVyKCktPm1hc2tMYXllcigpLT5w
YWludENvbnRlbnRzSWZEaXJ0eSh0YXJnZXRTdXJmYWNlUmVjdCk7CisgICAgICAgIH0KKyAgICB9
Cit9CisKIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3TGF5ZXJzKGNvbnN0IExheWVy
TGlzdCYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCkKIHsKICAgICBUUkFDRV9FVkVOVCgiTGF5ZXJS
ZW5kZXJlckNocm9taXVtOjpkcmF3TGF5ZXJzIiwgdGhpcywgMCk7CkBAIC03NjEsMjcgKzgwMiw2
IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjp1cGRhdGVQcm9wZXIKICAgICAgICAgc3Rk
OjpzdGFibGVfc29ydCgmZGVzY2VuZGFudHMuYXQodGhpc0xheWVySW5kZXgpLCBkZXNjZW5kYW50
cy5lbmQoKSwgY29tcGFyZUxheWVyWik7CiB9CiAKLXZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVt
OjpwYWludENvbnRlbnRzUmVjdXJzaXZlKExheWVyQ2hyb21pdW0qIGxheWVyKQotewotICAgIGNv
bnN0IFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiYgc3VibGF5ZXJzID0gbGF5ZXItPmdl
dFN1YmxheWVycygpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3VibGF5ZXJzLnNpemUo
KTsgKytpKQotICAgICAgICBwYWludENvbnRlbnRzUmVjdXJzaXZlKHN1YmxheWVyc1tpXS5nZXQo
KSk7Ci0KLSAgICBpZiAobGF5ZXItPmJvdW5kcygpLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgY29uc3QgSW50UmVjdCB0YXJnZXRTdXJmYWNlUmVjdCA9IGxheWVyLT5jY0xheWVy
SW1wbCgpLT5zY2lzc29yUmVjdCgpOwotCi0gICAgaWYgKGxheWVyLT5kcmF3c0NvbnRlbnQoKSkK
LSAgICAgICAgbGF5ZXItPnBhaW50Q29udGVudHNJZkRpcnR5KHRhcmdldFN1cmZhY2VSZWN0KTsK
LSAgICBpZiAobGF5ZXItPm1hc2tMYXllcigpICYmIGxheWVyLT5tYXNrTGF5ZXIoKS0+ZHJhd3ND
b250ZW50KCkpCi0gICAgICAgIGxheWVyLT5tYXNrTGF5ZXIoKS0+cGFpbnRDb250ZW50c0lmRGly
dHkodGFyZ2V0U3VyZmFjZVJlY3QpOwotICAgIGlmIChsYXllci0+cmVwbGljYUxheWVyKCkgJiYg
bGF5ZXItPnJlcGxpY2FMYXllcigpLT5kcmF3c0NvbnRlbnQoKSkKLSAgICAgICAgbGF5ZXItPnJl
cGxpY2FMYXllcigpLT5wYWludENvbnRlbnRzSWZEaXJ0eSh0YXJnZXRTdXJmYWNlUmVjdCk7Ci0g
ICAgaWYgKGxheWVyLT5yZXBsaWNhTGF5ZXIoKSAmJiBsYXllci0+cmVwbGljYUxheWVyKCktPm1h
c2tMYXllcigpICYmIGxheWVyLT5yZXBsaWNhTGF5ZXIoKS0+bWFza0xheWVyKCktPmRyYXdzQ29u
dGVudCgpKQotICAgICAgICBsYXllci0+cmVwbGljYUxheWVyKCktPm1hc2tMYXllcigpLT5wYWlu
dENvbnRlbnRzSWZEaXJ0eSh0YXJnZXRTdXJmYWNlUmVjdCk7Ci19Ci0KIHZvaWQgTGF5ZXJSZW5k
ZXJlckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzUmVjdXJzaXZlKExheWVyQ2hy
b21pdW0qIGxheWVyKQogewogICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4g
PiYgc3VibGF5ZXJzID0gbGF5ZXItPmdldFN1YmxheWVycygpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJSZW5kZXJlckNocm9taXVtLmgJKHJldmlzaW9uIDg0NDQ5KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgJKHdvcmtp
bmcgY29weSkKQEAgLTE0Myw3ICsxNDMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlUm9v
dExheWVyQ29udGVudHMoKTsKICAgICB2b2lkIHVwZGF0ZVByb3BlcnRpZXNBbmRSZW5kZXJTdXJm
YWNlcyhMYXllckNocm9taXVtKiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHBhcmVudE1h
dHJpeCwgTGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBMYXllckxpc3QmIGxheWVy
cyk7CiAKLSAgICB2b2lkIHBhaW50Q29udGVudHNSZWN1cnNpdmUoTGF5ZXJDaHJvbWl1bSopOwor
ICAgIHZvaWQgcGFpbnRMYXllckNvbnRlbnRzKGNvbnN0IExheWVyTGlzdCYpOwogICAgIHZvaWQg
dXBkYXRlQ29tcG9zaXRvclJlc291cmNlc1JlY3Vyc2l2ZShMYXllckNocm9taXVtKik7CiAKICAg
ICB2b2lkIGRyYXdMYXllcnMoY29uc3QgTGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
VGV4dHVyZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlLmNwcAkocmV2aXNpb24gODQ0NDkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03MSwxMiArNzEsNiBAQCBib29sIExheWVyVGV4dHVyZTo6cmVzZXJ2ZShj
b25zdCBJbnRTaXplCiAgICAgcmV0dXJuIG1fdGV4dHVyZUlkOwogfQogCi12b2lkIExheWVyVGV4
dHVyZTo6dW5yZXNlcnZlKCkKLXsKLSAgICBpZiAobV90b2tlbikKLSAgICAgICAgbV90ZXh0dXJl
TWFuYWdlci0+dW5wcm90ZWN0VGV4dHVyZShtX3Rva2VuKTsKLX0KLQogdm9pZCBMYXllclRleHR1
cmU6OmJpbmRUZXh0dXJlKCkKIHsKICAgICBBU1NFUlQobV90ZXh0dXJlTWFuYWdlci0+aGFzVGV4
dHVyZShtX3Rva2VuKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclRleHR1cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmUuaAkocmV2aXNpb24gODQ0NDkpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmUu
aAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNiBAQCBwdWJsaWM6CiAKICAgICBib29sIGlz
VmFsaWQoY29uc3QgSW50U2l6ZSYsIHVuc2lnbmVkIGZvcm1hdCk7CiAgICAgYm9vbCByZXNlcnZl
KGNvbnN0IEludFNpemUmLCB1bnNpZ25lZCBmb3JtYXQpOwotICAgIHZvaWQgdW5yZXNlcnZlKCk7
CiAgICAgYm9vbCBpc1Jlc2VydmVkKCkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX3RleHR1cmVN
YW5hZ2VyKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyVGlsZXJDaHJvbWl1bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUaWxlckNocm9taXVtLmNwcAkocmV2aXNpb24g
ODQ0NDkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
clRpbGVyQ2hyb21pdW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MDcsMTYgKzQwNyw2IEBAIHZv
aWQgTGF5ZXJUaWxlckNocm9taXVtOjpkcmF3KGNvbnN0IEludFIKICAgICB9CiB9CiAKLXZvaWQg
TGF5ZXJUaWxlckNocm9taXVtOjp1bnJlc2VydmVUZXh0dXJlcygpCi17Ci0gICAgZm9yIChUaWxl
TWFwOjppdGVyYXRvciBpdGVyID0gbV90aWxlcy5iZWdpbigpOyBpdGVyICE9IG1fdGlsZXMuZW5k
KCk7ICsraXRlcikgewotICAgICAgICBUaWxlKiB0aWxlID0gaXRlci0+c2Vjb25kLmdldCgpOwot
ICAgICAgICBpZiAoIXRpbGUpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgdGlsZS0+
dGV4dHVyZSgpLT51bnJlc2VydmUoKTsKLSAgICB9Ci19Ci0KIHZvaWQgTGF5ZXJUaWxlckNocm9t
aXVtOjpncm93TGF5ZXJUb0NvbnRhaW4oY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpCiB7CiAg
ICAgLy8gR3JvdyB0aGUgdGlsZSBhcnJheSB0byBjb250YWluIHRoaXMgY29udGVudCByZWN0LgpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUaWxl
ckNocm9taXVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJUaWxlckNocm9taXVtLmgJKHJldmlzaW9uIDg0NDQ5KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUaWxlckNocm9taXVt
LmgJKHdvcmtpbmcgY29weSkKQEAgLTczLDEwICs3Myw2IEBAIHB1YmxpYzoKICAgICAvLyBEcmF3
IGFsbCB0aWxlcyB0aGF0IGludGVyc2VjdCB3aXRoIHRoZSBjb250ZW50IHJlY3QuCiAgICAgdm9p
ZCBkcmF3KGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYsIGZsb2F0IG9wYWNpdHkpOwogCi0gICAgLy8gSWYgdXBsb2FkQ2FudmFzL3VwZGF0ZUZy
b21QaXhlbHMgaXMgY2FsbGVkLCB0aGlzIG11c3QgYmUgY2FsbGVkIGFmdGVyCi0gICAgLy8gZHJh
dygpIHRvIHVucmVzZXJ2ZSBhbnkgdGV4dHVyZXMgdGhhdCB3ZXJlIHJlc2VydmVkIHByaW9yIHRv
IHVwbG9hZGluZy4KLSAgICB2b2lkIHVucmVzZXJ2ZVRleHR1cmVzKCk7Ci0KICAgICAvLyBTZXQg
cG9zaXRpb24gb2YgdGhpcyB0aWxlZCBsYXllciBpbiBjb250ZW50IHNwYWNlLgogICAgIHZvaWQg
c2V0TGF5ZXJQb3NpdGlvbihjb25zdCBJbnRQb2ludCYgcG9zaXRpb24pOwogICAgIC8vIENoYW5n
ZSB0aGUgdGlsZSBzaXplLiAgVGhpcyBtYXkgaW52YWxpZGF0ZSBhbGwgdGhlIGV4aXN0aW5nIHRp
bGVzLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVu
ZGVyU3VyZmFjZUNocm9taXVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9SZW5kZXJTdXJmYWNlQ2hyb21pdW0uY3BwCShyZXZpc2lv
biA4NDQ0OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Jl
bmRlclN1cmZhY2VDaHJvbWl1bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNiwxMSArMTM2LDYg
QEAgdm9pZCBSZW5kZXJTdXJmYWNlQ2hyb21pdW06OmRyYXdTdXJmYWNlKAogICAgIExheWVyQ2hy
b21pdW06OmRyYXdUZXh0dXJlZFF1YWQobGF5ZXJSZW5kZXJlcigpLT5jb250ZXh0KCksIGxheWVy
UmVuZGVyZXIoKS0+cHJvamVjdGlvbk1hdHJpeCgpLCBkcmF3VHJhbnNmb3JtLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fY29udGVudFJlY3Qud2lkdGgoKSwgbV9j
b250ZW50UmVjdC5oZWlnaHQoKSwgbV9kcmF3T3BhY2l0eSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaGFkZXJNYXRyaXhMb2NhdGlvbiwgc2hhZGVyQWxwaGFMb2Nh
dGlvbik7Ci0KLSAgICBtX2NvbnRlbnRzVGV4dHVyZS0+dW5yZXNlcnZlKCk7Ci0KLSAgICBpZiAo
bWFza0xheWVyKQotICAgICAgICBtYXNrTGF5ZXItPnVucmVzZXJ2ZUNvbnRlbnRzVGV4dHVyZSgp
OwogfQogCiB2b2lkIFJlbmRlclN1cmZhY2VDaHJvbWl1bTo6ZHJhdyhjb25zdCBJbnRSZWN0JikK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVN
YW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5jcHAJKHJldmlzaW9uIDg0NDQ5KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZU1hbmFnZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC04NCwxNyArODQsMTAgQEAgdm9pZCBUZXh0dXJlTWFuYWdlcjo6cHJv
dGVjdFRleHR1cmUoVGV4dAogICAgIG1fdGV4dHVyZXMuYWRkKHRva2VuLCBpbmZvKTsKIH0KIAot
dm9pZCBUZXh0dXJlTWFuYWdlcjo6dW5wcm90ZWN0VGV4dHVyZShUZXh0dXJlVG9rZW4gdG9rZW4p
Cit2b2lkIFRleHR1cmVNYW5hZ2VyOjp1bnByb3RlY3RBbGxUZXh0dXJlcygpCiB7Ci0gICAgVGV4
dHVyZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3RleHR1cmVzLmZpbmQodG9rZW4pOwotICAgIGlmIChp
dCAhPSBtX3RleHR1cmVzLmVuZCgpKSB7Ci0gICAgICAgIFRleHR1cmVJbmZvIGluZm8gPSBpdC0+
c2Vjb25kOwotICAgICAgICBpZiAoaW5mby5pc1Byb3RlY3RlZCkgewotICAgICAgICAgICAgaW5m
by5pc1Byb3RlY3RlZCA9IGZhbHNlOwotICAgICAgICAgICAgbV90ZXh0dXJlcy5yZW1vdmUoaXQp
OwotICAgICAgICAgICAgbV90ZXh0dXJlcy5hZGQodG9rZW4sIGluZm8pOwotICAgICAgICB9Ci0g
ICAgfQorICAgIGZvciAoVGV4dHVyZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3RleHR1cmVzLmJlZ2lu
KCk7IGl0ICE9IG1fdGV4dHVyZXMuZW5kKCk7ICsraXQpCisgICAgICAgIGl0LT5zZWNvbmQuaXNQ
cm90ZWN0ZWQgPSBmYWxzZTsKIH0KIAogYm9vbCBUZXh0dXJlTWFuYWdlcjo6cmVkdWNlTWVtb3J5
VG9MaW1pdChzaXplX3QgbGltaXQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmgJKHJldmlzaW9u
IDg0NDQ5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4
dHVyZU1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAg
ICAgdW5zaWduZWQgcmVxdWVzdFRleHR1cmUoVGV4dHVyZVRva2VuLCBJbnRTaXplLCB1bnNpZ25l
ZCB0ZXh0dXJlRm9ybWF0LCBib29sKiBuZXdUZXh0dXJlID0gMCk7CiAKICAgICB2b2lkIHByb3Rl
Y3RUZXh0dXJlKFRleHR1cmVUb2tlbik7Ci0gICAgdm9pZCB1bnByb3RlY3RUZXh0dXJlKFRleHR1
cmVUb2tlbik7CisgICAgdm9pZCB1bnByb3RlY3RBbGxUZXh0dXJlcygpOwogICAgIGJvb2wgaXNQ
cm90ZWN0ZWQoVGV4dHVyZVRva2VuKTsKIAogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
SGVhZHNVcERpc3BsYXkuY3BwCShyZXZpc2lvbiA4NDQ0OSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMjIsOCArMTIyLDYgQEAgdm9pZCBDQ0hlYWRzVXBEaXNwbGF5OjpkcmF3KCkK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdHJpeCwgaHVkU2l6ZS53aWR0
aCgpLCBodWRTaXplLmhlaWdodCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMS4wZiwgcHJvZ3JhbS0+dmVydGV4U2hhZGVyKCkubWF0cml4TG9jYXRpb24oKSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCku
YWxwaGFMb2NhdGlvbigpKTsKLQotICAgIG1faHVkVGV4dHVyZS0+dW5yZXNlcnZlKCk7CiB9CiAK
IHZvaWQgQ0NIZWFkc1VwRGlzcGxheTo6ZHJhd0h1ZENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCog
Y3R4LCBjb25zdCBJbnRTaXplJiBodWRTaXplKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCShy
ZXZpc2lvbiA4NDQ0OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDYgKzUxLDcgQEAgcHVi
bGljOgogICAgIC8vIFdoZW4gdGhpcyBjbGFzcyBnZXRzIHN1YmNsYXNzZXMsIHJlbWVtYmVyIHRv
IGFkZCAndmlydHVhbCcgaGVyZS4KICAgICB2aXJ0dWFsIH5DQ0xheWVySW1wbCgpOwogICAgIHZv
aWQgcmVzZXRPd25lcigpIHsgbV9vd25lciA9IDA7IH0KKyAgICBMYXllckNocm9taXVtKiBvd25l
cigpIGNvbnN0IHsgcmV0dXJuIG1fb3duZXI7IH0KIAogI2lmbmRlZiBOREVCVUcKICAgICBpbnQg
ZGVidWdJRCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdJRDsgfQo=
</data>
<flag name="review"
          id="83338"
          type_id="1"
          status="+"
          setter="jamesr"
    />
          </attachment>
      

    </bug>

</bugzilla>