<?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>42918</bug_id>
          
          <creation_ts>2010-07-23 16:38:50 -0700</creation_ts>
          <short_desc>CanvasRenderingContext2D has lots of style errors</short_desc>
          <delta_ts>2010-07-23 17:10:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</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="James Robinson">jamesr</reporter>
          <assigned_to name="James Robinson">jamesr</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>255599</commentid>
    <comment_count>0</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-07-23 16:38:50 -0700</bug_when>
    <thetext>CanvasRenderingContext2D has lots of style errors</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255601</commentid>
    <comment_count>1</comment_count>
      <attachid>62474</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-07-23 16:43:29 -0700</bug_when>
    <thetext>Created attachment 62474
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255602</commentid>
    <comment_count>2</comment_count>
      <attachid>62474</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-07-23 16:45:10 -0700</bug_when>
    <thetext>Comment on attachment 62474
Patch

alrighty.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255610</commentid>
    <comment_count>3</comment_count>
      <attachid>62474</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-07-23 17:10:12 -0700</bug_when>
    <thetext>Comment on attachment 62474
Patch

Clearing flags on attachment: 62474

Committed r64004: &lt;http://trac.webkit.org/changeset/64004&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255611</commentid>
    <comment_count>4</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-07-23 17:10:17 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62474</attachid>
            <date>2010-07-23 16:43:29 -0700</date>
            <delta_ts>2010-07-23 17:10:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-42918-20100723164327.patch</filename>
            <type>text/plain</type>
            <size>37850</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MGIxZjVlZWNkMjkzOWQ5ZDAyODNiYzA4OTk3OGQxZGE0MDc5YWU3My4uZTczNmY0NGU4YjQ5Mzg5
NzkyOGE3NWIyOWZmMDMwMTkzMjVkNmM2MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MCBAQAorMjAxMC0wNy0yMyAgSmFt
ZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCBoYXMg
bG90cyBvZiBzdHlsZSBlcnJvcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTQyOTE4CisKKyAgICAgICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgg
YW5kIC5jcHAgaGF2ZSBsb3RzIG9mIHN0eWxlIGVycm9ycy4gIEknbSBwbGFubmluZyB0byBwb3N0
IHBhdGNoZXMKKyAgICAgICAgdG8gYm90aCBvZiB0aGVzZSBmaWxlcyBzb29uLCBzbyB0byBtaW5p
bWl6ZSBtZXJnZSBjb25mbGljdHMgYW5kIGFkZGl0aW9uYWwgc3R5bGUgdmlvbGF0aW9ucworICAg
ICAgICBpdCBzZWVtcyBiZXN0IHRvIGZpeCBhbGwgb2YgdGhlc2UgZXJyb3JzIGluIGJ1bGsgYmVm
b3JlIHBvc3RpbmcgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcy4gIEluCisgICAgICAgIHBhcnRpY3Vs
YXIgdGhlIGhlYWRlciBmaWxlIGlzIGluY29ycmVjdGx5IGluZGVudGVkIHNvIGFueSBjb3JyZWN0
bHkgZm9ybWF0dGVkIGFkZGl0aW9uIHdpbGwKKyAgICAgICAgYmUgb3V0IG9mIHBsYWNlLgorCisg
ICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Q2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0
RmlsbFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6
dHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6
c2V0VHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RDo6YXJjVG8pOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjph
cmMpOgorICAgICAgICAoV2ViQ29yZTo6dmFsaWRhdGVSZWN0Rm9yQ2FudmFzKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c3Ryb2tlUmVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJbWFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNyZWF0ZVJhZGlhbEdyYWRpZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y3JlYXRlUGF0
dGVybik6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OndpbGxE
cmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y3JlYXRl
SW1hZ2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6
cHV0SW1hZ2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RDo6c2V0Rm9udCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6
OmRyYXdUZXh0SW50ZXJuYWwpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
OjppczJkKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Z2V0
TGluZUNhcCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6Omdl
dExpbmVKb2luKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6
c3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjopOgor
CiAyMDEwLTA2LTI0ICBEaW1pdHJpIEdsYXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgS2VudCBUYW11cmEuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgYi9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKaW5kZXggYWNkMTVkMjU0M2JkYTA3NTU4
MjkyOGQ5NTM3ZGY0ODdmNjYyZDZkMy4uNmMzZDM3MmU2NmNjYjdlM2Y2OTEyNTk2YjFmMGVhNjI5
MGJmOGEzZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJELmNwcApAQCAtMzIsMTQgKzMyLDE0IEBACiAjaW5jbHVkZSAiQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJELmgiCiAKICNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKKyNpbmNsdWRlICJD
U1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5oIgogI2luY2x1ZGUgIkNTU1BhcnNlci5oIgorI2lu
Y2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKKyNpbmNsdWRlICJDU1NTdHlsZVNlbGVjdG9yLmgi
CiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRlICJDYW52YXNHcmFkaWVudC5oIgog
I2luY2x1ZGUgIkNhbnZhc1BhdHRlcm4uaCIKICNpbmNsdWRlICJDYW52YXNTdHlsZS5oIgotI2lu
Y2x1ZGUgIkNTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSAiQ1NTUHJvcGVy
dHlOYW1lcy5oIgotI2luY2x1ZGUgIkNTU1N0eWxlU2VsZWN0b3IuaCIKICNpbmNsdWRlICJFeGNl
cHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW5jbHVkZSAiR3Jh
cGhpY3NDb250ZXh0LmgiCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSAiSFRNTEltYWdlRWxl
bWVudC5oIgogI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFt
ZXMuaCIKKyNpbmNsdWRlICJIVE1MVmlkZW9FbGVtZW50LmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZm
ZXIuaCIKICNpbmNsdWRlICJJbWFnZURhdGEuaCIKICNpbmNsdWRlICJLVVJMLmgiCkBAIC01Niw4
ICs1Nyw5IEBACiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTdHJva2VTdHlsZUFw
cGxpZXIuaCIKICNpbmNsdWRlICJUZXh0TWV0cmljcy5oIgotI2luY2x1ZGUgIkhUTUxWaWRlb0Vs
ZW1lbnQuaCIKKwogI2luY2x1ZGUgPHN0ZGlvLmg+CisKICNpbmNsdWRlIDx3dGYvQnl0ZUFycmF5
Lmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+
CkBAIC03OCw3ICs4MCw3IEBAIHB1YmxpYzoKICAgICAgICAgOiBtX2NhbnZhc0NvbnRleHQoY2Fu
dmFzQ29udGV4dCkKICAgICB7CiAgICAgfQotICAgIAorCiAgICAgdmlydHVhbCB2b2lkIHN0cm9r
ZVN0eWxlKEdyYXBoaWNzQ29udGV4dCogYykKICAgICB7CiAgICAgICAgIGMtPnNldFN0cm9rZVRo
aWNrbmVzcyhtX2NhbnZhc0NvbnRleHQtPmxpbmVXaWR0aCgpKTsKQEAgLTEwMCw3ICsxMDIsNyBA
QCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRChIVE1M
Q2FudmFzRWxlbWVudCogY2FudmFzLCBibwogI2VuZGlmCiB7CiAjaWYgIUVOQUJMRShEQVNIQk9B
UkRfU1VQUE9SVCkKLSAgIEFTU0VSVF9VTlVTRUQodXNlc0Rhc2hib2FyZENvbXBhdGliaWxpdHlN
b2RlLCAhdXNlc0Rhc2hib2FyZENvbXBhdGliaWxpdHlNb2RlKTsKKyAgICBBU1NFUlRfVU5VU0VE
KHVzZXNEYXNoYm9hcmRDb21wYXRpYmlsaXR5TW9kZSwgIXVzZXNEYXNoYm9hcmRDb21wYXRpYmls
aXR5TW9kZSk7CiAjZW5kaWYKIAogICAgIC8vIE1ha2Ugc3VyZSB0aGF0IGV2ZW4gaWYgdGhlIGRy
YXdpbmdDb250ZXh0KCkgaGFzIGEgZGlmZmVyZW50IGRlZmF1bHQKQEAgLTIwMiw3ICsyMDQsNyBA
QCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0RmlsbFN0eWxlKFBhc3NSZWZQdHI8
Q2FudmFzU3R5bGU+IHN0eWxlKQogCiAgICAgaWYgKHN0YXRlKCkubV9maWxsU3R5bGUgJiYgc3Rh
dGUoKS5tX2ZpbGxTdHlsZS0+aXNFcXVpdmFsZW50Q29sb3IoKnN0eWxlKSkKICAgICAgICAgcmV0
dXJuOwotIAorCiAgICAgaWYgKGNhbnZhcygpLT5vcmlnaW5DbGVhbigpKSB7CiAgICAgICAgIGlm
IChDYW52YXNQYXR0ZXJuKiBwYXR0ZXJuID0gc3R5bGUtPmNhbnZhc1BhdHRlcm4oKSkgewogICAg
ICAgICAgICAgaWYgKCFwYXR0ZXJuLT5vcmlnaW5DbGVhbigpKQpAQCAtNDQ2LDggKzQ0OCw3IEBA
IHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjp0cmFuc2Zvcm0oZmxvYXQgbTExLCBmbG9h
dCBtMTIsIGZsb2F0IG0yMSwgZmxvYXQKICAgICBpZiAoIXN0YXRlKCkubV9pbnZlcnRpYmxlQ1RN
KQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIWlzZmluaXRlKG0xMSkgfCAhaXNmaW5pdGUo
bTIxKSB8ICFpc2Zpbml0ZShkeCkgfCAKLSAgICAgICAgIWlzZmluaXRlKG0xMikgfCAhaXNmaW5p
dGUobTIyKSB8ICFpc2Zpbml0ZShkeSkpCisgICAgaWYgKCFpc2Zpbml0ZShtMTEpIHwgIWlzZmlu
aXRlKG0yMSkgfCAhaXNmaW5pdGUoZHgpIHwgIWlzZmluaXRlKG0xMikgfCAhaXNmaW5pdGUobTIy
KSB8ICFpc2Zpbml0ZShkeSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEFmZmluZVRyYW5zZm9y
bSB0cmFuc2Zvcm0obTExLCBtMTIsIG0yMSwgbTIyLCBkeCwgZHkpOwpAQCAtNDY3LDkgKzQ2OCw4
IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRUcmFuc2Zvcm0oZmxvYXQgbTEx
LCBmbG9hdCBtMTIsIGZsb2F0IG0yMSwgZmxvCiAgICAgR3JhcGhpY3NDb250ZXh0KiBjID0gZHJh
d2luZ0NvbnRleHQoKTsKICAgICBpZiAoIWMpCiAgICAgICAgIHJldHVybjsKLSAgICAKLSAgICBp
ZiAoIWlzZmluaXRlKG0xMSkgfCAhaXNmaW5pdGUobTIxKSB8ICFpc2Zpbml0ZShkeCkgfCAKLSAg
ICAgICAgIWlzZmluaXRlKG0xMikgfCAhaXNmaW5pdGUobTIyKSB8ICFpc2Zpbml0ZShkeSkpCisK
KyAgICBpZiAoIWlzZmluaXRlKG0xMSkgfCAhaXNmaW5pdGUobTIxKSB8ICFpc2Zpbml0ZShkeCkg
fCAhaXNmaW5pdGUobTEyKSB8ICFpc2Zpbml0ZShtMjIpIHwgIWlzZmluaXRlKGR5KSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgQWZmaW5lVHJhbnNmb3JtIGN0bSA9IHN0YXRlKCkubV90cmFuc2Zv
cm07CkBAIC02MjEsMTUgKzYyMSwxNSBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6
YXJjVG8oZmxvYXQgeDEsIGZsb2F0IHkxLCBmbG9hdCB4MiwgZmxvYXQgeTIsIGZsbwogICAgIGVj
ID0gMDsKICAgICBpZiAoIWlzZmluaXRlKHgxKSB8ICFpc2Zpbml0ZSh5MSkgfCAhaXNmaW5pdGUo
eDIpIHwgIWlzZmluaXRlKHkyKSB8ICFpc2Zpbml0ZShyKSkKICAgICAgICAgcmV0dXJuOwotICAg
IAorCiAgICAgaWYgKHIgPCAwKSB7CiAgICAgICAgIGVjID0gSU5ERVhfU0laRV9FUlI7CiAgICAg
ICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKICAgICBpZiAoIXN0YXRlKCkubV9pbnZlcnRpYmxl
Q1RNKQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICBGbG9hdFBvaW50IHAxID0gRmxvYXRQ
b2ludCh4MSwgeTEpOwogICAgIEZsb2F0UG9pbnQgcDIgPSBGbG9hdFBvaW50KHgyLCB5Mik7CiAK
QEAgLTY0Niw3ICs2NDYsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6YXJjKGZs
b2F0IHgsIGZsb2F0IHksIGZsb2F0IHIsIGZsb2F0IHNhLCBmbG9hdCBlYQogICAgIGVjID0gMDsK
ICAgICBpZiAoIWlzZmluaXRlKHgpIHwgIWlzZmluaXRlKHkpIHwgIWlzZmluaXRlKHIpIHwgIWlz
ZmluaXRlKHNhKSB8ICFpc2Zpbml0ZShlYSkpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAg
IGlmIChyIDwgMCkgewogICAgICAgICBlYyA9IElOREVYX1NJWkVfRVJSOwogICAgICAgICByZXR1
cm47CkBAIC02NTksNyArNjU5LDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmFy
YyhmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCByLCBmbG9hdCBzYSwgZmxvYXQgZWEKICAgICAgICAg
cmV0dXJuOwogICAgIG1fcGF0aC5hZGRBcmMoRmxvYXRQb2ludCh4LCB5KSwgciwgc2EsIGVhLCBh
bnRpY2xvY2t3aXNlKTsKIH0KLSAgICAKKwogc3RhdGljIGJvb2wgdmFsaWRhdGVSZWN0Rm9yQ2Fu
dmFzKGZsb2F0JiB4LCBmbG9hdCYgeSwgZmxvYXQmIHdpZHRoLCBmbG9hdCYgaGVpZ2h0KQogewog
ICAgIGlmICghaXNmaW5pdGUoeCkgfCAhaXNmaW5pdGUoeSkgfCAhaXNmaW5pdGUod2lkdGgpIHwg
IWlzZmluaXRlKGhlaWdodCkpCkBAIC02NzIsMTIgKzY3MiwxMiBAQCBzdGF0aWMgYm9vbCB2YWxp
ZGF0ZVJlY3RGb3JDYW52YXMoZmxvYXQmIHgsIGZsb2F0JiB5LCBmbG9hdCYgd2lkdGgsIGZsb2F0
JiBoZWlnaAogICAgICAgICB3aWR0aCA9IC13aWR0aDsKICAgICAgICAgeCAtPSB3aWR0aDsKICAg
ICB9Ci0gICAgCisKICAgICBpZiAoaGVpZ2h0IDwgMCkgewogICAgICAgICBoZWlnaHQgPSAtaGVp
Z2h0OwogICAgICAgICB5IC09IGhlaWdodDsKICAgICB9Ci0gICAgCisKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIApAQCAtODM1LDcgKzgzNSw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
OjpzdHJva2VSZWN0KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHdpZHRoLCBmbG9hdCBoCiB7CiAg
ICAgaWYgKCF2YWxpZGF0ZVJlY3RGb3JDYW52YXMoeCwgeSwgd2lkdGgsIGhlaWdodCkpCiAgICAg
ICAgIHJldHVybjsKLSAgICAKKyAKICAgICBpZiAoIShsaW5lV2lkdGggPj0gMCkpCiAgICAgICAg
IHJldHVybjsKIApAQCAtMTA4Miw3ICsxMDgyLDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQ6OmRyYXdJbWFnZShIVE1MSW1hZ2VFbGVtZW50KiBpbWFnZSwgY29uc3QgRmxvYXRSZWMK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgRmxvYXRSZWN0IGltYWdlUmVjdCA9IEZsb2F0UmVjdChG
bG9hdFBvaW50KCksIHNpemUoaW1hZ2UpKTsKLSAgICBpZiAoIWltYWdlUmVjdC5jb250YWlucyhu
b3JtYWxpemVSZWN0KHNyY1JlY3QpKSB8fCBzcmNSZWN0LndpZHRoKCkgPT0gMCB8fCBzcmNSZWN0
LmhlaWdodCgpID09IDApIHsKKyAgICBpZiAoIWltYWdlUmVjdC5jb250YWlucyhub3JtYWxpemVS
ZWN0KHNyY1JlY3QpKSB8fCAhc3JjUmVjdC53aWR0aCgpIHx8ICFzcmNSZWN0LmhlaWdodCgpKSB7
CiAgICAgICAgIGVjID0gSU5ERVhfU0laRV9FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBA
IC0xMTUzLDcgKzExNTMsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd0lt
YWdlKEhUTUxDYW52YXNFbGVtZW50KiBzb3VyY2VDYW52YXMsIGNvbnN0CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBpZiAoIXNyY0NhbnZhc1JlY3QuY29udGFpbnMobm9ybWFsaXplUmVj
dChzcmNSZWN0KSkgfHwgc3JjUmVjdC53aWR0aCgpID09IDAgfHwgc3JjUmVjdC5oZWlnaHQoKSA9
PSAwKSB7CisgICAgaWYgKCFzcmNDYW52YXNSZWN0LmNvbnRhaW5zKG5vcm1hbGl6ZVJlY3Qoc3Jj
UmVjdCkpIHx8ICFzcmNSZWN0LndpZHRoKCkgfHwgIXNyY1JlY3QuaGVpZ2h0KCkpIHsKICAgICAg
ICAgZWMgPSBJTkRFWF9TSVpFX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTExNjgs
MTAgKzExNjgsMTAgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJbWFnZShI
VE1MQ2FudmFzRWxlbWVudCogc291cmNlQ2FudmFzLCBjb25zdAogICAgICAgICByZXR1cm47CiAg
ICAgaWYgKCFzdGF0ZSgpLm1faW52ZXJ0aWJsZUNUTSkKICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAKKyAKICAgICBGbG9hdFJlY3Qgc291cmNlUmVjdCA9IGMtPnJvdW5kVG9EZXZpY2VQaXhlbHMo
c3JjUmVjdCk7CiAgICAgRmxvYXRSZWN0IGRlc3RSZWN0ID0gYy0+cm91bmRUb0RldmljZVBpeGVs
cyhkc3RSZWN0KTsKLSAgICAgICAgCisKICAgICAvLyBGSVhNRTogRG8gdGhpcyB0aHJvdWdoIHBs
YXRmb3JtLWluZGVwZW5kZW50IEdyYXBoaWNzQ29udGV4dCBBUEkuCiAgICAgSW1hZ2VCdWZmZXIq
IGJ1ZmZlciA9IHNvdXJjZUNhbnZhcy0+YnVmZmVyKCk7CiAgICAgaWYgKCFidWZmZXIpCkBAIC0x
MjIzLDIxICsxMjIzLDIxIEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3SW1h
Z2UoSFRNTFZpZGVvRWxlbWVudCogdmlkZW8sIGNvbnN0IEZsb2F0UmVjCiAgICAgICAgIGVjID0g
VFlQRV9NSVNNQVRDSF9FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKICAgICBl
YyA9IDA7CiAKICAgICBpZiAodmlkZW8tPnJlYWR5U3RhdGUoKSA9PSBIVE1MTWVkaWFFbGVtZW50
OjpIQVZFX05PVEhJTkcgfHwgdmlkZW8tPnJlYWR5U3RhdGUoKSA9PSBIVE1MTWVkaWFFbGVtZW50
OjpIQVZFX01FVEFEQVRBKQogICAgICAgICByZXR1cm47CiAKICAgICBGbG9hdFJlY3QgdmlkZW9S
ZWN0ID0gRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgc2l6ZSh2aWRlbykpOwotICAgIGlmICghdmlk
ZW9SZWN0LmNvbnRhaW5zKG5vcm1hbGl6ZVJlY3Qoc3JjUmVjdCkpIHx8IHNyY1JlY3Qud2lkdGgo
KSA9PSAwIHx8IHNyY1JlY3QuaGVpZ2h0KCkgPT0gMCkgeworICAgIGlmICghdmlkZW9SZWN0LmNv
bnRhaW5zKG5vcm1hbGl6ZVJlY3Qoc3JjUmVjdCkpIHx8ICFzcmNSZWN0LndpZHRoKCkgfHwgIXNy
Y1JlY3QuaGVpZ2h0KCkpIHsKICAgICAgICAgZWMgPSBJTkRFWF9TSVpFX0VSUjsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KLSAgICAKKwogICAgIGlmICghZHN0UmVjdC53aWR0aCgpIHx8ICFkc3RS
ZWN0LmhlaWdodCgpKQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICBHcmFwaGljc0NvbnRl
eHQqIGMgPSBkcmF3aW5nQ29udGV4dCgpOwogICAgIGlmICghYykKICAgICAgICAgcmV0dXJuOwpA
QCAtMTI1Nyw3ICsxMjU3LDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJ
bWFnZShIVE1MVmlkZW9FbGVtZW50KiB2aWRlbywgY29uc3QgRmxvYXRSZWMKICAgICBjLT5zYXZl
KCk7CiAgICAgYy0+Y2xpcChkZXN0UmVjdCk7CiAgICAgYy0+dHJhbnNsYXRlKGRlc3RSZWN0Lngo
KSwgZGVzdFJlY3QueSgpKTsKLSAgICBjLT5zY2FsZShGbG9hdFNpemUoZGVzdFJlY3Qud2lkdGgo
KS9zb3VyY2VSZWN0LndpZHRoKCksIGRlc3RSZWN0LmhlaWdodCgpL3NvdXJjZVJlY3QuaGVpZ2h0
KCkpKTsKKyAgICBjLT5zY2FsZShGbG9hdFNpemUoZGVzdFJlY3Qud2lkdGgoKSAvIHNvdXJjZVJl
Y3Qud2lkdGgoKSwgZGVzdFJlY3QuaGVpZ2h0KCkgLyBzb3VyY2VSZWN0LmhlaWdodCgpKSk7CiAg
ICAgYy0+dHJhbnNsYXRlKC1zb3VyY2VSZWN0LngoKSwgLXNvdXJjZVJlY3QueSgpKTsKICAgICB2
aWRlby0+cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoYywgSW50UmVjdChJbnRQb2ludCgpLCBz
aXplKHZpZGVvKSkpOwogICAgIGMtPnJlc3RvcmUoKTsKQEAgLTEzMzIsOCArMTMzMiw3IEBAIFBh
c3NSZWZQdHI8Q2FudmFzR3JhZGllbnQ+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y3JlYXRl
TGluZWFyR3JhZGllbnQoZmxvYXQKIAogUGFzc1JlZlB0cjxDYW52YXNHcmFkaWVudD4gQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEOjpjcmVhdGVSYWRpYWxHcmFkaWVudChmbG9hdCB4MCwgZmxvYXQg
eTAsIGZsb2F0IHIwLCBmbG9hdCB4MSwgZmxvYXQgeTEsIGZsb2F0IHIxLCBFeGNlcHRpb25Db2Rl
JiBlYykKIHsKLSAgICBpZiAoIWlzZmluaXRlKHgwKSB8fCAhaXNmaW5pdGUoeTApIHx8ICFpc2Zp
bml0ZShyMCkgfHwgCi0gICAgICAgICFpc2Zpbml0ZSh4MSkgfHwgIWlzZmluaXRlKHkxKSB8fCAh
aXNmaW5pdGUocjEpKSB7CisgICAgaWYgKCFpc2Zpbml0ZSh4MCkgfHwgIWlzZmluaXRlKHkwKSB8
fCAhaXNmaW5pdGUocjApIHx8ICFpc2Zpbml0ZSh4MSkgfHwgIWlzZmluaXRlKHkxKSB8fCAhaXNm
aW5pdGUocjEpKSB7CiAgICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CiAgICAgICAgIHJl
dHVybiAwOwogICAgIH0KQEAgLTEzNzcsNyArMTM3Niw3IEBAIFBhc3NSZWZQdHI8Q2FudmFzUGF0
dGVybj4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjcmVhdGVQYXR0ZXJuKEhUTUxDYW52YXNF
bGVtCiAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CiAgICAgICAgIHJldHVybiAwOwog
ICAgIH0KLSAgICAKKwogICAgIGJvb2wgcmVwZWF0WCwgcmVwZWF0WTsKICAgICBlYyA9IDA7CiAg
ICAgQ2FudmFzUGF0dGVybjo6cGFyc2VSZXBldGl0aW9uVHlwZShyZXBldGl0aW9uVHlwZSwgcmVw
ZWF0WCwgcmVwZWF0WSwgZWMpOwpAQCAtMTM5OSw3ICsxMzk4LDcgQEAgdm9pZCBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OndpbGxEcmF3KGNvbnN0IEZsb2F0UmVjdCYgciwgdW5zaWduZWQgb3B0
aW9ucykKICAgICAgICAgQWZmaW5lVHJhbnNmb3JtIGN0bSA9IHN0YXRlKCkubV90cmFuc2Zvcm07
CiAgICAgICAgIGRpcnR5UmVjdCA9IGN0bS5tYXBSZWN0KHIpOwogICAgIH0KLSAgICAKKwogICAg
IGlmIChvcHRpb25zICYgQ2FudmFzV2lsbERyYXdBcHBseVNoYWRvdyAmJiBhbHBoYUNoYW5uZWwo
c3RhdGUoKS5tX3NoYWRvd0NvbG9yKSkgewogICAgICAgICAvLyBUaGUgc2hhZG93IGdldHMgYXBw
bGllZCBhZnRlciB0cmFuc2Zvcm1hdGlvbgogICAgICAgICBGbG9hdFJlY3Qgc2hhZG93UmVjdChk
aXJ0eVJlY3QpOwpAQCAtMTQwNywxMyArMTQwNiwxMyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRDo6d2lsbERyYXcoY29uc3QgRmxvYXRSZWN0JiByLCB1bnNpZ25lZCBvcHRpb25zKQog
ICAgICAgICBzaGFkb3dSZWN0LmluZmxhdGUoc3RhdGUoKS5tX3NoYWRvd0JsdXIpOwogICAgICAg
ICBkaXJ0eVJlY3QudW5pdGUoc2hhZG93UmVjdCk7CiAgICAgfQotICAgIAorCiAgICAgaWYgKG9w
dGlvbnMgJiBDYW52YXNXaWxsRHJhd0FwcGx5Q2xpcCkgewogICAgICAgICAvLyBGSVhNRTogYXBw
bHkgdGhlIGN1cnJlbnQgY2xpcCB0byB0aGUgcmVjdGFuZ2xlLiBVbmZvcnR1bmF0ZWx5IHdlIGNh
bid0IGdldCB0aGUgY2xpcAogICAgICAgICAvLyBiYWNrIG91dCBvZiB0aGUgR3JhcGhpY3NDb250
ZXh0LCBzbyB0byB0YWtlIGNsaXAgaW50byBhY2NvdW50IGZvciBpbmNyZW1lbnRhbCBwYWludGlu
ZywKICAgICAgICAgLy8gd2UnZCBoYXZlIHRvIGtlZXAgdGhlIGNsaXAgcGF0aCBhcm91bmQuCiAg
ICAgfQotICAgIAorCiAgICAgY2FudmFzKCktPndpbGxEcmF3KGRpcnR5UmVjdCk7CiB9CiAKQEAg
LTE0NTgsNyArMTQ1Nyw3IEBAIFBhc3NSZWZQdHI8SW1hZ2VEYXRhPiBDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQ6OmNyZWF0ZUltYWdlRGF0YShmbG9hdCBzdywgZmxvYXQKICAgICAgICAgc2NhbGVk
U2l6ZS5zZXRXaWR0aCgxKTsKICAgICBpZiAoc2NhbGVkU2l6ZS5oZWlnaHQoKSA8IDEpCiAgICAg
ICAgIHNjYWxlZFNpemUuc2V0SGVpZ2h0KDEpOwotICAgIAorCiAgICAgcmV0dXJuIGNyZWF0ZUVt
cHR5SW1hZ2VEYXRhKHNjYWxlZFNpemUpOwogfQogCkBAIC0xNDk4LDE1ICsxNDk3LDE0IEBAIHZv
aWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpwdXRJbWFnZURhdGEoSW1hZ2VEYXRhKiBkYXRh
LCBmbG9hdCBkeCwgZmxvYXQgZHksCiAgICAgcHV0SW1hZ2VEYXRhKGRhdGEsIGR4LCBkeSwgMCwg
MCwgZGF0YS0+d2lkdGgoKSwgZGF0YS0+aGVpZ2h0KCksIGVjKTsKIH0KIAotdm9pZCBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OnB1dEltYWdlRGF0YShJbWFnZURhdGEqIGRhdGEsIGZsb2F0IGR4
LCBmbG9hdCBkeSwgZmxvYXQgZGlydHlYLCBmbG9hdCBkaXJ0eVksIAordm9pZCBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OnB1dEltYWdlRGF0YShJbWFnZURhdGEqIGRhdGEsIGZsb2F0IGR4LCBm
bG9hdCBkeSwgZmxvYXQgZGlydHlYLCBmbG9hdCBkaXJ0eVksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IGRpcnR5V2lkdGgsIGZsb2F0IGRpcnR5SGVp
Z2h0LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAoIWRhdGEpIHsKICAgICAgICAgZWMg
PSBUWVBFX01JU01BVENIX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAoIWlz
ZmluaXRlKGR4KSB8fCAhaXNmaW5pdGUoZHkpIHx8ICFpc2Zpbml0ZShkaXJ0eVgpIHx8IAotICAg
ICAgICAhaXNmaW5pdGUoZGlydHlZKSB8fCAhaXNmaW5pdGUoZGlydHlXaWR0aCkgfHwgIWlzZmlu
aXRlKGRpcnR5SGVpZ2h0KSkgeworICAgIGlmICghaXNmaW5pdGUoZHgpIHx8ICFpc2Zpbml0ZShk
eSkgfHwgIWlzZmluaXRlKGRpcnR5WCkgfHwgIWlzZmluaXRlKGRpcnR5WSkgfHwgIWlzZmluaXRl
KGRpcnR5V2lkdGgpIHx8ICFpc2Zpbml0ZShkaXJ0eUhlaWdodCkpIHsKICAgICAgICAgZWMgPSBO
T1RfU1VQUE9SVEVEX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE1MzMsMTAgKzE1
MzEsMTAgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnB1dEltYWdlRGF0YShJbWFn
ZURhdGEqIGRhdGEsIGZsb2F0IGR4LCBmbG9hdCBkeSwKICAgICBzb3VyY2VSZWN0LmludGVyc2Vj
dChJbnRSZWN0KEludFBvaW50KCksIGJ1ZmZlci0+c2l6ZSgpKSk7CiAgICAgaWYgKHNvdXJjZVJl
Y3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47Ci0gICAgd2lsbERyYXcoc291cmNlUmVjdCwg
MCk7ICAvLyBpZ25vcmUgdHJhbnNmb3JtLCBzaGFkb3cgYW5kIGNsaXAKKyAgICB3aWxsRHJhdyhz
b3VyY2VSZWN0LCAwKTsgLy8gaWdub3JlIHRyYW5zZm9ybSwgc2hhZG93IGFuZCBjbGlwCiAgICAg
c291cmNlUmVjdC5tb3ZlKC1kZXN0T2Zmc2V0KTsKICAgICBJbnRQb2ludCBkZXN0UG9pbnQoZGVz
dE9mZnNldC53aWR0aCgpLCBkZXN0T2Zmc2V0LmhlaWdodCgpKTsKLSAgICAKKwogICAgIGJ1ZmZl
ci0+cHV0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKGRhdGEsIHNvdXJjZVJlY3QsIGRlc3RQb2ludCk7
CiB9CiAKQEAgLTE1NDksMTYgKzE1NDcsMTYgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQ6OnNldEZvbnQoY29uc3QgU3RyaW5nJiBuZXdGb250KQogewogICAgIFJlZlB0cjxDU1NNdXRh
YmxlU3R5bGVEZWNsYXJhdGlvbj4gdGVtcERlY2wgPSBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlv
bjo6Y3JlYXRlKCk7CiAgICAgQ1NTUGFyc2VyIHBhcnNlcighbV91c2VzQ1NTQ29tcGF0aWJpbGl0
eVBhcnNlTW9kZSk7Ci0gICAgICAgIAorCiAgICAgU3RyaW5nIGRlY2xhcmF0aW9uVGV4dCgiZm9u
dDogIik7CiAgICAgZGVjbGFyYXRpb25UZXh0ICs9IG5ld0ZvbnQ7CiAgICAgcGFyc2VyLnBhcnNl
RGVjbGFyYXRpb24odGVtcERlY2wuZ2V0KCksIGRlY2xhcmF0aW9uVGV4dCk7CiAgICAgaWYgKCF0
ZW1wRGVjbC0+bGVuZ3RoKCkpCiAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIAorCiAgICAg
Ly8gVGhlIHBhcnNlIHN1Y2NlZWRlZC4KICAgICBzdGF0ZSgpLm1fdW5wYXJzZWRGb250ID0gbmV3
Rm9udDsKLSAgICAKKwogICAgIC8vIE1hcCB0aGUgPGNhbnZhcz4gZm9udCBpbnRvIHRoZSB0ZXh0
IHN0eWxlLiBJZiB0aGUgZm9udCB1c2VzIGtleXdvcmRzIGxpa2UgbGFyZ2VyL3NtYWxsZXIsIHRo
ZXNlIHdpbGwgd29yawogICAgIC8vIHJlbGF0aXZlIHRvIHRoZSBjYW52YXMuCiAgICAgUmVmUHRy
PFJlbmRlclN0eWxlPiBuZXdTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGUoKTsKQEAgLTE1Njgs
NyArMTU2Niw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRGb250KGNvbnN0
IFN0cmluZyYgbmV3Rm9udCkKICAgICAvLyBOb3cgbWFwIHRoZSBmb250IHByb3BlcnR5IGludG8g
dGhlIHN0eWxlLgogICAgIENTU1N0eWxlU2VsZWN0b3IqIHN0eWxlU2VsZWN0b3IgPSBjYW52YXMo
KS0+c3R5bGVTZWxlY3RvcigpOwogICAgIHN0eWxlU2VsZWN0b3ItPmFwcGx5UHJvcGVydHlUb1N0
eWxlKENTU1Byb3BlcnR5Rm9udCwgdGVtcERlY2wtPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJv
cGVydHlGb250KS5nZXQoKSwgbmV3U3R5bGUuZ2V0KCkpOwotICAgIAorCiAgICAgc3RhdGUoKS5t
X2ZvbnQgPSBuZXdTdHlsZS0+Zm9udCgpOwogICAgIHN0YXRlKCkubV9mb250LnVwZGF0ZShzdHls
ZVNlbGVjdG9yLT5mb250U2VsZWN0b3IoKSk7CiAgICAgc3RhdGUoKS5tX3JlYWxpemVkRm9udCA9
IHRydWU7CkBAIC0xNTk1LDcgKzE1OTMsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RDo6c2V0VGV4dEFsaWduKGNvbnN0IFN0cmluZyYgcykKICAgICAgICAgcmV0dXJuOwogICAgIHN0
YXRlKCkubV90ZXh0QWxpZ24gPSBhbGlnbjsKIH0KLSAgICAgICAgCisKIFN0cmluZyBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OnRleHRCYXNlbGluZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHRl
eHRCYXNlbGluZU5hbWUoc3RhdGUoKS5tX3RleHRCYXNlbGluZSk7CkBAIC0xNjQzLDcgKzE2NDEs
NyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJbnRlcm5hbChjb25z
dCBTdHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsbwogICAgICAgICByZXR1cm47CiAgICAgaWYgKCFz
dGF0ZSgpLm1faW52ZXJ0aWJsZUNUTSkKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgY29u
c3QgRm9udCYgZm9udCA9IGFjY2Vzc0ZvbnQoKTsKIAogICAgIC8vIEZJWE1FOiBIYW5kbGUgbWF4
V2lkdGguCkBAIC0xNjYwLDIzICsxNjU4LDIzIEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEOjpkcmF3VGV4dEludGVybmFsKGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvCiAg
ICAgLy8gRHJhdyB0aGUgaXRlbSB0ZXh0IGF0IHRoZSBjb3JyZWN0IHBvaW50LgogICAgIEZsb2F0
UG9pbnQgbG9jYXRpb24oeCwgeSk7CiAgICAgc3dpdGNoIChzdGF0ZSgpLm1fdGV4dEJhc2VsaW5l
KSB7Ci0gICAgICAgIGNhc2UgVG9wVGV4dEJhc2VsaW5lOgotICAgICAgICBjYXNlIEhhbmdpbmdU
ZXh0QmFzZWxpbmU6Ci0gICAgICAgICAgICBsb2NhdGlvbi5zZXRZKHkgKyBmb250LmFzY2VudCgp
KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEJvdHRvbVRleHRCYXNlbGluZToK
LSAgICAgICAgY2FzZSBJZGVvZ3JhcGhpY1RleHRCYXNlbGluZToKLSAgICAgICAgICAgIGxvY2F0
aW9uLnNldFkoeSAtIGZvbnQuZGVzY2VudCgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIE1pZGRsZVRleHRCYXNlbGluZToKLSAgICAgICAgICAgIGxvY2F0aW9uLnNldFkoeSAt
IGZvbnQuZGVzY2VudCgpICsgZm9udC5oZWlnaHQoKSAvIDIpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgQWxwaGFiZXRpY1RleHRCYXNlbGluZToKLSAgICAgICAgZGVmYXVsdDoK
LSAgICAgICAgICAgICAvLyBEbyBub3RoaW5nLgotICAgICAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBUb3BUZXh0QmFzZWxpbmU6CisgICAgY2FzZSBIYW5naW5nVGV4dEJhc2VsaW5lOgorICAgICAg
ICBsb2NhdGlvbi5zZXRZKHkgKyBmb250LmFzY2VudCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBCb3R0b21UZXh0QmFzZWxpbmU6CisgICAgY2FzZSBJZGVvZ3JhcGhpY1RleHRCYXNlbGlu
ZToKKyAgICAgICAgbG9jYXRpb24uc2V0WSh5IC0gZm9udC5kZXNjZW50KCkpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIE1pZGRsZVRleHRCYXNlbGluZToKKyAgICAgICAgbG9jYXRpb24uc2V0
WSh5IC0gZm9udC5kZXNjZW50KCkgKyBmb250LmhlaWdodCgpIC8gMik7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgQWxwaGFiZXRpY1RleHRCYXNlbGluZToKKyAgICBkZWZhdWx0OgorICAgICAg
ICAgLy8gRG8gbm90aGluZy4KKyAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIAorCiAgICAgZmxv
YXQgd2lkdGggPSBmb250LndpZHRoKFRleHRSdW4odGV4dCwgZmFsc2UsIDAsIDAsIHJ0bCwgb3Zl
cnJpZGUpKTsKIAogICAgIFRleHRBbGlnbiBhbGlnbiA9IHN0YXRlKCkubV90ZXh0QWxpZ247CkBA
IC0xNjg0LDE4ICsxNjgyLDE4IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3
VGV4dEludGVybmFsKGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvCiAgICAgICAgICBh
bGlnbiA9IHJ0bCA/IFJpZ2h0VGV4dEFsaWduIDogTGVmdFRleHRBbGlnbjsKICAgICBlbHNlIGlm
IChhbGlnbiA9PSBFbmRUZXh0QWxpZ24pCiAgICAgICAgIGFsaWduID0gcnRsID8gTGVmdFRleHRB
bGlnbiA6IFJpZ2h0VGV4dEFsaWduOwotICAgIAorCiAgICAgc3dpdGNoIChhbGlnbikgewotICAg
ICAgICBjYXNlIENlbnRlclRleHRBbGlnbjoKLSAgICAgICAgICAgIGxvY2F0aW9uLnNldFgobG9j
YXRpb24ueCgpIC0gd2lkdGggLyAyKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IFJpZ2h0VGV4dEFsaWduOgotICAgICAgICAgICAgbG9jYXRpb24uc2V0WChsb2NhdGlvbi54KCkg
LSB3aWR0aCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgQ2VudGVyVGV4dEFsaWduOgorICAgICAgICBsb2NhdGlvbi5z
ZXRYKGxvY2F0aW9uLngoKSAtIHdpZHRoIC8gMik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
UmlnaHRUZXh0QWxpZ246CisgICAgICAgIGxvY2F0aW9uLnNldFgobG9jYXRpb24ueCgpIC0gd2lk
dGgpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKICAgICB9
Ci0gICAgCisKICAgICAvLyBUaGUgc2xvcCBidWlsdCBpbiB0byB0aGlzIG1hc2sgcmVjdCBtYXRj
aGVzIHRoZSBoZXVyaXN0aWMgdXNlZCBpbiBGb250Q0dXaW4uY3BwIGZvciBHREkgdGV4dC4KICAg
ICBGbG9hdFJlY3QgdGV4dFJlY3QgPSBGbG9hdFJlY3QobG9jYXRpb24ueCgpIC0gZm9udC5oZWln
aHQoKSAvIDIsIGxvY2F0aW9uLnkoKSAtIGZvbnQuYXNjZW50KCkgLSBmb250LmxpbmVHYXAoKSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGggKyBmb250LmhlaWdodCgp
LCBmb250LmxpbmVTcGFjaW5nKCkpOwpAQCAtMTcwOSw3ICsxNzA3LDcgQEAgdm9pZCBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdUZXh0SW50ZXJuYWwoY29uc3QgU3RyaW5nJiB0ZXh0LCBm
bG9hdCB4LCBmbG8KICAgICAgICAgLy8gcHVudCBhbmQgZGlydHkgdGhlIHdob2xlIGNhbnZhcy4K
ICAgICAgICAgY2FudmFzKCktPndpbGxEcmF3KEZsb2F0UmVjdCgwLCAwLCBjYW52YXMoKS0+d2lk
dGgoKSwgY2FudmFzKCktPmhlaWdodCgpKSk7CiAgICAgfQotICAgIAorCiAjaWYgUExBVEZPUk0o
Q0cpCiAgICAgQ2FudmFzU3R5bGUqIGRyYXdTdHlsZSA9IGZpbGwgPyBzdGF0ZSgpLm1fZmlsbFN0
eWxlLmdldCgpIDogc3RhdGUoKS5tX3N0cm9rZVN0eWxlLmdldCgpOwogICAgIGlmIChkcmF3U3R5
bGUtPmNhbnZhc0dyYWRpZW50KCkgfHwgZHJhd1N0eWxlLT5jYW52YXNQYXR0ZXJuKCkpIHsKQEAg
LTE3MjksOSArMTcyNyw5IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3VGV4
dEludGVybmFsKGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvCiAKICAgICAgICAgbWFz
a0ltYWdlQ29udGV4dC0+c2V0VGV4dERyYXdpbmdNb2RlKGZpbGwgPyBjVGV4dEZpbGwgOiBjVGV4
dFN0cm9rZSk7CiAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQtPnRyYW5zbGF0ZSgtbWFza1JlY3Qu
eCgpLCAtbWFza1JlY3QueSgpKTsKLSAgICAgICAgCisKICAgICAgICAgbWFza0ltYWdlQ29udGV4
dC0+ZHJhd0JpZGlUZXh0KGZvbnQsIHRleHRSdW4sIGxvY2F0aW9uKTsKLSAgICAgICAgCisKICAg
ICAgICAgYy0+c2F2ZSgpOwogICAgICAgICBjLT5jbGlwVG9JbWFnZUJ1ZmZlcihtYXNrUmVjdCwg
bWFza0ltYWdlLmdldCgpKTsKICAgICAgICAgZHJhd1N0eWxlLT5hcHBseUZpbGxDb2xvcihjKTsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
LmggYi9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCmluZGV4
IDJlYWM4OGQzZWI4ZTQ0ZGE3MDhiYmQyZGEzMmIyZjM4MjI1NzAyNWUuLmZiNWYyN2E2YWYyNTQ4
YTMyYzBkM2UwODIzMzJhYjE0YzdmN2Y2MTQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgKKysrIGIvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaApAQCAtMzQsOCArMzQsOSBAQAogI2luY2x1ZGUgIkdy
YXBoaWNzVHlwZXMuaCIKICNpbmNsdWRlICJQYXRoLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJp
bmcuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisKICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiAjaWYgUExBVEZP
Uk0oQ0cpCiAjaW5jbHVkZSA8QXBwbGljYXRpb25TZXJ2aWNlcy9BcHBsaWNhdGlvblNlcnZpY2Vz
Lmg+CkBAIC00MywyNDMgKzQ0LDI0MyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBj
bGFzcyBDYW52YXNHcmFkaWVudDsKLSAgICBjbGFzcyBDYW52YXNQYXR0ZXJuOwotICAgIGNsYXNz
IENhbnZhc1N0eWxlOwotICAgIGNsYXNzIEZsb2F0UmVjdDsKLSAgICBjbGFzcyBHcmFwaGljc0Nv
bnRleHQ7Ci0gICAgY2xhc3MgSFRNTENhbnZhc0VsZW1lbnQ7Ci0gICAgY2xhc3MgSFRNTEltYWdl
RWxlbWVudDsKLSAgICBjbGFzcyBIVE1MVmlkZW9FbGVtZW50OwotICAgIGNsYXNzIEltYWdlRGF0
YTsKLSAgICBjbGFzcyBLVVJMOwotICAgIGNsYXNzIFRleHRNZXRyaWNzOwotCi0gICAgdHlwZWRl
ZiBpbnQgRXhjZXB0aW9uQ29kZTsKK2NsYXNzIENhbnZhc0dyYWRpZW50OworY2xhc3MgQ2FudmFz
UGF0dGVybjsKK2NsYXNzIENhbnZhc1N0eWxlOworY2xhc3MgRmxvYXRSZWN0OworY2xhc3MgR3Jh
cGhpY3NDb250ZXh0OworY2xhc3MgSFRNTENhbnZhc0VsZW1lbnQ7CitjbGFzcyBIVE1MSW1hZ2VF
bGVtZW50OworY2xhc3MgSFRNTFZpZGVvRWxlbWVudDsKK2NsYXNzIEltYWdlRGF0YTsKK2NsYXNz
IEtVUkw7CitjbGFzcyBUZXh0TWV0cmljczsKKwordHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsK
KworY2xhc3MgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIDogcHVibGljIENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQgeworcHVibGljOgorICAgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRChIVE1MQ2Fu
dmFzRWxlbWVudCosIGJvb2wgdXNlc0NTU0NvbXBhdGliaWxpdHlQYXJzZU1vZGUsIGJvb2wgdXNl
c0Rhc2hib2FyZENvbXBhdGliaWxpdHlNb2RlKTsKIAotICAgIGNsYXNzIENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRCA6IHB1YmxpYyBDYW52YXNSZW5kZXJpbmdDb250ZXh0IHsKLSAgICBwdWJsaWM6
Ci0gICAgICAgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRChIVE1MQ2FudmFzRWxlbWVudCosIGJv
b2wgdXNlc0NTU0NvbXBhdGliaWxpdHlQYXJzZU1vZGUsIGJvb2wgdXNlc0Rhc2hib2FyZENvbXBh
dGliaWxpdHlNb2RlKTsKLQotICAgICAgICB2aXJ0dWFsIH5DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQoKTsKLSAgICAgICAgCi0gICAgICAgIHZpcnR1YWwgYm9vbCBpczJkKCkgY29uc3QgeyByZXR1
cm4gdHJ1ZTsgfQotCi0gICAgICAgIENhbnZhc1N0eWxlKiBzdHJva2VTdHlsZSgpIGNvbnN0Owot
ICAgICAgICB2b2lkIHNldFN0cm9rZVN0eWxlKFBhc3NSZWZQdHI8Q2FudmFzU3R5bGU+KTsKLQot
ICAgICAgICBDYW52YXNTdHlsZSogZmlsbFN0eWxlKCkgY29uc3Q7Ci0gICAgICAgIHZvaWQgc2V0
RmlsbFN0eWxlKFBhc3NSZWZQdHI8Q2FudmFzU3R5bGU+KTsKLQotICAgICAgICBmbG9hdCBsaW5l
V2lkdGgoKSBjb25zdDsKLSAgICAgICAgdm9pZCBzZXRMaW5lV2lkdGgoZmxvYXQpOwotCi0gICAg
ICAgIFN0cmluZyBsaW5lQ2FwKCkgY29uc3Q7Ci0gICAgICAgIHZvaWQgc2V0TGluZUNhcChjb25z
dCBTdHJpbmcmKTsKLQotICAgICAgICBTdHJpbmcgbGluZUpvaW4oKSBjb25zdDsKLSAgICAgICAg
dm9pZCBzZXRMaW5lSm9pbihjb25zdCBTdHJpbmcmKTsKLQotICAgICAgICBmbG9hdCBtaXRlckxp
bWl0KCkgY29uc3Q7Ci0gICAgICAgIHZvaWQgc2V0TWl0ZXJMaW1pdChmbG9hdCk7Ci0KLSAgICAg
ICAgZmxvYXQgc2hhZG93T2Zmc2V0WCgpIGNvbnN0OwotICAgICAgICB2b2lkIHNldFNoYWRvd09m
ZnNldFgoZmxvYXQpOwotCi0gICAgICAgIGZsb2F0IHNoYWRvd09mZnNldFkoKSBjb25zdDsKLSAg
ICAgICAgdm9pZCBzZXRTaGFkb3dPZmZzZXRZKGZsb2F0KTsKLQotICAgICAgICBmbG9hdCBzaGFk
b3dCbHVyKCkgY29uc3Q7Ci0gICAgICAgIHZvaWQgc2V0U2hhZG93Qmx1cihmbG9hdCk7Ci0KLSAg
ICAgICAgU3RyaW5nIHNoYWRvd0NvbG9yKCkgY29uc3Q7Ci0gICAgICAgIHZvaWQgc2V0U2hhZG93
Q29sb3IoY29uc3QgU3RyaW5nJik7Ci0KLSAgICAgICAgZmxvYXQgZ2xvYmFsQWxwaGEoKSBjb25z
dDsKLSAgICAgICAgdm9pZCBzZXRHbG9iYWxBbHBoYShmbG9hdCk7Ci0KLSAgICAgICAgU3RyaW5n
IGdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbigpIGNvbnN0OwotICAgICAgICB2b2lkIHNldEdsb2Jh
bENvbXBvc2l0ZU9wZXJhdGlvbihjb25zdCBTdHJpbmcmKTsKLQotICAgICAgICB2b2lkIHNhdmUo
KTsKLSAgICAgICAgdm9pZCByZXN0b3JlKCk7Ci0KLSAgICAgICAgdm9pZCBzY2FsZShmbG9hdCBz
eCwgZmxvYXQgc3kpOwotICAgICAgICB2b2lkIHJvdGF0ZShmbG9hdCBhbmdsZUluUmFkaWFucyk7
Ci0gICAgICAgIHZvaWQgdHJhbnNsYXRlKGZsb2F0IHR4LCBmbG9hdCB0eSk7Ci0gICAgICAgIHZv
aWQgdHJhbnNmb3JtKGZsb2F0IG0xMSwgZmxvYXQgbTEyLCBmbG9hdCBtMjEsIGZsb2F0IG0yMiwg
ZmxvYXQgZHgsIGZsb2F0IGR5KTsKLSAgICAgICAgdm9pZCBzZXRUcmFuc2Zvcm0oZmxvYXQgbTEx
LCBmbG9hdCBtMTIsIGZsb2F0IG0yMSwgZmxvYXQgbTIyLCBmbG9hdCBkeCwgZmxvYXQgZHkpOwot
Ci0gICAgICAgIHZvaWQgc2V0U3Ryb2tlQ29sb3IoY29uc3QgU3RyaW5nJiBjb2xvcik7Ci0gICAg
ICAgIHZvaWQgc2V0U3Ryb2tlQ29sb3IoZmxvYXQgZ3JheUxldmVsKTsKLSAgICAgICAgdm9pZCBz
ZXRTdHJva2VDb2xvcihjb25zdCBTdHJpbmcmIGNvbG9yLCBmbG9hdCBhbHBoYSk7Ci0gICAgICAg
IHZvaWQgc2V0U3Ryb2tlQ29sb3IoZmxvYXQgZ3JheUxldmVsLCBmbG9hdCBhbHBoYSk7Ci0gICAg
ICAgIHZvaWQgc2V0U3Ryb2tlQ29sb3IoZmxvYXQgciwgZmxvYXQgZywgZmxvYXQgYiwgZmxvYXQg
YSk7Ci0gICAgICAgIHZvaWQgc2V0U3Ryb2tlQ29sb3IoZmxvYXQgYywgZmxvYXQgbSwgZmxvYXQg
eSwgZmxvYXQgaywgZmxvYXQgYSk7Ci0KLSAgICAgICAgdm9pZCBzZXRGaWxsQ29sb3IoY29uc3Qg
U3RyaW5nJiBjb2xvcik7Ci0gICAgICAgIHZvaWQgc2V0RmlsbENvbG9yKGZsb2F0IGdyYXlMZXZl
bCk7Ci0gICAgICAgIHZvaWQgc2V0RmlsbENvbG9yKGNvbnN0IFN0cmluZyYgY29sb3IsIGZsb2F0
IGFscGhhKTsKLSAgICAgICAgdm9pZCBzZXRGaWxsQ29sb3IoZmxvYXQgZ3JheUxldmVsLCBmbG9h
dCBhbHBoYSk7Ci0gICAgICAgIHZvaWQgc2V0RmlsbENvbG9yKGZsb2F0IHIsIGZsb2F0IGcsIGZs
b2F0IGIsIGZsb2F0IGEpOwotICAgICAgICB2b2lkIHNldEZpbGxDb2xvcihmbG9hdCBjLCBmbG9h
dCBtLCBmbG9hdCB5LCBmbG9hdCBrLCBmbG9hdCBhKTsKLQotICAgICAgICB2b2lkIGJlZ2luUGF0
aCgpOwotICAgICAgICB2b2lkIGNsb3NlUGF0aCgpOwotCi0gICAgICAgIHZvaWQgbW92ZVRvKGZs
b2F0IHgsIGZsb2F0IHkpOwotICAgICAgICB2b2lkIGxpbmVUbyhmbG9hdCB4LCBmbG9hdCB5KTsK
LSAgICAgICAgdm9pZCBxdWFkcmF0aWNDdXJ2ZVRvKGZsb2F0IGNweCwgZmxvYXQgY3B5LCBmbG9h
dCB4LCBmbG9hdCB5KTsKLSAgICAgICAgdm9pZCBiZXppZXJDdXJ2ZVRvKGZsb2F0IGNwMXgsIGZs
b2F0IGNwMXksIGZsb2F0IGNwMngsIGZsb2F0IGNwMnksIGZsb2F0IHgsIGZsb2F0IHkpOwotICAg
ICAgICB2b2lkIGFyY1RvKGZsb2F0IHgwLCBmbG9hdCB5MCwgZmxvYXQgeDEsIGZsb2F0IHkxLCBm
bG9hdCByYWRpdXMsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICAgICAgdm9pZCBhcmMoZmxvYXQgeCwg
ZmxvYXQgeSwgZmxvYXQgciwgZmxvYXQgc2EsIGZsb2F0IGVhLCBib29sIGNsb2Nrd2lzZSwgRXhj
ZXB0aW9uQ29kZSYpOwotICAgICAgICB2b2lkIHJlY3QoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQg
d2lkdGgsIGZsb2F0IGhlaWdodCk7Ci0KLSAgICAgICAgdm9pZCBmaWxsKCk7Ci0gICAgICAgIHZv
aWQgc3Ryb2tlKCk7Ci0gICAgICAgIHZvaWQgY2xpcCgpOwotCi0gICAgICAgIGJvb2wgaXNQb2lu
dEluUGF0aChjb25zdCBmbG9hdCB4LCBjb25zdCBmbG9hdCB5KTsKLQotICAgICAgICB2b2lkIGNs
ZWFyUmVjdChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KTsKLSAg
ICAgICAgdm9pZCBmaWxsUmVjdChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB3aWR0aCwgZmxvYXQg
aGVpZ2h0KTsKLSAgICAgICAgdm9pZCBzdHJva2VSZWN0KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0
IHdpZHRoLCBmbG9hdCBoZWlnaHQpOwotICAgICAgICB2b2lkIHN0cm9rZVJlY3QoZmxvYXQgeCwg
ZmxvYXQgeSwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgbGluZVdpZHRoKTsKLQot
ICAgICAgICB2b2lkIHNldFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBi
bHVyKTsKLSAgICAgICAgdm9pZCBzZXRTaGFkb3coZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwg
ZmxvYXQgYmx1ciwgY29uc3QgU3RyaW5nJiBjb2xvcik7Ci0gICAgICAgIHZvaWQgc2V0U2hhZG93
KGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IGJsdXIsIGZsb2F0IGdyYXlMZXZlbCk7
Ci0gICAgICAgIHZvaWQgc2V0U2hhZG93KGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0
IGJsdXIsIGNvbnN0IFN0cmluZyYgY29sb3IsIGZsb2F0IGFscGhhKTsKLSAgICAgICAgdm9pZCBz
ZXRTaGFkb3coZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgYmx1ciwgZmxvYXQgZ3Jh
eUxldmVsLCBmbG9hdCBhbHBoYSk7Ci0gICAgICAgIHZvaWQgc2V0U2hhZG93KGZsb2F0IHdpZHRo
LCBmbG9hdCBoZWlnaHQsIGZsb2F0IGJsdXIsIGZsb2F0IHIsIGZsb2F0IGcsIGZsb2F0IGIsIGZs
b2F0IGEpOwotICAgICAgICB2b2lkIHNldFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0
LCBmbG9hdCBibHVyLCBmbG9hdCBjLCBmbG9hdCBtLCBmbG9hdCB5LCBmbG9hdCBrLCBmbG9hdCBh
KTsKKyAgICB2aXJ0dWFsIH5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQoKTsKKworICAgIHZpcnR1
YWwgYm9vbCBpczJkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgQ2FudmFzU3R5bGUq
IHN0cm9rZVN0eWxlKCkgY29uc3Q7CisgICAgdm9pZCBzZXRTdHJva2VTdHlsZShQYXNzUmVmUHRy
PENhbnZhc1N0eWxlPik7CisKKyAgICBDYW52YXNTdHlsZSogZmlsbFN0eWxlKCkgY29uc3Q7Cisg
ICAgdm9pZCBzZXRGaWxsU3R5bGUoUGFzc1JlZlB0cjxDYW52YXNTdHlsZT4pOworCisgICAgZmxv
YXQgbGluZVdpZHRoKCkgY29uc3Q7CisgICAgdm9pZCBzZXRMaW5lV2lkdGgoZmxvYXQpOworCisg
ICAgU3RyaW5nIGxpbmVDYXAoKSBjb25zdDsKKyAgICB2b2lkIHNldExpbmVDYXAoY29uc3QgU3Ry
aW5nJik7CisKKyAgICBTdHJpbmcgbGluZUpvaW4oKSBjb25zdDsKKyAgICB2b2lkIHNldExpbmVK
b2luKGNvbnN0IFN0cmluZyYpOworCisgICAgZmxvYXQgbWl0ZXJMaW1pdCgpIGNvbnN0OworICAg
IHZvaWQgc2V0TWl0ZXJMaW1pdChmbG9hdCk7CisKKyAgICBmbG9hdCBzaGFkb3dPZmZzZXRYKCkg
Y29uc3Q7CisgICAgdm9pZCBzZXRTaGFkb3dPZmZzZXRYKGZsb2F0KTsKKworICAgIGZsb2F0IHNo
YWRvd09mZnNldFkoKSBjb25zdDsKKyAgICB2b2lkIHNldFNoYWRvd09mZnNldFkoZmxvYXQpOwor
CisgICAgZmxvYXQgc2hhZG93Qmx1cigpIGNvbnN0OworICAgIHZvaWQgc2V0U2hhZG93Qmx1cihm
bG9hdCk7CisKKyAgICBTdHJpbmcgc2hhZG93Q29sb3IoKSBjb25zdDsKKyAgICB2b2lkIHNldFNo
YWRvd0NvbG9yKGNvbnN0IFN0cmluZyYpOworCisgICAgZmxvYXQgZ2xvYmFsQWxwaGEoKSBjb25z
dDsKKyAgICB2b2lkIHNldEdsb2JhbEFscGhhKGZsb2F0KTsKKworICAgIFN0cmluZyBnbG9iYWxD
b21wb3NpdGVPcGVyYXRpb24oKSBjb25zdDsKKyAgICB2b2lkIHNldEdsb2JhbENvbXBvc2l0ZU9w
ZXJhdGlvbihjb25zdCBTdHJpbmcmKTsKKworICAgIHZvaWQgc2F2ZSgpOworICAgIHZvaWQgcmVz
dG9yZSgpOworCisgICAgdm9pZCBzY2FsZShmbG9hdCBzeCwgZmxvYXQgc3kpOworICAgIHZvaWQg
cm90YXRlKGZsb2F0IGFuZ2xlSW5SYWRpYW5zKTsKKyAgICB2b2lkIHRyYW5zbGF0ZShmbG9hdCB0
eCwgZmxvYXQgdHkpOworICAgIHZvaWQgdHJhbnNmb3JtKGZsb2F0IG0xMSwgZmxvYXQgbTEyLCBm
bG9hdCBtMjEsIGZsb2F0IG0yMiwgZmxvYXQgZHgsIGZsb2F0IGR5KTsKKyAgICB2b2lkIHNldFRy
YW5zZm9ybShmbG9hdCBtMTEsIGZsb2F0IG0xMiwgZmxvYXQgbTIxLCBmbG9hdCBtMjIsIGZsb2F0
IGR4LCBmbG9hdCBkeSk7CisKKyAgICB2b2lkIHNldFN0cm9rZUNvbG9yKGNvbnN0IFN0cmluZyYg
Y29sb3IpOworICAgIHZvaWQgc2V0U3Ryb2tlQ29sb3IoZmxvYXQgZ3JheUxldmVsKTsKKyAgICB2
b2lkIHNldFN0cm9rZUNvbG9yKGNvbnN0IFN0cmluZyYgY29sb3IsIGZsb2F0IGFscGhhKTsKKyAg
ICB2b2lkIHNldFN0cm9rZUNvbG9yKGZsb2F0IGdyYXlMZXZlbCwgZmxvYXQgYWxwaGEpOworICAg
IHZvaWQgc2V0U3Ryb2tlQ29sb3IoZmxvYXQgciwgZmxvYXQgZywgZmxvYXQgYiwgZmxvYXQgYSk7
CisgICAgdm9pZCBzZXRTdHJva2VDb2xvcihmbG9hdCBjLCBmbG9hdCBtLCBmbG9hdCB5LCBmbG9h
dCBrLCBmbG9hdCBhKTsKKworICAgIHZvaWQgc2V0RmlsbENvbG9yKGNvbnN0IFN0cmluZyYgY29s
b3IpOworICAgIHZvaWQgc2V0RmlsbENvbG9yKGZsb2F0IGdyYXlMZXZlbCk7CisgICAgdm9pZCBz
ZXRGaWxsQ29sb3IoY29uc3QgU3RyaW5nJiBjb2xvciwgZmxvYXQgYWxwaGEpOworICAgIHZvaWQg
c2V0RmlsbENvbG9yKGZsb2F0IGdyYXlMZXZlbCwgZmxvYXQgYWxwaGEpOworICAgIHZvaWQgc2V0
RmlsbENvbG9yKGZsb2F0IHIsIGZsb2F0IGcsIGZsb2F0IGIsIGZsb2F0IGEpOworICAgIHZvaWQg
c2V0RmlsbENvbG9yKGZsb2F0IGMsIGZsb2F0IG0sIGZsb2F0IHksIGZsb2F0IGssIGZsb2F0IGEp
OworCisgICAgdm9pZCBiZWdpblBhdGgoKTsKKyAgICB2b2lkIGNsb3NlUGF0aCgpOworCisgICAg
dm9pZCBtb3ZlVG8oZmxvYXQgeCwgZmxvYXQgeSk7CisgICAgdm9pZCBsaW5lVG8oZmxvYXQgeCwg
ZmxvYXQgeSk7CisgICAgdm9pZCBxdWFkcmF0aWNDdXJ2ZVRvKGZsb2F0IGNweCwgZmxvYXQgY3B5
LCBmbG9hdCB4LCBmbG9hdCB5KTsKKyAgICB2b2lkIGJlemllckN1cnZlVG8oZmxvYXQgY3AxeCwg
ZmxvYXQgY3AxeSwgZmxvYXQgY3AyeCwgZmxvYXQgY3AyeSwgZmxvYXQgeCwgZmxvYXQgeSk7Cisg
ICAgdm9pZCBhcmNUbyhmbG9hdCB4MCwgZmxvYXQgeTAsIGZsb2F0IHgxLCBmbG9hdCB5MSwgZmxv
YXQgcmFkaXVzLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBhcmMoZmxvYXQgeCwgZmxvYXQg
eSwgZmxvYXQgciwgZmxvYXQgc2EsIGZsb2F0IGVhLCBib29sIGNsb2Nrd2lzZSwgRXhjZXB0aW9u
Q29kZSYpOworICAgIHZvaWQgcmVjdChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB3aWR0aCwgZmxv
YXQgaGVpZ2h0KTsKKworICAgIHZvaWQgZmlsbCgpOworICAgIHZvaWQgc3Ryb2tlKCk7CisgICAg
dm9pZCBjbGlwKCk7CisKKyAgICBib29sIGlzUG9pbnRJblBhdGgoY29uc3QgZmxvYXQgeCwgY29u
c3QgZmxvYXQgeSk7CisKKyAgICB2b2lkIGNsZWFyUmVjdChmbG9hdCB4LCBmbG9hdCB5LCBmbG9h
dCB3aWR0aCwgZmxvYXQgaGVpZ2h0KTsKKyAgICB2b2lkIGZpbGxSZWN0KGZsb2F0IHgsIGZsb2F0
IHksIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpOworICAgIHZvaWQgc3Ryb2tlUmVjdChmbG9h
dCB4LCBmbG9hdCB5LCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KTsKKyAgICB2b2lkIHN0cm9r
ZVJlY3QoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQg
bGluZVdpZHRoKTsKKworICAgIHZvaWQgc2V0U2hhZG93KGZsb2F0IHdpZHRoLCBmbG9hdCBoZWln
aHQsIGZsb2F0IGJsdXIpOworICAgIHZvaWQgc2V0U2hhZG93KGZsb2F0IHdpZHRoLCBmbG9hdCBo
ZWlnaHQsIGZsb2F0IGJsdXIsIGNvbnN0IFN0cmluZyYgY29sb3IpOworICAgIHZvaWQgc2V0U2hh
ZG93KGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IGJsdXIsIGZsb2F0IGdyYXlMZXZl
bCk7CisgICAgdm9pZCBzZXRTaGFkb3coZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQg
Ymx1ciwgY29uc3QgU3RyaW5nJiBjb2xvciwgZmxvYXQgYWxwaGEpOworICAgIHZvaWQgc2V0U2hh
ZG93KGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IGJsdXIsIGZsb2F0IGdyYXlMZXZl
bCwgZmxvYXQgYWxwaGEpOworICAgIHZvaWQgc2V0U2hhZG93KGZsb2F0IHdpZHRoLCBmbG9hdCBo
ZWlnaHQsIGZsb2F0IGJsdXIsIGZsb2F0IHIsIGZsb2F0IGcsIGZsb2F0IGIsIGZsb2F0IGEpOwor
ICAgIHZvaWQgc2V0U2hhZG93KGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IGJsdXIs
IGZsb2F0IGMsIGZsb2F0IG0sIGZsb2F0IHksIGZsb2F0IGssIGZsb2F0IGEpOwogCi0gICAgICAg
IHZvaWQgY2xlYXJTaGFkb3coKTsKLQotICAgICAgICB2b2lkIGRyYXdJbWFnZShIVE1MSW1hZ2VF
bGVtZW50KiwgZmxvYXQgeCwgZmxvYXQgeSwgRXhjZXB0aW9uQ29kZSYpOwotICAgICAgICB2b2lk
IGRyYXdJbWFnZShIVE1MSW1hZ2VFbGVtZW50KiwgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgd2lk
dGgsIGZsb2F0IGhlaWdodCwgRXhjZXB0aW9uQ29kZSYpOwotICAgICAgICB2b2lkIGRyYXdJbWFn
ZShIVE1MSW1hZ2VFbGVtZW50KiwgZmxvYXQgc3gsIGZsb2F0IHN5LCBmbG9hdCBzdywgZmxvYXQg
c2gsIGZsb2F0IGR4LCBmbG9hdCBkeSwgZmxvYXQgZHcsIGZsb2F0IGRoLCBFeGNlcHRpb25Db2Rl
Jik7Ci0gICAgICAgIHZvaWQgZHJhd0ltYWdlKEhUTUxJbWFnZUVsZW1lbnQqLCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgRXhjZXB0aW9uQ29kZSYp
OwotICAgICAgICB2b2lkIGRyYXdJbWFnZShIVE1MQ2FudmFzRWxlbWVudCosIGZsb2F0IHgsIGZs
b2F0IHksIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICAgICAgdm9pZCBkcmF3SW1hZ2UoSFRNTENhbnZh
c0VsZW1lbnQqLCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBF
eGNlcHRpb25Db2RlJik7Ci0gICAgICAgIHZvaWQgZHJhd0ltYWdlKEhUTUxDYW52YXNFbGVtZW50
KiwgZmxvYXQgc3gsIGZsb2F0IHN5LCBmbG9hdCBzdywgZmxvYXQgc2gsIGZsb2F0IGR4LCBmbG9h
dCBkeSwgZmxvYXQgZHcsIGZsb2F0IGRoLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgICAgIHZvaWQg
ZHJhd0ltYWdlKEhUTUxDYW52YXNFbGVtZW50KiwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIGNsZWFy
U2hhZG93KCk7CisKKyAgICB2b2lkIGRyYXdJbWFnZShIVE1MSW1hZ2VFbGVtZW50KiwgZmxvYXQg
eCwgZmxvYXQgeSwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgZHJhd0ltYWdlKEhUTUxJbWFn
ZUVsZW1lbnQqLCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBF
eGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBkcmF3SW1hZ2UoSFRNTEltYWdlRWxlbWVudCosIGZs
b2F0IHN4LCBmbG9hdCBzeSwgZmxvYXQgc3csIGZsb2F0IHNoLCBmbG9hdCBkeCwgZmxvYXQgZHks
IGZsb2F0IGR3LCBmbG9hdCBkaCwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgZHJhd0ltYWdl
KEhUTUxJbWFnZUVsZW1lbnQqLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgZHN0UmVjdCwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgZHJhd0ltYWdlKEhUTUxD
YW52YXNFbGVtZW50KiwgZmxvYXQgeCwgZmxvYXQgeSwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZv
aWQgZHJhd0ltYWdlKEhUTUxDYW52YXNFbGVtZW50KiwgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQg
d2lkdGgsIGZsb2F0IGhlaWdodCwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgZHJhd0ltYWdl
KEhUTUxDYW52YXNFbGVtZW50KiwgZmxvYXQgc3gsIGZsb2F0IHN5LCBmbG9hdCBzdywgZmxvYXQg
c2gsIGZsb2F0IGR4LCBmbG9hdCBkeSwgZmxvYXQgZHcsIGZsb2F0IGRoLCBFeGNlcHRpb25Db2Rl
Jik7CisgICAgdm9pZCBkcmF3SW1hZ2UoSFRNTENhbnZhc0VsZW1lbnQqLCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgRXhjZXB0aW9uQ29kZSYpOwog
I2lmIEVOQUJMRShWSURFTykKLSAgICAgICAgdm9pZCBkcmF3SW1hZ2UoSFRNTFZpZGVvRWxlbWVu
dCosIGZsb2F0IHgsIGZsb2F0IHksIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICAgICAgdm9pZCBkcmF3
SW1hZ2UoSFRNTFZpZGVvRWxlbWVudCosIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHdpZHRoLCBm
bG9hdCBoZWlnaHQsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICAgICAgdm9pZCBkcmF3SW1hZ2UoSFRN
TFZpZGVvRWxlbWVudCosIGZsb2F0IHN4LCBmbG9hdCBzeSwgZmxvYXQgc3csIGZsb2F0IHNoLCBm
bG9hdCBkeCwgZmxvYXQgZHksIGZsb2F0IGR3LCBmbG9hdCBkaCwgRXhjZXB0aW9uQ29kZSYpOwot
ICAgICAgICB2b2lkIGRyYXdJbWFnZShIVE1MVmlkZW9FbGVtZW50KiwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIEV4Y2VwdGlvbkNvZGUmKTsKKyAg
ICB2b2lkIGRyYXdJbWFnZShIVE1MVmlkZW9FbGVtZW50KiwgZmxvYXQgeCwgZmxvYXQgeSwgRXhj
ZXB0aW9uQ29kZSYpOworICAgIHZvaWQgZHJhd0ltYWdlKEhUTUxWaWRlb0VsZW1lbnQqLCBmbG9h
dCB4LCBmbG9hdCB5LCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBFeGNlcHRpb25Db2RlJik7
CisgICAgdm9pZCBkcmF3SW1hZ2UoSFRNTFZpZGVvRWxlbWVudCosIGZsb2F0IHN4LCBmbG9hdCBz
eSwgZmxvYXQgc3csIGZsb2F0IHNoLCBmbG9hdCBkeCwgZmxvYXQgZHksIGZsb2F0IGR3LCBmbG9h
dCBkaCwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgZHJhd0ltYWdlKEhUTUxWaWRlb0VsZW1l
bnQqLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwg
RXhjZXB0aW9uQ29kZSYpOwogI2VuZGlmCiAKLSAgICAgICAgdm9pZCBkcmF3SW1hZ2VGcm9tUmVj
dChIVE1MSW1hZ2VFbGVtZW50KiwgZmxvYXQgc3gsIGZsb2F0IHN5LCBmbG9hdCBzdywgZmxvYXQg
c2gsCi0gICAgICAgICAgICBmbG9hdCBkeCwgZmxvYXQgZHksIGZsb2F0IGR3LCBmbG9hdCBkaCwg
Y29uc3QgU3RyaW5nJiBjb21wb3NpdGVPcGVyYXRpb24pOwotCi0gICAgICAgIHZvaWQgc2V0QWxw
aGEoZmxvYXQpOwotCi0gICAgICAgIHZvaWQgc2V0Q29tcG9zaXRlT3BlcmF0aW9uKGNvbnN0IFN0
cmluZyYpOwotCi0gICAgICAgIFBhc3NSZWZQdHI8Q2FudmFzR3JhZGllbnQ+IGNyZWF0ZUxpbmVh
ckdyYWRpZW50KGZsb2F0IHgwLCBmbG9hdCB5MCwgZmxvYXQgeDEsIGZsb2F0IHkxLCBFeGNlcHRp
b25Db2RlJik7Ci0gICAgICAgIFBhc3NSZWZQdHI8Q2FudmFzR3JhZGllbnQ+IGNyZWF0ZVJhZGlh
bEdyYWRpZW50KGZsb2F0IHgwLCBmbG9hdCB5MCwgZmxvYXQgcjAsIGZsb2F0IHgxLCBmbG9hdCB5
MSwgZmxvYXQgcjEsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICAgICAgUGFzc1JlZlB0cjxDYW52YXNQ
YXR0ZXJuPiBjcmVhdGVQYXR0ZXJuKEhUTUxJbWFnZUVsZW1lbnQqLCBjb25zdCBTdHJpbmcmIHJl
cGV0aXRpb25UeXBlLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgICAgIFBhc3NSZWZQdHI8Q2FudmFz
UGF0dGVybj4gY3JlYXRlUGF0dGVybihIVE1MQ2FudmFzRWxlbWVudCosIGNvbnN0IFN0cmluZyYg
cmVwZXRpdGlvblR5cGUsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICAgICAgCi0gICAgICAgIFBhc3NS
ZWZQdHI8SW1hZ2VEYXRhPiBjcmVhdGVJbWFnZURhdGEoUGFzc1JlZlB0cjxJbWFnZURhdGE+IGlt
YWdlRGF0YSwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwotICAgICAgICBQYXNzUmVmUHRyPEltYWdl
RGF0YT4gY3JlYXRlSW1hZ2VEYXRhKGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIEV4Y2VwdGlv
bkNvZGUmKSBjb25zdDsKLSAgICAgICAgUGFzc1JlZlB0cjxJbWFnZURhdGE+IGdldEltYWdlRGF0
YShmbG9hdCBzeCwgZmxvYXQgc3ksIGZsb2F0IHN3LCBmbG9hdCBzaCwgRXhjZXB0aW9uQ29kZSYp
IGNvbnN0OwotICAgICAgICB2b2lkIHB1dEltYWdlRGF0YShJbWFnZURhdGEqLCBmbG9hdCBkeCwg
ZmxvYXQgZHksIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICAgICAgdm9pZCBwdXRJbWFnZURhdGEoSW1h
Z2VEYXRhKiwgZmxvYXQgZHgsIGZsb2F0IGR5LCBmbG9hdCBkaXJ0eVgsIGZsb2F0IGRpcnR5WSwg
ZmxvYXQgZGlydHlXaWR0aCwgZmxvYXQgZGlydHlIZWlnaHQsIEV4Y2VwdGlvbkNvZGUmKTsKLSAg
ICAgICAgCi0gICAgICAgIHZvaWQgcmVzZXQoKTsKLQotICAgICAgICBTdHJpbmcgZm9udCgpIGNv
bnN0OwotICAgICAgICB2b2lkIHNldEZvbnQoY29uc3QgU3RyaW5nJik7Ci0gICAgICAgIHZvaWQg
dXBkYXRlRm9udCgpOwotICAgICAgICAKLSAgICAgICAgU3RyaW5nIHRleHRBbGlnbigpIGNvbnN0
OwotICAgICAgICB2b2lkIHNldFRleHRBbGlnbihjb25zdCBTdHJpbmcmKTsKLSAgICAgICAgCi0g
ICAgICAgIFN0cmluZyB0ZXh0QmFzZWxpbmUoKSBjb25zdDsKLSAgICAgICAgdm9pZCBzZXRUZXh0
QmFzZWxpbmUoY29uc3QgU3RyaW5nJik7Ci0gICAgICAgIAotICAgICAgICB2b2lkIGZpbGxUZXh0
KGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvYXQgeSk7Ci0gICAgICAgIHZvaWQgZmls
bFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCBtYXhXaWR0
aCk7Ci0gICAgICAgIHZvaWQgc3Ryb2tlVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIGZsb2F0IHgs
IGZsb2F0IHkpOwotICAgICAgICB2b2lkIHN0cm9rZVRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBm
bG9hdCB4LCBmbG9hdCB5LCBmbG9hdCBtYXhXaWR0aCk7Ci0gICAgICAgIFBhc3NSZWZQdHI8VGV4
dE1ldHJpY3M+IG1lYXN1cmVUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCk7Ci0KLSAgICAgICAgTGlu
ZUNhcCBnZXRMaW5lQ2FwKCkgY29uc3QgeyByZXR1cm4gc3RhdGUoKS5tX2xpbmVDYXA7IH0KLSAg
ICAgICAgTGluZUpvaW4gZ2V0TGluZUpvaW4oKSBjb25zdCB7IHJldHVybiBzdGF0ZSgpLm1fbGlu
ZUpvaW47IH0KLQotICAgIHByaXZhdGU6Ci0gICAgICAgIHN0cnVjdCBTdGF0ZSB7Ci0gICAgICAg
ICAgICBTdGF0ZSgpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBTdHJpbmcgbV91bnBhcnNl
ZFN0cm9rZUNvbG9yOwotICAgICAgICAgICAgU3RyaW5nIG1fdW5wYXJzZWRGaWxsQ29sb3I7Ci0g
ICAgICAgICAgICBSZWZQdHI8Q2FudmFzU3R5bGU+IG1fc3Ryb2tlU3R5bGU7Ci0gICAgICAgICAg
ICBSZWZQdHI8Q2FudmFzU3R5bGU+IG1fZmlsbFN0eWxlOwotICAgICAgICAgICAgZmxvYXQgbV9s
aW5lV2lkdGg7Ci0gICAgICAgICAgICBMaW5lQ2FwIG1fbGluZUNhcDsKLSAgICAgICAgICAgIExp
bmVKb2luIG1fbGluZUpvaW47Ci0gICAgICAgICAgICBmbG9hdCBtX21pdGVyTGltaXQ7Ci0gICAg
ICAgICAgICBGbG9hdFNpemUgbV9zaGFkb3dPZmZzZXQ7Ci0gICAgICAgICAgICBmbG9hdCBtX3No
YWRvd0JsdXI7Ci0gICAgICAgICAgICBSR0JBMzIgbV9zaGFkb3dDb2xvcjsKLSAgICAgICAgICAg
IGZsb2F0IG1fZ2xvYmFsQWxwaGE7Ci0gICAgICAgICAgICBDb21wb3NpdGVPcGVyYXRvciBtX2ds
b2JhbENvbXBvc2l0ZTsKLSAgICAgICAgICAgIEFmZmluZVRyYW5zZm9ybSBtX3RyYW5zZm9ybTsK
LSAgICAgICAgICAgIGJvb2wgbV9pbnZlcnRpYmxlQ1RNOwotICAgICAgICAgICAgCi0gICAgICAg
ICAgICAvLyBUZXh0IHN0YXRlLgotICAgICAgICAgICAgVGV4dEFsaWduIG1fdGV4dEFsaWduOwot
ICAgICAgICAgICAgVGV4dEJhc2VsaW5lIG1fdGV4dEJhc2VsaW5lOwotICAgICAgICAgICAgCi0g
ICAgICAgICAgICBTdHJpbmcgbV91bnBhcnNlZEZvbnQ7Ci0gICAgICAgICAgICBGb250IG1fZm9u
dDsKLSAgICAgICAgICAgIGJvb2wgbV9yZWFsaXplZEZvbnQ7Ci0gICAgICAgIH07Ci0gICAgICAg
IFBhdGggbV9wYXRoOwotCi0gICAgICAgIFN0YXRlJiBzdGF0ZSgpIHsgcmV0dXJuIG1fc3RhdGVT
dGFjay5sYXN0KCk7IH0KLSAgICAgICAgY29uc3QgU3RhdGUmIHN0YXRlKCkgY29uc3QgeyByZXR1
cm4gbV9zdGF0ZVN0YWNrLmxhc3QoKTsgfQotCi0gICAgICAgIHZvaWQgYXBwbHlTaGFkb3coKTsK
LQotICAgICAgICBlbnVtIENhbnZhc1dpbGxEcmF3T3B0aW9uIHsKLSAgICAgICAgICAgIENhbnZh
c1dpbGxEcmF3QXBwbHlUcmFuc2Zvcm0gPSAxLAotICAgICAgICAgICAgQ2FudmFzV2lsbERyYXdB
cHBseVNoYWRvdyA9IDEgPDwgMSwKLSAgICAgICAgICAgIENhbnZhc1dpbGxEcmF3QXBwbHlDbGlw
ID0gMSA8PCAyLAotICAgICAgICAgICAgQ2FudmFzV2lsbERyYXdBcHBseUFsbCA9IDB4ZmZmZmZm
ZmYKLSAgICAgICAgfTsKLSAgICAgICAgCi0gICAgICAgIHZvaWQgd2lsbERyYXcoY29uc3QgRmxv
YXRSZWN0JiwgdW5zaWduZWQgb3B0aW9ucyA9IENhbnZhc1dpbGxEcmF3QXBwbHlBbGwpOwotCi0g
ICAgICAgIEdyYXBoaWNzQ29udGV4dCogZHJhd2luZ0NvbnRleHQoKSBjb25zdDsKLQotICAgICAg
ICB2b2lkIGFwcGx5U3Ryb2tlUGF0dGVybigpOwotICAgICAgICB2b2lkIGFwcGx5RmlsbFBhdHRl
cm4oKTsKLQotICAgICAgICB2b2lkIGRyYXdUZXh0SW50ZXJuYWwoY29uc3QgU3RyaW5nJiB0ZXh0
LCBmbG9hdCB4LCBmbG9hdCB5LCBib29sIGZpbGwsIGZsb2F0IG1heFdpZHRoID0gMCwgYm9vbCB1
c2VNYXhXaWR0aCA9IGZhbHNlKTsKLQotICAgICAgICBjb25zdCBGb250JiBhY2Nlc3NGb250KCk7
CisgICAgdm9pZCBkcmF3SW1hZ2VGcm9tUmVjdChIVE1MSW1hZ2VFbGVtZW50KiwgZmxvYXQgc3gs
IGZsb2F0IHN5LCBmbG9hdCBzdywgZmxvYXQgc2gsCisgICAgICAgIGZsb2F0IGR4LCBmbG9hdCBk
eSwgZmxvYXQgZHcsIGZsb2F0IGRoLCBjb25zdCBTdHJpbmcmIGNvbXBvc2l0ZU9wZXJhdGlvbik7
CisKKyAgICB2b2lkIHNldEFscGhhKGZsb2F0KTsKKworICAgIHZvaWQgc2V0Q29tcG9zaXRlT3Bl
cmF0aW9uKGNvbnN0IFN0cmluZyYpOworCisgICAgUGFzc1JlZlB0cjxDYW52YXNHcmFkaWVudD4g
Y3JlYXRlTGluZWFyR3JhZGllbnQoZmxvYXQgeDAsIGZsb2F0IHkwLCBmbG9hdCB4MSwgZmxvYXQg
eTEsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPENhbnZhc0dyYWRpZW50PiBjcmVh
dGVSYWRpYWxHcmFkaWVudChmbG9hdCB4MCwgZmxvYXQgeTAsIGZsb2F0IHIwLCBmbG9hdCB4MSwg
ZmxvYXQgeTEsIGZsb2F0IHIxLCBFeGNlcHRpb25Db2RlJik7CisgICAgUGFzc1JlZlB0cjxDYW52
YXNQYXR0ZXJuPiBjcmVhdGVQYXR0ZXJuKEhUTUxJbWFnZUVsZW1lbnQqLCBjb25zdCBTdHJpbmcm
IHJlcGV0aXRpb25UeXBlLCBFeGNlcHRpb25Db2RlJik7CisgICAgUGFzc1JlZlB0cjxDYW52YXNQ
YXR0ZXJuPiBjcmVhdGVQYXR0ZXJuKEhUTUxDYW52YXNFbGVtZW50KiwgY29uc3QgU3RyaW5nJiBy
ZXBldGl0aW9uVHlwZSwgRXhjZXB0aW9uQ29kZSYpOworCisgICAgUGFzc1JlZlB0cjxJbWFnZURh
dGE+IGNyZWF0ZUltYWdlRGF0YShQYXNzUmVmUHRyPEltYWdlRGF0YT4gaW1hZ2VEYXRhLCBFeGNl
cHRpb25Db2RlJikgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxJbWFnZURhdGE+IGNyZWF0ZUltYWdl
RGF0YShmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBFeGNlcHRpb25Db2RlJikgY29uc3Q7Cisg
ICAgUGFzc1JlZlB0cjxJbWFnZURhdGE+IGdldEltYWdlRGF0YShmbG9hdCBzeCwgZmxvYXQgc3ks
IGZsb2F0IHN3LCBmbG9hdCBzaCwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0OworICAgIHZvaWQgcHV0
SW1hZ2VEYXRhKEltYWdlRGF0YSosIGZsb2F0IGR4LCBmbG9hdCBkeSwgRXhjZXB0aW9uQ29kZSYp
OworICAgIHZvaWQgcHV0SW1hZ2VEYXRhKEltYWdlRGF0YSosIGZsb2F0IGR4LCBmbG9hdCBkeSwg
ZmxvYXQgZGlydHlYLCBmbG9hdCBkaXJ0eVksIGZsb2F0IGRpcnR5V2lkdGgsIGZsb2F0IGRpcnR5
SGVpZ2h0LCBFeGNlcHRpb25Db2RlJik7CisKKyAgICB2b2lkIHJlc2V0KCk7CisKKyAgICBTdHJp
bmcgZm9udCgpIGNvbnN0OworICAgIHZvaWQgc2V0Rm9udChjb25zdCBTdHJpbmcmKTsKKyAgICB2
b2lkIHVwZGF0ZUZvbnQoKTsKKworICAgIFN0cmluZyB0ZXh0QWxpZ24oKSBjb25zdDsKKyAgICB2
b2lkIHNldFRleHRBbGlnbihjb25zdCBTdHJpbmcmKTsKKworICAgIFN0cmluZyB0ZXh0QmFzZWxp
bmUoKSBjb25zdDsKKyAgICB2b2lkIHNldFRleHRCYXNlbGluZShjb25zdCBTdHJpbmcmKTsKKwor
ICAgIHZvaWQgZmlsbFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBmbG9hdCB4LCBmbG9hdCB5KTsK
KyAgICB2b2lkIGZpbGxUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvYXQgeSwg
ZmxvYXQgbWF4V2lkdGgpOworICAgIHZvaWQgc3Ryb2tlVGV4dChjb25zdCBTdHJpbmcmIHRleHQs
IGZsb2F0IHgsIGZsb2F0IHkpOworICAgIHZvaWQgc3Ryb2tlVGV4dChjb25zdCBTdHJpbmcmIHRl
eHQsIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IG1heFdpZHRoKTsKKyAgICBQYXNzUmVmUHRyPFRl
eHRNZXRyaWNzPiBtZWFzdXJlVGV4dChjb25zdCBTdHJpbmcmIHRleHQpOworCisgICAgTGluZUNh
cCBnZXRMaW5lQ2FwKCkgY29uc3QgeyByZXR1cm4gc3RhdGUoKS5tX2xpbmVDYXA7IH0KKyAgICBM
aW5lSm9pbiBnZXRMaW5lSm9pbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRlKCkubV9saW5lSm9pbjsg
fQorCitwcml2YXRlOgorICAgIHN0cnVjdCBTdGF0ZSB7CisgICAgICAgIFN0YXRlKCk7CisKKyAg
ICAgICAgU3RyaW5nIG1fdW5wYXJzZWRTdHJva2VDb2xvcjsKKyAgICAgICAgU3RyaW5nIG1fdW5w
YXJzZWRGaWxsQ29sb3I7CisgICAgICAgIFJlZlB0cjxDYW52YXNTdHlsZT4gbV9zdHJva2VTdHls
ZTsKKyAgICAgICAgUmVmUHRyPENhbnZhc1N0eWxlPiBtX2ZpbGxTdHlsZTsKKyAgICAgICAgZmxv
YXQgbV9saW5lV2lkdGg7CisgICAgICAgIExpbmVDYXAgbV9saW5lQ2FwOworICAgICAgICBMaW5l
Sm9pbiBtX2xpbmVKb2luOworICAgICAgICBmbG9hdCBtX21pdGVyTGltaXQ7CisgICAgICAgIEZs
b2F0U2l6ZSBtX3NoYWRvd09mZnNldDsKKyAgICAgICAgZmxvYXQgbV9zaGFkb3dCbHVyOworICAg
ICAgICBSR0JBMzIgbV9zaGFkb3dDb2xvcjsKKyAgICAgICAgZmxvYXQgbV9nbG9iYWxBbHBoYTsK
KyAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3IgbV9nbG9iYWxDb21wb3NpdGU7CisgICAgICAgIEFm
ZmluZVRyYW5zZm9ybSBtX3RyYW5zZm9ybTsKKyAgICAgICAgYm9vbCBtX2ludmVydGlibGVDVE07
CisKKyAgICAgICAgLy8gVGV4dCBzdGF0ZS4KKyAgICAgICAgVGV4dEFsaWduIG1fdGV4dEFsaWdu
OworICAgICAgICBUZXh0QmFzZWxpbmUgbV90ZXh0QmFzZWxpbmU7CisKKyAgICAgICAgU3RyaW5n
IG1fdW5wYXJzZWRGb250OworICAgICAgICBGb250IG1fZm9udDsKKyAgICAgICAgYm9vbCBtX3Jl
YWxpemVkRm9udDsKKyAgICB9OworICAgIFBhdGggbV9wYXRoOworCisgICAgU3RhdGUmIHN0YXRl
KCkgeyByZXR1cm4gbV9zdGF0ZVN0YWNrLmxhc3QoKTsgfQorICAgIGNvbnN0IFN0YXRlJiBzdGF0
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGVTdGFjay5sYXN0KCk7IH0KKworICAgIHZvaWQgYXBw
bHlTaGFkb3coKTsKKworICAgIGVudW0gQ2FudmFzV2lsbERyYXdPcHRpb24geworICAgICAgICBD
YW52YXNXaWxsRHJhd0FwcGx5VHJhbnNmb3JtID0gMSwKKyAgICAgICAgQ2FudmFzV2lsbERyYXdB
cHBseVNoYWRvdyA9IDEgPDwgMSwKKyAgICAgICAgQ2FudmFzV2lsbERyYXdBcHBseUNsaXAgPSAx
IDw8IDIsCisgICAgICAgIENhbnZhc1dpbGxEcmF3QXBwbHlBbGwgPSAweGZmZmZmZmZmCisgICAg
fTsKKworICAgIHZvaWQgd2lsbERyYXcoY29uc3QgRmxvYXRSZWN0JiwgdW5zaWduZWQgb3B0aW9u
cyA9IENhbnZhc1dpbGxEcmF3QXBwbHlBbGwpOworCisgICAgR3JhcGhpY3NDb250ZXh0KiBkcmF3
aW5nQ29udGV4dCgpIGNvbnN0OworCisgICAgdm9pZCBhcHBseVN0cm9rZVBhdHRlcm4oKTsKKyAg
ICB2b2lkIGFwcGx5RmlsbFBhdHRlcm4oKTsKKworICAgIHZvaWQgZHJhd1RleHRJbnRlcm5hbChj
b25zdCBTdHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsb2F0IHksIGJvb2wgZmlsbCwgZmxvYXQgbWF4
V2lkdGggPSAwLCBib29sIHVzZU1heFdpZHRoID0gZmFsc2UpOworCisgICAgY29uc3QgRm9udCYg
YWNjZXNzRm9udCgpOwogCiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQotICAgICAgICB2
b2lkIGNsZWFyUGF0aEZvckRhc2hib2FyZEJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUoKTsKKyAg
ICB2b2lkIGNsZWFyUGF0aEZvckRhc2hib2FyZEJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUoKTsK
ICNlbmRpZgotICAgICAgICAKLSAgICAgICAgdm9pZCBwcmVwYXJlR3JhZGllbnRGb3JEYXNoYm9h
cmQoQ2FudmFzR3JhZGllbnQqIGdyYWRpZW50KSBjb25zdDsKIAotICAgICAgICBIYXNoU2V0PFN0
cmluZz4gbV9jbGVhbk9yaWdpbnM7CisgICAgdm9pZCBwcmVwYXJlR3JhZGllbnRGb3JEYXNoYm9h
cmQoQ2FudmFzR3JhZGllbnQqIGdyYWRpZW50KSBjb25zdDsKIAotICAgICAgICB2b2lkIGNoZWNr
T3JpZ2luKGNvbnN0IEtVUkwmKTsKLSAgICAgICAgdm9pZCBjaGVja09yaWdpbihjb25zdCBTdHJp
bmcmKTsKKyAgICBIYXNoU2V0PFN0cmluZz4gbV9jbGVhbk9yaWdpbnM7CiAKLSAgICAgICAgVmVj
dG9yPFN0YXRlLCAxPiBtX3N0YXRlU3RhY2s7Ci0gICAgICAgIGJvb2wgbV91c2VzQ1NTQ29tcGF0
aWJpbGl0eVBhcnNlTW9kZTsKKyAgICB2b2lkIGNoZWNrT3JpZ2luKGNvbnN0IEtVUkwmKTsKKyAg
ICB2b2lkIGNoZWNrT3JpZ2luKGNvbnN0IFN0cmluZyYpOworCisgICAgVmVjdG9yPFN0YXRlLCAx
PiBtX3N0YXRlU3RhY2s7CisgICAgYm9vbCBtX3VzZXNDU1NDb21wYXRpYmlsaXR5UGFyc2VNb2Rl
OwogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKLSAgICAgICAgYm9vbCBtX3VzZXNEYXNo
Ym9hcmRDb21wYXRpYmlsaXR5TW9kZTsKKyAgICBib29sIG1fdXNlc0Rhc2hib2FyZENvbXBhdGli
aWxpdHlNb2RlOwogI2VuZGlmCi0gICAgfTsKK307CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>