<?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>66331</bug_id>
          
          <creation_ts>2011-08-16 14:33:24 -0700</creation_ts>
          <short_desc>Switch focus handling to to new layout types</short_desc>
          <delta_ts>2011-08-17 17:49:21 -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>Layout and Rendering</component>
          <version>528+ (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>63567</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Emil A Eklund">eae</reporter>
          <assigned_to name="Emil A Eklund">eae</assigned_to>
          <cc>eric</cc>
    
    <cc>leviw</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>451871</commentid>
    <comment_count>0</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-08-16 14:33:24 -0700</bug_when>
    <thetext>Convert FocusController and SpatialNavigation to new layout abstraction as a part of the ongoing conversion work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451876</commentid>
    <comment_count>1</comment_count>
      <attachid>104092</attachid>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-08-16 14:37:30 -0700</bug_when>
    <thetext>Created attachment 104092
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452770</commentid>
    <comment_count>2</comment_count>
      <attachid>104092</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-17 17:49:16 -0700</bug_when>
    <thetext>Comment on attachment 104092
Patch

Clearing flags on attachment: 104092

Committed r93270: &lt;http://trac.webkit.org/changeset/93270&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452771</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-17 17:49:21 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104092</attachid>
            <date>2011-08-16 14:37:30 -0700</date>
            <delta_ts>2011-08-17 17:49:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66331-20110816143729.patch</filename>
            <type>text/plain</type>
            <size>26206</size>
            <attacher name="Emil A Eklund">eae</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkzMTU2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDYgQEAKKzIwMTEtMDgtMTYgIEVtaWwgQSBF
a2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFN3aXRjaCBmb2N1cyBoYW5kbGlu
ZyB0byB0byBuZXcgbGF5b3V0IHR5cGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02NjMzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIENvbnZlcnQgRm9jdXNDb250cm9sbGVyIGFuZCBTcGF0aWFsTmF2aWdh
dGlvbiB0byBuZXcgbGF5b3V0IGFic3RyYWN0aW9uCisgICAgICAgIGFzIGEgcGFydCBvZiB0aGUg
b25nb2luZyBjb252ZXJzaW9uIHdvcmsuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBuZXcg
ZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIHBhZ2UvRm9jdXNDb250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnVwZGF0ZUZvY3VzQ2FuZGlkYXRlSWZOZWVkZWQpOgorICAgICAgICAo
V2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyOjpmaW5kRm9jdXNDYW5kaWRhdGVJbkNvbnRhaW5lcik6
CisgICAgICAgIChXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXI6OmFkdmFuY2VGb2N1c0RpcmVjdGlv
bmFsbHlJbkNvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXI6OmFk
dmFuY2VGb2N1c0RpcmVjdGlvbmFsbHkpOgorICAgICAgICAqIHBhZ2UvRm9jdXNDb250cm9sbGVy
Lmg6CisgICAgICAgICogcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjphbGlnbm1lbnRGb3JSZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpzdGFydCk6CisgICAg
ICAgIChXZWJDb3JlOjptaWRkbGUpOgorICAgICAgICAoV2ViQ29yZTo6ZW5kKToKKyAgICAgICAg
KFdlYkNvcmU6OmFyZVJlY3RzRnVsbHlBbGlnbmVkKToKKyAgICAgICAgKFdlYkNvcmU6OmFyZVJl
Y3RzUGFydGlhbGx5QWxpZ25lZCk6CisgICAgICAgIChXZWJDb3JlOjphcmVSZWN0c01vcmVUaGFu
RnVsbFNjcmVlbkFwYXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OmJlbG93KToKKyAgICAgICAgKFdl
YkNvcmU6OnJpZ2h0T2YpOgorICAgICAgICAoV2ViQ29yZTo6aXNSZWN0SW5EaXJlY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6aGFzT2Zmc2NyZWVuUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpz
Y3JvbGxJbkRpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpkZWZsYXRlSWZPdmVybGFwcGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OmNhblNjcm9sbEluRGlyZWN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OnJlY3RUb0Fic29sdXRlQ29vcmRpbmF0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6bm9k
ZVJlY3RJbkFic29sdXRlQ29vcmRpbmF0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6ZnJhbWVSZWN0
SW5BYnNvbHV0ZUNvb3JkaW5hdGVzKToKKyAgICAgICAgKFdlYkNvcmU6OmVudHJ5QW5kRXhpdFBv
aW50c0ZvckRpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpkaXN0YW5jZURhdGFGb3JOb2Rl
KToKKyAgICAgICAgKFdlYkNvcmU6OmNhbkJlU2Nyb2xsZWRJbnRvVmlldyk6CisgICAgICAgIChX
ZWJDb3JlOjp2aXJ0dWFsUmVjdEZvckRpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjp2aXJ0
dWFsUmVjdEZvckFyZWFFbGVtZW50QW5kRGlyZWN0aW9uKToKKyAgICAgICAgKiBwYWdlL1NwYXRp
YWxOYXZpZ2F0aW9uLmg6CisKIDIwMTEtMDgtMTYgIEpvc2VwaCBQZWNvcmFybyAgPGpvZXBlY2tA
d2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIENocm9taXVtIFdpbmRvd3MgYnVpbGQg
Zml4IGFmdGVyIHI5MzE0MC4gVGFrZSAzLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1
c0NvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXND
b250cm9sbGVyLmNwcAkocmV2aXNpb24gOTMxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0Zv
Y3VzQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxMSwxMSArNjExLDExIEBAIHN0
YXRpYyB2b2lkIHVwZGF0ZUZvY3VzQ2FuZGlkYXRlSWZOZWVkZWQKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIEludFJlY3QgaW50ZXJzZWN0aW9uUmVjdCA9IGludGVyc2VjdGlvbihjYW5k
aWRhdGUucmVjdCwgY2xvc2VzdC5yZWN0KTsKKyAgICBMYXlvdXRSZWN0IGludGVyc2VjdGlvblJl
Y3QgPSBpbnRlcnNlY3Rpb24oY2FuZGlkYXRlLnJlY3QsIGNsb3Nlc3QucmVjdCk7CiAgICAgaWYg
KCFpbnRlcnNlY3Rpb25SZWN0LmlzRW1wdHkoKSAmJiAhYXJlRWxlbWVudHNPblNhbWVMaW5lKGNs
b3Nlc3QsIGNhbmRpZGF0ZSkpIHsKICAgICAgICAgLy8gSWYgMiBub2RlcyBhcmUgaW50ZXJzZWN0
aW5nLCBkbyBoaXQgdGVzdCB0byBmaW5kIHdoaWNoIG5vZGUgaW4gb24gdG9wLgotICAgICAgICBp
bnQgeCA9IGludGVyc2VjdGlvblJlY3QueCgpICsgaW50ZXJzZWN0aW9uUmVjdC53aWR0aCgpIC8g
MjsKLSAgICAgICAgaW50IHkgPSBpbnRlcnNlY3Rpb25SZWN0LnkoKSArIGludGVyc2VjdGlvblJl
Y3QuaGVpZ2h0KCkgLyAyOworICAgICAgICBMYXlvdXRVbml0IHggPSBpbnRlcnNlY3Rpb25SZWN0
LngoKSArIGludGVyc2VjdGlvblJlY3Qud2lkdGgoKSAvIDI7CisgICAgICAgIExheW91dFVuaXQg
eSA9IGludGVyc2VjdGlvblJlY3QueSgpICsgaW50ZXJzZWN0aW9uUmVjdC5oZWlnaHQoKSAvIDI7
CiAgICAgICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gY2FuZGlkYXRlLnZpc2libGVOb2RlLT5k
b2N1bWVudCgpLT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJl
c3VsdEF0UG9pbnQoSW50UG9pbnQoeCwgeSksIGZhbHNlLCB0cnVlKTsKICAgICAgICAgaWYgKGNh
bmRpZGF0ZS52aXNpYmxlTm9kZS0+Y29udGFpbnMocmVzdWx0LmlubmVyTm9kZSgpKSkgewogICAg
ICAgICAgICAgY2xvc2VzdCA9IGNhbmRpZGF0ZTsKQEAgLTYzNSw3ICs2MzUsNyBAQCBzdGF0aWMg
dm9pZCB1cGRhdGVGb2N1c0NhbmRpZGF0ZUlmTmVlZGVkCiAgICAgICAgIGNsb3Nlc3QgPSBjYW5k
aWRhdGU7CiB9CiAKLXZvaWQgRm9jdXNDb250cm9sbGVyOjpmaW5kRm9jdXNDYW5kaWRhdGVJbkNv
bnRhaW5lcihOb2RlKiBjb250YWluZXIsIGNvbnN0IEludFJlY3QmIHN0YXJ0aW5nUmVjdCwgRm9j
dXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBLZXlib2FyZEV2ZW50KiBldmVudCwgRm9jdXNDYW5kaWRh
dGUmIGNsb3Nlc3QpCit2b2lkIEZvY3VzQ29udHJvbGxlcjo6ZmluZEZvY3VzQ2FuZGlkYXRlSW5D
b250YWluZXIoTm9kZSogY29udGFpbmVyLCBjb25zdCBMYXlvdXRSZWN0JiBzdGFydGluZ1JlY3Qs
IEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwgS2V5Ym9hcmRFdmVudCogZXZlbnQsIEZvY3VzQ2Fu
ZGlkYXRlJiBjbG9zZXN0KQogewogICAgIEFTU0VSVChjb250YWluZXIpOwogICAgIE5vZGUqIGZv
Y3VzZWROb2RlID0gKGZvY3VzZWRGcmFtZSgpICYmIGZvY3VzZWRGcmFtZSgpLT5kb2N1bWVudCgp
KSA/IGZvY3VzZWRGcmFtZSgpLT5kb2N1bWVudCgpLT5mb2N1c2VkTm9kZSgpIDogMDsKQEAgLTY2
NSwxMiArNjY1LDEyIEBAIHZvaWQgRm9jdXNDb250cm9sbGVyOjpmaW5kRm9jdXNDYW5kaWRhdGUK
ICAgICB9CiB9CiAKLWJvb2wgRm9jdXNDb250cm9sbGVyOjphZHZhbmNlRm9jdXNEaXJlY3Rpb25h
bGx5SW5Db250YWluZXIoTm9kZSogY29udGFpbmVyLCBjb25zdCBJbnRSZWN0JiBzdGFydGluZ1Jl
Y3QsIEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwgS2V5Ym9hcmRFdmVudCogZXZlbnQpCitib29s
IEZvY3VzQ29udHJvbGxlcjo6YWR2YW5jZUZvY3VzRGlyZWN0aW9uYWxseUluQ29udGFpbmVyKE5v
ZGUqIGNvbnRhaW5lciwgY29uc3QgTGF5b3V0UmVjdCYgc3RhcnRpbmdSZWN0LCBGb2N1c0RpcmVj
dGlvbiBkaXJlY3Rpb24sIEtleWJvYXJkRXZlbnQqIGV2ZW50KQogewogICAgIGlmICghY29udGFp
bmVyIHx8ICFjb250YWluZXItPmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIEludFJlY3QgbmV3U3RhcnRpbmdSZWN0ID0gc3RhcnRpbmdSZWN0OworICAgIExheW91dFJl
Y3QgbmV3U3RhcnRpbmdSZWN0ID0gc3RhcnRpbmdSZWN0OwogCiAgICAgaWYgKHN0YXJ0aW5nUmVj
dC5pc0VtcHR5KCkpCiAgICAgICAgIG5ld1N0YXJ0aW5nUmVjdCA9IHZpcnR1YWxSZWN0Rm9yRGly
ZWN0aW9uKGRpcmVjdGlvbiwgbm9kZVJlY3RJbkFic29sdXRlQ29vcmRpbmF0ZXMoY29udGFpbmVy
KSk7CkBAIC02OTcsNyArNjk3LDcgQEAgYm9vbCBGb2N1c0NvbnRyb2xsZXI6OmFkdmFuY2VGb2N1
c0RpcmVjdAogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICAgICAgLy8g
TmF2aWdhdGUgaW50byBhIG5ldyBmcmFtZS4KLSAgICAgICAgSW50UmVjdCByZWN0OworICAgICAg
ICBMYXlvdXRSZWN0IHJlY3Q7CiAgICAgICAgIE5vZGUqIGZvY3VzZWROb2RlID0gZm9jdXNlZE9y
TWFpbkZyYW1lKCktPmRvY3VtZW50KCktPmZvY3VzZWROb2RlKCk7CiAgICAgICAgIGlmIChmb2N1
c2VkTm9kZSAmJiAhaGFzT2Zmc2NyZWVuUmVjdChmb2N1c2VkTm9kZSkpCiAgICAgICAgICAgICBy
ZWN0ID0gbm9kZVJlY3RJbkFic29sdXRlQ29vcmRpbmF0ZXMoZm9jdXNlZE5vZGUsIHRydWUgLyog
aWdub3JlIGJvcmRlciAqLyk7CkBAIC03MTUsNyArNzE1LDcgQEAgYm9vbCBGb2N1c0NvbnRyb2xs
ZXI6OmFkdmFuY2VGb2N1c0RpcmVjdAogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
IH0KICAgICAgICAgLy8gTmF2aWdhdGUgaW50byBhIG5ldyBzY3JvbGxhYmxlIGNvbnRhaW5lci4K
LSAgICAgICAgSW50UmVjdCBzdGFydGluZ1JlY3Q7CisgICAgICAgIExheW91dFJlY3Qgc3RhcnRp
bmdSZWN0OwogICAgICAgICBOb2RlKiBmb2N1c2VkTm9kZSA9IGZvY3VzZWRPck1haW5GcmFtZSgp
LT5kb2N1bWVudCgpLT5mb2N1c2VkTm9kZSgpOwogICAgICAgICBpZiAoZm9jdXNlZE5vZGUgJiYg
IWhhc09mZnNjcmVlblJlY3QoZm9jdXNlZE5vZGUpKQogICAgICAgICAgICAgc3RhcnRpbmdSZWN0
ID0gbm9kZVJlY3RJbkFic29sdXRlQ29vcmRpbmF0ZXMoZm9jdXNlZE5vZGUsIHRydWUpOwpAQCAt
NzUxLDcgKzc1MSw3IEBAIGJvb2wgRm9jdXNDb250cm9sbGVyOjphZHZhbmNlRm9jdXNEaXJlY3QK
ICAgICAgICAgc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250YWluZXIpLT51cGRhdGVMYXlvdXRJ
Z25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKICAgICAgICAgCiAgICAgLy8gRmlndXJlIG91dCB0
aGUgc3RhcnRpbmcgcmVjdC4KLSAgICBJbnRSZWN0IHN0YXJ0aW5nUmVjdDsKKyAgICBMYXlvdXRS
ZWN0IHN0YXJ0aW5nUmVjdDsKICAgICBpZiAoZm9jdXNlZE5vZGUpIHsKICAgICAgICAgaWYgKCFo
YXNPZmZzY3JlZW5SZWN0KGZvY3VzZWROb2RlKSkgewogICAgICAgICAgICAgY29udGFpbmVyID0g
c2Nyb2xsYWJsZUVuY2xvc2luZ0JveE9yUGFyZW50RnJhbWVGb3JOb2RlSW5EaXJlY3Rpb24oZGly
ZWN0aW9uLCBmb2N1c2VkTm9kZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29u
dHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9s
bGVyLmgJKHJldmlzaW9uIDkzMTQ5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRy
b2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBGb2N1c0Nv
bnRyb2xsZXJfaAogCiAjaW5jbHVkZSAiRm9jdXNEaXJlY3Rpb24uaCIKKyNpbmNsdWRlICJMYXlv
dXRUeXBlcy5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNv
cHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtODUsOCArODYsOCBAQCBwcml2
YXRlOgogICAgIE5vZGUqIG5leHRGb2N1c2FibGVOb2RlKFRyZWVTY29wZSosIE5vZGUqIHN0YXJ0
LCBLZXlib2FyZEV2ZW50Kik7CiAgICAgTm9kZSogcHJldmlvdXNGb2N1c2FibGVOb2RlKFRyZWVT
Y29wZSosIE5vZGUqIHN0YXJ0LCBLZXlib2FyZEV2ZW50Kik7CiAKLSAgICBib29sIGFkdmFuY2VG
b2N1c0RpcmVjdGlvbmFsbHlJbkNvbnRhaW5lcihOb2RlKiBjb250YWluZXIsIGNvbnN0IEludFJl
Y3QmIHN0YXJ0aW5nUmVjdCwgRm9jdXNEaXJlY3Rpb24sIEtleWJvYXJkRXZlbnQqKTsKLSAgICB2
b2lkIGZpbmRGb2N1c0NhbmRpZGF0ZUluQ29udGFpbmVyKE5vZGUqIGNvbnRhaW5lciwgY29uc3Qg
SW50UmVjdCYgc3RhcnRpbmdSZWN0LCBGb2N1c0RpcmVjdGlvbiwgS2V5Ym9hcmRFdmVudCosIEZv
Y3VzQ2FuZGlkYXRlJiBjbG9zZXN0KTsKKyAgICBib29sIGFkdmFuY2VGb2N1c0RpcmVjdGlvbmFs
bHlJbkNvbnRhaW5lcihOb2RlKiBjb250YWluZXIsIGNvbnN0IExheW91dFJlY3QmIHN0YXJ0aW5n
UmVjdCwgRm9jdXNEaXJlY3Rpb24sIEtleWJvYXJkRXZlbnQqKTsKKyAgICB2b2lkIGZpbmRGb2N1
c0NhbmRpZGF0ZUluQ29udGFpbmVyKE5vZGUqIGNvbnRhaW5lciwgY29uc3QgTGF5b3V0UmVjdCYg
c3RhcnRpbmdSZWN0LCBGb2N1c0RpcmVjdGlvbiwgS2V5Ym9hcmRFdmVudCosIEZvY3VzQ2FuZGlk
YXRlJiBjbG9zZXN0KTsKIAogICAgIFBhZ2UqIG1fcGFnZTsKICAgICBSZWZQdHI8RnJhbWU+IG1f
Zm9jdXNlZEZyYW1lOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlv
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlv
bi5jcHAJKHJldmlzaW9uIDkzMTQ5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2
aWdhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDE0ICs0NSwxNCBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBSZWN0c0FsaWdubWVudCBhbGlnbm1lbnRGb3JSZWN0cyhG
b2N1c0RpcmVjdGlvbiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRT
aXplJiB2aWV3U2l6ZSk7Ci1zdGF0aWMgYm9vbCBhcmVSZWN0c0Z1bGx5QWxpZ25lZChGb2N1c0Rp
cmVjdGlvbiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFJlY3QmKTsKLXN0YXRpYyBib29sIGFy
ZVJlY3RzUGFydGlhbGx5QWxpZ25lZChGb2N1c0RpcmVjdGlvbiwgY29uc3QgSW50UmVjdCYsIGNv
bnN0IEludFJlY3QmKTsKLXN0YXRpYyBib29sIGFyZVJlY3RzTW9yZVRoYW5GdWxsU2NyZWVuQXBh
cnQoRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBjb25zdCBJbnRSZWN0JiBjdXJSZWN0LCBjb25z
dCBJbnRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBJbnRTaXplJiB2aWV3U2l6ZSk7Ci1zdGF0aWMg
Ym9vbCBpc1JlY3RJbkRpcmVjdGlvbihGb2N1c0RpcmVjdGlvbiwgY29uc3QgSW50UmVjdCYsIGNv
bnN0IEludFJlY3QmKTsKLXN0YXRpYyB2b2lkIGRlZmxhdGVJZk92ZXJsYXBwZWQoSW50UmVjdCYs
IEludFJlY3QmKTsKLXN0YXRpYyBJbnRSZWN0IHJlY3RUb0Fic29sdXRlQ29vcmRpbmF0ZXMoRnJh
bWUqIGluaXRpYWxGcmFtZSwgY29uc3QgSW50UmVjdCYpOwotc3RhdGljIHZvaWQgZW50cnlBbmRF
eGl0UG9pbnRzRm9yRGlyZWN0aW9uKEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwgY29uc3QgSW50
UmVjdCYgc3RhcnRpbmdSZWN0LCBjb25zdCBJbnRSZWN0JiBwb3RlbnRpYWxSZWN0LCBJbnRQb2lu
dCYgZXhpdFBvaW50LCBJbnRQb2ludCYgZW50cnlQb2ludCk7CitzdGF0aWMgUmVjdHNBbGlnbm1l
bnQgYWxpZ25tZW50Rm9yUmVjdHMoRm9jdXNEaXJlY3Rpb24sIGNvbnN0IExheW91dFJlY3QmLCBj
b25zdCBMYXlvdXRSZWN0JiwgY29uc3QgTGF5b3V0U2l6ZSYgdmlld1NpemUpOworc3RhdGljIGJv
b2wgYXJlUmVjdHNGdWxseUFsaWduZWQoRm9jdXNEaXJlY3Rpb24sIGNvbnN0IExheW91dFJlY3Qm
LCBjb25zdCBMYXlvdXRSZWN0Jik7CitzdGF0aWMgYm9vbCBhcmVSZWN0c1BhcnRpYWxseUFsaWdu
ZWQoRm9jdXNEaXJlY3Rpb24sIGNvbnN0IExheW91dFJlY3QmLCBjb25zdCBMYXlvdXRSZWN0Jik7
CitzdGF0aWMgYm9vbCBhcmVSZWN0c01vcmVUaGFuRnVsbFNjcmVlbkFwYXJ0KEZvY3VzRGlyZWN0
aW9uLCBjb25zdCBMYXlvdXRSZWN0JiBjdXJSZWN0LCBjb25zdCBMYXlvdXRSZWN0JiB0YXJnZXRS
ZWN0LCBjb25zdCBMYXlvdXRTaXplJiB2aWV3U2l6ZSk7CitzdGF0aWMgYm9vbCBpc1JlY3RJbkRp
cmVjdGlvbihGb2N1c0RpcmVjdGlvbiwgY29uc3QgTGF5b3V0UmVjdCYsIGNvbnN0IExheW91dFJl
Y3QmKTsKK3N0YXRpYyB2b2lkIGRlZmxhdGVJZk92ZXJsYXBwZWQoTGF5b3V0UmVjdCYsIExheW91
dFJlY3QmKTsKK3N0YXRpYyBMYXlvdXRSZWN0IHJlY3RUb0Fic29sdXRlQ29vcmRpbmF0ZXMoRnJh
bWUqIGluaXRpYWxGcmFtZSwgY29uc3QgTGF5b3V0UmVjdCYpOworc3RhdGljIHZvaWQgZW50cnlB
bmRFeGl0UG9pbnRzRm9yRGlyZWN0aW9uKEZvY3VzRGlyZWN0aW9uLCBjb25zdCBMYXlvdXRSZWN0
JiBzdGFydGluZ1JlY3QsIGNvbnN0IExheW91dFJlY3QmIHBvdGVudGlhbFJlY3QsIExheW91dFBv
aW50JiBleGl0UG9pbnQsIExheW91dFBvaW50JiBlbnRyeVBvaW50KTsKIHN0YXRpYyBib29sIGlz
U2Nyb2xsYWJsZU5vZGUoY29uc3QgTm9kZSopOwogCiBGb2N1c0NhbmRpZGF0ZTo6Rm9jdXNDYW5k
aWRhdGUoTm9kZSogbm9kZSwgRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uKQpAQCAtOTUsNyArOTUs
NyBAQCBib29sIGlzU3BhdGlhbE5hdmlnYXRpb25FbmFibGVkKGNvbnN0IEZyCiAgICAgcmV0dXJu
IChmcmFtZSAmJiBmcmFtZS0+c2V0dGluZ3MoKSAmJiBmcmFtZS0+c2V0dGluZ3MoKS0+aXNTcGF0
aWFsTmF2aWdhdGlvbkVuYWJsZWQoKSk7CiB9CiAKLXN0YXRpYyBSZWN0c0FsaWdubWVudCBhbGln
bm1lbnRGb3JSZWN0cyhGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24sIGNvbnN0IEludFJlY3QmIGN1
clJlY3QsIGNvbnN0IEludFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEludFNpemUmIHZpZXdTaXpl
KQorc3RhdGljIFJlY3RzQWxpZ25tZW50IGFsaWdubWVudEZvclJlY3RzKEZvY3VzRGlyZWN0aW9u
IGRpcmVjdGlvbiwgY29uc3QgTGF5b3V0UmVjdCYgY3VyUmVjdCwgY29uc3QgTGF5b3V0UmVjdCYg
dGFyZ2V0UmVjdCwgY29uc3QgTGF5b3V0U2l6ZSYgdmlld1NpemUpCiB7CiAgICAgLy8gSWYgd2Ug
Zm91bmQgYSBub2RlIGluIGZ1bGwgYWxpZ25tZW50LCBidXQgaXQgaXMgdG9vIGZhciBhd2F5LCBp
Z25vcmUgaXQuCiAgICAgaWYgKGFyZVJlY3RzTW9yZVRoYW5GdWxsU2NyZWVuQXBhcnQoZGlyZWN0
aW9uLCBjdXJSZWN0LCB0YXJnZXRSZWN0LCB2aWV3U2l6ZSkpCkBAIC0xMTUsMTggKzExNSwxOCBA
QCBzdGF0aWMgaW5saW5lIGJvb2wgaXNIb3Jpem9udGFsTW92ZShGb2N1CiAgICAgcmV0dXJuIGRp
cmVjdGlvbiA9PSBGb2N1c0RpcmVjdGlvbkxlZnQgfHwgZGlyZWN0aW9uID09IEZvY3VzRGlyZWN0
aW9uUmlnaHQ7CiB9CiAKLXN0YXRpYyBpbmxpbmUgaW50IHN0YXJ0KEZvY3VzRGlyZWN0aW9uIGRp
cmVjdGlvbiwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3N0YXRpYyBpbmxpbmUgTGF5b3V0VW5pdCBz
dGFydChGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24sIGNvbnN0IExheW91dFJlY3QmIHJlY3QpCiB7
CiAgICAgcmV0dXJuIGlzSG9yaXpvbnRhbE1vdmUoZGlyZWN0aW9uKSA/IHJlY3QueSgpIDogcmVj
dC54KCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgaW50IG1pZGRsZShGb2N1c0RpcmVjdGlvbiBkaXJl
Y3Rpb24sIGNvbnN0IEludFJlY3QmIHJlY3QpCitzdGF0aWMgaW5saW5lIExheW91dFVuaXQgbWlk
ZGxlKEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwgY29uc3QgTGF5b3V0UmVjdCYgcmVjdCkKIHsK
LSAgICBJbnRQb2ludCBjZW50ZXIocmVjdC5jZW50ZXIoKSk7CisgICAgTGF5b3V0UG9pbnQgY2Vu
dGVyKHJlY3QuY2VudGVyKCkpOwogICAgIHJldHVybiBpc0hvcml6b250YWxNb3ZlKGRpcmVjdGlv
bikgPyBjZW50ZXIueSgpOiBjZW50ZXIueCgpOwogfQogCi1zdGF0aWMgaW5saW5lIGludCBlbmQo
Rm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBjb25zdCBJbnRSZWN0JiByZWN0KQorc3RhdGljIGlu
bGluZSBMYXlvdXRVbml0IGVuZChGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24sIGNvbnN0IExheW91
dFJlY3QmIHJlY3QpCiB7CiAgICAgcmV0dXJuIGlzSG9yaXpvbnRhbE1vdmUoZGlyZWN0aW9uKSA/
IHJlY3QubWF4WSgpIDogcmVjdC5tYXhYKCk7CiB9CkBAIC0xMzgsOSArMTM4LDkgQEAgc3RhdGlj
IGlubGluZSBpbnQgZW5kKEZvY3VzRGlyZWN0aW9uIGRpcgogLy8gb3BlcmF0aW9ucy4KIC8vICog
YSA9IEN1cnJlbnQgZm9jdXNlZCBub2RlJ3MgcmVjdC4KIC8vICogYiA9IEZvY3VzIGNhbmRpZGF0
ZSBub2RlJ3MgcmVjdC4KLXN0YXRpYyBib29sIGFyZVJlY3RzRnVsbHlBbGlnbmVkKEZvY3VzRGly
ZWN0aW9uIGRpcmVjdGlvbiwgY29uc3QgSW50UmVjdCYgYSwgY29uc3QgSW50UmVjdCYgYikKK3N0
YXRpYyBib29sIGFyZVJlY3RzRnVsbHlBbGlnbmVkKEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwg
Y29uc3QgTGF5b3V0UmVjdCYgYSwgY29uc3QgTGF5b3V0UmVjdCYgYikKIHsKLSAgICBpbnQgYVN0
YXJ0LCBiU3RhcnQsIGFFbmQsIGJFbmQ7CisgICAgTGF5b3V0VW5pdCBhU3RhcnQsIGJTdGFydCwg
YUVuZCwgYkVuZDsKIAogICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7CiAgICAgY2FzZSBGb2N1c0Rp
cmVjdGlvbkxlZnQ6CkBAIC0xNzAsOCArMTcwLDggQEAgc3RhdGljIGJvb2wgYXJlUmVjdHNGdWxs
eUFsaWduZWQoRm9jdXNEaQogICAgIGFTdGFydCA9IHN0YXJ0KGRpcmVjdGlvbiwgYSk7CiAgICAg
YlN0YXJ0ID0gc3RhcnQoZGlyZWN0aW9uLCBiKTsKIAotICAgIGludCBhTWlkZGxlID0gbWlkZGxl
KGRpcmVjdGlvbiwgYSk7Ci0gICAgaW50IGJNaWRkbGUgPSBtaWRkbGUoZGlyZWN0aW9uLCBiKTsK
KyAgICBMYXlvdXRVbml0IGFNaWRkbGUgPSBtaWRkbGUoZGlyZWN0aW9uLCBhKTsKKyAgICBMYXlv
dXRVbml0IGJNaWRkbGUgPSBtaWRkbGUoZGlyZWN0aW9uLCBiKTsKIAogICAgIGFFbmQgPSBlbmQo
ZGlyZWN0aW9uLCBhKTsKICAgICBiRW5kID0gZW5kKGRpcmVjdGlvbiwgYik7CkBAIC0yMTAsMTMg
KzIxMCwxMyBAQCBzdGF0aWMgYm9vbCBhcmVSZWN0c0Z1bGx5QWxpZ25lZChGb2N1c0RpCiAvLyBo
b3Jpem9udGFsbHkgb3IgdmVydGljYWxseS4KIC8vICogYSA9IEN1cnJlbnQgZm9jdXNlZCBub2Rl
J3MgcmVjdC4KIC8vICogYiA9IEZvY3VzIGNhbmRpZGF0ZSBub2RlJ3MgcmVjdC4KLXN0YXRpYyBi
b29sIGFyZVJlY3RzUGFydGlhbGx5QWxpZ25lZChGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24sIGNv
bnN0IEludFJlY3QmIGEsIGNvbnN0IEludFJlY3QmIGIpCitzdGF0aWMgYm9vbCBhcmVSZWN0c1Bh
cnRpYWxseUFsaWduZWQoRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBjb25zdCBMYXlvdXRSZWN0
JiBhLCBjb25zdCBMYXlvdXRSZWN0JiBiKQogewotICAgIGludCBhU3RhcnQgID0gc3RhcnQoZGly
ZWN0aW9uLCBhKTsKLSAgICBpbnQgYlN0YXJ0ICA9IHN0YXJ0KGRpcmVjdGlvbiwgYik7Ci0gICAg
aW50IGJNaWRkbGUgPSBtaWRkbGUoZGlyZWN0aW9uLCBiKTsKLSAgICBpbnQgYUVuZCA9IGVuZChk
aXJlY3Rpb24sIGEpOwotICAgIGludCBiRW5kID0gZW5kKGRpcmVjdGlvbiwgYik7CisgICAgTGF5
b3V0VW5pdCBhU3RhcnQgID0gc3RhcnQoZGlyZWN0aW9uLCBhKTsKKyAgICBMYXlvdXRVbml0IGJT
dGFydCAgPSBzdGFydChkaXJlY3Rpb24sIGIpOworICAgIExheW91dFVuaXQgYk1pZGRsZSA9IG1p
ZGRsZShkaXJlY3Rpb24sIGIpOworICAgIExheW91dFVuaXQgYUVuZCA9IGVuZChkaXJlY3Rpb24s
IGEpOworICAgIExheW91dFVuaXQgYkVuZCA9IGVuZChkaXJlY3Rpb24sIGIpOwogCiAgICAgLy8g
UGljdHVyZSBvZiB0aGUgcGFydGlhbGx5IGFsaWduZWQgbG9naWM6CiAgICAgLy8KQEAgLTIzOSw3
ICsyMzksNyBAQCBzdGF0aWMgYm9vbCBhcmVSZWN0c1BhcnRpYWxseUFsaWduZWQoRm9jCiAgICAg
ICAgICAgICB8fCAoYkVuZCA+PSBhU3RhcnQgJiYgYkVuZCA8PSBhRW5kKSk7CiB9CiAKLXN0YXRp
YyBib29sIGFyZVJlY3RzTW9yZVRoYW5GdWxsU2NyZWVuQXBhcnQoRm9jdXNEaXJlY3Rpb24gZGly
ZWN0aW9uLCBjb25zdCBJbnRSZWN0JiBjdXJSZWN0LCBjb25zdCBJbnRSZWN0JiB0YXJnZXRSZWN0
LCBjb25zdCBJbnRTaXplJiB2aWV3U2l6ZSkKK3N0YXRpYyBib29sIGFyZVJlY3RzTW9yZVRoYW5G
dWxsU2NyZWVuQXBhcnQoRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBjb25zdCBMYXlvdXRSZWN0
JiBjdXJSZWN0LCBjb25zdCBMYXlvdXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBMYXlvdXRTaXpl
JiB2aWV3U2l6ZSkKIHsKICAgICBBU1NFUlQoaXNSZWN0SW5EaXJlY3Rpb24oZGlyZWN0aW9uLCBj
dXJSZWN0LCB0YXJnZXRSZWN0KSk7CiAKQEAgLTI1OSwxOCArMjU5LDE4IEBAIHN0YXRpYyBib29s
IGFyZVJlY3RzTW9yZVRoYW5GdWxsU2NyZWVuQXAKIH0KIAogLy8gUmV0dXJuIHRydWUgaWYgcmVj
dCB8YXwgaXMgYmVsb3cgfGJ8LiBGYWxzZSBvdGhlcndpc2UuCi1zdGF0aWMgaW5saW5lIGJvb2wg
YmVsb3coY29uc3QgSW50UmVjdCYgYSwgY29uc3QgSW50UmVjdCYgYikKK3N0YXRpYyBpbmxpbmUg
Ym9vbCBiZWxvdyhjb25zdCBMYXlvdXRSZWN0JiBhLCBjb25zdCBMYXlvdXRSZWN0JiBiKQogewog
ICAgIHJldHVybiBhLnkoKSA+IGIubWF4WSgpOwogfQogCiAvLyBSZXR1cm4gdHJ1ZSBpZiByZWN0
IHxhfCBpcyBvbiB0aGUgcmlnaHQgb2YgfGJ8LiBGYWxzZSBvdGhlcndpc2UuCi1zdGF0aWMgaW5s
aW5lIGJvb2wgcmlnaHRPZihjb25zdCBJbnRSZWN0JiBhLCBjb25zdCBJbnRSZWN0JiBiKQorc3Rh
dGljIGlubGluZSBib29sIHJpZ2h0T2YoY29uc3QgTGF5b3V0UmVjdCYgYSwgY29uc3QgTGF5b3V0
UmVjdCYgYikKIHsKICAgICByZXR1cm4gYS54KCkgPiBiLm1heFgoKTsKIH0KIAotc3RhdGljIGJv
b2wgaXNSZWN0SW5EaXJlY3Rpb24oRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBjb25zdCBJbnRS
ZWN0JiBjdXJSZWN0LCBjb25zdCBJbnRSZWN0JiB0YXJnZXRSZWN0KQorc3RhdGljIGJvb2wgaXNS
ZWN0SW5EaXJlY3Rpb24oRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBjb25zdCBMYXlvdXRSZWN0
JiBjdXJSZWN0LCBjb25zdCBMYXlvdXRSZWN0JiB0YXJnZXRSZWN0KQogewogICAgIHN3aXRjaCAo
ZGlyZWN0aW9uKSB7CiAgICAgY2FzZSBGb2N1c0RpcmVjdGlvbkxlZnQ6CkBAIC0zMDEsNyArMzAx
LDcgQEAgYm9vbCBoYXNPZmZzY3JlZW5SZWN0KE5vZGUqIG5vZGUsIEZvY3VzRAogCiAgICAgQVNT
RVJUKCFmcmFtZVZpZXctPm5lZWRzTGF5b3V0KCkpOwogCi0gICAgSW50UmVjdCBjb250YWluZXJW
aWV3cG9ydFJlY3QgPSBmcmFtZVZpZXctPnZpc2libGVDb250ZW50UmVjdCgpOworICAgIExheW91
dFJlY3QgY29udGFpbmVyVmlld3BvcnRSZWN0ID0gZnJhbWVWaWV3LT52aXNpYmxlQ29udGVudFJl
Y3QoKTsKICAgICAvLyBXZSB3YW50IHRvIHNlbGVjdCBhIG5vZGUgaWYgaXQgaXMgY3VycmVudGx5
IG9mZiBzY3JlZW4sIGJ1dCB3aWxsIGJlCiAgICAgLy8gZXhwb3NlZCBhZnRlciB3ZSBzY3JvbGwu
IEFkanVzdCB0aGUgdmlld3BvcnQgdG8gcG9zdC1zY3JvbGxpbmcgcG9zaXRpb24uCiAgICAgLy8g
SWYgdGhlIGNvbnRhaW5lciBoYXMgb3ZlcmZsb3c6aGlkZGVuLCB3ZSBjYW5ub3Qgc2Nyb2xsLCBz
byB3ZSBkbyBub3QgcGFzcyBkaXJlY3Rpb24KQEAgLTMyOSw3ICszMjksNyBAQCBib29sIGhhc09m
ZnNjcmVlblJlY3QoTm9kZSogbm9kZSwgRm9jdXNECiAgICAgaWYgKCFyZW5kZXIpCiAgICAgICAg
IHJldHVybiB0cnVlOwogCi0gICAgSW50UmVjdCByZWN0KHJlbmRlci0+YWJzb2x1dGVDbGlwcGVk
T3ZlcmZsb3dSZWN0KCkpOworICAgIExheW91dFJlY3QgcmVjdChyZW5kZXItPmFic29sdXRlQ2xp
cHBlZE92ZXJmbG93UmVjdCgpKTsKICAgICBpZiAocmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogCkBAIC0zNDEsOCArMzQxLDggQEAgYm9vbCBzY3JvbGxJbkRpcmVjdGlvbihG
cmFtZSogZnJhbWUsIEZvYwogICAgIEFTU0VSVChmcmFtZSk7CiAKICAgICBpZiAoZnJhbWUgJiYg
Y2FuU2Nyb2xsSW5EaXJlY3Rpb24oZnJhbWUtPmRvY3VtZW50KCksIGRpcmVjdGlvbikpIHsKLSAg
ICAgICAgaW50IGR4ID0gMDsKLSAgICAgICAgaW50IGR5ID0gMDsKKyAgICAgICAgTGF5b3V0VW5p
dCBkeCA9IDA7CisgICAgICAgIExheW91dFVuaXQgZHkgPSAwOwogICAgICAgICBzd2l0Y2ggKGRp
cmVjdGlvbikgewogICAgICAgICBjYXNlIEZvY3VzRGlyZWN0aW9uTGVmdDoKICAgICAgICAgICAg
IGR4ID0gLSBTY3JvbGxiYXI6OnBpeGVsc1BlckxpbmVTdGVwKCk7CkBAIC0zNjEsNyArMzYxLDcg
QEAgYm9vbCBzY3JvbGxJbkRpcmVjdGlvbihGcmFtZSogZnJhbWUsIEZvYwogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKLSAgICAgICAgZnJhbWUtPnZpZXcoKS0+c2Nyb2xs
QnkoSW50U2l6ZShkeCwgZHkpKTsKKyAgICAgICAgZnJhbWUtPnZpZXcoKS0+c2Nyb2xsQnkoTGF5
b3V0U2l6ZShkeCwgZHkpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVy
biBmYWxzZTsKQEAgLTM3NywyMiArMzc3LDIyIEBAIGJvb2wgc2Nyb2xsSW5EaXJlY3Rpb24oTm9k
ZSogY29udGFpbmVyLCAKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGNhblNjcm9s
bEluRGlyZWN0aW9uKGNvbnRhaW5lciwgZGlyZWN0aW9uKSkgewotICAgICAgICBpbnQgZHggPSAw
OwotICAgICAgICBpbnQgZHkgPSAwOworICAgICAgICBMYXlvdXRVbml0IGR4ID0gMDsKKyAgICAg
ICAgTGF5b3V0VW5pdCBkeSA9IDA7CiAgICAgICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7CiAgICAg
ICAgIGNhc2UgRm9jdXNEaXJlY3Rpb25MZWZ0OgotICAgICAgICAgICAgZHggPSAtIG1pbihTY3Jv
bGxiYXI6OnBpeGVsc1BlckxpbmVTdGVwKCksIGNvbnRhaW5lci0+cmVuZGVyQm94KCktPnNjcm9s
bExlZnQoKSk7CisgICAgICAgICAgICBkeCA9IC0gbWluPExheW91dFVuaXQ+KFNjcm9sbGJhcjo6
cGl4ZWxzUGVyTGluZVN0ZXAoKSwgY29udGFpbmVyLT5yZW5kZXJCb3goKS0+c2Nyb2xsTGVmdCgp
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEZvY3VzRGlyZWN0aW9uUmlnaHQ6
CiAgICAgICAgICAgICBBU1NFUlQoY29udGFpbmVyLT5yZW5kZXJCb3goKS0+c2Nyb2xsV2lkdGgo
KSA+IChjb250YWluZXItPnJlbmRlckJveCgpLT5zY3JvbGxMZWZ0KCkgKyBjb250YWluZXItPnJl
bmRlckJveCgpLT5jbGllbnRXaWR0aCgpKSk7Ci0gICAgICAgICAgICBkeCA9IG1pbihTY3JvbGxi
YXI6OnBpeGVsc1BlckxpbmVTdGVwKCksIGNvbnRhaW5lci0+cmVuZGVyQm94KCktPnNjcm9sbFdp
ZHRoKCkgLSAoY29udGFpbmVyLT5yZW5kZXJCb3goKS0+c2Nyb2xsTGVmdCgpICsgY29udGFpbmVy
LT5yZW5kZXJCb3goKS0+Y2xpZW50V2lkdGgoKSkpOworICAgICAgICAgICAgZHggPSBtaW48TGF5
b3V0VW5pdD4oU2Nyb2xsYmFyOjpwaXhlbHNQZXJMaW5lU3RlcCgpLCBjb250YWluZXItPnJlbmRl
ckJveCgpLT5zY3JvbGxXaWR0aCgpIC0gKGNvbnRhaW5lci0+cmVuZGVyQm94KCktPnNjcm9sbExl
ZnQoKSArIGNvbnRhaW5lci0+cmVuZGVyQm94KCktPmNsaWVudFdpZHRoKCkpKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIEZvY3VzRGlyZWN0aW9uVXA6Ci0gICAgICAgICAgICBk
eSA9IC0gbWluKFNjcm9sbGJhcjo6cGl4ZWxzUGVyTGluZVN0ZXAoKSwgY29udGFpbmVyLT5yZW5k
ZXJCb3goKS0+c2Nyb2xsVG9wKCkpOworICAgICAgICAgICAgZHkgPSAtIG1pbjxMYXlvdXRVbml0
PihTY3JvbGxiYXI6OnBpeGVsc1BlckxpbmVTdGVwKCksIGNvbnRhaW5lci0+cmVuZGVyQm94KCkt
PnNjcm9sbFRvcCgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEZvY3VzRGly
ZWN0aW9uRG93bjoKICAgICAgICAgICAgIEFTU0VSVChjb250YWluZXItPnJlbmRlckJveCgpLT5z
Y3JvbGxIZWlnaHQoKSAtIChjb250YWluZXItPnJlbmRlckJveCgpLT5zY3JvbGxUb3AoKSArIGNv
bnRhaW5lci0+cmVuZGVyQm94KCktPmNsaWVudEhlaWdodCgpKSk7Ci0gICAgICAgICAgICBkeSA9
IG1pbihTY3JvbGxiYXI6OnBpeGVsc1BlckxpbmVTdGVwKCksIGNvbnRhaW5lci0+cmVuZGVyQm94
KCktPnNjcm9sbEhlaWdodCgpIC0gKGNvbnRhaW5lci0+cmVuZGVyQm94KCktPnNjcm9sbFRvcCgp
ICsgY29udGFpbmVyLT5yZW5kZXJCb3goKS0+Y2xpZW50SGVpZ2h0KCkpKTsKKyAgICAgICAgICAg
IGR5ID0gbWluPExheW91dFVuaXQ+KFNjcm9sbGJhcjo6cGl4ZWxzUGVyTGluZVN0ZXAoKSwgY29u
dGFpbmVyLT5yZW5kZXJCb3goKS0+c2Nyb2xsSGVpZ2h0KCkgLSAoY29udGFpbmVyLT5yZW5kZXJC
b3goKS0+c2Nyb2xsVG9wKCkgKyBjb250YWluZXItPnJlbmRlckJveCgpLT5jbGllbnRIZWlnaHQo
KSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTQwNiwxMiArNDA2LDEyIEBAIGJvb2wgc2Nyb2xsSW5E
aXJlY3Rpb24oTm9kZSogY29udGFpbmVyLCAKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0YXRp
YyB2b2lkIGRlZmxhdGVJZk92ZXJsYXBwZWQoSW50UmVjdCYgYSwgSW50UmVjdCYgYikKK3N0YXRp
YyB2b2lkIGRlZmxhdGVJZk92ZXJsYXBwZWQoTGF5b3V0UmVjdCYgYSwgTGF5b3V0UmVjdCYgYikK
IHsKICAgICBpZiAoIWEuaW50ZXJzZWN0cyhiKSB8fCBhLmNvbnRhaW5zKGIpIHx8IGIuY29udGFp
bnMoYSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGludCBkZWZsYXRlRmFjdG9yID0gLWZ1ZGdl
RmFjdG9yKCk7CisgICAgTGF5b3V0VW5pdCBkZWZsYXRlRmFjdG9yID0gLWZ1ZGdlRmFjdG9yKCk7
CiAKICAgICAvLyBBdm9pZCBuZWdhdGl2ZSB3aWR0aCBvciBoZWlnaHQgdmFsdWVzLgogICAgIGlm
ICgoYS53aWR0aCgpICsgMiAqIGRlZmxhdGVGYWN0b3IgPiAwKSAmJiAoYS5oZWlnaHQoKSArIDIg
KiBkZWZsYXRlRmFjdG9yID4gMCkpCkBAIC00ODMsOSArNDgzLDkgQEAgYm9vbCBjYW5TY3JvbGxJ
bkRpcmVjdGlvbihjb25zdCBGcmFtZSogZgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYg
KChkaXJlY3Rpb24gPT0gRm9jdXNEaXJlY3Rpb25VcCB8fCBkaXJlY3Rpb24gPT0gRm9jdXNEaXJl
Y3Rpb25Eb3duKSAmJiAgU2Nyb2xsYmFyQWx3YXlzT2ZmID09IHZlcnRpY2FsTW9kZSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIEludFNpemUgc2l6ZSA9IGZyYW1lLT52aWV3KCktPmNvbnRl
bnRzU2l6ZSgpOwotICAgIEludFNpemUgb2Zmc2V0ID0gZnJhbWUtPnZpZXcoKS0+c2Nyb2xsT2Zm
c2V0KCk7Ci0gICAgSW50UmVjdCByZWN0ID0gZnJhbWUtPnZpZXcoKS0+dmlzaWJsZUNvbnRlbnRS
ZWN0KHRydWUpOworICAgIExheW91dFNpemUgc2l6ZSA9IGZyYW1lLT52aWV3KCktPmNvbnRlbnRz
U2l6ZSgpOworICAgIExheW91dFNpemUgb2Zmc2V0ID0gZnJhbWUtPnZpZXcoKS0+c2Nyb2xsT2Zm
c2V0KCk7CisgICAgTGF5b3V0UmVjdCByZWN0ID0gZnJhbWUtPnZpZXcoKS0+dmlzaWJsZUNvbnRl
bnRSZWN0KHRydWUpOwogCiAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKICAgICBjYXNlIEZvY3Vz
RGlyZWN0aW9uTGVmdDoKQEAgLTUwMiw5ICs1MDIsOSBAQCBib29sIGNhblNjcm9sbEluRGlyZWN0
aW9uKGNvbnN0IEZyYW1lKiBmCiAgICAgfQogfQogCi1zdGF0aWMgSW50UmVjdCByZWN0VG9BYnNv
bHV0ZUNvb3JkaW5hdGVzKEZyYW1lKiBpbml0aWFsRnJhbWUsIGNvbnN0IEludFJlY3QmIGluaXRp
YWxSZWN0KQorc3RhdGljIExheW91dFJlY3QgcmVjdFRvQWJzb2x1dGVDb29yZGluYXRlcyhGcmFt
ZSogaW5pdGlhbEZyYW1lLCBjb25zdCBMYXlvdXRSZWN0JiBpbml0aWFsUmVjdCkKIHsKLSAgICBJ
bnRSZWN0IHJlY3QgPSBpbml0aWFsUmVjdDsKKyAgICBMYXlvdXRSZWN0IHJlY3QgPSBpbml0aWFs
UmVjdDsKICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IGluaXRpYWxGcmFtZTsgZnJhbWU7IGZyYW1l
ID0gZnJhbWUtPnRyZWUoKS0+cGFyZW50KCkpIHsKICAgICAgICAgaWYgKEVsZW1lbnQqIGVsZW1l
bnQgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4oZnJhbWUtPm93bmVyRWxlbWVudCgpKSkgewogICAg
ICAgICAgICAgZG8gewpAQCAtNTE2LDEzICs1MTYsMTMgQEAgc3RhdGljIEludFJlY3QgcmVjdFRv
QWJzb2x1dGVDb29yZGluYXRlcwogICAgIHJldHVybiByZWN0OwogfQogCi1JbnRSZWN0IG5vZGVS
ZWN0SW5BYnNvbHV0ZUNvb3JkaW5hdGVzKE5vZGUqIG5vZGUsIGJvb2wgaWdub3JlQm9yZGVyKQor
TGF5b3V0UmVjdCBub2RlUmVjdEluQWJzb2x1dGVDb29yZGluYXRlcyhOb2RlKiBub2RlLCBib29s
IGlnbm9yZUJvcmRlcikKIHsKICAgICBBU1NFUlQobm9kZSAmJiBub2RlLT5yZW5kZXJlcigpICYm
ICFub2RlLT5kb2N1bWVudCgpLT52aWV3KCktPm5lZWRzTGF5b3V0KCkpOwogCiAgICAgaWYgKG5v
ZGUtPmlzRG9jdW1lbnROb2RlKCkpCiAgICAgICAgIHJldHVybiBmcmFtZVJlY3RJbkFic29sdXRl
Q29vcmRpbmF0ZXMoc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihub2RlKS0+ZnJhbWUoKSk7Ci0gICAg
SW50UmVjdCByZWN0ID0gcmVjdFRvQWJzb2x1dGVDb29yZGluYXRlcyhub2RlLT5kb2N1bWVudCgp
LT5mcmFtZSgpLCBub2RlLT5nZXRSZWN0KCkpOworICAgIExheW91dFJlY3QgcmVjdCA9IHJlY3RU
b0Fic29sdXRlQ29vcmRpbmF0ZXMobm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSwgbm9kZS0+Z2V0
UmVjdCgpKTsKIAogICAgIC8vIEZvciBhdXRob3JzIHRoYXQgdXNlIGJvcmRlciBpbnN0ZWFkIG9m
IG91dGxpbmUgaW4gdGhlaXIgQ1NTLCB3ZSBjb21wZW5zYXRlIGJ5IGlnbm9yaW5nIHRoZSBib3Jk
ZXIgd2hlbiBjYWxjdWxhdGluZwogICAgIC8vIHRoZSByZWN0IG9mIHRoZSBmb2N1c2VkIGVsZW1l
bnQuCkBAIC01MzQsMTQgKzUzNCwxNCBAQCBJbnRSZWN0IG5vZGVSZWN0SW5BYnNvbHV0ZUNvb3Jk
aW5hdGVzKE5vCiAgICAgcmV0dXJuIHJlY3Q7CiB9CiAKLUludFJlY3QgZnJhbWVSZWN0SW5BYnNv
bHV0ZUNvb3JkaW5hdGVzKEZyYW1lKiBmcmFtZSkKK0xheW91dFJlY3QgZnJhbWVSZWN0SW5BYnNv
bHV0ZUNvb3JkaW5hdGVzKEZyYW1lKiBmcmFtZSkKIHsKICAgICByZXR1cm4gcmVjdFRvQWJzb2x1
dGVDb29yZGluYXRlcyhmcmFtZSwgZnJhbWUtPnZpZXcoKS0+dmlzaWJsZUNvbnRlbnRSZWN0KCkp
OwogfQogCiAvLyBUaGlzIG1ldGhvZCBjYWxjdWxhdGVzIHRoZSBleGl0UG9pbnQgZnJvbSB0aGUg
c3RhcnRpbmdSZWN0IGFuZCB0aGUgZW50cnlQb2ludCBpbnRvIHRoZSBjYW5kaWRhdGUgcmVjdC4K
IC8vIFRoZSBsaW5lIGJldHdlZW4gdGhvc2UgMiBwb2ludHMgaXMgdGhlIGNsb3Nlc3QgZGlzdGFu
Y2UgYmV0d2VlbiB0aGUgMiByZWN0cy4KLXZvaWQgZW50cnlBbmRFeGl0UG9pbnRzRm9yRGlyZWN0
aW9uKEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwgY29uc3QgSW50UmVjdCYgc3RhcnRpbmdSZWN0
LCBjb25zdCBJbnRSZWN0JiBwb3RlbnRpYWxSZWN0LCBJbnRQb2ludCYgZXhpdFBvaW50LCBJbnRQ
b2ludCYgZW50cnlQb2ludCkKK3ZvaWQgZW50cnlBbmRFeGl0UG9pbnRzRm9yRGlyZWN0aW9uKEZv
Y3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwgY29uc3QgTGF5b3V0UmVjdCYgc3RhcnRpbmdSZWN0LCBj
b25zdCBMYXlvdXRSZWN0JiBwb3RlbnRpYWxSZWN0LCBMYXlvdXRQb2ludCYgZXhpdFBvaW50LCBM
YXlvdXRQb2ludCYgZW50cnlQb2ludCkKIHsKICAgICBzd2l0Y2ggKGRpcmVjdGlvbikgewogICAg
IGNhc2UgRm9jdXNEaXJlY3Rpb25MZWZ0OgpAQCAtNjI5LDE3ICs2MjksMTcgQEAgdm9pZCBkaXN0
YW5jZURhdGFGb3JOb2RlKEZvY3VzRGlyZWN0aW9uIAogICAgICAgICB9CiAgICAgfQogCi0gICAg
SW50UmVjdCBub2RlUmVjdCA9IGNhbmRpZGF0ZS5yZWN0OwotICAgIEludFJlY3QgY3VycmVudFJl
Y3QgPSBjdXJyZW50LnJlY3Q7CisgICAgTGF5b3V0UmVjdCBub2RlUmVjdCA9IGNhbmRpZGF0ZS5y
ZWN0OworICAgIExheW91dFJlY3QgY3VycmVudFJlY3QgPSBjdXJyZW50LnJlY3Q7CiAgICAgZGVm
bGF0ZUlmT3ZlcmxhcHBlZChjdXJyZW50UmVjdCwgbm9kZVJlY3QpOwogCiAgICAgaWYgKCFpc1Jl
Y3RJbkRpcmVjdGlvbihkaXJlY3Rpb24sIGN1cnJlbnRSZWN0LCBub2RlUmVjdCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIEludFBvaW50IGV4aXRQb2ludDsKLSAgICBJbnRQb2ludCBlbnRyeVBv
aW50OwotICAgIGludCBzYW1lQXhpc0Rpc3RhbmNlID0gMDsKLSAgICBpbnQgb3RoZXJBeGlzRGlz
dGFuY2UgPSAwOworICAgIExheW91dFBvaW50IGV4aXRQb2ludDsKKyAgICBMYXlvdXRQb2ludCBl
bnRyeVBvaW50OworICAgIExheW91dFVuaXQgc2FtZUF4aXNEaXN0YW5jZSA9IDA7CisgICAgTGF5
b3V0VW5pdCBvdGhlckF4aXNEaXN0YW5jZSA9IDA7CiAgICAgZW50cnlBbmRFeGl0UG9pbnRzRm9y
RGlyZWN0aW9uKGRpcmVjdGlvbiwgY3VycmVudFJlY3QsIG5vZGVSZWN0LCBleGl0UG9pbnQsIGVu
dHJ5UG9pbnQpOwogCiAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKQEAgLTY2NCw4ICs2NjQsOCBA
QCB2b2lkIGRpc3RhbmNlRGF0YUZvck5vZGUoRm9jdXNEaXJlY3Rpb24gCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBpbnQgeCA9IChlbnRyeVBvaW50LngoKSAtIGV4aXRQb2ludC54KCkp
ICogKGVudHJ5UG9pbnQueCgpIC0gZXhpdFBvaW50LngoKSk7Ci0gICAgaW50IHkgPSAoZW50cnlQ
b2ludC55KCkgLSBleGl0UG9pbnQueSgpKSAqIChlbnRyeVBvaW50LnkoKSAtIGV4aXRQb2ludC55
KCkpOworICAgIExheW91dFVuaXQgeCA9IChlbnRyeVBvaW50LngoKSAtIGV4aXRQb2ludC54KCkp
ICogKGVudHJ5UG9pbnQueCgpIC0gZXhpdFBvaW50LngoKSk7CisgICAgTGF5b3V0VW5pdCB5ID0g
KGVudHJ5UG9pbnQueSgpIC0gZXhpdFBvaW50LnkoKSkgKiAoZW50cnlQb2ludC55KCkgLSBleGl0
UG9pbnQueSgpKTsKIAogICAgIGZsb2F0IGV1Y2xpZGlhbkRpc3RhbmNlID0gc3FydCgoeCArIHkp
ICogMS4wZik7CiAKQEAgLTY3NCwxNiArNjc0LDE2IEBAIHZvaWQgZGlzdGFuY2VEYXRhRm9yTm9k
ZShGb2N1c0RpcmVjdGlvbiAKIAogICAgIGZsb2F0IGRpc3RhbmNlID0gZXVjbGlkaWFuRGlzdGFu
Y2UgKyBzYW1lQXhpc0Rpc3RhbmNlICsgMiAqIG90aGVyQXhpc0Rpc3RhbmNlOwogICAgIGNhbmRp
ZGF0ZS5kaXN0YW5jZSA9IHJvdW5kZihkaXN0YW5jZSk7Ci0gICAgSW50U2l6ZSB2aWV3U2l6ZSA9
IGNhbmRpZGF0ZS52aXNpYmxlTm9kZS0+ZG9jdW1lbnQoKS0+cGFnZSgpLT5tYWluRnJhbWUoKS0+
dmlldygpLT52aXNpYmxlQ29udGVudFJlY3QoKS5zaXplKCk7CisgICAgTGF5b3V0U2l6ZSB2aWV3
U2l6ZSA9IGNhbmRpZGF0ZS52aXNpYmxlTm9kZS0+ZG9jdW1lbnQoKS0+cGFnZSgpLT5tYWluRnJh
bWUoKS0+dmlldygpLT52aXNpYmxlQ29udGVudFJlY3QoKS5zaXplKCk7CiAgICAgY2FuZGlkYXRl
LmFsaWdubWVudCA9IGFsaWdubWVudEZvclJlY3RzKGRpcmVjdGlvbiwgY3VycmVudFJlY3QsIG5v
ZGVSZWN0LCB2aWV3U2l6ZSk7CiB9CiAKIGJvb2wgY2FuQmVTY3JvbGxlZEludG9WaWV3KEZvY3Vz
RGlyZWN0aW9uIGRpcmVjdGlvbiwgY29uc3QgRm9jdXNDYW5kaWRhdGUmIGNhbmRpZGF0ZSkKIHsK
ICAgICBBU1NFUlQoY2FuZGlkYXRlLnZpc2libGVOb2RlICYmIGNhbmRpZGF0ZS5pc09mZnNjcmVl
bik7Ci0gICAgSW50UmVjdCBjYW5kaWRhdGVSZWN0ID0gY2FuZGlkYXRlLnJlY3Q7CisgICAgTGF5
b3V0UmVjdCBjYW5kaWRhdGVSZWN0ID0gY2FuZGlkYXRlLnJlY3Q7CiAgICAgZm9yIChOb2RlKiBw
YXJlbnROb2RlID0gY2FuZGlkYXRlLnZpc2libGVOb2RlLT5wYXJlbnROb2RlKCk7IHBhcmVudE5v
ZGU7IHBhcmVudE5vZGUgPSBwYXJlbnROb2RlLT5wYXJlbnROb2RlKCkpIHsKLSAgICAgICAgSW50
UmVjdCBwYXJlbnRSZWN0ID0gbm9kZVJlY3RJbkFic29sdXRlQ29vcmRpbmF0ZXMocGFyZW50Tm9k
ZSk7CisgICAgICAgIExheW91dFJlY3QgcGFyZW50UmVjdCA9IG5vZGVSZWN0SW5BYnNvbHV0ZUNv
b3JkaW5hdGVzKHBhcmVudE5vZGUpOwogICAgICAgICBpZiAoIWNhbmRpZGF0ZVJlY3QuaW50ZXJz
ZWN0cyhwYXJlbnRSZWN0KSkgewogICAgICAgICAgICAgaWYgKCgoZGlyZWN0aW9uID09IEZvY3Vz
RGlyZWN0aW9uTGVmdCB8fCBkaXJlY3Rpb24gPT0gRm9jdXNEaXJlY3Rpb25SaWdodCkgJiYgcGFy
ZW50Tm9kZS0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+b3ZlcmZsb3dYKCkgPT0gT0hJRERFTikKICAg
ICAgICAgICAgICAgICB8fCAoKGRpcmVjdGlvbiA9PSBGb2N1c0RpcmVjdGlvblVwIHx8IGRpcmVj
dGlvbiA9PSBGb2N1c0RpcmVjdGlvbkRvd24pICYmIHBhcmVudE5vZGUtPnJlbmRlcmVyKCktPnN0
eWxlKCktPm92ZXJmbG93WSgpID09IE9ISURERU4pKQpAQCAtNjk5LDkgKzY5OSw5IEBAIGJvb2wg
Y2FuQmVTY3JvbGxlZEludG9WaWV3KEZvY3VzRGlyZWN0aW8KIC8vIENvbXBvc2UgYSB2aXJ0dWFs
IHN0YXJ0aW5nIHJlY3QgaWYgdGhlcmUgaXMgbm8gZm9jdXNlZCBub2RlIG9yIGlmIGl0IGlzIG9m
ZiBzY3JlZW4uCiAvLyBUaGUgdmlydHVhbCByZWN0IGlzIHRoZSBlZGdlIG9mIHRoZSBjb250YWlu
ZXIgb3IgZnJhbWUuIFdlIHNlbGVjdCB3aGljaAogLy8gZWRnZSBkZXBlbmRpbmcgb24gdGhlIGRp
cmVjdGlvbiBvZiB0aGUgbmF2aWdhdGlvbi4KLUludFJlY3QgdmlydHVhbFJlY3RGb3JEaXJlY3Rp
b24oRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBjb25zdCBJbnRSZWN0JiBzdGFydGluZ1JlY3Qs
IGludCB3aWR0aCkKK0xheW91dFJlY3QgdmlydHVhbFJlY3RGb3JEaXJlY3Rpb24oRm9jdXNEaXJl
Y3Rpb24gZGlyZWN0aW9uLCBjb25zdCBMYXlvdXRSZWN0JiBzdGFydGluZ1JlY3QsIExheW91dFVu
aXQgd2lkdGgpCiB7Ci0gICAgSW50UmVjdCB2aXJ0dWFsU3RhcnRpbmdSZWN0ID0gc3RhcnRpbmdS
ZWN0OworICAgIExheW91dFJlY3QgdmlydHVhbFN0YXJ0aW5nUmVjdCA9IHN0YXJ0aW5nUmVjdDsK
ICAgICBzd2l0Y2ggKGRpcmVjdGlvbikgewogICAgIGNhc2UgRm9jdXNEaXJlY3Rpb25MZWZ0Ogog
ICAgICAgICB2aXJ0dWFsU3RhcnRpbmdSZWN0LnNldFgodmlydHVhbFN0YXJ0aW5nUmVjdC5tYXhY
KCkgLSB3aWR0aCk7CkBAIC03MjQsMTMgKzcyNCwxMyBAQCBJbnRSZWN0IHZpcnR1YWxSZWN0Rm9y
RGlyZWN0aW9uKEZvY3VzRGlyCiAgICAgcmV0dXJuIHZpcnR1YWxTdGFydGluZ1JlY3Q7CiB9CiAK
LUludFJlY3QgdmlydHVhbFJlY3RGb3JBcmVhRWxlbWVudEFuZERpcmVjdGlvbihIVE1MQXJlYUVs
ZW1lbnQqIGFyZWEsIEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbikKK0xheW91dFJlY3QgdmlydHVh
bFJlY3RGb3JBcmVhRWxlbWVudEFuZERpcmVjdGlvbihIVE1MQXJlYUVsZW1lbnQqIGFyZWEsIEZv
Y3VzRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKICAgICBBU1NFUlQoYXJlYSk7CiAgICAgQVNTRVJU
KGFyZWEtPmltYWdlRWxlbWVudCgpKTsKICAgICAvLyBBcmVhIGVsZW1lbnRzIHRlbmQgdG8gb3Zl
cmxhcCBtb3JlIHRoYW4gb3RoZXIgZm9jdXNhYmxlIGVsZW1lbnRzLiBXZSBmbGF0dGVuIHRoZSBy
ZWN0IG9mIHRoZSBhcmVhIGVsZW1lbnRzCiAgICAgLy8gdG8gbWluaW1pemUgdGhlIGVmZmVjdCBv
ZiBvdmVybGFwcGluZyBhcmVhcy4KLSAgICBJbnRSZWN0IHJlY3QgPSB2aXJ0dWFsUmVjdEZvckRp
cmVjdGlvbihkaXJlY3Rpb24sIHJlY3RUb0Fic29sdXRlQ29vcmRpbmF0ZXMoYXJlYS0+ZG9jdW1l
bnQoKS0+ZnJhbWUoKSwgYXJlYS0+Y29tcHV0ZVJlY3QoYXJlYS0+aW1hZ2VFbGVtZW50KCktPnJl
bmRlcmVyKCkpKSwgMSk7CisgICAgTGF5b3V0UmVjdCByZWN0ID0gdmlydHVhbFJlY3RGb3JEaXJl
Y3Rpb24oZGlyZWN0aW9uLCByZWN0VG9BYnNvbHV0ZUNvb3JkaW5hdGVzKGFyZWEtPmRvY3VtZW50
KCktPmZyYW1lKCksIGFyZWEtPmNvbXB1dGVSZWN0KGFyZWEtPmltYWdlRWxlbWVudCgpLT5yZW5k
ZXJlcigpKSksIDEpOwogICAgIHJldHVybiByZWN0OwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5oCShyZXZpc2lvbiA5MzE0OSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMs
NyBAQAogCiAjaW5jbHVkZSAiRm9jdXNEaXJlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MRnJhbWVP
d25lckVsZW1lbnQuaCIKLSNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSAiTGF5b3V0VHlw
ZXMuaCIKICNpbmNsdWRlICJOb2RlLmgiCiAKICNpbmNsdWRlIDxsaW1pdHM+CkBAIC0xMzAsNyAr
MTMwLDcgQEAgc3RydWN0IEZvY3VzQ2FuZGlkYXRlIHsKICAgICBsb25nIGxvbmcgcGFyZW50RGlz
dGFuY2U7CiAgICAgUmVjdHNBbGlnbm1lbnQgYWxpZ25tZW50OwogICAgIFJlY3RzQWxpZ25tZW50
IHBhcmVudEFsaWdubWVudDsKLSAgICBJbnRSZWN0IHJlY3Q7CisgICAgTGF5b3V0UmVjdCByZWN0
OwogICAgIGJvb2wgaXNPZmZzY3JlZW47CiAgICAgYm9vbCBpc09mZnNjcmVlbkFmdGVyU2Nyb2xs
aW5nOwogfTsKQEAgLTE0NCwxMCArMTQ0LDEwIEBAIGJvb2wgY2FuQmVTY3JvbGxlZEludG9WaWV3
KEZvY3VzRGlyZWN0aW8KIGJvb2wgYXJlRWxlbWVudHNPblNhbWVMaW5lKGNvbnN0IEZvY3VzQ2Fu
ZGlkYXRlJiBmaXJzdENhbmRpZGF0ZSwgY29uc3QgRm9jdXNDYW5kaWRhdGUmIHNlY29uZENhbmRp
ZGF0ZSk7CiB2b2lkIGRpc3RhbmNlRGF0YUZvck5vZGUoRm9jdXNEaXJlY3Rpb24sIGNvbnN0IEZv
Y3VzQ2FuZGlkYXRlJiBjdXJyZW50LCBGb2N1c0NhbmRpZGF0ZSYgY2FuZGlkYXRlKTsKIE5vZGUq
IHNjcm9sbGFibGVFbmNsb3NpbmdCb3hPclBhcmVudEZyYW1lRm9yTm9kZUluRGlyZWN0aW9uKEZv
Y3VzRGlyZWN0aW9uLCBOb2RlKik7Ci1JbnRSZWN0IG5vZGVSZWN0SW5BYnNvbHV0ZUNvb3JkaW5h
dGVzKE5vZGUqLCBib29sIGlnbm9yZUJvcmRlciA9IGZhbHNlKTsKLUludFJlY3QgZnJhbWVSZWN0
SW5BYnNvbHV0ZUNvb3JkaW5hdGVzKEZyYW1lKik7Ci1JbnRSZWN0IHZpcnR1YWxSZWN0Rm9yRGly
ZWN0aW9uKEZvY3VzRGlyZWN0aW9uLCBjb25zdCBJbnRSZWN0JiBzdGFydGluZ1JlY3QsIGludCB3
aWR0aCA9IDApOwotSW50UmVjdCB2aXJ0dWFsUmVjdEZvckFyZWFFbGVtZW50QW5kRGlyZWN0aW9u
KEhUTUxBcmVhRWxlbWVudCosIEZvY3VzRGlyZWN0aW9uKTsKK0xheW91dFJlY3Qgbm9kZVJlY3RJ
bkFic29sdXRlQ29vcmRpbmF0ZXMoTm9kZSosIGJvb2wgaWdub3JlQm9yZGVyID0gZmFsc2UpOwor
TGF5b3V0UmVjdCBmcmFtZVJlY3RJbkFic29sdXRlQ29vcmRpbmF0ZXMoRnJhbWUqKTsKK0xheW91
dFJlY3QgdmlydHVhbFJlY3RGb3JEaXJlY3Rpb24oRm9jdXNEaXJlY3Rpb24sIGNvbnN0IExheW91
dFJlY3QmIHN0YXJ0aW5nUmVjdCwgTGF5b3V0VW5pdCB3aWR0aCA9IDApOworTGF5b3V0UmVjdCB2
aXJ0dWFsUmVjdEZvckFyZWFFbGVtZW50QW5kRGlyZWN0aW9uKEhUTUxBcmVhRWxlbWVudCosIEZv
Y3VzRGlyZWN0aW9uKTsKIEhUTUxGcmFtZU93bmVyRWxlbWVudCogZnJhbWVPd25lckVsZW1lbnQo
Rm9jdXNDYW5kaWRhdGUmKTsKIAogfSAvLyBuYW1zcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>