<?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>174096</bug_id>
          
          <creation_ts>2017-07-03 07:59:35 -0700</creation_ts>
          <short_desc>[MediaStream] Protect request and web view during gUM client callback</short_desc>
          <delta_ts>2017-07-05 10:41:51 -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>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>ASSIGNED</bug_status>
          <resolution></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="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>jlewis3</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1325121</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-07-03 07:59:35 -0700</bug_when>
    <thetext>Protect request and web view during gUM client callback to prevent crash if navigation happens during callback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1325132</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-07-03 09:00:46 -0700</bug_when>
    <thetext>&lt;rdar://problem/32833102&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1325134</commentid>
    <comment_count>2</comment_count>
      <attachid>314487</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-07-03 09:03:12 -0700</bug_when>
    <thetext>Created attachment 314487
Proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1325152</commentid>
    <comment_count>3</comment_count>
      <attachid>314487</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-07-03 10:20:40 -0700</bug_when>
    <thetext>Comment on attachment 314487
Proposed patch.

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

&gt; Source/WebKit2/ChangeLog:9
&gt; +        Retain the message and WebView during asynchronous calls so they won&apos;t be 

s/message/request/?
It is not totally clear to me why there is a need to retain both request and WebView. Can you detail why?

&gt; Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm:430
&gt; +    [delegate _webView:protectedWebView.get() requestUserMediaAuthorizationForDevices:devices url:requestFrameURL mainFrameURL:mainFrameURL decisionHandler:decisionHandler.get()];

I am not very familiar with ObjC and BlockPtr.
I guess there is no destruction issue but just in case, I guess BlockPtr is different from unique_ptr for instance.
why are we doing decisionHandler.get() here?

&gt; Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm:449
&gt; +    auto requestCameraAuthorization = BlockPtr&lt;void()&gt;::fromCallable([this, &amp;frame, protectedRequest = makeRef(request), webView = RetainPtr&lt;WKWebView&gt;(m_uiDelegate.m_webView)]() {

requestCameraAuthorization is used in cases where this could be called synchronously.
Maybe we could make the inside of requestCameraAuthorization a helper method so that we would capture the request and the web view only in the case we need to call the helper method asynchronously?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1325164</commentid>
    <comment_count>4</comment_count>
      <attachid>314487</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-07-03 10:50:08 -0700</bug_when>
    <thetext>Comment on attachment 314487
Proposed patch.

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

&gt;&gt; Source/WebKit2/ChangeLog:9
&gt;&gt; +        Retain the message and WebView during asynchronous calls so they won&apos;t be 
&gt; 
&gt; s/message/request/?
&gt; It is not totally clear to me why there is a need to retain both request and WebView. Can you detail why?

If the page navigates, WebKit&apos;s cleanup code will release the request so request.allow() or request.deny() will crash. The WebView can be released during the callback, as is done in my API test case.

&gt;&gt; Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm:430
&gt;&gt; +    [delegate _webView:protectedWebView.get() requestUserMediaAuthorizationForDevices:devices url:requestFrameURL mainFrameURL:mainFrameURL decisionHandler:decisionHandler.get()];
&gt; 
&gt; I am not very familiar with ObjC and BlockPtr.
&gt; I guess there is no destruction issue but just in case, I guess BlockPtr is different from unique_ptr for instance.
&gt; why are we doing decisionHandler.get() here?

The decisionHandler parameter to this method is an ObjC block, but it isn&apos;t possible to cast from a lambda to a block.  BlockPtr was created for just this.

&gt;&gt; Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm:449
&gt;&gt; +    auto requestCameraAuthorization = BlockPtr&lt;void()&gt;::fromCallable([this, &amp;frame, protectedRequest = makeRef(request), webView = RetainPtr&lt;WKWebView&gt;(m_uiDelegate.m_webView)]() {
&gt; 
&gt; requestCameraAuthorization is used in cases where this could be called synchronously.
&gt; Maybe we could make the inside of requestCameraAuthorization a helper method so that we would capture the request and the web view only in the case we need to call the helper method asynchronously?

The code is iOS only, and avoiding an extra retain in the one case where it is called synchronously doesn&apos;t seem worth adding an iOS only method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1325169</commentid>
    <comment_count>5</comment_count>
      <attachid>314498</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-07-03 11:01:25 -0700</bug_when>
    <thetext>Created attachment 314498
Proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1325196</commentid>
    <comment_count>6</comment_count>
      <attachid>314498</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-07-03 11:55:04 -0700</bug_when>
    <thetext>Comment on attachment 314498
Proposed patch.

Clearing flags on attachment: 314498

Committed r219083: &lt;http://trac.webkit.org/changeset/219083&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1325258</commentid>
    <comment_count>7</comment_count>
    <who name="Matt Lewis">jlewis3</who>
    <bug_when>2017-07-03 14:29:59 -0700</bug_when>
    <thetext>This patch caused the API test WebKit2.NavigateDuringGetUserMediaPrompt to fail on all testers.

https://build.webkit.org/builders/Apple%20Sierra%20Release%20WK2%20(Tests)/builds/2712
https://build.webkit.org/builders/Apple%20Sierra%20Release%20WK2%20(Tests)/builds/2712/steps/run-api-tests/logs/stdio</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1325260</commentid>
    <comment_count>8</comment_count>
    <who name="Matt Lewis">jlewis3</who>
    <bug_when>2017-07-03 14:38:47 -0700</bug_when>
    <thetext>Reverted r219083 for reason:

The revision caused an API failure on all testing platforms.

Committed r219094: &lt;http://trac.webkit.org/changeset/219094&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1325278</commentid>
    <comment_count>9</comment_count>
      <attachid>314524</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-07-03 15:02:52 -0700</bug_when>
    <thetext>Created attachment 314524
Fix test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1325281</commentid>
    <comment_count>10</comment_count>
      <attachid>314524</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-07-03 15:04:20 -0700</bug_when>
    <thetext>Comment on attachment 314524
Fix test.

Rejecting attachment 314524 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-03&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 314524, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
s/TestWebKitAPI/Tests/WebKit2/GetUserMediaNavigation.mm
|===================================================================
|--- Tools/TestWebKitAPI/Tests/WebKit2/GetUserMediaNavigation.mm	(revision 219093)
|+++ Tools/TestWebKitAPI/Tests/WebKit2/GetUserMediaNavigation.mm	(working copy)
--------------------------
No file to patch.  Skipping patch.
3 out of 3 hunks ignored

Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Full output: http://webkit-queues.webkit.org/results/4047065</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1325586</commentid>
    <comment_count>11</comment_count>
      <attachid>314609</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-07-05 09:10:43 -0700</bug_when>
    <thetext>Created attachment 314609
Fix test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1325636</commentid>
    <comment_count>12</comment_count>
      <attachid>314609</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-07-05 10:41:51 -0700</bug_when>
    <thetext>Comment on attachment 314609
Fix test.

Clearing flags on attachment: 314609

Committed r219135: &lt;http://trac.webkit.org/changeset/219135&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314487</attachid>
            <date>2017-07-03 09:03:12 -0700</date>
            <delta_ts>2017-07-03 10:20:40 -0700</delta_ts>
            <desc>Proposed patch.</desc>
            <filename>gum_objc_crash_patch_2.txt</filename>
            <type>text/plain</type>
            <size>20317</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxODg3NykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDE3LTA3LTAzICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVhbV0g
UHJvdGVjdCByZXF1ZXN0IGFuZCB3ZWIgdmlldyBkdXJpbmcgZ1VNIGNsaWVudCBjYWxsYmFjawor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0MDk2Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMjgzMzEwMj4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXRhaW4gdGhlIG1lc3NhZ2UgYW5kIFdlYlZpZXcg
ZHVyaW5nIGFzeW5jaHJvbm91cyBjYWxscyBzbyB0aGV5IHdvbid0IGJlIAorICAgICAgICByZWxl
YXNlZCBpZiBhIG5hdmlnYXRpb24gaGFwcGVucyBkdXJpbmcgYSBjYWxsIHRvIHRoZSBVQSBmb3Ig
Z2V0VXNlck1lZGlhIAorICAgICAgICBvciBlbnVtZXJhdGVNZWRpYURldmljZXMuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6cmVx
dWVzdFVzZXJNZWRpYUF1dGhvcml6YXRpb25Gb3JEZXZpY2VzKToKKyAgICAgICAgKFdlYktpdDo6
VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmNoZWNrVXNl
ck1lZGlhUGVybWlzc2lvbkZvck9yaWdpbik6CisKIDIwMTctMDYtMjggIENocmlzIER1bWV6ICA8
Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBBdm9pZCBkb3VibGUgdGhyZWFkIGRpc3BhdGNo
IGluIFdlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YUZvclRvcFByaXZhdGVseUNvbnRyb2xsZWRE
b21haW5zKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRl
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVn
YXRlLm1tCShyZXZpc2lvbiAyMTg4NzcpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29j
b2EvVUlEZWxlZ2F0ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDA0LDYgKzQwNCwzMiBAQCBib29s
IFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5PcGVuUGFuZWwoCiB9CiAjZW5kaWYKIAorc3RhdGlj
IHZvaWQgcmVxdWVzdFVzZXJNZWRpYUF1dGhvcml6YXRpb25Gb3JEZXZpY2VzKGNvbnN0IFdlYktp
dDo6V2ViRnJhbWVQcm94eSYgZnJhbWUsIFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RQcm94eSYgcmVxdWVzdCwgaWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+IGRlbGVnYXRlLCBXS1dl
YlZpZXcmIHdlYlZpZXcpCit7CisgICAgYXV0byBkZWNpc2lvbkhhbmRsZXIgPSBCbG9ja1B0cjx2
b2lkKEJPT0wpPjo6ZnJvbUNhbGxhYmxlKFtwcm90ZWN0ZWRSZXF1ZXN0ID0gbWFrZVJlZihyZXF1
ZXN0KV0oQk9PTCBhdXRob3JpemVkKSB7CisgICAgICAgIGlmICghYXV0aG9yaXplZCkgeworICAg
ICAgICAgICAgcHJvdGVjdGVkUmVxdWVzdC0+ZGVueShVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dFByb3h5OjpVc2VyTWVkaWFBY2Nlc3NEZW5pYWxSZWFzb246OlBlcm1pc3Npb25EZW5pZWQpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGNvbnN0IFN0cmluZyYgdmlk
ZW9EZXZpY2VVSUQgPSBwcm90ZWN0ZWRSZXF1ZXN0LT5yZXF1aXJlc1ZpZGVvKCkgPyBwcm90ZWN0
ZWRSZXF1ZXN0LT52aWRlb0RldmljZVVJRHMoKS5maXJzdCgpIDogU3RyaW5nKCk7CisgICAgICAg
IGNvbnN0IFN0cmluZyYgYXVkaW9EZXZpY2VVSUQgPSBwcm90ZWN0ZWRSZXF1ZXN0LT5yZXF1aXJl
c0F1ZGlvKCkgPyBwcm90ZWN0ZWRSZXF1ZXN0LT5hdWRpb0RldmljZVVJRHMoKS5maXJzdCgpIDog
U3RyaW5nKCk7CisgICAgICAgIHByb3RlY3RlZFJlcXVlc3QtPmFsbG93KGF1ZGlvRGV2aWNlVUlE
LCB2aWRlb0RldmljZVVJRCk7CisgICAgfSk7CisKKyAgICBjb25zdCBXZWJGcmFtZVByb3h5KiBt
YWluRnJhbWUgPSBmcmFtZS5wYWdlKCktPm1haW5GcmFtZSgpOworICAgIFdlYkNvcmU6OlVSTCBy
ZXF1ZXN0RnJhbWVVUkwoV2ViQ29yZTo6VVJMKCksIGZyYW1lLnVybCgpKTsKKyAgICBXZWJDb3Jl
OjpVUkwgbWFpbkZyYW1lVVJMKFdlYkNvcmU6OlVSTCgpLCBtYWluRnJhbWUtPnVybCgpKTsKKwor
ICAgIF9XS0NhcHR1cmVEZXZpY2VzIGRldmljZXMgPSAwOworICAgIGlmIChyZXF1ZXN0LnJlcXVp
cmVzQXVkaW8oKSkKKyAgICAgICAgZGV2aWNlcyB8PSBfV0tDYXB0dXJlRGV2aWNlTWljcm9waG9u
ZTsKKyAgICBpZiAocmVxdWVzdC5yZXF1aXJlc1ZpZGVvKCkpCisgICAgICAgIGRldmljZXMgfD0g
X1dLQ2FwdHVyZURldmljZUNhbWVyYTsKKworICAgIGF1dG8gcHJvdGVjdGVkV2ViVmlldyA9IFJl
dGFpblB0cjxXS1dlYlZpZXc+KCZ3ZWJWaWV3KTsKKyAgICBbZGVsZWdhdGUgX3dlYlZpZXc6cHJv
dGVjdGVkV2ViVmlldy5nZXQoKSByZXF1ZXN0VXNlck1lZGlhQXV0aG9yaXphdGlvbkZvckRldmlj
ZXM6ZGV2aWNlcyB1cmw6cmVxdWVzdEZyYW1lVVJMIG1haW5GcmFtZVVSTDptYWluRnJhbWVVUkwg
ZGVjaXNpb25IYW5kbGVyOmRlY2lzaW9uSGFuZGxlci5nZXQoKV07Cit9CisKIGJvb2wgVUlEZWxl
Z2F0ZTo6VUlDbGllbnQ6OmRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
KFdlYktpdDo6V2ViUGFnZVByb3h5JiBwYWdlLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmIGZyYW1l
LCBBUEk6OlNlY3VyaXR5T3JpZ2luJiB1c2VyTWVkaWFPcmlnaW4sIEFQSTo6U2VjdXJpdHlPcmln
aW4mIHRvcExldmVsT3JpZ2luLCBXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJv
eHkmIHJlcXVlc3QpCiB7CiAgICAgYXV0byBkZWxlZ2F0ZSA9IG1fdWlEZWxlZ2F0ZS5tX2RlbGVn
YXRlLmdldCgpOwpAQCAtNDE5LDc3ICs0NDUsNjIgQEAgYm9vbCBVSURlbGVnYXRlOjpVSUNsaWVu
dDo6ZGVjaWRlUG9saWN5RgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBfX2Js
b2NrIFdLV2ViVmlldyAqd2ViVmlldyA9IG1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXc7Ci0gICAgdm9p
ZCAoXnVpRGVsZWdhdGVBdXRob3JpemF0aW9uQmxvY2spKHZvaWQpID0gXiB7Ci0gICAgICAgIGNv
bnN0IFdlYkZyYW1lUHJveHkqIG1haW5GcmFtZSA9IGZyYW1lLnBhZ2UoKS0+bWFpbkZyYW1lKCk7
Ci0gICAgICAgIFdlYkNvcmU6OlVSTCByZXF1ZXN0RnJhbWVVUkwoV2ViQ29yZTo6VVJMKCksIGZy
YW1lLnVybCgpKTsKLSAgICAgICAgV2ViQ29yZTo6VVJMIG1haW5GcmFtZVVSTChXZWJDb3JlOjpV
UkwoKSwgbWFpbkZyYW1lLT51cmwoKSk7Ci0KLSAgICAgICAgX1dLQ2FwdHVyZURldmljZXMgZGV2
aWNlcyA9IDA7Ci0gICAgICAgIGlmIChyZXF1aXJlc0F1ZGlvKQotICAgICAgICAgICAgZGV2aWNl
cyB8PSBfV0tDYXB0dXJlRGV2aWNlTWljcm9waG9uZTsKLSAgICAgICAgaWYgKHJlcXVpcmVzVmlk
ZW8pCi0gICAgICAgICAgICBkZXZpY2VzIHw9IF9XS0NhcHR1cmVEZXZpY2VDYW1lcmE7Ci0KLSAg
ICAgICAgWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdhdGUgX3dlYlZpZXc6d2ViVmll
dyByZXF1ZXN0VXNlck1lZGlhQXV0aG9yaXphdGlvbkZvckRldmljZXM6ZGV2aWNlcyB1cmw6cmVx
dWVzdEZyYW1lVVJMIG1haW5GcmFtZVVSTDptYWluRnJhbWVVUkwgZGVjaXNpb25IYW5kbGVyOl4o
Qk9PTCBhdXRob3JpemVkKSB7Ci0gICAgICAgICAgICBpZiAoIWF1dGhvcml6ZWQpIHsKLSAgICAg
ICAgICAgICAgICByZXF1ZXN0LmRlbnkoVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6
VXNlck1lZGlhQWNjZXNzRGVuaWFsUmVhc29uOjpQZXJtaXNzaW9uRGVuaWVkKTsKLSAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjb25zdCBTdHJpbmcm
IHZpZGVvRGV2aWNlVUlEID0gcmVxdWlyZXNWaWRlbyA/IHJlcXVlc3QudmlkZW9EZXZpY2VVSURz
KCkuZmlyc3QoKSA6IFN0cmluZygpOwotICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBhdWRpb0Rl
dmljZVVJRCA9IHJlcXVpcmVzQXVkaW8gPyByZXF1ZXN0LmF1ZGlvRGV2aWNlVUlEcygpLmZpcnN0
KCkgOiBTdHJpbmcoKTsKLSAgICAgICAgICAgIHJlcXVlc3QuYWxsb3coYXVkaW9EZXZpY2VVSUQs
IHZpZGVvRGV2aWNlVUlEKTsKLSAgICAgICAgfV07Ci0gICAgfTsKLQogI2lmIFBMQVRGT1JNKElP
UykKLSAgICB2b2lkICheY2FtZXJhQXV0aG9yaXphdGlvbkJsb2NrKSh2b2lkKSA9IF4gewotICAg
ICAgICBpZiAocmVxdWlyZXNWaWRlbykgewotICAgICAgICAgICAgQVZBdXRob3JpemF0aW9uU3Rh
dHVzIGNhbWVyYUF1dGhvcml6YXRpb25TdGF0dXMgPSBbZ2V0QVZDYXB0dXJlRGV2aWNlQ2xhc3Mo
KSBhdXRob3JpemF0aW9uU3RhdHVzRm9yTWVkaWFUeXBlOmdldEFWTWVkaWFUeXBlVmlkZW8oKV07
Ci0gICAgICAgICAgICBzd2l0Y2ggKGNhbWVyYUF1dGhvcml6YXRpb25TdGF0dXMpIHsKLSAgICAg
ICAgICAgIGNhc2UgQVZBdXRob3JpemF0aW9uU3RhdHVzRGVuaWVkOgotICAgICAgICAgICAgY2Fz
ZSBBVkF1dGhvcml6YXRpb25TdGF0dXNSZXN0cmljdGVkOgotICAgICAgICAgICAgICAgIHJlcXVl
c3QuZGVueShVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpVc2VyTWVkaWFBY2Nlc3NE
ZW5pYWxSZWFzb246OlBlcm1pc3Npb25EZW5pZWQpOwotICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgIGNhc2UgQVZBdXRob3JpemF0aW9uU3RhdHVzTm90RGV0ZXJtaW5lZDoKLSAg
ICAgICAgICAgICAgICBbZ2V0QVZDYXB0dXJlRGV2aWNlQ2xhc3MoKSByZXF1ZXN0QWNjZXNzRm9y
TWVkaWFUeXBlOmdldEFWTWVkaWFUeXBlVmlkZW8oKSBjb21wbGV0aW9uSGFuZGxlcjpeKEJPT0wg
YXV0aG9yaXplZCkgewotICAgICAgICAgICAgICAgICAgICBpZiAoIWF1dGhvcml6ZWQpIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuZGVueShVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdFByb3h5OjpVc2VyTWVkaWFBY2Nlc3NEZW5pYWxSZWFzb246OlBlcm1pc3Npb25EZW5pZWQp
OwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgICAgIHVpRGVsZWdhdGVBdXRob3JpemF0aW9uQmxvY2soKTsKLSAg
ICAgICAgICAgICAgICB9XTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgICAgICAgICAgdWlEZWxlZ2F0ZUF1dGhvcml6YXRpb25CbG9jaygpOwot
ICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHVpRGVsZWdhdGVBdXRo
b3JpemF0aW9uQmxvY2soKTsKLSAgICB9OworICAgIGF1dG8gcmVxdWVzdENhbWVyYUF1dGhvcml6
YXRpb24gPSBCbG9ja1B0cjx2b2lkKCk+Ojpmcm9tQ2FsbGFibGUoW3RoaXMsICZmcmFtZSwgcHJv
dGVjdGVkUmVxdWVzdCA9IG1ha2VSZWYocmVxdWVzdCksIHdlYlZpZXcgPSBSZXRhaW5QdHI8V0tX
ZWJWaWV3PihtX3VpRGVsZWdhdGUubV93ZWJWaWV3KV0oKSB7CisKKyAgICAgICAgaWYgKCFwcm90
ZWN0ZWRSZXF1ZXN0LT5yZXF1aXJlc1ZpZGVvKCkpIHsKKyAgICAgICAgICAgIHJlcXVlc3RVc2Vy
TWVkaWFBdXRob3JpemF0aW9uRm9yRGV2aWNlcyhmcmFtZSwgcHJvdGVjdGVkUmVxdWVzdCwgKGlk
IDxXS1VJRGVsZWdhdGVQcml2YXRlPiltX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZS5nZXQoKSwgKndl
YlZpZXcuZ2V0KCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIEFW
QXV0aG9yaXphdGlvblN0YXR1cyBjYW1lcmFBdXRob3JpemF0aW9uU3RhdHVzID0gW2dldEFWQ2Fw
dHVyZURldmljZUNsYXNzKCkgYXV0aG9yaXphdGlvblN0YXR1c0Zvck1lZGlhVHlwZTpnZXRBVk1l
ZGlhVHlwZVZpZGVvKCldOworICAgICAgICBzd2l0Y2ggKGNhbWVyYUF1dGhvcml6YXRpb25TdGF0
dXMpIHsKKyAgICAgICAgY2FzZSBBVkF1dGhvcml6YXRpb25TdGF0dXNBdXRob3JpemVkOgorICAg
ICAgICAgICAgcmVxdWVzdFVzZXJNZWRpYUF1dGhvcml6YXRpb25Gb3JEZXZpY2VzKGZyYW1lLCBw
cm90ZWN0ZWRSZXF1ZXN0LCAoaWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+KW1fdWlEZWxlZ2F0ZS5t
X2RlbGVnYXRlLmdldCgpLCAqd2ViVmlldy5nZXQoKSk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBBVkF1dGhvcml6YXRpb25TdGF0dXNEZW5pZWQ6CisgICAgICAgIGNhc2UgQVZB
dXRob3JpemF0aW9uU3RhdHVzUmVzdHJpY3RlZDoKKyAgICAgICAgICAgIHByb3RlY3RlZFJlcXVl
c3QtPmRlbnkoVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6VXNlck1lZGlhQWNjZXNz
RGVuaWFsUmVhc29uOjpQZXJtaXNzaW9uRGVuaWVkKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgY2FzZSBBVkF1dGhvcml6YXRpb25TdGF0dXNOb3REZXRlcm1pbmVkOgorICAgICAgICAg
ICAgYXV0byBkZWNpc2lvbkhhbmRsZXIgPSBCbG9ja1B0cjx2b2lkKEJPT0wpPjo6ZnJvbUNhbGxh
YmxlKFt0aGlzLCAmZnJhbWUsIHByb3RlY3RlZFJlcXVlc3QgPSBtYWtlUmVmKHByb3RlY3RlZFJl
cXVlc3QuZ2V0KCkpLCB3ZWJWaWV3ID0gUmV0YWluUHRyPFdLV2ViVmlldz4obV91aURlbGVnYXRl
Lm1fd2ViVmlldyldKEJPT0wgYXV0aG9yaXplZCkgeworICAgICAgICAgICAgICAgIGlmICghYXV0
aG9yaXplZCkgeworICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWRSZXF1ZXN0LT5kZW55KFVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OlVzZXJNZWRpYUFjY2Vzc0RlbmlhbFJlYXNv
bjo6UGVybWlzc2lvbkRlbmllZCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmVxdWVzdFVzZXJNZWRpYUF1dGhvcml6YXRp
b25Gb3JEZXZpY2VzKGZyYW1lLCBwcm90ZWN0ZWRSZXF1ZXN0LCAoaWQgPFdLVUlEZWxlZ2F0ZVBy
aXZhdGU+KW1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRlLmdldCgpLCAqd2ViVmlldy5nZXQoKSk7Cisg
ICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgW2dldEFWQ2FwdHVyZURldmljZUNsYXNzKCkg
cmVxdWVzdEFjY2Vzc0Zvck1lZGlhVHlwZTpnZXRBVk1lZGlhVHlwZVZpZGVvKCkgY29tcGxldGlv
bkhhbmRsZXI6ZGVjaXNpb25IYW5kbGVyLmdldCgpXTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgfSk7CiAKICAgICBpZiAocmVxdWlyZXNBdWRpbykgewogICAgICAgICBBVkF1
dGhvcml6YXRpb25TdGF0dXMgbWljcm9waG9uZUF1dGhvcml6YXRpb25TdGF0dXMgPSBbZ2V0QVZD
YXB0dXJlRGV2aWNlQ2xhc3MoKSBhdXRob3JpemF0aW9uU3RhdHVzRm9yTWVkaWFUeXBlOmdldEFW
TWVkaWFUeXBlQXVkaW8oKV07CiAgICAgICAgIHN3aXRjaCAobWljcm9waG9uZUF1dGhvcml6YXRp
b25TdGF0dXMpIHsKKyAgICAgICAgY2FzZSBBVkF1dGhvcml6YXRpb25TdGF0dXNBdXRob3JpemVk
OgorICAgICAgICAgICAgcmVxdWVzdENhbWVyYUF1dGhvcml6YXRpb24oKTsKKyAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIEFWQXV0aG9yaXphdGlvblN0YXR1c0RlbmllZDoKICAgICAg
ICAgY2FzZSBBVkF1dGhvcml6YXRpb25TdGF0dXNSZXN0cmljdGVkOgogICAgICAgICAgICAgcmVx
dWVzdC5kZW55KFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OlVzZXJNZWRpYUFjY2Vz
c0RlbmlhbFJlYXNvbjo6UGVybWlzc2lvbkRlbmllZCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgY2FzZSBBVkF1dGhvcml6YXRpb25TdGF0dXNOb3REZXRlcm1pbmVkOgotICAg
ICAgICAgICAgW2dldEFWQ2FwdHVyZURldmljZUNsYXNzKCkgcmVxdWVzdEFjY2Vzc0Zvck1lZGlh
VHlwZTpnZXRBVk1lZGlhVHlwZUF1ZGlvKCkgY29tcGxldGlvbkhhbmRsZXI6XihCT09MIGF1dGhv
cml6ZWQpIHsKKyAgICAgICAgICAgIGF1dG8gZGVjaXNpb25IYW5kbGVyID0gQmxvY2tQdHI8dm9p
ZChCT09MKT46OmZyb21DYWxsYWJsZShbcHJvdGVjdGVkUmVxdWVzdCA9IG1ha2VSZWYocmVxdWVz
dCksIHJlcXVlc3RDYW1lcmFBdXRob3JpemF0aW9uXShCT09MIGF1dGhvcml6ZWQpIHsKICAgICAg
ICAgICAgICAgICBpZiAoIWF1dGhvcml6ZWQpIHsKLSAgICAgICAgICAgICAgICAgICAgcmVxdWVz
dC5kZW55KFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OlVzZXJNZWRpYUFjY2Vzc0Rl
bmlhbFJlYXNvbjo6UGVybWlzc2lvbkRlbmllZCk7CisgICAgICAgICAgICAgICAgICAgIHByb3Rl
Y3RlZFJlcXVlc3QtPmRlbnkoVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6VXNlck1l
ZGlhQWNjZXNzRGVuaWFsUmVhc29uOjpQZXJtaXNzaW9uRGVuaWVkKTsKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBjYW1lcmFB
dXRob3JpemF0aW9uQmxvY2soKTsKLSAgICAgICAgICAgIH1dOworICAgICAgICAgICAgICAgIHJl
cXVlc3RDYW1lcmFBdXRob3JpemF0aW9uKCk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAg
ICAgW2dldEFWQ2FwdHVyZURldmljZUNsYXNzKCkgcmVxdWVzdEFjY2Vzc0Zvck1lZGlhVHlwZTpn
ZXRBVk1lZGlhVHlwZUF1ZGlvKCkgY29tcGxldGlvbkhhbmRsZXI6ZGVjaXNpb25IYW5kbGVyLmdl
dCgpXTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAg
Y2FtZXJhQXV0aG9yaXphdGlvbkJsb2NrKCk7CiAgICAgICAgIH0KICAgICB9IGVsc2UKLSAgICAg
ICAgY2FtZXJhQXV0aG9yaXphdGlvbkJsb2NrKCk7CisgICAgICAgIHJlcXVlc3RDYW1lcmFBdXRo
b3JpemF0aW9uKCk7CiAjZWxzZQotICAgIHVpRGVsZWdhdGVBdXRob3JpemF0aW9uQmxvY2soKTsK
KyAgICByZXF1ZXN0VXNlck1lZGlhQXV0aG9yaXphdGlvbkZvckRldmljZXMoZnJhbWUsIHJlcXVl
c3QsIChpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pbV91aURlbGVnYXRlLm1fZGVsZWdhdGUuZ2V0
KCksICptX3VpRGVsZWdhdGUubV93ZWJWaWV3KTsKICNlbmRpZgogCiAgICAgcmV0dXJuIHRydWU7
CkBAIC01MDgsOSArNTE5LDExIEBAIGJvb2wgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmNoZWNrVXNl
ck1lZGkKICAgICBXZWJDb3JlOjpVUkwgcmVxdWVzdEZyYW1lVVJMKFdlYkNvcmU6OlVSTCgpLCBm
cmFtZS51cmwoKSk7CiAgICAgV2ViQ29yZTo6VVJMIG1haW5GcmFtZVVSTChXZWJDb3JlOjpVUkwo
KSwgbWFpbkZyYW1lLT51cmwoKSk7CiAKLSAgICBbKGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPilk
ZWxlZ2F0ZSBfd2ViVmlldzp3ZWJWaWV3IGNoZWNrVXNlck1lZGlhUGVybWlzc2lvbkZvclVSTDpy
ZXF1ZXN0RnJhbWVVUkwgbWFpbkZyYW1lVVJMOm1haW5GcmFtZVVSTCBmcmFtZUlkZW50aWZpZXI6
ZnJhbWUuZnJhbWVJRCgpIGRlY2lzaW9uSGFuZGxlcjpeKE5TU3RyaW5nICpzYWx0LCBCT09MIGF1
dGhvcml6ZWQpIHsKLSAgICAgICAgcmVxdWVzdC5zZXRVc2VyTWVkaWFBY2Nlc3NJbmZvKFN0cmlu
ZyhzYWx0KSwgYXV0aG9yaXplZCk7Ci0gICAgfV07CisgICAgYXV0byBkZWNpc2lvbkhhbmRsZXIg
PSBCbG9ja1B0cjx2b2lkKE5TU3RyaW5nICosIEJPT0wpPjo6ZnJvbUNhbGxhYmxlKFtwcm90ZWN0
ZWRSZXF1ZXN0ID0gbWFrZVJlZihyZXF1ZXN0KV0oTlNTdHJpbmcgKnNhbHQsIEJPT0wgYXV0aG9y
aXplZCkgeworICAgICAgICBwcm90ZWN0ZWRSZXF1ZXN0LT5zZXRVc2VyTWVkaWFBY2Nlc3NJbmZv
KFN0cmluZyhzYWx0KSwgYXV0aG9yaXplZCk7CisgICAgfSk7CisKKyAgICBbKGlkIDxXS1VJRGVs
ZWdhdGVQcml2YXRlPilkZWxlZ2F0ZSBfd2ViVmlldzp3ZWJWaWV3IGNoZWNrVXNlck1lZGlhUGVy
bWlzc2lvbkZvclVSTDpyZXF1ZXN0RnJhbWVVUkwgbWFpbkZyYW1lVVJMOm1haW5GcmFtZVVSTCBm
cmFtZUlkZW50aWZpZXI6ZnJhbWUuZnJhbWVJRCgpIGRlY2lzaW9uSGFuZGxlcjpkZWNpc2lvbkhh
bmRsZXIuZ2V0KCldOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkluZGV4OiBUb29scy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMTkwNzApCisrKyBU
b29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxNy0wNy0w
MyAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbTWVk
aWFTdHJlYW1dIFByb3RlY3QgcmVxdWVzdCBhbmQgd2ViIHZpZXcgZHVyaW5nIGdVTSBjbGllbnQg
Y2FsbGJhY2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3NDA5NgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzI4MzMxMDI+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdDIvR2V0VXNlck1lZGlhTmF2aWdhdGlvbi5tbTogTmV3IHRlc3QuCisK
IDIwMTctMDctMDMgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAg
ICAgICAgUGFzdGluZyBzaW5nbGUgd29yZHMgY29waWVkIHRvIFVJUGFzdGVib2FyZCBpbnNlcnRz
IFVSTHMgaW4gZWRpdGFibGUgYXJlYXMKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdl
YktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZp
c2lvbiAyMTg4NzcpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogCQkw
Nzk5QzM0OTFFQkEyRDdCMDAzQjc1MzIgLyogVXNlck1lZGlhRGlzYWJsZWQubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0VERUZBQzFFQjk0MDBDMDBE
NDMyOTIgLyogVXNlck1lZGlhRGlzYWJsZWQubW0gKi87IH07CiAJCTA3OTlDMzRCMUVCQTMzMDEw
MDNCNzUzMiAvKiBkaXNhYmxlR2V0VXNlck1lZGlhLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc5OUMzNEExRUJBMzJGNDAwM0I3NTMy
IC8qIGRpc2FibGVHZXRVc2VyTWVkaWEuaHRtbCAqLzsgfTsKIAkJMDdDMDQ2Q0ExRTQyNjJBODAw
NzIwMUU3IC8qIENBUmluZ0J1ZmZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwN0MwNDZDOTFFNDI1NzNFMDA3MjAxRTcgLyogQ0FSaW5nQnVmZmVy
LmNwcCAqLzsgfTsKKwkJMDdDRTFDRjMxRjA2QTdFMDAwQkY4OUY1IC8qIEdldFVzZXJNZWRpYU5h
dmlnYXRpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwN0NFMUNGMjFGMDZBN0UwMDBCRjg5RjUgLyogR2V0VXNlck1lZGlhTmF2aWdhdGlvbi5tbSAq
LzsgfTsKIAkJMEYxMzlFNzcxQTQyM0E1QjAwRjU5MEY1IC8qIFdlYWtPYmpDUHRyLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYxMzlFNzUxQTQyM0E1
MzAwRjU5MEY1IC8qIFdlYWtPYmpDUHRyLm1tICovOyB9OwogCQkwRjEzOUU3ODFBNDIzQTZCMDBG
NTkwRjUgLyogUGxhdGZvcm1VdGlsaXRpZXNDb2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMTM5RTcyMUE0MjNBMkIwMEY1OTBGNSAvKiBQbGF0
Zm9ybVV0aWxpdGllc0NvY29hLm1tICovOyB9OwogCQkwRjEzOUU3OTFBNDI0NTcwMDBGNTkwRjUg
LyogUGxhdGZvcm1VdGlsaXRpZXNDb2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGMTM5RTcyMUE0MjNBMkIwMEY1OTBGNSAvKiBQbGF0Zm9ybVV0
aWxpdGllc0NvY29hLm1tICovOyB9OwpAQCAtOTUwLDYgKzk1MSw3IEBACiAJCTA3NjZERDFGMUE1
QUQ1MjAwMDIzRTNCQiAvKiBQZW5kaW5nQVBJUmVxdWVzdFVSTC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQZW5kaW5nQVBJUmVxdWVzdFVSTC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3OTlDMzRBMUVCQTMyRjQwMDNCNzUzMiAvKiBkaXNhYmxl
R2V0VXNlck1lZGlhLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBkaXNhYmxlR2V0
VXNlck1lZGlhLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3QzA0NkM5MUU0
MjU3M0UwMDcyMDFFNyAvKiBDQVJpbmdCdWZmZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQ0FSaW5nQnVmZmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMDdDRTFDRjIxRjA2QTdFMDAwQkY4OUY1IC8qIEdldFVzZXJNZWRpYU5hdmlnYXRpb24u
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHZXRVc2VyTWVkaWFO
YXZpZ2F0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0VERUZBQzFFQjk0
MDBDMDBENDMyOTIgLyogVXNlck1lZGlhRGlzYWJsZWQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBVc2VyTWVkaWFEaXNhYmxlZC5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEJDRDgzMzQxNDg1N0NFNDAwRUEyMDAzIC8qIEhhc2hNYXAuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSGFzaE1hcC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBCQ0Q4NTY5MTQ4NUM5OEIwMEVBMjAwMyAvKiBTZXRGb3JT
Y29wZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZXRGb3JTY29w
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMjE1LDYgKzIyMTcsNyBAQAog
CQkJCTI2RjUyRUFBMTgyODcyNjAwMDIzRDQxMiAvKiBHZW9sb2NhdGlvbi5jcHAgKi8sCiAJCQkJ
RjY2MEFBMEMxNUE1RjA2MTAwM0ExMjQzIC8qIEdldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRp
b25Vc2VyRGF0YUNhbGxiYWNrLmNwcCAqLywKIAkJCQlGNjYwQUEwRjE1QTVGNjI0MDAzQTEyNDMg
LyogR2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhQ2FsbGJhY2tfQnVuZGxl
LmNwcCAqLywKKwkJCQkwN0NFMUNGMjFGMDZBN0UwMDBCRjg5RjUgLyogR2V0VXNlck1lZGlhTmF2
aWdhdGlvbi5tbSAqLywKIAkJCQk0QkZERkZBODEzMTQ3Nzc3MDA2MUYyNEIgLyogSGl0VGVzdFJl
c3VsdE5vZGVIYW5kbGUuY3BwICovLAogCQkJCTRCRkRGRkE2MTMxNDc3NkMwMDYxRjI0QiAvKiBI
aXRUZXN0UmVzdWx0Tm9kZUhhbmRsZV9CdW5kbGUuY3BwICovLAogCQkJCUJDNTc1QUFDMTI2RTgz
QjkwMDZGMEYxMiAvKiBJbmplY3RlZEJ1bmRsZUJhc2ljLmNwcCAqLywKQEAgLTMwODAsNiArMzA4
Myw3IEBACiAJCQkJN0E2QTJDNzAxRENDRkE4QzAwQzBEMDg1IC8qIExvY2FsU3RvcmFnZVF1aXJr
VGVzdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUIyMUE0MTFBNTEwMDQ0N0M0QyAvKiBN
ZW1vcnlDYWNoZUFkZEltYWdlVG9DYWNoZUlPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3
RUM1MUE0MTFBN0UwMDQ0N0M0QyAvKiBNZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNvdXJjZUxv
YWREZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTA3Q0UxQ0YzMUYwNkE3RTAwMEJGODlG
NSAvKiBHZXRVc2VyTWVkaWFOYXZpZ2F0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdF
QzYxQTQxMUE3RTAwNDQ3QzRDIC8qIE1lbW9yeUNhY2hlUHJ1bmVXaXRoaW5SZXNvdXJjZUxvYWRE
ZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEQTMxNTk4MUVENTM2NTEwMDlGNjBEMyAv
KiBNZWRpYVBsYXliYWNrU2xlZXBBc3NlcnRpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQk1QzBC
Rjg4RDFERDU5NjREMDBCMDAzMjggLyogTWVtb3J5UHJlc3N1cmVIYW5kbGVyLm1tIGluIFNvdXJj
ZXMgKi8sCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvR2V0VXNlck1l
ZGlhTmF2aWdhdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDIvR2V0VXNlck1lZGlhTmF2aWdhdGlvbi5tbQkobm9uZXhpc3RlbnQpCisrKyBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvR2V0VXNlck1lZGlhTmF2aWdhdGlvbi5tbQko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNv
bmZpZy5oIgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0p
CisKKyNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJUZXN0LmgiCisjaW1w
b3J0ICJUZXN0V0tXZWJWaWV3LmgiCisjaW1wb3J0IDxXZWJLaXQvV0tQcmVmZXJlbmNlc1ByaXZh
dGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1VJRGVsZWdhdGVQcml2YXRlLmg+CisjaW1wb3J0IDxX
ZWJLaXQvV0tXZWJWaWV3Lmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Q29uZmlndXJhdGlv
bi5oPgorI2ltcG9ydCA8V2ViS2l0L19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oPgorCitz
dGF0aWMgYm9vbCBva1RvUHJvY2VlZCA9IGZhbHNlOworCitzdGF0aWMgdm9pZCBjYXVzZVRyb3Vi
bGUoV0tXZWJWaWV3KiB3ZWJWaWV3KQoreworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VS
TFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJhYm91dDpibGFu
ayJdXV07CisgICAgW3dlYlZpZXcgcmVsZWFzZV07Cit9CisKK0BpbnRlcmZhY2UgTmF2aWdhdGlv
bldoaWxlR2V0VXNlck1lZGlhUHJvbXB0RGlzcGxheWVkVUlEZWxlZ2F0ZSA6IE5TT2JqZWN0PFdL
VUlEZWxlZ2F0ZT4KKy0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcmVxdWVz
dFVzZXJNZWRpYUF1dGhvcml6YXRpb25Gb3JEZXZpY2VzOihfV0tDYXB0dXJlRGV2aWNlcylkZXZp
Y2VzIHVybDooTlNVUkwgKil1cmwgbWFpbkZyYW1lVVJMOihOU1VSTCAqKW1haW5GcmFtZVVSTCBk
ZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wgYXV0aG9yaXplZCkpZGVjaXNpb25IYW5kbGVy
OworLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBjaGVja1VzZXJNZWRpYVBl
cm1pc3Npb25Gb3JVUkw6KE5TVVJMICopdXJsIG1haW5GcmFtZVVSTDooTlNVUkwgKiltYWluRnJh
bWVVUkwgZnJhbWVJZGVudGlmaWVyOihOU1VJbnRlZ2VyKWZyYW1lSWRlbnRpZmllciBkZWNpc2lv
bkhhbmRsZXI6KHZvaWQgKF4pKE5TU3RyaW5nICpzYWx0LCBCT09MIGF1dGhvcml6ZWQpKWRlY2lz
aW9uSGFuZGxlcjsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIE5hdmlnYXRpb25XaGlsZUdldFVz
ZXJNZWRpYVByb21wdERpc3BsYXllZFVJRGVsZWdhdGUKKy0gKHZvaWQpX3dlYlZpZXc6KFdLV2Vi
VmlldyAqKXdlYlZpZXcgcmVxdWVzdFVzZXJNZWRpYUF1dGhvcml6YXRpb25Gb3JEZXZpY2VzOihf
V0tDYXB0dXJlRGV2aWNlcylkZXZpY2VzIHVybDooTlNVUkwgKil1cmwgbWFpbkZyYW1lVVJMOihO
U1VSTCAqKW1haW5GcmFtZVVSTCBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wgYXV0aG9y
aXplZCkpZGVjaXNpb25IYW5kbGVyCit7CisgICAgY2F1c2VUcm91YmxlKHdlYlZpZXcpOworICAg
IG9rVG9Qcm9jZWVkID0gdHJ1ZTsKKyAgICBkZWNpc2lvbkhhbmRsZXIoWUVTKTsKK30KKworLSAo
dm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBjaGVja1VzZXJNZWRpYVBlcm1pc3Np
b25Gb3JVUkw6KE5TVVJMICopdXJsIG1haW5GcmFtZVVSTDooTlNVUkwgKiltYWluRnJhbWVVUkwg
ZnJhbWVJZGVudGlmaWVyOihOU1VJbnRlZ2VyKWZyYW1lSWRlbnRpZmllciBkZWNpc2lvbkhhbmRs
ZXI6KHZvaWQgKF4pKE5TU3RyaW5nICpzYWx0LCBCT09MIGF1dGhvcml6ZWQpKWRlY2lzaW9uSGFu
ZGxlcgoreworICAgIGNhdXNlVHJvdWJsZSh3ZWJWaWV3KTsKKyAgICBva1RvUHJvY2VlZCA9IHRy
dWU7CisgICAgZGVjaXNpb25IYW5kbGVyKEAiMHg5ODc2NTQzMjEiLCBZRVMpOworfQorQGVuZAor
CituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK1RFU1QoV2ViS2l0MiwgTmF2aWdhdGVEdXJp
bmdHZXRVc2VyTWVkaWFQcm9tcHQpCit7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHRO
UyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIHByb2Nl
c3NQb29sQ29uZmlnID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxv
Y10gaW5pdF0pOworICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBbY29uZmlndXJhdGlvbiBwcmVmZXJl
bmNlc107CisgICAgcHJlZmVyZW5jZXMuX21lZGlhQ2FwdHVyZVJlcXVpcmVzU2VjdXJlQ29ubmVj
dGlvbiA9IE5POworICAgIHByZWZlcmVuY2VzLl9tZWRpYURldmljZXNFbmFibGVkID0gWUVTOwor
ICAgIHByZWZlcmVuY2VzLl9tb2NrQ2FwdHVyZURldmljZXNFbmFibGVkID0gWUVTOworICAgIGF1
dG8gd2ViVmlldyA9IFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RN
YWtlKDAsIDAsIDMyMCwgNTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCkgcHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlnLmdldCgpXTsKKyAgICBhdXRv
IGRlbGVnYXRlID0gYWRvcHROUyhbW05hdmlnYXRpb25XaGlsZUdldFVzZXJNZWRpYVByb21wdERp
c3BsYXllZFVJRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICB3ZWJWaWV3LlVJRGVsZWdhdGUg
PSBkZWxlZ2F0ZS5nZXQoKTsKKworICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAiZ2V0
VXNlck1lZGlhIl07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZva1RvUHJvY2VlZCk7
Cit9CisKK1RFU1QoV2ViS2l0MiwgTmF2aWdhdGVEdXJpbmdEZXZpY2VFbnVtZXJhdGlvbikKK3sK
KyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlv
biBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWcgPSBhZG9wdE5TKFtb
X1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byBwcmVm
ZXJlbmNlcyA9IFtjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXTsKKyAgICBwcmVmZXJlbmNlcy5f
bWVkaWFDYXB0dXJlUmVxdWlyZXNTZWN1cmVDb25uZWN0aW9uID0gTk87CisgICAgcHJlZmVyZW5j
ZXMuX21lZGlhRGV2aWNlc0VuYWJsZWQgPSBZRVM7CisgICAgcHJlZmVyZW5jZXMuX21vY2tDYXB0
dXJlRGV2aWNlc0VuYWJsZWQgPSBZRVM7CisgICAgYXV0byB3ZWJWaWV3ID0gW1tUZXN0V0tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApIGNvbmZp
Z3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKSBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246cHJv
Y2Vzc1Bvb2xDb25maWcuZ2V0KCldOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbTmF2
aWdhdGlvbldoaWxlR2V0VXNlck1lZGlhUHJvbXB0RGlzcGxheWVkVUlEZWxlZ2F0ZSBhbGxvY10g
aW5pdF0pOworICAgIHdlYlZpZXcuVUlEZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOworCisgICAg
W3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJlbnVtZXJhdGVNZWRpYURldmljZXMiXTsKKyAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJm9rVG9Qcm9jZWVkKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgVGVzdFdlYktpdEFQSQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKwor
I2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVECg==
</data>
<flag name="review"
          id="335362"
          type_id="1"
          status="+"
          setter="youennf"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314498</attachid>
            <date>2017-07-03 11:01:25 -0700</date>
            <delta_ts>2017-07-05 09:10:43 -0700</delta_ts>
            <desc>Proposed patch.</desc>
            <filename>gum_objc_crash_patch_3.txt</filename>
            <type>text/plain</type>
            <size>20315</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxODg3NykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDE3LTA3LTAzICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVhbV0g
UHJvdGVjdCByZXF1ZXN0IGFuZCB3ZWIgdmlldyBkdXJpbmcgZ1VNIGNsaWVudCBjYWxsYmFjawor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0MDk2Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMjgzMzEwMj4KKworICAgICAgICBSZXZpZXdlZCBieSBZ
b3Vlbm4gRmFibGV0LgorCisgICAgICAgIFJldGFpbiB0aGUgbWVzc2FnZSBhbmQgV2ViVmlldyBk
dXJpbmcgYXN5bmNocm9ub3VzIGNhbGxzIHNvIHRoZXkgd29uJ3QgYmUgCisgICAgICAgIHJlbGVh
c2VkIGlmIGEgbmF2aWdhdGlvbiBoYXBwZW5zIGR1cmluZyBhIGNhbGwgdG8gdGhlIFVBIGZvciBn
ZXRVc2VyTWVkaWEgCisgICAgICAgIG9yIGVudW1lcmF0ZU1lZGlhRGV2aWNlcy4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpyZXF1
ZXN0VXNlck1lZGlhQXV0aG9yaXphdGlvbkZvckRldmljZXMpOgorICAgICAgICAoV2ViS2l0OjpV
SURlbGVnYXRlOjpVSUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNsaWVudDo6Y2hlY2tVc2Vy
TWVkaWFQZXJtaXNzaW9uRm9yT3JpZ2luKToKKwogMjAxNy0wNi0yOCAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEF2b2lkIGRvdWJsZSB0aHJlYWQgZGlzcGF0Y2gg
aW4gV2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhRm9yVG9wUHJpdmF0ZWx5Q29udHJvbGxlZERv
bWFpbnMoKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdh
dGUubW0JKHJldmlzaW9uIDIxODg3NykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2Nv
YS9VSURlbGVnYXRlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00MDQsNiArNDA0LDMyIEBAIGJvb2wg
VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1bk9wZW5QYW5lbCgKIH0KICNlbmRpZgogCitzdGF0aWMg
dm9pZCByZXF1ZXN0VXNlck1lZGlhQXV0aG9yaXphdGlvbkZvckRldmljZXMoY29uc3QgV2ViS2l0
OjpXZWJGcmFtZVByb3h5JiBmcmFtZSwgV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dFByb3h5JiByZXF1ZXN0LCBpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4gZGVsZWdhdGUsIFdLV2Vi
VmlldyYgd2ViVmlldykKK3sKKyAgICBhdXRvIGRlY2lzaW9uSGFuZGxlciA9IEJsb2NrUHRyPHZv
aWQoQk9PTCk+Ojpmcm9tQ2FsbGFibGUoW3Byb3RlY3RlZFJlcXVlc3QgPSBtYWtlUmVmKHJlcXVl
c3QpXShCT09MIGF1dGhvcml6ZWQpIHsKKyAgICAgICAgaWYgKCFhdXRob3JpemVkKSB7CisgICAg
ICAgICAgICBwcm90ZWN0ZWRSZXF1ZXN0LT5kZW55KFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
UHJveHk6OlVzZXJNZWRpYUFjY2Vzc0RlbmlhbFJlYXNvbjo6UGVybWlzc2lvbkRlbmllZCk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgY29uc3QgU3RyaW5nJiB2aWRl
b0RldmljZVVJRCA9IHByb3RlY3RlZFJlcXVlc3QtPnJlcXVpcmVzVmlkZW8oKSA/IHByb3RlY3Rl
ZFJlcXVlc3QtPnZpZGVvRGV2aWNlVUlEcygpLmZpcnN0KCkgOiBTdHJpbmcoKTsKKyAgICAgICAg
Y29uc3QgU3RyaW5nJiBhdWRpb0RldmljZVVJRCA9IHByb3RlY3RlZFJlcXVlc3QtPnJlcXVpcmVz
QXVkaW8oKSA/IHByb3RlY3RlZFJlcXVlc3QtPmF1ZGlvRGV2aWNlVUlEcygpLmZpcnN0KCkgOiBT
dHJpbmcoKTsKKyAgICAgICAgcHJvdGVjdGVkUmVxdWVzdC0+YWxsb3coYXVkaW9EZXZpY2VVSUQs
IHZpZGVvRGV2aWNlVUlEKTsKKyAgICB9KTsKKworICAgIGNvbnN0IFdlYkZyYW1lUHJveHkqIG1h
aW5GcmFtZSA9IGZyYW1lLnBhZ2UoKS0+bWFpbkZyYW1lKCk7CisgICAgV2ViQ29yZTo6VVJMIHJl
cXVlc3RGcmFtZVVSTChXZWJDb3JlOjpVUkwoKSwgZnJhbWUudXJsKCkpOworICAgIFdlYkNvcmU6
OlVSTCBtYWluRnJhbWVVUkwoV2ViQ29yZTo6VVJMKCksIG1haW5GcmFtZS0+dXJsKCkpOworCisg
ICAgX1dLQ2FwdHVyZURldmljZXMgZGV2aWNlcyA9IDA7CisgICAgaWYgKHJlcXVlc3QucmVxdWly
ZXNBdWRpbygpKQorICAgICAgICBkZXZpY2VzIHw9IF9XS0NhcHR1cmVEZXZpY2VNaWNyb3Bob25l
OworICAgIGlmIChyZXF1ZXN0LnJlcXVpcmVzVmlkZW8oKSkKKyAgICAgICAgZGV2aWNlcyB8PSBf
V0tDYXB0dXJlRGV2aWNlQ2FtZXJhOworCisgICAgYXV0byBwcm90ZWN0ZWRXZWJWaWV3ID0gUmV0
YWluUHRyPFdLV2ViVmlldz4oJndlYlZpZXcpOworICAgIFtkZWxlZ2F0ZSBfd2ViVmlldzpwcm90
ZWN0ZWRXZWJWaWV3LmdldCgpIHJlcXVlc3RVc2VyTWVkaWFBdXRob3JpemF0aW9uRm9yRGV2aWNl
czpkZXZpY2VzIHVybDpyZXF1ZXN0RnJhbWVVUkwgbWFpbkZyYW1lVVJMOm1haW5GcmFtZVVSTCBk
ZWNpc2lvbkhhbmRsZXI6ZGVjaXNpb25IYW5kbGVyLmdldCgpXTsKK30KKwogYm9vbCBVSURlbGVn
YXRlOjpVSUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3Qo
V2ViS2l0OjpXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYgZnJhbWUs
IEFQSTo6U2VjdXJpdHlPcmlnaW4mIHVzZXJNZWRpYU9yaWdpbiwgQVBJOjpTZWN1cml0eU9yaWdp
biYgdG9wTGV2ZWxPcmlnaW4sIFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94
eSYgcmVxdWVzdCkKIHsKICAgICBhdXRvIGRlbGVnYXRlID0gbV91aURlbGVnYXRlLm1fZGVsZWdh
dGUuZ2V0KCk7CkBAIC00MTksNzcgKzQ0NSw2MiBAQCBib29sIFVJRGVsZWdhdGU6OlVJQ2xpZW50
OjpkZWNpZGVQb2xpY3lGCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIF9fYmxv
Y2sgV0tXZWJWaWV3ICp3ZWJWaWV3ID0gbV91aURlbGVnYXRlLm1fd2ViVmlldzsKLSAgICB2b2lk
IChedWlEZWxlZ2F0ZUF1dGhvcml6YXRpb25CbG9jaykodm9pZCkgPSBeIHsKLSAgICAgICAgY29u
c3QgV2ViRnJhbWVQcm94eSogbWFpbkZyYW1lID0gZnJhbWUucGFnZSgpLT5tYWluRnJhbWUoKTsK
LSAgICAgICAgV2ViQ29yZTo6VVJMIHJlcXVlc3RGcmFtZVVSTChXZWJDb3JlOjpVUkwoKSwgZnJh
bWUudXJsKCkpOwotICAgICAgICBXZWJDb3JlOjpVUkwgbWFpbkZyYW1lVVJMKFdlYkNvcmU6OlVS
TCgpLCBtYWluRnJhbWUtPnVybCgpKTsKLQotICAgICAgICBfV0tDYXB0dXJlRGV2aWNlcyBkZXZp
Y2VzID0gMDsKLSAgICAgICAgaWYgKHJlcXVpcmVzQXVkaW8pCi0gICAgICAgICAgICBkZXZpY2Vz
IHw9IF9XS0NhcHR1cmVEZXZpY2VNaWNyb3Bob25lOwotICAgICAgICBpZiAocmVxdWlyZXNWaWRl
bykKLSAgICAgICAgICAgIGRldmljZXMgfD0gX1dLQ2FwdHVyZURldmljZUNhbWVyYTsKLQotICAg
ICAgICBbKGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPilkZWxlZ2F0ZSBfd2ViVmlldzp3ZWJWaWV3
IHJlcXVlc3RVc2VyTWVkaWFBdXRob3JpemF0aW9uRm9yRGV2aWNlczpkZXZpY2VzIHVybDpyZXF1
ZXN0RnJhbWVVUkwgbWFpbkZyYW1lVVJMOm1haW5GcmFtZVVSTCBkZWNpc2lvbkhhbmRsZXI6XihC
T09MIGF1dGhvcml6ZWQpIHsKLSAgICAgICAgICAgIGlmICghYXV0aG9yaXplZCkgewotICAgICAg
ICAgICAgICAgIHJlcXVlc3QuZGVueShVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpV
c2VyTWVkaWFBY2Nlc3NEZW5pYWxSZWFzb246OlBlcm1pc3Npb25EZW5pZWQpOwotICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNvbnN0IFN0cmluZyYg
dmlkZW9EZXZpY2VVSUQgPSByZXF1aXJlc1ZpZGVvID8gcmVxdWVzdC52aWRlb0RldmljZVVJRHMo
KS5maXJzdCgpIDogU3RyaW5nKCk7Ci0gICAgICAgICAgICBjb25zdCBTdHJpbmcmIGF1ZGlvRGV2
aWNlVUlEID0gcmVxdWlyZXNBdWRpbyA/IHJlcXVlc3QuYXVkaW9EZXZpY2VVSURzKCkuZmlyc3Qo
KSA6IFN0cmluZygpOwotICAgICAgICAgICAgcmVxdWVzdC5hbGxvdyhhdWRpb0RldmljZVVJRCwg
dmlkZW9EZXZpY2VVSUQpOwotICAgICAgICB9XTsKLSAgICB9OwotCiAjaWYgUExBVEZPUk0oSU9T
KQotICAgIHZvaWQgKF5jYW1lcmFBdXRob3JpemF0aW9uQmxvY2spKHZvaWQpID0gXiB7Ci0gICAg
ICAgIGlmIChyZXF1aXJlc1ZpZGVvKSB7Ci0gICAgICAgICAgICBBVkF1dGhvcml6YXRpb25TdGF0
dXMgY2FtZXJhQXV0aG9yaXphdGlvblN0YXR1cyA9IFtnZXRBVkNhcHR1cmVEZXZpY2VDbGFzcygp
IGF1dGhvcml6YXRpb25TdGF0dXNGb3JNZWRpYVR5cGU6Z2V0QVZNZWRpYVR5cGVWaWRlbygpXTsK
LSAgICAgICAgICAgIHN3aXRjaCAoY2FtZXJhQXV0aG9yaXphdGlvblN0YXR1cykgewotICAgICAg
ICAgICAgY2FzZSBBVkF1dGhvcml6YXRpb25TdGF0dXNEZW5pZWQ6Ci0gICAgICAgICAgICBjYXNl
IEFWQXV0aG9yaXphdGlvblN0YXR1c1Jlc3RyaWN0ZWQ6Ci0gICAgICAgICAgICAgICAgcmVxdWVz
dC5kZW55KFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OlVzZXJNZWRpYUFjY2Vzc0Rl
bmlhbFJlYXNvbjo6UGVybWlzc2lvbkRlbmllZCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAgICAgY2FzZSBBVkF1dGhvcml6YXRpb25TdGF0dXNOb3REZXRlcm1pbmVkOgotICAg
ICAgICAgICAgICAgIFtnZXRBVkNhcHR1cmVEZXZpY2VDbGFzcygpIHJlcXVlc3RBY2Nlc3NGb3JN
ZWRpYVR5cGU6Z2V0QVZNZWRpYVR5cGVWaWRlbygpIGNvbXBsZXRpb25IYW5kbGVyOl4oQk9PTCBh
dXRob3JpemVkKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghYXV0aG9yaXplZCkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5kZW55KFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0UHJveHk6OlVzZXJNZWRpYUFjY2Vzc0RlbmlhbFJlYXNvbjo6UGVybWlzc2lvbkRlbmllZCk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICAgICAgdWlEZWxlZ2F0ZUF1dGhvcml6YXRpb25CbG9jaygpOwotICAg
ICAgICAgICAgICAgIH1dOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVm
YXVsdDoKLSAgICAgICAgICAgICAgICB1aURlbGVnYXRlQXV0aG9yaXphdGlvbkJsb2NrKCk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgdWlEZWxlZ2F0ZUF1dGhv
cml6YXRpb25CbG9jaygpOwotICAgIH07CisgICAgYXV0byByZXF1ZXN0Q2FtZXJhQXV0aG9yaXph
dGlvbiA9IEJsb2NrUHRyPHZvaWQoKT46OmZyb21DYWxsYWJsZShbdGhpcywgJmZyYW1lLCBwcm90
ZWN0ZWRSZXF1ZXN0ID0gbWFrZVJlZihyZXF1ZXN0KSwgd2ViVmlldyA9IFJldGFpblB0cjxXS1dl
YlZpZXc+KG1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcpXSgpIHsKKworICAgICAgICBpZiAoIXByb3Rl
Y3RlZFJlcXVlc3QtPnJlcXVpcmVzVmlkZW8oKSkgeworICAgICAgICAgICAgcmVxdWVzdFVzZXJN
ZWRpYUF1dGhvcml6YXRpb25Gb3JEZXZpY2VzKGZyYW1lLCBwcm90ZWN0ZWRSZXF1ZXN0LCAoaWQg
PFdLVUlEZWxlZ2F0ZVByaXZhdGU+KW1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRlLmdldCgpLCAqd2Vi
Vmlldy5nZXQoKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgQVZB
dXRob3JpemF0aW9uU3RhdHVzIGNhbWVyYUF1dGhvcml6YXRpb25TdGF0dXMgPSBbZ2V0QVZDYXB0
dXJlRGV2aWNlQ2xhc3MoKSBhdXRob3JpemF0aW9uU3RhdHVzRm9yTWVkaWFUeXBlOmdldEFWTWVk
aWFUeXBlVmlkZW8oKV07CisgICAgICAgIHN3aXRjaCAoY2FtZXJhQXV0aG9yaXphdGlvblN0YXR1
cykgeworICAgICAgICBjYXNlIEFWQXV0aG9yaXphdGlvblN0YXR1c0F1dGhvcml6ZWQ6CisgICAg
ICAgICAgICByZXF1ZXN0VXNlck1lZGlhQXV0aG9yaXphdGlvbkZvckRldmljZXMoZnJhbWUsIHBy
b3RlY3RlZFJlcXVlc3QsIChpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pbV91aURlbGVnYXRlLm1f
ZGVsZWdhdGUuZ2V0KCksICp3ZWJWaWV3LmdldCgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIEFWQXV0aG9yaXphdGlvblN0YXR1c0RlbmllZDoKKyAgICAgICAgY2FzZSBBVkF1
dGhvcml6YXRpb25TdGF0dXNSZXN0cmljdGVkOgorICAgICAgICAgICAgcHJvdGVjdGVkUmVxdWVz
dC0+ZGVueShVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpVc2VyTWVkaWFBY2Nlc3NE
ZW5pYWxSZWFzb246OlBlcm1pc3Npb25EZW5pZWQpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICBjYXNlIEFWQXV0aG9yaXphdGlvblN0YXR1c05vdERldGVybWluZWQ6CisgICAgICAgICAg
ICBhdXRvIGRlY2lzaW9uSGFuZGxlciA9IEJsb2NrUHRyPHZvaWQoQk9PTCk+Ojpmcm9tQ2FsbGFi
bGUoW3RoaXMsICZmcmFtZSwgcHJvdGVjdGVkUmVxdWVzdCA9IG1ha2VSZWYocHJvdGVjdGVkUmVx
dWVzdC5nZXQoKSksIHdlYlZpZXcgPSBSZXRhaW5QdHI8V0tXZWJWaWV3PihtX3VpRGVsZWdhdGUu
bV93ZWJWaWV3KV0oQk9PTCBhdXRob3JpemVkKSB7CisgICAgICAgICAgICAgICAgaWYgKCFhdXRo
b3JpemVkKSB7CisgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZFJlcXVlc3QtPmRlbnkoVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6VXNlck1lZGlhQWNjZXNzRGVuaWFsUmVhc29u
OjpQZXJtaXNzaW9uRGVuaWVkKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXF1ZXN0VXNlck1lZGlhQXV0aG9yaXphdGlv
bkZvckRldmljZXMoZnJhbWUsIHByb3RlY3RlZFJlcXVlc3QsIChpZCA8V0tVSURlbGVnYXRlUHJp
dmF0ZT4pbV91aURlbGVnYXRlLm1fZGVsZWdhdGUuZ2V0KCksICp3ZWJWaWV3LmdldCgpKTsKKyAg
ICAgICAgICAgIH0pOworCisgICAgICAgICAgICBbZ2V0QVZDYXB0dXJlRGV2aWNlQ2xhc3MoKSBy
ZXF1ZXN0QWNjZXNzRm9yTWVkaWFUeXBlOmdldEFWTWVkaWFUeXBlVmlkZW8oKSBjb21wbGV0aW9u
SGFuZGxlcjpkZWNpc2lvbkhhbmRsZXIuZ2V0KCldOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKyAgICB9KTsKIAogICAgIGlmIChyZXF1aXJlc0F1ZGlvKSB7CiAgICAgICAgIEFWQXV0
aG9yaXphdGlvblN0YXR1cyBtaWNyb3Bob25lQXV0aG9yaXphdGlvblN0YXR1cyA9IFtnZXRBVkNh
cHR1cmVEZXZpY2VDbGFzcygpIGF1dGhvcml6YXRpb25TdGF0dXNGb3JNZWRpYVR5cGU6Z2V0QVZN
ZWRpYVR5cGVBdWRpbygpXTsKICAgICAgICAgc3dpdGNoIChtaWNyb3Bob25lQXV0aG9yaXphdGlv
blN0YXR1cykgeworICAgICAgICBjYXNlIEFWQXV0aG9yaXphdGlvblN0YXR1c0F1dGhvcml6ZWQ6
CisgICAgICAgICAgICByZXF1ZXN0Q2FtZXJhQXV0aG9yaXphdGlvbigpOworICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgQVZBdXRob3JpemF0aW9uU3RhdHVzRGVuaWVkOgogICAgICAg
ICBjYXNlIEFWQXV0aG9yaXphdGlvblN0YXR1c1Jlc3RyaWN0ZWQ6CiAgICAgICAgICAgICByZXF1
ZXN0LmRlbnkoVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6VXNlck1lZGlhQWNjZXNz
RGVuaWFsUmVhc29uOjpQZXJtaXNzaW9uRGVuaWVkKTsKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICBjYXNlIEFWQXV0aG9yaXphdGlvblN0YXR1c05vdERldGVybWluZWQ6Ci0gICAg
ICAgICAgICBbZ2V0QVZDYXB0dXJlRGV2aWNlQ2xhc3MoKSByZXF1ZXN0QWNjZXNzRm9yTWVkaWFU
eXBlOmdldEFWTWVkaWFUeXBlQXVkaW8oKSBjb21wbGV0aW9uSGFuZGxlcjpeKEJPT0wgYXV0aG9y
aXplZCkgeworICAgICAgICAgICAgYXV0byBkZWNpc2lvbkhhbmRsZXIgPSBCbG9ja1B0cjx2b2lk
KEJPT0wpPjo6ZnJvbUNhbGxhYmxlKFtwcm90ZWN0ZWRSZXF1ZXN0ID0gbWFrZVJlZihyZXF1ZXN0
KSwgcmVxdWVzdENhbWVyYUF1dGhvcml6YXRpb25dKEJPT0wgYXV0aG9yaXplZCkgewogICAgICAg
ICAgICAgICAgIGlmICghYXV0aG9yaXplZCkgewotICAgICAgICAgICAgICAgICAgICByZXF1ZXN0
LmRlbnkoVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6VXNlck1lZGlhQWNjZXNzRGVu
aWFsUmVhc29uOjpQZXJtaXNzaW9uRGVuaWVkKTsKKyAgICAgICAgICAgICAgICAgICAgcHJvdGVj
dGVkUmVxdWVzdC0+ZGVueShVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpVc2VyTWVk
aWFBY2Nlc3NEZW5pYWxSZWFzb246OlBlcm1pc3Npb25EZW5pZWQpOwogICAgICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGNhbWVyYUF1
dGhvcml6YXRpb25CbG9jaygpOwotICAgICAgICAgICAgfV07CisgICAgICAgICAgICAgICAgcmVx
dWVzdENhbWVyYUF1dGhvcml6YXRpb24oKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAg
ICBbZ2V0QVZDYXB0dXJlRGV2aWNlQ2xhc3MoKSByZXF1ZXN0QWNjZXNzRm9yTWVkaWFUeXBlOmdl
dEFWTWVkaWFUeXBlQXVkaW8oKSBjb21wbGV0aW9uSGFuZGxlcjpkZWNpc2lvbkhhbmRsZXIuZ2V0
KCldOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBj
YW1lcmFBdXRob3JpemF0aW9uQmxvY2soKTsKICAgICAgICAgfQogICAgIH0gZWxzZQotICAgICAg
ICBjYW1lcmFBdXRob3JpemF0aW9uQmxvY2soKTsKKyAgICAgICAgcmVxdWVzdENhbWVyYUF1dGhv
cml6YXRpb24oKTsKICNlbHNlCi0gICAgdWlEZWxlZ2F0ZUF1dGhvcml6YXRpb25CbG9jaygpOwor
ICAgIHJlcXVlc3RVc2VyTWVkaWFBdXRob3JpemF0aW9uRm9yRGV2aWNlcyhmcmFtZSwgcmVxdWVz
dCwgKGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPiltX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZS5nZXQo
KSwgKm1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcpOwogI2VuZGlmCiAKICAgICByZXR1cm4gdHJ1ZTsK
QEAgLTUwOCw5ICs1MTksMTEgQEAgYm9vbCBVSURlbGVnYXRlOjpVSUNsaWVudDo6Y2hlY2tVc2Vy
TWVkaQogICAgIFdlYkNvcmU6OlVSTCByZXF1ZXN0RnJhbWVVUkwoV2ViQ29yZTo6VVJMKCksIGZy
YW1lLnVybCgpKTsKICAgICBXZWJDb3JlOjpVUkwgbWFpbkZyYW1lVVJMKFdlYkNvcmU6OlVSTCgp
LCBtYWluRnJhbWUtPnVybCgpKTsKIAotICAgIFsoaWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+KWRl
bGVnYXRlIF93ZWJWaWV3OndlYlZpZXcgY2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uRm9yVVJMOnJl
cXVlc3RGcmFtZVVSTCBtYWluRnJhbWVVUkw6bWFpbkZyYW1lVVJMIGZyYW1lSWRlbnRpZmllcjpm
cmFtZS5mcmFtZUlEKCkgZGVjaXNpb25IYW5kbGVyOl4oTlNTdHJpbmcgKnNhbHQsIEJPT0wgYXV0
aG9yaXplZCkgewotICAgICAgICByZXF1ZXN0LnNldFVzZXJNZWRpYUFjY2Vzc0luZm8oU3RyaW5n
KHNhbHQpLCBhdXRob3JpemVkKTsKLSAgICB9XTsKKyAgICBhdXRvIGRlY2lzaW9uSGFuZGxlciA9
IEJsb2NrUHRyPHZvaWQoTlNTdHJpbmcgKiwgQk9PTCk+Ojpmcm9tQ2FsbGFibGUoW3Byb3RlY3Rl
ZFJlcXVlc3QgPSBtYWtlUmVmKHJlcXVlc3QpXShOU1N0cmluZyAqc2FsdCwgQk9PTCBhdXRob3Jp
emVkKSB7CisgICAgICAgIHByb3RlY3RlZFJlcXVlc3QtPnNldFVzZXJNZWRpYUFjY2Vzc0luZm8o
U3RyaW5nKHNhbHQpLCBhdXRob3JpemVkKTsKKyAgICB9KTsKKworICAgIFsoaWQgPFdLVUlEZWxl
Z2F0ZVByaXZhdGU+KWRlbGVnYXRlIF93ZWJWaWV3OndlYlZpZXcgY2hlY2tVc2VyTWVkaWFQZXJt
aXNzaW9uRm9yVVJMOnJlcXVlc3RGcmFtZVVSTCBtYWluRnJhbWVVUkw6bWFpbkZyYW1lVVJMIGZy
YW1lSWRlbnRpZmllcjpmcmFtZS5mcmFtZUlEKCkgZGVjaXNpb25IYW5kbGVyOmRlY2lzaW9uSGFu
ZGxlci5nZXQoKV07CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KSW5kZXg6IFRvb2xzL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxOTA3MCkKKysrIFRv
b2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDE3LTA3LTAz
ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRp
YVN0cmVhbV0gUHJvdGVjdCByZXF1ZXN0IGFuZCB3ZWIgdmlldyBkdXJpbmcgZ1VNIGNsaWVudCBj
YWxsYmFjaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTc0MDk2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMjgzMzEwMj4KKworICAgICAgICBSZXZp
ZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyL0dldFVzZXJNZWRpYU5hdmlnYXRpb24ubW06IE5ldyB0ZXN0LgorCiAy
MDE3LTA3LTAzICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAg
ICAgIFBhc3Rpbmcgc2luZ2xlIHdvcmRzIGNvcGllZCB0byBVSVBhc3RlYm9hcmQgaW5zZXJ0cyBV
UkxzIGluIGVkaXRhYmxlIGFyZWFzCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gMjE4ODc3KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAkJMDc5
OUMzNDkxRUJBMkQ3QjAwM0I3NTMyIC8qIFVzZXJNZWRpYURpc2FibGVkLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdFREVGQUMxRUI5NDAwQzAwRDQz
MjkyIC8qIFVzZXJNZWRpYURpc2FibGVkLm1tICovOyB9OwogCQkwNzk5QzM0QjFFQkEzMzAxMDAz
Qjc1MzIgLyogZGlzYWJsZUdldFVzZXJNZWRpYS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3OTlDMzRBMUVCQTMyRjQwMDNCNzUzMiAv
KiBkaXNhYmxlR2V0VXNlck1lZGlhLmh0bWwgKi87IH07CiAJCTA3QzA0NkNBMUU0MjYyQTgwMDcy
MDFFNyAvKiBDQVJpbmdCdWZmZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDdDMDQ2QzkxRTQyNTczRTAwNzIwMUU3IC8qIENBUmluZ0J1ZmZlci5j
cHAgKi87IH07CisJCTA3Q0UxQ0YzMUYwNkE3RTAwMEJGODlGNSAvKiBHZXRVc2VyTWVkaWFOYXZp
Z2F0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDdDRTFDRjIxRjA2QTdFMDAwQkY4OUY1IC8qIEdldFVzZXJNZWRpYU5hdmlnYXRpb24ubW0gKi87
IH07CiAJCTBGMTM5RTc3MUE0MjNBNUIwMEY1OTBGNSAvKiBXZWFrT2JqQ1B0ci5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMTM5RTc1MUE0MjNBNTMw
MEY1OTBGNSAvKiBXZWFrT2JqQ1B0ci5tbSAqLzsgfTsKIAkJMEYxMzlFNzgxQTQyM0E2QjAwRjU5
MEY1IC8qIFBsYXRmb3JtVXRpbGl0aWVzQ29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjEzOUU3MjFBNDIzQTJCMDBGNTkwRjUgLyogUGxhdGZv
cm1VdGlsaXRpZXNDb2NvYS5tbSAqLzsgfTsKIAkJMEYxMzlFNzkxQTQyNDU3MDAwRjU5MEY1IC8q
IFBsYXRmb3JtVXRpbGl0aWVzQ29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjEzOUU3MjFBNDIzQTJCMDBGNTkwRjUgLyogUGxhdGZvcm1VdGls
aXRpZXNDb2NvYS5tbSAqLzsgfTsKQEAgLTk1MCw2ICs5NTEsNyBAQAogCQkwNzY2REQxRjFBNUFE
NTIwMDAyM0UzQkIgLyogUGVuZGluZ0FQSVJlcXVlc3RVUkwuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUGVuZGluZ0FQSVJlcXVlc3RVUkwuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwNzk5QzM0QTFFQkEzMkY0MDAzQjc1MzIgLyogZGlzYWJsZUdl
dFVzZXJNZWRpYS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gZGlzYWJsZUdldFVz
ZXJNZWRpYS5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0MwNDZDOTFFNDI1
NzNFMDA3MjAxRTcgLyogQ0FSaW5nQnVmZmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IENBUmluZ0J1ZmZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTA3Q0UxQ0YyMUYwNkE3RTAwMEJGODlGNSAvKiBHZXRVc2VyTWVkaWFOYXZpZ2F0aW9uLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR2V0VXNlck1lZGlhTmF2
aWdhdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdFREVGQUMxRUI5NDAw
QzAwRDQzMjkyIC8qIFVzZXJNZWRpYURpc2FibGVkLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gVXNlck1lZGlhRGlzYWJsZWQubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBCQ0Q4MzM0MTQ4NTdDRTQwMEVBMjAwMyAvKiBIYXNoTWFwLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhhc2hNYXAuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwQkNEODU2OTE0ODVDOThCMDBFQTIwMDMgLyogU2V0Rm9yU2Nv
cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2V0Rm9yU2NvcGUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjIxNSw2ICsyMjE3LDcgQEAKIAkJ
CQkyNkY1MkVBQTE4Mjg3MjYwMDAyM0Q0MTIgLyogR2VvbG9jYXRpb24uY3BwICovLAogCQkJCUY2
NjBBQTBDMTVBNUYwNjEwMDNBMTI0MyAvKiBHZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9u
VXNlckRhdGFDYWxsYmFjay5jcHAgKi8sCiAJCQkJRjY2MEFBMEYxNUE1RjYyNDAwM0ExMjQzIC8q
IEdldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YUNhbGxiYWNrX0J1bmRsZS5j
cHAgKi8sCisJCQkJMDdDRTFDRjIxRjA2QTdFMDAwQkY4OUY1IC8qIEdldFVzZXJNZWRpYU5hdmln
YXRpb24ubW0gKi8sCiAJCQkJNEJGREZGQTgxMzE0Nzc3NzAwNjFGMjRCIC8qIEhpdFRlc3RSZXN1
bHROb2RlSGFuZGxlLmNwcCAqLywKIAkJCQk0QkZERkZBNjEzMTQ3NzZDMDA2MUYyNEIgLyogSGl0
VGVzdFJlc3VsdE5vZGVIYW5kbGVfQnVuZGxlLmNwcCAqLywKIAkJCQlCQzU3NUFBQzEyNkU4M0I5
MDA2RjBGMTIgLyogSW5qZWN0ZWRCdW5kbGVCYXNpYy5jcHAgKi8sCkBAIC0zMDgwLDYgKzMwODMs
NyBAQAogCQkJCTdBNkEyQzcwMURDQ0ZBOEMwMEMwRDA4NSAvKiBMb2NhbFN0b3JhZ2VRdWlya1Rl
c3QubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VCMjFBNDExQTUxMDA0NDdDNEMgLyogTWVt
b3J5Q2FjaGVBZGRJbWFnZVRvQ2FjaGVJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VD
NTFBNDExQTdFMDA0NDdDNEMgLyogTWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2Fk
RGVsZWdhdGUubW0gaW4gU291cmNlcyAqLywKKwkJCQkwN0NFMUNGMzFGMDZBN0UwMDBCRjg5RjUg
LyogR2V0VXNlck1lZGlhTmF2aWdhdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUM2
MUE0MTFBN0UwMDQ0N0M0QyAvKiBNZW1vcnlDYWNoZVBydW5lV2l0aGluUmVzb3VyY2VMb2FkRGVs
ZWdhdGUubW0gaW4gU291cmNlcyAqLywKIAkJCQlDREEzMTU5ODFFRDUzNjUxMDA5RjYwRDMgLyog
TWVkaWFQbGF5YmFja1NsZWVwQXNzZXJ0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMwQkY4
OEQxREQ1OTY0RDAwQjAwMzI4IC8qIE1lbW9yeVByZXNzdXJlSGFuZGxlci5tbSBpbiBTb3VyY2Vz
ICovLApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0dldFVzZXJNZWRp
YU5hdmlnYXRpb24ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQyL0dldFVzZXJNZWRpYU5hdmlnYXRpb24ubW0JKG5vbmV4aXN0ZW50KQorKysgVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0dldFVzZXJNZWRpYU5hdmlnYXRpb24ubW0JKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25m
aWcuaCIKKworI2lmIFdLX0FQSV9FTkFCTEVECisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQor
CisjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVzdC5oIgorI2ltcG9y
dCAiVGVzdFdLV2ViVmlldy5oIgorI2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5jZXNQcml2YXRl
Lmg+CisjaW1wb3J0IDxXZWJLaXQvV0tVSURlbGVnYXRlUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2Vi
S2l0L1dLV2ViVmlldy5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRpb24u
aD4KKyNpbXBvcnQgPFdlYktpdC9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaD4KKworc3Rh
dGljIGJvb2wgb2tUb1Byb2NlZWQgPSBmYWxzZTsKKworc3RhdGljIHZvaWQgY2F1c2VUcm91Ymxl
KFdLV2ViVmlldyogd2ViVmlldykKK3sKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxS
ZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiYWJvdXQ6Ymxhbmsi
XV1dOworICAgIFt3ZWJWaWV3IHJlbGVhc2VdOworfQorCitAaW50ZXJmYWNlIE5hdmlnYXRpb25X
aGlsZUdldFVzZXJNZWRpYVByb21wdERpc3BsYXllZFVJRGVsZWdhdGUgOiBOU09iamVjdDxXS1VJ
RGVsZWdhdGU+CistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlcXVlc3RV
c2VyTWVkaWFBdXRob3JpemF0aW9uRm9yRGV2aWNlczooX1dLQ2FwdHVyZURldmljZXMpZGV2aWNl
cyB1cmw6KE5TVVJMICopdXJsIG1haW5GcmFtZVVSTDooTlNVUkwgKiltYWluRnJhbWVVUkwgZGVj
aXNpb25IYW5kbGVyOih2b2lkICheKShCT09MIGF1dGhvcml6ZWQpKWRlY2lzaW9uSGFuZGxlcjsK
Ky0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgY2hlY2tVc2VyTWVkaWFQZXJt
aXNzaW9uRm9yVVJMOihOU1VSTCAqKXVybCBtYWluRnJhbWVVUkw6KE5TVVJMICopbWFpbkZyYW1l
VVJMIGZyYW1lSWRlbnRpZmllcjooTlNVSW50ZWdlcilmcmFtZUlkZW50aWZpZXIgZGVjaXNpb25I
YW5kbGVyOih2b2lkICheKShOU1N0cmluZyAqc2FsdCwgQk9PTCBhdXRob3JpemVkKSlkZWNpc2lv
bkhhbmRsZXI7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBOYXZpZ2F0aW9uV2hpbGVHZXRVc2Vy
TWVkaWFQcm9tcHREaXNwbGF5ZWRVSURlbGVnYXRlCistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZp
ZXcgKil3ZWJWaWV3IHJlcXVlc3RVc2VyTWVkaWFBdXRob3JpemF0aW9uRm9yRGV2aWNlczooX1dL
Q2FwdHVyZURldmljZXMpZGV2aWNlcyB1cmw6KE5TVVJMICopdXJsIG1haW5GcmFtZVVSTDooTlNV
UkwgKiltYWluRnJhbWVVUkwgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShCT09MIGF1dGhvcml6
ZWQpKWRlY2lzaW9uSGFuZGxlcgoreworICAgIGNhdXNlVHJvdWJsZSh3ZWJWaWV3KTsKKyAgICBv
a1RvUHJvY2VlZCA9IHRydWU7CisgICAgZGVjaXNpb25IYW5kbGVyKFlFUyk7Cit9CisKKy0gKHZv
aWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgY2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9u
Rm9yVVJMOihOU1VSTCAqKXVybCBtYWluRnJhbWVVUkw6KE5TVVJMICopbWFpbkZyYW1lVVJMIGZy
YW1lSWRlbnRpZmllcjooTlNVSW50ZWdlcilmcmFtZUlkZW50aWZpZXIgZGVjaXNpb25IYW5kbGVy
Oih2b2lkICheKShOU1N0cmluZyAqc2FsdCwgQk9PTCBhdXRob3JpemVkKSlkZWNpc2lvbkhhbmRs
ZXIKK3sKKyAgICBjYXVzZVRyb3VibGUod2ViVmlldyk7CisgICAgb2tUb1Byb2NlZWQgPSB0cnVl
OworICAgIGRlY2lzaW9uSGFuZGxlcihAIjB4OTg3NjU0MzIxIiwgWUVTKTsKK30KK0BlbmQKKwor
bmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitURVNUKFdlYktpdDIsIE5hdmlnYXRlRHVyaW5n
R2V0VXNlck1lZGlhUHJvbXB0KQoreworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMo
W1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byBwcm9jZXNz
UG9vbENvbmZpZyA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2Nd
IGluaXRdKTsKKyAgICBhdXRvIHByZWZlcmVuY2VzID0gW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5j
ZXNdOworICAgIHByZWZlcmVuY2VzLl9tZWRpYUNhcHR1cmVSZXF1aXJlc1NlY3VyZUNvbm5lY3Rp
b24gPSBOTzsKKyAgICBwcmVmZXJlbmNlcy5fbWVkaWFEZXZpY2VzRW5hYmxlZCA9IFlFUzsKKyAg
ICBwcmVmZXJlbmNlcy5fbW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCA9IFlFUzsKKyAgICBhdXRv
IHdlYlZpZXcgPSBbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFr
ZSgwLCAwLCAzMjAsIDUwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIHByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZy5nZXQoKV07CisgICAgYXV0byBk
ZWxlZ2F0ZSA9IGFkb3B0TlMoW1tOYXZpZ2F0aW9uV2hpbGVHZXRVc2VyTWVkaWFQcm9tcHREaXNw
bGF5ZWRVSURlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgd2ViVmlldy5VSURlbGVnYXRlID0g
ZGVsZWdhdGUuZ2V0KCk7CisKKyAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAImdldFVz
ZXJNZWRpYSJdOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmb2tUb1Byb2NlZWQpOwor
fQorCitURVNUKFdlYktpdDIsIE5hdmlnYXRlRHVyaW5nRGV2aWNlRW51bWVyYXRpb24pCit7Cisg
ICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24g
YWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlnID0gYWRvcHROUyhbW19X
S1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gcHJlZmVy
ZW5jZXMgPSBbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc107CisgICAgcHJlZmVyZW5jZXMuX21l
ZGlhQ2FwdHVyZVJlcXVpcmVzU2VjdXJlQ29ubmVjdGlvbiA9IE5POworICAgIHByZWZlcmVuY2Vz
Ll9tZWRpYURldmljZXNFbmFibGVkID0gWUVTOworICAgIHByZWZlcmVuY2VzLl9tb2NrQ2FwdHVy
ZURldmljZXNFbmFibGVkID0gWUVTOworICAgIGF1dG8gd2ViVmlldyA9IFtbVGVzdFdLV2ViVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKSBjb25maWd1
cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCkgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOnByb2Nl
c3NQb29sQ29uZmlnLmdldCgpXTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW05hdmln
YXRpb25XaGlsZUdldFVzZXJNZWRpYVByb21wdERpc3BsYXllZFVJRGVsZWdhdGUgYWxsb2NdIGlu
aXRdKTsKKyAgICB3ZWJWaWV3LlVJRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKKworICAgIFt3
ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAiZW51bWVyYXRlTWVkaWFEZXZpY2VzIl07CisgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZva1RvUHJvY2VlZCk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFRlc3RXZWJLaXRBUEkKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNl
bmRpZiAvLyBXS19BUElfRU5BQkxFRAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314524</attachid>
            <date>2017-07-03 15:02:52 -0700</date>
            <delta_ts>2017-07-05 09:10:43 -0700</delta_ts>
            <desc>Fix test.</desc>
            <filename>build_test_fix_patch.txt</filename>
            <type>text/plain</type>
            <size>2813</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIxOTA5OCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDExIEBACisyMDE3LTA3LTAzICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUu
Y29tPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHRlc3QgZml4IGFmdGVyIHIyMTkwODMuCisKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvR2V0VXNlck1lZGlhTmF2aWdhdGlv
bi5tbToKKyAgICAgICAgKGNhdXNlVHJvdWJsZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpU
RVNUKToKKwogMjAxNy0wNy0wMyAgTWF0dCBMZXdpcyAgPGpsZXdpczNAYXBwbGUuY29tPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMTkwODMuCkluZGV4OiBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvR2V0VXNlck1lZGlhTmF2aWdhdGlvbi5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvR2V0VXNlck1lZGlhTmF2
aWdhdGlvbi5tbQkocmV2aXNpb24gMjE5MDkzKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyL0dldFVzZXJNZWRpYU5hdmlnYXRpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTQz
LDcgKzQzLDYgQEAgc3RhdGljIGJvb2wgb2tUb1Byb2NlZWQgPSBmYWxzZTsKIHN0YXRpYyB2b2lk
IGNhdXNlVHJvdWJsZShXS1dlYlZpZXcqIHdlYlZpZXcpCiB7CiAgICAgW3dlYlZpZXcgbG9hZFJl
cXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpA
ImFib3V0OmJsYW5rIl1dXTsKLSAgICBbd2ViVmlldyByZWxlYXNlXTsKIH0KIAogQGludGVyZmFj
ZSBOYXZpZ2F0aW9uV2hpbGVHZXRVc2VyTWVkaWFQcm9tcHREaXNwbGF5ZWRVSURlbGVnYXRlIDog
TlNPYmplY3Q8V0tVSURlbGVnYXRlPgpAQCAtNzcsOSArNzYsOSBAQCBURVNUKFdlYktpdDIsIE5h
dmlnYXRlRHVyaW5nR2V0VXNlck1lZGlhCiAgICAgcHJlZmVyZW5jZXMuX21lZGlhQ2FwdHVyZVJl
cXVpcmVzU2VjdXJlQ29ubmVjdGlvbiA9IE5POwogICAgIHByZWZlcmVuY2VzLl9tZWRpYURldmlj
ZXNFbmFibGVkID0gWUVTOwogICAgIHByZWZlcmVuY2VzLl9tb2NrQ2FwdHVyZURldmljZXNFbmFi
bGVkID0gWUVTOwotICAgIGF1dG8gd2ViVmlldyA9IFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKSBjb25maWd1cmF0aW9uOmNvbmZp
Z3VyYXRpb24uZ2V0KCkgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmln
LmdldCgpXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKSBjb25maWd1cmF0aW9u
OmNvbmZpZ3VyYXRpb24uZ2V0KCkgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOnByb2Nlc3NQb29s
Q29uZmlnLmdldCgpXSk7CiAgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tOYXZpZ2F0aW9u
V2hpbGVHZXRVc2VyTWVkaWFQcm9tcHREaXNwbGF5ZWRVSURlbGVnYXRlIGFsbG9jXSBpbml0XSk7
Ci0gICAgd2ViVmlldy5VSURlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CisgICAgd2ViVmlldy5n
ZXQoKS5VSURlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CiAKICAgICBbd2ViVmlldyBsb2FkVGVz
dFBhZ2VOYW1lZDpAImdldFVzZXJNZWRpYSJdOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmb2tUb1Byb2NlZWQpOwpAQCAtOTMsOSArOTIsOSBAQCBURVNUKFdlYktpdDIsIE5hdmlnYXRl
RHVyaW5nRGV2aWNlRW51bWVyCiAgICAgcHJlZmVyZW5jZXMuX21lZGlhQ2FwdHVyZVJlcXVpcmVz
U2VjdXJlQ29ubmVjdGlvbiA9IE5POwogICAgIHByZWZlcmVuY2VzLl9tZWRpYURldmljZXNFbmFi
bGVkID0gWUVTOwogICAgIHByZWZlcmVuY2VzLl9tb2NrQ2FwdHVyZURldmljZXNFbmFibGVkID0g
WUVTOwotICAgIGF1dG8gd2ViVmlldyA9IFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRp
b24uZ2V0KCkgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlnLmdldCgp
XTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKSBjb25maWd1cmF0aW9uOmNvbmZp
Z3VyYXRpb24uZ2V0KCkgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmln
LmdldCgpXSk7CiAgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tOYXZpZ2F0aW9uV2hpbGVH
ZXRVc2VyTWVkaWFQcm9tcHREaXNwbGF5ZWRVSURlbGVnYXRlIGFsbG9jXSBpbml0XSk7Ci0gICAg
d2ViVmlldy5VSURlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CisgICAgd2ViVmlldy5nZXQoKS5V
SURlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CiAKICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VO
YW1lZDpAImVudW1lcmF0ZU1lZGlhRGV2aWNlcyJdOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmb2tUb1Byb2NlZWQpOwo=
</data>
<flag name="commit-queue"
          id="335397"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314609</attachid>
            <date>2017-07-05 09:10:43 -0700</date>
            <delta_ts>2017-07-05 10:41:51 -0700</delta_ts>
            <desc>Fix test.</desc>
            <filename>gum_objc_crash_patch_4.txt</filename>
            <type>text/plain</type>
            <size>20487</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxODg3NykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDE3LTA3LTAzICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVhbV0g
UHJvdGVjdCByZXF1ZXN0IGFuZCB3ZWIgdmlldyBkdXJpbmcgZ1VNIGNsaWVudCBjYWxsYmFjawor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0MDk2Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMjgzMzEwMj4KKworICAgICAgICBSZXZpZXdlZCBieSBZ
b3Vlbm4gRmFibGV0LgorCisgICAgICAgIFJldGFpbiB0aGUgbWVzc2FnZSBhbmQgV2ViVmlldyBk
dXJpbmcgYXN5bmNocm9ub3VzIGNhbGxzIHNvIHRoZXkgd29uJ3QgYmUgCisgICAgICAgIHJlbGVh
c2VkIGlmIGEgbmF2aWdhdGlvbiBoYXBwZW5zIGR1cmluZyBhIGNhbGwgdG8gdGhlIFVBIGZvciBn
ZXRVc2VyTWVkaWEgCisgICAgICAgIG9yIGVudW1lcmF0ZU1lZGlhRGV2aWNlcy4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpyZXF1
ZXN0VXNlck1lZGlhQXV0aG9yaXphdGlvbkZvckRldmljZXMpOgorICAgICAgICAoV2ViS2l0OjpV
SURlbGVnYXRlOjpVSUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNsaWVudDo6Y2hlY2tVc2Vy
TWVkaWFQZXJtaXNzaW9uRm9yT3JpZ2luKToKKwogMjAxNy0wNi0yOCAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEF2b2lkIGRvdWJsZSB0aHJlYWQgZGlzcGF0Y2gg
aW4gV2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhRm9yVG9wUHJpdmF0ZWx5Q29udHJvbGxlZERv
bWFpbnMoKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdh
dGUubW0JKHJldmlzaW9uIDIxODg3NykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2Nv
YS9VSURlbGVnYXRlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00MDQsNiArNDA0LDMyIEBAIGJvb2wg
VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1bk9wZW5QYW5lbCgKIH0KICNlbmRpZgogCitzdGF0aWMg
dm9pZCByZXF1ZXN0VXNlck1lZGlhQXV0aG9yaXphdGlvbkZvckRldmljZXMoY29uc3QgV2ViS2l0
OjpXZWJGcmFtZVByb3h5JiBmcmFtZSwgV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dFByb3h5JiByZXF1ZXN0LCBpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4gZGVsZWdhdGUsIFdLV2Vi
VmlldyYgd2ViVmlldykKK3sKKyAgICBhdXRvIGRlY2lzaW9uSGFuZGxlciA9IEJsb2NrUHRyPHZv
aWQoQk9PTCk+Ojpmcm9tQ2FsbGFibGUoW3Byb3RlY3RlZFJlcXVlc3QgPSBtYWtlUmVmKHJlcXVl
c3QpXShCT09MIGF1dGhvcml6ZWQpIHsKKyAgICAgICAgaWYgKCFhdXRob3JpemVkKSB7CisgICAg
ICAgICAgICBwcm90ZWN0ZWRSZXF1ZXN0LT5kZW55KFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
UHJveHk6OlVzZXJNZWRpYUFjY2Vzc0RlbmlhbFJlYXNvbjo6UGVybWlzc2lvbkRlbmllZCk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgY29uc3QgU3RyaW5nJiB2aWRl
b0RldmljZVVJRCA9IHByb3RlY3RlZFJlcXVlc3QtPnJlcXVpcmVzVmlkZW8oKSA/IHByb3RlY3Rl
ZFJlcXVlc3QtPnZpZGVvRGV2aWNlVUlEcygpLmZpcnN0KCkgOiBTdHJpbmcoKTsKKyAgICAgICAg
Y29uc3QgU3RyaW5nJiBhdWRpb0RldmljZVVJRCA9IHByb3RlY3RlZFJlcXVlc3QtPnJlcXVpcmVz
QXVkaW8oKSA/IHByb3RlY3RlZFJlcXVlc3QtPmF1ZGlvRGV2aWNlVUlEcygpLmZpcnN0KCkgOiBT
dHJpbmcoKTsKKyAgICAgICAgcHJvdGVjdGVkUmVxdWVzdC0+YWxsb3coYXVkaW9EZXZpY2VVSUQs
IHZpZGVvRGV2aWNlVUlEKTsKKyAgICB9KTsKKworICAgIGNvbnN0IFdlYkZyYW1lUHJveHkqIG1h
aW5GcmFtZSA9IGZyYW1lLnBhZ2UoKS0+bWFpbkZyYW1lKCk7CisgICAgV2ViQ29yZTo6VVJMIHJl
cXVlc3RGcmFtZVVSTChXZWJDb3JlOjpVUkwoKSwgZnJhbWUudXJsKCkpOworICAgIFdlYkNvcmU6
OlVSTCBtYWluRnJhbWVVUkwoV2ViQ29yZTo6VVJMKCksIG1haW5GcmFtZS0+dXJsKCkpOworCisg
ICAgX1dLQ2FwdHVyZURldmljZXMgZGV2aWNlcyA9IDA7CisgICAgaWYgKHJlcXVlc3QucmVxdWly
ZXNBdWRpbygpKQorICAgICAgICBkZXZpY2VzIHw9IF9XS0NhcHR1cmVEZXZpY2VNaWNyb3Bob25l
OworICAgIGlmIChyZXF1ZXN0LnJlcXVpcmVzVmlkZW8oKSkKKyAgICAgICAgZGV2aWNlcyB8PSBf
V0tDYXB0dXJlRGV2aWNlQ2FtZXJhOworCisgICAgYXV0byBwcm90ZWN0ZWRXZWJWaWV3ID0gUmV0
YWluUHRyPFdLV2ViVmlldz4oJndlYlZpZXcpOworICAgIFtkZWxlZ2F0ZSBfd2ViVmlldzpwcm90
ZWN0ZWRXZWJWaWV3LmdldCgpIHJlcXVlc3RVc2VyTWVkaWFBdXRob3JpemF0aW9uRm9yRGV2aWNl
czpkZXZpY2VzIHVybDpyZXF1ZXN0RnJhbWVVUkwgbWFpbkZyYW1lVVJMOm1haW5GcmFtZVVSTCBk
ZWNpc2lvbkhhbmRsZXI6ZGVjaXNpb25IYW5kbGVyLmdldCgpXTsKK30KKwogYm9vbCBVSURlbGVn
YXRlOjpVSUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3Qo
V2ViS2l0OjpXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYgZnJhbWUs
IEFQSTo6U2VjdXJpdHlPcmlnaW4mIHVzZXJNZWRpYU9yaWdpbiwgQVBJOjpTZWN1cml0eU9yaWdp
biYgdG9wTGV2ZWxPcmlnaW4sIFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94
eSYgcmVxdWVzdCkKIHsKICAgICBhdXRvIGRlbGVnYXRlID0gbV91aURlbGVnYXRlLm1fZGVsZWdh
dGUuZ2V0KCk7CkBAIC00MTksNzcgKzQ0NSw2MiBAQCBib29sIFVJRGVsZWdhdGU6OlVJQ2xpZW50
OjpkZWNpZGVQb2xpY3lGCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIF9fYmxv
Y2sgV0tXZWJWaWV3ICp3ZWJWaWV3ID0gbV91aURlbGVnYXRlLm1fd2ViVmlldzsKLSAgICB2b2lk
IChedWlEZWxlZ2F0ZUF1dGhvcml6YXRpb25CbG9jaykodm9pZCkgPSBeIHsKLSAgICAgICAgY29u
c3QgV2ViRnJhbWVQcm94eSogbWFpbkZyYW1lID0gZnJhbWUucGFnZSgpLT5tYWluRnJhbWUoKTsK
LSAgICAgICAgV2ViQ29yZTo6VVJMIHJlcXVlc3RGcmFtZVVSTChXZWJDb3JlOjpVUkwoKSwgZnJh
bWUudXJsKCkpOwotICAgICAgICBXZWJDb3JlOjpVUkwgbWFpbkZyYW1lVVJMKFdlYkNvcmU6OlVS
TCgpLCBtYWluRnJhbWUtPnVybCgpKTsKLQotICAgICAgICBfV0tDYXB0dXJlRGV2aWNlcyBkZXZp
Y2VzID0gMDsKLSAgICAgICAgaWYgKHJlcXVpcmVzQXVkaW8pCi0gICAgICAgICAgICBkZXZpY2Vz
IHw9IF9XS0NhcHR1cmVEZXZpY2VNaWNyb3Bob25lOwotICAgICAgICBpZiAocmVxdWlyZXNWaWRl
bykKLSAgICAgICAgICAgIGRldmljZXMgfD0gX1dLQ2FwdHVyZURldmljZUNhbWVyYTsKLQotICAg
ICAgICBbKGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPilkZWxlZ2F0ZSBfd2ViVmlldzp3ZWJWaWV3
IHJlcXVlc3RVc2VyTWVkaWFBdXRob3JpemF0aW9uRm9yRGV2aWNlczpkZXZpY2VzIHVybDpyZXF1
ZXN0RnJhbWVVUkwgbWFpbkZyYW1lVVJMOm1haW5GcmFtZVVSTCBkZWNpc2lvbkhhbmRsZXI6XihC
T09MIGF1dGhvcml6ZWQpIHsKLSAgICAgICAgICAgIGlmICghYXV0aG9yaXplZCkgewotICAgICAg
ICAgICAgICAgIHJlcXVlc3QuZGVueShVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpV
c2VyTWVkaWFBY2Nlc3NEZW5pYWxSZWFzb246OlBlcm1pc3Npb25EZW5pZWQpOwotICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNvbnN0IFN0cmluZyYg
dmlkZW9EZXZpY2VVSUQgPSByZXF1aXJlc1ZpZGVvID8gcmVxdWVzdC52aWRlb0RldmljZVVJRHMo
KS5maXJzdCgpIDogU3RyaW5nKCk7Ci0gICAgICAgICAgICBjb25zdCBTdHJpbmcmIGF1ZGlvRGV2
aWNlVUlEID0gcmVxdWlyZXNBdWRpbyA/IHJlcXVlc3QuYXVkaW9EZXZpY2VVSURzKCkuZmlyc3Qo
KSA6IFN0cmluZygpOwotICAgICAgICAgICAgcmVxdWVzdC5hbGxvdyhhdWRpb0RldmljZVVJRCwg
dmlkZW9EZXZpY2VVSUQpOwotICAgICAgICB9XTsKLSAgICB9OwotCiAjaWYgUExBVEZPUk0oSU9T
KQotICAgIHZvaWQgKF5jYW1lcmFBdXRob3JpemF0aW9uQmxvY2spKHZvaWQpID0gXiB7Ci0gICAg
ICAgIGlmIChyZXF1aXJlc1ZpZGVvKSB7Ci0gICAgICAgICAgICBBVkF1dGhvcml6YXRpb25TdGF0
dXMgY2FtZXJhQXV0aG9yaXphdGlvblN0YXR1cyA9IFtnZXRBVkNhcHR1cmVEZXZpY2VDbGFzcygp
IGF1dGhvcml6YXRpb25TdGF0dXNGb3JNZWRpYVR5cGU6Z2V0QVZNZWRpYVR5cGVWaWRlbygpXTsK
LSAgICAgICAgICAgIHN3aXRjaCAoY2FtZXJhQXV0aG9yaXphdGlvblN0YXR1cykgewotICAgICAg
ICAgICAgY2FzZSBBVkF1dGhvcml6YXRpb25TdGF0dXNEZW5pZWQ6Ci0gICAgICAgICAgICBjYXNl
IEFWQXV0aG9yaXphdGlvblN0YXR1c1Jlc3RyaWN0ZWQ6Ci0gICAgICAgICAgICAgICAgcmVxdWVz
dC5kZW55KFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OlVzZXJNZWRpYUFjY2Vzc0Rl
bmlhbFJlYXNvbjo6UGVybWlzc2lvbkRlbmllZCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAgICAgY2FzZSBBVkF1dGhvcml6YXRpb25TdGF0dXNOb3REZXRlcm1pbmVkOgotICAg
ICAgICAgICAgICAgIFtnZXRBVkNhcHR1cmVEZXZpY2VDbGFzcygpIHJlcXVlc3RBY2Nlc3NGb3JN
ZWRpYVR5cGU6Z2V0QVZNZWRpYVR5cGVWaWRlbygpIGNvbXBsZXRpb25IYW5kbGVyOl4oQk9PTCBh
dXRob3JpemVkKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghYXV0aG9yaXplZCkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5kZW55KFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0UHJveHk6OlVzZXJNZWRpYUFjY2Vzc0RlbmlhbFJlYXNvbjo6UGVybWlzc2lvbkRlbmllZCk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICAgICAgdWlEZWxlZ2F0ZUF1dGhvcml6YXRpb25CbG9jaygpOwotICAg
ICAgICAgICAgICAgIH1dOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVm
YXVsdDoKLSAgICAgICAgICAgICAgICB1aURlbGVnYXRlQXV0aG9yaXphdGlvbkJsb2NrKCk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgdWlEZWxlZ2F0ZUF1dGhv
cml6YXRpb25CbG9jaygpOwotICAgIH07CisgICAgYXV0byByZXF1ZXN0Q2FtZXJhQXV0aG9yaXph
dGlvbiA9IEJsb2NrUHRyPHZvaWQoKT46OmZyb21DYWxsYWJsZShbdGhpcywgJmZyYW1lLCBwcm90
ZWN0ZWRSZXF1ZXN0ID0gbWFrZVJlZihyZXF1ZXN0KSwgd2ViVmlldyA9IFJldGFpblB0cjxXS1dl
YlZpZXc+KG1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcpXSgpIHsKKworICAgICAgICBpZiAoIXByb3Rl
Y3RlZFJlcXVlc3QtPnJlcXVpcmVzVmlkZW8oKSkgeworICAgICAgICAgICAgcmVxdWVzdFVzZXJN
ZWRpYUF1dGhvcml6YXRpb25Gb3JEZXZpY2VzKGZyYW1lLCBwcm90ZWN0ZWRSZXF1ZXN0LCAoaWQg
PFdLVUlEZWxlZ2F0ZVByaXZhdGU+KW1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRlLmdldCgpLCAqd2Vi
Vmlldy5nZXQoKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgQVZB
dXRob3JpemF0aW9uU3RhdHVzIGNhbWVyYUF1dGhvcml6YXRpb25TdGF0dXMgPSBbZ2V0QVZDYXB0
dXJlRGV2aWNlQ2xhc3MoKSBhdXRob3JpemF0aW9uU3RhdHVzRm9yTWVkaWFUeXBlOmdldEFWTWVk
aWFUeXBlVmlkZW8oKV07CisgICAgICAgIHN3aXRjaCAoY2FtZXJhQXV0aG9yaXphdGlvblN0YXR1
cykgeworICAgICAgICBjYXNlIEFWQXV0aG9yaXphdGlvblN0YXR1c0F1dGhvcml6ZWQ6CisgICAg
ICAgICAgICByZXF1ZXN0VXNlck1lZGlhQXV0aG9yaXphdGlvbkZvckRldmljZXMoZnJhbWUsIHBy
b3RlY3RlZFJlcXVlc3QsIChpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pbV91aURlbGVnYXRlLm1f
ZGVsZWdhdGUuZ2V0KCksICp3ZWJWaWV3LmdldCgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIEFWQXV0aG9yaXphdGlvblN0YXR1c0RlbmllZDoKKyAgICAgICAgY2FzZSBBVkF1
dGhvcml6YXRpb25TdGF0dXNSZXN0cmljdGVkOgorICAgICAgICAgICAgcHJvdGVjdGVkUmVxdWVz
dC0+ZGVueShVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpVc2VyTWVkaWFBY2Nlc3NE
ZW5pYWxSZWFzb246OlBlcm1pc3Npb25EZW5pZWQpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICBjYXNlIEFWQXV0aG9yaXphdGlvblN0YXR1c05vdERldGVybWluZWQ6CisgICAgICAgICAg
ICBhdXRvIGRlY2lzaW9uSGFuZGxlciA9IEJsb2NrUHRyPHZvaWQoQk9PTCk+Ojpmcm9tQ2FsbGFi
bGUoW3RoaXMsICZmcmFtZSwgcHJvdGVjdGVkUmVxdWVzdCA9IG1ha2VSZWYocHJvdGVjdGVkUmVx
dWVzdC5nZXQoKSksIHdlYlZpZXcgPSBSZXRhaW5QdHI8V0tXZWJWaWV3PihtX3VpRGVsZWdhdGUu
bV93ZWJWaWV3KV0oQk9PTCBhdXRob3JpemVkKSB7CisgICAgICAgICAgICAgICAgaWYgKCFhdXRo
b3JpemVkKSB7CisgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZFJlcXVlc3QtPmRlbnkoVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6VXNlck1lZGlhQWNjZXNzRGVuaWFsUmVhc29u
OjpQZXJtaXNzaW9uRGVuaWVkKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXF1ZXN0VXNlck1lZGlhQXV0aG9yaXphdGlv
bkZvckRldmljZXMoZnJhbWUsIHByb3RlY3RlZFJlcXVlc3QsIChpZCA8V0tVSURlbGVnYXRlUHJp
dmF0ZT4pbV91aURlbGVnYXRlLm1fZGVsZWdhdGUuZ2V0KCksICp3ZWJWaWV3LmdldCgpKTsKKyAg
ICAgICAgICAgIH0pOworCisgICAgICAgICAgICBbZ2V0QVZDYXB0dXJlRGV2aWNlQ2xhc3MoKSBy
ZXF1ZXN0QWNjZXNzRm9yTWVkaWFUeXBlOmdldEFWTWVkaWFUeXBlVmlkZW8oKSBjb21wbGV0aW9u
SGFuZGxlcjpkZWNpc2lvbkhhbmRsZXIuZ2V0KCldOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKyAgICB9KTsKIAogICAgIGlmIChyZXF1aXJlc0F1ZGlvKSB7CiAgICAgICAgIEFWQXV0
aG9yaXphdGlvblN0YXR1cyBtaWNyb3Bob25lQXV0aG9yaXphdGlvblN0YXR1cyA9IFtnZXRBVkNh
cHR1cmVEZXZpY2VDbGFzcygpIGF1dGhvcml6YXRpb25TdGF0dXNGb3JNZWRpYVR5cGU6Z2V0QVZN
ZWRpYVR5cGVBdWRpbygpXTsKICAgICAgICAgc3dpdGNoIChtaWNyb3Bob25lQXV0aG9yaXphdGlv
blN0YXR1cykgeworICAgICAgICBjYXNlIEFWQXV0aG9yaXphdGlvblN0YXR1c0F1dGhvcml6ZWQ6
CisgICAgICAgICAgICByZXF1ZXN0Q2FtZXJhQXV0aG9yaXphdGlvbigpOworICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgQVZBdXRob3JpemF0aW9uU3RhdHVzRGVuaWVkOgogICAgICAg
ICBjYXNlIEFWQXV0aG9yaXphdGlvblN0YXR1c1Jlc3RyaWN0ZWQ6CiAgICAgICAgICAgICByZXF1
ZXN0LmRlbnkoVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6VXNlck1lZGlhQWNjZXNz
RGVuaWFsUmVhc29uOjpQZXJtaXNzaW9uRGVuaWVkKTsKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICBjYXNlIEFWQXV0aG9yaXphdGlvblN0YXR1c05vdERldGVybWluZWQ6Ci0gICAg
ICAgICAgICBbZ2V0QVZDYXB0dXJlRGV2aWNlQ2xhc3MoKSByZXF1ZXN0QWNjZXNzRm9yTWVkaWFU
eXBlOmdldEFWTWVkaWFUeXBlQXVkaW8oKSBjb21wbGV0aW9uSGFuZGxlcjpeKEJPT0wgYXV0aG9y
aXplZCkgeworICAgICAgICAgICAgYXV0byBkZWNpc2lvbkhhbmRsZXIgPSBCbG9ja1B0cjx2b2lk
KEJPT0wpPjo6ZnJvbUNhbGxhYmxlKFtwcm90ZWN0ZWRSZXF1ZXN0ID0gbWFrZVJlZihyZXF1ZXN0
KSwgcmVxdWVzdENhbWVyYUF1dGhvcml6YXRpb25dKEJPT0wgYXV0aG9yaXplZCkgewogICAgICAg
ICAgICAgICAgIGlmICghYXV0aG9yaXplZCkgewotICAgICAgICAgICAgICAgICAgICByZXF1ZXN0
LmRlbnkoVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6VXNlck1lZGlhQWNjZXNzRGVu
aWFsUmVhc29uOjpQZXJtaXNzaW9uRGVuaWVkKTsKKyAgICAgICAgICAgICAgICAgICAgcHJvdGVj
dGVkUmVxdWVzdC0+ZGVueShVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpVc2VyTWVk
aWFBY2Nlc3NEZW5pYWxSZWFzb246OlBlcm1pc3Npb25EZW5pZWQpOwogICAgICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGNhbWVyYUF1
dGhvcml6YXRpb25CbG9jaygpOwotICAgICAgICAgICAgfV07CisgICAgICAgICAgICAgICAgcmVx
dWVzdENhbWVyYUF1dGhvcml6YXRpb24oKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAg
ICBbZ2V0QVZDYXB0dXJlRGV2aWNlQ2xhc3MoKSByZXF1ZXN0QWNjZXNzRm9yTWVkaWFUeXBlOmdl
dEFWTWVkaWFUeXBlQXVkaW8oKSBjb21wbGV0aW9uSGFuZGxlcjpkZWNpc2lvbkhhbmRsZXIuZ2V0
KCldOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBj
YW1lcmFBdXRob3JpemF0aW9uQmxvY2soKTsKICAgICAgICAgfQogICAgIH0gZWxzZQotICAgICAg
ICBjYW1lcmFBdXRob3JpemF0aW9uQmxvY2soKTsKKyAgICAgICAgcmVxdWVzdENhbWVyYUF1dGhv
cml6YXRpb24oKTsKICNlbHNlCi0gICAgdWlEZWxlZ2F0ZUF1dGhvcml6YXRpb25CbG9jaygpOwor
ICAgIHJlcXVlc3RVc2VyTWVkaWFBdXRob3JpemF0aW9uRm9yRGV2aWNlcyhmcmFtZSwgcmVxdWVz
dCwgKGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPiltX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZS5nZXQo
KSwgKm1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcpOwogI2VuZGlmCiAKICAgICByZXR1cm4gdHJ1ZTsK
QEAgLTUwOCw5ICs1MTksMTEgQEAgYm9vbCBVSURlbGVnYXRlOjpVSUNsaWVudDo6Y2hlY2tVc2Vy
TWVkaQogICAgIFdlYkNvcmU6OlVSTCByZXF1ZXN0RnJhbWVVUkwoV2ViQ29yZTo6VVJMKCksIGZy
YW1lLnVybCgpKTsKICAgICBXZWJDb3JlOjpVUkwgbWFpbkZyYW1lVVJMKFdlYkNvcmU6OlVSTCgp
LCBtYWluRnJhbWUtPnVybCgpKTsKIAotICAgIFsoaWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+KWRl
bGVnYXRlIF93ZWJWaWV3OndlYlZpZXcgY2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uRm9yVVJMOnJl
cXVlc3RGcmFtZVVSTCBtYWluRnJhbWVVUkw6bWFpbkZyYW1lVVJMIGZyYW1lSWRlbnRpZmllcjpm
cmFtZS5mcmFtZUlEKCkgZGVjaXNpb25IYW5kbGVyOl4oTlNTdHJpbmcgKnNhbHQsIEJPT0wgYXV0
aG9yaXplZCkgewotICAgICAgICByZXF1ZXN0LnNldFVzZXJNZWRpYUFjY2Vzc0luZm8oU3RyaW5n
KHNhbHQpLCBhdXRob3JpemVkKTsKLSAgICB9XTsKKyAgICBhdXRvIGRlY2lzaW9uSGFuZGxlciA9
IEJsb2NrUHRyPHZvaWQoTlNTdHJpbmcgKiwgQk9PTCk+Ojpmcm9tQ2FsbGFibGUoW3Byb3RlY3Rl
ZFJlcXVlc3QgPSBtYWtlUmVmKHJlcXVlc3QpXShOU1N0cmluZyAqc2FsdCwgQk9PTCBhdXRob3Jp
emVkKSB7CisgICAgICAgIHByb3RlY3RlZFJlcXVlc3QtPnNldFVzZXJNZWRpYUFjY2Vzc0luZm8o
U3RyaW5nKHNhbHQpLCBhdXRob3JpemVkKTsKKyAgICB9KTsKKworICAgIFsoaWQgPFdLVUlEZWxl
Z2F0ZVByaXZhdGU+KWRlbGVnYXRlIF93ZWJWaWV3OndlYlZpZXcgY2hlY2tVc2VyTWVkaWFQZXJt
aXNzaW9uRm9yVVJMOnJlcXVlc3RGcmFtZVVSTCBtYWluRnJhbWVVUkw6bWFpbkZyYW1lVVJMIGZy
YW1lSWRlbnRpZmllcjpmcmFtZS5mcmFtZUlEKCkgZGVjaXNpb25IYW5kbGVyOmRlY2lzaW9uSGFu
ZGxlci5nZXQoKV07CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KSW5kZXg6IFRvb2xzL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxOTA3MCkKKysrIFRv
b2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDE3LTA3LTAz
ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRp
YVN0cmVhbV0gUHJvdGVjdCByZXF1ZXN0IGFuZCB3ZWIgdmlldyBkdXJpbmcgZ1VNIGNsaWVudCBj
YWxsYmFjaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTc0MDk2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMjgzMzEwMj4KKworICAgICAgICBSZXZp
ZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyL0dldFVzZXJNZWRpYU5hdmlnYXRpb24ubW06IE5ldyB0ZXN0LgorCiAy
MDE3LTA3LTAzICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAg
ICAgIFBhc3Rpbmcgc2luZ2xlIHdvcmRzIGNvcGllZCB0byBVSVBhc3RlYm9hcmQgaW5zZXJ0cyBV
UkxzIGluIGVkaXRhYmxlIGFyZWFzCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gMjE4ODc3KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAkJMDc5
OUMzNDkxRUJBMkQ3QjAwM0I3NTMyIC8qIFVzZXJNZWRpYURpc2FibGVkLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdFREVGQUMxRUI5NDAwQzAwRDQz
MjkyIC8qIFVzZXJNZWRpYURpc2FibGVkLm1tICovOyB9OwogCQkwNzk5QzM0QjFFQkEzMzAxMDAz
Qjc1MzIgLyogZGlzYWJsZUdldFVzZXJNZWRpYS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3OTlDMzRBMUVCQTMyRjQwMDNCNzUzMiAv
KiBkaXNhYmxlR2V0VXNlck1lZGlhLmh0bWwgKi87IH07CiAJCTA3QzA0NkNBMUU0MjYyQTgwMDcy
MDFFNyAvKiBDQVJpbmdCdWZmZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDdDMDQ2QzkxRTQyNTczRTAwNzIwMUU3IC8qIENBUmluZ0J1ZmZlci5j
cHAgKi87IH07CisJCTA3Q0UxQ0YzMUYwNkE3RTAwMEJGODlGNSAvKiBHZXRVc2VyTWVkaWFOYXZp
Z2F0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDdDRTFDRjIxRjA2QTdFMDAwQkY4OUY1IC8qIEdldFVzZXJNZWRpYU5hdmlnYXRpb24ubW0gKi87
IH07CiAJCTBGMTM5RTc3MUE0MjNBNUIwMEY1OTBGNSAvKiBXZWFrT2JqQ1B0ci5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMTM5RTc1MUE0MjNBNTMw
MEY1OTBGNSAvKiBXZWFrT2JqQ1B0ci5tbSAqLzsgfTsKIAkJMEYxMzlFNzgxQTQyM0E2QjAwRjU5
MEY1IC8qIFBsYXRmb3JtVXRpbGl0aWVzQ29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjEzOUU3MjFBNDIzQTJCMDBGNTkwRjUgLyogUGxhdGZv
cm1VdGlsaXRpZXNDb2NvYS5tbSAqLzsgfTsKIAkJMEYxMzlFNzkxQTQyNDU3MDAwRjU5MEY1IC8q
IFBsYXRmb3JtVXRpbGl0aWVzQ29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjEzOUU3MjFBNDIzQTJCMDBGNTkwRjUgLyogUGxhdGZvcm1VdGls
aXRpZXNDb2NvYS5tbSAqLzsgfTsKQEAgLTk1MCw2ICs5NTEsNyBAQAogCQkwNzY2REQxRjFBNUFE
NTIwMDAyM0UzQkIgLyogUGVuZGluZ0FQSVJlcXVlc3RVUkwuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUGVuZGluZ0FQSVJlcXVlc3RVUkwuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwNzk5QzM0QTFFQkEzMkY0MDAzQjc1MzIgLyogZGlzYWJsZUdl
dFVzZXJNZWRpYS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gZGlzYWJsZUdldFVz
ZXJNZWRpYS5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0MwNDZDOTFFNDI1
NzNFMDA3MjAxRTcgLyogQ0FSaW5nQnVmZmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IENBUmluZ0J1ZmZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTA3Q0UxQ0YyMUYwNkE3RTAwMEJGODlGNSAvKiBHZXRVc2VyTWVkaWFOYXZpZ2F0aW9uLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR2V0VXNlck1lZGlhTmF2
aWdhdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdFREVGQUMxRUI5NDAw
QzAwRDQzMjkyIC8qIFVzZXJNZWRpYURpc2FibGVkLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gVXNlck1lZGlhRGlzYWJsZWQubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBCQ0Q4MzM0MTQ4NTdDRTQwMEVBMjAwMyAvKiBIYXNoTWFwLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhhc2hNYXAuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwQkNEODU2OTE0ODVDOThCMDBFQTIwMDMgLyogU2V0Rm9yU2Nv
cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2V0Rm9yU2NvcGUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjIxNSw2ICsyMjE3LDcgQEAKIAkJ
CQkyNkY1MkVBQTE4Mjg3MjYwMDAyM0Q0MTIgLyogR2VvbG9jYXRpb24uY3BwICovLAogCQkJCUY2
NjBBQTBDMTVBNUYwNjEwMDNBMTI0MyAvKiBHZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9u
VXNlckRhdGFDYWxsYmFjay5jcHAgKi8sCiAJCQkJRjY2MEFBMEYxNUE1RjYyNDAwM0ExMjQzIC8q
IEdldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YUNhbGxiYWNrX0J1bmRsZS5j
cHAgKi8sCisJCQkJMDdDRTFDRjIxRjA2QTdFMDAwQkY4OUY1IC8qIEdldFVzZXJNZWRpYU5hdmln
YXRpb24ubW0gKi8sCiAJCQkJNEJGREZGQTgxMzE0Nzc3NzAwNjFGMjRCIC8qIEhpdFRlc3RSZXN1
bHROb2RlSGFuZGxlLmNwcCAqLywKIAkJCQk0QkZERkZBNjEzMTQ3NzZDMDA2MUYyNEIgLyogSGl0
VGVzdFJlc3VsdE5vZGVIYW5kbGVfQnVuZGxlLmNwcCAqLywKIAkJCQlCQzU3NUFBQzEyNkU4M0I5
MDA2RjBGMTIgLyogSW5qZWN0ZWRCdW5kbGVCYXNpYy5jcHAgKi8sCkBAIC0zMDgwLDYgKzMwODMs
NyBAQAogCQkJCTdBNkEyQzcwMURDQ0ZBOEMwMEMwRDA4NSAvKiBMb2NhbFN0b3JhZ2VRdWlya1Rl
c3QubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VCMjFBNDExQTUxMDA0NDdDNEMgLyogTWVt
b3J5Q2FjaGVBZGRJbWFnZVRvQ2FjaGVJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VD
NTFBNDExQTdFMDA0NDdDNEMgLyogTWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2Fk
RGVsZWdhdGUubW0gaW4gU291cmNlcyAqLywKKwkJCQkwN0NFMUNGMzFGMDZBN0UwMDBCRjg5RjUg
LyogR2V0VXNlck1lZGlhTmF2aWdhdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUM2
MUE0MTFBN0UwMDQ0N0M0QyAvKiBNZW1vcnlDYWNoZVBydW5lV2l0aGluUmVzb3VyY2VMb2FkRGVs
ZWdhdGUubW0gaW4gU291cmNlcyAqLywKIAkJCQlDREEzMTU5ODFFRDUzNjUxMDA5RjYwRDMgLyog
TWVkaWFQbGF5YmFja1NsZWVwQXNzZXJ0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMwQkY4
OEQxREQ1OTY0RDAwQjAwMzI4IC8qIE1lbW9yeVByZXNzdXJlSGFuZGxlci5tbSBpbiBTb3VyY2Vz
ICovLApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0dldFVzZXJNZWRp
YU5hdmlnYXRpb24ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQyL0dldFVzZXJNZWRpYU5hdmlnYXRpb24ubW0JKG5vbmV4aXN0ZW50KQorKysgVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0dldFVzZXJNZWRpYU5hdmlnYXRpb24ubW0JKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25m
aWcuaCIKKworI2lmIFdLX0FQSV9FTkFCTEVECisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQor
CisjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVzdC5oIgorI2ltcG9y
dCAiVGVzdFdLV2ViVmlldy5oIgorI2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5jZXNQcml2YXRl
Lmg+CisjaW1wb3J0IDxXZWJLaXQvV0tVSURlbGVnYXRlUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2Vi
S2l0L1dLV2ViVmlldy5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRpb24u
aD4KKyNpbXBvcnQgPFdlYktpdC9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaD4KKworc3Rh
dGljIGJvb2wgb2tUb1Byb2NlZWQgPSBmYWxzZTsKK3N0YXRpYyBib29sIHNob3VsZFJlbGVhc2VJ
bkVudW1lcmF0ZSA9IGZhbHNlOworCitAaW50ZXJmYWNlIE5hdmlnYXRpb25XaGlsZUdldFVzZXJN
ZWRpYVByb21wdERpc3BsYXllZFVJRGVsZWdhdGUgOiBOU09iamVjdDxXS1VJRGVsZWdhdGU+Cist
ICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlcXVlc3RVc2VyTWVkaWFBdXRo
b3JpemF0aW9uRm9yRGV2aWNlczooX1dLQ2FwdHVyZURldmljZXMpZGV2aWNlcyB1cmw6KE5TVVJM
ICopdXJsIG1haW5GcmFtZVVSTDooTlNVUkwgKiltYWluRnJhbWVVUkwgZGVjaXNpb25IYW5kbGVy
Oih2b2lkICheKShCT09MIGF1dGhvcml6ZWQpKWRlY2lzaW9uSGFuZGxlcjsKKy0gKHZvaWQpX3dl
YlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgY2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uRm9yVVJM
OihOU1VSTCAqKXVybCBtYWluRnJhbWVVUkw6KE5TVVJMICopbWFpbkZyYW1lVVJMIGZyYW1lSWRl
bnRpZmllcjooTlNVSW50ZWdlcilmcmFtZUlkZW50aWZpZXIgZGVjaXNpb25IYW5kbGVyOih2b2lk
ICheKShOU1N0cmluZyAqc2FsdCwgQk9PTCBhdXRob3JpemVkKSlkZWNpc2lvbkhhbmRsZXI7CitA
ZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBOYXZpZ2F0aW9uV2hpbGVHZXRVc2VyTWVkaWFQcm9tcHRE
aXNwbGF5ZWRVSURlbGVnYXRlCistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3
IHJlcXVlc3RVc2VyTWVkaWFBdXRob3JpemF0aW9uRm9yRGV2aWNlczooX1dLQ2FwdHVyZURldmlj
ZXMpZGV2aWNlcyB1cmw6KE5TVVJMICopdXJsIG1haW5GcmFtZVVSTDooTlNVUkwgKiltYWluRnJh
bWVVUkwgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShCT09MIGF1dGhvcml6ZWQpKWRlY2lzaW9u
SGFuZGxlcgoreworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVz
dFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJhYm91dDpibGFuayJdXV07CisgICAgW3dl
YlZpZXcgcmVsZWFzZV07CisgICAgb2tUb1Byb2NlZWQgPSB0cnVlOworICAgIGRlY2lzaW9uSGFu
ZGxlcihZRVMpOworfQorCistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGNo
ZWNrVXNlck1lZGlhUGVybWlzc2lvbkZvclVSTDooTlNVUkwgKil1cmwgbWFpbkZyYW1lVVJMOihO
U1VSTCAqKW1haW5GcmFtZVVSTCBmcmFtZUlkZW50aWZpZXI6KE5TVUludGVnZXIpZnJhbWVJZGVu
dGlmaWVyIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoTlNTdHJpbmcgKnNhbHQsIEJPT0wgYXV0
aG9yaXplZCkpZGVjaXNpb25IYW5kbGVyCit7CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05T
VVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImFib3V0OmJs
YW5rIl1dXTsKKyAgICBpZiAoc2hvdWxkUmVsZWFzZUluRW51bWVyYXRlKQorICAgICAgICBbd2Vi
VmlldyByZWxlYXNlXTsKKyAgICBva1RvUHJvY2VlZCA9IHRydWU7CisgICAgZGVjaXNpb25IYW5k
bGVyKEAiMHg5ODc2NTQzMjEiLCBZRVMpOworfQorQGVuZAorCituYW1lc3BhY2UgVGVzdFdlYktp
dEFQSSB7CisKK1RFU1QoV2ViS2l0MiwgTmF2aWdhdGVEdXJpbmdHZXRVc2VyTWVkaWFQcm9tcHQp
Cit7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlnID0gYWRvcHRO
UyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIGF1dG8g
cHJlZmVyZW5jZXMgPSBbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc107CisgICAgcHJlZmVyZW5j
ZXMuX21lZGlhQ2FwdHVyZVJlcXVpcmVzU2VjdXJlQ29ubmVjdGlvbiA9IE5POworICAgIHByZWZl
cmVuY2VzLl9tZWRpYURldmljZXNFbmFibGVkID0gWUVTOworICAgIHByZWZlcmVuY2VzLl9tb2Nr
Q2FwdHVyZURldmljZXNFbmFibGVkID0gWUVTOworICAgIGF1dG8gd2ViVmlldyA9IFtbVGVzdFdL
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKSBj
b25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCkgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
OnByb2Nlc3NQb29sQ29uZmlnLmdldCgpXTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhb
W05hdmlnYXRpb25XaGlsZUdldFVzZXJNZWRpYVByb21wdERpc3BsYXllZFVJRGVsZWdhdGUgYWxs
b2NdIGluaXRdKTsKKyAgICB3ZWJWaWV3LlVJRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKKwor
ICAgIHNob3VsZFJlbGVhc2VJbkVudW1lcmF0ZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IGxvYWRU
ZXN0UGFnZU5hbWVkOkAiZ2V0VXNlck1lZGlhIl07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZva1RvUHJvY2VlZCk7Cit9CisKK1RFU1QoV2ViS2l0MiwgTmF2aWdhdGVEdXJpbmdEZXZp
Y2VFbnVtZXJhdGlvbikKK3sKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xD
b25maWcgPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0
XSk7CisgICAgYXV0byBwcmVmZXJlbmNlcyA9IFtjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXTsK
KyAgICBwcmVmZXJlbmNlcy5fbWVkaWFDYXB0dXJlUmVxdWlyZXNTZWN1cmVDb25uZWN0aW9uID0g
Tk87CisgICAgcHJlZmVyZW5jZXMuX21lZGlhRGV2aWNlc0VuYWJsZWQgPSBZRVM7CisgICAgcHJl
ZmVyZW5jZXMuX21vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQgPSBZRVM7CisgICAgYXV0byB3ZWJW
aWV3ID0gW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwg
MCwgMzIwLCA1MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKSBwcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWcuZ2V0KCldOworICAgIGF1dG8gZGVsZWdh
dGUgPSBhZG9wdE5TKFtbTmF2aWdhdGlvbldoaWxlR2V0VXNlck1lZGlhUHJvbXB0RGlzcGxheWVk
VUlEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIHdlYlZpZXcuVUlEZWxlZ2F0ZSA9IGRlbGVn
YXRlLmdldCgpOworCisgICAgc2hvdWxkUmVsZWFzZUluRW51bWVyYXRlID0gdHJ1ZTsKKyAgICBb
d2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAImVudW1lcmF0ZU1lZGlhRGV2aWNlcyJdOworICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmb2tUb1Byb2NlZWQpOworfQorCit9IC8vIG5hbWVz
cGFjZSBUZXN0V2ViS2l0QVBJCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisj
ZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQK
</data>

          </attachment>
      

    </bug>

</bugzilla>