<?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>31382</bug_id>
          
          <creation_ts>2009-11-11 15:39:18 -0800</creation_ts>
          <short_desc>Make -webkit-color-correction work with shadows</short_desc>
          <delta_ts>2009-11-11 17:51:31 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</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="Beth Dakin">bdakin</reporter>
          <assigned_to name="Beth Dakin">bdakin</assigned_to>
          <cc>bdakin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>162707</commentid>
    <comment_count>0</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2009-11-11 15:39:18 -0800</bug_when>
    <thetext>New CSS feature -webkit-color-correction does not currently work with box-shadow or text-shadow. This should be rectified!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162711</commentid>
    <comment_count>1</comment_count>
      <attachid>43015</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2009-11-11 15:55:26 -0800</bug_when>
    <thetext>Created attachment 43015
Patch

A few things about this patch:

1. As I mention in the Changelog, this doesn&apos;t fix canvas shadows. I will fix those when I fix canvas &lt;https://bugs.webkit.org/show_bug.cgi?id=31319&gt;
2. I did not make a new variable on the state for the shadow ColorSpace. This is not necessary with the way things are currently implemented. Furthermore, I realized that it is probably silly to have both a strokeColorSpace and a fillColorSpace -- I am pretty certain that even when the colors are different, stroke and fill will have the same ColorSpace, right? Anyway, it seems like these could be collapsed into one variable. I did not do that with the patch, but I am considering it. Maybe now or maybe later, what do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162724</commentid>
    <comment_count>2</comment_count>
      <attachid>43015</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-11-11 16:25:21 -0800</bug_when>
    <thetext>Comment on attachment 43015
Patch

&gt; Index: WebCore/platform/graphics/cg/GraphicsContextCG.cpp
&gt; ===================================================================

&gt; +    CGColorRef cgColor = NULL;

Should be 0, not NULL. It would be nice to rewrite this using RetainPtrs at some point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162734</commentid>
    <comment_count>3</comment_count>
      <attachid>43015</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-11-11 17:07:38 -0800</bug_when>
    <thetext>Comment on attachment 43015
Patch

r++++++</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162747</commentid>
    <comment_count>4</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2009-11-11 17:51:31 -0800</bug_when>
    <thetext>Yay! Committed fix with revision 50852.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43015</attachid>
            <date>2009-11-11 15:55:26 -0800</date>
            <delta_ts>2009-11-11 17:07:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>forReview.txt</filename>
            <type>text/plain</type>
            <size>29954</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MDg0NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTggQEAKKzIwMDktMTEtMTEgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeCBm
b3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxMzgyCisgICAgICAg
IE1ha2UgLXdlYmtpdC1jb2xvci1jb3JyZWN0aW9uIHdvcmsgd2l0aCBzaGFkb3dzCisKKyAgICAg
ICAgRnJvbSBjYW52YXMsIGp1c3Qgc2VuZCBEZXZpY2VDb2xvclNwYWNlIHRvIHNldFNoYWRvdygp
IGZvciBub3cuIAorICAgICAgICBXaWxsIGZpeCBzb29uIHdoZW4gSSBhZGRyZXNzIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTMxOQorICAgICAgICAqIGh0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmFwcGx5U2hhZG93KToKKworICAgICAgICBzZXRTaGFkb3co
KSBhbmQgc2V0UGxhdGZvcm1TaGFkb3coKSBub3cgdGFrZSBhIENvbG9yU3BhY2UuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0U2hhZG93KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9H
cmFwaGljc0NvbnRleHRDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVDR0NvbG9yV2l0
aENvbG9yU3BhY2UpOiBOZXcgaGVscGVyIHRvIGNyZWF0ZSBhIAorICAgICAgICBjb2xvciBpbiBh
IENvbG9yU3BhY2UuCisgICAgICAgIChXZWJDb3JlOjpzZXRDR0ZpbGxDb2xvcik6IENhbGwgbmV3
IGhlbHBlci4KKyAgICAgICAgKFdlYkNvcmU6OnNldENHU3Ryb2tlQ29sb3IpOiBDYWxsIG5ldyBo
ZWxwZXIuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU2hh
ZG93KTogQ2FsbCBuZXcgaGVscGVyLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2hhaWt1
L0dyYXBoaWNzQ29udGV4dEhhaWt1LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6c2V0UGxhdGZvcm1TaGFkb3cpOgorCisgICAgICAgIFNlbmQgYXBwcm9wcmlhdGUgQ29s
b3JTcGFjZSB0byBzZXRTaGFkb3coKS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMv
Rm9udE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmRyYXdHbHlwaHMpOgorICAgICAg
ICAqIHJlbmRlcmluZy9FbGxpcHNpc0JveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGxpcHNp
c0JveDo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6OnBhaW50VGV4dERlY29yYXRpb25zKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpw
YWludFRleHRXaXRoU2hhZG93cyk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94Ojpw
YWludERlY29yYXRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVj
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3hT
aGFkb3cpOgorICAgICAgICAqIHJlbmRlcmluZy9TVkdJbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6OnBhaW50Q2hhcmFjdGVycyk6CisgICAgICAg
ICogcmVuZGVyaW5nL1NWR1JlbmRlclN1cHBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
UmVuZGVyQmFzZTo6cHJlcGFyZVRvUmVuZGVyU1ZHQ29udGVudCk6CisKKyAgICAgICAgQXR0ZW1w
dCB0byBrZWVwIHBvcnRzIGJ1aWxkaW5nLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6c2V0UGxhdGZvcm1TaGFkb3cpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6c2V0UGxhdGZvcm1TaGFkb3cpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3Nr
aWEvR3JhcGhpY3NDb250ZXh0U2tpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OnNldFBsYXRmb3JtU2hhZG93KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93
aW5jZS9HcmFwaGljc0NvbnRleHRXaW5jZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQ6OnNldFBsYXRmb3JtU2hhZG93KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy93eC9HcmFwaGljc0NvbnRleHRXeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OnNldFBsYXRmb3JtU2hhZG93KToKKwogMjAwOS0xMS0xMSAgSmVucyBBbGZrZSAgPHNu
ZWpAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4K
SW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5jcHAJKHJldmlzaW9uIDUwODM0KQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MTcsNyArODE3LDcgQEAgdm9p
ZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvdwogICAgICAgICByZXR1cm47CiAK
ICAgICBSR0JBMzIgcmdiYSA9IG1ha2VSR0JBMzJGcm9tRmxvYXRzKGdyYXlMZXZlbCwgZ3JheUxl
dmVsLCBncmF5TGV2ZWwsIDEuMGYpOwotICAgIGMtPnNldFNoYWRvdyhJbnRTaXplKHdpZHRoLCAt
aGVpZ2h0KSwgc3RhdGUoKS5tX3NoYWRvd0JsdXIsIENvbG9yKHJnYmEpKTsKKyAgICBjLT5zZXRT
aGFkb3coSW50U2l6ZSh3aWR0aCwgLWhlaWdodCksIHN0YXRlKCkubV9zaGFkb3dCbHVyLCBDb2xv
cihyZ2JhKSwgRGV2aWNlQ29sb3JTcGFjZSk7CiB9CiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjpzZXRTaGFkb3coZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgYmx1ciwg
Y29uc3QgU3RyaW5nJiBjb2xvciwgZmxvYXQgYWxwaGEpCkBAIC04MzMsNyArODMzLDcgQEAgdm9p
ZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvdwogICAgIFJHQkEzMiByZ2JhID0g
MDsgLy8gZGVmYXVsdCBpcyB0cmFuc3BhcmVudCBibGFjawogICAgIGlmICghc3RhdGUoKS5tX3No
YWRvd0NvbG9yLmlzRW1wdHkoKSkKICAgICAgICAgQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKHJnYmEs
IHN0YXRlKCkubV9zaGFkb3dDb2xvcik7Ci0gICAgYy0+c2V0U2hhZG93KEludFNpemUod2lkdGgs
IC1oZWlnaHQpLCBzdGF0ZSgpLm1fc2hhZG93Qmx1ciwgQ29sb3IoY29sb3JXaXRoT3ZlcnJpZGVB
bHBoYShyZ2JhLCBhbHBoYSkpKTsKKyAgICBjLT5zZXRTaGFkb3coSW50U2l6ZSh3aWR0aCwgLWhl
aWdodCksIHN0YXRlKCkubV9zaGFkb3dCbHVyLCBDb2xvcihjb2xvcldpdGhPdmVycmlkZUFscGhh
KHJnYmEsIGFscGhhKSksIERldmljZUNvbG9yU3BhY2UpOwogfQogCiB2b2lkIENhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDo6c2V0U2hhZG93KGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0
IGJsdXIsIGZsb2F0IGdyYXlMZXZlbCwgZmxvYXQgYWxwaGEpCkBAIC04NDcsNyArODQ3LDcgQEAg
dm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvdwogICAgICAgICByZXR1cm47
CiAKICAgICBSR0JBMzIgcmdiYSA9IG1ha2VSR0JBMzJGcm9tRmxvYXRzKGdyYXlMZXZlbCwgZ3Jh
eUxldmVsLCBncmF5TGV2ZWwsIGFscGhhKTsKLSAgICBjLT5zZXRTaGFkb3coSW50U2l6ZSh3aWR0
aCwgLWhlaWdodCksIHN0YXRlKCkubV9zaGFkb3dCbHVyLCBDb2xvcihyZ2JhKSk7CisgICAgYy0+
c2V0U2hhZG93KEludFNpemUod2lkdGgsIC1oZWlnaHQpLCBzdGF0ZSgpLm1fc2hhZG93Qmx1ciwg
Q29sb3IocmdiYSksIERldmljZUNvbG9yU3BhY2UpOwogfQogCiB2b2lkIENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRDo6c2V0U2hhZG93KGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IGJs
dXIsIGZsb2F0IHIsIGZsb2F0IGcsIGZsb2F0IGIsIGZsb2F0IGEpCkBAIC04NjMsNyArODYzLDcg
QEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvdwogICAgIFJHQkEzMiBy
Z2JhID0gbWFrZVJHQkEzMkZyb21GbG9hdHMociwgZywgYiwgYSk7IC8vIGRlZmF1bHQgaXMgdHJh
bnNwYXJlbnQgYmxhY2sKICAgICBpZiAoIXN0YXRlKCkubV9zaGFkb3dDb2xvci5pc0VtcHR5KCkp
CiAgICAgICAgIENTU1BhcnNlcjo6cGFyc2VDb2xvcihyZ2JhLCBzdGF0ZSgpLm1fc2hhZG93Q29s
b3IpOwotICAgIGMtPnNldFNoYWRvdyhJbnRTaXplKHdpZHRoLCAtaGVpZ2h0KSwgc3RhdGUoKS5t
X3NoYWRvd0JsdXIsIENvbG9yKHJnYmEpKTsKKyAgICBjLT5zZXRTaGFkb3coSW50U2l6ZSh3aWR0
aCwgLWhlaWdodCksIHN0YXRlKCkubV9zaGFkb3dCbHVyLCBDb2xvcihyZ2JhKSwgRGV2aWNlQ29s
b3JTcGFjZSk7CiB9CiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTaGFkb3co
ZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgYmx1ciwgZmxvYXQgYywgZmxvYXQgbSwg
ZmxvYXQgeSwgZmxvYXQgaywgZmxvYXQgYSkKQEAgLTg4Myw3ICs4ODMsNyBAQCB2b2lkIENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U2hhZG93CiAgICAgQ0dDb250ZXh0U2V0U2hhZG93V2l0
aENvbG9yKGRjLT5wbGF0Zm9ybUNvbnRleHQoKSwgYWRqdXN0ZWRTaGFkb3dTaXplKHdpZHRoLCAt
aGVpZ2h0KSwgYmx1ciwgc2hhZG93Q29sb3IpOwogICAgIENHQ29sb3JSZWxlYXNlKHNoYWRvd0Nv
bG9yKTsKICNlbHNlCi0gICAgZGMtPnNldFNoYWRvdyhJbnRTaXplKHdpZHRoLCAtaGVpZ2h0KSwg
Ymx1ciwgQ29sb3IoYywgbSwgeSwgaywgYSkpOworICAgIGRjLT5zZXRTaGFkb3coSW50U2l6ZSh3
aWR0aCwgLWhlaWdodCksIGJsdXIsIENvbG9yKGMsIG0sIHksIGssIGEpLCBEZXZpY2VDb2xvclNw
YWNlKTsKICNlbmRpZgogfQogCkBAIC05MDYsNyArOTA2LDcgQEAgdm9pZCBDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQ6OmFwcGx5U2hhZAogICAgICAgICBDU1NQYXJzZXI6OnBhcnNlQ29sb3Iocmdi
YSwgc3RhdGUoKS5tX3NoYWRvd0NvbG9yKTsKICAgICBmbG9hdCB3aWR0aCA9IHN0YXRlKCkubV9z
aGFkb3dPZmZzZXQud2lkdGgoKTsKICAgICBmbG9hdCBoZWlnaHQgPSBzdGF0ZSgpLm1fc2hhZG93
T2Zmc2V0LmhlaWdodCgpOwotICAgIGMtPnNldFNoYWRvdyhJbnRTaXplKHdpZHRoLCAtaGVpZ2h0
KSwgc3RhdGUoKS5tX3NoYWRvd0JsdXIsIENvbG9yKHJnYmEpKTsKKyAgICBjLT5zZXRTaGFkb3co
SW50U2l6ZSh3aWR0aCwgLWhlaWdodCksIHN0YXRlKCkubV9zaGFkb3dCbHVyLCBDb2xvcihyZ2Jh
KSwgRGV2aWNlQ29sb3JTcGFjZSk7CiB9CiAKIHN0YXRpYyBJbnRTaXplIHNpemUoSFRNTEltYWdl
RWxlbWVudCogaW1hZ2UpCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuY3BwCShyZXZpc2lvbiA1MDgzNCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI4LDEyICsxMjgs
MTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFN0cm9rZUNvbG9yKGNvbgogICAgIHNldFBs
YXRmb3JtU3Ryb2tlQ29sb3IoY29sb3IsIGNvbG9yU3BhY2UpOwogfQogCi12b2lkIEdyYXBoaWNz
Q29udGV4dDo6c2V0U2hhZG93KGNvbnN0IEludFNpemUmIHNpemUsIGludCBibHVyLCBjb25zdCBD
b2xvciYgY29sb3IpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0U2hhZG93KGNvbnN0IEludFNp
emUmIHNpemUsIGludCBibHVyLCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JT
cGFjZSkKIHsKICAgICBtX2NvbW1vbi0+c3RhdGUuc2hhZG93U2l6ZSA9IHNpemU7CiAgICAgbV9j
b21tb24tPnN0YXRlLnNoYWRvd0JsdXIgPSBibHVyOwogICAgIG1fY29tbW9uLT5zdGF0ZS5zaGFk
b3dDb2xvciA9IGNvbG9yOwotICAgIHNldFBsYXRmb3JtU2hhZG93KHNpemUsIGJsdXIsIGNvbG9y
KTsKKyAgICBzZXRQbGF0Zm9ybVNoYWRvdyhzaXplLCBibHVyLCBjb2xvciwgY29sb3JTcGFjZSk7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGVhclNoYWRvdygpCkluZGV4OiBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgJKHJldmlzaW9uIDUwODM0KQor
KysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAkod29ya2luZyBj
b3B5KQpAQCAtMjY0LDcgKzI2NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9p
ZCBiZWdpblRyYW5zcGFyZW5jeUxheWVyKGZsb2F0IG9wYWNpdHkpOwogICAgICAgICB2b2lkIGVu
ZFRyYW5zcGFyZW5jeUxheWVyKCk7CiAKLSAgICAgICAgdm9pZCBzZXRTaGFkb3coY29uc3QgSW50
U2l6ZSYsIGludCBibHVyLCBjb25zdCBDb2xvciYpOworICAgICAgICB2b2lkIHNldFNoYWRvdyhj
b25zdCBJbnRTaXplJiwgaW50IGJsdXIsIGNvbnN0IENvbG9yJiwgQ29sb3JTcGFjZSk7CiAgICAg
ICAgIGJvb2wgZ2V0U2hhZG93KEludFNpemUmLCBpbnQmLCBDb2xvciYpIGNvbnN0OwogICAgICAg
ICB2b2lkIGNsZWFyU2hhZG93KCk7CiAKQEAgLTQwNiw3ICs0MDYsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKICAgICAgICAgdm9pZCBzZXRQbGF0Zm9ybVNob3VsZEFudGlhbGlhcyhib29sIGIp
OwogCi0gICAgICAgIHZvaWQgc2V0UGxhdGZvcm1TaGFkb3coY29uc3QgSW50U2l6ZSYsIGludCBi
bHVyLCBjb25zdCBDb2xvciYpOworICAgICAgICB2b2lkIHNldFBsYXRmb3JtU2hhZG93KGNvbnN0
IEludFNpemUmLCBpbnQgYmx1ciwgY29uc3QgQ29sb3ImLCBDb2xvclNwYWNlKTsKICAgICAgICAg
dm9pZCBjbGVhclBsYXRmb3JtU2hhZG93KCk7CiAKICAgICAgICAgc3RhdGljIHZvaWQgYWRqdXN0
TGluZVRvUGl4ZWxCb3VuZGFyaWVzKEZsb2F0UG9pbnQmIHAxLCBGbG9hdFBvaW50JiBwMiwgZmxv
YXQgc3Ryb2tlV2lkdGgsIGNvbnN0IFN0cm9rZVN0eWxlJik7CkluZGV4OiBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNw
cAkocmV2aXNpb24gNTA4MzQpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dy
YXBoaWNzQ29udGV4dENhaXJvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzI2LDcgKzcyNiw3IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZlcigKICAgICBub3RJbXBsZW1l
bnRlZCgpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TaGFkb3coSW50
U2l6ZSBjb25zdCYsIGludCwgQ29sb3IgY29uc3QmKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OnNl
dFBsYXRmb3JtU2hhZG93KEludFNpemUgY29uc3QmLCBpbnQsIENvbG9yIGNvbnN0JiwgQ29sb3JT
cGFjZSkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpJbmRleDogV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAJKHJldmlzaW9uIDUw
ODM0KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTc3LDMyICs3NywzMCBAQCBzdGF0aWMgQ0dDb2xvclNwYWNl
UmVmIHNSR0JDb2xvclNwYWNlUmVmCiAjZW5kaWYKIH0KIAotc3RhdGljIHZvaWQgc2V0Q0dGaWxs
Q29sb3IoQ0dDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFj
ZSBjb2xvclNwYWNlKQorc3RhdGljIENHQ29sb3JSZWYgY3JlYXRlQ0dDb2xvcldpdGhDb2xvclNw
YWNlKGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQogewogICAgIENH
RmxvYXQgY29tcG9uZW50c1s0XTsKICAgICBjb2xvci5nZXRSR0JBKGNvbXBvbmVudHNbMF0sIGNv
bXBvbmVudHNbMV0sIGNvbXBvbmVudHNbMl0sIGNvbXBvbmVudHNbM10pOwogCi0gICAgQ0dDb2xv
clJlZiBjZ0NvbG9yOworICAgIENHQ29sb3JSZWYgY2dDb2xvciA9IE5VTEw7CiAgICAgaWYgKGNv
bG9yU3BhY2UgPT0gc1JHQkNvbG9yU3BhY2UpCiAgICAgICAgIGNnQ29sb3IgPSBDR0NvbG9yQ3Jl
YXRlKHNSR0JDb2xvclNwYWNlUmVmKCksIGNvbXBvbmVudHMpOwogICAgIGVsc2UKICAgICAgICAg
Y2dDb2xvciA9IENHQ29sb3JDcmVhdGUoZGV2aWNlUkdCQ29sb3JTcGFjZVJlZigpLCBjb21wb25l
bnRzKTsKIAorICAgIHJldHVybiBjZ0NvbG9yOworfQorCitzdGF0aWMgdm9pZCBzZXRDR0ZpbGxD
b2xvcihDR0NvbnRleHRSZWYgY29udGV4dCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNl
IGNvbG9yU3BhY2UpCit7CisgICAgQ0dDb2xvclJlZiBjZ0NvbG9yID0gY3JlYXRlQ0dDb2xvcldp
dGhDb2xvclNwYWNlKGNvbG9yLCBjb2xvclNwYWNlKTsKICAgICBDR0NvbnRleHRTZXRGaWxsQ29s
b3JXaXRoQ29sb3IoY29udGV4dCwgY2dDb2xvcik7CiAgICAgQ0ZSZWxlYXNlKGNnQ29sb3IpOwog
fQogCiBzdGF0aWMgdm9pZCBzZXRDR1N0cm9rZUNvbG9yKENHQ29udGV4dFJlZiBjb250ZXh0LCBj
b25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKIHsKLSAgICBDR0Zsb2F0
IGNvbXBvbmVudHNbNF07Ci0gICAgY29sb3IuZ2V0UkdCQShjb21wb25lbnRzWzBdLCBjb21wb25l
bnRzWzFdLCBjb21wb25lbnRzWzJdLCBjb21wb25lbnRzWzNdKTsKLQotICAgIENHQ29sb3JSZWYg
Y2dDb2xvcjsKLSAgICBpZiAoY29sb3JTcGFjZSA9PSBzUkdCQ29sb3JTcGFjZSkKLSAgICAgICAg
Y2dDb2xvciA9IENHQ29sb3JDcmVhdGUoc1JHQkNvbG9yU3BhY2VSZWYoKSwgY29tcG9uZW50cyk7
Ci0gICAgZWxzZQotICAgICAgICBjZ0NvbG9yID0gQ0dDb2xvckNyZWF0ZShkZXZpY2VSR0JDb2xv
clNwYWNlUmVmKCksIGNvbXBvbmVudHMpOwotCisgICAgQ0dDb2xvclJlZiBjZ0NvbG9yID0gY3Jl
YXRlQ0dDb2xvcldpdGhDb2xvclNwYWNlKGNvbG9yLCBjb2xvclNwYWNlKTsKICAgICBDR0NvbnRl
eHRTZXRTdHJva2VDb2xvcldpdGhDb2xvcihjb250ZXh0LCBjZ0NvbG9yKTsKICAgICBDRlJlbGVh
c2UoY2dDb2xvcik7CiB9CkBAIC03NjMsNyArNzYxLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6
OmVuZFRyYW5zcGFyZW5jeUxheQogICAgIG1fZGF0YS0+bV91c2VyVG9EZXZpY2VUcmFuc2Zvcm1L
bm93blRvQmVJZGVudGl0eSA9IGZhbHNlOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0
UGxhdGZvcm1TaGFkb3coY29uc3QgSW50U2l6ZSYgc2l6ZSwgaW50IGJsdXIsIGNvbnN0IENvbG9y
JiBjb2xvcikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVNoYWRvdyhjb25zdCBJ
bnRTaXplJiBzaXplLCBpbnQgYmx1ciwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNv
bG9yU3BhY2UpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJu
OwpAQCAtODEwLDcgKzgwOCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVNo
YWRvdygKICAgICBpZiAoIWNvbG9yLmlzVmFsaWQoKSkKICAgICAgICAgQ0dDb250ZXh0U2V0U2hh
ZG93KGNvbnRleHQsIENHU2l6ZU1ha2Uod2lkdGgsIGhlaWdodCksIGJsdXJSYWRpdXMpOwogICAg
IGVsc2UgewotICAgICAgICBSZXRhaW5QdHI8Q0dDb2xvclJlZj4gY29sb3JDRyhBZG9wdENGLCBj
cmVhdGVDR0NvbG9yKGNvbG9yKSk7CisgICAgICAgIFJldGFpblB0cjxDR0NvbG9yUmVmPiBjb2xv
ckNHKEFkb3B0Q0YsIGNyZWF0ZUNHQ29sb3JXaXRoQ29sb3JTcGFjZShjb2xvciwgY29sb3JTcGFj
ZSkpOwogICAgICAgICBDR0NvbnRleHRTZXRTaGFkb3dXaXRoQ29sb3IoY29udGV4dCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENHU2l6ZU1ha2Uod2lkdGgsIGhlaWdodCks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibHVyUmFkaXVzLApJbmRleDog
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYWlrdS9HcmFwaGljc0NvbnRleHRIYWlrdS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYWlrdS9HcmFwaGljc0Nv
bnRleHRIYWlrdS5jcHAJKHJldmlzaW9uIDUwODM0KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9oYWlrdS9HcmFwaGljc0NvbnRleHRIYWlrdS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUz
Miw3ICs1MzIsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xlYXJQbGF0Zm9ybVNoYWRvCiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRm
b3JtU2hhZG93KEludFNpemUgY29uc3QmLCBpbnQsIENvbG9yIGNvbnN0JikKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpzZXRQbGF0Zm9ybVNoYWRvdyhJbnRTaXplIGNvbnN0JiwgaW50LCBDb2xvciBj
b25zdCYsIENvbG9yU3BhY2UpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KSW5kZXg6IFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRNYWMubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udE1hYy5tbQkocmV2aXNpb24gNTA4MzQpCisr
KyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250TWFjLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0xMTUsNiArMTE1LDcgQEAgdm9pZCBGb250OjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4
dCogYwogICAgIEludFNpemUgc2hhZG93U2l6ZTsKICAgICBpbnQgc2hhZG93Qmx1cjsKICAgICBD
b2xvciBzaGFkb3dDb2xvcjsKKyAgICBDb2xvclNwYWNlIGZpbGxDb2xvclNwYWNlID0gY29udGV4
dC0+ZmlsbENvbG9yU3BhY2UoKTsKICAgICBjb250ZXh0LT5nZXRTaGFkb3coc2hhZG93U2l6ZSwg
c2hhZG93Qmx1ciwgc2hhZG93Q29sb3IpOwogCiAgICAgYm9vbCBoYXNTaW1wbGVTaGFkb3cgPSBj
b250ZXh0LT50ZXh0RHJhd2luZ01vZGUoKSA9PSBjVGV4dEZpbGwgJiYgc2hhZG93Q29sb3IuaXNW
YWxpZCgpICYmICFzaGFkb3dCbHVyOwpAQCAtMTIyLDcgKzEyMyw2IEBAIHZvaWQgRm9udDo6ZHJh
d0dseXBocyhHcmFwaGljc0NvbnRleHQqIGMKICAgICAgICAgLy8gUGFpbnQgc2ltcGxlIHNoYWRv
d3Mgb3Vyc2VsdmVzIGluc3RlYWQgb2YgcmVseWluZyBvbiBDRyBzaGFkb3dzLCB0byBhdm9pZCBs
b3Npbmcgc3VicGl4ZWwgYW50aWFsaWFzaW5nLgogICAgICAgICBjb250ZXh0LT5jbGVhclNoYWRv
dygpOwogICAgICAgICBDb2xvciBmaWxsQ29sb3IgPSBjb250ZXh0LT5maWxsQ29sb3IoKTsKLSAg
ICAgICAgQ29sb3JTcGFjZSBmaWxsQ29sb3JTcGFjZSA9IGNvbnRleHQtPmZpbGxDb2xvclNwYWNl
KCk7CiAgICAgICAgIENvbG9yIHNoYWRvd0ZpbGxDb2xvcihzaGFkb3dDb2xvci5yZWQoKSwgc2hh
ZG93Q29sb3IuZ3JlZW4oKSwgc2hhZG93Q29sb3IuYmx1ZSgpLCBzaGFkb3dDb2xvci5hbHBoYSgp
ICogZmlsbENvbG9yLmFscGhhKCkgLyAyNTUpOwogICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29s
b3Ioc2hhZG93RmlsbENvbG9yLCBmaWxsQ29sb3JTcGFjZSk7CiAgICAgICAgIENHQ29udGV4dFNl
dFRleHRQb3NpdGlvbihjZ0NvbnRleHQsIHBvaW50LngoKSArIHNoYWRvd1NpemUud2lkdGgoKSwg
cG9pbnQueSgpICsgc2hhZG93U2l6ZS5oZWlnaHQoKSk7CkBAIC0xNDIsNyArMTQyLDcgQEAgdm9p
ZCBGb250OjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCogYwogICAgIH0KIAogICAgIGlmICho
YXNTaW1wbGVTaGFkb3cpCi0gICAgICAgIGNvbnRleHQtPnNldFNoYWRvdyhzaGFkb3dTaXplLCBz
aGFkb3dCbHVyLCBzaGFkb3dDb2xvcik7CisgICAgICAgIGNvbnRleHQtPnNldFNoYWRvdyhzaGFk
b3dTaXplLCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvciwgZmlsbENvbG9yU3BhY2UpOwogCiAgICAg
aWYgKG9yaWdpbmFsU2hvdWxkVXNlRm9udFNtb290aGluZyAhPSBuZXdTaG91bGRVc2VGb250U21v
b3RoaW5nKQogICAgICAgICBDR0NvbnRleHRTZXRTaG91bGRTbW9vdGhGb250cyhjZ0NvbnRleHQs
IG9yaWdpbmFsU2hvdWxkVXNlRm9udFNtb290aGluZyk7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcAkocmV2aXNpb24gNTA4
MzQpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODg2LDcgKzg4Niw3IEBAIEZsb2F0UmVjdCBHcmFwaGljc0Nv
bnRleHQ6OnJvdW5kVG9EZXZpY2UKICAgICByZXR1cm4gRmxvYXRSZWN0KFFSZWN0RihyZXN1bHQp
KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU2hhZG93KGNvbnN0IElu
dFNpemUmIHNpemUsIGludCwgY29uc3QgQ29sb3ImKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OnNl
dFBsYXRmb3JtU2hhZG93KGNvbnN0IEludFNpemUmIHNpemUsIGludCwgY29uc3QgQ29sb3ImLCBD
b2xvclNwYWNlKQogewogICAgIC8vIFF0IGRvZXNuJ3Qgc3VwcG9ydCBzaGFkb3dzIG5hdGl2ZWx5
LCB0aGV5IGFyZSBkcmF3biBtYW51YWxseSBpbiB0aGUgZHJhdyoKICAgICAvLyBmdW5jdGlvbnMK
SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHRTa2lh
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvR3JhcGhp
Y3NDb250ZXh0U2tpYS5jcHAJKHJldmlzaW9uIDUwODM0KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dFNraWEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05
NzUsNyArOTc1LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtRmlsbFBhdAog
CiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TaGFkb3coY29uc3QgSW50U2l6ZSYg
c2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYmx1cklu
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDb2xvciYg
Y29sb3IpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ29s
b3ImIGNvbG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbG9y
U3BhY2UgY29sb3JTcGFjZSkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAg
ICByZXR1cm47CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0dyYXBoaWNz
Q29udGV4dFdpbmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbmNlL0dyYXBoaWNzQ29udGV4dFdpbmNlLmNwcAkocmV2aXNpb24gNTA4MzQpCisrKyBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0dyYXBoaWNzQ29udGV4dFdpbmNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTU0NSw3ICsxNTQ1LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZp
bGxSZWN0KGNvbnN0IEZsbwogICAgICAgICBmaWxsUmVjdChyZWN0LCBmaWxsQ29sb3IoKSwgRGV2
aWNlQ29sb3JTcGFjZSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVNo
YWRvdyhjb25zdCBJbnRTaXplJiwgaW50LCBjb25zdCBDb2xvciYsIENvbG9yU3BhY2UgY29sb3JT
cGFjZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVNoYWRvdyhjb25zdCBJbnRT
aXplJiwgaW50LCBjb25zdCBDb2xvciYsIENvbG9yU3BhY2UpCiB7CiAgICAgbm90SW1wbGVtZW50
ZWQoKTsKIH0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd3gvR3JhcGhpY3NDb250
ZXh0V3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd3gvR3Jh
cGhpY3NDb250ZXh0V3guY3BwCShyZXZpc2lvbiA1MDgzNCkKKysrIFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd3gvR3JhcGhpY3NDb250ZXh0V3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MTEs
NyArNTExLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsbwogICAg
ICAgICByZXR1cm47CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVNoYWRv
dyhJbnRTaXplIGNvbnN0JixpbnQsQ29sb3IgY29uc3QmKSAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
OjpzZXRQbGF0Zm9ybVNoYWRvdyhJbnRTaXplIGNvbnN0JixpbnQsQ29sb3IgY29uc3QmLCBDb2xv
clNwYWNlKSAKIHsgCiAgICAgbm90SW1wbGVtZW50ZWQoKTsgCiB9CkluZGV4OiBXZWJDb3JlL3Jl
bmRlcmluZy9FbGxpcHNpc0JveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcv
RWxsaXBzaXNCb3guY3BwCShyZXZpc2lvbiA1MDgzNCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL0Vs
bGlwc2lzQm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQCB2b2lkIEVsbGlw
c2lzQm94OjpwYWludChSZW5kZXJPYmplY3Q6OlBhCiAgICAgYm9vbCBzZXRTaGFkb3cgPSBmYWxz
ZTsKICAgICBpZiAoc3R5bGUtPnRleHRTaGFkb3coKSkgewogICAgICAgICBjb250ZXh0LT5zZXRT
aGFkb3coSW50U2l6ZShzdHlsZS0+dGV4dFNoYWRvdygpLT54LCBzdHlsZS0+dGV4dFNoYWRvdygp
LT55KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlLT50ZXh0U2hhZG93KCktPmJs
dXIsIHN0eWxlLT50ZXh0U2hhZG93KCktPmNvbG9yKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0eWxlLT50ZXh0U2hhZG93KCktPmJsdXIsIHN0eWxlLT50ZXh0U2hhZG93KCktPmNvbG9y
LCBzdHlsZS0+Y29sb3JTcGFjZSgpKTsKICAgICAgICAgc2V0U2hhZG93ID0gdHJ1ZTsKICAgICB9
CiAKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCShyZXZpc2lvbiA1MDgzNCkK
KysrIFdlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC05NzQsNiArOTc0LDcgQEAgdm9pZCBJbmxpbmVGbG93Qm94OjpwYWludFRleHREZWNvcmF0aW9u
cwogICAgICAgICAgICAgc2V0Q2xpcCA9IHRydWU7CiAgICAgICAgIH0KIAorICAgICAgICBDb2xv
clNwYWNlIGNvbG9yU3BhY2UgPSByZW5kZXJlcigpLT5zdHlsZSgpLT5jb2xvclNwYWNlKCk7CiAg
ICAgICAgIGJvb2wgc2V0U2hhZG93ID0gZmFsc2U7CiAgICAgICAgIGRvIHsKICAgICAgICAgICAg
IGlmIChzaGFkb3cpIHsKQEAgLTk4MiwyNCArOTgzLDI0IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6
cGFpbnRUZXh0RGVjb3JhdGlvbnMKICAgICAgICAgICAgICAgICAgICAgdHkgLT0gZXh0cmFPZmZz
ZXQ7CiAgICAgICAgICAgICAgICAgICAgIGV4dHJhT2Zmc2V0ID0gMDsKICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+c2V0U2hhZG93KEludFNpemUoc2hhZG93LT54
LCBzaGFkb3ctPnkgLSBleHRyYU9mZnNldCksIHNoYWRvdy0+Ymx1ciwgc2hhZG93LT5jb2xvcik7
CisgICAgICAgICAgICAgICAgY29udGV4dC0+c2V0U2hhZG93KEludFNpemUoc2hhZG93LT54LCBz
aGFkb3ctPnkgLSBleHRyYU9mZnNldCksIHNoYWRvdy0+Ymx1ciwgc2hhZG93LT5jb2xvciwgY29s
b3JTcGFjZSk7CiAgICAgICAgICAgICAgICAgc2V0U2hhZG93ID0gdHJ1ZTsKICAgICAgICAgICAg
ICAgICBzaGFkb3cgPSBzaGFkb3ctPm5leHQ7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAg
IGlmIChwYWludFVuZGVybGluZSkgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPnNldFN0cm9r
ZUNvbG9yKHVuZGVybGluZSwgcmVuZGVyZXIoKS0+c3R5bGUoKS0+Y29sb3JTcGFjZSgpKTsKKyAg
ICAgICAgICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcih1bmRlcmxpbmUsIGNvbG9yU3Bh
Y2UpOwogICAgICAgICAgICAgICAgIGNvbnRleHQtPnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tl
KTsKICAgICAgICAgICAgICAgICAvLyBMZWF2ZSBvbmUgcGl4ZWwgb2Ygd2hpdGUgYmV0d2VlbiB0
aGUgYmFzZWxpbmUgYW5kIHRoZSB1bmRlcmxpbmUuCiAgICAgICAgICAgICAgICAgY29udGV4dC0+
ZHJhd0xpbmVGb3JUZXh0KEludFBvaW50KHR4LCB0eSArIGJhc2VsaW5lUG9zICsgMSksIHcsIGlz
UHJpbnRpbmcpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKHBhaW50T3ZlcmxpbmUp
IHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihvdmVybGluZSwgcmVu
ZGVyZXIoKS0+c3R5bGUoKS0+Y29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0
LT5zZXRTdHJva2VDb2xvcihvdmVybGluZSwgY29sb3JTcGFjZSk7CiAgICAgICAgICAgICAgICAg
Y29udGV4dC0+c2V0U3Ryb2tlU3R5bGUoU29saWRTdHJva2UpOwogICAgICAgICAgICAgICAgIGNv
bnRleHQtPmRyYXdMaW5lRm9yVGV4dChJbnRQb2ludCh0eCwgdHkpLCB3LCBpc1ByaW50aW5nKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChwYWludExpbmVUaHJvdWdoKSB7Ci0gICAg
ICAgICAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IobGluZXRocm91Z2gsIHJlbmRlcmVy
KCktPnN0eWxlKCktPmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+c2V0
U3Ryb2tlQ29sb3IobGluZXRocm91Z2gsIGNvbG9yU3BhY2UpOwogICAgICAgICAgICAgICAgIGNv
bnRleHQtPnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tlKTsKICAgICAgICAgICAgICAgICBjb250
ZXh0LT5kcmF3TGluZUZvclRleHQoSW50UG9pbnQodHgsIHR5ICsgMiAqIGJhc2VsaW5lUG9zIC8g
MyksIHcsIGlzUHJpbnRpbmcpOwogICAgICAgICAgICAgfQpJbmRleDogV2ViQ29yZS9yZW5kZXJp
bmcvSW5saW5lVGV4dEJveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvSW5s
aW5lVGV4dEJveC5jcHAJKHJldmlzaW9uIDUwODM0KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvSW5s
aW5lVGV4dEJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4MCw3ICsyODAsNyBAQCBzdGF0aWMg
dm9pZCBwYWludFRleHRXaXRoU2hhZG93cyhHcmFwaGljCiAgICAgICAgICAgICAgICAgZXh0cmFP
ZmZzZXQgPSBJbnRTaXplKDAsIDIgKiBoICsgbWF4KDAsIHNoYWRvd09mZnNldC5oZWlnaHQoKSkg
KyBzaGFkb3dCbHVyKTsKICAgICAgICAgICAgICAgICBzaGFkb3dPZmZzZXQgLT0gZXh0cmFPZmZz
ZXQ7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBjb250ZXh0LT5zZXRTaGFkb3coc2hhZG93
T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvcik7CisgICAgICAgICAgICBjb250ZXh0LT5z
ZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvciwgZmlsbENvbG9y
U3BhY2UpOwogICAgICAgICB9IGVsc2UgaWYgKCFvcGFxdWUpCiAgICAgICAgICAgICBjb250ZXh0
LT5zZXRGaWxsQ29sb3IoZmlsbENvbG9yLCBmaWxsQ29sb3JTcGFjZSk7CiAKQEAgLTY2MSw2ICs2
NjEsNyBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50RGVjb3JhdGlvbihHcmFwCiAgICAgICAg
IHNldENsaXAgPSB0cnVlOwogICAgIH0KIAorICAgIENvbG9yU3BhY2UgY29sb3JTcGFjZSA9IHJl
bmRlcmVyKCktPnN0eWxlKCktPmNvbG9yU3BhY2UoKTsKICAgICBib29sIHNldFNoYWRvdyA9IGZh
bHNlOwogICAgIAogICAgIGRvIHsKQEAgLTY3MCwyNCArNjcxLDI0IEBAIHZvaWQgSW5saW5lVGV4
dEJveDo6cGFpbnREZWNvcmF0aW9uKEdyYXAKICAgICAgICAgICAgICAgICB0eSAtPSBleHRyYU9m
ZnNldDsKICAgICAgICAgICAgICAgICBleHRyYU9mZnNldCA9IDA7CiAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBjb250ZXh0LT5zZXRTaGFkb3coSW50U2l6ZShzaGFkb3ctPngsIHNoYWRvdy0+
eSAtIGV4dHJhT2Zmc2V0KSwgc2hhZG93LT5ibHVyLCBzaGFkb3ctPmNvbG9yKTsKKyAgICAgICAg
ICAgIGNvbnRleHQtPnNldFNoYWRvdyhJbnRTaXplKHNoYWRvdy0+eCwgc2hhZG93LT55IC0gZXh0
cmFPZmZzZXQpLCBzaGFkb3ctPmJsdXIsIHNoYWRvdy0+Y29sb3IsIGNvbG9yU3BhY2UpOwogICAg
ICAgICAgICAgc2V0U2hhZG93ID0gdHJ1ZTsKICAgICAgICAgICAgIHNoYWRvdyA9IHNoYWRvdy0+
bmV4dDsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChkZWNvICYgVU5ERVJMSU5FKSB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcih1bmRlcmxpbmUsIHJlbmRlcmVyKCktPnN0
eWxlKCktPmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xv
cih1bmRlcmxpbmUsIGNvbG9yU3BhY2UpOwogICAgICAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tl
U3R5bGUoU29saWRTdHJva2UpOwogICAgICAgICAgICAgLy8gTGVhdmUgb25lIHBpeGVsIG9mIHdo
aXRlIGJldHdlZW4gdGhlIGJhc2VsaW5lIGFuZCB0aGUgdW5kZXJsaW5lLgogICAgICAgICAgICAg
Y29udGV4dC0+ZHJhd0xpbmVGb3JUZXh0KEludFBvaW50KHR4LCB0eSArIGJhc2VsaW5lICsgMSks
IHdpZHRoLCBpc1ByaW50aW5nKTsKICAgICAgICAgfQogICAgICAgICBpZiAoZGVjbyAmIE9WRVJM
SU5FKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihvdmVybGluZSwgcmVu
ZGVyZXIoKS0+c3R5bGUoKS0+Y29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnNl
dFN0cm9rZUNvbG9yKG92ZXJsaW5lLCBjb2xvclNwYWNlKTsKICAgICAgICAgICAgIGNvbnRleHQt
PnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tlKTsKICAgICAgICAgICAgIGNvbnRleHQtPmRyYXdM
aW5lRm9yVGV4dChJbnRQb2ludCh0eCwgdHkpLCB3aWR0aCwgaXNQcmludGluZyk7CiAgICAgICAg
IH0KICAgICAgICAgaWYgKGRlY28gJiBMSU5FX1RIUk9VR0gpIHsKLSAgICAgICAgICAgIGNvbnRl
eHQtPnNldFN0cm9rZUNvbG9yKGxpbmV0aHJvdWdoLCByZW5kZXJlcigpLT5zdHlsZSgpLT5jb2xv
clNwYWNlKCkpOworICAgICAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IobGluZXRocm91
Z2gsIGNvbG9yU3BhY2UpOwogICAgICAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlU3R5bGUoU29s
aWRTdHJva2UpOwogICAgICAgICAgICAgY29udGV4dC0+ZHJhd0xpbmVGb3JUZXh0KEludFBvaW50
KHR4LCB0eSArIDIgKiBiYXNlbGluZSAvIDMpLCB3aWR0aCwgaXNQcmludGluZyk7CiAgICAgICAg
IH0KSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAJKHJl
dmlzaW9uIDUwODM0KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTk4LDcgKzExOTgsNyBAQCB2b2lkIFJlbmRlckJveE1v
ZGVsT2JqZWN0OjpwYWludEJveFNoYWRvCiAgICAgICAgICAgICBzaGFkb3dPZmZzZXQgLT0gZXh0
cmFPZmZzZXQ7CiAgICAgICAgICAgICBmaWxsUmVjdC5tb3ZlKGV4dHJhT2Zmc2V0KTsKIAotICAg
ICAgICAgICAgY29udGV4dC0+c2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93Qmx1ciwgc2hh
ZG93Q29sb3IpOworICAgICAgICAgICAgY29udGV4dC0+c2V0U2hhZG93KHNoYWRvd09mZnNldCwg
c2hhZG93Qmx1ciwgc2hhZG93Q29sb3IsIHMtPmNvbG9yU3BhY2UoKSk7CiAgICAgICAgICAgICBp
ZiAoaGFzQm9yZGVyUmFkaXVzKSB7CiAgICAgICAgICAgICAgICAgSW50UmVjdCByZWN0VG9DbGlw
T3V0ID0gcmVjdDsKICAgICAgICAgICAgICAgICBJbnRTaXplIHRvcExlZnRUb0NsaXBPdXQgPSB0
b3BMZWZ0OwpAQCAtMTMyMSw3ICsxMzIxLDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6
cGFpbnRCb3hTaGFkbwogCiAgICAgICAgICAgICBjb250ZXh0LT5zZXRGaWxsUnVsZShSVUxFX0VW
RU5PREQpOwogICAgICAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKGZpbGxDb2xvciwgcy0+
Y29sb3JTcGFjZSgpKTsKLSAgICAgICAgICAgIGNvbnRleHQtPnNldFNoYWRvdyhzaGFkb3dPZmZz
ZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnNldFNo
YWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yLCBzLT5jb2xvclNwYWNl
KCkpOwogICAgICAgICAgICAgY29udGV4dC0+ZmlsbFBhdGgoKTsKIAogICAgICAgICAgICAgY29u
dGV4dC0+cmVzdG9yZSgpOwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvU1ZHSW5saW5lVGV4dEJv
eC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvU1ZHSW5saW5lVGV4dEJveC5j
cHAJKHJldmlzaW9uIDUwODM0KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvU1ZHSW5saW5lVGV4dEJv
eC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4Miw3ICszODIsOCBAQCB2b2lkIFNWR0lubGluZVRl
eHRCb3g6OnBhaW50Q2hhcmFjdGVycyhSCiAgICAgYm9vbCBzZXRTaGFkb3cgPSBmYWxzZTsKICAg
ICBpZiAoc3R5bGVUb1VzZS0+dGV4dFNoYWRvdygpKSB7CiAgICAgICAgIHBhaW50SW5mby5jb250
ZXh0LT5zZXRTaGFkb3coSW50U2l6ZShzdHlsZVRvVXNlLT50ZXh0U2hhZG93KCktPngsIHN0eWxl
VG9Vc2UtPnRleHRTaGFkb3coKS0+eSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3R5bGVUb1VzZS0+dGV4dFNoYWRvdygpLT5ibHVyLCBzdHlsZVRvVXNlLT50ZXh0U2hh
ZG93KCktPmNvbG9yKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHls
ZVRvVXNlLT50ZXh0U2hhZG93KCktPmJsdXIsIHN0eWxlVG9Vc2UtPnRleHRTaGFkb3coKS0+Y29s
b3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGVUb1VzZS0+Y29s
b3JTcGFjZSgpKTsKICAgICAgICAgc2V0U2hhZG93ID0gdHJ1ZTsKICAgICB9CiAKSW5kZXg6IFdl
YkNvcmUvcmVuZGVyaW5nL1NWR1JlbmRlclN1cHBvcnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcmVuZGVyaW5nL1NWR1JlbmRlclN1cHBvcnQuY3BwCShyZXZpc2lvbiA1MDgzNCkKKysrIFdl
YkNvcmUvcmVuZGVyaW5nL1NWR1JlbmRlclN1cHBvcnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05
NSw3ICs5NSw3IEBAIHZvaWQgU1ZHUmVuZGVyQmFzZTo6cHJlcGFyZVRvUmVuZGVyU1ZHQ28KICAg
ICB9CiAKICAgICBpZiAoU2hhZG93RGF0YSogc2hhZG93ID0gc3ZnU3R5bGUtPnNoYWRvdygpKQot
ICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2V0U2hhZG93KEludFNpemUoc2hhZG93LT54LCBz
aGFkb3ctPnkpLCBzaGFkb3ctPmJsdXIsIHNoYWRvdy0+Y29sb3IpOyAKKyAgICAgICAgcGFpbnRJ
bmZvLmNvbnRleHQtPnNldFNoYWRvdyhJbnRTaXplKHNoYWRvdy0+eCwgc2hhZG93LT55KSwgc2hh
ZG93LT5ibHVyLCBzaGFkb3ctPmNvbG9yLCBzdHlsZS0+Y29sb3JTcGFjZSgpKTsgCiAKICNpZiBF
TkFCTEUoRklMVEVSUykKICAgICBBdG9taWNTdHJpbmcgZmlsdGVySWQoc3ZnU3R5bGUtPmZpbHRl
cigpKTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDUwODQ0KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMDktMTEtMTEgIEJldGggRGFraW4g
IDxiZGFraW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRlc3RzIGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MzEzODIKKyAgICAgICAgTWFrZSAtd2Via2l0LWNvbG9yLWNvcnJlY3Rpb24gd29yayB3
aXRoIHNoYWRvd3MKKworICAgICAgICAqIGZhc3QvY3NzL2NvbG9yLWNvcnJlY3Rpb24tb24tYm94
LXNoYWRvdy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9jb2xvci1jb3JyZWN0aW9u
LW9uLXRleHQtc2hhZG93Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9mYXN0
L2Nzcy9jb2xvci1jb3JyZWN0aW9uLW9uLWJveC1zaGFkb3ctZXhwZWN0ZWQuY2hlY2tzdW06IEFk
ZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9mYXN0L2Nzcy9jb2xvci1jb3JyZWN0aW9uLW9u
LWJveC1zaGFkb3ctZXhwZWN0ZWQucG5nOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMv
ZmFzdC9jc3MvY29sb3ItY29ycmVjdGlvbi1vbi1ib3gtc2hhZG93LWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2Zhc3QvY3NzL2NvbG9yLWNvcnJlY3Rpb24tb24t
dGV4dC1zaGFkb3ctZXhwZWN0ZWQuY2hlY2tzdW06IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy9mYXN0L2Nzcy9jb2xvci1jb3JyZWN0aW9uLW9uLXRleHQtc2hhZG93LWV4cGVjdGVkLnBu
ZzogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2Zhc3QvY3NzL2NvbG9yLWNvcnJlY3Rp
b24tb24tdGV4dC1zaGFkb3ctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKwogMjAwOS0xMS0xMSAgQnJp
YW4gV2VpbnN0ZWluICA8YndlaW5zdGVpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgQmV0aCBEYWtpbi4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL2NvbG9yLWNvcnJlY3Rp
b24tb24tYm94LXNoYWRvdy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3Nz
L2NvbG9yLWNvcnJlY3Rpb24tb24tYm94LXNoYWRvdy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9jc3MvY29sb3ItY29ycmVjdGlvbi1vbi1ib3gtc2hhZG93Lmh0bWwJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMjYgQEAKKzxodG1sPgorPHN0eWxlPgorLnB1cnBsZS1jb3Jy
ZWN0ZWQgeworICAgIGJhY2tncm91bmQtY29sb3I6IzU2MDA2MzsgCisgICAgd2lkdGg6MTAwcHg7
IAorICAgIGhlaWdodDoxMDBweDsgCisgICAgLXdlYmtpdC1jb2xvci1jb3JyZWN0aW9uOnNSR0I7
IAorICAgIC13ZWJraXQtYm94LXNoYWRvdzogNTBweCA1MHB4IDUwcHggIzU2MDA2MworfQorCisu
cHVycGxlLXVuY29ycmVjdGVkIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiM1NjAwNjM7IAorICAg
IHdpZHRoOjEwMHB4OyAKKyAgICBoZWlnaHQ6MTAwcHg7IAorICAgIC13ZWJraXQtY29sb3ItY29y
cmVjdGlvbjpkZWZhdWx0OyAgCit9Cis8L3N0eWxlPgorPGJvZHk+CisKKzxwPlRoZSBzaGFkb3cg
c2hvdWxkIG1hdGNoIHRoZSBjb2xvciBvZiB0aGUgdG9wIHNxdWFyZSBhbmQgbm90IHRoZSBjb2xv
ciBvZiB0aGUgYm90dG9tIHNxdWFyZS4gVGhlIHRvcCBzcXVhcmUgYW5kIGl0cyBzaGFkb3cgYXJl
IGJvdGggY29sb3ItY29ycmVjdGVkIGZyb20gc1JHQi48L3A+Cis8ZGl2IGNsYXNzPSJwdXJwbGUt
Y29ycmVjdGVkIj48L2Rpdj4KKzxici8+Cis8ZGl2IGNsYXNzPSJwdXJwbGUtdW5jb3JyZWN0ZWQi
PjwvZGl2PgorCis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9j
b2xvci1jb3JyZWN0aW9uLW9uLXRleHQtc2hhZG93Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9jc3MvY29sb3ItY29ycmVjdGlvbi1vbi10ZXh0LXNoYWRvdy5odG1sCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvY29sb3ItY29ycmVjdGlvbi1vbi10ZXh0
LXNoYWRvdy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI2IEBACis8aHRtbD4KKzxzdHls
ZT4KKy5wdXJwbGUtY29ycmVjdGVkIHsKKyAgICBjb2xvcjojNTYwMDYzOyAKKyAgICBmb250LXdl
aWdodDogYm9sZDsKKyAgICBmb250LXNpemU6IDEwMHB4OworICAgIC13ZWJraXQtY29sb3ItY29y
cmVjdGlvbjpzUkdCOyAKKyAgICB0ZXh0LXNoYWRvdzogNTBweCA1MHB4IDJweCAjNTYwMDYzCit9
CisKKy5wdXJwbGUtdW5jb3JyZWN0ZWQgeworICAgIGNvbG9yOiM1NjAwNjM7IAorICAgIGZvbnQt
d2VpZ2h0OiBib2xkOworICAgIGZvbnQtc2l6ZTogMTAwcHg7CisgICAgLXdlYmtpdC1jb2xvci1j
b3JyZWN0aW9uOmRlZmF1bHQ7ICAKK30KKzwvc3R5bGU+Cis8Ym9keT4KKworPHA+VGhpcyBpcyBz
dWJ0bGUsIGJ1dCB0aGUgc2hhZG93IHNob3VsZCBtYXRjaCB0aGUgY29sb3Igb2YgdGhlIHRvcCBI
IGFuZCBub3QgdGhlIGNvbG9yIG9mIHRoZSBib3R0b20gSC4gVGhlIHRvcCBIIGFuZCBpdHMgc2hh
ZG93IGFyZSBib3RoIGNvbG9yLWNvcnJlY3RlZCBmcm9tIHNSR0IuPC9wPgorPHNwYW4gY2xhc3M9
InB1cnBsZS1jb3JyZWN0ZWQiPkg8L3NwYW4+Cis8YnIvPgorPHNwYW4gY2xhc3M9InB1cnBsZS11
bmNvcnJlY3RlZCI+SDwvc3Bhbj4KKworPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL2Zhc3QvY3NzL2NvbG9yLWNvcnJlY3Rpb24tb24tYm94LXNoYWRvdy1l
eHBlY3RlZC5jaGVja3N1bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
ZmFzdC9jc3MvY29sb3ItY29ycmVjdGlvbi1vbi1ib3gtc2hhZG93LWV4cGVjdGVkLmNoZWNrc3Vt
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvY3NzL2NvbG9y
LWNvcnJlY3Rpb24tb24tYm94LXNoYWRvdy1leHBlY3RlZC5jaGVja3N1bQkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSBAQAorZWM5N2QyNmMwNjVkYWEzZDNjNWZjOTAzNmQwZGZlZGUKXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9j
c3MvY29sb3ItY29ycmVjdGlvbi1vbi1ib3gtc2hhZG93LWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9jc3MvY29sb3ItY29ycmVjdGlvbi1v
bi1ib3gtc2hhZG93LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9mYXN0L2Nzcy9jb2xvci1jb3JyZWN0aW9uLW9uLWJveC1zaGFkb3ctZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzIEBACitsYXllciBhdCAoMCwwKSBzaXpl
IDgwMHg2MDAKKyAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgw
LDApIHNpemUgODAweDYwMAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4
NjAwCisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTg0CisgICAgICBS
ZW5kZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6ZSA3ODR4MzYKKyAgICAgICAgUmVuZGVyVGV4dCB7
I3RleHR9IGF0ICgwLDApIHNpemUgNzc3eDM2CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkg
d2lkdGggNzc3OiAiVGhlIHNoYWRvdyBzaG91bGQgbWF0Y2ggdGhlIGNvbG9yIG9mIHRoZSB0b3Ag
c3F1YXJlIGFuZCBub3QgdGhlIGNvbG9yIG9mIHRoZSBib3R0b20gc3F1YXJlLiBUaGUgdG9wIHNx
dWFyZSBhbmQgaXRzIHNoYWRvdyIKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxOCkgd2lkdGgg
MjMyOiAiYXJlIGJvdGggY29sb3ItY29ycmVjdGVkIGZyb20gc1JHQi4iCisgICAgICBSZW5kZXJC
bG9jayB7RElWfSBhdCAoMCw1Mikgc2l6ZSAxMDB4MTAwIFtiZ2NvbG9yPSM1NjAwNjNdCisgICAg
ICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCwxNTIpIHNpemUgNzg0eDE4CisgICAgICAg
IFJlbmRlckJSIHtCUn0gYXQgKDAsMCkgc2l6ZSAweDE4CisgICAgICBSZW5kZXJCbG9jayB7RElW
fSBhdCAoMCwxNzApIHNpemUgMTAweDEwMCBbYmdjb2xvcj0jNTYwMDYzXQpJbmRleDogTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvY3NzL2NvbG9yLWNvcnJlY3Rpb24tb24tdGV4dC1zaGFk
b3ctZXhwZWN0ZWQuY2hlY2tzdW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL2Zhc3QvY3NzL2NvbG9yLWNvcnJlY3Rpb24tb24tdGV4dC1zaGFkb3ctZXhwZWN0ZWQuY2hl
Y2tzdW0JKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9jc3Mv
Y29sb3ItY29ycmVjdGlvbi1vbi10ZXh0LXNoYWRvdy1leHBlY3RlZC5jaGVja3N1bQkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSBAQAorMjVmZmM4MzRkNDJjODhhNWNkNzIzNjc1YjI4Njc4MTUKXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
ZmFzdC9jc3MvY29sb3ItY29ycmVjdGlvbi1vbi10ZXh0LXNoYWRvdy1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvY3NzL2NvbG9yLWNvcnJl
Y3Rpb24tb24tdGV4dC1zaGFkb3ctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvY3NzL2NvbG9yLWNvcnJlY3Rpb24tb24tdGV4dC1zaGFk
b3ctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIyIEBACitsYXllciBhdCAo
MCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xh
eWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkg
c2l6ZSA4MDB4NjAwCisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTg0
CisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6ZSA3ODR4MzYKKyAgICAgICAgUmVu
ZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNzQ2eDM2CisgICAgICAgICAgdGV4dCBydW4g
YXQgKDAsMCkgd2lkdGggNzQ2OiAiVGhpcyBpcyBzdWJ0bGUsIGJ1dCB0aGUgc2hhZG93IHNob3Vs
ZCBtYXRjaCB0aGUgY29sb3Igb2YgdGhlIHRvcCBIIGFuZCBub3QgdGhlIGNvbG9yIG9mIHRoZSBi
b3R0b20gSC4gVGhlIHRvcCBIIGFuZCBpdHMiCisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTgp
IHdpZHRoIDI4NTogInNoYWRvdyBhcmUgYm90aCBjb2xvci1jb3JyZWN0ZWQgZnJvbSBzUkdCLiIK
KyAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDUyKSBzaXplIDc4NHgyMzAKKyAg
ICAgICAgUmVuZGVySW5saW5lIHtTUEFOfSBhdCAoMCwwKSBzaXplIDc4eDExNSBbY29sb3I9IzU2
MDA2M10KKyAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA3OHgxMTUK
KyAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDc4OiAiSCIKKyAgICAgICAgUmVu
ZGVyVGV4dCB7I3RleHR9IGF0ICg3OCw3Nikgc2l6ZSA0eDE4CisgICAgICAgICAgdGV4dCBydW4g
YXQgKDc4LDc2KSB3aWR0aCA0OiAiICIKKyAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoODIsOTAp
IHNpemUgMHgwCisgICAgICAgIFJlbmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSA3OHgx
MTUgW2NvbG9yPSM1NjAwNjNdCisgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDEx
NSkgc2l6ZSA3OHgxMTUKKyAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDExNSkgd2lkdGggNzg6
ICJIIgorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAweDAKKyAgICAg
ICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMHgwCisgICAgICAgIFJlbmRlclRl
eHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDB4MAo=
</data>
<flag name="review"
          id="24668"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>