<?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>168439</bug_id>
          
          <creation_ts>2017-02-16 09:42:40 -0800</creation_ts>
          <short_desc>[WK2] Add additional test infrastructure and unit tests for data interaction</short_desc>
          <delta_ts>2017-02-16 17:34:06 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>andersca</cc>
    
    <cc>lforschler</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1277708</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-02-16 09:42:40 -0800</bug_when>
    <thetext>Add additional test infrastructure and unit tests for data interaction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1277913</commentid>
    <comment_count>1</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-02-16 14:44:31 -0800</bug_when>
    <thetext>&lt;rdar://problem/30557942&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1277920</commentid>
    <comment_count>2</comment_count>
      <attachid>301830</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-02-16 14:50:33 -0800</bug_when>
    <thetext>Created attachment 301830
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278011</commentid>
    <comment_count>3</comment_count>
      <attachid>301830</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-02-16 16:38:44 -0800</bug_when>
    <thetext>Comment on attachment 301830
Patch

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

&gt; Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:2982
&gt; +				&quot;OTHER_LDFLAGS_PLATFORM[sdk=iphone*]&quot; = &quot;-framework WebCore -framework CoreGraphics -framework UIKit -framework MobileCoreServices&quot;;

Pretty sure this should be in an xcconfig somewhere?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278015</commentid>
    <comment_count>4</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-02-16 16:47:17 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 301830 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=301830&amp;action=review
&gt; 
&gt; &gt; Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:2982
&gt; &gt; +				&quot;OTHER_LDFLAGS_PLATFORM[sdk=iphone*]&quot; = &quot;-framework WebCore -framework CoreGraphics -framework UIKit -framework MobileCoreServices&quot;;
&gt; 
&gt; Pretty sure this should be in an xcconfig somewhere?

Oh, good point! Added &quot;-framework MobileCoreServices&quot; to TestWebKitAPI.xcconfig instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278043</commentid>
    <comment_count>5</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-02-16 17:34:06 -0800</bug_when>
    <thetext>Committed &lt;http://trac.webkit.org/changeset/212507&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>301830</attachid>
            <date>2017-02-16 14:50:33 -0800</date>
            <delta_ts>2017-02-16 16:38:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-168439-20170216144756.patch</filename>
            <type>text/plain</type>
            <size>35581</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEyMzg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZjM2MjcxY2ZlNDY4OTMz
NDAwYzEzNThjNTM0YzQ3YmQzOWM5Y2FmZi4uZDJmMThjMGIzY2NmODMyYWU0NmVkMjNjODZjYzhk
YWFkM2FjNmQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE3LTAyLTE2ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIEFkZCBh
ZGRpdGlvbmFsIHRlc3QgaW5mcmFzdHJ1Y3R1cmUgYW5kIHVuaXQgdGVzdHMgZm9yIGRhdGEgaW50
ZXJhY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2ODQzOQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzA1NTc5NDI+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyB0d28gbmV3IF9XS1Rlc3Rp
bmdEZWxlZ2F0ZSBwcm90b2NvbCBtZXRob2RzIHRoYXQgYXJlIGZpcmVkIHdoZW4gYSAnc3RhcnQg
ZGF0YSBpbnRlcmFjdGlvbicgcmVxdWVzdCBoYXMgYmVlbgorICAgICAgICBzZW50IHRvIHRoZSB3
ZWIgcHJvY2VzcywgYW5kIHdoZW4gYSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZC4gU2VlIFRv
b2xzL0NoYW5nZUxvZyBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tUZXN0aW5nRGVsZWdhdGUuaDoKKwogMjAxNy0wMi0xNSAgQW5kZXJzIENhcmxz
c29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIE1vZGVybml6ZSBEcmFnQ2xpZW50
OjpzdGFydERyYWcgc29tZXdoYXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLVGVzdGluZ0RlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS1Rlc3RpbmdEZWxlZ2F0ZS5oCmluZGV4IGUzZGQ4MTYyYjQwZDRiZGZk
NDgxZDE5MTg0Nzk3Y2VkYWJiYjZmNTguLmYzN2Y5YWY0ZDZmMzc4NGNkNTdhYWVkZGY5OTYwNmM5
ODM0NGM0MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLVGVzdGluZ0RlbGVnYXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tUZXN0aW5nRGVsZWdhdGUuaApAQCAtNDMsNiArNDMsOCBAQCBOU19BU1NVTUVfTk9O
TlVMTF9CRUdJTgogCiAjaWYgVEFSR0VUX09TX0lQSE9ORQogQHByb3BlcnR5IChub25hdG9taWMs
IHJlYWRvbmx5KSBVSUxvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyICpkYXRhSW50ZXJhY3Rpb25H
ZXN0dXJlUmVjb2duaXplcjsKKy0gKHZvaWQpd2ViVmlld0RpZFNlbmREYXRhSW50ZXJhY3Rpb25T
dGFydFJlcXVlc3Q6KFdLV2ViVmlldyAqKXdlYlZpZXc7CistICh2b2lkKXdlYlZpZXc6KFdLV2Vi
VmlldyAqKXdlYlZpZXcgZGlkUmVjZWl2ZURhdGFJbnRlcmFjdGlvblN0YXJ0UmVzcG9uc2U6KEJP
T0wpc3RhcnRlZDsKIC0gKHZvaWQpd2ViVmlld0RpZFBlcmZvcm1EYXRhSW50ZXJhY3Rpb25Db250
cm9sbGVyT3BlcmF0aW9uOihXS1dlYlZpZXcgKil3ZWJWaWV3OwogLSAodm9pZCl3ZWJWaWV3OihX
S1dlYlZpZXcgKil3ZWJWaWV3IGJlZ2luRGF0YUludGVyYWN0aW9uV2l0aFNvdXJjZUluZGV4OihO
U0ludGVnZXIpc291cmNlSW5kZXggZ2VzdHVyZVJlY29nbml6ZXI6KFVJR2VzdHVyZVJlY29nbml6
ZXIgKilnZXN0dXJlUmVjb2duaXplcjsKICNlbmRpZiAvLyBUQVJHRVRfT1NfUEhPTkUKZGlmZiAt
LWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBmN2IwNWI4N2E2
Yzc4MTYyMDk1NDlhZGI3YmY2ZGFjNzM4OTEyNTM3Li4wMzhlMTIyNDhlMDM5MWI1ZjlkMTY1M2Q2
MTJlM2VkOTIzNjdlNGY2IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMv
Q2hhbmdlTG9nCkBAIC0xLDUgKzEsODEgQEAKIDIwMTctMDItMTYgIFdlbnNvbiBIc2llaCAgPHdl
bnNvbl9oc2llaEBhcHBsZS5jb20+CiAKKyAgICAgICAgW1dLMl0gQWRkIGFkZGl0aW9uYWwgdGVz
dCBpbmZyYXN0cnVjdHVyZSBhbmQgdW5pdCB0ZXN0cyBmb3IgZGF0YSBpbnRlcmFjdGlvbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY4NDM5CisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS8zMDU1Nzk0Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIHRlc3Qgc3VwcG9ydCBmb3IgYWRkaXRpb25hbCBk
YXRhIGludGVyYWN0aW9uIHNjZW5hcmlvcyB0aGF0IHdlIGN1cnJlbnRseSBjYW5ub3QgdGVzdCwg
YW5kIGFsc28gYWRkcyA3IG5ldworICAgICAgICB0ZXN0IGNhc2VzIHRvIERhdGFJbnRlcmFjdGlv
blRlc3RzLiBNb3N0IG9mIHRoZSBjaGFuZ2VzIGhlcmUgcmVmYWN0b3IgYW5kIGF1Z21lbnQgRGF0
YUludGVyYWN0aW9uU2ltdWxhdG9yIHRvCisgICAgICAgIHN1cHBvcnQgZGF0YSBpbnRlcmFjdGlv
biBmcm9tICBTZWUgcGVyLW1ldGhvZCBkZXNjcmlwdGlvbnMgYmVsb3cgZm9yIG1vcmUgZGV0YWls
cy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorCisgICAgICAgIEFkZCBNb2JpbGVDb3JlU2VydmljZXMgdG8gdGhlIGxp
c3Qgb2YgYWRkaXRpb25hbCBmcmFtZXdvcmtzIHRvIGxpbmsgYWdhaW5zdCBvbiBpT1MuCisKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EYXRhSW50ZXJhY3Rpb25UZXN0cy5tbToK
KyAgICAgICAgKC1bVGVzdFdLV2ViVmlldyBlZGl0b3JDb250YWluc0ltYWdlRWxlbWVudF0pOgor
ICAgICAgICAoLVtUZXN0V0tXZWJWaWV3IGVkaXRvclZhbHVlXSk6CisKKyAgICAgICAgTmV3IGhl
bHBlciBtZXRob2RzIGZvciBxdWVyeWluZyBpbmZvcm1hdGlvbiBmcm9tIHRoZSAiZWRpdG9yIiBl
bGVtZW50IGluIGEgdGVzdCBwYWdlLgorCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnJ1blRlc3RzRXhwZWN0aW5nVG9PYnNlcnZlRXZlbnRz
KTogRGVsZXRlZC4KKworICAgICAgICBNb3ZlcyBsb2dpYyBmb3IgY2FwdHVyaW5nIGV2ZW50cyBk
dXJpbmcgYSBzaW11bGF0ZWQgZGF0YSBpbnRlcmFjdGlvbiBydW4gZnJvbSB0aGUgdGVzdCBmaWxl
IHRvCisgICAgICAgIERhdGFJbnRlcmFjdGlvblNpbXVsYXRvci4gU2VlIC1bRGF0YUludGVyYWN0
aW9uU2ltdWxhdG9yIG9ic2VydmVkRXZlbnROYW1lc10uCisKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29h
L1Rlc3RXS1dlYlZpZXcubW06CisgICAgICAgICgtW1Rlc3RNZXNzYWdlSGFuZGxlciByZW1vdmVN
ZXNzYWdlOl0pOgorICAgICAgICAoLVtUZXN0V0tXZWJWaWV3IGNsZWFyTWVzc2FnZUhhbmRsZXJz
Ol0pOgorCisgICAgICAgIEFkZCB0aGUgYWJpbGl0eSB0byBjbGVhciBtZXNzYWdlIGhhbmRsZXJz
IGZyb20gdGhlIFRlc3RXS1dlYlZpZXcuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2lvcy9E
YXRhSW50ZXJhY3Rpb25TaW11bGF0b3IuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2lvcy9E
YXRhSW50ZXJhY3Rpb25TaW11bGF0b3IubW06CisgICAgICAgIChkYXRhSW50ZXJhY3Rpb25FdmVu
dE5hbWVzKToKKyAgICAgICAgKC1bRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIGluaXRXaXRoV2Vi
VmlldzpdKToKKyAgICAgICAgKC1bRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIF9yZXNldFNpbXVs
YXRlZFN0YXRlXSk6CisKKyAgICAgICAgTW92ZXMgbG9naWMgdG8gY2xlYXIgdGVzdCBoYXJuZXNz
IHN0YXRlIGZyb20gYW55IHByZXZpb3VzIHJ1bnMgaW50byBhIGhlbHBlci4gQ2FsbGVkIGF0IHRo
ZSBiZWdpbm5pbmcgd2hlbgorICAgICAgICBzaW11bGF0aW5nIGRhdGEgaW50ZXJhY3Rpb24uCisK
KyAgICAgICAgKC1bRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIG9ic2VydmVkRXZlbnROYW1lc10p
OgorCisgICAgICAgIFJldHVybnMgYSBsaXN0IG9mIHRoZSBuYW1lcyBvZiBldmVudHMgcmVsZXZh
bnQgdG8gZGF0YSBpbnRlcmFjdGlvbiB0aGF0IHdlcmUgb2JzZXJ2ZWQgb3ZlciB0aGUgY291cnNl
IG9mIHRoZQorICAgICAgICBtb3N0IHJlY2VudCBydW4uCisKKyAgICAgICAgKC1bRGF0YUludGVy
YWN0aW9uU2ltdWxhdG9yIHJ1bkZyb206dG86XSk6CisKKyAgICAgICAgQ2hhbmdlcyAtcnVuIHRv
IC1ydW5Gcm9tOnRvOiwgd2hpY2ggdGFrZXMgd2luZG93LXJlbGF0aXZlIHN0YXJ0IGFuZCBlbmQg
bG9jYXRpb25zLiBUaGlzIGFsbG93cyB0aGUgdGVzdCBoYXJuZXNzCisgICAgICAgIHRvIHJ1biB0
aGUgc2FtZSBkYXRhIGludGVyYWN0aW9uIGZvciBtdWx0aXBsZSBzaW11bGF0ZWQgZ2VzdHVyZXMu
CisKKyAgICAgICAgKC1bRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIF9hZHZhbmNlUHJvZ3Jlc3Nd
KToKKyAgICAgICAgKC1bRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIF9maW5pc2hEYXRhSW50ZXJh
Y3Rpb25dKToKKyAgICAgICAgKC1bRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIGV4dGVybmFsSXRl
bVByb3ZpZGVyXSk6CisgICAgICAgICgtW0RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBzZXRFeHRl
cm5hbEl0ZW1Qcm92aWRlcjpdKToKKworICAgICAgICBBZGRzIHRoZSAtZXh0ZXJuYWxJdGVtUHJv
dmlkZXIgcHJvcGVydHkgdG8gRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yLiBTZXR0aW5nIHRoaXMg
c2tpcHMgdGhlIGdlc3R1cmUgcmVjb2duaXRpb24KKyAgICAgICAgcGhhc2Ugb2YgYSB0ZXN0IHJ1
bi4KKworICAgICAgICAoLVtEYXRhSW50ZXJhY3Rpb25TaW11bGF0b3Igd2ViVmlld0RpZFBlcmZv
cm1EYXRhSW50ZXJhY3Rpb25Db250cm9sbGVyT3BlcmF0aW9uOl0pOgorICAgICAgICAoLVtEYXRh
SW50ZXJhY3Rpb25TaW11bGF0b3Igd2ViVmlldzpiZWdpbkRhdGFJbnRlcmFjdGlvbldpdGhTb3Vy
Y2VJbmRleDpnZXN0dXJlUmVjb2duaXplcjpdKToKKyAgICAgICAgKC1bRGF0YUludGVyYWN0aW9u
U2ltdWxhdG9yIHdlYlZpZXdEaWRTZW5kRGF0YUludGVyYWN0aW9uU3RhcnRSZXF1ZXN0Ol0pOgor
ICAgICAgICAoLVtEYXRhSW50ZXJhY3Rpb25TaW11bGF0b3Igd2ViVmlldzpkaWRSZWNlaXZlRGF0
YUludGVyYWN0aW9uU3RhcnRSZXNwb25zZTpdKToKKworICAgICAgICBXaGlsZSBhIHJlcXVlc3Qg
dG8gc3RhcnQgZGF0YSBpbnRlcmFjdGlvbiBpcyBpbiBmbGlnaHQsIHB1dCB0aGUgcmVtYWluZGVy
IG9mIHRoZSB0ZXN0IG9uIGhvbGQgdW50aWwgdGhlIHdlYgorICAgICAgICBwcm9jZXNzIHJldHVy
bnMuIFRoZW4gY29udGludWUgdGhlIHRlc3QgYnkgc2NoZWR1bGluZyBhIHByb2dyZXNzIGFkdmFu
Y2UgY2FsbC4gVGhpcyBhZGRyZXNzZXMgYSByYWNlIGNvbmRpdGlvbgorICAgICAgICB3aGVyZWlu
IHRoZSB0aGUgd2ViIHByb2Nlc3MgbWlnaHQgdGFrZSBsb25nZXIgdGhhbiB1c3VhbCB0byBwcm9j
ZXNzIHRoZSByZXF1ZXN0IHRvIHN0YXJ0IGRhdGEgaW50ZXJhY3Rpb24sIGFuZAorICAgICAgICBp
biB0aGUgbWVhbnRpbWUsIERhdGFJbnRlcmFjdGlvblNpbXVsYXRvciB3b3VsZCBlbmQgdXAgY29t
cGxldGluZyB0aGUgcmVzdCBvZiB0aGUgdGVzdCBiZWZvcmUgYSByZXNwb25zZSBmcm9tCisgICAg
ICAgIHRoZSB3ZWIgcHJvY2VzcyBpcyByZWNlaXZlZCwgd2hpY2ggdGhlbiBjYXVzZXMgbm8gc2lt
dWxhdGVkIGRlbGVnYXRlIG1ldGhvZHMgdG8gYmUgZmlyZWQuCisKKyAgICAgICAgKC1bRGF0YUlu
dGVyYWN0aW9uU2ltdWxhdG9yIGluaXRXaXRoV2ViVmlldzpzdGFydExvY2F0aW9uOmVuZExvY2F0
aW9uOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtEYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgcnVu
XSk6IERlbGV0ZWQuCisKKzIwMTctMDItMTYgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBh
cHBsZS5jb20+CisKICAgICAgICAgUmVtb3ZlIHVudXNlZCB0ZXN0IHBhZ2VzIGluIFRlc3RXZWJL
aXRBUEkKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
ODQ2MgogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDAwOWU5M2IyMDVjMzFjYzYwZjQxOGU1
YmNiNWVmYWM1MmJlNDU3NWEuLjgzNWY2YTBiZjY4MjFjZmJjN2ZiMTgzZTlkY2M0NjZkMzc0Nzgw
NjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMzkxLDYgKzIzOTEsNyBAQAogCQkJCThE
RDc2RjlCMDQ4NkFBNzYwMEQ5NkI1RSAvKiBGcmFtZXdvcmtzICovLAogCQkJCThERDc2RjlFMDQ4
NkFBNzYwMEQ5NkI1RSAvKiBDb3B5RmlsZXMgKi8sCiAJCQkJQkNCOUY0RkIxMTIzODRDMDAwQTEz
N0UwIC8qIENvcHkgUmVzb3VyY2VzICovLAorCQkJCUY0NzFDQjhCMUU1NjVDMEYwMDI4MDU1QyAv
KiBTaGVsbFNjcmlwdCAqLywKIAkJCSk7CiAJCQlidWlsZFJ1bGVzID0gKAogCQkJKTsKQEAgLTI1
MDEsNiArMjUwMiwyMyBAQAogCQl9OwogLyogRW5kIFBCWFJlc291cmNlc0J1aWxkUGhhc2Ugc2Vj
dGlvbiAqLwogCisvKiBCZWdpbiBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2Ugc2VjdGlvbiAqLwor
CQlGNDcxQ0I4QjFFNTY1QzBGMDAyODA1NUMgLyogU2hlbGxTY3JpcHQgKi8gPSB7CisJCQlpc2Eg
PSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgz
NjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCSk7CisJCQlv
dXRwdXRQYXRocyA9ICgKKwkJCSk7CisJCQluYW1lID0gIkNvcHkgYWRkaXRpb25hbCByZXNvdXJj
ZXMiOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCQlzaGVs
bFBhdGggPSAvYmluL3NoOworCQkJc2hlbGxTY3JpcHQgPSAiQURESVRJT05BTF9SRVNPVVJDRVNf
UEFUSD1cInVzci9sb2NhbC9pbmNsdWRlL1dlYktpdEFkZGl0aW9ucy9SZXNvdXJjZXMvVGVzdFdl
YktpdEFQSVwiXG5ERVNUSU5BVElPTl9QQVRIPVwiJFRBUkdFVF9CVUlMRF9ESVIvVGVzdFdlYktp
dEFQSS5yZXNvdXJjZXNcIlxuaWYgWyAtZCAkVEFSR0VUX0JVSUxEX0RJUi8kQURESVRJT05BTF9S
RVNPVVJDRVNfUEFUSCBdOyB0aGVuXG4gICAgY3AgJFRBUkdFVF9CVUlMRF9ESVIvJEFERElUSU9O
QUxfUkVTT1VSQ0VTX1BBVEgvKiAkREVTVElOQVRJT05fUEFUSFxuZWxpZiBbIC1kICRTREtST09U
LyRBRERJVElPTkFMX1JFU09VUkNFU19QQVRIIF07IHRoZW5cbiAgICBjcCAkU0RLUk9PVC8kQURE
SVRJT05BTF9SRVNPVVJDRVNfUEFUSC8qICRERVNUSU5BVElPTl9QQVRIXG5maSI7CisJCX07Cisv
KiBFbmQgUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwogLyogQmVnaW4gUEJY
U291cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwogCQk3QzgzREU5NjFEMEE1OTBDMDBGRUJDRjMg
LyogU291cmNlcyAqLyA9IHsKIAkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOwpAQCAtMjk2
MSw2ICsyOTc5LDcgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNv
bmZpZ3VyYXRpb25SZWZlcmVuY2UgPSBCQzkwOTU4MDEyNTU0Q0Y5MDAwODM3NTYgLyogVGVzdFdl
YktpdEFQSS54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJIk9USEVSX0xE
RkxBR1NfUExBVEZPUk1bc2RrPWlwaG9uZSpdIiA9ICItZnJhbWV3b3JrIFdlYkNvcmUgLWZyYW1l
d29yayBDb3JlR3JhcGhpY3MgLWZyYW1ld29yayBVSUtpdCAtZnJhbWV3b3JrIE1vYmlsZUNvcmVT
ZXJ2aWNlcyI7CiAJCQl9OwogCQkJbmFtZSA9IERlYnVnOwogCQl9OwpAQCAtMjk2OCw2ICsyOTg3
LDcgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRp
b25SZWZlcmVuY2UgPSBCQzkwOTU4MDEyNTU0Q0Y5MDAwODM3NTYgLyogVGVzdFdlYktpdEFQSS54
Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJIk9USEVSX0xERkxBR1NfUExB
VEZPUk1bc2RrPWlwaG9uZSpdIiA9ICItZnJhbWV3b3JrIFdlYkNvcmUgLWZyYW1ld29yayBDb3Jl
R3JhcGhpY3MgLWZyYW1ld29yayBVSUtpdCAtZnJhbWV3b3JrIE1vYmlsZUNvcmVTZXJ2aWNlcyI7
CiAJCQl9OwogCQkJbmFtZSA9IFJlbGVhc2U7CiAJCX07CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL2lvcy9EYXRhSW50ZXJhY3Rpb25UZXN0cy5tbSBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvaW9zL0RhdGFJbnRlcmFjdGlvblRlc3RzLm1tCmluZGV4IDdmNmMzOGM2
NWQ5ZjhlMDA4Mjg0NmNiZDRlMzcxMDIxNjU3MGQ2ZDguLmFlZDRjOGEyOGQ0YjUzYjY0NGE4Y2Zj
MzAyNWQzNTFiM2FjNDBmNmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
aW9zL0RhdGFJbnRlcmFjdGlvblRlc3RzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvaW9zL0RhdGFJbnRlcmFjdGlvblRlc3RzLm1tCkBAIC0zMCw4OSArMzAsMjI5IEBACiAjaW1w
b3J0ICJEYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IuaCIKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0
aWVzLmgiCiAjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCisjaW1wb3J0IDxNb2JpbGVDb3JlU2Vy
dmljZXMvTW9iaWxlQ29yZVNlcnZpY2VzLmg+CisjaW1wb3J0IDxVSUtpdC9VSUl0ZW1Qcm92aWRl
cl9Qcml2YXRlLmg+CiAKLW5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKK0BpbXBsZW1lbnRhdGlv
biBUZXN0V0tXZWJWaWV3IChEYXRhSW50ZXJhY3Rpb25UZXN0cykKIAotc3RhdGljIHZvaWQgcnVu
VGVzdHNFeHBlY3RpbmdUb09ic2VydmVFdmVudHMoVGVzdFdLV2ViVmlldyAqd2ViVmlldywgTlNB
cnJheSAqZXZlbnROYW1lc1RvT2JzZXJ2ZSwgZGlzcGF0Y2hfYmxvY2tfdCB0ZXN0KQorLSAoQk9P
TCllZGl0b3JDb250YWluc0ltYWdlRWxlbWVudAogewotICAgIE5TTXV0YWJsZVNldCAqb2JzZXJ2
ZWRFdmVudHMgPSBbTlNNdXRhYmxlU2V0IHNldF07Ci0gICAgZm9yIChOU1N0cmluZyAqZXZlbnRO
YW1lIGluIGV2ZW50TmFtZXNUb09ic2VydmUpIHsKLSAgICAgICAgW3dlYlZpZXcgcGVyZm9ybUFm
dGVyUmVjZWl2aW5nTWVzc2FnZTpldmVudE5hbWUgYWN0aW9uOl4oKSB7Ci0gICAgICAgICAgICBb
b2JzZXJ2ZWRFdmVudHMgYWRkT2JqZWN0OmV2ZW50TmFtZV07Ci0gICAgICAgIH1dOwotICAgIH0K
LQotICAgIHRlc3QoKTsKKyAgICByZXR1cm4gW3NlbGYgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNj
cmlwdDpAIiEhZWRpdG9yLnF1ZXJ5U2VsZWN0b3IoJ2ltZycpIl0uYm9vbFZhbHVlOworfQogCi0g
ICAgZm9yIChOU1N0cmluZyAqZXZlbnROYW1lIGluIGV2ZW50TmFtZXNUb09ic2VydmUpCi0gICAg
ICAgIEVYUEVDVF9UUlVFKFtvYnNlcnZlZEV2ZW50cyBjb250YWluc09iamVjdDpldmVudE5hbWVd
KTsKKy0gKE5TU3RyaW5nICopZWRpdG9yVmFsdWUKK3sKKyAgICByZXR1cm4gW3NlbGYgc3RyaW5n
QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImVkaXRvci52YWx1ZSJdOwogfQogCitAZW5kCisKK25h
bWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKwogVEVTVChEYXRhSW50ZXJhY3Rpb25UZXN0cywgSW1h
Z2VUb0NvbnRlbnRFZGl0YWJsZSkKIHsKICAgICBSZXRhaW5QdHI8VGVzdFdLV2ViVmlldz4gd2Vi
VmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVj
dE1ha2UoMCwgMCwgMzIwLCA1MDApXSk7Ci0gICAgcnVuVGVzdHNFeHBlY3RpbmdUb09ic2VydmVF
dmVudHMod2ViVmlldy5nZXQoKSwgQFsgRGF0YUludGVyYWN0aW9uRW50ZXJFdmVudE5hbWUsIERh
dGFJbnRlcmFjdGlvbk92ZXJFdmVudE5hbWUsIERhdGFJbnRlcmFjdGlvblBlcmZvcm1PcGVyYXRp
b25FdmVudE5hbWUgXSwgXigpIHsKLSAgICAgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRU
ZXN0UGFnZU5hbWVkOkAiaW1hZ2UtYW5kLWNvbnRlbnRlZGl0YWJsZSJdOworICAgIFt3ZWJWaWV3
IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAImltYWdlLWFuZC1jb250ZW50ZWRpdGFi
bGUiXTsKIAotICAgICAgICBSZXRhaW5QdHI8RGF0YUludGVyYWN0aW9uU2ltdWxhdG9yPiBkYXRh
SW50ZXJhY3Rpb25TaW11bGF0b3IgPSBhZG9wdE5TKFtbRGF0YUludGVyYWN0aW9uU2ltdWxhdG9y
IGFsbG9jXSBpbml0V2l0aFdlYlZpZXc6d2ViVmlldy5nZXQoKSBzdGFydExvY2F0aW9uOkNHUG9p
bnRNYWtlKDEwMCwgMTAwKSBlbmRMb2NhdGlvbjpDR1BvaW50TWFrZSgxMDAsIDMwMCldKTsKLSAg
ICAgICAgW2RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBydW5dOworICAgIFJldGFpblB0cjxEYXRh
SW50ZXJhY3Rpb25TaW11bGF0b3I+IGRhdGFJbnRlcmFjdGlvblNpbXVsYXRvciA9IGFkb3B0TlMo
W1tEYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgYWxsb2NdIGluaXRXaXRoV2ViVmlldzp3ZWJWaWV3
LmdldCgpXSk7CisgICAgW2RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBydW5Gcm9tOkNHUG9pbnRN
YWtlKDEwMCwgNTApIHRvOkNHUG9pbnRNYWtlKDEwMCwgMzAwKV07CiAKLSAgICAgICAgRVhQRUNU
X1RSVUUoW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAIiEhZWRpdG9yLnF1
ZXJ5U2VsZWN0b3IoJ2ltZycpIl0uYm9vbFZhbHVlKTsKLSAgICB9KTsKKyAgICBFWFBFQ1RfVFJV
RShbd2ViVmlldyBlZGl0b3JDb250YWluc0ltYWdlRWxlbWVudF0pOworCisgICAgTlNBcnJheSAq
b2JzZXJ2ZWRFdmVudE5hbWVzID0gW2RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBvYnNlcnZlZEV2
ZW50TmFtZXNdOworICAgIEVYUEVDVF9UUlVFKFtvYnNlcnZlZEV2ZW50TmFtZXMgY29udGFpbnNP
YmplY3Q6RGF0YUludGVyYWN0aW9uRW50ZXJFdmVudE5hbWVdKTsKKyAgICBFWFBFQ1RfVFJVRShb
b2JzZXJ2ZWRFdmVudE5hbWVzIGNvbnRhaW5zT2JqZWN0OkRhdGFJbnRlcmFjdGlvbk92ZXJFdmVu
dE5hbWVdKTsKKyAgICBFWFBFQ1RfVFJVRShbb2JzZXJ2ZWRFdmVudE5hbWVzIGNvbnRhaW5zT2Jq
ZWN0OkRhdGFJbnRlcmFjdGlvblBlcmZvcm1PcGVyYXRpb25FdmVudE5hbWVdKTsKIH0KIAogVEVT
VChEYXRhSW50ZXJhY3Rpb25UZXN0cywgSW1hZ2VUb1RleHRhcmVhKQogewogICAgIFJldGFpblB0
cjxUZXN0V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCldKTsKLSAgICBydW5UZXN0
c0V4cGVjdGluZ1RvT2JzZXJ2ZUV2ZW50cyh3ZWJWaWV3LmdldCgpLCBAWyBEYXRhSW50ZXJhY3Rp
b25FbnRlckV2ZW50TmFtZSwgRGF0YUludGVyYWN0aW9uT3ZlckV2ZW50TmFtZSwgRGF0YUludGVy
YWN0aW9uUGVyZm9ybU9wZXJhdGlvbkV2ZW50TmFtZSBdLCBeKCkgewotICAgICAgICBbd2ViVmll
dyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJpbWFnZS1hbmQtdGV4dGFyZWEiXTsK
KyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJpbWFnZS1hbmQt
dGV4dGFyZWEiXTsKKworICAgIFJldGFpblB0cjxEYXRhSW50ZXJhY3Rpb25TaW11bGF0b3I+IGRh
dGFJbnRlcmFjdGlvblNpbXVsYXRvciA9IGFkb3B0TlMoW1tEYXRhSW50ZXJhY3Rpb25TaW11bGF0
b3IgYWxsb2NdIGluaXRXaXRoV2ViVmlldzp3ZWJWaWV3LmdldCgpXSk7CisgICAgW2RhdGFJbnRl
cmFjdGlvblNpbXVsYXRvciBydW5Gcm9tOkNHUG9pbnRNYWtlKDEwMCwgNTApIHRvOkNHUG9pbnRN
YWtlKDEwMCwgMzAwKV07CiAKLSAgICAgICAgUmV0YWluUHRyPERhdGFJbnRlcmFjdGlvblNpbXVs
YXRvcj4gZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yID0gYWRvcHROUyhbW0RhdGFJbnRlcmFjdGlv
blNpbXVsYXRvciBhbGxvY10gaW5pdFdpdGhXZWJWaWV3OndlYlZpZXcuZ2V0KCkgc3RhcnRMb2Nh
dGlvbjpDR1BvaW50TWFrZSgxMDAsIDEwMCkgZW5kTG9jYXRpb246Q0dQb2ludE1ha2UoMTAwLCAz
MDApXSk7Ci0gICAgICAgIFtkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgcnVuXTsKKyAgICBOU1VS
TCAqaW1hZ2VVUkwgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOlt3ZWJWaWV3IGVkaXRvclZhbHVl
XV07CisgICAgRVhQRUNUX1dLX1NUUkVRKCJpY29uLnBuZyIsIGltYWdlVVJMLmxhc3RQYXRoQ29t
cG9uZW50KTsKKyAgICBFWFBFQ1RfVFJVRShbZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIGRpZFRy
eVRvQmVnaW5EYXRhSW50ZXJhY3Rpb25dKTsKIAotICAgICAgICBOU1VSTCAqaW1hZ2VVUkwgPSBb
TlNVUkwgZmlsZVVSTFdpdGhQYXRoOlt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3Jp
cHQ6QCJlZGl0b3IudmFsdWUiXV07Ci0gICAgICAgIEVYUEVDVF9XS19TVFJFUSgiaWNvbi5wbmci
LCBpbWFnZVVSTC5sYXN0UGF0aENvbXBvbmVudCk7Ci0gICAgfSk7CisgICAgTlNBcnJheSAqb2Jz
ZXJ2ZWRFdmVudE5hbWVzID0gW2RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBvYnNlcnZlZEV2ZW50
TmFtZXNdOworICAgIEVYUEVDVF9UUlVFKFtvYnNlcnZlZEV2ZW50TmFtZXMgY29udGFpbnNPYmpl
Y3Q6RGF0YUludGVyYWN0aW9uRW50ZXJFdmVudE5hbWVdKTsKKyAgICBFWFBFQ1RfVFJVRShbb2Jz
ZXJ2ZWRFdmVudE5hbWVzIGNvbnRhaW5zT2JqZWN0OkRhdGFJbnRlcmFjdGlvbk92ZXJFdmVudE5h
bWVdKTsKKyAgICBFWFBFQ1RfVFJVRShbb2JzZXJ2ZWRFdmVudE5hbWVzIGNvbnRhaW5zT2JqZWN0
OkRhdGFJbnRlcmFjdGlvblBlcmZvcm1PcGVyYXRpb25FdmVudE5hbWVdKTsKIH0KIAogVEVTVChE
YXRhSW50ZXJhY3Rpb25UZXN0cywgQ29udGVudEVkaXRhYmxlVG9Db250ZW50RWRpdGFibGUpCiB7
CiAgICAgUmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdL
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKV0p
OwotICAgIHJ1blRlc3RzRXhwZWN0aW5nVG9PYnNlcnZlRXZlbnRzKHdlYlZpZXcuZ2V0KCksIEBb
IERhdGFJbnRlcmFjdGlvbkVudGVyRXZlbnROYW1lLCBEYXRhSW50ZXJhY3Rpb25PdmVyRXZlbnRO
YW1lLCBEYXRhSW50ZXJhY3Rpb25QZXJmb3JtT3BlcmF0aW9uRXZlbnROYW1lIF0sIF4oKSB7Ci0g
ICAgICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAImF1dG9mb2N1
cy1jb250ZW50ZWRpdGFibGUiXTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQ
YWdlTmFtZWQ6QCJhdXRvZm9jdXMtY29udGVudGVkaXRhYmxlIl07CisKKyAgICBSZXRhaW5QdHI8
RGF0YUludGVyYWN0aW9uU2ltdWxhdG9yPiBkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgPSBhZG9w
dE5TKFtbRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIGFsbG9jXSBpbml0V2l0aFdlYlZpZXc6d2Vi
Vmlldy5nZXQoKV0pOworICAgIFtkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgcnVuRnJvbTpDR1Bv
aW50TWFrZSgxMDAsIDUwKSB0bzpDR1BvaW50TWFrZSgxMDAsIDMwMCldOworCisgICAgRVhQRUNU
X0VRKFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJzb3VyY2UudGV4dENv
bnRlbnQiXS5sZW5ndGgsIDBVTCk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJIZWxsbyB3b3JsZCIs
IFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJlZGl0b3IudGV4dENvbnRl
bnQiXS5VVEY4U3RyaW5nKTsKKyAgICBFWFBFQ1RfVFJVRShbZGF0YUludGVyYWN0aW9uU2ltdWxh
dG9yIGRpZFRyeVRvQmVnaW5EYXRhSW50ZXJhY3Rpb25dKTsKKworICAgIE5TQXJyYXkgKm9ic2Vy
dmVkRXZlbnROYW1lcyA9IFtkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3Igb2JzZXJ2ZWRFdmVudE5h
bWVzXTsKKyAgICBFWFBFQ1RfVFJVRShbb2JzZXJ2ZWRFdmVudE5hbWVzIGNvbnRhaW5zT2JqZWN0
OkRhdGFJbnRlcmFjdGlvbkVudGVyRXZlbnROYW1lXSk7CisgICAgRVhQRUNUX1RSVUUoW29ic2Vy
dmVkRXZlbnROYW1lcyBjb250YWluc09iamVjdDpEYXRhSW50ZXJhY3Rpb25PdmVyRXZlbnROYW1l
XSk7CisgICAgRVhQRUNUX1RSVUUoW29ic2VydmVkRXZlbnROYW1lcyBjb250YWluc09iamVjdDpE
YXRhSW50ZXJhY3Rpb25QZXJmb3JtT3BlcmF0aW9uRXZlbnROYW1lXSk7Cit9CisKK1RFU1QoRGF0
YUludGVyYWN0aW9uVGVzdHMsIENvbnRlbnRFZGl0YWJsZVRvVGV4dGFyZWEpCit7CisgICAgUmV0
YWluUHRyPFRlc3RXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKV0pOworICAgIFt3
ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAImNvbnRlbnRlZGl0YWJsZS1h
bmQtdGV4dGFyZWEiXTsKIAotICAgICAgICBSZXRhaW5QdHI8RGF0YUludGVyYWN0aW9uU2ltdWxh
dG9yPiBkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgPSBhZG9wdE5TKFtbRGF0YUludGVyYWN0aW9u
U2ltdWxhdG9yIGFsbG9jXSBpbml0V2l0aFdlYlZpZXc6d2ViVmlldy5nZXQoKSBzdGFydExvY2F0
aW9uOkNHUG9pbnRNYWtlKDEwMCwgMTAwKSBlbmRMb2NhdGlvbjpDR1BvaW50TWFrZSgxMDAsIDMw
MCldKTsKLSAgICAgICAgW2RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBydW5dOworICAgIFJldGFp
blB0cjxEYXRhSW50ZXJhY3Rpb25TaW11bGF0b3I+IGRhdGFJbnRlcmFjdGlvblNpbXVsYXRvciA9
IGFkb3B0TlMoW1tEYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgYWxsb2NdIGluaXRXaXRoV2ViVmll
dzp3ZWJWaWV3LmdldCgpXSk7CisgICAgW2RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBydW5Gcm9t
OkNHUG9pbnRNYWtlKDEwMCwgNTApIHRvOkNHUG9pbnRNYWtlKDEwMCwgMzAwKV07CiAKLSAgICAg
ICAgRVhQRUNUX0VRKFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJzb3Vy
Y2UudGV4dENvbnRlbnQiXS5sZW5ndGgsIDBVTCk7Ci0gICAgICAgIEVYUEVDVF9XS19TVFJFUSgi
SGVsbG8gd29ybGQiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZWRp
dG9yLnRleHRDb250ZW50Il0uVVRGOFN0cmluZyk7Ci0gICAgfSk7CisgICAgRVhQRUNUX0VRKFt3
ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJzb3VyY2UudGV4dENvbnRlbnQi
XS5sZW5ndGgsIDBVTCk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJIZWxsbyB3b3JsZCIsIFt3ZWJW
aWV3IGVkaXRvclZhbHVlXS5VVEY4U3RyaW5nKTsKKyAgICBFWFBFQ1RfVFJVRShbZGF0YUludGVy
YWN0aW9uU2ltdWxhdG9yIGRpZFRyeVRvQmVnaW5EYXRhSW50ZXJhY3Rpb25dKTsKKworICAgIE5T
QXJyYXkgKm9ic2VydmVkRXZlbnROYW1lcyA9IFtkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3Igb2Jz
ZXJ2ZWRFdmVudE5hbWVzXTsKKyAgICBFWFBFQ1RfVFJVRShbb2JzZXJ2ZWRFdmVudE5hbWVzIGNv
bnRhaW5zT2JqZWN0OkRhdGFJbnRlcmFjdGlvbkVudGVyRXZlbnROYW1lXSk7CisgICAgRVhQRUNU
X1RSVUUoW29ic2VydmVkRXZlbnROYW1lcyBjb250YWluc09iamVjdDpEYXRhSW50ZXJhY3Rpb25P
dmVyRXZlbnROYW1lXSk7CisgICAgRVhQRUNUX1RSVUUoW29ic2VydmVkRXZlbnROYW1lcyBjb250
YWluc09iamVjdDpEYXRhSW50ZXJhY3Rpb25QZXJmb3JtT3BlcmF0aW9uRXZlbnROYW1lXSk7CiB9
CiAKIFRFU1QoRGF0YUludGVyYWN0aW9uVGVzdHMsIExpbmtUb0lucHV0KQogewogICAgIFJldGFp
blB0cjxUZXN0V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCldKTsKLSAgICBydW5U
ZXN0c0V4cGVjdGluZ1RvT2JzZXJ2ZUV2ZW50cyh3ZWJWaWV3LmdldCgpLCBAWyBEYXRhSW50ZXJh
Y3Rpb25FbnRlckV2ZW50TmFtZSwgRGF0YUludGVyYWN0aW9uT3ZlckV2ZW50TmFtZSwgRGF0YUlu
dGVyYWN0aW9uUGVyZm9ybU9wZXJhdGlvbkV2ZW50TmFtZSBdLCBeKCkgewotICAgICAgICBbd2Vi
VmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJsaW5rLWFuZC1pbnB1dCJdOwor
ICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAImxpbmstYW5kLWlu
cHV0Il07CisKKyAgICBSZXRhaW5QdHI8RGF0YUludGVyYWN0aW9uU2ltdWxhdG9yPiBkYXRhSW50
ZXJhY3Rpb25TaW11bGF0b3IgPSBhZG9wdE5TKFtbRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIGFs
bG9jXSBpbml0V2l0aFdlYlZpZXc6d2ViVmlldy5nZXQoKV0pOworICAgIFtkYXRhSW50ZXJhY3Rp
b25TaW11bGF0b3IgcnVuRnJvbTpDR1BvaW50TWFrZSgxMDAsIDUwKSB0bzpDR1BvaW50TWFrZSgx
MDAsIDMwMCldOwogCi0gICAgICAgIFJldGFpblB0cjxEYXRhSW50ZXJhY3Rpb25TaW11bGF0b3I+
IGRhdGFJbnRlcmFjdGlvblNpbXVsYXRvciA9IGFkb3B0TlMoW1tEYXRhSW50ZXJhY3Rpb25TaW11
bGF0b3IgYWxsb2NdIGluaXRXaXRoV2ViVmlldzp3ZWJWaWV3LmdldCgpIHN0YXJ0TG9jYXRpb246
Q0dQb2ludE1ha2UoMTAwLCAxMDApIGVuZExvY2F0aW9uOkNHUG9pbnRNYWtlKDEwMCwgMzAwKV0p
OwotICAgICAgICBbZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIHJ1bl07CisgICAgRVhQRUNUX1dL
X1NUUkVRKCJodHRwczovL3d3dy5kYXJpbmdmaXJlYmFsbC5uZXQvIiwgW3dlYlZpZXcgZWRpdG9y
VmFsdWVdLlVURjhTdHJpbmcpOworICAgIEVYUEVDVF9UUlVFKFtkYXRhSW50ZXJhY3Rpb25TaW11
bGF0b3IgZGlkVHJ5VG9CZWdpbkRhdGFJbnRlcmFjdGlvbl0pOwogCi0gICAgICAgIEVYUEVDVF9X
S19TVFJFUSgiaHR0cHM6Ly93d3cuZGFyaW5nZmlyZWJhbGwubmV0LyIsIFt3ZWJWaWV3IHN0cmlu
Z0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJlZGl0b3IudmFsdWUiXS5VVEY4U3RyaW5nKTsKLSAg
ICB9KTsKKyAgICBOU0FycmF5ICpvYnNlcnZlZEV2ZW50TmFtZXMgPSBbZGF0YUludGVyYWN0aW9u
U2ltdWxhdG9yIG9ic2VydmVkRXZlbnROYW1lc107CisgICAgRVhQRUNUX1RSVUUoW29ic2VydmVk
RXZlbnROYW1lcyBjb250YWluc09iamVjdDpEYXRhSW50ZXJhY3Rpb25FbnRlckV2ZW50TmFtZV0p
OworICAgIEVYUEVDVF9UUlVFKFtvYnNlcnZlZEV2ZW50TmFtZXMgY29udGFpbnNPYmplY3Q6RGF0
YUludGVyYWN0aW9uT3ZlckV2ZW50TmFtZV0pOworICAgIEVYUEVDVF9UUlVFKFtvYnNlcnZlZEV2
ZW50TmFtZXMgY29udGFpbnNPYmplY3Q6RGF0YUludGVyYWN0aW9uUGVyZm9ybU9wZXJhdGlvbkV2
ZW50TmFtZV0pOwogfQogCiBURVNUKERhdGFJbnRlcmFjdGlvblRlc3RzLCBCYWNrZ3JvdW5kSW1h
Z2VMaW5rVG9JbnB1dCkKIHsKICAgICBSZXRhaW5QdHI8VGVzdFdLV2ViVmlldz4gd2ViVmlldyA9
IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2Uo
MCwgMCwgMzIwLCA1MDApXSk7Ci0gICAgcnVuVGVzdHNFeHBlY3RpbmdUb09ic2VydmVFdmVudHMo
d2ViVmlldy5nZXQoKSwgQFsgRGF0YUludGVyYWN0aW9uRW50ZXJFdmVudE5hbWUsIERhdGFJbnRl
cmFjdGlvbk92ZXJFdmVudE5hbWUsIERhdGFJbnRlcmFjdGlvblBlcmZvcm1PcGVyYXRpb25FdmVu
dE5hbWUgXSwgXigpIHsKLSAgICAgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFn
ZU5hbWVkOkAiYmFja2dyb3VuZC1pbWFnZS1saW5rLWFuZC1pbnB1dCJdOworICAgIFt3ZWJWaWV3
IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAImJhY2tncm91bmQtaW1hZ2UtbGluay1h
bmQtaW5wdXQiXTsKKworICAgIFJldGFpblB0cjxEYXRhSW50ZXJhY3Rpb25TaW11bGF0b3I+IGRh
dGFJbnRlcmFjdGlvblNpbXVsYXRvciA9IGFkb3B0TlMoW1tEYXRhSW50ZXJhY3Rpb25TaW11bGF0
b3IgYWxsb2NdIGluaXRXaXRoV2ViVmlldzp3ZWJWaWV3LmdldCgpXSk7CisgICAgW2RhdGFJbnRl
cmFjdGlvblNpbXVsYXRvciBydW5Gcm9tOkNHUG9pbnRNYWtlKDEwMCwgNTApIHRvOkNHUG9pbnRN
YWtlKDEwMCwgMzAwKV07CisKKyAgICBFWFBFQ1RfV0tfU1RSRVEoImh0dHBzOi8vd3d3LmRhcmlu
Z2ZpcmViYWxsLm5ldC8iLCBbd2ViVmlldyBlZGl0b3JWYWx1ZV0uVVRGOFN0cmluZyk7CisgICAg
RVhQRUNUX1RSVUUoW2RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBkaWRUcnlUb0JlZ2luRGF0YUlu
dGVyYWN0aW9uXSk7CisKKyAgICBOU0FycmF5ICpvYnNlcnZlZEV2ZW50TmFtZXMgPSBbZGF0YUlu
dGVyYWN0aW9uU2ltdWxhdG9yIG9ic2VydmVkRXZlbnROYW1lc107CisgICAgRVhQRUNUX1RSVUUo
W29ic2VydmVkRXZlbnROYW1lcyBjb250YWluc09iamVjdDpEYXRhSW50ZXJhY3Rpb25FbnRlckV2
ZW50TmFtZV0pOworICAgIEVYUEVDVF9UUlVFKFtvYnNlcnZlZEV2ZW50TmFtZXMgY29udGFpbnNP
YmplY3Q6RGF0YUludGVyYWN0aW9uT3ZlckV2ZW50TmFtZV0pOworICAgIEVYUEVDVF9UUlVFKFtv
YnNlcnZlZEV2ZW50TmFtZXMgY29udGFpbnNPYmplY3Q6RGF0YUludGVyYWN0aW9uUGVyZm9ybU9w
ZXJhdGlvbkV2ZW50TmFtZV0pOworfQorCitURVNUKERhdGFJbnRlcmFjdGlvblRlc3RzLCBDYW5Q
cmV2ZW50U3RhcnQpCit7CisgICAgUmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+IHdlYlZpZXcgPSBh
ZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAs
IDAsIDMyMCwgNTAwKV0pOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VO
YW1lZDpAInByZXZlbnQtc3RhcnQiXTsKKworICAgIFJldGFpblB0cjxEYXRhSW50ZXJhY3Rpb25T
aW11bGF0b3I+IGRhdGFJbnRlcmFjdGlvblNpbXVsYXRvciA9IGFkb3B0TlMoW1tEYXRhSW50ZXJh
Y3Rpb25TaW11bGF0b3IgYWxsb2NdIGluaXRXaXRoV2ViVmlldzp3ZWJWaWV3LmdldCgpXSk7Cisg
ICAgW2RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBydW5Gcm9tOkNHUG9pbnRNYWtlKDEwMCwgNTAp
IHRvOkNHUG9pbnRNYWtlKDEwMCwgMzAwKV07CisKKyAgICBFWFBFQ1RfRkFMU0UoW3dlYlZpZXcg
ZWRpdG9yQ29udGFpbnNJbWFnZUVsZW1lbnRdKTsKKyAgICBFWFBFQ1RfRkFMU0UoW2RhdGFJbnRl
cmFjdGlvblNpbXVsYXRvciBkaWRUcnlUb0JlZ2luRGF0YUludGVyYWN0aW9uXSk7CisKKyAgICBO
U0FycmF5ICpvYnNlcnZlZEV2ZW50TmFtZXMgPSBbZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIG9i
c2VydmVkRXZlbnROYW1lc107CisgICAgRVhQRUNUX0ZBTFNFKFtvYnNlcnZlZEV2ZW50TmFtZXMg
Y29udGFpbnNPYmplY3Q6RGF0YUludGVyYWN0aW9uRW50ZXJFdmVudE5hbWVdKTsKKyAgICBFWFBF
Q1RfRkFMU0UoW29ic2VydmVkRXZlbnROYW1lcyBjb250YWluc09iamVjdDpEYXRhSW50ZXJhY3Rp
b25PdmVyRXZlbnROYW1lXSk7Cit9CisKK1RFU1QoRGF0YUludGVyYWN0aW9uVGVzdHMsIENhblBy
ZXZlbnRPcGVyYXRpb24pCit7CisgICAgUmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+IHdlYlZpZXcg
PSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtl
KDAsIDAsIDMyMCwgNTAwKV0pOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBh
Z2VOYW1lZDpAInByZXZlbnQtb3BlcmF0aW9uIl07CisKKyAgICBSZXRhaW5QdHI8RGF0YUludGVy
YWN0aW9uU2ltdWxhdG9yPiBkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgPSBhZG9wdE5TKFtbRGF0
YUludGVyYWN0aW9uU2ltdWxhdG9yIGFsbG9jXSBpbml0V2l0aFdlYlZpZXc6d2ViVmlldy5nZXQo
KV0pOworICAgIFtkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgcnVuRnJvbTpDR1BvaW50TWFrZSgx
MDAsIDUwKSB0bzpDR1BvaW50TWFrZSgxMDAsIDMwMCldOworCisgICAgRVhQRUNUX0ZBTFNFKFt3
ZWJWaWV3IGVkaXRvckNvbnRhaW5zSW1hZ2VFbGVtZW50XSk7CisgICAgRVhQRUNUX1RSVUUoW2Rh
dGFJbnRlcmFjdGlvblNpbXVsYXRvciBkaWRUcnlUb0JlZ2luRGF0YUludGVyYWN0aW9uXSk7CisK
KyAgICBOU0FycmF5ICpvYnNlcnZlZEV2ZW50TmFtZXMgPSBbZGF0YUludGVyYWN0aW9uU2ltdWxh
dG9yIG9ic2VydmVkRXZlbnROYW1lc107CisgICAgRVhQRUNUX1RSVUUoW29ic2VydmVkRXZlbnRO
YW1lcyBjb250YWluc09iamVjdDpEYXRhSW50ZXJhY3Rpb25FbnRlckV2ZW50TmFtZV0pOworICAg
IEVYUEVDVF9UUlVFKFtvYnNlcnZlZEV2ZW50TmFtZXMgY29udGFpbnNPYmplY3Q6RGF0YUludGVy
YWN0aW9uT3ZlckV2ZW50TmFtZV0pOworfQorCitURVNUKERhdGFJbnRlcmFjdGlvblRlc3RzLCBF
bnRlckFuZExlYXZlRXZlbnRzKQoreworICAgIFJldGFpblB0cjxUZXN0V0tXZWJWaWV3PiB3ZWJW
aWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0
TWFrZSgwLCAwLCAzMjAsIDUwMCldKTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRl
c3RQYWdlTmFtZWQ6QCJsaW5rLWFuZC1pbnB1dCJdOworCisgICAgUmV0YWluUHRyPERhdGFJbnRl
cmFjdGlvblNpbXVsYXRvcj4gZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yID0gYWRvcHROUyhbW0Rh
dGFJbnRlcmFjdGlvblNpbXVsYXRvciBhbGxvY10gaW5pdFdpdGhXZWJWaWV3OndlYlZpZXcuZ2V0
KCldKTsKKyAgICBbZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIHJ1bkZyb206Q0dQb2ludE1ha2Uo
MTAwLCA1MCkgdG86Q0dQb2ludE1ha2UoMTAwLCA0NTApXTsKKworICAgIEVYUEVDVF9XS19TVFJF
USgiIiwgW3dlYlZpZXcgZWRpdG9yVmFsdWVdLlVURjhTdHJpbmcpOworICAgIEVYUEVDVF9UUlVF
KFtkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgZGlkVHJ5VG9CZWdpbkRhdGFJbnRlcmFjdGlvbl0p
OworCisgICAgTlNBcnJheSAqb2JzZXJ2ZWRFdmVudE5hbWVzID0gW2RhdGFJbnRlcmFjdGlvblNp
bXVsYXRvciBvYnNlcnZlZEV2ZW50TmFtZXNdOworICAgIEVYUEVDVF9UUlVFKFtvYnNlcnZlZEV2
ZW50TmFtZXMgY29udGFpbnNPYmplY3Q6RGF0YUludGVyYWN0aW9uRW50ZXJFdmVudE5hbWVdKTsK
KyAgICBFWFBFQ1RfVFJVRShbb2JzZXJ2ZWRFdmVudE5hbWVzIGNvbnRhaW5zT2JqZWN0OkRhdGFJ
bnRlcmFjdGlvbk92ZXJFdmVudE5hbWVdKTsKKyAgICBFWFBFQ1RfVFJVRShbb2JzZXJ2ZWRFdmVu
dE5hbWVzIGNvbnRhaW5zT2JqZWN0OkRhdGFJbnRlcmFjdGlvbkxlYXZlRXZlbnROYW1lXSk7Cisg
ICAgRVhQRUNUX0ZBTFNFKFtvYnNlcnZlZEV2ZW50TmFtZXMgY29udGFpbnNPYmplY3Q6RGF0YUlu
dGVyYWN0aW9uUGVyZm9ybU9wZXJhdGlvbkV2ZW50TmFtZV0pOworfQorCitURVNUKERhdGFJbnRl
cmFjdGlvblRlc3RzLCBIYW5kbGVzRGF0YUludGVyYWN0aW9uRmFpbHVyZUdyYWNlZnVsbHkpCit7
CisgICAgUmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdL
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKV0p
OworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAImxpbmstYW5k
LWlucHV0Il07CisKKyAgICBSZXRhaW5QdHI8RGF0YUludGVyYWN0aW9uU2ltdWxhdG9yPiBkYXRh
SW50ZXJhY3Rpb25TaW11bGF0b3IgPSBhZG9wdE5TKFtbRGF0YUludGVyYWN0aW9uU2ltdWxhdG9y
IGFsbG9jXSBpbml0V2l0aFdlYlZpZXc6d2ViVmlldy5nZXQoKV0pOworICAgIFtkYXRhSW50ZXJh
Y3Rpb25TaW11bGF0b3Igc2V0Rm9yY2VSZXF1ZXN0VG9GYWlsOllFU107CisgICAgW2RhdGFJbnRl
cmFjdGlvblNpbXVsYXRvciBydW5Gcm9tOkNHUG9pbnRNYWtlKDEwMCwgNTApIHRvOkNHUG9pbnRN
YWtlKDEwMCwgMzAwKV07CisgICAgRVhQRUNUX1dLX1NUUkVRKCIiLCBbd2ViVmlldyBlZGl0b3JW
YWx1ZV0uVVRGOFN0cmluZyk7CisKKyAgICAvLyBCZWZvcmUgcjIxMjI2Niwgc3RhcnRpbmcgYSBz
dWJzZXF1ZW50IGdlc3R1cmUgd291bGQgaGF2ZSBjYXVzZWQgYSBkZWJ1ZyBhc3NlcnRpb24gaW4g
dGhlIHdlYiBwcm9jZXNzLgorICAgIFtkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3Igc2V0Rm9yY2VS
ZXF1ZXN0VG9GYWlsOk5PXTsKKyAgICBbZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIHJ1bkZyb206
Q0dQb2ludE1ha2UoMTAwLCA1MCkgdG86Q0dQb2ludE1ha2UoMTAwLCAzMDApXTsKKyAgICBFWFBF
Q1RfV0tfU1RSRVEoImh0dHBzOi8vd3d3LmRhcmluZ2ZpcmViYWxsLm5ldC8iLCBbd2ViVmlldyBl
ZGl0b3JWYWx1ZV0uVVRGOFN0cmluZyk7Cit9CisKK1RFU1QoRGF0YUludGVyYWN0aW9uVGVzdHMs
IEV4dGVybmFsU291cmNlVVRGOFBsYWluVGV4dE9ubHkpCit7CisgICAgUmV0YWluUHRyPFRlc3RX
S1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdp
dGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKV0pOworICAgIFt3ZWJWaWV3IHN5bmNo
cm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAImF1dG9mb2N1cy1jb250ZW50ZWRpdGFibGUiXTsK
IAotICAgICAgICBSZXRhaW5QdHI8RGF0YUludGVyYWN0aW9uU2ltdWxhdG9yPiBkYXRhSW50ZXJh
Y3Rpb25TaW11bGF0b3IgPSBhZG9wdE5TKFtbRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIGFsbG9j
XSBpbml0V2l0aFdlYlZpZXc6d2ViVmlldy5nZXQoKSBzdGFydExvY2F0aW9uOkNHUG9pbnRNYWtl
KDEwMCwgMTAwKSBlbmRMb2NhdGlvbjpDR1BvaW50TWFrZSgxMDAsIDMwMCldKTsKLSAgICAgICAg
W2RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBydW5dOworICAgIE5TU3RyaW5nICp0ZXh0UGF5bG9h
ZCA9IEAiQ2VjaSBuJ2VzdCBwYXMgdW5lIHN0cmluZyI7CisgICAgUmV0YWluUHRyPERhdGFJbnRl
cmFjdGlvblNpbXVsYXRvcj4gZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yID0gYWRvcHROUyhbW0Rh
dGFJbnRlcmFjdGlvblNpbXVsYXRvciBhbGxvY10gaW5pdFdpdGhXZWJWaWV3OndlYlZpZXcuZ2V0
KCldKTsKKyAgICBSZXRhaW5QdHI8VUlJdGVtUHJvdmlkZXI+IHNpbXVsYXRlZEl0ZW1Qcm92aWRl
ciA9IGFkb3B0TlMoW1tVSUl0ZW1Qcm92aWRlciBhbGxvY10gaW5pdF0pOworICAgIFtzaW11bGF0
ZWRJdGVtUHJvdmlkZXIgcmVnaXN0ZXJEYXRhUmVwcmVzZW50YXRpb25Gb3JUeXBlSWRlbnRpZmll
cjooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlVVRGOFBsYWluVGV4dCBvcHRpb25zOm5pbCBs
b2FkSGFuZGxlcjpeTlNQcm9ncmVzcyAqKFVJSXRlbVByb3ZpZGVyRGF0YUxvYWRDb21wbGV0aW9u
QmxvY2sgY29tcGxldGlvbkJsb2NrKQorICAgIHsKKyAgICAgICAgY29tcGxldGlvbkJsb2NrKFt0
ZXh0UGF5bG9hZCBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10sIG5pbCk7
CisgICAgICAgIHJldHVybiBbTlNQcm9ncmVzcyBkaXNjcmV0ZVByb2dyZXNzV2l0aFRvdGFsVW5p
dENvdW50OjEwMF07CisgICAgfV07CisgICAgW2RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBzZXRF
eHRlcm5hbEl0ZW1Qcm92aWRlcjpzaW11bGF0ZWRJdGVtUHJvdmlkZXIuZ2V0KCldOworICAgIFtk
YXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgcnVuRnJvbTpDR1BvaW50TWFrZSgzMDAsIDQwMCkgdG86
Q0dQb2ludE1ha2UoMTAwLCAzMDApXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEodGV4dFBheWxvYWQu
VVRGOFN0cmluZywgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImVkaXRv
ci50ZXh0Q29udGVudCJdLlVURjhTdHJpbmcpOworfQorCitURVNUKERhdGFJbnRlcmFjdGlvblRl
c3RzLCBFeHRlcm5hbFNvdXJjZUpQRUdPbmx5KQoreworICAgIFJldGFpblB0cjxUZXN0V0tXZWJW
aWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCldKTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91
c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJhdXRvZm9jdXMtY29udGVudGVkaXRhYmxlIl07CiAKLSAg
ICAgICAgRVhQRUNUX1dLX1NUUkVRKCJodHRwczovL3d3dy5kYXJpbmdmaXJlYmFsbC5uZXQvIiwg
W3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImVkaXRvci52YWx1ZSJdLlVU
RjhTdHJpbmcpOwotICAgIH0pOworICAgIFVJSW1hZ2UgKnRlc3RJbWFnZSA9IFtVSUltYWdlIGlt
YWdlTmFtZWQ6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcy9pY29uLnBuZyJdOworICAgIFJldGFp
blB0cjxEYXRhSW50ZXJhY3Rpb25TaW11bGF0b3I+IGRhdGFJbnRlcmFjdGlvblNpbXVsYXRvciA9
IGFkb3B0TlMoW1tEYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgYWxsb2NdIGluaXRXaXRoV2ViVmll
dzp3ZWJWaWV3LmdldCgpXSk7CisgICAgUmV0YWluUHRyPFVJSXRlbVByb3ZpZGVyPiBzaW11bGF0
ZWRJdGVtUHJvdmlkZXIgPSBhZG9wdE5TKFtbVUlJdGVtUHJvdmlkZXIgYWxsb2NdIGluaXRdKTsK
KyAgICBbc2ltdWxhdGVkSXRlbVByb3ZpZGVyIHJlZ2lzdGVyRGF0YVJlcHJlc2VudGF0aW9uRm9y
VHlwZUlkZW50aWZpZXI6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZUpQRUcgb3B0aW9uczpu
aWwgbG9hZEhhbmRsZXI6Xk5TUHJvZ3Jlc3MgKihVSUl0ZW1Qcm92aWRlckRhdGFMb2FkQ29tcGxl
dGlvbkJsb2NrIGNvbXBsZXRpb25CbG9jaykKKyAgICB7CisgICAgICAgIGNvbXBsZXRpb25CbG9j
ayhVSUltYWdlSlBFR1JlcHJlc2VudGF0aW9uKHRlc3RJbWFnZSwgMC41KSwgbmlsKTsKKyAgICAg
ICAgcmV0dXJuIFtOU1Byb2dyZXNzIGRpc2NyZXRlUHJvZ3Jlc3NXaXRoVG90YWxVbml0Q291bnQ6
MTAwXTsKKyAgICB9XTsKKyAgICBbZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIHNldEV4dGVybmFs
SXRlbVByb3ZpZGVyOnNpbXVsYXRlZEl0ZW1Qcm92aWRlci5nZXQoKV07CisgICAgW2RhdGFJbnRl
cmFjdGlvblNpbXVsYXRvciBydW5Gcm9tOkNHUG9pbnRNYWtlKDMwMCwgNDAwKSB0bzpDR1BvaW50
TWFrZSgxMDAsIDMwMCldOworICAgIEVYUEVDVF9UUlVFKFt3ZWJWaWV3IGVkaXRvckNvbnRhaW5z
SW1hZ2VFbGVtZW50XSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5oIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3LmgKaW5kZXggZTM4MzVjNGExOThiNmNk
NmE3YjQ2MDc3YjhkZGI1ZjliYjkzMTFjYS4uYjVmMTM0NzYxZTdhMjYwNGI5YjZkMDg2OGQ3ODM0
ZDFhYTJkMDZjNSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tX
ZWJWaWV3LmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3LmgK
QEAgLTMyLDYgKzMyLDcgQEAKIEBlbmQKIAogQGludGVyZmFjZSBUZXN0V0tXZWJWaWV3IDogV0tX
ZWJWaWV3CistICh2b2lkKWNsZWFyTWVzc2FnZUhhbmRsZXJzOihOU0FycmF5ICopbWVzc2FnZU5h
bWVzOwogLSAodm9pZClwZXJmb3JtQWZ0ZXJSZWNlaXZpbmdNZXNzYWdlOihOU1N0cmluZyAqKW1l
c3NhZ2UgYWN0aW9uOihkaXNwYXRjaF9ibG9ja190KWFjdGlvbjsKIC0gKHZvaWQpbG9hZFRlc3RQ
YWdlTmFtZWQ6KE5TU3RyaW5nICopcGFnZU5hbWU7CiAtICh2b2lkKXN5bmNocm9ub3VzbHlMb2Fk
VGVzdFBhZ2VOYW1lZDooTlNTdHJpbmcgKilwYWdlTmFtZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
Y29jb2EvVGVzdFdLV2ViVmlldy5tbQppbmRleCA5NWU5ZmFkMjk1ZGVkMGM2Nzk4ZDVkMjVkYWUy
NzIwMDA3OGNiNTZiLi41MjAyMTUyNjI1MTE2ZTNlNzhkYmNkZGY1YTlhNWY0YWRkNjljN2YxIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0KKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCkBAIC01OSw2ICs1
OSwxMSBAQCBTT0ZUX0xJTktfQ0xBU1MoVUlLaXQsIFVJV2luZG93KQogICAgIF9tZXNzYWdlSGFu
ZGxlcnNbbWVzc2FnZV0gPSBbaGFuZGxlciBjb3B5XTsKIH0KIAorLSAodm9pZClyZW1vdmVNZXNz
YWdlOihOU1N0cmluZyAqKW1lc3NhZ2UKK3sKKyAgICBbX21lc3NhZ2VIYW5kbGVycyByZW1vdmVP
YmplY3RGb3JLZXk6bWVzc2FnZV07Cit9CisKIC0gKHZvaWQpdXNlckNvbnRlbnRDb250cm9sbGVy
OihXS1VzZXJDb250ZW50Q29udHJvbGxlciAqKXVzZXJDb250ZW50Q29udHJvbGxlciBkaWRSZWNl
aXZlU2NyaXB0TWVzc2FnZTooV0tTY3JpcHRNZXNzYWdlICopbWVzc2FnZQogewogICAgIGRpc3Bh
dGNoX2Jsb2NrX3QgaGFuZGxlciA9IF9tZXNzYWdlSGFuZGxlcnNbbWVzc2FnZS5ib2R5XTsKQEAg
LTE4Nyw2ICsxOTIsMTIgQEAgTlNFdmVudE1hc2sgX19zaW11bGF0ZWRfZm9yY2VDbGlja0Fzc29j
aWF0ZWRFdmVudHNNYXNrKGlkIHNlbGYsIFNFTCBfY21kKQogI2VuZGlmCiB9CiAKKy0gKHZvaWQp
Y2xlYXJNZXNzYWdlSGFuZGxlcnM6KE5TQXJyYXkgKiltZXNzYWdlTmFtZXMKK3sKKyAgICBmb3Ig
KE5TU3RyaW5nICptZXNzYWdlTmFtZSBpbiBtZXNzYWdlTmFtZXMpCisgICAgICAgIFtfdGVzdEhh
bmRsZXIgcmVtb3ZlTWVzc2FnZTptZXNzYWdlTmFtZV07Cit9CisKIC0gKHZvaWQpcGVyZm9ybUFm
dGVyUmVjZWl2aW5nTWVzc2FnZTooTlNTdHJpbmcgKiltZXNzYWdlIGFjdGlvbjooZGlzcGF0Y2hf
YmxvY2tfdClhY3Rpb24KIHsKICAgICBpZiAoIV90ZXN0SGFuZGxlcikgewpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yLmggYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL2lvcy9EYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IuaAppbmRleCA3ODEx
MmJjMzgyNDQ3ODEwYmVjNzllZjdlMDI3ZTk0ZTZlZGRhYWNlLi43NDk0ZTc2YjkwZTgxN2QxNDU3
ZTMwNjhkODUxNGNlOGI3NGZiMDQ1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lv
cy9EYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lv
cy9EYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IuaApAQCAtMjUsOSArMjUsOSBAQAogCiAjaWYgRU5B
QkxFKERBVEFfSU5URVJBQ1RJT04pCiAKKyNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKICNpbXBv
cnQgPFVJS2l0L1VJSXRlbVByb3ZpZGVyLmg+CiAjaW1wb3J0IDxVSUtpdC9VSUtpdC5oPgotI2lt
cG9ydCA8V2ViS2l0L1dlYktpdC5oPgogI2ltcG9ydCA8V2ViS2l0L19XS1Rlc3RpbmdEZWxlZ2F0
ZS5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAKQEAgLTM3LDYgKzM3LDggQEAKIGV4dGVy
biBOU1N0cmluZyAqIGNvbnN0IERhdGFJbnRlcmFjdGlvbkVudGVyRXZlbnROYW1lOwogZXh0ZXJu
IE5TU3RyaW5nICogY29uc3QgRGF0YUludGVyYWN0aW9uT3ZlckV2ZW50TmFtZTsKIGV4dGVybiBO
U1N0cmluZyAqIGNvbnN0IERhdGFJbnRlcmFjdGlvblBlcmZvcm1PcGVyYXRpb25FdmVudE5hbWU7
CitleHRlcm4gTlNTdHJpbmcgKiBjb25zdCBEYXRhSW50ZXJhY3Rpb25MZWF2ZUV2ZW50TmFtZTsK
K2V4dGVybiBOU1N0cmluZyAqIGNvbnN0IERhdGFJbnRlcmFjdGlvblN0YXJ0RXZlbnROYW1lOwog
CiB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBEYXRhSW50ZXJhY3Rpb25QaGFzZSkgewogICAg
IERhdGFJbnRlcmFjdGlvblVucmVjb2duaXplZCA9IDEsCkBAIC00NiwxOSArNDgsMjYgQEAgdHlw
ZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgRGF0YUludGVyYWN0aW9uUGhhc2UpIHsKIH07CiAKIEBp
bnRlcmZhY2UgRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIDogTlNPYmplY3Q8X1dLVGVzdGluZ0Rl
bGVnYXRlPiB7Ci0gICAgUmV0YWluUHRyPFdLV2ViVmlldz4gX3dlYlZpZXc7CisgICAgUmV0YWlu
UHRyPFRlc3RXS1dlYlZpZXc+IF93ZWJWaWV3OwogICAgIFJldGFpblB0cjxNb2NrTG9uZ1ByZXNz
R2VzdHVyZVJlY29nbml6ZXI+IF9nZXN0dXJlUmVjb2duaXplcjsKICAgICBSZXRhaW5QdHI8TW9j
a0RhdGFJbnRlcmFjdGlvbkluZm8+IF9kYXRhSW50ZXJhY3Rpb25JbmZvOworICAgIFJldGFpblB0
cjxOU011dGFibGVBcnJheT4gX29ic2VydmVkRXZlbnROYW1lczsKKyAgICBSZXRhaW5QdHI8VUlJ
dGVtUHJvdmlkZXI+IF9leHRlcm5hbEl0ZW1Qcm92aWRlcjsKICAgICBDR1BvaW50IF9zdGFydExv
Y2F0aW9uOwogICAgIENHUG9pbnQgX2VuZExvY2F0aW9uOwogCiAgICAgZG91YmxlIF9nZXN0dXJl
UHJvZ3Jlc3M7Ci0gICAgYm9vbCBfaXNEb25lV2l0aERhdGFJbnRlcmFjdGlvbjsKKyAgICBib29s
IF9pc0RvbmVXaXRoQ3VycmVudFJ1bjsKICAgICBEYXRhSW50ZXJhY3Rpb25QaGFzZSBfcGhhc2U7
CiB9CiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZp
ZXcgc3RhcnRMb2NhdGlvbjooQ0dQb2ludClzdGFydExvY2F0aW9uIGVuZExvY2F0aW9uOihDR1Bv
aW50KWVuZExvY2F0aW9uOwotLSAodm9pZClydW47CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhX
ZWJWaWV3OihUZXN0V0tXZWJWaWV3ICopd2ViVmlldzsKKy0gKHZvaWQpcnVuRnJvbTooQ0dQb2lu
dClzdGFydExvY2F0aW9uIHRvOihDR1BvaW50KWVuZExvY2F0aW9uOworCitAcHJvcGVydHkgKG5v
bmF0b21pYykgQk9PTCBmb3JjZVJlcXVlc3RUb0ZhaWw7CitAcHJvcGVydHkgKG5vbmF0b21pYywg
c3Ryb25nKSBVSUl0ZW1Qcm92aWRlciAqZXh0ZXJuYWxJdGVtUHJvdmlkZXI7CitAcHJvcGVydHkg
KG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgZGlkVHJ5VG9CZWdpbkRhdGFJbnRlcmFjdGlvbjsK
K0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNBcnJheSAqb2JzZXJ2ZWRFdmVudE5h
bWVzOwogCiBAZW5kCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL0RhdGFJ
bnRlcmFjdGlvblNpbXVsYXRvci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL0RhdGFJbnRl
cmFjdGlvblNpbXVsYXRvci5tbQppbmRleCA1ZGMzMGJhNzM2YWMyYjMzN2FhNjE1OWQ0M2QwYzhk
ZmNhZGRkNjdhLi5lNmI1ODFkNTA0NjQ5YzljYTNhOWNlMmZmNDIyOGMwN2QwMjBmMzRmIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9EYXRhSW50ZXJhY3Rpb25TaW11bGF0b3Iu
bW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvRGF0YUludGVyYWN0aW9uU2ltdWxhdG9y
Lm1tCkBAIC04MCwxNyArODAsMjUgQEAgdXNpbmcgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEk7CiBA
ZW5kCiAKIHN0YXRpYyBkb3VibGUgcHJvZ3Jlc3NJbmNyZW1lbnRTdGVwID0gMC4wMzM7Ci1zdGF0
aWMgZG91YmxlIHByb2dyZXNzVGltZVN0ZXAgPSAwLjAzOworc3RhdGljIGRvdWJsZSBwcm9ncmVz
c1RpbWVTdGVwID0gMC4wMTY7CisKK3N0YXRpYyBOU0FycmF5ICpkYXRhSW50ZXJhY3Rpb25FdmVu
dE5hbWVzKCkKK3sKKyAgICBzdGF0aWMgTlNBcnJheSAqZXZlbnROYW1lcyA9IG5pbDsKKyAgICBz
dGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKKyAgICBkaXNwYXRjaF9vbmNlKCZvbmNl
VG9rZW4sIF4oKSB7CisgICAgICAgIGV2ZW50TmFtZXMgPSBAWyBEYXRhSW50ZXJhY3Rpb25FbnRl
ckV2ZW50TmFtZSwgRGF0YUludGVyYWN0aW9uT3ZlckV2ZW50TmFtZSwgRGF0YUludGVyYWN0aW9u
UGVyZm9ybU9wZXJhdGlvbkV2ZW50TmFtZSwgRGF0YUludGVyYWN0aW9uTGVhdmVFdmVudE5hbWUs
IERhdGFJbnRlcmFjdGlvblN0YXJ0RXZlbnROYW1lIF07CisgICAgfSk7CisgICAgcmV0dXJuIGV2
ZW50TmFtZXM7Cit9CiAKIEBpbXBsZW1lbnRhdGlvbiBEYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IK
IAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoV2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBz
dGFydExvY2F0aW9uOihDR1BvaW50KXN0YXJ0TG9jYXRpb24gZW5kTG9jYXRpb246KENHUG9pbnQp
ZW5kTG9jYXRpb24KKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdlYlZpZXc6KFRlc3RXS1dlYlZp
ZXcgKil3ZWJWaWV3CiB7CiAgICAgaWYgKHNlbGYgPSBbc3VwZXIgaW5pdF0pIHsKICAgICAgICAg
X3dlYlZpZXcgPSB3ZWJWaWV3OwogICAgICAgICBfZ2VzdHVyZVJlY29nbml6ZXIgPSBhZG9wdE5T
KFtbTW9ja0xvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyIGFsbG9jXSBpbml0V2l0aFdpbmRvdzp3
ZWJWaWV3LndpbmRvd10pOwotICAgICAgICBfc3RhcnRMb2NhdGlvbiA9IHN0YXJ0TG9jYXRpb247
Ci0gICAgICAgIF9lbmRMb2NhdGlvbiA9IGVuZExvY2F0aW9uOwogCiAgICAgICAgIFtfZ2VzdHVy
ZVJlY29nbml6ZXIgc2V0TW9ja051bWJlck9mVG91Y2hlczowXTsKICAgICAgICAgW193ZWJWaWV3
IF9zZXRUZXN0aW5nRGVsZWdhdGU6c2VsZl07CkBAIC0xMDYsMTggKzExNCw0NyBAQCBzdGF0aWMg
ZG91YmxlIHByb2dyZXNzVGltZVN0ZXAgPSAwLjAzOwogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0K
IAotLSAodm9pZClydW4KKy0gKHZvaWQpX3Jlc2V0U2ltdWxhdGVkU3RhdGUKIHsKICAgICBfZ2Vz
dHVyZVByb2dyZXNzID0gMDsKICAgICBfcGhhc2UgPSBEYXRhSW50ZXJhY3Rpb25VbnJlY29nbml6
ZWQ7Ci0gICAgX2lzRG9uZVdpdGhEYXRhSW50ZXJhY3Rpb24gPSBOTzsKKyAgICBfaXNEb25lV2l0
aEN1cnJlbnRSdW4gPSBmYWxzZTsKKyAgICBfZGlkVHJ5VG9CZWdpbkRhdGFJbnRlcmFjdGlvbiA9
IE5POworICAgIF9vYnNlcnZlZEV2ZW50TmFtZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkg
YWxsb2NdIGluaXRdKTsKK30KKworLSAoTlNBcnJheSAqKW9ic2VydmVkRXZlbnROYW1lcworewor
ICAgIHJldHVybiBfb2JzZXJ2ZWRFdmVudE5hbWVzLmdldCgpOworfQorCistICh2b2lkKXJ1bkZy
b206KENHUG9pbnQpc3RhcnRMb2NhdGlvbiB0bzooQ0dQb2ludCllbmRMb2NhdGlvbgoreworICAg
IFtzZWxmIF9yZXNldFNpbXVsYXRlZFN0YXRlXTsKKworICAgIFJldGFpblB0cjxEYXRhSW50ZXJh
Y3Rpb25TaW11bGF0b3I+IHN0cm9uZ1NlbGYgPSBzZWxmOworICAgIGZvciAoTlNTdHJpbmcgKmV2
ZW50TmFtZSBpbiBkYXRhSW50ZXJhY3Rpb25FdmVudE5hbWVzKCkpIHsKKyAgICAgICAgRGF0YUlu
dGVyYWN0aW9uU2ltdWxhdG9yICp3ZWFrU2VsZiA9IHN0cm9uZ1NlbGYuZ2V0KCk7CisgICAgICAg
IFt3ZWFrU2VsZi0+X3dlYlZpZXcgcGVyZm9ybUFmdGVyUmVjZWl2aW5nTWVzc2FnZTpldmVudE5h
bWUgYWN0aW9uOl4oKSB7CisgICAgICAgICAgICBbd2Vha1NlbGYtPl9vYnNlcnZlZEV2ZW50TmFt
ZXMgYWRkT2JqZWN0OmV2ZW50TmFtZV07CisgICAgICAgIH1dOworICAgIH0KKworICAgIF9zdGFy
dExvY2F0aW9uID0gc3RhcnRMb2NhdGlvbjsKKyAgICBfZW5kTG9jYXRpb24gPSBlbmRMb2NhdGlv
bjsKICAgICBbX2dlc3R1cmVSZWNvZ25pemVyIHNldE1vY2tOdW1iZXJPZlRvdWNoZXM6MV07CiAK
LSAgICBbc2VsZiBfcmVjb2duaXplR2VzdHVyZUF0TG9jYXRpb246X3N0YXJ0TG9jYXRpb24gd2l0
aFN0YXRlOlVJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZUJlZ2FuXTsKKyAgICBpZiAoc2VsZi5leHRl
cm5hbEl0ZW1Qcm92aWRlcikgeworICAgICAgICBfcGhhc2UgPSBEYXRhSW50ZXJhY3Rpb25CZWdh
bjsKKyAgICAgICAgX2RhdGFJbnRlcmFjdGlvbkluZm8gPSBhZG9wdE5TKFtbTW9ja0RhdGFJbnRl
cmFjdGlvbkluZm8gYWxsb2NdIGluaXRXaXRoUHJvdmlkZXI6c2VsZi5leHRlcm5hbEl0ZW1Qcm92
aWRlciBsb2NhdGlvbjpzdGFydExvY2F0aW9uIHdpbmRvdzpbX3dlYlZpZXcgd2luZG93XV0pOwor
ICAgIH0gZWxzZQorICAgICAgICBbc2VsZiBfcmVjb2duaXplR2VzdHVyZUF0TG9jYXRpb246X3N0
YXJ0TG9jYXRpb24gd2l0aFN0YXRlOlVJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZUJlZ2FuXTsKKwog
ICAgIFtzZWxmIF9zY2hlZHVsZUFkdmFuY2VQcm9ncmVzc107CiAKLSAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJl9pc0RvbmVXaXRoRGF0YUludGVyYWN0aW9uKTsKKyAgICBVdGlsOjpydW4o
Jl9pc0RvbmVXaXRoQ3VycmVudFJ1bik7CiAgICAgW19nZXN0dXJlUmVjb2duaXplciBzZXRNb2Nr
TnVtYmVyT2ZUb3VjaGVzOjBdOworICAgIFtfd2ViVmlldyBjbGVhck1lc3NhZ2VIYW5kbGVyczpk
YXRhSW50ZXJhY3Rpb25FdmVudE5hbWVzKCldOwogfQogCiAtICh2b2lkKV9hZHZhbmNlUHJvZ3Jl
c3MKQEAgLTE0MCw3ICsxNzcsNiBAQCBzdGF0aWMgZG91YmxlIHByb2dyZXNzVGltZVN0ZXAgPSAw
LjAzOwogICAgICAgICBbc2VsZiBfc2NoZWR1bGVBZHZhbmNlUHJvZ3Jlc3NdOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIERhdGFJbnRlcmFjdGlvbkVudGVyZWQ6Ci0gICAgICAgIFtfZGF0YUlu
dGVyYWN0aW9uSW5mbyBzZXRNb2NrTG9jYXRpb25JbldpbmRvdzpzZWxmLl9jdXJyZW50TG9jYXRp
b25dOwogICAgICAgICBbX3dlYlZpZXcgX3NpbXVsYXRlRGF0YUludGVyYWN0aW9uVXBkYXRlZDpf
ZGF0YUludGVyYWN0aW9uSW5mby5nZXQoKV07CiAgICAgICAgIFtzZWxmIF9zY2hlZHVsZUFkdmFu
Y2VQcm9ncmVzc107CiAgICAgICAgIGJyZWFrOwpAQCAtMTUxLDYgKzE4NywxMiBAQCBzdGF0aWMg
ZG91YmxlIHByb2dyZXNzVGltZVN0ZXAgPSAwLjAzOwogCiAtICh2b2lkKV9maW5pc2hEYXRhSW50
ZXJhY3Rpb24KIHsKKyAgICBpZiAoX3BoYXNlID09IERhdGFJbnRlcmFjdGlvblVucmVjb2duaXpl
ZCkgeworICAgICAgICBbc2VsZiBfcmVjb2duaXplR2VzdHVyZUF0TG9jYXRpb246c2VsZi5fY3Vy
cmVudExvY2F0aW9uIHdpdGhTdGF0ZTpVSUdlc3R1cmVSZWNvZ25pemVyU3RhdGVFbmRlZF07Cisg
ICAgICAgIF9pc0RvbmVXaXRoQ3VycmVudFJ1biA9IHRydWU7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKICAgICBfcGhhc2UgPSBEYXRhSW50ZXJhY3Rpb25QZXJmb3JtaW5nOwogICAgIFtfd2Vi
VmlldyBfc2ltdWxhdGVEYXRhSW50ZXJhY3Rpb25QZXJmb3JtT3BlcmF0aW9uOl9kYXRhSW50ZXJh
Y3Rpb25JbmZvLmdldCgpXTsKICAgICBbX3dlYlZpZXcgX3NpbXVsYXRlRGF0YUludGVyYWN0aW9u
RW5kZWQ6X2RhdGFJbnRlcmFjdGlvbkluZm8uZ2V0KCldOwpAQCAtMTc3LDYgKzIxOSwxNiBAQCBz
dGF0aWMgZG91YmxlIHByb2dyZXNzVGltZVN0ZXAgPSAwLjAzOwogICAgIFtfd2ViVmlldyBfc2lt
dWxhdGVEYXRhSW50ZXJhY3Rpb25HZXN0dXJlUmVjb2duaXplZF07CiB9CiAKKy0gKFVJSXRlbVBy
b3ZpZGVyICopZXh0ZXJuYWxJdGVtUHJvdmlkZXIKK3sKKyAgICByZXR1cm4gX2V4dGVybmFsSXRl
bVByb3ZpZGVyLmdldCgpOworfQorCistICh2b2lkKXNldEV4dGVybmFsSXRlbVByb3ZpZGVyOihV
SUl0ZW1Qcm92aWRlciAqKWV4dGVybmFsSXRlbVByb3ZpZGVyCit7CisgICAgX2V4dGVybmFsSXRl
bVByb3ZpZGVyID0gZXh0ZXJuYWxJdGVtUHJvdmlkZXI7Cit9CisKICNwcmFnbWEgbWFyayAtIF9X
S1Rlc3RpbmdEZWxlZ2F0ZQogCiAtIChVSUxvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyICopZGF0
YUludGVyYWN0aW9uR2VzdHVyZVJlY29nbml6ZXIKQEAgLTE4NiwxMSArMjM4LDE4IEBAIHN0YXRp
YyBkb3VibGUgcHJvZ3Jlc3NUaW1lU3RlcCA9IDAuMDM7CiAKIC0gKHZvaWQpd2ViVmlld0RpZFBl
cmZvcm1EYXRhSW50ZXJhY3Rpb25Db250cm9sbGVyT3BlcmF0aW9uOihXS1dlYlZpZXcgKil3ZWJW
aWV3CiB7Ci0gICAgX2lzRG9uZVdpdGhEYXRhSW50ZXJhY3Rpb24gPSB0cnVlOworICAgIF9pc0Rv
bmVXaXRoQ3VycmVudFJ1biA9IHRydWU7CiB9CiAKIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3
ICopd2ViVmlldyBiZWdpbkRhdGFJbnRlcmFjdGlvbldpdGhTb3VyY2VJbmRleDooTlNJbnRlZ2Vy
KXNvdXJjZUluZGV4IGdlc3R1cmVSZWNvZ25pemVyOihVSUdlc3R1cmVSZWNvZ25pemVyICopZ2Vz
dHVyZVJlY29nbml6ZXIKIHsKKyAgICBfZGlkVHJ5VG9CZWdpbkRhdGFJbnRlcmFjdGlvbiA9IFlF
UzsKKworICAgIGlmIChzZWxmLmZvcmNlUmVxdWVzdFRvRmFpbCkgeworICAgICAgICBbX3dlYlZp
ZXcgX3NpbXVsYXRlRmFpbGVkRGF0YUludGVyYWN0aW9uV2l0aEluZGV4OnNvdXJjZUluZGV4XTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIF9waGFzZSA9IERhdGFJbnRlcmFjdGlvbkJl
Z2FuOwogCiAgICAgLy8gRW5kIHRoZSBkYXRhIGludGVyYWN0aW9uIGdlc3R1cmUgcmVjb2duaXpl
ci4KQEAgLTIwMyw2ICsyNjIsMjAgQEAgc3RhdGljIGRvdWJsZSBwcm9ncmVzc1RpbWVTdGVwID0g
MC4wMzsKICAgICBbX3dlYlZpZXcgX3NpbXVsYXRlV2lsbEJlZ2luRGF0YUludGVyYWN0aW9uV2l0
aEluZGV4OnNvdXJjZUluZGV4IHdpdGhTZXNzaW9uOm5pbF07CiB9CiAKKy0gKHZvaWQpd2ViVmll
d0RpZFNlbmREYXRhSW50ZXJhY3Rpb25TdGFydFJlcXVlc3Q6KFdLV2ViVmlldyAqKXdlYlZpZXcK
K3sKKyAgICAvLyBUaGlzIGFkZHJlc3NlcyBhIHJhY2UgY29uZGl0aW9uIGluIHRoZSB0ZXN0aW5n
IGhhcm5lc3Mgd2hlcmVpbiB0aGUgd2ViIHByb2Nlc3MgbWlnaHQgdGFrZSBsb25nZXIgdGhhbiB1
c3VhbCB0byBwcm9jZXNzIHRoZQorICAgIC8vIHJlcXVlc3QgdG8gc3RhcnQgZGF0YSBpbnRlcmFj
dGlvbiwgYW5kIGluIHRoZSBtZWFudGltZSwgRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIHdvdWxk
IGVuZCB1cCBjb21wbGV0aW5nIHRoZSByZXN0IG9mIHRoZSB0ZXN0CisgICAgLy8gYmVmb3JlIGEg
cmVzcG9uc2UgZnJvbSB0aGUgd2ViIHByb2Nlc3MgaXMgcmVjZWl2ZWQuIFdlIGluc3RlYWQgZGVm
ZXIgdGVzdCBwcm9ncmVzcyB1bnRpbCBhZnRlciB0aGUgd2ViIHByb2Nlc3MgaGFzIGluZGljYXRl
ZAorICAgIC8vIHdoZXRoZXIgb3Igbm90IGRhdGEgaW50ZXJhY3Rpb24gc2hvdWxkIGNvbW1lbmNl
LgorICAgIFtOU09iamVjdCBjYW5jZWxQcmV2aW91c1BlcmZvcm1SZXF1ZXN0c1dpdGhUYXJnZXQ6
c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoX2FkdmFuY2VQcm9ncmVzcykgb2JqZWN0Om5pbF07Cit9
CisKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRSZWNlaXZlRGF0YUlu
dGVyYWN0aW9uU3RhcnRSZXNwb25zZTooQk9PTClzdGFydGVkCit7CisgICAgW3NlbGYgX3NjaGVk
dWxlQWR2YW5jZVByb2dyZXNzXTsKK30KKwogQGVuZAogCiAjZW5kaWYgLy8gRU5BQkxFKERBVEFf
SU5URVJBQ1RJT04pCg==
</data>
<flag name="review"
          id="323585"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>