<?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>151662</bug_id>
          
          <creation_ts>2015-11-30 10:27:12 -0800</creation_ts>
          <short_desc>Make ProcessModel always MultipleSecondaryProcesses</short_desc>
          <delta_ts>2015-11-30 11:14:45 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>151418</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>ossy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1144811</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-11-30 10:27:12 -0800</bug_when>
    <thetext>Make ProcessModel always MultipleSecondaryProcesses</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144816</commentid>
    <comment_count>1</comment_count>
      <attachid>266250</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-11-30 10:31:37 -0800</bug_when>
    <thetext>Created attachment 266250
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144836</commentid>
    <comment_count>2</comment_count>
      <attachid>266250</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-11-30 11:02:51 -0800</bug_when>
    <thetext>Comment on attachment 266250
Patch

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

&gt; Source/WebKit2/UIProcess/API/C/WKContext.h:78
&gt; +// FIXME: Remove these once support for Mavericks has been dropped.

Doesn&apos;t https://trac.webkit.org/changeset/192706 mean that Apple already dropped Mavericks support?
I thought that only the two latest relases are supported, they are Yosemite and El Capitan.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144841</commentid>
    <comment_count>3</comment_count>
      <attachid>266250</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-11-30 11:07:27 -0800</bug_when>
    <thetext>Comment on attachment 266250
Patch

Nice! r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144843</commentid>
    <comment_count>4</comment_count>
      <attachid>266250</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-11-30 11:10:36 -0800</bug_when>
    <thetext>Comment on attachment 266250
Patch

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

&gt; Source/WebKit2/UIProcess/WebProcessPool.cpp:1106
&gt;  void WebProcessPool::requestWebContentStatistics(StatisticsRequest* request)
&gt;  {
&gt; -    if (processModel() == ProcessModelSharedSecondaryProcess) {
&gt; -        if (m_processes.isEmpty())
&gt; -            return;
&gt; -        
&gt; -        uint64_t requestID = request-&gt;addOutstandingRequest();
&gt; -        m_statisticsRequests.set(requestID, request);
&gt; -        m_processes[0]-&gt;send(Messages::WebProcess::GetWebCoreStatistics(requestID), 0);
&gt; -
&gt; -    } else {
&gt; -        // FIXME (Multi-WebProcess) &lt;rdar://problem/13200059&gt;: Make getting statistics from multiple WebProcesses work.
&gt; -    }
&gt; +    // FIXME (Multi-WebProcess) &lt;rdar://problem/13200059&gt;: Make getting statistics from multiple WebProcesses work.
&gt;  }

Maybe we should just remove this stuff entirely?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144844</commentid>
    <comment_count>5</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-11-30 11:13:21 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Doesn&apos;t https://trac.webkit.org/changeset/192706 mean that Apple already dropped Mavericks support?
Probably.  I&apos;ll double check that removing the things doesn&apos;t break compiling then move the things.
(In reply to comment #4)
&gt; Comment on attachment 266250 [details]
&gt; Patch
&gt; &gt; +    // FIXME (Multi-WebProcess) &lt;rdar://problem/13200059&gt;: Make getting statistics from multiple WebProcesses work.
&gt; &gt;  }
&gt; 
&gt; Maybe we should just remove this stuff entirely?
Probably.  We can probably remove a whole bunch more code.

http://trac.webkit.org/changeset/192808
More code removal can be done in other patches.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266250</attachid>
            <date>2015-11-30 10:31:37 -0800</date>
            <delta_ts>2015-11-30 11:07:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-151662-20151130113115.patch</filename>
            <type>text/plain</type>
            <size>35202</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5Mjc5NikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDczIEBACisyMDE1LTExLTMwICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWFrZSBQcm9j
ZXNzTW9kZWwgYWx3YXlzIE11bHRpcGxlU2Vjb25kYXJ5UHJvY2Vzc2VzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE2NjIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaW5nbGUgV2ViUHJvY2VzcyBiZWhh
dmlvciBjYW4gc3RpbGwgYmUgYWNoaWV2ZWQgYnkgc2V0dGluZyB0aGUgbWF4aW11bSBudW1iZXIg
b2YgV2ViUHJvY2Vzc2VzIHRvIDEuCisKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tEZXByZWNh
dGVkRnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKFdLQ29udGV4dFNldFVzZXNOZXR3b3JrUHJvY2Vz
cyk6CisgICAgICAgIChXS0NvbnRleHRTZXRQcm9jZXNzTW9kZWwpOgorICAgICAgICAoV0tDb250
ZXh0R2V0UHJvY2Vzc01vZGVsKToKKyAgICAgICAgKFdLR3JhcGhpY3NDb250ZXh0R2V0Q0dDb250
ZXh0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlv
bi5jcHA6CisgICAgICAgIChBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlV2l0
aExlZ2FjeU9wdGlvbnMpOgorICAgICAgICAoQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246
OmNvcHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oOgorICAgICAgICAo
V2ViS2l0Ojp0b0FQSSk6CisgICAgICAgIChXZWJLaXQ6OnRvRm9udFNtb290aGluZ0xldmVsKToK
KyAgICAgICAgKFdlYktpdDo6dG9Qcm9jZXNzTW9kZWwpOiBEZWxldGVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwOgorICAgICAgICAoV0tDb250ZXh0R2V0Q2FjaGVN
b2RlbCk6CisgICAgICAgIChXS0NvbnRleHRTZXRNYXhpbXVtTnVtYmVyT2ZQcm9jZXNzZXMpOgor
ICAgICAgICAoV0tDb250ZXh0U2V0UHJvY2Vzc01vZGVsKTogRGVsZXRlZC4KKyAgICAgICAgKFdL
Q29udGV4dEdldFByb2Nlc3NNb2RlbCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9DL1dLQ29udGV4dC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNz
R3JvdXAubW06CisgICAgICAgICgtW1dLUHJvY2Vzc0dyb3VwIGluaXRXaXRoSW5qZWN0ZWRCdW5k
bGVVUkw6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1t
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcDoKKyAgICAgICAg
KEV3a0NvbnRleHQ6OmNhY2hlTW9kZWwpOgorICAgICAgICAoRXdrQ29udGV4dDo6c2V0UHJvY2Vz
c01vZGVsKToKKyAgICAgICAgKEV3a0NvbnRleHQ6OnByb2Nlc3NNb2RlbCk6CisgICAgICAgIChF
d2tDb250ZXh0OjpjbGVhclJlc291cmNlQ2FjaGUpOgorICAgICAgICAoRXdrQ29udGV4dDo6anNH
bG9iYWxDb250ZXh0KToKKyAgICAgICAgKGV3a19jb250ZXh0X21lc3NhZ2VfZnJvbV9leHRlbnNp
b25zX2NhbGxiYWNrX3NldCk6CisgICAgICAgIChld2tfY29udGV4dF9wcm9jZXNzX21vZGVsX3Nl
dCk6CisgICAgICAgIChld2tfY29udGV4dF9wcm9jZXNzX21vZGVsX2dldCk6CisgICAgICAgIChl
d2tfY29udGV4dF90bHNfZXJyb3JfcG9saWN5X2dldCk6CisgICAgICAgICh0b1dLUHJvY2Vzc01v
ZGVsKTogRGVsZXRlZC4KKyAgICAgICAgKHRvRXdrUHJvY2Vzc01vZGVsKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvUHJvY2Vzc01vZGVsLmg6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNz
L1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1h
bmFnZXJQcm94eTo6c2hvdWxkVGVybWluYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2ll
TWFuYWdlclByb3h5OjpyZWZXZWJDb250ZXh0U3VwcGxlbWVudCk6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9y
UHJveHk6Omluc3BlY3RvclByb2Nlc3NQb29sKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWF0dGFjaFRvV2Vi
UHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjpzZXREb3dubG9hZENsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQb29sOjpzZXRNYXhpbXVtTnVtYmVyT2ZQcm9jZXNzZXMpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0RpZENhY2hlUGFnZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQb29sOjpjcmVhdGVOZXdXZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2w6OmRpc2Nvbm5lY3RQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc1Bvb2w6OmNyZWF0ZVdlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbDo6cG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc1Bvb2w6OnJlcXVlc3RXZWJDb250ZW50U3RhdGlzdGljcyk6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQb29sOjpyZXF1ZXN0TmV0d29ya2luZ1N0YXRpc3RpY3MpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2V0UHJvY2Vzc01vZGVsKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZVNoYXJlZFdlYlByb2Nlc3MpOiBE
ZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2VuZFRvQWxsUHJvY2Vzc2VzUmVsYXVuY2hpbmdUaGVt
SWZOZWNlc3NhcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2VuZFRvT25l
UHJvY2Vzcyk6CisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
CiAyMDE1LTExLTMwICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgTWFrZSB1c2VzTmV0d29ya1Byb2Nlc3MgYWx3YXlzIHRydWUKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0RlcHJlY2F0ZWRGdW5jdGlvbnMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0RlcHJlY2F0ZWRGdW5jdGlv
bnMuY3BwCShyZXZpc2lvbiAxOTI3OTYpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2Mv
V0tEZXByZWNhdGVkRnVuY3Rpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM5LDYgKzEzOSwx
NSBAQCB2b2lkIFdLQ29udGV4dFNldFVzZXNOZXR3b3JrUHJvY2VzcyhXS0NvCiB7CiB9CiAKK3Zv
aWQgV0tDb250ZXh0U2V0UHJvY2Vzc01vZGVsKFdLQ29udGV4dFJlZiwgV0tQcm9jZXNzTW9kZWwp
Cit7Cit9CisKK1dLUHJvY2Vzc01vZGVsIFdLQ29udGV4dEdldFByb2Nlc3NNb2RlbChXS0NvbnRl
eHRSZWYpCit7CisgICAgcmV0dXJuIGtXS1Byb2Nlc3NNb2RlbE11bHRpcGxlU2Vjb25kYXJ5UHJv
Y2Vzc2VzOworfQorCiAjaWYgUExBVEZPUk0oTUFDKQogQ0dDb250ZXh0UmVmIFdLR3JhcGhpY3ND
b250ZXh0R2V0Q0dDb250ZXh0KFdLR3JhcGhpY3NDb250ZXh0UmVmIGdyYXBoaWNzQ29udGV4dCkK
IHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Qcm9jZXNzTW9kZWwuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUHJvY2Vzc01vZGVsLmgJKHJldmlzaW9u
IDE5Mjc5NSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Qcm9jZXNzTW9kZWwuaAkod29y
a2luZyBjb3B5KQpAQCAtMSwzOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBQcm9jZXNz
TW9kZWxfaAotI2RlZmluZSBQcm9jZXNzTW9kZWxfaAotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQot
ZW51bSBQcm9jZXNzTW9kZWwgewotICAgIFByb2Nlc3NNb2RlbFNoYXJlZFNlY29uZGFyeVByb2Nl
c3MsCi0gICAgUHJvY2Vzc01vZGVsTXVsdGlwbGVTZWNvbmRhcnlQcm9jZXNzZXMKLX07Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gUHJvY2Vzc01vZGVsX2gKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuY3Bw
CShyZXZpc2lvbiAxOTI3OTYpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2ll
TWFuYWdlclByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODUsOCArODUsNyBAQCB2b2lkIFdl
YkNvb2tpZU1hbmFnZXJQcm94eTo6cHJvY2Vzc0RpZENsCiAKIGJvb2wgV2ViQ29va2llTWFuYWdl
clByb3h5OjpzaG91bGRUZXJtaW5hdGUoV2ViUHJvY2Vzc1Byb3h5KikgY29uc3QKIHsKLSAgICBy
ZXR1cm4gcHJvY2Vzc1Bvb2woKS0+cHJvY2Vzc01vZGVsKCkgIT0gUHJvY2Vzc01vZGVsU2hhcmVk
U2Vjb25kYXJ5UHJvY2VzcwotICAgICAgICB8fCAobV9hcnJheUNhbGxiYWNrcy5pc0VtcHR5KCkg
JiYgbV9odHRwQ29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2tzLmlzRW1wdHkoKSk7CisgICAgcmV0
dXJuIHRydWU7CiB9CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpyZWZXZWJDb250ZXh0
U3VwcGxlbWVudCgpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9y
UHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNw
ZWN0b3JQcm94eS5jcHAJKHJldmlzaW9uIDE5Mjc5NSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxMiw3ICszMTIs
NiBAQCBXZWJQcm9jZXNzUG9vbCYgV2ViSW5zcGVjdG9yUHJveHk6Omluc3BlCiAgICAgLy8gZ3Vh
cmFudGVlcyBubyBwcm9jZXNzIHNoYXJpbmcgZm9yIG91ciB1c2VyIGludGVyZmFjZS4KICAgICBp
ZiAoIXNfcHJvY2Vzc1Bvb2wpIHsKICAgICAgICAgYXV0byBjb25maWd1cmF0aW9uID0gQVBJOjpQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNyZWF0ZVdpdGhMZWdhY3lPcHRpb25zKCk7Ci0gICAg
ICAgIGNvbmZpZ3VyYXRpb24tPnNldFByb2Nlc3NNb2RlbChQcm9jZXNzTW9kZWxNdWx0aXBsZVNl
Y29uZGFyeVByb2Nlc3Nlcyk7CiAgICAgICAgIHNfcHJvY2Vzc1Bvb2wgPSAmV2ViUHJvY2Vzc1Bv
b2w6OmNyZWF0ZShjb25maWd1cmF0aW9uLmdldCgpKS5sZWFrUmVmKCk7CiAgICAgfTsKIApJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDE5
Mjc5NSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02OTEsMTAgKzY5MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZWF0dGFj
aFRvV2ViUHJvY2VzcygKICAgICBtX3Byb2Nlc3MtPnJlbW92ZVdlYlBhZ2UobV9wYWdlSUQpOwog
ICAgIG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQpOwogCi0gICAgaWYgKG1fcHJvY2Vz
cy0+cHJvY2Vzc1Bvb2woKS5wcm9jZXNzTW9kZWwoKSA9PSBQcm9jZXNzTW9kZWxTaGFyZWRTZWNv
bmRhcnlQcm9jZXNzKQotICAgICAgICBtX3Byb2Nlc3MgPSBtX3Byb2Nlc3MtPnByb2Nlc3NQb29s
KCkuZW5zdXJlU2hhcmVkV2ViUHJvY2VzcygpOwotICAgIGVsc2UKLSAgICAgICAgbV9wcm9jZXNz
ID0gbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLmNyZWF0ZU5ld1dlYlByb2Nlc3NSZXNwZWN0aW5n
UHJvY2Vzc0NvdW50TGltaXQoKTsKKyAgICBtX3Byb2Nlc3MgPSBtX3Byb2Nlc3MtPnByb2Nlc3NQ
b29sKCkuY3JlYXRlTmV3V2ViUHJvY2Vzc1Jlc3BlY3RpbmdQcm9jZXNzQ291bnRMaW1pdCgpOwog
CiAgICAgQVNTRVJUKG1fcHJvY2Vzcy0+c3RhdGUoKSAhPSBDaGlsZFByb2Nlc3NQcm94eTo6U3Rh
dGU6OlRlcm1pbmF0ZWQpOwogICAgIGlmIChtX3Byb2Nlc3MtPnN0YXRlKCkgPT0gQ2hpbGRQcm9j
ZXNzUHJveHk6OlN0YXRlOjpSdW5uaW5nKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCShyZXZpc2lvbiAxOTI3OTYpCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsOCAr
MTAyLDYgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
LXN0YXRpYyBjb25zdCBkb3VibGUgc2hhcmVkU2Vjb25kYXJ5UHJvY2Vzc1NodXRkb3duVGltZW91
dCA9IDYwOwotCiBERUZJTkVfREVCVUdfT05MWV9HTE9CQUwoV1RGOjpSZWZDb3VudGVkTGVha0Nv
dW50ZXIsIHByb2Nlc3NQb29sQ291bnRlciwgKCJXZWJQcm9jZXNzUG9vbCIpKTsKIAogUmVmPFdl
YlByb2Nlc3NQb29sPiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlKEFQSTo6UHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQpAQCAtMjgxLDE3ICsyNzksNiBAQCB2b2lkIFdlYlBy
b2Nlc3NQb29sOjpzZXREb3dubG9hZENsaWVudChzCiAgICAgICAgIG1fZG93bmxvYWRDbGllbnQg
PSBXVEY6Om1vdmUoZG93bmxvYWRDbGllbnQpOwogfQogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpz
ZXRQcm9jZXNzTW9kZWwoUHJvY2Vzc01vZGVsIHByb2Nlc3NNb2RlbCkKLXsKLSAgICAvLyBHdWFy
ZCBhZ2FpbnN0IEFQSSBtaXN1c2UuCi0gICAgaWYgKCFtX3Byb2Nlc3Nlcy5pc0VtcHR5KCkpCi0g
ICAgICAgIENSQVNIKCk7Ci0gICAgaWYgKHByb2Nlc3NNb2RlbCAhPSBQcm9jZXNzTW9kZWxTaGFy
ZWRTZWNvbmRhcnlQcm9jZXNzICYmICFtX21lc3NhZ2VzVG9JbmplY3RlZEJ1bmRsZVBvc3RlZFRv
RW1wdHlDb250ZXh0LmlzRW1wdHkoKSkKLSAgICAgICAgQ1JBU0goKTsKLQotICAgIG1fY29uZmln
dXJhdGlvbi0+c2V0UHJvY2Vzc01vZGVsKHByb2Nlc3NNb2RlbCk7Ci19Ci0KIHZvaWQgV2ViUHJv
Y2Vzc1Bvb2w6OnNldE1heGltdW1OdW1iZXJPZlByb2Nlc3Nlcyh1bnNpZ25lZCBtYXhpbXVtTnVt
YmVyT2ZQcm9jZXNzZXMpCiB7CiAgICAgLy8gR3VhcmQgYWdhaW5zdCBBUEkgbWlzdXNlLgpAQCAt
NTIxLDE0ICs1MDgsNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzRGlkQ2FjaGVQYWdl
CiAgICAgbV9wcm9jZXNzV2l0aFBhZ2VDYWNoZSA9IHByb2Nlc3M7CiB9CiAKLVdlYlByb2Nlc3NQ
cm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZVNoYXJlZFdlYlByb2Nlc3MoKQotewotICAgIEFT
U0VSVChwcm9jZXNzTW9kZWwoKSA9PSBQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNz
KTsKLSAgICBpZiAobV9wcm9jZXNzZXMuaXNFbXB0eSgpKQotICAgICAgICBjcmVhdGVOZXdXZWJQ
cm9jZXNzKCk7Ci0gICAgcmV0dXJuICptX3Byb2Nlc3Nlc1swXTsKLX0KLQogV2ViUHJvY2Vzc1By
b3h5JiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlTmV3V2ViUHJvY2VzcygpCiB7CiAgICAgZW5zdXJl
TmV0d29ya1Byb2Nlc3MoKTsKQEAgLTU5NSw3ICs1NzQsNyBAQCBXZWJQcm9jZXNzUHJveHkmIFdl
YlByb2Nlc3NQb29sOjpjcmVhdGVOCiAgICAgLy8gaWNvbkRhdGFiYXNlUGF0aCBpcyBub24tZW1w
dHkgYnkgZGVmYXVsdCwgYnV0IG1faWNvbkRhdGFiYXNlIGlzbid0IGVuYWJsZWQgaW4gVUkgcHJv
Y2VzcyB1bmxlc3Mgc2V0RGF0YWJhc2VQYXRoIGlzIGNhbGxlZCBleHBsaWNpdGx5LgogICAgIHBh
cmFtZXRlcnMuaWNvbkRhdGFiYXNlRW5hYmxlZCA9ICFpY29uRGF0YWJhc2VQYXRoKCkuaXNFbXB0
eSgpOwogCi0gICAgcGFyYW1ldGVycy50ZXJtaW5hdGlvblRpbWVvdXQgPSAocHJvY2Vzc01vZGVs
KCkgPT0gUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2VzcykgPyBzaGFyZWRTZWNvbmRh
cnlQcm9jZXNzU2h1dGRvd25UaW1lb3V0IDogMDsKKyAgICBwYXJhbWV0ZXJzLnRlcm1pbmF0aW9u
VGltZW91dCA9IDA7CiAKICAgICBwYXJhbWV0ZXJzLnRleHRDaGVja2VyU3RhdGUgPSBUZXh0Q2hl
Y2tlcjo6c3RhdGUoKTsKIApAQCAtNjUxLDE1ICs2MzAsNyBAQCBXZWJQcm9jZXNzUHJveHkmIFdl
YlByb2Nlc3NQb29sOjpjcmVhdGVOCiAKICAgICBtX3Byb2Nlc3Nlcy5hcHBlbmQocHJvY2Vzcy5w
dHIoKSk7CiAKLSAgICBpZiAocHJvY2Vzc01vZGVsKCkgPT0gUHJvY2Vzc01vZGVsU2hhcmVkU2Vj
b25kYXJ5UHJvY2VzcykgewotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSAhPSBtX21lc3Nh
Z2VzVG9JbmplY3RlZEJ1bmRsZVBvc3RlZFRvRW1wdHlDb250ZXh0LnNpemUoKTsgKytpKSB7Ci0g
ICAgICAgICAgICBhdXRvJiBtZXNzYWdlTmFtZUFuZEJvZHkgPSBtX21lc3NhZ2VzVG9JbmplY3Rl
ZEJ1bmRsZVBvc3RlZFRvRW1wdHlDb250ZXh0W2ldOwotCi0gICAgICAgICAgICBwcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpIYW5kbGVJbmplY3RlZEJ1bmRsZU1lc3NhZ2UobWVz
c2FnZU5hbWVBbmRCb2R5LmZpcnN0LCBVc2VyRGF0YShwcm9jZXNzLT50cmFuc2Zvcm1PYmplY3Rz
VG9IYW5kbGVzKG1lc3NhZ2VOYW1lQW5kQm9keS5zZWNvbmQuZ2V0KCkpLmdldCgpKSksIDApOwot
ICAgICAgICB9Ci0gICAgICAgIG1fbWVzc2FnZXNUb0luamVjdGVkQnVuZGxlUG9zdGVkVG9FbXB0
eUNvbnRleHQuY2xlYXIoKTsKLSAgICB9IGVsc2UKLSAgICAgICAgQVNTRVJUKG1fbWVzc2FnZXNU
b0luamVjdGVkQnVuZGxlUG9zdGVkVG9FbXB0eUNvbnRleHQuaXNFbXB0eSgpKTsKKyAgICBBU1NF
UlQobV9tZXNzYWdlc1RvSW5qZWN0ZWRCdW5kbGVQb3N0ZWRUb0VtcHR5Q29udGV4dC5pc0VtcHR5
KCkpOwogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiAgICAgLy8gSW5pdGlhbGl6ZSBy
ZW1vdGUgaW5zcGVjdG9yIGNvbm5lY3Rpb24gbm93IHRoYXQgd2UgaGF2ZSBhIHN1Yi1wcm9jZXNz
IHRoYXQgaXMgaG9zdGluZyBvbmUgb2Ygb3VyIHdlYiB2aWV3cy4KQEAgLTc0MSwzMCArNzEyLDE0
IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmRpc2Nvbm5lY3RQcm9jZXNzKFcKICAgICBpZiAobV9o
YXZlSW5pdGlhbEVtcHR5UHJvY2VzcyAmJiBwcm9jZXNzID09IG1fcHJvY2Vzc2VzLmxhc3QoKSkK
ICAgICAgICAgbV9oYXZlSW5pdGlhbEVtcHR5UHJvY2VzcyA9IGZhbHNlOwogCi0gICAgLy8gRklY
TUUgKE11bHRpLVdlYlByb2Nlc3MpOiA8cmRhcjovL3Byb2JsZW0vMTIyMzk3NjU+IFNvbWUgb2Yg
dGhlIGludmFsaWRhdGlvbiBjYWxscyBiZWxvdyBhcmUgc3RpbGwgbmVjZXNzYXJ5IGluIG11bHRp
LXByb2Nlc3MgbW9kZSwgYnV0IHRoZXkgc2hvdWxkIG9ubHkgYWZmZWN0IGRhdGEgc3RydWN0dXJl
cyBwZXJ0YWluaW5nIHRvIHRoZSBwcm9jZXNzIGJlaW5nIGRpc2Nvbm5lY3RlZC4KKyAgICAvLyBG
SVhNRSAoTXVsdGktV2ViUHJvY2Vzcyk6IDxyZGFyOi8vcHJvYmxlbS8xMjIzOTc2NT4gU29tZSBv
ZiB0aGUgaW52YWxpZGF0aW9uIGNhbGxzIG9mIHRoZSBvdGhlciBzdXBwbGVtZW50cyBhcmUgc3Rp
bGwgbmVjZXNzYXJ5IGluIG11bHRpLXByb2Nlc3MgbW9kZSwgYnV0IHRoZXkgc2hvdWxkIG9ubHkg
YWZmZWN0IGRhdGEgc3RydWN0dXJlcyBwZXJ0YWluaW5nIHRvIHRoZSBwcm9jZXNzIGJlaW5nIGRp
c2Nvbm5lY3RlZC4KICAgICAvLyBDbGVhcmluZyBldmVyeXRoaW5nIGNhdXNlcyBhc3NlcnRpb24g
ZmFpbHVyZXMsIHNvIGl0J3MgbGVzcyB0cm91YmxlIHRvIHNraXAgdGhhdCBmb3Igbm93LgotICAg
IGlmIChwcm9jZXNzTW9kZWwoKSAhPSBQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNz
KSB7Ci0gICAgICAgIFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+IHByb3RlY3QocHJvY2Vzcyk7Ci0g
ICAgICAgIGlmIChtX3Byb2Nlc3NXaXRoUGFnZUNhY2hlID09IHByb2Nlc3MpCi0gICAgICAgICAg
ICBtX3Byb2Nlc3NXaXRoUGFnZUNhY2hlID0gMDsKLQotICAgICAgICBzdGF0aWNfY2FzdDxXZWJD
b250ZXh0U3VwcGxlbWVudCo+KHN1cHBsZW1lbnQ8V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk+
KCkpLT5wcm9jZXNzRGlkQ2xvc2UocHJvY2Vzcyk7Ci0KLSAgICAgICAgbV9wcm9jZXNzZXMucmVt
b3ZlRmlyc3QocHJvY2Vzcyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBXZWJDb250
ZXh0U3VwcGxlbWVudE1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3N1cHBsZW1lbnRzLmJlZ2lu
KCk7Ci0gICAgV2ViQ29udGV4dFN1cHBsZW1lbnRNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1f
c3VwcGxlbWVudHMuZW5kKCk7Ci0gICAgZm9yICg7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAg
aXQtPnZhbHVlLT5wcm9jZXNzRGlkQ2xvc2UocHJvY2Vzcyk7Ci0KLSAgICAvLyBUaGUgdmVjdG9y
IG1heSBoYXZlIHRoZSBsYXN0IHJlZmVyZW5jZSB0byBwcm9jZXNzIHByb3h5LCB3aGljaCBpbiB0
dXJuIG1heSBoYXZlIHRoZSBsYXN0IHJlZmVyZW5jZSB0byB0aGUgY29udGV4dC4KLSAgICAvLyBT
aW5jZSB2ZWN0b3IgZWxlbWVudHMgYXJlIGRlc3Ryb3llZCBpbiBwbGFjZSwgd2Ugd291bGQgcmVj
dXJzZSBpbnRvIFdlYlByb2Nlc3NQcm94eSBkZXN0cnVjdG9yCi0gICAgLy8gaWYgaXQgd2VyZSBp
bnZva2VkIGZyb20gVmVjdG9yOjpyZW1vdmUoKS4gUmVmUHRyIGRlbGF5cyBkZXN0cnVjdGlvbiB1
bnRpbCBpdCdzIHNhZmUuCiAgICAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gcHJvdGVjdChwcm9j
ZXNzKTsKICAgICBpZiAobV9wcm9jZXNzV2l0aFBhZ2VDYWNoZSA9PSBwcm9jZXNzKQogICAgICAg
ICBtX3Byb2Nlc3NXaXRoUGFnZUNhY2hlID0gbnVsbHB0cjsKKworICAgIHN0YXRpY19jYXN0PFdl
YkNvbnRleHRTdXBwbGVtZW50Kj4oc3VwcGxlbWVudDxXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94
eT4oKSktPnByb2Nlc3NEaWRDbG9zZShwcm9jZXNzKTsKKwogICAgIG1fcHJvY2Vzc2VzLnJlbW92
ZUZpcnN0KHByb2Nlc3MpOwogfQogCkBAIC03OTYsMTggKzc1MSwxNCBAQCBSZWY8V2ViUGFnZVBy
b3h5PiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlCiAgICAgfQogCiAgICAgUmVmUHRyPFdlYlByb2Nl
c3NQcm94eT4gcHJvY2VzczsKLSAgICBpZiAocHJvY2Vzc01vZGVsKCkgPT0gUHJvY2Vzc01vZGVs
U2hhcmVkU2Vjb25kYXJ5UHJvY2VzcykgewotICAgICAgICBwcm9jZXNzID0gJmVuc3VyZVNoYXJl
ZFdlYlByb2Nlc3MoKTsKLSAgICB9IGVsc2UgewotICAgICAgICBpZiAobV9oYXZlSW5pdGlhbEVt
cHR5UHJvY2VzcykgewotICAgICAgICAgICAgcHJvY2VzcyA9IG1fcHJvY2Vzc2VzLmxhc3QoKTsK
LSAgICAgICAgICAgIG1faGF2ZUluaXRpYWxFbXB0eVByb2Nlc3MgPSBmYWxzZTsKLSAgICAgICAg
fSBlbHNlIGlmIChwYWdlQ29uZmlndXJhdGlvbi0+cmVsYXRlZFBhZ2UoKSkgewotICAgICAgICAg
ICAgLy8gU2hhcmluZyBwcm9jZXNzZXMsIGUuZy4gd2hlbiBjcmVhdGluZyB0aGUgcGFnZSB2aWEg
d2luZG93Lm9wZW4oKS4KLSAgICAgICAgICAgIHByb2Nlc3MgPSAmcGFnZUNvbmZpZ3VyYXRpb24t
PnJlbGF0ZWRQYWdlKCktPnByb2Nlc3MoKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBw
cm9jZXNzID0gJmNyZWF0ZU5ld1dlYlByb2Nlc3NSZXNwZWN0aW5nUHJvY2Vzc0NvdW50TGltaXQo
KTsKLSAgICB9CisgICAgaWYgKG1faGF2ZUluaXRpYWxFbXB0eVByb2Nlc3MpIHsKKyAgICAgICAg
cHJvY2VzcyA9IG1fcHJvY2Vzc2VzLmxhc3QoKTsKKyAgICAgICAgbV9oYXZlSW5pdGlhbEVtcHR5
UHJvY2VzcyA9IGZhbHNlOworICAgIH0gZWxzZSBpZiAocGFnZUNvbmZpZ3VyYXRpb24tPnJlbGF0
ZWRQYWdlKCkpIHsKKyAgICAgICAgLy8gU2hhcmluZyBwcm9jZXNzZXMsIGUuZy4gd2hlbiBjcmVh
dGluZyB0aGUgcGFnZSB2aWEgd2luZG93Lm9wZW4oKS4KKyAgICAgICAgcHJvY2VzcyA9ICZwYWdl
Q29uZmlndXJhdGlvbi0+cmVsYXRlZFBhZ2UoKS0+cHJvY2VzcygpOworICAgIH0gZWxzZQorICAg
ICAgICBwcm9jZXNzID0gJmNyZWF0ZU5ld1dlYlByb2Nlc3NSZXNwZWN0aW5nUHJvY2Vzc0NvdW50
TGltaXQoKTsKIAogICAgIHJldHVybiBwcm9jZXNzLT5jcmVhdGVXZWJQYWdlKHBhZ2VDbGllbnQs
IFdURjo6bW92ZShwYWdlQ29uZmlndXJhdGlvbikpOwogfQpAQCAtODQ0LDEyICs3OTUsNiBAQCBE
b3dubG9hZFByb3h5KiBXZWJQcm9jZXNzUG9vbDo6cmVzdW1lRG93CiAKIHZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OnBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShjb25zdCBTdHJpbmcmIG1lc3NhZ2VO
YW1lLCBBUEk6Ok9iamVjdCogbWVzc2FnZUJvZHkpCiB7Ci0gICAgaWYgKG1fcHJvY2Vzc2VzLmlz
RW1wdHkoKSkgewotICAgICAgICBpZiAocHJvY2Vzc01vZGVsKCkgPT0gUHJvY2Vzc01vZGVsU2hh
cmVkU2Vjb25kYXJ5UHJvY2VzcykKLSAgICAgICAgICAgIG1fbWVzc2FnZXNUb0luamVjdGVkQnVu
ZGxlUG9zdGVkVG9FbXB0eUNvbnRleHQuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKG1lc3NhZ2VOYW1l
LCBtZXNzYWdlQm9keSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAgZm9yIChhdXRv
JiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpIHsKICAgICAgICAgLy8gRklYTUU6IFJldHVybiBlYXJs
eSBpZiB0aGUgbWVzc2FnZSBib2R5IGNvbnRhaW5zIGFueSByZWZlcmVuY2VzIHRvIFdLUGFnZVJl
ZnMvV0tGcmFtZVJlZnMgZXRjLiBzaW5jZSB0aGV5J3JlIGxvY2FsIHRvIGEgcHJvY2Vzcy4KICAg
ICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6SGFuZGxlSW5qZWN0ZWRC
dW5kbGVNZXNzYWdlKG1lc3NhZ2VOYW1lLCBVc2VyRGF0YShwcm9jZXNzLT50cmFuc2Zvcm1PYmpl
Y3RzVG9IYW5kbGVzKG1lc3NhZ2VCb2R5KS5nZXQoKSkpLCAwKTsKQEAgLTExNTcsMTcgKzExMDIs
NyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpnZXRTdGF0aXN0aWNzKHVpbnQzCiAKIHZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OnJlcXVlc3RXZWJDb250ZW50U3RhdGlzdGljcyhTdGF0aXN0aWNzUmVxdWVz
dCogcmVxdWVzdCkKIHsKLSAgICBpZiAocHJvY2Vzc01vZGVsKCkgPT0gUHJvY2Vzc01vZGVsU2hh
cmVkU2Vjb25kYXJ5UHJvY2VzcykgewotICAgICAgICBpZiAobV9wcm9jZXNzZXMuaXNFbXB0eSgp
KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAKLSAgICAgICAgdWludDY0X3QgcmVxdWVz
dElEID0gcmVxdWVzdC0+YWRkT3V0c3RhbmRpbmdSZXF1ZXN0KCk7Ci0gICAgICAgIG1fc3RhdGlz
dGljc1JlcXVlc3RzLnNldChyZXF1ZXN0SUQsIHJlcXVlc3QpOwotICAgICAgICBtX3Byb2Nlc3Nl
c1swXS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6R2V0V2ViQ29yZVN0YXRpc3RpY3MocmVx
dWVzdElEKSwgMCk7Ci0KLSAgICB9IGVsc2UgewotICAgICAgICAvLyBGSVhNRSAoTXVsdGktV2Vi
UHJvY2VzcykgPHJkYXI6Ly9wcm9ibGVtLzEzMjAwMDU5PjogTWFrZSBnZXR0aW5nIHN0YXRpc3Rp
Y3MgZnJvbSBtdWx0aXBsZSBXZWJQcm9jZXNzZXMgd29yay4KLSAgICB9CisgICAgLy8gRklYTUUg
KE11bHRpLVdlYlByb2Nlc3MpIDxyZGFyOi8vcHJvYmxlbS8xMzIwMDA1OT46IE1ha2UgZ2V0dGlu
ZyBzdGF0aXN0aWNzIGZyb20gbXVsdGlwbGUgV2ViUHJvY2Vzc2VzIHdvcmsuCiB9CiAKIHZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OnJlcXVlc3ROZXR3b3JraW5nU3RhdGlzdGljcyhTdGF0aXN0aWNzUmVx
dWVzdCogcmVxdWVzdCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5oCShyZXZpc2lvbiAxOTI3OTYpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNiBAQAogI2luY2x1ZGUg
Ik5ldHdvcmtQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlICJQbHVnSW5BdXRvU3RhcnRQcm92aWRl
ci5oIgogI2luY2x1ZGUgIlBsdWdpbkluZm9TdG9yZS5oIgotI2luY2x1ZGUgIlByb2Nlc3NNb2Rl
bC5oIgogI2luY2x1ZGUgIlByb2Nlc3NUaHJvdHRsZXIuaCIKICNpbmNsdWRlICJTdGF0aXN0aWNz
UmVxdWVzdC5oIgogI2luY2x1ZGUgIlZpc2l0ZWRMaW5rU3RvcmUuaCIKQEAgLTEzNiw5ICsxMzUs
NiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRIaXN0b3J5Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxB
UEk6OkxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50Pik7CiAgICAgdm9pZCBzZXREb3dubG9hZENs
aWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpEb3dubG9hZENsaWVudD4pOwogCi0gICAgdm9pZCBz
ZXRQcm9jZXNzTW9kZWwoUHJvY2Vzc01vZGVsKTsgLy8gQ2FuIG9ubHkgYmUgY2FsbGVkIHdoZW4g
dGhlcmUgYXJlIG5vIHByb2Nlc3NlcyBydW5uaW5nLgotICAgIFByb2Nlc3NNb2RlbCBwcm9jZXNz
TW9kZWwoKSBjb25zdCB7IHJldHVybiBtX2NvbmZpZ3VyYXRpb24tPnByb2Nlc3NNb2RlbCgpOyB9
Ci0KICAgICB2b2lkIHNldE1heGltdW1OdW1iZXJPZlByb2Nlc3Nlcyh1bnNpZ25lZCk7IC8vIENh
biBvbmx5IGJlIGNhbGxlZCB3aGVuIHRoZXJlIGFyZSBubyBwcm9jZXNzZXMgcnVubmluZy4KICAg
ICB1bnNpZ25lZCBtYXhpbXVtTnVtYmVyT2ZQcm9jZXNzZXMoKSBjb25zdCB7IHJldHVybiAhbV9j
b25maWd1cmF0aW9uLT5tYXhpbXVtUHJvY2Vzc0NvdW50KCkgPyBVSU5UX01BWCA6IG1fY29uZmln
dXJhdGlvbi0+bWF4aW11bVByb2Nlc3NDb3VudCgpOyB9CiAKQEAgLTI0NSw3ICsyNDEsNiBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIGFsbG93U3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdChj
b25zdCBXZWJDZXJ0aWZpY2F0ZUluZm8qLCBjb25zdCBTdHJpbmcmIGhvc3QpOwogCi0gICAgV2Vi
UHJvY2Vzc1Byb3h5JiBlbnN1cmVTaGFyZWRXZWJQcm9jZXNzKCk7CiAgICAgV2ViUHJvY2Vzc1By
b3h5JiBjcmVhdGVOZXdXZWJQcm9jZXNzUmVzcGVjdGluZ1Byb2Nlc3NDb3VudExpbWl0KCk7IC8v
IFdpbGwgcmV0dXJuIGFuIGV4aXN0aW5nIG9uZSBpZiBsaW1pdCBpcyBtZXQuCiAgICAgdm9pZCB3
YXJtSW5pdGlhbFByb2Nlc3MoKTsKIApAQCAtNTU4LDE3ICs1NTMsMTIgQEAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4KIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNlbmRUb0FsbFByb2Nlc3Nlc1JlbGF1bmNo
aW5nVGhlbUlmTmVjZXNzYXJ5KGNvbnN0IFQmIG1lc3NhZ2UpCiB7CiAgICAgLy8gRklYTUUgKE11
bHRpLVdlYlByb2Nlc3MpOiBXZWJQcm9jZXNzUG9vbCBkb2Vzbid0IHRyYWNrIHByb2Nlc3NlcyB0
aGF0IGhhdmUgZXhpdGVkLCBzbyBpdCBjYW5ub3QgcmVsYXVuY2ggdGhlc2UuIFBlcmhhcHMgdGhp
cyBmdW5jdGlvbmFsaXR5IHdvbid0IGJlIG5lZWRlZCBpbiB0aGlzIG1vZGUuCi0gICAgaWYgKHBy
b2Nlc3NNb2RlbCgpID09IFByb2Nlc3NNb2RlbFNoYXJlZFNlY29uZGFyeVByb2Nlc3MpCi0gICAg
ICAgIGVuc3VyZVNoYXJlZFdlYlByb2Nlc3MoKTsKICAgICBzZW5kVG9BbGxQcm9jZXNzZXMobWVz
c2FnZSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiB2b2lkIFdlYlByb2Nlc3NQb29sOjpz
ZW5kVG9PbmVQcm9jZXNzKFQmJiBtZXNzYWdlKQogewotICAgIGlmIChwcm9jZXNzTW9kZWwoKSA9
PSBQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzKQotICAgICAgICBlbnN1cmVTaGFy
ZWRXZWJQcm9jZXNzKCk7Ci0KICAgICBib29sIG1lc3NhZ2VTZW50ID0gZmFsc2U7CiAgICAgc2l6
ZV90IHByb2Nlc3NDb3VudCA9IG1fcHJvY2Vzc2VzLnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHByb2Nlc3NDb3VudDsgKytpKSB7CkBAIC01ODAsNyArNTcwLDcgQEAgdm9pZCBX
ZWJQcm9jZXNzUG9vbDo6c2VuZFRvT25lUHJvY2VzcyhUJgogICAgICAgICB9CiAgICAgfQogCi0g
ICAgaWYgKCFtZXNzYWdlU2VudCAmJiBwcm9jZXNzTW9kZWwoKSA9PSBQcm9jZXNzTW9kZWxNdWx0
aXBsZVNlY29uZGFyeVByb2Nlc3NlcykgeworICAgIGlmICghbWVzc2FnZVNlbnQpIHsKICAgICAg
ICAgd2FybUluaXRpYWxQcm9jZXNzKCk7CiAgICAgICAgIFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+
IHByb2Nlc3MgPSBtX3Byb2Nlc3Nlcy5sYXN0KCk7CiAgICAgICAgIGlmIChwcm9jZXNzLT5jYW5T
ZW5kTWVzc2FnZSgpKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElQcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcAkocmV2aXNpb24gMTky
Nzk2KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSwxNCArNDEsNyBAQCBSZWY8UHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uPiBQcm9jZXNzUG9vCiAgICAgYXV0byBjb25maWd1cmF0aW9uID0g
UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKIAogICAgIGNvbmZpZ3VyYXRpb24t
Pm1fc2hvdWxkSGF2ZUxlZ2FjeURhdGFTdG9yZSA9IHRydWU7Ci0jaWYgUExBVEZPUk0oR1RLKQot
ICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBpZmRlZiBvbmNlIGFsbCBwb3J0cyBoYXZlIHN3aXRj
aGVkIHRvIHVzZSBhbHdheXMgTmV0d29ya1Byb2Nlc3MuCi0gICAgLy8gU2VlIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE0MTguCi0gICAgY29uZmlndXJhdGlvbi0+
bV9wcm9jZXNzTW9kZWwgPSBXZWJLaXQ6OlByb2Nlc3NNb2RlbE11bHRpcGxlU2Vjb25kYXJ5UHJv
Y2Vzc2VzOwogICAgIGNvbmZpZ3VyYXRpb24tPm1fbWF4aW11bVByb2Nlc3NDb3VudCA9IDE7Ci0j
ZWxzZQotICAgIGNvbmZpZ3VyYXRpb24tPm1fcHJvY2Vzc01vZGVsID0gV2ViS2l0OjpQcm9jZXNz
TW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzOwotI2VuZGlmCiAgICAgY29uZmlndXJhdGlvbi0+
bV9jYWNoZU1vZGVsID0gV2ViS2l0OjpDYWNoZU1vZGVsRG9jdW1lbnRWaWV3ZXI7CiAKICAgICBj
b25maWd1cmF0aW9uLT5tX2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSBXZWJLaXQ6OldlYlBy
b2Nlc3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5
KCk7CkBAIC04MCw3ICs3Myw2IEBAIFJlZjxQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24+IFByb2Nl
c3NQb28KICAgICBhdXRvIGNvcHkgPSB0aGlzLT5jcmVhdGUoKTsKIAogICAgIGNvcHktPm1fc2hv
dWxkSGF2ZUxlZ2FjeURhdGFTdG9yZSA9IHRoaXMtPm1fc2hvdWxkSGF2ZUxlZ2FjeURhdGFTdG9y
ZTsKLSAgICBjb3B5LT5tX3Byb2Nlc3NNb2RlbCA9IHRoaXMtPm1fcHJvY2Vzc01vZGVsOwogICAg
IGNvcHktPm1fbWF4aW11bVByb2Nlc3NDb3VudCA9IHRoaXMtPm1fbWF4aW11bVByb2Nlc3NDb3Vu
dDsKICAgICBjb3B5LT5tX2NhY2hlTW9kZWwgPSB0aGlzLT5tX2NhY2hlTW9kZWw7CiAgICAgY29w
eS0+bV9kaXNrQ2FjaGVTaXplT3ZlcnJpZGUgPSB0aGlzLT5tX2Rpc2tDYWNoZVNpemVPdmVycmlk
ZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9B
UElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaAkocmV2aXNpb24gMTkyNzk2KQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaAkod29y
a2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNiBAQAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAj
aW5jbHVkZSAiQ2FjaGVNb2RlbC5oIgotI2luY2x1ZGUgIlByb2Nlc3NNb2RlbC5oIgogI2luY2x1
ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CkBAIC00OCw5ICs0Nyw2IEBAIHB1YmxpYzoKICAgICBib29sIHNob3Vs
ZEhhdmVMZWdhY3lEYXRhU3RvcmUoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZEhhdmVMZWdhY3lE
YXRhU3RvcmU7IH0KICAgICB2b2lkIHNldFNob3VsZEhhdmVMZWdhY3lEYXRhU3RvcmUoYm9vbCBz
aG91bGRIYXZlTGVnYWN5RGF0YVN0b3JlKSB7IG1fc2hvdWxkSGF2ZUxlZ2FjeURhdGFTdG9yZSA9
IHNob3VsZEhhdmVMZWdhY3lEYXRhU3RvcmU7IH0KIAotICAgIFdlYktpdDo6UHJvY2Vzc01vZGVs
IHByb2Nlc3NNb2RlbCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvY2Vzc01vZGVsOyB9Ci0gICAgdm9p
ZCBzZXRQcm9jZXNzTW9kZWwoV2ViS2l0OjpQcm9jZXNzTW9kZWwgcHJvY2Vzc01vZGVsKSB7IG1f
cHJvY2Vzc01vZGVsID0gcHJvY2Vzc01vZGVsOyB9IAotCiAgICAgdW5zaWduZWQgbWF4aW11bVBy
b2Nlc3NDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fbWF4aW11bVByb2Nlc3NDb3VudDsgfQogICAg
IHZvaWQgc2V0TWF4aW11bVByb2Nlc3NDb3VudCh1bnNpZ25lZCBtYXhpbXVtUHJvY2Vzc0NvdW50
KSB7IG1fbWF4aW11bVByb2Nlc3NDb3VudCA9IG1heGltdW1Qcm9jZXNzQ291bnQ7IH0gCiAKQEAg
LTkzLDcgKzg5LDYgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBib29sIG1fc2hvdWxkSGF2ZUxl
Z2FjeURhdGFTdG9yZSB7IGZhbHNlIH07CiAKLSAgICBXZWJLaXQ6OlByb2Nlc3NNb2RlbCBtX3By
b2Nlc3NNb2RlbCB7IFdlYktpdDo6UHJvY2Vzc01vZGVsTXVsdGlwbGVTZWNvbmRhcnlQcm9jZXNz
ZXMgfTsKICAgICB1bnNpZ25lZCBtX21heGltdW1Qcm9jZXNzQ291bnQgeyAwIH07CiAgICAgV2Vi
S2l0OjpDYWNoZU1vZGVsIG1fY2FjaGVNb2RlbCB7IFdlYktpdDo6Q2FjaGVNb2RlbFByaW1hcnlX
ZWJCcm93c2VyIH07CiAgICAgaW50NjRfdCBtX2Rpc2tDYWNoZVNpemVPdmVycmlkZSB7IC0xIH07
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCShyZXZp
c2lvbiAxOTI3OTUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJIVFRQQ29va2ll
QWNjZXB0UG9saWN5LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0TWVk
aWFUeXBlLmgiCiAjaW5jbHVkZSAiUGx1Z2luTW9kdWxlSW5mby5oIgotI2luY2x1ZGUgIlByb2Nl
c3NNb2RlbC5oIgogI2luY2x1ZGUgIlJlc291cmNlQ2FjaGVzVG9DbGVhci5oIgogI2luY2x1ZGUg
IldLQnVuZGxlSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIldLQ29udGV4dC5oIgpAQCAtMjMw
LDMxICsyMjksNiBAQCBpbmxpbmUgV0tDYWNoZU1vZGVsIHRvQVBJKENhY2hlTW9kZWwgY2FjCiAg
ICAgcmV0dXJuIGtXS0NhY2hlTW9kZWxEb2N1bWVudFZpZXdlcjsKIH0KIAotaW5saW5lIFByb2Nl
c3NNb2RlbCB0b1Byb2Nlc3NNb2RlbChXS1Byb2Nlc3NNb2RlbCB3a1Byb2Nlc3NNb2RlbCkKLXsK
LSAgICBzd2l0Y2ggKHdrUHJvY2Vzc01vZGVsKSB7Ci0gICAgY2FzZSBrV0tQcm9jZXNzTW9kZWxT
aGFyZWRTZWNvbmRhcnlQcm9jZXNzOgotICAgICAgICByZXR1cm4gUHJvY2Vzc01vZGVsU2hhcmVk
U2Vjb25kYXJ5UHJvY2VzczsKLSAgICBjYXNlIGtXS1Byb2Nlc3NNb2RlbE11bHRpcGxlU2Vjb25k
YXJ5UHJvY2Vzc2VzOgotICAgICAgICByZXR1cm4gUHJvY2Vzc01vZGVsTXVsdGlwbGVTZWNvbmRh
cnlQcm9jZXNzZXM7Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0
dXJuIFByb2Nlc3NNb2RlbFNoYXJlZFNlY29uZGFyeVByb2Nlc3M7Ci19Ci0KLWlubGluZSBXS1By
b2Nlc3NNb2RlbCB0b0FQSShQcm9jZXNzTW9kZWwgcHJvY2Vzc01vZGVsKQotewotICAgIHN3aXRj
aCAocHJvY2Vzc01vZGVsKSB7Ci0gICAgY2FzZSBQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQ
cm9jZXNzOgotICAgICAgICByZXR1cm4ga1dLUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJv
Y2VzczsKLSAgICBjYXNlIFByb2Nlc3NNb2RlbE11bHRpcGxlU2Vjb25kYXJ5UHJvY2Vzc2VzOgot
ICAgICAgICByZXR1cm4ga1dLUHJvY2Vzc01vZGVsTXVsdGlwbGVTZWNvbmRhcnlQcm9jZXNzZXM7
Ci0gICAgfQotICAgIAotICAgIHJldHVybiBrV0tQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQ
cm9jZXNzOwotfQotCiBpbmxpbmUgRm9udFNtb290aGluZ0xldmVsIHRvRm9udFNtb290aGluZ0xl
dmVsKFdLRm9udFNtb290aGluZ0xldmVsIHdrTGV2ZWwpCiB7CiAgICAgc3dpdGNoICh3a0xldmVs
KSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNw
cAkocmV2aXNpb24gMTkyNzk2KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
Q29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyOSwxNiArMzI5LDYgQEAgV0tDYWNoZU1v
ZGVsIFdLQ29udGV4dEdldENhY2hlTW9kZWwoV0tDbwogICAgIHJldHVybiB0b0FQSSh0b0ltcGwo
Y29udGV4dFJlZiktPmNhY2hlTW9kZWwoKSk7CiB9CiAKLXZvaWQgV0tDb250ZXh0U2V0UHJvY2Vz
c01vZGVsKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1Byb2Nlc3NNb2RlbCBwcm9jZXNzTW9k
ZWwpCi17Ci0gICAgdG9JbXBsKGNvbnRleHRSZWYpLT5zZXRQcm9jZXNzTW9kZWwodG9Qcm9jZXNz
TW9kZWwocHJvY2Vzc01vZGVsKSk7Ci19Ci0KLVdLUHJvY2Vzc01vZGVsIFdLQ29udGV4dEdldFBy
b2Nlc3NNb2RlbChXS0NvbnRleHRSZWYgY29udGV4dFJlZikKLXsKLSAgICByZXR1cm4gdG9BUEko
dG9JbXBsKGNvbnRleHRSZWYpLT5wcm9jZXNzTW9kZWwoKSk7Ci19Ci0KIHZvaWQgV0tDb250ZXh0
U2V0TWF4aW11bU51bWJlck9mUHJvY2Vzc2VzKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCB1bnNp
Z25lZCBudW1iZXJPZlByb2Nlc3NlcykKIHsKICAgICB0b0ltcGwoY29udGV4dFJlZiktPnNldE1h
eGltdW1OdW1iZXJPZlByb2Nlc3NlcyhudW1iZXJPZlByb2Nlc3Nlcyk7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5oCShyZXZpc2lvbiAxOTI3OTUpCisr
KyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTc1LDYgKzc1LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgV0tDb250ZXh0Q2xpZW50VjEgewog
ICAgIFdLQ29udGV4dENvcHlXZWJDcnlwdG9NYXN0ZXJLZXlDYWxsYmFjayAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29weVdlYkNyeXB0b01hc3RlcktleTsKIH0gV0tDb250ZXh0Q2xpZW50
VjE7CiAKKy8vIEZJWE1FOiBSZW1vdmUgdGhlc2Ugb25jZSBzdXBwb3J0IGZvciBNYXZlcmlja3Mg
aGFzIGJlZW4gZHJvcHBlZC4KIGVudW0gewogICAgIGtXS1Byb2Nlc3NNb2RlbFNoYXJlZFNlY29u
ZGFyeVByb2Nlc3MgPSAwLAogICAgIGtXS1Byb2Nlc3NNb2RlbE11bHRpcGxlU2Vjb25kYXJ5UHJv
Y2Vzc2VzID0gMQpAQCAtMTExLDggKzExMiw5IEBAIFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dENs
ZWFyVmlzaXRlZExpbmsKIFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldENhY2hlTW9kZWwoV0tD
b250ZXh0UmVmIGNvbnRleHQsIFdLQ2FjaGVNb2RlbCBjYWNoZU1vZGVsKTsKIFdLX0VYUE9SVCBX
S0NhY2hlTW9kZWwgV0tDb250ZXh0R2V0Q2FjaGVNb2RlbChXS0NvbnRleHRSZWYgY29udGV4dCk7
CiAKLVdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldFByb2Nlc3NNb2RlbChXS0NvbnRleHRSZWYg
Y29udGV4dCwgV0tQcm9jZXNzTW9kZWwgcHJvY2Vzc01vZGVsKTsKLVdLX0VYUE9SVCBXS1Byb2Nl
c3NNb2RlbCBXS0NvbnRleHRHZXRQcm9jZXNzTW9kZWwoV0tDb250ZXh0UmVmIGNvbnRleHQpOwor
Ly8gRklYTUU6IE1vdmUgdGhlc2UgdG8gV0tEZXByZWNhdGVkRnVuY3Rpb25zLmNwcCBvbmNlIHN1
cHBvcnQgZm9yIE1hdmVyaWNrcyBoYXMgYmVlbiBkcm9wcGVkLgorV0tfRVhQT1JUIHZvaWQgV0tD
b250ZXh0U2V0UHJvY2Vzc01vZGVsKFdLQ29udGV4dFJlZiwgV0tQcm9jZXNzTW9kZWwpOworV0tf
RVhQT1JUIFdLUHJvY2Vzc01vZGVsIFdLQ29udGV4dEdldFByb2Nlc3NNb2RlbChXS0NvbnRleHRS
ZWYpOwogCiBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRTZXRNYXhpbXVtTnVtYmVyT2ZQcm9jZXNz
ZXMoV0tDb250ZXh0UmVmIGNvbnRleHQsIHVuc2lnbmVkIG51bWJlck9mUHJvY2Vzc2VzKTsKIFdL
X0VYUE9SVCB1bnNpZ25lZCBXS0NvbnRleHRHZXRNYXhpbXVtTnVtYmVyT2ZQcm9jZXNzZXMoV0tD
b250ZXh0UmVmIGNvbnRleHQpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1Byb2Nlc3NHcm91cC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc0dyb3VwLm1tCShyZXZpc2lvbiAxOTI3OTYpCisrKyBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc0dyb3VwLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xOTIsOSArMTkyLDYgQEAgLSAoaWQpaW5pdFdpdGhJbmplY3RlZEJ1bmRs
ZVVSTDooTlNVUkwgKgogCiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gQVBJOjpQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb246OmNyZWF0ZVdpdGhMZWdhY3lPcHRpb25zKCk7CiAgICAgY29uZmlndXJh
dGlvbi0+c2V0SW5qZWN0ZWRCdW5kbGVQYXRoKGJ1bmRsZVVSTCA/IFN0cmluZyhidW5kbGVVUkwu
cGF0aCkgOiBTdHJpbmcoKSk7Ci0jaWYgUExBVEZPUk0oSU9TKQotICAgIGNvbmZpZ3VyYXRpb24t
PnNldFByb2Nlc3NNb2RlbChQcm9jZXNzTW9kZWxNdWx0aXBsZVNlY29uZGFyeVByb2Nlc3Nlcyk7
Ci0jZW5kaWYKIAogICAgIF9wcm9jZXNzUG9vbCA9IFdlYlByb2Nlc3NQb29sOjpjcmVhdGUoY29u
ZmlndXJhdGlvbik7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tQcm9jZXNzUG9vbC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0JKHJldmlzaW9uIDE5Mjc5NSkKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQkod29ya2luZyBjb3B5
KQpAQCAtMzAsNyArMzAsNiBAQAogCiAjaW1wb3J0ICJDYWNoZU1vZGVsLmgiCiAjaW1wb3J0ICJE
b3dubG9hZENsaWVudC5oIgotI2ltcG9ydCAiUHJvY2Vzc01vZGVsLmgiCiAjaW1wb3J0ICJTYW5k
Ym94VXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJXS09iamVjdC5oIgogI2ltcG9ydCAiV2Vha09iakNQ
dHIuaCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tf
Y29udGV4dC5jcHAJKHJldmlzaW9uIDE5Mjc5NikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU3LDQ1ICsyNTcs
MTMgQEAgRXdrX0NhY2hlX01vZGVsIEV3a0NvbnRleHQ6OmNhY2hlTW9kZWwoKQogICAgIHJldHVy
biBzdGF0aWNfY2FzdDxFd2tfQ2FjaGVfTW9kZWw+KFdLQ29udGV4dEdldENhY2hlTW9kZWwobV9j
b250ZXh0LmdldCgpKSk7CiB9CiAKLWlubGluZSBXS1Byb2Nlc3NNb2RlbCB0b1dLUHJvY2Vzc01v
ZGVsKEV3a19Qcm9jZXNzX01vZGVsIHByb2Nlc3NNb2RlbCkKK3ZvaWQgRXdrQ29udGV4dDo6c2V0
UHJvY2Vzc01vZGVsKEV3a19Qcm9jZXNzX01vZGVsKQogewotICAgIHN3aXRjaCAocHJvY2Vzc01v
ZGVsKSB7Ci0gICAgY2FzZSBFV0tfUFJPQ0VTU19NT0RFTF9TSEFSRURfU0VDT05EQVJZOgotICAg
ICAgICByZXR1cm4ga1dLUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2VzczsKLSAgICBj
YXNlIEVXS19QUk9DRVNTX01PREVMX01VTFRJUExFX1NFQ09OREFSWToKLSAgICAgICAgcmV0dXJu
IGtXS1Byb2Nlc3NNb2RlbE11bHRpcGxlU2Vjb25kYXJ5UHJvY2Vzc2VzOwotICAgIH0KLSAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLQotICAgIHJldHVybiBrV0tQcm9jZXNzTW9kZWxTaGFyZWRT
ZWNvbmRhcnlQcm9jZXNzOwotfQotCi12b2lkIEV3a0NvbnRleHQ6OnNldFByb2Nlc3NNb2RlbChF
d2tfUHJvY2Vzc19Nb2RlbCBwcm9jZXNzTW9kZWwpCi17Ci0gICAgV0tQcm9jZXNzTW9kZWwgbmV3
V0tQcm9jZXNzTW9kZWwgPSB0b1dLUHJvY2Vzc01vZGVsKHByb2Nlc3NNb2RlbCk7Ci0KLSAgICBp
ZiAoV0tDb250ZXh0R2V0UHJvY2Vzc01vZGVsKG1fY29udGV4dC5nZXQoKSkgPT0gbmV3V0tQcm9j
ZXNzTW9kZWwpCi0gICAgICAgIHJldHVybjsKLQotICAgIFdLQ29udGV4dFNldFByb2Nlc3NNb2Rl
bChtX2NvbnRleHQuZ2V0KCksIG5ld1dLUHJvY2Vzc01vZGVsKTsKLX0KLQotaW5saW5lIEV3a19Q
cm9jZXNzX01vZGVsIHRvRXdrUHJvY2Vzc01vZGVsKFdLUHJvY2Vzc01vZGVsIHByb2Nlc3NNb2Rl
bCkKLXsKLSAgICBzd2l0Y2ggKHByb2Nlc3NNb2RlbCkgewotICAgIGNhc2Uga1dLUHJvY2Vzc01v
ZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2VzczoKLSAgICAgICAgcmV0dXJuIEVXS19QUk9DRVNTX01P
REVMX1NIQVJFRF9TRUNPTkRBUlk7Ci0gICAgY2FzZSBrV0tQcm9jZXNzTW9kZWxNdWx0aXBsZVNl
Y29uZGFyeVByb2Nlc3NlczoKLSAgICAgICAgcmV0dXJuIEVXS19QUk9DRVNTX01PREVMX01VTFRJ
UExFX1NFQ09OREFSWTsKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0KLSAgICBy
ZXR1cm4gRVdLX1BST0NFU1NfTU9ERUxfU0hBUkVEX1NFQ09OREFSWTsKIH0KIAogRXdrX1Byb2Nl
c3NfTW9kZWwgRXdrQ29udGV4dDo6cHJvY2Vzc01vZGVsKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
dG9Fd2tQcm9jZXNzTW9kZWwoV0tDb250ZXh0R2V0UHJvY2Vzc01vZGVsKG1fY29udGV4dC5nZXQo
KSkpOworICAgIHJldHVybiBFV0tfUFJPQ0VTU19NT0RFTF9NVUxUSVBMRV9TRUNPTkRBUlk7CiB9
CiAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKQEAgLTMxMSw3ICsyNzksNiBAQCB2
b2lkIEV3a0NvbnRleHQ6OmNsZWFyUmVzb3VyY2VDYWNoZSgpCiAgICAgV0tSZXNvdXJjZUNhY2hl
TWFuYWdlckNsZWFyQ2FjaGVGb3JBbGxPcmlnaW5zKFdLQ29udGV4dEdldFJlc291cmNlQ2FjaGVN
YW5hZ2VyKG1fY29udGV4dC5nZXQoKSksIFdLUmVzb3VyY2VDYWNoZXNUb0NsZWFyQWxsKTsKIH0K
IAotCiBKU0dsb2JhbENvbnRleHRSZWYgRXdrQ29udGV4dDo6anNHbG9iYWxDb250ZXh0KCkKIHsK
ICAgICBpZiAoIW1fanNHbG9iYWxDb250ZXh0KQpAQCAtNTY3LDIwICs1MzQsMTUgQEAgdm9pZCBl
d2tfY29udGV4dF9tZXNzYWdlX2Zyb21fZXh0ZW5zaW9ucwogICAgIGltcGwtPnNldE1lc3NhZ2VG
cm9tRXh0ZW5zaW9uQ2FsbGJhY2soY2FsbGJhY2ssIHVzZXJEYXRhKTsKIH0KIAotRWluYV9Cb29s
IGV3a19jb250ZXh0X3Byb2Nlc3NfbW9kZWxfc2V0KEV3a19Db250ZXh0KiBld2tDb250ZXh0LCBF
d2tfUHJvY2Vzc19Nb2RlbCBwcm9jZXNzTW9kZWwpCitFaW5hX0Jvb2wgZXdrX2NvbnRleHRfcHJv
Y2Vzc19tb2RlbF9zZXQoRXdrX0NvbnRleHQqIGV3a0NvbnRleHQsIEV3a19Qcm9jZXNzX01vZGVs
KQogewogICAgIEVXS19PQkpfR0VUX0lNUExfT1JfUkVUVVJOKEV3a0NvbnRleHQsIGV3a0NvbnRl
eHQsIGltcGwsIGZhbHNlKTsKLQotICAgIGltcGwtPnNldFByb2Nlc3NNb2RlbChwcm9jZXNzTW9k
ZWwpOwotCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIEV3a19Qcm9jZXNzX01vZGVsIGV3a19jb250
ZXh0X3Byb2Nlc3NfbW9kZWxfZ2V0KGNvbnN0IEV3a19Db250ZXh0KiBld2tDb250ZXh0KQogewot
ICAgIEVXS19PQkpfR0VUX0lNUExfT1JfUkVUVVJOKGNvbnN0IEV3a0NvbnRleHQsIGV3a0NvbnRl
eHQsIGltcGwsIEVXS19QUk9DRVNTX01PREVMX1NIQVJFRF9TRUNPTkRBUlkpOwotCi0gICAgcmV0
dXJuIGltcGwtPnByb2Nlc3NNb2RlbCgpOworICAgIHJldHVybiBFV0tfUFJPQ0VTU19NT0RFTF9N
VUxUSVBMRV9TRUNPTkRBUlk7CiB9CiAKIEV3a19UTFNfRXJyb3JfUG9saWN5IGV3a19jb250ZXh0
X3Rsc19lcnJvcl9wb2xpY3lfZ2V0KGNvbnN0IEV3a19Db250ZXh0KiBjb250ZXh0KQpJbmRleDog
U291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
cmV2aXNpb24gMTkyNzk1KQorKysgU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNDYwLDcgKzE0NjAsNiBAQAogCQlCQzU3
NTA5ODEyNjhGM0M2MDA2RjBGMTIgLyogV2ViUG9wdXBNZW51UHJveHlNYWMubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzU3NTA5NjEyNjhGM0M2MDA2
RjBGMTIgLyogV2ViUG9wdXBNZW51UHJveHlNYWMubW0gKi87IH07CiAJCUJDNTc1NjEzMTI2RTAx
MzgwMDZGMEYxMiAvKiBBUElFcnJvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCQzU3NTYxMjEyNkUwMTM4MDA2RjBGMTIgLyogQVBJRXJyb3IuY3Bw
ICovOyB9OwogCQlCQzU5NTQ4OTE1Qzc4Njg1MDBGRDFFM0UgLyogV2ViS2l0Mi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM1OTU0ODgxNUM3ODY4NTAw
RkQxRTNFIC8qIFdlYktpdDIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwotCQlCQzU5NzA3NTExNjU5MUQwMDA1NTFGQ0EgLyogUHJvY2Vzc01vZGVsLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzU5NzA3NDEx
NjU5MUQwMDA1NTFGQ0EgLyogUHJvY2Vzc01vZGVsLmggKi87IH07CiAJCUJDNUM3NUM4MTQ5NTRE
QTYwMEJDNDc3NSAvKiBXS0Nvbm5lY3Rpb25JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM1Qzc1QzYxNDk1NERBNjAwQkM0Nzc1IC8qIFdL
Q29ubmVjdGlvbkludGVybmFsLmggKi87IH07CiAJCUJDNUQyNEExMTZDQzNCOUUwMDdENTQ2MSAv
KiBDaGlsZFByb2Nlc3NNYWluLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkM1RDI0OUYxNkNDM0I5RTAwN0Q1NDYxIC8qIENoaWxkUHJvY2Vzc01haW4u
bW0gKi87IH07CiAJCUJDNUQyNEEyMTZDQzNCOUUwMDdENTQ2MSAvKiBDaGlsZFByb2Nlc3NNYWlu
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM1RDI0
OUYxNkNDM0I5RTAwN0Q1NDYxIC8qIENoaWxkUHJvY2Vzc01haW4ubW0gKi87IH07CkBAIC0zNzMy
LDcgKzM3MzEsNiBAQAogCQlCQzU3NTA5NjEyNjhGM0M2MDA2RjBGMTIgLyogV2ViUG9wdXBNZW51
UHJveHlNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJQ
b3B1cE1lbnVQcm94eU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM1NzU2
MTIxMjZFMDEzODAwNkYwRjEyIC8qIEFQSUVycm9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEFQSUVycm9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQkM1OTU0ODgxNUM3ODY4NTAwRkQxRTNFIC8qIFdlYktpdDIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViS2l0Mi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlCQzU5NzA3NDExNjU5MUQwMDA1NTFGQ0EgLyogUHJvY2Vzc01vZGVsLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb2Nlc3NNb2RlbC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlCQzVDNzVDNjE0OTU0REE2MDBCQzQ3NzUgLyogV0tDb25uZWN0aW9uSW50ZXJu
YWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tDb25uZWN0aW9uSW50ZXJu
YWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM1RDI0OUYxNkNDM0I5RTAwN0Q1
NDYxIC8qIENoaWxkUHJvY2Vzc01haW4ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBDaGlsZFByb2Nlc3NNYWluLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlCQzVEMjRCODE2Q0M0MEJCMDA3RDU0NjEgLyogQmFzZUxlZ2FjeVByb2Nlc3MueGNjb25m
aWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
LnhjY29uZmlnOyBwYXRoID0gQmFzZUxlZ2FjeVByb2Nlc3MueGNjb25maWc7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC02MjM4LDcgKzYyMzYsNiBAQAogCQkJCTFBQzc1MzdBMTgzQTlG
REIwMDcyQ0IxNSAvKiBQYWdlTG9hZFN0YXRlLmggKi8sCiAJCQkJMzc3MTZBNTkxOTVCOTEwNTAw
RUU4QjFCIC8qIFByb2Nlc3NBc3NlcnRpb24uY3BwICovLAogCQkJCTg2Rjk1MzYwMThGRjRGRDQw
MDFEQjJFRiAvKiBQcm9jZXNzQXNzZXJ0aW9uLmggKi8sCi0JCQkJQkM1OTcwNzQxMTY1OTFEMDAw
NTUxRkNBIC8qIFByb2Nlc3NNb2RlbC5oICovLAogCQkJCTg2RTY3QTIyMTkwRjQxMTgwMDAwNEFC
NyAvKiBQcm9jZXNzVGhyb3R0bGVyLmNwcCAqLywKIAkJCQk4NkU2N0EyMTE5MEY0MTE4MDAwMDRB
QjcgLyogUHJvY2Vzc1Rocm90dGxlci5oICovLAogCQkJCTgzMDQ4QUU1MUFDQTQ1REMwMDgyQzgz
MiAvKiBQcm9jZXNzVGhyb3R0bGVyQ2xpZW50LmggKi8sCkBAIC03OTg5LDcgKzc5ODYsNiBAQAog
CQkJCUUxQ0MxQjkwMTJEN0VBREYwMDYyNTgzOCAvKiBQcmludEluZm8uaCBpbiBIZWFkZXJzICov
LAogCQkJCTg2Rjk1MzY1MThGRjU4RjUwMDFEQjJFRiAvKiBQcm9jZXNzQXNzZXJ0aW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQzFBN0M1ODExMzZFMTlDMDBGQjcxNjcgLyogUHJvY2Vzc0xhdW5j
aGVyLmggaW4gSGVhZGVycyAqLywKLQkJCQlCQzU5NzA3NTExNjU5MUQwMDA1NTFGQ0EgLyogUHJv
Y2Vzc01vZGVsLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkU2N0EyNTE5MTBCOUQxMDAwMDRBQjcg
LyogUHJvY2Vzc1Rocm90dGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODMwNDhBRTYxQUNBNDVE
QzAwODJDODMyIC8qIFByb2Nlc3NUaHJvdHRsZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTJEN0YxMzEwMUE3MDJGQkEwMDlBNkZCRCAvKiBQcm9jZXNzVHlwZS5oIGluIEhlYWRlcnMgKi8s
CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAxOTI4MDQpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxNSBAQAorMjAxNS0xMS0zMCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3
ZWJraXQub3JnPgorCisgICAgICAgIE1ha2UgUHJvY2Vzc01vZGVsIGFsd2F5cyBNdWx0aXBsZVNl
Y29uZGFyeVByb2Nlc3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTUxNjYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvR2VvbG9jYXRpb24uY3BwOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpnZW5l
cmF0ZVBhZ2VDb25maWd1cmF0aW9uKToKKwogMjAxNS0xMS0zMCAgQWxleCBDaHJpc3RlbnNlbiAg
PGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIE1ha2UgdXNlc05ldHdvcmtQcm9j
ZXNzIGFsd2F5cyB0cnVlCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIv
R2VvbG9jYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Mi9HZW9sb2NhdGlvbi5jcHAJKHJldmlzaW9uIDE5Mjc5NikKKysrIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9HZW9sb2NhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI1MCw2ICsyNTAsNyBAQCBzdHJ1Y3QgR2VvbG9jYXRpb25UcmFuc2l0aW9uVG9IaWdoQWNjdXJh
CiBURVNUKFdlYktpdDIsIEdlb2xvY2F0aW9uVHJhbnNpdGlvblRvSGlnaEFjY3VyYWN5KQogewog
ICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dChBZG9wdFdLLCBXS0NvbnRleHRD
cmVhdGUoKSk7CisgICAgV0tDb250ZXh0U2V0TWF4aW11bU51bWJlck9mUHJvY2Vzc2VzKGNvbnRl
eHQuZ2V0KCksIDEpOwogCiAgICAgR2VvbG9jYXRpb25UcmFuc2l0aW9uVG9IaWdoQWNjdXJhY3lT
dGF0ZVRyYWNrZXIgc3RhdGVUcmFja2VyOwogICAgIHNldHVwR2VvbG9jYXRpb25Qcm92aWRlcihj
b250ZXh0LmdldCgpLCAmc3RhdGVUcmFja2VyKTsKQEAgLTMxNCw2ICszMTUsNyBAQCBzdGF0aWMg
dm9pZCBkaWRGaW5pc2hMb2FkRm9yRnJhbWUoV0tQYWdlCiBURVNUKFdlYktpdDIsIEdlb2xvY2F0
aW9uVHJhbnNpdGlvblRvTG93QWNjdXJhY3kpCiB7CiAgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0
UmVmPiBjb250ZXh0KEFkb3B0V0ssIFdLQ29udGV4dENyZWF0ZSgpKTsKKyAgICBXS0NvbnRleHRT
ZXRNYXhpbXVtTnVtYmVyT2ZQcm9jZXNzZXMoY29udGV4dC5nZXQoKSwgMSk7CiAKICAgICBHZW9s
b2NhdGlvblRyYW5zaXRpb25Ub0xvd0FjY3VyYWN5U3RhdGVUcmFja2VyIHN0YXRlVHJhY2tlcjsK
ICAgICBzZXR1cEdlb2xvY2F0aW9uUHJvdmlkZXIoY29udGV4dC5nZXQoKSwgJnN0YXRlVHJhY2tl
cik7CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAkocmV2
aXNpb24gMTkyNzk2KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQwMCwxMCArNDAwLDYgQEAgV0tSZXRhaW5QdHI8V0tQYWdl
Q29uZmlndXJhdGlvblJlZj4gVGVzdAogCiAgICAgbV9nZW9sb2NhdGlvblByb3ZpZGVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxHZW9sb2NhdGlvblByb3ZpZGVyTW9jaz4obV9jb250ZXh0LmdldCgpKTsK
IAotI2lmIFBMQVRGT1JNKEVGTCkKLSAgICBXS0NvbnRleHRTZXRQcm9jZXNzTW9kZWwobV9jb250
ZXh0LmdldCgpLCBrV0tQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzKTsKLSNlbmRp
ZgotCiAgICAgaWYgKGNvbnN0IGNoYXIqIGR1bXBSZW5kZXJUcmVlVGVtcCA9IGxpYnJhcnlQYXRo
Rm9yVGVzdGluZygpKSB7CiAgICAgICAgIFN0cmluZyB0ZW1wb3JhcnlGb2xkZXIgPSBTdHJpbmc6
OmZyb21VVEY4KGR1bXBSZW5kZXJUcmVlVGVtcCk7CiAK
</data>
<flag name="review"
          id="291261"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>