<?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>172496</bug_id>
          
          <creation_ts>2017-05-23 02:23:00 -0700</creation_ts>
          <short_desc>[WPE] Use AcceleratedDrawingArea instead of its fork</short_desc>
          <delta_ts>2017-06-05 05:02:07 -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>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>172642</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>yoon</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1311797</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-05-23 02:23:00 -0700</bug_when>
    <thetext>WPE uses its own drawing area implementation, which is actually a fork of AcceleratedDrawingArea, but simplified for the case of compositing being always forced. AcceleratedDrawingArea already handles the case of compositing being forced, so now that WPE is upstream we could simply use AcceleratedDrawingArea instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1311798</commentid>
    <comment_count>1</comment_count>
      <attachid>310988</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-05-23 02:26:51 -0700</bug_when>
    <thetext>Created attachment 310988
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1311815</commentid>
    <comment_count>2</comment_count>
      <attachid>310988</attachid>
    <who name="Gwang Yoon Hwang">yoon</who>
    <bug_when>2017-05-23 03:53:15 -0700</bug_when>
    <thetext>Comment on attachment 310988
Patch

I&apos;m really okay for this change!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1313071</commentid>
    <comment_count>3</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-05-26 01:07:40 -0700</bug_when>
    <thetext>Committed r217479: &lt;http://trac.webkit.org/changeset/217479&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1313115</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-05-26 06:25:56 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 172642</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315639</commentid>
    <comment_count>5</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-06-05 00:16:05 -0700</bug_when>
    <thetext>This is now fine to land with the forceRepaint() being made exclusive to PLATFORM(GTK).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315675</commentid>
    <comment_count>6</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-06-05 05:02:07 -0700</bug_when>
    <thetext>Committed r217779: &lt;http://trac.webkit.org/changeset/217779&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>310988</attachid>
            <date>2017-05-23 02:26:51 -0700</date>
            <delta_ts>2017-05-23 04:43:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wpe-drawing-area.diff</filename>
            <type>text/plain</type>
            <size>24981</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA4N2UwY2E0MWY2My4uMjZkYjFmZDUxYTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMCBAQAorMjAxNy0wNS0yMyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGln
YWxpYS5jb20+CisKKyAgICAgICAgW1dQRV0gVXNlIEFjY2VsZXJhdGVkRHJhd2luZ0FyZWEgaW5z
dGVhZCBvZiBpdHMgZm9yaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTcyNDk2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgV1BFIHVzZXMgaXRzIG93biBkcmF3aW5nIGFyZWEgaW1wbGVtZW50YXRpb24sIHdo
aWNoIGlzIGFjdHVhbGx5IGEgZm9yayBvZiBBY2NlbGVyYXRlZERyYXdpbmdBcmVhLCBidXQgc2lt
cGxpZmllZAorICAgICAgICBmb3IgdGhlIGNhc2Ugb2YgY29tcG9zaXRpbmcgYmVpbmcgYWx3YXlz
IGZvcmNlZC4gQWNjZWxlcmF0ZWREcmF3aW5nQXJlYSBhbHJlYWR5IGhhbmRsZXMgdGhlIGNhc2Ug
b2YgY29tcG9zaXRpbmcKKyAgICAgICAgYmVpbmcgZm9yY2VkLCBzbyBub3cgdGhhdCBXUEUgaXMg
dXBzdHJlYW0gd2UgY291bGQgc2ltcGx5IHVzZSBBY2NlbGVyYXRlZERyYXdpbmdBcmVhIGluc3Rl
YWQuCisKKyAgICAgICAgKiBQbGF0Zm9ybVdQRS5jbWFrZToKKyAgICAgICAgKiBTaGFyZWQvRHJh
d2luZ0FyZWFJbmZvLmg6IFJlbW92ZSBEcmF3aW5nQXJlYVR5cGVXUEUgdHlwZS4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL3dwZS9EcmF3aW5nQXJlYVByb3h5V1BFLmNwcDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9EcmF3aW5nQXJlYVByb3h5V1BFLmg6IFJlbW92ZWQu
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUvUGFnZUNsaWVudEltcGwuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlRHJhd2luZ0FyZWFQcm94eSk6IENyZWF0
ZSBhbiBBY2NlbGVyYXRlZERyYXdpbmdBcmVhUHJveHkuCisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuY3BwOgorICAgICAgICAoV2ViS2l0OjpBY2Nl
bGVyYXRlZERyYXdpbmdBcmVhOjptYWluRnJhbWVDb250ZW50U2l6ZUNoYW5nZWQpOiBNb3ZlZCBm
cm9tIERyYXdpbmdBcmVhSW1wbCBzaW5jZSBpdCBhY3R1YWxseQorICAgICAgICBiZWxvbmdzIGhl
cmUuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6RHJhd2luZ0FyZWE6OmNyZWF0ZSk6IENyZWF0ZSBhbiBBY2NlbGVyYXRlZERy
YXdpbmdBcmVhIGZvciBXUEUgcG9ydC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRHJh
d2luZ0FyZWFJbXBsLmNwcDogUmVtb3ZlIG1haW5GcmFtZUNvbnRlbnRTaXplQ2hhbmdlZCgpIHRo
YXQgZG9lc24ndCBiZWxvbmcgaGVyZS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRHJh
d2luZ0FyZWFJbXBsLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL3dwZS9EcmF3aW5n
QXJlYVdQRS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL3dwZS9E
cmF3aW5nQXJlYVdQRS5oOiBSZW1vdmVkLgorCiAyMDE3LTA1LTIwICBBbGV4IENocmlzdGVuc2Vu
ICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjE1Njg2
KTogTyhuXjIpIGFsZ29yaXRobSBpbiBDYWNoZWRSYXdSZXNvdXJjZTo6YWRkRGF0YUJ1ZmZlcgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1XUEUuY21ha2UgYi9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybVdQRS5jbWFrZQppbmRleCBlNjBkYjFhY2MwMy4uZjUzMzUzYzIyOTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtV1BFLmNtYWtlCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtV1BFLmNtYWtlCkBAIC05MCw2ICs5MCw3IEBAIGxpc3QoQVBQRU5EIFdl
YktpdDJfU09VUkNFUwogICAgIFNoYXJlZC93cGUvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoV1BFLmNw
cAogICAgIFNoYXJlZC93cGUvV2ViRXZlbnRGYWN0b3J5LmNwcAogCisgICAgVUlQcm9jZXNzL0Fj
Y2VsZXJhdGVkRHJhd2luZ0FyZWFQcm94eS5jcHAKICAgICBVSVByb2Nlc3MvQmFja2luZ1N0b3Jl
LmNwcAogICAgIFVJUHJvY2Vzcy9EZWZhdWx0VW5kb0NvbnRyb2xsZXIuY3BwCiAgICAgVUlQcm9j
ZXNzL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZ05vbmUuY3BwCkBAIC0xMDUsNyArMTA2LDYgQEAg
bGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQSS9DL3dwZS9XS1Zp
ZXcuY3BwCiAKICAgICBVSVByb2Nlc3MvQVBJL3dwZS9Db21wb3NpdGluZ01hbmFnZXJQcm94eS5j
cHAKLSAgICBVSVByb2Nlc3MvQVBJL3dwZS9EcmF3aW5nQXJlYVByb3h5V1BFLmNwcAogICAgIFVJ
UHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvd3Bl
L1Njcm9sbEdlc3R1cmVDb250cm9sbGVyLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvd3BlL1dQRVZp
ZXcuY3BwCkBAIC0xNTIsNiArMTUyLDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAg
ICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC93cGUvV2ViRWRpdG9yQ2xpZW50V1BFLmNwcAog
ICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvd3BlL1dlYlBvcHVwTWVudVdQRS5jcHAKIAor
ICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZERyYXdpbmdBcmVhLmNwcAogICAgIFdl
YlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZFN1cmZhY2UuY3BwCiAKICAgICBXZWJQcm9jZXNz
L1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9BcmVhQWxsb2NhdG9yLmNwcApAQCAtMTY0LDcg
KzE2NSw2IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogCiAgICAgV2ViUHJvY2Vzcy9X
ZWJQYWdlL3dwZS9BY2NlbGVyYXRlZFN1cmZhY2VXUEUuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJQ
YWdlL3dwZS9Db21wb3NpdGluZ01hbmFnZXIuY3BwCi0gICAgV2ViUHJvY2Vzcy9XZWJQYWdlL3dw
ZS9EcmF3aW5nQXJlYVdQRS5jcHAKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2Uvd3BlL1dlYkluc3Bl
Y3RvclVJV1BFLmNwcAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS93cGUvV2ViUGFnZVdQRS5jcHAK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0RyYXdpbmdBcmVhSW5mby5oIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL0RyYXdpbmdBcmVhSW5mby5oCmluZGV4IGE0MzVlMTliYjdm
Li43ZmM0ZDdjNGIzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0RyYXdpbmdB
cmVhSW5mby5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9EcmF3aW5nQXJlYUluZm8uaApA
QCAtMzQsOCArMzQsNiBAQCBlbnVtIERyYXdpbmdBcmVhVHlwZSB7CiAgICAgRHJhd2luZ0FyZWFU
eXBlVGlsZWRDb3JlQW5pbWF0aW9uLAogI2VuZGlmCiAgICAgRHJhd2luZ0FyZWFUeXBlUmVtb3Rl
TGF5ZXJUcmVlLAotI2VsaWYgUExBVEZPUk0oV1BFKQotICAgIERyYXdpbmdBcmVhVHlwZVdQRQog
I2Vsc2UKICAgICBEcmF3aW5nQXJlYVR5cGVJbXBsCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvd3BlL0RyYXdpbmdBcmVhUHJveHlXUEUuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS93cGUvRHJhd2luZ0FyZWFQcm94eVdQRS5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3M2MwZjY3ZTJlLi4wMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3dwZS9EcmF3aW5nQXJlYVByb3h5V1BFLmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDk3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTQgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IkRyYXdpbmdBcmVhUHJveHlXUEUuaCIKLQotI2luY2x1ZGUgIkRyYXdpbmdBcmVhTWVzc2FnZXMu
aCIKLSNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKLSNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHku
aCIKLSNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJL
aXQgewotCi1EcmF3aW5nQXJlYVByb3h5V1BFOjpEcmF3aW5nQXJlYVByb3h5V1BFKFdlYlBhZ2VQ
cm94eSYgcGFnZSkKLSAgICA6IERyYXdpbmdBcmVhUHJveHkoRHJhd2luZ0FyZWFUeXBlV1BFLCBw
YWdlKQotewotfQotCi1EcmF3aW5nQXJlYVByb3h5V1BFOjp+RHJhd2luZ0FyZWFQcm94eVdQRSgp
Ci17Ci19Ci0KLXZvaWQgRHJhd2luZ0FyZWFQcm94eVdQRTo6ZGV2aWNlU2NhbGVGYWN0b3JEaWRD
aGFuZ2UoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRHJhd2luZ0FyZWFQ
cm94eVdQRTo6c2l6ZURpZENoYW5nZSgpCi17Ci0gICAgaWYgKG1fd2ViUGFnZVByb3h5LmlzVmFs
aWQoKSkKLSAgICAgICAgbV93ZWJQYWdlUHJveHkucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OkRy
YXdpbmdBcmVhOjpVcGRhdGVCYWNraW5nU3RvcmVTdGF0ZSgwLCBmYWxzZSwgbV93ZWJQYWdlUHJv
eHkuZGV2aWNlU2NhbGVGYWN0b3IoKSwgbV9zaXplLCBtX3Njcm9sbE9mZnNldCksIG1fd2ViUGFn
ZVByb3h5LnBhZ2VJRCgpKTsKLX0KLQotdm9pZCBEcmF3aW5nQXJlYVByb3h5V1BFOjpkaXNwYXRj
aEFmdGVyRW5zdXJpbmdEcmF3aW5nKHN0ZDo6ZnVuY3Rpb248dm9pZChDYWxsYmFja0Jhc2U6OkVy
cm9yKT4gY2FsbGJhY2tGdW5jdGlvbikKLXsKLSAgICBpZiAoIW1fd2ViUGFnZVByb3h5LmlzVmFs
aWQoKSkgewotICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKENhbGxiYWNrQmFzZTo6RXJyb3I6Ok93
bmVyV2FzSW52YWxpZGF0ZWQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgUnVuTG9v
cDo6bWFpbigpLmRpc3BhdGNoKAotICAgICAgICBbY2FsbGJhY2tGdW5jdGlvbl0gewotICAgICAg
ICAgICAgY2FsbGJhY2tGdW5jdGlvbihDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lKTsKLSAgICAg
ICAgfSk7Ci19Ci0KLXZvaWQgRHJhd2luZ0FyZWFQcm94eVdQRTo6dXBkYXRlKHVpbnQ2NF90IGJh
Y2tpbmdTdG9yZVN0YXRlSUQsIGNvbnN0IFVwZGF0ZUluZm8mKQotewotICAgIG5vdEltcGxlbWVu
dGVkKCk7Ci19Ci0KLXZvaWQgRHJhd2luZ0FyZWFQcm94eVdQRTo6ZGlkVXBkYXRlQmFja2luZ1N0
b3JlU3RhdGUodWludDY0X3QgYmFja2luZ1N0b3JlU3RhdGVJRCwgY29uc3QgVXBkYXRlSW5mbyYs
IGNvbnN0IExheWVyVHJlZUNvbnRleHQmKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0K
LXZvaWQgRHJhd2luZ0FyZWFQcm94eVdQRTo6ZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9k
ZSh1aW50NjRfdCBiYWNraW5nU3RvcmVTdGF0ZUlELCBjb25zdCBMYXllclRyZWVDb250ZXh0JiBs
YXllclRyZWVDb250ZXh0KQotewotICAgIEFTU0VSVCghYmFja2luZ1N0b3JlU3RhdGVJRCk7Ci0K
LSAgICBtX2xheWVyVHJlZUNvbnRleHQgPSBsYXllclRyZWVDb250ZXh0OwotICAgIG1fd2ViUGFn
ZVByb3h5LmVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUobGF5ZXJUcmVlQ29udGV4dCk7
Ci19Ci0KLXZvaWQgRHJhd2luZ0FyZWFQcm94eVdQRTo6ZXhpdEFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdNb2RlKHVpbnQ2NF90IGJhY2tpbmdTdG9yZVN0YXRlSUQsIGNvbnN0IFVwZGF0ZUluZm8mKQot
ewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRHJhd2luZ0FyZWFQcm94eVdQRTo6
dXBkYXRlQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUodWludDY0X3QgYmFja2luZ1N0b3JlU3Rh
dGVJRCwgY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
LX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3dwZS9EcmF3aW5nQXJlYVByb3h5V1BFLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3dwZS9EcmF3aW5nQXJlYVByb3h5V1BFLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDFmNDI3YjRjYTI5Li4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL3dwZS9EcmF3aW5nQXJlYVByb3h5V1BFLmgKKysrIC9kZXYvbnVsbApA
QCAtMSw1NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiRHJhd2luZ0FyZWFQcm94eS5oIgot
Ci0jaW5jbHVkZSAiTGF5ZXJUcmVlQ29udGV4dC5oIgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQot
Y2xhc3MgRHJhd2luZ0FyZWFQcm94eVdQRSBmaW5hbCA6IHB1YmxpYyBEcmF3aW5nQXJlYVByb3h5
IHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBEcmF3aW5nQXJlYVByb3h5V1BFKFdlYlBhZ2VQcm94
eSYpOwotICAgIHZpcnR1YWwgfkRyYXdpbmdBcmVhUHJveHlXUEUoKTsKLQotcHJpdmF0ZToKLSAg
ICAvLyBEcmF3aW5nQXJlYVByb3h5Ci0gICAgdm9pZCBkZXZpY2VTY2FsZUZhY3RvckRpZENoYW5n
ZSgpIG92ZXJyaWRlOwotICAgIHZvaWQgc2l6ZURpZENoYW5nZSgpIG92ZXJyaWRlOwotICAgIHZv
aWQgZGlzcGF0Y2hBZnRlckVuc3VyaW5nRHJhd2luZyhzdGQ6OmZ1bmN0aW9uPHZvaWQoQ2FsbGJh
Y2tCYXNlOjpFcnJvcik+KSBvdmVycmlkZTsKLQotICAgIC8vIElQQyBtZXNzYWdlIGhhbmRsZXJz
Ci0gICAgdm9pZCB1cGRhdGUodWludDY0X3QgYmFja2luZ1N0b3JlU3RhdGVJRCwgY29uc3QgVXBk
YXRlSW5mbyYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkVXBkYXRlQmFja2luZ1N0b3JlU3RhdGUo
dWludDY0X3QgYmFja2luZ1N0b3JlU3RhdGVJRCwgY29uc3QgVXBkYXRlSW5mbyYsIGNvbnN0IExh
eWVyVHJlZUNvbnRleHQmKSBvdmVycmlkZTsKLSAgICB2b2lkIGVudGVyQWNjZWxlcmF0ZWRDb21w
b3NpdGluZ01vZGUodWludDY0X3QgYmFja2luZ1N0b3JlU3RhdGVJRCwgY29uc3QgTGF5ZXJUcmVl
Q29udGV4dCYpIG92ZXJyaWRlOwotICAgIHZvaWQgZXhpdEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdN
b2RlKHVpbnQ2NF90IGJhY2tpbmdTdG9yZVN0YXRlSUQsIGNvbnN0IFVwZGF0ZUluZm8mKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHVwZGF0ZUFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKHVpbnQ2NF90
IGJhY2tpbmdTdG9yZVN0YXRlSUQsIGNvbnN0IExheWVyVHJlZUNvbnRleHQmKSBvdmVycmlkZTsK
LQotICAgIC8vIFRoZSBjdXJyZW50IGxheWVyIHRyZWUgY29udGV4dC4KLSAgICBMYXllclRyZWVD
b250ZXh0IG1fbGF5ZXJUcmVlQ29udGV4dDsKLX07Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmNwcAppbmRleCAzMTYzOTQ5YjJh
ZC4uYzY1YjRkNmJjNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
d3BlL1BhZ2VDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L3dwZS9QYWdlQ2xpZW50SW1wbC5jcHAKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJQYWdlQ2xpZW50SW1wbC5oIgogCi0jaW5jbHVkZSAiRHJhd2luZ0Fy
ZWFQcm94eVdQRS5oIgorI2luY2x1ZGUgIkFjY2VsZXJhdGVkRHJhd2luZ0FyZWFQcm94eS5oIgog
I2luY2x1ZGUgIk5hdGl2ZVdlYk1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJOYXRpdmVXZWJXaGVl
bEV2ZW50LmgiCiAjaW5jbHVkZSAiU2Nyb2xsR2VzdHVyZUNvbnRyb2xsZXIuaCIKQEAgLTQ3LDcg
KzQ3LDcgQEAgUGFnZUNsaWVudEltcGw6On5QYWdlQ2xpZW50SW1wbCgpID0gZGVmYXVsdDsKIAog
c3RkOjp1bmlxdWVfcHRyPERyYXdpbmdBcmVhUHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVE
cmF3aW5nQXJlYVByb3h5KCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEcmF3aW5n
QXJlYVByb3h5V1BFPihtX3ZpZXcucGFnZSgpKTsKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxBY2NlbGVyYXRlZERyYXdpbmdBcmVhUHJveHk+KG1fdmlldy5wYWdlKCkpOwogfQogCiB2b2lk
IFBhZ2VDbGllbnRJbXBsOjpzZXRWaWV3TmVlZHNEaXNwbGF5KGNvbnN0IFdlYkNvcmU6OlJlZ2lv
biYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxl
cmF0ZWREcmF3aW5nQXJlYS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
QWNjZWxlcmF0ZWREcmF3aW5nQXJlYS5jcHAKaW5kZXggYjk2M2FkOGY2YjkuLjRkMDdlMmUwM2U0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0
ZWREcmF3aW5nQXJlYS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuY3BwCkBAIC0xNjIsNiArMTYyLDExIEBAIHZvaWQgQWNj
ZWxlcmF0ZWREcmF3aW5nQXJlYTo6bWFpbkZyYW1lQ29udGVudFNpemVDaGFuZ2VkKGNvbnN0IElu
dFNpemUmIHNpemUpCiAgICAgICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNpemVEaWRDaGFuZ2Uo
c2l6ZSk7CiAgICAgICAgIGVsc2UgaWYgKG1fcHJldmlvdXNMYXllclRyZWVIb3N0KQogICAgICAg
ICAgICAgbV9wcmV2aW91c0xheWVyVHJlZUhvc3QtPnNpemVEaWRDaGFuZ2Uoc2l6ZSk7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgaWYgKG1fbGF5ZXJUcmVlSG9zdCkKKyAgICAgICAgICAgIG1fbGF5
ZXJUcmVlSG9zdC0+Y29udGVudHNTaXplQ2hhbmdlZChzaXplKTsKKyAgICAgICAgZWxzZSBpZiAo
bV9wcmV2aW91c0xheWVyVHJlZUhvc3QpCisgICAgICAgICAgICBtX3ByZXZpb3VzTGF5ZXJUcmVl
SG9zdC0+Y29udGVudHNTaXplQ2hhbmdlZChzaXplKTsKICAgICB9CiAgICAgbV93ZWJQYWdlLm1h
aW5GcmFtZSgpLT5wYWdlT3ZlcmxheUNvbnRyb2xsZXIoKS5kaWRDaGFuZ2VEb2N1bWVudFNpemUo
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3
aW5nQXJlYS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0Fy
ZWEuY3BwCmluZGV4IDVmMDkzYWM3YjU2Li41YWQ1YjRiMmYyMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuY3BwCkBAIC0zOCw3ICszOCw3
IEBACiAjaW5jbHVkZSAiUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaCIKICNpbmNsdWRlICJU
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oIgogI2VsaWYgUExBVEZPUk0oV1BFKQotI2lu
Y2x1ZGUgIkRyYXdpbmdBcmVhV1BFLmgiCisjaW5jbHVkZSAiQWNjZWxlcmF0ZWREcmF3aW5nQXJl
YS5oIgogI2Vsc2UKICNpbmNsdWRlICJEcmF3aW5nQXJlYUltcGwuaCIKICNlbmRpZgpAQCAtNTcs
MTMgKzU3LDE0IEBAIHN0ZDo6dW5pcXVlX3B0cjxEcmF3aW5nQXJlYT4gRHJhd2luZ0FyZWE6OmNy
ZWF0ZShXZWJQYWdlJiB3ZWJQYWdlLCBjb25zdCBXZWJQYWdlCiAjZW5kaWYKICAgICBjYXNlIERy
YXdpbmdBcmVhVHlwZVJlbW90ZUxheWVyVHJlZToKICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE+KHdlYlBhZ2UsIHBhcmFtZXRlcnMpOwot
I2VsaWYgUExBVEZPUk0oV1BFKQotICAgIGNhc2UgRHJhd2luZ0FyZWFUeXBlV1BFOgotICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEcmF3aW5nQXJlYVdQRT4od2ViUGFnZSwgcGFyYW1l
dGVycyk7CiAjZWxzZQogICAgIGNhc2UgRHJhd2luZ0FyZWFUeXBlSW1wbDoKKyNpZiBQTEFURk9S
TShXUEUpCisgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEFjY2VsZXJhdGVkRHJhd2lu
Z0FyZWE+KHdlYlBhZ2UsIHBhcmFtZXRlcnMpOworI2Vsc2UKICAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8RHJhd2luZ0FyZWFJbXBsPih3ZWJQYWdlLCBwYXJhbWV0ZXJzKTsKICNlbmRp
ZgorI2VuZGlmCiAgICAgfQogCiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3BwCmluZGV4IDM2
OTEyNzcwNTRhLi4wMzE1MjI4MGJmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5jcHAKQEAgLTE2OSwxOCArMTY5LDYgQEAg
dm9pZCBEcmF3aW5nQXJlYUltcGw6OmZvcmNlUmVwYWludCgpCiAgICAgfQogfQogCi12b2lkIERy
YXdpbmdBcmVhSW1wbDo6bWFpbkZyYW1lQ29udGVudFNpemVDaGFuZ2VkKGNvbnN0IFdlYkNvcmU6
OkludFNpemUmIG5ld1NpemUpCi17Ci0jaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVB
REVEKQotICAgIGlmIChtX2xheWVyVHJlZUhvc3QpCi0gICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+
Y29udGVudHNTaXplQ2hhbmdlZChuZXdTaXplKTsKLSAgICBlbHNlIGlmIChtX3ByZXZpb3VzTGF5
ZXJUcmVlSG9zdCkKLSAgICAgICAgbV9wcmV2aW91c0xheWVyVHJlZUhvc3QtPmNvbnRlbnRzU2l6
ZUNoYW5nZWQobmV3U2l6ZSk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShuZXdTaXplKTsKLSNl
bmRpZgotfQotCiB2b2lkIERyYXdpbmdBcmVhSW1wbDo6dXBkYXRlUHJlZmVyZW5jZXMoY29uc3Qg
V2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCiB7CiAgICAgU2V0dGluZ3MmIHNldHRpbmdzID0g
bV93ZWJQYWdlLmNvcmVQYWdlKCktPnNldHRpbmdzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmggYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmgKaW5kZXggM2ZjZTBhN2E3NWQu
LjU3YzI5MTQ5NGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvRHJhd2luZ0FyZWFJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0RyYXdpbmdBcmVhSW1wbC5oCkBAIC00OSw3ICs0OSw2IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBzY3JvbGwoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc2Nyb2xsUmVjdCwgY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYgc2Nyb2xsRGVsdGEpIG92ZXJyaWRlOwogICAgIHZvaWQgZm9yY2VSZXBhaW50
KCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIG1haW5GcmFtZUNvbnRlbnRTaXplQ2hhbmdlZChjb25z
dCBXZWJDb3JlOjpJbnRTaXplJikgb3ZlcnJpZGU7CiAgICAgdm9pZCB1cGRhdGVQcmVmZXJlbmNl
cyhjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHNldFJv
b3RDb21wb3NpdGluZ0xheWVyKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKSBvdmVycmlkZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS93cGUvRHJhd2luZ0Fy
ZWFXUEUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3dwZS9EcmF3aW5n
QXJlYVdQRS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNhNmMwZmE0ZTZkLi4w
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uvd3BlL0Ry
YXdpbmdBcmVhV1BFLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIwMCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE1IElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJEcmF3aW5nQXJlYVdQRS5oIgotCi0jaW5jbHVkZSAiRHJhd2luZ0Fy
ZWFQcm94eU1lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiV2ViUGFnZS5oIgotI2luY2x1ZGUgIldlYlBy
ZWZlcmVuY2VzS2V5cy5oIgotI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzU3RvcmUuaCIKLSNpbmNs
dWRlIDxXZWJDb3JlL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5oPgotI2luY2x1ZGUgPFdlYkNvcmUv
TWFpbkZyYW1lLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgotI2luY2x1
ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5h
bWVzcGFjZSBXZWJLaXQgewotCi1EcmF3aW5nQXJlYVdQRTo6RHJhd2luZ0FyZWFXUEUoV2ViUGFn
ZSYgd2ViUGFnZSwgY29uc3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYpCi0gICAgOiBEcmF3
aW5nQXJlYShEcmF3aW5nQXJlYVR5cGVXUEUsIHdlYlBhZ2UpCi17Ci0gICAgd2ViUGFnZS5jb3Jl
UGFnZSgpLT5zZXR0aW5ncygpLnNldEZvcmNlQ29tcG9zaXRpbmdNb2RlKHRydWUpOwotICAgIGVu
dGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoMCk7Ci19Ci0KLURyYXdpbmdBcmVhV1BFOjp+
RHJhd2luZ0FyZWFXUEUoKQotewotfQotCi12b2lkIERyYXdpbmdBcmVhV1BFOjpsYXllckhvc3RE
aWRGbHVzaExheWVycygpCi17Ci0gICAgbV93ZWJQYWdlLnNlbmQoTWVzc2FnZXM6OkRyYXdpbmdB
cmVhUHJveHk6OkVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoMCwgbV9sYXllclRyZWVI
b3N0LT5sYXllclRyZWVDb250ZXh0KCkpKTsKLX0KLQotdm9pZCBEcmF3aW5nQXJlYVdQRTo6c2V0
TmVlZHNEaXNwbGF5KCkKLXsKLSAgICBBU1NFUlQobV9sYXllclRyZWVIb3N0KTsKLSAgICBtX2xh
eWVyVHJlZUhvc3QtPnNldE5vbkNvbXBvc2l0ZWRDb250ZW50c05lZWREaXNwbGF5KCk7Ci19Ci0K
LXZvaWQgRHJhd2luZ0FyZWFXUEU6OnNldE5lZWRzRGlzcGxheUluUmVjdChjb25zdCBJbnRSZWN0
JiByZWN0KQotewotICAgIEFTU0VSVChtX2xheWVyVHJlZUhvc3QpOwotICAgIG1fbGF5ZXJUcmVl
SG9zdC0+c2V0Tm9uQ29tcG9zaXRlZENvbnRlbnRzTmVlZERpc3BsYXlJblJlY3QocmVjdCk7Ci19
Ci0KLXZvaWQgRHJhd2luZ0FyZWFXUEU6OnNjcm9sbChjb25zdCBJbnRSZWN0JiBzY3JvbGxSZWN0
LCBjb25zdCBJbnRTaXplJikKLXsKLSAgICBBU1NFUlQobV9sYXllclRyZWVIb3N0KTsKLSAgICBt
X2xheWVyVHJlZUhvc3QtPnNjcm9sbE5vbkNvbXBvc2l0ZWRDb250ZW50cyhzY3JvbGxSZWN0KTsK
LX0KLQotdm9pZCBEcmF3aW5nQXJlYVdQRTo6cGFnZUJhY2tncm91bmRUcmFuc3BhcmVuY3lDaGFu
Z2VkKCkKLXsKLSAgICBpZiAobV9sYXllclRyZWVIb3N0KQotICAgICAgICBtX2xheWVyVHJlZUhv
c3QtPnBhZ2VCYWNrZ3JvdW5kVHJhbnNwYXJlbmN5Q2hhbmdlZCgpOwotfQotCi12b2lkIERyYXdp
bmdBcmVhV1BFOjpmb3JjZVJlcGFpbnQoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0K
LWJvb2wgRHJhd2luZ0FyZWFXUEU6OmZvcmNlUmVwYWludEFzeW5jKHVpbnQ2NF90IGNhbGxiYWNr
SUQpCi17Ci0gICAgcmV0dXJuIG1fbGF5ZXJUcmVlSG9zdCAmJiBtX2xheWVyVHJlZUhvc3QtPmZv
cmNlUmVwYWludEFzeW5jKGNhbGxiYWNrSUQpOwotfQotCi12b2lkIERyYXdpbmdBcmVhV1BFOjpz
ZXRMYXllclRyZWVTdGF0ZUlzRnJvemVuKGJvb2wgZnJvemVuKQotewotICAgIG1fbGF5ZXJUcmVl
U3RhdGVJc0Zyb3plbiA9IGZyb3plbjsKLX0KLQotdm9pZCBEcmF3aW5nQXJlYVdQRTo6c2V0UGFp
bnRpbmdFbmFibGVkKGJvb2wpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBE
cmF3aW5nQXJlYVdQRTo6dXBkYXRlUHJlZmVyZW5jZXMoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9y
ZSYgc3RvcmUpCi17Ci0gICAgbV93ZWJQYWdlLmNvcmVQYWdlKCktPnNldHRpbmdzKCkuc2V0Rm9y
Y2VDb21wb3NpdGluZ01vZGUoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2Vz
S2V5Ojpmb3JjZUNvbXBvc2l0aW5nTW9kZUtleSgpKSk7Ci19Ci0KLXZvaWQgRHJhd2luZ0FyZWFX
UEU6Om1haW5GcmFtZUNvbnRlbnRTaXplQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBz
aXplKQotewotICAgIGlmIChtX2xheWVyVHJlZUhvc3QpCi0gICAgICAgIG1fbGF5ZXJUcmVlSG9z
dC0+Y29udGVudHNTaXplQ2hhbmdlZChzaXplKTsKLX0KLQotR3JhcGhpY3NMYXllckZhY3Rvcnkq
IERyYXdpbmdBcmVhV1BFOjpncmFwaGljc0xheWVyRmFjdG9yeSgpCi17Ci0gICAgaWYgKG1fbGF5
ZXJUcmVlSG9zdCkKLSAgICAgICAgcmV0dXJuIG1fbGF5ZXJUcmVlSG9zdC0+Z3JhcGhpY3NMYXll
ckZhY3RvcnkoKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotdm9pZCBEcmF3aW5nQXJlYVdQ
RTo6c2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIoR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllcikK
LXsKLSAgICBBU1NFUlQobV9sYXllclRyZWVIb3N0KTsKLSAgICBtX2xheWVyVHJlZUhvc3QtPnNl
dFJvb3RDb21wb3NpdGluZ0xheWVyKGdyYXBoaWNzTGF5ZXIpOwotfQotCi12b2lkIERyYXdpbmdB
cmVhV1BFOjpzY2hlZHVsZUNvbXBvc2l0aW5nTGF5ZXJGbHVzaCgpCi17Ci0gICAgaWYgKG1fbGF5
ZXJUcmVlSG9zdCkKLSAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zY2hlZHVsZUxheWVyRmx1c2go
KTsKLX0KLQotdm9pZCBEcmF3aW5nQXJlYVdQRTo6c2NoZWR1bGVDb21wb3NpdGluZ0xheWVyRmx1
c2hJbW1lZGlhdGVseSgpCi17Ci0gICAgc2NoZWR1bGVDb21wb3NpdGluZ0xheWVyRmx1c2goKTsK
LX0KLQotI2lmIFVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklUT1IpCi1S
ZWZQdHI8V2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yPiBEcmF3aW5nQXJlYVdQRTo6Y3Jl
YXRlRGlzcGxheVJlZnJlc2hNb25pdG9yKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCkKLXsK
LSAgICBpZiAobV9sYXllclRyZWVIb3N0KQotICAgICAgICByZXR1cm4gbV9sYXllclRyZWVIb3N0
LT5jcmVhdGVEaXNwbGF5UmVmcmVzaE1vbml0b3IoZGlzcGxheUlEKTsKLQotICAgIHJldHVybiBu
dWxscHRyOwotfQotI2VuZGlmCi0KLXZvaWQgRHJhd2luZ0FyZWFXUEU6OmF0dGFjaFZpZXdPdmVy
bGF5R3JhcGhpY3NMYXllcihXZWJDb3JlOjpGcmFtZSogZnJhbWUsIFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXIqIHZpZXdPdmVybGF5Um9vdExheWVyKQotewotICAgIGlmICghZnJhbWUtPmlzTWFpbkZy
YW1lKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIEFTU0VSVChtX2xheWVyVHJlZUhvc3QpOwot
ICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Vmlld092ZXJsYXlSb290TGF5ZXIodmlld092ZXJsYXlS
b290TGF5ZXIpOwotfQotCi0jaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQot
dm9pZCBEcmF3aW5nQXJlYVdQRTo6ZGlkQ2hhbmdlVmlld3BvcnRBdHRyaWJ1dGVzKFdlYkNvcmU6
OlZpZXdwb3J0QXR0cmlidXRlcyYmKQotewotfQotI2VuZGlmCi0KLSNpZiBVU0UoQ09PUkRJTkFU
RURfR1JBUEhJQ1MpIHx8IFVTRShURVhUVVJFX01BUFBFUikKLXZvaWQgRHJhd2luZ0FyZWFXUEU6
OmRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCgpCi17Ci19Ci0jZW5kaWYKLQotdm9pZCBE
cmF3aW5nQXJlYVdQRTo6dXBkYXRlQmFja2luZ1N0b3JlU3RhdGUodWludDY0X3QsIGJvb2wsIGZs
b2F0IGRldmljZVNjYWxlRmFjdG9yLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplLCBjb25z
dCBXZWJDb3JlOjpJbnRTaXplJiBzY3JvbGxPZmZzZXQpCi17Ci0gICAgbV93ZWJQYWdlLnNldERl
dmljZVNjYWxlRmFjdG9yKGRldmljZVNjYWxlRmFjdG9yKTsKLSAgICBtX3dlYlBhZ2Uuc2V0U2l6
ZShzaXplKTsKLSAgICBtX3dlYlBhZ2UubGF5b3V0SWZOZWVkZWQoKTsKLSAgICBtX3dlYlBhZ2Uu
c2Nyb2xsTWFpbkZyYW1lSWZOb3RBdE1heFNjcm9sbFBvc2l0aW9uKHNjcm9sbE9mZnNldCk7Ci0K
LSAgICBBU1NFUlQobV9sYXllclRyZWVIb3N0KTsKLSAgICBtX2xheWVyVHJlZUhvc3QtPnNpemVE
aWRDaGFuZ2UobV93ZWJQYWdlLnNpemUoKSk7Ci19Ci0KLXZvaWQgRHJhd2luZ0FyZWFXUEU6OmRp
ZFVwZGF0ZSgpCi17Ci19Ci0KLXZvaWQgRHJhd2luZ0FyZWFXUEU6OmVudGVyQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ01vZGUoR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllcikKLXsKLSAgICBBU1NF
UlQoIW1fbGF5ZXJUcmVlSG9zdCk7Ci0gICAgbV9sYXllclRyZWVIb3N0ID0gTGF5ZXJUcmVlSG9z
dDo6Y3JlYXRlKG1fd2ViUGFnZSk7Ci0gICAgbV9sYXllclRyZWVIb3N0LT5zZXRSb290Q29tcG9z
aXRpbmdMYXllcihncmFwaGljc0xheWVyKTsKLSAgICBtX2xheWVyVHJlZUhvc3QtPnNldFNob3Vs
ZE5vdGlmeUFmdGVyTmV4dFNjaGVkdWxlZExheWVyRmx1c2godHJ1ZSk7Ci0gICAgbV9sYXllclRy
ZWVIb3N0LT5zaXplRGlkQ2hhbmdlKG1fd2ViUGFnZS5zaXplKCkpOwotfQotCi0jaWYgVVNFKENP
T1JESU5BVEVEX0dSQVBISUNTKQotdm9pZCBEcmF3aW5nQXJlYVdQRTo6cmVzZXRVcGRhdGVBdGxh
c0ZvclRlc3RpbmcoKQotewotICAgIEFTU0VSVChtX2xheWVyVHJlZUhvc3QpOwotICAgIG1fbGF5
ZXJUcmVlSG9zdC0+Y2xlYXJVcGRhdGVBdGxhc2VzKCk7Ci19Ci0jZW5kaWYKLQotfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2Uvd3BlL0RyYXdpbmdBcmVhV1BFLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2Uvd3BlL0RyYXdpbmdBcmVhV1BFLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlh
ZDJkM2IyZTBlLi4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2Uvd3BlL0RyYXdpbmdBcmVhV1BFLmgKKysrIC9kZXYvbnVsbApAQCAtMSw5MSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFn
bWEgb25jZQotCi0jaW5jbHVkZSAiRHJhd2luZ0FyZWEuaCIKLQotI2luY2x1ZGUgIkxheWVyVHJl
ZUhvc3QuaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIERyYXdpbmdBcmVhV1BFIDog
cHVibGljIERyYXdpbmdBcmVhIHsKLXB1YmxpYzoKLSAgICBEcmF3aW5nQXJlYVdQRShXZWJQYWdl
JiwgY29uc3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYpOwotICAgIHZpcnR1YWwgfkRyYXdp
bmdBcmVhV1BFKCk7Ci0KLSAgICB2b2lkIGxheWVySG9zdERpZEZsdXNoTGF5ZXJzKCkgb3ZlcnJp
ZGU7Ci0KLXByaXZhdGU6Ci0gICAgLy8gRHJhd2luZ0FyZWEKLSAgICB2b2lkIHNldE5lZWRzRGlz
cGxheSgpIG92ZXJyaWRlOwotICAgIHZvaWQgc2V0TmVlZHNEaXNwbGF5SW5SZWN0KGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmKSBvdmVycmlkZTsKLSAgICB2b2lkIHNjcm9sbChjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiBzY3JvbGxSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzY3JvbGxEZWx0
YSkgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIHBhZ2VCYWNrZ3JvdW5kVHJhbnNwYXJlbmN5Q2hhbmdl
ZCgpIG92ZXJyaWRlOwotICAgIHZvaWQgZm9yY2VSZXBhaW50KCkgb3ZlcnJpZGU7Ci0gICAgYm9v
bCBmb3JjZVJlcGFpbnRBc3luYyh1aW50NjRfdCBjYWxsYmFja0lEKSBvdmVycmlkZTsKLSAgICB2
b2lkIHNldExheWVyVHJlZVN0YXRlSXNGcm96ZW4oYm9vbCkgb3ZlcnJpZGU7Ci0gICAgYm9vbCBs
YXllclRyZWVTdGF0ZUlzRnJvemVuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9sYXllclRy
ZWVTdGF0ZUlzRnJvemVuOyB9Ci0gICAgTGF5ZXJUcmVlSG9zdCogbGF5ZXJUcmVlSG9zdCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fbGF5ZXJUcmVlSG9zdC5nZXQoKTsgfQotCi0gICAgdm9p
ZCBzZXRQYWludGluZ0VuYWJsZWQoYm9vbCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCB1cGRhdGVQcmVm
ZXJlbmNlcyhjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBt
YWluRnJhbWVDb250ZW50U2l6ZUNoYW5nZWQoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpIG92ZXJy
aWRlOwotCi0gICAgV2ViQ29yZTo6R3JhcGhpY3NMYXllckZhY3RvcnkqIGdyYXBoaWNzTGF5ZXJG
YWN0b3J5KCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRSb290Q29tcG9zaXRpbmdMYXllcihXZWJD
b3JlOjpHcmFwaGljc0xheWVyKikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzY2hlZHVsZUNvbXBvc2l0
aW5nTGF5ZXJGbHVzaCgpIG92ZXJyaWRlOwotICAgIHZvaWQgc2NoZWR1bGVDb21wb3NpdGluZ0xh
eWVyRmx1c2hJbW1lZGlhdGVseSgpIG92ZXJyaWRlOwotCi0jaWYgVVNFKFJFUVVFU1RfQU5JTUFU
SU9OX0ZSQU1FX0RJU1BMQVlfTU9OSVRPUikKLSAgICBSZWZQdHI8V2ViQ29yZTo6RGlzcGxheVJl
ZnJlc2hNb25pdG9yPiBjcmVhdGVEaXNwbGF5UmVmcmVzaE1vbml0b3IoV2ViQ29yZTo6UGxhdGZv
cm1EaXNwbGF5SUQpIG92ZXJyaWRlOwotI2VuZGlmCi0KLSAgICB2b2lkIGF0dGFjaFZpZXdPdmVy
bGF5R3JhcGhpY3NMYXllcihXZWJDb3JlOjpGcmFtZSosIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIq
KSBvdmVycmlkZTsKLQotI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKLSAg
ICB2b2lkIGRpZENoYW5nZVZpZXdwb3J0QXR0cmlidXRlcyhXZWJDb3JlOjpWaWV3cG9ydEF0dHJp
YnV0ZXMmJikgb3ZlcnJpZGU7Ci0jZW5kaWYKLQotI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElD
UykgfHwgVVNFKFRFWFRVUkVfTUFQUEVSKQotICAgIHZvaWQgZGV2aWNlT3JQYWdlU2NhbGVGYWN0
b3JDaGFuZ2VkKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZXNldFVwZGF0ZUF0bGFzRm9yVGVzdGlu
ZygpIG92ZXJyaWRlOwotI2VuZGlmCi0KLSAgICB2b2lkIHVwZGF0ZUJhY2tpbmdTdG9yZVN0YXRl
KHVpbnQ2NF90LCBib29sLCBmbG9hdCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIGNvbnN0IFdl
YkNvcmU6OkludFNpemUmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFVwZGF0ZSgpIG92ZXJyaWRl
OwotCi0gICAgdm9pZCBlbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXIqKTsKLQotICAgIC8vIFdoZW4gdHJ1ZSwgd2UgbWFpbnRhaW4gdGhlIGxheWVy
IHRyZWUgaW4gaXRzIGN1cnJlbnQgc3RhdGUgYnkgbm90IGxlYXZpbmcgYWNjZWxlcmF0ZWQgY29t
cG9zaXRpbmcgbW9kZQotICAgIC8vIGFuZCBub3Qgc2NoZWR1bGluZyBsYXllciBmbHVzaGVzLgot
ICAgIGJvb2wgbV9sYXllclRyZWVTdGF0ZUlzRnJvemVuIHsgZmFsc2UgfTsKLQotICAgIC8vIFRo
ZSBsYXllciB0cmVlIGhvc3QgdGhhdCBoYW5kbGVzIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nLgot
ICAgIFJlZlB0cjxMYXllclRyZWVIb3N0PiBtX2xheWVyVHJlZUhvc3Q7Ci19OwotCi19IC8vIG5h
bWVzcGFjZSBXZWJLaXQK
</data>
<flag name="review"
          id="332025"
          type_id="1"
          status="+"
          setter="zan"
    />
          </attachment>
      

    </bug>

</bugzilla>