<?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>146983</bug_id>
          
          <creation_ts>2015-07-15 14:45:49 -0700</creation_ts>
          <short_desc>[Win] Maintain consistent COM Interfaces</short_desc>
          <delta_ts>2015-07-15 18:46:58 -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>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</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="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Brent Fulgham">bfulgham</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1109724</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-07-15 14:45:49 -0700</bug_when>
    <thetext>Our COM interfaces should follow proper behavior, and not change. As we add new features, we should be adding new interface versions to allow existing binaries to continue to work with newer WebKit releases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109725</commentid>
    <comment_count>1</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-07-15 14:46:05 -0700</bug_when>
    <thetext>&lt;rdar://problem/21822278&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109733</commentid>
    <comment_count>2</comment_count>
      <attachid>256868</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-07-15 15:07:15 -0700</bug_when>
    <thetext>Created attachment 256868
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109802</commentid>
    <comment_count>3</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-07-15 18:46:58 -0700</bug_when>
    <thetext>Committed r186881: &lt;http://trac.webkit.org/changeset/186881&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256868</attachid>
            <date>2015-07-15 15:07:15 -0700</date>
            <delta_ts>2015-07-15 15:13:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146983-20150715151932.patch</filename>
            <type>text/plain</type>
            <size>51842</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4Njg2MSkKKysrIFNvdXJjZS9XZWJLaXQv
d2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYxIEBACisyMDE1LTA3LTE1
ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtXaW5dIE1h
aW50YWluIGNvbnNpc3RlbnQgQ09NIEludGVyZmFjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0Njk4MworICAgICAgICA8cmRhcjovL3Byb2JsZW0v
MjE4MjIyNzg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgS2VlcCBXZWJLaXQncyBDT00gaW50ZXJmYWNlIGNvbXBhdGlibGUgd2l0aCBzb2Z0d2FyZQor
ICAgICAgICBsaW5rZWQgYWdhaW5zdCBlYXJsaWVyIFdlYktpdCByZWxlYXNlczoKKyAgICAgICAg
MS4gVXBkYXRlIElETCB0byBwcmVzZW50IHRoZSBzYW1lIGludGVyZmFjZSBhcyBlYXJsaWVyCisg
ICAgICAgICAgIHJlbGVhc2VzIG9mIFdlYktpdC4KKyAgICAgICAgMi4gQWRkIG5ldyBpbnRlcmZh
Y2Ugb2JqZWN0cyAoaS5nLiwgSVdlYkZyYW1lMikgZXh0ZW5kaW5nCisgICAgICAgICAgIGVhcmxp
ZXIgaW50ZXJmYWNlcyB3aGVuIGFkZGluZyBuZXcgbWV0aG9kcy4KKyAgICAgICAgMy4gVXBkYXRl
IG91ciBpbnRlcm5hbCBzb2Z0d2FyZSB0byB1c2UgdGhlIGNvcnJlY3QgaW50ZXJmYWNlCisgICAg
ICAgICAgIG9iamVjdHMuCisKKyAgICAgICAgKiBEZWZhdWx0UG9saWN5RGVsZWdhdGUuY3BwOgor
ICAgICAgICAoRGVmYXVsdFBvbGljeURlbGVnYXRlOjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
QWN0aW9uKToKKyAgICAgICAgKiBJbnRlcmZhY2VzL0lXZWJFZGl0aW5nRGVsZWdhdGUuaWRsOgor
ICAgICAgICAqIEludGVyZmFjZXMvSVdlYkZyYW1lLmlkbDoKKyAgICAgICAgKiBJbnRlcmZhY2Vz
L0lXZWJQcmVmZXJlbmNlc1ByaXZhdGUuaWRsOgorICAgICAgICAqIEludGVyZmFjZXMvSVdlYlNl
Y3VyaXR5T3JpZ2luLmlkbDoKKyAgICAgICAgKiBJbnRlcmZhY2VzL0lXZWJVSURlbGVnYXRlUHJp
dmF0ZS5pZGw6CisgICAgICAgICogSW50ZXJmYWNlcy9JV2ViVmlld1ByaXZhdGUuaWRsOgorICAg
ICAgICAqIEludGVyZmFjZXMvV2ViS2l0LmlkbDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpzaG91bGRJbnNl
cnROb2RlKToKKyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJGcmFtZTo6dXBk
YXRlQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJGcmFtZTo6aXNNYWluRnJhbWUpOgorICAgICAg
ICAqIFdlYkZyYW1lLmg6CisgICAgICAgICogV2ViUHJlZmVyZW5jZXMuY3BwOgorICAgICAgICAo
V2ViUHJlZmVyZW5jZXM6OmluaXRpYWxpemVEZWZhdWx0U2V0dGluZ3MpOgorICAgICAgICAoV2Vi
UHJlZmVyZW5jZXM6OlF1ZXJ5SW50ZXJmYWNlKToKKyAgICAgICAgKFdlYlByZWZlcmVuY2VzOjpz
ZXRNb2NrU2Nyb2xsYmFyc0VuYWJsZWQpOgorICAgICAgICAoV2ViUHJlZmVyZW5jZXM6OnNjcmVl
bkZvbnRTdWJzdGl0dXRpb25FbmFibGVkKToKKyAgICAgICAgKFdlYlByZWZlcmVuY2VzOjpzZXRT
Y3JlZW5Gb250U3Vic3RpdHV0aW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJQcmVmZXJlbmNlczo6
aHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkKToKKyAgICAgICAgKFdlYlByZWZlcmVuY2VzOjp1bnVz
ZWQ0KToKKyAgICAgICAgKFdlYlByZWZlcmVuY2VzOjpzaG91bGRQYWludE5hdGl2ZUNvbnRyb2xz
KToKKyAgICAgICAgKFdlYlByZWZlcmVuY2VzOjpzZXRTaG91bGRQYWludE5hdGl2ZUNvbnRyb2xz
KToKKyAgICAgICAgKFdlYlByZWZlcmVuY2VzOjpzZXREZXZlbG9wZXJFeHRyYXNFbmFibGVkKToK
KyAgICAgICAgKFdlYlByZWZlcmVuY2VzOjphdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZCk6Cisg
ICAgICAgIChXZWJQcmVmZXJlbmNlczo6aW5BcHBsaWNhdGlvbkNocm9tZU1vZGUpOgorICAgICAg
ICAqIFdlYlByZWZlcmVuY2VzLmg6CisgICAgICAgICogV2ViU2VjdXJpdHlPcmlnaW4uY3BwOgor
ICAgICAgICAoV2ViU2VjdXJpdHlPcmlnaW46OlF1ZXJ5SW50ZXJmYWNlKToKKyAgICAgICAgKFdl
YlNlY3VyaXR5T3JpZ2luOjpzZXRRdW90YSk6CisgICAgICAgIChXZWJTZWN1cml0eU9yaWdpbjo6
aW5pdFdpdGhVUkwpOgorICAgICAgICAqIFdlYlNlY3VyaXR5T3JpZ2luLmg6CisgICAgICAgICog
V2ViVmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3OjpRdWVyeUludGVyZmFjZSk6CisgICAgICAg
IChXZWJWaWV3Ojpub3RpZnlQcmVmZXJlbmNlc0NoYW5nZWQpOgorICAgICAgICAoV2ViVmlldzo6
c2VsZWN0ZWRSYW5nZUZvclRlc3RpbmcpOgorICAgICAgICAoV2ViVmlldzo6c2V0TG9hZFJlc291
cmNlc1NlcmlhbGx5KToKKyAgICAgICAgKiBXZWJWaWV3Lmg6CisKIDIwMTUtMDctMDkgIFBlciBB
cm5lIFZvbGxhbiAgPHBlYXZvQG91dGxvb2suY29tPgogCiAgICAgICAgIFtXaW5dIEFkZCBtZW1v
cnkgcHJlc3N1cmUgaGFuZGxlci4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL0RlZmF1bHRQb2xp
Y3lEZWxlZ2F0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vRGVmYXVsdFBv
bGljeURlbGVnYXRlLmNwcAkocmV2aXNpb24gMTg2ODA0KQorKysgU291cmNlL1dlYktpdC93aW4v
RGVmYXVsdFBvbGljeURlbGVnYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA3LDcgKzEwNyw3
IEBAIEhSRVNVTFQgRGVmYXVsdFBvbGljeURlbGVnYXRlOjpkZWNpZGVQb2wKICAgICAgICAgdmFy
LkNoYW5nZVR5cGUoVlRfSTQsIG51bGxwdHIpOwogICAgICAgICBuYXZUeXBlID0gVl9JNCgmdmFy
KTsKICAgICB9Ci0gICAgQ09NUHRyPElXZWJWaWV3UHJpdmF0ZT4gd3ZQcml2YXRlKFF1ZXJ5LCB3
ZWJWaWV3KTsKKyAgICBDT01QdHI8SVdlYlZpZXdQcml2YXRlMj4gd3ZQcml2YXRlKFF1ZXJ5LCB3
ZWJWaWV3KTsKICAgICBpZiAod3ZQcml2YXRlKSB7CiAgICAgICAgIEJPT0wgY2FuSGFuZGxlUmVx
dWVzdCA9IEZBTFNFOwogICAgICAgICBpZiAoU1VDQ0VFREVEKHd2UHJpdmF0ZS0+Y2FuSGFuZGxl
UmVxdWVzdChyZXF1ZXN0LCAmY2FuSGFuZGxlUmVxdWVzdCkpICYmIGNhbkhhbmRsZVJlcXVlc3Qp
CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCShyZXZpc2lvbiAxODY4MDQpCisrKyBTb3VyY2Uv
V2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMDksIDIwMTEsIDIwMTMtMjAxNCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAwOSwgMjAxMSwg
MjAxMy0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAo
QykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAwOS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKQEAgLTIwOTcsNiArMjA5Nyw3IEBAIHZvaWQgV2ViRnJhbWU6OnVw
ZGF0ZUJhY2tncm91bmQoKQogICAgIGNvcmVGcmFtZS0+dmlldygpLT51cGRhdGVCYWNrZ3JvdW5k
UmVjdXJzaXZlbHkoYmFja2dyb3VuZENvbG9yLCB3ZWJWaWV3KCktPnRyYW5zcGFyZW50KCkpOwog
fQogCisvLyBJV2ViRnJhbWUyCiBIUkVTVUxUIFdlYkZyYW1lOjppc01haW5GcmFtZShCT09MKiB2
YWx1ZSkKIHsKICAgICBpZiAoIXZhbHVlKQpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViRnJh
bWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5oCShyZXZpc2lv
biAxODY4MDQpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC03NSw3ICs3NSw3IEBAIGludGVyZmFjZSBJV2ViSGlzdG9yeUl0ZW1Qcml2YXRlOwogV2Vi
RnJhbWUqIGtpdChXZWJDb3JlOjpGcmFtZSopOwogV2ViQ29yZTo6RnJhbWUqIGNvcmUoV2ViRnJh
bWUqKTsKIAotY2xhc3MgREVDTFNQRUNfVVVJRCgie0EzNjc2Mzk4LTQ0ODUtNGE5ZC04N0RDLUNC
NUE0MEU2MzUxRH0iKSBXZWJGcmFtZSA6IHB1YmxpYyBJV2ViRnJhbWUsIElXZWJGcmFtZVByaXZh
dGUsIElXZWJEb2N1bWVudFRleHQKK2NsYXNzIERFQ0xTUEVDX1VVSUQoIntBMzY3NjM5OC00NDg1
LTRhOWQtODdEQy1DQjVBNDBFNjM1MUR9IikgV2ViRnJhbWUgOiBwdWJsaWMgSVdlYkZyYW1lMiwg
SVdlYkZyYW1lUHJpdmF0ZSwgSVdlYkRvY3VtZW50VGV4dAogewogcHVibGljOgogICAgIHN0YXRp
YyBXZWJGcmFtZSogY3JlYXRlSW5zdGFuY2UoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dl
YlByZWZlcmVuY2VzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJQcmVm
ZXJlbmNlcy5jcHAJKHJldmlzaW9uIDE4NjgwNCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYlBy
ZWZlcmVuY2VzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk0LDEzICsxOTQsMTMgQEAgdm9pZCBX
ZWJQcmVmZXJlbmNlczo6aW5pdGlhbGl6ZURlZmF1bHRTZQogCiAgICAgQ0ZNdXRhYmxlRGljdGlv
bmFyeVJlZiBkZWZhdWx0cyA9IENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoMCwgMCwgJmtDRlR5
cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNr
cyk7CiAKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0U3Rh
bmRhcmRGb250UHJlZmVyZW5jZUtleSksIENGU1RSKCJUaW1lcyBOZXcgUm9tYW4iKSk7CisgICAg
Q0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFN0YW5kYXJkRm9udFBy
ZWZlcmVuY2VLZXkpLCBDRlNUUigiU2Vnb2UgVUkiKSk7CiAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFs
dWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEZpeGVkRm9udFByZWZlcmVuY2VLZXkpLCBDRlNUUigi
Q291cmllciBOZXciKSk7CiAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RS
KFdlYktpdFNlcmlmRm9udFByZWZlcmVuY2VLZXkpLCBDRlNUUigiVGltZXMgTmV3IFJvbWFuIikp
OwogICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRTYW5zU2Vy
aWZGb250UHJlZmVyZW5jZUtleSksIENGU1RSKCJBcmlhbCIpKTsKICAgICBDRkRpY3Rpb25hcnlB
ZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0Q3Vyc2l2ZUZvbnRQcmVmZXJlbmNlS2V5KSwg
Q0ZTVFIoIkNvbWljIFNhbnMgTVMiKSk7CiAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVs
dHMsIENGU1RSKFdlYktpdEZhbnRhc3lGb250UHJlZmVyZW5jZUtleSksIENGU1RSKCJDb21pYyBT
YW5zIE1TIikpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJL
aXRQaWN0b2dyYXBoRm9udFByZWZlcmVuY2VLZXkpLCBDRlNUUigiVGltZXMgTmV3IFJvbWFuIikp
OworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRQaWN0b2dy
YXBoRm9udFByZWZlcmVuY2VLZXkpLCBDRlNUUigiU2Vnb2UgVUkgU3ltYm9sIikpOwogICAgIENG
RGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRNaW5pbXVtRm9udFNpemVQ
cmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIjAiKSk7CiAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVm
YXVsdHMsIENGU1RSKFdlYktpdE1pbmltdW1Mb2dpY2FsRm9udFNpemVQcmVmZXJlbmNlS2V5KSwg
Q0ZTVFIoIjkiKSk7CiAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdl
YktpdERlZmF1bHRGb250U2l6ZVByZWZlcmVuY2VLZXkpLCBDRlNUUigiMTYiKSk7CkBAIC01MzAs
NiArNTMwLDggQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlcwogICAg
ICAgICAqcHB2T2JqZWN0ID0gc3RhdGljX2Nhc3Q8SVdlYlByZWZlcmVuY2VzKj4odGhpcyk7CiAg
ICAgZWxzZSBpZiAoSXNFcXVhbEdVSUQocmlpZCwgSUlEX0lXZWJQcmVmZXJlbmNlc1ByaXZhdGUp
KQogICAgICAgICAqcHB2T2JqZWN0ID0gc3RhdGljX2Nhc3Q8SVdlYlByZWZlcmVuY2VzUHJpdmF0
ZSo+KHRoaXMpOworICAgIGVsc2UgaWYgKElzRXF1YWxHVUlEKHJpaWQsIElJRF9JV2ViUHJlZmVy
ZW5jZXNQcml2YXRlMikpCisgICAgICAgICpwcHZPYmplY3QgPSBzdGF0aWNfY2FzdDxJV2ViUHJl
ZmVyZW5jZXNQcml2YXRlMio+KHRoaXMpOwogICAgIGVsc2UgaWYgKElzRXF1YWxHVUlEKHJpaWQs
IENMU0lEX1dlYlByZWZlcmVuY2VzKSkKICAgICAgICAgKnBwdk9iamVjdCA9IHRoaXM7CiAgICAg
ZWxzZQpAQCAtMTI5Myw2ICsxMjk1LDE4IEBAIEhSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OnNldE1v
Y2tTY3JvbGxiYXIKICAgICByZXR1cm4gU19PSzsKIH0KIAorLy8gVGhlc2UgdHdvIG1ldGhvZHMg
YXJlIG5vLW9wcywgYW5kIG9ubHkgcmV0YWluZWQgdG8ga2VlcAorLy8gdGhlIEludGVyZmFjZSBj
b25zaXN0ZW50LiBETyBOT1QgVVNFIFRIRU0uCitIUkVTVUxUIFdlYlByZWZlcmVuY2VzOjpzY3Jl
ZW5Gb250U3Vic3RpdHV0aW9uRW5hYmxlZChCT09MKikKK3sKKyAgICByZXR1cm4gU19PSzsKK30K
KworSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6c2V0U2NyZWVuRm9udFN1YnN0aXR1dGlvbkVuYWJs
ZWQoQk9PTCkKK3sKKyAgICByZXR1cm4gU19PSzsKK30KKwogSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBXZWJQcmVmZXJlbmNlczo6aHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkKAogICAgIC8qIFtp
bl0gKi8gQk9PTCogZW5hYmxlZCkKIHsKQEAgLTE0MTIsNiArMTQyNiwxOCBAQCBIUkVTVUxUIFdl
YlByZWZlcmVuY2VzOjp1bnVzZWQ0KCkKICAgICByZXR1cm4gRV9GQUlMOwogfQogCisvLyBUaGVz
ZSB0d28gbWV0aG9kcyBhcmUgbm8tb3BzLCBhbmQgb25seSByZXRhaW5lZCB0byBrZWVwCisvLyB0
aGUgSW50ZXJmYWNlIGNvbnNpc3RlbnQuIERPIE5PVCBVU0UgVEhFTS4KK0hSRVNVTFQgV2ViUHJl
ZmVyZW5jZXM6OnNob3VsZFBhaW50TmF0aXZlQ29udHJvbHMoQk9PTCopCit7CisgICAgcmV0dXJu
IFNfT0s7Cit9CisKK0hSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OnNldFNob3VsZFBhaW50TmF0aXZl
Q29udHJvbHMoQk9PTCkKK3sKKyAgICByZXR1cm4gU19PSzsKK30KKwogSFJFU1VMVCBXZWJQcmVm
ZXJlbmNlczo6c2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZChCT09MIGVuYWJsZWQpCiB7CiAgICAg
c2V0Qm9vbFZhbHVlKFdlYktpdERldmVsb3BlckV4dHJhc0VuYWJsZWRQcmVmZXJlbmNlS2V5LCBl
bmFibGVkKTsKQEAgLTE0NjIsNiArMTQ4OCw4IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
V2ViUHJlZmVyZW5jZXMKICAgICByZXR1cm4gU19PSzsKIH0KIAorLy8gVGhlc2UgdHdvIG1ldGhv
ZHMgYXJlIG5vLW9wcywgYW5kIG9ubHkgcmV0YWluZWQgdG8ga2VlcAorLy8gdGhlIEludGVyZmFj
ZSBjb25zaXN0ZW50LiBETyBOT1QgVVNFIFRIRU0uCiBIUkVTVUxUIFdlYlByZWZlcmVuY2VzOjpp
bkFwcGxpY2F0aW9uQ2hyb21lTW9kZShCT09MKikKIHsKICAgICByZXR1cm4gU19PSzsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvd2luL1dlYlByZWZlcmVuY2VzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC93aW4vV2ViUHJlZmVyZW5jZXMuaAkocmV2aXNpb24gMTg2ODA0KQorKysgU291cmNl
L1dlYktpdC93aW4vV2ViUHJlZmVyZW5jZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAw
OCwgMjAwOSwgMjAxNSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSA8V2ViQ29y
ZS9CU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCi1jbGFzcyBXZWJQcmVm
ZXJlbmNlcyA6IHB1YmxpYyBJV2ViUHJlZmVyZW5jZXMsIHB1YmxpYyBJV2ViUHJlZmVyZW5jZXNQ
cml2YXRlIHsKK2NsYXNzIFdlYlByZWZlcmVuY2VzIDogcHVibGljIElXZWJQcmVmZXJlbmNlcywg
cHVibGljIElXZWJQcmVmZXJlbmNlc1ByaXZhdGUyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgV2Vi
UHJlZmVyZW5jZXMqIGNyZWF0ZUluc3RhbmNlKCk7CiBwcm90ZWN0ZWQ6CkBAIC0xNTEsMTIgKzE1
MSw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0
SmF2YVNjcmlwdEVuYWJsZWQoIAogICAgICAgICAvKiBbaW5dICovIEJPT0wgZW5hYmxlZCk7CiAK
LSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgamF2YVNjcmlwdFJ1bnRpbWVG
bGFncygKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyB1bnNpZ25lZCopOwotCi0gICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEphdmFTY3JpcHRSdW50aW1lRmxhZ3Mo
Ci0gICAgICAgIC8qIFtpbl0gKi8gdW5zaWduZWQpOwotCiAgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIGphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHkoIAog
ICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIGVuYWJsZWQpOwogICAgIApAQCAtMzc3
LDYgKzM3MSwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIHNldEV4cGVyaW1lbnRhbE5vdGlmaWNhdGlvbnNFbmFibGVkKAogICAgICAgICAvKiBbaW5d
ICovIEJPT0wgZW5hYmxlZCk7CiAKKyAgICAvLyBUaGVzZSB0d28gbWV0aG9kcyBhcmUgbm8tb3Bz
LCBhbmQgb25seSByZXRhaW5lZCB0byBrZWVwCisgICAgLy8gdGhlIEludGVyZmFjZSBjb25zaXN0
ZW50LiBETyBOT1QgVVNFIFRIRU0uCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIHNldFNob3VsZFBhaW50TmF0aXZlQ29udHJvbHMoQk9PTCk7CisgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIHNob3VsZFBhaW50TmF0aXZlQ29udHJvbHMoQk9PTCopOwor
CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFpvb21zVGV4dE9ubHko
IAogICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCB6b29tc1RleHRPbmx5KTsKIApAQCAtNDgw
LDkgKzQ3OSwxOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIG1vY2tTY3JvbGxiYXJzRW5hYmxlZChCT09MKik7CiAgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIHNldE1vY2tTY3JvbGxiYXJzRW5hYmxlZChCT09MKTsKIAorICAgIC8v
IFRoZXNlIHR3byBtZXRob2RzIGFyZSBuby1vcHMsIGFuZCBvbmx5IHJldGFpbmVkIHRvIGtlZXAK
KyAgICAvLyB0aGUgSW50ZXJmYWNlIGNvbnNpc3RlbnQuIERPIE5PVCBVU0UgVEhFTS4KKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2NyZWVuRm9udFN1YnN0aXR1dGlvbkVu
YWJsZWQoQk9PTCopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRT
Y3JlZW5Gb250U3Vic3RpdHV0aW9uRW5hYmxlZChCT09MKTsKKwogICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBpc0luaGVyaXRVUklRdWVyeUNvbXBvbmVudEVuYWJsZWQoQk9P
TCopOwogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRFbmFibGVJbmhl
cml0VVJJUXVlcnlDb21wb25lbnQoQk9PTCk7CiAKKyAgICAvLyBJV2ViUHJlZmVyZW5jZXNQcml2
YXRlMgorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBqYXZhU2NyaXB0UnVu
dGltZUZsYWdzKHVuc2lnbmVkKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIHNldEphdmFTY3JpcHRSdW50aW1lRmxhZ3ModW5zaWduZWQpOworCiAgICAgLy8gV2ViUHJl
ZmVyZW5jZXMKIAogICAgIC8vIFRoaXMgbWV0aG9kIGFjY2Vzc2VzIGEgZGlmZmVyZW50IHByZWZl
cmVuY2Uga2V5IHRoYW4gZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZC4KSW5kZXg6IFNvdXJjZS9XZWJL
aXQvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L3dpbi9XZWJTZWN1cml0eU9yaWdpbi5jcHAJKHJldmlzaW9uIDE4NjgwNCkKKysrIFNvdXJjZS9X
ZWJLaXQvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMsOSAr
NjMsMTEgQEAgSFJFU1VMVCBXZWJTZWN1cml0eU9yaWdpbjo6UXVlcnlJbnRlcmZhYwogewogICAg
ICpwcHZPYmplY3QgPSAwOwogICAgIGlmIChJc0VxdWFsR1VJRChyaWlkLCBJSURfSVVua25vd24p
KQotICAgICAgICAqcHB2T2JqZWN0ID0gc3RhdGljX2Nhc3Q8SVdlYlNlY3VyaXR5T3JpZ2luKj4o
dGhpcyk7CisgICAgICAgICpwcHZPYmplY3QgPSBzdGF0aWNfY2FzdDxJV2ViU2VjdXJpdHlPcmln
aW4yKj4odGhpcyk7CiAgICAgZWxzZSBpZiAoSXNFcXVhbEdVSUQocmlpZCwgSUlEX0lXZWJTZWN1
cml0eU9yaWdpbikpCiAgICAgICAgICpwcHZPYmplY3QgPSBzdGF0aWNfY2FzdDxJV2ViU2VjdXJp
dHlPcmlnaW4qPih0aGlzKTsKKyAgICBlbHNlIGlmIChJc0VxdWFsR1VJRChyaWlkLCBJSURfSVdl
YlNlY3VyaXR5T3JpZ2luMikpCisgICAgICAgICpwcHZPYmplY3QgPSBzdGF0aWNfY2FzdDxJV2Vi
U2VjdXJpdHlPcmlnaW4yKj4odGhpcyk7CiAgICAgZWxzZSBpZiAoSXNFcXVhbEdVSUQocmlpZCwg
X191dWlkb2YodGhpcykpKQogICAgICAgICAqcHB2T2JqZWN0ID0gdGhpczsKICAgICBlbHNlCkBA
IC0xNDcsNiArMTQ5LDggQEAgSFJFU1VMVCBXZWJTZWN1cml0eU9yaWdpbjo6c2V0UXVvdGEoLyog
WwogICAgIHJldHVybiBTX09LOwogfQogCisvLyBJV2ViU2VjdXJpdHlPcmlnaW4yIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisK
IEhSRVNVTFQgV2ViU2VjdXJpdHlPcmlnaW46OmluaXRXaXRoVVJMKC8qIFtpbl0gKi8gQlNUUiB1
cmxCc3RyKQogewogICAgIG1fc2VjdXJpdHlPcmlnaW4gPSBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlKE1hcnNoYWxsaW5nSGVscGVyczo6QlNUUlRvS1VSTCh1cmxCc3RyKSk7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJTZWN1cml0eU9yaWdpbi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmgJKHJldmlzaW9uIDE4NjgwNCkKKysr
IFNvdXJjZS9XZWJLaXQvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMy
LDcgKzMyLDcgQEAKICNpbmNsdWRlICJXZWJLaXQuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1NlY3Vy
aXR5T3JpZ2luLmg+CiAKLWNsYXNzIERFQ0xTUEVDX1VVSUQoIjZFQjhEOThGLTI3MjMtNDQ3Mi04
OEQzLTU5MzZGOUQ2RTYzMSIpIFdlYlNlY3VyaXR5T3JpZ2luIDogcHVibGljIElXZWJTZWN1cml0
eU9yaWdpbiB7CitjbGFzcyBERUNMU1BFQ19VVUlEKCI2RUI4RDk4Ri0yNzIzLTQ0NzItODhEMy01
OTM2RjlENkU2MzEiKSBXZWJTZWN1cml0eU9yaWdpbiA6IHB1YmxpYyBJV2ViU2VjdXJpdHlPcmln
aW4yIHsKIHB1YmxpYzoKICAgICAvLyBXZWJTZWN1cml0eU9yaWdpbgogICAgIHN0YXRpYyBXZWJT
ZWN1cml0eU9yaWdpbiogY3JlYXRlSW5zdGFuY2UoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qIG9y
aWdpbik7CkBAIC02Nyw2ICs2Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgc2V0UXVvdGEoIAogICAgICAgICAvKiBbaW5dICovIHVuc2lnbmVkIGxv
bmcgbG9uZyBxdW90YSk7CiAKKyAgICAvLyBJV2ViU2VjdXJpdHlPcmlnaW4yCiAgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGluaXRXaXRoVVJMKC8qW2luXSovIEJTVFIpOwog
CiBwcml2YXRlOgpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAJKHJldmlzaW9uIDE4NjgwNCkKKysr
IFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTk0LDYg
KzI1OTQsOCBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OlF1ZXJ5CiAgICAg
ICAgICpwcHZPYmplY3QgPSBzdGF0aWNfY2FzdDxJV2ViVmlldyo+KHRoaXMpOwogICAgIGVsc2Ug
aWYgKElzRXF1YWxHVUlEKHJpaWQsIElJRF9JV2ViVmlld1ByaXZhdGUpKQogICAgICAgICAqcHB2
T2JqZWN0ID0gc3RhdGljX2Nhc3Q8SVdlYlZpZXdQcml2YXRlKj4odGhpcyk7CisgICAgZWxzZSBp
ZiAoSXNFcXVhbEdVSUQocmlpZCwgSUlEX0lXZWJWaWV3UHJpdmF0ZTIpKQorICAgICAgICAqcHB2
T2JqZWN0ID0gc3RhdGljX2Nhc3Q8SVdlYlZpZXdQcml2YXRlMio+KHRoaXMpOwogICAgIGVsc2Ug
aWYgKElzRXF1YWxHVUlEKHJpaWQsIElJRF9JV2ViSUJBY3Rpb25zKSkKICAgICAgICAgKnBwdk9i
amVjdCA9IHN0YXRpY19jYXN0PElXZWJJQkFjdGlvbnMqPih0aGlzKTsKICAgICBlbHNlIGlmIChJ
c0VxdWFsR1VJRChyaWlkLCBJSURfSVdlYlZpZXdDU1MpKQpAQCAtNDg1OSw3ICs0ODYxLDcgQEAg
SFJFU1VMVCBXZWJWaWV3Ojpub3RpZnlQcmVmZXJlbmNlc0NoYW5nZQogICAgIHNldHRpbmdzLnNl
dFNob3VsZERpc3BsYXlUZXh0RGVzY3JpcHRpb25zKGVuYWJsZWQpOwogI2VuZGlmCiAKLSAgICBD
T01QdHI8SVdlYlByZWZlcmVuY2VzUHJpdmF0ZT4gcHJlZnNQcml2YXRlKFF1ZXJ5LCBwcmVmZXJl
bmNlcyk7CisgICAgQ09NUHRyPElXZWJQcmVmZXJlbmNlc1ByaXZhdGUyPiBwcmVmc1ByaXZhdGUo
UXVlcnksIHByZWZlcmVuY2VzKTsKICAgICBpZiAocHJlZnNQcml2YXRlKSB7CiAgICAgICAgIGhy
ID0gcHJlZnNQcml2YXRlLT5sb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgoJnN0cik7CiAgICAgICAg
IGlmIChGQUlMRUQoaHIpKQpAQCAtNzE0MSw2ICs3MTQzLDcgQEAgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBXZWJWaWV3OjpzZWxlYwogICAgIHJldHVybiBTX09LOwogfQogCisvLyBJV2ViVmll
d1ByaXZhdGUyCiBIUkVTVUxUIFdlYlZpZXc6OnNldExvYWRSZXNvdXJjZXNTZXJpYWxseShCT09M
IHNlcmlhbGl6ZSkKIHsKICAgICBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmluaXRpYWxpemUoKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L3dpbi9XZWJWaWV3LmgJKHJldmlzaW9uIDE4NjgwNCkKKysrIFNvdXJjZS9XZWJLaXQv
d2luL1dlYlZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtNzksNyArNzksNyBAQCBpbnRlcmZhY2Ug
SURyb3BUYXJnZXRIZWxwZXI7CiAKIGNsYXNzIFdlYlZpZXcgCiAgICAgOiBwdWJsaWMgSVdlYlZp
ZXcKLSAgICAsIHB1YmxpYyBJV2ViVmlld1ByaXZhdGUKKyAgICAsIHB1YmxpYyBJV2ViVmlld1By
aXZhdGUyCiAgICAgLCBwdWJsaWMgSVdlYklCQWN0aW9ucwogICAgICwgcHVibGljIElXZWJWaWV3
Q1NTCiAgICAgLCBwdWJsaWMgSVdlYlZpZXdFZGl0aW5nCkBAIC02MDksNyArNjA5LDYgQEAgcHVi
bGljOgogICAgICAgICAvKiBbaW5dICovIElXZWJOb3RpZmljYXRpb24gKm5vdGlmaWNhdGlvbik7
CiAKICAgICAvLyBJV2ViVmlld1ByaXZhdGUKLQogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBNSU1FVHlwZUZvckV4dGVuc2lvbigKICAgICAgICAgLyogW2luXSAqLyBCU1RS
IGV4dGVuc2lvbiwKICAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSICptaW1lVHlwZSk7
CkBAIC04NDEsNiArODQwLDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgc2V0VXNlc0xheWVyZWRXaW5kb3coQk9PTCk7CiAgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIHVzZXNMYXllcmVkV2luZG93KEJPT0wqKTsKIAorICAgIC8v
IElXZWJWaWV3UHJpdmF0ZTIKKyAgICBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldExvYWRS
ZXNvdXJjZXNTZXJpYWxseShCT09MKTsKKyAgICBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNj
YWxlV2ViVmlldyhkb3VibGUgc2NhbGUsIFBPSU5UIG9yaWdpbik7CisgICAgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBkaXNwYXRjaFBlbmRpbmdMb2FkUmVxdWVzdHMoKTsKICAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0Q3VzdG9tQmFja2luZ1NjYWxlRmFjdG9yKGRv
dWJsZSk7CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGJhY2tpbmdTY2Fs
ZUZhY3Rvcihkb3VibGUqKTsKIApAQCAtMTAyMywxMCArMTAyNiw2IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBtX3Nob3VsZEludmVydENvbG9yczsKICAgICB2b2lkIHNldFNob3VsZEludmVydENvbG9y
cyhib29sKTsKIAotICAgIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0TG9hZFJlc291cmNl
c1NlcmlhbGx5KEJPT0wpOwotICAgIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2NhbGVXZWJW
aWV3KGRvdWJsZSBzY2FsZSwgUE9JTlQgb3JpZ2luKTsKLSAgICBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIGRpc3BhdGNoUGVuZGluZ0xvYWRSZXF1ZXN0cygpOwotCiAgICAgZmxvYXQgZGV2aWNl
U2NhbGVGYWN0b3IoKSBjb25zdDsKIAogcHJvdGVjdGVkOgpJbmRleDogU291cmNlL1dlYktpdC93
aW4vSW50ZXJmYWNlcy9JV2ViRWRpdGluZ0RlbGVnYXRlLmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJFZGl0aW5nRGVsZWdhdGUuaWRsCShyZXZpc2lv
biAxODY4MDQpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJFZGl0aW5nRGVs
ZWdhdGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDE1IEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTExMyw3
ICsxMTMsNyBAQCBpbnRlcmZhY2UgSVdlYkVkaXRpbmdEZWxlZ2F0ZSA6IElVbmtub3duCiAgICAg
LyoKICAgICAgICAgLSAoQk9PTCl3ZWJWaWV3OihXZWJWaWV3ICopd2ViVmlldyBzaG91bGRJbnNl
cnROb2RlOihET01Ob2RlICopbm9kZSByZXBsYWNpbmdET01SYW5nZTooRE9NUmFuZ2UgKilyYW5n
ZSBnaXZlbkFjdGlvbjooV2ViVmlld0luc2VydEFjdGlvbilhY3Rpb247CiAgICAgKi8KLSAgICBI
UkVTVUxUIHNob3VsZEluc2VydE5vZGUoW2luXSBJV2ViVmlldyogd2ViVmlldywgW2luXSBJRE9N
Tm9kZSogbm9kZSwgW2luXSBJRE9NUmFuZ2UqIHJhbmdlLCBbaW5dIFdlYlZpZXdJbnNlcnRBY3Rp
b24gYWN0aW9uLCBbb3V0LCByZXR2YWxdIEJPT0wqIHJlc3VsdCk7CisgICAgSFJFU1VMVCBzaG91
bGRJbnNlcnROb2RlKFtpbl0gSVdlYlZpZXcqIHdlYlZpZXcsIFtpbl0gSURPTU5vZGUqIG5vZGUs
IFtpbl0gSURPTVJhbmdlKiByYW5nZSwgW2luXSBXZWJWaWV3SW5zZXJ0QWN0aW9uIGFjdGlvbik7
CiAKICAgICAvKgogICAgICAgICAtIChCT09MKXdlYlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3IHNo
b3VsZEluc2VydFRleHQ6KE5TU3RyaW5nICopdGV4dCByZXBsYWNpbmdET01SYW5nZTooRE9NUmFu
Z2UgKilyYW5nZSBnaXZlbkFjdGlvbjooV2ViVmlld0luc2VydEFjdGlvbilhY3Rpb247CkBAIC0x
ODgsMyArMTg4LDE0IEBAIGludGVyZmFjZSBJV2ViRWRpdGluZ0RlbGVnYXRlIDogSVVua25vd24K
ICAgICBIUkVTVUxUIHByZWZsaWdodENob3NlblNwZWxsU2VydmVyKCk7CiAgICAgSFJFU1VMVCB1
cGRhdGVHcmFtbWFyKCk7CiB9CisKK1sKKyAgICB1dWlkKDk5NzNEMTkwLTMzNDYtNENBQS1BQjc2
LUYwNzBDQUIwQjU5QikKK10KK2ludGVyZmFjZSBJV2ViRWRpdGluZ0RlbGVnYXRlMiA6IElXZWJF
ZGl0aW5nRGVsZWdhdGUKK3sKKyAgICAvKgorICAgIC0gKEJPT0wpd2ViVmlldzooV2ViVmlldyAq
KXdlYlZpZXcgc2hvdWxkSW5zZXJ0Tm9kZTooRE9NTm9kZSAqKW5vZGUgcmVwbGFjaW5nRE9NUmFu
Z2U6KERPTVJhbmdlICopcmFuZ2UgZ2l2ZW5BY3Rpb246KFdlYlZpZXdJbnNlcnRBY3Rpb24pYWN0
aW9uOworICAgICovCisgICAgSFJFU1VMVCBzaG91bGRJbnNlcnROb2RlKFtpbl0gSVdlYlZpZXcq
IHdlYlZpZXcsIFtpbl0gSURPTU5vZGUqIG5vZGUsIFtpbl0gSURPTVJhbmdlKiByYW5nZSwgW2lu
XSBXZWJWaWV3SW5zZXJ0QWN0aW9uIGFjdGlvbiwgW291dCwgcmV0dmFsXSBCT09MKiByZXN1bHQp
OworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2lu
L0ludGVyZmFjZXMvSVdlYkZyYW1lLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dp
bi9JbnRlcmZhY2VzL0lXZWJGcmFtZS5pZGwJKHJldmlzaW9uIDE4NjgwNCkKKysrIFNvdXJjZS9X
ZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYkZyYW1lLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMTQgQXBw
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAw
NywgMjAwOCwgMjAxNC0yMDE1IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2OCw3ICsyNjgsMTEgQEAgaW50ZXJmYWNl
IElXZWJGcmFtZSA6IElVbmtub3duCiAgICAgICAgIC0gKERPTVdpbmRvdyAqKURPTVdpbmRvdzsK
ICAgICAqLwogICAgIEhSRVNVTFQgRE9NV2luZG93KFtvdXQsIHJldHZhbF0gSURPTVdpbmRvdyoq
IHdpbmRvdyk7Cit9CiAKK1sgdXVpZCg1NDE4RDc4My1BM0JBLTQ4RjMtQkFDMS01MzVFRTI2NDAz
NUEpIF0KK2ludGVyZmFjZSBJV2ViRnJhbWUyIDogSVdlYkZyYW1lCit7CiAgICAgLyohCiAgICAg
QG1ldGhvZCBpc01haW5GcmFtZQogICAgIEBkZXNjcmlwdGlvbiBSZXR1cm5zIFRSVUUgaWYgdGhl
IGZyYW1lIGlzIHRoZSBtYWluIGZyYW1lLgpJbmRleDogU291cmNlL1dlYktpdC93aW4vSW50ZXJm
YWNlcy9JV2ViUHJlZmVyZW5jZXNQcml2YXRlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJQcmVmZXJlbmNlc1ByaXZhdGUuaWRsCShyZXZpc2lvbiAx
ODY4MDQpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJQcmVmZXJlbmNlc1By
aXZhdGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC02NCw2ICs2NCwxMSBAQCBpbnRlcmZhY2UgSVdl
YlByZWZlcmVuY2VzUHJpdmF0ZSA6IElVbmtuCiAgICAgSFJFU1VMVCBsb2NhbFN0b3JhZ2VEYXRh
YmFzZVBhdGgoW291dCwgcmV0dmFsXSBCU1RSKiBsb2NhdGlvbik7CiAgICAgSFJFU1VMVCBzZXRM
b2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgoW2luXSBCU1RSIGxvY2F0aW9uKTsKIAorICAgIC8vIFRo
ZXNlIHR3byBtZXRob2RzIGFyZSBuby1vcHMsIGFuZCBvbmx5IHJldGFpbmVkIHRvIGtlZXAKKyAg
ICAvLyB0aGUgSW50ZXJmYWNlIGNvbnNpc3RlbnQuIERPIE5PVCBVU0UgVEhFTS4KKyAgICBIUkVT
VUxUIHNldFNob3VsZFBhaW50TmF0aXZlQ29udHJvbHMoW2luXSBCT09MIHNob3VsZFBhaW50KTsK
KyAgICBIUkVTVUxUIHNob3VsZFBhaW50TmF0aXZlQ29udHJvbHMoW291dCwgcmV0dmFsXSBCT09M
KiBlbmFibGVkKTsKKwogICAgIEhSRVNVTFQgc2V0RGF0YWJhc2VzRW5hYmxlZChbaW5dIEJPT0wg
ZW5hYmxlZCk7CiAgICAgSFJFU1VMVCBkYXRhYmFzZXNFbmFibGVkKFtvdXQsIHJldHZhbF0gQk9P
TCAqZW5hYmxlZCk7CiAKQEAgLTExNiw5ICsxMjEsNiBAQCBpbnRlcmZhY2UgSVdlYlByZWZlcmVu
Y2VzUHJpdmF0ZSA6IElVbmtuCiAgICAgSFJFU1VMVCBqYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJv
YXJkKFtvdXQsIHJldHZhbF0gQk9PTCAqZW5hYmxlZCk7CiAgICAgSFJFU1VMVCBzZXRKYXZhU2Ny
aXB0Q2FuQWNjZXNzQ2xpcGJvYXJkKFtpbl0gQk9PTCBlbmFibGVkKTsKIAotICAgIEhSRVNVTFQg
amF2YVNjcmlwdFJ1bnRpbWVGbGFncyhbb3V0LCByZXR2YWxdIHVuc2lnbmVkKiBmbGFncyk7Ci0g
ICAgSFJFU1VMVCBzZXRKYXZhU2NyaXB0UnVudGltZUZsYWdzKFtpbl0gdW5zaWduZWQgZmxhZ3Mp
OwotCiAgICAgSFJFU1VMVCBpc0ROU1ByZWZldGNoaW5nRW5hYmxlZChbb3V0LCByZXR2YWxdIEJP
T0wgKmVuYWJsZWQpOwogICAgIEhSRVNVTFQgc2V0RE5TUHJlZmV0Y2hpbmdFbmFibGVkKFtpbl0g
Qk9PTCBlbmFibGVkKTsKIApAQCAtMTUyLDYgKzE1NCwxOCBAQCBpbnRlcmZhY2UgSVdlYlByZWZl
cmVuY2VzUHJpdmF0ZSA6IElVbmtuCiAgICAgSFJFU1VMVCBtb2NrU2Nyb2xsYmFyc0VuYWJsZWQo
W291dCwgcmV0dmFsXSBCT09MKiBlbmFibGVkKTsKICAgICBIUkVTVUxUIHNldE1vY2tTY3JvbGxi
YXJzRW5hYmxlZChbaW5dIEJPT0wgZW5hYmxlZCk7CiAKKyAgICAvLyBUaGVzZSB0d28gbWV0aG9k
cyBhcmUgbm8tb3BzLCBhbmQgb25seSByZXRhaW5lZCB0byBrZWVwCisgICAgLy8gdGhlIEludGVy
ZmFjZSBjb25zaXN0ZW50LiBETyBOT1QgVVNFIFRIRU0uCisgICAgSFJFU1VMVCBzY3JlZW5Gb250
U3Vic3RpdHV0aW9uRW5hYmxlZChbb3V0LCByZXR2YWxdIEJPT0wqIGVuYWJsZWQpOworICAgIEhS
RVNVTFQgc2V0U2NyZWVuRm9udFN1YnN0aXR1dGlvbkVuYWJsZWQoW2luXSBCT09MIGVuYWJsZWQp
OworCiAgICAgSFJFU1VMVCBpc0luaGVyaXRVUklRdWVyeUNvbXBvbmVudEVuYWJsZWQoW291dCwg
cmV0dmFsXSBCT09MKiBlbmFibGVkKTsKICAgICBIUkVTVUxUIHNldEVuYWJsZUluaGVyaXRVUklR
dWVyeUNvbXBvbmVudChbaW5dIEJPT0wgZW5hYmxlZCk7CiB9CisKK1sgdXVpZCgwRTFEREI4MC02
QjM4LTRBQkMtQTI1Mi1CNThBODNFQjZEOEMpIF0KK2ludGVyZmFjZSBJV2ViUHJlZmVyZW5jZXNQ
cml2YXRlMiA6IElXZWJQcmVmZXJlbmNlc1ByaXZhdGUKK3sKKyAgICBIUkVTVUxUIGphdmFTY3Jp
cHRSdW50aW1lRmxhZ3MoW291dCwgcmV0dmFsXSB1bnNpZ25lZCogZmxhZ3MpOworICAgIEhSRVNV
TFQgc2V0SmF2YVNjcmlwdFJ1bnRpbWVGbGFncyhbaW5dIHVuc2lnbmVkIGZsYWdzKTsKK30KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZh
Y2VzL0lXZWJTZWN1cml0eU9yaWdpbi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93
aW4vSW50ZXJmYWNlcy9JV2ViU2VjdXJpdHlPcmlnaW4uaWRsCShyZXZpc2lvbiAxODY4MDQpCisr
KyBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJTZWN1cml0eU9yaWdpbi5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDEwIEBAIGludGVyZmFjZSBJV2ViU2VjdXJpdHlPcmln
aW4gOiBJVW5rbm93bgogCiAgICAgSFJFU1VMVCBxdW90YShbb3V0LCByZXR2YWxdIHVuc2lnbmVk
IGxvbmcgbG9uZyogcmVzdWx0KTsKICAgICBIUkVTVUxUIHNldFF1b3RhKFtpbl0gdW5zaWduZWQg
bG9uZyBsb25nIHF1b3RhKTsKK30KIAorWyB1dWlkKDU0RjczMjA4LTRFMUQtNEJFRC1CRTI1LTRF
MDc2QzBBQUFEOCkgXQoraW50ZXJmYWNlIElXZWJTZWN1cml0eU9yaWdpbjIgOiBJV2ViU2VjdXJp
dHlPcmlnaW4KK3sKICAgICBIUkVTVUxUIGluaXRXaXRoVVJMKFtpbl0gQlNUUik7CiB9CkluZGV4
OiBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJVSURlbGVnYXRlUHJpdmF0ZS5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViVUlEZWxlZ2F0
ZVByaXZhdGUuaWRsCShyZXZpc2lvbiAxODY4MDQpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9JbnRl
cmZhY2VzL0lXZWJVSURlbGVnYXRlUHJpdmF0ZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiwg
MjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU0LDcgKzU0LDkgQEAgaW50
ZXJmYWNlIElXZWJVSURlbGVnYXRlUHJpdmF0ZSA6IElVbmtubwogICAgIEhSRVNVTFQgdW51c2Vk
MigpOwogICAgIEhSRVNVTFQgd2ViVmlld1Njcm9sbGVkKFtpbl0gSVdlYlZpZXcqIHNlbmRlcik7
CiAgICAgSFJFU1VMVCB3ZWJWaWV3QWRkTWVzc2FnZVRvQ29uc29sZShbaW5dIElXZWJWaWV3KiBz
ZW5kZXIsIFtpbl0gQlNUUiBtZXNzYWdlLCBbaW5dIGludCBsaW5lTnVtYmVyLCBbaW5dIEJTVFIg
dXJsLCBbaW5dIEJPT0wgaXNFcnJvcik7Ci0gICAgSFJFU1VMVCB1bnVzZWQzKCk7CisgICAgLy8g
VGhlIGZvbGxvd2luZyBtZXRob2QgaXMgYSBuby1vcCBhbmQgaXMgb25seSBoZXJlIHRvIG1haW50
YWluCisgICAgLy8gSW50ZXJmYWNlIGNvbXBhdGliaWxpdHkuIERPIE5PVCBVU0UuCisgICAgSFJF
U1VMVCB3ZWJWaWV3U2hvdWxkSW50ZXJydXB0SmF2YVNjcmlwdChbaW5dIElXZWJWaWV3KiBzZW5k
ZXIsIFtvdXQsIHJldHZhbF0gQk9PTCogcmVzdWx0KTsKICAgICBIUkVTVUxUIHdlYlZpZXdSZWNl
aXZlZEZvY3VzKFtpbl0gSVdlYlZpZXcqIHNlbmRlcik7CiAgICAgSFJFU1VMVCB3ZWJWaWV3TG9z
dEZvY3VzKFtpbl0gSVdlYlZpZXcqIHNlbmRlciwgW2luXSBIV05EIGxvc2VGb2N1c1RvSFduZCk7
CiAgICAgSFJFU1VMVCBkb0RyYWdEcm9wKFtpbl0gSVdlYlZpZXcqIHNlbmRlciwgW2luXSBJRGF0
YU9iamVjdCogZGF0YU9iamVjdCwgW2luXSBJRHJvcFNvdXJjZSogZHJvcFNvdXJjZSwgW2luXSBE
V09SRCBva0VmZmVjdCwgW291dCwgcmV0dmFsXSBEV09SRCogcGVyZm9ybWVkRWZmZWN0KTsKQEAg
LTYyLDcgKzY0LDcgQEAgaW50ZXJmYWNlIElXZWJVSURlbGVnYXRlUHJpdmF0ZSA6IElVbmtubwog
ICAgIEhSRVNVTFQgd2ViVmlld1BhaW50ZWQoW2luXSBJV2ViVmlldyogc2VuZGVyKTsKICAgICBI
UkVTVUxUIGV4Y2VlZGVkRGF0YWJhc2VRdW90YShbaW5dIElXZWJWaWV3KiBzZW5kZXIsIFtpbl0g
SVdlYkZyYW1lKiBmcmFtZSwgW2luXSBJV2ViU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgW2luXSBC
U1RSIGRhdGFiYXNlSWRlbnRpZmllcik7CiAgICAgSFJFU1VMVCBlbWJlZGRlZFZpZXdXaXRoQXJn
dW1lbnRzKFtpbl0gSVdlYlZpZXcqIHNlbmRlciwgW2luXSBJV2ViRnJhbWUqIGZyYW1lLCBbaW5d
IElQcm9wZXJ0eUJhZyogYXJndW1lbnRzLCBbb3V0LCByZXR2YWxdIElXZWJFbWJlZGRlZFZpZXcq
KiB2aWV3KTsKLSAgICBIUkVTVUxUIHVudXNlZDQoKTsKKyAgICBIUkVTVUxUIHVudXNlZDMoKTsK
ICAgICBIUkVTVUxUIHdlYlZpZXdDbG9zaW5nKFtpbl0gSVdlYlZpZXcqIHNlbmRlcik7CiAgICAg
SFJFU1VMVCB3ZWJWaWV3U2V0Q3Vyc29yKFtpbl0gSVdlYlZpZXcqIHNlbmRlciwgW2luXSBIQ1VS
U09SIGN1cnNvcik7CiAgICAgSFJFU1VMVCB3ZWJWaWV3RGlkSW52YWxpZGF0ZShbaW5dIElXZWJW
aWV3KiBzZW5kZXIpOwpJbmRleDogU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViVmll
d1ByaXZhdGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMv
SVdlYlZpZXdQcml2YXRlLmlkbAkocmV2aXNpb24gMTg2ODA0KQorKysgU291cmNlL1dlYktpdC93
aW4vSW50ZXJmYWNlcy9JV2ViVmlld1ByaXZhdGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yOTAs
NyArMjkwLDExIEBAIGludGVyZmFjZSBJV2ViVmlld1ByaXZhdGUgOiBJVW5rbm93bgogICAgIEhS
RVNVTFQgZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VGb3JUZXN0aW5nKFtpbl0gVUlOVCBsb2Nh
dGlvbiwgW2luXSBVSU5UIGxlbmd0aCwgW291dCwgcmV0dmFsXSBSRUNUKiByZXN1bHRSZWN0KTsK
IAogICAgIEhSRVNVTFQgc2VsZWN0ZWRSYW5nZUZvclRlc3RpbmcoW291dF0gVUlOVCogbG9jYXRp
b24sIFtvdXRdIFVJTlQqIGxlbmd0aCk7Cit9CiAKK1sgdXVpZCg2NzFGQjI1OS1BQkVGLTQ4RkMt
ODhGQi1FQzRDRjMwNEU4NjYpIF0KK2ludGVyZmFjZSBJV2ViVmlld1ByaXZhdGUyIDogSVdlYlZp
ZXdQcml2YXRlCit7CiAgICAgLy8gU1BJIGZvciBEdW1wUmVuZGVyVHJlZQogICAgIEhSRVNVTFQg
c2V0TG9hZFJlc291cmNlc1NlcmlhbGx5KFtpbl0gQk9PTCBzZXJpYWxpemUpOwogCkBAIC0zMDAs
NCArMzA0LDQgQEAgaW50ZXJmYWNlIElXZWJWaWV3UHJpdmF0ZSA6IElVbmtub3duCiAKICAgICBI
UkVTVUxUIHNldEN1c3RvbUJhY2tpbmdTY2FsZUZhY3RvcihbaW5dIGRvdWJsZSk7CiAgICAgSFJF
U1VMVCBiYWNraW5nU2NhbGVGYWN0b3IoW291dF0gZG91YmxlKik7Ci19Cit9ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9XZWJL
aXQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvV2ViS2l0
LmlkbAkocmV2aXNpb24gMTg2ODA0KQorKysgU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9X
ZWJLaXQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xNjksNyArMTY5LDcgQEAgbGlicmFyeSBXZWJL
aXQKICAgICAgICAgaW50ZXJmYWNlIElXZWJWaWV3VW5kb2FibGVFZGl0aW5nOwogICAgICAgICBp
bnRlcmZhY2UgSVdlYlZpZXdFZGl0aW5nQWN0aW9uczsKICAgICAgICAgaW50ZXJmYWNlIElXZWJO
b3RpZmljYXRpb25PYnNlcnZlcjsKLSAgICAgICAgaW50ZXJmYWNlIElXZWJWaWV3UHJpdmF0ZTsK
KyAgICAgICAgaW50ZXJmYWNlIElXZWJWaWV3UHJpdmF0ZTI7CiAgICAgfQogCiAgICAgW3V1aWQo
NjY4MjdlYzEtM2FlZi00MjQxLWJhYzUtZjc3NmI0NGYwMzBmKV0KSW5kZXg6IFNvdXJjZS9XZWJL
aXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAkocmV2
aXNpb24gMTg2ODA0KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjk5LDggKzI5OSwxMSBAQCBib29sIFdl
YkVkaXRvckNsaWVudDo6c2hvdWxkSW5zZXJ0Tm9kZShOCiAgICAgICAgIHJldHVybiB0cnVlOwog
CiAgICAgQk9PTCBzaG91bGRJbnNlcnQgPSBGQUxTRTsKLSAgICBpZiAoRkFJTEVEKGVkaXRpbmdE
ZWxlZ2F0ZS0+c2hvdWxkSW5zZXJ0Tm9kZShtX3dlYlZpZXcsIGluc2VydERPTU5vZGUuZ2V0KCks
IGluc2VydGluZ0RPTVJhbmdlLmdldCgpLCBzdGF0aWNfY2FzdDxXZWJWaWV3SW5zZXJ0QWN0aW9u
PihnaXZlbkFjdGlvbiksICZzaG91bGRJbnNlcnQpKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgQ09NUHRyPElXZWJFZGl0aW5nRGVsZWdhdGUyPiBlZGl0aW5nRGVsZWdhdGUyKFF1ZXJ5LCBl
ZGl0aW5nRGVsZWdhdGUpOworICAgIGlmIChlZGl0aW5nRGVsZWdhdGUyKSB7CisgICAgICAgIGlm
IChGQUlMRUQoZWRpdGluZ0RlbGVnYXRlMi0+c2hvdWxkSW5zZXJ0Tm9kZShtX3dlYlZpZXcsIGlu
c2VydERPTU5vZGUuZ2V0KCksIGluc2VydGluZ0RPTVJhbmdlLmdldCgpLCBzdGF0aWNfY2FzdDxX
ZWJWaWV3SW5zZXJ0QWN0aW9uPihnaXZlbkFjdGlvbiksICZzaG91bGRJbnNlcnQpKSkKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KIAogICAgIHJldHVybiBzaG91bGRJbnNlcnQ7CiB9
CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAxODY4NjEpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSw3NiBAQAorMjAxNS0wNy0xNSAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNv
bT4KKworICAgICAgICBbV2luXSBNYWludGFpbiBjb25zaXN0ZW50IENPTSBJbnRlcmZhY2VzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDY5ODMKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzIxODIyMjc4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBEdW1wUmVuZGVyVHJlZSBhbmQgV2luTGF1
bmNoZXIgdG8gdXNlIHRoZSBwcm9wZXJseQorICAgICAgICB2ZXJzaW9uZWQgQ09NIGludGVyZmFj
ZSBvYmplY3RzLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0FjY2Vzc2liaWxpdHlD
b250cm9sbGVyV2luLmNwcDoKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpyb290
RWxlbWVudCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNw
cDoKKyAgICAgICAgKHJlc2V0V2ViUHJlZmVyZW5jZXNUb0NvbnNpc3RlbnRWYWx1ZXMpOgorICAg
ICAgICAocmVzZXRXZWJWaWV3VG9Db25zaXN0ZW50U3RhdGVCZWZvcmVUZXN0aW5nKToKKyAgICAg
ICAgKHJ1blRlc3QpOgorICAgICAgICAoY3JlYXRlV2ViVmlld0FuZE9mZnNjcmVlbldpbmRvdyk6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0VkaXRpbmdEZWxlZ2F0ZS5jcHA6CisgICAg
ICAgIChFZGl0aW5nRGVsZWdhdGU6OlF1ZXJ5SW50ZXJmYWNlKToKKyAgICAgICAgKEVkaXRpbmdE
ZWxlZ2F0ZTo6c2hvdWxkRW5kRWRpdGluZ0luRE9NUmFuZ2UpOgorICAgICAgICAoRWRpdGluZ0Rl
bGVnYXRlOjpzaG91bGRJbnNlcnROb2RlKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4v
RWRpdGluZ0RlbGVnYXRlLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0V2ZW50U2Vu
ZGVyLmNwcDoKKyAgICAgICAgKHNjYWxlUGFnZUJ5Q2FsbGJhY2spOgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxlZ2F0ZS5jcHA6CisgICAgICAgIChGcmFtZUxvYWRE
ZWxlZ2F0ZTo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS93aW4vVGVzdFJ1bm5lcldpbi5jcHA6CisgICAgICAgIChUZXN0UnVubmVyOjpjYWxsU2hvdWxk
Q2xvc2VPbldlYlZpZXcpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6YXBwbGljYXRpb25DYWNoZURp
c2tVc2FnZUZvck9yaWdpbik6CisgICAgICAgIChUZXN0UnVubmVyOjpjbGVhckFwcGxpY2F0aW9u
Q2FjaGVGb3JPcmlnaW4pOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0RGVmZXJzTG9hZGluZyk6
CisgICAgICAgIChUZXN0UnVubmVyOjpzZXREb21haW5SZWxheGF0aW9uRm9yYmlkZGVuRm9yVVJM
U2NoZW1lKToKKyAgICAgICAgKFRlc3RSdW5uZXI6OnNldFRhYktleUN5Y2xlc1Rocm91Z2hFbGVt
ZW50cyk6CisgICAgICAgIChUZXN0UnVubmVyOjpzZXRWYWx1ZUZvclVzZXIpOgorICAgICAgICAo
VGVzdFJ1bm5lcjo6ZGlzcGF0Y2hQZW5kaW5nTG9hZFJlcXVlc3RzKToKKyAgICAgICAgKFRlc3RS
dW5uZXI6OnNldFdpbmRvd0lzS2V5KToKKyAgICAgICAgKFRlc3RSdW5uZXI6OmV4ZWNDb21tYW5k
KToKKyAgICAgICAgKFRlc3RSdW5uZXI6OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KToK
KyAgICAgICAgKFRlc3RSdW5uZXI6OnJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KToK
KyAgICAgICAgKFRlc3RSdW5uZXI6OmFkZFVzZXJTY3JpcHQpOgorICAgICAgICAoVGVzdFJ1bm5l
cjo6YWRkVXNlclN0eWxlU2hlZXQpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2hvd1dlYkluc3Bl
Y3Rvcik6CisgICAgICAgIChUZXN0UnVubmVyOjpjbG9zZVdlYkluc3BlY3Rvcik6CisgICAgICAg
IChUZXN0UnVubmVyOjpldmFsdWF0ZUluV2ViSW5zcGVjdG9yKToKKyAgICAgICAgKFRlc3RSdW5u
ZXI6OnNldFNlcmlhbGl6ZUhUVFBMb2Fkcyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2lu
L1RleHRJbnB1dENvbnRyb2xsZXJXaW4uY3BwOgorICAgICAgICAoVGV4dElucHV0Q29udHJvbGxl
cjo6c2V0TWFya2VkVGV4dCk6CisgICAgICAgIChUZXh0SW5wdXRDb250cm9sbGVyOjpoYXNNYXJr
ZWRUZXh0KToKKyAgICAgICAgKFRleHRJbnB1dENvbnRyb2xsZXI6OnVubWFya1RleHQpOgorICAg
ICAgICAoVGV4dElucHV0Q29udHJvbGxlcjo6bWFya2VkUmFuZ2UpOgorICAgICAgICAoVGV4dElu
cHV0Q29udHJvbGxlcjo6aW5zZXJ0VGV4dCk6CisgICAgICAgIChUZXh0SW5wdXRDb250cm9sbGVy
OjpmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSk6CisgICAgICAgIChUZXh0SW5wdXRDb250cm9s
bGVyOjpzZWxlY3RlZFJhbmdlKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vVUlEZWxl
Z2F0ZS5oOgorICAgICAgICAoVUlEZWxlZ2F0ZTo6dW51c2VkMik6CisgICAgICAgIChVSURlbGVn
YXRlOjp1bnVzZWQzKToKKyAgICAgICAgKFVJRGVsZWdhdGU6OndlYlZpZXdTY3JvbGxlZCk6Cisg
ICAgICAgIChVSURlbGVnYXRlOjp3ZWJWaWV3U2hvdWxkSW50ZXJydXB0SmF2YVNjcmlwdCk6Cisg
ICAgICAgIChVSURlbGVnYXRlOjp3ZWJWaWV3UmVjZWl2ZWRGb2N1cyk6CisgICAgICAgIChVSURl
bGVnYXRlOjp1bnVzZWQ0KTogRGVsZXRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdC93aW4vV2ViVmlld0Rlc3RydWN0aW9uLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OldlYlZpZXdEZXN0cnVjdGlvbldpdGhIb3N0V2luZG93OjpTZXRVcCk6CisgICAgICAgICog
V2luTGF1bmNoZXIvUGFnZUxvYWRUZXN0Q2xpZW50LmNwcDoKKyAgICAgICAgKFBhZ2VMb2FkVGVz
dENsaWVudDo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWQpOgorICAgICAgICAqIFdpbkxhdW5jaGVy
L1dpbkxhdW5jaGVyLmNwcDoKKyAgICAgICAgKFdpbkxhdW5jaGVyOjppbml0KToKKyAgICAgICAg
KiBXaW5MYXVuY2hlci9XaW5MYXVuY2hlci5oOgorICAgICAgICAqIFdpbkxhdW5jaGVyL1dpbkxh
dW5jaGVyV2ViSG9zdC5jcHA6CisgICAgICAgIChXaW5MYXVuY2hlcldlYkhvc3Q6OmRpZEZpbmlz
aExvYWRGb3JGcmFtZSk6CisgICAgICAgIChXaW5MYXVuY2hlcldlYkhvc3Q6OmRpZEZpcnN0TGF5
b3V0SW5GcmFtZSk6CisgICAgICAgICogV2luTGF1bmNoZXIvV2luTGF1bmNoZXJXZWJIb3N0Lmg6
CisKIDIwMTUtMDctMTQgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAog
ICAgICAgICBBc3NlcnRpb25zLmggc2hvdWxkIGluY2x1ZGUgRXhwb3J0TWFjcm9zLmgKSW5kZXg6
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlcldpbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0FjY2Vzc2liaWxpdHlDb250
cm9sbGVyV2luLmNwcAkocmV2aXNpb24gMTg2ODA0KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUv
d2luL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUy
LDcgKzE1Miw3IEBAIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgQWNjZXNzaWJpbGl0eUNvbnQKICAg
ICBpZiAoRkFJTEVEKGZyYW1lLT53ZWJWaWV3KCZ2aWV3KSkpCiAgICAgICAgIHJldHVybiAwOwog
Ci0gICAgQ09NUHRyPElXZWJWaWV3UHJpdmF0ZT4gdmlld1ByaXZhdGUoUXVlcnksIHZpZXcpOwor
ICAgIENPTVB0cjxJV2ViVmlld1ByaXZhdGUyPiB2aWV3UHJpdmF0ZShRdWVyeSwgdmlldyk7CiAg
ICAgaWYgKCF2aWV3UHJpdmF0ZSkKICAgICAgICAgcmV0dXJuIDA7CiAKSW5kZXg6IFRvb2xzL0R1
bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
RHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcAkocmV2aXNpb24gMTg2ODA0KQor
KysgVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzgyLDcgKzc4Miw3IEBAIHN0YXRpYyB2b2lkIHJlc2V0V2ViUHJlZmVyZW5jZXNU
b0NvbnNpc3QKICAgICBzdGF0aWMgX2JzdHJfdCBzYW5zU2VyaWZGYW1pbHkoVEVYVCgiQXJpYWwi
KSk7CiAgICAgc3RhdGljIF9ic3RyX3QgY3Vyc2l2ZUZhbWlseShURVhUKCJDb21pYyBTYW5zIE1T
IikpOyAvLyBOb3QgYWN0dWFsbHkgY3Vyc2l2ZSwgYnV0IGl0J3Mgd2hhdCBJRSBhbmQgRmlyZWZv
eCB1c2UuCiAgICAgc3RhdGljIF9ic3RyX3QgZmFudGFzeUZhbWlseShURVhUKCJUaW1lcyBOZXcg
Um9tYW4iKSk7Ci0gICAgc3RhdGljIF9ic3RyX3QgcGljdG9ncmFwaEZhbWlseShURVhUKCJUaW1l
cyBOZXcgUm9tYW4iKSk7CisgICAgc3RhdGljIF9ic3RyX3QgcGljdG9ncmFwaEZhbWlseShURVhU
KCJTZWdvZSBVSSBTeW1ib2wiKSk7CiAjZW5kaWYKIAogICAgIHByZWZzUHJpdmF0ZS0+c2V0QWxs
b3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHMoVFJVRSk7CkBAIC04MTgsNyArODE4LDkgQEAg
c3RhdGljIHZvaWQgcmVzZXRXZWJQcmVmZXJlbmNlc1RvQ29uc2lzdAogICAgIHByZWZzUHJpdmF0
ZS0+c2V0SmF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZChUUlVFKTsKICAgICBwcmVmc1ByaXZh
dGUtPnNldE9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZChUUlVFKTsKICAgICBwcmVm
c1ByaXZhdGUtPnNldERldmVsb3BlckV4dHJhc0VuYWJsZWQoRkFMU0UpOwotICAgIHByZWZzUHJp
dmF0ZS0+c2V0SmF2YVNjcmlwdFJ1bnRpbWVGbGFncyhXZWJLaXRKYXZhU2NyaXB0UnVudGltZUZs
YWdzQWxsRW5hYmxlZCk7CisgICAgQ09NUHRyPElXZWJQcmVmZXJlbmNlc1ByaXZhdGUyPiBwcmVm
c1ByaXZhdGUyKFF1ZXJ5LCBwcmVmZXJlbmNlcyk7CisgICAgaWYgKHByZWZzUHJpdmF0ZTIpCisg
ICAgICAgIHByZWZzUHJpdmF0ZTItPnNldEphdmFTY3JpcHRSdW50aW1lRmxhZ3MoV2ViS2l0SmF2
YVNjcmlwdFJ1bnRpbWVGbGFnc0FsbEVuYWJsZWQpOwogICAgIC8vIFNldCBKUyBleHBlcmltZW50
cyBlbmFibGVkOiBZRVMKICAgICBwcmVmZXJlbmNlcy0+c2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNh
bGx5KFRSVUUpOwogICAgIHByZWZzUHJpdmF0ZS0+c2V0TG9hZHNTaXRlSWNvbnNJZ25vcmluZ0lt
YWdlTG9hZGluZ1ByZWZlcmVuY2UoRkFMU0UpOwpAQCAtODg2LDcgKzg4OCw3IEBAIHN0YXRpYyB2
b2lkIHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXQKICAgICAgICAgd2ViSUJBY3Rpb25zLT5y
ZXNldFBhZ2Vab29tKDApOwogICAgIH0KIAotICAgIENPTVB0cjxJV2ViVmlld1ByaXZhdGU+IHdl
YlZpZXdQcml2YXRlKFF1ZXJ5LCB3ZWJWaWV3KTsKKyAgICBDT01QdHI8SVdlYlZpZXdQcml2YXRl
Mj4gd2ViVmlld1ByaXZhdGUoUXVlcnksIHdlYlZpZXcpOwogICAgIGlmICh3ZWJWaWV3UHJpdmF0
ZSkKICAgICAgICAgd2ViVmlld1ByaXZhdGUtPnNldFRhYktleUN5Y2xlc1Rocm91Z2hFbGVtZW50
cyhUUlVFKTsKIApAQCAtMTA4Miw3ICsxMDg0LDcgQEAgc3RhdGljIHZvaWQgcnVuVGVzdChjb25z
dCBzdHJpbmcmIGlucHV0TAogCiAgICAgQ09NUHRyPElXZWJWaWV3PiB3ZWJWaWV3OwogICAgIGlm
IChTVUNDRUVERUQoZnJhbWUtPndlYlZpZXcoJndlYlZpZXcpKSkgewotICAgICAgICBDT01QdHI8
SVdlYlZpZXdQcml2YXRlPiB2aWV3UHJpdmF0ZTsKKyAgICAgICAgQ09NUHRyPElXZWJWaWV3UHJp
dmF0ZTI+IHZpZXdQcml2YXRlOwogICAgICAgICBpZiAoU1VDQ0VFREVEKHdlYlZpZXctPlF1ZXJ5
SW50ZXJmYWNlKCZ2aWV3UHJpdmF0ZSkpKSB7CiAgICAgICAgICAgICBpZiAoc2hvdWxkTG9nSGlz
dG9yeURlbGVnYXRlcyhwYXRoT3JVUkwuY19zdHIoKSkpIHsKICAgICAgICAgICAgICAgICA6OmdU
ZXN0UnVubmVyLT5zZXREdW1wSGlzdG9yeURlbGVnYXRlQ2FsbGJhY2tzKHRydWUpOyAgICAgICAg
ICAgIApAQCAtMTIyNCw3ICsxMjI2LDcgQEAgSVdlYlZpZXcqIGNyZWF0ZVdlYlZpZXdBbmRPZmZz
Y3JlZW5XaW5kbwogICAgIGlmIChGQUlMRUQod2ViVmlldy0+aW5pdFdpdGhGcmFtZShjbGllbnRS
ZWN0LCAwLCBncm91cE5hbWUpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBDT01Q
dHI8SVdlYlZpZXdQcml2YXRlPiB2aWV3UHJpdmF0ZTsKKyAgICBDT01QdHI8SVdlYlZpZXdQcml2
YXRlMj4gdmlld1ByaXZhdGU7CiAgICAgaWYgKEZBSUxFRCh3ZWJWaWV3LT5RdWVyeUludGVyZmFj
ZSgmdmlld1ByaXZhdGUpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKSW5kZXg6IFRvb2xz
L0R1bXBSZW5kZXJUcmVlL3dpbi9FZGl0aW5nRGVsZWdhdGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9FZGl0aW5nRGVsZWdhdGUuY3BwCShyZXZpc2lvbiAxODY4
MDQpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRWRpdGluZ0RlbGVnYXRlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTIsOSArNTIsMTEgQEAgSFJFU1VMVCBFZGl0aW5nRGVsZWdhdGU6OlF1
ZXJ5SW50ZXJmYWNlKAogewogICAgICpwcHZPYmplY3QgPSAwOwogICAgIGlmIChJc0VxdWFsR1VJ
RChyaWlkLCBJSURfSVVua25vd24pKQotICAgICAgICAqcHB2T2JqZWN0ID0gc3RhdGljX2Nhc3Q8
SVdlYkVkaXRpbmdEZWxlZ2F0ZSo+KHRoaXMpOworICAgICAgICAqcHB2T2JqZWN0ID0gc3RhdGlj
X2Nhc3Q8SVdlYkVkaXRpbmdEZWxlZ2F0ZTIqPih0aGlzKTsKICAgICBlbHNlIGlmIChJc0VxdWFs
R1VJRChyaWlkLCBJSURfSVdlYkVkaXRpbmdEZWxlZ2F0ZSkpCiAgICAgICAgICpwcHZPYmplY3Qg
PSBzdGF0aWNfY2FzdDxJV2ViRWRpdGluZ0RlbGVnYXRlKj4odGhpcyk7CisgICAgZWxzZSBpZiAo
SXNFcXVhbEdVSUQocmlpZCwgSUlEX0lXZWJFZGl0aW5nRGVsZWdhdGUyKSkKKyAgICAgICAgKnBw
dk9iamVjdCA9IHN0YXRpY19jYXN0PElXZWJFZGl0aW5nRGVsZWdhdGUyKj4odGhpcyk7CiAgICAg
ZWxzZSBpZiAoSXNFcXVhbEdVSUQocmlpZCwgSUlEX0lXZWJOb3RpZmljYXRpb25PYnNlcnZlcikp
CiAgICAgICAgICpwcHZPYmplY3QgPSBzdGF0aWNfY2FzdDxJV2ViTm90aWZpY2F0aW9uT2JzZXJ2
ZXIqPih0aGlzKTsKICAgICBlbHNlCkBAIC0xNTAsNiArMTUyLDE0IEBAIEhSRVNVTFQgRWRpdGlu
Z0RlbGVnYXRlOjpzaG91bGRFbmRFZGl0aW4KICAgICByZXR1cm4gU19PSzsKIH0KIAorLy8gSVdl
YkVkaXRpbmdEZWxlZ2F0ZQorSFJFU1VMVCBFZGl0aW5nRGVsZWdhdGU6OnNob3VsZEluc2VydE5v
ZGUoSVdlYlZpZXcqIHdlYlZpZXcsIElET01Ob2RlKiBub2RlLCBJRE9NUmFuZ2UqIHJhbmdlLCBX
ZWJWaWV3SW5zZXJ0QWN0aW9uIGFjdGlvbikKK3sKKyAgICBCT09MIGlnbm9yZTsKKyAgICByZXR1
cm4gc2hvdWxkSW5zZXJ0Tm9kZSh3ZWJWaWV3LCBub2RlLCByYW5nZSwgYWN0aW9uLCAmaWdub3Jl
KTsKK30KKworLy8gSVdlYkVkaXRpbmdEZWxlZ2F0ZTIKIEhSRVNVTFQgRWRpdGluZ0RlbGVnYXRl
OjpzaG91bGRJbnNlcnROb2RlKElXZWJWaWV3KiAvKndlYlZpZXcqLywgSURPTU5vZGUqIG5vZGUs
IElET01SYW5nZSogcmFuZ2UsIFdlYlZpZXdJbnNlcnRBY3Rpb24gYWN0aW9uLCBCT09MKiByZXN1
bHQpCiB7CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGluc2VydEFjdGlvblN0cmluZ1tdID0gewpJ
bmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0VkaXRpbmdEZWxlZ2F0ZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9FZGl0aW5nRGVsZWdhdGUuaAkocmV2aXNp
b24gMTg2ODA0KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0VkaXRpbmdEZWxlZ2F0ZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBACiAKICNpbmNsdWRlIDxXZWJLaXQvV2Vi
S2l0Lmg+CiAKLWNsYXNzIF9fZGVjbHNwZWModXVpZCgiMjY1RENENEItNzlDMy00NGEyLTg0QkMt
NTExQzNFREFCRDZGIikpIEVkaXRpbmdEZWxlZ2F0ZSA6IHB1YmxpYyBJV2ViRWRpdGluZ0RlbGVn
YXRlLCBwdWJsaWMgSVdlYk5vdGlmaWNhdGlvbk9ic2VydmVyIHsKK2NsYXNzIF9fZGVjbHNwZWMo
dXVpZCgiMjY1RENENEItNzlDMy00NGEyLTg0QkMtNTExQzNFREFCRDZGIikpIEVkaXRpbmdEZWxl
Z2F0ZSA6IHB1YmxpYyBJV2ViRWRpdGluZ0RlbGVnYXRlMiwgcHVibGljIElXZWJOb3RpZmljYXRp
b25PYnNlcnZlciB7CiBwdWJsaWM6CiAgICAgRWRpdGluZ0RlbGVnYXRlKCk7CiAKQEAgLTUzLDcg
KzUzLDcgQEAgcHVibGljOgogICAgICAgICAvKiBbaW5dICovIElET01SYW5nZSAqcmFuZ2UsCiAg
ICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCAqcmVzdWx0KTsKICAgICAKLSAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2hvdWxkSW5zZXJ0Tm9kZShJV2ViVmlldyos
IElET01Ob2RlKiwgSURPTVJhbmdlKiwgV2ViVmlld0luc2VydEFjdGlvbiwgQk9PTCogcmVzdWx0
KTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2hvdWxkSW5zZXJ0Tm9k
ZShJV2ViVmlldyosIElET01Ob2RlKiwgSURPTVJhbmdlKiwgV2ViVmlld0luc2VydEFjdGlvbik7
CiAgICAgCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNob3VsZEluc2Vy
dFRleHQoIAogICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3ICp3ZWJWaWV3LApAQCAtMTY3LDYg
KzE2Nyw5IEBAIHB1YmxpYzoKICAgICAgICAgLy8gSVdlYk5vdGlmaWNhdGlvbk9ic2VydmVyCiAg
ICAgICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBvbk5vdGlmeShJV2ViTm90
aWZpY2F0aW9uKiBub3RpZmljYXRpb24pOwogCisgICAgICAgIC8vIElXZWJFZGl0aW5nRGVsZWdh
dGUyCisgICAgICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzaG91bGRJbnNl
cnROb2RlKElXZWJWaWV3KiwgSURPTU5vZGUqLCBJRE9NUmFuZ2UqLCBXZWJWaWV3SW5zZXJ0QWN0
aW9uLCBCT09MKiByZXN1bHQpOworCiBwcml2YXRlOgogICAgIGJvb2wgbV9hY2NlcHRzRWRpdGlu
ZzsKICAgICBVTE9ORyBtX3JlZkNvdW50OwpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvd2lu
L0V2ZW50U2VuZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4v
RXZlbnRTZW5kZXIuY3BwCShyZXZpc2lvbiAxODY4MDQpCisrKyBUb29scy9EdW1wUmVuZGVyVHJl
ZS93aW4vRXZlbnRTZW5kZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NjAsNyArNzYwLDcgQEAg
c3RhdGljIEpTVmFsdWVSZWYgc2NhbGVQYWdlQnlDYWxsYmFjayhKUwogICAgIGlmIChGQUlMRUQo
ZnJhbWUtPndlYlZpZXcoJndlYlZpZXcpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5k
ZWZpbmVkKGNvbnRleHQpOwogCi0gICAgQ09NUHRyPElXZWJWaWV3UHJpdmF0ZT4gd2ViVmlld1By
aXZhdGU7CisgICAgQ09NUHRyPElXZWJWaWV3UHJpdmF0ZTI+IHdlYlZpZXdQcml2YXRlOwogICAg
IGlmIChGQUlMRUQod2ViVmlldy0+UXVlcnlJbnRlcmZhY2UoJndlYlZpZXdQcml2YXRlKSkpCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIApJbmRleDogVG9v
bHMvRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVsZWdhdGUuY3BwCShyZXZpc2lv
biAxODY4MDQpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVsZWdhdGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjMsNyArMTYzLDcgQEAgSFJFU1VMVCBGcmFtZUxvYWRE
ZWxlZ2F0ZTo6ZGlkQ29tbWl0TG9hZAogICAgIGlmICghZG9uZSAmJiBnVGVzdFJ1bm5lci0+ZHVt
cEZyYW1lTG9hZENhbGxiYWNrcygpKQogICAgICAgICBwcmludGYoIiVzIC0gZGlkQ29tbWl0TG9h
ZEZvckZyYW1lXG4iLCBkZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChmcmFtZSkuY19z
dHIoKSk7CiAKLSAgICBDT01QdHI8SVdlYlZpZXdQcml2YXRlPiB3ZWJWaWV3UHJpdmF0ZTsKKyAg
ICBDT01QdHI8SVdlYlZpZXdQcml2YXRlMj4gd2ViVmlld1ByaXZhdGU7CiAgICAgSFJFU1VMVCBo
ciA9IHdlYlZpZXctPlF1ZXJ5SW50ZXJmYWNlKCZ3ZWJWaWV3UHJpdmF0ZSk7CiAgICAgaWYgKEZB
SUxFRChocikpCiAgICAgICAgIHJldHVybiBocjsKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVl
L3dpbi9UZXN0UnVubmVyV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJl
ZS93aW4vVGVzdFJ1bm5lcldpbi5jcHAJKHJldmlzaW9uIDE4NjgwNCkKKysrIFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL3dpbi9UZXN0UnVubmVyV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODYsNyAr
ODYsNyBAQCBib29sIFRlc3RSdW5uZXI6OmNhbGxTaG91bGRDbG9zZU9uV2ViVmllCiAgICAgaWYg
KEZBSUxFRChmcmFtZS0+d2ViVmlldygmd2ViVmlldykpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBDT01QdHI8SVdlYlZpZXdQcml2YXRlPiB2aWV3UHJpdmF0ZTsKKyAgICBDT01QdHI8
SVdlYlZpZXdQcml2YXRlMj4gdmlld1ByaXZhdGU7CiAgICAgaWYgKEZBSUxFRCh3ZWJWaWV3LT5R
dWVyeUludGVyZmFjZSgmdmlld1ByaXZhdGUpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBA
IC0xMDYsOCArMTA2LDggQEAgdm9pZCBUZXN0UnVubmVyOjpjbGVhckFsbEFwcGxpY2F0aW9uQ2Fj
aAogCiBsb25nIGxvbmcgVGVzdFJ1bm5lcjo6YXBwbGljYXRpb25DYWNoZURpc2tVc2FnZUZvck9y
aWdpbihKU1N0cmluZ1JlZiB1cmwpCiB7Ci0gICAgQ09NUHRyPElXZWJTZWN1cml0eU9yaWdpbj4g
b3JpZ2luOwotICAgIGlmIChGQUlMRUQoV2ViS2l0Q3JlYXRlSW5zdGFuY2UoQ0xTSURfV2ViU2Vj
dXJpdHlPcmlnaW4sIDAsIElJRF9JV2ViU2VjdXJpdHlPcmlnaW4sIHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZCoqPigmb3JpZ2luKSkpKQorICAgIENPTVB0cjxJV2ViU2VjdXJpdHlPcmlnaW4yPiBvcmln
aW47CisgICAgaWYgKEZBSUxFRChXZWJLaXRDcmVhdGVJbnN0YW5jZShDTFNJRF9XZWJTZWN1cml0
eU9yaWdpbiwgMCwgSUlEX0lXZWJTZWN1cml0eU9yaWdpbjIsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCoqPigmb3JpZ2luKSkpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIENPTVB0cjxJV2ViQXBw
bGljYXRpb25DYWNoZT4gYXBwbGljYXRpb25DYWNoZTsKQEAgLTEyNiw4ICsxMjYsOCBAQCBsb25n
IGxvbmcgVGVzdFJ1bm5lcjo6YXBwbGljYXRpb25DYWNoZURpCiAKIHZvaWQgVGVzdFJ1bm5lcjo6
Y2xlYXJBcHBsaWNhdGlvbkNhY2hlRm9yT3JpZ2luKEpTU3RyaW5nUmVmIG9yaWdpbikKIHsKLSAg
ICBDT01QdHI8SVdlYlNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbjsKLSAgICBpZiAoRkFJ
TEVEKFdlYktpdENyZWF0ZUluc3RhbmNlKENMU0lEX1dlYlNlY3VyaXR5T3JpZ2luLCAwLCBJSURf
SVdlYlNlY3VyaXR5T3JpZ2luLCByZWludGVycHJldF9jYXN0PHZvaWQqKj4oJnNlY3VyaXR5T3Jp
Z2luKSkpKQorICAgIENPTVB0cjxJV2ViU2VjdXJpdHlPcmlnaW4yPiBzZWN1cml0eU9yaWdpbjsK
KyAgICBpZiAoRkFJTEVEKFdlYktpdENyZWF0ZUluc3RhbmNlKENMU0lEX1dlYlNlY3VyaXR5T3Jp
Z2luLCAwLCBJSURfSVdlYlNlY3VyaXR5T3JpZ2luMiwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+
KCZzZWN1cml0eU9yaWdpbikpKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgX2JzdHJfdCBvcmln
aW5Cc3RyKEpTU3RyaW5nQ29weUJTVFIob3JpZ2luKSwgZmFsc2UpOwpAQCAtNDE4LDcgKzQxOCw3
IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0RGVmZXJzTG9hZGluZyhib29sIGQKICAgICBpZiAoRkFJ
TEVEKGZyYW1lLT53ZWJWaWV3KCZ3ZWJWaWV3KSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIENP
TVB0cjxJV2ViVmlld1ByaXZhdGU+IHZpZXdQcml2YXRlOworICAgIENPTVB0cjxJV2ViVmlld1By
aXZhdGUyPiB2aWV3UHJpdmF0ZTsKICAgICBpZiAoRkFJTEVEKHdlYlZpZXctPlF1ZXJ5SW50ZXJm
YWNlKCZ2aWV3UHJpdmF0ZSkpKQogICAgICAgICByZXR1cm47CiAKQEAgLTQyNyw3ICs0MjcsNyBA
QCB2b2lkIFRlc3RSdW5uZXI6OnNldERlZmVyc0xvYWRpbmcoYm9vbCBkCiAKIHZvaWQgVGVzdFJ1
bm5lcjo6c2V0RG9tYWluUmVsYXhhdGlvbkZvcmJpZGRlbkZvclVSTFNjaGVtZShib29sIGZvcmJp
ZGRlbiwgSlNTdHJpbmdSZWYgc2NoZW1lKQogewotICAgIENPTVB0cjxJV2ViVmlld1ByaXZhdGU+
IHdlYlZpZXc7CisgICAgQ09NUHRyPElXZWJWaWV3UHJpdmF0ZTI+IHdlYlZpZXc7CiAgICAgaWYg
KEZBSUxFRChXZWJLaXRDcmVhdGVJbnN0YW5jZShfX3V1aWRvZihXZWJWaWV3KSwgMCwgX191dWlk
b2Yod2ViVmlldyksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmd2ViVmlldykpKSkKICAgICAg
ICAgcmV0dXJuOwogCkBAIC02MDcsNyArNjA3LDcgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRUYWJL
ZXlDeWNsZXNUaHJvdWdoRQogICAgIGlmIChGQUlMRUQoZnJhbWUtPndlYlZpZXcoJndlYlZpZXcp
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ09NUHRyPElXZWJWaWV3UHJpdmF0ZT4gdmlld1By
aXZhdGU7CisgICAgQ09NUHRyPElXZWJWaWV3UHJpdmF0ZTI+IHZpZXdQcml2YXRlOwogICAgIGlm
IChGQUlMRUQod2ViVmlldy0+UXVlcnlJbnRlcmZhY2UoJnZpZXdQcml2YXRlKSkpCiAgICAgICAg
IHJldHVybjsKIApAQCAtNzg4LDcgKzc4OCw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0VmFsdWVG
b3JVc2VyKEpTQ29udGUKICAgICBpZiAoRkFJTEVEKGZyYW1lLT53ZWJWaWV3KCZ3ZWJWaWV3KSkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIENPTVB0cjxJV2ViVmlld1ByaXZhdGU+IHdlYlZpZXdQ
cml2YXRlKFF1ZXJ5LCB3ZWJWaWV3KTsKKyAgICBDT01QdHI8SVdlYlZpZXdQcml2YXRlMj4gd2Vi
Vmlld1ByaXZhdGUoUXVlcnksIHdlYlZpZXcpOwogICAgIGlmICghd2ViVmlld1ByaXZhdGUpCiAg
ICAgICAgIHJldHVybjsKIApAQCAtODE2LDcgKzgxNiw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6ZGlz
cGF0Y2hQZW5kaW5nTG9hZFJlcXUKICAgICBpZiAoRkFJTEVEKGZyYW1lLT53ZWJWaWV3KCZ3ZWJW
aWV3KSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIENPTVB0cjxJV2ViVmlld1ByaXZhdGU+IHZp
ZXdQcml2YXRlOworICAgIENPTVB0cjxJV2ViVmlld1ByaXZhdGUyPiB2aWV3UHJpdmF0ZTsKICAg
ICBpZiAoRkFJTEVEKHdlYlZpZXctPlF1ZXJ5SW50ZXJmYWNlKCZ2aWV3UHJpdmF0ZSkpKQogICAg
ICAgICByZXR1cm47CiAKQEAgLTg3Niw3ICs4NzYsNyBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldFdp
bmRvd0lzS2V5KGJvb2wgZmxhCiAgICAgaWYgKEZBSUxFRChmcmFtZS0+d2ViVmlldygmd2ViVmll
dykpKQogICAgICAgICByZXR1cm47CiAKLSAgICBDT01QdHI8SVdlYlZpZXdQcml2YXRlPiB2aWV3
UHJpdmF0ZTsKKyAgICBDT01QdHI8SVdlYlZpZXdQcml2YXRlMj4gdmlld1ByaXZhdGU7CiAgICAg
aWYgKEZBSUxFRCh3ZWJWaWV3LT5RdWVyeUludGVyZmFjZSgmdmlld1ByaXZhdGUpKSkKICAgICAg
ICAgcmV0dXJuOwogCkBAIC05MTIsNyArOTEyLDcgQEAgdm9pZCBUZXN0UnVubmVyOjpleGVjQ29t
bWFuZChKU1N0cmluZ1JlZgogICAgIGlmIChGQUlMRUQoZnJhbWUtPndlYlZpZXcoJndlYlZpZXcp
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ09NUHRyPElXZWJWaWV3UHJpdmF0ZT4gdmlld1By
aXZhdGU7CisgICAgQ09NUHRyPElXZWJWaWV3UHJpdmF0ZTI+IHZpZXdQcml2YXRlOwogICAgIGlm
IChGQUlMRUQod2ViVmlldy0+UXVlcnlJbnRlcmZhY2UoJnZpZXdQcml2YXRlKSkpCiAgICAgICAg
IHJldHVybjsKIApAQCAtOTY2LDcgKzk2Niw3IEBAIHN0YXRpYyBfYnN0cl90IGJzdHJUKEpTU3Ry
aW5nUmVmIGpzU3RyaW4KIAogdm9pZCBUZXN0UnVubmVyOjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxp
c3RFbnRyeShKU1N0cmluZ1JlZiBzb3VyY2VPcmlnaW4sIEpTU3RyaW5nUmVmIGRlc3RpbmF0aW9u
UHJvdG9jb2wsIEpTU3RyaW5nUmVmIGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rlc3RpbmF0
aW9uU3ViZG9tYWlucykKIHsKLSAgICBDT01QdHI8SVdlYlZpZXdQcml2YXRlPiB3ZWJWaWV3Owor
ICAgIENPTVB0cjxJV2ViVmlld1ByaXZhdGUyPiB3ZWJWaWV3OwogICAgIGlmIChGQUlMRUQoV2Vi
S2l0Q3JlYXRlSW5zdGFuY2UoX191dWlkb2YoV2ViVmlldyksIDAsIF9fdXVpZG9mKHdlYlZpZXcp
LCByZWludGVycHJldF9jYXN0PHZvaWQqKj4oJndlYlZpZXcpKSkpCiAgICAgICAgIHJldHVybjsK
IApAQCAtOTc1LDcgKzk3NSw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6YWRkT3JpZ2luQWNjZXNzV2hp
dGVsaXMKIAogdm9pZCBUZXN0UnVubmVyOjpyZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRy
eShKU1N0cmluZ1JlZiBzb3VyY2VPcmlnaW4sIEpTU3RyaW5nUmVmIGRlc3RpbmF0aW9uUHJvdG9j
b2wsIEpTU3RyaW5nUmVmIGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3Vi
ZG9tYWlucykKIHsKLSAgICBDT01QdHI8SVdlYlZpZXdQcml2YXRlPiB3ZWJWaWV3OworICAgIENP
TVB0cjxJV2ViVmlld1ByaXZhdGUyPiB3ZWJWaWV3OwogICAgIGlmIChGQUlMRUQoV2ViS2l0Q3Jl
YXRlSW5zdGFuY2UoX191dWlkb2YoV2ViVmlldyksIDAsIF9fdXVpZG9mKHdlYlZpZXcpLCByZWlu
dGVycHJldF9jYXN0PHZvaWQqKj4oJndlYlZpZXcpKSkpCiAgICAgICAgIHJldHVybjsKIApAQCAt
OTg5LDcgKzk4OSw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0U2Nyb2xsYmFyUG9saWN5KEpTU3QK
IAogdm9pZCBUZXN0UnVubmVyOjphZGRVc2VyU2NyaXB0KEpTU3RyaW5nUmVmIHNvdXJjZSwgYm9v
bCBydW5BdFN0YXJ0LCBib29sIGFsbEZyYW1lcykKIHsKLSAgICBDT01QdHI8SVdlYlZpZXdQcml2
YXRlPiB3ZWJWaWV3OworICAgIENPTVB0cjxJV2ViVmlld1ByaXZhdGUyPiB3ZWJWaWV3OwogICAg
IGlmIChGQUlMRUQoV2ViS2l0Q3JlYXRlSW5zdGFuY2UoX191dWlkb2YoV2ViVmlldyksIDAsIF9f
dXVpZG9mKHdlYlZpZXcpLCByZWludGVycHJldF9jYXN0PHZvaWQqKj4oJndlYlZpZXcpKSkpCiAg
ICAgICAgIHJldHVybjsKIApAQCAtMTAwMiw3ICsxMDAyLDcgQEAgdm9pZCBUZXN0UnVubmVyOjph
ZGRVc2VyU2NyaXB0KEpTU3RyaW5nUgogCiB2b2lkIFRlc3RSdW5uZXI6OmFkZFVzZXJTdHlsZVNo
ZWV0KEpTU3RyaW5nUmVmIHNvdXJjZSwgYm9vbCBhbGxGcmFtZXMpCiB7Ci0gICAgQ09NUHRyPElX
ZWJWaWV3UHJpdmF0ZT4gd2ViVmlldzsKKyAgICBDT01QdHI8SVdlYlZpZXdQcml2YXRlMj4gd2Vi
VmlldzsKICAgICBpZiAoRkFJTEVEKFdlYktpdENyZWF0ZUluc3RhbmNlKF9fdXVpZG9mKFdlYlZp
ZXcpLCAwLCBfX3V1aWRvZih3ZWJWaWV3KSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZ3ZWJW
aWV3KSkpKQogICAgICAgICByZXR1cm47CiAKQEAgLTEwMzYsNyArMTAzNiw3IEBAIHZvaWQgVGVz
dFJ1bm5lcjo6c2hvd1dlYkluc3BlY3RvcigpCiAgICAgaWYgKEZBSUxFRChmcmFtZS0+d2ViVmll
dygmd2ViVmlldykpKQogICAgICAgICByZXR1cm47CiAKLSAgICBDT01QdHI8SVdlYlZpZXdQcml2
YXRlPiB2aWV3UHJpdmF0ZShRdWVyeSwgd2ViVmlldyk7CisgICAgQ09NUHRyPElXZWJWaWV3UHJp
dmF0ZTI+IHZpZXdQcml2YXRlKFF1ZXJ5LCB3ZWJWaWV3KTsKICAgICBpZiAoIXZpZXdQcml2YXRl
KQogICAgICAgICByZXR1cm47CiAKQEAgLTEwNTEsNyArMTA1MSw3IEBAIHZvaWQgVGVzdFJ1bm5l
cjo6Y2xvc2VXZWJJbnNwZWN0b3IoKQogICAgIGlmIChGQUlMRUQoZnJhbWUtPndlYlZpZXcoJndl
YlZpZXcpKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ09NUHRyPElXZWJWaWV3UHJpdmF0ZT4g
dmlld1ByaXZhdGUoUXVlcnksIHdlYlZpZXcpOworICAgIENPTVB0cjxJV2ViVmlld1ByaXZhdGUy
PiB2aWV3UHJpdmF0ZShRdWVyeSwgd2ViVmlldyk7CiAgICAgaWYgKCF2aWV3UHJpdmF0ZSkKICAg
ICAgICAgcmV0dXJuOwogCkBAIC0xMDY4LDcgKzEwNjgsNyBAQCB2b2lkIFRlc3RSdW5uZXI6OmV2
YWx1YXRlSW5XZWJJbnNwZWN0b3IoCiAgICAgaWYgKEZBSUxFRChmcmFtZS0+d2ViVmlldygmd2Vi
VmlldykpKQogICAgICAgICByZXR1cm47CiAKLSAgICBDT01QdHI8SVdlYlZpZXdQcml2YXRlPiB2
aWV3UHJpdmF0ZShRdWVyeSwgd2ViVmlldyk7CisgICAgQ09NUHRyPElXZWJWaWV3UHJpdmF0ZTI+
IHZpZXdQcml2YXRlKFF1ZXJ5LCB3ZWJWaWV3KTsKICAgICBpZiAoIXZpZXdQcml2YXRlKQogICAg
ICAgICByZXR1cm47CiAKQEAgLTExODIsNyArMTE4Miw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0
U2VyaWFsaXplSFRUUExvYWRzKGIKICAgICBpZiAoRkFJTEVEKGZyYW1lLT53ZWJWaWV3KCZ3ZWJW
aWV3KSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIENPTVB0cjxJV2ViVmlld1ByaXZhdGU+IHZp
ZXdQcml2YXRlOworICAgIENPTVB0cjxJV2ViVmlld1ByaXZhdGUyPiB2aWV3UHJpdmF0ZTsKICAg
ICBpZiAoRkFJTEVEKHdlYlZpZXctPlF1ZXJ5SW50ZXJmYWNlKCZ2aWV3UHJpdmF0ZSkpKQogICAg
ICAgICByZXR1cm47CiAKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9UZXh0SW5wdXRD
b250cm9sbGVyV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4v
VGV4dElucHV0Q29udHJvbGxlcldpbi5jcHAJKHJldmlzaW9uIDE4NjgwNCkKKysrIFRvb2xzL0R1
bXBSZW5kZXJUcmVlL3dpbi9UZXh0SW5wdXRDb250cm9sbGVyV2luLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDQsNyArNDQsNyBAQCB2b2lkIFRleHRJbnB1dENvbnRyb2xsZXI6OnNldE1hcmtlZFRl
eHQoCiAgICAgaWYgKEZBSUxFRChmcmFtZS0+d2ViVmlldygmd2ViVmlldykpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBDT01QdHI8SVdlYlZpZXdQcml2YXRlPiB2aWV3UHJpdmF0ZTsKKyAgICBD
T01QdHI8SVdlYlZpZXdQcml2YXRlMj4gdmlld1ByaXZhdGU7CiAgICAgaWYgKEZBSUxFRCh3ZWJW
aWV3LT5RdWVyeUludGVyZmFjZSgmdmlld1ByaXZhdGUpKSkKICAgICAgICAgcmV0dXJuOwogCkBA
IC01OSw3ICs1OSw3IEBAIGJvb2wgVGV4dElucHV0Q29udHJvbGxlcjo6aGFzTWFya2VkVGV4dCgK
ICAgICBpZiAoRkFJTEVEKGZyYW1lLT53ZWJWaWV3KCZ3ZWJWaWV3KSkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIENPTVB0cjxJV2ViVmlld1ByaXZhdGU+IHZpZXdQcml2YXRlOworICAg
IENPTVB0cjxJV2ViVmlld1ByaXZhdGUyPiB2aWV3UHJpdmF0ZTsKICAgICBpZiAoRkFJTEVEKHdl
YlZpZXctPlF1ZXJ5SW50ZXJmYWNlKCZ2aWV3UHJpdmF0ZSkpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBUZXh0SW5wdXRDb250cm9sbGVyOjp1bm1hcmtU
ZXh0KCkKICAgICBpZiAoRkFJTEVEKGZyYW1lLT53ZWJWaWV3KCZ3ZWJWaWV3KSkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIENPTVB0cjxJV2ViVmlld1ByaXZhdGU+IHZpZXdQcml2YXRlOworICAg
IENPTVB0cjxJV2ViVmlld1ByaXZhdGUyPiB2aWV3UHJpdmF0ZTsKICAgICBpZiAoRkFJTEVEKHdl
YlZpZXctPlF1ZXJ5SW50ZXJmYWNlKCZ2aWV3UHJpdmF0ZSkpKQogICAgICAgICByZXR1cm47CiAK
QEAgLTkxLDcgKzkxLDcgQEAgdmVjdG9yPGludD4gVGV4dElucHV0Q29udHJvbGxlcjo6bWFya2Vk
UgogICAgIGlmIChGQUlMRUQoZnJhbWUtPndlYlZpZXcoJndlYlZpZXcpKSkKICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKIAotICAgIENPTVB0cjxJV2ViVmlld1ByaXZhdGU+IHZpZXdQcml2YXRlOwor
ICAgIENPTVB0cjxJV2ViVmlld1ByaXZhdGUyPiB2aWV3UHJpdmF0ZTsKICAgICBpZiAoRkFJTEVE
KHdlYlZpZXctPlF1ZXJ5SW50ZXJmYWNlKCZ2aWV3UHJpdmF0ZSkpKQogICAgICAgICByZXR1cm4g
cmVzdWx0OwogCkBAIC0xMTIsNyArMTEyLDcgQEAgdm9pZCBUZXh0SW5wdXRDb250cm9sbGVyOjpp
bnNlcnRUZXh0KEpTUwogICAgIGlmIChGQUlMRUQoZnJhbWUtPndlYlZpZXcoJndlYlZpZXcpKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgQ09NUHRyPElXZWJWaWV3UHJpdmF0ZT4gdmlld1ByaXZh
dGU7CisgICAgQ09NUHRyPElXZWJWaWV3UHJpdmF0ZTI+IHZpZXdQcml2YXRlOwogICAgIGlmIChG
QUlMRUQod2ViVmlldy0+UXVlcnlJbnRlcmZhY2UoJnZpZXdQcml2YXRlKSkpCiAgICAgICAgIHJl
dHVybjsKICAKQEAgLTEzMCw3ICsxMzAsNyBAQCB2ZWN0b3I8aW50PiBUZXh0SW5wdXRDb250cm9s
bGVyOjpmaXJzdFJlCiAgICAgaWYgKEZBSUxFRChmcmFtZS0+d2ViVmlldygmd2ViVmlldykpKQog
ICAgICAgICByZXR1cm4gcmVzdWx0OwogCi0gICAgQ09NUHRyPElXZWJWaWV3UHJpdmF0ZT4gdmll
d1ByaXZhdGU7CisgICAgQ09NUHRyPElXZWJWaWV3UHJpdmF0ZTI+IHZpZXdQcml2YXRlOwogICAg
IGlmIChGQUlMRUQod2ViVmlldy0+UXVlcnlJbnRlcmZhY2UoJnZpZXdQcml2YXRlKSkpCiAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAKQEAgLTE1NSw3ICsxNTUsNyBAQCB2ZWN0b3I8aW50PiBUZXh0
SW5wdXRDb250cm9sbGVyOjpzZWxlY3RlCiAgICAgaWYgKEZBSUxFRChmcmFtZS0+d2ViVmlldygm
d2ViVmlldykpKQogICAgICAgICByZXR1cm4gcmVzdWx0OwogCi0gICAgQ09NUHRyPElXZWJWaWV3
UHJpdmF0ZT4gdmlld1ByaXZhdGU7CisgICAgQ09NUHRyPElXZWJWaWV3UHJpdmF0ZTI+IHZpZXdQ
cml2YXRlOwogICAgIGlmIChGQUlMRUQod2ViVmlldy0+UXVlcnlJbnRlcmZhY2UoJnZpZXdQcml2
YXRlKSkpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJU
cmVlL3dpbi9VSURlbGVnYXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUv
d2luL1VJRGVsZWdhdGUuaAkocmV2aXNpb24gMTg2ODA0KQorKysgVG9vbHMvRHVtcFJlbmRlclRy
ZWUvd2luL1VJRGVsZWdhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzE3LDkgKzMxNyw3IEBAIHBy
b3RlY3RlZDoKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdW51c2VkMigp
IHsgcmV0dXJuIEVfTk9USU1QTDsgfQogICAgIAogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSB1bnVzZWQzKCkgeyByZXR1cm4gRV9OT1RJTVBMOyB9Ci0KLSAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdW51c2VkNCgpIHsgcmV0dXJuIEVfTk9USU1QTDsg
fQotCisgICAgCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdlYlZpZXdT
Y3JvbGxlZCggCiAgICAgICAgIC8qIFtpbl0gKi8gSVdlYlZpZXcgKnNlbmRlcikgeyByZXR1cm4g
RV9OT1RJTVBMOyB9CiAgICAgCkBAIC0zMzAsNiArMzI4LDggQEAgcHJvdGVjdGVkOgogICAgICAg
ICAvKiBbaW5dICovIEJTVFIgdXJsLAogICAgICAgICAvKiBbaW5dICovIEJPT0wgaXNFcnJvcik7
CiAgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdlYlZpZXdTaG91
bGRJbnRlcnJ1cHRKYXZhU2NyaXB0KElXZWJWaWV3KiwgQk9PTCopIHsgcmV0dXJuIEVfTk9USU1Q
TDsgfQorICAgIAogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3ZWJWaWV3
UmVjZWl2ZWRGb2N1cyggCiAgICAgICAgIC8qIFtpbl0gKi8gSVdlYlZpZXcgKnNlbmRlcikgeyBy
ZXR1cm4gRV9OT1RJTVBMOyB9CiAgICAgCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdC93aW4vV2ViVmlld0Rlc3RydWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC93aW4vV2ViVmlld0Rlc3RydWN0aW9uLmNwcAkocmV2
aXNpb24gMTg2ODA0KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvd2luL1dl
YlZpZXdEZXN0cnVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgyLDcgKzgyLDcgQEAgdm9p
ZCBXZWJWaWV3RGVzdHJ1Y3Rpb25XaXRoSG9zdFdpbmRvdzo6UwogICAgIEVYUEVDVF9IUkVTVUxU
X1NVQ0NFRURFRChtX3dlYlZpZXctPnNldEhvc3RXaW5kb3cobV93aW5kb3cud2luZG93KCkpKTsK
ICAgICBFWFBFQ1RfSFJFU1VMVF9TVUNDRUVERUQobV93ZWJWaWV3LT5pbml0V2l0aEZyYW1lKG1f
d2luZG93LmNsaWVudFJlY3QoKSwgMCwgMCkpOwogCi0gICAgQ09NUHRyPElXZWJWaWV3UHJpdmF0
ZT4gdmlld1ByaXZhdGUoUXVlcnksIG1fd2ViVmlldyk7CisgICAgQ09NUHRyPElXZWJWaWV3UHJp
dmF0ZTI+IHZpZXdQcml2YXRlKFF1ZXJ5LCBtX3dlYlZpZXcpOwogICAgIEFTU0VSVF9OT1RfTlVM
TCh2aWV3UHJpdmF0ZSk7CiAgICAgRVhQRUNUX0hSRVNVTFRfU1VDQ0VFREVEKHZpZXdQcml2YXRl
LT52aWV3V2luZG93KCZtX3ZpZXdXaW5kb3cpKTsKICAgICBFWFBFQ1RfVFJVRSg6OklzV2luZG93
KG1fdmlld1dpbmRvdykpOwpJbmRleDogVG9vbHMvV2luTGF1bmNoZXIvUGFnZUxvYWRUZXN0Q2xp
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XaW5MYXVuY2hlci9QYWdlTG9hZFRlc3RDbGll
bnQuY3BwCShyZXZpc2lvbiAxODY4MDQpCisrKyBUb29scy9XaW5MYXVuY2hlci9QYWdlTG9hZFRl
c3RDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MCw4ICs2MCwxMiBAQCB2b2lkIFBhZ2VM
b2FkVGVzdENsaWVudDo6cGFnZUxvYWRTdGFydGVkCiAKIHZvaWQgUGFnZUxvYWRUZXN0Q2xpZW50
OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZChJV2ViRnJhbWUmIGZyYW1lKQogewotICAgIEJPT0wg
bWFpbkZyYW1lOwotICAgIGlmIChGQUlMRUQoZnJhbWUuaXNNYWluRnJhbWUoJm1haW5GcmFtZSkp
KQorICAgIF9jb21fcHRyX3Q8X2NvbV9JSUlEPElXZWJGcmFtZTIsICZfX3V1aWRvZihJV2ViRnJh
bWUyKT4+IGZyYW1lMjsKKyAgICBpZiAoRkFJTEVEKGZyYW1lLlF1ZXJ5SW50ZXJmYWNlKCZmcmFt
ZTIuR2V0SW50ZXJmYWNlUHRyKCkpKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQk9PTCBtYWlu
RnJhbWUgPSBGQUxTRTsKKyAgICBpZiAoZnJhbWUyICYmIEZBSUxFRChmcmFtZTItPmlzTWFpbkZy
YW1lKCZtYWluRnJhbWUpKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1haW5GcmFtZSkg
ewpJbmRleDogVG9vbHMvV2luTGF1bmNoZXIvV2luTGF1bmNoZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1dpbkxhdW5jaGVyL1dpbkxhdW5jaGVyLmNwcAkocmV2aXNpb24gMTg2ODA0KQorKysg
VG9vbHMvV2luTGF1bmNoZXIvV2luTGF1bmNoZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3
ICs2NSw3IEBAIEhSRVNVTFQgV2luTGF1bmNoZXI6OmluaXQoKQogICAgIGlmIChGQUlMRUQoaHIp
KQogICAgICAgICByZXR1cm4gaHI7CiAKLSAgICBociA9IG1fd2ViVmlldy0+UXVlcnlJbnRlcmZh
Y2UoSUlEX0lXZWJWaWV3UHJpdmF0ZSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZtX3dlYlZp
ZXdQcml2YXRlLkdldEludGVyZmFjZVB0cigpKSk7CisgICAgaHIgPSBtX3dlYlZpZXctPlF1ZXJ5
SW50ZXJmYWNlKElJRF9JV2ViVmlld1ByaXZhdGUyLCByZWludGVycHJldF9jYXN0PHZvaWQqKj4o
Jm1fd2ViVmlld1ByaXZhdGUuR2V0SW50ZXJmYWNlUHRyKCkpKTsKICAgICBpZiAoRkFJTEVEKGhy
KSkKICAgICAgICAgcmV0dXJuIGhyOwogCkluZGV4OiBUb29scy9XaW5MYXVuY2hlci9XaW5MYXVu
Y2hlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dpbkxhdW5jaGVyL1dpbkxhdW5jaGVyLmgJKHJl
dmlzaW9uIDE4NjgwNCkKKysrIFRvb2xzL1dpbkxhdW5jaGVyL1dpbkxhdW5jaGVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKIAogdHlwZWRlZiBfY29tX3B0cl90PF9jb21fSUlJ
RDxJV2ViRnJhbWUsICZfX3V1aWRvZihJV2ViRnJhbWUpPj4gSVdlYkZyYW1lUHRyOwogdHlwZWRl
ZiBfY29tX3B0cl90PF9jb21fSUlJRDxJV2ViVmlldywgJl9fdXVpZG9mKElXZWJWaWV3KT4+IElX
ZWJWaWV3UHRyOwotdHlwZWRlZiBfY29tX3B0cl90PF9jb21fSUlJRDxJV2ViVmlld1ByaXZhdGUs
ICZfX3V1aWRvZihJV2ViVmlld1ByaXZhdGUpPj4gSVdlYlZpZXdQcml2YXRlUHRyOwordHlwZWRl
ZiBfY29tX3B0cl90PF9jb21fSUlJRDxJV2ViVmlld1ByaXZhdGUyLCAmX191dWlkb2YoSVdlYlZp
ZXdQcml2YXRlMik+PiBJV2ViVmlld1ByaXZhdGVQdHI7CiB0eXBlZGVmIF9jb21fcHRyX3Q8X2Nv
bV9JSUlEPElXZWJGcmFtZUxvYWREZWxlZ2F0ZSwgJl9fdXVpZG9mKElXZWJGcmFtZUxvYWREZWxl
Z2F0ZSk+PiBJV2ViRnJhbWVMb2FkRGVsZWdhdGVQdHI7CiB0eXBlZGVmIF9jb21fcHRyX3Q8X2Nv
bV9JSUlEPElXZWJIaXN0b3J5LCAmX191dWlkb2YoSVdlYkhpc3RvcnkpPj4gSVdlYkhpc3RvcnlQ
dHI7CiB0eXBlZGVmIF9jb21fcHRyX3Q8X2NvbV9JSUlEPElXZWJIaXN0b3J5SXRlbSwgJl9fdXVp
ZG9mKElXZWJIaXN0b3J5SXRlbSk+PiBJV2ViSGlzdG9yeUl0ZW1QdHI7CkluZGV4OiBUb29scy9X
aW5MYXVuY2hlci9XaW5MYXVuY2hlcldlYkhvc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dp
bkxhdW5jaGVyL1dpbkxhdW5jaGVyV2ViSG9zdC5jcHAJKHJldmlzaW9uIDE4NjgwNCkKKysrIFRv
b2xzL1dpbkxhdW5jaGVyL1dpbkxhdW5jaGVyV2ViSG9zdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE0MiwxNiArMTQyLDIwIEBAIFVMT05HIFdpbkxhdW5jaGVyV2ViSG9zdDo6UmVsZWFzZSgpCiB0
eXBlZGVmIF9jb21fcHRyX3Q8X2NvbV9JSUlEPElET01Eb2N1bWVudCwgJl9fdXVpZG9mKElET01E
b2N1bWVudCk+PiBJRE9NRG9jdW1lbnRQdHI7CiB0eXBlZGVmIF9jb21fcHRyX3Q8X2NvbV9JSUlE
PElET01FbGVtZW50LCAmX191dWlkb2YoSURPTUVsZW1lbnQpPj4gSURPTUVsZW1lbnRQdHI7CiB0
eXBlZGVmIF9jb21fcHRyX3Q8X2NvbV9JSUlEPElET01FdmVudFRhcmdldCwgJl9fdXVpZG9mKElE
T01FdmVudFRhcmdldCk+PiBJRE9NRXZlbnRUYXJnZXRQdHI7Cit0eXBlZGVmIF9jb21fcHRyX3Q8
X2NvbV9JSUlEPElXZWJGcmFtZTIsICZfX3V1aWRvZihJV2ViRnJhbWUyKT4+IElXZWJGcmFtZTJQ
dHI7CiAKIEhSRVNVTFQgV2luTGF1bmNoZXJXZWJIb3N0OjpkaWRGaW5pc2hMb2FkRm9yRnJhbWUo
SVdlYlZpZXcqIHdlYlZpZXcsIElXZWJGcmFtZSogZnJhbWUpCiB7CiAgICAgaWYgKCFmcmFtZSB8
fCAhd2ViVmlldykKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKIAotICAgIEJPT0wgbWFpbkZy
YW1lOwotICAgIGlmIChTVUNDRUVERUQoZnJhbWUtPmlzTWFpbkZyYW1lKCZtYWluRnJhbWUpKSkg
ewotICAgICAgICBpZiAobWFpbkZyYW1lKQotICAgICAgICAgICAgbV9jbGllbnQtPnBhZ2VMb2Fk
VGVzdENsaWVudCgpLmRpZEZpbmlzaExvYWQoKTsKKyAgICBJV2ViRnJhbWUyUHRyIGZyYW1lMjsK
KyAgICBpZiAoU1VDQ0VFREVEKGZyYW1lLT5RdWVyeUludGVyZmFjZSgmZnJhbWUyLkdldEludGVy
ZmFjZVB0cigpKSkpIHsKKyAgICAgICAgQk9PTCBtYWluRnJhbWUgPSBGQUxTRTsKKyAgICAgICAg
aWYgKGZyYW1lMiAmJiBTVUNDRUVERUQoZnJhbWUyLT5pc01haW5GcmFtZSgmbWFpbkZyYW1lKSkp
IHsKKyAgICAgICAgICAgIGlmIChtYWluRnJhbWUpCisgICAgICAgICAgICAgICAgbV9jbGllbnQt
PnBhZ2VMb2FkVGVzdENsaWVudCgpLmRpZEZpbmlzaExvYWQoKTsKKyAgICAgICAgfQogICAgIH0K
IAogICAgIElET01Eb2N1bWVudFB0ciBkb2M7CkBAIC0yMjEsOCArMjI1LDE1IEBAIEhSRVNVTFQg
V2luTGF1bmNoZXJXZWJIb3N0OjpkaWRIYW5kbGVPbmwKIAogSFJFU1VMVCBXaW5MYXVuY2hlcldl
Ykhvc3Q6OmRpZEZpcnN0TGF5b3V0SW5GcmFtZShJV2ViVmlldyosIElXZWJGcmFtZSogZnJhbWUp
CiB7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKworICAgIElX
ZWJGcmFtZTJQdHIgZnJhbWUyOworICAgIGlmIChGQUlMRUQoZnJhbWUtPlF1ZXJ5SW50ZXJmYWNl
KCZmcmFtZTIuR2V0SW50ZXJmYWNlUHRyKCkpKSkKKyAgICAgICAgcmV0dXJuIFNfT0s7CisKICAg
ICBCT09MIG1haW5GcmFtZTsKLSAgICBpZiAoU1VDQ0VFREVEKGZyYW1lLT5pc01haW5GcmFtZSgm
bWFpbkZyYW1lKSkpIHsKKyAgICBpZiAoZnJhbWUyICYmIFNVQ0NFRURFRChmcmFtZTItPmlzTWFp
bkZyYW1lKCZtYWluRnJhbWUpKSkgewogICAgICAgICBpZiAobWFpbkZyYW1lKQogICAgICAgICAg
ICAgbV9jbGllbnQtPnBhZ2VMb2FkVGVzdENsaWVudCgpLmRpZEZpcnN0TGF5b3V0Rm9yTWFpbkZy
YW1lKCk7CiAgICAgfQpJbmRleDogVG9vbHMvV2luTGF1bmNoZXIvV2luTGF1bmNoZXJXZWJIb3N0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvV2luTGF1bmNoZXIvV2luTGF1bmNoZXJXZWJIb3N0LmgJ
KHJldmlzaW9uIDE4NjgwNCkKKysrIFRvb2xzL1dpbkxhdW5jaGVyL1dpbkxhdW5jaGVyV2ViSG9z
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwNiwgMjAxNCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA2LCAyMDE0LTIwMTUgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwo=
</data>
<flag name="review"
          id="281983"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
      

    </bug>

</bugzilla>