<?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>126253</bug_id>
          
          <creation_ts>2013-12-26 22:27:13 -0800</creation_ts>
          <short_desc>Move FilterIterator and IteratorPair to WTF and reimplement HashMap::keys() and HashMap::values() using IteratorPair</short_desc>
          <delta_ts>2013-12-30 20:17:52 -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>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>963066</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-12-26 22:27:13 -0800</bug_when>
    <thetext>Move FilterIterator and IteratorPair to WTF and replement HashMap::keys() and HashMap::values() using IteratorPair</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>963067</commentid>
    <comment_count>1</comment_count>
      <attachid>220047</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-12-26 22:32:57 -0800</bug_when>
    <thetext>Created attachment 220047
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>963069</commentid>
    <comment_count>2</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-12-26 22:35:22 -0800</bug_when>
    <thetext>Anders mentioned he thought this might be a good idea, so I went ahead and did it. I like the cleanup of APIArray::elementsOfType(), but I am bummed I couldn&apos;t figure out how to remove the last bit of duplication (the typedef had been duplicated 4 times, and now is down to 2).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>963186</commentid>
    <comment_count>3</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-12-28 13:17:20 -0800</bug_when>
    <thetext>Committed r161114: &lt;http://trac.webkit.org/changeset/161114&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>963285</commentid>
    <comment_count>4</comment_count>
      <attachid>220047</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-12-29 22:39:54 -0800</bug_when>
    <thetext>Comment on attachment 220047
Patch

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

&gt; Source/WTF/wtf/IteratorPair.h:44
&gt;      Iterator begin() { return m_begin; }
&gt;      Iterator end() { return m_end; }
&gt;  
&gt; +    Iterator begin() const { return m_begin; }
&gt; +    Iterator end() const { return m_end; }

Why do we need both? Why not just the const ones?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>963354</commentid>
    <comment_count>5</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-12-30 11:02:47 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 220047 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=220047&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/IteratorPair.h:44
&gt; &gt;      Iterator begin() { return m_begin; }
&gt; &gt;      Iterator end() { return m_end; }
&gt; &gt;  
&gt; &gt; +    Iterator begin() const { return m_begin; }
&gt; &gt; +    Iterator end() const { return m_end; }
&gt; 
&gt; Why do we need both? Why not just the const ones?

You&apos;re right, we don&apos;t need the non-const one.  I will remove it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>963438</commentid>
    <comment_count>6</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-12-30 20:17:52 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; (From update of attachment 220047 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=220047&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WTF/wtf/IteratorPair.h:44
&gt; &gt; &gt;      Iterator begin() { return m_begin; }
&gt; &gt; &gt;      Iterator end() { return m_end; }
&gt; &gt; &gt;  
&gt; &gt; &gt; +    Iterator begin() const { return m_begin; }
&gt; &gt; &gt; +    Iterator end() const { return m_end; }
&gt; &gt; 
&gt; &gt; Why do we need both? Why not just the const ones?
&gt; 
&gt; You&apos;re right, we don&apos;t need the non-const one.  I will remove it.

Fixed in http://trac.webkit.org/changeset/161162.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220047</attachid>
            <date>2013-12-26 22:32:57 -0800</date>
            <delta_ts>2013-12-29 22:39:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-126253-20131226223255.patch</filename>
            <type>text/plain</type>
            <size>35542</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxNjEwOTYpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDEzLTEyLTI2ICBTYW0gV2VpbmlnICA8c2FtQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgTW92ZSBGaWx0ZXJJdGVyYXRvciBhbmQgSXRlcmF0b3JQYWly
IHRvIFdURiBhbmQgcmVpbXBsZW1lbnQgSGFzaE1hcDo6a2V5cygpIGFuZCBIYXNoTWFwOjp2YWx1
ZXMoKSB1c2luZyBJdGVyYXRvclBhaXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEyNjI1MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBXVEYudmN4
cHJvai9XVEYudmN4cHJvajoKKyAgICAgICAgKiBXVEYudmN4cHJvai9XVEYudmN4cHJvai5maWx0
ZXJzOgorICAgICAgICAqIFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IHd0Zi9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgQWRkIG5ldyBmaWxlcy4KKworICAgICAgICAq
IHd0Zi9IYXNoTWFwLmg6CisgICAgICAgICogd3RmL1JlZlB0ckhhc2hNYXAuaDoKKyAgICAgICAg
UmVtb3ZlIHRoZSBvbGQgaW1wbGVtZW50YXRpb24gb2Yga2V5cygpIGFuZCB2YWx1ZXMoKSBhbmQg
cmVwbGFjZSBpdCB3aXRoIG9uZQorICAgICAgICB0aGF0IHVzZXMgSXRlcmF0b3JQYWlyLgorICAg
ICAgICAKKyAgICAgICAgKiB3dGYvRmlsdGVySXRlcmF0b3IuaDogQ29waWVkIGZyb20gU291cmNl
L1dlYktpdDIvU2hhcmVkL0ZpbHRlckl0ZXJhdG9yLmguCisgICAgICAgICogd3RmL0l0ZXJhdG9y
UGFpci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvSXRlcmF0b3JQYWlyLmgu
CisKIDIwMTMtMTItMjUgIFRoaWFnbyBkZSBCYXJyb3MgTGFjZXJkYSAgPHRoaWFnby5sYWNlcmRh
QG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgW05peF0gQnVpbGRpbmcgd2l0aCBEUkFHX1NVUFBP
UlQgZW5hYmxlZApJbmRleDogU291cmNlL1dURi9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XVEYvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTYxMDk2KQor
KysgU291cmNlL1dURi9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC01Myw2
ICs1Myw3IEBAIHd0Zl9zb3VyY2VzICs9IFwKICAgICBTb3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVm
aW5lcy5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9GaWxlUHJpbnRTdHJlYW0uY3BwIFwKICAgICBT
b3VyY2UvV1RGL3d0Zi9GaWxlUHJpbnRTdHJlYW0uaCBcCisgICAgU291cmNlL1dURi93dGYvRmls
dGVySXRlcmF0b3IuaCBcCiAgICAgU291cmNlL1dURi93dGYvRmxpcEJ5dGVzLmggXAogICAgIFNv
dXJjZS9XVEYvd3RmL0ZvcndhcmQuaCBcCiAgICAgU291cmNlL1dURi93dGYvRnVuY3Rpb25EaXNw
YXRjaGVyLmNwcCBcCkBAIC03Miw2ICs3Myw3IEBAIHd0Zl9zb3VyY2VzICs9IFwKICAgICBTb3Vy
Y2UvV1RGL3d0Zi9IZXhOdW1iZXIuaCBcCiAgICAgU291cmNlL1dURi93dGYvSW5saW5lQVNNLmgg
XAogICAgIFNvdXJjZS9XVEYvd3RmL0luc2VydGlvbi5oIFwKKyAgICBTb3VyY2UvV1RGL3d0Zi9J
dGVyYXRvclBhaXIuaCBcCiAgICAgU291cmNlL1dURi93dGYvTGlzdER1bXAuaCBcCiAgICAgU291
cmNlL1dURi93dGYvTGlzdEhhc2hTZXQuaCBcCiAgICAgU291cmNlL1dURi93dGYvTG9ja2VyLmgg
XApJbmRleDogU291cmNlL1dURi9XVEYudmN4cHJvai9XVEYudmN4cHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV1RGL1dURi52Y3hwcm9qL1dURi52Y3hwcm9qCShyZXZpc2lvbiAxNjEwOTYpCisr
KyBTb3VyY2UvV1RGL1dURi52Y3hwcm9qL1dURi52Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0x
OTcsNiArMTk3LDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxGYXN0TWFsbG9j
LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcRmVhdHVyZURlZmluZXMuaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxGaWxlUHJpbnRTdHJlYW0uaCIgLz4K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxGaWx0ZXJJdGVyYXRvci5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXEZsaXBCeXRlcy5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5cd3RmXEZvcndhcmQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHd0ZlxGdW5jdGlvbkRpc3BhdGNoZXIuaCIgLz4KQEAgLTIxNiw2ICsyMTcsNyBAQAogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXEhhc2hUYWJsZS5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5cd3RmXEhhc2hUcmFpdHMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHd0ZlxIZXhOdW1iZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0
ZlxJdGVyYXRvclBhaXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxMaXN0
SGFzaFNldC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXExvY2tlci5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXE1haW5UaHJlYWQuaCIgLz4KSW5kZXg6
IFNvdXJjZS9XVEYvV1RGLnZjeHByb2ovV1RGLnZjeHByb2ouZmlsdGVycwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV1RGL1dURi52Y3hwcm9qL1dURi52Y3hwcm9qLmZpbHRlcnMJKHJldmlzaW9uIDE2
MTA5NikKKysrIFNvdXJjZS9XVEYvV1RGLnZjeHByb2ovV1RGLnZjeHByb2ouZmlsdGVycwkod29y
a2luZyBjb3B5KQpAQCAtNDMyLDYgKzQzMiw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
Llx3dGZcRmlsZVByaW50U3RyZWFtLmgiPgogICAgICAgPEZpbHRlcj53dGY8L0ZpbHRlcj4KICAg
ICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxGaWx0ZXJJdGVy
YXRvci5oIj4KKyAgICAgIDxGaWx0ZXI+d3RmPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcRm9yd2FyZC5oIj4KICAgICAgIDxGaWx0ZXI+
d3RmPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkBAIC00NjgsNiArNDcxLDkgQEAKICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxIZXhOdW1iZXIuaCI+CiAgICAgICA8RmlsdGVyPnd0
ZjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
d3RmXEl0ZXJhdG9yUGFpci5oIj4KKyAgICAgIDxGaWx0ZXI+d3RmPC9GaWx0ZXI+CisgICAgPC9D
bEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcTGlzdEhhc2hTZXQuaCI+
CiAgICAgICA8RmlsdGVyPnd0ZjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpJbmRleDogU291
cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNjEwOTYpCisr
KyBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC02NCw2ICs2NCw4IEBACiAJCTJDREVEMEVGMTgxMTVDMzgwMDREQkE3MCAvKiBSdW5Mb29w
Q0YuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkNE
RUQwRUUxODExNUMzODAwNERCQTcwIC8qIFJ1bkxvb3BDRi5jcHAgKi87IH07CiAJCTJDREVEMEYz
MTgxMTVDODUwMDREQkE3MCAvKiBSdW5Mb29wLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJDREVEMEYxMTgxMTVDODUwMDREQkE3MCAvKiBSdW5Mb29w
LmNwcCAqLzsgfTsKIAkJMkNERUQwRjQxODExNUM4NTAwNERCQTcwIC8qIFJ1bkxvb3AuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJDREVEMEYyMTgxMTVD
ODUwMDREQkE3MCAvKiBSdW5Mb29wLmggKi87IH07CisJCTdDREQ3RkY4MTg2RDI5MUUwMDc0MzND
RCAvKiBGaWx0ZXJJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0NERDdGRjcxODZEMjkxRTAwNzQzM0NEIC8qIEZpbHRlckl0ZXJhdG9yLmgg
Ki87IH07CisJCTdDREQ3RkZBMTg2RDJBNTQwMDc0MzNDRCAvKiBJdGVyYXRvclBhaXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDREQ3RkY5MTg2RDJB
NTQwMDc0MzNDRCAvKiBJdGVyYXRvclBhaXIuaCAqLzsgfTsKIAkJN0UyOUMzM0UxNUZGRDc5QjAw
NTE2RDYxIC8qIE9iamNSdW50aW1lRXh0cmFzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3RTI5QzMzRDE1RkZENzlCMDA1MTZENjEgLyogT2JqY1J1bnRp
bWVFeHRyYXMuaCAqLzsgfTsKIAkJODEzNDAxMzgxNUIwOTJGRDAwMUZGMEI4IC8qIEJhc2U2NC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MTM0MDEz
NjE1QjA5MkZEMDAxRkYwQjggLyogQmFzZTY0LmNwcCAqLzsgfTsKIAkJODEzNDAxMzkxNUIwOTJG
RDAwMUZGMEI4IC8qIEJhc2U2NC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODEzNDAxMzcxNUIwOTJGRDAwMUZGMEI4IC8qIEJhc2U2NC5oICovOyB9OwpA
QCAtMzM1LDYgKzMzNyw4IEBACiAJCTVEMjQ3QjcwMTQ2ODlDNDcwMEU3OEI3NiAvKiBEZWJ1Z1Jl
bGVhc2UueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gRGVidWdSZWxlYXNlLnhjY29uZmlnOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1RDI0N0I3MzE0Njg5QzQ3MDBFNzhCNzYgLyogV1RG
LnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IFdURi54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNjU0MUNBRjQxNjMwREIyNjAwNkQwREVDIC8qIENvcHlXVEZIZWFkZXJzLnhj
Y29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IENvcHlXVEZIZWFkZXJzLnhj
Y29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3Q0REN0ZGNzE4NkQyOTFFMDA3
NDMzQ0QgLyogRmlsdGVySXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRmlsdGVySXRlcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0NERDdG
RjkxODZEMkE1NDAwNzQzM0NEIC8qIEl0ZXJhdG9yUGFpci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBJdGVyYXRvclBhaXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0UyOUMzM0QxNUZGRDc5QjAwNTE2RDYxIC8qIE9iamNSdW50aW1lRXh0cmFzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE9iamNSdW50aW1lRXh0cmFzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgxMzQwMTM2MTVCMDkyRkQwMDFGRjBCOCAvKiBCYXNlNjQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQmFzZTY0LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODEzNDAxMzcxNUIwOTJGRDAwMUZGMEI4IC8qIEJh
c2U2NC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCYXNlNjQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY5NCw2ICs2OTgsOCBAQAogCQkJCUE4QTQ3MkExMTUx
QTgyNUEwMDQxMjNGRiAvKiBGYXN0TWFsbG9jLmNwcCAqLywKIAkJCQlBOEE0NzJBMjE1MUE4MjVB
MDA0MTIzRkYgLyogRmFzdE1hbGxvYy5oICovLAogCQkJCUIzOEZEN0JDMTY4OTUzRTgwMDY1Qzk2
OSAvKiBGZWF0dXJlRGVmaW5lcy5oICovLAorCQkJCTdDREQ3RkY3MTg2RDI5MUUwMDc0MzNDRCAv
KiBGaWx0ZXJJdGVyYXRvci5oICovLAorCQkJCTdDREQ3RkY5MTg2RDJBNTQwMDc0MzNDRCAvKiBJ
dGVyYXRvclBhaXIuaCAqLywKIAkJCQkwRjlEMzM1QjE2NURCQTczMDA1QUQzODcgLyogRmlsZVBy
aW50U3RyZWFtLmNwcCAqLywKIAkJCQkwRjlEMzM1QzE2NURCQTczMDA1QUQzODcgLyogRmlsZVBy
aW50U3RyZWFtLmggKi8sCiAJCQkJMEYyQjY2QTUxN0I2QjRGNzAwQTdBRTNGIC8qIEZsaXBCeXRl
cy5oICovLApAQCAtOTQ5LDYgKzk1NSw3IEBACiAJCQkJQThBNDczODcxNTFBODI1QjAwNDEyM0ZG
IC8qIEFzc2VydGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3Mzg4MTUxQTgyNUIwMDQx
MjNGRiAvKiBBdG9taWNzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQzNjE1MUE4MjVCMDA0
MTIzRkYgLyogQXRvbWljU3RyaW5nLmggaW4gSGVhZGVycyAqLywKKwkJCQk3Q0REN0ZGODE4NkQy
OTFFMDA3NDMzQ0QgLyogRmlsdGVySXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3
NDM3MTUxQTgyNUIwMDQxMjNGRiAvKiBBdG9taWNTdHJpbmdIYXNoLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBOEE0NzQzODE1MUE4MjVCMDA0MTIzRkYgLyogQXRvbWljU3RyaW5nSW1wbC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOUJEOEY0MEIxNzZDMkI0NzAwMDJEODY1IC8qIEF0b21pY1N0cmluZ1Rh
YmxlLmggaW4gSGVhZGVycyAqLywKQEAgLTk1Nyw2ICs5NjQsNyBAQAogCQkJCTgxMzQwMTM5MTVC
MDkyRkQwMDFGRjBCOCAvKiBCYXNlNjQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3M0E5MTUx
QTgyNUIwMDQxMjNGRiAvKiBiaWdudW0tZHRvYS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDcz
QUIxNTFBODI1QjAwNDEyM0ZGIC8qIGJpZ251bS5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0NERDdG
RkExODZEMkE1NDAwNzQzM0NEIC8qIEl0ZXJhdG9yUGFpci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QThBNDc0NTIxNTFBODI1QjAwNDEyM0ZGIC8qIEJpbmFyeVNlbWFwaG9yZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQThBNDczOEExNTFBODI1QjAwNDEyM0ZGIC8qIEJpdG1hcC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQThBNDczOEMxNTFBODI1QjAwNDEyM0ZGIC8qIEJpdFZlY3Rvci5oIGluIEhlYWRl
cnMgKi8sCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTYxMDk2KQorKysgU291
cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcg
QEAgc2V0KFdURl9IRUFERVJTCiAgICAgRmFzdE1hbGxvYy5oCiAgICAgRmVhdHVyZURlZmluZXMu
aAogICAgIEZpbGVQcmludFN0cmVhbS5oCisgICAgRmlsdGVySXRlcmF0b3IuaAogICAgIEZsaXBC
eXRlcy5oCiAgICAgRm9yd2FyZC5oCiAgICAgRnVuY3Rpb25EaXNwYXRjaGVyLmgKQEAgLTQyLDYg
KzQzLDcgQEAgc2V0KFdURl9IRUFERVJTCiAgICAgSGFzaFRhYmxlLmgKICAgICBIYXNoVHJhaXRz
LmgKICAgICBIZXhOdW1iZXIuaAorICAgIEl0ZXJhdG9yUGFpci5oCiAgICAgTGlzdEhhc2hTZXQu
aAogICAgIExvY2tlci5oCiAgICAgTUQ1LmgKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0ZpbHRlckl0
ZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvRmlsdGVySXRlcmF0b3IuaAko
cmV2aXNpb24gMTYxMDcxKQkoZnJvbSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRmlsdGVySXRlcmF0
b3IuaDoxNjEwNzEpCisrKyBTb3VyY2UvV1RGL3d0Zi9GaWx0ZXJJdGVyYXRvci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEZpbHRlckl0ZXJh
dG9yX2gKKyNkZWZpbmUgRmlsdGVySXRlcmF0b3JfaAorCisjaW5jbHVkZSAiQVBJT2JqZWN0Lmgi
CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgor
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIEFQSSB7CisKK3RlbXBsYXRlPHR5
cGVuYW1lIFByZWRpY2F0ZSwgdHlwZW5hbWUgQ2FzdCwgdHlwZW5hbWUgSXRlcmF0b3I+CitjbGFz
cyBGaWx0ZXJJdGVyYXRvciB7CitwdWJsaWM6CisgICAgRmlsdGVySXRlcmF0b3IoUHJlZGljYXRl
IHByZWQsIENhc3QgY2FzdCwgSXRlcmF0b3IgYmVnaW4sIEl0ZXJhdG9yIGVuZCkKKyAgICAgICAg
OiBtX3ByZWQoc3RkOjptb3ZlKHByZWQpKQorICAgICAgICAsIG1fY2FzdChzdGQ6Om1vdmUoY2Fz
dCkpCisgICAgICAgICwgbV9pdGVyKHN0ZDo6bW92ZShiZWdpbikpCisgICAgICAgICwgbV9lbmQo
c3RkOjptb3ZlKGVuZCkpCisgICAgeworICAgICAgICB3aGlsZSAobV9pdGVyICE9IG1fZW5kICYm
ICFtX3ByZWQoKm1faXRlcikpCisgICAgICAgICAgICArK21faXRlcjsKKyAgICB9CisKKyAgICBG
aWx0ZXJJdGVyYXRvciYgb3BlcmF0b3IrKygpCisgICAgeworICAgICAgICB3aGlsZSAobV9pdGVy
ICE9IG1fZW5kKSB7CisgICAgICAgICAgICArK21faXRlcjsKKyAgICAgICAgICAgIGlmIChtX2l0
ZXIgPT0gbV9lbmQgfHwgbV9wcmVkKCptX2l0ZXIpKQorICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICBjb25zdCBkZWNs
dHlwZShzdGQ6OmRlY2x2YWw8Q2FzdD4oKSgqc3RkOjpkZWNsdmFsPEl0ZXJhdG9yPigpKSkgb3Bl
cmF0b3IqKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2l0ZXIgIT0gbV9lbmQpOwor
ICAgICAgICBBU1NFUlQobV9wcmVkKCptX2l0ZXIpKTsKKyAgICAgICAgcmV0dXJuIG1fY2FzdCgq
bV9pdGVyKTsKKyAgICB9CisKKyAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KEZpbHRlckl0ZXJh
dG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9pdGVyID09IG90aGVyLm1faXRlcjsgfQorICAg
IGlubGluZSBib29sIG9wZXJhdG9yIT0oRmlsdGVySXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJl
dHVybiBtX2l0ZXIgIT0gb3RoZXIubV9pdGVyOyB9CisKK3ByaXZhdGU6CisgICAgY29uc3QgUHJl
ZGljYXRlIG1fcHJlZDsKKyAgICBjb25zdCBDYXN0IG1fY2FzdDsKKyAgICBJdGVyYXRvciBtX2l0
ZXI7CisgICAgSXRlcmF0b3IgbV9lbmQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBBUEkKKworI2Vu
ZGlmIC8vIEZpbHRlckl0ZXJhdG9yX2gKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0ZpbHRlckl0ZXJh
dG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvRmlsdGVySXRlcmF0b3IuaAkod29y
a2luZyBjb3B5KQorKysgU291cmNlL1dURi93dGYvRmlsdGVySXRlcmF0b3IuaAkod29ya2luZyBj
b3B5KQpAQCAtMjMsMTUgKzIzLDE0IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAotI2lmbmRlZiBGaWx0ZXJJdGVyYXRvcl9oCi0jZGVmaW5lIEZpbHRlckl0ZXJh
dG9yX2gKKyNpZm5kZWYgV1RGX0ZpbHRlckl0ZXJhdG9yX2gKKyNkZWZpbmUgV1RGX0ZpbHRlckl0
ZXJhdG9yX2gKIAotI2luY2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CiAKLW5hbWVzcGFjZSBBUEkgeworbmFtZXNwYWNlIFdURiB7CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IFByZWRpY2F0ZSwgdHlwZW5hbWUgQ2FzdCwgdHlwZW5hbWUgSXRlcmF0b3I+CiBjbGFzcyBGaWx0
ZXJJdGVyYXRvciB7CkBAIC03Myw2ICs3Miw2IEBAIHByaXZhdGU6CiAgICAgSXRlcmF0b3IgbV9l
bmQ7CiB9OwogCi19IC8vIG5hbWVzcGFjZSBBUEkKK30gLy8gbmFtZXNwYWNlIFdURgogCi0jZW5k
aWYgLy8gRmlsdGVySXRlcmF0b3JfaAorI2VuZGlmIC8vIFdURl9GaWx0ZXJJdGVyYXRvcl9oCklu
ZGV4OiBTb3VyY2UvV1RGL3d0Zi9IYXNoTWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93
dGYvSGFzaE1hcC5oCShyZXZpc2lvbiAxNjEwOTYpCisrKyBTb3VyY2UvV1RGL3d0Zi9IYXNoTWFw
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIyLDYgKzIyLDcgQEAKICNkZWZpbmUgV1RGX0hhc2hNYXBf
aAogCiAjaW5jbHVkZSA8d3RmL0hhc2hUYWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9JdGVyYXRvclBh
aXIuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKQEAgLTkxLDExICs5MiwxMSBAQCBwdWJsaWM6CiAg
ICAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdDsKICAgICBjb25zdF9pdGVyYXRvciBlbmQo
KSBjb25zdDsKIAotICAgIEhhc2hNYXBLZXlzUHJveHkmIGtleXMoKSB7IHJldHVybiBzdGF0aWNf
Y2FzdDxIYXNoTWFwS2V5c1Byb3h5Jj4oKnRoaXMpOyB9Ci0gICAgY29uc3QgSGFzaE1hcEtleXNQ
cm94eSYga2V5cygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEhhc2hNYXBLZXlz
UHJveHkmPigqdGhpcyk7IH0KKyAgICBJdGVyYXRvclBhaXI8dHlwZW5hbWUgaXRlcmF0b3I6Oktl
eXM+IGtleXMoKSB7IHJldHVybiBJdGVyYXRvclBhaXI8dHlwZW5hbWUgaXRlcmF0b3I6OktleXM+
KGJlZ2luKCkua2V5cygpLCBlbmQoKS5rZXlzKCkpOyB9CisgICAgY29uc3QgSXRlcmF0b3JQYWly
PHR5cGVuYW1lIGNvbnN0X2l0ZXJhdG9yOjpLZXlzPiBrZXlzKCkgY29uc3QgeyByZXR1cm4gSXRl
cmF0b3JQYWlyPHR5cGVuYW1lIGNvbnN0X2l0ZXJhdG9yOjpLZXlzPihiZWdpbigpLmtleXMoKSwg
ZW5kKCkua2V5cygpKTsgfQogCi0gICAgSGFzaE1hcFZhbHVlc1Byb3h5JiB2YWx1ZXMoKSB7IHJl
dHVybiBzdGF0aWNfY2FzdDxIYXNoTWFwVmFsdWVzUHJveHkmPigqdGhpcyk7IH0KLSAgICBjb25z
dCBIYXNoTWFwVmFsdWVzUHJveHkmIHZhbHVlcygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0
PGNvbnN0IEhhc2hNYXBWYWx1ZXNQcm94eSY+KCp0aGlzKTsgfQorICAgIEl0ZXJhdG9yUGFpcjx0
eXBlbmFtZSBpdGVyYXRvcjo6VmFsdWVzPiB2YWx1ZXMoKSB7IHJldHVybiBJdGVyYXRvclBhaXI8
dHlwZW5hbWUgaXRlcmF0b3I6OlZhbHVlcz4oYmVnaW4oKS52YWx1ZXMoKSwgZW5kKCkudmFsdWVz
KCkpOyB9CisgICAgY29uc3QgSXRlcmF0b3JQYWlyPHR5cGVuYW1lIGNvbnN0X2l0ZXJhdG9yOjpW
YWx1ZXM+IHZhbHVlcygpIGNvbnN0IHsgcmV0dXJuIEl0ZXJhdG9yUGFpcjx0eXBlbmFtZSBjb25z
dF9pdGVyYXRvcjo6VmFsdWVzPihiZWdpbigpLnZhbHVlcygpLCBlbmQoKS52YWx1ZXMoKSk7IH0K
IAogICAgIGl0ZXJhdG9yIGZpbmQoY29uc3QgS2V5VHlwZSYpOwogICAgIGNvbnN0X2l0ZXJhdG9y
IGZpbmQoY29uc3QgS2V5VHlwZSYpIGNvbnN0OwpAQCAtMTUxLDgxICsxNTIsNiBAQCBwcml2YXRl
OgogICAgIEhhc2hUYWJsZVR5cGUgbV9pbXBsOwogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgS2V5
QXJnLCB0eXBlbmFtZSBNYXBwZWRBcmcsIHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVuYW1lIEtleVRy
YWl0c0FyZywgdHlwZW5hbWUgTWFwcGVkVHJhaXRzQXJnPgotY2xhc3MgSGFzaE1hcDxLZXlBcmcs
IE1hcHBlZEFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJnLCBNYXBwZWRUcmFpdHNBcmc+OjpIYXNo
TWFwS2V5c1Byb3h5IDogCi0gICAgcHJpdmF0ZSBIYXNoTWFwPEtleUFyZywgTWFwcGVkQXJnLCBI
YXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0FyZz4gewotICAgIHB1YmxpYzoKLSAg
ICAgICAgdHlwZWRlZiBIYXNoTWFwPEtleUFyZywgTWFwcGVkQXJnLCBIYXNoQXJnLCBLZXlUcmFp
dHNBcmcsIE1hcHBlZFRyYWl0c0FyZz4gSGFzaE1hcFR5cGU7Ci0gICAgICAgIHR5cGVkZWYgdHlw
ZW5hbWUgSGFzaE1hcFR5cGU6Oml0ZXJhdG9yOjpLZXlzIGl0ZXJhdG9yOwotICAgICAgICB0eXBl
ZGVmIHR5cGVuYW1lIEhhc2hNYXBUeXBlOjpjb25zdF9pdGVyYXRvcjo6S2V5cyBjb25zdF9pdGVy
YXRvcjsKLQotICAgICAgICBpdGVyYXRvciBiZWdpbigpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiBIYXNoTWFwVHlwZTo6YmVnaW4oKS5rZXlzKCk7Ci0gICAgICAgIH0KLQotICAgICAg
ICBpdGVyYXRvciBlbmQoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gSGFzaE1hcFR5
cGU6OmVuZCgpLmtleXMoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbnN0X2l0ZXJhdG9yIGJl
Z2luKCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEhhc2hNYXBUeXBlOjpi
ZWdpbigpLmtleXMoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbnN0X2l0ZXJhdG9yIGVuZCgp
IGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBIYXNoTWFwVHlwZTo6ZW5kKCku
a2V5cygpOwotICAgICAgICB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBmcmllbmQgY2xhc3Mg
SGFzaE1hcDsKLQotICAgICAgICBIYXNoTWFwS2V5c1Byb3h5KCkgV1RGX0RFTEVURURfRlVOQ1RJ
T047Ci0gICAgICAgIEhhc2hNYXBLZXlzUHJveHkoY29uc3QgSGFzaE1hcEtleXNQcm94eSYpIFdU
Rl9ERUxFVEVEX0ZVTkNUSU9OOwotICAgICAgICBIYXNoTWFwS2V5c1Byb3h5JiBvcGVyYXRvcj0o
Y29uc3QgSGFzaE1hcEtleXNQcm94eSYpIFdURl9ERUxFVEVEX0ZVTkNUSU9OOwotICAgICAgICB+
SGFzaE1hcEtleXNQcm94eSgpIFdURl9ERUxFVEVEX0ZVTkNUSU9OOwotfTsKLQotdGVtcGxhdGU8
dHlwZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBNYXBwZWRBcmcsIHR5cGVuYW1lIEhhc2hBcmcsICB0
eXBlbmFtZSBLZXlUcmFpdHNBcmcsIHR5cGVuYW1lIE1hcHBlZFRyYWl0c0FyZz4KLWNsYXNzIEhh
c2hNYXA8S2V5QXJnLCBNYXBwZWRBcmcsIEhhc2hBcmcsIEtleVRyYWl0c0FyZywgTWFwcGVkVHJh
aXRzQXJnPjo6SGFzaE1hcFZhbHVlc1Byb3h5IDogCi0gICAgcHJpdmF0ZSBIYXNoTWFwPEtleUFy
ZywgTWFwcGVkQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0FyZz4gewot
ICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiBIYXNoTWFwPEtleUFyZywgTWFwcGVkQXJnLCBI
YXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0FyZz4gSGFzaE1hcFR5cGU7Ci0gICAg
ICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFzaE1hcFR5cGU6Oml0ZXJhdG9yOjpWYWx1ZXMgaXRlcmF0
b3I7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFzaE1hcFR5cGU6OmNvbnN0X2l0ZXJhdG9y
OjpWYWx1ZXMgY29uc3RfaXRlcmF0b3I7Ci0KLSAgICAgICAgaXRlcmF0b3IgYmVnaW4oKQotICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gSGFzaE1hcFR5cGU6OmJlZ2luKCkudmFsdWVzKCk7
Ci0gICAgICAgIH0KLQotICAgICAgICBpdGVyYXRvciBlbmQoKQotICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gSGFzaE1hcFR5cGU6OmVuZCgpLnZhbHVlcygpOwotICAgICAgICB9Ci0KLSAg
ICAgICAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gSGFzaE1hcFR5cGU6OmJlZ2luKCkudmFsdWVzKCk7Ci0gICAgICAgIH0KLQotICAg
ICAgICBjb25zdF9pdGVyYXRvciBlbmQoKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gSGFzaE1hcFR5cGU6OmVuZCgpLnZhbHVlcygpOwotICAgICAgICB9Ci0KLSAgICBwcml2
YXRlOgotICAgICAgICBmcmllbmQgY2xhc3MgSGFzaE1hcDsKLQotICAgICAgICAvLyBUaGVzZSBh
cmUgaW50ZW50aW9uYWxseSBub3QgaW1wbGVtZW50ZWQuCi0gICAgICAgIEhhc2hNYXBWYWx1ZXNQ
cm94eSgpIFdURl9ERUxFVEVEX0ZVTkNUSU9OOwotICAgICAgICBIYXNoTWFwVmFsdWVzUHJveHko
Y29uc3QgSGFzaE1hcFZhbHVlc1Byb3h5JikgV1RGX0RFTEVURURfRlVOQ1RJT047Ci0gICAgICAg
IEhhc2hNYXBWYWx1ZXNQcm94eSYgb3BlcmF0b3I9KGNvbnN0IEhhc2hNYXBWYWx1ZXNQcm94eSYp
IFdURl9ERUxFVEVEX0ZVTkNUSU9OOwotICAgICAgICB+SGFzaE1hcFZhbHVlc1Byb3h5KCkgV1RG
X0RFTEVURURfRlVOQ1RJT047Ci19OwotCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZVRyYWl0cywg
dHlwZW5hbWUgSGFzaEZ1bmN0aW9ucz4KIHN0cnVjdCBIYXNoTWFwVHJhbnNsYXRvciB7CiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgVCYga2V5KSB7
IHJldHVybiBIYXNoRnVuY3Rpb25zOjpoYXNoKGtleSk7IH0KSW5kZXg6IFNvdXJjZS9XVEYvd3Rm
L0l0ZXJhdG9yUGFpci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0l0ZXJhdG9yUGFp
ci5oCShyZXZpc2lvbiAxNjEwNzEpCShmcm9tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9JdGVyYXRv
clBhaXIuaDoxNjEwNzEpCisrKyBTb3VyY2UvV1RGL3d0Zi9JdGVyYXRvclBhaXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwordGVtcGxhdGU8dHlwZW5hbWUg
SXRlcmF0b3I+IGNsYXNzIEl0ZXJhdG9yUGFpciB7CitwdWJsaWM6CisgICAgSXRlcmF0b3JQYWly
KEl0ZXJhdG9yIGJlZ2luLCBJdGVyYXRvciBlbmQpCisgICAgICAgIDogbV9iZWdpbihzdGQ6Om1v
dmUoYmVnaW4pKQorICAgICAgICAsIG1fZW5kKHN0ZDo6bW92ZShlbmQpKQorICAgIHsKKyAgICB9
CisKKyAgICBJdGVyYXRvciBiZWdpbigpIHsgcmV0dXJuIG1fYmVnaW47IH0KKyAgICBJdGVyYXRv
ciBlbmQoKSB7IHJldHVybiBtX2VuZDsgfQorCitwcml2YXRlOgorICAgIEl0ZXJhdG9yIG1fYmVn
aW4sIG1fZW5kOworfTsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0l0ZXJhdG9yUGFpci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0l0ZXJhdG9yUGFpci5oCSh3b3JraW5nIGNvcHkpCisr
KyBTb3VyY2UvV1RGL3d0Zi9JdGVyYXRvclBhaXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsNyAr
MjMsMTMgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi10ZW1w
bGF0ZTx0eXBlbmFtZSBJdGVyYXRvcj4gY2xhc3MgSXRlcmF0b3JQYWlyIHsKKyNpZm5kZWYgV1RG
X0l0ZXJhdG9yUGFpcl9oCisjZGVmaW5lIFdURl9JdGVyYXRvclBhaXJfaAorCituYW1lc3BhY2Ug
V1RGIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgSXRlcmF0b3I+CitjbGFzcyBJdGVyYXRvclBhaXIg
ewogcHVibGljOgogICAgIEl0ZXJhdG9yUGFpcihJdGVyYXRvciBiZWdpbiwgSXRlcmF0b3IgZW5k
KQogICAgICAgICA6IG1fYmVnaW4oc3RkOjptb3ZlKGJlZ2luKSkKQEAgLTM0LDYgKzQwLDE0IEBA
IHB1YmxpYzoKICAgICBJdGVyYXRvciBiZWdpbigpIHsgcmV0dXJuIG1fYmVnaW47IH0KICAgICBJ
dGVyYXRvciBlbmQoKSB7IHJldHVybiBtX2VuZDsgfQogCisgICAgSXRlcmF0b3IgYmVnaW4oKSBj
b25zdCB7IHJldHVybiBtX2JlZ2luOyB9CisgICAgSXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1
cm4gbV9lbmQ7IH0KKwogcHJpdmF0ZToKLSAgICBJdGVyYXRvciBtX2JlZ2luLCBtX2VuZDsKKyAg
ICBJdGVyYXRvciBtX2JlZ2luOworICAgIEl0ZXJhdG9yIG1fZW5kOwogfTsKKworfSAvLyBuYW1l
c3BhY2UgV1RGCisKKyNlbmRpZiAvLyBXVEZfSXRlcmF0b3JQYWlyCkluZGV4OiBTb3VyY2UvV1RG
L3d0Zi9SZWZQdHJIYXNoTWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUmVmUHRy
SGFzaE1hcC5oCShyZXZpc2lvbiAxNjEwOTYpCisrKyBTb3VyY2UvV1RGL3d0Zi9SZWZQdHJIYXNo
TWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTcwLDYgKzcwLDEyIEBAIG5hbWVzcGFjZSBXVEYgewog
ICAgICAgICBjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0OwogICAgICAgICBjb25zdF9pdGVy
YXRvciBlbmQoKSBjb25zdDsKIAorICAgICAgICBJdGVyYXRvclBhaXI8dHlwZW5hbWUgaXRlcmF0
b3I6OktleXM+IGtleXMoKSB7IHJldHVybiBJdGVyYXRvclBhaXI8dHlwZW5hbWUgaXRlcmF0b3I6
OktleXM+KGJlZ2luKCkua2V5cygpLCBlbmQoKS5rZXlzKCkpOyB9CisgICAgICAgIGNvbnN0IEl0
ZXJhdG9yUGFpcjx0eXBlbmFtZSBjb25zdF9pdGVyYXRvcjo6S2V5cz4ga2V5cygpIGNvbnN0IHsg
cmV0dXJuIEl0ZXJhdG9yUGFpcjx0eXBlbmFtZSBjb25zdF9pdGVyYXRvcjo6S2V5cz4oYmVnaW4o
KS5rZXlzKCksIGVuZCgpLmtleXMoKSk7IH0KKworICAgICAgICBJdGVyYXRvclBhaXI8dHlwZW5h
bWUgaXRlcmF0b3I6OlZhbHVlcz4gdmFsdWVzKCkgeyByZXR1cm4gSXRlcmF0b3JQYWlyPHR5cGVu
YW1lIGl0ZXJhdG9yOjpWYWx1ZXM+KGJlZ2luKCkudmFsdWVzKCksIGVuZCgpLnZhbHVlcygpKTsg
fQorICAgICAgICBjb25zdCBJdGVyYXRvclBhaXI8dHlwZW5hbWUgY29uc3RfaXRlcmF0b3I6OlZh
bHVlcz4gdmFsdWVzKCkgY29uc3QgeyByZXR1cm4gSXRlcmF0b3JQYWlyPHR5cGVuYW1lIGNvbnN0
X2l0ZXJhdG9yOjpWYWx1ZXM+KGJlZ2luKCkudmFsdWVzKCksIGVuZCgpLnZhbHVlcygpKTsgfQor
CiAgICAgICAgIGl0ZXJhdG9yIGZpbmQoY29uc3QgS2V5VHlwZSYpOwogICAgICAgICBpdGVyYXRv
ciBmaW5kKFJhd0tleVR5cGUpOwogICAgICAgICBjb25zdF9pdGVyYXRvciBmaW5kKGNvbnN0IEtl
eVR5cGUmKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2MTA5NikKKysrIFNvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDEz
LTEyLTI2ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW92ZSBGaWx0
ZXJJdGVyYXRvciBhbmQgSXRlcmF0b3JQYWlyIHRvIFdURiBhbmQgcmVpbXBsZW1lbnQgSGFzaE1h
cDo6a2V5cygpIGFuZCBIYXNoTWFwOjp2YWx1ZXMoKSB1c2luZyBJdGVyYXRvclBhaXIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjI1MworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL0FQSUFy
cmF5Lmg6CisgICAgICAgIFVwZGF0ZSBpbmNsdWRlcyBhbmQgbWFrZSBlbGVtZW50c09mVHlwZSgp
IGEgYml0IGVhc2llciB0byByZWFkIGJ5IHVzaW5nIGEgdHlwZWRlZiBhbmQgc29tZQorICAgICAg
ICBqdWRpY2lhbCBpbmRlbnRhdGlvbi4KKworICAgICAgICAqIFNoYXJlZC9GaWx0ZXJJdGVyYXRv
ci5oOiBNb3ZlZCB0byBXVEYuCisgICAgICAgICogU2hhcmVkL0l0ZXJhdG9yUGFpci5oOiBNb3Zl
ZCB0byBXVEYuCisgICAgICAgIAorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgUmVtb3ZlIHRoZSB0d28gZmlsZXMuCisKIDIwMTMtMTItMjYgIE1h
cnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFNtYWxsIGJ1
aWxkIGZpeCBmb3IgdGhlIEdUSysgQ01ha2UgcG9ydApJbmRleDogU291cmNlL1dlYktpdDIvU2hh
cmVkL0FQSUFycmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSUFy
cmF5LmgJKHJldmlzaW9uIDE2MTA5NikKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElBcnJh
eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw5ICsyNyw5IEBACiAjZGVmaW5lIEFQSUFycmF5X2gK
IAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgotI2luY2x1ZGUgIkZpbHRlckl0ZXJhdG9yLmgiCi0j
aW5jbHVkZSAiSXRlcmF0b3JQYWlyLmgiCisjaW5jbHVkZSA8d3RmL0ZpbHRlckl0ZXJhdG9yLmg+
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvSXRlcmF0b3JQYWlyLmg+
CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAK
QEAgLTY2LDkgKzY2LDE0IEBAIHB1YmxpYzoKICAgICBWZWN0b3I8UmVmUHRyPE9iamVjdD4+JiBl
bGVtZW50cygpIHsgcmV0dXJuIG1fZWxlbWVudHM7IH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+Ci0gICAgSXRlcmF0b3JQYWlyPEZpbHRlckl0ZXJhdG9yPGRlY2x0eXBlKCZpc1R5cGU8VD4p
LCBkZWNsdHlwZSgmZ2V0T2JqZWN0PFQ+KSwgVmVjdG9yPFJlZlB0cjxPYmplY3Q+Pjo6Y29uc3Rf
aXRlcmF0b3I+PiBlbGVtZW50c09mVHlwZSgpCisgICAgV1RGOjpJdGVyYXRvclBhaXI8V1RGOjpG
aWx0ZXJJdGVyYXRvcjxkZWNsdHlwZSgmaXNUeXBlPFQ+KSwgZGVjbHR5cGUoJmdldE9iamVjdDxU
PiksIFZlY3RvcjxSZWZQdHI8T2JqZWN0Pj46OmNvbnN0X2l0ZXJhdG9yPj4gZWxlbWVudHNPZlR5
cGUoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIEl0ZXJhdG9yUGFpcjxGaWx0ZXJJdGVyYXRvcjxk
ZWNsdHlwZSgmaXNUeXBlPFQ+KSwgZGVjbHR5cGUoJmdldE9iamVjdDxUPiksIFZlY3RvcjxSZWZQ
dHI8T2JqZWN0Pj46OmNvbnN0X2l0ZXJhdG9yPj4oRmlsdGVySXRlcmF0b3I8ZGVjbHR5cGUoJmlz
VHlwZTxUPiksIGRlY2x0eXBlKCZnZXRPYmplY3Q8VD4pLCBWZWN0b3I8UmVmUHRyPE9iamVjdD4+
Ojpjb25zdF9pdGVyYXRvcj4oaXNUeXBlPFQ+LCBnZXRPYmplY3Q8VD4sIG1fZWxlbWVudHMuYmVn
aW4oKSwgbV9lbGVtZW50cy5lbmQoKSksIEZpbHRlckl0ZXJhdG9yPGRlY2x0eXBlKCZpc1R5cGU8
VD4pLCBkZWNsdHlwZSgmZ2V0T2JqZWN0PFQ+KSwgVmVjdG9yPFJlZlB0cjxPYmplY3Q+Pjo6Y29u
c3RfaXRlcmF0b3I+KGlzVHlwZTxUPiwgZ2V0T2JqZWN0PFQ+LCBtX2VsZW1lbnRzLmVuZCgpLCBt
X2VsZW1lbnRzLmVuZCgpKSk7CisgICAgICAgIHR5cGVkZWYgV1RGOjpGaWx0ZXJJdGVyYXRvcjxk
ZWNsdHlwZSgmaXNUeXBlPFQ+KSwgZGVjbHR5cGUoJmdldE9iamVjdDxUPiksIFZlY3RvcjxSZWZQ
dHI8T2JqZWN0Pj46OmNvbnN0X2l0ZXJhdG9yPiBJdGVyYXRvcjsKKyAgICAKKyAgICAgICAgcmV0
dXJuIFdURjo6SXRlcmF0b3JQYWlyPEl0ZXJhdG9yPigKKyAgICAgICAgICAgIEl0ZXJhdG9yKGlz
VHlwZTxUPiwgZ2V0T2JqZWN0PFQ+LCBtX2VsZW1lbnRzLmJlZ2luKCksIG1fZWxlbWVudHMuZW5k
KCkpLAorICAgICAgICAgICAgSXRlcmF0b3IoaXNUeXBlPFQ+LCBnZXRPYmplY3Q8VD4sIG1fZWxl
bWVudHMuZW5kKCksIG1fZWxlbWVudHMuZW5kKCkpCisgICAgICAgICk7CiAgICAgfQogCiBwcml2
YXRlOgpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL0ZpbHRlckl0ZXJhdG9yLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0ZpbHRlckl0ZXJhdG9yLmgJKHJldmlzaW9u
IDE2MTA5NikKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9GaWx0ZXJJdGVyYXRvci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDc4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEZpbHRlckl0
ZXJhdG9yX2gKLSNkZWZpbmUgRmlsdGVySXRlcmF0b3JfaAotCi0jaW5jbHVkZSAiQVBJT2JqZWN0
LmgiCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5o
PgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIEFQSSB7Ci0KLXRlbXBsYXRl
PHR5cGVuYW1lIFByZWRpY2F0ZSwgdHlwZW5hbWUgQ2FzdCwgdHlwZW5hbWUgSXRlcmF0b3I+Ci1j
bGFzcyBGaWx0ZXJJdGVyYXRvciB7Ci1wdWJsaWM6Ci0gICAgRmlsdGVySXRlcmF0b3IoUHJlZGlj
YXRlIHByZWQsIENhc3QgY2FzdCwgSXRlcmF0b3IgYmVnaW4sIEl0ZXJhdG9yIGVuZCkKLSAgICAg
ICAgOiBtX3ByZWQoc3RkOjptb3ZlKHByZWQpKQotICAgICAgICAsIG1fY2FzdChzdGQ6Om1vdmUo
Y2FzdCkpCi0gICAgICAgICwgbV9pdGVyKHN0ZDo6bW92ZShiZWdpbikpCi0gICAgICAgICwgbV9l
bmQoc3RkOjptb3ZlKGVuZCkpCi0gICAgewotICAgICAgICB3aGlsZSAobV9pdGVyICE9IG1fZW5k
ICYmICFtX3ByZWQoKm1faXRlcikpCi0gICAgICAgICAgICArK21faXRlcjsKLSAgICB9Ci0KLSAg
ICBGaWx0ZXJJdGVyYXRvciYgb3BlcmF0b3IrKygpCi0gICAgewotICAgICAgICB3aGlsZSAobV9p
dGVyICE9IG1fZW5kKSB7Ci0gICAgICAgICAgICArK21faXRlcjsKLSAgICAgICAgICAgIGlmICht
X2l0ZXIgPT0gbV9lbmQgfHwgbV9wcmVkKCptX2l0ZXIpKQotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICBjb25zdCBk
ZWNsdHlwZShzdGQ6OmRlY2x2YWw8Q2FzdD4oKSgqc3RkOjpkZWNsdmFsPEl0ZXJhdG9yPigpKSkg
b3BlcmF0b3IqKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX2l0ZXIgIT0gbV9lbmQp
OwotICAgICAgICBBU1NFUlQobV9wcmVkKCptX2l0ZXIpKTsKLSAgICAgICAgcmV0dXJuIG1fY2Fz
dCgqbV9pdGVyKTsKLSAgICB9Ci0KLSAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KEZpbHRlckl0
ZXJhdG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9pdGVyID09IG90aGVyLm1faXRlcjsgfQot
ICAgIGlubGluZSBib29sIG9wZXJhdG9yIT0oRmlsdGVySXRlcmF0b3ImIG90aGVyKSBjb25zdCB7
IHJldHVybiBtX2l0ZXIgIT0gb3RoZXIubV9pdGVyOyB9Ci0KLXByaXZhdGU6Ci0gICAgY29uc3Qg
UHJlZGljYXRlIG1fcHJlZDsKLSAgICBjb25zdCBDYXN0IG1fY2FzdDsKLSAgICBJdGVyYXRvciBt
X2l0ZXI7Ci0gICAgSXRlcmF0b3IgbV9lbmQ7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBBUEkKLQot
I2VuZGlmIC8vIEZpbHRlckl0ZXJhdG9yX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9J
dGVyYXRvclBhaXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvSXRlcmF0
b3JQYWlyLmgJKHJldmlzaW9uIDE2MTA5NikKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9JdGVy
YXRvclBhaXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSwzOSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
dGVtcGxhdGU8dHlwZW5hbWUgSXRlcmF0b3I+IGNsYXNzIEl0ZXJhdG9yUGFpciB7Ci1wdWJsaWM6
Ci0gICAgSXRlcmF0b3JQYWlyKEl0ZXJhdG9yIGJlZ2luLCBJdGVyYXRvciBlbmQpCi0gICAgICAg
IDogbV9iZWdpbihzdGQ6Om1vdmUoYmVnaW4pKQotICAgICAgICAsIG1fZW5kKHN0ZDo6bW92ZShl
bmQpKQotICAgIHsKLSAgICB9Ci0KLSAgICBJdGVyYXRvciBiZWdpbigpIHsgcmV0dXJuIG1fYmVn
aW47IH0KLSAgICBJdGVyYXRvciBlbmQoKSB7IHJldHVybiBtX2VuZDsgfQotCi1wcml2YXRlOgot
ICAgIEl0ZXJhdG9yIG1fYmVnaW4sIG1fZW5kOwotfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dl
YktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE2MTA5NikK
KysrIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29y
a2luZyBjb3B5KQpAQCAtNzM0LDcgKzczNCw2IEBACiAJCTZFRTg0OUM4MTM2OEQ5MzkwMDM4RDQ4
MSAvKiBXS0luc3BlY3RvclByaXZhdGVNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDZFRTg0OUM2MTM2OEQ5MkQwMDM4RDQ4MSAvKiBXS0luc3BlY3Rv
clByaXZhdGVNYWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk3MjhFODZGMTE3OTUxODhDMDA4Nzg3OUUgLyogV2ViQ29sb3JQaWNrZXJNYWMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyOEU4NkVGMTc5
NTE4OEMwMDg3ODc5RSAvKiBXZWJDb2xvclBpY2tlck1hYy5oICovOyB9OwogCQk3MjhFODZGMjE3
OTUxODhDMDA4Nzg3OUUgLyogV2ViQ29sb3JQaWNrZXJNYWMubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjhFODZGMDE3OTUxODhDMDA4Nzg3OUUgLyog
V2ViQ29sb3JQaWNrZXJNYWMubW0gKi87IH07Ci0JCTc1MkE4MDc3MTgzRDZEQTcwMDNENjU5RSAv
KiBGaWx0ZXJJdGVyYXRvci5oIGluIENvcHkgRmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNzUyQTgwNzYxODNENkRBNzAwM0Q2NTlFIC8qIEZpbHRlckl0ZXJhdG9yLmgg
Ki87IH07CiAJCTc1NTQyMkJCMTgwNjJCOUMwMDQ2RjZBOCAvKiBXS09yaWdpbkRhdGFNYW5hZ2Vy
LmNwcCBpbiBDb3B5IEZpbGVzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1
NTQyMkI5MTgwNjJCOUMwMDQ2RjZBOCAvKiBXS09yaWdpbkRhdGFNYW5hZ2VyLmNwcCAqLzsgfTsK
IAkJNzU1NDIyQkMxODA2MkI5QzAwNDZGNkE4IC8qIFdLT3JpZ2luRGF0YU1hbmFnZXIuaCBpbiBD
b3B5IEZpbGVzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1NTQyMkJBMTgw
NjJCOUMwMDQ2RjZBOCAvKiBXS09yaWdpbkRhdGFNYW5hZ2VyLmggKi87IH07CiAJCTc1NTQyMkJE
MTgwNjJCQjIwMDQ2RjZBOCAvKiBXS09yaWdpbkRhdGFNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1NTQyMkI5MTgwNjJCOUMwMDQ2RjZB
OCAvKiBXS09yaWdpbkRhdGFNYW5hZ2VyLmNwcCAqLzsgfTsKQEAgLTc0Miw3ICs3NDEsNiBAQAog
CQk3NTU0MjJDNDE4MDYyQkY5MDA0NkY2QTggLyogV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTU0MjJC
RTE4MDYyQkU0MDA0NkY2QTggLyogV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eS5jcHAgKi87IH07
CiAJCTc1NTQyMkNCMTgwNjUwMDIwMDQ2RjZBOCAvKiBXZWJPcmlnaW5EYXRhTWFuYWdlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTU0MjJDNjE4
MDY0RkZDMDA0NkY2QTggLyogV2ViT3JpZ2luRGF0YU1hbmFnZXIuY3BwICovOyB9OwogCQk3NTU0
MjJDQzE4MDc3M0NFMDA0NkY2QTggLyogV2ViT3JpZ2luRGF0YU1hbmFnZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1NTQyMkM3MTgwNjRGRkMwMDQ2
RjZBOCAvKiBXZWJPcmlnaW5EYXRhTWFuYWdlci5oICovOyB9OwotCQk3NTdBRjk3ODE4NEQxMzE0
MDBFNjMxNkUgLyogSXRlcmF0b3JQYWlyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3NTdBRjk3NjE4NEQxMzA1MDBFNjMxNkUgLyogSXRlcmF0b3JQYWly
LmggKi87IH07CiAJCTc1OUNDRDU4MTgwOEYxNjQwMDc4RThBOCAvKiBXZWJPcmlnaW5EYXRhTWFu
YWdlclByb3h5Q2hhbmdlQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDc1OUNDRDU0MTgwOEYxNjAwMDc4RThBOCAvKiBXZWJPcmlnaW5EYXRh
TWFuYWdlclByb3h5Q2hhbmdlQ2xpZW50LmNwcCAqLzsgfTsKIAkJNzU5Q0NENTkxODA4RjE2OTAw
NzhFOEE4IC8qIFdlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHlDaGFuZ2VDbGllbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1OUNDRDU1MTgwOEYxNjAw
MDc4RThBOCAvKiBXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5Q2hhbmdlQ2xpZW50LmggKi87IH07
CiAJCTc1OUNDRDVBMTgwOEY2MTYwMDc4RThBOCAvKiBXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTU0MjJC
RjE4MDYyQkU0MDA0NkY2QTggLyogV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eS5oICovOyB9OwpA
QCAtMTUxNSw3ICsxNTEzLDYgQEAKIAkJCQk1MUE2MEIyQTE4MENDRUI1MDBGM0JGNTAgLyogRGF0
YWJhc2VQcm9jZXNzLmFwcCBpbiBDb3B5IEZpbGVzICovLAogCQkJCTc1NTQyMkMzMTgwNjJCRTQw
MDQ2RjZBOCAvKiBXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluIGluIENvcHkg
RmlsZXMgKi8sCiAJCQkJMUE1MERCNjYxMTBBM0Q1NzAwMEQzRkU1IC8qIFdlYlByb2Nlc3MuYXBw
IGluIENvcHkgRmlsZXMgKi8sCi0JCQkJNzUyQTgwNzcxODNENkRBNzAwM0Q2NTlFIC8qIEZpbHRl
ckl0ZXJhdG9yLmggaW4gQ29weSBGaWxlcyAqLywKIAkJCQk3NTU0MjJCQjE4MDYyQjlDMDA0NkY2
QTggLyogV0tPcmlnaW5EYXRhTWFuYWdlci5jcHAgaW4gQ29weSBGaWxlcyAqLywKIAkJCSk7CiAJ
CQluYW1lID0gIkNvcHkgRmlsZXMiOwpAQCAtMjM1NCw3ICsyMzUxLDYgQEAKIAkJNkVFODQ5QzYx
MzY4RDkyRDAwMzhENDgxIC8qIFdLSW5zcGVjdG9yUHJpdmF0ZU1hYy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBXS0luc3BlY3RvclByaXZhdGVNYWMuaDsgcGF0aCA9IG1hYy9X
S0luc3BlY3RvclByaXZhdGVNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI4
RTg2RUYxNzk1MTg4QzAwODc4NzlFIC8qIFdlYkNvbG9yUGlja2VyTWFjLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvbG9yUGlja2VyTWFjLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTcyOEU4NkYwMTc5NTE4OEMwMDg3ODc5RSAvKiBXZWJDb2xvclBpY2tl
ck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkNvbG9y
UGlja2VyTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3NTJBODA3NjE4M0Q2
REE3MDAzRDY1OUUgLyogRmlsdGVySXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRmlsdGVySXRlcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NzU1NDIyQjkxODA2MkI5QzAwNDZGNkE4IC8qIFdLT3JpZ2luRGF0YU1hbmFnZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tPcmlnaW5EYXRhTWFuYWdlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc1NTQyMkJBMTgwNjJCOUMwMDQ2RjZBOCAv
KiBXS09yaWdpbkRhdGFNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdLT3JpZ2luRGF0YU1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzU1
NDIyQkUxODA2MkJFNDAwNDZGNkE4IC8qIFdlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHkuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViT3JpZ2luRGF0YU1hbmFnZXJQ
cm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMzYzLDcgKzIzNTksNiBA
QAogCQk3NTU0MjJDNjE4MDY0RkZDMDA0NkY2QTggLyogV2ViT3JpZ2luRGF0YU1hbmFnZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViT3JpZ2luRGF0YU1hbmFn
ZXIuY3BwOyBwYXRoID0gT3JpZ2luRGF0YS9XZWJPcmlnaW5EYXRhTWFuYWdlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc1NTQyMkM3MTgwNjRGRkMwMDQ2RjZBOCAvKiBXZWJP
cmlnaW5EYXRhTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJP
cmlnaW5EYXRhTWFuYWdlci5oOyBwYXRoID0gT3JpZ2luRGF0YS9XZWJPcmlnaW5EYXRhTWFuYWdl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NTU0MjJDODE4MDY0RkZDMDA0NkY2
QTggLyogV2ViT3JpZ2luRGF0YU1hbmFnZXIubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBu
YW1lID0gV2ViT3JpZ2luRGF0YU1hbmFnZXIubWVzc2FnZXMuaW47IHBhdGggPSBPcmlnaW5EYXRh
L1dlYk9yaWdpbkRhdGFNYW5hZ2VyLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk3NTdBRjk3NjE4NEQxMzA1MDBFNjMxNkUgLyogSXRlcmF0b3JQYWlyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEl0ZXJhdG9yUGFpci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3NTlDQ0Q1NDE4MDhGMTYwMDA3OEU4QTggLyogV2ViT3JpZ2luRGF0
YU1hbmFnZXJQcm94eUNoYW5nZUNsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5Q2hhbmdlQ2xpZW50LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzU5Q0NENTUxODA4RjE2MDAwNzhFOEE4IC8qIFdl
Yk9yaWdpbkRhdGFNYW5hZ2VyUHJveHlDaGFuZ2VDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eUNoYW5nZUNsaWVudC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NUU3NDlFNTE4MERCQjk4MDAwODhCQTYgLyog
V2ViT3JpZ2luRGF0YU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV2ViT3JpZ2luRGF0YU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzU0Miw3ICszNTM3LDYgQEAKIAkJ
CQkwRkI2NTkyMjEyMDhCNERCMDA0NDgxNkMgLyogRHJhd2luZ0FyZWFJbmZvLmggKi8sCiAJCQkJ
OENGRUNFOTMxNDkwRjE0MDAwMkFBQTMyIC8qIEVkaXRvclN0YXRlLmNwcCAqLywKIAkJCQkxQUE0
MUFCNDEyQzAyRUM0MDAyQkU2N0IgLyogRWRpdG9yU3RhdGUuaCAqLywKLQkJCQk3NTJBODA3NjE4
M0Q2REE3MDAzRDY1OUUgLyogRmlsdGVySXRlcmF0b3IuaCAqLywKIAkJCQlCQ0U4MUQ4QTEzMTlG
N0VGMDAyNDE5MTAgLyogRm9udEluZm8uY3BwICovLAogCQkJCUJDRTgxRDhCMTMxOUY3RUYwMDI0
MTkxMCAvKiBGb250SW5mby5oICovLAogCQkJCTc2MkI3NDgxMTIwQkJBMDEwMDgxOTMzOSAvKiBG
b250U21vb3RoaW5nTGV2ZWwuaCAqLywKQEAgLTM1NTAsNyArMzU0NCw2IEBACiAJCQkJQkNDRjZC
MjMxMkM5M0U3QTAwOEY5QzM1IC8qIEltYWdlT3B0aW9ucy5oICovLAogCQkJCUJDQkNCMENDMTIx
NUUzM0EwMERFNTlDQSAvKiBJbW11dGFibGVEaWN0aW9uYXJ5LmNwcCAqLywKIAkJCQlCQ0JDQjBD
QTEyMTVFMzIxMDBERTU5Q0EgLyogSW1tdXRhYmxlRGljdGlvbmFyeS5oICovLAotCQkJCTc1N0FG
OTc2MTg0RDEzMDUwMEU2MzE2RSAvKiBJdGVyYXRvclBhaXIuaCAqLywKIAkJCQkxQTkyREMxMDEy
RjhCQTQ2MDAxN0FGNjUgLyogTGF5ZXJUcmVlQ29udGV4dC5oICovLAogCQkJCUJDQjBBRUU4MTIy
RjUzRTMwMEIxMzQxRSAvKiBNdXRhYmxlRGljdGlvbmFyeS5jcHAgKi8sCiAJCQkJQkNCMEFFRTcx
MjJGNTNFMzAwQjEzNDFFIC8qIE11dGFibGVEaWN0aW9uYXJ5LmggKi8sCkBAIC01OTcxLDcgKzU5
NjQsNiBAQAogCQkJCTUxRDEzMDU2MTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVtUmVzcG9uc2VE
YXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTc5MDg4RjE2OUJBQTZBMDA2OTA0QzcgLyogU2Vj
SXRlbVNoaW0uaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMUY4QTdCMTM4QjQ2MDkwMEE5NUY0NCAv
KiBTZWNJdGVtU2hpbUxpYnJhcnkuaCBpbiBIZWFkZXJzICovLAotCQkJCTc1N0FGOTc4MTg0RDEz
MTQwMEU2MzE2RSAvKiBJdGVyYXRvclBhaXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxNzkwODkx
MTY5QkFBODIwMDY5MDRDNyAvKiBTZWNJdGVtU2hpbU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxRkIwMEFDNzE4NUY3NjQ2MDAxOTE0MkUgLyogV0tXZWJQcm9jZXNzUGx1Z0luUGFnZUdy
b3VwLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMThFNjkwQzE2OUI1NjNGMDA5QjY2NzAgLyogU2Vj
SXRlbVNoaW1Qcm94eS5oIGluIEhlYWRlcnMgKi8sCg==
</data>
<flag name="review"
          id="243712"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>