<?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>170387</bug_id>
          
          <creation_ts>2017-04-01 17:49:32 -0700</creation_ts>
          <short_desc>[Cocoa] Allow clients to specify in _WKProcessPoolConfiguration additional directory sandbox extensions</short_desc>
          <delta_ts>2017-06-07 15:23:38 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=170856</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=173078</see_also>
          <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>mitz</reporter>
          <assigned_to>mitz</assigned_to>
          <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>sam</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1293498</commentid>
    <comment_count>0</comment_count>
    <who name="">mitz</who>
    <bug_when>2017-04-01 17:49:32 -0700</bug_when>
    <thetext>A client with a an injected bundle would like Web Content processes that load its bundle to have read access to additional directories which the bundle code needs. We can add _WKProcessPoolConfiguration API for specifying an array of file URLs of additional directories for which to grant a sandbox extension to the Web process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1297314</commentid>
    <comment_count>1</comment_count>
      <attachid>307089</attachid>
    <who name="">mitz</who>
    <bug_when>2017-04-13 21:17:02 -0700</bug_when>
    <thetext>Created attachment 307089
Add additionalReadAccessAllowedURLs property to _WKProcessPoolConfiguration</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1297317</commentid>
    <comment_count>2</comment_count>
      <attachid>307089</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-04-13 21:27:41 -0700</bug_when>
    <thetext>Comment on attachment 307089
Add additionalReadAccessAllowedURLs property to _WKProcessPoolConfiguration

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

&gt; Source/WebKit2/UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm:121
&gt; +    paths.reserveCapacity(additionalReadAccessAllowedURLs.count);

This can use reserveInitialCapacity for a little bit of a speed bump.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1297318</commentid>
    <comment_count>3</comment_count>
      <attachid>307089</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-04-13 21:28:46 -0700</bug_when>
    <thetext>Comment on attachment 307089
Add additionalReadAccessAllowedURLs property to _WKProcessPoolConfiguration

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

&gt; Source/WebKit2/Shared/WebProcessCreationParameters.h:68
&gt; +    SandboxExtension::HandleArray additionalSandboxExtensionHandles;

Unrelated, but we really should get rid of HandleArray since we now know how to deal with move-only types in Vector :).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1297319</commentid>
    <comment_count>4</comment_count>
      <attachid>307089</attachid>
    <who name="">mitz</who>
    <bug_when>2017-04-13 21:31:14 -0700</bug_when>
    <thetext>Comment on attachment 307089
Add additionalReadAccessAllowedURLs property to _WKProcessPoolConfiguration

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

&gt;&gt; Source/WebKit2/Shared/WebProcessCreationParameters.h:68
&gt;&gt; +    SandboxExtension::HandleArray additionalSandboxExtensionHandles;
&gt; 
&gt; Unrelated, but we really should get rid of HandleArray since we now know how to deal with move-only types in Vector :).

I didn’t even know about HandleArray when I wrote this as a plain Vector&lt;SandboxExtension::Handle&gt;, but then things broke at runtime, so I switched to HandleArray.

&gt;&gt; Source/WebKit2/UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm:121
&gt;&gt; +    paths.reserveCapacity(additionalReadAccessAllowedURLs.count);
&gt; 
&gt; This can use reserveInitialCapacity for a little bit of a speed bump.

Will bump.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1297320</commentid>
    <comment_count>5</comment_count>
    <who name="">mitz</who>
    <bug_when>2017-04-13 21:33:20 -0700</bug_when>
    <thetext>Committed &lt;https://trac.webkit.org/r215355&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1297321</commentid>
    <comment_count>6</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-04-13 21:37:38 -0700</bug_when>
    <thetext>(In reply to mitz from comment #4)
&gt; Comment on attachment 307089 [details]
&gt; Add additionalReadAccessAllowedURLs property to _WKProcessPoolConfiguration
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=307089&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit2/Shared/WebProcessCreationParameters.h:68
&gt; &gt;&gt; +    SandboxExtension::HandleArray additionalSandboxExtensionHandles;
&gt; &gt; 
&gt; &gt; Unrelated, but we really should get rid of HandleArray since we now know how to deal with move-only types in Vector :).
&gt; 
&gt; I didn’t even know about HandleArray when I wrote this as a plain
&gt; Vector&lt;SandboxExtension::Handle&gt;, but then things broke at runtime, so I
&gt; switched to HandleArray.

Broke you say. I wonder if we need to teach Handle to move correctly. If you remember / know, what broke?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1297322</commentid>
    <comment_count>7</comment_count>
    <who name="">mitz</who>
    <bug_when>2017-04-13 21:39:18 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #6)
&gt; (In reply to mitz from comment #4)
&gt; &gt; Comment on attachment 307089 [details]
&gt; &gt; Add additionalReadAccessAllowedURLs property to _WKProcessPoolConfiguration
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=307089&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt; Source/WebKit2/Shared/WebProcessCreationParameters.h:68
&gt; &gt; &gt;&gt; +    SandboxExtension::HandleArray additionalSandboxExtensionHandles;
&gt; &gt; &gt; 
&gt; &gt; &gt; Unrelated, but we really should get rid of HandleArray since we now know how to deal with move-only types in Vector :).
&gt; &gt; 
&gt; &gt; I didn’t even know about HandleArray when I wrote this as a plain
&gt; &gt; Vector&lt;SandboxExtension::Handle&gt;, but then things broke at runtime, so I
&gt; &gt; switched to HandleArray.
&gt; 
&gt; Broke you say. I wonder if we need to teach Handle to move correctly. If you
&gt; remember / know, what broke?

The underlying platform object was getting double-freed, probably meaning that the “move” didn’t clear the pointer in the donor handle?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1299903</commentid>
    <comment_count>8</comment_count>
    <who name="">mitz</who>
    <bug_when>2017-04-21 14:38:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/13191458&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>307089</attachid>
            <date>2017-04-13 21:17:02 -0700</date>
            <delta_ts>2017-04-13 21:27:41 -0700</delta_ts>
            <desc>Add additionalReadAccessAllowedURLs property to _WKProcessPoolConfiguration</desc>
            <filename>bug-170387-20170413211702.patch</filename>
            <type>text/plain</type>
            <size>30735</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNTM1MSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBACisyMDE3LTA0LTEzICBEYW4gQmVy
bnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBBbGxvdyBjbGllbnRz
IHRvIHNwZWNpZnkgaW4gX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFkZGl0aW9uYWwgZGly
ZWN0b3J5IHNhbmRib3ggZXh0ZW5zaW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTcwMzg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGVzdDogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2Ev
QWRkaXRpb25hbFJlYWRBY2Nlc3NBbGxvd2VkVVJMcy5tbQorCisgICAgICAgIEFkZGVkIGFuIGFk
ZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFVSTHMgcHJvcGVydHkgdG8gX1dLUHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uLgorCisgICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
OjplbmNvZGUpOiBFbmNvZGUgdGhlIG5ldworICAgICAgICAgIGFkZGl0aW9uYWxTYW5kYm94RXh0
ZW5zaW9uSGFuZGxlcyBtZW1iZXIuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnM6OmRlY29kZSk6IERlY29kZSBpdC4KKyAgICAgICAgKiBTaGFyZWQvV2ViUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oOiBBZGRlZCBhZGRpdGlvbmFsU2FuZGJveEV4dGVuc2lv
bkhhbmRsZXMgbWVtYmVyLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24uY3BwOgorICAgICAgICAoQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b246OmNvcHkpOiBDb3B5IG5ldyBtX2FkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFBhdGhzIG1l
bWJlci4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlv
bi5oOiBBZGRlZCBtX2FkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFBhdGhzCisgICAgICAgICAg
bWVtYmVyIGFuZCBhY2Nlc3NvciBmdW5jdGlvbnMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oOiBEZWNsYXJlZCBuZXcKKyAgICAg
ICAgICBhZGRpdGlvbmFsUmVhZEFjY2Vzc0FsbG93ZWRVUkxzIHByb3BlcnR5IHdob3NlIHZhbHVl
IGlzIGFuIGFycmF5IG9mIFVSTHMgdG8gd2hpY2ggdGhlIFdlYgorICAgICAgICAgIENvbnRlbnQg
cHJvY2VzcyB3aWxsIGJlIGdpdmVuIHJlYWQgYWNjZXNzLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLm1tOgorICAgICAgICAoLVtfV0tQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWRkaXRpb25hbFJlYWRBY2Nlc3NBbGxvd2VkVVJMc10p
OiBOZXcgZ2V0dGVyIHRoYXQgcmV0dXJucworICAgICAgICAgIGFuIGFycmF5IG9mIGZpbGUgVVJM
cyBmcm9tIHRoZSBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb27igJlzIGFkZGl0aW9uYWxSZWFkQWNj
ZXNzQWxsb3dlZFBhdGhzKCkuCisgICAgICAgICgtW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlv
biBzZXRBZGRpdGlvbmFsUmVhZEFjY2Vzc0FsbG93ZWRVUkxzOl0pOiBOZXcgc2V0dGVyIHRoYXQg
Y2hlY2tzCisgICAgICAgICAgdGhhdCB0aGUgZ2l2ZW4gVVJMcyBhcmUgZmlsZSBVUkxzIGFuZCBw
b3B1bGF0ZXMgdGhlIFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbuKAmXMKKyAgICAgICAgICBhZGRp
dGlvbmFsUmVhZEFjY2Vzc0FsbG93ZWRQYXRocyB3aXRoIHRoZWlyIHBhdGhzLgorCisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzc1Bvb2w6OnJlc29sdmVQYXRoc0ZvclNhbmRib3hFeHRlbnNpb25zKTogUG9wdWxhdGUgdGhl
IG5ldworICAgICAgICAgIG1fcmVzb2x2ZWRQYXRocy5hZGRpdGlvbmFsV2ViUHJvY2Vzc1NhbmRi
b3hFeHRlbnNpb25QYXRocyB3aXRoIHJlc29sdmVkIHBhdGhzIGZyb20gdGhlCisgICAgICAgICAg
UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u4oCZcyBhZGRpdGlvbmFsUmVhZEFjY2Vzc0FsbG93ZWRQ
YXRocy4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZU5ld1dlYlByb2Nl
c3MpOiBQb3B1bGF0ZSB0aGUgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyc+KAmXMKKyAgICAg
ICAgICBhZGRpdGlvbmFsU2FuZGJveEV4dGVuc2lvbkhhbmRsZXMgbWVtYmVyIHdpdGggcmVhZC1v
bmx5IHNhbmRib3ggZXh0ZW5zaW9ucyBjcmVhdGVkIGZyb20KKyAgICAgICAgICB0aGUgcmVzb2x2
ZWQgcGF0aHMuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6IEFkZGVkIGFk
ZGl0aW9uYWxXZWJQcm9jZXNzU2FuZGJveEV4dGVuc2lvblBhdGhzIG1lbWJlciB0bworICAgICAg
ICAgIHRoZSBQYXRocyBzdHJ1Y3QuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2Vzcyk6
IENvbnN1bWUgdGhlIGFkZGl0aW9uYWwgc2FuZGJveCBleHRlbnNpb25zLgorCiAyMDE3LTA0LTEz
ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
Rml4IENNYWtlIGJ1aWxkCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCShyZXZpc2lvbiAyMTUzNTEpCisrKyBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDcgQEAgdm9pZCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzOjplbmNvZAogewogICAgIGVuY29kZXIgPDwgaW5qZWN0ZWRCdW5kbGVQYXRoOwogICAg
IGVuY29kZXIgPDwgaW5qZWN0ZWRCdW5kbGVQYXRoRXh0ZW5zaW9uSGFuZGxlOworICAgIGVuY29k
ZXIgPDwgYWRkaXRpb25hbFNhbmRib3hFeHRlbnNpb25IYW5kbGVzOwogICAgIGVuY29kZXIgPDwg
aW5pdGlhbGl6YXRpb25Vc2VyRGF0YTsKICAgICBlbmNvZGVyIDw8IGFwcGxpY2F0aW9uQ2FjaGVE
aXJlY3Rvcnk7CiAgICAgZW5jb2RlciA8PCBhcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJl
Y3RvcnlOYW1lOwpAQCAtMTUxLDYgKzE1Miw4IEBAIGJvb2wgV2ViUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVyczo6ZGVjb2QKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocGFyYW1ldGVycy5pbmplY3RlZEJ1bmRsZVBhdGhFeHRlbnNpb25IYW5kbGUpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmFk
ZGl0aW9uYWxTYW5kYm94RXh0ZW5zaW9uSGFuZGxlcykpCisgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuaW5pdGlhbGl6YXRpb25Vc2VyRGF0
YSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFt
ZXRlcnMuYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSkpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHJldmlzaW9u
IDIxNTM1MSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTY1LDYgKzY1LDcgQEAgc3RydWN0IFdlYlByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMgewogCiAgICAgU3RyaW5nIGluamVjdGVkQnVuZGxlUGF0aDsK
ICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgaW5qZWN0ZWRCdW5kbGVQYXRoRXh0ZW5zaW9u
SGFuZGxlOworICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IGFkZGl0aW9uYWxTYW5k
Ym94RXh0ZW5zaW9uSGFuZGxlczsKIAogICAgIFVzZXJEYXRhIGluaXRpYWxpemF0aW9uVXNlckRh
dGE7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNw
cAkocmV2aXNpb24gMjE1MzUxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjE0LDYgKzYxNCwxMCBAQCB2b2lkIFdlYlBy
b2Nlc3NQb29sOjpyZXNvbHZlUGF0aHNGb3JTYW5kCiAgICAgbV9yZXNvbHZlZFBhdGhzLm1lZGlh
Q2FjaGVEaXJlY3RvcnkgPSByZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2Fu
ZGJveEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRpb24tPm1lZGlhQ2FjaGVEaXJlY3RvcnkoKSk7CiAg
ICAgbV9yZXNvbHZlZFBhdGhzLm1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeSA9IHJlc29sdmVBbmRD
cmVhdGVSZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlv
bi0+bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpKTsKIAorICAgIG1fcmVzb2x2ZWRQYXRocy5h
ZGRpdGlvbmFsV2ViUHJvY2Vzc1NhbmRib3hFeHRlbnNpb25QYXRocy5yZXNlcnZlQ2FwYWNpdHko
bV9jb25maWd1cmF0aW9uLT5hZGRpdGlvbmFsUmVhZEFjY2Vzc0FsbG93ZWRQYXRocygpLnNpemUo
KSk7CisgICAgZm9yIChjb25zdCBhdXRvJiBwYXRoIDogbV9jb25maWd1cmF0aW9uLT5hZGRpdGlv
bmFsUmVhZEFjY2Vzc0FsbG93ZWRQYXRocygpKQorICAgICAgICBtX3Jlc29sdmVkUGF0aHMuYWRk
aXRpb25hbFdlYlByb2Nlc3NTYW5kYm94RXh0ZW5zaW9uUGF0aHMudW5jaGVja2VkQXBwZW5kKHJl
c29sdmVQYXRoRm9yU2FuZGJveEV4dGVuc2lvbihwYXRoKSk7CisKICAgICBwbGF0Zm9ybVJlc29s
dmVQYXRoc0ZvclNhbmRib3hFeHRlbnNpb25zKCk7CiB9CiAKQEAgLTYzMiw2ICs2MzYsMTAgQEAg
V2ViUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlTgogICAgIGlmICghcGFyYW1l
dGVycy5pbmplY3RlZEJ1bmRsZVBhdGguaXNFbXB0eSgpKQogICAgICAgICBTYW5kYm94RXh0ZW5z
aW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChwYXJhbWV0ZXJzLmluamVjdGVk
QnVuZGxlUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6UmVhZE9ubHksIHBhcmFtZXRlcnMuaW5qZWN0
ZWRCdW5kbGVQYXRoRXh0ZW5zaW9uSGFuZGxlKTsKIAorICAgIHBhcmFtZXRlcnMuYWRkaXRpb25h
bFNhbmRib3hFeHRlbnNpb25IYW5kbGVzLmFsbG9jYXRlKG1fcmVzb2x2ZWRQYXRocy5hZGRpdGlv
bmFsV2ViUHJvY2Vzc1NhbmRib3hFeHRlbnNpb25QYXRocy5zaXplKCkpOworICAgIGZvciAoc2l6
ZV90IGkgPSAwLCBzaXplID0gbV9yZXNvbHZlZFBhdGhzLmFkZGl0aW9uYWxXZWJQcm9jZXNzU2Fu
ZGJveEV4dGVuc2lvblBhdGhzLnNpemUoKTsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgobV9yZXNvbHZlZFBh
dGhzLmFkZGl0aW9uYWxXZWJQcm9jZXNzU2FuZGJveEV4dGVuc2lvblBhdGhzW2ldLCBTYW5kYm94
RXh0ZW5zaW9uOjpSZWFkT25seSwgcGFyYW1ldGVycy5hZGRpdGlvbmFsU2FuZGJveEV4dGVuc2lv
bkhhbmRsZXNbaV0pOworCiAgICAgcGFyYW1ldGVycy5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5
ID0gd2Vic2l0ZURhdGFTdG9yZSA/IHdlYnNpdGVEYXRhU3RvcmUtPnJlc29sdmVkQXBwbGljYXRp
b25DYWNoZURpcmVjdG9yeSgpIDogbV9yZXNvbHZlZFBhdGhzLmFwcGxpY2F0aW9uQ2FjaGVEaXJl
Y3Rvcnk7CiAgICAgaWYgKHBhcmFtZXRlcnMuYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeS5pc0Vt
cHR5KCkpCiAgICAgICAgIHBhcmFtZXRlcnMuYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSA9IG1f
cmVzb2x2ZWRQYXRocy5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5OwpJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJKHJldmlzaW9uIDIxNTM1MSkKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCSh3b3JraW5nIGNvcHkpCkBA
IC02MTEsNiArNjExLDggQEAgcHJpdmF0ZToKICAgICAgICAgU3RyaW5nIGNvbnRhaW5lckNhY2hl
c0RpcmVjdG9yeTsKICAgICAgICAgU3RyaW5nIGNvbnRhaW5lclRlbXBvcmFyeURpcmVjdG9yeTsK
ICNlbmRpZgorCisgICAgICAgIFZlY3RvcjxTdHJpbmc+IGFkZGl0aW9uYWxXZWJQcm9jZXNzU2Fu
ZGJveEV4dGVuc2lvblBhdGhzOwogICAgIH07CiAgICAgUGF0aHMgbV9yZXNvbHZlZFBhdGhzOwog
fTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAJKHJldmlzaW9uIDIxNTM1MSkKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTExLDYgKzExMSw3IEBAIFJlZjxQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24+IFByb2Nlc3NQb28KICAgICBjb3B5LT5tX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5
ID0gdGhpcy0+bV93ZWJTUUxEYXRhYmFzZURpcmVjdG9yeTsKICAgICBjb3B5LT5tX2NhY2hlUGFy
dGl0aW9uZWRVUkxTY2hlbWVzID0gdGhpcy0+bV9jYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lczsK
ICAgICBjb3B5LT5tX2Fsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lcyA9IHRoaXMtPm1fYWx3YXlz
UmV2YWxpZGF0ZWRVUkxTY2hlbWVzOworICAgIGNvcHktPm1fYWRkaXRpb25hbFJlYWRBY2Nlc3NB
bGxvd2VkUGF0aHMgPSB0aGlzLT5tX2FkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFBhdGhzOwog
ICAgIGNvcHktPm1fZnVsbHlTeW5jaHJvbm91c01vZGVJc0FsbG93ZWRGb3JUZXN0aW5nID0gdGhp
cy0+bV9mdWxseVN5bmNocm9ub3VzTW9kZUlzQWxsb3dlZEZvclRlc3Rpbmc7CiAgICAgY29weS0+
bV9pZ25vcmVTeW5jaHJvbm91c01lc3NhZ2luZ1RpbWVvdXRzRm9yVGVzdGluZyA9IHRoaXMtPm1f
aWdub3JlU3luY2hyb25vdXNNZXNzYWdpbmdUaW1lb3V0c0ZvclRlc3Rpbmc7CiAgICAgY29weS0+
bV9vdmVycmlkZUxhbmd1YWdlcyA9IHRoaXMtPm1fb3ZlcnJpZGVMYW5ndWFnZXM7CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uLmgJKHJldmlzaW9uIDIxNTM1MSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgJKHdvcmtpbmcgY29weSkK
QEAgLTk2LDYgKzk2LDkgQEAgcHVibGljOgogICAgIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4m
IGFsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lcygpIHsgcmV0dXJuIG1fYWx3YXlzUmV2YWxpZGF0
ZWRVUkxTY2hlbWVzOyB9CiAgICAgdm9pZCBzZXRBbHdheXNSZXZhbGlkYXRlZFVSTFNjaGVtZXMo
VmVjdG9yPFdURjo6U3RyaW5nPiYmIGFsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lcykgeyBtX2Fs
d2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lcyA9IFdURk1vdmUoYWx3YXlzUmV2YWxpZGF0ZWRVUkxT
Y2hlbWVzKTsgfQogCisgICAgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgYWRkaXRpb25hbFJl
YWRBY2Nlc3NBbGxvd2VkUGF0aHMoKSB7IHJldHVybiBtX2FkZGl0aW9uYWxSZWFkQWNjZXNzQWxs
b3dlZFBhdGhzOyB9CisgICAgdm9pZCBzZXRBZGRpdGlvbmFsUmVhZEFjY2Vzc0FsbG93ZWRQYXRo
cyhWZWN0b3I8V1RGOjpTdHJpbmc+JiYgYWRkaXRpb25hbFJlYWRBY2Nlc3NBbGxvd2VkUGF0aHMp
IHsgbV9hZGRpdGlvbmFsUmVhZEFjY2Vzc0FsbG93ZWRQYXRocyA9IGFkZGl0aW9uYWxSZWFkQWNj
ZXNzQWxsb3dlZFBhdGhzOyB9CisKICAgICBib29sIGZ1bGx5U3luY2hyb25vdXNNb2RlSXNBbGxv
d2VkRm9yVGVzdGluZygpIGNvbnN0IHsgcmV0dXJuIG1fZnVsbHlTeW5jaHJvbm91c01vZGVJc0Fs
bG93ZWRGb3JUZXN0aW5nOyB9CiAgICAgdm9pZCBzZXRGdWxseVN5bmNocm9ub3VzTW9kZUlzQWxs
b3dlZEZvclRlc3RpbmcoYm9vbCBhbGxvd2VkKSB7IG1fZnVsbHlTeW5jaHJvbm91c01vZGVJc0Fs
bG93ZWRGb3JUZXN0aW5nID0gYWxsb3dlZDsgfQogCkBAIC0xNDYsNiArMTQ5LDcgQEAgcHJpdmF0
ZToKICAgICBXVEY6OlN0cmluZyBtX2phdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5Owog
ICAgIFZlY3RvcjxXVEY6OlN0cmluZz4gbV9jYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lczsKICAg
ICBWZWN0b3I8V1RGOjpTdHJpbmc+IG1fYWx3YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVzOworICAg
IFZlY3RvcjxXVEY6OlN0cmluZz4gbV9hZGRpdGlvbmFsUmVhZEFjY2Vzc0FsbG93ZWRQYXRoczsK
ICAgICBib29sIG1fZnVsbHlTeW5jaHJvbm91c01vZGVJc0FsbG93ZWRGb3JUZXN0aW5nIHsgZmFs
c2UgfTsKICAgICBib29sIG1faWdub3JlU3luY2hyb25vdXNNZXNzYWdpbmdUaW1lb3V0c0ZvclRl
c3RpbmcgeyBmYWxzZSB9OwogICAgIFZlY3RvcjxXVEY6OlN0cmluZz4gbV9vdmVycmlkZUxhbmd1
YWdlczsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaAkocmV2aXNpb24gMjE1
MzUxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsOCBAQCBXS19DTEFT
U19BVkFJTEFCTEUobWFjb3N4KDEwLjEwKSwgaW9zKDguCiAKIEBwcm9wZXJ0eSAobm9uYXRvbWlj
KSBCT09MIGlnbm9yZVN5bmNocm9ub3VzTWVzc2FnaW5nVGltZW91dHNGb3JUZXN0aW5nIFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3N4KDEwLjEyKSwgaW9zKDEwLjApKTsKIAorQHByb3BlcnR5IChub25h
dG9taWMsIGNvcHkpIE5TQXJyYXk8TlNVUkwgKj4gKmFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dl
ZFVSTHMgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJB
KSk7CisKIC8vIE5ldHdvcmsgUHJvY2VzcyBwcm9wZXJ0aWVzCiAvLyBGSVhNRTogVGhlc2Ugc2hv
dWxkIGJlIGJlIHBlci1zZXNzaW9uL2RhdGEgc3RvcmUgd2hlbiB3ZSBzdXBwb3J0IG11bHRpcGxl
IG5vbi1wZXJzaXN0ZW50IHNlc3Npb25zL2RhdGEgc3RvcmVzLgogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nl
c3NQb29sQ29uZmlndXJhdGlvbi5tbQkocmV2aXNpb24gMjE1MzUxKQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24ubW0JKHdv
cmtpbmcgY29weSkKQEAgLTEwMiw2ICsxMDIsMzMgQEAgLSAodm9pZClzZXRJZ25vcmVTeW5jaHJv
bm91c01lc3NhZ2luZ1RpbQogICAgIF9wcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24tPnNldElnbm9y
ZVN5bmNocm9ub3VzTWVzc2FnaW5nVGltZW91dHNGb3JUZXN0aW5nKGlnbm9yZVN5bmNocm9ub3Vz
TWVzc2FnaW5nVGltZW91dHNGb3JUZXN0aW5nKTsKIH0KIAorLSAoTlNBcnJheTxOU1VSTCAqPiAq
KWFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFVSTHMKK3sKKyAgICBhdXRvIHBhdGhzID0gX3By
b2Nlc3NQb29sQ29uZmlndXJhdGlvbi0+YWRkaXRpb25hbFJlYWRBY2Nlc3NBbGxvd2VkUGF0aHMo
KTsKKyAgICBpZiAocGF0aHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gQFsgXTsKKworICAg
IE5TTXV0YWJsZUFycmF5ICp1cmxzID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5
OnBhdGhzLnNpemUoKV07CisgICAgZm9yIChjb25zdCBhdXRvJiBwYXRoIDogcGF0aHMpCisgICAg
ICAgIFt1cmxzIGFkZE9iamVjdDpbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOnBhdGhdXTsKKworICAg
IHJldHVybiB1cmxzOworfQorCistICh2b2lkKXNldEFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dl
ZFVSTHM6KE5TQXJyYXk8TlNVUkwgKj4gKilhZGRpdGlvbmFsUmVhZEFjY2Vzc0FsbG93ZWRVUkxz
Cit7CisgICAgVmVjdG9yPFN0cmluZz4gcGF0aHM7CisgICAgcGF0aHMucmVzZXJ2ZUNhcGFjaXR5
KGFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFVSTHMuY291bnQpOworICAgIGZvciAoTlNVUkwg
KnVybCBpbiBhZGRpdGlvbmFsUmVhZEFjY2Vzc0FsbG93ZWRVUkxzKSB7CisgICAgICAgIGlmICgh
dXJsLmlzRmlsZVVSTCkKKyAgICAgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRB
cmd1bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCIlQCBpcyBub3QgYSBmaWxlIFVSTCIsIHVybF07CisK
KyAgICAgICAgcGF0aHMudW5jaGVja2VkQXBwZW5kKHVybC5maWxlU3lzdGVtUmVwcmVzZW50YXRp
b24pOworICAgIH0KKworICAgIF9wcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24tPnNldEFkZGl0aW9u
YWxSZWFkQWNjZXNzQWxsb3dlZFBhdGhzKFdURk1vdmUocGF0aHMpKTsKK30KKwogLSAoTlNBcnJh
eSAqKWNhY2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzCiB7CiAgICAgYXV0byBzY2hlbWVzID0gX3By
b2Nlc3NQb29sQ29uZmlndXJhdGlvbi0+Y2FjaGVQYXJ0aXRpb25lZFVSTFNjaGVtZXMoKTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMjE1
MzUxKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjg2LDYgKzI4Niw5IEBAIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdl
YlByb2Nlc3MoV2UKICAgICBpZiAoIXBhcmFtZXRlcnMuaW5qZWN0ZWRCdW5kbGVQYXRoLmlzRW1w
dHkoKSkKICAgICAgICAgbV9pbmplY3RlZEJ1bmRsZSA9IEluamVjdGVkQnVuZGxlOjpjcmVhdGUo
cGFyYW1ldGVycywgdHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyhwYXJhbWV0ZXJzLmluaXRpYWxp
emF0aW9uVXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKIAorICAgIGZvciAoc2l6ZV90IGkgPSAw
LCBzaXplID0gcGFyYW1ldGVycy5hZGRpdGlvbmFsU2FuZGJveEV4dGVuc2lvbkhhbmRsZXMuc2l6
ZSgpOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVy
bWFuZW50bHkocGFyYW1ldGVycy5hZGRpdGlvbmFsU2FuZGJveEV4dGVuc2lvbkhhbmRsZXNbaV0p
OworCiAgICAgZm9yIChhdXRvJiBzdXBwbGVtZW50IDogbV9zdXBwbGVtZW50cy52YWx1ZXMoKSkK
ICAgICAgICAgc3VwcGxlbWVudC0+aW5pdGlhbGl6ZShwYXJhbWV0ZXJzKTsKIApJbmRleDogVG9v
bHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjE1
MzUzKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAK
KzIwMTctMDQtMTMgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KKworICAgICAgICBb
Q29jb2FdIEFsbG93IGNsaWVudHMgdG8gc3BlY2lmeSBpbiBfV0tQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24gYWRkaXRpb25hbCBkaXJlY3Rvcnkgc2FuZGJveCBleHRlbnNpb25zCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzAzODcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL0FkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFVSTHMu
bW06IEFkZGVkLgorICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyQ29jb2EvQWRkaXRpb25hbFJlYWRBY2Nlc3NBbGxvd2VkVVJMc1BsdWdpbi5tbTog
QWRkZWQuCisgICAgICAgICgtW0FkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFVSTHNQbHVnSW4g
d2ViUHJvY2Vzc1BsdWdJbjpkaWRDcmVhdGVCcm93c2VyQ29udGV4dENvbnRyb2xsZXI6XSk6Cisg
ICAgICAgICgtW0FkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFVSTHNQbHVnSW4gZGVhbGxvY10p
OgorICAgICAgICAoLVtBZGRpdGlvbmFsUmVhZEFjY2Vzc0FsbG93ZWRVUkxzUGx1Z0luIHJlYWRT
dHJpbmdGcm9tVVJMOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0MkNvY29hL0FkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFVSTHNQcm90
b2NvbC5oOiBBZGRlZC4KKwogMjAxNy0wNC0xMyAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBh
cHBsZS5jb20+CiAKICAgICAgICAgd2Via2l0cHk6IElnbm9yZSBwcmV2aW91c2x5IGxhdW5jaGVk
IHBpZCB3aGVuIHN5c3RlbSBpcyB1bmRlciBzdHJlc3MKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiAyMTUzNTEpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRB
UEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTE3LDYgKzEx
Nyw4IEBACiAJCTM3RDM2RUQ3MUFGNDJFQ0QwMEJBRjVEOSAvKiBMb2FkQWx0ZXJuYXRlSFRNTFN0
cmluZy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3
RDM2RUQ2MUFGNDJFQ0QwMEJBRjVEOSAvKiBMb2FkQWx0ZXJuYXRlSFRNTFN0cmluZy5tbSAqLzsg
fTsKIAkJMzdEQzY3OTExNDBEN0Q3NjAwQUJDQ0RCIC8qIERPTVJhbmdlT2ZTdHJpbmcuaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzN0RD
Njc4RjE0MEQ3RDNBMDBBQkNDREIgLyogRE9NUmFuZ2VPZlN0cmluZy5odG1sICovOyB9OwogCQkz
N0UxMDY0QzE2OTc2ODE4MDBCNzhCRDAgLyogRE9NSFRNTFRhYmxlQ2VsbEVsZW1lbnRDZWxsQWJv
dmUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzN0UxMDY0QjE2OTc2N0Y3MDBCNzhCRDAgLyogRE9NSFRNTFRhYmxlQ2VsbEVsZW1lbnRD
ZWxsQWJvdmUuaHRtbCAqLzsgfTsKKwkJMzdFN0RENjQxRUEwNkZGMjAwOUIzOTZEIC8qIEFkZGl0
aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFVSTHMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAzN0U3REQ2MzFFQTA2RkYyMDA5QjM5NkQgLyogQWRkaXRpb25h
bFJlYWRBY2Nlc3NBbGxvd2VkVVJMcy5tbSAqLzsgfTsKKwkJMzdFN0RENjcxRUEwNzFGMzAwOUIz
OTZEIC8qIEFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFVSTHNQbHVnaW4ubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzN0U3REQ2NjFFQTA3MUYzMDA5
QjM5NkQgLyogQWRkaXRpb25hbFJlYWRBY2Nlc3NBbGxvd2VkVVJMc1BsdWdpbi5tbSAqLzsgfTsK
IAkJMzdGQjcyOTcxREIyRTgyRjAwRTQxQkU0IC8qIENvbnRleHRNZW51RGVmYXVsdEl0ZW1zSGF2
ZVRhZ3MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAz
N0ZCNzI5NTFEQjJFODJGMDBFNDFCRTQgLyogQ29udGV4dE1lbnVEZWZhdWx0SXRlbXNIYXZlVGFn
cy5tbSAqLzsgfTsKIAkJM0ZCRDFCNEExRDNENjZBQjAwRTZENkZBIC8qIEZ1bGxzY3JlZW5MYXlv
dXRDb25zdHJhaW50cy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDNGQkQxQjQ5MUQzOUQxREIwMEU2RDZGQSAvKiBGdWxsc2NyZWVuTGF5
b3V0Q29uc3RyYWludHMuaHRtbCAqLzsgfTsKIAkJNDYzOTdCOTUxREMyQzg1MDAwOUE3OEFFIC8q
IERPTU5vZGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NjM5N0I5NDFEQzJDODUwMDA5QTc4QUUgLyogRE9NTm9kZS5tbSAqLzsgfTsKQEAgLTEwMTgs
NiArMTAyMCw5IEBACiAJCTM3RTEwNjRBMTY5NzY3NjQwMEI3OEJEMCAvKiBET01IVE1MVGFibGVD
ZWxsQ2VsbEFib3ZlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
RE9NSFRNTFRhYmxlQ2VsbENlbGxBYm92ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMzdFMTA2NEIxNjk3NjdGNzAwQjc4QkQwIC8qIERPTUhUTUxUYWJsZUNlbGxFbGVtZW50Q2Vs
bEFib3ZlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBET01IVE1MVGFibGVDZWxs
RWxlbWVudENlbGxBYm92ZS5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzN0Uz
OEMzMzE2OUI3RDAxMDA4NEMyOEMgLyogV2ViVmlld0RpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNo
eS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlZpZXdEaWRS
ZW1vdmVGcmFtZUZyb21IaWVyYXJjaHkubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTM3RTdERDYzMUVBMDZGRjIwMDlCMzk2RCAvKiBBZGRpdGlvbmFsUmVhZEFjY2Vzc0FsbG93ZWRV
UkxzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQWRkaXRpb25h
bFJlYWRBY2Nlc3NBbGxvd2VkVVJMcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MzdFN0RENjUxRUEwNzE1QjAwOUIzOTZEIC8qIEFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFVS
THNQcm90b2NvbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBZGRpdGlvbmFs
UmVhZEFjY2Vzc0FsbG93ZWRVUkxzUHJvdG9jb2wuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMzdFN0RENjYxRUEwNzFGMzAwOUIzOTZEIC8qIEFkZGl0aW9uYWxSZWFkQWNjZXNzQWxs
b3dlZFVSTHNQbHVnaW4ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBBZGRpdGlvbmFsUmVhZEFjY2Vzc0FsbG93ZWRVUkxzUGx1Z2luLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkzN0ZCNzI5NTFEQjJFODJGMDBFNDFCRTQgLyogQ29udGV4dE1lbnVE
ZWZhdWx0SXRlbXNIYXZlVGFncy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IENvbnRleHRNZW51RGVmYXVsdEl0ZW1zSGF2ZVRhZ3MubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTNGMUI1MjY4MUQzRDcxMjkwMDhENjBDNCAvKiBGdWxsc2NyZWVuTGF5
b3V0Q29uc3RyYWludHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBGdWxsc2NyZWVuTGF5b3V0Q29uc3RyYWludHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTNGQkQxQjQ5MUQzOUQxREIwMEU2RDZGQSAvKiBGdWxsc2NyZWVuTGF5b3V0Q29uc3Ry
YWludHMuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IEZ1bGxzY3JlZW5MYXlvdXRD
b25zdHJhaW50cy5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTYyNSw2ICsx
NjMwLDkgQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCUExNkY2NkI4MUM0MEU5RTEwMEJENEQyNCAv
KiBSZXNvdXJjZXMgKi8sCiAJCQkJN0NFRkE5NjQxQUMwQjlFMjAwQjkxMEZEIC8qIF9XS1VzZXJD
b250ZW50RXh0ZW5zaW9uU3RvcmUubW0gKi8sCisJCQkJMzdFN0RENjMxRUEwNkZGMjAwOUIzOTZE
IC8qIEFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFVSTHMubW0gKi8sCisJCQkJMzdFN0RENjYx
RUEwNzFGMzAwOUIzOTZEIC8qIEFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFVSTHNQbHVnaW4u
bW0gKi8sCisJCQkJMzdFN0RENjUxRUEwNzE1QjAwOUIzOTZEIC8qIEFkZGl0aW9uYWxSZWFkQWNj
ZXNzQWxsb3dlZFVSTHNQcm90b2NvbC5oICovLAogCQkJCUExREY3NDMwMUM0MUI2NTgwMEEyRjRE
MCAvKiBBbHdheXNSZXZhbGlkYXRlZFVSTFNjaGVtZXMubW0gKi8sCiAJCQkJMkRFNzFBRkQxRDQ5
QzBCRDAwOTA0MDk0IC8qIEFuaW1hdGVkUmVzaXplLm1tICovLAogCQkJCTJERDM1NTM1MUJEMDgz
NzgwMDVERjRBNyAvKiBBdXRvTGF5b3V0SW50ZWdyYXRpb24ubW0gKi8sCkBAIC0yNzczLDYgKzI3
ODEsNyBAQAogCQkJCTQ2Mzk3Qjk1MURDMkM4NTAwMDlBNzhBRSAvKiBET01Ob2RlLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJN0NDRTdFQkMxQTQxMUE3RTAwNDQ3QzRDIC8qIERPTU5vZGVGcm9tSlNP
YmplY3QubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VCRDFBNDExQTdFMDA0NDdDNEMgLyog
RE9NUmFuZ2VPZlN0cmluZy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTM3RTdERDY0MUVBMDZGRjIw
MDlCMzk2RCAvKiBBZGRpdGlvbmFsUmVhZEFjY2Vzc0FsbG93ZWRVUkxzLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJN0NDRTdFRUMxQTQxMUFFNjAwNDQ3QzRDIC8qIERPTVdpbmRvd0V4dGVuc2lvbkJh
c2ljLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUVEMUE0MTFBRTYwMDQ0N0M0QyAvKiBE
T01XaW5kb3dFeHRlbnNpb25Ob0NhY2hlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjIz
MUE0MTFBRjYwMDQ0N0M0QyAvKiBEb3dubG9hZC5tbSBpbiBTb3VyY2VzICovLApAQCAtMzAyNyw2
ICszMDM2LDcgQEAKIAkJCQlBMTNFQkJBQjFCODc0MzQ2MDAwOTcxMTAgLyogUGxhdGZvcm1VdGls
aXRpZXNDb2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBNEY4MUNGMUJERkZENTMwMDRFNjcy
RSAvKiBSZW1vdGVPYmplY3RSZWdpc3RyeVBsdWdJbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCUEx
MkREQzAyMUU4MzdDMjQwMENGNkNBRSAvKiBSZW5kZXJlZEltYWdlV2l0aE9wdGlvbnNQbHVnSW4u
bW0gaW4gU291cmNlcyAqLywKKwkJCQkzN0U3REQ2NzFFQTA3MUYzMDA5QjM5NkQgLyogQWRkaXRp
b25hbFJlYWRBY2Nlc3NBbGxvd2VkVVJMc1BsdWdpbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdD
ODgyRTA5MUM4MEM2MzAwMDZCRjczMSAvKiBVc2VyQ29udGVudFdvcmxkUGx1Z0luLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJN0M4M0UwM0QxRDBBNjBENjAwRkVCQ0YzIC8qIFV0aWxpdGllc0NvY29h
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTEzRUJCQUExQjg3NDI4RDAwMDk3MTEwIC8qIFdlYlBy
b2Nlc3NQbHVnSW4ubW0gaW4gU291cmNlcyAqLywKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0MkNvY29hL0FkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFVSTHMubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvQWRkaXRp
b25hbFJlYWRBY2Nlc3NBbGxvd2VkVVJMcy5tbQkobm9uZXhpc3RlbnQpCisrKyBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9BZGRpdGlvbmFsUmVhZEFjY2Vzc0FsbG93ZWRV
UkxzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTA1IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lt
cG9ydCAiY29uZmlnLmgiCisjaW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+CisKKyNpZiBX
S19BUElfRU5BQkxFRAorCisjaW1wb3J0ICJBZGRpdGlvbmFsUmVhZEFjY2Vzc0FsbG93ZWRVUkxz
UHJvdG9jb2wuaCIKKyNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJVdGls
aXRpZXMuaCIKKyNpbXBvcnQgIldLV2ViVmlld0NvbmZpZ3VyYXRpb25FeHRyYXMuaCIKKyNpbXBv
cnQgPFdlYktpdC9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2Vi
Vmlld1ByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24uaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tSZW1vdGVPYmplY3RJbnRlcmZhY2UuaD4KKyNpbXBv
cnQgPFdlYktpdC9fV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5oPgorI2ltcG9ydCA8d3RmL1JldGFp
blB0ci5oPgorCitzdGF0aWMgYm9vbCBkb25lOworCitURVNUKFdlYktpdDIsIEFkZGl0aW9uYWxS
ZWFkQWNjZXNzQWxsb3dlZFVSTHMpCit7CisgICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3Vy
YXRpb24+IGNvbmZpZ3VyYXRpb24gPSByZXRhaW5QdHIoW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24g
dGVzdHdlYmtpdGFwaV9jb25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6QCJBZGRp
dGlvbmFsUmVhZEFjY2Vzc0FsbG93ZWRVUkxzUGx1Z0luIl0pOworCisgICAgX1dLUHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uICpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBbY29uZmlndXJhdGlv
biBwcm9jZXNzUG9vbF0uX2NvbmZpZ3VyYXRpb247CisKKyAgICBib29sIGV4Y2VwdGlvblJhaXNl
ZCA9IGZhbHNlOworICAgIEB0cnkgeworICAgICAgICBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24u
YWRkaXRpb25hbFJlYWRBY2Nlc3NBbGxvd2VkVVJMcyA9IEBbIFtOU1VSTCBVUkxXaXRoU3RyaW5n
OkAiYWJvdXQ6YmxhbmsiXSBdOworICAgIH0gQGNhdGNoIChOU0V4Y2VwdGlvbiAqZXhjZXB0aW9u
KSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiwg
ZXhjZXB0aW9uLm5hbWUpOworICAgICAgICBleGNlcHRpb25SYWlzZWQgPSB0cnVlOworICAgIH0K
KyAgICBFWFBFQ1RfVFJVRShleGNlcHRpb25SYWlzZWQpOworCisgICAgY2hhciB0ZW1wb3JhcnlE
aXJlY3RvcnlbUEFUSF9NQVhdOworICAgIGNvbmZzdHIoX0NTX0RBUldJTl9VU0VSX1RFTVBfRElS
LCB0ZW1wb3JhcnlEaXJlY3RvcnksIHNpemVvZih0ZW1wb3JhcnlEaXJlY3RvcnkpKTsKKworICAg
IGNoYXIgcmVhZGFibGVEaXJlY3RvcnlbUEFUSF9NQVhdOworICAgIHN0cmxjcHkocmVhZGFibGVE
aXJlY3RvcnksIFtbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIHN0cmluZ1dpdGhGaWxl
U3lzdGVtUmVwcmVzZW50YXRpb246dGVtcG9yYXJ5RGlyZWN0b3J5IGxlbmd0aDpzdHJsZW4odGVt
cG9yYXJ5RGlyZWN0b3J5KV0gc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiV2ViS2l0
VGVzdFJ1bm5lci5BZGRpdGlvbmFsUmVhZEFjY2Vzc0FsbG93ZWRVUkxzLVhYWFhYWCJdLmZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbiwgc2l6ZW9mKHRlbXBvcmFyeURpcmVjdG9yeSkpOworICAgIG1r
ZHRlbXAocmVhZGFibGVEaXJlY3RvcnkpOworICAgIE5TVVJMICpyZWFkYWJsZURpcmVjdG9yeVVS
TCA9IFtOU1VSTCBmaWxlVVJMV2l0aEZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbjpyZWFkYWJsZURp
cmVjdG9yeSBpc0RpcmVjdG9yeTpZRVMgcmVsYXRpdmVUb1VSTDpuaWxdOworCisgICAgY2hhciB1
bnJlYWRhYmxlRGlyZWN0b3J5W1BBVEhfTUFYXTsKKyAgICBzdHJsY3B5KHVucmVhZGFibGVEaXJl
Y3RvcnksIFtbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIHN0cmluZ1dpdGhGaWxlU3lz
dGVtUmVwcmVzZW50YXRpb246dGVtcG9yYXJ5RGlyZWN0b3J5IGxlbmd0aDpzdHJsZW4odGVtcG9y
YXJ5RGlyZWN0b3J5KV0gc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiV2ViS2l0VGVz
dFJ1bm5lci5BZGRpdGlvbmFsUmVhZEFjY2Vzc0FsbG93ZWRVUkxzLVhYWFhYWCJdLmZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbiwgc2l6ZW9mKHRlbXBvcmFyeURpcmVjdG9yeSkpOworICAgIG1rZHRl
bXAodW5yZWFkYWJsZURpcmVjdG9yeSk7CisgICAgTlNVUkwgKnVucmVhZGFibGVEaXJlY3RvcnlV
UkwgPSBbTlNVUkwgZmlsZVVSTFdpdGhGaWxlU3lzdGVtUmVwcmVzZW50YXRpb246dW5yZWFkYWJs
ZURpcmVjdG9yeSBpc0RpcmVjdG9yeTpZRVMgcmVsYXRpdmVUb1VSTDpuaWxdOworCisgICAgcHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uLmFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFVSTHMgPSBA
WyByZWFkYWJsZURpcmVjdG9yeVVSTCBdOworCisgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0
TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbl0pOworICAgIFtwcm9jZXNzUG9vbCBfc2V0T2JqZWN0OkAiQWRkaXRp
b25hbFJlYWRBY2Nlc3NBbGxvd2VkVVJMc1BsdWdJbiIgZm9yQnVuZGxlUGFyYW1ldGVyOlRlc3RX
ZWJLaXRBUEk6OlV0aWw6OlRlc3RQbHVnSW5DbGFzc05hbWVQYXJhbWV0ZXJdOworICAgIFtjb25m
aWd1cmF0aW9uIHNldFByb2Nlc3NQb29sOnByb2Nlc3NQb29sLmdldCgpXTsKKworICAgIFJldGFp
blB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmln
dXJhdGlvbi5nZXQoKV0pOworCisgICAgaWQ8QWRkaXRpb25hbFJlYWRBY2Nlc3NBbGxvd2VkVVJM
c1Byb3RvY29sPiBwcm94eSA9IFtbd2ViVmlldyBfcmVtb3RlT2JqZWN0UmVnaXN0cnldIHJlbW90
ZU9iamVjdFByb3h5V2l0aEludGVyZmFjZTpbX1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNlIHJlbW90
ZU9iamVjdEludGVyZmFjZVdpdGhQcm90b2NvbDpAcHJvdG9jb2woQWRkaXRpb25hbFJlYWRBY2Nl
c3NBbGxvd2VkVVJMc1Byb3RvY29sKV1dOworCisgICAgTlNVUkwgKnJlYWRhYmxlRmlsZVVSTCA9
IFtyZWFkYWJsZURpcmVjdG9yeVVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJmaWxl
Il07CisgICAgTlNVUkwgKnVucmVhZGFibGVGaWxlVVJMID0gW3VucmVhZGFibGVEaXJlY3RvcnlV
UkwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiZmlsZSJdOworCisgICAgW0AiaGVsbG8i
IHdyaXRlVG9VUkw6cmVhZGFibGVGaWxlVVJMIGF0b21pY2FsbHk6WUVTIGVuY29kaW5nOk5TVVRG
OFN0cmluZ0VuY29kaW5nIGVycm9yOm51bGxwdHJdOworICAgIFtAInNlY3JldCIgd3JpdGVUb1VS
TDp1bnJlYWRhYmxlRmlsZVVSTCBhdG9taWNhbGx5OllFUyBlbmNvZGluZzpOU1VURjhTdHJpbmdF
bmNvZGluZyBlcnJvcjpudWxscHRyXTsKKworICAgIFtwcm94eSByZWFkU3RyaW5nRnJvbVVSTDpy
ZWFkYWJsZUZpbGVVUkwgY29tcGxldGlvbkhhbmRsZXI6XihOU1N0cmluZyAqc3RyaW5nLCBOU0Vy
cm9yICplcnJvcikgeworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAgRVhQRUNUX1dLX1NU
UkVRKEAiaGVsbG8iLCBzdHJpbmcpOworICAgICAgICBFWFBFQ1RfRVEobnVsbHB0ciwgZXJyb3Ip
OworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgZG9u
ZSA9IGZhbHNlOworCisgICAgW3Byb3h5IHJlYWRTdHJpbmdGcm9tVVJMOnVucmVhZGFibGVGaWxl
VVJMIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNTdHJpbmcgKnN0cmluZywgTlNFcnJvciAqZXJyb3Ip
IHsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgIEVYUEVDVF9FUShudWxscHRyLCBzdHJp
bmcpOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoTlNDb2NvYUVycm9yRG9tYWluLCBlcnJvci5k
b21haW4pOworICAgICAgICBFWFBFQ1RfRVEoTlNGaWxlUmVhZE5vUGVybWlzc2lvbkVycm9yLCBl
cnJvci5jb2RlKTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUp
OworfQorCisjZW5kaWYKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNv
Y29hL0FkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFVSTHNQbHVnaW4ubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvQWRkaXRpb25hbFJlYWRB
Y2Nlc3NBbGxvd2VkVVJMc1BsdWdpbi5tbQkobm9uZXhpc3RlbnQpCisrKyBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9BZGRpdGlvbmFsUmVhZEFjY2Vzc0FsbG93ZWRVUkxz
UGx1Z2luLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW1wb3J0ICJjb25maWcuaCIKKworI2lmIFdLX0FQSV9FTkFCTEVECisKKyNpbXBvcnQgIkFkZGl0
aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFVSTHNQcm90b2NvbC5oIgorI2ltcG9ydCAiUGxhdGZvcm1V
dGlsaXRpZXMuaCIKKyNpbXBvcnQgPFdlYktpdC9XS1dlYlByb2Nlc3NQbHVnSW4uaD4KKyNpbXBv
cnQgPFdlYktpdC9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXJQcml2
YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUuaD4KKyNpbXBv
cnQgPFdlYktpdC9fV0tSZW1vdGVPYmplY3RJbnRlcmZhY2UuaD4KKyNpbXBvcnQgPFdlYktpdC9f
V0tSZW1vdGVPYmplY3RSZWdpc3RyeS5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCitA
aW50ZXJmYWNlIEFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFVSTHNQbHVnSW4gOiBOU09iamVj
dCA8QWRkaXRpb25hbFJlYWRBY2Nlc3NBbGxvd2VkVVJMc1Byb3RvY29sLCBXS1dlYlByb2Nlc3NQ
bHVnSW4+CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBBZGRpdGlvbmFsUmVhZEFjY2Vzc0FsbG93
ZWRVUkxzUGx1Z0luIHsKKyAgICBSZXRhaW5QdHI8V0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNv
bnRleHRDb250cm9sbGVyPiBfYnJvd3NlckNvbnRleHRDb250cm9sbGVyOworICAgIFJldGFpblB0
cjxXS1dlYlByb2Nlc3NQbHVnSW5Db250cm9sbGVyPiBfcGx1Z0luQ29udHJvbGxlcjsKKyAgICBS
ZXRhaW5QdHI8X1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNlPiBfaW50ZXJmYWNlOworfQorCistICh2
b2lkKXdlYlByb2Nlc3NQbHVnSW46KFdLV2ViUHJvY2Vzc1BsdWdJbkNvbnRyb2xsZXIgKilwbHVn
SW5Db250cm9sbGVyIGRpZENyZWF0ZUJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjooV0tXZWJQcm9j
ZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyICopYnJvd3NlckNvbnRleHRDb250cm9s
bGVyCit7CisgICAgQVNTRVJUKCFfYnJvd3NlckNvbnRleHRDb250cm9sbGVyKTsKKyAgICBBU1NF
UlQoIV9wbHVnSW5Db250cm9sbGVyKTsKKyAgICBfYnJvd3NlckNvbnRleHRDb250cm9sbGVyID0g
YnJvd3NlckNvbnRleHRDb250cm9sbGVyOworICAgIF9wbHVnSW5Db250cm9sbGVyID0gcGx1Z0lu
Q29udHJvbGxlcjsKKworICAgIF9pbnRlcmZhY2UgPSBbX1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNl
IHJlbW90ZU9iamVjdEludGVyZmFjZVdpdGhQcm90b2NvbDpAcHJvdG9jb2woQWRkaXRpb25hbFJl
YWRBY2Nlc3NBbGxvd2VkVVJMc1Byb3RvY29sKV07CisgICAgW1ticm93c2VyQ29udGV4dENvbnRy
b2xsZXIgX3JlbW90ZU9iamVjdFJlZ2lzdHJ5XSByZWdpc3RlckV4cG9ydGVkT2JqZWN0OnNlbGYg
aW50ZXJmYWNlOl9pbnRlcmZhY2UuZ2V0KCldOworfQorCistICh2b2lkKWRlYWxsb2MKK3sKKyAg
ICBbW19icm93c2VyQ29udGV4dENvbnRyb2xsZXIgX3JlbW90ZU9iamVjdFJlZ2lzdHJ5XSB1bnJl
Z2lzdGVyRXhwb3J0ZWRPYmplY3Q6c2VsZiBpbnRlcmZhY2U6X2ludGVyZmFjZS5nZXQoKV07Cisg
ICAgW3N1cGVyIGRlYWxsb2NdOworfQorCistICh2b2lkKXJlYWRTdHJpbmdGcm9tVVJMOihOU1VS
TCAqKXVybCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNTdHJpbmcgKiwgTlNFcnJvciAq
KSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOworICAgIE5T
U3RyaW5nICpzdHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENvbnRlbnRzT2ZVUkw6dXJsIHVz
ZWRFbmNvZGluZzpudWxscHRyIGVycm9yOiZlcnJvcl07CisgICAgY29tcGxldGlvbkhhbmRsZXIo
c3RyaW5nLCBlcnJvcik7Cit9CisKK0BlbmQKKworI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVECklu
ZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9BZGRpdGlvbmFsUmVh
ZEFjY2Vzc0FsbG93ZWRVUkxzUHJvdG9jb2wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9BZGRpdGlvbmFsUmVhZEFjY2Vzc0FsbG93ZWRVUkxz
UHJvdG9jb2wuaAkobm9uZXhpc3RlbnQpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDJDb2NvYS9BZGRpdGlvbmFsUmVhZEFjY2Vzc0FsbG93ZWRVUkxzUHJvdG9jb2wuaAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCA8V2ViS2l0
L1dLRm91bmRhdGlvbi5oPgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworQHByb3RvY29sIEFkZGl0
aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFVSTHNQcm90b2NvbCA8TlNPYmplY3Q+CistICh2b2lkKXJl
YWRTdHJpbmdGcm9tVVJMOihOU1VSTCAqKXVybCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXiko
TlNTdHJpbmcgKnN0cmluZywgTlNFcnJvciAqZXJyb3IpKWNvbXBsZXRpb25IYW5kbGVyOworQGVu
ZAorCisjZW5kaWYK
</data>
<flag name="review"
          id="328380"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>