<?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>24137</bug_id>
          
          <creation_ts>2009-02-24 14:33:44 -0800</creation_ts>
          <short_desc>Fix localToAbsolute() and absoluteToLocal() to map points through 3d transforms</short_desc>
          <delta_ts>2009-02-24 18:50:59 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</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>
          
          <blocked>23359</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>cmarrin</cc>
    
    <cc>dino</cc>
    
    <cc>hyatt</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>110821</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-02-24 14:33:44 -0800</bug_when>
    <thetext>localToAbsolute() and absoluteToLocal() need to correctly map points through 3d transforms, taking perspective and transform-style into account.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>110861</commentid>
    <comment_count>1</comment_count>
      <attachid>27943</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-02-24 16:52:03 -0800</bug_when>
    <thetext>Created attachment 27943
Patch, changelog

I have extensive test cases, but I can&apos;t land them until bug 23943 is landed, and/or we fix hit testing for 3d. So they will come later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>110863</commentid>
    <comment_count>2</comment_count>
      <attachid>27943</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2009-02-24 17:25:55 -0800</bug_when>
    <thetext>Comment on attachment 27943
Patch, changelog

Put TransformState in its own file and don&apos;t worry about it being a nested RenderObject struct.  Everything else looks fine to me.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>110892</commentid>
    <comment_count>3</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-02-24 18:50:59 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/41208</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27943</attachid>
            <date>2009-02-24 16:52:03 -0800</date>
            <delta_ts>2009-02-24 17:25:55 -0800</delta_ts>
            <desc>Patch, changelog</desc>
            <filename>24137_patch.txt</filename>
            <type>text/plain</type>
            <size>32404</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NzljODQ0YS4uZTBjYjdhMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSw2NCBAQAogMjAwOS0wMi0yNCAgU2ltb24gRnJhc2Vy
ICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjQxMzcKKyAgICAgICAgCisgICAgICAgIEZpeCBsb2NhbFRvQWJzb2x1dGUoKSBhbmQgYWJz
b2x1dGVUb0xvY2FsKCkgdG8gbWFwIHBvaW50cyB0aHJvdWdoIDNkIHRyYW5zZm9ybXMsCisgICAg
ICAgIHRha2luZyBwZXJzcGVjdGl2ZSBhbmQgdHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZCBp
bnRvIGFjY291bnQuCisgICAgICAgIAorICAgICAgICBJbiBvcmRlciB0byBzdXBwb3J0IHRyYW5z
Zm9ybS1zdHlsZTogcHJlc2VydmUtM2QsIHdoaWNoIGtlZXBzIGVsZW1lbnRzIGluIGEKKyAgICAg
ICAgM2Qgc3BhY2UsIHdlIGhhdmUgdG8gY2FycnkgYWxvbmcgYW4gYWNjdW11bGF0ZWQgbWF0cml4
IGluIFRyYW5zZm9ybVN0YXRlLgorICAgICAgICBXZSBhbHNvIG5lZWQgdG8gYXBwbHkgdGhlIHBl
cnNwZWN0aXZlIGZyb20gdGhlIHBhcmVudCwgaWYgYW55LCB3aXRoIHRoZQorICAgICAgICBhcHBy
b3ByaWF0ZSBvcmlnaW4uCisKKyAgICAgICAgKiBXZWJDb3JlLmJhc2UuZXhwOgorICAgICAgICAq
IGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4Ojp0cmFuc2xhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg6OnRyYW5zbGF0ZTNkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4Ojp0cmFuc2xhdGVSaWdodDNkKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0
cml4Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCb3g6Om1hcExvY2FsVG9BYnNvbHV0ZVBvaW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJveDo6bWFwQWJzb2x1dGVUb0xvY2FsUG9pbnQpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJCb3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnVwZGF0ZVRyYW5zZm9ybSk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGVyc3BlY3RpdmVUcmFuc2Zvcm0pOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBlcnNwZWN0aXZlT3JpZ2luKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNr
aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlR3Jh
cGhpY3NMYXllckdlb21ldHJ5KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21w
b3NpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlcXVpcmVzQ29tcG9zaXRpbmdMYXllckZv
clRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6Omxh
eWVySGFzM0RDb250ZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6bG9jYWxUb0Fic29sdXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6YWJzb2x1dGVUb0xvY2FsKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlck9iamVjdDo6VHJhbnNmb3JtU3RhdGU6Om1vdmUpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyT2JqZWN0OjpUcmFuc2Zvcm1TdGF0ZTo6YXBwbHlUcmFuc2Zvcm0pOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjptYXBMb2NhbFRvQWJzb2x1dGVQb2ludCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6Om1hcEFic29sdXRlVG9Mb2NhbFBvaW50KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJPYmplY3Q6OlRyYW5zZm9ybVN0YXRlOjopOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
T2JqZWN0OjpUcmFuc2Zvcm1TdGF0ZTo6VHJhbnNmb3JtU3RhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyT2JqZWN0OjpUcmFuc2Zvcm1TdGF0ZTo6bW92ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJPYmplY3Q6OlRyYW5zZm9ybVN0YXRlOjpmbGF0dGVuKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxl
Q2VsbDo6bWFwTG9jYWxUb0Fic29sdXRlUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGFibGVDZWxsOjptYXBBYnNvbHV0ZVRvTG9jYWxQb2ludCk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclRhYmxlQ2VsbC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6Om1hcExvY2FsVG9BYnNvbHV0ZVBvaW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6Om1hcEFic29sdXRlVG9Mb2NhbFBvaW50KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlldy5oOgorICAgICAgICAqIHJlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6Omhh
c1BlcnNwZWN0aXZlKToKKworMjAwOS0wMi0yNCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2Vy
QGFwcGxlLmNvbT4KKwogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbAogCiAgICAgICAg
IE1pbm9yIG51bWVyaWMgY2xlYW51cDogY29udmVydCBmbG9hdCBsaXRlcmFscyB0byBkb3VibGVz
LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmJhc2UuZXhwIGIvV2ViQ29yZS9XZWJDb3Jl
LmJhc2UuZXhwCmluZGV4IGJkODE2NzUuLjhiMGE1Y2QgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2Vi
Q29yZS5iYXNlLmV4cAorKysgYi9XZWJDb3JlL1dlYkNvcmUuYmFzZS5leHAKQEAgLTc0MCw2ICs3
NDAsNyBAQCBfX1pOSzdXZWJDb3JlMTJJY29uRGF0YWJhc2UxMmRhdGFiYXNlUGF0aEV2CiBfX1pO
SzdXZWJDb3JlMTJJY29uRGF0YWJhc2UyNHNob3VsZFN0b3BUaHJlYWRBY3Rpdml0eUV2CiBfX1pO
SzdXZWJDb3JlMTJJY29uRGF0YWJhc2U5aXNFbmFibGVkRXYKIF9fWk5LN1dlYkNvcmUxMlJlbmRl
ck9iamVjdDE0ZW5jbG9zaW5nTGF5ZXJFdgorX19aTks3V2ViQ29yZTEyUmVuZGVyT2JqZWN0MTVs
b2NhbFRvQWJzb2x1dGVFTlNfMTBGbG9hdFBvaW50RWJiCiBfX1pOSzdXZWJDb3JlMTJTaGFyZWRC
dWZmZXI0ZGF0YUV2CiBfX1pOSzdXZWJDb3JlMTJTaGFyZWRCdWZmZXI0c2l6ZUV2CiBfX1pOSzdX
ZWJDb3JlMTJUZXh0RW5jb2Rpbmc2ZGVjb2RlRVBLY21iUmIKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
Y3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9XZWJDb3JlL2Nzcy9DU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IGI0MWNjMzYuLjg5MTZjZDkgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvV2Vi
Q29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtMTE1OSw3ICsxMTU5
LDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpn
ZXRQcm9wZXJ0eUNTU1ZhbHVlKGludCBwcm9wZXIKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdE1hcmdpblRvcENvbGxhcHNlOgogICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZh
bHVlOjpjcmVhdGUoc3R5bGUtPm1hcmdpblRvcENvbGxhcHNlKCkpOwogICAgICAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmU6Ci0gICAgICAgICAgICBpZiAoc3R5bGUtPnBlcnNw
ZWN0aXZlKCkgPT0gMCkKKyAgICAgICAgICAgIGlmICghc3R5bGUtPmhhc1BlcnNwZWN0aXZlKCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlm
aWVyKENTU1ZhbHVlTm9uZSk7CiAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6
OmNyZWF0ZShzdHlsZS0+cGVyc3BlY3RpdmUoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1C
RVIpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmVPcmlnaW46IHsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zv
cm1hdGlvbk1hdHJpeC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMv
VHJhbnNmb3JtYXRpb25NYXRyaXguY3BwCmluZGV4IGIwNTQ5YTUuLjYxMGY1OGEgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1h
dHJpeC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5z
Zm9ybWF0aW9uTWF0cml4LmNwcApAQCAtNzcxLDYgKzc3MSw3IEBAIFRyYW5zZm9ybWF0aW9uTWF0
cml4JiBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6cm90YXRlM2QoZG91YmxlIHJ4LCBkb3VibGUgcnks
IGRvdWJsCiAKIFRyYW5zZm9ybWF0aW9uTWF0cml4JiBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6dHJh
bnNsYXRlKGRvdWJsZSB0eCwgZG91YmxlIHR5KQogeworICAgIC8vIEZJWE1FOiBvcHRpbWl6ZSB0
byBhdm9pZCBtYXRyaXggY29weQogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1hdDsKICAgICBt
YXQubV9tYXRyaXhbM11bMF0gPSB0eDsKICAgICBtYXQubV9tYXRyaXhbM11bMV0gPSB0eTsKQEAg
LTc4MSw2ICs3ODIsNyBAQCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgVHJhbnNmb3JtYXRpb25NYXRy
aXg6OnRyYW5zbGF0ZShkb3VibGUgdHgsIGRvdWJsZSB0eSkKIAogVHJhbnNmb3JtYXRpb25NYXRy
aXgmIFRyYW5zZm9ybWF0aW9uTWF0cml4Ojp0cmFuc2xhdGUzZChkb3VibGUgdHgsIGRvdWJsZSB0
eSwgZG91YmxlIHR6KQogeworICAgIC8vIEZJWE1FOiBvcHRpbWl6ZSB0byBhdm9pZCBtYXRyaXgg
Y29weQogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1hdDsKICAgICBtYXQubV9tYXRyaXhbM11b
MF0gPSB0eDsKICAgICBtYXQubV9tYXRyaXhbM11bMV0gPSB0eTsKQEAgLTc5MCw2ICs3OTIsMzIg
QEAgVHJhbnNmb3JtYXRpb25NYXRyaXgmIFRyYW5zZm9ybWF0aW9uTWF0cml4Ojp0cmFuc2xhdGUz
ZChkb3VibGUgdHgsIGRvdWJsZSB0eSwgZG8KICAgICByZXR1cm4gKnRoaXM7CiB9CiAKK1RyYW5z
Zm9ybWF0aW9uTWF0cml4JiBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6dHJhbnNsYXRlUmlnaHQzZChk
b3VibGUgdHgsIGRvdWJsZSB0eSwgZG91YmxlIHR6KQoreworICAgIGlmICh0eCAhPSAwKSB7Cisg
ICAgICAgIG1fbWF0cml4WzBdWzBdICs9ICBtX21hdHJpeFswXVszXSAqIHR4OworICAgICAgICBt
X21hdHJpeFsxXVswXSArPSAgbV9tYXRyaXhbMV1bM10gKiB0eDsKKyAgICAgICAgbV9tYXRyaXhb
Ml1bMF0gKz0gIG1fbWF0cml4WzJdWzNdICogdHg7CisgICAgICAgIG1fbWF0cml4WzNdWzBdICs9
ICBtX21hdHJpeFszXVszXSAqIHR4OworICAgIH0KKworICAgIGlmICh0eSAhPSAwKSB7CisgICAg
ICAgIG1fbWF0cml4WzBdWzFdICs9ICBtX21hdHJpeFswXVszXSAqIHR5OworICAgICAgICBtX21h
dHJpeFsxXVsxXSArPSAgbV9tYXRyaXhbMV1bM10gKiB0eTsKKyAgICAgICAgbV9tYXRyaXhbMl1b
MV0gKz0gIG1fbWF0cml4WzJdWzNdICogdHk7CisgICAgICAgIG1fbWF0cml4WzNdWzFdICs9ICBt
X21hdHJpeFszXVszXSAqIHR5OworICAgIH0KKworICAgIGlmICh0eiAhPSAwKSB7CisgICAgICAg
IG1fbWF0cml4WzBdWzJdICs9ICBtX21hdHJpeFswXVszXSAqIHR6OworICAgICAgICBtX21hdHJp
eFsxXVsyXSArPSAgbV9tYXRyaXhbMV1bM10gKiB0ejsKKyAgICAgICAgbV9tYXRyaXhbMl1bMl0g
Kz0gIG1fbWF0cml4WzJdWzNdICogdHo7CisgICAgICAgIG1fbWF0cml4WzNdWzJdICs9ICBtX21h
dHJpeFszXVszXSAqIHR6OworICAgIH0KKworICAgIHJldHVybiAqdGhpczsKK30KKwogVHJhbnNm
b3JtYXRpb25NYXRyaXgmIFRyYW5zZm9ybWF0aW9uTWF0cml4Ojpza2V3KGRvdWJsZSBzeCwgZG91
YmxlIHN5KQogewogICAgIC8vIGFuZ2xlcyBhcmUgaW4gZGVncmVlcy4gU3dpdGNoIHRvIHJhZGlh
bnMKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFu
c2Zvcm1hdGlvbk1hdHJpeC5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1z
L1RyYW5zZm9ybWF0aW9uTWF0cml4LmgKaW5kZXggMzU3MjEyYi4uMzA2YTRjYSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0
cml4LmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9y
bWF0aW9uTWF0cml4LmgKQEAgLTIwNiw2ICsyMDYsOSBAQCBwdWJsaWM6CiAgICAgCiAgICAgVHJh
bnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zbGF0ZShkb3VibGUgdHgsIGRvdWJsZSB0eSk7CiAgICAg
VHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zbGF0ZTNkKGRvdWJsZSB0eCwgZG91YmxlIHR5LCBk
b3VibGUgdHopOworCisgICAgLy8gdHJhbnNsYXRpb24gYWRkZWQgd2l0aCBhIHBvc3QtbXVsdGlw
bHkKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNsYXRlUmlnaHQzZChkb3VibGUgdHgs
IGRvdWJsZSB0eSwgZG91YmxlIHR6KTsKICAgICAKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
ZmxpcFgoKTsKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZmxpcFkoKTsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3guY3BwCmluZGV4IDY3OTZlZDkuLjE1ZDhhZjUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNw
cApAQCAtOTEwLDE3ICs5MTAsMTcgQEAgaW50IFJlbmRlckJveDo6Y29udGFpbmluZ0Jsb2NrV2lk
dGhGb3JDb250ZW50KCkgY29uc3QKICAgICByZXR1cm4gY2ItPmF2YWlsYWJsZVdpZHRoKCk7CiB9
CiAKLUZsb2F0UG9pbnQgUmVuZGVyQm94Ojpsb2NhbFRvQWJzb2x1dGUoRmxvYXRQb2ludCBsb2Nh
bFBvaW50LCBib29sIGZpeGVkLCBib29sIHVzZVRyYW5zZm9ybXMpIGNvbnN0Cit2b2lkIFJlbmRl
ckJveDo6bWFwTG9jYWxUb0Fic29sdXRlUG9pbnQoYm9vbCBmaXhlZCwgYm9vbCB1c2VUcmFuc2Zv
cm1zLCBUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUpIGNvbnN0CiB7CiAgICAgaWYgKFJl
bmRlclZpZXcqIHYgPSB2aWV3KCkpIHsKICAgICAgICAgaWYgKHYtPmxheW91dFN0YXRlRW5hYmxl
ZCgpKSB7CiAgICAgICAgICAgICBMYXlvdXRTdGF0ZSogbGF5b3V0U3RhdGUgPSB2LT5sYXlvdXRT
dGF0ZSgpOwogICAgICAgICAgICAgSW50U2l6ZSBvZmZzZXQgPSBsYXlvdXRTdGF0ZS0+bV9vZmZz
ZXQ7CiAgICAgICAgICAgICBvZmZzZXQuZXhwYW5kKHgoKSwgeSgpKTsKLSAgICAgICAgICAgIGxv
Y2FsUG9pbnQgKz0gb2Zmc2V0OwogICAgICAgICAgICAgaWYgKHN0eWxlKCktPnBvc2l0aW9uKCkg
PT0gUmVsYXRpdmVQb3NpdGlvbiAmJiBsYXllcigpKQotICAgICAgICAgICAgICAgIGxvY2FsUG9p
bnQgKz0gbGF5ZXIoKS0+cmVsYXRpdmVQb3NpdGlvbk9mZnNldCgpOwotICAgICAgICAgICAgcmV0
dXJuIGxvY2FsUG9pbnQ7CisgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IGxheWVyKCktPnJlbGF0
aXZlUG9zaXRpb25PZmZzZXQoKTsKKyAgICAgICAgICAgIHRyYW5zZm9ybVN0YXRlLm1vdmUob2Zm
c2V0KTsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KIApAQCAtOTI5LDIw
ICs5MjksNDMgQEAgRmxvYXRQb2ludCBSZW5kZXJCb3g6OmxvY2FsVG9BYnNvbHV0ZShGbG9hdFBv
aW50IGxvY2FsUG9pbnQsIGJvb2wgZml4ZWQsIGJvb2wgdXMKIAogICAgIFJlbmRlck9iamVjdCog
byA9IGNvbnRhaW5lcigpOwogICAgIGlmIChvKSB7Ci0gICAgICAgIGlmICh1c2VUcmFuc2Zvcm1z
ICYmIGxheWVyKCkgJiYgbGF5ZXIoKS0+dHJhbnNmb3JtKCkpIHsKKworICAgICAgICBpZiAoaGFz
TGF5ZXIoKSAmJiBsYXllcigpLT50cmFuc2Zvcm0oKSkKICAgICAgICAgICAgIGZpeGVkID0gZmFs
c2U7ICAvLyBFbGVtZW50cyB3aXRoIHRyYW5zZm9ybXMgYWN0IGFzIGEgY29udGFpbmluZyBibG9j
ayBmb3IgZml4ZWQgcG9zaXRpb24gZGVzY2VuZGFudHMKLSAgICAgICAgICAgIGxvY2FsUG9pbnQg
PSBsYXllcigpLT50cmFuc2Zvcm0oKS0+bWFwUG9pbnQobG9jYWxQb2ludCk7Ci0gICAgICAgIH0K
IAotICAgICAgICBsb2NhbFBvaW50ICs9IG9mZnNldEZyb21Db250YWluZXIobyk7CisgICAgICAg
IEludFNpemUgY29udGFpbmVyT2Zmc2V0ID0gb2Zmc2V0RnJvbUNvbnRhaW5lcihvKTsKKyAgICAg
ICAgaWYgKHVzZVRyYW5zZm9ybXMpIHsKKworICAgICAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRy
aXggdHJhbnNmb3JtRnJvbUNvbnRhaW5lcjsKKyAgICAgICAgICAgIHRyYW5zZm9ybUZyb21Db250
YWluZXIudHJhbnNsYXRlKGNvbnRhaW5lck9mZnNldC53aWR0aCgpLCBjb250YWluZXJPZmZzZXQu
aGVpZ2h0KCkpOworICAgICAgICAgICAgaWYgKGhhc0xheWVyKCkgJiYgbGF5ZXIoKS0+dHJhbnNm
b3JtKCkpCisgICAgICAgICAgICAgICAgdHJhbnNmb3JtRnJvbUNvbnRhaW5lci5tdWx0TGVmdCgq
bGF5ZXIoKS0+dHJhbnNmb3JtKCkpOworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBJZiBl
aXRoZXIgdGhlIGNvbnRhaW5lciBvciB0aGlzIGhhdmUgdHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2
ZS0zZCwgd2UgbmVlZCB0byBzdGF5IGluIDNkIHNwYWNlIGJ5CisgICAgICAgICAgICAvLyBhY2N1
bXVsYXRpbmcgdGhlIHRyYW5zZm9ybS4KKyAgICAgICAgICAgIGJvb2wgYWNjdW11bGF0ZVRyYW5z
Zm9ybSA9IChvLT5zdHlsZSgpLT50cmFuc2Zvcm1TdHlsZTNEKCkgPT0gVHJhbnNmb3JtU3R5bGUz
RFByZXNlcnZlM0QgfHwgc3R5bGUoKS0+dHJhbnNmb3JtU3R5bGUzRCgpID09IFRyYW5zZm9ybVN0
eWxlM0RQcmVzZXJ2ZTNEKTsKKyAgICAgICAgICAgIGlmIChvLT5zdHlsZSgpLT5oYXNQZXJzcGVj
dGl2ZSgpKSB7CisgICAgICAgICAgICAgICAgLy8gUGVycHNlY3RpdmUgb24gdGhlIGNvbnRhaW5l
ciBhZmZlY3RzIHVzLCBzbyB3ZSBoYXZlIHRvIGZhY3RvciBpdCBpbiBoZXJlLgorICAgICAgICAg
ICAgICAgIEFTU0VSVChvLT5oYXNMYXllcigpKTsKKyAgICAgICAgICAgICAgICBGbG9hdFBvaW50
IHBlcnNwZWN0aXZlT3JpZ2luID0gdG9SZW5kZXJCb3gobyktPmxheWVyKCktPnBlcnNwZWN0aXZl
T3JpZ2luKCk7CisKKyAgICAgICAgICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBwZXJzcGVj
dGl2ZU1hdHJpeDsKKyAgICAgICAgICAgICAgICBwZXJzcGVjdGl2ZU1hdHJpeC5hcHBseVBlcnNw
ZWN0aXZlKG8tPnN0eWxlKCktPnBlcnNwZWN0aXZlKCkpOworICAgICAgICAgICAgICAgIAorICAg
ICAgICAgICAgICAgIHRyYW5zZm9ybUZyb21Db250YWluZXIudHJhbnNsYXRlUmlnaHQzZCgtcGVy
c3BlY3RpdmVPcmlnaW4ueCgpLCAtcGVyc3BlY3RpdmVPcmlnaW4ueSgpLCAwKTsKKyAgICAgICAg
ICAgICAgICB0cmFuc2Zvcm1Gcm9tQ29udGFpbmVyLm11bHRpcGx5KHBlcnNwZWN0aXZlTWF0cml4
KTsKKyAgICAgICAgICAgICAgICB0cmFuc2Zvcm1Gcm9tQ29udGFpbmVyLnRyYW5zbGF0ZVJpZ2h0
M2QocGVyc3BlY3RpdmVPcmlnaW4ueCgpLCBwZXJzcGVjdGl2ZU9yaWdpbi55KCksIDApOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICB0cmFuc2Zvcm1TdGF0ZS5hcHBseVRyYW5zZm9ybSh0
cmFuc2Zvcm1Gcm9tQ29udGFpbmVyLCBhY2N1bXVsYXRlVHJhbnNmb3JtKTsKKyAgICAgICAgfSBl
bHNlCisgICAgICAgICAgICB0cmFuc2Zvcm1TdGF0ZS5tb3ZlKGNvbnRhaW5lck9mZnNldC53aWR0
aCgpLCBjb250YWluZXJPZmZzZXQuaGVpZ2h0KCkpOwogCi0gICAgICAgIHJldHVybiBvLT5sb2Nh
bFRvQWJzb2x1dGUobG9jYWxQb2ludCwgZml4ZWQsIHVzZVRyYW5zZm9ybXMpOworICAgICAgICBv
LT5tYXBMb2NhbFRvQWJzb2x1dGVQb2ludChmaXhlZCwgdXNlVHJhbnNmb3JtcywgdHJhbnNmb3Jt
U3RhdGUpOwogICAgIH0KLSAgICAKLSAgICByZXR1cm4gRmxvYXRQb2ludCgpOwogfQogCi1GbG9h
dFBvaW50IFJlbmRlckJveDo6YWJzb2x1dGVUb0xvY2FsKEZsb2F0UG9pbnQgY29udGFpbmVyUG9p
bnQsIGJvb2wgZml4ZWQsIGJvb2wgdXNlVHJhbnNmb3JtcykgY29uc3QKK3ZvaWQgUmVuZGVyQm94
OjptYXBBYnNvbHV0ZVRvTG9jYWxQb2ludChib29sIGZpeGVkLCBib29sIHVzZVRyYW5zZm9ybXMs
IFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSkgY29uc3QKIHsKICAgICAvLyBXZSBkb24n
dCBleHBlY3QgYWJzb2x1dGVUb0xvY2FsKCkgdG8gYmUgY2FsbGVkIGR1cmluZyBsYXlvdXQgKHll
dCkKICAgICBBU1NFUlQoIXZpZXcoKSB8fCAhdmlldygpLT5sYXlvdXRTdGF0ZUVuYWJsZWQoKSk7
CkBAIC05NTUsMTQgKzk3OCwzNSBAQCBGbG9hdFBvaW50IFJlbmRlckJveDo6YWJzb2x1dGVUb0xv
Y2FsKEZsb2F0UG9pbnQgY29udGFpbmVyUG9pbnQsIGJvb2wgZml4ZWQsIGJvbwogICAgIAogICAg
IFJlbmRlck9iamVjdCogbyA9IGNvbnRhaW5lcigpOwogICAgIGlmIChvKSB7Ci0gICAgICAgIEZs
b2F0UG9pbnQgbG9jYWxQb2ludCA9IG8tPmFic29sdXRlVG9Mb2NhbChjb250YWluZXJQb2ludCwg
Zml4ZWQsIHVzZVRyYW5zZm9ybXMpOwotICAgICAgICBsb2NhbFBvaW50IC09IG9mZnNldEZyb21D
b250YWluZXIobyk7Ci0gICAgICAgIGlmICh1c2VUcmFuc2Zvcm1zICYmIGxheWVyKCkgJiYgbGF5
ZXIoKS0+dHJhbnNmb3JtKCkpCi0gICAgICAgICAgICBsb2NhbFBvaW50ID0gbGF5ZXIoKS0+dHJh
bnNmb3JtKCktPmludmVyc2UoKS5tYXBQb2ludChsb2NhbFBvaW50KTsKLSAgICAgICAgcmV0dXJu
IGxvY2FsUG9pbnQ7CisgICAgICAgIG8tPm1hcEFic29sdXRlVG9Mb2NhbFBvaW50KGZpeGVkLCB1
c2VUcmFuc2Zvcm1zLCB0cmFuc2Zvcm1TdGF0ZSk7CisKKyAgICAgICAgSW50U2l6ZSBjb250YWlu
ZXJPZmZzZXQgPSBvZmZzZXRGcm9tQ29udGFpbmVyKG8pOworICAgICAgICBpZiAodXNlVHJhbnNm
b3JtcykgeworICAgICAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtRnJvbUNv
bnRhaW5lcjsKKyAgICAgICAgICAgIHRyYW5zZm9ybUZyb21Db250YWluZXIudHJhbnNsYXRlKGNv
bnRhaW5lck9mZnNldC53aWR0aCgpLCBjb250YWluZXJPZmZzZXQuaGVpZ2h0KCkpOworICAgICAg
ICAgICAgaWYgKGhhc0xheWVyKCkgJiYgbGF5ZXIoKS0+dHJhbnNmb3JtKCkpCisgICAgICAgICAg
ICAgICAgdHJhbnNmb3JtRnJvbUNvbnRhaW5lci5tdWx0TGVmdCgqbGF5ZXIoKS0+dHJhbnNmb3Jt
KCkpOworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBJZiBlaXRoZXIgdGhlIGNvbnRhaW5l
ciBvciB0aGlzIGhhdmUgdHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZCwgd2UgbmVlZCB0byBz
dGF5IGluIDNkIHNwYWNlIGJ5CisgICAgICAgICAgICAvLyBhY2N1bXVsYXRpbmcgdGhlIHRyYW5z
Zm9ybS4KKyAgICAgICAgICAgIGJvb2wgYWNjdW11bGF0ZVRyYW5zZm9ybSA9IChvLT5zdHlsZSgp
LT50cmFuc2Zvcm1TdHlsZTNEKCkgPT0gVHJhbnNmb3JtU3R5bGUzRFByZXNlcnZlM0QgfHwgc3R5
bGUoKS0+dHJhbnNmb3JtU3R5bGUzRCgpID09IFRyYW5zZm9ybVN0eWxlM0RQcmVzZXJ2ZTNEKTsK
KyAgICAgICAgICAgIGlmIChvLT5zdHlsZSgpLT5oYXNQZXJzcGVjdGl2ZSgpKSB7CisgICAgICAg
ICAgICAgICAgLy8gUGVycHNlY3RpdmUgb24gdGhlIGNvbnRhaW5lciBhZmZlY3RzIHVzLCBzbyB3
ZSBoYXZlIHRvIGZhY3RvciBpdCBpbiBoZXJlLgorICAgICAgICAgICAgICAgIEFTU0VSVChvLT5o
YXNMYXllcigpKTsKKyAgICAgICAgICAgICAgICBGbG9hdFBvaW50IHBlcnNwZWN0aXZlT3JpZ2lu
ID0gdG9SZW5kZXJCb3gobyktPmxheWVyKCktPnBlcnNwZWN0aXZlT3JpZ2luKCk7CisKKyAgICAg
ICAgICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBwZXJzcGVjdGl2ZU1hdHJpeDsKKyAgICAg
ICAgICAgICAgICBwZXJzcGVjdGl2ZU1hdHJpeC5hcHBseVBlcnNwZWN0aXZlKG8tPnN0eWxlKCkt
PnBlcnNwZWN0aXZlKCkpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHRyYW5z
Zm9ybUZyb21Db250YWluZXIudHJhbnNsYXRlUmlnaHQzZCgtcGVyc3BlY3RpdmVPcmlnaW4ueCgp
LCAtcGVyc3BlY3RpdmVPcmlnaW4ueSgpLCAwKTsKKyAgICAgICAgICAgICAgICB0cmFuc2Zvcm1G
cm9tQ29udGFpbmVyLm11bHRpcGx5KHBlcnNwZWN0aXZlTWF0cml4KTsKKyAgICAgICAgICAgICAg
ICB0cmFuc2Zvcm1Gcm9tQ29udGFpbmVyLnRyYW5zbGF0ZVJpZ2h0M2QocGVyc3BlY3RpdmVPcmln
aW4ueCgpLCBwZXJzcGVjdGl2ZU9yaWdpbi55KCksIDApOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICB0cmFuc2Zvcm1TdGF0ZS5hcHBseVRyYW5zZm9ybSh0cmFuc2Zvcm1Gcm9tQ29udGFp
bmVyLCBhY2N1bXVsYXRlVHJhbnNmb3JtKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICB0
cmFuc2Zvcm1TdGF0ZS5tb3ZlKC1jb250YWluZXJPZmZzZXQud2lkdGgoKSwgLWNvbnRhaW5lck9m
ZnNldC5oZWlnaHQoKSk7CiAgICAgfQotICAgIAotICAgIHJldHVybiBGbG9hdFBvaW50KCk7CiB9
CiAKIEZsb2F0UXVhZCBSZW5kZXJCb3g6OmxvY2FsVG9Db250YWluZXJRdWFkKGNvbnN0IEZsb2F0
UXVhZCYgbG9jYWxRdWFkLCBSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwg
Ym9vbCBmaXhlZCkgY29uc3QKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eC5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKaW5kZXggZmZjYTJmMy4uZTk4M2Rm
ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKKysrIGIvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKQEAgLTEzOCw4ICsxMzgsNiBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiwgaW50IHR4LCBpbnQg
dHksIGJvb2wgdG9wTGV2ZWwgPSB0cnVlKTsKICAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFk
cyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wgdG9wTGV2ZWwgPSB0cnVlKTsKICAgICAKLSAgICB2
aXJ0dWFsIEZsb2F0UG9pbnQgbG9jYWxUb0Fic29sdXRlKEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9
IEZsb2F0UG9pbnQoKSwgYm9vbCBmaXhlZCA9IGZhbHNlLCBib29sIHVzZVRyYW5zZm9ybXMgPSBm
YWxzZSkgY29uc3Q7Ci0gICAgdmlydHVhbCBGbG9hdFBvaW50IGFic29sdXRlVG9Mb2NhbChGbG9h
dFBvaW50IGNvbnRhaW5lclBvaW50LCBib29sIGZpeGVkID0gZmFsc2UsIGJvb2wgdXNlVHJhbnNm
b3JtcyA9IGZhbHNlKSBjb25zdDsKICAgICB2aXJ0dWFsIEZsb2F0UXVhZCBsb2NhbFRvQ29udGFp
bmVyUXVhZChjb25zdCBGbG9hdFF1YWQmLCBSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENv
bnRhaW5lciwgYm9vbCBmaXhlZCA9IGZhbHNlKSBjb25zdDsKIAogICAgIEludFJlY3QgcmVmbGVj
dGlvbkJveCgpIGNvbnN0OwpAQCAtMzAyLDYgKzMwMCw5IEBAIHByb3RlY3RlZDoKICAgICAKICAg
ICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2FsY3VsYXRlU2l6ZUFzUmVwbGFjZWQoKSBjb25zdCB7IHJl
dHVybiBpc1JlcGxhY2VkKCkgJiYgIWlzSW5saW5lQmxvY2tPcklubGluZVRhYmxlKCk7IH0KIAor
ICAgIHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRvQWJzb2x1dGVQb2ludChib29sIGZpeGVkLCBib29s
IHVzZVRyYW5zZm9ybXMsIFRyYW5zZm9ybVN0YXRlJikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lk
IG1hcEFic29sdXRlVG9Mb2NhbFBvaW50KGJvb2wgZml4ZWQsIGJvb2wgdXNlVHJhbnNmb3Jtcywg
VHJhbnNmb3JtU3RhdGUmKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBib29sIGluY2x1ZGVWZXJ0
aWNhbFNjcm9sbGJhclNpemUoKSBjb25zdCB7IHJldHVybiBoYXNPdmVyZmxvd0NsaXAoKSAmJiAo
c3R5bGUoKS0+b3ZlcmZsb3dZKCkgPT0gT1NDUk9MTCB8fCBzdHlsZSgpLT5vdmVyZmxvd1koKSA9
PSBPQVVUTyk7IH0KICAgICBib29sIGluY2x1ZGVIb3Jpem9udGFsU2Nyb2xsYmFyU2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIGhhc092ZXJmbG93Q2xpcCgpICYmIChzdHlsZSgpLT5vdmVyZmxvd1goKSA9
PSBPU0NST0xMIHx8IHN0eWxlKCktPm92ZXJmbG93WCgpID09IE9BVVRPKTsgfQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuY3BwCmluZGV4IDZhZTQyOWIuLjBhOWJlZjYgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllci5jcHAKQEAgLTMxMyw3ICszMTMsOSBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVM
YXllclBvc2l0aW9ucyhib29sIGRvRnVsbFJlcGFpbnQsIGJvb2wgY2hlY2tGb3JSZXBhaW50KQog
CiB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVUcmFuc2Zvcm0oKQogewotICAgIGJvb2wgaGFzVHJh
bnNmb3JtID0gcmVuZGVyZXIoKS0+aGFzVHJhbnNmb3JtKCk7CisgICAgLy8gaGFzVHJhbnNmb3Jt
KCkgb24gdGhlIHJlbmRlcmVyIGlzIGFsc28gdHJ1ZSB3aGVuIHRoZXJlIGlzIHRyYW5zZm9ybS1z
dHlsZTogcHJlc2VydmUtM2Qgb3IgcGVyc3BlY3RpdmUgc2V0LAorICAgIC8vIHNvIGNoZWNrIHN0
eWxlIHRvby4KKyAgICBib29sIGhhc1RyYW5zZm9ybSA9IHJlbmRlcmVyKCktPmhhc1RyYW5zZm9y
bSgpICYmIHJlbmRlcmVyKCktPnN0eWxlKCktPmhhc1RyYW5zZm9ybSgpOwogICAgIGJvb2wgaGFk
VHJhbnNmb3JtID0gbV90cmFuc2Zvcm07CiAgICAgaWYgKGhhc1RyYW5zZm9ybSAhPSBoYWRUcmFu
c2Zvcm0pIHsKICAgICAgICAgaWYgKGhhc1RyYW5zZm9ybSkKQEAgLTUwNCw3ICs1MDYsNyBAQCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCBSZW5kZXJMYXllcjo6cGVyc3BlY3RpdmVUcmFuc2Zvcm0oKSBj
b25zdAogICAgICAgICByZXR1cm4gVHJhbnNmb3JtYXRpb25NYXRyaXgoKTsKIAogICAgIFJlbmRl
clN0eWxlKiBzdHlsZSA9IHJlbmRlcmVyKCktPnN0eWxlKCk7Ci0gICAgaWYgKCFzdHlsZS0+cGVy
c3BlY3RpdmUoKSkKKyAgICBpZiAoIXN0eWxlLT5oYXNQZXJzcGVjdGl2ZSgpKQogICAgICAgICBy
ZXR1cm4gVHJhbnNmb3JtYXRpb25NYXRyaXgoKTsKIAogICAgIC8vIE1heWJlIGZldGNoIHRoZSBw
ZXJzcGVjdGl2ZSBmcm9tIHRoZSBiYWNraW5nPwpAQCAtNTE1LDYgKzUxNyw4IEBAIFRyYW5zZm9y
bWF0aW9uTWF0cml4IFJlbmRlckxheWVyOjpwZXJzcGVjdGl2ZVRyYW5zZm9ybSgpIGNvbnN0CiAg
ICAgZmxvYXQgcGVyc3BlY3RpdmVPcmlnaW5YID0gc3R5bGUtPnBlcnNwZWN0aXZlT3JpZ2luWCgp
LmNhbGNGbG9hdFZhbHVlKGJveFdpZHRoKTsKICAgICBmbG9hdCBwZXJzcGVjdGl2ZU9yaWdpblkg
PSBzdHlsZS0+cGVyc3BlY3RpdmVPcmlnaW5ZKCkuY2FsY0Zsb2F0VmFsdWUoYm94SGVpZ2h0KTsK
IAorICAgIC8vIEEgcGVyc3BlY3RpdmUgb3JpZ2luIG9mIDAsMCBtYWtlcyB0aGUgdmFuaXNoaW5n
IHBvaW50IGluIHRoZSBjZW50ZXIgb2YgdGhlIGVsZW1lbnQuCisgICAgLy8gV2Ugd2FudCBpdCB0
byBiZSBpbiB0aGUgdG9wLWxlZnQsIHNvIHN1YnRyYWN0IGhhbGYgdGhlIGhlaWdodCBhbmQgd2lk
dGguCiAgICAgcGVyc3BlY3RpdmVPcmlnaW5YIC09IGJveFdpZHRoIC8gMi4wZjsKICAgICBwZXJz
cGVjdGl2ZU9yaWdpblkgLT0gYm94SGVpZ2h0IC8gMi4wZjsKICAgICAKQEAgLTUyNiw2ICs1MzAs
MTggQEAgVHJhbnNmb3JtYXRpb25NYXRyaXggUmVuZGVyTGF5ZXI6OnBlcnNwZWN0aXZlVHJhbnNm
b3JtKCkgY29uc3QKICAgICByZXR1cm4gdDsKIH0KIAorRmxvYXRQb2ludCBSZW5kZXJMYXllcjo6
cGVyc3BlY3RpdmVPcmlnaW4oKSBjb25zdAoreworICAgIGlmICghcmVuZGVyZXIoKS0+aGFzVHJh
bnNmb3JtKCkpCisgICAgICAgIHJldHVybiBGbG9hdFBvaW50KCk7CisKKyAgICBjb25zdCBJbnRS
ZWN0IGJvcmRlckJveCA9IHRvUmVuZGVyQm94KHJlbmRlcmVyKCkpLT5ib3JkZXJCb3hSZWN0KCk7
CisgICAgUmVuZGVyU3R5bGUqIHN0eWxlID0gcmVuZGVyZXIoKS0+c3R5bGUoKTsKKworICAgIHJl
dHVybiBGbG9hdFBvaW50KHN0eWxlLT5wZXJzcGVjdGl2ZU9yaWdpblgoKS5jYWxjRmxvYXRWYWx1
ZShib3JkZXJCb3gud2lkdGgoKSksCisgICAgICAgICAgICAgICAgICAgICAgc3R5bGUtPnBlcnNw
ZWN0aXZlT3JpZ2luWSgpLmNhbGNGbG9hdFZhbHVlKGJvcmRlckJveC5oZWlnaHQoKSkpOworfQor
CiBSZW5kZXJMYXllciAqUmVuZGVyTGF5ZXI6OnN0YWNraW5nQ29udGV4dCgpIGNvbnN0CiB7CiAg
ICAgUmVuZGVyTGF5ZXIqIGN1cnIgPSBwYXJlbnQoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCmlu
ZGV4IDNiYzNlMWIuLjg2NzYxOTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaApAQCAtNDAzLDYg
KzQwMyw3IEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGxheWVyIGhhcyBh
IC13ZWJraXQtcGVyc3BlY3RpdmUuCiAgICAgLy8gTm90ZSB0aGF0IHRoaXMgdHJhbnNmb3JtIGhh
cyB0aGUgcGVyc3BlY3RpdmUtb3JpZ2luIGJha2VkIGluLgogICAgIFRyYW5zZm9ybWF0aW9uTWF0
cml4IHBlcnNwZWN0aXZlVHJhbnNmb3JtKCkgY29uc3Q7CisgICAgRmxvYXRQb2ludCBwZXJzcGVj
dGl2ZU9yaWdpbigpIGNvbnN0OwogCiAgICAgdm9pZCBkZXN0cm95KFJlbmRlckFyZW5hKik7CiAK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IGM4MjE4MWUuLmNl
OWU2ZGIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5j
cHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtMjU5
LDcgKzI1OSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVHcmFwaGljc0xheWVy
R2VvbWV0cnkoKQogICAgICAgICBtX2dyYXBoaWNzTGF5ZXItPnNldEFuY2hvclBvaW50KGFuY2hv
cik7CiAKICAgICAgICAgUmVuZGVyU3R5bGUqIHN0eWxlID0gcmVuZGVyZXIoKS0+c3R5bGUoKTsK
LSAgICAgICAgaWYgKHN0eWxlLT5wZXJzcGVjdGl2ZSgpID4gMCkgeworICAgICAgICBpZiAoc3R5
bGUtPmhhc1BlcnNwZWN0aXZlKCkpIHsKICAgICAgICAgICAgIEZsb2F0UG9pbnQgcGVyc3BlY3Rp
dmVPcmlnaW4gPSBjb21wdXRlUGVyc3BlY3RpdmVPcmlnaW4oYm9yZGVyQm94KTsKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgZmxvYXQgeE9mZnNldCA9IHBlcnNwZWN0aXZlT3JpZ2luLngoKSAt
IChmbG9hdClib3JkZXJCb3gud2lkdGgoKSAvIDIuMGY7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAppbmRleCBiNjQ5MzRhLi4yNDdjMzZmIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCisrKyBiL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTYyNSw3ICs2MjUsNyBA
QCBzdGF0aWMgYm9vbCByZXF1aXJlc0NvbXBvc2l0aW5nTGF5ZXJGb3JUcmFuc2Zvcm0oUmVuZGVy
T2JqZWN0KiByZW5kZXJlcikKICAgICBSZW5kZXJTdHlsZSogc3R5bGUgPSByZW5kZXJlci0+c3R5
bGUoKTsKICAgICAvLyBOb3RlIHRoYXQgd2UgYXNrIHRoZSByZW5kZXJlciBpZiBpdCBoYXMgYSB0
cmFuc2Zvcm0sIGJlY2F1c2UgdGhlIHN0eWxlIG1heSBoYXZlIHRyYW5zZm9ybXMsCiAgICAgLy8g
YnV0IHRoZSByZW5kZXJlciBtYXkgYmUgYW4gaW5saW5lIHRoYXQgZG9lc24ndCBzdXBwcG9ydCB0
aGVtLgotICAgIHJldHVybiByZW5kZXJlci0+aGFzVHJhbnNmb3JtKCkgJiYgKHN0eWxlLT50cmFu
c2Zvcm0oKS5oYXMzRE9wZXJhdGlvbigpIHx8IHN0eWxlLT50cmFuc2Zvcm1TdHlsZTNEKCkgPT0g
VHJhbnNmb3JtU3R5bGUzRFByZXNlcnZlM0QgfHwgc3R5bGUtPnBlcnNwZWN0aXZlKCkgPiAwKTsK
KyAgICByZXR1cm4gcmVuZGVyZXItPmhhc1RyYW5zZm9ybSgpICYmIChzdHlsZS0+dHJhbnNmb3Jt
KCkuaGFzM0RPcGVyYXRpb24oKSB8fCBzdHlsZS0+dHJhbnNmb3JtU3R5bGUzRCgpID09IFRyYW5z
Zm9ybVN0eWxlM0RQcmVzZXJ2ZTNEIHx8IHN0eWxlLT5oYXNQZXJzcGVjdGl2ZSgpKTsKIH0KIAog
I2RlZmluZSBWRVJCT1NFX0NPTVBPU0lUSU5HTEFZRVIgICAgMApAQCAtNzU1LDcgKzc1NSw3IEBA
IGJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpsYXllckhhczNEQ29udGVudChjb25zdCBSZW5k
ZXJMYXllciogbGF5ZXIpIGNvbnN0CiAKICAgICBpZiAoc3R5bGUgJiYgCiAgICAgICAgIChzdHls
ZS0+dHJhbnNmb3JtU3R5bGUzRCgpID09IFRyYW5zZm9ybVN0eWxlM0RQcmVzZXJ2ZTNEIHx8Ci0g
ICAgICAgICBzdHlsZS0+cGVyc3BlY3RpdmUoKSA+IDAgfHwKKyAgICAgICAgIHN0eWxlLT5oYXNQ
ZXJzcGVjdGl2ZSgpIHx8CiAgICAgICAgICBzdHlsZS0+dHJhbnNmb3JtKCkuaGFzM0RPcGVyYXRp
b24oKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNw
cAppbmRleCAxZGYxMWU5Li42ZTlkNmYyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJPYmplY3QuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAK
QEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKICNpbmNsdWRl
ICJDU1NTdHlsZVNlbGVjdG9yLmgiCisjaW5jbHVkZSAiRmxvYXRQb2ludDNELmgiCiAjaW5jbHVk
ZSAiRmxvYXRRdWFkLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiR3JhcGhp
Y3NDb250ZXh0LmgiCkBAIC0xNjM2LDI2ICsxNjM3LDcwIEBAIEludFJlY3QgUmVuZGVyT2JqZWN0
Ojp2aWV3UmVjdCgpIGNvbnN0CiAKIEZsb2F0UG9pbnQgUmVuZGVyT2JqZWN0Ojpsb2NhbFRvQWJz
b2x1dGUoRmxvYXRQb2ludCBsb2NhbFBvaW50LCBib29sIGZpeGVkLCBib29sIHVzZVRyYW5zZm9y
bXMpIGNvbnN0CiB7CisgICAgVHJhbnNmb3JtU3RhdGUgdHJhbnNmb3JtU3RhdGUobG9jYWxQb2lu
dCwgVHJhbnNmb3JtU3RhdGU6OkFwcGx5VHJhbnNmb3JtRGlyZWN0aW9uKTsKKyAgICBtYXBMb2Nh
bFRvQWJzb2x1dGVQb2ludChmaXhlZCwgdXNlVHJhbnNmb3JtcywgdHJhbnNmb3JtU3RhdGUpOwor
CisgICAgaWYgKHRyYW5zZm9ybVN0YXRlLm1fYWNjdW11bGF0aW5nVHJhbnNmb3JtKSB7CisgICAg
ICAgIC8vIERvIGEgZmluYWwgZmxhdHRlbiBpZiBuZWNlc3NhcnkKKyAgICAgICAgdHJhbnNmb3Jt
U3RhdGUuZmxhdHRlbigpOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gdHJhbnNmb3JtU3RhdGUu
bV9sYXN0UGxhbmFyUG9pbnQ7Cit9CisKK0Zsb2F0UG9pbnQgUmVuZGVyT2JqZWN0OjphYnNvbHV0
ZVRvTG9jYWwoRmxvYXRQb2ludCBjb250YWluZXJQb2ludCwgYm9vbCBmaXhlZCwgYm9vbCB1c2VU
cmFuc2Zvcm1zKSBjb25zdAoreworICAgIFRyYW5zZm9ybVN0YXRlIHRyYW5zZm9ybVN0YXRlKGNv
bnRhaW5lclBvaW50LCBUcmFuc2Zvcm1TdGF0ZTo6VW5hcHBseUludmVyc2VUcmFuc2Zvcm1EaXJl
Y3Rpb24pOworICAgIG1hcEFic29sdXRlVG9Mb2NhbFBvaW50KGZpeGVkLCB1c2VUcmFuc2Zvcm1z
LCB0cmFuc2Zvcm1TdGF0ZSk7CisgICAgCisgICAgaWYgKHRyYW5zZm9ybVN0YXRlLm1fYWNjdW11
bGF0aW5nVHJhbnNmb3JtKSB7CisgICAgICAgIC8vIERvIGEgZmluYWwgZmxhdHRlbiBpZiBuZWNl
c3NhcnkKKyAgICAgICAgdHJhbnNmb3JtU3RhdGUuZmxhdHRlbigpOworICAgIH0KKyAgICAKKyAg
ICByZXR1cm4gdHJhbnNmb3JtU3RhdGUubV9sYXN0UGxhbmFyUG9pbnQ7Cit9CisKK3ZvaWQgUmVu
ZGVyT2JqZWN0OjpUcmFuc2Zvcm1TdGF0ZTo6bW92ZShpbnQgeCwgaW50IHkpCit7CisgICAgaWYg
KG1fYWNjdW11bGF0aW5nVHJhbnNmb3JtKQorICAgICAgICBmbGF0dGVuKCk7CisKKyAgICBtX2xh
c3RQbGFuYXJQb2ludC5tb3ZlKHgsIHkpOworfQorCit2b2lkIFJlbmRlck9iamVjdDo6VHJhbnNm
b3JtU3RhdGU6OmFwcGx5VHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFu
c2Zvcm1Gcm9tQ29udGFpbmVyLCBib29sIGFjY3VtdWxhdGVUcmFuc2Zvcm0pCit7CisgICAgaWYg
KG1fZGlyZWN0aW9uID09IEFwcGx5VHJhbnNmb3JtRGlyZWN0aW9uKQorICAgICAgICBtX2FjY3Vt
dWxhdGVkVHJhbnNmb3JtLm11bHRpcGx5KHRyYW5zZm9ybUZyb21Db250YWluZXIpOyAgICAKKyAg
ICBlbHNlCisgICAgICAgIG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0ubXVsdExlZnQodHJhbnNmb3Jt
RnJvbUNvbnRhaW5lcik7ICAgIAorCisgICAgaWYgKCFhY2N1bXVsYXRlVHJhbnNmb3JtKQorICAg
ICAgICBmbGF0dGVuKCk7CisKKyAgICBtX2FjY3VtdWxhdGluZ1RyYW5zZm9ybSA9IGFjY3VtdWxh
dGVUcmFuc2Zvcm07Cit9CisKK3ZvaWQgUmVuZGVyT2JqZWN0OjptYXBMb2NhbFRvQWJzb2x1dGVQ
b2ludChib29sIGZpeGVkLCBib29sIHVzZVRyYW5zZm9ybXMsIFRyYW5zZm9ybVN0YXRlJiB0cmFu
c2Zvcm1TdGF0ZSkgY29uc3QKK3sKICAgICBSZW5kZXJPYmplY3QqIG8gPSBwYXJlbnQoKTsKICAg
ICBpZiAobykgewogICAgICAgICBpZiAoby0+aGFzT3ZlcmZsb3dDbGlwKCkpCi0gICAgICAgICAg
ICBsb2NhbFBvaW50IC09IHRvUmVuZGVyQm94KG8pLT5sYXllcigpLT5zY3JvbGxlZENvbnRlbnRP
ZmZzZXQoKTsKLSAgICAgICAgcmV0dXJuIG8tPmxvY2FsVG9BYnNvbHV0ZShsb2NhbFBvaW50LCBm
aXhlZCwgdXNlVHJhbnNmb3Jtcyk7Ci0gICAgfQorICAgICAgICAgICAgdHJhbnNmb3JtU3RhdGUu
bW92ZSgtdG9SZW5kZXJCb3gobyktPmxheWVyKCktPnNjcm9sbGVkQ29udGVudE9mZnNldCgpKTsK
IAotICAgIHJldHVybiBGbG9hdFBvaW50KCk7CisgICAgICAgIG8tPm1hcExvY2FsVG9BYnNvbHV0
ZVBvaW50KGZpeGVkLCB1c2VUcmFuc2Zvcm1zLCB0cmFuc2Zvcm1TdGF0ZSk7CisgICAgfQogfQog
Ci1GbG9hdFBvaW50IFJlbmRlck9iamVjdDo6YWJzb2x1dGVUb0xvY2FsKEZsb2F0UG9pbnQgY29u
dGFpbmVyUG9pbnQsIGJvb2wgZml4ZWQsIGJvb2wgdXNlVHJhbnNmb3JtcykgY29uc3QKK3ZvaWQg
UmVuZGVyT2JqZWN0OjptYXBBYnNvbHV0ZVRvTG9jYWxQb2ludChib29sIGZpeGVkLCBib29sIHVz
ZVRyYW5zZm9ybXMsIFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSkgY29uc3QKIHsKICAg
ICBSZW5kZXJPYmplY3QqIG8gPSBwYXJlbnQoKTsKICAgICBpZiAobykgewotICAgICAgICBGbG9h
dFBvaW50IGxvY2FsUG9pbnQgPSBvLT5hYnNvbHV0ZVRvTG9jYWwoY29udGFpbmVyUG9pbnQsIGZp
eGVkLCB1c2VUcmFuc2Zvcm1zKTsKKyAgICAgICAgby0+bWFwQWJzb2x1dGVUb0xvY2FsUG9pbnQo
Zml4ZWQsIHVzZVRyYW5zZm9ybXMsIHRyYW5zZm9ybVN0YXRlKTsKICAgICAgICAgaWYgKG8tPmhh
c092ZXJmbG93Q2xpcCgpKQotICAgICAgICAgICAgbG9jYWxQb2ludCArPSB0b1JlbmRlckJveChv
KS0+bGF5ZXIoKS0+c2Nyb2xsZWRDb250ZW50T2Zmc2V0KCk7Ci0gICAgICAgIHJldHVybiBsb2Nh
bFBvaW50OworICAgICAgICAgICAgdHJhbnNmb3JtU3RhdGUubW92ZSh0b1JlbmRlckJveChvKS0+
bGF5ZXIoKS0+c2Nyb2xsZWRDb250ZW50T2Zmc2V0KCkpOwogICAgIH0KLSAgICByZXR1cm4gRmxv
YXRQb2ludCgpOwogfQogCiBGbG9hdFF1YWQgUmVuZGVyT2JqZWN0Ojpsb2NhbFRvQ29udGFpbmVy
UXVhZChjb25zdCBGbG9hdFF1YWQmIGxvY2FsUXVhZCwgUmVuZGVyQm94TW9kZWxPYmplY3QqIHJl
cGFpbnRDb250YWluZXIsIGJvb2wgZml4ZWQpIGNvbnN0CmRpZmYgLS1naXQgYS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJPYmplY3QuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5o
CmluZGV4IDZiYTliYTQuLmZlZWI5NzUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck9iamVjdC5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCkBAIC0z
MCw2ICszMCw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJSZW5kZXJPYmpl
Y3RDaGlsZExpc3QuaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgorI2luY2x1ZGUgIlRyYW5z
Zm9ybWF0aW9uTWF0cml4LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDc2LDggKzQ3
Nyw4IEBAIHB1YmxpYzoKIAogICAgIC8vIENvbnZlcnQgdGhlIGdpdmVuIGxvY2FsIHBvaW50IHRv
IGFic29sdXRlIGNvb3JkaW5hdGVzCiAgICAgLy8gRklYTUU6IFRlbXBvcmFyeS4gSWYgdXNlVHJh
bnNmb3JtcyBpcyB0cnVlLCB0YWtlIHRyYW5zZm9ybXMgaW50byBhY2NvdW50LiBFdmVudHVhbGx5
IGxvY2FsVG9BYnNvbHV0ZSgpIHdpbGwgYWx3YXlzIGJlIHRyYW5zZm9ybS1hd2FyZS4KLSAgICB2
aXJ0dWFsIEZsb2F0UG9pbnQgbG9jYWxUb0Fic29sdXRlKEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9
IEZsb2F0UG9pbnQoKSwgYm9vbCBmaXhlZCA9IGZhbHNlLCBib29sIHVzZVRyYW5zZm9ybXMgPSBm
YWxzZSkgY29uc3Q7Ci0gICAgdmlydHVhbCBGbG9hdFBvaW50IGFic29sdXRlVG9Mb2NhbChGbG9h
dFBvaW50LCBib29sIGZpeGVkID0gZmFsc2UsIGJvb2wgdXNlVHJhbnNmb3JtcyA9IGZhbHNlKSBj
b25zdDsKKyAgICBGbG9hdFBvaW50IGxvY2FsVG9BYnNvbHV0ZShGbG9hdFBvaW50IGxvY2FsUG9p
bnQgPSBGbG9hdFBvaW50KCksIGJvb2wgZml4ZWQgPSBmYWxzZSwgYm9vbCB1c2VUcmFuc2Zvcm1z
ID0gZmFsc2UpIGNvbnN0OworICAgIEZsb2F0UG9pbnQgYWJzb2x1dGVUb0xvY2FsKEZsb2F0UG9p
bnQsIGJvb2wgZml4ZWQgPSBmYWxzZSwgYm9vbCB1c2VUcmFuc2Zvcm1zID0gZmFsc2UpIGNvbnN0
OwogCiAgICAgLy8gQ29udmVydCBhIGxvY2FsIHF1YWQgdG8gYWJzb2x1dGUgY29vcmRpbmF0ZXMs
IHRha2luZyB0cmFuc2Zvcm1zIGludG8gYWNjb3VudC4KICAgICBGbG9hdFF1YWQgbG9jYWxUb0Fi
c29sdXRlUXVhZChjb25zdCBGbG9hdFF1YWQmIHF1YWQsIGJvb2wgZml4ZWQgPSBmYWxzZSkgY29u
c3QKQEAgLTY3MCw2ICs2NzEsNDMgQEAgcHVibGljOgogICAgIEFuaW1hdGlvbkNvbnRyb2xsZXIq
IGFuaW1hdGlvbigpIGNvbnN0OwogCiAgICAgYm9vbCB2aXNpYmxlVG9IaXRUZXN0aW5nKCkgY29u
c3QgeyByZXR1cm4gc3R5bGUoKS0+dmlzaWJpbGl0eSgpID09IFZJU0lCTEUgJiYgc3R5bGUoKS0+
cG9pbnRlckV2ZW50cygpICE9IFBFX05PTkU7IH0KKworICAgIHN0cnVjdCBUcmFuc2Zvcm1TdGF0
ZSB7CisgICAgICAgIGVudW0gVHJhbnNmb3JtRGlyZWN0aW9uIHsgQXBwbHlUcmFuc2Zvcm1EaXJl
Y3Rpb24sIFVuYXBwbHlJbnZlcnNlVHJhbnNmb3JtRGlyZWN0aW9uIH07CisgICAgICAgIFRyYW5z
Zm9ybVN0YXRlKGNvbnN0IEZsb2F0UG9pbnQmIHAsIFRyYW5zZm9ybURpcmVjdGlvbiBtYXBwaW5n
RGlyZWN0aW9uKQorICAgICAgICAgICAgOiBtX2xhc3RQbGFuYXJQb2ludChwKQorICAgICAgICAg
ICAgLCBtX2FjY3VtdWxhdGluZ1RyYW5zZm9ybShmYWxzZSkKKyAgICAgICAgICAgICwgbV9kaXJl
Y3Rpb24obWFwcGluZ0RpcmVjdGlvbikKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAg
dm9pZCBtb3ZlKGNvbnN0IEludFNpemUmIHMpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1vdmUo
cy53aWR0aCgpLCBzLmhlaWdodCgpKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdm9p
ZCBtb3ZlKGludCB4LCBpbnQgeSk7CisgICAgICAgIHZvaWQgYXBwbHlUcmFuc2Zvcm0oY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybUZyb21Db250YWluZXIsIGJvb2wgYWNjdW11
bGF0ZVRyYW5zZm9ybSk7CisgICAgICAgIHZvaWQgZmxhdHRlbigpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGlmIChtX2RpcmVjdGlvbiA9PSBBcHBseVRyYW5zZm9ybURpcmVjdGlvbikKKyAgICAg
ICAgICAgICAgICBtX2xhc3RQbGFuYXJQb2ludCA9IG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0ubWFw
UG9pbnQobV9sYXN0UGxhbmFyUG9pbnQpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIG1fbGFzdFBsYW5hclBvaW50ID0gbV9hY2N1bXVsYXRlZFRyYW5zZm9ybS5pbnZlcnNlKCku
cHJvamVjdFBvaW50KG1fbGFzdFBsYW5hclBvaW50KTsKKyAgICAgICAgICAgIG1fYWNjdW11bGF0
ZWRUcmFuc2Zvcm0ubWFrZUlkZW50aXR5KCk7CisgICAgICAgICAgICBtX2FjY3VtdWxhdGluZ1Ry
YW5zZm9ybSA9IGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgRmxvYXRQb2ludCBtX2xhc3RQ
bGFuYXJQb2ludDsKKyAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbV9hY2N1bXVsYXRlZFRy
YW5zZm9ybTsKKyAgICAgICAgYm9vbCBtX2FjY3VtdWxhdGluZ1RyYW5zZm9ybTsKKyAgICAgICAg
VHJhbnNmb3JtRGlyZWN0aW9uIG1fZGlyZWN0aW9uOworICAgIH07CisgICAgCisgICAgLy8gTWFw
IHBvaW50cyB0aHJvdWdoIGVsZW1lbnRzLCBwb3RlbnRpYWxseSB2aWEgM2QgdHJhbnNmb3Jtcy4g
WW91IHNob3VsZCBuZXZlciBuZWVkIHRvIGNhbGwgdGhlc2UgZGlyZWN0bHk7IHVzZQorICAgIC8v
IGxvY2FsVG9BYnNvbHV0ZS9hYnNvbHV0ZVRvTG9jYWwgaW5zdGVhZC4KKyAgICB2aXJ0dWFsIHZv
aWQgbWFwTG9jYWxUb0Fic29sdXRlUG9pbnQoYm9vbCBmaXhlZCwgYm9vbCB1c2VUcmFuc2Zvcm1z
LCBUcmFuc2Zvcm1TdGF0ZSYpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBtYXBBYnNvbHV0ZVRv
TG9jYWxQb2ludChib29sIGZpeGVkLCBib29sIHVzZVRyYW5zZm9ybXMsIFRyYW5zZm9ybVN0YXRl
JikgY29uc3Q7CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIGFkZEZvY3VzUmluZ1JlY3RzKEdyYXBo
aWNzQ29udGV4dCosIGludCAvKnR4Ki8sIGludCAvKnR5Ki8pIHsgfTsKIApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRhYmxlQ2VsbC5jcHAKaW5kZXggMGY3NzU1Ni4uMjUxMTg4YiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAorKysgYi9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGFibGVDZWxsLmgiCiAKKyNpbmNsdWRlICJGbG9hdFBv
aW50M0QuaCIKICNpbmNsdWRlICJGbG9hdFF1YWQuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKQEAgLTIxNiwyNCArMjE3LDI1IEBAIHZvaWQg
UmVuZGVyVGFibGVDZWxsOjpjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmpl
Y3QqIHJlcGFpbnRDb250YWluCiAgICAgUmVuZGVyQmxvY2s6OmNvbXB1dGVSZWN0Rm9yUmVwYWlu
dChyZXBhaW50Q29udGFpbmVyLCByLCBmaXhlZCk7CiB9CiAKLUZsb2F0UG9pbnQgUmVuZGVyVGFi
bGVDZWxsOjpsb2NhbFRvQWJzb2x1dGUoRmxvYXRQb2ludCBsb2NhbFBvaW50LCBib29sIGZpeGVk
LCBib29sIHVzZVRyYW5zZm9ybXMpIGNvbnN0Cit2b2lkIFJlbmRlclRhYmxlQ2VsbDo6bWFwTG9j
YWxUb0Fic29sdXRlUG9pbnQoYm9vbCBmaXhlZCwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBUcmFuc2Zv
cm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUpIGNvbnN0CiB7CiAgICAgUmVuZGVyVmlldyogdiA9IHZp
ZXcoKTsKICAgICBpZiAoKCF2IHx8ICF2LT5sYXlvdXRTdGF0ZUVuYWJsZWQoKSkgJiYgcGFyZW50
KCkpIHsKICAgICAgICAgLy8gUm93cyBhcmUgaW4gdGhlIHNhbWUgY29vcmRpbmF0ZSBzcGFjZSwg
c28gZG9uJ3QgYWRkIHRoZWlyIG9mZnNldCBpbi4KLSAgICAgICAgbG9jYWxQb2ludC5tb3ZlKC1w
YXJlbnRCb3goKS0+eCgpLCAtcGFyZW50Qm94KCktPnkoKSk7CisgICAgICAgIC8vIEZJWE1FOiB0
aGlzIGlzIHdyb25nIHdpdGggdHJhbnNmb3JtcworICAgICAgICB0cmFuc2Zvcm1TdGF0ZS5tb3Zl
KC1wYXJlbnRCb3goKS0+eCgpLCAtcGFyZW50Qm94KCktPnkoKSk7CiAgICAgfQotICAgIHJldHVy
biBSZW5kZXJCbG9jazo6bG9jYWxUb0Fic29sdXRlKGxvY2FsUG9pbnQsIGZpeGVkLCB1c2VUcmFu
c2Zvcm1zKTsKKyAgICBSZW5kZXJCbG9jazo6bWFwTG9jYWxUb0Fic29sdXRlUG9pbnQoZml4ZWQs
IHVzZVRyYW5zZm9ybXMsIHRyYW5zZm9ybVN0YXRlKTsKIH0KIAotRmxvYXRQb2ludCBSZW5kZXJU
YWJsZUNlbGw6OmFic29sdXRlVG9Mb2NhbChGbG9hdFBvaW50IGNvbnRhaW5lclBvaW50LCBib29s
IGZpeGVkLCBib29sIHVzZVRyYW5zZm9ybXMpIGNvbnN0Cit2b2lkIFJlbmRlclRhYmxlQ2VsbDo6
bWFwQWJzb2x1dGVUb0xvY2FsUG9pbnQoYm9vbCBmaXhlZCwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBU
cmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUpIGNvbnN0CiB7Ci0gICAgRmxvYXRQb2ludCBs
b2NhbFBvaW50ID0gUmVuZGVyQmxvY2s6OmFic29sdXRlVG9Mb2NhbChjb250YWluZXJQb2ludCwg
Zml4ZWQsIHVzZVRyYW5zZm9ybXMpOworICAgIFJlbmRlckJsb2NrOjptYXBBYnNvbHV0ZVRvTG9j
YWxQb2ludChmaXhlZCwgdXNlVHJhbnNmb3JtcywgdHJhbnNmb3JtU3RhdGUpOwogICAgIGlmIChw
YXJlbnQoKSkgewogICAgICAgICAvLyBSb3dzIGFyZSBpbiB0aGUgc2FtZSBjb29yZGluYXRlIHNw
YWNlLCBzbyBhZGQgdGhlaXIgb2Zmc2V0IGJhY2sgaW4uCi0gICAgICAgIGxvY2FsUG9pbnQubW92
ZShwYXJlbnRCb3goKS0+eCgpLCBwYXJlbnRCb3goKS0+eSgpKTsKKyAgICAgICAgLy8gRklYTUU6
IHRoaXMgaXMgd3Jvbmcgd2l0aCB0cmFuc2Zvcm1zCisgICAgICAgIHRyYW5zZm9ybVN0YXRlLm1v
dmUocGFyZW50Qm94KCktPngoKSwgcGFyZW50Qm94KCktPnkoKSk7CiAgICAgfQotICAgIHJldHVy
biBsb2NhbFBvaW50OwogfQogCiBGbG9hdFF1YWQgUmVuZGVyVGFibGVDZWxsOjpsb2NhbFRvQ29u
dGFpbmVyUXVhZChjb25zdCBGbG9hdFF1YWQmIGxvY2FsUXVhZCwgUmVuZGVyQm94TW9kZWxPYmpl
Y3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgZml4ZWQpIGNvbnN0CmRpZmYgLS1naXQgYS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRhYmxlQ2VsbC5oCmluZGV4IGExNWM4OGUuLjU1MWQzZmUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRhYmxlQ2VsbC5oCkBAIC05Niw4ICs5Niw2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgSW50
UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCog
cmVwYWludENvbnRhaW5lcik7CiAgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVSZWN0Rm9yUmVwYWlu
dChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgSW50UmVjdCYsIGJvb2wg
Zml4ZWQgPSBmYWxzZSk7Ci0gICAgdmlydHVhbCBGbG9hdFBvaW50IGxvY2FsVG9BYnNvbHV0ZShG
bG9hdFBvaW50IGxvY2FsUG9pbnQgPSBGbG9hdFBvaW50KCksIGJvb2wgZml4ZWQgPSBmYWxzZSwg
Ym9vbCB1c2VUcmFuc2Zvcm1zID0gZmFsc2UpIGNvbnN0OwotICAgIHZpcnR1YWwgRmxvYXRQb2lu
dCBhYnNvbHV0ZVRvTG9jYWwoRmxvYXRQb2ludCBjb250YWluZXJQb2ludCwgYm9vbCBmaXhlZCA9
IGZhbHNlLCBib29sIHVzZVRyYW5zZm9ybXMgPSBmYWxzZSkgY29uc3Q7CiAKICAgICB2aXJ0dWFs
IGludCBiYXNlbGluZVBvc2l0aW9uKGJvb2wgZmlyc3RMaW5lID0gZmFsc2UsIGJvb2wgaXNSb290
TGluZUJveCA9IGZhbHNlKSBjb25zdDsKIApAQCAtMTIwLDYgKzExOCw5IEBAIHByb3RlY3RlZDoK
IAogICAgIHZpcnR1YWwgRmxvYXRRdWFkIGxvY2FsVG9Db250YWluZXJRdWFkKGNvbnN0IEZsb2F0
UXVhZCYsIFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIGZpeGVk
ID0gZmFsc2UpIGNvbnN0OwogCisgICAgdmlydHVhbCB2b2lkIG1hcExvY2FsVG9BYnNvbHV0ZVBv
aW50KGJvb2wgZml4ZWQsIGJvb2wgdXNlVHJhbnNmb3JtcywgVHJhbnNmb3JtU3RhdGUmKSBjb25z
dDsKKyAgICB2aXJ0dWFsIHZvaWQgbWFwQWJzb2x1dGVUb0xvY2FsUG9pbnQoYm9vbCBmaXhlZCwg
Ym9vbCB1c2VUcmFuc2Zvcm1zLCBUcmFuc2Zvcm1TdGF0ZSYpIGNvbnN0OworCiBwcml2YXRlOgog
ICAgIGludCBtX3JvdzsKICAgICBpbnQgbV9jb2x1bW47CmRpZmYgLS1naXQgYS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJWaWV3LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3Bw
CmluZGV4IGJlYzc4MWIuLmQ1YjU0ZjggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclZpZXcuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCkBAIC0y
Myw2ICsyMyw3IEBACiAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnQu
aCIKKyNpbmNsdWRlICJGbG9hdFBvaW50M0QuaCIKICNpbmNsdWRlICJGbG9hdFF1YWQuaCIKICNp
bmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgpAQCAtMTM0LDIwICsxMzUs
MTYgQEAgdm9pZCBSZW5kZXJWaWV3OjpsYXlvdXQoKQogICAgIHNldE5lZWRzTGF5b3V0KGZhbHNl
KTsKIH0KIAotRmxvYXRQb2ludCBSZW5kZXJWaWV3Ojpsb2NhbFRvQWJzb2x1dGUoRmxvYXRQb2lu
dCBsb2NhbFBvaW50LCBib29sIGZpeGVkLCBib29sKSBjb25zdAordm9pZCBSZW5kZXJWaWV3Ojpt
YXBMb2NhbFRvQWJzb2x1dGVQb2ludChib29sIGZpeGVkLCBib29sIC8qdXNlVHJhbnNmb3Jtcyov
LCBUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUpIGNvbnN0CiB7CiAgICAgaWYgKGZpeGVk
ICYmIG1fZnJhbWVWaWV3KQotICAgICAgICBsb2NhbFBvaW50ICs9IG1fZnJhbWVWaWV3LT5zY3Jv
bGxPZmZzZXQoKTsKLQotICAgIHJldHVybiBsb2NhbFBvaW50OworICAgICAgICB0cmFuc2Zvcm1T
dGF0ZS5tb3ZlKG1fZnJhbWVWaWV3LT5zY3JvbGxPZmZzZXQoKSk7CiB9CiAKLUZsb2F0UG9pbnQg
UmVuZGVyVmlldzo6YWJzb2x1dGVUb0xvY2FsKEZsb2F0UG9pbnQgY29udGFpbmVyUG9pbnQsIGJv
b2wgZml4ZWQsIGJvb2wpIGNvbnN0Cit2b2lkIFJlbmRlclZpZXc6Om1hcEFic29sdXRlVG9Mb2Nh
bFBvaW50KGJvb2wgZml4ZWQsIGJvb2wgLyp1c2VUcmFuc2Zvcm1zKi8sIFRyYW5zZm9ybVN0YXRl
JiB0cmFuc2Zvcm1TdGF0ZSkgY29uc3QKIHsKICAgICBpZiAoZml4ZWQgJiYgbV9mcmFtZVZpZXcp
Ci0gICAgICAgIGNvbnRhaW5lclBvaW50IC09IG1fZnJhbWVWaWV3LT5zY3JvbGxPZmZzZXQoKTsK
LQotICAgIHJldHVybiBjb250YWluZXJQb2ludDsKKyAgICAgICAgdHJhbnNmb3JtU3RhdGUubW92
ZSgtbV9mcmFtZVZpZXctPnNjcm9sbE9mZnNldCgpKTsKIH0KIAogRmxvYXRRdWFkIFJlbmRlclZp
ZXc6OmxvY2FsVG9Db250YWluZXJRdWFkKGNvbnN0IEZsb2F0UXVhZCYgbG9jYWxRdWFkLCBSZW5k
ZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBmaXhlZCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaCBiL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclZpZXcuaAppbmRleCBiMmQ0OWZmLi43NWI1NzczIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Vmlldy5oCkBAIC00OSw4ICs0OSw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2FsY1dp
ZHRoKCk7CiAgICAgdmlydHVhbCB2b2lkIGNhbGNIZWlnaHQoKTsKICAgICB2aXJ0dWFsIHZvaWQg
Y2FsY1ByZWZXaWR0aHMoKTsKLSAgICB2aXJ0dWFsIEZsb2F0UG9pbnQgbG9jYWxUb0Fic29sdXRl
KEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9IEZsb2F0UG9pbnQoKSwgYm9vbCBmaXhlZCA9IGZhbHNl
LCBib29sIHVzZVRyYW5zZm9ybXMgPSBmYWxzZSkgY29uc3Q7Ci0gICAgdmlydHVhbCBGbG9hdFBv
aW50IGFic29sdXRlVG9Mb2NhbChGbG9hdFBvaW50IGNvbnRhaW5lclBvaW50LCBib29sIGZpeGVk
ID0gZmFsc2UsIGJvb2wgdXNlVHJhbnNmb3JtcyA9IGZhbHNlKSBjb25zdDsKICAgICAKICAgICBp
bnQgZG9jSGVpZ2h0KCkgY29uc3Q7CiAgICAgaW50IGRvY1dpZHRoKCkgY29uc3Q7CkBAIC0xNjks
NiArMTY3LDkgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgRmxvYXRRdWFkIGxv
Y2FsVG9Db250YWluZXJRdWFkKGNvbnN0IEZsb2F0UXVhZCYsIFJlbmRlckJveE1vZGVsT2JqZWN0
KiByZXBhaW50Q29udGFpbmVyLCBib29sIGZpeGVkID0gZmFsc2UpIGNvbnN0OwogCisgICAgdmly
dHVhbCB2b2lkIG1hcExvY2FsVG9BYnNvbHV0ZVBvaW50KGJvb2wgZml4ZWQsIGJvb2wgdXNlVHJh
bnNmb3JtcywgVHJhbnNmb3JtU3RhdGUmKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgbWFwQWJz
b2x1dGVUb0xvY2FsUG9pbnQoYm9vbCBmaXhlZCwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBUcmFuc2Zv
cm1TdGF0ZSYpIGNvbnN0OworCiBwcml2YXRlOgogICAgIGJvb2wgc2hvdWxkUmVwYWludChjb25z
dCBJbnRSZWN0JiByKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGUuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgK
aW5kZXggZDJjZjhiMS4uZWU2OTZkYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGUuaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHls
ZS5oCkBAIC02NjksNiArNjY5LDcgQEAgcHVibGljOgogICAgIEVUcmFuc2Zvcm1TdHlsZTNEIHRy
YW5zZm9ybVN0eWxlM0QoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV90
cmFuc2Zvcm1TdHlsZTNEOyB9CiAgICAgRUJhY2tmYWNlVmlzaWJpbGl0eSBiYWNrZmFjZVZpc2li
aWxpdHkoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9iYWNrZmFjZVZp
c2liaWxpdHk7IH0KICAgICBmbG9hdCBwZXJzcGVjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIHJhcmVO
b25Jbmhlcml0ZWREYXRhLT5tX3BlcnNwZWN0aXZlOyB9CisgICAgYm9vbCBoYXNQZXJzcGVjdGl2
ZSgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3BlcnNwZWN0aXZlID4g
MDsgfQogICAgIExlbmd0aCBwZXJzcGVjdGl2ZU9yaWdpblgoKSBjb25zdCB7IHJldHVybiByYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+bV9wZXJzcGVjdGl2ZU9yaWdpblg7IH0KICAgICBMZW5ndGggcGVy
c3BlY3RpdmVPcmlnaW5ZKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1f
cGVyc3BlY3RpdmVPcmlnaW5ZOyB9CiAgICAgCg==
</data>
<flag name="review"
          id="13608"
          type_id="1"
          status="+"
          setter="hyatt"
    />
          </attachment>
      

    </bug>

</bugzilla>