<?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>205749</bug_id>
          
          <creation_ts>2020-01-03 14:00:31 -0800</creation_ts>
          <short_desc>Crashes under -[WKWebView _addUpdateVisibleContentRectPreCommitHandler]_block_invoke</short_desc>
          <delta_ts>2020-01-03 17:58:16 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>andersca</cc>
    
    <cc>commit-queue</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1602572</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-01-03 14:00:31 -0800</bug_when>
    <thetext>Crashes under -[WKWebView _addUpdateVisibleContentRectPreCommitHandler]_block_invoke</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1602575</commentid>
    <comment_count>1</comment_count>
      <attachid>386714</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-01-03 14:04:16 -0800</bug_when>
    <thetext>Created attachment 386714
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1602576</commentid>
    <comment_count>2</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-01-03 14:04:30 -0800</bug_when>
    <thetext>&lt;rdar://problem/56433624&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1602592</commentid>
    <comment_count>3</comment_count>
      <attachid>386714</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-01-03 14:39:17 -0800</bug_when>
    <thetext>Comment on attachment 386714
Patch

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

&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:3578
&gt; +    RetainPtr&lt;WKContentView&gt; view = retainPtr(self);
&gt; +    RetainPtr&lt;WKWebView&gt; webView = _webView.get();

Undo this part

&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:6020
&gt; +    [presentingViewController.transitionCoordinator animateAlongsideTransition:nil completion:[weakWebView = WeakObjCPtr&lt;WKWebView&gt;(self.webView), controller = _presentedFullScreenInputViewController] (id &lt;UIViewControllerTransitionCoordinatorContext&gt;) {

Can we just copy the weak ptr?

&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:6041
&gt; +    [[presentedController transitionCoordinator] animateAlongsideTransition:nil completion:[weakWebView = WeakObjCPtr&lt;WKWebView&gt;(self.webView), controller = presentedController] (id &lt;UIViewControllerTransitionCoordinatorContext&gt;) {

Ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1602632</commentid>
    <comment_count>4</comment_count>
      <attachid>386725</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-01-03 16:15:02 -0800</bug_when>
    <thetext>Created attachment 386725
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1602673</commentid>
    <comment_count>5</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-01-03 17:58:16 -0800</bug_when>
    <thetext>https://trac.webkit.org/changeset/254025/webkit</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386714</attachid>
            <date>2020-01-03 14:04:16 -0800</date>
            <delta_ts>2020-01-03 16:15:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205749-20200103140416.patch</filename>
            <type>text/plain</type>
            <size>76055</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0MDA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDhhYWMyMThkZDg2NDgxNGUz
Yzg1MmZhNzEyMTEzZDRhNmJhZGNjODUuLmE1NzNiNjVhYjdkMGJhYjZhODE4NWRhNTY4ODg4MjBm
ZDM1ZjVkODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTggQEAKKzIwMjAtMDEtMDMgIFRpbSBIb3J0
b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgQ3Jhc2hlcyB1bmRlciAt
W1dLV2ViVmlldyBfYWRkVXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0UHJlQ29tbWl0SGFuZGxlcl1f
YmxvY2tfaW52b2tlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDU3NDkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU2NDMzNjI0PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBhIHNwZWN1
bGF0aXZlIGZpeCBmb3IgYSBjb21tb24gY3Jhc2guIFdlIGJlbGlldmUgdGhhdCB0aGlzIGlzIGR1
ZSB0bworICAgICAgICBhIG1lY2hhbmlzbSBVSUtpdCB1c2VzIHRvIGJvdW5jZSAtZGVhbGxvYyAo
aW4gb3VyIGNhc2UsIG9mIFdLV2ViVmlldyBhbmQvb3IgV0tDb250ZW50VmlldykKKyAgICAgICAg
dG8gdGhlIG1haW4gdGhyZWFkIHdoZW4gdGhlIGxhc3QgcmVmZXJlbmNlIGlzIGRyb3BwZWQgb24g
YSBiYWNrZ3JvdW5kIHRocmVhZC4KKyAgICAgICAgQXQgdGhhdCBwb2ludCwgZGVhbGxvY2F0aW9u
IGhhcyBhbHJlYWR5IGJlZ3VuLCAtcmV0YWluIGNhbm5vdCByZXZpdmUgdGhlIG9iamVjdCwKKyAg
ICAgICAgYnV0IC1kZWFsbG9jIGhhcyBub3QgeWV0IGJlZW4gY2FsbGVkIChiZWNhdXNlIG9mIHRo
ZSBuYXR1cmUgb2YgdGhpcyBtZWNoYW5pc20pLgorCisgICAgICAgIFRvIGF2b2lkIHRoaXMsIG1h
a2UgUGFnZUNsaWVudEltcGwgLT4gV0tDb250ZW50VmlldyBhbmQgV0tDb250ZW50VmlldyAtPiBX
S1dlYlZpZXcKKyAgICAgICAgd2VhayBpbnN0ZWFkIG9mIHJhdyByZWZlcmVuY2VzLiBUaGlzIHdh
eSwgd2Ugd29uJ3QgZXZlbiBnZXQgdG8gX2FkZFVwZGF0ZVZpc2libGVDb250ZW50UmVjdFByZUNv
bW1pdEhhbmRsZXIKKyAgICAgICAgd2l0aCBhIGRlYWxsb2NhdGluZyBXS1dlYlZpZXcsIG5vciB0
cnkgKGFuZCBmYWlsKSB0byByZXRhaW4gaXQgZm9yIGxhdGVyIHVzZSBpbiB0aGUgYmxvY2suCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6CisgICAgICAgICog
VUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFn
ZUNsaWVudEltcGw6OnZpZXdTaXplKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6
OmRpZFBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVu
dEltcGw6OmNyZWF0ZVZhbGlkYXRpb25CdWJibGUpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xp
ZW50SW1wbDo6Y3JlYXRlRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duKToKKyAgICAgICAgKFdl
YktpdDo6UGFnZUNsaWVudEltcGw6OmNyZWF0ZURyYXdpbmdWaWV3KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29u
dGVudFZpZXcubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2NvbW1vbkluaXRpYWxpemF0
aW9uV2l0aFByb2Nlc3NQb29sOmNvbmZpZ3VyYXRpb246XSk6CisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgd2ViVmlld10pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGRpZFVwZGF0ZVZpc2li
bGVSZWN0OnVub2JzY3VyZWRSZWN0OmNvbnRlbnRJbnNldHM6dW5vYnNjdXJlZFJlY3RJblNjcm9s
bFZpZXdDb29yZGluYXRlczpvYnNjdXJlZEluc2V0czp1bm9ic2N1cmVkU2FmZUFyZWFJbnNldHM6
aW5wdXRWaWV3Qm91bmRzOnNjYWxlOm1pbmltdW1TY2FsZTppblN0YWJsZVN0YXRlOmlzQ2hhbmdp
bmdPYnNjdXJlZEluc2V0c0ludGVyYWN0aXZlbHk6ZW5jbG9zZWRJblNjcm9sbGFibGVBbmNlc3Rv
clZpZXc6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2RpZENvbW1pdExheWVyVHJlZTpd
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToK
KyAgICAgICAgKC1bV0tDb250ZW50VmlldyBzZXR1cEludGVyYWN0aW9uXSk6CisgICAgICAgICgt
W1dLQ29udGVudFZpZXcgX3VwZGF0ZUxvbmdQcmVzc0FuZEhpZ2hsaWdodExvbmdQcmVzc0dlc3R1
cmVzXSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgZW5kRWRpdGluZ0FuZFVwZGF0ZUZvY3Vz
QXBwZWFyYW5jZVdpdGhSZWFzb246XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgZ2VzdHVy
ZVJlY29nbml6ZXJNYXlQaW5jaFRvWm9vbVdlYlZpZXc6XSk6CisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgX3Nob3dBdHRhY2htZW50U2hlZXRdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBf
YWN0aW9uRm9yTG9uZ1ByZXNzRnJvbVBvc2l0aW9uSW5mb3JtYXRpb246XSk6CisgICAgICAgICgt
W1dLQ29udGVudFZpZXcgZ2VzdHVyZVJlY29nbml6ZXJTaG91bGRCZWdpbjpdKToKKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyBoYXNTZWxlY3RhYmxlUG9zaXRpb25BdFBvaW50Ol0pOgorICAgICAg
ICAoLVtXS0NvbnRlbnRWaWV3IHBvaW50SXNOZWFyTWFya2VkVGV4dDpdKToKKyAgICAgICAgKC1b
V0tDb250ZW50VmlldyB0ZXh0SW50ZXJhY3Rpb25HZXN0dXJlOnNob3VsZEJlZ2luQXRQb2ludDpd
KToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfc3R5bHVzU2luZ2xlVGFwUmVjb2duaXplZDpd
KToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfZW5kUG90ZW50aWFsVGFwQW5kRW5hYmxlRG91
YmxlVGFwR2VzdHVyZXNJZk5lY2Vzc2FyeV0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF91
cGRhdGVJbnRlcmFjdGlvblRpbnRDb2xvcl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGNh
blBlcmZvcm1BY3Rpb25Gb3JXZWJWaWV3OndpdGhTZW5kZXI6XSk6CisgICAgICAgICgtW1dLQ29u
dGVudFZpZXcgYWNjZXNzaWJpbGl0eVJldHJpZXZlU3BlYWtTZWxlY3Rpb25Db250ZW50XSk6Cisg
ICAgICAgICgtW1dLQ29udGVudFZpZXcgcmVxdWVzdFJlY3RzVG9FdmFkZUZvclNlbGVjdGlvbkNv
bW1hbmRzV2l0aENvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3
IGFjY2Vzc29yeUF1dG9GaWxsXSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3VwZGF0ZUFj
Y2Vzc29yeV0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9kaWRDaGFuZ2VXZWJWaWV3RWRp
dGFiaWxpdHldKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBpbnNlcnRUZXh0U3VnZ2VzdGlv
bjpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBpc1Njcm9sbGFibGVGb3JLZXlib2FyZFNj
cm9sbFZpZXdBbmltYXRvcjpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBrZXlib2FyZFNj
cm9sbFZpZXdBbmltYXRvcjpkaXN0YW5jZUZvckluY3JlbWVudDppbkRpcmVjdGlvbjpdKToKKyAg
ICAgICAgKC1bV0tDb250ZW50VmlldyBfZWxlbWVudERpZEZvY3VzOnVzZXJJc0ludGVyYWN0aW5n
OmJsdXJQcmV2aW91c05vZGU6YWN0aXZpdHlTdGF0ZUNoYW5nZXM6dXNlck9iamVjdDpdKToKKyAg
ICAgICAgKC1bV0tDb250ZW50VmlldyBhZGRGb2N1c2VkRm9ybUNvbnRyb2xPdmVybGF5XSk6Cisg
ICAgICAgICgtW1dLQ29udGVudFZpZXcgcHJlc2VudFZpZXdDb250cm9sbGVyRm9yQ3VycmVudEZv
Y3VzZWRFbGVtZW50XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgZGlzbWlzc0FsbElucHV0
Vmlld0NvbnRyb2xsZXJzOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9zaG93U2hhcmVT
aGVldDppblJlY3Q6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZp
ZXcgYWN0aW9uU2hlZXRBc3Npc3RhbnQ6c2hhcmVFbGVtZW50V2l0aFVSTDpyZWN0Ol0pOgorICAg
ICAgICAoLVtXS0NvbnRlbnRWaWV3IGFjdGlvblNoZWV0QXNzaXN0YW50OnNob3dDdXN0b21TaGVl
dEZvckVsZW1lbnQ6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgZGF0YURldGVjdGlvbkNv
bnRleHRGb3JQb3NpdGlvbkluZm9ybWF0aW9uOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3
IGFjdGlvblNoZWV0QXNzaXN0YW50OmdldEFsdGVybmF0ZVVSTEZvckltYWdlOmNvbXBsZXRpb246
XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2RpZENoYW5nZURyYWdJbnRlcmFjdGlvblBv
bGljeV0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGRyYWdMaWZ0RGVsYXldKToKKyAgICAg
ICAgKC1bV0tDb250ZW50VmlldyBzZXR1cERyYWdBbmREcm9wSW50ZXJhY3Rpb25zXSk6CisgICAg
ICAgICgtW1dLQ29udGVudFZpZXcgX2RpZFBlcmZvcm1EcmFnT3BlcmF0aW9uOl0pOgorICAgICAg
ICAoLVtXS0NvbnRlbnRWaWV3IF9kcmFnRGVzdGluYXRpb25BY3Rpb25Gb3JEcm9wU2Vzc2lvbjpd
KToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfaXRlbXNGb3JCZWdpbm5pbmdPckFkZGluZ1Rv
U2Vzc2lvbldpdGhSZWdpc3RyYXRpb25MaXN0czpzdGFnZWREcmFnU291cmNlOl0pOgorICAgICAg
ICAoLVtXS0NvbnRlbnRWaWV3IF9oYW5kbGVEcm9wQnlJbnNlcnRpbmdJbWFnZVBsYWNlaG9sZGVy
czpzZXNzaW9uOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9kcmFnSW50ZXJhY3Rpb246
ZGF0YU93bmVyRm9yU2Vzc2lvbjpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBkcmFnSW50
ZXJhY3Rpb246cHJldmlld0ZvckxpZnRpbmdJdGVtOnNlc3Npb246XSk6CisgICAgICAgICgtW1dL
Q29udGVudFZpZXcgZHJhZ0ludGVyYWN0aW9uOnNlc3Npb25XaWxsQmVnaW46XSk6CisgICAgICAg
ICgtW1dLQ29udGVudFZpZXcgZHJhZ0ludGVyYWN0aW9uOnNlc3Npb246ZGlkRW5kV2l0aE9wZXJh
dGlvbjpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBkcmFnSW50ZXJhY3Rpb246cHJldmll
d0ZvckNhbmNlbGxpbmdJdGVtOndpdGhEZWZhdWx0Ol0pOgorICAgICAgICAoLVtXS0NvbnRlbnRW
aWV3IF9kcm9wSW50ZXJhY3Rpb246ZGF0YU93bmVyRm9yU2Vzc2lvbjpdKToKKyAgICAgICAgKC1b
V0tDb250ZW50VmlldyBkcm9wSW50ZXJhY3Rpb246c2Vzc2lvbkRpZFVwZGF0ZTpdKToKKyAgICAg
ICAgKC1bV0tDb250ZW50VmlldyBkcm9wSW50ZXJhY3Rpb246cGVyZm9ybURyb3A6XSk6CisgICAg
ICAgICgtW1dLQ29udGVudFZpZXcgZGlzbWlzc1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlckFuZFJl
dmVhbEZvY3VzZWRGb3JtT3ZlcmxheUlmTmVjZXNzYXJ5Ol0pOgorICAgICAgICAoLVtXS0NvbnRl
bnRWaWV3IHZpZXdDb250cm9sbGVyOmlucHV0Q29udGV4dFZpZXdIZWlnaHRGb3JTaXplOl0pOgor
ICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGlucHV0Q29udGV4dFZpZXdGb3JWaWV3Q29udHJvbGxl
cjpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfcmVnaXN0ZXJQcmV2aWV3XSk6CisgICAg
ICAgICgtW1dLQ29udGVudFZpZXcgYXNzaWduTGVnYWN5RGF0YUZvckNvbnRleHRNZW51SW50ZXJh
Y3Rpb25dKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfY29udGV4dE1lbnVJbnRlcmFjdGlv
bjpjb25maWd1cmF0aW9uRm9yTWVudUF0TG9jYXRpb246Y29tcGxldGlvbjpdKToKKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyBjb250aW51ZUNvbnRleHRNZW51SW50ZXJhY3Rpb246XSk6CisgICAg
ICAgICgtW1dLQ29udGVudFZpZXcgX2NyZWF0ZVRhcmdldGVkUHJldmlld0lmUG9zc2libGVdKToK
KyAgICAgICAgKC1bV0tDb250ZW50VmlldyBjb250ZXh0TWVudUludGVyYWN0aW9uOndpbGxEaXNw
bGF5TWVudUZvckNvbmZpZ3VyYXRpb246YW5pbWF0b3I6XSk6CisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgY29udGV4dE1lbnVJbnRlcmFjdGlvbjp3aWxsUGVyZm9ybVByZXZpZXdBY3Rpb25Gb3JN
ZW51V2l0aENvbmZpZ3VyYXRpb246YW5pbWF0b3I6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZp
ZXcgY29udGV4dE1lbnVJbnRlcmFjdGlvbjp3aWxsRW5kRm9yQ29uZmlndXJhdGlvbjphbmltYXRv
cjpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfaW50ZXJhY3Rpb25TaG91bGRCZWdpbkZy
b21QcmV2aWV3SXRlbUNvbnRyb2xsZXI6Zm9yUG9zaXRpb246XSk6CisgICAgICAgICgtW1dLQ29u
dGVudFZpZXcgX2RhdGFGb3JQcmV2aWV3SXRlbUNvbnRyb2xsZXI6YXRQb3NpdGlvbjp0eXBlOl0p
OgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9wcmVzZW50ZWRWaWV3Q29udHJvbGxlckZvclBy
ZXZpZXdJdGVtQ29udHJvbGxlcjpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfcHJldmll
d0l0ZW1Db250cm9sbGVyOmNvbW1pdFByZXZpZXc6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZp
ZXcgX3ByZXZpZXdJdGVtQ29udHJvbGxlcjpkaWREaXNtaXNzUHJldmlldzpjb21taXR0aW5nOl0p
OgorCiAyMDIwLTAxLTAzICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgog
CiAgICAgICAgIEFkZCBzb21lIHNoYXJlZCBzY2hlbWVzIHRvIHRoZSBXZWJLaXQueGN3b3Jrc3Bh
Y2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmlu
ZGV4IDEzOTcxMDJhYjlkNjIyODEyNDMzMTdkNTBhOGJkMDY0N2RlZWE5YzUuLjJjODJjMDM3MDUx
MGUyNjMzMTllYzBlNTdkZjFhYTgyZDc1YmZhZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtNjA1LDggKzYwNSw2IEBAIC0gKHZvaWQp
ZGVhbGxvYwogI2VuZGlmCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIF9oYXNFbnRl
cmVkRGVhbGxvYyA9IFlFUzsKLQogICAgIFtfY29udGVudFZpZXcgX3dlYlZpZXdEZXN0cm95ZWRd
OwogCiAgICAgaWYgKF9yZW1vdGVPYmplY3RSZWdpc3RyeSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFsLmgKaW5kZXggNmNiOTgz
ZjYwNTQwNmIzMzRhMzI1YWYyZTVhNmZkYzM5NGY4YzAxOS4uMGY4OWZkNmYwMzlhZGEyYTY2M2U0
MDY3MDU1NmEwN2FlY2JjMWU0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFsLmgKQEAgLTIyOSw5ICsyMjksNiBAQCBjbGFz
cyBWaWV3R2VzdHVyZUNvbnRyb2xsZXI7CiAKICAgICBOU1VJbnRlZ2VyIF9mb2N1c1ByZXNlcnZh
dGlvbkNvdW50OwogICAgIE5TVUludGVnZXIgX2FjdGl2ZUZvY3VzZWRTdGF0ZVJldGFpbkNvdW50
OwotCi0gICAgQk9PTCBfaGFzRW50ZXJlZERlYWxsb2M7Ci0KICNlbmRpZgogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCmluZGV4IDE1ZWVl
NTVhMjFmZTE4NDI2Zjg1YzUxZGQ3NTMyY2NkMjMxZGIwOWEuLmIwZmI3OWEyZTQ3OWEzY2NkZjdj
YTUzODVmMzQxMmQwYjJmYTk4ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9pb3MvV0tXZWJWaWV3SU9TLm1tCkBAIC0xNzU2LDExICsxNzU2LDYgQEAgLSAoQk9PTClfc2Ny
b2xsVmlld0lzSW5TdGFibGVTdGF0ZTooVUlTY3JvbGxWaWV3ICopc2Nyb2xsVmlldwogCiAtICh2
b2lkKV9hZGRVcGRhdGVWaXNpYmxlQ29udGVudFJlY3RQcmVDb21taXRIYW5kbGVyCiB7Ci0gICAg
aWYgKF9oYXNFbnRlcmVkRGVhbGxvYykgewotICAgICAgICBSRUxFQVNFX0xPR19GQVVMVChWaWV3
U3RhdGUsICItW1dLV2ViVmlldyAlcCBfYWRkVXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0UHJlQ29t
bWl0SGFuZGxlcl06IEF0dGVtcHRlZCB0byBhZGQgcHJlLWNvbW1pdCBoYW5kbGVyIHVuZGVyIC1k
ZWFsbG9jLiBCYWlsaW5nLiIsIHNlbGYpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAg
YXV0byByZXRhaW5lZFNlbGYgPSByZXRhaW5QdHIoc2VsZik7CiAgICAgW0NBVHJhbnNhY3Rpb24g
YWRkQ29tbWl0SGFuZGxlcjpbcmV0YWluZWRTZWxmXSB7CiAgICAgICAgIFdLV2ViVmlldyAqd2Vi
VmlldyA9IHJldGFpbmVkU2VsZi5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKaW5kZXggZDZjOGMzOGQ0YTY1MTE5MjYyNTBhNmNmNGIw
M2EyNGE5OWIwM2JjOC4uYTA3YzVkM2Y2ZWI2YTI0MWQxODYxYTI1NDJhNTZjYzAwZWMzZjBmOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9T
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgK
QEAgLTMwLDYgKzMwLDcgQEAKICNpbXBvcnQgIlBhZ2VDbGllbnRJbXBsQ29jb2EuaCIKICNpbXBv
cnQgIldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkuaCIKICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIu
aD4KKyNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0ci5oPgogCiBPQkpDX0NMQVNTIFdLQ29udGVudFZp
ZXc7CiBPQkpDX0NMQVNTIFdLRWRpdG9yVW5kb1RhcmdldDsKQEAgLTI1OCw3ICsyNTksNyBAQCBw
cml2YXRlOgogICAgIFdURjo6T3B0aW9uYWw8dW5zaWduZWQ+IGFjdGl2ZVRvdWNoSWRlbnRpZmll
ckZvckdlc3R1cmVSZWNvZ25pemVyKFVJR2VzdHVyZVJlY29nbml6ZXIqKSBvdmVycmlkZTsKICNl
bmRpZgogCi0gICAgV0tDb250ZW50VmlldyAqbV9jb250ZW50VmlldzsKKyAgICBXZWFrT2JqQ1B0
cjxXS0NvbnRlbnRWaWV3PiBtX2NvbnRlbnRWaWV3OwogICAgIFJldGFpblB0cjxXS0VkaXRvclVu
ZG9UYXJnZXQ+IG1fdW5kb1RhcmdldDsKIH07CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQppbmRleCA2
MGJhODU5N2QyODk3ZmViNjRkZWVmMWJlOTFmZjZmZGU3ZDI3NDMyLi5kYmZiMzQ5MDBhZDk4M2E4
ZjIyNjdhMjljY2NhOWFkYmI4OWRlMmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCkBAIC0xMTQsNyArMTE0LDcgQEAgSW50U2l6ZSBQ
YWdlQ2xpZW50SW1wbDo6dmlld1NpemUoKQogICAgIGlmIChVSVNjcm9sbFZpZXcgKnNjcm9sbGVy
ID0gW21fY29udGVudFZpZXcgX3Njcm9sbGVyXSkKICAgICAgICAgcmV0dXJuIEludFNpemUoc2Ny
b2xsZXIuYm91bmRzLnNpemUpOwogCi0gICAgcmV0dXJuIEludFNpemUobV9jb250ZW50Vmlldy5i
b3VuZHMuc2l6ZSk7CisgICAgcmV0dXJuIEludFNpemUoW21fY29udGVudFZpZXcgYm91bmRzXS5z
aXplKTsKIH0KIAogYm9vbCBQYWdlQ2xpZW50SW1wbDo6aXNWaWV3V2luZG93QWN0aXZlKCkKQEAg
LTQ4Niw3ICs0ODYsNyBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjp1cGRhdGVBY2NlbGVyYXRlZENv
bXBvc2l0aW5nTW9kZShjb25zdCBMYXllclRyZWVDb250ZXh0JikKIHZvaWQgUGFnZUNsaWVudElt
cGw6OmRpZFBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwKGNvbnN0IERpY3Rpb25hcnlQb3B1cEluZm8m
IGRpY3Rpb25hcnlQb3B1cEluZm8pCiB7CiAjaWYgRU5BQkxFKFJFVkVBTCkKLSAgICBEaWN0aW9u
YXJ5TG9va3VwOjpzaG93UG9wdXAoZGljdGlvbmFyeVBvcHVwSW5mbywgbV9jb250ZW50Vmlldywg
bnVsbHB0cik7CisgICAgRGljdGlvbmFyeUxvb2t1cDo6c2hvd1BvcHVwKGRpY3Rpb25hcnlQb3B1
cEluZm8sIG1fY29udGVudFZpZXcuZ2V0QXV0b3JlbGVhc2VkKCksIG51bGxwdHIpOwogI2Vsc2UK
ICAgICBVTlVTRURfUEFSQU0oZGljdGlvbmFyeVBvcHVwSW5mbyk7CiAjZW5kaWYgLy8gRU5BQkxF
KFJFVkVBTCkKQEAgLTgxMiw3ICs4MTIsNyBAQCBXZWJDb3JlOjpVc2VySW50ZXJmYWNlTGF5b3V0
RGlyZWN0aW9uIFBhZ2VDbGllbnRJbXBsOjp1c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aQogCiBS
ZWY8VmFsaWRhdGlvbkJ1YmJsZT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZVZhbGlkYXRpb25CdWJi
bGUoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBWYWxpZGF0aW9uQnViYmxlOjpTZXR0aW5n
cyYgc2V0dGluZ3MpCiB7Ci0gICAgcmV0dXJuIFZhbGlkYXRpb25CdWJibGU6OmNyZWF0ZShtX2Nv
bnRlbnRWaWV3LCBtZXNzYWdlLCBzZXR0aW5ncyk7CisgICAgcmV0dXJuIFZhbGlkYXRpb25CdWJi
bGU6OmNyZWF0ZShtX2NvbnRlbnRWaWV3LmdldEF1dG9yZWxlYXNlZCgpLCBtZXNzYWdlLCBzZXR0
aW5ncyk7CiB9CiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKQEAgLTgyNSw3ICs4MjUs
NyBAQCBSZWZQdHI8V2ViQ29sb3JQaWNrZXI+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb2xvclBp
Y2tlcihXZWJQYWdlUHJveHkqLCBjb25zdCBXZQogI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5U
KQogUmVmUHRyPFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bj4gUGFnZUNsaWVudEltcGw6
OmNyZWF0ZURhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bihXZWJQYWdlUHJveHkmIHBhZ2UpCiB7
Ci0gICAgcmV0dXJuIFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUzo6Y3JlYXRlKHBh
Z2UsIG1fY29udGVudFZpZXcpOworICAgIHJldHVybiBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJv
cGRvd25JT1M6OmNyZWF0ZShwYWdlLCBtX2NvbnRlbnRWaWV3LmdldEF1dG9yZWxlYXNlZCgpKTsK
IH0KICNlbmRpZgogCkBAIC04OTMsNyArODkzLDcgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6cmVx
dWVzdERPTVBhc3RlQWNjZXNzKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGVsZW1lbnRSZWN0LAog
I2lmIEhBVkUoUEVOQ0lMS0lUKQogUmV0YWluUHRyPFdLRHJhd2luZ1ZpZXc+IFBhZ2VDbGllbnRJ
bXBsOjpjcmVhdGVEcmF3aW5nVmlldyhXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpFbWJlZGRlZFZp
ZXdJRCBlbWJlZGRlZFZpZXdJRCkKIHsKLSAgICByZXR1cm4gYWRvcHROUyhbW1dLRHJhd2luZ1Zp
ZXcgYWxsb2NdIGluaXRXaXRoRW1iZWRkZWRWaWV3SUQ6ZW1iZWRkZWRWaWV3SUQgY29udGVudFZp
ZXc6bV9jb250ZW50Vmlld10pOworICAgIHJldHVybiBhZG9wdE5TKFtbV0tEcmF3aW5nVmlldyBh
bGxvY10gaW5pdFdpdGhFbWJlZGRlZFZpZXdJRDplbWJlZGRlZFZpZXdJRCBjb250ZW50Vmlldzpt
X2NvbnRlbnRWaWV3LmdldEF1dG9yZWxlYXNlZCgpXSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3LmgKaW5kZXggNjA2ZGUxMzM3NDdjMmUx
Y2EyM2M3NmZkNTJhMDAzZGQxMjJiNTI2OS4uNTdjZmJiZjQ0ZDgyZDI2MzE2ZDk3MzIwMzU3ZWY3
NTNhY2MxNmNjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29u
dGVudFZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
dy5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW1wb3J0ICJXS0Jyb3dzaW5nQ29udGV4dEdyb3VwLmgi
CiAjaW1wb3J0ICJXS1Byb2Nlc3NHcm91cC5oIgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgor
I2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+CiAKIEBjbGFzcyBXS0NvbnRlbnRWaWV3OwogQGNs
YXNzIFdLV2ViVmlldzsKQEAgLTU0LDcgKzU1LDcgQEAgY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7CiBA
aW50ZXJmYWNlIFdLQ29udGVudFZpZXcgOiBXS0FwcGxpY2F0aW9uU3RhdGVUcmFja2luZ1ZpZXcg
ewogQHBhY2thZ2UKICAgICBSZWZQdHI8V2ViS2l0OjpXZWJQYWdlUHJveHk+IF9wYWdlOwotICAg
IFdLV2ViVmlldyAqX3dlYlZpZXc7IC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBtYWRlIGEgV2Vh
a09iakNQdHIgb25jZSBldmVyeXRoaW5nIHRoYXQgcmVmZXJzIHRvIGl0IGlzIG1vdmVkIHRvIE9w
ZW5Tb3VyY2UuCisgICAgV2Vha09iakNQdHI8V0tXZWJWaWV3PiBfd2ViVmlldzsKIH0KIAogI3By
YWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKQEAgLTkwLDYgKzkxLDggQEAgY2xhc3MgV2ViUHJv
Y2Vzc1Bvb2w7CiAKIC0gKHZvaWQpX3dlYlZpZXdEZXN0cm95ZWQ7CiAKKy0gKFdLV2ViVmlldyAq
KXdlYlZpZXc7CisKIC0gKHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXQ6OkRyYXdpbmdBcmVhUHJveHk+
KV9jcmVhdGVEcmF3aW5nQXJlYVByb3h5OihXZWJLaXQ6OldlYlByb2Nlc3NQcm94eSYpcHJvY2Vz
czsKIC0gKHZvaWQpX3Byb2Nlc3NEaWRFeGl0OwogLSAodm9pZClfcHJvY2Vzc1dpbGxTd2FwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQppbmRleCAwNDc4
Mzk4N2U3NWRhNWVhZWJkMjJjMGQzMGU3ZWJiODg2NjU1Mzg0Li4yOWJhNjA2NTgyODQ0ZGVhNjc4
NWRmZjEyZmJiYWI1ZThjOWIzMWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tDb250ZW50Vmlldy5tbQpAQCAtMTY5LDcgKzE2OSw3IEBAIC0gKGluc3RhbmNldHlwZSlfY29t
bW9uSW5pdGlhbGl6YXRpb25XaXRoUHJvY2Vzc1Bvb2w6KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wm
KXByCiAgICAgX3BhZ2UtPnNldERlbGVnYXRlc1Njcm9sbGluZyh0cnVlKTsKIAogI2lmIEVOQUJM
RShGVUxMU0NSRUVOX0FQSSkKLSAgICBfcGFnZS0+c2V0RnVsbHNjcmVlbkNsaWVudChtYWtlVW5p
cXVlPFdlYktpdDo6RnVsbHNjcmVlbkNsaWVudD4oX3dlYlZpZXcpKTsKKyAgICBfcGFnZS0+c2V0
RnVsbHNjcmVlbkNsaWVudChtYWtlVW5pcXVlPFdlYktpdDo6RnVsbHNjcmVlbkNsaWVudD4oc2Vs
Zi53ZWJWaWV3KSk7CiAjZW5kaWYKIAogICAgIFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnN0YXRp
c3RpY3MoKS53a1ZpZXdDb3VudCsrOwpAQCAtMjY5LDYgKzI2OSwxMSBAQCAtIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eSopcGFnZQogICAgIHJldHVybiBfcGFnZS5nZXQoKTsKIH0KIAorLSAoV0tXZWJW
aWV3ICopd2ViVmlldworeworICAgIHJldHVybiBfd2ViVmlldy5nZXRBdXRvcmVsZWFzZWQoKTsK
K30KKwogLSAodm9pZCl3aWxsTW92ZVRvV2luZG93OihVSVdpbmRvdyAqKW5ld1dpbmRvdwogewog
ICAgIFtzdXBlciB3aWxsTW92ZVRvV2luZG93Om5ld1dpbmRvd107CkBAIC00MjYsNyArNDMxLDcg
QEAgLSAodm9pZClkaWRVcGRhdGVWaXNpYmxlUmVjdDooQ0dSZWN0KXZpc2libGVDb250ZW50UmVj
dAogICAgICAgICBpc1N0YWJsZVN0YXRlLAogICAgICAgICBfc2l6ZUNoYW5nZWRTaW5jZUxhc3RW
aXNpYmxlQ29udGVudFJlY3RVcGRhdGUsCiAgICAgICAgIGlzQ2hhbmdpbmdPYnNjdXJlZEluc2V0
c0ludGVyYWN0aXZlbHksCi0gICAgICAgIF93ZWJWaWV3Ll9hbGxvd3NWaWV3cG9ydFNocmlua1Rv
Rml0LAorICAgICAgICBzZWxmLndlYlZpZXcuX2FsbG93c1ZpZXdwb3J0U2hyaW5rVG9GaXQsCiAg
ICAgICAgIGVuY2xvc2VkSW5TY3JvbGxhYmxlQW5jZXN0b3JWaWV3LAogICAgICAgICB2ZWxvY2l0
eURhdGEsCiAgICAgICAgIGRvd25jYXN0PFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWFQcm94eT4oKmRyYXdpbmdBcmVhKS5sYXN0Q29tbWl0dGVkTGF5ZXJUcmVlVHJhbnNhY3Rpb25J
RCgpKTsKQEAgLTYyMiwxNCArNjI3LDE0IEBAIC0gKHZvaWQpX2RpZENvbW1pdExheWVyVHJlZToo
Y29uc3QgV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbiYpbGF5ZXJUcmVlCiAKICAg
ICBpZiAoX2ludGVyYWN0aW9uVmlld3NDb250YWluZXJWaWV3KSB7CiAgICAgICAgIFdlYkNvcmU6
OkZsb2F0UG9pbnQgc2NhbGVkT3JpZ2luID0gbGF5ZXJUcmVlVHJhbnNhY3Rpb24uc2Nyb2xsT3Jp
Z2luKCk7Ci0gICAgICAgIGZsb2F0IHNjYWxlID0gW1tfd2ViVmlldyBzY3JvbGxWaWV3XSB6b29t
U2NhbGVdOworICAgICAgICBmbG9hdCBzY2FsZSA9IHNlbGYud2ViVmlldy5zY3JvbGxWaWV3Lnpv
b21TY2FsZTsKICAgICAgICAgc2NhbGVkT3JpZ2luLnNjYWxlKHNjYWxlKTsKICAgICAgICAgW19p
bnRlcmFjdGlvblZpZXdzQ29udGFpbmVyVmlldyBzZXRGcmFtZTpDR1JlY3RNYWtlKHNjYWxlZE9y
aWdpbi54KCksIHNjYWxlZE9yaWdpbi55KCksIDAsIDApXTsKICAgICB9CiAgICAgCiAgICAgaWYg
KGJvdW5kc0NoYW5nZWQpIHsKICAgICAgICAgLy8gRklYTUU6IGZhY3RvciBjb21wdXRlTGF5b3V0
Vmlld3BvcnRSZWN0KCkgaW50byBzb21ldGhpbmcgdGhhdCBnaXZlcyB1cyB0aGlzIHJlY3QuCi0g
ICAgICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBmaXhlZFBvc2l0aW9uUmVjdCA9IF9wYWdlLT5jb21w
dXRlTGF5b3V0Vmlld3BvcnRSZWN0KF9wYWdlLT51bm9ic2N1cmVkQ29udGVudFJlY3QoKSwgX3Bh
Z2UtPnVub2JzY3VyZWRDb250ZW50UmVjdFJlc3BlY3RpbmdJbnB1dFZpZXdCb3VuZHMoKSwgX3Bh
Z2UtPmxheW91dFZpZXdwb3J0UmVjdCgpLCBbW193ZWJWaWV3IHNjcm9sbFZpZXddIHpvb21TY2Fs
ZV0pOworICAgICAgICBXZWJDb3JlOjpGbG9hdFJlY3QgZml4ZWRQb3NpdGlvblJlY3QgPSBfcGFn
ZS0+Y29tcHV0ZUxheW91dFZpZXdwb3J0UmVjdChfcGFnZS0+dW5vYnNjdXJlZENvbnRlbnRSZWN0
KCksIF9wYWdlLT51bm9ic2N1cmVkQ29udGVudFJlY3RSZXNwZWN0aW5nSW5wdXRWaWV3Qm91bmRz
KCksIF9wYWdlLT5sYXlvdXRWaWV3cG9ydFJlY3QoKSwgc2VsZi53ZWJWaWV3LnNjcm9sbFZpZXcu
em9vbVNjYWxlKTsKICAgICAgICAgW3NlbGYgdXBkYXRlRml4ZWRDbGlwcGluZ1ZpZXc6Zml4ZWRQ
b3NpdGlvblJlY3RdOwogCiAgICAgICAgIC8vIFdlIG5lZWQgdG8gcHVzaCB0aGUgbmV3IGNvbnRl
bnQgYm91bmRzIHRvIHRoZSB3ZWJ2aWV3IHRvIHVwZGF0ZSBmaXhlZCBwb3NpdGlvbiByZWN0cy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLm1tCmluZGV4IGJiZTMyYzBhMzZlZGM0OGFhMmNmNDQyM2Y3NmU5ZTY3Njg1ODAw
YTQuLjkxMjAwYzM3ZWU1ZmYxOTE4ZWI1MTA0YmYyNDY0MmEwZjE3ZmFlYTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5tbQpAQCAtNzE5LDcgKzcxOSw3IEBAIC0gKHZvaWQpc2V0dXBJbnRlcmFjdGlvbgogICAgICAg
ICBbc2VsZi5zdXBlcnZpZXcgYWRkU3VidmlldzpfaW50ZXJhY3Rpb25WaWV3c0NvbnRhaW5lclZp
ZXcuZ2V0KCldOwogICAgIH0KIAotICAgIF9rZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yID0gYWRv
cHROUyhbW1dLS2V5Ym9hcmRTY3JvbGxWaWV3QW5pbWF0b3IgYWxsb2NdIGluaXRXaXRoU2Nyb2xs
Vmlldzpfd2ViVmlldy5zY3JvbGxWaWV3XSk7CisgICAgX2tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0
b3IgPSBhZG9wdE5TKFtbV0tLZXlib2FyZFNjcm9sbFZpZXdBbmltYXRvciBhbGxvY10gaW5pdFdp
dGhTY3JvbGxWaWV3OnNlbGYud2ViVmlldy5zY3JvbGxWaWV3XSk7CiAgICAgW19rZXlib2FyZFNj
cm9sbGluZ0FuaW1hdG9yIHNldERlbGVnYXRlOnNlbGZdOwogCiAgICAgW3NlbGYubGF5ZXIgYWRk
T2JzZXJ2ZXI6c2VsZiBmb3JLZXlQYXRoOkAidHJhbnNmb3JtIiBvcHRpb25zOk5TS2V5VmFsdWVP
YnNlcnZpbmdPcHRpb25Jbml0aWFsIGNvbnRleHQ6bmlsXTsKQEAgLTgyOSw3ICs4MjksNyBAQCAt
ICh2b2lkKXNldHVwSW50ZXJhY3Rpb24KICAgICBbX3R3b0ZpbmdlclNpbmdsZVRhcEdlc3R1cmVS
ZWNvZ25pemVyIHNldE51bWJlck9mVG91Y2hlc1JlcXVpcmVkOjJdOwogICAgIFtfdHdvRmluZ2Vy
U2luZ2xlVGFwR2VzdHVyZVJlY29nbml6ZXIgc2V0RGVsYXlzVG91Y2hlc0VuZGVkOk5PXTsKICAg
ICBbX3R3b0ZpbmdlclNpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVyIHNldERlbGVnYXRlOnNlbGZd
OwotICAgIFtfdHdvRmluZ2VyU2luZ2xlVGFwR2VzdHVyZVJlY29nbml6ZXIgc2V0RW5hYmxlZDoh
X3dlYlZpZXcuX2VkaXRhYmxlXTsKKyAgICBbX3R3b0ZpbmdlclNpbmdsZVRhcEdlc3R1cmVSZWNv
Z25pemVyIHNldEVuYWJsZWQ6IXNlbGYud2ViVmlldy5fZWRpdGFibGVdOwogICAgIFtzZWxmIGFk
ZEdlc3R1cmVSZWNvZ25pemVyOl90d29GaW5nZXJTaW5nbGVUYXBHZXN0dXJlUmVjb2duaXplci5n
ZXQoKV07CiAKICAgICBfc3R5bHVzU2luZ2xlVGFwR2VzdHVyZVJlY29nbml6ZXIgPSBhZG9wdE5T
KFtbVUlUYXBHZXN0dXJlUmVjb2duaXplciBhbGxvY10gaW5pdFdpdGhUYXJnZXQ6c2VsZiBhY3Rp
b246QHNlbGVjdG9yKF9zdHlsdXNTaW5nbGVUYXBSZWNvZ25pemVkOildKTsKQEAgLTExMDksMTEg
KzExMDksMTEgQEAgLSAodm9pZClfdXBkYXRlTG9uZ1ByZXNzQW5kSGlnaGxpZ2h0TG9uZ1ByZXNz
R2VzdHVyZXMKICAgICAvLyBXZSBvbmx5IGRpc2FibGUgdGhlIGhpZ2hsaWdodCBsb25nIHByZXNz
IGdlc3R1cmUgaW4gdGhlIGNhc2Ugd2hlcmUgVUlDb250ZXh0TWVudSBpcyBhdmFpbGFibGUgYW5k
IHdlCiAgICAgLy8gYWxzbyBhbGxvdyBsaW5rIHByZXZpZXdzLCBzaW5jZSB0aGUgY29udGV4dCBt
ZW51IGludGVyYWN0aW9uJ3MgZ2VzdHVyZXMgbmVlZCB0byB0YWtlIHByZWNlZGVuY2Ugb3Zlcgog
ICAgIC8vIGhpZ2hsaWdodCBsb25nIHByZXNzIGdlc3R1cmVzLgotICAgIFtfaGlnaGxpZ2h0TG9u
Z1ByZXNzR2VzdHVyZVJlY29nbml6ZXIgc2V0RW5hYmxlZDohc2VsZi5fc2hvdWxkVXNlQ29udGV4
dE1lbnVzIHx8ICFfd2ViVmlldy5hbGxvd3NMaW5rUHJldmlld107CisgICAgW19oaWdobGlnaHRM
b25nUHJlc3NHZXN0dXJlUmVjb2duaXplciBzZXRFbmFibGVkOiFzZWxmLl9zaG91bGRVc2VDb250
ZXh0TWVudXMgfHwgIXNlbGYud2ViVmlldy5hbGxvd3NMaW5rUHJldmlld107CiAKICAgICAvLyBX
ZSBvbmx5IGVuYWJsZSB0aGUgbG9uZyBwcmVzcyBnZXN0dXJlIGluIHRoZSBjYXNlIHdoZXJlIHRo
ZSBhcHAgaXMgbGlua2VkIG9uIGlPUyAxMiBvciBlYXJsaWVyIChhbmQKICAgICAvLyB0aGVyZWZv
cmUgcHJlZmVycyB0aGUgbGVnYWN5IGFjdGlvbiBzaGVldCBvdmVyIGNvbnRleHQgbWVudXMpLCBh
bmQgbGluayBwcmV2aWV3cyBhcmUgYWxzbyBlbmFibGVkLgotICAgIFtfbG9uZ1ByZXNzR2VzdHVy
ZVJlY29nbml6ZXIgc2V0RW5hYmxlZDohc2VsZi5fc2hvdWxkVXNlQ29udGV4dE1lbnVzICYmIF93
ZWJWaWV3LmFsbG93c0xpbmtQcmV2aWV3XTsKKyAgICBbX2xvbmdQcmVzc0dlc3R1cmVSZWNvZ25p
emVyIHNldEVuYWJsZWQ6IXNlbGYuX3Nob3VsZFVzZUNvbnRleHRNZW51cyAmJiBzZWxmLndlYlZp
ZXcuYWxsb3dzTGlua1ByZXZpZXddOwogfQogCiAtIChVSVZpZXcgKil1bnNjYWxlZFZpZXcKQEAg
LTEzNDgsNyArMTM0OCw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIEVuZEVkaXRpbmdS
ZWFzb24pIHsKIAogLSAodm9pZCllbmRFZGl0aW5nQW5kVXBkYXRlRm9jdXNBcHBlYXJhbmNlV2l0
aFJlYXNvbjooRW5kRWRpdGluZ1JlYXNvbilyZWFzb24KIHsKLSAgICBpZiAoIV93ZWJWaWV3Ll9y
ZXRhaW5pbmdBY3RpdmVGb2N1c2VkU3RhdGUpIHsKKyAgICBpZiAoIXNlbGYud2ViVmlldy5fcmV0
YWluaW5nQWN0aXZlRm9jdXNlZFN0YXRlKSB7CiAgICAgICAgIC8vIFdlIG5lZWQgdG8gY29tcGxl
dGUgdGhlIGVkaXRpbmcgb3BlcmF0aW9uIGJlZm9yZSB3ZSBibHVyIHRoZSBlbGVtZW50LgogICAg
ICAgICBbc2VsZiBfZW5kRWRpdGluZ107CiAgICAgICAgIGlmICgocmVhc29uID09IEVuZEVkaXRp
bmdSZWFzb25BY2Nlc3NvcnlEb25lICYmICFXZWJLaXQ6OmN1cnJlbnRVc2VySW50ZXJmYWNlSWRp
b21Jc1BhZCgpKSB8fCBfa2V5Ym9hcmREaWRSZXF1ZXN0RGlzbWlzc2FsIHx8IHNlbGYuX3Nob3Vs
ZFVzZUxlZ2FjeVNlbGVjdFBvcG92ZXJEaXNtaXNzYWxCZWhhdmlvcikgewpAQCAtMTUzNyw5ICsx
NTM3LDkgQEAgLSAoQk9PTClnZXN0dXJlUmVjb2duaXplck1heVBpbmNoVG9ab29tV2ViVmlldzoo
VUlHZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZWMKIAogICAgIC8vIFRoZSBnZXN0dXJlIHJl
Y29nbml6ZXIgaXMgYW5vdGhlciBVSVBpY2hHZXN0dXJlUmVjb2duaXplciBrbm93biB0byBsZWFk
IHRvIHBpbmNoLXRvLXpvb20uCiAgICAgaWYgKFtnZXN0dXJlUmVjb2duaXplciBpc0tpbmRPZkNs
YXNzOltVSVBpbmNoR2VzdHVyZVJlY29nbml6ZXIgY2xhc3NdXSkgewotICAgICAgICBpZiAoYXV0
byB1aURlbGVnYXRlID0gc3RhdGljX2Nhc3Q8aWQ8V0tVSURlbGVnYXRlUHJpdmF0ZT4+KF93ZWJW
aWV3LlVJRGVsZWdhdGUpKSB7CisgICAgICAgIGlmIChhdXRvIHVpRGVsZWdhdGUgPSBzdGF0aWNf
Y2FzdDxpZDxXS1VJRGVsZWdhdGVQcml2YXRlPj4oc2VsZi53ZWJWaWV3LlVJRGVsZWdhdGUpKSB7
CiAgICAgICAgICAgICBpZiAoW3VpRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rv
cihfd2ViVmlldzpnZXN0dXJlUmVjb2duaXplckNvdWxkUGluY2g6KV0pCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIFt1aURlbGVnYXRlIF93ZWJWaWV3Ol93ZWJWaWV3IGdlc3R1cmVSZWNvZ25pemVy
Q291bGRQaW5jaDpnZXN0dXJlUmVjb2duaXplcl07CisgICAgICAgICAgICAgICAgcmV0dXJuIFt1
aURlbGVnYXRlIF93ZWJWaWV3OnNlbGYud2ViVmlldyBnZXN0dXJlUmVjb2duaXplckNvdWxkUGlu
Y2g6Z2VzdHVyZVJlY29nbml6ZXJdOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBOTzsK
QEAgLTIxMDMsNyArMjEwMyw3IEBAIC0gKHZvaWQpX3Nob3dBdHRhY2htZW50U2hlZXQKIAogICAg
IGF1dG8gZWxlbWVudCA9IGFkb3B0TlMoW1tfV0tBY3RpdmF0ZWRFbGVtZW50SW5mbyBhbGxvY10g
X2luaXRXaXRoVHlwZTpfV0tBY3RpdmF0ZWRFbGVtZW50VHlwZUF0dGFjaG1lbnQgVVJMOihOU1VS
TCAqKV9wb3NpdGlvbkluZm9ybWF0aW9uLnVybCBpbWFnZVVSTDooTlNVUkwgKilfcG9zaXRpb25J
bmZvcm1hdGlvbi5pbWFnZVVSTCBsb2NhdGlvbjpfcG9zaXRpb25JbmZvcm1hdGlvbi5yZXF1ZXN0
LnBvaW50IHRpdGxlOl9wb3NpdGlvbkluZm9ybWF0aW9uLnRpdGxlIElEOl9wb3NpdGlvbkluZm9y
bWF0aW9uLmlkQXR0cmlidXRlIHJlY3Q6X3Bvc2l0aW9uSW5mb3JtYXRpb24uYm91bmRzIGltYWdl
Om5pbF0pOwogICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCi0gICAgW3Vp
RGVsZWdhdGUgX3dlYlZpZXc6X3dlYlZpZXcgc2hvd0N1c3RvbVNoZWV0Rm9yRWxlbWVudDplbGVt
ZW50LmdldCgpXTsKKyAgICBbdWlEZWxlZ2F0ZSBfd2ViVmlldzpzZWxmLndlYlZpZXcgc2hvd0N1
c3RvbVNoZWV0Rm9yRWxlbWVudDplbGVtZW50LmdldCgpXTsKICAgICBBTExPV19ERVBSRUNBVEVE
X0RFQ0xBUkFUSU9OU19FTkQKIH0KIApAQCAtMjExOSw3ICsyMTE5LDcgQEAgLSAodm9pZClfc2hv
d0RhdGFEZXRlY3RvcnNTaGVldAogCiAtIChTRUwpX2FjdGlvbkZvckxvbmdQcmVzc0Zyb21Qb3Np
dGlvbkluZm9ybWF0aW9uOihjb25zdCBXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBv
c2l0aW9uJilwb3NpdGlvbkluZm9ybWF0aW9uCiB7Ci0gICAgaWYgKCFfd2ViVmlldy5jb25maWd1
cmF0aW9uLl9sb25nUHJlc3NBY3Rpb25zRW5hYmxlZCkKKyAgICBpZiAoIXNlbGYud2ViVmlldy5j
b25maWd1cmF0aW9uLl9sb25nUHJlc3NBY3Rpb25zRW5hYmxlZCkKICAgICAgICAgcmV0dXJuIG5p
bDsKIAogICAgIGlmICghcG9zaXRpb25JbmZvcm1hdGlvbi50b3VjaENhbGxvdXRFbmFibGVkKQpA
QCAtMjI5NiwxMCArMjI5NiwxMCBAQCAtIChCT09MKWdlc3R1cmVSZWNvZ25pemVyU2hvdWxkQmVn
aW46KFVJR2VzdHVyZVJlY29nbml6ZXIgKilnZXN0dXJlUmVjb2duaXplcgogICAgIENHUG9pbnQg
cG9pbnQgPSBbZ2VzdHVyZVJlY29nbml6ZXIgbG9jYXRpb25JblZpZXc6c2VsZl07CiAKICAgICBp
ZiAoZ2VzdHVyZVJlY29nbml6ZXIgPT0gX3N0eWx1c1NpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVy
KQotICAgICAgICByZXR1cm4gX3dlYlZpZXcuX3N0eWx1c1RhcEdlc3R1cmVTaG91bGRDcmVhdGVF
ZGl0YWJsZUltYWdlOworICAgICAgICByZXR1cm4gc2VsZi53ZWJWaWV3Ll9zdHlsdXNUYXBHZXN0
dXJlU2hvdWxkQ3JlYXRlRWRpdGFibGVJbWFnZTsKIAogICAgIGF1dG8gaXNJbnRlcnJ1cHRpbmdE
ZWNlbGVyYXRpb25Gb3JTY3JvbGxWaWV3T3JBbmNlc3RvciA9IFsmXSAoVUlTY3JvbGxWaWV3ICpz
Y3JvbGxWaWV3KSB7Ci0gICAgICAgIFVJU2Nyb2xsVmlldyAqbWFpblNjcm9sbGVyID0gX3dlYlZp
ZXcuc2Nyb2xsVmlldzsKKyAgICAgICAgVUlTY3JvbGxWaWV3ICptYWluU2Nyb2xsZXIgPSBzZWxm
LndlYlZpZXcuc2Nyb2xsVmlldzsKICAgICAgICAgVUlWaWV3ICp2aWV3ID0gc2Nyb2xsVmlldyA/
OiBtYWluU2Nyb2xsZXI7CiAgICAgICAgIHdoaWxlICh2aWV3KSB7CiAgICAgICAgICAgICBpZiAo
W3ZpZXcgaXNLaW5kT2ZDbGFzczpVSVNjcm9sbFZpZXcuY2xhc3NdICYmIFsoVUlTY3JvbGxWaWV3
ICopdmlldyBfaXNJbnRlcnJ1cHRpbmdEZWNlbGVyYXRpb25dKQpAQCAtMjQyNyw3ICsyNDI3LDcg
QEAgLSAoQk9PTCljYW5TaG93Tm9uRW1wdHlTZWxlY3Rpb25WaWV3CiAKIC0gKEJPT0wpaGFzU2Vs
ZWN0YWJsZVBvc2l0aW9uQXRQb2ludDooQ0dQb2ludClwb2ludAogewotICAgIGlmICghX3dlYlZp
ZXcuY29uZmlndXJhdGlvbi5fdGV4dEludGVyYWN0aW9uR2VzdHVyZXNFbmFibGVkKQorICAgIGlm
ICghc2VsZi53ZWJWaWV3LmNvbmZpZ3VyYXRpb24uX3RleHRJbnRlcmFjdGlvbkdlc3R1cmVzRW5h
YmxlZCkKICAgICAgICAgcmV0dXJuIE5POwogCiAgICAgaWYgKF9zdXBwcmVzc1NlbGVjdGlvbkFz
c2lzdGFudFJlYXNvbnMpCkBAIC0yNDUzLDcgKzI0NTMsNyBAQCAtIChCT09MKWhhc1NlbGVjdGFi
bGVQb3NpdGlvbkF0UG9pbnQ6KENHUG9pbnQpcG9pbnQKIAogLSAoQk9PTClwb2ludElzTmVhck1h
cmtlZFRleHQ6KENHUG9pbnQpcG9pbnQKIHsKLSAgICBpZiAoIV93ZWJWaWV3LmNvbmZpZ3VyYXRp
b24uX3RleHRJbnRlcmFjdGlvbkdlc3R1cmVzRW5hYmxlZCkKKyAgICBpZiAoIXNlbGYud2ViVmll
dy5jb25maWd1cmF0aW9uLl90ZXh0SW50ZXJhY3Rpb25HZXN0dXJlc0VuYWJsZWQpCiAgICAgICAg
IHJldHVybiBOTzsKIAogICAgIGlmIChfc3VwcHJlc3NTZWxlY3Rpb25Bc3Npc3RhbnRSZWFzb25z
KQpAQCAtMjQ2Nyw3ICsyNDY3LDcgQEAgLSAoQk9PTClwb2ludElzTmVhck1hcmtlZFRleHQ6KENH
UG9pbnQpcG9pbnQKIAogLSAoQk9PTCl0ZXh0SW50ZXJhY3Rpb25HZXN0dXJlOihVSVdLR2VzdHVy
ZVR5cGUpZ2VzdHVyZSBzaG91bGRCZWdpbkF0UG9pbnQ6KENHUG9pbnQpcG9pbnQKIHsKLSAgICBp
ZiAoIV93ZWJWaWV3LmNvbmZpZ3VyYXRpb24uX3RleHRJbnRlcmFjdGlvbkdlc3R1cmVzRW5hYmxl
ZCkKKyAgICBpZiAoIXNlbGYud2ViVmlldy5jb25maWd1cmF0aW9uLl90ZXh0SW50ZXJhY3Rpb25H
ZXN0dXJlc0VuYWJsZWQpCiAgICAgICAgIHJldHVybiBOTzsKIAogICAgIGlmIChfZG9tUGFzdGVS
ZXF1ZXN0SGFuZGxlcikKQEAgLTI2MDksNyArMjYwOSw3IEBAIC0gKHZvaWQpX3R3b0ZpbmdlclNp
bmdsZVRhcEdlc3R1cmVSZWNvZ25pemVkOihVSVRhcEdlc3R1cmVSZWNvZ25pemVyICopZ2VzdHVy
ZVJlCiAKIC0gKHZvaWQpX3N0eWx1c1NpbmdsZVRhcFJlY29nbml6ZWQ6KFVJVGFwR2VzdHVyZVJl
Y29nbml6ZXIgKilnZXN0dXJlUmVjb2duaXplcgogewotICAgIEFTU0VSVChfd2ViVmlldy5fc3R5
bHVzVGFwR2VzdHVyZVNob3VsZENyZWF0ZUVkaXRhYmxlSW1hZ2UpOworICAgIEFTU0VSVChzZWxm
LndlYlZpZXcuX3N0eWx1c1RhcEdlc3R1cmVTaG91bGRDcmVhdGVFZGl0YWJsZUltYWdlKTsKICAg
ICBBU1NFUlQoZ2VzdHVyZVJlY29nbml6ZXIgPT0gX3N0eWx1c1NpbmdsZVRhcEdlc3R1cmVSZWNv
Z25pemVyKTsKICAgICBfcGFnZS0+aGFuZGxlU3R5bHVzU2luZ2xlVGFwQXRQb2ludChXZWJDb3Jl
Ojpyb3VuZGVkSW50UG9pbnQoZ2VzdHVyZVJlY29nbml6ZXIubG9jYXRpb24pLCArK19sYXRlc3RU
YXBJRCk7CiB9CkBAIC0yNjM0LDcgKzI2MzQsNyBAQCAtICh2b2lkKV9sb25nUHJlc3NSZWNvZ25p
emVkOihVSUxvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyICopZ2VzdHVyZVJlY29nbml6ZXIKIAog
LSAodm9pZClfZW5kUG90ZW50aWFsVGFwQW5kRW5hYmxlRG91YmxlVGFwR2VzdHVyZXNJZk5lY2Vz
c2FyeQogewotICAgIGlmIChfd2ViVmlldy5fYWxsb3dzRG91YmxlVGFwR2VzdHVyZXMpIHsKKyAg
ICBpZiAoc2VsZi53ZWJWaWV3Ll9hbGxvd3NEb3VibGVUYXBHZXN0dXJlcykgewogICAgICAgICBS
RUxFQVNFX0xPRyhWaWV3R2VzdHVyZXMsICJlbmRpbmcgcG90ZW50aWFsIHRhcCAtIGRvdWJsZSB0
YXBzIGFyZSBiYWNrLiAoJXApIiwgc2VsZik7CiAKICAgICAgICAgW3NlbGYgX3NldERvdWJsZVRh
cEdlc3R1cmVzRW5hYmxlZDpZRVNdOwpAQCAtMzIwOSw3ICszMjA5LDcgQEAgLSAoVUlDb2xvciAq
KXNlbGVjdGlvbkhpZ2hsaWdodENvbG9yCiAtICh2b2lkKV91cGRhdGVJbnRlcmFjdGlvblRpbnRD
b2xvcgogewogICAgIFVJQ29sb3IgKnRpbnRDb2xvciA9IF57Ci0gICAgICAgIGlmICghX3dlYlZp
ZXcuY29uZmlndXJhdGlvbi5fdGV4dEludGVyYWN0aW9uR2VzdHVyZXNFbmFibGVkKQorICAgICAg
ICBpZiAoIXNlbGYud2ViVmlldy5jb25maWd1cmF0aW9uLl90ZXh0SW50ZXJhY3Rpb25HZXN0dXJl
c0VuYWJsZWQpCiAgICAgICAgICAgICByZXR1cm4gW1VJQ29sb3IgY2xlYXJDb2xvcl07CiAKICAg
ICAgICAgaWYgKCFfcGFnZS0+ZWRpdG9yU3RhdGUoKS5pc01pc3NpbmdQb3N0TGF5b3V0RGF0YSkg
ewpAQCAtMzI5NSw3ICszMjk1LDcgQEAgLSAoQk9PTCljYW5QZXJmb3JtQWN0aW9uRm9yV2ViVmll
dzooU0VMKWFjdGlvbiB3aXRoU2VuZGVyOihpZClzZW5kZXIKICAgICAgICAgICAgIHJldHVybiBZ
RVM7CiAKICNpZiBQTEFURk9STShJT1MpCi0gICAgICAgIGlmIChlZGl0b3JTdGF0ZS5pc0NvbnRl
bnRSaWNobHlFZGl0YWJsZSAmJiBfd2ViVmlldy5jb25maWd1cmF0aW9uLl9hdHRhY2htZW50RWxl
bWVudEVuYWJsZWQpIHsKKyAgICAgICAgaWYgKGVkaXRvclN0YXRlLmlzQ29udGVudFJpY2hseUVk
aXRhYmxlICYmIHNlbGYud2ViVmlldy5jb25maWd1cmF0aW9uLl9hdHRhY2htZW50RWxlbWVudEVu
YWJsZWQpIHsKICAgICAgICAgICAgIGZvciAoTlNJdGVtUHJvdmlkZXIgKml0ZW1Qcm92aWRlciBp
biBwYXN0ZWJvYXJkLml0ZW1Qcm92aWRlcnMpIHsKICAgICAgICAgICAgICAgICBhdXRvIHByZWZl
cnJlZFByZXNlbnRhdGlvblN0eWxlID0gaXRlbVByb3ZpZGVyLnByZWZlcnJlZFByZXNlbnRhdGlv
blN0eWxlOwogICAgICAgICAgICAgICAgIGlmIChwcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZSA9
PSBVSVByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlSW5saW5lKQpAQCAtMzU3NCw4ICszNTc0LDgg
QEAgLSAodm9pZClfZGVmaW5lRm9yV2ViVmlldzooaWQpc2VuZGVyCiAKIC0gKHZvaWQpYWNjZXNz
aWJpbGl0eVJldHJpZXZlU3BlYWtTZWxlY3Rpb25Db250ZW50CiB7Ci0gICAgUmV0YWluUHRyPFdL
Q29udGVudFZpZXc+IHZpZXcgPSBzZWxmOwotICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZp
ZXcgPSBfd2ViVmlldzsKKyAgICBSZXRhaW5QdHI8V0tDb250ZW50Vmlldz4gdmlldyA9IHJldGFp
blB0cihzZWxmKTsKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gX3dlYlZpZXcu
Z2V0KCk7CiAgICAgX3BhZ2UtPmdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyhbdmlldywg
d2ViVmlld10oY29uc3QgU3RyaW5nJiBzdHJpbmcsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJv
ciBlcnJvcikgewogICAgICAgICBpZiAoZXJyb3IgIT0gV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVy
cm9yOjpOb25lKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzk1Niw3ICszOTU2LDcgQEAgLSAo
dm9pZClyZXF1ZXN0UmVjdHNUb0V2YWRlRm9yU2VsZWN0aW9uQ29tbWFuZHNXaXRoQ29tcGxldGlv
bkhhbmRsZXI6KHZvaWQoXikoTlMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChb
c2VsZiBfc2hvdWxkU3VwcHJlc3NTZWxlY3Rpb25Db21tYW5kc10gfHwgX3dlYlZpZXcuX2VkaXRh
YmxlKSB7CisgICAgaWYgKFtzZWxmIF9zaG91bGRTdXBwcmVzc1NlbGVjdGlvbkNvbW1hbmRzXSB8
fCBzZWxmLndlYlZpZXcuX2VkaXRhYmxlKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKEBb
IF0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNDMxNyw3ICs0MzE3LDcgQEAgLSAodm9p
ZClhY2Nlc3NvcnlBdXRvRmlsbAogewogICAgIGlkIDxfV0tJbnB1dERlbGVnYXRlPiBpbnB1dERl
bGVnYXRlID0gW193ZWJWaWV3IF9pbnB1dERlbGVnYXRlXTsKICAgICBpZiAoW2lucHV0RGVsZWdh
dGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzphY2Nlc3NvcnlWaWV3Q3Vz
dG9tQnV0dG9uVGFwcGVkSW5Gb3JtSW5wdXRTZXNzaW9uOildKQotICAgICAgICBbaW5wdXREZWxl
Z2F0ZSBfd2ViVmlldzpfd2ViVmlldyBhY2Nlc3NvcnlWaWV3Q3VzdG9tQnV0dG9uVGFwcGVkSW5G
b3JtSW5wdXRTZXNzaW9uOl9mb3JtSW5wdXRTZXNzaW9uLmdldCgpXTsKKyAgICAgICAgW2lucHV0
RGVsZWdhdGUgX3dlYlZpZXc6c2VsZi53ZWJWaWV3IGFjY2Vzc29yeVZpZXdDdXN0b21CdXR0b25U
YXBwZWRJbkZvcm1JbnB1dFNlc3Npb246X2Zvcm1JbnB1dFNlc3Npb24uZ2V0KCldOwogfQogCiAt
IChVSVdlYkZvcm1BY2Nlc3NvcnkgKilmb3JtQWNjZXNzb3J5VmlldwpAQCAtNDM0Myw3ICs0MzQz
LDcgQEAgLSAodm9pZClfdXBkYXRlQWNjZXNzb3J5CiAgICAgYXV0byogYWNjZXNzb3J5VmlldyA9
IHNlbGYuZm9ybUFjY2Vzc29yeVZpZXc7IC8vIENyZWF0ZXMgb25lLCBpZiBuZWVkZWQuCiAKICAg
ICBpZiAoW2FjY2Vzc29yeVZpZXcgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzZXROZXh0
UHJldmlvdXNJdGVtc1Zpc2libGU6KV0pCi0gICAgICAgIFthY2Nlc3NvcnlWaWV3IHNldE5leHRQ
cmV2aW91c0l0ZW1zVmlzaWJsZTohX3dlYlZpZXcuX2VkaXRhYmxlXTsKKyAgICAgICAgW2FjY2Vz
c29yeVZpZXcgc2V0TmV4dFByZXZpb3VzSXRlbXNWaXNpYmxlOiFzZWxmLndlYlZpZXcuX2VkaXRh
YmxlXTsKIAogICAgIFthY2Nlc3NvcnlWaWV3IHNldE5leHRFbmFibGVkOl9mb2N1c2VkRWxlbWVu
dEluZm9ybWF0aW9uLmhhc05leHROb2RlXTsKICAgICBbYWNjZXNzb3J5VmlldyBzZXRQcmV2aW91
c0VuYWJsZWQ6X2ZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24uaGFzUHJldmlvdXNOb2RlXTsKQEAg
LTQzOTcsOSArNDM5Nyw5IEBAIC0gKHZvaWQpd2lsbEZpbmlzaElnbm9yaW5nQ2FsbG91dEJhckZh
ZGVBZnRlclBlcmZvcm1pbmdBY3Rpb24KIC0gKHZvaWQpX2RpZENoYW5nZVdlYlZpZXdFZGl0YWJp
bGl0eQogewogICAgIGlmIChbX2Zvcm1BY2Nlc3NvcnlWaWV3IHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3Ioc2V0TmV4dFByZXZpb3VzSXRlbXNWaXNpYmxlOildKQotICAgICAgICBbX2Zvcm1B
Y2Nlc3NvcnlWaWV3IHNldE5leHRQcmV2aW91c0l0ZW1zVmlzaWJsZTohX3dlYlZpZXcuX2VkaXRh
YmxlXTsKKyAgICAgICAgW19mb3JtQWNjZXNzb3J5VmlldyBzZXROZXh0UHJldmlvdXNJdGVtc1Zp
c2libGU6IXNlbGYud2ViVmlldy5fZWRpdGFibGVdOwogICAgIAotICAgIFtfdHdvRmluZ2VyU2lu
Z2xlVGFwR2VzdHVyZVJlY29nbml6ZXIgc2V0RW5hYmxlZDohX3dlYlZpZXcuX2VkaXRhYmxlXTsK
KyAgICBbX3R3b0ZpbmdlclNpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVyIHNldEVuYWJsZWQ6IXNl
bGYud2ViVmlldy5fZWRpdGFibGVdOwogfQogCiAtICh2b2lkKWluc2VydFRleHRTdWdnZXN0aW9u
OihVSVRleHRTdWdnZXN0aW9uICopdGV4dFN1Z2dlc3Rpb24KQEAgLTQ0MTcsNyArNDQxNyw3IEBA
IC0gKHZvaWQpaW5zZXJ0VGV4dFN1Z2dlc3Rpb246KFVJVGV4dFN1Z2dlc3Rpb24gKil0ZXh0U3Vn
Z2VzdGlvbgogI2VuZGlmCiAgICAgaWQgPF9XS0lucHV0RGVsZWdhdGU+IGlucHV0RGVsZWdhdGUg
PSBbX3dlYlZpZXcgX2lucHV0RGVsZWdhdGVdOwogICAgIGlmIChbaW5wdXREZWxlZ2F0ZSByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3Omluc2VydFRleHRTdWdnZXN0aW9uOmlu
SW5wdXRTZXNzaW9uOildKQotICAgICAgICBbaW5wdXREZWxlZ2F0ZSBfd2ViVmlldzpfd2ViVmll
dyBpbnNlcnRUZXh0U3VnZ2VzdGlvbjp0ZXh0U3VnZ2VzdGlvbiBpbklucHV0U2Vzc2lvbjpfZm9y
bUlucHV0U2Vzc2lvbi5nZXQoKV07CisgICAgICAgIFtpbnB1dERlbGVnYXRlIF93ZWJWaWV3OnNl
bGYud2ViVmlldyBpbnNlcnRUZXh0U3VnZ2VzdGlvbjp0ZXh0U3VnZ2VzdGlvbiBpbklucHV0U2Vz
c2lvbjpfZm9ybUlucHV0U2Vzc2lvbi5nZXQoKV07CiB9CiAKIC0gKE5TU3RyaW5nICopdGV4dElu
UmFuZ2U6KFVJVGV4dFJhbmdlICopcmFuZ2UKQEAgLTUxNDUsNyArNTE0NSw3IEBAIC0gKEJPT0wp
aXNTY3JvbGxhYmxlRm9yS2V5Ym9hcmRTY3JvbGxWaWV3QW5pbWF0b3I6KFdLS2V5Ym9hcmRTY3Jv
bGxWaWV3QW5pbWF0b3IKICAgICBpZiAoX2ZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24uZWxlbWVu
dFR5cGUgPT0gV2ViS2l0OjpJbnB1dFR5cGU6OlNlbGVjdCkKICAgICAgICAgcmV0dXJuIE5POwog
Ci0gICAgaWYgKCFfd2ViVmlldy5zY3JvbGxWaWV3LnNjcm9sbEVuYWJsZWQpCisgICAgaWYgKCFz
ZWxmLndlYlZpZXcuc2Nyb2xsVmlldy5zY3JvbGxFbmFibGVkKQogICAgICAgICByZXR1cm4gTk87
CiAKICAgICByZXR1cm4gWUVTOwpAQCAtNTE1NywxNSArNTE1NywxNSBAQCAtIChDR0Zsb2F0KWtl
eWJvYXJkU2Nyb2xsVmlld0FuaW1hdG9yOihXS0tleWJvYXJkU2Nyb2xsVmlld0FuaW1hdG9yICop
YW5pbWF0b3IgZAogCiAgICAgc3dpdGNoIChpbmNyZW1lbnQpIHsKICAgICBjYXNlIFdlYktpdDo6
U2Nyb2xsaW5nSW5jcmVtZW50OjpEb2N1bWVudDogewotICAgICAgICBDR1NpemUgZG9jdW1lbnRT
aXplID0gW3NlbGYgY29udmVydFJlY3Q6c2VsZi5ib3VuZHMgdG9WaWV3Ol93ZWJWaWV3XS5zaXpl
OworICAgICAgICBDR1NpemUgZG9jdW1lbnRTaXplID0gW3NlbGYgY29udmVydFJlY3Q6c2VsZi5i
b3VuZHMgdG9WaWV3OnNlbGYud2ViVmlld10uc2l6ZTsKICAgICAgICAgcmV0dXJuIGRpcmVjdGlv
bklzSG9yaXpvbnRhbCA/IGRvY3VtZW50U2l6ZS53aWR0aCA6IGRvY3VtZW50U2l6ZS5oZWlnaHQ7
CiAgICAgfQogICAgIGNhc2UgV2ViS2l0OjpTY3JvbGxpbmdJbmNyZW1lbnQ6OlBhZ2U6IHsKLSAg
ICAgICAgQ0dTaXplIHBhZ2VTaXplID0gW3NlbGYgY29udmVydFNpemU6Q0dTaXplTWFrZSgwLCBX
ZWJDb3JlOjpTY3JvbGxiYXI6OnBhZ2VTdGVwKF9wYWdlLT51bm9ic2N1cmVkQ29udGVudFJlY3Qo
KS5oZWlnaHQoKSwgc2VsZi5ib3VuZHMuc2l6ZS5oZWlnaHQpKSB0b1ZpZXc6X3dlYlZpZXddOwor
ICAgICAgICBDR1NpemUgcGFnZVNpemUgPSBbc2VsZiBjb252ZXJ0U2l6ZTpDR1NpemVNYWtlKDAs
IFdlYkNvcmU6OlNjcm9sbGJhcjo6cGFnZVN0ZXAoX3BhZ2UtPnVub2JzY3VyZWRDb250ZW50UmVj
dCgpLmhlaWdodCgpLCBzZWxmLmJvdW5kcy5zaXplLmhlaWdodCkpIHRvVmlldzpzZWxmLndlYlZp
ZXddOwogICAgICAgICByZXR1cm4gZGlyZWN0aW9uSXNIb3Jpem9udGFsID8gcGFnZVNpemUud2lk
dGggOiBwYWdlU2l6ZS5oZWlnaHQ7CiAgICAgfQogICAgIGNhc2UgV2ViS2l0OjpTY3JvbGxpbmdJ
bmNyZW1lbnQ6OkxpbmU6Ci0gICAgICAgIHJldHVybiBbc2VsZiBjb252ZXJ0U2l6ZTpDR1NpemVN
YWtlKDAsIFdlYkNvcmU6OlNjcm9sbGJhcjo6cGl4ZWxzUGVyTGluZVN0ZXAoKSkgdG9WaWV3Ol93
ZWJWaWV3XS5oZWlnaHQ7CisgICAgICAgIHJldHVybiBbc2VsZiBjb252ZXJ0U2l6ZTpDR1NpemVN
YWtlKDAsIFdlYkNvcmU6OlNjcm9sbGJhcjo6cGl4ZWxzUGVyTGluZVN0ZXAoKSkgdG9WaWV3OnNl
bGYud2ViVmlld10uaGVpZ2h0OwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICByZXR1cm4gMDsKQEAgLTU1NjUsMTQgKzU1NjUsMTQgQEAgLSAodm9pZClfZWxlbWVudERpZEZv
Y3VzOihjb25zdCBXZWJLaXQ6OkZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24mKWluZm9ybWF0aW9u
IHUKICAgICBfV0tGb2N1c1N0YXJ0c0lucHV0U2Vzc2lvblBvbGljeSBzdGFydElucHV0U2Vzc2lv
blBvbGljeSA9IF9XS0ZvY3VzU3RhcnRzSW5wdXRTZXNzaW9uUG9saWN5QXV0bzsKIAogICAgIGlm
IChbaW5wdXREZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmZv
Y3VzU2hvdWxkU3RhcnRJbnB1dFNlc3Npb246KV0pIHsKLSAgICAgICAgaWYgKFtpbnB1dERlbGVn
YXRlIF93ZWJWaWV3Ol93ZWJWaWV3IGZvY3VzU2hvdWxkU3RhcnRJbnB1dFNlc3Npb246Zm9jdXNl
ZEVsZW1lbnRJbmZvLmdldCgpXSkKKyAgICAgICAgaWYgKFtpbnB1dERlbGVnYXRlIF93ZWJWaWV3
OnNlbGYud2ViVmlldyBmb2N1c1Nob3VsZFN0YXJ0SW5wdXRTZXNzaW9uOmZvY3VzZWRFbGVtZW50
SW5mby5nZXQoKV0pCiAgICAgICAgICAgICBzdGFydElucHV0U2Vzc2lvblBvbGljeSA9IF9XS0Zv
Y3VzU3RhcnRzSW5wdXRTZXNzaW9uUG9saWN5QWxsb3c7CiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIHN0YXJ0SW5wdXRTZXNzaW9uUG9saWN5ID0gX1dLRm9jdXNTdGFydHNJbnB1dFNlc3Npb25Q
b2xpY3lEaXNhbGxvdzsKICAgICB9CiAKICAgICBpZiAoW2lucHV0RGVsZWdhdGUgcmVzcG9uZHNU
b1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpkZWNpZGVQb2xpY3lGb3JGb2N1c2VkRWxlbWVu
dDopXSkKLSAgICAgICAgc3RhcnRJbnB1dFNlc3Npb25Qb2xpY3kgPSBbaW5wdXREZWxlZ2F0ZSBf
d2ViVmlldzpfd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JGb2N1c2VkRWxlbWVudDpmb2N1c2VkRWxl
bWVudEluZm8uZ2V0KCldOworICAgICAgICBzdGFydElucHV0U2Vzc2lvblBvbGljeSA9IFtpbnB1
dERlbGVnYXRlIF93ZWJWaWV3OnNlbGYud2ViVmlldyBkZWNpZGVQb2xpY3lGb3JGb2N1c2VkRWxl
bWVudDpmb2N1c2VkRWxlbWVudEluZm8uZ2V0KCldOwogCiAgICAgQk9PTCBzaG91bGRTaG93SW5w
dXRWaWV3ID0gWyZdIHsKICAgICAgICAgc3dpdGNoIChzdGFydElucHV0U2Vzc2lvblBvbGljeSkg
ewpAQCAtNTY0NywxMCArNTY0NywxMCBAQCAtICh2b2lkKV9lbGVtZW50RGlkRm9jdXM6KGNvbnN0
IFdlYktpdDo6Rm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbiYpaW5mb3JtYXRpb24gdQogICAgIF9m
b2N1c1JlcXVpcmVzU3Ryb25nUGFzc3dvcmRBc3Npc3RhbmNlID0gTk87CiAgICAgX2FkZGl0aW9u
YWxDb250ZXh0Rm9yU3Ryb25nUGFzc3dvcmRBc3Npc3RhbmNlID0gbmlsOwogICAgIGlmIChbaW5w
dXREZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmZvY3VzUmVx
dWlyZXNTdHJvbmdQYXNzd29yZEFzc2lzdGFuY2U6KV0pCi0gICAgICAgIF9mb2N1c1JlcXVpcmVz
U3Ryb25nUGFzc3dvcmRBc3Npc3RhbmNlID0gW2lucHV0RGVsZWdhdGUgX3dlYlZpZXc6X3dlYlZp
ZXcgZm9jdXNSZXF1aXJlc1N0cm9uZ1Bhc3N3b3JkQXNzaXN0YW5jZTpmb2N1c2VkRWxlbWVudElu
Zm8uZ2V0KCldOworICAgICAgICBfZm9jdXNSZXF1aXJlc1N0cm9uZ1Bhc3N3b3JkQXNzaXN0YW5j
ZSA9IFtpbnB1dERlbGVnYXRlIF93ZWJWaWV3OnNlbGYud2ViVmlldyBmb2N1c1JlcXVpcmVzU3Ry
b25nUGFzc3dvcmRBc3Npc3RhbmNlOmZvY3VzZWRFbGVtZW50SW5mby5nZXQoKV07CiAKICAgICBp
ZiAoW2lucHV0RGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlld0Fk
ZGl0aW9uYWxDb250ZXh0Rm9yU3Ryb25nUGFzc3dvcmRBc3Npc3RhbmNlOildKQotICAgICAgICBf
YWRkaXRpb25hbENvbnRleHRGb3JTdHJvbmdQYXNzd29yZEFzc2lzdGFuY2UgPSBbaW5wdXREZWxl
Z2F0ZSBfd2ViVmlld0FkZGl0aW9uYWxDb250ZXh0Rm9yU3Ryb25nUGFzc3dvcmRBc3Npc3RhbmNl
Ol93ZWJWaWV3XTsKKyAgICAgICAgX2FkZGl0aW9uYWxDb250ZXh0Rm9yU3Ryb25nUGFzc3dvcmRB
c3Npc3RhbmNlID0gW2lucHV0RGVsZWdhdGUgX3dlYlZpZXdBZGRpdGlvbmFsQ29udGV4dEZvclN0
cm9uZ1Bhc3N3b3JkQXNzaXN0YW5jZTpzZWxmLndlYlZpZXddOwogICAgIGVsc2UKICAgICAgICAg
X2FkZGl0aW9uYWxDb250ZXh0Rm9yU3Ryb25nUGFzc3dvcmRBc3Npc3RhbmNlID0gQHsgfTsKIApA
QCAtNTY2Myw3ICs1NjYzLDcgQEAgLSAodm9pZClfZWxlbWVudERpZEZvY3VzOihjb25zdCBXZWJL
aXQ6OkZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24mKWluZm9ybWF0aW9uIHUKICAgICB9CiAKICAg
ICBpZiAoZGVsZWdhdGVJbXBsZW1lbnRzV2lsbFN0YXJ0SW5wdXRTZXNzaW9uKQotICAgICAgICBb
aW5wdXREZWxlZ2F0ZSBfd2ViVmlldzpfd2ViVmlldyB3aWxsU3RhcnRJbnB1dFNlc3Npb246X2Zv
cm1JbnB1dFNlc3Npb24uZ2V0KCldOworICAgICAgICBbaW5wdXREZWxlZ2F0ZSBfd2ViVmlldzpz
ZWxmLndlYlZpZXcgd2lsbFN0YXJ0SW5wdXRTZXNzaW9uOl9mb3JtSW5wdXRTZXNzaW9uLmdldCgp
XTsKIAogICAgIEJPT0wgaXNTZWxlY3RhYmxlID0gbWF5Q29udGFpblNlbGVjdGFibGVUZXh0KGlu
Zm9ybWF0aW9uLmVsZW1lbnRUeXBlKTsKICAgICBCT09MIGVkaXRhYmxlQ2hhbmdlZCA9IFtzZWxm
IHNldElzRWRpdGFibGU6aXNTZWxlY3RhYmxlXTsKQEAgLTU3MDgsNyArNTcwOCw3IEBAIC0gKHZv
aWQpX2VsZW1lbnREaWRGb2N1czooY29uc3QgV2ViS2l0OjpGb2N1c2VkRWxlbWVudEluZm9ybWF0
aW9uJilpbmZvcm1hdGlvbiB1CiAgICAgW19pbnB1dFBlcmlwaGVyYWwgYmVnaW5FZGl0aW5nXTsK
IAogICAgIGlmIChkZWxlZ2F0ZUltcGxlbWVudHNEaWRTdGFydElucHV0U2Vzc2lvbikKLSAgICAg
ICAgW2lucHV0RGVsZWdhdGUgX3dlYlZpZXc6X3dlYlZpZXcgZGlkU3RhcnRJbnB1dFNlc3Npb246
X2Zvcm1JbnB1dFNlc3Npb24uZ2V0KCldOworICAgICAgICBbaW5wdXREZWxlZ2F0ZSBfd2ViVmll
dzpzZWxmLndlYlZpZXcgZGlkU3RhcnRJbnB1dFNlc3Npb246X2Zvcm1JbnB1dFNlc3Npb24uZ2V0
KCldOwogICAgIAogICAgIFtfd2ViVmlldyBkaWRTdGFydEZvcm1Db250cm9sSW50ZXJhY3Rpb25d
OwogfQpAQCAtNTk0NSw5ICs1OTQ1LDkgQEAgLSAodm9pZClhZGRGb2N1c2VkRm9ybUNvbnRyb2xP
dmVybGF5CiAgICAgaWYgKF9mb2N1c2VkRm9ybUNvbnRyb2xWaWV3KQogICAgICAgICByZXR1cm47
CiAKLSAgICBfYWN0aXZlRm9jdXNlZFN0YXRlUmV0YWluQmxvY2sgPSBtYWtlQmxvY2tQdHIoX3dl
YlZpZXcuX3JldGFpbkFjdGl2ZUZvY3VzZWRTdGF0ZSk7CisgICAgX2FjdGl2ZUZvY3VzZWRTdGF0
ZVJldGFpbkJsb2NrID0gbWFrZUJsb2NrUHRyKHNlbGYud2ViVmlldy5fcmV0YWluQWN0aXZlRm9j
dXNlZFN0YXRlKTsKIAotICAgIF9mb2N1c2VkRm9ybUNvbnRyb2xWaWV3ID0gYWRvcHROUyhbW1dL
Rm9jdXNlZEZvcm1Db250cm9sVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpfd2ViVmlldy5ib3Vu
ZHMgZGVsZWdhdGU6c2VsZl0pOworICAgIF9mb2N1c2VkRm9ybUNvbnRyb2xWaWV3ID0gYWRvcHRO
UyhbW1dLRm9jdXNlZEZvcm1Db250cm9sVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpzZWxmLndl
YlZpZXcuYm91bmRzIGRlbGVnYXRlOnNlbGZdKTsKICAgICBbX2ZvY3VzZWRGb3JtQ29udHJvbFZp
ZXcgaGlkZTpOT107CiAgICAgW193ZWJWaWV3IGFkZFN1YnZpZXc6X2ZvY3VzZWRGb3JtQ29udHJv
bFZpZXcuZ2V0KCldOwogICAgIFtzZWxmIHNldElucHV0RGVsZWdhdGU6X2ZvY3VzZWRGb3JtQ29u
dHJvbFZpZXcuZ2V0KCldOwpAQCAtNjAxNyw3ICs2MDE3LDcgQEAgLSAodm9pZClwcmVzZW50Vmll
d0NvbnRyb2xsZXJGb3JDdXJyZW50Rm9jdXNlZEVsZW1lbnQKICAgICAvLyBQcmVzZW50aW5nIGEg
ZnVsbHNjcmVlbiBpbnB1dCB2aWV3IGNvbnRyb2xsZXIgZnVsbHkgb2JzY3VyZXMgdGhlIHdlYiB2
aWV3LiBXaXRob3V0IHRha2luZyB0aGlzIHRva2VuLCB0aGUgd2ViIGNvbnRlbnQgcHJvY2VzcyB3
aWxsIGdldCBiYWNrZ3JvdW5kZWQuCiAgICAgX3BhZ2UtPnByb2Nlc3MoKS5zdGFydEJhY2tncm91
bmRBY3Rpdml0eUZvckZ1bGxzY3JlZW5JbnB1dCgpOwogCi0gICAgW3ByZXNlbnRpbmdWaWV3Q29u
dHJvbGxlci50cmFuc2l0aW9uQ29vcmRpbmF0b3IgYW5pbWF0ZUFsb25nc2lkZVRyYW5zaXRpb246
bmlsIGNvbXBsZXRpb246W3dlYWtXZWJWaWV3ID0gV2Vha09iakNQdHI8V0tXZWJWaWV3Pihfd2Vi
VmlldyksIGNvbnRyb2xsZXIgPSBfcHJlc2VudGVkRnVsbFNjcmVlbklucHV0Vmlld0NvbnRyb2xs
ZXJdIChpZCA8VUlWaWV3Q29udHJvbGxlclRyYW5zaXRpb25Db29yZGluYXRvckNvbnRleHQ+KSB7
CisgICAgW3ByZXNlbnRpbmdWaWV3Q29udHJvbGxlci50cmFuc2l0aW9uQ29vcmRpbmF0b3IgYW5p
bWF0ZUFsb25nc2lkZVRyYW5zaXRpb246bmlsIGNvbXBsZXRpb246W3dlYWtXZWJWaWV3ID0gV2Vh
a09iakNQdHI8V0tXZWJWaWV3PihzZWxmLndlYlZpZXcpLCBjb250cm9sbGVyID0gX3ByZXNlbnRl
ZEZ1bGxTY3JlZW5JbnB1dFZpZXdDb250cm9sbGVyXSAoaWQgPFVJVmlld0NvbnRyb2xsZXJUcmFu
c2l0aW9uQ29vcmRpbmF0b3JDb250ZXh0PikgewogICAgICAgICBhdXRvIHN0cm9uZ1dlYlZpZXcg
PSB3ZWFrV2ViVmlldy5nZXQoKTsKICAgICAgICAgaWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+IHVp
RGVsZWdhdGUgPSBzdGF0aWNfY2FzdDxpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4+KFtzdHJvbmdX
ZWJWaWV3IFVJRGVsZWdhdGVdKTsKICAgICAgICAgaWYgKFt1aURlbGVnYXRlIHJlc3BvbmRzVG9T
ZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6ZGlkUHJlc2VudEZvY3VzZWRFbGVtZW50Vmlld0Nv
bnRyb2xsZXI6KV0pCkBAIC02MDM4LDcgKzYwMzgsNyBAQCAtICh2b2lkKWRpc21pc3NBbGxJbnB1
dFZpZXdDb250cm9sbGVyczooQk9PTClhbmltYXRlZAogICAgIGVsc2UKICAgICAgICAgW3ByZXNl
bnRlZENvbnRyb2xsZXIgZGlzbWlzc1ZpZXdDb250cm9sbGVyQW5pbWF0ZWQ6YW5pbWF0ZWQgY29t
cGxldGlvbjpuaWxdOwogCi0gICAgW1twcmVzZW50ZWRDb250cm9sbGVyIHRyYW5zaXRpb25Db29y
ZGluYXRvcl0gYW5pbWF0ZUFsb25nc2lkZVRyYW5zaXRpb246bmlsIGNvbXBsZXRpb246W3dlYWtX
ZWJWaWV3ID0gV2Vha09iakNQdHI8V0tXZWJWaWV3Pihfd2ViVmlldyksIGNvbnRyb2xsZXIgPSBw
cmVzZW50ZWRDb250cm9sbGVyXSAoaWQgPFVJVmlld0NvbnRyb2xsZXJUcmFuc2l0aW9uQ29vcmRp
bmF0b3JDb250ZXh0PikgeworICAgIFtbcHJlc2VudGVkQ29udHJvbGxlciB0cmFuc2l0aW9uQ29v
cmRpbmF0b3JdIGFuaW1hdGVBbG9uZ3NpZGVUcmFuc2l0aW9uOm5pbCBjb21wbGV0aW9uOlt3ZWFr
V2ViVmlldyA9IFdlYWtPYmpDUHRyPFdLV2ViVmlldz4oc2VsZi53ZWJWaWV3KSwgY29udHJvbGxl
ciA9IHByZXNlbnRlZENvbnRyb2xsZXJdIChpZCA8VUlWaWV3Q29udHJvbGxlclRyYW5zaXRpb25D
b29yZGluYXRvckNvbnRleHQ+KSB7CiAgICAgICAgIGF1dG8gc3Ryb25nV2ViVmlldyA9IHdlYWtX
ZWJWaWV3LmdldCgpOwogICAgICAgICBpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4gdWlEZWxlZ2F0
ZSA9IHN0YXRpY19jYXN0PGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPj4oW3N0cm9uZ1dlYlZpZXcg
VUlEZWxlZ2F0ZV0pOwogICAgICAgICBpZiAoW3VpRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9y
OkBzZWxlY3Rvcihfd2ViVmlldzpkaWREaXNtaXNzRm9jdXNlZEVsZW1lbnRWaWV3Q29udHJvbGxl
cjopXSkKQEAgLTY0NzIsMTMgKzY0NzIsMTMgQEAgLSAodm9pZClfc2hvd1NoYXJlU2hlZXQ6KGNv
bnN0IFdlYkNvcmU6OlNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmKWRhdGEgaW5SZWN0OihXVEYKICAg
ICBpZiAoX3NoYXJlU2hlZXQpCiAgICAgICAgIFtfc2hhcmVTaGVldCBkaXNtaXNzXTsKICAgICAK
LSAgICBfc2hhcmVTaGVldCA9IGFkb3B0TlMoW1tXS1NoYXJlU2hlZXQgYWxsb2NdIGluaXRXaXRo
Vmlldzpfd2ViVmlld10pOworICAgIF9zaGFyZVNoZWV0ID0gYWRvcHROUyhbW1dLU2hhcmVTaGVl
dCBhbGxvY10gaW5pdFdpdGhWaWV3OnNlbGYud2ViVmlld10pOwogICAgIFtfc2hhcmVTaGVldCBz
ZXREZWxlZ2F0ZTpzZWxmXTsKIAogI2lmIEhBVkUoSE9WRVJfR0VTVFVSRV9SRUNPR05JWkVSKQog
ICAgIGlmICghcmVjdCkgewogICAgICAgICBpZiAoYXV0byBsYXN0TW91c2VMb2NhdGlvbiA9IFtf
bW91c2VHZXN0dXJlUmVjb2duaXplciBsYXN0TW91c2VMb2NhdGlvbl0pIHsKLSAgICAgICAgICAg
IGF1dG8gaG92ZXJMb2NhdGlvbkluV2ViVmlldyA9IFtzZWxmIGNvbnZlcnRQb2ludDoqbGFzdE1v
dXNlTG9jYXRpb24gdG9WaWV3Ol93ZWJWaWV3XTsKKyAgICAgICAgICAgIGF1dG8gaG92ZXJMb2Nh
dGlvbkluV2ViVmlldyA9IFtzZWxmIGNvbnZlcnRQb2ludDoqbGFzdE1vdXNlTG9jYXRpb24gdG9W
aWV3OnNlbGYud2ViVmlld107CiAgICAgICAgICAgICByZWN0ID0gV2ViQ29yZTo6RmxvYXRSZWN0
KGhvdmVyTG9jYXRpb25JbldlYlZpZXcueCwgaG92ZXJMb2NhdGlvbkluV2ViVmlldy55LCAxLCAx
KTsKICAgICAgICAgfQogICAgIH0KQEAgLTY1ODgsNyArNjU4OCw3IEBAIC0gKHZvaWQpYWN0aW9u
U2hlZXRBc3Npc3RhbnQ6KFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQgKilhc3Npc3RhbnQgc2hhcmVF
bGVtZW50V2l0CiB7CiAgICAgV2ViQ29yZTo6U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCBzaGFyZURh
dGE7CiAgICAgc2hhcmVEYXRhLnVybCA9IHsgdXJsIH07Ci0gICAgW3NlbGYgX3Nob3dTaGFyZVNo
ZWV0OnNoYXJlRGF0YSBpblJlY3Q6IHsgW3NlbGYgY29udmVydFJlY3Q6Ym91bmRpbmdSZWN0IHRv
Vmlldzpfd2ViVmlld10gfSBjb21wbGV0aW9uSGFuZGxlcjpbXSAoYm9vbCBzdWNjZXNzKSB7IH1d
OworICAgIFtzZWxmIF9zaG93U2hhcmVTaGVldDpzaGFyZURhdGEgaW5SZWN0OiB7IFtzZWxmIGNv
bnZlcnRSZWN0OmJvdW5kaW5nUmVjdCB0b1ZpZXc6c2VsZi53ZWJWaWV3XSB9IGNvbXBsZXRpb25I
YW5kbGVyOltdIChib29sIHN1Y2Nlc3MpIHsgfV07CiB9CiAKICNpZiBIQVZFKEFQUF9MSU5LUykK
QEAgLTY2MDQsNyArNjYwNCw3IEBAIC0gKEJPT0wpYWN0aW9uU2hlZXRBc3Npc3RhbnQ6KFdLQWN0
aW9uU2hlZXRBc3Npc3RhbnQgKilhc3Npc3RhbnQgc2hvd0N1c3RvbVNoZWV0CiAgICAgCiAgICAg
aWYgKFt1aURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6c2hv
d0N1c3RvbVNoZWV0Rm9yRWxlbWVudDopXSkgewogICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RF
Q0xBUkFUSU9OU19CRUdJTgotICAgICAgICBpZiAoW3VpRGVsZWdhdGUgX3dlYlZpZXc6X3dlYlZp
ZXcgc2hvd0N1c3RvbVNoZWV0Rm9yRWxlbWVudDplbGVtZW50XSkgeworICAgICAgICBpZiAoW3Vp
RGVsZWdhdGUgX3dlYlZpZXc6c2VsZi53ZWJWaWV3IHNob3dDdXN0b21TaGVldEZvckVsZW1lbnQ6
ZWxlbWVudF0pIHsKICNpZiBFTkFCTEUoREFUQV9JTlRFUkFDVElPTikKICAgICAgICAgICAgIEJP
T0wgc2hvdWxkQ2FuY2VsQWxsVG91Y2hlcyA9ICFfZHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLmRy
YWdTZXNzaW9uKCk7CiAjZWxzZQpAQCAtNjY1Miw3ICs2NjUyLDcgQEAgLSAoTlNEaWN0aW9uYXJ5
ICopZGF0YURldGVjdGlvbkNvbnRleHRGb3JQb3NpdGlvbkluZm9ybWF0aW9uOihXZWJLaXQ6Oklu
dGVyYWN0aW8KICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeT4gY29udGV4dDsKICAg
ICBpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4gdWlEZWxlZ2F0ZSA9IHN0YXRpY19jYXN0PGlkIDxX
S1VJRGVsZWdhdGVQcml2YXRlPj4oW193ZWJWaWV3IFVJRGVsZWdhdGVdKTsKICAgICBpZiAoW3Vp
RGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihfZGF0YURldGVjdGlvbkNvbnRl
eHRGb3JXZWJWaWV3OildKQotICAgICAgICBjb250ZXh0ID0gYWRvcHROUyhbW3VpRGVsZWdhdGUg
X2RhdGFEZXRlY3Rpb25Db250ZXh0Rm9yV2ViVmlldzpfd2ViVmlld10gbXV0YWJsZUNvcHldKTsK
KyAgICAgICAgY29udGV4dCA9IGFkb3B0TlMoW1t1aURlbGVnYXRlIF9kYXRhRGV0ZWN0aW9uQ29u
dGV4dEZvcldlYlZpZXc6c2VsZi53ZWJWaWV3XSBtdXRhYmxlQ29weV0pOwogICAgIAogICAgIGlm
ICghY29udGV4dCkKICAgICAgICAgY29udGV4dCA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9u
YXJ5IGFsbG9jXSBpbml0XSk7CkBAIC02NjkwLDcgKzY2OTAsNyBAQCAtICh2b2lkKWFjdGlvblNo
ZWV0QXNzaXN0YW50OihXS0FjdGlvblNoZWV0QXNzaXN0YW50ICopYXNzaXN0YW50IGdldEFsdGVy
bmF0ZVVSTAogewogICAgIGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPiB1aURlbGVnYXRlID0gc3Rh
dGljX2Nhc3Q8aWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+PihbX3dlYlZpZXcgVUlEZWxlZ2F0ZV0p
OwogICAgIGlmIChbdWlEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJW
aWV3OmdldEFsdGVybmF0ZVVSTEZyb21JbWFnZTpjb21wbGV0aW9uSGFuZGxlcjopXSkgewotICAg
ICAgICBbdWlEZWxlZ2F0ZSBfd2ViVmlldzpfd2ViVmlldyBnZXRBbHRlcm5hdGVVUkxGcm9tSW1h
Z2U6aW1hZ2UgY29tcGxldGlvbkhhbmRsZXI6XihOU1VSTCAqYWx0ZXJuYXRlVVJMLCBOU0RpY3Rp
b25hcnkgKnVzZXJJbmZvKSB7CisgICAgICAgIFt1aURlbGVnYXRlIF93ZWJWaWV3OnNlbGYud2Vi
VmlldyBnZXRBbHRlcm5hdGVVUkxGcm9tSW1hZ2U6aW1hZ2UgY29tcGxldGlvbkhhbmRsZXI6XihO
U1VSTCAqYWx0ZXJuYXRlVVJMLCBOU0RpY3Rpb25hcnkgKnVzZXJJbmZvKSB7CiAgICAgICAgICAg
ICBjb21wbGV0aW9uKGFsdGVybmF0ZVVSTCwgdXNlckluZm8pOwogICAgICAgICB9XTsKICAgICB9
IGVsc2UKQEAgLTY4MTYsMTQgKzY4MTYsMTQgQEAgc3RhdGljIEJPT0wgc2hvdWxkRW5hYmxlRHJh
Z0ludGVyYWN0aW9uRm9yUG9saWN5KF9XS0RyYWdJbnRlcmFjdGlvblBvbGljeSBwb2xpY3kKIAog
LSAodm9pZClfZGlkQ2hhbmdlRHJhZ0ludGVyYWN0aW9uUG9saWN5CiB7Ci0gICAgW19kcmFnSW50
ZXJhY3Rpb24gc2V0RW5hYmxlZDpzaG91bGRFbmFibGVEcmFnSW50ZXJhY3Rpb25Gb3JQb2xpY3ko
X3dlYlZpZXcuX2RyYWdJbnRlcmFjdGlvblBvbGljeSldOworICAgIFtfZHJhZ0ludGVyYWN0aW9u
IHNldEVuYWJsZWQ6c2hvdWxkRW5hYmxlRHJhZ0ludGVyYWN0aW9uRm9yUG9saWN5KHNlbGYud2Vi
Vmlldy5fZHJhZ0ludGVyYWN0aW9uUG9saWN5KV07CiB9CiAKIC0gKE5TVGltZUludGVydmFsKWRy
YWdMaWZ0RGVsYXkKIHsKICAgICBzdGF0aWMgY29uc3QgTlNUaW1lSW50ZXJ2YWwgbWVkaXVtRHJh
Z0xpZnREZWxheSA9IDAuNTsKICAgICBzdGF0aWMgY29uc3QgTlNUaW1lSW50ZXJ2YWwgbG9uZ0Ry
YWdMaWZ0RGVsYXkgPSAwLjY1OwotICAgIGF1dG8gZHJhZ0xpZnREZWxheSA9IF93ZWJWaWV3LmNv
bmZpZ3VyYXRpb24uX2RyYWdMaWZ0RGVsYXk7CisgICAgYXV0byBkcmFnTGlmdERlbGF5ID0gc2Vs
Zi53ZWJWaWV3LmNvbmZpZ3VyYXRpb24uX2RyYWdMaWZ0RGVsYXk7CiAgICAgaWYgKGRyYWdMaWZ0
RGVsYXkgPT0gX1dLRHJhZ0xpZnREZWxheU1lZGl1bSkKICAgICAgICAgcmV0dXJuIG1lZGl1bURy
YWdMaWZ0RGVsYXk7CiAgICAgaWYgKGRyYWdMaWZ0RGVsYXkgPT0gX1dLRHJhZ0xpZnREZWxheUxv
bmcpCkBAIC02ODQxLDcgKzY4NDEsNyBAQCAtICh2b2lkKXNldHVwRHJhZ0FuZERyb3BJbnRlcmFj
dGlvbnMKICAgICBfZHJhZ0ludGVyYWN0aW9uID0gYWRvcHROUyhbW1VJRHJhZ0ludGVyYWN0aW9u
IGFsbG9jXSBpbml0V2l0aERlbGVnYXRlOnNlbGZdKTsKICAgICBfZHJvcEludGVyYWN0aW9uID0g
YWRvcHROUyhbW1VJRHJvcEludGVyYWN0aW9uIGFsbG9jXSBpbml0V2l0aERlbGVnYXRlOnNlbGZd
KTsKICAgICBbX2RyYWdJbnRlcmFjdGlvbiBfc2V0TGlmdERlbGF5OnNlbGYuZHJhZ0xpZnREZWxh
eV07Ci0gICAgW19kcmFnSW50ZXJhY3Rpb24gc2V0RW5hYmxlZDpzaG91bGRFbmFibGVEcmFnSW50
ZXJhY3Rpb25Gb3JQb2xpY3koX3dlYlZpZXcuX2RyYWdJbnRlcmFjdGlvblBvbGljeSldOworICAg
IFtfZHJhZ0ludGVyYWN0aW9uIHNldEVuYWJsZWQ6c2hvdWxkRW5hYmxlRHJhZ0ludGVyYWN0aW9u
Rm9yUG9saWN5KHNlbGYud2ViVmlldy5fZHJhZ0ludGVyYWN0aW9uUG9saWN5KV07CiAKICAgICBb
c2VsZiBhZGRJbnRlcmFjdGlvbjpfZHJhZ0ludGVyYWN0aW9uLmdldCgpXTsKICAgICBbc2VsZiBh
ZGRJbnRlcmFjdGlvbjpfZHJvcEludGVyYWN0aW9uLmdldCgpXTsKQEAgLTcwNDQsNyArNzA0NCw3
IEBAIC0gKHZvaWQpX2RpZFBlcmZvcm1EcmFnT3BlcmF0aW9uOihCT09MKWhhbmRsZWQKICAgICBb
W1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQgc2hhcmVkSW5zdGFuY2VdIGRlY3JlbWVudFBlbmRp
bmdPcGVyYXRpb25Db3VudF07CiAgICAgaWQgPFVJRHJvcFNlc3Npb24+IGRyb3BTZXNzaW9uID0g
X2RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5kcm9wU2Vzc2lvbigpOwogICAgIGlmIChbc2VsZi53
ZWJWaWV3VUlEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmRh
dGFJbnRlcmFjdGlvbk9wZXJhdGlvbldhc0hhbmRsZWQ6Zm9yU2Vzc2lvbjppdGVtUHJvdmlkZXJz
OildKQotICAgICAgICBbc2VsZi53ZWJWaWV3VUlEZWxlZ2F0ZSBfd2ViVmlldzpfd2ViVmlldyBk
YXRhSW50ZXJhY3Rpb25PcGVyYXRpb25XYXNIYW5kbGVkOmhhbmRsZWQgZm9yU2Vzc2lvbjpkcm9w
U2Vzc2lvbiBpdGVtUHJvdmlkZXJzOltXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIHNoYXJlZElu
c3RhbmNlXS5pdGVtUHJvdmlkZXJzXTsKKyAgICAgICAgW3NlbGYud2ViVmlld1VJRGVsZWdhdGUg
X3dlYlZpZXc6c2VsZi53ZWJWaWV3IGRhdGFJbnRlcmFjdGlvbk9wZXJhdGlvbldhc0hhbmRsZWQ6
aGFuZGxlZCBmb3JTZXNzaW9uOmRyb3BTZXNzaW9uIGl0ZW1Qcm92aWRlcnM6W1dlYkl0ZW1Qcm92
aWRlclBhc3RlYm9hcmQgc2hhcmVkSW5zdGFuY2VdLml0ZW1Qcm92aWRlcnNdOwogCiAgICAgQ0dQ
b2ludCBnbG9iYWw7CiAgICAgQ0dQb2ludCBjbGllbnQ7CkBAIC03MTM5LDcgKzcxMzksNyBAQCAt
IChXS0RyYWdEZXN0aW5hdGlvbkFjdGlvbilfZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uRm9yRHJvcFNl
c3Npb246KGlkIDxVSURyb3BTZXNzaQogewogICAgIGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPiB1
aURlbGVnYXRlID0gc2VsZi53ZWJWaWV3VUlEZWxlZ2F0ZTsKICAgICBpZiAoW3VpRGVsZWdhdGUg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpkcmFnRGVzdGluYXRpb25BY3Rp
b25NYXNrRm9yRHJhZ2dpbmdJbmZvOildKQotICAgICAgICByZXR1cm4gW3VpRGVsZWdhdGUgX3dl
YlZpZXc6X3dlYlZpZXcgZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFza0ZvckRyYWdnaW5nSW5mbzpz
ZXNzaW9uXTsKKyAgICAgICAgcmV0dXJuIFt1aURlbGVnYXRlIF93ZWJWaWV3OnNlbGYud2ViVmll
dyBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrRm9yRHJhZ2dpbmdJbmZvOnNlc3Npb25dOwogCiAg
ICAgcmV0dXJuIFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uQW55ICYgfldLRHJhZ0Rlc3RpbmF0aW9u
QWN0aW9uTG9hZDsKIH0KQEAgLTcxOTMsNyArNzE5Myw3IEBAIC0gKE5TQXJyYXk8VUlEcmFnSXRl
bSAqPiAqKV9pdGVtc0ZvckJlZ2lubmluZ09yQWRkaW5nVG9TZXNzaW9uV2l0aFJlZ2lzdHJhdGlv
bkxpCiAgICAgICAgICAgICAgICAgaWYgKFtpdGVtIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0
b3IodHlwZUlkZW50aWZpZXJGb3JDbGllbnQpXSAmJiBbaXRlbSByZXNwb25kc1RvU2VsZWN0b3I6
QHNlbGVjdG9yKGRhdGFGb3JDbGllbnQpXSkKICAgICAgICAgICAgICAgICAgICAgW2FkZGl0aW9u
YWxEYXRhIHNldE9iamVjdDppdGVtLmRhdGFGb3JDbGllbnQgZm9yS2V5Oml0ZW0udHlwZUlkZW50
aWZpZXJGb3JDbGllbnRdOwogICAgICAgICAgICAgfV07Ci0gICAgICAgICAgICBOU0FycmF5ICph
ZGp1c3RlZEl0ZW1zID0gW3VpRGVsZWdhdGUgX3dlYlZpZXc6X3dlYlZpZXcgYWRqdXN0ZWREYXRh
SW50ZXJhY3Rpb25JdGVtUHJvdmlkZXJzRm9ySXRlbVByb3ZpZGVyOmRlZmF1bHRJdGVtUHJvdmlk
ZXIgcmVwcmVzZW50aW5nT2JqZWN0czpyZXByZXNlbnRpbmdPYmplY3RzLmdldCgpIGFkZGl0aW9u
YWxEYXRhOmFkZGl0aW9uYWxEYXRhLmdldCgpXTsKKyAgICAgICAgICAgIE5TQXJyYXkgKmFkanVz
dGVkSXRlbXMgPSBbdWlEZWxlZ2F0ZSBfd2ViVmlldzpzZWxmLndlYlZpZXcgYWRqdXN0ZWREYXRh
SW50ZXJhY3Rpb25JdGVtUHJvdmlkZXJzRm9ySXRlbVByb3ZpZGVyOmRlZmF1bHRJdGVtUHJvdmlk
ZXIgcmVwcmVzZW50aW5nT2JqZWN0czpyZXByZXNlbnRpbmdPYmplY3RzLmdldCgpIGFkZGl0aW9u
YWxEYXRhOmFkZGl0aW9uYWxEYXRhLmdldCgpXTsKICAgICAgICAgICAgIGlmIChhZGp1c3RlZEl0
ZW1zLmNvdW50KQogICAgICAgICAgICAgICAgIFthZGp1c3RlZEl0ZW1Qcm92aWRlcnMgYWRkT2Jq
ZWN0c0Zyb21BcnJheTphZGp1c3RlZEl0ZW1zXTsKICAgICAgICAgfQpAQCAtNzMyOCw3ICs3MzI4
LDcgQEAgc3RhdGljIFZlY3RvcjxXZWJDb3JlOjpJbnRTaXplPiBzaXplc09mUGxhY2Vob2xkZXJF
bGVtZW50c1RvSW5zZXJ0V2hlbkRyb3BwaW5nSXQKIAogLSAoQk9PTClfaGFuZGxlRHJvcEJ5SW5z
ZXJ0aW5nSW1hZ2VQbGFjZWhvbGRlcnM6KE5TQXJyYXk8TlNJdGVtUHJvdmlkZXIgKj4gKilpdGVt
UHJvdmlkZXJzIHNlc3Npb246KGlkIDxVSURyb3BTZXNzaW9uPilzZXNzaW9uCiB7Ci0gICAgaWYg
KCFfd2ViVmlldy5fZWRpdGFibGUpCisgICAgaWYgKCFzZWxmLndlYlZpZXcuX2VkaXRhYmxlKQog
ICAgICAgICByZXR1cm4gTk87CiAKICAgICBpZiAoX2RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5k
cmFnU2Vzc2lvbigpKQpAQCAtNzM5NSw3ICs3Mzk1LDcgQEAgLSAoTlNJbnRlZ2VyKV9kcmFnSW50
ZXJhY3Rpb246KFVJRHJhZ0ludGVyYWN0aW9uICopaW50ZXJhY3Rpb24gZGF0YU93bmVyRm9yU2Vz
c2kKICAgICBpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4gdWlEZWxlZ2F0ZSA9IHNlbGYud2ViVmll
d1VJRGVsZWdhdGU7CiAgICAgTlNJbnRlZ2VyIGRhdGFPd25lciA9IDA7CiAgICAgaWYgKFt1aURl
bGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6ZGF0YU93bmVyRm9y
RHJhZ1Nlc3Npb246KV0pCi0gICAgICAgIGRhdGFPd25lciA9IFt1aURlbGVnYXRlIF93ZWJWaWV3
Ol93ZWJWaWV3IGRhdGFPd25lckZvckRyYWdTZXNzaW9uOnNlc3Npb25dOworICAgICAgICBkYXRh
T3duZXIgPSBbdWlEZWxlZ2F0ZSBfd2ViVmlldzpzZWxmLndlYlZpZXcgZGF0YU93bmVyRm9yRHJh
Z1Nlc3Npb246c2Vzc2lvbl07CiAgICAgcmV0dXJuIGRhdGFPd25lcjsKIH0KIApAQCAtNzQ2Miw3
ICs3NDYyLDcgQEAgLSAoVUlUYXJnZXRlZERyYWdQcmV2aWV3ICopZHJhZ0ludGVyYWN0aW9uOihV
SURyYWdJbnRlcmFjdGlvbiAqKWludGVyYWN0aW9uIHByZXYKIHsKICAgICBpZCA8V0tVSURlbGVn
YXRlUHJpdmF0ZT4gdWlEZWxlZ2F0ZSA9IHNlbGYud2ViVmlld1VJRGVsZWdhdGU7CiAgICAgaWYg
KFt1aURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6cHJldmll
d0ZvckxpZnRpbmdJdGVtOnNlc3Npb246KV0pIHsKLSAgICAgICAgVUlUYXJnZXRlZERyYWdQcmV2
aWV3ICpvdmVycmlkZGVuUHJldmlldyA9IFt1aURlbGVnYXRlIF93ZWJWaWV3Ol93ZWJWaWV3IHBy
ZXZpZXdGb3JMaWZ0aW5nSXRlbTppdGVtIHNlc3Npb246c2Vzc2lvbl07CisgICAgICAgIFVJVGFy
Z2V0ZWREcmFnUHJldmlldyAqb3ZlcnJpZGRlblByZXZpZXcgPSBbdWlEZWxlZ2F0ZSBfd2ViVmll
dzpzZWxmLndlYlZpZXcgcHJldmlld0ZvckxpZnRpbmdJdGVtOml0ZW0gc2Vzc2lvbjpzZXNzaW9u
XTsKICAgICAgICAgaWYgKG92ZXJyaWRkZW5QcmV2aWV3KQogICAgICAgICAgICAgcmV0dXJuIG92
ZXJyaWRkZW5QcmV2aWV3OwogICAgIH0KQEAgLTc1MDIsNyArNzUwMiw3IEBAIC0gKHZvaWQpZHJh
Z0ludGVyYWN0aW9uOihVSURyYWdJbnRlcmFjdGlvbiAqKWludGVyYWN0aW9uIHNlc3Npb25XaWxs
QmVnaW46KGlkIDxVCiAgICAgUkVMRUFTRV9MT0coRHJhZ0FuZERyb3AsICJEcmFnIHNlc3Npb24g
YmVnaW5uaW5nOiAlcCIsIHNlc3Npb24pOwogICAgIGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPiB1
aURlbGVnYXRlID0gc2VsZi53ZWJWaWV3VUlEZWxlZ2F0ZTsKICAgICBpZiAoW3VpRGVsZWdhdGUg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpkYXRhSW50ZXJhY3Rpb246c2Vz
c2lvbldpbGxCZWdpbjopXSkKLSAgICAgICAgW3VpRGVsZWdhdGUgX3dlYlZpZXc6X3dlYlZpZXcg
ZGF0YUludGVyYWN0aW9uOmludGVyYWN0aW9uIHNlc3Npb25XaWxsQmVnaW46c2Vzc2lvbl07Cisg
ICAgICAgIFt1aURlbGVnYXRlIF93ZWJWaWV3OnNlbGYud2ViVmlldyBkYXRhSW50ZXJhY3Rpb246
aW50ZXJhY3Rpb24gc2Vzc2lvbldpbGxCZWdpbjpzZXNzaW9uXTsKIAogICAgIFtfYWN0aW9uU2hl
ZXRBc3Npc3RhbnQgY2xlYW51cFNoZWV0XTsKICAgICBfZHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRl
LmRyYWdTZXNzaW9uV2lsbEJlZ2luKCk7CkBAIC03NTE3LDcgKzc1MTcsNyBAQCAtICh2b2lkKWRy
YWdJbnRlcmFjdGlvbjooVUlEcmFnSW50ZXJhY3Rpb24gKilpbnRlcmFjdGlvbiBzZXNzaW9uOihp
ZCA8VUlEcmFnU2VzcwogCiAgICAgaWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+IHVpRGVsZWdhdGUg
PSBzZWxmLndlYlZpZXdVSURlbGVnYXRlOwogICAgIGlmIChbdWlEZWxlZ2F0ZSByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmRhdGFJbnRlcmFjdGlvbjpzZXNzaW9uOmRpZEVu
ZFdpdGhPcGVyYXRpb246KV0pCi0gICAgICAgIFt1aURlbGVnYXRlIF93ZWJWaWV3Ol93ZWJWaWV3
IGRhdGFJbnRlcmFjdGlvbjppbnRlcmFjdGlvbiBzZXNzaW9uOnNlc3Npb24gZGlkRW5kV2l0aE9w
ZXJhdGlvbjpvcGVyYXRpb25dOworICAgICAgICBbdWlEZWxlZ2F0ZSBfd2ViVmlldzpzZWxmLndl
YlZpZXcgZGF0YUludGVyYWN0aW9uOmludGVyYWN0aW9uIHNlc3Npb246c2Vzc2lvbiBkaWRFbmRX
aXRoT3BlcmF0aW9uOm9wZXJhdGlvbl07CiAKICAgICBpZiAoX2RyYWdEcm9wSW50ZXJhY3Rpb25T
dGF0ZS5pc1BlcmZvcm1pbmdEcm9wKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTc1MzAsNyArNzUz
MCw3IEBAIC0gKFVJVGFyZ2V0ZWREcmFnUHJldmlldyAqKWRyYWdJbnRlcmFjdGlvbjooVUlEcmFn
SW50ZXJhY3Rpb24gKilpbnRlcmFjdGlvbiBwcmV2CiB7CiAgICAgaWQgPFdLVUlEZWxlZ2F0ZVBy
aXZhdGU+IHVpRGVsZWdhdGUgPSBzZWxmLndlYlZpZXdVSURlbGVnYXRlOwogICAgIGlmIChbdWlE
ZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnByZXZpZXdGb3JD
YW5jZWxsaW5nSXRlbTp3aXRoRGVmYXVsdDopXSkgewotICAgICAgICBVSVRhcmdldGVkRHJhZ1By
ZXZpZXcgKm92ZXJyaWRkZW5QcmV2aWV3ID0gW3VpRGVsZWdhdGUgX3dlYlZpZXc6X3dlYlZpZXcg
cHJldmlld0ZvckNhbmNlbGxpbmdJdGVtOml0ZW0gd2l0aERlZmF1bHQ6ZGVmYXVsdFByZXZpZXdd
OworICAgICAgICBVSVRhcmdldGVkRHJhZ1ByZXZpZXcgKm92ZXJyaWRkZW5QcmV2aWV3ID0gW3Vp
RGVsZWdhdGUgX3dlYlZpZXc6c2VsZi53ZWJWaWV3IHByZXZpZXdGb3JDYW5jZWxsaW5nSXRlbTpp
dGVtIHdpdGhEZWZhdWx0OmRlZmF1bHRQcmV2aWV3XTsKICAgICAgICAgaWYgKG92ZXJyaWRkZW5Q
cmV2aWV3KQogICAgICAgICAgICAgcmV0dXJuIG92ZXJyaWRkZW5QcmV2aWV3OwogICAgIH0KQEAg
LTc1NjksNyArNzU2OSw3IEBAIC0gKE5TSW50ZWdlcilfZHJvcEludGVyYWN0aW9uOihVSURyb3BJ
bnRlcmFjdGlvbiAqKWludGVyYWN0aW9uIGRhdGFPd25lckZvclNlc3NpCiAgICAgaWQgPFdLVUlE
ZWxlZ2F0ZVByaXZhdGU+IHVpRGVsZWdhdGUgPSBzZWxmLndlYlZpZXdVSURlbGVnYXRlOwogICAg
IE5TSW50ZWdlciBkYXRhT3duZXIgPSAwOwogICAgIGlmIChbdWlEZWxlZ2F0ZSByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmRhdGFPd25lckZvckRyb3BTZXNzaW9uOildKQot
ICAgICAgICBkYXRhT3duZXIgPSBbdWlEZWxlZ2F0ZSBfd2ViVmlldzpfd2ViVmlldyBkYXRhT3du
ZXJGb3JEcm9wU2Vzc2lvbjpzZXNzaW9uXTsKKyAgICAgICAgZGF0YU93bmVyID0gW3VpRGVsZWdh
dGUgX3dlYlZpZXc6c2VsZi53ZWJWaWV3IGRhdGFPd25lckZvckRyb3BTZXNzaW9uOnNlc3Npb25d
OwogICAgIHJldHVybiBkYXRhT3duZXI7CiB9CiAKQEAgLTc2MDQsNyArNzYwNCw3IEBAIC0gKFVJ
RHJvcFByb3Bvc2FsICopZHJvcEludGVyYWN0aW9uOihVSURyb3BJbnRlcmFjdGlvbiAqKWludGVy
YWN0aW9uIHNlc3Npb25EaWRVCiAgICAgYXV0byBkZWxlZ2F0ZSA9IHNlbGYud2ViVmlld1VJRGVs
ZWdhdGU7CiAgICAgYXV0byBvcGVyYXRpb24gPSBkcm9wT3BlcmF0aW9uRm9yV2ViQ29yZURyYWdP
cGVyYXRpb24oX3BhZ2UtPmN1cnJlbnREcmFnT3BlcmF0aW9uKCkpOwogICAgIGlmIChbZGVsZWdh
dGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzp3aWxsVXBkYXRlRGF0YUlu
dGVyYWN0aW9uT3BlcmF0aW9uVG9PcGVyYXRpb246Zm9yU2Vzc2lvbjopXSkKLSAgICAgICAgb3Bl
cmF0aW9uID0gc3RhdGljX2Nhc3Q8VUlEcm9wT3BlcmF0aW9uPihbZGVsZWdhdGUgX3dlYlZpZXc6
X3dlYlZpZXcgd2lsbFVwZGF0ZURhdGFJbnRlcmFjdGlvbk9wZXJhdGlvblRvT3BlcmF0aW9uOm9w
ZXJhdGlvbiBmb3JTZXNzaW9uOnNlc3Npb25dKTsKKyAgICAgICAgb3BlcmF0aW9uID0gc3RhdGlj
X2Nhc3Q8VUlEcm9wT3BlcmF0aW9uPihbZGVsZWdhdGUgX3dlYlZpZXc6c2VsZi53ZWJWaWV3IHdp
bGxVcGRhdGVEYXRhSW50ZXJhY3Rpb25PcGVyYXRpb25Ub09wZXJhdGlvbjpvcGVyYXRpb24gZm9y
U2Vzc2lvbjpzZXNzaW9uXSk7CiAKICAgICBhdXRvIHByb3Bvc2FsID0gYWRvcHROUyhbW1VJRHJv
cFByb3Bvc2FsIGFsbG9jXSBpbml0V2l0aERyb3BPcGVyYXRpb246c3RhdGljX2Nhc3Q8VUlEcm9w
T3BlcmF0aW9uPihvcGVyYXRpb24pXSk7CiAgICAgYXV0byBkcmFnSGFuZGxpbmdNZXRob2QgPSBf
cGFnZS0+Y3VycmVudERyYWdIYW5kbGluZ01ldGhvZCgpOwpAQCAtNzYxMywxMyArNzYxMywxMyBA
QCAtIChVSURyb3BQcm9wb3NhbCAqKWRyb3BJbnRlcmFjdGlvbjooVUlEcm9wSW50ZXJhY3Rpb24g
KilpbnRlcmFjdGlvbiBzZXNzaW9uRGlkVQogICAgICAgICAvLyBlbGVtZW50LCBjYXVzaW5nIHRo
ZSBkcmFnIHRvIG5vIGxvbmdlciBiZSBhY2NlcHRlZC4gVGhpcyBpbiB0dXJuIGRpc2FibGVzIHBy
ZWNpc2lvbiBkcm9wIG1vZGUsIHdoaWNoIGNhdXNlcyB0aGUgZHJhZyBzZXNzaW9uIHRvIGhpdC10
ZXN0IGluc2lkZSBvZiB0aGUgZWRpdGFibGUKICAgICAgICAgLy8gZWxlbWVudCBhZ2Fpbiwgd2hp
Y2ggZW5hYmxlcyBwcmVjaXNpb24gbW9kZSwgdGh1cyBjb250aW51aW5nIHRoZSBjeWNsZS4gVG8g
YXZvaWQgcHJlY2lzaW9uIG1vZGUgdGhyYXNoaW5nLCB3ZSBmb3JiaWQgcHJlY2lzaW9uIG1vZGUg
d2hlbiBkcmFnZ2luZyBuZWFyIHRoZSB0b3Agb3IKICAgICAgICAgLy8gYm90dG9tIG9mIHRoZSBl
ZGl0YWJsZSBlbGVtZW50LgotICAgICAgICBhdXRvIG1pbmltdW1EaXN0YW5jZUZyb21WZXJ0aWNh
bEVkZ2VGb3JQcmVjaXNlRHJvcCA9IDI1IC8gX3dlYlZpZXcuc2Nyb2xsVmlldy56b29tU2NhbGU7
CisgICAgICAgIGF1dG8gbWluaW11bURpc3RhbmNlRnJvbVZlcnRpY2FsRWRnZUZvclByZWNpc2VE
cm9wID0gMjUgLyBzZWxmLndlYlZpZXcuc2Nyb2xsVmlldy56b29tU2NhbGU7CiAgICAgICAgIFtw
cm9wb3NhbCBzZXRQcmVjaXNlOkNHUmVjdENvbnRhaW5zUG9pbnQoQ0dSZWN0SW5zZXQoX3BhZ2Ut
PmN1cnJlbnREcmFnQ2FyZXRFZGl0YWJsZUVsZW1lbnRSZWN0KCksIDAsIG1pbmltdW1EaXN0YW5j
ZUZyb21WZXJ0aWNhbEVkZ2VGb3JQcmVjaXNlRHJvcCksIFtzZXNzaW9uIGxvY2F0aW9uSW5WaWV3
OnNlbGZdKV07CiAgICAgfSBlbHNlCiAgICAgICAgIFtwcm9wb3NhbCBzZXRQcmVjaXNlOk5PXTsK
IAogICAgIGlmIChbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmll
dzp3aWxsVXBkYXRlRHJvcFByb3Bvc2FsVG9Qcm9wb3NhbDpmb3JTZXNzaW9uOildKQotICAgICAg
ICBwcm9wb3NhbCA9IFtkZWxlZ2F0ZSBfd2ViVmlldzpfd2ViVmlldyB3aWxsVXBkYXRlRHJvcFBy
b3Bvc2FsVG9Qcm9wb3NhbDpwcm9wb3NhbC5nZXQoKSBmb3JTZXNzaW9uOnNlc3Npb25dOworICAg
ICAgICBwcm9wb3NhbCA9IFtkZWxlZ2F0ZSBfd2ViVmlldzpzZWxmLndlYlZpZXcgd2lsbFVwZGF0
ZURyb3BQcm9wb3NhbFRvUHJvcG9zYWw6cHJvcG9zYWwuZ2V0KCkgZm9yU2Vzc2lvbjpzZXNzaW9u
XTsKIAogICAgIHJldHVybiBwcm9wb3NhbC5hdXRvcmVsZWFzZSgpOwogfQpAQCAtNzY0MSwxMiAr
NzY0MSwxMiBAQCAtICh2b2lkKWRyb3BJbnRlcmFjdGlvbjooVUlEcm9wSW50ZXJhY3Rpb24gKilp
bnRlcmFjdGlvbiBwZXJmb3JtRHJvcDooaWQgPFVJRHJvcAogICAgIE5TQXJyYXkgPE5TSXRlbVBy
b3ZpZGVyICo+ICppdGVtUHJvdmlkZXJzID0gZXh0cmFjdEl0ZW1Qcm92aWRlcnNGcm9tRHJvcFNl
c3Npb24oc2Vzc2lvbik7CiAgICAgaWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+IHVpRGVsZWdhdGUg
PSBzZWxmLndlYlZpZXdVSURlbGVnYXRlOwogICAgIGlmIChbdWlEZWxlZ2F0ZSByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnBlcmZvcm1EYXRhSW50ZXJhY3Rpb25PcGVyYXRp
b25XaXRoSXRlbVByb3ZpZGVyczopXSkgewotICAgICAgICBpZiAoW3VpRGVsZWdhdGUgX3dlYlZp
ZXc6X3dlYlZpZXcgcGVyZm9ybURhdGFJbnRlcmFjdGlvbk9wZXJhdGlvbldpdGhJdGVtUHJvdmlk
ZXJzOml0ZW1Qcm92aWRlcnNdKQorICAgICAgICBpZiAoW3VpRGVsZWdhdGUgX3dlYlZpZXc6c2Vs
Zi53ZWJWaWV3IHBlcmZvcm1EYXRhSW50ZXJhY3Rpb25PcGVyYXRpb25XaXRoSXRlbVByb3ZpZGVy
czppdGVtUHJvdmlkZXJzXSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAo
W3VpRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzp3aWxsUGVy
Zm9ybURyb3BXaXRoU2Vzc2lvbjopXSkgewotICAgICAgICBpdGVtUHJvdmlkZXJzID0gZXh0cmFj
dEl0ZW1Qcm92aWRlcnNGcm9tRHJhZ0l0ZW1zKFt1aURlbGVnYXRlIF93ZWJWaWV3Ol93ZWJWaWV3
IHdpbGxQZXJmb3JtRHJvcFdpdGhTZXNzaW9uOnNlc3Npb25dKTsKKyAgICAgICAgaXRlbVByb3Zp
ZGVycyA9IGV4dHJhY3RJdGVtUHJvdmlkZXJzRnJvbURyYWdJdGVtcyhbdWlEZWxlZ2F0ZSBfd2Vi
VmlldzpzZWxmLndlYlZpZXcgd2lsbFBlcmZvcm1Ecm9wV2l0aFNlc3Npb246c2Vzc2lvbl0pOwog
ICAgICAgICBpZiAoIWl0ZW1Qcm92aWRlcnMuY291bnQpCiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgfQpAQCAtNzc1MCw5ICs3NzUwLDkgQEAgLSAodm9pZClkaXNtaXNzUXVpY2tib2FyZFZpZXdD
b250cm9sbGVyQW5kUmV2ZWFsRm9jdXNlZEZvcm1PdmVybGF5SWZOZWNlc3Nhcnk6KFAKIHsKICAg
ICBCT09MIHNob3VsZFJldmVhbEZvY3VzT3ZlcmxheSA9IE5POwogICAgIC8vIEluIHRoZSBjYXNl
IHdoZXJlIHRoZXJlJ3Mgbm90aGluZyB0aGUgdXNlciBjb3VsZCBwb3RlbnRpYWxseSBkbyBiZXNp
ZGVzIGRpc21pc3MgdGhlIG92ZXJsYXksIHdlIGNhbiBqdXN0IGF1dG9tYXRpY2FsbHkgd2l0aG91
dCBhc2tpbmcgdGhlIGRlbGVnYXRlLgotICAgIGlmIChbX3dlYlZpZXcuX2lucHV0RGVsZWdhdGUg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpzaG91bGRSZXZlYWxGb2N1c092
ZXJsYXlGb3JJbnB1dFNlc3Npb246KV0KKyAgICBpZiAoW3NlbGYud2ViVmlldy5faW5wdXREZWxl
Z2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnNob3VsZFJldmVhbEZv
Y3VzT3ZlcmxheUZvcklucHV0U2Vzc2lvbjopXQogICAgICAgICAmJiAoW3NlbGYgYWN0aW9uTmFt
ZUZvckZvY3VzZWRGb3JtQ29udHJvbFZpZXc6X2ZvY3VzZWRGb3JtQ29udHJvbFZpZXcuZ2V0KCld
IHx8IF9mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmhhc05leHROb2RlIHx8IF9mb2N1c2VkRWxl
bWVudEluZm9ybWF0aW9uLmhhc1ByZXZpb3VzTm9kZSkpCi0gICAgICAgIHNob3VsZFJldmVhbEZv
Y3VzT3ZlcmxheSA9IFtfd2ViVmlldy5faW5wdXREZWxlZ2F0ZSBfd2ViVmlldzpfd2ViVmlldyBz
aG91bGRSZXZlYWxGb2N1c092ZXJsYXlGb3JJbnB1dFNlc3Npb246X2Zvcm1JbnB1dFNlc3Npb24u
Z2V0KCldOworICAgICAgICBzaG91bGRSZXZlYWxGb2N1c092ZXJsYXkgPSBbc2VsZi53ZWJWaWV3
Ll9pbnB1dERlbGVnYXRlIF93ZWJWaWV3OnNlbGYud2ViVmlldyBzaG91bGRSZXZlYWxGb2N1c092
ZXJsYXlGb3JJbnB1dFNlc3Npb246X2Zvcm1JbnB1dFNlc3Npb24uZ2V0KCldOwogCiAgICAgaWYg
KHNob3VsZFJldmVhbEZvY3VzT3ZlcmxheSkgewogICAgICAgICBbX2ZvY3VzZWRGb3JtQ29udHJv
bFZpZXcgc2hvdzpOT107CkBAIC03Nzk0LDExICs3Nzk0LDExIEBAIC0gKHZvaWQpcXVpY2tib2Fy
ZElucHV0Q2FuY2VsbGVkOihQVUlDUXVpY2tib2FyZFZpZXdDb250cm9sbGVyICopcXVpY2tib2Fy
ZAogCiAtIChDR0Zsb2F0KXZpZXdDb250cm9sbGVyOihQVUlDUXVpY2tib2FyZFZpZXdDb250cm9s
bGVyICopY29udHJvbGxlciBpbnB1dENvbnRleHRWaWV3SGVpZ2h0Rm9yU2l6ZTooQ0dTaXplKXNp
emUKIHsKLSAgICBpZCA8X1dLSW5wdXREZWxlZ2F0ZT4gZGVsZWdhdGUgPSBfd2ViVmlldy5faW5w
dXREZWxlZ2F0ZTsKKyAgICBpZCA8X1dLSW5wdXREZWxlZ2F0ZT4gZGVsZWdhdGUgPSBzZWxmLndl
YlZpZXcuX2lucHV0RGVsZWdhdGU7CiAgICAgaWYgKCFbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3Rvcihfd2ViVmlldzpmb2N1c2VkRWxlbWVudENvbnRleHRWaWV3SGVpZ2h0Rm9y
Rml0dGluZ1NpemU6aW5wdXRTZXNzaW9uOildKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJl
dHVybiBbZGVsZWdhdGUgX3dlYlZpZXc6X3dlYlZpZXcgZm9jdXNlZEVsZW1lbnRDb250ZXh0Vmll
d0hlaWdodEZvckZpdHRpbmdTaXplOnNpemUgaW5wdXRTZXNzaW9uOl9mb3JtSW5wdXRTZXNzaW9u
LmdldCgpXTsKKyAgICByZXR1cm4gW2RlbGVnYXRlIF93ZWJWaWV3OnNlbGYud2ViVmlldyBmb2N1
c2VkRWxlbWVudENvbnRleHRWaWV3SGVpZ2h0Rm9yRml0dGluZ1NpemU6c2l6ZSBpbnB1dFNlc3Np
b246X2Zvcm1JbnB1dFNlc3Npb24uZ2V0KCldOwogfQogCiAtIChCT09MKWFsbG93c0xhbmd1YWdl
U2VsZWN0aW9uTWVudUZvckxpc3RWaWV3Q29udHJvbGxlcjooUFVJQ1F1aWNrYm9hcmRWaWV3Q29u
dHJvbGxlciAqKWNvbnRyb2xsZXIKQEAgLTc4MTgsMTEgKzc4MTgsMTEgQEAgLSAoQk9PTClhbGxv
d3NMYW5ndWFnZVNlbGVjdGlvbk1lbnVGb3JMaXN0Vmlld0NvbnRyb2xsZXI6KFBVSUNRdWlja2Jv
YXJkVmlld0NvbnQKIAogLSAoVUlWaWV3ICopaW5wdXRDb250ZXh0Vmlld0ZvclZpZXdDb250cm9s
bGVyOihQVUlDUXVpY2tib2FyZFZpZXdDb250cm9sbGVyICopY29udHJvbGxlcgogewotICAgIGlk
IDxfV0tJbnB1dERlbGVnYXRlPiBkZWxlZ2F0ZSA9IF93ZWJWaWV3Ll9pbnB1dERlbGVnYXRlOwor
ICAgIGlkIDxfV0tJbnB1dERlbGVnYXRlPiBkZWxlZ2F0ZSA9IHNlbGYud2ViVmlldy5faW5wdXRE
ZWxlZ2F0ZTsKICAgICBpZiAoIVtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KF93ZWJWaWV3OmZvY3VzZWRFbGVtZW50Q29udGV4dFZpZXdGb3JJbnB1dFNlc3Npb246KV0pCiAg
ICAgICAgIHJldHVybiBuaWw7CiAKLSAgICByZXR1cm4gW2RlbGVnYXRlIF93ZWJWaWV3Ol93ZWJW
aWV3IGZvY3VzZWRFbGVtZW50Q29udGV4dFZpZXdGb3JJbnB1dFNlc3Npb246X2Zvcm1JbnB1dFNl
c3Npb24uZ2V0KCldOworICAgIHJldHVybiBbZGVsZWdhdGUgX3dlYlZpZXc6c2VsZi53ZWJWaWV3
IGZvY3VzZWRFbGVtZW50Q29udGV4dFZpZXdGb3JJbnB1dFNlc3Npb246X2Zvcm1JbnB1dFNlc3Np
b24uZ2V0KCldOwogfQogCiAtIChOU1N0cmluZyAqKWlucHV0TGFiZWxUZXh0Rm9yVmlld0NvbnRy
b2xsZXI6KFBVSUNRdWlja2JvYXJkVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyCkBAIC04MTEy
LDcgKzgxMTIsNyBAQCBAaW1wbGVtZW50YXRpb24gV0tDb250ZW50VmlldyAoV0tJbnRlcmFjdGlv
blByZXZpZXcpCiAKIC0gKHZvaWQpX3JlZ2lzdGVyUHJldmlldwogewotICAgIGlmICghX3dlYlZp
ZXcuYWxsb3dzTGlua1ByZXZpZXcpCisgICAgaWYgKCFzZWxmLndlYlZpZXcuYWxsb3dzTGlua1By
ZXZpZXcpCiAgICAgICAgIHJldHVybjsKIAogI2lmIFVTRShVSUNPTlRFWFRNRU5VKQpAQCAtODEy
MSw3ICs4MTIxLDcgQEAgLSAodm9pZClfcmVnaXN0ZXJQcmV2aWV3CiAgICAgICAgIF9jb250ZXh0
TWVudUhhc1JlcXVlc3RlZExlZ2FjeURhdGEgPSBOTzsKICAgICAgICAgW3NlbGYgYWRkSW50ZXJh
Y3Rpb246X2NvbnRleHRNZW51SW50ZXJhY3Rpb24uZ2V0KCldOwogCi0gICAgICAgIGlmIChpZDxf
VUlDbGlja0ludGVyYWN0aW9uRHJpdmluZz4gZHJpdmVyID0gX3dlYlZpZXcuY29uZmlndXJhdGlv
bi5fY2xpY2tJbnRlcmFjdGlvbkRyaXZlckZvclRlc3RpbmcpIHsKKyAgICAgICAgaWYgKGlkPF9V
SUNsaWNrSW50ZXJhY3Rpb25Ecml2aW5nPiBkcml2ZXIgPSBzZWxmLndlYlZpZXcuY29uZmlndXJh
dGlvbi5fY2xpY2tJbnRlcmFjdGlvbkRyaXZlckZvclRlc3RpbmcpIHsKICAgICAgICAgICAgIF9V
SUNsaWNrSW50ZXJhY3Rpb24gKnByZXZpZXdDbGlja0ludGVyYWN0aW9uID0gW1tfY29udGV4dE1l
bnVJbnRlcmFjdGlvbiBwcmVzZW50YXRpb25JbnRlcmFjdGlvbl0gcHJldmlld0NsaWNrSW50ZXJh
Y3Rpb25dOwogICAgICAgICAgICAgW3ByZXZpZXdDbGlja0ludGVyYWN0aW9uIHNldERyaXZlcjpk
cml2ZXJdOwogICAgICAgICAgICAgW2RyaXZlciBzZXREZWxlZ2F0ZTooaWQ8X1VJQ2xpY2tJbnRl
cmFjdGlvbkRyaXZlckRlbGVnYXRlPilwcmV2aWV3Q2xpY2tJbnRlcmFjdGlvbl07CkBAIC04MjU2
LDcgKzgyNTYsNyBAQCAtICh2b2lkKWFzc2lnbkxlZ2FjeURhdGFGb3JDb250ZXh0TWVudUludGVy
YWN0aW9uCiAKICAgICBpZiAoIV93ZWJWaWV3KQogICAgICAgICByZXR1cm47Ci0gICAgYXV0byB1
aURlbGVnYXRlID0gc3RhdGljX2Nhc3Q8aWQ8V0tVSURlbGVnYXRlUHJpdmF0ZT4+KF93ZWJWaWV3
LlVJRGVsZWdhdGUpOworICAgIGF1dG8gdWlEZWxlZ2F0ZSA9IHN0YXRpY19jYXN0PGlkPFdLVUlE
ZWxlZ2F0ZVByaXZhdGU+PihzZWxmLndlYlZpZXcuVUlEZWxlZ2F0ZSk7CiAgICAgaWYgKCF1aURl
bGVnYXRlKQogICAgICAgICByZXR1cm47CiAKQEAgLTgyODAsMTEgKzgyODAsMTEgQEAgLSAodm9p
ZClhc3NpZ25MZWdhY3lEYXRhRm9yQ29udGV4dE1lbnVJbnRlcmFjdGlvbgogICAgICAgICAgICAg
YXV0byBkZWZhdWx0QWN0aW9ucyA9IHdrTGVnYWN5UHJldmlld0FjdGlvbnNGcm9tRWxlbWVudEFj
dGlvbnMoZGVmYXVsdEFjdGlvbnNGcm9tQXNzaXN0YW50LmdldCgpLCBlbGVtZW50SW5mby5nZXQo
KSk7CiAgICAgICAgICAgICBhdXRvIHByZXZpZXdFbGVtZW50SW5mbyA9IGFkb3B0TlMoW1tXS1By
ZXZpZXdFbGVtZW50SW5mbyBhbGxvY10gX2luaXRXaXRoTGlua1VSTDp1cmxdKTsKICAgICAgICAg
ICAgIC8vIEZJWE1FOiBDbGllbnRzIHVzaW5nIHRoaXMgbGVnYWN5IEFQSSB3aWxsIGFsd2F5cyBz
aG93IHRoZWlyIHByZXZpZXdWaWV3Q29udHJvbGxlciBhbmQgaWdub3JlIF9zaG93TGlua1ByZXZp
ZXdzLgotICAgICAgICAgICAgcHJldmlld1ZpZXdDb250cm9sbGVyID0gW3VpRGVsZWdhdGUgd2Vi
Vmlldzpfd2ViVmlldyBwcmV2aWV3aW5nVmlld0NvbnRyb2xsZXJGb3JFbGVtZW50OnByZXZpZXdF
bGVtZW50SW5mby5nZXQoKSBkZWZhdWx0QWN0aW9uczpkZWZhdWx0QWN0aW9uc107CisgICAgICAg
ICAgICBwcmV2aWV3Vmlld0NvbnRyb2xsZXIgPSBbdWlEZWxlZ2F0ZSB3ZWJWaWV3OnNlbGYud2Vi
VmlldyBwcmV2aWV3aW5nVmlld0NvbnRyb2xsZXJGb3JFbGVtZW50OnByZXZpZXdFbGVtZW50SW5m
by5nZXQoKSBkZWZhdWx0QWN0aW9uczpkZWZhdWx0QWN0aW9uc107CiAgICAgICAgIH0gZWxzZSBp
ZiAoW3VpRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpwcmV2
aWV3Vmlld0NvbnRyb2xsZXJGb3JVUkw6ZGVmYXVsdEFjdGlvbnM6ZWxlbWVudEluZm86KV0pCi0g
ICAgICAgICAgICBwcmV2aWV3Vmlld0NvbnRyb2xsZXIgPSBbdWlEZWxlZ2F0ZSBfd2ViVmlldzpf
d2ViVmlldyBwcmV2aWV3Vmlld0NvbnRyb2xsZXJGb3JVUkw6dXJsIGRlZmF1bHRBY3Rpb25zOmRl
ZmF1bHRBY3Rpb25zRnJvbUFzc2lzdGFudC5nZXQoKSBlbGVtZW50SW5mbzplbGVtZW50SW5mby5n
ZXQoKV07CisgICAgICAgICAgICBwcmV2aWV3Vmlld0NvbnRyb2xsZXIgPSBbdWlEZWxlZ2F0ZSBf
d2ViVmlldzpzZWxmLndlYlZpZXcgcHJldmlld1ZpZXdDb250cm9sbGVyRm9yVVJMOnVybCBkZWZh
dWx0QWN0aW9uczpkZWZhdWx0QWN0aW9uc0Zyb21Bc3Npc3RhbnQuZ2V0KCkgZWxlbWVudEluZm86
ZWxlbWVudEluZm8uZ2V0KCldOwogICAgICAgICBlbHNlIGlmIChbdWlEZWxlZ2F0ZSByZXNwb25k
c1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnByZXZpZXdWaWV3Q29udHJvbGxlckZvclVS
TDopXSkKLSAgICAgICAgICAgIHByZXZpZXdWaWV3Q29udHJvbGxlciA9IFt1aURlbGVnYXRlIF93
ZWJWaWV3Ol93ZWJWaWV3IHByZXZpZXdWaWV3Q29udHJvbGxlckZvclVSTDp1cmxdOworICAgICAg
ICAgICAgcHJldmlld1ZpZXdDb250cm9sbGVyID0gW3VpRGVsZWdhdGUgX3dlYlZpZXc6c2VsZi53
ZWJWaWV3IHByZXZpZXdWaWV3Q29udHJvbGxlckZvclVSTDp1cmxdOwogICAgICAgICBBTExPV19E
RVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogICAgICAgICAvLyBQcmV2aW91c2x5LCBVSVBy
ZXZpZXdJdGVtQ29udHJvbGxlciB3b3VsZCBkZXRlY3QgdGhlIGNhc2Ugd2hlcmUgdGhlcmUgd2Fz
IG5vIHByZXZpZXdWaWV3Q29udHJvbGxlcgpAQCAtODMxNywxOCArODMxNywxOCBAQCAtICh2b2lk
KWFzc2lnbkxlZ2FjeURhdGFGb3JDb250ZXh0TWVudUludGVyYWN0aW9uCiAKICAgICAgICAgaWYg
KFt1aURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6YWx0ZXJu
YXRlVVJMRnJvbUltYWdlOnVzZXJJbmZvOildKSB7CiAgICAgICAgICAgICBOU0RpY3Rpb25hcnkg
KnVzZXJJbmZvOwotICAgICAgICAgICAgbnNVUkwgPSBbdWlEZWxlZ2F0ZSBfd2ViVmlldzpfd2Vi
VmlldyBhbHRlcm5hdGVVUkxGcm9tSW1hZ2U6dWlJbWFnZS5nZXQoKSB1c2VySW5mbzomdXNlcklu
Zm9dOworICAgICAgICAgICAgbnNVUkwgPSBbdWlEZWxlZ2F0ZSBfd2ViVmlldzpzZWxmLndlYlZp
ZXcgYWx0ZXJuYXRlVVJMRnJvbUltYWdlOnVpSW1hZ2UuZ2V0KCkgdXNlckluZm86JnVzZXJJbmZv
XTsKICAgICAgICAgICAgIGltYWdlSW5mbyA9IHVzZXJJbmZvOwogICAgICAgICB9CiAKICAgICAg
ICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICAgICAgaWYgKFt1aURl
bGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6d2lsbFByZXZpZXdJ
bWFnZVdpdGhVUkw6KV0pCi0gICAgICAgICAgICBbdWlEZWxlZ2F0ZSBfd2ViVmlldzpfd2ViVmll
dyB3aWxsUHJldmlld0ltYWdlV2l0aFVSTDpfcG9zaXRpb25JbmZvcm1hdGlvbi5pbWFnZVVSTF07
CisgICAgICAgICAgICBbdWlEZWxlZ2F0ZSBfd2ViVmlldzpzZWxmLndlYlZpZXcgd2lsbFByZXZp
ZXdJbWFnZVdpdGhVUkw6X3Bvc2l0aW9uSW5mb3JtYXRpb24uaW1hZ2VVUkxdOwogCiAgICAgICAg
IFJldGFpblB0cjxOU0FycmF5PF9XS0VsZW1lbnRBY3Rpb24gKj4+IGRlZmF1bHRBY3Rpb25zRnJv
bUFzc2lzdGFudCA9IFtfYWN0aW9uU2hlZXRBc3Npc3RhbnQgZGVmYXVsdEFjdGlvbnNGb3JJbWFn
ZVNoZWV0OmVsZW1lbnRJbmZvLmdldCgpXTsKIAogICAgICAgICBpZiAoaW1hZ2VJbmZvICYmIFt1
aURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6cHJldmlld1Zp
ZXdDb250cm9sbGVyRm9ySW1hZ2U6YWx0ZXJuYXRlVVJMOmRlZmF1bHRBY3Rpb25zOmVsZW1lbnRJ
bmZvOildKQotICAgICAgICAgICAgcHJldmlld1ZpZXdDb250cm9sbGVyID0gW3VpRGVsZWdhdGUg
X3dlYlZpZXc6X3dlYlZpZXcgcHJldmlld1ZpZXdDb250cm9sbGVyRm9ySW1hZ2U6dWlJbWFnZS5n
ZXQoKSBhbHRlcm5hdGVVUkw6bnNVUkwgZGVmYXVsdEFjdGlvbnM6ZGVmYXVsdEFjdGlvbnNGcm9t
QXNzaXN0YW50LmdldCgpIGVsZW1lbnRJbmZvOmVsZW1lbnRJbmZvLmdldCgpXTsKKyAgICAgICAg
ICAgIHByZXZpZXdWaWV3Q29udHJvbGxlciA9IFt1aURlbGVnYXRlIF93ZWJWaWV3OnNlbGYud2Vi
VmlldyBwcmV2aWV3Vmlld0NvbnRyb2xsZXJGb3JJbWFnZTp1aUltYWdlLmdldCgpIGFsdGVybmF0
ZVVSTDpuc1VSTCBkZWZhdWx0QWN0aW9uczpkZWZhdWx0QWN0aW9uc0Zyb21Bc3Npc3RhbnQuZ2V0
KCkgZWxlbWVudEluZm86ZWxlbWVudEluZm8uZ2V0KCldOwogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICBwcmV2aWV3Vmlld0NvbnRyb2xsZXIgPSBbW1dLSW1hZ2VQcmV2aWV3Vmlld0NvbnRyb2xs
ZXIgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpjZ0ltYWdlIGRlZmF1bHRBY3Rpb25zOmRlZmF1bHRB
Y3Rpb25zRnJvbUFzc2lzdGFudC5nZXQoKSBlbGVtZW50SW5mbzplbGVtZW50SW5mby5nZXQoKV07
CiAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORApAQCAtODM1MSw3ICs4
MzUxLDcgQEAgLSAodm9pZClfY29udGV4dE1lbnVJbnRlcmFjdGlvbjooVUlDb250ZXh0TWVudUlu
dGVyYWN0aW9uICopaW50ZXJhY3Rpb24gY29uZmlndXIKICAgICBpZiAoIV93ZWJWaWV3KQogICAg
ICAgICByZXR1cm4gY29tcGxldGlvbihuaWwpOwogCi0gICAgaWYgKCFfd2ViVmlldy5jb25maWd1
cmF0aW9uLl9sb25nUHJlc3NBY3Rpb25zRW5hYmxlZCkKKyAgICBpZiAoIXNlbGYud2ViVmlldy5j
b25maWd1cmF0aW9uLl9sb25nUHJlc3NBY3Rpb25zRW5hYmxlZCkKICAgICAgICAgcmV0dXJuIGNv
bXBsZXRpb24obmlsKTsKIAogICAgIFtfd2ViVmlldyBfZGlkU2hvd0NvbnRleHRNZW51XTsKQEAg
LTgzOTAsMTQgKzgzOTAsMTQgQEAgLSAodm9pZCljb250aW51ZUNvbnRleHRNZW51SW50ZXJhY3Rp
b246KHZvaWQoXikoVUlDb250ZXh0TWVudUNvbmZpZ3VyYXRpb24gKikpY28KICAgICBpZiAoX3Bv
c2l0aW9uSW5mb3JtYXRpb24uaXNMaW5rICYmIGxpbmtVUkwuaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm4gY29udGludWVXaXRoQ29udGV4dE1lbnVDb25maWd1cmF0aW9uKG5pbCk7CiAKLSAgICBh
dXRvIHVpRGVsZWdhdGUgPSBzdGF0aWNfY2FzdDxpZDxXS1VJRGVsZWdhdGVQcml2YXRlPj4oX3dl
YlZpZXcuVUlEZWxlZ2F0ZSk7CisgICAgYXV0byB1aURlbGVnYXRlID0gc3RhdGljX2Nhc3Q8aWQ8
V0tVSURlbGVnYXRlUHJpdmF0ZT4+KHNlbGYud2ViVmlldy5VSURlbGVnYXRlKTsKIAogICAgIGlm
IChuZWVkc0RlcHJlY2F0ZWRQcmV2aWV3QVBJKHVpRGVsZWdhdGUpKSB7CiAgICAgICAgIGlmIChf
cG9zaXRpb25JbmZvcm1hdGlvbi5pc0xpbmspIHsKICAgICAgICAgICAgIEFMTE9XX0RFUFJFQ0FU
RURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgICAgICAgICBpZiAoW3VpRGVsZWdhdGUgcmVzcG9u
ZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3ZWJWaWV3OnNob3VsZFByZXZpZXdFbGVtZW50OildKSB7
CiAgICAgICAgICAgICAgICAgYXV0byBwcmV2aWV3RWxlbWVudEluZm8gPSBhZG9wdE5TKFtbV0tQ
cmV2aWV3RWxlbWVudEluZm8gYWxsb2NdIF9pbml0V2l0aExpbmtVUkw6bGlua1VSTF0pOwotICAg
ICAgICAgICAgICAgIGlmICghW3VpRGVsZWdhdGUgd2ViVmlldzpfd2ViVmlldyBzaG91bGRQcmV2
aWV3RWxlbWVudDpwcmV2aWV3RWxlbWVudEluZm8uZ2V0KCldKQorICAgICAgICAgICAgICAgIGlm
ICghW3VpRGVsZWdhdGUgd2ViVmlldzpzZWxmLndlYlZpZXcgc2hvdWxkUHJldmlld0VsZW1lbnQ6
cHJldmlld0VsZW1lbnRJbmZvLmdldCgpXSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNv
bnRpbnVlV2l0aENvbnRleHRNZW51Q29uZmlndXJhdGlvbihuaWwpOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECkBAIC04NTIwLDE0
ICs4NTIwLDE0IEBAIC0gKHZvaWQpY29udGludWVDb250ZXh0TWVudUludGVyYWN0aW9uOih2b2lk
KF4pKFVJQ29udGV4dE1lbnVDb25maWd1cmF0aW9uICopKWNvCiAgICAgaWYgKF9wb3NpdGlvbklu
Zm9ybWF0aW9uLmlzSW1hZ2UgJiYgX3Bvc2l0aW9uSW5mb3JtYXRpb24udXJsLmlzTnVsbCgpICYm
IFt1aURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6YWx0ZXJu
YXRlVVJMRnJvbUltYWdlOnVzZXJJbmZvOildKSB7CiAgICAgICAgIFVJSW1hZ2UgKnVpSW1hZ2Ug
PSBbW19jb250ZXh0TWVudUVsZW1lbnRJbmZvIF9hY3RpdmF0ZWRFbGVtZW50SW5mb10gaW1hZ2Vd
OwogICAgICAgICBOU0RpY3Rpb25hcnkgKnVzZXJJbmZvID0gbmlsOwotICAgICAgICBOU1VSTCAq
bnNVUkwgPSBbdWlEZWxlZ2F0ZSBfd2ViVmlldzpfd2ViVmlldyBhbHRlcm5hdGVVUkxGcm9tSW1h
Z2U6dWlJbWFnZSB1c2VySW5mbzomdXNlckluZm9dOworICAgICAgICBOU1VSTCAqbnNVUkwgPSBb
dWlEZWxlZ2F0ZSBfd2ViVmlldzpzZWxmLndlYlZpZXcgYWx0ZXJuYXRlVVJMRnJvbUltYWdlOnVp
SW1hZ2UgdXNlckluZm86JnVzZXJJbmZvXTsKICAgICAgICAgX3Bvc2l0aW9uSW5mb3JtYXRpb24u
dXJsID0gbnNVUkw7CiAgICAgICAgIF9jb250ZXh0TWVudUVsZW1lbnRJbmZvID0gd3JhcHBlcihB
UEk6OkNvbnRleHRNZW51RWxlbWVudEluZm86OmNyZWF0ZShfcG9zaXRpb25JbmZvcm1hdGlvbiwg
dXNlckluZm8pKTsKICAgICB9CiAKICAgICBpZiAoX3Bvc2l0aW9uSW5mb3JtYXRpb24uaXNMaW5r
ICYmIFt1aURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViVmlldzpjb250
ZXh0TWVudUNvbmZpZ3VyYXRpb25Gb3JFbGVtZW50OmNvbXBsZXRpb25IYW5kbGVyOildKSB7CiAg
ICAgICAgIGF1dG8gY2hlY2tlciA9IFdlYktpdDo6Q29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tl
cjo6Y3JlYXRlKHVpRGVsZWdhdGUsIEBzZWxlY3Rvcih3ZWJWaWV3OmNvbnRleHRNZW51Q29uZmln
dXJhdGlvbkZvckVsZW1lbnQ6Y29tcGxldGlvbkhhbmRsZXI6KSk7Ci0gICAgICAgIFt1aURlbGVn
YXRlIHdlYlZpZXc6X3dlYlZpZXcgY29udGV4dE1lbnVDb25maWd1cmF0aW9uRm9yRWxlbWVudDpf
Y29udGV4dE1lbnVFbGVtZW50SW5mby5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQ
dHIoW2NvbXBsZXRpb25CbG9jayA9IFdURk1vdmUoY29tcGxldGlvbkJsb2NrKSwgY2hlY2tlciA9
IFdURk1vdmUoY2hlY2tlcildIChVSUNvbnRleHRNZW51Q29uZmlndXJhdGlvbiAqY29uZmlndXJh
dGlvbikgeworICAgICAgICBbdWlEZWxlZ2F0ZSB3ZWJWaWV3OnNlbGYud2ViVmlldyBjb250ZXh0
TWVudUNvbmZpZ3VyYXRpb25Gb3JFbGVtZW50Ol9jb250ZXh0TWVudUVsZW1lbnRJbmZvLmdldCgp
IGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY29tcGxldGlvbkJsb2NrID0gV1RGTW92
ZShjb21wbGV0aW9uQmxvY2spLCBjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKV0gKFVJQ29udGV4
dE1lbnVDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uKSB7CiAgICAgICAgICAgICBpZiAoY2hl
Y2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7
CkBAIC04NTM1LDcgKzg1MzUsNyBAQCAtICh2b2lkKWNvbnRpbnVlQ29udGV4dE1lbnVJbnRlcmFj
dGlvbjoodm9pZCheKShVSUNvbnRleHRNZW51Q29uZmlndXJhdGlvbiAqKSljbwogICAgICAgICB9
KS5nZXQoKV07CiAgICAgfSBlbHNlIGlmIChbdWlEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6
QHNlbGVjdG9yKF93ZWJWaWV3OmNvbnRleHRNZW51Q29uZmlndXJhdGlvbkZvckVsZW1lbnQ6Y29t
cGxldGlvbkhhbmRsZXI6KV0pIHsKICAgICAgICAgYXV0byBjaGVja2VyID0gV2ViS2l0OjpDb21w
bGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUodWlEZWxlZ2F0ZSwgQHNlbGVjdG9yKF93
ZWJWaWV3OmNvbnRleHRNZW51Q29uZmlndXJhdGlvbkZvckVsZW1lbnQ6Y29tcGxldGlvbkhhbmRs
ZXI6KSk7Ci0gICAgICAgIFt1aURlbGVnYXRlIF93ZWJWaWV3Ol93ZWJWaWV3IGNvbnRleHRNZW51
Q29uZmlndXJhdGlvbkZvckVsZW1lbnQ6X2NvbnRleHRNZW51RWxlbWVudEluZm8uZ2V0KCkgY29t
cGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uQmxvY2sgPSBXVEZNb3ZlKGNv
bXBsZXRpb25CbG9jayksIGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXSAoVUlDb250ZXh0TWVu
dUNvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24pIHsKKyAgICAgICAgW3VpRGVsZWdhdGUgX3dl
YlZpZXc6c2VsZi53ZWJWaWV3IGNvbnRleHRNZW51Q29uZmlndXJhdGlvbkZvckVsZW1lbnQ6X2Nv
bnRleHRNZW51RWxlbWVudEluZm8uZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRy
KFtjb21wbGV0aW9uQmxvY2sgPSBXVEZNb3ZlKGNvbXBsZXRpb25CbG9jayksIGNoZWNrZXIgPSBX
VEZNb3ZlKGNoZWNrZXIpXSAoVUlDb250ZXh0TWVudUNvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRp
b24pIHsKICAgICAgICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5D
YWxsZWQoKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBjaGVja2VyLT5k
aWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTg2NjQsNyArODY2NCw3IEBAIC0gKFVJVGFy
Z2V0ZWRQcmV2aWV3ICopX2NyZWF0ZVRhcmdldGVkUHJldmlld0lmUG9zc2libGUKICAgICAgICAg
dGFyZ2V0ZWRQcmV2aWV3ID0gY3JlYXRlRmFsbGJhY2tUYXJnZXRlZFByZXZpZXcoc2VsZiwgc2Vs
Zi5jb250YWluZXJWaWV3Rm9yVGFyZ2V0ZWRQcmV2aWV3cywgX3Bvc2l0aW9uSW5mb3JtYXRpb24u
Ym91bmRzKTsKIAogICAgIGlmIChfcG9zaXRpb25JbmZvcm1hdGlvbi5jb250YWluZXJTY3JvbGxp
bmdOb2RlSUQpIHsKLSAgICAgICAgVUlTY3JvbGxWaWV3ICpwb3NpdGlvblRyYWNraW5nVmlldyA9
IF93ZWJWaWV3LnNjcm9sbFZpZXc7CisgICAgICAgIFVJU2Nyb2xsVmlldyAqcG9zaXRpb25UcmFj
a2luZ1ZpZXcgPSBzZWxmLndlYlZpZXcuc2Nyb2xsVmlldzsKICAgICAgICAgaWYgKGF1dG8qIHNj
cm9sbGluZ0Nvb3JkaW5hdG9yID0gX3BhZ2UtPnNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkoKSkK
ICAgICAgICAgICAgIHBvc2l0aW9uVHJhY2tpbmdWaWV3ID0gc2Nyb2xsaW5nQ29vcmRpbmF0b3It
PnNjcm9sbFZpZXdGb3JTY3JvbGxpbmdOb2RlSUQoX3Bvc2l0aW9uSW5mb3JtYXRpb24uY29udGFp
bmVyU2Nyb2xsaW5nTm9kZUlEKTsKIApAQCAtODY4NiwxNCArODY4NiwxNCBAQCAtICh2b2lkKWNv
bnRleHRNZW51SW50ZXJhY3Rpb246KFVJQ29udGV4dE1lbnVJbnRlcmFjdGlvbiAqKWludGVyYWN0
aW9uIHdpbGxEaXNwbAogewogICAgIGlmICghX3dlYlZpZXcpCiAgICAgICAgIHJldHVybjsKLSAg
ICBhdXRvIHVpRGVsZWdhdGUgPSBzdGF0aWNfY2FzdDxpZDxXS1VJRGVsZWdhdGVQcml2YXRlPj4o
X3dlYlZpZXcuVUlEZWxlZ2F0ZSk7CisgICAgYXV0byB1aURlbGVnYXRlID0gc3RhdGljX2Nhc3Q8
aWQ8V0tVSURlbGVnYXRlUHJpdmF0ZT4+KHNlbGYud2ViVmlldy5VSURlbGVnYXRlKTsKICAgICBp
ZiAoIXVpRGVsZWdhdGUpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoW3VpRGVsZWdhdGUgcmVz
cG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3ZWJWaWV3OmNvbnRleHRNZW51V2lsbFByZXNlbnRG
b3JFbGVtZW50OildKQotICAgICAgICBbdWlEZWxlZ2F0ZSB3ZWJWaWV3Ol93ZWJWaWV3IGNvbnRl
eHRNZW51V2lsbFByZXNlbnRGb3JFbGVtZW50Ol9jb250ZXh0TWVudUVsZW1lbnRJbmZvLmdldCgp
XTsKKyAgICAgICAgW3VpRGVsZWdhdGUgd2ViVmlldzpzZWxmLndlYlZpZXcgY29udGV4dE1lbnVX
aWxsUHJlc2VudEZvckVsZW1lbnQ6X2NvbnRleHRNZW51RWxlbWVudEluZm8uZ2V0KCldOwogICAg
IGVsc2UgaWYgKFt1aURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZp
ZXc6Y29udGV4dE1lbnVXaWxsUHJlc2VudEZvckVsZW1lbnQ6KV0pIHsKICAgICAgICAgQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICAgICAgW3VpRGVsZWdhdGUgX3dlYlZp
ZXc6X3dlYlZpZXcgY29udGV4dE1lbnVXaWxsUHJlc2VudEZvckVsZW1lbnQ6X2NvbnRleHRNZW51
RWxlbWVudEluZm8uZ2V0KCldOworICAgICAgICBbdWlEZWxlZ2F0ZSBfd2ViVmlldzpzZWxmLndl
YlZpZXcgY29udGV4dE1lbnVXaWxsUHJlc2VudEZvckVsZW1lbnQ6X2NvbnRleHRNZW51RWxlbWVu
dEluZm8uZ2V0KCldOwogICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQK
ICAgICB9CiB9CkBAIC04NzI3LDcgKzg3MjcsNyBAQCAtICh2b2lkKWNvbnRleHRNZW51SW50ZXJh
Y3Rpb246KFVJQ29udGV4dE1lbnVJbnRlcmFjdGlvbiAqKWludGVyYWN0aW9uIHdpbGxQZXJmbwog
CiAgICAgW3NlbGYgX3N0b3BTdXBwcmVzc2luZ1NlbGVjdGlvbkFzc2lzdGFudEZvclJlYXNvbjpX
ZWJLaXQ6OkludGVyYWN0aW9uSXNIYXBwZW5pbmddOwogCi0gICAgYXV0byB1aURlbGVnYXRlID0g
c3RhdGljX2Nhc3Q8aWQ8V0tVSURlbGVnYXRlUHJpdmF0ZT4+KF93ZWJWaWV3LlVJRGVsZWdhdGUp
OworICAgIGF1dG8gdWlEZWxlZ2F0ZSA9IHN0YXRpY19jYXN0PGlkPFdLVUlEZWxlZ2F0ZVByaXZh
dGU+PihzZWxmLndlYlZpZXcuVUlEZWxlZ2F0ZSk7CiAgICAgaWYgKCF1aURlbGVnYXRlKQogICAg
ICAgICByZXR1cm47CiAKQEAgLTg3MzksNyArODczOSw3IEBAIC0gKHZvaWQpY29udGV4dE1lbnVJ
bnRlcmFjdGlvbjooVUlDb250ZXh0TWVudUludGVyYWN0aW9uICopaW50ZXJhY3Rpb24gd2lsbFBl
cmZvCiAgICAgICAgICAgICAgICAgaWYgKGltYWdlVVJMLmlzRW1wdHkoKSB8fCAhKGltYWdlVVJM
LnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSB8fCBpbWFnZVVSTC5wcm90b2NvbElzKCJkYXRhIikp
KQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICAgICAgICAgICAgICBbdWlEZWxlZ2F0ZSBf
d2ViVmlldzpfd2ViVmlldyBjb21taXRQcmV2aWV3ZWRJbWFnZVdpdGhVUkw6KE5TVVJMICopaW1h
Z2VVUkxdOworICAgICAgICAgICAgICAgIFt1aURlbGVnYXRlIF93ZWJWaWV3OnNlbGYud2ViVmll
dyBjb21taXRQcmV2aWV3ZWRJbWFnZVdpdGhVUkw6KE5TVVJMICopaW1hZ2VVUkxdOwogICAgICAg
ICAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgICAgICAgICAg
fQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtODc0OCw3ICs4NzQ4LDcgQEAgLSAodm9pZCljb250
ZXh0TWVudUludGVyYWN0aW9uOihVSUNvbnRleHRNZW51SW50ZXJhY3Rpb24gKilpbnRlcmFjdGlv
biB3aWxsUGVyZm8KICAgICAgICAgaWYgKFt1aURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3Iod2ViVmlldzpjb21taXRQcmV2aWV3aW5nVmlld0NvbnRyb2xsZXI6KV0pIHsKICAg
ICAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgICAgICAg
ICBpZiAoYXV0byB2aWV3Q29udHJvbGxlciA9IF9jb250ZXh0TWVudUxlZ2FjeVByZXZpZXdDb250
cm9sbGVyLmdldCgpKQotICAgICAgICAgICAgICAgIFt1aURlbGVnYXRlIHdlYlZpZXc6X3dlYlZp
ZXcgY29tbWl0UHJldmlld2luZ1ZpZXdDb250cm9sbGVyOnZpZXdDb250cm9sbGVyXTsKKyAgICAg
ICAgICAgICAgICBbdWlEZWxlZ2F0ZSB3ZWJWaWV3OnNlbGYud2ViVmlldyBjb21taXRQcmV2aWV3
aW5nVmlld0NvbnRyb2xsZXI6dmlld0NvbnRyb2xsZXJdOwogICAgICAgICAgICAgQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
QEAgLTg3NTYsNyArODc1Niw3IEBAIC0gKHZvaWQpY29udGV4dE1lbnVJbnRlcmFjdGlvbjooVUlD
b250ZXh0TWVudUludGVyYWN0aW9uICopaW50ZXJhY3Rpb24gd2lsbFBlcmZvCiAgICAgICAgIGlm
IChbdWlEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmNvbW1p
dFByZXZpZXdlZFZpZXdDb250cm9sbGVyOildKSB7CiAgICAgICAgICAgICBBTExPV19ERVBSRUNB
VEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgICAgICAgICAgaWYgKGF1dG8gdmlld0NvbnRyb2xs
ZXIgPSBfY29udGV4dE1lbnVMZWdhY3lQcmV2aWV3Q29udHJvbGxlci5nZXQoKSkKLSAgICAgICAg
ICAgICAgICBbdWlEZWxlZ2F0ZSBfd2ViVmlldzpfd2ViVmlldyBjb21taXRQcmV2aWV3ZWRWaWV3
Q29udHJvbGxlcjp2aWV3Q29udHJvbGxlcl07CisgICAgICAgICAgICAgICAgW3VpRGVsZWdhdGUg
X3dlYlZpZXc6c2VsZi53ZWJWaWV3IGNvbW1pdFByZXZpZXdlZFZpZXdDb250cm9sbGVyOnZpZXdD
b250cm9sbGVyXTsKICAgICAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VO
RAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC04NzY1LDEwICs4NzY1LDEwIEBA
IC0gKHZvaWQpY29udGV4dE1lbnVJbnRlcmFjdGlvbjooVUlDb250ZXh0TWVudUludGVyYWN0aW9u
ICopaW50ZXJhY3Rpb24gd2lsbFBlcmZvCiAgICAgfQogCiAgICAgaWYgKFt1aURlbGVnYXRlIHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViVmlldzpjb250ZXh0TWVudUZvckVsZW1lbnQ6
d2lsbENvbW1pdFdpdGhBbmltYXRvcjopXSkKLSAgICAgICAgW3VpRGVsZWdhdGUgd2ViVmlldzpf
d2ViVmlldyBjb250ZXh0TWVudUZvckVsZW1lbnQ6X2NvbnRleHRNZW51RWxlbWVudEluZm8uZ2V0
KCkgd2lsbENvbW1pdFdpdGhBbmltYXRvcjphbmltYXRvcl07CisgICAgICAgIFt1aURlbGVnYXRl
IHdlYlZpZXc6c2VsZi53ZWJWaWV3IGNvbnRleHRNZW51Rm9yRWxlbWVudDpfY29udGV4dE1lbnVF
bGVtZW50SW5mby5nZXQoKSB3aWxsQ29tbWl0V2l0aEFuaW1hdG9yOmFuaW1hdG9yXTsKICAgICBl
bHNlIGlmIChbdWlEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3
OmNvbnRleHRNZW51Rm9yRWxlbWVudDp3aWxsQ29tbWl0V2l0aEFuaW1hdG9yOildKSB7CiAgICAg
ICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCi0gICAgICAgIFt1aURlbGVn
YXRlIF93ZWJWaWV3Ol93ZWJWaWV3IGNvbnRleHRNZW51Rm9yRWxlbWVudDpfY29udGV4dE1lbnVF
bGVtZW50SW5mby5nZXQoKSB3aWxsQ29tbWl0V2l0aEFuaW1hdG9yOmFuaW1hdG9yXTsKKyAgICAg
ICAgW3VpRGVsZWdhdGUgX3dlYlZpZXc6c2VsZi53ZWJWaWV3IGNvbnRleHRNZW51Rm9yRWxlbWVu
dDpfY29udGV4dE1lbnVFbGVtZW50SW5mby5nZXQoKSB3aWxsQ29tbWl0V2l0aEFuaW1hdG9yOmFu
aW1hdG9yXTsKICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAg
fQogCkBAIC04ODIyLDEyICs4ODIyLDEyIEBAIC0gKHZvaWQpY29udGV4dE1lbnVJbnRlcmFjdGlv
bjooVUlDb250ZXh0TWVudUludGVyYWN0aW9uICopaW50ZXJhY3Rpb24gd2lsbEVuZEZvCiAgICAg
Ly8gRklYTUU6IFRoaXMgZGVsZWdhdGUgaXMgYmVpbmcgY2FsbGVkIG1vcmUgdGhhbiBvbmNlIGJ5
IFVJS2l0LiA8cmRhcjovL3Byb2JsZW0vNTE1NTAyOTE+CiAgICAgLy8gVGhpcyBjb25kaXRpb25h
bCBhdm9pZHMgdGhlIFdLVUlEZWxlZ2F0ZSBiZWluZyBjYWxsZWQgdHdpY2UgdG9vLgogICAgIGlm
IChfY29udGV4dE1lbnVFbGVtZW50SW5mbykgewotICAgICAgICBhdXRvIHVpRGVsZWdhdGUgPSBz
dGF0aWNfY2FzdDxpZDxXS1VJRGVsZWdhdGVQcml2YXRlPj4oX3dlYlZpZXcuVUlEZWxlZ2F0ZSk7
CisgICAgICAgIGF1dG8gdWlEZWxlZ2F0ZSA9IHN0YXRpY19jYXN0PGlkPFdLVUlEZWxlZ2F0ZVBy
aXZhdGU+PihzZWxmLndlYlZpZXcuVUlEZWxlZ2F0ZSk7CiAgICAgICAgIGlmIChbdWlEZWxlZ2F0
ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHdlYlZpZXc6Y29udGV4dE1lbnVEaWRFbmRG
b3JFbGVtZW50OildKQotICAgICAgICAgICAgW3VpRGVsZWdhdGUgd2ViVmlldzpfd2ViVmlldyBj
b250ZXh0TWVudURpZEVuZEZvckVsZW1lbnQ6X2NvbnRleHRNZW51RWxlbWVudEluZm8uZ2V0KCld
OworICAgICAgICAgICAgW3VpRGVsZWdhdGUgd2ViVmlldzpzZWxmLndlYlZpZXcgY29udGV4dE1l
bnVEaWRFbmRGb3JFbGVtZW50Ol9jb250ZXh0TWVudUVsZW1lbnRJbmZvLmdldCgpXTsKICAgICAg
ICAgZWxzZSBpZiAoW3VpRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2Vi
Vmlldzpjb250ZXh0TWVudURpZEVuZEZvckVsZW1lbnQ6KV0pIHsKICAgICAgICAgICAgIEFMTE9X
X0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCi0gICAgICAgICAgICBbdWlEZWxlZ2F0ZSBf
d2ViVmlldzpfd2ViVmlldyBjb250ZXh0TWVudURpZEVuZEZvckVsZW1lbnQ6X2NvbnRleHRNZW51
RWxlbWVudEluZm8uZ2V0KCldOworICAgICAgICAgICAgW3VpRGVsZWdhdGUgX3dlYlZpZXc6c2Vs
Zi53ZWJWaWV3IGNvbnRleHRNZW51RGlkRW5kRm9yRWxlbWVudDpfY29udGV4dE1lbnVFbGVtZW50
SW5mby5nZXQoKV07CiAgICAgICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19F
TkQKICAgICAgICAgfQogICAgIH0KQEAgLTg4NjcsNyArODg2Nyw3IEBAIC0gKEJPT0wpX2ludGVy
YWN0aW9uU2hvdWxkQmVnaW5Gcm9tUHJldmlld0l0ZW1Db250cm9sbGVyOihVSVByZXZpZXdJdGVt
Q29udHJvbGxlCiAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAg
ICAgICAgIGlmIChbdWlEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHdlYlZp
ZXc6c2hvdWxkUHJldmlld0VsZW1lbnQ6KV0pIHsKICAgICAgICAgICAgIGF1dG8gcHJldmlld0Vs
ZW1lbnRJbmZvID0gYWRvcHROUyhbW1dLUHJldmlld0VsZW1lbnRJbmZvIGFsbG9jXSBfaW5pdFdp
dGhMaW5rVVJMOihOU1VSTCAqKWxpbmtVUkxdKTsKLSAgICAgICAgICAgIHJldHVybiBbdWlEZWxl
Z2F0ZSB3ZWJWaWV3Ol93ZWJWaWV3IHNob3VsZFByZXZpZXdFbGVtZW50OnByZXZpZXdFbGVtZW50
SW5mby5nZXQoKV07CisgICAgICAgICAgICByZXR1cm4gW3VpRGVsZWdhdGUgd2ViVmlldzpzZWxm
LndlYlZpZXcgc2hvdWxkUHJldmlld0VsZW1lbnQ6cHJldmlld0VsZW1lbnRJbmZvLmdldCgpXTsK
ICAgICAgICAgfQogICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAg
ICAgICAgaWYgKGxpbmtVUkwuaXNFbXB0eSgpKQpAQCAtODkyOCw3ICs4OTI4LDcgQEAgLSAoTlNE
aWN0aW9uYXJ5ICopX2RhdGFGb3JQcmV2aWV3SXRlbUNvbnRyb2xsZXI6KFVJUHJldmlld0l0ZW1D
b250cm9sbGVyICopY29udHIKICAgICAgICAgaWYgKGlzRGF0YURldGVjdG9yTGluaykgewogICAg
ICAgICAgICAgTlNEaWN0aW9uYXJ5ICpjb250ZXh0ID0gbmlsOwogICAgICAgICAgICAgaWYgKFt1
aURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX2RhdGFEZXRlY3Rpb25Db250
ZXh0Rm9yV2ViVmlldzopXSkKLSAgICAgICAgICAgICAgICBjb250ZXh0ID0gW3VpRGVsZWdhdGUg
X2RhdGFEZXRlY3Rpb25Db250ZXh0Rm9yV2ViVmlldzpfd2ViVmlld107CisgICAgICAgICAgICAg
ICAgY29udGV4dCA9IFt1aURlbGVnYXRlIF9kYXRhRGV0ZWN0aW9uQ29udGV4dEZvcldlYlZpZXc6
c2VsZi53ZWJWaWV3XTsKIAogICAgICAgICAgICAgREREZXRlY3Rpb25Db250cm9sbGVyICpjb250
cm9sbGVyID0gW2dldERERGV0ZWN0aW9uQ29udHJvbGxlckNsYXNzKCkgc2hhcmVkQ29udHJvbGxl
cl07CiAgICAgICAgICAgICBOU0RpY3Rpb25hcnkgKm5ld0NvbnRleHQgPSBuaWw7CkBAIC04OTU2
LDEzICs4OTU2LDEzIEBAIC0gKE5TRGljdGlvbmFyeSAqKV9kYXRhRm9yUHJldmlld0l0ZW1Db250
cm9sbGVyOihVSVByZXZpZXdJdGVtQ29udHJvbGxlciAqKWNvbnRyCiAgICAgfSBlbHNlIGlmIChj
YW5TaG93QXR0YWNobWVudFByZXZpZXcpIHsKICAgICAgICAgKnR5cGUgPSBVSVByZXZpZXdJdGVt
VHlwZUF0dGFjaG1lbnQ7CiAgICAgICAgIGF1dG8gZWxlbWVudCA9IGFkb3B0TlMoW1tfV0tBY3Rp
dmF0ZWRFbGVtZW50SW5mbyBhbGxvY10gX2luaXRXaXRoVHlwZTpfV0tBY3RpdmF0ZWRFbGVtZW50
VHlwZUF0dGFjaG1lbnQgVVJMOihOU1VSTCAqKWxpbmtVUkwgaW1hZ2VVUkw6KE5TVVJMICopX3Bv
c2l0aW9uSW5mb3JtYXRpb24uaW1hZ2VVUkwgbG9jYXRpb246X3Bvc2l0aW9uSW5mb3JtYXRpb24u
cmVxdWVzdC5wb2ludCB0aXRsZTpfcG9zaXRpb25JbmZvcm1hdGlvbi50aXRsZSBJRDpfcG9zaXRp
b25JbmZvcm1hdGlvbi5pZEF0dHJpYnV0ZSByZWN0Ol9wb3NpdGlvbkluZm9ybWF0aW9uLmJvdW5k
cyBpbWFnZTpuaWxdKTsKLSAgICAgICAgTlNVSW50ZWdlciBpbmRleCA9IFt1aURlbGVnYXRlIF93
ZWJWaWV3Ol93ZWJWaWV3IGluZGV4SW50b0F0dGFjaG1lbnRMaXN0Rm9yRWxlbWVudDplbGVtZW50
LmdldCgpXTsKKyAgICAgICAgTlNVSW50ZWdlciBpbmRleCA9IFt1aURlbGVnYXRlIF93ZWJWaWV3
OnNlbGYud2ViVmlldyBpbmRleEludG9BdHRhY2htZW50TGlzdEZvckVsZW1lbnQ6ZWxlbWVudC5n
ZXQoKV07CiAgICAgICAgIGlmIChpbmRleCAhPSBOU05vdEZvdW5kKSB7CiAgICAgICAgICAgICBC
T09MIHNvdXJjZUlzTWFuYWdlZCA9IE5POwogICAgICAgICAgICAgaWYgKHJlc3BvbmRzVG9BdHRh
Y2htZW50TGlzdEZvcldlYlZpZXdTb3VyY2VJc01hbmFnZWQpCi0gICAgICAgICAgICAgICAgZGF0
YUZvclByZXZpZXdbVUlQcmV2aWV3RGF0YUF0dGFjaG1lbnRMaXN0XSA9IFt1aURlbGVnYXRlIF9h
dHRhY2htZW50TGlzdEZvcldlYlZpZXc6X3dlYlZpZXcgc291cmNlSXNNYW5hZ2VkOiZzb3VyY2VJ
c01hbmFnZWRdOworICAgICAgICAgICAgICAgIGRhdGFGb3JQcmV2aWV3W1VJUHJldmlld0RhdGFB
dHRhY2htZW50TGlzdF0gPSBbdWlEZWxlZ2F0ZSBfYXR0YWNobWVudExpc3RGb3JXZWJWaWV3OnNl
bGYud2ViVmlldyBzb3VyY2VJc01hbmFnZWQ6JnNvdXJjZUlzTWFuYWdlZF07CiAgICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgZGF0YUZvclByZXZpZXdbVUlQcmV2aWV3RGF0YUF0dGFj
aG1lbnRMaXN0XSA9IFt1aURlbGVnYXRlIF9hdHRhY2htZW50TGlzdEZvcldlYlZpZXc6X3dlYlZp
ZXddOworICAgICAgICAgICAgICAgIGRhdGFGb3JQcmV2aWV3W1VJUHJldmlld0RhdGFBdHRhY2ht
ZW50TGlzdF0gPSBbdWlEZWxlZ2F0ZSBfYXR0YWNobWVudExpc3RGb3JXZWJWaWV3OnNlbGYud2Vi
Vmlld107CiAgICAgICAgICAgICBkYXRhRm9yUHJldmlld1tVSVByZXZpZXdEYXRhQXR0YWNobWVu
dEluZGV4XSA9IFtOU051bWJlciBudW1iZXJXaXRoVW5zaWduZWRJbnRlZ2VyOmluZGV4XTsKICAg
ICAgICAgICAgIGRhdGFGb3JQcmV2aWV3W1VJUHJldmlld0RhdGFBdHRhY2htZW50TGlzdElzQ29u
dGVudE1hbmFnZWRdID0gW05TTnVtYmVyIG51bWJlcldpdGhCb29sOnNvdXJjZUlzTWFuYWdlZF07
CiAgICAgICAgIH0KQEAgLTg5OTcsNyArODk5Nyw3IEBAIC0gKFVJVmlld0NvbnRyb2xsZXIgKilf
cHJlc2VudGVkVmlld0NvbnRyb2xsZXJGb3JQcmV2aWV3SXRlbUNvbnRyb2xsZXI6KFVJUHJldmll
CiAgICAgICAgICAgICBpZiAoW3VpRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rv
cihfd2ViVmlldzpwcmV2aWV3Vmlld0NvbnRyb2xsZXJGb3JBbmltYXRlZEltYWdlQXRVUkw6ZGVm
YXVsdEFjdGlvbnM6ZWxlbWVudEluZm86aW1hZ2VTaXplOildKSB7CiAgICAgICAgICAgICAgICAg
UmV0YWluUHRyPE5TQXJyYXk+IGFjdGlvbnMgPSBbX2FjdGlvblNoZWV0QXNzaXN0YW50IGRlZmF1
bHRBY3Rpb25zRm9ySW1hZ2VTaGVldDphbmltYXRlZEltYWdlRWxlbWVudEluZm8uZ2V0KCldOwog
ICAgICAgICAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIFt1aURlbGVnYXRlIF93ZWJWaWV3Ol93ZWJWaWV3IHByZXZpZXdW
aWV3Q29udHJvbGxlckZvckFuaW1hdGVkSW1hZ2VBdFVSTDp0YXJnZXRVUkwgZGVmYXVsdEFjdGlv
bnM6YWN0aW9ucy5nZXQoKSBlbGVtZW50SW5mbzphbmltYXRlZEltYWdlRWxlbWVudEluZm8uZ2V0
KCkgaW1hZ2VTaXplOl9wb3NpdGlvbkluZm9ybWF0aW9uLmltYWdlLT5zaXplKCldOworICAgICAg
ICAgICAgICAgIHJldHVybiBbdWlEZWxlZ2F0ZSBfd2ViVmlldzpzZWxmLndlYlZpZXcgcHJldmll
d1ZpZXdDb250cm9sbGVyRm9yQW5pbWF0ZWRJbWFnZUF0VVJMOnRhcmdldFVSTCBkZWZhdWx0QWN0
aW9uczphY3Rpb25zLmdldCgpIGVsZW1lbnRJbmZvOmFuaW1hdGVkSW1hZ2VFbGVtZW50SW5mby5n
ZXQoKSBpbWFnZVNpemU6X3Bvc2l0aW9uSW5mb3JtYXRpb24uaW1hZ2UtPnNpemUoKV07CiAgICAg
ICAgICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KQEAgLTkwMTcsMTcgKzkwMTcsMTcgQEAgLSAoVUlWaWV3Q29udHJvbGxl
ciAqKV9wcmVzZW50ZWRWaWV3Q29udHJvbGxlckZvclByZXZpZXdJdGVtQ29udHJvbGxlcjooVUlQ
cmV2aWUKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFS
QVRJT05TX0JFR0lOCiAgICAgICAgICAgICBhdXRvIHByZXZpZXdFbGVtZW50SW5mbyA9IGFkb3B0
TlMoW1tXS1ByZXZpZXdFbGVtZW50SW5mbyBhbGxvY10gX2luaXRXaXRoTGlua1VSTDp0YXJnZXRV
UkxdKTsKLSAgICAgICAgICAgIGlmIChVSVZpZXdDb250cm9sbGVyICpjb250cm9sbGVyID0gW3Vp
RGVsZWdhdGUgd2ViVmlldzpfd2ViVmlldyBwcmV2aWV3aW5nVmlld0NvbnRyb2xsZXJGb3JFbGVt
ZW50OnByZXZpZXdFbGVtZW50SW5mby5nZXQoKSBkZWZhdWx0QWN0aW9uczpwcmV2aWV3QWN0aW9u
cy5nZXQoKV0pCisgICAgICAgICAgICBpZiAoVUlWaWV3Q29udHJvbGxlciAqY29udHJvbGxlciA9
IFt1aURlbGVnYXRlIHdlYlZpZXc6c2VsZi53ZWJWaWV3IHByZXZpZXdpbmdWaWV3Q29udHJvbGxl
ckZvckVsZW1lbnQ6cHJldmlld0VsZW1lbnRJbmZvLmdldCgpIGRlZmF1bHRBY3Rpb25zOnByZXZp
ZXdBY3Rpb25zLmdldCgpXSkKICAgICAgICAgICAgICAgICByZXR1cm4gY29udHJvbGxlcjsKICAg
ICAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgICAgICB9CiAK
ICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICAgICAgaWYg
KFt1aURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6cHJldmll
d1ZpZXdDb250cm9sbGVyRm9yVVJMOmRlZmF1bHRBY3Rpb25zOmVsZW1lbnRJbmZvOildKQotICAg
ICAgICAgICAgcmV0dXJuIFt1aURlbGVnYXRlIF93ZWJWaWV3Ol93ZWJWaWV3IHByZXZpZXdWaWV3
Q29udHJvbGxlckZvclVSTDp0YXJnZXRVUkwgZGVmYXVsdEFjdGlvbnM6YWN0aW9ucy5nZXQoKSBl
bGVtZW50SW5mbzplbGVtZW50SW5mby5nZXQoKV07CisgICAgICAgICAgICByZXR1cm4gW3VpRGVs
ZWdhdGUgX3dlYlZpZXc6c2VsZi53ZWJWaWV3IHByZXZpZXdWaWV3Q29udHJvbGxlckZvclVSTDp0
YXJnZXRVUkwgZGVmYXVsdEFjdGlvbnM6YWN0aW9ucy5nZXQoKSBlbGVtZW50SW5mbzplbGVtZW50
SW5mby5nZXQoKV07CiAKICAgICAgICAgaWYgKFt1aURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3IoX3dlYlZpZXc6cHJldmlld1ZpZXdDb250cm9sbGVyRm9yVVJMOildKQotICAg
ICAgICAgICAgcmV0dXJuIFt1aURlbGVnYXRlIF93ZWJWaWV3Ol93ZWJWaWV3IHByZXZpZXdWaWV3
Q29udHJvbGxlckZvclVSTDp0YXJnZXRVUkxdOworICAgICAgICAgICAgcmV0dXJuIFt1aURlbGVn
YXRlIF93ZWJWaWV3OnNlbGYud2ViVmlldyBwcmV2aWV3Vmlld0NvbnRyb2xsZXJGb3JVUkw6dGFy
Z2V0VVJMXTsKICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKICAg
ICAgICAgcmV0dXJuIG5pbDsKQEAgLTkwNDMsNyArOTA0Myw3IEBAIC0gKFVJVmlld0NvbnRyb2xs
ZXIgKilfcHJlc2VudGVkVmlld0NvbnRyb2xsZXJGb3JQcmV2aWV3SXRlbUNvbnRyb2xsZXI6KFVJ
UHJldmllCiAgICAgICAgIFJldGFpblB0cjxVSUltYWdlPiB1aUltYWdlID0gYWRvcHROUyhbW1VJ
SW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpjZ0ltYWdlLmdldCgpXSk7CiAgICAgICAgIGlm
IChbdWlEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmFsdGVy
bmF0ZVVSTEZyb21JbWFnZTp1c2VySW5mbzopXSkgewogICAgICAgICAgICAgTlNEaWN0aW9uYXJ5
ICp1c2VySW5mbzsKLSAgICAgICAgICAgIGFsdGVybmF0ZVVSTCA9IFt1aURlbGVnYXRlIF93ZWJW
aWV3Ol93ZWJWaWV3IGFsdGVybmF0ZVVSTEZyb21JbWFnZTp1aUltYWdlLmdldCgpIHVzZXJJbmZv
OiZ1c2VySW5mb107CisgICAgICAgICAgICBhbHRlcm5hdGVVUkwgPSBbdWlEZWxlZ2F0ZSBfd2Vi
VmlldzpzZWxmLndlYlZpZXcgYWx0ZXJuYXRlVVJMRnJvbUltYWdlOnVpSW1hZ2UuZ2V0KCkgdXNl
ckluZm86JnVzZXJJbmZvXTsKICAgICAgICAgICAgIGltYWdlSW5mbyA9IHVzZXJJbmZvOwogICAg
ICAgICB9CiAKQEAgLTkwNTIsMTMgKzkwNTIsMTMgQEAgLSAoVUlWaWV3Q29udHJvbGxlciAqKV9w
cmVzZW50ZWRWaWV3Q29udHJvbGxlckZvclByZXZpZXdJdGVtQ29udHJvbGxlcjooVUlQcmV2aWUK
IAogICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgICAgICBp
ZiAoW3VpRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzp3aWxs
UHJldmlld0ltYWdlV2l0aFVSTDopXSkKLSAgICAgICAgICAgIFt1aURlbGVnYXRlIF93ZWJWaWV3
Ol93ZWJWaWV3IHdpbGxQcmV2aWV3SW1hZ2VXaXRoVVJMOnRhcmdldFVSTF07CisgICAgICAgICAg
ICBbdWlEZWxlZ2F0ZSBfd2ViVmlldzpzZWxmLndlYlZpZXcgd2lsbFByZXZpZXdJbWFnZVdpdGhV
Ukw6dGFyZ2V0VVJMXTsKICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5E
CiAKICAgICAgICAgYXV0byBkZWZhdWx0QWN0aW9ucyA9IFtfYWN0aW9uU2hlZXRBc3Npc3RhbnQg
ZGVmYXVsdEFjdGlvbnNGb3JJbWFnZVNoZWV0OmVsZW1lbnRJbmZvLmdldCgpXTsKICAgICAgICAg
aWYgKGltYWdlSW5mbyAmJiBbdWlEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KF93ZWJWaWV3OnByZXZpZXdWaWV3Q29udHJvbGxlckZvckltYWdlOmFsdGVybmF0ZVVSTDpkZWZh
dWx0QWN0aW9uczplbGVtZW50SW5mbzopXSkgewogICAgICAgICAgICAgQUxMT1dfREVQUkVDQVRF
RF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICAgICAgICAgIFVJVmlld0NvbnRyb2xsZXIgKnByZXZp
ZXdWaWV3Q29udHJvbGxlciA9IFt1aURlbGVnYXRlIF93ZWJWaWV3Ol93ZWJWaWV3IHByZXZpZXdW
aWV3Q29udHJvbGxlckZvckltYWdlOnVpSW1hZ2UuZ2V0KCkgYWx0ZXJuYXRlVVJMOmFsdGVybmF0
ZVVSTC5nZXQoKSBkZWZhdWx0QWN0aW9uczpkZWZhdWx0QWN0aW9ucy5nZXQoKSBlbGVtZW50SW5m
bzplbGVtZW50SW5mby5nZXQoKV07CisgICAgICAgICAgICBVSVZpZXdDb250cm9sbGVyICpwcmV2
aWV3Vmlld0NvbnRyb2xsZXIgPSBbdWlEZWxlZ2F0ZSBfd2ViVmlldzpzZWxmLndlYlZpZXcgcHJl
dmlld1ZpZXdDb250cm9sbGVyRm9ySW1hZ2U6dWlJbWFnZS5nZXQoKSBhbHRlcm5hdGVVUkw6YWx0
ZXJuYXRlVVJMLmdldCgpIGRlZmF1bHRBY3Rpb25zOmRlZmF1bHRBY3Rpb25zLmdldCgpIGVsZW1l
bnRJbmZvOmVsZW1lbnRJbmZvLmdldCgpXTsKICAgICAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0VORAogICAgICAgICAgICAgaWYgKHByZXZpZXdWaWV3Q29udHJvbGxlcikK
ICAgICAgICAgICAgICAgICByZXR1cm4gcHJldmlld1ZpZXdDb250cm9sbGVyOwpAQCAtOTA3OSw3
ICs5MDc5LDcgQEAgLSAodm9pZClfcHJldmlld0l0ZW1Db250cm9sbGVyOihVSVByZXZpZXdJdGVt
Q29udHJvbGxlciAqKWNvbnRyb2xsZXIgY29tbWl0UHJldmkKICAgICAgICAgICAgIGlmIChpbWFn
ZVVSTC5pc0VtcHR5KCkgfHwgIShpbWFnZVVSTC5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgfHwg
aW1hZ2VVUkwucHJvdG9jb2xJcygiZGF0YSIpKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAgICAgICAg
ICAgW3VpRGVsZWdhdGUgX3dlYlZpZXc6X3dlYlZpZXcgY29tbWl0UHJldmlld2VkSW1hZ2VXaXRo
VVJMOihOU1VSTCAqKWltYWdlVVJMXTsKKyAgICAgICAgICAgIFt1aURlbGVnYXRlIF93ZWJWaWV3
OnNlbGYud2ViVmlldyBjb21taXRQcmV2aWV3ZWRJbWFnZVdpdGhVUkw6KE5TVVJMICopaW1hZ2VV
UkxdOwogICAgICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTkwODgsMTQgKzkwODgsMTQgQEAgLSAodm9p
ZClfcHJldmlld0l0ZW1Db250cm9sbGVyOihVSVByZXZpZXdJdGVtQ29udHJvbGxlciAqKWNvbnRy
b2xsZXIgY29tbWl0UHJldmkKIAogICAgIGlmIChbdWlEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKHdlYlZpZXc6Y29tbWl0UHJldmlld2luZ1ZpZXdDb250cm9sbGVyOildKSB7
CiAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCi0gICAgICAgIFt1
aURlbGVnYXRlIHdlYlZpZXc6X3dlYlZpZXcgY29tbWl0UHJldmlld2luZ1ZpZXdDb250cm9sbGVy
OnZpZXdDb250cm9sbGVyXTsKKyAgICAgICAgW3VpRGVsZWdhdGUgd2ViVmlldzpzZWxmLndlYlZp
ZXcgY29tbWl0UHJldmlld2luZ1ZpZXdDb250cm9sbGVyOnZpZXdDb250cm9sbGVyXTsKICAgICAg
ICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKICAgICBpZiAoW3VpRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihf
d2ViVmlldzpjb21taXRQcmV2aWV3ZWRWaWV3Q29udHJvbGxlcjopXSkgewogICAgICAgICBBTExP
V19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAgICAgICBbdWlEZWxlZ2F0ZSBfd2Vi
Vmlldzpfd2ViVmlldyBjb21taXRQcmV2aWV3ZWRWaWV3Q29udHJvbGxlcjp2aWV3Q29udHJvbGxl
cl07CisgICAgICAgIFt1aURlbGVnYXRlIF93ZWJWaWV3OnNlbGYud2ViVmlldyBjb21taXRQcmV2
aWV3ZWRWaWV3Q29udHJvbGxlcjp2aWV3Q29udHJvbGxlcl07CiAgICAgICAgIEFMTE9XX0RFUFJF
Q0FURURfREVDTEFSQVRJT05TX0VORAogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtOTEyMiw5
ICs5MTIyLDkgQEAgLSAodm9pZClfcHJldmlld0l0ZW1Db250cm9sbGVyOihVSVByZXZpZXdJdGVt
Q29udHJvbGxlciAqKWNvbnRyb2xsZXIgZGlkRGlzbWlzc1AKICAgICBpZDxXS1VJRGVsZWdhdGVQ
cml2YXRlPiB1aURlbGVnYXRlID0gc3RhdGljX2Nhc3Q8aWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+
PihbX3dlYlZpZXcgVUlEZWxlZ2F0ZV0pOwogICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0JFR0lOCiAgICAgaWYgKFt1aURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0
b3IoX3dlYlZpZXc6ZGlkRGlzbWlzc1ByZXZpZXdWaWV3Q29udHJvbGxlcjpjb21taXR0aW5nOild
KQotICAgICAgICBbdWlEZWxlZ2F0ZSBfd2ViVmlldzpfd2ViVmlldyBkaWREaXNtaXNzUHJldmll
d1ZpZXdDb250cm9sbGVyOnZpZXdDb250cm9sbGVyIGNvbW1pdHRpbmc6Y29tbWl0dGluZ107Cisg
ICAgICAgIFt1aURlbGVnYXRlIF93ZWJWaWV3OnNlbGYud2ViVmlldyBkaWREaXNtaXNzUHJldmll
d1ZpZXdDb250cm9sbGVyOnZpZXdDb250cm9sbGVyIGNvbW1pdHRpbmc6Y29tbWl0dGluZ107CiAg
ICAgZWxzZSBpZiAoW3VpRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2Vi
VmlldzpkaWREaXNtaXNzUHJldmlld1ZpZXdDb250cm9sbGVyOildKQotICAgICAgICBbdWlEZWxl
Z2F0ZSBfd2ViVmlldzpfd2ViVmlldyBkaWREaXNtaXNzUHJldmlld1ZpZXdDb250cm9sbGVyOnZp
ZXdDb250cm9sbGVyXTsKKyAgICAgICAgW3VpRGVsZWdhdGUgX3dlYlZpZXc6c2VsZi53ZWJWaWV3
IGRpZERpc21pc3NQcmV2aWV3Vmlld0NvbnRyb2xsZXI6dmlld0NvbnRyb2xsZXJdOwogICAgIEFM
TE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCiAgICAgW193ZWJWaWV3IF9kaWREaXNt
aXNzQ29udGV4dE1lbnVdOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386725</attachid>
            <date>2020-01-03 16:15:02 -0800</date>
            <delta_ts>2020-01-03 16:15:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205749-20200103161501.patch</filename>
            <type>text/plain</type>
            <size>74088</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0MDE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDJhMzNjOTVjY2IzOTAzZjg4
ZDRiNWJjYzhmMWY1MzEyZTZiNzczMzYuLjZlMjRjYWNkMDliNDgxNzZlZjNiYWFiYTdmN2U4YTc2
YjhkZWJjYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTggQEAKKzIwMjAtMDEtMDMgIFRpbSBIb3J0
b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgQ3Jhc2hlcyB1bmRlciAt
W1dLV2ViVmlldyBfYWRkVXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0UHJlQ29tbWl0SGFuZGxlcl1f
YmxvY2tfaW52b2tlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDU3NDkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU2NDMzNjI0PgorCisgICAgICAg
IFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICBJbXBsZW1lbnQgYSBzcGVjdWxh
dGl2ZSBmaXggZm9yIGEgY29tbW9uIGNyYXNoLiBXZSBiZWxpZXZlIHRoYXQgdGhpcyBpcyBkdWUg
dG8KKyAgICAgICAgYSBtZWNoYW5pc20gVUlLaXQgdXNlcyB0byBib3VuY2UgLWRlYWxsb2MgKGlu
IG91ciBjYXNlLCBvZiBXS1dlYlZpZXcgYW5kL29yIFdLQ29udGVudFZpZXcpCisgICAgICAgIHRv
IHRoZSBtYWluIHRocmVhZCB3aGVuIHRoZSBsYXN0IHJlZmVyZW5jZSBpcyBkcm9wcGVkIG9uIGEg
YmFja2dyb3VuZCB0aHJlYWQuCisgICAgICAgIEF0IHRoYXQgcG9pbnQsIGRlYWxsb2NhdGlvbiBo
YXMgYWxyZWFkeSBiZWd1biwgLXJldGFpbiBjYW5ub3QgcmV2aXZlIHRoZSBvYmplY3QsCisgICAg
ICAgIGJ1dCAtZGVhbGxvYyBoYXMgbm90IHlldCBiZWVuIGNhbGxlZCAoYmVjYXVzZSBvZiB0aGUg
bmF0dXJlIG9mIHRoaXMgbWVjaGFuaXNtKS4KKworICAgICAgICBUbyBhdm9pZCB0aGlzLCBtYWtl
IFBhZ2VDbGllbnRJbXBsIC0+IFdLQ29udGVudFZpZXcgYW5kIFdLQ29udGVudFZpZXcgLT4gV0tX
ZWJWaWV3CisgICAgICAgIHdlYWsgaW5zdGVhZCBvZiByYXcgcmVmZXJlbmNlcy4gVGhpcyB3YXks
IHdlIHdvbid0IGV2ZW4gZ2V0IHRvIF9hZGRVcGRhdGVWaXNpYmxlQ29udGVudFJlY3RQcmVDb21t
aXRIYW5kbGVyCisgICAgICAgIHdpdGggYSBkZWFsbG9jYXRpbmcgV0tXZWJWaWV3LCBub3IgdHJ5
IChhbmQgZmFpbCkgdG8gcmV0YWluIGl0IGZvciBsYXRlciB1c2UgaW4gdGhlIGJsb2NrLgorCisg
ICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VD
bGllbnRJbXBsOjp2aWV3U2l6ZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpk
aWRQZXJmb3JtRGljdGlvbmFyeUxvb2t1cCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJ
bXBsOjpjcmVhdGVWYWxpZGF0aW9uQnViYmxlKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVu
dEltcGw6OmNyZWF0ZURhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bik6CisgICAgICAgIChXZWJL
aXQ6OlBhZ2VDbGllbnRJbXBsOjpjcmVhdGVEcmF3aW5nVmlldyk6CisgICAgICAgICogVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRl
bnRWaWV3Lm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9jb21tb25Jbml0aWFsaXphdGlv
bldpdGhQcm9jZXNzUG9vbDpjb25maWd1cmF0aW9uOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRW
aWV3IHdlYlZpZXddKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBkaWRVcGRhdGVWaXNpYmxl
UmVjdDp1bm9ic2N1cmVkUmVjdDpjb250ZW50SW5zZXRzOnVub2JzY3VyZWRSZWN0SW5TY3JvbGxW
aWV3Q29vcmRpbmF0ZXM6b2JzY3VyZWRJbnNldHM6dW5vYnNjdXJlZFNhZmVBcmVhSW5zZXRzOmlu
cHV0Vmlld0JvdW5kczpzY2FsZTptaW5pbXVtU2NhbGU6aW5TdGFibGVTdGF0ZTppc0NoYW5naW5n
T2JzY3VyZWRJbnNldHNJbnRlcmFjdGl2ZWx5OmVuY2xvc2VkSW5TY3JvbGxhYmxlQW5jZXN0b3JW
aWV3Ol0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9kaWRDb21taXRMYXllclRyZWU6XSk6
CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06Cisg
ICAgICAgICgtW1dLQ29udGVudFZpZXcgc2V0dXBJbnRlcmFjdGlvbl0pOgorICAgICAgICAoLVtX
S0NvbnRlbnRWaWV3IF91cGRhdGVMb25nUHJlc3NBbmRIaWdobGlnaHRMb25nUHJlc3NHZXN0dXJl
c10pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGVuZEVkaXRpbmdBbmRVcGRhdGVGb2N1c0Fw
cGVhcmFuY2VXaXRoUmVhc29uOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGdlc3R1cmVS
ZWNvZ25pemVyTWF5UGluY2hUb1pvb21XZWJWaWV3Ol0pOgorICAgICAgICAoLVtXS0NvbnRlbnRW
aWV3IF9zaG93QXR0YWNobWVudFNoZWV0XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2Fj
dGlvbkZvckxvbmdQcmVzc0Zyb21Qb3NpdGlvbkluZm9ybWF0aW9uOl0pOgorICAgICAgICAoLVtX
S0NvbnRlbnRWaWV3IGdlc3R1cmVSZWNvZ25pemVyU2hvdWxkQmVnaW46XSk6CisgICAgICAgICgt
W1dLQ29udGVudFZpZXcgaGFzU2VsZWN0YWJsZVBvc2l0aW9uQXRQb2ludDpdKToKKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyBwb2ludElzTmVhck1hcmtlZFRleHQ6XSk6CisgICAgICAgICgtW1dL
Q29udGVudFZpZXcgdGV4dEludGVyYWN0aW9uR2VzdHVyZTpzaG91bGRCZWdpbkF0UG9pbnQ6XSk6
CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3N0eWx1c1NpbmdsZVRhcFJlY29nbml6ZWQ6XSk6
CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2VuZFBvdGVudGlhbFRhcEFuZEVuYWJsZURvdWJs
ZVRhcEdlc3R1cmVzSWZOZWNlc3NhcnldKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfdXBk
YXRlSW50ZXJhY3Rpb25UaW50Q29sb3JdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBjYW5Q
ZXJmb3JtQWN0aW9uRm9yV2ViVmlldzp3aXRoU2VuZGVyOl0pOgorICAgICAgICAoLVtXS0NvbnRl
bnRWaWV3IGFjY2Vzc2liaWxpdHlSZXRyaWV2ZVNwZWFrU2VsZWN0aW9uQ29udGVudF0pOgorICAg
ICAgICAoLVtXS0NvbnRlbnRWaWV3IHJlcXVlc3RSZWN0c1RvRXZhZGVGb3JTZWxlY3Rpb25Db21t
YW5kc1dpdGhDb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBh
Y2Nlc3NvcnlBdXRvRmlsbF0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF91cGRhdGVBY2Nl
c3NvcnldKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfZGlkQ2hhbmdlV2ViVmlld0VkaXRh
YmlsaXR5XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgaW5zZXJ0VGV4dFN1Z2dlc3Rpb246
XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgaXNTY3JvbGxhYmxlRm9yS2V5Ym9hcmRTY3Jv
bGxWaWV3QW5pbWF0b3I6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcga2V5Ym9hcmRTY3Jv
bGxWaWV3QW5pbWF0b3I6ZGlzdGFuY2VGb3JJbmNyZW1lbnQ6aW5EaXJlY3Rpb246XSk6CisgICAg
ICAgICgtW1dLQ29udGVudFZpZXcgX2VsZW1lbnREaWRGb2N1czp1c2VySXNJbnRlcmFjdGluZzpi
bHVyUHJldmlvdXNOb2RlOmFjdGl2aXR5U3RhdGVDaGFuZ2VzOnVzZXJPYmplY3Q6XSk6CisgICAg
ICAgICgtW1dLQ29udGVudFZpZXcgYWRkRm9jdXNlZEZvcm1Db250cm9sT3ZlcmxheV0pOgorICAg
ICAgICAoLVtXS0NvbnRlbnRWaWV3IHByZXNlbnRWaWV3Q29udHJvbGxlckZvckN1cnJlbnRGb2N1
c2VkRWxlbWVudF0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGRpc21pc3NBbGxJbnB1dFZp
ZXdDb250cm9sbGVyczpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfc2hvd1NoYXJlU2hl
ZXQ6aW5SZWN0OmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3
IGFjdGlvblNoZWV0QXNzaXN0YW50OnNoYXJlRWxlbWVudFdpdGhVUkw6cmVjdDpdKToKKyAgICAg
ICAgKC1bV0tDb250ZW50VmlldyBhY3Rpb25TaGVldEFzc2lzdGFudDpzaG93Q3VzdG9tU2hlZXRG
b3JFbGVtZW50Ol0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGRhdGFEZXRlY3Rpb25Db250
ZXh0Rm9yUG9zaXRpb25JbmZvcm1hdGlvbjpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBh
Y3Rpb25TaGVldEFzc2lzdGFudDpnZXRBbHRlcm5hdGVVUkxGb3JJbWFnZTpjb21wbGV0aW9uOl0p
OgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9kaWRDaGFuZ2VEcmFnSW50ZXJhY3Rpb25Qb2xp
Y3ldKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBkcmFnTGlmdERlbGF5XSk6CisgICAgICAg
ICgtW1dLQ29udGVudFZpZXcgc2V0dXBEcmFnQW5kRHJvcEludGVyYWN0aW9uc10pOgorICAgICAg
ICAoLVtXS0NvbnRlbnRWaWV3IF9kaWRQZXJmb3JtRHJhZ09wZXJhdGlvbjpdKToKKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyBfZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uRm9yRHJvcFNlc3Npb246XSk6
CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2l0ZW1zRm9yQmVnaW5uaW5nT3JBZGRpbmdUb1Nl
c3Npb25XaXRoUmVnaXN0cmF0aW9uTGlzdHM6c3RhZ2VkRHJhZ1NvdXJjZTpdKToKKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyBfaGFuZGxlRHJvcEJ5SW5zZXJ0aW5nSW1hZ2VQbGFjZWhvbGRlcnM6
c2Vzc2lvbjpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfZHJhZ0ludGVyYWN0aW9uOmRh
dGFPd25lckZvclNlc3Npb246XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgZHJhZ0ludGVy
YWN0aW9uOnByZXZpZXdGb3JMaWZ0aW5nSXRlbTpzZXNzaW9uOl0pOgorICAgICAgICAoLVtXS0Nv
bnRlbnRWaWV3IGRyYWdJbnRlcmFjdGlvbjpzZXNzaW9uV2lsbEJlZ2luOl0pOgorICAgICAgICAo
LVtXS0NvbnRlbnRWaWV3IGRyYWdJbnRlcmFjdGlvbjpzZXNzaW9uOmRpZEVuZFdpdGhPcGVyYXRp
b246XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgZHJhZ0ludGVyYWN0aW9uOnByZXZpZXdG
b3JDYW5jZWxsaW5nSXRlbTp3aXRoRGVmYXVsdDpdKToKKyAgICAgICAgKC1bV0tDb250ZW50Vmll
dyBfZHJvcEludGVyYWN0aW9uOmRhdGFPd25lckZvclNlc3Npb246XSk6CisgICAgICAgICgtW1dL
Q29udGVudFZpZXcgZHJvcEludGVyYWN0aW9uOnNlc3Npb25EaWRVcGRhdGU6XSk6CisgICAgICAg
ICgtW1dLQ29udGVudFZpZXcgZHJvcEludGVyYWN0aW9uOnBlcmZvcm1Ecm9wOl0pOgorICAgICAg
ICAoLVtXS0NvbnRlbnRWaWV3IGRpc21pc3NRdWlja2JvYXJkVmlld0NvbnRyb2xsZXJBbmRSZXZl
YWxGb2N1c2VkRm9ybU92ZXJsYXlJZk5lY2Vzc2FyeTpdKToKKyAgICAgICAgKC1bV0tDb250ZW50
VmlldyB2aWV3Q29udHJvbGxlcjppbnB1dENvbnRleHRWaWV3SGVpZ2h0Rm9yU2l6ZTpdKToKKyAg
ICAgICAgKC1bV0tDb250ZW50VmlldyBpbnB1dENvbnRleHRWaWV3Rm9yVmlld0NvbnRyb2xsZXI6
XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3JlZ2lzdGVyUHJldmlld10pOgorICAgICAg
ICAoLVtXS0NvbnRlbnRWaWV3IGFzc2lnbkxlZ2FjeURhdGFGb3JDb250ZXh0TWVudUludGVyYWN0
aW9uXSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2NvbnRleHRNZW51SW50ZXJhY3Rpb246
Y29uZmlndXJhdGlvbkZvck1lbnVBdExvY2F0aW9uOmNvbXBsZXRpb246XSk6CisgICAgICAgICgt
W1dLQ29udGVudFZpZXcgY29udGludWVDb250ZXh0TWVudUludGVyYWN0aW9uOl0pOgorICAgICAg
ICAoLVtXS0NvbnRlbnRWaWV3IF9jcmVhdGVUYXJnZXRlZFByZXZpZXdJZlBvc3NpYmxlXSk6Cisg
ICAgICAgICgtW1dLQ29udGVudFZpZXcgY29udGV4dE1lbnVJbnRlcmFjdGlvbjp3aWxsRGlzcGxh
eU1lbnVGb3JDb25maWd1cmF0aW9uOmFuaW1hdG9yOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRW
aWV3IGNvbnRleHRNZW51SW50ZXJhY3Rpb246d2lsbFBlcmZvcm1QcmV2aWV3QWN0aW9uRm9yTWVu
dVdpdGhDb25maWd1cmF0aW9uOmFuaW1hdG9yOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3
IGNvbnRleHRNZW51SW50ZXJhY3Rpb246d2lsbEVuZEZvckNvbmZpZ3VyYXRpb246YW5pbWF0b3I6
XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2ludGVyYWN0aW9uU2hvdWxkQmVnaW5Gcm9t
UHJldmlld0l0ZW1Db250cm9sbGVyOmZvclBvc2l0aW9uOl0pOgorICAgICAgICAoLVtXS0NvbnRl
bnRWaWV3IF9kYXRhRm9yUHJldmlld0l0ZW1Db250cm9sbGVyOmF0UG9zaXRpb246dHlwZTpdKToK
KyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfcHJlc2VudGVkVmlld0NvbnRyb2xsZXJGb3JQcmV2
aWV3SXRlbUNvbnRyb2xsZXI6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3ByZXZpZXdJ
dGVtQ29udHJvbGxlcjpjb21taXRQcmV2aWV3Ol0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3
IF9wcmV2aWV3SXRlbUNvbnRyb2xsZXI6ZGlkRGlzbWlzc1ByZXZpZXc6Y29tbWl0dGluZzpdKToK
KwogMjAyMC0wMS0wMyAgUGVuZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUuY29tPgogCiAgICAgICAg
IFVwZGF0ZSB0aGUgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OkxvYWQgWFBDIG1lc3Nh
Z2UgdG8gcHJvdmlkZSB0aGUgdXBkYXRlZCBSZW1vdGVNZWRpYVBsYXllckNvbmZpZ3VyYXRpb24g
dG8gdGhlIHdlYiBwcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbQppbmRleCAxMzk3MTAyYWI5ZDYyMjgxMjQzMzE3ZDUwYThiZDA2NDdkZWVh
OWM1Li4yYzgyYzAzNzA1MTBlMjYzMzE5ZWMwZTU3ZGYxYWE4MmQ3NWJmYWUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTYwNSw4ICs2
MDUsNiBAQCAtICh2b2lkKWRlYWxsb2MKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKLSAgICBfaGFzRW50ZXJlZERlYWxsb2MgPSBZRVM7Ci0KICAgICBbX2NvbnRlbnRWaWV3IF93
ZWJWaWV3RGVzdHJveWVkXTsKIAogICAgIGlmIChfcmVtb3RlT2JqZWN0UmVnaXN0cnkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJu
YWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5h
bC5oCmluZGV4IDZjYjk4M2Y2MDU0MDZiMzM0YTMyNWFmMmU1YTZmZGMzOTRmOGMwMTkuLjBmODlm
ZDZmMDM5YWRhMmE2NjNlNDA2NzA1NTZhMDdhZWNiYzFlNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oCkBAIC0yMjks
OSArMjI5LDYgQEAgY2xhc3MgVmlld0dlc3R1cmVDb250cm9sbGVyOwogCiAgICAgTlNVSW50ZWdl
ciBfZm9jdXNQcmVzZXJ2YXRpb25Db3VudDsKICAgICBOU1VJbnRlZ2VyIF9hY3RpdmVGb2N1c2Vk
U3RhdGVSZXRhaW5Db3VudDsKLQotICAgIEJPT0wgX2hhc0VudGVyZWREZWFsbG9jOwotCiAjZW5k
aWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dl
YlZpZXdJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lP
Uy5tbQppbmRleCAxNWVlZTU1YTIxZmUxODQyNmY4NWM1MWRkNzUzMmNjZDIzMWRiMDlhLi5iMGZi
NzlhMmU0NzlhM2NjZGY3Y2E1Mzg1ZjM0MTJkMGIyZmE5OGVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbQpAQCAtMTc1NiwxMSArMTc1Niw2
IEBAIC0gKEJPT0wpX3Njcm9sbFZpZXdJc0luU3RhYmxlU3RhdGU6KFVJU2Nyb2xsVmlldyAqKXNj
cm9sbFZpZXcKIAogLSAodm9pZClfYWRkVXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0UHJlQ29tbWl0
SGFuZGxlcgogewotICAgIGlmIChfaGFzRW50ZXJlZERlYWxsb2MpIHsKLSAgICAgICAgUkVMRUFT
RV9MT0dfRkFVTFQoVmlld1N0YXRlLCAiLVtXS1dlYlZpZXcgJXAgX2FkZFVwZGF0ZVZpc2libGVD
b250ZW50UmVjdFByZUNvbW1pdEhhbmRsZXJdOiBBdHRlbXB0ZWQgdG8gYWRkIHByZS1jb21taXQg
aGFuZGxlciB1bmRlciAtZGVhbGxvYy4gQmFpbGluZy4iLCBzZWxmKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQogICAgIGF1dG8gcmV0YWluZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpOwogICAg
IFtDQVRyYW5zYWN0aW9uIGFkZENvbW1pdEhhbmRsZXI6W3JldGFpbmVkU2VsZl0gewogICAgICAg
ICBXS1dlYlZpZXcgKndlYlZpZXcgPSByZXRhaW5lZFNlbGYuZ2V0KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCmluZGV4IGQ2YzhjMzhkNGE2
NTExOTI2MjUwYTZjZjRiMDNhMjRhOTliMDNiYzguLmEwN2M1ZDNmNmViNmEyNDFkMTg2MWEyNTQy
YTU2Y2MwMGVjM2YwZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9Q
YWdlQ2xpZW50SW1wbElPUy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdl
Q2xpZW50SW1wbElPUy5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW1wb3J0ICJQYWdlQ2xpZW50SW1w
bENvY29hLmgiCiAjaW1wb3J0ICJXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5LmgiCiAjaW1wb3J0
IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KIAogT0JKQ19D
TEFTUyBXS0NvbnRlbnRWaWV3OwogT0JKQ19DTEFTUyBXS0VkaXRvclVuZG9UYXJnZXQ7CkBAIC0y
NTgsNyArMjU5LDcgQEAgcHJpdmF0ZToKICAgICBXVEY6Ok9wdGlvbmFsPHVuc2lnbmVkPiBhY3Rp
dmVUb3VjaElkZW50aWZpZXJGb3JHZXN0dXJlUmVjb2duaXplcihVSUdlc3R1cmVSZWNvZ25pemVy
Kikgb3ZlcnJpZGU7CiAjZW5kaWYKIAotICAgIFdLQ29udGVudFZpZXcgKm1fY29udGVudFZpZXc7
CisgICAgV2Vha09iakNQdHI8V0tDb250ZW50Vmlldz4gbV9jb250ZW50VmlldzsKICAgICBSZXRh
aW5QdHI8V0tFZGl0b3JVbmRvVGFyZ2V0PiBtX3VuZG9UYXJnZXQ7CiB9OwogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNs
aWVudEltcGxJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudElt
cGxJT1MubW0KaW5kZXggNjBiYTg1OTdkMjg5N2ZlYjY0ZGVlZjFiZTkxZmY2ZmRlN2QyNzQzMi4u
ZGJmYjM0OTAwYWQ5ODNhOGYyMjY3YTI5Y2NjYTlhZGJiODlkZTJkNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQpAQCAtMTE0LDcgKzEx
NCw3IEBAIEludFNpemUgUGFnZUNsaWVudEltcGw6OnZpZXdTaXplKCkKICAgICBpZiAoVUlTY3Jv
bGxWaWV3ICpzY3JvbGxlciA9IFttX2NvbnRlbnRWaWV3IF9zY3JvbGxlcl0pCiAgICAgICAgIHJl
dHVybiBJbnRTaXplKHNjcm9sbGVyLmJvdW5kcy5zaXplKTsKIAotICAgIHJldHVybiBJbnRTaXpl
KG1fY29udGVudFZpZXcuYm91bmRzLnNpemUpOworICAgIHJldHVybiBJbnRTaXplKFttX2NvbnRl
bnRWaWV3IGJvdW5kc10uc2l6ZSk7CiB9CiAKIGJvb2wgUGFnZUNsaWVudEltcGw6OmlzVmlld1dp
bmRvd0FjdGl2ZSgpCkBAIC00ODYsNyArNDg2LDcgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6dXBk
YXRlQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpCiB2
b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRQZXJmb3JtRGljdGlvbmFyeUxvb2t1cChjb25zdCBEaWN0
aW9uYXJ5UG9wdXBJbmZvJiBkaWN0aW9uYXJ5UG9wdXBJbmZvKQogewogI2lmIEVOQUJMRShSRVZF
QUwpCi0gICAgRGljdGlvbmFyeUxvb2t1cDo6c2hvd1BvcHVwKGRpY3Rpb25hcnlQb3B1cEluZm8s
IG1fY29udGVudFZpZXcsIG51bGxwdHIpOworICAgIERpY3Rpb25hcnlMb29rdXA6OnNob3dQb3B1
cChkaWN0aW9uYXJ5UG9wdXBJbmZvLCBtX2NvbnRlbnRWaWV3LmdldEF1dG9yZWxlYXNlZCgpLCBu
dWxscHRyKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGRpY3Rpb25hcnlQb3B1cEluZm8pOwog
I2VuZGlmIC8vIEVOQUJMRShSRVZFQUwpCkBAIC04MTIsNyArODEyLDcgQEAgV2ViQ29yZTo6VXNl
ckludGVyZmFjZUxheW91dERpcmVjdGlvbiBQYWdlQ2xpZW50SW1wbDo6dXNlckludGVyZmFjZUxh
eW91dERpcmVjdGkKIAogUmVmPFZhbGlkYXRpb25CdWJibGU+IFBhZ2VDbGllbnRJbXBsOjpjcmVh
dGVWYWxpZGF0aW9uQnViYmxlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgVmFsaWRhdGlv
bkJ1YmJsZTo6U2V0dGluZ3MmIHNldHRpbmdzKQogewotICAgIHJldHVybiBWYWxpZGF0aW9uQnVi
YmxlOjpjcmVhdGUobV9jb250ZW50VmlldywgbWVzc2FnZSwgc2V0dGluZ3MpOworICAgIHJldHVy
biBWYWxpZGF0aW9uQnViYmxlOjpjcmVhdGUobV9jb250ZW50Vmlldy5nZXRBdXRvcmVsZWFzZWQo
KSwgbWVzc2FnZSwgc2V0dGluZ3MpOwogfQogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1Ip
CkBAIC04MjUsNyArODI1LDcgQEAgUmVmUHRyPFdlYkNvbG9yUGlja2VyPiBQYWdlQ2xpZW50SW1w
bDo6Y3JlYXRlQ29sb3JQaWNrZXIoV2ViUGFnZVByb3h5KiwgY29uc3QgV2UKICNpZiBFTkFCTEUo
REFUQUxJU1RfRUxFTUVOVCkKIFJlZlB0cjxXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd24+
IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd24oV2ViUGFn
ZVByb3h5JiBwYWdlKQogewotICAgIHJldHVybiBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRv
d25JT1M6OmNyZWF0ZShwYWdlLCBtX2NvbnRlbnRWaWV3KTsKKyAgICByZXR1cm4gV2ViRGF0YUxp
c3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TOjpjcmVhdGUocGFnZSwgbV9jb250ZW50Vmlldy5nZXRB
dXRvcmVsZWFzZWQoKSk7CiB9CiAjZW5kaWYKIApAQCAtODkzLDcgKzg5Myw3IEBAIHZvaWQgUGFn
ZUNsaWVudEltcGw6OnJlcXVlc3RET01QYXN0ZUFjY2Vzcyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JiBlbGVtZW50UmVjdCwKICNpZiBIQVZFKFBFTkNJTEtJVCkKIFJldGFpblB0cjxXS0RyYXdpbmdW
aWV3PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlRHJhd2luZ1ZpZXcoV2ViQ29yZTo6R3JhcGhpY3NM
YXllcjo6RW1iZWRkZWRWaWV3SUQgZW1iZWRkZWRWaWV3SUQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0
TlMoW1tXS0RyYXdpbmdWaWV3IGFsbG9jXSBpbml0V2l0aEVtYmVkZGVkVmlld0lEOmVtYmVkZGVk
Vmlld0lEIGNvbnRlbnRWaWV3Om1fY29udGVudFZpZXddKTsKKyAgICByZXR1cm4gYWRvcHROUyhb
W1dLRHJhd2luZ1ZpZXcgYWxsb2NdIGluaXRXaXRoRW1iZWRkZWRWaWV3SUQ6ZW1iZWRkZWRWaWV3
SUQgY29udGVudFZpZXc6bV9jb250ZW50Vmlldy5nZXRBdXRvcmVsZWFzZWQoKV0pOwogfQogI2Vu
ZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5oCmluZGV4
IDYwNmRlMTMzNzQ3YzJlMWNhMjNjNzZmZDUyYTAwM2RkMTIyYjUyNjkuLjU3Y2ZiYmY0NGQ4MmQy
NjMxNmQ5NzMyMDM1N2VmNzUzYWNjMTZjY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXcuaApAQCAtMjksNiArMjksNyBAQAogI2ltcG9ydCAiV0tCcm93c2lu
Z0NvbnRleHRHcm91cC5oIgogI2ltcG9ydCAiV0tQcm9jZXNzR3JvdXAuaCIKICNpbXBvcnQgPHd0
Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0ci5oPgogCiBAY2xhc3MgV0tD
b250ZW50VmlldzsKIEBjbGFzcyBXS1dlYlZpZXc7CkBAIC01NCw3ICs1NSw3IEBAIGNsYXNzIFdl
YlByb2Nlc3NQb29sOwogQGludGVyZmFjZSBXS0NvbnRlbnRWaWV3IDogV0tBcHBsaWNhdGlvblN0
YXRlVHJhY2tpbmdWaWV3IHsKIEBwYWNrYWdlCiAgICAgUmVmUHRyPFdlYktpdDo6V2ViUGFnZVBy
b3h5PiBfcGFnZTsKLSAgICBXS1dlYlZpZXcgKl93ZWJWaWV3OyAvLyBGSVhNRTogVGhpcyBzaG91
bGQgYmUgbWFkZSBhIFdlYWtPYmpDUHRyIG9uY2UgZXZlcnl0aGluZyB0aGF0IHJlZmVycyB0byBp
dCBpcyBtb3ZlZCB0byBPcGVuU291cmNlLgorICAgIFdlYWtPYmpDUHRyPFdLV2ViVmlldz4gX3dl
YlZpZXc7CiB9CiAKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCkBAIC05MCw2ICs5MSw4
IEBAIGNsYXNzIFdlYlByb2Nlc3NQb29sOwogCiAtICh2b2lkKV93ZWJWaWV3RGVzdHJveWVkOwog
CistIChXS1dlYlZpZXcgKil3ZWJWaWV3OworCiAtIChzdGQ6OnVuaXF1ZV9wdHI8V2ViS2l0OjpE
cmF3aW5nQXJlYVByb3h5PilfY3JlYXRlRHJhd2luZ0FyZWFQcm94eTooV2ViS2l0OjpXZWJQcm9j
ZXNzUHJveHkmKXByb2Nlc3M7CiAtICh2b2lkKV9wcm9jZXNzRGlkRXhpdDsKIC0gKHZvaWQpX3By
b2Nlc3NXaWxsU3dhcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXcubW0KaW5kZXggMDQ3ODM5ODdlNzVkYTVlYWViZDIyYzBkMzBlN2ViYjg4NjY1NTM4NC4uMjli
YTYwNjU4Mjg0NGRlYTY3ODVkZmYxMmZiYmFiNWU4YzliMzFmZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KQEAgLTE2OSw3ICsxNjksNyBAQCAtIChp
bnN0YW5jZXR5cGUpX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aFByb2Nlc3NQb29sOihXZWJLaXQ6
OldlYlByb2Nlc3NQb29sJilwcgogICAgIF9wYWdlLT5zZXREZWxlZ2F0ZXNTY3JvbGxpbmcodHJ1
ZSk7CiAKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0gICAgX3BhZ2UtPnNldEZ1bGxzY3Jl
ZW5DbGllbnQobWFrZVVuaXF1ZTxXZWJLaXQ6OkZ1bGxzY3JlZW5DbGllbnQ+KF93ZWJWaWV3KSk7
CisgICAgX3BhZ2UtPnNldEZ1bGxzY3JlZW5DbGllbnQobWFrZVVuaXF1ZTxXZWJLaXQ6OkZ1bGxz
Y3JlZW5DbGllbnQ+KHNlbGYud2ViVmlldykpOwogI2VuZGlmCiAKICAgICBXZWJLaXQ6OldlYlBy
b2Nlc3NQb29sOjpzdGF0aXN0aWNzKCkud2tWaWV3Q291bnQrKzsKQEAgLTI2OSw2ICsyNjksMTEg
QEAgLSAoV2ViS2l0OjpXZWJQYWdlUHJveHkqKXBhZ2UKICAgICByZXR1cm4gX3BhZ2UuZ2V0KCk7
CiB9CiAKKy0gKFdLV2ViVmlldyAqKXdlYlZpZXcKK3sKKyAgICByZXR1cm4gX3dlYlZpZXcuZ2V0
QXV0b3JlbGVhc2VkKCk7Cit9CisKIC0gKHZvaWQpd2lsbE1vdmVUb1dpbmRvdzooVUlXaW5kb3cg
KiluZXdXaW5kb3cKIHsKICAgICBbc3VwZXIgd2lsbE1vdmVUb1dpbmRvdzpuZXdXaW5kb3ddOwpA
QCAtNDI2LDcgKzQzMSw3IEBAIC0gKHZvaWQpZGlkVXBkYXRlVmlzaWJsZVJlY3Q6KENHUmVjdCl2
aXNpYmxlQ29udGVudFJlY3QKICAgICAgICAgaXNTdGFibGVTdGF0ZSwKICAgICAgICAgX3NpemVD
aGFuZ2VkU2luY2VMYXN0VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlLAogICAgICAgICBpc0NoYW5n
aW5nT2JzY3VyZWRJbnNldHNJbnRlcmFjdGl2ZWx5LAotICAgICAgICBfd2ViVmlldy5fYWxsb3dz
Vmlld3BvcnRTaHJpbmtUb0ZpdCwKKyAgICAgICAgc2VsZi53ZWJWaWV3Ll9hbGxvd3NWaWV3cG9y
dFNocmlua1RvRml0LAogICAgICAgICBlbmNsb3NlZEluU2Nyb2xsYWJsZUFuY2VzdG9yVmlldywK
ICAgICAgICAgdmVsb2NpdHlEYXRhLAogICAgICAgICBkb3duY2FzdDxXZWJLaXQ6OlJlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhUHJveHk+KCpkcmF3aW5nQXJlYSkubGFzdENvbW1pdHRlZExheWVy
VHJlZVRyYW5zYWN0aW9uSUQoKSk7CkBAIC02MjIsMTQgKzYyNywxNCBAQCAtICh2b2lkKV9kaWRD
b21taXRMYXllclRyZWU6KGNvbnN0IFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24m
KWxheWVyVHJlZQogCiAgICAgaWYgKF9pbnRlcmFjdGlvblZpZXdzQ29udGFpbmVyVmlldykgewog
ICAgICAgICBXZWJDb3JlOjpGbG9hdFBvaW50IHNjYWxlZE9yaWdpbiA9IGxheWVyVHJlZVRyYW5z
YWN0aW9uLnNjcm9sbE9yaWdpbigpOwotICAgICAgICBmbG9hdCBzY2FsZSA9IFtbX3dlYlZpZXcg
c2Nyb2xsVmlld10gem9vbVNjYWxlXTsKKyAgICAgICAgZmxvYXQgc2NhbGUgPSBzZWxmLndlYlZp
ZXcuc2Nyb2xsVmlldy56b29tU2NhbGU7CiAgICAgICAgIHNjYWxlZE9yaWdpbi5zY2FsZShzY2Fs
ZSk7CiAgICAgICAgIFtfaW50ZXJhY3Rpb25WaWV3c0NvbnRhaW5lclZpZXcgc2V0RnJhbWU6Q0dS
ZWN0TWFrZShzY2FsZWRPcmlnaW4ueCgpLCBzY2FsZWRPcmlnaW4ueSgpLCAwLCAwKV07CiAgICAg
fQogICAgIAogICAgIGlmIChib3VuZHNDaGFuZ2VkKSB7CiAgICAgICAgIC8vIEZJWE1FOiBmYWN0
b3IgY29tcHV0ZUxheW91dFZpZXdwb3J0UmVjdCgpIGludG8gc29tZXRoaW5nIHRoYXQgZ2l2ZXMg
dXMgdGhpcyByZWN0LgotICAgICAgICBXZWJDb3JlOjpGbG9hdFJlY3QgZml4ZWRQb3NpdGlvblJl
Y3QgPSBfcGFnZS0+Y29tcHV0ZUxheW91dFZpZXdwb3J0UmVjdChfcGFnZS0+dW5vYnNjdXJlZENv
bnRlbnRSZWN0KCksIF9wYWdlLT51bm9ic2N1cmVkQ29udGVudFJlY3RSZXNwZWN0aW5nSW5wdXRW
aWV3Qm91bmRzKCksIF9wYWdlLT5sYXlvdXRWaWV3cG9ydFJlY3QoKSwgW1tfd2ViVmlldyBzY3Jv
bGxWaWV3XSB6b29tU2NhbGVdKTsKKyAgICAgICAgV2ViQ29yZTo6RmxvYXRSZWN0IGZpeGVkUG9z
aXRpb25SZWN0ID0gX3BhZ2UtPmNvbXB1dGVMYXlvdXRWaWV3cG9ydFJlY3QoX3BhZ2UtPnVub2Jz
Y3VyZWRDb250ZW50UmVjdCgpLCBfcGFnZS0+dW5vYnNjdXJlZENvbnRlbnRSZWN0UmVzcGVjdGlu
Z0lucHV0Vmlld0JvdW5kcygpLCBfcGFnZS0+bGF5b3V0Vmlld3BvcnRSZWN0KCksIHNlbGYud2Vi
Vmlldy5zY3JvbGxWaWV3Lnpvb21TY2FsZSk7CiAgICAgICAgIFtzZWxmIHVwZGF0ZUZpeGVkQ2xp
cHBpbmdWaWV3OmZpeGVkUG9zaXRpb25SZWN0XTsKIAogICAgICAgICAvLyBXZSBuZWVkIHRvIHB1
c2ggdGhlIG5ldyBjb250ZW50IGJvdW5kcyB0byB0aGUgd2VidmlldyB0byB1cGRhdGUgZml4ZWQg
cG9zaXRpb24gcmVjdHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCBiYmUzMmMwYTM2ZWRjNDhhYTJjZjQ0
MjNmNzZlOWU2NzY4NTgwMGE0Li5iMDFiOWM2YmUwMTg1ZjYwYTMwOWVhNzkxMjY5YzMyZTBmZTZk
MjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
d0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRl
bnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTcxOSw3ICs3MTksNyBAQCAtICh2b2lkKXNldHVwSW50
ZXJhY3Rpb24KICAgICAgICAgW3NlbGYuc3VwZXJ2aWV3IGFkZFN1YnZpZXc6X2ludGVyYWN0aW9u
Vmlld3NDb250YWluZXJWaWV3LmdldCgpXTsKICAgICB9CiAKLSAgICBfa2V5Ym9hcmRTY3JvbGxp
bmdBbmltYXRvciA9IGFkb3B0TlMoW1tXS0tleWJvYXJkU2Nyb2xsVmlld0FuaW1hdG9yIGFsbG9j
XSBpbml0V2l0aFNjcm9sbFZpZXc6X3dlYlZpZXcuc2Nyb2xsVmlld10pOworICAgIF9rZXlib2Fy
ZFNjcm9sbGluZ0FuaW1hdG9yID0gYWRvcHROUyhbW1dLS2V5Ym9hcmRTY3JvbGxWaWV3QW5pbWF0
b3IgYWxsb2NdIGluaXRXaXRoU2Nyb2xsVmlldzpzZWxmLndlYlZpZXcuc2Nyb2xsVmlld10pOwog
ICAgIFtfa2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvciBzZXREZWxlZ2F0ZTpzZWxmXTsKIAogICAg
IFtzZWxmLmxheWVyIGFkZE9ic2VydmVyOnNlbGYgZm9yS2V5UGF0aDpAInRyYW5zZm9ybSIgb3B0
aW9uczpOU0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9uSW5pdGlhbCBjb250ZXh0Om5pbF07CkBAIC04
MjksNyArODI5LDcgQEAgLSAodm9pZClzZXR1cEludGVyYWN0aW9uCiAgICAgW190d29GaW5nZXJT
aW5nbGVUYXBHZXN0dXJlUmVjb2duaXplciBzZXROdW1iZXJPZlRvdWNoZXNSZXF1aXJlZDoyXTsK
ICAgICBbX3R3b0ZpbmdlclNpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVyIHNldERlbGF5c1RvdWNo
ZXNFbmRlZDpOT107CiAgICAgW190d29GaW5nZXJTaW5nbGVUYXBHZXN0dXJlUmVjb2duaXplciBz
ZXREZWxlZ2F0ZTpzZWxmXTsKLSAgICBbX3R3b0ZpbmdlclNpbmdsZVRhcEdlc3R1cmVSZWNvZ25p
emVyIHNldEVuYWJsZWQ6IV93ZWJWaWV3Ll9lZGl0YWJsZV07CisgICAgW190d29GaW5nZXJTaW5n
bGVUYXBHZXN0dXJlUmVjb2duaXplciBzZXRFbmFibGVkOiFzZWxmLndlYlZpZXcuX2VkaXRhYmxl
XTsKICAgICBbc2VsZiBhZGRHZXN0dXJlUmVjb2duaXplcjpfdHdvRmluZ2VyU2luZ2xlVGFwR2Vz
dHVyZVJlY29nbml6ZXIuZ2V0KCldOwogCiAgICAgX3N0eWx1c1NpbmdsZVRhcEdlc3R1cmVSZWNv
Z25pemVyID0gYWRvcHROUyhbW1VJVGFwR2VzdHVyZVJlY29nbml6ZXIgYWxsb2NdIGluaXRXaXRo
VGFyZ2V0OnNlbGYgYWN0aW9uOkBzZWxlY3Rvcihfc3R5bHVzU2luZ2xlVGFwUmVjb2duaXplZDop
XSk7CkBAIC0xMTA5LDExICsxMTA5LDExIEBAIC0gKHZvaWQpX3VwZGF0ZUxvbmdQcmVzc0FuZEhp
Z2hsaWdodExvbmdQcmVzc0dlc3R1cmVzCiAgICAgLy8gV2Ugb25seSBkaXNhYmxlIHRoZSBoaWdo
bGlnaHQgbG9uZyBwcmVzcyBnZXN0dXJlIGluIHRoZSBjYXNlIHdoZXJlIFVJQ29udGV4dE1lbnUg
aXMgYXZhaWxhYmxlIGFuZCB3ZQogICAgIC8vIGFsc28gYWxsb3cgbGluayBwcmV2aWV3cywgc2lu
Y2UgdGhlIGNvbnRleHQgbWVudSBpbnRlcmFjdGlvbidzIGdlc3R1cmVzIG5lZWQgdG8gdGFrZSBw
cmVjZWRlbmNlIG92ZXIKICAgICAvLyBoaWdobGlnaHQgbG9uZyBwcmVzcyBnZXN0dXJlcy4KLSAg
ICBbX2hpZ2hsaWdodExvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyIHNldEVuYWJsZWQ6IXNlbGYu
X3Nob3VsZFVzZUNvbnRleHRNZW51cyB8fCAhX3dlYlZpZXcuYWxsb3dzTGlua1ByZXZpZXddOwor
ICAgIFtfaGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIgc2V0RW5hYmxlZDohc2Vs
Zi5fc2hvdWxkVXNlQ29udGV4dE1lbnVzIHx8ICFzZWxmLndlYlZpZXcuYWxsb3dzTGlua1ByZXZp
ZXddOwogCiAgICAgLy8gV2Ugb25seSBlbmFibGUgdGhlIGxvbmcgcHJlc3MgZ2VzdHVyZSBpbiB0
aGUgY2FzZSB3aGVyZSB0aGUgYXBwIGlzIGxpbmtlZCBvbiBpT1MgMTIgb3IgZWFybGllciAoYW5k
CiAgICAgLy8gdGhlcmVmb3JlIHByZWZlcnMgdGhlIGxlZ2FjeSBhY3Rpb24gc2hlZXQgb3ZlciBj
b250ZXh0IG1lbnVzKSwgYW5kIGxpbmsgcHJldmlld3MgYXJlIGFsc28gZW5hYmxlZC4KLSAgICBb
X2xvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyIHNldEVuYWJsZWQ6IXNlbGYuX3Nob3VsZFVzZUNv
bnRleHRNZW51cyAmJiBfd2ViVmlldy5hbGxvd3NMaW5rUHJldmlld107CisgICAgW19sb25nUHJl
c3NHZXN0dXJlUmVjb2duaXplciBzZXRFbmFibGVkOiFzZWxmLl9zaG91bGRVc2VDb250ZXh0TWVu
dXMgJiYgc2VsZi53ZWJWaWV3LmFsbG93c0xpbmtQcmV2aWV3XTsKIH0KIAogLSAoVUlWaWV3ICop
dW5zY2FsZWRWaWV3CkBAIC0xMzQ4LDcgKzEzNDgsNyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRl
Z2VyLCBFbmRFZGl0aW5nUmVhc29uKSB7CiAKIC0gKHZvaWQpZW5kRWRpdGluZ0FuZFVwZGF0ZUZv
Y3VzQXBwZWFyYW5jZVdpdGhSZWFzb246KEVuZEVkaXRpbmdSZWFzb24pcmVhc29uCiB7Ci0gICAg
aWYgKCFfd2ViVmlldy5fcmV0YWluaW5nQWN0aXZlRm9jdXNlZFN0YXRlKSB7CisgICAgaWYgKCFz
ZWxmLndlYlZpZXcuX3JldGFpbmluZ0FjdGl2ZUZvY3VzZWRTdGF0ZSkgewogICAgICAgICAvLyBX
ZSBuZWVkIHRvIGNvbXBsZXRlIHRoZSBlZGl0aW5nIG9wZXJhdGlvbiBiZWZvcmUgd2UgYmx1ciB0
aGUgZWxlbWVudC4KICAgICAgICAgW3NlbGYgX2VuZEVkaXRpbmddOwogICAgICAgICBpZiAoKHJl
YXNvbiA9PSBFbmRFZGl0aW5nUmVhc29uQWNjZXNzb3J5RG9uZSAmJiAhV2ViS2l0OjpjdXJyZW50
VXNlckludGVyZmFjZUlkaW9tSXNQYWQoKSkgfHwgX2tleWJvYXJkRGlkUmVxdWVzdERpc21pc3Nh
bCB8fCBzZWxmLl9zaG91bGRVc2VMZWdhY3lTZWxlY3RQb3BvdmVyRGlzbWlzc2FsQmVoYXZpb3Ip
IHsKQEAgLTE1MzcsOSArMTUzNyw5IEBAIC0gKEJPT0wpZ2VzdHVyZVJlY29nbml6ZXJNYXlQaW5j
aFRvWm9vbVdlYlZpZXc6KFVJR2VzdHVyZVJlY29nbml6ZXIgKilnZXN0dXJlUmVjCiAKICAgICAv
LyBUaGUgZ2VzdHVyZSByZWNvZ25pemVyIGlzIGFub3RoZXIgVUlQaWNoR2VzdHVyZVJlY29nbml6
ZXIga25vd24gdG8gbGVhZCB0byBwaW5jaC10by16b29tLgogICAgIGlmIChbZ2VzdHVyZVJlY29n
bml6ZXIgaXNLaW5kT2ZDbGFzczpbVUlQaW5jaEdlc3R1cmVSZWNvZ25pemVyIGNsYXNzXV0pIHsK
LSAgICAgICAgaWYgKGF1dG8gdWlEZWxlZ2F0ZSA9IHN0YXRpY19jYXN0PGlkPFdLVUlEZWxlZ2F0
ZVByaXZhdGU+Pihfd2ViVmlldy5VSURlbGVnYXRlKSkgeworICAgICAgICBpZiAoYXV0byB1aURl
bGVnYXRlID0gc3RhdGljX2Nhc3Q8aWQ8V0tVSURlbGVnYXRlUHJpdmF0ZT4+KHNlbGYud2ViVmll
dy5VSURlbGVnYXRlKSkgewogICAgICAgICAgICAgaWYgKFt1aURlbGVnYXRlIHJlc3BvbmRzVG9T
ZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6Z2VzdHVyZVJlY29nbml6ZXJDb3VsZFBpbmNoOild
KQotICAgICAgICAgICAgICAgIHJldHVybiBbdWlEZWxlZ2F0ZSBfd2ViVmlldzpfd2ViVmlldyBn
ZXN0dXJlUmVjb2duaXplckNvdWxkUGluY2g6Z2VzdHVyZVJlY29nbml6ZXJdOworICAgICAgICAg
ICAgICAgIHJldHVybiBbdWlEZWxlZ2F0ZSBfd2ViVmlldzpzZWxmLndlYlZpZXcgZ2VzdHVyZVJl
Y29nbml6ZXJDb3VsZFBpbmNoOmdlc3R1cmVSZWNvZ25pemVyXTsKICAgICAgICAgfQogICAgIH0K
ICAgICByZXR1cm4gTk87CkBAIC0yMTAzLDcgKzIxMDMsNyBAQCAtICh2b2lkKV9zaG93QXR0YWNo
bWVudFNoZWV0CiAKICAgICBhdXRvIGVsZW1lbnQgPSBhZG9wdE5TKFtbX1dLQWN0aXZhdGVkRWxl
bWVudEluZm8gYWxsb2NdIF9pbml0V2l0aFR5cGU6X1dLQWN0aXZhdGVkRWxlbWVudFR5cGVBdHRh
Y2htZW50IFVSTDooTlNVUkwgKilfcG9zaXRpb25JbmZvcm1hdGlvbi51cmwgaW1hZ2VVUkw6KE5T
VVJMICopX3Bvc2l0aW9uSW5mb3JtYXRpb24uaW1hZ2VVUkwgbG9jYXRpb246X3Bvc2l0aW9uSW5m
b3JtYXRpb24ucmVxdWVzdC5wb2ludCB0aXRsZTpfcG9zaXRpb25JbmZvcm1hdGlvbi50aXRsZSBJ
RDpfcG9zaXRpb25JbmZvcm1hdGlvbi5pZEF0dHJpYnV0ZSByZWN0Ol9wb3NpdGlvbkluZm9ybWF0
aW9uLmJvdW5kcyBpbWFnZTpuaWxdKTsKICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9O
U19CRUdJTgotICAgIFt1aURlbGVnYXRlIF93ZWJWaWV3Ol93ZWJWaWV3IHNob3dDdXN0b21TaGVl
dEZvckVsZW1lbnQ6ZWxlbWVudC5nZXQoKV07CisgICAgW3VpRGVsZWdhdGUgX3dlYlZpZXc6c2Vs
Zi53ZWJWaWV3IHNob3dDdXN0b21TaGVldEZvckVsZW1lbnQ6ZWxlbWVudC5nZXQoKV07CiAgICAg
QUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiB9CiAKQEAgLTIxMTksNyArMjExOSw3
IEBAIC0gKHZvaWQpX3Nob3dEYXRhRGV0ZWN0b3JzU2hlZXQKIAogLSAoU0VMKV9hY3Rpb25Gb3JM
b25nUHJlc3NGcm9tUG9zaXRpb25JbmZvcm1hdGlvbjooY29uc3QgV2ViS2l0OjpJbnRlcmFjdGlv
bkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpcG9zaXRpb25JbmZvcm1hdGlvbgogewotICAgIGlmICgh
X3dlYlZpZXcuY29uZmlndXJhdGlvbi5fbG9uZ1ByZXNzQWN0aW9uc0VuYWJsZWQpCisgICAgaWYg
KCFzZWxmLndlYlZpZXcuY29uZmlndXJhdGlvbi5fbG9uZ1ByZXNzQWN0aW9uc0VuYWJsZWQpCiAg
ICAgICAgIHJldHVybiBuaWw7CiAKICAgICBpZiAoIXBvc2l0aW9uSW5mb3JtYXRpb24udG91Y2hD
YWxsb3V0RW5hYmxlZCkKQEAgLTIyOTYsMTAgKzIyOTYsMTAgQEAgLSAoQk9PTClnZXN0dXJlUmVj
b2duaXplclNob3VsZEJlZ2luOihVSUdlc3R1cmVSZWNvZ25pemVyICopZ2VzdHVyZVJlY29nbml6
ZXIKICAgICBDR1BvaW50IHBvaW50ID0gW2dlc3R1cmVSZWNvZ25pemVyIGxvY2F0aW9uSW5WaWV3
OnNlbGZdOwogCiAgICAgaWYgKGdlc3R1cmVSZWNvZ25pemVyID09IF9zdHlsdXNTaW5nbGVUYXBH
ZXN0dXJlUmVjb2duaXplcikKLSAgICAgICAgcmV0dXJuIF93ZWJWaWV3Ll9zdHlsdXNUYXBHZXN0
dXJlU2hvdWxkQ3JlYXRlRWRpdGFibGVJbWFnZTsKKyAgICAgICAgcmV0dXJuIHNlbGYud2ViVmll
dy5fc3R5bHVzVGFwR2VzdHVyZVNob3VsZENyZWF0ZUVkaXRhYmxlSW1hZ2U7CiAKICAgICBhdXRv
IGlzSW50ZXJydXB0aW5nRGVjZWxlcmF0aW9uRm9yU2Nyb2xsVmlld09yQW5jZXN0b3IgPSBbJl0g
KFVJU2Nyb2xsVmlldyAqc2Nyb2xsVmlldykgewotICAgICAgICBVSVNjcm9sbFZpZXcgKm1haW5T
Y3JvbGxlciA9IF93ZWJWaWV3LnNjcm9sbFZpZXc7CisgICAgICAgIFVJU2Nyb2xsVmlldyAqbWFp
blNjcm9sbGVyID0gc2VsZi53ZWJWaWV3LnNjcm9sbFZpZXc7CiAgICAgICAgIFVJVmlldyAqdmll
dyA9IHNjcm9sbFZpZXcgPzogbWFpblNjcm9sbGVyOwogICAgICAgICB3aGlsZSAodmlldykgewog
ICAgICAgICAgICAgaWYgKFt2aWV3IGlzS2luZE9mQ2xhc3M6VUlTY3JvbGxWaWV3LmNsYXNzXSAm
JiBbKFVJU2Nyb2xsVmlldyAqKXZpZXcgX2lzSW50ZXJydXB0aW5nRGVjZWxlcmF0aW9uXSkKQEAg
LTI0MjcsNyArMjQyNyw3IEBAIC0gKEJPT0wpY2FuU2hvd05vbkVtcHR5U2VsZWN0aW9uVmlldwog
CiAtIChCT09MKWhhc1NlbGVjdGFibGVQb3NpdGlvbkF0UG9pbnQ6KENHUG9pbnQpcG9pbnQKIHsK
LSAgICBpZiAoIV93ZWJWaWV3LmNvbmZpZ3VyYXRpb24uX3RleHRJbnRlcmFjdGlvbkdlc3R1cmVz
RW5hYmxlZCkKKyAgICBpZiAoIXNlbGYud2ViVmlldy5jb25maWd1cmF0aW9uLl90ZXh0SW50ZXJh
Y3Rpb25HZXN0dXJlc0VuYWJsZWQpCiAgICAgICAgIHJldHVybiBOTzsKIAogICAgIGlmIChfc3Vw
cHJlc3NTZWxlY3Rpb25Bc3Npc3RhbnRSZWFzb25zKQpAQCAtMjQ1Myw3ICsyNDUzLDcgQEAgLSAo
Qk9PTCloYXNTZWxlY3RhYmxlUG9zaXRpb25BdFBvaW50OihDR1BvaW50KXBvaW50CiAKIC0gKEJP
T0wpcG9pbnRJc05lYXJNYXJrZWRUZXh0OihDR1BvaW50KXBvaW50CiB7Ci0gICAgaWYgKCFfd2Vi
Vmlldy5jb25maWd1cmF0aW9uLl90ZXh0SW50ZXJhY3Rpb25HZXN0dXJlc0VuYWJsZWQpCisgICAg
aWYgKCFzZWxmLndlYlZpZXcuY29uZmlndXJhdGlvbi5fdGV4dEludGVyYWN0aW9uR2VzdHVyZXNF
bmFibGVkKQogICAgICAgICByZXR1cm4gTk87CiAKICAgICBpZiAoX3N1cHByZXNzU2VsZWN0aW9u
QXNzaXN0YW50UmVhc29ucykKQEAgLTI0NjcsNyArMjQ2Nyw3IEBAIC0gKEJPT0wpcG9pbnRJc05l
YXJNYXJrZWRUZXh0OihDR1BvaW50KXBvaW50CiAKIC0gKEJPT0wpdGV4dEludGVyYWN0aW9uR2Vz
dHVyZTooVUlXS0dlc3R1cmVUeXBlKWdlc3R1cmUgc2hvdWxkQmVnaW5BdFBvaW50OihDR1BvaW50
KXBvaW50CiB7Ci0gICAgaWYgKCFfd2ViVmlldy5jb25maWd1cmF0aW9uLl90ZXh0SW50ZXJhY3Rp
b25HZXN0dXJlc0VuYWJsZWQpCisgICAgaWYgKCFzZWxmLndlYlZpZXcuY29uZmlndXJhdGlvbi5f
dGV4dEludGVyYWN0aW9uR2VzdHVyZXNFbmFibGVkKQogICAgICAgICByZXR1cm4gTk87CiAKICAg
ICBpZiAoX2RvbVBhc3RlUmVxdWVzdEhhbmRsZXIpCkBAIC0yNjA5LDcgKzI2MDksNyBAQCAtICh2
b2lkKV90d29GaW5nZXJTaW5nbGVUYXBHZXN0dXJlUmVjb2duaXplZDooVUlUYXBHZXN0dXJlUmVj
b2duaXplciAqKWdlc3R1cmVSZQogCiAtICh2b2lkKV9zdHlsdXNTaW5nbGVUYXBSZWNvZ25pemVk
OihVSVRhcEdlc3R1cmVSZWNvZ25pemVyICopZ2VzdHVyZVJlY29nbml6ZXIKIHsKLSAgICBBU1NF
UlQoX3dlYlZpZXcuX3N0eWx1c1RhcEdlc3R1cmVTaG91bGRDcmVhdGVFZGl0YWJsZUltYWdlKTsK
KyAgICBBU1NFUlQoc2VsZi53ZWJWaWV3Ll9zdHlsdXNUYXBHZXN0dXJlU2hvdWxkQ3JlYXRlRWRp
dGFibGVJbWFnZSk7CiAgICAgQVNTRVJUKGdlc3R1cmVSZWNvZ25pemVyID09IF9zdHlsdXNTaW5n
bGVUYXBHZXN0dXJlUmVjb2duaXplcik7CiAgICAgX3BhZ2UtPmhhbmRsZVN0eWx1c1NpbmdsZVRh
cEF0UG9pbnQoV2ViQ29yZTo6cm91bmRlZEludFBvaW50KGdlc3R1cmVSZWNvZ25pemVyLmxvY2F0
aW9uKSwgKytfbGF0ZXN0VGFwSUQpOwogfQpAQCAtMjYzNCw3ICsyNjM0LDcgQEAgLSAodm9pZClf
bG9uZ1ByZXNzUmVjb2duaXplZDooVUlMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplciAqKWdlc3R1
cmVSZWNvZ25pemVyCiAKIC0gKHZvaWQpX2VuZFBvdGVudGlhbFRhcEFuZEVuYWJsZURvdWJsZVRh
cEdlc3R1cmVzSWZOZWNlc3NhcnkKIHsKLSAgICBpZiAoX3dlYlZpZXcuX2FsbG93c0RvdWJsZVRh
cEdlc3R1cmVzKSB7CisgICAgaWYgKHNlbGYud2ViVmlldy5fYWxsb3dzRG91YmxlVGFwR2VzdHVy
ZXMpIHsKICAgICAgICAgUkVMRUFTRV9MT0coVmlld0dlc3R1cmVzLCAiZW5kaW5nIHBvdGVudGlh
bCB0YXAgLSBkb3VibGUgdGFwcyBhcmUgYmFjay4gKCVwKSIsIHNlbGYpOwogCiAgICAgICAgIFtz
ZWxmIF9zZXREb3VibGVUYXBHZXN0dXJlc0VuYWJsZWQ6WUVTXTsKQEAgLTMyMDksNyArMzIwOSw3
IEBAIC0gKFVJQ29sb3IgKilzZWxlY3Rpb25IaWdobGlnaHRDb2xvcgogLSAodm9pZClfdXBkYXRl
SW50ZXJhY3Rpb25UaW50Q29sb3IKIHsKICAgICBVSUNvbG9yICp0aW50Q29sb3IgPSBeewotICAg
ICAgICBpZiAoIV93ZWJWaWV3LmNvbmZpZ3VyYXRpb24uX3RleHRJbnRlcmFjdGlvbkdlc3R1cmVz
RW5hYmxlZCkKKyAgICAgICAgaWYgKCFzZWxmLndlYlZpZXcuY29uZmlndXJhdGlvbi5fdGV4dElu
dGVyYWN0aW9uR2VzdHVyZXNFbmFibGVkKQogICAgICAgICAgICAgcmV0dXJuIFtVSUNvbG9yIGNs
ZWFyQ29sb3JdOwogCiAgICAgICAgIGlmICghX3BhZ2UtPmVkaXRvclN0YXRlKCkuaXNNaXNzaW5n
UG9zdExheW91dERhdGEpIHsKQEAgLTMyOTUsNyArMzI5NSw3IEBAIC0gKEJPT0wpY2FuUGVyZm9y
bUFjdGlvbkZvcldlYlZpZXc6KFNFTClhY3Rpb24gd2l0aFNlbmRlcjooaWQpc2VuZGVyCiAgICAg
ICAgICAgICByZXR1cm4gWUVTOwogCiAjaWYgUExBVEZPUk0oSU9TKQotICAgICAgICBpZiAoZWRp
dG9yU3RhdGUuaXNDb250ZW50UmljaGx5RWRpdGFibGUgJiYgX3dlYlZpZXcuY29uZmlndXJhdGlv
bi5fYXR0YWNobWVudEVsZW1lbnRFbmFibGVkKSB7CisgICAgICAgIGlmIChlZGl0b3JTdGF0ZS5p
c0NvbnRlbnRSaWNobHlFZGl0YWJsZSAmJiBzZWxmLndlYlZpZXcuY29uZmlndXJhdGlvbi5fYXR0
YWNobWVudEVsZW1lbnRFbmFibGVkKSB7CiAgICAgICAgICAgICBmb3IgKE5TSXRlbVByb3ZpZGVy
ICppdGVtUHJvdmlkZXIgaW4gcGFzdGVib2FyZC5pdGVtUHJvdmlkZXJzKSB7CiAgICAgICAgICAg
ICAgICAgYXV0byBwcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZSA9IGl0ZW1Qcm92aWRlci5wcmVm
ZXJyZWRQcmVzZW50YXRpb25TdHlsZTsKICAgICAgICAgICAgICAgICBpZiAocHJlZmVycmVkUHJl
c2VudGF0aW9uU3R5bGUgPT0gVUlQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZUlubGluZSkKQEAg
LTM1NzUsNyArMzU3NSw3IEBAIC0gKHZvaWQpX2RlZmluZUZvcldlYlZpZXc6KGlkKXNlbmRlcgog
LSAodm9pZClhY2Nlc3NpYmlsaXR5UmV0cmlldmVTcGVha1NlbGVjdGlvbkNvbnRlbnQKIHsKICAg
ICBSZXRhaW5QdHI8V0tDb250ZW50Vmlldz4gdmlldyA9IHNlbGY7Ci0gICAgUmV0YWluUHRyPFdL
V2ViVmlldz4gd2ViVmlldyA9IF93ZWJWaWV3OworICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdl
YlZpZXcgPSBfd2ViVmlldy5nZXQoKTsKICAgICBfcGFnZS0+Z2V0U2VsZWN0aW9uT3JDb250ZW50
c0FzU3RyaW5nKFt2aWV3LCB3ZWJWaWV3XShjb25zdCBTdHJpbmcmIHN0cmluZywgV2ViS2l0OjpD
YWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CiAgICAgICAgIGlmIChlcnJvciAhPSBXZWJLaXQ6
OkNhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0zOTU2
LDcgKzM5NTYsNyBAQCAtICh2b2lkKXJlcXVlc3RSZWN0c1RvRXZhZGVGb3JTZWxlY3Rpb25Db21t
YW5kc1dpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShOUwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgaWYgKFtzZWxmIF9zaG91bGRTdXBwcmVzc1NlbGVjdGlvbkNvbW1hbmRzXSB8
fCBfd2ViVmlldy5fZWRpdGFibGUpIHsKKyAgICBpZiAoW3NlbGYgX3Nob3VsZFN1cHByZXNzU2Vs
ZWN0aW9uQ29tbWFuZHNdIHx8IHNlbGYud2ViVmlldy5fZWRpdGFibGUpIHsKICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoQFsgXSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC00MzE3LDcg
KzQzMTcsNyBAQCAtICh2b2lkKWFjY2Vzc29yeUF1dG9GaWxsCiB7CiAgICAgaWQgPF9XS0lucHV0
RGVsZWdhdGU+IGlucHV0RGVsZWdhdGUgPSBbX3dlYlZpZXcgX2lucHV0RGVsZWdhdGVdOwogICAg
IGlmIChbaW5wdXREZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3
OmFjY2Vzc29yeVZpZXdDdXN0b21CdXR0b25UYXBwZWRJbkZvcm1JbnB1dFNlc3Npb246KV0pCi0g
ICAgICAgIFtpbnB1dERlbGVnYXRlIF93ZWJWaWV3Ol93ZWJWaWV3IGFjY2Vzc29yeVZpZXdDdXN0
b21CdXR0b25UYXBwZWRJbkZvcm1JbnB1dFNlc3Npb246X2Zvcm1JbnB1dFNlc3Npb24uZ2V0KCld
OworICAgICAgICBbaW5wdXREZWxlZ2F0ZSBfd2ViVmlldzpzZWxmLndlYlZpZXcgYWNjZXNzb3J5
Vmlld0N1c3RvbUJ1dHRvblRhcHBlZEluRm9ybUlucHV0U2Vzc2lvbjpfZm9ybUlucHV0U2Vzc2lv
bi5nZXQoKV07CiB9CiAKIC0gKFVJV2ViRm9ybUFjY2Vzc29yeSAqKWZvcm1BY2Nlc3NvcnlWaWV3
CkBAIC00MzQzLDcgKzQzNDMsNyBAQCAtICh2b2lkKV91cGRhdGVBY2Nlc3NvcnkKICAgICBhdXRv
KiBhY2Nlc3NvcnlWaWV3ID0gc2VsZi5mb3JtQWNjZXNzb3J5VmlldzsgLy8gQ3JlYXRlcyBvbmUs
IGlmIG5lZWRlZC4KIAogICAgIGlmIChbYWNjZXNzb3J5VmlldyByZXNwb25kc1RvU2VsZWN0b3I6
QHNlbGVjdG9yKHNldE5leHRQcmV2aW91c0l0ZW1zVmlzaWJsZTopXSkKLSAgICAgICAgW2FjY2Vz
c29yeVZpZXcgc2V0TmV4dFByZXZpb3VzSXRlbXNWaXNpYmxlOiFfd2ViVmlldy5fZWRpdGFibGVd
OworICAgICAgICBbYWNjZXNzb3J5VmlldyBzZXROZXh0UHJldmlvdXNJdGVtc1Zpc2libGU6IXNl
bGYud2ViVmlldy5fZWRpdGFibGVdOwogCiAgICAgW2FjY2Vzc29yeVZpZXcgc2V0TmV4dEVuYWJs
ZWQ6X2ZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24uaGFzTmV4dE5vZGVdOwogICAgIFthY2Nlc3Nv
cnlWaWV3IHNldFByZXZpb3VzRW5hYmxlZDpfZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5oYXNQ
cmV2aW91c05vZGVdOwpAQCAtNDM5Nyw5ICs0Mzk3LDkgQEAgLSAodm9pZCl3aWxsRmluaXNoSWdu
b3JpbmdDYWxsb3V0QmFyRmFkZUFmdGVyUGVyZm9ybWluZ0FjdGlvbgogLSAodm9pZClfZGlkQ2hh
bmdlV2ViVmlld0VkaXRhYmlsaXR5CiB7CiAgICAgaWYgKFtfZm9ybUFjY2Vzc29yeVZpZXcgcmVz
cG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzZXROZXh0UHJldmlvdXNJdGVtc1Zpc2libGU6KV0p
Ci0gICAgICAgIFtfZm9ybUFjY2Vzc29yeVZpZXcgc2V0TmV4dFByZXZpb3VzSXRlbXNWaXNpYmxl
OiFfd2ViVmlldy5fZWRpdGFibGVdOworICAgICAgICBbX2Zvcm1BY2Nlc3NvcnlWaWV3IHNldE5l
eHRQcmV2aW91c0l0ZW1zVmlzaWJsZTohc2VsZi53ZWJWaWV3Ll9lZGl0YWJsZV07CiAgICAgCi0g
ICAgW190d29GaW5nZXJTaW5nbGVUYXBHZXN0dXJlUmVjb2duaXplciBzZXRFbmFibGVkOiFfd2Vi
Vmlldy5fZWRpdGFibGVdOworICAgIFtfdHdvRmluZ2VyU2luZ2xlVGFwR2VzdHVyZVJlY29nbml6
ZXIgc2V0RW5hYmxlZDohc2VsZi53ZWJWaWV3Ll9lZGl0YWJsZV07CiB9CiAKIC0gKHZvaWQpaW5z
ZXJ0VGV4dFN1Z2dlc3Rpb246KFVJVGV4dFN1Z2dlc3Rpb24gKil0ZXh0U3VnZ2VzdGlvbgpAQCAt
NDQxNyw3ICs0NDE3LDcgQEAgLSAodm9pZClpbnNlcnRUZXh0U3VnZ2VzdGlvbjooVUlUZXh0U3Vn
Z2VzdGlvbiAqKXRleHRTdWdnZXN0aW9uCiAjZW5kaWYKICAgICBpZCA8X1dLSW5wdXREZWxlZ2F0
ZT4gaW5wdXREZWxlZ2F0ZSA9IFtfd2ViVmlldyBfaW5wdXREZWxlZ2F0ZV07CiAgICAgaWYgKFtp
bnB1dERlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6aW5zZXJ0
VGV4dFN1Z2dlc3Rpb246aW5JbnB1dFNlc3Npb246KV0pCi0gICAgICAgIFtpbnB1dERlbGVnYXRl
IF93ZWJWaWV3Ol93ZWJWaWV3IGluc2VydFRleHRTdWdnZXN0aW9uOnRleHRTdWdnZXN0aW9uIGlu
SW5wdXRTZXNzaW9uOl9mb3JtSW5wdXRTZXNzaW9uLmdldCgpXTsKKyAgICAgICAgW2lucHV0RGVs
ZWdhdGUgX3dlYlZpZXc6c2VsZi53ZWJWaWV3IGluc2VydFRleHRTdWdnZXN0aW9uOnRleHRTdWdn
ZXN0aW9uIGluSW5wdXRTZXNzaW9uOl9mb3JtSW5wdXRTZXNzaW9uLmdldCgpXTsKIH0KIAogLSAo
TlNTdHJpbmcgKil0ZXh0SW5SYW5nZTooVUlUZXh0UmFuZ2UgKilyYW5nZQpAQCAtNTE0NSw3ICs1
MTQ1LDcgQEAgLSAoQk9PTClpc1Njcm9sbGFibGVGb3JLZXlib2FyZFNjcm9sbFZpZXdBbmltYXRv
cjooV0tLZXlib2FyZFNjcm9sbFZpZXdBbmltYXRvcgogICAgIGlmIChfZm9jdXNlZEVsZW1lbnRJ
bmZvcm1hdGlvbi5lbGVtZW50VHlwZSA9PSBXZWJLaXQ6OklucHV0VHlwZTo6U2VsZWN0KQogICAg
ICAgICByZXR1cm4gTk87CiAKLSAgICBpZiAoIV93ZWJWaWV3LnNjcm9sbFZpZXcuc2Nyb2xsRW5h
YmxlZCkKKyAgICBpZiAoIXNlbGYud2ViVmlldy5zY3JvbGxWaWV3LnNjcm9sbEVuYWJsZWQpCiAg
ICAgICAgIHJldHVybiBOTzsKIAogICAgIHJldHVybiBZRVM7CkBAIC01MTU3LDE1ICs1MTU3LDE1
IEBAIC0gKENHRmxvYXQpa2V5Ym9hcmRTY3JvbGxWaWV3QW5pbWF0b3I6KFdLS2V5Ym9hcmRTY3Jv
bGxWaWV3QW5pbWF0b3IgKilhbmltYXRvciBkCiAKICAgICBzd2l0Y2ggKGluY3JlbWVudCkgewog
ICAgIGNhc2UgV2ViS2l0OjpTY3JvbGxpbmdJbmNyZW1lbnQ6OkRvY3VtZW50OiB7Ci0gICAgICAg
IENHU2l6ZSBkb2N1bWVudFNpemUgPSBbc2VsZiBjb252ZXJ0UmVjdDpzZWxmLmJvdW5kcyB0b1Zp
ZXc6X3dlYlZpZXddLnNpemU7CisgICAgICAgIENHU2l6ZSBkb2N1bWVudFNpemUgPSBbc2VsZiBj
b252ZXJ0UmVjdDpzZWxmLmJvdW5kcyB0b1ZpZXc6c2VsZi53ZWJWaWV3XS5zaXplOwogICAgICAg
ICByZXR1cm4gZGlyZWN0aW9uSXNIb3Jpem9udGFsID8gZG9jdW1lbnRTaXplLndpZHRoIDogZG9j
dW1lbnRTaXplLmhlaWdodDsKICAgICB9CiAgICAgY2FzZSBXZWJLaXQ6OlNjcm9sbGluZ0luY3Jl
bWVudDo6UGFnZTogewotICAgICAgICBDR1NpemUgcGFnZVNpemUgPSBbc2VsZiBjb252ZXJ0U2l6
ZTpDR1NpemVNYWtlKDAsIFdlYkNvcmU6OlNjcm9sbGJhcjo6cGFnZVN0ZXAoX3BhZ2UtPnVub2Jz
Y3VyZWRDb250ZW50UmVjdCgpLmhlaWdodCgpLCBzZWxmLmJvdW5kcy5zaXplLmhlaWdodCkpIHRv
Vmlldzpfd2ViVmlld107CisgICAgICAgIENHU2l6ZSBwYWdlU2l6ZSA9IFtzZWxmIGNvbnZlcnRT
aXplOkNHU2l6ZU1ha2UoMCwgV2ViQ29yZTo6U2Nyb2xsYmFyOjpwYWdlU3RlcChfcGFnZS0+dW5v
YnNjdXJlZENvbnRlbnRSZWN0KCkuaGVpZ2h0KCksIHNlbGYuYm91bmRzLnNpemUuaGVpZ2h0KSkg
dG9WaWV3OnNlbGYud2ViVmlld107CiAgICAgICAgIHJldHVybiBkaXJlY3Rpb25Jc0hvcml6b250
YWwgPyBwYWdlU2l6ZS53aWR0aCA6IHBhZ2VTaXplLmhlaWdodDsKICAgICB9CiAgICAgY2FzZSBX
ZWJLaXQ6OlNjcm9sbGluZ0luY3JlbWVudDo6TGluZToKLSAgICAgICAgcmV0dXJuIFtzZWxmIGNv
bnZlcnRTaXplOkNHU2l6ZU1ha2UoMCwgV2ViQ29yZTo6U2Nyb2xsYmFyOjpwaXhlbHNQZXJMaW5l
U3RlcCgpKSB0b1ZpZXc6X3dlYlZpZXddLmhlaWdodDsKKyAgICAgICAgcmV0dXJuIFtzZWxmIGNv
bnZlcnRTaXplOkNHU2l6ZU1ha2UoMCwgV2ViQ29yZTo6U2Nyb2xsYmFyOjpwaXhlbHNQZXJMaW5l
U3RlcCgpKSB0b1ZpZXc6c2VsZi53ZWJWaWV3XS5oZWlnaHQ7CiAgICAgfQogICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiAwOwpAQCAtNTU2NSwxNCArNTU2NSwxNCBAQCAtICh2
b2lkKV9lbGVtZW50RGlkRm9jdXM6KGNvbnN0IFdlYktpdDo6Rm9jdXNlZEVsZW1lbnRJbmZvcm1h
dGlvbiYpaW5mb3JtYXRpb24gdQogICAgIF9XS0ZvY3VzU3RhcnRzSW5wdXRTZXNzaW9uUG9saWN5
IHN0YXJ0SW5wdXRTZXNzaW9uUG9saWN5ID0gX1dLRm9jdXNTdGFydHNJbnB1dFNlc3Npb25Qb2xp
Y3lBdXRvOwogCiAgICAgaWYgKFtpbnB1dERlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2Vs
ZWN0b3IoX3dlYlZpZXc6Zm9jdXNTaG91bGRTdGFydElucHV0U2Vzc2lvbjopXSkgewotICAgICAg
ICBpZiAoW2lucHV0RGVsZWdhdGUgX3dlYlZpZXc6X3dlYlZpZXcgZm9jdXNTaG91bGRTdGFydElu
cHV0U2Vzc2lvbjpmb2N1c2VkRWxlbWVudEluZm8uZ2V0KCldKQorICAgICAgICBpZiAoW2lucHV0
RGVsZWdhdGUgX3dlYlZpZXc6c2VsZi53ZWJWaWV3IGZvY3VzU2hvdWxkU3RhcnRJbnB1dFNlc3Np
b246Zm9jdXNlZEVsZW1lbnRJbmZvLmdldCgpXSkKICAgICAgICAgICAgIHN0YXJ0SW5wdXRTZXNz
aW9uUG9saWN5ID0gX1dLRm9jdXNTdGFydHNJbnB1dFNlc3Npb25Qb2xpY3lBbGxvdzsKICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgc3RhcnRJbnB1dFNlc3Npb25Qb2xpY3kgPSBfV0tGb2N1c1N0
YXJ0c0lucHV0U2Vzc2lvblBvbGljeURpc2FsbG93OwogICAgIH0KIAogICAgIGlmIChbaW5wdXRE
ZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmRlY2lkZVBvbGlj
eUZvckZvY3VzZWRFbGVtZW50OildKQotICAgICAgICBzdGFydElucHV0U2Vzc2lvblBvbGljeSA9
IFtpbnB1dERlbGVnYXRlIF93ZWJWaWV3Ol93ZWJWaWV3IGRlY2lkZVBvbGljeUZvckZvY3VzZWRF
bGVtZW50OmZvY3VzZWRFbGVtZW50SW5mby5nZXQoKV07CisgICAgICAgIHN0YXJ0SW5wdXRTZXNz
aW9uUG9saWN5ID0gW2lucHV0RGVsZWdhdGUgX3dlYlZpZXc6c2VsZi53ZWJWaWV3IGRlY2lkZVBv
bGljeUZvckZvY3VzZWRFbGVtZW50OmZvY3VzZWRFbGVtZW50SW5mby5nZXQoKV07CiAKICAgICBC
T09MIHNob3VsZFNob3dJbnB1dFZpZXcgPSBbJl0gewogICAgICAgICBzd2l0Y2ggKHN0YXJ0SW5w
dXRTZXNzaW9uUG9saWN5KSB7CkBAIC01NjQ3LDEwICs1NjQ3LDEwIEBAIC0gKHZvaWQpX2VsZW1l
bnREaWRGb2N1czooY29uc3QgV2ViS2l0OjpGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uJilpbmZv
cm1hdGlvbiB1CiAgICAgX2ZvY3VzUmVxdWlyZXNTdHJvbmdQYXNzd29yZEFzc2lzdGFuY2UgPSBO
TzsKICAgICBfYWRkaXRpb25hbENvbnRleHRGb3JTdHJvbmdQYXNzd29yZEFzc2lzdGFuY2UgPSBu
aWw7CiAgICAgaWYgKFtpbnB1dERlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Io
X3dlYlZpZXc6Zm9jdXNSZXF1aXJlc1N0cm9uZ1Bhc3N3b3JkQXNzaXN0YW5jZTopXSkKLSAgICAg
ICAgX2ZvY3VzUmVxdWlyZXNTdHJvbmdQYXNzd29yZEFzc2lzdGFuY2UgPSBbaW5wdXREZWxlZ2F0
ZSBfd2ViVmlldzpfd2ViVmlldyBmb2N1c1JlcXVpcmVzU3Ryb25nUGFzc3dvcmRBc3Npc3RhbmNl
OmZvY3VzZWRFbGVtZW50SW5mby5nZXQoKV07CisgICAgICAgIF9mb2N1c1JlcXVpcmVzU3Ryb25n
UGFzc3dvcmRBc3Npc3RhbmNlID0gW2lucHV0RGVsZWdhdGUgX3dlYlZpZXc6c2VsZi53ZWJWaWV3
IGZvY3VzUmVxdWlyZXNTdHJvbmdQYXNzd29yZEFzc2lzdGFuY2U6Zm9jdXNlZEVsZW1lbnRJbmZv
LmdldCgpXTsKIAogICAgIGlmIChbaW5wdXREZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKF93ZWJWaWV3QWRkaXRpb25hbENvbnRleHRGb3JTdHJvbmdQYXNzd29yZEFzc2lzdGFu
Y2U6KV0pCi0gICAgICAgIF9hZGRpdGlvbmFsQ29udGV4dEZvclN0cm9uZ1Bhc3N3b3JkQXNzaXN0
YW5jZSA9IFtpbnB1dERlbGVnYXRlIF93ZWJWaWV3QWRkaXRpb25hbENvbnRleHRGb3JTdHJvbmdQ
YXNzd29yZEFzc2lzdGFuY2U6X3dlYlZpZXddOworICAgICAgICBfYWRkaXRpb25hbENvbnRleHRG
b3JTdHJvbmdQYXNzd29yZEFzc2lzdGFuY2UgPSBbaW5wdXREZWxlZ2F0ZSBfd2ViVmlld0FkZGl0
aW9uYWxDb250ZXh0Rm9yU3Ryb25nUGFzc3dvcmRBc3Npc3RhbmNlOnNlbGYud2ViVmlld107CiAg
ICAgZWxzZQogICAgICAgICBfYWRkaXRpb25hbENvbnRleHRGb3JTdHJvbmdQYXNzd29yZEFzc2lz
dGFuY2UgPSBAeyB9OwogCkBAIC01NjYzLDcgKzU2NjMsNyBAQCAtICh2b2lkKV9lbGVtZW50RGlk
Rm9jdXM6KGNvbnN0IFdlYktpdDo6Rm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbiYpaW5mb3JtYXRp
b24gdQogICAgIH0KIAogICAgIGlmIChkZWxlZ2F0ZUltcGxlbWVudHNXaWxsU3RhcnRJbnB1dFNl
c3Npb24pCi0gICAgICAgIFtpbnB1dERlbGVnYXRlIF93ZWJWaWV3Ol93ZWJWaWV3IHdpbGxTdGFy
dElucHV0U2Vzc2lvbjpfZm9ybUlucHV0U2Vzc2lvbi5nZXQoKV07CisgICAgICAgIFtpbnB1dERl
bGVnYXRlIF93ZWJWaWV3OnNlbGYud2ViVmlldyB3aWxsU3RhcnRJbnB1dFNlc3Npb246X2Zvcm1J
bnB1dFNlc3Npb24uZ2V0KCldOwogCiAgICAgQk9PTCBpc1NlbGVjdGFibGUgPSBtYXlDb250YWlu
U2VsZWN0YWJsZVRleHQoaW5mb3JtYXRpb24uZWxlbWVudFR5cGUpOwogICAgIEJPT0wgZWRpdGFi
bGVDaGFuZ2VkID0gW3NlbGYgc2V0SXNFZGl0YWJsZTppc1NlbGVjdGFibGVdOwpAQCAtNTcwOCw3
ICs1NzA4LDcgQEAgLSAodm9pZClfZWxlbWVudERpZEZvY3VzOihjb25zdCBXZWJLaXQ6OkZvY3Vz
ZWRFbGVtZW50SW5mb3JtYXRpb24mKWluZm9ybWF0aW9uIHUKICAgICBbX2lucHV0UGVyaXBoZXJh
bCBiZWdpbkVkaXRpbmddOwogCiAgICAgaWYgKGRlbGVnYXRlSW1wbGVtZW50c0RpZFN0YXJ0SW5w
dXRTZXNzaW9uKQotICAgICAgICBbaW5wdXREZWxlZ2F0ZSBfd2ViVmlldzpfd2ViVmlldyBkaWRT
dGFydElucHV0U2Vzc2lvbjpfZm9ybUlucHV0U2Vzc2lvbi5nZXQoKV07CisgICAgICAgIFtpbnB1
dERlbGVnYXRlIF93ZWJWaWV3OnNlbGYud2ViVmlldyBkaWRTdGFydElucHV0U2Vzc2lvbjpfZm9y
bUlucHV0U2Vzc2lvbi5nZXQoKV07CiAgICAgCiAgICAgW193ZWJWaWV3IGRpZFN0YXJ0Rm9ybUNv
bnRyb2xJbnRlcmFjdGlvbl07CiB9CkBAIC01OTQ1LDkgKzU5NDUsOSBAQCAtICh2b2lkKWFkZEZv
Y3VzZWRGb3JtQ29udHJvbE92ZXJsYXkKICAgICBpZiAoX2ZvY3VzZWRGb3JtQ29udHJvbFZpZXcp
CiAgICAgICAgIHJldHVybjsKIAotICAgIF9hY3RpdmVGb2N1c2VkU3RhdGVSZXRhaW5CbG9jayA9
IG1ha2VCbG9ja1B0cihfd2ViVmlldy5fcmV0YWluQWN0aXZlRm9jdXNlZFN0YXRlKTsKKyAgICBf
YWN0aXZlRm9jdXNlZFN0YXRlUmV0YWluQmxvY2sgPSBtYWtlQmxvY2tQdHIoc2VsZi53ZWJWaWV3
Ll9yZXRhaW5BY3RpdmVGb2N1c2VkU3RhdGUpOwogCi0gICAgX2ZvY3VzZWRGb3JtQ29udHJvbFZp
ZXcgPSBhZG9wdE5TKFtbV0tGb2N1c2VkRm9ybUNvbnRyb2xWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOl93ZWJWaWV3LmJvdW5kcyBkZWxlZ2F0ZTpzZWxmXSk7CisgICAgX2ZvY3VzZWRGb3JtQ29u
dHJvbFZpZXcgPSBhZG9wdE5TKFtbV0tGb2N1c2VkRm9ybUNvbnRyb2xWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOnNlbGYud2ViVmlldy5ib3VuZHMgZGVsZWdhdGU6c2VsZl0pOwogICAgIFtfZm9j
dXNlZEZvcm1Db250cm9sVmlldyBoaWRlOk5PXTsKICAgICBbX3dlYlZpZXcgYWRkU3Vidmlldzpf
Zm9jdXNlZEZvcm1Db250cm9sVmlldy5nZXQoKV07CiAgICAgW3NlbGYgc2V0SW5wdXREZWxlZ2F0
ZTpfZm9jdXNlZEZvcm1Db250cm9sVmlldy5nZXQoKV07CkBAIC02NDcyLDEzICs2NDcyLDEzIEBA
IC0gKHZvaWQpX3Nob3dTaGFyZVNoZWV0Oihjb25zdCBXZWJDb3JlOjpTaGFyZURhdGFXaXRoUGFy
c2VkVVJMJilkYXRhIGluUmVjdDooV1RGCiAgICAgaWYgKF9zaGFyZVNoZWV0KQogICAgICAgICBb
X3NoYXJlU2hlZXQgZGlzbWlzc107CiAgICAgCi0gICAgX3NoYXJlU2hlZXQgPSBhZG9wdE5TKFtb
V0tTaGFyZVNoZWV0IGFsbG9jXSBpbml0V2l0aFZpZXc6X3dlYlZpZXddKTsKKyAgICBfc2hhcmVT
aGVldCA9IGFkb3B0TlMoW1tXS1NoYXJlU2hlZXQgYWxsb2NdIGluaXRXaXRoVmlldzpzZWxmLndl
YlZpZXddKTsKICAgICBbX3NoYXJlU2hlZXQgc2V0RGVsZWdhdGU6c2VsZl07CiAKICNpZiBIQVZF
KEhPVkVSX0dFU1RVUkVfUkVDT0dOSVpFUikKICAgICBpZiAoIXJlY3QpIHsKICAgICAgICAgaWYg
KGF1dG8gbGFzdE1vdXNlTG9jYXRpb24gPSBbX21vdXNlR2VzdHVyZVJlY29nbml6ZXIgbGFzdE1v
dXNlTG9jYXRpb25dKSB7Ci0gICAgICAgICAgICBhdXRvIGhvdmVyTG9jYXRpb25JbldlYlZpZXcg
PSBbc2VsZiBjb252ZXJ0UG9pbnQ6Kmxhc3RNb3VzZUxvY2F0aW9uIHRvVmlldzpfd2ViVmlld107
CisgICAgICAgICAgICBhdXRvIGhvdmVyTG9jYXRpb25JbldlYlZpZXcgPSBbc2VsZiBjb252ZXJ0
UG9pbnQ6Kmxhc3RNb3VzZUxvY2F0aW9uIHRvVmlldzpzZWxmLndlYlZpZXddOwogICAgICAgICAg
ICAgcmVjdCA9IFdlYkNvcmU6OkZsb2F0UmVjdChob3ZlckxvY2F0aW9uSW5XZWJWaWV3LngsIGhv
dmVyTG9jYXRpb25JbldlYlZpZXcueSwgMSwgMSk7CiAgICAgICAgIH0KICAgICB9CkBAIC02NTg4
LDcgKzY1ODgsNyBAQCAtICh2b2lkKWFjdGlvblNoZWV0QXNzaXN0YW50OihXS0FjdGlvblNoZWV0
QXNzaXN0YW50ICopYXNzaXN0YW50IHNoYXJlRWxlbWVudFdpdAogewogICAgIFdlYkNvcmU6OlNo
YXJlRGF0YVdpdGhQYXJzZWRVUkwgc2hhcmVEYXRhOwogICAgIHNoYXJlRGF0YS51cmwgPSB7IHVy
bCB9OwotICAgIFtzZWxmIF9zaG93U2hhcmVTaGVldDpzaGFyZURhdGEgaW5SZWN0OiB7IFtzZWxm
IGNvbnZlcnRSZWN0OmJvdW5kaW5nUmVjdCB0b1ZpZXc6X3dlYlZpZXddIH0gY29tcGxldGlvbkhh
bmRsZXI6W10gKGJvb2wgc3VjY2VzcykgeyB9XTsKKyAgICBbc2VsZiBfc2hvd1NoYXJlU2hlZXQ6
c2hhcmVEYXRhIGluUmVjdDogeyBbc2VsZiBjb252ZXJ0UmVjdDpib3VuZGluZ1JlY3QgdG9WaWV3
OnNlbGYud2ViVmlld10gfSBjb21wbGV0aW9uSGFuZGxlcjpbXSAoYm9vbCBzdWNjZXNzKSB7IH1d
OwogfQogCiAjaWYgSEFWRShBUFBfTElOS1MpCkBAIC02NjA0LDcgKzY2MDQsNyBAQCAtIChCT09M
KWFjdGlvblNoZWV0QXNzaXN0YW50OihXS0FjdGlvblNoZWV0QXNzaXN0YW50ICopYXNzaXN0YW50
IHNob3dDdXN0b21TaGVldAogICAgIAogICAgIGlmIChbdWlEZWxlZ2F0ZSByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnNob3dDdXN0b21TaGVldEZvckVsZW1lbnQ6KV0pIHsK
ICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICAgICAgaWYg
KFt1aURlbGVnYXRlIF93ZWJWaWV3Ol93ZWJWaWV3IHNob3dDdXN0b21TaGVldEZvckVsZW1lbnQ6
ZWxlbWVudF0pIHsKKyAgICAgICAgaWYgKFt1aURlbGVnYXRlIF93ZWJWaWV3OnNlbGYud2ViVmll
dyBzaG93Q3VzdG9tU2hlZXRGb3JFbGVtZW50OmVsZW1lbnRdKSB7CiAjaWYgRU5BQkxFKERBVEFf
SU5URVJBQ1RJT04pCiAgICAgICAgICAgICBCT09MIHNob3VsZENhbmNlbEFsbFRvdWNoZXMgPSAh
X2RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5kcmFnU2Vzc2lvbigpOwogI2Vsc2UKQEAgLTY2NTIs
NyArNjY1Miw3IEBAIC0gKE5TRGljdGlvbmFyeSAqKWRhdGFEZXRlY3Rpb25Db250ZXh0Rm9yUG9z
aXRpb25JbmZvcm1hdGlvbjooV2ViS2l0OjpJbnRlcmFjdGlvCiAgICAgUmV0YWluUHRyPE5TTXV0
YWJsZURpY3Rpb25hcnk+IGNvbnRleHQ7CiAgICAgaWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+IHVp
RGVsZWdhdGUgPSBzdGF0aWNfY2FzdDxpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4+KFtfd2ViVmll
dyBVSURlbGVnYXRlXSk7CiAgICAgaWYgKFt1aURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3IoX2RhdGFEZXRlY3Rpb25Db250ZXh0Rm9yV2ViVmlldzopXSkKLSAgICAgICAgY29u
dGV4dCA9IGFkb3B0TlMoW1t1aURlbGVnYXRlIF9kYXRhRGV0ZWN0aW9uQ29udGV4dEZvcldlYlZp
ZXc6X3dlYlZpZXddIG11dGFibGVDb3B5XSk7CisgICAgICAgIGNvbnRleHQgPSBhZG9wdE5TKFtb
dWlEZWxlZ2F0ZSBfZGF0YURldGVjdGlvbkNvbnRleHRGb3JXZWJWaWV3OnNlbGYud2ViVmlld10g
bXV0YWJsZUNvcHldKTsKICAgICAKICAgICBpZiAoIWNvbnRleHQpCiAgICAgICAgIGNvbnRleHQg
PSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOwpAQCAtNjY5MCw3
ICs2NjkwLDcgQEAgLSAodm9pZClhY3Rpb25TaGVldEFzc2lzdGFudDooV0tBY3Rpb25TaGVldEFz
c2lzdGFudCAqKWFzc2lzdGFudCBnZXRBbHRlcm5hdGVVUkwKIHsKICAgICBpZCA8V0tVSURlbGVn
YXRlUHJpdmF0ZT4gdWlEZWxlZ2F0ZSA9IHN0YXRpY19jYXN0PGlkIDxXS1VJRGVsZWdhdGVQcml2
YXRlPj4oW193ZWJWaWV3IFVJRGVsZWdhdGVdKTsKICAgICBpZiAoW3VpRGVsZWdhdGUgcmVzcG9u
ZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpnZXRBbHRlcm5hdGVVUkxGcm9tSW1hZ2U6
Y29tcGxldGlvbkhhbmRsZXI6KV0pIHsKLSAgICAgICAgW3VpRGVsZWdhdGUgX3dlYlZpZXc6X3dl
YlZpZXcgZ2V0QWx0ZXJuYXRlVVJMRnJvbUltYWdlOmltYWdlIGNvbXBsZXRpb25IYW5kbGVyOl4o
TlNVUkwgKmFsdGVybmF0ZVVSTCwgTlNEaWN0aW9uYXJ5ICp1c2VySW5mbykgeworICAgICAgICBb
dWlEZWxlZ2F0ZSBfd2ViVmlldzpzZWxmLndlYlZpZXcgZ2V0QWx0ZXJuYXRlVVJMRnJvbUltYWdl
OmltYWdlIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNVUkwgKmFsdGVybmF0ZVVSTCwgTlNEaWN0aW9u
YXJ5ICp1c2VySW5mbykgewogICAgICAgICAgICAgY29tcGxldGlvbihhbHRlcm5hdGVVUkwsIHVz
ZXJJbmZvKTsKICAgICAgICAgfV07CiAgICAgfSBlbHNlCkBAIC02ODE2LDE0ICs2ODE2LDE0IEBA
IHN0YXRpYyBCT09MIHNob3VsZEVuYWJsZURyYWdJbnRlcmFjdGlvbkZvclBvbGljeShfV0tEcmFn
SW50ZXJhY3Rpb25Qb2xpY3kgcG9saWN5CiAKIC0gKHZvaWQpX2RpZENoYW5nZURyYWdJbnRlcmFj
dGlvblBvbGljeQogewotICAgIFtfZHJhZ0ludGVyYWN0aW9uIHNldEVuYWJsZWQ6c2hvdWxkRW5h
YmxlRHJhZ0ludGVyYWN0aW9uRm9yUG9saWN5KF93ZWJWaWV3Ll9kcmFnSW50ZXJhY3Rpb25Qb2xp
Y3kpXTsKKyAgICBbX2RyYWdJbnRlcmFjdGlvbiBzZXRFbmFibGVkOnNob3VsZEVuYWJsZURyYWdJ
bnRlcmFjdGlvbkZvclBvbGljeShzZWxmLndlYlZpZXcuX2RyYWdJbnRlcmFjdGlvblBvbGljeSld
OwogfQogCiAtIChOU1RpbWVJbnRlcnZhbClkcmFnTGlmdERlbGF5CiB7CiAgICAgc3RhdGljIGNv
bnN0IE5TVGltZUludGVydmFsIG1lZGl1bURyYWdMaWZ0RGVsYXkgPSAwLjU7CiAgICAgc3RhdGlj
IGNvbnN0IE5TVGltZUludGVydmFsIGxvbmdEcmFnTGlmdERlbGF5ID0gMC42NTsKLSAgICBhdXRv
IGRyYWdMaWZ0RGVsYXkgPSBfd2ViVmlldy5jb25maWd1cmF0aW9uLl9kcmFnTGlmdERlbGF5Owor
ICAgIGF1dG8gZHJhZ0xpZnREZWxheSA9IHNlbGYud2ViVmlldy5jb25maWd1cmF0aW9uLl9kcmFn
TGlmdERlbGF5OwogICAgIGlmIChkcmFnTGlmdERlbGF5ID09IF9XS0RyYWdMaWZ0RGVsYXlNZWRp
dW0pCiAgICAgICAgIHJldHVybiBtZWRpdW1EcmFnTGlmdERlbGF5OwogICAgIGlmIChkcmFnTGlm
dERlbGF5ID09IF9XS0RyYWdMaWZ0RGVsYXlMb25nKQpAQCAtNjg0MSw3ICs2ODQxLDcgQEAgLSAo
dm9pZClzZXR1cERyYWdBbmREcm9wSW50ZXJhY3Rpb25zCiAgICAgX2RyYWdJbnRlcmFjdGlvbiA9
IGFkb3B0TlMoW1tVSURyYWdJbnRlcmFjdGlvbiBhbGxvY10gaW5pdFdpdGhEZWxlZ2F0ZTpzZWxm
XSk7CiAgICAgX2Ryb3BJbnRlcmFjdGlvbiA9IGFkb3B0TlMoW1tVSURyb3BJbnRlcmFjdGlvbiBh
bGxvY10gaW5pdFdpdGhEZWxlZ2F0ZTpzZWxmXSk7CiAgICAgW19kcmFnSW50ZXJhY3Rpb24gX3Nl
dExpZnREZWxheTpzZWxmLmRyYWdMaWZ0RGVsYXldOwotICAgIFtfZHJhZ0ludGVyYWN0aW9uIHNl
dEVuYWJsZWQ6c2hvdWxkRW5hYmxlRHJhZ0ludGVyYWN0aW9uRm9yUG9saWN5KF93ZWJWaWV3Ll9k
cmFnSW50ZXJhY3Rpb25Qb2xpY3kpXTsKKyAgICBbX2RyYWdJbnRlcmFjdGlvbiBzZXRFbmFibGVk
OnNob3VsZEVuYWJsZURyYWdJbnRlcmFjdGlvbkZvclBvbGljeShzZWxmLndlYlZpZXcuX2RyYWdJ
bnRlcmFjdGlvblBvbGljeSldOwogCiAgICAgW3NlbGYgYWRkSW50ZXJhY3Rpb246X2RyYWdJbnRl
cmFjdGlvbi5nZXQoKV07CiAgICAgW3NlbGYgYWRkSW50ZXJhY3Rpb246X2Ryb3BJbnRlcmFjdGlv
bi5nZXQoKV07CkBAIC03MDQ0LDcgKzcwNDQsNyBAQCAtICh2b2lkKV9kaWRQZXJmb3JtRHJhZ09w
ZXJhdGlvbjooQk9PTCloYW5kbGVkCiAgICAgW1tXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIHNo
YXJlZEluc3RhbmNlXSBkZWNyZW1lbnRQZW5kaW5nT3BlcmF0aW9uQ291bnRdOwogICAgIGlkIDxV
SURyb3BTZXNzaW9uPiBkcm9wU2Vzc2lvbiA9IF9kcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuZHJv
cFNlc3Npb24oKTsKICAgICBpZiAoW3NlbGYud2ViVmlld1VJRGVsZWdhdGUgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpkYXRhSW50ZXJhY3Rpb25PcGVyYXRpb25XYXNIYW5k
bGVkOmZvclNlc3Npb246aXRlbVByb3ZpZGVyczopXSkKLSAgICAgICAgW3NlbGYud2ViVmlld1VJ
RGVsZWdhdGUgX3dlYlZpZXc6X3dlYlZpZXcgZGF0YUludGVyYWN0aW9uT3BlcmF0aW9uV2FzSGFu
ZGxlZDpoYW5kbGVkIGZvclNlc3Npb246ZHJvcFNlc3Npb24gaXRlbVByb3ZpZGVyczpbV2ViSXRl
bVByb3ZpZGVyUGFzdGVib2FyZCBzaGFyZWRJbnN0YW5jZV0uaXRlbVByb3ZpZGVyc107CisgICAg
ICAgIFtzZWxmLndlYlZpZXdVSURlbGVnYXRlIF93ZWJWaWV3OnNlbGYud2ViVmlldyBkYXRhSW50
ZXJhY3Rpb25PcGVyYXRpb25XYXNIYW5kbGVkOmhhbmRsZWQgZm9yU2Vzc2lvbjpkcm9wU2Vzc2lv
biBpdGVtUHJvdmlkZXJzOltXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIHNoYXJlZEluc3RhbmNl
XS5pdGVtUHJvdmlkZXJzXTsKIAogICAgIENHUG9pbnQgZ2xvYmFsOwogICAgIENHUG9pbnQgY2xp
ZW50OwpAQCAtNzEzOSw3ICs3MTM5LDcgQEAgLSAoV0tEcmFnRGVzdGluYXRpb25BY3Rpb24pX2Ry
YWdEZXN0aW5hdGlvbkFjdGlvbkZvckRyb3BTZXNzaW9uOihpZCA8VUlEcm9wU2Vzc2kKIHsKICAg
ICBpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4gdWlEZWxlZ2F0ZSA9IHNlbGYud2ViVmlld1VJRGVs
ZWdhdGU7CiAgICAgaWYgKFt1aURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Io
X3dlYlZpZXc6ZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFza0ZvckRyYWdnaW5nSW5mbzopXSkKLSAg
ICAgICAgcmV0dXJuIFt1aURlbGVnYXRlIF93ZWJWaWV3Ol93ZWJWaWV3IGRyYWdEZXN0aW5hdGlv
bkFjdGlvbk1hc2tGb3JEcmFnZ2luZ0luZm86c2Vzc2lvbl07CisgICAgICAgIHJldHVybiBbdWlE
ZWxlZ2F0ZSBfd2ViVmlldzpzZWxmLndlYlZpZXcgZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFza0Zv
ckRyYWdnaW5nSW5mbzpzZXNzaW9uXTsKIAogICAgIHJldHVybiBXS0RyYWdEZXN0aW5hdGlvbkFj
dGlvbkFueSAmIH5XS0RyYWdEZXN0aW5hdGlvbkFjdGlvbkxvYWQ7CiB9CkBAIC03MTkzLDcgKzcx
OTMsNyBAQCAtIChOU0FycmF5PFVJRHJhZ0l0ZW0gKj4gKilfaXRlbXNGb3JCZWdpbm5pbmdPckFk
ZGluZ1RvU2Vzc2lvbldpdGhSZWdpc3RyYXRpb25MaQogICAgICAgICAgICAgICAgIGlmIChbaXRl
bSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHR5cGVJZGVudGlmaWVyRm9yQ2xpZW50KV0g
JiYgW2l0ZW0gcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihkYXRhRm9yQ2xpZW50KV0pCiAg
ICAgICAgICAgICAgICAgICAgIFthZGRpdGlvbmFsRGF0YSBzZXRPYmplY3Q6aXRlbS5kYXRhRm9y
Q2xpZW50IGZvcktleTppdGVtLnR5cGVJZGVudGlmaWVyRm9yQ2xpZW50XTsKICAgICAgICAgICAg
IH1dOwotICAgICAgICAgICAgTlNBcnJheSAqYWRqdXN0ZWRJdGVtcyA9IFt1aURlbGVnYXRlIF93
ZWJWaWV3Ol93ZWJWaWV3IGFkanVzdGVkRGF0YUludGVyYWN0aW9uSXRlbVByb3ZpZGVyc0Zvckl0
ZW1Qcm92aWRlcjpkZWZhdWx0SXRlbVByb3ZpZGVyIHJlcHJlc2VudGluZ09iamVjdHM6cmVwcmVz
ZW50aW5nT2JqZWN0cy5nZXQoKSBhZGRpdGlvbmFsRGF0YTphZGRpdGlvbmFsRGF0YS5nZXQoKV07
CisgICAgICAgICAgICBOU0FycmF5ICphZGp1c3RlZEl0ZW1zID0gW3VpRGVsZWdhdGUgX3dlYlZp
ZXc6c2VsZi53ZWJWaWV3IGFkanVzdGVkRGF0YUludGVyYWN0aW9uSXRlbVByb3ZpZGVyc0Zvckl0
ZW1Qcm92aWRlcjpkZWZhdWx0SXRlbVByb3ZpZGVyIHJlcHJlc2VudGluZ09iamVjdHM6cmVwcmVz
ZW50aW5nT2JqZWN0cy5nZXQoKSBhZGRpdGlvbmFsRGF0YTphZGRpdGlvbmFsRGF0YS5nZXQoKV07
CiAgICAgICAgICAgICBpZiAoYWRqdXN0ZWRJdGVtcy5jb3VudCkKICAgICAgICAgICAgICAgICBb
YWRqdXN0ZWRJdGVtUHJvdmlkZXJzIGFkZE9iamVjdHNGcm9tQXJyYXk6YWRqdXN0ZWRJdGVtc107
CiAgICAgICAgIH0KQEAgLTczMjgsNyArNzMyOCw3IEBAIHN0YXRpYyBWZWN0b3I8V2ViQ29yZTo6
SW50U2l6ZT4gc2l6ZXNPZlBsYWNlaG9sZGVyRWxlbWVudHNUb0luc2VydFdoZW5Ecm9wcGluZ0l0
CiAKIC0gKEJPT0wpX2hhbmRsZURyb3BCeUluc2VydGluZ0ltYWdlUGxhY2Vob2xkZXJzOihOU0Fy
cmF5PE5TSXRlbVByb3ZpZGVyICo+ICopaXRlbVByb3ZpZGVycyBzZXNzaW9uOihpZCA8VUlEcm9w
U2Vzc2lvbj4pc2Vzc2lvbgogewotICAgIGlmICghX3dlYlZpZXcuX2VkaXRhYmxlKQorICAgIGlm
ICghc2VsZi53ZWJWaWV3Ll9lZGl0YWJsZSkKICAgICAgICAgcmV0dXJuIE5POwogCiAgICAgaWYg
KF9kcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuZHJhZ1Nlc3Npb24oKSkKQEAgLTczOTUsNyArNzM5
NSw3IEBAIC0gKE5TSW50ZWdlcilfZHJhZ0ludGVyYWN0aW9uOihVSURyYWdJbnRlcmFjdGlvbiAq
KWludGVyYWN0aW9uIGRhdGFPd25lckZvclNlc3NpCiAgICAgaWQgPFdLVUlEZWxlZ2F0ZVByaXZh
dGU+IHVpRGVsZWdhdGUgPSBzZWxmLndlYlZpZXdVSURlbGVnYXRlOwogICAgIE5TSW50ZWdlciBk
YXRhT3duZXIgPSAwOwogICAgIGlmIChbdWlEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKF93ZWJWaWV3OmRhdGFPd25lckZvckRyYWdTZXNzaW9uOildKQotICAgICAgICBkYXRh
T3duZXIgPSBbdWlEZWxlZ2F0ZSBfd2ViVmlldzpfd2ViVmlldyBkYXRhT3duZXJGb3JEcmFnU2Vz
c2lvbjpzZXNzaW9uXTsKKyAgICAgICAgZGF0YU93bmVyID0gW3VpRGVsZWdhdGUgX3dlYlZpZXc6
c2VsZi53ZWJWaWV3IGRhdGFPd25lckZvckRyYWdTZXNzaW9uOnNlc3Npb25dOwogICAgIHJldHVy
biBkYXRhT3duZXI7CiB9CiAKQEAgLTc0NjIsNyArNzQ2Miw3IEBAIC0gKFVJVGFyZ2V0ZWREcmFn
UHJldmlldyAqKWRyYWdJbnRlcmFjdGlvbjooVUlEcmFnSW50ZXJhY3Rpb24gKilpbnRlcmFjdGlv
biBwcmV2CiB7CiAgICAgaWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+IHVpRGVsZWdhdGUgPSBzZWxm
LndlYlZpZXdVSURlbGVnYXRlOwogICAgIGlmIChbdWlEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnByZXZpZXdGb3JMaWZ0aW5nSXRlbTpzZXNzaW9uOildKSB7
Ci0gICAgICAgIFVJVGFyZ2V0ZWREcmFnUHJldmlldyAqb3ZlcnJpZGRlblByZXZpZXcgPSBbdWlE
ZWxlZ2F0ZSBfd2ViVmlldzpfd2ViVmlldyBwcmV2aWV3Rm9yTGlmdGluZ0l0ZW06aXRlbSBzZXNz
aW9uOnNlc3Npb25dOworICAgICAgICBVSVRhcmdldGVkRHJhZ1ByZXZpZXcgKm92ZXJyaWRkZW5Q
cmV2aWV3ID0gW3VpRGVsZWdhdGUgX3dlYlZpZXc6c2VsZi53ZWJWaWV3IHByZXZpZXdGb3JMaWZ0
aW5nSXRlbTppdGVtIHNlc3Npb246c2Vzc2lvbl07CiAgICAgICAgIGlmIChvdmVycmlkZGVuUHJl
dmlldykKICAgICAgICAgICAgIHJldHVybiBvdmVycmlkZGVuUHJldmlldzsKICAgICB9CkBAIC03
NTAyLDcgKzc1MDIsNyBAQCAtICh2b2lkKWRyYWdJbnRlcmFjdGlvbjooVUlEcmFnSW50ZXJhY3Rp
b24gKilpbnRlcmFjdGlvbiBzZXNzaW9uV2lsbEJlZ2luOihpZCA8VQogICAgIFJFTEVBU0VfTE9H
KERyYWdBbmREcm9wLCAiRHJhZyBzZXNzaW9uIGJlZ2lubmluZzogJXAiLCBzZXNzaW9uKTsKICAg
ICBpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4gdWlEZWxlZ2F0ZSA9IHNlbGYud2ViVmlld1VJRGVs
ZWdhdGU7CiAgICAgaWYgKFt1aURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Io
X3dlYlZpZXc6ZGF0YUludGVyYWN0aW9uOnNlc3Npb25XaWxsQmVnaW46KV0pCi0gICAgICAgIFt1
aURlbGVnYXRlIF93ZWJWaWV3Ol93ZWJWaWV3IGRhdGFJbnRlcmFjdGlvbjppbnRlcmFjdGlvbiBz
ZXNzaW9uV2lsbEJlZ2luOnNlc3Npb25dOworICAgICAgICBbdWlEZWxlZ2F0ZSBfd2ViVmlldzpz
ZWxmLndlYlZpZXcgZGF0YUludGVyYWN0aW9uOmludGVyYWN0aW9uIHNlc3Npb25XaWxsQmVnaW46
c2Vzc2lvbl07CiAKICAgICBbX2FjdGlvblNoZWV0QXNzaXN0YW50IGNsZWFudXBTaGVldF07CiAg
ICAgX2RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5kcmFnU2Vzc2lvbldpbGxCZWdpbigpOwpAQCAt
NzUxNyw3ICs3NTE3LDcgQEAgLSAodm9pZClkcmFnSW50ZXJhY3Rpb246KFVJRHJhZ0ludGVyYWN0
aW9uICopaW50ZXJhY3Rpb24gc2Vzc2lvbjooaWQgPFVJRHJhZ1Nlc3MKIAogICAgIGlkIDxXS1VJ
RGVsZWdhdGVQcml2YXRlPiB1aURlbGVnYXRlID0gc2VsZi53ZWJWaWV3VUlEZWxlZ2F0ZTsKICAg
ICBpZiAoW3VpRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpk
YXRhSW50ZXJhY3Rpb246c2Vzc2lvbjpkaWRFbmRXaXRoT3BlcmF0aW9uOildKQotICAgICAgICBb
dWlEZWxlZ2F0ZSBfd2ViVmlldzpfd2ViVmlldyBkYXRhSW50ZXJhY3Rpb246aW50ZXJhY3Rpb24g
c2Vzc2lvbjpzZXNzaW9uIGRpZEVuZFdpdGhPcGVyYXRpb246b3BlcmF0aW9uXTsKKyAgICAgICAg
W3VpRGVsZWdhdGUgX3dlYlZpZXc6c2VsZi53ZWJWaWV3IGRhdGFJbnRlcmFjdGlvbjppbnRlcmFj
dGlvbiBzZXNzaW9uOnNlc3Npb24gZGlkRW5kV2l0aE9wZXJhdGlvbjpvcGVyYXRpb25dOwogCiAg
ICAgaWYgKF9kcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuaXNQZXJmb3JtaW5nRHJvcCgpKQogICAg
ICAgICByZXR1cm47CkBAIC03NTMwLDcgKzc1MzAsNyBAQCAtIChVSVRhcmdldGVkRHJhZ1ByZXZp
ZXcgKilkcmFnSW50ZXJhY3Rpb246KFVJRHJhZ0ludGVyYWN0aW9uICopaW50ZXJhY3Rpb24gcHJl
dgogewogICAgIGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPiB1aURlbGVnYXRlID0gc2VsZi53ZWJW
aWV3VUlEZWxlZ2F0ZTsKICAgICBpZiAoW3VpRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3Rvcihfd2ViVmlldzpwcmV2aWV3Rm9yQ2FuY2VsbGluZ0l0ZW06d2l0aERlZmF1bHQ6KV0p
IHsKLSAgICAgICAgVUlUYXJnZXRlZERyYWdQcmV2aWV3ICpvdmVycmlkZGVuUHJldmlldyA9IFt1
aURlbGVnYXRlIF93ZWJWaWV3Ol93ZWJWaWV3IHByZXZpZXdGb3JDYW5jZWxsaW5nSXRlbTppdGVt
IHdpdGhEZWZhdWx0OmRlZmF1bHRQcmV2aWV3XTsKKyAgICAgICAgVUlUYXJnZXRlZERyYWdQcmV2
aWV3ICpvdmVycmlkZGVuUHJldmlldyA9IFt1aURlbGVnYXRlIF93ZWJWaWV3OnNlbGYud2ViVmll
dyBwcmV2aWV3Rm9yQ2FuY2VsbGluZ0l0ZW06aXRlbSB3aXRoRGVmYXVsdDpkZWZhdWx0UHJldmll
d107CiAgICAgICAgIGlmIChvdmVycmlkZGVuUHJldmlldykKICAgICAgICAgICAgIHJldHVybiBv
dmVycmlkZGVuUHJldmlldzsKICAgICB9CkBAIC03NTY5LDcgKzc1NjksNyBAQCAtIChOU0ludGVn
ZXIpX2Ryb3BJbnRlcmFjdGlvbjooVUlEcm9wSW50ZXJhY3Rpb24gKilpbnRlcmFjdGlvbiBkYXRh
T3duZXJGb3JTZXNzaQogICAgIGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPiB1aURlbGVnYXRlID0g
c2VsZi53ZWJWaWV3VUlEZWxlZ2F0ZTsKICAgICBOU0ludGVnZXIgZGF0YU93bmVyID0gMDsKICAg
ICBpZiAoW3VpRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpk
YXRhT3duZXJGb3JEcm9wU2Vzc2lvbjopXSkKLSAgICAgICAgZGF0YU93bmVyID0gW3VpRGVsZWdh
dGUgX3dlYlZpZXc6X3dlYlZpZXcgZGF0YU93bmVyRm9yRHJvcFNlc3Npb246c2Vzc2lvbl07Cisg
ICAgICAgIGRhdGFPd25lciA9IFt1aURlbGVnYXRlIF93ZWJWaWV3OnNlbGYud2ViVmlldyBkYXRh
T3duZXJGb3JEcm9wU2Vzc2lvbjpzZXNzaW9uXTsKICAgICByZXR1cm4gZGF0YU93bmVyOwogfQog
CkBAIC03NjA0LDcgKzc2MDQsNyBAQCAtIChVSURyb3BQcm9wb3NhbCAqKWRyb3BJbnRlcmFjdGlv
bjooVUlEcm9wSW50ZXJhY3Rpb24gKilpbnRlcmFjdGlvbiBzZXNzaW9uRGlkVQogICAgIGF1dG8g
ZGVsZWdhdGUgPSBzZWxmLndlYlZpZXdVSURlbGVnYXRlOwogICAgIGF1dG8gb3BlcmF0aW9uID0g
ZHJvcE9wZXJhdGlvbkZvcldlYkNvcmVEcmFnT3BlcmF0aW9uKF9wYWdlLT5jdXJyZW50RHJhZ09w
ZXJhdGlvbigpKTsKICAgICBpZiAoW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0
b3IoX3dlYlZpZXc6d2lsbFVwZGF0ZURhdGFJbnRlcmFjdGlvbk9wZXJhdGlvblRvT3BlcmF0aW9u
OmZvclNlc3Npb246KV0pCi0gICAgICAgIG9wZXJhdGlvbiA9IHN0YXRpY19jYXN0PFVJRHJvcE9w
ZXJhdGlvbj4oW2RlbGVnYXRlIF93ZWJWaWV3Ol93ZWJWaWV3IHdpbGxVcGRhdGVEYXRhSW50ZXJh
Y3Rpb25PcGVyYXRpb25Ub09wZXJhdGlvbjpvcGVyYXRpb24gZm9yU2Vzc2lvbjpzZXNzaW9uXSk7
CisgICAgICAgIG9wZXJhdGlvbiA9IHN0YXRpY19jYXN0PFVJRHJvcE9wZXJhdGlvbj4oW2RlbGVn
YXRlIF93ZWJWaWV3OnNlbGYud2ViVmlldyB3aWxsVXBkYXRlRGF0YUludGVyYWN0aW9uT3BlcmF0
aW9uVG9PcGVyYXRpb246b3BlcmF0aW9uIGZvclNlc3Npb246c2Vzc2lvbl0pOwogCiAgICAgYXV0
byBwcm9wb3NhbCA9IGFkb3B0TlMoW1tVSURyb3BQcm9wb3NhbCBhbGxvY10gaW5pdFdpdGhEcm9w
T3BlcmF0aW9uOnN0YXRpY19jYXN0PFVJRHJvcE9wZXJhdGlvbj4ob3BlcmF0aW9uKV0pOwogICAg
IGF1dG8gZHJhZ0hhbmRsaW5nTWV0aG9kID0gX3BhZ2UtPmN1cnJlbnREcmFnSGFuZGxpbmdNZXRo
b2QoKTsKQEAgLTc2MTMsMTMgKzc2MTMsMTMgQEAgLSAoVUlEcm9wUHJvcG9zYWwgKilkcm9wSW50
ZXJhY3Rpb246KFVJRHJvcEludGVyYWN0aW9uICopaW50ZXJhY3Rpb24gc2Vzc2lvbkRpZFUKICAg
ICAgICAgLy8gZWxlbWVudCwgY2F1c2luZyB0aGUgZHJhZyB0byBubyBsb25nZXIgYmUgYWNjZXB0
ZWQuIFRoaXMgaW4gdHVybiBkaXNhYmxlcyBwcmVjaXNpb24gZHJvcCBtb2RlLCB3aGljaCBjYXVz
ZXMgdGhlIGRyYWcgc2Vzc2lvbiB0byBoaXQtdGVzdCBpbnNpZGUgb2YgdGhlIGVkaXRhYmxlCiAg
ICAgICAgIC8vIGVsZW1lbnQgYWdhaW4sIHdoaWNoIGVuYWJsZXMgcHJlY2lzaW9uIG1vZGUsIHRo
dXMgY29udGludWluZyB0aGUgY3ljbGUuIFRvIGF2b2lkIHByZWNpc2lvbiBtb2RlIHRocmFzaGlu
Zywgd2UgZm9yYmlkIHByZWNpc2lvbiBtb2RlIHdoZW4gZHJhZ2dpbmcgbmVhciB0aGUgdG9wIG9y
CiAgICAgICAgIC8vIGJvdHRvbSBvZiB0aGUgZWRpdGFibGUgZWxlbWVudC4KLSAgICAgICAgYXV0
byBtaW5pbXVtRGlzdGFuY2VGcm9tVmVydGljYWxFZGdlRm9yUHJlY2lzZURyb3AgPSAyNSAvIF93
ZWJWaWV3LnNjcm9sbFZpZXcuem9vbVNjYWxlOworICAgICAgICBhdXRvIG1pbmltdW1EaXN0YW5j
ZUZyb21WZXJ0aWNhbEVkZ2VGb3JQcmVjaXNlRHJvcCA9IDI1IC8gc2VsZi53ZWJWaWV3LnNjcm9s
bFZpZXcuem9vbVNjYWxlOwogICAgICAgICBbcHJvcG9zYWwgc2V0UHJlY2lzZTpDR1JlY3RDb250
YWluc1BvaW50KENHUmVjdEluc2V0KF9wYWdlLT5jdXJyZW50RHJhZ0NhcmV0RWRpdGFibGVFbGVt
ZW50UmVjdCgpLCAwLCBtaW5pbXVtRGlzdGFuY2VGcm9tVmVydGljYWxFZGdlRm9yUHJlY2lzZURy
b3ApLCBbc2Vzc2lvbiBsb2NhdGlvbkluVmlldzpzZWxmXSldOwogICAgIH0gZWxzZQogICAgICAg
ICBbcHJvcG9zYWwgc2V0UHJlY2lzZTpOT107CiAKICAgICBpZiAoW2RlbGVnYXRlIHJlc3BvbmRz
VG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6d2lsbFVwZGF0ZURyb3BQcm9wb3NhbFRvUHJv
cG9zYWw6Zm9yU2Vzc2lvbjopXSkKLSAgICAgICAgcHJvcG9zYWwgPSBbZGVsZWdhdGUgX3dlYlZp
ZXc6X3dlYlZpZXcgd2lsbFVwZGF0ZURyb3BQcm9wb3NhbFRvUHJvcG9zYWw6cHJvcG9zYWwuZ2V0
KCkgZm9yU2Vzc2lvbjpzZXNzaW9uXTsKKyAgICAgICAgcHJvcG9zYWwgPSBbZGVsZWdhdGUgX3dl
YlZpZXc6c2VsZi53ZWJWaWV3IHdpbGxVcGRhdGVEcm9wUHJvcG9zYWxUb1Byb3Bvc2FsOnByb3Bv
c2FsLmdldCgpIGZvclNlc3Npb246c2Vzc2lvbl07CiAKICAgICByZXR1cm4gcHJvcG9zYWwuYXV0
b3JlbGVhc2UoKTsKIH0KQEAgLTc2NDEsMTIgKzc2NDEsMTIgQEAgLSAodm9pZClkcm9wSW50ZXJh
Y3Rpb246KFVJRHJvcEludGVyYWN0aW9uICopaW50ZXJhY3Rpb24gcGVyZm9ybURyb3A6KGlkIDxV
SURyb3AKICAgICBOU0FycmF5IDxOU0l0ZW1Qcm92aWRlciAqPiAqaXRlbVByb3ZpZGVycyA9IGV4
dHJhY3RJdGVtUHJvdmlkZXJzRnJvbURyb3BTZXNzaW9uKHNlc3Npb24pOwogICAgIGlkIDxXS1VJ
RGVsZWdhdGVQcml2YXRlPiB1aURlbGVnYXRlID0gc2VsZi53ZWJWaWV3VUlEZWxlZ2F0ZTsKICAg
ICBpZiAoW3VpRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpw
ZXJmb3JtRGF0YUludGVyYWN0aW9uT3BlcmF0aW9uV2l0aEl0ZW1Qcm92aWRlcnM6KV0pIHsKLSAg
ICAgICAgaWYgKFt1aURlbGVnYXRlIF93ZWJWaWV3Ol93ZWJWaWV3IHBlcmZvcm1EYXRhSW50ZXJh
Y3Rpb25PcGVyYXRpb25XaXRoSXRlbVByb3ZpZGVyczppdGVtUHJvdmlkZXJzXSkKKyAgICAgICAg
aWYgKFt1aURlbGVnYXRlIF93ZWJWaWV3OnNlbGYud2ViVmlldyBwZXJmb3JtRGF0YUludGVyYWN0
aW9uT3BlcmF0aW9uV2l0aEl0ZW1Qcm92aWRlcnM6aXRlbVByb3ZpZGVyc10pCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKFt1aURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3IoX3dlYlZpZXc6d2lsbFBlcmZvcm1Ecm9wV2l0aFNlc3Npb246KV0pIHsKLSAg
ICAgICAgaXRlbVByb3ZpZGVycyA9IGV4dHJhY3RJdGVtUHJvdmlkZXJzRnJvbURyYWdJdGVtcyhb
dWlEZWxlZ2F0ZSBfd2ViVmlldzpfd2ViVmlldyB3aWxsUGVyZm9ybURyb3BXaXRoU2Vzc2lvbjpz
ZXNzaW9uXSk7CisgICAgICAgIGl0ZW1Qcm92aWRlcnMgPSBleHRyYWN0SXRlbVByb3ZpZGVyc0Zy
b21EcmFnSXRlbXMoW3VpRGVsZWdhdGUgX3dlYlZpZXc6c2VsZi53ZWJWaWV3IHdpbGxQZXJmb3Jt
RHJvcFdpdGhTZXNzaW9uOnNlc3Npb25dKTsKICAgICAgICAgaWYgKCFpdGVtUHJvdmlkZXJzLmNv
dW50KQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTc3NTAsOSArNzc1MCw5IEBAIC0g
KHZvaWQpZGlzbWlzc1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlckFuZFJldmVhbEZvY3VzZWRGb3Jt
T3ZlcmxheUlmTmVjZXNzYXJ5OihQCiB7CiAgICAgQk9PTCBzaG91bGRSZXZlYWxGb2N1c092ZXJs
YXkgPSBOTzsKICAgICAvLyBJbiB0aGUgY2FzZSB3aGVyZSB0aGVyZSdzIG5vdGhpbmcgdGhlIHVz
ZXIgY291bGQgcG90ZW50aWFsbHkgZG8gYmVzaWRlcyBkaXNtaXNzIHRoZSBvdmVybGF5LCB3ZSBj
YW4ganVzdCBhdXRvbWF0aWNhbGx5IHdpdGhvdXQgYXNraW5nIHRoZSBkZWxlZ2F0ZS4KLSAgICBp
ZiAoW193ZWJWaWV3Ll9pbnB1dERlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Io
X3dlYlZpZXc6c2hvdWxkUmV2ZWFsRm9jdXNPdmVybGF5Rm9ySW5wdXRTZXNzaW9uOildCisgICAg
aWYgKFtzZWxmLndlYlZpZXcuX2lucHV0RGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3Rvcihfd2ViVmlldzpzaG91bGRSZXZlYWxGb2N1c092ZXJsYXlGb3JJbnB1dFNlc3Npb246KV0K
ICAgICAgICAgJiYgKFtzZWxmIGFjdGlvbk5hbWVGb3JGb2N1c2VkRm9ybUNvbnRyb2xWaWV3Ol9m
b2N1c2VkRm9ybUNvbnRyb2xWaWV3LmdldCgpXSB8fCBfZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlv
bi5oYXNOZXh0Tm9kZSB8fCBfZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5oYXNQcmV2aW91c05v
ZGUpKQotICAgICAgICBzaG91bGRSZXZlYWxGb2N1c092ZXJsYXkgPSBbX3dlYlZpZXcuX2lucHV0
RGVsZWdhdGUgX3dlYlZpZXc6X3dlYlZpZXcgc2hvdWxkUmV2ZWFsRm9jdXNPdmVybGF5Rm9ySW5w
dXRTZXNzaW9uOl9mb3JtSW5wdXRTZXNzaW9uLmdldCgpXTsKKyAgICAgICAgc2hvdWxkUmV2ZWFs
Rm9jdXNPdmVybGF5ID0gW3NlbGYud2ViVmlldy5faW5wdXREZWxlZ2F0ZSBfd2ViVmlldzpzZWxm
LndlYlZpZXcgc2hvdWxkUmV2ZWFsRm9jdXNPdmVybGF5Rm9ySW5wdXRTZXNzaW9uOl9mb3JtSW5w
dXRTZXNzaW9uLmdldCgpXTsKIAogICAgIGlmIChzaG91bGRSZXZlYWxGb2N1c092ZXJsYXkpIHsK
ICAgICAgICAgW19mb2N1c2VkRm9ybUNvbnRyb2xWaWV3IHNob3c6Tk9dOwpAQCAtNzc5NCwxMSAr
Nzc5NCwxMSBAQCAtICh2b2lkKXF1aWNrYm9hcmRJbnB1dENhbmNlbGxlZDooUFVJQ1F1aWNrYm9h
cmRWaWV3Q29udHJvbGxlciAqKXF1aWNrYm9hcmQKIAogLSAoQ0dGbG9hdCl2aWV3Q29udHJvbGxl
cjooUFVJQ1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXIgaW5wdXRDb250ZXh0
Vmlld0hlaWdodEZvclNpemU6KENHU2l6ZSlzaXplCiB7Ci0gICAgaWQgPF9XS0lucHV0RGVsZWdh
dGU+IGRlbGVnYXRlID0gX3dlYlZpZXcuX2lucHV0RGVsZWdhdGU7CisgICAgaWQgPF9XS0lucHV0
RGVsZWdhdGU+IGRlbGVnYXRlID0gc2VsZi53ZWJWaWV3Ll9pbnB1dERlbGVnYXRlOwogICAgIGlm
ICghW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6Zm9jdXNl
ZEVsZW1lbnRDb250ZXh0Vmlld0hlaWdodEZvckZpdHRpbmdTaXplOmlucHV0U2Vzc2lvbjopXSkK
ICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gW2RlbGVnYXRlIF93ZWJWaWV3Ol93ZWJW
aWV3IGZvY3VzZWRFbGVtZW50Q29udGV4dFZpZXdIZWlnaHRGb3JGaXR0aW5nU2l6ZTpzaXplIGlu
cHV0U2Vzc2lvbjpfZm9ybUlucHV0U2Vzc2lvbi5nZXQoKV07CisgICAgcmV0dXJuIFtkZWxlZ2F0
ZSBfd2ViVmlldzpzZWxmLndlYlZpZXcgZm9jdXNlZEVsZW1lbnRDb250ZXh0Vmlld0hlaWdodEZv
ckZpdHRpbmdTaXplOnNpemUgaW5wdXRTZXNzaW9uOl9mb3JtSW5wdXRTZXNzaW9uLmdldCgpXTsK
IH0KIAogLSAoQk9PTClhbGxvd3NMYW5ndWFnZVNlbGVjdGlvbk1lbnVGb3JMaXN0Vmlld0NvbnRy
b2xsZXI6KFBVSUNRdWlja2JvYXJkVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyCkBAIC03ODE4
LDExICs3ODE4LDExIEBAIC0gKEJPT0wpYWxsb3dzTGFuZ3VhZ2VTZWxlY3Rpb25NZW51Rm9yTGlz
dFZpZXdDb250cm9sbGVyOihQVUlDUXVpY2tib2FyZFZpZXdDb250CiAKIC0gKFVJVmlldyAqKWlu
cHV0Q29udGV4dFZpZXdGb3JWaWV3Q29udHJvbGxlcjooUFVJQ1F1aWNrYm9hcmRWaWV3Q29udHJv
bGxlciAqKWNvbnRyb2xsZXIKIHsKLSAgICBpZCA8X1dLSW5wdXREZWxlZ2F0ZT4gZGVsZWdhdGUg
PSBfd2ViVmlldy5faW5wdXREZWxlZ2F0ZTsKKyAgICBpZCA8X1dLSW5wdXREZWxlZ2F0ZT4gZGVs
ZWdhdGUgPSBzZWxmLndlYlZpZXcuX2lucHV0RGVsZWdhdGU7CiAgICAgaWYgKCFbZGVsZWdhdGUg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpmb2N1c2VkRWxlbWVudENvbnRl
eHRWaWV3Rm9ySW5wdXRTZXNzaW9uOildKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgcmV0
dXJuIFtkZWxlZ2F0ZSBfd2ViVmlldzpfd2ViVmlldyBmb2N1c2VkRWxlbWVudENvbnRleHRWaWV3
Rm9ySW5wdXRTZXNzaW9uOl9mb3JtSW5wdXRTZXNzaW9uLmdldCgpXTsKKyAgICByZXR1cm4gW2Rl
bGVnYXRlIF93ZWJWaWV3OnNlbGYud2ViVmlldyBmb2N1c2VkRWxlbWVudENvbnRleHRWaWV3Rm9y
SW5wdXRTZXNzaW9uOl9mb3JtSW5wdXRTZXNzaW9uLmdldCgpXTsKIH0KIAogLSAoTlNTdHJpbmcg
KilpbnB1dExhYmVsVGV4dEZvclZpZXdDb250cm9sbGVyOihQVUlDUXVpY2tib2FyZFZpZXdDb250
cm9sbGVyICopY29udHJvbGxlcgpAQCAtODExMiw3ICs4MTEyLDcgQEAgQGltcGxlbWVudGF0aW9u
IFdLQ29udGVudFZpZXcgKFdLSW50ZXJhY3Rpb25QcmV2aWV3KQogCiAtICh2b2lkKV9yZWdpc3Rl
clByZXZpZXcKIHsKLSAgICBpZiAoIV93ZWJWaWV3LmFsbG93c0xpbmtQcmV2aWV3KQorICAgIGlm
ICghc2VsZi53ZWJWaWV3LmFsbG93c0xpbmtQcmV2aWV3KQogICAgICAgICByZXR1cm47CiAKICNp
ZiBVU0UoVUlDT05URVhUTUVOVSkKQEAgLTgxMjEsNyArODEyMSw3IEBAIC0gKHZvaWQpX3JlZ2lz
dGVyUHJldmlldwogICAgICAgICBfY29udGV4dE1lbnVIYXNSZXF1ZXN0ZWRMZWdhY3lEYXRhID0g
Tk87CiAgICAgICAgIFtzZWxmIGFkZEludGVyYWN0aW9uOl9jb250ZXh0TWVudUludGVyYWN0aW9u
LmdldCgpXTsKIAotICAgICAgICBpZiAoaWQ8X1VJQ2xpY2tJbnRlcmFjdGlvbkRyaXZpbmc+IGRy
aXZlciA9IF93ZWJWaWV3LmNvbmZpZ3VyYXRpb24uX2NsaWNrSW50ZXJhY3Rpb25Ecml2ZXJGb3JU
ZXN0aW5nKSB7CisgICAgICAgIGlmIChpZDxfVUlDbGlja0ludGVyYWN0aW9uRHJpdmluZz4gZHJp
dmVyID0gc2VsZi53ZWJWaWV3LmNvbmZpZ3VyYXRpb24uX2NsaWNrSW50ZXJhY3Rpb25Ecml2ZXJG
b3JUZXN0aW5nKSB7CiAgICAgICAgICAgICBfVUlDbGlja0ludGVyYWN0aW9uICpwcmV2aWV3Q2xp
Y2tJbnRlcmFjdGlvbiA9IFtbX2NvbnRleHRNZW51SW50ZXJhY3Rpb24gcHJlc2VudGF0aW9uSW50
ZXJhY3Rpb25dIHByZXZpZXdDbGlja0ludGVyYWN0aW9uXTsKICAgICAgICAgICAgIFtwcmV2aWV3
Q2xpY2tJbnRlcmFjdGlvbiBzZXREcml2ZXI6ZHJpdmVyXTsKICAgICAgICAgICAgIFtkcml2ZXIg
c2V0RGVsZWdhdGU6KGlkPF9VSUNsaWNrSW50ZXJhY3Rpb25Ecml2ZXJEZWxlZ2F0ZT4pcHJldmll
d0NsaWNrSW50ZXJhY3Rpb25dOwpAQCAtODI1Niw3ICs4MjU2LDcgQEAgLSAodm9pZClhc3NpZ25M
ZWdhY3lEYXRhRm9yQ29udGV4dE1lbnVJbnRlcmFjdGlvbgogCiAgICAgaWYgKCFfd2ViVmlldykK
ICAgICAgICAgcmV0dXJuOwotICAgIGF1dG8gdWlEZWxlZ2F0ZSA9IHN0YXRpY19jYXN0PGlkPFdL
VUlEZWxlZ2F0ZVByaXZhdGU+Pihfd2ViVmlldy5VSURlbGVnYXRlKTsKKyAgICBhdXRvIHVpRGVs
ZWdhdGUgPSBzdGF0aWNfY2FzdDxpZDxXS1VJRGVsZWdhdGVQcml2YXRlPj4oc2VsZi53ZWJWaWV3
LlVJRGVsZWdhdGUpOwogICAgIGlmICghdWlEZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuOwogCkBA
IC04MjgwLDExICs4MjgwLDExIEBAIC0gKHZvaWQpYXNzaWduTGVnYWN5RGF0YUZvckNvbnRleHRN
ZW51SW50ZXJhY3Rpb24KICAgICAgICAgICAgIGF1dG8gZGVmYXVsdEFjdGlvbnMgPSB3a0xlZ2Fj
eVByZXZpZXdBY3Rpb25zRnJvbUVsZW1lbnRBY3Rpb25zKGRlZmF1bHRBY3Rpb25zRnJvbUFzc2lz
dGFudC5nZXQoKSwgZWxlbWVudEluZm8uZ2V0KCkpOwogICAgICAgICAgICAgYXV0byBwcmV2aWV3
RWxlbWVudEluZm8gPSBhZG9wdE5TKFtbV0tQcmV2aWV3RWxlbWVudEluZm8gYWxsb2NdIF9pbml0
V2l0aExpbmtVUkw6dXJsXSk7CiAgICAgICAgICAgICAvLyBGSVhNRTogQ2xpZW50cyB1c2luZyB0
aGlzIGxlZ2FjeSBBUEkgd2lsbCBhbHdheXMgc2hvdyB0aGVpciBwcmV2aWV3Vmlld0NvbnRyb2xs
ZXIgYW5kIGlnbm9yZSBfc2hvd0xpbmtQcmV2aWV3cy4KLSAgICAgICAgICAgIHByZXZpZXdWaWV3
Q29udHJvbGxlciA9IFt1aURlbGVnYXRlIHdlYlZpZXc6X3dlYlZpZXcgcHJldmlld2luZ1ZpZXdD
b250cm9sbGVyRm9yRWxlbWVudDpwcmV2aWV3RWxlbWVudEluZm8uZ2V0KCkgZGVmYXVsdEFjdGlv
bnM6ZGVmYXVsdEFjdGlvbnNdOworICAgICAgICAgICAgcHJldmlld1ZpZXdDb250cm9sbGVyID0g
W3VpRGVsZWdhdGUgd2ViVmlldzpzZWxmLndlYlZpZXcgcHJldmlld2luZ1ZpZXdDb250cm9sbGVy
Rm9yRWxlbWVudDpwcmV2aWV3RWxlbWVudEluZm8uZ2V0KCkgZGVmYXVsdEFjdGlvbnM6ZGVmYXVs
dEFjdGlvbnNdOwogICAgICAgICB9IGVsc2UgaWYgKFt1aURlbGVnYXRlIHJlc3BvbmRzVG9TZWxl
Y3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6cHJldmlld1ZpZXdDb250cm9sbGVyRm9yVVJMOmRlZmF1
bHRBY3Rpb25zOmVsZW1lbnRJbmZvOildKQotICAgICAgICAgICAgcHJldmlld1ZpZXdDb250cm9s
bGVyID0gW3VpRGVsZWdhdGUgX3dlYlZpZXc6X3dlYlZpZXcgcHJldmlld1ZpZXdDb250cm9sbGVy
Rm9yVVJMOnVybCBkZWZhdWx0QWN0aW9uczpkZWZhdWx0QWN0aW9uc0Zyb21Bc3Npc3RhbnQuZ2V0
KCkgZWxlbWVudEluZm86ZWxlbWVudEluZm8uZ2V0KCldOworICAgICAgICAgICAgcHJldmlld1Zp
ZXdDb250cm9sbGVyID0gW3VpRGVsZWdhdGUgX3dlYlZpZXc6c2VsZi53ZWJWaWV3IHByZXZpZXdW
aWV3Q29udHJvbGxlckZvclVSTDp1cmwgZGVmYXVsdEFjdGlvbnM6ZGVmYXVsdEFjdGlvbnNGcm9t
QXNzaXN0YW50LmdldCgpIGVsZW1lbnRJbmZvOmVsZW1lbnRJbmZvLmdldCgpXTsKICAgICAgICAg
ZWxzZSBpZiAoW3VpRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmll
dzpwcmV2aWV3Vmlld0NvbnRyb2xsZXJGb3JVUkw6KV0pCi0gICAgICAgICAgICBwcmV2aWV3Vmll
d0NvbnRyb2xsZXIgPSBbdWlEZWxlZ2F0ZSBfd2ViVmlldzpfd2ViVmlldyBwcmV2aWV3Vmlld0Nv
bnRyb2xsZXJGb3JVUkw6dXJsXTsKKyAgICAgICAgICAgIHByZXZpZXdWaWV3Q29udHJvbGxlciA9
IFt1aURlbGVnYXRlIF93ZWJWaWV3OnNlbGYud2ViVmlldyBwcmV2aWV3Vmlld0NvbnRyb2xsZXJG
b3JVUkw6dXJsXTsKICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAK
ICAgICAgICAgLy8gUHJldmlvdXNseSwgVUlQcmV2aWV3SXRlbUNvbnRyb2xsZXIgd291bGQgZGV0
ZWN0IHRoZSBjYXNlIHdoZXJlIHRoZXJlIHdhcyBubyBwcmV2aWV3Vmlld0NvbnRyb2xsZXIKQEAg
LTgzMTcsMTggKzgzMTcsMTggQEAgLSAodm9pZClhc3NpZ25MZWdhY3lEYXRhRm9yQ29udGV4dE1l
bnVJbnRlcmFjdGlvbgogCiAgICAgICAgIGlmIChbdWlEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmFsdGVybmF0ZVVSTEZyb21JbWFnZTp1c2VySW5mbzopXSkg
ewogICAgICAgICAgICAgTlNEaWN0aW9uYXJ5ICp1c2VySW5mbzsKLSAgICAgICAgICAgIG5zVVJM
ID0gW3VpRGVsZWdhdGUgX3dlYlZpZXc6X3dlYlZpZXcgYWx0ZXJuYXRlVVJMRnJvbUltYWdlOnVp
SW1hZ2UuZ2V0KCkgdXNlckluZm86JnVzZXJJbmZvXTsKKyAgICAgICAgICAgIG5zVVJMID0gW3Vp
RGVsZWdhdGUgX3dlYlZpZXc6c2VsZi53ZWJWaWV3IGFsdGVybmF0ZVVSTEZyb21JbWFnZTp1aUlt
YWdlLmdldCgpIHVzZXJJbmZvOiZ1c2VySW5mb107CiAgICAgICAgICAgICBpbWFnZUluZm8gPSB1
c2VySW5mbzsKICAgICAgICAgfQogCiAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0JFR0lOCiAgICAgICAgIGlmIChbdWlEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKF93ZWJWaWV3OndpbGxQcmV2aWV3SW1hZ2VXaXRoVVJMOildKQotICAgICAgICAgICAg
W3VpRGVsZWdhdGUgX3dlYlZpZXc6X3dlYlZpZXcgd2lsbFByZXZpZXdJbWFnZVdpdGhVUkw6X3Bv
c2l0aW9uSW5mb3JtYXRpb24uaW1hZ2VVUkxdOworICAgICAgICAgICAgW3VpRGVsZWdhdGUgX3dl
YlZpZXc6c2VsZi53ZWJWaWV3IHdpbGxQcmV2aWV3SW1hZ2VXaXRoVVJMOl9wb3NpdGlvbkluZm9y
bWF0aW9uLmltYWdlVVJMXTsKIAogICAgICAgICBSZXRhaW5QdHI8TlNBcnJheTxfV0tFbGVtZW50
QWN0aW9uICo+PiBkZWZhdWx0QWN0aW9uc0Zyb21Bc3Npc3RhbnQgPSBbX2FjdGlvblNoZWV0QXNz
aXN0YW50IGRlZmF1bHRBY3Rpb25zRm9ySW1hZ2VTaGVldDplbGVtZW50SW5mby5nZXQoKV07CiAK
ICAgICAgICAgaWYgKGltYWdlSW5mbyAmJiBbdWlEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6
QHNlbGVjdG9yKF93ZWJWaWV3OnByZXZpZXdWaWV3Q29udHJvbGxlckZvckltYWdlOmFsdGVybmF0
ZVVSTDpkZWZhdWx0QWN0aW9uczplbGVtZW50SW5mbzopXSkKLSAgICAgICAgICAgIHByZXZpZXdW
aWV3Q29udHJvbGxlciA9IFt1aURlbGVnYXRlIF93ZWJWaWV3Ol93ZWJWaWV3IHByZXZpZXdWaWV3
Q29udHJvbGxlckZvckltYWdlOnVpSW1hZ2UuZ2V0KCkgYWx0ZXJuYXRlVVJMOm5zVVJMIGRlZmF1
bHRBY3Rpb25zOmRlZmF1bHRBY3Rpb25zRnJvbUFzc2lzdGFudC5nZXQoKSBlbGVtZW50SW5mbzpl
bGVtZW50SW5mby5nZXQoKV07CisgICAgICAgICAgICBwcmV2aWV3Vmlld0NvbnRyb2xsZXIgPSBb
dWlEZWxlZ2F0ZSBfd2ViVmlldzpzZWxmLndlYlZpZXcgcHJldmlld1ZpZXdDb250cm9sbGVyRm9y
SW1hZ2U6dWlJbWFnZS5nZXQoKSBhbHRlcm5hdGVVUkw6bnNVUkwgZGVmYXVsdEFjdGlvbnM6ZGVm
YXVsdEFjdGlvbnNGcm9tQXNzaXN0YW50LmdldCgpIGVsZW1lbnRJbmZvOmVsZW1lbnRJbmZvLmdl
dCgpXTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcHJldmlld1ZpZXdDb250cm9sbGVyID0g
W1tXS0ltYWdlUHJldmlld1ZpZXdDb250cm9sbGVyIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6Y2dJ
bWFnZSBkZWZhdWx0QWN0aW9uczpkZWZhdWx0QWN0aW9uc0Zyb21Bc3Npc3RhbnQuZ2V0KCkgZWxl
bWVudEluZm86ZWxlbWVudEluZm8uZ2V0KCldOwogICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RF
Q0xBUkFUSU9OU19FTkQKQEAgLTgzNTEsNyArODM1MSw3IEBAIC0gKHZvaWQpX2NvbnRleHRNZW51
SW50ZXJhY3Rpb246KFVJQ29udGV4dE1lbnVJbnRlcmFjdGlvbiAqKWludGVyYWN0aW9uIGNvbmZp
Z3VyCiAgICAgaWYgKCFfd2ViVmlldykKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb24obmlsKTsK
IAotICAgIGlmICghX3dlYlZpZXcuY29uZmlndXJhdGlvbi5fbG9uZ1ByZXNzQWN0aW9uc0VuYWJs
ZWQpCisgICAgaWYgKCFzZWxmLndlYlZpZXcuY29uZmlndXJhdGlvbi5fbG9uZ1ByZXNzQWN0aW9u
c0VuYWJsZWQpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uKG5pbCk7CiAKICAgICBbX3dlYlZp
ZXcgX2RpZFNob3dDb250ZXh0TWVudV07CkBAIC04MzkwLDE0ICs4MzkwLDE0IEBAIC0gKHZvaWQp
Y29udGludWVDb250ZXh0TWVudUludGVyYWN0aW9uOih2b2lkKF4pKFVJQ29udGV4dE1lbnVDb25m
aWd1cmF0aW9uICopKWNvCiAgICAgaWYgKF9wb3NpdGlvbkluZm9ybWF0aW9uLmlzTGluayAmJiBs
aW5rVVJMLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGNvbnRpbnVlV2l0aENvbnRleHRNZW51
Q29uZmlndXJhdGlvbihuaWwpOwogCi0gICAgYXV0byB1aURlbGVnYXRlID0gc3RhdGljX2Nhc3Q8
aWQ8V0tVSURlbGVnYXRlUHJpdmF0ZT4+KF93ZWJWaWV3LlVJRGVsZWdhdGUpOworICAgIGF1dG8g
dWlEZWxlZ2F0ZSA9IHN0YXRpY19jYXN0PGlkPFdLVUlEZWxlZ2F0ZVByaXZhdGU+PihzZWxmLndl
YlZpZXcuVUlEZWxlZ2F0ZSk7CiAKICAgICBpZiAobmVlZHNEZXByZWNhdGVkUHJldmlld0FQSSh1
aURlbGVnYXRlKSkgewogICAgICAgICBpZiAoX3Bvc2l0aW9uSW5mb3JtYXRpb24uaXNMaW5rKSB7
CiAgICAgICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgICAg
ICAgICAgaWYgKFt1aURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViVmll
dzpzaG91bGRQcmV2aWV3RWxlbWVudDopXSkgewogICAgICAgICAgICAgICAgIGF1dG8gcHJldmll
d0VsZW1lbnRJbmZvID0gYWRvcHROUyhbW1dLUHJldmlld0VsZW1lbnRJbmZvIGFsbG9jXSBfaW5p
dFdpdGhMaW5rVVJMOmxpbmtVUkxdKTsKLSAgICAgICAgICAgICAgICBpZiAoIVt1aURlbGVnYXRl
IHdlYlZpZXc6X3dlYlZpZXcgc2hvdWxkUHJldmlld0VsZW1lbnQ6cHJldmlld0VsZW1lbnRJbmZv
LmdldCgpXSkKKyAgICAgICAgICAgICAgICBpZiAoIVt1aURlbGVnYXRlIHdlYlZpZXc6c2VsZi53
ZWJWaWV3IHNob3VsZFByZXZpZXdFbGVtZW50OnByZXZpZXdFbGVtZW50SW5mby5nZXQoKV0pCiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBjb250aW51ZVdpdGhDb250ZXh0TWVudUNvbmZpZ3Vy
YXRpb24obmlsKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0VORApAQCAtODUyMCwxNCArODUyMCwxNCBAQCAtICh2b2lkKWNvbnRpbnVl
Q29udGV4dE1lbnVJbnRlcmFjdGlvbjoodm9pZCheKShVSUNvbnRleHRNZW51Q29uZmlndXJhdGlv
biAqKSljbwogICAgIGlmIChfcG9zaXRpb25JbmZvcm1hdGlvbi5pc0ltYWdlICYmIF9wb3NpdGlv
bkluZm9ybWF0aW9uLnVybC5pc051bGwoKSAmJiBbdWlEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmFsdGVybmF0ZVVSTEZyb21JbWFnZTp1c2VySW5mbzopXSkg
ewogICAgICAgICBVSUltYWdlICp1aUltYWdlID0gW1tfY29udGV4dE1lbnVFbGVtZW50SW5mbyBf
YWN0aXZhdGVkRWxlbWVudEluZm9dIGltYWdlXTsKICAgICAgICAgTlNEaWN0aW9uYXJ5ICp1c2Vy
SW5mbyA9IG5pbDsKLSAgICAgICAgTlNVUkwgKm5zVVJMID0gW3VpRGVsZWdhdGUgX3dlYlZpZXc6
X3dlYlZpZXcgYWx0ZXJuYXRlVVJMRnJvbUltYWdlOnVpSW1hZ2UgdXNlckluZm86JnVzZXJJbmZv
XTsKKyAgICAgICAgTlNVUkwgKm5zVVJMID0gW3VpRGVsZWdhdGUgX3dlYlZpZXc6c2VsZi53ZWJW
aWV3IGFsdGVybmF0ZVVSTEZyb21JbWFnZTp1aUltYWdlIHVzZXJJbmZvOiZ1c2VySW5mb107CiAg
ICAgICAgIF9wb3NpdGlvbkluZm9ybWF0aW9uLnVybCA9IG5zVVJMOwogICAgICAgICBfY29udGV4
dE1lbnVFbGVtZW50SW5mbyA9IHdyYXBwZXIoQVBJOjpDb250ZXh0TWVudUVsZW1lbnRJbmZvOjpj
cmVhdGUoX3Bvc2l0aW9uSW5mb3JtYXRpb24sIHVzZXJJbmZvKSk7CiAgICAgfQogCiAgICAgaWYg
KF9wb3NpdGlvbkluZm9ybWF0aW9uLmlzTGluayAmJiBbdWlEZWxlZ2F0ZSByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKHdlYlZpZXc6Y29udGV4dE1lbnVDb25maWd1cmF0aW9uRm9yRWxlbWVu
dDpjb21wbGV0aW9uSGFuZGxlcjopXSkgewogICAgICAgICBhdXRvIGNoZWNrZXIgPSBXZWJLaXQ6
OkNvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZSh1aURlbGVnYXRlLCBAc2VsZWN0
b3Iod2ViVmlldzpjb250ZXh0TWVudUNvbmZpZ3VyYXRpb25Gb3JFbGVtZW50OmNvbXBsZXRpb25I
YW5kbGVyOikpOwotICAgICAgICBbdWlEZWxlZ2F0ZSB3ZWJWaWV3Ol93ZWJWaWV3IGNvbnRleHRN
ZW51Q29uZmlndXJhdGlvbkZvckVsZW1lbnQ6X2NvbnRleHRNZW51RWxlbWVudEluZm8uZ2V0KCkg
Y29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uQmxvY2sgPSBXVEZNb3Zl
KGNvbXBsZXRpb25CbG9jayksIGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXSAoVUlDb250ZXh0
TWVudUNvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24pIHsKKyAgICAgICAgW3VpRGVsZWdhdGUg
d2ViVmlldzpzZWxmLndlYlZpZXcgY29udGV4dE1lbnVDb25maWd1cmF0aW9uRm9yRWxlbWVudDpf
Y29udGV4dE1lbnVFbGVtZW50SW5mby5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQ
dHIoW2NvbXBsZXRpb25CbG9jayA9IFdURk1vdmUoY29tcGxldGlvbkJsb2NrKSwgY2hlY2tlciA9
IFdURk1vdmUoY2hlY2tlcildIChVSUNvbnRleHRNZW51Q29uZmlndXJhdGlvbiAqY29uZmlndXJh
dGlvbikgewogICAgICAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5kbGVySGFzQmVl
bkNhbGxlZCgpKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGNoZWNrZXIt
PmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOwpAQCAtODUzNSw3ICs4NTM1LDcgQEAgLSAodm9p
ZCljb250aW51ZUNvbnRleHRNZW51SW50ZXJhY3Rpb246KHZvaWQoXikoVUlDb250ZXh0TWVudUNv
bmZpZ3VyYXRpb24gKikpY28KICAgICAgICAgfSkuZ2V0KCldOwogICAgIH0gZWxzZSBpZiAoW3Vp
RGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpjb250ZXh0TWVu
dUNvbmZpZ3VyYXRpb25Gb3JFbGVtZW50OmNvbXBsZXRpb25IYW5kbGVyOildKSB7CiAgICAgICAg
IGF1dG8gY2hlY2tlciA9IFdlYktpdDo6Q29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3Jl
YXRlKHVpRGVsZWdhdGUsIEBzZWxlY3Rvcihfd2ViVmlldzpjb250ZXh0TWVudUNvbmZpZ3VyYXRp
b25Gb3JFbGVtZW50OmNvbXBsZXRpb25IYW5kbGVyOikpOwotICAgICAgICBbdWlEZWxlZ2F0ZSBf
d2ViVmlldzpfd2ViVmlldyBjb250ZXh0TWVudUNvbmZpZ3VyYXRpb25Gb3JFbGVtZW50Ol9jb250
ZXh0TWVudUVsZW1lbnRJbmZvLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihb
Y29tcGxldGlvbkJsb2NrID0gV1RGTW92ZShjb21wbGV0aW9uQmxvY2spLCBjaGVja2VyID0gV1RG
TW92ZShjaGVja2VyKV0gKFVJQ29udGV4dE1lbnVDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9u
KSB7CisgICAgICAgIFt1aURlbGVnYXRlIF93ZWJWaWV3OnNlbGYud2ViVmlldyBjb250ZXh0TWVu
dUNvbmZpZ3VyYXRpb25Gb3JFbGVtZW50Ol9jb250ZXh0TWVudUVsZW1lbnRJbmZvLmdldCgpIGNv
bXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY29tcGxldGlvbkJsb2NrID0gV1RGTW92ZShj
b21wbGV0aW9uQmxvY2spLCBjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKV0gKFVJQ29udGV4dE1l
bnVDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uKSB7CiAgICAgICAgICAgICBpZiAoY2hlY2tl
ci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCiAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7CkBA
IC04NjY0LDcgKzg2NjQsNyBAQCAtIChVSVRhcmdldGVkUHJldmlldyAqKV9jcmVhdGVUYXJnZXRl
ZFByZXZpZXdJZlBvc3NpYmxlCiAgICAgICAgIHRhcmdldGVkUHJldmlldyA9IGNyZWF0ZUZhbGxi
YWNrVGFyZ2V0ZWRQcmV2aWV3KHNlbGYsIHNlbGYuY29udGFpbmVyVmlld0ZvclRhcmdldGVkUHJl
dmlld3MsIF9wb3NpdGlvbkluZm9ybWF0aW9uLmJvdW5kcyk7CiAKICAgICBpZiAoX3Bvc2l0aW9u
SW5mb3JtYXRpb24uY29udGFpbmVyU2Nyb2xsaW5nTm9kZUlEKSB7Ci0gICAgICAgIFVJU2Nyb2xs
VmlldyAqcG9zaXRpb25UcmFja2luZ1ZpZXcgPSBfd2ViVmlldy5zY3JvbGxWaWV3OworICAgICAg
ICBVSVNjcm9sbFZpZXcgKnBvc2l0aW9uVHJhY2tpbmdWaWV3ID0gc2VsZi53ZWJWaWV3LnNjcm9s
bFZpZXc7CiAgICAgICAgIGlmIChhdXRvKiBzY3JvbGxpbmdDb29yZGluYXRvciA9IF9wYWdlLT5z
Y3JvbGxpbmdDb29yZGluYXRvclByb3h5KCkpCiAgICAgICAgICAgICBwb3NpdGlvblRyYWNraW5n
VmlldyA9IHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zY3JvbGxWaWV3Rm9yU2Nyb2xsaW5nTm9kZUlE
KF9wb3NpdGlvbkluZm9ybWF0aW9uLmNvbnRhaW5lclNjcm9sbGluZ05vZGVJRCk7CiAKQEAgLTg2
ODYsMTQgKzg2ODYsMTQgQEAgLSAodm9pZCljb250ZXh0TWVudUludGVyYWN0aW9uOihVSUNvbnRl
eHRNZW51SW50ZXJhY3Rpb24gKilpbnRlcmFjdGlvbiB3aWxsRGlzcGwKIHsKICAgICBpZiAoIV93
ZWJWaWV3KQogICAgICAgICByZXR1cm47Ci0gICAgYXV0byB1aURlbGVnYXRlID0gc3RhdGljX2Nh
c3Q8aWQ8V0tVSURlbGVnYXRlUHJpdmF0ZT4+KF93ZWJWaWV3LlVJRGVsZWdhdGUpOworICAgIGF1
dG8gdWlEZWxlZ2F0ZSA9IHN0YXRpY19jYXN0PGlkPFdLVUlEZWxlZ2F0ZVByaXZhdGU+PihzZWxm
LndlYlZpZXcuVUlEZWxlZ2F0ZSk7CiAgICAgaWYgKCF1aURlbGVnYXRlKQogICAgICAgICByZXR1
cm47CiAgICAgaWYgKFt1aURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2Vi
Vmlldzpjb250ZXh0TWVudVdpbGxQcmVzZW50Rm9yRWxlbWVudDopXSkKLSAgICAgICAgW3VpRGVs
ZWdhdGUgd2ViVmlldzpfd2ViVmlldyBjb250ZXh0TWVudVdpbGxQcmVzZW50Rm9yRWxlbWVudDpf
Y29udGV4dE1lbnVFbGVtZW50SW5mby5nZXQoKV07CisgICAgICAgIFt1aURlbGVnYXRlIHdlYlZp
ZXc6c2VsZi53ZWJWaWV3IGNvbnRleHRNZW51V2lsbFByZXNlbnRGb3JFbGVtZW50Ol9jb250ZXh0
TWVudUVsZW1lbnRJbmZvLmdldCgpXTsKICAgICBlbHNlIGlmIChbdWlEZWxlZ2F0ZSByZXNwb25k
c1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmNvbnRleHRNZW51V2lsbFByZXNlbnRGb3JF
bGVtZW50OildKSB7CiAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lO
Ci0gICAgICAgIFt1aURlbGVnYXRlIF93ZWJWaWV3Ol93ZWJWaWV3IGNvbnRleHRNZW51V2lsbFBy
ZXNlbnRGb3JFbGVtZW50Ol9jb250ZXh0TWVudUVsZW1lbnRJbmZvLmdldCgpXTsKKyAgICAgICAg
W3VpRGVsZWdhdGUgX3dlYlZpZXc6c2VsZi53ZWJWaWV3IGNvbnRleHRNZW51V2lsbFByZXNlbnRG
b3JFbGVtZW50Ol9jb250ZXh0TWVudUVsZW1lbnRJbmZvLmdldCgpXTsKICAgICAgICAgQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgfQogfQpAQCAtODcyNyw3ICs4NzI3LDcg
QEAgLSAodm9pZCljb250ZXh0TWVudUludGVyYWN0aW9uOihVSUNvbnRleHRNZW51SW50ZXJhY3Rp
b24gKilpbnRlcmFjdGlvbiB3aWxsUGVyZm8KIAogICAgIFtzZWxmIF9zdG9wU3VwcHJlc3NpbmdT
ZWxlY3Rpb25Bc3Npc3RhbnRGb3JSZWFzb246V2ViS2l0OjpJbnRlcmFjdGlvbklzSGFwcGVuaW5n
XTsKIAotICAgIGF1dG8gdWlEZWxlZ2F0ZSA9IHN0YXRpY19jYXN0PGlkPFdLVUlEZWxlZ2F0ZVBy
aXZhdGU+Pihfd2ViVmlldy5VSURlbGVnYXRlKTsKKyAgICBhdXRvIHVpRGVsZWdhdGUgPSBzdGF0
aWNfY2FzdDxpZDxXS1VJRGVsZWdhdGVQcml2YXRlPj4oc2VsZi53ZWJWaWV3LlVJRGVsZWdhdGUp
OwogICAgIGlmICghdWlEZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuOwogCkBAIC04NzM5LDcgKzg3
MzksNyBAQCAtICh2b2lkKWNvbnRleHRNZW51SW50ZXJhY3Rpb246KFVJQ29udGV4dE1lbnVJbnRl
cmFjdGlvbiAqKWludGVyYWN0aW9uIHdpbGxQZXJmbwogICAgICAgICAgICAgICAgIGlmIChpbWFn
ZVVSTC5pc0VtcHR5KCkgfHwgIShpbWFnZVVSTC5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgfHwg
aW1hZ2VVUkwucHJvdG9jb2xJcygiZGF0YSIpKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCi0g
ICAgICAgICAgICAgICAgW3VpRGVsZWdhdGUgX3dlYlZpZXc6X3dlYlZpZXcgY29tbWl0UHJldmll
d2VkSW1hZ2VXaXRoVVJMOihOU1VSTCAqKWltYWdlVVJMXTsKKyAgICAgICAgICAgICAgICBbdWlE
ZWxlZ2F0ZSBfd2ViVmlldzpzZWxmLndlYlZpZXcgY29tbWl0UHJldmlld2VkSW1hZ2VXaXRoVVJM
OihOU1VSTCAqKWltYWdlVVJMXTsKICAgICAgICAgICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RF
Q0xBUkFUSU9OU19FTkQKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybjsKQEAgLTg3
NDgsNyArODc0OCw3IEBAIC0gKHZvaWQpY29udGV4dE1lbnVJbnRlcmFjdGlvbjooVUlDb250ZXh0
TWVudUludGVyYWN0aW9uICopaW50ZXJhY3Rpb24gd2lsbFBlcmZvCiAgICAgICAgIGlmIChbdWlE
ZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHdlYlZpZXc6Y29tbWl0UHJldmll
d2luZ1ZpZXdDb250cm9sbGVyOildKSB7CiAgICAgICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RF
Q0xBUkFUSU9OU19CRUdJTgogICAgICAgICAgICAgaWYgKGF1dG8gdmlld0NvbnRyb2xsZXIgPSBf
Y29udGV4dE1lbnVMZWdhY3lQcmV2aWV3Q29udHJvbGxlci5nZXQoKSkKLSAgICAgICAgICAgICAg
ICBbdWlEZWxlZ2F0ZSB3ZWJWaWV3Ol93ZWJWaWV3IGNvbW1pdFByZXZpZXdpbmdWaWV3Q29udHJv
bGxlcjp2aWV3Q29udHJvbGxlcl07CisgICAgICAgICAgICAgICAgW3VpRGVsZWdhdGUgd2ViVmll
dzpzZWxmLndlYlZpZXcgY29tbWl0UHJldmlld2luZ1ZpZXdDb250cm9sbGVyOnZpZXdDb250cm9s
bGVyXTsKICAgICAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC04NzU2LDcgKzg3NTYsNyBAQCAtICh2b2lk
KWNvbnRleHRNZW51SW50ZXJhY3Rpb246KFVJQ29udGV4dE1lbnVJbnRlcmFjdGlvbiAqKWludGVy
YWN0aW9uIHdpbGxQZXJmbwogICAgICAgICBpZiAoW3VpRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3Rvcihfd2ViVmlldzpjb21taXRQcmV2aWV3ZWRWaWV3Q29udHJvbGxlcjopXSkg
ewogICAgICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICAg
ICAgICAgIGlmIChhdXRvIHZpZXdDb250cm9sbGVyID0gX2NvbnRleHRNZW51TGVnYWN5UHJldmll
d0NvbnRyb2xsZXIuZ2V0KCkpCi0gICAgICAgICAgICAgICAgW3VpRGVsZWdhdGUgX3dlYlZpZXc6
X3dlYlZpZXcgY29tbWl0UHJldmlld2VkVmlld0NvbnRyb2xsZXI6dmlld0NvbnRyb2xsZXJdOwor
ICAgICAgICAgICAgICAgIFt1aURlbGVnYXRlIF93ZWJWaWV3OnNlbGYud2ViVmlldyBjb21taXRQ
cmV2aWV3ZWRWaWV3Q29udHJvbGxlcjp2aWV3Q29udHJvbGxlcl07CiAgICAgICAgICAgICBBTExP
V19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQpAQCAtODc2NSwxMCArODc2NSwxMCBAQCAtICh2b2lkKWNvbnRleHRNZW51SW50ZXJhY3Rp
b246KFVJQ29udGV4dE1lbnVJbnRlcmFjdGlvbiAqKWludGVyYWN0aW9uIHdpbGxQZXJmbwogICAg
IH0KIAogICAgIGlmIChbdWlEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHdl
YlZpZXc6Y29udGV4dE1lbnVGb3JFbGVtZW50OndpbGxDb21taXRXaXRoQW5pbWF0b3I6KV0pCi0g
ICAgICAgIFt1aURlbGVnYXRlIHdlYlZpZXc6X3dlYlZpZXcgY29udGV4dE1lbnVGb3JFbGVtZW50
Ol9jb250ZXh0TWVudUVsZW1lbnRJbmZvLmdldCgpIHdpbGxDb21taXRXaXRoQW5pbWF0b3I6YW5p
bWF0b3JdOworICAgICAgICBbdWlEZWxlZ2F0ZSB3ZWJWaWV3OnNlbGYud2ViVmlldyBjb250ZXh0
TWVudUZvckVsZW1lbnQ6X2NvbnRleHRNZW51RWxlbWVudEluZm8uZ2V0KCkgd2lsbENvbW1pdFdp
dGhBbmltYXRvcjphbmltYXRvcl07CiAgICAgZWxzZSBpZiAoW3VpRGVsZWdhdGUgcmVzcG9uZHNU
b1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpjb250ZXh0TWVudUZvckVsZW1lbnQ6d2lsbENv
bW1pdFdpdGhBbmltYXRvcjopXSkgewogICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19CRUdJTgotICAgICAgICBbdWlEZWxlZ2F0ZSBfd2ViVmlldzpfd2ViVmlldyBjb250ZXh0
TWVudUZvckVsZW1lbnQ6X2NvbnRleHRNZW51RWxlbWVudEluZm8uZ2V0KCkgd2lsbENvbW1pdFdp
dGhBbmltYXRvcjphbmltYXRvcl07CisgICAgICAgIFt1aURlbGVnYXRlIF93ZWJWaWV3OnNlbGYu
d2ViVmlldyBjb250ZXh0TWVudUZvckVsZW1lbnQ6X2NvbnRleHRNZW51RWxlbWVudEluZm8uZ2V0
KCkgd2lsbENvbW1pdFdpdGhBbmltYXRvcjphbmltYXRvcl07CiAgICAgICAgIEFMTE9XX0RFUFJF
Q0FURURfREVDTEFSQVRJT05TX0VORAogICAgIH0KIApAQCAtODgyMiwxMiArODgyMiwxMiBAQCAt
ICh2b2lkKWNvbnRleHRNZW51SW50ZXJhY3Rpb246KFVJQ29udGV4dE1lbnVJbnRlcmFjdGlvbiAq
KWludGVyYWN0aW9uIHdpbGxFbmRGbwogICAgIC8vIEZJWE1FOiBUaGlzIGRlbGVnYXRlIGlzIGJl
aW5nIGNhbGxlZCBtb3JlIHRoYW4gb25jZSBieSBVSUtpdC4gPHJkYXI6Ly9wcm9ibGVtLzUxNTUw
MjkxPgogICAgIC8vIFRoaXMgY29uZGl0aW9uYWwgYXZvaWRzIHRoZSBXS1VJRGVsZWdhdGUgYmVp
bmcgY2FsbGVkIHR3aWNlIHRvby4KICAgICBpZiAoX2NvbnRleHRNZW51RWxlbWVudEluZm8pIHsK
LSAgICAgICAgYXV0byB1aURlbGVnYXRlID0gc3RhdGljX2Nhc3Q8aWQ8V0tVSURlbGVnYXRlUHJp
dmF0ZT4+KF93ZWJWaWV3LlVJRGVsZWdhdGUpOworICAgICAgICBhdXRvIHVpRGVsZWdhdGUgPSBz
dGF0aWNfY2FzdDxpZDxXS1VJRGVsZWdhdGVQcml2YXRlPj4oc2VsZi53ZWJWaWV3LlVJRGVsZWdh
dGUpOwogICAgICAgICBpZiAoW3VpRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rv
cih3ZWJWaWV3OmNvbnRleHRNZW51RGlkRW5kRm9yRWxlbWVudDopXSkKLSAgICAgICAgICAgIFt1
aURlbGVnYXRlIHdlYlZpZXc6X3dlYlZpZXcgY29udGV4dE1lbnVEaWRFbmRGb3JFbGVtZW50Ol9j
b250ZXh0TWVudUVsZW1lbnRJbmZvLmdldCgpXTsKKyAgICAgICAgICAgIFt1aURlbGVnYXRlIHdl
YlZpZXc6c2VsZi53ZWJWaWV3IGNvbnRleHRNZW51RGlkRW5kRm9yRWxlbWVudDpfY29udGV4dE1l
bnVFbGVtZW50SW5mby5nZXQoKV07CiAgICAgICAgIGVsc2UgaWYgKFt1aURlbGVnYXRlIHJlc3Bv
bmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6Y29udGV4dE1lbnVEaWRFbmRGb3JFbGVt
ZW50OildKSB7CiAgICAgICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJ
TgotICAgICAgICAgICAgW3VpRGVsZWdhdGUgX3dlYlZpZXc6X3dlYlZpZXcgY29udGV4dE1lbnVE
aWRFbmRGb3JFbGVtZW50Ol9jb250ZXh0TWVudUVsZW1lbnRJbmZvLmdldCgpXTsKKyAgICAgICAg
ICAgIFt1aURlbGVnYXRlIF93ZWJWaWV3OnNlbGYud2ViVmlldyBjb250ZXh0TWVudURpZEVuZEZv
ckVsZW1lbnQ6X2NvbnRleHRNZW51RWxlbWVudEluZm8uZ2V0KCldOwogICAgICAgICAgICAgQUxM
T1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgIH0KICAgICB9CkBAIC04ODY3
LDcgKzg4NjcsNyBAQCAtIChCT09MKV9pbnRlcmFjdGlvblNob3VsZEJlZ2luRnJvbVByZXZpZXdJ
dGVtQ29udHJvbGxlcjooVUlQcmV2aWV3SXRlbUNvbnRyb2xsZQogICAgICAgICBBTExPV19ERVBS
RUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgICAgICBpZiAoW3VpRGVsZWdhdGUgcmVzcG9u
ZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3ZWJWaWV3OnNob3VsZFByZXZpZXdFbGVtZW50OildKSB7
CiAgICAgICAgICAgICBhdXRvIHByZXZpZXdFbGVtZW50SW5mbyA9IGFkb3B0TlMoW1tXS1ByZXZp
ZXdFbGVtZW50SW5mbyBhbGxvY10gX2luaXRXaXRoTGlua1VSTDooTlNVUkwgKilsaW5rVVJMXSk7
Ci0gICAgICAgICAgICByZXR1cm4gW3VpRGVsZWdhdGUgd2ViVmlldzpfd2ViVmlldyBzaG91bGRQ
cmV2aWV3RWxlbWVudDpwcmV2aWV3RWxlbWVudEluZm8uZ2V0KCldOworICAgICAgICAgICAgcmV0
dXJuIFt1aURlbGVnYXRlIHdlYlZpZXc6c2VsZi53ZWJWaWV3IHNob3VsZFByZXZpZXdFbGVtZW50
OnByZXZpZXdFbGVtZW50SW5mby5nZXQoKV07CiAgICAgICAgIH0KICAgICAgICAgQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgIGlmIChsaW5rVVJMLmlzRW1wdHkoKSkK
QEAgLTg5MjgsNyArODkyOCw3IEBAIC0gKE5TRGljdGlvbmFyeSAqKV9kYXRhRm9yUHJldmlld0l0
ZW1Db250cm9sbGVyOihVSVByZXZpZXdJdGVtQ29udHJvbGxlciAqKWNvbnRyCiAgICAgICAgIGlm
IChpc0RhdGFEZXRlY3RvckxpbmspIHsKICAgICAgICAgICAgIE5TRGljdGlvbmFyeSAqY29udGV4
dCA9IG5pbDsKICAgICAgICAgICAgIGlmIChbdWlEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6
QHNlbGVjdG9yKF9kYXRhRGV0ZWN0aW9uQ29udGV4dEZvcldlYlZpZXc6KV0pCi0gICAgICAgICAg
ICAgICAgY29udGV4dCA9IFt1aURlbGVnYXRlIF9kYXRhRGV0ZWN0aW9uQ29udGV4dEZvcldlYlZp
ZXc6X3dlYlZpZXddOworICAgICAgICAgICAgICAgIGNvbnRleHQgPSBbdWlEZWxlZ2F0ZSBfZGF0
YURldGVjdGlvbkNvbnRleHRGb3JXZWJWaWV3OnNlbGYud2ViVmlld107CiAKICAgICAgICAgICAg
IERERGV0ZWN0aW9uQ29udHJvbGxlciAqY29udHJvbGxlciA9IFtnZXRERERldGVjdGlvbkNvbnRy
b2xsZXJDbGFzcygpIHNoYXJlZENvbnRyb2xsZXJdOwogICAgICAgICAgICAgTlNEaWN0aW9uYXJ5
ICpuZXdDb250ZXh0ID0gbmlsOwpAQCAtODk1NiwxMyArODk1NiwxMyBAQCAtIChOU0RpY3Rpb25h
cnkgKilfZGF0YUZvclByZXZpZXdJdGVtQ29udHJvbGxlcjooVUlQcmV2aWV3SXRlbUNvbnRyb2xs
ZXIgKiljb250cgogICAgIH0gZWxzZSBpZiAoY2FuU2hvd0F0dGFjaG1lbnRQcmV2aWV3KSB7CiAg
ICAgICAgICp0eXBlID0gVUlQcmV2aWV3SXRlbVR5cGVBdHRhY2htZW50OwogICAgICAgICBhdXRv
IGVsZW1lbnQgPSBhZG9wdE5TKFtbX1dLQWN0aXZhdGVkRWxlbWVudEluZm8gYWxsb2NdIF9pbml0
V2l0aFR5cGU6X1dLQWN0aXZhdGVkRWxlbWVudFR5cGVBdHRhY2htZW50IFVSTDooTlNVUkwgKils
aW5rVVJMIGltYWdlVVJMOihOU1VSTCAqKV9wb3NpdGlvbkluZm9ybWF0aW9uLmltYWdlVVJMIGxv
Y2F0aW9uOl9wb3NpdGlvbkluZm9ybWF0aW9uLnJlcXVlc3QucG9pbnQgdGl0bGU6X3Bvc2l0aW9u
SW5mb3JtYXRpb24udGl0bGUgSUQ6X3Bvc2l0aW9uSW5mb3JtYXRpb24uaWRBdHRyaWJ1dGUgcmVj
dDpfcG9zaXRpb25JbmZvcm1hdGlvbi5ib3VuZHMgaW1hZ2U6bmlsXSk7Ci0gICAgICAgIE5TVUlu
dGVnZXIgaW5kZXggPSBbdWlEZWxlZ2F0ZSBfd2ViVmlldzpfd2ViVmlldyBpbmRleEludG9BdHRh
Y2htZW50TGlzdEZvckVsZW1lbnQ6ZWxlbWVudC5nZXQoKV07CisgICAgICAgIE5TVUludGVnZXIg
aW5kZXggPSBbdWlEZWxlZ2F0ZSBfd2ViVmlldzpzZWxmLndlYlZpZXcgaW5kZXhJbnRvQXR0YWNo
bWVudExpc3RGb3JFbGVtZW50OmVsZW1lbnQuZ2V0KCldOwogICAgICAgICBpZiAoaW5kZXggIT0g
TlNOb3RGb3VuZCkgewogICAgICAgICAgICAgQk9PTCBzb3VyY2VJc01hbmFnZWQgPSBOTzsKICAg
ICAgICAgICAgIGlmIChyZXNwb25kc1RvQXR0YWNobWVudExpc3RGb3JXZWJWaWV3U291cmNlSXNN
YW5hZ2VkKQotICAgICAgICAgICAgICAgIGRhdGFGb3JQcmV2aWV3W1VJUHJldmlld0RhdGFBdHRh
Y2htZW50TGlzdF0gPSBbdWlEZWxlZ2F0ZSBfYXR0YWNobWVudExpc3RGb3JXZWJWaWV3Ol93ZWJW
aWV3IHNvdXJjZUlzTWFuYWdlZDomc291cmNlSXNNYW5hZ2VkXTsKKyAgICAgICAgICAgICAgICBk
YXRhRm9yUHJldmlld1tVSVByZXZpZXdEYXRhQXR0YWNobWVudExpc3RdID0gW3VpRGVsZWdhdGUg
X2F0dGFjaG1lbnRMaXN0Rm9yV2ViVmlldzpzZWxmLndlYlZpZXcgc291cmNlSXNNYW5hZ2VkOiZz
b3VyY2VJc01hbmFnZWRdOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGRhdGFG
b3JQcmV2aWV3W1VJUHJldmlld0RhdGFBdHRhY2htZW50TGlzdF0gPSBbdWlEZWxlZ2F0ZSBfYXR0
YWNobWVudExpc3RGb3JXZWJWaWV3Ol93ZWJWaWV3XTsKKyAgICAgICAgICAgICAgICBkYXRhRm9y
UHJldmlld1tVSVByZXZpZXdEYXRhQXR0YWNobWVudExpc3RdID0gW3VpRGVsZWdhdGUgX2F0dGFj
aG1lbnRMaXN0Rm9yV2ViVmlldzpzZWxmLndlYlZpZXddOwogICAgICAgICAgICAgZGF0YUZvclBy
ZXZpZXdbVUlQcmV2aWV3RGF0YUF0dGFjaG1lbnRJbmRleF0gPSBbTlNOdW1iZXIgbnVtYmVyV2l0
aFVuc2lnbmVkSW50ZWdlcjppbmRleF07CiAgICAgICAgICAgICBkYXRhRm9yUHJldmlld1tVSVBy
ZXZpZXdEYXRhQXR0YWNobWVudExpc3RJc0NvbnRlbnRNYW5hZ2VkXSA9IFtOU051bWJlciBudW1i
ZXJXaXRoQm9vbDpzb3VyY2VJc01hbmFnZWRdOwogICAgICAgICB9CkBAIC04OTk3LDcgKzg5OTcs
NyBAQCAtIChVSVZpZXdDb250cm9sbGVyICopX3ByZXNlbnRlZFZpZXdDb250cm9sbGVyRm9yUHJl
dmlld0l0ZW1Db250cm9sbGVyOihVSVByZXZpZQogICAgICAgICAgICAgaWYgKFt1aURlbGVnYXRl
IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6cHJldmlld1ZpZXdDb250cm9s
bGVyRm9yQW5pbWF0ZWRJbWFnZUF0VVJMOmRlZmF1bHRBY3Rpb25zOmVsZW1lbnRJbmZvOmltYWdl
U2l6ZTopXSkgewogICAgICAgICAgICAgICAgIFJldGFpblB0cjxOU0FycmF5PiBhY3Rpb25zID0g
W19hY3Rpb25TaGVldEFzc2lzdGFudCBkZWZhdWx0QWN0aW9uc0ZvckltYWdlU2hlZXQ6YW5pbWF0
ZWRJbWFnZUVsZW1lbnRJbmZvLmdldCgpXTsKICAgICAgICAgICAgICAgICBBTExPV19ERVBSRUNB
VEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAgICAgICAgICAgICAgIHJldHVybiBbdWlEZWxlZ2F0
ZSBfd2ViVmlldzpfd2ViVmlldyBwcmV2aWV3Vmlld0NvbnRyb2xsZXJGb3JBbmltYXRlZEltYWdl
QXRVUkw6dGFyZ2V0VVJMIGRlZmF1bHRBY3Rpb25zOmFjdGlvbnMuZ2V0KCkgZWxlbWVudEluZm86
YW5pbWF0ZWRJbWFnZUVsZW1lbnRJbmZvLmdldCgpIGltYWdlU2l6ZTpfcG9zaXRpb25JbmZvcm1h
dGlvbi5pbWFnZS0+c2l6ZSgpXTsKKyAgICAgICAgICAgICAgICByZXR1cm4gW3VpRGVsZWdhdGUg
X3dlYlZpZXc6c2VsZi53ZWJWaWV3IHByZXZpZXdWaWV3Q29udHJvbGxlckZvckFuaW1hdGVkSW1h
Z2VBdFVSTDp0YXJnZXRVUkwgZGVmYXVsdEFjdGlvbnM6YWN0aW9ucy5nZXQoKSBlbGVtZW50SW5m
bzphbmltYXRlZEltYWdlRWxlbWVudEluZm8uZ2V0KCkgaW1hZ2VTaXplOl9wb3NpdGlvbkluZm9y
bWF0aW9uLmltYWdlLT5zaXplKCldOwogICAgICAgICAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0VORAogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC05MDE3LDE3ICs5
MDE3LDE3IEBAIC0gKFVJVmlld0NvbnRyb2xsZXIgKilfcHJlc2VudGVkVmlld0NvbnRyb2xsZXJG
b3JQcmV2aWV3SXRlbUNvbnRyb2xsZXI6KFVJUHJldmllCiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgICAgICAgICAgYXV0
byBwcmV2aWV3RWxlbWVudEluZm8gPSBhZG9wdE5TKFtbV0tQcmV2aWV3RWxlbWVudEluZm8gYWxs
b2NdIF9pbml0V2l0aExpbmtVUkw6dGFyZ2V0VVJMXSk7Ci0gICAgICAgICAgICBpZiAoVUlWaWV3
Q29udHJvbGxlciAqY29udHJvbGxlciA9IFt1aURlbGVnYXRlIHdlYlZpZXc6X3dlYlZpZXcgcHJl
dmlld2luZ1ZpZXdDb250cm9sbGVyRm9yRWxlbWVudDpwcmV2aWV3RWxlbWVudEluZm8uZ2V0KCkg
ZGVmYXVsdEFjdGlvbnM6cHJldmlld0FjdGlvbnMuZ2V0KCldKQorICAgICAgICAgICAgaWYgKFVJ
Vmlld0NvbnRyb2xsZXIgKmNvbnRyb2xsZXIgPSBbdWlEZWxlZ2F0ZSB3ZWJWaWV3OnNlbGYud2Vi
VmlldyBwcmV2aWV3aW5nVmlld0NvbnRyb2xsZXJGb3JFbGVtZW50OnByZXZpZXdFbGVtZW50SW5m
by5nZXQoKSBkZWZhdWx0QWN0aW9uczpwcmV2aWV3QWN0aW9ucy5nZXQoKV0pCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGNvbnRyb2xsZXI7CiAgICAgICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RF
Q0xBUkFUSU9OU19FTkQKICAgICAgICAgfQogCiAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0JFR0lOCiAgICAgICAgIGlmIChbdWlEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnByZXZpZXdWaWV3Q29udHJvbGxlckZvclVSTDpkZWZhdWx0
QWN0aW9uczplbGVtZW50SW5mbzopXSkKLSAgICAgICAgICAgIHJldHVybiBbdWlEZWxlZ2F0ZSBf
d2ViVmlldzpfd2ViVmlldyBwcmV2aWV3Vmlld0NvbnRyb2xsZXJGb3JVUkw6dGFyZ2V0VVJMIGRl
ZmF1bHRBY3Rpb25zOmFjdGlvbnMuZ2V0KCkgZWxlbWVudEluZm86ZWxlbWVudEluZm8uZ2V0KCld
OworICAgICAgICAgICAgcmV0dXJuIFt1aURlbGVnYXRlIF93ZWJWaWV3OnNlbGYud2ViVmlldyBw
cmV2aWV3Vmlld0NvbnRyb2xsZXJGb3JVUkw6dGFyZ2V0VVJMIGRlZmF1bHRBY3Rpb25zOmFjdGlv
bnMuZ2V0KCkgZWxlbWVudEluZm86ZWxlbWVudEluZm8uZ2V0KCldOwogCiAgICAgICAgIGlmIChb
dWlEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnByZXZpZXdW
aWV3Q29udHJvbGxlckZvclVSTDopXSkKLSAgICAgICAgICAgIHJldHVybiBbdWlEZWxlZ2F0ZSBf
d2ViVmlldzpfd2ViVmlldyBwcmV2aWV3Vmlld0NvbnRyb2xsZXJGb3JVUkw6dGFyZ2V0VVJMXTsK
KyAgICAgICAgICAgIHJldHVybiBbdWlEZWxlZ2F0ZSBfd2ViVmlldzpzZWxmLndlYlZpZXcgcHJl
dmlld1ZpZXdDb250cm9sbGVyRm9yVVJMOnRhcmdldFVSTF07CiAgICAgICAgIEFMTE9XX0RFUFJF
Q0FURURfREVDTEFSQVRJT05TX0VORAogCiAgICAgICAgIHJldHVybiBuaWw7CkBAIC05MDQzLDcg
KzkwNDMsNyBAQCAtIChVSVZpZXdDb250cm9sbGVyICopX3ByZXNlbnRlZFZpZXdDb250cm9sbGVy
Rm9yUHJldmlld0l0ZW1Db250cm9sbGVyOihVSVByZXZpZQogICAgICAgICBSZXRhaW5QdHI8VUlJ
bWFnZT4gdWlJbWFnZSA9IGFkb3B0TlMoW1tVSUltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6
Y2dJbWFnZS5nZXQoKV0pOwogICAgICAgICBpZiAoW3VpRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3Rvcihfd2ViVmlldzphbHRlcm5hdGVVUkxGcm9tSW1hZ2U6dXNlckluZm86KV0p
IHsKICAgICAgICAgICAgIE5TRGljdGlvbmFyeSAqdXNlckluZm87Ci0gICAgICAgICAgICBhbHRl
cm5hdGVVUkwgPSBbdWlEZWxlZ2F0ZSBfd2ViVmlldzpfd2ViVmlldyBhbHRlcm5hdGVVUkxGcm9t
SW1hZ2U6dWlJbWFnZS5nZXQoKSB1c2VySW5mbzomdXNlckluZm9dOworICAgICAgICAgICAgYWx0
ZXJuYXRlVVJMID0gW3VpRGVsZWdhdGUgX3dlYlZpZXc6c2VsZi53ZWJWaWV3IGFsdGVybmF0ZVVS
TEZyb21JbWFnZTp1aUltYWdlLmdldCgpIHVzZXJJbmZvOiZ1c2VySW5mb107CiAgICAgICAgICAg
ICBpbWFnZUluZm8gPSB1c2VySW5mbzsKICAgICAgICAgfQogCkBAIC05MDUyLDEzICs5MDUyLDEz
IEBAIC0gKFVJVmlld0NvbnRyb2xsZXIgKilfcHJlc2VudGVkVmlld0NvbnRyb2xsZXJGb3JQcmV2
aWV3SXRlbUNvbnRyb2xsZXI6KFVJUHJldmllCiAKICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9E
RUNMQVJBVElPTlNfQkVHSU4KICAgICAgICAgaWYgKFt1aURlbGVnYXRlIHJlc3BvbmRzVG9TZWxl
Y3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6d2lsbFByZXZpZXdJbWFnZVdpdGhVUkw6KV0pCi0gICAg
ICAgICAgICBbdWlEZWxlZ2F0ZSBfd2ViVmlldzpfd2ViVmlldyB3aWxsUHJldmlld0ltYWdlV2l0
aFVSTDp0YXJnZXRVUkxdOworICAgICAgICAgICAgW3VpRGVsZWdhdGUgX3dlYlZpZXc6c2VsZi53
ZWJWaWV3IHdpbGxQcmV2aWV3SW1hZ2VXaXRoVVJMOnRhcmdldFVSTF07CiAgICAgICAgIEFMTE9X
X0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCiAgICAgICAgIGF1dG8gZGVmYXVsdEFjdGlv
bnMgPSBbX2FjdGlvblNoZWV0QXNzaXN0YW50IGRlZmF1bHRBY3Rpb25zRm9ySW1hZ2VTaGVldDpl
bGVtZW50SW5mby5nZXQoKV07CiAgICAgICAgIGlmIChpbWFnZUluZm8gJiYgW3VpRGVsZWdhdGUg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpwcmV2aWV3Vmlld0NvbnRyb2xs
ZXJGb3JJbWFnZTphbHRlcm5hdGVVUkw6ZGVmYXVsdEFjdGlvbnM6ZWxlbWVudEluZm86KV0pIHsK
ICAgICAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCi0gICAgICAg
ICAgICBVSVZpZXdDb250cm9sbGVyICpwcmV2aWV3Vmlld0NvbnRyb2xsZXIgPSBbdWlEZWxlZ2F0
ZSBfd2ViVmlldzpfd2ViVmlldyBwcmV2aWV3Vmlld0NvbnRyb2xsZXJGb3JJbWFnZTp1aUltYWdl
LmdldCgpIGFsdGVybmF0ZVVSTDphbHRlcm5hdGVVUkwuZ2V0KCkgZGVmYXVsdEFjdGlvbnM6ZGVm
YXVsdEFjdGlvbnMuZ2V0KCkgZWxlbWVudEluZm86ZWxlbWVudEluZm8uZ2V0KCldOworICAgICAg
ICAgICAgVUlWaWV3Q29udHJvbGxlciAqcHJldmlld1ZpZXdDb250cm9sbGVyID0gW3VpRGVsZWdh
dGUgX3dlYlZpZXc6c2VsZi53ZWJWaWV3IHByZXZpZXdWaWV3Q29udHJvbGxlckZvckltYWdlOnVp
SW1hZ2UuZ2V0KCkgYWx0ZXJuYXRlVVJMOmFsdGVybmF0ZVVSTC5nZXQoKSBkZWZhdWx0QWN0aW9u
czpkZWZhdWx0QWN0aW9ucy5nZXQoKSBlbGVtZW50SW5mbzplbGVtZW50SW5mby5nZXQoKV07CiAg
ICAgICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgICAg
IGlmIChwcmV2aWV3Vmlld0NvbnRyb2xsZXIpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHByZXZp
ZXdWaWV3Q29udHJvbGxlcjsKQEAgLTkwNzksNyArOTA3OSw3IEBAIC0gKHZvaWQpX3ByZXZpZXdJ
dGVtQ29udHJvbGxlcjooVUlQcmV2aWV3SXRlbUNvbnRyb2xsZXIgKiljb250cm9sbGVyIGNvbW1p
dFByZXZpCiAgICAgICAgICAgICBpZiAoaW1hZ2VVUkwuaXNFbXB0eSgpIHx8ICEoaW1hZ2VVUkwu
cHJvdG9jb2xJc0luSFRUUEZhbWlseSgpIHx8IGltYWdlVVJMLnByb3RvY29sSXMoImRhdGEiKSkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9E
RUNMQVJBVElPTlNfQkVHSU4KLSAgICAgICAgICAgIFt1aURlbGVnYXRlIF93ZWJWaWV3Ol93ZWJW
aWV3IGNvbW1pdFByZXZpZXdlZEltYWdlV2l0aFVSTDooTlNVUkwgKilpbWFnZVVSTF07CisgICAg
ICAgICAgICBbdWlEZWxlZ2F0ZSBfd2ViVmlldzpzZWxmLndlYlZpZXcgY29tbWl0UHJldmlld2Vk
SW1hZ2VXaXRoVVJMOihOU1VSTCAqKWltYWdlVVJMXTsKICAgICAgICAgICAgIEFMTE9XX0RFUFJF
Q0FURURfREVDTEFSQVRJT05TX0VORAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBA
IC05MDg4LDE0ICs5MDg4LDE0IEBAIC0gKHZvaWQpX3ByZXZpZXdJdGVtQ29udHJvbGxlcjooVUlQ
cmV2aWV3SXRlbUNvbnRyb2xsZXIgKiljb250cm9sbGVyIGNvbW1pdFByZXZpCiAKICAgICBpZiAo
W3VpRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3ZWJWaWV3OmNvbW1pdFBy
ZXZpZXdpbmdWaWV3Q29udHJvbGxlcjopXSkgewogICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RF
Q0xBUkFUSU9OU19CRUdJTgotICAgICAgICBbdWlEZWxlZ2F0ZSB3ZWJWaWV3Ol93ZWJWaWV3IGNv
bW1pdFByZXZpZXdpbmdWaWV3Q29udHJvbGxlcjp2aWV3Q29udHJvbGxlcl07CisgICAgICAgIFt1
aURlbGVnYXRlIHdlYlZpZXc6c2VsZi53ZWJWaWV3IGNvbW1pdFByZXZpZXdpbmdWaWV3Q29udHJv
bGxlcjp2aWV3Q29udHJvbGxlcl07CiAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0VORAogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKFt1aURlbGVnYXRlIHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6Y29tbWl0UHJldmlld2VkVmlld0Nv
bnRyb2xsZXI6KV0pIHsKICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVH
SU4KLSAgICAgICAgW3VpRGVsZWdhdGUgX3dlYlZpZXc6X3dlYlZpZXcgY29tbWl0UHJldmlld2Vk
Vmlld0NvbnRyb2xsZXI6dmlld0NvbnRyb2xsZXJdOworICAgICAgICBbdWlEZWxlZ2F0ZSBfd2Vi
VmlldzpzZWxmLndlYlZpZXcgY29tbWl0UHJldmlld2VkVmlld0NvbnRyb2xsZXI6dmlld0NvbnRy
b2xsZXJdOwogICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KQEAgLTkxMjIsOSArOTEyMiw5IEBAIC0gKHZvaWQpX3ByZXZpZXdJ
dGVtQ29udHJvbGxlcjooVUlQcmV2aWV3SXRlbUNvbnRyb2xsZXIgKiljb250cm9sbGVyIGRpZERp
c21pc3NQCiAgICAgaWQ8V0tVSURlbGVnYXRlUHJpdmF0ZT4gdWlEZWxlZ2F0ZSA9IHN0YXRpY19j
YXN0PGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPj4oW193ZWJWaWV3IFVJRGVsZWdhdGVdKTsKICAg
ICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgIGlmIChbdWlEZWxlZ2F0
ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmRpZERpc21pc3NQcmV2aWV3
Vmlld0NvbnRyb2xsZXI6Y29tbWl0dGluZzopXSkKLSAgICAgICAgW3VpRGVsZWdhdGUgX3dlYlZp
ZXc6X3dlYlZpZXcgZGlkRGlzbWlzc1ByZXZpZXdWaWV3Q29udHJvbGxlcjp2aWV3Q29udHJvbGxl
ciBjb21taXR0aW5nOmNvbW1pdHRpbmddOworICAgICAgICBbdWlEZWxlZ2F0ZSBfd2ViVmlldzpz
ZWxmLndlYlZpZXcgZGlkRGlzbWlzc1ByZXZpZXdWaWV3Q29udHJvbGxlcjp2aWV3Q29udHJvbGxl
ciBjb21taXR0aW5nOmNvbW1pdHRpbmddOwogICAgIGVsc2UgaWYgKFt1aURlbGVnYXRlIHJlc3Bv
bmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6ZGlkRGlzbWlzc1ByZXZpZXdWaWV3Q29u
dHJvbGxlcjopXSkKLSAgICAgICAgW3VpRGVsZWdhdGUgX3dlYlZpZXc6X3dlYlZpZXcgZGlkRGlz
bWlzc1ByZXZpZXdWaWV3Q29udHJvbGxlcjp2aWV3Q29udHJvbGxlcl07CisgICAgICAgIFt1aURl
bGVnYXRlIF93ZWJWaWV3OnNlbGYud2ViVmlldyBkaWREaXNtaXNzUHJldmlld1ZpZXdDb250cm9s
bGVyOnZpZXdDb250cm9sbGVyXTsKICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19F
TkQKIAogICAgIFtfd2ViVmlldyBfZGlkRGlzbWlzc0NvbnRleHRNZW51XTsK
</data>
<flag name="commit-queue"
          id="402500"
          type_id="3"
          status="+"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>