<?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>163769</bug_id>
          
          <creation_ts>2016-10-20 17:56:37 -0700</creation_ts>
          <short_desc>[Win][Direct2D] Correct some memory leaks and other minor bugs</short_desc>
          <delta_ts>2016-10-21 10:26:34 -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>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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>161817</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>achristensen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>pvollan</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1242696</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-10-20 17:56:37 -0700</bug_when>
    <thetext>While playing with http://browserbench.org/MotionMark I discovered a few leaks, as well as some drawing errors.

This patch corrects a number of problems found while running the benchmark.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1242703</commentid>
    <comment_count>1</comment_count>
      <attachid>292301</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-10-20 18:08:16 -0700</bug_when>
    <thetext>Created attachment 292301
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1242948</commentid>
    <comment_count>2</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-10-21 10:14:18 -0700</bug_when>
    <thetext>Committed in r207681. &lt;https://trac.webkit.org/changeset/207681&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1242959</commentid>
    <comment_count>3</comment_count>
      <attachid>292301</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-10-21 10:26:34 -0700</bug_when>
    <thetext>Comment on attachment 292301
Patch

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

&gt; Source/WebCore/platform/graphics/win/GradientDirect2D.cpp:72
&gt; +    if (m_gradient) {
&gt; +        m_gradient-&gt;Release();
&gt; +        m_gradient = nullptr;
&gt; +    }

Can we use smart pointers?

&gt; Source/WebCore/platform/graphics/win/PathDirect2D.cpp:74
&gt; +    if (m_path)
&gt; +        m_path-&gt;Release();

Can we use a smart pointer?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292301</attachid>
            <date>2016-10-20 18:08:16 -0700</date>
            <delta_ts>2016-10-21 10:10:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>cleanups.patch</filename>
            <type>text/plain</type>
            <size>16971</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNzY0NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDE2LTEwLTIwICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtXaW5dW0RpcmVjdDJEXSBD
b3JyZWN0IHNvbWUgbWVtb3J5IGxlYWtzIGFuZCBvdGhlciBtaW5vciBidWdzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM3NjkKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTZXZlcmFsIEQyRCBoYW5kbGVz
IHdlcmUgYmVpbmcgbGVha2VkLgorIAorICAgICAgICBEaXJlY3QyRCBzb21ldGltZXMgcmV0dXJu
cyBhbiBpbmZpbml0ZSByZWN0IGNvbnRhaW5pbmcgeyAtaW5mLCAtaW5mLCBGbG9hdE1heCwgRmxv
YXRNYXggfSwKKyAgICAgICAgc29tZXRpbWVzIHsgLUZsb2F0TWF4LCAtRmxvYXRNYXgsIGluZiwg
aW5mIH0sIGFuZCB2YXJpb3VzIGNvbWJpbmF0aW9ucyB0aGVyZW9mLiBUaGlzIGNhdXNlZAorICAg
ICAgICBtb3N0IFNWRyBkcmF3aW5nIHRvIGRlY2lkZSBubyBzY3JlZW4gcmVjdCB3YXMgY29udGFp
bmVkIGluIHRoZSAiaW5maW5pdGUgcmVjdCIgc28gbm90aGluZworICAgICAgICB3b3VsZCBiZSBk
cmF3bi4KKyAgICAgICAgCisgICAgICAgIFRlc3RlZCBieSBleGlzdGluZyBsYXlvdXQgdGVzdHMu
IAorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Zsb2F0UmVjdERpcmVjdDJELmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmlzSW5maW5pdGVSZWN0KTogUmVjb2duaXplIHZhcmlvdXMgaW5maW5pdGUg
cmVjdHMgaW4gV2luZG93cy4KKyAgICAgICAgKFdlYkNvcmU6OkZsb2F0UmVjdDo6RmxvYXRSZWN0
KTogQ29udmVydCBhIFdpbmRvd3MgaW5maW5pdGUgcmVjdCB0byB0aGUgc3R5bGUKKyAgICAgICAg
d2UgdXNlIGluc2lkZSBXZWJLaXQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Zv
bnRDYXNjYWRlRGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRy
YXdHbHlwaHMpOiBVc2UgY2FjaGVkIGJydXNoZXMgaWYgcG9zc2libGUuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0dseXBoUGFnZVRyZWVOb2RlRGlyZWN0MkQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R2x5cGhQYWdlOjpmaWxsKTogRG9uJ3QgdGVybWluYXRlIG9uIHRoaXMgZXJy
b3IgY2FzZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhZGllbnREaXJlY3Qy
RC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFkaWVudDo6Z2VuZXJhdGVHcmFkaWVudCk6IERv
bid0IGxlYWsgZ3JhZGllbnRzLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFw
aGljc0NvbnRleHREaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRQbGF0Zm9ybVByaXZhdGU6OmJydXNoV2l0aENvbG9yKTogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ6OmJydXNoV2l0aENvbG9yKTogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU6OmNvbmNhdENUTSk6IFBlcmZv
cm0gdHJhbnNmb3JtIG11bHRpcGxpY2F0aW9uCisgICAgICAgIGluIHRoZSByaWdodCBvcmRlciAo
aGludDogaXQncyBub3QgZGlzdHJpYnV0aXZlKS4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6ZHJhd1dpdGhTaGFkb3cpOiBVc2UgY29udmVuaWVuY2UgbWV0aG9kLgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdCk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUZpbGxSb3VuZGVkUmVjdCk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjbGVhclJlY3QpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TdHJva2VDb2xv
cik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9y
bUZpbGxDb2xvcik6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9QYXRo
RGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF0aDo6cG9seWdvblBhdGhGcm9tUG9p
bnRzKTogTm8gbmVlZCB0byBjb252ZXJ0IG1hbnVhbGx5LgorICAgICAgICAoV2ViQ29yZTo6UGF0
aDo6flBhdGgpOiBEb24ndCBsZWFrIElEMkQxR2VvbWV0cnkgZW50aXRpZXMuCisgICAgICAgIChX
ZWJDb3JlOjpQYXRoOjphcHBlbmRHZW9tZXRyeSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
UGF0aDo6Y3JlYXRlR2VvbWV0cnlXaXRoRmlsbE1vZGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OlBhdGg6OlBhdGgpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlBhdGg6Om9wZXJhdG9y
PSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UGF0aDo6c3Ryb2tlQm91bmRpbmdSZWN0KTog
UHJvdmlkZSBhbiBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OlBhdGg6OmFkZFJl
Y3QpOiBObyBuZWVkIGZvciBtYW51YWwgY2FzdGluZyBoZXJlLgorCiAyMDE2LTEwLTIwICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgTWFueSBXZWJH
TCBmdW5jdGlvbnMgd2hpY2ggZG9uJ3QgdGhyb3cgYXJlIG1hcmtlZCBhcyBwb3NzaWJseSB0aHJv
d2luZwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0LmgJKHJldmlzaW9uIDIwNzYyMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0
Miw3IEBAIHR5cGVkZWYgc3RydWN0IENHQ29udGV4dCBQbGF0Zm9ybUdyYXBoaWMKIGludGVyZmFj
ZSBJRDJEMURDUmVuZGVyVGFyZ2V0OwogaW50ZXJmYWNlIElEMkQxUmVuZGVyVGFyZ2V0OwogaW50
ZXJmYWNlIElEMkQxRmFjdG9yeTsKK2ludGVyZmFjZSBJRDJEMVNvbGlkQ29sb3JCcnVzaDsKIHR5
cGVkZWYgSUQyRDFSZW5kZXJUYXJnZXQgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQ7CiAjZWxpZiBV
U0UoQ0FJUk8pCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01NTksNiArNTYwLDggQEAgcHVibGlj
OgogICAgIElEMkQxQnJ1c2gqIHNvbGlkRmlsbEJydXNoKCkgY29uc3Q7CiAgICAgSUQyRDFCcnVz
aCogcGF0dGVyblN0cm9rZUJydXNoKCkgY29uc3Q7CiAgICAgSUQyRDFCcnVzaCogcGF0dGVybkZp
bGxCcnVzaCgpIGNvbnN0OworCisgICAgSUQyRDFTb2xpZENvbG9yQnJ1c2gqIGJydXNoV2l0aENv
bG9yKGNvbnN0IENvbG9yJik7CiAjZW5kaWYKICNlbHNlIC8vIFBMQVRGT1JNKFdJTikKICAgICBi
b29sIHNob3VsZEluY2x1ZGVDaGlsZFdpbmRvd3MoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Zsb2F0UmVjdERpcmVj
dDJELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vRmxvYXRSZWN0RGlyZWN0MkQuY3BwCShyZXZpc2lvbiAyMDc2MjEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRmxvYXRSZWN0RGlyZWN0MkQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMywxMCArMzMsMzMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitzdGF0
aWMgYm9vbCBpc0luZmluaXRlUmVjdChjb25zdCBEMkQxX1JFQ1RfRiYgcmVjdCkKK3sKKyAgICBp
ZiAoIXN0ZDo6aXNpbmYocmVjdC50b3ApICYmIHJlY3QudG9wICE9IC1zdGQ6Om51bWVyaWNfbGlt
aXRzPGZsb2F0Pjo6bWF4KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghc3Rk
Ojppc2luZihyZWN0LmxlZnQpICYmIHJlY3QubGVmdCAhPSAtc3RkOjpudW1lcmljX2xpbWl0czxm
bG9hdD46Om1heCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIXN0ZDo6aXNp
bmYocmVjdC5ib3R0b20pICYmIHJlY3QuYm90dG9tICE9IHN0ZDo6bnVtZXJpY19saW1pdHM8Zmxv
YXQ+OjptYXgoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFzdGQ6OmlzaW5m
KHJlY3QucmlnaHQpICYmIHJlY3QucmlnaHQgIT0gc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46
Om1heCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwog
RmxvYXRSZWN0OjpGbG9hdFJlY3QoY29uc3QgRDJEMV9SRUNUX0YmIHIpCi0gICAgOiBtX2xvY2F0
aW9uKEZsb2F0UG9pbnQoci5sZWZ0LCByLnRvcCkpCi0gICAgLCBtX3NpemUoRmxvYXRTaXplKHIu
cmlnaHQgLSByLmxlZnQsIHIuYm90dG9tIC0gci50b3ApKQogeworICAgIC8vIEluZmluaXRlIFJl
Y3QgY2FzZToKKyAgICBpZiAoaXNJbmZpbml0ZVJlY3QocikpIHsKKyAgICAgICAgKnRoaXMgPSBp
bmZpbml0ZVJlY3QoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fbG9jYXRpb24g
PSBGbG9hdFBvaW50KHIubGVmdCwgci50b3ApOworICAgIG1fc2l6ZSA9IEZsb2F0U2l6ZShyLnJp
Z2h0IC0gci5sZWZ0LCByLmJvdHRvbSAtIHIudG9wKTsKIH0KIAogRmxvYXRSZWN0OjpvcGVyYXRv
ciBEMkQxX1JFQ1RfRigpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udENhc2NhZGVEaXJlY3QyRC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYXNjYWRlRGlyZWN0MkQuY3BwCShyZXZp
c2lvbiAyMDc2MjEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9u
dENhc2NhZGVEaXJlY3QyRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyOSwxMyArMTI5LDEwIEBA
IHZvaWQgRm9udENhc2NhZGU6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb24KICAgICAgICAgLy8gSWYg
c2hhZG93cyBhcmUgaWdub3JpbmcgdHJhbnNmb3JtcywgdGhlbiB3ZSBoYXZlbid0IGFwcGxpZWQg
dGhlIFkgY29vcmRpbmF0ZSBmbGlwIHlldCwgc28gZG93biBpcyBuZWdhdGl2ZS4KICAgICAgICAg
ZmxvYXQgc2hhZG93VGV4dFkgPSBwb2ludC55KCkgKyB0cmFuc2xhdGlvbi5oZWlnaHQoKSArIHNo
YWRvd09mZnNldC5oZWlnaHQoKSAqIChncmFwaGljc0NvbnRleHQuc2hhZG93c0lnbm9yZVRyYW5z
Zm9ybXMoKSA/IC0xIDogMSk7CiAKLSAgICAgICAgQ09NUHRyPElEMkQxU29saWRDb2xvckJydXNo
PiBzaGFkb3dCcnVzaDsKLSAgICAgICAgaWYgKCFTVUNDRUVERUQoY29udGV4dC0+Q3JlYXRlU29s
aWRDb2xvckJydXNoKGdyYXBoaWNzQ29udGV4dC5jb2xvcldpdGhHbG9iYWxBbHBoYShzaGFkb3dG
aWxsQ29sb3IpLCAmc2hhZG93QnJ1c2gpKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAg
ICBjb250ZXh0LT5EcmF3R2x5cGhSdW4oRDJEMTo6UG9pbnQyRihzaGFkb3dUZXh0WCwgc2hhZG93
VGV4dFkpLCAmZ2x5cGhSdW4sIHNoYWRvd0JydXNoLmdldCgpKTsKKyAgICAgICAgYXV0byBzaGFk
b3dCcnVzaCA9IGdyYXBoaWNzQ29udGV4dC5icnVzaFdpdGhDb2xvcihzaGFkb3dGaWxsQ29sb3Ip
OworICAgICAgICBjb250ZXh0LT5EcmF3R2x5cGhSdW4oRDJEMTo6UG9pbnQyRihzaGFkb3dUZXh0
WCwgc2hhZG93VGV4dFkpLCAmZ2x5cGhSdW4sIHNoYWRvd0JydXNoKTsKICAgICAgICAgaWYgKGZv
bnQuc3ludGhldGljQm9sZE9mZnNldCgpKQotICAgICAgICAgICAgY29udGV4dC0+RHJhd0dseXBo
UnVuKEQyRDE6OlBvaW50MkYoc2hhZG93VGV4dFggKyBmb250LnN5bnRoZXRpY0JvbGRPZmZzZXQo
KSwgc2hhZG93VGV4dFkpLCAmZ2x5cGhSdW4sIHNoYWRvd0JydXNoLmdldCgpKTsKKyAgICAgICAg
ICAgIGNvbnRleHQtPkRyYXdHbHlwaFJ1bihEMkQxOjpQb2ludDJGKHNoYWRvd1RleHRYICsgZm9u
dC5zeW50aGV0aWNCb2xkT2Zmc2V0KCksIHNoYWRvd1RleHRZKSwgJmdseXBoUnVuLCBzaGFkb3dC
cnVzaCk7CiAgICAgfQogCiAgICAgY29udGV4dC0+RHJhd0dseXBoUnVuKEQyRDE6OlBvaW50MkYo
cG9pbnQueCgpICsgdHJhbnNsYXRpb24ud2lkdGgoKSwgcG9pbnQueSgpICsgdHJhbnNsYXRpb24u
aGVpZ2h0KCkpLCAmZ2x5cGhSdW4sIGdyYXBoaWNzQ29udGV4dC5zb2xpZEZpbGxCcnVzaCgpKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HbHlwaFBhZ2VUcmVl
Tm9kZURpcmVjdDJELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vR2x5cGhQYWdlVHJlZU5vZGVEaXJlY3QyRC5jcHAJKHJldmlzaW9uIDIwNzYy
MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HbHlwaFBhZ2VUcmVl
Tm9kZURpcmVjdDJELmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsNyArNjcsOCBAQCBib29sIEds
eXBoUGFnZTo6ZmlsbChVQ2hhciogYnVmZmVyLCB1bnNpCiAgICAgaHIgPSBhbmFseXplci0+R2V0
R2x5cGhzKGJ1ZmZlciwgYnVmZmVyTGVuZ3RoLCBmb250UGxhdGZvcm1EYXRhLmR3Rm9udEZhY2Uo
KSwgZm9udFBsYXRmb3JtRGF0YS5vcmllbnRhdGlvbigpID09IFZlcnRpY2FsLCBmYWxzZSwKICAg
ICAgICAgJmhlbHBlci5tX2FuYWx5c2lzLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxs
cHRyLCAwLCBHbHlwaFBhZ2U6OnNpemUsIGNsdXN0ZXJNYXAsIHRleHRQcm9wZXJ0aWVzLmRhdGEo
KSwKICAgICAgICAgbG9jYWxHbHlwaEJ1ZmZlciwgZ2x5cGhQcm9wZXJ0aWVzLmRhdGEoKSwgJnJl
dHVybmVkQ291bnQpOwotICAgIFJFTEVBU0VfQVNTRVJUKFNVQ0NFRURFRChocikpOworICAgIGlm
ICghU1VDQ0VFREVEKGhyKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IEdseXBoUGFnZTo6c2l6ZTsgaSsrKSB7CiAgICAgICAgIEdseXBoIGds
eXBoID0gbG9jYWxHbHlwaEJ1ZmZlcltpXTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9HcmFkaWVudERpcmVjdDJELmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhZGllbnREaXJlY3QyRC5jcHAJKHJldmlz
aW9uIDIwNzYyMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFk
aWVudERpcmVjdDJELmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYsNiArNjYsMTEgQEAgdm9pZCBH
cmFkaWVudDo6Z2VuZXJhdGVHcmFkaWVudChJRDJEMVJlbgogICAgIEhSRVNVTFQgaHIgPSByZW5k
ZXJUYXJnZXQtPkNyZWF0ZUdyYWRpZW50U3RvcENvbGxlY3Rpb24oZ3JhZGllbnRTdG9wcy5kYXRh
KCksIGdyYWRpZW50U3RvcHMuc2l6ZSgpLCAmZ3JhZGllbnRTdG9wQ29sbGVjdGlvbik7CiAgICAg
UkVMRUFTRV9BU1NFUlQoU1VDQ0VFREVEKGhyKSk7CiAKKyAgICBpZiAobV9ncmFkaWVudCkgewor
ICAgICAgICBtX2dyYWRpZW50LT5SZWxlYXNlKCk7CisgICAgICAgIG1fZ3JhZGllbnQgPSBudWxs
cHRyOworICAgIH0KKwogICAgIGlmIChtX3JhZGlhbCkgewogICAgICAgICBGbG9hdFNpemUgb2Zm
c2V0ID0gcDEoKSAtIHAwKCk7CiAgICAgICAgIElEMkQxUmFkaWFsR3JhZGllbnRCcnVzaCogcmFk
aWFsR3JhZGllbnQgPSBudWxscHRyOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQu
Y3BwCShyZXZpc2lvbiAyMDc2MjEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzQs
NyArMjc0LDcgQEAgQ09NUHRyPElEMkQxU29saWRDb2xvckJydXNoPiBHcmFwaGljc0NvbgogICAg
IH0KIAogICAgIGF1dG8gZXhpc3RpbmdCcnVzaCA9IG1fc29saWRDb2xvcmVkQnJ1c2hDYWNoZS5l
bnN1cmUoY29sb3JLZXksIFt0aGlzLCBjb2xvcl0gewotICAgICAgICBJRDJEMVNvbGlkQ29sb3JC
cnVzaCogY29sb3JCcnVzaCA9IG51bGxwdHI7CisgICAgICAgIENPTVB0cjxJRDJEMVNvbGlkQ29s
b3JCcnVzaD4gY29sb3JCcnVzaDsKICAgICAgICAgbV9yZW5kZXJUYXJnZXQtPkNyZWF0ZVNvbGlk
Q29sb3JCcnVzaChjb2xvciwgJmNvbG9yQnJ1c2gpOwogICAgICAgICByZXR1cm4gY29sb3JCcnVz
aDsKICAgICB9KTsKQEAgLTI4Miw2ICsyODIsMTEgQEAgQ09NUHRyPElEMkQxU29saWRDb2xvckJy
dXNoPiBHcmFwaGljc0NvbgogICAgIHJldHVybiBleGlzdGluZ0JydXNoLml0ZXJhdG9yLT52YWx1
ZTsKIH0KIAorSUQyRDFTb2xpZENvbG9yQnJ1c2gqIEdyYXBoaWNzQ29udGV4dDo6YnJ1c2hXaXRo
Q29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQoreworICAgIHJldHVybiBtX2RhdGEtPmJydXNoV2l0
aENvbG9yKGNvbG9yV2l0aEdsb2JhbEFscGhhKGNvbG9yKSkuZ2V0KCk7Cit9CisKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOjpjbGlwKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkK
IHsKICAgICBpZiAobV9yZW5kZXJTdGF0ZXMuaXNFbXB0eSgpKQpAQCAtMzIwLDcgKzMyNSw4IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOjpjb24KICAgICBEMkQxX01BVFJJ
WF8zWDJfRiBjdXJyZW50VHJhbnNmb3JtOwogICAgIG1fcmVuZGVyVGFyZ2V0LT5HZXRUcmFuc2Zv
cm0oJmN1cnJlbnRUcmFuc2Zvcm0pOwogCi0gICAgbV9yZW5kZXJUYXJnZXQtPlNldFRyYW5zZm9y
bShhZmZpbmVUcmFuc2Zvcm0gKiBBZmZpbmVUcmFuc2Zvcm0oY3VycmVudFRyYW5zZm9ybSkpOwor
ICAgIEQyRDFfTUFUUklYXzNYMl9GIHRyYW5zZm9ybVRvQ29uY2F0ID0gYWZmaW5lVHJhbnNmb3Jt
OworICAgIG1fcmVuZGVyVGFyZ2V0LT5TZXRUcmFuc2Zvcm0odHJhbnNmb3JtVG9Db25jYXQgKiBj
dXJyZW50VHJhbnNmb3JtKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZh
dGU6OmZsdXNoKCkKQEAgLTg4Miw3ICs4ODgsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJh
d1dpdGhTaGFkb3coY29uCiAKICAgICBkZXZpY2VDb250ZXh0LT5CZWdpbkRyYXcoKTsKICAgICBk
ZXZpY2VDb250ZXh0LT5EcmF3SW1hZ2UoY29tcG9zaXRvci5nZXQoKSwgRDJEMV9JTlRFUlBPTEFU
SU9OX01PREVfTElORUFSKTsKLSAgICBkZXZpY2VDb250ZXh0LT5FbmREcmF3KCk7CisgICAgaHIg
PSBkZXZpY2VDb250ZXh0LT5FbmREcmF3KCk7CisgICAgQVNTRVJUKFNVQ0NFRURFRChocikpOwog
fQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFBhdGgoY29uc3QgUGF0aCYgcGF0aCkKQEAg
LTEwNTEsNyArMTA1OCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBG
bG8KIAogICAgIGRyYXdXaXRob3V0U2hhZG93KHJlY3QsIFt0aGlzLCByZWN0LCBjb2xvcl0oSUQy
RDFSZW5kZXJUYXJnZXQqIHJlbmRlclRhcmdldCkgewogICAgICAgICBjb25zdCBEMkQxX1JFQ1Rf
RiBkMmRSZWN0ID0gcmVjdDsKLSAgICAgICAgcmVuZGVyVGFyZ2V0LT5GaWxsUmVjdGFuZ2xlKCZk
MmRSZWN0LCBtX2RhdGEtPmJydXNoV2l0aENvbG9yKGNvbG9yV2l0aEdsb2JhbEFscGhhKGNvbG9y
KSkuZ2V0KCkpOworICAgICAgICByZW5kZXJUYXJnZXQtPkZpbGxSZWN0YW5nbGUoJmQyZFJlY3Qs
IGJydXNoV2l0aENvbG9yKGNvbG9yKSk7CiAgICAgfSk7CiB9CiAKQEAgLTEwODUsOCArMTA5Miw3
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUZpbGxSb3VuZGUKICAgICBib29sIGhh
c0N1c3RvbUZpbGwgPSBtX3N0YXRlLmZpbGxHcmFkaWVudCB8fCBtX3N0YXRlLmZpbGxQYXR0ZXJu
OwogICAgIGlmICghaGFzQ3VzdG9tRmlsbCAmJiBlcXVhbFdpZHRocyAmJiBlcXVhbEhlaWdodHMg
JiYgcmFkaWkudG9wTGVmdCgpLndpZHRoKCkgKiAyID09IHIud2lkdGgoKSAmJiByYWRpaS50b3BM
ZWZ0KCkuaGVpZ2h0KCkgKiAyID09IHIuaGVpZ2h0KCkpIHsKICAgICAgICAgYXV0byByb3VuZGVk
UmVjdCA9IEQyRDE6OlJvdW5kZWRSZWN0KHIsIHJhZGlpLnRvcExlZnQoKS53aWR0aCgpLCByYWRp
aS50b3BMZWZ0KCkuaGVpZ2h0KCkpOwotICAgICAgICBDT01QdHI8SUQyRDFTb2xpZENvbG9yQnJ1
c2g+IGZpbGxCcnVzaCA9IG1fZGF0YS0+YnJ1c2hXaXRoQ29sb3IoY29sb3JXaXRoR2xvYmFsQWxw
aGEoY29sb3IpKTsKLSAgICAgICAgY29udGV4dC0+RmlsbFJvdW5kZWRSZWN0YW5nbGUocm91bmRl
ZFJlY3QsIGZpbGxCcnVzaC5nZXQoKSk7CisgICAgICAgIGNvbnRleHQtPkZpbGxSb3VuZGVkUmVj
dGFuZ2xlKHJvdW5kZWRSZWN0LCBicnVzaFdpdGhDb2xvcihjb2xvcikpOwogICAgIH0gZWxzZSB7
CiAgICAgICAgIEQyRENvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKm1fZGF0YSk7CiAgICAg
ICAgIHNldEZpbGxDb2xvcihjb2xvcik7CkBAIC0xMzQ1LDcgKzEzNTEsNyBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6Y2xlYXJSZWN0KGNvbnN0IEZsCiAKICAgICAgICAgcmVuZGVyVGFyZ2V0LT5T
ZXRUYWdzKDEsIF9fTElORV9fKTsKICAgICAgICAgcmVjdFRvQ2xlYXIuaW50ZXJzZWN0KHJlbmRl
clRhcmdldFJlY3QpOwotICAgICAgICByZW5kZXJUYXJnZXQtPkZpbGxSZWN0YW5nbGUocmVjdFRv
Q2xlYXIsIG1fZGF0YS0+YnJ1c2hXaXRoQ29sb3IoY29sb3JXaXRoR2xvYmFsQWxwaGEoZmlsbENv
bG9yKCkpKS5nZXQoKSk7CisgICAgICAgIHJlbmRlclRhcmdldC0+RmlsbFJlY3RhbmdsZShyZWN0
VG9DbGVhciwgc29saWRGaWxsQnJ1c2goKSk7CiAgICAgfSk7CiB9CiAKQEAgLTE2NjgsNyArMTY3
NCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVN0cm9rZUMKIAogICAgIG1f
ZGF0YS0+bV9zb2xpZFN0cm9rZUJydXNoID0gbnVsbHB0cjsKIAotICAgIG1fZGF0YS0+bV9zb2xp
ZFN0cm9rZUJydXNoID0gbV9kYXRhLT5icnVzaFdpdGhDb2xvcihjb2xvcldpdGhHbG9iYWxBbHBo
YShzdHJva2VDb2xvcigpKSk7CisgICAgbV9kYXRhLT5tX3NvbGlkU3Ryb2tlQnJ1c2ggPSBicnVz
aFdpdGhDb2xvcihzdHJva2VDb2xvcigpKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNl
dFBsYXRmb3JtU3Ryb2tlVGhpY2tuZXNzKGZsb2F0IHRoaWNrbmVzcykKQEAgLTE2ODMsNyArMTY4
OSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybUZpbGxDb2wKIAogICAgIG1f
ZGF0YS0+bV9zb2xpZEZpbGxCcnVzaCA9IG51bGxwdHI7CiAKLSAgICBtX2RhdGEtPm1fc29saWRG
aWxsQnJ1c2ggPSBtX2RhdGEtPmJydXNoV2l0aENvbG9yKGNvbG9yV2l0aEdsb2JhbEFscGhhKGZp
bGxDb2xvcigpKSk7CisgICAgbV9kYXRhLT5tX3NvbGlkRmlsbEJydXNoID0gYnJ1c2hXaXRoQ29s
b3IoZmlsbENvbG9yKCkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1T
aG91bGRBbnRpYWxpYXMoYm9vbCBlbmFibGUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vUGF0aERpcmVjdDJELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vUGF0aERpcmVjdDJELmNwcAkocmV2aXNpb24gMjA3
NjIxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1BhdGhEaXJlY3Qy
RC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcgQEAgUGF0aCBQYXRoOjpwb2x5Z29u
UGF0aEZyb21Qb2ludHMoY29uc3QgVgogICAgIFZlY3RvcjxEMkQxX1BPSU5UXzJGLCAzMj4gZDJk
UG9pbnRzOwogICAgIGQyZFBvaW50cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHBvaW50cy5zaXpl
KCkgLSAxKTsKICAgICBmb3IgKGF1dG8gcG9pbnQgOiBwb2ludHMpCi0gICAgICAgIGQyZFBvaW50
cy51bmNoZWNrZWRBcHBlbmQoRDJEMTo6UG9pbnQyRihwb2ludC54KCksIHBvaW50LnkoKSkpOwor
ICAgICAgICBkMmRQb2ludHMudW5jaGVja2VkQXBwZW5kKHBvaW50KTsKIAogICAgIHBhdGgubW92
ZVRvKHBvaW50cy5maXJzdCgpKTsKIApAQCAtNzAsNiArNzAsOCBAQCBQYXRoOjpQYXRoKCkKIAog
UGF0aDo6flBhdGgoKQogeworICAgIGlmIChtX3BhdGgpCisgICAgICAgIG1fcGF0aC0+UmVsZWFz
ZSgpOwogfQogCiBQbGF0Zm9ybVBhdGhQdHIgUGF0aDo6ZW5zdXJlUGxhdGZvcm1QYXRoKCkKQEAg
LTg5LDE4ICs5MSwyNCBAQCB2b2lkIFBhdGg6OmFwcGVuZEdlb21ldHJ5KElEMkQxR2VvbWV0cnkq
CiAgICAgdW5zaWduZWQgZ2VvbWV0cnlDb3VudCA9IG1fcGF0aCA/IG1fcGF0aC0+R2V0U291cmNl
R2VvbWV0cnlDb3VudCgpIDogMDsKICAgICBWZWN0b3I8SUQyRDFHZW9tZXRyeSo+IGdlb21ldHJp
ZXMoZ2VvbWV0cnlDb3VudCwgbnVsbHB0cik7CiAKKyAgICAvLyBOb3RlOiAnR2V0U291cmNlR2Vv
bWV0cmllcycgcmV0dXJucyBnZW9tZXRyaWVzIHRoYXQgaGF2ZSBhICsxIHJlZiBjb3VudC4KKyAg
ICAvLyBzbyB0aGV5IG11c3QgYmUgcmVsZWFzZWQgYmVmb3JlIHdlIHJldHVybi4KICAgICBpZiAo
Z2VvbWV0cnlDb3VudCkKICAgICAgICAgbV9wYXRoLT5HZXRTb3VyY2VHZW9tZXRyaWVzKGdlb21l
dHJpZXMuZGF0YSgpLCBnZW9tZXRyeUNvdW50KTsKIAorICAgIGdlb21ldHJ5LT5BZGRSZWYoKTsK
ICAgICBnZW9tZXRyaWVzLmFwcGVuZChnZW9tZXRyeSk7CiAKICAgICBhdXRvIGZpbGxNb2RlID0g
bV9wYXRoID8gbV9wYXRoLT5HZXRGaWxsTW9kZSgpIDogRDJEMV9GSUxMX01PREVfV0lORElORzsK
IAotICAgIENPTVB0cjxJRDJEMUdlb21ldHJ5R3JvdXA+IHByb3RlY3RlZFBhdGggPSBtX3BhdGg7
CisgICAgQ09NUHRyPElEMkQxR2VvbWV0cnlHcm91cD4gcHJvdGVjdGVkUGF0aCA9IGFkb3B0Q09N
KG1fcGF0aCk7CiAgICAgbV9wYXRoID0gbnVsbHB0cjsKIAogICAgIEhSRVNVTFQgaHIgPSBHcmFw
aGljc0NvbnRleHQ6OnN5c3RlbUZhY3RvcnkoKS0+Q3JlYXRlR2VvbWV0cnlHcm91cChmaWxsTW9k
ZSwgZ2VvbWV0cmllcy5kYXRhKCksIGdlb21ldHJpZXMuc2l6ZSgpLCAmbV9wYXRoKTsKICAgICBS
RUxFQVNFX0FTU0VSVChTVUNDRUVERUQoaHIpKTsKKworICAgIGZvciAoYXV0byBlbnRyeSA6IGdl
b21ldHJpZXMpCisgICAgICAgIGVudHJ5LT5SZWxlYXNlKCk7CiB9CiAKIHZvaWQgUGF0aDo6Y3Jl
YXRlR2VvbWV0cnlXaXRoRmlsbE1vZGUoV2luZFJ1bGUgd2Via2l0RmlsbE1vZGUsIENPTVB0cjxJ
RDJEMUdlb21ldHJ5R3JvdXA+JiBwYXRoKSBjb25zdApAQCAtMTE4LDEwICsxMjYsMTYgQEAgdm9p
ZCBQYXRoOjpjcmVhdGVHZW9tZXRyeVdpdGhGaWxsTW9kZShXaQogCiAgICAgVmVjdG9yPElEMkQx
R2VvbWV0cnkqPiBnZW9tZXRyaWVzKGdlb21ldHJ5Q291bnQsIG51bGxwdHIpOwogICAgIEFTU0VS
VChnZW9tZXRyeUNvdW50KTsKKworICAgIC8vIE5vdGU6ICdHZXRTb3VyY2VHZW9tZXRyaWVzJyBy
ZXR1cm5zIGdlb21ldHJpZXMgdGhhdCBoYXZlIGEgKzEgcmVmIGNvdW50LgorICAgIC8vIHNvIHRo
ZXkgbXVzdCBiZSByZWxlYXNlZCBiZWZvcmUgd2UgcmV0dXJuLgogICAgIG1fcGF0aC0+R2V0U291
cmNlR2VvbWV0cmllcyhnZW9tZXRyaWVzLmRhdGEoKSwgZ2VvbWV0cnlDb3VudCk7CiAKICAgICBI
UkVTVUxUIGhyID0gR3JhcGhpY3NDb250ZXh0OjpzeXN0ZW1GYWN0b3J5KCktPkNyZWF0ZUdlb21l
dHJ5R3JvdXAoZmlsbE1vZGUsIGdlb21ldHJpZXMuZGF0YSgpLCBnZW9tZXRyaWVzLnNpemUoKSwg
JnBhdGgpOwogICAgIFJFTEVBU0VfQVNTRVJUKFNVQ0NFRURFRChocikpOworCisgICAgZm9yIChh
dXRvIGVudHJ5IDogZ2VvbWV0cmllcykKKyAgICAgICAgZW50cnktPlJlbGVhc2UoKTsKIH0KIAog
UGF0aDo6UGF0aChjb25zdCBQYXRoJiBvdGhlcikKQEAgLTEzMywxNSArMTQ3LDI0IEBAIFBhdGg6
OlBhdGgoY29uc3QgUGF0aCYgb3RoZXIpCiAKICAgICAgICAgVmVjdG9yPElEMkQxR2VvbWV0cnkq
PiBnZW9tZXRyaWVzKGdlb21ldHJ5Q291bnQsIG51bGxwdHIpOwogICAgICAgICBBU1NFUlQoZ2Vv
bWV0cnlDb3VudCk7CisKKyAgICAgICAgLy8gTm90ZTogJ0dldFNvdXJjZUdlb21ldHJpZXMnIHJl
dHVybnMgZ2VvbWV0cmllcyB0aGF0IGhhdmUgYSArMSByZWYgY291bnQuCisgICAgICAgIC8vIHNv
IHRoZXkgbXVzdCBiZSByZWxlYXNlZCBiZWZvcmUgd2UgcmV0dXJuLgogICAgICAgICBvdGhlclBh
dGgtPkdldFNvdXJjZUdlb21ldHJpZXMoZ2VvbWV0cmllcy5kYXRhKCksIGdlb21ldHJ5Q291bnQp
OwogCiAgICAgICAgIEhSRVNVTFQgaHIgPSBHcmFwaGljc0NvbnRleHQ6OnN5c3RlbUZhY3Rvcnko
KS0+Q3JlYXRlR2VvbWV0cnlHcm91cChvdGhlci5tX3BhdGgtPkdldEZpbGxNb2RlKCksIGdlb21l
dHJpZXMuZGF0YSgpLCBnZW9tZXRyeUNvdW50LCAmbV9wYXRoKTsKICAgICAgICAgUkVMRUFTRV9B
U1NFUlQoU1VDQ0VFREVEKGhyKSk7CisKKyAgICAgICAgZm9yIChhdXRvIGVudHJ5IDogZ2VvbWV0
cmllcykKKyAgICAgICAgICAgIGVudHJ5LT5SZWxlYXNlKCk7CiAgICAgfQogfQogCiBQYXRoJiBQ
YXRoOjpvcGVyYXRvcj0oY29uc3QgUGF0aCYgb3RoZXIpCiB7CisgICAgaWYgKG1fcGF0aCkKKyAg
ICAgICAgbV9wYXRoLT5SZWxlYXNlKCk7CisKICAgICBtX3BhdGggPSBvdGhlci5tX3BhdGg7CiAg
ICAgaWYgKG1fcGF0aCkKICAgICAgICAgbV9wYXRoLT5BZGRSZWYoKTsKQEAgLTI2NCw3ICsyODcs
NyBAQCBGbG9hdFJlY3QgUGF0aDo6Ym91bmRpbmdSZWN0KCkgY29uc3QKICAgICBpZiAoIVNVQ0NF
RURFRChtX3BhdGgtPkdldEJvdW5kcyhudWxscHRyLCAmYm91bmRzKSkpCiAgICAgICAgIHJldHVy
biBGbG9hdFJlY3QoKTsKIAotICAgIHJldHVybiBGbG9hdFJlY3QoYm91bmRzLmxlZnQsIGJvdW5k
cy5ib3R0b20sIGJvdW5kcy5yaWdodCAtIGJvdW5kcy5sZWZ0LCBib3VuZHMudG9wIC0gYm91bmRz
LmJvdHRvbSk7CisgICAgcmV0dXJuIGJvdW5kczsKIH0KIAogRmxvYXRSZWN0IFBhdGg6OmZhc3RC
b3VuZGluZ1JlY3QoKSBjb25zdApAQCAtMjc2LDcgKzI5OSw3IEBAIEZsb2F0UmVjdCBQYXRoOjpm
YXN0Qm91bmRpbmdSZWN0KCkgY29uc3QKICAgICBpZiAoIVNVQ0NFRURFRChtX3BhdGgtPkdldEJv
dW5kcyhudWxscHRyLCAmYm91bmRzKSkpCiAgICAgICAgIHJldHVybiBGbG9hdFJlY3QoKTsKIAot
ICAgIHJldHVybiBGbG9hdFJlY3QoYm91bmRzLmxlZnQsIGJvdW5kcy5ib3R0b20sIGJvdW5kcy5y
aWdodCAtIGJvdW5kcy5sZWZ0LCBib3VuZHMudG9wIC0gYm91bmRzLmJvdHRvbSk7CisgICAgcmV0
dXJuIGJvdW5kczsKIH0KIAogRmxvYXRSZWN0IFBhdGg6OnN0cm9rZUJvdW5kaW5nUmVjdChTdHJv
a2VTdHlsZUFwcGxpZXIqIGFwcGxpZXIpIGNvbnN0CkBAIC0yODQsOSArMzA3LDE0IEBAIEZsb2F0
UmVjdCBQYXRoOjpzdHJva2VCb3VuZGluZ1JlY3QoU3Ryb2sKICAgICBpZiAoaXNOdWxsKCkpCiAg
ICAgICAgIHJldHVybiBGbG9hdFJlY3QoKTsKIAorICAgIGlmICghYXBwbGllcikKKyAgICAgICAg
cmV0dXJuIGJvdW5kaW5nUmVjdCgpOworCiAgICAgVU5VU0VEX1BBUkFNKGFwcGxpZXIpOwogICAg
IG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIEZsb2F0UmVjdCgpOworCisgICAgLy8gSnVz
dCByZXR1cm4gcmVndWxhciBib3VuZGluZyByZWN0IGZvciBub3cuCisgICAgcmV0dXJuIGJvdW5k
aW5nUmVjdCgpOwogfQogCiB2b2lkIFBhdGg6Om1vdmVUbyhjb25zdCBGbG9hdFBvaW50JiBwb2lu
dCkKQEAgLTQyMyw3ICs0NTEsNyBAQCB2b2lkIFBhdGg6OmFkZEFyYyhjb25zdCBGbG9hdFBvaW50
JiBjZW50CiB2b2lkIFBhdGg6OmFkZFJlY3QoY29uc3QgRmxvYXRSZWN0JiByKQogewogICAgIENP
TVB0cjxJRDJEMVJlY3RhbmdsZUdlb21ldHJ5PiByZWN0YW5nbGU7Ci0gICAgSFJFU1VMVCBociA9
IEdyYXBoaWNzQ29udGV4dDo6c3lzdGVtRmFjdG9yeSgpLT5DcmVhdGVSZWN0YW5nbGVHZW9tZXRy
eShzdGF0aWNfY2FzdDxEMkQxX1JFQ1RfRj4ociksICZyZWN0YW5nbGUpOworICAgIEhSRVNVTFQg
aHIgPSBHcmFwaGljc0NvbnRleHQ6OnN5c3RlbUZhY3RvcnkoKS0+Q3JlYXRlUmVjdGFuZ2xlR2Vv
bWV0cnkociwgJnJlY3RhbmdsZSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoU1VDQ0VFREVEKGhyKSk7
CiAgICAgYXBwZW5kR2VvbWV0cnkocmVjdGFuZ2xlLmdldCgpKTsKIH0K
</data>
<flag name="review"
          id="315387"
          type_id="1"
          status="+"
          setter="achristensen"
    />
          </attachment>
      

    </bug>

</bugzilla>