<?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>136258</bug_id>
          
          <creation_ts>2014-08-26 10:31:10 -0700</creation_ts>
          <short_desc>[Win] WebKit IDL incorrectly passes HWND values as OLE_HANDLE</short_desc>
          <delta_ts>2014-08-26 14:57:27 -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>P1</priority>
          <bug_severity>Blocker</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>1031400</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-08-26 10:31:10 -0700</bug_when>
    <thetext>We have a 64-bit porting problem with HWND&apos;s through the WebKit IDL layer. For some reason, these handles were declared as OLE_HANDLE values, which map to 32-bits on both 32- and 64-bit platforms. Internally, these are converted to HWND, which are 64-bit values on 64-bit builds. This causes problems when WebCore attempts to locate and use the windows associated with these incorrect HWND values.

This problem can be difficult to reproduce as we only experience a problem when the original HWND included active bits in the unique 64-bit portion of the HWND value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031416</commentid>
    <comment_count>1</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-08-26 11:06:43 -0700</bug_when>
    <thetext>&lt;rdar://problem/18134138&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031458</commentid>
    <comment_count>2</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-08-26 12:59:42 -0700</bug_when>
    <thetext>HWND, HBITMAP, HDC, HICON, HCURSOR, and HMENU are now passed as these types, since they have proper 32-bit and 64-bit behavior depending on compile platform.

OLE_HANDLE for certificates and other &quot;void*&quot; types are now ULONG_PTR.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031477</commentid>
    <comment_count>3</comment_count>
      <attachid>237172</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-08-26 14:13:28 -0700</bug_when>
    <thetext>Created attachment 237172
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031480</commentid>
    <comment_count>4</comment_count>
      <attachid>237173</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-08-26 14:21:55 -0700</bug_when>
    <thetext>Created attachment 237173
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031485</commentid>
    <comment_count>5</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-08-26 14:40:07 -0700</bug_when>
    <thetext>Committed r172977: &lt;http://trac.webkit.org/changeset/172977&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031488</commentid>
    <comment_count>6</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-08-26 14:57:07 -0700</bug_when>
    <thetext>&lt;rdar://problem/18134163&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031489</commentid>
    <comment_count>7</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-08-26 14:57:27 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; &lt;rdar://problem/18134138&gt;

Whoops!  I meant &lt;rdar://problem/18134163&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237172</attachid>
            <date>2014-08-26 14:13:28 -0700</date>
            <delta_ts>2014-08-26 14:21:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-136258-20140826141424.patch</filename>
            <type>text/plain</type>
            <size>89687</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3Mjk3MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDE0LTA4LTI2ICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtXaW5dIFdlYktpdCBJREwg
aW5jb3JyZWN0bHkgcGFzc2VzIEhXTkQgYXMgT0xFX0hBTkRMRQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2MjU4CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8xODEzNDEzOD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBdm9pZCAzMi82NC1iaXQgdHJ1bmNhdGlvbiBieSBwcmV2ZW50aW5nIDY0LWJpdCBI
V05EIChhbmQgb3RoZXIpCisgICAgICAgIHZhbHVlcyBmcm9tIHBhc3NpbmcgdGhyb3VnaCB0aGUg
MzItYml0IE9MRV9IQU5ETEUgZGF0YSB0eXBlLgorCisgICAgICAgICogcGxhdGZvcm0vd2luL1dp
bmRvd01lc3NhZ2VCcm9hZGNhc3Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXaW5kb3dNZXNz
YWdlQnJvYWRjYXN0ZXI6OmFkZExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldpbmRvd01l
c3NhZ2VCcm9hZGNhc3Rlcjo6cmVtb3ZlTGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2lu
ZG93TWVzc2FnZUJyb2FkY2FzdGVyOjpkZXN0cm95KToKKyAgICAgICAgKFdlYkNvcmU6OldpbmRv
d01lc3NhZ2VCcm9hZGNhc3Rlcjo6dW5zdWJjbGFzc1dpbmRvdyk6CisgICAgICAgIChXZWJDb3Jl
OjpXaW5kb3dNZXNzYWdlQnJvYWRjYXN0ZXI6OlN1YmNsYXNzZWRXbmRQcm9jKToKKwogMjAxNC0w
OC0yMiAgTHVjYXMgRm9yc2NobGVyICA8bGZvcnNjaGxlckBhcHBsZS5jb20+CiAKICAgICAgICAg
TWVyZ2UgcjE3Mjg1NApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dpbmRvd01l
c3NhZ2VCcm9hZGNhc3Rlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL1dpbmRvd01lc3NhZ2VCcm9hZGNhc3Rlci5jcHAJKHJldmlzaW9uIDE3Mjk0NikKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XaW5kb3dNZXNzYWdlQnJvYWRjYXN0ZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcs
IDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC03OSw2ICs3OSw3IEBAIHZvaWQgV2luZG93TWVzc2FnZUJyb2FkY2Fz
dGVyOjphZGRMaXN0ZW4KICNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MjQ0IDQzMTIpCiAgICAg
ICAgIG1fb3JpZ2luYWxXbmRQcm9jID0gcmVpbnRlcnByZXRfY2FzdDxXTkRQUk9DPihTZXRXaW5k
b3dMb25nUHRyKG1fc3ViY2xhc3NlZFdpbmRvdywgR1dMUF9XTkRQUk9DLCByZWludGVycHJldF9j
YXN0PExPTkdfUFRSPihTdWJjbGFzc2VkV25kUHJvYykpKTsKICAgICB9CisgICAgQVNTRVJUKG1f
b3JpZ2luYWxXbmRQcm9jKTsKIAogICAgIG1fbGlzdGVuZXJzLmFkZChsaXN0ZW5lcik7CiB9CkBA
IC0xMDgsNiArMTA5LDggQEAgTFJFU1VMVCBDQUxMQkFDSyBXaW5kb3dNZXNzYWdlQnJvYWRjYXN0
ZQogewogICAgIFdpbmRvd01lc3NhZ2VCcm9hZGNhc3RlciogYnJvYWRjYXN0ZXIgPSBpbnN0YW5j
ZXNNYXAoKS5nZXQoaHduZCk7CiAgICAgQVNTRVJUKGJyb2FkY2FzdGVyKTsKKyAgICBpZiAoIWJy
b2FkY2FzdGVyKQorICAgICAgICByZXR1cm4gMDsKIAogICAgIExpc3RlbmVyU2V0Ojpjb25zdF9p
dGVyYXRvciBlbmQgPSBicm9hZGNhc3Rlci0+bGlzdGVuZXJzKCkuZW5kKCk7CiAgICAgZm9yIChM
aXN0ZW5lclNldDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBicm9hZGNhc3Rlci0+bGlzdGVuZXJzKCku
YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQpJbmRleDogU291cmNlL1dlYktpdC93aW4vQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24g
MTcyOTczKQorKysgU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTAzIEBACisyMDE0LTA4LTI2ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBw
bGUuY29tPgorCisgICAgICAgIFtXaW5dIFdlYktpdCBJREwgaW5jb3JyZWN0bHkgcGFzc2VzIEhX
TkQgYXMgT0xFX0hBTkRMRQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTM2MjU4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xODEzNDEzOD4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBdm9pZCAzMi82NC1i
aXQgdHJ1bmNhdGlvbiBieSBwcmV2ZW50aW5nIDY0LWJpdCBIV05EIChhbmQgb3RoZXIpCisgICAg
ICAgIHZhbHVlcyBmcm9tIHBhc3NpbmcgdGhyb3VnaCB0aGUgMzItYml0IE9MRV9IQU5ETEUgZGF0
YSB0eXBlLgorCisgICAgICAgICogSW50ZXJmYWNlcy9JV2ViRG9jdW1lbnQuaWRsOgorICAgICAg
ICAqIEludGVyZmFjZXMvSVdlYkVtYmVkZGVkVmlldy5pZGw6CisgICAgICAgICogSW50ZXJmYWNl
cy9JV2ViRXJyb3JQcml2YXRlLmlkbDoKKyAgICAgICAgKiBJbnRlcmZhY2VzL0lXZWJGcmFtZUxv
YWREZWxlZ2F0ZS5pZGw6CisgICAgICAgICogSW50ZXJmYWNlcy9JV2ViRnJhbWVQcml2YXRlLmlk
bDoKKyAgICAgICAgKiBJbnRlcmZhY2VzL0lXZWJIaXN0b3J5SXRlbS5pZGw6CisgICAgICAgICog
SW50ZXJmYWNlcy9JV2ViSWNvbkRhdGFiYXNlLmlkbDoKKyAgICAgICAgKiBJbnRlcmZhY2VzL0lX
ZWJNdXRhYmxlVVJMUmVxdWVzdFByaXZhdGUuaWRsOgorICAgICAgICAqIEludGVyZmFjZXMvSVdl
YlVJRGVsZWdhdGUuaWRsOgorICAgICAgICAqIEludGVyZmFjZXMvSVdlYlVJRGVsZWdhdGVQcml2
YXRlLmlkbDoKKyAgICAgICAgKiBJbnRlcmZhY2VzL0lXZWJVUkxSZXNwb25zZVByaXZhdGUuaWRs
OgorICAgICAgICAqIEludGVyZmFjZXMvSVdlYlZpZXcuaWRsOgorICAgICAgICAqIEludGVyZmFj
ZXMvSVdlYlZpZXdQcml2YXRlLmlkbDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FbWJlZGRl
ZFdpZGdldC5jcHA6CisgICAgICAgIChFbWJlZGRlZFdpZGdldDo6Y3JlYXRlV2luZG93KToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
Q2hyb21lQ2xpZW50Ojpyb290Vmlld1RvU2NyZWVuKToKKyAgICAgICAgKFdlYkNocm9tZUNsaWVu
dDo6c2NyZWVuVG9Sb290Vmlldyk6CisgICAgICAgIChXZWJDaHJvbWVDbGllbnQ6OnBsYXRmb3Jt
UGFnZUNsaWVudCk6CisgICAgICAgIChXZWJDaHJvbWVDbGllbnQ6OnJ1bk9wZW5QYW5lbCk6Cisg
ICAgICAgIChXZWJDaHJvbWVDbGllbnQ6OnNldEN1cnNvcik6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29udGV4dE1lbnVD
bGllbnQ6OmN1c3RvbWl6ZU1lbnUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQ
bHVnaW4pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHA6
CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6OmhpZ2hsaWdodCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3JGcm9udGVuZENsaWVudDo6c2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmNsb3NlV2luZG93V2l0aG91dE5vdGlmaWNhdGlv
bnMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNob3dXaW5kb3dXaXRo
b3V0Tm90aWZpY2F0aW9ucyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9y
Q2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yRGVsZWdhdGUu
Y3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckRlbGVnYXRlLmg6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3JEZWxlZ2F0ZTo6d2ViVmlld0ZpcnN0UmVzcG9uZGVyKToKKyAg
ICAgICAgKFdlYkluc3BlY3RvckRlbGVnYXRlOjptYWtlRmlyc3RSZXNwb25kZXIpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yRGVsZWdhdGU6OmNvbnRleHRNZW51SXRlbXNGb3JFbGVtZW50KToKKyAg
ICAgICAgKFdlYkluc3BlY3RvckRlbGVnYXRlOjp0cmFja0N1c3RvbVBvcHVwTWVudSk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3JEZWxlZ2F0ZTo6YWRkQ3VzdG9tTWVudURyYXdpbmdEYXRhKToKKyAg
ICAgICAgKFdlYkluc3BlY3RvckRlbGVnYXRlOjpjbGVhblVwQ3VzdG9tTWVudURyYXdpbmdEYXRh
KToKKyAgICAgICAgKFdlYkluc3BlY3RvckRlbGVnYXRlOjpkcmF3SGVhZGVySW5SZWN0KToKKyAg
ICAgICAgKFdlYkluc3BlY3RvckRlbGVnYXRlOjpkcmF3Rm9vdGVySW5SZWN0KToKKyAgICAgICAg
KiBXZWJEcm9wU291cmNlLmNwcDoKKyAgICAgICAgKGdlbmVyYXRlTW91c2VFdmVudCk6CisgICAg
ICAgIChXZWJEcm9wU291cmNlOjpHaXZlRmVlZGJhY2spOgorICAgICAgICAqIFdlYkVycm9yLmNw
cDoKKyAgICAgICAgKFdlYkVycm9yOjpzc2xQZWVyQ2VydGlmaWNhdGUpOgorICAgICAgICAqIFdl
YkVycm9yLmg6CisgICAgICAgICogV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViRnJhbWU6OnBh
aW50RG9jdW1lbnRSZWN0VG9Db250ZXh0KToKKyAgICAgICAgKFdlYkZyYW1lOjpwYWludFNjcm9s
bFZpZXdSZWN0VG9Db250ZXh0QXRQb2ludCk6CisgICAgICAgIChXZWJGcmFtZTo6Y3JlYXRlU3Vi
ZnJhbWVXaXRoT3duZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkZyYW1lOjppbml0V2l0aFdlYlZp
ZXcpOgorICAgICAgICAoV2ViRnJhbWU6OmRyYXdIZWFkZXIpOgorICAgICAgICAoV2ViRnJhbWU6
OmRyYXdGb290ZXIpOgorICAgICAgICAqIFdlYkZyYW1lLmg6CisgICAgICAgICogV2ViSGlzdG9y
eUl0ZW0uY3BwOgorICAgICAgICAoV2ViSGlzdG9yeUl0ZW06Omljb24pOgorICAgICAgICAqIFdl
Ykhpc3RvcnlJdGVtLmg6CisgICAgICAgICogV2ViSWNvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAg
KFdlYkljb25EYXRhYmFzZTo6aWNvbkZvclVSTCk6CisgICAgICAgIChXZWJJY29uRGF0YWJhc2U6
OmRlZmF1bHRJY29uV2l0aFNpemUpOgorICAgICAgICAqIFdlYkljb25EYXRhYmFzZS5oOgorICAg
ICAgICAqIFdlYk11dGFibGVVUkxSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYk11dGFibGVVUkxS
ZXF1ZXN0OjpzZXRDbGllbnRDZXJ0aWZpY2F0ZSk6CisgICAgICAgICogV2ViTXV0YWJsZVVSTFJl
cXVlc3QuaDoKKyAgICAgICAgKiBXZWJOb2RlSGlnaGxpZ2h0LmNwcDoKKyAgICAgICAgKFdlYk5v
ZGVIaWdobGlnaHQ6OldlYk5vZGVIaWdobGlnaHQpOgorICAgICAgICAqIFdlYlVSTFJlc3BvbnNl
LmNwcDoKKyAgICAgICAgKFdlYlVSTFJlc3BvbnNlOjpzc2xQZWVyQ2VydGlmaWNhdGUpOgorICAg
ICAgICAqIFdlYlVSTFJlc3BvbnNlLmg6CisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAg
IChXZWJWaWV3OjpwYWludEludG9CYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViVmlldzo6aGFu
ZGxlQ29udGV4dE1lbnVFdmVudCk6CisgICAgICAgIChXZWJWaWV3OjpvbkluaXRNZW51UG9wdXAp
OgorICAgICAgICAoV2ViVmlldzo6b25VbmluaXRNZW51UG9wdXApOgorICAgICAgICAoV2ViVmll
dzo6V2ViVmlld1duZFByb2MpOgorICAgICAgICAoV2ViVmlldzo6ZGlzcGF0Y2hEaWRSZWNlaXZl
SWNvbkZyb21XZWJGcmFtZSk6CisgICAgICAgIChXZWJWaWV3OjpzZXRIb3N0V2luZG93KToKKyAg
ICAgICAgKFdlYlZpZXc6Omhvc3RXaW5kb3cpOgorICAgICAgICAoV2ViVmlldzo6Z2VuZXJhdGVT
ZWxlY3Rpb25JbWFnZSk6CisgICAgICAgIChXZWJWaWV3OjptYWluRnJhbWVJY29uKToKKyAgICAg
ICAgKFdlYlZpZXc6OnZpZXdXaW5kb3cpOgorICAgICAgICAoV2ViVmlldzo6cGFpbnREb2N1bWVu
dFJlY3RUb0NvbnRleHQpOgorICAgICAgICAoV2ViVmlldzo6cGFpbnRTY3JvbGxWaWV3UmVjdFRv
Q29udGV4dEF0UG9pbnQpOgorICAgICAgICAoV2ViVmlldzo6YmFja2luZ1N0b3JlKToKKyAgICAg
ICAgKFdlYlZpZXc6OmZ1bGxTY3JlZW5DbGllbnRTZXRQYXJlbnRXaW5kb3cpOgorICAgICAgICAq
IFdlYlZpZXcuaDoKKwogMjAxNC0wNy0yMyAgTHVjYXMgRm9yc2NobGVyICA8bGZvcnNjaGxlckBh
cHBsZS5jb20+CiAKICAgICAgICAgTWVyZ2UgcjE3MTQwMwpJbmRleDogU291cmNlL1dlYktpdC93
aW4vV2ViRHJvcFNvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2Vi
RHJvcFNvdXJjZS5jcHAJKHJldmlzaW9uIDE3Mjk0NikKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dl
YkRyb3BTb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OCw5ICs5OCw5IEBAIFBsYXRmb3Jt
TW91c2VFdmVudCBnZW5lcmF0ZU1vdXNlRXZlbnQoV2UKICAgICBQT0lOVEwgcHQ7CiAgICAgOjpH
ZXRDdXJzb3JQb3MoKExQUE9JTlQpJnB0KTsKICAgICBQT0lOVEwgbG9jYWxwdCA9IHB0OwotICAg
IE9MRV9IQU5ETEUgdmlld1dpbmRvdzsKKyAgICBIV05EIHZpZXdXaW5kb3c7CiAgICAgaWYgKFNV
Q0NFRURFRCh3ZWJWaWV3LT52aWV3V2luZG93KCZ2aWV3V2luZG93KSkpCi0gICAgICAgIDo6U2Ny
ZWVuVG9DbGllbnQocmVpbnRlcnByZXRfY2FzdDxIV05EPih2aWV3V2luZG93KSwgcmVpbnRlcnBy
ZXRfY2FzdDxMUFBPSU5UPigmbG9jYWxwdCkpOworICAgICAgICA6OlNjcmVlblRvQ2xpZW50KHZp
ZXdXaW5kb3csIHJlaW50ZXJwcmV0X2Nhc3Q8TFBQT0lOVD4oJmxvY2FscHQpKTsKICAgICByZXR1
cm4gUGxhdGZvcm1Nb3VzZUV2ZW50KEludFBvaW50KGxvY2FscHQueCwgbG9jYWxwdC55KSwgSW50
UG9pbnQocHQueCwgcHQueSksCiAgICAgICAgIGlzRHJhZyA/IExlZnRCdXR0b24gOiBOb0J1dHRv
biwgUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFs
c2UsIGN1cnJlbnRUaW1lKCkpOwogfQpAQCAtMTMxLDcgKzEzMSw3IEBAIFNURE1FVEhPRElNUCBX
ZWJEcm9wU291cmNlOjpHaXZlRmVlZGJhY2sKICAgICAgICAgcmV0dXJuIERSQUdEUk9QX1NfVVNF
REVGQVVMVENVUlNPUlM7CiAgICAgCiAgICAgSFdORCB2aWV3V2luZG93OwotICAgIGlmIChGQUlM
RUQobV93ZWJWaWV3LT52aWV3V2luZG93KHJlaW50ZXJwcmV0X2Nhc3Q8T0xFX0hBTkRMRSo+KCZ2
aWV3V2luZG93KSkpKQorICAgIGlmIChGQUlMRUQobV93ZWJWaWV3LT52aWV3V2luZG93KCZ2aWV3
V2luZG93KSkpCiAgICAgICAgIHJldHVybiBEUkFHRFJPUF9TX1VTRURFRkFVTFRDVVJTT1JTOwog
CiAgICAgUkVDVCB3ZWJWaWV3UmVjdDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkVycm9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJFcnJvci5jcHAJKHJldmlz
aW9uIDE3Mjk0NikKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkVycm9yLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjA4LDggKzIwOCw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRXJy
b3I6OmlzUG8KICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBXZWJFcnJvcjo6c3NsUGVlckNlcnRpZmljYXRlKCAKLSAgICAvKiBbcmV0dmFsXVtvdXRdICov
IE9MRV9IQU5ETEUqIHJlc3VsdCkKK0hSRVNVTFQgV2ViRXJyb3I6OnNzbFBlZXJDZXJ0aWZpY2F0
ZSgvKiBbcmV0dmFsXVtvdXRdICovIFVMT05HX1BUUiogcmVzdWx0KQogewogICAgIGlmICghcmVz
dWx0KQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwpAQCAtMjI4LDcgKzIyNyw3IEBAIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRXJyb3I6OnNzbFAKICAgICB2b2lkKiBkYXRhID0gd2tH
ZXRTU0xQZWVyQ2VydGlmaWNhdGVEYXRhQnl0ZVB0cihtX2NmRXJyb3JVc2VySW5mb0RpY3QuZ2V0
KCkpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKLSAgICAqcmVzdWx0
ID0gKE9MRV9IQU5ETEUpKFVMT05HNjQpZGF0YTsKKyAgICAqcmVzdWx0ID0gcmVpbnRlcnByZXRf
Y2FzdDxVTE9OR19QVFI+KGRhdGEpOwogI2VuZGlmCiAgICAgcmV0dXJuICpyZXN1bHQgPyBTX09L
IDogRV9GQUlMOwogfQpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViRXJyb3IuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJFcnJvci5oCShyZXZpc2lvbiAxNzI5NDYpCisr
KyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJFcnJvci5oCSh3b3JraW5nIGNvcHkpCkBAIC04Miw4ICs4
Miw3IEBAIHB1YmxpYzoKICAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MICpyZXN1bHQp
OwogCiAgICAgLy8gSVdlYkVycm9yUHJpdmF0ZQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBzc2xQZWVyQ2VydGlmaWNhdGUoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRd
ICovIE9MRV9IQU5ETEUgKnJlc3VsdCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIHNzbFBlZXJDZXJ0aWZpY2F0ZSgvKiBbcmV0dmFsXVtvdXRdICovIFVMT05HX1BUUiog
cmVzdWx0KTsKIAogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIHJlc291cmNlRXJy
b3IoKSBjb25zdDsKIApJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcAkocmV2aXNpb24gMTcyOTQ2
KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MTQsOSArMzE0LDcgQEAgSFJFU1VMVCBXZWJGcmFtZTo6cmVsb2FkRnJvbU9yaWdpbigpCiAgICAg
cmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRnJhbWU6OnBh
aW50RG9jdW1lbnRSZWN0VG9Db250ZXh0KAotICAgIC8qIFtpbl0gKi8gUkVDVCByZWN0LAotICAg
IC8qIFtpbl0gKi8gT0xFX0hBTkRMRSBkZXZpY2VDb250ZXh0KQorSFJFU1VMVCBXZWJGcmFtZTo6
cGFpbnREb2N1bWVudFJlY3RUb0NvbnRleHQoUkVDVCByZWN0LCBIREMgZGV2aWNlQ29udGV4dCkK
IHsKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZSh0aGlzKTsKICAgICBpZiAoIWNvcmVGcmFt
ZSkKQEAgLTMyOSw4ICszMjcsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkZyYW1l
OjpwYWluCiAgICAgLy8gV2UgY2FuJ3QgcGFpbnQgd2l0aCBhIGxheW91dCBzdGlsbCBwZW5kaW5n
LgogICAgIHZpZXctPnVwZGF0ZUxheW91dEFuZFN0eWxlSWZOZWVkZWRSZWN1cnNpdmUoKTsKIAot
ICAgIEhEQyBkYyA9IHJlaW50ZXJwcmV0X2Nhc3Q8SERDPihzdGF0aWNfY2FzdDxVTE9ORzY0Pihk
ZXZpY2VDb250ZXh0KSk7Ci0gICAgR3JhcGhpY3NDb250ZXh0IGdjKGRjKTsKKyAgICBHcmFwaGlj
c0NvbnRleHQgZ2MoZGV2aWNlQ29udGV4dCk7CiAgICAgZ2Muc2V0U2hvdWxkSW5jbHVkZUNoaWxk
V2luZG93cyh0cnVlKTsKICAgICBnYy5zYXZlKCk7CiAgICAgTE9ORyB3aWR0aCA9IHJlY3Qucmln
aHQgLSByZWN0LmxlZnQ7CkBAIC0zNDYsMTAgKzM0Myw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgV2ViRnJhbWU6OnBhaW4KICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBXZWJGcmFtZTo6cGFpbnRTY3JvbGxWaWV3UmVjdFRvQ29udGV4dEF0UG9p
bnQoCi0gICAgLyogW2luXSAqLyBSRUNUIHJlY3QsCi0gICAgLyogW2luXSAqLyBQT0lOVCBwdCwK
LSAgICAvKiBbaW5dICovIE9MRV9IQU5ETEUgZGV2aWNlQ29udGV4dCkKK0hSRVNVTFQgV2ViRnJh
bWU6OnBhaW50U2Nyb2xsVmlld1JlY3RUb0NvbnRleHRBdFBvaW50KFJFQ1QgcmVjdCwgUE9JTlQg
cHQsIEhEQyBkZXZpY2VDb250ZXh0KQogewogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKHRo
aXMpOwogICAgIGlmICghY29yZUZyYW1lKQpAQCAtMzYyLDggKzM1Niw3IEBAIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgV2ViRnJhbWU6OnBhaW4KICAgICAvLyBXZSBjYW4ndCBwYWludCB3aXRo
IGEgbGF5b3V0IHN0aWxsIHBlbmRpbmcuCiAgICAgdmlldy0+dXBkYXRlTGF5b3V0QW5kU3R5bGVJ
Zk5lZWRlZFJlY3Vyc2l2ZSgpOwogCi0gICAgSERDIGRjID0gcmVpbnRlcnByZXRfY2FzdDxIREM+
KHN0YXRpY19jYXN0PFVMT05HNjQ+KGRldmljZUNvbnRleHQpKTsKLSAgICBHcmFwaGljc0NvbnRl
eHQgZ2MoZGMpOworICAgIEdyYXBoaWNzQ29udGV4dCBnYyhkZXZpY2VDb250ZXh0KTsKICAgICBn
Yy5zZXRTaG91bGRJbmNsdWRlQ2hpbGRXaW5kb3dzKHRydWUpOwogICAgIGdjLnNhdmUoKTsKICAg
ICBJbnRSZWN0IGRpcnR5UmVjdChyZWN0KTsKQEAgLTEwNTMsNyArMTA0Niw3IEBAIFBhc3NSZWZQ
dHI8RnJhbWU+IFdlYkZyYW1lOjpjcmVhdGVTdWJmcmEKICAgICB3ZWJWaWV3LT5RdWVyeUludGVy
ZmFjZSgmZC0+d2ViVmlldyk7CiAgICAgZC0+d2ViVmlldy0+UmVsZWFzZSgpOyAvLyBkb24ndCBo
b2xkIHRoZSBleHRyYSByZWYKIAotICAgIE9MRV9IQU5ETEUgdmlld1dpbmRvdzsKKyAgICBIV05E
IHZpZXdXaW5kb3c7CiAgICAgZC0+d2ViVmlldy0+dmlld1dpbmRvdygmdmlld1dpbmRvdyk7CiAK
ICAgICB0aGlzLT5BZGRSZWYoKTsgLy8gV2UgcmVsZWFzZSB0aGlzIHJlZiBpbiBmcmFtZUxvYWRl
ckRlc3Ryb3llZCgpCkBAIC0xMDY3LDcgKzEwNjAsNyBAQCB2b2lkIFdlYkZyYW1lOjppbml0V2l0
aFdlYlZpZXcoSVdlYlZpZXcqCiAgICAgd2ViVmlldy0+UXVlcnlJbnRlcmZhY2UoJmQtPndlYlZp
ZXcpOwogICAgIGQtPndlYlZpZXctPlJlbGVhc2UoKTsgLy8gZG9uJ3QgaG9sZCB0aGUgZXh0cmEg
cmVmCiAKLSAgICBPTEVfSEFORExFIHZpZXdXaW5kb3c7CisgICAgSFdORCB2aWV3V2luZG93Owog
ICAgIGQtPndlYlZpZXctPnZpZXdXaW5kb3coJnZpZXdXaW5kb3cpOwogCiAgICAgdGhpcy0+QWRk
UmVmKCk7IC8vIFdlIHJlbGVhc2UgdGhpcyByZWYgaW4gZnJhbWVMb2FkZXJEZXN0cm95ZWQoKQpA
QCAtMTU4NCw3ICsxNTc3LDcgQEAgdm9pZCBXZWJGcmFtZTo6ZHJhd0hlYWRlcihQbGF0Zm9ybUdy
YXBoaQogICAgIGludCB4ID0gcGFnZVJlY3QueCgpOwogICAgIGludCB5ID0gMDsKICAgICBSRUNU
IGhlYWRlclJlY3QgPSB7eCwgeSwgeCtwYWdlUmVjdC53aWR0aCgpLCB5K3N0YXRpY19jYXN0PGlu
dD4oaGVhZGVySGVpZ2h0KX07Ci0gICAgdWktPmRyYXdIZWFkZXJJblJlY3QoZC0+d2ViVmlldywg
JmhlYWRlclJlY3QsIHN0YXRpY19jYXN0PE9MRV9IQU5ETEU+KHJlaW50ZXJwcmV0X2Nhc3Q8TE9O
RzY0PihwY3R4KSkpOworICAgIHVpLT5kcmF3SGVhZGVySW5SZWN0KGQtPndlYlZpZXcsICZoZWFk
ZXJSZWN0LCByZWludGVycHJldF9jYXN0PFVMT05HX1BUUj4ocGN0eCkpOwogfQogCiB2b2lkIFdl
YkZyYW1lOjpkcmF3Rm9vdGVyKFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0KiBwY3R4LCBJV2ViVUlE
ZWxlZ2F0ZSogdWksIGNvbnN0IEludFJlY3QmIHBhZ2VSZWN0LCBVSU5UIHBhZ2UsIFVJTlQgcGFn
ZUNvdW50LCBmbG9hdCBoZWFkZXJIZWlnaHQsIGZsb2F0IGZvb3RlckhlaWdodCkKQEAgLTE1OTIs
NyArMTU4NSw3IEBAIHZvaWQgV2ViRnJhbWU6OmRyYXdGb290ZXIoUGxhdGZvcm1HcmFwaGkKICAg
ICBpbnQgeCA9IHBhZ2VSZWN0LngoKTsKICAgICBpbnQgeSA9IG1heCgoaW50KWhlYWRlckhlaWdo
dCtwYWdlUmVjdC5oZWlnaHQoKSwgbV9wYWdlSGVpZ2h0LXN0YXRpY19jYXN0PGludD4oZm9vdGVy
SGVpZ2h0KSk7CiAgICAgUkVDVCBmb290ZXJSZWN0ID0ge3gsIHksIHgrcGFnZVJlY3Qud2lkdGgo
KSwgeStzdGF0aWNfY2FzdDxpbnQ+KGZvb3RlckhlaWdodCl9OwotICAgIHVpLT5kcmF3Rm9vdGVy
SW5SZWN0KGQtPndlYlZpZXcsICZmb290ZXJSZWN0LCBzdGF0aWNfY2FzdDxPTEVfSEFORExFPihy
ZWludGVycHJldF9jYXN0PExPTkc2ND4ocGN0eCkpLCBwYWdlKzEsIHBhZ2VDb3VudCk7CisgICAg
dWktPmRyYXdGb290ZXJJblJlY3QoZC0+d2ViVmlldywgJmZvb3RlclJlY3QsIHJlaW50ZXJwcmV0
X2Nhc3Q8VUxPTkdfUFRSPihwY3R4KSwgcGFnZSArIDEsIHBhZ2VDb3VudCk7CiB9CiAKIHZvaWQg
V2ViRnJhbWU6OnNwb29sUGFnZShQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCogcGN0eCwgR3JhcGhp
Y3NDb250ZXh0KiBzcG9vbEN0eCwgSERDIHByaW50REMsIElXZWJVSURlbGVnYXRlKiB1aSwgZmxv
YXQgaGVhZGVySGVpZ2h0LCBmbG9hdCBmb290ZXJIZWlnaHQsIFVJTlQgcGFnZSwgVUlOVCBwYWdl
Q291bnQpCkBAIC0xNjYzLDcgKzE2NTYsNyBAQCB2b2lkIFdlYkZyYW1lOjpkcmF3SGVhZGVyKFBs
YXRmb3JtR3JhcGhpCiAgICAgaW50IHkgPSAwOwogICAgIFJFQ1QgaGVhZGVyUmVjdCA9IHt4LCB5
LCB4ICsgcGFnZVJlY3Qud2lkdGgoKSwgeSArIHN0YXRpY19jYXN0PGludD4oaGVhZGVySGVpZ2h0
KX07CiAKLSAgICB1aS0+ZHJhd0hlYWRlckluUmVjdChkLT53ZWJWaWV3LCAmaGVhZGVyUmVjdCwg
c3RhdGljX2Nhc3Q8T0xFX0hBTkRMRT4ocmVpbnRlcnByZXRfY2FzdDxMT05HNjQ+KGhkYykpKTsK
KyAgICB1aS0+ZHJhd0hlYWRlckluUmVjdChkLT53ZWJWaWV3LCAmaGVhZGVyUmVjdCwgcmVpbnRl
cnByZXRfY2FzdDxVTE9OR19QVFI+KGhkYykpOwogfQogCiB2b2lkIFdlYkZyYW1lOjpkcmF3Rm9v
dGVyKFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0KiBwY3R4LCBJV2ViVUlEZWxlZ2F0ZSogdWksIGNv
bnN0IEludFJlY3QmIHBhZ2VSZWN0LCBVSU5UIHBhZ2UsIFVJTlQgcGFnZUNvdW50LCBmbG9hdCBo
ZWFkZXJIZWlnaHQsIGZsb2F0IGZvb3RlckhlaWdodCkKQEAgLTE2NzQsNyArMTY2Nyw3IEBAIHZv
aWQgV2ViRnJhbWU6OmRyYXdGb290ZXIoUGxhdGZvcm1HcmFwaGkKICAgICBpbnQgeSA9IG1heChz
dGF0aWNfY2FzdDxpbnQ+KGhlYWRlckhlaWdodCkgKyBwYWdlUmVjdC5oZWlnaHQoKSwgbV9wYWdl
SGVpZ2h0ICAtc3RhdGljX2Nhc3Q8aW50Pihmb290ZXJIZWlnaHQpKTsKICAgICBSRUNUIGZvb3Rl
clJlY3QgPSB7eCwgeSwgeCArIHBhZ2VSZWN0LndpZHRoKCksIHkgKyBzdGF0aWNfY2FzdDxpbnQ+
KGZvb3RlckhlaWdodCl9OwogCi0gICAgdWktPmRyYXdGb290ZXJJblJlY3QoZC0+d2ViVmlldywg
JmZvb3RlclJlY3QsIHN0YXRpY19jYXN0PE9MRV9IQU5ETEU+KHJlaW50ZXJwcmV0X2Nhc3Q8TE9O
RzY0PihoZGMpKSwgcGFnZSsxLCBwYWdlQ291bnQpOworICAgIHVpLT5kcmF3Rm9vdGVySW5SZWN0
KGQtPndlYlZpZXcsICZmb290ZXJSZWN0LCByZWludGVycHJldF9jYXN0PFVMT05HX1BUUj4oaGRj
KSwgcGFnZSsxLCBwYWdlQ291bnQpOwogfQogCiBzdGF0aWMgWEZPUk0gYnVpbGRYRk9STUZyb21D
YWlybyhIREMgdGFyZ2V0REMsIGNhaXJvX3QqIHByZXZpZXdDb250ZXh0KQpJbmRleDogU291cmNl
L1dlYktpdC93aW4vV2ViRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9X
ZWJGcmFtZS5oCShyZXZpc2lvbiAxNzI5NDYpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFt
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMzYsMTQgKzIzNiw5IEBAIHB1YmxpYzoKIAogICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZWxvYWRGcm9tT3JpZ2luKCk7CiAKLSAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcGFpbnREb2N1bWVudFJlY3RUb0Nv
bnRleHQoCi0gICAgICAgIC8qIFtpbl0gKi8gUkVDVCByZWN0LAotICAgICAgICAvKiBbaW5dICov
IE9MRV9IQU5ETEUgZGV2aWNlQ29udGV4dCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIHBhaW50RG9jdW1lbnRSZWN0VG9Db250ZXh0KC8qIFtpbl0gKi8gUkVDVCByZWN0
LCAvKiBbaW5dICovIEhEQyBkZXZpY2VDb250ZXh0KTsKIAotICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBwYWludFNjcm9sbFZpZXdSZWN0VG9Db250ZXh0QXRQb2ludCgKLSAg
ICAgICAgLyogW2luXSAqLyBSRUNUIHJlY3QsCi0gICAgICAgIC8qIFtpbl0gKi8gUE9JTlQgcHQs
Ci0gICAgICAgIC8qIFtpbl0gKi8gT0xFX0hBTkRMRSBkZXZpY2VDb250ZXh0KTsKKyAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcGFpbnRTY3JvbGxWaWV3UmVjdFRvQ29udGV4
dEF0UG9pbnQoLyogW2luXSAqLyBSRUNUIHJlY3QsIC8qIFtpbl0gKi8gUE9JTlQgcHQsIC8qIFtp
bl0gKi8gSERDIGRldmljZUNvbnRleHQpOwogCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIGVsZW1lbnREb2VzQXV0b0NvbXBsZXRlKAogICAgICAgICAvKiBbaW5dICovIElE
T01FbGVtZW50KiBlbGVtZW50LCAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkhpc3RvcnlJ
dGVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJIaXN0b3J5SXRlbS5j
cHAJKHJldmlzaW9uIDE3Mjk0NikKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkhpc3RvcnlJdGVt
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDg3LDggKzQ4Nyw3IEBAIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgV2ViSGlzdG9yeUl0ZW0KICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBXZWJIaXN0b3J5SXRlbTo6aWNvbiggCi0gICAgLyogW291dCwgcmV0
dmFsXSAqLyBPTEVfSEFORExFKiAvKmhCaXRtYXAqLykKK0hSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgV2ViSGlzdG9yeUl0ZW06Omljb24oLyogW291dCwgcmV0dmFsXSAqLyBIQklUTUFQKiAvKmhC
aXRtYXAqLykKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gRV9OT1RJ
TVBMOwpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViSGlzdG9yeUl0ZW0uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJIaXN0b3J5SXRlbS5oCShyZXZpc2lvbiAxNzI5NDYp
CisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJIaXN0b3J5SXRlbS5oCSh3b3JraW5nIGNvcHkpCkBA
IC03OCw4ICs3OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgYWx0ZXJuYXRlVGl0bGUoIAogICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIq
IHRpdGxlKTsKICAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaWNv
biggCi0gICAgICAgIC8qIFtvdXQsIHJldHZhbF0gKi8gT0xFX0hBTkRMRSAqaEJpdG1hcCk7Cisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGljb24oLyogW291dCwgcmV0dmFs
XSAqLyBIQklUTUFQKiBoQml0bWFwKTsKIAogICAgIC8vIElXZWJIaXN0b3J5SXRlbVByaXZhdGUK
ICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaW5pdEZyb21EaWN0aW9uYXJ5
UmVwcmVzZW50YXRpb24odm9pZCogZGljdGlvbmFyeSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dp
bi9XZWJJY29uRGF0YWJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dl
Ykljb25EYXRhYmFzZS5jcHAJKHJldmlzaW9uIDE3Mjk0NikKKysrIFNvdXJjZS9XZWJLaXQvd2lu
L1dlYkljb25EYXRhYmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsOSArMSw4IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwg
MjAwOSwgMjAxMy0yMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKICAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CiAgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCiAgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodApAQCAtMTYxLDExICsxNjAsNyBAQCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIFdlYkljb25EYXRhYmFzCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQg
V2ViSWNvbkRhdGFiYXNlOjppY29uRm9yVVJMKAotICAgICAgICAvKiBbaW5dICovIEJTVFIgdXJs
LAotICAgICAgICAvKiBbb3B0aW9uYWxdW2luXSAqLyBMUFNJWkUgc2l6ZSwKLSAgICAgICAgLyog
W29wdGlvbmFsXVtpbl0gKi8gQk9PTCAvKmNhY2hlKi8sCi0gICAgICAgIC8qIFtyZXR2YWxdW291
dF0gKi8gT0xFX0hBTkRMRSogYml0bWFwKQorSFJFU1VMVCBXZWJJY29uRGF0YWJhc2U6Omljb25G
b3JVUkwoQlNUUiB1cmwsIExQU0laRSBzaXplLCBCT09MIC8qY2FjaGUqLywgSEJJVE1BUCogYml0
bWFwKQogewogICAgIGlmICghc2l6ZSkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKQEAgLTE3
OCw4ICsxNzMsOCBAQCBIUkVTVUxUIFdlYkljb25EYXRhYmFzZTo6aWNvbkZvclVSTCgKIAogICAg
IC8vIE1ha2Ugc3VyZSB3ZSBjaGVjayBmb3IgdGhlIGNhc2Ugb2YgYW4gImVtcHR5IGltYWdlIgog
ICAgIGlmIChpY29uICYmIGljb24tPndpZHRoKCkpIHsKLSAgICAgICAgKmJpdG1hcCA9IChPTEVf
SEFORExFKShVTE9ORzY0KWdldE9yQ3JlYXRlU2hhcmVkQml0bWFwKGludFNpemUpOwotICAgICAg
ICBpZiAoIWljb24tPmdldEhCSVRNQVBPZlNpemUoKEhCSVRNQVApKFVMT05HNjQpKmJpdG1hcCwg
JmludFNpemUpKSB7CisgICAgICAgICpiaXRtYXAgPSBnZXRPckNyZWF0ZVNoYXJlZEJpdG1hcChp
bnRTaXplKTsKKyAgICAgICAgaWYgKCFpY29uLT5nZXRIQklUTUFQT2ZTaXplKCpiaXRtYXAsICZp
bnRTaXplKSkgewogICAgICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZHJhdyBJbWFnZSB0
byBIQklUTUFQIik7CiAgICAgICAgICAgICAqYml0bWFwID0gMDsKICAgICAgICAgICAgIHJldHVy
biBFX0ZBSUw7CkBAIC0xOTAsMTYgKzE4NSwxNCBAQCBIUkVTVUxUIFdlYkljb25EYXRhYmFzZTo6
aWNvbkZvclVSTCgKICAgICByZXR1cm4gZGVmYXVsdEljb25XaXRoU2l6ZShzaXplLCBiaXRtYXAp
OwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkljb25EYXRhYmFzZTo6ZGVmYXVs
dEljb25XaXRoU2l6ZSgKLSAgICAgICAgLyogW2luXSAqLyBMUFNJWkUgc2l6ZSwKLSAgICAgICAg
LyogW3JldHZhbF1bb3V0XSAqLyBPTEVfSEFORExFKiByZXN1bHQpCitIUkVTVUxUIFdlYkljb25E
YXRhYmFzZTo6ZGVmYXVsdEljb25XaXRoU2l6ZShMUFNJWkUgc2l6ZSwgSEJJVE1BUCogcmVzdWx0
KQogewogICAgIGlmICghc2l6ZSkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKIAogICAgIElu
dFNpemUgaW50U2l6ZSgqc2l6ZSk7CiAKLSAgICAqcmVzdWx0ID0gKE9MRV9IQU5ETEUpKFVMT05H
NjQpZ2V0T3JDcmVhdGVEZWZhdWx0SWNvbkJpdG1hcChpbnRTaXplKTsKKyAgICAqcmVzdWx0ID0g
Z2V0T3JDcmVhdGVEZWZhdWx0SWNvbkJpdG1hcChpbnRTaXplKTsKICAgICByZXR1cm4gU19PSzsK
IH0KIApJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViSWNvbkRhdGFiYXNlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViSWNvbkRhdGFiYXNlLmgJKHJldmlzaW9uIDE3Mjk0
NikKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkljb25EYXRhYmFzZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwg
MjAwOSwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTMtMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTY1LDE1ICs2
NSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2hh
cmVkSWNvbkRhdGFiYXNlKCAKICAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJV2ViSWNvbkRh
dGFiYXNlICoqcmVzdWx0KTsKICAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgaWNvbkZvclVSTCggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiB1cmwsCi0gICAgICAg
IC8qIFtvcHRpb25hbF1baW5dICovIExQU0laRSBzaXplLAotICAgICAgICAvKiBbb3B0aW9uYWxd
W2luXSAqLyBCT09MIGNhY2hlLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIE9MRV9IQU5E
TEUgKmltYWdlKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
ZGVmYXVsdEljb25XaXRoU2l6ZSggCi0gICAgICAgIC8qIFtpbl0gKi8gTFBTSVpFIHNpemUsCi0g
ICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gT0xFX0hBTkRMRSAqcmVzdWx0KTsKKyAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaWNvbkZvclVSTChCU1RSIHVybCwgTFBTSVpF
LCBCT09MIGNhY2hlLCBIQklUTUFQKiBpbWFnZSk7CisKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgZGVmYXVsdEljb25XaXRoU2l6ZSgvKiBbaW5dICovIExQU0laRSBzaXpl
LCAvKiBbcmV0dmFsXVtvdXRdICovIEhCSVRNQVAqIHJlc3VsdCk7CiAgICAgCiAgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJldGFpbkljb25Gb3JVUkwoIAogICAgICAgICAv
KiBbaW5dICovIEJTVFIgdXJsKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYk11dGFibGVV
UkxSZXF1ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJNdXRhYmxl
VVJMUmVxdWVzdC5jcHAJKHJldmlzaW9uIDE3Mjk0NikKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dl
Yk11dGFibGVVUkxSZXF1ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY2LDEzICszNjYsMTIg
QEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJNdXRhYmxlVVJMUgogICAgIHJldHVybiBT
X09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYk11dGFibGVVUkxSZXF1ZXN0
OjpzZXRDbGllbnRDZXJ0aWZpY2F0ZSgKLSAgICAvKiBbaW5dICovIE9MRV9IQU5ETEUgY2VydCkK
K0hSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViTXV0YWJsZVVSTFJlcXVlc3Q6OnNldENsaWVu
dENlcnRpZmljYXRlKC8qIFtpbl0gKi8gVUxPTkdfUFRSIGNlcnQpCiB7CiAgICAgaWYgKCFjZXJ0
KQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogCi0gICAgUENDRVJUX0NPTlRFWFQgY2VydENv
bnRleHQgPSByZWludGVycHJldF9jYXN0PFBDQ0VSVF9DT05URVhUPigoVUxPTkc2NCljZXJ0KTsK
KyAgICBQQ0NFUlRfQ09OVEVYVCBjZXJ0Q29udGV4dCA9IHJlaW50ZXJwcmV0X2Nhc3Q8UENDRVJU
X0NPTlRFWFQ+KGNlcnQpOwogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNlcnREYXRhID0gV2Vi
Q29yZTo6Y29weUNlcnRpZmljYXRlVG9EYXRhKGNlcnRDb250ZXh0KTsKICAgICBSZXNvdXJjZUhh
bmRsZTo6c2V0Q2xpZW50Q2VydGlmaWNhdGUobV9yZXF1ZXN0LnVybCgpLmhvc3QoKSwgY2VydERh
dGEuZ2V0KCkpOwogICAgIHJldHVybiBTX09LOwpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2Vi
TXV0YWJsZVVSTFJlcXVlc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJN
dXRhYmxlVVJMUmVxdWVzdC5oCShyZXZpc2lvbiAxNzI5NDYpCisrKyBTb3VyY2UvV2ViS2l0L3dp
bi9XZWJNdXRhYmxlVVJMUmVxdWVzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTUsOCArMTU1LDcg
QEAgcHVibGljOgogCiAgICAgLy8gSVdlYk11dGFibGVVUkxSZXF1ZXN0UHJpdmF0ZQogCi0gICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldENsaWVudENlcnRpZmljYXRlKAot
ICAgICAgICAvKiBbaW5dICovIE9MRV9IQU5ETEUgY2VydCk7CisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIHNldENsaWVudENlcnRpZmljYXRlKFVMT05HX1BUUik7CiAKICAg
ICB2aXJ0dWFsIC8qIFtsb2NhbF0gKi8gQ0ZVUkxSZXF1ZXN0UmVmIFNURE1FVEhPRENBTExUWVBF
IGNmUmVxdWVzdCgpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJOb2RlSGlnaGxpZ2h0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJOb2RlSGlnaGxpZ2h0LmNw
cAkocmV2aXNpb24gMTcyOTQ2KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViTm9kZUhpZ2hsaWdo
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3LDcgKzU3LDcgQEAgV2ViTm9kZUhpZ2hsaWdodDo6
V2ViTm9kZUhpZ2hsaWdodChXZWJWaQogICAgICwgbV9zaG93c1doaWxlV2ViVmlld0lzVmlzaWJs
ZShmYWxzZSkKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIG1faW5zcGVjdGVkV2ViVmll
dy0+dmlld1dpbmRvdyhyZWludGVycHJldF9jYXN0PE9MRV9IQU5ETEUqPigmbV9pbnNwZWN0ZWRX
ZWJWaWV3V2luZG93KSk7CisgICAgbV9pbnNwZWN0ZWRXZWJWaWV3LT52aWV3V2luZG93KCZtX2lu
c3BlY3RlZFdlYlZpZXdXaW5kb3cpOwogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCiB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYlVSTFJlc3BvbnNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAJKHJldmlzaW9uIDE3Mjk0NikK
KysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYlVSTFJlc3BvbnNlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDAwLDggKzQwMCw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVVJMUmVzcG9u
c2UKIH0KIAogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlVSTFJlc3BvbnNlOjpzc2xQ
ZWVyQ2VydGlmaWNhdGUoIAotICAgIC8qIFtyZXR2YWxdW291dF0gKi8gT0xFX0hBTkRMRSogcmVz
dWx0KQorSFJFU1VMVCBXZWJVUkxSZXNwb25zZTo6c3NsUGVlckNlcnRpZmljYXRlKC8qIFtyZXR2
YWxdW291dF0gKi8gVUxPTkdfUFRSKiByZXN1bHQpCiB7CiAgICAgaWYgKCFyZXN1bHQpCiAgICAg
ICAgIHJldHVybiBFX1BPSU5URVI7CkBAIC00MTQsNyArNDEzLDcgQEAgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBXZWJVUkxSZXNwb25zZQogICAgIHZvaWQqIGRhdGEgPSB3a0dldFNTTFBlZXJD
ZXJ0aWZpY2F0ZURhdGFCeXRlUHRyKGRpY3QpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0
dXJuIEVfRkFJTDsKLSAgICAqcmVzdWx0ID0gKE9MRV9IQU5ETEUpKFVMT05HNjQpZGF0YTsKKyAg
ICAqcmVzdWx0ID0gcmVpbnRlcnByZXRfY2FzdDxVTE9OR19QVFI+KGRhdGEpOwogI2VuZGlmCiAK
ICAgICByZXR1cm4gKnJlc3VsdCA/IFNfT0sgOiBFX0ZBSUw7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L3dpbi9XZWJVUkxSZXNwb25zZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dl
YlVSTFJlc3BvbnNlLmgJKHJldmlzaW9uIDE3Mjk0NikKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dl
YlVSTFJlc3BvbnNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTgxLDggKzgxLDcgQEAgcHVibGljOgog
ICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wgKmF0dGFjaG1lbnQpOwogCiAgICAgLy8g
SVdlYlVSTFJlc3BvbnNlUHJpdmF0ZQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBzc2xQZWVyQ2VydGlmaWNhdGUoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIE9M
RV9IQU5ETEUgKnJlc3VsdCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IHNzbFBlZXJDZXJ0aWZpY2F0ZSgvKiBbcmV0dmFsXVtvdXRdICovIFVMT05HX1BUUiogcmVzdWx0
KTsKICAgICAKICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNvdXJjZVJl
c3BvbnNlKCkgY29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCShyZXZpc2lvbiAxNzI5
NDYpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTE4NCw3ICsxMTg0LDcgQEAgdm9pZCBXZWJWaWV3OjpwYWludEludG9CYWNraW5nU3RvcmUoRnJh
bQogCiAgICAgQ09NUHRyPElXZWJVSURlbGVnYXRlUHJpdmF0ZTI+IHVpUHJpdmF0ZShRdWVyeSwg
bV91aURlbGVnYXRlKTsKICAgICBpZiAodWlQcml2YXRlKQotICAgICAgICB1aVByaXZhdGUtPmRy
YXdCYWNrZ3JvdW5kKHRoaXMsIHJlaW50ZXJwcmV0X2Nhc3Q8T0xFX0hBTkRMRT4oYml0bWFwREMp
LCAmcmVjdCk7CisgICAgICAgIHVpUHJpdmF0ZS0+ZHJhd0JhY2tncm91bmQodGhpcywgYml0bWFw
REMsICZyZWN0KTsKIAogICAgIGlmIChmcmFtZVZpZXcgJiYgZnJhbWVWaWV3LT5mcmFtZSgpLmNv
bnRlbnRSZW5kZXJlcigpKSB7CiAgICAgICAgIGdjLmNsaXAoZGlydHlSZWN0KTsKQEAgLTEzOTIs
NyArMTM5Miw3IEBAIGJvb2wgV2ViVmlldzo6aGFuZGxlQ29udGV4dE1lbnVFdmVudChXUEEKICAg
ICAgICAgbV91aURlbGVnYXRlLT5oYXNDdXN0b21NZW51SW1wbGVtZW50YXRpb24oJmhhc0N1c3Rv
bU1lbnVzKTsKIAogICAgIGlmIChoYXNDdXN0b21NZW51cykKLSAgICAgICAgbV91aURlbGVnYXRl
LT50cmFja0N1c3RvbVBvcHVwTWVudSgoSVdlYlZpZXcqKXRoaXMsIChPTEVfSEFORExFKShVTE9O
RzY0KWNvcmVNZW51LT5wbGF0Zm9ybUNvbnRleHRNZW51KCksICZwb2ludCk7CisgICAgICAgIG1f
dWlEZWxlZ2F0ZS0+dHJhY2tDdXN0b21Qb3B1cE1lbnUoKElXZWJWaWV3Kil0aGlzLCBjb3JlTWVu
dS0+cGxhdGZvcm1Db250ZXh0TWVudSgpLCAmcG9pbnQpOwogICAgIGVsc2UgewogICAgICAgICAv
LyBTdXJwcmlzaW5nbHksIFRQTV9SSUdIVEJVVFRPTiBtZWFucyB0aGF0IGl0ZW1zIGFyZSBzZWxl
Y3RhYmxlIHdpdGggZWl0aGVyIHRoZSByaWdodCBPUiBsZWZ0IG1vdXNlIGJ1dHRvbgogICAgICAg
ICBVSU5UIGZsYWdzID0gVFBNX1JJR0hUQlVUVE9OIHwgVFBNX1RPUEFMSUdOIHwgVFBNX1ZFUlBP
U0FOSU1BVElPTiB8IFRQTV9IT1JJWk9OVEFMCkBAIC0xNDQ1LDcgKzE0NDUsNyBAQCBib29sIFdl
YlZpZXc6Om9uSW5pdE1lbnVQb3B1cChXUEFSQU0gd1BhCiAgICAgaWYgKCFoYXNDdXN0b21NZW51
cykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgbV91aURlbGVnYXRlLT5hZGRDdXN0b21N
ZW51RHJhd2luZ0RhdGEoKElXZWJWaWV3Kil0aGlzLCAoT0xFX0hBTkRMRSkoVUxPTkc2NCltZW51
KTsKKyAgICBtX3VpRGVsZWdhdGUtPmFkZEN1c3RvbU1lbnVEcmF3aW5nRGF0YSgoSVdlYlZpZXcq
KXRoaXMsIG1lbnUpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xNDYzLDcgKzE0NjMsNyBA
QCBib29sIFdlYlZpZXc6Om9uVW5pbml0TWVudVBvcHVwKFdQQVJBTSB3CiAgICAgaWYgKCFoYXND
dXN0b21NZW51cykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgbV91aURlbGVnYXRlLT5j
bGVhblVwQ3VzdG9tTWVudURyYXdpbmdEYXRhKChJV2ViVmlldyopdGhpcywgKE9MRV9IQU5ETEUp
KFVMT05HNjQpbWVudSk7CisgICAgbV91aURlbGVnYXRlLT5jbGVhblVwQ3VzdG9tTWVudURyYXdp
bmdEYXRhKChJV2ViVmlldyopdGhpcywgbWVudSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAg
LTIzMTIsNyArMjMxMiw3IEBAIExSRVNVTFQgQ0FMTEJBQ0sgV2ViVmlldzo6V2ViVmlld1duZFBy
b2MKICAgICAgICAgICAgIEhXTkQgbmV3Rm9jdXNXbmQgPSByZWludGVycHJldF9jYXN0PEhXTkQ+
KHdQYXJhbSk7CiAgICAgICAgICAgICBpZiAoU1VDQ0VFREVEKHdlYlZpZXctPnVpRGVsZWdhdGUo
JnVpRGVsZWdhdGUpKSAmJiB1aURlbGVnYXRlCiAgICAgICAgICAgICAgICAgJiYgU1VDQ0VFREVE
KHVpRGVsZWdhdGUtPlF1ZXJ5SW50ZXJmYWNlKElJRF9JV2ViVUlEZWxlZ2F0ZVByaXZhdGUsICh2
b2lkKiopICZ1aURlbGVnYXRlUHJpdmF0ZSkpICYmIHVpRGVsZWdhdGVQcml2YXRlKQotICAgICAg
ICAgICAgICAgIHVpRGVsZWdhdGVQcml2YXRlLT53ZWJWaWV3TG9zdEZvY3VzKHdlYlZpZXcsIChP
TEVfSEFORExFKShVTE9ORzY0KW5ld0ZvY3VzV25kKTsKKyAgICAgICAgICAgICAgICB1aURlbGVn
YXRlUHJpdmF0ZS0+d2ViVmlld0xvc3RGb2N1cyh3ZWJWaWV3LCBuZXdGb2N1c1duZCk7CiAKICAg
ICAgICAgICAgIEZvY3VzQ29udHJvbGxlciYgZm9jdXNDb250cm9sbGVyID0gd2ViVmlldy0+cGFn
ZSgpLT5mb2N1c0NvbnRyb2xsZXIoKTsKICAgICAgICAgICAgIEZyYW1lJiBmcmFtZSA9IGZvY3Vz
Q29udHJvbGxlci5mb2N1c2VkT3JNYWluRnJhbWUoKTsKQEAgLTI5MjAsNyArMjkyMCw3IEBAIHZv
aWQgV2ViVmlldzo6ZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbkZyb20KICAgICAgICAgICAgIGljb24t
PmdldEhCSVRNQVBPZlNpemUoaEJpdG1hcCwgJnN6KTsKICAgICAgICAgfQogCi0gICAgICAgIEhS
RVNVTFQgaHIgPSBtX2ZyYW1lTG9hZERlbGVnYXRlLT5kaWRSZWNlaXZlSWNvbih0aGlzLCAoT0xF
X0hBTkRMRSloQml0bWFwLCBmcmFtZSk7CisgICAgICAgIEhSRVNVTFQgaHIgPSBtX2ZyYW1lTG9h
ZERlbGVnYXRlLT5kaWRSZWNlaXZlSWNvbih0aGlzLCBoQml0bWFwLCBmcmFtZSk7CiAgICAgICAg
IGlmIChociA9PSBFX05PVElNUEwpCiAgICAgICAgICAgICBEZWxldGVPYmplY3QoaEJpdG1hcCk7
CiAgICAgfQpAQCAtMzQ0NSwxMCArMzQ0NSw4IEBAIHZvaWQgV2ViVmlldzo6Y2FuY2VsRGVsZXRl
QmFja2luZ1N0b3JlU28KICAgICBLaWxsVGltZXIobV92aWV3V2luZG93LCBEZWxldGVCYWNraW5n
U3RvcmVUaW1lcik7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6c2V0
SG9zdFdpbmRvdyggCi0gICAgLyogW2luXSAqLyBPTEVfSEFORExFIG9sZVdpbmRvdykKK0hSRVNV
TFQgV2ViVmlldzo6c2V0SG9zdFdpbmRvdygvKiBbaW5dICovIEhXTkQgd2luZG93KQogewotICAg
IEhXTkQgd2luZG93ID0gKEhXTkQpKFVMT05HNjQpb2xlV2luZG93OwogICAgIGlmIChtX3ZpZXdX
aW5kb3cpIHsKICAgICAgICAgaWYgKHdpbmRvdykKICAgICAgICAgICAgIFNldFBhcmVudChtX3Zp
ZXdXaW5kb3csIHdpbmRvdyk7CkBAIC0zNDY4LDEwICszNDY2LDkgQEAgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBXZWJWaWV3OjpzZXRIbwogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6Omhvc3RXaW5kb3coIAotICAgIC8qIFtyZXR2YWxd
W291dF0gKi8gT0xFX0hBTkRMRSogd2luZG93KQorSFJFU1VMVCBXZWJWaWV3Ojpob3N0V2luZG93
KC8qIFtyZXR2YWxdW291dF0gKi8gSFdORCogd2luZG93KQogewotICAgICp3aW5kb3cgPSAoT0xF
X0hBTkRMRSkoVUxPTkc2NCltX2hvc3RXaW5kb3c7CisgICAgKndpbmRvdyA9IG1faG9zdFdpbmRv
dzsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtMzU5NCwxNCArMzU5MSwxNCBAQCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OnJlY3RzCiAgICAgcmV0dXJuIGNyZWF0ZU1hdGNo
RW51bWVyYXRvcigmYWxsUmVjdHMsIHBtYXRjaGVzKTsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBXZWJWaWV3OjpnZW5lcmF0ZVNlbGVjdGlvbkltYWdlKEJPT0wgZm9yY2VXaGl0ZVRl
eHQsIE9MRV9IQU5ETEUqIGhCaXRtYXApCitIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZp
ZXc6OmdlbmVyYXRlU2VsZWN0aW9uSW1hZ2UoQk9PTCBmb3JjZVdoaXRlVGV4dCwgSEJJVE1BUCog
aEJpdG1hcCkKIHsKICAgICAqaEJpdG1hcCA9IDA7CiAKICAgICBXZWJDb3JlOjpGcmFtZSYgZnJh
bWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwogCiAg
ICAgYXV0byBiaXRtYXAgPSBpbWFnZUZyb21TZWxlY3Rpb24oJmZyYW1lLCBmb3JjZVdoaXRlVGV4
dCA/IFRSVUUgOiBGQUxTRSk7Ci0gICAgKmhCaXRtYXAgPSBzdGF0aWNfY2FzdDxPTEVfSEFORExF
PihyZWludGVycHJldF9jYXN0PFVMT05HNjQ+KGJpdG1hcC5sZWFrKCkpKTsKKyAgICAqaEJpdG1h
cCA9IGJpdG1hcC5sZWFrKCk7CiAKICAgICByZXR1cm4gU19PSzsKIH0KQEAgLTM4NTYsOCArMzg1
Myw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6bWFpbkYKICAgICByZXR1
cm4gRV9OT1RJTVBMOwogfQogICAgIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3
OjptYWluRnJhbWVJY29uKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBPTEVfSEFORExF
KiAvKmhCaXRtYXAqLykKK0hSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6bWFpbkZy
YW1lSWNvbigvKiBbcmV0dmFsXVtvdXRdICovIEhCSVRNQVAqIC8qaEJpdG1hcCovKQogewogICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBFX05PVElNUEw7CkBAIC01MTI4LDEw
ICs1MTI0LDkgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjppblZpZQogICAg
IHJldHVybiBFX05PVElNUEw7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmll
dzo6dmlld1dpbmRvdyggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gT0xFX0hBTkRMRSAq
d2luZG93KQorSFJFU1VMVCBXZWJWaWV3Ojp2aWV3V2luZG93KC8qIFtyZXR2YWxdW291dF0gKi8g
SFdORCogd2luZG93KQogewotICAgICp3aW5kb3cgPSAoT0xFX0hBTkRMRSkoVUxPTkc2NCltX3Zp
ZXdXaW5kb3c7CisgICAgKndpbmRvdyA9IG1fdmlld1dpbmRvdzsKICAgICByZXR1cm4gU19PSzsK
IH0KIApAQCAtNTkwNyw5ICs1OTAyLDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJW
aWV3Ojp3aW5kbwogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIFdlYlZpZXc6OnBhaW50RG9jdW1lbnRSZWN0VG9Db250ZXh0KAotICAgIC8qIFtpbl0gKi8g
UkVDVCByZWN0LAotICAgIC8qIFtpbl0gKi8gT0xFX0hBTkRMRSBkZXZpY2VDb250ZXh0KQorSFJF
U1VMVCBXZWJWaWV3OjpwYWludERvY3VtZW50UmVjdFRvQ29udGV4dChSRUNUIHJlY3QsIEhEQyBk
ZXZpY2VDb250ZXh0KQogewogICAgIGlmICghZGV2aWNlQ29udGV4dCkKICAgICAgICAgcmV0dXJu
IEVfUE9JTlRFUjsKQEAgLTU5MjAsMTAgKzU5MTMsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIFdlYlZpZXc6OnBhaW50CiAgICAgcmV0dXJuIG1fbWFpbkZyYW1lLT5wYWludERvY3VtZW50
UmVjdFRvQ29udGV4dChyZWN0LCBkZXZpY2VDb250ZXh0KTsKIH0KIAotSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBXZWJWaWV3OjpwYWludFNjcm9sbFZpZXdSZWN0VG9Db250ZXh0QXRQb2ludCgK
LSAgICAvKiBbaW5dICovIFJFQ1QgcmVjdCwKLSAgICAvKiBbaW5dICovIFBPSU5UIHB0LAotICAg
IC8qIFtpbl0gKi8gT0xFX0hBTkRMRSBkZXZpY2VDb250ZXh0KQorSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBXZWJWaWV3OjpwYWludFNjcm9sbFZpZXdSZWN0VG9Db250ZXh0QXRQb2ludChSRUNU
IHJlY3QsIFBPSU5UIHB0LCBIREMgZGV2aWNlQ29udGV4dCkKIHsKICAgICBpZiAoIWRldmljZUNv
bnRleHQpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CkBAIC01OTkyLDE0ICs1OTgyLDEzIEBA
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6c2V0Q3UKICAgICByZXR1cm4gRV9G
QUlMOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OmJhY2tpbmdTdG9y
ZSgKLSAgICAvKiBbb3V0LCByZXR2YWxdICovIE9MRV9IQU5ETEUqIGhCaXRtYXApCitIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OmJhY2tpbmdTdG9yZSgvKiBbb3V0LCByZXR2YWxd
ICovIEhCSVRNQVAqIGhCaXRtYXApCiB7CiAgICAgaWYgKCFoQml0bWFwKQogICAgICAgICByZXR1
cm4gRV9QT0lOVEVSOwogICAgIGlmICghbV9iYWNraW5nU3RvcmVCaXRtYXApCiAgICAgICAgIHJl
dHVybiBFX0ZBSUw7Ci0gICAgKmhCaXRtYXAgPSByZWludGVycHJldF9jYXN0PE9MRV9IQU5ETEU+
KG1fYmFja2luZ1N0b3JlQml0bWFwLT5nZXQoKSk7CisgICAgKmhCaXRtYXAgPSBtX2JhY2tpbmdT
dG9yZUJpdG1hcC0+Z2V0KCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTY5MjcsNyArNjkx
Niw3IEBAIEhXTkQgV2ViVmlldzo6ZnVsbFNjcmVlbkNsaWVudFBhcmVudFdpbmQKIAogdm9pZCBX
ZWJWaWV3OjpmdWxsU2NyZWVuQ2xpZW50U2V0UGFyZW50V2luZG93KEhXTkQgaG9zdFdpbmRvdykK
IHsKLSAgICBzZXRIb3N0V2luZG93KHJlaW50ZXJwcmV0X2Nhc3Q8T0xFX0hBTkRMRT4oaG9zdFdp
bmRvdykpOworICAgIHNldEhvc3RXaW5kb3coaG9zdFdpbmRvdyk7CiB9CiAKIHZvaWQgV2ViVmll
dzo6ZnVsbFNjcmVlbkNsaWVudFdpbGxFbnRlckZ1bGxTY3JlZW4oKQpJbmRleDogU291cmNlL1dl
YktpdC93aW4vV2ViVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYlZp
ZXcuaAkocmV2aXNpb24gMTcyOTQ2KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNDUsMTEgKzI0NSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcHJlZmVyZW5jZXNJZGVudGlmaWVyKCAKICAgICAgICAg
LyogW3JldHZhbF1bb3V0XSAqLyBCU1RSICphbklkZW50aWZpZXIpOwogICAgIAotICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRIb3N0V2luZG93KCAKLSAgICAgICAgLyog
W2luXSAqLyBPTEVfSEFORExFIHdpbmRvdyk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIHNldEhvc3RXaW5kb3coSFdORCk7CiAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIGhvc3RXaW5kb3coIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRd
ICovIE9MRV9IQU5ETEUgKndpbmRvdyk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIGhvc3RXaW5kb3coSFdORCopOwogICAgIAogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBzZWFyY2hGb3IoIAogICAgICAgICAvKiBbaW5dICovIEJTVFIgc3RyLApA
QCAtMzI2LDggKzMyNCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgbWFpbkZyYW1lVGl0bGUoIAogICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJT
VFIgKnRpdGxlKTsKICAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
bWFpbkZyYW1lSWNvbiggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gT0xFX0hBTkRMRSAq
aEJpdG1hcCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG1haW5GcmFt
ZUljb24oLyogW3JldHZhbF1bb3V0XSAqLyBIQklUTUFQKiBoQml0bWFwKTsKIAogICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZWdpc3RlclVSTFNjaGVtZUFzTG9jYWwoIAog
ICAgICAgICAvKiBbaW5dICovIEJTVFIgc2NoZW1lKTsKQEAgLTYyMyw4ICs2MjAsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGluVmlld1NvdXJjZU1v
ZGUoIAogICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIGZsYWcpOwogCi0gICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHZpZXdXaW5kb3coIAotICAgICAgICAvKiBb
cmV0dmFsXVtvdXRdICovIE9MRV9IQU5ETEUgKndpbmRvdyk7CisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIHZpZXdXaW5kb3coLyogW3JldHZhbF1bb3V0XSAqLyBIV05EKiB3
aW5kb3cpOwogCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEZvcm1E
ZWxlZ2F0ZSggCiAgICAgICAgIC8qIFtpbl0gKi8gSVdlYkZvcm1EZWxlZ2F0ZSAqZm9ybURlbGVn
YXRlKTsKQEAgLTY2MSw4ICs2NTcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIHJlY3RzRm9yVGV4dE1hdGNoZXMoCiAgICAgICAgIElFbnVtVGV4dE1h
dGNoZXMqKiBwbWF0Y2hlcyk7CiAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgZ2VuZXJhdGVTZWxlY3Rpb25JbWFnZSgKLSAgICAgICAgQk9PTCBmb3JjZVdoaXRlVGV4dCwg
T0xFX0hBTkRMRSogaEJpdG1hcCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIGdlbmVyYXRlU2VsZWN0aW9uSW1hZ2UoQk9PTCBmb3JjZVdoaXRlVGV4dCwgSEJJVE1BUCog
aEJpdG1hcCk7CiAKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2VsZWN0
aW9uUmVjdCgKICAgICAgICAgUkVDVCogcmMpOwpAQCAtNzE4LDE0ICs3MTMsOSBAQCBwdWJsaWM6
CiAKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd2luZG93QW5jZXN0cnlE
aWRDaGFuZ2UoKTsKIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBwYWlu
dERvY3VtZW50UmVjdFRvQ29udGV4dCgKLSAgICAgICAgLyogW2luXSAqLyBSRUNUIHJlY3QsCi0g
ICAgICAgIC8qIFtpbl0gKi8gT0xFX0hBTkRMRSBkYyk7Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgcGFpbnRTY3JvbGxWaWV3UmVjdFRvQ29udGV4dEF0UG9pbnQoCi0g
ICAgICAgIC8qIFtpbl0gKi8gUkVDVCByZWN0LAotICAgICAgICAvKiBbaW5dICovIFBPSU5UIHB0
LAotICAgICAgICAvKiBbaW5dICovIE9MRV9IQU5ETEUgZGMpOworICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBwYWludERvY3VtZW50UmVjdFRvQ29udGV4dChSRUNULCBIREMp
OworCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHBhaW50U2Nyb2xsVmll
d1JlY3RUb0NvbnRleHRBdFBvaW50KFJFQ1QsIFBPSU5ULCBIREMpOwogCiAgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJlcG9ydEV4Y2VwdGlvbigKICAgICAgICAgLyogW2lu
XSAqLyBKU0NvbnRleHRSZWYgY29udGV4dCwKQEAgLTc0Miw4ICs3MzIsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEN1c3RvbUhUTUxUb2tlbml6
ZXJDaHVua1NpemUoCiAgICAgICAgIC8qIFtpbl0gKi8gaW50IGNodW5rU2l6ZSk7CiAKLSAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYmFja2luZ1N0b3JlKAotICAgICAgICAv
KiBbb3V0LCByZXR2YWxdICovIE9MRV9IQU5ETEUqIGhCaXRtYXApOworICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBiYWNraW5nU3RvcmUoLyogW291dCwgcmV0dmFsXSAqLyBI
QklUTUFQKiBoQml0bWFwKTsKIAogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBzZXRUcmFuc3BhcmVudCgKICAgICAgICAgLyogW2luXSAqLyBCT09MIHRyYW5zcGFyZW50KTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYkRvY3VtZW50LmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJEb2N1bWVudC5pZGwJ
KHJldmlzaW9uIDE3Mjk0NikKKysrIFNvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYkRv
Y3VtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtODYsNyArODYsNyBAQCBpbnRlcmZhY2UgSVdl
YkRvY3VtZW50VmlldyA6IElVbmtub3duCiAgICAgICAgIEBhYnN0cmFjdCBDYWxsZWQgYmVmb3Jl
IHRoZSBob3N0IHdpbmRvdyBpcyBzZXQgb24gdGhlIHBhcmVudCB3ZWIgdmlldy4KICAgICAgICAg
LSAodm9pZCl2aWV3V2lsbE1vdmVUb0hvc3RXaW5kb3c6KE5TV2luZG93ICopaG9zdFdpbmRvdzsK
ICAgICAqLwotICAgIEhSRVNVTFQgdmlld1dpbGxNb3ZlVG9Ib3N0V2luZG93KFtpbl0gT0xFX0hB
TkRMRSBod25kKTsKKyAgICBIUkVTVUxUIHZpZXdXaWxsTW92ZVRvSG9zdFdpbmRvdyhbaW5dIEhX
TkQgaHduZCk7CiAKICAgICAvKiEKICAgICAgICAgQG1ldGhvZCB2aWV3RGlkTW92ZVRvSG9zdFdp
bmRvdwpJbmRleDogU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViRW1iZWRkZWRWaWV3
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJFbWJl
ZGRlZFZpZXcuaWRsCShyZXZpc2lvbiAxNzI5NDYpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9JbnRl
cmZhY2VzL0lXZWJFbWJlZGRlZFZpZXcuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3
IEBAIGltcG9ydCAib2NpZGwuaWRsIjsKIF0KIGludGVyZmFjZSBJV2ViRW1iZWRkZWRWaWV3IDog
SVVua25vd24KIHsKLSAgICBIUkVTVUxUIGNyZWF0ZVZpZXdXaW5kb3coW2luXSBPTEVfSEFORExF
IHBhcmVudFdpbmRvdywgW2luXSBMUFNJWkUgcGx1Z2luU2l6ZSwgW291dCwgcmV0dmFsXSBPTEVf
SEFORExFKiB3aW5kb3cpOworICAgIEhSRVNVTFQgY3JlYXRlVmlld1dpbmRvdyhbaW5dIEhXTkQg
cGFyZW50V2luZG93LCBbaW5dIExQU0laRSBwbHVnaW5TaXplLCBbb3V0LCByZXR2YWxdIEhXTkQq
IHdpbmRvdyk7CiAKICAgICBIUkVTVUxUIGRpZFJlY2VpdmVSZXNwb25zZShbaW5dIElXZWJVUkxS
ZXNwb25zZSogcmVzcG9uc2UpOwogICAgIEhSRVNVTFQgZGlkUmVjZWl2ZURhdGEoW2luXSBJU3Ry
ZWFtKiBkYXRhKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYkVycm9y
UHJpdmF0ZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9J
V2ViRXJyb3JQcml2YXRlLmlkbAkocmV2aXNpb24gMTcyOTQ2KQorKysgU291cmNlL1dlYktpdC93
aW4vSW50ZXJmYWNlcy9JV2ViRXJyb3JQcml2YXRlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDMs
NSArNDMsNSBAQCBpbXBvcnQgIm9jaWRsLmlkbCI7CiAKIGludGVyZmFjZSBJV2ViRXJyb3JQcml2
YXRlIDogSVVua25vd24KIHsKLSAgICBIUkVTVUxUIHNzbFBlZXJDZXJ0aWZpY2F0ZShbb3V0LCBy
ZXR2YWxdIE9MRV9IQU5ETEUqIHJlc3VsdCk7CisgICAgSFJFU1VMVCBzc2xQZWVyQ2VydGlmaWNh
dGUoW291dCwgcmV0dmFsXSBVTE9OR19QVFIqIHJlc3VsdCk7CiB9CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJGcmFtZUxvYWREZWxlZ2F0ZS5pZGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViRnJhbWVMb2FkRGVsZWdhdGUuaWRs
CShyZXZpc2lvbiAxNzI5NDYpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJG
cmFtZUxvYWREZWxlZ2F0ZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEyMSw3ICsxMjEsNyBAQCBp
bnRlcmZhY2UgSVdlYkZyYW1lTG9hZERlbGVnYXRlIDogSVVua25vCiAgICAgICAgIEBwYXJhbSBm
cmFtZSBUaGUgZnJhbWUgZm9yIHdoaWNoIGEgcGFnZSBpY29uIGhhcyBiZWVuIHJlY2VpdmVkCiAg
ICAgICAgIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBkaWRSZWNlaXZlSWNvbjoo
TlNJbWFnZSAqKWltYWdlIGZvckZyYW1lOihXZWJGcmFtZSAqKWZyYW1lOwogICAgICovCi0gICAg
SFJFU1VMVCBkaWRSZWNlaXZlSWNvbihbaW5dIElXZWJWaWV3KiB3ZWJWaWV3LCBbaW5dIE9MRV9I
QU5ETEUgaEJpdG1hcCwgW2luXSBJV2ViRnJhbWUqIGZyYW1lKTsKKyAgICBIUkVTVUxUIGRpZFJl
Y2VpdmVJY29uKFtpbl0gSVdlYlZpZXcqIHdlYlZpZXcsIFtpbl0gSEJJVE1BUCBoQml0bWFwLCBb
aW5dIElXZWJGcmFtZSogZnJhbWUpOwogCiAgICAgLyohCiAgICAgICAgIEBtZXRob2Qgd2ViVmll
dzpkaWRGaW5pc2hMb2FkRm9yRnJhbWU6CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZh
Y2VzL0lXZWJGcmFtZVByaXZhdGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2lu
L0ludGVyZmFjZXMvSVdlYkZyYW1lUHJpdmF0ZS5pZGwJKHJldmlzaW9uIDE3Mjk0NikKKysrIFNv
dXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYkZyYW1lUHJpdmF0ZS5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTgwLDcgKzgwLDcgQEAgaW50ZXJmYWNlIElXZWJGcmFtZVByaXZhdGUgOiBJVW5r
bm93bgogCiAgICAgSFJFU1VMVCB1bnVzZWQzKCk7CiAKLSAgICBIUkVTVUxUIHBhaW50RG9jdW1l
bnRSZWN0VG9Db250ZXh0KFtpbl0gUkVDVCByZWN0LCBbaW5dIE9MRV9IQU5ETEUgZGV2aWNlQ29u
dGV4dCk7CisgICAgSFJFU1VMVCBwYWludERvY3VtZW50UmVjdFRvQ29udGV4dChbaW5dIFJFQ1Qg
cmVjdCwgW2luXSBIREMgZGV2aWNlQ29udGV4dCk7CiAKICAgICBIUkVTVUxUIGVsZW1lbnREb2Vz
QXV0b0NvbXBsZXRlKFtpbl0gSURPTUVsZW1lbnQqIGVsZW1lbnQsIFtvdXQsIHJldHZhbF0gQk9P
TCogcmVzdWx0KTsKIApAQCAtMTA2LDcgKzEwNiw3IEBAIGludGVyZmFjZSBJV2ViRnJhbWVQcml2
YXRlIDogSVVua25vd24KIAogICAgIEhSRVNVTFQgbGF5ZXJUcmVlQXNUZXh0KFtvdXQsIHJldHZh
bF0gQlNUUiogcmVzdWx0KTsKIAotICAgIEhSRVNVTFQgcGFpbnRTY3JvbGxWaWV3UmVjdFRvQ29u
dGV4dEF0UG9pbnQoW2luXSBSRUNUIHJlY3QsIFtpbl0gUE9JTlQgcHQsIFtpbl0gT0xFX0hBTkRM
RSBkZXZpY2VDb250ZXh0KTsKKyAgICBIUkVTVUxUIHBhaW50U2Nyb2xsVmlld1JlY3RUb0NvbnRl
eHRBdFBvaW50KFtpbl0gUkVDVCByZWN0LCBbaW5dIFBPSU5UIHB0LCBbaW5dIEhEQyBkZXZpY2VD
b250ZXh0KTsKIAogICAgIEhSRVNVTFQgcmVuZGVyVHJlZUFzRXh0ZXJuYWxSZXByZXNlbnRhdGlv
bihbaW5dIEJPT0wgZm9yUHJpbnRpbmcsIFtvdXQsIHJldHZhbF0gQlNUUiogcmVzdWx0KTsKIApJ
bmRleDogU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViSGlzdG9yeUl0ZW0uaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYkhpc3RvcnlJdGVt
LmlkbAkocmV2aXNpb24gMTcyOTQ2KQorKysgU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9J
V2ViSGlzdG9yeUl0ZW0uaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xMjEsNSArMTIxLDUgQEAgaW50
ZXJmYWNlIElXZWJIaXN0b3J5SXRlbSA6IElVbmtub3duCiAgICAgICAgIEByZXN1bHQgVGhlIGlj
b24gYXNzb2NpYXRlZCB3aXRoIHRoaXMgaXRlbSdzIFVSTC4KICAgICAgICAgLSAoTlNJbWFnZSAq
KWljb247CiAgICAgKi8KLSAgICBIUkVTVUxUIGljb24oW291dCwgcmV0dmFsXSBPTEVfSEFORExF
KiBoQml0bWFwKTsKKyAgICBIUkVTVUxUIGljb24oW291dCwgcmV0dmFsXSBIQklUTUFQKiBoQml0
bWFwKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYkljb25EYXRh
YmFzZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9JV2Vi
SWNvbkRhdGFiYXNlLmlkbAkocmV2aXNpb24gMTcyOTQ2KQorKysgU291cmNlL1dlYktpdC93aW4v
SW50ZXJmYWNlcy9JV2ViSWNvbkRhdGFiYXNlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtOTEsMTQg
KzkxLDE0IEBAIGludGVyZmFjZSBJV2ViSWNvbkRhdGFiYXNlIDogSVVua25vd24KICAgICAgICAg
QHBhcmFtIFVSTAogICAgICAgICAtIChOU1N0cmluZyAqKWljb25VUkxGb3JVUkw6KE5TU3RyaW5n
ICopVVJMOwogICAgICovCi0gICAgSFJFU1VMVCBpY29uRm9yVVJMKFtpbl0gQlNUUiB1cmwsIFtp
bl0gTFBTSVpFIHNpemUsIFtpbl0gQk9PTCBjYWNoZSwgW291dCwgcmV0dmFsXSBPTEVfSEFORExF
KiBoQml0bWFwKTsKKyAgICBIUkVTVUxUIGljb25Gb3JVUkwoW2luXSBCU1RSIHVybCwgW2luXSBM
UFNJWkUgc2l6ZSwgW2luXSBCT09MIGNhY2hlLCBbb3V0LCByZXR2YWxdIEhCSVRNQVAqIGhCaXRt
YXApOwogCiAgICAgLyohCiAgICAgICAgIEBtZXRob2QgZGVmYXVsdEljb25XaXRoU2l6ZToKICAg
ICAgICAgQHBhcmFtIHNpemUKICAgICAgICAgLSAoTlNJbWFnZSAqKWRlZmF1bHRJY29uV2l0aFNp
emU6KE5TU2l6ZSlzaXplOwogICAgICovCi0gICAgSFJFU1VMVCBkZWZhdWx0SWNvbldpdGhTaXpl
KFtpbl0gTFBTSVpFIHNpemUsIFtvdXQsIHJldHZhbF0gT0xFX0hBTkRMRSogaEJpdG1hcCk7Cisg
ICAgSFJFU1VMVCBkZWZhdWx0SWNvbldpdGhTaXplKFtpbl0gTFBTSVpFIHNpemUsIFtvdXQsIHJl
dHZhbF0gSEJJVE1BUCogaEJpdG1hcCk7CiAKICAgICAvKiEKICAgICAgICAgQG1ldGhvZCByZXRh
aW5JY29uRm9yVVJMOgpJbmRleDogU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViTXV0
YWJsZVVSTFJlcXVlc3RQcml2YXRlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dp
bi9JbnRlcmZhY2VzL0lXZWJNdXRhYmxlVVJMUmVxdWVzdFByaXZhdGUuaWRsCShyZXZpc2lvbiAx
NzI5NDYpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJNdXRhYmxlVVJMUmVx
dWVzdFByaXZhdGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBAIGNwcF9xdW90
ZSgiI2VuZGlmIikKIF0KIGludGVyZmFjZSBJV2ViTXV0YWJsZVVSTFJlcXVlc3RQcml2YXRlIDog
SVVua25vd24KIHsKLSAgICBIUkVTVUxUIHNldENsaWVudENlcnRpZmljYXRlKFtpbl0gT0xFX0hB
TkRMRSBjZXJ0KTsKKyAgICBIUkVTVUxUIHNldENsaWVudENlcnRpZmljYXRlKFtpbl0gVUxPTkdf
UFRSIGNlcnQpOwogCiAgICAgW2xvY2FsXSBDRlVSTFJlcXVlc3RSZWYgY2ZSZXF1ZXN0KCk7CiB9
CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJVSURlbGVnYXRlLmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJVSURlbGVnYXRl
LmlkbAkocmV2aXNpb24gMTcyOTQ2KQorKysgU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9J
V2ViVUlEZWxlZ2F0ZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI1Myw3ICsyNTMsNyBAQCBpbnRl
cmZhY2UgSVdlYlVJRGVsZWdhdGUgOiBJVW5rbm93bgogICAgICAgICByZWFsIGZpcnN0IHJlc3Bv
bmRlciBpZiBzb21lIGNvbnRyb2wgbm90IGluIHRoZSB3aW5kb3cgaGFzIGZvY3VzLgogICAgICAg
ICAtIChOU1Jlc3BvbmRlciAqKXdlYlZpZXdGaXJzdFJlc3BvbmRlcjooV2ViVmlldyAqKXNlbmRl
cjsKICAgICAqLwotICAgIEhSRVNVTFQgd2ViVmlld0ZpcnN0UmVzcG9uZGVyKFtpbl0gSVdlYlZp
ZXcqIHNlbmRlciwgW291dCwgcmV0dmFsXSBPTEVfSEFORExFKiByZXNwb25kZXJIV25kKTsKKyAg
ICBIUkVTVUxUIHdlYlZpZXdGaXJzdFJlc3BvbmRlcihbaW5dIElXZWJWaWV3KiBzZW5kZXIsIFtv
dXQsIHJldHZhbF0gSFdORCogcmVzcG9uZGVySFduZCk7CiAKICAgICAvKiEKICAgICAgICAgQG1l
dGhvZCB3ZWJWaWV3Om1ha2VGaXJzdFJlc3BvbmRlcjoKQEAgLTI2Nyw3ICsyNjcsNyBAQCBpbnRl
cmZhY2UgSVdlYlVJRGVsZWdhdGUgOiBJVW5rbm93bgogICAgICAgICBlbHNld2hlcmUsIG9yIHBv
c3NpYmx5IGlnbm9yZSB0aGlzIGNhbGwuCiAgICAgICAgIC0gKHZvaWQpd2ViVmlldzooV2ViVmll
dyAqKXNlbmRlciBtYWtlRmlyc3RSZXNwb25kZXI6KE5TUmVzcG9uZGVyICopcmVzcG9uZGVyOwog
ICAgICovCi0gICAgSFJFU1VMVCBtYWtlRmlyc3RSZXNwb25kZXIoW2luXSBJV2ViVmlldyogc2Vu
ZGVyLCBbaW5dIE9MRV9IQU5ETEUgcmVzcG9uZGVySFduZCk7CisgICAgSFJFU1VMVCBtYWtlRmly
c3RSZXNwb25kZXIoW2luXSBJV2ViVmlldyogc2VuZGVyLCBbaW5dIEhXTkQgcmVzcG9uZGVySFdu
ZCk7CiAKICAgICAvKiEKICAgICAgICAgQG1ldGhvZCB3ZWJWaWV3OnNldFN0YXR1c1RleHQ6CkBA
IC00ODEsNyArNDgxLDcgQEAgaW50ZXJmYWNlIElXZWJVSURlbGVnYXRlIDogSVVua25vd24KICAg
ICAgICAgQHJlc3VsdCBBbiBhcnJheSBvZiBOU01lbnVJdGVtcyB0byBpbmNsdWRlIGluIHRoZSBj
b250ZXh0dWFsIG1lbnUuCiAgICAgICAgIC0gKE5TQXJyYXkgKil3ZWJWaWV3OihXZWJWaWV3ICop
c2VuZGVyIGNvbnRleHRNZW51SXRlbXNGb3JFbGVtZW50OihOU0RpY3Rpb25hcnkgKillbGVtZW50
IGRlZmF1bHRNZW51SXRlbXM6KE5TQXJyYXkgKilkZWZhdWx0TWVudUl0ZW1zOwogICAgICovCi0g
ICAgSFJFU1VMVCBjb250ZXh0TWVudUl0ZW1zRm9yRWxlbWVudChbaW5dIElXZWJWaWV3KiBzZW5k
ZXIsIFtpbl0gSVByb3BlcnR5QmFnKiBlbGVtZW50LCBbaW5dIE9MRV9IQU5ETEUgZGVmYXVsdEl0
ZW1zSE1lbnUsIFtvdXQsIHJldHZhbF0gT0xFX0hBTkRMRSogcmVzdWx0SE1lbnUpOworICAgIEhS
RVNVTFQgY29udGV4dE1lbnVJdGVtc0ZvckVsZW1lbnQoW2luXSBJV2ViVmlldyogc2VuZGVyLCBb
aW5dIElQcm9wZXJ0eUJhZyogZWxlbWVudCwgW2luXSBITUVOVSBkZWZhdWx0SXRlbXNITWVudSwg
W291dCwgcmV0dmFsXSBITUVOVSogcmVzdWx0SE1lbnUpOwogCiAgICAgLyohCiAgICAgICAgIEBt
ZXRob2Qgd2ViVmlldzp2YWxpZGF0ZVVzZXJJbnRlcmZhY2VJdGVtOmRlZmF1bHRWYWxpZGF0aW9u
OgpAQCAtNTgxLDcgKzU4MSw3IEBAIGludGVyZmFjZSBJV2ViVUlEZWxlZ2F0ZSA6IElVbmtub3du
CiAgICAgICAgIEBwYXJhbSBtZW51IFRoZSBtZW51IHRoYXQgd2Ugd2FudCB0byBwb3AgdXAuCiAg
ICAgICAgIEBwYXJhbSBwb2ludCBUaGUgcG9pbnQgYXNzb2NpYXRlZCB3aXRoIHRoZSBjb250ZXh0
IG1lbnUgZXZlbnQgaW4gdGhlIGNvb3JkaW5hdGVzIG9mIHRoZSBXZWJWaWV3CiAgICAgKi8KLSAg
ICBIUkVTVUxUIHRyYWNrQ3VzdG9tUG9wdXBNZW51KFtpbl0gSVdlYlZpZXcqIHNlbmRlciwgW2lu
XSBPTEVfSEFORExFIGhNZW51LCBbaW5dIExQUE9JTlQgcG9pbnQpOworICAgIEhSRVNVTFQgdHJh
Y2tDdXN0b21Qb3B1cE1lbnUoW2luXSBJV2ViVmlldyogc2VuZGVyLCBbaW5dIEhNRU5VIGhNZW51
LCBbaW5dIExQUE9JTlQgcG9pbnQpOwogCiAgICAgLyoKICAgICAgICAgQG1ldGhvZCB3ZWJWaWV3
Om1lYXN1cmVDdXN0b21NZW51SXRlbQpAQCAtNjA2LDcgKzYwNiw3IEBAIGludGVyZmFjZSBJV2Vi
VUlEZWxlZ2F0ZSA6IElVbmtub3duCiAgICAgICAgIEBwYXJhbSBtZW51IFRoZSBjdXRzb20gbWVu
dSB0byBjbGVhbiB1cC4KICAgICAgICAgQGRpc2N1c3Npb24gVGhpcyBtZXRob2QgaXMgY2FsbGVk
IGZvciBzdWJtZW51cyBhcyB3ZWxsLgogICAgICovCi0gICAgSFJFU1VMVCBhZGRDdXN0b21NZW51
RHJhd2luZ0RhdGEoW2luXSBJV2ViVmlldyogc2VuZGVyLCBbaW5dIE9MRV9IQU5ETEUgaE1lbnUp
OworICAgIEhSRVNVTFQgYWRkQ3VzdG9tTWVudURyYXdpbmdEYXRhKFtpbl0gSVdlYlZpZXcqIHNl
bmRlciwgW2luXSBITUVOVSBoTWVudSk7CiAKICAgICAvKgogICAgICAgICBAbWV0aG9kIHdlYlZp
ZXc6Y2xlYW5VcEN1c3RvbU1lbnVEcmF3aW5nRGF0YQpAQCAtNjE0LDcgKzYxNCw3IEBAIGludGVy
ZmFjZSBJV2ViVUlEZWxlZ2F0ZSA6IElVbmtub3duCiAgICAgICAgIEBwYXJhbSBzZW5kZXIgVGhl
IFdlYlZpZXcgc2VuZGluZyB0aGUgZGVsZWdhdGUgbWV0aG9kLgogICAgICAgICBAcGFyYW0gbWVu
dSBUaGUgY3V0c29tIG1lbnUgdG8gY2xlYW4gdXAuCiAgICAgKi8KLSAgICBIUkVTVUxUIGNsZWFu
VXBDdXN0b21NZW51RHJhd2luZ0RhdGEoW2luXSBJV2ViVmlldyogc2VuZGVyLCBbaW5dIE9MRV9I
QU5ETEUgaE1lbnUpOworICAgIEhSRVNVTFQgY2xlYW5VcEN1c3RvbU1lbnVEcmF3aW5nRGF0YShb
aW5dIElXZWJWaWV3KiBzZW5kZXIsIFtpbl0gSE1FTlUgaE1lbnUpOwogCiAgICAgLyohCiAgICAg
ICAgIEBtZXRob2Qgd2ViVmlldzpjYW5UYWtlRm9jdXM6CkBAIC03MzIsNyArNzMyLDcgQEAgaW50
ZXJmYWNlIElXZWJVSURlbGVnYXRlIDogSVVua25vd24KIAogICAgIC0gKHZvaWQpd2ViVmlldzoo
V2ViVmlldyAqKXNlbmRlciBkcmF3SGVhZGVySW5SZWN0OihOU1JlY3QpcmVjdDsKICovCi0gICAg
SFJFU1VMVCBkcmF3SGVhZGVySW5SZWN0KFtpbl0gSVdlYlZpZXcqIHdlYlZpZXcsIFtpbl0gUkVD
VCogcmVjdCwgW2luXSBPTEVfSEFORExFIGRyYXdpbmdDb250ZXh0KTsKKyAgICBIUkVTVUxUIGRy
YXdIZWFkZXJJblJlY3QoW2luXSBJV2ViVmlldyogd2ViVmlldywgW2luXSBSRUNUKiByZWN0LCBb
aW5dIFVMT05HX1BUUiBkcmF3aW5nQ29udGV4dCk7CiAKIC8qIQogICAgIEBtZXRob2Qgd2ViVmll
dzpkcmF3Rm9vdGVySW5SZWN0OgpAQCAtNzQyLDcgKzc0Miw3IEBAIGludGVyZmFjZSBJV2ViVUlE
ZWxlZ2F0ZSA6IElVbmtub3duCiAKICAgICAtICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5k
ZXIgZHJhd0Zvb3RlckluUmVjdDooTlNSZWN0KXJlY3Q7CiAqLwotICAgIEhSRVNVTFQgZHJhd0Zv
b3RlckluUmVjdChbaW5dIElXZWJWaWV3KiB3ZWJWaWV3LCBbaW5dIFJFQ1QqIHJlY3QsIFtpbl0g
T0xFX0hBTkRMRSBkcmF3aW5nQ29udGV4dCwgW2luXSBVSU5UIHBhZ2VJbmRleCwgW2luXSBVSU5U
IHBhZ2VDb3VudCk7CisgICAgSFJFU1VMVCBkcmF3Rm9vdGVySW5SZWN0KFtpbl0gSVdlYlZpZXcq
IHdlYlZpZXcsIFtpbl0gUkVDVCogcmVjdCwgW2luXSBVTE9OR19QVFIgZHJhd2luZ0NvbnRleHQs
IFtpbl0gVUlOVCBwYWdlSW5kZXgsIFtpbl0gVUlOVCBwYWdlQ291bnQpOwogCiAgICAgSFJFU1VM
VCB3ZWJWaWV3UHJpbnRpbmdNYXJnaW5SZWN0KFtpbl0gSVdlYlZpZXcqIHdlYlZpZXcsIFtvdXQs
IHJldHZhbF0gUkVDVCogcmVjdCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFj
ZXMvSVdlYlVJRGVsZWdhdGVQcml2YXRlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L3dpbi9JbnRlcmZhY2VzL0lXZWJVSURlbGVnYXRlUHJpdmF0ZS5pZGwJKHJldmlzaW9uIDE3Mjk0
NikKKysrIFNvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYlVJRGVsZWdhdGVQcml2YXRl
LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQCBpbnRlcmZhY2UgSVdlYlVJRGVs
ZWdhdGVQcml2YXRlIDogSVVua25vCiAgICAgSFJFU1VMVCB3ZWJWaWV3QWRkTWVzc2FnZVRvQ29u
c29sZShbaW5dIElXZWJWaWV3KiBzZW5kZXIsIFtpbl0gQlNUUiBtZXNzYWdlLCBbaW5dIGludCBs
aW5lTnVtYmVyLCBbaW5dIEJTVFIgdXJsLCBbaW5dIEJPT0wgaXNFcnJvcik7CiAgICAgSFJFU1VM
VCB3ZWJWaWV3U2hvdWxkSW50ZXJydXB0SmF2YVNjcmlwdChbaW5dIElXZWJWaWV3KiBzZW5kZXIs
IFtvdXQsIHJldHZhbF0gQk9PTCogcmVzdWx0KTsKICAgICBIUkVTVUxUIHdlYlZpZXdSZWNlaXZl
ZEZvY3VzKFtpbl0gSVdlYlZpZXcqIHNlbmRlcik7Ci0gICAgSFJFU1VMVCB3ZWJWaWV3TG9zdEZv
Y3VzKFtpbl0gSVdlYlZpZXcqIHNlbmRlciwgW2luXSBPTEVfSEFORExFIGxvc2VGb2N1c1RvSFdu
ZCk7CisgICAgSFJFU1VMVCB3ZWJWaWV3TG9zdEZvY3VzKFtpbl0gSVdlYlZpZXcqIHNlbmRlciwg
W2luXSBIV05EIGxvc2VGb2N1c1RvSFduZCk7CiAgICAgSFJFU1VMVCBkb0RyYWdEcm9wKFtpbl0g
SVdlYlZpZXcqIHNlbmRlciwgW2luXSBJRGF0YU9iamVjdCogZGF0YU9iamVjdCwgW2luXSBJRHJv
cFNvdXJjZSogZHJvcFNvdXJjZSwgW2luXSBEV09SRCBva0VmZmVjdCwgW291dCwgcmV0dmFsXSBE
V09SRCogcGVyZm9ybWVkRWZmZWN0KTsKICAgICBIUkVTVUxUIHdlYlZpZXdHZXREbGdDb2RlKFtp
bl0gSVdlYlZpZXcqIHNlbmRlciwgW2luXSBVSU5UIGtleUNvZGUsIFtvdXQsIHJldHZhbF0gTE9O
R19QVFIqIGNvZGUpOwogICAgIEhSRVNVTFQgd2ViVmlld1BhaW50ZWQoW2luXSBJV2ViVmlldyog
c2VuZGVyKTsKQEAgLTY0LDcgKzY0LDcgQEAgaW50ZXJmYWNlIElXZWJVSURlbGVnYXRlUHJpdmF0
ZSA6IElVbmtubwogICAgIEhSRVNVTFQgZW1iZWRkZWRWaWV3V2l0aEFyZ3VtZW50cyhbaW5dIElX
ZWJWaWV3KiBzZW5kZXIsIFtpbl0gSVdlYkZyYW1lKiBmcmFtZSwgW2luXSBJUHJvcGVydHlCYWcq
IGFyZ3VtZW50cywgW291dCwgcmV0dmFsXSBJV2ViRW1iZWRkZWRWaWV3Kiogdmlldyk7CiAgICAg
SFJFU1VMVCB1bnVzZWQzKCk7CiAgICAgSFJFU1VMVCB3ZWJWaWV3Q2xvc2luZyhbaW5dIElXZWJW
aWV3KiBzZW5kZXIpOwotICAgIEhSRVNVTFQgd2ViVmlld1NldEN1cnNvcihbaW5dIElXZWJWaWV3
KiBzZW5kZXIsIFtpbl0gT0xFX0hBTkRMRSBjdXJzb3IpOworICAgIEhSRVNVTFQgd2ViVmlld1Nl
dEN1cnNvcihbaW5dIElXZWJWaWV3KiBzZW5kZXIsIFtpbl0gSENVUlNPUiBjdXJzb3IpOwogICAg
IEhSRVNVTFQgd2ViVmlld0RpZEludmFsaWRhdGUoW2luXSBJV2ViVmlldyogc2VuZGVyKTsKIH0K
IApAQCAtOTUsNyArOTUsNyBAQCBpbnRlcmZhY2UgSVdlYlVJRGVsZWdhdGVQcml2YXRlMiA6IElX
ZWJVCiAgICAgLy8gc3RyaW5ncyBhYm92ZS4KICAgICBIUkVTVUxUIGNyZWF0ZVdlYlZpZXdXaXRo
UmVxdWVzdChbaW5dIElXZWJWaWV3KiBzZW5kZXIsIFtpbl0gSVdlYlVSTFJlcXVlc3QqIHJlcXVl
c3QsIFtpbl0gSVByb3BlcnR5QmFnKiB3aW5kb3dGZWF0dXJlcywgW291dCwgcmV0dmFsXSBJV2Vi
VmlldyoqIG5ld1dlYlZpZXcpOwogCi0gICAgSFJFU1VMVCBkcmF3QmFja2dyb3VuZChbaW5dIElX
ZWJWaWV3KiBzZW5kZXIsIFtpbl0gT0xFX0hBTkRMRSBoZGMsIFtpbl0gY29uc3QgUkVDVCogZGly
dHlSZWN0KTsKKyAgICBIUkVTVUxUIGRyYXdCYWNrZ3JvdW5kKFtpbl0gSVdlYlZpZXcqIHNlbmRl
ciwgW2luXSBIREMgaGRjLCBbaW5dIGNvbnN0IFJFQ1QqIGRpcnR5UmVjdCk7CiAKICAgICBIUkVT
VUxUIGRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUmVxdWVzdChbaW5dIElXZWJWaWV3KiBzZW5k
ZXIsIFtpbl0gSVdlYkZyYW1lKiBmcmFtZSwgW2luXSBJV2ViU2VjdXJpdHlPcmlnaW4qIG9yaWdp
biwgW2luXSBJV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciogbGlzdGVuZXIpOwogfQpJbmRl
eDogU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViVVJMUmVzcG9uc2VQcml2YXRlLmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJVUkxSZXNw
b25zZVByaXZhdGUuaWRsCShyZXZpc2lvbiAxNzI5NDYpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9J
bnRlcmZhY2VzL0lXZWJVUkxSZXNwb25zZVByaXZhdGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00
MCw1ICs0MCw1IEBAIGltcG9ydCAib2NpZGwuaWRsIjsKIAogaW50ZXJmYWNlIElXZWJVUkxSZXNw
b25zZVByaXZhdGUgOiBJVW5rbm93bgogewotICAgIEhSRVNVTFQgc3NsUGVlckNlcnRpZmljYXRl
KFtvdXQsIHJldHZhbF0gT0xFX0hBTkRMRSogcmVzdWx0KTsKKyAgICBIUkVTVUxUIHNzbFBlZXJD
ZXJ0aWZpY2F0ZShbb3V0LCByZXR2YWxdIFVMT05HX1BUUiogcmVzdWx0KTsKIH0KSW5kZXg6IFNv
dXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYlZpZXcuaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYlZpZXcuaWRsCShyZXZpc2lvbiAxNzI5NDYp
CisrKyBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJWaWV3LmlkbAkod29ya2luZyBj
b3B5KQpAQCAtNTQ1LDE0ICs1NDUsMTQgQEAgaW50ZXJmYWNlIElXZWJWaWV3IDogSVVua25vd24K
ICAgICAgICAgbm90IGluIGFuIGFjdHVhbCB3aW5kb3cuCiAgICAgICAgIC0gKHZvaWQpc2V0SG9z
dFdpbmRvdzooTlNXaW5kb3cgKilob3N0V2luZG93OwogICAgICovCi0gICAgSFJFU1VMVCBzZXRI
b3N0V2luZG93KFtpbl0gT0xFX0hBTkRMRSB3aW5kb3cpOworICAgIEhSRVNVTFQgc2V0SG9zdFdp
bmRvdyhbaW5dIEhXTkQgd2luZG93KTsKIAogICAgIC8qIQogICAgICAgICBAbWV0aG9kIGhvc3RX
aW5kb3cKICAgICAgICAgQHJlc3VsdCBUaGUgaG9zdCB3aW5kb3cgZm9yIHRoZSB3ZWIgdmlldy4K
ICAgICAgICAgLSAoTlNXaW5kb3cgKilob3N0V2luZG93OwogICAgICovCi0gICAgSFJFU1VMVCBo
b3N0V2luZG93KFtvdXQsIHJldHZhbF0gT0xFX0hBTkRMRSogd2luZG93KTsKKyAgICBIUkVTVUxU
IGhvc3RXaW5kb3coW291dCwgcmV0dmFsXSBIV05EKiB3aW5kb3cpOwogCiAgICAgLyohCiAgICAg
ICAgIEBtZXRob2Qgc2VhcmNoRm9yOmRpcmVjdGlvbjpjYXNlU2Vuc2l0aXZlOgpAQCAtNzM1LDcg
KzczNSw3IEBAIGludGVyZmFjZSBJV2ViVmlldyA6IElVbmtub3duCiAgICAgICAgIEByZXN1bHQg
UmV0dXJucyB0aGUgbWFpbiBmcmFtZSdzIGljb24gaWYgYW55LCBvdGhlcndpc2UgbmlsLgogICAg
ICAgICAtIChOU0ltYWdlICopbWFpbkZyYW1lSWNvbjsKICAgICAqLwotICAgIEhSRVNVTFQgbWFp
bkZyYW1lSWNvbihbb3V0LCByZXR2YWxdIE9MRV9IQU5ETEUqIGhCaXRtYXApOworICAgIEhSRVNV
TFQgbWFpbkZyYW1lSWNvbihbb3V0LCByZXR2YWxdIEhCSVRNQVAqIGhCaXRtYXApOwogCiAgICAg
LyohCiAgICAgICAgIEBtZXRob2QgcmVnaXN0ZXJVUkxTY2hlbWVBc0xvY2FsCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJWaWV3UHJpdmF0ZS5pZGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViVmlld1ByaXZhdGUuaWRsCShyZXZp
c2lvbiAxNzI5NDYpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJWaWV3UHJp
dmF0ZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTcyLDcgKzcyLDcgQEAgaW50ZXJmYWNlIElXZWJW
aWV3UHJpdmF0ZSA6IElVbmtub3duCiAgICAgICAqLwogICAgIEhSRVNVTFQgaW5WaWV3U291cmNl
TW9kZShbb3V0LCByZXR2YWxdIEJPT0wqIGZsYWcpOwogCi0gICAgSFJFU1VMVCB2aWV3V2luZG93
KFtvdXQsIHJldHZhbF0gT0xFX0hBTkRMRSogd2luZG93KTsKKyAgICBIUkVTVUxUIHZpZXdXaW5k
b3coW291dCwgcmV0dmFsXSBIV05EKiB3aW5kb3cpOwogCiAgICAgLy8gTWF5IHdlbGwgYmVjb21l
IHB1YmxpYwogICAgIC8vLSAodm9pZClfc2V0Rm9ybURlbGVnYXRlOihpZDxXZWJGb3JtRGVsZWdh
dGU+KWRlbGVnYXRlOwpAQCAtOTYsNyArOTYsNyBAQCBpbnRlcmZhY2UgSVdlYlZpZXdQcml2YXRl
IDogSVVua25vd24KICAgICBIUkVTVUxUIHVubWFya0FsbFRleHRNYXRjaGVzKCk7CiAgICAgSFJF
U1VMVCByZWN0c0ZvclRleHRNYXRjaGVzKFtvdXRdSUVudW1UZXh0TWF0Y2hlcyoqIHBtYXRjaGVz
KTsKICAgICBIUkVTVUxUIHNlbGVjdGlvblJlY3QoW2luLCBvdXRdIFJFQ1QqIHJjKTsKLSAgICBI
UkVTVUxUIGdlbmVyYXRlU2VsZWN0aW9uSW1hZ2UoQk9PTCBmb3JjZVdoaXRlVGV4dCwgW291dCwg
cmV0dmFsXSBPTEVfSEFORExFKiBoQml0bWFwKTsKKyAgICBIUkVTVUxUIGdlbmVyYXRlU2VsZWN0
aW9uSW1hZ2UoQk9PTCBmb3JjZVdoaXRlVGV4dCwgW291dCwgcmV0dmFsXSBIQklUTUFQKiBoQml0
bWFwKTsKIAogICAgIEhSRVNVTFQgY2FuSGFuZGxlUmVxdWVzdChbaW5dIElXZWJVUkxSZXF1ZXN0
KiByZXF1ZXN0LCBbb3V0LCByZXR2YWxdIEJPT0wqIHJlc3VsdCk7CiAKQEAgLTEzNyw3ICsxMzcs
NyBAQCBpbnRlcmZhY2UgSVdlYlZpZXdQcml2YXRlIDogSVVua25vd24KIAogICAgIEhSRVNVTFQg
d2luZG93QW5jZXN0cnlEaWRDaGFuZ2UoKTsKIAotICAgIEhSRVNVTFQgcGFpbnREb2N1bWVudFJl
Y3RUb0NvbnRleHQoW2luXSBSRUNUIHJlY3QsIFtpbl0gT0xFX0hBTkRMRSBkYyk7CisgICAgSFJF
U1VMVCBwYWludERvY3VtZW50UmVjdFRvQ29udGV4dChbaW5dIFJFQ1QgcmVjdCwgW2luXSBIREMg
ZGMpOwogCiAgICAgSFJFU1VMVCBzZXREZWZlcnNDYWxsYmFja3MoW2luXSBCT09MIGRlZmVyc0Nh
bGxiYWNrcyk7CiAgICAgSFJFU1VMVCBkZWZlcnNDYWxsYmFja3MoW291dCwgcmV0dmFsXSBCT09M
KiBkZWZlcnNDYWxsYmFja3MpOwpAQCAtMTQ3LDcgKzE0Nyw3IEBAIGludGVyZmFjZSBJV2ViVmll
d1ByaXZhdGUgOiBJVW5rbm93bgogICAgIEhSRVNVTFQgc2V0Q3VzdG9tSFRNTFRva2VuaXplclRp
bWVEZWxheShbaW5dIGRvdWJsZSB0aW1lRGVsYXkpOwogICAgIEhSRVNVTFQgc2V0Q3VzdG9tSFRN
TFRva2VuaXplckNodW5rU2l6ZShbaW5dIGludCBjaHVua1NpemUpOwogCi0gICAgSFJFU1VMVCBi
YWNraW5nU3RvcmUoW291dCwgcmV0dmFsXSBPTEVfSEFORExFKiBoQml0bWFwKTsKKyAgICBIUkVT
VUxUIGJhY2tpbmdTdG9yZShbb3V0LCByZXR2YWxdIEhCSVRNQVAqIGhCaXRtYXApOwogCiAgICAg
SFJFU1VMVCBzZXRUcmFuc3BhcmVudChbaW5dIEJPT0wgdHJhbnNwYXJlbnQpOwogICAgIEhSRVNV
TFQgdHJhbnNwYXJlbnQoW291dCwgcmV0dmFsXSBCT09MKiB0cmFuc3BhcmVudCk7CkBAIC0yMzMs
NyArMjMzLDcgQEAgaW50ZXJmYWNlIElXZWJWaWV3UHJpdmF0ZSA6IElVbmtub3duCiAKICAgICBI
UkVTVUxUIG5leHREaXNwbGF5SXNTeW5jaHJvbm91cygpOwogCi0gICAgSFJFU1VMVCBwYWludFNj
cm9sbFZpZXdSZWN0VG9Db250ZXh0QXRQb2ludChbaW5dIFJFQ1QgcmVjdCwgW2luXSBQT0lOVCBw
dCwgW2luXSBPTEVfSEFORExFIGRjKTsKKyAgICBIUkVTVUxUIHBhaW50U2Nyb2xsVmlld1JlY3RU
b0NvbnRleHRBdFBvaW50KFtpbl0gUkVDVCByZWN0LCBbaW5dIFBPSU5UIHB0LCBbaW5dIEhEQyBk
Yyk7CiAKICAgICBbbG9jYWxdIEhSRVNVTFQgcmVwb3J0RXhjZXB0aW9uKFtpbl0gSlNDb250ZXh0
UmVmIGNvbnRleHQsIFtpbl0gSlNWYWx1ZVJlZiBleGNlcHRpb24pOwogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9FbWJlZGRlZFdpZGdldC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvRW1iZWRkZWRXaWRnZXQuY3BwCShy
ZXZpc2lvbiAxNzI5NDYpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9FbWJl
ZGRlZFdpZGdldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDE2ICs1NiwxNSBAQCBib29sIEVt
YmVkZGVkV2lkZ2V0OjpjcmVhdGVXaW5kb3coSFdORCBwCiB7CiAgICAgQVNTRVJUKCFtX3dpbmRv
dyk7CiAKLSAgICBPTEVfSEFORExFIHdpbmRvdzsKLQorICAgIEhXTkQgd2luZG93OwogICAgIFNJ
WkUgcGx1Z2luU2l6ZShzaXplKTsKIAotICAgIEhSRVNVTFQgaHIgPSBtX3ZpZXctPmNyZWF0ZVZp
ZXdXaW5kb3cocmVpbnRlcnByZXRfY2FzdDxPTEVfSEFORExFPihwYXJlbnRXaW5kb3cpLCAmcGx1
Z2luU2l6ZSwgJndpbmRvdyk7CisgICAgSFJFU1VMVCBociA9IG1fdmlldy0+Y3JlYXRlVmlld1dp
bmRvdyhwYXJlbnRXaW5kb3csICZwbHVnaW5TaXplLCAmd2luZG93KTsKICAgICAgICAgCiAgICAg
aWYgKEZBSUxFRChocikgfHwgIXdpbmRvdykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
bV93aW5kb3cgPSByZWludGVycHJldF9jYXN0PEhXTkQ+KHdpbmRvdyk7CisgICAgbV93aW5kb3cg
PSB3aW5kb3c7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAkocmV2aXNpb24g
MTcyOTQ2KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDg5LDcgKzQ4OSw3IEBAIHZvaWQgV2ViQ2hyb21l
Q2xpZW50OjpzY3JvbGwoY29uc3QgSW50U2kKIEludFJlY3QgV2ViQ2hyb21lQ2xpZW50Ojpyb290
Vmlld1RvU2NyZWVuKGNvbnN0IEludFJlY3QmIHJlY3QpIGNvbnN0CiB7CiAgICAgSFdORCB2aWV3
V2luZG93OwotICAgIGlmIChGQUlMRUQobV93ZWJWaWV3LT52aWV3V2luZG93KHJlaW50ZXJwcmV0
X2Nhc3Q8T0xFX0hBTkRMRSo+KCZ2aWV3V2luZG93KSkpKQorICAgIGlmIChGQUlMRUQobV93ZWJW
aWV3LT52aWV3V2luZG93KCZ2aWV3V2luZG93KSkpCiAgICAgICAgIHJldHVybiByZWN0OwogCiAg
ICAgLy8gRmluZCB0aGUgdG9wIGxlZnQgY29ybmVyIG9mIHRoZSBXaWRnZXQncyBjb250YWluaW5n
IHdpbmRvdyBpbiBzY3JlZW4gY29vcmRzLApAQCAtNTA3LDcgKzUwNyw3IEBAIEludFBvaW50IFdl
YkNocm9tZUNsaWVudDo6c2NyZWVuVG9Sb290VmkKICAgICBQT0lOVCByZXN1bHQgPSBwb2ludDsK
IAogICAgIEhXTkQgdmlld1dpbmRvdzsKLSAgICBpZiAoRkFJTEVEKG1fd2ViVmlldy0+dmlld1dp
bmRvdyhyZWludGVycHJldF9jYXN0PE9MRV9IQU5ETEUqPigmdmlld1dpbmRvdykpKSkKKyAgICBp
ZiAoRkFJTEVEKG1fd2ViVmlldy0+dmlld1dpbmRvdygmdmlld1dpbmRvdykpKQogICAgICAgICBy
ZXR1cm4gcG9pbnQ7CiAKICAgICA6OlNjcmVlblRvQ2xpZW50KHZpZXdXaW5kb3csICZyZXN1bHQp
OwpAQCAtNTE4LDcgKzUxOCw3IEBAIEludFBvaW50IFdlYkNocm9tZUNsaWVudDo6c2NyZWVuVG9S
b290VmkKIFBsYXRmb3JtUGFnZUNsaWVudCBXZWJDaHJvbWVDbGllbnQ6OnBsYXRmb3JtUGFnZUNs
aWVudCgpIGNvbnN0CiB7CiAgICAgSFdORCB2aWV3V2luZG93OwotICAgIGlmIChGQUlMRUQobV93
ZWJWaWV3LT52aWV3V2luZG93KHJlaW50ZXJwcmV0X2Nhc3Q8T0xFX0hBTkRMRSo+KCZ2aWV3V2lu
ZG93KSkpKQorICAgIGlmIChGQUlMRUQobV93ZWJWaWV3LT52aWV3V2luZG93KCZ2aWV3V2luZG93
KSkpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiB2aWV3V2luZG93OwogfQpAQCAtNjU0
LDcgKzY1NCw3IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpydW5PcGVuUGFuZWwoRnJhbWUKICAg
ICBSZWZQdHI8RmlsZUNob29zZXI+IGZpbGVDaG9vc2VyID0gcHJwRmlsZUNob29zZXI7CiAKICAg
ICBIV05EIHZpZXdXaW5kb3c7Ci0gICAgaWYgKEZBSUxFRChtX3dlYlZpZXctPnZpZXdXaW5kb3co
cmVpbnRlcnByZXRfY2FzdDxPTEVfSEFORExFKj4oJnZpZXdXaW5kb3cpKSkpCisgICAgaWYgKEZB
SUxFRChtX3dlYlZpZXctPnZpZXdXaW5kb3coJnZpZXdXaW5kb3cpKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgYm9vbCBtdWx0aUZpbGUgPSBmaWxlQ2hvb3Nlci0+c2V0dGluZ3MoKS5hbGxvd3NN
dWx0aXBsZUZpbGVzOwpAQCAtNzI2LDcgKzcyNiw3IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50Ojpz
ZXRDdXJzb3IoY29uc3QgQ3UKICAgICBpZiAoQ09NUHRyPElXZWJVSURlbGVnYXRlPiBkZWxlZ2F0
ZSA9IHVpRGVsZWdhdGUoKSkgewogICAgICAgICBDT01QdHI8SVdlYlVJRGVsZWdhdGVQcml2YXRl
PiBkZWxlZ2F0ZVByaXZhdGUoUXVlcnksIGRlbGVnYXRlKTsKICAgICAgICAgaWYgKGRlbGVnYXRl
UHJpdmF0ZSkgewotICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChkZWxlZ2F0ZVByaXZhdGUtPndl
YlZpZXdTZXRDdXJzb3IobV93ZWJWaWV3LCByZWludGVycHJldF9jYXN0PE9MRV9IQU5ETEU+KHBs
YXRmb3JtQ3Vyc29yKSkpKQorICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChkZWxlZ2F0ZVByaXZh
dGUtPndlYlZpZXdTZXRDdXJzb3IobV93ZWJWaWV3LCBwbGF0Zm9ybUN1cnNvcikpKQogICAgICAg
ICAgICAgICAgIHNob3VsZFNldEN1cnNvciA9IGZhbHNlOwogICAgICAgICB9CiAgICAgfQpJbmRl
eDogU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNv
bnRleHRNZW51Q2xpZW50LmNwcAkocmV2aXNpb24gMTcyOTQ2KQorKysgU291cmNlL1dlYktpdC93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02MywxNyArNjMsMTcgQEAgUGFzc093blB0cjxDb250ZXh0TWVudT4gV2ViQ29udGV4dE1l
bnVDbAogCiAgICAgQVNTRVJUKHVpRGVsZWdhdGUpOwogCi0gICAgT0xFX0hBTkRMRSBuYXRpdmVN
ZW51ID0gcmVpbnRlcnByZXRfY2FzdDxPTEVfSEFORExFPihtZW51LT5wbGF0Zm9ybUNvbnRleHRN
ZW51KCkpOworICAgIEhNRU5VIG5hdGl2ZU1lbnUgPSBtZW51LT5wbGF0Zm9ybUNvbnRleHRNZW51
KCk7CiAgICAgQ09NUHRyPFdlYkVsZW1lbnRQcm9wZXJ0eUJhZz4gcHJvcGVydHlCYWc7CiAgICAg
cHJvcGVydHlCYWcuYWRvcHRSZWYoV2ViRWxlbWVudFByb3BlcnR5QmFnOjpjcmVhdGVJbnN0YW5j
ZShtX3dlYlZpZXctPnBhZ2UoKS0+Y29udGV4dE1lbnVDb250cm9sbGVyKCkuaGl0VGVzdFJlc3Vs
dCgpKSk7CiAgICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gZGVjaWRlIHdoZXRoZXIgdG8gZG8gdGhl
IGRlZmF1bHQgYmVmb3JlIGNhbGxpbmcgdGhpcyBkZWxlZ2F0ZSBtZXRob2QKICAgICBpZiAoRkFJ
TEVEKHVpRGVsZWdhdGUtPmNvbnRleHRNZW51SXRlbXNGb3JFbGVtZW50KG1fd2ViVmlldywgcHJv
cGVydHlCYWcuZ2V0KCksIG5hdGl2ZU1lbnUsICZuYXRpdmVNZW51KSkpIHsKLSAgICAgICAgOjpE
ZXN0cm95TWVudShyZWludGVycHJldF9jYXN0PEhNRU5VPihuYXRpdmVNZW51KSk7CisgICAgICAg
IDo6RGVzdHJveU1lbnUobmF0aXZlTWVudSk7CiAgICAgICAgIHJldHVybiBtZW51LnJlbGVhc2Uo
KTsKICAgICB9CiAgICAgCi0gICAgT3duUHRyPENvbnRleHRNZW51PiBjdXN0b21pemVkTWVudSA9
IGFkb3B0UHRyKG5ldyBDb250ZXh0TWVudShyZWludGVycHJldF9jYXN0PEhNRU5VPihuYXRpdmVN
ZW51KSkpOwotICAgIDo6RGVzdHJveU1lbnUocmVpbnRlcnByZXRfY2FzdDxITUVOVT4obmF0aXZl
TWVudSkpOworICAgIE93blB0cjxDb250ZXh0TWVudT4gY3VzdG9taXplZE1lbnUgPSBhZG9wdFB0
cihuZXcgQ29udGV4dE1lbnUobmF0aXZlTWVudSkpOworICAgIDo6RGVzdHJveU1lbnUobmF0aXZl
TWVudSk7CiAKICAgICByZXR1cm4gY3VzdG9taXplZE1lbnUucmVsZWFzZSgpOwogfQpJbmRleDog
U291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcAkocmV2aXNpb24gMTcyOTQ2KQorKysgU291cmNlL1dlYktpdC93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMTY3LDExICsxMTY3LDExIEBAIFBhc3NSZWZQdHI8V2lkZ2V0PiBXZWJGcmFtZUxvYWRlckNs
aWVudDoKICAgICAgICAgICAgIENPTVB0cjxJV2ViRW1iZWRkZWRWaWV3PiB2aWV3OwogICAgICAg
ICAgICAgSFJFU1VMVCByZXN1bHQgPSB1aVByaXZhdGUtPmVtYmVkZGVkVmlld1dpdGhBcmd1bWVu
dHMod2ViVmlldywgbV93ZWJGcmFtZSwgYXJndW1lbnRzQmFnLmdldCgpLCAmdmlldyk7CiAgICAg
ICAgICAgICBpZiAoU1VDQ0VFREVEKHJlc3VsdCkpIHsKLSAgICAgICAgICAgICAgICBPTEVfSEFO
RExFIHBhcmVudFdpbmRvdzsKKyAgICAgICAgICAgICAgICBIV05EIHBhcmVudFdpbmRvdzsKICAg
ICAgICAgICAgICAgICBIUkVTVUxUIGhyID0gd2ViVmlldy0+dmlld1dpbmRvdygmcGFyZW50V2lu
ZG93KTsKICAgICAgICAgICAgICAgICBBU1NFUlQoU1VDQ0VFREVEKGhyKSk7CiAKLSAgICAgICAg
ICAgICAgICByZXR1cm4gRW1iZWRkZWRXaWRnZXQ6OmNyZWF0ZSh2aWV3LmdldCgpLCBlbGVtZW50
LCByZWludGVycHJldF9jYXN0PEhXTkQ+KHBhcmVudFdpbmRvdyksIHBsdWdpblNpemUpOworICAg
ICAgICAgICAgICAgIHJldHVybiBFbWJlZGRlZFdpZGdldDo6Y3JlYXRlKHZpZXcuZ2V0KCksIGVs
ZW1lbnQsIHBhcmVudFdpbmRvdywgcGx1Z2luU2l6ZSk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAJKHJldmlzaW9uIDE3Mjk0NikKKysrIFNvdXJj
ZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3
LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTQgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtOTcsNyArOTcsNyBAQCBXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIFdlYklu
CiAKICAgICBDT01QdHI8V2ViVmlldz4gZnJvbnRlbmRXZWJWaWV3KEFkb3B0Q09NLCBXZWJWaWV3
OjpjcmVhdGVJbnN0YW5jZSgpKTsKIAotICAgIGlmIChGQUlMRUQoZnJvbnRlbmRXZWJWaWV3LT5z
ZXRIb3N0V2luZG93KChPTEVfSEFORExFKShVTE9ORzY0KWZyb250ZW5kSHduZCkpKQorICAgIGlm
IChGQUlMRUQoZnJvbnRlbmRXZWJWaWV3LT5zZXRIb3N0V2luZG93KGZyb250ZW5kSHduZCkpKQog
ICAgICAgICByZXR1cm4gMDsKIAogICAgIFJFQ1QgcmVjdDsKQEAgLTE1NCw3ICsxNTQsNyBAQCBX
ZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIFdlYkluCiAgICAgZnJvbnRlbmRXZWJW
aWV3LT5zZXRQcm9oaWJpdHNNYWluRnJhbWVTY3JvbGxpbmcoVFJVRSk7CiAKICAgICBIV05EIGZy
b250ZW5kV2ViVmlld0h3bmQ7Ci0gICAgaWYgKEZBSUxFRChmcm9udGVuZFdlYlZpZXctPnZpZXdX
aW5kb3cocmVpbnRlcnByZXRfY2FzdDxPTEVfSEFORExFKj4oJmZyb250ZW5kV2ViVmlld0h3bmQp
KSkpCisgICAgaWYgKEZBSUxFRChmcm9udGVuZFdlYlZpZXctPnZpZXdXaW5kb3coJmZyb250ZW5k
V2ViVmlld0h3bmQpKSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBDT01QdHI8V2ViTXV0YWJs
ZVVSTFJlcXVlc3Q+IHJlcXVlc3QoQWRvcHRDT00sIFdlYk11dGFibGVVUkxSZXF1ZXN0OjpjcmVh
dGVJbnN0YW5jZSgpKTsKQEAgLTE3MSwxMCArMTcxLDEwIEBAIFdlYkNvcmU6Okluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbCogV2ViSW4KICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBtX2Zyb250ZW5k
UGFnZSA9IGNvcmUoZnJvbnRlbmRXZWJWaWV3LmdldCgpKTsKLSAgICBhdXRvIGZyb250ZW5kQ2xp
ZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudD4obV9pbnNw
ZWN0ZWRXZWJWaWV3LCByZWludGVycHJldF9jYXN0PEhXTkQ+KG1faW5zcGVjdGVkV2ViVmlld0hh
bmRsZSksIGZyb250ZW5kSHduZCwgZnJvbnRlbmRXZWJWaWV3LCBmcm9udGVuZFdlYlZpZXdId25k
LCB0aGlzLCBjcmVhdGVGcm9udGVuZFNldHRpbmdzKCkpOworICAgIGF1dG8gZnJvbnRlbmRDbGll
bnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50PihtX2luc3Bl
Y3RlZFdlYlZpZXcsIG1faW5zcGVjdGVkV2ViVmlld0hhbmRsZSwgZnJvbnRlbmRId25kLCBmcm9u
dGVuZFdlYlZpZXcsIGZyb250ZW5kV2ViVmlld0h3bmQsIHRoaXMsIGNyZWF0ZUZyb250ZW5kU2V0
dGluZ3MoKSk7CiAgICAgbV9mcm9udGVuZENsaWVudCA9IGZyb250ZW5kQ2xpZW50LmdldCgpOwog
ICAgIG1fZnJvbnRlbmRQYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2V0SW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQoV1RGOjptb3ZlKGZyb250ZW5kQ2xpZW50KSk7Ci0gICAgbV9mcm9udGVuZEhh
bmRsZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8T0xFX0hBTkRMRT4oZnJvbnRlbmRId25kKTsKKyAgICBt
X2Zyb250ZW5kSGFuZGxlID0gZnJvbnRlbmRId25kOwogICAgIHJldHVybiB0aGlzOwogfQogCkBA
IC0yMDEsOCArMjAxLDggQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OmhpZ2hsaWdodCgpCiAg
ICAgZWxzZQogICAgICAgICBtX2hpZ2hsaWdodC0+c2V0U2hvd3NXaGlsZVdlYlZpZXdJc1Zpc2li
bGUodHJ1ZSk7CiAKLSAgICBpZiAoY3JlYXRpbmdIaWdobGlnaHQgJiYgSXNXaW5kb3dWaXNpYmxl
KChIV05EKW1fZnJvbnRlbmRIYW5kbGUpKQotICAgICAgICBtX2hpZ2hsaWdodC0+cGxhY2VCZWhp
bmRXaW5kb3cocmVpbnRlcnByZXRfY2FzdDxIV05EPihtX2Zyb250ZW5kSGFuZGxlKSk7CisgICAg
aWYgKGNyZWF0aW5nSGlnaGxpZ2h0ICYmIElzV2luZG93VmlzaWJsZShtX2Zyb250ZW5kSGFuZGxl
KSkKKyAgICAgICAgbV9oaWdobGlnaHQtPnBsYWNlQmVoaW5kV2luZG93KG1fZnJvbnRlbmRIYW5k
bGUpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6aGlkZUhpZ2hsaWdodCgpCkBAIC0z
MTMsMTIgKzMxMywxMiBAQCB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpzZXRBdHRh
CiAgICAgaWYgKCFtX2F0dGFjaGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBPTEVfSEFORExF
IGhvc3RXaW5kb3c7CisgICAgSFdORCBob3N0V2luZG93OwogICAgIGlmICghU1VDQ0VFREVEKG1f
aW5zcGVjdGVkV2ViVmlldy0+aG9zdFdpbmRvdygmaG9zdFdpbmRvdykpKQogICAgICAgICByZXR1
cm47CiAKICAgICBSRUNUIGhvc3RXaW5kb3dSZWN0OwotICAgIEdldENsaWVudFJlY3QocmVpbnRl
cnByZXRfY2FzdDxIV05EPihob3N0V2luZG93KSwgJmhvc3RXaW5kb3dSZWN0KTsKKyAgICBHZXRD
bGllbnRSZWN0KGhvc3RXaW5kb3csICZob3N0V2luZG93UmVjdCk7CiAKICAgICBSRUNUIGluc3Bl
Y3RlZFJlY3Q7CiAgICAgR2V0Q2xpZW50UmVjdChtX2luc3BlY3RlZFdlYlZpZXdId25kLCAmaW5z
cGVjdGVkUmVjdCk7CkBAIC0zNzEsMTIgKzM3MSwxMiBAQCB2b2lkIFdlYkluc3BlY3RvckZyb250
ZW5kQ2xpZW50OjpjbG9zZVdpCiAKICAgICBtX2F0dGFjaGVkID0gZmFsc2U7CiAKLSAgICBtX2Zy
b250ZW5kV2ViVmlldy0+c2V0SG9zdFdpbmRvdyhyZWludGVycHJldF9jYXN0PE9MRV9IQU5ETEU+
KG1fZnJvbnRlbmRId25kKSk7CisgICAgbV9mcm9udGVuZFdlYlZpZXctPnNldEhvc3RXaW5kb3co
bV9mcm9udGVuZEh3bmQpOwogCiAgICAgLy8gTWFrZSBzdXJlIGV2ZXJ5dGhpbmcgaGFzIHRoZSBy
aWdodCBzaXplL3Bvc2l0aW9uLgotICAgIE9MRV9IQU5ETEUgaG9zdFdpbmRvdzsKKyAgICBIV05E
IGhvc3RXaW5kb3c7CiAgICAgaWYgKFNVQ0NFRURFRChtX2luc3BlY3RlZFdlYlZpZXctPmhvc3RX
aW5kb3coJmhvc3RXaW5kb3cpKSkKLSAgICAgICAgU2VuZE1lc3NhZ2UocmVpbnRlcnByZXRfY2Fz
dDxIV05EPihob3N0V2luZG93KSwgV01fU0laRSwgMCwgMCk7CisgICAgICAgIFNlbmRNZXNzYWdl
KGhvc3RXaW5kb3csIFdNX1NJWkUsIDAsIDApOwogfQogCiB2b2lkIFdlYkluc3BlY3RvckZyb250
ZW5kQ2xpZW50OjpzaG93V2luZG93V2l0aG91dE5vdGlmaWNhdGlvbnMoKQpAQCAtNDAxLDcgKzQw
MSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNob3dXaW4KIAogICAgIGlm
ICghc2hvdWxkQXR0YWNoKSB7CiAgICAgICAgIC8vIFB1dCB0aGUgSW5zcGVjdG9yJ3MgV2ViVmll
dyBpbnNpZGUgb3VyIHdpbmRvdyBhbmQgc2hvdyBpdC4KLSAgICAgICAgbV9mcm9udGVuZFdlYlZp
ZXctPnNldEhvc3RXaW5kb3cocmVpbnRlcnByZXRfY2FzdDxPTEVfSEFORExFPihtX2Zyb250ZW5k
SHduZCkpOworICAgICAgICBtX2Zyb250ZW5kV2ViVmlldy0+c2V0SG9zdFdpbmRvdyhtX2Zyb250
ZW5kSHduZCk7CiAgICAgICAgIFNlbmRNZXNzYWdlKG1fZnJvbnRlbmRId25kLCBXTV9TSVpFLCAw
LCAwKTsKICAgICAgICAgdXBkYXRlV2luZG93VGl0bGUoKTsKIApAQCAtNDEzLDEwICs0MTMsMTAg
QEAgdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6c2hvd1dpbgogICAgIFdpbmRvd01l
c3NhZ2VCcm9hZGNhc3Rlcjo6YWRkTGlzdGVuZXIobV9pbnNwZWN0ZWRXZWJWaWV3SHduZCwgdGhp
cyk7CiAKICAgICBIV05EIGhvc3RXaW5kb3c7Ci0gICAgaWYgKEZBSUxFRChtX2luc3BlY3RlZFdl
YlZpZXctPmhvc3RXaW5kb3cocmVpbnRlcnByZXRfY2FzdDxPTEVfSEFORExFKj4oJmhvc3RXaW5k
b3cpKSkpCisgICAgaWYgKEZBSUxFRChtX2luc3BlY3RlZFdlYlZpZXctPmhvc3RXaW5kb3coJmhv
c3RXaW5kb3cpKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9mcm9udGVuZFdlYlZpZXctPnNl
dEhvc3RXaW5kb3cocmVpbnRlcnByZXRfY2FzdDxPTEVfSEFORExFPihob3N0V2luZG93KSk7Cisg
ICAgbV9mcm9udGVuZFdlYlZpZXctPnNldEhvc3RXaW5kb3coaG9zdFdpbmRvdyk7CiAKICAgICAv
LyBUaGVuIGhpZGUgb3VyIG93biB3aW5kb3cuCiAgICAgU2hvd1dpbmRvdyhtX2Zyb250ZW5kSHdu
ZCwgU1dfSElERSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJ
bnNwZWN0b3JDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAkocmV2aXNpb24gMTcyOTQ2KQorKysgU291cmNl
L1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3IEFw
cGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIw
MDcsIDIwMTQgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtODYsOCArODYsOCBAQCBwcml2YXRlOgogICAgIFdlYlZpZXcq
IG1faW5zcGVjdGVkV2ViVmlldzsKICAgICBXZWJDb3JlOjpQYWdlKiBtX2Zyb250ZW5kUGFnZTsK
ICAgICBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudCogbV9mcm9udGVuZENsaWVudDsKLSAgICBP
TEVfSEFORExFIG1faW5zcGVjdGVkV2ViVmlld0hhbmRsZTsKLSAgICBPTEVfSEFORExFIG1fZnJv
bnRlbmRIYW5kbGU7CisgICAgSFdORCBtX2luc3BlY3RlZFdlYlZpZXdIYW5kbGU7CisgICAgSFdO
RCBtX2Zyb250ZW5kSGFuZGxlOwogCiAgICAgT3duUHRyPFdlYk5vZGVIaWdobGlnaHQ+IG1faGln
aGxpZ2h0OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYklu
c3BlY3RvckRlbGVnYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JEZWxlZ2F0ZS5jcHAJKHJldmlzaW9uIDE3Mjk0NikKKysr
IFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckRlbGVnYXRlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDggTWF0dCBMaWxlayA8d2Via2l0QG1hdHRsaWxlay5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIw
MTQgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5z
cGVjdG9yRGVsZWdhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJJbnNwZWN0b3JEZWxlZ2F0ZS5oCShyZXZpc2lvbiAxNzI5NDYpCisrKyBTb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JEZWxlZ2F0ZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwOCBNYXR0
IExpbGVrIDx3ZWJraXRAbWF0dGxpbGVrLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBs
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC02NCwxMyArNjUsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIHdlYlZpZXdVbmZvY3VzKCAKICAgICAgICAgLyogW2luXSAqLyBJV2ViVmll
dyopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQogCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIHdlYlZpZXdGaXJzdFJlc3BvbmRlciggCi0gICAgICAgIC8qIFtpbl0gKi8gSVdl
YlZpZXcqLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIE9MRV9IQU5ETEUqKSB7IHJldHVy
biBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd2Vi
Vmlld0ZpcnN0UmVzcG9uZGVyKElXZWJWaWV3KiwgSFdORCopIHsgcmV0dXJuIEVfTk9USU1QTDsg
fQogCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG1ha2VGaXJzdFJlc3Bv
bmRlciggCi0gICAgICAgIC8qIFtpbl0gKi8gSVdlYlZpZXcqLAotICAgICAgICAvKiBbaW5dICov
IE9MRV9IQU5ETEUpIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBtYWtlRmlyc3RSZXNwb25kZXIoSVdlYlZpZXcqLCBIV05EKSB7IHJl
dHVybiBFX05PVElNUEw7IH0KIAogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBzZXRTdGF0dXNUZXh0KCAKICAgICAgICAgLyogW2luXSAqLyBJV2ViVmlldyosCkBAIC0xNTAs
MTEgKzE0Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgLyogW2luXSAqLyBJUHJvcGVydHlCYWcqLAog
ICAgICAgICAvKiBbaW5dICovIFVJTlQgLyptb2RpZmllckZsYWdzKi8pIHsgcmV0dXJuIEVfTk9U
SU1QTDsgfQogCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNvbnRleHRN
ZW51SXRlbXNGb3JFbGVtZW50KCAKLSAgICAgICAgLyogW2luXSAqLyBJV2ViVmlldyosCi0gICAg
ICAgIC8qIFtpbl0gKi8gSVByb3BlcnR5QmFnKiwKLSAgICAgICAgLyogW2luXSAqLyBPTEVfSEFO
RExFLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIE9MRV9IQU5ETEUqKSB7IHJldHVybiBF
X05PVElNUEw7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY29udGV4
dE1lbnVJdGVtc0ZvckVsZW1lbnQoSVdlYlZpZXcqLCBJUHJvcGVydHlCYWcqLCBITUVOVSwgSE1F
TlUqKSB7IHJldHVybiBFX05PVElNUEw7IH0KIAogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSB2YWxpZGF0ZVVzZXJJbnRlcmZhY2VJdGVtKCAKICAgICAgICAgLyogW2luXSAq
LyBJV2ViVmlldyosCkBAIC0xOTIsMTAgKzE4NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaGFzQ3VzdG9tTWVudUltcGxlbWVudGF0aW9uKCAKICAg
ICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKikgeyByZXR1cm4gRV9OT1RJTVBMOyB9CiAK
LSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdHJhY2tDdXN0b21Qb3B1cE1l
bnUoIAotICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3KiwKLSAgICAgICAgLyogW2luXSAqLyBP
TEVfSEFORExFLAotICAgICAgICAvKiBbaW5dICovIExQUE9JTlQpIHsgcmV0dXJuIEVfTk9USU1Q
TDsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0cmFja0N1c3RvbVBv
cHVwTWVudSgvKiBbaW5dICovIElXZWJWaWV3KiwgLyogW2luXSAqLyBITUVOVSwgLyogW2luXSAq
LyBMUFBPSU5UKSB7IHJldHVybiBFX05PVElNUEw7IH0KIAogICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBtZWFzdXJlQ3VzdG9tTWVudUl0ZW0oIAogICAgICAgICAvKiBbaW5d
ICovIElXZWJWaWV3KiwKQEAgLTIwNSwxMyArMTk1LDkgQEAgcHVibGljOgogICAgICAgICAvKiBb
aW5dICovIElXZWJWaWV3KiwKICAgICAgICAgLyogW2luXSAqLyB2b2lkKiAgLypkcmF3SXRlbSov
KSB7IHJldHVybiBFX05PVElNUEw7IH0KIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBhZGRDdXN0b21NZW51RHJhd2luZ0RhdGEoIAotICAgICAgICAvKiBbaW5dICovIElX
ZWJWaWV3KiwKLSAgICAgICAgLyogW2luXSAqLyBPTEVfSEFORExFKSB7IHJldHVybiBFX05PVElN
UEw7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYWRkQ3VzdG9tTWVu
dURyYXdpbmdEYXRhKC8qIFtpbl0gKi8gSVdlYlZpZXcqLCAvKiBbaW5dICovIEhNRU5VKSB7IHJl
dHVybiBFX05PVElNUEw7IH0KIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBjbGVhblVwQ3VzdG9tTWVudURyYXdpbmdEYXRhKCAKLSAgICAgICAgLyogW2luXSAqLyBJV2Vi
VmlldyosCi0gICAgICAgIC8qIFtpbl0gKi8gT0xFX0hBTkRMRSkgeyByZXR1cm4gRV9OT1RJTVBM
OyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNsZWFuVXBDdXN0b21N
ZW51RHJhd2luZ0RhdGEoLyogW2luXSAqLyBJV2ViVmlldyosIC8qIFtpbl0gKi8gSE1FTlUpIHsg
cmV0dXJuIEVfTk9USU1QTDsgfQogCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIGNhblRha2VGb2N1cyggCiAgICAgICAgIC8qIFtpbl0gKi8gSVdlYlZpZXcqLApAQCAtMjU5
LDE3ICsyNDUsOSBAQCBwdWJsaWM6CiAgICAgICAgIC8qIFtpbl0gKi8gSVdlYlZpZXcgKndlYlZp
ZXcsCiAgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gZmxvYXQgKnJlc3VsdCkgeyByZXR1cm4g
RV9OT1RJTVBMOyB9CiAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IGRyYXdIZWFkZXJJblJlY3QoIAotICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3ICp3ZWJWaWV3
LAotICAgICAgICAvKiBbaW5dICovIFJFQ1QgKnJlY3QsCi0gICAgICAgIC8qIFtpbl0gKi8gT0xF
X0hBTkRMRSBkcmF3aW5nQ29udGV4dCkgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRyYXdIZWFkZXJJblJlY3QoSVdlYlZpZXcqLCBS
RUNUKiwgVUxPTkdfUFRSKSB7IHJldHVybiBFX05PVElNUEw7IH0KICAgICAKLSAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZHJhd0Zvb3RlckluUmVjdCggCi0gICAgICAgIC8q
IFtpbl0gKi8gSVdlYlZpZXcgKndlYlZpZXcsCi0gICAgICAgIC8qIFtpbl0gKi8gUkVDVCAqcmVj
dCwKLSAgICAgICAgLyogW2luXSAqLyBPTEVfSEFORExFIGRyYXdpbmdDb250ZXh0LAotICAgICAg
ICAvKiBbaW5dICovIFVJTlQgcGFnZUluZGV4LAotICAgICAgICAvKiBbaW5dICovIFVJTlQgcGFn
ZUNvdW50KSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgZHJhd0Zvb3RlckluUmVjdChJV2ViVmlldyosIFJFQ1QqLCBVTE9OR19QVFIs
IFVJTlQsIFVJTlQpIHsgcmV0dXJuIEVfTk9USU1QTDsgfQogICAgIAogICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3ZWJWaWV3UHJpbnRpbmdNYXJnaW5SZWN0KCAKICAgICAg
ICAgLyogW2luXSAqLyBJV2ViVmlldyAqd2ViVmlldywKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3Mjk3MykKKysrIFRvb2xz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU2IEBACisyMDE0LTA4LTI2ICBC
cmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtXaW5dIFdlYktp
dCBJREwgaW5jb3JyZWN0bHkgcGFzc2VzIEhXTkQgYXMgT0xFX0hBTkRMRQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2MjU4CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS8xODEzNDEzOD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBdm9pZCAzMi82NC1iaXQgdHJ1bmNhdGlvbiBieSBwcmV2ZW50aW5nIDY0
LWJpdCBIV05EIChhbmQgb3RoZXIpCisgICAgICAgIHZhbHVlcyBmcm9tIHBhc3NpbmcgdGhyb3Vn
aCB0aGUgMzItYml0IE9MRV9IQU5ETEUgZGF0YSB0eXBlLgorCisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvd2luL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyV2luLmNwcDoKKyAgICAgICAgKEFjY2Vz
c2liaWxpdHlDb250cm9sbGVyOjpyb290RWxlbWVudCk6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcDoKKyAgICAgICAgKHJlc2V0V2ViVmlld1RvQ29uc2lz
dGVudFN0YXRlQmVmb3JlVGVzdGluZyk6CisgICAgICAgIChydW5UZXN0KToKKyAgICAgICAgKGNy
ZWF0ZVdlYlZpZXdBbmRPZmZzY3JlZW5XaW5kb3cpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L3dpbi9GcmFtZUxvYWREZWxlZ2F0ZS5oOgorICAgICAgICAoRnJhbWVMb2FkRGVsZWdhdGU6OmRp
ZFJlY2VpdmVJY29uKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vVGVzdFJ1bm5lcldp
bi5jcHA6CisgICAgICAgIChUZXN0UnVubmVyOjpzZXRXaW5kb3dJc0tleSk6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvd2luL1VJRGVsZWdhdGUuY3BwOgorICAgICAgICAoVUlEZWxlZ2F0ZTo6
dHJhY2tDdXN0b21Qb3B1cE1lbnUpOgorICAgICAgICAoVUlEZWxlZ2F0ZTo6ZHJhd0hlYWRlcklu
UmVjdCk6CisgICAgICAgIChVSURlbGVnYXRlOjpkcmF3Rm9vdGVySW5SZWN0KToKKyAgICAgICAg
KFVJRGVsZWdhdGU6OndlYlZpZXdDbG9zZSk6CisgICAgICAgIChVSURlbGVnYXRlOjp3ZWJWaWV3
Rm9jdXMpOgorICAgICAgICAoVUlEZWxlZ2F0ZTo6d2ViVmlld1NldEN1cnNvcik6CisgICAgICAg
IChVSURlbGVnYXRlOjpkcmF3QmFja2dyb3VuZCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
d2luL1VJRGVsZWdhdGUuaDoKKyAgICAgICAgKFVJRGVsZWdhdGU6OndlYlZpZXdGaXJzdFJlc3Bv
bmRlcik6CisgICAgICAgIChVSURlbGVnYXRlOjptYWtlRmlyc3RSZXNwb25kZXIpOgorICAgICAg
ICAoVUlEZWxlZ2F0ZTo6Y29udGV4dE1lbnVJdGVtc0ZvckVsZW1lbnQpOgorICAgICAgICAoVUlE
ZWxlZ2F0ZTo6YWRkQ3VzdG9tTWVudURyYXdpbmdEYXRhKToKKyAgICAgICAgKFVJRGVsZWdhdGU6
OmNsZWFuVXBDdXN0b21NZW51RHJhd2luZ0RhdGEpOgorICAgICAgICAoVUlEZWxlZ2F0ZTo6d2Vi
Vmlld0xvc3RGb2N1cyk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvd2lu
L1dlYlZpZXdEZXN0cnVjdGlvbi5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpXZWJWaWV3
RGVzdHJ1Y3Rpb25XaXRoSG9zdFdpbmRvdzo6U2V0VXApOgorICAgICAgICAqIFdpbkxhdW5jaGVy
L1ByaW50V2ViVUlEZWxlZ2F0ZS5jcHA6CisgICAgICAgIChQcmludFdlYlVJRGVsZWdhdGU6OmRy
YXdIZWFkZXJJblJlY3QpOgorICAgICAgICAoUHJpbnRXZWJVSURlbGVnYXRlOjpkcmF3Rm9vdGVy
SW5SZWN0KToKKyAgICAgICAgKiBXaW5MYXVuY2hlci9QcmludFdlYlVJRGVsZWdhdGUuaDoKKyAg
ICAgICAgKFByaW50V2ViVUlEZWxlZ2F0ZTo6d2ViVmlld0ZpcnN0UmVzcG9uZGVyKToKKyAgICAg
ICAgKFByaW50V2ViVUlEZWxlZ2F0ZTo6bWFrZUZpcnN0UmVzcG9uZGVyKToKKyAgICAgICAgKFBy
aW50V2ViVUlEZWxlZ2F0ZTo6Y29udGV4dE1lbnVJdGVtc0ZvckVsZW1lbnQpOgorICAgICAgICAo
UHJpbnRXZWJVSURlbGVnYXRlOjp0cmFja0N1c3RvbVBvcHVwTWVudSk6CisgICAgICAgIChQcmlu
dFdlYlVJRGVsZWdhdGU6OmFkZEN1c3RvbU1lbnVEcmF3aW5nRGF0YSk6CisgICAgICAgIChQcmlu
dFdlYlVJRGVsZWdhdGU6OmNsZWFuVXBDdXN0b21NZW51RHJhd2luZ0RhdGEpOgorICAgICAgICAq
IFdpbkxhdW5jaGVyL1dpbkxhdW5jaGVyLmNwcDoKKyAgICAgICAgKFdpbkxhdW5jaGVyOjpwcmVw
YXJlVmlld3MpOgorICAgICAgICAqIFdpbkxhdW5jaGVyL1dpbkxhdW5jaGVyV2ViSG9zdC5oOgor
ICAgICAgICAoV2luTGF1bmNoZXJXZWJIb3N0OjpkaWRSZWNlaXZlSWNvbik6CisKIDIwMTQtMDgt
MTggIERhbmEgQnVya2FydCAgPGRidXJrYXJ0QGFwcGxlLmNvbT4KIAogICAgICAgICBNZXJnZSBy
MTcyNjgwCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vQWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXJXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9BY2Nl
c3NpYmlsaXR5Q29udHJvbGxlcldpbi5jcHAJKHJldmlzaW9uIDE3Mjk0NikKKysrIFRvb2xzL0R1
bXBSZW5kZXJUcmVlL3dpbi9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlcldpbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE2NCwxNCArMTY0LDE0IEBAIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgQWNjZXNz
aWJpbGl0eUNvbnQKICAgICBpZiAoIXZpZXdQcml2YXRlKQogICAgICAgICByZXR1cm4gMDsKIAot
ICAgIE9MRV9IQU5ETEUgd2ViVmlld1dpbmRvdzsKKyAgICBIV05EIHdlYlZpZXdXaW5kb3c7CiAg
ICAgaWYgKEZBSUxFRCh2aWV3UHJpdmF0ZS0+dmlld1dpbmRvdygmd2ViVmlld1dpbmRvdykpKQog
ICAgICAgICByZXR1cm4gMDsKIAogICAgIC8vIEdldCB0aGUgcm9vdCBhY2Nlc3NpYmxlIG9iamVj
dCBieSBxdWVyeWluZyBmb3IgdGhlIGFjY2Vzc2libGUgb2JqZWN0IGZvciB0aGUKICAgICAvLyBX
ZWJWaWV3J3Mgd2luZG93LgogICAgIENPTVB0cjxJQWNjZXNzaWJsZT4gcm9vdEFjY2Vzc2libGU7
Ci0gICAgaWYgKEZBSUxFRChBY2Nlc3NpYmxlT2JqZWN0RnJvbVdpbmRvdyhyZWludGVycHJldF9j
YXN0PEhXTkQ+KHdlYlZpZXdXaW5kb3cpLCBzdGF0aWNfY2FzdDxEV09SRD4oT0JKSURfQ0xJRU5U
KSwgX191dWlkb2YoSUFjY2Vzc2libGUpLCByZWludGVycHJldF9jYXN0PHZvaWQqKj4oJnJvb3RB
Y2Nlc3NpYmxlKSkpKQorICAgIGlmIChGQUlMRUQoQWNjZXNzaWJsZU9iamVjdEZyb21XaW5kb3co
d2ViVmlld1dpbmRvdywgc3RhdGljX2Nhc3Q8RFdPUkQ+KE9CSklEX0NMSUVOVCksIF9fdXVpZG9m
KElBY2Nlc3NpYmxlKSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZyb290QWNjZXNzaWJsZSkp
KSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICByZXR1cm4gcm9vdEFjY2Vzc2libGU7CkluZGV4
OiBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAJKHJldmlzaW9u
IDE3Mjk0NikKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTg3OCw3ICs4NzgsNyBAQCBzdGF0aWMgdm9pZCByZXNldFdlYlZp
ZXdUb0NvbnNpc3RlbnRTdGF0CiAgICAgICAgIHJldHVybjsKIAogICAgIEhXTkQgdmlld1dpbmRv
dzsKLSAgICBpZiAoU1VDQ0VFREVEKHdlYlZpZXdQcml2YXRlLT52aWV3V2luZG93KHJlaW50ZXJw
cmV0X2Nhc3Q8T0xFX0hBTkRMRSo+KCZ2aWV3V2luZG93KSkpICYmIHZpZXdXaW5kb3cpCisgICAg
aWYgKFNVQ0NFRURFRCh3ZWJWaWV3UHJpdmF0ZS0+dmlld1dpbmRvdygmdmlld1dpbmRvdykpICYm
IHZpZXdXaW5kb3cpCiAgICAgICAgIFNldEZvY3VzKHZpZXdXaW5kb3cpOwogCiAgICAgd2ViVmll
d1ByaXZhdGUtPmNsZWFyTWFpbkZyYW1lTmFtZSgpOwpAQCAtMTA2NSw3ICsxMDY1LDcgQEAgc3Rh
dGljIHZvaWQgcnVuVGVzdChjb25zdCBzdHJpbmcmIGlucHV0TAogICAgIFdvcmtRdWV1ZTo6c2hh
cmVkKCktPnNldEZyb3plbihmYWxzZSk7CiAKICAgICBIV05EIGhvc3RXaW5kb3c7Ci0gICAgd2Vi
Vmlldy0+aG9zdFdpbmRvdyhyZWludGVycHJldF9jYXN0PE9MRV9IQU5ETEUqPigmaG9zdFdpbmRv
dykpOworICAgIHdlYlZpZXctPmhvc3RXaW5kb3coJmhvc3RXaW5kb3cpOwogCiAgICAgQ09NUHRy
PElXZWJNdXRhYmxlVVJMUmVxdWVzdD4gcmVxdWVzdDsKICAgICBIUkVTVUxUIGhyID0gV2ViS2l0
Q3JlYXRlSW5zdGFuY2UoQ0xTSURfV2ViTXV0YWJsZVVSTFJlcXVlc3QsIDAsIElJRF9JV2ViTXV0
YWJsZVVSTFJlcXVlc3QsICh2b2lkKiopJnJlcXVlc3QpOwpAQCAtMTE1MSw3ICsxMTUxLDcgQEAg
SVdlYlZpZXcqIGNyZWF0ZVdlYlZpZXdBbmRPZmZzY3JlZW5XaW5kbwogICAgICAgICByZXR1cm4g
MDsKICAgICB9CiAKLSAgICBpZiAoRkFJTEVEKHdlYlZpZXctPnNldEhvc3RXaW5kb3coKE9MRV9I
QU5ETEUpKFVMT05HNjQpaG9zdFdpbmRvdykpKQorICAgIGlmIChGQUlMRUQod2ViVmlldy0+c2V0
SG9zdFdpbmRvdyhob3N0V2luZG93KSkpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgUkVDVCBj
bGllbnRSZWN0OwpAQCAtMTE3NCw3ICsxMTc0LDcgQEAgSVdlYlZpZXcqIGNyZWF0ZVdlYlZpZXdB
bmRPZmZzY3JlZW5XaW5kbwogICAgICAgICByZXR1cm4gMDsKIAogICAgIEhXTkQgdmlld1dpbmRv
dzsKLSAgICBpZiAoRkFJTEVEKHZpZXdQcml2YXRlLT52aWV3V2luZG93KHJlaW50ZXJwcmV0X2Nh
c3Q8T0xFX0hBTkRMRSo+KCZ2aWV3V2luZG93KSkpKQorICAgIGlmIChGQUlMRUQodmlld1ByaXZh
dGUtPnZpZXdXaW5kb3coJnZpZXdXaW5kb3cpKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYg
KHdlYlZpZXdXaW5kb3cpCiAgICAgICAgICp3ZWJWaWV3V2luZG93ID0gdmlld1dpbmRvdzsKSW5k
ZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxlZ2F0ZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxlZ2F0ZS5oCShyZXZp
c2lvbiAxNzI5NDYpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVsZWdh
dGUuaAkod29ya2luZyBjb3B5KQpAQCAtNzgsMTAgKzc4LDcgQEAgcHVibGljOgogICAgICAgICAv
KiBbaW5dICovIElXZWJWaWV3ICp3ZWJWaWV3LAogICAgICAgICAvKiBbaW5dICovIElXZWJGcmFt
ZSAqZnJhbWUpOwogCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRpZFJl
Y2VpdmVJY29uKCAKLSAgICAgICAgLyogW2luXSAqLyBJV2ViVmlldyAqd2ViVmlldywKLSAgICAg
ICAgLyogW2luXSAqLyBPTEVfSEFORExFIGltYWdlLAotICAgICAgICAvKiBbaW5dICovIElXZWJG
cmFtZSAqZnJhbWUpIHsgcmV0dXJuIEVfTk9USU1QTDsgfSAKKyAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgZGlkUmVjZWl2ZUljb24oLyogW2luXSAqLyBJV2ViVmlldyosIC8q
IFtpbl0gKi8gSEJJVE1BUCwgLyogW2luXSAqLyBJV2ViRnJhbWUqKSB7IHJldHVybiBFX05PVElN
UEw7IH0gCiAKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlkRmluaXNo
TG9hZEZvckZyYW1lKCAKICAgICAgICAgLyogW2luXSAqLyBJV2ViVmlldyAqd2ViVmlldywKSW5k
ZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9UZXN0UnVubmVyV2luLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vVGVzdFJ1bm5lcldpbi5jcHAJKHJldmlzaW9u
IDE3Mjk0NikKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9UZXN0UnVubmVyV2luLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzA4LDExICs3MDgsMTEgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRX
aW5kb3dJc0tleShib29sIGZsYQogICAgIGlmIChGQUlMRUQod2ViVmlldy0+UXVlcnlJbnRlcmZh
Y2UoJnZpZXdQcml2YXRlKSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIE9MRV9IQU5ETEUgd2Vi
Vmlld1dpbmRvdzsKKyAgICBIV05EIHdlYlZpZXdXaW5kb3c7CiAgICAgaWYgKEZBSUxFRCh2aWV3
UHJpdmF0ZS0+dmlld1dpbmRvdygmd2ViVmlld1dpbmRvdykpKQogICAgICAgICByZXR1cm47CiAK
LSAgICA6OlNlbmRNZXNzYWdlKHJlaW50ZXJwcmV0X2Nhc3Q8SFdORD4od2ViVmlld1dpbmRvdyks
IGZsYWcgPyBXTV9TRVRGT0NVUyA6IFdNX0tJTExGT0NVUywgKFdQQVJBTSk6OkdldERlc2t0b3BX
aW5kb3coKSwgMCk7CisgICAgOjpTZW5kTWVzc2FnZSh3ZWJWaWV3V2luZG93LCBmbGFnID8gV01f
U0VURk9DVVMgOiBXTV9LSUxMRk9DVVMsIChXUEFSQU0pOjpHZXREZXNrdG9wV2luZG93KCksIDAp
OwogfQogCiBzdGF0aWMgY29uc3QgQ0ZUaW1lSW50ZXJ2YWwgd2FpdFRvRHVtcFdhdGNoZG9nSW50
ZXJ2YWwgPSAzMC4wOwpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1VJRGVsZWdhdGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9VSURlbGVnYXRlLmNw
cAkocmV2aXNpb24gMTcyOTQ2KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1VJRGVsZWdh
dGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDYsNyArMjA2LDcgQEAgSFJFU1VMVCBVSURlbGVn
YXRlOjpoYXNDdXN0b21NZW51SW1wbGVtZQogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxU
IFVJRGVsZWdhdGU6OnRyYWNrQ3VzdG9tUG9wdXBNZW51KElXZWJWaWV3KiAvKnNlbmRlciovLCBP
TEVfSEFORExFIC8qbWVudSovLCBMUFBPSU5UIC8qcG9pbnQqLykKK0hSRVNVTFQgVUlEZWxlZ2F0
ZTo6dHJhY2tDdXN0b21Qb3B1cE1lbnUoSVdlYlZpZXcqIC8qc2VuZGVyKi8sIEhNRU5VIC8qbWVu
dSovLCBMUFBPSU5UIC8qcG9pbnQqLykKIHsKICAgICAvLyBEbyBub3RoaW5nCiAgICAgcmV0dXJu
IFNfT0s7CkBAIC0yOTEsMTIgKzI5MSwxMiBAQCBIUkVTVUxUIFVJRGVsZWdhdGU6OndlYlZpZXdG
b290ZXJIZWlnaHQoCiAgICAgcmV0dXJuIEVfTk9USU1QTDsKIH0KIAotSFJFU1VMVCBVSURlbGVn
YXRlOjpkcmF3SGVhZGVySW5SZWN0KElXZWJWaWV3KiAvKndlYlZpZXcqLywgUkVDVCogLypyZWN0
Ki8sIE9MRV9IQU5ETEUgLypkcmF3aW5nQ29udGV4dCovKQorSFJFU1VMVCBVSURlbGVnYXRlOjpk
cmF3SGVhZGVySW5SZWN0KElXZWJWaWV3KiAvKndlYlZpZXcqLywgUkVDVCogLypyZWN0Ki8sIFVM
T05HX1BUUiAvKmRyYXdpbmdDb250ZXh0Ki8pCiB7CiAgICAgcmV0dXJuIEVfTk9USU1QTDsKIH0K
IAotSFJFU1VMVCBVSURlbGVnYXRlOjpkcmF3Rm9vdGVySW5SZWN0KElXZWJWaWV3KiAvKndlYlZp
ZXcqLywgUkVDVCogLypyZWN0Ki8sIE9MRV9IQU5ETEUgLypkcmF3aW5nQ29udGV4dCovLCBVSU5U
IC8qcGFnZUluZGV4Ki8sIFVJTlQgLypwYWdlQ291bnQqLykKK0hSRVNVTFQgVUlEZWxlZ2F0ZTo6
ZHJhd0Zvb3RlckluUmVjdChJV2ViVmlldyogLyp3ZWJWaWV3Ki8sIFJFQ1QqIC8qcmVjdCovLCBV
TE9OR19QVFIgLypkcmF3aW5nQ29udGV4dCovLCBVSU5UIC8qcGFnZUluZGV4Ki8sIFVJTlQgLypw
YWdlQ291bnQqLykKIHsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQpAQCAtNDUyLDcgKzQ1Miw3
IEBAIEhSRVNVTFQgVUlEZWxlZ2F0ZTo6Y3JlYXRlV2ViVmlld1dpdGhSZXEKIEhSRVNVTFQgVUlE
ZWxlZ2F0ZTo6d2ViVmlld0Nsb3NlKElXZWJWaWV3KiBzZW5kZXIpCiB7CiAgICAgSFdORCBob3N0
V2luZG93OwotICAgIHNlbmRlci0+aG9zdFdpbmRvdyhyZWludGVycHJldF9jYXN0PE9MRV9IQU5E
TEUqPigmaG9zdFdpbmRvdykpOworICAgIHNlbmRlci0+aG9zdFdpbmRvdygmaG9zdFdpbmRvdyk7
CiAgICAgRGVzdHJveVdpbmRvdyhob3N0V2luZG93KTsKICAgICByZXR1cm4gU19PSzsKIH0KQEAg
LTQ2MCw3ICs0NjAsNyBAQCBIUkVTVUxUIFVJRGVsZWdhdGU6OndlYlZpZXdDbG9zZShJV2ViVmll
CiBIUkVTVUxUIFVJRGVsZWdhdGU6OndlYlZpZXdGb2N1cyhJV2ViVmlldyogc2VuZGVyKQogewog
ICAgIEhXTkQgaG9zdFdpbmRvdzsKLSAgICBzZW5kZXItPmhvc3RXaW5kb3cocmVpbnRlcnByZXRf
Y2FzdDxPTEVfSEFORExFKj4oJmhvc3RXaW5kb3cpKTsKKyAgICBzZW5kZXItPmhvc3RXaW5kb3co
Jmhvc3RXaW5kb3cpOwogICAgIFNldEZvcmVncm91bmRXaW5kb3coaG9zdFdpbmRvdyk7CiAgICAg
cmV0dXJuIFNfT0s7IAogfQpAQCAtNTQwLDcgKzU0MCw3IEBAIEhSRVNVTFQgVUlEZWxlZ2F0ZTo6
d2ViVmlld0Nsb3NpbmcoSVdlYlYKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogCi1IUkVTVUxU
IFVJRGVsZWdhdGU6OndlYlZpZXdTZXRDdXJzb3IoSVdlYlZpZXcqIC8qc2VuZGVyKi8sIE9MRV9I
QU5ETEUgLypjdXJzb3IqLykKK0hSRVNVTFQgVUlEZWxlZ2F0ZTo6d2ViVmlld1NldEN1cnNvcihJ
V2ViVmlldyogLypzZW5kZXIqLywgSENVUlNPUiAvKmN1cnNvciovKQogewogICAgIHJldHVybiBF
X05PVElNUEw7CiB9CkBAIC01NjgsNyArNTY4LDcgQEAgSFJFU1VMVCBVSURlbGVnYXRlOjpjcmVh
dGVXZWJWaWV3V2l0aFJlcQogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAKLUhSRVNVTFQgVUlE
ZWxlZ2F0ZTo6ZHJhd0JhY2tncm91bmQoSVdlYlZpZXcqIC8qc2VuZGVyKi8sIE9MRV9IQU5ETEUg
aGRjLCBjb25zdCBSRUNUKiBkaXJ0eVJlY3QpCitIUkVTVUxUIFVJRGVsZWdhdGU6OmRyYXdCYWNr
Z3JvdW5kKElXZWJWaWV3KiAvKnNlbmRlciovLCBIREMgLypoZGMqLywgY29uc3QgUkVDVCogLypk
aXJ0eVJlY3QqLykKIHsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQpJbmRleDogVG9vbHMvRHVt
cFJlbmRlclRyZWUvd2luL1VJRGVsZWdhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVu
ZGVyVHJlZS93aW4vVUlEZWxlZ2F0ZS5oCShyZXZpc2lvbiAxNzI5NDYpCisrKyBUb29scy9EdW1w
UmVuZGVyVHJlZS93aW4vVUlEZWxlZ2F0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAwNyBBcHBsZSBJbmMuICBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3LCAyMDE0
IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTY2LDEzICs2Niw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgd2ViVmlld1VuZm9jdXMoIAogICAgICAgICAvKiBbaW5dICovIElX
ZWJWaWV3ICpzZW5kZXIpOwogCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IHdlYlZpZXdGaXJzdFJlc3BvbmRlciggCi0gICAgICAgIC8qIFtpbl0gKi8gSVdlYlZpZXcgKnNl
bmRlciwKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBPTEVfSEFORExFICpyZXNwb25kZXIp
IHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSB3ZWJWaWV3Rmlyc3RSZXNwb25kZXIoSVdlYlZpZXcqLCBIV05EKikgeyByZXR1cm4gRV9O
T1RJTVBMOyB9CiAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbWFrZUZp
cnN0UmVzcG9uZGVyKCAKLSAgICAgICAgLyogW2luXSAqLyBJV2ViVmlldyAqc2VuZGVyLAotICAg
ICAgICAvKiBbaW5dICovIE9MRV9IQU5ETEUgcmVzcG9uZGVyKSB7IHJldHVybiBFX05PVElNUEw7
IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbWFrZUZpcnN0UmVzcG9u
ZGVyKElXZWJWaWV3KiwgSFdORCkgeyByZXR1cm4gRV9OT1RJTVBMOyB9CiAKICAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0U3RhdHVzVGV4dCggCiAgICAgICAgIC8qIFtp
bl0gKi8gSVdlYlZpZXcgKnNlbmRlciwKQEAgLTE1MiwxMSArMTQ4LDcgQEAgcHVibGljOgogICAg
ICAgICAvKiBbaW5dICovIElQcm9wZXJ0eUJhZyAqZWxlbWVudEluZm9ybWF0aW9uLAogICAgICAg
ICAvKiBbaW5dICovIFVJTlQgbW9kaWZpZXJGbGFncykgeyByZXR1cm4gRV9OT1RJTVBMOyB9CiAK
LSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY29udGV4dE1lbnVJdGVtc0Zv
ckVsZW1lbnQoIAotICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3ICpzZW5kZXIsCi0gICAgICAg
IC8qIFtpbl0gKi8gSVByb3BlcnR5QmFnICplbGVtZW50LAotICAgICAgICAvKiBbaW5dICovIE9M
RV9IQU5ETEUgZGVmYXVsdEl0ZW1zLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIE9MRV9I
QU5ETEUgKnJlc3VsdE1lbnUpIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjb250ZXh0TWVudUl0ZW1zRm9yRWxlbWVudChJV2ViVmll
dyosIElQcm9wZXJ0eUJhZyosIEhNRU5VLCBITUVOVSopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQog
CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHZhbGlkYXRlVXNlckludGVy
ZmFjZUl0ZW0oIAogICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3ICp3ZWJWaWV3LApAQCAtMTk5
LDEwICsxOTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIGhhc0N1c3RvbU1lbnVJbXBsZW1lbnRhdGlvbiggCiAgICAgICAgIC8qIFtyZXR2YWxdW291
dF0gKi8gQk9PTCAqaGFzQ3VzdG9tTWVudXMpOwogICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSB0cmFja0N1c3RvbVBvcHVwTWVudSggCi0gICAgICAgIC8qIFtpbl0g
Ki8gSVdlYlZpZXcgKnNlbmRlciwKLSAgICAgICAgLyogW2luXSAqLyBPTEVfSEFORExFIG1lbnUs
Ci0gICAgICAgIC8qIFtpbl0gKi8gTFBQT0lOVCBwb2ludCk7CisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIHRyYWNrQ3VzdG9tUG9wdXBNZW51KC8qIFtpbl0gKi8gSVdlYlZp
ZXcqIHNlbmRlciwgLyogW2luXSAqLyBITUVOVSwgLyogW2luXSAqLyBMUFBPSU5UKTsKICAgICAg
ICAKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbWVhc3VyZUN1c3RvbU1l
bnVJdGVtKCAKICAgICAgICAgLyogW2luXSAqLyBJV2ViVmlldyAqc2VuZGVyLApAQCAtMjEyLDEz
ICsyMDEsOSBAQCBwdWJsaWM6CiAgICAgICAgIC8qIFtpbl0gKi8gSVdlYlZpZXcgKnNlbmRlciwK
ICAgICAgICAgLyogW2luXSAqLyB2b2lkICpkcmF3SXRlbSkgeyByZXR1cm4gRV9OT1RJTVBMOyB9
CiAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYWRkQ3VzdG9tTWVudURy
YXdpbmdEYXRhKCAKLSAgICAgICAgLyogW2luXSAqLyBJV2ViVmlldyAqc2VuZGVyLAotICAgICAg
ICAvKiBbaW5dICovIE9MRV9IQU5ETEUgbWVudSkgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGFkZEN1c3RvbU1lbnVEcmF3aW5nRGF0
YShJV2ViVmlldyosIEhNRU5VKSB7IHJldHVybiBFX05PVElNUEw7IH0KIAotICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjbGVhblVwQ3VzdG9tTWVudURyYXdpbmdEYXRhKCAK
LSAgICAgICAgLyogW2luXSAqLyBJV2ViVmlldyAqc2VuZGVyLAotICAgICAgICAvKiBbaW5dICov
IE9MRV9IQU5ETEUgbWVudSkgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIGNsZWFuVXBDdXN0b21NZW51RHJhd2luZ0RhdGEoSVdlYlZp
ZXcqLCBITUVOVSkgeyByZXR1cm4gRV9OT1RJTVBMOyB9CiAKICAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgY2FuVGFrZUZvY3VzKCAKICAgICAgICAgLyogW2luXSAqLyBJV2Vi
VmlldyAqc2VuZGVyLApAQCAtMjY2LDE3ICsyNTEsOSBAQCBwdWJsaWM6CiAgICAgICAgIC8qIFtp
bl0gKi8gSVdlYlZpZXcgKndlYlZpZXcsCiAgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gZmxv
YXQgKnJlc3VsdCk7CiAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IGRyYXdIZWFkZXJJblJlY3QoIAotICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3ICp3ZWJWaWV3
LAotICAgICAgICAvKiBbaW5dICovIFJFQ1QgKnJlY3QsCi0gICAgICAgIC8qIFtpbl0gKi8gT0xF
X0hBTkRMRSBkcmF3aW5nQ29udGV4dCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIGRyYXdIZWFkZXJJblJlY3QoSVdlYlZpZXcqLCBSRUNUKiwgVUxPTkdfUFRSIGRyYXdp
bmdDb250ZXh0KTsKICAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
ZHJhd0Zvb3RlckluUmVjdCggCi0gICAgICAgIC8qIFtpbl0gKi8gSVdlYlZpZXcgKndlYlZpZXcs
Ci0gICAgICAgIC8qIFtpbl0gKi8gUkVDVCAqcmVjdCwKLSAgICAgICAgLyogW2luXSAqLyBPTEVf
SEFORExFIGRyYXdpbmdDb250ZXh0LAotICAgICAgICAvKiBbaW5dICovIFVJTlQgcGFnZUluZGV4
LAotICAgICAgICAvKiBbaW5dICovIFVJTlQgcGFnZUNvdW50KTsKKyAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgZHJhd0Zvb3RlckluUmVjdChJV2ViVmlldyosIFJFQ1QqLCBV
TE9OR19QVFIgZHJhd2luZ0NvbnRleHQsIFVJTlQgcGFnZUluZGV4LCBVSU5UIHBhZ2VDb3VudCk7
CiAgICAgCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdlYlZpZXdQcmlu
dGluZ01hcmdpblJlY3QoIAogICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3ICp3ZWJWaWV3LApA
QCAtMzI3LDcgKzMwNCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBjcmVhdGVXZWJWaWV3V2l0aFJlcXVlc3QoSVdlYlZpZXcqIHNlbmRlciwgSVdl
YlVSTFJlcXVlc3QqIHJlcXVlc3QsIElQcm9wZXJ0eUJhZyogd2luZG93RmVhdHVyZXMsIElXZWJW
aWV3KiogbmV3V2ViVmlldyk7CiAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgZHJhd0JhY2tncm91bmQoSVdlYlZpZXcqIHNlbmRlciwgT0xFX0hBTkRMRSBoZGMsIGNvbnN0
IFJFQ1QqIGRpcnR5UmVjdCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IGRyYXdCYWNrZ3JvdW5kKElXZWJWaWV3KiBzZW5kZXIsIEhEQywgY29uc3QgUkVDVCogZGlydHlS
ZWN0KTsKIAogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkZWNpZGVQb2xp
Y3lGb3JHZW9sb2NhdGlvblJlcXVlc3QoSVdlYlZpZXcqIHNlbmRlciwgSVdlYkZyYW1lKiBmcmFt
ZSwgSVdlYlNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIElXZWJHZW9sb2NhdGlvblBvbGljeUxpc3Rl
bmVyKiBsaXN0ZW5lcik7CiAKQEAgLTM1OSw5ICszMzYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdlYlZpZXdSZWNlaXZlZEZvY3VzKCAKICAg
ICAgICAgLyogW2luXSAqLyBJV2ViVmlldyAqc2VuZGVyKSB7IHJldHVybiBFX05PVElNUEw7IH0K
ICAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd2ViVmlld0xvc3RG
b2N1cyggCi0gICAgICAgIC8qIFtpbl0gKi8gSVdlYlZpZXcgKnNlbmRlciwKLSAgICAgICAgLyog
W2luXSAqLyBPTEVfSEFORExFIGxvc2VGb2N1c1RvKSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd2ViVmlld0xvc3RGb2N1cyhJV2Vi
VmlldyosIEhXTkQpIHsgcmV0dXJuIEVfTk9USU1QTDsgfQogCiAgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIGRvRHJhZ0Ryb3AoIAogICAgICAgICAvKiBbaW5dICovIElXZWJW
aWV3ICpzZW5kZXIsCkBAIC0zOTMsOSArMzY4LDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3ZWJWaWV3Q2xvc2luZyggCiAgICAgICAgIC8qIFtp
bl0gKi8gSVdlYlZpZXcgKnNlbmRlcik7CiAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIHdlYlZpZXdTZXRDdXJzb3IoIAotICAgICAgICAvKiBbaW5dICovIElXZWJW
aWV3ICpzZW5kZXIsCi0gICAgICAgIC8qIFtpbl0gKi8gT0xFX0hBTkRMRSBjdXJzb3IpOworICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3ZWJWaWV3U2V0Q3Vyc29yKElXZWJW
aWV3KiBzZW5kZXIsIEhDVVJTT1IpOwogICAgIAogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSB3ZWJWaWV3RGlkSW52YWxpZGF0ZSggCiAgICAgICAgIC8qIFtpbl0gKi8gSVdl
YlZpZXcgKnNlbmRlcik7CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC93
aW4vV2ViVmlld0Rlc3RydWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdC93aW4vV2ViVmlld0Rlc3RydWN0aW9uLmNwcAkocmV2aXNpb24gMTcy
OTQ2KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvd2luL1dlYlZpZXdEZXN0
cnVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgwLDEyICs4MCwxMiBAQCB2b2lkIFdlYlZp
ZXdEZXN0cnVjdGlvbldpdGhIb3N0V2luZG93OjpTCiAgICAgV2ViVmlld0Rlc3RydWN0aW9uOjpT
ZXRVcCgpOwogCiAgICAgRVhQRUNUX1RSVUUobV93aW5kb3cuaW5pdGlhbGl6ZSgpKTsKLSAgICBF
WFBFQ1RfSFJFU1VMVF9TVUNDRUVERUQobV93ZWJWaWV3LT5zZXRIb3N0V2luZG93KHJlaW50ZXJw
cmV0X2Nhc3Q8T0xFX0hBTkRMRT4obV93aW5kb3cud2luZG93KCkpKSk7CisgICAgRVhQRUNUX0hS
RVNVTFRfU1VDQ0VFREVEKG1fd2ViVmlldy0+c2V0SG9zdFdpbmRvdyhtX3dpbmRvdy53aW5kb3co
KSkpOwogICAgIEVYUEVDVF9IUkVTVUxUX1NVQ0NFRURFRChtX3dlYlZpZXctPmluaXRXaXRoRnJh
bWUobV93aW5kb3cuY2xpZW50UmVjdCgpLCAwLCAwKSk7CiAKICAgICBDT01QdHI8SVdlYlZpZXdQ
cml2YXRlPiB2aWV3UHJpdmF0ZShRdWVyeSwgbV93ZWJWaWV3KTsKICAgICBBU1NFUlRfTk9UX05V
TEwodmlld1ByaXZhdGUpOwotICAgIEVYUEVDVF9IUkVTVUxUX1NVQ0NFRURFRCh2aWV3UHJpdmF0
ZS0+dmlld1dpbmRvdyhyZWludGVycHJldF9jYXN0PE9MRV9IQU5ETEUqPigmbV92aWV3V2luZG93
KSkpOworICAgIEVYUEVDVF9IUkVTVUxUX1NVQ0NFRURFRCh2aWV3UHJpdmF0ZS0+dmlld1dpbmRv
dygmbV92aWV3V2luZG93KSk7CiAgICAgRVhQRUNUX1RSVUUoOjpJc1dpbmRvdyhtX3ZpZXdXaW5k
b3cpKTsKIH0KIApJbmRleDogVG9vbHMvV2luTGF1bmNoZXIvUHJpbnRXZWJVSURlbGVnYXRlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9XaW5MYXVuY2hlci9QcmludFdlYlVJRGVsZWdhdGUuY3Bw
CShyZXZpc2lvbiAxNzI5NDYpCisrKyBUb29scy9XaW5MYXVuY2hlci9QcmludFdlYlVJRGVsZWdh
dGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwOSwgMjAxMyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMDksIDIwMTMtMjAxNCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDkgQnJlbnQgRnVsZ2hhbS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
ICAqIENvcHlyaWdodCAoQykgMjAxMyBBbGV4IENocmlzdGVuc2VuLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgogICoKQEAgLTEyLDcgKzEyLDYgQEAKICAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKICAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCiAgKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCiAgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQogICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCiAgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgpAQCAtMTY0LDEw
ICsxNjMsNyBAQCBIUkVTVUxUIFByaW50V2ViVUlEZWxlZ2F0ZTo6d2ViVmlld0Zvb3RlCiAgICAg
cmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgUHJpbnRXZWJVSURlbGVnYXRlOjpkcmF3SGVhZGVy
SW5SZWN0KAotICAgICAgICAgICAgLyogW2luXSAqLyBJV2ViVmlldyogd2ViVmlldywKLSAgICAg
ICAgICAgIC8qIFtpbl0gKi8gUkVDVCogcmVjdCwKLSAgICAgICAgICAgIC8qIFtpbl0gKi8gT0xF
X0hBTkRMRSBkcmF3aW5nQ29udGV4dCkKK0hSRVNVTFQgUHJpbnRXZWJVSURlbGVnYXRlOjpkcmF3
SGVhZGVySW5SZWN0KElXZWJWaWV3KiB3ZWJWaWV3LCBSRUNUKiByZWN0LCBVTE9OR19QVFIgZHJh
d2luZ0NvbnRleHQpCiB7CiAgICAgaWYgKCF3ZWJWaWV3IHx8ICFyZWN0KQogICAgICAgICByZXR1
cm4gRV9QT0lOVEVSOwpAQCAtMTk2LDEyICsxOTIsNyBAQCBIUkVTVUxUIFByaW50V2ViVUlEZWxl
Z2F0ZTo6ZHJhd0hlYWRlckluCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgUHJpbnRX
ZWJVSURlbGVnYXRlOjpkcmF3Rm9vdGVySW5SZWN0KAotICAgICAgICAgICAgLyogW2luXSAqLyBJ
V2ViVmlldyogd2ViVmlldywKLSAgICAgICAgICAgIC8qIFtpbl0gKi8gUkVDVCogcmVjdCwKLSAg
ICAgICAgICAgIC8qIFtpbl0gKi8gT0xFX0hBTkRMRSBkcmF3aW5nQ29udGV4dCwKLSAgICAgICAg
ICAgIC8qIFtpbl0gKi8gVUlOVCBwYWdlSW5kZXgsCi0gICAgICAgICAgICAvKiBbaW5dICovIFVJ
TlQgcGFnZUNvdW50KQorSFJFU1VMVCBQcmludFdlYlVJRGVsZWdhdGU6OmRyYXdGb290ZXJJblJl
Y3QoSVdlYlZpZXcqIHdlYlZpZXcsIFJFQ1QqIHJlY3QsIFVMT05HX1BUUiBkcmF3aW5nQ29udGV4
dCwgVUlOVCBwYWdlSW5kZXgsIFVJTlQgcGFnZUNvdW50KQogewogICAgIGlmICghd2ViVmlldyB8
fCAhcmVjdCkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKSW5kZXg6IFRvb2xzL1dpbkxhdW5j
aGVyL1ByaW50V2ViVUlEZWxlZ2F0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dpbkxhdW5jaGVy
L1ByaW50V2ViVUlEZWxlZ2F0ZS5oCShyZXZpc2lvbiAxNzI5NDYpCisrKyBUb29scy9XaW5MYXVu
Y2hlci9QcmludFdlYlVJRGVsZWdhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDE0IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOSBCcmVudCBGdWxnaGFtLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNDMsOCArNDMsOCBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdlYlZpZXdDbG9zZShJV2ViVmlldyop
IHsgcmV0dXJuIEVfTk9USU1QTDsgfQogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSB3ZWJWaWV3Rm9jdXMoSVdlYlZpZXcqKSB7IHJldHVybiBFX05PVElNUEw7IH0KICAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd2ViVmlld1VuZm9jdXMoSVdlYlZpZXcq
KSB7IHJldHVybiBFX05PVElNUEw7IH0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgd2ViVmlld0ZpcnN0UmVzcG9uZGVyKElXZWJWaWV3KiwgT0xFX0hBTkRMRSopICB7IHJl
dHVybiBFX05PVElNUEw7IH0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
bWFrZUZpcnN0UmVzcG9uZGVyKElXZWJWaWV3KiwgT0xFX0hBTkRMRSkgeyByZXR1cm4gRV9OT1RJ
TVBMOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdlYlZpZXdGaXJz
dFJlc3BvbmRlcihJV2ViVmlldyosIEhXTkQqKSAgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG1ha2VGaXJzdFJlc3BvbmRlcihJV2Vi
VmlldyosIEhXTkQpIHsgcmV0dXJuIEVfTk9USU1QTDsgfQogICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBzZXRTdGF0dXNUZXh0KElXZWJWaWV3KiwgQlNUUikgeyByZXR1cm4g
RV9OT1RJTVBMOyB9CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdlYlZp
ZXdTdGF0dXNUZXh0KElXZWJWaWV3KiwgQlNUUiopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQogICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3ZWJWaWV3QXJlVG9vbGJhcnNWaXNp
YmxlKElXZWJWaWV3KiwgQk9PTCopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQpAQCAtNjMsNyArNjMs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJ1bkJl
Zm9yZVVubG9hZENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlKElXZWJWaWV3KiwgQlNUUiwgSVdlYkZy
YW1lKiwgQk9PTCopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQogICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBydW5PcGVuUGFuZWxGb3JGaWxlQnV0dG9uV2l0aFJlc3VsdExpc3Rl
bmVyKElXZWJWaWV3KiwgSVdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyKikgeyByZXR1cm4gRV9O
T1RJTVBMOyB9CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG1vdXNlRGlk
TW92ZU92ZXJFbGVtZW50KElXZWJWaWV3KiwgSVByb3BlcnR5QmFnKiwgVUlOVCkgeyByZXR1cm4g
RV9OT1RJTVBMOyB9Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNvbnRl
eHRNZW51SXRlbXNGb3JFbGVtZW50KElXZWJWaWV3KiwgSVByb3BlcnR5QmFnKiwgT0xFX0hBTkRM
RSwgT0xFX0hBTkRMRSopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBjb250ZXh0TWVudUl0ZW1zRm9yRWxlbWVudChJV2ViVmlldyos
IElQcm9wZXJ0eUJhZyosIEhNRU5VLCBITUVOVSopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQogICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB2YWxpZGF0ZVVzZXJJbnRlcmZhY2VJ
dGVtKElXZWJWaWV3KiwgVUlOVCwgQk9PTCwgQk9PTCopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQog
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzaG91bGRQZXJmb3JtQWN0aW9u
KElXZWJWaWV3KiwgVUlOVCwgVUlOVCkgeyByZXR1cm4gRV9OT1RJTVBMOyB9CiAgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2tGb3JE
cmFnZ2luZ0luZm8oSVdlYlZpZXcqLCBJRGF0YU9iamVjdCosIFdlYkRyYWdEZXN0aW5hdGlvbkFj
dGlvbiopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQpAQCAtNzIsMTEgKzcyLDExIEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd2lsbFBlcmZvcm1EcmFnU291
cmNlQWN0aW9uKElXZWJWaWV3KiwgV2ViRHJhZ1NvdXJjZUFjdGlvbiwgTFBQT0lOVCwgSURhdGFP
YmplY3QqLCBJRGF0YU9iamVjdCoqKSB7IHJldHVybiBFX05PVElNUEw7IH0KICAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoSVdlYlZp
ZXcqLCB2b2lkKiwgSVByb3BlcnR5QmFnKikgeyByZXR1cm4gRV9OT1RJTVBMOyB9CiAgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGhhc0N1c3RvbU1lbnVJbXBsZW1lbnRhdGlv
bihCT09MKikgeyByZXR1cm4gRV9OT1RJTVBMOyB9Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIHRyYWNrQ3VzdG9tUG9wdXBNZW51KElXZWJWaWV3KiwgT0xFX0hBTkRMRSwg
TFBQT0lOVCkgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIHRyYWNrQ3VzdG9tUG9wdXBNZW51KElXZWJWaWV3KiwgSE1FTlUsIExQUE9J
TlQpIHsgcmV0dXJuIEVfTk9USU1QTDsgfQogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBtZWFzdXJlQ3VzdG9tTWVudUl0ZW0oSVdlYlZpZXcqLCB2b2lkKikgeyByZXR1cm4g
RV9OT1RJTVBMOyB9CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRyYXdD
dXN0b21NZW51SXRlbShJV2ViVmlldyosIHZvaWQqKSB7IHJldHVybiBFX05PVElNUEw7IH0KLSAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYWRkQ3VzdG9tTWVudURyYXdpbmdE
YXRhKElXZWJWaWV3KiwgT0xFX0hBTkRMRSkgeyByZXR1cm4gRV9OT1RJTVBMOyB9Ci0gICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNsZWFuVXBDdXN0b21NZW51RHJhd2luZ0Rh
dGEoSVdlYlZpZXcqLCBPTEVfSEFORExFKSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYWRkQ3VzdG9tTWVudURyYXdpbmdEYXRhKElX
ZWJWaWV3KiwgSE1FTlUpIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBjbGVhblVwQ3VzdG9tTWVudURyYXdpbmdEYXRhKElXZWJWaWV3
KiwgSE1FTlUpIHsgcmV0dXJuIEVfTk9USU1QTDsgfQogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBjYW5UYWtlRm9jdXMoSVdlYlZpZXcqLCBCT09MLCBCT09MKikgeyByZXR1
cm4gRV9OT1RJTVBMOyB9CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHRh
a2VGb2N1cyhJV2ViVmlldyosIEJPT0wpIHsgcmV0dXJuIEVfTk9USU1QTDsgfQogICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZWdpc3RlclVuZG9XaXRoVGFyZ2V0KElXZWJV
bmRvVGFyZ2V0KiwgQlNUUiwgSVVua25vd24qKSB7IHJldHVybiBFX05PVElNUEw7IH0KQEAgLTkw
LDggKzkwLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBmdHBEaXJlY3RvcnlUZW1wbGF0ZVBhdGgoSVdlYlZpZXcqLCBCU1RSKikgeyByZXR1cm4gRV9O
T1RJTVBMOyB9CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdlYlZpZXdI
ZWFkZXJIZWlnaHQoSVdlYlZpZXcqLCBmbG9hdCopOwogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSB3ZWJWaWV3Rm9vdGVySGVpZ2h0KElXZWJWaWV3KiwgZmxvYXQqKTsKLSAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZHJhd0hlYWRlckluUmVjdChJV2Vi
VmlldyosIFJFQ1QqLCBPTEVfSEFORExFKTsKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgZHJhd0Zvb3RlckluUmVjdChJV2ViVmlldyosIFJFQ1QqLCBPTEVfSEFORExFLCBV
SU5ULCBVSU5UKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZHJhd0hl
YWRlckluUmVjdChJV2ViVmlldyosIFJFQ1QqLCBVTE9OR19QVFIpOworICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkcmF3Rm9vdGVySW5SZWN0KElXZWJWaWV3KiwgUkVDVCos
IFVMT05HX1BUUiwgVUlOVCwgVUlOVCk7CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIHdlYlZpZXdQcmludGluZ01hcmdpblJlY3QoSVdlYlZpZXcqLCBSRUNUKik7CiAgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNhblJ1bk1vZGFsKElXZWJWaWV3Kiwg
Qk9PTCopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBjcmVhdGVNb2RhbERpYWxvZyhJV2ViVmlldyosIElXZWJVUkxSZXF1ZXN0Kiwg
SVdlYlZpZXcqKikgeyByZXR1cm4gRV9OT1RJTVBMOyB9CkluZGV4OiBUb29scy9XaW5MYXVuY2hl
ci9XaW5MYXVuY2hlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2luTGF1bmNoZXIvV2luTGF1
bmNoZXIuY3BwCShyZXZpc2lvbiAxNzI5NDYpCisrKyBUb29scy9XaW5MYXVuY2hlci9XaW5MYXVu
Y2hlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDcgKzg2LDcgQEAgSFJFU1VMVCBXaW5MYXVu
Y2hlcjo6cHJlcGFyZVZpZXdzKEhXTkQgbQogICAgIGlmICghbV93ZWJWaWV3KQogICAgICAgICBy
ZXR1cm4gRV9GQUlMOwogCi0gICAgSFJFU1VMVCBociA9IG1fd2ViVmlldy0+c2V0SG9zdFdpbmRv
dyhyZWludGVycHJldF9jYXN0PE9MRV9IQU5ETEU+KG1haW5XbmQpKTsKKyAgICBIUkVTVUxUIGhy
ID0gbV93ZWJWaWV3LT5zZXRIb3N0V2luZG93KG1haW5XbmQpOwogICAgIGlmIChGQUlMRUQoaHIp
KQogICAgICAgICByZXR1cm4gaHI7CiAKQEAgLTExMSw3ICsxMTEsNyBAQCBIUkVTVUxUIFdpbkxh
dW5jaGVyOjpwcmVwYXJlVmlld3MoSFdORCBtCiAgICAgaWYgKEZBSUxFRChocikpCiAgICAgICAg
IHJldHVybiBocjsKIAotICAgIGhyID0gbV93ZWJWaWV3UHJpdmF0ZS0+dmlld1dpbmRvdyhyZWlu
dGVycHJldF9jYXN0PE9MRV9IQU5ETEUqPigmdmlld0h3bmQpKTsKKyAgICBociA9IG1fd2ViVmll
d1ByaXZhdGUtPnZpZXdXaW5kb3coJnZpZXdId25kKTsKIAogICAgIHJldHVybiBocjsKIH0KSW5k
ZXg6IFRvb2xzL1dpbkxhdW5jaGVyL1dpbkxhdW5jaGVyV2ViSG9zdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1dpbkxhdW5jaGVyL1dpbkxhdW5jaGVyV2ViSG9zdC5oCShyZXZpc2lvbiAxNzI5NDYp
CisrKyBUb29scy9XaW5MYXVuY2hlci9XaW5MYXVuY2hlcldlYkhvc3QuaAkod29ya2luZyBjb3B5
KQpAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIGRpZFJlY2VpdmVUaXRsZShJV2ViVmlldyosIEJTVFIgdGl0bGUsIElX
ZWJGcmFtZSopIHsgcmV0dXJuIFNfT0s7IH0KICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgZGlkQ2hhbmdlSWNvbnMoSVdlYlZpZXcqLCBJV2ViRnJhbWUqKSB7IHJldHVybiBT
X09LOyB9Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRpZFJlY2VpdmVJ
Y29uKElXZWJWaWV3KiwgT0xFX0hBTkRMRSBoQml0bWFwLCBJV2ViRnJhbWUqKSB7IHJldHVybiBT
X09LOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRpZFJlY2VpdmVJ
Y29uKElXZWJWaWV3KiwgSEJJVE1BUCwgSVdlYkZyYW1lKikgeyByZXR1cm4gU19PSzsgfQogICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkaWRGaW5pc2hMb2FkRm9yRnJhbWUo
SVdlYlZpZXcqLCBJV2ViRnJhbWUqKTsgICAKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgZGlkRmFpbExvYWRXaXRoRXJyb3IoSVdlYlZpZXcqLCBJV2ViRXJyb3IqLCBJV2Vi
RnJhbWUqKSB7IHJldHVybiBTX09LOyB9CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIGRpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZUZvckZyYW1lKElXZWJWaWV3KiwgSVdl
YkZyYW1lKikgeyByZXR1cm4gU19PSzsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237173</attachid>
            <date>2014-08-26 14:21:55 -0700</date>
            <delta_ts>2014-08-26 14:28:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-136258-20140826142250.patch</filename>
            <type>text/plain</type>
            <size>89408</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3Mjk3MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDE0LTA4LTI2ICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtXaW5dIFdlYktpdCBJREwg
aW5jb3JyZWN0bHkgcGFzc2VzIEhXTkQgYXMgT0xFX0hBTkRMRQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2MjU4CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8xODEzNDEzOD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBdm9pZCAzMi82NC1iaXQgdHJ1bmNhdGlvbiBieSBwcmV2ZW50aW5nIDY0LWJpdCBI
V05EIChhbmQgb3RoZXIpCisgICAgICAgIHZhbHVlcyBmcm9tIHBhc3NpbmcgdGhyb3VnaCB0aGUg
MzItYml0IE9MRV9IQU5ETEUgZGF0YSB0eXBlLgorCisgICAgICAgICogcGxhdGZvcm0vd2luL1dp
bmRvd01lc3NhZ2VCcm9hZGNhc3Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXaW5kb3dNZXNz
YWdlQnJvYWRjYXN0ZXI6OmFkZExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldpbmRvd01l
c3NhZ2VCcm9hZGNhc3Rlcjo6cmVtb3ZlTGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2lu
ZG93TWVzc2FnZUJyb2FkY2FzdGVyOjpkZXN0cm95KToKKyAgICAgICAgKFdlYkNvcmU6OldpbmRv
d01lc3NhZ2VCcm9hZGNhc3Rlcjo6dW5zdWJjbGFzc1dpbmRvdyk6CisgICAgICAgIChXZWJDb3Jl
OjpXaW5kb3dNZXNzYWdlQnJvYWRjYXN0ZXI6OlN1YmNsYXNzZWRXbmRQcm9jKToKKwogMjAxNC0w
OC0yMiAgTHVjYXMgRm9yc2NobGVyICA8bGZvcnNjaGxlckBhcHBsZS5jb20+CiAKICAgICAgICAg
TWVyZ2UgcjE3Mjg1NApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dpbmRvd01l
c3NhZ2VCcm9hZGNhc3Rlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL1dpbmRvd01lc3NhZ2VCcm9hZGNhc3Rlci5jcHAJKHJldmlzaW9uIDE3Mjk0NikKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XaW5kb3dNZXNzYWdlQnJvYWRjYXN0ZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcs
IDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC03OSw2ICs3OSw3IEBAIHZvaWQgV2luZG93TWVzc2FnZUJyb2FkY2Fz
dGVyOjphZGRMaXN0ZW4KICNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MjQ0IDQzMTIpCiAgICAg
ICAgIG1fb3JpZ2luYWxXbmRQcm9jID0gcmVpbnRlcnByZXRfY2FzdDxXTkRQUk9DPihTZXRXaW5k
b3dMb25nUHRyKG1fc3ViY2xhc3NlZFdpbmRvdywgR1dMUF9XTkRQUk9DLCByZWludGVycHJldF9j
YXN0PExPTkdfUFRSPihTdWJjbGFzc2VkV25kUHJvYykpKTsKICAgICB9CisgICAgQVNTRVJUKG1f
b3JpZ2luYWxXbmRQcm9jKTsKIAogICAgIG1fbGlzdGVuZXJzLmFkZChsaXN0ZW5lcik7CiB9CkBA
IC0xMDgsNiArMTA5LDggQEAgTFJFU1VMVCBDQUxMQkFDSyBXaW5kb3dNZXNzYWdlQnJvYWRjYXN0
ZQogewogICAgIFdpbmRvd01lc3NhZ2VCcm9hZGNhc3RlciogYnJvYWRjYXN0ZXIgPSBpbnN0YW5j
ZXNNYXAoKS5nZXQoaHduZCk7CiAgICAgQVNTRVJUKGJyb2FkY2FzdGVyKTsKKyAgICBpZiAoIWJy
b2FkY2FzdGVyKQorICAgICAgICByZXR1cm4gMDsKIAogICAgIExpc3RlbmVyU2V0Ojpjb25zdF9p
dGVyYXRvciBlbmQgPSBicm9hZGNhc3Rlci0+bGlzdGVuZXJzKCkuZW5kKCk7CiAgICAgZm9yIChM
aXN0ZW5lclNldDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBicm9hZGNhc3Rlci0+bGlzdGVuZXJzKCku
YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQpJbmRleDogU291cmNlL1dlYktpdC93aW4vQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24g
MTcyOTczKQorKysgU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTAzIEBACisyMDE0LTA4LTI2ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBw
bGUuY29tPgorCisgICAgICAgIFtXaW5dIFdlYktpdCBJREwgaW5jb3JyZWN0bHkgcGFzc2VzIEhX
TkQgYXMgT0xFX0hBTkRMRQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTM2MjU4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xODEzNDEzOD4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBdm9pZCAzMi82NC1i
aXQgdHJ1bmNhdGlvbiBieSBwcmV2ZW50aW5nIDY0LWJpdCBIV05EIChhbmQgb3RoZXIpCisgICAg
ICAgIHZhbHVlcyBmcm9tIHBhc3NpbmcgdGhyb3VnaCB0aGUgMzItYml0IE9MRV9IQU5ETEUgZGF0
YSB0eXBlLgorCisgICAgICAgICogSW50ZXJmYWNlcy9JV2ViRG9jdW1lbnQuaWRsOgorICAgICAg
ICAqIEludGVyZmFjZXMvSVdlYkVtYmVkZGVkVmlldy5pZGw6CisgICAgICAgICogSW50ZXJmYWNl
cy9JV2ViRXJyb3JQcml2YXRlLmlkbDoKKyAgICAgICAgKiBJbnRlcmZhY2VzL0lXZWJGcmFtZUxv
YWREZWxlZ2F0ZS5pZGw6CisgICAgICAgICogSW50ZXJmYWNlcy9JV2ViRnJhbWVQcml2YXRlLmlk
bDoKKyAgICAgICAgKiBJbnRlcmZhY2VzL0lXZWJIaXN0b3J5SXRlbS5pZGw6CisgICAgICAgICog
SW50ZXJmYWNlcy9JV2ViSWNvbkRhdGFiYXNlLmlkbDoKKyAgICAgICAgKiBJbnRlcmZhY2VzL0lX
ZWJNdXRhYmxlVVJMUmVxdWVzdFByaXZhdGUuaWRsOgorICAgICAgICAqIEludGVyZmFjZXMvSVdl
YlVJRGVsZWdhdGUuaWRsOgorICAgICAgICAqIEludGVyZmFjZXMvSVdlYlVJRGVsZWdhdGVQcml2
YXRlLmlkbDoKKyAgICAgICAgKiBJbnRlcmZhY2VzL0lXZWJVUkxSZXNwb25zZVByaXZhdGUuaWRs
OgorICAgICAgICAqIEludGVyZmFjZXMvSVdlYlZpZXcuaWRsOgorICAgICAgICAqIEludGVyZmFj
ZXMvSVdlYlZpZXdQcml2YXRlLmlkbDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FbWJlZGRl
ZFdpZGdldC5jcHA6CisgICAgICAgIChFbWJlZGRlZFdpZGdldDo6Y3JlYXRlV2luZG93KToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
Q2hyb21lQ2xpZW50Ojpyb290Vmlld1RvU2NyZWVuKToKKyAgICAgICAgKFdlYkNocm9tZUNsaWVu
dDo6c2NyZWVuVG9Sb290Vmlldyk6CisgICAgICAgIChXZWJDaHJvbWVDbGllbnQ6OnBsYXRmb3Jt
UGFnZUNsaWVudCk6CisgICAgICAgIChXZWJDaHJvbWVDbGllbnQ6OnJ1bk9wZW5QYW5lbCk6Cisg
ICAgICAgIChXZWJDaHJvbWVDbGllbnQ6OnNldEN1cnNvcik6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29udGV4dE1lbnVD
bGllbnQ6OmN1c3RvbWl6ZU1lbnUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQ
bHVnaW4pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHA6
CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6OmhpZ2hsaWdodCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3JGcm9udGVuZENsaWVudDo6c2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmNsb3NlV2luZG93V2l0aG91dE5vdGlmaWNhdGlv
bnMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNob3dXaW5kb3dXaXRo
b3V0Tm90aWZpY2F0aW9ucyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9y
Q2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yRGVsZWdhdGUu
Y3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckRlbGVnYXRlLmg6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3JEZWxlZ2F0ZTo6d2ViVmlld0ZpcnN0UmVzcG9uZGVyKToKKyAg
ICAgICAgKFdlYkluc3BlY3RvckRlbGVnYXRlOjptYWtlRmlyc3RSZXNwb25kZXIpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yRGVsZWdhdGU6OmNvbnRleHRNZW51SXRlbXNGb3JFbGVtZW50KToKKyAg
ICAgICAgKFdlYkluc3BlY3RvckRlbGVnYXRlOjp0cmFja0N1c3RvbVBvcHVwTWVudSk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3JEZWxlZ2F0ZTo6YWRkQ3VzdG9tTWVudURyYXdpbmdEYXRhKToKKyAg
ICAgICAgKFdlYkluc3BlY3RvckRlbGVnYXRlOjpjbGVhblVwQ3VzdG9tTWVudURyYXdpbmdEYXRh
KToKKyAgICAgICAgKFdlYkluc3BlY3RvckRlbGVnYXRlOjpkcmF3SGVhZGVySW5SZWN0KToKKyAg
ICAgICAgKFdlYkluc3BlY3RvckRlbGVnYXRlOjpkcmF3Rm9vdGVySW5SZWN0KToKKyAgICAgICAg
KiBXZWJEcm9wU291cmNlLmNwcDoKKyAgICAgICAgKGdlbmVyYXRlTW91c2VFdmVudCk6CisgICAg
ICAgIChXZWJEcm9wU291cmNlOjpHaXZlRmVlZGJhY2spOgorICAgICAgICAqIFdlYkVycm9yLmNw
cDoKKyAgICAgICAgKFdlYkVycm9yOjpzc2xQZWVyQ2VydGlmaWNhdGUpOgorICAgICAgICAqIFdl
YkVycm9yLmg6CisgICAgICAgICogV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViRnJhbWU6OnBh
aW50RG9jdW1lbnRSZWN0VG9Db250ZXh0KToKKyAgICAgICAgKFdlYkZyYW1lOjpwYWludFNjcm9s
bFZpZXdSZWN0VG9Db250ZXh0QXRQb2ludCk6CisgICAgICAgIChXZWJGcmFtZTo6Y3JlYXRlU3Vi
ZnJhbWVXaXRoT3duZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkZyYW1lOjppbml0V2l0aFdlYlZp
ZXcpOgorICAgICAgICAoV2ViRnJhbWU6OmRyYXdIZWFkZXIpOgorICAgICAgICAoV2ViRnJhbWU6
OmRyYXdGb290ZXIpOgorICAgICAgICAqIFdlYkZyYW1lLmg6CisgICAgICAgICogV2ViSGlzdG9y
eUl0ZW0uY3BwOgorICAgICAgICAoV2ViSGlzdG9yeUl0ZW06Omljb24pOgorICAgICAgICAqIFdl
Ykhpc3RvcnlJdGVtLmg6CisgICAgICAgICogV2ViSWNvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAg
KFdlYkljb25EYXRhYmFzZTo6aWNvbkZvclVSTCk6CisgICAgICAgIChXZWJJY29uRGF0YWJhc2U6
OmRlZmF1bHRJY29uV2l0aFNpemUpOgorICAgICAgICAqIFdlYkljb25EYXRhYmFzZS5oOgorICAg
ICAgICAqIFdlYk11dGFibGVVUkxSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYk11dGFibGVVUkxS
ZXF1ZXN0OjpzZXRDbGllbnRDZXJ0aWZpY2F0ZSk6CisgICAgICAgICogV2ViTXV0YWJsZVVSTFJl
cXVlc3QuaDoKKyAgICAgICAgKiBXZWJOb2RlSGlnaGxpZ2h0LmNwcDoKKyAgICAgICAgKFdlYk5v
ZGVIaWdobGlnaHQ6OldlYk5vZGVIaWdobGlnaHQpOgorICAgICAgICAqIFdlYlVSTFJlc3BvbnNl
LmNwcDoKKyAgICAgICAgKFdlYlVSTFJlc3BvbnNlOjpzc2xQZWVyQ2VydGlmaWNhdGUpOgorICAg
ICAgICAqIFdlYlVSTFJlc3BvbnNlLmg6CisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAg
IChXZWJWaWV3OjpwYWludEludG9CYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViVmlldzo6aGFu
ZGxlQ29udGV4dE1lbnVFdmVudCk6CisgICAgICAgIChXZWJWaWV3OjpvbkluaXRNZW51UG9wdXAp
OgorICAgICAgICAoV2ViVmlldzo6b25VbmluaXRNZW51UG9wdXApOgorICAgICAgICAoV2ViVmll
dzo6V2ViVmlld1duZFByb2MpOgorICAgICAgICAoV2ViVmlldzo6ZGlzcGF0Y2hEaWRSZWNlaXZl
SWNvbkZyb21XZWJGcmFtZSk6CisgICAgICAgIChXZWJWaWV3OjpzZXRIb3N0V2luZG93KToKKyAg
ICAgICAgKFdlYlZpZXc6Omhvc3RXaW5kb3cpOgorICAgICAgICAoV2ViVmlldzo6Z2VuZXJhdGVT
ZWxlY3Rpb25JbWFnZSk6CisgICAgICAgIChXZWJWaWV3OjptYWluRnJhbWVJY29uKToKKyAgICAg
ICAgKFdlYlZpZXc6OnZpZXdXaW5kb3cpOgorICAgICAgICAoV2ViVmlldzo6cGFpbnREb2N1bWVu
dFJlY3RUb0NvbnRleHQpOgorICAgICAgICAoV2ViVmlldzo6cGFpbnRTY3JvbGxWaWV3UmVjdFRv
Q29udGV4dEF0UG9pbnQpOgorICAgICAgICAoV2ViVmlldzo6YmFja2luZ1N0b3JlKToKKyAgICAg
ICAgKFdlYlZpZXc6OmZ1bGxTY3JlZW5DbGllbnRTZXRQYXJlbnRXaW5kb3cpOgorICAgICAgICAq
IFdlYlZpZXcuaDoKKwogMjAxNC0wNy0yMyAgTHVjYXMgRm9yc2NobGVyICA8bGZvcnNjaGxlckBh
cHBsZS5jb20+CiAKICAgICAgICAgTWVyZ2UgcjE3MTQwMwpJbmRleDogU291cmNlL1dlYktpdC93
aW4vV2ViRHJvcFNvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2Vi
RHJvcFNvdXJjZS5jcHAJKHJldmlzaW9uIDE3Mjk0NikKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dl
YkRyb3BTb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OCw5ICs5OCw5IEBAIFBsYXRmb3Jt
TW91c2VFdmVudCBnZW5lcmF0ZU1vdXNlRXZlbnQoV2UKICAgICBQT0lOVEwgcHQ7CiAgICAgOjpH
ZXRDdXJzb3JQb3MoKExQUE9JTlQpJnB0KTsKICAgICBQT0lOVEwgbG9jYWxwdCA9IHB0OwotICAg
IE9MRV9IQU5ETEUgdmlld1dpbmRvdzsKKyAgICBIV05EIHZpZXdXaW5kb3c7CiAgICAgaWYgKFNV
Q0NFRURFRCh3ZWJWaWV3LT52aWV3V2luZG93KCZ2aWV3V2luZG93KSkpCi0gICAgICAgIDo6U2Ny
ZWVuVG9DbGllbnQocmVpbnRlcnByZXRfY2FzdDxIV05EPih2aWV3V2luZG93KSwgcmVpbnRlcnBy
ZXRfY2FzdDxMUFBPSU5UPigmbG9jYWxwdCkpOworICAgICAgICA6OlNjcmVlblRvQ2xpZW50KHZp
ZXdXaW5kb3csIHJlaW50ZXJwcmV0X2Nhc3Q8TFBQT0lOVD4oJmxvY2FscHQpKTsKICAgICByZXR1
cm4gUGxhdGZvcm1Nb3VzZUV2ZW50KEludFBvaW50KGxvY2FscHQueCwgbG9jYWxwdC55KSwgSW50
UG9pbnQocHQueCwgcHQueSksCiAgICAgICAgIGlzRHJhZyA/IExlZnRCdXR0b24gOiBOb0J1dHRv
biwgUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFs
c2UsIGN1cnJlbnRUaW1lKCkpOwogfQpAQCAtMTMxLDcgKzEzMSw3IEBAIFNURE1FVEhPRElNUCBX
ZWJEcm9wU291cmNlOjpHaXZlRmVlZGJhY2sKICAgICAgICAgcmV0dXJuIERSQUdEUk9QX1NfVVNF
REVGQVVMVENVUlNPUlM7CiAgICAgCiAgICAgSFdORCB2aWV3V2luZG93OwotICAgIGlmIChGQUlM
RUQobV93ZWJWaWV3LT52aWV3V2luZG93KHJlaW50ZXJwcmV0X2Nhc3Q8T0xFX0hBTkRMRSo+KCZ2
aWV3V2luZG93KSkpKQorICAgIGlmIChGQUlMRUQobV93ZWJWaWV3LT52aWV3V2luZG93KCZ2aWV3
V2luZG93KSkpCiAgICAgICAgIHJldHVybiBEUkFHRFJPUF9TX1VTRURFRkFVTFRDVVJTT1JTOwog
CiAgICAgUkVDVCB3ZWJWaWV3UmVjdDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkVycm9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJFcnJvci5jcHAJKHJldmlz
aW9uIDE3Mjk0NikKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkVycm9yLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjA4LDggKzIwOCw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRXJy
b3I6OmlzUG8KICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBXZWJFcnJvcjo6c3NsUGVlckNlcnRpZmljYXRlKCAKLSAgICAvKiBbcmV0dmFsXVtvdXRdICov
IE9MRV9IQU5ETEUqIHJlc3VsdCkKK0hSRVNVTFQgV2ViRXJyb3I6OnNzbFBlZXJDZXJ0aWZpY2F0
ZSgvKiBbcmV0dmFsXVtvdXRdICovIFVMT05HX1BUUiogcmVzdWx0KQogewogICAgIGlmICghcmVz
dWx0KQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwpAQCAtMjI4LDcgKzIyNyw3IEBAIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRXJyb3I6OnNzbFAKICAgICB2b2lkKiBkYXRhID0gd2tH
ZXRTU0xQZWVyQ2VydGlmaWNhdGVEYXRhQnl0ZVB0cihtX2NmRXJyb3JVc2VySW5mb0RpY3QuZ2V0
KCkpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKLSAgICAqcmVzdWx0
ID0gKE9MRV9IQU5ETEUpKFVMT05HNjQpZGF0YTsKKyAgICAqcmVzdWx0ID0gcmVpbnRlcnByZXRf
Y2FzdDxVTE9OR19QVFI+KGRhdGEpOwogI2VuZGlmCiAgICAgcmV0dXJuICpyZXN1bHQgPyBTX09L
IDogRV9GQUlMOwogfQpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViRXJyb3IuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJFcnJvci5oCShyZXZpc2lvbiAxNzI5NDYpCisr
KyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJFcnJvci5oCSh3b3JraW5nIGNvcHkpCkBAIC04Miw4ICs4
Miw3IEBAIHB1YmxpYzoKICAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MICpyZXN1bHQp
OwogCiAgICAgLy8gSVdlYkVycm9yUHJpdmF0ZQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBzc2xQZWVyQ2VydGlmaWNhdGUoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRd
ICovIE9MRV9IQU5ETEUgKnJlc3VsdCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIHNzbFBlZXJDZXJ0aWZpY2F0ZSgvKiBbcmV0dmFsXVtvdXRdICovIFVMT05HX1BUUiog
cmVzdWx0KTsKIAogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIHJlc291cmNlRXJy
b3IoKSBjb25zdDsKIApJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcAkocmV2aXNpb24gMTcyOTQ2
KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MTQsOSArMzE0LDcgQEAgSFJFU1VMVCBXZWJGcmFtZTo6cmVsb2FkRnJvbU9yaWdpbigpCiAgICAg
cmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRnJhbWU6OnBh
aW50RG9jdW1lbnRSZWN0VG9Db250ZXh0KAotICAgIC8qIFtpbl0gKi8gUkVDVCByZWN0LAotICAg
IC8qIFtpbl0gKi8gT0xFX0hBTkRMRSBkZXZpY2VDb250ZXh0KQorSFJFU1VMVCBXZWJGcmFtZTo6
cGFpbnREb2N1bWVudFJlY3RUb0NvbnRleHQoUkVDVCByZWN0LCBIREMgZGV2aWNlQ29udGV4dCkK
IHsKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZSh0aGlzKTsKICAgICBpZiAoIWNvcmVGcmFt
ZSkKQEAgLTMyOSw4ICszMjcsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkZyYW1l
OjpwYWluCiAgICAgLy8gV2UgY2FuJ3QgcGFpbnQgd2l0aCBhIGxheW91dCBzdGlsbCBwZW5kaW5n
LgogICAgIHZpZXctPnVwZGF0ZUxheW91dEFuZFN0eWxlSWZOZWVkZWRSZWN1cnNpdmUoKTsKIAot
ICAgIEhEQyBkYyA9IHJlaW50ZXJwcmV0X2Nhc3Q8SERDPihzdGF0aWNfY2FzdDxVTE9ORzY0Pihk
ZXZpY2VDb250ZXh0KSk7Ci0gICAgR3JhcGhpY3NDb250ZXh0IGdjKGRjKTsKKyAgICBHcmFwaGlj
c0NvbnRleHQgZ2MoZGV2aWNlQ29udGV4dCk7CiAgICAgZ2Muc2V0U2hvdWxkSW5jbHVkZUNoaWxk
V2luZG93cyh0cnVlKTsKICAgICBnYy5zYXZlKCk7CiAgICAgTE9ORyB3aWR0aCA9IHJlY3Qucmln
aHQgLSByZWN0LmxlZnQ7CkBAIC0zNDYsMTAgKzM0Myw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgV2ViRnJhbWU6OnBhaW4KICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBXZWJGcmFtZTo6cGFpbnRTY3JvbGxWaWV3UmVjdFRvQ29udGV4dEF0UG9p
bnQoCi0gICAgLyogW2luXSAqLyBSRUNUIHJlY3QsCi0gICAgLyogW2luXSAqLyBQT0lOVCBwdCwK
LSAgICAvKiBbaW5dICovIE9MRV9IQU5ETEUgZGV2aWNlQ29udGV4dCkKK0hSRVNVTFQgV2ViRnJh
bWU6OnBhaW50U2Nyb2xsVmlld1JlY3RUb0NvbnRleHRBdFBvaW50KFJFQ1QgcmVjdCwgUE9JTlQg
cHQsIEhEQyBkZXZpY2VDb250ZXh0KQogewogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKHRo
aXMpOwogICAgIGlmICghY29yZUZyYW1lKQpAQCAtMzYyLDggKzM1Niw3IEBAIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgV2ViRnJhbWU6OnBhaW4KICAgICAvLyBXZSBjYW4ndCBwYWludCB3aXRo
IGEgbGF5b3V0IHN0aWxsIHBlbmRpbmcuCiAgICAgdmlldy0+dXBkYXRlTGF5b3V0QW5kU3R5bGVJ
Zk5lZWRlZFJlY3Vyc2l2ZSgpOwogCi0gICAgSERDIGRjID0gcmVpbnRlcnByZXRfY2FzdDxIREM+
KHN0YXRpY19jYXN0PFVMT05HNjQ+KGRldmljZUNvbnRleHQpKTsKLSAgICBHcmFwaGljc0NvbnRl
eHQgZ2MoZGMpOworICAgIEdyYXBoaWNzQ29udGV4dCBnYyhkZXZpY2VDb250ZXh0KTsKICAgICBn
Yy5zZXRTaG91bGRJbmNsdWRlQ2hpbGRXaW5kb3dzKHRydWUpOwogICAgIGdjLnNhdmUoKTsKICAg
ICBJbnRSZWN0IGRpcnR5UmVjdChyZWN0KTsKQEAgLTEwNTMsNyArMTA0Niw3IEBAIFBhc3NSZWZQ
dHI8RnJhbWU+IFdlYkZyYW1lOjpjcmVhdGVTdWJmcmEKICAgICB3ZWJWaWV3LT5RdWVyeUludGVy
ZmFjZSgmZC0+d2ViVmlldyk7CiAgICAgZC0+d2ViVmlldy0+UmVsZWFzZSgpOyAvLyBkb24ndCBo
b2xkIHRoZSBleHRyYSByZWYKIAotICAgIE9MRV9IQU5ETEUgdmlld1dpbmRvdzsKKyAgICBIV05E
IHZpZXdXaW5kb3c7CiAgICAgZC0+d2ViVmlldy0+dmlld1dpbmRvdygmdmlld1dpbmRvdyk7CiAK
ICAgICB0aGlzLT5BZGRSZWYoKTsgLy8gV2UgcmVsZWFzZSB0aGlzIHJlZiBpbiBmcmFtZUxvYWRl
ckRlc3Ryb3llZCgpCkBAIC0xMDY3LDcgKzEwNjAsNyBAQCB2b2lkIFdlYkZyYW1lOjppbml0V2l0
aFdlYlZpZXcoSVdlYlZpZXcqCiAgICAgd2ViVmlldy0+UXVlcnlJbnRlcmZhY2UoJmQtPndlYlZp
ZXcpOwogICAgIGQtPndlYlZpZXctPlJlbGVhc2UoKTsgLy8gZG9uJ3QgaG9sZCB0aGUgZXh0cmEg
cmVmCiAKLSAgICBPTEVfSEFORExFIHZpZXdXaW5kb3c7CisgICAgSFdORCB2aWV3V2luZG93Owog
ICAgIGQtPndlYlZpZXctPnZpZXdXaW5kb3coJnZpZXdXaW5kb3cpOwogCiAgICAgdGhpcy0+QWRk
UmVmKCk7IC8vIFdlIHJlbGVhc2UgdGhpcyByZWYgaW4gZnJhbWVMb2FkZXJEZXN0cm95ZWQoKQpA
QCAtMTU4NCw3ICsxNTc3LDcgQEAgdm9pZCBXZWJGcmFtZTo6ZHJhd0hlYWRlcihQbGF0Zm9ybUdy
YXBoaQogICAgIGludCB4ID0gcGFnZVJlY3QueCgpOwogICAgIGludCB5ID0gMDsKICAgICBSRUNU
IGhlYWRlclJlY3QgPSB7eCwgeSwgeCtwYWdlUmVjdC53aWR0aCgpLCB5K3N0YXRpY19jYXN0PGlu
dD4oaGVhZGVySGVpZ2h0KX07Ci0gICAgdWktPmRyYXdIZWFkZXJJblJlY3QoZC0+d2ViVmlldywg
JmhlYWRlclJlY3QsIHN0YXRpY19jYXN0PE9MRV9IQU5ETEU+KHJlaW50ZXJwcmV0X2Nhc3Q8TE9O
RzY0PihwY3R4KSkpOworICAgIHVpLT5kcmF3SGVhZGVySW5SZWN0KGQtPndlYlZpZXcsICZoZWFk
ZXJSZWN0LCByZWludGVycHJldF9jYXN0PFVMT05HX1BUUj4ocGN0eCkpOwogfQogCiB2b2lkIFdl
YkZyYW1lOjpkcmF3Rm9vdGVyKFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0KiBwY3R4LCBJV2ViVUlE
ZWxlZ2F0ZSogdWksIGNvbnN0IEludFJlY3QmIHBhZ2VSZWN0LCBVSU5UIHBhZ2UsIFVJTlQgcGFn
ZUNvdW50LCBmbG9hdCBoZWFkZXJIZWlnaHQsIGZsb2F0IGZvb3RlckhlaWdodCkKQEAgLTE1OTIs
NyArMTU4NSw3IEBAIHZvaWQgV2ViRnJhbWU6OmRyYXdGb290ZXIoUGxhdGZvcm1HcmFwaGkKICAg
ICBpbnQgeCA9IHBhZ2VSZWN0LngoKTsKICAgICBpbnQgeSA9IG1heCgoaW50KWhlYWRlckhlaWdo
dCtwYWdlUmVjdC5oZWlnaHQoKSwgbV9wYWdlSGVpZ2h0LXN0YXRpY19jYXN0PGludD4oZm9vdGVy
SGVpZ2h0KSk7CiAgICAgUkVDVCBmb290ZXJSZWN0ID0ge3gsIHksIHgrcGFnZVJlY3Qud2lkdGgo
KSwgeStzdGF0aWNfY2FzdDxpbnQ+KGZvb3RlckhlaWdodCl9OwotICAgIHVpLT5kcmF3Rm9vdGVy
SW5SZWN0KGQtPndlYlZpZXcsICZmb290ZXJSZWN0LCBzdGF0aWNfY2FzdDxPTEVfSEFORExFPihy
ZWludGVycHJldF9jYXN0PExPTkc2ND4ocGN0eCkpLCBwYWdlKzEsIHBhZ2VDb3VudCk7CisgICAg
dWktPmRyYXdGb290ZXJJblJlY3QoZC0+d2ViVmlldywgJmZvb3RlclJlY3QsIHJlaW50ZXJwcmV0
X2Nhc3Q8VUxPTkdfUFRSPihwY3R4KSwgcGFnZSArIDEsIHBhZ2VDb3VudCk7CiB9CiAKIHZvaWQg
V2ViRnJhbWU6OnNwb29sUGFnZShQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCogcGN0eCwgR3JhcGhp
Y3NDb250ZXh0KiBzcG9vbEN0eCwgSERDIHByaW50REMsIElXZWJVSURlbGVnYXRlKiB1aSwgZmxv
YXQgaGVhZGVySGVpZ2h0LCBmbG9hdCBmb290ZXJIZWlnaHQsIFVJTlQgcGFnZSwgVUlOVCBwYWdl
Q291bnQpCkBAIC0xNjYzLDcgKzE2NTYsNyBAQCB2b2lkIFdlYkZyYW1lOjpkcmF3SGVhZGVyKFBs
YXRmb3JtR3JhcGhpCiAgICAgaW50IHkgPSAwOwogICAgIFJFQ1QgaGVhZGVyUmVjdCA9IHt4LCB5
LCB4ICsgcGFnZVJlY3Qud2lkdGgoKSwgeSArIHN0YXRpY19jYXN0PGludD4oaGVhZGVySGVpZ2h0
KX07CiAKLSAgICB1aS0+ZHJhd0hlYWRlckluUmVjdChkLT53ZWJWaWV3LCAmaGVhZGVyUmVjdCwg
c3RhdGljX2Nhc3Q8T0xFX0hBTkRMRT4ocmVpbnRlcnByZXRfY2FzdDxMT05HNjQ+KGhkYykpKTsK
KyAgICB1aS0+ZHJhd0hlYWRlckluUmVjdChkLT53ZWJWaWV3LCAmaGVhZGVyUmVjdCwgcmVpbnRl
cnByZXRfY2FzdDxVTE9OR19QVFI+KGhkYykpOwogfQogCiB2b2lkIFdlYkZyYW1lOjpkcmF3Rm9v
dGVyKFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0KiBwY3R4LCBJV2ViVUlEZWxlZ2F0ZSogdWksIGNv
bnN0IEludFJlY3QmIHBhZ2VSZWN0LCBVSU5UIHBhZ2UsIFVJTlQgcGFnZUNvdW50LCBmbG9hdCBo
ZWFkZXJIZWlnaHQsIGZsb2F0IGZvb3RlckhlaWdodCkKQEAgLTE2NzQsNyArMTY2Nyw3IEBAIHZv
aWQgV2ViRnJhbWU6OmRyYXdGb290ZXIoUGxhdGZvcm1HcmFwaGkKICAgICBpbnQgeSA9IG1heChz
dGF0aWNfY2FzdDxpbnQ+KGhlYWRlckhlaWdodCkgKyBwYWdlUmVjdC5oZWlnaHQoKSwgbV9wYWdl
SGVpZ2h0ICAtc3RhdGljX2Nhc3Q8aW50Pihmb290ZXJIZWlnaHQpKTsKICAgICBSRUNUIGZvb3Rl
clJlY3QgPSB7eCwgeSwgeCArIHBhZ2VSZWN0LndpZHRoKCksIHkgKyBzdGF0aWNfY2FzdDxpbnQ+
KGZvb3RlckhlaWdodCl9OwogCi0gICAgdWktPmRyYXdGb290ZXJJblJlY3QoZC0+d2ViVmlldywg
JmZvb3RlclJlY3QsIHN0YXRpY19jYXN0PE9MRV9IQU5ETEU+KHJlaW50ZXJwcmV0X2Nhc3Q8TE9O
RzY0PihoZGMpKSwgcGFnZSsxLCBwYWdlQ291bnQpOworICAgIHVpLT5kcmF3Rm9vdGVySW5SZWN0
KGQtPndlYlZpZXcsICZmb290ZXJSZWN0LCByZWludGVycHJldF9jYXN0PFVMT05HX1BUUj4oaGRj
KSwgcGFnZSsxLCBwYWdlQ291bnQpOwogfQogCiBzdGF0aWMgWEZPUk0gYnVpbGRYRk9STUZyb21D
YWlybyhIREMgdGFyZ2V0REMsIGNhaXJvX3QqIHByZXZpZXdDb250ZXh0KQpJbmRleDogU291cmNl
L1dlYktpdC93aW4vV2ViRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9X
ZWJGcmFtZS5oCShyZXZpc2lvbiAxNzI5NDYpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFt
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMzYsMTQgKzIzNiw5IEBAIHB1YmxpYzoKIAogICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZWxvYWRGcm9tT3JpZ2luKCk7CiAKLSAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcGFpbnREb2N1bWVudFJlY3RUb0Nv
bnRleHQoCi0gICAgICAgIC8qIFtpbl0gKi8gUkVDVCByZWN0LAotICAgICAgICAvKiBbaW5dICov
IE9MRV9IQU5ETEUgZGV2aWNlQ29udGV4dCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIHBhaW50RG9jdW1lbnRSZWN0VG9Db250ZXh0KC8qIFtpbl0gKi8gUkVDVCByZWN0
LCAvKiBbaW5dICovIEhEQyBkZXZpY2VDb250ZXh0KTsKIAotICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBwYWludFNjcm9sbFZpZXdSZWN0VG9Db250ZXh0QXRQb2ludCgKLSAg
ICAgICAgLyogW2luXSAqLyBSRUNUIHJlY3QsCi0gICAgICAgIC8qIFtpbl0gKi8gUE9JTlQgcHQs
Ci0gICAgICAgIC8qIFtpbl0gKi8gT0xFX0hBTkRMRSBkZXZpY2VDb250ZXh0KTsKKyAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcGFpbnRTY3JvbGxWaWV3UmVjdFRvQ29udGV4
dEF0UG9pbnQoLyogW2luXSAqLyBSRUNUIHJlY3QsIC8qIFtpbl0gKi8gUE9JTlQgcHQsIC8qIFtp
bl0gKi8gSERDIGRldmljZUNvbnRleHQpOwogCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIGVsZW1lbnREb2VzQXV0b0NvbXBsZXRlKAogICAgICAgICAvKiBbaW5dICovIElE
T01FbGVtZW50KiBlbGVtZW50LCAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkhpc3RvcnlJ
dGVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJIaXN0b3J5SXRlbS5j
cHAJKHJldmlzaW9uIDE3Mjk0NikKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkhpc3RvcnlJdGVt
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDg3LDggKzQ4Nyw3IEBAIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgV2ViSGlzdG9yeUl0ZW0KICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBXZWJIaXN0b3J5SXRlbTo6aWNvbiggCi0gICAgLyogW291dCwgcmV0
dmFsXSAqLyBPTEVfSEFORExFKiAvKmhCaXRtYXAqLykKK0hSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgV2ViSGlzdG9yeUl0ZW06Omljb24oLyogW291dCwgcmV0dmFsXSAqLyBIQklUTUFQKiAvKmhC
aXRtYXAqLykKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gRV9OT1RJ
TVBMOwpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViSGlzdG9yeUl0ZW0uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJIaXN0b3J5SXRlbS5oCShyZXZpc2lvbiAxNzI5NDYp
CisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJIaXN0b3J5SXRlbS5oCSh3b3JraW5nIGNvcHkpCkBA
IC03OCw4ICs3OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgYWx0ZXJuYXRlVGl0bGUoIAogICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIq
IHRpdGxlKTsKICAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaWNv
biggCi0gICAgICAgIC8qIFtvdXQsIHJldHZhbF0gKi8gT0xFX0hBTkRMRSAqaEJpdG1hcCk7Cisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGljb24oLyogW291dCwgcmV0dmFs
XSAqLyBIQklUTUFQKiBoQml0bWFwKTsKIAogICAgIC8vIElXZWJIaXN0b3J5SXRlbVByaXZhdGUK
ICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaW5pdEZyb21EaWN0aW9uYXJ5
UmVwcmVzZW50YXRpb24odm9pZCogZGljdGlvbmFyeSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dp
bi9XZWJJY29uRGF0YWJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dl
Ykljb25EYXRhYmFzZS5jcHAJKHJldmlzaW9uIDE3Mjk0NikKKysrIFNvdXJjZS9XZWJLaXQvd2lu
L1dlYkljb25EYXRhYmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwg
MjAwOSwgMjAxMy0yMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTYxLDExICsxNjEsNyBAQCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIFdlYkljb25EYXRhYmFzCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNV
TFQgV2ViSWNvbkRhdGFiYXNlOjppY29uRm9yVVJMKAotICAgICAgICAvKiBbaW5dICovIEJTVFIg
dXJsLAotICAgICAgICAvKiBbb3B0aW9uYWxdW2luXSAqLyBMUFNJWkUgc2l6ZSwKLSAgICAgICAg
LyogW29wdGlvbmFsXVtpbl0gKi8gQk9PTCAvKmNhY2hlKi8sCi0gICAgICAgIC8qIFtyZXR2YWxd
W291dF0gKi8gT0xFX0hBTkRMRSogYml0bWFwKQorSFJFU1VMVCBXZWJJY29uRGF0YWJhc2U6Omlj
b25Gb3JVUkwoQlNUUiB1cmwsIExQU0laRSBzaXplLCBCT09MIC8qY2FjaGUqLywgSEJJVE1BUCog
Yml0bWFwKQogewogICAgIGlmICghc2l6ZSkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKQEAg
LTE3OCw4ICsxNzQsOCBAQCBIUkVTVUxUIFdlYkljb25EYXRhYmFzZTo6aWNvbkZvclVSTCgKIAog
ICAgIC8vIE1ha2Ugc3VyZSB3ZSBjaGVjayBmb3IgdGhlIGNhc2Ugb2YgYW4gImVtcHR5IGltYWdl
IgogICAgIGlmIChpY29uICYmIGljb24tPndpZHRoKCkpIHsKLSAgICAgICAgKmJpdG1hcCA9IChP
TEVfSEFORExFKShVTE9ORzY0KWdldE9yQ3JlYXRlU2hhcmVkQml0bWFwKGludFNpemUpOwotICAg
ICAgICBpZiAoIWljb24tPmdldEhCSVRNQVBPZlNpemUoKEhCSVRNQVApKFVMT05HNjQpKmJpdG1h
cCwgJmludFNpemUpKSB7CisgICAgICAgICpiaXRtYXAgPSBnZXRPckNyZWF0ZVNoYXJlZEJpdG1h
cChpbnRTaXplKTsKKyAgICAgICAgaWYgKCFpY29uLT5nZXRIQklUTUFQT2ZTaXplKCpiaXRtYXAs
ICZpbnRTaXplKSkgewogICAgICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZHJhdyBJbWFn
ZSB0byBIQklUTUFQIik7CiAgICAgICAgICAgICAqYml0bWFwID0gMDsKICAgICAgICAgICAgIHJl
dHVybiBFX0ZBSUw7CkBAIC0xOTAsMTYgKzE4NiwxNCBAQCBIUkVTVUxUIFdlYkljb25EYXRhYmFz
ZTo6aWNvbkZvclVSTCgKICAgICByZXR1cm4gZGVmYXVsdEljb25XaXRoU2l6ZShzaXplLCBiaXRt
YXApOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkljb25EYXRhYmFzZTo6ZGVm
YXVsdEljb25XaXRoU2l6ZSgKLSAgICAgICAgLyogW2luXSAqLyBMUFNJWkUgc2l6ZSwKLSAgICAg
ICAgLyogW3JldHZhbF1bb3V0XSAqLyBPTEVfSEFORExFKiByZXN1bHQpCitIUkVTVUxUIFdlYklj
b25EYXRhYmFzZTo6ZGVmYXVsdEljb25XaXRoU2l6ZShMUFNJWkUgc2l6ZSwgSEJJVE1BUCogcmVz
dWx0KQogewogICAgIGlmICghc2l6ZSkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKIAogICAg
IEludFNpemUgaW50U2l6ZSgqc2l6ZSk7CiAKLSAgICAqcmVzdWx0ID0gKE9MRV9IQU5ETEUpKFVM
T05HNjQpZ2V0T3JDcmVhdGVEZWZhdWx0SWNvbkJpdG1hcChpbnRTaXplKTsKKyAgICAqcmVzdWx0
ID0gZ2V0T3JDcmVhdGVEZWZhdWx0SWNvbkJpdG1hcChpbnRTaXplKTsKICAgICByZXR1cm4gU19P
SzsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViSWNvbkRhdGFiYXNlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViSWNvbkRhdGFiYXNlLmgJKHJldmlzaW9uIDE3
Mjk0NikKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkljb25EYXRhYmFzZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAw
OCwgMjAwOSwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTMtMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTY1LDE1
ICs2NSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
c2hhcmVkSWNvbkRhdGFiYXNlKCAKICAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJV2ViSWNv
bkRhdGFiYXNlICoqcmVzdWx0KTsKICAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgaWNvbkZvclVSTCggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiB1cmwsCi0gICAg
ICAgIC8qIFtvcHRpb25hbF1baW5dICovIExQU0laRSBzaXplLAotICAgICAgICAvKiBbb3B0aW9u
YWxdW2luXSAqLyBCT09MIGNhY2hlLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIE9MRV9I
QU5ETEUgKmltYWdlKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgZGVmYXVsdEljb25XaXRoU2l6ZSggCi0gICAgICAgIC8qIFtpbl0gKi8gTFBTSVpFIHNpemUs
Ci0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gT0xFX0hBTkRMRSAqcmVzdWx0KTsKKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaWNvbkZvclVSTChCU1RSIHVybCwgTFBT
SVpFLCBCT09MIGNhY2hlLCBIQklUTUFQKiBpbWFnZSk7CisKKyAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgZGVmYXVsdEljb25XaXRoU2l6ZSgvKiBbaW5dICovIExQU0laRSBz
aXplLCAvKiBbcmV0dmFsXVtvdXRdICovIEhCSVRNQVAqIHJlc3VsdCk7CiAgICAgCiAgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJldGFpbkljb25Gb3JVUkwoIAogICAgICAg
ICAvKiBbaW5dICovIEJTVFIgdXJsKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYk11dGFi
bGVVUkxSZXF1ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJNdXRh
YmxlVVJMUmVxdWVzdC5jcHAJKHJldmlzaW9uIDE3Mjk0NikKKysrIFNvdXJjZS9XZWJLaXQvd2lu
L1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY2LDEzICszNjYs
MTIgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJNdXRhYmxlVVJMUgogICAgIHJldHVy
biBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYk11dGFibGVVUkxSZXF1
ZXN0OjpzZXRDbGllbnRDZXJ0aWZpY2F0ZSgKLSAgICAvKiBbaW5dICovIE9MRV9IQU5ETEUgY2Vy
dCkKK0hSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViTXV0YWJsZVVSTFJlcXVlc3Q6OnNldENs
aWVudENlcnRpZmljYXRlKC8qIFtpbl0gKi8gVUxPTkdfUFRSIGNlcnQpCiB7CiAgICAgaWYgKCFj
ZXJ0KQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogCi0gICAgUENDRVJUX0NPTlRFWFQgY2Vy
dENvbnRleHQgPSByZWludGVycHJldF9jYXN0PFBDQ0VSVF9DT05URVhUPigoVUxPTkc2NCljZXJ0
KTsKKyAgICBQQ0NFUlRfQ09OVEVYVCBjZXJ0Q29udGV4dCA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEND
RVJUX0NPTlRFWFQ+KGNlcnQpOwogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNlcnREYXRhID0g
V2ViQ29yZTo6Y29weUNlcnRpZmljYXRlVG9EYXRhKGNlcnRDb250ZXh0KTsKICAgICBSZXNvdXJj
ZUhhbmRsZTo6c2V0Q2xpZW50Q2VydGlmaWNhdGUobV9yZXF1ZXN0LnVybCgpLmhvc3QoKSwgY2Vy
dERhdGEuZ2V0KCkpOwogICAgIHJldHVybiBTX09LOwpJbmRleDogU291cmNlL1dlYktpdC93aW4v
V2ViTXV0YWJsZVVSTFJlcXVlc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9X
ZWJNdXRhYmxlVVJMUmVxdWVzdC5oCShyZXZpc2lvbiAxNzI5NDYpCisrKyBTb3VyY2UvV2ViS2l0
L3dpbi9XZWJNdXRhYmxlVVJMUmVxdWVzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTUsOCArMTU1
LDcgQEAgcHVibGljOgogCiAgICAgLy8gSVdlYk11dGFibGVVUkxSZXF1ZXN0UHJpdmF0ZQogCi0g
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldENsaWVudENlcnRpZmljYXRl
KAotICAgICAgICAvKiBbaW5dICovIE9MRV9IQU5ETEUgY2VydCk7CisgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIHNldENsaWVudENlcnRpZmljYXRlKFVMT05HX1BUUik7CiAK
ICAgICB2aXJ0dWFsIC8qIFtsb2NhbF0gKi8gQ0ZVUkxSZXF1ZXN0UmVmIFNURE1FVEhPRENBTExU
WVBFIGNmUmVxdWVzdCgpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJOb2RlSGlnaGxp
Z2h0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJOb2RlSGlnaGxpZ2h0
LmNwcAkocmV2aXNpb24gMTcyOTQ2KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViTm9kZUhpZ2hs
aWdodC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3LDcgKzU3LDcgQEAgV2ViTm9kZUhpZ2hsaWdo
dDo6V2ViTm9kZUhpZ2hsaWdodChXZWJWaQogICAgICwgbV9zaG93c1doaWxlV2ViVmlld0lzVmlz
aWJsZShmYWxzZSkKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIG1faW5zcGVjdGVkV2Vi
Vmlldy0+dmlld1dpbmRvdyhyZWludGVycHJldF9jYXN0PE9MRV9IQU5ETEUqPigmbV9pbnNwZWN0
ZWRXZWJWaWV3V2luZG93KSk7CisgICAgbV9pbnNwZWN0ZWRXZWJWaWV3LT52aWV3V2luZG93KCZt
X2luc3BlY3RlZFdlYlZpZXdXaW5kb3cpOwogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCiB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYlVSTFJlc3BvbnNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAJKHJldmlzaW9uIDE3Mjk0
NikKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYlVSTFJlc3BvbnNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDAwLDggKzQwMCw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVVJMUmVz
cG9uc2UKIH0KIAogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlVSTFJlc3BvbnNlOjpz
c2xQZWVyQ2VydGlmaWNhdGUoIAotICAgIC8qIFtyZXR2YWxdW291dF0gKi8gT0xFX0hBTkRMRSog
cmVzdWx0KQorSFJFU1VMVCBXZWJVUkxSZXNwb25zZTo6c3NsUGVlckNlcnRpZmljYXRlKC8qIFty
ZXR2YWxdW291dF0gKi8gVUxPTkdfUFRSKiByZXN1bHQpCiB7CiAgICAgaWYgKCFyZXN1bHQpCiAg
ICAgICAgIHJldHVybiBFX1BPSU5URVI7CkBAIC00MTQsNyArNDEzLDcgQEAgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBXZWJVUkxSZXNwb25zZQogICAgIHZvaWQqIGRhdGEgPSB3a0dldFNTTFBl
ZXJDZXJ0aWZpY2F0ZURhdGFCeXRlUHRyKGRpY3QpOwogICAgIGlmICghZGF0YSkKICAgICAgICAg
cmV0dXJuIEVfRkFJTDsKLSAgICAqcmVzdWx0ID0gKE9MRV9IQU5ETEUpKFVMT05HNjQpZGF0YTsK
KyAgICAqcmVzdWx0ID0gcmVpbnRlcnByZXRfY2FzdDxVTE9OR19QVFI+KGRhdGEpOwogI2VuZGlm
CiAKICAgICByZXR1cm4gKnJlc3VsdCA/IFNfT0sgOiBFX0ZBSUw7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L3dpbi9XZWJVUkxSZXNwb25zZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2lu
L1dlYlVSTFJlc3BvbnNlLmgJKHJldmlzaW9uIDE3Mjk0NikKKysrIFNvdXJjZS9XZWJLaXQvd2lu
L1dlYlVSTFJlc3BvbnNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTgxLDggKzgxLDcgQEAgcHVibGlj
OgogICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wgKmF0dGFjaG1lbnQpOwogCiAgICAg
Ly8gSVdlYlVSTFJlc3BvbnNlUHJpdmF0ZQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBzc2xQZWVyQ2VydGlmaWNhdGUoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICov
IE9MRV9IQU5ETEUgKnJlc3VsdCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIHNzbFBlZXJDZXJ0aWZpY2F0ZSgvKiBbcmV0dmFsXVtvdXRdICovIFVMT05HX1BUUiogcmVz
dWx0KTsKICAgICAKICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNvdXJj
ZVJlc3BvbnNlKCkgY29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCShyZXZpc2lvbiAx
NzI5NDYpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTE4NCw3ICsxMTg0LDcgQEAgdm9pZCBXZWJWaWV3OjpwYWludEludG9CYWNraW5nU3RvcmUo
RnJhbQogCiAgICAgQ09NUHRyPElXZWJVSURlbGVnYXRlUHJpdmF0ZTI+IHVpUHJpdmF0ZShRdWVy
eSwgbV91aURlbGVnYXRlKTsKICAgICBpZiAodWlQcml2YXRlKQotICAgICAgICB1aVByaXZhdGUt
PmRyYXdCYWNrZ3JvdW5kKHRoaXMsIHJlaW50ZXJwcmV0X2Nhc3Q8T0xFX0hBTkRMRT4oYml0bWFw
REMpLCAmcmVjdCk7CisgICAgICAgIHVpUHJpdmF0ZS0+ZHJhd0JhY2tncm91bmQodGhpcywgYml0
bWFwREMsICZyZWN0KTsKIAogICAgIGlmIChmcmFtZVZpZXcgJiYgZnJhbWVWaWV3LT5mcmFtZSgp
LmNvbnRlbnRSZW5kZXJlcigpKSB7CiAgICAgICAgIGdjLmNsaXAoZGlydHlSZWN0KTsKQEAgLTEz
OTIsNyArMTM5Miw3IEBAIGJvb2wgV2ViVmlldzo6aGFuZGxlQ29udGV4dE1lbnVFdmVudChXUEEK
ICAgICAgICAgbV91aURlbGVnYXRlLT5oYXNDdXN0b21NZW51SW1wbGVtZW50YXRpb24oJmhhc0N1
c3RvbU1lbnVzKTsKIAogICAgIGlmIChoYXNDdXN0b21NZW51cykKLSAgICAgICAgbV91aURlbGVn
YXRlLT50cmFja0N1c3RvbVBvcHVwTWVudSgoSVdlYlZpZXcqKXRoaXMsIChPTEVfSEFORExFKShV
TE9ORzY0KWNvcmVNZW51LT5wbGF0Zm9ybUNvbnRleHRNZW51KCksICZwb2ludCk7CisgICAgICAg
IG1fdWlEZWxlZ2F0ZS0+dHJhY2tDdXN0b21Qb3B1cE1lbnUoKElXZWJWaWV3Kil0aGlzLCBjb3Jl
TWVudS0+cGxhdGZvcm1Db250ZXh0TWVudSgpLCAmcG9pbnQpOwogICAgIGVsc2UgewogICAgICAg
ICAvLyBTdXJwcmlzaW5nbHksIFRQTV9SSUdIVEJVVFRPTiBtZWFucyB0aGF0IGl0ZW1zIGFyZSBz
ZWxlY3RhYmxlIHdpdGggZWl0aGVyIHRoZSByaWdodCBPUiBsZWZ0IG1vdXNlIGJ1dHRvbgogICAg
ICAgICBVSU5UIGZsYWdzID0gVFBNX1JJR0hUQlVUVE9OIHwgVFBNX1RPUEFMSUdOIHwgVFBNX1ZF
UlBPU0FOSU1BVElPTiB8IFRQTV9IT1JJWk9OVEFMCkBAIC0xNDQ1LDcgKzE0NDUsNyBAQCBib29s
IFdlYlZpZXc6Om9uSW5pdE1lbnVQb3B1cChXUEFSQU0gd1BhCiAgICAgaWYgKCFoYXNDdXN0b21N
ZW51cykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgbV91aURlbGVnYXRlLT5hZGRDdXN0
b21NZW51RHJhd2luZ0RhdGEoKElXZWJWaWV3Kil0aGlzLCAoT0xFX0hBTkRMRSkoVUxPTkc2NClt
ZW51KTsKKyAgICBtX3VpRGVsZWdhdGUtPmFkZEN1c3RvbU1lbnVEcmF3aW5nRGF0YSgoSVdlYlZp
ZXcqKXRoaXMsIG1lbnUpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xNDYzLDcgKzE0NjMs
NyBAQCBib29sIFdlYlZpZXc6Om9uVW5pbml0TWVudVBvcHVwKFdQQVJBTSB3CiAgICAgaWYgKCFo
YXNDdXN0b21NZW51cykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgbV91aURlbGVnYXRl
LT5jbGVhblVwQ3VzdG9tTWVudURyYXdpbmdEYXRhKChJV2ViVmlldyopdGhpcywgKE9MRV9IQU5E
TEUpKFVMT05HNjQpbWVudSk7CisgICAgbV91aURlbGVnYXRlLT5jbGVhblVwQ3VzdG9tTWVudURy
YXdpbmdEYXRhKChJV2ViVmlldyopdGhpcywgbWVudSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
QEAgLTIzMTIsNyArMjMxMiw3IEBAIExSRVNVTFQgQ0FMTEJBQ0sgV2ViVmlldzo6V2ViVmlld1du
ZFByb2MKICAgICAgICAgICAgIEhXTkQgbmV3Rm9jdXNXbmQgPSByZWludGVycHJldF9jYXN0PEhX
TkQ+KHdQYXJhbSk7CiAgICAgICAgICAgICBpZiAoU1VDQ0VFREVEKHdlYlZpZXctPnVpRGVsZWdh
dGUoJnVpRGVsZWdhdGUpKSAmJiB1aURlbGVnYXRlCiAgICAgICAgICAgICAgICAgJiYgU1VDQ0VF
REVEKHVpRGVsZWdhdGUtPlF1ZXJ5SW50ZXJmYWNlKElJRF9JV2ViVUlEZWxlZ2F0ZVByaXZhdGUs
ICh2b2lkKiopICZ1aURlbGVnYXRlUHJpdmF0ZSkpICYmIHVpRGVsZWdhdGVQcml2YXRlKQotICAg
ICAgICAgICAgICAgIHVpRGVsZWdhdGVQcml2YXRlLT53ZWJWaWV3TG9zdEZvY3VzKHdlYlZpZXcs
IChPTEVfSEFORExFKShVTE9ORzY0KW5ld0ZvY3VzV25kKTsKKyAgICAgICAgICAgICAgICB1aURl
bGVnYXRlUHJpdmF0ZS0+d2ViVmlld0xvc3RGb2N1cyh3ZWJWaWV3LCBuZXdGb2N1c1duZCk7CiAK
ICAgICAgICAgICAgIEZvY3VzQ29udHJvbGxlciYgZm9jdXNDb250cm9sbGVyID0gd2ViVmlldy0+
cGFnZSgpLT5mb2N1c0NvbnRyb2xsZXIoKTsKICAgICAgICAgICAgIEZyYW1lJiBmcmFtZSA9IGZv
Y3VzQ29udHJvbGxlci5mb2N1c2VkT3JNYWluRnJhbWUoKTsKQEAgLTI5MjAsNyArMjkyMCw3IEBA
IHZvaWQgV2ViVmlldzo6ZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbkZyb20KICAgICAgICAgICAgIGlj
b24tPmdldEhCSVRNQVBPZlNpemUoaEJpdG1hcCwgJnN6KTsKICAgICAgICAgfQogCi0gICAgICAg
IEhSRVNVTFQgaHIgPSBtX2ZyYW1lTG9hZERlbGVnYXRlLT5kaWRSZWNlaXZlSWNvbih0aGlzLCAo
T0xFX0hBTkRMRSloQml0bWFwLCBmcmFtZSk7CisgICAgICAgIEhSRVNVTFQgaHIgPSBtX2ZyYW1l
TG9hZERlbGVnYXRlLT5kaWRSZWNlaXZlSWNvbih0aGlzLCBoQml0bWFwLCBmcmFtZSk7CiAgICAg
ICAgIGlmIChociA9PSBFX05PVElNUEwpCiAgICAgICAgICAgICBEZWxldGVPYmplY3QoaEJpdG1h
cCk7CiAgICAgfQpAQCAtMzQ0NSwxMCArMzQ0NSw4IEBAIHZvaWQgV2ViVmlldzo6Y2FuY2VsRGVs
ZXRlQmFja2luZ1N0b3JlU28KICAgICBLaWxsVGltZXIobV92aWV3V2luZG93LCBEZWxldGVCYWNr
aW5nU3RvcmVUaW1lcik7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6
c2V0SG9zdFdpbmRvdyggCi0gICAgLyogW2luXSAqLyBPTEVfSEFORExFIG9sZVdpbmRvdykKK0hS
RVNVTFQgV2ViVmlldzo6c2V0SG9zdFdpbmRvdygvKiBbaW5dICovIEhXTkQgd2luZG93KQogewot
ICAgIEhXTkQgd2luZG93ID0gKEhXTkQpKFVMT05HNjQpb2xlV2luZG93OwogICAgIGlmIChtX3Zp
ZXdXaW5kb3cpIHsKICAgICAgICAgaWYgKHdpbmRvdykKICAgICAgICAgICAgIFNldFBhcmVudCht
X3ZpZXdXaW5kb3csIHdpbmRvdyk7CkBAIC0zNDY4LDEwICszNDY2LDkgQEAgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpzZXRIbwogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6Omhvc3RXaW5kb3coIAotICAgIC8qIFtyZXR2
YWxdW291dF0gKi8gT0xFX0hBTkRMRSogd2luZG93KQorSFJFU1VMVCBXZWJWaWV3Ojpob3N0V2lu
ZG93KC8qIFtyZXR2YWxdW291dF0gKi8gSFdORCogd2luZG93KQogewotICAgICp3aW5kb3cgPSAo
T0xFX0hBTkRMRSkoVUxPTkc2NCltX2hvc3RXaW5kb3c7CisgICAgKndpbmRvdyA9IG1faG9zdFdp
bmRvdzsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtMzU5NCwxNCArMzU5MSwxNCBAQCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OnJlY3RzCiAgICAgcmV0dXJuIGNyZWF0ZU1h
dGNoRW51bWVyYXRvcigmYWxsUmVjdHMsIHBtYXRjaGVzKTsKIH0KIAotSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBXZWJWaWV3OjpnZW5lcmF0ZVNlbGVjdGlvbkltYWdlKEJPT0wgZm9yY2VXaGl0
ZVRleHQsIE9MRV9IQU5ETEUqIGhCaXRtYXApCitIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdl
YlZpZXc6OmdlbmVyYXRlU2VsZWN0aW9uSW1hZ2UoQk9PTCBmb3JjZVdoaXRlVGV4dCwgSEJJVE1B
UCogaEJpdG1hcCkKIHsKICAgICAqaEJpdG1hcCA9IDA7CiAKICAgICBXZWJDb3JlOjpGcmFtZSYg
ZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwog
CiAgICAgYXV0byBiaXRtYXAgPSBpbWFnZUZyb21TZWxlY3Rpb24oJmZyYW1lLCBmb3JjZVdoaXRl
VGV4dCA/IFRSVUUgOiBGQUxTRSk7Ci0gICAgKmhCaXRtYXAgPSBzdGF0aWNfY2FzdDxPTEVfSEFO
RExFPihyZWludGVycHJldF9jYXN0PFVMT05HNjQ+KGJpdG1hcC5sZWFrKCkpKTsKKyAgICAqaEJp
dG1hcCA9IGJpdG1hcC5sZWFrKCk7CiAKICAgICByZXR1cm4gU19PSzsKIH0KQEAgLTM4NTYsOCAr
Mzg1Myw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6bWFpbkYKICAgICBy
ZXR1cm4gRV9OT1RJTVBMOwogfQogICAgIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJW
aWV3OjptYWluRnJhbWVJY29uKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBPTEVfSEFO
RExFKiAvKmhCaXRtYXAqLykKK0hSRVNVTFQgV2ViVmlldzo6bWFpbkZyYW1lSWNvbigvKiBbcmV0
dmFsXVtvdXRdICovIEhCSVRNQVAqIC8qaEJpdG1hcCovKQogewogICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgIHJldHVybiBFX05PVElNUEw7CkBAIC01MTI4LDEwICs1MTI0LDkgQEAgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjppblZpZQogICAgIHJldHVybiBFX05PVElN
UEw7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6dmlld1dpbmRvdygg
Ci0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gT0xFX0hBTkRMRSAqd2luZG93KQorSFJFU1VM
VCBXZWJWaWV3Ojp2aWV3V2luZG93KC8qIFtyZXR2YWxdW291dF0gKi8gSFdORCogd2luZG93KQog
ewotICAgICp3aW5kb3cgPSAoT0xFX0hBTkRMRSkoVUxPTkc2NCltX3ZpZXdXaW5kb3c7CisgICAg
KndpbmRvdyA9IG1fdmlld1dpbmRvdzsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtNTkwNyw5
ICs1OTAyLDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3Ojp3aW5kbwogICAg
IHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OnBh
aW50RG9jdW1lbnRSZWN0VG9Db250ZXh0KAotICAgIC8qIFtpbl0gKi8gUkVDVCByZWN0LAotICAg
IC8qIFtpbl0gKi8gT0xFX0hBTkRMRSBkZXZpY2VDb250ZXh0KQorSFJFU1VMVCBXZWJWaWV3Ojpw
YWludERvY3VtZW50UmVjdFRvQ29udGV4dChSRUNUIHJlY3QsIEhEQyBkZXZpY2VDb250ZXh0KQog
ewogICAgIGlmICghZGV2aWNlQ29udGV4dCkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKQEAg
LTU5MjAsMTAgKzU5MTMsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OnBh
aW50CiAgICAgcmV0dXJuIG1fbWFpbkZyYW1lLT5wYWludERvY3VtZW50UmVjdFRvQ29udGV4dChy
ZWN0LCBkZXZpY2VDb250ZXh0KTsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJW
aWV3OjpwYWludFNjcm9sbFZpZXdSZWN0VG9Db250ZXh0QXRQb2ludCgKLSAgICAvKiBbaW5dICov
IFJFQ1QgcmVjdCwKLSAgICAvKiBbaW5dICovIFBPSU5UIHB0LAotICAgIC8qIFtpbl0gKi8gT0xF
X0hBTkRMRSBkZXZpY2VDb250ZXh0KQorSFJFU1VMVCBXZWJWaWV3OjpwYWludFNjcm9sbFZpZXdS
ZWN0VG9Db250ZXh0QXRQb2ludChSRUNUIHJlY3QsIFBPSU5UIHB0LCBIREMgZGV2aWNlQ29udGV4
dCkKIHsKICAgICBpZiAoIWRldmljZUNvbnRleHQpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7
CkBAIC01OTkyLDE0ICs1OTgyLDEzIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmll
dzo6c2V0Q3UKICAgICByZXR1cm4gRV9GQUlMOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIFdlYlZpZXc6OmJhY2tpbmdTdG9yZSgKLSAgICAvKiBbb3V0LCByZXR2YWxdICovIE9MRV9I
QU5ETEUqIGhCaXRtYXApCitIUkVTVUxUIFdlYlZpZXc6OmJhY2tpbmdTdG9yZSgvKiBbb3V0LCBy
ZXR2YWxdICovIEhCSVRNQVAqIGhCaXRtYXApCiB7CiAgICAgaWYgKCFoQml0bWFwKQogICAgICAg
ICByZXR1cm4gRV9QT0lOVEVSOwogICAgIGlmICghbV9iYWNraW5nU3RvcmVCaXRtYXApCiAgICAg
ICAgIHJldHVybiBFX0ZBSUw7Ci0gICAgKmhCaXRtYXAgPSByZWludGVycHJldF9jYXN0PE9MRV9I
QU5ETEU+KG1fYmFja2luZ1N0b3JlQml0bWFwLT5nZXQoKSk7CisgICAgKmhCaXRtYXAgPSBtX2Jh
Y2tpbmdTdG9yZUJpdG1hcC0+Z2V0KCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTY5Mjcs
NyArNjkxNiw3IEBAIEhXTkQgV2ViVmlldzo6ZnVsbFNjcmVlbkNsaWVudFBhcmVudFdpbmQKIAog
dm9pZCBXZWJWaWV3OjpmdWxsU2NyZWVuQ2xpZW50U2V0UGFyZW50V2luZG93KEhXTkQgaG9zdFdp
bmRvdykKIHsKLSAgICBzZXRIb3N0V2luZG93KHJlaW50ZXJwcmV0X2Nhc3Q8T0xFX0hBTkRMRT4o
aG9zdFdpbmRvdykpOworICAgIHNldEhvc3RXaW5kb3coaG9zdFdpbmRvdyk7CiB9CiAKIHZvaWQg
V2ViVmlldzo6ZnVsbFNjcmVlbkNsaWVudFdpbGxFbnRlckZ1bGxTY3JlZW4oKQpJbmRleDogU291
cmNlL1dlYktpdC93aW4vV2ViVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2lu
L1dlYlZpZXcuaAkocmV2aXNpb24gMTcyOTQ2KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViVmll
dy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNDUsMTEgKzI0NSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcHJlZmVyZW5jZXNJZGVudGlmaWVyKCAKICAg
ICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSICphbklkZW50aWZpZXIpOwogICAgIAotICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRIb3N0V2luZG93KCAKLSAgICAg
ICAgLyogW2luXSAqLyBPTEVfSEFORExFIHdpbmRvdyk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIHNldEhvc3RXaW5kb3coSFdORCk7CiAgICAgCi0gICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGhvc3RXaW5kb3coIAotICAgICAgICAvKiBbcmV0dmFs
XVtvdXRdICovIE9MRV9IQU5ETEUgKndpbmRvdyk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIGhvc3RXaW5kb3coSFdORCopOwogICAgIAogICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBzZWFyY2hGb3IoIAogICAgICAgICAvKiBbaW5dICovIEJTVFIg
c3RyLApAQCAtMzI2LDggKzMyNCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgbWFpbkZyYW1lVGl0bGUoIAogICAgICAgICAvKiBbcmV0dmFsXVtvdXRd
ICovIEJTVFIgKnRpdGxlKTsKICAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgbWFpbkZyYW1lSWNvbiggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gT0xFX0hB
TkRMRSAqaEJpdG1hcCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG1h
aW5GcmFtZUljb24oLyogW3JldHZhbF1bb3V0XSAqLyBIQklUTUFQKiBoQml0bWFwKTsKIAogICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZWdpc3RlclVSTFNjaGVtZUFzTG9j
YWwoIAogICAgICAgICAvKiBbaW5dICovIEJTVFIgc2NoZW1lKTsKQEAgLTYyMyw4ICs2MjAsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGluVmlld1Nv
dXJjZU1vZGUoIAogICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIGZsYWcpOwogCi0g
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHZpZXdXaW5kb3coIAotICAgICAg
ICAvKiBbcmV0dmFsXVtvdXRdICovIE9MRV9IQU5ETEUgKndpbmRvdyk7CisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHZpZXdXaW5kb3coLyogW3JldHZhbF1bb3V0XSAqLyBI
V05EKiB3aW5kb3cpOwogCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNl
dEZvcm1EZWxlZ2F0ZSggCiAgICAgICAgIC8qIFtpbl0gKi8gSVdlYkZvcm1EZWxlZ2F0ZSAqZm9y
bURlbGVnYXRlKTsKQEAgLTY2MSw4ICs2NTcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIHJlY3RzRm9yVGV4dE1hdGNoZXMoCiAgICAgICAgIElFbnVt
VGV4dE1hdGNoZXMqKiBwbWF0Y2hlcyk7CiAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgZ2VuZXJhdGVTZWxlY3Rpb25JbWFnZSgKLSAgICAgICAgQk9PTCBmb3JjZVdoaXRl
VGV4dCwgT0xFX0hBTkRMRSogaEJpdG1hcCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIGdlbmVyYXRlU2VsZWN0aW9uSW1hZ2UoQk9PTCBmb3JjZVdoaXRlVGV4dCwgSEJJ
VE1BUCogaEJpdG1hcCk7CiAKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
c2VsZWN0aW9uUmVjdCgKICAgICAgICAgUkVDVCogcmMpOwpAQCAtNzE4LDE0ICs3MTMsOSBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd2luZG93QW5j
ZXN0cnlEaWRDaGFuZ2UoKTsKIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBwYWludERvY3VtZW50UmVjdFRvQ29udGV4dCgKLSAgICAgICAgLyogW2luXSAqLyBSRUNUIHJl
Y3QsCi0gICAgICAgIC8qIFtpbl0gKi8gT0xFX0hBTkRMRSBkYyk7Ci0KLSAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcGFpbnRTY3JvbGxWaWV3UmVjdFRvQ29udGV4dEF0UG9p
bnQoCi0gICAgICAgIC8qIFtpbl0gKi8gUkVDVCByZWN0LAotICAgICAgICAvKiBbaW5dICovIFBP
SU5UIHB0LAotICAgICAgICAvKiBbaW5dICovIE9MRV9IQU5ETEUgZGMpOworICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBwYWludERvY3VtZW50UmVjdFRvQ29udGV4dChSRUNU
LCBIREMpOworCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHBhaW50U2Ny
b2xsVmlld1JlY3RUb0NvbnRleHRBdFBvaW50KFJFQ1QsIFBPSU5ULCBIREMpOwogCiAgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJlcG9ydEV4Y2VwdGlvbigKICAgICAgICAg
LyogW2luXSAqLyBKU0NvbnRleHRSZWYgY29udGV4dCwKQEAgLTc0Miw4ICs3MzIsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEN1c3RvbUhUTUxU
b2tlbml6ZXJDaHVua1NpemUoCiAgICAgICAgIC8qIFtpbl0gKi8gaW50IGNodW5rU2l6ZSk7CiAK
LSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYmFja2luZ1N0b3JlKAotICAg
ICAgICAvKiBbb3V0LCByZXR2YWxdICovIE9MRV9IQU5ETEUqIGhCaXRtYXApOworICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBiYWNraW5nU3RvcmUoLyogW291dCwgcmV0dmFs
XSAqLyBIQklUTUFQKiBoQml0bWFwKTsKIAogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBzZXRUcmFuc3BhcmVudCgKICAgICAgICAgLyogW2luXSAqLyBCT09MIHRyYW5zcGFy
ZW50KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYkRvY3VtZW50Lmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJEb2N1bWVu
dC5pZGwJKHJldmlzaW9uIDE3Mjk0NikKKysrIFNvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMv
SVdlYkRvY3VtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtODYsNyArODYsNyBAQCBpbnRlcmZh
Y2UgSVdlYkRvY3VtZW50VmlldyA6IElVbmtub3duCiAgICAgICAgIEBhYnN0cmFjdCBDYWxsZWQg
YmVmb3JlIHRoZSBob3N0IHdpbmRvdyBpcyBzZXQgb24gdGhlIHBhcmVudCB3ZWIgdmlldy4KICAg
ICAgICAgLSAodm9pZCl2aWV3V2lsbE1vdmVUb0hvc3RXaW5kb3c6KE5TV2luZG93ICopaG9zdFdp
bmRvdzsKICAgICAqLwotICAgIEhSRVNVTFQgdmlld1dpbGxNb3ZlVG9Ib3N0V2luZG93KFtpbl0g
T0xFX0hBTkRMRSBod25kKTsKKyAgICBIUkVTVUxUIHZpZXdXaWxsTW92ZVRvSG9zdFdpbmRvdyhb
aW5dIEhXTkQgaHduZCk7CiAKICAgICAvKiEKICAgICAgICAgQG1ldGhvZCB2aWV3RGlkTW92ZVRv
SG9zdFdpbmRvdwpJbmRleDogU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViRW1iZWRk
ZWRWaWV3LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lX
ZWJFbWJlZGRlZFZpZXcuaWRsCShyZXZpc2lvbiAxNzI5NDYpCisrKyBTb3VyY2UvV2ViS2l0L3dp
bi9JbnRlcmZhY2VzL0lXZWJFbWJlZGRlZFZpZXcuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3
ICszNyw3IEBAIGltcG9ydCAib2NpZGwuaWRsIjsKIF0KIGludGVyZmFjZSBJV2ViRW1iZWRkZWRW
aWV3IDogSVVua25vd24KIHsKLSAgICBIUkVTVUxUIGNyZWF0ZVZpZXdXaW5kb3coW2luXSBPTEVf
SEFORExFIHBhcmVudFdpbmRvdywgW2luXSBMUFNJWkUgcGx1Z2luU2l6ZSwgW291dCwgcmV0dmFs
XSBPTEVfSEFORExFKiB3aW5kb3cpOworICAgIEhSRVNVTFQgY3JlYXRlVmlld1dpbmRvdyhbaW5d
IEhXTkQgcGFyZW50V2luZG93LCBbaW5dIExQU0laRSBwbHVnaW5TaXplLCBbb3V0LCByZXR2YWxd
IEhXTkQqIHdpbmRvdyk7CiAKICAgICBIUkVTVUxUIGRpZFJlY2VpdmVSZXNwb25zZShbaW5dIElX
ZWJVUkxSZXNwb25zZSogcmVzcG9uc2UpOwogICAgIEhSRVNVTFQgZGlkUmVjZWl2ZURhdGEoW2lu
XSBJU3RyZWFtKiBkYXRhKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvSVdl
YkVycm9yUHJpdmF0ZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vSW50ZXJm
YWNlcy9JV2ViRXJyb3JQcml2YXRlLmlkbAkocmV2aXNpb24gMTcyOTQ2KQorKysgU291cmNlL1dl
YktpdC93aW4vSW50ZXJmYWNlcy9JV2ViRXJyb3JQcml2YXRlLmlkbAkod29ya2luZyBjb3B5KQpA
QCAtNDMsNSArNDMsNSBAQCBpbXBvcnQgIm9jaWRsLmlkbCI7CiAKIGludGVyZmFjZSBJV2ViRXJy
b3JQcml2YXRlIDogSVVua25vd24KIHsKLSAgICBIUkVTVUxUIHNzbFBlZXJDZXJ0aWZpY2F0ZShb
b3V0LCByZXR2YWxdIE9MRV9IQU5ETEUqIHJlc3VsdCk7CisgICAgSFJFU1VMVCBzc2xQZWVyQ2Vy
dGlmaWNhdGUoW291dCwgcmV0dmFsXSBVTE9OR19QVFIqIHJlc3VsdCk7CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJGcmFtZUxvYWREZWxlZ2F0ZS5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViRnJhbWVMb2FkRGVsZWdh
dGUuaWRsCShyZXZpc2lvbiAxNzI5NDYpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2Vz
L0lXZWJGcmFtZUxvYWREZWxlZ2F0ZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEyMSw3ICsxMjEs
NyBAQCBpbnRlcmZhY2UgSVdlYkZyYW1lTG9hZERlbGVnYXRlIDogSVVua25vCiAgICAgICAgIEBw
YXJhbSBmcmFtZSBUaGUgZnJhbWUgZm9yIHdoaWNoIGEgcGFnZSBpY29uIGhhcyBiZWVuIHJlY2Vp
dmVkCiAgICAgICAgIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBkaWRSZWNlaXZl
SWNvbjooTlNJbWFnZSAqKWltYWdlIGZvckZyYW1lOihXZWJGcmFtZSAqKWZyYW1lOwogICAgICov
Ci0gICAgSFJFU1VMVCBkaWRSZWNlaXZlSWNvbihbaW5dIElXZWJWaWV3KiB3ZWJWaWV3LCBbaW5d
IE9MRV9IQU5ETEUgaEJpdG1hcCwgW2luXSBJV2ViRnJhbWUqIGZyYW1lKTsKKyAgICBIUkVTVUxU
IGRpZFJlY2VpdmVJY29uKFtpbl0gSVdlYlZpZXcqIHdlYlZpZXcsIFtpbl0gSEJJVE1BUCBoQml0
bWFwLCBbaW5dIElXZWJGcmFtZSogZnJhbWUpOwogCiAgICAgLyohCiAgICAgICAgIEBtZXRob2Qg
d2ViVmlldzpkaWRGaW5pc2hMb2FkRm9yRnJhbWU6CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9J
bnRlcmZhY2VzL0lXZWJGcmFtZVByaXZhdGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvd2luL0ludGVyZmFjZXMvSVdlYkZyYW1lUHJpdmF0ZS5pZGwJKHJldmlzaW9uIDE3Mjk0NikK
KysrIFNvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYkZyYW1lUHJpdmF0ZS5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTgwLDcgKzgwLDcgQEAgaW50ZXJmYWNlIElXZWJGcmFtZVByaXZhdGUg
OiBJVW5rbm93bgogCiAgICAgSFJFU1VMVCB1bnVzZWQzKCk7CiAKLSAgICBIUkVTVUxUIHBhaW50
RG9jdW1lbnRSZWN0VG9Db250ZXh0KFtpbl0gUkVDVCByZWN0LCBbaW5dIE9MRV9IQU5ETEUgZGV2
aWNlQ29udGV4dCk7CisgICAgSFJFU1VMVCBwYWludERvY3VtZW50UmVjdFRvQ29udGV4dChbaW5d
IFJFQ1QgcmVjdCwgW2luXSBIREMgZGV2aWNlQ29udGV4dCk7CiAKICAgICBIUkVTVUxUIGVsZW1l
bnREb2VzQXV0b0NvbXBsZXRlKFtpbl0gSURPTUVsZW1lbnQqIGVsZW1lbnQsIFtvdXQsIHJldHZh
bF0gQk9PTCogcmVzdWx0KTsKIApAQCAtMTA2LDcgKzEwNiw3IEBAIGludGVyZmFjZSBJV2ViRnJh
bWVQcml2YXRlIDogSVVua25vd24KIAogICAgIEhSRVNVTFQgbGF5ZXJUcmVlQXNUZXh0KFtvdXQs
IHJldHZhbF0gQlNUUiogcmVzdWx0KTsKIAotICAgIEhSRVNVTFQgcGFpbnRTY3JvbGxWaWV3UmVj
dFRvQ29udGV4dEF0UG9pbnQoW2luXSBSRUNUIHJlY3QsIFtpbl0gUE9JTlQgcHQsIFtpbl0gT0xF
X0hBTkRMRSBkZXZpY2VDb250ZXh0KTsKKyAgICBIUkVTVUxUIHBhaW50U2Nyb2xsVmlld1JlY3RU
b0NvbnRleHRBdFBvaW50KFtpbl0gUkVDVCByZWN0LCBbaW5dIFBPSU5UIHB0LCBbaW5dIEhEQyBk
ZXZpY2VDb250ZXh0KTsKIAogICAgIEhSRVNVTFQgcmVuZGVyVHJlZUFzRXh0ZXJuYWxSZXByZXNl
bnRhdGlvbihbaW5dIEJPT0wgZm9yUHJpbnRpbmcsIFtvdXQsIHJldHZhbF0gQlNUUiogcmVzdWx0
KTsKIApJbmRleDogU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViSGlzdG9yeUl0ZW0u
aWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYkhpc3Rv
cnlJdGVtLmlkbAkocmV2aXNpb24gMTcyOTQ2KQorKysgU291cmNlL1dlYktpdC93aW4vSW50ZXJm
YWNlcy9JV2ViSGlzdG9yeUl0ZW0uaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xMjEsNSArMTIxLDUg
QEAgaW50ZXJmYWNlIElXZWJIaXN0b3J5SXRlbSA6IElVbmtub3duCiAgICAgICAgIEByZXN1bHQg
VGhlIGljb24gYXNzb2NpYXRlZCB3aXRoIHRoaXMgaXRlbSdzIFVSTC4KICAgICAgICAgLSAoTlNJ
bWFnZSAqKWljb247CiAgICAgKi8KLSAgICBIUkVTVUxUIGljb24oW291dCwgcmV0dmFsXSBPTEVf
SEFORExFKiBoQml0bWFwKTsKKyAgICBIUkVTVUxUIGljb24oW291dCwgcmV0dmFsXSBIQklUTUFQ
KiBoQml0bWFwKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYklj
b25EYXRhYmFzZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNl
cy9JV2ViSWNvbkRhdGFiYXNlLmlkbAkocmV2aXNpb24gMTcyOTQ2KQorKysgU291cmNlL1dlYktp
dC93aW4vSW50ZXJmYWNlcy9JV2ViSWNvbkRhdGFiYXNlLmlkbAkod29ya2luZyBjb3B5KQpAQCAt
OTEsMTQgKzkxLDE0IEBAIGludGVyZmFjZSBJV2ViSWNvbkRhdGFiYXNlIDogSVVua25vd24KICAg
ICAgICAgQHBhcmFtIFVSTAogICAgICAgICAtIChOU1N0cmluZyAqKWljb25VUkxGb3JVUkw6KE5T
U3RyaW5nICopVVJMOwogICAgICovCi0gICAgSFJFU1VMVCBpY29uRm9yVVJMKFtpbl0gQlNUUiB1
cmwsIFtpbl0gTFBTSVpFIHNpemUsIFtpbl0gQk9PTCBjYWNoZSwgW291dCwgcmV0dmFsXSBPTEVf
SEFORExFKiBoQml0bWFwKTsKKyAgICBIUkVTVUxUIGljb25Gb3JVUkwoW2luXSBCU1RSIHVybCwg
W2luXSBMUFNJWkUgc2l6ZSwgW2luXSBCT09MIGNhY2hlLCBbb3V0LCByZXR2YWxdIEhCSVRNQVAq
IGhCaXRtYXApOwogCiAgICAgLyohCiAgICAgICAgIEBtZXRob2QgZGVmYXVsdEljb25XaXRoU2l6
ZToKICAgICAgICAgQHBhcmFtIHNpemUKICAgICAgICAgLSAoTlNJbWFnZSAqKWRlZmF1bHRJY29u
V2l0aFNpemU6KE5TU2l6ZSlzaXplOwogICAgICovCi0gICAgSFJFU1VMVCBkZWZhdWx0SWNvbldp
dGhTaXplKFtpbl0gTFBTSVpFIHNpemUsIFtvdXQsIHJldHZhbF0gT0xFX0hBTkRMRSogaEJpdG1h
cCk7CisgICAgSFJFU1VMVCBkZWZhdWx0SWNvbldpdGhTaXplKFtpbl0gTFBTSVpFIHNpemUsIFtv
dXQsIHJldHZhbF0gSEJJVE1BUCogaEJpdG1hcCk7CiAKICAgICAvKiEKICAgICAgICAgQG1ldGhv
ZCByZXRhaW5JY29uRm9yVVJMOgpJbmRleDogU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9J
V2ViTXV0YWJsZVVSTFJlcXVlc3RQcml2YXRlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJNdXRhYmxlVVJMUmVxdWVzdFByaXZhdGUuaWRsCShyZXZp
c2lvbiAxNzI5NDYpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJNdXRhYmxl
VVJMUmVxdWVzdFByaXZhdGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBAIGNw
cF9xdW90ZSgiI2VuZGlmIikKIF0KIGludGVyZmFjZSBJV2ViTXV0YWJsZVVSTFJlcXVlc3RQcml2
YXRlIDogSVVua25vd24KIHsKLSAgICBIUkVTVUxUIHNldENsaWVudENlcnRpZmljYXRlKFtpbl0g
T0xFX0hBTkRMRSBjZXJ0KTsKKyAgICBIUkVTVUxUIHNldENsaWVudENlcnRpZmljYXRlKFtpbl0g
VUxPTkdfUFRSIGNlcnQpOwogCiAgICAgW2xvY2FsXSBDRlVSTFJlcXVlc3RSZWYgY2ZSZXF1ZXN0
KCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJVSURlbGVnYXRl
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJVSURl
bGVnYXRlLmlkbAkocmV2aXNpb24gMTcyOTQ2KQorKysgU291cmNlL1dlYktpdC93aW4vSW50ZXJm
YWNlcy9JV2ViVUlEZWxlZ2F0ZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI1Myw3ICsyNTMsNyBA
QCBpbnRlcmZhY2UgSVdlYlVJRGVsZWdhdGUgOiBJVW5rbm93bgogICAgICAgICByZWFsIGZpcnN0
IHJlc3BvbmRlciBpZiBzb21lIGNvbnRyb2wgbm90IGluIHRoZSB3aW5kb3cgaGFzIGZvY3VzLgog
ICAgICAgICAtIChOU1Jlc3BvbmRlciAqKXdlYlZpZXdGaXJzdFJlc3BvbmRlcjooV2ViVmlldyAq
KXNlbmRlcjsKICAgICAqLwotICAgIEhSRVNVTFQgd2ViVmlld0ZpcnN0UmVzcG9uZGVyKFtpbl0g
SVdlYlZpZXcqIHNlbmRlciwgW291dCwgcmV0dmFsXSBPTEVfSEFORExFKiByZXNwb25kZXJIV25k
KTsKKyAgICBIUkVTVUxUIHdlYlZpZXdGaXJzdFJlc3BvbmRlcihbaW5dIElXZWJWaWV3KiBzZW5k
ZXIsIFtvdXQsIHJldHZhbF0gSFdORCogcmVzcG9uZGVySFduZCk7CiAKICAgICAvKiEKICAgICAg
ICAgQG1ldGhvZCB3ZWJWaWV3Om1ha2VGaXJzdFJlc3BvbmRlcjoKQEAgLTI2Nyw3ICsyNjcsNyBA
QCBpbnRlcmZhY2UgSVdlYlVJRGVsZWdhdGUgOiBJVW5rbm93bgogICAgICAgICBlbHNld2hlcmUs
IG9yIHBvc3NpYmx5IGlnbm9yZSB0aGlzIGNhbGwuCiAgICAgICAgIC0gKHZvaWQpd2ViVmlldzoo
V2ViVmlldyAqKXNlbmRlciBtYWtlRmlyc3RSZXNwb25kZXI6KE5TUmVzcG9uZGVyICopcmVzcG9u
ZGVyOwogICAgICovCi0gICAgSFJFU1VMVCBtYWtlRmlyc3RSZXNwb25kZXIoW2luXSBJV2ViVmll
dyogc2VuZGVyLCBbaW5dIE9MRV9IQU5ETEUgcmVzcG9uZGVySFduZCk7CisgICAgSFJFU1VMVCBt
YWtlRmlyc3RSZXNwb25kZXIoW2luXSBJV2ViVmlldyogc2VuZGVyLCBbaW5dIEhXTkQgcmVzcG9u
ZGVySFduZCk7CiAKICAgICAvKiEKICAgICAgICAgQG1ldGhvZCB3ZWJWaWV3OnNldFN0YXR1c1Rl
eHQ6CkBAIC00ODEsNyArNDgxLDcgQEAgaW50ZXJmYWNlIElXZWJVSURlbGVnYXRlIDogSVVua25v
d24KICAgICAgICAgQHJlc3VsdCBBbiBhcnJheSBvZiBOU01lbnVJdGVtcyB0byBpbmNsdWRlIGlu
IHRoZSBjb250ZXh0dWFsIG1lbnUuCiAgICAgICAgIC0gKE5TQXJyYXkgKil3ZWJWaWV3OihXZWJW
aWV3ICopc2VuZGVyIGNvbnRleHRNZW51SXRlbXNGb3JFbGVtZW50OihOU0RpY3Rpb25hcnkgKill
bGVtZW50IGRlZmF1bHRNZW51SXRlbXM6KE5TQXJyYXkgKilkZWZhdWx0TWVudUl0ZW1zOwogICAg
ICovCi0gICAgSFJFU1VMVCBjb250ZXh0TWVudUl0ZW1zRm9yRWxlbWVudChbaW5dIElXZWJWaWV3
KiBzZW5kZXIsIFtpbl0gSVByb3BlcnR5QmFnKiBlbGVtZW50LCBbaW5dIE9MRV9IQU5ETEUgZGVm
YXVsdEl0ZW1zSE1lbnUsIFtvdXQsIHJldHZhbF0gT0xFX0hBTkRMRSogcmVzdWx0SE1lbnUpOwor
ICAgIEhSRVNVTFQgY29udGV4dE1lbnVJdGVtc0ZvckVsZW1lbnQoW2luXSBJV2ViVmlldyogc2Vu
ZGVyLCBbaW5dIElQcm9wZXJ0eUJhZyogZWxlbWVudCwgW2luXSBITUVOVSBkZWZhdWx0SXRlbXNI
TWVudSwgW291dCwgcmV0dmFsXSBITUVOVSogcmVzdWx0SE1lbnUpOwogCiAgICAgLyohCiAgICAg
ICAgIEBtZXRob2Qgd2ViVmlldzp2YWxpZGF0ZVVzZXJJbnRlcmZhY2VJdGVtOmRlZmF1bHRWYWxp
ZGF0aW9uOgpAQCAtNTgxLDcgKzU4MSw3IEBAIGludGVyZmFjZSBJV2ViVUlEZWxlZ2F0ZSA6IElV
bmtub3duCiAgICAgICAgIEBwYXJhbSBtZW51IFRoZSBtZW51IHRoYXQgd2Ugd2FudCB0byBwb3Ag
dXAuCiAgICAgICAgIEBwYXJhbSBwb2ludCBUaGUgcG9pbnQgYXNzb2NpYXRlZCB3aXRoIHRoZSBj
b250ZXh0IG1lbnUgZXZlbnQgaW4gdGhlIGNvb3JkaW5hdGVzIG9mIHRoZSBXZWJWaWV3CiAgICAg
Ki8KLSAgICBIUkVTVUxUIHRyYWNrQ3VzdG9tUG9wdXBNZW51KFtpbl0gSVdlYlZpZXcqIHNlbmRl
ciwgW2luXSBPTEVfSEFORExFIGhNZW51LCBbaW5dIExQUE9JTlQgcG9pbnQpOworICAgIEhSRVNV
TFQgdHJhY2tDdXN0b21Qb3B1cE1lbnUoW2luXSBJV2ViVmlldyogc2VuZGVyLCBbaW5dIEhNRU5V
IGhNZW51LCBbaW5dIExQUE9JTlQgcG9pbnQpOwogCiAgICAgLyoKICAgICAgICAgQG1ldGhvZCB3
ZWJWaWV3Om1lYXN1cmVDdXN0b21NZW51SXRlbQpAQCAtNjA2LDcgKzYwNiw3IEBAIGludGVyZmFj
ZSBJV2ViVUlEZWxlZ2F0ZSA6IElVbmtub3duCiAgICAgICAgIEBwYXJhbSBtZW51IFRoZSBjdXRz
b20gbWVudSB0byBjbGVhbiB1cC4KICAgICAgICAgQGRpc2N1c3Npb24gVGhpcyBtZXRob2QgaXMg
Y2FsbGVkIGZvciBzdWJtZW51cyBhcyB3ZWxsLgogICAgICovCi0gICAgSFJFU1VMVCBhZGRDdXN0
b21NZW51RHJhd2luZ0RhdGEoW2luXSBJV2ViVmlldyogc2VuZGVyLCBbaW5dIE9MRV9IQU5ETEUg
aE1lbnUpOworICAgIEhSRVNVTFQgYWRkQ3VzdG9tTWVudURyYXdpbmdEYXRhKFtpbl0gSVdlYlZp
ZXcqIHNlbmRlciwgW2luXSBITUVOVSBoTWVudSk7CiAKICAgICAvKgogICAgICAgICBAbWV0aG9k
IHdlYlZpZXc6Y2xlYW5VcEN1c3RvbU1lbnVEcmF3aW5nRGF0YQpAQCAtNjE0LDcgKzYxNCw3IEBA
IGludGVyZmFjZSBJV2ViVUlEZWxlZ2F0ZSA6IElVbmtub3duCiAgICAgICAgIEBwYXJhbSBzZW5k
ZXIgVGhlIFdlYlZpZXcgc2VuZGluZyB0aGUgZGVsZWdhdGUgbWV0aG9kLgogICAgICAgICBAcGFy
YW0gbWVudSBUaGUgY3V0c29tIG1lbnUgdG8gY2xlYW4gdXAuCiAgICAgKi8KLSAgICBIUkVTVUxU
IGNsZWFuVXBDdXN0b21NZW51RHJhd2luZ0RhdGEoW2luXSBJV2ViVmlldyogc2VuZGVyLCBbaW5d
IE9MRV9IQU5ETEUgaE1lbnUpOworICAgIEhSRVNVTFQgY2xlYW5VcEN1c3RvbU1lbnVEcmF3aW5n
RGF0YShbaW5dIElXZWJWaWV3KiBzZW5kZXIsIFtpbl0gSE1FTlUgaE1lbnUpOwogCiAgICAgLyoh
CiAgICAgICAgIEBtZXRob2Qgd2ViVmlldzpjYW5UYWtlRm9jdXM6CkBAIC03MzIsNyArNzMyLDcg
QEAgaW50ZXJmYWNlIElXZWJVSURlbGVnYXRlIDogSVVua25vd24KIAogICAgIC0gKHZvaWQpd2Vi
VmlldzooV2ViVmlldyAqKXNlbmRlciBkcmF3SGVhZGVySW5SZWN0OihOU1JlY3QpcmVjdDsKICov
Ci0gICAgSFJFU1VMVCBkcmF3SGVhZGVySW5SZWN0KFtpbl0gSVdlYlZpZXcqIHdlYlZpZXcsIFtp
bl0gUkVDVCogcmVjdCwgW2luXSBPTEVfSEFORExFIGRyYXdpbmdDb250ZXh0KTsKKyAgICBIUkVT
VUxUIGRyYXdIZWFkZXJJblJlY3QoW2luXSBJV2ViVmlldyogd2ViVmlldywgW2luXSBSRUNUKiBy
ZWN0LCBbaW5dIFVMT05HX1BUUiBkcmF3aW5nQ29udGV4dCk7CiAKIC8qIQogICAgIEBtZXRob2Qg
d2ViVmlldzpkcmF3Rm9vdGVySW5SZWN0OgpAQCAtNzQyLDcgKzc0Miw3IEBAIGludGVyZmFjZSBJ
V2ViVUlEZWxlZ2F0ZSA6IElVbmtub3duCiAKICAgICAtICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcg
KilzZW5kZXIgZHJhd0Zvb3RlckluUmVjdDooTlNSZWN0KXJlY3Q7CiAqLwotICAgIEhSRVNVTFQg
ZHJhd0Zvb3RlckluUmVjdChbaW5dIElXZWJWaWV3KiB3ZWJWaWV3LCBbaW5dIFJFQ1QqIHJlY3Qs
IFtpbl0gT0xFX0hBTkRMRSBkcmF3aW5nQ29udGV4dCwgW2luXSBVSU5UIHBhZ2VJbmRleCwgW2lu
XSBVSU5UIHBhZ2VDb3VudCk7CisgICAgSFJFU1VMVCBkcmF3Rm9vdGVySW5SZWN0KFtpbl0gSVdl
YlZpZXcqIHdlYlZpZXcsIFtpbl0gUkVDVCogcmVjdCwgW2luXSBVTE9OR19QVFIgZHJhd2luZ0Nv
bnRleHQsIFtpbl0gVUlOVCBwYWdlSW5kZXgsIFtpbl0gVUlOVCBwYWdlQ291bnQpOwogCiAgICAg
SFJFU1VMVCB3ZWJWaWV3UHJpbnRpbmdNYXJnaW5SZWN0KFtpbl0gSVdlYlZpZXcqIHdlYlZpZXcs
IFtvdXQsIHJldHZhbF0gUkVDVCogcmVjdCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL0lu
dGVyZmFjZXMvSVdlYlVJRGVsZWdhdGVQcml2YXRlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJVSURlbGVnYXRlUHJpdmF0ZS5pZGwJKHJldmlzaW9u
IDE3Mjk0NikKKysrIFNvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYlVJRGVsZWdhdGVQ
cml2YXRlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQCBpbnRlcmZhY2UgSVdl
YlVJRGVsZWdhdGVQcml2YXRlIDogSVVua25vCiAgICAgSFJFU1VMVCB3ZWJWaWV3QWRkTWVzc2Fn
ZVRvQ29uc29sZShbaW5dIElXZWJWaWV3KiBzZW5kZXIsIFtpbl0gQlNUUiBtZXNzYWdlLCBbaW5d
IGludCBsaW5lTnVtYmVyLCBbaW5dIEJTVFIgdXJsLCBbaW5dIEJPT0wgaXNFcnJvcik7CiAgICAg
SFJFU1VMVCB3ZWJWaWV3U2hvdWxkSW50ZXJydXB0SmF2YVNjcmlwdChbaW5dIElXZWJWaWV3KiBz
ZW5kZXIsIFtvdXQsIHJldHZhbF0gQk9PTCogcmVzdWx0KTsKICAgICBIUkVTVUxUIHdlYlZpZXdS
ZWNlaXZlZEZvY3VzKFtpbl0gSVdlYlZpZXcqIHNlbmRlcik7Ci0gICAgSFJFU1VMVCB3ZWJWaWV3
TG9zdEZvY3VzKFtpbl0gSVdlYlZpZXcqIHNlbmRlciwgW2luXSBPTEVfSEFORExFIGxvc2VGb2N1
c1RvSFduZCk7CisgICAgSFJFU1VMVCB3ZWJWaWV3TG9zdEZvY3VzKFtpbl0gSVdlYlZpZXcqIHNl
bmRlciwgW2luXSBIV05EIGxvc2VGb2N1c1RvSFduZCk7CiAgICAgSFJFU1VMVCBkb0RyYWdEcm9w
KFtpbl0gSVdlYlZpZXcqIHNlbmRlciwgW2luXSBJRGF0YU9iamVjdCogZGF0YU9iamVjdCwgW2lu
XSBJRHJvcFNvdXJjZSogZHJvcFNvdXJjZSwgW2luXSBEV09SRCBva0VmZmVjdCwgW291dCwgcmV0
dmFsXSBEV09SRCogcGVyZm9ybWVkRWZmZWN0KTsKICAgICBIUkVTVUxUIHdlYlZpZXdHZXREbGdD
b2RlKFtpbl0gSVdlYlZpZXcqIHNlbmRlciwgW2luXSBVSU5UIGtleUNvZGUsIFtvdXQsIHJldHZh
bF0gTE9OR19QVFIqIGNvZGUpOwogICAgIEhSRVNVTFQgd2ViVmlld1BhaW50ZWQoW2luXSBJV2Vi
Vmlldyogc2VuZGVyKTsKQEAgLTY0LDcgKzY0LDcgQEAgaW50ZXJmYWNlIElXZWJVSURlbGVnYXRl
UHJpdmF0ZSA6IElVbmtubwogICAgIEhSRVNVTFQgZW1iZWRkZWRWaWV3V2l0aEFyZ3VtZW50cyhb
aW5dIElXZWJWaWV3KiBzZW5kZXIsIFtpbl0gSVdlYkZyYW1lKiBmcmFtZSwgW2luXSBJUHJvcGVy
dHlCYWcqIGFyZ3VtZW50cywgW291dCwgcmV0dmFsXSBJV2ViRW1iZWRkZWRWaWV3Kiogdmlldyk7
CiAgICAgSFJFU1VMVCB1bnVzZWQzKCk7CiAgICAgSFJFU1VMVCB3ZWJWaWV3Q2xvc2luZyhbaW5d
IElXZWJWaWV3KiBzZW5kZXIpOwotICAgIEhSRVNVTFQgd2ViVmlld1NldEN1cnNvcihbaW5dIElX
ZWJWaWV3KiBzZW5kZXIsIFtpbl0gT0xFX0hBTkRMRSBjdXJzb3IpOworICAgIEhSRVNVTFQgd2Vi
Vmlld1NldEN1cnNvcihbaW5dIElXZWJWaWV3KiBzZW5kZXIsIFtpbl0gSENVUlNPUiBjdXJzb3Ip
OwogICAgIEhSRVNVTFQgd2ViVmlld0RpZEludmFsaWRhdGUoW2luXSBJV2ViVmlldyogc2VuZGVy
KTsKIH0KIApAQCAtOTUsNyArOTUsNyBAQCBpbnRlcmZhY2UgSVdlYlVJRGVsZWdhdGVQcml2YXRl
MiA6IElXZWJVCiAgICAgLy8gc3RyaW5ncyBhYm92ZS4KICAgICBIUkVTVUxUIGNyZWF0ZVdlYlZp
ZXdXaXRoUmVxdWVzdChbaW5dIElXZWJWaWV3KiBzZW5kZXIsIFtpbl0gSVdlYlVSTFJlcXVlc3Qq
IHJlcXVlc3QsIFtpbl0gSVByb3BlcnR5QmFnKiB3aW5kb3dGZWF0dXJlcywgW291dCwgcmV0dmFs
XSBJV2ViVmlldyoqIG5ld1dlYlZpZXcpOwogCi0gICAgSFJFU1VMVCBkcmF3QmFja2dyb3VuZChb
aW5dIElXZWJWaWV3KiBzZW5kZXIsIFtpbl0gT0xFX0hBTkRMRSBoZGMsIFtpbl0gY29uc3QgUkVD
VCogZGlydHlSZWN0KTsKKyAgICBIUkVTVUxUIGRyYXdCYWNrZ3JvdW5kKFtpbl0gSVdlYlZpZXcq
IHNlbmRlciwgW2luXSBIREMgaGRjLCBbaW5dIGNvbnN0IFJFQ1QqIGRpcnR5UmVjdCk7CiAKICAg
ICBIUkVTVUxUIGRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUmVxdWVzdChbaW5dIElXZWJWaWV3
KiBzZW5kZXIsIFtpbl0gSVdlYkZyYW1lKiBmcmFtZSwgW2luXSBJV2ViU2VjdXJpdHlPcmlnaW4q
IG9yaWdpbiwgW2luXSBJV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciogbGlzdGVuZXIpOwog
fQpJbmRleDogU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViVVJMUmVzcG9uc2VQcml2
YXRlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJV
UkxSZXNwb25zZVByaXZhdGUuaWRsCShyZXZpc2lvbiAxNzI5NDYpCisrKyBTb3VyY2UvV2ViS2l0
L3dpbi9JbnRlcmZhY2VzL0lXZWJVUkxSZXNwb25zZVByaXZhdGUuaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC00MCw1ICs0MCw1IEBAIGltcG9ydCAib2NpZGwuaWRsIjsKIAogaW50ZXJmYWNlIElXZWJV
UkxSZXNwb25zZVByaXZhdGUgOiBJVW5rbm93bgogewotICAgIEhSRVNVTFQgc3NsUGVlckNlcnRp
ZmljYXRlKFtvdXQsIHJldHZhbF0gT0xFX0hBTkRMRSogcmVzdWx0KTsKKyAgICBIUkVTVUxUIHNz
bFBlZXJDZXJ0aWZpY2F0ZShbb3V0LCByZXR2YWxdIFVMT05HX1BUUiogcmVzdWx0KTsKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYlZpZXcuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYlZpZXcuaWRsCShyZXZpc2lvbiAx
NzI5NDYpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJWaWV3LmlkbAkod29y
a2luZyBjb3B5KQpAQCAtNTQ1LDE0ICs1NDUsMTQgQEAgaW50ZXJmYWNlIElXZWJWaWV3IDogSVVu
a25vd24KICAgICAgICAgbm90IGluIGFuIGFjdHVhbCB3aW5kb3cuCiAgICAgICAgIC0gKHZvaWQp
c2V0SG9zdFdpbmRvdzooTlNXaW5kb3cgKilob3N0V2luZG93OwogICAgICovCi0gICAgSFJFU1VM
VCBzZXRIb3N0V2luZG93KFtpbl0gT0xFX0hBTkRMRSB3aW5kb3cpOworICAgIEhSRVNVTFQgc2V0
SG9zdFdpbmRvdyhbaW5dIEhXTkQgd2luZG93KTsKIAogICAgIC8qIQogICAgICAgICBAbWV0aG9k
IGhvc3RXaW5kb3cKICAgICAgICAgQHJlc3VsdCBUaGUgaG9zdCB3aW5kb3cgZm9yIHRoZSB3ZWIg
dmlldy4KICAgICAgICAgLSAoTlNXaW5kb3cgKilob3N0V2luZG93OwogICAgICovCi0gICAgSFJF
U1VMVCBob3N0V2luZG93KFtvdXQsIHJldHZhbF0gT0xFX0hBTkRMRSogd2luZG93KTsKKyAgICBI
UkVTVUxUIGhvc3RXaW5kb3coW291dCwgcmV0dmFsXSBIV05EKiB3aW5kb3cpOwogCiAgICAgLyoh
CiAgICAgICAgIEBtZXRob2Qgc2VhcmNoRm9yOmRpcmVjdGlvbjpjYXNlU2Vuc2l0aXZlOgpAQCAt
NzM1LDcgKzczNSw3IEBAIGludGVyZmFjZSBJV2ViVmlldyA6IElVbmtub3duCiAgICAgICAgIEBy
ZXN1bHQgUmV0dXJucyB0aGUgbWFpbiBmcmFtZSdzIGljb24gaWYgYW55LCBvdGhlcndpc2Ugbmls
LgogICAgICAgICAtIChOU0ltYWdlICopbWFpbkZyYW1lSWNvbjsKICAgICAqLwotICAgIEhSRVNV
TFQgbWFpbkZyYW1lSWNvbihbb3V0LCByZXR2YWxdIE9MRV9IQU5ETEUqIGhCaXRtYXApOworICAg
IEhSRVNVTFQgbWFpbkZyYW1lSWNvbihbb3V0LCByZXR2YWxdIEhCSVRNQVAqIGhCaXRtYXApOwog
CiAgICAgLyohCiAgICAgICAgIEBtZXRob2QgcmVnaXN0ZXJVUkxTY2hlbWVBc0xvY2FsCkluZGV4
OiBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJWaWV3UHJpdmF0ZS5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViVmlld1ByaXZhdGUuaWRs
CShyZXZpc2lvbiAxNzI5NDYpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJW
aWV3UHJpdmF0ZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTcyLDcgKzcyLDcgQEAgaW50ZXJmYWNl
IElXZWJWaWV3UHJpdmF0ZSA6IElVbmtub3duCiAgICAgICAqLwogICAgIEhSRVNVTFQgaW5WaWV3
U291cmNlTW9kZShbb3V0LCByZXR2YWxdIEJPT0wqIGZsYWcpOwogCi0gICAgSFJFU1VMVCB2aWV3
V2luZG93KFtvdXQsIHJldHZhbF0gT0xFX0hBTkRMRSogd2luZG93KTsKKyAgICBIUkVTVUxUIHZp
ZXdXaW5kb3coW291dCwgcmV0dmFsXSBIV05EKiB3aW5kb3cpOwogCiAgICAgLy8gTWF5IHdlbGwg
YmVjb21lIHB1YmxpYwogICAgIC8vLSAodm9pZClfc2V0Rm9ybURlbGVnYXRlOihpZDxXZWJGb3Jt
RGVsZWdhdGU+KWRlbGVnYXRlOwpAQCAtOTYsNyArOTYsNyBAQCBpbnRlcmZhY2UgSVdlYlZpZXdQ
cml2YXRlIDogSVVua25vd24KICAgICBIUkVTVUxUIHVubWFya0FsbFRleHRNYXRjaGVzKCk7CiAg
ICAgSFJFU1VMVCByZWN0c0ZvclRleHRNYXRjaGVzKFtvdXRdSUVudW1UZXh0TWF0Y2hlcyoqIHBt
YXRjaGVzKTsKICAgICBIUkVTVUxUIHNlbGVjdGlvblJlY3QoW2luLCBvdXRdIFJFQ1QqIHJjKTsK
LSAgICBIUkVTVUxUIGdlbmVyYXRlU2VsZWN0aW9uSW1hZ2UoQk9PTCBmb3JjZVdoaXRlVGV4dCwg
W291dCwgcmV0dmFsXSBPTEVfSEFORExFKiBoQml0bWFwKTsKKyAgICBIUkVTVUxUIGdlbmVyYXRl
U2VsZWN0aW9uSW1hZ2UoQk9PTCBmb3JjZVdoaXRlVGV4dCwgW291dCwgcmV0dmFsXSBIQklUTUFQ
KiBoQml0bWFwKTsKIAogICAgIEhSRVNVTFQgY2FuSGFuZGxlUmVxdWVzdChbaW5dIElXZWJVUkxS
ZXF1ZXN0KiByZXF1ZXN0LCBbb3V0LCByZXR2YWxdIEJPT0wqIHJlc3VsdCk7CiAKQEAgLTEzNyw3
ICsxMzcsNyBAQCBpbnRlcmZhY2UgSVdlYlZpZXdQcml2YXRlIDogSVVua25vd24KIAogICAgIEhS
RVNVTFQgd2luZG93QW5jZXN0cnlEaWRDaGFuZ2UoKTsKIAotICAgIEhSRVNVTFQgcGFpbnREb2N1
bWVudFJlY3RUb0NvbnRleHQoW2luXSBSRUNUIHJlY3QsIFtpbl0gT0xFX0hBTkRMRSBkYyk7Cisg
ICAgSFJFU1VMVCBwYWludERvY3VtZW50UmVjdFRvQ29udGV4dChbaW5dIFJFQ1QgcmVjdCwgW2lu
XSBIREMgZGMpOwogCiAgICAgSFJFU1VMVCBzZXREZWZlcnNDYWxsYmFja3MoW2luXSBCT09MIGRl
ZmVyc0NhbGxiYWNrcyk7CiAgICAgSFJFU1VMVCBkZWZlcnNDYWxsYmFja3MoW291dCwgcmV0dmFs
XSBCT09MKiBkZWZlcnNDYWxsYmFja3MpOwpAQCAtMTQ3LDcgKzE0Nyw3IEBAIGludGVyZmFjZSBJ
V2ViVmlld1ByaXZhdGUgOiBJVW5rbm93bgogICAgIEhSRVNVTFQgc2V0Q3VzdG9tSFRNTFRva2Vu
aXplclRpbWVEZWxheShbaW5dIGRvdWJsZSB0aW1lRGVsYXkpOwogICAgIEhSRVNVTFQgc2V0Q3Vz
dG9tSFRNTFRva2VuaXplckNodW5rU2l6ZShbaW5dIGludCBjaHVua1NpemUpOwogCi0gICAgSFJF
U1VMVCBiYWNraW5nU3RvcmUoW291dCwgcmV0dmFsXSBPTEVfSEFORExFKiBoQml0bWFwKTsKKyAg
ICBIUkVTVUxUIGJhY2tpbmdTdG9yZShbb3V0LCByZXR2YWxdIEhCSVRNQVAqIGhCaXRtYXApOwog
CiAgICAgSFJFU1VMVCBzZXRUcmFuc3BhcmVudChbaW5dIEJPT0wgdHJhbnNwYXJlbnQpOwogICAg
IEhSRVNVTFQgdHJhbnNwYXJlbnQoW291dCwgcmV0dmFsXSBCT09MKiB0cmFuc3BhcmVudCk7CkBA
IC0yMzMsNyArMjMzLDcgQEAgaW50ZXJmYWNlIElXZWJWaWV3UHJpdmF0ZSA6IElVbmtub3duCiAK
ICAgICBIUkVTVUxUIG5leHREaXNwbGF5SXNTeW5jaHJvbm91cygpOwogCi0gICAgSFJFU1VMVCBw
YWludFNjcm9sbFZpZXdSZWN0VG9Db250ZXh0QXRQb2ludChbaW5dIFJFQ1QgcmVjdCwgW2luXSBQ
T0lOVCBwdCwgW2luXSBPTEVfSEFORExFIGRjKTsKKyAgICBIUkVTVUxUIHBhaW50U2Nyb2xsVmll
d1JlY3RUb0NvbnRleHRBdFBvaW50KFtpbl0gUkVDVCByZWN0LCBbaW5dIFBPSU5UIHB0LCBbaW5d
IEhEQyBkYyk7CiAKICAgICBbbG9jYWxdIEhSRVNVTFQgcmVwb3J0RXhjZXB0aW9uKFtpbl0gSlND
b250ZXh0UmVmIGNvbnRleHQsIFtpbl0gSlNWYWx1ZVJlZiBleGNlcHRpb24pOwogCkluZGV4OiBT
b3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9FbWJlZGRlZFdpZGdldC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvRW1iZWRkZWRXaWRnZXQu
Y3BwCShyZXZpc2lvbiAxNzI5NDYpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9y
dC9FbWJlZGRlZFdpZGdldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDE2ICs1NiwxNSBAQCBi
b29sIEVtYmVkZGVkV2lkZ2V0OjpjcmVhdGVXaW5kb3coSFdORCBwCiB7CiAgICAgQVNTRVJUKCFt
X3dpbmRvdyk7CiAKLSAgICBPTEVfSEFORExFIHdpbmRvdzsKLQorICAgIEhXTkQgd2luZG93Owog
ICAgIFNJWkUgcGx1Z2luU2l6ZShzaXplKTsKIAotICAgIEhSRVNVTFQgaHIgPSBtX3ZpZXctPmNy
ZWF0ZVZpZXdXaW5kb3cocmVpbnRlcnByZXRfY2FzdDxPTEVfSEFORExFPihwYXJlbnRXaW5kb3cp
LCAmcGx1Z2luU2l6ZSwgJndpbmRvdyk7CisgICAgSFJFU1VMVCBociA9IG1fdmlldy0+Y3JlYXRl
Vmlld1dpbmRvdyhwYXJlbnRXaW5kb3csICZwbHVnaW5TaXplLCAmd2luZG93KTsKICAgICAgICAg
CiAgICAgaWYgKEZBSUxFRChocikgfHwgIXdpbmRvdykKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgbV93aW5kb3cgPSByZWludGVycHJldF9jYXN0PEhXTkQ+KHdpbmRvdyk7CisgICAgbV93
aW5kb3cgPSB3aW5kb3c7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAkocmV2
aXNpb24gMTcyOTQ2KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDg5LDcgKzQ4OSw3IEBAIHZvaWQgV2Vi
Q2hyb21lQ2xpZW50OjpzY3JvbGwoY29uc3QgSW50U2kKIEludFJlY3QgV2ViQ2hyb21lQ2xpZW50
Ojpyb290Vmlld1RvU2NyZWVuKGNvbnN0IEludFJlY3QmIHJlY3QpIGNvbnN0CiB7CiAgICAgSFdO
RCB2aWV3V2luZG93OwotICAgIGlmIChGQUlMRUQobV93ZWJWaWV3LT52aWV3V2luZG93KHJlaW50
ZXJwcmV0X2Nhc3Q8T0xFX0hBTkRMRSo+KCZ2aWV3V2luZG93KSkpKQorICAgIGlmIChGQUlMRUQo
bV93ZWJWaWV3LT52aWV3V2luZG93KCZ2aWV3V2luZG93KSkpCiAgICAgICAgIHJldHVybiByZWN0
OwogCiAgICAgLy8gRmluZCB0aGUgdG9wIGxlZnQgY29ybmVyIG9mIHRoZSBXaWRnZXQncyBjb250
YWluaW5nIHdpbmRvdyBpbiBzY3JlZW4gY29vcmRzLApAQCAtNTA3LDcgKzUwNyw3IEBAIEludFBv
aW50IFdlYkNocm9tZUNsaWVudDo6c2NyZWVuVG9Sb290VmkKICAgICBQT0lOVCByZXN1bHQgPSBw
b2ludDsKIAogICAgIEhXTkQgdmlld1dpbmRvdzsKLSAgICBpZiAoRkFJTEVEKG1fd2ViVmlldy0+
dmlld1dpbmRvdyhyZWludGVycHJldF9jYXN0PE9MRV9IQU5ETEUqPigmdmlld1dpbmRvdykpKSkK
KyAgICBpZiAoRkFJTEVEKG1fd2ViVmlldy0+dmlld1dpbmRvdygmdmlld1dpbmRvdykpKQogICAg
ICAgICByZXR1cm4gcG9pbnQ7CiAKICAgICA6OlNjcmVlblRvQ2xpZW50KHZpZXdXaW5kb3csICZy
ZXN1bHQpOwpAQCAtNTE4LDcgKzUxOCw3IEBAIEludFBvaW50IFdlYkNocm9tZUNsaWVudDo6c2Ny
ZWVuVG9Sb290VmkKIFBsYXRmb3JtUGFnZUNsaWVudCBXZWJDaHJvbWVDbGllbnQ6OnBsYXRmb3Jt
UGFnZUNsaWVudCgpIGNvbnN0CiB7CiAgICAgSFdORCB2aWV3V2luZG93OwotICAgIGlmIChGQUlM
RUQobV93ZWJWaWV3LT52aWV3V2luZG93KHJlaW50ZXJwcmV0X2Nhc3Q8T0xFX0hBTkRMRSo+KCZ2
aWV3V2luZG93KSkpKQorICAgIGlmIChGQUlMRUQobV93ZWJWaWV3LT52aWV3V2luZG93KCZ2aWV3
V2luZG93KSkpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiB2aWV3V2luZG93OwogfQpA
QCAtNjU0LDcgKzY1NCw3IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpydW5PcGVuUGFuZWwoRnJh
bWUKICAgICBSZWZQdHI8RmlsZUNob29zZXI+IGZpbGVDaG9vc2VyID0gcHJwRmlsZUNob29zZXI7
CiAKICAgICBIV05EIHZpZXdXaW5kb3c7Ci0gICAgaWYgKEZBSUxFRChtX3dlYlZpZXctPnZpZXdX
aW5kb3cocmVpbnRlcnByZXRfY2FzdDxPTEVfSEFORExFKj4oJnZpZXdXaW5kb3cpKSkpCisgICAg
aWYgKEZBSUxFRChtX3dlYlZpZXctPnZpZXdXaW5kb3coJnZpZXdXaW5kb3cpKSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgYm9vbCBtdWx0aUZpbGUgPSBmaWxlQ2hvb3Nlci0+c2V0dGluZ3MoKS5h
bGxvd3NNdWx0aXBsZUZpbGVzOwpAQCAtNzI2LDcgKzcyNiw3IEBAIHZvaWQgV2ViQ2hyb21lQ2xp
ZW50OjpzZXRDdXJzb3IoY29uc3QgQ3UKICAgICBpZiAoQ09NUHRyPElXZWJVSURlbGVnYXRlPiBk
ZWxlZ2F0ZSA9IHVpRGVsZWdhdGUoKSkgewogICAgICAgICBDT01QdHI8SVdlYlVJRGVsZWdhdGVQ
cml2YXRlPiBkZWxlZ2F0ZVByaXZhdGUoUXVlcnksIGRlbGVnYXRlKTsKICAgICAgICAgaWYgKGRl
bGVnYXRlUHJpdmF0ZSkgewotICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChkZWxlZ2F0ZVByaXZh
dGUtPndlYlZpZXdTZXRDdXJzb3IobV93ZWJWaWV3LCByZWludGVycHJldF9jYXN0PE9MRV9IQU5E
TEU+KHBsYXRmb3JtQ3Vyc29yKSkpKQorICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChkZWxlZ2F0
ZVByaXZhdGUtPndlYlZpZXdTZXRDdXJzb3IobV93ZWJWaWV3LCBwbGF0Zm9ybUN1cnNvcikpKQog
ICAgICAgICAgICAgICAgIHNob3VsZFNldEN1cnNvciA9IGZhbHNlOwogICAgICAgICB9CiAgICAg
fQpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVD
bGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcAkocmV2aXNpb24gMTcyOTQ2KQorKysgU291cmNlL1dl
YktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02MywxNyArNjMsMTcgQEAgUGFzc093blB0cjxDb250ZXh0TWVudT4gV2ViQ29u
dGV4dE1lbnVDbAogCiAgICAgQVNTRVJUKHVpRGVsZWdhdGUpOwogCi0gICAgT0xFX0hBTkRMRSBu
YXRpdmVNZW51ID0gcmVpbnRlcnByZXRfY2FzdDxPTEVfSEFORExFPihtZW51LT5wbGF0Zm9ybUNv
bnRleHRNZW51KCkpOworICAgIEhNRU5VIG5hdGl2ZU1lbnUgPSBtZW51LT5wbGF0Zm9ybUNvbnRl
eHRNZW51KCk7CiAgICAgQ09NUHRyPFdlYkVsZW1lbnRQcm9wZXJ0eUJhZz4gcHJvcGVydHlCYWc7
CiAgICAgcHJvcGVydHlCYWcuYWRvcHRSZWYoV2ViRWxlbWVudFByb3BlcnR5QmFnOjpjcmVhdGVJ
bnN0YW5jZShtX3dlYlZpZXctPnBhZ2UoKS0+Y29udGV4dE1lbnVDb250cm9sbGVyKCkuaGl0VGVz
dFJlc3VsdCgpKSk7CiAgICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gZGVjaWRlIHdoZXRoZXIgdG8g
ZG8gdGhlIGRlZmF1bHQgYmVmb3JlIGNhbGxpbmcgdGhpcyBkZWxlZ2F0ZSBtZXRob2QKICAgICBp
ZiAoRkFJTEVEKHVpRGVsZWdhdGUtPmNvbnRleHRNZW51SXRlbXNGb3JFbGVtZW50KG1fd2ViVmll
dywgcHJvcGVydHlCYWcuZ2V0KCksIG5hdGl2ZU1lbnUsICZuYXRpdmVNZW51KSkpIHsKLSAgICAg
ICAgOjpEZXN0cm95TWVudShyZWludGVycHJldF9jYXN0PEhNRU5VPihuYXRpdmVNZW51KSk7Cisg
ICAgICAgIDo6RGVzdHJveU1lbnUobmF0aXZlTWVudSk7CiAgICAgICAgIHJldHVybiBtZW51LnJl
bGVhc2UoKTsKICAgICB9CiAgICAgCi0gICAgT3duUHRyPENvbnRleHRNZW51PiBjdXN0b21pemVk
TWVudSA9IGFkb3B0UHRyKG5ldyBDb250ZXh0TWVudShyZWludGVycHJldF9jYXN0PEhNRU5VPihu
YXRpdmVNZW51KSkpOwotICAgIDo6RGVzdHJveU1lbnUocmVpbnRlcnByZXRfY2FzdDxITUVOVT4o
bmF0aXZlTWVudSkpOworICAgIE93blB0cjxDb250ZXh0TWVudT4gY3VzdG9taXplZE1lbnUgPSBh
ZG9wdFB0cihuZXcgQ29udGV4dE1lbnUobmF0aXZlTWVudSkpOworICAgIDo6RGVzdHJveU1lbnUo
bmF0aXZlTWVudSk7CiAKICAgICByZXR1cm4gY3VzdG9taXplZE1lbnUucmVsZWFzZSgpOwogfQpJ
bmRleDogU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkocmV2aXNpb24gMTcyOTQ2KQorKysgU291cmNlL1dlYktp
dC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTY3LDExICsxMTY3LDExIEBAIFBhc3NSZWZQdHI8V2lkZ2V0PiBXZWJGcmFtZUxv
YWRlckNsaWVudDoKICAgICAgICAgICAgIENPTVB0cjxJV2ViRW1iZWRkZWRWaWV3PiB2aWV3Owog
ICAgICAgICAgICAgSFJFU1VMVCByZXN1bHQgPSB1aVByaXZhdGUtPmVtYmVkZGVkVmlld1dpdGhB
cmd1bWVudHMod2ViVmlldywgbV93ZWJGcmFtZSwgYXJndW1lbnRzQmFnLmdldCgpLCAmdmlldyk7
CiAgICAgICAgICAgICBpZiAoU1VDQ0VFREVEKHJlc3VsdCkpIHsKLSAgICAgICAgICAgICAgICBP
TEVfSEFORExFIHBhcmVudFdpbmRvdzsKKyAgICAgICAgICAgICAgICBIV05EIHBhcmVudFdpbmRv
dzsKICAgICAgICAgICAgICAgICBIUkVTVUxUIGhyID0gd2ViVmlldy0+dmlld1dpbmRvdygmcGFy
ZW50V2luZG93KTsKICAgICAgICAgICAgICAgICBBU1NFUlQoU1VDQ0VFREVEKGhyKSk7CiAKLSAg
ICAgICAgICAgICAgICByZXR1cm4gRW1iZWRkZWRXaWRnZXQ6OmNyZWF0ZSh2aWV3LmdldCgpLCBl
bGVtZW50LCByZWludGVycHJldF9jYXN0PEhXTkQ+KHBhcmVudFdpbmRvdyksIHBsdWdpblNpemUp
OworICAgICAgICAgICAgICAgIHJldHVybiBFbWJlZGRlZFdpZGdldDo6Y3JlYXRlKHZpZXcuZ2V0
KCksIGVsZW1lbnQsIHBhcmVudFdpbmRvdywgcGx1Z2luU2l6ZSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJJbnNwZWN0b3JDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAJKHJldmlzaW9uIDE3Mjk0NikKKysr
IFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2
LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTQgQXBw
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtOTcsNyArOTcsNyBAQCBXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwq
IFdlYkluCiAKICAgICBDT01QdHI8V2ViVmlldz4gZnJvbnRlbmRXZWJWaWV3KEFkb3B0Q09NLCBX
ZWJWaWV3OjpjcmVhdGVJbnN0YW5jZSgpKTsKIAotICAgIGlmIChGQUlMRUQoZnJvbnRlbmRXZWJW
aWV3LT5zZXRIb3N0V2luZG93KChPTEVfSEFORExFKShVTE9ORzY0KWZyb250ZW5kSHduZCkpKQor
ICAgIGlmIChGQUlMRUQoZnJvbnRlbmRXZWJWaWV3LT5zZXRIb3N0V2luZG93KGZyb250ZW5kSHdu
ZCkpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIFJFQ1QgcmVjdDsKQEAgLTE1NCw3ICsxNTQs
NyBAQCBXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIFdlYkluCiAgICAgZnJvbnRl
bmRXZWJWaWV3LT5zZXRQcm9oaWJpdHNNYWluRnJhbWVTY3JvbGxpbmcoVFJVRSk7CiAKICAgICBI
V05EIGZyb250ZW5kV2ViVmlld0h3bmQ7Ci0gICAgaWYgKEZBSUxFRChmcm9udGVuZFdlYlZpZXct
PnZpZXdXaW5kb3cocmVpbnRlcnByZXRfY2FzdDxPTEVfSEFORExFKj4oJmZyb250ZW5kV2ViVmll
d0h3bmQpKSkpCisgICAgaWYgKEZBSUxFRChmcm9udGVuZFdlYlZpZXctPnZpZXdXaW5kb3coJmZy
b250ZW5kV2ViVmlld0h3bmQpKSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBDT01QdHI8V2Vi
TXV0YWJsZVVSTFJlcXVlc3Q+IHJlcXVlc3QoQWRvcHRDT00sIFdlYk11dGFibGVVUkxSZXF1ZXN0
OjpjcmVhdGVJbnN0YW5jZSgpKTsKQEAgLTE3MSwxMCArMTcxLDEwIEBAIFdlYkNvcmU6Okluc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbCogV2ViSW4KICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBtX2Zy
b250ZW5kUGFnZSA9IGNvcmUoZnJvbnRlbmRXZWJWaWV3LmdldCgpKTsKLSAgICBhdXRvIGZyb250
ZW5kQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudD4o
bV9pbnNwZWN0ZWRXZWJWaWV3LCByZWludGVycHJldF9jYXN0PEhXTkQ+KG1faW5zcGVjdGVkV2Vi
Vmlld0hhbmRsZSksIGZyb250ZW5kSHduZCwgZnJvbnRlbmRXZWJWaWV3LCBmcm9udGVuZFdlYlZp
ZXdId25kLCB0aGlzLCBjcmVhdGVGcm9udGVuZFNldHRpbmdzKCkpOworICAgIGF1dG8gZnJvbnRl
bmRDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50Piht
X2luc3BlY3RlZFdlYlZpZXcsIG1faW5zcGVjdGVkV2ViVmlld0hhbmRsZSwgZnJvbnRlbmRId25k
LCBmcm9udGVuZFdlYlZpZXcsIGZyb250ZW5kV2ViVmlld0h3bmQsIHRoaXMsIGNyZWF0ZUZyb250
ZW5kU2V0dGluZ3MoKSk7CiAgICAgbV9mcm9udGVuZENsaWVudCA9IGZyb250ZW5kQ2xpZW50Lmdl
dCgpOwogICAgIG1fZnJvbnRlbmRQYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2V0SW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQoV1RGOjptb3ZlKGZyb250ZW5kQ2xpZW50KSk7Ci0gICAgbV9mcm9u
dGVuZEhhbmRsZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8T0xFX0hBTkRMRT4oZnJvbnRlbmRId25kKTsK
KyAgICBtX2Zyb250ZW5kSGFuZGxlID0gZnJvbnRlbmRId25kOwogICAgIHJldHVybiB0aGlzOwog
fQogCkBAIC0yMDEsOCArMjAxLDggQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OmhpZ2hsaWdo
dCgpCiAgICAgZWxzZQogICAgICAgICBtX2hpZ2hsaWdodC0+c2V0U2hvd3NXaGlsZVdlYlZpZXdJ
c1Zpc2libGUodHJ1ZSk7CiAKLSAgICBpZiAoY3JlYXRpbmdIaWdobGlnaHQgJiYgSXNXaW5kb3dW
aXNpYmxlKChIV05EKW1fZnJvbnRlbmRIYW5kbGUpKQotICAgICAgICBtX2hpZ2hsaWdodC0+cGxh
Y2VCZWhpbmRXaW5kb3cocmVpbnRlcnByZXRfY2FzdDxIV05EPihtX2Zyb250ZW5kSGFuZGxlKSk7
CisgICAgaWYgKGNyZWF0aW5nSGlnaGxpZ2h0ICYmIElzV2luZG93VmlzaWJsZShtX2Zyb250ZW5k
SGFuZGxlKSkKKyAgICAgICAgbV9oaWdobGlnaHQtPnBsYWNlQmVoaW5kV2luZG93KG1fZnJvbnRl
bmRIYW5kbGUpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6aGlkZUhpZ2hsaWdodCgp
CkBAIC0zMTMsMTIgKzMxMywxMiBAQCB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50Ojpz
ZXRBdHRhCiAgICAgaWYgKCFtX2F0dGFjaGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBPTEVf
SEFORExFIGhvc3RXaW5kb3c7CisgICAgSFdORCBob3N0V2luZG93OwogICAgIGlmICghU1VDQ0VF
REVEKG1faW5zcGVjdGVkV2ViVmlldy0+aG9zdFdpbmRvdygmaG9zdFdpbmRvdykpKQogICAgICAg
ICByZXR1cm47CiAKICAgICBSRUNUIGhvc3RXaW5kb3dSZWN0OwotICAgIEdldENsaWVudFJlY3Qo
cmVpbnRlcnByZXRfY2FzdDxIV05EPihob3N0V2luZG93KSwgJmhvc3RXaW5kb3dSZWN0KTsKKyAg
ICBHZXRDbGllbnRSZWN0KGhvc3RXaW5kb3csICZob3N0V2luZG93UmVjdCk7CiAKICAgICBSRUNU
IGluc3BlY3RlZFJlY3Q7CiAgICAgR2V0Q2xpZW50UmVjdChtX2luc3BlY3RlZFdlYlZpZXdId25k
LCAmaW5zcGVjdGVkUmVjdCk7CkBAIC0zNzEsMTIgKzM3MSwxMiBAQCB2b2lkIFdlYkluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50OjpjbG9zZVdpCiAKICAgICBtX2F0dGFjaGVkID0gZmFsc2U7CiAKLSAg
ICBtX2Zyb250ZW5kV2ViVmlldy0+c2V0SG9zdFdpbmRvdyhyZWludGVycHJldF9jYXN0PE9MRV9I
QU5ETEU+KG1fZnJvbnRlbmRId25kKSk7CisgICAgbV9mcm9udGVuZFdlYlZpZXctPnNldEhvc3RX
aW5kb3cobV9mcm9udGVuZEh3bmQpOwogCiAgICAgLy8gTWFrZSBzdXJlIGV2ZXJ5dGhpbmcgaGFz
IHRoZSByaWdodCBzaXplL3Bvc2l0aW9uLgotICAgIE9MRV9IQU5ETEUgaG9zdFdpbmRvdzsKKyAg
ICBIV05EIGhvc3RXaW5kb3c7CiAgICAgaWYgKFNVQ0NFRURFRChtX2luc3BlY3RlZFdlYlZpZXct
Pmhvc3RXaW5kb3coJmhvc3RXaW5kb3cpKSkKLSAgICAgICAgU2VuZE1lc3NhZ2UocmVpbnRlcnBy
ZXRfY2FzdDxIV05EPihob3N0V2luZG93KSwgV01fU0laRSwgMCwgMCk7CisgICAgICAgIFNlbmRN
ZXNzYWdlKGhvc3RXaW5kb3csIFdNX1NJWkUsIDAsIDApOwogfQogCiB2b2lkIFdlYkluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50OjpzaG93V2luZG93V2l0aG91dE5vdGlmaWNhdGlvbnMoKQpAQCAtNDAx
LDcgKzQwMSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNob3dXaW4KIAog
ICAgIGlmICghc2hvdWxkQXR0YWNoKSB7CiAgICAgICAgIC8vIFB1dCB0aGUgSW5zcGVjdG9yJ3Mg
V2ViVmlldyBpbnNpZGUgb3VyIHdpbmRvdyBhbmQgc2hvdyBpdC4KLSAgICAgICAgbV9mcm9udGVu
ZFdlYlZpZXctPnNldEhvc3RXaW5kb3cocmVpbnRlcnByZXRfY2FzdDxPTEVfSEFORExFPihtX2Zy
b250ZW5kSHduZCkpOworICAgICAgICBtX2Zyb250ZW5kV2ViVmlldy0+c2V0SG9zdFdpbmRvdyht
X2Zyb250ZW5kSHduZCk7CiAgICAgICAgIFNlbmRNZXNzYWdlKG1fZnJvbnRlbmRId25kLCBXTV9T
SVpFLCAwLCAwKTsKICAgICAgICAgdXBkYXRlV2luZG93VGl0bGUoKTsKIApAQCAtNDEzLDEwICs0
MTMsMTAgQEAgdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6c2hvd1dpbgogICAgIFdp
bmRvd01lc3NhZ2VCcm9hZGNhc3Rlcjo6YWRkTGlzdGVuZXIobV9pbnNwZWN0ZWRXZWJWaWV3SHdu
ZCwgdGhpcyk7CiAKICAgICBIV05EIGhvc3RXaW5kb3c7Ci0gICAgaWYgKEZBSUxFRChtX2luc3Bl
Y3RlZFdlYlZpZXctPmhvc3RXaW5kb3cocmVpbnRlcnByZXRfY2FzdDxPTEVfSEFORExFKj4oJmhv
c3RXaW5kb3cpKSkpCisgICAgaWYgKEZBSUxFRChtX2luc3BlY3RlZFdlYlZpZXctPmhvc3RXaW5k
b3coJmhvc3RXaW5kb3cpKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9mcm9udGVuZFdlYlZp
ZXctPnNldEhvc3RXaW5kb3cocmVpbnRlcnByZXRfY2FzdDxPTEVfSEFORExFPihob3N0V2luZG93
KSk7CisgICAgbV9mcm9udGVuZFdlYlZpZXctPnNldEhvc3RXaW5kb3coaG9zdFdpbmRvdyk7CiAK
ICAgICAvLyBUaGVuIGhpZGUgb3VyIG93biB3aW5kb3cuCiAgICAgU2hvd1dpbmRvdyhtX2Zyb250
ZW5kSHduZCwgU1dfSElERSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJJbnNwZWN0b3JDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAkocmV2aXNpb24gMTcyOTQ2KQorKysg
U291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAy
MDA3IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDYsIDIwMDcsIDIwMTQgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODYsOCArODYsOCBAQCBwcml2YXRlOgogICAgIFdl
YlZpZXcqIG1faW5zcGVjdGVkV2ViVmlldzsKICAgICBXZWJDb3JlOjpQYWdlKiBtX2Zyb250ZW5k
UGFnZTsKICAgICBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudCogbV9mcm9udGVuZENsaWVudDsK
LSAgICBPTEVfSEFORExFIG1faW5zcGVjdGVkV2ViVmlld0hhbmRsZTsKLSAgICBPTEVfSEFORExF
IG1fZnJvbnRlbmRIYW5kbGU7CisgICAgSFdORCBtX2luc3BlY3RlZFdlYlZpZXdIYW5kbGU7Cisg
ICAgSFdORCBtX2Zyb250ZW5kSGFuZGxlOwogCiAgICAgT3duUHRyPFdlYk5vZGVIaWdobGlnaHQ+
IG1faGlnaGxpZ2h0OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkluc3BlY3RvckRlbGVnYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JEZWxlZ2F0ZS5jcHAJKHJldmlzaW9uIDE3Mjk0
NikKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckRlbGVn
YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMDggTWF0dCBMaWxlayA8d2Via2l0QG1hdHRsaWxlay5jb20+CisgKiBDb3B5cmlnaHQg
KEMpIDIwMTQgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yRGVsZWdhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JEZWxlZ2F0ZS5oCShyZXZpc2lvbiAxNzI5NDYpCisr
KyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JEZWxlZ2F0ZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAw
OCBNYXR0IExpbGVrIDx3ZWJraXRAbWF0dGxpbGVrLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAx
NCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC02NCwxMyArNjUsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIHdlYlZpZXdVbmZvY3VzKCAKICAgICAgICAgLyogW2luXSAqLyBJ
V2ViVmlldyopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQogCi0gICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIHdlYlZpZXdGaXJzdFJlc3BvbmRlciggCi0gICAgICAgIC8qIFtpbl0g
Ki8gSVdlYlZpZXcqLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIE9MRV9IQU5ETEUqKSB7
IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgd2ViVmlld0ZpcnN0UmVzcG9uZGVyKElXZWJWaWV3KiwgSFdORCopIHsgcmV0dXJuIEVfTk9U
SU1QTDsgfQogCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG1ha2VGaXJz
dFJlc3BvbmRlciggCi0gICAgICAgIC8qIFtpbl0gKi8gSVdlYlZpZXcqLAotICAgICAgICAvKiBb
aW5dICovIE9MRV9IQU5ETEUpIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBtYWtlRmlyc3RSZXNwb25kZXIoSVdlYlZpZXcqLCBIV05E
KSB7IHJldHVybiBFX05PVElNUEw7IH0KIAogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBzZXRTdGF0dXNUZXh0KCAKICAgICAgICAgLyogW2luXSAqLyBJV2ViVmlldyosCkBA
IC0xNTAsMTEgKzE0Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgLyogW2luXSAqLyBJUHJvcGVydHlC
YWcqLAogICAgICAgICAvKiBbaW5dICovIFVJTlQgLyptb2RpZmllckZsYWdzKi8pIHsgcmV0dXJu
IEVfTk9USU1QTDsgfQogCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNv
bnRleHRNZW51SXRlbXNGb3JFbGVtZW50KCAKLSAgICAgICAgLyogW2luXSAqLyBJV2ViVmlldyos
Ci0gICAgICAgIC8qIFtpbl0gKi8gSVByb3BlcnR5QmFnKiwKLSAgICAgICAgLyogW2luXSAqLyBP
TEVfSEFORExFLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIE9MRV9IQU5ETEUqKSB7IHJl
dHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
Y29udGV4dE1lbnVJdGVtc0ZvckVsZW1lbnQoSVdlYlZpZXcqLCBJUHJvcGVydHlCYWcqLCBITUVO
VSwgSE1FTlUqKSB7IHJldHVybiBFX05PVElNUEw7IH0KIAogICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSB2YWxpZGF0ZVVzZXJJbnRlcmZhY2VJdGVtKCAKICAgICAgICAgLyog
W2luXSAqLyBJV2ViVmlldyosCkBAIC0xOTIsMTAgKzE4NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaGFzQ3VzdG9tTWVudUltcGxlbWVudGF0aW9u
KCAKICAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKikgeyByZXR1cm4gRV9OT1RJTVBM
OyB9CiAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdHJhY2tDdXN0b21Q
b3B1cE1lbnUoIAotICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3KiwKLSAgICAgICAgLyogW2lu
XSAqLyBPTEVfSEFORExFLAotICAgICAgICAvKiBbaW5dICovIExQUE9JTlQpIHsgcmV0dXJuIEVf
Tk9USU1QTDsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0cmFja0N1
c3RvbVBvcHVwTWVudSgvKiBbaW5dICovIElXZWJWaWV3KiwgLyogW2luXSAqLyBITUVOVSwgLyog
W2luXSAqLyBMUFBPSU5UKSB7IHJldHVybiBFX05PVElNUEw7IH0KIAogICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBtZWFzdXJlQ3VzdG9tTWVudUl0ZW0oIAogICAgICAgICAv
KiBbaW5dICovIElXZWJWaWV3KiwKQEAgLTIwNSwxMyArMTk1LDkgQEAgcHVibGljOgogICAgICAg
ICAvKiBbaW5dICovIElXZWJWaWV3KiwKICAgICAgICAgLyogW2luXSAqLyB2b2lkKiAgLypkcmF3
SXRlbSovKSB7IHJldHVybiBFX05PVElNUEw7IH0KIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBhZGRDdXN0b21NZW51RHJhd2luZ0RhdGEoIAotICAgICAgICAvKiBbaW5d
ICovIElXZWJWaWV3KiwKLSAgICAgICAgLyogW2luXSAqLyBPTEVfSEFORExFKSB7IHJldHVybiBF
X05PVElNUEw7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYWRkQ3Vz
dG9tTWVudURyYXdpbmdEYXRhKC8qIFtpbl0gKi8gSVdlYlZpZXcqLCAvKiBbaW5dICovIEhNRU5V
KSB7IHJldHVybiBFX05PVElNUEw7IH0KIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBjbGVhblVwQ3VzdG9tTWVudURyYXdpbmdEYXRhKCAKLSAgICAgICAgLyogW2luXSAq
LyBJV2ViVmlldyosCi0gICAgICAgIC8qIFtpbl0gKi8gT0xFX0hBTkRMRSkgeyByZXR1cm4gRV9O
T1RJTVBMOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNsZWFuVXBD
dXN0b21NZW51RHJhd2luZ0RhdGEoLyogW2luXSAqLyBJV2ViVmlldyosIC8qIFtpbl0gKi8gSE1F
TlUpIHsgcmV0dXJuIEVfTk9USU1QTDsgfQogCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIGNhblRha2VGb2N1cyggCiAgICAgICAgIC8qIFtpbl0gKi8gSVdlYlZpZXcqLApA
QCAtMjU5LDE3ICsyNDUsOSBAQCBwdWJsaWM6CiAgICAgICAgIC8qIFtpbl0gKi8gSVdlYlZpZXcg
KndlYlZpZXcsCiAgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gZmxvYXQgKnJlc3VsdCkgeyBy
ZXR1cm4gRV9OT1RJTVBMOyB9CiAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIGRyYXdIZWFkZXJJblJlY3QoIAotICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3ICp3
ZWJWaWV3LAotICAgICAgICAvKiBbaW5dICovIFJFQ1QgKnJlY3QsCi0gICAgICAgIC8qIFtpbl0g
Ki8gT0xFX0hBTkRMRSBkcmF3aW5nQ29udGV4dCkgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRyYXdIZWFkZXJJblJlY3QoSVdlYlZp
ZXcqLCBSRUNUKiwgVUxPTkdfUFRSKSB7IHJldHVybiBFX05PVElNUEw7IH0KICAgICAKLSAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZHJhd0Zvb3RlckluUmVjdCggCi0gICAg
ICAgIC8qIFtpbl0gKi8gSVdlYlZpZXcgKndlYlZpZXcsCi0gICAgICAgIC8qIFtpbl0gKi8gUkVD
VCAqcmVjdCwKLSAgICAgICAgLyogW2luXSAqLyBPTEVfSEFORExFIGRyYXdpbmdDb250ZXh0LAot
ICAgICAgICAvKiBbaW5dICovIFVJTlQgcGFnZUluZGV4LAotICAgICAgICAvKiBbaW5dICovIFVJ
TlQgcGFnZUNvdW50KSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgZHJhd0Zvb3RlckluUmVjdChJV2ViVmlldyosIFJFQ1QqLCBVTE9O
R19QVFIsIFVJTlQsIFVJTlQpIHsgcmV0dXJuIEVfTk9USU1QTDsgfQogICAgIAogICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3ZWJWaWV3UHJpbnRpbmdNYXJnaW5SZWN0KCAK
ICAgICAgICAgLyogW2luXSAqLyBJV2ViVmlldyAqd2ViVmlldywKSW5kZXg6IFRvb2xzL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3Mjk3MykKKysr
IFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU2IEBACisyMDE0LTA4
LTI2ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtXaW5d
IFdlYktpdCBJREwgaW5jb3JyZWN0bHkgcGFzc2VzIEhXTkQgYXMgT0xFX0hBTkRMRQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2MjU4CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS8xODEzNDEzOD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBdm9pZCAzMi82NC1iaXQgdHJ1bmNhdGlvbiBieSBwcmV2ZW50
aW5nIDY0LWJpdCBIV05EIChhbmQgb3RoZXIpCisgICAgICAgIHZhbHVlcyBmcm9tIHBhc3Npbmcg
dGhyb3VnaCB0aGUgMzItYml0IE9MRV9IQU5ETEUgZGF0YSB0eXBlLgorCisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvd2luL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyV2luLmNwcDoKKyAgICAgICAg
KEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpyb290RWxlbWVudCk6CisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcDoKKyAgICAgICAgKHJlc2V0V2ViVmlld1Rv
Q29uc2lzdGVudFN0YXRlQmVmb3JlVGVzdGluZyk6CisgICAgICAgIChydW5UZXN0KToKKyAgICAg
ICAgKGNyZWF0ZVdlYlZpZXdBbmRPZmZzY3JlZW5XaW5kb3cpOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxlZ2F0ZS5oOgorICAgICAgICAoRnJhbWVMb2FkRGVsZWdh
dGU6OmRpZFJlY2VpdmVJY29uKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vVGVzdFJ1
bm5lcldpbi5jcHA6CisgICAgICAgIChUZXN0UnVubmVyOjpzZXRXaW5kb3dJc0tleSk6CisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvd2luL1VJRGVsZWdhdGUuY3BwOgorICAgICAgICAoVUlEZWxl
Z2F0ZTo6dHJhY2tDdXN0b21Qb3B1cE1lbnUpOgorICAgICAgICAoVUlEZWxlZ2F0ZTo6ZHJhd0hl
YWRlckluUmVjdCk6CisgICAgICAgIChVSURlbGVnYXRlOjpkcmF3Rm9vdGVySW5SZWN0KToKKyAg
ICAgICAgKFVJRGVsZWdhdGU6OndlYlZpZXdDbG9zZSk6CisgICAgICAgIChVSURlbGVnYXRlOjp3
ZWJWaWV3Rm9jdXMpOgorICAgICAgICAoVUlEZWxlZ2F0ZTo6d2ViVmlld1NldEN1cnNvcik6Cisg
ICAgICAgIChVSURlbGVnYXRlOjpkcmF3QmFja2dyb3VuZCk6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvd2luL1VJRGVsZWdhdGUuaDoKKyAgICAgICAgKFVJRGVsZWdhdGU6OndlYlZpZXdGaXJz
dFJlc3BvbmRlcik6CisgICAgICAgIChVSURlbGVnYXRlOjptYWtlRmlyc3RSZXNwb25kZXIpOgor
ICAgICAgICAoVUlEZWxlZ2F0ZTo6Y29udGV4dE1lbnVJdGVtc0ZvckVsZW1lbnQpOgorICAgICAg
ICAoVUlEZWxlZ2F0ZTo6YWRkQ3VzdG9tTWVudURyYXdpbmdEYXRhKToKKyAgICAgICAgKFVJRGVs
ZWdhdGU6OmNsZWFuVXBDdXN0b21NZW51RHJhd2luZ0RhdGEpOgorICAgICAgICAoVUlEZWxlZ2F0
ZTo6d2ViVmlld0xvc3RGb2N1cyk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQvd2luL1dlYlZpZXdEZXN0cnVjdGlvbi5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpX
ZWJWaWV3RGVzdHJ1Y3Rpb25XaXRoSG9zdFdpbmRvdzo6U2V0VXApOgorICAgICAgICAqIFdpbkxh
dW5jaGVyL1ByaW50V2ViVUlEZWxlZ2F0ZS5jcHA6CisgICAgICAgIChQcmludFdlYlVJRGVsZWdh
dGU6OmRyYXdIZWFkZXJJblJlY3QpOgorICAgICAgICAoUHJpbnRXZWJVSURlbGVnYXRlOjpkcmF3
Rm9vdGVySW5SZWN0KToKKyAgICAgICAgKiBXaW5MYXVuY2hlci9QcmludFdlYlVJRGVsZWdhdGUu
aDoKKyAgICAgICAgKFByaW50V2ViVUlEZWxlZ2F0ZTo6d2ViVmlld0ZpcnN0UmVzcG9uZGVyKToK
KyAgICAgICAgKFByaW50V2ViVUlEZWxlZ2F0ZTo6bWFrZUZpcnN0UmVzcG9uZGVyKToKKyAgICAg
ICAgKFByaW50V2ViVUlEZWxlZ2F0ZTo6Y29udGV4dE1lbnVJdGVtc0ZvckVsZW1lbnQpOgorICAg
ICAgICAoUHJpbnRXZWJVSURlbGVnYXRlOjp0cmFja0N1c3RvbVBvcHVwTWVudSk6CisgICAgICAg
IChQcmludFdlYlVJRGVsZWdhdGU6OmFkZEN1c3RvbU1lbnVEcmF3aW5nRGF0YSk6CisgICAgICAg
IChQcmludFdlYlVJRGVsZWdhdGU6OmNsZWFuVXBDdXN0b21NZW51RHJhd2luZ0RhdGEpOgorICAg
ICAgICAqIFdpbkxhdW5jaGVyL1dpbkxhdW5jaGVyLmNwcDoKKyAgICAgICAgKFdpbkxhdW5jaGVy
OjpwcmVwYXJlVmlld3MpOgorICAgICAgICAqIFdpbkxhdW5jaGVyL1dpbkxhdW5jaGVyV2ViSG9z
dC5oOgorICAgICAgICAoV2luTGF1bmNoZXJXZWJIb3N0OjpkaWRSZWNlaXZlSWNvbik6CisKIDIw
MTQtMDgtMTggIERhbmEgQnVya2FydCAgPGRidXJrYXJ0QGFwcGxlLmNvbT4KIAogICAgICAgICBN
ZXJnZSByMTcyNjgwCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vQWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXJXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dp
bi9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlcldpbi5jcHAJKHJldmlzaW9uIDE3Mjk0NikKKysrIFRv
b2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlcldpbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE2NCwxNCArMTY0LDE0IEBAIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQg
QWNjZXNzaWJpbGl0eUNvbnQKICAgICBpZiAoIXZpZXdQcml2YXRlKQogICAgICAgICByZXR1cm4g
MDsKIAotICAgIE9MRV9IQU5ETEUgd2ViVmlld1dpbmRvdzsKKyAgICBIV05EIHdlYlZpZXdXaW5k
b3c7CiAgICAgaWYgKEZBSUxFRCh2aWV3UHJpdmF0ZS0+dmlld1dpbmRvdygmd2ViVmlld1dpbmRv
dykpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIC8vIEdldCB0aGUgcm9vdCBhY2Nlc3NpYmxl
IG9iamVjdCBieSBxdWVyeWluZyBmb3IgdGhlIGFjY2Vzc2libGUgb2JqZWN0IGZvciB0aGUKICAg
ICAvLyBXZWJWaWV3J3Mgd2luZG93LgogICAgIENPTVB0cjxJQWNjZXNzaWJsZT4gcm9vdEFjY2Vz
c2libGU7Ci0gICAgaWYgKEZBSUxFRChBY2Nlc3NpYmxlT2JqZWN0RnJvbVdpbmRvdyhyZWludGVy
cHJldF9jYXN0PEhXTkQ+KHdlYlZpZXdXaW5kb3cpLCBzdGF0aWNfY2FzdDxEV09SRD4oT0JKSURf
Q0xJRU5UKSwgX191dWlkb2YoSUFjY2Vzc2libGUpLCByZWludGVycHJldF9jYXN0PHZvaWQqKj4o
JnJvb3RBY2Nlc3NpYmxlKSkpKQorICAgIGlmIChGQUlMRUQoQWNjZXNzaWJsZU9iamVjdEZyb21X
aW5kb3cod2ViVmlld1dpbmRvdywgc3RhdGljX2Nhc3Q8RFdPUkQ+KE9CSklEX0NMSUVOVCksIF9f
dXVpZG9mKElBY2Nlc3NpYmxlKSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZyb290QWNjZXNz
aWJsZSkpKSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICByZXR1cm4gcm9vdEFjY2Vzc2libGU7
CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAJKHJl
dmlzaW9uIDE3Mjk0NikKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJl
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg3OCw3ICs4NzgsNyBAQCBzdGF0aWMgdm9pZCByZXNl
dFdlYlZpZXdUb0NvbnNpc3RlbnRTdGF0CiAgICAgICAgIHJldHVybjsKIAogICAgIEhXTkQgdmll
d1dpbmRvdzsKLSAgICBpZiAoU1VDQ0VFREVEKHdlYlZpZXdQcml2YXRlLT52aWV3V2luZG93KHJl
aW50ZXJwcmV0X2Nhc3Q8T0xFX0hBTkRMRSo+KCZ2aWV3V2luZG93KSkpICYmIHZpZXdXaW5kb3cp
CisgICAgaWYgKFNVQ0NFRURFRCh3ZWJWaWV3UHJpdmF0ZS0+dmlld1dpbmRvdygmdmlld1dpbmRv
dykpICYmIHZpZXdXaW5kb3cpCiAgICAgICAgIFNldEZvY3VzKHZpZXdXaW5kb3cpOwogCiAgICAg
d2ViVmlld1ByaXZhdGUtPmNsZWFyTWFpbkZyYW1lTmFtZSgpOwpAQCAtMTA2NSw3ICsxMDY1LDcg
QEAgc3RhdGljIHZvaWQgcnVuVGVzdChjb25zdCBzdHJpbmcmIGlucHV0TAogICAgIFdvcmtRdWV1
ZTo6c2hhcmVkKCktPnNldEZyb3plbihmYWxzZSk7CiAKICAgICBIV05EIGhvc3RXaW5kb3c7Ci0g
ICAgd2ViVmlldy0+aG9zdFdpbmRvdyhyZWludGVycHJldF9jYXN0PE9MRV9IQU5ETEUqPigmaG9z
dFdpbmRvdykpOworICAgIHdlYlZpZXctPmhvc3RXaW5kb3coJmhvc3RXaW5kb3cpOwogCiAgICAg
Q09NUHRyPElXZWJNdXRhYmxlVVJMUmVxdWVzdD4gcmVxdWVzdDsKICAgICBIUkVTVUxUIGhyID0g
V2ViS2l0Q3JlYXRlSW5zdGFuY2UoQ0xTSURfV2ViTXV0YWJsZVVSTFJlcXVlc3QsIDAsIElJRF9J
V2ViTXV0YWJsZVVSTFJlcXVlc3QsICh2b2lkKiopJnJlcXVlc3QpOwpAQCAtMTE1MSw3ICsxMTUx
LDcgQEAgSVdlYlZpZXcqIGNyZWF0ZVdlYlZpZXdBbmRPZmZzY3JlZW5XaW5kbwogICAgICAgICBy
ZXR1cm4gMDsKICAgICB9CiAKLSAgICBpZiAoRkFJTEVEKHdlYlZpZXctPnNldEhvc3RXaW5kb3co
KE9MRV9IQU5ETEUpKFVMT05HNjQpaG9zdFdpbmRvdykpKQorICAgIGlmIChGQUlMRUQod2ViVmll
dy0+c2V0SG9zdFdpbmRvdyhob3N0V2luZG93KSkpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAg
UkVDVCBjbGllbnRSZWN0OwpAQCAtMTE3NCw3ICsxMTc0LDcgQEAgSVdlYlZpZXcqIGNyZWF0ZVdl
YlZpZXdBbmRPZmZzY3JlZW5XaW5kbwogICAgICAgICByZXR1cm4gMDsKIAogICAgIEhXTkQgdmll
d1dpbmRvdzsKLSAgICBpZiAoRkFJTEVEKHZpZXdQcml2YXRlLT52aWV3V2luZG93KHJlaW50ZXJw
cmV0X2Nhc3Q8T0xFX0hBTkRMRSo+KCZ2aWV3V2luZG93KSkpKQorICAgIGlmIChGQUlMRUQodmll
d1ByaXZhdGUtPnZpZXdXaW5kb3coJnZpZXdXaW5kb3cpKSkKICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgaWYgKHdlYlZpZXdXaW5kb3cpCiAgICAgICAgICp3ZWJWaWV3V2luZG93ID0gdmlld1dpbmRv
dzsKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxlZ2F0ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxlZ2F0ZS5o
CShyZXZpc2lvbiAxNzI5NDYpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2Fk
RGVsZWdhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNzgsMTAgKzc4LDcgQEAgcHVibGljOgogICAg
ICAgICAvKiBbaW5dICovIElXZWJWaWV3ICp3ZWJWaWV3LAogICAgICAgICAvKiBbaW5dICovIElX
ZWJGcmFtZSAqZnJhbWUpOwogCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IGRpZFJlY2VpdmVJY29uKCAKLSAgICAgICAgLyogW2luXSAqLyBJV2ViVmlldyAqd2ViVmlldywK
LSAgICAgICAgLyogW2luXSAqLyBPTEVfSEFORExFIGltYWdlLAotICAgICAgICAvKiBbaW5dICov
IElXZWJGcmFtZSAqZnJhbWUpIHsgcmV0dXJuIEVfTk9USU1QTDsgfSAKKyAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlkUmVjZWl2ZUljb24oLyogW2luXSAqLyBJV2ViVmll
dyosIC8qIFtpbl0gKi8gSEJJVE1BUCwgLyogW2luXSAqLyBJV2ViRnJhbWUqKSB7IHJldHVybiBF
X05PVElNUEw7IH0gCiAKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlk
RmluaXNoTG9hZEZvckZyYW1lKCAKICAgICAgICAgLyogW2luXSAqLyBJV2ViVmlldyAqd2ViVmll
dywKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9UZXN0UnVubmVyV2luLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vVGVzdFJ1bm5lcldpbi5jcHAJKHJl
dmlzaW9uIDE3Mjk0NikKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9UZXN0UnVubmVyV2lu
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzA4LDExICs3MDgsMTEgQEAgdm9pZCBUZXN0UnVubmVy
OjpzZXRXaW5kb3dJc0tleShib29sIGZsYQogICAgIGlmIChGQUlMRUQod2ViVmlldy0+UXVlcnlJ
bnRlcmZhY2UoJnZpZXdQcml2YXRlKSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIE9MRV9IQU5E
TEUgd2ViVmlld1dpbmRvdzsKKyAgICBIV05EIHdlYlZpZXdXaW5kb3c7CiAgICAgaWYgKEZBSUxF
RCh2aWV3UHJpdmF0ZS0+dmlld1dpbmRvdygmd2ViVmlld1dpbmRvdykpKQogICAgICAgICByZXR1
cm47CiAKLSAgICA6OlNlbmRNZXNzYWdlKHJlaW50ZXJwcmV0X2Nhc3Q8SFdORD4od2ViVmlld1dp
bmRvdyksIGZsYWcgPyBXTV9TRVRGT0NVUyA6IFdNX0tJTExGT0NVUywgKFdQQVJBTSk6OkdldERl
c2t0b3BXaW5kb3coKSwgMCk7CisgICAgOjpTZW5kTWVzc2FnZSh3ZWJWaWV3V2luZG93LCBmbGFn
ID8gV01fU0VURk9DVVMgOiBXTV9LSUxMRk9DVVMsIChXUEFSQU0pOjpHZXREZXNrdG9wV2luZG93
KCksIDApOwogfQogCiBzdGF0aWMgY29uc3QgQ0ZUaW1lSW50ZXJ2YWwgd2FpdFRvRHVtcFdhdGNo
ZG9nSW50ZXJ2YWwgPSAzMC4wOwpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1VJRGVs
ZWdhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9VSURlbGVn
YXRlLmNwcAkocmV2aXNpb24gMTcyOTQ2KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1VJ
RGVsZWdhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDYsNyArMjA2LDcgQEAgSFJFU1VMVCBV
SURlbGVnYXRlOjpoYXNDdXN0b21NZW51SW1wbGVtZQogICAgIHJldHVybiBTX09LOwogfQogCi1I
UkVTVUxUIFVJRGVsZWdhdGU6OnRyYWNrQ3VzdG9tUG9wdXBNZW51KElXZWJWaWV3KiAvKnNlbmRl
ciovLCBPTEVfSEFORExFIC8qbWVudSovLCBMUFBPSU5UIC8qcG9pbnQqLykKK0hSRVNVTFQgVUlE
ZWxlZ2F0ZTo6dHJhY2tDdXN0b21Qb3B1cE1lbnUoSVdlYlZpZXcqIC8qc2VuZGVyKi8sIEhNRU5V
IC8qbWVudSovLCBMUFBPSU5UIC8qcG9pbnQqLykKIHsKICAgICAvLyBEbyBub3RoaW5nCiAgICAg
cmV0dXJuIFNfT0s7CkBAIC0yOTEsMTIgKzI5MSwxMiBAQCBIUkVTVUxUIFVJRGVsZWdhdGU6Ondl
YlZpZXdGb290ZXJIZWlnaHQoCiAgICAgcmV0dXJuIEVfTk9USU1QTDsKIH0KIAotSFJFU1VMVCBV
SURlbGVnYXRlOjpkcmF3SGVhZGVySW5SZWN0KElXZWJWaWV3KiAvKndlYlZpZXcqLywgUkVDVCog
LypyZWN0Ki8sIE9MRV9IQU5ETEUgLypkcmF3aW5nQ29udGV4dCovKQorSFJFU1VMVCBVSURlbGVn
YXRlOjpkcmF3SGVhZGVySW5SZWN0KElXZWJWaWV3KiAvKndlYlZpZXcqLywgUkVDVCogLypyZWN0
Ki8sIFVMT05HX1BUUiAvKmRyYXdpbmdDb250ZXh0Ki8pCiB7CiAgICAgcmV0dXJuIEVfTk9USU1Q
TDsKIH0KIAotSFJFU1VMVCBVSURlbGVnYXRlOjpkcmF3Rm9vdGVySW5SZWN0KElXZWJWaWV3KiAv
KndlYlZpZXcqLywgUkVDVCogLypyZWN0Ki8sIE9MRV9IQU5ETEUgLypkcmF3aW5nQ29udGV4dCov
LCBVSU5UIC8qcGFnZUluZGV4Ki8sIFVJTlQgLypwYWdlQ291bnQqLykKK0hSRVNVTFQgVUlEZWxl
Z2F0ZTo6ZHJhd0Zvb3RlckluUmVjdChJV2ViVmlldyogLyp3ZWJWaWV3Ki8sIFJFQ1QqIC8qcmVj
dCovLCBVTE9OR19QVFIgLypkcmF3aW5nQ29udGV4dCovLCBVSU5UIC8qcGFnZUluZGV4Ki8sIFVJ
TlQgLypwYWdlQ291bnQqLykKIHsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQpAQCAtNDUyLDcg
KzQ1Miw3IEBAIEhSRVNVTFQgVUlEZWxlZ2F0ZTo6Y3JlYXRlV2ViVmlld1dpdGhSZXEKIEhSRVNV
TFQgVUlEZWxlZ2F0ZTo6d2ViVmlld0Nsb3NlKElXZWJWaWV3KiBzZW5kZXIpCiB7CiAgICAgSFdO
RCBob3N0V2luZG93OwotICAgIHNlbmRlci0+aG9zdFdpbmRvdyhyZWludGVycHJldF9jYXN0PE9M
RV9IQU5ETEUqPigmaG9zdFdpbmRvdykpOworICAgIHNlbmRlci0+aG9zdFdpbmRvdygmaG9zdFdp
bmRvdyk7CiAgICAgRGVzdHJveVdpbmRvdyhob3N0V2luZG93KTsKICAgICByZXR1cm4gU19PSzsK
IH0KQEAgLTQ2MCw3ICs0NjAsNyBAQCBIUkVTVUxUIFVJRGVsZWdhdGU6OndlYlZpZXdDbG9zZShJ
V2ViVmllCiBIUkVTVUxUIFVJRGVsZWdhdGU6OndlYlZpZXdGb2N1cyhJV2ViVmlldyogc2VuZGVy
KQogewogICAgIEhXTkQgaG9zdFdpbmRvdzsKLSAgICBzZW5kZXItPmhvc3RXaW5kb3cocmVpbnRl
cnByZXRfY2FzdDxPTEVfSEFORExFKj4oJmhvc3RXaW5kb3cpKTsKKyAgICBzZW5kZXItPmhvc3RX
aW5kb3coJmhvc3RXaW5kb3cpOwogICAgIFNldEZvcmVncm91bmRXaW5kb3coaG9zdFdpbmRvdyk7
CiAgICAgcmV0dXJuIFNfT0s7IAogfQpAQCAtNTQwLDcgKzU0MCw3IEBAIEhSRVNVTFQgVUlEZWxl
Z2F0ZTo6d2ViVmlld0Nsb3NpbmcoSVdlYlYKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogCi1I
UkVTVUxUIFVJRGVsZWdhdGU6OndlYlZpZXdTZXRDdXJzb3IoSVdlYlZpZXcqIC8qc2VuZGVyKi8s
IE9MRV9IQU5ETEUgLypjdXJzb3IqLykKK0hSRVNVTFQgVUlEZWxlZ2F0ZTo6d2ViVmlld1NldEN1
cnNvcihJV2ViVmlldyogLypzZW5kZXIqLywgSENVUlNPUiAvKmN1cnNvciovKQogewogICAgIHJl
dHVybiBFX05PVElNUEw7CiB9CkBAIC01NjgsNyArNTY4LDcgQEAgSFJFU1VMVCBVSURlbGVnYXRl
OjpjcmVhdGVXZWJWaWV3V2l0aFJlcQogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAKLUhSRVNV
TFQgVUlEZWxlZ2F0ZTo6ZHJhd0JhY2tncm91bmQoSVdlYlZpZXcqIC8qc2VuZGVyKi8sIE9MRV9I
QU5ETEUgaGRjLCBjb25zdCBSRUNUKiBkaXJ0eVJlY3QpCitIUkVTVUxUIFVJRGVsZWdhdGU6OmRy
YXdCYWNrZ3JvdW5kKElXZWJWaWV3KiAvKnNlbmRlciovLCBIREMgLypoZGMqLywgY29uc3QgUkVD
VCogLypkaXJ0eVJlY3QqLykKIHsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQpJbmRleDogVG9v
bHMvRHVtcFJlbmRlclRyZWUvd2luL1VJRGVsZWdhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9E
dW1wUmVuZGVyVHJlZS93aW4vVUlEZWxlZ2F0ZS5oCShyZXZpc2lvbiAxNzI5NDYpCisrKyBUb29s
cy9EdW1wUmVuZGVyVHJlZS93aW4vVUlEZWxlZ2F0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAwNyBBcHBsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3
LCAyMDE0IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTY2LDEzICs2Niw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd2ViVmlld1VuZm9jdXMoIAogICAgICAgICAvKiBbaW5d
ICovIElXZWJWaWV3ICpzZW5kZXIpOwogCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIHdlYlZpZXdGaXJzdFJlc3BvbmRlciggCi0gICAgICAgIC8qIFtpbl0gKi8gSVdlYlZp
ZXcgKnNlbmRlciwKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBPTEVfSEFORExFICpyZXNw
b25kZXIpIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSB3ZWJWaWV3Rmlyc3RSZXNwb25kZXIoSVdlYlZpZXcqLCBIV05EKikgeyByZXR1
cm4gRV9OT1RJTVBMOyB9CiAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
bWFrZUZpcnN0UmVzcG9uZGVyKCAKLSAgICAgICAgLyogW2luXSAqLyBJV2ViVmlldyAqc2VuZGVy
LAotICAgICAgICAvKiBbaW5dICovIE9MRV9IQU5ETEUgcmVzcG9uZGVyKSB7IHJldHVybiBFX05P
VElNUEw7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbWFrZUZpcnN0
UmVzcG9uZGVyKElXZWJWaWV3KiwgSFdORCkgeyByZXR1cm4gRV9OT1RJTVBMOyB9CiAKICAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0U3RhdHVzVGV4dCggCiAgICAgICAg
IC8qIFtpbl0gKi8gSVdlYlZpZXcgKnNlbmRlciwKQEAgLTE1MiwxMSArMTQ4LDcgQEAgcHVibGlj
OgogICAgICAgICAvKiBbaW5dICovIElQcm9wZXJ0eUJhZyAqZWxlbWVudEluZm9ybWF0aW9uLAog
ICAgICAgICAvKiBbaW5dICovIFVJTlQgbW9kaWZpZXJGbGFncykgeyByZXR1cm4gRV9OT1RJTVBM
OyB9CiAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY29udGV4dE1lbnVJ
dGVtc0ZvckVsZW1lbnQoIAotICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3ICpzZW5kZXIsCi0g
ICAgICAgIC8qIFtpbl0gKi8gSVByb3BlcnR5QmFnICplbGVtZW50LAotICAgICAgICAvKiBbaW5d
ICovIE9MRV9IQU5ETEUgZGVmYXVsdEl0ZW1zLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICov
IE9MRV9IQU5ETEUgKnJlc3VsdE1lbnUpIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjb250ZXh0TWVudUl0ZW1zRm9yRWxlbWVudChJ
V2ViVmlldyosIElQcm9wZXJ0eUJhZyosIEhNRU5VLCBITUVOVSopIHsgcmV0dXJuIEVfTk9USU1Q
TDsgfQogCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHZhbGlkYXRlVXNl
ckludGVyZmFjZUl0ZW0oIAogICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3ICp3ZWJWaWV3LApA
QCAtMTk5LDEwICsxOTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIGhhc0N1c3RvbU1lbnVJbXBsZW1lbnRhdGlvbiggCiAgICAgICAgIC8qIFtyZXR2
YWxdW291dF0gKi8gQk9PTCAqaGFzQ3VzdG9tTWVudXMpOwogICAgIAotICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0cmFja0N1c3RvbVBvcHVwTWVudSggCi0gICAgICAgIC8q
IFtpbl0gKi8gSVdlYlZpZXcgKnNlbmRlciwKLSAgICAgICAgLyogW2luXSAqLyBPTEVfSEFORExF
IG1lbnUsCi0gICAgICAgIC8qIFtpbl0gKi8gTFBQT0lOVCBwb2ludCk7CisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHRyYWNrQ3VzdG9tUG9wdXBNZW51KC8qIFtpbl0gKi8g
SVdlYlZpZXcqIHNlbmRlciwgLyogW2luXSAqLyBITUVOVSwgLyogW2luXSAqLyBMUFBPSU5UKTsK
ICAgICAgICAKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbWVhc3VyZUN1
c3RvbU1lbnVJdGVtKCAKICAgICAgICAgLyogW2luXSAqLyBJV2ViVmlldyAqc2VuZGVyLApAQCAt
MjEyLDEzICsyMDEsOSBAQCBwdWJsaWM6CiAgICAgICAgIC8qIFtpbl0gKi8gSVdlYlZpZXcgKnNl
bmRlciwKICAgICAgICAgLyogW2luXSAqLyB2b2lkICpkcmF3SXRlbSkgeyByZXR1cm4gRV9OT1RJ
TVBMOyB9CiAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYWRkQ3VzdG9t
TWVudURyYXdpbmdEYXRhKCAKLSAgICAgICAgLyogW2luXSAqLyBJV2ViVmlldyAqc2VuZGVyLAot
ICAgICAgICAvKiBbaW5dICovIE9MRV9IQU5ETEUgbWVudSkgeyByZXR1cm4gRV9OT1RJTVBMOyB9
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGFkZEN1c3RvbU1lbnVEcmF3
aW5nRGF0YShJV2ViVmlldyosIEhNRU5VKSB7IHJldHVybiBFX05PVElNUEw7IH0KIAotICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjbGVhblVwQ3VzdG9tTWVudURyYXdpbmdE
YXRhKCAKLSAgICAgICAgLyogW2luXSAqLyBJV2ViVmlldyAqc2VuZGVyLAotICAgICAgICAvKiBb
aW5dICovIE9MRV9IQU5ETEUgbWVudSkgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNsZWFuVXBDdXN0b21NZW51RHJhd2luZ0RhdGEo
SVdlYlZpZXcqLCBITUVOVSkgeyByZXR1cm4gRV9OT1RJTVBMOyB9CiAKICAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2FuVGFrZUZvY3VzKCAKICAgICAgICAgLyogW2luXSAq
LyBJV2ViVmlldyAqc2VuZGVyLApAQCAtMjY2LDE3ICsyNTEsOSBAQCBwdWJsaWM6CiAgICAgICAg
IC8qIFtpbl0gKi8gSVdlYlZpZXcgKndlYlZpZXcsCiAgICAgICAgIC8qIFtyZXR2YWxdW291dF0g
Ki8gZmxvYXQgKnJlc3VsdCk7CiAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIGRyYXdIZWFkZXJJblJlY3QoIAotICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3ICp3
ZWJWaWV3LAotICAgICAgICAvKiBbaW5dICovIFJFQ1QgKnJlY3QsCi0gICAgICAgIC8qIFtpbl0g
Ki8gT0xFX0hBTkRMRSBkcmF3aW5nQ29udGV4dCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIGRyYXdIZWFkZXJJblJlY3QoSVdlYlZpZXcqLCBSRUNUKiwgVUxPTkdfUFRS
IGRyYXdpbmdDb250ZXh0KTsKICAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgZHJhd0Zvb3RlckluUmVjdCggCi0gICAgICAgIC8qIFtpbl0gKi8gSVdlYlZpZXcgKndl
YlZpZXcsCi0gICAgICAgIC8qIFtpbl0gKi8gUkVDVCAqcmVjdCwKLSAgICAgICAgLyogW2luXSAq
LyBPTEVfSEFORExFIGRyYXdpbmdDb250ZXh0LAotICAgICAgICAvKiBbaW5dICovIFVJTlQgcGFn
ZUluZGV4LAotICAgICAgICAvKiBbaW5dICovIFVJTlQgcGFnZUNvdW50KTsKKyAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZHJhd0Zvb3RlckluUmVjdChJV2ViVmlldyosIFJF
Q1QqLCBVTE9OR19QVFIgZHJhd2luZ0NvbnRleHQsIFVJTlQgcGFnZUluZGV4LCBVSU5UIHBhZ2VD
b3VudCk7CiAgICAgCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdlYlZp
ZXdQcmludGluZ01hcmdpblJlY3QoIAogICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3ICp3ZWJW
aWV3LApAQCAtMzI3LDcgKzMwNCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBjcmVhdGVXZWJWaWV3V2l0aFJlcXVlc3QoSVdlYlZpZXcqIHNlbmRl
ciwgSVdlYlVSTFJlcXVlc3QqIHJlcXVlc3QsIElQcm9wZXJ0eUJhZyogd2luZG93RmVhdHVyZXMs
IElXZWJWaWV3KiogbmV3V2ViVmlldyk7CiAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgZHJhd0JhY2tncm91bmQoSVdlYlZpZXcqIHNlbmRlciwgT0xFX0hBTkRMRSBoZGMs
IGNvbnN0IFJFQ1QqIGRpcnR5UmVjdCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIGRyYXdCYWNrZ3JvdW5kKElXZWJWaWV3KiBzZW5kZXIsIEhEQywgY29uc3QgUkVDVCog
ZGlydHlSZWN0KTsKIAogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkZWNp
ZGVQb2xpY3lGb3JHZW9sb2NhdGlvblJlcXVlc3QoSVdlYlZpZXcqIHNlbmRlciwgSVdlYkZyYW1l
KiBmcmFtZSwgSVdlYlNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIElXZWJHZW9sb2NhdGlvblBvbGlj
eUxpc3RlbmVyKiBsaXN0ZW5lcik7CiAKQEAgLTM1OSw5ICszMzYsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdlYlZpZXdSZWNlaXZlZEZvY3Vz
KCAKICAgICAgICAgLyogW2luXSAqLyBJV2ViVmlldyAqc2VuZGVyKSB7IHJldHVybiBFX05PVElN
UEw7IH0KICAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd2ViVmll
d0xvc3RGb2N1cyggCi0gICAgICAgIC8qIFtpbl0gKi8gSVdlYlZpZXcgKnNlbmRlciwKLSAgICAg
ICAgLyogW2luXSAqLyBPTEVfSEFORExFIGxvc2VGb2N1c1RvKSB7IHJldHVybiBFX05PVElNUEw7
IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd2ViVmlld0xvc3RGb2N1
cyhJV2ViVmlldyosIEhXTkQpIHsgcmV0dXJuIEVfTk9USU1QTDsgfQogCiAgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRvRHJhZ0Ryb3AoIAogICAgICAgICAvKiBbaW5dICov
IElXZWJWaWV3ICpzZW5kZXIsCkBAIC0zOTMsOSArMzY4LDcgQEAgcHJvdGVjdGVkOgogICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3ZWJWaWV3Q2xvc2luZyggCiAgICAgICAg
IC8qIFtpbl0gKi8gSVdlYlZpZXcgKnNlbmRlcik7CiAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIHdlYlZpZXdTZXRDdXJzb3IoIAotICAgICAgICAvKiBbaW5dICov
IElXZWJWaWV3ICpzZW5kZXIsCi0gICAgICAgIC8qIFtpbl0gKi8gT0xFX0hBTkRMRSBjdXJzb3Ip
OworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3ZWJWaWV3U2V0Q3Vyc29y
KElXZWJWaWV3KiBzZW5kZXIsIEhDVVJTT1IpOwogICAgIAogICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSB3ZWJWaWV3RGlkSW52YWxpZGF0ZSggCiAgICAgICAgIC8qIFtpbl0g
Ki8gSVdlYlZpZXcgKnNlbmRlcik7CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdC93aW4vV2ViVmlld0Rlc3RydWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC93aW4vV2ViVmlld0Rlc3RydWN0aW9uLmNwcAkocmV2aXNp
b24gMTcyOTQ2KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvd2luL1dlYlZp
ZXdEZXN0cnVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgwLDEyICs4MCwxMiBAQCB2b2lk
IFdlYlZpZXdEZXN0cnVjdGlvbldpdGhIb3N0V2luZG93OjpTCiAgICAgV2ViVmlld0Rlc3RydWN0
aW9uOjpTZXRVcCgpOwogCiAgICAgRVhQRUNUX1RSVUUobV93aW5kb3cuaW5pdGlhbGl6ZSgpKTsK
LSAgICBFWFBFQ1RfSFJFU1VMVF9TVUNDRUVERUQobV93ZWJWaWV3LT5zZXRIb3N0V2luZG93KHJl
aW50ZXJwcmV0X2Nhc3Q8T0xFX0hBTkRMRT4obV93aW5kb3cud2luZG93KCkpKSk7CisgICAgRVhQ
RUNUX0hSRVNVTFRfU1VDQ0VFREVEKG1fd2ViVmlldy0+c2V0SG9zdFdpbmRvdyhtX3dpbmRvdy53
aW5kb3coKSkpOwogICAgIEVYUEVDVF9IUkVTVUxUX1NVQ0NFRURFRChtX3dlYlZpZXctPmluaXRX
aXRoRnJhbWUobV93aW5kb3cuY2xpZW50UmVjdCgpLCAwLCAwKSk7CiAKICAgICBDT01QdHI8SVdl
YlZpZXdQcml2YXRlPiB2aWV3UHJpdmF0ZShRdWVyeSwgbV93ZWJWaWV3KTsKICAgICBBU1NFUlRf
Tk9UX05VTEwodmlld1ByaXZhdGUpOwotICAgIEVYUEVDVF9IUkVTVUxUX1NVQ0NFRURFRCh2aWV3
UHJpdmF0ZS0+dmlld1dpbmRvdyhyZWludGVycHJldF9jYXN0PE9MRV9IQU5ETEUqPigmbV92aWV3
V2luZG93KSkpOworICAgIEVYUEVDVF9IUkVTVUxUX1NVQ0NFRURFRCh2aWV3UHJpdmF0ZS0+dmll
d1dpbmRvdygmbV92aWV3V2luZG93KSk7CiAgICAgRVhQRUNUX1RSVUUoOjpJc1dpbmRvdyhtX3Zp
ZXdXaW5kb3cpKTsKIH0KIApJbmRleDogVG9vbHMvV2luTGF1bmNoZXIvUHJpbnRXZWJVSURlbGVn
YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XaW5MYXVuY2hlci9QcmludFdlYlVJRGVsZWdh
dGUuY3BwCShyZXZpc2lvbiAxNzI5NDYpCisrKyBUb29scy9XaW5MYXVuY2hlci9QcmludFdlYlVJ
RGVsZWdhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAwOSwgMjAxMyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDksIDIwMTMtMjAxNCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQnJlbnQgRnVsZ2hhbS4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMyBBbGV4IENocmlzdGVuc2VuLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgogICoKQEAgLTEyLDcgKzEyLDYgQEAKICAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKICAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCiAgKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCiAgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQogICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCiAgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgpAQCAt
MTY0LDEwICsxNjMsNyBAQCBIUkVTVUxUIFByaW50V2ViVUlEZWxlZ2F0ZTo6d2ViVmlld0Zvb3Rl
CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgUHJpbnRXZWJVSURlbGVnYXRlOjpkcmF3
SGVhZGVySW5SZWN0KAotICAgICAgICAgICAgLyogW2luXSAqLyBJV2ViVmlldyogd2ViVmlldywK
LSAgICAgICAgICAgIC8qIFtpbl0gKi8gUkVDVCogcmVjdCwKLSAgICAgICAgICAgIC8qIFtpbl0g
Ki8gT0xFX0hBTkRMRSBkcmF3aW5nQ29udGV4dCkKK0hSRVNVTFQgUHJpbnRXZWJVSURlbGVnYXRl
OjpkcmF3SGVhZGVySW5SZWN0KElXZWJWaWV3KiB3ZWJWaWV3LCBSRUNUKiByZWN0LCBVTE9OR19Q
VFIgZHJhd2luZ0NvbnRleHQpCiB7CiAgICAgaWYgKCF3ZWJWaWV3IHx8ICFyZWN0KQogICAgICAg
ICByZXR1cm4gRV9QT0lOVEVSOwpAQCAtMTk2LDEyICsxOTIsNyBAQCBIUkVTVUxUIFByaW50V2Vi
VUlEZWxlZ2F0ZTo6ZHJhd0hlYWRlckluCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQg
UHJpbnRXZWJVSURlbGVnYXRlOjpkcmF3Rm9vdGVySW5SZWN0KAotICAgICAgICAgICAgLyogW2lu
XSAqLyBJV2ViVmlldyogd2ViVmlldywKLSAgICAgICAgICAgIC8qIFtpbl0gKi8gUkVDVCogcmVj
dCwKLSAgICAgICAgICAgIC8qIFtpbl0gKi8gT0xFX0hBTkRMRSBkcmF3aW5nQ29udGV4dCwKLSAg
ICAgICAgICAgIC8qIFtpbl0gKi8gVUlOVCBwYWdlSW5kZXgsCi0gICAgICAgICAgICAvKiBbaW5d
ICovIFVJTlQgcGFnZUNvdW50KQorSFJFU1VMVCBQcmludFdlYlVJRGVsZWdhdGU6OmRyYXdGb290
ZXJJblJlY3QoSVdlYlZpZXcqIHdlYlZpZXcsIFJFQ1QqIHJlY3QsIFVMT05HX1BUUiBkcmF3aW5n
Q29udGV4dCwgVUlOVCBwYWdlSW5kZXgsIFVJTlQgcGFnZUNvdW50KQogewogICAgIGlmICghd2Vi
VmlldyB8fCAhcmVjdCkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKSW5kZXg6IFRvb2xzL1dp
bkxhdW5jaGVyL1ByaW50V2ViVUlEZWxlZ2F0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dpbkxh
dW5jaGVyL1ByaW50V2ViVUlEZWxlZ2F0ZS5oCShyZXZpc2lvbiAxNzI5NDYpCisrKyBUb29scy9X
aW5MYXVuY2hlci9QcmludFdlYlVJRGVsZWdhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDE0IEFwcGxlIEluYy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOSBCcmVudCBGdWxnaGFtLiBBbGwgUmln
aHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNDMsOCArNDMsOCBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdlYlZpZXdDbG9zZShJV2Vi
VmlldyopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSB3ZWJWaWV3Rm9jdXMoSVdlYlZpZXcqKSB7IHJldHVybiBFX05PVElNUEw7IH0K
ICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd2ViVmlld1VuZm9jdXMoSVdl
YlZpZXcqKSB7IHJldHVybiBFX05PVElNUEw7IH0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgd2ViVmlld0ZpcnN0UmVzcG9uZGVyKElXZWJWaWV3KiwgT0xFX0hBTkRMRSop
ICB7IHJldHVybiBFX05PVElNUEw7IH0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgbWFrZUZpcnN0UmVzcG9uZGVyKElXZWJWaWV3KiwgT0xFX0hBTkRMRSkgeyByZXR1cm4g
RV9OT1RJTVBMOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdlYlZp
ZXdGaXJzdFJlc3BvbmRlcihJV2ViVmlldyosIEhXTkQqKSAgeyByZXR1cm4gRV9OT1RJTVBMOyB9
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG1ha2VGaXJzdFJlc3BvbmRl
cihJV2ViVmlldyosIEhXTkQpIHsgcmV0dXJuIEVfTk9USU1QTDsgfQogICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRTdGF0dXNUZXh0KElXZWJWaWV3KiwgQlNUUikgeyBy
ZXR1cm4gRV9OT1RJTVBMOyB9CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IHdlYlZpZXdTdGF0dXNUZXh0KElXZWJWaWV3KiwgQlNUUiopIHsgcmV0dXJuIEVfTk9USU1QTDsg
fQogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3ZWJWaWV3QXJlVG9vbGJh
cnNWaXNpYmxlKElXZWJWaWV3KiwgQk9PTCopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQpAQCAtNjMs
NyArNjMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlKElXZWJWaWV3KiwgQlNUUiwg
SVdlYkZyYW1lKiwgQk9PTCopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQogICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBydW5PcGVuUGFuZWxGb3JGaWxlQnV0dG9uV2l0aFJlc3Vs
dExpc3RlbmVyKElXZWJWaWV3KiwgSVdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyKikgeyByZXR1
cm4gRV9OT1RJTVBMOyB9CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG1v
dXNlRGlkTW92ZU92ZXJFbGVtZW50KElXZWJWaWV3KiwgSVByb3BlcnR5QmFnKiwgVUlOVCkgeyBy
ZXR1cm4gRV9OT1RJTVBMOyB9Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IGNvbnRleHRNZW51SXRlbXNGb3JFbGVtZW50KElXZWJWaWV3KiwgSVByb3BlcnR5QmFnKiwgT0xF
X0hBTkRMRSwgT0xFX0hBTkRMRSopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjb250ZXh0TWVudUl0ZW1zRm9yRWxlbWVudChJV2Vi
VmlldyosIElQcm9wZXJ0eUJhZyosIEhNRU5VLCBITUVOVSopIHsgcmV0dXJuIEVfTk9USU1QTDsg
fQogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB2YWxpZGF0ZVVzZXJJbnRl
cmZhY2VJdGVtKElXZWJWaWV3KiwgVUlOVCwgQk9PTCwgQk9PTCopIHsgcmV0dXJuIEVfTk9USU1Q
TDsgfQogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzaG91bGRQZXJmb3Jt
QWN0aW9uKElXZWJWaWV3KiwgVUlOVCwgVUlOVCkgeyByZXR1cm4gRV9OT1RJTVBMOyB9CiAgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1h
c2tGb3JEcmFnZ2luZ0luZm8oSVdlYlZpZXcqLCBJRGF0YU9iamVjdCosIFdlYkRyYWdEZXN0aW5h
dGlvbkFjdGlvbiopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQpAQCAtNzIsMTEgKzcyLDExIEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd2lsbFBlcmZvcm1E
cmFnU291cmNlQWN0aW9uKElXZWJWaWV3KiwgV2ViRHJhZ1NvdXJjZUFjdGlvbiwgTFBQT0lOVCwg
SURhdGFPYmplY3QqLCBJRGF0YU9iamVjdCoqKSB7IHJldHVybiBFX05PVElNUEw7IH0KICAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQo
SVdlYlZpZXcqLCB2b2lkKiwgSVByb3BlcnR5QmFnKikgeyByZXR1cm4gRV9OT1RJTVBMOyB9CiAg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGhhc0N1c3RvbU1lbnVJbXBsZW1l
bnRhdGlvbihCT09MKikgeyByZXR1cm4gRV9OT1RJTVBMOyB9Ci0gICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIHRyYWNrQ3VzdG9tUG9wdXBNZW51KElXZWJWaWV3KiwgT0xFX0hB
TkRMRSwgTFBQT0lOVCkgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIHRyYWNrQ3VzdG9tUG9wdXBNZW51KElXZWJWaWV3KiwgSE1FTlUs
IExQUE9JTlQpIHsgcmV0dXJuIEVfTk9USU1QTDsgfQogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBtZWFzdXJlQ3VzdG9tTWVudUl0ZW0oSVdlYlZpZXcqLCB2b2lkKikgeyBy
ZXR1cm4gRV9OT1RJTVBMOyB9CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IGRyYXdDdXN0b21NZW51SXRlbShJV2ViVmlldyosIHZvaWQqKSB7IHJldHVybiBFX05PVElNUEw7
IH0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYWRkQ3VzdG9tTWVudURy
YXdpbmdEYXRhKElXZWJWaWV3KiwgT0xFX0hBTkRMRSkgeyByZXR1cm4gRV9OT1RJTVBMOyB9Ci0g
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNsZWFuVXBDdXN0b21NZW51RHJh
d2luZ0RhdGEoSVdlYlZpZXcqLCBPTEVfSEFORExFKSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYWRkQ3VzdG9tTWVudURyYXdpbmdE
YXRhKElXZWJWaWV3KiwgSE1FTlUpIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjbGVhblVwQ3VzdG9tTWVudURyYXdpbmdEYXRhKElX
ZWJWaWV3KiwgSE1FTlUpIHsgcmV0dXJuIEVfTk9USU1QTDsgfQogICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBjYW5UYWtlRm9jdXMoSVdlYlZpZXcqLCBCT09MLCBCT09MKikg
eyByZXR1cm4gRV9OT1RJTVBMOyB9CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIHRha2VGb2N1cyhJV2ViVmlldyosIEJPT0wpIHsgcmV0dXJuIEVfTk9USU1QTDsgfQogICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZWdpc3RlclVuZG9XaXRoVGFyZ2V0
KElXZWJVbmRvVGFyZ2V0KiwgQlNUUiwgSVVua25vd24qKSB7IHJldHVybiBFX05PVElNUEw7IH0K
QEAgLTkwLDggKzkwLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBmdHBEaXJlY3RvcnlUZW1wbGF0ZVBhdGgoSVdlYlZpZXcqLCBCU1RSKikgeyByZXR1
cm4gRV9OT1RJTVBMOyB9CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdl
YlZpZXdIZWFkZXJIZWlnaHQoSVdlYlZpZXcqLCBmbG9hdCopOwogICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSB3ZWJWaWV3Rm9vdGVySGVpZ2h0KElXZWJWaWV3KiwgZmxvYXQq
KTsKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZHJhd0hlYWRlckluUmVj
dChJV2ViVmlldyosIFJFQ1QqLCBPTEVfSEFORExFKTsKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgZHJhd0Zvb3RlckluUmVjdChJV2ViVmlldyosIFJFQ1QqLCBPTEVfSEFO
RExFLCBVSU5ULCBVSU5UKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
ZHJhd0hlYWRlckluUmVjdChJV2ViVmlldyosIFJFQ1QqLCBVTE9OR19QVFIpOworICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkcmF3Rm9vdGVySW5SZWN0KElXZWJWaWV3Kiwg
UkVDVCosIFVMT05HX1BUUiwgVUlOVCwgVUlOVCk7CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIHdlYlZpZXdQcmludGluZ01hcmdpblJlY3QoSVdlYlZpZXcqLCBSRUNUKik7
CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNhblJ1bk1vZGFsKElXZWJW
aWV3KiwgQk9PTCopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQogICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBjcmVhdGVNb2RhbERpYWxvZyhJV2ViVmlldyosIElXZWJVUkxSZXF1
ZXN0KiwgSVdlYlZpZXcqKikgeyByZXR1cm4gRV9OT1RJTVBMOyB9CkluZGV4OiBUb29scy9XaW5M
YXVuY2hlci9XaW5MYXVuY2hlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2luTGF1bmNoZXIv
V2luTGF1bmNoZXIuY3BwCShyZXZpc2lvbiAxNzI5NDYpCisrKyBUb29scy9XaW5MYXVuY2hlci9X
aW5MYXVuY2hlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDcgKzg2LDcgQEAgSFJFU1VMVCBX
aW5MYXVuY2hlcjo6cHJlcGFyZVZpZXdzKEhXTkQgbQogICAgIGlmICghbV93ZWJWaWV3KQogICAg
ICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgSFJFU1VMVCBociA9IG1fd2ViVmlldy0+c2V0SG9z
dFdpbmRvdyhyZWludGVycHJldF9jYXN0PE9MRV9IQU5ETEU+KG1haW5XbmQpKTsKKyAgICBIUkVT
VUxUIGhyID0gbV93ZWJWaWV3LT5zZXRIb3N0V2luZG93KG1haW5XbmQpOwogICAgIGlmIChGQUlM
RUQoaHIpKQogICAgICAgICByZXR1cm4gaHI7CiAKQEAgLTExMSw3ICsxMTEsNyBAQCBIUkVTVUxU
IFdpbkxhdW5jaGVyOjpwcmVwYXJlVmlld3MoSFdORCBtCiAgICAgaWYgKEZBSUxFRChocikpCiAg
ICAgICAgIHJldHVybiBocjsKIAotICAgIGhyID0gbV93ZWJWaWV3UHJpdmF0ZS0+dmlld1dpbmRv
dyhyZWludGVycHJldF9jYXN0PE9MRV9IQU5ETEUqPigmdmlld0h3bmQpKTsKKyAgICBociA9IG1f
d2ViVmlld1ByaXZhdGUtPnZpZXdXaW5kb3coJnZpZXdId25kKTsKIAogICAgIHJldHVybiBocjsK
IH0KSW5kZXg6IFRvb2xzL1dpbkxhdW5jaGVyL1dpbkxhdW5jaGVyV2ViSG9zdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1dpbkxhdW5jaGVyL1dpbkxhdW5jaGVyV2ViSG9zdC5oCShyZXZpc2lvbiAx
NzI5NDYpCisrKyBUb29scy9XaW5MYXVuY2hlci9XaW5MYXVuY2hlcldlYkhvc3QuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIGRpZFJlY2VpdmVUaXRsZShJV2ViVmlldyosIEJTVFIgdGl0
bGUsIElXZWJGcmFtZSopIHsgcmV0dXJuIFNfT0s7IH0KICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgZGlkQ2hhbmdlSWNvbnMoSVdlYlZpZXcqLCBJV2ViRnJhbWUqKSB7IHJl
dHVybiBTX09LOyB9Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRpZFJl
Y2VpdmVJY29uKElXZWJWaWV3KiwgT0xFX0hBTkRMRSBoQml0bWFwLCBJV2ViRnJhbWUqKSB7IHJl
dHVybiBTX09LOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRpZFJl
Y2VpdmVJY29uKElXZWJWaWV3KiwgSEJJVE1BUCwgSVdlYkZyYW1lKikgeyByZXR1cm4gU19PSzsg
fQogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkaWRGaW5pc2hMb2FkRm9y
RnJhbWUoSVdlYlZpZXcqLCBJV2ViRnJhbWUqKTsgICAKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgZGlkRmFpbExvYWRXaXRoRXJyb3IoSVdlYlZpZXcqLCBJV2ViRXJyb3Iq
LCBJV2ViRnJhbWUqKSB7IHJldHVybiBTX09LOyB9CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIGRpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZUZvckZyYW1lKElXZWJWaWV3
KiwgSVdlYkZyYW1lKikgeyByZXR1cm4gU19PSzsgfQo=
</data>
<flag name="review"
          id="261887"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>