<?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>29905</bug_id>
          
          <creation_ts>2009-09-29 16:11:47 -0700</creation_ts>
          <short_desc>WebKit Win API should provide a delegate interface for global history (7263394)</short_desc>
          <delta_ts>2009-10-22 07:57:38 -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>History</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows 2000</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>aroben</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>151092</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2009-09-29 16:11:47 -0700</bug_when>
    <thetext>Managing the Global History store is something that WebKit client&apos;s should be able to do if they choose.

WebKit Win API should provide a delegate interface for global history, using it instead of the built-in WebHistory if the interface is implemented.

In radar as &lt;rdar://problem/7042773&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151158</commentid>
    <comment_count>1</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2009-09-29 20:02:53 -0700</bug_when>
    <thetext>Now in Radar as 7263394</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>154416</commentid>
    <comment_count>2</comment_count>
      <attachid>41123</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2009-10-13 13:35:07 -0700</bug_when>
    <thetext>Created attachment 41123
Proposed fix v1 (previous layout tests are now enabled and pass)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156884</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2009-10-22 07:57:38 -0700</bug_when>
    <thetext>Committed r49564: &lt;http://trac.webkit.org/changeset/49564&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41123</attachid>
            <date>2009-10-13 13:35:07 -0700</date>
            <delta_ts>2009-10-13 14:24:12 -0700</delta_ts>
            <desc>Proposed fix v1 (previous layout tests are now enabled and pass)</desc>
            <filename>patch-5.txt</filename>
            <type>text/plain</type>
            <size>50238</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vQ2hh
bmdlTG9nICAgIChyZXZpc2lvbiA0OTUwNSkKKysrIFdlYktpdC93aW4vQ2hhbmdlTG9nICAgICh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTkgQEAKKzIwMDktMTAtMTMgIEJyYWR5IEVpZHNvbiAg
PGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFdlYktpdCBXaW4gQVBJIHNob3VsZCBwcm92aWRlIGEgZGVsZWdhdGUgaW50
ZXJmYWNlIGZvciBnbG9iYWwgaGlzdG9yeS4KKyAgICAgICAgCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yOTkwNQorCisgICAgICAgIC1BZGQgSVdlYkhp
c3RvcnlEZWxlZ2F0ZSBmb3IgY2xpZW50cyB0byBpbXBsZW1lbnQuCisgICAgICAgIC1BZGQgKEkp
V2ViTmF2aWdhdGlvbkRhdGEgZm9yIHRoZSBoaXN0b3J5IGRlbGVnYXRlJ3MgdXNlLgorICAgICAg
ICAtV2hlbiBpdCBleGlzdHMsIGNhbGwgdGhlIGhpc3RvcnkgZGVsZWdhdGUgaW5zdGVhZCBvZiB1
c2luZyBXZWJIaXN0b3J5LgorICAgICAgICAKKyAgICAgICAgKiBJbnRlcmZhY2VzL0lXZWJIaXN0
b3J5RGVsZWdhdGUuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBJbnRlcmZhY2VzL0lXZWJIaXN0b3J5
UHJpdmF0ZS5pZGw6CisgICAgICAgICogSW50ZXJmYWNlcy9JV2ViTmF2aWdhdGlvbkRhdGEuaWRs
OiBBZGRlZC4KKyAgICAgICAgKiBJbnRlcmZhY2VzL0lXZWJWaWV3UHJpdmF0ZS5pZGw6CisgICAg
ICAgICogSW50ZXJmYWNlcy9XZWJLaXQuaWRsOgorICAgICAgICAKKyAgICAgICAgKiBXZWJLaXQu
dmNwcm9qL0ludGVyZmFjZXMudmNwcm9qOgorICAgICAgICAqIFdlYktpdC52Y3Byb2ovV2ViS2l0
LnZjcHJvajoKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6
CisgICAgICAgIChXZWJDaHJvbWVDbGllbnQ6OnBvcHVsYXRlVmlzaXRlZExpbmtzKToKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChX
ZWJGcmFtZUxvYWRlckNsaWVudDo6dXBkYXRlR2xvYmFsSGlzdG9yeSk6CisgICAgICAgIChXZWJG
cmFtZUxvYWRlckNsaWVudDo6dXBkYXRlR2xvYmFsSGlzdG9yeVJlZGlyZWN0TGlua3MpOgorICAg
ICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNldFRpdGxlKToKKyAKKyAgICAgICAgICogV2Vi
Vmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3OjpjbG9zZSk6CisgICAgICAgIChXZWJWaWV3Ojpt
YWluRnJhbWVVUkwpOgorICAgICAgICAoV2ViVmlldzo6c2V0SGlzdG9yeURlbGVnYXRlKToKKyAg
ICAgICAgKFdlYlZpZXc6Omhpc3RvcnlEZWxlZ2F0ZSk6CisgICAgICAgIChXZWJWaWV3OjphZGRW
aXNpdGVkTGlua3MpOgorICAgICAgICAqIFdlYlZpZXcuaDoKKyAgICAgICAgCisgICAgICAgICog
V2ViSGlzdG9yeS5jcHA6CisgICAgICAgIChXZWJIaXN0b3J5OjpzZXRWaXNpdGVkTGlua1RyYWNr
aW5nRW5hYmxlZCk6CisgICAgICAgIChXZWJIaXN0b3J5OjpyZW1vdmVBbGxWaXNpdGVkTGlua3Mp
OgorICAgICAgICAqIFdlYkhpc3RvcnkuaDoKKworICAgICAgICAqIFdlYk5hdmlnYXRpb25EYXRh
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJOYXZpZ2F0aW9uRGF0YTo6UXVlcnlJbnRlcmZhY2Up
OgorICAgICAgICAoV2ViTmF2aWdhdGlvbkRhdGE6OkFkZFJlZik6CisgICAgICAgIChXZWJOYXZp
Z2F0aW9uRGF0YTo6UmVsZWFzZSk6CisgICAgICAgIChXZWJOYXZpZ2F0aW9uRGF0YTo6V2ViTmF2
aWdhdGlvbkRhdGEpOgorICAgICAgICAoV2ViTmF2aWdhdGlvbkRhdGE6On5XZWJOYXZpZ2F0aW9u
RGF0YSk6CisgICAgICAgIChXZWJOYXZpZ2F0aW9uRGF0YTo6Y3JlYXRlSW5zdGFuY2UpOgorICAg
ICAgICAoV2ViTmF2aWdhdGlvbkRhdGE6OnVybCk6CisgICAgICAgIChXZWJOYXZpZ2F0aW9uRGF0
YTo6dGl0bGUpOgorICAgICAgICAoV2ViTmF2aWdhdGlvbkRhdGE6Om9yaWdpbmFsUmVxdWVzdCk6
CisgICAgICAgIChXZWJOYXZpZ2F0aW9uRGF0YTo6cmVzcG9uc2UpOgorICAgICAgICAoV2ViTmF2
aWdhdGlvbkRhdGE6Omhhc1N1YnN0aXR1dGVEYXRhKToKKyAgICAgICAgKFdlYk5hdmlnYXRpb25E
YXRhOjpjbGllbnRSZWRpcmVjdFNvdXJjZSk6CisgICAgICAgICogV2ViTmF2aWdhdGlvbkRhdGEu
aDogQWRkZWQuCisKIDIwMDktMTAtMDkgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IFdlYktpdC93aW4vV2Vi
SGlzdG9yeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJIaXN0b3J5LmNwcCAgICAo
cmV2aXNpb24gNDk0ODcpCisrKyBXZWJLaXQvd2luL1dlYkhpc3RvcnkuY3BwICAgICh3b3JraW5n
IGNvcHkpCkBAIC01NzcsNiArNTc3LDE4IEBAIEhSRVNVTFQgV2ViSGlzdG9yeTo6ZGF0YShJU3Ry
ZWFtKiogc3RyZWEKICAgICByZXR1cm4gcmVzdWx0LmNvcHlSZWZUbyhzdHJlYW0pOwogfQogCitI
UkVTVUxUIFdlYkhpc3Rvcnk6OnNldFZpc2l0ZWRMaW5rVHJhY2tpbmdFbmFibGVkKEJPT0wgdmlz
aXRlZExpbmtUcmFja2luZ0VuYWJsZWQpCit7CisgICAgUGFnZUdyb3VwOjpzZXRTaG91bGRUcmFj
a1Zpc2l0ZWRMaW5rcyh2aXNpdGVkTGlua1RyYWNraW5nRW5hYmxlZCk7CisgICAgcmV0dXJuIFNf
T0s7Cit9CisKK0hSRVNVTFQgV2ViSGlzdG9yeTo6cmVtb3ZlQWxsVmlzaXRlZExpbmtzKCkKK3sK
KyAgICBQYWdlR3JvdXA6OnJlbW92ZUFsbFZpc2l0ZWRMaW5rcygpOworICAgIHJldHVybiBTX09L
OworfQorCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkhpc3Rvcnk6OnNldEhpc3RvcnlJ
dGVtTGltaXQoIAogICAgIC8qIFtpbl0gKi8gaW50IGxpbWl0KQogewpJbmRleDogV2ViS2l0L3dp
bi9XZWJIaXN0b3J5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJIaXN0b3J5LmggICAg
KHJldmlzaW9uIDQ5NDg3KQorKysgV2ViS2l0L3dpbi9XZWJIaXN0b3J5LmggICAgKHdvcmtpbmcg
Y29weSkKQEAgLTExNiw2ICsxMTYsOSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgZGF0YShJU3RyZWFtKiopOwogCisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIHNldFZpc2l0ZWRMaW5rVHJhY2tpbmdFbmFibGVkKEJPT0wgdmlz
aXRlZExpbmtUcmFja2luZ0VuYWJsZSk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIHJlbW92ZUFsbFZpc2l0ZWRMaW5rcygpOworCiAgICAgLy8gV2ViSGlzdG9yeQogICAg
IHN0YXRpYyBXZWJIaXN0b3J5KiBzaGFyZWRIaXN0b3J5KCk7CiAgICAgdm9pZCB2aXNpdGVkVVJM
KGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBXZWJDb3JlOjpTdHJpbmcmIHRpdGxlLCBjb25z
dCBXZWJDb3JlOjpTdHJpbmcmIGh0dHBNZXRob2QsIGJvb2wgd2FzRmFpbHVyZSwgYm9vbCBpbmNy
ZWFzZVZpc2l0Q291bnQpOwpJbmRleDogV2ViS2l0L3dpbi9XZWJOYXZpZ2F0aW9uRGF0YS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJOYXZpZ2F0aW9uRGF0YS5jcHAgICAgKHJldmlz
aW9uIDApCisrKyBXZWJLaXQvd2luL1dlYk5hdmlnYXRpb25EYXRhLmNwcCAgICAocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwxNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIldlYktpdERMTC5oIgorI2luY2x1ZGUgIldlYk5hdmlnYXRpb25EYXRhLmgiCisKKyNp
bmNsdWRlIDxXZWJDb3JlL0JTdHJpbmcuaD4KK3VzaW5nIFdlYkNvcmU6OkJTdHJpbmc7CisKKy8v
IElVbmtub3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJOYXZp
Z2F0aW9uRGF0YTo6UXVlcnlJbnRlcmZhY2UoUkVGSUlEIHJpaWQsIHZvaWQqKiBwcHZPYmplY3Qp
Cit7CisgICAgKnBwdk9iamVjdCA9IDA7CisgICAgaWYgKElzRXF1YWxHVUlEKHJpaWQsIElJRF9J
VW5rbm93bikpCisgICAgICAgICpwcHZPYmplY3QgPSBzdGF0aWNfY2FzdDxJV2ViTmF2aWdhdGlv
bkRhdGEqPih0aGlzKTsKKyAgICBlbHNlIGlmIChJc0VxdWFsR1VJRChyaWlkLCBJSURfSVdlYk5h
dmlnYXRpb25EYXRhKSkKKyAgICAgICAgKnBwdk9iamVjdCA9IHN0YXRpY19jYXN0PElXZWJOYXZp
Z2F0aW9uRGF0YSo+KHRoaXMpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIEVfTk9JTlRFUkZB
Q0U7CisKKyAgICBBZGRSZWYoKTsKKyAgICByZXR1cm4gU19PSzsKK30KKworVUxPTkcgU1RETUVU
SE9EQ0FMTFRZUEUgV2ViTmF2aWdhdGlvbkRhdGE6OkFkZFJlZih2b2lkKQoreworICAgIHJldHVy
biArK21fcmVmQ291bnQ7Cit9CisKK1VMT05HIFNURE1FVEhPRENBTExUWVBFIFdlYk5hdmlnYXRp
b25EYXRhOjpSZWxlYXNlKHZvaWQpCit7CisgICAgVUxPTkcgbmV3UmVmID0gLS1tX3JlZkNvdW50
OworICAgIGlmICghbmV3UmVmKQorICAgICAgICBkZWxldGUodGhpcyk7CisKKyAgICByZXR1cm4g
bmV3UmVmOworfQorCisvLyBXZWJOYXZpZ2F0aW9uRGF0YSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1dlYk5hdmln
YXRpb25EYXRhOjpXZWJOYXZpZ2F0aW9uRGF0YShCU1RSIHVybCwgQlNUUiB0aXRsZSwgSVdlYlVS
TFJlcXVlc3QqIHJlcXVlc3QsIElXZWJVUkxSZXNwb25zZSogcmVzcG9uc2UsIGJvb2wgaGFzU3Vi
c3RpdHV0ZURhdGEsIEJTVFIgY2xpZW50UmVkaXJlY3RTb3VyY2UpCisgICAgOiBtX3JlZkNvdW50
KDApCisgICAgLCBtX3JlcXVlc3QocmVxdWVzdCkKKyAgICAsIG1fcmVzcG9uc2UocmVzcG9uc2Up
CisgICAgLCBtX2hhc1N1YnN0aXR1dGVEYXRhKGhhc1N1YnN0aXR1dGVEYXRhKQorCit7CisgICAg
Z0NsYXNzQ291bnQrKzsKKyAgICBnQ2xhc3NOYW1lQ291bnQuYWRkKCJXZWJOYXZpZ2F0aW9uRGF0
YSIpOworCisgICAgbV91cmwuYWRvcHRCU1RSKHVybCk7CisgICAgbV90aXRsZS5hZG9wdEJTVFIo
dGl0bGUpOworICAgIG1fY2xpZW50UmVkaXJlY3RTb3VyY2UuYWRvcHRCU1RSKGNsaWVudFJlZGly
ZWN0U291cmNlKTsKK30KKworV2ViTmF2aWdhdGlvbkRhdGE6On5XZWJOYXZpZ2F0aW9uRGF0YSgp
Cit7CisgICAgZ0NsYXNzQ291bnQtLTsKKyAgICBnQ2xhc3NOYW1lQ291bnQucmVtb3ZlKCJXZWJO
YXZpZ2F0aW9uRGF0YSIpOworfQorCitXZWJOYXZpZ2F0aW9uRGF0YSogV2ViTmF2aWdhdGlvbkRh
dGE6OmNyZWF0ZUluc3RhbmNlKEJTVFIgdXJsLCBCU1RSIHRpdGxlLCBJV2ViVVJMUmVxdWVzdCog
cmVxdWVzdCwgSVdlYlVSTFJlc3BvbnNlKiByZXNwb25zZSwgYm9vbCBoYXNTdWJzdGl0dXRlRGF0
YSwgQlNUUiBjbGllbnRSZWRpcmVjdFNvdXJjZSkKK3sKKyAgICBXZWJOYXZpZ2F0aW9uRGF0YSog
aW5zdGFuY2UgPSBuZXcgV2ViTmF2aWdhdGlvbkRhdGEodXJsLCB0aXRsZSwgcmVxdWVzdCwgcmVz
cG9uc2UsIGhhc1N1YnN0aXR1dGVEYXRhLCBjbGllbnRSZWRpcmVjdFNvdXJjZSk7CisgICAgaW5z
dGFuY2UtPkFkZFJlZigpOworICAgIHJldHVybiBpbnN0YW5jZTsKK30KKworLy8gSVdlYk5hdmln
YXRpb25EYXRhIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSFJFU1VMVCBXZWJOYXZpZ2F0aW9uRGF0YTo6dXJsKEJT
VFIqIHVybCkKK3sKKyAgICBpZiAoIXVybCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKyAg
ICAqdXJsID0gQlN0cmluZyhtX3VybCkucmVsZWFzZSgpOworICAgIHJldHVybiBTX09LOworfQor
CitIUkVTVUxUIFdlYk5hdmlnYXRpb25EYXRhOjp0aXRsZShCU1RSKiB0aXRsZSkKK3sKKyAgICBp
ZiAoIXRpdGxlKQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworICAgICp0aXRsZSA9IEJTdHJp
bmcobV90aXRsZSkucmVsZWFzZSgpOworICAgIHJldHVybiBTX09LOworfQorCitIUkVTVUxUIFdl
Yk5hdmlnYXRpb25EYXRhOjpvcmlnaW5hbFJlcXVlc3QoSVdlYlVSTFJlcXVlc3QqKiByZXF1ZXN0
KQoreworICAgIGlmICghcmVxdWVzdCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKyAgICAq
cmVxdWVzdCA9IG1fcmVxdWVzdC5nZXQoKTsKKyAgICBtX3JlcXVlc3QtPkFkZFJlZigpOworICAg
IHJldHVybiBTX09LOworfQorCitIUkVTVUxUIFdlYk5hdmlnYXRpb25EYXRhOjpyZXNwb25zZShJ
V2ViVVJMUmVzcG9uc2UqKiByZXNwb25zZSkKK3sKKyAgICBpZiAoIXJlc3BvbnNlKQorICAgICAg
ICByZXR1cm4gRV9QT0lOVEVSOworICAgICpyZXNwb25zZSA9IG1fcmVzcG9uc2UuZ2V0KCk7Cisg
ICAgbV9yZXNwb25zZS0+QWRkUmVmKCk7CisgICAgcmV0dXJuIFNfT0s7Cit9CisKK0hSRVNVTFQg
V2ViTmF2aWdhdGlvbkRhdGE6Omhhc1N1YnN0aXR1dGVEYXRhKEJPT0wqIGhhc1N1YnN0aXR1dGVE
YXRhKQoreworICAgIGlmICghaGFzU3Vic3RpdHV0ZURhdGEpCisgICAgICAgIHJldHVybiBFX1BP
SU5URVI7CisgICAgKmhhc1N1YnN0aXR1dGVEYXRhID0gbV9oYXNTdWJzdGl0dXRlRGF0YTsKKyAg
ICByZXR1cm4gU19PSzsKK30KKworSFJFU1VMVCBXZWJOYXZpZ2F0aW9uRGF0YTo6Y2xpZW50UmVk
aXJlY3RTb3VyY2UoQlNUUiogY2xpZW50UmVkaXJlY3RTb3VyY2UpCit7CisgICAgaWYgKCFjbGll
bnRSZWRpcmVjdFNvdXJjZSkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKworICAgICpjbGll
bnRSZWRpcmVjdFNvdXJjZSA9IEJTdHJpbmcobV9jbGllbnRSZWRpcmVjdFNvdXJjZSkucmVsZWFz
ZSgpOworICAgIHJldHVybiBTX09LOworfQoKUHJvcGVydHkgY2hhbmdlcyBvbjogV2ViS2l0L3dp
bi9XZWJOYXZpZ2F0aW9uRGF0YS5jcHAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmV4ZWN1dGFibGUK
ICAgKyAqCgpJbmRleDogV2ViS2l0L3dpbi9XZWJOYXZpZ2F0aW9uRGF0YS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC93aW4vV2ViTmF2aWdhdGlvbkRhdGEuaCAgICAocmV2aXNpb24gMCkKKysrIFdl
YktpdC93aW4vV2ViTmF2aWdhdGlvbkRhdGEuaCAgICAocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3
NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaWZuZGVmIFdlYk5hdmlnYXRpb25EYXRhX2gKKyNkZWZpbmUgV2Vi
TmF2aWdhdGlvbkRhdGFfaAorCisjaW5jbHVkZSAiV2ViS2l0LmgiCisKKyNpbmNsdWRlICJDT01Q
dHIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0JTdHJpbmcuaD4KKworY2xhc3MgV2ViTmF2aWdhdGlv
bkRhdGEgOiBwdWJsaWMgSVdlYk5hdmlnYXRpb25EYXRhIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
V2ViTmF2aWdhdGlvbkRhdGEqIGNyZWF0ZUluc3RhbmNlKEJTVFIsIEJTVFIsIElXZWJVUkxSZXF1
ZXN0KiwgSVdlYlVSTFJlc3BvbnNlKiwgYm9vbCwgQlNUUik7Citwcml2YXRlOgorICAgIFdlYk5h
dmlnYXRpb25EYXRhKEJTVFIgdXJsLCBCU1RSIHRpdGxlLCBJV2ViVVJMUmVxdWVzdCosIElXZWJV
UkxSZXNwb25zZSosIGJvb2wgaGFzU3Vic3RpdHV0ZURhdGEsIEJTVFIgY2xpZW50UmVkaXJlY3RT
b3VyY2UpOworICAgIH5XZWJOYXZpZ2F0aW9uRGF0YSgpOworCitwdWJsaWM6CisgICAgLy8gSVVu
a25vd24KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZh
Y2UoUkVGSUlEIHJpaWQsIHZvaWQqKiBwcHZPYmplY3QpOworICAgIHZpcnR1YWwgVUxPTkcgU1RE
TUVUSE9EQ0FMTFRZUEUgQWRkUmVmKHZvaWQpOworICAgIHZpcnR1YWwgVUxPTkcgU1RETUVUSE9E
Q0FMTFRZUEUgUmVsZWFzZSh2b2lkKTsKKworICAgIC8vIElXZWJOYXZpZ2F0aW9uRGF0YQorICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB1cmwoCisgICAgICAgIC8qIFtyZXR2
YWxdW291dF0gKi8gQlNUUiopOworCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIHRpdGxlKAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqKTsKKworICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBvcmlnaW5hbFJlcXVlc3QoCisgICAgICAg
IC8qIFtyZXR2YWxdW291dF0gKi8gSVdlYlVSTFJlcXVlc3QqKik7CisKKyAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcmVzcG9uc2UoCisgICAgICAgIC8qIFtyZXR2YWxdW291
dF0gKi8gSVdlYlVSTFJlc3BvbnNlKiopOworCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIGhhc1N1YnN0aXR1dGVEYXRhKAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICov
IEJPT0wqKTsKKworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjbGllbnRS
ZWRpcmVjdFNvdXJjZSgKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSKik7CisKK3By
aXZhdGU6CisgICAgVUxPTkcgbV9yZWZDb3VudDsKKyAgICBXZWJDb3JlOjpCU3RyaW5nIG1fdXJs
OworICAgIFdlYkNvcmU6OkJTdHJpbmcgbV90aXRsZTsKKyAgICBDT01QdHI8SVdlYlVSTFJlcXVl
c3Q+IG1fcmVxdWVzdDsKKyAgICBDT01QdHI8SVdlYlVSTFJlc3BvbnNlPiBtX3Jlc3BvbnNlOwor
ICAgIGJvb2wgbV9oYXNTdWJzdGl0dXRlRGF0YTsKKyAgICBXZWJDb3JlOjpCU3RyaW5nIG1fY2xp
ZW50UmVkaXJlY3RTb3VyY2U7CisKK307CisKKyNlbmRpZiAvLyBXZWJOYXZpZ2F0aW9uRGF0YV9o
CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBXZWJLaXQvd2luL1dlYk5hdmlnYXRpb25EYXRhLmgKX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwpBZGRlZDogc3ZuOmV4ZWN1dGFibGUKICAgKyAqCgpJbmRleDogV2ViS2l0L3dpbi9X
ZWJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYlZpZXcuY3BwICAgIChyZXZp
c2lvbiA0OTQ4NykKKysrIFdlYktpdC93aW4vV2ViVmlldy5jcHAgICAgKHdvcmtpbmcgY29weSkK
QEAgLTYzOSw2ICs2MzksNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OmNs
b3NlCiAgICAgc2V0RWRpdGluZ0RlbGVnYXRlKDApOwogICAgIHNldEZyYW1lTG9hZERlbGVnYXRl
KDApOwogICAgIHNldEZyYW1lTG9hZERlbGVnYXRlUHJpdmF0ZSgwKTsKKyAgICBzZXRIaXN0b3J5
RGVsZWdhdGUoMCk7CiAgICAgc2V0UG9saWN5RGVsZWdhdGUoMCk7CiAgICAgc2V0UmVzb3VyY2VM
b2FkRGVsZWdhdGUoMCk7CiAgICAgc2V0VUlEZWxlZ2F0ZSgwKTsKQEAgLTMzNjAsMTAgKzMzNjEs
MzQgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpzZXRNYQogfQogICAgIAog
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjptYWluRnJhbWVVUkwoIAotICAgICAg
ICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIC8qdXJsU3RyaW5nKi8pCisgICAgICAgIC8qIFty
ZXR2YWxdW291dF0gKi8gQlNUUiogdXJsU3RyaW5nKQogewotICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgIHJldHVybiBFX05PVElNUEw7CisgICAgaWYgKCF1cmxTdHJpbmcpCisgICAgICAg
IHJldHVybiBFX1BPSU5URVI7CisKKyAgICBpZiAoIW1fbWFpbkZyYW1lKQorICAgICAgICByZXR1
cm4gRV9GQUlMOworCisgICAgQ09NUHRyPElXZWJEYXRhU291cmNlPiBkYXRhU291cmNlOworCisg
ICAgaWYgKEZBSUxFRChtX21haW5GcmFtZS0+cHJvdmlzaW9uYWxEYXRhU291cmNlKCZkYXRhU291
cmNlKSkpIHsKKyAgICAgICAgaWYgKEZBSUxFRChtX21haW5GcmFtZS0+ZGF0YVNvdXJjZSgmZGF0
YVNvdXJjZSkpKQorICAgICAgICAgICAgcmV0dXJuIEVfRkFJTDsKKyAgICB9CisKKyAgICBpZiAo
IWRhdGFTb3VyY2UpIHsKKyAgICAgICAgKnVybFN0cmluZyA9IDA7CisgICAgICAgIHJldHVybiBT
X09LOworICAgIH0KKyAgICAKKyAgICBDT01QdHI8SVdlYk11dGFibGVVUkxSZXF1ZXN0PiByZXF1
ZXN0OworICAgIGlmIChGQUlMRUQoZGF0YVNvdXJjZS0+cmVxdWVzdCgmcmVxdWVzdCkpIHx8ICFy
ZXF1ZXN0KQorICAgICAgICByZXR1cm4gRV9GQUlMOworCisgICAgaWYgKEZBSUxFRChyZXF1ZXN0
LT5VUkwodXJsU3RyaW5nKSkpCisgICAgICAgIHJldHVybiBFX0ZBSUw7CisKKyAgICByZXR1cm4g
U19PSzsKIH0KICAgICAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6bWFpbkZy
YW1lRG9jdW1lbnQoIApAQCAtNTU1NSw2ICs1NTgwLDMzIEBAIEhSRVNVTFQgV2ViVmlldzo6cmVz
ZXRPcmlnaW5BY2Nlc3NXaGl0ZUwKICAgICBTZWN1cml0eU9yaWdpbjo6cmVzZXRPcmlnaW5BY2Nl
c3NXaGl0ZUxpc3RzKCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CisgCitIUkVTVUxUIFdlYlZpZXc6
OnNldEhpc3RvcnlEZWxlZ2F0ZShJV2ViSGlzdG9yeURlbGVnYXRlKiBoaXN0b3J5RGVsZWdhdGUp
Cit7CisgICAgbV9oaXN0b3J5RGVsZWdhdGUgPSBoaXN0b3J5RGVsZWdhdGU7CisgICAgcmV0dXJu
IFNfT0s7Cit9CisKK0hSRVNVTFQgV2ViVmlldzo6aGlzdG9yeURlbGVnYXRlKElXZWJIaXN0b3J5
RGVsZWdhdGUqKiBoaXN0b3J5RGVsZWdhdGUpCit7CisgICAgaWYgKCFoaXN0b3J5RGVsZWdhdGUp
CisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisKKyAgICByZXR1cm4gbV9oaXN0b3J5RGVsZWdh
dGUuY29weVJlZlRvKGhpc3RvcnlEZWxlZ2F0ZSk7Cit9CisKK0hSRVNVTFQgV2ViVmlldzo6YWRk
VmlzaXRlZExpbmtzKEJTVFIqIHZpc2l0ZWRVUkxzLCB1bnNpZ25lZCB2aXNpdGVkVVJMQ291bnQp
Cit7CisgICAgUGFnZUdyb3VwJiBncm91cCA9IGNvcmUodGhpcyktPmdyb3VwKCk7CisgICAgCisg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHZpc2l0ZWRVUkxDb3VudDsgKytpKSB7CisgICAg
ICAgIEJTVFIgdXJsID0gdmlzaXRlZFVSTHNbaV07CisgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9
IFN5c1N0cmluZ0xlbih1cmwpOworICAgICAgICBncm91cC5hZGRWaXNpdGVkTGluayh1cmwsIGxl
bmd0aCk7CisgICAgfQorCisgICAgcmV0dXJuIFNfT0s7Cit9CiAKIHZvaWQgV2ViVmlldzo6ZG93
bmxvYWRVUkwoY29uc3QgS1VSTCYgdXJsKQogewpJbmRleDogV2ViS2l0L3dpbi9XZWJWaWV3LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJWaWV3LmggICAgKHJldmlzaW9uIDQ5NDg3KQor
KysgV2ViS2l0L3dpbi9XZWJWaWV3LmggICAgKHdvcmtpbmcgY29weSkKQEAgLTc1OSw2ICs3NTks
MTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3aGl0
ZUxpc3RBY2Nlc3NGcm9tT3JpZ2luKEJTVFIgc291cmNlT3JpZ2luLCBCU1RSIGRlc3RpbmF0aW9u
UHJvdG9jb2wsIEJTVFIgZGVzdGluYXRpb25Ib3N0LCBCT09MIGFsbG93RGVzdGluYXRpb25TdWJk
b21haW5zKTsKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcmVzZXRPcmln
aW5BY2Nlc3NXaGl0ZUxpc3RzKCk7CiAKKworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBzZXRIaXN0b3J5RGVsZWdhdGUoSVdlYkhpc3RvcnlEZWxlZ2F0ZSogaGlzdG9yeURl
bGVnYXRlKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaGlzdG9yeURl
bGVnYXRlKElXZWJIaXN0b3J5RGVsZWdhdGUqKiBoaXN0b3J5RGVsZWdhdGUpOworICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBhZGRWaXNpdGVkTGlua3MoQlNUUiogdmlzaXRl
ZFVSTHMsIHVuc2lnbmVkIHZpc2l0ZWRVUkxDb3VudCk7CisKICAgICAvLyBXZWJWaWV3CiAgICAg
Ym9vbCBzaG91bGRVc2VFbWJlZGRlZFZpZXcoY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBtaW1lVHlw
ZSkgY29uc3Q7CiAKQEAgLTkwNCw2ICs5MDksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgQ09NUHRyPElX
ZWJQb2xpY3lEZWxlZ2F0ZT4gbV9wb2xpY3lEZWxlZ2F0ZTsKICAgICBDT01QdHI8SVdlYlJlc291
cmNlTG9hZERlbGVnYXRlPiBtX3Jlc291cmNlTG9hZERlbGVnYXRlOwogICAgIENPTVB0cjxJV2Vi
RG93bmxvYWREZWxlZ2F0ZT4gbV9kb3dubG9hZERlbGVnYXRlOworICAgIENPTVB0cjxJV2ViSGlz
dG9yeURlbGVnYXRlPiBtX2hpc3RvcnlEZWxlZ2F0ZTsKICAgICBDT01QdHI8V2ViUHJlZmVyZW5j
ZXM+IG1fcHJlZmVyZW5jZXM7CiAgICAgQ09NUHRyPFdlYkluc3BlY3Rvcj4gbV93ZWJJbnNwZWN0
b3I7CiAgICAgQ09NUHRyPElXZWJQbHVnaW5IYWx0ZXJEZWxlZ2F0ZT4gbV9wbHVnaW5IYWx0ZXJE
ZWxlZ2F0ZTsKSW5kZXg6IFdlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViSGlzdG9yeURlbGVnYXRl
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYkhpc3RvcnlEZWxl
Z2F0ZS5pZGwgICAgKHJldmlzaW9uIDApCisrKyBXZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYkhp
c3RvcnlEZWxlZ2F0ZS5pZGwgICAgKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVS
LCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIs
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2lmbmRlZiBET19OT19JTVBPUlRTCitpbXBvcnQgIm9haWRsLmlkbCI7CitpbXBvcnQg
Im9jaWRsLmlkbCI7CitpbXBvcnQgIklXZWJOYXZpZ2F0aW9uRGF0YS5pZGwiOworI2VuZGlmCisK
K2ludGVyZmFjZSBJV2ViRnJhbWU7CitpbnRlcmZhY2UgSVdlYk5hdmlnYXRpb25EYXRhOworaW50
ZXJmYWNlIElXZWJWaWV3OworCitbCisgICAgb2JqZWN0LAorICAgIG9sZWF1dG9tYXRpb24sCisg
ICAgdXVpZCgxNkFGMjExRi03QzAwLTRmN2YtQThEQi1CMTIxOUZFQUJGM0IpLAorICAgIHBvaW50
ZXJfZGVmYXVsdCh1bmlxdWUpCitdCitpbnRlcmZhY2UgSVdlYkhpc3RvcnlEZWxlZ2F0ZSA6IElV
bmtub3duCit7CisgICAgSFJFU1VMVCBkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YShbaW5d
IElXZWJWaWV3KiB3ZWJWaWV3LCBbaW5dIElXZWJOYXZpZ2F0aW9uRGF0YSogbmF2aWdhdGlvbkRh
dGEsIFtpbl0gSVdlYkZyYW1lKiB3ZWJGcmFtZSk7CisgICAgSFJFU1VMVCBkaWRQZXJmb3JtQ2xp
ZW50UmVkaXJlY3RGcm9tVVJMKFtpbl0gSVdlYlZpZXcqIHdlYlZpZXcsIFtpbl0gQlNUUiBzb3Vy
Y2VVUkwsIFtpbl0gQlNUUiBkZXN0aW5hdGlvblVSTCwgW2luXSBJV2ViRnJhbWUqIHdlYkZyYW1l
KTsKKyAgICBIUkVTVUxUIGRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdEZyb21VUkwoW2luXSBJV2Vi
Vmlldyogd2ViVmlldywgW2luXSBCU1RSIHNvdXJjZVVSTCwgW2luXSBCU1RSIGRlc3RpbmF0aW9u
VVJMLCBbaW5dIElXZWJGcmFtZSogd2ViRnJhbWUpOworICAgIEhSRVNVTFQgdXBkYXRlSGlzdG9y
eVRpdGxlKFtpbl0gSVdlYlZpZXcqIHdlYlZpZXcsIFtpbl0gQlNUUiB0aXRsZSwgW2luXSBCU1RS
IHVybCk7CisgICAgSFJFU1VMVCBwb3B1bGF0ZVZpc2l0ZWRMaW5rc0ZvcldlYlZpZXcoW2luXSBJ
V2ViVmlldyogd2ViVmlldyk7Cit9CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBXZWJLaXQvd2luL0lu
dGVyZmFjZXMvSVdlYkhpc3RvcnlEZWxlZ2F0ZS5pZGwKX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmV4
ZWN1dGFibGUKICAgKyAqCgpJbmRleDogV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJIaXN0b3J5
UHJpdmF0ZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJIaXN0
b3J5UHJpdmF0ZS5pZGwgICAgKHJldmlzaW9uIDQ5NDg3KQorKysgV2ViS2l0L3dpbi9JbnRlcmZh
Y2VzL0lXZWJIaXN0b3J5UHJpdmF0ZS5pZGwgICAgKHdvcmtpbmcgY29weSkKQEAgLTM2LDQgKzM2
LDYgQEAgaW50ZXJmYWNlIElXZWJIaXN0b3J5UHJpdmF0ZSA6IElVbmtub3duCiB7CiAgICAgSFJF
U1VMVCBhbGxJdGVtcyhbaW4sIG91dF0gaW50KiBjb3VudCwgW291dCwgcmV0dmFsXSBJV2ViSGlz
dG9yeUl0ZW0qKiBpdGVtcyk7CiAgICAgSFJFU1VMVCBkYXRhKFtvdXQsIHJldHZhbF0gSVN0cmVh
bSoqKTsKKyAgICBIUkVTVUxUIHNldFZpc2l0ZWRMaW5rVHJhY2tpbmdFbmFibGVkKFtpbl0gQk9P
TCB2aXNpdGVkTGlua1RyYWNraW5nRW5hYmxlKTsKKyAgICBIUkVTVUxUIHJlbW92ZUFsbFZpc2l0
ZWRMaW5rcygpOwogfQpJbmRleDogV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJOYXZpZ2F0aW9u
RGF0YS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJOYXZpZ2F0
aW9uRGF0YS5pZGwgICAgKHJldmlzaW9uIDApCisrKyBXZWJLaXQvd2luL0ludGVyZmFjZXMvSVdl
Yk5hdmlnYXRpb25EYXRhLmlkbCAgICAocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVU
RVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRF
UiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaWZuZGVmIERPX05PX0lNUE9SVFMKK2ltcG9ydCAib2FpZGwuaWRsIjsKK2ltcG9y
dCAib2NpZGwuaWRsIjsKK2ltcG9ydCAiSVdlYlVSTFJlcXVlc3QuaWRsIjsKK2ltcG9ydCAiSVdl
YlVSTFJlc3BvbnNlLmlkbCI7CisjZW5kaWYKKworaW50ZXJmYWNlIElXZWJVUkxSZXF1ZXN0Owor
aW50ZXJmYWNlIElXZWJVUkxSZXNwb25zZTsKKworWworICAgIG9iamVjdCwKKyAgICBvbGVhdXRv
bWF0aW9uLAorICAgIGhpZGRlbiwKKyAgICB1dWlkKDFGMTYyNjQ0LTczRDEtNGRlMS1BMjBDLTI5
NUZCNjhCRjA0OCksCisgICAgcG9pbnRlcl9kZWZhdWx0KHVuaXF1ZSkKK10KK2ludGVyZmFjZSBJ
V2ViTmF2aWdhdGlvbkRhdGEgOiBJVW5rbm93bgoreworICAgIEhSRVNVTFQgdXJsKFtvdXQsIHJl
dHZhbF0gQlNUUiopOworICAgIEhSRVNVTFQgdGl0bGUoW291dCwgcmV0dmFsXSBCU1RSKik7Cisg
ICAgSFJFU1VMVCBvcmlnaW5hbFJlcXVlc3QoW291dCwgcmV0dmFsXSBJV2ViVVJMUmVxdWVzdCoq
KTsKKyAgICBIUkVTVUxUIHJlc3BvbnNlKFtvdXQsIHJldHZhbF0gSVdlYlVSTFJlc3BvbnNlKiop
OworICAgIEhSRVNVTFQgaGFzU3Vic3RpdHV0ZURhdGEoW291dCwgcmV0dmFsXSBCT09MKik7Cisg
ICAgSFJFU1VMVCBjbGllbnRSZWRpcmVjdFNvdXJjZShbb3V0LCByZXR2YWxdIEJTVFIqKTsKK30K
ClByb3BlcnR5IGNoYW5nZXMgb246IFdlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViTmF2aWdhdGlv
bkRhdGEuaWRsCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjpleGVjdXRhYmxlCiAgICsgKgoKSW5kZXg6
IFdlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViVmlld1ByaXZhdGUuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViVmlld1ByaXZhdGUuaWRsICAgIChyZXZpc2lvbiA0
OTQ4NykKKysrIFdlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViVmlld1ByaXZhdGUuaWRsICAgICh3
b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBAIGltcG9ydCAib2FpZGwuaWRsIjsKIGltcG9y
dCAib2NpZGwuaWRsIjsKIGltcG9ydCAiSVdlYkZvcm1EZWxlZ2F0ZS5pZGwiOwogaW1wb3J0ICJJ
V2ViRnJhbWVMb2FkRGVsZWdhdGVQcml2YXRlLmlkbCI7CitpbXBvcnQgIklXZWJIaXN0b3J5RGVs
ZWdhdGUuaWRsIjsKIGltcG9ydCAiSVdlYkluc3BlY3Rvci5pZGwiOwogaW1wb3J0ICJJV2ViSW5z
cGVjdG9yUHJpdmF0ZS5pZGwiOwogI2VuZGlmCkBAIC0zOCw2ICszOSw3IEBAIGNwcF9xdW90ZSgi
I2RlZmluZSBXZWJWaWV3V2lsbENsb3NlTm90aWYKIGludGVyZmFjZSBJRW51bVRleHRNYXRjaGVz
OwogaW50ZXJmYWNlIElXZWJGb3JtRGVsZWdhdGU7CiBpbnRlcmZhY2UgSVdlYkZyYW1lTG9hZERl
bGVnYXRlUHJpdmF0ZTsKK2ludGVyZmFjZSBJV2ViSGlzdG9yeURlbGVnYXRlOwogaW50ZXJmYWNl
IElXZWJJbnNwZWN0b3I7CiBpbnRlcmZhY2UgSVdlYkluc3BlY3RvclByaXZhdGU7CiBpbnRlcmZh
Y2UgSVdlYlBsdWdpbkhhbHRlckRlbGVnYXRlOwpAQCAtMjA4LDQgKzIxMCw4IEBAIGludGVyZmFj
ZSBJV2ViVmlld1ByaXZhdGUgOiBJVW5rbm93bgogCiAgICAgLy8gUmVtb3ZlcyBhbGwgd2hpdGUg
bGlzdCBlbnRyaWVzIGNyZWF0ZWQgd2l0aCB3aGl0ZUxpc3RBY2Nlc3NGcm9tT3JpZ2luLgogICAg
IEhSRVNVTFQgcmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZUxpc3RzKCk7CisKKyAgICBIUkVTVUxUIHNl
dEhpc3RvcnlEZWxlZ2F0ZShbaW5dIElXZWJIaXN0b3J5RGVsZWdhdGUqIGhpc3RvcnlEZWxlZ2F0
ZSk7CisgICAgSFJFU1VMVCBoaXN0b3J5RGVsZWdhdGUoW291dCxyZXR2YWxdIElXZWJIaXN0b3J5
RGVsZWdhdGUqKiBoaXN0b3J5RGVsZWdhdGUpOworICAgIEhSRVNVTFQgYWRkVmlzaXRlZExpbmtz
KFtpbl0gQlNUUiogdmlzaXRlZFVSTHMsIFtpbl0gdW5zaWduZWQgdmlzaXRlZFVSTENvdW50KTsK
IH0KSW5kZXg6IFdlYktpdC93aW4vSW50ZXJmYWNlcy9XZWJLaXQuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdC93aW4vSW50ZXJmYWNlcy9XZWJLaXQuaWRsICAgIChyZXZpc2lvbiA0OTQ4NykKKysr
IFdlYktpdC93aW4vSW50ZXJmYWNlcy9XZWJLaXQuaWRsICAgICh3b3JraW5nIGNvcHkpCkBAIC05
MCw2ICs5MCw3IEBAIGltcG9ydCAib2NpZGwuaWRsIjsKICNpbmNsdWRlICJJV2ViSFRNTFJlcHJl
c2VudGF0aW9uLmlkbCIKICNpbmNsdWRlICJJV2ViSFRUUFVSTFJlc3BvbnNlLmlkbCIKICNpbmNs
dWRlICJJV2ViSGlzdG9yeS5pZGwiCisjaW5jbHVkZSAiSVdlYkhpc3RvcnlEZWxlZ2F0ZS5pZGwi
CiAjaW5jbHVkZSAiSVdlYkhpc3RvcnlJdGVtLmlkbCIKICNpbmNsdWRlICJJV2ViSGlzdG9yeUl0
ZW1Qcml2YXRlLmlkbCIKICNpbmNsdWRlICJJV2ViSGlzdG9yeVByaXZhdGUuaWRsIgpAQCAtMTAw
LDYgKzEwMSw3IEBAIGltcG9ydCAib2NpZGwuaWRsIjsKICNpbmNsdWRlICJJV2ViSmF2YVNjcmlw
dENvbGxlY3Rvci5pZGwiCiAjaW5jbHVkZSAiSVdlYktpdFN0YXRpc3RpY3MuaWRsIgogI2luY2x1
ZGUgIklXZWJNdXRhYmxlVVJMUmVxdWVzdFByaXZhdGUuaWRsIgorI2luY2x1ZGUgIklXZWJOYXZp
Z2F0aW9uRGF0YS5pZGwiCiAjaW5jbHVkZSAiSVdlYk5vdGlmaWNhdGlvbi5pZGwiCiAjaW5jbHVk
ZSAiSVdlYk5vdGlmaWNhdGlvbkNlbnRlci5pZGwiCiAjaW5jbHVkZSAiSVdlYk5vdGlmaWNhdGlv
bk9ic2VydmVyLmlkbCIKSW5kZXg6IFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5jcHAgICAgKHJldmlzaW9uIDQ5NDg3KQorKysgV2ViS2l0L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwICAgICh3b3JraW5nIGNvcHkpCkBAIC01NzEsNiAr
NTcxLDEzIEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpyZWFjaGVkTWF4QXBwQ2FjaGUKIAogdm9p
ZCBXZWJDaHJvbWVDbGllbnQ6OnBvcHVsYXRlVmlzaXRlZExpbmtzKCkKIHsKKyAgICBDT01QdHI8
SVdlYkhpc3RvcnlEZWxlZ2F0ZT4gaGlzdG9yeURlbGVnYXRlOworICAgIG1fd2ViVmlldy0+aGlz
dG9yeURlbGVnYXRlKCZoaXN0b3J5RGVsZWdhdGUpOworICAgIGlmIChoaXN0b3J5RGVsZWdhdGUp
IHsKKyAgICAgICAgaGlzdG9yeURlbGVnYXRlLT5wb3B1bGF0ZVZpc2l0ZWRMaW5rc0ZvcldlYlZp
ZXcobV93ZWJWaWV3KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIFdlYkhpc3Rvcnkq
IGhpc3RvcnkgPSBXZWJIaXN0b3J5OjpzaGFyZWRIaXN0b3J5KCk7CiAgICAgaWYgKCFoaXN0b3J5
KQogICAgICAgICByZXR1cm47CkluZGV4OiBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCAgICAocmV2aXNpb24gNDk0ODcpCisrKyBXZWJL
aXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCAgICAod29ya2lu
ZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgIldlYkhpc3RvcnkuaCIKICNpbmNs
dWRlICJXZWJIaXN0b3J5SXRlbS5oIgogI2luY2x1ZGUgIldlYk11dGFibGVVUkxSZXF1ZXN0Lmgi
CisjaW5jbHVkZSAiV2ViTmF2aWdhdGlvbkRhdGEuaCIKICNpbmNsdWRlICJXZWJOb3RpZmljYXRp
b25DZW50ZXIuaCIKICNpbmNsdWRlICJXZWJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIldl
YlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgiCkBAIC00OTMsMzQgKzQ5NCw3MCBAQCB2b2lk
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpCiAKIHZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OnVwZGF0ZUdsb2JhbEhpc3RvcnkoKQogeworICAgIERvY3VtZW50TG9hZGVyKiBs
b2FkZXIgPSBjb3JlKG1fd2ViRnJhbWUpLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKTsKKyAg
ICBXZWJWaWV3KiB3ZWJWaWV3ID0gbV93ZWJGcmFtZS0+d2ViVmlldygpOworICAgIENPTVB0cjxJ
V2ViSGlzdG9yeURlbGVnYXRlPiBoaXN0b3J5RGVsZWdhdGU7CisgICAgd2ViVmlldy0+aGlzdG9y
eURlbGVnYXRlKCZoaXN0b3J5RGVsZWdhdGUpOworCisgICAgaWYgKGhpc3RvcnlEZWxlZ2F0ZSkg
eworICAgICAgICBCU3RyaW5nIHVybChsb2FkZXItPnVybEZvckhpc3RvcnkoKSk7CisgICAgICAg
IEJTdHJpbmcgdGl0bGUobG9hZGVyLT50aXRsZSgpKTsKKyAgICAgICAgQlN0cmluZyByZWRpcmVj
dFNvdXJjZShsb2FkZXItPmNsaWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeSgpKTsKKyAgICAg
ICAgQ09NUHRyPElXZWJVUkxSZXNwb25zZT4gdXJsUmVzcG9uc2UoQWRvcHRDT00sIFdlYlVSTFJl
c3BvbnNlOjpjcmVhdGVJbnN0YW5jZShsb2FkZXItPnJlc3BvbnNlKCkpKTsKKyAgICAgICAgQ09N
UHRyPElXZWJVUkxSZXF1ZXN0PiB1cmxSZXF1ZXN0KEFkb3B0Q09NLCBXZWJNdXRhYmxlVVJMUmVx
dWVzdDo6Y3JlYXRlSW5zdGFuY2UobG9hZGVyLT5vcmlnaW5hbFJlcXVlc3RDb3B5KCkpKTsKKyAg
ICAgICAgCisgICAgICAgIENPTVB0cjxJV2ViTmF2aWdhdGlvbkRhdGE+IG5hdmlnYXRpb25EYXRh
KEFkb3B0Q09NLCBXZWJOYXZpZ2F0aW9uRGF0YTo6Y3JlYXRlSW5zdGFuY2UoCisgICAgICAgICAg
ICB1cmwsIHRpdGxlLCB1cmxSZXF1ZXN0LmdldCgpLCB1cmxSZXNwb25zZS5nZXQoKSwgbG9hZGVy
LT5zdWJzdGl0dXRlRGF0YSgpLmlzVmFsaWQoKSwgcmVkaXJlY3RTb3VyY2UpKTsKKworICAgICAg
ICBoaXN0b3J5RGVsZWdhdGUtPmRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhKHdlYlZpZXcs
IG5hdmlnYXRpb25EYXRhLmdldCgpLCBtX3dlYkZyYW1lKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKwogICAgIFdlYkhpc3RvcnkqIGhpc3RvcnkgPSBXZWJIaXN0b3J5OjpzaGFyZWRIaXN0b3J5
KCk7CiAgICAgaWYgKCFoaXN0b3J5KQogICAgICAgICByZXR1cm47CiAKLSAgICBEb2N1bWVudExv
YWRlciogbG9hZGVyID0gY29yZShtX3dlYkZyYW1lKS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVy
KCk7CiAgICAgaGlzdG9yeS0+dmlzaXRlZFVSTChsb2FkZXItPnVybEZvckhpc3RvcnkoKSwgbG9h
ZGVyLT50aXRsZSgpLCBsb2FkZXItPm9yaWdpbmFsUmVxdWVzdENvcHkoKS5odHRwTWV0aG9kKCks
IGxvYWRlci0+dXJsRm9ySGlzdG9yeVJlZmxlY3RzRmFpbHVyZSgpLCAhbG9hZGVyLT5jbGllbnRS
ZWRpcmVjdFNvdXJjZUZvckhpc3RvcnkoKSk7CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OnVwZGF0ZUdsb2JhbEhpc3RvcnlSZWRpcmVjdExpbmtzKCkKIHsKKyAgICBXZWJWaWV3KiB3
ZWJWaWV3ID0gbV93ZWJGcmFtZS0+d2ViVmlldygpOworICAgIENPTVB0cjxJV2ViSGlzdG9yeURl
bGVnYXRlPiBoaXN0b3J5RGVsZWdhdGU7CisgICAgd2ViVmlldy0+aGlzdG9yeURlbGVnYXRlKCZo
aXN0b3J5RGVsZWdhdGUpOworCiAgICAgV2ViSGlzdG9yeSogaGlzdG9yeSA9IFdlYkhpc3Rvcnk6
OnNoYXJlZEhpc3RvcnkoKTsKLSAgICBpZiAoIWhpc3RvcnkpCi0gICAgICAgIHJldHVybjsKIAog
ICAgIERvY3VtZW50TG9hZGVyKiBsb2FkZXIgPSBjb3JlKG1fd2ViRnJhbWUpLT5sb2FkZXIoKS0+
ZG9jdW1lbnRMb2FkZXIoKTsKICAgICBBU1NFUlQobG9hZGVyLT51bnJlYWNoYWJsZVVSTCgpLmlz
RW1wdHkoKSk7CiAKICAgICBpZiAoIWxvYWRlci0+Y2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0
b3J5KCkuaXNOdWxsKCkpIHsKLSAgICAgICAgaWYgKENPTVB0cjxJV2ViSGlzdG9yeUl0ZW0+IGlX
ZWJIaXN0b3J5SXRlbSA9IGhpc3RvcnktPml0ZW1Gb3JVUkxTdHJpbmcobG9hZGVyLT5jbGllbnRS
ZWRpcmVjdFNvdXJjZUZvckhpc3RvcnkoKSkpIHsKLSAgICAgICAgICAgIENPTVB0cjxXZWJIaXN0
b3J5SXRlbT4gd2ViSGlzdG9yeUl0ZW0oUXVlcnksIGlXZWJIaXN0b3J5SXRlbSk7Ci0gICAgICAg
ICAgICB3ZWJIaXN0b3J5SXRlbS0+aGlzdG9yeUl0ZW0oKS0+YWRkUmVkaXJlY3RVUkwobG9hZGVy
LT5jbGllbnRSZWRpcmVjdERlc3RpbmF0aW9uRm9ySGlzdG9yeSgpKTsKKyAgICAgICAgaWYgKGhp
c3RvcnlEZWxlZ2F0ZSkgeworICAgICAgICAgICAgQlN0cmluZyBzb3VyY2VVUkwobG9hZGVyLT5j
bGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3RvcnkoKSk7CisgICAgICAgICAgICBCU3RyaW5nIGRl
c3RVUkwobG9hZGVyLT5jbGllbnRSZWRpcmVjdERlc3RpbmF0aW9uRm9ySGlzdG9yeSgpKTsKKyAg
ICAgICAgICAgIGhpc3RvcnlEZWxlZ2F0ZS0+ZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0RnJvbVVS
TCh3ZWJWaWV3LCBzb3VyY2VVUkwsIGRlc3RVUkwsIG1fd2ViRnJhbWUpOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgaWYgKGhpc3RvcnkpIHsKKyAgICAgICAgICAgICAgICBpZiAoQ09N
UHRyPElXZWJIaXN0b3J5SXRlbT4gaVdlYkhpc3RvcnlJdGVtID0gaGlzdG9yeS0+aXRlbUZvclVS
TFN0cmluZyhsb2FkZXItPmNsaWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeSgpKSkgeworICAg
ICAgICAgICAgICAgICAgICBDT01QdHI8V2ViSGlzdG9yeUl0ZW0+IHdlYkhpc3RvcnlJdGVtKFF1
ZXJ5LCBpV2ViSGlzdG9yeUl0ZW0pOworICAgICAgICAgICAgICAgICAgICB3ZWJIaXN0b3J5SXRl
bS0+aGlzdG9yeUl0ZW0oKS0+YWRkUmVkaXJlY3RVUkwobG9hZGVyLT5jbGllbnRSZWRpcmVjdERl
c3RpbmF0aW9uRm9ySGlzdG9yeSgpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CiAgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoIWxvYWRlci0+c2VydmVyUmVkaXJlY3RTb3Vy
Y2VGb3JIaXN0b3J5KCkuaXNOdWxsKCkpIHsKLSAgICAgICAgaWYgKENPTVB0cjxJV2ViSGlzdG9y
eUl0ZW0+IGlXZWJIaXN0b3J5SXRlbSA9IGhpc3RvcnktPml0ZW1Gb3JVUkxTdHJpbmcobG9hZGVy
LT5zZXJ2ZXJSZWRpcmVjdFNvdXJjZUZvckhpc3RvcnkoKSkpIHsKLSAgICAgICAgICAgIENPTVB0
cjxXZWJIaXN0b3J5SXRlbT4gd2ViSGlzdG9yeUl0ZW0oUXVlcnksIGlXZWJIaXN0b3J5SXRlbSk7
Ci0gICAgICAgICAgICB3ZWJIaXN0b3J5SXRlbS0+aGlzdG9yeUl0ZW0oKS0+YWRkUmVkaXJlY3RV
UkwobG9hZGVyLT5zZXJ2ZXJSZWRpcmVjdERlc3RpbmF0aW9uRm9ySGlzdG9yeSgpKTsKKyAgICAg
ICAgaWYgKGhpc3RvcnlEZWxlZ2F0ZSkgeworICAgICAgICAgICAgQlN0cmluZyBzb3VyY2VVUkwo
bG9hZGVyLT5zZXJ2ZXJSZWRpcmVjdFNvdXJjZUZvckhpc3RvcnkoKSk7CisgICAgICAgICAgICBC
U3RyaW5nIGRlc3RVUkwobG9hZGVyLT5zZXJ2ZXJSZWRpcmVjdERlc3RpbmF0aW9uRm9ySGlzdG9y
eSgpKTsKKyAgICAgICAgICAgIGhpc3RvcnlEZWxlZ2F0ZS0+ZGlkUGVyZm9ybVNlcnZlclJlZGly
ZWN0RnJvbVVSTCh3ZWJWaWV3LCBzb3VyY2VVUkwsIGRlc3RVUkwsIG1fd2ViRnJhbWUpOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKGhpc3RvcnkpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoQ09NUHRyPElXZWJIaXN0b3J5SXRlbT4gaVdlYkhpc3RvcnlJdGVtID0gaGlzdG9yeS0+
aXRlbUZvclVSTFN0cmluZyhsb2FkZXItPnNlcnZlclJlZGlyZWN0U291cmNlRm9ySGlzdG9yeSgp
KSkgeworICAgICAgICAgICAgICAgICAgICBDT01QdHI8V2ViSGlzdG9yeUl0ZW0+IHdlYkhpc3Rv
cnlJdGVtKFF1ZXJ5LCBpV2ViSGlzdG9yeUl0ZW0pOworICAgICAgICAgICAgICAgICAgICB3ZWJI
aXN0b3J5SXRlbS0+aGlzdG9yeUl0ZW0oKS0+YWRkUmVkaXJlY3RVUkwobG9hZGVyLT5zZXJ2ZXJS
ZWRpcmVjdERlc3RpbmF0aW9uRm9ySGlzdG9yeSgpKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC01NzIsNiArNjA5LDE2IEBAIFBhc3NS
ZWZQdHI8RG9jdW1lbnRMb2FkZXI+IFdlYkZyYW1lTG9hZGUKIAogdm9pZCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6c2V0VGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgS1VSTCYgdXJsKQog
eworICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBtX3dlYkZyYW1lLT53ZWJWaWV3KCk7CisgICAgQ09N
UHRyPElXZWJIaXN0b3J5RGVsZWdhdGU+IGhpc3RvcnlEZWxlZ2F0ZTsKKyAgICB3ZWJWaWV3LT5o
aXN0b3J5RGVsZWdhdGUoJmhpc3RvcnlEZWxlZ2F0ZSk7CisgICAgaWYgKGhpc3RvcnlEZWxlZ2F0
ZSkgeworICAgICAgICBCU3RyaW5nIHRpdGxlQlNUUih0aXRsZSk7CisgICAgICAgIEJTdHJpbmcg
dXJsQlNUUih1cmwuc3RyaW5nKCkpOworICAgICAgICBoaXN0b3J5RGVsZWdhdGUtPnVwZGF0ZUhp
c3RvcnlUaXRsZSh3ZWJWaWV3LCB0aXRsZUJTVFIsIHVybEJTVFIpOworICAgICAgICByZXR1cm47
CisgICAgfQorCiAgICAgQk9PTCBwcml2YXRlQnJvd3NpbmdFbmFibGVkID0gRkFMU0U7CiAgICAg
Q09NUHRyPElXZWJQcmVmZXJlbmNlcz4gcHJlZmVyZW5jZXM7CiAgICAgaWYgKFNVQ0NFRURFRCht
X3dlYkZyYW1lLT53ZWJWaWV3KCktPnByZWZlcmVuY2VzKCZwcmVmZXJlbmNlcykpKQpJbmRleDog
V2ViS2l0L3dpbi9XZWJLaXQudmNwcm9qL0ludGVyZmFjZXMudmNwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdC93aW4vV2ViS2l0LnZjcHJvai9JbnRlcmZhY2VzLnZjcHJvaiAgICAocmV2aXNpb24g
NDk0ODcpCisrKyBXZWJLaXQvd2luL1dlYktpdC52Y3Byb2ovSW50ZXJmYWNlcy52Y3Byb2ogICAg
KHdvcmtpbmcgY29weSkKQEAgLTc4NCw2ICs3ODQsMjYgQEAKICAgICAgICAgICAgIDwvRmlsZUNv
bmZpZ3VyYXRpb24+CiAgICAgICAgIDwvRmlsZT4KICAgICAgICAgPEZpbGUKKyAgICAgICAgICAg
IFJlbGF0aXZlUGF0aD0iLi5cSW50ZXJmYWNlc1xJV2ViSGlzdG9yeURlbGVnYXRlLmlkbCIKKyAg
ICAgICAgICAgID4KKyAgICAgICAgICAgIDxGaWxlQ29uZmlndXJhdGlvbgorICAgICAgICAgICAg
ICAgIE5hbWU9IkRlYnVnfFdpbjMyIgorICAgICAgICAgICAgICAgIEV4Y2x1ZGVkRnJvbUJ1aWxk
PSJ0cnVlIgorICAgICAgICAgICAgICAgID4KKyAgICAgICAgICAgICAgICA8VG9vbAorICAgICAg
ICAgICAgICAgICAgICBOYW1lPSJWQ01JRExUb29sIgorICAgICAgICAgICAgICAgIC8+CisgICAg
ICAgICAgICA8L0ZpbGVDb25maWd1cmF0aW9uPgorICAgICAgICAgICAgPEZpbGVDb25maWd1cmF0
aW9uCisgICAgICAgICAgICAgICAgTmFtZT0iUmVsZWFzZXxXaW4zMiIKKyAgICAgICAgICAgICAg
ICBFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKyAgICAgICAgICAgICAgICA+CisgICAgICAgICAg
ICAgICAgPFRvb2wKKyAgICAgICAgICAgICAgICAgICAgTmFtZT0iVkNNSURMVG9vbCIKKyAgICAg
ICAgICAgICAgICAvPgorICAgICAgICAgICAgPC9GaWxlQ29uZmlndXJhdGlvbj4KKyAgICAgICAg
PC9GaWxlPgorICAgICAgICA8RmlsZQogICAgICAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlxJbnRl
cmZhY2VzXElXZWJIaXN0b3J5SXRlbS5pZGwiCiAgICAgICAgICAgICA+CiAgICAgICAgICAgICA8
RmlsZUNvbmZpZ3VyYXRpb24KQEAgLTEwNDQsNiArMTA2NCwyNiBAQAogICAgICAgICAgICAgPC9G
aWxlQ29uZmlndXJhdGlvbj4KICAgICAgICAgPC9GaWxlPgogICAgICAgICA8RmlsZQorICAgICAg
ICAgICAgUmVsYXRpdmVQYXRoPSIuLlxJbnRlcmZhY2VzXElXZWJOYXZpZ2F0aW9uRGF0YS5pZGwi
CisgICAgICAgICAgICA+CisgICAgICAgICAgICA8RmlsZUNvbmZpZ3VyYXRpb24KKyAgICAgICAg
ICAgICAgICBOYW1lPSJEZWJ1Z3xXaW4zMiIKKyAgICAgICAgICAgICAgICBFeGNsdWRlZEZyb21C
dWlsZD0idHJ1ZSIKKyAgICAgICAgICAgICAgICA+CisgICAgICAgICAgICAgICAgPFRvb2wKKyAg
ICAgICAgICAgICAgICAgICAgTmFtZT0iVkNNSURMVG9vbCIKKyAgICAgICAgICAgICAgICAvPgor
ICAgICAgICAgICAgPC9GaWxlQ29uZmlndXJhdGlvbj4KKyAgICAgICAgICAgIDxGaWxlQ29uZmln
dXJhdGlvbgorICAgICAgICAgICAgICAgIE5hbWU9IlJlbGVhc2V8V2luMzIiCisgICAgICAgICAg
ICAgICAgRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisgICAgICAgICAgICAgICAgPgorICAgICAg
ICAgICAgICAgIDxUb29sCisgICAgICAgICAgICAgICAgICAgIE5hbWU9IlZDTUlETFRvb2wiCisg
ICAgICAgICAgICAgICAgLz4KKyAgICAgICAgICAgIDwvRmlsZUNvbmZpZ3VyYXRpb24+CisgICAg
ICAgIDwvRmlsZT4KKyAgICAgICAgPEZpbGUKICAgICAgICAgICAgIFJlbGF0aXZlUGF0aD0iLi5c
SW50ZXJmYWNlc1xJV2ViTm90aWZpY2F0aW9uLmlkbCIKICAgICAgICAgICAgID4KICAgICAgICAg
ICAgIDxGaWxlQ29uZmlndXJhdGlvbgpJbmRleDogV2ViS2l0L3dpbi9XZWJLaXQudmNwcm9qL1dl
YktpdC52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJLaXQudmNwcm9qL1dlYktp
dC52Y3Byb2ogICAgKHJldmlzaW9uIDQ5NDg3KQorKysgV2ViS2l0L3dpbi9XZWJLaXQudmNwcm9q
L1dlYktpdC52Y3Byb2ogICAgKHdvcmtpbmcgY29weSkKQEAgLTY3OSw2ICs2NzksMTAgQEAKICAg
ICAgICAgICAgICAgICA+CiAgICAgICAgICAgICA8L0ZpbGU+CiAgICAgICAgICAgICA8RmlsZQor
ICAgICAgICAgICAgICAgIFJlbGF0aXZlUGF0aD0iLi5cV2ViTmF2aWdhdGlvbkRhdGEuaCIKKyAg
ICAgICAgICAgICAgICA+CisgICAgICAgICAgICA8L0ZpbGU+CisgICAgICAgICAgICA8RmlsZQog
ICAgICAgICAgICAgICAgIFJlbGF0aXZlUGF0aD0iLi5cV2ViTm9kZUhpZ2hsaWdodC5oIgogICAg
ICAgICAgICAgICAgID4KICAgICAgICAgICAgIDwvRmlsZT4KQEAgLTk5NSw2ICs5OTksMTAgQEAK
ICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICA8L0ZpbGU+CiAgICAgICAgICAgICA8Rmls
ZQorICAgICAgICAgICAgICAgIFJlbGF0aXZlUGF0aD0iLi5cV2ViTmF2aWdhdGlvbkRhdGEuY3Bw
IgorICAgICAgICAgICAgICAgID4KKyAgICAgICAgICAgIDwvRmlsZT4KKyAgICAgICAgICAgIDxG
aWxlCiAgICAgICAgICAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlxXZWJOb3RpZmljYXRpb24uY3Bw
IgogICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgIDwvRmlsZT4KSW5kZXg6IFdlYktpdFRv
b2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9DaGFuZ2VMb2cgICAgKHJl
dmlzaW9uIDQ5NTA1KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nICAgICh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMzYgQEAKKzIwMDktMTAtMTMgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBw
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFdlYktpdCBXaW4gQVBJIHNob3VsZCBwcm92aWRlIGEgZGVsZWdhdGUgaW50ZXJmYWNlIGZvciBn
bG9iYWwgaGlzdG9yeS4KKyAgICAgICAgCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yOTkwNQorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0R1
bXBSZW5kZXJUcmVlLmNwcDoKKyAgICAgICAgKHNob3VsZExvZ0hpc3RvcnlEZWxlZ2F0ZXMpOgor
ICAgICAgICAocnVuVGVzdCk6CisgICAgICAgIChjcmVhdGVXZWJWaWV3QW5kT2Zmc2NyZWVuV2lu
ZG93KToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9EdW1w
UmVuZGVyVHJlZS52Y3Byb2o6CisgICAgICAgIAorICAgICAgICBBZGQgdGhlIElXZWJIaXN0b3J5
RGVsZWdhdGUgdG8gRFJUIFdpbmRvd3M6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0hp
c3RvcnlEZWxlZ2F0ZS5jcHA6IEFkZGVkLgorICAgICAgICAod3N0cmluZ0Zyb21CU1RSKToKKyAg
ICAgICAgKEhpc3RvcnlEZWxlZ2F0ZTo6SGlzdG9yeURlbGVnYXRlKToKKyAgICAgICAgKEhpc3Rv
cnlEZWxlZ2F0ZTo6fkhpc3RvcnlEZWxlZ2F0ZSk6CisgICAgICAgIChIaXN0b3J5RGVsZWdhdGU6
OlF1ZXJ5SW50ZXJmYWNlKToKKyAgICAgICAgKEhpc3RvcnlEZWxlZ2F0ZTo6QWRkUmVmKToKKyAg
ICAgICAgKEhpc3RvcnlEZWxlZ2F0ZTo6UmVsZWFzZSk6CisgICAgICAgIChIaXN0b3J5RGVsZWdh
dGU6OmRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhKToKKyAgICAgICAgKEhpc3RvcnlEZWxl
Z2F0ZTo6ZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0RnJvbVVSTCk6CisgICAgICAgIChIaXN0b3J5
RGVsZWdhdGU6OmRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdEZyb21VUkwpOgorICAgICAgICAoSGlz
dG9yeURlbGVnYXRlOjp1cGRhdGVIaXN0b3J5VGl0bGUpOgorICAgICAgICAoSGlzdG9yeURlbGVn
YXRlOjpwb3B1bGF0ZVZpc2l0ZWRMaW5rc0ZvcldlYlZpZXcpOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL3dpbi9IaXN0b3J5RGVsZWdhdGUuaDogQWRkZWQuCisgICAgICAgIAorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHA6CisgICAgICAg
IChMYXlvdXRUZXN0Q29udHJvbGxlcjo6cmVtb3ZlQWxsVmlzaXRlZExpbmtzKToKKwogMjAwOS0x
MC0xMyAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBO
byByZXZpZXcsIGp1c3QgYWRkaW5nIHNlbGYgdG8gdGhlIGxpc3Qgb2YgcmV2aWV3ZXJzLgpJbmRl
eDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUu
Y3BwICAgIChyZXZpc2lvbiA0OTQ4NykKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dp
bi9EdW1wUmVuZGVyVHJlZS5jcHAgICAgKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAK
IAogI2luY2x1ZGUgIkVkaXRpbmdEZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZERlbGVn
YXRlLmgiCisjaW5jbHVkZSAiSGlzdG9yeURlbGVnYXRlLmgiCiAjaW5jbHVkZSAiTGF5b3V0VGVz
dENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJQaXhlbER1bXBTdXBwb3J0LmgiCiAjaW5jbHVkZSAi
UG9saWN5RGVsZWdhdGUuaCIKQEAgLTk3LDYgKzk4LDcgQEAgQ09NUHRyPEZyYW1lTG9hZERlbGVn
YXRlPiBzaGFyZWRGcmFtZUxvYQogQ09NUHRyPFVJRGVsZWdhdGU+IHNoYXJlZFVJRGVsZWdhdGU7
CiBDT01QdHI8RWRpdGluZ0RlbGVnYXRlPiBzaGFyZWRFZGl0aW5nRGVsZWdhdGU7CiBDT01QdHI8
UmVzb3VyY2VMb2FkRGVsZWdhdGU+IHNoYXJlZFJlc291cmNlTG9hZERlbGVnYXRlOworQ09NUHRy
PEhpc3RvcnlEZWxlZ2F0ZT4gc2hhcmVkSGlzdG9yeURlbGVnYXRlOwogCiBJV2ViRnJhbWUqIGZy
YW1lOwogSFdORCB3ZWJWaWV3V2luZG93OwpAQCAtNjgxLDYgKzY4MywxMSBAQCBzdGF0aWMgYm9v
bCBzaG91bGRMb2dGcmFtZUxvYWREZWxlZ2F0ZXMoCiAgICAgcmV0dXJuIHN0cnN0cihwYXRoT3JV
UkwsICIvbG9hZGluZy8iKSB8fCBzdHJzdHIocGF0aE9yVVJMLCAiXFxsb2FkaW5nXFwiKTsKIH0K
IAorc3RhdGljIGJvb2wgc2hvdWxkTG9nSGlzdG9yeURlbGVnYXRlcyhjb25zdCBjaGFyKiBwYXRo
T3JVUkwpCit7CisgICAgcmV0dXJuIHN0cnN0cihwYXRoT3JVUkwsICIvZ2xvYmFsaGlzdG9yeS8i
KSB8fCBzdHJzdHIocGF0aE9yVVJMLCAiXFxnbG9iYWxoaXN0b3J5XFwiKTsKK30KKwogc3RhdGlj
IHZvaWQgcmVzZXREZWZhdWx0c1RvQ29uc2lzdGVudFZhbHVlcyhJV2ViUHJlZmVyZW5jZXMqIHBy
ZWZlcmVuY2VzKQogewogI2lmZGVmIFVTRV9NQUNfRk9OVFMKQEAgLTgzMyw5ICs4NDAsMTYgQEAg
c3RhdGljIHZvaWQgcnVuVGVzdChjb25zdCBzdHJpbmcmIHRlc3RQYQogCiAgICAgZ0xheW91dFRl
c3RDb250cm9sbGVyLT5zZXRJY29uRGF0YWJhc2VFbmFibGVkKGZhbHNlKTsKIAotICAgIGlmIChz
aG91bGRMb2dGcmFtZUxvYWREZWxlZ2F0ZXMocGF0aE9yVVJMLmNfc3RyKCkpKQotICAgICAgICBn
TGF5b3V0VGVzdENvbnRyb2xsZXItPnNldER1bXBGcmFtZUxvYWRDYWxsYmFja3ModHJ1ZSk7Ci0K
KyAgICBDT01QdHI8SVdlYlZpZXc+IHdlYlZpZXc7CisgICAgaWYgKFNVQ0NFRURFRChmcmFtZS0+
d2ViVmlldygmd2ViVmlldykpKSB7CisgICAgICAgIENPTVB0cjxJV2ViVmlld1ByaXZhdGU+IHZp
ZXdQcml2YXRlOworICAgICAgICBpZiAoU1VDQ0VFREVEKHdlYlZpZXctPlF1ZXJ5SW50ZXJmYWNl
KCZ2aWV3UHJpdmF0ZSkpKSB7CisgICAgICAgICAgICBpZiAoc2hvdWxkTG9nSGlzdG9yeURlbGVn
YXRlcyhwYXRoT3JVUkwuY19zdHIoKSkpCisgICAgICAgICAgICAgICAgdmlld1ByaXZhdGUtPnNl
dEhpc3RvcnlEZWxlZ2F0ZShzaGFyZWRIaXN0b3J5RGVsZWdhdGUuZ2V0KCkpOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIHZpZXdQcml2YXRlLT5zZXRIaXN0b3J5RGVsZWdhdGUo
MCk7CisgICAgICAgIH0KKyAgICB9CiAgICAgQ09NUHRyPElXZWJIaXN0b3J5PiBoaXN0b3J5Owog
ICAgIGlmIChTVUNDRUVERUQoV2ViS2l0Q3JlYXRlSW5zdGFuY2UoQ0xTSURfV2ViSGlzdG9yeSwg
MCwgX191dWlkb2YoaGlzdG9yeSksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmaGlzdG9yeSkp
KSkKICAgICAgICAgaGlzdG9yeS0+c2V0T3B0aW9uYWxTaGFyZWRIaXN0b3J5KDApOwpAQCAtODQz
LDggKzg1Nyw3IEBAIHN0YXRpYyB2b2lkIHJ1blRlc3QoY29uc3Qgc3RyaW5nJiB0ZXN0UGEKICAg
ICByZXNldFdlYlZpZXdUb0NvbnNpc3RlbnRTdGF0ZUJlZm9yZVRlc3RpbmcoKTsKIAogICAgIHBy
ZXZUZXN0QkZJdGVtID0gMDsKLSAgICBDT01QdHI8SVdlYlZpZXc+IHdlYlZpZXc7Ci0gICAgaWYg
KFNVQ0NFRURFRChmcmFtZS0+d2ViVmlldygmd2ViVmlldykpKSB7CisgICAgaWYgKHdlYlZpZXcp
IHsKICAgICAgICAgQ09NUHRyPElXZWJCYWNrRm9yd2FyZExpc3Q+IGJmTGlzdDsKICAgICAgICAg
aWYgKFNVQ0NFRURFRCh3ZWJWaWV3LT5iYWNrRm9yd2FyZExpc3QoJmJmTGlzdCkpKQogICAgICAg
ICAgICAgYmZMaXN0LT5jdXJyZW50SXRlbSgmcHJldlRlc3RCRkl0ZW0pOwpAQCAtMTA4Nyw2ICsx
MTAwLDkgQEAgSVdlYlZpZXcqIGNyZWF0ZVdlYlZpZXdBbmRPZmZzY3JlZW5XaW5kbwogICAgIGlm
IChGQUlMRUQod2ViVmlldy0+c2V0UmVzb3VyY2VMb2FkRGVsZWdhdGUoc2hhcmVkUmVzb3VyY2VM
b2FkRGVsZWdhdGUuZ2V0KCkpKSkKICAgICAgICAgcmV0dXJuIDA7CiAKKyAgICBpZiAoRkFJTEVE
KHZpZXdQcml2YXRlLT5zZXRIaXN0b3J5RGVsZWdhdGUoc2hhcmVkSGlzdG9yeURlbGVnYXRlLmdl
dCgpKSkpCisgICAgICAgIHJldHVybiAwOworCiAgICAgb3BlbldpbmRvd3MoKS5hcHBlbmQoaG9z
dFdpbmRvdyk7CiAgICAgd2luZG93VG9XZWJWaWV3TWFwKCkuc2V0KGhvc3RXaW5kb3csIHdlYlZp
ZXcpOwogICAgIHJldHVybiB3ZWJWaWV3OwpAQCAtMTE1Myw2ICsxMTY5LDcgQEAgaW50IG1haW4o
aW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkKICAgICBzaGFyZWRVSURlbGVnYXRlLmFkb3B0UmVmKG5l
dyBVSURlbGVnYXRlKTsKICAgICBzaGFyZWRFZGl0aW5nRGVsZWdhdGUuYWRvcHRSZWYobmV3IEVk
aXRpbmdEZWxlZ2F0ZSk7CiAgICAgc2hhcmVkUmVzb3VyY2VMb2FkRGVsZWdhdGUuYWRvcHRSZWYo
bmV3IFJlc291cmNlTG9hZERlbGVnYXRlKTsKKyAgICBzaGFyZWRIaXN0b3J5RGVsZWdhdGUuYWRv
cHRSZWYobmV3IEhpc3RvcnlEZWxlZ2F0ZSk7CiAKICAgICAvLyBGSVhNRSAtIG5lZWQgdG8gbWFr
ZSBEUlQgcGFzcyB3aXRoIFdpbmRvd3MgbmF0aXZlIGNvbnRyb2xzIDxodHRwOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTU5Mj4KICAgICBDT01QdHI8SVdlYlByZWZlcmVuY2Vz
PiB0bXBQcmVmZXJlbmNlczsKSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9E
dW1wUmVuZGVyVHJlZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLnZjcHJvaiAgICAocmV2aXNpb24gNDk0ODcpCisrKyBX
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUudmNwcm9qICAgICh3
b3JraW5nIGNvcHkpCkBAIC00NTYsNiArNDU2LDE0IEBACiAgICAgICAgICAgICAgICAgPgogICAg
ICAgICAgICAgPC9GaWxlPgogICAgICAgICAgICAgPEZpbGUKKyAgICAgICAgICAgICAgICBSZWxh
dGl2ZVBhdGg9Ii5cSGlzdG9yeURlbGVnYXRlLmNwcCIKKyAgICAgICAgICAgICAgICA+CisgICAg
ICAgICAgICA8L0ZpbGU+CisgICAgICAgICAgICA8RmlsZQorICAgICAgICAgICAgICAgIFJlbGF0
aXZlUGF0aD0iLlxIaXN0b3J5RGVsZWdhdGUuaCIKKyAgICAgICAgICAgICAgICA+CisgICAgICAg
ICAgICA8L0ZpbGU+CisgICAgICAgICAgICA8RmlsZQogICAgICAgICAgICAgICAgIFJlbGF0aXZl
UGF0aD0iLlxQb2xpY3lEZWxlZ2F0ZS5jcHAiCiAgICAgICAgICAgICAgICAgPgogICAgICAgICAg
ICAgPC9GaWxlPgpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0hpc3RvcnlE
ZWxlZ2F0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2lu
L0hpc3RvcnlEZWxlZ2F0ZS5jcHAgICAgKHJldmlzaW9uIDApCisrKyBXZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS93aW4vSGlzdG9yeURlbGVnYXRlLmNwcCAgICAocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwyMDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkhp
c3RvcnlEZWxlZ2F0ZS5oIgorCisjaW5jbHVkZSAiRHVtcFJlbmRlclRyZWUuaCIKKyNpbmNsdWRl
ICJEdW1wUmVuZGVyVHJlZVdpbi5oIgorI2luY2x1ZGUgIkxheW91dFRlc3RDb250cm9sbGVyLmgi
CisjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPFdlYktpdC9XZWJLaXQuaD4KKwordXNpbmcg
c3RkOjp3c3RyaW5nOworCitzdGF0aWMgaW5saW5lIHdzdHJpbmcgd3N0cmluZ0Zyb21CU1RSKEJT
VFIgc3RyKQoreworICAgIHJldHVybiB3c3RyaW5nKHN0ciwgOjpTeXNTdHJpbmdMZW4oc3RyKSk7
Cit9CisKK0hpc3RvcnlEZWxlZ2F0ZTo6SGlzdG9yeURlbGVnYXRlKCkKKyAgICA6IG1fcmVmQ291
bnQoMSkKK3sKK30KKworSGlzdG9yeURlbGVnYXRlOjp+SGlzdG9yeURlbGVnYXRlKCkKK3sKK30K
KworICAgIC8vIElVbmtub3duCitIUkVTVUxUIEhpc3RvcnlEZWxlZ2F0ZTo6UXVlcnlJbnRlcmZh
Y2UoUkVGSUlEIHJpaWQsIHZvaWQqKiBwcHZPYmplY3QpCit7CisgICAgKnBwdk9iamVjdCA9IDA7
CisgICAgaWYgKElzRXF1YWxHVUlEKHJpaWQsIElJRF9JVW5rbm93bikpCisgICAgICAgICpwcHZP
YmplY3QgPSBzdGF0aWNfY2FzdDxJV2ViSGlzdG9yeURlbGVnYXRlKj4odGhpcyk7CisgICAgZWxz
ZSBpZiAoSXNFcXVhbEdVSUQocmlpZCwgSUlEX0lXZWJIaXN0b3J5RGVsZWdhdGUpKQorICAgICAg
ICAqcHB2T2JqZWN0ID0gc3RhdGljX2Nhc3Q8SVdlYkhpc3RvcnlEZWxlZ2F0ZSo+KHRoaXMpOwor
ICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIEVfTk9JTlRFUkZBQ0U7CisKKyAgICBBZGRSZWYoKTsK
KyAgICByZXR1cm4gU19PSzsKK30KKworVUxPTkcgSGlzdG9yeURlbGVnYXRlOjpBZGRSZWYodm9p
ZCkKK3sKKyAgICByZXR1cm4gKyttX3JlZkNvdW50OworfQorCitVTE9ORyBIaXN0b3J5RGVsZWdh
dGU6OlJlbGVhc2Uodm9pZCkKK3sKKyAgICBVTE9ORyBuZXdSZWYgPSAtLW1fcmVmQ291bnQ7Cisg
ICAgaWYgKCFuZXdSZWYpCisgICAgICAgIGRlbGV0ZSh0aGlzKTsKKworICAgIHJldHVybiBuZXdS
ZWY7Cit9CisKKy8vIElXZWJIaXN0b3J5RGVsZWdhdGUKK0hSRVNVTFQgSGlzdG9yeURlbGVnYXRl
OjpkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YShJV2ViVmlldyogd2ViVmlldywgSVdlYk5h
dmlnYXRpb25EYXRhKiBuYXZpZ2F0aW9uRGF0YSwgSVdlYkZyYW1lKiB3ZWJGcmFtZSkKK3sKKyAg
ICBCU1RSIHVybEJTVFI7CisgICAgaWYgKEZBSUxFRChuYXZpZ2F0aW9uRGF0YS0+dXJsKCZ1cmxC
U1RSKSkpCisgICAgICAgIHJldHVybiBFX0ZBSUw7CisgICAgd3N0cmluZyB1cmw7CisgICAgaWYg
KHVybEJTVFIpCisgICAgICAgIHVybCA9IHVybFN1aXRhYmxlRm9yVGVzdFJlc3VsdCh3c3RyaW5n
RnJvbUJTVFIodXJsQlNUUikpOworICAgIFN5c0ZyZWVTdHJpbmcodXJsQlNUUik7CisKKyAgICBC
U1RSIHRpdGxlQlNUUjsKKyAgICBpZiAoRkFJTEVEKG5hdmlnYXRpb25EYXRhLT50aXRsZSgmdGl0
bGVCU1RSKSkpCisgICAgICAgIHJldHVybiBFX0ZBSUw7CisgICAgd3N0cmluZyB0aXRsZTsKKyAg
ICBpZiAodGl0bGVCU1RSKQorICAgICAgICB0aXRsZSA9IHdzdHJpbmdGcm9tQlNUUih0aXRsZUJT
VFIpOworICAgIFN5c0ZyZWVTdHJpbmcodGl0bGVCU1RSKTsKKworICAgIENPTVB0cjxJV2ViVVJM
UmVxdWVzdD4gcmVxdWVzdDsKKyAgICBpZiAoRkFJTEVEKG5hdmlnYXRpb25EYXRhLT5vcmlnaW5h
bFJlcXVlc3QoJnJlcXVlc3QpKSkKKyAgICAgICAgcmV0dXJuIEVfRkFJTDsKKworICAgIEJTVFIg
aHR0cE1ldGhvZEJTVFI7CisgICAgaWYgKEZBSUxFRChyZXF1ZXN0LT5IVFRQTWV0aG9kKCZodHRw
TWV0aG9kQlNUUikpKQorICAgICAgICByZXR1cm4gRV9GQUlMOworICAgIHdzdHJpbmcgaHR0cE1l
dGhvZDsKKyAgICBpZiAoaHR0cE1ldGhvZEJTVFIpCisgICAgICAgIGh0dHBNZXRob2QgPSB3c3Ry
aW5nRnJvbUJTVFIoaHR0cE1ldGhvZEJTVFIpOworICAgIFN5c0ZyZWVTdHJpbmcoaHR0cE1ldGhv
ZEJTVFIpOworCisgICAgQ09NUHRyPElXZWJVUkxSZXNwb25zZT4gcmVzcG9uc2U7CisgICAgaWYg
KEZBSUxFRChuYXZpZ2F0aW9uRGF0YS0+cmVzcG9uc2UoJnJlc3BvbnNlKSkpCisgICAgICAgIHJl
dHVybiBFX0ZBSUw7CisKKyAgICBDT01QdHI8SVdlYkhUVFBVUkxSZXNwb25zZT4gaHR0cFJlc3Bv
bnNlOworICAgIGlmIChGQUlMRUQocmVzcG9uc2UtPlF1ZXJ5SW50ZXJmYWNlKCZodHRwUmVzcG9u
c2UpKSkKKyAgICAgICAgcmV0dXJuIEVfRkFJTDsKKworICAgIGludCBzdGF0dXNDb2RlID0gMDsK
KyAgICBpZiAoRkFJTEVEKGh0dHBSZXNwb25zZS0+c3RhdHVzQ29kZSgmc3RhdHVzQ29kZSkpKQor
ICAgICAgICByZXR1cm4gRV9GQUlMOworCisgICAgQk9PTCBoYXNTdWJzdGl0dXRlRGF0YTsKKyAg
ICBpZiAoRkFJTEVEKG5hdmlnYXRpb25EYXRhLT5oYXNTdWJzdGl0dXRlRGF0YSgmaGFzU3Vic3Rp
dHV0ZURhdGEpKSkKKyAgICAgICAgcmV0dXJuIEVfRkFJTDsKKworICAgIEJTVFIgY2xpZW50UmVk
aXJlY3RTb3VyY2VCU1RSOworICAgIGlmIChGQUlMRUQobmF2aWdhdGlvbkRhdGEtPmNsaWVudFJl
ZGlyZWN0U291cmNlKCZjbGllbnRSZWRpcmVjdFNvdXJjZUJTVFIpKSkKKyAgICAgICAgcmV0dXJu
IEVfRkFJTDsKKyAgICBib29sIGhhc0NsaWVudFJlZGlyZWN0ID0gY2xpZW50UmVkaXJlY3RTb3Vy
Y2VCU1RSICYmIFN5c1N0cmluZ0xlbihjbGllbnRSZWRpcmVjdFNvdXJjZUJTVFIpOworICAgIHdz
dHJpbmcgcmVkaXJlY3RTb3VyY2U7CisgICAgaWYgKGNsaWVudFJlZGlyZWN0U291cmNlQlNUUikK
KyAgICAgICAgcmVkaXJlY3RTb3VyY2UgPSB1cmxTdWl0YWJsZUZvclRlc3RSZXN1bHQod3N0cmlu
Z0Zyb21CU1RSKGNsaWVudFJlZGlyZWN0U291cmNlQlNUUikpOworICAgIFN5c0ZyZWVTdHJpbmco
Y2xpZW50UmVkaXJlY3RTb3VyY2VCU1RSKTsKKworICAgIGJvb2wgd2FzRmFpbHVyZSA9IGhhc1N1
YnN0aXR1dGVEYXRhIHx8IChodHRwUmVzcG9uc2UgJiYgc3RhdHVzQ29kZSA+PSA0MDApOworICAg
ICAgICAKKyAgICBwcmludGYoIldlYlZpZXcgbmF2aWdhdGVkIHRvIHVybCBcIiVTXCIgd2l0aCB0
aXRsZSBcIiVTXCIgd2l0aCBIVFRQIGVxdWl2YWxlbnQgbWV0aG9kIFwiJVNcIi4gIFRoZSBuYXZp
Z2F0aW9uIHdhcyAlcyBhbmQgd2FzICVzJVMuXG4iLCAKKyAgICAgICAgdXJsLmNfc3RyKCksIAor
ICAgICAgICB0aXRsZS5jX3N0cigpLCAKKyAgICAgICAgaHR0cE1ldGhvZC5jX3N0cigpLAorICAg
ICAgICB3YXNGYWlsdXJlID8gImEgZmFpbHVyZSIgOiAic3VjY2Vzc2Z1bCIsIAorICAgICAgICBo
YXNDbGllbnRSZWRpcmVjdCA/ICJhIGNsaWVudCByZWRpcmVjdCBmcm9tICIgOiAibm90IGEgY2xp
ZW50IHJlZGlyZWN0IiwgCisgICAgICAgIHJlZGlyZWN0U291cmNlLmNfc3RyKCkpOworCisgICAg
cmV0dXJuIFNfT0s7Cit9CisKK0hSRVNVTFQgSGlzdG9yeURlbGVnYXRlOjpkaWRQZXJmb3JtQ2xp
ZW50UmVkaXJlY3RGcm9tVVJMKElXZWJWaWV3KiwgQlNUUiBzb3VyY2VVUkwsIEJTVFIgZGVzdGlu
YXRpb25VUkwsIElXZWJGcmFtZSopCit7CisgICAgd3N0cmluZyBzb3VyY2U7CisgICAgaWYgKHNv
dXJjZVVSTCkKKyAgICAgICAgc291cmNlID0gdXJsU3VpdGFibGVGb3JUZXN0UmVzdWx0KHdzdHJp
bmdGcm9tQlNUUihzb3VyY2VVUkwpKTsKKyAgICAKKyAgICB3c3RyaW5nIGRlc3RpbmF0aW9uOwor
ICAgIGlmIChkZXN0aW5hdGlvblVSTCkKKyAgICAgICAgZGVzdGluYXRpb24gPSB1cmxTdWl0YWJs
ZUZvclRlc3RSZXN1bHQod3N0cmluZ0Zyb21CU1RSKGRlc3RpbmF0aW9uVVJMKSk7CisKKyAgICBw
cmludGYoIldlYlZpZXcgcGVyZm9ybWVkIGEgY2xpZW50IHJlZGlyZWN0IGZyb20gXCIlU1wiIHRv
IFwiJVNcIi5cbiIsIHNvdXJjZS5jX3N0cigpLCBkZXN0aW5hdGlvbi5jX3N0cigpKTsKKyAgICBy
ZXR1cm4gU19PSzsKK30KKyAgICAKK0hSRVNVTFQgSGlzdG9yeURlbGVnYXRlOjpkaWRQZXJmb3Jt
U2VydmVyUmVkaXJlY3RGcm9tVVJMKElXZWJWaWV3KiB3ZWJWaWV3LCBCU1RSIHNvdXJjZVVSTCwg
QlNUUiBkZXN0aW5hdGlvblVSTCwgSVdlYkZyYW1lKiB3ZWJGcmFtZSkKK3sKKyAgICB3c3RyaW5n
IHNvdXJjZTsKKyAgICBpZiAoc291cmNlVVJMKQorICAgICAgICBzb3VyY2UgPSB1cmxTdWl0YWJs
ZUZvclRlc3RSZXN1bHQod3N0cmluZ0Zyb21CU1RSKHNvdXJjZVVSTCkpOworICAgIAorICAgIHdz
dHJpbmcgZGVzdGluYXRpb247CisgICAgaWYgKGRlc3RpbmF0aW9uVVJMKQorICAgICAgICBkZXN0
aW5hdGlvbiA9IHVybFN1aXRhYmxlRm9yVGVzdFJlc3VsdCh3c3RyaW5nRnJvbUJTVFIoZGVzdGlu
YXRpb25VUkwpKTsKKworICAgIHByaW50ZigiV2ViVmlldyBwZXJmb3JtZWQgYSBzZXJ2ZXIgcmVk
aXJlY3QgZnJvbSBcIiVTXCIgdG8gXCIlU1wiLlxuIiwgc291cmNlLmNfc3RyKCksIGRlc3RpbmF0
aW9uLmNfc3RyKCkpOworICAgIHJldHVybiBTX09LOworfQorCitIUkVTVUxUIEhpc3RvcnlEZWxl
Z2F0ZTo6dXBkYXRlSGlzdG9yeVRpdGxlKElXZWJWaWV3KiB3ZWJWaWV3LCBCU1RSIHRpdGxlQlNU
UiwgQlNUUiB1cmxCU1RSKQoreworICAgIHdzdHJpbmcgdXJsOworICAgIGlmICh1cmxCU1RSKQor
ICAgICAgICB1cmwgPSB1cmxTdWl0YWJsZUZvclRlc3RSZXN1bHQod3N0cmluZ0Zyb21CU1RSKHVy
bEJTVFIpKTsKKworICAgIHdzdHJpbmcgdGl0bGU7CisgICAgaWYgKHRpdGxlQlNUUikKKyAgICAg
ICAgdGl0bGUgPSB3c3RyaW5nRnJvbUJTVFIodGl0bGVCU1RSKTsKKworICAgIHByaW50ZigiV2Vi
VmlldyB1cGRhdGVkIHRoZSB0aXRsZSBmb3IgaGlzdG9yeSBVUkwgXCIlU1wiIHRvIFwiJVNcIi5c
biIsIHVybC5jX3N0cigpLCB0aXRsZS5jX3N0cigpKTsKKyAgICByZXR1cm4gU19PSzsKK30KKyAg
ICAKK0hSRVNVTFQgSGlzdG9yeURlbGVnYXRlOjpwb3B1bGF0ZVZpc2l0ZWRMaW5rc0ZvcldlYlZp
ZXcoSVdlYlZpZXcqIHdlYlZpZXcpCit7CisgICAgQlNUUiB1cmxCU1RSOworICAgIGlmIChGQUlM
RUQod2ViVmlldy0+bWFpbkZyYW1lVVJMKCZ1cmxCU1RSKSkpCisgICAgICAgIHJldHVybiBFX0ZB
SUw7CisKKyAgICB3c3RyaW5nIHVybDsKKyAgICBpZiAodXJsQlNUUikKKyAgICAgICAgdXJsID0g
dXJsU3VpdGFibGVGb3JUZXN0UmVzdWx0KHdzdHJpbmdGcm9tQlNUUih1cmxCU1RSKSk7CisgICAg
U3lzRnJlZVN0cmluZyh1cmxCU1RSKTsKKworICAgIGlmIChnTGF5b3V0VGVzdENvbnRyb2xsZXIt
PmR1bXBWaXNpdGVkTGlua3NDYWxsYmFjaygpKQorICAgICAgICBwcmludGYoIkFza2VkIHRvIHBv
cHVsYXRlIHZpc2l0ZWQgbGlua3MgZm9yIFdlYlZpZXcgXCIlU1wiXG4iLCB1cmwuY19zdHIoKSk7
CisKKyAgICByZXR1cm4gU19PSzsKK30KClByb3BlcnR5IGNoYW5nZXMgb246IFdlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL3dpbi9IaXN0b3J5RGVsZWdhdGUuY3BwCl9fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6
IHN2bjpleGVjdXRhYmxlCiAgICsgKgoKSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L3dpbi9IaXN0b3J5RGVsZWdhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS93aW4vSGlzdG9yeURlbGVnYXRlLmggICAgKHJldmlzaW9uIDApCisrKyBXZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS93aW4vSGlzdG9yeURlbGVnYXRlLmggICAgKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBIaXN0b3J5RGVsZWdhdGVfaAor
I2RlZmluZSBIaXN0b3J5RGVsZWdhdGVfaAorCisjaW5jbHVkZSA8V2ViS2l0L1dlYktpdC5oPgor
I2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKworY2xhc3MgSGlzdG9yeURlbGVnYXRlIDogcHVibGlj
IElXZWJIaXN0b3J5RGVsZWdhdGUgeworcHVibGljOgorICAgIEhpc3RvcnlEZWxlZ2F0ZSgpOwor
ICAgIHZpcnR1YWwgfkhpc3RvcnlEZWxlZ2F0ZSgpOworCisgICAgLy8gSVVua25vd24KKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZhY2UoUkVGSUlEIHJp
aWQsIHZvaWQqKiBwcHZPYmplY3QpOworICAgIHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZ
UEUgQWRkUmVmKHZvaWQpOworICAgIHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgUmVs
ZWFzZSh2b2lkKTsKKworICAgIC8vIElXZWJIaXN0b3J5RGVsZWdhdGUKKyAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEoCisg
ICAgICAgIC8qIFtpbl0gKi8gSVdlYlZpZXcqIHdlYlZpZXcsIAorICAgICAgICAvKiBbaW5dICov
IElXZWJOYXZpZ2F0aW9uRGF0YSogbmF2aWdhdGlvbkRhdGEsIAorICAgICAgICAvKiBbaW5dICov
IElXZWJGcmFtZSogd2ViRnJhbWUpOworCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIGRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdEZyb21VUkwoCisgICAgICAgIC8qIFtpbl0g
Ki8gSVdlYlZpZXcqIHdlYlZpZXcsIAorICAgICAgICAvKiBbaW5dICovIEJTVFIgc291cmNlVVJM
LCAKKyAgICAgICAgLyogW2luXSAqLyBCU1RSIGRlc3RpbmF0aW9uVVJMLCAKKyAgICAgICAgLyog
W2luXSAqLyBJV2ViRnJhbWUqIHdlYkZyYW1lKTsKKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0RnJvbVVSTCgKKyAgICAg
ICAgLyogW2luXSAqLyBJV2ViVmlldyogd2ViVmlldywgCisgICAgICAgIC8qIFtpbl0gKi8gQlNU
UiBzb3VyY2VVUkwsIAorICAgICAgICAvKiBbaW5dICovIEJTVFIgZGVzdGluYXRpb25VUkwsIAor
ICAgICAgICAvKiBbaW5dICovIElXZWJGcmFtZSogd2ViRnJhbWUpOworICAgIAorICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB1cGRhdGVIaXN0b3J5VGl0bGUoCisgICAgICAg
IC8qIFtpbl0gKi8gSVdlYlZpZXcqIHdlYlZpZXcsIAorICAgICAgICAvKiBbaW5dICovIEJTVFIg
dGl0bGUsIAorICAgICAgICAvKiBbaW5dICovIEJTVFIgdXJsKTsKKyAgICAKKyAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcG9wdWxhdGVWaXNpdGVkTGlua3NGb3JXZWJWaWV3
KAorICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3KiB3ZWJWaWV3KTsKKworcHJpdmF0ZToKKyAg
ICBVTE9ORyBtX3JlZkNvdW50OworfTsKKworI2VuZGlmIC8vIEhpc3RvcnlEZWxlZ2F0ZV9oCgpQ
cm9wZXJ0eSBjaGFuZ2VzIG9uOiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vSGlzdG9y
eURlbGVnYXRlLmgKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmV4ZWN1dGFibGUKICAgKyAqCgpJbmRl
eDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2lu
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0
VGVzdENvbnRyb2xsZXJXaW4uY3BwICAgIChyZXZpc2lvbiA0OTQ4NykKKysrIFdlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAgICAgKHdvcmtp
bmcgY29weSkKQEAgLTkxNSw1ICs5MTUsMTcgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
ZXZhbHVhdGVJbldlYgogCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpyZW1vdmVBbGxWaXNp
dGVkTGlua3MoKQogewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KKyAgICBDT01QdHI8
SVdlYkhpc3Rvcnk+IGhpc3Rvcnk7CisgICAgaWYgKEZBSUxFRChXZWJLaXRDcmVhdGVJbnN0YW5j
ZShDTFNJRF9XZWJIaXN0b3J5LCAwLCBfX3V1aWRvZihoaXN0b3J5KSwgcmVpbnRlcnByZXRfY2Fz
dDx2b2lkKio+KCZoaXN0b3J5KSkpKQorICAgICAgICByZXR1cm47CisKKyAgICBDT01QdHI8SVdl
Ykhpc3Rvcnk+IHNoYXJlZEhpc3Rvcnk7CisgICAgaWYgKEZBSUxFRChoaXN0b3J5LT5vcHRpb25h
bFNoYXJlZEhpc3RvcnkoJnNoYXJlZEhpc3RvcnkpKSB8fCAhc2hhcmVkSGlzdG9yeSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgQ09NUHRyPElXZWJIaXN0b3J5UHJpdmF0ZT4gc2hhcmVkSGlzdG9y
eVByaXZhdGU7CisgICAgaWYgKEZBSUxFRChzaGFyZWRIaXN0b3J5LT5RdWVyeUludGVyZmFjZSgm
c2hhcmVkSGlzdG9yeVByaXZhdGUpKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc2hhcmVkSGlz
dG9yeVByaXZhdGUtPnJlbW92ZUFsbFZpc2l0ZWRMaW5rcygpOwogfQpJbmRleDogTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZyAgICAocmV2
aXNpb24gNDk1MDUpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cgICAgKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxMyBAQAorMjAwOS0xMC0xMyAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
V2ViS2l0IFdpbiBBUEkgc2hvdWxkIHByb3ZpZGUgYSBkZWxlZ2F0ZSBpbnRlcmZhY2UgZm9yIGds
b2JhbCBoaXN0b3J5LgorICAgICAgICAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTI5OTA1CisKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2tpcHBlZDog
RW5hYmxlIGdsb2JhbGhpc3RvcnkgdGVzdHMuCisKIDIwMDktMTAtMTMgIFBhdmVsIEZlbGRtYW4g
IDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTGF5b3V0IHRlc3QgZml4LCByZXZl
cnRpbmcgcHJldmlvdXMgY2hhbmdlLgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Nr
aXBwZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQgICAg
KHJldmlzaW9uIDQ5NDg3KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQgICAg
KHdvcmtpbmcgY29weSkKQEAgLTY4MCw4ICs2ODAsNSBAQCBodHRwL3Rlc3RzL3htbGh0dHByZXF1
ZXN0L3htbGh0dHByZXF1ZXN0CiAjIFRoaXMgcG9ydCBkb2Vzbid0IHN1cHBvcnQgZGV0ZWN0aW5n
IHNsb3cgdW5sb2FkIGhhbmRsZXJzLgogZmFzdC9kb20vV2luZG93L3Nsb3dfdW5sb2FkX2hhbmRs
ZXIuaHRtbAogCi0jIFRoaXMgcG9ydCBkb2Vzbid0IGhhdmUgYSBnbG9iYWwgaGlzdG9yeSBkZWxl
Z2F0ZSB5ZXQKLWh0dHAvdGVzdHMvZ2xvYmFsaGlzdG9yeQotCiAjIDxodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjk5NjY+CiBmYXN0L2lubGluZS9yZWxhdGl2ZS1wb3Np
dGlvbmVkLW92ZXJmbG93Lmh0bWwK
</data>
<flag name="review"
          id="22450"
          type_id="1"
          status="+"
          setter="sam"
    />
    <flag name="commit-queue"
          id="22451"
          type_id="3"
          status="-"
          setter="beidson"
    />
          </attachment>
      

    </bug>

</bugzilla>