<?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>144876</bug_id>
          
          <creation_ts>2015-05-11 11:15:24 -0700</creation_ts>
          <short_desc>Move TransformOperation-based classes off of PassRefPtr</short_desc>
          <delta_ts>2015-05-12 02:54:59 -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>New Bugs</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>144797</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1093817</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2015-05-11 11:15:24 -0700</bug_when>
    <thetext>Move TransformOperation-based classes off of PassRefPtr</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093822</commentid>
    <comment_count>1</comment_count>
      <attachid>252871</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2015-05-11 11:21:16 -0700</bug_when>
    <thetext>Created attachment 252871
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093958</commentid>
    <comment_count>2</comment_count>
      <attachid>252871</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-05-11 17:20:40 -0700</bug_when>
    <thetext>Comment on attachment 252871
Patch

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

&gt; Source/WebCore/platform/graphics/transforms/TransformOperation.h:30
&gt; +#include &lt;wtf/Ref.h&gt;

I think Forward.h would have sufficed here. I don’t think we need to include Ref.h just to declare functions with Ref&lt;X&gt; as a return type.

&gt; Source/WebCore/platform/graphics/transforms/TransformOperations.cpp:85
&gt; +        RefPtr&lt;TransformOperation&gt; blendedOperation = toOperation ? toOperation-&gt;blend(fromOperation.get(), progress) : (fromOperation ? RefPtr&lt;TransformOperation&gt;(fromOperation-&gt;blend(nullptr, progress, true)) : nullptr);

A real shame that we have to cast to RefPtr here. At some point we should probably add something that turns a Ref into a RefPtr without having to repeat the name of the type involved.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1094108</commentid>
    <comment_count>3</comment_count>
      <attachid>252871</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2015-05-12 00:58:53 -0700</bug_when>
    <thetext>Comment on attachment 252871
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/transforms/TransformOperation.h:30
&gt;&gt; +#include &lt;wtf/Ref.h&gt;
&gt; 
&gt; I think Forward.h would have sufficed here. I don’t think we need to include Ref.h just to declare functions with Ref&lt;X&gt; as a return type.

That entails including Ref.h in all the header files declaring the deriving interfaces, but I&apos;m OK with that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1094111</commentid>
    <comment_count>4</comment_count>
      <attachid>252949</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2015-05-12 01:05:56 -0700</bug_when>
    <thetext>Created attachment 252949
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1094117</commentid>
    <comment_count>5</comment_count>
      <attachid>252949</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2015-05-12 02:54:52 -0700</bug_when>
    <thetext>Comment on attachment 252949
Patch for landing

Clearing flags on attachment: 252949

Committed r184193: &lt;http://trac.webkit.org/changeset/184193&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1094118</commentid>
    <comment_count>6</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2015-05-12 02:54:59 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252871</attachid>
            <date>2015-05-11 11:21:16 -0700</date>
            <delta_ts>2015-05-12 01:05:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-144876-20150511201954.patch</filename>
            <type>text/plain</type>
            <size>27260</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg0MDcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2Y3MzgzNmJiNjEzMjBl
ZDcxMzIwMzIyMTQ4ZTA3ZTQ2NDlmYjU1NS4uMGEzMGRmZTdmN2ViNTk4ZDI3NTNiNzFjZDMwMGEz
YjZkMzMwYzY5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQxIEBACiAyMDE1LTA1LTExICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAorICAgICAgICBNb3ZlIFRyYW5zZm9y
bU9wZXJhdGlvbi1iYXNlZCBjbGFzc2VzIG9mZiBvZiBQYXNzUmVmUHRyCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQ4NzYKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgdXNlcyBvZiBQYXNzUmVm
UHRyIGZyb20gdGhlIFRyYW5zZm9ybU9wZXJhdGlvbiBjbGFzcyBhbmQgaXRzCisgICAgICAgIGRl
cml2YXRpdmVzLCBvcGVyYXRpbmcgb24gUmVmIGFuZCBSZWZQdHIgb2JqZWN0cyBpbnN0ZWFkLgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9JZGVudGl0eVRyYW5zZm9y
bU9wZXJhdGlvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvTWF0
cml4M0RUcmFuc2Zvcm1PcGVyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWF0cml4M0RU
cmFuc2Zvcm1PcGVyYXRpb246OmJsZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90
cmFuc2Zvcm1zL01hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9uLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9NYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uOjpibGVuZCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9NYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb24u
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1BlcnNwZWN0aXZlVHJh
bnNmb3JtT3BlcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBlcnNwZWN0aXZlVHJhbnNm
b3JtT3BlcmF0aW9uOjpibGVuZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNm
b3Jtcy9QZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbi5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3RyYW5zZm9ybXMvUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjo6YmxlbmQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9uLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9TY2FsZVRyYW5zZm9ybU9w
ZXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbjo6
YmxlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvU2NhbGVUcmFu
c2Zvcm1PcGVyYXRpb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1z
L1NrZXdUcmFuc2Zvcm1PcGVyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2tld1RyYW5z
Zm9ybU9wZXJhdGlvbjo6YmxlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5z
Zm9ybXMvU2tld1RyYW5zZm9ybU9wZXJhdGlvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9uLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1PcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRyYW5zZm9ybU9wZXJhdGlvbnM6OmJsZW5kQnlNYXRjaGluZ09wZXJhdGlvbnMpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNsYXRlVHJhbnNmb3Jt
T3BlcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJh
dGlvbjo6YmxlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJh
bnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uLmg6CisKKzIwMTUtMDUtMTEgIFphbiBEb2JlcnNlayAg
PHpkb2JlcnNla0BpZ2FsaWEuY29tPgorCiAgICAgICAgIFJlZHVjZSBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBjb3BpZXMgaW4gV2ViS2l0Q1NTTWF0cml4IG9wZXJhdGlvbnMKICAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NDc5NQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL0lkZW50aXR5VHJhbnNm
b3JtT3BlcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zv
cm1zL0lkZW50aXR5VHJhbnNmb3JtT3BlcmF0aW9uLmgKaW5kZXggOGE0ZjA0NjQzZGZkZThhZWVl
NTk2NDZkMzM0Nzk1ZTUxODMyMmNkOS4uYzJjNmExODcyNTAwZTlmNDNjYmI5ZjM5ZDdiMTc2NTVm
MGQzYjM4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJh
bnNmb3Jtcy9JZGVudGl0eVRyYW5zZm9ybU9wZXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvSWRlbnRpdHlUcmFuc2Zvcm1PcGVyYXRpb24u
aApAQCAtMzEsMTIgKzMxLDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSWRlbnRp
dHlUcmFuc2Zvcm1PcGVyYXRpb24gZmluYWwgOiBwdWJsaWMgVHJhbnNmb3JtT3BlcmF0aW9uIHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJZGVudGl0eVRyYW5zZm9ybU9wZXJhdGlv
bj4gY3JlYXRlKCkKKyAgICBzdGF0aWMgUmVmPElkZW50aXR5VHJhbnNmb3JtT3BlcmF0aW9uPiBj
cmVhdGUoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJZGVudGl0eVRyYW5z
Zm9ybU9wZXJhdGlvbigpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSWRlbnRpdHlU
cmFuc2Zvcm1PcGVyYXRpb24oKSk7CiAgICAgfQogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFRy
YW5zZm9ybU9wZXJhdGlvbj4gY2xvbmUoKSBjb25zdCBvdmVycmlkZQorICAgIHZpcnR1YWwgUmVm
PFRyYW5zZm9ybU9wZXJhdGlvbj4gY2xvbmUoKSBjb25zdCBvdmVycmlkZQogICAgIHsKICAgICAg
ICAgcmV0dXJuIGNyZWF0ZSgpOwogICAgIH0KQEAgLTU2LDkgKzU2LDkgQEAgcHJpdmF0ZToKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUcmFu
c2Zvcm1PcGVyYXRpb24+IGJsZW5kKGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiosIGRvdWJsZSwg
Ym9vbCA9IGZhbHNlKSBvdmVycmlkZQorICAgIHZpcnR1YWwgUmVmPFRyYW5zZm9ybU9wZXJhdGlv
bj4gYmxlbmQoY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9uKiwgZG91YmxlLCBib29sID0gZmFsc2Up
IG92ZXJyaWRlCiAgICAgewotICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgcmV0dXJuICp0
aGlzOwogICAgIH0KIAogICAgIElkZW50aXR5VHJhbnNmb3JtT3BlcmF0aW9uKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvTWF0cml4M0RU
cmFuc2Zvcm1PcGVyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dHJhbnNmb3Jtcy9NYXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlvbi5jcHAKaW5kZXggYmQyMzk2YzI3
ZTFjMjlkMGJmMWJlZjMwM2NiNTU2ODU4NTkyMWJkNy4uMDQ2ZDU0MjlhMjJiNDAxYjYwMmE5NTYy
YzQzYzJiYWU5MWNlYWRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdHJhbnNmb3Jtcy9NYXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9NYXRyaXgzRFRyYW5zZm9y
bU9wZXJhdGlvbi5jcHAKQEAgLTM1LDEwICszNSwxMCBAQCBib29sIE1hdHJpeDNEVHJhbnNmb3Jt
T3BlcmF0aW9uOjpvcGVyYXRvcj09KGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiYgb3RoZXIpIGNv
bgogICAgIHJldHVybiBpc1NhbWVUeXBlKG90aGVyKSAmJiBtX21hdHJpeCA9PSBkb3duY2FzdDxN
YXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlvbj4ob3RoZXIpLm1fbWF0cml4OwogfQogCi1QYXNzUmVm
UHRyPFRyYW5zZm9ybU9wZXJhdGlvbj4gTWF0cml4M0RUcmFuc2Zvcm1PcGVyYXRpb246OmJsZW5k
KGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJs
ZW5kVG9JZGVudGl0eSkKK1JlZjxUcmFuc2Zvcm1PcGVyYXRpb24+IE1hdHJpeDNEVHJhbnNmb3Jt
T3BlcmF0aW9uOjpibGVuZChjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24qIGZyb20sIGRvdWJsZSBw
cm9ncmVzcywgYm9vbCBibGVuZFRvSWRlbnRpdHkpCiB7CiAgICAgaWYgKGZyb20gJiYgIWZyb20t
PmlzU2FtZVR5cGUoKnRoaXMpKQotICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgcmV0dXJu
ICp0aGlzOwogCiAgICAgLy8gQ29udmVydCB0aGUgVHJhbnNmb3JtT3BlcmF0aW9ucyBpbnRvIG1h
dHJpY2VzCiAgICAgRmxvYXRTaXplIHNpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL01hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL01hdHJpeDNEVHJh
bnNmb3JtT3BlcmF0aW9uLmgKaW5kZXggNWVmNmJlNTU2MzNiYTU4MWRjNjZkOGQyMWU4MjJiMzE0
ZmY3YWE1Zi4uNTNjYjRiNzEyYmIyOGVjNGEwOWM4NWMxOTg1OTdlYzA4ZGY2ZmM1MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9NYXRyaXgz
RFRyYW5zZm9ybU9wZXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RyYW5zZm9ybXMvTWF0cml4M0RUcmFuc2Zvcm1PcGVyYXRpb24uaApAQCAtMzIsMTQgKzMy
LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWF0cml4M0RUcmFuc2Zvcm1PcGVy
YXRpb24gZmluYWwgOiBwdWJsaWMgVHJhbnNmb3JtT3BlcmF0aW9uIHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxNYXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlvbj4gY3JlYXRlKGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgpCisgICAgc3RhdGljIFJlZjxNYXRyaXgzRFRy
YW5zZm9ybU9wZXJhdGlvbj4gY3JlYXRlKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRy
aXgpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1hdHJpeDNEVHJhbnNmb3Jt
T3BlcmF0aW9uKG1hdHJpeCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNYXRyaXgz
RFRyYW5zZm9ybU9wZXJhdGlvbihtYXRyaXgpKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8VHJhbnNmb3JtT3BlcmF0aW9uPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlCisgICAgdmly
dHVhbCBSZWY8VHJhbnNmb3JtT3BlcmF0aW9uPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlCiAgICAg
ewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9u
KG1fbWF0cml4KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1hdHJpeDNEVHJhbnNm
b3JtT3BlcmF0aW9uKG1fbWF0cml4KSk7CiAgICAgfQogCiAgICAgVHJhbnNmb3JtYXRpb25NYXRy
aXggbWF0cml4KCkgY29uc3Qge3JldHVybiBtX21hdHJpeDsgfQpAQCAtNTksNyArNTksNyBAQCBw
cml2YXRlOgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgdmlydHVhbCBQYXNz
UmVmUHRyPFRyYW5zZm9ybU9wZXJhdGlvbj4gYmxlbmQoY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9u
KiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb0lkZW50aXR5ID0gZmFsc2UpIG92
ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmPFRyYW5zZm9ybU9wZXJhdGlvbj4gYmxlbmQoY29uc3Qg
VHJhbnNmb3JtT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb0lk
ZW50aXR5ID0gZmFsc2UpIG92ZXJyaWRlOwogICAgIAogICAgIE1hdHJpeDNEVHJhbnNmb3JtT3Bl
cmF0aW9uKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXQpCiAgICAgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9NYXRyaXhUcmFu
c2Zvcm1PcGVyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJh
bnNmb3Jtcy9NYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb24uY3BwCmluZGV4IDQ4YTdiNTkxY2RkNTVl
MDI0MTExZmEwZWYyN2MyNTI1YmM3YTc1NzIuLjg1ZWM2Y2U1N2I5ZGQ4ZjM2Y2QzOWQyMjAyNGJi
NWVlZmVjNzlmMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RyYW5zZm9ybXMvTWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL01hdHJpeFRyYW5zZm9ybU9wZXJhdGlv
bi5jcHAKQEAgLTM0LDEwICszNCwxMCBAQCBib29sIE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbjo6
b3BlcmF0b3I9PShjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24mIG90aGVyKSBjb25zdAogICAgIHJl
dHVybiBtX2EgPT0gbS5tX2EgJiYgbV9iID09IG0ubV9iICYmIG1fYyA9PSBtLm1fYyAmJiBtX2Qg
PT0gbS5tX2QgJiYgbV9lID09IG0ubV9lICYmIG1fZiA9PSBtLm1fZjsKIH0KIAotUGFzc1JlZlB0
cjxUcmFuc2Zvcm1PcGVyYXRpb24+IE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbjo6YmxlbmQoY29u
c3QgVHJhbnNmb3JtT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRU
b0lkZW50aXR5KQorUmVmPFRyYW5zZm9ybU9wZXJhdGlvbj4gTWF0cml4VHJhbnNmb3JtT3BlcmF0
aW9uOjpibGVuZChjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9ncmVz
cywgYm9vbCBibGVuZFRvSWRlbnRpdHkpCiB7CiAgICAgaWYgKGZyb20gJiYgIWZyb20tPmlzU2Ft
ZVR5cGUoKnRoaXMpKQotICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgcmV0dXJuICp0aGlz
OwogCiAgICAgLy8gY29udmVydCB0aGUgVHJhbnNmb3JtT3BlcmF0aW9ucyBpbnRvIG1hdHJpY2Vz
CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggZnJvbVQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL01hdHJpeFRyYW5zZm9ybU9wZXJhdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9NYXRyaXhU
cmFuc2Zvcm1PcGVyYXRpb24uaAppbmRleCA4Nzk1N2Y0YzI0NTJmNTZhMmQxMDE4OTllNTExNmIx
NGUxMjc0OWJlLi5iYmQ0Njc5MzEyYjgxY2E2YWNhZWZhZjRhYjA3NzgxZGZiYjgwNjM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL01hdHJp
eFRyYW5zZm9ybU9wZXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RyYW5zZm9ybXMvTWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uLmgKQEAgLTMyLDE5ICszMiwx
OSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlv
biBmaW5hbCA6IHB1YmxpYyBUcmFuc2Zvcm1PcGVyYXRpb24gewogcHVibGljOgotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbj4gY3JlYXRlKGRvdWJsZSBhLCBk
b3VibGUgYiwgZG91YmxlIGMsIGRvdWJsZSBkLCBkb3VibGUgZSwgZG91YmxlIGYpCisgICAgc3Rh
dGljIFJlZjxNYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb24+IGNyZWF0ZShkb3VibGUgYSwgZG91Ymxl
IGIsIGRvdWJsZSBjLCBkb3VibGUgZCwgZG91YmxlIGUsIGRvdWJsZSBmKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb24oYSwgYiwgYywg
ZCwgZSwgZikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNYXRyaXhUcmFuc2Zvcm1P
cGVyYXRpb24oYSwgYiwgYywgZCwgZSwgZikpOwogICAgIH0KIAotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbj4gY3JlYXRlKGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiB0KQorICAgIHN0YXRpYyBSZWY8TWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uPiBjcmVh
dGUoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHQpCiAgICAgewotICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbih0KSk7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbih0KSk7CiAgICAgfQogCi0g
ICAgdmlydHVhbCBQYXNzUmVmUHRyPFRyYW5zZm9ybU9wZXJhdGlvbj4gY2xvbmUoKSBjb25zdCBv
dmVycmlkZQorICAgIHZpcnR1YWwgUmVmPFRyYW5zZm9ybU9wZXJhdGlvbj4gY2xvbmUoKSBjb25z
dCBvdmVycmlkZQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNYXRyaXhUcmFu
c2Zvcm1PcGVyYXRpb24obWF0cml4KCkpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
TWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uKG1hdHJpeCgpKSk7CiAgICAgfQogCiAgICAgVHJhbnNm
b3JtYXRpb25NYXRyaXggbWF0cml4KCkgY29uc3QgeyByZXR1cm4gVHJhbnNmb3JtYXRpb25NYXRy
aXgobV9hLCBtX2IsIG1fYywgbV9kLCBtX2UsIG1fZik7IH0KQEAgLTY1LDcgKzY1LDcgQEAgcHJp
dmF0ZToKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxUcmFuc2Zvcm1PcGVyYXRpb24+IGJsZW5kKGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiog
ZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9JZGVudGl0eSA9IGZhbHNlKSBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIFJlZjxUcmFuc2Zvcm1PcGVyYXRpb24+IGJsZW5kKGNvbnN0IFRy
YW5zZm9ybU9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9JZGVu
dGl0eSA9IGZhbHNlKSBvdmVycmlkZTsKICAgICAKICAgICBNYXRyaXhUcmFuc2Zvcm1PcGVyYXRp
b24oZG91YmxlIGEsIGRvdWJsZSBiLCBkb3VibGUgYywgZG91YmxlIGQsIGRvdWJsZSBlLCBkb3Vi
bGUgZikKICAgICAgICAgOiBtX2EoYSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvUGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9QZXJzcGVjdGl2
ZVRyYW5zZm9ybU9wZXJhdGlvbi5jcHAKaW5kZXggZTM5ZTVlYjhmMmM2OTFmODIwY2UxMTNhZTQy
OGI1M2RlNjg0OGEwNy4uZmNmZjcwOGM4ZDVhNWI0NzFjMjQ4YjZkYzJhZmUyOTllOGFhNDFlZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9Q
ZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9QZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbi5j
cHAKQEAgLTM4LDEwICszOCwxMCBAQCBib29sIFBlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9u
OjpvcGVyYXRvcj09KGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiYgb3RoZXIpCiAgICAgcmV0dXJu
IG1fcCA9PSBkb3duY2FzdDxQZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbj4ob3RoZXIpLm1f
cDsKIH0KIAotUGFzc1JlZlB0cjxUcmFuc2Zvcm1PcGVyYXRpb24+IFBlcnNwZWN0aXZlVHJhbnNm
b3JtT3BlcmF0aW9uOjpibGVuZChjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24qIGZyb20sIGRvdWJs
ZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvSWRlbnRpdHkpCitSZWY8VHJhbnNmb3JtT3BlcmF0aW9u
PiBQZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbjo6YmxlbmQoY29uc3QgVHJhbnNmb3JtT3Bl
cmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb0lkZW50aXR5KQogewog
ICAgIGlmIChmcm9tICYmICFmcm9tLT5pc1NhbWVUeXBlKCp0aGlzKSkKLSAgICAgICAgcmV0dXJu
IHRoaXM7CisgICAgICAgIHJldHVybiAqdGhpczsKICAgICAKICAgICBpZiAoYmxlbmRUb0lkZW50
aXR5KSB7CiAgICAgICAgIGRvdWJsZSBwID0gZmxvYXRWYWx1ZUZvckxlbmd0aChtX3AsIDEpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9Q
ZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdHJhbnNmb3Jtcy9QZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbi5oCmluZGV4
IDZjZTUwNjhkZGQzN2ZhOTIzZGRhMTU4M2QxNzE3OTcwMTczNzhkZTAuLjcxN2MwNTZmNzUxZmFl
NGJiOTgyZTc5YmI3ZDUyMWY3YjU0NTJjZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvUGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1BlcnNw
ZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uLmgKQEAgLTM0LDE0ICszNCwxNCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIFBlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uIGZpbmFsIDog
cHVibGljIFRyYW5zZm9ybU9wZXJhdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8UGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb24+IGNyZWF0ZShjb25zdCBMZW5ndGgmIHAp
CisgICAgc3RhdGljIFJlZjxQZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbj4gY3JlYXRlKGNv
bnN0IExlbmd0aCYgcCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGVyc3Bl
Y3RpdmVUcmFuc2Zvcm1PcGVyYXRpb24ocCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBQZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbihwKSk7CiAgICAgfQogCi0gICAgdmlydHVh
bCBQYXNzUmVmUHRyPFRyYW5zZm9ybU9wZXJhdGlvbj4gY2xvbmUoKSBjb25zdCBvdmVycmlkZQor
ICAgIHZpcnR1YWwgUmVmPFRyYW5zZm9ybU9wZXJhdGlvbj4gY2xvbmUoKSBjb25zdCBvdmVycmlk
ZQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQZXJzcGVjdGl2ZVRyYW5zZm9y
bU9wZXJhdGlvbihtX3ApKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGVyc3BlY3Rp
dmVUcmFuc2Zvcm1PcGVyYXRpb24obV9wKSk7CiAgICAgfQogCiAgICAgTGVuZ3RoIHBlcnNwZWN0
aXZlKCkgY29uc3QgeyByZXR1cm4gbV9wOyB9CkBAIC02MSw3ICs2MSw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VHJh
bnNmb3JtT3BlcmF0aW9uPiBibGVuZChjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24qIGZyb20sIGRv
dWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvSWRlbnRpdHkgPSBmYWxzZSkgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCBSZWY8VHJhbnNmb3JtT3BlcmF0aW9uPiBibGVuZChjb25zdCBUcmFuc2Zvcm1P
cGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvSWRlbnRpdHkgPSBm
YWxzZSkgb3ZlcnJpZGU7CiAKICAgICBQZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbihjb25z
dCBMZW5ndGgmIHApCiAgICAgICAgIDogbV9wKHApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1JvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1JvdGF0ZVRy
YW5zZm9ybU9wZXJhdGlvbi5jcHAKaW5kZXggYmNlZjg1ZTA1OTI3ZTVmYmRiZThkMzkzZWNhNTI4
NGE2MTM0MWIyMi4uOWM5YWM5ZjVhNWI3NWZjZDIyZDJiMWNkZWRmYWJhNmZiYTczZmM2ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9Sb3Rh
dGVUcmFuc2Zvcm1PcGVyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RyYW5zZm9ybXMvUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9uLmNwcApAQCAtMzYsMTAg
KzM2LDEwIEBAIGJvb2wgUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9uOjpvcGVyYXRvcj09KGNvbnN0
IFRyYW5zZm9ybU9wZXJhdGlvbiYgb3RoZXIpIGNvbnN0CiAgICAgcmV0dXJuIG1feCA9PSByLm1f
eCAmJiBtX3kgPT0gci5tX3kgJiYgbV96ID09IHIubV96ICYmIG1fYW5nbGUgPT0gci5tX2FuZ2xl
OwogfQogCi1QYXNzUmVmUHRyPFRyYW5zZm9ybU9wZXJhdGlvbj4gUm90YXRlVHJhbnNmb3JtT3Bl
cmF0aW9uOjpibGVuZChjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9n
cmVzcywgYm9vbCBibGVuZFRvSWRlbnRpdHkpCitSZWY8VHJhbnNmb3JtT3BlcmF0aW9uPiBSb3Rh
dGVUcmFuc2Zvcm1PcGVyYXRpb246OmJsZW5kKGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiogZnJv
bSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9JZGVudGl0eSkKIHsKICAgICBpZiAoZnJv
bSAmJiAhZnJvbS0+aXNTYW1lVHlwZSgqdGhpcykpCi0gICAgICAgIHJldHVybiB0aGlzOworICAg
ICAgICByZXR1cm4gKnRoaXM7CiAgICAgCiAgICAgaWYgKGJsZW5kVG9JZGVudGl0eSkKICAgICAg
ICAgcmV0dXJuIFJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKG1feCwgbV95LCBtX3os
IG1fYW5nbGUgLSBtX2FuZ2xlICogcHJvZ3Jlc3MsIG1fdHlwZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1JvdGF0ZVRyYW5zZm9ybU9w
ZXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9S
b3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaAppbmRleCA5MTdjZmU5ZDcyZjMxYzVjYTIyNmI2OWJk
OGIwMTY0OWIwOTYyNjNlLi40NTdkZTQwZWNkYjBiNDUzZmZmMzAxMGEzNjBmMzEzMzk1OTVlMTgz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1z
L1JvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RyYW5zZm9ybXMvUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9uLmgKQEAgLTMxLDE5
ICszMSwxOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJvdGF0ZVRyYW5zZm9ybU9w
ZXJhdGlvbiBmaW5hbCA6IHB1YmxpYyBUcmFuc2Zvcm1PcGVyYXRpb24gewogcHVibGljOgotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbj4gY3JlYXRlKGRvdWJs
ZSBhbmdsZSwgT3BlcmF0aW9uVHlwZSB0eXBlKQorICAgIHN0YXRpYyBSZWY8Um90YXRlVHJhbnNm
b3JtT3BlcmF0aW9uPiBjcmVhdGUoZG91YmxlIGFuZ2xlLCBPcGVyYXRpb25UeXBlIHR5cGUpCiAg
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlv
bigwLCAwLCAxLCBhbmdsZSwgdHlwZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBS
b3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24oMCwgMCwgMSwgYW5nbGUsIHR5cGUpKTsKICAgICB9CiAK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxSb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24+IGNyZWF0ZShk
b3VibGUgeCwgZG91YmxlIHksIGRvdWJsZSB6LCBkb3VibGUgYW5nbGUsIE9wZXJhdGlvblR5cGUg
dHlwZSkKKyAgICBzdGF0aWMgUmVmPFJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbj4gY3JlYXRlKGRv
dWJsZSB4LCBkb3VibGUgeSwgZG91YmxlIHosIGRvdWJsZSBhbmdsZSwgT3BlcmF0aW9uVHlwZSB0
eXBlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBSb3RhdGVUcmFuc2Zvcm1P
cGVyYXRpb24oeCwgeSwgeiwgYW5nbGUsIHR5cGUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9uKHgsIHksIHosIGFuZ2xlLCB0eXBlKSk7CiAg
ICAgfQogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFRyYW5zZm9ybU9wZXJhdGlvbj4gY2xvbmUo
KSBjb25zdCBvdmVycmlkZQorICAgIHZpcnR1YWwgUmVmPFRyYW5zZm9ybU9wZXJhdGlvbj4gY2xv
bmUoKSBjb25zdCBvdmVycmlkZQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBS
b3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24obV94LCBtX3ksIG1feiwgbV9hbmdsZSwgbV90eXBlKSk7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbiht
X3gsIG1feSwgbV96LCBtX2FuZ2xlLCBtX3R5cGUpKTsKICAgICB9CiAKICAgICBkb3VibGUgeCgp
IGNvbnN0IHsgcmV0dXJuIG1feDsgfQpAQCAtNjYsNyArNjYsNyBAQCBwcml2YXRlOgogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFRyYW5zZm9y
bU9wZXJhdGlvbj4gYmxlbmQoY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUg
cHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb0lkZW50aXR5ID0gZmFsc2UpIG92ZXJyaWRlOworICAgIHZp
cnR1YWwgUmVmPFRyYW5zZm9ybU9wZXJhdGlvbj4gYmxlbmQoY29uc3QgVHJhbnNmb3JtT3BlcmF0
aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb0lkZW50aXR5ID0gZmFsc2Up
IG92ZXJyaWRlOwogCiAgICAgUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9uKGRvdWJsZSB4LCBkb3Vi
bGUgeSwgZG91YmxlIHosIGRvdWJsZSBhbmdsZSwgT3BlcmF0aW9uVHlwZSB0eXBlKQogICAgICAg
ICA6IG1feCh4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dHJhbnNmb3Jtcy9TY2FsZVRyYW5zZm9ybU9wZXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1NjYWxlVHJhbnNmb3JtT3BlcmF0aW9uLmNwcApp
bmRleCBiNDllMGQxZDFjZDE3MTg0ZWUxOTNmODUwODk3YTMwNTBjZDc3ZmI4Li5jYjJmYTdmNGY5
ZmRmOTVkOTNiNzNkZjJiMjIxNTgzZDVkMGQxYWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1NjYWxlVHJhbnNmb3JtT3BlcmF0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1NjYWxl
VHJhbnNmb3JtT3BlcmF0aW9uLmNwcApAQCAtMzQsMTAgKzM0LDEwIEBAIGJvb2wgU2NhbGVUcmFu
c2Zvcm1PcGVyYXRpb246Om9wZXJhdG9yPT0oY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9uJiBvdGhl
cikgY29uc3QKICAgICByZXR1cm4gbV94ID09IHMubV94ICYmIG1feSA9PSBzLm1feSAmJiBtX3og
PT0gcy5tX3o7CiB9CiAKLVBhc3NSZWZQdHI8VHJhbnNmb3JtT3BlcmF0aW9uPiBTY2FsZVRyYW5z
Zm9ybU9wZXJhdGlvbjo6YmxlbmQoY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9uKiBmcm9tLCBkb3Vi
bGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb0lkZW50aXR5KQorUmVmPFRyYW5zZm9ybU9wZXJhdGlv
bj4gU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb246OmJsZW5kKGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlv
biogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9JZGVudGl0eSkKIHsKICAgICBp
ZiAoZnJvbSAmJiAhZnJvbS0+aXNTYW1lVHlwZSgqdGhpcykpCi0gICAgICAgIHJldHVybiB0aGlz
OworICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgCiAgICAgaWYgKGJsZW5kVG9JZGVudGl0eSkK
ICAgICAgICAgcmV0dXJuIFNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUoV2ViQ29yZTo6
YmxlbmQobV94LCAxLjAsIHByb2dyZXNzKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvU2NhbGVUcmFuc2Zvcm1P
cGVyYXRpb24uaAppbmRleCA1Mzg1MzM1MzM4ZWI5ZmNlMDY4ZDRkNzgwM2I5NjljZGY1YzMzZThh
Li5lZDE5MWM2OThmODU1Mzg0MDMxZWY3YTlmMzUxZDI0NjJiNmRkMjg1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1NjYWxlVHJhbnNmb3Jt
T3BlcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNm
b3Jtcy9TY2FsZVRyYW5zZm9ybU9wZXJhdGlvbi5oCkBAIC0zMSwxOSArMzEsMTkgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbiBmaW5hbCA6IHB1
YmxpYyBUcmFuc2Zvcm1PcGVyYXRpb24gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uPiBjcmVhdGUoZG91YmxlIHN4LCBkb3VibGUgc3ksIE9w
ZXJhdGlvblR5cGUgdHlwZSkKKyAgICBzdGF0aWMgUmVmPFNjYWxlVHJhbnNmb3JtT3BlcmF0aW9u
PiBjcmVhdGUoZG91YmxlIHN4LCBkb3VibGUgc3ksIE9wZXJhdGlvblR5cGUgdHlwZSkKICAgICB7
Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24oc3gs
IHN5LCAxLCB0eXBlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNjYWxlVHJhbnNm
b3JtT3BlcmF0aW9uKHN4LCBzeSwgMSwgdHlwZSkpOwogICAgIH0KIAotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uPiBjcmVhdGUoZG91YmxlIHN4LCBkb3VibGUg
c3ksIGRvdWJsZSBzeiwgT3BlcmF0aW9uVHlwZSB0eXBlKQorICAgIHN0YXRpYyBSZWY8U2NhbGVU
cmFuc2Zvcm1PcGVyYXRpb24+IGNyZWF0ZShkb3VibGUgc3gsIGRvdWJsZSBzeSwgZG91YmxlIHN6
LCBPcGVyYXRpb25UeXBlIHR5cGUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uKHN4LCBzeSwgc3osIHR5cGUpKTsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24oc3gsIHN5LCBzeiwgdHlw
ZSkpOwogICAgIH0KIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUcmFuc2Zvcm1PcGVyYXRpb24+
IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICB2aXJ0dWFsIFJlZjxUcmFuc2Zvcm1PcGVyYXRp
b24+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24obV94LCBtX3ksIG1feiwgbV90eXBlKSk7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uKG1feCwg
bV95LCBtX3osIG1fdHlwZSkpOwogICAgIH0KIAogICAgIGRvdWJsZSB4KCkgY29uc3QgeyByZXR1
cm4gbV94OyB9CkBAIC02NSw3ICs2NSw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VHJhbnNmb3JtT3BlcmF0aW9uPiBi
bGVuZChjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9v
bCBibGVuZFRvSWRlbnRpdHkgPSBmYWxzZSkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWY8VHJh
bnNmb3JtT3BlcmF0aW9uPiBibGVuZChjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24qIGZyb20sIGRv
dWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvSWRlbnRpdHkgPSBmYWxzZSkgb3ZlcnJpZGU7CiAK
ICAgICBTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbihkb3VibGUgc3gsIGRvdWJsZSBzeSwgZG91Ymxl
IHN6LCBPcGVyYXRpb25UeXBlIHR5cGUpCiAgICAgICAgIDogbV94KHN4KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9Ta2V3VHJhbnNmb3Jt
T3BlcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9y
bXMvU2tld1RyYW5zZm9ybU9wZXJhdGlvbi5jcHAKaW5kZXggYTQ1ZGVkYWRlYmQ2NjViMDdmNzQ1
M2Y4NTdjNTA2NzE4NjQyYzMyYy4uMGI2MWY5MDg0MGE4MDVhY2E0N2ZmNWU2MzdmMWQ0ODk3ZjUz
OGU1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNm
b3Jtcy9Ta2V3VHJhbnNmb3JtT3BlcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1NrZXdUcmFuc2Zvcm1PcGVyYXRpb24uY3BwCkBAIC0z
NCwxMCArMzQsMTAgQEAgYm9vbCBTa2V3VHJhbnNmb3JtT3BlcmF0aW9uOjpvcGVyYXRvcj09KGNv
bnN0IFRyYW5zZm9ybU9wZXJhdGlvbiYgb3RoZXIpIGNvbnN0CiAgICAgcmV0dXJuIG1fYW5nbGVY
ID09IHMubV9hbmdsZVggJiYgbV9hbmdsZVkgPT0gcy5tX2FuZ2xlWTsKIH0KIAotUGFzc1JlZlB0
cjxUcmFuc2Zvcm1PcGVyYXRpb24+IFNrZXdUcmFuc2Zvcm1PcGVyYXRpb246OmJsZW5kKGNvbnN0
IFRyYW5zZm9ybU9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9J
ZGVudGl0eSkKK1JlZjxUcmFuc2Zvcm1PcGVyYXRpb24+IFNrZXdUcmFuc2Zvcm1PcGVyYXRpb246
OmJsZW5kKGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBi
b29sIGJsZW5kVG9JZGVudGl0eSkKIHsKICAgICBpZiAoZnJvbSAmJiAhZnJvbS0+aXNTYW1lVHlw
ZSgqdGhpcykpCi0gICAgICAgIHJldHVybiB0aGlzOworICAgICAgICByZXR1cm4gKnRoaXM7CiAg
ICAgCiAgICAgaWYgKGJsZW5kVG9JZGVudGl0eSkKICAgICAgICAgcmV0dXJuIFNrZXdUcmFuc2Zv
cm1PcGVyYXRpb246OmNyZWF0ZShXZWJDb3JlOjpibGVuZChtX2FuZ2xlWCwgMC4wLCBwcm9ncmVz
cyksIFdlYkNvcmU6OmJsZW5kKG1fYW5nbGVZLCAwLjAsIHByb2dyZXNzKSwgbV90eXBlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvU2tl
d1RyYW5zZm9ybU9wZXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dHJhbnNmb3Jtcy9Ta2V3VHJhbnNmb3JtT3BlcmF0aW9uLmgKaW5kZXggMWRlMDgyMGQ3NmFlMzBh
OWIyODZiN2QwOTMzMzlmZTYzN2FkMzc2OC4uNGMwMDYwZTUyYzRmMmZkYjBmOWM2Y2QzMGQ5MDJl
YTg1NjFmOWEyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dHJhbnNmb3Jtcy9Ta2V3VHJhbnNmb3JtT3BlcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9Ta2V3VHJhbnNmb3JtT3BlcmF0aW9uLmgKQEAg
LTMxLDE0ICszMSwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNrZXdUcmFuc2Zv
cm1PcGVyYXRpb24gZmluYWwgOiBwdWJsaWMgVHJhbnNmb3JtT3BlcmF0aW9uIHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTa2V3VHJhbnNmb3JtT3BlcmF0aW9uPiBjcmVhdGUoZG91
YmxlIGFuZ2xlWCwgZG91YmxlIGFuZ2xlWSwgT3BlcmF0aW9uVHlwZSB0eXBlKQorICAgIHN0YXRp
YyBSZWY8U2tld1RyYW5zZm9ybU9wZXJhdGlvbj4gY3JlYXRlKGRvdWJsZSBhbmdsZVgsIGRvdWJs
ZSBhbmdsZVksIE9wZXJhdGlvblR5cGUgdHlwZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgU2tld1RyYW5zZm9ybU9wZXJhdGlvbihhbmdsZVgsIGFuZ2xlWSwgdHlwZSkpOwor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTa2V3VHJhbnNmb3JtT3BlcmF0aW9uKGFuZ2xl
WCwgYW5nbGVZLCB0eXBlKSk7CiAgICAgfQogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFRyYW5z
Zm9ybU9wZXJhdGlvbj4gY2xvbmUoKSBjb25zdCBvdmVycmlkZQorICAgIHZpcnR1YWwgUmVmPFRy
YW5zZm9ybU9wZXJhdGlvbj4gY2xvbmUoKSBjb25zdCBvdmVycmlkZQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBTa2V3VHJhbnNmb3JtT3BlcmF0aW9uKG1fYW5nbGVYLCBtX2Fu
Z2xlWSwgbV90eXBlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNrZXdUcmFuc2Zv
cm1PcGVyYXRpb24obV9hbmdsZVgsIG1fYW5nbGVZLCBtX3R5cGUpKTsKICAgICB9CiAKICAgICBk
b3VibGUgYW5nbGVYKCkgY29uc3QgeyByZXR1cm4gbV9hbmdsZVg7IH0KQEAgLTU5LDcgKzU5LDcg
QEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxUcmFuc2Zvcm1PcGVyYXRpb24+IGJsZW5kKGNvbnN0IFRyYW5zZm9ybU9wZXJh
dGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9JZGVudGl0eSA9IGZhbHNl
KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZjxUcmFuc2Zvcm1PcGVyYXRpb24+IGJsZW5kKGNv
bnN0IFRyYW5zZm9ybU9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5k
VG9JZGVudGl0eSA9IGZhbHNlKSBvdmVycmlkZTsKICAgICAKICAgICBTa2V3VHJhbnNmb3JtT3Bl
cmF0aW9uKGRvdWJsZSBhbmdsZVgsIGRvdWJsZSBhbmdsZVksIE9wZXJhdGlvblR5cGUgdHlwZSkK
ICAgICAgICAgOiBtX2FuZ2xlWChhbmdsZVgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybU9wZXJhdGlvbi5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1PcGVyYXRpb24u
aAppbmRleCBjNTczZWVmZTcxMzYwNmQ5ZjgzZTlkYjc5Zjc4YjJiZGMzMDVjYWQ1Li5lMWJjMDQy
NWM2NWRjMDFkOWVhNmFhYzhjNjU0MzlkMjVhNWQxOTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybU9wZXJhdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3Jt
T3BlcmF0aW9uLmgKQEAgLTI3LDcgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgog
I2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
ICNpbmNsdWRlIDx3dGYvVHlwZUNhc3RzLmg+CiAKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCB+VHJhbnNmb3JtT3BlcmF0aW9uKCkgeyB9CiAKLSAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8VHJhbnNmb3JtT3BlcmF0aW9uPiBjbG9uZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIFJlZjxUcmFuc2Zvcm1PcGVyYXRpb24+IGNsb25lKCkgY29uc3QgPSAwOwogCiAgICAgdmly
dHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9uJikgY29uc3QgPSAw
OwogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24mIG8pIGNvbnN0
IHsgcmV0dXJuICEoKnRoaXMgPT0gbyk7IH0KQEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgogICAg
IC8vIFJldHVybiB0cnVlIGlmIHRoZSBib3JkZXJCb3hTaXplIHdhcyB1c2VkIGluIHRoZSBjb21w
dXRhdGlvbiwgZmFsc2Ugb3RoZXJ3aXNlLgogICAgIHZpcnR1YWwgYm9vbCBhcHBseShUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYsIGNvbnN0IEZsb2F0U2l6ZSYgYm9yZGVyQm94U2l6ZSkgY29uc3QgPSAw
OwogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFRyYW5zZm9ybU9wZXJhdGlvbj4gYmxlbmQoY29u
c3QgVHJhbnNmb3JtT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRU
b0lkZW50aXR5ID0gZmFsc2UpID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxUcmFuc2Zvcm1PcGVyYXRp
b24+IGJsZW5kKGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNz
LCBib29sIGJsZW5kVG9JZGVudGl0eSA9IGZhbHNlKSA9IDA7CiAKICAgICB2aXJ0dWFsIE9wZXJh
dGlvblR5cGUgdHlwZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNTYW1lVHlwZShj
b25zdCBUcmFuc2Zvcm1PcGVyYXRpb24mKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zv
cm1PcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5z
Zm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9ucy5jcHAKaW5kZXggNTJlYzZmNWJjYzgyYjU3NGZmYzYz
YTNkMzY1ZTc2OTNmMTJmNTY5NS4uMTQzNWIyNzM3ZjdiZjQ3YzQ1MDAyOTMzMjkzZGUyNTNjZjlm
ZTIxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNm
b3Jtcy9UcmFuc2Zvcm1PcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybU9wZXJhdGlvbnMuY3BwCkBAIC04Miw3ICs4
Miw3IEBAIFRyYW5zZm9ybU9wZXJhdGlvbnMgVHJhbnNmb3JtT3BlcmF0aW9uczo6YmxlbmRCeU1h
dGNoaW5nT3BlcmF0aW9ucyhjb25zdCBUcmFuc2ZvCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IHNpemU7IGkrKykgewogICAgICAgICBSZWZQdHI8VHJhbnNmb3JtT3BlcmF0aW9uPiBmcm9t
T3BlcmF0aW9uID0gKGkgPCBmcm9tU2l6ZSkgPyBmcm9tLm9wZXJhdGlvbnMoKVtpXS5nZXQoKSA6
IG51bGxwdHI7CiAgICAgICAgIFJlZlB0cjxUcmFuc2Zvcm1PcGVyYXRpb24+IHRvT3BlcmF0aW9u
ID0gKGkgPCB0b1NpemUpID8gb3BlcmF0aW9ucygpW2ldLmdldCgpIDogbnVsbHB0cjsKLSAgICAg
ICAgUmVmUHRyPFRyYW5zZm9ybU9wZXJhdGlvbj4gYmxlbmRlZE9wZXJhdGlvbiA9IHRvT3BlcmF0
aW9uID8gdG9PcGVyYXRpb24tPmJsZW5kKGZyb21PcGVyYXRpb24uZ2V0KCksIHByb2dyZXNzKSA6
IChmcm9tT3BlcmF0aW9uID8gZnJvbU9wZXJhdGlvbi0+YmxlbmQobnVsbHB0ciwgcHJvZ3Jlc3Ms
IHRydWUpIDogbnVsbHB0cik7CisgICAgICAgIFJlZlB0cjxUcmFuc2Zvcm1PcGVyYXRpb24+IGJs
ZW5kZWRPcGVyYXRpb24gPSB0b09wZXJhdGlvbiA/IHRvT3BlcmF0aW9uLT5ibGVuZChmcm9tT3Bl
cmF0aW9uLmdldCgpLCBwcm9ncmVzcykgOiAoZnJvbU9wZXJhdGlvbiA/IFJlZlB0cjxUcmFuc2Zv
cm1PcGVyYXRpb24+KGZyb21PcGVyYXRpb24tPmJsZW5kKG51bGxwdHIsIHByb2dyZXNzLCB0cnVl
KSkgOiBudWxscHRyKTsKICAgICAgICAgaWYgKGJsZW5kZWRPcGVyYXRpb24pCiAgICAgICAgICAg
ICByZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZChibGVuZGVkT3BlcmF0aW9uKTsKICAgICAgICAg
ZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFu
c2Zvcm1zL1RyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5j
cHAKaW5kZXggOTBmNjJiYmQ1NmM5MzM4NTU1ZGI1MGEwNjdjOTRiN2M1NWYyMjUyOC4uMTAxZGM0
ZmY2ODFjNTBmZGQ1M2FkY2Q2Njg3ZmQ3YTM2ZGJhMzNjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2xhdGVUcmFuc2Zvcm1PcGVy
YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9y
bXMvVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uLmNwcApAQCAtMzMsMTAgKzMzLDEwIEBAIGJv
b2wgVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uOjpvcGVyYXRvcj09KGNvbnN0IFRyYW5zZm9y
bU9wZXJhdGlvbiYgb3RoZXIpIGNvCiAgICAgcmV0dXJuIG1feCA9PSB0Lm1feCAmJiBtX3kgPT0g
dC5tX3kgJiYgbV96ID09IHQubV96OwogfQogCi1QYXNzUmVmUHRyPFRyYW5zZm9ybU9wZXJhdGlv
bj4gVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uOjpibGVuZChjb25zdCBUcmFuc2Zvcm1PcGVy
YXRpb24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvSWRlbnRpdHkpCitSZWY8
VHJhbnNmb3JtT3BlcmF0aW9uPiBUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb246OmJsZW5kKGNv
bnN0IFRyYW5zZm9ybU9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5k
VG9JZGVudGl0eSkKIHsKICAgICBpZiAoZnJvbSAmJiAhZnJvbS0+aXNTYW1lVHlwZSgqdGhpcykp
Ci0gICAgICAgIHJldHVybiB0aGlzOworICAgICAgICByZXR1cm4gKnRoaXM7CiAKICAgICBMZW5n
dGggemVyb0xlbmd0aCgwLCBGaXhlZCk7CiAgICAgaWYgKGJsZW5kVG9JZGVudGl0eSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNs
YXRlVHJhbnNmb3JtT3BlcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90cmFuc2Zvcm1zL1RyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oCmluZGV4IDBlNTI5Zjk0
MWY3NjcyYzA4NjBkMTBiNDA2NmVlMzU4ZDc1NmE3YWMuLmUwODU5M2JkYWZkZmVjNjYxYzdlZjRj
Yjg0ZTNiODYyNmI0NDc4NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2xhdGVUcmFuc2Zv
cm1PcGVyYXRpb24uaApAQCAtMzMsMTkgKzMzLDE5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uIGZpbmFsIDogcHVibGljIFRyYW5zZm9y
bU9wZXJhdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8VHJhbnNsYXRlVHJh
bnNmb3JtT3BlcmF0aW9uPiBjcmVhdGUoY29uc3QgTGVuZ3RoJiB0eCwgY29uc3QgTGVuZ3RoJiB0
eSwgT3BlcmF0aW9uVHlwZSB0eXBlKQorICAgIHN0YXRpYyBSZWY8VHJhbnNsYXRlVHJhbnNmb3Jt
T3BlcmF0aW9uPiBjcmVhdGUoY29uc3QgTGVuZ3RoJiB0eCwgY29uc3QgTGVuZ3RoJiB0eSwgT3Bl
cmF0aW9uVHlwZSB0eXBlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBUcmFu
c2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24odHgsIHR5LCBMZW5ndGgoMCwgRml4ZWQpLCB0eXBlKSk7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlv
bih0eCwgdHksIExlbmd0aCgwLCBGaXhlZCksIHR5cGUpKTsKICAgICB9CiAKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24+IGNyZWF0ZShjb25zdCBMZW5n
dGgmIHR4LCBjb25zdCBMZW5ndGgmIHR5LCBjb25zdCBMZW5ndGgmIHR6LCBPcGVyYXRpb25UeXBl
IHR5cGUpCisgICAgc3RhdGljIFJlZjxUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24+IGNyZWF0
ZShjb25zdCBMZW5ndGgmIHR4LCBjb25zdCBMZW5ndGgmIHR5LCBjb25zdCBMZW5ndGgmIHR6LCBP
cGVyYXRpb25UeXBlIHR5cGUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRy
YW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbih0eCwgdHksIHR6LCB0eXBlKSk7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbih0eCwgdHksIHR6
LCB0eXBlKSk7CiAgICAgfQogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFRyYW5zZm9ybU9wZXJh
dGlvbj4gY2xvbmUoKSBjb25zdCBvdmVycmlkZQorICAgIHZpcnR1YWwgUmVmPFRyYW5zZm9ybU9w
ZXJhdGlvbj4gY2xvbmUoKSBjb25zdCBvdmVycmlkZQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24obV94LCBtX3ksIG1feiwgbV90
eXBlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRyYW5zbGF0ZVRyYW5zZm9ybU9w
ZXJhdGlvbihtX3gsIG1feSwgbV96LCBtX3R5cGUpKTsKICAgICB9CiAKICAgICBkb3VibGUgeChj
b25zdCBGbG9hdFNpemUmIGJvcmRlckJveFNpemUpIGNvbnN0IHsgcmV0dXJuIGZsb2F0VmFsdWVG
b3JMZW5ndGgobV94LCBib3JkZXJCb3hTaXplLndpZHRoKCkpOyB9CkBAIC03MCw3ICs3MCw3IEBA
IHByaXZhdGU6CiAgICAgICAgIHJldHVybiBtX3guaXNQZXJjZW50KCkgfHwgbV95LmlzUGVyY2Vu
dCgpOwogICAgIH0KIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUcmFuc2Zvcm1PcGVyYXRpb24+
IGJsZW5kKGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBi
b29sIGJsZW5kVG9JZGVudGl0eSA9IGZhbHNlKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZjxU
cmFuc2Zvcm1PcGVyYXRpb24+IGJsZW5kKGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiogZnJvbSwg
ZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9JZGVudGl0eSA9IGZhbHNlKSBvdmVycmlkZTsK
IAogICAgIFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbihjb25zdCBMZW5ndGgmIHR4LCBjb25z
dCBMZW5ndGgmIHR5LCBjb25zdCBMZW5ndGgmIHR6LCBPcGVyYXRpb25UeXBlIHR5cGUpCiAgICAg
ICAgIDogbV94KHR4KQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252949</attachid>
            <date>2015-05-12 01:05:56 -0700</date>
            <delta_ts>2015-05-12 01:05:56 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-144876-20150512100433.patch</filename>
            <type>text/plain</type>
            <size>28055</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg0MDcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2Y3MzgzNmJiNjEzMjBl
ZDcxMzIwMzIyMTQ4ZTA3ZTQ2NDlmYjU1NS4uNGE2NjIxYzU2MDZlZjBmZDUyYzU3NzEzZjkzNmE3
YjliMmUzZDc0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQxIEBACiAyMDE1LTA1LTExICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAorICAgICAgICBNb3ZlIFRyYW5zZm9y
bU9wZXJhdGlvbi1iYXNlZCBjbGFzc2VzIG9mZiBvZiBQYXNzUmVmUHRyCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQ4NzYKKworICAgICAgICBSZXZp
ZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBSZW1vdmUgdXNlcyBvZiBQYXNzUmVmUHRy
IGZyb20gdGhlIFRyYW5zZm9ybU9wZXJhdGlvbiBjbGFzcyBhbmQgaXRzCisgICAgICAgIGRlcml2
YXRpdmVzLCBvcGVyYXRpbmcgb24gUmVmIGFuZCBSZWZQdHIgb2JqZWN0cyBpbnN0ZWFkLgorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9JZGVudGl0eVRyYW5zZm9ybU9w
ZXJhdGlvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvTWF0cml4
M0RUcmFuc2Zvcm1PcGVyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWF0cml4M0RUcmFu
c2Zvcm1PcGVyYXRpb246OmJsZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90cmFu
c2Zvcm1zL01hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9uLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvdHJhbnNmb3Jtcy9NYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uOjpibGVuZCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9NYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb24uaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1BlcnNwZWN0aXZlVHJhbnNm
b3JtT3BlcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBlcnNwZWN0aXZlVHJhbnNmb3Jt
T3BlcmF0aW9uOjpibGVuZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jt
cy9QZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3RyYW5zZm9ybXMvUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjo6YmxlbmQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9uLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9TY2FsZVRyYW5zZm9ybU9wZXJh
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbjo6Ymxl
bmQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvU2NhbGVUcmFuc2Zv
cm1PcGVyYXRpb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1Nr
ZXdUcmFuc2Zvcm1PcGVyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2tld1RyYW5zZm9y
bU9wZXJhdGlvbjo6YmxlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9y
bXMvU2tld1RyYW5zZm9ybU9wZXJhdGlvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1PcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlRyYW5zZm9ybU9wZXJhdGlvbnM6OmJsZW5kQnlNYXRjaGluZ09wZXJhdGlvbnMpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNsYXRlVHJhbnNmb3JtT3Bl
cmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlv
bjo6YmxlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNs
YXRlVHJhbnNmb3JtT3BlcmF0aW9uLmg6CisKKzIwMTUtMDUtMTEgIFphbiBEb2JlcnNlayAgPHpk
b2JlcnNla0BpZ2FsaWEuY29tPgorCiAgICAgICAgIFJlZHVjZSBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCBjb3BpZXMgaW4gV2ViS2l0Q1NTTWF0cml4IG9wZXJhdGlvbnMKICAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NDc5NQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL0lkZW50aXR5VHJhbnNmb3Jt
T3BlcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1z
L0lkZW50aXR5VHJhbnNmb3JtT3BlcmF0aW9uLmgKaW5kZXggOGE0ZjA0NjQzZGZkZThhZWVlNTk2
NDZkMzM0Nzk1ZTUxODMyMmNkOS4uMzZmYjczMGY3ZDg5MGJiZmUzZGI0NWFmMDc5YjEzOWQ4ZDYy
Y2QyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNm
b3Jtcy9JZGVudGl0eVRyYW5zZm9ybU9wZXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvSWRlbnRpdHlUcmFuc2Zvcm1PcGVyYXRpb24uaApA
QCAtMjYsMTcgKzI2LDE4IEBACiAjZGVmaW5lIElkZW50aXR5VHJhbnNmb3JtT3BlcmF0aW9uX2gK
IAogI2luY2x1ZGUgIlRyYW5zZm9ybU9wZXJhdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJZGVudGl0eVRyYW5zZm9ybU9wZXJhdGlv
biBmaW5hbCA6IHB1YmxpYyBUcmFuc2Zvcm1PcGVyYXRpb24gewogcHVibGljOgotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPElkZW50aXR5VHJhbnNmb3JtT3BlcmF0aW9uPiBjcmVhdGUoKQorICAgIHN0
YXRpYyBSZWY8SWRlbnRpdHlUcmFuc2Zvcm1PcGVyYXRpb24+IGNyZWF0ZSgpCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElkZW50aXR5VHJhbnNmb3JtT3BlcmF0aW9uKCkpOwor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJZGVudGl0eVRyYW5zZm9ybU9wZXJhdGlvbigp
KTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VHJhbnNmb3JtT3BlcmF0aW9uPiBj
bG9uZSgpIGNvbnN0IG92ZXJyaWRlCisgICAgdmlydHVhbCBSZWY8VHJhbnNmb3JtT3BlcmF0aW9u
PiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlCiAgICAgewogICAgICAgICByZXR1cm4gY3JlYXRlKCk7
CiAgICAgfQpAQCAtNTYsOSArNTcsOSBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFRyYW5zZm9ybU9wZXJhdGlvbj4gYmxl
bmQoY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9uKiwgZG91YmxlLCBib29sID0gZmFsc2UpIG92ZXJy
aWRlCisgICAgdmlydHVhbCBSZWY8VHJhbnNmb3JtT3BlcmF0aW9uPiBibGVuZChjb25zdCBUcmFu
c2Zvcm1PcGVyYXRpb24qLCBkb3VibGUsIGJvb2wgPSBmYWxzZSkgb3ZlcnJpZGUKICAgICB7Ci0g
ICAgICAgIHJldHVybiB0aGlzOworICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogCiAgICAg
SWRlbnRpdHlUcmFuc2Zvcm1PcGVyYXRpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9NYXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL01hdHJpeDNE
VHJhbnNmb3JtT3BlcmF0aW9uLmNwcAppbmRleCBiZDIzOTZjMjdlMWMyOWQwYmYxYmVmMzAzY2I1
NTY4NTg1OTIxYmQ3Li4wNDZkNTQyOWEyMmI0MDFiNjAyYTk1NjJjNDNjMmJhZTkxY2VhZGVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL01h
dHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90cmFuc2Zvcm1zL01hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9uLmNwcApAQCAt
MzUsMTAgKzM1LDEwIEBAIGJvb2wgTWF0cml4M0RUcmFuc2Zvcm1PcGVyYXRpb246Om9wZXJhdG9y
PT0oY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9uJiBvdGhlcikgY29uCiAgICAgcmV0dXJuIGlzU2Ft
ZVR5cGUob3RoZXIpICYmIG1fbWF0cml4ID09IGRvd25jYXN0PE1hdHJpeDNEVHJhbnNmb3JtT3Bl
cmF0aW9uPihvdGhlcikubV9tYXRyaXg7CiB9CiAKLVBhc3NSZWZQdHI8VHJhbnNmb3JtT3BlcmF0
aW9uPiBNYXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlvbjo6YmxlbmQoY29uc3QgVHJhbnNmb3JtT3Bl
cmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb0lkZW50aXR5KQorUmVm
PFRyYW5zZm9ybU9wZXJhdGlvbj4gTWF0cml4M0RUcmFuc2Zvcm1PcGVyYXRpb246OmJsZW5kKGNv
bnN0IFRyYW5zZm9ybU9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5k
VG9JZGVudGl0eSkKIHsKICAgICBpZiAoZnJvbSAmJiAhZnJvbS0+aXNTYW1lVHlwZSgqdGhpcykp
Ci0gICAgICAgIHJldHVybiB0aGlzOworICAgICAgICByZXR1cm4gKnRoaXM7CiAKICAgICAvLyBD
b252ZXJ0IHRoZSBUcmFuc2Zvcm1PcGVyYXRpb25zIGludG8gbWF0cmljZXMKICAgICBGbG9hdFNp
emUgc2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Ry
YW5zZm9ybXMvTWF0cml4M0RUcmFuc2Zvcm1PcGVyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvTWF0cml4M0RUcmFuc2Zvcm1PcGVyYXRpb24uaApp
bmRleCA1ZWY2YmU1NTYzM2JhNTgxZGM2NmQ4ZDIxZTgyMmIzMTRmZjdhYTVmLi40YTVkNTQ2NTcy
MmE5MjU3MjRiYzU2NjE1YWEyZWRkMzRiMGMyNGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL01hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9NYXRy
aXgzRFRyYW5zZm9ybU9wZXJhdGlvbi5oCkBAIC0yNywxOSArMjcsMjAgQEAKICNkZWZpbmUgTWF0
cml4M0RUcmFuc2Zvcm1PcGVyYXRpb25faAogCiAjaW5jbHVkZSAiVHJhbnNmb3JtT3BlcmF0aW9u
LmgiCisjaW5jbHVkZSA8d3RmL1JlZi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IE1hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9uIGZpbmFsIDogcHVibGljIFRyYW5zZm9ybU9wZXJh
dGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TWF0cml4M0RUcmFuc2Zvcm1P
cGVyYXRpb24+IGNyZWF0ZShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4KQorICAg
IHN0YXRpYyBSZWY8TWF0cml4M0RUcmFuc2Zvcm1PcGVyYXRpb24+IGNyZWF0ZShjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBNYXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlvbihtYXRyaXgpKTsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgTWF0cml4M0RUcmFuc2Zvcm1PcGVyYXRpb24obWF0cml4KSk7CiAgICAg
fQogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFRyYW5zZm9ybU9wZXJhdGlvbj4gY2xvbmUoKSBj
b25zdCBvdmVycmlkZQorICAgIHZpcnR1YWwgUmVmPFRyYW5zZm9ybU9wZXJhdGlvbj4gY2xvbmUo
KSBjb25zdCBvdmVycmlkZQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNYXRy
aXgzRFRyYW5zZm9ybU9wZXJhdGlvbihtX21hdHJpeCkpOworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBNYXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlvbihtX21hdHJpeCkpOwogICAgIH0KIAog
ICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1hdHJpeCgpIGNvbnN0IHtyZXR1cm4gbV9tYXRyaXg7
IH0KQEAgLTU5LDcgKzYwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUcmFuc2Zvcm1PcGVyYXRpb24+IGJsZW5kKGNv
bnN0IFRyYW5zZm9ybU9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5k
VG9JZGVudGl0eSA9IGZhbHNlKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZjxUcmFuc2Zvcm1P
cGVyYXRpb24+IGJsZW5kKGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHBy
b2dyZXNzLCBib29sIGJsZW5kVG9JZGVudGl0eSA9IGZhbHNlKSBvdmVycmlkZTsKICAgICAKICAg
ICBNYXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlvbihjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
bWF0KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RyYW5zZm9ybXMvTWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvTWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uLmNw
cAppbmRleCA0OGE3YjU5MWNkZDU1ZTAyNDExMWZhMGVmMjdjMjUyNWJjN2E3NTcyLi44NWVjNmNl
NTdiOWRkOGYzNmNkMzlkMjIwMjRiYjVlZWZlYzc5ZjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL01hdHJpeFRyYW5zZm9ybU9wZXJhdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9N
YXRyaXhUcmFuc2Zvcm1PcGVyYXRpb24uY3BwCkBAIC0zNCwxMCArMzQsMTAgQEAgYm9vbCBNYXRy
aXhUcmFuc2Zvcm1PcGVyYXRpb246Om9wZXJhdG9yPT0oY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9u
JiBvdGhlcikgY29uc3QKICAgICByZXR1cm4gbV9hID09IG0ubV9hICYmIG1fYiA9PSBtLm1fYiAm
JiBtX2MgPT0gbS5tX2MgJiYgbV9kID09IG0ubV9kICYmIG1fZSA9PSBtLm1fZSAmJiBtX2YgPT0g
bS5tX2Y7CiB9CiAKLVBhc3NSZWZQdHI8VHJhbnNmb3JtT3BlcmF0aW9uPiBNYXRyaXhUcmFuc2Zv
cm1PcGVyYXRpb246OmJsZW5kKGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiogZnJvbSwgZG91Ymxl
IHByb2dyZXNzLCBib29sIGJsZW5kVG9JZGVudGl0eSkKK1JlZjxUcmFuc2Zvcm1PcGVyYXRpb24+
IE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbjo6YmxlbmQoY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9u
KiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb0lkZW50aXR5KQogewogICAgIGlm
IChmcm9tICYmICFmcm9tLT5pc1NhbWVUeXBlKCp0aGlzKSkKLSAgICAgICAgcmV0dXJuIHRoaXM7
CisgICAgICAgIHJldHVybiAqdGhpczsKIAogICAgIC8vIGNvbnZlcnQgdGhlIFRyYW5zZm9ybU9w
ZXJhdGlvbnMgaW50byBtYXRyaWNlcwogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGZyb21UOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9N
YXRyaXhUcmFuc2Zvcm1PcGVyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RyYW5zZm9ybXMvTWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uLmgKaW5kZXggODc5NTdmNGMy
NDUyZjU2YTJkMTAxODk5ZTUxMTZiMTRlMTI3NDliZS4uOTAzODBmNGRhMGU2MzA4YjA4Zjc0NGFm
MmU1YjA3MzA4ZjhhYmMzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdHJhbnNmb3Jtcy9NYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL01hdHJpeFRyYW5zZm9ybU9wZXJh
dGlvbi5oCkBAIC0yNywyNCArMjcsMjUgQEAKIAogI2luY2x1ZGUgIlRyYW5zZm9ybU9wZXJhdGlv
bi5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCisjaW5jbHVkZSA8d3RmL1Jl
Zi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1hdHJpeFRyYW5zZm9ybU9wZXJh
dGlvbiBmaW5hbCA6IHB1YmxpYyBUcmFuc2Zvcm1PcGVyYXRpb24gewogcHVibGljOgotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbj4gY3JlYXRlKGRvdWJsZSBh
LCBkb3VibGUgYiwgZG91YmxlIGMsIGRvdWJsZSBkLCBkb3VibGUgZSwgZG91YmxlIGYpCisgICAg
c3RhdGljIFJlZjxNYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb24+IGNyZWF0ZShkb3VibGUgYSwgZG91
YmxlIGIsIGRvdWJsZSBjLCBkb3VibGUgZCwgZG91YmxlIGUsIGRvdWJsZSBmKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb24oYSwgYiwg
YywgZCwgZSwgZikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNYXRyaXhUcmFuc2Zv
cm1PcGVyYXRpb24oYSwgYiwgYywgZCwgZSwgZikpOwogICAgIH0KIAotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbj4gY3JlYXRlKGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiB0KQorICAgIHN0YXRpYyBSZWY8TWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uPiBj
cmVhdGUoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHQpCiAgICAgewotICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbih0KSk7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbih0KSk7CiAgICAgfQog
Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFRyYW5zZm9ybU9wZXJhdGlvbj4gY2xvbmUoKSBjb25z
dCBvdmVycmlkZQorICAgIHZpcnR1YWwgUmVmPFRyYW5zZm9ybU9wZXJhdGlvbj4gY2xvbmUoKSBj
b25zdCBvdmVycmlkZQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNYXRyaXhU
cmFuc2Zvcm1PcGVyYXRpb24obWF0cml4KCkpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgTWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uKG1hdHJpeCgpKSk7CiAgICAgfQogCiAgICAgVHJh
bnNmb3JtYXRpb25NYXRyaXggbWF0cml4KCkgY29uc3QgeyByZXR1cm4gVHJhbnNmb3JtYXRpb25N
YXRyaXgobV9hLCBtX2IsIG1fYywgbV9kLCBtX2UsIG1fZik7IH0KQEAgLTY1LDcgKzY2LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxUcmFuc2Zvcm1PcGVyYXRpb24+IGJsZW5kKGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlv
biogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9JZGVudGl0eSA9IGZhbHNlKSBv
dmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZjxUcmFuc2Zvcm1PcGVyYXRpb24+IGJsZW5kKGNvbnN0
IFRyYW5zZm9ybU9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9J
ZGVudGl0eSA9IGZhbHNlKSBvdmVycmlkZTsKICAgICAKICAgICBNYXRyaXhUcmFuc2Zvcm1PcGVy
YXRpb24oZG91YmxlIGEsIGRvdWJsZSBiLCBkb3VibGUgYywgZG91YmxlIGQsIGRvdWJsZSBlLCBk
b3VibGUgZikKICAgICAgICAgOiBtX2EoYSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvUGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9QZXJzcGVj
dGl2ZVRyYW5zZm9ybU9wZXJhdGlvbi5jcHAKaW5kZXggZTM5ZTVlYjhmMmM2OTFmODIwY2UxMTNh
ZTQyOGI1M2RlNjg0OGEwNy4uZmNmZjcwOGM4ZDVhNWI0NzFjMjQ4YjZkYzJhZmUyOTllOGFhNDFl
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jt
cy9QZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9QZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlv
bi5jcHAKQEAgLTM4LDEwICszOCwxMCBAQCBib29sIFBlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0
aW9uOjpvcGVyYXRvcj09KGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiYgb3RoZXIpCiAgICAgcmV0
dXJuIG1fcCA9PSBkb3duY2FzdDxQZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbj4ob3RoZXIp
Lm1fcDsKIH0KIAotUGFzc1JlZlB0cjxUcmFuc2Zvcm1PcGVyYXRpb24+IFBlcnNwZWN0aXZlVHJh
bnNmb3JtT3BlcmF0aW9uOjpibGVuZChjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24qIGZyb20sIGRv
dWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvSWRlbnRpdHkpCitSZWY8VHJhbnNmb3JtT3BlcmF0
aW9uPiBQZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbjo6YmxlbmQoY29uc3QgVHJhbnNmb3Jt
T3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb0lkZW50aXR5KQog
ewogICAgIGlmIChmcm9tICYmICFmcm9tLT5pc1NhbWVUeXBlKCp0aGlzKSkKLSAgICAgICAgcmV0
dXJuIHRoaXM7CisgICAgICAgIHJldHVybiAqdGhpczsKICAgICAKICAgICBpZiAoYmxlbmRUb0lk
ZW50aXR5KSB7CiAgICAgICAgIGRvdWJsZSBwID0gZmxvYXRWYWx1ZUZvckxlbmd0aChtX3AsIDEp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jt
cy9QZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9QZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbi5oCmlu
ZGV4IDZjZTUwNjhkZGQzN2ZhOTIzZGRhMTU4M2QxNzE3OTcwMTczNzhkZTAuLmY4MGQ1YTMzNmI4
ZjZkNDg1MDQ3ZGNlNTIxZDc0MjRkNTI2ZDYxMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvUGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRp
b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1Bl
cnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uLmgKQEAgLTI5LDE5ICsyOSwyMCBAQAogI2luY2x1
ZGUgIkxlbmd0aC5oIgogI2luY2x1ZGUgIkxlbmd0aEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIlRy
YW5zZm9ybU9wZXJhdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBQZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbiBmaW5hbCA6IHB1
YmxpYyBUcmFuc2Zvcm1PcGVyYXRpb24gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFBlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uPiBjcmVhdGUoY29uc3QgTGVuZ3RoJiBwKQor
ICAgIHN0YXRpYyBSZWY8UGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb24+IGNyZWF0ZShjb25z
dCBMZW5ndGgmIHApCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBlcnNwZWN0
aXZlVHJhbnNmb3JtT3BlcmF0aW9uKHApKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
UGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb24ocCkpOwogICAgIH0KIAotICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxUcmFuc2Zvcm1PcGVyYXRpb24+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUKKyAg
ICB2aXJ0dWFsIFJlZjxUcmFuc2Zvcm1PcGVyYXRpb24+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUK
ICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGVyc3BlY3RpdmVUcmFuc2Zvcm1P
cGVyYXRpb24obV9wKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBlcnNwZWN0aXZl
VHJhbnNmb3JtT3BlcmF0aW9uKG1fcCkpOwogICAgIH0KIAogICAgIExlbmd0aCBwZXJzcGVjdGl2
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcDsgfQpAQCAtNjEsNyArNjIsNyBAQCBwcml2YXRlOgogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFRyYW5z
Zm9ybU9wZXJhdGlvbj4gYmxlbmQoY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9uKiBmcm9tLCBkb3Vi
bGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb0lkZW50aXR5ID0gZmFsc2UpIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgUmVmPFRyYW5zZm9ybU9wZXJhdGlvbj4gYmxlbmQoY29uc3QgVHJhbnNmb3JtT3Bl
cmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb0lkZW50aXR5ID0gZmFs
c2UpIG92ZXJyaWRlOwogCiAgICAgUGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb24oY29uc3Qg
TGVuZ3RoJiBwKQogICAgICAgICA6IG1fcChwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9Sb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9Sb3RhdGVUcmFu
c2Zvcm1PcGVyYXRpb24uY3BwCmluZGV4IGJjZWY4NWUwNTkyN2U1ZmJkYmU4ZDM5M2VjYTUyODRh
NjEzNDFiMjIuLjljOWFjOWY1YTViNzVmY2QyMmQyYjFjZGVkZmFiYTZmYmE3M2ZjNmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvUm90YXRl
VHJhbnNmb3JtT3BlcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90cmFuc2Zvcm1zL1JvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5jcHAKQEAgLTM2LDEwICsz
NiwxMCBAQCBib29sIFJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjo6b3BlcmF0b3I9PShjb25zdCBU
cmFuc2Zvcm1PcGVyYXRpb24mIG90aGVyKSBjb25zdAogICAgIHJldHVybiBtX3ggPT0gci5tX3gg
JiYgbV95ID09IHIubV95ICYmIG1feiA9PSByLm1feiAmJiBtX2FuZ2xlID09IHIubV9hbmdsZTsK
IH0KIAotUGFzc1JlZlB0cjxUcmFuc2Zvcm1PcGVyYXRpb24+IFJvdGF0ZVRyYW5zZm9ybU9wZXJh
dGlvbjo6YmxlbmQoY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jl
c3MsIGJvb2wgYmxlbmRUb0lkZW50aXR5KQorUmVmPFRyYW5zZm9ybU9wZXJhdGlvbj4gUm90YXRl
VHJhbnNmb3JtT3BlcmF0aW9uOjpibGVuZChjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24qIGZyb20s
IGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvSWRlbnRpdHkpCiB7CiAgICAgaWYgKGZyb20g
JiYgIWZyb20tPmlzU2FtZVR5cGUoKnRoaXMpKQotICAgICAgICByZXR1cm4gdGhpczsKKyAgICAg
ICAgcmV0dXJuICp0aGlzOwogICAgIAogICAgIGlmIChibGVuZFRvSWRlbnRpdHkpCiAgICAgICAg
IHJldHVybiBSb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZShtX3gsIG1feSwgbV96LCBt
X2FuZ2xlIC0gbV9hbmdsZSAqIHByb2dyZXNzLCBtX3R5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9Sb3RhdGVUcmFuc2Zvcm1PcGVy
YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvUm90
YXRlVHJhbnNmb3JtT3BlcmF0aW9uLmgKaW5kZXggOTE3Y2ZlOWQ3MmYzMWM1Y2EyMjZiNjliZDhi
MDE2NDliMDk2MjYzZS4uNzFkMmFiZDEyY2MyOGViODdmN2I5YzVkNDU3ZWZiN2Q1MTM1NGE1NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9S
b3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90cmFuc2Zvcm1zL1JvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oCkBAIC0yNiwyNCAr
MjYsMjUgQEAKICNkZWZpbmUgUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9uX2gKIAogI2luY2x1ZGUg
IlRyYW5zZm9ybU9wZXJhdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBSb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24gZmluYWwgOiBwdWJs
aWMgVHJhbnNmb3JtT3BlcmF0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxS
b3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24+IGNyZWF0ZShkb3VibGUgYW5nbGUsIE9wZXJhdGlvblR5
cGUgdHlwZSkKKyAgICBzdGF0aWMgUmVmPFJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbj4gY3JlYXRl
KGRvdWJsZSBhbmdsZSwgT3BlcmF0aW9uVHlwZSB0eXBlKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBSb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24oMCwgMCwgMSwgYW5nbGUsIHR5
cGUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUm90YXRlVHJhbnNmb3JtT3BlcmF0
aW9uKDAsIDAsIDEsIGFuZ2xlLCB0eXBlKSk7CiAgICAgfQogCi0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8Um90YXRlVHJhbnNmb3JtT3BlcmF0aW9uPiBjcmVhdGUoZG91YmxlIHgsIGRvdWJsZSB5LCBk
b3VibGUgeiwgZG91YmxlIGFuZ2xlLCBPcGVyYXRpb25UeXBlIHR5cGUpCisgICAgc3RhdGljIFJl
ZjxSb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24+IGNyZWF0ZShkb3VibGUgeCwgZG91YmxlIHksIGRv
dWJsZSB6LCBkb3VibGUgYW5nbGUsIE9wZXJhdGlvblR5cGUgdHlwZSkKICAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9uKHgsIHksIHosIGFu
Z2xlLCB0eXBlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJvdGF0ZVRyYW5zZm9y
bU9wZXJhdGlvbih4LCB5LCB6LCBhbmdsZSwgdHlwZSkpOwogICAgIH0KIAotICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxUcmFuc2Zvcm1PcGVyYXRpb24+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUKKyAg
ICB2aXJ0dWFsIFJlZjxUcmFuc2Zvcm1PcGVyYXRpb24+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUK
ICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUm90YXRlVHJhbnNmb3JtT3BlcmF0
aW9uKG1feCwgbV95LCBtX3osIG1fYW5nbGUsIG1fdHlwZSkpOworICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBSb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24obV94LCBtX3ksIG1feiwgbV9hbmds
ZSwgbV90eXBlKSk7CiAgICAgfQogCiAgICAgZG91YmxlIHgoKSBjb25zdCB7IHJldHVybiBtX3g7
IH0KQEAgLTY2LDcgKzY3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUcmFuc2Zvcm1PcGVyYXRpb24+IGJsZW5kKGNv
bnN0IFRyYW5zZm9ybU9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5k
VG9JZGVudGl0eSA9IGZhbHNlKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZjxUcmFuc2Zvcm1P
cGVyYXRpb24+IGJsZW5kKGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHBy
b2dyZXNzLCBib29sIGJsZW5kVG9JZGVudGl0eSA9IGZhbHNlKSBvdmVycmlkZTsKIAogICAgIFJv
dGF0ZVRyYW5zZm9ybU9wZXJhdGlvbihkb3VibGUgeCwgZG91YmxlIHksIGRvdWJsZSB6LCBkb3Vi
bGUgYW5nbGUsIE9wZXJhdGlvblR5cGUgdHlwZSkKICAgICAgICAgOiBtX3goeCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvU2NhbGVUcmFu
c2Zvcm1PcGVyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJh
bnNmb3Jtcy9TY2FsZVRyYW5zZm9ybU9wZXJhdGlvbi5jcHAKaW5kZXggYjQ5ZTBkMWQxY2QxNzE4
NGVlMTkzZjg1MDg5N2EzMDUwY2Q3N2ZiOC4uY2IyZmE3ZjRmOWZkZjk1ZDkzYjczZGYyYjIyMTU4
M2Q1ZDBkMWFkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dHJhbnNmb3Jtcy9TY2FsZVRyYW5zZm9ybU9wZXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9TY2FsZVRyYW5zZm9ybU9wZXJhdGlvbi5j
cHAKQEAgLTM0LDEwICszNCwxMCBAQCBib29sIFNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uOjpvcGVy
YXRvcj09KGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiYgb3RoZXIpIGNvbnN0CiAgICAgcmV0dXJu
IG1feCA9PSBzLm1feCAmJiBtX3kgPT0gcy5tX3kgJiYgbV96ID09IHMubV96OwogfQogCi1QYXNz
UmVmUHRyPFRyYW5zZm9ybU9wZXJhdGlvbj4gU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb246OmJsZW5k
KGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJs
ZW5kVG9JZGVudGl0eSkKK1JlZjxUcmFuc2Zvcm1PcGVyYXRpb24+IFNjYWxlVHJhbnNmb3JtT3Bl
cmF0aW9uOjpibGVuZChjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9n
cmVzcywgYm9vbCBibGVuZFRvSWRlbnRpdHkpCiB7CiAgICAgaWYgKGZyb20gJiYgIWZyb20tPmlz
U2FtZVR5cGUoKnRoaXMpKQotICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgcmV0dXJuICp0
aGlzOwogICAgIAogICAgIGlmIChibGVuZFRvSWRlbnRpdHkpCiAgICAgICAgIHJldHVybiBTY2Fs
ZVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKFdlYkNvcmU6OmJsZW5kKG1feCwgMS4wLCBwcm9n
cmVzcyksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFu
c2Zvcm1zL1NjYWxlVHJhbnNmb3JtT3BlcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90cmFuc2Zvcm1zL1NjYWxlVHJhbnNmb3JtT3BlcmF0aW9uLmgKaW5kZXggNTM4
NTMzNTMzOGViOWZjZTA2OGQ0ZDc4MDNiOTY5Y2RmNWMzM2U4YS4uODFkZDU0OWNhZWI0MjIzMzMy
M2E1OTY4ZWUxYjE5MzZhNTIxMWNjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9TY2FsZVRyYW5zZm9ybU9wZXJhdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvU2NhbGVUcmFuc2Zvcm1P
cGVyYXRpb24uaApAQCAtMjYsMjQgKzI2LDI1IEBACiAjZGVmaW5lIFNjYWxlVHJhbnNmb3JtT3Bl
cmF0aW9uX2gKIAogI2luY2x1ZGUgIlRyYW5zZm9ybU9wZXJhdGlvbi5oIgorI2luY2x1ZGUgPHd0
Zi9SZWYuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTY2FsZVRyYW5zZm9ybU9w
ZXJhdGlvbiBmaW5hbCA6IHB1YmxpYyBUcmFuc2Zvcm1PcGVyYXRpb24gewogcHVibGljOgotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uPiBjcmVhdGUoZG91Ymxl
IHN4LCBkb3VibGUgc3ksIE9wZXJhdGlvblR5cGUgdHlwZSkKKyAgICBzdGF0aWMgUmVmPFNjYWxl
VHJhbnNmb3JtT3BlcmF0aW9uPiBjcmVhdGUoZG91YmxlIHN4LCBkb3VibGUgc3ksIE9wZXJhdGlv
blR5cGUgdHlwZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2NhbGVUcmFu
c2Zvcm1PcGVyYXRpb24oc3gsIHN5LCAxLCB0eXBlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uKHN4LCBzeSwgMSwgdHlwZSkpOwogICAgIH0K
IAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uPiBjcmVhdGUo
ZG91YmxlIHN4LCBkb3VibGUgc3ksIGRvdWJsZSBzeiwgT3BlcmF0aW9uVHlwZSB0eXBlKQorICAg
IHN0YXRpYyBSZWY8U2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24+IGNyZWF0ZShkb3VibGUgc3gsIGRv
dWJsZSBzeSwgZG91YmxlIHN6LCBPcGVyYXRpb25UeXBlIHR5cGUpCiAgICAgewotICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uKHN4LCBzeSwgc3osIHR5
cGUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2NhbGVUcmFuc2Zvcm1PcGVyYXRp
b24oc3gsIHN5LCBzeiwgdHlwZSkpOwogICAgIH0KIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxU
cmFuc2Zvcm1PcGVyYXRpb24+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICB2aXJ0dWFsIFJl
ZjxUcmFuc2Zvcm1PcGVyYXRpb24+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24obV94LCBtX3ks
IG1feiwgbV90eXBlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNjYWxlVHJhbnNm
b3JtT3BlcmF0aW9uKG1feCwgbV95LCBtX3osIG1fdHlwZSkpOwogICAgIH0KIAogICAgIGRvdWJs
ZSB4KCkgY29uc3QgeyByZXR1cm4gbV94OyB9CkBAIC02NSw3ICs2Niw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VHJh
bnNmb3JtT3BlcmF0aW9uPiBibGVuZChjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24qIGZyb20sIGRv
dWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvSWRlbnRpdHkgPSBmYWxzZSkgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCBSZWY8VHJhbnNmb3JtT3BlcmF0aW9uPiBibGVuZChjb25zdCBUcmFuc2Zvcm1P
cGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvSWRlbnRpdHkgPSBm
YWxzZSkgb3ZlcnJpZGU7CiAKICAgICBTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbihkb3VibGUgc3gs
IGRvdWJsZSBzeSwgZG91YmxlIHN6LCBPcGVyYXRpb25UeXBlIHR5cGUpCiAgICAgICAgIDogbV94
KHN4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNm
b3Jtcy9Ta2V3VHJhbnNmb3JtT3BlcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RyYW5zZm9ybXMvU2tld1RyYW5zZm9ybU9wZXJhdGlvbi5jcHAKaW5kZXggYTQ1
ZGVkYWRlYmQ2NjViMDdmNzQ1M2Y4NTdjNTA2NzE4NjQyYzMyYy4uMGI2MWY5MDg0MGE4MDVhY2E0
N2ZmNWU2MzdmMWQ0ODk3ZjUzOGU1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9Ta2V3VHJhbnNmb3JtT3BlcmF0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1NrZXdUcmFuc2Zvcm1P
cGVyYXRpb24uY3BwCkBAIC0zNCwxMCArMzQsMTAgQEAgYm9vbCBTa2V3VHJhbnNmb3JtT3BlcmF0
aW9uOjpvcGVyYXRvcj09KGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiYgb3RoZXIpIGNvbnN0CiAg
ICAgcmV0dXJuIG1fYW5nbGVYID09IHMubV9hbmdsZVggJiYgbV9hbmdsZVkgPT0gcy5tX2FuZ2xl
WTsKIH0KIAotUGFzc1JlZlB0cjxUcmFuc2Zvcm1PcGVyYXRpb24+IFNrZXdUcmFuc2Zvcm1PcGVy
YXRpb246OmJsZW5kKGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dy
ZXNzLCBib29sIGJsZW5kVG9JZGVudGl0eSkKK1JlZjxUcmFuc2Zvcm1PcGVyYXRpb24+IFNrZXdU
cmFuc2Zvcm1PcGVyYXRpb246OmJsZW5kKGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiogZnJvbSwg
ZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9JZGVudGl0eSkKIHsKICAgICBpZiAoZnJvbSAm
JiAhZnJvbS0+aXNTYW1lVHlwZSgqdGhpcykpCi0gICAgICAgIHJldHVybiB0aGlzOworICAgICAg
ICByZXR1cm4gKnRoaXM7CiAgICAgCiAgICAgaWYgKGJsZW5kVG9JZGVudGl0eSkKICAgICAgICAg
cmV0dXJuIFNrZXdUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZShXZWJDb3JlOjpibGVuZChtX2Fu
Z2xlWCwgMC4wLCBwcm9ncmVzcyksIFdlYkNvcmU6OmJsZW5kKG1fYW5nbGVZLCAwLjAsIHByb2dy
ZXNzKSwgbV90eXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RyYW5zZm9ybXMvU2tld1RyYW5zZm9ybU9wZXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9Ta2V3VHJhbnNmb3JtT3BlcmF0aW9uLmgKaW5k
ZXggMWRlMDgyMGQ3NmFlMzBhOWIyODZiN2QwOTMzMzlmZTYzN2FkMzc2OC4uYjUzNDU4ZmNiZWRh
NWE2NmEwYmIzODk3MTVkNzBmYTQxNjMzY2JjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9Ta2V3VHJhbnNmb3JtT3BlcmF0aW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9Ta2V3VHJhbnNm
b3JtT3BlcmF0aW9uLmgKQEAgLTI2LDE5ICsyNiwyMCBAQAogI2RlZmluZSBTa2V3VHJhbnNmb3Jt
T3BlcmF0aW9uX2gKIAogI2luY2x1ZGUgIlRyYW5zZm9ybU9wZXJhdGlvbi5oIgorI2luY2x1ZGUg
PHd0Zi9SZWYuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTa2V3VHJhbnNmb3Jt
T3BlcmF0aW9uIGZpbmFsIDogcHVibGljIFRyYW5zZm9ybU9wZXJhdGlvbiB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8U2tld1RyYW5zZm9ybU9wZXJhdGlvbj4gY3JlYXRlKGRvdWJs
ZSBhbmdsZVgsIGRvdWJsZSBhbmdsZVksIE9wZXJhdGlvblR5cGUgdHlwZSkKKyAgICBzdGF0aWMg
UmVmPFNrZXdUcmFuc2Zvcm1PcGVyYXRpb24+IGNyZWF0ZShkb3VibGUgYW5nbGVYLCBkb3VibGUg
YW5nbGVZLCBPcGVyYXRpb25UeXBlIHR5cGUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFNrZXdUcmFuc2Zvcm1PcGVyYXRpb24oYW5nbGVYLCBhbmdsZVksIHR5cGUpKTsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2tld1RyYW5zZm9ybU9wZXJhdGlvbihhbmdsZVgs
IGFuZ2xlWSwgdHlwZSkpOwogICAgIH0KIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUcmFuc2Zv
cm1PcGVyYXRpb24+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICB2aXJ0dWFsIFJlZjxUcmFu
c2Zvcm1PcGVyYXRpb24+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgU2tld1RyYW5zZm9ybU9wZXJhdGlvbihtX2FuZ2xlWCwgbV9hbmds
ZVksIG1fdHlwZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTa2V3VHJhbnNmb3Jt
T3BlcmF0aW9uKG1fYW5nbGVYLCBtX2FuZ2xlWSwgbV90eXBlKSk7CiAgICAgfQogCiAgICAgZG91
YmxlIGFuZ2xlWCgpIGNvbnN0IHsgcmV0dXJuIG1fYW5nbGVYOyB9CkBAIC01OSw3ICs2MCw3IEBA
IHByaXZhdGU6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8VHJhbnNmb3JtT3BlcmF0aW9uPiBibGVuZChjb25zdCBUcmFuc2Zvcm1PcGVyYXRp
b24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvSWRlbnRpdHkgPSBmYWxzZSkg
b3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWY8VHJhbnNmb3JtT3BlcmF0aW9uPiBibGVuZChjb25z
dCBUcmFuc2Zvcm1PcGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRv
SWRlbnRpdHkgPSBmYWxzZSkgb3ZlcnJpZGU7CiAgICAgCiAgICAgU2tld1RyYW5zZm9ybU9wZXJh
dGlvbihkb3VibGUgYW5nbGVYLCBkb3VibGUgYW5nbGVZLCBPcGVyYXRpb25UeXBlIHR5cGUpCiAg
ICAgICAgIDogbV9hbmdsZVgoYW5nbGVYKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1PcGVyYXRpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9uLmgK
aW5kZXggYzU3M2VlZmU3MTM2MDZkOWY4M2U5ZGI3OWY3OGIyYmRjMzA1Y2FkNS4uZDNlYjAzNWVk
M2FjNDY4N2M4M2M1M2FhZTMxZjhhZWVlYjU2ZTkwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1PcGVyYXRpb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybU9w
ZXJhdGlvbi5oCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpbmNsdWRlICJGbG9hdFNpemUuaCIKICNp
bmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgogI2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4KIApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6
CiAKICAgICB2aXJ0dWFsIH5UcmFuc2Zvcm1PcGVyYXRpb24oKSB7IH0KIAotICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxUcmFuc2Zvcm1PcGVyYXRpb24+IGNsb25lKCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgUmVmPFRyYW5zZm9ybU9wZXJhdGlvbj4gY2xvbmUoKSBjb25zdCA9IDA7CiAKICAgICB2
aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24mKSBjb25zdCA9
IDA7CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiYgbykgY29u
c3QgeyByZXR1cm4gISgqdGhpcyA9PSBvKTsgfQpAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAg
ICAgLy8gUmV0dXJuIHRydWUgaWYgdGhlIGJvcmRlckJveFNpemUgd2FzIHVzZWQgaW4gdGhlIGNv
bXB1dGF0aW9uLCBmYWxzZSBvdGhlcndpc2UuCiAgICAgdmlydHVhbCBib29sIGFwcGx5KFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiwgY29uc3QgRmxvYXRTaXplJiBib3JkZXJCb3hTaXplKSBjb25zdCA9
IDA7CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VHJhbnNmb3JtT3BlcmF0aW9uPiBibGVuZChj
b25zdCBUcmFuc2Zvcm1PcGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVu
ZFRvSWRlbnRpdHkgPSBmYWxzZSkgPSAwOworICAgIHZpcnR1YWwgUmVmPFRyYW5zZm9ybU9wZXJh
dGlvbj4gYmxlbmQoY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jl
c3MsIGJvb2wgYmxlbmRUb0lkZW50aXR5ID0gZmFsc2UpID0gMDsKIAogICAgIHZpcnR1YWwgT3Bl
cmF0aW9uVHlwZSB0eXBlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpc1NhbWVUeXBl
KGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiYpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5z
Zm9ybU9wZXJhdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJh
bnNmb3Jtcy9UcmFuc2Zvcm1PcGVyYXRpb25zLmNwcAppbmRleCA1MmVjNmY1YmNjODJiNTc0ZmZj
NjNhM2QzNjVlNzY5M2YxMmY1Njk1Li4xNDM1YjI3MzdmN2JmNDdjNDUwMDI5MzMyOTNkZTI1M2Nm
OWZlMjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFu
c2Zvcm1zL1RyYW5zZm9ybU9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9ucy5jcHAKQEAgLTgyLDcg
KzgyLDcgQEAgVHJhbnNmb3JtT3BlcmF0aW9ucyBUcmFuc2Zvcm1PcGVyYXRpb25zOjpibGVuZEJ5
TWF0Y2hpbmdPcGVyYXRpb25zKGNvbnN0IFRyYW5zZm8KICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgc2l6ZTsgaSsrKSB7CiAgICAgICAgIFJlZlB0cjxUcmFuc2Zvcm1PcGVyYXRpb24+IGZy
b21PcGVyYXRpb24gPSAoaSA8IGZyb21TaXplKSA/IGZyb20ub3BlcmF0aW9ucygpW2ldLmdldCgp
IDogbnVsbHB0cjsKICAgICAgICAgUmVmUHRyPFRyYW5zZm9ybU9wZXJhdGlvbj4gdG9PcGVyYXRp
b24gPSAoaSA8IHRvU2l6ZSkgPyBvcGVyYXRpb25zKClbaV0uZ2V0KCkgOiBudWxscHRyOwotICAg
ICAgICBSZWZQdHI8VHJhbnNmb3JtT3BlcmF0aW9uPiBibGVuZGVkT3BlcmF0aW9uID0gdG9PcGVy
YXRpb24gPyB0b09wZXJhdGlvbi0+YmxlbmQoZnJvbU9wZXJhdGlvbi5nZXQoKSwgcHJvZ3Jlc3Mp
IDogKGZyb21PcGVyYXRpb24gPyBmcm9tT3BlcmF0aW9uLT5ibGVuZChudWxscHRyLCBwcm9ncmVz
cywgdHJ1ZSkgOiBudWxscHRyKTsKKyAgICAgICAgUmVmUHRyPFRyYW5zZm9ybU9wZXJhdGlvbj4g
YmxlbmRlZE9wZXJhdGlvbiA9IHRvT3BlcmF0aW9uID8gdG9PcGVyYXRpb24tPmJsZW5kKGZyb21P
cGVyYXRpb24uZ2V0KCksIHByb2dyZXNzKSA6IChmcm9tT3BlcmF0aW9uID8gUmVmUHRyPFRyYW5z
Zm9ybU9wZXJhdGlvbj4oZnJvbU9wZXJhdGlvbi0+YmxlbmQobnVsbHB0ciwgcHJvZ3Jlc3MsIHRy
dWUpKSA6IG51bGxwdHIpOwogICAgICAgICBpZiAoYmxlbmRlZE9wZXJhdGlvbikKICAgICAgICAg
ICAgIHJlc3VsdC5vcGVyYXRpb25zKCkuYXBwZW5kKGJsZW5kZWRPcGVyYXRpb24pOwogICAgICAg
ICBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Ry
YW5zZm9ybXMvVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9u
LmNwcAppbmRleCA5MGY2MmJiZDU2YzkzMzg1NTVkYjUwYTA2N2M5NGI3YzU1ZjIyNTI4Li4xMDFk
YzRmZjY4MWM1MGZkZDUzYWRjZDY2ODdmZDdhMzZkYmEzM2MzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zbGF0ZVRyYW5zZm9ybU9w
ZXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNm
b3Jtcy9UcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24uY3BwCkBAIC0zMywxMCArMzMsMTAgQEAg
Ym9vbCBUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb246Om9wZXJhdG9yPT0oY29uc3QgVHJhbnNm
b3JtT3BlcmF0aW9uJiBvdGhlcikgY28KICAgICByZXR1cm4gbV94ID09IHQubV94ICYmIG1feSA9
PSB0Lm1feSAmJiBtX3ogPT0gdC5tX3o7CiB9CiAKLVBhc3NSZWZQdHI8VHJhbnNmb3JtT3BlcmF0
aW9uPiBUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb246OmJsZW5kKGNvbnN0IFRyYW5zZm9ybU9w
ZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9JZGVudGl0eSkKK1Jl
ZjxUcmFuc2Zvcm1PcGVyYXRpb24+IFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjo6YmxlbmQo
Y29uc3QgVHJhbnNmb3JtT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxl
bmRUb0lkZW50aXR5KQogewogICAgIGlmIChmcm9tICYmICFmcm9tLT5pc1NhbWVUeXBlKCp0aGlz
KSkKLSAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgIHJldHVybiAqdGhpczsKIAogICAgIExl
bmd0aCB6ZXJvTGVuZ3RoKDAsIEZpeGVkKTsKICAgICBpZiAoYmxlbmRUb0lkZW50aXR5KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFu
c2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RyYW5zZm9ybXMvVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uLmgKaW5kZXggMGU1Mjlm
OTQxZjc2NzJjMDg2MGQxMGI0MDY2ZWUzNThkNzU2YTdhYy4uZTczOGMzZWVhN2MxYjdlNzRlYjRh
NTU5OGFmMmU1NDYzMDZiMjI2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zbGF0ZVRyYW5z
Zm9ybU9wZXJhdGlvbi5oCkBAIC0yOCwyNCArMjgsMjUgQEAKICNpbmNsdWRlICJMZW5ndGguaCIK
ICNpbmNsdWRlICJMZW5ndGhGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJUcmFuc2Zvcm1PcGVyYXRp
b24uaCIKKyNpbmNsdWRlIDx3dGYvUmVmLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uIGZpbmFsIDogcHVibGljIFRyYW5zZm9ybU9w
ZXJhdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8VHJhbnNsYXRlVHJhbnNm
b3JtT3BlcmF0aW9uPiBjcmVhdGUoY29uc3QgTGVuZ3RoJiB0eCwgY29uc3QgTGVuZ3RoJiB0eSwg
T3BlcmF0aW9uVHlwZSB0eXBlKQorICAgIHN0YXRpYyBSZWY8VHJhbnNsYXRlVHJhbnNmb3JtT3Bl
cmF0aW9uPiBjcmVhdGUoY29uc3QgTGVuZ3RoJiB0eCwgY29uc3QgTGVuZ3RoJiB0eSwgT3BlcmF0
aW9uVHlwZSB0eXBlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBUcmFuc2xh
dGVUcmFuc2Zvcm1PcGVyYXRpb24odHgsIHR5LCBMZW5ndGgoMCwgRml4ZWQpLCB0eXBlKSk7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbih0
eCwgdHksIExlbmd0aCgwLCBGaXhlZCksIHR5cGUpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24+IGNyZWF0ZShjb25zdCBMZW5ndGgm
IHR4LCBjb25zdCBMZW5ndGgmIHR5LCBjb25zdCBMZW5ndGgmIHR6LCBPcGVyYXRpb25UeXBlIHR5
cGUpCisgICAgc3RhdGljIFJlZjxUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24+IGNyZWF0ZShj
b25zdCBMZW5ndGgmIHR4LCBjb25zdCBMZW5ndGgmIHR5LCBjb25zdCBMZW5ndGgmIHR6LCBPcGVy
YXRpb25UeXBlIHR5cGUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRyYW5z
bGF0ZVRyYW5zZm9ybU9wZXJhdGlvbih0eCwgdHksIHR6LCB0eXBlKSk7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbih0eCwgdHksIHR6LCB0
eXBlKSk7CiAgICAgfQogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFRyYW5zZm9ybU9wZXJhdGlv
bj4gY2xvbmUoKSBjb25zdCBvdmVycmlkZQorICAgIHZpcnR1YWwgUmVmPFRyYW5zZm9ybU9wZXJh
dGlvbj4gY2xvbmUoKSBjb25zdCBvdmVycmlkZQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24obV94LCBtX3ksIG1feiwgbV90eXBl
KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJh
dGlvbihtX3gsIG1feSwgbV96LCBtX3R5cGUpKTsKICAgICB9CiAKICAgICBkb3VibGUgeChjb25z
dCBGbG9hdFNpemUmIGJvcmRlckJveFNpemUpIGNvbnN0IHsgcmV0dXJuIGZsb2F0VmFsdWVGb3JM
ZW5ndGgobV94LCBib3JkZXJCb3hTaXplLndpZHRoKCkpOyB9CkBAIC03MCw3ICs3MSw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIHJldHVybiBtX3guaXNQZXJjZW50KCkgfHwgbV95LmlzUGVyY2VudCgp
OwogICAgIH0KIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUcmFuc2Zvcm1PcGVyYXRpb24+IGJs
ZW5kKGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29s
IGJsZW5kVG9JZGVudGl0eSA9IGZhbHNlKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZjxUcmFu
c2Zvcm1PcGVyYXRpb24+IGJsZW5kKGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiogZnJvbSwgZG91
YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9JZGVudGl0eSA9IGZhbHNlKSBvdmVycmlkZTsKIAog
ICAgIFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbihjb25zdCBMZW5ndGgmIHR4LCBjb25zdCBM
ZW5ndGgmIHR5LCBjb25zdCBMZW5ndGgmIHR6LCBPcGVyYXRpb25UeXBlIHR5cGUpCiAgICAgICAg
IDogbV94KHR4KQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>