<?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>191231</bug_id>
          
          <creation_ts>2018-11-03 19:09:36 -0700</creation_ts>
          <short_desc>[Cocoa] Fold common UIScriptController functionality on macOS and iOS into UIScriptControllerCocoa.mm</short_desc>
          <delta_ts>2018-11-04 13:20:18 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>aestes</cc>
    
    <cc>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>lforschler</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1474838</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-11-03 19:09:36 -0700</bug_when>
    <thetext>SSIA — just cleaning up some duplicated code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1474840</commentid>
    <comment_count>1</comment_count>
      <attachid>353791</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-11-03 19:51:40 -0700</bug_when>
    <thetext>Created attachment 353791
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1474842</commentid>
    <comment_count>2</comment_count>
      <attachid>353793</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-11-03 19:57:09 -0700</bug_when>
    <thetext>Created attachment 353793
Fix a typo</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1474895</commentid>
    <comment_count>3</comment_count>
      <attachid>353793</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-11-04 12:14:30 -0800</bug_when>
    <thetext>Comment on attachment 353793
Fix a typo

View in context: https://bugs.webkit.org/attachment.cgi?id=353793&amp;action=review

Thanks for the review!

&gt; Tools/WebKitTestRunner/UIScriptControllerCocoa.mm:146
&gt; +    TestRunnerWKWebView *webView = TestController::singleton().mainWebView()-&gt;platformView();
&gt; +    [webView _findString:toWTFString(toWK(string)) options:options maxCount:maxCount];

(Oops, this should be guarded under `WK_API_ENABLED` to fix the 32-bit build)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1474897</commentid>
    <comment_count>4</comment_count>
      <attachid>353806</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-11-04 12:21:01 -0800</bug_when>
    <thetext>Created attachment 353806
Patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1474901</commentid>
    <comment_count>5</comment_count>
      <attachid>353806</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-04 13:19:51 -0800</bug_when>
    <thetext>Comment on attachment 353806
Patch for EWS

Clearing flags on attachment: 353806

Committed r237786: &lt;https://trac.webkit.org/changeset/237786&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1474902</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-04 13:19:53 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1474903</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-11-04 13:20:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/45794523&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353791</attachid>
            <date>2018-11-03 19:51:40 -0700</date>
            <delta_ts>2018-11-03 19:57:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191231-20181103195139.patch</filename>
            <type>text/plain</type>
            <size>16505</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3NzQzCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOGMzNTYyZWViMmVjYTMzZWFhMjhmMzZlNjdjNDNmNTBk
NGQzZmNlNC4uYjQxYjg0NzQwNDM5YTE5MDg1NGI0N2VkZjE1YjMyYWRmOTcyZmE0ZSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4
IEBACisyMDE4LTExLTAzICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgor
CisgICAgICAgIFtDb2NvYV0gRm9sZCBjb21tb24gVUlTY3JpcHRDb250cm9sbGVyIGZ1bmN0aW9u
YWxpdHkgb24gbWFjT1MgYW5kIGlPUyBpbnRvIFVJU2NyaXB0Q29udHJvbGxlckNvY29hLm1tCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTEyMzEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlcyBzb21l
IFVJU2NyaXB0Q29udHJvbGxlciBtZXRob2QgaW1wbGVtZW50YXRpb25zIHNwZWNpZmljIHRvIGlP
UyBhbmQgbWFjT1MgaW50byBVSVNjcmlwdENvbnRyb2xsZXJDb2NvYSwgc28KKyAgICAgICAgaXQg
Y2FuIGJlIHNoYXJlZCBiZXR3ZWVuIGlPUy1mYW1pbHkgYW5kIG1hY09TIHBsYXRmb3Jtcy4gU2Vl
IGJlbG93IGZvciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAgTm8gY2hhbmdlIGluIGJlaGF2aW9y
LgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5t
bToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjpvdmVycmlkZVByZWZlcmVuY2Up
OgorCisgICAgICAgIEFkZCBhIG1ldGhvZCBzdHViIGZvciBEdW1wUmVuZGVyVHJlZS4KKworICAg
ICAgICAqIFRlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxl
ci5jcHA6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9VSVNjcmlwdENvbnRyb2xsZXJDb2Nv
YS5tbToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjpkb0FzeW5jVGFzayk6Cisg
ICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6c2V0U2hhcmVTaGVldENvbXBsZXRlc0lt
bWVkaWF0ZWx5V2l0aFJlc29sdXRpb24pOgorCisgICAgICAgIFVuaWZ5IHRoZXNlIG1ldGhvZCBp
bXBsZW1lbnRhdGlvbnMuCisKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjpyZW1v
dmVWaWV3RnJvbVdpbmRvdyk6CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6YWRk
Vmlld1RvV2luZG93KToKKworICAgICAgICBNb3ZlIHRoZSBtYWNPUyBpbXBsZW1lbnRhdGlvbiB0
byBVSVNjcmlwdENvbnRyb2xsZXJDb2NvYS4gT24gaU9TLCB0aGlzIG1ldGhvZCBjdXJyZW50bHkg
b25seSBhZGRzIHRoZSB3ZWIgdmlldworICAgICAgICB0byB0aGUgd2luZG93LCBhbmQgZG9lcyBu
b3QgYXR0ZW1wdCB0byBpbnZva2UgdGhlIGdpdmVuIGNvbXBsZXRpb24gYmxvY2s7IGFkZGl0aW9u
YWxseSwgaW52b2tpbmcgdGhlIGNvbXBsZXRpb24KKyAgICAgICAgYmxvY2sgYWZ0ZXIgYSBwcmVz
ZW50YXRpb24gdXBkYXRlIChhcyBkb25lIG9uIG1hY09TKSBicmVha3MgYW4gZXhpc3RpbmcgbGF5
b3V0IHRlc3QsCisgICAgICAgIHBhZ2VvdmVybGF5L292ZXJsYXktcmVtb3ZlLXJlaW5zZXJ0LXZp
ZXcuaHRtbCwgdG8gYmVnaW4gZmFpbGluZyBjb25zaXN0ZW50bHkuIFRoaXMgcGF0Y2ggZG9lcyBu
b3QgYXR0ZW1wdCB0bworICAgICAgICBjaGFuZ2UgYmVoYXZpb3IsIGJ1dCBhZGRzIGEgRklYTUUg
ZGVzY3JpYmluZyB0aGlzLgorCisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6b3Zl
cnJpZGVQcmVmZXJlbmNlKToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjpmaW5k
U3RyaW5nKToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjpjb250ZW50c09mVXNl
ckludGVyZmFjZUl0ZW0gY29uc3QpOgorCisgICAgICAgIE1vdmUgdGhlc2UgZnJvbSBVSVNjcmlw
dENvbnRyb2xsZXJNYWMgdG8gVUlTY3JpcHRDb250cm9sbGVyQ29jb2EsIHNvIHRoYXQgaXQgaXMg
bm93IGltcGxlbWVudGVkIG9uIGlPUyBhcyB3ZWxsLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tOgorICAgICAgICAoV1RSOjpVSVNjcmlw
dENvbnRyb2xsZXI6OmRvQXN5bmNUYXNrKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6VUlTY3Jp
cHRDb250cm9sbGVyOjpzZXRTaGFyZVNoZWV0Q29tcGxldGVzSW1tZWRpYXRlbHlXaXRoUmVzb2x1
dGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6Y29udGVu
dHNPZlVzZXJJbnRlcmZhY2VJdGVtIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6VUlT
Y3JpcHRDb250cm9sbGVyOjpmaW5kU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6VUlT
Y3JpcHRDb250cm9sbGVyOjpyZW1vdmVWaWV3RnJvbVdpbmRvdyk6IERlbGV0ZWQuCisgICAgICAg
IChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6YWRkVmlld1RvV2luZG93KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL21hYy9VSVNjcmlwdENvbnRyb2xsZXJNYWMubW06Cisg
ICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6ZG9Bc3luY1Rhc2spOiBEZWxldGVkLgor
ICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6OmNvbnRlbnRzT2ZVc2VySW50ZXJmYWNl
SXRlbSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6
b3ZlcnJpZGVQcmVmZXJlbmNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250
cm9sbGVyOjpmaW5kU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250
cm9sbGVyOjpyZW1vdmVWaWV3RnJvbVdpbmRvdyk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OlVJ
U2NyaXB0Q29udHJvbGxlcjo6YWRkVmlld1RvV2luZG93KTogRGVsZXRlZC4KKyAgICAgICAgKFdU
Ujo6VUlTY3JpcHRDb250cm9sbGVyOjpzZXRTaGFyZVNoZWV0Q29tcGxldGVzSW1tZWRpYXRlbHlX
aXRoUmVzb2x1dGlvbik6IERlbGV0ZWQuCisKIDIwMTgtMTEtMDMgIFdlbnNvbiBIc2llaCAgPHdl
bnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gQ2hhbmdpbmcgdmlldyBzY2Fs
ZSBzb21ldGltZXMgZG9lcyBub3Qgem9vbSB0aGUgcGFnZSB0byB0aGUgbmV3IGluaXRpYWwgc2Nh
bGUgd2hlbiB0aGUgcGFnZSBpcyB6b29tZWQgaW4gd2hlbiBpZ25vcmluZyBtZXRhIHZpZXdwb3J0
CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9pb3MvVUlTY3JpcHRDb250cm9sbGVy
SU9TLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5t
bQppbmRleCAxMDkwMTBkZWNhNDgyY2JlNWJjODAyNjg3ZDVhNTNkNWNlN2RmNGJmLi5lY2U3OGNh
OTAzYTMzMjE2NDQyNGU2NGU3NzIyYzk5MGI2ZDZmMTA5IDEwMDY0NAotLS0gYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tCisrKyBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0KQEAgLTM5NCw2ICszOTQsMTAg
QEAgYm9vbCBVSVNjcmlwdENvbnRyb2xsZXI6OmlzU2hvd2luZ0RhdGFMaXN0U3VnZ2VzdGlvbnMo
KSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAordm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6
Om92ZXJyaWRlUHJlZmVyZW5jZShKU1N0cmluZ1JlZiwgSlNTdHJpbmdSZWYpCit7Cit9CisKIH0K
IAogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuY3BwIGIvVG9v
bHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmNw
cAppbmRleCA2ZTI1YmUzZGU2ZDI0MjU0OWZjNzc3MjQ5ODFkYjlhNzFlMzgyNjYxLi5lNDU5YzZk
YzJjYmYxOTE2MzA5NjkwOThiOTY3MDA4NjI1NGE5Y2ZkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBi
L1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxl
ci5jcHAKQEAgLTUxMiwxNCArNTEyLDE0IEBAIGJvb2wgVUlTY3JpcHRDb250cm9sbGVyOjppc1No
b3dpbmdEYXRhTGlzdFN1Z2dlc3Rpb25zKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
LSNlbmRpZiAvLyAhUExBVEZPUk0oQ09DT0EpCi0KLSNpZiAhUExBVEZPUk0oTUFDKQotCiB2b2lk
IFVJU2NyaXB0Q29udHJvbGxlcjo6b3ZlcnJpZGVQcmVmZXJlbmNlKEpTU3RyaW5nUmVmLCBKU1N0
cmluZ1JlZikKIHsKIH0KIAorI2VuZGlmIC8vICFQTEFURk9STShDT0NPQSkKKworI2lmICFQTEFU
Rk9STShNQUMpCisKIHZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjpyZXBsYWNlVGV4dEF0UmFuZ2Uo
SlNTdHJpbmdSZWYsIGludCwgaW50KQogewogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9VSVNjcmlwdENvbnRyb2xsZXJDb2NvYS5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVUlTY3JpcHRDb250cm9sbGVyQ29jb2EubW0KaW5kZXggN2Y1YjZjNTljZmZhNjMzN2UzMzg1
ZjYyNWM5MzE4NDhmYjAzZGM5OS4uNzg3ZjNkMTkzMmNhNzNkOWMxZDUzNTU2ZjRmMTY0YWFjZjVl
OTMyYiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9VSVNjcmlwdENvbnRyb2xs
ZXJDb2NvYS5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1VJU2NyaXB0Q29udHJvbGxl
ckNvY29hLm1tCkBAIC0yNyw4ICsyNywxMSBAQAogI2ltcG9ydCAiVUlTY3JpcHRDb250cm9sbGVy
LmgiCiAKICNpbXBvcnQgIlBsYXRmb3JtV2ViVmlldy5oIgorI2ltcG9ydCAiU3RyaW5nRnVuY3Rp
b25zLmgiCiAjaW1wb3J0ICJUZXN0Q29udHJvbGxlci5oIgogI2ltcG9ydCAiVGVzdFJ1bm5lcldL
V2ViVmlldy5oIgorI2ltcG9ydCAiVUlTY3JpcHRDb250ZXh0LmgiCisjaW1wb3J0IDxKYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZh
dGUuaD4KIAogbmFtZXNwYWNlIFdUUiB7CkBAIC00OSw0ICs1MiwxMTAgQEAgdm9pZCBVSVNjcmlw
dENvbnRyb2xsZXI6OnJlc2lnbkZpcnN0UmVzcG9uZGVyKCkKICNlbmRpZgogfQogCit2b2lkIFVJ
U2NyaXB0Q29udHJvbGxlcjo6ZG9Bc3luY1Rhc2soSlNWYWx1ZVJlZiBjYWxsYmFjaykKK3sKKyAg
ICB1bnNpZ25lZCBjYWxsYmFja0lEID0gbV9jb250ZXh0LT5wcmVwYXJlRm9yQXN5bmNUYXNrKGNh
bGxiYWNrLCBDYWxsYmFja1R5cGVOb25QZXJzaXN0ZW50KTsKKworICAgIGRpc3BhdGNoX2FzeW5j
KGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CisgICAgICAgIGlmICghbV9jb250ZXh0KQor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2NvbnRleHQtPmFzeW5jVGFza0NvbXBsZXRl
KGNhbGxiYWNrSUQpOworICAgIH0pOworfQorCit2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6c2V0
U2hhcmVTaGVldENvbXBsZXRlc0ltbWVkaWF0ZWx5V2l0aFJlc29sdXRpb24oYm9vbCByZXNvbHZl
ZCkKK3sKKyNpZiBXS19BUElfRU5BQkxFRAorICAgIFRlc3RSdW5uZXJXS1dlYlZpZXcgKndlYlZp
ZXcgPSBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGxhdGZvcm1W
aWV3KCk7CisgICAgW3dlYlZpZXcgX3NldFNoYXJlU2hlZXRDb21wbGV0ZXNJbW1lZGlhdGVseVdp
dGhSZXNvbHV0aW9uRm9yVGVzdGluZzpyZXNvbHZlZF07CisjZWxzZQorICAgIFVOVVNFRF9QQVJB
TShyZXNvbHZlZCk7CisjZW5kaWYKK30KKwordm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OnJlbW92
ZVZpZXdGcm9tV2luZG93KEpTVmFsdWVSZWYgY2FsbGJhY2spCit7CisjaWYgV0tfQVBJX0VOQUJM
RUQKKyAgICAvLyBGSVhNRTogT24gaU9TLCB3ZSBuZXZlciBpbnZva2UgdGhlIGNvbXBsZXRpb24g
Y2FsbGJhY2sgdGhhdCdzIHBhc3NlZCBpbi4gRml4aW5nIHRoaXMgY2F1c2VzIHRoZSBsYXlvdXQK
KyAgICAvLyB0ZXN0IHBhZ2VvdmVybGF5L292ZXJsYXktcmVtb3ZlLXJlaW5zZXJ0LXZpZXcuaHRt
bCB0byBzdGFydCBmYWlsaW5nIGNvbnNpc3RlbnRseSBvbiBpT1MuIEl0IHNlZW1zIGxpa2UKKyAg
ICAvLyB0aGlzIHdhcnJhbnRzIHNvbWUgbW9yZSBpbnZlc3RpZ2F0aW9uLgorI2lmIFBMQVRGT1JN
KE1BQykKKyAgICB1bnNpZ25lZCBjYWxsYmFja0lEID0gbV9jb250ZXh0LT5wcmVwYXJlRm9yQXN5
bmNUYXNrKGNhbGxiYWNrLCBDYWxsYmFja1R5cGVOb25QZXJzaXN0ZW50KTsKKyNlbHNlCisgICAg
VU5VU0VEX1BBUkFNKGNhbGxiYWNrKTsKKyNlbmRpZgorCisgICAgYXV0byogbWFpbldlYlZpZXcg
PSBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKTsKKyAgICBtYWluV2Vi
Vmlldy0+cmVtb3ZlRnJvbVdpbmRvdygpOworCisjaWYgUExBVEZPUk0oTUFDKQorICAgIFttYWlu
V2ViVmlldy0+cGxhdGZvcm1WaWV3KCkgX2RvQWZ0ZXJOZXh0UHJlc2VudGF0aW9uVXBkYXRlOl57
CisgICAgICAgIGlmICghbV9jb250ZXh0KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBt
X2NvbnRleHQtPmFzeW5jVGFza0NvbXBsZXRlKGNhbGxiYWNrSUQpOworICAgIH1dOworI2VuZGlm
IC8vIFBMQVRGT1JNKE1BQykKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGNhbGxiYWNrKTsKKyNl
bmRpZgorfQorCit2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6YWRkVmlld1RvV2luZG93KEpTVmFs
dWVSZWYgY2FsbGJhY2spCit7CisjaWYgV0tfQVBJX0VOQUJMRUQKKyNpZiBQTEFURk9STShNQUMp
CisgICAgdW5zaWduZWQgY2FsbGJhY2tJRCA9IG1fY29udGV4dC0+cHJlcGFyZUZvckFzeW5jVGFz
ayhjYWxsYmFjaywgQ2FsbGJhY2tUeXBlTm9uUGVyc2lzdGVudCk7CisjZWxzZQorICAgIFVOVVNF
RF9QQVJBTShjYWxsYmFjayk7CisjZW5kaWYKKworICAgIGF1dG8qIG1haW5XZWJWaWV3ID0gVGVz
dENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCk7CisgICAgbWFpbldlYlZpZXct
PmFkZFRvV2luZG93KCk7CisKKyNpZiBQTEFURk9STShNQUMpCisgICAgW21haW5XZWJWaWV3LT5w
bGF0Zm9ybVZpZXcoKSBfZG9BZnRlck5leHRQcmVzZW50YXRpb25VcGRhdGU6XnsKKyAgICAgICAg
aWYgKCFtX2NvbnRleHQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fY29udGV4dC0+
YXN5bmNUYXNrQ29tcGxldGUoY2FsbGJhY2tJRCk7CisgICAgfV07CisjZW5kaWYgLy8gUExBVEZP
Uk0oTUFDKQorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oY2FsbGJhY2spOworI2VuZGlmCit9CisK
K3ZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjpvdmVycmlkZVByZWZlcmVuY2UoSlNTdHJpbmdSZWYg
cHJlZmVyZW5jZVJlZiwgSlNTdHJpbmdSZWYgdmFsdWVSZWYpCit7CisjaWYgV0tfQVBJX0VOQUJM
RUQKKyAgICBUZXN0UnVubmVyV0tXZWJWaWV3ICp3ZWJWaWV3ID0gVGVzdENvbnRyb2xsZXI6OnNp
bmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygpOworICAgIFdLUHJlZmVyZW5j
ZXMgKnByZWZlcmVuY2VzID0gd2ViVmlldy5jb25maWd1cmF0aW9uLnByZWZlcmVuY2VzOworCisg
ICAgU3RyaW5nIHByZWZlcmVuY2UgPSB0b1dURlN0cmluZyh0b1dLKHByZWZlcmVuY2VSZWYpKTsK
KyAgICBTdHJpbmcgdmFsdWUgPSB0b1dURlN0cmluZyh0b1dLKHZhbHVlUmVmKSk7CisgICAgaWYg
KHByZWZlcmVuY2UgPT0gIldlYktpdE1pbmltdW1Gb250U2l6ZSIpCisgICAgICAgIHByZWZlcmVu
Y2VzLm1pbmltdW1Gb250U2l6ZSA9IHZhbHVlLnRvRG91YmxlKCk7CisjZWxzZQorICAgIFVOVVNF
RF9QQVJBTShwcmVmZXJlbmNlUmVmKTsKKyAgICBVTlVTRURfUEFSQU0odmFsdWVSZWYpOworI2Vu
ZGlmCit9CisKK3ZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjpmaW5kU3RyaW5nKEpTU3RyaW5nUmVm
IHN0cmluZywgdW5zaWduZWQgbG9uZyBvcHRpb25zLCB1bnNpZ25lZCBsb25nIG1heENvdW50KQor
eworICAgIFRlc3RSdW5uZXJXS1dlYlZpZXcgKndlYlZpZXcgPSBUZXN0Q29udHJvbGxlcjo6c2lu
Z2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCk7CisgICAgW3dlYlZpZXcgX2Zp
bmRTdHJpbmc6dG9XVEZTdHJpbmcodG9XSyhzdHJpbmcpKSBvcHRpb25zOm9wdGlvbnMgbWF4Q291
bnQ6bWF4Q291bnRdOworfQorCitKU09iamVjdFJlZiBVSVNjcmlwdENvbnRyb2xsZXI6OmNvbnRl
bnRzT2ZVc2VySW50ZXJmYWNlSXRlbShKU1N0cmluZ1JlZiBpbnRlcmZhY2VJdGVtKSBjb25zdAor
eworI2lmIFdLX0FQSV9FTkFCTEVECisgICAgVGVzdFJ1bm5lcldLV2ViVmlldyAqd2ViVmlldyA9
IFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWluV2ViVmlldygpLT5wbGF0Zm9ybVZpZXco
KTsKKyAgICBOU0RpY3Rpb25hcnkgKmNvbnRlbnREaWN0aW9uYXJ5ID0gW3dlYlZpZXcgX2NvbnRl
bnRzT2ZVc2VySW50ZXJmYWNlSXRlbTp0b1dURlN0cmluZyh0b1dLKGludGVyZmFjZUl0ZW0pKV07
CisgICAgcmV0dXJuIEpTVmFsdWVUb09iamVjdChtX2NvbnRleHQtPmpzQ29udGV4dCgpLCBbSlNW
YWx1ZSB2YWx1ZVdpdGhPYmplY3Q6Y29udGVudERpY3Rpb25hcnkgaW5Db250ZXh0OltKU0NvbnRl
eHQgY29udGV4dFdpdGhKU0dsb2JhbENvbnRleHRSZWY6bV9jb250ZXh0LT5qc0NvbnRleHQoKV1d
LkpTVmFsdWVSZWYsIG51bGxwdHIpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oaW50ZXJmYWNl
SXRlbSk7CisgICAgcmV0dXJuIG51bGxwdHI7CisjZW5kaWYKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V1RSCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRy
b2xsZXJJT1MubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xs
ZXJJT1MubW0KaW5kZXggNWJmMGY2ZmE4M2Q0NzViNDM3ZTNhYjg2OWQ3ZDhhNzljODU2NjQ5MC4u
ZjUyZjlhMzU3ODZjOWQwOTg2NDVjZDBmMjAwMjgzOGZmN2VlMTA2NyAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbQpAQCAtNjAs
MTcgKzYwLDYgQEAgdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OmNoZWNrRm9yT3V0c3RhbmRpbmdD
YWxsYmFja3MoKQogICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6QCJXZWJLaXRUZXN0UnVubmVy
VGVzdFByb2JsZW0iIGZvcm1hdDpAIlRoZSB0ZXN0IGNvbXBsZXRlZCBiZWZvcmUgYWxsIHN5bnRo
ZXNpemVkIGV2ZW50cyBoYWQgYmVlbiBoYW5kbGVkLiBQZXJoYXBzIHlvdSdyZSBjYWxsaW5nIG5v
dGlmeURvbmUoKSB0b28gZWFybHk/Il07CiB9CiAKLXZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjpk
b0FzeW5jVGFzayhKU1ZhbHVlUmVmIGNhbGxiYWNrKQotewotICAgIHVuc2lnbmVkIGNhbGxiYWNr
SUQgPSBtX2NvbnRleHQtPnByZXBhcmVGb3JBc3luY1Rhc2soY2FsbGJhY2ssIENhbGxiYWNrVHlw
ZU5vblBlcnNpc3RlbnQpOwotCi0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5f
cXVldWUoKSwgXnsKLSAgICAgICAgaWYgKCFtX2NvbnRleHQpCi0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIG1fY29udGV4dC0+YXN5bmNUYXNrQ29tcGxldGUoY2FsbGJhY2tJRCk7Ci0gICAg
fSk7Ci19Ci0KIHZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjpkb0FmdGVyUHJlc2VudGF0aW9uVXBk
YXRlKEpTVmFsdWVSZWYgY2FsbGJhY2spCiB7CiAgICAgVGVzdFJ1bm5lcldLV2ViVmlldyAqd2Vi
VmlldyA9IFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWluV2ViVmlldygpLT5wbGF0Zm9y
bVZpZXcoKTsKQEAgLTQxMCwxOSArMzk5LDYgQEAgdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OnNl
dFRpbWVQaWNrZXJWYWx1ZShsb25nIGhvdXIsIGxvbmcgbWludXRlKQogICAgIFt3ZWJWaWV3IHNl
dFRpbWVQaWNrZXJWYWx1ZVRvSG91cjpob3VyIG1pbnV0ZTptaW51dGVdOwogfQogCi12b2lkIFVJ
U2NyaXB0Q29udHJvbGxlcjo6c2V0U2hhcmVTaGVldENvbXBsZXRlc0ltbWVkaWF0ZWx5V2l0aFJl
c29sdXRpb24oYm9vbCByZXNvbHZlZCkKLXsKLSAgICBUZXN0UnVubmVyV0tXZWJWaWV3ICp3ZWJW
aWV3ID0gVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBsYXRmb3Jt
VmlldygpOwotICAgIFt3ZWJWaWV3IF9zZXRTaGFyZVNoZWV0Q29tcGxldGVzSW1tZWRpYXRlbHlX
aXRoUmVzb2x1dGlvbkZvclRlc3Rpbmc6cmVzb2x2ZWRdOwotfQotICAgIAotSlNPYmplY3RSZWYg
VUlTY3JpcHRDb250cm9sbGVyOjpjb250ZW50c09mVXNlckludGVyZmFjZUl0ZW0oSlNTdHJpbmdS
ZWYgaW50ZXJmYWNlSXRlbSkgY29uc3QKLXsKLSAgICBUZXN0UnVubmVyV0tXZWJWaWV3ICp3ZWJW
aWV3ID0gVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBsYXRmb3Jt
VmlldygpOwotICAgIE5TRGljdGlvbmFyeSAqY29udGVudERpY3Rpb25hcnkgPSBbd2ViVmlldyBf
Y29udGVudHNPZlVzZXJJbnRlcmZhY2VJdGVtOnRvV1RGU3RyaW5nKHRvV0soaW50ZXJmYWNlSXRl
bSkpXTsKLSAgICByZXR1cm4gSlNWYWx1ZVRvT2JqZWN0KG1fY29udGV4dC0+anNDb250ZXh0KCks
IFtKU1ZhbHVlIHZhbHVlV2l0aE9iamVjdDpjb250ZW50RGljdGlvbmFyeSBpbkNvbnRleHQ6W0pT
Q29udGV4dCBjb250ZXh0V2l0aEpTR2xvYmFsQ29udGV4dFJlZjptX2NvbnRleHQtPmpzQ29udGV4
dCgpXV0uSlNWYWx1ZVJlZiwgbnVsbHB0cik7Ci19Ci0KIHN0YXRpYyBDR1BvaW50IGNvbnRlbnRP
ZmZzZXRCb3VuZGVkSW5WYWxpZFJhbmdlKFVJU2Nyb2xsVmlldyAqc2Nyb2xsVmlldywgQ0dQb2lu
dCBjb250ZW50T2Zmc2V0KQogewogICAgIFVJRWRnZUluc2V0cyBjb250ZW50SW5zZXRzID0gc2Ny
b2xsVmlldy5jb250ZW50SW5zZXQ7CkBAIC02MzcsMjIgKzYxMyw2IEBAIHZvaWQgVUlTY3JpcHRD
b250cm9sbGVyOjpzaW11bGF0ZVJvdGF0aW9uTGlrZVNhZmFyaShEZXZpY2VPcmllbnRhdGlvbiog
b3JpZW50YXRpCiAgICAgW1tVSURldmljZSBjdXJyZW50RGV2aWNlXSBzZXRPcmllbnRhdGlvbjp0
b1VJRGV2aWNlT3JpZW50YXRpb24ob3JpZW50YXRpb24pIGFuaW1hdGVkOllFU107CiB9CiAKLXZv
aWQgVUlTY3JpcHRDb250cm9sbGVyOjpmaW5kU3RyaW5nKEpTU3RyaW5nUmVmIHN0cmluZywgdW5z
aWduZWQgbG9uZyBvcHRpb25zLCB1bnNpZ25lZCBsb25nIG1heENvdW50KQotewotICAgIFRlc3RS
dW5uZXJXS1dlYlZpZXcgKndlYlZpZXcgPSBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFp
bldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCk7Ci0gICAgW3dlYlZpZXcgX2ZpbmRTdHJpbmc6dG9X
VEZTdHJpbmcodG9XSyhzdHJpbmcpKSBvcHRpb25zOm9wdGlvbnMgbWF4Q291bnQ6bWF4Q291bnRd
OwotfQotCi12b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6cmVtb3ZlVmlld0Zyb21XaW5kb3coSlNW
YWx1ZVJlZiBjYWxsYmFjaykKLXsKLSAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFp
bldlYlZpZXcoKS0+cmVtb3ZlRnJvbVdpbmRvdygpOwotfQotCi12b2lkIFVJU2NyaXB0Q29udHJv
bGxlcjo6YWRkVmlld1RvV2luZG93KEpTVmFsdWVSZWYgY2FsbGJhY2spCi17Ci0gICAgVGVzdENv
bnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPmFkZFRvV2luZG93KCk7Ci19Ci0K
IHZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjpwbGF0Zm9ybVNldERpZFN0YXJ0Rm9ybUNvbnRyb2xJ
bnRlcmFjdGlvbkNhbGxiYWNrKCkKIHsKICAgICBUZXN0UnVubmVyV0tXZWJWaWV3ICp3ZWJWaWV3
ID0gVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBsYXRmb3JtVmll
dygpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvVUlTY3JpcHRDb250
cm9sbGVyTWFjLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvVUlTY3JpcHRDb250cm9s
bGVyTWFjLm1tCmluZGV4IDJjMmI1ZDE5OWUwZDEyNDFjOGM5MjFhNjQxY2ZlMDgxMDMxNTc2NGQu
LjMzMzNiNDZiNWY4MWUwMzUzOTEwNzJmYTY3MTFlNGIwNGM4ZWQ3YjUgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1VJU2NyaXB0Q29udHJvbGxlck1hYy5tbQorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9VSVNjcmlwdENvbnRyb2xsZXJNYWMubW0KQEAgLTQ5
LDE3ICs0OSw2IEBAIE5TU3RyaW5nICpuc1N0cmluZyhKU1N0cmluZ1JlZiBzdHJpbmcpCiAgICAg
cmV0dXJuIENGQnJpZGdpbmdSZWxlYXNlKEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIHN0cmluZykpOwogfQogCi12b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6ZG9Bc3lu
Y1Rhc2soSlNWYWx1ZVJlZiBjYWxsYmFjaykKLXsKLSAgICB1bnNpZ25lZCBjYWxsYmFja0lEID0g
bV9jb250ZXh0LT5wcmVwYXJlRm9yQXN5bmNUYXNrKGNhbGxiYWNrLCBDYWxsYmFja1R5cGVOb25Q
ZXJzaXN0ZW50KTsKLQotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVl
KCksIF57Ci0gICAgICAgIGlmICghbV9jb250ZXh0KQotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICBtX2NvbnRleHQtPmFzeW5jVGFza0NvbXBsZXRlKGNhbGxiYWNrSUQpOwotICAgIH0pOwot
fQotCiB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6ZG9BZnRlclByZXNlbnRhdGlvblVwZGF0ZShK
U1ZhbHVlUmVmIGNhbGxiYWNrKQogewogICAgIHJldHVybiBkb0FzeW5jVGFzayhjYWxsYmFjayk7
CkBAIC0xMjUsMzQgKzExNCw2IEBAIHZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjpzaW11bGF0ZUFj
Y2Vzc2liaWxpdHlTZXR0aW5nc0NoYW5nZU5vdGlmaWNhdGlvbihKU1ZhbHVlCiAjZW5kaWYKIH0K
IAotSlNPYmplY3RSZWYgVUlTY3JpcHRDb250cm9sbGVyOjpjb250ZW50c09mVXNlckludGVyZmFj
ZUl0ZW0oSlNTdHJpbmdSZWYgaW50ZXJmYWNlSXRlbSkgY29uc3QKLXsKLSNpZiBXS19BUElfRU5B
QkxFRAotICAgIFRlc3RSdW5uZXJXS1dlYlZpZXcgKndlYlZpZXcgPSBUZXN0Q29udHJvbGxlcjo6
c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCk7Ci0gICAgTlNEaWN0aW9u
YXJ5ICpjb250ZW50RGljdGlvbmFyeSA9IFt3ZWJWaWV3IF9jb250ZW50c09mVXNlckludGVyZmFj
ZUl0ZW06dG9XVEZTdHJpbmcodG9XSyhpbnRlcmZhY2VJdGVtKSldOwotICAgIHJldHVybiBKU1Zh
bHVlVG9PYmplY3QobV9jb250ZXh0LT5qc0NvbnRleHQoKSwgW0pTVmFsdWUgdmFsdWVXaXRoT2Jq
ZWN0OmNvbnRlbnREaWN0aW9uYXJ5IGluQ29udGV4dDpbSlNDb250ZXh0IGNvbnRleHRXaXRoSlNH
bG9iYWxDb250ZXh0UmVmOm1fY29udGV4dC0+anNDb250ZXh0KCldXS5KU1ZhbHVlUmVmLCBudWxs
cHRyKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGludGVyZmFjZUl0ZW0pOwotICAgIHJldHVy
biBudWxscHRyOwotI2VuZGlmCi19Ci0KLXZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjpvdmVycmlk
ZVByZWZlcmVuY2UoSlNTdHJpbmdSZWYgcHJlZmVyZW5jZVJlZiwgSlNTdHJpbmdSZWYgdmFsdWVS
ZWYpCi17Ci0jaWYgV0tfQVBJX0VOQUJMRUQKLSAgICBUZXN0UnVubmVyV0tXZWJWaWV3ICp3ZWJW
aWV3ID0gVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBsYXRmb3Jt
VmlldygpOwotICAgIFdLUHJlZmVyZW5jZXMgKnByZWZlcmVuY2VzID0gd2ViVmlldy5jb25maWd1
cmF0aW9uLnByZWZlcmVuY2VzOwotCi0gICAgU3RyaW5nIHByZWZlcmVuY2UgPSB0b1dURlN0cmlu
Zyh0b1dLKHByZWZlcmVuY2VSZWYpKTsKLSAgICBTdHJpbmcgdmFsdWUgPSB0b1dURlN0cmluZyh0
b1dLKHZhbHVlUmVmKSk7Ci0gICAgaWYgKHByZWZlcmVuY2UgPT0gIldlYktpdE1pbmltdW1Gb250
U2l6ZSIpCi0gICAgICAgIHByZWZlcmVuY2VzLm1pbmltdW1Gb250U2l6ZSA9IHZhbHVlLnRvRG91
YmxlKCk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShwcmVmZXJlbmNlUmVmKTsKLSAgICBVTlVT
RURfUEFSQU0odmFsdWVSZWYpOwotI2VuZGlmCi19Ci0KIHZvaWQgVUlTY3JpcHRDb250cm9sbGVy
OjpzaW11bGF0ZVJvdGF0aW9uKERldmljZU9yaWVudGF0aW9uKiwgSlNWYWx1ZVJlZikKIHsKIH0K
QEAgLTE2MSwxMCArMTIyLDYgQEAgdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OnNpbXVsYXRlUm90
YXRpb25MaWtlU2FmYXJpKERldmljZU9yaWVudGF0aW9uKiwgSlNWYWx1ZVIKIHsKIH0KIAotdm9p
ZCBVSVNjcmlwdENvbnRyb2xsZXI6OmZpbmRTdHJpbmcoSlNTdHJpbmdSZWYsIHVuc2lnbmVkIGxv
bmcgb3B0aW9ucywgdW5zaWduZWQgbG9uZyBtYXhDb3VudCkKLXsKLX0KLQogYm9vbCBVSVNjcmlw
dENvbnRyb2xsZXI6OmlzU2hvd2luZ0RhdGFMaXN0U3VnZ2VzdGlvbnMoKSBjb25zdAogewogI2lm
IFdLX0FQSV9FTkFCTEVECkBAIC0xNzcsNDIgKzEzNCw2IEBAIGJvb2wgVUlTY3JpcHRDb250cm9s
bGVyOjppc1Nob3dpbmdEYXRhTGlzdFN1Z2dlc3Rpb25zKCkgY29uc3QKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKLXZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjpyZW1vdmVWaWV3RnJvbVdpbmRvdyhK
U1ZhbHVlUmVmIGNhbGxiYWNrKQotewotI2lmIFdLX0FQSV9FTkFCTEVECi0gICAgdW5zaWduZWQg
Y2FsbGJhY2tJRCA9IG1fY29udGV4dC0+cHJlcGFyZUZvckFzeW5jVGFzayhjYWxsYmFjaywgQ2Fs
bGJhY2tUeXBlTm9uUGVyc2lzdGVudCk7Ci0KLSAgICBhdXRvKiBtYWluV2ViVmlldyA9IFRlc3RD
b250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWluV2ViVmlldygpOwotICAgIG1haW5XZWJWaWV3LT5y
ZW1vdmVGcm9tV2luZG93KCk7Ci0KLSAgICBbbWFpbldlYlZpZXctPnBsYXRmb3JtVmlldygpIF9k
b0FmdGVyTmV4dFByZXNlbnRhdGlvblVwZGF0ZTogXiB7Ci0gICAgICAgIGlmICghbV9jb250ZXh0
KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBtX2NvbnRleHQtPmFzeW5jVGFza0NvbXBs
ZXRlKGNhbGxiYWNrSUQpOwotICAgIH1dOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oY2FsbGJh
Y2spOwotI2VuZGlmCi19Ci0KLXZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjphZGRWaWV3VG9XaW5k
b3coSlNWYWx1ZVJlZiBjYWxsYmFjaykKLXsKLSNpZiBXS19BUElfRU5BQkxFRAotICAgIHVuc2ln
bmVkIGNhbGxiYWNrSUQgPSBtX2NvbnRleHQtPnByZXBhcmVGb3JBc3luY1Rhc2soY2FsbGJhY2ss
IENhbGxiYWNrVHlwZU5vblBlcnNpc3RlbnQpOwotCi0gICAgYXV0byogbWFpbldlYlZpZXcgPSBU
ZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKTsKLSAgICBtYWluV2ViVmll
dy0+YWRkVG9XaW5kb3coKTsKLQotICAgIFttYWluV2ViVmlldy0+cGxhdGZvcm1WaWV3KCkgX2Rv
QWZ0ZXJOZXh0UHJlc2VudGF0aW9uVXBkYXRlOiBeIHsKLSAgICAgICAgaWYgKCFtX2NvbnRleHQp
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIG1fY29udGV4dC0+YXN5bmNUYXNrQ29tcGxl
dGUoY2FsbGJhY2tJRCk7Ci0gICAgfV07Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShjYWxsYmFj
ayk7Ci0jZW5kaWYKLX0KLQogc3RhdGljIHZvaWQgcGxheUJhY2tFdmVudHMoVUlTY3JpcHRDb250
ZXh0ICpjb250ZXh0LCBOU1N0cmluZyAqZXZlbnRTdHJlYW0sIEpTVmFsdWVSZWYgY2FsbGJhY2sp
CiB7CiAgICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7CkBAIC0yNzAsMTQgKzE5MSw0IEBAIGJvb2wg
VUlTY3JpcHRDb250cm9sbGVyOjppc1dpbmRvd0NvbnRlbnRWaWV3Rmlyc3RSZXNwb25kZXIoKSBj
b25zdAogICAgIHJldHVybiBbd2luZG93IGZpcnN0UmVzcG9uZGVyXSA9PSBbd2luZG93IGNvbnRl
bnRWaWV3XTsKIH0KIAotdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OnNldFNoYXJlU2hlZXRDb21w
bGV0ZXNJbW1lZGlhdGVseVdpdGhSZXNvbHV0aW9uKGJvb2wgcmVzb2x2ZWQpCi17Ci0jaWYgV0tf
QVBJX0VOQUJMRUQKLSAgICBUZXN0UnVubmVyV0tXZWJWaWV3ICp3ZWJWaWV3ID0gVGVzdENvbnRy
b2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygpOwotICAgIFt3
ZWJWaWV3IF9zZXRTaGFyZVNoZWV0Q29tcGxldGVzSW1tZWRpYXRlbHlXaXRoUmVzb2x1dGlvbkZv
clRlc3Rpbmc6cmVzb2x2ZWRdOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0ocmVzb2x2ZWQpOwot
I2VuZGlmCi19Ci0KIH0gLy8gbmFtZXNwYWNlIFdUUgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353793</attachid>
            <date>2018-11-03 19:57:09 -0700</date>
            <delta_ts>2018-11-04 12:21:00 -0800</delta_ts>
            <desc>Fix a typo</desc>
            <filename>bug-191231-20181103195708.patch</filename>
            <type>text/plain</type>
            <size>16470</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3NzQzCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOGMzNTYyZWViMmVjYTMzZWFhMjhmMzZlNjdjNDNmNTBk
NGQzZmNlNC4uNjMwMjA1YzA3MTM1ZjRhODA2ZmI4YTI4MGI0ZGNmZjg4MTkwOTM5NSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3
IEBACisyMDE4LTExLTAzICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgor
CisgICAgICAgIFtDb2NvYV0gRm9sZCBjb21tb24gVUlTY3JpcHRDb250cm9sbGVyIGZ1bmN0aW9u
YWxpdHkgb24gbWFjT1MgYW5kIGlPUyBpbnRvIFVJU2NyaXB0Q29udHJvbGxlckNvY29hLm1tCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTEyMzEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlcyBzb21l
IFVJU2NyaXB0Q29udHJvbGxlciBtZXRob2QgaW1wbGVtZW50YXRpb25zIHNwZWNpZmljIHRvIGlP
UyBhbmQgbWFjT1MgaW50byBVSVNjcmlwdENvbnRyb2xsZXJDb2NvYSwgc28KKyAgICAgICAgaXQg
Y2FuIGJlIHNoYXJlZCBiZXR3ZWVuIGlPUy1mYW1pbHkgYW5kIG1hY09TIHBsYXRmb3Jtcy4gU2Vl
IGJlbG93IGZvciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAgTm8gY2hhbmdlIGluIGJlaGF2aW9y
LgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5t
bToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjpvdmVycmlkZVByZWZlcmVuY2Up
OgorCisgICAgICAgIEFkZCBhIG1ldGhvZCBzdHViIGZvciBEdW1wUmVuZGVyVHJlZS4KKworICAg
ICAgICAqIFRlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxl
ci5jcHA6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9VSVNjcmlwdENvbnRyb2xsZXJDb2Nv
YS5tbToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjpkb0FzeW5jVGFzayk6Cisg
ICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6c2V0U2hhcmVTaGVldENvbXBsZXRlc0lt
bWVkaWF0ZWx5V2l0aFJlc29sdXRpb24pOgorCisgICAgICAgIFVuaWZ5IHRoZXNlIG1ldGhvZCBp
bXBsZW1lbnRhdGlvbnMuCisKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjpyZW1v
dmVWaWV3RnJvbVdpbmRvdyk6CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6YWRk
Vmlld1RvV2luZG93KToKKworICAgICAgICBNb3ZlIHRoZSBtYWNPUyBpbXBsZW1lbnRhdGlvbiB0
byBVSVNjcmlwdENvbnRyb2xsZXJDb2NvYS4gT24gaU9TLCB0aGlzIG1ldGhvZCBjdXJyZW50bHkg
b25seSBhZGRzIHRoZSB3ZWIgdmlldworICAgICAgICB0byB0aGUgd2luZG93LCBhbmQgZG9lcyBu
b3QgYXR0ZW1wdCB0byBpbnZva2UgdGhlIGdpdmVuIGNvbXBsZXRpb24gYmxvY2s7IGFkZGl0aW9u
YWxseSwgaW52b2tpbmcgdGhlIGNvbXBsZXRpb24KKyAgICAgICAgYmxvY2sgYWZ0ZXIgYSBwcmVz
ZW50YXRpb24gdXBkYXRlIChhcyBkb25lIG9uIG1hY09TKSBjYXVzZXMgcGFnZW92ZXJsYXkvb3Zl
cmxheS1yZW1vdmUtcmVpbnNlcnQtdmlldy5odG1sIHRvCisgICAgICAgIGJlZ2luIGZhaWxpbmcg
Y29uc2lzdGVudGx5LiBUaGlzIHBhdGNoIGRvZXMgbm90IGF0dGVtcHQgdG8gY2hhbmdlIGJlaGF2
aW9yLCBidXQgYWRkcyBhIEZJWE1FIGRlc2NyaWJpbmcgdGhpcy4KKworICAgICAgICAoV1RSOjpV
SVNjcmlwdENvbnRyb2xsZXI6Om92ZXJyaWRlUHJlZmVyZW5jZSk6CisgICAgICAgIChXVFI6OlVJ
U2NyaXB0Q29udHJvbGxlcjo6ZmluZFN0cmluZyk6CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29u
dHJvbGxlcjo6Y29udGVudHNPZlVzZXJJbnRlcmZhY2VJdGVtIGNvbnN0KToKKworICAgICAgICBN
b3ZlIHRoZXNlIGZyb20gVUlTY3JpcHRDb250cm9sbGVyTWFjIHRvIFVJU2NyaXB0Q29udHJvbGxl
ckNvY29hLCBzbyB0aGF0IGl0IGlzIG5vdyBpbXBsZW1lbnRlZCBvbiBpT1MgYXMgd2VsbC4KKwor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbToK
KyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjpkb0FzeW5jVGFzayk6IERlbGV0ZWQu
CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6c2V0U2hhcmVTaGVldENvbXBsZXRl
c0ltbWVkaWF0ZWx5V2l0aFJlc29sdXRpb24pOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpVSVNj
cmlwdENvbnRyb2xsZXI6OmNvbnRlbnRzT2ZVc2VySW50ZXJmYWNlSXRlbSBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6ZmluZFN0cmluZyk6IERlbGV0
ZWQuCisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6cmVtb3ZlVmlld0Zyb21XaW5k
b3cpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6OmFkZFZpZXdU
b1dpbmRvdyk6IERlbGV0ZWQuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9tYWMvVUlTY3Jp
cHRDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6OmRv
QXN5bmNUYXNrKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjpj
b250ZW50c09mVXNlckludGVyZmFjZUl0ZW0gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV1RS
OjpVSVNjcmlwdENvbnRyb2xsZXI6Om92ZXJyaWRlUHJlZmVyZW5jZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6ZmluZFN0cmluZyk6IERlbGV0ZWQuCisgICAg
ICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6cmVtb3ZlVmlld0Zyb21XaW5kb3cpOiBEZWxl
dGVkLgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6OmFkZFZpZXdUb1dpbmRvdyk6
IERlbGV0ZWQuCisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6c2V0U2hhcmVTaGVl
dENvbXBsZXRlc0ltbWVkaWF0ZWx5V2l0aFJlc29sdXRpb24pOiBEZWxldGVkLgorCiAyMDE4LTEx
LTAzICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFtp
T1NdIENoYW5naW5nIHZpZXcgc2NhbGUgc29tZXRpbWVzIGRvZXMgbm90IHpvb20gdGhlIHBhZ2Ug
dG8gdGhlIG5ldyBpbml0aWFsIHNjYWxlIHdoZW4gdGhlIHBhZ2UgaXMgem9vbWVkIGluIHdoZW4g
aWdub3JpbmcgbWV0YSB2aWV3cG9ydApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
aW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9V
SVNjcmlwdENvbnRyb2xsZXJJT1MubW0KaW5kZXggMTA5MDEwZGVjYTQ4MmNiZTViYzgwMjY4N2Q1
YTUzZDVjZTdkZjRiZi4uZWNlNzhjYTkwM2EzMzIxNjQ0MjRlNjRlNzcyMmM5OTBiNmQ2ZjEwOSAx
MDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklP
Uy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9T
Lm1tCkBAIC0zOTQsNiArMzk0LDEwIEBAIGJvb2wgVUlTY3JpcHRDb250cm9sbGVyOjppc1Nob3dp
bmdEYXRhTGlzdFN1Z2dlc3Rpb25zKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK3Zv
aWQgVUlTY3JpcHRDb250cm9sbGVyOjpvdmVycmlkZVByZWZlcmVuY2UoSlNTdHJpbmdSZWYsIEpT
U3RyaW5nUmVmKQoreworfQorCiB9CiAKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3Jp
cHRDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0
L1VJU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggNmUyNWJlM2RlNmQyNDI1NDlmYzc3NzI0OTgx
ZGI5YTcxZTM4MjY2MS4uZTQ1OWM2ZGMyY2JmMTkxNjMwOTY5MDk4Yjk2NzAwODYyNTRhOWNmZCAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3Jp
cHRDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29u
dGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC01MTIsMTQgKzUxMiwxNCBAQCBib29sIFVJ
U2NyaXB0Q29udHJvbGxlcjo6aXNTaG93aW5nRGF0YUxpc3RTdWdnZXN0aW9ucygpIGNvbnN0CiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi0jZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKQotCi0jaWYg
IVBMQVRGT1JNKE1BQykKLQogdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6Om92ZXJyaWRlUHJlZmVy
ZW5jZShKU1N0cmluZ1JlZiwgSlNTdHJpbmdSZWYpCiB7CiB9CiAKKyNlbmRpZiAvLyAhUExBVEZP
Uk0oQ09DT0EpCisKKyNpZiAhUExBVEZPUk0oTUFDKQorCiB2b2lkIFVJU2NyaXB0Q29udHJvbGxl
cjo6cmVwbGFjZVRleHRBdFJhbmdlKEpTU3RyaW5nUmVmLCBpbnQsIGludCkKIHsKIH0KZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVUlTY3JpcHRDb250cm9sbGVyQ29jb2EubW0g
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1VJU2NyaXB0Q29udHJvbGxlckNvY29hLm1tCmluZGV4
IDdmNWI2YzU5Y2ZmYTYzMzdlMzM4NWY2MjVjOTMxODQ4ZmIwM2RjOTkuLjc4N2YzZDE5MzJjYTcz
ZDljMWQ1MzU1NmY0ZjE2NGFhY2Y1ZTkzMmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVUlTY3JpcHRDb250cm9sbGVyQ29jb2EubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9VSVNjcmlwdENvbnRyb2xsZXJDb2NvYS5tbQpAQCAtMjcsOCArMjcsMTEgQEAKICNpbXBv
cnQgIlVJU2NyaXB0Q29udHJvbGxlci5oIgogCiAjaW1wb3J0ICJQbGF0Zm9ybVdlYlZpZXcuaCIK
KyNpbXBvcnQgIlN0cmluZ0Z1bmN0aW9ucy5oIgogI2ltcG9ydCAiVGVzdENvbnRyb2xsZXIuaCIK
ICNpbXBvcnQgIlRlc3RSdW5uZXJXS1dlYlZpZXcuaCIKKyNpbXBvcnQgIlVJU2NyaXB0Q29udGV4
dC5oIgorI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuaD4KICNpbXBvcnQg
PFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CiAKIG5hbWVzcGFjZSBXVFIgewpAQCAtNDksNCAr
NTIsMTEwIEBAIHZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjpyZXNpZ25GaXJzdFJlc3BvbmRlcigp
CiAjZW5kaWYKIH0KIAordm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OmRvQXN5bmNUYXNrKEpTVmFs
dWVSZWYgY2FsbGJhY2spCit7CisgICAgdW5zaWduZWQgY2FsbGJhY2tJRCA9IG1fY29udGV4dC0+
cHJlcGFyZUZvckFzeW5jVGFzayhjYWxsYmFjaywgQ2FsbGJhY2tUeXBlTm9uUGVyc2lzdGVudCk7
CisKKyAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworICAg
ICAgICBpZiAoIW1fY29udGV4dCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9jb250
ZXh0LT5hc3luY1Rhc2tDb21wbGV0ZShjYWxsYmFja0lEKTsKKyAgICB9KTsKK30KKwordm9pZCBV
SVNjcmlwdENvbnRyb2xsZXI6OnNldFNoYXJlU2hlZXRDb21wbGV0ZXNJbW1lZGlhdGVseVdpdGhS
ZXNvbHV0aW9uKGJvb2wgcmVzb2x2ZWQpCit7CisjaWYgV0tfQVBJX0VOQUJMRUQKKyAgICBUZXN0
UnVubmVyV0tXZWJWaWV3ICp3ZWJWaWV3ID0gVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1h
aW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygpOworICAgIFt3ZWJWaWV3IF9zZXRTaGFyZVNoZWV0
Q29tcGxldGVzSW1tZWRpYXRlbHlXaXRoUmVzb2x1dGlvbkZvclRlc3Rpbmc6cmVzb2x2ZWRdOwor
I2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocmVzb2x2ZWQpOworI2VuZGlmCit9CisKK3ZvaWQgVUlT
Y3JpcHRDb250cm9sbGVyOjpyZW1vdmVWaWV3RnJvbVdpbmRvdyhKU1ZhbHVlUmVmIGNhbGxiYWNr
KQoreworI2lmIFdLX0FQSV9FTkFCTEVECisgICAgLy8gRklYTUU6IE9uIGlPUywgd2UgbmV2ZXIg
aW52b2tlIHRoZSBjb21wbGV0aW9uIGNhbGxiYWNrIHRoYXQncyBwYXNzZWQgaW4uIEZpeGluZyB0
aGlzIGNhdXNlcyB0aGUgbGF5b3V0CisgICAgLy8gdGVzdCBwYWdlb3ZlcmxheS9vdmVybGF5LXJl
bW92ZS1yZWluc2VydC12aWV3Lmh0bWwgdG8gc3RhcnQgZmFpbGluZyBjb25zaXN0ZW50bHkgb24g
aU9TLiBJdCBzZWVtcyBsaWtlCisgICAgLy8gdGhpcyB3YXJyYW50cyBzb21lIG1vcmUgaW52ZXN0
aWdhdGlvbi4KKyNpZiBQTEFURk9STShNQUMpCisgICAgdW5zaWduZWQgY2FsbGJhY2tJRCA9IG1f
Y29udGV4dC0+cHJlcGFyZUZvckFzeW5jVGFzayhjYWxsYmFjaywgQ2FsbGJhY2tUeXBlTm9uUGVy
c2lzdGVudCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShjYWxsYmFjayk7CisjZW5kaWYKKwor
ICAgIGF1dG8qIG1haW5XZWJWaWV3ID0gVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5X
ZWJWaWV3KCk7CisgICAgbWFpbldlYlZpZXctPnJlbW92ZUZyb21XaW5kb3coKTsKKworI2lmIFBM
QVRGT1JNKE1BQykKKyAgICBbbWFpbldlYlZpZXctPnBsYXRmb3JtVmlldygpIF9kb0FmdGVyTmV4
dFByZXNlbnRhdGlvblVwZGF0ZTpeeworICAgICAgICBpZiAoIW1fY29udGV4dCkKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgbV9jb250ZXh0LT5hc3luY1Rhc2tDb21wbGV0ZShjYWxsYmFj
a0lEKTsKKyAgICB9XTsKKyNlbmRpZiAvLyBQTEFURk9STShNQUMpCisjZWxzZQorICAgIFVOVVNF
RF9QQVJBTShjYWxsYmFjayk7CisjZW5kaWYKK30KKwordm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6
OmFkZFZpZXdUb1dpbmRvdyhKU1ZhbHVlUmVmIGNhbGxiYWNrKQoreworI2lmIFdLX0FQSV9FTkFC
TEVECisjaWYgUExBVEZPUk0oTUFDKQorICAgIHVuc2lnbmVkIGNhbGxiYWNrSUQgPSBtX2NvbnRl
eHQtPnByZXBhcmVGb3JBc3luY1Rhc2soY2FsbGJhY2ssIENhbGxiYWNrVHlwZU5vblBlcnNpc3Rl
bnQpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oY2FsbGJhY2spOworI2VuZGlmCisKKyAgICBh
dXRvKiBtYWluV2ViVmlldyA9IFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWluV2ViVmll
dygpOworICAgIG1haW5XZWJWaWV3LT5hZGRUb1dpbmRvdygpOworCisjaWYgUExBVEZPUk0oTUFD
KQorICAgIFttYWluV2ViVmlldy0+cGxhdGZvcm1WaWV3KCkgX2RvQWZ0ZXJOZXh0UHJlc2VudGF0
aW9uVXBkYXRlOl57CisgICAgICAgIGlmICghbV9jb250ZXh0KQorICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICBtX2NvbnRleHQtPmFzeW5jVGFza0NvbXBsZXRlKGNhbGxiYWNrSUQpOworICAg
IH1dOworI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGNh
bGxiYWNrKTsKKyNlbmRpZgorfQorCit2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6b3ZlcnJpZGVQ
cmVmZXJlbmNlKEpTU3RyaW5nUmVmIHByZWZlcmVuY2VSZWYsIEpTU3RyaW5nUmVmIHZhbHVlUmVm
KQoreworI2lmIFdLX0FQSV9FTkFCTEVECisgICAgVGVzdFJ1bm5lcldLV2ViVmlldyAqd2ViVmll
dyA9IFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWluV2ViVmlldygpLT5wbGF0Zm9ybVZp
ZXcoKTsKKyAgICBXS1ByZWZlcmVuY2VzICpwcmVmZXJlbmNlcyA9IHdlYlZpZXcuY29uZmlndXJh
dGlvbi5wcmVmZXJlbmNlczsKKworICAgIFN0cmluZyBwcmVmZXJlbmNlID0gdG9XVEZTdHJpbmco
dG9XSyhwcmVmZXJlbmNlUmVmKSk7CisgICAgU3RyaW5nIHZhbHVlID0gdG9XVEZTdHJpbmcodG9X
Syh2YWx1ZVJlZikpOworICAgIGlmIChwcmVmZXJlbmNlID09ICJXZWJLaXRNaW5pbXVtRm9udFNp
emUiKQorICAgICAgICBwcmVmZXJlbmNlcy5taW5pbXVtRm9udFNpemUgPSB2YWx1ZS50b0RvdWJs
ZSgpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocHJlZmVyZW5jZVJlZik7CisgICAgVU5VU0VE
X1BBUkFNKHZhbHVlUmVmKTsKKyNlbmRpZgorfQorCit2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6
ZmluZFN0cmluZyhKU1N0cmluZ1JlZiBzdHJpbmcsIHVuc2lnbmVkIGxvbmcgb3B0aW9ucywgdW5z
aWduZWQgbG9uZyBtYXhDb3VudCkKK3sKKyAgICBUZXN0UnVubmVyV0tXZWJWaWV3ICp3ZWJWaWV3
ID0gVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBsYXRmb3JtVmll
dygpOworICAgIFt3ZWJWaWV3IF9maW5kU3RyaW5nOnRvV1RGU3RyaW5nKHRvV0soc3RyaW5nKSkg
b3B0aW9uczpvcHRpb25zIG1heENvdW50Om1heENvdW50XTsKK30KKworSlNPYmplY3RSZWYgVUlT
Y3JpcHRDb250cm9sbGVyOjpjb250ZW50c09mVXNlckludGVyZmFjZUl0ZW0oSlNTdHJpbmdSZWYg
aW50ZXJmYWNlSXRlbSkgY29uc3QKK3sKKyNpZiBXS19BUElfRU5BQkxFRAorICAgIFRlc3RSdW5u
ZXJXS1dlYlZpZXcgKndlYlZpZXcgPSBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldl
YlZpZXcoKS0+cGxhdGZvcm1WaWV3KCk7CisgICAgTlNEaWN0aW9uYXJ5ICpjb250ZW50RGljdGlv
bmFyeSA9IFt3ZWJWaWV3IF9jb250ZW50c09mVXNlckludGVyZmFjZUl0ZW06dG9XVEZTdHJpbmco
dG9XSyhpbnRlcmZhY2VJdGVtKSldOworICAgIHJldHVybiBKU1ZhbHVlVG9PYmplY3QobV9jb250
ZXh0LT5qc0NvbnRleHQoKSwgW0pTVmFsdWUgdmFsdWVXaXRoT2JqZWN0OmNvbnRlbnREaWN0aW9u
YXJ5IGluQ29udGV4dDpbSlNDb250ZXh0IGNvbnRleHRXaXRoSlNHbG9iYWxDb250ZXh0UmVmOm1f
Y29udGV4dC0+anNDb250ZXh0KCldXS5KU1ZhbHVlUmVmLCBudWxscHRyKTsKKyNlbHNlCisgICAg
VU5VU0VEX1BBUkFNKGludGVyZmFjZUl0ZW0pOworICAgIHJldHVybiBudWxscHRyOworI2VuZGlm
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdUUgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tCmluZGV4IDViZjBmNmZhODNkNDc1YjQzN2Uz
YWI4NjlkN2Q4YTc5Yzg1NjY0OTAuLmY1MmY5YTM1Nzg2YzlkMDk4NjQ1Y2QwZjIwMDI4MzhmZjdl
ZTEwNjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29u
dHJvbGxlcklPUy5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENv
bnRyb2xsZXJJT1MubW0KQEAgLTYwLDE3ICs2MCw2IEBAIHZvaWQgVUlTY3JpcHRDb250cm9sbGVy
OjpjaGVja0Zvck91dHN0YW5kaW5nQ2FsbGJhY2tzKCkKICAgICAgICAgW05TRXhjZXB0aW9uIHJh
aXNlOkAiV2ViS2l0VGVzdFJ1bm5lclRlc3RQcm9ibGVtIiBmb3JtYXQ6QCJUaGUgdGVzdCBjb21w
bGV0ZWQgYmVmb3JlIGFsbCBzeW50aGVzaXplZCBldmVudHMgaGFkIGJlZW4gaGFuZGxlZC4gUGVy
aGFwcyB5b3UncmUgY2FsbGluZyBub3RpZnlEb25lKCkgdG9vIGVhcmx5PyJdOwogfQogCi12b2lk
IFVJU2NyaXB0Q29udHJvbGxlcjo6ZG9Bc3luY1Rhc2soSlNWYWx1ZVJlZiBjYWxsYmFjaykKLXsK
LSAgICB1bnNpZ25lZCBjYWxsYmFja0lEID0gbV9jb250ZXh0LT5wcmVwYXJlRm9yQXN5bmNUYXNr
KGNhbGxiYWNrLCBDYWxsYmFja1R5cGVOb25QZXJzaXN0ZW50KTsKLQotICAgIGRpc3BhdGNoX2Fz
eW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57Ci0gICAgICAgIGlmICghbV9jb250ZXh0
KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBtX2NvbnRleHQtPmFzeW5jVGFza0NvbXBs
ZXRlKGNhbGxiYWNrSUQpOwotICAgIH0pOwotfQotCiB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6
ZG9BZnRlclByZXNlbnRhdGlvblVwZGF0ZShKU1ZhbHVlUmVmIGNhbGxiYWNrKQogewogICAgIFRl
c3RSdW5uZXJXS1dlYlZpZXcgKndlYlZpZXcgPSBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCku
bWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCk7CkBAIC00MTAsMTkgKzM5OSw2IEBAIHZvaWQg
VUlTY3JpcHRDb250cm9sbGVyOjpzZXRUaW1lUGlja2VyVmFsdWUobG9uZyBob3VyLCBsb25nIG1p
bnV0ZSkKICAgICBbd2ViVmlldyBzZXRUaW1lUGlja2VyVmFsdWVUb0hvdXI6aG91ciBtaW51dGU6
bWludXRlXTsKIH0KIAotdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OnNldFNoYXJlU2hlZXRDb21w
bGV0ZXNJbW1lZGlhdGVseVdpdGhSZXNvbHV0aW9uKGJvb2wgcmVzb2x2ZWQpCi17Ci0gICAgVGVz
dFJ1bm5lcldLV2ViVmlldyAqd2ViVmlldyA9IFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5t
YWluV2ViVmlldygpLT5wbGF0Zm9ybVZpZXcoKTsKLSAgICBbd2ViVmlldyBfc2V0U2hhcmVTaGVl
dENvbXBsZXRlc0ltbWVkaWF0ZWx5V2l0aFJlc29sdXRpb25Gb3JUZXN0aW5nOnJlc29sdmVkXTsK
LX0KLSAgICAKLUpTT2JqZWN0UmVmIFVJU2NyaXB0Q29udHJvbGxlcjo6Y29udGVudHNPZlVzZXJJ
bnRlcmZhY2VJdGVtKEpTU3RyaW5nUmVmIGludGVyZmFjZUl0ZW0pIGNvbnN0Ci17Ci0gICAgVGVz
dFJ1bm5lcldLV2ViVmlldyAqd2ViVmlldyA9IFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5t
YWluV2ViVmlldygpLT5wbGF0Zm9ybVZpZXcoKTsKLSAgICBOU0RpY3Rpb25hcnkgKmNvbnRlbnRE
aWN0aW9uYXJ5ID0gW3dlYlZpZXcgX2NvbnRlbnRzT2ZVc2VySW50ZXJmYWNlSXRlbTp0b1dURlN0
cmluZyh0b1dLKGludGVyZmFjZUl0ZW0pKV07Ci0gICAgcmV0dXJuIEpTVmFsdWVUb09iamVjdCht
X2NvbnRleHQtPmpzQ29udGV4dCgpLCBbSlNWYWx1ZSB2YWx1ZVdpdGhPYmplY3Q6Y29udGVudERp
Y3Rpb25hcnkgaW5Db250ZXh0OltKU0NvbnRleHQgY29udGV4dFdpdGhKU0dsb2JhbENvbnRleHRS
ZWY6bV9jb250ZXh0LT5qc0NvbnRleHQoKV1dLkpTVmFsdWVSZWYsIG51bGxwdHIpOwotfQotCiBz
dGF0aWMgQ0dQb2ludCBjb250ZW50T2Zmc2V0Qm91bmRlZEluVmFsaWRSYW5nZShVSVNjcm9sbFZp
ZXcgKnNjcm9sbFZpZXcsIENHUG9pbnQgY29udGVudE9mZnNldCkKIHsKICAgICBVSUVkZ2VJbnNl
dHMgY29udGVudEluc2V0cyA9IHNjcm9sbFZpZXcuY29udGVudEluc2V0OwpAQCAtNjM3LDIyICs2
MTMsNiBAQCB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6c2ltdWxhdGVSb3RhdGlvbkxpa2VTYWZh
cmkoRGV2aWNlT3JpZW50YXRpb24qIG9yaWVudGF0aQogICAgIFtbVUlEZXZpY2UgY3VycmVudERl
dmljZV0gc2V0T3JpZW50YXRpb246dG9VSURldmljZU9yaWVudGF0aW9uKG9yaWVudGF0aW9uKSBh
bmltYXRlZDpZRVNdOwogfQogCi12b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6ZmluZFN0cmluZyhK
U1N0cmluZ1JlZiBzdHJpbmcsIHVuc2lnbmVkIGxvbmcgb3B0aW9ucywgdW5zaWduZWQgbG9uZyBt
YXhDb3VudCkKLXsKLSAgICBUZXN0UnVubmVyV0tXZWJWaWV3ICp3ZWJWaWV3ID0gVGVzdENvbnRy
b2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygpOwotICAgIFt3
ZWJWaWV3IF9maW5kU3RyaW5nOnRvV1RGU3RyaW5nKHRvV0soc3RyaW5nKSkgb3B0aW9uczpvcHRp
b25zIG1heENvdW50Om1heENvdW50XTsKLX0KLQotdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OnJl
bW92ZVZpZXdGcm9tV2luZG93KEpTVmFsdWVSZWYgY2FsbGJhY2spCi17Ci0gICAgVGVzdENvbnRy
b2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnJlbW92ZUZyb21XaW5kb3coKTsKLX0K
LQotdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OmFkZFZpZXdUb1dpbmRvdyhKU1ZhbHVlUmVmIGNh
bGxiYWNrKQotewotICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWluV2ViVmlldygp
LT5hZGRUb1dpbmRvdygpOwotfQotCiB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6cGxhdGZvcm1T
ZXREaWRTdGFydEZvcm1Db250cm9sSW50ZXJhY3Rpb25DYWxsYmFjaygpCiB7CiAgICAgVGVzdFJ1
bm5lcldLV2ViVmlldyAqd2ViVmlldyA9IFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWlu
V2ViVmlldygpLT5wbGF0Zm9ybVZpZXcoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvbWFjL1VJU2NyaXB0Q29udHJvbGxlck1hYy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvbWFjL1VJU2NyaXB0Q29udHJvbGxlck1hYy5tbQppbmRleCAyYzJiNWQxOTllMGQxMjQxYzhj
OTIxYTY0MWNmZTA4MTAzMTU3NjRkLi4zMzMzYjQ2YjVmODFlMDM1MzkxMDcyZmE2NzExZTRiMDRj
OGVkN2I1IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9VSVNjcmlwdENv
bnRyb2xsZXJNYWMubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvVUlTY3JpcHRD
b250cm9sbGVyTWFjLm1tCkBAIC00OSwxNyArNDksNiBAQCBOU1N0cmluZyAqbnNTdHJpbmcoSlNT
dHJpbmdSZWYgc3RyaW5nKQogICAgIHJldHVybiBDRkJyaWRnaW5nUmVsZWFzZShKU1N0cmluZ0Nv
cHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzdHJpbmcpKTsKIH0KIAotdm9pZCBVSVNj
cmlwdENvbnRyb2xsZXI6OmRvQXN5bmNUYXNrKEpTVmFsdWVSZWYgY2FsbGJhY2spCi17Ci0gICAg
dW5zaWduZWQgY2FsbGJhY2tJRCA9IG1fY29udGV4dC0+cHJlcGFyZUZvckFzeW5jVGFzayhjYWxs
YmFjaywgQ2FsbGJhY2tUeXBlTm9uUGVyc2lzdGVudCk7Ci0KLSAgICBkaXNwYXRjaF9hc3luYyhk
aXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeewotICAgICAgICBpZiAoIW1fY29udGV4dCkKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgbV9jb250ZXh0LT5hc3luY1Rhc2tDb21wbGV0ZShj
YWxsYmFja0lEKTsKLSAgICB9KTsKLX0KLQogdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OmRvQWZ0
ZXJQcmVzZW50YXRpb25VcGRhdGUoSlNWYWx1ZVJlZiBjYWxsYmFjaykKIHsKICAgICByZXR1cm4g
ZG9Bc3luY1Rhc2soY2FsbGJhY2spOwpAQCAtMTI1LDM0ICsxMTQsNiBAQCB2b2lkIFVJU2NyaXB0
Q29udHJvbGxlcjo6c2ltdWxhdGVBY2Nlc3NpYmlsaXR5U2V0dGluZ3NDaGFuZ2VOb3RpZmljYXRp
b24oSlNWYWx1ZQogI2VuZGlmCiB9CiAKLUpTT2JqZWN0UmVmIFVJU2NyaXB0Q29udHJvbGxlcjo6
Y29udGVudHNPZlVzZXJJbnRlcmZhY2VJdGVtKEpTU3RyaW5nUmVmIGludGVyZmFjZUl0ZW0pIGNv
bnN0Ci17Ci0jaWYgV0tfQVBJX0VOQUJMRUQKLSAgICBUZXN0UnVubmVyV0tXZWJWaWV3ICp3ZWJW
aWV3ID0gVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBsYXRmb3Jt
VmlldygpOwotICAgIE5TRGljdGlvbmFyeSAqY29udGVudERpY3Rpb25hcnkgPSBbd2ViVmlldyBf
Y29udGVudHNPZlVzZXJJbnRlcmZhY2VJdGVtOnRvV1RGU3RyaW5nKHRvV0soaW50ZXJmYWNlSXRl
bSkpXTsKLSAgICByZXR1cm4gSlNWYWx1ZVRvT2JqZWN0KG1fY29udGV4dC0+anNDb250ZXh0KCks
IFtKU1ZhbHVlIHZhbHVlV2l0aE9iamVjdDpjb250ZW50RGljdGlvbmFyeSBpbkNvbnRleHQ6W0pT
Q29udGV4dCBjb250ZXh0V2l0aEpTR2xvYmFsQ29udGV4dFJlZjptX2NvbnRleHQtPmpzQ29udGV4
dCgpXV0uSlNWYWx1ZVJlZiwgbnVsbHB0cik7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShpbnRl
cmZhY2VJdGVtKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKLSNlbmRpZgotfQotCi12b2lkIFVJU2Ny
aXB0Q29udHJvbGxlcjo6b3ZlcnJpZGVQcmVmZXJlbmNlKEpTU3RyaW5nUmVmIHByZWZlcmVuY2VS
ZWYsIEpTU3RyaW5nUmVmIHZhbHVlUmVmKQotewotI2lmIFdLX0FQSV9FTkFCTEVECi0gICAgVGVz
dFJ1bm5lcldLV2ViVmlldyAqd2ViVmlldyA9IFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5t
YWluV2ViVmlldygpLT5wbGF0Zm9ybVZpZXcoKTsKLSAgICBXS1ByZWZlcmVuY2VzICpwcmVmZXJl
bmNlcyA9IHdlYlZpZXcuY29uZmlndXJhdGlvbi5wcmVmZXJlbmNlczsKLQotICAgIFN0cmluZyBw
cmVmZXJlbmNlID0gdG9XVEZTdHJpbmcodG9XSyhwcmVmZXJlbmNlUmVmKSk7Ci0gICAgU3RyaW5n
IHZhbHVlID0gdG9XVEZTdHJpbmcodG9XSyh2YWx1ZVJlZikpOwotICAgIGlmIChwcmVmZXJlbmNl
ID09ICJXZWJLaXRNaW5pbXVtRm9udFNpemUiKQotICAgICAgICBwcmVmZXJlbmNlcy5taW5pbXVt
Rm9udFNpemUgPSB2YWx1ZS50b0RvdWJsZSgpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0ocHJl
ZmVyZW5jZVJlZik7Ci0gICAgVU5VU0VEX1BBUkFNKHZhbHVlUmVmKTsKLSNlbmRpZgotfQotCiB2
b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6c2ltdWxhdGVSb3RhdGlvbihEZXZpY2VPcmllbnRhdGlv
biosIEpTVmFsdWVSZWYpCiB7CiB9CkBAIC0xNjEsMTAgKzEyMiw2IEBAIHZvaWQgVUlTY3JpcHRD
b250cm9sbGVyOjpzaW11bGF0ZVJvdGF0aW9uTGlrZVNhZmFyaShEZXZpY2VPcmllbnRhdGlvbios
IEpTVmFsdWVSCiB7CiB9CiAKLXZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjpmaW5kU3RyaW5nKEpT
U3RyaW5nUmVmLCB1bnNpZ25lZCBsb25nIG9wdGlvbnMsIHVuc2lnbmVkIGxvbmcgbWF4Q291bnQp
Ci17Ci19Ci0KIGJvb2wgVUlTY3JpcHRDb250cm9sbGVyOjppc1Nob3dpbmdEYXRhTGlzdFN1Z2dl
c3Rpb25zKCkgY29uc3QKIHsKICNpZiBXS19BUElfRU5BQkxFRApAQCAtMTc3LDQyICsxMzQsNiBA
QCBib29sIFVJU2NyaXB0Q29udHJvbGxlcjo6aXNTaG93aW5nRGF0YUxpc3RTdWdnZXN0aW9ucygp
IGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6
cmVtb3ZlVmlld0Zyb21XaW5kb3coSlNWYWx1ZVJlZiBjYWxsYmFjaykKLXsKLSNpZiBXS19BUElf
RU5BQkxFRAotICAgIHVuc2lnbmVkIGNhbGxiYWNrSUQgPSBtX2NvbnRleHQtPnByZXBhcmVGb3JB
c3luY1Rhc2soY2FsbGJhY2ssIENhbGxiYWNrVHlwZU5vblBlcnNpc3RlbnQpOwotCi0gICAgYXV0
byogbWFpbldlYlZpZXcgPSBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXco
KTsKLSAgICBtYWluV2ViVmlldy0+cmVtb3ZlRnJvbVdpbmRvdygpOwotCi0gICAgW21haW5XZWJW
aWV3LT5wbGF0Zm9ybVZpZXcoKSBfZG9BZnRlck5leHRQcmVzZW50YXRpb25VcGRhdGU6IF4gewot
ICAgICAgICBpZiAoIW1fY29udGV4dCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgbV9j
b250ZXh0LT5hc3luY1Rhc2tDb21wbGV0ZShjYWxsYmFja0lEKTsKLSAgICB9XTsKLSNlbHNlCi0g
ICAgVU5VU0VEX1BBUkFNKGNhbGxiYWNrKTsKLSNlbmRpZgotfQotCi12b2lkIFVJU2NyaXB0Q29u
dHJvbGxlcjo6YWRkVmlld1RvV2luZG93KEpTVmFsdWVSZWYgY2FsbGJhY2spCi17Ci0jaWYgV0tf
QVBJX0VOQUJMRUQKLSAgICB1bnNpZ25lZCBjYWxsYmFja0lEID0gbV9jb250ZXh0LT5wcmVwYXJl
Rm9yQXN5bmNUYXNrKGNhbGxiYWNrLCBDYWxsYmFja1R5cGVOb25QZXJzaXN0ZW50KTsKLQotICAg
IGF1dG8qIG1haW5XZWJWaWV3ID0gVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJW
aWV3KCk7Ci0gICAgbWFpbldlYlZpZXctPmFkZFRvV2luZG93KCk7Ci0KLSAgICBbbWFpbldlYlZp
ZXctPnBsYXRmb3JtVmlldygpIF9kb0FmdGVyTmV4dFByZXNlbnRhdGlvblVwZGF0ZTogXiB7Ci0g
ICAgICAgIGlmICghbV9jb250ZXh0KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBtX2Nv
bnRleHQtPmFzeW5jVGFza0NvbXBsZXRlKGNhbGxiYWNrSUQpOwotICAgIH1dOwotI2Vsc2UKLSAg
ICBVTlVTRURfUEFSQU0oY2FsbGJhY2spOwotI2VuZGlmCi19Ci0KIHN0YXRpYyB2b2lkIHBsYXlC
YWNrRXZlbnRzKFVJU2NyaXB0Q29udGV4dCAqY29udGV4dCwgTlNTdHJpbmcgKmV2ZW50U3RyZWFt
LCBKU1ZhbHVlUmVmIGNhbGxiYWNrKQogewogICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOwpAQCAt
MjcwLDE0ICsxOTEsNCBAQCBib29sIFVJU2NyaXB0Q29udHJvbGxlcjo6aXNXaW5kb3dDb250ZW50
Vmlld0ZpcnN0UmVzcG9uZGVyKCkgY29uc3QKICAgICByZXR1cm4gW3dpbmRvdyBmaXJzdFJlc3Bv
bmRlcl0gPT0gW3dpbmRvdyBjb250ZW50Vmlld107CiB9CiAKLXZvaWQgVUlTY3JpcHRDb250cm9s
bGVyOjpzZXRTaGFyZVNoZWV0Q29tcGxldGVzSW1tZWRpYXRlbHlXaXRoUmVzb2x1dGlvbihib29s
IHJlc29sdmVkKQotewotI2lmIFdLX0FQSV9FTkFCTEVECi0gICAgVGVzdFJ1bm5lcldLV2ViVmll
dyAqd2ViVmlldyA9IFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWluV2ViVmlldygpLT5w
bGF0Zm9ybVZpZXcoKTsKLSAgICBbd2ViVmlldyBfc2V0U2hhcmVTaGVldENvbXBsZXRlc0ltbWVk
aWF0ZWx5V2l0aFJlc29sdXRpb25Gb3JUZXN0aW5nOnJlc29sdmVkXTsKLSNlbHNlCi0gICAgVU5V
U0VEX1BBUkFNKHJlc29sdmVkKTsKLSNlbmRpZgotfQotCiB9IC8vIG5hbWVzcGFjZSBXVFIK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353806</attachid>
            <date>2018-11-04 12:21:01 -0800</date>
            <delta_ts>2018-11-04 13:19:51 -0800</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>bug-191231-20181104122101.patch</filename>
            <type>text/plain</type>
            <size>16587</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3NzQzCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOGMzNTYyZWViMmVjYTMzZWFhMjhmMzZlNjdjNDNmNTBk
NGQzZmNlNC4uMzU4YzBiOGIyNjU2MjM5YjhjNWRiNzM4YTNmYzc0ZWYzMmRlNTA5YiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3
IEBACisyMDE4LTExLTAzICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgor
CisgICAgICAgIFtDb2NvYV0gRm9sZCBjb21tb24gVUlTY3JpcHRDb250cm9sbGVyIGZ1bmN0aW9u
YWxpdHkgb24gbWFjT1MgYW5kIGlPUyBpbnRvIFVJU2NyaXB0Q29udHJvbGxlckNvY29hLm1tCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTEyMzEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgTW92ZXMgc29tZSBV
SVNjcmlwdENvbnRyb2xsZXIgbWV0aG9kIGltcGxlbWVudGF0aW9ucyBzcGVjaWZpYyB0byBpT1Mg
YW5kIG1hY09TIGludG8gVUlTY3JpcHRDb250cm9sbGVyQ29jb2EsIHNvCisgICAgICAgIGl0IGNh
biBiZSBzaGFyZWQgYmV0d2VlbiBpT1MtZmFtaWx5IGFuZCBtYWNPUyBwbGF0Zm9ybXMuIFNlZSBi
ZWxvdyBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgICAgIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4K
KworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW06
CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6b3ZlcnJpZGVQcmVmZXJlbmNlKToK
KworICAgICAgICBBZGQgYSBtZXRob2Qgc3R1YiBmb3IgRHVtcFJlbmRlclRyZWUuCisKKyAgICAg
ICAgKiBUZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVUlTY3JpcHRDb250cm9sbGVyQ29jb2Eu
bW06CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6ZG9Bc3luY1Rhc2spOgorICAg
ICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6OnNldFNoYXJlU2hlZXRDb21wbGV0ZXNJbW1l
ZGlhdGVseVdpdGhSZXNvbHV0aW9uKToKKworICAgICAgICBVbmlmeSB0aGVzZSBtZXRob2QgaW1w
bGVtZW50YXRpb25zLgorCisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6cmVtb3Zl
Vmlld0Zyb21XaW5kb3cpOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6OmFkZFZp
ZXdUb1dpbmRvdyk6CisKKyAgICAgICAgTW92ZSB0aGUgbWFjT1MgaW1wbGVtZW50YXRpb24gdG8g
VUlTY3JpcHRDb250cm9sbGVyQ29jb2EuIE9uIGlPUywgdGhpcyBtZXRob2QgY3VycmVudGx5IG9u
bHkgYWRkcyB0aGUgd2ViIHZpZXcKKyAgICAgICAgdG8gdGhlIHdpbmRvdywgYW5kIGRvZXMgbm90
IGF0dGVtcHQgdG8gaW52b2tlIHRoZSBnaXZlbiBjb21wbGV0aW9uIGJsb2NrOyBhZGRpdGlvbmFs
bHksIGludm9raW5nIHRoZSBjb21wbGV0aW9uCisgICAgICAgIGJsb2NrIGFmdGVyIGEgcHJlc2Vu
dGF0aW9uIHVwZGF0ZSAoYXMgZG9uZSBvbiBtYWNPUykgY2F1c2VzIHBhZ2VvdmVybGF5L292ZXJs
YXktcmVtb3ZlLXJlaW5zZXJ0LXZpZXcuaHRtbCB0bworICAgICAgICBiZWdpbiBmYWlsaW5nIGNv
bnNpc3RlbnRseS4gVGhpcyBwYXRjaCBkb2VzIG5vdCBhdHRlbXB0IHRvIGNoYW5nZSBiZWhhdmlv
ciwgYnV0IGFkZHMgYSBGSVhNRSBkZXNjcmliaW5nIHRoaXMuCisKKyAgICAgICAgKFdUUjo6VUlT
Y3JpcHRDb250cm9sbGVyOjpvdmVycmlkZVByZWZlcmVuY2UpOgorICAgICAgICAoV1RSOjpVSVNj
cmlwdENvbnRyb2xsZXI6OmZpbmRTdHJpbmcpOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRy
b2xsZXI6OmNvbnRlbnRzT2ZVc2VySW50ZXJmYWNlSXRlbSBjb25zdCk6CisKKyAgICAgICAgTW92
ZSB0aGVzZSBmcm9tIFVJU2NyaXB0Q29udHJvbGxlck1hYyB0byBVSVNjcmlwdENvbnRyb2xsZXJD
b2NvYSwgc28gdGhhdCBpdCBpcyBub3cgaW1wbGVtZW50ZWQgb24gaU9TIGFzIHdlbGwuCisKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW06Cisg
ICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6ZG9Bc3luY1Rhc2spOiBEZWxldGVkLgor
ICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6OnNldFNoYXJlU2hlZXRDb21wbGV0ZXNJ
bW1lZGlhdGVseVdpdGhSZXNvbHV0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6VUlTY3Jp
cHRDb250cm9sbGVyOjpjb250ZW50c09mVXNlckludGVyZmFjZUl0ZW0gY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6OmZpbmRTdHJpbmcpOiBEZWxldGVk
LgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6OnJlbW92ZVZpZXdGcm9tV2luZG93
KTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjphZGRWaWV3VG9X
aW5kb3cpOiBEZWxldGVkLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvbWFjL1VJU2NyaXB0
Q29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjpkb0Fz
eW5jVGFzayk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6Y29u
dGVudHNPZlVzZXJJbnRlcmZhY2VJdGVtIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6
VUlTY3JpcHRDb250cm9sbGVyOjpvdmVycmlkZVByZWZlcmVuY2UpOiBEZWxldGVkLgorICAgICAg
ICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6OmZpbmRTdHJpbmcpOiBEZWxldGVkLgorICAgICAg
ICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6OnJlbW92ZVZpZXdGcm9tV2luZG93KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjphZGRWaWV3VG9XaW5kb3cpOiBE
ZWxldGVkLgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6OnNldFNoYXJlU2hlZXRD
b21wbGV0ZXNJbW1lZGlhdGVseVdpdGhSZXNvbHV0aW9uKTogRGVsZXRlZC4KKwogMjAxOC0xMS0w
MyAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9T
XSBDaGFuZ2luZyB2aWV3IHNjYWxlIHNvbWV0aW1lcyBkb2VzIG5vdCB6b29tIHRoZSBwYWdlIHRv
IHRoZSBuZXcgaW5pdGlhbCBzY2FsZSB3aGVuIHRoZSBwYWdlIGlzIHpvb21lZCBpbiB3aGVuIGln
bm9yaW5nIG1ldGEgdmlld3BvcnQKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2lv
cy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9pb3MvVUlT
Y3JpcHRDb250cm9sbGVySU9TLm1tCmluZGV4IDEwOTAxMGRlY2E0ODJjYmU1YmM4MDI2ODdkNWE1
M2Q1Y2U3ZGY0YmYuLmVjZTc4Y2E5MDNhMzMyMTY0NDI0ZTY0ZTc3MjJjOTkwYjZkNmYxMDkgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1Mu
bW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5t
bQpAQCAtMzk0LDYgKzM5NCwxMCBAQCBib29sIFVJU2NyaXB0Q29udHJvbGxlcjo6aXNTaG93aW5n
RGF0YUxpc3RTdWdnZXN0aW9ucygpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCit2b2lk
IFVJU2NyaXB0Q29udHJvbGxlcjo6b3ZlcnJpZGVQcmVmZXJlbmNlKEpTU3RyaW5nUmVmLCBKU1N0
cmluZ1JlZikKK3sKK30KKwogfQogCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0
Q29udHJvbGxlci5jcHAgYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9V
SVNjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDZlMjViZTNkZTZkMjQyNTQ5ZmM3NzcyNDk4MWRi
OWE3MWUzODI2NjEuLmU0NTljNmRjMmNiZjE5MTYzMDk2OTA5OGI5NjcwMDg2MjU0YTljZmQgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0
Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRl
eHQvVUlTY3JpcHRDb250cm9sbGVyLmNwcApAQCAtNTEyLDE0ICs1MTIsMTQgQEAgYm9vbCBVSVNj
cmlwdENvbnRyb2xsZXI6OmlzU2hvd2luZ0RhdGFMaXN0U3VnZ2VzdGlvbnMoKSBjb25zdAogICAg
IHJldHVybiBmYWxzZTsKIH0KIAotI2VuZGlmIC8vICFQTEFURk9STShDT0NPQSkKLQotI2lmICFQ
TEFURk9STShNQUMpCi0KIHZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjpvdmVycmlkZVByZWZlcmVu
Y2UoSlNTdHJpbmdSZWYsIEpTU3RyaW5nUmVmKQogewogfQogCisjZW5kaWYgLy8gIVBMQVRGT1JN
KENPQ09BKQorCisjaWYgIVBMQVRGT1JNKE1BQykKKwogdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6
OnJlcGxhY2VUZXh0QXRSYW5nZShKU1N0cmluZ1JlZiwgaW50LCBpbnQpCiB7CiB9CmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1VJU2NyaXB0Q29udHJvbGxlckNvY29hLm1tIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9VSVNjcmlwdENvbnRyb2xsZXJDb2NvYS5tbQppbmRleCA3
ZjViNmM1OWNmZmE2MzM3ZTMzODVmNjI1YzkzMTg0OGZiMDNkYzk5Li4zYWFiYzM0NzRlNWZiMjhm
M2Q3MGMwNWIzMDlkYjM5NWMxZjM0Y2JmIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL1VJU2NyaXB0Q29udHJvbGxlckNvY29hLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVUlTY3JpcHRDb250cm9sbGVyQ29jb2EubW0KQEAgLTI3LDggKzI3LDExIEBACiAjaW1wb3J0
ICJVSVNjcmlwdENvbnRyb2xsZXIuaCIKIAogI2ltcG9ydCAiUGxhdGZvcm1XZWJWaWV3LmgiCisj
aW1wb3J0ICJTdHJpbmdGdW5jdGlvbnMuaCIKICNpbXBvcnQgIlRlc3RDb250cm9sbGVyLmgiCiAj
aW1wb3J0ICJUZXN0UnVubmVyV0tXZWJWaWV3LmgiCisjaW1wb3J0ICJVSVNjcmlwdENvbnRleHQu
aCIKKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmg+CiAjaW1wb3J0IDxX
ZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgogCiBuYW1lc3BhY2UgV1RSIHsKQEAgLTQ5LDQgKzUy
LDExNiBAQCB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6cmVzaWduRmlyc3RSZXNwb25kZXIoKQog
I2VuZGlmCiB9CiAKK3ZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjpkb0FzeW5jVGFzayhKU1ZhbHVl
UmVmIGNhbGxiYWNrKQoreworICAgIHVuc2lnbmVkIGNhbGxiYWNrSUQgPSBtX2NvbnRleHQtPnBy
ZXBhcmVGb3JBc3luY1Rhc2soY2FsbGJhY2ssIENhbGxiYWNrVHlwZU5vblBlcnNpc3RlbnQpOwor
CisgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKKyAgICAg
ICAgaWYgKCFtX2NvbnRleHQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fY29udGV4
dC0+YXN5bmNUYXNrQ29tcGxldGUoY2FsbGJhY2tJRCk7CisgICAgfSk7Cit9CisKK3ZvaWQgVUlT
Y3JpcHRDb250cm9sbGVyOjpzZXRTaGFyZVNoZWV0Q29tcGxldGVzSW1tZWRpYXRlbHlXaXRoUmVz
b2x1dGlvbihib29sIHJlc29sdmVkKQoreworI2lmIFdLX0FQSV9FTkFCTEVECisgICAgVGVzdFJ1
bm5lcldLV2ViVmlldyAqd2ViVmlldyA9IFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWlu
V2ViVmlldygpLT5wbGF0Zm9ybVZpZXcoKTsKKyAgICBbd2ViVmlldyBfc2V0U2hhcmVTaGVldENv
bXBsZXRlc0ltbWVkaWF0ZWx5V2l0aFJlc29sdXRpb25Gb3JUZXN0aW5nOnJlc29sdmVkXTsKKyNl
bHNlCisgICAgVU5VU0VEX1BBUkFNKHJlc29sdmVkKTsKKyNlbmRpZgorfQorCit2b2lkIFVJU2Ny
aXB0Q29udHJvbGxlcjo6cmVtb3ZlVmlld0Zyb21XaW5kb3coSlNWYWx1ZVJlZiBjYWxsYmFjaykK
K3sKKyNpZiBXS19BUElfRU5BQkxFRAorICAgIC8vIEZJWE1FOiBPbiBpT1MsIHdlIG5ldmVyIGlu
dm9rZSB0aGUgY29tcGxldGlvbiBjYWxsYmFjayB0aGF0J3MgcGFzc2VkIGluLiBGaXhpbmcgdGhp
cyBjYXVzZXMgdGhlIGxheW91dAorICAgIC8vIHRlc3QgcGFnZW92ZXJsYXkvb3ZlcmxheS1yZW1v
dmUtcmVpbnNlcnQtdmlldy5odG1sIHRvIHN0YXJ0IGZhaWxpbmcgY29uc2lzdGVudGx5IG9uIGlP
Uy4gSXQgc2VlbXMgbGlrZQorICAgIC8vIHRoaXMgd2FycmFudHMgc29tZSBtb3JlIGludmVzdGln
YXRpb24uCisjaWYgUExBVEZPUk0oTUFDKQorICAgIHVuc2lnbmVkIGNhbGxiYWNrSUQgPSBtX2Nv
bnRleHQtPnByZXBhcmVGb3JBc3luY1Rhc2soY2FsbGJhY2ssIENhbGxiYWNrVHlwZU5vblBlcnNp
c3RlbnQpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oY2FsbGJhY2spOworI2VuZGlmCisKKyAg
ICBhdXRvKiBtYWluV2ViVmlldyA9IFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWluV2Vi
VmlldygpOworICAgIG1haW5XZWJWaWV3LT5yZW1vdmVGcm9tV2luZG93KCk7CisKKyNpZiBQTEFU
Rk9STShNQUMpCisgICAgW21haW5XZWJWaWV3LT5wbGF0Zm9ybVZpZXcoKSBfZG9BZnRlck5leHRQ
cmVzZW50YXRpb25VcGRhdGU6XnsKKyAgICAgICAgaWYgKCFtX2NvbnRleHQpCisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIG1fY29udGV4dC0+YXN5bmNUYXNrQ29tcGxldGUoY2FsbGJhY2tJ
RCk7CisgICAgfV07CisjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQorI2Vsc2UKKyAgICBVTlVTRURf
UEFSQU0oY2FsbGJhY2spOworI2VuZGlmCit9CisKK3ZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjph
ZGRWaWV3VG9XaW5kb3coSlNWYWx1ZVJlZiBjYWxsYmFjaykKK3sKKyNpZiBXS19BUElfRU5BQkxF
RAorI2lmIFBMQVRGT1JNKE1BQykKKyAgICB1bnNpZ25lZCBjYWxsYmFja0lEID0gbV9jb250ZXh0
LT5wcmVwYXJlRm9yQXN5bmNUYXNrKGNhbGxiYWNrLCBDYWxsYmFja1R5cGVOb25QZXJzaXN0ZW50
KTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGNhbGxiYWNrKTsKKyNlbmRpZgorCisgICAgYXV0
byogbWFpbldlYlZpZXcgPSBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXco
KTsKKyAgICBtYWluV2ViVmlldy0+YWRkVG9XaW5kb3coKTsKKworI2lmIFBMQVRGT1JNKE1BQykK
KyAgICBbbWFpbldlYlZpZXctPnBsYXRmb3JtVmlldygpIF9kb0FmdGVyTmV4dFByZXNlbnRhdGlv
blVwZGF0ZTpeeworICAgICAgICBpZiAoIW1fY29udGV4dCkKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgbV9jb250ZXh0LT5hc3luY1Rhc2tDb21wbGV0ZShjYWxsYmFja0lEKTsKKyAgICB9
XTsKKyNlbmRpZiAvLyBQTEFURk9STShNQUMpCisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShjYWxs
YmFjayk7CisjZW5kaWYKK30KKwordm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6Om92ZXJyaWRlUHJl
ZmVyZW5jZShKU1N0cmluZ1JlZiBwcmVmZXJlbmNlUmVmLCBKU1N0cmluZ1JlZiB2YWx1ZVJlZikK
K3sKKyNpZiBXS19BUElfRU5BQkxFRAorICAgIFRlc3RSdW5uZXJXS1dlYlZpZXcgKndlYlZpZXcg
PSBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3
KCk7CisgICAgV0tQcmVmZXJlbmNlcyAqcHJlZmVyZW5jZXMgPSB3ZWJWaWV3LmNvbmZpZ3VyYXRp
b24ucHJlZmVyZW5jZXM7CisKKyAgICBTdHJpbmcgcHJlZmVyZW5jZSA9IHRvV1RGU3RyaW5nKHRv
V0socHJlZmVyZW5jZVJlZikpOworICAgIFN0cmluZyB2YWx1ZSA9IHRvV1RGU3RyaW5nKHRvV0so
dmFsdWVSZWYpKTsKKyAgICBpZiAocHJlZmVyZW5jZSA9PSAiV2ViS2l0TWluaW11bUZvbnRTaXpl
IikKKyAgICAgICAgcHJlZmVyZW5jZXMubWluaW11bUZvbnRTaXplID0gdmFsdWUudG9Eb3VibGUo
KTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHByZWZlcmVuY2VSZWYpOworICAgIFVOVVNFRF9Q
QVJBTSh2YWx1ZVJlZik7CisjZW5kaWYKK30KKwordm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OmZp
bmRTdHJpbmcoSlNTdHJpbmdSZWYgc3RyaW5nLCB1bnNpZ25lZCBsb25nIG9wdGlvbnMsIHVuc2ln
bmVkIGxvbmcgbWF4Q291bnQpCit7CisjaWYgV0tfQVBJX0VOQUJMRUQKKyAgICBUZXN0UnVubmVy
V0tXZWJWaWV3ICp3ZWJWaWV3ID0gVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJW
aWV3KCktPnBsYXRmb3JtVmlldygpOworICAgIFt3ZWJWaWV3IF9maW5kU3RyaW5nOnRvV1RGU3Ry
aW5nKHRvV0soc3RyaW5nKSkgb3B0aW9uczpvcHRpb25zIG1heENvdW50Om1heENvdW50XTsKKyNl
bHNlCisgICAgVU5VU0VEX1BBUkFNKHN0cmluZyk7CisgICAgVU5VU0VEX1BBUkFNKG9wdGlvbnMp
OworICAgIFVOVVNFRF9QQVJBTShtYXhDb3VudCk7CisjZW5kaWYKK30KKworSlNPYmplY3RSZWYg
VUlTY3JpcHRDb250cm9sbGVyOjpjb250ZW50c09mVXNlckludGVyZmFjZUl0ZW0oSlNTdHJpbmdS
ZWYgaW50ZXJmYWNlSXRlbSkgY29uc3QKK3sKKyNpZiBXS19BUElfRU5BQkxFRAorICAgIFRlc3RS
dW5uZXJXS1dlYlZpZXcgKndlYlZpZXcgPSBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFp
bldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCk7CisgICAgTlNEaWN0aW9uYXJ5ICpjb250ZW50RGlj
dGlvbmFyeSA9IFt3ZWJWaWV3IF9jb250ZW50c09mVXNlckludGVyZmFjZUl0ZW06dG9XVEZTdHJp
bmcodG9XSyhpbnRlcmZhY2VJdGVtKSldOworICAgIHJldHVybiBKU1ZhbHVlVG9PYmplY3QobV9j
b250ZXh0LT5qc0NvbnRleHQoKSwgW0pTVmFsdWUgdmFsdWVXaXRoT2JqZWN0OmNvbnRlbnREaWN0
aW9uYXJ5IGluQ29udGV4dDpbSlNDb250ZXh0IGNvbnRleHRXaXRoSlNHbG9iYWxDb250ZXh0UmVm
Om1fY29udGV4dC0+anNDb250ZXh0KCldXS5KU1ZhbHVlUmVmLCBudWxscHRyKTsKKyNlbHNlCisg
ICAgVU5VU0VEX1BBUkFNKGludGVyZmFjZUl0ZW0pOworICAgIHJldHVybiBudWxscHRyOworI2Vu
ZGlmCit9CisKIH0gLy8gbmFtZXNwYWNlIFdUUgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tCmluZGV4IDViZjBmNmZhODNkNDc1YjQz
N2UzYWI4NjlkN2Q4YTc5Yzg1NjY0OTAuLmY1MmY5YTM1Nzg2YzlkMDk4NjQ1Y2QwZjIwMDI4Mzhm
ZjdlZTEwNjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0
Q29udHJvbGxlcklPUy5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlw
dENvbnRyb2xsZXJJT1MubW0KQEAgLTYwLDE3ICs2MCw2IEBAIHZvaWQgVUlTY3JpcHRDb250cm9s
bGVyOjpjaGVja0Zvck91dHN0YW5kaW5nQ2FsbGJhY2tzKCkKICAgICAgICAgW05TRXhjZXB0aW9u
IHJhaXNlOkAiV2ViS2l0VGVzdFJ1bm5lclRlc3RQcm9ibGVtIiBmb3JtYXQ6QCJUaGUgdGVzdCBj
b21wbGV0ZWQgYmVmb3JlIGFsbCBzeW50aGVzaXplZCBldmVudHMgaGFkIGJlZW4gaGFuZGxlZC4g
UGVyaGFwcyB5b3UncmUgY2FsbGluZyBub3RpZnlEb25lKCkgdG9vIGVhcmx5PyJdOwogfQogCi12
b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6ZG9Bc3luY1Rhc2soSlNWYWx1ZVJlZiBjYWxsYmFjaykK
LXsKLSAgICB1bnNpZ25lZCBjYWxsYmFja0lEID0gbV9jb250ZXh0LT5wcmVwYXJlRm9yQXN5bmNU
YXNrKGNhbGxiYWNrLCBDYWxsYmFja1R5cGVOb25QZXJzaXN0ZW50KTsKLQotICAgIGRpc3BhdGNo
X2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57Ci0gICAgICAgIGlmICghbV9jb250
ZXh0KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBtX2NvbnRleHQtPmFzeW5jVGFza0Nv
bXBsZXRlKGNhbGxiYWNrSUQpOwotICAgIH0pOwotfQotCiB2b2lkIFVJU2NyaXB0Q29udHJvbGxl
cjo6ZG9BZnRlclByZXNlbnRhdGlvblVwZGF0ZShKU1ZhbHVlUmVmIGNhbGxiYWNrKQogewogICAg
IFRlc3RSdW5uZXJXS1dlYlZpZXcgKndlYlZpZXcgPSBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9u
KCkubWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCk7CkBAIC00MTAsMTkgKzM5OSw2IEBAIHZv
aWQgVUlTY3JpcHRDb250cm9sbGVyOjpzZXRUaW1lUGlja2VyVmFsdWUobG9uZyBob3VyLCBsb25n
IG1pbnV0ZSkKICAgICBbd2ViVmlldyBzZXRUaW1lUGlja2VyVmFsdWVUb0hvdXI6aG91ciBtaW51
dGU6bWludXRlXTsKIH0KIAotdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OnNldFNoYXJlU2hlZXRD
b21wbGV0ZXNJbW1lZGlhdGVseVdpdGhSZXNvbHV0aW9uKGJvb2wgcmVzb2x2ZWQpCi17Ci0gICAg
VGVzdFJ1bm5lcldLV2ViVmlldyAqd2ViVmlldyA9IFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24o
KS5tYWluV2ViVmlldygpLT5wbGF0Zm9ybVZpZXcoKTsKLSAgICBbd2ViVmlldyBfc2V0U2hhcmVT
aGVldENvbXBsZXRlc0ltbWVkaWF0ZWx5V2l0aFJlc29sdXRpb25Gb3JUZXN0aW5nOnJlc29sdmVk
XTsKLX0KLSAgICAKLUpTT2JqZWN0UmVmIFVJU2NyaXB0Q29udHJvbGxlcjo6Y29udGVudHNPZlVz
ZXJJbnRlcmZhY2VJdGVtKEpTU3RyaW5nUmVmIGludGVyZmFjZUl0ZW0pIGNvbnN0Ci17Ci0gICAg
VGVzdFJ1bm5lcldLV2ViVmlldyAqd2ViVmlldyA9IFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24o
KS5tYWluV2ViVmlldygpLT5wbGF0Zm9ybVZpZXcoKTsKLSAgICBOU0RpY3Rpb25hcnkgKmNvbnRl
bnREaWN0aW9uYXJ5ID0gW3dlYlZpZXcgX2NvbnRlbnRzT2ZVc2VySW50ZXJmYWNlSXRlbTp0b1dU
RlN0cmluZyh0b1dLKGludGVyZmFjZUl0ZW0pKV07Ci0gICAgcmV0dXJuIEpTVmFsdWVUb09iamVj
dChtX2NvbnRleHQtPmpzQ29udGV4dCgpLCBbSlNWYWx1ZSB2YWx1ZVdpdGhPYmplY3Q6Y29udGVu
dERpY3Rpb25hcnkgaW5Db250ZXh0OltKU0NvbnRleHQgY29udGV4dFdpdGhKU0dsb2JhbENvbnRl
eHRSZWY6bV9jb250ZXh0LT5qc0NvbnRleHQoKV1dLkpTVmFsdWVSZWYsIG51bGxwdHIpOwotfQot
CiBzdGF0aWMgQ0dQb2ludCBjb250ZW50T2Zmc2V0Qm91bmRlZEluVmFsaWRSYW5nZShVSVNjcm9s
bFZpZXcgKnNjcm9sbFZpZXcsIENHUG9pbnQgY29udGVudE9mZnNldCkKIHsKICAgICBVSUVkZ2VJ
bnNldHMgY29udGVudEluc2V0cyA9IHNjcm9sbFZpZXcuY29udGVudEluc2V0OwpAQCAtNjM3LDIy
ICs2MTMsNiBAQCB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6c2ltdWxhdGVSb3RhdGlvbkxpa2VT
YWZhcmkoRGV2aWNlT3JpZW50YXRpb24qIG9yaWVudGF0aQogICAgIFtbVUlEZXZpY2UgY3VycmVu
dERldmljZV0gc2V0T3JpZW50YXRpb246dG9VSURldmljZU9yaWVudGF0aW9uKG9yaWVudGF0aW9u
KSBhbmltYXRlZDpZRVNdOwogfQogCi12b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6ZmluZFN0cmlu
ZyhKU1N0cmluZ1JlZiBzdHJpbmcsIHVuc2lnbmVkIGxvbmcgb3B0aW9ucywgdW5zaWduZWQgbG9u
ZyBtYXhDb3VudCkKLXsKLSAgICBUZXN0UnVubmVyV0tXZWJWaWV3ICp3ZWJWaWV3ID0gVGVzdENv
bnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygpOwotICAg
IFt3ZWJWaWV3IF9maW5kU3RyaW5nOnRvV1RGU3RyaW5nKHRvV0soc3RyaW5nKSkgb3B0aW9uczpv
cHRpb25zIG1heENvdW50Om1heENvdW50XTsKLX0KLQotdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6
OnJlbW92ZVZpZXdGcm9tV2luZG93KEpTVmFsdWVSZWYgY2FsbGJhY2spCi17Ci0gICAgVGVzdENv
bnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnJlbW92ZUZyb21XaW5kb3coKTsK
LX0KLQotdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OmFkZFZpZXdUb1dpbmRvdyhKU1ZhbHVlUmVm
IGNhbGxiYWNrKQotewotICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWluV2ViVmll
dygpLT5hZGRUb1dpbmRvdygpOwotfQotCiB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6cGxhdGZv
cm1TZXREaWRTdGFydEZvcm1Db250cm9sSW50ZXJhY3Rpb25DYWxsYmFjaygpCiB7CiAgICAgVGVz
dFJ1bm5lcldLV2ViVmlldyAqd2ViVmlldyA9IFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5t
YWluV2ViVmlldygpLT5wbGF0Zm9ybVZpZXcoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvbWFjL1VJU2NyaXB0Q29udHJvbGxlck1hYy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvbWFjL1VJU2NyaXB0Q29udHJvbGxlck1hYy5tbQppbmRleCAyYzJiNWQxOTllMGQxMjQx
YzhjOTIxYTY0MWNmZTA4MTAzMTU3NjRkLi4zMzMzYjQ2YjVmODFlMDM1MzkxMDcyZmE2NzExZTRi
MDRjOGVkN2I1IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9VSVNjcmlw
dENvbnRyb2xsZXJNYWMubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvVUlTY3Jp
cHRDb250cm9sbGVyTWFjLm1tCkBAIC00OSwxNyArNDksNiBAQCBOU1N0cmluZyAqbnNTdHJpbmco
SlNTdHJpbmdSZWYgc3RyaW5nKQogICAgIHJldHVybiBDRkJyaWRnaW5nUmVsZWFzZShKU1N0cmlu
Z0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzdHJpbmcpKTsKIH0KIAotdm9pZCBV
SVNjcmlwdENvbnRyb2xsZXI6OmRvQXN5bmNUYXNrKEpTVmFsdWVSZWYgY2FsbGJhY2spCi17Ci0g
ICAgdW5zaWduZWQgY2FsbGJhY2tJRCA9IG1fY29udGV4dC0+cHJlcGFyZUZvckFzeW5jVGFzayhj
YWxsYmFjaywgQ2FsbGJhY2tUeXBlTm9uUGVyc2lzdGVudCk7Ci0KLSAgICBkaXNwYXRjaF9hc3lu
YyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeewotICAgICAgICBpZiAoIW1fY29udGV4dCkK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgbV9jb250ZXh0LT5hc3luY1Rhc2tDb21wbGV0
ZShjYWxsYmFja0lEKTsKLSAgICB9KTsKLX0KLQogdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OmRv
QWZ0ZXJQcmVzZW50YXRpb25VcGRhdGUoSlNWYWx1ZVJlZiBjYWxsYmFjaykKIHsKICAgICByZXR1
cm4gZG9Bc3luY1Rhc2soY2FsbGJhY2spOwpAQCAtMTI1LDM0ICsxMTQsNiBAQCB2b2lkIFVJU2Ny
aXB0Q29udHJvbGxlcjo6c2ltdWxhdGVBY2Nlc3NpYmlsaXR5U2V0dGluZ3NDaGFuZ2VOb3RpZmlj
YXRpb24oSlNWYWx1ZQogI2VuZGlmCiB9CiAKLUpTT2JqZWN0UmVmIFVJU2NyaXB0Q29udHJvbGxl
cjo6Y29udGVudHNPZlVzZXJJbnRlcmZhY2VJdGVtKEpTU3RyaW5nUmVmIGludGVyZmFjZUl0ZW0p
IGNvbnN0Ci17Ci0jaWYgV0tfQVBJX0VOQUJMRUQKLSAgICBUZXN0UnVubmVyV0tXZWJWaWV3ICp3
ZWJWaWV3ID0gVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBsYXRm
b3JtVmlldygpOwotICAgIE5TRGljdGlvbmFyeSAqY29udGVudERpY3Rpb25hcnkgPSBbd2ViVmll
dyBfY29udGVudHNPZlVzZXJJbnRlcmZhY2VJdGVtOnRvV1RGU3RyaW5nKHRvV0soaW50ZXJmYWNl
SXRlbSkpXTsKLSAgICByZXR1cm4gSlNWYWx1ZVRvT2JqZWN0KG1fY29udGV4dC0+anNDb250ZXh0
KCksIFtKU1ZhbHVlIHZhbHVlV2l0aE9iamVjdDpjb250ZW50RGljdGlvbmFyeSBpbkNvbnRleHQ6
W0pTQ29udGV4dCBjb250ZXh0V2l0aEpTR2xvYmFsQ29udGV4dFJlZjptX2NvbnRleHQtPmpzQ29u
dGV4dCgpXV0uSlNWYWx1ZVJlZiwgbnVsbHB0cik7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShp
bnRlcmZhY2VJdGVtKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKLSNlbmRpZgotfQotCi12b2lkIFVJ
U2NyaXB0Q29udHJvbGxlcjo6b3ZlcnJpZGVQcmVmZXJlbmNlKEpTU3RyaW5nUmVmIHByZWZlcmVu
Y2VSZWYsIEpTU3RyaW5nUmVmIHZhbHVlUmVmKQotewotI2lmIFdLX0FQSV9FTkFCTEVECi0gICAg
VGVzdFJ1bm5lcldLV2ViVmlldyAqd2ViVmlldyA9IFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24o
KS5tYWluV2ViVmlldygpLT5wbGF0Zm9ybVZpZXcoKTsKLSAgICBXS1ByZWZlcmVuY2VzICpwcmVm
ZXJlbmNlcyA9IHdlYlZpZXcuY29uZmlndXJhdGlvbi5wcmVmZXJlbmNlczsKLQotICAgIFN0cmlu
ZyBwcmVmZXJlbmNlID0gdG9XVEZTdHJpbmcodG9XSyhwcmVmZXJlbmNlUmVmKSk7Ci0gICAgU3Ry
aW5nIHZhbHVlID0gdG9XVEZTdHJpbmcodG9XSyh2YWx1ZVJlZikpOwotICAgIGlmIChwcmVmZXJl
bmNlID09ICJXZWJLaXRNaW5pbXVtRm9udFNpemUiKQotICAgICAgICBwcmVmZXJlbmNlcy5taW5p
bXVtRm9udFNpemUgPSB2YWx1ZS50b0RvdWJsZSgpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0o
cHJlZmVyZW5jZVJlZik7Ci0gICAgVU5VU0VEX1BBUkFNKHZhbHVlUmVmKTsKLSNlbmRpZgotfQot
CiB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6c2ltdWxhdGVSb3RhdGlvbihEZXZpY2VPcmllbnRh
dGlvbiosIEpTVmFsdWVSZWYpCiB7CiB9CkBAIC0xNjEsMTAgKzEyMiw2IEBAIHZvaWQgVUlTY3Jp
cHRDb250cm9sbGVyOjpzaW11bGF0ZVJvdGF0aW9uTGlrZVNhZmFyaShEZXZpY2VPcmllbnRhdGlv
biosIEpTVmFsdWVSCiB7CiB9CiAKLXZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjpmaW5kU3RyaW5n
KEpTU3RyaW5nUmVmLCB1bnNpZ25lZCBsb25nIG9wdGlvbnMsIHVuc2lnbmVkIGxvbmcgbWF4Q291
bnQpCi17Ci19Ci0KIGJvb2wgVUlTY3JpcHRDb250cm9sbGVyOjppc1Nob3dpbmdEYXRhTGlzdFN1
Z2dlc3Rpb25zKCkgY29uc3QKIHsKICNpZiBXS19BUElfRU5BQkxFRApAQCAtMTc3LDQyICsxMzQs
NiBAQCBib29sIFVJU2NyaXB0Q29udHJvbGxlcjo6aXNTaG93aW5nRGF0YUxpc3RTdWdnZXN0aW9u
cygpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFVJU2NyaXB0Q29udHJvbGxl
cjo6cmVtb3ZlVmlld0Zyb21XaW5kb3coSlNWYWx1ZVJlZiBjYWxsYmFjaykKLXsKLSNpZiBXS19B
UElfRU5BQkxFRAotICAgIHVuc2lnbmVkIGNhbGxiYWNrSUQgPSBtX2NvbnRleHQtPnByZXBhcmVG
b3JBc3luY1Rhc2soY2FsbGJhY2ssIENhbGxiYWNrVHlwZU5vblBlcnNpc3RlbnQpOwotCi0gICAg
YXV0byogbWFpbldlYlZpZXcgPSBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZp
ZXcoKTsKLSAgICBtYWluV2ViVmlldy0+cmVtb3ZlRnJvbVdpbmRvdygpOwotCi0gICAgW21haW5X
ZWJWaWV3LT5wbGF0Zm9ybVZpZXcoKSBfZG9BZnRlck5leHRQcmVzZW50YXRpb25VcGRhdGU6IF4g
ewotICAgICAgICBpZiAoIW1fY29udGV4dCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
bV9jb250ZXh0LT5hc3luY1Rhc2tDb21wbGV0ZShjYWxsYmFja0lEKTsKLSAgICB9XTsKLSNlbHNl
Ci0gICAgVU5VU0VEX1BBUkFNKGNhbGxiYWNrKTsKLSNlbmRpZgotfQotCi12b2lkIFVJU2NyaXB0
Q29udHJvbGxlcjo6YWRkVmlld1RvV2luZG93KEpTVmFsdWVSZWYgY2FsbGJhY2spCi17Ci0jaWYg
V0tfQVBJX0VOQUJMRUQKLSAgICB1bnNpZ25lZCBjYWxsYmFja0lEID0gbV9jb250ZXh0LT5wcmVw
YXJlRm9yQXN5bmNUYXNrKGNhbGxiYWNrLCBDYWxsYmFja1R5cGVOb25QZXJzaXN0ZW50KTsKLQot
ICAgIGF1dG8qIG1haW5XZWJWaWV3ID0gVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5X
ZWJWaWV3KCk7Ci0gICAgbWFpbldlYlZpZXctPmFkZFRvV2luZG93KCk7Ci0KLSAgICBbbWFpbldl
YlZpZXctPnBsYXRmb3JtVmlldygpIF9kb0FmdGVyTmV4dFByZXNlbnRhdGlvblVwZGF0ZTogXiB7
Ci0gICAgICAgIGlmICghbV9jb250ZXh0KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBt
X2NvbnRleHQtPmFzeW5jVGFza0NvbXBsZXRlKGNhbGxiYWNrSUQpOwotICAgIH1dOwotI2Vsc2UK
LSAgICBVTlVTRURfUEFSQU0oY2FsbGJhY2spOwotI2VuZGlmCi19Ci0KIHN0YXRpYyB2b2lkIHBs
YXlCYWNrRXZlbnRzKFVJU2NyaXB0Q29udGV4dCAqY29udGV4dCwgTlNTdHJpbmcgKmV2ZW50U3Ry
ZWFtLCBKU1ZhbHVlUmVmIGNhbGxiYWNrKQogewogICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOwpA
QCAtMjcwLDE0ICsxOTEsNCBAQCBib29sIFVJU2NyaXB0Q29udHJvbGxlcjo6aXNXaW5kb3dDb250
ZW50Vmlld0ZpcnN0UmVzcG9uZGVyKCkgY29uc3QKICAgICByZXR1cm4gW3dpbmRvdyBmaXJzdFJl
c3BvbmRlcl0gPT0gW3dpbmRvdyBjb250ZW50Vmlld107CiB9CiAKLXZvaWQgVUlTY3JpcHRDb250
cm9sbGVyOjpzZXRTaGFyZVNoZWV0Q29tcGxldGVzSW1tZWRpYXRlbHlXaXRoUmVzb2x1dGlvbihi
b29sIHJlc29sdmVkKQotewotI2lmIFdLX0FQSV9FTkFCTEVECi0gICAgVGVzdFJ1bm5lcldLV2Vi
VmlldyAqd2ViVmlldyA9IFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWluV2ViVmlldygp
LT5wbGF0Zm9ybVZpZXcoKTsKLSAgICBbd2ViVmlldyBfc2V0U2hhcmVTaGVldENvbXBsZXRlc0lt
bWVkaWF0ZWx5V2l0aFJlc29sdXRpb25Gb3JUZXN0aW5nOnJlc29sdmVkXTsKLSNlbHNlCi0gICAg
VU5VU0VEX1BBUkFNKHJlc29sdmVkKTsKLSNlbmRpZgotfQotCiB9IC8vIG5hbWVzcGFjZSBXVFIK
</data>

          </attachment>
      

    </bug>

</bugzilla>