<?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>126817</bug_id>
          
          <creation_ts>2014-01-11 10:48:30 -0800</creation_ts>
          <short_desc>Clean up iterator filter / iterator range code</short_desc>
          <delta_ts>2014-01-11 11:13:51 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>bunhere</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>rakuco</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>966805</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-01-11 10:48:30 -0800</bug_when>
    <thetext>Clean up iterator filter / iterator range code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>966808</commentid>
    <comment_count>1</comment_count>
      <attachid>220938</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-01-11 11:03:03 -0800</bug_when>
    <thetext>Created attachment 220938
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>966812</commentid>
    <comment_count>2</comment_count>
      <attachid>220938</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-01-11 11:08:20 -0800</bug_when>
    <thetext>Comment on attachment 220938
Patch

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

Shouldn&apos;t you add the necessary using declarations as well?

&gt; LayoutTests/ChangeLog:14
&gt; +2014-01-06  Sam Weinig  &lt;sam@webkit.org&gt;
&gt; +
&gt; +        [JS] Should be able to create a promise by calling the Promise constructor as a function
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=126561
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        * js/dom/Promise-types-expected.txt:
&gt; +        * js/dom/Promise-types.html:
&gt; +        Add test for using calling a Promise constructor as a function.
&gt; +
&gt;  2014-01-10  Commit Queue  &lt;commit-queue@webkit.org&gt;
&gt;  
&gt;          Unreviewed, rolling out r161702.

Please don&apos;t commit this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>966814</commentid>
    <comment_count>3</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-01-11 11:13:51 -0800</bug_when>
    <thetext>Committed r161770: &lt;http://trac.webkit.org/changeset/161770&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220938</attachid>
            <date>2014-01-11 11:03:03 -0800</date>
            <delta_ts>2014-01-11 11:08:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-126817-20140111110303.patch</filename>
            <type>text/plain</type>
            <size>32463</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxNjE3NjgpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBACisyMDE0LTAxLTExICBTYW0gV2VpbmlnICA8c2FtQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgQ2xlYW4gdXAgaXRlcmF0b3IgZmlsdGVyIC8gaXRlcmF0b3Ig
cmFuZ2UgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTI2ODE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgLSBSZW5hbWVzIEl0ZXJhdG9yUGFpciB0byBJdGVyYXRvclJhbmdlLgorICAgICAgICAtIFNw
bGl0cyBGaWx0ZXJJdGVyYXRvciBpbnRvIEZpbHRlckl0ZXJhdG9yICh3aGljaCBub3cgb25seSBm
aWx0ZXJzKSBhbmQKKyAgICAgICAgICBUcmFuc2Zvcm1JdGVyYXRvciAod2hpY2ggZG9lcyB0aGUg
dHJhbnNmb3JtIHBhcnQgb2YgdGhlIG9sZCBGaWx0ZXJJdGVyYXRvcikuCisgICAgICAgICAgTW92
ZSBib3RoIG9mIHRoZXNlIHRvIEl0ZXJhdG9yQWRhcHRvcnMuaAorCisgICAgICAgICogR05VbWFr
ZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBXVEYudmN4cHJvai9XVEYudmN4cHJvajoKKyAgICAg
ICAgKiBXVEYudmN4cHJvai9XVEYudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIFdURi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3RzLnR4dDoKKyAg
ICAgICAgKiB3dGYvRmlsdGVySXRlcmF0b3IuaDogUmVtb3ZlZC4KKyAgICAgICAgQWRkL3JlbW92
ZSBmaWxlcy4KKworICAgICAgICAqIHd0Zi9IYXNoTWFwLmg6CisgICAgICAgIChXVEY6Okhhc2hN
YXA6OmtleXMpOgorICAgICAgICAoV1RGOjpIYXNoTWFwOjp2YWx1ZXMpOgorICAgICAgICAqIHd0
Zi9SZWZQdHJIYXNoTWFwLmg6CisgICAgICAgIFVwZGF0ZSBmb3IgcmVuYW1lIHRvIEl0ZXJhdG9y
UmFuZ2UuIFNpbXBsaWZ5IGJ5IHVzaW5nIG1ha2VJdGVyYXRvclJhbmdlKCkuCisKKyAgICAgICAg
KiB3dGYvSXRlcmF0b3JBZGFwdG9ycy5oOiBDb3BpZWQgZnJvbSB3dGYvRmlsdGVySXRlcmF0b3Iu
aC4KKyAgICAgICAgKFdURjo6RmlsdGVySXRlcmF0b3I6OkZpbHRlckl0ZXJhdG9yKToKKyAgICAg
ICAgKFdURjo6RmlsdGVySXRlcmF0b3I6Om9wZXJhdG9yKik6CisgICAgICAgIChXVEY6Om1ha2VG
aWx0ZXJJdGVyYXRvcik6CisgICAgICAgIChXVEY6OlRyYW5zZm9ybUl0ZXJhdG9yOjpUcmFuc2Zv
cm1JdGVyYXRvcik6CisgICAgICAgIChXVEY6OlRyYW5zZm9ybUl0ZXJhdG9yOjpvcGVyYXRvcisr
KToKKyAgICAgICAgKFdURjo6VHJhbnNmb3JtSXRlcmF0b3I6Om9wZXJhdG9yKik6CisgICAgICAg
IChXVEY6OlRyYW5zZm9ybUl0ZXJhdG9yOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdURjo6VHJh
bnNmb3JtSXRlcmF0b3I6Om9wZXJhdG9yIT0pOgorICAgICAgICAoV1RGOjptYWtlVHJhbnNmb3Jt
SXRlcmF0b3IpOgorICAgICAgICBTcGxpdCB1cCBmaWx0ZXJpbmcgYW5kIHRyYW5zZm9ybWluZy4g
QWRkIG1ha2VGaWx0ZXJJdGVyYXRvcigpIGFuZCBtYWtlVHJhbnNmb3JtSXRlcmF0b3IoKQorICAg
ICAgICBoZWxwZXJzLgorCisgICAgICAgICogd3RmL0l0ZXJhdG9yUGFpci5oOiBSZW1vdmVkLgor
ICAgICAgICAqIHd0Zi9JdGVyYXRvclJhbmdlLmg6IENvcGllZCBmcm9tIHd0Zi9JdGVyYXRvclBh
aXIuaC4KKyAgICAgICAgKFdURjo6SXRlcmF0b3JSYW5nZTo6SXRlcmF0b3JSYW5nZSk6CisgICAg
ICAgIChXVEY6Om1ha2VJdGVyYXRvclJhbmdlKToKKyAgICAgICAgUmVuYW1lZCB0byBJdGVyYXRv
clJhbmdlIGFuZCBhZGRzIG1ha2VJdGVyYXRvclJhbmdlKCkgaGVscGVyLgorCiAyMDE0LTAxLTEw
ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgQ2xlYW4gdXAg
YXJjaGl0ZWN0dXJlcyBpbiB4Y2NvbmZpZyBmaWxlcwpJbmRleDogU291cmNlL1dURi9HTlVtYWtl
ZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvR05VbWFrZWZpbGUubGlzdC5h
bQkocmV2aXNpb24gMTYxNzUwKQorKysgU291cmNlL1dURi9HTlVtYWtlZmlsZS5saXN0LmFtCSh3
b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw2IEBAIHd0Zl9zb3VyY2VzICs9IFwKICAgICBTb3Vy
Y2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9GaWxlUHJp
bnRTdHJlYW0uY3BwIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9GaWxlUHJpbnRTdHJlYW0uaCBcCi0g
ICAgU291cmNlL1dURi93dGYvRmlsdGVySXRlcmF0b3IuaCBcCiAgICAgU291cmNlL1dURi93dGYv
RmxpcEJ5dGVzLmggXAogICAgIFNvdXJjZS9XVEYvd3RmL0ZvcndhcmQuaCBcCiAgICAgU291cmNl
L1dURi93dGYvRnVuY3Rpb25EaXNwYXRjaGVyLmNwcCBcCkBAIC03Myw3ICs3Miw4IEBAIHd0Zl9z
b3VyY2VzICs9IFwKICAgICBTb3VyY2UvV1RGL3d0Zi9IZXhOdW1iZXIuaCBcCiAgICAgU291cmNl
L1dURi93dGYvSW5saW5lQVNNLmggXAogICAgIFNvdXJjZS9XVEYvd3RmL0luc2VydGlvbi5oIFwK
LSAgICBTb3VyY2UvV1RGL3d0Zi9JdGVyYXRvclBhaXIuaCBcCisgICAgU291cmNlL1dURi93dGYv
SXRlcmF0b3JBZGFwdG9ycy5oIFwKKyAgICBTb3VyY2UvV1RGL3d0Zi9JdGVyYXRvclJhbmdlLmgg
XAogICAgIFNvdXJjZS9XVEYvd3RmL0xpc3REdW1wLmggXAogICAgIFNvdXJjZS9XVEYvd3RmL0xp
c3RIYXNoU2V0LmggXAogICAgIFNvdXJjZS9XVEYvd3RmL0xvY2tlci5oIFwKSW5kZXg6IFNvdXJj
ZS9XVEYvV1RGLnZjeHByb2ovV1RGLnZjeHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9X
VEYudmN4cHJvai9XVEYudmN4cHJvagkocmV2aXNpb24gMTYxNzUwKQorKysgU291cmNlL1dURi9X
VEYudmN4cHJvai9XVEYudmN4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTk3LDcgKzE5Nyw2IEBA
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcRmFzdE1hbGxvYy5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXEZlYXR1cmVEZWZpbmVzLmgiIC8+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlx3dGZcRmlsZVByaW50U3RyZWFtLmgiIC8+Ci0gICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlx3dGZcRmlsdGVySXRlcmF0b3IuaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHd0ZlxGbGlwQnl0ZXMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHd0ZlxGb3J3YXJkLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcRnVuY3Rp
b25EaXNwYXRjaGVyLmgiIC8+CkBAIC0yMTcsNyArMjE2LDggQEAKICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHd0ZlxIYXNoVGFibGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHd0ZlxIYXNoVHJhaXRzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcSGV4
TnVtYmVyLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcSXRlcmF0b3JQYWly
LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcSXRlcmF0b3JBZGFwdG9ycy5o
IiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXEl0ZXJhdG9yUmFuZ2UuaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxMaXN0SGFzaFNldC5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXExvY2tlci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5cd3RmXE1haW5UaHJlYWQuaCIgLz4KSW5kZXg6IFNvdXJjZS9XVEYvV1RGLnZjeHBy
b2ovV1RGLnZjeHByb2ouZmlsdGVycwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL1dURi52Y3hw
cm9qL1dURi52Y3hwcm9qLmZpbHRlcnMJKHJldmlzaW9uIDE2MTc1MCkKKysrIFNvdXJjZS9XVEYv
V1RGLnZjeHByb2ovV1RGLnZjeHByb2ouZmlsdGVycwkod29ya2luZyBjb3B5KQpAQCAtNDM1LDkg
KzQzNSw2IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcRmlsZVByaW50U3RyZWFt
LmgiPgogICAgICAgPEZpbHRlcj53dGY8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KLSAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxGaWx0ZXJJdGVyYXRvci5oIj4KLSAgICAgIDxGaWx0
ZXI+d3RmPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlx3dGZcRm9yd2FyZC5oIj4KICAgICAgIDxGaWx0ZXI+d3RmPC9GaWx0ZXI+CiAgICAgPC9D
bEluY2x1ZGU+CkBAIC00NzQsNyArNDcxLDEwIEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
Llx3dGZcSGV4TnVtYmVyLmgiPgogICAgICAgPEZpbHRlcj53dGY8L0ZpbHRlcj4KICAgICA8L0Ns
SW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxJdGVyYXRvclBhaXIuaCI+
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcSXRlcmF0b3JBZGFwdG9ycy5oIj4KKyAg
ICAgIDxGaWx0ZXI+d3RmPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlx3dGZcSXRlcmF0b3JSYW5nZS5oIj4KICAgICAgIDxGaWx0ZXI+d3RmPC9G
aWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZc
TGlzdEhhc2hTZXQuaCI+CkluZGV4OiBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDE2MTc1MCkKKysrIFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTY1LDggKzY1LDggQEAKIAkJMkNERUQwRUYx
ODExNUMzODAwNERCQTcwIC8qIFJ1bkxvb3BDRi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQ0RFRDBFRTE4MTE1QzM4MDA0REJBNzAgLyogUnVuTG9v
cENGLmNwcCAqLzsgfTsKIAkJMkNERUQwRjMxODExNUM4NTAwNERCQTcwIC8qIFJ1bkxvb3AuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkNERUQwRjEx
ODExNUM4NTAwNERCQTcwIC8qIFJ1bkxvb3AuY3BwICovOyB9OwogCQkyQ0RFRDBGNDE4MTE1Qzg1
MDA0REJBNzAgLyogUnVuTG9vcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMkNERUQwRjIxODExNUM4NTAwNERCQTcwIC8qIFJ1bkxvb3AuaCAqLzsgfTsK
LQkJN0NERDdGRjgxODZEMjkxRTAwNzQzM0NEIC8qIEZpbHRlckl0ZXJhdG9yLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0REN0ZGNzE4NkQyOTFFMDA3
NDMzQ0QgLyogRmlsdGVySXRlcmF0b3IuaCAqLzsgfTsKLQkJN0NERDdGRkExODZEMkE1NDAwNzQz
M0NEIC8qIEl0ZXJhdG9yUGFpci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0NERDdGRjkxODZEMkE1NDAwNzQzM0NEIC8qIEl0ZXJhdG9yUGFpci5oICov
OyB9OworCQk3Q0REN0ZGODE4NkQyOTFFMDA3NDMzQ0QgLyogSXRlcmF0b3JBZGFwdG9ycy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NERDdGRjcxODZE
MjkxRTAwNzQzM0NEIC8qIEl0ZXJhdG9yQWRhcHRvcnMuaCAqLzsgfTsKKwkJN0NERDdGRkExODZE
MkE1NDAwNzQzM0NEIC8qIEl0ZXJhdG9yUmFuZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDREQ3RkY5MTg2RDJBNTQwMDc0MzNDRCAvKiBJdGVyYXRv
clJhbmdlLmggKi87IH07CiAJCTdFMjlDMzNFMTVGRkQ3OUIwMDUxNkQ2MSAvKiBPYmpjUnVudGlt
ZUV4dHJhcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0UyOUMzM0QxNUZGRDc5QjAwNTE2RDYxIC8qIE9iamNSdW50aW1lRXh0cmFzLmggKi87IH07CiAJ
CTgxMzQwMTM4MTVCMDkyRkQwMDFGRjBCOCAvKiBCYXNlNjQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODEzNDAxMzYxNUIwOTJGRDAwMUZGMEI4IC8q
IEJhc2U2NC5jcHAgKi87IH07CiAJCTgxMzQwMTM5MTVCMDkyRkQwMDFGRjBCOCAvKiBCYXNlNjQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgxMzQwMTM3
MTVCMDkyRkQwMDFGRjBCOCAvKiBCYXNlNjQuaCAqLzsgfTsKQEAgLTMzOSw4ICszMzksOCBAQAog
CQk1RDI0N0I3MDE0Njg5QzQ3MDBFNzhCNzYgLyogRGVidWdSZWxlYXNlLnhjY29uZmlnICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZp
ZzsgcGF0aCA9IERlYnVnUmVsZWFzZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNUQyNDdCNzMxNDY4OUM0NzAwRTc4Qjc2IC8qIFdURi54Y2NvbmZpZyAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBh
dGggPSBXVEYueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1NDFDQUY0
MTYzMERCMjYwMDZEMERFQyAvKiBDb3B5V1RGSGVhZGVycy54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQueGNjb25maWc7IHBhdGggPSBDb3B5V1RGSGVhZGVycy54Y2NvbmZpZzsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJN0NERDdGRjcxODZEMjkxRTAwNzQzM0NEIC8qIEZpbHRlckl0ZXJh
dG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbHRlckl0ZXJhdG9yLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdDREQ3RkY5MTg2RDJBNTQwMDc0MzNDRCAv
KiBJdGVyYXRvclBhaXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSXRlcmF0
b3JQYWlyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDREQ3RkY3MTg2RDI5MUUw
MDc0MzNDRCAvKiBJdGVyYXRvckFkYXB0b3JzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEl0ZXJhdG9yQWRhcHRvcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
N0NERDdGRjkxODZEMkE1NDAwNzQzM0NEIC8qIEl0ZXJhdG9yUmFuZ2UuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSXRlcmF0b3JSYW5nZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3RTI5QzMzRDE1RkZENzlCMDA1MTZENjEgLyogT2JqY1J1bnRpbWVFeHRyYXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT2JqY1J1bnRpbWVFeHRyYXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODEzNDAxMzYxNUIwOTJGRDAwMUZGMEI4IC8q
IEJhc2U2NC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCYXNlNjQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MTM0MDEzNzE1QjA5MkZEMDAxRkYw
QjggLyogQmFzZTY0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJhc2U2NC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzAwLDggKzcwMCw2IEBACiAJCQkJQThB
NDcyQTExNTFBODI1QTAwNDEyM0ZGIC8qIEZhc3RNYWxsb2MuY3BwICovLAogCQkJCUE4QTQ3MkEy
MTUxQTgyNUEwMDQxMjNGRiAvKiBGYXN0TWFsbG9jLmggKi8sCiAJCQkJQjM4RkQ3QkMxNjg5NTNF
ODAwNjVDOTY5IC8qIEZlYXR1cmVEZWZpbmVzLmggKi8sCi0JCQkJN0NERDdGRjcxODZEMjkxRTAw
NzQzM0NEIC8qIEZpbHRlckl0ZXJhdG9yLmggKi8sCi0JCQkJN0NERDdGRjkxODZEMkE1NDAwNzQz
M0NEIC8qIEl0ZXJhdG9yUGFpci5oICovLAogCQkJCTBGOUQzMzVCMTY1REJBNzMwMDVBRDM4NyAv
KiBGaWxlUHJpbnRTdHJlYW0uY3BwICovLAogCQkJCTBGOUQzMzVDMTY1REJBNzMwMDVBRDM4NyAv
KiBGaWxlUHJpbnRTdHJlYW0uaCAqLywKIAkJCQkwRjJCNjZBNTE3QjZCNEY3MDBBN0FFM0YgLyog
RmxpcEJ5dGVzLmggKi8sCkBAIC03MjMsNiArNzIxLDggQEAKIAkJCQlBOEE0NzJCQjE1MUE4MjVB
MDA0MTIzRkYgLyogSGV4TnVtYmVyLmggKi8sCiAJCQkJQThBNDcyQkMxNTFBODI1QTAwNDEyM0ZG
IC8qIElubGluZUFTTS5oICovLAogCQkJCUE3MERBMDgyMTc5OUYwNEQwMDUyOUE5QiAvKiBJbnNl
cnRpb24uaCAqLywKKwkJCQk3Q0REN0ZGNzE4NkQyOTFFMDA3NDMzQ0QgLyogSXRlcmF0b3JBZGFw
dG9ycy5oICovLAorCQkJCTdDREQ3RkY5MTg2RDJBNTQwMDc0MzNDRCAvKiBJdGVyYXRvclJhbmdl
LmggKi8sCiAJCQkJQTcwREEwODMxNzk5RjA0RDAwNTI5QTlCIC8qIExpc3REdW1wLmggKi8sCiAJ
CQkJQThBNDcyQzExNTFBODI1QTAwNDEyM0ZGIC8qIExpc3RIYXNoU2V0LmggKi8sCiAJCQkJQThB
NDcyQzMxNTFBODI1QTAwNDEyM0ZGIC8qIExvY2tlci5oICovLApAQCAtOTU4LDcgKzk1OCw3IEBA
CiAJCQkJQThBNDczODcxNTFBODI1QjAwNDEyM0ZGIC8qIEFzc2VydGlvbnMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE4QTQ3Mzg4MTUxQTgyNUIwMDQxMjNGRiAvKiBBdG9taWNzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBOEE0NzQzNjE1MUE4MjVCMDA0MTIzRkYgLyogQXRvbWljU3RyaW5nLmggaW4g
SGVhZGVycyAqLywKLQkJCQk3Q0REN0ZGODE4NkQyOTFFMDA3NDMzQ0QgLyogRmlsdGVySXRlcmF0
b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTdDREQ3RkY4MTg2RDI5MUUwMDc0MzNDRCAvKiBJdGVy
YXRvckFkYXB0b3JzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQzNzE1MUE4MjVCMDA0MTIz
RkYgLyogQXRvbWljU3RyaW5nSGFzaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDc0MzgxNTFB
ODI1QjAwNDEyM0ZGIC8qIEF0b21pY1N0cmluZ0ltcGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTlC
RDhGNDBCMTc2QzJCNDcwMDAyRDg2NSAvKiBBdG9taWNTdHJpbmdUYWJsZS5oIGluIEhlYWRlcnMg
Ki8sCkBAIC05NjcsNyArOTY3LDcgQEAKIAkJCQk4MTM0MDEzOTE1QjA5MkZEMDAxRkYwQjggLyog
QmFzZTY0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzNBOTE1MUE4MjVCMDA0MTIzRkYgLyog
YmlnbnVtLWR0b2EuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3M0FCMTUxQTgyNUIwMDQxMjNG
RiAvKiBiaWdudW0uaCBpbiBIZWFkZXJzICovLAotCQkJCTdDREQ3RkZBMTg2RDJBNTQwMDc0MzND
RCAvKiBJdGVyYXRvclBhaXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTdDREQ3RkZBMTg2RDJBNTQw
MDc0MzNDRCAvKiBJdGVyYXRvclJhbmdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQ1MjE1
MUE4MjVCMDA0MTIzRkYgLyogQmluYXJ5U2VtYXBob3JlLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
OEE0NzM4QTE1MUE4MjVCMDA0MTIzRkYgLyogQml0bWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
OEE0NzM4QzE1MUE4MjVCMDA0MTIzRkYgLyogQml0VmVjdG9yLmggaW4gSGVhZGVycyAqLywKSW5k
ZXg6IFNvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
VEYvd3RmL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxNjE3NTApCisrKyBTb3VyY2UvV1RGL3d0
Zi9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNiBAQCBzZXQoV1RG
X0hFQURFUlMKICAgICBGYXN0TWFsbG9jLmgKICAgICBGZWF0dXJlRGVmaW5lcy5oCiAgICAgRmls
ZVByaW50U3RyZWFtLmgKLSAgICBGaWx0ZXJJdGVyYXRvci5oCiAgICAgRmxpcEJ5dGVzLmgKICAg
ICBGb3J3YXJkLmgKICAgICBGdW5jdGlvbkRpc3BhdGNoZXIuaApAQCAtNDMsNyArNDIsOCBAQCBz
ZXQoV1RGX0hFQURFUlMKICAgICBIYXNoVGFibGUuaAogICAgIEhhc2hUcmFpdHMuaAogICAgIEhl
eE51bWJlci5oCi0gICAgSXRlcmF0b3JQYWlyLmgKKyAgICBJdGVyYXRvckFkYXB0b3JzLmgKKyAg
ICBJdGVyYXRvclJhbmdlLmgKICAgICBMaXN0SGFzaFNldC5oCiAgICAgTG9ja2VyLmgKICAgICBN
RDUuaApJbmRleDogU291cmNlL1dURi93dGYvRmlsdGVySXRlcmF0b3IuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV1RGL3d0Zi9GaWx0ZXJJdGVyYXRvci5oCShyZXZpc2lvbiAxNjE3NTApCisrKyBT
b3VyY2UvV1RGL3d0Zi9GaWx0ZXJJdGVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDc3ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdURl9GaWx0ZXJJdGVyYXRvcl9oCi0jZGVmaW5l
IFdURl9GaWx0ZXJJdGVyYXRvcl9oCi0KLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3Bh
Y2UgV1RGIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgUHJlZGljYXRlLCB0eXBlbmFtZSBDYXN0LCB0
eXBlbmFtZSBJdGVyYXRvcj4KLWNsYXNzIEZpbHRlckl0ZXJhdG9yIHsKLXB1YmxpYzoKLSAgICBG
aWx0ZXJJdGVyYXRvcihQcmVkaWNhdGUgcHJlZCwgQ2FzdCBjYXN0LCBJdGVyYXRvciBiZWdpbiwg
SXRlcmF0b3IgZW5kKQotICAgICAgICA6IG1fcHJlZChzdGQ6Om1vdmUocHJlZCkpCi0gICAgICAg
ICwgbV9jYXN0KHN0ZDo6bW92ZShjYXN0KSkKLSAgICAgICAgLCBtX2l0ZXIoc3RkOjptb3ZlKGJl
Z2luKSkKLSAgICAgICAgLCBtX2VuZChzdGQ6Om1vdmUoZW5kKSkKLSAgICB7Ci0gICAgICAgIHdo
aWxlIChtX2l0ZXIgIT0gbV9lbmQgJiYgIW1fcHJlZCgqbV9pdGVyKSkKLSAgICAgICAgICAgICsr
bV9pdGVyOwotICAgIH0KLQotICAgIEZpbHRlckl0ZXJhdG9yJiBvcGVyYXRvcisrKCkKLSAgICB7
Ci0gICAgICAgIHdoaWxlIChtX2l0ZXIgIT0gbV9lbmQpIHsKLSAgICAgICAgICAgICsrbV9pdGVy
OwotICAgICAgICAgICAgaWYgKG1faXRlciA9PSBtX2VuZCB8fCBtX3ByZWQoKm1faXRlcikpCi0g
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuICp0aGlzOwot
ICAgIH0KLQotICAgIGNvbnN0IGRlY2x0eXBlKHN0ZDo6ZGVjbHZhbDxDYXN0PigpKCpzdGQ6OmRl
Y2x2YWw8SXRlcmF0b3I+KCkpKSBvcGVyYXRvciooKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNT
RVJUKG1faXRlciAhPSBtX2VuZCk7Ci0gICAgICAgIEFTU0VSVChtX3ByZWQoKm1faXRlcikpOwot
ICAgICAgICByZXR1cm4gbV9jYXN0KCptX2l0ZXIpOwotICAgIH0KLQotICAgIGlubGluZSBib29s
IG9wZXJhdG9yPT0oRmlsdGVySXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2l0ZXIg
PT0gb3RoZXIubV9pdGVyOyB9Ci0gICAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPShGaWx0ZXJJdGVy
YXRvciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1faXRlciAhPSBvdGhlci5tX2l0ZXI7IH0KLQot
cHJpdmF0ZToKLSAgICBjb25zdCBQcmVkaWNhdGUgbV9wcmVkOwotICAgIGNvbnN0IENhc3QgbV9j
YXN0OwotICAgIEl0ZXJhdG9yIG1faXRlcjsKLSAgICBJdGVyYXRvciBtX2VuZDsKLX07Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdURgotCi0jZW5kaWYgLy8gV1RGX0ZpbHRlckl0ZXJhdG9yX2gKSW5kZXg6
IFNvdXJjZS9XVEYvd3RmL0hhc2hNYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9I
YXNoTWFwLmgJKHJldmlzaW9uIDE2MTc1MCkKKysrIFNvdXJjZS9XVEYvd3RmL0hhc2hNYXAuaAko
d29ya2luZyBjb3B5KQpAQCAtMjIsNyArMjIsNyBAQAogI2RlZmluZSBXVEZfSGFzaE1hcF9oCiAK
ICNpbmNsdWRlIDx3dGYvSGFzaFRhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL0l0ZXJhdG9yUGFpci5o
PgorI2luY2x1ZGUgPHd0Zi9JdGVyYXRvclJhbmdlLmg+CiAKIG5hbWVzcGFjZSBXVEYgewogCkBA
IC05MiwxMSArOTIsMTEgQEAgcHVibGljOgogICAgIGNvbnN0X2l0ZXJhdG9yIGJlZ2luKCkgY29u
c3Q7CiAgICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3Q7CiAKLSAgICBJdGVyYXRvclBhaXI8
dHlwZW5hbWUgaXRlcmF0b3I6OktleXM+IGtleXMoKSB7IHJldHVybiBJdGVyYXRvclBhaXI8dHlw
ZW5hbWUgaXRlcmF0b3I6OktleXM+KGJlZ2luKCkua2V5cygpLCBlbmQoKS5rZXlzKCkpOyB9Ci0g
ICAgY29uc3QgSXRlcmF0b3JQYWlyPHR5cGVuYW1lIGNvbnN0X2l0ZXJhdG9yOjpLZXlzPiBrZXlz
KCkgY29uc3QgeyByZXR1cm4gSXRlcmF0b3JQYWlyPHR5cGVuYW1lIGNvbnN0X2l0ZXJhdG9yOjpL
ZXlzPihiZWdpbigpLmtleXMoKSwgZW5kKCkua2V5cygpKTsgfQorICAgIEl0ZXJhdG9yUmFuZ2U8
dHlwZW5hbWUgaXRlcmF0b3I6OktleXM+IGtleXMoKSB7IHJldHVybiBtYWtlSXRlcmF0b3JSYW5n
ZShiZWdpbigpLmtleXMoKSwgZW5kKCkua2V5cygpKTsgfQorICAgIGNvbnN0IEl0ZXJhdG9yUmFu
Z2U8dHlwZW5hbWUgY29uc3RfaXRlcmF0b3I6OktleXM+IGtleXMoKSBjb25zdCB7IHJldHVybiBt
YWtlSXRlcmF0b3JSYW5nZShiZWdpbigpLmtleXMoKSwgZW5kKCkua2V5cygpKTsgfQogCi0gICAg
SXRlcmF0b3JQYWlyPHR5cGVuYW1lIGl0ZXJhdG9yOjpWYWx1ZXM+IHZhbHVlcygpIHsgcmV0dXJu
IEl0ZXJhdG9yUGFpcjx0eXBlbmFtZSBpdGVyYXRvcjo6VmFsdWVzPihiZWdpbigpLnZhbHVlcygp
LCBlbmQoKS52YWx1ZXMoKSk7IH0KLSAgICBjb25zdCBJdGVyYXRvclBhaXI8dHlwZW5hbWUgY29u
c3RfaXRlcmF0b3I6OlZhbHVlcz4gdmFsdWVzKCkgY29uc3QgeyByZXR1cm4gSXRlcmF0b3JQYWly
PHR5cGVuYW1lIGNvbnN0X2l0ZXJhdG9yOjpWYWx1ZXM+KGJlZ2luKCkudmFsdWVzKCksIGVuZCgp
LnZhbHVlcygpKTsgfQorICAgIEl0ZXJhdG9yUmFuZ2U8dHlwZW5hbWUgaXRlcmF0b3I6OlZhbHVl
cz4gdmFsdWVzKCkgeyByZXR1cm4gbWFrZUl0ZXJhdG9yUmFuZ2UoYmVnaW4oKS52YWx1ZXMoKSwg
ZW5kKCkudmFsdWVzKCkpOyB9CisgICAgY29uc3QgSXRlcmF0b3JSYW5nZTx0eXBlbmFtZSBjb25z
dF9pdGVyYXRvcjo6VmFsdWVzPiB2YWx1ZXMoKSBjb25zdCB7IHJldHVybiBtYWtlSXRlcmF0b3JS
YW5nZShiZWdpbigpLnZhbHVlcygpLCBlbmQoKS52YWx1ZXMoKSk7IH0KIAogICAgIGl0ZXJhdG9y
IGZpbmQoY29uc3QgS2V5VHlwZSYpOwogICAgIGNvbnN0X2l0ZXJhdG9yIGZpbmQoY29uc3QgS2V5
VHlwZSYpIGNvbnN0OwpJbmRleDogU291cmNlL1dURi93dGYvSXRlcmF0b3JBZGFwdG9ycy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0l0ZXJhdG9yQWRhcHRvcnMuaAkocmV2aXNpb24g
MTYxNzUwKQkoZnJvbSBTb3VyY2UvV1RGL3d0Zi9GaWx0ZXJJdGVyYXRvci5oOjE2MTc1MCkKKysr
IFNvdXJjZS9XVEYvd3RmL0l0ZXJhdG9yQWRhcHRvcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXVEZfRmlsdGVySXRlcmF0b3JfaAorI2Rl
ZmluZSBXVEZfRmlsdGVySXRlcmF0b3JfaAorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFt
ZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFByZWRpY2F0ZSwgdHlwZW5hbWUgQ2Fz
dCwgdHlwZW5hbWUgSXRlcmF0b3I+CitjbGFzcyBGaWx0ZXJJdGVyYXRvciB7CitwdWJsaWM6Cisg
ICAgRmlsdGVySXRlcmF0b3IoUHJlZGljYXRlIHByZWQsIENhc3QgY2FzdCwgSXRlcmF0b3IgYmVn
aW4sIEl0ZXJhdG9yIGVuZCkKKyAgICAgICAgOiBtX3ByZWQoc3RkOjptb3ZlKHByZWQpKQorICAg
ICAgICAsIG1fY2FzdChzdGQ6Om1vdmUoY2FzdCkpCisgICAgICAgICwgbV9pdGVyKHN0ZDo6bW92
ZShiZWdpbikpCisgICAgICAgICwgbV9lbmQoc3RkOjptb3ZlKGVuZCkpCisgICAgeworICAgICAg
ICB3aGlsZSAobV9pdGVyICE9IG1fZW5kICYmICFtX3ByZWQoKm1faXRlcikpCisgICAgICAgICAg
ICArK21faXRlcjsKKyAgICB9CisKKyAgICBGaWx0ZXJJdGVyYXRvciYgb3BlcmF0b3IrKygpCisg
ICAgeworICAgICAgICB3aGlsZSAobV9pdGVyICE9IG1fZW5kKSB7CisgICAgICAgICAgICArK21f
aXRlcjsKKyAgICAgICAgICAgIGlmIChtX2l0ZXIgPT0gbV9lbmQgfHwgbV9wcmVkKCptX2l0ZXIp
KQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIHJldHVybiAqdGhp
czsKKyAgICB9CisKKyAgICBjb25zdCBkZWNsdHlwZShzdGQ6OmRlY2x2YWw8Q2FzdD4oKSgqc3Rk
OjpkZWNsdmFsPEl0ZXJhdG9yPigpKSkgb3BlcmF0b3IqKCkgY29uc3QKKyAgICB7CisgICAgICAg
IEFTU0VSVChtX2l0ZXIgIT0gbV9lbmQpOworICAgICAgICBBU1NFUlQobV9wcmVkKCptX2l0ZXIp
KTsKKyAgICAgICAgcmV0dXJuIG1fY2FzdCgqbV9pdGVyKTsKKyAgICB9CisKKyAgICBpbmxpbmUg
Ym9vbCBvcGVyYXRvcj09KEZpbHRlckl0ZXJhdG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9p
dGVyID09IG90aGVyLm1faXRlcjsgfQorICAgIGlubGluZSBib29sIG9wZXJhdG9yIT0oRmlsdGVy
SXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2l0ZXIgIT0gb3RoZXIubV9pdGVyOyB9
CisKK3ByaXZhdGU6CisgICAgY29uc3QgUHJlZGljYXRlIG1fcHJlZDsKKyAgICBjb25zdCBDYXN0
IG1fY2FzdDsKKyAgICBJdGVyYXRvciBtX2l0ZXI7CisgICAgSXRlcmF0b3IgbV9lbmQ7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXVEYKKworI2VuZGlmIC8vIFdURl9GaWx0ZXJJdGVyYXRvcl9oCklu
ZGV4OiBTb3VyY2UvV1RGL3d0Zi9JdGVyYXRvckFkYXB0b3JzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dURi93dGYvSXRlcmF0b3JBZGFwdG9ycy5oCSh3b3JraW5nIGNvcHkpCisrKyBTb3VyY2Uv
V1RGL3d0Zi9JdGVyYXRvckFkYXB0b3JzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDIxICsyMywx
NiBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYg
V1RGX0ZpbHRlckl0ZXJhdG9yX2gKLSNkZWZpbmUgV1RGX0ZpbHRlckl0ZXJhdG9yX2gKLQotI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CisjaWZuZGVmIFdURl9JdGVyYXRvckFkYXB0b3JzX2gKKyNkZWZp
bmUgV1RGX0l0ZXJhdG9yQWRhcHRvcnNfaAogCiBuYW1lc3BhY2UgV1RGIHsKIAotdGVtcGxhdGU8
dHlwZW5hbWUgUHJlZGljYXRlLCB0eXBlbmFtZSBDYXN0LCB0eXBlbmFtZSBJdGVyYXRvcj4KK3Rl
bXBsYXRlPHR5cGVuYW1lIFByZWRpY2F0ZSwgdHlwZW5hbWUgSXRlcmF0b3I+CiBjbGFzcyBGaWx0
ZXJJdGVyYXRvciB7CiBwdWJsaWM6Ci0gICAgRmlsdGVySXRlcmF0b3IoUHJlZGljYXRlIHByZWQs
IENhc3QgY2FzdCwgSXRlcmF0b3IgYmVnaW4sIEl0ZXJhdG9yIGVuZCkKKyAgICBGaWx0ZXJJdGVy
YXRvcihQcmVkaWNhdGUgcHJlZCwgSXRlcmF0b3IgYmVnaW4sIEl0ZXJhdG9yIGVuZCkKICAgICAg
ICAgOiBtX3ByZWQoc3RkOjptb3ZlKHByZWQpKQotICAgICAgICAsIG1fY2FzdChzdGQ6Om1vdmUo
Y2FzdCkpCiAgICAgICAgICwgbV9pdGVyKHN0ZDo6bW92ZShiZWdpbikpCiAgICAgICAgICwgbV9l
bmQoc3RkOjptb3ZlKGVuZCkpCiAgICAgewpAQCAtNTUsMTEgKzUwLDExIEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KIAotICAgIGNvbnN0IGRlY2x0eXBlKHN0ZDo6ZGVj
bHZhbDxDYXN0PigpKCpzdGQ6OmRlY2x2YWw8SXRlcmF0b3I+KCkpKSBvcGVyYXRvciooKSBjb25z
dAorICAgIGNvbnN0IGRlY2x0eXBlKCpzdGQ6OmRlY2x2YWw8SXRlcmF0b3I+KCkpIG9wZXJhdG9y
KigpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQobV9pdGVyICE9IG1fZW5kKTsKICAgICAg
ICAgQVNTRVJUKG1fcHJlZCgqbV9pdGVyKSk7Ci0gICAgICAgIHJldHVybiBtX2Nhc3QoKm1faXRl
cik7CisgICAgICAgIHJldHVybiAqbV9pdGVyOwogICAgIH0KIAogICAgIGlubGluZSBib29sIG9w
ZXJhdG9yPT0oRmlsdGVySXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2l0ZXIgPT0g
b3RoZXIubV9pdGVyOyB9CkBAIC02NywxMSArNjIsNTAgQEAgcHVibGljOgogCiBwcml2YXRlOgog
ICAgIGNvbnN0IFByZWRpY2F0ZSBtX3ByZWQ7Ci0gICAgY29uc3QgQ2FzdCBtX2Nhc3Q7CiAgICAg
SXRlcmF0b3IgbV9pdGVyOwogICAgIEl0ZXJhdG9yIG1fZW5kOwogfTsKIAordGVtcGxhdGU8dHlw
ZW5hbWUgUHJlZGljYXRlLCB0eXBlbmFtZSBJdGVyYXRvcj4KK2lubGluZSBGaWx0ZXJJdGVyYXRv
cjxQcmVkaWNhdGUsIEl0ZXJhdG9yPiBtYWtlRmlsdGVySXRlcmF0b3IoUHJlZGljYXRlJiYgcHJl
ZCwgSXRlcmF0b3ImJiBiZWdpbiwgSXRlcmF0b3ImJiBlbmQpCit7CisgICAgcmV0dXJuIEZpbHRl
ckl0ZXJhdG9yPFByZWRpY2F0ZSwgSXRlcmF0b3I+KHN0ZDo6Zm9yd2FyZDxQcmVkaWNhdGU+KHBy
ZWQpLCBzdGQ6OmZvcndhcmQ8SXRlcmF0b3I+KGJlZ2luKSwgc3RkOjpmb3J3YXJkPEl0ZXJhdG9y
PihlbmQpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVHJhbnNmb3JtLCB0eXBlbmFtZSBJdGVy
YXRvcj4KK2NsYXNzIFRyYW5zZm9ybUl0ZXJhdG9yIHsKK3B1YmxpYzoKKyAgICBUcmFuc2Zvcm1J
dGVyYXRvcihjb25zdCBUcmFuc2Zvcm0mIHRyYW5zZm9ybSwgY29uc3QgSXRlcmF0b3ImIGl0ZXIp
CisgICAgICAgIDogbV90cmFuc2Zvcm0oc3RkOjptb3ZlKHRyYW5zZm9ybSkpCisgICAgICAgICwg
bV9pdGVyKHN0ZDo6bW92ZShpdGVyKSkKKyAgICB7CisgICAgfQorCisgICAgVHJhbnNmb3JtSXRl
cmF0b3ImIG9wZXJhdG9yKysoKQorICAgIHsKKyAgICAgICAgKyttX2l0ZXI7CisgICAgICAgIHJl
dHVybiAqdGhpczsKKyAgICB9CisKKyAgICBjb25zdCBkZWNsdHlwZShzdGQ6OmRlY2x2YWw8VHJh
bnNmb3JtPigpKCpzdGQ6OmRlY2x2YWw8SXRlcmF0b3I+KCkpKSBvcGVyYXRvciooKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG1fdHJhbnNmb3JtKCptX2l0ZXIpOworICAgIH0KKworICAg
IGlubGluZSBib29sIG9wZXJhdG9yPT0oVHJhbnNmb3JtSXRlcmF0b3ImIG90aGVyKSBjb25zdCB7
IHJldHVybiBtX2l0ZXIgPT0gb3RoZXIubV9pdGVyOyB9CisgICAgaW5saW5lIGJvb2wgb3BlcmF0
b3IhPShUcmFuc2Zvcm1JdGVyYXRvciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1faXRlciAhPSBv
dGhlci5tX2l0ZXI7IH0KKworcHJpdmF0ZToKKyAgICBjb25zdCBUcmFuc2Zvcm0gbV90cmFuc2Zv
cm07CisgICAgSXRlcmF0b3IgbV9pdGVyOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVHJhbnNm
b3JtLCB0eXBlbmFtZSBJdGVyYXRvcj4KK2lubGluZSBUcmFuc2Zvcm1JdGVyYXRvcjxUcmFuc2Zv
cm0sIEl0ZXJhdG9yPiBtYWtlVHJhbnNmb3JtSXRlcmF0b3IoVHJhbnNmb3JtJiYgdHJhbnNmb3Jt
LCBJdGVyYXRvciYmIGl0ZXIpCit7CisgICAgcmV0dXJuIFRyYW5zZm9ybUl0ZXJhdG9yPFRyYW5z
Zm9ybSwgSXRlcmF0b3I+KHN0ZDo6Zm9yd2FyZDxUcmFuc2Zvcm0+KHRyYW5zZm9ybSksIHN0ZDo6
Zm9yd2FyZDxJdGVyYXRvcj4oaXRlcikpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAotI2Vu
ZGlmIC8vIFdURl9GaWx0ZXJJdGVyYXRvcl9oCisjZW5kaWYgLy8gV1RGX0l0ZXJhdG9yQWRhcHRv
cnNfaApJbmRleDogU291cmNlL1dURi93dGYvSXRlcmF0b3JQYWlyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dURi93dGYvSXRlcmF0b3JQYWlyLmgJKHJldmlzaW9uIDE2MTc1MCkKKysrIFNvdXJj
ZS9XVEYvd3RmL0l0ZXJhdG9yUGFpci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUwICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaWZuZGVmIFdURl9JdGVyYXRvclBhaXJfaAotI2RlZmluZSBXVEZfSXRl
cmF0b3JQYWlyX2gKLQotbmFtZXNwYWNlIFdURiB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEl0ZXJh
dG9yPgotY2xhc3MgSXRlcmF0b3JQYWlyIHsKLXB1YmxpYzoKLSAgICBJdGVyYXRvclBhaXIoSXRl
cmF0b3IgYmVnaW4sIEl0ZXJhdG9yIGVuZCkKLSAgICAgICAgOiBtX2JlZ2luKHN0ZDo6bW92ZShi
ZWdpbikpCi0gICAgICAgICwgbV9lbmQoc3RkOjptb3ZlKGVuZCkpCi0gICAgewotICAgIH0KLQot
ICAgIEl0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9iZWdpbjsgfQotICAgIEl0ZXJh
dG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5kOyB9Ci0KLXByaXZhdGU6Ci0gICAgSXRlcmF0
b3IgbV9iZWdpbjsKLSAgICBJdGVyYXRvciBtX2VuZDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdU
RgotCi0jZW5kaWYgLy8gV1RGX0l0ZXJhdG9yUGFpcgpJbmRleDogU291cmNlL1dURi93dGYvSXRl
cmF0b3JSYW5nZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0l0ZXJhdG9yUmFuZ2Uu
aAkocmV2aXNpb24gMTYxNzM2KQkoZnJvbSBTb3VyY2UvV1RGL3d0Zi9JdGVyYXRvclBhaXIuaDox
NjE3MzYpCisrKyBTb3VyY2UvV1RGL3d0Zi9JdGVyYXRvclJhbmdlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV1RGX0l0ZXJhdG9yUGFpcl9o
CisjZGVmaW5lIFdURl9JdGVyYXRvclBhaXJfaAorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxh
dGU8dHlwZW5hbWUgSXRlcmF0b3I+CitjbGFzcyBJdGVyYXRvclBhaXIgeworcHVibGljOgorICAg
IEl0ZXJhdG9yUGFpcihJdGVyYXRvciBiZWdpbiwgSXRlcmF0b3IgZW5kKQorICAgICAgICA6IG1f
YmVnaW4oc3RkOjptb3ZlKGJlZ2luKSkKKyAgICAgICAgLCBtX2VuZChzdGQ6Om1vdmUoZW5kKSkK
KyAgICB7CisgICAgfQorCisgICAgSXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX2Jl
Z2luOyB9CisgICAgSXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9lbmQ7IH0KKworcHJp
dmF0ZToKKyAgICBJdGVyYXRvciBtX2JlZ2luOworICAgIEl0ZXJhdG9yIG1fZW5kOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAvLyBXVEZfSXRlcmF0b3JQYWlyCkluZGV4OiBT
b3VyY2UvV1RGL3d0Zi9JdGVyYXRvclJhbmdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93
dGYvSXRlcmF0b3JSYW5nZS5oCSh3b3JraW5nIGNvcHkpCisrKyBTb3VyY2UvV1RGL3d0Zi9JdGVy
YXRvclJhbmdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDE1ICsyMywxNSBAQAogICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV1RGX0l0ZXJhdG9yUGFp
cl9oCi0jZGVmaW5lIFdURl9JdGVyYXRvclBhaXJfaAorI2lmbmRlZiBXVEZfSXRlcmF0b3JSYW5n
ZV9oCisjZGVmaW5lIFdURl9JdGVyYXRvclJhbmdlX2gKIAogbmFtZXNwYWNlIFdURiB7CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIEl0ZXJhdG9yPgotY2xhc3MgSXRlcmF0b3JQYWlyIHsKK2NsYXNzIEl0
ZXJhdG9yUmFuZ2UgewogcHVibGljOgotICAgIEl0ZXJhdG9yUGFpcihJdGVyYXRvciBiZWdpbiwg
SXRlcmF0b3IgZW5kKQorICAgIEl0ZXJhdG9yUmFuZ2UoSXRlcmF0b3IgYmVnaW4sIEl0ZXJhdG9y
IGVuZCkKICAgICAgICAgOiBtX2JlZ2luKHN0ZDo6bW92ZShiZWdpbikpCiAgICAgICAgICwgbV9l
bmQoc3RkOjptb3ZlKGVuZCkpCiAgICAgewpAQCAtNDUsNiArNDUsMTIgQEAgcHJpdmF0ZToKICAg
ICBJdGVyYXRvciBtX2VuZDsKIH07CiAKK3RlbXBsYXRlPHR5cGVuYW1lIEl0ZXJhdG9yPgorSXRl
cmF0b3JSYW5nZTxJdGVyYXRvcj4gbWFrZUl0ZXJhdG9yUmFuZ2UoSXRlcmF0b3ImJiBiZWdpbiwg
SXRlcmF0b3ImJiBlbmQpCit7CisgICAgcmV0dXJuIEl0ZXJhdG9yUmFuZ2U8SXRlcmF0b3I+KHN0
ZDo6Zm9yd2FyZDxJdGVyYXRvcj4oYmVnaW4pLCBzdGQ6OmZvcndhcmQ8SXRlcmF0b3I+KGVuZCkp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAotI2VuZGlmIC8vIFdURl9JdGVyYXRvclBhaXIK
KyNlbmRpZiAvLyBXVEZfSXRlcmF0b3JSYW5nZV9oCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9SZWZQ
dHJIYXNoTWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUmVmUHRySGFzaE1hcC5o
CShyZXZpc2lvbiAxNjE3NTApCisrKyBTb3VyY2UvV1RGL3d0Zi9SZWZQdHJIYXNoTWFwLmgJKHdv
cmtpbmcgY29weSkKQEAgLTcwLDExICs3MCwxMSBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAg
Y29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdDsKICAgICAgICAgY29uc3RfaXRlcmF0b3IgZW5k
KCkgY29uc3Q7CiAKLSAgICAgICAgSXRlcmF0b3JQYWlyPHR5cGVuYW1lIGl0ZXJhdG9yOjpLZXlz
PiBrZXlzKCkgeyByZXR1cm4gSXRlcmF0b3JQYWlyPHR5cGVuYW1lIGl0ZXJhdG9yOjpLZXlzPihi
ZWdpbigpLmtleXMoKSwgZW5kKCkua2V5cygpKTsgfQotICAgICAgICBjb25zdCBJdGVyYXRvclBh
aXI8dHlwZW5hbWUgY29uc3RfaXRlcmF0b3I6OktleXM+IGtleXMoKSBjb25zdCB7IHJldHVybiBJ
dGVyYXRvclBhaXI8dHlwZW5hbWUgY29uc3RfaXRlcmF0b3I6OktleXM+KGJlZ2luKCkua2V5cygp
LCBlbmQoKS5rZXlzKCkpOyB9CisgICAgICAgIEl0ZXJhdG9yUmFuZ2U8dHlwZW5hbWUgaXRlcmF0
b3I6OktleXM+IGtleXMoKSB7IHJldHVybiBtYWtlSXRlcmF0b3JSYW5nZShiZWdpbigpLmtleXMo
KSwgZW5kKCkua2V5cygpKTsgfQorICAgICAgICBjb25zdCBJdGVyYXRvclJhbmdlPHR5cGVuYW1l
IGNvbnN0X2l0ZXJhdG9yOjpLZXlzPiBrZXlzKCkgY29uc3QgeyByZXR1cm4gbWFrZUl0ZXJhdG9y
UmFuZ2UoYmVnaW4oKS5rZXlzKCksIGVuZCgpLmtleXMoKSk7IH0KIAotICAgICAgICBJdGVyYXRv
clBhaXI8dHlwZW5hbWUgaXRlcmF0b3I6OlZhbHVlcz4gdmFsdWVzKCkgeyByZXR1cm4gSXRlcmF0
b3JQYWlyPHR5cGVuYW1lIGl0ZXJhdG9yOjpWYWx1ZXM+KGJlZ2luKCkudmFsdWVzKCksIGVuZCgp
LnZhbHVlcygpKTsgfQotICAgICAgICBjb25zdCBJdGVyYXRvclBhaXI8dHlwZW5hbWUgY29uc3Rf
aXRlcmF0b3I6OlZhbHVlcz4gdmFsdWVzKCkgY29uc3QgeyByZXR1cm4gSXRlcmF0b3JQYWlyPHR5
cGVuYW1lIGNvbnN0X2l0ZXJhdG9yOjpWYWx1ZXM+KGJlZ2luKCkudmFsdWVzKCksIGVuZCgpLnZh
bHVlcygpKTsgfQorICAgICAgICBJdGVyYXRvclJhbmdlPHR5cGVuYW1lIGl0ZXJhdG9yOjpWYWx1
ZXM+IHZhbHVlcygpIHsgcmV0dXJuIG1ha2VJdGVyYXRvclJhbmdlKGJlZ2luKCkudmFsdWVzKCks
IGVuZCgpLnZhbHVlcygpKTsgfQorICAgICAgICBjb25zdCBJdGVyYXRvclJhbmdlPHR5cGVuYW1l
IGNvbnN0X2l0ZXJhdG9yOjpWYWx1ZXM+IHZhbHVlcygpIGNvbnN0IHsgcmV0dXJuIG1ha2VJdGVy
YXRvclJhbmdlKGJlZ2luKCkudmFsdWVzKCksIGVuZCgpLnZhbHVlcygpKTsgfQogCiAgICAgICAg
IGl0ZXJhdG9yIGZpbmQoY29uc3QgS2V5VHlwZSYpOwogICAgICAgICBpdGVyYXRvciBmaW5kKFJh
d0tleVR5cGUpOwpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTYxNzY4KQorKysgU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTQtMDEt
MTEgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBDbGVhbiB1cCBpdGVy
YXRvciBmaWx0ZXIgLyBpdGVyYXRvciByYW5nZSBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjY4MTcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9BUElBcnJheS5oOgorICAgICAgICBV
cGRhdGUgZWxlbWVudHNPZlR5cGUoKSB0byB1c2UgY29tYmluYXRpb24gb2YgRmlsdGVySXRlcmF0
b3IgYW5kIFRyYW5zZm9ybUl0ZXJhdG9yCisgICAgICAgIChub3cgdGhhdCBGaWx0ZXJJdGVyYXRv
ciBubyBsb25nZXIgaGFzIGEgdHJhbnNmb3JtIHByZWRpY2F0ZSkgYW5kIG1ha2UgdXNlIG9mIHRo
ZSAKKyAgICAgICAgbWFrZUZvbygpIGhlbHBlcnMuCisKIDIwMTQtMDEtMTEgIEppbndvbyBTb25n
ICA8amlud29vNy5zb25nQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdW1dLMl0gVXNlIG51
bGxwdHIgaW5zdGVhZCBvZiAwIGluIEVGTCBBUEkgbGF5ZXIKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9BUElBcnJheS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9B
UElBcnJheS5oCShyZXZpc2lvbiAxNjE3NTApCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJ
QXJyYXkuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsOSArMjcsOSBAQAogI2RlZmluZSBBUElBcnJh
eV9oCiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKLSNpbmNsdWRlIDx3dGYvRmlsdGVySXRlcmF0
b3IuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9JdGVyYXRvclBh
aXIuaD4KKyNpbmNsdWRlIDx3dGYvSXRlcmF0b3JBZGFwdG9ycy5oPgorI2luY2x1ZGUgPHd0Zi9J
dGVyYXRvclJhbmdlLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CiAKQEAgLTM3LDExICszNywxOCBAQCBuYW1lc3BhY2UgQVBJIHsKIAogY2xh
c3MgQXJyYXkgRklOQUwgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6OkFycmF5PiB7
CiBwcml2YXRlOgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIGlubGluZSBj
b25zdCBUKiBnZXRPYmplY3QoY29uc3QgUmVmUHRyPE9iamVjdD4mIG9iamVjdCkgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8Y29uc3QgVCo+KG9iamVjdC5nZXQoKSk7IH0KKyAgICB0ZW1wbGF0ZSA8Y2xh
c3MgVD4KKyAgICBzdHJ1Y3QgSXNUeXBlUHJlZGljYXRlIHsKKyAgICAgICAgYm9vbCBvcGVyYXRv
cigpKGNvbnN0IFJlZlB0cjxPYmplY3Q+JiBvYmplY3QpIGNvbnN0IHsgcmV0dXJuIG9iamVjdC0+
dHlwZSgpID09IFQ6OkFQSVR5cGU7IH0KKyAgICB9OworCisgICAgdGVtcGxhdGUgPGNsYXNzIFQ+
CisgICAgc3RydWN0IEdldE9iamVjdFRyYW5zZm9ybSB7CisgICAgICAgIGNvbnN0IFQqIG9wZXJh
dG9yKCkoY29uc3QgUmVmUHRyPE9iamVjdD4mIG9iamVjdCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8Y29uc3QgVCo+KG9iamVjdC5nZXQoKSk7IH0KKyAgICB9OwogCi0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgaW5saW5lIGJvb2wgaXNUeXBlKGNvbnN0IFJlZlB0cjxP
YmplY3Q+JiBvYmplY3QpIHsgcmV0dXJuIG9iamVjdC0+dHlwZSgpID09IFQ6OkFQSVR5cGU7IH0K
KyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgICB1c2luZyBFbGVtZW50c09mVHlwZVJhbmdl
ID0gV1RGOjpJdGVyYXRvclJhbmdlPFdURjo6VHJhbnNmb3JtSXRlcmF0b3I8R2V0T2JqZWN0VHJh
bnNmb3JtPFQ+LCBXVEY6OkZpbHRlckl0ZXJhdG9yPElzVHlwZVByZWRpY2F0ZTxUPiwgVmVjdG9y
PFJlZlB0cjxPYmplY3Q+Pjo6Y29uc3RfaXRlcmF0b3I+Pj47CiAKIHB1YmxpYzoKICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxBcnJheT4gY3JlYXRlKCk7CkBAIC01Myw3ICs2MCw3IEBAIHB1YmxpYzoK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIFQqIGF0KHNpemVfdCBpKSBjb25zdAogICAg
IHsKLSAgICAgICAgaWYgKCFpc1R5cGU8VD4obV9lbGVtZW50c1tpXSkpCisgICAgICAgIGlmICht
X2VsZW1lbnRzW2ldLT50eXBlKCkgIT0gVDo6QVBJVHlwZSkKICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUKj4obV9lbGVtZW50c1tpXS5n
ZXQoKSk7CkBAIC02NiwxMyArNzMsMTEgQEAgcHVibGljOgogICAgIFZlY3RvcjxSZWZQdHI8T2Jq
ZWN0Pj4mIGVsZW1lbnRzKCkgeyByZXR1cm4gbV9lbGVtZW50czsgfQogCiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4KLSAgICBXVEY6Okl0ZXJhdG9yUGFpcjxXVEY6OkZpbHRlckl0ZXJhdG9yPGRl
Y2x0eXBlKCZpc1R5cGU8VD4pLCBkZWNsdHlwZSgmZ2V0T2JqZWN0PFQ+KSwgVmVjdG9yPFJlZlB0
cjxPYmplY3Q+Pjo6Y29uc3RfaXRlcmF0b3I+PiBlbGVtZW50c09mVHlwZSgpCisgICAgRWxlbWVu
dHNPZlR5cGVSYW5nZTxUPiBlbGVtZW50c09mVHlwZSgpIGNvbnN0CiAgICAgewotICAgICAgICB0
eXBlZGVmIFdURjo6RmlsdGVySXRlcmF0b3I8ZGVjbHR5cGUoJmlzVHlwZTxUPiksIGRlY2x0eXBl
KCZnZXRPYmplY3Q8VD4pLCBWZWN0b3I8UmVmUHRyPE9iamVjdD4+Ojpjb25zdF9pdGVyYXRvcj4g
SXRlcmF0b3I7Ci0gICAgCi0gICAgICAgIHJldHVybiBXVEY6Okl0ZXJhdG9yUGFpcjxJdGVyYXRv
cj4oCi0gICAgICAgICAgICBJdGVyYXRvcihpc1R5cGU8VD4sIGdldE9iamVjdDxUPiwgbV9lbGVt
ZW50cy5iZWdpbigpLCBtX2VsZW1lbnRzLmVuZCgpKSwKLSAgICAgICAgICAgIEl0ZXJhdG9yKGlz
VHlwZTxUPiwgZ2V0T2JqZWN0PFQ+LCBtX2VsZW1lbnRzLmVuZCgpLCBtX2VsZW1lbnRzLmVuZCgp
KQorICAgICAgICByZXR1cm4gV1RGOjptYWtlSXRlcmF0b3JSYW5nZSgKKyAgICAgICAgICAgIFdU
Rjo6bWFrZVRyYW5zZm9ybUl0ZXJhdG9yKEdldE9iamVjdFRyYW5zZm9ybTxUPigpLCBXVEY6Om1h
a2VGaWx0ZXJJdGVyYXRvcihJc1R5cGVQcmVkaWNhdGU8VD4oKSwgbV9lbGVtZW50cy5iZWdpbigp
LCBtX2VsZW1lbnRzLmVuZCgpKSksCisgICAgICAgICAgICBXVEY6Om1ha2VUcmFuc2Zvcm1JdGVy
YXRvcihHZXRPYmplY3RUcmFuc2Zvcm08VD4oKSwgV1RGOjptYWtlRmlsdGVySXRlcmF0b3IoSXNU
eXBlUHJlZGljYXRlPFQ+KCksIG1fZWxlbWVudHMuZW5kKCksIG1fZWxlbWVudHMuZW5kKCkpKQog
ICAgICAgICApOwogICAgIH0KIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTYxNzUwKQorKysgTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTQtMDEt
MDYgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBbSlNdIFNob3VsZCBi
ZSBhYmxlIHRvIGNyZWF0ZSBhIHByb21pc2UgYnkgY2FsbGluZyB0aGUgUHJvbWlzZSBjb25zdHJ1
Y3RvciBhcyBhIGZ1bmN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMjY1NjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIGpzL2RvbS9Qcm9taXNlLXR5cGVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBqcy9kb20vUHJvbWlzZS10eXBlcy5odG1sOgorICAgICAgICBBZGQgdGVzdCBmb3IgdXNpbmcg
Y2FsbGluZyBhIFByb21pc2UgY29uc3RydWN0b3IgYXMgYSBmdW5jdGlvbi4KKwogMjAxNC0wMS0x
MCAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5y
ZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE2MTcwMi4K
</data>
<flag name="review"
          id="244753"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>