<?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>190091</bug_id>
          
          <creation_ts>2018-09-28 14:28:49 -0700</creation_ts>
          <short_desc>Unify implementation in VideoFullscreenInterfaceAVKit</short_desc>
          <delta_ts>2018-10-04 16:52:48 -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>Media</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>190207</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jeremy Jones">jeremyj-wk</reporter>
          <assigned_to name="Jeremy Jones">jeremyj-wk</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>jer.noble</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1464504</commentid>
    <comment_count>0</comment_count>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2018-09-28 14:28:49 -0700</bug_when>
    <thetext>Unify implementation in VideoFullscreenInterfaceAVKit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1464506</commentid>
    <comment_count>1</comment_count>
      <attachid>351111</attachid>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2018-09-28 14:29:21 -0700</bug_when>
    <thetext>Created attachment 351111
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1464510</commentid>
    <comment_count>2</comment_count>
      <attachid>351113</attachid>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2018-09-28 14:32:04 -0700</bug_when>
    <thetext>Created attachment 351113
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1464512</commentid>
    <comment_count>3</comment_count>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2018-09-28 14:32:35 -0700</bug_when>
    <thetext>rdar://problem/44734523</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1464885</commentid>
    <comment_count>4</comment_count>
      <attachid>351220</attachid>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2018-09-30 17:58:18 -0700</bug_when>
    <thetext>Created attachment 351220
Patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1465107</commentid>
    <comment_count>5</comment_count>
      <attachid>351220</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-10-01 11:00:05 -0700</bug_when>
    <thetext>Comment on attachment 351220
Patch for landing.

Clearing flags on attachment: 351220

Committed r236671: &lt;https://trac.webkit.org/changeset/236671&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1465636</commentid>
    <comment_count>6</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2018-10-02 10:11:23 -0700</bug_when>
    <thetext>This was rolled out in https://trac.webkit.org/changeset/236748/webkit because it depended upon https://trac.webkit.org/changeset/236624/webkit, which was rolled out due to test regressions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1466569</commentid>
    <comment_count>7</comment_count>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2018-10-04 16:27:23 -0700</bug_when>
    <thetext>Patch that necessitated the rebased &quot;patch for landing&quot; has been rolled out, taking this patch with it. So I&apos;m re-submitting the original patch, pre-rebase.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1466575</commentid>
    <comment_count>8</comment_count>
      <attachid>351113</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-10-04 16:52:46 -0700</bug_when>
    <thetext>Comment on attachment 351113
Patch

Clearing flags on attachment: 351113

Committed r236860: &lt;https://trac.webkit.org/changeset/236860&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1466576</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-10-04 16:52:48 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>351111</attachid>
            <date>2018-09-28 14:29:21 -0700</date>
            <delta_ts>2018-09-28 14:32:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190091-20180928142920.patch</filename>
            <type>text/plain</type>
            <size>31531</size>
            <attacher name="Jeremy Jones">jeremyj-wk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2NDYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oCmluZGV4IGM2
ZDJlYWQ5NTQyY2Y4NDM0MjBjZTk1M2NkM2YyNGY5MjcyYmRlYzYuLjZmYTA5MjZhZWY0NTdlNmQ2
NmNhNjM3M2JmYWMzOWU2M2FkMDJlZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oCkBAIC04Niwx
MCArODYsOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXF1ZXN0SGlkZUFu
ZEV4aXRGdWxsc2NyZWVuKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwcmVwYXJlZFRvUmV0
dXJuVG9JbmxpbmUoYm9vbCB2aXNpYmxlLCBjb25zdCBJbnRSZWN0JiBpbmxpbmVSZWN0KTsKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHByZXBhcmVkVG9FeGl0RnVsbHNjcmVlbigpOwotI2lmIEVO
QUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEhhc1ZpZGVv
Q29udGVudExheWVyKGJvb2wpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0SW5saW5lUmVj
dChjb25zdCBJbnRSZWN0JiwgYm9vbCB2aXNpYmxlKTsKLSNlbmRpZgogCiAgICAgZW51bSBjbGFz
cyBFeGl0RnVsbFNjcmVlblJlYXNvbiB7CiAgICAgICAgIERvbmVCdXR0b25UYXBwZWQsCkBAIC0x
MjcsOSArMTI1LDcgQEAgcHVibGljOgogICAgIH07CiAKICAgICBNb2RlIG1fY3VycmVudE1vZGU7
Ci0jaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIE1vZGUgbV90YXJnZXRNb2RlOwotI2Vu
ZGlmCiAKICAgICBWaWRlb0Z1bGxzY3JlZW5Nb2RlbCogdmlkZW9GdWxsc2NyZWVuTW9kZWwoKSBj
b25zdCB7IHJldHVybiBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsOyB9CiAgICAgYm9vbCBzaG91bGRF
eGl0RnVsbHNjcmVlbldpdGhSZWFzb24oRXhpdEZ1bGxTY3JlZW5SZWFzb24pOwpAQCAtMTQ2LDEw
ICsxNDIsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCB3aWxsU3RvcFBpY3R1cmVJblBpY3R1cmUoKTsK
ICAgICB2b2lkIGRpZFN0b3BQaWN0dXJlSW5QaWN0dXJlKCk7CiAgICAgdm9pZCBwcmVwYXJlRm9y
UGljdHVyZUluUGljdHVyZVN0b3BXaXRoQ29tcGxldGlvbkhhbmRsZXIodm9pZCAoXikoQk9PTCkp
OwotI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICB2b2lkIGV4aXRGdWxsc2NyZWVuSGFu
ZGxlcihCT09MIHN1Y2Nlc3MsIE5TRXJyb3IgKik7CiAgICAgdm9pZCBlbnRlckZ1bGxzY3JlZW5I
YW5kbGVyKEJPT0wgc3VjY2VzcywgTlNFcnJvciAqKTsKLSNlbmRpZgogICAgIGJvb2wgaXNQbGF5
aW5nVmlkZW9JbkVuaGFuY2VkRnVsbHNjcmVlbigpIGNvbnN0OwogCiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRNb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9k
ZSk7CkBAIC0xNjYsMTUgKzE2MCwxMCBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgV0VCQ09S
RV9FWFBPUlQgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQoUGxheWJhY2tTZXNzaW9uSW50
ZXJmYWNlQVZLaXQmKTsKIAotI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICB2b2lkIGRv
U2V0dXAoKTsKICAgICB2b2lkIGZpbmFsaXplU2V0dXAoKTsKICAgICB2b2lkIGRvRXhpdEZ1bGxz
Y3JlZW4oKTsKICAgICB2b2lkIHJldHVyblRvU3RhbmRieSgpOwotI2Vsc2UKLSAgICB2b2lkIGVu
dGVyUGljdHVyZUluUGljdHVyZSgpOwotICAgIHZvaWQgZW50ZXJGdWxsc2NyZWVuU3RhbmRhcmQo
KTsKLSNlbmRpZgogICAgIHZvaWQgZG9FbnRlckZ1bGxzY3JlZW4oKTsKICAgICB2b2lkIHdhdGNo
ZG9nVGltZXJGaXJlZCgpOwogICAgIFdlYkFWUGxheWVyQ29udHJvbGxlciAqcGxheWVyQ29udHJv
bGxlcigpIGNvbnN0OwpAQCAtMjAwLDcgKzE4OSw2IEBAIHByb3RlY3RlZDoKICAgICBib29sIG1f
c2hvdWxkUmV0dXJuVG9GdWxsc2NyZWVuV2hlblN0b3BwaW5nUGlQIHsgZmFsc2UgfTsKICAgICBi
b29sIG1fcmVzdG9yaW5nRnVsbHNjcmVlbkZvclBpY3R1cmVJblBpY3R1cmVTdG9wIHsgZmFsc2Ug
fTsKIAotI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBib29sIG1fc2V0dXBOZWVkc0lu
bGluZVJlY3QgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9leGl0RnVsbHNjcmVlbk5lZWRJbmxpbmVS
ZWN0IHsgZmFsc2UgfTsKIApAQCAtMjI1LDEzICsyMTMsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9v
bCBtX2lubGluZUlzVmlzaWJsZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3N0YW5kYnkgeyBmYWxz
ZSB9OwogICAgIGJvb2wgbV90YXJnZXRTdGFuZGJ5IHsgZmFsc2UgfTsKLSNlbHNlCi0gICAgYm9v
bCBtX2V4aXRSZXF1ZXN0ZWQgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9leGl0Q29tcGxldGVkIHsg
ZmFsc2UgfTsKLSAgICBib29sIG1fZW50ZXJSZXF1ZXN0ZWQgeyBmYWxzZSB9OwotICAgIGJvb2wg
bV9zaG91bGRSZXR1cm5Ub0Z1bGxzY3JlZW5BZnRlckVudGVyaW5nRm9yZWdyb3VuZCB7IGZhbHNl
IH07CisKICAgICBib29sIG1fd2FpdGluZ0ZvclByZXBhcmVkVG9FeGl0IHsgZmFsc2UgfTsKLSNl
bmRpZgogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Zp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tCmluZGV4IDVjYzMyMGUxOWRhZDM5
YzAwOWM3MzM2OGE1ODcxYzg2MDkzZThiN2QuLmFjMTE5NDZjYTdmNTllYzdjZjBiMzY1YTJhMWE1
ZTZlMDljYjI1NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KQEAgLTE4NywxMyArMTg3LDEx
IEBAIC0gKHZvaWQpcGxheWVyVmlld0NvbnRyb2xsZXI6KEFWUGxheWVyVmlld0NvbnRyb2xsZXIg
KilwbGF5ZXJWaWV3Q29udHJvbGxlciByZXN0CiAgICAgc2VsZi5mdWxsc2NyZWVuSW50ZXJmYWNl
LT5wcmVwYXJlRm9yUGljdHVyZUluUGljdHVyZVN0b3BXaXRoQ29tcGxldGlvbkhhbmRsZXIoY29t
cGxldGlvbkhhbmRsZXIpOwogfQogCi0jaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogLSAoQk9P
TClwbGF5ZXJWaWV3Q29udHJvbGxlclNob3VsZFN0YXJ0UGljdHVyZUluUGljdHVyZUZyb21Jbmxp
bmVXaGVuRW50ZXJpbmdCYWNrZ3JvdW5kOihBVlBsYXllclZpZXdDb250cm9sbGVyICopcGxheWVy
Vmlld0NvbnRyb2xsZXIKIHsKICAgICBVTlVTRURfUEFSQU0ocGxheWVyVmlld0NvbnRyb2xsZXIp
OwogICAgIHJldHVybiBZRVM7CiB9Ci0jZW5kaWYKIAogQGVuZAogCkBAIC04MDIsMTM4ICs4MDAs
NiBAQCBib29sIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpwaWN0dXJlSW5QaWN0dXJl
V2FzU3RhcnRlZFdoZW5FbnRlcmluZ0JhY2tncgogICAgIHJldHVybiBbbV9wbGF5ZXJWaWV3Q29u
dHJvbGxlciBwaWN0dXJlSW5QaWN0dXJlV2FzU3RhcnRlZFdoZW5FbnRlcmluZ0JhY2tncm91bmRd
OwogfQogCi0jaWYgIUVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLQotdm9pZCBWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VBVktpdDo6YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKQotewotICAgIExP
RyhGdWxsc2NyZWVuLCAiVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmFwcGxpY2F0aW9u
RGlkQmVjb21lQWN0aXZlKCVwKSIsIHRoaXMpOwotICAgIGlmIChtX3Nob3VsZFJldHVyblRvRnVs
bHNjcmVlbkFmdGVyRW50ZXJpbmdGb3JlZ3JvdW5kICYmIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwg
JiYgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+aXNWaXNpYmxlKCkpIHsKLSAgICAgICAgW21fcGxh
eWVyVmlld0NvbnRyb2xsZXIgc3RvcFBpY3R1cmVJblBpY3R1cmVdOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgLy8gSWYgd2UgYXJlIGJvdGggaW4gUGlQIGFuZCBpbiBGdWxsc2NyZWVu
IChpLmUuLCB2aWEgYXV0by1QaVApLCBhbmQgd2UgZGlkIG5vdCBzdG9wIGZ1bGxzY3JlZW4gdXBv
biByZXR1cm5pbmcsIGl0IG11c3QgYmUKLSAgICAvLyBiZWNhdXNlIHRoZSBvcmlnaW5hdGluZyB2
aWV3IGlzIG5vdCB2aXNpYmxlLCBzbyBoaWRlIHRoZSBmdWxsc2NyZWVuIHdpbmRvdy4KLSAgICBp
ZiAobV9jdXJyZW50TW9kZS5oYXNGdWxsc2NyZWVuKCkgJiYgbV9jdXJyZW50TW9kZS5oYXNQaWN0
dXJlSW5QaWN0dXJlKCkpIHsKLSAgICAgICAgW1ttX3BsYXllclZpZXdDb250cm9sbGVyIHZpZXdd
IGxheW91dElmTmVlZGVkXTsKLSAgICAgICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIgZXhpdEZ1
bGxTY3JlZW5BbmltYXRlZDpOTyBjb21wbGV0aW9uSGFuZGxlcjpbcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWZQdHIodGhpcyksIHRoaXNdIChCT09MIHN1Y2Nlc3MsIE5TRXJyb3IqIGVycm9yKSB7Ci0g
ICAgICAgICAgICBpZiAoIXN1Y2Nlc3MpCi0gICAgICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCIt
W0FWUGxheWVyVmlld0NvbnRyb2xsZXIgZXhpdEZ1bGxTY3JlZW5BbmltYXRlZDpjb21wbGV0aW9u
SGFuZGxlcjpdIGZhaWxlZCB3aXRoIGVycm9yICVzIiwgW1tlcnJvciBsb2NhbGl6ZWREZXNjcmlw
dGlvbl0gVVRGOFN0cmluZ10pOwotCi0gICAgICAgICAgICBbbV93aW5kb3cgc2V0SGlkZGVuOllF
U107Ci0gICAgICAgICAgICBbW21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10gc2V0SGlkZGVu
OllFU107Ci0gICAgICAgIH1dOwotICAgIH0KLX0KLQotdm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdDo6c2V0dXBGdWxsc2NyZWVuKFVJVmlldyYgdmlkZW9WaWV3LCBjb25zdCBJbnRS
ZWN0JiBpbml0aWFsUmVjdCwgVUlWaWV3KiBwYXJlbnRWaWV3LCBIVE1MTWVkaWFFbGVtZW50RW51
bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSwgYm9vbCBhbGxvd3NQaWN0dXJlSW5QaWN0dXJl
UGxheWJhY2ssIGJvb2wgc3RhbmRieSkKLXsKLSAgICBBU1NFUlQobW9kZSAhPSBIVE1MTWVkaWFF
bGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsKLSAgICBMT0coRnVsbHNjcmVl
biwgIlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXR1cEZ1bGxzY3JlZW4oJXApIiwg
dGhpcyk7Ci0KLSAgICBtX2FsbG93c1BpY3R1cmVJblBpY3R1cmVQbGF5YmFjayA9IGFsbG93c1Bp
Y3R1cmVJblBpY3R1cmVQbGF5YmFjazsKLSAgICBtX3ZpZGVvVmlldyA9ICZ2aWRlb1ZpZXc7Ci0g
ICAgbV9wYXJlbnRWaWV3ID0gcGFyZW50VmlldzsKLSAgICBtX3BhcmVudFdpbmRvdyA9IHBhcmVu
dFZpZXcud2luZG93OwotCi0gICAgQVNTRVJUX1VOVVNFRChzdGFuZGJ5LCAhc3RhbmRieSk7Ci0g
ICAgYm9vbCBpc0luUGljdHVyZUluUGljdHVyZU1vZGUgPSBtX2N1cnJlbnRNb2RlLmhhc1BpY3R1
cmVJblBpY3R1cmUoKTsKLSAgICBtX2N1cnJlbnRNb2RlID0gbW9kZTsKLSAgICBtX2lubGluZVJl
Y3QgPSBpbml0aWFsUmVjdDsKLQotICAgIFtDQVRyYW5zYWN0aW9uIGJlZ2luXTsKLSAgICBbQ0FU
cmFuc2FjdGlvbiBzZXREaXNhYmxlQWN0aW9uczpZRVNdOwotCi0jaWYgIVBMQVRGT1JNKFdBVENI
T1MpCi0gICAgaWYgKCFbW21fcGFyZW50VmlldyB3aW5kb3ddIF9pc0hvc3RlZEluQW5vdGhlclBy
b2Nlc3NdKSB7Ci0gICAgICAgIGlmICghbV93aW5kb3cpCi0gICAgICAgICAgICBtX3dpbmRvdyA9
IGFkb3B0TlMoW2FsbG9jVUlXaW5kb3dJbnN0YW5jZSgpIGluaXRXaXRoRnJhbWU6W1tnZXRVSVNj
cmVlbkNsYXNzKCkgbWFpblNjcmVlbl0gYm91bmRzXV0pOwotICAgICAgICBbbV93aW5kb3cgc2V0
QmFja2dyb3VuZENvbG9yOmNsZWFyVUlDb2xvcigpXTsKLSAgICAgICAgaWYgKCFtX3ZpZXdDb250
cm9sbGVyKQotICAgICAgICAgICAgbV92aWV3Q29udHJvbGxlciA9IGFkb3B0TlMoW2FsbG9jVUlW
aWV3Q29udHJvbGxlckluc3RhbmNlKCkgaW5pdF0pOwotICAgICAgICBbW21fdmlld0NvbnRyb2xs
ZXIgdmlld10gc2V0RnJhbWU6W21fd2luZG93IGJvdW5kc11dOwotICAgICAgICBbbV92aWV3Q29u
dHJvbGxlciBfc2V0SWdub3JlQXBwU3VwcG9ydGVkT3JpZW50YXRpb25zOllFU107Ci0gICAgICAg
IFttX3dpbmRvdyBzZXRSb290Vmlld0NvbnRyb2xsZXI6bV92aWV3Q29udHJvbGxlci5nZXQoKV07
Ci0gICAgICAgIFttX3dpbmRvdyBzZXRXaW5kb3dMZXZlbDpnZXRVSVRleHRFZmZlY3RzQmVuZWF0
aFN0YXR1c0JhcldpbmRvd0xldmVsKCkgKyAxXTsKLSAgICAgICAgW21fd2luZG93IG1ha2VLZXlB
bmRWaXNpYmxlXTsKLSAgICB9Ci0jZW5kaWYKLQotICAgIGlmICghbV9wbGF5ZXJMYXllclZpZXcp
Ci0gICAgICAgIG1fcGxheWVyTGF5ZXJWaWV3ID0gYWRvcHROUyhbYWxsb2NXZWJBVlBsYXllckxh
eWVyVmlld0luc3RhbmNlKCkgaW5pdF0pOwotICAgIFttX3BsYXllckxheWVyVmlldyBzZXRIaWRk
ZW46W3BsYXllckNvbnRyb2xsZXIoKSBpc0V4dGVybmFsUGxheWJhY2tBY3RpdmVdXTsKLSAgICBb
bV9wbGF5ZXJMYXllclZpZXcgc2V0QmFja2dyb3VuZENvbG9yOmNsZWFyVUlDb2xvcigpXTsKLQot
ICAgIGlmICghaXNJblBpY3R1cmVJblBpY3R1cmVNb2RlKSB7Ci0gICAgICAgIFttX3BsYXllckxh
eWVyVmlldyBzZXRWaWRlb1ZpZXc6bV92aWRlb1ZpZXcuZ2V0KCldOwotICAgICAgICBbbV9wbGF5
ZXJMYXllclZpZXcgYWRkU3VidmlldzptX3ZpZGVvVmlldy5nZXQoKV07Ci0gICAgfQotCi0gICAg
V2ViQVZQbGF5ZXJMYXllciAqcGxheWVyTGF5ZXIgPSAoV2ViQVZQbGF5ZXJMYXllciAqKVttX3Bs
YXllckxheWVyVmlldyBwbGF5ZXJMYXllcl07Ci0gICAgW3BsYXllckxheWVyIHNldE1vZGVsVmlk
ZW9MYXllckZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgbV9pbmxpbmVSZWN0LndpZHRoKCksIG1faW5s
aW5lUmVjdC5oZWlnaHQoKSldOwotICAgIFtwbGF5ZXJMYXllciBzZXRWaWRlb0RpbWVuc2lvbnM6
W3BsYXllckNvbnRyb2xsZXIoKSBjb250ZW50RGltZW5zaW9uc11dOwotICAgIHBsYXllckxheWVy
LmZ1bGxzY3JlZW5JbnRlcmZhY2UgPSB0aGlzOwotCi0gICAgaWYgKCFtX3BsYXllclZpZXdDb250
cm9sbGVyKQotICAgICAgICBtX3BsYXllclZpZXdDb250cm9sbGVyID0gYWRvcHROUyhbW1dlYkFW
UGxheWVyVmlld0NvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoRnVsbHNjcmVlbkludGVyZmFjZTp0
aGlzXSk7Ci0KLSAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciBzZXRTaG93c1BsYXliYWNrQ29u
dHJvbHM6Tk9dOwotICAgIFttX3BsYXllclZpZXdDb250cm9sbGVyIHNldFBsYXllckNvbnRyb2xs
ZXI6KEFWUGxheWVyQ29udHJvbGxlciAqKXBsYXllckNvbnRyb2xsZXIoKV07Ci0gICAgW21fcGxh
eWVyVmlld0NvbnRyb2xsZXIgc2V0RGVsZWdhdGU6bV9wbGF5ZXJWaWV3Q29udHJvbGxlckRlbGVn
YXRlLmdldCgpXTsKLSAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciBzZXRBbGxvd3NQaWN0dXJl
SW5QaWN0dXJlUGxheWJhY2s6bV9hbGxvd3NQaWN0dXJlSW5QaWN0dXJlUGxheWJhY2tdOwotICAg
IFtwbGF5ZXJDb250cm9sbGVyKCkgc2V0UGljdHVyZUluUGljdHVyZVBvc3NpYmxlOm1fYWxsb3dz
UGljdHVyZUluUGljdHVyZVBsYXliYWNrXTsKLQotI2lmIFBMQVRGT1JNKFdBVENIT1MpCi0gICAg
bV92aWV3Q29udHJvbGxlciA9IHZpZGVvRnVsbHNjcmVlbk1vZGVsKCktPmNyZWF0ZVZpZGVvRnVs
bHNjcmVlblZpZXdDb250cm9sbGVyKG1fcGxheWVyVmlld0NvbnRyb2xsZXIuZ2V0KCkuYXZQbGF5
ZXJWaWV3Q29udHJvbGxlcik7Ci0jZW5kaWYKLQotICAgIGlmIChtX3ZpZXdDb250cm9sbGVyKSB7
Ci0gICAgICAgIFttX3ZpZXdDb250cm9sbGVyIGFkZENoaWxkVmlld0NvbnRyb2xsZXI6bV9wbGF5
ZXJWaWV3Q29udHJvbGxlci5nZXQoKS5hdlBsYXllclZpZXdDb250cm9sbGVyXTsKLSAgICAgICAg
W1ttX3ZpZXdDb250cm9sbGVyIHZpZXddIGFkZFN1YnZpZXc6W21fcGxheWVyVmlld0NvbnRyb2xs
ZXIgdmlld11dOwotICAgIH0gZWxzZQotICAgICAgICBbbV9wYXJlbnRWaWV3IGFkZFN1YnZpZXc6
W21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld11dOwotCi0gICAgW21fcGxheWVyVmlld0NvbnRy
b2xsZXIgdmlld10uZnJhbWUgPSBbbV9wYXJlbnRWaWV3IGNvbnZlcnRSZWN0Om1faW5saW5lUmVj
dCB0b1ZpZXc6W21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10uc3VwZXJ2aWV3XTsKLSAgICBb
W21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10gc2V0QmFja2dyb3VuZENvbG9yOmNsZWFyVUlD
b2xvcigpXTsKLSAgICBbW21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10gc2V0QXV0b3Jlc2l6
aW5nTWFzazooVUlWaWV3QXV0b3Jlc2l6aW5nRmxleGlibGVCb3R0b21NYXJnaW4gfCBVSVZpZXdB
dXRvcmVzaXppbmdGbGV4aWJsZVJpZ2h0TWFyZ2luKV07Ci0KLSAgICBbW21fcGxheWVyVmlld0Nv
bnRyb2xsZXIgdmlld10gc2V0TmVlZHNMYXlvdXRdOwotICAgIFtbbV9wbGF5ZXJWaWV3Q29udHJv
bGxlciB2aWV3XSBsYXlvdXRJZk5lZWRlZF07Ci0KLSAgICBbQ0FUcmFuc2FjdGlvbiBjb21taXRd
OwotCi0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB0aGlzXSB7Ci0gICAgICAgIGlmIChtX2Z1bGxz
Y3JlZW5DaGFuZ2VPYnNlcnZlcikKLSAgICAgICAgICAgIG1fZnVsbHNjcmVlbkNoYW5nZU9ic2Vy
dmVyLT5kaWRTZXR1cEZ1bGxzY3JlZW4oKTsKLSAgICB9KTsKLX0KLQotdm9pZCBWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VBVktpdDo6ZW50ZXJGdWxsc2NyZWVuKCkKLXsKLSAgICBMT0coRnVsbHNj
cmVlbiwgIlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjplbnRlckZ1bGxzY3JlZW4oJXAp
ICVkIiwgdGhpcywgbW9kZSgpKTsKLQotICAgIG1fZXhpdENvbXBsZXRlZCA9IGZhbHNlOwotICAg
IG1fZXhpdFJlcXVlc3RlZCA9IGZhbHNlOwotICAgIG1fZW50ZXJSZXF1ZXN0ZWQgPSB0cnVlOwot
Ci0gICAgaWYgKG1fY3VycmVudE1vZGUuaXNQaWN0dXJlSW5QaWN0dXJlKCkpCi0gICAgICAgIGVu
dGVyUGljdHVyZUluUGljdHVyZSgpOwotICAgIGVsc2UgaWYgKG1fY3VycmVudE1vZGUuaXNGdWxs
c2NyZWVuKCkpCi0gICAgICAgIGVudGVyRnVsbHNjcmVlblN0YW5kYXJkKCk7Ci0gICAgZWxzZQot
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotdm9pZCBWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VBVktpdDo6ZW50ZXJQaWN0dXJlSW5QaWN0dXJlKCkKLXsKLSAgICBMT0coRnVsbHNj
cmVlbiwgIlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjplbnRlclBpY3R1cmVJblBpY3R1
cmUoJXApIiwgdGhpcyk7Ci0gICAgCi0gICAgaWYgKFttX3BsYXllclZpZXdDb250cm9sbGVyIGlz
UGljdHVyZUluUGljdHVyZVBvc3NpYmxlXSkKLSAgICAgICAgW21fcGxheWVyVmlld0NvbnRyb2xs
ZXIgc3RhcnRQaWN0dXJlSW5QaWN0dXJlXTsKLSAgICBlbHNlCi0gICAgICAgIGZhaWxlZFRvU3Rh
cnRQaWN0dXJlSW5QaWN0dXJlKCk7Ci19Ci0KIHN0YXRpYyBVSVZpZXdDb250cm9sbGVyICpmYWxs
YmFja1ZpZXdDb250cm9sbGVyKFVJVmlldyAqdmlldykKIHsKICAgICBmb3IgKFVJVmlldyAqY3Vy
cmVudFZpZXcgPSB2aWV3OyBjdXJyZW50VmlldzsgY3VycmVudFZpZXcgPSBjdXJyZW50Vmlldy5z
dXBlcnZpZXcpIHsKQEAgLTk1NiwzNTAgKzgyMiw2IEBAIFVJVmlld0NvbnRyb2xsZXIgKlZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpwcmVzZW50aW5nVmlld0NvbnRyb2xsZXIoKQogICAg
IHJldHVybiBjb250cm9sbGVyOwogfQogCi12b2lkIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFW
S2l0OjplbnRlckZ1bGxzY3JlZW5TdGFuZGFyZCgpCi17Ci0gICAgTE9HKEZ1bGxzY3JlZW4sICJW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZW50ZXJGdWxsc2NyZWVuU3RhbmRhcmQoJXAp
IiwgdGhpcyk7Ci0KLSAgICBpZiAoW21fcGxheWVyVmlld0NvbnRyb2xsZXIgaXNQaWN0dXJlSW5Q
aWN0dXJlQWN0aXZlXSkgewotICAgICAgICAvLyBOT1RFOiBUaGUgZnVsbHNjcmVlbiBtb2RlIHdp
bGwgYmUgcmVzdG9yZWQgaW4gcHJlcGFyZUZvclBpY3R1cmVJblBpY3R1cmVTdG9wV2l0aENvbXBs
ZXRpb25IYW5kbGVyKCkuCi0gICAgICAgIG1fc2hvdWxkUmV0dXJuVG9GdWxsc2NyZWVuV2hlblN0
b3BwaW5nUGlQID0gdHJ1ZTsKLSAgICAgICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIgc3RvcFBp
Y3R1cmVJblBpY3R1cmVdOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgW1ttX3BsYXll
clZpZXdDb250cm9sbGVyIHZpZXddIGxheW91dElmTmVlZGVkXTsKLSAgICBbbV9wbGF5ZXJWaWV3
Q29udHJvbGxlciBlbnRlckZ1bGxTY3JlZW5BbmltYXRlZDpZRVMgY29tcGxldGlvbkhhbmRsZXI6
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpXSAoQk9PTCBzdWNjZWVkZWQs
IE5TRXJyb3IqIGVycm9yKSB7Ci0gICAgICAgIGlmICghc3VjY2VlZGVkKQotICAgICAgICAgICAg
V1RGTG9nQWx3YXlzKCItW0FWUGxheWVyVmlld0NvbnRyb2xsZXIgZW50ZXJGdWxsU2NyZWVuQW5p
bWF0ZWQ6Y29tcGxldGlvbkhhbmRsZXI6XSBmYWlsZWQgd2l0aCBlcnJvciAlcyIsIFtbZXJyb3Ig
bG9jYWxpemVkRGVzY3JpcHRpb25dIFVURjhTdHJpbmddKTsKLQotICAgICAgICBMT0coRnVsbHNj
cmVlbiwgIlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjplbnRlckZ1bGxzY3JlZW5TdGFu
ZGFyZCAtIGxhbWJkYSglcCkgLSBzdWNjZWVkZWQoJXMpIiwgdGhpcywgYm9vbFN0cmluZyhzdWNj
ZWVkZWQpKTsKLSAgICAgICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIgc2V0U2hvd3NQbGF5YmFj
a0NvbnRyb2xzOllFU107Ci0KLSAgICAgICAgaWYgKG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVy
KQotICAgICAgICAgICAgbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXItPmRpZEVudGVyRnVsbHNj
cmVlbigpOwotICAgIH1dOwotfQotCi12b2lkIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0
OjpleGl0RnVsbHNjcmVlbihjb25zdCBJbnRSZWN0JiBmaW5hbFJlY3QpCi17Ci0gICAgbV93YXRj
aGRvZ1RpbWVyLnN0b3AoKTsKLQotICAgIG1fZXhpdFJlcXVlc3RlZCA9IHRydWU7Ci0gICAgaWYg
KG1fZXhpdENvbXBsZXRlZCkgewotICAgICAgICBpZiAobV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2
ZXIpCi0gICAgICAgICAgICBtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci0+ZGlkRXhpdEZ1bGxz
Y3JlZW4oKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIExPRyhGdWxsc2NyZWVuLCAi
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmV4aXRGdWxsc2NyZWVuKCVwKSIsIHRoaXMp
OwotICAgIFttX3BsYXllclZpZXdDb250cm9sbGVyIHNldFNob3dzUGxheWJhY2tDb250cm9sczpO
T107Ci0gICAgCi0gICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10uZnJhbWUgPSBbbV9w
YXJlbnRWaWV3IGNvbnZlcnRSZWN0OmZpbmFsUmVjdCB0b1ZpZXc6W21fcGxheWVyVmlld0NvbnRy
b2xsZXIgdmlld10uc3VwZXJ2aWV3XTsKLQotICAgIFdlYkFWUGxheWVyTGF5ZXIgKnBsYXllckxh
eWVyID0gKFdlYkFWUGxheWVyTGF5ZXIgKilbbV9wbGF5ZXJMYXllclZpZXcgcGxheWVyTGF5ZXJd
OwotICAgIGlmIChbcGxheWVyTGF5ZXIgdmlkZW9HcmF2aXR5XSAhPSBnZXRBVkxheWVyVmlkZW9H
cmF2aXR5UmVzaXplQXNwZWN0KCkpCi0gICAgICAgIFtwbGF5ZXJMYXllciBzZXRWaWRlb0dyYXZp
dHk6Z2V0QVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdCgpXTsKLQotICAgIFtbbV9wbGF5
ZXJWaWV3Q29udHJvbGxlciB2aWV3XSBsYXlvdXRJZk5lZWRlZF07Ci0gICAgaWYgKG1fY3VycmVu
dE1vZGUuaXNQaWN0dXJlSW5QaWN0dXJlKCkpIHsKLSAgICAgICAgbV9zaG91bGRSZXR1cm5Ub0Z1
bGxzY3JlZW5XaGVuU3RvcHBpbmdQaVAgPSBmYWxzZTsKLSAgICAgICAgW21fd2luZG93IHNldEhp
ZGRlbjpOT107Ci0gICAgICAgIFttX3BsYXllclZpZXdDb250cm9sbGVyIHN0b3BQaWN0dXJlSW5Q
aWN0dXJlXTsKLSAgICB9IGVsc2UgaWYgKG1fY3VycmVudE1vZGUuaGFzUGljdHVyZUluUGljdHVy
ZSgpICYmIG1fY3VycmVudE1vZGUuaGFzRnVsbHNjcmVlbigpKSB7Ci0gICAgICAgIFttX3BsYXll
clZpZXdDb250cm9sbGVyIGV4aXRGdWxsU2NyZWVuQW5pbWF0ZWQ6Tk8gY29tcGxldGlvbkhhbmRs
ZXI6W3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB0aGlzXSAoQk9PTCBzdWNjZXNz
LCBOU0Vycm9yKiBlcnJvcikgewotICAgICAgICAgICAgaWYgKCFzdWNjZXNzKQotICAgICAgICAg
ICAgICAgIFdURkxvZ0Fsd2F5cygiLVtBVlBsYXllclZpZXdDb250cm9sbGVyIGV4aXRGdWxsU2Ny
ZWVuQW5pbWF0ZWQ6Y29tcGxldGlvbkhhbmRsZXI6XSBmYWlsZWQgd2l0aCBlcnJvciAlcyIsIFtb
ZXJyb3IgbG9jYWxpemVkRGVzY3JpcHRpb25dIFVURjhTdHJpbmddKTsKLQotICAgICAgICAgICAg
Y2xlYXJNb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5k
YXJkKTsKLSAgICAgICAgICAgIFttX3dpbmRvdyBzZXRIaWRkZW46Tk9dOwotICAgICAgICAgICAg
W21fcGxheWVyVmlld0NvbnRyb2xsZXIgc3RvcFBpY3R1cmVJblBpY3R1cmVdOwotICAgICAgICB9
XTsKLSAgICB9IGVsc2UgaWYgKG1fY3VycmVudE1vZGUuaXNGdWxsc2NyZWVuKCkpIHsKLSAgICAg
ICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIgZXhpdEZ1bGxTY3JlZW5BbmltYXRlZDpZRVMgY29t
cGxldGlvbkhhbmRsZXI6W3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB0aGlzXSAo
Qk9PTCBzdWNjZXNzLCBOU0Vycm9yKiBlcnJvcikgbXV0YWJsZSB7Ci0gICAgICAgICAgICBpZiAo
IXN1Y2Nlc3MpCi0gICAgICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCItW0FWUGxheWVyVmlld0Nv
bnRyb2xsZXIgZXhpdEZ1bGxTY3JlZW5BbmltYXRlZDpjb21wbGV0aW9uSGFuZGxlcjpdIGZhaWxl
ZCB3aXRoIGVycm9yICVzIiwgW1tlcnJvciBsb2NhbGl6ZWREZXNjcmlwdGlvbl0gVVRGOFN0cmlu
Z10pOwotCi0gICAgICAgICAgICBtX2V4aXRDb21wbGV0ZWQgPSB0cnVlOwotCi0gICAgICAgICAg
ICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07Ci0gICAgICAgICAgICBbQ0FUcmFuc2FjdGlvbiBzZXRE
aXNhYmxlQWN0aW9uczpZRVNdOwotICAgICAgICAgICAgW21fcGxheWVyTGF5ZXJWaWV3IHNldEJh
Y2tncm91bmRDb2xvcjpjbGVhclVJQ29sb3IoKV07Ci0gICAgICAgICAgICBbW21fcGxheWVyVmll
d0NvbnRyb2xsZXIgdmlld10gc2V0QmFja2dyb3VuZENvbG9yOmNsZWFyVUlDb2xvcigpXTsKLSAg
ICAgICAgICAgIFtDQVRyYW5zYWN0aW9uIGNvbW1pdF07Ci0KLSAgICAgICAgICAgIGRpc3BhdGNo
X2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92
ZShwcm90ZWN0ZWRUaGlzKSwgdGhpc10oKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG1fZnVsbHNj
cmVlbkNoYW5nZU9ic2VydmVyKQotICAgICAgICAgICAgICAgICAgICBtX2Z1bGxzY3JlZW5DaGFu
Z2VPYnNlcnZlci0+ZGlkRXhpdEZ1bGxzY3JlZW4oKTsKLSAgICAgICAgICAgIH0pOwotICAgICAg
ICB9XTsKLSAgICB9OwotfQotCi12b2lkIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojpj
bGVhbnVwRnVsbHNjcmVlbigpCi17Ci0gICAgTE9HKEZ1bGxzY3JlZW4sICJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VBVktpdDo6Y2xlYW51cEZ1bGxzY3JlZW4oJXApIiwgdGhpcyk7Ci0KLSAgICBp
ZiAobV93aW5kb3cpIHsKLSAgICAgICAgW21fd2luZG93IHNldEhpZGRlbjpZRVNdOwotICAgICAg
ICBbbV93aW5kb3cgc2V0Um9vdFZpZXdDb250cm9sbGVyOm5pbF07Ci0gICAgfQotICAgIAotICAg
IFttX3BsYXllclZpZXdDb250cm9sbGVyIHNldERlbGVnYXRlOm5pbF07Ci0gICAgW21fcGxheWVy
Vmlld0NvbnRyb2xsZXIgc2V0UGxheWVyQ29udHJvbGxlcjpuaWxdOwotICAgIAotICAgIGlmICht
X2N1cnJlbnRNb2RlLmhhc1BpY3R1cmVJblBpY3R1cmUoKSkKLSAgICAgICAgW21fcGxheWVyVmll
d0NvbnRyb2xsZXIgc3RvcFBpY3R1cmVJblBpY3R1cmVdOwotICAgIGlmIChtX2N1cnJlbnRNb2Rl
Lmhhc0Z1bGxzY3JlZW4oKSkgewotICAgICAgICBbW21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmll
d10gbGF5b3V0SWZOZWVkZWRdOwotICAgICAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciBleGl0
RnVsbFNjcmVlbkFuaW1hdGVkOk5PIGNvbXBsZXRpb25IYW5kbGVyOltdIChCT09MIHN1Y2Nlc3Ms
IE5TRXJyb3IqIGVycm9yKSB7Ci0gICAgICAgICAgICBpZiAoIXN1Y2Nlc3MpCi0gICAgICAgICAg
ICAgICAgV1RGTG9nQWx3YXlzKCItW0FWUGxheWVyVmlld0NvbnRyb2xsZXIgZXhpdEZ1bGxTY3Jl
ZW5BbmltYXRlZDpjb21wbGV0aW9uSGFuZGxlcjpdIGZhaWxlZCB3aXRoIGVycm9yICVzIiwgW1tl
cnJvciBsb2NhbGl6ZWREZXNjcmlwdGlvbl0gVVRGOFN0cmluZ10pOwotICAgICAgICB9XTsKLSAg
ICB9Ci0gICAgCi0gICAgW1ttX3BsYXllclZpZXdDb250cm9sbGVyIHZpZXddIHJlbW92ZUZyb21T
dXBlcnZpZXddOwotICAgIGlmIChtX3ZpZXdDb250cm9sbGVyKQotICAgICAgICBbbV9wbGF5ZXJW
aWV3Q29udHJvbGxlciByZW1vdmVGcm9tUGFyZW50Vmlld0NvbnRyb2xsZXJdOwotICAgIAotICAg
IFttX3BsYXllckxheWVyVmlldyByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKLSAgICBbW21fdmlld0Nv
bnRyb2xsZXIgdmlld10gcmVtb3ZlRnJvbVN1cGVydmlld107Ci0KLSAgICBtX3BsYXllckxheWVy
VmlldyA9IG5pbDsKLSAgICBtX3BsYXllclZpZXdDb250cm9sbGVyID0gbmlsOwotICAgIG1fd2lu
ZG93ID0gbmlsOwotICAgIG1fdmlkZW9WaWV3ID0gbmlsOwotICAgIG1fcGFyZW50VmlldyA9IG5p
bDsKLSAgICBtX3BhcmVudFdpbmRvdyA9IG5pbDsKLSAgICAKLSAgICBpZiAobV9mdWxsc2NyZWVu
Q2hhbmdlT2JzZXJ2ZXIpCi0gICAgICAgIG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLT5kaWRD
bGVhbnVwRnVsbHNjcmVlbigpOwotCi0gICAgbV9lbnRlclJlcXVlc3RlZCA9IGZhbHNlOwotfQot
Ci12b2lkIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjppbnZhbGlkYXRlKCkKLXsKLSAg
ICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsID0gbmlsOwotICAgIG1fZnVsbHNjcmVlbkNoYW5nZU9i
c2VydmVyID0gbmlsOwotICAgIAotICAgIGNsZWFudXBGdWxsc2NyZWVuKCk7Ci19Ci0KLXZvaWQg
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnJlcXVlc3RIaWRlQW5kRXhpdEZ1bGxzY3Jl
ZW4oKQotewotICAgIGlmICghbV9lbnRlclJlcXVlc3RlZCkKLSAgICAgICAgcmV0dXJuOwotICAg
IAotICAgIGlmIChtX2N1cnJlbnRNb2RlLmhhc1BpY3R1cmVJblBpY3R1cmUoKSkKLSAgICAgICAg
cmV0dXJuOwotICAgIAotICAgIExPRyhGdWxsc2NyZWVuLCAiVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlQVZLaXQ6OnJlcXVlc3RIaWRlQW5kRXhpdEZ1bGxzY3JlZW4oJXApIiwgdGhpcyk7Ci0KLSAg
ICBbbV93aW5kb3cgc2V0SGlkZGVuOllFU107Ci0gICAgW1ttX3BsYXllclZpZXdDb250cm9sbGVy
IHZpZXddIHNldEhpZGRlbjpZRVNdOwotCi0gICAgaWYgKHBsYXliYWNrU2Vzc2lvbk1vZGVsKCkg
JiYgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbCAmJiAhbV9leGl0UmVxdWVzdGVkKSB7Ci0gICAgICAg
IHBsYXliYWNrU2Vzc2lvbk1vZGVsKCktPnBhdXNlKCk7Ci0gICAgICAgIG1fdmlkZW9GdWxsc2Ny
ZWVuTW9kZWwtPnJlcXVlc3RGdWxsc2NyZWVuTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZp
ZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsKLSAgICB9Ci19Ci0KLXZvaWQgVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQ6OnByZXBhcmVkVG9SZXR1cm5Ub0lubGluZShib29sIHZpc2libGUsIGNv
bnN0IEludFJlY3QmIGlubGluZVJlY3QpCi17Ci0gICAgTE9HKEZ1bGxzY3JlZW4sICJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6cHJlcGFyZWRUb1JldHVyblRvSW5saW5lKCVwKSAtIHZp
c2libGUoJXMpIiwgdGhpcywgYm9vbFN0cmluZyh2aXNpYmxlKSk7Ci0gICAgaWYgKG1fcHJlcGFy
ZVRvSW5saW5lQ2FsbGJhY2spIHsKLSAgICAgICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmll
d10uZnJhbWUgPSBbbV9wYXJlbnRWaWV3IGNvbnZlcnRSZWN0OmlubGluZVJlY3QgdG9WaWV3Oltt
X3BsYXllclZpZXdDb250cm9sbGVyIHZpZXddLnN1cGVydmlld107Ci0gICAgICAgIFdURjo6RnVu
Y3Rpb248dm9pZChib29sKT4gY2FsbGJhY2sgPSBXVEZNb3ZlKG1fcHJlcGFyZVRvSW5saW5lQ2Fs
bGJhY2spOwotICAgICAgICBjYWxsYmFjayh2aXNpYmxlKTsKLSAgICB9Ci19Ci0KLXZvaWQgVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnByZXBhcmVkVG9FeGl0RnVsbHNjcmVlbigpCi17
Ci0gICAgaWYgKCFtX3dhaXRpbmdGb3JQcmVwYXJlZFRvRXhpdCkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgbV93YWl0aW5nRm9yUHJlcGFyZWRUb0V4aXQgPSBmYWxzZTsKLSAgICBtX3ZpZGVvRnVs
bHNjcmVlbk1vZGVsLT5yZXF1ZXN0RnVsbHNjcmVlbk1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1z
OjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSwgdHJ1ZSk7Ci19Ci0KLWJvb2wgVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlQVZLaXQ6Om1heUF1dG9tYXRpY2FsbHlTaG93VmlkZW9QaWN0dXJlSW5QaWN0
dXJlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gW3BsYXllckNvbnRyb2xsZXIoKSBpc1BsYXlpbmdd
ICYmIG1fY3VycmVudE1vZGUuaXNGdWxsc2NyZWVuKCkgJiYgc3VwcG9ydHNQaWN0dXJlSW5QaWN0
dXJlKCk7Ci19Ci0KLXZvaWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmZ1bGxzY3Jl
ZW5NYXlSZXR1cm5Ub0lubGluZShXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2sp
Ci17Ci0gICAgbV9wcmVwYXJlVG9JbmxpbmVDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOwot
ICAgIGlmIChtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcikKLSAgICAgICAgbV9mdWxsc2NyZWVu
Q2hhbmdlT2JzZXJ2ZXItPmZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZSgpOwotfQotCi12b2lk
IFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojp3aWxsU3RhcnRQaWN0dXJlSW5QaWN0dXJl
KCkKLXsKLSAgICBMT0coRnVsbHNjcmVlbiwgIlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0
Ojp3aWxsU3RhcnRQaWN0dXJlSW5QaWN0dXJlKCVwKSIsIHRoaXMpOwotICAgIHNldE1vZGUoSFRN
TE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVyZUluUGljdHVyZSk7
Ci0gICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwpCi0gICAgICAgIG1fdmlkZW9GdWxsc2Ny
ZWVuTW9kZWwtPndpbGxFbnRlclBpY3R1cmVJblBpY3R1cmUoKTsKLX0KLQotdm9pZCBWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZGlkU3RhcnRQaWN0dXJlSW5QaWN0dXJlKCkKLXsKLSAg
ICBMT0coRnVsbHNjcmVlbiwgIlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpkaWRTdGFy
dFBpY3R1cmVJblBpY3R1cmUoJXApIiwgdGhpcyk7Ci0gICAgbV9zaG91bGRSZXR1cm5Ub0Z1bGxz
Y3JlZW5BZnRlckVudGVyaW5nRm9yZWdyb3VuZCA9IHBpY3R1cmVJblBpY3R1cmVXYXNTdGFydGVk
V2hlbkVudGVyaW5nQmFja2dyb3VuZCgpOwotICAgIFttX3BsYXllclZpZXdDb250cm9sbGVyIHNl
dFNob3dzUGxheWJhY2tDb250cm9sczpZRVNdOwotCi0gICAgaWYgKG1fY3VycmVudE1vZGUuaGFz
RnVsbHNjcmVlbigpKSB7Ci0gICAgICAgIGlmICghcGljdHVyZUluUGljdHVyZVdhc1N0YXJ0ZWRX
aGVuRW50ZXJpbmdCYWNrZ3JvdW5kKCkpIHsKLSAgICAgICAgICAgIFtbbV9wbGF5ZXJWaWV3Q29u
dHJvbGxlciB2aWV3XSBsYXlvdXRJZk5lZWRlZF07Ci0gICAgICAgICAgICBbbV9wbGF5ZXJWaWV3
Q29udHJvbGxlciBleGl0RnVsbFNjcmVlbkFuaW1hdGVkOllFUyBjb21wbGV0aW9uSGFuZGxlcjpb
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIHRoaXNdIChCT09MIHN1Y2Nlc3MsIE5T
RXJyb3IqIGVycm9yKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFzdWNjZXNzKQotICAgICAgICAg
ICAgICAgICAgICBXVEZMb2dBbHdheXMoIi1bQVZQbGF5ZXJWaWV3Q29udHJvbGxlciBleGl0RnVs
bFNjcmVlbkFuaW1hdGVkOmNvbXBsZXRpb25IYW5kbGVyOl0gZmFpbGVkIHdpdGggZXJyb3IgJXMi
LCBbW2Vycm9yIGxvY2FsaXplZERlc2NyaXB0aW9uXSBVVEY4U3RyaW5nXSk7Ci0gICAgICAgICAg
ICAgICAgW21fd2luZG93IHNldEhpZGRlbjpZRVNdOwotICAgICAgICAgICAgICAgIFtbbV9wbGF5
ZXJWaWV3Q29udHJvbGxlciB2aWV3XSBzZXRIaWRkZW46WUVTXTsKLSAgICAgICAgICAgIH1dOwot
ICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgW21fd2luZG93IHNldEhpZGRlbjpZRVNd
OwotICAgICAgICBbW21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10gc2V0SGlkZGVuOllFU107
Ci0gICAgfQotCi0gICAgaWYgKG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKQotICAgICAgICBt
X2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci0+ZGlkRW50ZXJGdWxsc2NyZWVuKCk7Ci0gICAgaWYg
KG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwpCi0gICAgICAgIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwt
PmRpZEVudGVyUGljdHVyZUluUGljdHVyZSgpOwotfQotCi12b2lkIFZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZUFWS2l0OjpmYWlsZWRUb1N0YXJ0UGljdHVyZUluUGljdHVyZSgpCi17Ci0gICAgTE9H
KEZ1bGxzY3JlZW4sICJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZmFpbGVkVG9TdGFy
dFBpY3R1cmVJblBpY3R1cmUoJXApIiwgdGhpcyk7Ci0gICAgW21fcGxheWVyVmlld0NvbnRyb2xs
ZXIgc2V0U2hvd3NQbGF5YmFja0NvbnRyb2xzOllFU107Ci0KLSAgICBpZiAobV9jdXJyZW50TW9k
ZS5oYXNGdWxsc2NyZWVuKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fZXhpdENvbXBsZXRl
ZCA9IHRydWU7Ci0KLSAgICBpZiAobV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIpCi0gICAgICAg
IG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLT5kaWRFbnRlckZ1bGxzY3JlZW4oKTsKLSAgICBp
ZiAobV92aWRlb0Z1bGxzY3JlZW5Nb2RlbCkKLSAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2Rl
bC0+ZmFpbGVkVG9FbnRlclBpY3R1cmVJblBpY3R1cmUoKTsKLQotICAgIGlmIChtX3ZpZGVvRnVs
bHNjcmVlbk1vZGVsKQotICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT5yZXF1ZXN0RnVs
bHNjcmVlbk1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9u
ZSk7Ci19Ci0KLXZvaWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OndpbGxTdG9wUGlj
dHVyZUluUGljdHVyZSgpCi17Ci0gICAgTE9HKEZ1bGxzY3JlZW4sICJWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VBVktpdDo6d2lsbFN0b3BQaWN0dXJlSW5QaWN0dXJlKCVwKSIsIHRoaXMpOwotCi0g
ICAgbV9zaG91bGRSZXR1cm5Ub0Z1bGxzY3JlZW5XaGVuU3RvcHBpbmdQaVAgPSBmYWxzZTsKLSAg
ICBtX3Nob3VsZFJldHVyblRvRnVsbHNjcmVlbkFmdGVyRW50ZXJpbmdGb3JlZ3JvdW5kID0gZmFs
c2U7Ci0KLSAgICBpZiAobV9jdXJyZW50TW9kZS5oYXNGdWxsc2NyZWVuKCkgfHwgbV9yZXN0b3Jp
bmdGdWxsc2NyZWVuRm9yUGljdHVyZUluUGljdHVyZVN0b3ApCi0gICAgICAgIHJldHVybjsKLQot
ICAgIFttX3dpbmRvdyBzZXRIaWRkZW46Tk9dOwotICAgIFtbbV9wbGF5ZXJWaWV3Q29udHJvbGxl
ciB2aWV3XSBzZXRIaWRkZW46Tk9dOwotCi0gICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwp
Ci0gICAgICAgIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwtPnJlcXVlc3RGdWxsc2NyZWVuTW9kZShI
VE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsKLSAgICBpZiAo
bV92aWRlb0Z1bGxzY3JlZW5Nb2RlbCkKLSAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+
d2lsbEV4aXRQaWN0dXJlSW5QaWN0dXJlKCk7Ci19Ci0KLXZvaWQgVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQ6OmRpZFN0b3BQaWN0dXJlSW5QaWN0dXJlKCkKLXsKLSAgICBMT0coRnVsbHNj
cmVlbiwgIlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpkaWRTdG9wUGljdHVyZUluUGlj
dHVyZSglcCkiLCB0aGlzKTsKLQotICAgIGlmIChtX2N1cnJlbnRNb2RlLmhhc0Z1bGxzY3JlZW4o
KSB8fCBtX3Jlc3RvcmluZ0Z1bGxzY3JlZW5Gb3JQaWN0dXJlSW5QaWN0dXJlU3RvcCkgewotICAg
ICAgICBjbGVhck1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2Rl
UGljdHVyZUluUGljdHVyZSk7Ci0gICAgICAgIFttX3BsYXllclZpZXdDb250cm9sbGVyIHNldFNo
b3dzUGxheWJhY2tDb250cm9sczpZRVNdOwotCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBtX2V4aXRDb21wbGV0ZWQgPSB0cnVlOwotCi0gICAgW21fcGxheWVyTGF5ZXJWaWV3IHNldEJh
Y2tncm91bmRDb2xvcjpjbGVhclVJQ29sb3IoKV07Ci0gICAgW1ttX3BsYXllclZpZXdDb250cm9s
bGVyIHZpZXddIHNldEJhY2tncm91bmRDb2xvcjpjbGVhclVJQ29sb3IoKV07Ci0KLSAgICBjbGVh
ck1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVyZUlu
UGljdHVyZSk7Ci0KLSAgICBpZiAobV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIpCi0gICAgICAg
IG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLT5kaWRFeGl0RnVsbHNjcmVlbigpOwotICAgIGlm
IChtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsKQotICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVs
LT5kaWRFeGl0UGljdHVyZUluUGljdHVyZSgpOwotfQotCi12b2lkIFZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZUFWS2l0OjpwcmVwYXJlRm9yUGljdHVyZUluUGljdHVyZVN0b3BXaXRoQ29tcGxldGlv
bkhhbmRsZXIodm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShCT09MIHJlc3RvcmVkKSkKLXsKLSAg
ICBMT0coRnVsbHNjcmVlbiwgIlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpwcmVwYXJl
Rm9yUGljdHVyZUluUGljdHVyZVN0b3BXaXRoQ29tcGxldGlvbkhhbmRsZXIoJXApIiwgdGhpcyk7
Ci0gICAgaWYgKG1fc2hvdWxkUmV0dXJuVG9GdWxsc2NyZWVuV2hlblN0b3BwaW5nUGlQIHx8IG1f
c2hvdWxkUmV0dXJuVG9GdWxsc2NyZWVuQWZ0ZXJFbnRlcmluZ0ZvcmVncm91bmQpIHsKLQotICAg
ICAgICBtX3Nob3VsZFJldHVyblRvRnVsbHNjcmVlbkFmdGVyRW50ZXJpbmdGb3JlZ3JvdW5kID0g
ZmFsc2U7Ci0gICAgICAgIG1fc2hvdWxkUmV0dXJuVG9GdWxsc2NyZWVuV2hlblN0b3BwaW5nUGlQ
ID0gZmFsc2U7Ci0gICAgICAgIG1fcmVzdG9yaW5nRnVsbHNjcmVlbkZvclBpY3R1cmVJblBpY3R1
cmVTdG9wID0gdHJ1ZTsKLQotICAgICAgICBbbV93aW5kb3cgc2V0SGlkZGVuOk5PXTsKLSAgICAg
ICAgW1ttX3BsYXllclZpZXdDb250cm9sbGVyIHZpZXddIHNldEhpZGRlbjpOT107Ci0KLSAgICAg
ICAgW1ttX3BsYXllclZpZXdDb250cm9sbGVyIHZpZXddIGxheW91dElmTmVlZGVkXTsKLSAgICAg
ICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIgZW50ZXJGdWxsU2NyZWVuQW5pbWF0ZWQ6WUVTIGNv
bXBsZXRpb25IYW5kbGVyOl4oQk9PTCBzdWNjZWVkZWQsIE5TRXJyb3IgKmVycm9yKSB7Ci0gICAg
ICAgICAgICBpZiAoIXN1Y2NlZWRlZCkKLSAgICAgICAgICAgICAgICBXVEZMb2dBbHdheXMoIi1b
QVZQbGF5ZXJWaWV3Q29udHJvbGxlciBlbnRlckZ1bGxTY3JlZW5BbmltYXRlZDpjb21wbGV0aW9u
SGFuZGxlcjpdIGZhaWxlZCB3aXRoIGVycm9yICVzIiwgW1tlcnJvciBsb2NhbGl6ZWREZXNjcmlw
dGlvbl0gVVRGOFN0cmluZ10pOwotCi0gICAgICAgICAgICBtX3Jlc3RvcmluZ0Z1bGxzY3JlZW5G
b3JQaWN0dXJlSW5QaWN0dXJlU3RvcCA9IGZhbHNlOwotICAgICAgICAgICAgc2V0TW9kZShIVE1M
TWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZCk7Ci0gICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihzdWNjZWVkZWQpOwotICAgICAgICAgICAgaWYgKG1fZnVs
bHNjcmVlbkNoYW5nZU9ic2VydmVyKQotICAgICAgICAgICAgICAgIG1fZnVsbHNjcmVlbkNoYW5n
ZU9ic2VydmVyLT5kaWRFbnRlckZ1bGxzY3JlZW4oKTsKLSAgICAgICAgfV07Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBmdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUoW3Byb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCBzdHJvbmdDb21wbGV0aW9uSGFuZGxlciA9IGFkb3B0
TlMoW2NvbXBsZXRpb25IYW5kbGVyIGNvcHldKV0oYm9vbCByZXN0b3JlZCkgIHsKLSAgICAgICAg
TE9HKEZ1bGxzY3JlZW4sICJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6cHJlcGFyZUZv
clBpY3R1cmVJblBpY3R1cmVTdG9wV2l0aENvbXBsZXRpb25IYW5kbGVyIGxhbWJkYSglcCkgLSBy
ZXN0b3JlZCglcykiLCBwcm90ZWN0ZWRUaGlzLmdldCgpLCBib29sU3RyaW5nKHJlc3RvcmVkKSk7
Ci0gICAgICAgICgodm9pZCAoXikoQk9PTCkpc3Ryb25nQ29tcGxldGlvbkhhbmRsZXIuZ2V0KCkp
KHJlc3RvcmVkKTsKLSAgICB9KTsKLX0KLQotYm9vbCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VB
VktpdDo6c2hvdWxkRXhpdEZ1bGxzY3JlZW5XaXRoUmVhc29uKFZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0OjpFeGl0RnVsbFNjcmVlblJlYXNvbiByZWFzb24pCi17Ci0gICAgaWYgKCFtX3Zp
ZGVvRnVsbHNjcmVlbk1vZGVsKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIGlmIChyZWFz
b24gPT0gRXhpdEZ1bGxTY3JlZW5SZWFzb246OlBpY3R1cmVJblBpY3R1cmVTdGFydGVkKSB7Ci0g
ICAgICAgIGlmIChwaWN0dXJlSW5QaWN0dXJlV2FzU3RhcnRlZFdoZW5FbnRlcmluZ0JhY2tncm91
bmQoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBtX3Nob3VsZFJldHVy
blRvRnVsbHNjcmVlbldoZW5TdG9wcGluZ1BpUCA9IG1fY3VycmVudE1vZGUuaGFzRnVsbHNjcmVl
bigpOwotICAgICAgICBjbGVhck1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxz
Y3JlZW5Nb2RlU3RhbmRhcmQpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBp
ZiAocGxheWJhY2tTZXNzaW9uTW9kZWwoKSAmJiAocmVhc29uID09IEV4aXRGdWxsU2NyZWVuUmVh
c29uOjpEb25lQnV0dG9uVGFwcGVkIHx8IHJlYXNvbiA9PSBFeGl0RnVsbFNjcmVlblJlYXNvbjo6
UmVtb3RlQ29udHJvbFN0b3BFdmVudFJlY2VpdmVkKSkKLSAgICAgICAgcGxheWJhY2tTZXNzaW9u
TW9kZWwoKS0+cGF1c2UoKTsKLQotICAgIGlmICghbV93YXRjaGRvZ1RpbWVyLmlzQWN0aXZlKCkg
JiYgIWlnbm9yZVdhdGNoZG9nRm9yRGVidWdnaW5nKQotICAgICAgICBtX3dhdGNoZG9nVGltZXIu
c3RhcnRPbmVTaG90KGRlZmF1bHRXYXRjaGRvZ1RpbWVySW50ZXJ2YWwpOwotCi0jaWYgUExBVEZP
Uk0oV0FUQ0hPUykKLSAgICBpZiAobV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIpIHsKLSAgICAg
ICAgbV93YWl0aW5nRm9yUHJlcGFyZWRUb0V4aXQgPSB0cnVlOwotICAgICAgICBtX2Z1bGxzY3Jl
ZW5DaGFuZ2VPYnNlcnZlci0+d2lsbEV4aXRGdWxsc2NyZWVuKCk7Ci0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICB9Ci0jZW5kaWYKLQotICAgIEJPT0wgZmluaXNoZWQgPSByZWFzb24gPT0gRXhp
dEZ1bGxTY3JlZW5SZWFzb246OkRvbmVCdXR0b25UYXBwZWQgfHwgcmVhc29uID09IEV4aXRGdWxs
U2NyZWVuUmVhc29uOjpQaW5jaEdlc3R1cmVIYW5kbGVkOwotICAgIG1fdmlkZW9GdWxsc2NyZWVu
TW9kZWwtPnJlcXVlc3RGdWxsc2NyZWVuTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVv
RnVsbHNjcmVlbk1vZGVOb25lLCBmaW5pc2hlZCk7Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0K
LSNlbHNlIC8vIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLQogdm9pZCBWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VBVktpdDo6YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKQogewogICAgIExPRyhG
dWxsc2NyZWVuLCAiVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmFwcGxpY2F0aW9uRGlk
QmVjb21lQWN0aXZlKCVwKSIsIHRoaXMpOwpAQCAtMTQyMSw2ICs5NDMsMTMgQEAgdm9pZCBWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6cHJlcGFyZWRUb1JldHVyblRvSW5saW5lKGJvb2wg
dmlzaWJsZSwgY29uc3QKIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6cHJl
cGFyZWRUb0V4aXRGdWxsc2NyZWVuKCkKIHsKKyNpZiBQTEFURk9STShXQVRDSE9TKQorICAgIGlm
ICghbV93YWl0aW5nRm9yUHJlcGFyZWRUb0V4aXQpCisgICAgICAgIHJldHVybjsKKworICAgIG1f
d2FpdGluZ0ZvclByZXBhcmVkVG9FeGl0ID0gZmFsc2U7CisgICAgbV92aWRlb0Z1bGxzY3JlZW5N
b2RlbC0+cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9G
dWxsc2NyZWVuTW9kZU5vbmUsIHRydWUpOworI2VuZGlmCiB9CiAKIGJvb2wgVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlQVZLaXQ6Om1heUF1dG9tYXRpY2FsbHlTaG93VmlkZW9QaWN0dXJlSW5QaWN0
dXJlKCkgY29uc3QKQEAgLTE1NzYsMTIgKzExMDUsMjAgQEAgYm9vbCBWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VBVktpdDo6c2hvdWxkRXhpdEZ1bGxzY3JlZW5XaXRoUmVhc29uKFZpZGVvRnVsbHNj
cmUKICAgICBpZiAocGxheWJhY2tTZXNzaW9uTW9kZWwoKSAmJiAocmVhc29uID09IEV4aXRGdWxs
U2NyZWVuUmVhc29uOjpEb25lQnV0dG9uVGFwcGVkIHx8IHJlYXNvbiA9PSBFeGl0RnVsbFNjcmVl
blJlYXNvbjo6UmVtb3RlQ29udHJvbFN0b3BFdmVudFJlY2VpdmVkKSkKICAgICAgICAgcGxheWJh
Y2tTZXNzaW9uTW9kZWwoKS0+cGF1c2UoKTsKIAotICAgIEJPT0wgZmluaXNoZWQgPSByZWFzb24g
PT0gRXhpdEZ1bGxTY3JlZW5SZWFzb246OkRvbmVCdXR0b25UYXBwZWQgfHwgcmVhc29uID09IEV4
aXRGdWxsU2NyZWVuUmVhc29uOjpQaW5jaEdlc3R1cmVIYW5kbGVkOwotICAgIG1fdmlkZW9GdWxs
c2NyZWVuTW9kZWwtPnJlcXVlc3RGdWxsc2NyZWVuTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6
OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25lLCBmaW5pc2hlZCk7Ci0KICAgICBpZiAoIW1fd2F0Y2hk
b2dUaW1lci5pc0FjdGl2ZSgpICYmICFpZ25vcmVXYXRjaGRvZ0ZvckRlYnVnZ2luZykKICAgICAg
ICAgbV93YXRjaGRvZ1RpbWVyLnN0YXJ0T25lU2hvdChkZWZhdWx0V2F0Y2hkb2dUaW1lckludGVy
dmFsKTsKIAorI2lmIFBMQVRGT1JNKFdBVENIT1MpCisgICAgaWYgKG1fZnVsbHNjcmVlbkNoYW5n
ZU9ic2VydmVyKSB7CisgICAgICAgIG1fd2FpdGluZ0ZvclByZXBhcmVkVG9FeGl0ID0gdHJ1ZTsK
KyAgICAgICAgbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXItPndpbGxFeGl0RnVsbHNjcmVlbigp
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorI2VuZGlmCisgICAgCisgICAgQk9PTCBm
aW5pc2hlZCA9IHJlYXNvbiA9PSBFeGl0RnVsbFNjcmVlblJlYXNvbjo6RG9uZUJ1dHRvblRhcHBl
ZCB8fCByZWFzb24gPT0gRXhpdEZ1bGxTY3JlZW5SZWFzb246OlBpbmNoR2VzdHVyZUhhbmRsZWQ7
CisgICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKEhUTUxN
ZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUsIGZpbmlzaGVkKTsKKwog
ICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtMTg3Niw4ICsxNDEzLDYgQEAgdm9pZCBWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6cmV0dXJuVG9TdGFuZGJ5KCkKICAgICBbW21fcGxheWVy
Vmlld0NvbnRyb2xsZXIgdmlld10gc2V0SGlkZGVuOllFU107CiB9CiAKLSNlbmRpZiAvLyBFTkFC
TEUoRlVMTFNDUkVFTl9BUEkpCi0KIE5PX1JFVFVSTl9EVUVfVE9fQVNTRVJUIHZvaWQgVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OndhdGNoZG9nVGltZXJGaXJlZCgpCiB7CiAgICAgTE9H
KEZ1bGxzY3JlZW4sICJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6d2F0Y2hkb2dUaW1l
ckZpcmVkKCVwKSAtIG5vIGV4aXQgZnVsbHNjcmVlbiByZXNwb25zZSBpbiAlZ3M7IGZvcmNpbmcg
ZnVsbHNjcmVlbiBoaWRkZW4uIiwgdGhpcywgZGVmYXVsdFdhdGNoZG9nVGltZXJJbnRlcnZhbC52
YWx1ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tCmluZGV4IGQ0M2I4N2MwZDk1
MjIwYTE3ZjRjMTBiZjI0N2RkY2JhMzBkMDk4ZmQuLjEwNWQ0YzU4YTY0Yzg5MmJkNzc3MjY1ODYz
YjAxOWE1NGM2YjMzZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9X
ZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbQpAQCAtMjI0
LDcgKzIyNCw3IEBAIHByaXZhdGU6CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNv
bnRleHQ6OnJlcXVlc3RVcGRhdGVJbmxpbmVSZWN0KCkKIHsKLSNpZiBQTEFURk9STShJT1MpICYm
IEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKyNpZiBQTEFURk9STShJT1MpCiAgICAgQVNTRVJUKGlz
VUlUaHJlYWQoKSk7CiAgICAgV2ViVGhyZWFkUnVuKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0
cih0aGlzKSwgdGhpc10gKCkgbXV0YWJsZSB7CiAgICAgICAgIEludFJlY3QgY2xpZW50UmVjdCA9
IGVsZW1lbnRSZWN0SW5XaW5kb3cobV92aWRlb0VsZW1lbnQuZ2V0KCkpOwpAQCAtMjM5LDcgKzIz
OSw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnJlcXVlc3RVcGRh
dGVJbmxpbmVSZWN0KCkKIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6
cmVxdWVzdFZpZGVvQ29udGVudExheWVyKCkKIHsKLSNpZiBQTEFURk9STShJT1MpICYmIEVOQUJM
RShGVUxMU0NSRUVOX0FQSSkKKyNpZiBQTEFURk9STShJT1MpCiAgICAgQVNTRVJUKGlzVUlUaHJl
YWQoKSk7CiAgICAgV2ViVGhyZWFkUnVuKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlz
KSwgdGhpcywgdmlkZW9GdWxsc2NyZWVuTGF5ZXIgPSByZXRhaW5QdHIoW21fdmlkZW9GdWxsc2Ny
ZWVuVmlldyBsYXllcl0pXSAoKSBtdXRhYmxlIHsKICAgICAgICAgW3ZpZGVvRnVsbHNjcmVlbkxh
eWVyIHNldEJhY2tncm91bmRDb2xvcjpjYWNoZWRDR0NvbG9yKFdlYkNvcmU6OkNvbG9yOjp0cmFu
c3BhcmVudCldOwpAQCAtMjU2LDcgKzI1Niw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlckNvbnRleHQ6OnJlcXVlc3RWaWRlb0NvbnRlbnRMYXllcigpCiAKIHZvaWQgVmlkZW9GdWxs
c2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnJldHVyblZpZGVvQ29udGVudExheWVyKCkKIHsKLSNp
ZiBQTEFURk9STShJT1MpICYmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKyNpZiBQTEFURk9STShJ
T1MpCiAgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7CiAgICAgV2ViVGhyZWFkUnVuKFtwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgdGhpcywgdmlkZW9GdWxsc2NyZWVuTGF5ZXIgPSBy
ZXRhaW5QdHIoW21fdmlkZW9GdWxsc2NyZWVuVmlldyBsYXllcl0pXSAoKSBtdXRhYmxlIHsKICAg
ICAgICAgW3ZpZGVvRnVsbHNjcmVlbkxheWVyIHNldEJhY2tncm91bmRDb2xvcjpjYWNoZWRDR0Nv
bG9yKFdlYkNvcmU6OkNvbG9yOjp0cmFuc3BhcmVudCldOwpAQCAtMjc0LDcgKzI3NCw3IEBAIHZv
aWQgVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnJldHVyblZpZGVvQ29udGVudExh
eWVyKCkKIHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmRpZFNldHVwRnVs
bHNjcmVlbigpCiB7CiAgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7Ci0jaWYgUExBVEZPUk0oSU9T
KSAmJiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisjaWYgUExBVEZPUk0oSU9TKQogICAgIGRpc3Bh
dGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZlB0cih0aGlzKSwgdGhpc10gewogICAgICAgICBtX2ludGVyZmFjZS0+ZW50ZXJGdWxsc2Ny
ZWVuKCk7CiAgICAgfSk7CkBAIC0zMDMsNyArMzAzLDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5D
b250cm9sbGVyQ29udGV4dDo6d2lsbEV4aXRGdWxsc2NyZWVuKCkKIHZvaWQgVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlckNvbnRleHQ6OmRpZEV4aXRGdWxsc2NyZWVuKCkKIHsKICAgICBBU1NFUlQo
aXNVSVRocmVhZCgpKTsKLSNpZiBQTEFURk9STShJT1MpICYmIEVOQUJMRShGVUxMU0NSRUVOX0FQ
SSkKKyNpZiBQTEFURk9STShJT1MpCiAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21h
aW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB0aGlzXSB7CiAg
ICAgICAgIG1faW50ZXJmYWNlLT5jbGVhbnVwRnVsbHNjcmVlbigpOwogICAgIH0pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5Lm1tCmluZGV4IGJkZmJjODA3YTFjOTk1YjZlMWM0MWI4NzJiYzQ4YjU0NzBk
MjM2MzkuLmE5ZTkzNzEzNDYyZDcwYjRkNzNkNWY2ZTE1ZTczZWM2NmVkODRiZmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQ
cm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHkubW0KQEAgLTUzOCw3ICs1MzgsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eTo6ZXhpdEZ1bGxzY3JlZW5XaXRob3V0QW5pbWF0aW9uVG9Nb2RlKHVpbnQ2
NF90CiB9CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykgJiYgRU5BQkxFKEZVTExTQ1JFRU5f
QVBJKQorI2lmIFBMQVRGT1JNKElPUykKIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHk6OnNldElubGluZVJlY3QodWludDY0X3QgY29udGV4dElkLCBjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JiBpbmxpbmVSZWN0LCBib29sIHZpc2libGUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbSBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCmluZGV4IDcx
OWNjMmJiNDhjN2U5NjU4ZDZjM2IwN2E4MGRjMjQzYzYxMDgxYTIuLmZiMDE3OTRmMDBmZDQ2MDhj
Zjk3NGI1YjVmNTJhYTNkNjQ3NzU0OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCkBAIC0yMzMsNyArMjMz
LDcgQEAgYm9vbCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNjcmVl
bihXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW4KIAogYm9vbCBWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlblN0YW5kYnkoKSBjb25zdAogewotI2lmIFBMQVRG
T1JNKElPUykgJiYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorI2lmIFBMQVRGT1JNKElPUykKICAg
ICByZXR1cm4gdHJ1ZTsKICNlbHNlCiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDExLDcgKzQxMSw3
IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkU2V0dXBGdWxsc2NyZWVuKHVpbnQ2
NF90IGNvbnRleHRJZCkKICAgICBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4
dD4gaW50ZXJmYWNlOwogICAgIHN0ZDo6dGllKG1vZGVsLCBpbnRlcmZhY2UpID0gZW5zdXJlTW9k
ZWxBbmRJbnRlcmZhY2UoY29udGV4dElkKTsKIAotI2lmIFBMQVRGT1JNKElPUykgJiYgRU5BQkxF
KEZVTExTQ1JFRU5fQVBJKQorI2lmIFBMQVRGT1JNKElPUykKICAgICBkaXNwYXRjaF9hc3luYyhk
aXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhp
cyksIHRoaXMsIGNvbnRleHRJZF0gewogICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+bV9wYWdl
KQogICAgICAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHk6OkVudGVyRnVsbHNjcmVlbihjb250ZXh0SWQpLCBwcm90ZWN0ZWRUaGlzLT5tX3Bh
Z2UtPnBhZ2VJRCgpKTsKQEAgLTQ4NCw3ICs0ODQsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1h
bmFnZXI6OmRpZEV4aXRGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICBSZWZQdHI8
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dD4gaW50ZXJmYWNlOwogICAgIHN0ZDo6dGll
KG1vZGVsLCBpbnRlcmZhY2UpID0gZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2UoY29udGV4dElkKTsK
IAotI2lmIFBMQVRGT1JNKElPUykgJiYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorI2lmIFBMQVRG
T1JNKElPUykKICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBb
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIGNvbnRleHRJZCwgaW50ZXJmYWNlXSB7
CiAgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UpCiAgICAgICAgICAgICBwcm90ZWN0
ZWRUaGlzLT5tX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eTo6Q2xlYW51cEZ1bGxzY3JlZW4oY29udGV4dElkKSwgcHJvdGVjdGVkVGhpcy0+bV9wYWdlLT5w
YWdlSUQoKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>351113</attachid>
            <date>2018-09-28 14:32:04 -0700</date>
            <delta_ts>2018-10-04 16:52:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190091-20180928143202.patch</filename>
            <type>text/plain</type>
            <size>34251</size>
            <attacher name="Jeremy Jones">jeremyj-wk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2NDYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWRlOTA2YjQ2NmQ3NWQ4
YmM2YTg4YzI3MjA3ZTNjOWQ0ZTdkOGI4ZS4uODAyZTYyOGYzMWIzNzk1OTViY2FhYjcxOGM1OGVh
YjBiYjRkZDZjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE4LTA5LTI4ICBKZXJl
bXkgSm9uZXMgIDxqZXJlbXlqQGFwcGxlLmNvbT4KKworICAgICAgICBVbmlmeSBpbXBsZW1lbnRh
dGlvbiBpbiBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwMDkxCisgICAgICAgIHJkYXI6Ly9wcm9i
bGVtLzQ0NzM0NTIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2Ugbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAg
IFVuaWZpZWQgY29kZSBpbiBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdCBub3cgdGhhdCBu
ZXcgY29kZSBwYXRoIGlzIHByb3ZlbiBhbmQgaW5jbHVkZQorICAgICAgICBhbnkgY2hhbmdlcyB0
aGF0IGhhZCBiZWVuIG1hZGUgaW4gdGhlIG9sZCBwYXRoLgorCisgICAgICAgICogcGxhdGZvcm0v
aW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lmg6CisgICAgICAgICogcGxhdGZvcm0v
aW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tOgorICAgICAgICAoLVtXZWJBVlBs
YXllclZpZXdDb250cm9sbGVyRGVsZWdhdGUgcGxheWVyVmlld0NvbnRyb2xsZXJTaG91bGRTdGFy
dFBpY3R1cmVJblBpY3R1cmVGcm9tSW5saW5lV2hlbkVudGVyaW5nQmFja2dyb3VuZDpdKToKKyAg
ICAgICAgKFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpwcmVwYXJlZFRvRXhpdEZ1bGxz
Y3JlZW4pOgorICAgICAgICAoVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNob3VsZEV4
aXRGdWxsc2NyZWVuV2l0aFJlYXNvbik6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYlZpZGVv
RnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbToKKyAgICAgICAgKFZpZGVvRnVsbHNjcmVlbkNv
bnRyb2xsZXJDb250ZXh0OjpyZXF1ZXN0VXBkYXRlSW5saW5lUmVjdCk6CisgICAgICAgIChWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6cmVxdWVzdFZpZGVvQ29udGVudExheWVyKToK
KyAgICAgICAgKFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpyZXR1cm5WaWRlb0Nv
bnRlbnRMYXllcik6CisgICAgICAgIChWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6
ZGlkU2V0dXBGdWxsc2NyZWVuKToKKyAgICAgICAgKFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJD
b250ZXh0OjpkaWRFeGl0RnVsbHNjcmVlbik6CisKIDIwMTgtMDktMjUgIFhhYmllciBSb2RyaWd1
ZXogQ2FsdmFyICA8Y2FsdmFyaXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBbRU1FXSBGaXggdmFy
aWFibGUgbmFtZSB0aGF0IHNob3VsZCBoYXZlIGdvbmUgaW4gcjIzNjMxNwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA2
YTEzNzVmYmY3NTIxMDZmYzZiNjIyMjJhYjY3N2JjODlkYWFiZWZhLi5hNjgyYmRkYjAzZDI4YTQw
ODdjZWQ1OThkZmUyMjE3N2ZhNTI0Mjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE4
LTA5LTI4ICBKZXJlbXkgSm9uZXMgIDxqZXJlbXlqQGFwcGxlLmNvbT4KKworICAgICAgICBVbmlm
eSBpbXBsZW1lbnRhdGlvbiBpbiBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwMDkxCisgICAgICAg
IHJkYXI6Ly9wcm9ibGVtLzQ0NzM0NTIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVW5pZmllZCBjb2RlIGluIFZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0IG5vdyB0aGF0IG5ldyBjb2RlIHBhdGggaXMgcHJvdmVuIGFuZCBpbmNsdWRlCisgICAg
ICAgIGFueSBjaGFuZ2VzIHRoYXQgaGFkIGJlZW4gbWFkZSBpbiB0aGUgb2xkIHBhdGguCisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbToKKyAg
ICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxz
Y3JlZW5TdGFuZGJ5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFu
YWdlcjo6ZGlkU2V0dXBGdWxsc2NyZWVuKToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlcjo6ZGlkRXhpdEZ1bGxzY3JlZW4pOgorCiAyMDE4LTA5LTI1ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgTmV0d29ya0xvYWQ6
OmRpZFJlY2VpdmVSZXNwb25zZSBzaG91bGQgcGFzcyBpdHMgY29tcGxldGlvbiBoYW5kbGVyIHRv
IGl0cyBjbGllbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmgKaW5kZXggYzZkMmVhZDk1NDJjZjg0MzQy
MGNlOTUzY2QzZjI0ZjkyNzJiZGVjNi4uNmZhMDkyNmFlZjQ1N2U2ZDY2Y2E2MzczYmZhYzM5ZTYz
YWQwMmVlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUFWS2l0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmgKQEAgLTg2LDEwICs4Niw4IEBAIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlcXVlc3RIaWRlQW5kRXhpdEZ1bGxzY3JlZW4o
KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHByZXBhcmVkVG9SZXR1cm5Ub0lubGluZShib29s
IHZpc2libGUsIGNvbnN0IEludFJlY3QmIGlubGluZVJlY3QpOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgcHJlcGFyZWRUb0V4aXRGdWxsc2NyZWVuKCk7Ci0jaWYgRU5BQkxFKEZVTExTQ1JFRU5f
QVBJKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0SGFzVmlkZW9Db250ZW50TGF5ZXIoYm9v
bCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRJbmxpbmVSZWN0KGNvbnN0IEludFJlY3Qm
LCBib29sIHZpc2libGUpOwotI2VuZGlmCiAKICAgICBlbnVtIGNsYXNzIEV4aXRGdWxsU2NyZWVu
UmVhc29uIHsKICAgICAgICAgRG9uZUJ1dHRvblRhcHBlZCwKQEAgLTEyNyw5ICsxMjUsNyBAQCBw
dWJsaWM6CiAgICAgfTsKIAogICAgIE1vZGUgbV9jdXJyZW50TW9kZTsKLSNpZiBFTkFCTEUoRlVM
TFNDUkVFTl9BUEkpCiAgICAgTW9kZSBtX3RhcmdldE1vZGU7Ci0jZW5kaWYKIAogICAgIFZpZGVv
RnVsbHNjcmVlbk1vZGVsKiB2aWRlb0Z1bGxzY3JlZW5Nb2RlbCgpIGNvbnN0IHsgcmV0dXJuIG1f
dmlkZW9GdWxsc2NyZWVuTW9kZWw7IH0KICAgICBib29sIHNob3VsZEV4aXRGdWxsc2NyZWVuV2l0
aFJlYXNvbihFeGl0RnVsbFNjcmVlblJlYXNvbik7CkBAIC0xNDYsMTAgKzE0Miw4IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHdpbGxTdG9wUGljdHVyZUluUGljdHVyZSgpOwogICAgIHZvaWQgZGlkU3Rv
cFBpY3R1cmVJblBpY3R1cmUoKTsKICAgICB2b2lkIHByZXBhcmVGb3JQaWN0dXJlSW5QaWN0dXJl
U3RvcFdpdGhDb21wbGV0aW9uSGFuZGxlcih2b2lkICheKShCT09MKSk7Ci0jaWYgRU5BQkxFKEZV
TExTQ1JFRU5fQVBJKQogICAgIHZvaWQgZXhpdEZ1bGxzY3JlZW5IYW5kbGVyKEJPT0wgc3VjY2Vz
cywgTlNFcnJvciAqKTsKICAgICB2b2lkIGVudGVyRnVsbHNjcmVlbkhhbmRsZXIoQk9PTCBzdWNj
ZXNzLCBOU0Vycm9yICopOwotI2VuZGlmCiAgICAgYm9vbCBpc1BsYXlpbmdWaWRlb0luRW5oYW5j
ZWRGdWxsc2NyZWVuKCkgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE1vZGUo
SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKTsKQEAgLTE2NiwxNSAr
MTYwLDEwIEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBXRUJDT1JFX0VYUE9SVCBWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VBVktpdChQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdCYpOwog
Ci0jaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIHZvaWQgZG9TZXR1cCgpOwogICAgIHZv
aWQgZmluYWxpemVTZXR1cCgpOwogICAgIHZvaWQgZG9FeGl0RnVsbHNjcmVlbigpOwogICAgIHZv
aWQgcmV0dXJuVG9TdGFuZGJ5KCk7Ci0jZWxzZQotICAgIHZvaWQgZW50ZXJQaWN0dXJlSW5QaWN0
dXJlKCk7Ci0gICAgdm9pZCBlbnRlckZ1bGxzY3JlZW5TdGFuZGFyZCgpOwotI2VuZGlmCiAgICAg
dm9pZCBkb0VudGVyRnVsbHNjcmVlbigpOwogICAgIHZvaWQgd2F0Y2hkb2dUaW1lckZpcmVkKCk7
CiAgICAgV2ViQVZQbGF5ZXJDb250cm9sbGVyICpwbGF5ZXJDb250cm9sbGVyKCkgY29uc3Q7CkBA
IC0yMDAsNyArMTg5LDYgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgbV9zaG91bGRSZXR1cm5Ub0Z1
bGxzY3JlZW5XaGVuU3RvcHBpbmdQaVAgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9yZXN0b3JpbmdG
dWxsc2NyZWVuRm9yUGljdHVyZUluUGljdHVyZVN0b3AgeyBmYWxzZSB9OwogCi0jaWYgRU5BQkxF
KEZVTExTQ1JFRU5fQVBJKQogICAgIGJvb2wgbV9zZXR1cE5lZWRzSW5saW5lUmVjdCB7IGZhbHNl
IH07CiAgICAgYm9vbCBtX2V4aXRGdWxsc2NyZWVuTmVlZElubGluZVJlY3QgeyBmYWxzZSB9Owog
CkBAIC0yMjUsMTMgKzIxMyw4IEBAIHByb3RlY3RlZDoKICAgICBib29sIG1faW5saW5lSXNWaXNp
YmxlIHsgZmFsc2UgfTsKICAgICBib29sIG1fc3RhbmRieSB7IGZhbHNlIH07CiAgICAgYm9vbCBt
X3RhcmdldFN0YW5kYnkgeyBmYWxzZSB9OwotI2Vsc2UKLSAgICBib29sIG1fZXhpdFJlcXVlc3Rl
ZCB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2V4aXRDb21wbGV0ZWQgeyBmYWxzZSB9OwotICAgIGJv
b2wgbV9lbnRlclJlcXVlc3RlZCB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX3Nob3VsZFJldHVyblRv
RnVsbHNjcmVlbkFmdGVyRW50ZXJpbmdGb3JlZ3JvdW5kIHsgZmFsc2UgfTsKKwogICAgIGJvb2wg
bV93YWl0aW5nRm9yUHJlcGFyZWRUb0V4aXQgeyBmYWxzZSB9OwotI2VuZGlmCiB9OwogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlQVZLaXQubW0KaW5kZXggNWNjMzIwZTE5ZGFkMzljMDA5YzczMzY4YTU4NzFj
ODYwOTNlOGI3ZC4uYWMxMTk0NmNhN2Y1OWVjN2NmMGIzNjVhMmExYTVlNmUwOWNiMjU2ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VBVktpdC5tbQpAQCAtMTg3LDEzICsxODcsMTEgQEAgLSAodm9pZClwbGF5
ZXJWaWV3Q29udHJvbGxlcjooQVZQbGF5ZXJWaWV3Q29udHJvbGxlciAqKXBsYXllclZpZXdDb250
cm9sbGVyIHJlc3QKICAgICBzZWxmLmZ1bGxzY3JlZW5JbnRlcmZhY2UtPnByZXBhcmVGb3JQaWN0
dXJlSW5QaWN0dXJlU3RvcFdpdGhDb21wbGV0aW9uSGFuZGxlcihjb21wbGV0aW9uSGFuZGxlcik7
CiB9CiAKLSNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAtIChCT09MKXBsYXllclZpZXdDb250
cm9sbGVyU2hvdWxkU3RhcnRQaWN0dXJlSW5QaWN0dXJlRnJvbUlubGluZVdoZW5FbnRlcmluZ0Jh
Y2tncm91bmQ6KEFWUGxheWVyVmlld0NvbnRyb2xsZXIgKilwbGF5ZXJWaWV3Q29udHJvbGxlcgog
ewogICAgIFVOVVNFRF9QQVJBTShwbGF5ZXJWaWV3Q29udHJvbGxlcik7CiAgICAgcmV0dXJuIFlF
UzsKIH0KLSNlbmRpZgogCiBAZW5kCiAKQEAgLTgwMiwxMzggKzgwMCw2IEBAIGJvb2wgVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnBpY3R1cmVJblBpY3R1cmVXYXNTdGFydGVkV2hlbkVu
dGVyaW5nQmFja2dyCiAgICAgcmV0dXJuIFttX3BsYXllclZpZXdDb250cm9sbGVyIHBpY3R1cmVJ
blBpY3R1cmVXYXNTdGFydGVkV2hlbkVudGVyaW5nQmFja2dyb3VuZF07CiB9CiAKLSNpZiAhRU5B
QkxFKEZVTExTQ1JFRU5fQVBJKQotCi12b2lkIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0
OjphcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpCi17Ci0gICAgTE9HKEZ1bGxzY3JlZW4sICJW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUo
JXApIiwgdGhpcyk7Ci0gICAgaWYgKG1fc2hvdWxkUmV0dXJuVG9GdWxsc2NyZWVuQWZ0ZXJFbnRl
cmluZ0ZvcmVncm91bmQgJiYgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbCAmJiBtX3ZpZGVvRnVsbHNj
cmVlbk1vZGVsLT5pc1Zpc2libGUoKSkgewotICAgICAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxl
ciBzdG9wUGljdHVyZUluUGljdHVyZV07Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAv
LyBJZiB3ZSBhcmUgYm90aCBpbiBQaVAgYW5kIGluIEZ1bGxzY3JlZW4gKGkuZS4sIHZpYSBhdXRv
LVBpUCksIGFuZCB3ZSBkaWQgbm90IHN0b3AgZnVsbHNjcmVlbiB1cG9uIHJldHVybmluZywgaXQg
bXVzdCBiZQotICAgIC8vIGJlY2F1c2UgdGhlIG9yaWdpbmF0aW5nIHZpZXcgaXMgbm90IHZpc2li
bGUsIHNvIGhpZGUgdGhlIGZ1bGxzY3JlZW4gd2luZG93LgotICAgIGlmIChtX2N1cnJlbnRNb2Rl
Lmhhc0Z1bGxzY3JlZW4oKSAmJiBtX2N1cnJlbnRNb2RlLmhhc1BpY3R1cmVJblBpY3R1cmUoKSkg
ewotICAgICAgICBbW21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10gbGF5b3V0SWZOZWVkZWRd
OwotICAgICAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciBleGl0RnVsbFNjcmVlbkFuaW1hdGVk
Ok5PIGNvbXBsZXRpb25IYW5kbGVyOltwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwg
dGhpc10gKEJPT0wgc3VjY2VzcywgTlNFcnJvciogZXJyb3IpIHsKLSAgICAgICAgICAgIGlmICgh
c3VjY2VzcykKLSAgICAgICAgICAgICAgICBXVEZMb2dBbHdheXMoIi1bQVZQbGF5ZXJWaWV3Q29u
dHJvbGxlciBleGl0RnVsbFNjcmVlbkFuaW1hdGVkOmNvbXBsZXRpb25IYW5kbGVyOl0gZmFpbGVk
IHdpdGggZXJyb3IgJXMiLCBbW2Vycm9yIGxvY2FsaXplZERlc2NyaXB0aW9uXSBVVEY4U3RyaW5n
XSk7Ci0KLSAgICAgICAgICAgIFttX3dpbmRvdyBzZXRIaWRkZW46WUVTXTsKLSAgICAgICAgICAg
IFtbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3XSBzZXRIaWRkZW46WUVTXTsKLSAgICAgICAg
fV07Ci0gICAgfQotfQotCi12b2lkIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXR1
cEZ1bGxzY3JlZW4oVUlWaWV3JiB2aWRlb1ZpZXcsIGNvbnN0IEludFJlY3QmIGluaXRpYWxSZWN0
LCBVSVZpZXcqIHBhcmVudFZpZXcsIEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2Ny
ZWVuTW9kZSBtb2RlLCBib29sIGFsbG93c1BpY3R1cmVJblBpY3R1cmVQbGF5YmFjaywgYm9vbCBz
dGFuZGJ5KQotewotICAgIEFTU0VSVChtb2RlICE9IEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6Vmlk
ZW9GdWxsc2NyZWVuTW9kZU5vbmUpOwotICAgIExPRyhGdWxsc2NyZWVuLCAiVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlQVZLaXQ6OnNldHVwRnVsbHNjcmVlbiglcCkiLCB0aGlzKTsKLQotICAgIG1f
YWxsb3dzUGljdHVyZUluUGljdHVyZVBsYXliYWNrID0gYWxsb3dzUGljdHVyZUluUGljdHVyZVBs
YXliYWNrOwotICAgIG1fdmlkZW9WaWV3ID0gJnZpZGVvVmlldzsKLSAgICBtX3BhcmVudFZpZXcg
PSBwYXJlbnRWaWV3OwotICAgIG1fcGFyZW50V2luZG93ID0gcGFyZW50Vmlldy53aW5kb3c7Ci0K
LSAgICBBU1NFUlRfVU5VU0VEKHN0YW5kYnksICFzdGFuZGJ5KTsKLSAgICBib29sIGlzSW5QaWN0
dXJlSW5QaWN0dXJlTW9kZSA9IG1fY3VycmVudE1vZGUuaGFzUGljdHVyZUluUGljdHVyZSgpOwot
ICAgIG1fY3VycmVudE1vZGUgPSBtb2RlOwotICAgIG1faW5saW5lUmVjdCA9IGluaXRpYWxSZWN0
OwotCi0gICAgW0NBVHJhbnNhY3Rpb24gYmVnaW5dOwotICAgIFtDQVRyYW5zYWN0aW9uIHNldERp
c2FibGVBY3Rpb25zOllFU107Ci0KLSNpZiAhUExBVEZPUk0oV0FUQ0hPUykKLSAgICBpZiAoIVtb
bV9wYXJlbnRWaWV3IHdpbmRvd10gX2lzSG9zdGVkSW5Bbm90aGVyUHJvY2Vzc10pIHsKLSAgICAg
ICAgaWYgKCFtX3dpbmRvdykKLSAgICAgICAgICAgIG1fd2luZG93ID0gYWRvcHROUyhbYWxsb2NV
SVdpbmRvd0luc3RhbmNlKCkgaW5pdFdpdGhGcmFtZTpbW2dldFVJU2NyZWVuQ2xhc3MoKSBtYWlu
U2NyZWVuXSBib3VuZHNdXSk7Ci0gICAgICAgIFttX3dpbmRvdyBzZXRCYWNrZ3JvdW5kQ29sb3I6
Y2xlYXJVSUNvbG9yKCldOwotICAgICAgICBpZiAoIW1fdmlld0NvbnRyb2xsZXIpCi0gICAgICAg
ICAgICBtX3ZpZXdDb250cm9sbGVyID0gYWRvcHROUyhbYWxsb2NVSVZpZXdDb250cm9sbGVySW5z
dGFuY2UoKSBpbml0XSk7Ci0gICAgICAgIFtbbV92aWV3Q29udHJvbGxlciB2aWV3XSBzZXRGcmFt
ZTpbbV93aW5kb3cgYm91bmRzXV07Ci0gICAgICAgIFttX3ZpZXdDb250cm9sbGVyIF9zZXRJZ25v
cmVBcHBTdXBwb3J0ZWRPcmllbnRhdGlvbnM6WUVTXTsKLSAgICAgICAgW21fd2luZG93IHNldFJv
b3RWaWV3Q29udHJvbGxlcjptX3ZpZXdDb250cm9sbGVyLmdldCgpXTsKLSAgICAgICAgW21fd2lu
ZG93IHNldFdpbmRvd0xldmVsOmdldFVJVGV4dEVmZmVjdHNCZW5lYXRoU3RhdHVzQmFyV2luZG93
TGV2ZWwoKSArIDFdOwotICAgICAgICBbbV93aW5kb3cgbWFrZUtleUFuZFZpc2libGVdOwotICAg
IH0KLSNlbmRpZgotCi0gICAgaWYgKCFtX3BsYXllckxheWVyVmlldykKLSAgICAgICAgbV9wbGF5
ZXJMYXllclZpZXcgPSBhZG9wdE5TKFthbGxvY1dlYkFWUGxheWVyTGF5ZXJWaWV3SW5zdGFuY2Uo
KSBpbml0XSk7Ci0gICAgW21fcGxheWVyTGF5ZXJWaWV3IHNldEhpZGRlbjpbcGxheWVyQ29udHJv
bGxlcigpIGlzRXh0ZXJuYWxQbGF5YmFja0FjdGl2ZV1dOwotICAgIFttX3BsYXllckxheWVyVmll
dyBzZXRCYWNrZ3JvdW5kQ29sb3I6Y2xlYXJVSUNvbG9yKCldOwotCi0gICAgaWYgKCFpc0luUGlj
dHVyZUluUGljdHVyZU1vZGUpIHsKLSAgICAgICAgW21fcGxheWVyTGF5ZXJWaWV3IHNldFZpZGVv
VmlldzptX3ZpZGVvVmlldy5nZXQoKV07Ci0gICAgICAgIFttX3BsYXllckxheWVyVmlldyBhZGRT
dWJ2aWV3Om1fdmlkZW9WaWV3LmdldCgpXTsKLSAgICB9Ci0KLSAgICBXZWJBVlBsYXllckxheWVy
ICpwbGF5ZXJMYXllciA9IChXZWJBVlBsYXllckxheWVyICopW21fcGxheWVyTGF5ZXJWaWV3IHBs
YXllckxheWVyXTsKLSAgICBbcGxheWVyTGF5ZXIgc2V0TW9kZWxWaWRlb0xheWVyRnJhbWU6Q0dS
ZWN0TWFrZSgwLCAwLCBtX2lubGluZVJlY3Qud2lkdGgoKSwgbV9pbmxpbmVSZWN0LmhlaWdodCgp
KV07Ci0gICAgW3BsYXllckxheWVyIHNldFZpZGVvRGltZW5zaW9uczpbcGxheWVyQ29udHJvbGxl
cigpIGNvbnRlbnREaW1lbnNpb25zXV07Ci0gICAgcGxheWVyTGF5ZXIuZnVsbHNjcmVlbkludGVy
ZmFjZSA9IHRoaXM7Ci0KLSAgICBpZiAoIW1fcGxheWVyVmlld0NvbnRyb2xsZXIpCi0gICAgICAg
IG1fcGxheWVyVmlld0NvbnRyb2xsZXIgPSBhZG9wdE5TKFtbV2ViQVZQbGF5ZXJWaWV3Q29udHJv
bGxlciBhbGxvY10gaW5pdFdpdGhGdWxsc2NyZWVuSW50ZXJmYWNlOnRoaXNdKTsKLQotICAgIFtt
X3BsYXllclZpZXdDb250cm9sbGVyIHNldFNob3dzUGxheWJhY2tDb250cm9sczpOT107Ci0gICAg
W21fcGxheWVyVmlld0NvbnRyb2xsZXIgc2V0UGxheWVyQ29udHJvbGxlcjooQVZQbGF5ZXJDb250
cm9sbGVyICopcGxheWVyQ29udHJvbGxlcigpXTsKLSAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxl
ciBzZXREZWxlZ2F0ZTptX3BsYXllclZpZXdDb250cm9sbGVyRGVsZWdhdGUuZ2V0KCldOwotICAg
IFttX3BsYXllclZpZXdDb250cm9sbGVyIHNldEFsbG93c1BpY3R1cmVJblBpY3R1cmVQbGF5YmFj
azptX2FsbG93c1BpY3R1cmVJblBpY3R1cmVQbGF5YmFja107Ci0gICAgW3BsYXllckNvbnRyb2xs
ZXIoKSBzZXRQaWN0dXJlSW5QaWN0dXJlUG9zc2libGU6bV9hbGxvd3NQaWN0dXJlSW5QaWN0dXJl
UGxheWJhY2tdOwotCi0jaWYgUExBVEZPUk0oV0FUQ0hPUykKLSAgICBtX3ZpZXdDb250cm9sbGVy
ID0gdmlkZW9GdWxsc2NyZWVuTW9kZWwoKS0+Y3JlYXRlVmlkZW9GdWxsc2NyZWVuVmlld0NvbnRy
b2xsZXIobV9wbGF5ZXJWaWV3Q29udHJvbGxlci5nZXQoKS5hdlBsYXllclZpZXdDb250cm9sbGVy
KTsKLSNlbmRpZgotCi0gICAgaWYgKG1fdmlld0NvbnRyb2xsZXIpIHsKLSAgICAgICAgW21fdmll
d0NvbnRyb2xsZXIgYWRkQ2hpbGRWaWV3Q29udHJvbGxlcjptX3BsYXllclZpZXdDb250cm9sbGVy
LmdldCgpLmF2UGxheWVyVmlld0NvbnRyb2xsZXJdOwotICAgICAgICBbW21fdmlld0NvbnRyb2xs
ZXIgdmlld10gYWRkU3VidmlldzpbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3XV07Ci0gICAg
fSBlbHNlCi0gICAgICAgIFttX3BhcmVudFZpZXcgYWRkU3VidmlldzpbbV9wbGF5ZXJWaWV3Q29u
dHJvbGxlciB2aWV3XV07Ci0KLSAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3XS5mcmFt
ZSA9IFttX3BhcmVudFZpZXcgY29udmVydFJlY3Q6bV9pbmxpbmVSZWN0IHRvVmlldzpbbV9wbGF5
ZXJWaWV3Q29udHJvbGxlciB2aWV3XS5zdXBlcnZpZXddOwotICAgIFtbbV9wbGF5ZXJWaWV3Q29u
dHJvbGxlciB2aWV3XSBzZXRCYWNrZ3JvdW5kQ29sb3I6Y2xlYXJVSUNvbG9yKCldOwotICAgIFtb
bV9wbGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3XSBzZXRBdXRvcmVzaXppbmdNYXNrOihVSVZpZXdB
dXRvcmVzaXppbmdGbGV4aWJsZUJvdHRvbU1hcmdpbiB8IFVJVmlld0F1dG9yZXNpemluZ0ZsZXhp
YmxlUmlnaHRNYXJnaW4pXTsKLQotICAgIFtbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3XSBz
ZXROZWVkc0xheW91dF07Ci0gICAgW1ttX3BsYXllclZpZXdDb250cm9sbGVyIHZpZXddIGxheW91
dElmTmVlZGVkXTsKLQotICAgIFtDQVRyYW5zYWN0aW9uIGNvbW1pdF07Ci0KLSAgICBkaXNwYXRj
aF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWZQdHIodGhpcyksIHRoaXNdIHsKLSAgICAgICAgaWYgKG1fZnVsbHNjcmVlbkNoYW5nZU9ic2Vy
dmVyKQotICAgICAgICAgICAgbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXItPmRpZFNldHVwRnVs
bHNjcmVlbigpOwotICAgIH0pOwotfQotCi12b2lkIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFW
S2l0OjplbnRlckZ1bGxzY3JlZW4oKQotewotICAgIExPRyhGdWxsc2NyZWVuLCAiVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmVudGVyRnVsbHNjcmVlbiglcCkgJWQiLCB0aGlzLCBtb2Rl
KCkpOwotCi0gICAgbV9leGl0Q29tcGxldGVkID0gZmFsc2U7Ci0gICAgbV9leGl0UmVxdWVzdGVk
ID0gZmFsc2U7Ci0gICAgbV9lbnRlclJlcXVlc3RlZCA9IHRydWU7Ci0KLSAgICBpZiAobV9jdXJy
ZW50TW9kZS5pc1BpY3R1cmVJblBpY3R1cmUoKSkKLSAgICAgICAgZW50ZXJQaWN0dXJlSW5QaWN0
dXJlKCk7Ci0gICAgZWxzZSBpZiAobV9jdXJyZW50TW9kZS5pc0Z1bGxzY3JlZW4oKSkKLSAgICAg
ICAgZW50ZXJGdWxsc2NyZWVuU3RhbmRhcmQoKTsKLSAgICBlbHNlCi0gICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotfQotCi12b2lkIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojpl
bnRlclBpY3R1cmVJblBpY3R1cmUoKQotewotICAgIExPRyhGdWxsc2NyZWVuLCAiVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmVudGVyUGljdHVyZUluUGljdHVyZSglcCkiLCB0aGlzKTsK
LSAgICAKLSAgICBpZiAoW21fcGxheWVyVmlld0NvbnRyb2xsZXIgaXNQaWN0dXJlSW5QaWN0dXJl
UG9zc2libGVdKQotICAgICAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciBzdGFydFBpY3R1cmVJ
blBpY3R1cmVdOwotICAgIGVsc2UKLSAgICAgICAgZmFpbGVkVG9TdGFydFBpY3R1cmVJblBpY3R1
cmUoKTsKLX0KLQogc3RhdGljIFVJVmlld0NvbnRyb2xsZXIgKmZhbGxiYWNrVmlld0NvbnRyb2xs
ZXIoVUlWaWV3ICp2aWV3KQogewogICAgIGZvciAoVUlWaWV3ICpjdXJyZW50VmlldyA9IHZpZXc7
IGN1cnJlbnRWaWV3OyBjdXJyZW50VmlldyA9IGN1cnJlbnRWaWV3LnN1cGVydmlldykgewpAQCAt
OTU2LDM1MCArODIyLDYgQEAgVUlWaWV3Q29udHJvbGxlciAqVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlQVZLaXQ6OnByZXNlbnRpbmdWaWV3Q29udHJvbGxlcigpCiAgICAgcmV0dXJuIGNvbnRyb2xs
ZXI7CiB9CiAKLXZvaWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmVudGVyRnVsbHNj
cmVlblN0YW5kYXJkKCkKLXsKLSAgICBMT0coRnVsbHNjcmVlbiwgIlZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZUFWS2l0OjplbnRlckZ1bGxzY3JlZW5TdGFuZGFyZCglcCkiLCB0aGlzKTsKLQotICAg
IGlmIChbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciBpc1BpY3R1cmVJblBpY3R1cmVBY3RpdmVdKSB7
Ci0gICAgICAgIC8vIE5PVEU6IFRoZSBmdWxsc2NyZWVuIG1vZGUgd2lsbCBiZSByZXN0b3JlZCBp
biBwcmVwYXJlRm9yUGljdHVyZUluUGljdHVyZVN0b3BXaXRoQ29tcGxldGlvbkhhbmRsZXIoKS4K
LSAgICAgICAgbV9zaG91bGRSZXR1cm5Ub0Z1bGxzY3JlZW5XaGVuU3RvcHBpbmdQaVAgPSB0cnVl
OwotICAgICAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciBzdG9wUGljdHVyZUluUGljdHVyZV07
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBbW21fcGxheWVyVmlld0NvbnRyb2xsZXIg
dmlld10gbGF5b3V0SWZOZWVkZWRdOwotICAgIFttX3BsYXllclZpZXdDb250cm9sbGVyIGVudGVy
RnVsbFNjcmVlbkFuaW1hdGVkOllFUyBjb21wbGV0aW9uSGFuZGxlcjpbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWZQdHIodGhpcyldIChCT09MIHN1Y2NlZWRlZCwgTlNFcnJvciogZXJyb3Ip
IHsKLSAgICAgICAgaWYgKCFzdWNjZWVkZWQpCi0gICAgICAgICAgICBXVEZMb2dBbHdheXMoIi1b
QVZQbGF5ZXJWaWV3Q29udHJvbGxlciBlbnRlckZ1bGxTY3JlZW5BbmltYXRlZDpjb21wbGV0aW9u
SGFuZGxlcjpdIGZhaWxlZCB3aXRoIGVycm9yICVzIiwgW1tlcnJvciBsb2NhbGl6ZWREZXNjcmlw
dGlvbl0gVVRGOFN0cmluZ10pOwotCi0gICAgICAgIExPRyhGdWxsc2NyZWVuLCAiVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmVudGVyRnVsbHNjcmVlblN0YW5kYXJkIC0gbGFtYmRhKCVw
KSAtIHN1Y2NlZWRlZCglcykiLCB0aGlzLCBib29sU3RyaW5nKHN1Y2NlZWRlZCkpOwotICAgICAg
ICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciBzZXRTaG93c1BsYXliYWNrQ29udHJvbHM6WUVTXTsK
LQotICAgICAgICBpZiAobV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIpCi0gICAgICAgICAgICBt
X2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci0+ZGlkRW50ZXJGdWxsc2NyZWVuKCk7Ci0gICAgfV07
Ci19Ci0KLXZvaWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmV4aXRGdWxsc2NyZWVu
KGNvbnN0IEludFJlY3QmIGZpbmFsUmVjdCkKLXsKLSAgICBtX3dhdGNoZG9nVGltZXIuc3RvcCgp
OwotCi0gICAgbV9leGl0UmVxdWVzdGVkID0gdHJ1ZTsKLSAgICBpZiAobV9leGl0Q29tcGxldGVk
KSB7Ci0gICAgICAgIGlmIChtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcikKLSAgICAgICAgICAg
IG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLT5kaWRFeGl0RnVsbHNjcmVlbigpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgTE9HKEZ1bGxzY3JlZW4sICJWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VBVktpdDo6ZXhpdEZ1bGxzY3JlZW4oJXApIiwgdGhpcyk7Ci0gICAgW21fcGxheWVy
Vmlld0NvbnRyb2xsZXIgc2V0U2hvd3NQbGF5YmFja0NvbnRyb2xzOk5PXTsKLSAgICAKLSAgICBb
bV9wbGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3XS5mcmFtZSA9IFttX3BhcmVudFZpZXcgY29udmVy
dFJlY3Q6ZmluYWxSZWN0IHRvVmlldzpbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3XS5zdXBl
cnZpZXddOwotCi0gICAgV2ViQVZQbGF5ZXJMYXllciAqcGxheWVyTGF5ZXIgPSAoV2ViQVZQbGF5
ZXJMYXllciAqKVttX3BsYXllckxheWVyVmlldyBwbGF5ZXJMYXllcl07Ci0gICAgaWYgKFtwbGF5
ZXJMYXllciB2aWRlb0dyYXZpdHldICE9IGdldEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemVBc3Bl
Y3QoKSkKLSAgICAgICAgW3BsYXllckxheWVyIHNldFZpZGVvR3Jhdml0eTpnZXRBVkxheWVyVmlk
ZW9HcmF2aXR5UmVzaXplQXNwZWN0KCldOwotCi0gICAgW1ttX3BsYXllclZpZXdDb250cm9sbGVy
IHZpZXddIGxheW91dElmTmVlZGVkXTsKLSAgICBpZiAobV9jdXJyZW50TW9kZS5pc1BpY3R1cmVJ
blBpY3R1cmUoKSkgewotICAgICAgICBtX3Nob3VsZFJldHVyblRvRnVsbHNjcmVlbldoZW5TdG9w
cGluZ1BpUCA9IGZhbHNlOwotICAgICAgICBbbV93aW5kb3cgc2V0SGlkZGVuOk5PXTsKLSAgICAg
ICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIgc3RvcFBpY3R1cmVJblBpY3R1cmVdOwotICAgIH0g
ZWxzZSBpZiAobV9jdXJyZW50TW9kZS5oYXNQaWN0dXJlSW5QaWN0dXJlKCkgJiYgbV9jdXJyZW50
TW9kZS5oYXNGdWxsc2NyZWVuKCkpIHsKLSAgICAgICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIg
ZXhpdEZ1bGxTY3JlZW5BbmltYXRlZDpOTyBjb21wbGV0aW9uSGFuZGxlcjpbcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWZQdHIodGhpcyksIHRoaXNdIChCT09MIHN1Y2Nlc3MsIE5TRXJyb3IqIGVycm9y
KSB7Ci0gICAgICAgICAgICBpZiAoIXN1Y2Nlc3MpCi0gICAgICAgICAgICAgICAgV1RGTG9nQWx3
YXlzKCItW0FWUGxheWVyVmlld0NvbnRyb2xsZXIgZXhpdEZ1bGxTY3JlZW5BbmltYXRlZDpjb21w
bGV0aW9uSGFuZGxlcjpdIGZhaWxlZCB3aXRoIGVycm9yICVzIiwgW1tlcnJvciBsb2NhbGl6ZWRE
ZXNjcmlwdGlvbl0gVVRGOFN0cmluZ10pOwotCi0gICAgICAgICAgICBjbGVhck1vZGUoSFRNTE1l
ZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQpOwotICAgICAgICAg
ICAgW21fd2luZG93IHNldEhpZGRlbjpOT107Ci0gICAgICAgICAgICBbbV9wbGF5ZXJWaWV3Q29u
dHJvbGxlciBzdG9wUGljdHVyZUluUGljdHVyZV07Ci0gICAgICAgIH1dOwotICAgIH0gZWxzZSBp
ZiAobV9jdXJyZW50TW9kZS5pc0Z1bGxzY3JlZW4oKSkgewotICAgICAgICBbbV9wbGF5ZXJWaWV3
Q29udHJvbGxlciBleGl0RnVsbFNjcmVlbkFuaW1hdGVkOllFUyBjb21wbGV0aW9uSGFuZGxlcjpb
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIHRoaXNdIChCT09MIHN1Y2Nlc3MsIE5T
RXJyb3IqIGVycm9yKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGlmICghc3VjY2VzcykKLSAgICAg
ICAgICAgICAgICBXVEZMb2dBbHdheXMoIi1bQVZQbGF5ZXJWaWV3Q29udHJvbGxlciBleGl0RnVs
bFNjcmVlbkFuaW1hdGVkOmNvbXBsZXRpb25IYW5kbGVyOl0gZmFpbGVkIHdpdGggZXJyb3IgJXMi
LCBbW2Vycm9yIGxvY2FsaXplZERlc2NyaXB0aW9uXSBVVEY4U3RyaW5nXSk7Ci0KLSAgICAgICAg
ICAgIG1fZXhpdENvbXBsZXRlZCA9IHRydWU7Ci0KLSAgICAgICAgICAgIFtDQVRyYW5zYWN0aW9u
IGJlZ2luXTsKLSAgICAgICAgICAgIFtDQVRyYW5zYWN0aW9uIHNldERpc2FibGVBY3Rpb25zOllF
U107Ci0gICAgICAgICAgICBbbV9wbGF5ZXJMYXllclZpZXcgc2V0QmFja2dyb3VuZENvbG9yOmNs
ZWFyVUlDb2xvcigpXTsKLSAgICAgICAgICAgIFtbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3
XSBzZXRCYWNrZ3JvdW5kQ29sb3I6Y2xlYXJVSUNvbG9yKCldOwotICAgICAgICAgICAgW0NBVHJh
bnNhY3Rpb24gY29tbWl0XTsKLQotICAgICAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hf
Z2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMp
LCB0aGlzXSgpIHsKLSAgICAgICAgICAgICAgICBpZiAobV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2
ZXIpCi0gICAgICAgICAgICAgICAgICAgIG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLT5kaWRF
eGl0RnVsbHNjcmVlbigpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH1dOwotICAgIH07Ci19
Ci0KLXZvaWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmNsZWFudXBGdWxsc2NyZWVu
KCkKLXsKLSAgICBMT0coRnVsbHNjcmVlbiwgIlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0
OjpjbGVhbnVwRnVsbHNjcmVlbiglcCkiLCB0aGlzKTsKLQotICAgIGlmIChtX3dpbmRvdykgewot
ICAgICAgICBbbV93aW5kb3cgc2V0SGlkZGVuOllFU107Ci0gICAgICAgIFttX3dpbmRvdyBzZXRS
b290Vmlld0NvbnRyb2xsZXI6bmlsXTsKLSAgICB9Ci0gICAgCi0gICAgW21fcGxheWVyVmlld0Nv
bnRyb2xsZXIgc2V0RGVsZWdhdGU6bmlsXTsKLSAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciBz
ZXRQbGF5ZXJDb250cm9sbGVyOm5pbF07Ci0gICAgCi0gICAgaWYgKG1fY3VycmVudE1vZGUuaGFz
UGljdHVyZUluUGljdHVyZSgpKQotICAgICAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciBzdG9w
UGljdHVyZUluUGljdHVyZV07Ci0gICAgaWYgKG1fY3VycmVudE1vZGUuaGFzRnVsbHNjcmVlbigp
KSB7Ci0gICAgICAgIFtbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3XSBsYXlvdXRJZk5lZWRl
ZF07Ci0gICAgICAgIFttX3BsYXllclZpZXdDb250cm9sbGVyIGV4aXRGdWxsU2NyZWVuQW5pbWF0
ZWQ6Tk8gY29tcGxldGlvbkhhbmRsZXI6W10gKEJPT0wgc3VjY2VzcywgTlNFcnJvciogZXJyb3Ip
IHsKLSAgICAgICAgICAgIGlmICghc3VjY2VzcykKLSAgICAgICAgICAgICAgICBXVEZMb2dBbHdh
eXMoIi1bQVZQbGF5ZXJWaWV3Q29udHJvbGxlciBleGl0RnVsbFNjcmVlbkFuaW1hdGVkOmNvbXBs
ZXRpb25IYW5kbGVyOl0gZmFpbGVkIHdpdGggZXJyb3IgJXMiLCBbW2Vycm9yIGxvY2FsaXplZERl
c2NyaXB0aW9uXSBVVEY4U3RyaW5nXSk7Ci0gICAgICAgIH1dOwotICAgIH0KLSAgICAKLSAgICBb
W21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10gcmVtb3ZlRnJvbVN1cGVydmlld107Ci0gICAg
aWYgKG1fdmlld0NvbnRyb2xsZXIpCi0gICAgICAgIFttX3BsYXllclZpZXdDb250cm9sbGVyIHJl
bW92ZUZyb21QYXJlbnRWaWV3Q29udHJvbGxlcl07Ci0gICAgCi0gICAgW21fcGxheWVyTGF5ZXJW
aWV3IHJlbW92ZUZyb21TdXBlcnZpZXddOwotICAgIFtbbV92aWV3Q29udHJvbGxlciB2aWV3XSBy
ZW1vdmVGcm9tU3VwZXJ2aWV3XTsKLQotICAgIG1fcGxheWVyTGF5ZXJWaWV3ID0gbmlsOwotICAg
IG1fcGxheWVyVmlld0NvbnRyb2xsZXIgPSBuaWw7Ci0gICAgbV93aW5kb3cgPSBuaWw7Ci0gICAg
bV92aWRlb1ZpZXcgPSBuaWw7Ci0gICAgbV9wYXJlbnRWaWV3ID0gbmlsOwotICAgIG1fcGFyZW50
V2luZG93ID0gbmlsOwotICAgIAotICAgIGlmIChtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcikK
LSAgICAgICAgbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXItPmRpZENsZWFudXBGdWxsc2NyZWVu
KCk7Ci0KLSAgICBtX2VudGVyUmVxdWVzdGVkID0gZmFsc2U7Ci19Ci0KLXZvaWQgVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmludmFsaWRhdGUoKQotewotICAgIG1fdmlkZW9GdWxsc2Ny
ZWVuTW9kZWwgPSBuaWw7Ci0gICAgbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIgPSBuaWw7Ci0g
ICAgCi0gICAgY2xlYW51cEZ1bGxzY3JlZW4oKTsKLX0KLQotdm9pZCBWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VBVktpdDo6cmVxdWVzdEhpZGVBbmRFeGl0RnVsbHNjcmVlbigpCi17Ci0gICAgaWYg
KCFtX2VudGVyUmVxdWVzdGVkKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgaWYgKG1fY3Vy
cmVudE1vZGUuaGFzUGljdHVyZUluUGljdHVyZSgpKQotICAgICAgICByZXR1cm47Ci0gICAgCi0g
ICAgTE9HKEZ1bGxzY3JlZW4sICJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6cmVxdWVz
dEhpZGVBbmRFeGl0RnVsbHNjcmVlbiglcCkiLCB0aGlzKTsKLQotICAgIFttX3dpbmRvdyBzZXRI
aWRkZW46WUVTXTsKLSAgICBbW21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10gc2V0SGlkZGVu
OllFU107Ci0KLSAgICBpZiAocGxheWJhY2tTZXNzaW9uTW9kZWwoKSAmJiBtX3ZpZGVvRnVsbHNj
cmVlbk1vZGVsICYmICFtX2V4aXRSZXF1ZXN0ZWQpIHsKLSAgICAgICAgcGxheWJhY2tTZXNzaW9u
TW9kZWwoKS0+cGF1c2UoKTsKLSAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+cmVxdWVz
dEZ1bGxzY3JlZW5Nb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9k
ZU5vbmUpOwotICAgIH0KLX0KLQotdm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6
cHJlcGFyZWRUb1JldHVyblRvSW5saW5lKGJvb2wgdmlzaWJsZSwgY29uc3QgSW50UmVjdCYgaW5s
aW5lUmVjdCkKLXsKLSAgICBMT0coRnVsbHNjcmVlbiwgIlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0OjpwcmVwYXJlZFRvUmV0dXJuVG9JbmxpbmUoJXApIC0gdmlzaWJsZSglcykiLCB0aGlz
LCBib29sU3RyaW5nKHZpc2libGUpKTsKLSAgICBpZiAobV9wcmVwYXJlVG9JbmxpbmVDYWxsYmFj
aykgewotICAgICAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3XS5mcmFtZSA9IFttX3Bh
cmVudFZpZXcgY29udmVydFJlY3Q6aW5saW5lUmVjdCB0b1ZpZXc6W21fcGxheWVyVmlld0NvbnRy
b2xsZXIgdmlld10uc3VwZXJ2aWV3XTsKLSAgICAgICAgV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wp
PiBjYWxsYmFjayA9IFdURk1vdmUobV9wcmVwYXJlVG9JbmxpbmVDYWxsYmFjayk7Ci0gICAgICAg
IGNhbGxiYWNrKHZpc2libGUpOwotICAgIH0KLX0KLQotdm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdDo6cHJlcGFyZWRUb0V4aXRGdWxsc2NyZWVuKCkKLXsKLSAgICBpZiAoIW1fd2Fp
dGluZ0ZvclByZXBhcmVkVG9FeGl0KQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3dhaXRpbmdG
b3JQcmVwYXJlZFRvRXhpdCA9IGZhbHNlOwotICAgIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwtPnJl
cXVlc3RGdWxsc2NyZWVuTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVl
bk1vZGVOb25lLCB0cnVlKTsKLX0KLQotYm9vbCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktp
dDo6bWF5QXV0b21hdGljYWxseVNob3dWaWRlb1BpY3R1cmVJblBpY3R1cmUoKSBjb25zdAotewot
ICAgIHJldHVybiBbcGxheWVyQ29udHJvbGxlcigpIGlzUGxheWluZ10gJiYgbV9jdXJyZW50TW9k
ZS5pc0Z1bGxzY3JlZW4oKSAmJiBzdXBwb3J0c1BpY3R1cmVJblBpY3R1cmUoKTsKLX0KLQotdm9p
ZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZnVsbHNjcmVlbk1heVJldHVyblRvSW5s
aW5lKFdURjo6RnVuY3Rpb248dm9pZChib29sKT4mJiBjYWxsYmFjaykKLXsKLSAgICBtX3ByZXBh
cmVUb0lubGluZUNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7Ci0gICAgaWYgKG1fZnVsbHNj
cmVlbkNoYW5nZU9ic2VydmVyKQotICAgICAgICBtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci0+
ZnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lKCk7Ci19Ci0KLXZvaWQgVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQ6OndpbGxTdGFydFBpY3R1cmVJblBpY3R1cmUoKQotewotICAgIExPRyhG
dWxsc2NyZWVuLCAiVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OndpbGxTdGFydFBpY3R1
cmVJblBpY3R1cmUoJXApIiwgdGhpcyk7Ci0gICAgc2V0TW9kZShIVE1MTWVkaWFFbGVtZW50RW51
bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVQaWN0dXJlSW5QaWN0dXJlKTsKLSAgICBpZiAobV92aWRl
b0Z1bGxzY3JlZW5Nb2RlbCkKLSAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+d2lsbEVu
dGVyUGljdHVyZUluUGljdHVyZSgpOwotfQotCi12b2lkIFZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0OjpkaWRTdGFydFBpY3R1cmVJblBpY3R1cmUoKQotewotICAgIExPRyhGdWxsc2NyZWVu
LCAiVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmRpZFN0YXJ0UGljdHVyZUluUGljdHVy
ZSglcCkiLCB0aGlzKTsKLSAgICBtX3Nob3VsZFJldHVyblRvRnVsbHNjcmVlbkFmdGVyRW50ZXJp
bmdGb3JlZ3JvdW5kID0gcGljdHVyZUluUGljdHVyZVdhc1N0YXJ0ZWRXaGVuRW50ZXJpbmdCYWNr
Z3JvdW5kKCk7Ci0gICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIgc2V0U2hvd3NQbGF5YmFja0Nv
bnRyb2xzOllFU107Ci0KLSAgICBpZiAobV9jdXJyZW50TW9kZS5oYXNGdWxsc2NyZWVuKCkpIHsK
LSAgICAgICAgaWYgKCFwaWN0dXJlSW5QaWN0dXJlV2FzU3RhcnRlZFdoZW5FbnRlcmluZ0JhY2tn
cm91bmQoKSkgewotICAgICAgICAgICAgW1ttX3BsYXllclZpZXdDb250cm9sbGVyIHZpZXddIGxh
eW91dElmTmVlZGVkXTsKLSAgICAgICAgICAgIFttX3BsYXllclZpZXdDb250cm9sbGVyIGV4aXRG
dWxsU2NyZWVuQW5pbWF0ZWQ6WUVTIGNvbXBsZXRpb25IYW5kbGVyOltwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZlB0cih0aGlzKSwgdGhpc10gKEJPT0wgc3VjY2VzcywgTlNFcnJvciogZXJyb3IpIHsK
LSAgICAgICAgICAgICAgICBpZiAoIXN1Y2Nlc3MpCi0gICAgICAgICAgICAgICAgICAgIFdURkxv
Z0Fsd2F5cygiLVtBVlBsYXllclZpZXdDb250cm9sbGVyIGV4aXRGdWxsU2NyZWVuQW5pbWF0ZWQ6
Y29tcGxldGlvbkhhbmRsZXI6XSBmYWlsZWQgd2l0aCBlcnJvciAlcyIsIFtbZXJyb3IgbG9jYWxp
emVkRGVzY3JpcHRpb25dIFVURjhTdHJpbmddKTsKLSAgICAgICAgICAgICAgICBbbV93aW5kb3cg
c2V0SGlkZGVuOllFU107Ci0gICAgICAgICAgICAgICAgW1ttX3BsYXllclZpZXdDb250cm9sbGVy
IHZpZXddIHNldEhpZGRlbjpZRVNdOwotICAgICAgICAgICAgfV07Ci0gICAgICAgIH0KLSAgICB9
IGVsc2UgewotICAgICAgICBbbV93aW5kb3cgc2V0SGlkZGVuOllFU107Ci0gICAgICAgIFtbbV9w
bGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3XSBzZXRIaWRkZW46WUVTXTsKLSAgICB9Ci0KLSAgICBp
ZiAobV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIpCi0gICAgICAgIG1fZnVsbHNjcmVlbkNoYW5n
ZU9ic2VydmVyLT5kaWRFbnRlckZ1bGxzY3JlZW4oKTsKLSAgICBpZiAobV92aWRlb0Z1bGxzY3Jl
ZW5Nb2RlbCkKLSAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+ZGlkRW50ZXJQaWN0dXJl
SW5QaWN0dXJlKCk7Ci19Ci0KLXZvaWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmZh
aWxlZFRvU3RhcnRQaWN0dXJlSW5QaWN0dXJlKCkKLXsKLSAgICBMT0coRnVsbHNjcmVlbiwgIlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpmYWlsZWRUb1N0YXJ0UGljdHVyZUluUGljdHVy
ZSglcCkiLCB0aGlzKTsKLSAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciBzZXRTaG93c1BsYXli
YWNrQ29udHJvbHM6WUVTXTsKLQotICAgIGlmIChtX2N1cnJlbnRNb2RlLmhhc0Z1bGxzY3JlZW4o
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9leGl0Q29tcGxldGVkID0gdHJ1ZTsKLQotICAg
IGlmIChtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcikKLSAgICAgICAgbV9mdWxsc2NyZWVuQ2hh
bmdlT2JzZXJ2ZXItPmRpZEVudGVyRnVsbHNjcmVlbigpOwotICAgIGlmIChtX3ZpZGVvRnVsbHNj
cmVlbk1vZGVsKQotICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT5mYWlsZWRUb0VudGVy
UGljdHVyZUluUGljdHVyZSgpOwotCi0gICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwpCi0g
ICAgICAgIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwtPnJlcXVlc3RGdWxsc2NyZWVuTW9kZShIVE1M
TWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsKLX0KLQotdm9pZCBW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6d2lsbFN0b3BQaWN0dXJlSW5QaWN0dXJlKCkK
LXsKLSAgICBMT0coRnVsbHNjcmVlbiwgIlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojp3
aWxsU3RvcFBpY3R1cmVJblBpY3R1cmUoJXApIiwgdGhpcyk7Ci0KLSAgICBtX3Nob3VsZFJldHVy
blRvRnVsbHNjcmVlbldoZW5TdG9wcGluZ1BpUCA9IGZhbHNlOwotICAgIG1fc2hvdWxkUmV0dXJu
VG9GdWxsc2NyZWVuQWZ0ZXJFbnRlcmluZ0ZvcmVncm91bmQgPSBmYWxzZTsKLQotICAgIGlmICht
X2N1cnJlbnRNb2RlLmhhc0Z1bGxzY3JlZW4oKSB8fCBtX3Jlc3RvcmluZ0Z1bGxzY3JlZW5Gb3JQ
aWN0dXJlSW5QaWN0dXJlU3RvcCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgW21fd2luZG93IHNl
dEhpZGRlbjpOT107Ci0gICAgW1ttX3BsYXllclZpZXdDb250cm9sbGVyIHZpZXddIHNldEhpZGRl
bjpOT107Ci0KLSAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5Nb2RlbCkKLSAgICAgICAgbV92aWRl
b0Z1bGxzY3JlZW5Nb2RlbC0+cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKEhUTUxNZWRpYUVsZW1lbnRF
bnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpOwotICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVl
bk1vZGVsKQotICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT53aWxsRXhpdFBpY3R1cmVJ
blBpY3R1cmUoKTsKLX0KLQotdm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZGlk
U3RvcFBpY3R1cmVJblBpY3R1cmUoKQotewotICAgIExPRyhGdWxsc2NyZWVuLCAiVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmRpZFN0b3BQaWN0dXJlSW5QaWN0dXJlKCVwKSIsIHRoaXMp
OwotCi0gICAgaWYgKG1fY3VycmVudE1vZGUuaGFzRnVsbHNjcmVlbigpIHx8IG1fcmVzdG9yaW5n
RnVsbHNjcmVlbkZvclBpY3R1cmVJblBpY3R1cmVTdG9wKSB7Ci0gICAgICAgIGNsZWFyTW9kZShI
VE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVQaWN0dXJlSW5QaWN0dXJl
KTsKLSAgICAgICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIgc2V0U2hvd3NQbGF5YmFja0NvbnRy
b2xzOllFU107Ci0KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIG1fZXhpdENvbXBsZXRl
ZCA9IHRydWU7Ci0KLSAgICBbbV9wbGF5ZXJMYXllclZpZXcgc2V0QmFja2dyb3VuZENvbG9yOmNs
ZWFyVUlDb2xvcigpXTsKLSAgICBbW21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10gc2V0QmFj
a2dyb3VuZENvbG9yOmNsZWFyVUlDb2xvcigpXTsKLQotICAgIGNsZWFyTW9kZShIVE1MTWVkaWFF
bGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVQaWN0dXJlSW5QaWN0dXJlKTsKLQotICAg
IGlmIChtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcikKLSAgICAgICAgbV9mdWxsc2NyZWVuQ2hh
bmdlT2JzZXJ2ZXItPmRpZEV4aXRGdWxsc2NyZWVuKCk7Ci0gICAgaWYgKG1fdmlkZW9GdWxsc2Ny
ZWVuTW9kZWwpCi0gICAgICAgIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwtPmRpZEV4aXRQaWN0dXJl
SW5QaWN0dXJlKCk7Ci19Ci0KLXZvaWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnBy
ZXBhcmVGb3JQaWN0dXJlSW5QaWN0dXJlU3RvcFdpdGhDb21wbGV0aW9uSGFuZGxlcih2b2lkIChe
Y29tcGxldGlvbkhhbmRsZXIpKEJPT0wgcmVzdG9yZWQpKQotewotICAgIExPRyhGdWxsc2NyZWVu
LCAiVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnByZXBhcmVGb3JQaWN0dXJlSW5QaWN0
dXJlU3RvcFdpdGhDb21wbGV0aW9uSGFuZGxlciglcCkiLCB0aGlzKTsKLSAgICBpZiAobV9zaG91
bGRSZXR1cm5Ub0Z1bGxzY3JlZW5XaGVuU3RvcHBpbmdQaVAgfHwgbV9zaG91bGRSZXR1cm5Ub0Z1
bGxzY3JlZW5BZnRlckVudGVyaW5nRm9yZWdyb3VuZCkgewotCi0gICAgICAgIG1fc2hvdWxkUmV0
dXJuVG9GdWxsc2NyZWVuQWZ0ZXJFbnRlcmluZ0ZvcmVncm91bmQgPSBmYWxzZTsKLSAgICAgICAg
bV9zaG91bGRSZXR1cm5Ub0Z1bGxzY3JlZW5XaGVuU3RvcHBpbmdQaVAgPSBmYWxzZTsKLSAgICAg
ICAgbV9yZXN0b3JpbmdGdWxsc2NyZWVuRm9yUGljdHVyZUluUGljdHVyZVN0b3AgPSB0cnVlOwot
Ci0gICAgICAgIFttX3dpbmRvdyBzZXRIaWRkZW46Tk9dOwotICAgICAgICBbW21fcGxheWVyVmll
d0NvbnRyb2xsZXIgdmlld10gc2V0SGlkZGVuOk5PXTsKLQotICAgICAgICBbW21fcGxheWVyVmll
d0NvbnRyb2xsZXIgdmlld10gbGF5b3V0SWZOZWVkZWRdOwotICAgICAgICBbbV9wbGF5ZXJWaWV3
Q29udHJvbGxlciBlbnRlckZ1bGxTY3JlZW5BbmltYXRlZDpZRVMgY29tcGxldGlvbkhhbmRsZXI6
XihCT09MIHN1Y2NlZWRlZCwgTlNFcnJvciAqZXJyb3IpIHsKLSAgICAgICAgICAgIGlmICghc3Vj
Y2VlZGVkKQotICAgICAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiLVtBVlBsYXllclZpZXdDb250
cm9sbGVyIGVudGVyRnVsbFNjcmVlbkFuaW1hdGVkOmNvbXBsZXRpb25IYW5kbGVyOl0gZmFpbGVk
IHdpdGggZXJyb3IgJXMiLCBbW2Vycm9yIGxvY2FsaXplZERlc2NyaXB0aW9uXSBVVEY4U3RyaW5n
XSk7Ci0KLSAgICAgICAgICAgIG1fcmVzdG9yaW5nRnVsbHNjcmVlbkZvclBpY3R1cmVJblBpY3R1
cmVTdG9wID0gZmFsc2U7Ci0gICAgICAgICAgICBzZXRNb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVt
czo6VmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkKTsKLSAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKHN1Y2NlZWRlZCk7Ci0gICAgICAgICAgICBpZiAobV9mdWxsc2NyZWVuQ2hhbmdlT2Jz
ZXJ2ZXIpCi0gICAgICAgICAgICAgICAgbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXItPmRpZEVu
dGVyRnVsbHNjcmVlbigpOwotICAgICAgICB9XTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIGZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZShbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQ
dHIodGhpcyksIHN0cm9uZ0NvbXBsZXRpb25IYW5kbGVyID0gYWRvcHROUyhbY29tcGxldGlvbkhh
bmRsZXIgY29weV0pXShib29sIHJlc3RvcmVkKSAgewotICAgICAgICBMT0coRnVsbHNjcmVlbiwg
IlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpwcmVwYXJlRm9yUGljdHVyZUluUGljdHVy
ZVN0b3BXaXRoQ29tcGxldGlvbkhhbmRsZXIgbGFtYmRhKCVwKSAtIHJlc3RvcmVkKCVzKSIsIHBy
b3RlY3RlZFRoaXMuZ2V0KCksIGJvb2xTdHJpbmcocmVzdG9yZWQpKTsKLSAgICAgICAgKCh2b2lk
ICheKShCT09MKSlzdHJvbmdDb21wbGV0aW9uSGFuZGxlci5nZXQoKSkocmVzdG9yZWQpOwotICAg
IH0pOwotfQotCi1ib29sIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzaG91bGRFeGl0
RnVsbHNjcmVlbldpdGhSZWFzb24oVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OkV4aXRG
dWxsU2NyZWVuUmVhc29uIHJlYXNvbikKLXsKLSAgICBpZiAoIW1fdmlkZW9GdWxsc2NyZWVuTW9k
ZWwpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgaWYgKHJlYXNvbiA9PSBFeGl0RnVsbFNj
cmVlblJlYXNvbjo6UGljdHVyZUluUGljdHVyZVN0YXJ0ZWQpIHsKLSAgICAgICAgaWYgKHBpY3R1
cmVJblBpY3R1cmVXYXNTdGFydGVkV2hlbkVudGVyaW5nQmFja2dyb3VuZCgpKQotICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIG1fc2hvdWxkUmV0dXJuVG9GdWxsc2NyZWVuV2hl
blN0b3BwaW5nUGlQID0gbV9jdXJyZW50TW9kZS5oYXNGdWxsc2NyZWVuKCk7Ci0gICAgICAgIGNs
ZWFyTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFy
ZCk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIGlmIChwbGF5YmFja1Nlc3Np
b25Nb2RlbCgpICYmIChyZWFzb24gPT0gRXhpdEZ1bGxTY3JlZW5SZWFzb246OkRvbmVCdXR0b25U
YXBwZWQgfHwgcmVhc29uID09IEV4aXRGdWxsU2NyZWVuUmVhc29uOjpSZW1vdGVDb250cm9sU3Rv
cEV2ZW50UmVjZWl2ZWQpKQotICAgICAgICBwbGF5YmFja1Nlc3Npb25Nb2RlbCgpLT5wYXVzZSgp
OwotCi0gICAgaWYgKCFtX3dhdGNoZG9nVGltZXIuaXNBY3RpdmUoKSAmJiAhaWdub3JlV2F0Y2hk
b2dGb3JEZWJ1Z2dpbmcpCi0gICAgICAgIG1fd2F0Y2hkb2dUaW1lci5zdGFydE9uZVNob3QoZGVm
YXVsdFdhdGNoZG9nVGltZXJJbnRlcnZhbCk7Ci0KLSNpZiBQTEFURk9STShXQVRDSE9TKQotICAg
IGlmIChtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcikgewotICAgICAgICBtX3dhaXRpbmdGb3JQ
cmVwYXJlZFRvRXhpdCA9IHRydWU7Ci0gICAgICAgIG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVy
LT53aWxsRXhpdEZ1bGxzY3JlZW4oKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSNl
bmRpZgotCi0gICAgQk9PTCBmaW5pc2hlZCA9IHJlYXNvbiA9PSBFeGl0RnVsbFNjcmVlblJlYXNv
bjo6RG9uZUJ1dHRvblRhcHBlZCB8fCByZWFzb24gPT0gRXhpdEZ1bGxTY3JlZW5SZWFzb246OlBp
bmNoR2VzdHVyZUhhbmRsZWQ7Ci0gICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+cmVxdWVzdEZ1
bGxzY3JlZW5Nb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZU5v
bmUsIGZpbmlzaGVkKTsKLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotI2Vsc2UgLy8gRU5BQkxF
KEZVTExTQ1JFRU5fQVBJKQotCiB2b2lkIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojph
cHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpCiB7CiAgICAgTE9HKEZ1bGxzY3JlZW4sICJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoJXAp
IiwgdGhpcyk7CkBAIC0xNDIxLDYgKzk0MywxMyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0OjpwcmVwYXJlZFRvUmV0dXJuVG9JbmxpbmUoYm9vbCB2aXNpYmxlLCBjb25zdAog
CiB2b2lkIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpwcmVwYXJlZFRvRXhpdEZ1bGxz
Y3JlZW4oKQogeworI2lmIFBMQVRGT1JNKFdBVENIT1MpCisgICAgaWYgKCFtX3dhaXRpbmdGb3JQ
cmVwYXJlZFRvRXhpdCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV93YWl0aW5nRm9yUHJlcGFy
ZWRUb0V4aXQgPSBmYWxzZTsKKyAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT5yZXF1ZXN0RnVs
bHNjcmVlbk1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9u
ZSwgdHJ1ZSk7CisjZW5kaWYKIH0KIAogYm9vbCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktp
dDo6bWF5QXV0b21hdGljYWxseVNob3dWaWRlb1BpY3R1cmVJblBpY3R1cmUoKSBjb25zdApAQCAt
MTU3NiwxMiArMTEwNSwyMCBAQCBib29sIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojpz
aG91bGRFeGl0RnVsbHNjcmVlbldpdGhSZWFzb24oVmlkZW9GdWxsc2NyZQogICAgIGlmIChwbGF5
YmFja1Nlc3Npb25Nb2RlbCgpICYmIChyZWFzb24gPT0gRXhpdEZ1bGxTY3JlZW5SZWFzb246OkRv
bmVCdXR0b25UYXBwZWQgfHwgcmVhc29uID09IEV4aXRGdWxsU2NyZWVuUmVhc29uOjpSZW1vdGVD
b250cm9sU3RvcEV2ZW50UmVjZWl2ZWQpKQogICAgICAgICBwbGF5YmFja1Nlc3Npb25Nb2RlbCgp
LT5wYXVzZSgpOwogCi0gICAgQk9PTCBmaW5pc2hlZCA9IHJlYXNvbiA9PSBFeGl0RnVsbFNjcmVl
blJlYXNvbjo6RG9uZUJ1dHRvblRhcHBlZCB8fCByZWFzb24gPT0gRXhpdEZ1bGxTY3JlZW5SZWFz
b246OlBpbmNoR2VzdHVyZUhhbmRsZWQ7Ci0gICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+cmVx
dWVzdEZ1bGxzY3JlZW5Nb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVu
TW9kZU5vbmUsIGZpbmlzaGVkKTsKLQogICAgIGlmICghbV93YXRjaGRvZ1RpbWVyLmlzQWN0aXZl
KCkgJiYgIWlnbm9yZVdhdGNoZG9nRm9yRGVidWdnaW5nKQogICAgICAgICBtX3dhdGNoZG9nVGlt
ZXIuc3RhcnRPbmVTaG90KGRlZmF1bHRXYXRjaGRvZ1RpbWVySW50ZXJ2YWwpOwogCisjaWYgUExB
VEZPUk0oV0FUQ0hPUykKKyAgICBpZiAobV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIpIHsKKyAg
ICAgICAgbV93YWl0aW5nRm9yUHJlcGFyZWRUb0V4aXQgPSB0cnVlOworICAgICAgICBtX2Z1bGxz
Y3JlZW5DaGFuZ2VPYnNlcnZlci0+d2lsbEV4aXRGdWxsc2NyZWVuKCk7CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisjZW5kaWYKKyAgICAKKyAgICBCT09MIGZpbmlzaGVkID0gcmVhc29u
ID09IEV4aXRGdWxsU2NyZWVuUmVhc29uOjpEb25lQnV0dG9uVGFwcGVkIHx8IHJlYXNvbiA9PSBF
eGl0RnVsbFNjcmVlblJlYXNvbjo6UGluY2hHZXN0dXJlSGFuZGxlZDsKKyAgICBtX3ZpZGVvRnVs
bHNjcmVlbk1vZGVsLT5yZXF1ZXN0RnVsbHNjcmVlbk1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1z
OjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSwgZmluaXNoZWQpOworCiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCkBAIC0xODc2LDggKzE0MTMsNiBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0OjpyZXR1cm5Ub1N0YW5kYnkoKQogICAgIFtbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciB2
aWV3XSBzZXRIaWRkZW46WUVTXTsKIH0KIAotI2VuZGlmIC8vIEVOQUJMRShGVUxMU0NSRUVOX0FQ
SSkKLQogTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VBVktpdDo6d2F0Y2hkb2dUaW1lckZpcmVkKCkKIHsKICAgICBMT0coRnVsbHNjcmVlbiwgIlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojp3YXRjaGRvZ1RpbWVyRmlyZWQoJXApIC0gbm8g
ZXhpdCBmdWxsc2NyZWVuIHJlc3BvbnNlIGluICVnczsgZm9yY2luZyBmdWxsc2NyZWVuIGhpZGRl
bi4iLCB0aGlzLCBkZWZhdWx0V2F0Y2hkb2dUaW1lckludGVydmFsLnZhbHVlKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXJBVktpdC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxz
Y3JlZW5Db250cm9sbGVyQVZLaXQubW0KaW5kZXggZDQzYjg3YzBkOTUyMjBhMTdmNGMxMGJmMjQ3
ZGRjYmEzMGQwOThmZC4uMTA1ZDRjNThhNjRjODkyYmQ3NzcyNjU4NjNiMDE5YTU0YzZiMzNmNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVl
bkNvbnRyb2xsZXJBVktpdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2Vi
VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tCkBAIC0yMjQsNyArMjI0LDcgQEAgcHJp
dmF0ZToKIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6cmVxdWVzdFVw
ZGF0ZUlubGluZVJlY3QoKQogewotI2lmIFBMQVRGT1JNKElPUykgJiYgRU5BQkxFKEZVTExTQ1JF
RU5fQVBJKQorI2lmIFBMQVRGT1JNKElPUykKICAgICBBU1NFUlQoaXNVSVRocmVhZCgpKTsKICAg
ICBXZWJUaHJlYWRSdW4oW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB0aGlzXSAo
KSBtdXRhYmxlIHsKICAgICAgICAgSW50UmVjdCBjbGllbnRSZWN0ID0gZWxlbWVudFJlY3RJbldp
bmRvdyhtX3ZpZGVvRWxlbWVudC5nZXQoKSk7CkBAIC0yMzksNyArMjM5LDcgQEAgdm9pZCBWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6cmVxdWVzdFVwZGF0ZUlubGluZVJlY3QoKQog
CiB2b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpyZXF1ZXN0VmlkZW9Db250
ZW50TGF5ZXIoKQogewotI2lmIFBMQVRGT1JNKElPUykgJiYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJ
KQorI2lmIFBMQVRGT1JNKElPUykKICAgICBBU1NFUlQoaXNVSVRocmVhZCgpKTsKICAgICBXZWJU
aHJlYWRSdW4oW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB0aGlzLCB2aWRlb0Z1
bGxzY3JlZW5MYXllciA9IHJldGFpblB0cihbbV92aWRlb0Z1bGxzY3JlZW5WaWV3IGxheWVyXSld
ICgpIG11dGFibGUgewogICAgICAgICBbdmlkZW9GdWxsc2NyZWVuTGF5ZXIgc2V0QmFja2dyb3Vu
ZENvbG9yOmNhY2hlZENHQ29sb3IoV2ViQ29yZTo6Q29sb3I6OnRyYW5zcGFyZW50KV07CkBAIC0y
NTYsNyArMjU2LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6cmVx
dWVzdFZpZGVvQ29udGVudExheWVyKCkKIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
Q29udGV4dDo6cmV0dXJuVmlkZW9Db250ZW50TGF5ZXIoKQogewotI2lmIFBMQVRGT1JNKElPUykg
JiYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorI2lmIFBMQVRGT1JNKElPUykKICAgICBBU1NFUlQo
aXNVSVRocmVhZCgpKTsKICAgICBXZWJUaHJlYWRSdW4oW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVm
UHRyKHRoaXMpLCB0aGlzLCB2aWRlb0Z1bGxzY3JlZW5MYXllciA9IHJldGFpblB0cihbbV92aWRl
b0Z1bGxzY3JlZW5WaWV3IGxheWVyXSldICgpIG11dGFibGUgewogICAgICAgICBbdmlkZW9GdWxs
c2NyZWVuTGF5ZXIgc2V0QmFja2dyb3VuZENvbG9yOmNhY2hlZENHQ29sb3IoV2ViQ29yZTo6Q29s
b3I6OnRyYW5zcGFyZW50KV07CkBAIC0yNzQsNyArMjc0LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyQ29udGV4dDo6cmV0dXJuVmlkZW9Db250ZW50TGF5ZXIoKQogdm9pZCBWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6ZGlkU2V0dXBGdWxsc2NyZWVuKCkKIHsKICAg
ICBBU1NFUlQoaXNVSVRocmVhZCgpKTsKLSNpZiBQTEFURk9STShJT1MpICYmIEVOQUJMRShGVUxM
U0NSRUVOX0FQSSkKKyNpZiBQTEFURk9STShJT1MpCiAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0
Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB0
aGlzXSB7CiAgICAgICAgIG1faW50ZXJmYWNlLT5lbnRlckZ1bGxzY3JlZW4oKTsKICAgICB9KTsK
QEAgLTMwMyw3ICszMDMsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0
Ojp3aWxsRXhpdEZ1bGxzY3JlZW4oKQogdm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29u
dGV4dDo6ZGlkRXhpdEZ1bGxzY3JlZW4oKQogewogICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOwot
I2lmIFBMQVRGT1JNKElPUykgJiYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorI2lmIFBMQVRGT1JN
KElPUykKICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIHRoaXNdIHsKICAgICAgICAgbV9pbnRlcmZh
Y2UtPmNsZWFudXBGdWxsc2NyZWVuKCk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0K
aW5kZXggYmRmYmM4MDdhMWM5OTViNmUxYzQxYjg3MmJjNDhiNTQ3MGQyMzYzOS4uYTllOTM3MTM0
NjJkNzBiNGQ3M2Q1ZjZlMTVlNzNlYzY2ZWQ4NGJmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5t
bQpAQCAtNTM4LDcgKzUzOCw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Ojpl
eGl0RnVsbHNjcmVlbldpdGhvdXRBbmltYXRpb25Ub01vZGUodWludDY0X3QKIH0KICNlbmRpZgog
Ci0jaWYgUExBVEZPUk0oSU9TKSAmJiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisjaWYgUExBVEZP
Uk0oSU9TKQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6c2V0SW5saW5lUmVj
dCh1aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGlubGluZVJlY3Qs
IGJvb2wgdmlzaWJsZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9j
b2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KaW5kZXggNzE5Y2MyYmI0OGM3ZTk2NThk
NmMzYjA3YTgwZGMyNDNjNjEwODFhMi4uZmIwMTc5NGYwMGZkNDYwOGNmOTc0YjViNWY1MmFhM2Q2
NDc3NTQ5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVv
RnVsbHNjcmVlbk1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29h
L1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KQEAgLTIzMyw3ICsyMzMsNyBAQCBib29sIFZpZGVv
RnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnRFbgogCiBib29sIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlk
ZW9GdWxsc2NyZWVuU3RhbmRieSgpIGNvbnN0CiB7Ci0jaWYgUExBVEZPUk0oSU9TKSAmJiBFTkFC
TEUoRlVMTFNDUkVFTl9BUEkpCisjaWYgUExBVEZPUk0oSU9TKQogICAgIHJldHVybiB0cnVlOwog
I2Vsc2UKICAgICByZXR1cm4gZmFsc2U7CkBAIC00MTEsNyArNDExLDcgQEAgdm9pZCBWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyOjpkaWRTZXR1cEZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKQog
ICAgIFJlZlB0cjxWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0PiBpbnRlcmZhY2U7CiAg
ICAgc3RkOjp0aWUobW9kZWwsIGludGVyZmFjZSkgPSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShj
b250ZXh0SWQpOwogCi0jaWYgUExBVEZPUk0oSU9TKSAmJiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkp
CisjaWYgUExBVEZPUk0oSU9TKQogICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWlu
X3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgdGhpcywgY29udGV4
dElkXSB7CiAgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UpCiAgICAgICAgICAgICBt
X3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6RW50ZXJG
dWxsc2NyZWVuKGNvbnRleHRJZCksIHByb3RlY3RlZFRoaXMtPm1fcGFnZS0+cGFnZUlEKCkpOwpA
QCAtNDg0LDcgKzQ4NCw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkRXhpdEZ1
bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKQogICAgIFJlZlB0cjxWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VDb250ZXh0PiBpbnRlcmZhY2U7CiAgICAgc3RkOjp0aWUobW9kZWwsIGludGVyZmFj
ZSkgPSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpOwogCi0jaWYgUExBVEZPUk0o
SU9TKSAmJiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisjaWYgUExBVEZPUk0oSU9TKQogICAgIGRp
c3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZlB0cih0aGlzKSwgY29udGV4dElkLCBpbnRlcmZhY2VdIHsKICAgICAgICAgaWYgKHBy
b3RlY3RlZFRoaXMtPm1fcGFnZSkKICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fcGFnZS0+
c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpDbGVhbnVwRnVsbHNj
cmVlbihjb250ZXh0SWQpLCBwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UtPnBhZ2VJRCgpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>351220</attachid>
            <date>2018-09-30 17:58:18 -0700</date>
            <delta_ts>2018-10-01 11:00:05 -0700</delta_ts>
            <desc>Patch for landing.</desc>
            <filename>bug-190091-20180930175817.patch</filename>
            <type>text/plain</type>
            <size>33619</size>
            <attacher name="Jeremy Jones">jeremyj-wk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2NjQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWJjZGU2MDNmZTg2ZGFm
NGFmY2I5ZDlkZWQ2ZDhhYmU3MjBjYmVlMC4uZTg4NGI2MWE2NWE3MzZhZjRkNWQwNTU3ODM4OTRi
ZWQ2NDJhOTE3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE4LTA5LTI4ICBKZXJl
bXkgSm9uZXMgIDxqZXJlbXlqQGFwcGxlLmNvbT4KKworICAgICAgICBVbmlmeSBpbXBsZW1lbnRh
dGlvbiBpbiBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwMDkxCisgICAgICAgIHJkYXI6Ly9wcm9i
bGVtLzQ0NzM0NTIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSmVyIE5vYmxlLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cyBiZWNhdXNlIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICBVbmlm
aWVkIGNvZGUgaW4gVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQgbm93IHRoYXQgbmV3IGNv
ZGUgcGF0aCBpcyBwcm92ZW4gYW5kIGluY2x1ZGUKKyAgICAgICAgYW55IGNoYW5nZXMgdGhhdCBo
YWQgYmVlbiBtYWRlIGluIHRoZSBvbGQgcGF0aC4KKworICAgICAgICAqIHBsYXRmb3JtL2lvcy9W
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9W
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJW
aWV3Q29udHJvbGxlckRlbGVnYXRlIHBsYXllclZpZXdDb250cm9sbGVyU2hvdWxkU3RhcnRQaWN0
dXJlSW5QaWN0dXJlRnJvbUlubGluZVdoZW5FbnRlcmluZ0JhY2tncm91bmQ6XSk6CisgICAgICAg
IChWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6cHJlcGFyZWRUb0V4aXRGdWxsc2NyZWVu
KToKKyAgICAgICAgKFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzaG91bGRFeGl0RnVs
bHNjcmVlbldpdGhSZWFzb24pOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxz
Y3JlZW5Db250cm9sbGVyQVZLaXQubW06CisgICAgICAgIChWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyQ29udGV4dDo6cmVxdWVzdFVwZGF0ZUlubGluZVJlY3QpOgorICAgICAgICAoVmlkZW9GdWxs
c2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnJlcXVlc3RWaWRlb0NvbnRlbnRMYXllcik6CisgICAg
ICAgIChWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6cmV0dXJuVmlkZW9Db250ZW50
TGF5ZXIpOgorICAgICAgICAoVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmRpZFNl
dHVwRnVsbHNjcmVlbik6CisgICAgICAgIChWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4
dDo6ZGlkRXhpdEZ1bGxzY3JlZW4pOgorCiAyMDE4LTA5LTMwICBXYWxrZXIgSGVuZGVyc29uICA8
d2phaGVuZGVyc29uQGdtYWlsLmNvbT4KIAogICAgICAgICBBdWRpb05vZGUuY29ubmVjdCBzaG91
bGQgcmV0dXJuIHBhc3NlZCBkZXN0aW5hdGlvbiBub2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGFmMzc1NDZkMzc1
M2Q5YjZhOTQ4Zjc1N2Y4ZjEwODYxMGQxMmZhZDEuLjAwY2NhY2NlZWEyZTU1MmNmZTZjZWQ5YmJl
ZmZhZTM3N2JjZDQzNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTgtMDktMjggIEpl
cmVteSBKb25lcyAgPGplcmVteWpAYXBwbGUuY29tPgorCisgICAgICAgIFVuaWZ5IGltcGxlbWVu
dGF0aW9uIGluIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTAwOTEKKyAgICAgICAgcmRhcjovL3By
b2JsZW0vNDQ3MzQ1MjMKKworICAgICAgICBSZXZpZXdlZCBieSBKZXIgTm9ibGUuCisKKyAgICAg
ICAgVW5pZmllZCBjb2RlIGluIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0IG5vdyB0aGF0
IG5ldyBjb2RlIHBhdGggaXMgcHJvdmVuIGFuZCBpbmNsdWRlCisgICAgICAgIGFueSBjaGFuZ2Vz
IHRoYXQgaGFkIGJlZW4gbWFkZSBpbiB0aGUgb2xkIHBhdGguCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6
VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW5TdGFuZGJ5IGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkU2V0dXBG
dWxsc2NyZWVuKToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlk
RXhpdEZ1bGxzY3JlZW4pOgorCiAyMDE4LTA5LTMwICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxz
b25AYXBwbGUuY29tPgogCiAgICAgICAgIFtNZWRpYVN0cmVhbV0gQ2xlYW4gdXAgUmVhbHRpbWVN
ZWRpYVNvdXJjZSBzZXR0aW5ncyBjaGFuZ2UgaGFuZGxpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmgK
aW5kZXggOGVlMmE5NTg2YmFmMmIxZjkzOGE3MDU3MTUzOWY1ODk3Y2QyOTQ0Ny4uODIxNjk3NDQ5
OTk1NWM5N2NjMTkxNzliODZmMjc5Yzk3OTc1YjZkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmgK
QEAgLTg1LDEwICs4NSw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlcXVl
c3RIaWRlQW5kRXhpdEZ1bGxzY3JlZW4oKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHByZXBh
cmVkVG9SZXR1cm5Ub0lubGluZShib29sIHZpc2libGUsIGNvbnN0IEludFJlY3QmIGlubGluZVJl
Y3QpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcHJlcGFyZWRUb0V4aXRGdWxsc2NyZWVuKCk7
Ci0jaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
SGFzVmlkZW9Db250ZW50TGF5ZXIoYm9vbCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRJ
bmxpbmVSZWN0KGNvbnN0IEludFJlY3QmLCBib29sIHZpc2libGUpOwotI2VuZGlmCiAKICAgICBl
bnVtIGNsYXNzIEV4aXRGdWxsU2NyZWVuUmVhc29uIHsKICAgICAgICAgRG9uZUJ1dHRvblRhcHBl
ZCwKQEAgLTEyNiw5ICsxMjQsNyBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAgIE1vZGUgbV9jdXJy
ZW50TW9kZTsKLSNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgTW9kZSBtX3RhcmdldE1v
ZGU7Ci0jZW5kaWYKIAogICAgIFZpZGVvRnVsbHNjcmVlbk1vZGVsJiB2aWRlb0Z1bGxzY3JlZW5N
b2RlbCgpIGNvbnN0IHsgcmV0dXJuIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWw7IH0KICAgICBib29s
IHNob3VsZEV4aXRGdWxsc2NyZWVuV2l0aFJlYXNvbihFeGl0RnVsbFNjcmVlblJlYXNvbik7CkBA
IC0xNDUsMTAgKzE0MSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHdpbGxTdG9wUGljdHVyZUluUGlj
dHVyZSgpOwogICAgIHZvaWQgZGlkU3RvcFBpY3R1cmVJblBpY3R1cmUoKTsKICAgICB2b2lkIHBy
ZXBhcmVGb3JQaWN0dXJlSW5QaWN0dXJlU3RvcFdpdGhDb21wbGV0aW9uSGFuZGxlcih2b2lkIChe
KShCT09MKSk7Ci0jaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIHZvaWQgZXhpdEZ1bGxz
Y3JlZW5IYW5kbGVyKEJPT0wgc3VjY2VzcywgTlNFcnJvciAqKTsKICAgICB2b2lkIGVudGVyRnVs
bHNjcmVlbkhhbmRsZXIoQk9PTCBzdWNjZXNzLCBOU0Vycm9yICopOwotI2VuZGlmCiAgICAgYm9v
bCBpc1BsYXlpbmdWaWRlb0luRW5oYW5jZWRGdWxsc2NyZWVuKCkgY29uc3Q7CiAKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldE1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxz
Y3JlZW5Nb2RlKTsKQEAgLTE2NSwxNSArMTU5LDEwIEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAg
ICBXRUJDT1JFX0VYUE9SVCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdChSZWY8UGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ+JiYsIFJlZjxWaWRlb0Z1bGxzY3JlZW5Nb2RlbD4mJik7
CiAKLSNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgdm9pZCBkb1NldHVwKCk7CiAgICAg
dm9pZCBmaW5hbGl6ZVNldHVwKCk7CiAgICAgdm9pZCBkb0V4aXRGdWxsc2NyZWVuKCk7CiAgICAg
dm9pZCByZXR1cm5Ub1N0YW5kYnkoKTsKLSNlbHNlCi0gICAgdm9pZCBlbnRlclBpY3R1cmVJblBp
Y3R1cmUoKTsKLSAgICB2b2lkIGVudGVyRnVsbHNjcmVlblN0YW5kYXJkKCk7Ci0jZW5kaWYKICAg
ICB2b2lkIGRvRW50ZXJGdWxsc2NyZWVuKCk7CiAgICAgdm9pZCB3YXRjaGRvZ1RpbWVyRmlyZWQo
KTsKICAgICBXZWJBVlBsYXllckNvbnRyb2xsZXIgKnBsYXllckNvbnRyb2xsZXIoKSBjb25zdDsK
QEAgLTE5OSw3ICsxODgsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBtX3Nob3VsZFJldHVyblRv
RnVsbHNjcmVlbldoZW5TdG9wcGluZ1BpUCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3Jlc3Rvcmlu
Z0Z1bGxzY3JlZW5Gb3JQaWN0dXJlSW5QaWN0dXJlU3RvcCB7IGZhbHNlIH07CiAKLSNpZiBFTkFC
TEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgYm9vbCBtX3NldHVwTmVlZHNJbmxpbmVSZWN0IHsgZmFs
c2UgfTsKICAgICBib29sIG1fZXhpdEZ1bGxzY3JlZW5OZWVkSW5saW5lUmVjdCB7IGZhbHNlIH07
CiAKQEAgLTIyNCwxMyArMjEyLDggQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgbV9pbmxpbmVJc1Zp
c2libGUgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9zdGFuZGJ5IHsgZmFsc2UgfTsKICAgICBib29s
IG1fdGFyZ2V0U3RhbmRieSB7IGZhbHNlIH07Ci0jZWxzZQotICAgIGJvb2wgbV9leGl0UmVxdWVz
dGVkIHsgZmFsc2UgfTsKLSAgICBib29sIG1fZXhpdENvbXBsZXRlZCB7IGZhbHNlIH07Ci0gICAg
Ym9vbCBtX2VudGVyUmVxdWVzdGVkIHsgZmFsc2UgfTsKLSAgICBib29sIG1fc2hvdWxkUmV0dXJu
VG9GdWxsc2NyZWVuQWZ0ZXJFbnRlcmluZ0ZvcmVncm91bmQgeyBmYWxzZSB9OworCiAgICAgYm9v
bCBtX3dhaXRpbmdGb3JQcmVwYXJlZFRvRXhpdCB7IGZhbHNlIH07Ci0jZW5kaWYKIH07CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VBVktpdC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VBVktpdC5tbQppbmRleCA3MzI0NGVlYzJlYjUxZjIwOGY2ZDM2ZTE5NmM0
MTMxNjFhODVjZjJjLi4xZjcxOTM4MzRkMzU2NTQwMjk3MzkzOTU3YjVhMmVlZjYxODZlOTg3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tCkBAIC0xODcsMTMgKzE4NywxMSBAQCAtICh2b2lkKXBs
YXllclZpZXdDb250cm9sbGVyOihBVlBsYXllclZpZXdDb250cm9sbGVyICopcGxheWVyVmlld0Nv
bnRyb2xsZXIgcmVzdAogICAgIHNlbGYuZnVsbHNjcmVlbkludGVyZmFjZS0+cHJlcGFyZUZvclBp
Y3R1cmVJblBpY3R1cmVTdG9wV2l0aENvbXBsZXRpb25IYW5kbGVyKGNvbXBsZXRpb25IYW5kbGVy
KTsKIH0KIAotI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKIC0gKEJPT0wpcGxheWVyVmlld0Nv
bnRyb2xsZXJTaG91bGRTdGFydFBpY3R1cmVJblBpY3R1cmVGcm9tSW5saW5lV2hlbkVudGVyaW5n
QmFja2dyb3VuZDooQVZQbGF5ZXJWaWV3Q29udHJvbGxlciAqKXBsYXllclZpZXdDb250cm9sbGVy
CiB7CiAgICAgVU5VU0VEX1BBUkFNKHBsYXllclZpZXdDb250cm9sbGVyKTsKICAgICByZXR1cm4g
WUVTOwogfQotI2VuZGlmCiAKIEBlbmQKIApAQCAtNzg1LDEzOCArNzgzLDYgQEAgYm9vbCBWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6cGljdHVyZUluUGljdHVyZVdhc1N0YXJ0ZWRXaGVu
RW50ZXJpbmdCYWNrZ3IKICAgICByZXR1cm4gW21fcGxheWVyVmlld0NvbnRyb2xsZXIgcGljdHVy
ZUluUGljdHVyZVdhc1N0YXJ0ZWRXaGVuRW50ZXJpbmdCYWNrZ3JvdW5kXTsKIH0KIAotI2lmICFF
TkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0KLXZvaWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQ6OmFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCkKLXsKLSAgICBMT0coRnVsbHNjcmVlbiwg
IlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjphcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2
ZSglcCkiLCB0aGlzKTsKLSAgICBpZiAobV9zaG91bGRSZXR1cm5Ub0Z1bGxzY3JlZW5BZnRlckVu
dGVyaW5nRm9yZWdyb3VuZCAmJiB2aWRlb0Z1bGxzY3JlZW5Nb2RlbCgpLmlzVmlzaWJsZSgpKSB7
Ci0gICAgICAgIFttX3BsYXllclZpZXdDb250cm9sbGVyIHN0b3BQaWN0dXJlSW5QaWN0dXJlXTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIElmIHdlIGFyZSBib3RoIGluIFBpUCBh
bmQgaW4gRnVsbHNjcmVlbiAoaS5lLiwgdmlhIGF1dG8tUGlQKSwgYW5kIHdlIGRpZCBub3Qgc3Rv
cCBmdWxsc2NyZWVuIHVwb24gcmV0dXJuaW5nLCBpdCBtdXN0IGJlCi0gICAgLy8gYmVjYXVzZSB0
aGUgb3JpZ2luYXRpbmcgdmlldyBpcyBub3QgdmlzaWJsZSwgc28gaGlkZSB0aGUgZnVsbHNjcmVl
biB3aW5kb3cuCi0gICAgaWYgKG1fY3VycmVudE1vZGUuaGFzRnVsbHNjcmVlbigpICYmIG1fY3Vy
cmVudE1vZGUuaGFzUGljdHVyZUluUGljdHVyZSgpKSB7Ci0gICAgICAgIFtbbV9wbGF5ZXJWaWV3
Q29udHJvbGxlciB2aWV3XSBsYXlvdXRJZk5lZWRlZF07Ci0gICAgICAgIFttX3BsYXllclZpZXdD
b250cm9sbGVyIGV4aXRGdWxsU2NyZWVuQW5pbWF0ZWQ6Tk8gY29tcGxldGlvbkhhbmRsZXI6W3By
b3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB0aGlzXSAoQk9PTCBzdWNjZXNzLCBOU0Vy
cm9yKiBlcnJvcikgewotICAgICAgICAgICAgaWYgKCFzdWNjZXNzKQotICAgICAgICAgICAgICAg
IFdURkxvZ0Fsd2F5cygiLVtBVlBsYXllclZpZXdDb250cm9sbGVyIGV4aXRGdWxsU2NyZWVuQW5p
bWF0ZWQ6Y29tcGxldGlvbkhhbmRsZXI6XSBmYWlsZWQgd2l0aCBlcnJvciAlcyIsIFtbZXJyb3Ig
bG9jYWxpemVkRGVzY3JpcHRpb25dIFVURjhTdHJpbmddKTsKLQotICAgICAgICAgICAgW21fd2lu
ZG93IHNldEhpZGRlbjpZRVNdOwotICAgICAgICAgICAgW1ttX3BsYXllclZpZXdDb250cm9sbGVy
IHZpZXddIHNldEhpZGRlbjpZRVNdOwotICAgICAgICB9XTsKLSAgICB9Ci19Ci0KLXZvaWQgVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldHVwRnVsbHNjcmVlbihVSVZpZXcmIHZpZGVv
VmlldywgY29uc3QgSW50UmVjdCYgaW5pdGlhbFJlY3QsIFVJVmlldyogcGFyZW50VmlldywgSFRN
TE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUsIGJvb2wgYWxsb3dz
UGljdHVyZUluUGljdHVyZVBsYXliYWNrLCBib29sIHN0YW5kYnkpCi17Ci0gICAgQVNTRVJUKG1v
ZGUgIT0gSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSk7Ci0g
ICAgTE9HKEZ1bGxzY3JlZW4sICJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0dXBG
dWxsc2NyZWVuKCVwKSIsIHRoaXMpOwotCi0gICAgbV9hbGxvd3NQaWN0dXJlSW5QaWN0dXJlUGxh
eWJhY2sgPSBhbGxvd3NQaWN0dXJlSW5QaWN0dXJlUGxheWJhY2s7Ci0gICAgbV92aWRlb1ZpZXcg
PSAmdmlkZW9WaWV3OwotICAgIG1fcGFyZW50VmlldyA9IHBhcmVudFZpZXc7Ci0gICAgbV9wYXJl
bnRXaW5kb3cgPSBwYXJlbnRWaWV3LndpbmRvdzsKLQotICAgIEFTU0VSVF9VTlVTRUQoc3RhbmRi
eSwgIXN0YW5kYnkpOwotICAgIGJvb2wgaXNJblBpY3R1cmVJblBpY3R1cmVNb2RlID0gbV9jdXJy
ZW50TW9kZS5oYXNQaWN0dXJlSW5QaWN0dXJlKCk7Ci0gICAgbV9jdXJyZW50TW9kZSA9IG1vZGU7
Ci0gICAgbV9pbmxpbmVSZWN0ID0gaW5pdGlhbFJlY3Q7Ci0KLSAgICBbQ0FUcmFuc2FjdGlvbiBi
ZWdpbl07Ci0gICAgW0NBVHJhbnNhY3Rpb24gc2V0RGlzYWJsZUFjdGlvbnM6WUVTXTsKLQotI2lm
ICFQTEFURk9STShXQVRDSE9TKQotICAgIGlmICghW1ttX3BhcmVudFZpZXcgd2luZG93XSBfaXNI
b3N0ZWRJbkFub3RoZXJQcm9jZXNzXSkgewotICAgICAgICBpZiAoIW1fd2luZG93KQotICAgICAg
ICAgICAgbV93aW5kb3cgPSBhZG9wdE5TKFthbGxvY1VJV2luZG93SW5zdGFuY2UoKSBpbml0V2l0
aEZyYW1lOltbZ2V0VUlTY3JlZW5DbGFzcygpIG1haW5TY3JlZW5dIGJvdW5kc11dKTsKLSAgICAg
ICAgW21fd2luZG93IHNldEJhY2tncm91bmRDb2xvcjpjbGVhclVJQ29sb3IoKV07Ci0gICAgICAg
IGlmICghbV92aWV3Q29udHJvbGxlcikKLSAgICAgICAgICAgIG1fdmlld0NvbnRyb2xsZXIgPSBh
ZG9wdE5TKFthbGxvY1VJVmlld0NvbnRyb2xsZXJJbnN0YW5jZSgpIGluaXRdKTsKLSAgICAgICAg
W1ttX3ZpZXdDb250cm9sbGVyIHZpZXddIHNldEZyYW1lOlttX3dpbmRvdyBib3VuZHNdXTsKLSAg
ICAgICAgW21fdmlld0NvbnRyb2xsZXIgX3NldElnbm9yZUFwcFN1cHBvcnRlZE9yaWVudGF0aW9u
czpZRVNdOwotICAgICAgICBbbV93aW5kb3cgc2V0Um9vdFZpZXdDb250cm9sbGVyOm1fdmlld0Nv
bnRyb2xsZXIuZ2V0KCldOwotICAgICAgICBbbV93aW5kb3cgc2V0V2luZG93TGV2ZWw6Z2V0VUlU
ZXh0RWZmZWN0c0JlbmVhdGhTdGF0dXNCYXJXaW5kb3dMZXZlbCgpICsgMV07Ci0gICAgICAgIFtt
X3dpbmRvdyBtYWtlS2V5QW5kVmlzaWJsZV07Ci0gICAgfQotI2VuZGlmCi0KLSAgICBpZiAoIW1f
cGxheWVyTGF5ZXJWaWV3KQotICAgICAgICBtX3BsYXllckxheWVyVmlldyA9IGFkb3B0TlMoW2Fs
bG9jV2ViQVZQbGF5ZXJMYXllclZpZXdJbnN0YW5jZSgpIGluaXRdKTsKLSAgICBbbV9wbGF5ZXJM
YXllclZpZXcgc2V0SGlkZGVuOltwbGF5ZXJDb250cm9sbGVyKCkgaXNFeHRlcm5hbFBsYXliYWNr
QWN0aXZlXV07Ci0gICAgW21fcGxheWVyTGF5ZXJWaWV3IHNldEJhY2tncm91bmRDb2xvcjpjbGVh
clVJQ29sb3IoKV07Ci0KLSAgICBpZiAoIWlzSW5QaWN0dXJlSW5QaWN0dXJlTW9kZSkgewotICAg
ICAgICBbbV9wbGF5ZXJMYXllclZpZXcgc2V0VmlkZW9WaWV3Om1fdmlkZW9WaWV3LmdldCgpXTsK
LSAgICAgICAgW21fcGxheWVyTGF5ZXJWaWV3IGFkZFN1YnZpZXc6bV92aWRlb1ZpZXcuZ2V0KCld
OwotICAgIH0KLQotICAgIFdlYkFWUGxheWVyTGF5ZXIgKnBsYXllckxheWVyID0gKFdlYkFWUGxh
eWVyTGF5ZXIgKilbbV9wbGF5ZXJMYXllclZpZXcgcGxheWVyTGF5ZXJdOwotICAgIFtwbGF5ZXJM
YXllciBzZXRNb2RlbFZpZGVvTGF5ZXJGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIG1faW5saW5lUmVj
dC53aWR0aCgpLCBtX2lubGluZVJlY3QuaGVpZ2h0KCkpXTsKLSAgICBbcGxheWVyTGF5ZXIgc2V0
VmlkZW9EaW1lbnNpb25zOltwbGF5ZXJDb250cm9sbGVyKCkgY29udGVudERpbWVuc2lvbnNdXTsK
LSAgICBwbGF5ZXJMYXllci5mdWxsc2NyZWVuSW50ZXJmYWNlID0gdGhpczsKLQotICAgIGlmICgh
bV9wbGF5ZXJWaWV3Q29udHJvbGxlcikKLSAgICAgICAgbV9wbGF5ZXJWaWV3Q29udHJvbGxlciA9
IGFkb3B0TlMoW1tXZWJBVlBsYXllclZpZXdDb250cm9sbGVyIGFsbG9jXSBpbml0V2l0aEZ1bGxz
Y3JlZW5JbnRlcmZhY2U6dGhpc10pOwotCi0gICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIgc2V0
U2hvd3NQbGF5YmFja0NvbnRyb2xzOk5PXTsKLSAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciBz
ZXRQbGF5ZXJDb250cm9sbGVyOihBVlBsYXllckNvbnRyb2xsZXIgKilwbGF5ZXJDb250cm9sbGVy
KCldOwotICAgIFttX3BsYXllclZpZXdDb250cm9sbGVyIHNldERlbGVnYXRlOm1fcGxheWVyVmll
d0NvbnRyb2xsZXJEZWxlZ2F0ZS5nZXQoKV07Ci0gICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIg
c2V0QWxsb3dzUGljdHVyZUluUGljdHVyZVBsYXliYWNrOm1fYWxsb3dzUGljdHVyZUluUGljdHVy
ZVBsYXliYWNrXTsKLSAgICBbcGxheWVyQ29udHJvbGxlcigpIHNldFBpY3R1cmVJblBpY3R1cmVQ
b3NzaWJsZTptX2FsbG93c1BpY3R1cmVJblBpY3R1cmVQbGF5YmFja107Ci0KLSNpZiBQTEFURk9S
TShXQVRDSE9TKQotICAgIG1fdmlld0NvbnRyb2xsZXIgPSB2aWRlb0Z1bGxzY3JlZW5Nb2RlbCgp
LmNyZWF0ZVZpZGVvRnVsbHNjcmVlblZpZXdDb250cm9sbGVyKG1fcGxheWVyVmlld0NvbnRyb2xs
ZXIuZ2V0KCkuYXZQbGF5ZXJWaWV3Q29udHJvbGxlcik7Ci0jZW5kaWYKLQotICAgIGlmIChtX3Zp
ZXdDb250cm9sbGVyKSB7Ci0gICAgICAgIFttX3ZpZXdDb250cm9sbGVyIGFkZENoaWxkVmlld0Nv
bnRyb2xsZXI6bV9wbGF5ZXJWaWV3Q29udHJvbGxlci5nZXQoKS5hdlBsYXllclZpZXdDb250cm9s
bGVyXTsKLSAgICAgICAgW1ttX3ZpZXdDb250cm9sbGVyIHZpZXddIGFkZFN1YnZpZXc6W21fcGxh
eWVyVmlld0NvbnRyb2xsZXIgdmlld11dOwotICAgIH0gZWxzZQotICAgICAgICBbbV9wYXJlbnRW
aWV3IGFkZFN1YnZpZXc6W21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld11dOwotCi0gICAgW21f
cGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10uZnJhbWUgPSBbbV9wYXJlbnRWaWV3IGNvbnZlcnRS
ZWN0Om1faW5saW5lUmVjdCB0b1ZpZXc6W21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10uc3Vw
ZXJ2aWV3XTsKLSAgICBbW21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10gc2V0QmFja2dyb3Vu
ZENvbG9yOmNsZWFyVUlDb2xvcigpXTsKLSAgICBbW21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmll
d10gc2V0QXV0b3Jlc2l6aW5nTWFzazooVUlWaWV3QXV0b3Jlc2l6aW5nRmxleGlibGVCb3R0b21N
YXJnaW4gfCBVSVZpZXdBdXRvcmVzaXppbmdGbGV4aWJsZVJpZ2h0TWFyZ2luKV07Ci0KLSAgICBb
W21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10gc2V0TmVlZHNMYXlvdXRdOwotICAgIFtbbV9w
bGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3XSBsYXlvdXRJZk5lZWRlZF07Ci0KLSAgICBbQ0FUcmFu
c2FjdGlvbiBjb21taXRdOwotCi0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5f
cXVldWUoKSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB0aGlzXSB7Ci0gICAg
ICAgIGlmIChtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcikKLSAgICAgICAgICAgIG1fZnVsbHNj
cmVlbkNoYW5nZU9ic2VydmVyLT5kaWRTZXR1cEZ1bGxzY3JlZW4oKTsKLSAgICB9KTsKLX0KLQot
dm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZW50ZXJGdWxsc2NyZWVuKCkKLXsK
LSAgICBMT0coRnVsbHNjcmVlbiwgIlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjplbnRl
ckZ1bGxzY3JlZW4oJXApICVkIiwgdGhpcywgbW9kZSgpKTsKLQotICAgIG1fZXhpdENvbXBsZXRl
ZCA9IGZhbHNlOwotICAgIG1fZXhpdFJlcXVlc3RlZCA9IGZhbHNlOwotICAgIG1fZW50ZXJSZXF1
ZXN0ZWQgPSB0cnVlOwotCi0gICAgaWYgKG1fY3VycmVudE1vZGUuaXNQaWN0dXJlSW5QaWN0dXJl
KCkpCi0gICAgICAgIGVudGVyUGljdHVyZUluUGljdHVyZSgpOwotICAgIGVsc2UgaWYgKG1fY3Vy
cmVudE1vZGUuaXNGdWxsc2NyZWVuKCkpCi0gICAgICAgIGVudGVyRnVsbHNjcmVlblN0YW5kYXJk
KCk7Ci0gICAgZWxzZQotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotdm9pZCBW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZW50ZXJQaWN0dXJlSW5QaWN0dXJlKCkKLXsK
LSAgICBMT0coRnVsbHNjcmVlbiwgIlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjplbnRl
clBpY3R1cmVJblBpY3R1cmUoJXApIiwgdGhpcyk7Ci0gICAgCi0gICAgaWYgKFttX3BsYXllclZp
ZXdDb250cm9sbGVyIGlzUGljdHVyZUluUGljdHVyZVBvc3NpYmxlXSkKLSAgICAgICAgW21fcGxh
eWVyVmlld0NvbnRyb2xsZXIgc3RhcnRQaWN0dXJlSW5QaWN0dXJlXTsKLSAgICBlbHNlCi0gICAg
ICAgIGZhaWxlZFRvU3RhcnRQaWN0dXJlSW5QaWN0dXJlKCk7Ci19Ci0KIHN0YXRpYyBVSVZpZXdD
b250cm9sbGVyICpmYWxsYmFja1ZpZXdDb250cm9sbGVyKFVJVmlldyAqdmlldykKIHsKICAgICBm
b3IgKFVJVmlldyAqY3VycmVudFZpZXcgPSB2aWV3OyBjdXJyZW50VmlldzsgY3VycmVudFZpZXcg
PSBjdXJyZW50Vmlldy5zdXBlcnZpZXcpIHsKQEAgLTkzOSwzMzEgKzgwNSw2IEBAIFVJVmlld0Nv
bnRyb2xsZXIgKlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpwcmVzZW50aW5nVmlld0Nv
bnRyb2xsZXIoKQogICAgIHJldHVybiBjb250cm9sbGVyOwogfQogCi12b2lkIFZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0OjplbnRlckZ1bGxzY3JlZW5TdGFuZGFyZCgpCi17Ci0gICAgTE9H
KEZ1bGxzY3JlZW4sICJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZW50ZXJGdWxsc2Ny
ZWVuU3RhbmRhcmQoJXApIiwgdGhpcyk7Ci0KLSAgICBpZiAoW21fcGxheWVyVmlld0NvbnRyb2xs
ZXIgaXNQaWN0dXJlSW5QaWN0dXJlQWN0aXZlXSkgewotICAgICAgICAvLyBOT1RFOiBUaGUgZnVs
bHNjcmVlbiBtb2RlIHdpbGwgYmUgcmVzdG9yZWQgaW4gcHJlcGFyZUZvclBpY3R1cmVJblBpY3R1
cmVTdG9wV2l0aENvbXBsZXRpb25IYW5kbGVyKCkuCi0gICAgICAgIG1fc2hvdWxkUmV0dXJuVG9G
dWxsc2NyZWVuV2hlblN0b3BwaW5nUGlQID0gdHJ1ZTsKLSAgICAgICAgW21fcGxheWVyVmlld0Nv
bnRyb2xsZXIgc3RvcFBpY3R1cmVJblBpY3R1cmVdOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgW1ttX3BsYXllclZpZXdDb250cm9sbGVyIHZpZXddIGxheW91dElmTmVlZGVkXTsKLSAg
ICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciBlbnRlckZ1bGxTY3JlZW5BbmltYXRlZDpZRVMgY29t
cGxldGlvbkhhbmRsZXI6W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpXSAo
Qk9PTCBzdWNjZWVkZWQsIE5TRXJyb3IqIGVycm9yKSB7Ci0gICAgICAgIGlmICghc3VjY2VlZGVk
KQotICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCItW0FWUGxheWVyVmlld0NvbnRyb2xsZXIgZW50
ZXJGdWxsU2NyZWVuQW5pbWF0ZWQ6Y29tcGxldGlvbkhhbmRsZXI6XSBmYWlsZWQgd2l0aCBlcnJv
ciAlcyIsIFtbZXJyb3IgbG9jYWxpemVkRGVzY3JpcHRpb25dIFVURjhTdHJpbmddKTsKLQotICAg
ICAgICBMT0coRnVsbHNjcmVlbiwgIlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjplbnRl
ckZ1bGxzY3JlZW5TdGFuZGFyZCAtIGxhbWJkYSglcCkgLSBzdWNjZWVkZWQoJXMpIiwgdGhpcywg
Ym9vbFN0cmluZyhzdWNjZWVkZWQpKTsKLSAgICAgICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIg
c2V0U2hvd3NQbGF5YmFja0NvbnRyb2xzOllFU107Ci0KLSAgICAgICAgaWYgKG1fZnVsbHNjcmVl
bkNoYW5nZU9ic2VydmVyKQotICAgICAgICAgICAgbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIt
PmRpZEVudGVyRnVsbHNjcmVlbigpOwotICAgIH1dOwotfQotCi12b2lkIFZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0OjpleGl0RnVsbHNjcmVlbihjb25zdCBJbnRSZWN0JiBmaW5hbFJlY3Qp
Ci17Ci0gICAgbV93YXRjaGRvZ1RpbWVyLnN0b3AoKTsKLQotICAgIG1fZXhpdFJlcXVlc3RlZCA9
IHRydWU7Ci0gICAgaWYgKG1fZXhpdENvbXBsZXRlZCkgewotICAgICAgICBpZiAobV9mdWxsc2Ny
ZWVuQ2hhbmdlT2JzZXJ2ZXIpCi0gICAgICAgICAgICBtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZl
ci0+ZGlkRXhpdEZ1bGxzY3JlZW4oKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIExP
RyhGdWxsc2NyZWVuLCAiVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmV4aXRGdWxsc2Ny
ZWVuKCVwKSIsIHRoaXMpOwotICAgIFttX3BsYXllclZpZXdDb250cm9sbGVyIHNldFNob3dzUGxh
eWJhY2tDb250cm9sczpOT107Ci0gICAgCi0gICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmll
d10uZnJhbWUgPSBbbV9wYXJlbnRWaWV3IGNvbnZlcnRSZWN0OmZpbmFsUmVjdCB0b1ZpZXc6W21f
cGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10uc3VwZXJ2aWV3XTsKLQotICAgIFdlYkFWUGxheWVy
TGF5ZXIgKnBsYXllckxheWVyID0gKFdlYkFWUGxheWVyTGF5ZXIgKilbbV9wbGF5ZXJMYXllclZp
ZXcgcGxheWVyTGF5ZXJdOwotICAgIGlmIChbcGxheWVyTGF5ZXIgdmlkZW9HcmF2aXR5XSAhPSBn
ZXRBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0KCkpCi0gICAgICAgIFtwbGF5ZXJMYXll
ciBzZXRWaWRlb0dyYXZpdHk6Z2V0QVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdCgpXTsK
LQotICAgIFtbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3XSBsYXlvdXRJZk5lZWRlZF07Ci0g
ICAgaWYgKG1fY3VycmVudE1vZGUuaXNQaWN0dXJlSW5QaWN0dXJlKCkpIHsKLSAgICAgICAgbV9z
aG91bGRSZXR1cm5Ub0Z1bGxzY3JlZW5XaGVuU3RvcHBpbmdQaVAgPSBmYWxzZTsKLSAgICAgICAg
W21fd2luZG93IHNldEhpZGRlbjpOT107Ci0gICAgICAgIFttX3BsYXllclZpZXdDb250cm9sbGVy
IHN0b3BQaWN0dXJlSW5QaWN0dXJlXTsKLSAgICB9IGVsc2UgaWYgKG1fY3VycmVudE1vZGUuaGFz
UGljdHVyZUluUGljdHVyZSgpICYmIG1fY3VycmVudE1vZGUuaGFzRnVsbHNjcmVlbigpKSB7Ci0g
ICAgICAgIFttX3BsYXllclZpZXdDb250cm9sbGVyIGV4aXRGdWxsU2NyZWVuQW5pbWF0ZWQ6Tk8g
Y29tcGxldGlvbkhhbmRsZXI6W3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB0aGlz
XSAoQk9PTCBzdWNjZXNzLCBOU0Vycm9yKiBlcnJvcikgewotICAgICAgICAgICAgaWYgKCFzdWNj
ZXNzKQotICAgICAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiLVtBVlBsYXllclZpZXdDb250cm9s
bGVyIGV4aXRGdWxsU2NyZWVuQW5pbWF0ZWQ6Y29tcGxldGlvbkhhbmRsZXI6XSBmYWlsZWQgd2l0
aCBlcnJvciAlcyIsIFtbZXJyb3IgbG9jYWxpemVkRGVzY3JpcHRpb25dIFVURjhTdHJpbmddKTsK
LQotICAgICAgICAgICAgY2xlYXJNb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxs
c2NyZWVuTW9kZVN0YW5kYXJkKTsKLSAgICAgICAgICAgIFttX3dpbmRvdyBzZXRIaWRkZW46Tk9d
OwotICAgICAgICAgICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIgc3RvcFBpY3R1cmVJblBpY3R1
cmVdOwotICAgICAgICB9XTsKLSAgICB9IGVsc2UgaWYgKG1fY3VycmVudE1vZGUuaXNGdWxsc2Ny
ZWVuKCkpIHsKLSAgICAgICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIgZXhpdEZ1bGxTY3JlZW5B
bmltYXRlZDpZRVMgY29tcGxldGlvbkhhbmRsZXI6W3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRy
KHRoaXMpLCB0aGlzXSAoQk9PTCBzdWNjZXNzLCBOU0Vycm9yKiBlcnJvcikgbXV0YWJsZSB7Ci0g
ICAgICAgICAgICBpZiAoIXN1Y2Nlc3MpCi0gICAgICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCIt
W0FWUGxheWVyVmlld0NvbnRyb2xsZXIgZXhpdEZ1bGxTY3JlZW5BbmltYXRlZDpjb21wbGV0aW9u
SGFuZGxlcjpdIGZhaWxlZCB3aXRoIGVycm9yICVzIiwgW1tlcnJvciBsb2NhbGl6ZWREZXNjcmlw
dGlvbl0gVVRGOFN0cmluZ10pOwotCi0gICAgICAgICAgICBtX2V4aXRDb21wbGV0ZWQgPSB0cnVl
OwotCi0gICAgICAgICAgICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07Ci0gICAgICAgICAgICBbQ0FU
cmFuc2FjdGlvbiBzZXREaXNhYmxlQWN0aW9uczpZRVNdOwotICAgICAgICAgICAgW21fcGxheWVy
TGF5ZXJWaWV3IHNldEJhY2tncm91bmRDb2xvcjpjbGVhclVJQ29sb3IoKV07Ci0gICAgICAgICAg
ICBbW21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10gc2V0QmFja2dyb3VuZENvbG9yOmNsZWFy
VUlDb2xvcigpXTsKLSAgICAgICAgICAgIFtDQVRyYW5zYWN0aW9uIGNvbW1pdF07Ci0KLSAgICAg
ICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0
ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgdGhpc10oKSB7Ci0gICAgICAgICAgICAg
ICAgaWYgKG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKQotICAgICAgICAgICAgICAgICAgICBt
X2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci0+ZGlkRXhpdEZ1bGxzY3JlZW4oKTsKLSAgICAgICAg
ICAgIH0pOwotICAgICAgICB9XTsKLSAgICB9OwotfQotCi12b2lkIFZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZUFWS2l0OjpjbGVhbnVwRnVsbHNjcmVlbigpCi17Ci0gICAgTE9HKEZ1bGxzY3JlZW4s
ICJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6Y2xlYW51cEZ1bGxzY3JlZW4oJXApIiwg
dGhpcyk7Ci0KLSAgICBpZiAobV93aW5kb3cpIHsKLSAgICAgICAgW21fd2luZG93IHNldEhpZGRl
bjpZRVNdOwotICAgICAgICBbbV93aW5kb3cgc2V0Um9vdFZpZXdDb250cm9sbGVyOm5pbF07Ci0g
ICAgfQotICAgIAotICAgIFttX3BsYXllclZpZXdDb250cm9sbGVyIHNldERlbGVnYXRlOm5pbF07
Ci0gICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIgc2V0UGxheWVyQ29udHJvbGxlcjpuaWxdOwot
ICAgIAotICAgIGlmIChtX2N1cnJlbnRNb2RlLmhhc1BpY3R1cmVJblBpY3R1cmUoKSkKLSAgICAg
ICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIgc3RvcFBpY3R1cmVJblBpY3R1cmVdOwotICAgIGlm
IChtX2N1cnJlbnRNb2RlLmhhc0Z1bGxzY3JlZW4oKSkgewotICAgICAgICBbW21fcGxheWVyVmll
d0NvbnRyb2xsZXIgdmlld10gbGF5b3V0SWZOZWVkZWRdOwotICAgICAgICBbbV9wbGF5ZXJWaWV3
Q29udHJvbGxlciBleGl0RnVsbFNjcmVlbkFuaW1hdGVkOk5PIGNvbXBsZXRpb25IYW5kbGVyOltd
IChCT09MIHN1Y2Nlc3MsIE5TRXJyb3IqIGVycm9yKSB7Ci0gICAgICAgICAgICBpZiAoIXN1Y2Nl
c3MpCi0gICAgICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCItW0FWUGxheWVyVmlld0NvbnRyb2xs
ZXIgZXhpdEZ1bGxTY3JlZW5BbmltYXRlZDpjb21wbGV0aW9uSGFuZGxlcjpdIGZhaWxlZCB3aXRo
IGVycm9yICVzIiwgW1tlcnJvciBsb2NhbGl6ZWREZXNjcmlwdGlvbl0gVVRGOFN0cmluZ10pOwot
ICAgICAgICB9XTsKLSAgICB9Ci0gICAgCi0gICAgW1ttX3BsYXllclZpZXdDb250cm9sbGVyIHZp
ZXddIHJlbW92ZUZyb21TdXBlcnZpZXddOwotICAgIGlmIChtX3ZpZXdDb250cm9sbGVyKQotICAg
ICAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciByZW1vdmVGcm9tUGFyZW50Vmlld0NvbnRyb2xs
ZXJdOwotICAgIAotICAgIFttX3BsYXllckxheWVyVmlldyByZW1vdmVGcm9tU3VwZXJ2aWV3XTsK
LSAgICBbW21fdmlld0NvbnRyb2xsZXIgdmlld10gcmVtb3ZlRnJvbVN1cGVydmlld107Ci0KLSAg
ICBtX3BsYXllckxheWVyVmlldyA9IG5pbDsKLSAgICBtX3BsYXllclZpZXdDb250cm9sbGVyID0g
bmlsOwotICAgIG1fd2luZG93ID0gbmlsOwotICAgIG1fdmlkZW9WaWV3ID0gbmlsOwotICAgIG1f
cGFyZW50VmlldyA9IG5pbDsKLSAgICBtX3BhcmVudFdpbmRvdyA9IG5pbDsKLSAgICAKLSAgICBp
ZiAobV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIpCi0gICAgICAgIG1fZnVsbHNjcmVlbkNoYW5n
ZU9ic2VydmVyLT5kaWRDbGVhbnVwRnVsbHNjcmVlbigpOwotCi0gICAgbV9lbnRlclJlcXVlc3Rl
ZCA9IGZhbHNlOwotfQotCi12b2lkIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpyZXF1
ZXN0SGlkZUFuZEV4aXRGdWxsc2NyZWVuKCkKLXsKLSAgICBpZiAoIW1fZW50ZXJSZXF1ZXN0ZWQp
Ci0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBpZiAobV9jdXJyZW50TW9kZS5oYXNQaWN0dXJl
SW5QaWN0dXJlKCkpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBMT0coRnVsbHNjcmVlbiwg
IlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpyZXF1ZXN0SGlkZUFuZEV4aXRGdWxsc2Ny
ZWVuKCVwKSIsIHRoaXMpOwotCi0gICAgW21fd2luZG93IHNldEhpZGRlbjpZRVNdOwotICAgIFtb
bV9wbGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3XSBzZXRIaWRkZW46WUVTXTsKLQotICAgIGlmICgh
bV9leGl0UmVxdWVzdGVkKSB7Ci0gICAgICAgIHBsYXliYWNrU2Vzc2lvbk1vZGVsKCkucGF1c2Uo
KTsKLSAgICAgICAgdmlkZW9GdWxsc2NyZWVuTW9kZWwoKS5yZXF1ZXN0RnVsbHNjcmVlbk1vZGUo
SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSk7Ci0gICAgfQot
fQotCi12b2lkIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpwcmVwYXJlZFRvUmV0dXJu
VG9JbmxpbmUoYm9vbCB2aXNpYmxlLCBjb25zdCBJbnRSZWN0JiBpbmxpbmVSZWN0KQotewotICAg
IExPRyhGdWxsc2NyZWVuLCAiVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnByZXBhcmVk
VG9SZXR1cm5Ub0lubGluZSglcCkgLSB2aXNpYmxlKCVzKSIsIHRoaXMsIGJvb2xTdHJpbmcodmlz
aWJsZSkpOwotICAgIGlmIChtX3ByZXBhcmVUb0lubGluZUNhbGxiYWNrKSB7Ci0gICAgICAgIFtt
X3BsYXllclZpZXdDb250cm9sbGVyIHZpZXddLmZyYW1lID0gW21fcGFyZW50VmlldyBjb252ZXJ0
UmVjdDppbmxpbmVSZWN0IHRvVmlldzpbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3XS5zdXBl
cnZpZXddOwotICAgICAgICBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+IGNhbGxiYWNrID0gV1RG
TW92ZShtX3ByZXBhcmVUb0lubGluZUNhbGxiYWNrKTsKLSAgICAgICAgY2FsbGJhY2sodmlzaWJs
ZSk7Ci0gICAgfQotfQotCi12b2lkIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpwcmVw
YXJlZFRvRXhpdEZ1bGxzY3JlZW4oKQotewotICAgIGlmICghbV93YWl0aW5nRm9yUHJlcGFyZWRU
b0V4aXQpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fd2FpdGluZ0ZvclByZXBhcmVkVG9FeGl0
ID0gZmFsc2U7Ci0gICAgdmlkZW9GdWxsc2NyZWVuTW9kZWwoKS5yZXF1ZXN0RnVsbHNjcmVlbk1v
ZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSwgdHJ1ZSk7
Ci19Ci0KLWJvb2wgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6Om1heUF1dG9tYXRpY2Fs
bHlTaG93VmlkZW9QaWN0dXJlSW5QaWN0dXJlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gW3BsYXll
ckNvbnRyb2xsZXIoKSBpc1BsYXlpbmddICYmIG1fY3VycmVudE1vZGUuaXNGdWxsc2NyZWVuKCkg
JiYgc3VwcG9ydHNQaWN0dXJlSW5QaWN0dXJlKCk7Ci19Ci0KLXZvaWQgVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQ6OmZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZShXVEY6OkZ1bmN0aW9u
PHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spCi17Ci0gICAgbV9wcmVwYXJlVG9JbmxpbmVDYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spOwotICAgIGlmIChtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZl
cikKLSAgICAgICAgbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXItPmZ1bGxzY3JlZW5NYXlSZXR1
cm5Ub0lubGluZSgpOwotfQotCi12b2lkIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojp3
aWxsU3RhcnRQaWN0dXJlSW5QaWN0dXJlKCkKLXsKLSAgICBMT0coRnVsbHNjcmVlbiwgIlZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojp3aWxsU3RhcnRQaWN0dXJlSW5QaWN0dXJlKCVwKSIs
IHRoaXMpOwotICAgIHNldE1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlUGljdHVyZUluUGljdHVyZSk7Ci0gICAgdmlkZW9GdWxsc2NyZWVuTW9kZWwoKS53aWxs
RW50ZXJQaWN0dXJlSW5QaWN0dXJlKCk7Ci19Ci0KLXZvaWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlQVZLaXQ6OmRpZFN0YXJ0UGljdHVyZUluUGljdHVyZSgpCi17Ci0gICAgTE9HKEZ1bGxzY3Jl
ZW4sICJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZGlkU3RhcnRQaWN0dXJlSW5QaWN0
dXJlKCVwKSIsIHRoaXMpOwotICAgIG1fc2hvdWxkUmV0dXJuVG9GdWxsc2NyZWVuQWZ0ZXJFbnRl
cmluZ0ZvcmVncm91bmQgPSBwaWN0dXJlSW5QaWN0dXJlV2FzU3RhcnRlZFdoZW5FbnRlcmluZ0Jh
Y2tncm91bmQoKTsKLSAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciBzZXRTaG93c1BsYXliYWNr
Q29udHJvbHM6WUVTXTsKLQotICAgIGlmIChtX2N1cnJlbnRNb2RlLmhhc0Z1bGxzY3JlZW4oKSkg
ewotICAgICAgICBpZiAoIXBpY3R1cmVJblBpY3R1cmVXYXNTdGFydGVkV2hlbkVudGVyaW5nQmFj
a2dyb3VuZCgpKSB7Ci0gICAgICAgICAgICBbW21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10g
bGF5b3V0SWZOZWVkZWRdOwotICAgICAgICAgICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIgZXhp
dEZ1bGxTY3JlZW5BbmltYXRlZDpZRVMgY29tcGxldGlvbkhhbmRsZXI6W3Byb3RlY3RlZFRoaXMg
PSBtYWtlUmVmUHRyKHRoaXMpLCB0aGlzXSAoQk9PTCBzdWNjZXNzLCBOU0Vycm9yKiBlcnJvcikg
ewotICAgICAgICAgICAgICAgIGlmICghc3VjY2VzcykKLSAgICAgICAgICAgICAgICAgICAgV1RG
TG9nQWx3YXlzKCItW0FWUGxheWVyVmlld0NvbnRyb2xsZXIgZXhpdEZ1bGxTY3JlZW5BbmltYXRl
ZDpjb21wbGV0aW9uSGFuZGxlcjpdIGZhaWxlZCB3aXRoIGVycm9yICVzIiwgW1tlcnJvciBsb2Nh
bGl6ZWREZXNjcmlwdGlvbl0gVVRGOFN0cmluZ10pOwotICAgICAgICAgICAgICAgIFttX3dpbmRv
dyBzZXRIaWRkZW46WUVTXTsKLSAgICAgICAgICAgICAgICBbW21fcGxheWVyVmlld0NvbnRyb2xs
ZXIgdmlld10gc2V0SGlkZGVuOllFU107Ci0gICAgICAgICAgICB9XTsKLSAgICAgICAgfQotICAg
IH0gZWxzZSB7Ci0gICAgICAgIFttX3dpbmRvdyBzZXRIaWRkZW46WUVTXTsKLSAgICAgICAgW1tt
X3BsYXllclZpZXdDb250cm9sbGVyIHZpZXddIHNldEhpZGRlbjpZRVNdOwotICAgIH0KLQotICAg
IGlmIChtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcikKLSAgICAgICAgbV9mdWxsc2NyZWVuQ2hh
bmdlT2JzZXJ2ZXItPmRpZEVudGVyRnVsbHNjcmVlbigpOwotICAgIHZpZGVvRnVsbHNjcmVlbk1v
ZGVsKCkuZGlkRW50ZXJQaWN0dXJlSW5QaWN0dXJlKCk7Ci19Ci0KLXZvaWQgVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlQVZLaXQ6OmZhaWxlZFRvU3RhcnRQaWN0dXJlSW5QaWN0dXJlKCkKLXsKLSAg
ICBMT0coRnVsbHNjcmVlbiwgIlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpmYWlsZWRU
b1N0YXJ0UGljdHVyZUluUGljdHVyZSglcCkiLCB0aGlzKTsKLSAgICBbbV9wbGF5ZXJWaWV3Q29u
dHJvbGxlciBzZXRTaG93c1BsYXliYWNrQ29udHJvbHM6WUVTXTsKLQotICAgIGlmIChtX2N1cnJl
bnRNb2RlLmhhc0Z1bGxzY3JlZW4oKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9leGl0Q29t
cGxldGVkID0gdHJ1ZTsKLQotICAgIGlmIChtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcikKLSAg
ICAgICAgbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXItPmRpZEVudGVyRnVsbHNjcmVlbigpOwot
ICAgIHZpZGVvRnVsbHNjcmVlbk1vZGVsKCkuZmFpbGVkVG9FbnRlclBpY3R1cmVJblBpY3R1cmUo
KTsKLSAgICB2aWRlb0Z1bGxzY3JlZW5Nb2RlbCgpLnJlcXVlc3RGdWxsc2NyZWVuTW9kZShIVE1M
TWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsKLX0KLQotdm9pZCBW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6d2lsbFN0b3BQaWN0dXJlSW5QaWN0dXJlKCkK
LXsKLSAgICBMT0coRnVsbHNjcmVlbiwgIlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojp3
aWxsU3RvcFBpY3R1cmVJblBpY3R1cmUoJXApIiwgdGhpcyk7Ci0KLSAgICBtX3Nob3VsZFJldHVy
blRvRnVsbHNjcmVlbldoZW5TdG9wcGluZ1BpUCA9IGZhbHNlOwotICAgIG1fc2hvdWxkUmV0dXJu
VG9GdWxsc2NyZWVuQWZ0ZXJFbnRlcmluZ0ZvcmVncm91bmQgPSBmYWxzZTsKLQotICAgIGlmICht
X2N1cnJlbnRNb2RlLmhhc0Z1bGxzY3JlZW4oKSB8fCBtX3Jlc3RvcmluZ0Z1bGxzY3JlZW5Gb3JQ
aWN0dXJlSW5QaWN0dXJlU3RvcCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgW21fd2luZG93IHNl
dEhpZGRlbjpOT107Ci0gICAgW1ttX3BsYXllclZpZXdDb250cm9sbGVyIHZpZXddIHNldEhpZGRl
bjpOT107Ci0KLSAgICB2aWRlb0Z1bGxzY3JlZW5Nb2RlbCgpLnJlcXVlc3RGdWxsc2NyZWVuTW9k
ZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsKLSAgICB2
aWRlb0Z1bGxzY3JlZW5Nb2RlbCgpLndpbGxFeGl0UGljdHVyZUluUGljdHVyZSgpOwotfQotCi12
b2lkIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpkaWRTdG9wUGljdHVyZUluUGljdHVy
ZSgpCi17Ci0gICAgTE9HKEZ1bGxzY3JlZW4sICJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktp
dDo6ZGlkU3RvcFBpY3R1cmVJblBpY3R1cmUoJXApIiwgdGhpcyk7Ci0KLSAgICBpZiAobV9jdXJy
ZW50TW9kZS5oYXNGdWxsc2NyZWVuKCkgfHwgbV9yZXN0b3JpbmdGdWxsc2NyZWVuRm9yUGljdHVy
ZUluUGljdHVyZVN0b3ApIHsKLSAgICAgICAgY2xlYXJNb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVt
czo6VmlkZW9GdWxsc2NyZWVuTW9kZVBpY3R1cmVJblBpY3R1cmUpOwotICAgICAgICBbbV9wbGF5
ZXJWaWV3Q29udHJvbGxlciBzZXRTaG93c1BsYXliYWNrQ29udHJvbHM6WUVTXTsKLQotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgbV9leGl0Q29tcGxldGVkID0gdHJ1ZTsKLQotICAgIFtt
X3BsYXllckxheWVyVmlldyBzZXRCYWNrZ3JvdW5kQ29sb3I6Y2xlYXJVSUNvbG9yKCldOwotICAg
IFtbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3XSBzZXRCYWNrZ3JvdW5kQ29sb3I6Y2xlYXJV
SUNvbG9yKCldOwotCi0gICAgY2xlYXJNb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9G
dWxsc2NyZWVuTW9kZVBpY3R1cmVJblBpY3R1cmUpOwotCi0gICAgaWYgKG1fZnVsbHNjcmVlbkNo
YW5nZU9ic2VydmVyKQotICAgICAgICBtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci0+ZGlkRXhp
dEZ1bGxzY3JlZW4oKTsKLSAgICB2aWRlb0Z1bGxzY3JlZW5Nb2RlbCgpLmRpZEV4aXRQaWN0dXJl
SW5QaWN0dXJlKCk7Ci19Ci0KLXZvaWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnBy
ZXBhcmVGb3JQaWN0dXJlSW5QaWN0dXJlU3RvcFdpdGhDb21wbGV0aW9uSGFuZGxlcih2b2lkIChe
Y29tcGxldGlvbkhhbmRsZXIpKEJPT0wgcmVzdG9yZWQpKQotewotICAgIExPRyhGdWxsc2NyZWVu
LCAiVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnByZXBhcmVGb3JQaWN0dXJlSW5QaWN0
dXJlU3RvcFdpdGhDb21wbGV0aW9uSGFuZGxlciglcCkiLCB0aGlzKTsKLSAgICBpZiAobV9zaG91
bGRSZXR1cm5Ub0Z1bGxzY3JlZW5XaGVuU3RvcHBpbmdQaVAgfHwgbV9zaG91bGRSZXR1cm5Ub0Z1
bGxzY3JlZW5BZnRlckVudGVyaW5nRm9yZWdyb3VuZCkgewotCi0gICAgICAgIG1fc2hvdWxkUmV0
dXJuVG9GdWxsc2NyZWVuQWZ0ZXJFbnRlcmluZ0ZvcmVncm91bmQgPSBmYWxzZTsKLSAgICAgICAg
bV9zaG91bGRSZXR1cm5Ub0Z1bGxzY3JlZW5XaGVuU3RvcHBpbmdQaVAgPSBmYWxzZTsKLSAgICAg
ICAgbV9yZXN0b3JpbmdGdWxsc2NyZWVuRm9yUGljdHVyZUluUGljdHVyZVN0b3AgPSB0cnVlOwot
Ci0gICAgICAgIFttX3dpbmRvdyBzZXRIaWRkZW46Tk9dOwotICAgICAgICBbW21fcGxheWVyVmll
d0NvbnRyb2xsZXIgdmlld10gc2V0SGlkZGVuOk5PXTsKLQotICAgICAgICBbW21fcGxheWVyVmll
d0NvbnRyb2xsZXIgdmlld10gbGF5b3V0SWZOZWVkZWRdOwotICAgICAgICBbbV9wbGF5ZXJWaWV3
Q29udHJvbGxlciBlbnRlckZ1bGxTY3JlZW5BbmltYXRlZDpZRVMgY29tcGxldGlvbkhhbmRsZXI6
XihCT09MIHN1Y2NlZWRlZCwgTlNFcnJvciAqZXJyb3IpIHsKLSAgICAgICAgICAgIGlmICghc3Vj
Y2VlZGVkKQotICAgICAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiLVtBVlBsYXllclZpZXdDb250
cm9sbGVyIGVudGVyRnVsbFNjcmVlbkFuaW1hdGVkOmNvbXBsZXRpb25IYW5kbGVyOl0gZmFpbGVk
IHdpdGggZXJyb3IgJXMiLCBbW2Vycm9yIGxvY2FsaXplZERlc2NyaXB0aW9uXSBVVEY4U3RyaW5n
XSk7Ci0KLSAgICAgICAgICAgIG1fcmVzdG9yaW5nRnVsbHNjcmVlbkZvclBpY3R1cmVJblBpY3R1
cmVTdG9wID0gZmFsc2U7Ci0gICAgICAgICAgICBzZXRNb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVt
czo6VmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkKTsKLSAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKHN1Y2NlZWRlZCk7Ci0gICAgICAgICAgICBpZiAobV9mdWxsc2NyZWVuQ2hhbmdlT2Jz
ZXJ2ZXIpCi0gICAgICAgICAgICAgICAgbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXItPmRpZEVu
dGVyRnVsbHNjcmVlbigpOwotICAgICAgICB9XTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIGZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZShbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQ
dHIodGhpcyksIHN0cm9uZ0NvbXBsZXRpb25IYW5kbGVyID0gYWRvcHROUyhbY29tcGxldGlvbkhh
bmRsZXIgY29weV0pXShib29sIHJlc3RvcmVkKSAgewotICAgICAgICBMT0coRnVsbHNjcmVlbiwg
IlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpwcmVwYXJlRm9yUGljdHVyZUluUGljdHVy
ZVN0b3BXaXRoQ29tcGxldGlvbkhhbmRsZXIgbGFtYmRhKCVwKSAtIHJlc3RvcmVkKCVzKSIsIHBy
b3RlY3RlZFRoaXMuZ2V0KCksIGJvb2xTdHJpbmcocmVzdG9yZWQpKTsKLSAgICAgICAgKCh2b2lk
ICheKShCT09MKSlzdHJvbmdDb21wbGV0aW9uSGFuZGxlci5nZXQoKSkocmVzdG9yZWQpOwotICAg
IH0pOwotfQotCi1ib29sIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzaG91bGRFeGl0
RnVsbHNjcmVlbldpdGhSZWFzb24oVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OkV4aXRG
dWxsU2NyZWVuUmVhc29uIHJlYXNvbikKLXsKLSAgICBpZiAocmVhc29uID09IEV4aXRGdWxsU2Ny
ZWVuUmVhc29uOjpQaWN0dXJlSW5QaWN0dXJlU3RhcnRlZCkgewotICAgICAgICBpZiAocGljdHVy
ZUluUGljdHVyZVdhc1N0YXJ0ZWRXaGVuRW50ZXJpbmdCYWNrZ3JvdW5kKCkpCi0gICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgbV9zaG91bGRSZXR1cm5Ub0Z1bGxzY3JlZW5XaGVu
U3RvcHBpbmdQaVAgPSBtX2N1cnJlbnRNb2RlLmhhc0Z1bGxzY3JlZW4oKTsKLSAgICAgICAgY2xl
YXJNb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJk
KTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgaWYgKHJlYXNvbiA9PSBFeGl0
RnVsbFNjcmVlblJlYXNvbjo6RG9uZUJ1dHRvblRhcHBlZCB8fCByZWFzb24gPT0gRXhpdEZ1bGxT
Y3JlZW5SZWFzb246OlJlbW90ZUNvbnRyb2xTdG9wRXZlbnRSZWNlaXZlZCkKLSAgICAgICAgcGxh
eWJhY2tTZXNzaW9uTW9kZWwoKS5wYXVzZSgpOwotCi0gICAgaWYgKCFtX3dhdGNoZG9nVGltZXIu
aXNBY3RpdmUoKSAmJiAhaWdub3JlV2F0Y2hkb2dGb3JEZWJ1Z2dpbmcpCi0gICAgICAgIG1fd2F0
Y2hkb2dUaW1lci5zdGFydE9uZVNob3QoZGVmYXVsdFdhdGNoZG9nVGltZXJJbnRlcnZhbCk7Ci0K
LSNpZiBQTEFURk9STShXQVRDSE9TKQotICAgIGlmIChtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZl
cikgewotICAgICAgICBtX3dhaXRpbmdGb3JQcmVwYXJlZFRvRXhpdCA9IHRydWU7Ci0gICAgICAg
IG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLT53aWxsRXhpdEZ1bGxzY3JlZW4oKTsKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSNlbmRpZgotCi0gICAgQk9PTCBmaW5pc2hlZCA9IHJl
YXNvbiA9PSBFeGl0RnVsbFNjcmVlblJlYXNvbjo6RG9uZUJ1dHRvblRhcHBlZCB8fCByZWFzb24g
PT0gRXhpdEZ1bGxTY3JlZW5SZWFzb246OlBpbmNoR2VzdHVyZUhhbmRsZWQ7Ci0gICAgdmlkZW9G
dWxsc2NyZWVuTW9kZWwoKS5yZXF1ZXN0RnVsbHNjcmVlbk1vZGUoSFRNTE1lZGlhRWxlbWVudEVu
dW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSwgZmluaXNoZWQpOwotCi0gICAgcmV0dXJuIGZh
bHNlOwotfQotCi0jZWxzZSAvLyBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0KIHZvaWQgVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCkKIHsK
ICAgICBMT0coRnVsbHNjcmVlbiwgIlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjphcHBs
aWNhdGlvbkRpZEJlY29tZUFjdGl2ZSglcCkiLCB0aGlzKTsKQEAgLTEzNzUsNiArOTE2LDEzIEBA
IHZvaWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnByZXBhcmVkVG9SZXR1cm5Ub0lu
bGluZShib29sIHZpc2libGUsIGNvbnN0CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
QVZLaXQ6OnByZXBhcmVkVG9FeGl0RnVsbHNjcmVlbigpCiB7CisjaWYgUExBVEZPUk0oV0FUQ0hP
UykKKyAgICBpZiAoIW1fd2FpdGluZ0ZvclByZXBhcmVkVG9FeGl0KQorICAgICAgICByZXR1cm47
CisKKyAgICBtX3dhaXRpbmdGb3JQcmVwYXJlZFRvRXhpdCA9IGZhbHNlOworICAgIG1fdmlkZW9G
dWxsc2NyZWVuTW9kZWwtPnJlcXVlc3RGdWxsc2NyZWVuTW9kZShIVE1MTWVkaWFFbGVtZW50RW51
bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25lLCB0cnVlKTsKKyNlbmRpZgogfQogCiBib29sIFZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjptYXlBdXRvbWF0aWNhbGx5U2hvd1ZpZGVvUGlj
dHVyZUluUGljdHVyZSgpIGNvbnN0CkBAIC0xNTE5LDEyICsxMDY3LDIwIEBAIGJvb2wgVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNob3VsZEV4aXRGdWxsc2NyZWVuV2l0aFJlYXNvbihW
aWRlb0Z1bGxzY3JlCiAgICAgaWYgKHJlYXNvbiA9PSBFeGl0RnVsbFNjcmVlblJlYXNvbjo6RG9u
ZUJ1dHRvblRhcHBlZCB8fCByZWFzb24gPT0gRXhpdEZ1bGxTY3JlZW5SZWFzb246OlJlbW90ZUNv
bnRyb2xTdG9wRXZlbnRSZWNlaXZlZCkKICAgICAgICAgcGxheWJhY2tTZXNzaW9uTW9kZWwoKS5w
YXVzZSgpOwogCi0gICAgQk9PTCBmaW5pc2hlZCA9IHJlYXNvbiA9PSBFeGl0RnVsbFNjcmVlblJl
YXNvbjo6RG9uZUJ1dHRvblRhcHBlZCB8fCByZWFzb24gPT0gRXhpdEZ1bGxTY3JlZW5SZWFzb246
OlBpbmNoR2VzdHVyZUhhbmRsZWQ7Ci0gICAgdmlkZW9GdWxsc2NyZWVuTW9kZWwoKS5yZXF1ZXN0
RnVsbHNjcmVlbk1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2Rl
Tm9uZSwgZmluaXNoZWQpOwotCiAgICAgaWYgKCFtX3dhdGNoZG9nVGltZXIuaXNBY3RpdmUoKSAm
JiAhaWdub3JlV2F0Y2hkb2dGb3JEZWJ1Z2dpbmcpCiAgICAgICAgIG1fd2F0Y2hkb2dUaW1lci5z
dGFydE9uZVNob3QoZGVmYXVsdFdhdGNoZG9nVGltZXJJbnRlcnZhbCk7CiAKKyNpZiBQTEFURk9S
TShXQVRDSE9TKQorICAgIGlmIChtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcikgeworICAgICAg
ICBtX3dhaXRpbmdGb3JQcmVwYXJlZFRvRXhpdCA9IHRydWU7CisgICAgICAgIG1fZnVsbHNjcmVl
bkNoYW5nZU9ic2VydmVyLT53aWxsRXhpdEZ1bGxzY3JlZW4oKTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKyNlbmRpZgorICAgIAorICAgIEJPT0wgZmluaXNoZWQgPSByZWFzb24gPT0g
RXhpdEZ1bGxTY3JlZW5SZWFzb246OkRvbmVCdXR0b25UYXBwZWQgfHwgcmVhc29uID09IEV4aXRG
dWxsU2NyZWVuUmVhc29uOjpQaW5jaEdlc3R1cmVIYW5kbGVkOworICAgIHZpZGVvRnVsbHNjcmVl
bk1vZGVsKCkucmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6Vmlk
ZW9GdWxsc2NyZWVuTW9kZU5vbmUsIGZpbmlzaGVkKTsKKwogICAgIHJldHVybiBmYWxzZTsKIH0K
IApAQCAtMTgxOCw4ICsxMzc0LDYgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktp
dDo6cmV0dXJuVG9TdGFuZGJ5KCkKICAgICBbW21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10g
c2V0SGlkZGVuOllFU107CiB9CiAKLSNlbmRpZiAvLyBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0K
IE5PX1JFVFVSTl9EVUVfVE9fQVNTRVJUIHZvaWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQ6OndhdGNoZG9nVGltZXJGaXJlZCgpCiB7CiAgICAgTE9HKEZ1bGxzY3JlZW4sICJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6d2F0Y2hkb2dUaW1lckZpcmVkKCVwKSAtIG5vIGV4aXQg
ZnVsbHNjcmVlbiByZXNwb25zZSBpbiAlZ3M7IGZvcmNpbmcgZnVsbHNjcmVlbiBoaWRkZW4uIiwg
dGhpcywgZGVmYXVsdFdhdGNoZG9nVGltZXJJbnRlcnZhbC52YWx1ZSgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
QVZLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVu
Q29udHJvbGxlckFWS2l0Lm1tCmluZGV4IGI3MDVhYjNiNmE0ZDg0MThkYTM5NDFlOGZkYmY3OTk0
YWI0YzY1ZWIuLjMxNjFmYzk4YjNmYWM4ZjViNzY3ZWEyOGM4YjY1MjJkNDY5ZGJkOTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250
cm9sbGVyQVZLaXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVv
RnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbQpAQCAtMjM0LDcgKzIzNCw3IEBAIHByaXZhdGU6
CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnJlcXVlc3RVcGRhdGVJ
bmxpbmVSZWN0KCkKIHsKLSNpZiBQTEFURk9STShJT1MpICYmIEVOQUJMRShGVUxMU0NSRUVOX0FQ
SSkKKyNpZiBQTEFURk9STShJT1MpCiAgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7CiAgICAgV2Vi
VGhyZWFkUnVuKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgdGhpc10gKCkgbXV0
YWJsZSB7CiAgICAgICAgIEludFJlY3QgY2xpZW50UmVjdCA9IGVsZW1lbnRSZWN0SW5XaW5kb3co
bV92aWRlb0VsZW1lbnQuZ2V0KCkpOwpAQCAtMjQ5LDcgKzI0OSw3IEBAIHZvaWQgVmlkZW9GdWxs
c2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnJlcXVlc3RVcGRhdGVJbmxpbmVSZWN0KCkKIAogdm9p
ZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6cmVxdWVzdFZpZGVvQ29udGVudExh
eWVyKCkKIHsKLSNpZiBQTEFURk9STShJT1MpICYmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKyNp
ZiBQTEFURk9STShJT1MpCiAgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7CiAgICAgV2ViVGhyZWFk
UnVuKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgdGhpcywgdmlkZW9GdWxsc2Ny
ZWVuTGF5ZXIgPSByZXRhaW5QdHIoW21fdmlkZW9GdWxsc2NyZWVuVmlldyBsYXllcl0pXSAoKSBt
dXRhYmxlIHsKICAgICAgICAgW3ZpZGVvRnVsbHNjcmVlbkxheWVyIHNldEJhY2tncm91bmRDb2xv
cjpjYWNoZWRDR0NvbG9yKFdlYkNvcmU6OkNvbG9yOjp0cmFuc3BhcmVudCldOwpAQCAtMjY2LDcg
KzI2Niw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnJlcXVlc3RW
aWRlb0NvbnRlbnRMYXllcigpCiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRl
eHQ6OnJldHVyblZpZGVvQ29udGVudExheWVyKCkKIHsKLSNpZiBQTEFURk9STShJT1MpICYmIEVO
QUJMRShGVUxMU0NSRUVOX0FQSSkKKyNpZiBQTEFURk9STShJT1MpCiAgICAgQVNTRVJUKGlzVUlU
aHJlYWQoKSk7CiAgICAgV2ViVGhyZWFkUnVuKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0
aGlzKSwgdGhpcywgdmlkZW9GdWxsc2NyZWVuTGF5ZXIgPSByZXRhaW5QdHIoW21fdmlkZW9GdWxs
c2NyZWVuVmlldyBsYXllcl0pXSAoKSBtdXRhYmxlIHsKICAgICAgICAgW3ZpZGVvRnVsbHNjcmVl
bkxheWVyIHNldEJhY2tncm91bmRDb2xvcjpjYWNoZWRDR0NvbG9yKFdlYkNvcmU6OkNvbG9yOjp0
cmFuc3BhcmVudCldOwpAQCAtMjg0LDcgKzI4NCw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlckNvbnRleHQ6OnJldHVyblZpZGVvQ29udGVudExheWVyKCkKIHZvaWQgVmlkZW9GdWxs
c2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmRpZFNldHVwRnVsbHNjcmVlbigpCiB7CiAgICAgQVNT
RVJUKGlzVUlUaHJlYWQoKSk7Ci0jaWYgUExBVEZPUk0oSU9TKSAmJiBFTkFCTEUoRlVMTFNDUkVF
Tl9BUEkpCisjaWYgUExBVEZPUk0oSU9TKQogICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dl
dF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgdGhpc10g
ewogICAgICAgICBtX2ludGVyZmFjZS0+ZW50ZXJGdWxsc2NyZWVuKCk7CiAgICAgfSk7CkBAIC0z
MTMsNyArMzEzLDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6d2ls
bEV4aXRGdWxsc2NyZWVuKCkKIHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6
OmRpZEV4aXRGdWxsc2NyZWVuKCkKIHsKICAgICBBU1NFUlQoaXNVSVRocmVhZCgpKTsKLSNpZiBQ
TEFURk9STShJT1MpICYmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKyNpZiBQTEFURk9STShJT1Mp
CiAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB0aGlzXSB7CiAgICAgICAgIG1faW50ZXJmYWNlLT5j
bGVhbnVwRnVsbHNjcmVlbigpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tCmluZGV4
IDhlMjA0MjZiYzZmOWE0NTY2ZDgwMzFiOWM1ZTJhMWRiMTYwNTYzZTYuLmNmMDM2NzM0OWI3MDQ1
MzVmMTE2ZGI0NGU0MmQ5MjY2NWU5Yjg2NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0KQEAg
LTU0MSw3ICs1NDEsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZXhpdEZ1
bGxzY3JlZW5XaXRob3V0QW5pbWF0aW9uVG9Nb2RlKHVpbnQ2NF90CiB9CiAjZW5kaWYKIAotI2lm
IFBMQVRGT1JNKElPUykgJiYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorI2lmIFBMQVRGT1JNKElP
UykKIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnNldElubGluZVJlY3QodWlu
dDY0X3QgY29udGV4dElkLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBpbmxpbmVSZWN0LCBib29s
IHZpc2libGUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2Ev
VmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2Nv
YS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCmluZGV4IDgxNGUyYzhmMWY2NTQ5OGYzYWQ2ZDAz
NTE1ZTY5ZmE4NTJjNTc5ZmEuLmY4N2JlNmMyNjEwN2RkZjA3MzdjZGU3MDc3YTFmZmYwYTBlOGE1
MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCkBAIC0yMjgsNyArMjI4LDcgQEAgYm9vbCBWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlbihXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50RW4KIAogYm9vbCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVs
bHNjcmVlblN0YW5kYnkoKSBjb25zdAogewotI2lmIFBMQVRGT1JNKElPUykgJiYgRU5BQkxFKEZV
TExTQ1JFRU5fQVBJKQorI2lmIFBMQVRGT1JNKElPUykKICAgICByZXR1cm4gdHJ1ZTsKICNlbHNl
CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDA2LDcgKzQwNiw3IEBAIHZvaWQgVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlcjo6ZGlkU2V0dXBGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICBS
ZWZQdHI8VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dD4gaW50ZXJmYWNlOwogICAgIHN0
ZDo6dGllKG1vZGVsLCBpbnRlcmZhY2UpID0gZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2UoY29udGV4
dElkKTsKIAotI2lmIFBMQVRGT1JNKElPUykgJiYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorI2lm
IFBMQVRGT1JNKElPUykKICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1
ZSgpLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIHRoaXMsIGNvbnRleHRJZF0g
ewogICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+bV9wYWdlKQogICAgICAgICAgICAgbV9wYWdl
LT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkVudGVyRnVsbHNj
cmVlbihjb250ZXh0SWQpLCBwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UtPnBhZ2VJRCgpKTsKQEAgLTQ3
OSw3ICs0NzksNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZEV4aXRGdWxsc2Ny
ZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlQ29udGV4dD4gaW50ZXJmYWNlOwogICAgIHN0ZDo6dGllKG1vZGVsLCBpbnRlcmZhY2UpID0g
ZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2UoY29udGV4dElkKTsKIAotI2lmIFBMQVRGT1JNKElPUykg
JiYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorI2lmIFBMQVRGT1JNKElPUykKICAgICBkaXNwYXRj
aF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWZQdHIodGhpcyksIGNvbnRleHRJZCwgaW50ZXJmYWNlXSB7CiAgICAgICAgIGlmIChwcm90ZWN0
ZWRUaGlzLT5tX3BhZ2UpCiAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UtPnNlbmQo
TWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6Q2xlYW51cEZ1bGxzY3JlZW4o
Y29udGV4dElkKSwgcHJvdGVjdGVkVGhpcy0+bV9wYWdlLT5wYWdlSUQoKSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>