<?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>191819</bug_id>
          
          <creation_ts>2018-11-17 18:15:51 -0800</creation_ts>
          <short_desc>[iOS] Remove all usages of UIItemProvider, UIItemProviderReading, and related classes</short_desc>
          <delta_ts>2018-11-17 22:17:53 -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>HTML Editing</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>
          
          <blocked>191818</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>mitz</cc>
    
    <cc>rniwa</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1480018</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-11-17 18:15:51 -0800</bug_when>
    <thetext>Now that the earliest iOS SDK that trunk WebKit supports building against is iOS 12, we can remove all usages of UIItemProvider.

Motivated by https://bugs.webkit.org/show_bug.cgi?id=191818</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480019</commentid>
    <comment_count>1</comment_count>
      <attachid>355218</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-11-17 18:32:42 -0800</bug_when>
    <thetext>Created attachment 355218
First pass</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480033</commentid>
    <comment_count>2</comment_count>
      <attachid>355224</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-11-17 19:51:12 -0800</bug_when>
    <thetext>Created attachment 355224
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480034</commentid>
    <comment_count>3</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-11-17 19:53:01 -0800</bug_when>
    <thetext>&lt;rdar://problem/34121543&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480035</commentid>
    <comment_count>4</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-11-17 19:56:56 -0800</bug_when>
    <thetext>A couple of items to consider:
• Source/binary compat when building iOS 12 UIKit (mitigated here using __kindof)
• Source/binary compat when building against iOS 12 SDK (EWS should help catch this)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480036</commentid>
    <comment_count>5</comment_count>
      <attachid>355224</attachid>
    <who name="">mitz</who>
    <bug_when>2018-11-17 20:06:43 -0800</bug_when>
    <thetext>Comment on attachment 355224
Patch

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480045</commentid>
    <comment_count>6</comment_count>
      <attachid>355224</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-17 22:17:52 -0800</bug_when>
    <thetext>Comment on attachment 355224
Patch

Clearing flags on attachment: 355224

Committed r238360: &lt;https://trac.webkit.org/changeset/238360&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480046</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-17 22:17:53 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355218</attachid>
            <date>2018-11-17 18:32:42 -0800</date>
            <delta_ts>2018-11-17 18:44:32 -0800</delta_ts>
            <desc>First pass</desc>
            <filename>bug-191819-20181117183241.patch</filename>
            <type>text/plain</type>
            <size>69760</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4MzQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWUxY2M3OWJjMGI4MzJm
MDQ0ODMwZTk5NTk0Mjc4MGFkNzBkYzg0MC4uMjhiYmFhZTdkMzZlOTdlYzBkYWEzYTE3ZTYyMzk5
NTljNzQ2MTM0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDE4LTExLTE3ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIFJlbW92
ZSBhbGwgdXNhZ2VzIG9mIFVJSXRlbVByb3ZpZGVyLCBVSUl0ZW1Qcm92aWRlclJlYWRpbmcsIGFu
ZCByZWxhdGVkIGNsYXNzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE5MTgxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFJlcGxhY2UgVUlJdGVtUHJvdmlkZXIgKGFuZCByZWxhdGVkIGNsYXNzZXMpIHdp
dGggTlNJdGVtUHJvdmlkZXIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0
ZWJvYXJkSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6cmVnaXN0ZXJJdGVtVG9QYXN0ZWJvYXJk
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tOgorICAg
ICAgICAoLVtXZWJJdGVtUHJvdmlkZXJEYXRhUmVnaXN0cmFyIHJlZ2lzdGVySXRlbVByb3ZpZGVy
Ol0pOgorICAgICAgICAoLVtXZWJJdGVtUHJvdmlkZXJXcml0YWJsZU9iamVjdFJlZ2lzdHJhciBp
bml0V2l0aE9iamVjdDpdKToKKyAgICAgICAgKC1bV2ViSXRlbVByb3ZpZGVyV3JpdGFibGVPYmpl
Y3RSZWdpc3RyYXIgcmVwcmVzZW50aW5nT2JqZWN0XSk6CisgICAgICAgICgtW1dlYkl0ZW1Qcm92
aWRlcldyaXRhYmxlT2JqZWN0UmVnaXN0cmFyIHJlZ2lzdGVySXRlbVByb3ZpZGVyOl0pOgorICAg
ICAgICAoLVtXZWJJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25JbmZvTGlzdCBhZGRSZXByZXNlbnRp
bmdPYmplY3Q6XSk6CisgICAgICAgICgtW1dlYkl0ZW1Qcm92aWRlclJlZ2lzdHJhdGlvbkluZm9M
aXN0IGl0ZW1Qcm92aWRlcl0pOgorICAgICAgICAoLVtXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJk
IHBhc3RlYm9hcmRUeXBlc10pOgorICAgICAgICAoLVtXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJk
IF9wcmVMb2FkZWREYXRhQ29uZm9ybWluZ1RvVHlwZTpmb3JJdGVtUHJvdmlkZXJBdEluZGV4Ol0p
OgorICAgICAgICAoLVtXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIGRhdGFGb3JQYXN0ZWJvYXJk
VHlwZTppbkl0ZW1TZXQ6XSk6CisgICAgICAgIChhbGxMb2FkYWJsZUNsYXNzZXMpOgorICAgICAg
ICAoY2xhc3NGb3JUeXBlSWRlbnRpZmllcik6CisgICAgICAgICgtW1dlYkl0ZW1Qcm92aWRlclBh
c3RlYm9hcmQgdmFsdWVzRm9yUGFzdGVib2FyZFR5cGU6aW5JdGVtU2V0Ol0pOgorICAgICAgICAo
LVtXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIG51bWJlck9mRmlsZXNdKToKKyAgICAgICAgKC1b
V2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZCBpdGVtUHJvdmlkZXJBdEluZGV4Ol0pOgorICAgICAg
ICAoLVtXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIGVudW1lcmF0ZUl0ZW1Qcm92aWRlcnNXaXRo
QmxvY2s6XSk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmNvbnRhaW5zVVJMIGNvbnN0KToKKwogMjAxOC0xMS0xNiAg
V2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2Fd
IFtXZWJLaXQyXSBBZGQgc3VwcG9ydCBmb3IgcmVwbGFjaW5nIGZpbmQtaW4tcGFnZSB0ZXh0IG1h
dGNoZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViQ29yZS9QQUwvQ2hhbmdlTG9nCmluZGV4IGNmNGFjNTJjZTJhN2Q2NTNmYjIyNmYxZjFkZGE0
ZjBjNmIwMjIyMmQuLjMwYTZiYmVmY2VkNjc4MWQ5N2I3ZmY0YTg5NmNiYWUxMDIzMjNkN2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvUEFML0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE4LTExLTE3ICBXZW5zb24gSHNp
ZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIFJlbW92ZSBhbGwg
dXNhZ2VzIG9mIFVJSXRlbVByb3ZpZGVyLCBVSUl0ZW1Qcm92aWRlclJlYWRpbmcsIGFuZCByZWxh
dGVkIGNsYXNzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5MTgxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFJlcGxhY2UgVUlJdGVtUHJvdmlkZXIgKGFuZCByZWxhdGVkIGNsYXNzZXMpIHdpdGggTlNJ
dGVtUHJvdmlkZXIuCisKKyAgICAgICAgKiBwYWwvc3BpL2lvcy9VSUtpdFNQSS5oOgorCiAyMDE4
LTExLTE2ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAg
IFtDb2NvYV0gW1dlYktpdDJdIEFkZCBzdXBwb3J0IGZvciByZXBsYWNpbmcgZmluZC1pbi1wYWdl
IHRleHQgbWF0Y2hlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBmMDNiOTA1OWM1OTIwYTk3Y2FhMTNiZDdlZTRkMmZk
ZWYwMDRlN2VlLi43ZjMyZmQzMTc0NjVlOWM2OGJhNDI0NjFhNmVjNTA1ODFjN2Q0NTI2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE4LTExLTE3ICBXZW5zb24gSHNpZWggIDx3ZW5zb25f
aHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIFJlbW92ZSBhbGwgdXNhZ2VzIG9mIFVJ
SXRlbVByb3ZpZGVyLCBVSUl0ZW1Qcm92aWRlclJlYWRpbmcsIGFuZCByZWxhdGVkIGNsYXNzZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTgxOQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlcGxhY2Ug
VUlJdGVtUHJvdmlkZXIgKGFuZCByZWxhdGVkIGNsYXNzZXMpIHdpdGggTlNJdGVtUHJvdmlkZXIu
CisKKyAgICAgICAgKiBQbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29u
dGVudFZpZXcgX2l0ZW1zRm9yQmVnaW5uaW5nT3JBZGRpbmdUb1Nlc3Npb25XaXRoUmVnaXN0cmF0
aW9uTGlzdDpzdGFnZWREcmFnU291cmNlOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGRy
b3BJbnRlcmFjdGlvbjpwZXJmb3JtRHJvcDpdKToKKwogMjAxOC0xMS0xNiAgV2Vuc29uIEhzaWVo
ICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIFtXZWJLaXQyXSBB
ZGQgc3VwcG9ydCBmb3IgcmVwbGFjaW5nIGZpbmQtaW4tcGFnZSB0ZXh0IG1hdGNoZXMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2lvcy9VSUtpdFNQSS5oIGIvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9zcGkvaW9zL1VJS2l0U1BJLmgKaW5kZXggMWE4N2FmNWFmM2E0ODlj
MTEzNjYwYmIyZmQ1NGY4Yzc2NmU0ZjRjYy4uNzg0OTBiZWFjM2Q3ZmUxMWFhNmE4Mjg1Y2Q0OTll
Yzg4ODMzMWEyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvaW9zL1VJ
S2l0U1BJLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvaW9zL1VJS2l0U1BJLmgK
QEAgLTM5LDExICszOSw4IEBAIFdURl9FWFRFUk5fQ19FTkQKICNpbXBvcnQgPFVJS2l0L1VJVmll
d0NvbnRyb2xsZXJfUHJpdmF0ZS5oPgogCiAjaWYgRU5BQkxFKERBVEFfSU5URVJBQ1RJT04pCi0j
aW1wb3J0IDxVSUtpdC9OU0F0dHJpYnV0ZWRTdHJpbmcrVUlJdGVtUHJvdmlkZXIuaD4KLSNpbXBv
cnQgPFVJS2l0L05TU3RyaW5nK1VJSXRlbVByb3ZpZGVyLmg+Ci0jaW1wb3J0IDxVSUtpdC9OU1VS
TCtVSUl0ZW1Qcm92aWRlci5oPgotI2ltcG9ydCA8VUlLaXQvVUlJbWFnZStVSUl0ZW1Qcm92aWRl
ci5oPgotI2ltcG9ydCA8VUlLaXQvVUlJdGVtUHJvdmlkZXJfUHJpdmF0ZS5oPgorI2ltcG9ydCA8
VUlLaXQvTlNJdGVtUHJvdmlkZXIrVUlLaXRBZGRpdGlvbnMuaD4KKyNpbXBvcnQgPFVJS2l0L05T
SXRlbVByb3ZpZGVyK1VJS2l0QWRkaXRpb25zX1ByaXZhdGUuaD4KICNlbmRpZgogCiBAaW50ZXJm
YWNlIFVJQXBwbGljYXRpb24gKCkKQEAgLTExNyw0MyArMTE0LDQgQEAgTlNfQVNTVU1FX05PTk5V
TExfRU5ECiBAZW5kCiAjZW5kaWYKIAotI2lmIEVOQUJMRShEQVRBX0lOVEVSQUNUSU9OKQotCi1O
U19BU1NVTUVfTk9OTlVMTF9CRUdJTgotCi1AaW50ZXJmYWNlIFVJSXRlbVByb3ZpZGVyIDogTlNJ
dGVtUHJvdmlkZXIKLUBlbmQKLQotI2RlZmluZSBVSUl0ZW1Qcm92aWRlclJlcHJlc2VudGF0aW9u
T3B0aW9uc1Zpc2liaWxpdHlBbGwgTlNJdGVtUHJvdmlkZXJSZXByZXNlbnRhdGlvblZpc2liaWxp
dHlBbGwKLQotQHByb3RvY29sIFVJSXRlbVByb3ZpZGVyUmVhZGluZyA8TlNJdGVtUHJvdmlkZXJS
ZWFkaW5nPgotCi1AcmVxdWlyZWQKLS0gKG51bGxhYmxlIGluc3RhbmNldHlwZSlpbml0V2l0aEl0
ZW1Qcm92aWRlckRhdGE6KE5TRGF0YSAqKWRhdGEgdHlwZUlkZW50aWZpZXI6KE5TU3RyaW5nICop
dHlwZUlkZW50aWZpZXIgZXJyb3I6KE5TRXJyb3IgKiopb3V0RXJyb3I7Ci0KLUBlbmQKLQotQHBy
b3RvY29sIFVJSXRlbVByb3ZpZGVyV3JpdGluZyA8TlNJdGVtUHJvdmlkZXJXcml0aW5nPgotCi1A
cmVxdWlyZWQKLS0gKE5TUHJvZ3Jlc3MgKiBfTnVsbGFibGUpbG9hZERhdGFXaXRoVHlwZUlkZW50
aWZpZXI6KE5TU3RyaW5nICopdHlwZUlkZW50aWZpZXIgZm9ySXRlbVByb3ZpZGVyQ29tcGxldGlv
bkhhbmRsZXI6KHZvaWQgKF4pKE5TRGF0YSAqIF9OdWxsYWJsZSwgTlNFcnJvciAqIF9OdWxsYWJs
ZSkpY29tcGxldGlvbkhhbmRsZXI7Ci0KLUBlbmQKLQotQGludGVyZmFjZSBOU0F0dHJpYnV0ZWRT
dHJpbmcgKCkgPFVJSXRlbVByb3ZpZGVyUmVhZGluZywgVUlJdGVtUHJvdmlkZXJXcml0aW5nPgot
QGVuZAotCi1AaW50ZXJmYWNlIE5TU3RyaW5nICgpIDxVSUl0ZW1Qcm92aWRlclJlYWRpbmcsIFVJ
SXRlbVByb3ZpZGVyV3JpdGluZz4KLUBlbmQKLQotQGludGVyZmFjZSBOU1VSTCAoKSA8VUlJdGVt
UHJvdmlkZXJSZWFkaW5nLCBVSUl0ZW1Qcm92aWRlcldyaXRpbmc+Ci1AZW5kCi0KLUBpbnRlcmZh
Y2UgVUlJbWFnZSAoKSA8VUlJdGVtUHJvdmlkZXJSZWFkaW5nLCBVSUl0ZW1Qcm92aWRlcldyaXRp
bmc+Ci1AZW5kCi0KLU5TX0FTU1VNRV9OT05OVUxMX0VORAotCi0jZW5kaWYKLQogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJk
SU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElP
Uy5tbQppbmRleCBjNzU0N2UyNDQ5YWVhMzA4YzZjNmRiYmQ2YzY0ZmYyMjc1ZThhMzE2Li5kNzIw
YjgyZjBiMTQ0NjVmY2M1NTU3MWY3OWFhMjZhMzU4NDFjM2RhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KQEAgLTI5Miw3
ICsyOTIsNyBAQCBzdGF0aWMgdm9pZCByZWdpc3Rlckl0ZW1Ub1Bhc3RlYm9hcmQoV2ViSXRlbVBy
b3ZpZGVyUmVnaXN0cmF0aW9uSW5mb0xpc3QgKnJlcHJlcwogICAgIH1dOwogICAgIFtwYXN0ZWJv
YXJkIHNldEl0ZW1zOkBbIGl0ZW1EaWN0aW9uYXJ5LmdldCgpIF1dOwogI2Vsc2UKLSAgICBpZiAo
VUlJdGVtUHJvdmlkZXIgKml0ZW1Qcm92aWRlciA9IHJlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIu
aXRlbVByb3ZpZGVyKQorICAgIGlmIChOU0l0ZW1Qcm92aWRlciAqaXRlbVByb3ZpZGVyID0gcmVw
cmVzZW50YXRpb25zVG9SZWdpc3Rlci5pdGVtUHJvdmlkZXIpCiAgICAgICAgIFtwYXN0ZWJvYXJk
IHNldEl0ZW1Qcm92aWRlcnM6QFsgaXRlbVByb3ZpZGVyIF1dOwogICAgIGVsc2UKICAgICAgICAg
W3Bhc3RlYm9hcmQgc2V0SXRlbVByb3ZpZGVyczpAWyBdXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5oCmluZGV4IGI0
M2VhNGVlYzY5ZDRmZWFlYTRlYmY0NzJhNzc0ZDU1MjBkMDUxY2UuLmFhMTZjMDkyOGIyZWEyMGYy
NjkyYmYyM2FjNWZiZTBhNTRhMmFiMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQuaApAQCAtMjcsMjAgKzI3LDYg
QEAKIAogI2lmIFRBUkdFVF9PU19JUEhPTkUgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTEwMDAwCiAKLS8vIFVJSXRlbVByb3ZpZGVycyBhcmUgbm90IGltcGxlbWVudGVk
IGZvciBpT1MgYXBwcyBmb3IgTWFjLCBiZWNhdXNlIHRoZXkgd2VyZSBkZXByaWNhdGVkIGxhc3Qg
eWVhci4KLS8vIFdlIG5lZWQgdG8gc3dpdGNoIG92ZXIgdG8gTlNJdGVtUHJvdmlkZXJzIGV2ZXJ5
d2hlcmUuIFRoaXMgc2hvdWxkIGp1c3QgYmUgYSB0ZW1wb3JhcnkgZml4LgotI2lmIGRlZmluZWQo
VEFSR0VUX09TX0lPU01BQykgJiYgVEFSR0VUX09TX0lPU01BQwotCi0jZGVmaW5lIFVJSXRlbVBy
b3ZpZGVyIE5TSXRlbVByb3ZpZGVyCi0jZGVmaW5lIFVJSXRlbVByb3ZpZGVyUmVhZGluZyBOU0l0
ZW1Qcm92aWRlclJlYWRpbmcKLSNkZWZpbmUgVUlJdGVtUHJvdmlkZXJXcml0aW5nIE5TSXRlbVBy
b3ZpZGVyV3JpdGluZwotI2RlZmluZSBVSUl0ZW1Qcm92aWRlclJlcHJlc2VudGF0aW9uT3B0aW9u
c1Zpc2liaWxpdHlBbGwgTlNJdGVtUHJvdmlkZXJSZXByZXNlbnRhdGlvblZpc2liaWxpdHlBbGwK
LQotI2VuZGlmCi0KLUBjbGFzcyBVSUl0ZW1Qcm92aWRlcjsKLUBwcm90b2NvbCBVSUl0ZW1Qcm92
aWRlcldyaXRpbmc7Ci0KIHN0cnVjdCBDR1NpemU7CiAKIHR5cGVkZWYgTlNfRU5VTShOU0ludGVn
ZXIsIFdlYlByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlKSB7CkBAIC03NywxMyArNjMsMTMgQEAg
dHlwZWRlZiB2b2lkKF5XZWJJdGVtUHJvdmlkZXJGaWxlQ2FsbGJhY2spKE5TVVJMICogX051bGxh
YmxlLCBOU0Vycm9yICogX051bGxhYmwKICAqLwogV0VCQ09SRV9FWFBPUlQgQGludGVyZmFjZSBX
ZWJJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25JbmZvTGlzdCA6IE5TT2JqZWN0CiAKLS0gKHZvaWQp
YWRkUmVwcmVzZW50aW5nT2JqZWN0OihpZCA8VUlJdGVtUHJvdmlkZXJXcml0aW5nPilvYmplY3Q7
CistICh2b2lkKWFkZFJlcHJlc2VudGluZ09iamVjdDooaWQgPE5TSXRlbVByb3ZpZGVyV3JpdGlu
Zz4pb2JqZWN0OwogLSAodm9pZClhZGREYXRhOihOU0RhdGEgKilkYXRhIGZvclR5cGU6KE5TU3Ry
aW5nICopdHlwZUlkZW50aWZpZXI7CiAtICh2b2lkKWFkZFByb21pc2VkVHlwZTooTlNTdHJpbmcg
Kil0eXBlSWRlbnRpZmllciBmaWxlQ2FsbGJhY2s6KHZvaWQoXikoV2ViSXRlbVByb3ZpZGVyRmls
ZUNhbGxiYWNrKSljYWxsYmFjazsKIAogQHByb3BlcnR5IChub25hdG9taWMpIENHU2l6ZSBwcmVm
ZXJyZWRQcmVzZW50YXRpb25TaXplOwogQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TU3Ry
aW5nICpzdWdnZXN0ZWROYW1lOwotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBudWxs
YWJsZSkgVUlJdGVtUHJvdmlkZXIgKml0ZW1Qcm92aWRlcjsKK0Bwcm9wZXJ0eSAobm9uYXRvbWlj
LCByZWFkb25seSwgbnVsbGFibGUpIE5TSXRlbVByb3ZpZGVyICppdGVtUHJvdmlkZXI7CiAKIEBw
cm9wZXJ0eSAobm9uYXRvbWljKSBXZWJQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZSBwcmVmZXJy
ZWRQcmVzZW50YXRpb25TdHlsZTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU0RhdGEg
KnRlYW1EYXRhOwpAQCAtMTE0LDcgKzEwMCw3IEBAIFdFQkNPUkVfRVhQT1JUIEBpbnRlcmZhY2Ug
V2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZCA6IE5TT2JqZWN0PEFic3RyYWN0UGFzdGVib2FyCiAt
ICh2b2lkKWluY3JlbWVudFBlbmRpbmdPcGVyYXRpb25Db3VudDsKIC0gKHZvaWQpZGVjcmVtZW50
UGVuZGluZ09wZXJhdGlvbkNvdW50OwogCi0tICh2b2lkKWVudW1lcmF0ZUl0ZW1Qcm92aWRlcnNX
aXRoQmxvY2s6KHZvaWQgKF4pKFVJSXRlbVByb3ZpZGVyICppdGVtUHJvdmlkZXIsIE5TVUludGVn
ZXIgaW5kZXgsIEJPT0wgKnN0b3ApKWJsb2NrOworLSAodm9pZCllbnVtZXJhdGVJdGVtUHJvdmlk
ZXJzV2l0aEJsb2NrOih2b2lkICheKShOU0l0ZW1Qcm92aWRlciAqaXRlbVByb3ZpZGVyLCBOU1VJ
bnRlZ2VyIGluZGV4LCBCT09MICpzdG9wKSlibG9jazsKIAogLy8gVGhlIGdpdmVuIGNvbXBsZXRp
b24gYmxvY2sgaXMgYWx3YXlzIGRpc3BhdGNoZWQgb24gdGhlIG1haW4gdGhyZWFkLgogLSAodm9p
ZClkb0FmdGVyTG9hZGluZ1Byb3ZpZGVkQ29udGVudEludG9GaWxlVVJMczooV2ViSXRlbVByb3Zp
ZGVyRmlsZUxvYWRCbG9jaylhY3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tCmluZGV4IGRiM2NmOWNmYjVl
NDFjZTU0ZTE3OGRhOTY2Yjg3NTgwYjhlODEzYjYuLjU0MjFmYTkzN2IzNzkwM2U4MzQwM2U0ZjZk
ZWZhY2EwMjUwYTZjODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9X
ZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tCkBAIC00NSw3ICs0NSw2IEBACiBTT0ZU
X0xJTktfRlJBTUVXT1JLKFVJS2l0KQogU09GVF9MSU5LX0NMQVNTKFVJS2l0LCBVSUNvbG9yKQog
U09GVF9MSU5LX0NMQVNTKFVJS2l0LCBVSUltYWdlKQotU09GVF9MSU5LX0NMQVNTKFVJS2l0LCBV
SUl0ZW1Qcm92aWRlcikKIAogdHlwZWRlZiB2b2lkKF5JdGVtUHJvdmlkZXJEYXRhTG9hZENvbXBs
ZXRpb25IYW5kbGVyKShOU0RhdGEgKiwgTlNFcnJvciAqKTsKIHR5cGVkZWYgdm9pZCheSXRlbVBy
b3ZpZGVyRmlsZUxvYWRDb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKiwgQk9PTCwgTlNFcnJvciAq
KTsKQEAgLTk3LDcgKzk2LDcgQEAgdXNpbmcgV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE7
CiAKIC0gKHZvaWQpcmVnaXN0ZXJJdGVtUHJvdmlkZXI6KE5TSXRlbVByb3ZpZGVyICopaXRlbVBy
b3ZpZGVyCiB7Ci0gICAgW2l0ZW1Qcm92aWRlciByZWdpc3RlckRhdGFSZXByZXNlbnRhdGlvbkZv
clR5cGVJZGVudGlmaWVyOnNlbGYudHlwZUlkZW50aWZpZXIgdmlzaWJpbGl0eTpVSUl0ZW1Qcm92
aWRlclJlcHJlc2VudGF0aW9uT3B0aW9uc1Zpc2liaWxpdHlBbGwgbG9hZEhhbmRsZXI6W2l0ZW1E
YXRhID0gX2RhdGFdIChJdGVtUHJvdmlkZXJEYXRhTG9hZENvbXBsZXRpb25IYW5kbGVyIGNvbXBs
ZXRpb25IYW5kbGVyKSAtPiBOU1Byb2dyZXNzICogeworICAgIFtpdGVtUHJvdmlkZXIgcmVnaXN0
ZXJEYXRhUmVwcmVzZW50YXRpb25Gb3JUeXBlSWRlbnRpZmllcjpzZWxmLnR5cGVJZGVudGlmaWVy
IHZpc2liaWxpdHk6TlNJdGVtUHJvdmlkZXJSZXByZXNlbnRhdGlvblZpc2liaWxpdHlBbGwgbG9h
ZEhhbmRsZXI6W2l0ZW1EYXRhID0gX2RhdGFdIChJdGVtUHJvdmlkZXJEYXRhTG9hZENvbXBsZXRp
b25IYW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyKSAtPiBOU1Byb2dyZXNzICogewogICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihpdGVtRGF0YS5nZXQoKSwgbmlsKTsKICAgICAgICAgcmV0dXJuIG5p
bDsKICAgICB9XTsKQEAgLTExMSwxNSArMTEwLDE1IEBAIHVzaW5nIFdlYkNvcmU6OlBhc3RlYm9h
cmRDdXN0b21EYXRhOwogQGVuZAogCiBAaW50ZXJmYWNlIFdlYkl0ZW1Qcm92aWRlcldyaXRhYmxl
T2JqZWN0UmVnaXN0cmFyIDogTlNPYmplY3QgPFdlYkl0ZW1Qcm92aWRlclJlZ2lzdHJhcj4KLS0g
KGluc3RhbmNldHlwZSlpbml0V2l0aE9iamVjdDooaWQgPFVJSXRlbVByb3ZpZGVyV3JpdGluZz4p
cmVwcmVzZW50aW5nT2JqZWN0OwotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBpZCA8
VUlJdGVtUHJvdmlkZXJXcml0aW5nPiByZXByZXNlbnRpbmdPYmplY3Q7CistIChpbnN0YW5jZXR5
cGUpaW5pdFdpdGhPYmplY3Q6KGlkIDxOU0l0ZW1Qcm92aWRlcldyaXRpbmc+KXJlcHJlc2VudGlu
Z09iamVjdDsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgaWQgPE5TSXRlbVByb3Zp
ZGVyV3JpdGluZz4gcmVwcmVzZW50aW5nT2JqZWN0OwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24g
V2ViSXRlbVByb3ZpZGVyV3JpdGFibGVPYmplY3RSZWdpc3RyYXIgewotICAgIFJldGFpblB0cjxp
ZCA8VUlJdGVtUHJvdmlkZXJXcml0aW5nPj4gX3JlcHJlc2VudGluZ09iamVjdDsKKyAgICBSZXRh
aW5QdHI8aWQgPE5TSXRlbVByb3ZpZGVyV3JpdGluZz4+IF9yZXByZXNlbnRpbmdPYmplY3Q7CiB9
CiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aE9iamVjdDooaWQgPFVJSXRlbVByb3ZpZGVyV3Jp
dGluZz4pcmVwcmVzZW50aW5nT2JqZWN0CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhPYmplY3Q6
KGlkIDxOU0l0ZW1Qcm92aWRlcldyaXRpbmc+KXJlcHJlc2VudGluZ09iamVjdAogewogICAgIGlm
ICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOwpAQCAtMTI4LDcg
KzEyNyw3IEBAIHVzaW5nIFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOwogICAgIHJldHVy
biBzZWxmOwogfQogCi0tIChpZCA8VUlJdGVtUHJvdmlkZXJXcml0aW5nPilyZXByZXNlbnRpbmdP
YmplY3QKKy0gKGlkIDxOU0l0ZW1Qcm92aWRlcldyaXRpbmc+KXJlcHJlc2VudGluZ09iamVjdAog
ewogICAgIHJldHVybiBfcmVwcmVzZW50aW5nT2JqZWN0LmdldCgpOwogfQpAQCAtMTQwLDcgKzEz
OSw3IEBAIHVzaW5nIFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOwogCiAtICh2b2lkKXJl
Z2lzdGVySXRlbVByb3ZpZGVyOihOU0l0ZW1Qcm92aWRlciAqKWl0ZW1Qcm92aWRlcgogewotICAg
IFtpdGVtUHJvdmlkZXIgcmVnaXN0ZXJPYmplY3Q6c2VsZi5yZXByZXNlbnRpbmdPYmplY3Qgdmlz
aWJpbGl0eTpVSUl0ZW1Qcm92aWRlclJlcHJlc2VudGF0aW9uT3B0aW9uc1Zpc2liaWxpdHlBbGxd
OworICAgIFtpdGVtUHJvdmlkZXIgcmVnaXN0ZXJPYmplY3Q6c2VsZi5yZXByZXNlbnRpbmdPYmpl
Y3QgdmlzaWJpbGl0eTpOU0l0ZW1Qcm92aWRlclJlcHJlc2VudGF0aW9uVmlzaWJpbGl0eUFsbF07
CiB9CiAKIC0gKE5TU3RyaW5nICopZGVzY3JpcHRpb24KQEAgLTIyNCw5ICsyMjMsOSBAQCB1c2lu
ZyBXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTsKICAgICBbX3JlcHJlc2VudGF0aW9ucyBh
ZGRPYmplY3Q6cmVwcmVzZW50YXRpb24uZ2V0KCldOwogfQogCi0tICh2b2lkKWFkZFJlcHJlc2Vu
dGluZ09iamVjdDooaWQgPFVJSXRlbVByb3ZpZGVyV3JpdGluZz4pb2JqZWN0CistICh2b2lkKWFk
ZFJlcHJlc2VudGluZ09iamVjdDooaWQgPE5TSXRlbVByb3ZpZGVyV3JpdGluZz4pb2JqZWN0CiB7
Ci0gICAgQVNTRVJUKFtvYmplY3QgY29uZm9ybXNUb1Byb3RvY29sOkBwcm90b2NvbChVSUl0ZW1Q
cm92aWRlcldyaXRpbmcpXSk7CisgICAgQVNTRVJUKFtvYmplY3QgY29uZm9ybXNUb1Byb3RvY29s
OkBwcm90b2NvbChOU0l0ZW1Qcm92aWRlcldyaXRpbmcpXSk7CiAgICAgYXV0byByZXByZXNlbnRh
dGlvbiA9IGFkb3B0TlMoW1tXZWJJdGVtUHJvdmlkZXJXcml0YWJsZU9iamVjdFJlZ2lzdHJhciBh
bGxvY10gaW5pdFdpdGhPYmplY3Q6b2JqZWN0XSk7CiAgICAgW19yZXByZXNlbnRhdGlvbnMgYWRk
T2JqZWN0OnJlcHJlc2VudGF0aW9uLmdldCgpXTsKIH0KQEAgLTI3MywxNyArMjcyLDE1IEBAIHN0
YXRpYyBVSVByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlIHVpUHJlZmVycmVkUHJlc2VudGF0aW9u
U3R5bGUoV2ViUHJlZmVycmVkUHJlCiB9CiAjZW5kaWYKIAotLSAoVUlJdGVtUHJvdmlkZXIgKilp
dGVtUHJvdmlkZXIKKy0gKE5TSXRlbVByb3ZpZGVyICopaXRlbVByb3ZpZGVyCiB7CiAgICAgaWYg
KCFzZWxmLm51bWJlck9mSXRlbXMpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBhdXRvIGl0
ZW1Qcm92aWRlciA9IGFkb3B0TlMoW2FsbG9jVUlJdGVtUHJvdmlkZXJJbnN0YW5jZSgpIGluaXRd
KTsKKyAgICBhdXRvIGl0ZW1Qcm92aWRlciA9IGFkb3B0TlMoW05TSXRlbVByb3ZpZGVyIG5ld10p
OwogICAgIGZvciAoaWQgPFdlYkl0ZW1Qcm92aWRlclJlZ2lzdHJhcj4gcmVwcmVzZW50YXRpb24g
aW4gX3JlcHJlc2VudGF0aW9ucy5nZXQoKSkKICAgICAgICAgW3JlcHJlc2VudGF0aW9uIHJlZ2lz
dGVySXRlbVByb3ZpZGVyOml0ZW1Qcm92aWRlci5nZXQoKV07CiAgICAgW2l0ZW1Qcm92aWRlciBz
ZXRTdWdnZXN0ZWROYW1lOnNlbGYuc3VnZ2VzdGVkTmFtZV07Ci0gICAgLy8gVUlJdGVtUHJvdmlk
ZXJzIGFyZSBub3QgaW1wbGVtZW50ZWQgZm9yIGlPUyBhcHBzIGZvciBNYWMsIGJlY2F1c2UgdGhl
eSB3ZXJlIGRlcHJpY2F0ZWQgbGFzdCB5ZWFyLgotICAgIC8vIFdlIG5lZWQgdG8gc3dpdGNoIG92
ZXIgdG8gTlNJdGVtUHJvdmlkZXJzIGV2ZXJ5d2hlcmUuIFRoaXMgc2hvdWxkIGp1c3QgYmUgYSB0
ZW1wb3JhcnkgZml4LgogI2lmICFQTEFURk9STShJT1NNQUMpCiAgICAgW2l0ZW1Qcm92aWRlciBz
ZXRQcmVmZXJyZWRQcmVzZW50YXRpb25TaXplOnNlbGYucHJlZmVycmVkUHJlc2VudGF0aW9uU2l6
ZV07CiAgICAgW2l0ZW1Qcm92aWRlciBzZXRQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZTp1aVBy
ZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlKHNlbGYucHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGUp
XTsKQEAgLTQ1NCw3ICs0NTEsNyBAQCBzdGF0aWMgVUlQcmVmZXJyZWRQcmVzZW50YXRpb25TdHls
ZSB1aVByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlKFdlYlByZWZlcnJlZFByZQogewogICAgIE5T
TXV0YWJsZVNldDxOU1N0cmluZyAqPiAqYWxsVHlwZXMgPSBbTlNNdXRhYmxlU2V0IHNldF07CiAg
ICAgTlNNdXRhYmxlQXJyYXk8TlNTdHJpbmcgKj4gKmFsbFR5cGVzSW5PcmRlciA9IFtOU011dGFi
bGVBcnJheSBhcnJheV07Ci0gICAgZm9yIChVSUl0ZW1Qcm92aWRlciAqcHJvdmlkZXIgaW4gX2l0
ZW1Qcm92aWRlcnMuZ2V0KCkpIHsKKyAgICBmb3IgKE5TSXRlbVByb3ZpZGVyICpwcm92aWRlciBp
biBfaXRlbVByb3ZpZGVycy5nZXQoKSkgewogICAgICAgICBmb3IgKE5TU3RyaW5nICp0eXBlSWRl
bnRpZmllciBpbiBwcm92aWRlci5yZWdpc3RlcmVkVHlwZUlkZW50aWZpZXJzKSB7CiAgICAgICAg
ICAgICBpZiAoW2FsbFR5cGVzIGNvbnRhaW5zT2JqZWN0OnR5cGVJZGVudGlmaWVyXSkKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKQEAgLTUwMSw3ICs0OTgsNyBAQCBzdGF0aWMgVUlQcmVmZXJy
ZWRQcmVzZW50YXRpb25TdHlsZSB1aVByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlKFdlYlByZWZl
cnJlZFByZQogICAgICAgICBpZiAoIVVUVHlwZUNvbmZvcm1zVG8oKENGU3RyaW5nUmVmKWxvYWRl
ZFR5cGUsIChDRlN0cmluZ1JlZil0eXBlSWRlbnRpZmllcikpCiAgICAgICAgICAgICBjb250aW51
ZTsKIAotICAgICAgICAvLyBXZSd2ZSBhbHJlYWR5IGxvYWRlZCBkYXRhIHJlbGV2YW50IGZvciB0
aGlzIFVUSSB0eXBlIG9udG8gZGlzaywgc28gdGhlcmUncyBubyBuZWVkIHRvIGFzayB0aGUgVUlJ
dGVtUHJvdmlkZXIgZm9yIHRoZSBzYW1lIGRhdGEgYWdhaW4uCisgICAgICAgIC8vIFdlJ3ZlIGFs
cmVhZHkgbG9hZGVkIGRhdGEgcmVsZXZhbnQgZm9yIHRoaXMgVVRJIHR5cGUgb250byBkaXNrLCBz
byB0aGVyZSdzIG5vIG5lZWQgdG8gYXNrIHRoZSBOU0l0ZW1Qcm92aWRlciBmb3IgdGhlIHNhbWUg
ZGF0YSBhZ2Fpbi4KICAgICAgICAgaWYgKE5TRGF0YSAqcmVzdWx0ID0gW05TRGF0YSBkYXRhV2l0
aENvbnRlbnRzT2ZVUkw6W2xvYWRSZXN1bHQgZmlsZVVSTEZvclR5cGU6bG9hZGVkVHlwZV0gb3B0
aW9uczpOU0RhdGFSZWFkaW5nTWFwcGVkSWZTYWZlIGVycm9yOm5pbF0pCiAgICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgIH0KQEAgLTUyMSw3ICs1MTgsNyBAQCBzdGF0aWMgVUlQcmVmZXJy
ZWRQcmVzZW50YXRpb25TdHlsZSB1aVByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlKFdlYlByZWZl
cnJlZFByZQogICAgIGF1dG8gdmFsdWVzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9j
XSBpbml0XSk7CiAgICAgUmV0YWluUHRyPFdlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQ+IHJldGFp
bmVkU2VsZiA9IHNlbGY7CiAgICAgW2l0ZW1TZXQgZW51bWVyYXRlSW5kZXhlc1VzaW5nQmxvY2s6
W3JldGFpbmVkU2VsZiwgcGFzdGVib2FyZFR5cGUsIHZhbHVlc10gKE5TVUludGVnZXIgaW5kZXgs
IEJPT0wgKikgewotICAgICAgICBVSUl0ZW1Qcm92aWRlciAqcHJvdmlkZXIgPSBbcmV0YWluZWRT
ZWxmIGl0ZW1Qcm92aWRlckF0SW5kZXg6aW5kZXhdOworICAgICAgICBOU0l0ZW1Qcm92aWRlciAq
cHJvdmlkZXIgPSBbcmV0YWluZWRTZWxmIGl0ZW1Qcm92aWRlckF0SW5kZXg6aW5kZXhdOwogICAg
ICAgICBpZiAoIXByb3ZpZGVyKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC01MzEsNyArNTI4
LDcgQEAgc3RhdGljIFVJUHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGUgdWlQcmVmZXJyZWRQcmVz
ZW50YXRpb25TdHlsZShXZWJQcmVmZXJyZWRQcmUKICAgICByZXR1cm4gdmFsdWVzLmF1dG9yZWxl
YXNlKCk7CiB9CiAKLXN0YXRpYyBOU0FycmF5PENsYXNzPFVJSXRlbVByb3ZpZGVyUmVhZGluZz4+
ICphbGxMb2FkYWJsZUNsYXNzZXMoKQorc3RhdGljIE5TQXJyYXk8Q2xhc3M8TlNJdGVtUHJvdmlk
ZXJSZWFkaW5nPj4gKmFsbExvYWRhYmxlQ2xhc3NlcygpCiB7CiAgICAgcmV0dXJuIEBbIFtnZXRV
SUNvbG9yQ2xhc3MoKSBjbGFzc10sIFtnZXRVSUltYWdlQ2xhc3MoKSBjbGFzc10sIFtOU1VSTCBj
bGFzc10sIFtOU1N0cmluZyBjbGFzc10sIFtOU0F0dHJpYnV0ZWRTdHJpbmcgY2xhc3NdIF07CiB9
CkBAIC01NDAsOCArNTM3LDggQEAgc3RhdGljIENsYXNzIGNsYXNzRm9yVHlwZUlkZW50aWZpZXIo
TlNTdHJpbmcgKnR5cGVJZGVudGlmaWVyLCBOU1N0cmluZyAqJm91dFR5cGUKIHsKICAgICBvdXRU
eXBlSWRlbnRpZmllclRvTG9hZCA9IHR5cGVJZGVudGlmaWVyOwogCi0gICAgLy8gRmlyc3QsIHRy
eSB0byBsb2FkIGEgcGxhdGZvcm0gVUlJdGVtUHJvdmlkZXJSZWFkaW5nLWNvbmZvcm1hbnQgb2Jq
ZWN0IGFzLWlzLgotICAgIGZvciAoQ2xhc3M8VUlJdGVtUHJvdmlkZXJSZWFkaW5nPiBsb2FkYWJs
ZUNsYXNzIGluIGFsbExvYWRhYmxlQ2xhc3NlcygpKSB7CisgICAgLy8gRmlyc3QsIHRyeSB0byBs
b2FkIGEgcGxhdGZvcm0gTlNJdGVtUHJvdmlkZXJSZWFkaW5nLWNvbmZvcm1hbnQgb2JqZWN0IGFz
LWlzLgorICAgIGZvciAoQ2xhc3M8TlNJdGVtUHJvdmlkZXJSZWFkaW5nPiBsb2FkYWJsZUNsYXNz
IGluIGFsbExvYWRhYmxlQ2xhc3NlcygpKSB7CiAgICAgICAgIGlmIChbW2xvYWRhYmxlQ2xhc3Mg
cmVhZGFibGVUeXBlSWRlbnRpZmllcnNGb3JJdGVtUHJvdmlkZXJdIGNvbnRhaW5zT2JqZWN0OihO
U1N0cmluZyAqKXR5cGVJZGVudGlmaWVyXSkKICAgICAgICAgICAgIHJldHVybiBsb2FkYWJsZUNs
YXNzOwogICAgIH0KQEAgLTU2NSw3ICs1NjIsNyBAQCBzdGF0aWMgQ2xhc3MgY2xhc3NGb3JUeXBl
SWRlbnRpZmllcihOU1N0cmluZyAqdHlwZUlkZW50aWZpZXIsIE5TU3RyaW5nIComb3V0VHlwZQog
ICAgIGF1dG8gdmFsdWVzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7
CiAgICAgUmV0YWluUHRyPFdlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQ+IHJldGFpbmVkU2VsZiA9
IHNlbGY7CiAgICAgW2l0ZW1TZXQgZW51bWVyYXRlSW5kZXhlc1VzaW5nQmxvY2s6W3JldGFpbmVk
U2VsZiwgcGFzdGVib2FyZFR5cGUsIHZhbHVlc10gKE5TVUludGVnZXIgaW5kZXgsIEJPT0wgKikg
ewotICAgICAgICBVSUl0ZW1Qcm92aWRlciAqcHJvdmlkZXIgPSBbcmV0YWluZWRTZWxmIGl0ZW1Q
cm92aWRlckF0SW5kZXg6aW5kZXhdOworICAgICAgICBOU0l0ZW1Qcm92aWRlciAqcHJvdmlkZXIg
PSBbcmV0YWluZWRTZWxmIGl0ZW1Qcm92aWRlckF0SW5kZXg6aW5kZXhdOwogICAgICAgICBpZiAo
IXByb3ZpZGVyKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC02NDUsNyArNjQyLDcgQEAgc3Rh
dGljIEJPT0wgdHlwZUNvbmZvcm1zVG9UeXBlcyhOU1N0cmluZyAqdHlwZSwgTlNBcnJheSAqY29u
Zm9ybXNUb1R5cGVzKQogewogICAgIE5TQXJyYXkgKnN1cHBvcnRlZEZpbGVUeXBlcyA9IFBhc3Rl
Ym9hcmQ6OnN1cHBvcnRlZEZpbGVVcGxvYWRQYXN0ZWJvYXJkVHlwZXMoKTsKICAgICBOU0ludGVn
ZXIgbnVtYmVyT2ZGaWxlcyA9IDA7Ci0gICAgZm9yIChVSUl0ZW1Qcm92aWRlciAqaXRlbVByb3Zp
ZGVyIGluIF9pdGVtUHJvdmlkZXJzLmdldCgpKSB7CisgICAgZm9yIChOU0l0ZW1Qcm92aWRlciAq
aXRlbVByb3ZpZGVyIGluIF9pdGVtUHJvdmlkZXJzLmdldCgpKSB7CiAgICAgICAgIGlmIChpdGVt
UHJvdmlkZXIucHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGUgPT0gVUlQcmVmZXJyZWRQcmVzZW50
YXRpb25TdHlsZUlubGluZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCkBAIC03OTMsNyArNzkw
LDcgQEAgc3RhdGljIE5TVVJMICpsaW5rVGVtcG9yYXJ5SXRlbVByb3ZpZGVyRmlsZXNUb0Ryb3BT
dGFnaW5nRGlyZWN0b3J5KE5TVVJMICp1cmwsIE4KICAgICBkaXNwYXRjaF9ncm91cF9ub3RpZnko
ZmlsZUxvYWRpbmdHcm91cC5nZXQoKSwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgaXRlbUxv
YWRDb21wbGV0aW9uKTsKIH0KIAotLSAoVUlJdGVtUHJvdmlkZXIgKilpdGVtUHJvdmlkZXJBdElu
ZGV4OihOU1VJbnRlZ2VyKWluZGV4CistIChOU0l0ZW1Qcm92aWRlciAqKWl0ZW1Qcm92aWRlckF0
SW5kZXg6KE5TVUludGVnZXIpaW5kZXgKIHsKICAgICByZXR1cm4gaW5kZXggPCBbX2l0ZW1Qcm92
aWRlcnMgY291bnRdID8gW19pdGVtUHJvdmlkZXJzIG9iamVjdEF0SW5kZXg6aW5kZXhdIDogbmls
OwogfQpAQCAtODEzLDcgKzgxMCw3IEBAIHN0YXRpYyBOU1VSTCAqbGlua1RlbXBvcmFyeUl0ZW1Q
cm92aWRlckZpbGVzVG9Ecm9wU3RhZ2luZ0RpcmVjdG9yeShOU1VSTCAqdXJsLCBOCiAgICAgX3Bl
bmRpbmdPcGVyYXRpb25Db3VudC0tOwogfQogCi0tICh2b2lkKWVudW1lcmF0ZUl0ZW1Qcm92aWRl
cnNXaXRoQmxvY2s6KHZvaWQgKF4pKFVJSXRlbVByb3ZpZGVyICppdGVtUHJvdmlkZXIsIE5TVUlu
dGVnZXIgaW5kZXgsIEJPT0wgKnN0b3ApKWJsb2NrCistICh2b2lkKWVudW1lcmF0ZUl0ZW1Qcm92
aWRlcnNXaXRoQmxvY2s6KHZvaWQgKF4pKE5TSXRlbVByb3ZpZGVyICppdGVtUHJvdmlkZXIsIE5T
VUludGVnZXIgaW5kZXgsIEJPT0wgKnN0b3ApKWJsb2NrCiB7CiAgICAgW19pdGVtUHJvdmlkZXJz
IGVudW1lcmF0ZU9iamVjdHNVc2luZ0Jsb2NrOmJsb2NrXTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbQppbmRleCBlMGVmZTdiMDhhOTJiMTlhMTNkMzM2Njhh
YzNjYWYxM2E1NjI2NTI2Li4xNWFjMDYxNjIzMWUyZTFiOWE5N2U3NTBjN2Y3OWQzMzFiOGE2ZTUw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1tCkBAIC0yNzQs
NyArMjc0LDcgQEAgYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNVUkwoRmlsZW5hbWVDb252ZXJzaW9u
UG9saWN5IGZpbGVuYW1lUG9saWN5KSBjb25zdAogCiAgICAgYXV0byB1cmxTdHJpbmcgPSBwbGF0
Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnN0cmluZ0ZvclR5cGUodXJs
UGFzdGVib2FyZFR5cGUoKSwgbV9wYXN0ZWJvYXJkTmFtZSk7CiAgICAgaWYgKHVybFN0cmluZy5p
c0VtcHR5KCkpIHsKLSAgICAgICAgLy8gT24gaU9TLCB3ZSBkb24ndCBnZXQgYWNjZXNzIHRvIHRo
ZSBjb250ZW50cyBvZiBVSUl0ZW1Qcm92aWRlcnMgdW50aWwgd2UgcGVyZm9ybSB0aGUgZHJhZyBv
cGVyYXRpb24uCisgICAgICAgIC8vIE9uIGlPUywgd2UgZG9uJ3QgZ2V0IGFjY2VzcyB0byB0aGUg
Y29udGVudHMgb2YgTlNJdGVtUHJvdmlkZXJzIHVudGlsIHdlIHBlcmZvcm0gdGhlIGRyYWcgb3Bl
cmF0aW9uLgogICAgICAgICAvLyBUaHVzLCB3ZSBjb25zaWRlciBEcmFnRGF0YSB0byBjb250YWlu
IGFuIFVSTCBpZiBpdCBjb250YWlucyB0aGUgYHB1YmxpYy51cmxgIFVUSSB0eXBlLiBMYXRlciBk
b3duIHRoZQogICAgICAgICAvLyByb2FkLCB3aGVuIHdlIHBlcmZvcm0gdGhlIGRyYWcgb3BlcmF0
aW9uLCB3ZSBjYW4gdGhlbiBjaGVjayBpZiB0aGUgVVJMJ3MgcHJvdG9jb2wgaXMgaHR0cCBvciBo
dHRwcywKICAgICAgICAgLy8gYW5kIGlmIGl0IGlzbid0LCB3ZSBiYWlsIG91dCBvZiBwYWdlIG5h
dmlnYXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvVUlL
aXRTUEkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oCmluZGV4
IDllZWZiOTc4NGZiZTY4OWIwOTBhNWIwMWZjZWVjZTcwZDY1NDEzMmQuLjI3ZjI1YzE1MjljYmYy
YTY1MjFjNjJjMjk2MTE2NzNiZTQ0ZWUxMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3Bp
L2lvcy9VSUtpdFNQSS5oCkBAIC05MSw3ICs5MSw2IEBACiAKICNpZiBFTkFCTEUoRFJBR19TVVBQ
T1JUKQogI2ltcG9ydCA8VUlLaXQvTlNJdGVtUHJvdmlkZXIrVUlLaXRBZGRpdGlvbnNfUHJpdmF0
ZS5oPgotI2ltcG9ydCA8VUlLaXQvVUlJdGVtUHJvdmlkZXJfUHJpdmF0ZS5oPgogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQpAQCAtOTM1LDkgKzkzNCw2IEBAIHR5cGVkZWYgZW51
bSB7CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogCi1AaW50ZXJmYWNlIFVJSXRlbVByb3Zp
ZGVyIDogTlNJdGVtUHJvdmlkZXIKLUBlbmQKLQogV1RGX0VYVEVSTl9DX0JFR0lOCiAKIE5TVGlt
ZUludGVydmFsIF9VSURyYWdJbnRlcmFjdGlvbkRlZmF1bHRMaWZ0RGVsYXkodm9pZCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5tbQppbmRleCAyMWQzMTc3MDA2YjFjNmRmMDE2YmFiZjNlMGMzNmE3Mzg4NDJhMDkyLi43
NjhhNDI2YmVhNjhlM2I1ZjQ1M2JhNDU4NDA2ZDgyNmY1M2FiYjQ4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0K
QEAgLTUzMDQsMTggKzUzMDQsMTcgQEAgc3RhdGljIFVJRHJvcE9wZXJhdGlvbiBkcm9wT3BlcmF0
aW9uRm9yV2ViQ29yZURyYWdPcGVyYXRpb24oRHJhZ09wZXJhdGlvbiBvcGVyYXQKICAgICBfZHJh
Z0Ryb3BJbnRlcmFjdGlvblN0YXRlID0geyB9OwogfQogCi1zdGF0aWMgTlNBcnJheTxVSUl0ZW1Q
cm92aWRlciAqPiAqZXh0cmFjdEl0ZW1Qcm92aWRlcnNGcm9tRHJhZ0l0ZW1zKE5TQXJyYXk8VUlE
cmFnSXRlbSAqPiAqZHJhZ0l0ZW1zKQorc3RhdGljIE5TQXJyYXk8TlNJdGVtUHJvdmlkZXIgKj4g
KmV4dHJhY3RJdGVtUHJvdmlkZXJzRnJvbURyYWdJdGVtcyhOU0FycmF5PFVJRHJhZ0l0ZW0gKj4g
KmRyYWdJdGVtcykKIHsKLSAgICBOU011dGFibGVBcnJheTxVSUl0ZW1Qcm92aWRlciAqPiAqcHJv
dmlkZXJzID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKKyAgICBOU011dGFibGVBcnJheTxOU0l0
ZW1Qcm92aWRlciAqPiAqcHJvdmlkZXJzID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKICAgICBm
b3IgKFVJRHJhZ0l0ZW0gKml0ZW0gaW4gZHJhZ0l0ZW1zKSB7Ci0gICAgICAgIFJldGFpblB0cjxV
SUl0ZW1Qcm92aWRlcj4gcHJvdmlkZXIgPSBpdGVtLml0ZW1Qcm92aWRlcjsKLSAgICAgICAgaWYg
KHByb3ZpZGVyKQorICAgICAgICBpZiAoTlNJdGVtUHJvdmlkZXIgKnByb3ZpZGVyID0gaXRlbS5p
dGVtUHJvdmlkZXIpCiAgICAgICAgICAgICBbcHJvdmlkZXJzIGFkZE9iamVjdDpwcm92aWRlci5n
ZXQoKV07CiAgICAgfQogICAgIHJldHVybiBwcm92aWRlcnM7CiB9CiAKLXN0YXRpYyBOU0FycmF5
PFVJSXRlbVByb3ZpZGVyICo+ICpleHRyYWN0SXRlbVByb3ZpZGVyc0Zyb21Ecm9wU2Vzc2lvbihp
ZCA8VUlEcm9wU2Vzc2lvbj4gc2Vzc2lvbikKK3N0YXRpYyBOU0FycmF5PE5TSXRlbVByb3ZpZGVy
ICo+ICpleHRyYWN0SXRlbVByb3ZpZGVyc0Zyb21Ecm9wU2Vzc2lvbihpZCA8VUlEcm9wU2Vzc2lv
bj4gc2Vzc2lvbikKIHsKICAgICByZXR1cm4gZXh0cmFjdEl0ZW1Qcm92aWRlcnNGcm9tRHJhZ0l0
ZW1zKHNlc3Npb24uaXRlbXMpOwogfQpAQCAtNTQ5MSw3ICs1NDkwLDcgQEAgc3RhdGljIE5TQXJy
YXk8VUlJdGVtUHJvdmlkZXIgKj4gKmV4dHJhY3RJdGVtUHJvdmlkZXJzRnJvbURyb3BTZXNzaW9u
KGlkIDxVSURyb3AKIAogLSAoTlNBcnJheTxVSURyYWdJdGVtICo+ICopX2l0ZW1zRm9yQmVnaW5u
aW5nT3JBZGRpbmdUb1Nlc3Npb25XaXRoUmVnaXN0cmF0aW9uTGlzdDooV2ViSXRlbVByb3ZpZGVy
UmVnaXN0cmF0aW9uSW5mb0xpc3QgKilyZWdpc3RyYXRpb25MaXN0IHN0YWdlZERyYWdTb3VyY2U6
KGNvbnN0IERyYWdTb3VyY2VTdGF0ZSYpc3RhZ2VkRHJhZ1NvdXJjZQogewotICAgIFVJSXRlbVBy
b3ZpZGVyICpkZWZhdWx0SXRlbVByb3ZpZGVyID0gcmVnaXN0cmF0aW9uTGlzdC5pdGVtUHJvdmlk
ZXI7CisgICAgTlNJdGVtUHJvdmlkZXIgKmRlZmF1bHRJdGVtUHJvdmlkZXIgPSByZWdpc3RyYXRp
b25MaXN0Lml0ZW1Qcm92aWRlcjsKICAgICBpZiAoIWRlZmF1bHRJdGVtUHJvdmlkZXIpCiAgICAg
ICAgIHJldHVybiBAWyBdOwogCkBAIC01NTExLDcgKzU1MTAsNyBAQCBzdGF0aWMgTlNBcnJheTxV
SUl0ZW1Qcm92aWRlciAqPiAqZXh0cmFjdEl0ZW1Qcm92aWRlcnNGcm9tRHJvcFNlc3Npb24oaWQg
PFVJRHJvcAogICAgICAgICBhZGp1c3RlZEl0ZW1Qcm92aWRlcnMgPSBAWyBkZWZhdWx0SXRlbVBy
b3ZpZGVyIF07CiAKICAgICBOU011dGFibGVBcnJheSAqZHJhZ0l0ZW1zID0gW05TTXV0YWJsZUFy
cmF5IGFycmF5V2l0aENhcGFjaXR5OmFkanVzdGVkSXRlbVByb3ZpZGVycy5jb3VudF07Ci0gICAg
Zm9yIChVSUl0ZW1Qcm92aWRlciAqaXRlbVByb3ZpZGVyIGluIGFkanVzdGVkSXRlbVByb3ZpZGVy
cykgeworICAgIGZvciAoTlNJdGVtUHJvdmlkZXIgKml0ZW1Qcm92aWRlciBpbiBhZGp1c3RlZEl0
ZW1Qcm92aWRlcnMpIHsKICAgICAgICAgYXV0byBpdGVtID0gYWRvcHROUyhbW1VJRHJhZ0l0ZW0g
YWxsb2NdIGluaXRXaXRoSXRlbVByb3ZpZGVyOml0ZW1Qcm92aWRlcl0pOwogICAgICAgICBbaXRl
bSBfc2V0UHJpdmF0ZUxvY2FsQ29udGV4dDpAKHN0YWdlZERyYWdTb3VyY2UuaXRlbUlkZW50aWZp
ZXIpXTsKICAgICAgICAgW2RyYWdJdGVtcyBhZGRPYmplY3Q6aXRlbS5hdXRvcmVsZWFzZSgpXTsK
QEAgLTU3NzUsNyArNTc3NCw3IEBAIHN0YXRpYyBOU0FycmF5PFVJSXRlbVByb3ZpZGVyICo+ICpl
eHRyYWN0SXRlbVByb3ZpZGVyc0Zyb21Ecm9wU2Vzc2lvbihpZCA8VUlEcm9wCiAKIC0gKHZvaWQp
ZHJvcEludGVyYWN0aW9uOihVSURyb3BJbnRlcmFjdGlvbiAqKWludGVyYWN0aW9uIHBlcmZvcm1E
cm9wOihpZCA8VUlEcm9wU2Vzc2lvbj4pc2Vzc2lvbgogewotICAgIE5TQXJyYXkgPFVJSXRlbVBy
b3ZpZGVyICo+ICppdGVtUHJvdmlkZXJzID0gZXh0cmFjdEl0ZW1Qcm92aWRlcnNGcm9tRHJvcFNl
c3Npb24oc2Vzc2lvbik7CisgICAgTlNBcnJheSA8TlNJdGVtUHJvdmlkZXIgKj4gKml0ZW1Qcm92
aWRlcnMgPSBleHRyYWN0SXRlbVByb3ZpZGVyc0Zyb21Ecm9wU2Vzc2lvbihzZXNzaW9uKTsKICAg
ICBpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4gdWlEZWxlZ2F0ZSA9IHNlbGYud2ViVmlld1VJRGVs
ZWdhdGU7CiAgICAgaWYgKFt1aURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Io
X3dlYlZpZXc6cGVyZm9ybURhdGFJbnRlcmFjdGlvbk9wZXJhdGlvbldpdGhJdGVtUHJvdmlkZXJz
OildKSB7CiAgICAgICAgIGlmIChbdWlEZWxlZ2F0ZSBfd2ViVmlldzpfd2ViVmlldyBwZXJmb3Jt
RGF0YUludGVyYWN0aW9uT3BlcmF0aW9uV2l0aEl0ZW1Qcm92aWRlcnM6aXRlbVByb3ZpZGVyc10p
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOTA2
ZDQ0OGE1NTQxZjEyNGNiNmIwNzBhMmRmMWQ3OTlkMDE2ZDE5Ni4uYzg4MTlkYTVmNDE5NWUyOTVh
NjhiZDExNTgwMGM3YzUzYWI4M2Q3MSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDE4LTExLTE3ICBXZW5zb24gSHNp
ZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIFJlbW92ZSBhbGwg
dXNhZ2VzIG9mIFVJSXRlbVByb3ZpZGVyLCBVSUl0ZW1Qcm92aWRlclJlYWRpbmcsIGFuZCByZWxh
dGVkIGNsYXNzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5MTgxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFJlcGxhY2UgVUlJdGVtUHJvdmlkZXIgKGFuZCByZWxhdGVkIGNsYXNzZXMpIHdpdGggTlNJ
dGVtUHJvdmlkZXIuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1dLQXR0YWNobWVudFRlc3RzLm1tOgorICAgICAgICAocGxhdGZvcm1Db3B5UE5HKToKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EcmFnQW5kRHJvcFRlc3RzSU9TLm1tOgorICAg
ICAgICAoLVtOU0l0ZW1Qcm92aWRlciByZWdpc3RlckRhdGFSZXByZXNlbnRhdGlvbkZvclR5cGVJ
ZGVudGlmaWVyOndpdGhEYXRhOl0pOgorCisgICAgICAgIFJlcGxhY2UgdXNhZ2VzIG9mIHRoaXMg
ZGVwcmVjYXRlZCBtZXRob2Qgd2l0aCBgLXJlZ2lzdGVyRGF0YVJlcHJlc2VudGF0aW9uRm9yVHlw
ZUlkZW50aWZpZXI6dmlzaWJpbGl0eTpsb2FkSGFuZGxlcjpgLgorCisgICAgICAgIChjaGVja0Vz
dGltYXRlZFNpemUpOgorICAgICAgICAoY2hlY2tTdWdnZXN0ZWROYW1lQW5kRXN0aW1hdGVkU2l6
ZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKC1bVUlJdGVtUHJv
dmlkZXIgcmVnaXN0ZXJEYXRhUmVwcmVzZW50YXRpb25Gb3JUeXBlSWRlbnRpZmllcjp3aXRoRGF0
YTpdKTogRGVsZXRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL0RyYWdBbmREcm9w
U2ltdWxhdG9yLmg6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9pb3MvRHJhZ0FuZERyb3BTaW11
bGF0b3JJT1MubW06CisgICAgICAgICgtW01vY2tEcmFnRHJvcFNlc3Npb24gY2FuTG9hZE9iamVj
dHNPZkNsYXNzOl0pOgorICAgICAgICAoLVtNb2NrRHJhZ0Ryb3BTZXNzaW9uIGNhbkxvYWRPYmpl
Y3RzT2ZDbGFzc2VzOl0pOgorICAgICAgICAoLVtNb2NrRHJvcFNlc3Npb24gaW5pdFdpdGhQcm92
aWRlcnM6bG9jYXRpb246d2luZG93OmFsbG93TW92ZTpdKToKKyAgICAgICAgKC1bTW9ja0Ryb3BT
ZXNzaW9uIGNhbkNyZWF0ZUl0ZW1zT2ZDbGFzczpdKToKKyAgICAgICAgKC1bRHJhZ0FuZERyb3BT
aW11bGF0b3IgX2FkdmFuY2VQcm9ncmVzc10pOgorICAgICAgICAoLVtEcmFnQW5kRHJvcFNpbXVs
YXRvciBfd2ViVmlldzpkYXRhSW50ZXJhY3Rpb25PcGVyYXRpb25XYXNIYW5kbGVkOmZvclNlc3Np
b246aXRlbVByb3ZpZGVyczpdKToKKyAgICAgICAgKC1bRHJhZ0FuZERyb3BTaW11bGF0b3IgX3dl
YlZpZXc6YWRqdXN0ZWREYXRhSW50ZXJhY3Rpb25JdGVtUHJvdmlkZXJzRm9ySXRlbVByb3ZpZGVy
OnJlcHJlc2VudGluZ09iamVjdHM6YWRkaXRpb25hbERhdGE6XSk6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9pb3MvVUlLaXRTUEkuaDoKKwogMjAxOC0xMS0xNiAgV2Vuc29uIEhzaWVoICA8d2Vu
c29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIFtXZWJLaXQyXSBBZGQgc3Vw
cG9ydCBmb3IgcmVwbGFjaW5nIGZpbmQtaW4tcGFnZSB0ZXh0IG1hdGNoZXMKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMu
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVudFRl
c3RzLm1tCmluZGV4IDhmMTNiNzhmYjVlZDE5MWNjYTMxZDBiNWI0MWNlNDJhZDc2YTRkZWQuLmUy
Y2U3MmE0MzUzMzNmZGUwNzEwMmVhZjdkOGMwMDJkYTA5NGQ3YzUgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMubW0KKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0
cy5tbQpAQCAtNTMyLDcgKzUzMiw3IEBAIHZvaWQgcGxhdGZvcm1Db3B5UE5HKCkKICAgICBbcGFz
dGVib2FyZCBzZXREYXRhOnRlc3RJbWFnZURhdGEoKSBmb3JUeXBlOk5TUGFzdGVib2FyZFR5cGVQ
TkddOwogI2VsaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBVSVBhc3RlYm9hcmQgKnBhc3Rl
Ym9hcmQgPSBbVUlQYXN0ZWJvYXJkIGdlbmVyYWxQYXN0ZWJvYXJkXTsKLSAgICBhdXRvIGl0ZW0g
PSBhZG9wdE5TKFtbVUlJdGVtUHJvdmlkZXIgYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIGl0ZW0g
PSBhZG9wdE5TKFtbTlNJdGVtUHJvdmlkZXIgYWxsb2NdIGluaXRdKTsKICAgICBbaXRlbSBzZXRQ
cmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZTpVSVByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlQXR0
YWNobWVudF07CiAgICAgW2l0ZW0gcmVnaXN0ZXJEYXRhOnRlc3RJbWFnZURhdGEoKSB0eXBlOihf
X2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVQTkddOwogICAgIHBhc3RlYm9hcmQuaXRlbVByb3Zp
ZGVycyA9IEBbIGl0ZW0uZ2V0KCkgXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvaW9zL0RyYWdBbmREcm9wVGVzdHNJT1MubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL2lvcy9EcmFnQW5kRHJvcFRlc3RzSU9TLm1tCmluZGV4IGI5MDNlZGM0NWEzYmI2NGI5MGFk
MmEyN2YwYzczNzQzNzBlNDU2OTguLmI4NzljMGZkZDE2ZWU5MTM0MWVkMjY1YjhlMjc4YmYwYmVi
OWIxM2UgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0RyYWdBbmRE
cm9wVGVzdHNJT1MubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRHJhZ0Fu
ZERyb3BUZXN0c0lPUy5tbQpAQCAtNDUsMTggKzQ1LDE3IEBACiAKIHR5cGVkZWYgdm9pZCAoXkZp
bGVMb2FkQ29tcGxldGlvbkJsb2NrKShOU1VSTCAqLCBCT09MLCBOU0Vycm9yICopOwogdHlwZWRl
ZiB2b2lkICheRGF0YUxvYWRDb21wbGV0aW9uQmxvY2spKE5TRGF0YSAqLCBOU0Vycm9yICopOwot
dHlwZWRlZiB2b2lkICheVUlJdGVtUHJvdmlkZXJEYXRhTG9hZENvbXBsZXRpb25CbG9jaykoTlNE
YXRhICosIE5TRXJyb3IgKik7Cit0eXBlZGVmIHZvaWQgKF5OU0l0ZW1Qcm92aWRlckRhdGFMb2Fk
Q29tcGxldGlvbkJsb2NrKShOU0RhdGEgKiwgTlNFcnJvciAqKTsKIAogI2lmICFVU0UoQVBQTEVf
SU5URVJOQUxfU0RLKQogCi1AaW50ZXJmYWNlIFVJSXRlbVByb3ZpZGVyUmVwcmVzZW50YXRpb25P
cHRpb25zIDogTlNPYmplY3QKK0BpbnRlcmZhY2UgTlNJdGVtUHJvdmlkZXJSZXByZXNlbnRhdGlv
bk9wdGlvbnMgOiBOU09iamVjdAogQGVuZAogCiAjZW5kaWYKIAotQGludGVyZmFjZSBVSUl0ZW1Q
cm92aWRlcigpCi0rIChVSUl0ZW1Qcm92aWRlciAqKWl0ZW1Qcm92aWRlcldpdGhVUkw6KE5TVVJM
ICopdXJsIHRpdGxlOihOU1N0cmluZyAqKXRpdGxlOwotLSAodm9pZCkgcmVnaXN0ZXJEYXRhUmVw
cmVzZW50YXRpb25Gb3JUeXBlSWRlbnRpZmllcjooTlNTdHJpbmcgKil0eXBlSWRlbnRpZmllciBv
cHRpb25zOihVSUl0ZW1Qcm92aWRlclJlcHJlc2VudGF0aW9uT3B0aW9ucyopb3B0aW9ucyBsb2Fk
SGFuZGxlcjooTlNQcm9ncmVzcyAqICheKSh2b2lkICheVUlJdGVtUHJvdmlkZXJEYXRhTG9hZENv
bXBsZXRpb25CbG9jaykoTlNEYXRhICppdGVtLCBOU0Vycm9yICplcnJvcikpKSBsb2FkSGFuZGxl
cjsKK0BpbnRlcmZhY2UgTlNJdGVtUHJvdmlkZXIgKCkKKysgKE5TSXRlbVByb3ZpZGVyICopaXRl
bVByb3ZpZGVyV2l0aFVSTDooTlNVUkwgKil1cmwgdGl0bGU6KE5TU3RyaW5nICopdGl0bGU7CiBA
ZW5kCiAKIHN0YXRpYyBOU1N0cmluZyAqSW5qZWN0ZWRCdW5kbGVQYXN0ZWJvYXJkRGF0YVR5cGUg
PSBAIm9yZy53ZWJraXQuZGF0YSI7CkBAIC03MiwxMiArNzEsMTIgQEAgc3RhdGljIE5TRGF0YSAq
dGVzdFpJUEFyY2hpdmUoKQogICAgIHJldHVybiBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZlVS
TDp6aXBGaWxlVVJMXTsKIH0KIAotQGltcGxlbWVudGF0aW9uIFVJSXRlbVByb3ZpZGVyIChEcmFn
QW5kRHJvcFRlc3RzKQorQGltcGxlbWVudGF0aW9uIE5TSXRlbVByb3ZpZGVyIChEcmFnQW5kRHJv
cFRlc3RzKQogCiAtICh2b2lkKXJlZ2lzdGVyRGF0YVJlcHJlc2VudGF0aW9uRm9yVHlwZUlkZW50
aWZpZXI6KE5TU3RyaW5nICopdHlwZUlkZW50aWZpZXIgd2l0aERhdGE6KE5TRGF0YSAqKWRhdGEK
IHsKICAgICBSZXRhaW5QdHI8TlNEYXRhPiByZXRhaW5lZERhdGEgPSBkYXRhOwotICAgIFtzZWxm
IHJlZ2lzdGVyRGF0YVJlcHJlc2VudGF0aW9uRm9yVHlwZUlkZW50aWZpZXI6dHlwZUlkZW50aWZp
ZXIgdmlzaWJpbGl0eTpVSUl0ZW1Qcm92aWRlclJlcHJlc2VudGF0aW9uT3B0aW9uc1Zpc2liaWxp
dHlBbGwgbG9hZEhhbmRsZXI6IFtyZXRhaW5lZERhdGFdIChEYXRhTG9hZENvbXBsZXRpb25CbG9j
ayBibG9jaykgLT4gTlNQcm9ncmVzcyAqIHsKKyAgICBbc2VsZiByZWdpc3RlckRhdGFSZXByZXNl
bnRhdGlvbkZvclR5cGVJZGVudGlmaWVyOnR5cGVJZGVudGlmaWVyIHZpc2liaWxpdHk6TlNJdGVt
UHJvdmlkZXJSZXByZXNlbnRhdGlvblZpc2liaWxpdHlBbGwgbG9hZEhhbmRsZXI6IFtyZXRhaW5l
ZERhdGFdIChEYXRhTG9hZENvbXBsZXRpb25CbG9jayBibG9jaykgLT4gTlNQcm9ncmVzcyAqIHsK
ICAgICAgICAgYmxvY2socmV0YWluZWREYXRhLmdldCgpLCBuaWwpOwogICAgICAgICByZXR1cm4g
W05TUHJvZ3Jlc3MgZGlzY3JldGVQcm9ncmVzc1dpdGhUb3RhbFVuaXRDb3VudDoxMDBdOwogICAg
IH1dOwpAQCAtMTQ2LDE0ICsxNDUsMTQgQEAgc3RhdGljIHZvaWQgY2hlY2tUeXBlSWRlbnRpZmll
cklzUmVnaXN0ZXJlZEF0SW5kZXgoRHJhZ0FuZERyb3BTaW11bGF0b3IgKnNpbXVsYXQKIAogc3Rh
dGljIHZvaWQgY2hlY2tFc3RpbWF0ZWRTaXplKERyYWdBbmREcm9wU2ltdWxhdG9yICpzaW11bGF0
b3IsIENHU2l6ZSBlc3RpbWF0ZWRTaXplKQogewotICAgIFVJSXRlbVByb3ZpZGVyICpzb3VyY2VJ
dGVtUHJvdmlkZXIgPSBbc2ltdWxhdG9yIHNvdXJjZUl0ZW1Qcm92aWRlcnNdLmZpcnN0T2JqZWN0
OworICAgIE5TSXRlbVByb3ZpZGVyICpzb3VyY2VJdGVtUHJvdmlkZXIgPSBbc2ltdWxhdG9yIHNv
dXJjZUl0ZW1Qcm92aWRlcnNdLmZpcnN0T2JqZWN0OwogICAgIEVYUEVDVF9FUShlc3RpbWF0ZWRT
aXplLndpZHRoLCBzb3VyY2VJdGVtUHJvdmlkZXIucHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZS53
aWR0aCk7CiAgICAgRVhQRUNUX0VRKGVzdGltYXRlZFNpemUuaGVpZ2h0LCBzb3VyY2VJdGVtUHJv
dmlkZXIucHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZS5oZWlnaHQpOwogfQogCiBzdGF0aWMgdm9p
ZCBjaGVja1N1Z2dlc3RlZE5hbWVBbmRFc3RpbWF0ZWRTaXplKERyYWdBbmREcm9wU2ltdWxhdG9y
ICpzaW11bGF0b3IsIE5TU3RyaW5nICpzdWdnZXN0ZWROYW1lLCBDR1NpemUgZXN0aW1hdGVkU2l6
ZSkKIHsKLSAgICBVSUl0ZW1Qcm92aWRlciAqc291cmNlSXRlbVByb3ZpZGVyID0gW3NpbXVsYXRv
ciBzb3VyY2VJdGVtUHJvdmlkZXJzXS5maXJzdE9iamVjdDsKKyAgICBOU0l0ZW1Qcm92aWRlciAq
c291cmNlSXRlbVByb3ZpZGVyID0gW3NpbXVsYXRvciBzb3VyY2VJdGVtUHJvdmlkZXJzXS5maXJz
dE9iamVjdDsKICAgICBFWFBFQ1RfV0tfU1RSRVEoc3VnZ2VzdGVkTmFtZS5VVEY4U3RyaW5nLCBz
b3VyY2VJdGVtUHJvdmlkZXIuc3VnZ2VzdGVkTmFtZS5VVEY4U3RyaW5nKTsKICAgICBFWFBFQ1Rf
RVEoZXN0aW1hdGVkU2l6ZS53aWR0aCwgc291cmNlSXRlbVByb3ZpZGVyLnByZWZlcnJlZFByZXNl
bnRhdGlvblNpemUud2lkdGgpOwogICAgIEVYUEVDVF9FUShlc3RpbWF0ZWRTaXplLmhlaWdodCwg
c291cmNlSXRlbVByb3ZpZGVyLnByZWZlcnJlZFByZXNlbnRhdGlvblNpemUuaGVpZ2h0KTsKQEAg
LTQ5NCw3ICs0OTMsNyBAQCBURVNUKERyYWdBbmREcm9wVGVzdHMsIExpbmtUb0lucHV0KQogICAg
IEVYUEVDVF9XS19TVFJFUSgiaHR0cHM6Ly93d3cuYXBwbGUuY29tLyIsIFt3ZWJWaWV3IGVkaXRv
clZhbHVlXS5VVEY4U3RyaW5nKTsKIAogICAgIF9fYmxvY2sgYm9vbCBkb25lTG9hZGluZ1VSTCA9
IGZhbHNlOwotICAgIFVJSXRlbVByb3ZpZGVyICpzb3VyY2VJdGVtUHJvdmlkZXIgPSBbc2ltdWxh
dG9yIHNvdXJjZUl0ZW1Qcm92aWRlcnNdLmZpcnN0T2JqZWN0OworICAgIE5TSXRlbVByb3ZpZGVy
ICpzb3VyY2VJdGVtUHJvdmlkZXIgPSBbc2ltdWxhdG9yIHNvdXJjZUl0ZW1Qcm92aWRlcnNdLmZp
cnN0T2JqZWN0OwogICAgIFtzb3VyY2VJdGVtUHJvdmlkZXIgbG9hZE9iamVjdE9mQ2xhc3M6W05T
VVJMIGNsYXNzXSBjb21wbGV0aW9uSGFuZGxlcjpeKGlkIG9iamVjdCwgTlNFcnJvciAqZXJyb3Ip
IHsKICAgICAgICAgTlNVUkwgKnVybCA9IG9iamVjdDsKICAgICAgICAgRVhQRUNUX1dLX1NUUkVR
KCJIZWxsbyB3b3JsZCIsIHVybC5fdGl0bGUuVVRGOFN0cmluZyA/OiAiIik7CkBAIC01OTksOCAr
NTk4LDggQEAgVEVTVChEcmFnQW5kRHJvcFRlc3RzLCBFeHRlcm5hbFNvdXJjZVBsYWluVGV4dFRv
SUZyYW1lKQogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApXSk7CiAgICAgW3dlYlZp
ZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAiY29udGVudGVkaXRhYmxlLWluLWlm
cmFtZSJdOwogCi0gICAgYXV0byBpdGVtUHJvdmlkZXIgPSBhZG9wdE5TKFtbVUlJdGVtUHJvdmlk
ZXIgYWxsb2NdIGluaXRdKTsKLSAgICBbaXRlbVByb3ZpZGVyIHJlZ2lzdGVyT2JqZWN0OkAiSGVs
bG8gd29ybGQiIHZpc2liaWxpdHk6VUlJdGVtUHJvdmlkZXJSZXByZXNlbnRhdGlvbk9wdGlvbnNW
aXNpYmlsaXR5QWxsXTsKKyAgICBhdXRvIGl0ZW1Qcm92aWRlciA9IGFkb3B0TlMoW1tOU0l0ZW1Q
cm92aWRlciBhbGxvY10gaW5pdF0pOworICAgIFtpdGVtUHJvdmlkZXIgcmVnaXN0ZXJPYmplY3Q6
QCJIZWxsbyB3b3JsZCIgdmlzaWJpbGl0eTpOU0l0ZW1Qcm92aWRlclJlcHJlc2VudGF0aW9uVmlz
aWJpbGl0eUFsbF07CiAKICAgICBhdXRvIHNpbXVsYXRvciA9IGFkb3B0TlMoW1tEcmFnQW5kRHJv
cFNpbXVsYXRvciBhbGxvY10gaW5pdFdpdGhXZWJWaWV3OndlYlZpZXcuZ2V0KCldKTsKICAgICBb
c2ltdWxhdG9yIHNldEV4dGVybmFsSXRlbVByb3ZpZGVyczpAWyBpdGVtUHJvdmlkZXIuZ2V0KCkg
XV07CkBAIC02MTgsNyArNjE3LDcgQEAgVEVTVChEcmFnQW5kRHJvcFRlc3RzLCBFeHRlcm5hbFNv
dXJjZUlubGluZVRleHRUb0ZpbGVJbnB1dCkKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtb
VGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwg
NTAwKV0pOwogICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAImZp
bGUtdXBsb2FkaW5nIl07CiAKLSAgICBhdXRvIHNpbXVsYXRlZEl0ZW1Qcm92aWRlciA9IGFkb3B0
TlMoW1tVSUl0ZW1Qcm92aWRlciBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gc2ltdWxhdGVkSXRl
bVByb3ZpZGVyID0gYWRvcHROUyhbW05TSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7CiAgICAg
W3NpbXVsYXRlZEl0ZW1Qcm92aWRlciBzZXRQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZTpVSVBy
ZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlSW5saW5lXTsKICAgICBbc2ltdWxhdGVkSXRlbVByb3Zp
ZGVyIHJlZ2lzdGVyT2JqZWN0OkAiVGhpcyBpdGVtIHByb3ZpZGVyIHJlcXVlc3RlZCBpbmxpbmUg
cHJlc2VudGF0aW9uIHN0eWxlLiIgdmlzaWJpbGl0eTpOU0l0ZW1Qcm92aWRlclJlcHJlc2VudGF0
aW9uVmlzaWJpbGl0eUFsbF07CiAKQEAgLTYzNCw3ICs2MzMsNyBAQCBURVNUKERyYWdBbmREcm9w
VGVzdHMsIEV4dGVybmFsU291cmNlSlNPTlRvRmlsZUlucHV0KQogICAgIGF1dG8gd2ViVmlldyA9
IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2Uo
MCwgMCwgMzIwLCA1MDApXSk7CiAgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFn
ZU5hbWVkOkAiZmlsZS11cGxvYWRpbmciXTsKIAotICAgIGF1dG8gc2ltdWxhdGVkSlNPTkl0ZW1Q
cm92aWRlciA9IGFkb3B0TlMoW1tVSUl0ZW1Qcm92aWRlciBhbGxvY10gaW5pdF0pOworICAgIGF1
dG8gc2ltdWxhdGVkSlNPTkl0ZW1Qcm92aWRlciA9IGFkb3B0TlMoW1tOU0l0ZW1Qcm92aWRlciBh
bGxvY10gaW5pdF0pOwogICAgIE5TRGF0YSAqanNvbkRhdGEgPSBbQCJ7IFwiZm9vXCI6IFwiYmFy
XCIsICBcImJhclwiOiBcImJhelwiIH0iIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0Vu
Y29kaW5nXTsKICAgICBbc2ltdWxhdGVkSlNPTkl0ZW1Qcm92aWRlciByZWdpc3RlckRhdGFSZXBy
ZXNlbnRhdGlvbkZvclR5cGVJZGVudGlmaWVyOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVK
U09OIHdpdGhEYXRhOmpzb25EYXRhXTsKIApAQCAtNjUwLDcgKzY0OSw3IEBAIFRFU1QoRHJhZ0Fu
ZERyb3BUZXN0cywgRXh0ZXJuYWxTb3VyY2VJbWFnZVRvRmlsZUlucHV0KQogICAgIGF1dG8gd2Vi
VmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVj
dE1ha2UoMCwgMCwgMzIwLCA1MDApXSk7CiAgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRU
ZXN0UGFnZU5hbWVkOkAiZmlsZS11cGxvYWRpbmciXTsKIAotICAgIGF1dG8gc2ltdWxhdGVkSW1h
Z2VJdGVtUHJvdmlkZXIgPSBhZG9wdE5TKFtbVUlJdGVtUHJvdmlkZXIgYWxsb2NdIGluaXRdKTsK
KyAgICBhdXRvIHNpbXVsYXRlZEltYWdlSXRlbVByb3ZpZGVyID0gYWRvcHROUyhbW05TSXRlbVBy
b3ZpZGVyIGFsbG9jXSBpbml0XSk7CiAgICAgTlNEYXRhICppbWFnZURhdGEgPSBVSUltYWdlSlBF
R1JlcHJlc2VudGF0aW9uKHRlc3RJY29uSW1hZ2UoKSwgMC41KTsKICAgICBbc2ltdWxhdGVkSW1h
Z2VJdGVtUHJvdmlkZXIgcmVnaXN0ZXJEYXRhUmVwcmVzZW50YXRpb25Gb3JUeXBlSWRlbnRpZmll
cjooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlSlBFRyB3aXRoRGF0YTppbWFnZURhdGFdOwog
CkBAIC02NjcsNyArNjY2LDcgQEAgVEVTVChEcmFnQW5kRHJvcFRlc3RzLCBFeHRlcm5hbFNvdXJj
ZUhUTUxUb1VwbG9hZEFyZWEpCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCldKTsK
ICAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJmaWxlLXVwbG9h
ZGluZyJdOwogCi0gICAgYXV0byBzaW11bGF0ZWRIVE1MSXRlbVByb3ZpZGVyID0gYWRvcHROUyhb
W1VJSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byBzaW11bGF0ZWRIVE1MSXRl
bVByb3ZpZGVyID0gYWRvcHROUyhbW05TSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7CiAgICAg
TlNEYXRhICpodG1sRGF0YSA9IFtAIjxib2R5IGNvbnRlbnRlZGl0YWJsZT48L2JvZHk+IiBkYXRh
VXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107CiAgICAgW3NpbXVsYXRlZEhUTUxJ
dGVtUHJvdmlkZXIgcmVnaXN0ZXJEYXRhUmVwcmVzZW50YXRpb25Gb3JUeXBlSWRlbnRpZmllcjoo
X19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlSFRNTCB3aXRoRGF0YTpodG1sRGF0YV07CiAgICAg
W3NpbXVsYXRlZEhUTUxJdGVtUHJvdmlkZXIgc2V0U3VnZ2VzdGVkTmFtZTpAImluZGV4Lmh0bWwi
XTsKQEAgLTY4Nyw3ICs2ODYsNyBAQCBURVNUKERyYWdBbmREcm9wVGVzdHMsIEV4dGVybmFsU291
cmNlTW92ZU9wZXJhdGlvbk5vdEFsbG93ZWQpCiAgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxv
YWRUZXN0UGFnZU5hbWVkOkAiZmlsZS11cGxvYWRpbmciXTsKICAgICBbd2ViVmlldyBzdHJpbmdC
eUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAidXBsb2FkLmRyb3BFZmZlY3QgPSAnbW92ZSciXTsKIAot
ICAgIGF1dG8gc2ltdWxhdGVkSFRNTEl0ZW1Qcm92aWRlciA9IGFkb3B0TlMoW1tVSUl0ZW1Qcm92
aWRlciBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gc2ltdWxhdGVkSFRNTEl0ZW1Qcm92aWRlciA9
IGFkb3B0TlMoW1tOU0l0ZW1Qcm92aWRlciBhbGxvY10gaW5pdF0pOwogICAgIE5TRGF0YSAqaHRt
bERhdGEgPSBbQCI8Ym9keSBjb250ZW50ZWRpdGFibGU+PC9ib2R5PiIgZGF0YVVzaW5nRW5jb2Rp
bmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOwogICAgIFtzaW11bGF0ZWRIVE1MSXRlbVByb3ZpZGVy
IHJlZ2lzdGVyRGF0YVJlcHJlc2VudGF0aW9uRm9yVHlwZUlkZW50aWZpZXI6KF9fYnJpZGdlIE5T
U3RyaW5nICopa1VUVHlwZUhUTUwgd2l0aERhdGE6aHRtbERhdGFdOwogCkBAIC03MDQsMTEgKzcw
MywxMSBAQCBURVNUKERyYWdBbmREcm9wVGVzdHMsIEV4dGVybmFsU291cmNlWklQQXJjaGl2ZUFu
ZFVSTFRvU2luZ2xlRmlsZUlucHV0KQogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDAp
XSk7CiAgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAiZmlsZS11
cGxvYWRpbmciXTsKIAotICAgIGF1dG8gYXJjaGl2ZVByb3ZpZGVyID0gYWRvcHROUyhbW1VJSXRl
bVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byBhcmNoaXZlUHJvdmlkZXIgPSBhZG9w
dE5TKFtbTlNJdGVtUHJvdmlkZXIgYWxsb2NdIGluaXRdKTsKICAgICBbYXJjaGl2ZVByb3ZpZGVy
IHJlZ2lzdGVyRGF0YVJlcHJlc2VudGF0aW9uRm9yVHlwZUlkZW50aWZpZXI6KF9fYnJpZGdlIE5T
U3RyaW5nICopa1VUVHlwZVppcEFyY2hpdmUgd2l0aERhdGE6dGVzdFpJUEFyY2hpdmUoKV07CiAK
LSAgICBhdXRvIHVybFByb3ZpZGVyID0gYWRvcHROUyhbW1VJSXRlbVByb3ZpZGVyIGFsbG9jXSBp
bml0XSk7Ci0gICAgW3VybFByb3ZpZGVyIHJlZ2lzdGVyT2JqZWN0OltOU1VSTCBVUkxXaXRoU3Ry
aW5nOkAiaHR0cHM6Ly93ZWJraXQub3JnIl0gdmlzaWJpbGl0eTpVSUl0ZW1Qcm92aWRlclJlcHJl
c2VudGF0aW9uT3B0aW9uc1Zpc2liaWxpdHlBbGxdOworICAgIGF1dG8gdXJsUHJvdmlkZXIgPSBh
ZG9wdE5TKFtbTlNJdGVtUHJvdmlkZXIgYWxsb2NdIGluaXRdKTsKKyAgICBbdXJsUHJvdmlkZXIg
cmVnaXN0ZXJPYmplY3Q6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL3dlYmtpdC5vcmci
XSB2aXNpYmlsaXR5Ok5TSXRlbVByb3ZpZGVyUmVwcmVzZW50YXRpb25WaXNpYmlsaXR5QWxsXTsK
IAogICAgIGF1dG8gc2ltdWxhdG9yID0gYWRvcHROUyhbW0RyYWdBbmREcm9wU2ltdWxhdG9yIGFs
bG9jXSBpbml0V2l0aFdlYlZpZXc6d2ViVmlldy5nZXQoKV0pOwogICAgIFtzaW11bGF0b3Igc2V0
RXh0ZXJuYWxJdGVtUHJvdmlkZXJzOkBbIGFyY2hpdmVQcm92aWRlci5nZXQoKSwgdXJsUHJvdmlk
ZXIuZ2V0KCkgXV07CkBAIC03MjMsNyArNzIyLDcgQEAgVEVTVChEcmFnQW5kRHJvcFRlc3RzLCBF
eHRlcm5hbFNvdXJjZVpJUEFyY2hpdmVUb1VwbG9hZEFyZWEpCiAgICAgYXV0byB3ZWJWaWV3ID0g
YWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgw
LCAwLCAzMjAsIDUwMCldKTsKICAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdl
TmFtZWQ6QCJmaWxlLXVwbG9hZGluZyJdOwogCi0gICAgYXV0byBpdGVtUHJvdmlkZXIgPSBhZG9w
dE5TKFtbVUlJdGVtUHJvdmlkZXIgYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIGl0ZW1Qcm92aWRl
ciA9IGFkb3B0TlMoW1tOU0l0ZW1Qcm92aWRlciBhbGxvY10gaW5pdF0pOwogICAgIFtpdGVtUHJv
dmlkZXIgcmVnaXN0ZXJEYXRhUmVwcmVzZW50YXRpb25Gb3JUeXBlSWRlbnRpZmllcjooX19icmlk
Z2UgTlNTdHJpbmcgKilrVVRUeXBlWmlwQXJjaGl2ZSB3aXRoRGF0YTp0ZXN0WklQQXJjaGl2ZSgp
XTsKIAogICAgIGF1dG8gc2ltdWxhdG9yID0gYWRvcHROUyhbW0RyYWdBbmREcm9wU2ltdWxhdG9y
IGFsbG9jXSBpbml0V2l0aFdlYlZpZXc6d2ViVmlldy5nZXQoKV0pOwpAQCAtNzM5LDExICs3Mzgs
MTEgQEAgVEVTVChEcmFnQW5kRHJvcFRlc3RzLCBFeHRlcm5hbFNvdXJjZUltYWdlQW5kSFRNTFRv
U2luZ2xlRmlsZUlucHV0KQogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApXSk7CiAg
ICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAiZmlsZS11cGxvYWRp
bmciXTsKIAotICAgIGF1dG8gc2ltdWxhdGVkSW1hZ2VJdGVtUHJvdmlkZXIgPSBhZG9wdE5TKFtb
VUlJdGVtUHJvdmlkZXIgYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIHNpbXVsYXRlZEltYWdlSXRl
bVByb3ZpZGVyID0gYWRvcHROUyhbW05TSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7CiAgICAg
TlNEYXRhICppbWFnZURhdGEgPSBVSUltYWdlSlBFR1JlcHJlc2VudGF0aW9uKHRlc3RJY29uSW1h
Z2UoKSwgMC41KTsKICAgICBbc2ltdWxhdGVkSW1hZ2VJdGVtUHJvdmlkZXIgcmVnaXN0ZXJEYXRh
UmVwcmVzZW50YXRpb25Gb3JUeXBlSWRlbnRpZmllcjooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRU
eXBlSlBFRyB3aXRoRGF0YTppbWFnZURhdGFdOwogCi0gICAgYXV0byBzaW11bGF0ZWRIVE1MSXRl
bVByb3ZpZGVyID0gYWRvcHROUyhbW1VJSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7CisgICAg
YXV0byBzaW11bGF0ZWRIVE1MSXRlbVByb3ZpZGVyID0gYWRvcHROUyhbW05TSXRlbVByb3ZpZGVy
IGFsbG9jXSBpbml0XSk7CiAgICAgTlNEYXRhICpodG1sRGF0YSA9IFtAIjxib2R5IGNvbnRlbnRl
ZGl0YWJsZT48L2JvZHk+IiBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107
CiAgICAgW3NpbXVsYXRlZEhUTUxJdGVtUHJvdmlkZXIgcmVnaXN0ZXJEYXRhUmVwcmVzZW50YXRp
b25Gb3JUeXBlSWRlbnRpZmllcjooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlSFRNTCB3aXRo
RGF0YTpodG1sRGF0YV07CiAKQEAgLTc2MSwxMSArNzYwLDExIEBAIFRFU1QoRHJhZ0FuZERyb3BU
ZXN0cywgRXh0ZXJuYWxTb3VyY2VJbWFnZUFuZEhUTUxUb011bHRpcGxlRmlsZUlucHV0KQogICAg
IFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAImZpbGUtdXBsb2FkaW5n
Il07CiAgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImlucHV0LnNl
dEF0dHJpYnV0ZSgnbXVsdGlwbGUnLCAnJykiXTsKIAotICAgIGF1dG8gc2ltdWxhdGVkSW1hZ2VJ
dGVtUHJvdmlkZXIgPSBhZG9wdE5TKFtbVUlJdGVtUHJvdmlkZXIgYWxsb2NdIGluaXRdKTsKKyAg
ICBhdXRvIHNpbXVsYXRlZEltYWdlSXRlbVByb3ZpZGVyID0gYWRvcHROUyhbW05TSXRlbVByb3Zp
ZGVyIGFsbG9jXSBpbml0XSk7CiAgICAgTlNEYXRhICppbWFnZURhdGEgPSBVSUltYWdlSlBFR1Jl
cHJlc2VudGF0aW9uKHRlc3RJY29uSW1hZ2UoKSwgMC41KTsKICAgICBbc2ltdWxhdGVkSW1hZ2VJ
dGVtUHJvdmlkZXIgcmVnaXN0ZXJEYXRhUmVwcmVzZW50YXRpb25Gb3JUeXBlSWRlbnRpZmllcjoo
X19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlSlBFRyB3aXRoRGF0YTppbWFnZURhdGFdOwogCi0g
ICAgYXV0byBzaW11bGF0ZWRIVE1MSXRlbVByb3ZpZGVyID0gYWRvcHROUyhbW1VJSXRlbVByb3Zp
ZGVyIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byBzaW11bGF0ZWRIVE1MSXRlbVByb3ZpZGVyID0g
YWRvcHROUyhbW05TSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7CiAgICAgTlNEYXRhICpodG1s
RGF0YSA9IFtAIjxib2R5IGNvbnRlbnRlZGl0YWJsZT48L2JvZHk+IiBkYXRhVXNpbmdFbmNvZGlu
ZzpOU1VURjhTdHJpbmdFbmNvZGluZ107CiAgICAgW3NpbXVsYXRlZEhUTUxJdGVtUHJvdmlkZXIg
cmVnaXN0ZXJEYXRhUmVwcmVzZW50YXRpb25Gb3JUeXBlSWRlbnRpZmllcjooX19icmlkZ2UgTlNT
dHJpbmcgKilrVVRUeXBlSFRNTCB3aXRoRGF0YTpodG1sRGF0YV07CiAKQEAgLTc4MiwxNSArNzgx
LDE1IEBAIFRFU1QoRHJhZ0FuZERyb3BUZXN0cywgRXh0ZXJuYWxTb3VyY2VJbWFnZUFuZEhUTUxU
b1VwbG9hZEFyZWEpCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCldKTsKICAgICBb
d2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJmaWxlLXVwbG9hZGluZyJd
OwogCi0gICAgYXV0byBzaW11bGF0ZWRJbWFnZUl0ZW1Qcm92aWRlciA9IGFkb3B0TlMoW1tVSUl0
ZW1Qcm92aWRlciBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gc2ltdWxhdGVkSW1hZ2VJdGVtUHJv
dmlkZXIgPSBhZG9wdE5TKFtbTlNJdGVtUHJvdmlkZXIgYWxsb2NdIGluaXRdKTsKICAgICBOU0Rh
dGEgKmltYWdlRGF0YSA9IFVJSW1hZ2VKUEVHUmVwcmVzZW50YXRpb24odGVzdEljb25JbWFnZSgp
LCAwLjUpOwogICAgIFtzaW11bGF0ZWRJbWFnZUl0ZW1Qcm92aWRlciByZWdpc3RlckRhdGFSZXBy
ZXNlbnRhdGlvbkZvclR5cGVJZGVudGlmaWVyOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVK
UEVHIHdpdGhEYXRhOmltYWdlRGF0YV07CiAKLSAgICBhdXRvIGZpcnN0U2ltdWxhdGVkSFRNTEl0
ZW1Qcm92aWRlciA9IGFkb3B0TlMoW1tVSUl0ZW1Qcm92aWRlciBhbGxvY10gaW5pdF0pOworICAg
IGF1dG8gZmlyc3RTaW11bGF0ZWRIVE1MSXRlbVByb3ZpZGVyID0gYWRvcHROUyhbW05TSXRlbVBy
b3ZpZGVyIGFsbG9jXSBpbml0XSk7CiAgICAgTlNEYXRhICpmaXJzdEhUTUxEYXRhID0gW0AiPGJv
ZHkgY29udGVudGVkaXRhYmxlPjwvYm9keT4iIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmlu
Z0VuY29kaW5nXTsKICAgICBbZmlyc3RTaW11bGF0ZWRIVE1MSXRlbVByb3ZpZGVyIHJlZ2lzdGVy
RGF0YVJlcHJlc2VudGF0aW9uRm9yVHlwZUlkZW50aWZpZXI6KF9fYnJpZGdlIE5TU3RyaW5nICop
a1VUVHlwZUhUTUwgd2l0aERhdGE6Zmlyc3RIVE1MRGF0YV07CiAKLSAgICBhdXRvIHNlY29uZFNp
bXVsYXRlZEhUTUxJdGVtUHJvdmlkZXIgPSBhZG9wdE5TKFtbVUlJdGVtUHJvdmlkZXIgYWxsb2Nd
IGluaXRdKTsKKyAgICBhdXRvIHNlY29uZFNpbXVsYXRlZEhUTUxJdGVtUHJvdmlkZXIgPSBhZG9w
dE5TKFtbTlNJdGVtUHJvdmlkZXIgYWxsb2NdIGluaXRdKTsKICAgICBOU0RhdGEgKnNlY29uZEhU
TUxEYXRhID0gW0AiPGh0bWw+PGJvZHk+aGVsbG8gd29ybGQ8L2JvZHk+PC9odG1sPiIgZGF0YVVz
aW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOwogICAgIFtzZWNvbmRTaW11bGF0ZWRI
VE1MSXRlbVByb3ZpZGVyIHJlZ2lzdGVyRGF0YVJlcHJlc2VudGF0aW9uRm9yVHlwZUlkZW50aWZp
ZXI6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZUhUTUwgd2l0aERhdGE6c2Vjb25kSFRNTERh
dGFdOwogCkBAIC04MTAsNyArODA5LDcgQEAgVEVTVChEcmFnQW5kRHJvcFRlc3RzLCBFeHRlcm5h
bFNvdXJjZUhUTUxUb0NvbnRlbnRFZGl0YWJsZSkKICAgICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1
YXRpbmdKYXZhU2NyaXB0OkAiZ2V0U2VsZWN0aW9uKCkucmVtb3ZlQWxsUmFuZ2VzKCkiXTsKIAog
ICAgIGF1dG8gc2ltdWxhdG9yID0gYWRvcHROUyhbW0RyYWdBbmREcm9wU2ltdWxhdG9yIGFsbG9j
XSBpbml0V2l0aFdlYlZpZXc6d2ViVmlldy5nZXQoKV0pOwotICAgIGF1dG8gaXRlbVByb3ZpZGVy
ID0gYWRvcHROUyhbW1VJSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byBpdGVt
UHJvdmlkZXIgPSBhZG9wdE5TKFtbTlNJdGVtUHJvdmlkZXIgYWxsb2NdIGluaXRdKTsKICAgICBO
U0RhdGEgKmh0bWxEYXRhID0gW0AiPGgxPlRoaXMgaXMgYSB0ZXN0PC9oMT4iIGRhdGFVc2luZ0Vu
Y29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsKICAgICBbaXRlbVByb3ZpZGVyIHJlZ2lzdGVy
RGF0YVJlcHJlc2VudGF0aW9uRm9yVHlwZUlkZW50aWZpZXI6KF9fYnJpZGdlIE5TU3RyaW5nICop
a1VUVHlwZUhUTUwgd2l0aERhdGE6aHRtbERhdGFdOwogICAgIFtzaW11bGF0b3Igc2V0RXh0ZXJu
YWxJdGVtUHJvdmlkZXJzOkBbIGl0ZW1Qcm92aWRlci5nZXQoKSBdXTsKQEAgLTgzMCw3ICs4Mjks
NyBAQCBURVNUKERyYWdBbmREcm9wVGVzdHMsIEV4dGVybmFsU291cmNlQm9sZFN5c3RlbUF0dHJp
YnV0ZWRTdHJpbmdUb0NvbnRlbnRFZGl0YWJsZQogICAgIGF1dG8gc2ltdWxhdG9yID0gYWRvcHRO
UyhbW0RyYWdBbmREcm9wU2ltdWxhdG9yIGFsbG9jXSBpbml0V2l0aFdlYlZpZXc6d2ViVmlldy5n
ZXQoKV0pOwogICAgIE5TRGljdGlvbmFyeSAqdGV4dEF0dHJpYnV0ZXMgPSBAeyBOU0ZvbnRBdHRy
aWJ1dGVOYW1lOiBbVUlGb250IGJvbGRTeXN0ZW1Gb250T2ZTaXplOjIwXSB9OwogICAgIE5TQXR0
cmlidXRlZFN0cmluZyAqcmljaFRleHQgPSBbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5p
dFdpdGhTdHJpbmc6QCJUaGlzIGlzIGEgdGVzdCIgYXR0cmlidXRlczp0ZXh0QXR0cmlidXRlc107
Ci0gICAgYXV0byBpdGVtUHJvdmlkZXIgPSBhZG9wdE5TKFtbVUlJdGVtUHJvdmlkZXIgYWxsb2Nd
IGluaXRXaXRoT2JqZWN0OnJpY2hUZXh0XSk7CisgICAgYXV0byBpdGVtUHJvdmlkZXIgPSBhZG9w
dE5TKFtbTlNJdGVtUHJvdmlkZXIgYWxsb2NdIGluaXRXaXRoT2JqZWN0OnJpY2hUZXh0XSk7CiAg
ICAgW3NpbXVsYXRvciBzZXRFeHRlcm5hbEl0ZW1Qcm92aWRlcnM6QFsgaXRlbVByb3ZpZGVyLmdl
dCgpIF1dOwogICAgIFtzaW11bGF0b3IgcnVuRnJvbTpDR1BvaW50TWFrZSgzMDAsIDQwMCkgdG86
Q0dQb2ludE1ha2UoMTAwLCAzMDApXTsKIApAQCAtODQ2LDcgKzg0NSw3IEBAIFRFU1QoRHJhZ0Fu
ZERyb3BUZXN0cywgRXh0ZXJuYWxTb3VyY2VDb2xvcmVkQXR0cmlidXRlZFN0cmluZ1RvQ29udGVu
dEVkaXRhYmxlKQogICAgIGF1dG8gc2ltdWxhdG9yID0gYWRvcHROUyhbW0RyYWdBbmREcm9wU2lt
dWxhdG9yIGFsbG9jXSBpbml0V2l0aFdlYlZpZXc6d2ViVmlldy5nZXQoKV0pOwogICAgIE5TRGlj
dGlvbmFyeSAqdGV4dEF0dHJpYnV0ZXMgPSBAeyBOU0ZvcmVncm91bmRDb2xvckF0dHJpYnV0ZU5h
bWU6IFtVSUNvbG9yIHJlZENvbG9yXSB9OwogICAgIE5TQXR0cmlidXRlZFN0cmluZyAqcmljaFRl
eHQgPSBbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6QCJUaGlzIGlz
IGEgdGVzdCIgYXR0cmlidXRlczp0ZXh0QXR0cmlidXRlc107Ci0gICAgYXV0byBpdGVtUHJvdmlk
ZXIgPSBhZG9wdE5TKFtbVUlJdGVtUHJvdmlkZXIgYWxsb2NdIGluaXRXaXRoT2JqZWN0OnJpY2hU
ZXh0XSk7CisgICAgYXV0byBpdGVtUHJvdmlkZXIgPSBhZG9wdE5TKFtbTlNJdGVtUHJvdmlkZXIg
YWxsb2NdIGluaXRXaXRoT2JqZWN0OnJpY2hUZXh0XSk7CiAgICAgW3NpbXVsYXRvciBzZXRFeHRl
cm5hbEl0ZW1Qcm92aWRlcnM6QFsgaXRlbVByb3ZpZGVyLmdldCgpIF1dOwogICAgIFtzaW11bGF0
b3IgcnVuRnJvbTpDR1BvaW50TWFrZSgzMDAsIDQwMCkgdG86Q0dQb2ludE1ha2UoMTAwLCAzMDAp
XTsKIApAQCAtODYxLDEyICs4NjAsMTIgQEAgVEVTVChEcmFnQW5kRHJvcFRlc3RzLCBFeHRlcm5h
bFNvdXJjZU11bHRpcGxlVVJMc1RvQ29udGVudEVkaXRhYmxlKQogICAgIFt3ZWJWaWV3IHN0cmlu
Z0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJnZXRTZWxlY3Rpb24oKS5yZW1vdmVBbGxSYW5nZXMo
KSJdOwogCiAgICAgYXV0byBzaW11bGF0b3IgPSBhZG9wdE5TKFtbRHJhZ0FuZERyb3BTaW11bGF0
b3IgYWxsb2NdIGluaXRXaXRoV2ViVmlldzp3ZWJWaWV3LmdldCgpXSk7Ci0gICAgYXV0byBmaXJz
dEl0ZW0gPSBhZG9wdE5TKFtbVUlJdGVtUHJvdmlkZXIgYWxsb2NdIGluaXRdKTsKLSAgICBbZmly
c3RJdGVtIHJlZ2lzdGVyT2JqZWN0OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly93d3cu
YXBwbGUuY29tL2lwaG9uZS8iXSB2aXNpYmlsaXR5OlVJSXRlbVByb3ZpZGVyUmVwcmVzZW50YXRp
b25PcHRpb25zVmlzaWJpbGl0eUFsbF07Ci0gICAgYXV0byBzZWNvbmRJdGVtID0gYWRvcHROUyhb
W1VJSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7Ci0gICAgW3NlY29uZEl0ZW0gcmVnaXN0ZXJP
YmplY3Q6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL3d3dy5hcHBsZS5jb20vbWFjLyJd
IHZpc2liaWxpdHk6VUlJdGVtUHJvdmlkZXJSZXByZXNlbnRhdGlvbk9wdGlvbnNWaXNpYmlsaXR5
QWxsXTsKLSAgICBhdXRvIHRoaXJkSXRlbSA9IGFkb3B0TlMoW1tVSUl0ZW1Qcm92aWRlciBhbGxv
Y10gaW5pdF0pOwotICAgIFt0aGlyZEl0ZW0gcmVnaXN0ZXJPYmplY3Q6W05TVVJMIFVSTFdpdGhT
dHJpbmc6QCJodHRwczovL3dlYmtpdC5vcmcvIl0gdmlzaWJpbGl0eTpVSUl0ZW1Qcm92aWRlclJl
cHJlc2VudGF0aW9uT3B0aW9uc1Zpc2liaWxpdHlBbGxdOworICAgIGF1dG8gZmlyc3RJdGVtID0g
YWRvcHROUyhbW05TSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7CisgICAgW2ZpcnN0SXRlbSBy
ZWdpc3Rlck9iamVjdDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8vd3d3LmFwcGxlLmNv
bS9pcGhvbmUvIl0gdmlzaWJpbGl0eTpOU0l0ZW1Qcm92aWRlclJlcHJlc2VudGF0aW9uVmlzaWJp
bGl0eUFsbF07CisgICAgYXV0byBzZWNvbmRJdGVtID0gYWRvcHROUyhbW05TSXRlbVByb3ZpZGVy
IGFsbG9jXSBpbml0XSk7CisgICAgW3NlY29uZEl0ZW0gcmVnaXN0ZXJPYmplY3Q6W05TVVJMIFVS
TFdpdGhTdHJpbmc6QCJodHRwczovL3d3dy5hcHBsZS5jb20vbWFjLyJdIHZpc2liaWxpdHk6TlNJ
dGVtUHJvdmlkZXJSZXByZXNlbnRhdGlvblZpc2liaWxpdHlBbGxdOworICAgIGF1dG8gdGhpcmRJ
dGVtID0gYWRvcHROUyhbW05TSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7CisgICAgW3RoaXJk
SXRlbSByZWdpc3Rlck9iamVjdDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8vd2Via2l0
Lm9yZy8iXSB2aXNpYmlsaXR5Ok5TSXRlbVByb3ZpZGVyUmVwcmVzZW50YXRpb25WaXNpYmlsaXR5
QWxsXTsKICAgICBbc2ltdWxhdG9yIHNldEV4dGVybmFsSXRlbVByb3ZpZGVyczpAWyBmaXJzdEl0
ZW0uZ2V0KCksIHNlY29uZEl0ZW0uZ2V0KCksIHRoaXJkSXRlbS5nZXQoKSBdXTsKICAgICBbc2lt
dWxhdG9yIHJ1bkZyb206Q0dQb2ludE1ha2UoMzAwLCA0MDApIHRvOkNHUG9pbnRNYWtlKDEwMCwg
MzAwKV07CiAKQEAgLTg5NSw5ICs4OTQsOSBAQCBURVNUKERyYWdBbmREcm9wVGVzdHMsIFJlc3Bl
Y3RzRXh0ZXJuYWxTb3VyY2VGaWRlbGl0eVJhbmtpbmdzKQogICAgIC8vIGZpZGVsaXR5IG9yZGVy
IHJlcXVlc3RlZCBieSB0aGUgc291cmNlLCB3ZSdsbCBlbmQgdXAgYXNzdW1pbmcgdGhhdCB0aGUg
aW1hZ2UgaXMgYSBoaWdoZXIgZmlkZWxpdHkgcmVwcmVzZW50YXRpb24KICAgICAvLyB0aGFuIHRo
ZSBwbGFpbiB0ZXh0LCBhbmQgZXJyb25lb3VzbHkgaW5zZXJ0IHRoZSBpbWFnZS4gSWYgd2UgcmVz
cGVjdCBzb3VyY2UgZmlkZWxpdGllcywgd2UnbGwgaW5zZXJ0IHRleHQgcmF0aGVyCiAgICAgLy8g
dGhhbiBhbiBpbWFnZS4KLSAgICBhdXRvIHNpbXVsYXRlZEl0ZW1Qcm92aWRlcldpdGhUZXh0Rmly
c3QgPSBhZG9wdE5TKFtbVUlJdGVtUHJvdmlkZXIgYWxsb2NdIGluaXRdKTsKLSAgICBbc2ltdWxh
dGVkSXRlbVByb3ZpZGVyV2l0aFRleHRGaXJzdCByZWdpc3Rlck9iamVjdDpAIkhlbGxvIHdvcmxk
IiB2aXNpYmlsaXR5OlVJSXRlbVByb3ZpZGVyUmVwcmVzZW50YXRpb25PcHRpb25zVmlzaWJpbGl0
eUFsbF07Ci0gICAgW3NpbXVsYXRlZEl0ZW1Qcm92aWRlcldpdGhUZXh0Rmlyc3QgcmVnaXN0ZXJP
YmplY3Q6dGVzdEljb25JbWFnZSgpIHZpc2liaWxpdHk6VUlJdGVtUHJvdmlkZXJSZXByZXNlbnRh
dGlvbk9wdGlvbnNWaXNpYmlsaXR5QWxsXTsKKyAgICBhdXRvIHNpbXVsYXRlZEl0ZW1Qcm92aWRl
cldpdGhUZXh0Rmlyc3QgPSBhZG9wdE5TKFtbTlNJdGVtUHJvdmlkZXIgYWxsb2NdIGluaXRdKTsK
KyAgICBbc2ltdWxhdGVkSXRlbVByb3ZpZGVyV2l0aFRleHRGaXJzdCByZWdpc3Rlck9iamVjdDpA
IkhlbGxvIHdvcmxkIiB2aXNpYmlsaXR5Ok5TSXRlbVByb3ZpZGVyUmVwcmVzZW50YXRpb25WaXNp
YmlsaXR5QWxsXTsKKyAgICBbc2ltdWxhdGVkSXRlbVByb3ZpZGVyV2l0aFRleHRGaXJzdCByZWdp
c3Rlck9iamVjdDp0ZXN0SWNvbkltYWdlKCkgdmlzaWJpbGl0eTpOU0l0ZW1Qcm92aWRlclJlcHJl
c2VudGF0aW9uVmlzaWJpbGl0eUFsbF07CiAgICAgW3NpbXVsYXRvciBzZXRFeHRlcm5hbEl0ZW1Q
cm92aWRlcnM6QFsgc2ltdWxhdGVkSXRlbVByb3ZpZGVyV2l0aFRleHRGaXJzdC5nZXQoKSBdXTsK
IAogICAgIFtzaW11bGF0b3IgcnVuRnJvbTpDR1BvaW50TWFrZSgzMDAsIDQwMCkgdG86Q0dQb2lu
dE1ha2UoMTAwLCAzMDApXTsKQEAgLTkwNiw5ICs5MDUsOSBAQCBURVNUKERyYWdBbmREcm9wVGVz
dHMsIFJlc3BlY3RzRXh0ZXJuYWxTb3VyY2VGaWRlbGl0eVJhbmtpbmdzKQogICAgIFt3ZWJWaWV3
IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJlZGl0b3IuaW5uZXJIVE1MID0gJyciXTsK
IAogICAgIC8vIE5vdyB3ZSByZWdpc3RlciB0aGUgaXRlbSBwcm92aWRlcnMgaW4gcmV2ZXJzZSwg
YW5kIGV4cGVjdCB0aGUgaW1hZ2UgdG8gYmUgaW5zZXJ0ZWQgaW5zdGVhZCBvZiB0ZXh0LgotICAg
IGF1dG8gc2ltdWxhdGVkSXRlbVByb3ZpZGVyV2l0aEltYWdlRmlyc3QgPSBhZG9wdE5TKFtbVUlJ
dGVtUHJvdmlkZXIgYWxsb2NdIGluaXRdKTsKLSAgICBbc2ltdWxhdGVkSXRlbVByb3ZpZGVyV2l0
aEltYWdlRmlyc3QgcmVnaXN0ZXJPYmplY3Q6dGVzdEljb25JbWFnZSgpIHZpc2liaWxpdHk6VUlJ
dGVtUHJvdmlkZXJSZXByZXNlbnRhdGlvbk9wdGlvbnNWaXNpYmlsaXR5QWxsXTsKLSAgICBbc2lt
dWxhdGVkSXRlbVByb3ZpZGVyV2l0aEltYWdlRmlyc3QgcmVnaXN0ZXJPYmplY3Q6QCJIZWxsbyB3
b3JsZCIgdmlzaWJpbGl0eTpVSUl0ZW1Qcm92aWRlclJlcHJlc2VudGF0aW9uT3B0aW9uc1Zpc2li
aWxpdHlBbGxdOworICAgIGF1dG8gc2ltdWxhdGVkSXRlbVByb3ZpZGVyV2l0aEltYWdlRmlyc3Qg
PSBhZG9wdE5TKFtbTlNJdGVtUHJvdmlkZXIgYWxsb2NdIGluaXRdKTsKKyAgICBbc2ltdWxhdGVk
SXRlbVByb3ZpZGVyV2l0aEltYWdlRmlyc3QgcmVnaXN0ZXJPYmplY3Q6dGVzdEljb25JbWFnZSgp
IHZpc2liaWxpdHk6TlNJdGVtUHJvdmlkZXJSZXByZXNlbnRhdGlvblZpc2liaWxpdHlBbGxdOwor
ICAgIFtzaW11bGF0ZWRJdGVtUHJvdmlkZXJXaXRoSW1hZ2VGaXJzdCByZWdpc3Rlck9iamVjdDpA
IkhlbGxvIHdvcmxkIiB2aXNpYmlsaXR5Ok5TSXRlbVByb3ZpZGVyUmVwcmVzZW50YXRpb25WaXNp
YmlsaXR5QWxsXTsKICAgICBbc2ltdWxhdG9yIHNldEV4dGVybmFsSXRlbVByb3ZpZGVyczpAWyBz
aW11bGF0ZWRJdGVtUHJvdmlkZXJXaXRoSW1hZ2VGaXJzdC5nZXQoKSBdXTsKIAogICAgIFtzaW11
bGF0b3IgcnVuRnJvbTpDR1BvaW50TWFrZSgzMDAsIDQwMCkgdG86Q0dQb2ludE1ha2UoMTAwLCAz
MDApXTsKQEAgLTkzMCw4ICs5MjksOCBAQCBURVNUKERyYWdBbmREcm9wVGVzdHMsIEV4dGVybmFs
U291cmNlVVRGOFBsYWluVGV4dE9ubHkpCiAKICAgICBOU1N0cmluZyAqdGV4dFBheWxvYWQgPSBA
IkNlY2kgbidlc3QgcGFzIHVuZSBzdHJpbmciOwogICAgIGF1dG8gc2ltdWxhdG9yID0gYWRvcHRO
UyhbW0RyYWdBbmREcm9wU2ltdWxhdG9yIGFsbG9jXSBpbml0V2l0aFdlYlZpZXc6d2ViVmlldy5n
ZXQoKV0pOwotICAgIGF1dG8gc2ltdWxhdGVkSXRlbVByb3ZpZGVyID0gYWRvcHROUyhbW1VJSXRl
bVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7Ci0gICAgW3NpbXVsYXRlZEl0ZW1Qcm92aWRlciByZWdp
c3RlckRhdGFSZXByZXNlbnRhdGlvbkZvclR5cGVJZGVudGlmaWVyOihfX2JyaWRnZSBOU1N0cmlu
ZyAqKWtVVFR5cGVVVEY4UGxhaW5UZXh0IG9wdGlvbnM6bmlsIGxvYWRIYW5kbGVyOl5OU1Byb2dy
ZXNzICooVUlJdGVtUHJvdmlkZXJEYXRhTG9hZENvbXBsZXRpb25CbG9jayBjb21wbGV0aW9uQmxv
Y2spCisgICAgYXV0byBzaW11bGF0ZWRJdGVtUHJvdmlkZXIgPSBhZG9wdE5TKFtbTlNJdGVtUHJv
dmlkZXIgYWxsb2NdIGluaXRdKTsKKyAgICBbc2ltdWxhdGVkSXRlbVByb3ZpZGVyIHJlZ2lzdGVy
RGF0YVJlcHJlc2VudGF0aW9uRm9yVHlwZUlkZW50aWZpZXI6KF9fYnJpZGdlIE5TU3RyaW5nICop
a1VUVHlwZVVURjhQbGFpblRleHQgdmlzaWJpbGl0eTpOU0l0ZW1Qcm92aWRlclJlcHJlc2VudGF0
aW9uVmlzaWJpbGl0eUFsbCBsb2FkSGFuZGxlcjpeTlNQcm9ncmVzcyAqKE5TSXRlbVByb3ZpZGVy
RGF0YUxvYWRDb21wbGV0aW9uQmxvY2sgY29tcGxldGlvbkJsb2NrKQogICAgIHsKICAgICAgICAg
Y29tcGxldGlvbkJsb2NrKFt0ZXh0UGF5bG9hZCBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJp
bmdFbmNvZGluZ10sIG5pbCk7CiAgICAgICAgIHJldHVybiBbTlNQcm9ncmVzcyBkaXNjcmV0ZVBy
b2dyZXNzV2l0aFRvdGFsVW5pdENvdW50OjEwMF07CkBAIC05NTAsOCArOTQ5LDggQEAgVEVTVChE
cmFnQW5kRHJvcFRlc3RzLCBFeHRlcm5hbFNvdXJjZUpQRUdPbmx5KQogICAgIFt3ZWJWaWV3IHN5
bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAImF1dG9mb2N1cy1jb250ZW50ZWRpdGFibGUi
XTsKIAogICAgIGF1dG8gc2ltdWxhdG9yID0gYWRvcHROUyhbW0RyYWdBbmREcm9wU2ltdWxhdG9y
IGFsbG9jXSBpbml0V2l0aFdlYlZpZXc6d2ViVmlldy5nZXQoKV0pOwotICAgIGF1dG8gc2ltdWxh
dGVkSXRlbVByb3ZpZGVyID0gYWRvcHROUyhbW1VJSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7
Ci0gICAgW3NpbXVsYXRlZEl0ZW1Qcm92aWRlciByZWdpc3RlckRhdGFSZXByZXNlbnRhdGlvbkZv
clR5cGVJZGVudGlmaWVyOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVKUEVHIG9wdGlvbnM6
bmlsIGxvYWRIYW5kbGVyOl5OU1Byb2dyZXNzICooVUlJdGVtUHJvdmlkZXJEYXRhTG9hZENvbXBs
ZXRpb25CbG9jayBjb21wbGV0aW9uQmxvY2spCisgICAgYXV0byBzaW11bGF0ZWRJdGVtUHJvdmlk
ZXIgPSBhZG9wdE5TKFtbTlNJdGVtUHJvdmlkZXIgYWxsb2NdIGluaXRdKTsKKyAgICBbc2ltdWxh
dGVkSXRlbVByb3ZpZGVyIHJlZ2lzdGVyRGF0YVJlcHJlc2VudGF0aW9uRm9yVHlwZUlkZW50aWZp
ZXI6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZUpQRUcgdmlzaWJpbGl0eTpOU0l0ZW1Qcm92
aWRlclJlcHJlc2VudGF0aW9uVmlzaWJpbGl0eUFsbCBsb2FkSGFuZGxlcjpeTlNQcm9ncmVzcyAq
KE5TSXRlbVByb3ZpZGVyRGF0YUxvYWRDb21wbGV0aW9uQmxvY2sgY29tcGxldGlvbkJsb2NrKQog
ICAgIHsKICAgICAgICAgY29tcGxldGlvbkJsb2NrKFVJSW1hZ2VKUEVHUmVwcmVzZW50YXRpb24o
dGVzdEljb25JbWFnZSgpLCAwLjUpLCBuaWwpOwogICAgICAgICByZXR1cm4gW05TUHJvZ3Jlc3Mg
ZGlzY3JldGVQcm9ncmVzc1dpdGhUb3RhbFVuaXRDb3VudDoxMDBdOwpAQCAtOTcwLDggKzk2OSw4
IEBAIFRFU1QoRHJhZ0FuZERyb3BUZXN0cywgRXh0ZXJuYWxTb3VyY2VUaXRsZWROU1VSTCkKIAog
ICAgIE5TVVJMICp0aXRsZWRVUkwgPSBbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8vd3d3
LmFwcGxlLmNvbSJdOwogICAgIHRpdGxlZFVSTC5fdGl0bGUgPSBAIkFwcGxlIjsKLSAgICBhdXRv
IHNpbXVsYXRlZEl0ZW1Qcm92aWRlciA9IGFkb3B0TlMoW1tVSUl0ZW1Qcm92aWRlciBhbGxvY10g
aW5pdF0pOwotICAgIFtzaW11bGF0ZWRJdGVtUHJvdmlkZXIgcmVnaXN0ZXJPYmplY3Q6dGl0bGVk
VVJMIHZpc2liaWxpdHk6VUlJdGVtUHJvdmlkZXJSZXByZXNlbnRhdGlvbk9wdGlvbnNWaXNpYmls
aXR5QWxsXTsKKyAgICBhdXRvIHNpbXVsYXRlZEl0ZW1Qcm92aWRlciA9IGFkb3B0TlMoW1tOU0l0
ZW1Qcm92aWRlciBhbGxvY10gaW5pdF0pOworICAgIFtzaW11bGF0ZWRJdGVtUHJvdmlkZXIgcmVn
aXN0ZXJPYmplY3Q6dGl0bGVkVVJMIHZpc2liaWxpdHk6TlNJdGVtUHJvdmlkZXJSZXByZXNlbnRh
dGlvblZpc2liaWxpdHlBbGxdOwogCiAgICAgYXV0byBzaW11bGF0b3IgPSBhZG9wdE5TKFtbRHJh
Z0FuZERyb3BTaW11bGF0b3IgYWxsb2NdIGluaXRXaXRoV2ViVmlldzp3ZWJWaWV3LmdldCgpXSk7
CiAgICAgW3NpbXVsYXRvciBzZXRFeHRlcm5hbEl0ZW1Qcm92aWRlcnM6QFsgc2ltdWxhdGVkSXRl
bVByb3ZpZGVyLmdldCgpIF1dOwpAQCAtOTg4LDcgKzk4Nyw3IEBAIFRFU1QoRHJhZ0FuZERyb3BU
ZXN0cywgRXh0ZXJuYWxTb3VyY2VGaWxlVVJMKQogICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVh
dGluZ0phdmFTY3JpcHQ6QCJnZXRTZWxlY3Rpb24oKS5yZW1vdmVBbGxSYW5nZXMoKSJdOwogCiAg
ICAgTlNVUkwgKlVSTCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAiZmlsZTovLy9zb21lL2ZpbGUv
dGhhdC9pcy9ub3QvcmVhbCJdOwotICAgIFVJSXRlbVByb3ZpZGVyICpzaW11bGF0ZWRJdGVtUHJv
dmlkZXIgPSBbVUlJdGVtUHJvdmlkZXIgaXRlbVByb3ZpZGVyV2l0aFVSTDpVUkwgdGl0bGU6QCIi
XTsKKyAgICBOU0l0ZW1Qcm92aWRlciAqc2ltdWxhdGVkSXRlbVByb3ZpZGVyID0gW05TSXRlbVBy
b3ZpZGVyIGl0ZW1Qcm92aWRlcldpdGhVUkw6VVJMIHRpdGxlOkAiIl07CiAKICAgICBhdXRvIHNp
bXVsYXRvciA9IGFkb3B0TlMoW1tEcmFnQW5kRHJvcFNpbXVsYXRvciBhbGxvY10gaW5pdFdpdGhX
ZWJWaWV3OndlYlZpZXcuZ2V0KCldKTsKICAgICBbc2ltdWxhdG9yIHNldEV4dGVybmFsSXRlbVBy
b3ZpZGVyczpAWyBzaW11bGF0ZWRJdGVtUHJvdmlkZXIgXV07CkBAIC0xMDAzLDExICsxMDAyLDEx
IEBAIFRFU1QoRHJhZ0FuZERyb3BUZXN0cywgRXh0ZXJuYWxTb3VyY2VPdmVycmlkZURyb3BGaWxl
VXBsb2FkKQogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApXSk7CiAgICAgW3dlYlZp
ZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAiZmlsZS11cGxvYWRpbmciXTsKIAot
ICAgIGF1dG8gc2ltdWxhdGVkSW1hZ2VJdGVtUHJvdmlkZXIgPSBhZG9wdE5TKFtbVUlJdGVtUHJv
dmlkZXIgYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIHNpbXVsYXRlZEltYWdlSXRlbVByb3ZpZGVy
ID0gYWRvcHROUyhbW05TSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7CiAgICAgTlNEYXRhICpp
bWFnZURhdGEgPSBVSUltYWdlSlBFR1JlcHJlc2VudGF0aW9uKHRlc3RJY29uSW1hZ2UoKSwgMC41
KTsKICAgICBbc2ltdWxhdGVkSW1hZ2VJdGVtUHJvdmlkZXIgcmVnaXN0ZXJEYXRhUmVwcmVzZW50
YXRpb25Gb3JUeXBlSWRlbnRpZmllcjooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlSlBFRyB3
aXRoRGF0YTppbWFnZURhdGFdOwogCi0gICAgYXV0byBzaW11bGF0ZWRIVE1MSXRlbVByb3ZpZGVy
ID0gYWRvcHROUyhbW1VJSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byBzaW11
bGF0ZWRIVE1MSXRlbVByb3ZpZGVyID0gYWRvcHROUyhbW05TSXRlbVByb3ZpZGVyIGFsbG9jXSBp
bml0XSk7CiAgICAgTlNEYXRhICpmaXJzdEhUTUxEYXRhID0gW0AiPGJvZHkgY29udGVudGVkaXRh
YmxlPjwvYm9keT4iIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsKICAg
ICBbc2ltdWxhdGVkSFRNTEl0ZW1Qcm92aWRlciByZWdpc3RlckRhdGFSZXByZXNlbnRhdGlvbkZv
clR5cGVJZGVudGlmaWVyOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVIVE1MIHdpdGhEYXRh
OmZpcnN0SFRNTERhdGFdOwogICAgIFtzaW11bGF0ZWRIVE1MSXRlbVByb3ZpZGVyIHNldFByZWZl
cnJlZFByZXNlbnRhdGlvblN0eWxlOlVJUHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGVBdHRhY2ht
ZW50XTsKQEAgLTExMzEsMTAgKzExMzAsMTAgQEAgVEVTVChEcmFnQW5kRHJvcFRlc3RzLCBFeHRl
cm5hbFNvdXJjZU92ZXJyaWRlRHJvcEluc2VydFVSTCkKICAgICAgICAgcmV0dXJuIGFsbG93ZWRJ
dGVtczsKICAgICB9XTsKIAotICAgIGF1dG8gZmlyc3RJdGVtUHJvdmlkZXIgPSBhZG9wdE5TKFtb
VUlJdGVtUHJvdmlkZXIgYWxsb2NdIGluaXRdKTsKLSAgICBbZmlyc3RJdGVtUHJvdmlkZXIgcmVn
aXN0ZXJPYmplY3Q6QCJUaGlzIGlzIGEgc3RyaW5nLiIgdmlzaWJpbGl0eTpVSUl0ZW1Qcm92aWRl
clJlcHJlc2VudGF0aW9uT3B0aW9uc1Zpc2liaWxpdHlBbGxdOwotICAgIGF1dG8gc2Vjb25kSXRl
bVByb3ZpZGVyID0gYWRvcHROUyhbW1VJSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7Ci0gICAg
W3NlY29uZEl0ZW1Qcm92aWRlciByZWdpc3Rlck9iamVjdDpbTlNVUkwgVVJMV2l0aFN0cmluZzpA
Imh0dHBzOi8vd2Via2l0Lm9yZy8iXSB2aXNpYmlsaXR5OlVJSXRlbVByb3ZpZGVyUmVwcmVzZW50
YXRpb25PcHRpb25zVmlzaWJpbGl0eUFsbF07CisgICAgYXV0byBmaXJzdEl0ZW1Qcm92aWRlciA9
IGFkb3B0TlMoW1tOU0l0ZW1Qcm92aWRlciBhbGxvY10gaW5pdF0pOworICAgIFtmaXJzdEl0ZW1Q
cm92aWRlciByZWdpc3Rlck9iamVjdDpAIlRoaXMgaXMgYSBzdHJpbmcuIiB2aXNpYmlsaXR5Ok5T
SXRlbVByb3ZpZGVyUmVwcmVzZW50YXRpb25WaXNpYmlsaXR5QWxsXTsKKyAgICBhdXRvIHNlY29u
ZEl0ZW1Qcm92aWRlciA9IGFkb3B0TlMoW1tOU0l0ZW1Qcm92aWRlciBhbGxvY10gaW5pdF0pOwor
ICAgIFtzZWNvbmRJdGVtUHJvdmlkZXIgcmVnaXN0ZXJPYmplY3Q6W05TVVJMIFVSTFdpdGhTdHJp
bmc6QCJodHRwczovL3dlYmtpdC5vcmcvIl0gdmlzaWJpbGl0eTpOU0l0ZW1Qcm92aWRlclJlcHJl
c2VudGF0aW9uVmlzaWJpbGl0eUFsbF07CiAgICAgW3NpbXVsYXRvciBzZXRFeHRlcm5hbEl0ZW1Q
cm92aWRlcnM6QFsgZmlyc3RJdGVtUHJvdmlkZXIuZ2V0KCksIHNlY29uZEl0ZW1Qcm92aWRlci5n
ZXQoKSBdXTsKICAgICBbc2ltdWxhdG9yIHJ1bkZyb206Q0dQb2ludE1ha2UoMzAwLCA0MDApIHRv
OkNHUG9pbnRNYWtlKDEwMCwgMzAwKV07CiAKQEAgLTExNDYsNyArMTE0NSw3IEBAIFRFU1QoRHJh
Z0FuZERyb3BUZXN0cywgT3ZlcnJpZGVEcm9wKQogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMo
W1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIw
LCA1MDApXSk7CiAgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAi
c2ltcGxlIl07CiAKLSAgICBhdXRvIHNpbXVsYXRlZEl0ZW1Qcm92aWRlciA9IGFkb3B0TlMoW1tV
SUl0ZW1Qcm92aWRlciBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gc2ltdWxhdGVkSXRlbVByb3Zp
ZGVyID0gYWRvcHROUyhbW05TSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7CiAgICAgW3NpbXVs
YXRlZEl0ZW1Qcm92aWRlciByZWdpc3RlckRhdGFSZXByZXNlbnRhdGlvbkZvclR5cGVJZGVudGlm
aWVyOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVIVE1MIHdpdGhEYXRhOltAIjxib2R5Pjwv
Ym9keT4iIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXV07CiAKICAgICBf
X2Jsb2NrIGJvb2wgZmluaXNoZWRMb2FkaW5nRGF0YSA9IGZhbHNlOwpAQCAtMTE3OSw4ICsxMTc4
LDggQEAgVEVTVChEcmFnQW5kRHJvcFRlc3RzLCBJbmplY3RlZEJ1bmRsZU92ZXJyaWRlUGVyZm9y
bVR3b1N0ZXBEcm9wKQogICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAiYXV0b2ZvY3Vz
LWNvbnRlbnRlZGl0YWJsZSJdOwogICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFT
Y3JpcHQ6QCJnZXRTZWxlY3Rpb24oKS5yZW1vdmVBbGxSYW5nZXMoKSJdOwogCi0gICAgYXV0byBz
aW11bGF0ZWRJdGVtUHJvdmlkZXIgPSBhZG9wdE5TKFtbVUlJdGVtUHJvdmlkZXIgYWxsb2NdIGlu
aXRdKTsKLSAgICBbc2ltdWxhdGVkSXRlbVByb3ZpZGVyIHJlZ2lzdGVyRGF0YVJlcHJlc2VudGF0
aW9uRm9yVHlwZUlkZW50aWZpZXI6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZVVURjhQbGFp
blRleHQgb3B0aW9uczpuaWwgbG9hZEhhbmRsZXI6Xk5TUHJvZ3Jlc3MgKihVSUl0ZW1Qcm92aWRl
ckRhdGFMb2FkQ29tcGxldGlvbkJsb2NrIGNvbXBsZXRpb25CbG9jaykKKyAgICBhdXRvIHNpbXVs
YXRlZEl0ZW1Qcm92aWRlciA9IGFkb3B0TlMoW1tOU0l0ZW1Qcm92aWRlciBhbGxvY10gaW5pdF0p
OworICAgIFtzaW11bGF0ZWRJdGVtUHJvdmlkZXIgcmVnaXN0ZXJEYXRhUmVwcmVzZW50YXRpb25G
b3JUeXBlSWRlbnRpZmllcjooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlVVRGOFBsYWluVGV4
dCB2aXNpYmlsaXR5Ok5TSXRlbVByb3ZpZGVyUmVwcmVzZW50YXRpb25WaXNpYmlsaXR5QWxsIGxv
YWRIYW5kbGVyOl5OU1Byb2dyZXNzICooTlNJdGVtUHJvdmlkZXJEYXRhTG9hZENvbXBsZXRpb25C
bG9jayBjb21wbGV0aW9uQmxvY2spCiAgICAgewogICAgICAgICBjb21wbGV0aW9uQmxvY2soW0Ai
SGVsbG8gd29ybGQiIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSwgbmls
KTsKICAgICAgICAgcmV0dXJuIFtOU1Byb2dyZXNzIGRpc2NyZXRlUHJvZ3Jlc3NXaXRoVG90YWxV
bml0Q291bnQ6MTAwXTsKQEAgLTEyMDIsOCArMTIwMSw4IEBAIFRFU1QoRHJhZ0FuZERyb3BUZXN0
cywgSW5qZWN0ZWRCdW5kbGVBbGxvd1BlcmZvcm1Ud29TdGVwRHJvcCkKICAgICBbd2ViVmlldyBz
eW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJhdXRvZm9jdXMtY29udGVudGVkaXRhYmxl
Il07CiAgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImdldFNlbGVj
dGlvbigpLnJlbW92ZUFsbFJhbmdlcygpIl07CiAKLSAgICBhdXRvIHNpbXVsYXRlZEl0ZW1Qcm92
aWRlciA9IGFkb3B0TlMoW1tVSUl0ZW1Qcm92aWRlciBhbGxvY10gaW5pdF0pOwotICAgIFtzaW11
bGF0ZWRJdGVtUHJvdmlkZXIgcmVnaXN0ZXJEYXRhUmVwcmVzZW50YXRpb25Gb3JUeXBlSWRlbnRp
ZmllcjooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlVVRGOFBsYWluVGV4dCBvcHRpb25zOm5p
bCBsb2FkSGFuZGxlcjpeTlNQcm9ncmVzcyAqKFVJSXRlbVByb3ZpZGVyRGF0YUxvYWRDb21wbGV0
aW9uQmxvY2sgY29tcGxldGlvbkJsb2NrKQorICAgIGF1dG8gc2ltdWxhdGVkSXRlbVByb3ZpZGVy
ID0gYWRvcHROUyhbW05TSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7CisgICAgW3NpbXVsYXRl
ZEl0ZW1Qcm92aWRlciByZWdpc3RlckRhdGFSZXByZXNlbnRhdGlvbkZvclR5cGVJZGVudGlmaWVy
OihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVVVEY4UGxhaW5UZXh0IHZpc2liaWxpdHk6TlNJ
dGVtUHJvdmlkZXJSZXByZXNlbnRhdGlvblZpc2liaWxpdHlBbGwgbG9hZEhhbmRsZXI6Xk5TUHJv
Z3Jlc3MgKihOU0l0ZW1Qcm92aWRlckRhdGFMb2FkQ29tcGxldGlvbkJsb2NrIGNvbXBsZXRpb25C
bG9jaykKICAgICB7CiAgICAgICAgIGNvbXBsZXRpb25CbG9jayhbQCJIZWxsbyB3b3JsZCIgZGF0
YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddLCBuaWwpOwogICAgICAgICByZXR1
cm4gW05TUHJvZ3Jlc3MgZGlzY3JldGVQcm9ncmVzc1dpdGhUb3RhbFVuaXRDb3VudDoxMDBdOwpA
QCAtMTIyNSw3ICsxMjI0LDcgQEAgVEVTVChEcmFnQW5kRHJvcFRlc3RzLCBJbmplY3RlZEJ1bmRs
ZUltYWdlRWxlbWVudERhdGEpCiAKICAgICBfX2Jsb2NrIFJldGFpblB0cjxOU1N0cmluZz4gaW5q
ZWN0ZWRTdHJpbmc7CiAgICAgYXV0byBzaW11bGF0b3IgPSBhZG9wdE5TKFtbRHJhZ0FuZERyb3BT
aW11bGF0b3IgYWxsb2NdIGluaXRXaXRoV2ViVmlldzp3ZWJWaWV3LmdldCgpXSk7Ci0gICAgW3Np
bXVsYXRvciBzZXRDb252ZXJ0SXRlbVByb3ZpZGVyc0Jsb2NrOl5OU0FycmF5ICooVUlJdGVtUHJv
dmlkZXIgKml0ZW1Qcm92aWRlciwgTlNBcnJheSAqLCBOU0RpY3Rpb25hcnkgKmRhdGEpCisgICAg
W3NpbXVsYXRvciBzZXRDb252ZXJ0SXRlbVByb3ZpZGVyc0Jsb2NrOl5OU0FycmF5ICooTlNJdGVt
UHJvdmlkZXIgKml0ZW1Qcm92aWRlciwgTlNBcnJheSAqLCBOU0RpY3Rpb25hcnkgKmRhdGEpCiAg
ICAgewogICAgICAgICBpbmplY3RlZFN0cmluZyA9IGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10g
aW5pdFdpdGhEYXRhOmRhdGFbSW5qZWN0ZWRCdW5kbGVQYXN0ZWJvYXJkRGF0YVR5cGVdIGVuY29k
aW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSk7CiAgICAgICAgIHJldHVybiBAWyBpdGVtUHJvdmlk
ZXIgXTsKQEAgLTEyNDUsNyArMTI0NCw3IEBAIFRFU1QoRHJhZ0FuZERyb3BUZXN0cywgSW5qZWN0
ZWRCdW5kbGVBdHRhY2htZW50RWxlbWVudERhdGEpCiAKICAgICBfX2Jsb2NrIFJldGFpblB0cjxO
U1N0cmluZz4gaW5qZWN0ZWRTdHJpbmc7CiAgICAgYXV0byBzaW11bGF0b3IgPSBhZG9wdE5TKFtb
RHJhZ0FuZERyb3BTaW11bGF0b3IgYWxsb2NdIGluaXRXaXRoV2ViVmlldzp3ZWJWaWV3LmdldCgp
XSk7Ci0gICAgW3NpbXVsYXRvciBzZXRDb252ZXJ0SXRlbVByb3ZpZGVyc0Jsb2NrOl5OU0FycmF5
ICooVUlJdGVtUHJvdmlkZXIgKml0ZW1Qcm92aWRlciwgTlNBcnJheSAqLCBOU0RpY3Rpb25hcnkg
KmRhdGEpCisgICAgW3NpbXVsYXRvciBzZXRDb252ZXJ0SXRlbVByb3ZpZGVyc0Jsb2NrOl5OU0Fy
cmF5ICooTlNJdGVtUHJvdmlkZXIgKml0ZW1Qcm92aWRlciwgTlNBcnJheSAqLCBOU0RpY3Rpb25h
cnkgKmRhdGEpCiAgICAgewogICAgICAgICBpbmplY3RlZFN0cmluZyA9IGFkb3B0TlMoW1tOU1N0
cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOmRhdGFbSW5qZWN0ZWRCdW5kbGVQYXN0ZWJvYXJkRGF0
YVR5cGVdIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSk7CiAgICAgICAgIHJldHVybiBA
WyBpdGVtUHJvdmlkZXIgXTsKQEAgLTEyOTEsNyArMTI5MCw3IEBAIFRFU1QoRHJhZ0FuZERyb3BU
ZXN0cywgQ2FuY2VsbGVkTGlmdERvZXNOb3RDYXVzZVN1YnNlcXVlbnREcmFnc1RvRmFpbCkKICAg
ICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJsaW5rLWFuZC10YXJn
ZXQtZGl2Il07CiAKICAgICBhdXRvIHNpbXVsYXRvciA9IGFkb3B0TlMoW1tEcmFnQW5kRHJvcFNp
bXVsYXRvciBhbGxvY10gaW5pdFdpdGhXZWJWaWV3OndlYlZpZXcuZ2V0KCldKTsKLSAgICBbc2lt
dWxhdG9yIHNldENvbnZlcnRJdGVtUHJvdmlkZXJzQmxvY2s6Xk5TQXJyYXkgKihVSUl0ZW1Qcm92
aWRlciAqLCBOU0FycmF5ICosIE5TRGljdGlvbmFyeSAqKQorICAgIFtzaW11bGF0b3Igc2V0Q29u
dmVydEl0ZW1Qcm92aWRlcnNCbG9jazpeTlNBcnJheSAqKE5TSXRlbVByb3ZpZGVyICosIE5TQXJy
YXkgKiwgTlNEaWN0aW9uYXJ5ICopCiAgICAgewogICAgICAgICByZXR1cm4gQFsgXTsKICAgICB9
XTsKQEAgLTEzMDIsNyArMTMwMSw3IEBAIFRFU1QoRHJhZ0FuZERyb3BUZXN0cywgQ2FuY2VsbGVk
TGlmdERvZXNOb3RDYXVzZVN1YnNlcXVlbnREcmFnc1RvRmFpbCkKICAgICBjaGVja1N0cmluZ0Fy
cmF5c0FyZUVxdWFsKEBbQCJkcmFnc3RhcnQiLCBAImRyYWdlbmQiXSwgW291dHB1dFRleHQgY29t
cG9uZW50c1NlcGFyYXRlZEJ5U3RyaW5nOkAiICJdKTsKIAogICAgIFt3ZWJWaWV3IHN0cmluZ0J5
RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJvdXRwdXQuaW5uZXJIVE1MID0gJyciXTsKLSAgICBbc2lt
dWxhdG9yIHNldENvbnZlcnRJdGVtUHJvdmlkZXJzQmxvY2s6Xk5TQXJyYXkgKihVSUl0ZW1Qcm92
aWRlciAqaXRlbVByb3ZpZGVyLCBOU0FycmF5ICosIE5TRGljdGlvbmFyeSAqKQorICAgIFtzaW11
bGF0b3Igc2V0Q29udmVydEl0ZW1Qcm92aWRlcnNCbG9jazpeTlNBcnJheSAqKE5TSXRlbVByb3Zp
ZGVyICppdGVtUHJvdmlkZXIsIE5TQXJyYXkgKiwgTlNEaWN0aW9uYXJ5ICopCiAgICAgewogICAg
ICAgICByZXR1cm4gQFsgaXRlbVByb3ZpZGVyIF07CiAgICAgfV07CkBAIC0xNDIzLDE1ICsxNDIy
LDE1IEBAIFRFU1QoRHJhZ0FuZERyb3BUZXN0cywgV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZExv
YWRpbmcpCiAgICAgc3RhdGljIE5TU3RyaW5nICpzbG93U3RyaW5nID0gQCJUaGlzIGRhdGEgbG9h
ZHMgc2xvd2x5IjsKIAogICAgIFdlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQgKnBhc3RlYm9hcmQg
PSBbV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZCBzaGFyZWRJbnN0YW5jZV07Ci0gICAgYXV0byBm
YXN0SXRlbSA9IGFkb3B0TlMoW1tVSUl0ZW1Qcm92aWRlciBhbGxvY10gaW5pdF0pOwotICAgIFtm
YXN0SXRlbSByZWdpc3RlckRhdGFSZXByZXNlbnRhdGlvbkZvclR5cGVJZGVudGlmaWVyOihfX2Jy
aWRnZSBOU1N0cmluZyAqKWtVVFR5cGVVVEY4UGxhaW5UZXh0IG9wdGlvbnM6bmlsIGxvYWRIYW5k
bGVyOl5OU1Byb2dyZXNzICooVUlJdGVtUHJvdmlkZXJEYXRhTG9hZENvbXBsZXRpb25CbG9jayBj
b21wbGV0aW9uQmxvY2spCisgICAgYXV0byBmYXN0SXRlbSA9IGFkb3B0TlMoW1tOU0l0ZW1Qcm92
aWRlciBhbGxvY10gaW5pdF0pOworICAgIFtmYXN0SXRlbSByZWdpc3RlckRhdGFSZXByZXNlbnRh
dGlvbkZvclR5cGVJZGVudGlmaWVyOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVVVEY4UGxh
aW5UZXh0IHZpc2liaWxpdHk6TlNJdGVtUHJvdmlkZXJSZXByZXNlbnRhdGlvblZpc2liaWxpdHlB
bGwgbG9hZEhhbmRsZXI6Xk5TUHJvZ3Jlc3MgKihOU0l0ZW1Qcm92aWRlckRhdGFMb2FkQ29tcGxl
dGlvbkJsb2NrIGNvbXBsZXRpb25CbG9jaykKICAgICB7CiAgICAgICAgIGNvbXBsZXRpb25CbG9j
ayhbZmFzdFN0cmluZyBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10sIG5p
bCk7CiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgfV07CiAKLSAgICBhdXRvIHNsb3dJdGVtID0g
YWRvcHROUyhbW1VJSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7Ci0gICAgW3Nsb3dJdGVtIHJl
Z2lzdGVyRGF0YVJlcHJlc2VudGF0aW9uRm9yVHlwZUlkZW50aWZpZXI6KF9fYnJpZGdlIE5TU3Ry
aW5nICopa1VUVHlwZVVURjhQbGFpblRleHQgb3B0aW9uczpuaWwgbG9hZEhhbmRsZXI6Xk5TUHJv
Z3Jlc3MgKihVSUl0ZW1Qcm92aWRlckRhdGFMb2FkQ29tcGxldGlvbkJsb2NrIGNvbXBsZXRpb25C
bG9jaykKKyAgICBhdXRvIHNsb3dJdGVtID0gYWRvcHROUyhbW05TSXRlbVByb3ZpZGVyIGFsbG9j
XSBpbml0XSk7CisgICAgW3Nsb3dJdGVtIHJlZ2lzdGVyRGF0YVJlcHJlc2VudGF0aW9uRm9yVHlw
ZUlkZW50aWZpZXI6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZVVURjhQbGFpblRleHQgdmlz
aWJpbGl0eTpOU0l0ZW1Qcm92aWRlclJlcHJlc2VudGF0aW9uVmlzaWJpbGl0eUFsbCBsb2FkSGFu
ZGxlcjpeTlNQcm9ncmVzcyAqKE5TSXRlbVByb3ZpZGVyRGF0YUxvYWRDb21wbGV0aW9uQmxvY2sg
Y29tcGxldGlvbkJsb2NrKQogICAgIHsKICAgICAgICAgc2xlZXAoMl9zKTsKICAgICAgICAgY29t
cGxldGlvbkJsb2NrKFtzbG93U3RyaW5nIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0Vu
Y29kaW5nXSwgbmlsKTsKQEAgLTE1NDUsNyArMTU0NCw3IEBAIFRFU1QoRHJhZ0FuZERyb3BUZXN0
cywgRGF0YVRyYW5zZmVyR2V0RGF0YVdoZW5Ecm9wcGluZ0ltYWdlQW5kTWFya3VwKQogICAgIFt3
ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAIkRhdGFUcmFuc2ZlciJdOwog
CiAgICAgYXV0byBzaW11bGF0b3IgPSBhZG9wdE5TKFtbRHJhZ0FuZERyb3BTaW11bGF0b3IgYWxs
b2NdIGluaXRXaXRoV2ViVmlldzp3ZWJWaWV3LmdldCgpXSk7Ci0gICAgYXV0byBpdGVtUHJvdmlk
ZXIgPSBhZG9wdE5TKFtbVUlJdGVtUHJvdmlkZXIgYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIGl0
ZW1Qcm92aWRlciA9IGFkb3B0TlMoW1tOU0l0ZW1Qcm92aWRlciBhbGxvY10gaW5pdF0pOwogICAg
IFtpdGVtUHJvdmlkZXIgcmVnaXN0ZXJEYXRhUmVwcmVzZW50YXRpb25Gb3JUeXBlSWRlbnRpZmll
cjooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlUE5HIHdpdGhEYXRhOnRlc3RJY29uSW1hZ2VE
YXRhKCldOwogICAgIE5TU3RyaW5nICptYXJrdXBTdHJpbmcgPSBAIjxzY3JpcHQ+YmFyKCk8L3Nj
cmlwdD48c3Ryb25nIG9ubW91c2Vkb3duPWphdmFzY3JpcHQ6dm9pZCgwKT5IRUxMTyBXT1JMRDwv
c3Ryb25nPiI7CiAgICAgW2l0ZW1Qcm92aWRlciByZWdpc3RlckRhdGFSZXByZXNlbnRhdGlvbkZv
clR5cGVJZGVudGlmaWVyOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVIVE1MIHdpdGhEYXRh
OlttYXJrdXBTdHJpbmcgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddXTsK
QEAgLTE2MzEsMTMgKzE2MzAsMTMgQEAgVEVTVChEcmFnQW5kRHJvcFRlc3RzLCBEYXRhVHJhbnNm
ZXJHZXREYXRhV2hlbkRyb3BwaW5nSW1hZ2VXaXRoRmlsZVVSTCkKICAgICBbd2ViVmlldyBzeW5j
aHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJkdW1wLWRhdGF0cmFuc2Zlci10eXBlcyJdOwog
ICAgIGF1dG8gc2ltdWxhdG9yID0gYWRvcHROUyhbW0RyYWdBbmREcm9wU2ltdWxhdG9yIGFsbG9j
XSBpbml0V2l0aFdlYlZpZXc6d2ViVmlldy5nZXQoKV0pOwogCi0gICAgYXV0byBpdGVtUHJvdmlk
ZXIgPSBhZG9wdE5TKFtbVUlJdGVtUHJvdmlkZXIgYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIGl0
ZW1Qcm92aWRlciA9IGFkb3B0TlMoW1tOU0l0ZW1Qcm92aWRlciBhbGxvY10gaW5pdF0pOwogICAg
IE5TVVJMICppY29uVVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpA
Imljb24iIHdpdGhFeHRlbnNpb246QCJwbmciIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEku
cmVzb3VyY2VzIl07CiAgICAgW2l0ZW1Qcm92aWRlciByZWdpc3RlckZpbGVSZXByZXNlbnRhdGlv
bkZvclR5cGVJZGVudGlmaWVyOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVQTkcgZmlsZU9w
dGlvbnM6MCB2aXNpYmlsaXR5Ok5TSXRlbVByb3ZpZGVyUmVwcmVzZW50YXRpb25WaXNpYmlsaXR5
QWxsIGxvYWRIYW5kbGVyOltwcm90ZWN0ZWRJY29uVVJMID0gcmV0YWluUHRyKGljb25VUkwpXSAo
RmlsZUxvYWRDb21wbGV0aW9uQmxvY2sgY29tcGxldGlvbkhhbmRsZXIpIC0+IE5TUHJvZ3Jlc3Mg
KiB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHByb3RlY3RlZEljb25VUkwuZ2V0KCksIE5P
LCBuaWwpOwogICAgICAgICByZXR1cm4gbmlsOwogICAgIH1dOwotICAgIFtpdGVtUHJvdmlkZXIg
cmVnaXN0ZXJPYmplY3Q6aWNvblVSTCB2aXNpYmlsaXR5OlVJSXRlbVByb3ZpZGVyUmVwcmVzZW50
YXRpb25PcHRpb25zVmlzaWJpbGl0eUFsbF07CisgICAgW2l0ZW1Qcm92aWRlciByZWdpc3Rlck9i
amVjdDppY29uVVJMIHZpc2liaWxpdHk6TlNJdGVtUHJvdmlkZXJSZXByZXNlbnRhdGlvblZpc2li
aWxpdHlBbGxdOwogICAgIFtzaW11bGF0b3Igc2V0RXh0ZXJuYWxJdGVtUHJvdmlkZXJzOkBbIGl0
ZW1Qcm92aWRlci5nZXQoKSBdXTsKIAogICAgIFtzaW11bGF0b3IgcnVuRnJvbTpDR1BvaW50TWFr
ZSgzMDAsIDM3NSkgdG86Q0dQb2ludE1ha2UoNTAsIDM3NSldOwpAQCAtMTY1NSwxMyArMTY1NCwx
MyBAQCBURVNUKERyYWdBbmREcm9wVGVzdHMsIERhdGFUcmFuc2ZlckdldERhdGFXaGVuRHJvcHBp
bmdJbWFnZVdpdGhIVFRQVVJMKQogICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBh
Z2VOYW1lZDpAImR1bXAtZGF0YXRyYW5zZmVyLXR5cGVzIl07CiAgICAgYXV0byBzaW11bGF0b3Ig
PSBhZG9wdE5TKFtbRHJhZ0FuZERyb3BTaW11bGF0b3IgYWxsb2NdIGluaXRXaXRoV2ViVmlldzp3
ZWJWaWV3LmdldCgpXSk7CiAKLSAgICBhdXRvIGl0ZW1Qcm92aWRlciA9IGFkb3B0TlMoW1tVSUl0
ZW1Qcm92aWRlciBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gaXRlbVByb3ZpZGVyID0gYWRvcHRO
UyhbW05TSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7CiAgICAgW2l0ZW1Qcm92aWRlciByZWdp
c3RlckRhdGFSZXByZXNlbnRhdGlvbkZvclR5cGVJZGVudGlmaWVyOihfX2JyaWRnZSBOU1N0cmlu
ZyAqKWtVVFR5cGVKUEVHIHZpc2liaWxpdHk6TlNJdGVtUHJvdmlkZXJSZXByZXNlbnRhdGlvblZp
c2liaWxpdHlBbGwgbG9hZEhhbmRsZXI6Xk5TUHJvZ3Jlc3MgKihEYXRhTG9hZENvbXBsZXRpb25C
bG9jayBjb21wbGV0aW9uSGFuZGxlcikKICAgICB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KFVJSW1hZ2VKUEVHUmVwcmVzZW50YXRpb24odGVzdEljb25JbWFnZSgpLCAwLjUpLCBuaWwpOwog
ICAgICAgICByZXR1cm4gbmlsOwogICAgIH1dOwotICAgIFtpdGVtUHJvdmlkZXIgcmVnaXN0ZXJP
YmplY3Q6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vd2Via2l0Lm9yZyJdIHZpc2liaWxp
dHk6VUlJdGVtUHJvdmlkZXJSZXByZXNlbnRhdGlvbk9wdGlvbnNWaXNpYmlsaXR5QWxsXTsKKyAg
ICBbaXRlbVByb3ZpZGVyIHJlZ2lzdGVyT2JqZWN0OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0
cDovL3dlYmtpdC5vcmciXSB2aXNpYmlsaXR5Ok5TSXRlbVByb3ZpZGVyUmVwcmVzZW50YXRpb25W
aXNpYmlsaXR5QWxsXTsKICAgICBbc2ltdWxhdG9yIHNldEV4dGVybmFsSXRlbVByb3ZpZGVyczpA
WyBpdGVtUHJvdmlkZXIuZ2V0KCkgXV07CiAKICAgICBbc2ltdWxhdG9yIHJ1bkZyb206Q0dQb2lu
dE1ha2UoMzAwLCAzNzUpIHRvOkNHUG9pbnRNYWtlKDUwLCAzNzUpXTsKQEAgLTE2NzgsNyArMTY3
Nyw3IEBAIFRFU1QoRHJhZ0FuZERyb3BUZXN0cywgRGF0YVRyYW5zZmVyR2V0RGF0YVdoZW5Ecm9w
cGluZ1Jlc3BlY3RzUHJlc2VudGF0aW9uU3R5bGUpCiAgICAgYXV0byBzaW11bGF0b3IgPSBhZG9w
dE5TKFtbRHJhZ0FuZERyb3BTaW11bGF0b3IgYWxsb2NdIGluaXRXaXRoV2ViVmlldzp3ZWJWaWV3
LmdldCgpXSk7CiAKICAgICBydW5UZXN0V2l0aFRlbXBvcmFyeVRleHRGaWxlKF4oTlNVUkwgKmZp
bGVVUkwpIHsKLSAgICAgICAgYXV0byBpdGVtUHJvdmlkZXIgPSBhZG9wdE5TKFtbVUlJdGVtUHJv
dmlkZXIgYWxsb2NdIGluaXRdKTsKKyAgICAgICAgYXV0byBpdGVtUHJvdmlkZXIgPSBhZG9wdE5T
KFtbTlNJdGVtUHJvdmlkZXIgYWxsb2NdIGluaXRdKTsKICAgICAgICAgW2l0ZW1Qcm92aWRlciBy
ZWdpc3RlckZpbGVSZXByZXNlbnRhdGlvbkZvclR5cGVJZGVudGlmaWVyOihfX2JyaWRnZSBOU1N0
cmluZyAqKWtVVFR5cGVVVEY4UGxhaW5UZXh0IGZpbGVPcHRpb25zOjAgdmlzaWJpbGl0eTpOU0l0
ZW1Qcm92aWRlclJlcHJlc2VudGF0aW9uVmlzaWJpbGl0eUFsbCBsb2FkSGFuZGxlcjpbcHJvdGVj
dGVkRmlsZVVSTCA9IHJldGFpblB0cihmaWxlVVJMKV0gKEZpbGVMb2FkQ29tcGxldGlvbkJsb2Nr
IGNvbXBsZXRpb25IYW5kbGVyKSAtPiBOU1Byb2dyZXNzICogewogICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIocHJvdGVjdGVkRmlsZVVSTC5nZXQoKSwgTk8sIG5pbCk7CiAgICAgICAgICAg
ICByZXR1cm4gbmlsOwpAQCAtMTczMSw3ICsxNzMwLDcgQEAgVEVTVChEcmFnQW5kRHJvcFRlc3Rz
LCBEYXRhVHJhbnNmZXJHZXREYXRhUmVhZFBsYWluQW5kUmljaFRleHQpCiAgICAgW3dlYlZpZXcg
c3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAiRGF0YVRyYW5zZmVyIl07CiAgICAgYXV0
byBzaW11bGF0b3IgPSBhZG9wdE5TKFtbRHJhZ0FuZERyb3BTaW11bGF0b3IgYWxsb2NdIGluaXRX
aXRoV2ViVmlldzp3ZWJWaWV3LmdldCgpXSk7CiAKLSAgICBhdXRvIGl0ZW1Qcm92aWRlciA9IGFk
b3B0TlMoW1tVSUl0ZW1Qcm92aWRlciBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gaXRlbVByb3Zp
ZGVyID0gYWRvcHROUyhbW05TSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7CiAgICAgTlNEaWN0
aW9uYXJ5ICp0ZXh0QXR0cmlidXRlcyA9IEB7IE5TRm9udEF0dHJpYnV0ZU5hbWU6IFtVSUZvbnQg
Ym9sZFN5c3RlbUZvbnRPZlNpemU6MjBdIH07CiAgICAgTlNBdHRyaWJ1dGVkU3RyaW5nICpyaWNo
VGV4dCA9IFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzpAIldlYktp
dCIgYXR0cmlidXRlczp0ZXh0QXR0cmlidXRlc107CiAgICAgW2l0ZW1Qcm92aWRlciByZWdpc3Rl
ck9iamVjdDpyaWNoVGV4dCB2aXNpYmlsaXR5Ok5TSXRlbVByb3ZpZGVyUmVwcmVzZW50YXRpb25W
aXNpYmlsaXR5QWxsXTsKQEAgLTE3NTUsNyArMTc1NCw3IEBAIFRFU1QoRHJhZ0FuZERyb3BUZXN0
cywgRGF0YVRyYW5zZmVyU3VwcHJlc3NHZXREYXRhRHVlVG9QcmVzZW5jZU9mVGV4dEZpbGUpCiAg
ICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAiRGF0YVRyYW5zZmVy
Il07CiAgICAgYXV0byBzaW11bGF0b3IgPSBhZG9wdE5TKFtbRHJhZ0FuZERyb3BTaW11bGF0b3Ig
YWxsb2NdIGluaXRXaXRoV2ViVmlldzp3ZWJWaWV3LmdldCgpXSk7CiAKLSAgICBhdXRvIGl0ZW1Q
cm92aWRlciA9IGFkb3B0TlMoW1tVSUl0ZW1Qcm92aWRlciBhbGxvY10gaW5pdF0pOworICAgIGF1
dG8gaXRlbVByb3ZpZGVyID0gYWRvcHROUyhbW05TSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7
CiAgICAgW2l0ZW1Qcm92aWRlciByZWdpc3Rlck9iamVjdDpAIkhlbGxvIHdvcmxkIiB2aXNpYmls
aXR5Ok5TSXRlbVByb3ZpZGVyUmVwcmVzZW50YXRpb25WaXNpYmlsaXR5QWxsXTsKICAgICBbaXRl
bVByb3ZpZGVyIHNldFN1Z2dlc3RlZE5hbWU6QCJoZWxsby50eHQiXTsKIApAQCAtMTc3Niw3ICsx
Nzc1LDcgQEAgVEVTVChEcmFnQW5kRHJvcFRlc3RzLCBEYXRhVHJhbnNmZXJHZXREYXRhQ2Fubm90
UmVhZFByaXZhdGVBcmJpdHJhcnlUeXBlcykKICAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9h
ZFRlc3RQYWdlTmFtZWQ6QCJkdW1wLWRhdGF0cmFuc2Zlci10eXBlcyJdOwogICAgIGF1dG8gc2lt
dWxhdG9yID0gYWRvcHROUyhbW0RyYWdBbmREcm9wU2ltdWxhdG9yIGFsbG9jXSBpbml0V2l0aFdl
YlZpZXc6d2ViVmlldy5nZXQoKV0pOwogCi0gICAgYXV0byBpdGVtUHJvdmlkZXIgPSBhZG9wdE5T
KFtbVUlJdGVtUHJvdmlkZXIgYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIGl0ZW1Qcm92aWRlciA9
IGFkb3B0TlMoW1tOU0l0ZW1Qcm92aWRlciBhbGxvY10gaW5pdF0pOwogICAgIFtpdGVtUHJvdmlk
ZXIgcmVnaXN0ZXJEYXRhUmVwcmVzZW50YXRpb25Gb3JUeXBlSWRlbnRpZmllcjooX19icmlkZ2Ug
TlNTdHJpbmcgKilrVVRUeXBlTVAzIHZpc2liaWxpdHk6TlNJdGVtUHJvdmlkZXJSZXByZXNlbnRh
dGlvblZpc2liaWxpdHlBbGwgbG9hZEhhbmRsZXI6Xk5TUHJvZ3Jlc3MgKihEYXRhTG9hZENvbXBs
ZXRpb25CbG9jayBjb21wbGV0aW9uSGFuZGxlcikKICAgICB7CiAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKFtAInRoaXMgaXMgYSB0ZXN0IiBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdF
bmNvZGluZ10sIG5pbCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0Ry
YWdBbmREcm9wU2ltdWxhdG9yLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0RyYWdBbmRE
cm9wU2ltdWxhdG9yLmgKaW5kZXggYjkxMmRhM2ExN2JhY2MwODZkZGFlYmYxNTYxOTRkNWI4MzJi
MWQwMC4uYTM5OGY5ODJhMzQ0ZjBhZDdkNDUwOWVhMWU2OWNkYzg4ZmE5Nzg1NyAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9EcmFnQW5kRHJvcFNpbXVsYXRvci5oCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvRHJhZ0FuZERyb3BTaW11bGF0b3IuaApAQCAtOTYs
NyArOTYsNyBAQCB0eXBlZGVmIE5TRGljdGlvbmFyeTxOU051bWJlciAqLCBOU1ZhbHVlICo+ICpQ
cm9ncmVzc1RvQ0dQb2ludFZhbHVlTWFwOwogQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgc2hv
dWxkRW5zdXJlVUlBcHBsaWNhdGlvbjsKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIHNob3Vs
ZEFsbG93TW92ZU9wZXJhdGlvbjsKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCbG9ja1B0cjxCT09M
KF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvICopPiBzaG93Q3VzdG9tQWN0aW9uU2hlZXRCbG9jazsK
LUBwcm9wZXJ0eSAobm9uYXRvbWljKSBCbG9ja1B0cjxOU0FycmF5ICooVUlJdGVtUHJvdmlkZXIg
KiwgTlNBcnJheSAqLCBOU0RpY3Rpb25hcnkgKik+IGNvbnZlcnRJdGVtUHJvdmlkZXJzQmxvY2s7
CitAcHJvcGVydHkgKG5vbmF0b21pYykgQmxvY2tQdHI8TlNBcnJheSAqKE5TSXRlbVByb3ZpZGVy
ICosIE5TQXJyYXkgKiwgTlNEaWN0aW9uYXJ5ICopPiBjb252ZXJ0SXRlbVByb3ZpZGVyc0Jsb2Nr
OwogQHByb3BlcnR5IChub25hdG9taWMpIEJsb2NrUHRyPE5TQXJyYXkgKihpZCA8VUlEcm9wU2Vz
c2lvbj4pPiBvdmVycmlkZVBlcmZvcm1Ecm9wQmxvY2s7CiBAcHJvcGVydHkgKG5vbmF0b21pYywg
c3Ryb25nKSBOU0FycmF5ICpleHRlcm5hbEl0ZW1Qcm92aWRlcnM7CiBAcHJvcGVydHkgKG5vbmF0
b21pYykgQmxvY2tQdHI8TlNVSW50ZWdlcihOU1VJbnRlZ2VyLCBpZCk+IG92ZXJyaWRlRHJhZ1Vw
ZGF0ZUJsb2NrOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvRHJhZ0FuZERy
b3BTaW11bGF0b3JJT1MubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9EcmFnQW5kRHJvcFNp
bXVsYXRvcklPUy5tbQppbmRleCA3NDU1NDdkYzZiOWViMmVhNjA0Mzk4NTczNTFhODNmNzE4NzI1
MjJmLi4yYjAwYzlmNTU4NmU2ZjIzZDQyMmQ2MTcxYzFiZTg3ZmRkMDQ1MWU5IDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9EcmFnQW5kRHJvcFNpbXVsYXRvcklPUy5tbQorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9EcmFnQW5kRHJvcFNpbXVsYXRvcklPUy5tbQpAQCAt
MTIwLDcgKzEyMCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJOwogICAgIHJldHVy
biBZRVM7CiB9CiAKLS0gKEJPT0wpY2FuTG9hZE9iamVjdHNPZkNsYXNzOihDbGFzczxVSUl0ZW1Q
cm92aWRlclJlYWRpbmc+KWFDbGFzcworLSAoQk9PTCljYW5Mb2FkT2JqZWN0c09mQ2xhc3M6KENs
YXNzPE5TSXRlbVByb3ZpZGVyUmVhZGluZz4pYUNsYXNzCiB7CiAgICAgZm9yIChVSURyYWdJdGVt
ICppdGVtIGluIHNlbGYuaXRlbXMpIHsKICAgICAgICAgaWYgKFtpdGVtLml0ZW1Qcm92aWRlciBj
YW5Mb2FkT2JqZWN0T2ZDbGFzczphQ2xhc3NdKQpAQCAtMTI5LDkgKzEyOSw5IEBAIHVzaW5nIG5h
bWVzcGFjZSBUZXN0V2ViS2l0QVBJOwogICAgIHJldHVybiBOTzsKIH0KIAotLSAoQk9PTCljYW5M
b2FkT2JqZWN0c09mQ2xhc3NlczooTlNBcnJheTxDbGFzczxVSUl0ZW1Qcm92aWRlclJlYWRpbmc+
PiAqKWNsYXNzZXMKKy0gKEJPT0wpY2FuTG9hZE9iamVjdHNPZkNsYXNzZXM6KE5TQXJyYXk8Q2xh
c3M8TlNJdGVtUHJvdmlkZXJSZWFkaW5nPj4gKiljbGFzc2VzCiB7Ci0gICAgZm9yIChDbGFzczxV
SUl0ZW1Qcm92aWRlclJlYWRpbmc+IGFDbGFzcyBpbiBjbGFzc2VzKSB7CisgICAgZm9yIChDbGFz
czxOU0l0ZW1Qcm92aWRlclJlYWRpbmc+IGFDbGFzcyBpbiBjbGFzc2VzKSB7CiAgICAgICAgIEJP
T0wgY2FuTG9hZCA9IE5POwogICAgICAgICBmb3IgKFVJRHJhZ0l0ZW0gKml0ZW0gaW4gc2VsZi5p
dGVtcykKICAgICAgICAgICAgIGNhbkxvYWQgfD0gW2l0ZW0uaXRlbVByb3ZpZGVyIGNhbkxvYWRP
YmplY3RPZkNsYXNzOmFDbGFzc107CkBAIC0xNzEsMTAgKzE3MSwxMCBAQCB1c2luZyBuYW1lc3Bh
Y2UgVGVzdFdlYktpdEFQSTsKIAogQGltcGxlbWVudGF0aW9uIE1vY2tEcm9wU2Vzc2lvbgogCi0t
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhQcm92aWRlcnM6KE5TQXJyYXk8VUlJdGVtUHJvdmlkZXIg
Kj4gKilwcm92aWRlcnMgbG9jYXRpb246KENHUG9pbnQpbG9jYXRpb25JbldpbmRvdyB3aW5kb3c6
KFVJV2luZG93ICopd2luZG93IGFsbG93TW92ZTooQk9PTClhbGxvd01vdmUKKy0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aFByb3ZpZGVyczooTlNBcnJheTxOU0l0ZW1Qcm92aWRlciAqPiAqKXByb3Zp
ZGVycyBsb2NhdGlvbjooQ0dQb2ludClsb2NhdGlvbkluV2luZG93IHdpbmRvdzooVUlXaW5kb3cg
Kil3aW5kb3cgYWxsb3dNb3ZlOihCT09MKWFsbG93TW92ZQogewogICAgIGF1dG8gaXRlbXMgPSBh
ZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKLSAgICBmb3IgKFVJSXRlbVBy
b3ZpZGVyICppdGVtUHJvdmlkZXIgaW4gcHJvdmlkZXJzKQorICAgIGZvciAoTlNJdGVtUHJvdmlk
ZXIgKml0ZW1Qcm92aWRlciBpbiBwcm92aWRlcnMpCiAgICAgICAgIFtpdGVtcyBhZGRPYmplY3Q6
W1tbVUlEcmFnSXRlbSBhbGxvY10gaW5pdFdpdGhJdGVtUHJvdmlkZXI6aXRlbVByb3ZpZGVyXSBh
dXRvcmVsZWFzZV1dOwogCiAgICAgcmV0dXJuIFtzdXBlciBpbml0V2l0aEl0ZW1zOml0ZW1zLmdl
dCgpIGxvY2F0aW9uOmxvY2F0aW9uSW5XaW5kb3cgd2luZG93OndpbmRvdyBhbGxvd01vdmU6YWxs
b3dNb3ZlXTsKQEAgLTIxNSw3ICsyMTUsNyBAQCB1c2luZyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQ
STsKICAgICByZXR1cm4gTk87CiB9CiAKLS0gKEJPT0wpY2FuQ3JlYXRlSXRlbXNPZkNsYXNzOihD
bGFzczxVSUl0ZW1Qcm92aWRlclJlYWRpbmc+KWFDbGFzcworLSAoQk9PTCljYW5DcmVhdGVJdGVt
c09mQ2xhc3M6KENsYXNzPE5TSXRlbVByb3ZpZGVyUmVhZGluZz4pYUNsYXNzCiB7CiAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIE5POwpAQCAtNTE2LDcgKzUxNiw3IEBAIHN0
YXRpYyBOU0FycmF5ICpkcmFnQW5kRHJvcEV2ZW50TmFtZXMoKQogCiAgICAgc3dpdGNoIChfcGhh
c2UpIHsKICAgICBjYXNlIERyYWdBbmREcm9wUGhhc2VCZWdpbm5pbmc6IHsKLSAgICAgICAgTlNN
dXRhYmxlQXJyYXk8VUlJdGVtUHJvdmlkZXIgKj4gKml0ZW1Qcm92aWRlcnMgPSBbTlNNdXRhYmxl
QXJyYXkgYXJyYXldOworICAgICAgICBOU011dGFibGVBcnJheTxOU0l0ZW1Qcm92aWRlciAqPiAq
aXRlbVByb3ZpZGVycyA9IFtOU011dGFibGVBcnJheSBhcnJheV07CiAgICAgICAgIE5TQXJyYXkg
Kml0ZW1zID0gW1tfd2ViVmlldyBkcmFnSW50ZXJhY3Rpb25EZWxlZ2F0ZV0gZHJhZ0ludGVyYWN0
aW9uOltfd2ViVmlldyBkcmFnSW50ZXJhY3Rpb25dIGl0ZW1zRm9yQmVnaW5uaW5nU2Vzc2lvbjpf
ZHJhZ1Nlc3Npb24uZ2V0KCldOwogICAgICAgICBpZiAoIWl0ZW1zLmNvdW50KSB7CiAgICAgICAg
ICAgICBfcGhhc2UgPSBEcmFnQW5kRHJvcFBoYXNlQ2FuY2VsbGVkOwpAQCAtNjUwLDcgKzY1MCw3
IEBAIHN0YXRpYyBOU0FycmF5ICpkcmFnQW5kRHJvcEV2ZW50TmFtZXMoKQogCiAjcHJhZ21hIG1h
cmsgLSBXS1VJRGVsZWdhdGVQcml2YXRlCiAKLS0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAq
KXdlYlZpZXcgZGF0YUludGVyYWN0aW9uT3BlcmF0aW9uV2FzSGFuZGxlZDooQk9PTCloYW5kbGVk
IGZvclNlc3Npb246KGlkKXNlc3Npb24gaXRlbVByb3ZpZGVyczooTlNBcnJheTxVSUl0ZW1Qcm92
aWRlciAqPiAqKWl0ZW1Qcm92aWRlcnMKKy0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdl
YlZpZXcgZGF0YUludGVyYWN0aW9uT3BlcmF0aW9uV2FzSGFuZGxlZDooQk9PTCloYW5kbGVkIGZv
clNlc3Npb246KGlkKXNlc3Npb24gaXRlbVByb3ZpZGVyczooTlNBcnJheTxOU0l0ZW1Qcm92aWRl
ciAqPiAqKWl0ZW1Qcm92aWRlcnMKIHsKICAgICBfc3VwcHJlc3NlZFNlbGVjdGlvbkNvbW1hbmRz
RHVyaW5nRHJvcCA9IFtfd2ViVmlldyB0ZXh0SW5wdXRDb250ZW50Vmlld10uX3Nob3VsZFN1cHBy
ZXNzU2VsZWN0aW9uQ29tbWFuZHM7CiAgICAgX2lzRG9uZVdpdGhDdXJyZW50UnVuID0gdHJ1ZTsK
QEAgLTY2NCw3ICs2NjQsNyBAQCBzdGF0aWMgTlNBcnJheSAqZHJhZ0FuZERyb3BFdmVudE5hbWVz
KCkKICAgICByZXR1cm4gc2VsZi5vdmVycmlkZURyYWdVcGRhdGVCbG9jayA/IHNlbGYub3ZlcnJp
ZGVEcmFnVXBkYXRlQmxvY2sob3BlcmF0aW9uLCBzZXNzaW9uKSA6IG9wZXJhdGlvbjsKIH0KIAot
LSAoTlNBcnJheSAqKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGFkanVzdGVkRGF0YUlu
dGVyYWN0aW9uSXRlbVByb3ZpZGVyc0Zvckl0ZW1Qcm92aWRlcjooVUlJdGVtUHJvdmlkZXIgKilp
dGVtUHJvdmlkZXIgcmVwcmVzZW50aW5nT2JqZWN0czooTlNBcnJheSAqKXJlcHJlc2VudGluZ09i
amVjdHMgYWRkaXRpb25hbERhdGE6KE5TRGljdGlvbmFyeSAqKWFkZGl0aW9uYWxEYXRhCistIChO
U0FycmF5ICopX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgYWRqdXN0ZWREYXRhSW50ZXJh
Y3Rpb25JdGVtUHJvdmlkZXJzRm9ySXRlbVByb3ZpZGVyOihOU0l0ZW1Qcm92aWRlciAqKWl0ZW1Q
cm92aWRlciByZXByZXNlbnRpbmdPYmplY3RzOihOU0FycmF5ICopcmVwcmVzZW50aW5nT2JqZWN0
cyBhZGRpdGlvbmFsRGF0YTooTlNEaWN0aW9uYXJ5ICopYWRkaXRpb25hbERhdGEKIHsKICAgICBy
ZXR1cm4gc2VsZi5jb252ZXJ0SXRlbVByb3ZpZGVyc0Jsb2NrID8gc2VsZi5jb252ZXJ0SXRlbVBy
b3ZpZGVyc0Jsb2NrKGl0ZW1Qcm92aWRlciwgcmVwcmVzZW50aW5nT2JqZWN0cywgYWRkaXRpb25h
bERhdGEpIDogQFsgaXRlbVByb3ZpZGVyIF07CiB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL2lvcy9VSUtpdFNQSS5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvVUlLaXRTUEku
aAppbmRleCBmMjhkMDBlOGVjNjdhNmJiMTdmNWFhZmM3NTc4OWVhN2I1MDVhZTFjLi5kYWEyOWEw
OTEwYmRiMjdhZDFiNjViNzU5MjIxMmVkNDljMzdkZjRhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL2lvcy9VSUtpdFNQSS5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1VJ
S2l0U1BJLmgKQEAgLTQxLDEyICs0MSw4IEBACiBAcHJvdG9jb2wgVUlEcmFnU2Vzc2lvbjsKIEBj
bGFzcyBVSURyYWdJbnRlcmFjdGlvbjsKIEBjbGFzcyBVSURyYWdJdGVtOwotI2ltcG9ydCA8VUlL
aXQvTlNTdHJpbmcrVUlJdGVtUHJvdmlkZXIuaD4KLSNpbXBvcnQgPFVJS2l0L05TVVJMK1VJSXRl
bVByb3ZpZGVyLmg+CisjaW1wb3J0IDxVSUtpdC9OU0l0ZW1Qcm92aWRlcitVSUtpdEFkZGl0aW9u
c19Qcml2YXRlLmg+CiAjaW1wb3J0IDxVSUtpdC9VSURyYWdJbnRlcmFjdGlvbl9Qcml2YXRlLmg+
Ci0jaW1wb3J0IDxVSUtpdC9VSUltYWdlK1VJSXRlbVByb3ZpZGVyLmg+Ci0jaW1wb3J0IDxVSUtp
dC9VSUl0ZW1Qcm92aWRlci5oPgotI2ltcG9ydCA8VUlLaXQvVUlJdGVtUHJvdmlkZXJfUHJpdmF0
ZS5oPgogI2VuZGlmIC8vIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAKICNlbHNlCkBAIC04OCw0MiAr
ODQsMTAgQEAgV1RGX0VYVEVSTl9DX0VORAogLSAoQk9PTClfcmVzdG9yZUZvY3VzV2l0aFRva2Vu
OihpZCA8TlNDb3B5aW5nLCBOU1NlY3VyZUNvZGluZz4pdG9rZW47CiBAZW5kCiAKLSNpZiBFTkFC
TEUoRFJBR19TVVBQT1JUKQotCiBAaW50ZXJmYWNlIE5TVVJMICgpCiBAcHJvcGVydHkgKG5vbmF0
b21pYywgY29weSwgc2V0dGVyPV9zZXRUaXRsZTopIE5TU3RyaW5nICpfdGl0bGU7CiBAZW5kCiAK
LSNkZWZpbmUgVUlJdGVtUHJvdmlkZXJSZXByZXNlbnRhdGlvbk9wdGlvbnNWaXNpYmlsaXR5QWxs
IE5TSXRlbVByb3ZpZGVyUmVwcmVzZW50YXRpb25WaXNpYmlsaXR5QWxsCi0KLUBwcm90b2NvbCBV
SUl0ZW1Qcm92aWRlclJlYWRpbmcgPE5TSXRlbVByb3ZpZGVyUmVhZGluZz4KLQotQHJlcXVpcmVk
Ci0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhJdGVtUHJvdmlkZXJEYXRhOihOU0RhdGEgKilkYXRh
IHR5cGVJZGVudGlmaWVyOihOU1N0cmluZyAqKXR5cGVJZGVudGlmaWVyIGVycm9yOihOU0Vycm9y
ICoqKW91dEVycm9yOwotCi1AZW5kCi0KLUBwcm90b2NvbCBVSUl0ZW1Qcm92aWRlcldyaXRpbmcg
PE5TSXRlbVByb3ZpZGVyV3JpdGluZz4KLQotQHJlcXVpcmVkCi0tIChOU1Byb2dyZXNzICopbG9h
ZERhdGFXaXRoVHlwZUlkZW50aWZpZXI6KE5TU3RyaW5nICopdHlwZUlkZW50aWZpZXIgZm9ySXRl
bVByb3ZpZGVyQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TRGF0YSAqLCBOU0Vycm9yICop
KWNvbXBsZXRpb25IYW5kbGVyOwotCi1AZW5kCi0KLUBpbnRlcmZhY2UgTlNBdHRyaWJ1dGVkU3Ry
aW5nICgpIDxVSUl0ZW1Qcm92aWRlclJlYWRpbmcsIFVJSXRlbVByb3ZpZGVyV3JpdGluZz4KLUBl
bmQKLUBpbnRlcmZhY2UgTlNTdHJpbmcgKCkgPFVJSXRlbVByb3ZpZGVyUmVhZGluZywgVUlJdGVt
UHJvdmlkZXJXcml0aW5nPgotQGVuZAotQGludGVyZmFjZSBOU1VSTCAoKSA8VUlJdGVtUHJvdmlk
ZXJSZWFkaW5nLCBVSUl0ZW1Qcm92aWRlcldyaXRpbmc+Ci1AZW5kCi1AaW50ZXJmYWNlIFVJSW1h
Z2UgKCkgPFVJSXRlbVByb3ZpZGVyUmVhZGluZywgVUlJdGVtUHJvdmlkZXJXcml0aW5nPgotQGVu
ZAotCi1AaW50ZXJmYWNlIFVJSXRlbVByb3ZpZGVyIDogTlNJdGVtUHJvdmlkZXIKLUBlbmQKLQot
I2VuZGlmCi0KIEBpbnRlcmZhY2UgVUlLZXlib2FyZCA6IFVJVmlldwogQGVuZAogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355224</attachid>
            <date>2018-11-17 19:51:12 -0800</date>
            <delta_ts>2018-11-17 22:17:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191819-20181117195111.patch</filename>
            <type>text/plain</type>
            <size>69832</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4MzQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWUxY2M3OWJjMGI4MzJm
MDQ0ODMwZTk5NTk0Mjc4MGFkNzBkYzg0MC4uMjhiYmFhZTdkMzZlOTdlYzBkYWEzYTE3ZTYyMzk5
NTljNzQ2MTM0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDE4LTExLTE3ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIFJlbW92
ZSBhbGwgdXNhZ2VzIG9mIFVJSXRlbVByb3ZpZGVyLCBVSUl0ZW1Qcm92aWRlclJlYWRpbmcsIGFu
ZCByZWxhdGVkIGNsYXNzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE5MTgxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFJlcGxhY2UgVUlJdGVtUHJvdmlkZXIgKGFuZCByZWxhdGVkIGNsYXNzZXMpIHdp
dGggTlNJdGVtUHJvdmlkZXIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0
ZWJvYXJkSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6cmVnaXN0ZXJJdGVtVG9QYXN0ZWJvYXJk
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tOgorICAg
ICAgICAoLVtXZWJJdGVtUHJvdmlkZXJEYXRhUmVnaXN0cmFyIHJlZ2lzdGVySXRlbVByb3ZpZGVy
Ol0pOgorICAgICAgICAoLVtXZWJJdGVtUHJvdmlkZXJXcml0YWJsZU9iamVjdFJlZ2lzdHJhciBp
bml0V2l0aE9iamVjdDpdKToKKyAgICAgICAgKC1bV2ViSXRlbVByb3ZpZGVyV3JpdGFibGVPYmpl
Y3RSZWdpc3RyYXIgcmVwcmVzZW50aW5nT2JqZWN0XSk6CisgICAgICAgICgtW1dlYkl0ZW1Qcm92
aWRlcldyaXRhYmxlT2JqZWN0UmVnaXN0cmFyIHJlZ2lzdGVySXRlbVByb3ZpZGVyOl0pOgorICAg
ICAgICAoLVtXZWJJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25JbmZvTGlzdCBhZGRSZXByZXNlbnRp
bmdPYmplY3Q6XSk6CisgICAgICAgICgtW1dlYkl0ZW1Qcm92aWRlclJlZ2lzdHJhdGlvbkluZm9M
aXN0IGl0ZW1Qcm92aWRlcl0pOgorICAgICAgICAoLVtXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJk
IHBhc3RlYm9hcmRUeXBlc10pOgorICAgICAgICAoLVtXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJk
IF9wcmVMb2FkZWREYXRhQ29uZm9ybWluZ1RvVHlwZTpmb3JJdGVtUHJvdmlkZXJBdEluZGV4Ol0p
OgorICAgICAgICAoLVtXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIGRhdGFGb3JQYXN0ZWJvYXJk
VHlwZTppbkl0ZW1TZXQ6XSk6CisgICAgICAgIChhbGxMb2FkYWJsZUNsYXNzZXMpOgorICAgICAg
ICAoY2xhc3NGb3JUeXBlSWRlbnRpZmllcik6CisgICAgICAgICgtW1dlYkl0ZW1Qcm92aWRlclBh
c3RlYm9hcmQgdmFsdWVzRm9yUGFzdGVib2FyZFR5cGU6aW5JdGVtU2V0Ol0pOgorICAgICAgICAo
LVtXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIG51bWJlck9mRmlsZXNdKToKKyAgICAgICAgKC1b
V2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZCBpdGVtUHJvdmlkZXJBdEluZGV4Ol0pOgorICAgICAg
ICAoLVtXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIGVudW1lcmF0ZUl0ZW1Qcm92aWRlcnNXaXRo
QmxvY2s6XSk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmNvbnRhaW5zVVJMIGNvbnN0KToKKwogMjAxOC0xMS0xNiAg
V2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2Fd
IFtXZWJLaXQyXSBBZGQgc3VwcG9ydCBmb3IgcmVwbGFjaW5nIGZpbmQtaW4tcGFnZSB0ZXh0IG1h
dGNoZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViQ29yZS9QQUwvQ2hhbmdlTG9nCmluZGV4IGNmNGFjNTJjZTJhN2Q2NTNmYjIyNmYxZjFkZGE0
ZjBjNmIwMjIyMmQuLjMwYTZiYmVmY2VkNjc4MWQ5N2I3ZmY0YTg5NmNiYWUxMDIzMjNkN2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvUEFML0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE4LTExLTE3ICBXZW5zb24gSHNp
ZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIFJlbW92ZSBhbGwg
dXNhZ2VzIG9mIFVJSXRlbVByb3ZpZGVyLCBVSUl0ZW1Qcm92aWRlclJlYWRpbmcsIGFuZCByZWxh
dGVkIGNsYXNzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5MTgxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFJlcGxhY2UgVUlJdGVtUHJvdmlkZXIgKGFuZCByZWxhdGVkIGNsYXNzZXMpIHdpdGggTlNJ
dGVtUHJvdmlkZXIuCisKKyAgICAgICAgKiBwYWwvc3BpL2lvcy9VSUtpdFNQSS5oOgorCiAyMDE4
LTExLTE2ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAg
IFtDb2NvYV0gW1dlYktpdDJdIEFkZCBzdXBwb3J0IGZvciByZXBsYWNpbmcgZmluZC1pbi1wYWdl
IHRleHQgbWF0Y2hlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBmMDNiOTA1OWM1OTIwYTk3Y2FhMTNiZDdlZTRkMmZk
ZWYwMDRlN2VlLi43ZjMyZmQzMTc0NjVlOWM2OGJhNDI0NjFhNmVjNTA1ODFjN2Q0NTI2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE4LTExLTE3ICBXZW5zb24gSHNpZWggIDx3ZW5zb25f
aHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIFJlbW92ZSBhbGwgdXNhZ2VzIG9mIFVJ
SXRlbVByb3ZpZGVyLCBVSUl0ZW1Qcm92aWRlclJlYWRpbmcsIGFuZCByZWxhdGVkIGNsYXNzZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTgxOQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlcGxhY2Ug
VUlJdGVtUHJvdmlkZXIgKGFuZCByZWxhdGVkIGNsYXNzZXMpIHdpdGggTlNJdGVtUHJvdmlkZXIu
CisKKyAgICAgICAgKiBQbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29u
dGVudFZpZXcgX2l0ZW1zRm9yQmVnaW5uaW5nT3JBZGRpbmdUb1Nlc3Npb25XaXRoUmVnaXN0cmF0
aW9uTGlzdDpzdGFnZWREcmFnU291cmNlOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGRy
b3BJbnRlcmFjdGlvbjpwZXJmb3JtRHJvcDpdKToKKwogMjAxOC0xMS0xNiAgV2Vuc29uIEhzaWVo
ICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIFtXZWJLaXQyXSBB
ZGQgc3VwcG9ydCBmb3IgcmVwbGFjaW5nIGZpbmQtaW4tcGFnZSB0ZXh0IG1hdGNoZXMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2lvcy9VSUtpdFNQSS5oIGIvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9zcGkvaW9zL1VJS2l0U1BJLmgKaW5kZXggMWE4N2FmNWFmM2E0ODlj
MTEzNjYwYmIyZmQ1NGY4Yzc2NmU0ZjRjYy4uZGVmN2RmYjk1YTQzZTBhYjI5ZGY3ZDAyODAxNjAx
M2U0NTYzYjFiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvaW9zL1VJ
S2l0U1BJLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvaW9zL1VJS2l0U1BJLmgK
QEAgLTM5LDExICszOSw5IEBAIFdURl9FWFRFUk5fQ19FTkQKICNpbXBvcnQgPFVJS2l0L1VJVmll
d0NvbnRyb2xsZXJfUHJpdmF0ZS5oPgogCiAjaWYgRU5BQkxFKERBVEFfSU5URVJBQ1RJT04pCi0j
aW1wb3J0IDxVSUtpdC9OU0F0dHJpYnV0ZWRTdHJpbmcrVUlJdGVtUHJvdmlkZXIuaD4KLSNpbXBv
cnQgPFVJS2l0L05TU3RyaW5nK1VJSXRlbVByb3ZpZGVyLmg+CisjaW1wb3J0IDxVSUtpdC9OU0l0
ZW1Qcm92aWRlcitVSUtpdEFkZGl0aW9ucy5oPgorI2ltcG9ydCA8VUlLaXQvTlNJdGVtUHJvdmlk
ZXIrVUlLaXRBZGRpdGlvbnNfUHJpdmF0ZS5oPgogI2ltcG9ydCA8VUlLaXQvTlNVUkwrVUlJdGVt
UHJvdmlkZXIuaD4KLSNpbXBvcnQgPFVJS2l0L1VJSW1hZ2UrVUlJdGVtUHJvdmlkZXIuaD4KLSNp
bXBvcnQgPFVJS2l0L1VJSXRlbVByb3ZpZGVyX1ByaXZhdGUuaD4KICNlbmRpZgogCiBAaW50ZXJm
YWNlIFVJQXBwbGljYXRpb24gKCkKQEAgLTExNyw0MyArMTE1LDQgQEAgTlNfQVNTVU1FX05PTk5V
TExfRU5ECiBAZW5kCiAjZW5kaWYKIAotI2lmIEVOQUJMRShEQVRBX0lOVEVSQUNUSU9OKQotCi1O
U19BU1NVTUVfTk9OTlVMTF9CRUdJTgotCi1AaW50ZXJmYWNlIFVJSXRlbVByb3ZpZGVyIDogTlNJ
dGVtUHJvdmlkZXIKLUBlbmQKLQotI2RlZmluZSBVSUl0ZW1Qcm92aWRlclJlcHJlc2VudGF0aW9u
T3B0aW9uc1Zpc2liaWxpdHlBbGwgTlNJdGVtUHJvdmlkZXJSZXByZXNlbnRhdGlvblZpc2liaWxp
dHlBbGwKLQotQHByb3RvY29sIFVJSXRlbVByb3ZpZGVyUmVhZGluZyA8TlNJdGVtUHJvdmlkZXJS
ZWFkaW5nPgotCi1AcmVxdWlyZWQKLS0gKG51bGxhYmxlIGluc3RhbmNldHlwZSlpbml0V2l0aEl0
ZW1Qcm92aWRlckRhdGE6KE5TRGF0YSAqKWRhdGEgdHlwZUlkZW50aWZpZXI6KE5TU3RyaW5nICop
dHlwZUlkZW50aWZpZXIgZXJyb3I6KE5TRXJyb3IgKiopb3V0RXJyb3I7Ci0KLUBlbmQKLQotQHBy
b3RvY29sIFVJSXRlbVByb3ZpZGVyV3JpdGluZyA8TlNJdGVtUHJvdmlkZXJXcml0aW5nPgotCi1A
cmVxdWlyZWQKLS0gKE5TUHJvZ3Jlc3MgKiBfTnVsbGFibGUpbG9hZERhdGFXaXRoVHlwZUlkZW50
aWZpZXI6KE5TU3RyaW5nICopdHlwZUlkZW50aWZpZXIgZm9ySXRlbVByb3ZpZGVyQ29tcGxldGlv
bkhhbmRsZXI6KHZvaWQgKF4pKE5TRGF0YSAqIF9OdWxsYWJsZSwgTlNFcnJvciAqIF9OdWxsYWJs
ZSkpY29tcGxldGlvbkhhbmRsZXI7Ci0KLUBlbmQKLQotQGludGVyZmFjZSBOU0F0dHJpYnV0ZWRT
dHJpbmcgKCkgPFVJSXRlbVByb3ZpZGVyUmVhZGluZywgVUlJdGVtUHJvdmlkZXJXcml0aW5nPgot
QGVuZAotCi1AaW50ZXJmYWNlIE5TU3RyaW5nICgpIDxVSUl0ZW1Qcm92aWRlclJlYWRpbmcsIFVJ
SXRlbVByb3ZpZGVyV3JpdGluZz4KLUBlbmQKLQotQGludGVyZmFjZSBOU1VSTCAoKSA8VUlJdGVt
UHJvdmlkZXJSZWFkaW5nLCBVSUl0ZW1Qcm92aWRlcldyaXRpbmc+Ci1AZW5kCi0KLUBpbnRlcmZh
Y2UgVUlJbWFnZSAoKSA8VUlJdGVtUHJvdmlkZXJSZWFkaW5nLCBVSUl0ZW1Qcm92aWRlcldyaXRp
bmc+Ci1AZW5kCi0KLU5TX0FTU1VNRV9OT05OVUxMX0VORAotCi0jZW5kaWYKLQogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJk
SU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElP
Uy5tbQppbmRleCBjNzU0N2UyNDQ5YWVhMzA4YzZjNmRiYmQ2YzY0ZmYyMjc1ZThhMzE2Li5kNzIw
YjgyZjBiMTQ0NjVmY2M1NTU3MWY3OWFhMjZhMzU4NDFjM2RhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KQEAgLTI5Miw3
ICsyOTIsNyBAQCBzdGF0aWMgdm9pZCByZWdpc3Rlckl0ZW1Ub1Bhc3RlYm9hcmQoV2ViSXRlbVBy
b3ZpZGVyUmVnaXN0cmF0aW9uSW5mb0xpc3QgKnJlcHJlcwogICAgIH1dOwogICAgIFtwYXN0ZWJv
YXJkIHNldEl0ZW1zOkBbIGl0ZW1EaWN0aW9uYXJ5LmdldCgpIF1dOwogI2Vsc2UKLSAgICBpZiAo
VUlJdGVtUHJvdmlkZXIgKml0ZW1Qcm92aWRlciA9IHJlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIu
aXRlbVByb3ZpZGVyKQorICAgIGlmIChOU0l0ZW1Qcm92aWRlciAqaXRlbVByb3ZpZGVyID0gcmVw
cmVzZW50YXRpb25zVG9SZWdpc3Rlci5pdGVtUHJvdmlkZXIpCiAgICAgICAgIFtwYXN0ZWJvYXJk
IHNldEl0ZW1Qcm92aWRlcnM6QFsgaXRlbVByb3ZpZGVyIF1dOwogICAgIGVsc2UKICAgICAgICAg
W3Bhc3RlYm9hcmQgc2V0SXRlbVByb3ZpZGVyczpAWyBdXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5oCmluZGV4IGI0
M2VhNGVlYzY5ZDRmZWFlYTRlYmY0NzJhNzc0ZDU1MjBkMDUxY2UuLjFmMWFmODZmZDliMGM4Njg5
M2U5Y2VlZjhmNmQ3NGYyN2I1MWRmOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQuaApAQCAtMjcsMjAgKzI3LDYg
QEAKIAogI2lmIFRBUkdFVF9PU19JUEhPTkUgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTEwMDAwCiAKLS8vIFVJSXRlbVByb3ZpZGVycyBhcmUgbm90IGltcGxlbWVudGVk
IGZvciBpT1MgYXBwcyBmb3IgTWFjLCBiZWNhdXNlIHRoZXkgd2VyZSBkZXByaWNhdGVkIGxhc3Qg
eWVhci4KLS8vIFdlIG5lZWQgdG8gc3dpdGNoIG92ZXIgdG8gTlNJdGVtUHJvdmlkZXJzIGV2ZXJ5
d2hlcmUuIFRoaXMgc2hvdWxkIGp1c3QgYmUgYSB0ZW1wb3JhcnkgZml4LgotI2lmIGRlZmluZWQo
VEFSR0VUX09TX0lPU01BQykgJiYgVEFSR0VUX09TX0lPU01BQwotCi0jZGVmaW5lIFVJSXRlbVBy
b3ZpZGVyIE5TSXRlbVByb3ZpZGVyCi0jZGVmaW5lIFVJSXRlbVByb3ZpZGVyUmVhZGluZyBOU0l0
ZW1Qcm92aWRlclJlYWRpbmcKLSNkZWZpbmUgVUlJdGVtUHJvdmlkZXJXcml0aW5nIE5TSXRlbVBy
b3ZpZGVyV3JpdGluZwotI2RlZmluZSBVSUl0ZW1Qcm92aWRlclJlcHJlc2VudGF0aW9uT3B0aW9u
c1Zpc2liaWxpdHlBbGwgTlNJdGVtUHJvdmlkZXJSZXByZXNlbnRhdGlvblZpc2liaWxpdHlBbGwK
LQotI2VuZGlmCi0KLUBjbGFzcyBVSUl0ZW1Qcm92aWRlcjsKLUBwcm90b2NvbCBVSUl0ZW1Qcm92
aWRlcldyaXRpbmc7Ci0KIHN0cnVjdCBDR1NpemU7CiAKIHR5cGVkZWYgTlNfRU5VTShOU0ludGVn
ZXIsIFdlYlByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlKSB7CkBAIC03NywxMyArNjMsMTMgQEAg
dHlwZWRlZiB2b2lkKF5XZWJJdGVtUHJvdmlkZXJGaWxlQ2FsbGJhY2spKE5TVVJMICogX051bGxh
YmxlLCBOU0Vycm9yICogX051bGxhYmwKICAqLwogV0VCQ09SRV9FWFBPUlQgQGludGVyZmFjZSBX
ZWJJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25JbmZvTGlzdCA6IE5TT2JqZWN0CiAKLS0gKHZvaWQp
YWRkUmVwcmVzZW50aW5nT2JqZWN0OihpZCA8VUlJdGVtUHJvdmlkZXJXcml0aW5nPilvYmplY3Q7
CistICh2b2lkKWFkZFJlcHJlc2VudGluZ09iamVjdDooaWQgPE5TSXRlbVByb3ZpZGVyV3JpdGlu
Zz4pb2JqZWN0OwogLSAodm9pZClhZGREYXRhOihOU0RhdGEgKilkYXRhIGZvclR5cGU6KE5TU3Ry
aW5nICopdHlwZUlkZW50aWZpZXI7CiAtICh2b2lkKWFkZFByb21pc2VkVHlwZTooTlNTdHJpbmcg
Kil0eXBlSWRlbnRpZmllciBmaWxlQ2FsbGJhY2s6KHZvaWQoXikoV2ViSXRlbVByb3ZpZGVyRmls
ZUNhbGxiYWNrKSljYWxsYmFjazsKIAogQHByb3BlcnR5IChub25hdG9taWMpIENHU2l6ZSBwcmVm
ZXJyZWRQcmVzZW50YXRpb25TaXplOwogQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TU3Ry
aW5nICpzdWdnZXN0ZWROYW1lOwotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBudWxs
YWJsZSkgVUlJdGVtUHJvdmlkZXIgKml0ZW1Qcm92aWRlcjsKK0Bwcm9wZXJ0eSAobm9uYXRvbWlj
LCByZWFkb25seSwgbnVsbGFibGUpIF9fa2luZG9mIE5TSXRlbVByb3ZpZGVyICppdGVtUHJvdmlk
ZXI7CiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBXZWJQcmVmZXJyZWRQcmVzZW50YXRpb25TdHls
ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5
KSBOU0RhdGEgKnRlYW1EYXRhOwpAQCAtMTE0LDcgKzEwMCw3IEBAIFdFQkNPUkVfRVhQT1JUIEBp
bnRlcmZhY2UgV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZCA6IE5TT2JqZWN0PEFic3RyYWN0UGFz
dGVib2FyCiAtICh2b2lkKWluY3JlbWVudFBlbmRpbmdPcGVyYXRpb25Db3VudDsKIC0gKHZvaWQp
ZGVjcmVtZW50UGVuZGluZ09wZXJhdGlvbkNvdW50OwogCi0tICh2b2lkKWVudW1lcmF0ZUl0ZW1Q
cm92aWRlcnNXaXRoQmxvY2s6KHZvaWQgKF4pKFVJSXRlbVByb3ZpZGVyICppdGVtUHJvdmlkZXIs
IE5TVUludGVnZXIgaW5kZXgsIEJPT0wgKnN0b3ApKWJsb2NrOworLSAodm9pZCllbnVtZXJhdGVJ
dGVtUHJvdmlkZXJzV2l0aEJsb2NrOih2b2lkICheKShfX2tpbmRvZiBOU0l0ZW1Qcm92aWRlciAq
aXRlbVByb3ZpZGVyLCBOU1VJbnRlZ2VyIGluZGV4LCBCT09MICpzdG9wKSlibG9jazsKIAogLy8g
VGhlIGdpdmVuIGNvbXBsZXRpb24gYmxvY2sgaXMgYWx3YXlzIGRpc3BhdGNoZWQgb24gdGhlIG1h
aW4gdGhyZWFkLgogLSAodm9pZClkb0FmdGVyTG9hZGluZ1Byb3ZpZGVkQ29udGVudEludG9GaWxl
VVJMczooV2ViSXRlbVByb3ZpZGVyRmlsZUxvYWRCbG9jaylhY3Rpb247CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1t
CmluZGV4IGRiM2NmOWNmYjVlNDFjZTU0ZTE3OGRhOTY2Yjg3NTgwYjhlODEzYjYuLjdmNjQ2MmI3
ZjVjNTczNTI4NzlkNDQ4NDIwN2EwYTIzNGU2ZjAzNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tCkBAIC00
NSw3ICs0NSw2IEBACiBTT0ZUX0xJTktfRlJBTUVXT1JLKFVJS2l0KQogU09GVF9MSU5LX0NMQVNT
KFVJS2l0LCBVSUNvbG9yKQogU09GVF9MSU5LX0NMQVNTKFVJS2l0LCBVSUltYWdlKQotU09GVF9M
SU5LX0NMQVNTKFVJS2l0LCBVSUl0ZW1Qcm92aWRlcikKIAogdHlwZWRlZiB2b2lkKF5JdGVtUHJv
dmlkZXJEYXRhTG9hZENvbXBsZXRpb25IYW5kbGVyKShOU0RhdGEgKiwgTlNFcnJvciAqKTsKIHR5
cGVkZWYgdm9pZCheSXRlbVByb3ZpZGVyRmlsZUxvYWRDb21wbGV0aW9uSGFuZGxlcikoTlNVUkwg
KiwgQk9PTCwgTlNFcnJvciAqKTsKQEAgLTk3LDcgKzk2LDcgQEAgdXNpbmcgV2ViQ29yZTo6UGFz
dGVib2FyZEN1c3RvbURhdGE7CiAKIC0gKHZvaWQpcmVnaXN0ZXJJdGVtUHJvdmlkZXI6KE5TSXRl
bVByb3ZpZGVyICopaXRlbVByb3ZpZGVyCiB7Ci0gICAgW2l0ZW1Qcm92aWRlciByZWdpc3RlckRh
dGFSZXByZXNlbnRhdGlvbkZvclR5cGVJZGVudGlmaWVyOnNlbGYudHlwZUlkZW50aWZpZXIgdmlz
aWJpbGl0eTpVSUl0ZW1Qcm92aWRlclJlcHJlc2VudGF0aW9uT3B0aW9uc1Zpc2liaWxpdHlBbGwg
bG9hZEhhbmRsZXI6W2l0ZW1EYXRhID0gX2RhdGFdIChJdGVtUHJvdmlkZXJEYXRhTG9hZENvbXBs
ZXRpb25IYW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyKSAtPiBOU1Byb2dyZXNzICogeworICAgIFtp
dGVtUHJvdmlkZXIgcmVnaXN0ZXJEYXRhUmVwcmVzZW50YXRpb25Gb3JUeXBlSWRlbnRpZmllcjpz
ZWxmLnR5cGVJZGVudGlmaWVyIHZpc2liaWxpdHk6TlNJdGVtUHJvdmlkZXJSZXByZXNlbnRhdGlv
blZpc2liaWxpdHlBbGwgbG9hZEhhbmRsZXI6W2l0ZW1EYXRhID0gX2RhdGFdIChJdGVtUHJvdmlk
ZXJEYXRhTG9hZENvbXBsZXRpb25IYW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyKSAtPiBOU1Byb2dy
ZXNzICogewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihpdGVtRGF0YS5nZXQoKSwgbmlsKTsK
ICAgICAgICAgcmV0dXJuIG5pbDsKICAgICB9XTsKQEAgLTExMSwxNSArMTEwLDE1IEBAIHVzaW5n
IFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOwogQGVuZAogCiBAaW50ZXJmYWNlIFdlYkl0
ZW1Qcm92aWRlcldyaXRhYmxlT2JqZWN0UmVnaXN0cmFyIDogTlNPYmplY3QgPFdlYkl0ZW1Qcm92
aWRlclJlZ2lzdHJhcj4KLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aE9iamVjdDooaWQgPFVJSXRl
bVByb3ZpZGVyV3JpdGluZz4pcmVwcmVzZW50aW5nT2JqZWN0OwotQHByb3BlcnR5IChub25hdG9t
aWMsIHJlYWRvbmx5KSBpZCA8VUlJdGVtUHJvdmlkZXJXcml0aW5nPiByZXByZXNlbnRpbmdPYmpl
Y3Q7CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhPYmplY3Q6KGlkIDxOU0l0ZW1Qcm92aWRlcldy
aXRpbmc+KXJlcHJlc2VudGluZ09iamVjdDsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25s
eSkgaWQgPE5TSXRlbVByb3ZpZGVyV3JpdGluZz4gcmVwcmVzZW50aW5nT2JqZWN0OwogQGVuZAog
CiBAaW1wbGVtZW50YXRpb24gV2ViSXRlbVByb3ZpZGVyV3JpdGFibGVPYmplY3RSZWdpc3RyYXIg
ewotICAgIFJldGFpblB0cjxpZCA8VUlJdGVtUHJvdmlkZXJXcml0aW5nPj4gX3JlcHJlc2VudGlu
Z09iamVjdDsKKyAgICBSZXRhaW5QdHI8aWQgPE5TSXRlbVByb3ZpZGVyV3JpdGluZz4+IF9yZXBy
ZXNlbnRpbmdPYmplY3Q7CiB9CiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aE9iamVjdDooaWQg
PFVJSXRlbVByb3ZpZGVyV3JpdGluZz4pcmVwcmVzZW50aW5nT2JqZWN0CistIChpbnN0YW5jZXR5
cGUpaW5pdFdpdGhPYmplY3Q6KGlkIDxOU0l0ZW1Qcm92aWRlcldyaXRpbmc+KXJlcHJlc2VudGlu
Z09iamVjdAogewogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1
cm4gbmlsOwpAQCAtMTI4LDcgKzEyNyw3IEBAIHVzaW5nIFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0
b21EYXRhOwogICAgIHJldHVybiBzZWxmOwogfQogCi0tIChpZCA8VUlJdGVtUHJvdmlkZXJXcml0
aW5nPilyZXByZXNlbnRpbmdPYmplY3QKKy0gKGlkIDxOU0l0ZW1Qcm92aWRlcldyaXRpbmc+KXJl
cHJlc2VudGluZ09iamVjdAogewogICAgIHJldHVybiBfcmVwcmVzZW50aW5nT2JqZWN0LmdldCgp
OwogfQpAQCAtMTQwLDcgKzEzOSw3IEBAIHVzaW5nIFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21E
YXRhOwogCiAtICh2b2lkKXJlZ2lzdGVySXRlbVByb3ZpZGVyOihOU0l0ZW1Qcm92aWRlciAqKWl0
ZW1Qcm92aWRlcgogewotICAgIFtpdGVtUHJvdmlkZXIgcmVnaXN0ZXJPYmplY3Q6c2VsZi5yZXBy
ZXNlbnRpbmdPYmplY3QgdmlzaWJpbGl0eTpVSUl0ZW1Qcm92aWRlclJlcHJlc2VudGF0aW9uT3B0
aW9uc1Zpc2liaWxpdHlBbGxdOworICAgIFtpdGVtUHJvdmlkZXIgcmVnaXN0ZXJPYmplY3Q6c2Vs
Zi5yZXByZXNlbnRpbmdPYmplY3QgdmlzaWJpbGl0eTpOU0l0ZW1Qcm92aWRlclJlcHJlc2VudGF0
aW9uVmlzaWJpbGl0eUFsbF07CiB9CiAKIC0gKE5TU3RyaW5nICopZGVzY3JpcHRpb24KQEAgLTIy
NCw5ICsyMjMsOSBAQCB1c2luZyBXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTsKICAgICBb
X3JlcHJlc2VudGF0aW9ucyBhZGRPYmplY3Q6cmVwcmVzZW50YXRpb24uZ2V0KCldOwogfQogCi0t
ICh2b2lkKWFkZFJlcHJlc2VudGluZ09iamVjdDooaWQgPFVJSXRlbVByb3ZpZGVyV3JpdGluZz4p
b2JqZWN0CistICh2b2lkKWFkZFJlcHJlc2VudGluZ09iamVjdDooaWQgPE5TSXRlbVByb3ZpZGVy
V3JpdGluZz4pb2JqZWN0CiB7Ci0gICAgQVNTRVJUKFtvYmplY3QgY29uZm9ybXNUb1Byb3RvY29s
OkBwcm90b2NvbChVSUl0ZW1Qcm92aWRlcldyaXRpbmcpXSk7CisgICAgQVNTRVJUKFtvYmplY3Qg
Y29uZm9ybXNUb1Byb3RvY29sOkBwcm90b2NvbChOU0l0ZW1Qcm92aWRlcldyaXRpbmcpXSk7CiAg
ICAgYXV0byByZXByZXNlbnRhdGlvbiA9IGFkb3B0TlMoW1tXZWJJdGVtUHJvdmlkZXJXcml0YWJs
ZU9iamVjdFJlZ2lzdHJhciBhbGxvY10gaW5pdFdpdGhPYmplY3Q6b2JqZWN0XSk7CiAgICAgW19y
ZXByZXNlbnRhdGlvbnMgYWRkT2JqZWN0OnJlcHJlc2VudGF0aW9uLmdldCgpXTsKIH0KQEAgLTI3
MywxNyArMjcyLDE1IEBAIHN0YXRpYyBVSVByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlIHVpUHJl
ZmVycmVkUHJlc2VudGF0aW9uU3R5bGUoV2ViUHJlZmVycmVkUHJlCiB9CiAjZW5kaWYKIAotLSAo
VUlJdGVtUHJvdmlkZXIgKilpdGVtUHJvdmlkZXIKKy0gKE5TSXRlbVByb3ZpZGVyICopaXRlbVBy
b3ZpZGVyCiB7CiAgICAgaWYgKCFzZWxmLm51bWJlck9mSXRlbXMpCiAgICAgICAgIHJldHVybiBu
aWw7CiAKLSAgICBhdXRvIGl0ZW1Qcm92aWRlciA9IGFkb3B0TlMoW2FsbG9jVUlJdGVtUHJvdmlk
ZXJJbnN0YW5jZSgpIGluaXRdKTsKKyAgICBhdXRvIGl0ZW1Qcm92aWRlciA9IGFkb3B0TlMoW05T
SXRlbVByb3ZpZGVyIG5ld10pOwogICAgIGZvciAoaWQgPFdlYkl0ZW1Qcm92aWRlclJlZ2lzdHJh
cj4gcmVwcmVzZW50YXRpb24gaW4gX3JlcHJlc2VudGF0aW9ucy5nZXQoKSkKICAgICAgICAgW3Jl
cHJlc2VudGF0aW9uIHJlZ2lzdGVySXRlbVByb3ZpZGVyOml0ZW1Qcm92aWRlci5nZXQoKV07CiAg
ICAgW2l0ZW1Qcm92aWRlciBzZXRTdWdnZXN0ZWROYW1lOnNlbGYuc3VnZ2VzdGVkTmFtZV07Ci0g
ICAgLy8gVUlJdGVtUHJvdmlkZXJzIGFyZSBub3QgaW1wbGVtZW50ZWQgZm9yIGlPUyBhcHBzIGZv
ciBNYWMsIGJlY2F1c2UgdGhleSB3ZXJlIGRlcHJpY2F0ZWQgbGFzdCB5ZWFyLgotICAgIC8vIFdl
IG5lZWQgdG8gc3dpdGNoIG92ZXIgdG8gTlNJdGVtUHJvdmlkZXJzIGV2ZXJ5d2hlcmUuIFRoaXMg
c2hvdWxkIGp1c3QgYmUgYSB0ZW1wb3JhcnkgZml4LgogI2lmICFQTEFURk9STShJT1NNQUMpCiAg
ICAgW2l0ZW1Qcm92aWRlciBzZXRQcmVmZXJyZWRQcmVzZW50YXRpb25TaXplOnNlbGYucHJlZmVy
cmVkUHJlc2VudGF0aW9uU2l6ZV07CiAgICAgW2l0ZW1Qcm92aWRlciBzZXRQcmVmZXJyZWRQcmVz
ZW50YXRpb25TdHlsZTp1aVByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlKHNlbGYucHJlZmVycmVk
UHJlc2VudGF0aW9uU3R5bGUpXTsKQEAgLTQ1NCw3ICs0NTEsNyBAQCBzdGF0aWMgVUlQcmVmZXJy
ZWRQcmVzZW50YXRpb25TdHlsZSB1aVByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlKFdlYlByZWZl
cnJlZFByZQogewogICAgIE5TTXV0YWJsZVNldDxOU1N0cmluZyAqPiAqYWxsVHlwZXMgPSBbTlNN
dXRhYmxlU2V0IHNldF07CiAgICAgTlNNdXRhYmxlQXJyYXk8TlNTdHJpbmcgKj4gKmFsbFR5cGVz
SW5PcmRlciA9IFtOU011dGFibGVBcnJheSBhcnJheV07Ci0gICAgZm9yIChVSUl0ZW1Qcm92aWRl
ciAqcHJvdmlkZXIgaW4gX2l0ZW1Qcm92aWRlcnMuZ2V0KCkpIHsKKyAgICBmb3IgKE5TSXRlbVBy
b3ZpZGVyICpwcm92aWRlciBpbiBfaXRlbVByb3ZpZGVycy5nZXQoKSkgewogICAgICAgICBmb3Ig
KE5TU3RyaW5nICp0eXBlSWRlbnRpZmllciBpbiBwcm92aWRlci5yZWdpc3RlcmVkVHlwZUlkZW50
aWZpZXJzKSB7CiAgICAgICAgICAgICBpZiAoW2FsbFR5cGVzIGNvbnRhaW5zT2JqZWN0OnR5cGVJ
ZGVudGlmaWVyXSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTUwMSw3ICs0OTgsNyBA
QCBzdGF0aWMgVUlQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZSB1aVByZWZlcnJlZFByZXNlbnRh
dGlvblN0eWxlKFdlYlByZWZlcnJlZFByZQogICAgICAgICBpZiAoIVVUVHlwZUNvbmZvcm1zVG8o
KENGU3RyaW5nUmVmKWxvYWRlZFR5cGUsIChDRlN0cmluZ1JlZil0eXBlSWRlbnRpZmllcikpCiAg
ICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAvLyBXZSd2ZSBhbHJlYWR5IGxvYWRlZCBk
YXRhIHJlbGV2YW50IGZvciB0aGlzIFVUSSB0eXBlIG9udG8gZGlzaywgc28gdGhlcmUncyBubyBu
ZWVkIHRvIGFzayB0aGUgVUlJdGVtUHJvdmlkZXIgZm9yIHRoZSBzYW1lIGRhdGEgYWdhaW4uCisg
ICAgICAgIC8vIFdlJ3ZlIGFscmVhZHkgbG9hZGVkIGRhdGEgcmVsZXZhbnQgZm9yIHRoaXMgVVRJ
IHR5cGUgb250byBkaXNrLCBzbyB0aGVyZSdzIG5vIG5lZWQgdG8gYXNrIHRoZSBOU0l0ZW1Qcm92
aWRlciBmb3IgdGhlIHNhbWUgZGF0YSBhZ2Fpbi4KICAgICAgICAgaWYgKE5TRGF0YSAqcmVzdWx0
ID0gW05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZVUkw6W2xvYWRSZXN1bHQgZmlsZVVSTEZvclR5
cGU6bG9hZGVkVHlwZV0gb3B0aW9uczpOU0RhdGFSZWFkaW5nTWFwcGVkSWZTYWZlIGVycm9yOm5p
bF0pCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KQEAgLTUyMSw3ICs1MTgsNyBA
QCBzdGF0aWMgVUlQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZSB1aVByZWZlcnJlZFByZXNlbnRh
dGlvblN0eWxlKFdlYlByZWZlcnJlZFByZQogICAgIGF1dG8gdmFsdWVzID0gYWRvcHROUyhbW05T
TXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CiAgICAgUmV0YWluUHRyPFdlYkl0ZW1Qcm92aWRl
clBhc3RlYm9hcmQ+IHJldGFpbmVkU2VsZiA9IHNlbGY7CiAgICAgW2l0ZW1TZXQgZW51bWVyYXRl
SW5kZXhlc1VzaW5nQmxvY2s6W3JldGFpbmVkU2VsZiwgcGFzdGVib2FyZFR5cGUsIHZhbHVlc10g
KE5TVUludGVnZXIgaW5kZXgsIEJPT0wgKikgewotICAgICAgICBVSUl0ZW1Qcm92aWRlciAqcHJv
dmlkZXIgPSBbcmV0YWluZWRTZWxmIGl0ZW1Qcm92aWRlckF0SW5kZXg6aW5kZXhdOworICAgICAg
ICBOU0l0ZW1Qcm92aWRlciAqcHJvdmlkZXIgPSBbcmV0YWluZWRTZWxmIGl0ZW1Qcm92aWRlckF0
SW5kZXg6aW5kZXhdOwogICAgICAgICBpZiAoIXByb3ZpZGVyKQogICAgICAgICAgICAgcmV0dXJu
OwogCkBAIC01MzEsNyArNTI4LDcgQEAgc3RhdGljIFVJUHJlZmVycmVkUHJlc2VudGF0aW9uU3R5
bGUgdWlQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZShXZWJQcmVmZXJyZWRQcmUKICAgICByZXR1
cm4gdmFsdWVzLmF1dG9yZWxlYXNlKCk7CiB9CiAKLXN0YXRpYyBOU0FycmF5PENsYXNzPFVJSXRl
bVByb3ZpZGVyUmVhZGluZz4+ICphbGxMb2FkYWJsZUNsYXNzZXMoKQorc3RhdGljIE5TQXJyYXk8
Q2xhc3M8TlNJdGVtUHJvdmlkZXJSZWFkaW5nPj4gKmFsbExvYWRhYmxlQ2xhc3NlcygpCiB7CiAg
ICAgcmV0dXJuIEBbIFtnZXRVSUNvbG9yQ2xhc3MoKSBjbGFzc10sIFtnZXRVSUltYWdlQ2xhc3Mo
KSBjbGFzc10sIFtOU1VSTCBjbGFzc10sIFtOU1N0cmluZyBjbGFzc10sIFtOU0F0dHJpYnV0ZWRT
dHJpbmcgY2xhc3NdIF07CiB9CkBAIC01NDAsOCArNTM3LDggQEAgc3RhdGljIENsYXNzIGNsYXNz
Rm9yVHlwZUlkZW50aWZpZXIoTlNTdHJpbmcgKnR5cGVJZGVudGlmaWVyLCBOU1N0cmluZyAqJm91
dFR5cGUKIHsKICAgICBvdXRUeXBlSWRlbnRpZmllclRvTG9hZCA9IHR5cGVJZGVudGlmaWVyOwog
Ci0gICAgLy8gRmlyc3QsIHRyeSB0byBsb2FkIGEgcGxhdGZvcm0gVUlJdGVtUHJvdmlkZXJSZWFk
aW5nLWNvbmZvcm1hbnQgb2JqZWN0IGFzLWlzLgotICAgIGZvciAoQ2xhc3M8VUlJdGVtUHJvdmlk
ZXJSZWFkaW5nPiBsb2FkYWJsZUNsYXNzIGluIGFsbExvYWRhYmxlQ2xhc3NlcygpKSB7CisgICAg
Ly8gRmlyc3QsIHRyeSB0byBsb2FkIGEgcGxhdGZvcm0gTlNJdGVtUHJvdmlkZXJSZWFkaW5nLWNv
bmZvcm1hbnQgb2JqZWN0IGFzLWlzLgorICAgIGZvciAoQ2xhc3M8TlNJdGVtUHJvdmlkZXJSZWFk
aW5nPiBsb2FkYWJsZUNsYXNzIGluIGFsbExvYWRhYmxlQ2xhc3NlcygpKSB7CiAgICAgICAgIGlm
IChbW2xvYWRhYmxlQ2xhc3MgcmVhZGFibGVUeXBlSWRlbnRpZmllcnNGb3JJdGVtUHJvdmlkZXJd
IGNvbnRhaW5zT2JqZWN0OihOU1N0cmluZyAqKXR5cGVJZGVudGlmaWVyXSkKICAgICAgICAgICAg
IHJldHVybiBsb2FkYWJsZUNsYXNzOwogICAgIH0KQEAgLTU2NSw3ICs1NjIsNyBAQCBzdGF0aWMg
Q2xhc3MgY2xhc3NGb3JUeXBlSWRlbnRpZmllcihOU1N0cmluZyAqdHlwZUlkZW50aWZpZXIsIE5T
U3RyaW5nIComb3V0VHlwZQogICAgIGF1dG8gdmFsdWVzID0gYWRvcHROUyhbW05TTXV0YWJsZUFy
cmF5IGFsbG9jXSBpbml0XSk7CiAgICAgUmV0YWluUHRyPFdlYkl0ZW1Qcm92aWRlclBhc3RlYm9h
cmQ+IHJldGFpbmVkU2VsZiA9IHNlbGY7CiAgICAgW2l0ZW1TZXQgZW51bWVyYXRlSW5kZXhlc1Vz
aW5nQmxvY2s6W3JldGFpbmVkU2VsZiwgcGFzdGVib2FyZFR5cGUsIHZhbHVlc10gKE5TVUludGVn
ZXIgaW5kZXgsIEJPT0wgKikgewotICAgICAgICBVSUl0ZW1Qcm92aWRlciAqcHJvdmlkZXIgPSBb
cmV0YWluZWRTZWxmIGl0ZW1Qcm92aWRlckF0SW5kZXg6aW5kZXhdOworICAgICAgICBOU0l0ZW1Q
cm92aWRlciAqcHJvdmlkZXIgPSBbcmV0YWluZWRTZWxmIGl0ZW1Qcm92aWRlckF0SW5kZXg6aW5k
ZXhdOwogICAgICAgICBpZiAoIXByb3ZpZGVyKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC02
NDUsNyArNjQyLDcgQEAgc3RhdGljIEJPT0wgdHlwZUNvbmZvcm1zVG9UeXBlcyhOU1N0cmluZyAq
dHlwZSwgTlNBcnJheSAqY29uZm9ybXNUb1R5cGVzKQogewogICAgIE5TQXJyYXkgKnN1cHBvcnRl
ZEZpbGVUeXBlcyA9IFBhc3RlYm9hcmQ6OnN1cHBvcnRlZEZpbGVVcGxvYWRQYXN0ZWJvYXJkVHlw
ZXMoKTsKICAgICBOU0ludGVnZXIgbnVtYmVyT2ZGaWxlcyA9IDA7Ci0gICAgZm9yIChVSUl0ZW1Q
cm92aWRlciAqaXRlbVByb3ZpZGVyIGluIF9pdGVtUHJvdmlkZXJzLmdldCgpKSB7CisgICAgZm9y
IChOU0l0ZW1Qcm92aWRlciAqaXRlbVByb3ZpZGVyIGluIF9pdGVtUHJvdmlkZXJzLmdldCgpKSB7
CiAgICAgICAgIGlmIChpdGVtUHJvdmlkZXIucHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGUgPT0g
VUlQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZUlubGluZSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwogCkBAIC03OTMsNyArNzkwLDcgQEAgc3RhdGljIE5TVVJMICpsaW5rVGVtcG9yYXJ5SXRlbVBy
b3ZpZGVyRmlsZXNUb0Ryb3BTdGFnaW5nRGlyZWN0b3J5KE5TVVJMICp1cmwsIE4KICAgICBkaXNw
YXRjaF9ncm91cF9ub3RpZnkoZmlsZUxvYWRpbmdHcm91cC5nZXQoKSwgZGlzcGF0Y2hfZ2V0X21h
aW5fcXVldWUoKSwgaXRlbUxvYWRDb21wbGV0aW9uKTsKIH0KIAotLSAoVUlJdGVtUHJvdmlkZXIg
KilpdGVtUHJvdmlkZXJBdEluZGV4OihOU1VJbnRlZ2VyKWluZGV4CistIChOU0l0ZW1Qcm92aWRl
ciAqKWl0ZW1Qcm92aWRlckF0SW5kZXg6KE5TVUludGVnZXIpaW5kZXgKIHsKICAgICByZXR1cm4g
aW5kZXggPCBbX2l0ZW1Qcm92aWRlcnMgY291bnRdID8gW19pdGVtUHJvdmlkZXJzIG9iamVjdEF0
SW5kZXg6aW5kZXhdIDogbmlsOwogfQpAQCAtODEzLDcgKzgxMCw3IEBAIHN0YXRpYyBOU1VSTCAq
bGlua1RlbXBvcmFyeUl0ZW1Qcm92aWRlckZpbGVzVG9Ecm9wU3RhZ2luZ0RpcmVjdG9yeShOU1VS
TCAqdXJsLCBOCiAgICAgX3BlbmRpbmdPcGVyYXRpb25Db3VudC0tOwogfQogCi0tICh2b2lkKWVu
dW1lcmF0ZUl0ZW1Qcm92aWRlcnNXaXRoQmxvY2s6KHZvaWQgKF4pKFVJSXRlbVByb3ZpZGVyICpp
dGVtUHJvdmlkZXIsIE5TVUludGVnZXIgaW5kZXgsIEJPT0wgKnN0b3ApKWJsb2NrCistICh2b2lk
KWVudW1lcmF0ZUl0ZW1Qcm92aWRlcnNXaXRoQmxvY2s6KHZvaWQgKF4pKF9fa2luZG9mIE5TSXRl
bVByb3ZpZGVyICppdGVtUHJvdmlkZXIsIE5TVUludGVnZXIgaW5kZXgsIEJPT0wgKnN0b3ApKWJs
b2NrCiB7CiAgICAgW19pdGVtUHJvdmlkZXJzIGVudW1lcmF0ZU9iamVjdHNVc2luZ0Jsb2NrOmJs
b2NrXTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnRGF0
YU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbQppbmRl
eCBlMGVmZTdiMDhhOTJiMTlhMTNkMzM2NjhhYzNjYWYxM2E1NjI2NTI2Li4xNWFjMDYxNjIzMWUy
ZTFiOWE5N2U3NTBjN2Y3OWQzMzFiOGE2ZTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL0RyYWdEYXRhTWFjLm1tCkBAIC0yNzQsNyArMjc0LDcgQEAgYm9vbCBEcmFnRGF0YTo6Y29u
dGFpbnNVUkwoRmlsZW5hbWVDb252ZXJzaW9uUG9saWN5IGZpbGVuYW1lUG9saWN5KSBjb25zdAog
CiAgICAgYXV0byB1cmxTdHJpbmcgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0
cmF0ZWd5KCktPnN0cmluZ0ZvclR5cGUodXJsUGFzdGVib2FyZFR5cGUoKSwgbV9wYXN0ZWJvYXJk
TmFtZSk7CiAgICAgaWYgKHVybFN0cmluZy5pc0VtcHR5KCkpIHsKLSAgICAgICAgLy8gT24gaU9T
LCB3ZSBkb24ndCBnZXQgYWNjZXNzIHRvIHRoZSBjb250ZW50cyBvZiBVSUl0ZW1Qcm92aWRlcnMg
dW50aWwgd2UgcGVyZm9ybSB0aGUgZHJhZyBvcGVyYXRpb24uCisgICAgICAgIC8vIE9uIGlPUywg
d2UgZG9uJ3QgZ2V0IGFjY2VzcyB0byB0aGUgY29udGVudHMgb2YgTlNJdGVtUHJvdmlkZXJzIHVu
dGlsIHdlIHBlcmZvcm0gdGhlIGRyYWcgb3BlcmF0aW9uLgogICAgICAgICAvLyBUaHVzLCB3ZSBj
b25zaWRlciBEcmFnRGF0YSB0byBjb250YWluIGFuIFVSTCBpZiBpdCBjb250YWlucyB0aGUgYHB1
YmxpYy51cmxgIFVUSSB0eXBlLiBMYXRlciBkb3duIHRoZQogICAgICAgICAvLyByb2FkLCB3aGVu
IHdlIHBlcmZvcm0gdGhlIGRyYWcgb3BlcmF0aW9uLCB3ZSBjYW4gdGhlbiBjaGVjayBpZiB0aGUg
VVJMJ3MgcHJvdG9jb2wgaXMgaHR0cCBvciBodHRwcywKICAgICAgICAgLy8gYW5kIGlmIGl0IGlz
bid0LCB3ZSBiYWlsIG91dCBvZiBwYWdlIG5hdmlnYXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vc3BpL2lvcy9VSUtpdFNQSS5oCmluZGV4IDllZWZiOTc4NGZiZTY4OWIwOTBhNWIwMWZjZWVj
ZTcwZDY1NDEzMmQuLjI3ZjI1YzE1MjljYmYyYTY1MjFjNjJjMjk2MTE2NzNiZTQ0ZWUxMzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oCkBAIC05MSw3ICs5MSw2
IEBACiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogI2ltcG9ydCA8VUlLaXQvTlNJdGVtUHJv
dmlkZXIrVUlLaXRBZGRpdGlvbnNfUHJpdmF0ZS5oPgotI2ltcG9ydCA8VUlLaXQvVUlJdGVtUHJv
dmlkZXJfUHJpdmF0ZS5oPgogI2VuZGlmCiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQpAQCAt
OTM1LDkgKzkzNCw2IEBAIHR5cGVkZWYgZW51bSB7CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JU
KQogCi1AaW50ZXJmYWNlIFVJSXRlbVByb3ZpZGVyIDogTlNJdGVtUHJvdmlkZXIKLUBlbmQKLQog
V1RGX0VYVEVSTl9DX0JFR0lOCiAKIE5TVGltZUludGVydmFsIF9VSURyYWdJbnRlcmFjdGlvbkRl
ZmF1bHRMaWZ0RGVsYXkodm9pZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCAyMWQzMTc3MDA2YjFjNmRm
MDE2YmFiZjNlMGMzNmE3Mzg4NDJhMDkyLi5kOWI0NzhlOGE4ODE3NDM1ZjRlNmEyNWFlZDBiMWEz
YWVmZTBlMGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTUzMDQsMTggKzUzMDQsMTcgQEAgc3RhdGlj
IFVJRHJvcE9wZXJhdGlvbiBkcm9wT3BlcmF0aW9uRm9yV2ViQ29yZURyYWdPcGVyYXRpb24oRHJh
Z09wZXJhdGlvbiBvcGVyYXQKICAgICBfZHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlID0geyB9Owog
fQogCi1zdGF0aWMgTlNBcnJheTxVSUl0ZW1Qcm92aWRlciAqPiAqZXh0cmFjdEl0ZW1Qcm92aWRl
cnNGcm9tRHJhZ0l0ZW1zKE5TQXJyYXk8VUlEcmFnSXRlbSAqPiAqZHJhZ0l0ZW1zKQorc3RhdGlj
IE5TQXJyYXk8TlNJdGVtUHJvdmlkZXIgKj4gKmV4dHJhY3RJdGVtUHJvdmlkZXJzRnJvbURyYWdJ
dGVtcyhOU0FycmF5PFVJRHJhZ0l0ZW0gKj4gKmRyYWdJdGVtcykKIHsKLSAgICBOU011dGFibGVB
cnJheTxVSUl0ZW1Qcm92aWRlciAqPiAqcHJvdmlkZXJzID0gW05TTXV0YWJsZUFycmF5IGFycmF5
XTsKKyAgICBOU011dGFibGVBcnJheTxOU0l0ZW1Qcm92aWRlciAqPiAqcHJvdmlkZXJzID0gW05T
TXV0YWJsZUFycmF5IGFycmF5XTsKICAgICBmb3IgKFVJRHJhZ0l0ZW0gKml0ZW0gaW4gZHJhZ0l0
ZW1zKSB7Ci0gICAgICAgIFJldGFpblB0cjxVSUl0ZW1Qcm92aWRlcj4gcHJvdmlkZXIgPSBpdGVt
Lml0ZW1Qcm92aWRlcjsKLSAgICAgICAgaWYgKHByb3ZpZGVyKQotICAgICAgICAgICAgW3Byb3Zp
ZGVycyBhZGRPYmplY3Q6cHJvdmlkZXIuZ2V0KCldOworICAgICAgICBpZiAoTlNJdGVtUHJvdmlk
ZXIgKnByb3ZpZGVyID0gaXRlbS5pdGVtUHJvdmlkZXIpCisgICAgICAgICAgICBbcHJvdmlkZXJz
IGFkZE9iamVjdDpwcm92aWRlcl07CiAgICAgfQogICAgIHJldHVybiBwcm92aWRlcnM7CiB9CiAK
LXN0YXRpYyBOU0FycmF5PFVJSXRlbVByb3ZpZGVyICo+ICpleHRyYWN0SXRlbVByb3ZpZGVyc0Zy
b21Ecm9wU2Vzc2lvbihpZCA8VUlEcm9wU2Vzc2lvbj4gc2Vzc2lvbikKK3N0YXRpYyBOU0FycmF5
PE5TSXRlbVByb3ZpZGVyICo+ICpleHRyYWN0SXRlbVByb3ZpZGVyc0Zyb21Ecm9wU2Vzc2lvbihp
ZCA8VUlEcm9wU2Vzc2lvbj4gc2Vzc2lvbikKIHsKICAgICByZXR1cm4gZXh0cmFjdEl0ZW1Qcm92
aWRlcnNGcm9tRHJhZ0l0ZW1zKHNlc3Npb24uaXRlbXMpOwogfQpAQCAtNTQ5MSw3ICs1NDkwLDcg
QEAgc3RhdGljIE5TQXJyYXk8VUlJdGVtUHJvdmlkZXIgKj4gKmV4dHJhY3RJdGVtUHJvdmlkZXJz
RnJvbURyb3BTZXNzaW9uKGlkIDxVSURyb3AKIAogLSAoTlNBcnJheTxVSURyYWdJdGVtICo+ICop
X2l0ZW1zRm9yQmVnaW5uaW5nT3JBZGRpbmdUb1Nlc3Npb25XaXRoUmVnaXN0cmF0aW9uTGlzdDoo
V2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5mb0xpc3QgKilyZWdpc3RyYXRpb25MaXN0IHN0
YWdlZERyYWdTb3VyY2U6KGNvbnN0IERyYWdTb3VyY2VTdGF0ZSYpc3RhZ2VkRHJhZ1NvdXJjZQog
ewotICAgIFVJSXRlbVByb3ZpZGVyICpkZWZhdWx0SXRlbVByb3ZpZGVyID0gcmVnaXN0cmF0aW9u
TGlzdC5pdGVtUHJvdmlkZXI7CisgICAgTlNJdGVtUHJvdmlkZXIgKmRlZmF1bHRJdGVtUHJvdmlk
ZXIgPSByZWdpc3RyYXRpb25MaXN0Lml0ZW1Qcm92aWRlcjsKICAgICBpZiAoIWRlZmF1bHRJdGVt
UHJvdmlkZXIpCiAgICAgICAgIHJldHVybiBAWyBdOwogCkBAIC01NTExLDcgKzU1MTAsNyBAQCBz
dGF0aWMgTlNBcnJheTxVSUl0ZW1Qcm92aWRlciAqPiAqZXh0cmFjdEl0ZW1Qcm92aWRlcnNGcm9t
RHJvcFNlc3Npb24oaWQgPFVJRHJvcAogICAgICAgICBhZGp1c3RlZEl0ZW1Qcm92aWRlcnMgPSBA
WyBkZWZhdWx0SXRlbVByb3ZpZGVyIF07CiAKICAgICBOU011dGFibGVBcnJheSAqZHJhZ0l0ZW1z
ID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OmFkanVzdGVkSXRlbVByb3ZpZGVy
cy5jb3VudF07Ci0gICAgZm9yIChVSUl0ZW1Qcm92aWRlciAqaXRlbVByb3ZpZGVyIGluIGFkanVz
dGVkSXRlbVByb3ZpZGVycykgeworICAgIGZvciAoTlNJdGVtUHJvdmlkZXIgKml0ZW1Qcm92aWRl
ciBpbiBhZGp1c3RlZEl0ZW1Qcm92aWRlcnMpIHsKICAgICAgICAgYXV0byBpdGVtID0gYWRvcHRO
UyhbW1VJRHJhZ0l0ZW0gYWxsb2NdIGluaXRXaXRoSXRlbVByb3ZpZGVyOml0ZW1Qcm92aWRlcl0p
OwogICAgICAgICBbaXRlbSBfc2V0UHJpdmF0ZUxvY2FsQ29udGV4dDpAKHN0YWdlZERyYWdTb3Vy
Y2UuaXRlbUlkZW50aWZpZXIpXTsKICAgICAgICAgW2RyYWdJdGVtcyBhZGRPYmplY3Q6aXRlbS5h
dXRvcmVsZWFzZSgpXTsKQEAgLTU3NzUsNyArNTc3NCw3IEBAIHN0YXRpYyBOU0FycmF5PFVJSXRl
bVByb3ZpZGVyICo+ICpleHRyYWN0SXRlbVByb3ZpZGVyc0Zyb21Ecm9wU2Vzc2lvbihpZCA8VUlE
cm9wCiAKIC0gKHZvaWQpZHJvcEludGVyYWN0aW9uOihVSURyb3BJbnRlcmFjdGlvbiAqKWludGVy
YWN0aW9uIHBlcmZvcm1Ecm9wOihpZCA8VUlEcm9wU2Vzc2lvbj4pc2Vzc2lvbgogewotICAgIE5T
QXJyYXkgPFVJSXRlbVByb3ZpZGVyICo+ICppdGVtUHJvdmlkZXJzID0gZXh0cmFjdEl0ZW1Qcm92
aWRlcnNGcm9tRHJvcFNlc3Npb24oc2Vzc2lvbik7CisgICAgTlNBcnJheSA8TlNJdGVtUHJvdmlk
ZXIgKj4gKml0ZW1Qcm92aWRlcnMgPSBleHRyYWN0SXRlbVByb3ZpZGVyc0Zyb21Ecm9wU2Vzc2lv
bihzZXNzaW9uKTsKICAgICBpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4gdWlEZWxlZ2F0ZSA9IHNl
bGYud2ViVmlld1VJRGVsZWdhdGU7CiAgICAgaWYgKFt1aURlbGVnYXRlIHJlc3BvbmRzVG9TZWxl
Y3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6cGVyZm9ybURhdGFJbnRlcmFjdGlvbk9wZXJhdGlvbldp
dGhJdGVtUHJvdmlkZXJzOildKSB7CiAgICAgICAgIGlmIChbdWlEZWxlZ2F0ZSBfd2ViVmlldzpf
d2ViVmlldyBwZXJmb3JtRGF0YUludGVyYWN0aW9uT3BlcmF0aW9uV2l0aEl0ZW1Qcm92aWRlcnM6
aXRlbVByb3ZpZGVyc10pCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFu
Z2VMb2cKaW5kZXggOTA2ZDQ0OGE1NTQxZjEyNGNiNmIwNzBhMmRmMWQ3OTlkMDE2ZDE5Ni4uYzg4
MTlkYTVmNDE5NWUyOTVhNjhiZDExNTgwMGM3YzUzYWI4M2Q3MSAxMDA2NDQKLS0tIGEvVG9vbHMv
Q2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDE4LTEx
LTE3ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtp
T1NdIFJlbW92ZSBhbGwgdXNhZ2VzIG9mIFVJSXRlbVByb3ZpZGVyLCBVSUl0ZW1Qcm92aWRlclJl
YWRpbmcsIGFuZCByZWxhdGVkIGNsYXNzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5MTgxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFJlcGxhY2UgVUlJdGVtUHJvdmlkZXIgKGFuZCByZWxhdGVkIGNs
YXNzZXMpIHdpdGggTlNJdGVtUHJvdmlkZXIuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1tOgorICAgICAgICAocGxhdGZvcm1D
b3B5UE5HKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EcmFnQW5kRHJvcFRl
c3RzSU9TLm1tOgorICAgICAgICAoLVtOU0l0ZW1Qcm92aWRlciByZWdpc3RlckRhdGFSZXByZXNl
bnRhdGlvbkZvclR5cGVJZGVudGlmaWVyOndpdGhEYXRhOl0pOgorCisgICAgICAgIFJlcGxhY2Ug
dXNhZ2VzIG9mIHRoaXMgZGVwcmVjYXRlZCBtZXRob2Qgd2l0aCBgLXJlZ2lzdGVyRGF0YVJlcHJl
c2VudGF0aW9uRm9yVHlwZUlkZW50aWZpZXI6dmlzaWJpbGl0eTpsb2FkSGFuZGxlcjpgLgorCisg
ICAgICAgIChjaGVja0VzdGltYXRlZFNpemUpOgorICAgICAgICAoY2hlY2tTdWdnZXN0ZWROYW1l
QW5kRXN0aW1hdGVkU2l6ZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAg
ICAgKC1bVUlJdGVtUHJvdmlkZXIgcmVnaXN0ZXJEYXRhUmVwcmVzZW50YXRpb25Gb3JUeXBlSWRl
bnRpZmllcjp3aXRoRGF0YTpdKTogRGVsZXRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2Nv
Y29hL0RyYWdBbmREcm9wU2ltdWxhdG9yLmg6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9pb3Mv
RHJhZ0FuZERyb3BTaW11bGF0b3JJT1MubW06CisgICAgICAgICgtW01vY2tEcmFnRHJvcFNlc3Np
b24gY2FuTG9hZE9iamVjdHNPZkNsYXNzOl0pOgorICAgICAgICAoLVtNb2NrRHJhZ0Ryb3BTZXNz
aW9uIGNhbkxvYWRPYmplY3RzT2ZDbGFzc2VzOl0pOgorICAgICAgICAoLVtNb2NrRHJvcFNlc3Np
b24gaW5pdFdpdGhQcm92aWRlcnM6bG9jYXRpb246d2luZG93OmFsbG93TW92ZTpdKToKKyAgICAg
ICAgKC1bTW9ja0Ryb3BTZXNzaW9uIGNhbkNyZWF0ZUl0ZW1zT2ZDbGFzczpdKToKKyAgICAgICAg
KC1bRHJhZ0FuZERyb3BTaW11bGF0b3IgX2FkdmFuY2VQcm9ncmVzc10pOgorICAgICAgICAoLVtE
cmFnQW5kRHJvcFNpbXVsYXRvciBfd2ViVmlldzpkYXRhSW50ZXJhY3Rpb25PcGVyYXRpb25XYXNI
YW5kbGVkOmZvclNlc3Npb246aXRlbVByb3ZpZGVyczpdKToKKyAgICAgICAgKC1bRHJhZ0FuZERy
b3BTaW11bGF0b3IgX3dlYlZpZXc6YWRqdXN0ZWREYXRhSW50ZXJhY3Rpb25JdGVtUHJvdmlkZXJz
Rm9ySXRlbVByb3ZpZGVyOnJlcHJlc2VudGluZ09iamVjdHM6YWRkaXRpb25hbERhdGE6XSk6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9pb3MvVUlLaXRTUEkuaDoKKwogMjAxOC0xMS0xNiAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIFtX
ZWJLaXQyXSBBZGQgc3VwcG9ydCBmb3IgcmVwbGFjaW5nIGZpbmQtaW4tcGFnZSB0ZXh0IG1hdGNo
ZXMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tB
dHRhY2htZW50VGVzdHMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1dLQXR0YWNobWVudFRlc3RzLm1tCmluZGV4IDhmMTNiNzhmYjVlZDE5MWNjYTMxZDBiNWI0MWNl
NDJhZDc2YTRkZWQuLmUyY2U3MmE0MzUzMzNmZGUwNzEwMmVhZjdkOGMwMDJkYTA5NGQ3YzUgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2ht
ZW50VGVzdHMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9X
S0F0dGFjaG1lbnRUZXN0cy5tbQpAQCAtNTMyLDcgKzUzMiw3IEBAIHZvaWQgcGxhdGZvcm1Db3B5
UE5HKCkKICAgICBbcGFzdGVib2FyZCBzZXREYXRhOnRlc3RJbWFnZURhdGEoKSBmb3JUeXBlOk5T
UGFzdGVib2FyZFR5cGVQTkddOwogI2VsaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBVSVBh
c3RlYm9hcmQgKnBhc3RlYm9hcmQgPSBbVUlQYXN0ZWJvYXJkIGdlbmVyYWxQYXN0ZWJvYXJkXTsK
LSAgICBhdXRvIGl0ZW0gPSBhZG9wdE5TKFtbVUlJdGVtUHJvdmlkZXIgYWxsb2NdIGluaXRdKTsK
KyAgICBhdXRvIGl0ZW0gPSBhZG9wdE5TKFtbTlNJdGVtUHJvdmlkZXIgYWxsb2NdIGluaXRdKTsK
ICAgICBbaXRlbSBzZXRQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZTpVSVByZWZlcnJlZFByZXNl
bnRhdGlvblN0eWxlQXR0YWNobWVudF07CiAgICAgW2l0ZW0gcmVnaXN0ZXJEYXRhOnRlc3RJbWFn
ZURhdGEoKSB0eXBlOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVQTkddOwogICAgIHBhc3Rl
Ym9hcmQuaXRlbVByb3ZpZGVycyA9IEBbIGl0ZW0uZ2V0KCkgXTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0RyYWdBbmREcm9wVGVzdHNJT1MubW0gYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EcmFnQW5kRHJvcFRlc3RzSU9TLm1tCmluZGV4IGI5MDNl
ZGM0NWEzYmI2NGI5MGFkMmEyN2YwYzczNzQzNzBlNDU2OTguLmI4NzljMGZkZDE2ZWU5MTM0MWVk
MjY1YjhlMjc4YmYwYmViOWIxM2UgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvaW9zL0RyYWdBbmREcm9wVGVzdHNJT1MubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9pb3MvRHJhZ0FuZERyb3BUZXN0c0lPUy5tbQpAQCAtNDUsMTggKzQ1LDE3IEBACiAKIHR5
cGVkZWYgdm9pZCAoXkZpbGVMb2FkQ29tcGxldGlvbkJsb2NrKShOU1VSTCAqLCBCT09MLCBOU0Vy
cm9yICopOwogdHlwZWRlZiB2b2lkICheRGF0YUxvYWRDb21wbGV0aW9uQmxvY2spKE5TRGF0YSAq
LCBOU0Vycm9yICopOwotdHlwZWRlZiB2b2lkICheVUlJdGVtUHJvdmlkZXJEYXRhTG9hZENvbXBs
ZXRpb25CbG9jaykoTlNEYXRhICosIE5TRXJyb3IgKik7Cit0eXBlZGVmIHZvaWQgKF5OU0l0ZW1Q
cm92aWRlckRhdGFMb2FkQ29tcGxldGlvbkJsb2NrKShOU0RhdGEgKiwgTlNFcnJvciAqKTsKIAog
I2lmICFVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQogCi1AaW50ZXJmYWNlIFVJSXRlbVByb3ZpZGVy
UmVwcmVzZW50YXRpb25PcHRpb25zIDogTlNPYmplY3QKK0BpbnRlcmZhY2UgTlNJdGVtUHJvdmlk
ZXJSZXByZXNlbnRhdGlvbk9wdGlvbnMgOiBOU09iamVjdAogQGVuZAogCiAjZW5kaWYKIAotQGlu
dGVyZmFjZSBVSUl0ZW1Qcm92aWRlcigpCi0rIChVSUl0ZW1Qcm92aWRlciAqKWl0ZW1Qcm92aWRl
cldpdGhVUkw6KE5TVVJMICopdXJsIHRpdGxlOihOU1N0cmluZyAqKXRpdGxlOwotLSAodm9pZCkg
cmVnaXN0ZXJEYXRhUmVwcmVzZW50YXRpb25Gb3JUeXBlSWRlbnRpZmllcjooTlNTdHJpbmcgKil0
eXBlSWRlbnRpZmllciBvcHRpb25zOihVSUl0ZW1Qcm92aWRlclJlcHJlc2VudGF0aW9uT3B0aW9u
cyopb3B0aW9ucyBsb2FkSGFuZGxlcjooTlNQcm9ncmVzcyAqICheKSh2b2lkICheVUlJdGVtUHJv
dmlkZXJEYXRhTG9hZENvbXBsZXRpb25CbG9jaykoTlNEYXRhICppdGVtLCBOU0Vycm9yICplcnJv
cikpKSBsb2FkSGFuZGxlcjsKK0BpbnRlcmZhY2UgTlNJdGVtUHJvdmlkZXIgKCkKKysgKE5TSXRl
bVByb3ZpZGVyICopaXRlbVByb3ZpZGVyV2l0aFVSTDooTlNVUkwgKil1cmwgdGl0bGU6KE5TU3Ry
aW5nICopdGl0bGU7CiBAZW5kCiAKIHN0YXRpYyBOU1N0cmluZyAqSW5qZWN0ZWRCdW5kbGVQYXN0
ZWJvYXJkRGF0YVR5cGUgPSBAIm9yZy53ZWJraXQuZGF0YSI7CkBAIC03MiwxMiArNzEsMTIgQEAg
c3RhdGljIE5TRGF0YSAqdGVzdFpJUEFyY2hpdmUoKQogICAgIHJldHVybiBbTlNEYXRhIGRhdGFX
aXRoQ29udGVudHNPZlVSTDp6aXBGaWxlVVJMXTsKIH0KIAotQGltcGxlbWVudGF0aW9uIFVJSXRl
bVByb3ZpZGVyIChEcmFnQW5kRHJvcFRlc3RzKQorQGltcGxlbWVudGF0aW9uIE5TSXRlbVByb3Zp
ZGVyIChEcmFnQW5kRHJvcFRlc3RzKQogCiAtICh2b2lkKXJlZ2lzdGVyRGF0YVJlcHJlc2VudGF0
aW9uRm9yVHlwZUlkZW50aWZpZXI6KE5TU3RyaW5nICopdHlwZUlkZW50aWZpZXIgd2l0aERhdGE6
KE5TRGF0YSAqKWRhdGEKIHsKICAgICBSZXRhaW5QdHI8TlNEYXRhPiByZXRhaW5lZERhdGEgPSBk
YXRhOwotICAgIFtzZWxmIHJlZ2lzdGVyRGF0YVJlcHJlc2VudGF0aW9uRm9yVHlwZUlkZW50aWZp
ZXI6dHlwZUlkZW50aWZpZXIgdmlzaWJpbGl0eTpVSUl0ZW1Qcm92aWRlclJlcHJlc2VudGF0aW9u
T3B0aW9uc1Zpc2liaWxpdHlBbGwgbG9hZEhhbmRsZXI6IFtyZXRhaW5lZERhdGFdIChEYXRhTG9h
ZENvbXBsZXRpb25CbG9jayBibG9jaykgLT4gTlNQcm9ncmVzcyAqIHsKKyAgICBbc2VsZiByZWdp
c3RlckRhdGFSZXByZXNlbnRhdGlvbkZvclR5cGVJZGVudGlmaWVyOnR5cGVJZGVudGlmaWVyIHZp
c2liaWxpdHk6TlNJdGVtUHJvdmlkZXJSZXByZXNlbnRhdGlvblZpc2liaWxpdHlBbGwgbG9hZEhh
bmRsZXI6IFtyZXRhaW5lZERhdGFdIChEYXRhTG9hZENvbXBsZXRpb25CbG9jayBibG9jaykgLT4g
TlNQcm9ncmVzcyAqIHsKICAgICAgICAgYmxvY2socmV0YWluZWREYXRhLmdldCgpLCBuaWwpOwog
ICAgICAgICByZXR1cm4gW05TUHJvZ3Jlc3MgZGlzY3JldGVQcm9ncmVzc1dpdGhUb3RhbFVuaXRD
b3VudDoxMDBdOwogICAgIH1dOwpAQCAtMTQ2LDE0ICsxNDUsMTQgQEAgc3RhdGljIHZvaWQgY2hl
Y2tUeXBlSWRlbnRpZmllcklzUmVnaXN0ZXJlZEF0SW5kZXgoRHJhZ0FuZERyb3BTaW11bGF0b3Ig
KnNpbXVsYXQKIAogc3RhdGljIHZvaWQgY2hlY2tFc3RpbWF0ZWRTaXplKERyYWdBbmREcm9wU2lt
dWxhdG9yICpzaW11bGF0b3IsIENHU2l6ZSBlc3RpbWF0ZWRTaXplKQogewotICAgIFVJSXRlbVBy
b3ZpZGVyICpzb3VyY2VJdGVtUHJvdmlkZXIgPSBbc2ltdWxhdG9yIHNvdXJjZUl0ZW1Qcm92aWRl
cnNdLmZpcnN0T2JqZWN0OworICAgIE5TSXRlbVByb3ZpZGVyICpzb3VyY2VJdGVtUHJvdmlkZXIg
PSBbc2ltdWxhdG9yIHNvdXJjZUl0ZW1Qcm92aWRlcnNdLmZpcnN0T2JqZWN0OwogICAgIEVYUEVD
VF9FUShlc3RpbWF0ZWRTaXplLndpZHRoLCBzb3VyY2VJdGVtUHJvdmlkZXIucHJlZmVycmVkUHJl
c2VudGF0aW9uU2l6ZS53aWR0aCk7CiAgICAgRVhQRUNUX0VRKGVzdGltYXRlZFNpemUuaGVpZ2h0
LCBzb3VyY2VJdGVtUHJvdmlkZXIucHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZS5oZWlnaHQpOwog
fQogCiBzdGF0aWMgdm9pZCBjaGVja1N1Z2dlc3RlZE5hbWVBbmRFc3RpbWF0ZWRTaXplKERyYWdB
bmREcm9wU2ltdWxhdG9yICpzaW11bGF0b3IsIE5TU3RyaW5nICpzdWdnZXN0ZWROYW1lLCBDR1Np
emUgZXN0aW1hdGVkU2l6ZSkKIHsKLSAgICBVSUl0ZW1Qcm92aWRlciAqc291cmNlSXRlbVByb3Zp
ZGVyID0gW3NpbXVsYXRvciBzb3VyY2VJdGVtUHJvdmlkZXJzXS5maXJzdE9iamVjdDsKKyAgICBO
U0l0ZW1Qcm92aWRlciAqc291cmNlSXRlbVByb3ZpZGVyID0gW3NpbXVsYXRvciBzb3VyY2VJdGVt
UHJvdmlkZXJzXS5maXJzdE9iamVjdDsKICAgICBFWFBFQ1RfV0tfU1RSRVEoc3VnZ2VzdGVkTmFt
ZS5VVEY4U3RyaW5nLCBzb3VyY2VJdGVtUHJvdmlkZXIuc3VnZ2VzdGVkTmFtZS5VVEY4U3RyaW5n
KTsKICAgICBFWFBFQ1RfRVEoZXN0aW1hdGVkU2l6ZS53aWR0aCwgc291cmNlSXRlbVByb3ZpZGVy
LnByZWZlcnJlZFByZXNlbnRhdGlvblNpemUud2lkdGgpOwogICAgIEVYUEVDVF9FUShlc3RpbWF0
ZWRTaXplLmhlaWdodCwgc291cmNlSXRlbVByb3ZpZGVyLnByZWZlcnJlZFByZXNlbnRhdGlvblNp
emUuaGVpZ2h0KTsKQEAgLTQ5NCw3ICs0OTMsNyBAQCBURVNUKERyYWdBbmREcm9wVGVzdHMsIExp
bmtUb0lucHV0KQogICAgIEVYUEVDVF9XS19TVFJFUSgiaHR0cHM6Ly93d3cuYXBwbGUuY29tLyIs
IFt3ZWJWaWV3IGVkaXRvclZhbHVlXS5VVEY4U3RyaW5nKTsKIAogICAgIF9fYmxvY2sgYm9vbCBk
b25lTG9hZGluZ1VSTCA9IGZhbHNlOwotICAgIFVJSXRlbVByb3ZpZGVyICpzb3VyY2VJdGVtUHJv
dmlkZXIgPSBbc2ltdWxhdG9yIHNvdXJjZUl0ZW1Qcm92aWRlcnNdLmZpcnN0T2JqZWN0OworICAg
IE5TSXRlbVByb3ZpZGVyICpzb3VyY2VJdGVtUHJvdmlkZXIgPSBbc2ltdWxhdG9yIHNvdXJjZUl0
ZW1Qcm92aWRlcnNdLmZpcnN0T2JqZWN0OwogICAgIFtzb3VyY2VJdGVtUHJvdmlkZXIgbG9hZE9i
amVjdE9mQ2xhc3M6W05TVVJMIGNsYXNzXSBjb21wbGV0aW9uSGFuZGxlcjpeKGlkIG9iamVjdCwg
TlNFcnJvciAqZXJyb3IpIHsKICAgICAgICAgTlNVUkwgKnVybCA9IG9iamVjdDsKICAgICAgICAg
RVhQRUNUX1dLX1NUUkVRKCJIZWxsbyB3b3JsZCIsIHVybC5fdGl0bGUuVVRGOFN0cmluZyA/OiAi
Iik7CkBAIC01OTksOCArNTk4LDggQEAgVEVTVChEcmFnQW5kRHJvcFRlc3RzLCBFeHRlcm5hbFNv
dXJjZVBsYWluVGV4dFRvSUZyYW1lKQogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDAp
XSk7CiAgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAiY29udGVu
dGVkaXRhYmxlLWluLWlmcmFtZSJdOwogCi0gICAgYXV0byBpdGVtUHJvdmlkZXIgPSBhZG9wdE5T
KFtbVUlJdGVtUHJvdmlkZXIgYWxsb2NdIGluaXRdKTsKLSAgICBbaXRlbVByb3ZpZGVyIHJlZ2lz
dGVyT2JqZWN0OkAiSGVsbG8gd29ybGQiIHZpc2liaWxpdHk6VUlJdGVtUHJvdmlkZXJSZXByZXNl
bnRhdGlvbk9wdGlvbnNWaXNpYmlsaXR5QWxsXTsKKyAgICBhdXRvIGl0ZW1Qcm92aWRlciA9IGFk
b3B0TlMoW1tOU0l0ZW1Qcm92aWRlciBhbGxvY10gaW5pdF0pOworICAgIFtpdGVtUHJvdmlkZXIg
cmVnaXN0ZXJPYmplY3Q6QCJIZWxsbyB3b3JsZCIgdmlzaWJpbGl0eTpOU0l0ZW1Qcm92aWRlclJl
cHJlc2VudGF0aW9uVmlzaWJpbGl0eUFsbF07CiAKICAgICBhdXRvIHNpbXVsYXRvciA9IGFkb3B0
TlMoW1tEcmFnQW5kRHJvcFNpbXVsYXRvciBhbGxvY10gaW5pdFdpdGhXZWJWaWV3OndlYlZpZXcu
Z2V0KCldKTsKICAgICBbc2ltdWxhdG9yIHNldEV4dGVybmFsSXRlbVByb3ZpZGVyczpAWyBpdGVt
UHJvdmlkZXIuZ2V0KCkgXV07CkBAIC02MTgsNyArNjE3LDcgQEAgVEVTVChEcmFnQW5kRHJvcFRl
c3RzLCBFeHRlcm5hbFNvdXJjZUlubGluZVRleHRUb0ZpbGVJbnB1dCkKICAgICBhdXRvIHdlYlZp
ZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RN
YWtlKDAsIDAsIDMyMCwgNTAwKV0pOwogICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVz
dFBhZ2VOYW1lZDpAImZpbGUtdXBsb2FkaW5nIl07CiAKLSAgICBhdXRvIHNpbXVsYXRlZEl0ZW1Q
cm92aWRlciA9IGFkb3B0TlMoW1tVSUl0ZW1Qcm92aWRlciBhbGxvY10gaW5pdF0pOworICAgIGF1
dG8gc2ltdWxhdGVkSXRlbVByb3ZpZGVyID0gYWRvcHROUyhbW05TSXRlbVByb3ZpZGVyIGFsbG9j
XSBpbml0XSk7CiAgICAgW3NpbXVsYXRlZEl0ZW1Qcm92aWRlciBzZXRQcmVmZXJyZWRQcmVzZW50
YXRpb25TdHlsZTpVSVByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlSW5saW5lXTsKICAgICBbc2lt
dWxhdGVkSXRlbVByb3ZpZGVyIHJlZ2lzdGVyT2JqZWN0OkAiVGhpcyBpdGVtIHByb3ZpZGVyIHJl
cXVlc3RlZCBpbmxpbmUgcHJlc2VudGF0aW9uIHN0eWxlLiIgdmlzaWJpbGl0eTpOU0l0ZW1Qcm92
aWRlclJlcHJlc2VudGF0aW9uVmlzaWJpbGl0eUFsbF07CiAKQEAgLTYzNCw3ICs2MzMsNyBAQCBU
RVNUKERyYWdBbmREcm9wVGVzdHMsIEV4dGVybmFsU291cmNlSlNPTlRvRmlsZUlucHV0KQogICAg
IGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApXSk7CiAgICAgW3dlYlZpZXcgc3luY2hyb25v
dXNseUxvYWRUZXN0UGFnZU5hbWVkOkAiZmlsZS11cGxvYWRpbmciXTsKIAotICAgIGF1dG8gc2lt
dWxhdGVkSlNPTkl0ZW1Qcm92aWRlciA9IGFkb3B0TlMoW1tVSUl0ZW1Qcm92aWRlciBhbGxvY10g
aW5pdF0pOworICAgIGF1dG8gc2ltdWxhdGVkSlNPTkl0ZW1Qcm92aWRlciA9IGFkb3B0TlMoW1tO
U0l0ZW1Qcm92aWRlciBhbGxvY10gaW5pdF0pOwogICAgIE5TRGF0YSAqanNvbkRhdGEgPSBbQCJ7
IFwiZm9vXCI6IFwiYmFyXCIsICBcImJhclwiOiBcImJhelwiIH0iIGRhdGFVc2luZ0VuY29kaW5n
Ok5TVVRGOFN0cmluZ0VuY29kaW5nXTsKICAgICBbc2ltdWxhdGVkSlNPTkl0ZW1Qcm92aWRlciBy
ZWdpc3RlckRhdGFSZXByZXNlbnRhdGlvbkZvclR5cGVJZGVudGlmaWVyOihfX2JyaWRnZSBOU1N0
cmluZyAqKWtVVFR5cGVKU09OIHdpdGhEYXRhOmpzb25EYXRhXTsKIApAQCAtNjUwLDcgKzY0OSw3
IEBAIFRFU1QoRHJhZ0FuZERyb3BUZXN0cywgRXh0ZXJuYWxTb3VyY2VJbWFnZVRvRmlsZUlucHV0
KQogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApXSk7CiAgICAgW3dlYlZpZXcgc3lu
Y2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAiZmlsZS11cGxvYWRpbmciXTsKIAotICAgIGF1
dG8gc2ltdWxhdGVkSW1hZ2VJdGVtUHJvdmlkZXIgPSBhZG9wdE5TKFtbVUlJdGVtUHJvdmlkZXIg
YWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIHNpbXVsYXRlZEltYWdlSXRlbVByb3ZpZGVyID0gYWRv
cHROUyhbW05TSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7CiAgICAgTlNEYXRhICppbWFnZURh
dGEgPSBVSUltYWdlSlBFR1JlcHJlc2VudGF0aW9uKHRlc3RJY29uSW1hZ2UoKSwgMC41KTsKICAg
ICBbc2ltdWxhdGVkSW1hZ2VJdGVtUHJvdmlkZXIgcmVnaXN0ZXJEYXRhUmVwcmVzZW50YXRpb25G
b3JUeXBlSWRlbnRpZmllcjooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlSlBFRyB3aXRoRGF0
YTppbWFnZURhdGFdOwogCkBAIC02NjcsNyArNjY2LDcgQEAgVEVTVChEcmFnQW5kRHJvcFRlc3Rz
LCBFeHRlcm5hbFNvdXJjZUhUTUxUb1VwbG9hZEFyZWEpCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRv
cHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAw
LCAzMjAsIDUwMCldKTsKICAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFt
ZWQ6QCJmaWxlLXVwbG9hZGluZyJdOwogCi0gICAgYXV0byBzaW11bGF0ZWRIVE1MSXRlbVByb3Zp
ZGVyID0gYWRvcHROUyhbW1VJSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byBz
aW11bGF0ZWRIVE1MSXRlbVByb3ZpZGVyID0gYWRvcHROUyhbW05TSXRlbVByb3ZpZGVyIGFsbG9j
XSBpbml0XSk7CiAgICAgTlNEYXRhICpodG1sRGF0YSA9IFtAIjxib2R5IGNvbnRlbnRlZGl0YWJs
ZT48L2JvZHk+IiBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107CiAgICAg
W3NpbXVsYXRlZEhUTUxJdGVtUHJvdmlkZXIgcmVnaXN0ZXJEYXRhUmVwcmVzZW50YXRpb25Gb3JU
eXBlSWRlbnRpZmllcjooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlSFRNTCB3aXRoRGF0YTpo
dG1sRGF0YV07CiAgICAgW3NpbXVsYXRlZEhUTUxJdGVtUHJvdmlkZXIgc2V0U3VnZ2VzdGVkTmFt
ZTpAImluZGV4Lmh0bWwiXTsKQEAgLTY4Nyw3ICs2ODYsNyBAQCBURVNUKERyYWdBbmREcm9wVGVz
dHMsIEV4dGVybmFsU291cmNlTW92ZU9wZXJhdGlvbk5vdEFsbG93ZWQpCiAgICAgW3dlYlZpZXcg
c3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAiZmlsZS11cGxvYWRpbmciXTsKICAgICBb
d2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAidXBsb2FkLmRyb3BFZmZlY3Qg
PSAnbW92ZSciXTsKIAotICAgIGF1dG8gc2ltdWxhdGVkSFRNTEl0ZW1Qcm92aWRlciA9IGFkb3B0
TlMoW1tVSUl0ZW1Qcm92aWRlciBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gc2ltdWxhdGVkSFRN
TEl0ZW1Qcm92aWRlciA9IGFkb3B0TlMoW1tOU0l0ZW1Qcm92aWRlciBhbGxvY10gaW5pdF0pOwog
ICAgIE5TRGF0YSAqaHRtbERhdGEgPSBbQCI8Ym9keSBjb250ZW50ZWRpdGFibGU+PC9ib2R5PiIg
ZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOwogICAgIFtzaW11bGF0ZWRI
VE1MSXRlbVByb3ZpZGVyIHJlZ2lzdGVyRGF0YVJlcHJlc2VudGF0aW9uRm9yVHlwZUlkZW50aWZp
ZXI6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZUhUTUwgd2l0aERhdGE6aHRtbERhdGFdOwog
CkBAIC03MDQsMTEgKzcwMywxMSBAQCBURVNUKERyYWdBbmREcm9wVGVzdHMsIEV4dGVybmFsU291
cmNlWklQQXJjaGl2ZUFuZFVSTFRvU2luZ2xlRmlsZUlucHV0KQogICAgIGF1dG8gd2ViVmlldyA9
IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2Uo
MCwgMCwgMzIwLCA1MDApXSk7CiAgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFn
ZU5hbWVkOkAiZmlsZS11cGxvYWRpbmciXTsKIAotICAgIGF1dG8gYXJjaGl2ZVByb3ZpZGVyID0g
YWRvcHROUyhbW1VJSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byBhcmNoaXZl
UHJvdmlkZXIgPSBhZG9wdE5TKFtbTlNJdGVtUHJvdmlkZXIgYWxsb2NdIGluaXRdKTsKICAgICBb
YXJjaGl2ZVByb3ZpZGVyIHJlZ2lzdGVyRGF0YVJlcHJlc2VudGF0aW9uRm9yVHlwZUlkZW50aWZp
ZXI6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZVppcEFyY2hpdmUgd2l0aERhdGE6dGVzdFpJ
UEFyY2hpdmUoKV07CiAKLSAgICBhdXRvIHVybFByb3ZpZGVyID0gYWRvcHROUyhbW1VJSXRlbVBy
b3ZpZGVyIGFsbG9jXSBpbml0XSk7Ci0gICAgW3VybFByb3ZpZGVyIHJlZ2lzdGVyT2JqZWN0OltO
U1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly93ZWJraXQub3JnIl0gdmlzaWJpbGl0eTpVSUl0
ZW1Qcm92aWRlclJlcHJlc2VudGF0aW9uT3B0aW9uc1Zpc2liaWxpdHlBbGxdOworICAgIGF1dG8g
dXJsUHJvdmlkZXIgPSBhZG9wdE5TKFtbTlNJdGVtUHJvdmlkZXIgYWxsb2NdIGluaXRdKTsKKyAg
ICBbdXJsUHJvdmlkZXIgcmVnaXN0ZXJPYmplY3Q6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRw
czovL3dlYmtpdC5vcmciXSB2aXNpYmlsaXR5Ok5TSXRlbVByb3ZpZGVyUmVwcmVzZW50YXRpb25W
aXNpYmlsaXR5QWxsXTsKIAogICAgIGF1dG8gc2ltdWxhdG9yID0gYWRvcHROUyhbW0RyYWdBbmRE
cm9wU2ltdWxhdG9yIGFsbG9jXSBpbml0V2l0aFdlYlZpZXc6d2ViVmlldy5nZXQoKV0pOwogICAg
IFtzaW11bGF0b3Igc2V0RXh0ZXJuYWxJdGVtUHJvdmlkZXJzOkBbIGFyY2hpdmVQcm92aWRlci5n
ZXQoKSwgdXJsUHJvdmlkZXIuZ2V0KCkgXV07CkBAIC03MjMsNyArNzIyLDcgQEAgVEVTVChEcmFn
QW5kRHJvcFRlc3RzLCBFeHRlcm5hbFNvdXJjZVpJUEFyY2hpdmVUb1VwbG9hZEFyZWEpCiAgICAg
YXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCldKTsKICAgICBbd2ViVmlldyBzeW5jaHJvbm91
c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJmaWxlLXVwbG9hZGluZyJdOwogCi0gICAgYXV0byBpdGVt
UHJvdmlkZXIgPSBhZG9wdE5TKFtbVUlJdGVtUHJvdmlkZXIgYWxsb2NdIGluaXRdKTsKKyAgICBh
dXRvIGl0ZW1Qcm92aWRlciA9IGFkb3B0TlMoW1tOU0l0ZW1Qcm92aWRlciBhbGxvY10gaW5pdF0p
OwogICAgIFtpdGVtUHJvdmlkZXIgcmVnaXN0ZXJEYXRhUmVwcmVzZW50YXRpb25Gb3JUeXBlSWRl
bnRpZmllcjooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlWmlwQXJjaGl2ZSB3aXRoRGF0YTp0
ZXN0WklQQXJjaGl2ZSgpXTsKIAogICAgIGF1dG8gc2ltdWxhdG9yID0gYWRvcHROUyhbW0RyYWdB
bmREcm9wU2ltdWxhdG9yIGFsbG9jXSBpbml0V2l0aFdlYlZpZXc6d2ViVmlldy5nZXQoKV0pOwpA
QCAtNzM5LDExICs3MzgsMTEgQEAgVEVTVChEcmFnQW5kRHJvcFRlc3RzLCBFeHRlcm5hbFNvdXJj
ZUltYWdlQW5kSFRNTFRvU2luZ2xlRmlsZUlucHV0KQogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0
TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwg
MzIwLCA1MDApXSk7CiAgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVk
OkAiZmlsZS11cGxvYWRpbmciXTsKIAotICAgIGF1dG8gc2ltdWxhdGVkSW1hZ2VJdGVtUHJvdmlk
ZXIgPSBhZG9wdE5TKFtbVUlJdGVtUHJvdmlkZXIgYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIHNp
bXVsYXRlZEltYWdlSXRlbVByb3ZpZGVyID0gYWRvcHROUyhbW05TSXRlbVByb3ZpZGVyIGFsbG9j
XSBpbml0XSk7CiAgICAgTlNEYXRhICppbWFnZURhdGEgPSBVSUltYWdlSlBFR1JlcHJlc2VudGF0
aW9uKHRlc3RJY29uSW1hZ2UoKSwgMC41KTsKICAgICBbc2ltdWxhdGVkSW1hZ2VJdGVtUHJvdmlk
ZXIgcmVnaXN0ZXJEYXRhUmVwcmVzZW50YXRpb25Gb3JUeXBlSWRlbnRpZmllcjooX19icmlkZ2Ug
TlNTdHJpbmcgKilrVVRUeXBlSlBFRyB3aXRoRGF0YTppbWFnZURhdGFdOwogCi0gICAgYXV0byBz
aW11bGF0ZWRIVE1MSXRlbVByb3ZpZGVyID0gYWRvcHROUyhbW1VJSXRlbVByb3ZpZGVyIGFsbG9j
XSBpbml0XSk7CisgICAgYXV0byBzaW11bGF0ZWRIVE1MSXRlbVByb3ZpZGVyID0gYWRvcHROUyhb
W05TSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7CiAgICAgTlNEYXRhICpodG1sRGF0YSA9IFtA
Ijxib2R5IGNvbnRlbnRlZGl0YWJsZT48L2JvZHk+IiBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhT
dHJpbmdFbmNvZGluZ107CiAgICAgW3NpbXVsYXRlZEhUTUxJdGVtUHJvdmlkZXIgcmVnaXN0ZXJE
YXRhUmVwcmVzZW50YXRpb25Gb3JUeXBlSWRlbnRpZmllcjooX19icmlkZ2UgTlNTdHJpbmcgKilr
VVRUeXBlSFRNTCB3aXRoRGF0YTpodG1sRGF0YV07CiAKQEAgLTc2MSwxMSArNzYwLDExIEBAIFRF
U1QoRHJhZ0FuZERyb3BUZXN0cywgRXh0ZXJuYWxTb3VyY2VJbWFnZUFuZEhUTUxUb011bHRpcGxl
RmlsZUlucHV0KQogICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpA
ImZpbGUtdXBsb2FkaW5nIl07CiAgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNj
cmlwdDpAImlucHV0LnNldEF0dHJpYnV0ZSgnbXVsdGlwbGUnLCAnJykiXTsKIAotICAgIGF1dG8g
c2ltdWxhdGVkSW1hZ2VJdGVtUHJvdmlkZXIgPSBhZG9wdE5TKFtbVUlJdGVtUHJvdmlkZXIgYWxs
b2NdIGluaXRdKTsKKyAgICBhdXRvIHNpbXVsYXRlZEltYWdlSXRlbVByb3ZpZGVyID0gYWRvcHRO
UyhbW05TSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7CiAgICAgTlNEYXRhICppbWFnZURhdGEg
PSBVSUltYWdlSlBFR1JlcHJlc2VudGF0aW9uKHRlc3RJY29uSW1hZ2UoKSwgMC41KTsKICAgICBb
c2ltdWxhdGVkSW1hZ2VJdGVtUHJvdmlkZXIgcmVnaXN0ZXJEYXRhUmVwcmVzZW50YXRpb25Gb3JU
eXBlSWRlbnRpZmllcjooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlSlBFRyB3aXRoRGF0YTpp
bWFnZURhdGFdOwogCi0gICAgYXV0byBzaW11bGF0ZWRIVE1MSXRlbVByb3ZpZGVyID0gYWRvcHRO
UyhbW1VJSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byBzaW11bGF0ZWRIVE1M
SXRlbVByb3ZpZGVyID0gYWRvcHROUyhbW05TSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7CiAg
ICAgTlNEYXRhICpodG1sRGF0YSA9IFtAIjxib2R5IGNvbnRlbnRlZGl0YWJsZT48L2JvZHk+IiBk
YXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107CiAgICAgW3NpbXVsYXRlZEhU
TUxJdGVtUHJvdmlkZXIgcmVnaXN0ZXJEYXRhUmVwcmVzZW50YXRpb25Gb3JUeXBlSWRlbnRpZmll
cjooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlSFRNTCB3aXRoRGF0YTpodG1sRGF0YV07CiAK
QEAgLTc4MiwxNSArNzgxLDE1IEBAIFRFU1QoRHJhZ0FuZERyb3BUZXN0cywgRXh0ZXJuYWxTb3Vy
Y2VJbWFnZUFuZEhUTUxUb1VwbG9hZEFyZWEpCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhb
W1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAs
IDUwMCldKTsKICAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJm
aWxlLXVwbG9hZGluZyJdOwogCi0gICAgYXV0byBzaW11bGF0ZWRJbWFnZUl0ZW1Qcm92aWRlciA9
IGFkb3B0TlMoW1tVSUl0ZW1Qcm92aWRlciBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gc2ltdWxh
dGVkSW1hZ2VJdGVtUHJvdmlkZXIgPSBhZG9wdE5TKFtbTlNJdGVtUHJvdmlkZXIgYWxsb2NdIGlu
aXRdKTsKICAgICBOU0RhdGEgKmltYWdlRGF0YSA9IFVJSW1hZ2VKUEVHUmVwcmVzZW50YXRpb24o
dGVzdEljb25JbWFnZSgpLCAwLjUpOwogICAgIFtzaW11bGF0ZWRJbWFnZUl0ZW1Qcm92aWRlciBy
ZWdpc3RlckRhdGFSZXByZXNlbnRhdGlvbkZvclR5cGVJZGVudGlmaWVyOihfX2JyaWRnZSBOU1N0
cmluZyAqKWtVVFR5cGVKUEVHIHdpdGhEYXRhOmltYWdlRGF0YV07CiAKLSAgICBhdXRvIGZpcnN0
U2ltdWxhdGVkSFRNTEl0ZW1Qcm92aWRlciA9IGFkb3B0TlMoW1tVSUl0ZW1Qcm92aWRlciBhbGxv
Y10gaW5pdF0pOworICAgIGF1dG8gZmlyc3RTaW11bGF0ZWRIVE1MSXRlbVByb3ZpZGVyID0gYWRv
cHROUyhbW05TSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7CiAgICAgTlNEYXRhICpmaXJzdEhU
TUxEYXRhID0gW0AiPGJvZHkgY29udGVudGVkaXRhYmxlPjwvYm9keT4iIGRhdGFVc2luZ0VuY29k
aW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsKICAgICBbZmlyc3RTaW11bGF0ZWRIVE1MSXRlbVBy
b3ZpZGVyIHJlZ2lzdGVyRGF0YVJlcHJlc2VudGF0aW9uRm9yVHlwZUlkZW50aWZpZXI6KF9fYnJp
ZGdlIE5TU3RyaW5nICopa1VUVHlwZUhUTUwgd2l0aERhdGE6Zmlyc3RIVE1MRGF0YV07CiAKLSAg
ICBhdXRvIHNlY29uZFNpbXVsYXRlZEhUTUxJdGVtUHJvdmlkZXIgPSBhZG9wdE5TKFtbVUlJdGVt
UHJvdmlkZXIgYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIHNlY29uZFNpbXVsYXRlZEhUTUxJdGVt
UHJvdmlkZXIgPSBhZG9wdE5TKFtbTlNJdGVtUHJvdmlkZXIgYWxsb2NdIGluaXRdKTsKICAgICBO
U0RhdGEgKnNlY29uZEhUTUxEYXRhID0gW0AiPGh0bWw+PGJvZHk+aGVsbG8gd29ybGQ8L2JvZHk+
PC9odG1sPiIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOwogICAgIFtz
ZWNvbmRTaW11bGF0ZWRIVE1MSXRlbVByb3ZpZGVyIHJlZ2lzdGVyRGF0YVJlcHJlc2VudGF0aW9u
Rm9yVHlwZUlkZW50aWZpZXI6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZUhUTUwgd2l0aERh
dGE6c2Vjb25kSFRNTERhdGFdOwogCkBAIC04MTAsNyArODA5LDcgQEAgVEVTVChEcmFnQW5kRHJv
cFRlc3RzLCBFeHRlcm5hbFNvdXJjZUhUTUxUb0NvbnRlbnRFZGl0YWJsZSkKICAgICBbd2ViVmll
dyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZ2V0U2VsZWN0aW9uKCkucmVtb3ZlQWxs
UmFuZ2VzKCkiXTsKIAogICAgIGF1dG8gc2ltdWxhdG9yID0gYWRvcHROUyhbW0RyYWdBbmREcm9w
U2ltdWxhdG9yIGFsbG9jXSBpbml0V2l0aFdlYlZpZXc6d2ViVmlldy5nZXQoKV0pOwotICAgIGF1
dG8gaXRlbVByb3ZpZGVyID0gYWRvcHROUyhbW1VJSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7
CisgICAgYXV0byBpdGVtUHJvdmlkZXIgPSBhZG9wdE5TKFtbTlNJdGVtUHJvdmlkZXIgYWxsb2Nd
IGluaXRdKTsKICAgICBOU0RhdGEgKmh0bWxEYXRhID0gW0AiPGgxPlRoaXMgaXMgYSB0ZXN0PC9o
MT4iIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsKICAgICBbaXRlbVBy
b3ZpZGVyIHJlZ2lzdGVyRGF0YVJlcHJlc2VudGF0aW9uRm9yVHlwZUlkZW50aWZpZXI6KF9fYnJp
ZGdlIE5TU3RyaW5nICopa1VUVHlwZUhUTUwgd2l0aERhdGE6aHRtbERhdGFdOwogICAgIFtzaW11
bGF0b3Igc2V0RXh0ZXJuYWxJdGVtUHJvdmlkZXJzOkBbIGl0ZW1Qcm92aWRlci5nZXQoKSBdXTsK
QEAgLTgzMCw3ICs4MjksNyBAQCBURVNUKERyYWdBbmREcm9wVGVzdHMsIEV4dGVybmFsU291cmNl
Qm9sZFN5c3RlbUF0dHJpYnV0ZWRTdHJpbmdUb0NvbnRlbnRFZGl0YWJsZQogICAgIGF1dG8gc2lt
dWxhdG9yID0gYWRvcHROUyhbW0RyYWdBbmREcm9wU2ltdWxhdG9yIGFsbG9jXSBpbml0V2l0aFdl
YlZpZXc6d2ViVmlldy5nZXQoKV0pOwogICAgIE5TRGljdGlvbmFyeSAqdGV4dEF0dHJpYnV0ZXMg
PSBAeyBOU0ZvbnRBdHRyaWJ1dGVOYW1lOiBbVUlGb250IGJvbGRTeXN0ZW1Gb250T2ZTaXplOjIw
XSB9OwogICAgIE5TQXR0cmlidXRlZFN0cmluZyAqcmljaFRleHQgPSBbW05TQXR0cmlidXRlZFN0
cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6QCJUaGlzIGlzIGEgdGVzdCIgYXR0cmlidXRlczp0
ZXh0QXR0cmlidXRlc107Ci0gICAgYXV0byBpdGVtUHJvdmlkZXIgPSBhZG9wdE5TKFtbVUlJdGVt
UHJvdmlkZXIgYWxsb2NdIGluaXRXaXRoT2JqZWN0OnJpY2hUZXh0XSk7CisgICAgYXV0byBpdGVt
UHJvdmlkZXIgPSBhZG9wdE5TKFtbTlNJdGVtUHJvdmlkZXIgYWxsb2NdIGluaXRXaXRoT2JqZWN0
OnJpY2hUZXh0XSk7CiAgICAgW3NpbXVsYXRvciBzZXRFeHRlcm5hbEl0ZW1Qcm92aWRlcnM6QFsg
aXRlbVByb3ZpZGVyLmdldCgpIF1dOwogICAgIFtzaW11bGF0b3IgcnVuRnJvbTpDR1BvaW50TWFr
ZSgzMDAsIDQwMCkgdG86Q0dQb2ludE1ha2UoMTAwLCAzMDApXTsKIApAQCAtODQ2LDcgKzg0NSw3
IEBAIFRFU1QoRHJhZ0FuZERyb3BUZXN0cywgRXh0ZXJuYWxTb3VyY2VDb2xvcmVkQXR0cmlidXRl
ZFN0cmluZ1RvQ29udGVudEVkaXRhYmxlKQogICAgIGF1dG8gc2ltdWxhdG9yID0gYWRvcHROUyhb
W0RyYWdBbmREcm9wU2ltdWxhdG9yIGFsbG9jXSBpbml0V2l0aFdlYlZpZXc6d2ViVmlldy5nZXQo
KV0pOwogICAgIE5TRGljdGlvbmFyeSAqdGV4dEF0dHJpYnV0ZXMgPSBAeyBOU0ZvcmVncm91bmRD
b2xvckF0dHJpYnV0ZU5hbWU6IFtVSUNvbG9yIHJlZENvbG9yXSB9OwogICAgIE5TQXR0cmlidXRl
ZFN0cmluZyAqcmljaFRleHQgPSBbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhT
dHJpbmc6QCJUaGlzIGlzIGEgdGVzdCIgYXR0cmlidXRlczp0ZXh0QXR0cmlidXRlc107Ci0gICAg
YXV0byBpdGVtUHJvdmlkZXIgPSBhZG9wdE5TKFtbVUlJdGVtUHJvdmlkZXIgYWxsb2NdIGluaXRX
aXRoT2JqZWN0OnJpY2hUZXh0XSk7CisgICAgYXV0byBpdGVtUHJvdmlkZXIgPSBhZG9wdE5TKFtb
TlNJdGVtUHJvdmlkZXIgYWxsb2NdIGluaXRXaXRoT2JqZWN0OnJpY2hUZXh0XSk7CiAgICAgW3Np
bXVsYXRvciBzZXRFeHRlcm5hbEl0ZW1Qcm92aWRlcnM6QFsgaXRlbVByb3ZpZGVyLmdldCgpIF1d
OwogICAgIFtzaW11bGF0b3IgcnVuRnJvbTpDR1BvaW50TWFrZSgzMDAsIDQwMCkgdG86Q0dQb2lu
dE1ha2UoMTAwLCAzMDApXTsKIApAQCAtODYxLDEyICs4NjAsMTIgQEAgVEVTVChEcmFnQW5kRHJv
cFRlc3RzLCBFeHRlcm5hbFNvdXJjZU11bHRpcGxlVVJMc1RvQ29udGVudEVkaXRhYmxlKQogICAg
IFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJnZXRTZWxlY3Rpb24oKS5y
ZW1vdmVBbGxSYW5nZXMoKSJdOwogCiAgICAgYXV0byBzaW11bGF0b3IgPSBhZG9wdE5TKFtbRHJh
Z0FuZERyb3BTaW11bGF0b3IgYWxsb2NdIGluaXRXaXRoV2ViVmlldzp3ZWJWaWV3LmdldCgpXSk7
Ci0gICAgYXV0byBmaXJzdEl0ZW0gPSBhZG9wdE5TKFtbVUlJdGVtUHJvdmlkZXIgYWxsb2NdIGlu
aXRdKTsKLSAgICBbZmlyc3RJdGVtIHJlZ2lzdGVyT2JqZWN0OltOU1VSTCBVUkxXaXRoU3RyaW5n
OkAiaHR0cHM6Ly93d3cuYXBwbGUuY29tL2lwaG9uZS8iXSB2aXNpYmlsaXR5OlVJSXRlbVByb3Zp
ZGVyUmVwcmVzZW50YXRpb25PcHRpb25zVmlzaWJpbGl0eUFsbF07Ci0gICAgYXV0byBzZWNvbmRJ
dGVtID0gYWRvcHROUyhbW1VJSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7Ci0gICAgW3NlY29u
ZEl0ZW0gcmVnaXN0ZXJPYmplY3Q6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL3d3dy5h
cHBsZS5jb20vbWFjLyJdIHZpc2liaWxpdHk6VUlJdGVtUHJvdmlkZXJSZXByZXNlbnRhdGlvbk9w
dGlvbnNWaXNpYmlsaXR5QWxsXTsKLSAgICBhdXRvIHRoaXJkSXRlbSA9IGFkb3B0TlMoW1tVSUl0
ZW1Qcm92aWRlciBhbGxvY10gaW5pdF0pOwotICAgIFt0aGlyZEl0ZW0gcmVnaXN0ZXJPYmplY3Q6
W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL3dlYmtpdC5vcmcvIl0gdmlzaWJpbGl0eTpV
SUl0ZW1Qcm92aWRlclJlcHJlc2VudGF0aW9uT3B0aW9uc1Zpc2liaWxpdHlBbGxdOworICAgIGF1
dG8gZmlyc3RJdGVtID0gYWRvcHROUyhbW05TSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7Cisg
ICAgW2ZpcnN0SXRlbSByZWdpc3Rlck9iamVjdDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBz
Oi8vd3d3LmFwcGxlLmNvbS9pcGhvbmUvIl0gdmlzaWJpbGl0eTpOU0l0ZW1Qcm92aWRlclJlcHJl
c2VudGF0aW9uVmlzaWJpbGl0eUFsbF07CisgICAgYXV0byBzZWNvbmRJdGVtID0gYWRvcHROUyhb
W05TSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7CisgICAgW3NlY29uZEl0ZW0gcmVnaXN0ZXJP
YmplY3Q6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL3d3dy5hcHBsZS5jb20vbWFjLyJd
IHZpc2liaWxpdHk6TlNJdGVtUHJvdmlkZXJSZXByZXNlbnRhdGlvblZpc2liaWxpdHlBbGxdOwor
ICAgIGF1dG8gdGhpcmRJdGVtID0gYWRvcHROUyhbW05TSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0
XSk7CisgICAgW3RoaXJkSXRlbSByZWdpc3Rlck9iamVjdDpbTlNVUkwgVVJMV2l0aFN0cmluZzpA
Imh0dHBzOi8vd2Via2l0Lm9yZy8iXSB2aXNpYmlsaXR5Ok5TSXRlbVByb3ZpZGVyUmVwcmVzZW50
YXRpb25WaXNpYmlsaXR5QWxsXTsKICAgICBbc2ltdWxhdG9yIHNldEV4dGVybmFsSXRlbVByb3Zp
ZGVyczpAWyBmaXJzdEl0ZW0uZ2V0KCksIHNlY29uZEl0ZW0uZ2V0KCksIHRoaXJkSXRlbS5nZXQo
KSBdXTsKICAgICBbc2ltdWxhdG9yIHJ1bkZyb206Q0dQb2ludE1ha2UoMzAwLCA0MDApIHRvOkNH
UG9pbnRNYWtlKDEwMCwgMzAwKV07CiAKQEAgLTg5NSw5ICs4OTQsOSBAQCBURVNUKERyYWdBbmRE
cm9wVGVzdHMsIFJlc3BlY3RzRXh0ZXJuYWxTb3VyY2VGaWRlbGl0eVJhbmtpbmdzKQogICAgIC8v
IGZpZGVsaXR5IG9yZGVyIHJlcXVlc3RlZCBieSB0aGUgc291cmNlLCB3ZSdsbCBlbmQgdXAgYXNz
dW1pbmcgdGhhdCB0aGUgaW1hZ2UgaXMgYSBoaWdoZXIgZmlkZWxpdHkgcmVwcmVzZW50YXRpb24K
ICAgICAvLyB0aGFuIHRoZSBwbGFpbiB0ZXh0LCBhbmQgZXJyb25lb3VzbHkgaW5zZXJ0IHRoZSBp
bWFnZS4gSWYgd2UgcmVzcGVjdCBzb3VyY2UgZmlkZWxpdGllcywgd2UnbGwgaW5zZXJ0IHRleHQg
cmF0aGVyCiAgICAgLy8gdGhhbiBhbiBpbWFnZS4KLSAgICBhdXRvIHNpbXVsYXRlZEl0ZW1Qcm92
aWRlcldpdGhUZXh0Rmlyc3QgPSBhZG9wdE5TKFtbVUlJdGVtUHJvdmlkZXIgYWxsb2NdIGluaXRd
KTsKLSAgICBbc2ltdWxhdGVkSXRlbVByb3ZpZGVyV2l0aFRleHRGaXJzdCByZWdpc3Rlck9iamVj
dDpAIkhlbGxvIHdvcmxkIiB2aXNpYmlsaXR5OlVJSXRlbVByb3ZpZGVyUmVwcmVzZW50YXRpb25P
cHRpb25zVmlzaWJpbGl0eUFsbF07Ci0gICAgW3NpbXVsYXRlZEl0ZW1Qcm92aWRlcldpdGhUZXh0
Rmlyc3QgcmVnaXN0ZXJPYmplY3Q6dGVzdEljb25JbWFnZSgpIHZpc2liaWxpdHk6VUlJdGVtUHJv
dmlkZXJSZXByZXNlbnRhdGlvbk9wdGlvbnNWaXNpYmlsaXR5QWxsXTsKKyAgICBhdXRvIHNpbXVs
YXRlZEl0ZW1Qcm92aWRlcldpdGhUZXh0Rmlyc3QgPSBhZG9wdE5TKFtbTlNJdGVtUHJvdmlkZXIg
YWxsb2NdIGluaXRdKTsKKyAgICBbc2ltdWxhdGVkSXRlbVByb3ZpZGVyV2l0aFRleHRGaXJzdCBy
ZWdpc3Rlck9iamVjdDpAIkhlbGxvIHdvcmxkIiB2aXNpYmlsaXR5Ok5TSXRlbVByb3ZpZGVyUmVw
cmVzZW50YXRpb25WaXNpYmlsaXR5QWxsXTsKKyAgICBbc2ltdWxhdGVkSXRlbVByb3ZpZGVyV2l0
aFRleHRGaXJzdCByZWdpc3Rlck9iamVjdDp0ZXN0SWNvbkltYWdlKCkgdmlzaWJpbGl0eTpOU0l0
ZW1Qcm92aWRlclJlcHJlc2VudGF0aW9uVmlzaWJpbGl0eUFsbF07CiAgICAgW3NpbXVsYXRvciBz
ZXRFeHRlcm5hbEl0ZW1Qcm92aWRlcnM6QFsgc2ltdWxhdGVkSXRlbVByb3ZpZGVyV2l0aFRleHRG
aXJzdC5nZXQoKSBdXTsKIAogICAgIFtzaW11bGF0b3IgcnVuRnJvbTpDR1BvaW50TWFrZSgzMDAs
IDQwMCkgdG86Q0dQb2ludE1ha2UoMTAwLCAzMDApXTsKQEAgLTkwNiw5ICs5MDUsOSBAQCBURVNU
KERyYWdBbmREcm9wVGVzdHMsIFJlc3BlY3RzRXh0ZXJuYWxTb3VyY2VGaWRlbGl0eVJhbmtpbmdz
KQogICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJlZGl0b3IuaW5u
ZXJIVE1MID0gJyciXTsKIAogICAgIC8vIE5vdyB3ZSByZWdpc3RlciB0aGUgaXRlbSBwcm92aWRl
cnMgaW4gcmV2ZXJzZSwgYW5kIGV4cGVjdCB0aGUgaW1hZ2UgdG8gYmUgaW5zZXJ0ZWQgaW5zdGVh
ZCBvZiB0ZXh0LgotICAgIGF1dG8gc2ltdWxhdGVkSXRlbVByb3ZpZGVyV2l0aEltYWdlRmlyc3Qg
PSBhZG9wdE5TKFtbVUlJdGVtUHJvdmlkZXIgYWxsb2NdIGluaXRdKTsKLSAgICBbc2ltdWxhdGVk
SXRlbVByb3ZpZGVyV2l0aEltYWdlRmlyc3QgcmVnaXN0ZXJPYmplY3Q6dGVzdEljb25JbWFnZSgp
IHZpc2liaWxpdHk6VUlJdGVtUHJvdmlkZXJSZXByZXNlbnRhdGlvbk9wdGlvbnNWaXNpYmlsaXR5
QWxsXTsKLSAgICBbc2ltdWxhdGVkSXRlbVByb3ZpZGVyV2l0aEltYWdlRmlyc3QgcmVnaXN0ZXJP
YmplY3Q6QCJIZWxsbyB3b3JsZCIgdmlzaWJpbGl0eTpVSUl0ZW1Qcm92aWRlclJlcHJlc2VudGF0
aW9uT3B0aW9uc1Zpc2liaWxpdHlBbGxdOworICAgIGF1dG8gc2ltdWxhdGVkSXRlbVByb3ZpZGVy
V2l0aEltYWdlRmlyc3QgPSBhZG9wdE5TKFtbTlNJdGVtUHJvdmlkZXIgYWxsb2NdIGluaXRdKTsK
KyAgICBbc2ltdWxhdGVkSXRlbVByb3ZpZGVyV2l0aEltYWdlRmlyc3QgcmVnaXN0ZXJPYmplY3Q6
dGVzdEljb25JbWFnZSgpIHZpc2liaWxpdHk6TlNJdGVtUHJvdmlkZXJSZXByZXNlbnRhdGlvblZp
c2liaWxpdHlBbGxdOworICAgIFtzaW11bGF0ZWRJdGVtUHJvdmlkZXJXaXRoSW1hZ2VGaXJzdCBy
ZWdpc3Rlck9iamVjdDpAIkhlbGxvIHdvcmxkIiB2aXNpYmlsaXR5Ok5TSXRlbVByb3ZpZGVyUmVw
cmVzZW50YXRpb25WaXNpYmlsaXR5QWxsXTsKICAgICBbc2ltdWxhdG9yIHNldEV4dGVybmFsSXRl
bVByb3ZpZGVyczpAWyBzaW11bGF0ZWRJdGVtUHJvdmlkZXJXaXRoSW1hZ2VGaXJzdC5nZXQoKSBd
XTsKIAogICAgIFtzaW11bGF0b3IgcnVuRnJvbTpDR1BvaW50TWFrZSgzMDAsIDQwMCkgdG86Q0dQ
b2ludE1ha2UoMTAwLCAzMDApXTsKQEAgLTkzMCw4ICs5MjksOCBAQCBURVNUKERyYWdBbmREcm9w
VGVzdHMsIEV4dGVybmFsU291cmNlVVRGOFBsYWluVGV4dE9ubHkpCiAKICAgICBOU1N0cmluZyAq
dGV4dFBheWxvYWQgPSBAIkNlY2kgbidlc3QgcGFzIHVuZSBzdHJpbmciOwogICAgIGF1dG8gc2lt
dWxhdG9yID0gYWRvcHROUyhbW0RyYWdBbmREcm9wU2ltdWxhdG9yIGFsbG9jXSBpbml0V2l0aFdl
YlZpZXc6d2ViVmlldy5nZXQoKV0pOwotICAgIGF1dG8gc2ltdWxhdGVkSXRlbVByb3ZpZGVyID0g
YWRvcHROUyhbW1VJSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7Ci0gICAgW3NpbXVsYXRlZEl0
ZW1Qcm92aWRlciByZWdpc3RlckRhdGFSZXByZXNlbnRhdGlvbkZvclR5cGVJZGVudGlmaWVyOihf
X2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVVVEY4UGxhaW5UZXh0IG9wdGlvbnM6bmlsIGxvYWRI
YW5kbGVyOl5OU1Byb2dyZXNzICooVUlJdGVtUHJvdmlkZXJEYXRhTG9hZENvbXBsZXRpb25CbG9j
ayBjb21wbGV0aW9uQmxvY2spCisgICAgYXV0byBzaW11bGF0ZWRJdGVtUHJvdmlkZXIgPSBhZG9w
dE5TKFtbTlNJdGVtUHJvdmlkZXIgYWxsb2NdIGluaXRdKTsKKyAgICBbc2ltdWxhdGVkSXRlbVBy
b3ZpZGVyIHJlZ2lzdGVyRGF0YVJlcHJlc2VudGF0aW9uRm9yVHlwZUlkZW50aWZpZXI6KF9fYnJp
ZGdlIE5TU3RyaW5nICopa1VUVHlwZVVURjhQbGFpblRleHQgdmlzaWJpbGl0eTpOU0l0ZW1Qcm92
aWRlclJlcHJlc2VudGF0aW9uVmlzaWJpbGl0eUFsbCBsb2FkSGFuZGxlcjpeTlNQcm9ncmVzcyAq
KE5TSXRlbVByb3ZpZGVyRGF0YUxvYWRDb21wbGV0aW9uQmxvY2sgY29tcGxldGlvbkJsb2NrKQog
ICAgIHsKICAgICAgICAgY29tcGxldGlvbkJsb2NrKFt0ZXh0UGF5bG9hZCBkYXRhVXNpbmdFbmNv
ZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10sIG5pbCk7CiAgICAgICAgIHJldHVybiBbTlNQcm9n
cmVzcyBkaXNjcmV0ZVByb2dyZXNzV2l0aFRvdGFsVW5pdENvdW50OjEwMF07CkBAIC05NTAsOCAr
OTQ5LDggQEAgVEVTVChEcmFnQW5kRHJvcFRlc3RzLCBFeHRlcm5hbFNvdXJjZUpQRUdPbmx5KQog
ICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAImF1dG9mb2N1cy1j
b250ZW50ZWRpdGFibGUiXTsKIAogICAgIGF1dG8gc2ltdWxhdG9yID0gYWRvcHROUyhbW0RyYWdB
bmREcm9wU2ltdWxhdG9yIGFsbG9jXSBpbml0V2l0aFdlYlZpZXc6d2ViVmlldy5nZXQoKV0pOwot
ICAgIGF1dG8gc2ltdWxhdGVkSXRlbVByb3ZpZGVyID0gYWRvcHROUyhbW1VJSXRlbVByb3ZpZGVy
IGFsbG9jXSBpbml0XSk7Ci0gICAgW3NpbXVsYXRlZEl0ZW1Qcm92aWRlciByZWdpc3RlckRhdGFS
ZXByZXNlbnRhdGlvbkZvclR5cGVJZGVudGlmaWVyOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5
cGVKUEVHIG9wdGlvbnM6bmlsIGxvYWRIYW5kbGVyOl5OU1Byb2dyZXNzICooVUlJdGVtUHJvdmlk
ZXJEYXRhTG9hZENvbXBsZXRpb25CbG9jayBjb21wbGV0aW9uQmxvY2spCisgICAgYXV0byBzaW11
bGF0ZWRJdGVtUHJvdmlkZXIgPSBhZG9wdE5TKFtbTlNJdGVtUHJvdmlkZXIgYWxsb2NdIGluaXRd
KTsKKyAgICBbc2ltdWxhdGVkSXRlbVByb3ZpZGVyIHJlZ2lzdGVyRGF0YVJlcHJlc2VudGF0aW9u
Rm9yVHlwZUlkZW50aWZpZXI6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZUpQRUcgdmlzaWJp
bGl0eTpOU0l0ZW1Qcm92aWRlclJlcHJlc2VudGF0aW9uVmlzaWJpbGl0eUFsbCBsb2FkSGFuZGxl
cjpeTlNQcm9ncmVzcyAqKE5TSXRlbVByb3ZpZGVyRGF0YUxvYWRDb21wbGV0aW9uQmxvY2sgY29t
cGxldGlvbkJsb2NrKQogICAgIHsKICAgICAgICAgY29tcGxldGlvbkJsb2NrKFVJSW1hZ2VKUEVH
UmVwcmVzZW50YXRpb24odGVzdEljb25JbWFnZSgpLCAwLjUpLCBuaWwpOwogICAgICAgICByZXR1
cm4gW05TUHJvZ3Jlc3MgZGlzY3JldGVQcm9ncmVzc1dpdGhUb3RhbFVuaXRDb3VudDoxMDBdOwpA
QCAtOTcwLDggKzk2OSw4IEBAIFRFU1QoRHJhZ0FuZERyb3BUZXN0cywgRXh0ZXJuYWxTb3VyY2VU
aXRsZWROU1VSTCkKIAogICAgIE5TVVJMICp0aXRsZWRVUkwgPSBbTlNVUkwgVVJMV2l0aFN0cmlu
ZzpAImh0dHBzOi8vd3d3LmFwcGxlLmNvbSJdOwogICAgIHRpdGxlZFVSTC5fdGl0bGUgPSBAIkFw
cGxlIjsKLSAgICBhdXRvIHNpbXVsYXRlZEl0ZW1Qcm92aWRlciA9IGFkb3B0TlMoW1tVSUl0ZW1Q
cm92aWRlciBhbGxvY10gaW5pdF0pOwotICAgIFtzaW11bGF0ZWRJdGVtUHJvdmlkZXIgcmVnaXN0
ZXJPYmplY3Q6dGl0bGVkVVJMIHZpc2liaWxpdHk6VUlJdGVtUHJvdmlkZXJSZXByZXNlbnRhdGlv
bk9wdGlvbnNWaXNpYmlsaXR5QWxsXTsKKyAgICBhdXRvIHNpbXVsYXRlZEl0ZW1Qcm92aWRlciA9
IGFkb3B0TlMoW1tOU0l0ZW1Qcm92aWRlciBhbGxvY10gaW5pdF0pOworICAgIFtzaW11bGF0ZWRJ
dGVtUHJvdmlkZXIgcmVnaXN0ZXJPYmplY3Q6dGl0bGVkVVJMIHZpc2liaWxpdHk6TlNJdGVtUHJv
dmlkZXJSZXByZXNlbnRhdGlvblZpc2liaWxpdHlBbGxdOwogCiAgICAgYXV0byBzaW11bGF0b3Ig
PSBhZG9wdE5TKFtbRHJhZ0FuZERyb3BTaW11bGF0b3IgYWxsb2NdIGluaXRXaXRoV2ViVmlldzp3
ZWJWaWV3LmdldCgpXSk7CiAgICAgW3NpbXVsYXRvciBzZXRFeHRlcm5hbEl0ZW1Qcm92aWRlcnM6
QFsgc2ltdWxhdGVkSXRlbVByb3ZpZGVyLmdldCgpIF1dOwpAQCAtOTg4LDcgKzk4Nyw3IEBAIFRF
U1QoRHJhZ0FuZERyb3BUZXN0cywgRXh0ZXJuYWxTb3VyY2VGaWxlVVJMKQogICAgIFt3ZWJWaWV3
IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJnZXRTZWxlY3Rpb24oKS5yZW1vdmVBbGxS
YW5nZXMoKSJdOwogCiAgICAgTlNVUkwgKlVSTCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAiZmls
ZTovLy9zb21lL2ZpbGUvdGhhdC9pcy9ub3QvcmVhbCJdOwotICAgIFVJSXRlbVByb3ZpZGVyICpz
aW11bGF0ZWRJdGVtUHJvdmlkZXIgPSBbVUlJdGVtUHJvdmlkZXIgaXRlbVByb3ZpZGVyV2l0aFVS
TDpVUkwgdGl0bGU6QCIiXTsKKyAgICBOU0l0ZW1Qcm92aWRlciAqc2ltdWxhdGVkSXRlbVByb3Zp
ZGVyID0gW05TSXRlbVByb3ZpZGVyIGl0ZW1Qcm92aWRlcldpdGhVUkw6VVJMIHRpdGxlOkAiIl07
CiAKICAgICBhdXRvIHNpbXVsYXRvciA9IGFkb3B0TlMoW1tEcmFnQW5kRHJvcFNpbXVsYXRvciBh
bGxvY10gaW5pdFdpdGhXZWJWaWV3OndlYlZpZXcuZ2V0KCldKTsKICAgICBbc2ltdWxhdG9yIHNl
dEV4dGVybmFsSXRlbVByb3ZpZGVyczpAWyBzaW11bGF0ZWRJdGVtUHJvdmlkZXIgXV07CkBAIC0x
MDAzLDExICsxMDAyLDExIEBAIFRFU1QoRHJhZ0FuZERyb3BUZXN0cywgRXh0ZXJuYWxTb3VyY2VP
dmVycmlkZURyb3BGaWxlVXBsb2FkKQogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDAp
XSk7CiAgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAiZmlsZS11
cGxvYWRpbmciXTsKIAotICAgIGF1dG8gc2ltdWxhdGVkSW1hZ2VJdGVtUHJvdmlkZXIgPSBhZG9w
dE5TKFtbVUlJdGVtUHJvdmlkZXIgYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIHNpbXVsYXRlZElt
YWdlSXRlbVByb3ZpZGVyID0gYWRvcHROUyhbW05TSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7
CiAgICAgTlNEYXRhICppbWFnZURhdGEgPSBVSUltYWdlSlBFR1JlcHJlc2VudGF0aW9uKHRlc3RJ
Y29uSW1hZ2UoKSwgMC41KTsKICAgICBbc2ltdWxhdGVkSW1hZ2VJdGVtUHJvdmlkZXIgcmVnaXN0
ZXJEYXRhUmVwcmVzZW50YXRpb25Gb3JUeXBlSWRlbnRpZmllcjooX19icmlkZ2UgTlNTdHJpbmcg
KilrVVRUeXBlSlBFRyB3aXRoRGF0YTppbWFnZURhdGFdOwogCi0gICAgYXV0byBzaW11bGF0ZWRI
VE1MSXRlbVByb3ZpZGVyID0gYWRvcHROUyhbW1VJSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7
CisgICAgYXV0byBzaW11bGF0ZWRIVE1MSXRlbVByb3ZpZGVyID0gYWRvcHROUyhbW05TSXRlbVBy
b3ZpZGVyIGFsbG9jXSBpbml0XSk7CiAgICAgTlNEYXRhICpmaXJzdEhUTUxEYXRhID0gW0AiPGJv
ZHkgY29udGVudGVkaXRhYmxlPjwvYm9keT4iIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmlu
Z0VuY29kaW5nXTsKICAgICBbc2ltdWxhdGVkSFRNTEl0ZW1Qcm92aWRlciByZWdpc3RlckRhdGFS
ZXByZXNlbnRhdGlvbkZvclR5cGVJZGVudGlmaWVyOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5
cGVIVE1MIHdpdGhEYXRhOmZpcnN0SFRNTERhdGFdOwogICAgIFtzaW11bGF0ZWRIVE1MSXRlbVBy
b3ZpZGVyIHNldFByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlOlVJUHJlZmVycmVkUHJlc2VudGF0
aW9uU3R5bGVBdHRhY2htZW50XTsKQEAgLTExMzEsMTAgKzExMzAsMTAgQEAgVEVTVChEcmFnQW5k
RHJvcFRlc3RzLCBFeHRlcm5hbFNvdXJjZU92ZXJyaWRlRHJvcEluc2VydFVSTCkKICAgICAgICAg
cmV0dXJuIGFsbG93ZWRJdGVtczsKICAgICB9XTsKIAotICAgIGF1dG8gZmlyc3RJdGVtUHJvdmlk
ZXIgPSBhZG9wdE5TKFtbVUlJdGVtUHJvdmlkZXIgYWxsb2NdIGluaXRdKTsKLSAgICBbZmlyc3RJ
dGVtUHJvdmlkZXIgcmVnaXN0ZXJPYmplY3Q6QCJUaGlzIGlzIGEgc3RyaW5nLiIgdmlzaWJpbGl0
eTpVSUl0ZW1Qcm92aWRlclJlcHJlc2VudGF0aW9uT3B0aW9uc1Zpc2liaWxpdHlBbGxdOwotICAg
IGF1dG8gc2Vjb25kSXRlbVByb3ZpZGVyID0gYWRvcHROUyhbW1VJSXRlbVByb3ZpZGVyIGFsbG9j
XSBpbml0XSk7Ci0gICAgW3NlY29uZEl0ZW1Qcm92aWRlciByZWdpc3Rlck9iamVjdDpbTlNVUkwg
VVJMV2l0aFN0cmluZzpAImh0dHBzOi8vd2Via2l0Lm9yZy8iXSB2aXNpYmlsaXR5OlVJSXRlbVBy
b3ZpZGVyUmVwcmVzZW50YXRpb25PcHRpb25zVmlzaWJpbGl0eUFsbF07CisgICAgYXV0byBmaXJz
dEl0ZW1Qcm92aWRlciA9IGFkb3B0TlMoW1tOU0l0ZW1Qcm92aWRlciBhbGxvY10gaW5pdF0pOwor
ICAgIFtmaXJzdEl0ZW1Qcm92aWRlciByZWdpc3Rlck9iamVjdDpAIlRoaXMgaXMgYSBzdHJpbmcu
IiB2aXNpYmlsaXR5Ok5TSXRlbVByb3ZpZGVyUmVwcmVzZW50YXRpb25WaXNpYmlsaXR5QWxsXTsK
KyAgICBhdXRvIHNlY29uZEl0ZW1Qcm92aWRlciA9IGFkb3B0TlMoW1tOU0l0ZW1Qcm92aWRlciBh
bGxvY10gaW5pdF0pOworICAgIFtzZWNvbmRJdGVtUHJvdmlkZXIgcmVnaXN0ZXJPYmplY3Q6W05T
VVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL3dlYmtpdC5vcmcvIl0gdmlzaWJpbGl0eTpOU0l0
ZW1Qcm92aWRlclJlcHJlc2VudGF0aW9uVmlzaWJpbGl0eUFsbF07CiAgICAgW3NpbXVsYXRvciBz
ZXRFeHRlcm5hbEl0ZW1Qcm92aWRlcnM6QFsgZmlyc3RJdGVtUHJvdmlkZXIuZ2V0KCksIHNlY29u
ZEl0ZW1Qcm92aWRlci5nZXQoKSBdXTsKICAgICBbc2ltdWxhdG9yIHJ1bkZyb206Q0dQb2ludE1h
a2UoMzAwLCA0MDApIHRvOkNHUG9pbnRNYWtlKDEwMCwgMzAwKV07CiAKQEAgLTExNDYsNyArMTE0
NSw3IEBAIFRFU1QoRHJhZ0FuZERyb3BUZXN0cywgT3ZlcnJpZGVEcm9wKQogICAgIGF1dG8gd2Vi
VmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVj
dE1ha2UoMCwgMCwgMzIwLCA1MDApXSk7CiAgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRU
ZXN0UGFnZU5hbWVkOkAic2ltcGxlIl07CiAKLSAgICBhdXRvIHNpbXVsYXRlZEl0ZW1Qcm92aWRl
ciA9IGFkb3B0TlMoW1tVSUl0ZW1Qcm92aWRlciBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gc2lt
dWxhdGVkSXRlbVByb3ZpZGVyID0gYWRvcHROUyhbW05TSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0
XSk7CiAgICAgW3NpbXVsYXRlZEl0ZW1Qcm92aWRlciByZWdpc3RlckRhdGFSZXByZXNlbnRhdGlv
bkZvclR5cGVJZGVudGlmaWVyOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVIVE1MIHdpdGhE
YXRhOltAIjxib2R5PjwvYm9keT4iIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29k
aW5nXV07CiAKICAgICBfX2Jsb2NrIGJvb2wgZmluaXNoZWRMb2FkaW5nRGF0YSA9IGZhbHNlOwpA
QCAtMTE3OSw4ICsxMTc4LDggQEAgVEVTVChEcmFnQW5kRHJvcFRlc3RzLCBJbmplY3RlZEJ1bmRs
ZU92ZXJyaWRlUGVyZm9ybVR3b1N0ZXBEcm9wKQogICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5h
bWVkOkAiYXV0b2ZvY3VzLWNvbnRlbnRlZGl0YWJsZSJdOwogICAgIFt3ZWJWaWV3IHN0cmluZ0J5
RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJnZXRTZWxlY3Rpb24oKS5yZW1vdmVBbGxSYW5nZXMoKSJd
OwogCi0gICAgYXV0byBzaW11bGF0ZWRJdGVtUHJvdmlkZXIgPSBhZG9wdE5TKFtbVUlJdGVtUHJv
dmlkZXIgYWxsb2NdIGluaXRdKTsKLSAgICBbc2ltdWxhdGVkSXRlbVByb3ZpZGVyIHJlZ2lzdGVy
RGF0YVJlcHJlc2VudGF0aW9uRm9yVHlwZUlkZW50aWZpZXI6KF9fYnJpZGdlIE5TU3RyaW5nICop
a1VUVHlwZVVURjhQbGFpblRleHQgb3B0aW9uczpuaWwgbG9hZEhhbmRsZXI6Xk5TUHJvZ3Jlc3Mg
KihVSUl0ZW1Qcm92aWRlckRhdGFMb2FkQ29tcGxldGlvbkJsb2NrIGNvbXBsZXRpb25CbG9jaykK
KyAgICBhdXRvIHNpbXVsYXRlZEl0ZW1Qcm92aWRlciA9IGFkb3B0TlMoW1tOU0l0ZW1Qcm92aWRl
ciBhbGxvY10gaW5pdF0pOworICAgIFtzaW11bGF0ZWRJdGVtUHJvdmlkZXIgcmVnaXN0ZXJEYXRh
UmVwcmVzZW50YXRpb25Gb3JUeXBlSWRlbnRpZmllcjooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRU
eXBlVVRGOFBsYWluVGV4dCB2aXNpYmlsaXR5Ok5TSXRlbVByb3ZpZGVyUmVwcmVzZW50YXRpb25W
aXNpYmlsaXR5QWxsIGxvYWRIYW5kbGVyOl5OU1Byb2dyZXNzICooTlNJdGVtUHJvdmlkZXJEYXRh
TG9hZENvbXBsZXRpb25CbG9jayBjb21wbGV0aW9uQmxvY2spCiAgICAgewogICAgICAgICBjb21w
bGV0aW9uQmxvY2soW0AiSGVsbG8gd29ybGQiIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmlu
Z0VuY29kaW5nXSwgbmlsKTsKICAgICAgICAgcmV0dXJuIFtOU1Byb2dyZXNzIGRpc2NyZXRlUHJv
Z3Jlc3NXaXRoVG90YWxVbml0Q291bnQ6MTAwXTsKQEAgLTEyMDIsOCArMTIwMSw4IEBAIFRFU1Qo
RHJhZ0FuZERyb3BUZXN0cywgSW5qZWN0ZWRCdW5kbGVBbGxvd1BlcmZvcm1Ud29TdGVwRHJvcCkK
ICAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJhdXRvZm9jdXMt
Y29udGVudGVkaXRhYmxlIl07CiAgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNj
cmlwdDpAImdldFNlbGVjdGlvbigpLnJlbW92ZUFsbFJhbmdlcygpIl07CiAKLSAgICBhdXRvIHNp
bXVsYXRlZEl0ZW1Qcm92aWRlciA9IGFkb3B0TlMoW1tVSUl0ZW1Qcm92aWRlciBhbGxvY10gaW5p
dF0pOwotICAgIFtzaW11bGF0ZWRJdGVtUHJvdmlkZXIgcmVnaXN0ZXJEYXRhUmVwcmVzZW50YXRp
b25Gb3JUeXBlSWRlbnRpZmllcjooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlVVRGOFBsYWlu
VGV4dCBvcHRpb25zOm5pbCBsb2FkSGFuZGxlcjpeTlNQcm9ncmVzcyAqKFVJSXRlbVByb3ZpZGVy
RGF0YUxvYWRDb21wbGV0aW9uQmxvY2sgY29tcGxldGlvbkJsb2NrKQorICAgIGF1dG8gc2ltdWxh
dGVkSXRlbVByb3ZpZGVyID0gYWRvcHROUyhbW05TSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7
CisgICAgW3NpbXVsYXRlZEl0ZW1Qcm92aWRlciByZWdpc3RlckRhdGFSZXByZXNlbnRhdGlvbkZv
clR5cGVJZGVudGlmaWVyOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVVVEY4UGxhaW5UZXh0
IHZpc2liaWxpdHk6TlNJdGVtUHJvdmlkZXJSZXByZXNlbnRhdGlvblZpc2liaWxpdHlBbGwgbG9h
ZEhhbmRsZXI6Xk5TUHJvZ3Jlc3MgKihOU0l0ZW1Qcm92aWRlckRhdGFMb2FkQ29tcGxldGlvbkJs
b2NrIGNvbXBsZXRpb25CbG9jaykKICAgICB7CiAgICAgICAgIGNvbXBsZXRpb25CbG9jayhbQCJI
ZWxsbyB3b3JsZCIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddLCBuaWwp
OwogICAgICAgICByZXR1cm4gW05TUHJvZ3Jlc3MgZGlzY3JldGVQcm9ncmVzc1dpdGhUb3RhbFVu
aXRDb3VudDoxMDBdOwpAQCAtMTIyNSw3ICsxMjI0LDcgQEAgVEVTVChEcmFnQW5kRHJvcFRlc3Rz
LCBJbmplY3RlZEJ1bmRsZUltYWdlRWxlbWVudERhdGEpCiAKICAgICBfX2Jsb2NrIFJldGFpblB0
cjxOU1N0cmluZz4gaW5qZWN0ZWRTdHJpbmc7CiAgICAgYXV0byBzaW11bGF0b3IgPSBhZG9wdE5T
KFtbRHJhZ0FuZERyb3BTaW11bGF0b3IgYWxsb2NdIGluaXRXaXRoV2ViVmlldzp3ZWJWaWV3Lmdl
dCgpXSk7Ci0gICAgW3NpbXVsYXRvciBzZXRDb252ZXJ0SXRlbVByb3ZpZGVyc0Jsb2NrOl5OU0Fy
cmF5ICooVUlJdGVtUHJvdmlkZXIgKml0ZW1Qcm92aWRlciwgTlNBcnJheSAqLCBOU0RpY3Rpb25h
cnkgKmRhdGEpCisgICAgW3NpbXVsYXRvciBzZXRDb252ZXJ0SXRlbVByb3ZpZGVyc0Jsb2NrOl5O
U0FycmF5ICooTlNJdGVtUHJvdmlkZXIgKml0ZW1Qcm92aWRlciwgTlNBcnJheSAqLCBOU0RpY3Rp
b25hcnkgKmRhdGEpCiAgICAgewogICAgICAgICBpbmplY3RlZFN0cmluZyA9IGFkb3B0TlMoW1tO
U1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOmRhdGFbSW5qZWN0ZWRCdW5kbGVQYXN0ZWJvYXJk
RGF0YVR5cGVdIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSk7CiAgICAgICAgIHJldHVy
biBAWyBpdGVtUHJvdmlkZXIgXTsKQEAgLTEyNDUsNyArMTI0NCw3IEBAIFRFU1QoRHJhZ0FuZERy
b3BUZXN0cywgSW5qZWN0ZWRCdW5kbGVBdHRhY2htZW50RWxlbWVudERhdGEpCiAKICAgICBfX2Js
b2NrIFJldGFpblB0cjxOU1N0cmluZz4gaW5qZWN0ZWRTdHJpbmc7CiAgICAgYXV0byBzaW11bGF0
b3IgPSBhZG9wdE5TKFtbRHJhZ0FuZERyb3BTaW11bGF0b3IgYWxsb2NdIGluaXRXaXRoV2ViVmll
dzp3ZWJWaWV3LmdldCgpXSk7Ci0gICAgW3NpbXVsYXRvciBzZXRDb252ZXJ0SXRlbVByb3ZpZGVy
c0Jsb2NrOl5OU0FycmF5ICooVUlJdGVtUHJvdmlkZXIgKml0ZW1Qcm92aWRlciwgTlNBcnJheSAq
LCBOU0RpY3Rpb25hcnkgKmRhdGEpCisgICAgW3NpbXVsYXRvciBzZXRDb252ZXJ0SXRlbVByb3Zp
ZGVyc0Jsb2NrOl5OU0FycmF5ICooTlNJdGVtUHJvdmlkZXIgKml0ZW1Qcm92aWRlciwgTlNBcnJh
eSAqLCBOU0RpY3Rpb25hcnkgKmRhdGEpCiAgICAgewogICAgICAgICBpbmplY3RlZFN0cmluZyA9
IGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOmRhdGFbSW5qZWN0ZWRCdW5k
bGVQYXN0ZWJvYXJkRGF0YVR5cGVdIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSk7CiAg
ICAgICAgIHJldHVybiBAWyBpdGVtUHJvdmlkZXIgXTsKQEAgLTEyOTEsNyArMTI5MCw3IEBAIFRF
U1QoRHJhZ0FuZERyb3BUZXN0cywgQ2FuY2VsbGVkTGlmdERvZXNOb3RDYXVzZVN1YnNlcXVlbnRE
cmFnc1RvRmFpbCkKICAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6
QCJsaW5rLWFuZC10YXJnZXQtZGl2Il07CiAKICAgICBhdXRvIHNpbXVsYXRvciA9IGFkb3B0TlMo
W1tEcmFnQW5kRHJvcFNpbXVsYXRvciBhbGxvY10gaW5pdFdpdGhXZWJWaWV3OndlYlZpZXcuZ2V0
KCldKTsKLSAgICBbc2ltdWxhdG9yIHNldENvbnZlcnRJdGVtUHJvdmlkZXJzQmxvY2s6Xk5TQXJy
YXkgKihVSUl0ZW1Qcm92aWRlciAqLCBOU0FycmF5ICosIE5TRGljdGlvbmFyeSAqKQorICAgIFtz
aW11bGF0b3Igc2V0Q29udmVydEl0ZW1Qcm92aWRlcnNCbG9jazpeTlNBcnJheSAqKE5TSXRlbVBy
b3ZpZGVyICosIE5TQXJyYXkgKiwgTlNEaWN0aW9uYXJ5ICopCiAgICAgewogICAgICAgICByZXR1
cm4gQFsgXTsKICAgICB9XTsKQEAgLTEzMDIsNyArMTMwMSw3IEBAIFRFU1QoRHJhZ0FuZERyb3BU
ZXN0cywgQ2FuY2VsbGVkTGlmdERvZXNOb3RDYXVzZVN1YnNlcXVlbnREcmFnc1RvRmFpbCkKICAg
ICBjaGVja1N0cmluZ0FycmF5c0FyZUVxdWFsKEBbQCJkcmFnc3RhcnQiLCBAImRyYWdlbmQiXSwg
W291dHB1dFRleHQgY29tcG9uZW50c1NlcGFyYXRlZEJ5U3RyaW5nOkAiICJdKTsKIAogICAgIFt3
ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJvdXRwdXQuaW5uZXJIVE1MID0g
JyciXTsKLSAgICBbc2ltdWxhdG9yIHNldENvbnZlcnRJdGVtUHJvdmlkZXJzQmxvY2s6Xk5TQXJy
YXkgKihVSUl0ZW1Qcm92aWRlciAqaXRlbVByb3ZpZGVyLCBOU0FycmF5ICosIE5TRGljdGlvbmFy
eSAqKQorICAgIFtzaW11bGF0b3Igc2V0Q29udmVydEl0ZW1Qcm92aWRlcnNCbG9jazpeTlNBcnJh
eSAqKE5TSXRlbVByb3ZpZGVyICppdGVtUHJvdmlkZXIsIE5TQXJyYXkgKiwgTlNEaWN0aW9uYXJ5
ICopCiAgICAgewogICAgICAgICByZXR1cm4gQFsgaXRlbVByb3ZpZGVyIF07CiAgICAgfV07CkBA
IC0xNDIzLDE1ICsxNDIyLDE1IEBAIFRFU1QoRHJhZ0FuZERyb3BUZXN0cywgV2ViSXRlbVByb3Zp
ZGVyUGFzdGVib2FyZExvYWRpbmcpCiAgICAgc3RhdGljIE5TU3RyaW5nICpzbG93U3RyaW5nID0g
QCJUaGlzIGRhdGEgbG9hZHMgc2xvd2x5IjsKIAogICAgIFdlYkl0ZW1Qcm92aWRlclBhc3RlYm9h
cmQgKnBhc3RlYm9hcmQgPSBbV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZCBzaGFyZWRJbnN0YW5j
ZV07Ci0gICAgYXV0byBmYXN0SXRlbSA9IGFkb3B0TlMoW1tVSUl0ZW1Qcm92aWRlciBhbGxvY10g
aW5pdF0pOwotICAgIFtmYXN0SXRlbSByZWdpc3RlckRhdGFSZXByZXNlbnRhdGlvbkZvclR5cGVJ
ZGVudGlmaWVyOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVVVEY4UGxhaW5UZXh0IG9wdGlv
bnM6bmlsIGxvYWRIYW5kbGVyOl5OU1Byb2dyZXNzICooVUlJdGVtUHJvdmlkZXJEYXRhTG9hZENv
bXBsZXRpb25CbG9jayBjb21wbGV0aW9uQmxvY2spCisgICAgYXV0byBmYXN0SXRlbSA9IGFkb3B0
TlMoW1tOU0l0ZW1Qcm92aWRlciBhbGxvY10gaW5pdF0pOworICAgIFtmYXN0SXRlbSByZWdpc3Rl
ckRhdGFSZXByZXNlbnRhdGlvbkZvclR5cGVJZGVudGlmaWVyOihfX2JyaWRnZSBOU1N0cmluZyAq
KWtVVFR5cGVVVEY4UGxhaW5UZXh0IHZpc2liaWxpdHk6TlNJdGVtUHJvdmlkZXJSZXByZXNlbnRh
dGlvblZpc2liaWxpdHlBbGwgbG9hZEhhbmRsZXI6Xk5TUHJvZ3Jlc3MgKihOU0l0ZW1Qcm92aWRl
ckRhdGFMb2FkQ29tcGxldGlvbkJsb2NrIGNvbXBsZXRpb25CbG9jaykKICAgICB7CiAgICAgICAg
IGNvbXBsZXRpb25CbG9jayhbZmFzdFN0cmluZyBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJp
bmdFbmNvZGluZ10sIG5pbCk7CiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgfV07CiAKLSAgICBh
dXRvIHNsb3dJdGVtID0gYWRvcHROUyhbW1VJSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7Ci0g
ICAgW3Nsb3dJdGVtIHJlZ2lzdGVyRGF0YVJlcHJlc2VudGF0aW9uRm9yVHlwZUlkZW50aWZpZXI6
KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZVVURjhQbGFpblRleHQgb3B0aW9uczpuaWwgbG9h
ZEhhbmRsZXI6Xk5TUHJvZ3Jlc3MgKihVSUl0ZW1Qcm92aWRlckRhdGFMb2FkQ29tcGxldGlvbkJs
b2NrIGNvbXBsZXRpb25CbG9jaykKKyAgICBhdXRvIHNsb3dJdGVtID0gYWRvcHROUyhbW05TSXRl
bVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7CisgICAgW3Nsb3dJdGVtIHJlZ2lzdGVyRGF0YVJlcHJl
c2VudGF0aW9uRm9yVHlwZUlkZW50aWZpZXI6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZVVU
RjhQbGFpblRleHQgdmlzaWJpbGl0eTpOU0l0ZW1Qcm92aWRlclJlcHJlc2VudGF0aW9uVmlzaWJp
bGl0eUFsbCBsb2FkSGFuZGxlcjpeTlNQcm9ncmVzcyAqKE5TSXRlbVByb3ZpZGVyRGF0YUxvYWRD
b21wbGV0aW9uQmxvY2sgY29tcGxldGlvbkJsb2NrKQogICAgIHsKICAgICAgICAgc2xlZXAoMl9z
KTsKICAgICAgICAgY29tcGxldGlvbkJsb2NrKFtzbG93U3RyaW5nIGRhdGFVc2luZ0VuY29kaW5n
Ok5TVVRGOFN0cmluZ0VuY29kaW5nXSwgbmlsKTsKQEAgLTE1NDUsNyArMTU0NCw3IEBAIFRFU1Qo
RHJhZ0FuZERyb3BUZXN0cywgRGF0YVRyYW5zZmVyR2V0RGF0YVdoZW5Ecm9wcGluZ0ltYWdlQW5k
TWFya3VwKQogICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAIkRh
dGFUcmFuc2ZlciJdOwogCiAgICAgYXV0byBzaW11bGF0b3IgPSBhZG9wdE5TKFtbRHJhZ0FuZERy
b3BTaW11bGF0b3IgYWxsb2NdIGluaXRXaXRoV2ViVmlldzp3ZWJWaWV3LmdldCgpXSk7Ci0gICAg
YXV0byBpdGVtUHJvdmlkZXIgPSBhZG9wdE5TKFtbVUlJdGVtUHJvdmlkZXIgYWxsb2NdIGluaXRd
KTsKKyAgICBhdXRvIGl0ZW1Qcm92aWRlciA9IGFkb3B0TlMoW1tOU0l0ZW1Qcm92aWRlciBhbGxv
Y10gaW5pdF0pOwogICAgIFtpdGVtUHJvdmlkZXIgcmVnaXN0ZXJEYXRhUmVwcmVzZW50YXRpb25G
b3JUeXBlSWRlbnRpZmllcjooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlUE5HIHdpdGhEYXRh
OnRlc3RJY29uSW1hZ2VEYXRhKCldOwogICAgIE5TU3RyaW5nICptYXJrdXBTdHJpbmcgPSBAIjxz
Y3JpcHQ+YmFyKCk8L3NjcmlwdD48c3Ryb25nIG9ubW91c2Vkb3duPWphdmFzY3JpcHQ6dm9pZCgw
KT5IRUxMTyBXT1JMRDwvc3Ryb25nPiI7CiAgICAgW2l0ZW1Qcm92aWRlciByZWdpc3RlckRhdGFS
ZXByZXNlbnRhdGlvbkZvclR5cGVJZGVudGlmaWVyOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5
cGVIVE1MIHdpdGhEYXRhOlttYXJrdXBTdHJpbmcgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3Ry
aW5nRW5jb2RpbmddXTsKQEAgLTE2MzEsMTMgKzE2MzAsMTMgQEAgVEVTVChEcmFnQW5kRHJvcFRl
c3RzLCBEYXRhVHJhbnNmZXJHZXREYXRhV2hlbkRyb3BwaW5nSW1hZ2VXaXRoRmlsZVVSTCkKICAg
ICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJkdW1wLWRhdGF0cmFu
c2Zlci10eXBlcyJdOwogICAgIGF1dG8gc2ltdWxhdG9yID0gYWRvcHROUyhbW0RyYWdBbmREcm9w
U2ltdWxhdG9yIGFsbG9jXSBpbml0V2l0aFdlYlZpZXc6d2ViVmlldy5nZXQoKV0pOwogCi0gICAg
YXV0byBpdGVtUHJvdmlkZXIgPSBhZG9wdE5TKFtbVUlJdGVtUHJvdmlkZXIgYWxsb2NdIGluaXRd
KTsKKyAgICBhdXRvIGl0ZW1Qcm92aWRlciA9IGFkb3B0TlMoW1tOU0l0ZW1Qcm92aWRlciBhbGxv
Y10gaW5pdF0pOwogICAgIE5TVVJMICppY29uVVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBV
UkxGb3JSZXNvdXJjZTpAImljb24iIHdpdGhFeHRlbnNpb246QCJwbmciIHN1YmRpcmVjdG9yeTpA
IlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CiAgICAgW2l0ZW1Qcm92aWRlciByZWdpc3RlckZp
bGVSZXByZXNlbnRhdGlvbkZvclR5cGVJZGVudGlmaWVyOihfX2JyaWRnZSBOU1N0cmluZyAqKWtV
VFR5cGVQTkcgZmlsZU9wdGlvbnM6MCB2aXNpYmlsaXR5Ok5TSXRlbVByb3ZpZGVyUmVwcmVzZW50
YXRpb25WaXNpYmlsaXR5QWxsIGxvYWRIYW5kbGVyOltwcm90ZWN0ZWRJY29uVVJMID0gcmV0YWlu
UHRyKGljb25VUkwpXSAoRmlsZUxvYWRDb21wbGV0aW9uQmxvY2sgY29tcGxldGlvbkhhbmRsZXIp
IC0+IE5TUHJvZ3Jlc3MgKiB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHByb3RlY3RlZElj
b25VUkwuZ2V0KCksIE5PLCBuaWwpOwogICAgICAgICByZXR1cm4gbmlsOwogICAgIH1dOwotICAg
IFtpdGVtUHJvdmlkZXIgcmVnaXN0ZXJPYmplY3Q6aWNvblVSTCB2aXNpYmlsaXR5OlVJSXRlbVBy
b3ZpZGVyUmVwcmVzZW50YXRpb25PcHRpb25zVmlzaWJpbGl0eUFsbF07CisgICAgW2l0ZW1Qcm92
aWRlciByZWdpc3Rlck9iamVjdDppY29uVVJMIHZpc2liaWxpdHk6TlNJdGVtUHJvdmlkZXJSZXBy
ZXNlbnRhdGlvblZpc2liaWxpdHlBbGxdOwogICAgIFtzaW11bGF0b3Igc2V0RXh0ZXJuYWxJdGVt
UHJvdmlkZXJzOkBbIGl0ZW1Qcm92aWRlci5nZXQoKSBdXTsKIAogICAgIFtzaW11bGF0b3IgcnVu
RnJvbTpDR1BvaW50TWFrZSgzMDAsIDM3NSkgdG86Q0dQb2ludE1ha2UoNTAsIDM3NSldOwpAQCAt
MTY1NSwxMyArMTY1NCwxMyBAQCBURVNUKERyYWdBbmREcm9wVGVzdHMsIERhdGFUcmFuc2Zlckdl
dERhdGFXaGVuRHJvcHBpbmdJbWFnZVdpdGhIVFRQVVJMKQogICAgIFt3ZWJWaWV3IHN5bmNocm9u
b3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAImR1bXAtZGF0YXRyYW5zZmVyLXR5cGVzIl07CiAgICAg
YXV0byBzaW11bGF0b3IgPSBhZG9wdE5TKFtbRHJhZ0FuZERyb3BTaW11bGF0b3IgYWxsb2NdIGlu
aXRXaXRoV2ViVmlldzp3ZWJWaWV3LmdldCgpXSk7CiAKLSAgICBhdXRvIGl0ZW1Qcm92aWRlciA9
IGFkb3B0TlMoW1tVSUl0ZW1Qcm92aWRlciBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gaXRlbVBy
b3ZpZGVyID0gYWRvcHROUyhbW05TSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7CiAgICAgW2l0
ZW1Qcm92aWRlciByZWdpc3RlckRhdGFSZXByZXNlbnRhdGlvbkZvclR5cGVJZGVudGlmaWVyOihf
X2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVKUEVHIHZpc2liaWxpdHk6TlNJdGVtUHJvdmlkZXJS
ZXByZXNlbnRhdGlvblZpc2liaWxpdHlBbGwgbG9hZEhhbmRsZXI6Xk5TUHJvZ3Jlc3MgKihEYXRh
TG9hZENvbXBsZXRpb25CbG9jayBjb21wbGV0aW9uSGFuZGxlcikKICAgICB7CiAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKFVJSW1hZ2VKUEVHUmVwcmVzZW50YXRpb24odGVzdEljb25JbWFnZSgp
LCAwLjUpLCBuaWwpOwogICAgICAgICByZXR1cm4gbmlsOwogICAgIH1dOwotICAgIFtpdGVtUHJv
dmlkZXIgcmVnaXN0ZXJPYmplY3Q6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vd2Via2l0
Lm9yZyJdIHZpc2liaWxpdHk6VUlJdGVtUHJvdmlkZXJSZXByZXNlbnRhdGlvbk9wdGlvbnNWaXNp
YmlsaXR5QWxsXTsKKyAgICBbaXRlbVByb3ZpZGVyIHJlZ2lzdGVyT2JqZWN0OltOU1VSTCBVUkxX
aXRoU3RyaW5nOkAiaHR0cDovL3dlYmtpdC5vcmciXSB2aXNpYmlsaXR5Ok5TSXRlbVByb3ZpZGVy
UmVwcmVzZW50YXRpb25WaXNpYmlsaXR5QWxsXTsKICAgICBbc2ltdWxhdG9yIHNldEV4dGVybmFs
SXRlbVByb3ZpZGVyczpAWyBpdGVtUHJvdmlkZXIuZ2V0KCkgXV07CiAKICAgICBbc2ltdWxhdG9y
IHJ1bkZyb206Q0dQb2ludE1ha2UoMzAwLCAzNzUpIHRvOkNHUG9pbnRNYWtlKDUwLCAzNzUpXTsK
QEAgLTE2NzgsNyArMTY3Nyw3IEBAIFRFU1QoRHJhZ0FuZERyb3BUZXN0cywgRGF0YVRyYW5zZmVy
R2V0RGF0YVdoZW5Ecm9wcGluZ1Jlc3BlY3RzUHJlc2VudGF0aW9uU3R5bGUpCiAgICAgYXV0byBz
aW11bGF0b3IgPSBhZG9wdE5TKFtbRHJhZ0FuZERyb3BTaW11bGF0b3IgYWxsb2NdIGluaXRXaXRo
V2ViVmlldzp3ZWJWaWV3LmdldCgpXSk7CiAKICAgICBydW5UZXN0V2l0aFRlbXBvcmFyeVRleHRG
aWxlKF4oTlNVUkwgKmZpbGVVUkwpIHsKLSAgICAgICAgYXV0byBpdGVtUHJvdmlkZXIgPSBhZG9w
dE5TKFtbVUlJdGVtUHJvdmlkZXIgYWxsb2NdIGluaXRdKTsKKyAgICAgICAgYXV0byBpdGVtUHJv
dmlkZXIgPSBhZG9wdE5TKFtbTlNJdGVtUHJvdmlkZXIgYWxsb2NdIGluaXRdKTsKICAgICAgICAg
W2l0ZW1Qcm92aWRlciByZWdpc3RlckZpbGVSZXByZXNlbnRhdGlvbkZvclR5cGVJZGVudGlmaWVy
OihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVVVEY4UGxhaW5UZXh0IGZpbGVPcHRpb25zOjAg
dmlzaWJpbGl0eTpOU0l0ZW1Qcm92aWRlclJlcHJlc2VudGF0aW9uVmlzaWJpbGl0eUFsbCBsb2Fk
SGFuZGxlcjpbcHJvdGVjdGVkRmlsZVVSTCA9IHJldGFpblB0cihmaWxlVVJMKV0gKEZpbGVMb2Fk
Q29tcGxldGlvbkJsb2NrIGNvbXBsZXRpb25IYW5kbGVyKSAtPiBOU1Byb2dyZXNzICogewogICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocHJvdGVjdGVkRmlsZVVSTC5nZXQoKSwgTk8sIG5p
bCk7CiAgICAgICAgICAgICByZXR1cm4gbmlsOwpAQCAtMTczMSw3ICsxNzMwLDcgQEAgVEVTVChE
cmFnQW5kRHJvcFRlc3RzLCBEYXRhVHJhbnNmZXJHZXREYXRhUmVhZFBsYWluQW5kUmljaFRleHQp
CiAgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAiRGF0YVRyYW5z
ZmVyIl07CiAgICAgYXV0byBzaW11bGF0b3IgPSBhZG9wdE5TKFtbRHJhZ0FuZERyb3BTaW11bGF0
b3IgYWxsb2NdIGluaXRXaXRoV2ViVmlldzp3ZWJWaWV3LmdldCgpXSk7CiAKLSAgICBhdXRvIGl0
ZW1Qcm92aWRlciA9IGFkb3B0TlMoW1tVSUl0ZW1Qcm92aWRlciBhbGxvY10gaW5pdF0pOworICAg
IGF1dG8gaXRlbVByb3ZpZGVyID0gYWRvcHROUyhbW05TSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0
XSk7CiAgICAgTlNEaWN0aW9uYXJ5ICp0ZXh0QXR0cmlidXRlcyA9IEB7IE5TRm9udEF0dHJpYnV0
ZU5hbWU6IFtVSUZvbnQgYm9sZFN5c3RlbUZvbnRPZlNpemU6MjBdIH07CiAgICAgTlNBdHRyaWJ1
dGVkU3RyaW5nICpyaWNoVGV4dCA9IFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0
aFN0cmluZzpAIldlYktpdCIgYXR0cmlidXRlczp0ZXh0QXR0cmlidXRlc107CiAgICAgW2l0ZW1Q
cm92aWRlciByZWdpc3Rlck9iamVjdDpyaWNoVGV4dCB2aXNpYmlsaXR5Ok5TSXRlbVByb3ZpZGVy
UmVwcmVzZW50YXRpb25WaXNpYmlsaXR5QWxsXTsKQEAgLTE3NTUsNyArMTc1NCw3IEBAIFRFU1Qo
RHJhZ0FuZERyb3BUZXN0cywgRGF0YVRyYW5zZmVyU3VwcHJlc3NHZXREYXRhRHVlVG9QcmVzZW5j
ZU9mVGV4dEZpbGUpCiAgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVk
OkAiRGF0YVRyYW5zZmVyIl07CiAgICAgYXV0byBzaW11bGF0b3IgPSBhZG9wdE5TKFtbRHJhZ0Fu
ZERyb3BTaW11bGF0b3IgYWxsb2NdIGluaXRXaXRoV2ViVmlldzp3ZWJWaWV3LmdldCgpXSk7CiAK
LSAgICBhdXRvIGl0ZW1Qcm92aWRlciA9IGFkb3B0TlMoW1tVSUl0ZW1Qcm92aWRlciBhbGxvY10g
aW5pdF0pOworICAgIGF1dG8gaXRlbVByb3ZpZGVyID0gYWRvcHROUyhbW05TSXRlbVByb3ZpZGVy
IGFsbG9jXSBpbml0XSk7CiAgICAgW2l0ZW1Qcm92aWRlciByZWdpc3Rlck9iamVjdDpAIkhlbGxv
IHdvcmxkIiB2aXNpYmlsaXR5Ok5TSXRlbVByb3ZpZGVyUmVwcmVzZW50YXRpb25WaXNpYmlsaXR5
QWxsXTsKICAgICBbaXRlbVByb3ZpZGVyIHNldFN1Z2dlc3RlZE5hbWU6QCJoZWxsby50eHQiXTsK
IApAQCAtMTc3Niw3ICsxNzc1LDcgQEAgVEVTVChEcmFnQW5kRHJvcFRlc3RzLCBEYXRhVHJhbnNm
ZXJHZXREYXRhQ2Fubm90UmVhZFByaXZhdGVBcmJpdHJhcnlUeXBlcykKICAgICBbd2ViVmlldyBz
eW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJkdW1wLWRhdGF0cmFuc2Zlci10eXBlcyJd
OwogICAgIGF1dG8gc2ltdWxhdG9yID0gYWRvcHROUyhbW0RyYWdBbmREcm9wU2ltdWxhdG9yIGFs
bG9jXSBpbml0V2l0aFdlYlZpZXc6d2ViVmlldy5nZXQoKV0pOwogCi0gICAgYXV0byBpdGVtUHJv
dmlkZXIgPSBhZG9wdE5TKFtbVUlJdGVtUHJvdmlkZXIgYWxsb2NdIGluaXRdKTsKKyAgICBhdXRv
IGl0ZW1Qcm92aWRlciA9IGFkb3B0TlMoW1tOU0l0ZW1Qcm92aWRlciBhbGxvY10gaW5pdF0pOwog
ICAgIFtpdGVtUHJvdmlkZXIgcmVnaXN0ZXJEYXRhUmVwcmVzZW50YXRpb25Gb3JUeXBlSWRlbnRp
ZmllcjooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlTVAzIHZpc2liaWxpdHk6TlNJdGVtUHJv
dmlkZXJSZXByZXNlbnRhdGlvblZpc2liaWxpdHlBbGwgbG9hZEhhbmRsZXI6Xk5TUHJvZ3Jlc3Mg
KihEYXRhTG9hZENvbXBsZXRpb25CbG9jayBjb21wbGV0aW9uSGFuZGxlcikKICAgICB7CiAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKFtAInRoaXMgaXMgYSB0ZXN0IiBkYXRhVXNpbmdFbmNvZGlu
ZzpOU1VURjhTdHJpbmdFbmNvZGluZ10sIG5pbCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL2NvY29hL0RyYWdBbmREcm9wU2ltdWxhdG9yLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L2NvY29hL0RyYWdBbmREcm9wU2ltdWxhdG9yLmgKaW5kZXggYjkxMmRhM2ExN2JhY2MwODZkZGFl
YmYxNTYxOTRkNWI4MzJiMWQwMC4uYTM5OGY5ODJhMzQ0ZjBhZDdkNDUwOWVhMWU2OWNkYzg4ZmE5
Nzg1NyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9EcmFnQW5kRHJvcFNp
bXVsYXRvci5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvRHJhZ0FuZERyb3BTaW11
bGF0b3IuaApAQCAtOTYsNyArOTYsNyBAQCB0eXBlZGVmIE5TRGljdGlvbmFyeTxOU051bWJlciAq
LCBOU1ZhbHVlICo+ICpQcm9ncmVzc1RvQ0dQb2ludFZhbHVlTWFwOwogQHByb3BlcnR5IChub25h
dG9taWMpIEJPT0wgc2hvdWxkRW5zdXJlVUlBcHBsaWNhdGlvbjsKIEBwcm9wZXJ0eSAobm9uYXRv
bWljKSBCT09MIHNob3VsZEFsbG93TW92ZU9wZXJhdGlvbjsKIEBwcm9wZXJ0eSAobm9uYXRvbWlj
KSBCbG9ja1B0cjxCT09MKF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvICopPiBzaG93Q3VzdG9tQWN0
aW9uU2hlZXRCbG9jazsKLUBwcm9wZXJ0eSAobm9uYXRvbWljKSBCbG9ja1B0cjxOU0FycmF5ICoo
VUlJdGVtUHJvdmlkZXIgKiwgTlNBcnJheSAqLCBOU0RpY3Rpb25hcnkgKik+IGNvbnZlcnRJdGVt
UHJvdmlkZXJzQmxvY2s7CitAcHJvcGVydHkgKG5vbmF0b21pYykgQmxvY2tQdHI8TlNBcnJheSAq
KE5TSXRlbVByb3ZpZGVyICosIE5TQXJyYXkgKiwgTlNEaWN0aW9uYXJ5ICopPiBjb252ZXJ0SXRl
bVByb3ZpZGVyc0Jsb2NrOwogQHByb3BlcnR5IChub25hdG9taWMpIEJsb2NrUHRyPE5TQXJyYXkg
KihpZCA8VUlEcm9wU2Vzc2lvbj4pPiBvdmVycmlkZVBlcmZvcm1Ecm9wQmxvY2s7CiBAcHJvcGVy
dHkgKG5vbmF0b21pYywgc3Ryb25nKSBOU0FycmF5ICpleHRlcm5hbEl0ZW1Qcm92aWRlcnM7CiBA
cHJvcGVydHkgKG5vbmF0b21pYykgQmxvY2tQdHI8TlNVSW50ZWdlcihOU1VJbnRlZ2VyLCBpZCk+
IG92ZXJyaWRlRHJhZ1VwZGF0ZUJsb2NrOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9pb3MvRHJhZ0FuZERyb3BTaW11bGF0b3JJT1MubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lv
cy9EcmFnQW5kRHJvcFNpbXVsYXRvcklPUy5tbQppbmRleCA3NDU1NDdkYzZiOWViMmVhNjA0Mzk4
NTczNTFhODNmNzE4NzI1MjJmLi4yYjAwYzlmNTU4NmU2ZjIzZDQyMmQ2MTcxYzFiZTg3ZmRkMDQ1
MWU5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9EcmFnQW5kRHJvcFNpbXVs
YXRvcklPUy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9EcmFnQW5kRHJvcFNpbXVs
YXRvcklPUy5tbQpAQCAtMTIwLDcgKzEyMCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJOwogICAgIHJldHVybiBZRVM7CiB9CiAKLS0gKEJPT0wpY2FuTG9hZE9iamVjdHNPZkNsYXNz
OihDbGFzczxVSUl0ZW1Qcm92aWRlclJlYWRpbmc+KWFDbGFzcworLSAoQk9PTCljYW5Mb2FkT2Jq
ZWN0c09mQ2xhc3M6KENsYXNzPE5TSXRlbVByb3ZpZGVyUmVhZGluZz4pYUNsYXNzCiB7CiAgICAg
Zm9yIChVSURyYWdJdGVtICppdGVtIGluIHNlbGYuaXRlbXMpIHsKICAgICAgICAgaWYgKFtpdGVt
Lml0ZW1Qcm92aWRlciBjYW5Mb2FkT2JqZWN0T2ZDbGFzczphQ2xhc3NdKQpAQCAtMTI5LDkgKzEy
OSw5IEBAIHVzaW5nIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJOwogICAgIHJldHVybiBOTzsKIH0K
IAotLSAoQk9PTCljYW5Mb2FkT2JqZWN0c09mQ2xhc3NlczooTlNBcnJheTxDbGFzczxVSUl0ZW1Q
cm92aWRlclJlYWRpbmc+PiAqKWNsYXNzZXMKKy0gKEJPT0wpY2FuTG9hZE9iamVjdHNPZkNsYXNz
ZXM6KE5TQXJyYXk8Q2xhc3M8TlNJdGVtUHJvdmlkZXJSZWFkaW5nPj4gKiljbGFzc2VzCiB7Ci0g
ICAgZm9yIChDbGFzczxVSUl0ZW1Qcm92aWRlclJlYWRpbmc+IGFDbGFzcyBpbiBjbGFzc2VzKSB7
CisgICAgZm9yIChDbGFzczxOU0l0ZW1Qcm92aWRlclJlYWRpbmc+IGFDbGFzcyBpbiBjbGFzc2Vz
KSB7CiAgICAgICAgIEJPT0wgY2FuTG9hZCA9IE5POwogICAgICAgICBmb3IgKFVJRHJhZ0l0ZW0g
Kml0ZW0gaW4gc2VsZi5pdGVtcykKICAgICAgICAgICAgIGNhbkxvYWQgfD0gW2l0ZW0uaXRlbVBy
b3ZpZGVyIGNhbkxvYWRPYmplY3RPZkNsYXNzOmFDbGFzc107CkBAIC0xNzEsMTAgKzE3MSwxMCBA
QCB1c2luZyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSTsKIAogQGltcGxlbWVudGF0aW9uIE1vY2tE
cm9wU2Vzc2lvbgogCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhQcm92aWRlcnM6KE5TQXJyYXk8
VUlJdGVtUHJvdmlkZXIgKj4gKilwcm92aWRlcnMgbG9jYXRpb246KENHUG9pbnQpbG9jYXRpb25J
bldpbmRvdyB3aW5kb3c6KFVJV2luZG93ICopd2luZG93IGFsbG93TW92ZTooQk9PTClhbGxvd01v
dmUKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFByb3ZpZGVyczooTlNBcnJheTxOU0l0ZW1Qcm92
aWRlciAqPiAqKXByb3ZpZGVycyBsb2NhdGlvbjooQ0dQb2ludClsb2NhdGlvbkluV2luZG93IHdp
bmRvdzooVUlXaW5kb3cgKil3aW5kb3cgYWxsb3dNb3ZlOihCT09MKWFsbG93TW92ZQogewogICAg
IGF1dG8gaXRlbXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKLSAg
ICBmb3IgKFVJSXRlbVByb3ZpZGVyICppdGVtUHJvdmlkZXIgaW4gcHJvdmlkZXJzKQorICAgIGZv
ciAoTlNJdGVtUHJvdmlkZXIgKml0ZW1Qcm92aWRlciBpbiBwcm92aWRlcnMpCiAgICAgICAgIFtp
dGVtcyBhZGRPYmplY3Q6W1tbVUlEcmFnSXRlbSBhbGxvY10gaW5pdFdpdGhJdGVtUHJvdmlkZXI6
aXRlbVByb3ZpZGVyXSBhdXRvcmVsZWFzZV1dOwogCiAgICAgcmV0dXJuIFtzdXBlciBpbml0V2l0
aEl0ZW1zOml0ZW1zLmdldCgpIGxvY2F0aW9uOmxvY2F0aW9uSW5XaW5kb3cgd2luZG93OndpbmRv
dyBhbGxvd01vdmU6YWxsb3dNb3ZlXTsKQEAgLTIxNSw3ICsyMTUsNyBAQCB1c2luZyBuYW1lc3Bh
Y2UgVGVzdFdlYktpdEFQSTsKICAgICByZXR1cm4gTk87CiB9CiAKLS0gKEJPT0wpY2FuQ3JlYXRl
SXRlbXNPZkNsYXNzOihDbGFzczxVSUl0ZW1Qcm92aWRlclJlYWRpbmc+KWFDbGFzcworLSAoQk9P
TCljYW5DcmVhdGVJdGVtc09mQ2xhc3M6KENsYXNzPE5TSXRlbVByb3ZpZGVyUmVhZGluZz4pYUNs
YXNzCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIE5POwpAQCAtNTE2
LDcgKzUxNiw3IEBAIHN0YXRpYyBOU0FycmF5ICpkcmFnQW5kRHJvcEV2ZW50TmFtZXMoKQogCiAg
ICAgc3dpdGNoIChfcGhhc2UpIHsKICAgICBjYXNlIERyYWdBbmREcm9wUGhhc2VCZWdpbm5pbmc6
IHsKLSAgICAgICAgTlNNdXRhYmxlQXJyYXk8VUlJdGVtUHJvdmlkZXIgKj4gKml0ZW1Qcm92aWRl
cnMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXldOworICAgICAgICBOU011dGFibGVBcnJheTxOU0l0
ZW1Qcm92aWRlciAqPiAqaXRlbVByb3ZpZGVycyA9IFtOU011dGFibGVBcnJheSBhcnJheV07CiAg
ICAgICAgIE5TQXJyYXkgKml0ZW1zID0gW1tfd2ViVmlldyBkcmFnSW50ZXJhY3Rpb25EZWxlZ2F0
ZV0gZHJhZ0ludGVyYWN0aW9uOltfd2ViVmlldyBkcmFnSW50ZXJhY3Rpb25dIGl0ZW1zRm9yQmVn
aW5uaW5nU2Vzc2lvbjpfZHJhZ1Nlc3Npb24uZ2V0KCldOwogICAgICAgICBpZiAoIWl0ZW1zLmNv
dW50KSB7CiAgICAgICAgICAgICBfcGhhc2UgPSBEcmFnQW5kRHJvcFBoYXNlQ2FuY2VsbGVkOwpA
QCAtNjUwLDcgKzY1MCw3IEBAIHN0YXRpYyBOU0FycmF5ICpkcmFnQW5kRHJvcEV2ZW50TmFtZXMo
KQogCiAjcHJhZ21hIG1hcmsgLSBXS1VJRGVsZWdhdGVQcml2YXRlCiAKLS0gKHZvaWQpX3dlYlZp
ZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGF0YUludGVyYWN0aW9uT3BlcmF0aW9uV2FzSGFuZGxl
ZDooQk9PTCloYW5kbGVkIGZvclNlc3Npb246KGlkKXNlc3Npb24gaXRlbVByb3ZpZGVyczooTlNB
cnJheTxVSUl0ZW1Qcm92aWRlciAqPiAqKWl0ZW1Qcm92aWRlcnMKKy0gKHZvaWQpX3dlYlZpZXc6
KFdLV2ViVmlldyAqKXdlYlZpZXcgZGF0YUludGVyYWN0aW9uT3BlcmF0aW9uV2FzSGFuZGxlZDoo
Qk9PTCloYW5kbGVkIGZvclNlc3Npb246KGlkKXNlc3Npb24gaXRlbVByb3ZpZGVyczooTlNBcnJh
eTxOU0l0ZW1Qcm92aWRlciAqPiAqKWl0ZW1Qcm92aWRlcnMKIHsKICAgICBfc3VwcHJlc3NlZFNl
bGVjdGlvbkNvbW1hbmRzRHVyaW5nRHJvcCA9IFtfd2ViVmlldyB0ZXh0SW5wdXRDb250ZW50Vmll
d10uX3Nob3VsZFN1cHByZXNzU2VsZWN0aW9uQ29tbWFuZHM7CiAgICAgX2lzRG9uZVdpdGhDdXJy
ZW50UnVuID0gdHJ1ZTsKQEAgLTY2NCw3ICs2NjQsNyBAQCBzdGF0aWMgTlNBcnJheSAqZHJhZ0Fu
ZERyb3BFdmVudE5hbWVzKCkKICAgICByZXR1cm4gc2VsZi5vdmVycmlkZURyYWdVcGRhdGVCbG9j
ayA/IHNlbGYub3ZlcnJpZGVEcmFnVXBkYXRlQmxvY2sob3BlcmF0aW9uLCBzZXNzaW9uKSA6IG9w
ZXJhdGlvbjsKIH0KIAotLSAoTlNBcnJheSAqKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3
IGFkanVzdGVkRGF0YUludGVyYWN0aW9uSXRlbVByb3ZpZGVyc0Zvckl0ZW1Qcm92aWRlcjooVUlJ
dGVtUHJvdmlkZXIgKilpdGVtUHJvdmlkZXIgcmVwcmVzZW50aW5nT2JqZWN0czooTlNBcnJheSAq
KXJlcHJlc2VudGluZ09iamVjdHMgYWRkaXRpb25hbERhdGE6KE5TRGljdGlvbmFyeSAqKWFkZGl0
aW9uYWxEYXRhCistIChOU0FycmF5ICopX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgYWRq
dXN0ZWREYXRhSW50ZXJhY3Rpb25JdGVtUHJvdmlkZXJzRm9ySXRlbVByb3ZpZGVyOihOU0l0ZW1Q
cm92aWRlciAqKWl0ZW1Qcm92aWRlciByZXByZXNlbnRpbmdPYmplY3RzOihOU0FycmF5ICopcmVw
cmVzZW50aW5nT2JqZWN0cyBhZGRpdGlvbmFsRGF0YTooTlNEaWN0aW9uYXJ5ICopYWRkaXRpb25h
bERhdGEKIHsKICAgICByZXR1cm4gc2VsZi5jb252ZXJ0SXRlbVByb3ZpZGVyc0Jsb2NrID8gc2Vs
Zi5jb252ZXJ0SXRlbVByb3ZpZGVyc0Jsb2NrKGl0ZW1Qcm92aWRlciwgcmVwcmVzZW50aW5nT2Jq
ZWN0cywgYWRkaXRpb25hbERhdGEpIDogQFsgaXRlbVByb3ZpZGVyIF07CiB9CmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9VSUtpdFNQSS5oIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9pb3MvVUlLaXRTUEkuaAppbmRleCBmMjhkMDBlOGVjNjdhNmJiMTdmNWFhZmM3NTc4OWVhN2I1
MDVhZTFjLi5kYWEyOWEwOTEwYmRiMjdhZDFiNjViNzU5MjIxMmVkNDljMzdkZjRhIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9VSUtpdFNQSS5oCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvaW9zL1VJS2l0U1BJLmgKQEAgLTQxLDEyICs0MSw4IEBACiBAcHJvdG9jb2wgVUlE
cmFnU2Vzc2lvbjsKIEBjbGFzcyBVSURyYWdJbnRlcmFjdGlvbjsKIEBjbGFzcyBVSURyYWdJdGVt
OwotI2ltcG9ydCA8VUlLaXQvTlNTdHJpbmcrVUlJdGVtUHJvdmlkZXIuaD4KLSNpbXBvcnQgPFVJ
S2l0L05TVVJMK1VJSXRlbVByb3ZpZGVyLmg+CisjaW1wb3J0IDxVSUtpdC9OU0l0ZW1Qcm92aWRl
citVSUtpdEFkZGl0aW9uc19Qcml2YXRlLmg+CiAjaW1wb3J0IDxVSUtpdC9VSURyYWdJbnRlcmFj
dGlvbl9Qcml2YXRlLmg+Ci0jaW1wb3J0IDxVSUtpdC9VSUltYWdlK1VJSXRlbVByb3ZpZGVyLmg+
Ci0jaW1wb3J0IDxVSUtpdC9VSUl0ZW1Qcm92aWRlci5oPgotI2ltcG9ydCA8VUlLaXQvVUlJdGVt
UHJvdmlkZXJfUHJpdmF0ZS5oPgogI2VuZGlmIC8vIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAKICNl
bHNlCkBAIC04OCw0MiArODQsMTAgQEAgV1RGX0VYVEVSTl9DX0VORAogLSAoQk9PTClfcmVzdG9y
ZUZvY3VzV2l0aFRva2VuOihpZCA8TlNDb3B5aW5nLCBOU1NlY3VyZUNvZGluZz4pdG9rZW47CiBA
ZW5kCiAKLSNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQotCiBAaW50ZXJmYWNlIE5TVVJMICgpCiBA
cHJvcGVydHkgKG5vbmF0b21pYywgY29weSwgc2V0dGVyPV9zZXRUaXRsZTopIE5TU3RyaW5nICpf
dGl0bGU7CiBAZW5kCiAKLSNkZWZpbmUgVUlJdGVtUHJvdmlkZXJSZXByZXNlbnRhdGlvbk9wdGlv
bnNWaXNpYmlsaXR5QWxsIE5TSXRlbVByb3ZpZGVyUmVwcmVzZW50YXRpb25WaXNpYmlsaXR5QWxs
Ci0KLUBwcm90b2NvbCBVSUl0ZW1Qcm92aWRlclJlYWRpbmcgPE5TSXRlbVByb3ZpZGVyUmVhZGlu
Zz4KLQotQHJlcXVpcmVkCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhJdGVtUHJvdmlkZXJEYXRh
OihOU0RhdGEgKilkYXRhIHR5cGVJZGVudGlmaWVyOihOU1N0cmluZyAqKXR5cGVJZGVudGlmaWVy
IGVycm9yOihOU0Vycm9yICoqKW91dEVycm9yOwotCi1AZW5kCi0KLUBwcm90b2NvbCBVSUl0ZW1Q
cm92aWRlcldyaXRpbmcgPE5TSXRlbVByb3ZpZGVyV3JpdGluZz4KLQotQHJlcXVpcmVkCi0tIChO
U1Byb2dyZXNzICopbG9hZERhdGFXaXRoVHlwZUlkZW50aWZpZXI6KE5TU3RyaW5nICopdHlwZUlk
ZW50aWZpZXIgZm9ySXRlbVByb3ZpZGVyQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TRGF0
YSAqLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyOwotCi1AZW5kCi0KLUBpbnRlcmZhY2Ug
TlNBdHRyaWJ1dGVkU3RyaW5nICgpIDxVSUl0ZW1Qcm92aWRlclJlYWRpbmcsIFVJSXRlbVByb3Zp
ZGVyV3JpdGluZz4KLUBlbmQKLUBpbnRlcmZhY2UgTlNTdHJpbmcgKCkgPFVJSXRlbVByb3ZpZGVy
UmVhZGluZywgVUlJdGVtUHJvdmlkZXJXcml0aW5nPgotQGVuZAotQGludGVyZmFjZSBOU1VSTCAo
KSA8VUlJdGVtUHJvdmlkZXJSZWFkaW5nLCBVSUl0ZW1Qcm92aWRlcldyaXRpbmc+Ci1AZW5kCi1A
aW50ZXJmYWNlIFVJSW1hZ2UgKCkgPFVJSXRlbVByb3ZpZGVyUmVhZGluZywgVUlJdGVtUHJvdmlk
ZXJXcml0aW5nPgotQGVuZAotCi1AaW50ZXJmYWNlIFVJSXRlbVByb3ZpZGVyIDogTlNJdGVtUHJv
dmlkZXIKLUBlbmQKLQotI2VuZGlmCi0KIEBpbnRlcmZhY2UgVUlLZXlib2FyZCA6IFVJVmlldwog
QGVuZAogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>