<?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>40882</bug_id>
          
          <creation_ts>2010-06-19 17:24:18 -0700</creation_ts>
          <short_desc>Add ability to have a WebProcess per WebContext</short_desc>
          <delta_ts>2010-06-19 18:20:11 -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>WebKit API</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>240401</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-06-19 17:24:18 -0700</bug_when>
    <thetext>Add ability to have a WebProcess per WebContext.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240402</commentid>
    <comment_count>1</comment_count>
      <attachid>59193</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-06-19 17:28:35 -0700</bug_when>
    <thetext>Created attachment 59193
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240403</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-19 17:29:40 -0700</bug_when>
    <thetext>Attachment 59193 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebKit2/UIProcess/WebProcessManager.cpp:45:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
WebKit2/UIProcess/WebContext.h:35:  Alphabetical sorting problem.  [build/include_order] [4]
WebKit2/UIProcess/WebProcessProxy.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 3 in 22 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240404</commentid>
    <comment_count>3</comment_count>
      <attachid>59193</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2010-06-19 17:34:30 -0700</bug_when>
    <thetext>Comment on attachment 59193
patch

r=me!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240408</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-06-19 17:39:57 -0700</bug_when>
    <thetext>Landed in r61500.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240413</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-19 18:06:11 -0700</bug_when>
    <thetext>Just curious, what&apos;s the testing plan for this sort of patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240415</commentid>
    <comment_count>6</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-06-19 18:20:11 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Just curious, what&apos;s the testing plan for this sort of patch?

As with most API-esque patches, there is not much testing going on in this area right now.  I am working toward getting a DRT up and running and at some point plan on having a API testing harness, but that is still off a bit.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59193</attachid>
            <date>2010-06-19 17:28:35 -0700</date>
            <delta_ts>2010-06-19 17:34:30 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patcher.diff</filename>
            <type>text/plain</type>
            <size>35625</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MTQ5OCkKKysrIFdlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNzkgQEAKKzIwMTAtMDYtMTkgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXggZm9y
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDg4MgorICAgICAgICBB
ZGQgYWJpbGl0eSB0byBoYXZlIGEgV2ViUHJvY2VzcyBwZXIgV2ViQ29udGV4dC4KKworICAgICAg
ICAtIE1vdmUgdG8gYSBvbmUtdG8tb25lIGNvcnJlc3BvbmRlbmNlIG9mIFdlYkNvbnRleHRzIHRv
IFdlYlByb2Nlc3NQcm94aWVzLgorICAgICAgICAtIEFkZCBleHBsaWNpdCBzaGFyZWQgY29udGV4
dHMgZm9yIGdlbmVyYWwgdXNlLgorICAgICAgICAtIE9ubHkgbm9uLXNoYXJlZCBjb250ZXh0cyBj
YW4gdXNlIGluamVjdGVkIGJ1bmRsZXMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tD
b250ZXh0LmNwcDoKKyAgICAgICAgKFdLQ29udGV4dENyZWF0ZSk6CisgICAgICAgIChXS0NvbnRl
eHRDcmVhdGVXaXRoSW5qZWN0ZWRCdW5kbGVQYXRoKToKKyAgICAgICAgKFdLQ29udGV4dEdldFNo
YXJlZFByb2Nlc3NDb250ZXh0KToKKyAgICAgICAgKFdLQ29udGV4dEdldFNoYXJlZFRocmVhZENv
bnRleHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0UHJpdmF0ZS5oOgorICAgICAgICBDaGFuZ2UgQVBJ
IGZvciBXS0NvbnRleHQgdG8gbm8gbG9uZ2VyIHRha2UgYSBXS1Byb2Nlc3NNb2RlbCB0eXBlIGFu
ZCBpbnN0ZWFkCisgICAgICAgIGhhdmUgZXhwbGljaXQgQ3JlYXRlL0dldCBmdW5jdGlvbnMgZm9y
IHRoZSBkaWZmZXJlbnQga2luZCBvZiBjb250ZXh0cy4gQWRkZWQKKyAgICAgICAgdHdvIHNoYXJl
ZCBjb250ZXh0cywgb25lIHRocmVhZGVkLCBvbmUgcHJvY2VzcywgYW5kIG1hZGUgdGhlIHRocmVh
ZGVkIG9uIHByaXZhdGUKKyAgICAgICAgZm9yIG5vdy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvbWFjL1dLVmlldy5tbToKKyAgICAgICAgKC1bV0tWaWV3IGluaXRXaXRoRnJhbWU6XSk6Cisg
ICAgICAgIE1ha2UgV0tWaWV3cyB0aGF0IGRvbid0IGhhdmUgYW4gZXhwbGljaXQgY29udGV4dCB1
c2UgdGhlIHNoYXJlZCBwcm9jZXNzCisgICAgICAgIGNvbnRleHQgYnkgZGVmYXVsdC4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hlci9XZWJQcm9jZXNzTGF1bmNoZXIuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1dlYlByb2Nlc3NMYXVuY2hlci5tbToKKyAgICAgICAg
KFdlYktpdDo6bGF1bmNoV2ViUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL0xhdW5jaGVy
L3dpbi9XZWJQcm9jZXNzTGF1bmNoZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpsYXVuY2hXZWJQ
cm9jZXNzKToKKyAgICAgICAgVXNlIGEgYm9vbGVhbiBhcmd1bWVudCB0byBub3RlIHdoZXRoZXIg
d2UgYXJlIHVzaW5nIGEgdGhyZWFkIG9yIGEgcHJvY2VzcworICAgICAgICBpbnN0ZWFkIG9mIHVz
aW5nIHRoZSBwcm9jZXNzIG1vZGVsIGVudW0uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvUHJvY2Vz
c01vZGVsLmg6CisgICAgICAgIChXZWJLaXQ6Oik6CisgICAgICAgIENvbnZlcnQgdG8gdXNpbmcg
ZXhwbGljaXQgU2hhcmVkIG1vZGlmaWVyIGZvciBzaGFyZWQgY29udGV4dHMuCisKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6
OnNoYXJlZFByb2Nlc3NDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6c2hh
cmVkVGhyZWFkQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OmVuc3VyZVdl
YlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpjcmVhdGVXZWJQYWdlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6cmV2aXZlSWZOZWNlc3NhcnkpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnByb2Nlc3MpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlTmFtZXNwYWNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZU5hbWVzcGFjZTo6Y3JlYXRlV2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VO
YW1lc3BhY2U6OnByZWZlcmVuY2VzRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZU5hbWVzcGFjZTo6Z2V0U3RhdGlzdGljcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VO
YW1lc3BhY2UuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZU5hbWVzcGFjZTo6cHJvY2Vzcyk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VOYW1lc3BhY2U6OnJldml2ZUlmTmVjZXNzYXJ5KToK
KyAgICAgICAgTW92ZSBXZWJQcm9jZXNzUHJveHkgY3JlYXRpb24gbG9naWMgdXAgaW50byBXZWJD
b250ZXh0LgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NNYW5hZ2VyLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc01hbmFnZXI6OmdldFdlYlByb2Nlc3MpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzTWFuYWdlcjo6cHJvY2Vzc0RpZENsb3NlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUHJvY2Vzc01hbmFnZXIuaDoKKyAgICAgICAgS2VlcCBhIG1hcCBvZiBX
ZWJDb250ZXh0cyB0byBXZWJQcm9jZXNzUHJveGllcyBpbiBhZGRpdGlvbiB0byB0aGUgdHdvCisg
ICAgICAgIHNoYXJlZCBwcm9jZXNzZXMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OldlYlByb2Nlc3NQcm94eSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6Y29ubmVjdCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQcm94eTo6ZGlkQ2xvc2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuaDoKKyAgICAgICAgU3RvcmUgYSBXZWJDb250ZXh0IGluc3RlYWQgb2YgdGhlIHBy
b2Nlc3MgbW9kZWwuCisKKyAgICAgICAgKiBtYWMvV2ViS2l0Mi5leHA6CisgICAgICAgIEFkZCBu
ZXcgZnVuY3Rpb25zLgorCiAyMDEwLTA2LTE4ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBh
cHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KSW5kZXg6IFdlYktp
dDIvVUlQcm9jZXNzL1Byb2Nlc3NNb2RlbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9j
ZXNzL1Byb2Nlc3NNb2RlbC5oCShyZXZpc2lvbiA2MTQ0MykKKysrIFdlYktpdDIvVUlQcm9jZXNz
L1Byb2Nlc3NNb2RlbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw4ICsyOSw5IEBACiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogZW51bSBQcm9jZXNzTW9kZWwgewotICAgIFByb2Nlc3NNb2RlbFNlY29u
ZGFyeVByb2Nlc3MsCi0gICAgUHJvY2Vzc01vZGVsU2Vjb25kYXJ5VGhyZWFkCisgICAgUHJvY2Vz
c01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2VzcywKKyAgICBQcm9jZXNzTW9kZWxTaGFyZWRTZWNv
bmRhcnlUaHJlYWQsCisgICAgUHJvY2Vzc01vZGVsU2Vjb25kYXJ5UHJvY2VzcwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAkocmV2aXNp
b24gNjE0NDMpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIldlYlBhZ2VOYW1lc3BhY2UuaCIKICNp
bmNsdWRlICJXZWJQcmVmZXJlbmNlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NNYW5hZ2VyLmgi
CisjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAKICNpbmNsdWRlICJXS0NvbnRleHRQcml2
YXRlLmgiCiAKQEAgLTQ0LDYgKzQ1LDE4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogc3RhdGljIFdU
Rjo6UmVmQ291bnRlZExlYWtDb3VudGVyIHdlYkNvbnRleHRDb3VudGVyKCJXZWJDb250ZXh0Iik7
CiAjZW5kaWYKIAorV2ViQ29udGV4dCogV2ViQ29udGV4dDo6c2hhcmVkUHJvY2Vzc0NvbnRleHQo
KQoreworICAgIHN0YXRpYyBXZWJDb250ZXh0KiBjb250ZXh0ID0gbmV3IFdlYkNvbnRleHQoUHJv
Y2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2VzcywgU3RyaW5nKCkpOworICAgIHJldHVybiBj
b250ZXh0OworfQorCitXZWJDb250ZXh0KiBXZWJDb250ZXh0OjpzaGFyZWRUaHJlYWRDb250ZXh0
KCkKK3sKKyAgICBzdGF0aWMgV2ViQ29udGV4dCogY29udGV4dCA9IG5ldyBXZWJDb250ZXh0KFBy
b2Nlc3NNb2RlbFNoYXJlZFNlY29uZGFyeVRocmVhZCwgU3RyaW5nKCkpOworICAgIHJldHVybiBj
b250ZXh0OworfQorCiBXZWJDb250ZXh0OjpXZWJDb250ZXh0KFByb2Nlc3NNb2RlbCBwcm9jZXNz
TW9kZWwsIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgaW5qZWN0ZWRCdW5kbGVQYXRoKQogICAgIDog
bV9wcm9jZXNzTW9kZWwocHJvY2Vzc01vZGVsKQogICAgICwgbV9pbmplY3RlZEJ1bmRsZVBhdGgo
aW5qZWN0ZWRCdW5kbGVQYXRoKQpAQCAtNjgsNiArODEsMjUgQEAgV2ViQ29udGV4dDo6fldlYkNv
bnRleHQoKQogI2VuZGlmCiB9CiAKK3ZvaWQgV2ViQ29udGV4dDo6ZW5zdXJlV2ViUHJvY2Vzcygp
Cit7CisgICAgaWYgKG1fcHJvY2VzcyAmJiBtX3Byb2Nlc3MtPmlzVmFsaWQoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgbV9wcm9jZXNzID0gV2ViUHJvY2Vzc01hbmFnZXI6OnNoYXJlZCgpLmdl
dFdlYlByb2Nlc3ModGhpcyk7Cit9CisKK1dlYlBhZ2VQcm94eSogV2ViQ29udGV4dDo6Y3JlYXRl
V2ViUGFnZShXZWJQYWdlTmFtZXNwYWNlKiBwYWdlTmFtZXNwYWNlKQoreworICAgIGVuc3VyZVdl
YlByb2Nlc3MoKTsKKyAgICByZXR1cm4gbV9wcm9jZXNzLT5jcmVhdGVXZWJQYWdlKHBhZ2VOYW1l
c3BhY2UpOworfQorCit2b2lkIFdlYkNvbnRleHQ6OnJldml2ZUlmTmVjZXNzYXJ5KCkKK3sKKyAg
ICBlbnN1cmVXZWJQcm9jZXNzKCk7Cit9CisKIFdlYlBhZ2VOYW1lc3BhY2UqIFdlYkNvbnRleHQ6
OmNyZWF0ZVBhZ2VOYW1lc3BhY2UoKQogewogICAgIFJlZlB0cjxXZWJQYWdlTmFtZXNwYWNlPiBw
YWdlTmFtZXNwYWNlID0gV2ViUGFnZU5hbWVzcGFjZTo6Y3JlYXRlKHRoaXMpOwpJbmRleDogV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9j
ZXNzL1dlYkNvbnRleHQuaAkocmV2aXNpb24gNjE0NDMpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDIzICszMiwzNSBAQAogI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogc3RydWN0IFdLQ29u
dGV4dFN0YXRpc3RpY3M7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJQYWdlTmFt
ZXNwYWNlOworY2xhc3MgV2ViUGFnZVByb3h5OwogY2xhc3MgV2ViUHJlZmVyZW5jZXM7CitjbGFz
cyBXZWJQcm9jZXNzUHJveHk7CiAKIGNsYXNzIFdlYkNvbnRleHQgOiBwdWJsaWMgUmVmQ291bnRl
ZDxXZWJDb250ZXh0PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViQ29udGV4
dD4gY3JlYXRlKFByb2Nlc3NNb2RlbCBwcm9jZXNzTW9kZWwsIGNvbnN0IFdlYkNvcmU6OlN0cmlu
ZyYgaW5qZWN0ZWRCdW5kbGVQYXRoKQorICAgIHN0YXRpYyBXZWJDb250ZXh0KiBzaGFyZWRQcm9j
ZXNzQ29udGV4dCgpOworICAgIHN0YXRpYyBXZWJDb250ZXh0KiBzaGFyZWRUaHJlYWRDb250ZXh0
KCk7CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJDb250ZXh0PiBjcmVhdGUoY29uc3QgV2Vi
Q29yZTo6U3RyaW5nJiBpbmplY3RlZEJ1bmRsZVBhdGgpCiAgICAgewotICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFdlYkNvbnRleHQocHJvY2Vzc01vZGVsLCBpbmplY3RlZEJ1bmRsZVBhdGgp
KTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJDb250ZXh0KFByb2Nlc3NNb2RlbFNl
Y29uZGFyeVByb2Nlc3MsIGluamVjdGVkQnVuZGxlUGF0aCkpOwogICAgIH0KKwogICAgIH5XZWJD
b250ZXh0KCk7CiAKICAgICBQcm9jZXNzTW9kZWwgcHJvY2Vzc01vZGVsKCkgY29uc3QgeyByZXR1
cm4gbV9wcm9jZXNzTW9kZWw7IH0KKyAgICBXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MoKSBjb25z
dCB7IHJldHVybiBtX3Byb2Nlc3MuZ2V0KCk7IH0KKworICAgIFdlYlBhZ2VQcm94eSogY3JlYXRl
V2ViUGFnZShXZWJQYWdlTmFtZXNwYWNlKik7CisKKyAgICB2b2lkIHJldml2ZUlmTmVjZXNzYXJ5
KCk7CiAKICAgICBXZWJQYWdlTmFtZXNwYWNlKiBjcmVhdGVQYWdlTmFtZXNwYWNlKCk7CiAgICAg
dm9pZCBwYWdlTmFtZXNwYWNlV2FzRGVzdHJveWVkKFdlYlBhZ2VOYW1lc3BhY2UqKTsKQEAgLTY0
LDcgKzc2LDEzIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgV2ViQ29udGV4dChQcm9jZXNzTW9k
ZWwsIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgaW5qZWN0ZWRCdW5kbGVQYXRoKTsKIAorICAgIHZv
aWQgZW5zdXJlV2ViUHJvY2VzcygpOworCiAgICAgUHJvY2Vzc01vZGVsIG1fcHJvY2Vzc01vZGVs
OworICAgIAorICAgIC8vIEZJWE1FOiBJbiB0aGUgZnV0dXJlLCB0aGlzIHNob3VsZCBiZSBvbmUg
b3IgbW9yZSBXZWJQcm9jZXNzUHJveGllcy4KKyAgICBSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBt
X3Byb2Nlc3M7CisKICAgICBIYXNoU2V0PFdlYlBhZ2VOYW1lc3BhY2UqPiBtX3BhZ2VOYW1lc3Bh
Y2VzOwogICAgIFJlZlB0cjxXZWJQcmVmZXJlbmNlcz4gbV9wcmVmZXJlbmNlczsKIApJbmRleDog
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZU5hbWVzcGFjZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZU5hbWVzcGFjZS5jcHAJKHJldmlzaW9uIDYxNDQzKQorKysg
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZU5hbWVzcGFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTYwLDQyICs2MCwyMyBAQCBXZWJQYWdlTmFtZXNwYWNlOjp+V2ViUGFnZU5hbWVzcGFjZSgpCiAK
IFdlYlBhZ2VQcm94eSogV2ViUGFnZU5hbWVzcGFjZTo6Y3JlYXRlV2ViUGFnZSgpCiB7Ci0gICAg
ZW5zdXJlV2ViUHJvY2VzcygpOwotCi0gICAgcmV0dXJuIG1fcHJvY2Vzcy0+Y3JlYXRlV2ViUGFn
ZSh0aGlzKTsKLX0KLQotdm9pZCBXZWJQYWdlTmFtZXNwYWNlOjplbnN1cmVXZWJQcm9jZXNzKCkK
LXsKLSAgICBpZiAobV9wcm9jZXNzICYmIG1fcHJvY2Vzcy0+aXNWYWxpZCgpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBtX3Byb2Nlc3MgPSBXZWJQcm9jZXNzTWFuYWdlcjo6c2hhcmVkKCkuZ2V0
V2ViUHJvY2VzcyhtX2NvbnRleHQtPnByb2Nlc3NNb2RlbCgpLCBtX2NvbnRleHQtPmluamVjdGVk
QnVuZGxlUGF0aCgpKTsKLX0KLQotdm9pZCBXZWJQYWdlTmFtZXNwYWNlOjpyZXZpdmVJZk5lY2Vz
c2FyeSgpCi17Ci0gICAgaWYgKG1fcHJvY2Vzcy0+aXNWYWxpZCgpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICAvLyBGSVhNRTogVGhlIFdlYkNvbnRleHQgc2hvdWxkIGhhbmQgdXMgdGhlIG5ldyBQ
cm9jZXNzUHJveHkgYmFzZWQgb24gaXRzIHByb2Nlc3MgbW9kZWwuCi0gICAgbV9wcm9jZXNzID0g
V2ViUHJvY2Vzc01hbmFnZXI6OnNoYXJlZCgpLmdldFdlYlByb2Nlc3MobV9jb250ZXh0LT5wcm9j
ZXNzTW9kZWwoKSwgbV9jb250ZXh0LT5pbmplY3RlZEJ1bmRsZVBhdGgoKSk7CisgICAgcmV0dXJu
IG1fY29udGV4dC0+Y3JlYXRlV2ViUGFnZSh0aGlzKTsKIH0KIAogdm9pZCBXZWJQYWdlTmFtZXNw
YWNlOjpwcmVmZXJlbmNlc0RpZENoYW5nZSgpCiB7Ci0gICAgZm9yIChXZWJQcm9jZXNzUHJveHk6
OnBhZ2VzX2NvbnN0X2l0ZXJhdG9yIGl0ID0gbV9wcm9jZXNzLT5wYWdlc19iZWdpbigpLCBlbmQg
PSBtX3Byb2Nlc3MtPnBhZ2VzX2VuZCgpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgZm9yIChXZWJQ
cm9jZXNzUHJveHk6OnBhZ2VzX2NvbnN0X2l0ZXJhdG9yIGl0ID0gcHJvY2VzcygpLT5wYWdlc19i
ZWdpbigpLCBlbmQgPSBwcm9jZXNzKCktPnBhZ2VzX2VuZCgpOyBpdCAhPSBlbmQ7ICsraXQpCiAg
ICAgICAgICgqaXQpLT5wcmVmZXJlbmNlc0RpZENoYW5nZSgpOwogfQogCiB2b2lkIFdlYlBhZ2VO
YW1lc3BhY2U6OmdldFN0YXRpc3RpY3MoV0tDb250ZXh0U3RhdGlzdGljcyogc3RhdGlzdGljcykK
IHsKLSAgICBpZiAoIW1fcHJvY2VzcykKKyAgICBpZiAoIXByb2Nlc3MoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgc3RhdGlzdGljcy0+bnVtYmVyT2ZXS1BhZ2VzICs9IG1fcHJvY2Vzcy0+bnVt
YmVyT2ZQYWdlcygpOworICAgIHN0YXRpc3RpY3MtPm51bWJlck9mV0tQYWdlcyArPSBwcm9jZXNz
KCktPm51bWJlck9mUGFnZXMoKTsKIAotICAgIGZvciAoV2ViUHJvY2Vzc1Byb3h5OjpwYWdlc19j
b25zdF9pdGVyYXRvciBpdCA9IG1fcHJvY2Vzcy0+cGFnZXNfYmVnaW4oKSwgZW5kID0gbV9wcm9j
ZXNzLT5wYWdlc19lbmQoKTsgaXQgIT0gZW5kOyArK2l0KQorICAgIGZvciAoV2ViUHJvY2Vzc1By
b3h5OjpwYWdlc19jb25zdF9pdGVyYXRvciBpdCA9IHByb2Nlc3MoKS0+cGFnZXNfYmVnaW4oKSwg
ZW5kID0gcHJvY2VzcygpLT5wYWdlc19lbmQoKTsgaXQgIT0gZW5kOyArK2l0KQogICAgICAgICAo
Kml0KS0+Z2V0U3RhdGlzdGljcyhzdGF0aXN0aWNzKTsKIH0KIApJbmRleDogV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZU5hbWVzcGFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VOYW1lc3BhY2UuaAkocmV2aXNpb24gNjE0NDMpCisrKyBXZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlTmFtZXNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDYgQEAKICNk
ZWZpbmUgV2ViUGFnZU5hbWVzcGFjZV9oCiAKICNpbmNsdWRlICJXZWJDb250ZXh0LmgiCi0jaW5j
bHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTUw
LDkgKzQ5LDggQEAgcHVibGljOgogICAgIFdlYlBhZ2VQcm94eSogY3JlYXRlV2ViUGFnZSgpOyAg
ICAKIAogICAgIFdlYkNvbnRleHQqIGNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQu
Z2V0KCk7IH0KLSAgICBXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MoKSBjb25zdCB7IHJldHVybiBt
X3Byb2Nlc3MuZ2V0KCk7IH0KLQotICAgIHZvaWQgcmV2aXZlSWZOZWNlc3NhcnkoKTsKKyAgICBX
ZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQtPnByb2Nl
c3MoKTsgfQorICAgIHZvaWQgcmV2aXZlSWZOZWNlc3NhcnkoKSB7IG1fY29udGV4dC0+cmV2aXZl
SWZOZWNlc3NhcnkoKTsgfQogCiAgICAgdm9pZCBwcmVmZXJlbmNlc0RpZENoYW5nZSgpOwogCkBA
IC02MCwxMSArNTgsOCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgV2ViUGFnZU5hbWVzcGFj
ZShXZWJDb250ZXh0Kik7Ci0gICAgCi0gICAgdm9pZCBlbnN1cmVXZWJQcm9jZXNzKCk7Ci0gICAg
CisKICAgICBSZWZQdHI8V2ViQ29udGV4dD4gbV9jb250ZXh0OwotICAgIFJlZlB0cjxXZWJQcm9j
ZXNzUHJveHk+IG1fcHJvY2VzczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDog
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc01hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NNYW5hZ2VyLmNwcAkocmV2aXNpb24gNjE0NDMpCisr
KyBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI1LDkgKzI1LDcgQEAKIAogI2luY2x1ZGUgIldlYlByb2Nlc3NNYW5hZ2VyLmgiCiAKLSNp
bmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtU3RyaW5nLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOworI2luY2x1ZGUgIldlYkNvbnRleHQuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAg
LTQxLDMxICszOSw0OSBAQCBXZWJQcm9jZXNzTWFuYWdlcjo6V2ViUHJvY2Vzc01hbmFnZXIoKQog
ewogfQogCi1XZWJQcm9jZXNzUHJveHkqIFdlYlByb2Nlc3NNYW5hZ2VyOjpnZXRXZWJQcm9jZXNz
KFByb2Nlc3NNb2RlbCBwcm9jZXNzTW9kZWwsIGNvbnN0IFN0cmluZyYgaW5qZWN0ZWRCdW5kbGVQ
YXRoKQorV2ViUHJvY2Vzc1Byb3h5KiBXZWJQcm9jZXNzTWFuYWdlcjo6Z2V0V2ViUHJvY2VzcyhX
ZWJDb250ZXh0KiBjb250ZXh0KQogewotICAgIHN3aXRjaCAocHJvY2Vzc01vZGVsKSB7Ci0gICAg
ICAgIGNhc2UgUHJvY2Vzc01vZGVsU2Vjb25kYXJ5UHJvY2VzczoKKyAgICBzd2l0Y2ggKGNvbnRl
eHQtPnByb2Nlc3NNb2RlbCgpKSB7CisgICAgICAgIGNhc2UgUHJvY2Vzc01vZGVsU2hhcmVkU2Vj
b25kYXJ5UHJvY2VzczogewogICAgICAgICAgICAgaWYgKCFtX3NoYXJlZFByb2Nlc3MpCi0gICAg
ICAgICAgICAgICAgbV9zaGFyZWRQcm9jZXNzID0gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGUocHJv
Y2Vzc01vZGVsLCBpbmplY3RlZEJ1bmRsZVBhdGgpOworICAgICAgICAgICAgICAgIG1fc2hhcmVk
UHJvY2VzcyA9IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlKGNvbnRleHQpOwogICAgICAgICAgICAg
cmV0dXJuIG1fc2hhcmVkUHJvY2Vzcy5nZXQoKTsKLSAgICAgICAgY2FzZSBQcm9jZXNzTW9kZWxT
ZWNvbmRhcnlUaHJlYWQ6CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBQcm9jZXNzTW9kZWxTaGFy
ZWRTZWNvbmRhcnlUaHJlYWQ6IHsKICAgICAgICAgICAgIGlmICghbV9zaGFyZWRUaHJlYWQpCi0g
ICAgICAgICAgICAgICAgbV9zaGFyZWRUaHJlYWQgPSBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZShw
cm9jZXNzTW9kZWwsIGluamVjdGVkQnVuZGxlUGF0aCk7CisgICAgICAgICAgICAgICAgbV9zaGFy
ZWRUaHJlYWQgPSBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZShjb250ZXh0KTsKICAgICAgICAgICAg
IHJldHVybiBtX3NoYXJlZFRocmVhZC5nZXQoKTsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFBy
b2Nlc3NNb2RlbFNlY29uZGFyeVByb2Nlc3M6IHsKKyAgICAgICAgICAgIHN0ZDo6cGFpcjxQcm9j
ZXNzTWFwOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gbV9wcm9jZXNzTWFwLmFkZChjb250ZXh0
LCAwKTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQuc2Vjb25kKSB7CisgICAgICAgICAgICAgICAg
QVNTRVJUKCFyZXN1bHQuZmlyc3QtPnNlY29uZCk7CisgICAgICAgICAgICAgICAgcmVzdWx0LmZp
cnN0LT5zZWNvbmQgPSBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZShjb250ZXh0KTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC5maXJzdC0+c2Vjb25kKTsKKyAgICAg
ICAgICAgIHJldHVybiByZXN1bHQuZmlyc3QtPnNlY29uZC5nZXQoKTsKKyAgICAgICAgfQogICAg
IH0KLQogICAgIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiAwOwogfQot
ICAgIAotdm9pZCBXZWJQcm9jZXNzTWFuYWdlcjo6cHJvY2Vzc0RpZENsb3NlKFdlYlByb2Nlc3NQ
cm94eSogcHJvY2VzcykKKwordm9pZCBXZWJQcm9jZXNzTWFuYWdlcjo6cHJvY2Vzc0RpZENsb3Nl
KFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcywgV2ViQ29udGV4dCogY29udGV4dCkKIHsKICAgICBp
ZiAocHJvY2VzcyA9PSBtX3NoYXJlZFByb2Nlc3MpIHsKKyAgICAgICAgQVNTRVJUKGNvbnRleHQt
PnByb2Nlc3NNb2RlbCgpID09IFByb2Nlc3NNb2RlbFNoYXJlZFNlY29uZGFyeVByb2Nlc3MpOwog
ICAgICAgICBtX3NoYXJlZFByb2Nlc3MgPSAwOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAg
IAorCisgICAgUHJvY2Vzc01hcDo6aXRlcmF0b3IgaXQgPSBtX3Byb2Nlc3NNYXAuZmluZChjb250
ZXh0KTsKKyAgICBpZiAoaXQgIT0gbV9wcm9jZXNzTWFwLmVuZCgpKSB7CisgICAgICAgIEFTU0VS
VChpdC0+c2Vjb25kID09IHByb2Nlc3MpOworICAgICAgICBtX3Byb2Nlc3NNYXAucmVtb3ZlKGl0
KTsKKyAgICB9CisKICAgICAvLyBUaGUgc2hhcmVkIHRocmVhZCBjb25uZWN0aW9uIHNob3VsZCBu
ZXZlciBiZSBjbG9zZWQuCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CkluZGV4OiBXZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIv
VUlQcm9jZXNzL1dlYlByb2Nlc3NNYW5hZ2VyLmgJKHJldmlzaW9uIDYxNDQzKQorKysgV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc01hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsMzIg
KzI2LDI3IEBACiAjaWZuZGVmIFdlYlByb2Nlc3NNYW5hZ2VyX2gKICNkZWZpbmUgV2ViUHJvY2Vz
c01hbmFnZXJfaAogCi0jaW5jbHVkZSAiUHJvY2Vzc01vZGVsLmgiCiAjaW5jbHVkZSAiV2ViUHJv
Y2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICBjbGFzcyBTdHJpbmc7Ci19OwotCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgV2ViUHJvY2Vzc1Byb3h5OwotY2xhc3MgV2ViUGFn
ZU5hbWVzcGFjZTsKLQogY2xhc3MgV2ViUHJvY2Vzc01hbmFnZXIgewogcHVibGljOgogICAgIHN0
YXRpYyBXZWJQcm9jZXNzTWFuYWdlciYgc2hhcmVkKCk7CiAKLSAgICBXZWJQcm9jZXNzUHJveHkq
IGdldFdlYlByb2Nlc3MoUHJvY2Vzc01vZGVsLCBjb25zdCBXZWJDb3JlOjpTdHJpbmcmIGluamVj
dGVkQnVuZGxlUGF0aCk7Ci0KLSAgICB2b2lkIHByb2Nlc3NEaWRDbG9zZShXZWJQcm9jZXNzUHJv
eHkqKTsKKyAgICBXZWJQcm9jZXNzUHJveHkqIGdldFdlYlByb2Nlc3MoV2ViQ29udGV4dCopOwor
ICAgIHZvaWQgcHJvY2Vzc0RpZENsb3NlKFdlYlByb2Nlc3NQcm94eSosIFdlYkNvbnRleHQqKTsK
IAogcHJpdmF0ZToKICAgICBXZWJQcm9jZXNzTWFuYWdlcigpOworCiAgICAgUmVmUHRyPFdlYlBy
b2Nlc3NQcm94eT4gbV9zaGFyZWRUaHJlYWQ7CiAgICAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4g
bV9zaGFyZWRQcm9jZXNzOworCisgICAgdHlwZWRlZiBIYXNoTWFwPFdlYkNvbnRleHQqLCBSZWZQ
dHI8V2ViUHJvY2Vzc1Byb3h5PiA+IFByb2Nlc3NNYXA7IAorICAgIFByb2Nlc3NNYXAgbV9wcm9j
ZXNzTWFwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBXZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5jcHAJKHJldmlzaW9uIDYxNDQzKQorKysgV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAog
CiAjaW5jbHVkZSAiV2ViUGFnZU5hbWVzcGFjZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5o
IgorI2luY2x1ZGUgIldlYkNvbnRleHQuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTGF1bmNoZXIu
aCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWFuYWdlci5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NN
ZXNzYWdlS2luZHMuaCIKQEAgLTQyLDIxICs0MywyMSBAQCBzdGF0aWMgdWludDY0X3QgZ2VuZXJh
dGVQYWdlSUQoKQogICAgIHJldHVybiB1bmlxdWVQYWdlSUQrKzsKIH0KIAotUGFzc1JlZlB0cjxX
ZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlKFByb2Nlc3NNb2RlbCBwcm9j
ZXNzTW9kZWwsIGNvbnN0IFN0cmluZyYgaW5qZWN0ZWRCdW5kbGVQYXRoKQorUGFzc1JlZlB0cjxX
ZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlKFdlYkNvbnRleHQqIGNvbnRl
eHQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJQcm9jZXNzUHJveHkocHJvY2Vzc01v
ZGVsLCBpbmplY3RlZEJ1bmRsZVBhdGgpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlBy
b2Nlc3NQcm94eShjb250ZXh0KSk7CiB9CiAKLVdlYlByb2Nlc3NQcm94eTo6V2ViUHJvY2Vzc1By
b3h5KFByb2Nlc3NNb2RlbCBwcm9jZXNzTW9kZWwsIGNvbnN0IFN0cmluZyYgaW5qZWN0ZWRCdW5k
bGVQYXRoKQorV2ViUHJvY2Vzc1Byb3h5OjpXZWJQcm9jZXNzUHJveHkoV2ViQ29udGV4dCogY29u
dGV4dCkKICAgICA6IG1fcmVzcG9uc2l2ZW5lc3NUaW1lcih0aGlzKQotICAgICwgbV9wcm9jZXNz
TW9kZWwocHJvY2Vzc01vZGVsKQorICAgICwgbV9jb250ZXh0KGNvbnRleHQpCiB7CiAgICAgY29u
bmVjdCgpOwogCiAgICAgLy8gRklYTUU6IFdlIGNvdWxkIGluc3RlYWQgc2VuZCB0aGUgYnVuZGxl
IHBhdGggYXMgcGFydCBvZiB0aGUgYXJndW1lbnRzIHRvIHByb2Nlc3MgY3JlYXRpb24/CiAgICAg
Ly8gV291bGQgdGhhdCBiZSBiZXR0ZXIgdGhhbiBzZW5kaW5nIGEgY29ubmVjdGlvbj8KLSAgICBp
ZiAoIWluamVjdGVkQnVuZGxlUGF0aC5pc0VtcHR5KCkpCi0gICAgICAgIGNvbm5lY3Rpb24oKS0+
c2VuZChXZWJQcm9jZXNzTWVzc2FnZTo6TG9hZEluamVjdGVkQnVuZGxlLCAwLCBDb3JlSVBDOjpJ
bihpbmplY3RlZEJ1bmRsZVBhdGgpKTsKKyAgICBpZiAoIWNvbnRleHQtPmluamVjdGVkQnVuZGxl
UGF0aCgpLmlzRW1wdHkoKSkKKyAgICAgICAgY29ubmVjdGlvbigpLT5zZW5kKFdlYlByb2Nlc3NN
ZXNzYWdlOjpMb2FkSW5qZWN0ZWRCdW5kbGUsIDAsIENvcmVJUEM6OkluKGNvbnRleHQtPmluamVj
dGVkQnVuZGxlUGF0aCgpKSk7CiB9CiAKIFdlYlByb2Nlc3NQcm94eTo6fldlYlByb2Nlc3NQcm94
eSgpCkBAIC02Niw3ICs2Nyw3IEBAIFdlYlByb2Nlc3NQcm94eTo6fldlYlByb2Nlc3NQcm94eSgp
CiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpjb25uZWN0KCkKIHsKLSAgICBQcm9jZXNzSW5mbyBp
bmZvID0gbGF1bmNoV2ViUHJvY2Vzcyh0aGlzLCBtX3Byb2Nlc3NNb2RlbCk7CisgICAgUHJvY2Vz
c0luZm8gaW5mbyA9IGxhdW5jaFdlYlByb2Nlc3ModGhpcywgbV9jb250ZXh0LT5wcm9jZXNzTW9k
ZWwoKSA9PSBQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlUaHJlYWQpOwogICAgIGlmICghaW5m
by5jb25uZWN0aW9uKSB7CiAgICAgICAgIC8vIEZJWE1FOiBSZXBvcnQgYW4gZXJyb3IuCiAgICAg
ICAgIEFTU0VSVChmYWxzZSk7CkBAIC0xNjQsNyArMTY1LDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJv
eHk6OmRpZENsb3NlKENvcmVJUEM6OgogICAgICAgICBwYWdlc1tpXS0+cHJvY2Vzc0RpZEV4aXQo
KTsKIAogICAgIC8vIFRoaXMgbWF5IGNhdXNlIHVzIHRvIGJlIGRlbGV0ZWQuCi0gICAgV2ViUHJv
Y2Vzc01hbmFnZXI6OnNoYXJlZCgpLnByb2Nlc3NEaWRDbG9zZSh0aGlzKTsgICAgCisgICAgV2Vi
UHJvY2Vzc01hbmFnZXI6OnNoYXJlZCgpLnByb2Nlc3NEaWRDbG9zZSh0aGlzLCBtX2NvbnRleHQp
OwogfQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkQmVjb21lVW5yZXNwb25zaXZlKFJlc3Bv
bnNpdmVuZXNzVGltZXIqKQpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgJKHJl
dmlzaW9uIDYxNDQzKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgJKHdv
cmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgV2ViQ29udGV4dDsKIGNsYXNzIFdlYlBhZ2VOYW1lc3Bh
Y2U7CiAKIGNsYXNzIFdlYlByb2Nlc3NQcm94eSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlByb2Nl
c3NQcm94eT4sIENvcmVJUEM6OkNvbm5lY3Rpb246OkNsaWVudCwgUmVzcG9uc2l2ZW5lc3NUaW1l
cjo6Q2xpZW50IHsKQEAgLTQ4LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIHR5cGVkZWYgSGFzaE1h
cDx1aW50NjRfdCwgUmVmUHRyPFdlYlBhZ2VQcm94eT4gPiBXZWJQYWdlUHJveHlNYXA7CiAgICAg
dHlwZWRlZiBXZWJQYWdlUHJveHlNYXA6OmNvbnN0X2l0ZXJhdG9yOjpWYWx1ZXMgcGFnZXNfY29u
c3RfaXRlcmF0b3I7CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJQcm9jZXNzUHJveHk+IGNy
ZWF0ZShQcm9jZXNzTW9kZWwsIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgaW5qZWN0ZWRCdW5kbGVQ
YXRoKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJQcm9jZXNzUHJveHk+IGNyZWF0ZShXZWJD
b250ZXh0Kik7CiAgICAgfldlYlByb2Nlc3NQcm94eSgpOwogCiAgICAgdm9pZCB0ZXJtaW5hdGUo
KTsKQEAgLTY4LDEyICs2OSwxMCBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzVmFsaWQoKSBjb25z
dCB7IHJldHVybiBtX2Nvbm5lY3Rpb247IH0KIAotICAgIFByb2Nlc3NNb2RlbCBwcm9jZXNzTW9k
ZWwoKSBjb25zdCB7IHJldHVybiBtX3Byb2Nlc3NNb2RlbDsgfQotCiAgICAgUGxhdGZvcm1Qcm9j
ZXNzSWRlbnRpZmllciBwcm9jZXNzSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZv
cm1Qcm9jZXNzSWRlbnRpZmllcjsgfQogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFdlYlByb2Nl
c3NQcm94eShQcm9jZXNzTW9kZWwsIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgaW5qZWN0ZWRCdW5k
bGVQYXRoKTsKKyAgICBleHBsaWNpdCBXZWJQcm9jZXNzUHJveHkoV2ViQ29udGV4dCopOwogCiAg
ICAgdm9pZCBjb25uZWN0KCk7CiAKQEAgLTkwLDcgKzg5LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQ
dHI8Q29yZUlQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwogICAgIFBsYXRmb3JtUHJvY2Vz
c0lkZW50aWZpZXIgbV9wbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyOwogCi0gICAgUHJvY2Vzc01v
ZGVsIG1fcHJvY2Vzc01vZGVsOworICAgIFdlYkNvbnRleHQqIG1fY29udGV4dDsKIAogICAgIC8v
IE5PVEU6IFRoaXMgbWFwIGlzIGZvciBwYWdlcyBpbiBhbGwgV2ViUGFnZU5hbWVzcGFjZXMgdGhh
dCB1c2UgdGhpcyBwcm9jZXNzLgogICAgIFdlYlBhZ2VQcm94eU1hcCBtX3BhZ2VNYXA7CkluZGV4
OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAJKHJldmlzaW9uIDYxNDQzKQorKysg
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjYsNyArMjYsNiBAQAogI2luY2x1ZGUgIldLQ29udGV4dC5oIgogI2luY2x1ZGUgIldLQ29udGV4
dFByaXZhdGUuaCIKIAotI2luY2x1ZGUgIlByb2Nlc3NNb2RlbC5oIgogI2luY2x1ZGUgIldLQVBJ
Q2FzdC5oIgogI2luY2x1ZGUgIldlYkNvbnRleHQuaCIKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNl
cy5oIgpAQCAtMzYsMzEgKzM1LDI2IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKLXN0
YXRpYyBQcm9jZXNzTW9kZWwgdG9XSyhXS1Byb2Nlc3NNb2RlbCB3a1Byb2Nlc3NNb2RlbCkKK1dL
Q29udGV4dFJlZiBXS0NvbnRleHRDcmVhdGUoKQogewotICAgIHN3aXRjaCAod2tQcm9jZXNzTW9k
ZWwpIHsKLSAgICAgICAgY2FzZSBrV0tQcm9jZXNzTW9kZWxTZWNvbmRhcnlQcm9jZXNzOgotICAg
ICAgICAgICAgcmV0dXJuIFByb2Nlc3NNb2RlbFNlY29uZGFyeVByb2Nlc3M7Ci0gICAgICAgIGNh
c2Uga1dLUHJvY2Vzc01vZGVsU2Vjb25kYXJ5VGhyZWFkOgotICAgICAgICAgICAgcmV0dXJuIFBy
b2Nlc3NNb2RlbFNlY29uZGFyeVRocmVhZDsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLQotICAgIC8vIERlZmF1bHQgdG8gU2Vjb25k
YXJ5UHJvY2VzcyBpZiBhIGJhZCB2YWx1ZSBpcyBwYXNzZWQuCi0gICAgcmV0dXJuIFByb2Nlc3NN
b2RlbFNlY29uZGFyeVByb2Nlc3M7CisgICAgUmVmUHRyPFdlYkNvbnRleHQ+IGNvbnRleHQgPSBX
ZWJDb250ZXh0OjpjcmVhdGUoV2ViQ29yZTo6U3RyaW5nKCkpOworICAgIHJldHVybiB0b1JlZihj
b250ZXh0LnJlbGVhc2UoKS5yZWxlYXNlUmVmKCkpOwogfQogCi1XS0NvbnRleHRSZWYgV0tDb250
ZXh0Q3JlYXRlKFdLUHJvY2Vzc01vZGVsIHdrUHJvY2Vzc01vZGVsKQorV0tDb250ZXh0UmVmIFdL
Q29udGV4dENyZWF0ZVdpdGhJbmplY3RlZEJ1bmRsZVBhdGgoV0tTdHJpbmdSZWYgcGF0aFJlZikK
IHsKLSAgICBSZWZQdHI8V2ViQ29udGV4dD4gY29udGV4dCA9IFdlYkNvbnRleHQ6OmNyZWF0ZSh0
b1dLKHdrUHJvY2Vzc01vZGVsKSwgV2ViQ29yZTo6U3RyaW5nKCkpOworICAgIFJlZlB0cjxXZWJD
b250ZXh0PiBjb250ZXh0ID0gV2ViQ29udGV4dDo6Y3JlYXRlKHRvV0socGF0aFJlZikpOwogICAg
IHJldHVybiB0b1JlZihjb250ZXh0LnJlbGVhc2UoKS5yZWxlYXNlUmVmKCkpOwogfQogCi1XS0Nv
bnRleHRSZWYgV0tDb250ZXh0Q3JlYXRlV2l0aEluamVjdGVkQnVuZGxlUGF0aChXS1Byb2Nlc3NN
b2RlbCB3a1Byb2Nlc3NNb2RlbCwgV0tTdHJpbmdSZWYgcGF0aFJlZikKK1dLQ29udGV4dFJlZiBX
S0NvbnRleHRHZXRTaGFyZWRQcm9jZXNzQ29udGV4dCgpCiB7Ci0gICAgUmVmUHRyPFdlYkNvbnRl
eHQ+IGNvbnRleHQgPSBXZWJDb250ZXh0OjpjcmVhdGUodG9XSyh3a1Byb2Nlc3NNb2RlbCksIHRv
V0socGF0aFJlZikpOwotICAgIHJldHVybiB0b1JlZihjb250ZXh0LnJlbGVhc2UoKS5yZWxlYXNl
UmVmKCkpOworICAgIHJldHVybiB0b1JlZihXZWJDb250ZXh0OjpzaGFyZWRQcm9jZXNzQ29udGV4
dCgpKTsKK30KKworV0tDb250ZXh0UmVmIFdLQ29udGV4dEdldFNoYXJlZFRocmVhZENvbnRleHQo
KQoreworICAgIHJldHVybiB0b1JlZihXZWJDb250ZXh0OjpzaGFyZWRUaHJlYWRDb250ZXh0KCkp
OwogfQogCiB2b2lkIFdLQ29udGV4dFNldFByZWZlcmVuY2VzKFdLQ29udGV4dFJlZiBjb250ZXh0
UmVmLCBXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmKQpJbmRleDogV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvV0tDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvV0tDb250ZXh0LmgJKHJldmlzaW9uIDYxNDQzKQorKysgV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvV0tDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDE0ICszMiwxMCBAQAogZXh0
ZXJuICJDIiB7CiAjZW5kaWYKIAotZW51bSB7Ci0gICAga1dLUHJvY2Vzc01vZGVsU2Vjb25kYXJ5
UHJvY2VzcyA9IDAsCi0gICAga1dLUHJvY2Vzc01vZGVsU2Vjb25kYXJ5VGhyZWFkID0gMQotfTsK
LXR5cGVkZWYgdW5zaWduZWQgbG9uZyBXS1Byb2Nlc3NNb2RlbDsKK1dLX0VYUE9SVCBXS0NvbnRl
eHRSZWYgV0tDb250ZXh0Q3JlYXRlKCk7CitXS19FWFBPUlQgV0tDb250ZXh0UmVmIFdLQ29udGV4
dENyZWF0ZVdpdGhJbmplY3RlZEJ1bmRsZVBhdGgoV0tTdHJpbmdSZWYgcGF0aCk7CiAKLVdLX0VY
UE9SVCBXS0NvbnRleHRSZWYgV0tDb250ZXh0Q3JlYXRlKFdLUHJvY2Vzc01vZGVsIHByb2Nlc3NN
b2RlbCk7Ci1XS19FWFBPUlQgV0tDb250ZXh0UmVmIFdLQ29udGV4dENyZWF0ZVdpdGhJbmplY3Rl
ZEJ1bmRsZVBhdGgoV0tQcm9jZXNzTW9kZWwgcHJvY2Vzc01vZGVsLCBXS1N0cmluZ1JlZiBwYXRo
KTsKK1dLX0VYUE9SVCBXS0NvbnRleHRSZWYgV0tDb250ZXh0R2V0U2hhcmVkUHJvY2Vzc0NvbnRl
eHQoKTsKIAogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0UHJlZmVyZW5jZXMoV0tDb250ZXh0
UmVmIGNvbnRleHQsIFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXMpOwogV0tfRVhQT1JUIFdL
UHJlZmVyZW5jZXNSZWYgV0tDb250ZXh0R2V0UHJlZmVyZW5jZXMoV0tDb250ZXh0UmVmIGNvbnRl
eHQpOwpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0UHJpdmF0ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dFByaXZhdGUuaAko
cmV2aXNpb24gNjE0NDMpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRQcml2
YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDggQEAgdHlwZWRlZiBzdHJ1Y3QgV0tD
b250ZXh0U3RhdGlzdGljcyBXS0NvbgogCiBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRHZXRTdGF0
aXN0aWNzKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0NvbnRleHRTdGF0aXN0aWNzKiBzdGF0aXN0
aWNzKTsKIAorV0tfRVhQT1JUIFdLQ29udGV4dFJlZiBXS0NvbnRleHRHZXRTaGFyZWRUaHJlYWRD
b250ZXh0KCk7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCkluZGV4OiBXZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvbWFjL1dLVmlldy5tbQkocmV2aXNpb24gNjE0NDMpCisrKyBXZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvbWFjL1dLVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtODgsNyArODgsNyBAQCAt
IChpZClpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUgcGFnZU5hCiAKIC0gKGlkKWluaXRXaXRo
RnJhbWU6KE5TUmVjdClmcmFtZQogewotICAgIFJlZlB0cjxXZWJDb250ZXh0PiBjb250ZXh0ID0g
V2ViQ29udGV4dDo6Y3JlYXRlKFByb2Nlc3NNb2RlbFNlY29uZGFyeVByb2Nlc3MsIFN0cmluZygp
KTsKKyAgICBXZWJDb250ZXh0KiBjb250ZXh0ID0gV2ViQ29udGV4dDo6c2hhcmVkUHJvY2Vzc0Nv
bnRleHQoKTsKICAgICBzZWxmID0gW3NlbGYgaW5pdFdpdGhGcmFtZTpmcmFtZSBwYWdlTmFtZXNw
YWNlUmVmOnRvUmVmKGNvbnRleHQtPmNyZWF0ZVBhZ2VOYW1lc3BhY2UoKSldOwogICAgIGlmICgh
c2VsZikKICAgICAgICAgcmV0dXJuIG5pbDsKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0xhdW5j
aGVyL1dlYlByb2Nlc3NMYXVuY2hlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNz
L0xhdW5jaGVyL1dlYlByb2Nlc3NMYXVuY2hlci5oCShyZXZpc2lvbiA2MTQ0MykKKysrIFdlYktp
dDIvVUlQcm9jZXNzL0xhdW5jaGVyL1dlYlByb2Nlc3NMYXVuY2hlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAi
UGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllci5oIgotI2luY2x1ZGUgIlByb2Nlc3NNb2RlbC5oIgog
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0zOCw3ICsz
Nyw3IEBAIHN0cnVjdCBQcm9jZXNzSW5mbyB7CiAgICAgUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmll
ciBwcm9jZXNzSWRlbnRpZmllcjsKIH07CiAKLVByb2Nlc3NJbmZvIGxhdW5jaFdlYlByb2Nlc3Mo
Q29yZUlQQzo6Q29ubmVjdGlvbjo6Q2xpZW50KiwgUHJvY2Vzc01vZGVsKTsKK1Byb2Nlc3NJbmZv
IGxhdW5jaFdlYlByb2Nlc3MoQ29yZUlQQzo6Q29ubmVjdGlvbjo6Q2xpZW50KiwgYm9vbCB1c2VU
aHJlYWQpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIApJbmRleDogV2ViS2l0Mi9VSVByb2Nl
c3MvTGF1bmNoZXIvbWFjL1dlYlByb2Nlc3NMYXVuY2hlci5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMvV2ViUHJvY2Vzc0xhdW5jaGVyLm1tCShyZXZpc2lv
biA2MTQ0MykKKysrIFdlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9XZWJQcm9jZXNzTGF1
bmNoZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTU5LDcgKzU5LDcgQEAgc3RhdGljIHZvaWQqIHdl
YlRocmVhZEJvZHkodm9pZCogY29udGV4dAogICAgIHJldHVybiAwOwogfQogCi1Qcm9jZXNzSW5m
byBsYXVuY2hXZWJQcm9jZXNzKENvcmVJUEM6OkNvbm5lY3Rpb246OkNsaWVudCogY2xpZW50LCBQ
cm9jZXNzTW9kZWwgcHJvY2Vzc01vZGVsKQorUHJvY2Vzc0luZm8gbGF1bmNoV2ViUHJvY2VzcyhD
b3JlSVBDOjpDb25uZWN0aW9uOjpDbGllbnQqIGNsaWVudCwgYm9vbCB1c2VUaHJlYWQpCiB7CiAg
ICAgUHJvY2Vzc0luZm8gaW5mbyA9IHsgMCwgMCB9OwogCkBAIC03MywzMiArNzMsMjcgQEAgUHJv
Y2Vzc0luZm8gbGF1bmNoV2ViUHJvY2VzcyhDb3JlSVBDOjpDbwogICAgIGluZm8uY29ubmVjdGlv
biA9IENvcmVJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZVNlcnZlckNvbm5lY3Rpb24obGlzdGVuaW5n
UG9ydCwgY2xpZW50LCBSdW5Mb29wOjptYWluKCkpOwogICAgIGluZm8uY29ubmVjdGlvbi0+b3Bl
bigpOwogCi0gICAgc3dpdGNoIChwcm9jZXNzTW9kZWwpIHsKLSAgICAgICAgY2FzZSBQcm9jZXNz
TW9kZWxTZWNvbmRhcnlUaHJlYWQ6IHsKLSAgICAgICAgICAgIC8vIFBhc3MgaXQgdG8gdGhlIHRo
cmVhZC4KLSAgICAgICAgICAgIGlmICghY3JlYXRlVGhyZWFkKHdlYlRocmVhZEJvZHksIHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KGxpc3RlbmluZ1BvcnQpLCAiV2ViS2l0MjogV2ViVGhyZWFkIikp
IHsKLSAgICAgICAgICAgICAgICAvLyBGSVhNRTogRGVzdHJveSBwb3J0cy4KLSAgICAgICAgICAg
ICAgICByZXR1cm4gaW5mbzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIFByb2Nlc3NNb2RlbFNlY29uZGFyeVByb2Nlc3M6IHsK
LSAgICAgICAgICAgIE5TU3RyaW5nICp3ZWJQcm9jZXNzQXBwUGF0aCA9IFtbTlNCdW5kbGUgYnVu
ZGxlV2l0aElkZW50aWZpZXI6QCJjb20uYXBwbGUuV2ViS2l0MiJdIHBhdGhGb3JBdXhpbGlhcnlF
eGVjdXRhYmxlOkAiV2ViUHJvY2Vzcy5hcHAiXTsKLSAgICAgICAgICAgIE5TU3RyaW5nICp3ZWJQ
cm9jZXNzQXBwRXhlY3V0YWJsZVBhdGggPSBbW05TQnVuZGxlIGJ1bmRsZVdpdGhQYXRoOndlYlBy
b2Nlc3NBcHBQYXRoXSBleGVjdXRhYmxlUGF0aF07Ci0KLSAgICAgICAgICAgIGNvbnN0IGNoYXIq
IHBhdGggPSBbd2ViUHJvY2Vzc0FwcEV4ZWN1dGFibGVQYXRoIGZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbl07Ci0gICAgICAgICAgICBjb25zdCBjaGFyKiBhcmdzW10gPSB7IHBhdGgsIDAgfTsKLQot
ICAgICAgICAgICAgLy8gUmVnaXN0ZXIgb3Vyc2VsdmVzLgotICAgICAgICAgICAga2Vybl9yZXR1
cm5fdCBrciA9IGJvb3RzdHJhcF9yZWdpc3RlcjIoYm9vdHN0cmFwX3BvcnQsIChjaGFyKikiY29t
LmFwcGxlLldlYktpdC5XZWJQcm9jZXNzIiwgbGlzdGVuaW5nUG9ydCwgLyogQk9PVFNUUkFQX1BF
Ul9QSURfU0VSVklDRSAqLyAxKTsKLSAgICAgICAgICAgIGlmIChrcikKLSAgICAgICAgICAgICAg
ICBOU0xvZyhAImJvb3RzdHJhcF9yZWdpc3RlcjIgcmVzdWx0OiAleCIsIGtyKTsKLSAgICAgICAg
ICAgIAotICAgICAgICAgICAgaW50IHJlc3VsdCA9IHBvc2l4X3NwYXduKCZpbmZvLnByb2Nlc3NJ
ZGVudGlmaWVyLCBwYXRoLCAwLCAwLCAoY2hhciAqY29uc3QqKWFyZ3MsICpfTlNHZXRFbnZpcm9u
KCkpOwotICAgICAgICAgICAgaWYgKHJlc3VsdCkKLSAgICAgICAgICAgICAgICBOU0xvZyhAInBv
c2l4X3NwYXduIHJlc3VsdDogJWQiLCByZXN1bHQpOworICAgIGlmICh1c2VUaHJlYWQpIHsKKyAg
ICAgICAgLy8gUGFzcyBpdCB0byB0aGUgdGhyZWFkLgorICAgICAgICBpZiAoIWNyZWF0ZVRocmVh
ZCh3ZWJUaHJlYWRCb2R5LCByZWludGVycHJldF9jYXN0PHZvaWQqPihsaXN0ZW5pbmdQb3J0KSwg
IldlYktpdDI6IFdlYlRocmVhZCIpKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogRGVzdHJveSBw
b3J0cy4KKyAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9Ci0gICAgICAgIGJyZWFr
OworICAgIH0gZWxzZSB7CisgICAgICAgIE5TU3RyaW5nICp3ZWJQcm9jZXNzQXBwUGF0aCA9IFtb
TlNCdW5kbGUgYnVuZGxlV2l0aElkZW50aWZpZXI6QCJjb20uYXBwbGUuV2ViS2l0MiJdIHBhdGhG
b3JBdXhpbGlhcnlFeGVjdXRhYmxlOkAiV2ViUHJvY2Vzcy5hcHAiXTsKKyAgICAgICAgTlNTdHJp
bmcgKndlYlByb2Nlc3NBcHBFeGVjdXRhYmxlUGF0aCA9IFtbTlNCdW5kbGUgYnVuZGxlV2l0aFBh
dGg6d2ViUHJvY2Vzc0FwcFBhdGhdIGV4ZWN1dGFibGVQYXRoXTsKKworICAgICAgICBjb25zdCBj
aGFyKiBwYXRoID0gW3dlYlByb2Nlc3NBcHBFeGVjdXRhYmxlUGF0aCBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb25dOworICAgICAgICBjb25zdCBjaGFyKiBhcmdzW10gPSB7IHBhdGgsIDAgfTsKKwor
ICAgICAgICAvLyBSZWdpc3RlciBvdXJzZWx2ZXMuCisgICAgICAgIGtlcm5fcmV0dXJuX3Qga3Ig
PSBib290c3RyYXBfcmVnaXN0ZXIyKGJvb3RzdHJhcF9wb3J0LCAoY2hhciopImNvbS5hcHBsZS5X
ZWJLaXQuV2ViUHJvY2VzcyIsIGxpc3RlbmluZ1BvcnQsIC8qIEJPT1RTVFJBUF9QRVJfUElEX1NF
UlZJQ0UgKi8gMSk7CisgICAgICAgIGlmIChrcikKKyAgICAgICAgICAgIE5TTG9nKEAiYm9vdHN0
cmFwX3JlZ2lzdGVyMiByZXN1bHQ6ICV4Iiwga3IpOworICAgICAgICAKKyAgICAgICAgaW50IHJl
c3VsdCA9IHBvc2l4X3NwYXduKCZpbmZvLnByb2Nlc3NJZGVudGlmaWVyLCBwYXRoLCAwLCAwLCAo
Y2hhciAqY29uc3QqKWFyZ3MsICpfTlNHZXRFbnZpcm9uKCkpOworICAgICAgICBpZiAocmVzdWx0
KQorICAgICAgICAgICAgTlNMb2coQCJwb3NpeF9zcGF3biByZXN1bHQ6ICVkIiwgcmVzdWx0KTsK
ICAgICB9CiAKICAgICByZXR1cm4gaW5mbzsKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0xhdW5j
aGVyL3dpbi9XZWJQcm9jZXNzTGF1bmNoZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQ
cm9jZXNzL0xhdW5jaGVyL3dpbi9XZWJQcm9jZXNzTGF1bmNoZXIuY3BwCShyZXZpc2lvbiA2MTQ0
MykKKysrIFdlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL3dpbi9XZWJQcm9jZXNzTGF1bmNoZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw0NiArNTMsNDIgQEAgc3RhdGljIHZvaWQqIHdlYlRo
cmVhZEJvZHkodm9pZCopCiAgICAgcmV0dXJuIDA7CiB9CiAKLVByb2Nlc3NJbmZvIGxhdW5jaFdl
YlByb2Nlc3MoQ29yZUlQQzo6Q29ubmVjdGlvbjo6Q2xpZW50KiBjbGllbnQsIFByb2Nlc3NNb2Rl
bCBtb2RlbCkKK1Byb2Nlc3NJbmZvIGxhdW5jaFdlYlByb2Nlc3MoQ29yZUlQQzo6Q29ubmVjdGlv
bjo6Q2xpZW50KiBjbGllbnQsIGJvb2wgdXNlVGhyZWFkKQogewogICAgIFByb2Nlc3NJbmZvIGlu
Zm8gPSB7IDAsIDAgfTsKIAogICAgIGluZm8uY29ubmVjdGlvbiA9IENvcmVJUEM6OkNvbm5lY3Rp
b246OmNyZWF0ZVNlcnZlckNvbm5lY3Rpb24oc2VydmVyTmFtZSwgY2xpZW50LCBSdW5Mb29wOjpt
YWluKCkpOwogICAgIGluZm8uY29ubmVjdGlvbi0+b3BlbigpOwogCi0gICAgc3dpdGNoIChtb2Rl
bCkgewotICAgICAgICBjYXNlIFByb2Nlc3NNb2RlbFNlY29uZGFyeVRocmVhZDogewotICAgICAg
ICAgICAgLy8gRklYTUU6IFBhc3MgdGhlIGhhbmRsZS4KLSAgICAgICAgICAgIGlmIChjcmVhdGVU
aHJlYWQod2ViVGhyZWFkQm9keSwgMCwgIldlYktpdDI6IFdlYlRocmVhZCIpKSB7Ci0gICAgICAg
ICAgICAgICAgaW5mby5wcm9jZXNzSWRlbnRpZmllciA9IDo6R2V0Q3VycmVudFByb2Nlc3MoKTsK
LSAgICAgICAgICAgICAgICByZXR1cm4gaW5mbzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGJyZWFrOworICAgIGlmICh1c2VUaHJlYWQpIHsKKyAgICAgICAgLy8gRklYTUU6IFBhc3MgdGhl
IGhhbmRsZS4KKyAgICAgICAgaWYgKGNyZWF0ZVRocmVhZCh3ZWJUaHJlYWRCb2R5LCAwLCAiV2Vi
S2l0MjogV2ViVGhyZWFkIikpIHsKKyAgICAgICAgICAgIGluZm8ucHJvY2Vzc0lkZW50aWZpZXIg
PSA6OkdldEN1cnJlbnRQcm9jZXNzKCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAg
ICAgfQotICAgICAgICBjYXNlIFByb2Nlc3NNb2RlbFNlY29uZGFyeVByb2Nlc3M6IHsKLSAgICAg
ICAgICAgIC8vIEZJWE1FOiBXZSB3b3VsZCBsaWtlIHRvIHBhc3MgYSBmdWxsIHBhdGggdG8gdGhl
IC5leGUgaGVyZS4KKyAgICB9IGVsc2UgeworICAgICAgICAvLyBGSVhNRTogV2Ugd291bGQgbGlr
ZSB0byBwYXNzIGEgZnVsbCBwYXRoIHRvIHRoZSAuZXhlIGhlcmUuCiAjaWZuZGVmIERFQlVHX0FM
TAotICAgICAgICAgICAgU3RyaW5nIGNvbW1hbmRMaW5lKEwiV2ViS2l0MldlYlByb2Nlc3MuZXhl
Iik7CisgICAgICAgIFN0cmluZyBjb21tYW5kTGluZShMIldlYktpdDJXZWJQcm9jZXNzLmV4ZSIp
OwogI2Vsc2UKLSAgICAgICAgICAgIFN0cmluZyBjb21tYW5kTGluZShMIldlYktpdDJXZWJQcm9j
ZXNzX2RlYnVnLmV4ZSIpOworICAgICAgICBTdHJpbmcgY29tbWFuZExpbmUoTCJXZWJLaXQyV2Vi
UHJvY2Vzc19kZWJ1Zy5leGUiKTsKICNlbmRpZgogCi0gICAgICAgICAgICBTVEFSVFVQSU5GTyBz
dGFydHVwSW5mbyA9IHsgMCB9OwotICAgICAgICAgICAgc3RhcnR1cEluZm8uY2IgPSBzaXplb2Yo
c3RhcnR1cEluZm8pOwotICAgICAgICAgICAgUFJPQ0VTU19JTkZPUk1BVElPTiBwcm9jZXNzSW5m
b3JtYXRpb24gPSB7IDAgfTsKLSAgICAgICAgICAgIEJPT0wgcmVzdWx0ID0gOjpDcmVhdGVQcm9j
ZXNzVygwLCAoTFBXU1RSKWNvbW1hbmRMaW5lLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9u
KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgZmFs
c2UsIDAsIDAsIDAsICZzdGFydHVwSW5mbywgJnByb2Nlc3NJbmZvcm1hdGlvbik7Ci0gICAgICAg
ICAgICBpZiAoIXJlc3VsdCkgewotICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXaGF0IHNob3Vs
ZCB3ZSBkbyBoZXJlPwotICAgICAgICAgICAgICAgIERXT1JEIGVycm9yID0gOjpHZXRMYXN0RXJy
b3IoKTsKLSAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAg
IH0KKyAgICAgICAgU1RBUlRVUElORk8gc3RhcnR1cEluZm8gPSB7IDAgfTsKKyAgICAgICAgc3Rh
cnR1cEluZm8uY2IgPSBzaXplb2Yoc3RhcnR1cEluZm8pOworICAgICAgICBQUk9DRVNTX0lORk9S
TUFUSU9OIHByb2Nlc3NJbmZvcm1hdGlvbiA9IHsgMCB9OworICAgICAgICBCT09MIHJlc3VsdCA9
IDo6Q3JlYXRlUHJvY2Vzc1coMCwgKExQV1NUUiljb21tYW5kTGluZS5jaGFyYWN0ZXJzV2l0aE51
bGxUZXJtaW5hdGlvbigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MCwgMCwgZmFsc2UsIDAsIDAsIDAsICZzdGFydHVwSW5mbywgJnByb2Nlc3NJbmZvcm1hdGlvbik7
CisgICAgICAgIGlmICghcmVzdWx0KSB7CisgICAgICAgICAgICAvLyBGSVhNRTogV2hhdCBzaG91
bGQgd2UgZG8gaGVyZT8KKyAgICAgICAgICAgIERXT1JEIGVycm9yID0gOjpHZXRMYXN0RXJyb3Io
KTsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CiAKLSAgICAg
ICAgICAgIC8vIERvbid0IGxlYWsgdGhlIHRocmVhZCBoYW5kbGUuCi0gICAgICAgICAgICA6OkNs
b3NlSGFuZGxlKHByb2Nlc3NJbmZvcm1hdGlvbi5oVGhyZWFkKTsKKyAgICAgICAgLy8gRG9uJ3Qg
bGVhayB0aGUgdGhyZWFkIGhhbmRsZS4KKyAgICAgICAgOjpDbG9zZUhhbmRsZShwcm9jZXNzSW5m
b3JtYXRpb24uaFRocmVhZCk7CiAKLSAgICAgICAgICAgIGluZm8ucHJvY2Vzc0lkZW50aWZpZXIg
PSBwcm9jZXNzSW5mb3JtYXRpb24uaFByb2Nlc3M7Ci0gICAgICAgIH0KKyAgICAgICAgaW5mby5w
cm9jZXNzSWRlbnRpZmllciA9IHByb2Nlc3NJbmZvcm1hdGlvbi5oUHJvY2VzczsKICAgICB9CiAK
ICAgICByZXR1cm4gaW5mbzsKSW5kZXg6IFdlYktpdDIvbWFjL1dlYktpdDIuZXhwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdDIvbWFjL1dlYktpdDIuZXhwCShyZXZpc2lvbiA2MTQ0MykKKysrIFdlYktp
dDIvbWFjL1dlYktpdDIuZXhwCSh3b3JraW5nIGNvcHkpCkBAIC01LDYgKzUsOCBAQCBfV0tCdW5k
bGVQYWdlU2V0Q2xpZW50CiBfV0tCdW5kbGVTZXRDbGllbnQKIF9XS0NvbnRleHRDcmVhdGUKIF9X
S0NvbnRleHRDcmVhdGVXaXRoSW5qZWN0ZWRCdW5kbGVQYXRoCitfV0tDb250ZXh0R2V0U2hhcmVk
UHJvY2Vzc0NvbnRleHQKK19XS0NvbnRleHRHZXRTaGFyZWRUaHJlYWRDb250ZXh0CiBfV0tDb250
ZXh0R2V0U3RhdGlzdGljcwogX1dLQ29udGV4dFJlbGVhc2UKIF9XS0NvbnRleHRSZXRhaW4KSW5k
ZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDYxNDk4KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTAtMDYtMTkgIFNhbSBXZWluaWcgIDxzYW1Ad2Vi
a2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBGaXggZm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDg4Mgor
ICAgICAgICBBZGQgYWJpbGl0eSB0byBoYXZlIGEgV2ViUHJvY2VzcyBwZXIgV2ViQ29udGV4dC4K
KworICAgICAgICBNb3ZlIHRvIHVzZSBuZXcgc2hhcmVkIGNvbnRleHRzIEFQSS4KKworICAgICAg
ICAqIE1pbmlCcm93c2VyL21hYy9BcHBEZWxlZ2F0ZS5oOgorICAgICAgICAqIE1pbmlCcm93c2Vy
L21hYy9BcHBEZWxlZ2F0ZS5tOgorICAgICAgICAoLVtCcm93c2VyQXBwRGVsZWdhdGUgaW5pdF0p
OgorICAgICAgICAoLVtCcm93c2VyQXBwRGVsZWdhdGUgZ2V0Q3VycmVudFBhZ2VOYW1lc3BhY2Vd
KToKKyAgICAgICAgKC1bQnJvd3NlckFwcERlbGVnYXRlIHZhbGlkYXRlTWVudUl0ZW06XSk6Cisg
ICAgICAgICgtW0Jyb3dzZXJBcHBEZWxlZ2F0ZSBfc2V0UHJvY2Vzc01vZGVsOl0pOgorICAgICAg
ICAoLVtCcm93c2VyQXBwRGVsZWdhdGUgc2V0U2hhcmVkUHJvY2Vzc1Byb2Nlc3NNb2RlbDpdKToK
KyAgICAgICAgKC1bQnJvd3NlckFwcERlbGVnYXRlIHNldFNoYXJlZFRocmVhZFByb2Nlc3NNb2Rl
bDpdKToKKyAgICAgICAgKiBNaW5pQnJvd3Nlci93aW4vQnJvd3NlclZpZXcuY3BwOgorICAgICAg
ICAoQnJvd3NlclZpZXc6OmNyZWF0ZSk6CisKIDIwMTAtMDYtMDIgIFJvYmVydCBIb2dhbiAgPHJv
YmVydEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCkluZGV4
OiBXZWJLaXRUb29scy9NaW5pQnJvd3Nlci9tYWMvQXBwRGVsZWdhdGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXRUb29scy9NaW5pQnJvd3Nlci9tYWMvQXBwRGVsZWdhdGUuaAkocmV2aXNpb24gNjE0
NDMpCisrKyBXZWJLaXRUb29scy9NaW5pQnJvd3Nlci9tYWMvQXBwRGVsZWdhdGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjMsOCArMjMsMTQgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCitlbnVtIFByb2Nlc3NNb2RlbCB7CisgICAga1Byb2Nlc3NNb2RlbFNoYXJl
ZFNlY29uZGFyeVRocmVhZCwKKyAgICBrUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2Vz
cworfTsKK3R5cGVkZWYgdW5zaWduZWQgbG9uZyBQcm9jZXNzTW9kZWw7CisKIEBpbnRlcmZhY2Ug
QnJvd3NlckFwcERlbGVnYXRlIDogTlNPYmplY3QgPE5TQXBwbGljYXRpb25EZWxlZ2F0ZT4gewot
ICAgIFdLUHJvY2Vzc01vZGVsIGN1cnJlbnRQcm9jZXNzTW9kZWw7CisgICAgUHJvY2Vzc01vZGVs
IGN1cnJlbnRQcm9jZXNzTW9kZWw7CiAgICAgV0tQYWdlTmFtZXNwYWNlUmVmIHRocmVhZFBhZ2VO
YW1lc3BhY2U7CiAgICAgV0tQYWdlTmFtZXNwYWNlUmVmIHByb2Nlc3NQYWdlTmFtZXNwYWNlOwog
fQpJbmRleDogV2ViS2l0VG9vbHMvTWluaUJyb3dzZXIvbWFjL0FwcERlbGVnYXRlLm0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0VG9vbHMvTWluaUJyb3dzZXIvbWFjL0FwcERlbGVnYXRlLm0JKHJldmlz
aW9uIDYxNDQzKQorKysgV2ViS2l0VG9vbHMvTWluaUJyb3dzZXIvbWFjL0FwcERlbGVnYXRlLm0J
KHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbXBvcnQgIkJyb3dzZXJTdGF0aXN0
aWNzV2luZG93Q29udHJvbGxlci5oIgogCiAjaW1wb3J0IDxXZWJLaXQyL1dLU3RyaW5nQ0YuaD4K
KyNpbXBvcnQgPFdlYktpdDIvV0tDb250ZXh0UHJpdmF0ZS5oPgogCiBzdGF0aWMgTlNTdHJpbmcg
KmRlZmF1bHRVUkwgPSBAImh0dHA6Ly93ZWJraXQub3JnLyI7CiAKQEAgLTM5LDE4ICs0MCwxOCBA
QCAtIChpZClpbml0CiAgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKICAgICBpZiAoc2VsZikgewog
ICAgICAgICBpZiAoW05TRXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU1NoaWZ0S2V5TWFzaykKLSAg
ICAgICAgICAgIGN1cnJlbnRQcm9jZXNzTW9kZWwgPSBrV0tQcm9jZXNzTW9kZWxTZWNvbmRhcnlU
aHJlYWQ7CisgICAgICAgICAgICBjdXJyZW50UHJvY2Vzc01vZGVsID0ga1Byb2Nlc3NNb2RlbFNo
YXJlZFNlY29uZGFyeVRocmVhZDsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgY3VycmVudFBy
b2Nlc3NNb2RlbCA9IGtXS1Byb2Nlc3NNb2RlbFNlY29uZGFyeVByb2Nlc3M7CisgICAgICAgICAg
ICBjdXJyZW50UHJvY2Vzc01vZGVsID0ga1Byb2Nlc3NNb2RlbFNoYXJlZFNlY29uZGFyeVByb2Nl
c3M7CiAKLSAgICAgICAgQ0ZTdHJpbmdSZWYgYnVuZGxlUGF0aENGID0gKENGU3RyaW5nUmVmKVtb
TlNCdW5kbGUgbWFpbkJ1bmRsZV0gcGF0aEZvckF1eGlsaWFyeUV4ZWN1dGFibGU6QCJXZWJCdW5k
bGUuYnVuZGxlIl07Ci0gICAgICAgIFdLU3RyaW5nUmVmIGJ1bmRsZVBhdGggPSBXS1N0cmluZ0Ny
ZWF0ZVdpdGhDRlN0cmluZyhidW5kbGVQYXRoQ0YpOwotCi0gICAgICAgIFdLQ29udGV4dFJlZiB0
aHJlYWRDb250ZXh0ID0gV0tDb250ZXh0Q3JlYXRlV2l0aEluamVjdGVkQnVuZGxlUGF0aChrV0tQ
cm9jZXNzTW9kZWxTZWNvbmRhcnlUaHJlYWQsIGJ1bmRsZVBhdGgpOworICAgICAgICBXS0NvbnRl
eHRSZWYgdGhyZWFkQ29udGV4dCA9IFdLQ29udGV4dEdldFNoYXJlZFRocmVhZENvbnRleHQoKTsK
ICAgICAgICAgdGhyZWFkUGFnZU5hbWVzcGFjZSA9IFdLUGFnZU5hbWVzcGFjZUNyZWF0ZSh0aHJl
YWRDb250ZXh0KTsKICAgICAgICAgV0tDb250ZXh0UmVsZWFzZSh0aHJlYWRDb250ZXh0KTsKIAot
ICAgICAgICBXS0NvbnRleHRSZWYgcHJvY2Vzc0NvbnRleHQgPSBXS0NvbnRleHRDcmVhdGVXaXRo
SW5qZWN0ZWRCdW5kbGVQYXRoKGtXS1Byb2Nlc3NNb2RlbFNlY29uZGFyeVByb2Nlc3MsIGJ1bmRs
ZVBhdGgpOworICAgICAgICBDRlN0cmluZ1JlZiBidW5kbGVQYXRoQ0YgPSAoQ0ZTdHJpbmdSZWYp
W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBwYXRoRm9yQXV4aWxpYXJ5RXhlY3V0YWJsZTpAIldlYkJ1
bmRsZS5idW5kbGUiXTsKKyAgICAgICAgV0tTdHJpbmdSZWYgYnVuZGxlUGF0aCA9IFdLU3RyaW5n
Q3JlYXRlV2l0aENGU3RyaW5nKGJ1bmRsZVBhdGhDRik7CisKKyAgICAgICAgV0tDb250ZXh0UmVm
IHByb2Nlc3NDb250ZXh0ID0gV0tDb250ZXh0Q3JlYXRlV2l0aEluamVjdGVkQnVuZGxlUGF0aChi
dW5kbGVQYXRoKTsKICAgICAgICAgcHJvY2Vzc1BhZ2VOYW1lc3BhY2UgPSBXS1BhZ2VOYW1lc3Bh
Y2VDcmVhdGUocHJvY2Vzc0NvbnRleHQpOwogICAgICAgICBXS0NvbnRleHRSZWxlYXNlKHByb2Nl
c3NDb250ZXh0KTsKIApAQCAtNzAsMTkgKzcxLDE5IEBAIC0gKElCQWN0aW9uKW5ld1dpbmRvdzoo
aWQpc2VuZGVyCiAKIC0gKFdLUGFnZU5hbWVzcGFjZVJlZilnZXRDdXJyZW50UGFnZU5hbWVzcGFj
ZQogewotICAgIHJldHVybiAoY3VycmVudFByb2Nlc3NNb2RlbCA9PSBrV0tQcm9jZXNzTW9kZWxT
ZWNvbmRhcnlUaHJlYWQpID8gdGhyZWFkUGFnZU5hbWVzcGFjZSA6IHByb2Nlc3NQYWdlTmFtZXNw
YWNlOworICAgIHJldHVybiAoY3VycmVudFByb2Nlc3NNb2RlbCA9PSBrUHJvY2Vzc01vZGVsU2hh
cmVkU2Vjb25kYXJ5VGhyZWFkKSA/IHRocmVhZFBhZ2VOYW1lc3BhY2UgOiBwcm9jZXNzUGFnZU5h
bWVzcGFjZTsKIH0KIAogLSAoQk9PTCl2YWxpZGF0ZU1lbnVJdGVtOihOU01lbnVJdGVtICopbWVu
dUl0ZW0KIHsKICAgICBpZiAoW21lbnVJdGVtIGFjdGlvbl0gPT0gQHNlbGVjdG9yKHNldFNoYXJl
ZFByb2Nlc3NQcm9jZXNzTW9kZWw6KSkKLSAgICAgICAgW21lbnVJdGVtIHNldFN0YXRlOmN1cnJl
bnRQcm9jZXNzTW9kZWwgPT0ga1dLUHJvY2Vzc01vZGVsU2Vjb25kYXJ5UHJvY2VzcyA/IE5TT25T
dGF0ZSA6IE5TT2ZmU3RhdGVdOworICAgICAgICBbbWVudUl0ZW0gc2V0U3RhdGU6Y3VycmVudFBy
b2Nlc3NNb2RlbCA9PSBrUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2VzcyA/IE5TT25T
dGF0ZSA6IE5TT2ZmU3RhdGVdOwogICAgIGVsc2UgaWYgKFttZW51SXRlbSBhY3Rpb25dID09IEBz
ZWxlY3RvcihzZXRTaGFyZWRUaHJlYWRQcm9jZXNzTW9kZWw6KSkKLSAgICAgICAgW21lbnVJdGVt
IHNldFN0YXRlOmN1cnJlbnRQcm9jZXNzTW9kZWwgPT0ga1dLUHJvY2Vzc01vZGVsU2Vjb25kYXJ5
VGhyZWFkID8gTlNPblN0YXRlIDogTlNPZmZTdGF0ZV07CisgICAgICAgIFttZW51SXRlbSBzZXRT
dGF0ZTpjdXJyZW50UHJvY2Vzc01vZGVsID09IGtQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlU
aHJlYWQgPyBOU09uU3RhdGUgOiBOU09mZlN0YXRlXTsKICAgICByZXR1cm4gWUVTOwogfSAgICAg
ICAgCiAKLS0gKHZvaWQpX3NldFByb2Nlc3NNb2RlbDooV0tQcm9jZXNzTW9kZWwpcHJvY2Vzc01v
ZGVsCistICh2b2lkKV9zZXRQcm9jZXNzTW9kZWw6KFByb2Nlc3NNb2RlbClwcm9jZXNzTW9kZWwK
IHsKICAgICBpZiAocHJvY2Vzc01vZGVsID09IGN1cnJlbnRQcm9jZXNzTW9kZWwpCiAgICAgICAg
IHJldHVybjsKQEAgLTkyLDEyICs5MywxMiBAQCAtICh2b2lkKV9zZXRQcm9jZXNzTW9kZWw6KFdL
UHJvY2Vzc01vZGVsCiAKIC0gKElCQWN0aW9uKXNldFNoYXJlZFByb2Nlc3NQcm9jZXNzTW9kZWw6
KGlkKXNlbmRlcgogewotICAgIFtzZWxmIF9zZXRQcm9jZXNzTW9kZWw6a1dLUHJvY2Vzc01vZGVs
U2Vjb25kYXJ5UHJvY2Vzc107CisgICAgW3NlbGYgX3NldFByb2Nlc3NNb2RlbDprUHJvY2Vzc01v
ZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2Vzc107CiB9CiAKIC0gKElCQWN0aW9uKXNldFNoYXJlZFRo
cmVhZFByb2Nlc3NNb2RlbDooaWQpc2VuZGVyCiB7Ci0gICAgW3NlbGYgX3NldFByb2Nlc3NNb2Rl
bDprV0tQcm9jZXNzTW9kZWxTZWNvbmRhcnlUaHJlYWRdOworICAgIFtzZWxmIF9zZXRQcm9jZXNz
TW9kZWw6a1Byb2Nlc3NNb2RlbFNoYXJlZFNlY29uZGFyeVRocmVhZF07CiB9CiAKIC0gKElCQWN0
aW9uKXNob3dTdGF0aXN0aWNzV2luZG93OihpZClzZW5kZXIKSW5kZXg6IFdlYktpdFRvb2xzL01p
bmlCcm93c2VyL3dpbi9Ccm93c2VyVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMv
TWluaUJyb3dzZXIvd2luL0Jyb3dzZXJWaWV3LmNwcAkocmV2aXNpb24gNjE0NDMpCisrKyBXZWJL
aXRUb29scy9NaW5pQnJvd3Nlci93aW4vQnJvd3NlclZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiQnJvd3NlclZpZXcuaCIKIAogI2luY2x1ZGUgIkJy
b3dzZXJXaW5kb3cuaCIKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQ29udGV4dFByaXZhdGUuaD4KICNp
bmNsdWRlIDxXZWJLaXQyL1dLVVJMQ0YuaD4KIAogc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNob3J0
IEhJR0hfQklUX01BU0tfU0hPUlQgPSAweDgwMDA7CkBAIC02Niw3ICs2NywxMiBAQCB2b2lkIEJy
b3dzZXJWaWV3OjpjcmVhdGUoUkVDVCB3ZWJWaWV3UmVjCiAKICAgICBib29sIGlzU2hpZnRLZXlE
b3duID0gOjpHZXRLZXlTdGF0ZShWS19TSElGVCkgJiBISUdIX0JJVF9NQVNLX1NIT1JUOwogCi0g
ICAgV0tDb250ZXh0UmVmIGNvbnRleHQgPSBXS0NvbnRleHRDcmVhdGUoaXNTaGlmdEtleURvd24g
PyBrV0tQcm9jZXNzTW9kZWxTZWNvbmRhcnlUaHJlYWQgOiBrV0tQcm9jZXNzTW9kZWxTZWNvbmRh
cnlQcm9jZXNzKTsKKyAgICBXS0NvbnRleHRSZWYgY29udGV4dDsKKyAgICBpZiAoaXNTaGlmdEtl
eURvd24pCisgICAgICAgIGNvbnRleHQgPSBXS0NvbnRleHRHZXRTaGFyZWRUaHJlYWRDb250ZXh0
KCk7CisgICAgZWxzZQorICAgICAgICBjb250ZXh0ID0gV0tDb250ZXh0R2V0U2hhcmVkUHJvY2Vz
c0NvbnRleHQoKTsKKwogICAgIFdLUGFnZU5hbWVzcGFjZVJlZiBwYWdlTmFtZXNwYWNlID0gV0tQ
YWdlTmFtZXNwYWNlQ3JlYXRlKGNvbnRleHQpOwogCiAgICAgbV93ZWJWaWV3ID0gV0tWaWV3Q3Jl
YXRlKHdlYlZpZXdSZWN0LCBwYWdlTmFtZXNwYWNlLCBwYXJlbnRXaW5kb3ctPndpbmRvdygpKTsK
</data>
<flag name="review"
          id="45893"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>