<?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>133258</bug_id>
          
          <creation_ts>2014-05-24 11:37:37 -0700</creation_ts>
          <short_desc>[WebKit2] Rework WebPreferencesStore to allow easier overriding of defaults</short_desc>
          <delta_ts>2014-05-25 12:00:07 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1011519</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-05-24 11:37:37 -0700</bug_when>
    <thetext>[WebKit2] Rework WebPreferencesStore to allow easier overriding of defaults</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1011520</commentid>
    <comment_count>1</comment_count>
      <attachid>232022</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-05-24 11:46:32 -0700</bug_when>
    <thetext>Created attachment 232022
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1011521</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-05-24 11:49:13 -0700</bug_when>
    <thetext>Attachment 232022 did not pass style-queue:


ERROR: Source/WebKit2/Shared/WebPreferencesStore.cpp:158:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit2/Shared/WebPreferencesStore.cpp:159:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit2/Shared/WebPreferencesStore.cpp:160:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit2/Shared/WebPreferencesStore.cpp:161:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit2/Shared/WebPreferencesStore.h:353:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebKit2/Shared/WebPreferencesStore.h:354:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebKit2/Shared/WebPreferencesStore.h:355:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebKit2/Shared/WebPreferencesStore.h:356:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebKit2/Shared/WebPreferencesStore.h:357:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebKit2/Shared/WebPreferencesStore.h:382:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 10 in 3 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1011541</commentid>
    <comment_count>3</comment_count>
      <attachid>232022</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-05-24 15:49:46 -0700</bug_when>
    <thetext>Comment on attachment 232022
Patch

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

&gt; Source/WebKit2/Shared/WebPreferencesStore.cpp:122
&gt; +    }

Should have a default case that returns false.

&gt; Source/WebKit2/Shared/WebPreferencesStore.h:386
&gt; +            if (m_type == Type::String)
&gt; +                m_string.~String();

Maybe you can factor this out into a private destroy() member function...

&gt; Source/WebKit2/Shared/WebPreferencesStore.h:412
&gt; +            if (m_type == Type::String)
&gt; +                m_string.~String();

...and call it here too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1011589</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-05-25 12:00:07 -0700</bug_when>
    <thetext>Committed r169321: &lt;http://trac.webkit.org/changeset/169321&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>232022</attachid>
            <date>2014-05-24 11:46:32 -0700</date>
            <delta_ts>2014-05-24 15:49:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-133258-20140524114608.patch</filename>
            <type>text/plain</type>
            <size>19309</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2OTMwOSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDE0LTA1LTI0ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1dlYktpdDJdIFJld29yayBXZWJQcmVm
ZXJlbmNlc1N0b3JlIHRvIGFsbG93IGVhc2llciBvdmVycmlkaW5nIG9mIGRlZmF1bHRzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzMyNTgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBzdXBwb3J0IGNo
YW5naW5nIGRlZmF1bHQgdmFsdWVzIG9mIHByZWZlcmVuY2VzIGJhc2VkIG9uIHdoaWNoIEFQSSB5
b3UgYXJlIHVzaW5nIChlaXRoZXIKKyAgICAgICAgdGhlIGxlZ2FjeSBDLVNQSSBvciB0aGUgT2Jq
ZWN0aXZlLUMgQVBJKSwgb3ZlcmhhdWwgdGhlIFdlYlByZWZlcmVuY2VzU3RvcmUgdG8gdXNlIGEg
c2luZ2xlCisgICAgICAgIEhhc2hNYXAgb2YgU3RyaW5nIC0+IFZhbHVlICh3aGVyZSBWYWx1ZSBp
cyBuZXcgdHlwZSB0aGF0IGNhbiBiZSBhIFN0cmluZywgYm9vbCwgdWludDMyX3Qgb3IgZG91Ymxl
KQorICAgICAgICBpbnN0ZWFkIG9mIGZvdXIgSGFzaE1hcHMuICBUaGlzIGFsbG93cyB1cyB0byB1
c2UgdHdvIG9mIHRoZXNlIG5ldyBIYXNoTWFwcywgb25lIGZvciB0aGUgYWN0dWFsCisgICAgICAg
IHNldCB2YWx1ZXMsIGFuZCBvbmUgZm9yIG92ZXJyaWRkZW4gZGVmYXVsdHMuIFRoaXMgbmV3IFZh
bHVlIGNsYXNzIHdpbGwgYWxzbyBhbGxvdyBlYXNpZXIgaW5jcmVtZW50YWwKKyAgICAgICAgdXBk
YXRpbmcgb2YgcHJlZmVyZW5jZXMgaW4gdGhlIGZ1dHVyZS4KKyAgICAgICAgCisgICAgICAgIE90
aGVyIG5vdGFibGUgY2hhbmdlczoKKyAgICAgICAgLSBSZW1vdmVkIEZsb2F0IGtpbmQgb2YgcHJl
ZmVyZW5jZXMuIFRoZXJlIHdlcmUgbm9uZS4KKyAgICAgICAgLSBNb3ZlIFN0b3JhZ2VCbG9ja2lu
Z1BvbGljeSBwcmVmZXJlbmNlIHRvIHRoZSBjb3JyZWN0IGdyb3VwLCBpdCdzIGEgdWludDMyX3Qs
IG5vdCBib29sLgorCisgICAgICAgICogU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuY3BwOgor
ICAgICAgICAqIFNoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmg6CisKIDIwMTQtMDUtMjQgIENh
cmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJFR1JF
U1NJT04ocjE2NTg0MSk6IE1lc3NhZ2VzIHNlbnQgYmVmb3JlIHRoZSBjaGlsZCBwcm9jZXNzIGlz
IGxhdW5jaGVkIGFyZSBuZXZlciBzZW50IGFmdGVyIHIxNjU4NDEKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5jcHAJKHJldmlzaW9uIDE2OTI5OSkK
KysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjAsMzAgKzYwLDg1IEBAIHN0YXRpYyBCb29sT3ZlcnJpZGVzTWFwJiBib29s
VGVzdFJ1bm5lck8KICAgICByZXR1cm4gbWFwOwogfQogCit2b2lkIFdlYlByZWZlcmVuY2VzU3Rv
cmU6OlZhbHVlOjplbmNvZGUoSVBDOjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7
CisgICAgZW5jb2Rlci5lbmNvZGVFbnVtKG1fdHlwZSk7CisgICAgCisgICAgc3dpdGNoIChtX3R5
cGUpIHsKKyAgICBjYXNlIFR5cGU6Ok5vbmU6CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVHlw
ZTo6U3RyaW5nOgorICAgICAgICBlbmNvZGVyIDw8IG1fc3RyaW5nOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIFR5cGU6OkJvb2w6CisgICAgICAgIGVuY29kZXIgPDwgbV9ib29sOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFR5cGU6OlVJbnQzMjoKKyAgICAgICAgZW5jb2RlciA8PCBtX3Vp
bnQzMjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUeXBlOjpEb3VibGU6CisgICAgICAgIGVu
Y29kZXIgPDwgbV9kb3VibGU7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworYm9vbCBXZWJQ
cmVmZXJlbmNlc1N0b3JlOjpWYWx1ZTo6ZGVjb2RlKElQQzo6QXJndW1lbnREZWNvZGVyJiBkZWNv
ZGVyLCBWYWx1ZSYgcmVzdWx0KQoreworICAgIFZhbHVlOjpUeXBlIHR5cGU7CisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZUVudW0odHlwZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAg
ICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIFR5cGU6Ok5vbmU6CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgVHlwZTo6U3RyaW5nOiB7CisgICAgICAgIFN0cmluZyB2YWx1ZTsKKyAgICAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZSh2YWx1ZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIHJlc3VsdCA9IFZhbHVlKHZhbHVlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
IGNhc2UgVHlwZTo6Qm9vbDogeworICAgICAgICBib29sIHZhbHVlOworICAgICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHZhbHVlKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
cmVzdWx0ID0gVmFsdWUodmFsdWUpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBU
eXBlOjpVSW50MzI6IHsKKyAgICAgICAgdWludDMyX3QgdmFsdWU7CisgICAgICAgIGlmICghZGVj
b2Rlci5kZWNvZGUodmFsdWUpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBy
ZXN1bHQgPSBWYWx1ZSh2YWx1ZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFR5
cGU6OkRvdWJsZTogeworICAgICAgICBkb3VibGUgdmFsdWU7CisgICAgICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUodmFsdWUpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXN1
bHQgPSBWYWx1ZSh2YWx1ZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICB9CisKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKwogV2ViUHJlZmVyZW5jZXNTdG9yZTo6V2ViUHJlZmVyZW5jZXNTdG9y
ZSgpCiB7CiB9CiAKIHZvaWQgV2ViUHJlZmVyZW5jZXNTdG9yZTo6ZW5jb2RlKElQQzo6QXJndW1l
bnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewotICAgIGVuY29kZXIgPDwgbV9zdHJpbmdWYWx1
ZXM7Ci0gICAgZW5jb2RlciA8PCBtX2Jvb2xWYWx1ZXM7Ci0gICAgZW5jb2RlciA8PCBtX3VpbnQz
MlZhbHVlczsKLSAgICBlbmNvZGVyIDw8IG1fZG91YmxlVmFsdWVzOwotICAgIGVuY29kZXIgPDwg
bV9mbG9hdFZhbHVlczsKKyAgICBlbmNvZGVyIDw8IG1fdmFsdWVzOworICAgIGVuY29kZXIgPDwg
bV9vdmVycmlkZW5EZWZhdWx0czsKIH0KIAogYm9vbCBXZWJQcmVmZXJlbmNlc1N0b3JlOjpkZWNv
ZGUoSVBDOjpBcmd1bWVudERlY29kZXImIGRlY29kZXIsIFdlYlByZWZlcmVuY2VzU3RvcmUmIHJl
c3VsdCkKIHsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX3N0cmluZ1ZhbHVlcykp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5t
X2Jvb2xWYWx1ZXMpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShyZXN1bHQubV91aW50MzJWYWx1ZXMpKQorICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVz
dWx0Lm1fdmFsdWVzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocmVzdWx0Lm1fZG91YmxlVmFsdWVzKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm1fZmxvYXRWYWx1ZXMpKQorICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocmVzdWx0Lm1fb3ZlcnJpZGVuRGVmYXVsdHMpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC05OCwxNDkgKzE1MywxMjkgQEAgdm9pZCBX
ZWJQcmVmZXJlbmNlc1N0b3JlOjpyZW1vdmVUZXN0UnVubgogICAgIGJvb2xUZXN0UnVubmVyT3Zl
cnJpZGVzTWFwKCkuY2xlYXIoKTsKIH0KIAordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBU
b1R5cGUgeyB9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBNYXBwZWRUeXBlPgotTWFwcGVkVHlwZSBk
ZWZhdWx0VmFsdWVGb3JLZXkoY29uc3QgU3RyaW5nJik7Ci0KLXRlbXBsYXRlPD4KLVN0cmluZyBk
ZWZhdWx0VmFsdWVGb3JLZXkoY29uc3QgU3RyaW5nJiBrZXkpCi17Ci0gICAgc3RhdGljIEhhc2hN
YXA8U3RyaW5nLCBTdHJpbmc+JiBkZWZhdWx0cyA9ICpuZXcgSGFzaE1hcDxTdHJpbmcsIFN0cmlu
Zz47Ci0gICAgaWYgKGRlZmF1bHRzLmlzRW1wdHkoKSkgewotI2RlZmluZSBERUZJTkVfU1RSSU5H
X0RFRkFVTFRTKEtleVVwcGVyLCBLZXlMb3dlciwgVHlwZU5hbWUsIFR5cGUsIERlZmF1bHRWYWx1
ZSkgZGVmYXVsdHMuc2V0KFdlYlByZWZlcmVuY2VzS2V5OjpLZXlMb3dlciMjS2V5KCksIERlZmF1
bHRWYWx1ZSk7Ci0gICAgICAgIEZPUl9FQUNIX1dFQktJVF9TVFJJTkdfUFJFRkVSRU5DRShERUZJ
TkVfU1RSSU5HX0RFRkFVTFRTKQotICAgICAgICBGT1JfRUFDSF9XRUJLSVRfU1RSSU5HX1BSRUZF
UkVOQ0VfTk9UX0lOX1dFQkNPUkUoREVGSU5FX1NUUklOR19ERUZBVUxUUykKLSN1bmRlZiBERUZJ
TkVfU1RSSU5HX0RFRkFVTFRTCi0gICAgfQotCi0gICAgcmV0dXJuIGRlZmF1bHRzLmdldChrZXkp
OwotfQotCi10ZW1wbGF0ZTw+Ci1ib29sIGRlZmF1bHRWYWx1ZUZvcktleShjb25zdCBTdHJpbmcm
IGtleSkKLXsKLSAgICBzdGF0aWMgSGFzaE1hcDxTdHJpbmcsIGJvb2w+JiBkZWZhdWx0cyA9ICpu
ZXcgSGFzaE1hcDxTdHJpbmcsIGJvb2w+OwotICAgIGlmIChkZWZhdWx0cy5pc0VtcHR5KCkpIHsK
LSNkZWZpbmUgREVGSU5FX0JPT0xfREVGQVVMVFMoS2V5VXBwZXIsIEtleUxvd2VyLCBUeXBlTmFt
ZSwgVHlwZSwgRGVmYXVsdFZhbHVlKSBkZWZhdWx0cy5zZXQoV2ViUHJlZmVyZW5jZXNLZXk6Oktl
eUxvd2VyIyNLZXkoKSwgRGVmYXVsdFZhbHVlKTsKLSAgICAgICAgRk9SX0VBQ0hfV0VCS0lUX0JP
T0xfUFJFRkVSRU5DRShERUZJTkVfQk9PTF9ERUZBVUxUUykKLSN1bmRlZiBERUZJTkVfQk9PTF9E
RUZBVUxUUwotICAgIH0KLQotICAgIHJldHVybiBkZWZhdWx0cy5nZXQoa2V5KTsKLX0KK3RlbXBs
YXRlPD4gc3RydWN0IFRvVHlwZTxTdHJpbmc+IHsgc3RhdGljIGNvbnN0IGF1dG8gdmFsdWUgPSBX
ZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZTo6VHlwZTo6U3RyaW5nOyB9OwordGVtcGxhdGU8PiBz
dHJ1Y3QgVG9UeXBlPGJvb2w+IHsgc3RhdGljIGNvbnN0IGF1dG8gdmFsdWUgPSBXZWJQcmVmZXJl
bmNlc1N0b3JlOjpWYWx1ZTo6VHlwZTo6Qm9vbDsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IFRvVHlw
ZTx1aW50MzJfdD4geyBzdGF0aWMgY29uc3QgYXV0byB2YWx1ZSA9IFdlYlByZWZlcmVuY2VzU3Rv
cmU6OlZhbHVlOjpUeXBlOjpVSW50MzI7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBUb1R5cGU8ZG91
YmxlPiB7IHN0YXRpYyBjb25zdCBhdXRvIHZhbHVlID0gV2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFs
dWU6OlR5cGU6OkRvdWJsZTsgfTsKIAotdGVtcGxhdGU8PgotdWludDMyX3QgZGVmYXVsdFZhbHVl
Rm9yS2V5KGNvbnN0IFN0cmluZyYga2V5KQotewotICAgIHN0YXRpYyBIYXNoTWFwPFN0cmluZywg
dWludDMyX3Q+JiBkZWZhdWx0cyA9ICpuZXcgSGFzaE1hcDxTdHJpbmcsIHVpbnQzMl90PjsKLSAg
ICBpZiAoZGVmYXVsdHMuaXNFbXB0eSgpKSB7Ci0jZGVmaW5lIERFRklORV9VSU5UMzJfREVGQVVM
VFMoS2V5VXBwZXIsIEtleUxvd2VyLCBUeXBlTmFtZSwgVHlwZSwgRGVmYXVsdFZhbHVlKSBkZWZh
dWx0cy5zZXQoV2ViUHJlZmVyZW5jZXNLZXk6OktleUxvd2VyIyNLZXkoKSwgRGVmYXVsdFZhbHVl
KTsKLSAgICAgICAgRk9SX0VBQ0hfV0VCS0lUX1VJTlQzMl9QUkVGRVJFTkNFKERFRklORV9VSU5U
MzJfREVGQVVMVFMpCi0jdW5kZWYgREVGSU5FX1VJTlQzMl9ERUZBVUxUUwotICAgIH0KIAotICAg
IHJldHVybiBkZWZhdWx0cy5nZXQoa2V5KTsKLX0KK3RlbXBsYXRlPHR5cGVuYW1lIE1hcHBlZFR5
cGU+IE1hcHBlZFR5cGUgYXMoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUmKTsKIAot
dGVtcGxhdGU8PgotZG91YmxlIGRlZmF1bHRWYWx1ZUZvcktleShjb25zdCBTdHJpbmcmIGtleSkK
LXsKLSAgICBzdGF0aWMgSGFzaE1hcDxTdHJpbmcsIGRvdWJsZT4mIGRlZmF1bHRzID0gKm5ldyBI
YXNoTWFwPFN0cmluZywgZG91YmxlPjsKLSAgICBpZiAoZGVmYXVsdHMuaXNFbXB0eSgpKSB7Ci0j
ZGVmaW5lIERFRklORV9ET1VCTEVfREVGQVVMVFMoS2V5VXBwZXIsIEtleUxvd2VyLCBUeXBlTmFt
ZSwgVHlwZSwgRGVmYXVsdFZhbHVlKSBkZWZhdWx0cy5zZXQoV2ViUHJlZmVyZW5jZXNLZXk6Oktl
eUxvd2VyIyNLZXkoKSwgRGVmYXVsdFZhbHVlKTsKLSAgICAgICAgRk9SX0VBQ0hfV0VCS0lUX0RP
VUJMRV9QUkVGRVJFTkNFKERFRklORV9ET1VCTEVfREVGQVVMVFMpCi0jdW5kZWYgREVGSU5FX0RP
VUJMRV9ERUZBVUxUUwotICAgIH0KK3RlbXBsYXRlPD4gU3RyaW5nIGFzPFN0cmluZz4oY29uc3Qg
V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUmIHZhbHVlKSB7IHJldHVybiB2YWx1ZS5hc1N0cmlu
ZygpOyB9Cit0ZW1wbGF0ZTw+IGJvb2wgYXM8Ym9vbD4oY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9y
ZTo6VmFsdWUmIHZhbHVlKSB7IHJldHVybiB2YWx1ZS5hc0Jvb2woKTsgfQordGVtcGxhdGU8PiB1
aW50MzJfdCBhczx1aW50MzJfdD4oY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUmIHZh
bHVlKSB7IHJldHVybiB2YWx1ZS5hc1VJbnQzMigpOyB9Cit0ZW1wbGF0ZTw+IGRvdWJsZSBhczxk
b3VibGU+KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlJiB2YWx1ZSkgeyByZXR1cm4g
dmFsdWUuYXNEb3VibGUoKTsgfQogCi0gICAgcmV0dXJuIGRlZmF1bHRzLmdldChrZXkpOwotfQog
Ci10ZW1wbGF0ZTw+Ci1mbG9hdCBkZWZhdWx0VmFsdWVGb3JLZXkoY29uc3QgU3RyaW5nJiBrZXkp
CitzdGF0aWMgV2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWVNYXAmIGRlZmF1bHRzKCkKIHsKLSAg
ICBzdGF0aWMgSGFzaE1hcDxTdHJpbmcsIGZsb2F0PiYgZGVmYXVsdHMgPSAqbmV3IEhhc2hNYXA8
U3RyaW5nLCBmbG9hdD47Ci0gICAgaWYgKGRlZmF1bHRzLmlzRW1wdHkoKSkgewotI2RlZmluZSBE
RUZJTkVfRkxPQVRfREVGQVVMVFMoS2V5VXBwZXIsIEtleUxvd2VyLCBUeXBlTmFtZSwgVHlwZSwg
RGVmYXVsdFZhbHVlKSBkZWZhdWx0cy5zZXQoV2ViUHJlZmVyZW5jZXNLZXk6OktleUxvd2VyIyNL
ZXkoKSwgRGVmYXVsdFZhbHVlKTsKLSAgICAgICAgRk9SX0VBQ0hfV0VCS0lUX0ZMT0FUX1BSRUZF
UkVOQ0UoREVGSU5FX0ZMT0FUX0RFRkFVTFRTKQotI3VuZGVmIERFRklORV9GTE9BVF9ERUZBVUxU
UworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZU1h
cD4gZGVmYXVsdHM7CisgICAgaWYgKGRlZmF1bHRzLmdldCgpLmlzRW1wdHkoKSkgeworI2RlZmlu
ZSBERUZJTkVfREVGQVVMVFMoS2V5VXBwZXIsIEtleUxvd2VyLCBUeXBlTmFtZSwgVHlwZSwgRGVm
YXVsdFZhbHVlKSBkZWZhdWx0cy5nZXQoKS5zZXQoV2ViUHJlZmVyZW5jZXNLZXk6OktleUxvd2Vy
IyNLZXkoKSwgV2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUoKFR5cGUpRGVmYXVsdFZhbHVlKSk7
CisgICAgICAgIEZPUl9FQUNIX1dFQktJVF9QUkVGRVJFTkNFKERFRklORV9ERUZBVUxUUykKKyN1
bmRlZiBERUZJTkVfREVGQVVMVFMKICAgICB9CiAKLSAgICByZXR1cm4gZGVmYXVsdHMuZ2V0KGtl
eSk7CisgICAgcmV0dXJuIGRlZmF1bHRzOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBNYXBUeXBl
Pgotc3RhdGljIHR5cGVuYW1lIE1hcFR5cGU6Ok1hcHBlZFR5cGUgdmFsdWVGb3JLZXkoY29uc3Qg
TWFwVHlwZSYgbWFwLCBjb25zdCB0eXBlbmFtZSBNYXBUeXBlOjpLZXlUeXBlJiBrZXkpCit0ZW1w
bGF0ZTx0eXBlbmFtZSBNYXBwZWRUeXBlPgorc3RhdGljIE1hcHBlZFR5cGUgdmFsdWVGb3JLZXko
Y29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWVNYXAmIHZhbHVlcywgY29uc3QgV2ViUHJl
ZmVyZW5jZXNTdG9yZTo6VmFsdWVNYXAmIG92ZXJyaWRlbkRlZmF1bHRzLCBjb25zdCBTdHJpbmcm
IGtleSkKIHsKLSAgICB0eXBlbmFtZSBNYXBUeXBlOjpjb25zdF9pdGVyYXRvciBpdCA9IG1hcC5m
aW5kKGtleSk7Ci0gICAgaWYgKGl0ICE9IG1hcC5lbmQoKSkKLSAgICAgICAgcmV0dXJuIGl0LT52
YWx1ZTsKKyAgICBhdXRvIHZhbHVlc0l0ID0gdmFsdWVzLmZpbmQoa2V5KTsKKyAgICBpZiAodmFs
dWVzSXQgIT0gdmFsdWVzLmVuZCgpICYmIHZhbHVlc0l0LT52YWx1ZS50eXBlKCkgPT0gVG9UeXBl
PE1hcHBlZFR5cGU+Ojp2YWx1ZSkKKyAgICAgICAgcmV0dXJuIGFzPE1hcHBlZFR5cGU+KHZhbHVl
c0l0LT52YWx1ZSk7CisKKyAgICBhdXRvIG92ZXJyaWRlbkRlZmF1bHRzSXQgPSBvdmVycmlkZW5E
ZWZhdWx0cy5maW5kKGtleSk7CisgICAgaWYgKG92ZXJyaWRlbkRlZmF1bHRzSXQgIT0gb3ZlcnJp
ZGVuRGVmYXVsdHMuZW5kKCkgJiYgb3ZlcnJpZGVuRGVmYXVsdHNJdC0+dmFsdWUudHlwZSgpID09
IFRvVHlwZTxNYXBwZWRUeXBlPjo6dmFsdWUpCisgICAgICAgIHJldHVybiBhczxNYXBwZWRUeXBl
PihvdmVycmlkZW5EZWZhdWx0c0l0LT52YWx1ZSk7CisKKyAgICBhdXRvIGRlZmF1bHRzTWFwID0g
ZGVmYXVsdHMoKTsKKyAgICBhdXRvIGRlZmF1bHRzSXQgPSBkZWZhdWx0c01hcC5maW5kKGtleSk7
CisgICAgaWYgKGRlZmF1bHRzSXQgIT0gZGVmYXVsdHNNYXAuZW5kKCkgJiYgZGVmYXVsdHNJdC0+
dmFsdWUudHlwZSgpID09IFRvVHlwZTxNYXBwZWRUeXBlPjo6dmFsdWUpCisgICAgICAgIHJldHVy
biBhczxNYXBwZWRUeXBlPihkZWZhdWx0c0l0LT52YWx1ZSk7CiAKLSAgICByZXR1cm4gZGVmYXVs
dFZhbHVlRm9yS2V5PHR5cGVuYW1lIE1hcFR5cGU6Ok1hcHBlZFR5cGU+KGtleSk7CisgICAgcmV0
dXJuIE1hcHBlZFR5cGUoKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgTWFwVHlwZT4KLXN0YXRp
YyBib29sIHNldFZhbHVlRm9yS2V5KE1hcFR5cGUmIG1hcCwgY29uc3QgdHlwZW5hbWUgTWFwVHlw
ZTo6S2V5VHlwZSYga2V5LCBjb25zdCB0eXBlbmFtZSBNYXBUeXBlOjpNYXBwZWRUeXBlJiB2YWx1
ZSkKK3RlbXBsYXRlPHR5cGVuYW1lIE1hcHBlZFR5cGU+CitzdGF0aWMgYm9vbCBzZXRWYWx1ZUZv
cktleShXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZU1hcCYgbWFwLCBjb25zdCBXZWJQcmVmZXJl
bmNlc1N0b3JlOjpWYWx1ZU1hcCYgb3ZlcnJpZGVuRGVmYXVsdHMsIGNvbnN0IFN0cmluZyYga2V5
LCBjb25zdCBNYXBwZWRUeXBlJiB2YWx1ZSkKIHsKLSAgICB0eXBlbmFtZSBNYXBUeXBlOjpNYXBw
ZWRUeXBlIGV4aXN0aW5nVmFsdWUgPSB2YWx1ZUZvcktleShtYXAsIGtleSk7CisgICAgTWFwcGVk
VHlwZSBleGlzdGluZ1ZhbHVlID0gdmFsdWVGb3JLZXk8TWFwcGVkVHlwZT4obWFwLCBvdmVycmlk
ZW5EZWZhdWx0cywga2V5KTsKICAgICBpZiAoZXhpc3RpbmdWYWx1ZSA9PSB2YWx1ZSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIAotICAgIG1hcC5zZXQoa2V5LCB2YWx1ZSk7CisKKyAgICBt
YXAuc2V0KGtleSwgV2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUodmFsdWUpKTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAogYm9vbCBXZWJQcmVmZXJlbmNlc1N0b3JlOjpzZXRTdHJpbmdWYWx1ZUZv
cktleShjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICByZXR1
cm4gc2V0VmFsdWVGb3JLZXkobV9zdHJpbmdWYWx1ZXMsIGtleSwgdmFsdWUpOworICAgIHJldHVy
biBzZXRWYWx1ZUZvcktleTxTdHJpbmc+KG1fdmFsdWVzLCBtX292ZXJyaWRlbkRlZmF1bHRzLCBr
ZXksIHZhbHVlKTsKIH0KIAogU3RyaW5nIFdlYlByZWZlcmVuY2VzU3RvcmU6OmdldFN0cmluZ1Zh
bHVlRm9yS2V5KGNvbnN0IFN0cmluZyYga2V5KSBjb25zdAogewotICAgIHJldHVybiB2YWx1ZUZv
cktleShtX3N0cmluZ1ZhbHVlcywga2V5KTsKKyAgICByZXR1cm4gdmFsdWVGb3JLZXk8U3RyaW5n
PihtX3ZhbHVlcywgbV9vdmVycmlkZW5EZWZhdWx0cywga2V5KTsKIH0KIAogYm9vbCBXZWJQcmVm
ZXJlbmNlc1N0b3JlOjpzZXRCb29sVmFsdWVGb3JLZXkoY29uc3QgU3RyaW5nJiBrZXksIGJvb2wg
dmFsdWUpCiB7Ci0gICAgcmV0dXJuIHNldFZhbHVlRm9yS2V5KG1fYm9vbFZhbHVlcywga2V5LCB2
YWx1ZSk7CisgICAgcmV0dXJuIHNldFZhbHVlRm9yS2V5PGJvb2w+KG1fdmFsdWVzLCBtX292ZXJy
aWRlbkRlZmF1bHRzLCBrZXksIHZhbHVlKTsKIH0KIAogYm9vbCBXZWJQcmVmZXJlbmNlc1N0b3Jl
OjpnZXRCb29sVmFsdWVGb3JLZXkoY29uc3QgU3RyaW5nJiBrZXkpIGNvbnN0CiB7CiAgICAgLy8g
RklYTUU6IEV4dGVuZCBvdmVycmlkaW5nIHRvIG90aGVyIGtleSB0eXBlcyB1c2VkIGZyb20gVGVz
dFJ1bm5lci4KLSAgICBCb29sT3ZlcnJpZGVzTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGJvb2xU
ZXN0UnVubmVyT3ZlcnJpZGVzTWFwKCkuZmluZChrZXkpOworICAgIGF1dG8gaXQgPSBib29sVGVz
dFJ1bm5lck92ZXJyaWRlc01hcCgpLmZpbmQoa2V5KTsKICAgICBpZiAoaXQgIT0gYm9vbFRlc3RS
dW5uZXJPdmVycmlkZXNNYXAoKS5lbmQoKSkKICAgICAgICAgcmV0dXJuIGl0LT52YWx1ZTsKLSAg
ICByZXR1cm4gdmFsdWVGb3JLZXkobV9ib29sVmFsdWVzLCBrZXkpOworCisgICAgcmV0dXJuIHZh
bHVlRm9yS2V5PGJvb2w+KG1fdmFsdWVzLCBtX292ZXJyaWRlbkRlZmF1bHRzLCBrZXkpOwogfQog
CiBib29sIFdlYlByZWZlcmVuY2VzU3RvcmU6OnNldFVJbnQzMlZhbHVlRm9yS2V5KGNvbnN0IFN0
cmluZyYga2V5LCB1aW50MzJfdCB2YWx1ZSkgCiB7Ci0gICAgcmV0dXJuIHNldFZhbHVlRm9yS2V5
KG1fdWludDMyVmFsdWVzLCBrZXksIHZhbHVlKTsKKyAgICByZXR1cm4gc2V0VmFsdWVGb3JLZXk8
dWludDMyX3Q+KG1fdmFsdWVzLCBtX292ZXJyaWRlbkRlZmF1bHRzLCBrZXksIHZhbHVlKTsKIH0K
IAogdWludDMyX3QgV2ViUHJlZmVyZW5jZXNTdG9yZTo6Z2V0VUludDMyVmFsdWVGb3JLZXkoY29u
c3QgU3RyaW5nJiBrZXkpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHZhbHVlRm9yS2V5KG1fdWludDMy
VmFsdWVzLCBrZXkpOworICAgIHJldHVybiB2YWx1ZUZvcktleTx1aW50MzJfdD4obV92YWx1ZXMs
IG1fb3ZlcnJpZGVuRGVmYXVsdHMsIGtleSk7CiB9CiAKIGJvb2wgV2ViUHJlZmVyZW5jZXNTdG9y
ZTo6c2V0RG91YmxlVmFsdWVGb3JLZXkoY29uc3QgU3RyaW5nJiBrZXksIGRvdWJsZSB2YWx1ZSkg
CiB7Ci0gICAgcmV0dXJuIHNldFZhbHVlRm9yS2V5KG1fZG91YmxlVmFsdWVzLCBrZXksIHZhbHVl
KTsKKyAgICByZXR1cm4gc2V0VmFsdWVGb3JLZXk8ZG91YmxlPihtX3ZhbHVlcywgbV9vdmVycmlk
ZW5EZWZhdWx0cywga2V5LCB2YWx1ZSk7CiB9CiAKIGRvdWJsZSBXZWJQcmVmZXJlbmNlc1N0b3Jl
OjpnZXREb3VibGVWYWx1ZUZvcktleShjb25zdCBTdHJpbmcmIGtleSkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gdmFsdWVGb3JLZXkobV9kb3VibGVWYWx1ZXMsIGtleSk7CisgICAgcmV0dXJuIHZhbHVl
Rm9yS2V5PGRvdWJsZT4obV92YWx1ZXMsIG1fb3ZlcnJpZGVuRGVmYXVsdHMsIGtleSk7Cit9CisK
Ky8vIE92ZXJyaWRlbiBEZWZhdWx0cworCit2b2lkIFdlYlByZWZlcmVuY2VzU3RvcmU6OnNldE92
ZXJyaWRlRGVmYXVsdHNTdHJpbmdWYWx1ZUZvcktleShjb25zdCBTdHJpbmcmIGtleSwgU3RyaW5n
IHZhbHVlKQoreworICAgIG1fb3ZlcnJpZGVuRGVmYXVsdHMuc2V0KGtleSwgVmFsdWUodmFsdWUp
KTsKK30KKwordm9pZCBXZWJQcmVmZXJlbmNlc1N0b3JlOjpzZXRPdmVycmlkZURlZmF1bHRzQm9v
bFZhbHVlRm9yS2V5KGNvbnN0IFN0cmluZyYga2V5LCBib29sIHZhbHVlKQoreworICAgIG1fb3Zl
cnJpZGVuRGVmYXVsdHMuc2V0KGtleSwgVmFsdWUodmFsdWUpKTsKIH0KIAotYm9vbCBXZWJQcmVm
ZXJlbmNlc1N0b3JlOjpzZXRGbG9hdFZhbHVlRm9yS2V5KGNvbnN0IFN0cmluZyYga2V5LCBmbG9h
dCB2YWx1ZSkgCit2b2lkIFdlYlByZWZlcmVuY2VzU3RvcmU6OnNldE92ZXJyaWRlRGVmYXVsdHNV
SW50MzJWYWx1ZUZvcktleShjb25zdCBTdHJpbmcmIGtleSwgdWludDMyX3QgdmFsdWUpCiB7Ci0g
ICAgcmV0dXJuIHNldFZhbHVlRm9yS2V5KG1fZmxvYXRWYWx1ZXMsIGtleSwgdmFsdWUpOworICAg
IG1fb3ZlcnJpZGVuRGVmYXVsdHMuc2V0KGtleSwgVmFsdWUodmFsdWUpKTsKIH0KIAotZmxvYXQg
V2ViUHJlZmVyZW5jZXNTdG9yZTo6Z2V0RmxvYXRWYWx1ZUZvcktleShjb25zdCBTdHJpbmcmIGtl
eSkgY29uc3QKK3ZvaWQgV2ViUHJlZmVyZW5jZXNTdG9yZTo6c2V0T3ZlcnJpZGVEZWZhdWx0c0Rv
dWJsZVZhbHVlRm9yS2V5KGNvbnN0IFN0cmluZyYga2V5LCBkb3VibGUgdmFsdWUpCiB7Ci0gICAg
cmV0dXJuIHZhbHVlRm9yS2V5KG1fZmxvYXRWYWx1ZXMsIGtleSk7CisgICAgbV9vdmVycmlkZW5E
ZWZhdWx0cy5zZXQoa2V5LCBWYWx1ZSh2YWx1ZSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuaAko
cmV2aXNpb24gMTY5Mjk5KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2Vz
U3RvcmUuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQXJn
dW1lbnREZWNvZGVyLmgiCiAjaW5jbHVkZSAiQXJndW1lbnRFbmNvZGVyLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgpAQCAtMTc2LDcgKzE3Nyw2IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogICAgIG1hY3JvKFRh
YlRvTGlua3NFbmFibGVkLCB0YWJUb0xpbmtzRW5hYmxlZCwgQm9vbCwgYm9vbCwgZmFsc2UpIFwK
ICAgICBtYWNybyhJbnRlcmFjdGl2ZUZvcm1WYWxpZGF0aW9uRW5hYmxlZCwgaW50ZXJhY3RpdmVG
b3JtVmFsaWRhdGlvbkVuYWJsZWQsIEJvb2wsIGJvb2wsIGZhbHNlKSBcCiAgICAgbWFjcm8oU2Ny
b2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCwgc2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dn
aW5nRW5hYmxlZCwgQm9vbCwgYm9vbCwgZmFsc2UpIFwKLSAgICBtYWNybyhTdG9yYWdlQmxvY2tp
bmdQb2xpY3ksIHN0b3JhZ2VCbG9ja2luZ1BvbGljeSwgVUludDMyLCB1aW50MzJfdCwgMCkgXAog
ICAgIG1hY3JvKFNjcm9sbEFuaW1hdG9yRW5hYmxlZCwgc2Nyb2xsQW5pbWF0b3JFbmFibGVkLCBC
b29sLCBib29sLCBERUZBVUxUX1dFQktJVF9TQ1JPTExfQU5JTUFUT1JfRU5BQkxFRCkgXAogICAg
IG1hY3JvKFNjcmVlbkZvbnRTdWJzdGl0dXRpb25FbmFibGVkLCBzY3JlZW5Gb250U3Vic3RpdHV0
aW9uRW5hYmxlZCwgQm9vbCwgYm9vbCwgREVGQVVMVF9TQ1JFRU5fRk9OVF9TVUJTVElUVVRJT05f
RU5BQkxFRCkgXAogICAgIG1hY3JvKENvb2tpZUVuYWJsZWQsIGNvb2tpZUVuYWJsZWQsIEJvb2ws
IGJvb2wsIHRydWUpIFwKQEAgLTIzMyw5ICsyMzMsNiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKICAg
ICBtYWNybyhQYXNzd29yZEVjaG9EdXJhdGlvbiwgcGFzc3dvcmRFY2hvRHVyYXRpb24sIERvdWJs
ZSwgZG91YmxlLCAyKSBcCiAgICAgXAogCi0jZGVmaW5lIEZPUl9FQUNIX1dFQktJVF9GTE9BVF9Q
UkVGRVJFTkNFKG1hY3JvKSBcCi0gICAgXAotCiAjZGVmaW5lIEZPUl9FQUNIX1dFQktJVF9VSU5U
MzJfUFJFRkVSRU5DRShtYWNybykgXAogICAgIG1hY3JvKEZvbnRTbW9vdGhpbmdMZXZlbCwgZm9u
dFNtb290aGluZ0xldmVsLCBVSW50MzIsIHVpbnQzMl90LCBGb250U21vb3RoaW5nTGV2ZWxNZWRp
dW0pIFwKICAgICBtYWNybyhMYXlvdXRGYWxsYmFja1dpZHRoLCBsYXlvdXRGYWxsYmFja1dpZHRo
LCBVSW50MzIsIHVpbnQzMl90LCA5ODApIFwKQEAgLTI0Niw2ICsyNDMsNyBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKICAgICBtYWNybyhJbnNwZWN0b3JBdHRhY2hlZEhlaWdodCwgaW5zcGVjdG9yQXR0
YWNoZWRIZWlnaHQsIFVJbnQzMiwgdWludDMyX3QsIDMwMCkgXAogICAgIG1hY3JvKEluc3BlY3Rv
ckF0dGFjaGVkV2lkdGgsIGluc3BlY3RvckF0dGFjaGVkV2lkdGgsIFVJbnQzMiwgdWludDMyX3Qs
IDc1MCkgXAogICAgIG1hY3JvKEluc3BlY3RvckF0dGFjaG1lbnRTaWRlLCBpbnNwZWN0b3JBdHRh
Y2htZW50U2lkZSwgVUludDMyLCB1aW50MzJfdCwgMCkgXAorICAgIG1hY3JvKFN0b3JhZ2VCbG9j
a2luZ1BvbGljeSwgc3RvcmFnZUJsb2NraW5nUG9saWN5LCBVSW50MzIsIHVpbnQzMl90LCBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbjo6QWxsb3dBbGxTdG9yYWdlKSBcCiAgICAgXAogCiAjaWYgUExB
VEZPUk0oQ09DT0EpCkBAIC0yOTYsNyArMjk0LDYgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAjZGVm
aW5lIEZPUl9FQUNIX1dFQktJVF9QUkVGRVJFTkNFKG1hY3JvKSBcCiAgICAgRk9SX0VBQ0hfV0VC
S0lUX0JPT0xfUFJFRkVSRU5DRShtYWNybykgXAogICAgIEZPUl9FQUNIX1dFQktJVF9ET1VCTEVf
UFJFRkVSRU5DRShtYWNybykgXAotICAgIEZPUl9FQUNIX1dFQktJVF9GTE9BVF9QUkVGRVJFTkNF
KG1hY3JvKSBcCiAgICAgRk9SX0VBQ0hfV0VCS0lUX1VJTlQzMl9QUkVGRVJFTkNFKG1hY3JvKSBc
CiAgICAgRk9SX0VBQ0hfV0VCS0lUX1NUUklOR19QUkVGRVJFTkNFKG1hY3JvKSBcCiAgICAgRk9S
X0VBQ0hfV0VCS0lUX1NUUklOR19QUkVGRVJFTkNFX05PVF9JTl9XRUJDT1JFKG1hY3JvKSBcCkBA
IC0zMzIsMTggKzMyOSwxMjggQEAgc3RydWN0IFdlYlByZWZlcmVuY2VzU3RvcmUgewogICAgIGJv
b2wgc2V0RG91YmxlVmFsdWVGb3JLZXkoY29uc3QgU3RyaW5nJiBrZXksIGRvdWJsZSB2YWx1ZSk7
CiAgICAgZG91YmxlIGdldERvdWJsZVZhbHVlRm9yS2V5KGNvbnN0IFN0cmluZyYga2V5KSBjb25z
dDsKIAotICAgIGJvb2wgc2V0RmxvYXRWYWx1ZUZvcktleShjb25zdCBTdHJpbmcmIGtleSwgZmxv
YXQgdmFsdWUpOwotICAgIGZsb2F0IGdldEZsb2F0VmFsdWVGb3JLZXkoY29uc3QgU3RyaW5nJiBr
ZXkpIGNvbnN0OworICAgIHZvaWQgc2V0T3ZlcnJpZGVEZWZhdWx0c1N0cmluZ1ZhbHVlRm9yS2V5
KGNvbnN0IFN0cmluZyYga2V5LCBTdHJpbmcgdmFsdWUpOworICAgIHZvaWQgc2V0T3ZlcnJpZGVE
ZWZhdWx0c0Jvb2xWYWx1ZUZvcktleShjb25zdCBTdHJpbmcmIGtleSwgYm9vbCB2YWx1ZSk7Cisg
ICAgdm9pZCBzZXRPdmVycmlkZURlZmF1bHRzVUludDMyVmFsdWVGb3JLZXkoY29uc3QgU3RyaW5n
JiBrZXksIHVpbnQzMl90IHZhbHVlKTsKKyAgICB2b2lkIHNldE92ZXJyaWRlRGVmYXVsdHNEb3Vi
bGVWYWx1ZUZvcktleShjb25zdCBTdHJpbmcmIGtleSwgZG91YmxlIHZhbHVlKTsKIAogICAgIC8v
IEZvciBXZWJLaXRUZXN0UnVubmVyIHVzYWdlLgogICAgIHN0YXRpYyB2b2lkIG92ZXJyaWRlQm9v
bFZhbHVlRm9yS2V5KGNvbnN0IFN0cmluZyYga2V5LCBib29sIHZhbHVlKTsKICAgICBzdGF0aWMg
dm9pZCByZW1vdmVUZXN0UnVubmVyT3ZlcnJpZGVzKCk7CiAKLSAgICBIYXNoTWFwPFN0cmluZywg
U3RyaW5nPiBtX3N0cmluZ1ZhbHVlczsKLSAgICBIYXNoTWFwPFN0cmluZywgYm9vbD4gbV9ib29s
VmFsdWVzOwotICAgIEhhc2hNYXA8U3RyaW5nLCB1aW50MzJfdD4gbV91aW50MzJWYWx1ZXM7Ci0g
ICAgSGFzaE1hcDxTdHJpbmcsIGRvdWJsZT4gbV9kb3VibGVWYWx1ZXM7Ci0gICAgSGFzaE1hcDxT
dHJpbmcsIGZsb2F0PiBtX2Zsb2F0VmFsdWVzOworICAgIHN0cnVjdCBWYWx1ZSB7CisgICAgICAg
IGVudW0gY2xhc3MgVHlwZSB7CisgICAgICAgICAgICBOb25lLAorICAgICAgICAgICAgU3RyaW5n
LAorICAgICAgICAgICAgQm9vbCwKKyAgICAgICAgICAgIFVJbnQzMiwKKyAgICAgICAgICAgIERv
dWJsZSwKKyAgICAgICAgfTsKKworICAgICAgICB2b2lkIGVuY29kZShJUEM6OkFyZ3VtZW50RW5j
b2RlciYpIGNvbnN0OworICAgICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoSVBDOjpBcmd1bWVudERl
Y29kZXImLCBWYWx1ZSYpOworCisgICAgICAgIGV4cGxpY2l0IFZhbHVlKCkgOiBtX3R5cGUoVHlw
ZTo6Tm9uZSkgeyB9CisgICAgICAgIGV4cGxpY2l0IFZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUp
IDogbV90eXBlKFR5cGU6OlN0cmluZyksIG1fc3RyaW5nKHZhbHVlKSB7IH0KKyAgICAgICAgZXhw
bGljaXQgVmFsdWUoYm9vbCB2YWx1ZSkgOiBtX3R5cGUoVHlwZTo6Qm9vbCksIG1fYm9vbCh2YWx1
ZSkgeyB9CisgICAgICAgIGV4cGxpY2l0IFZhbHVlKHVpbnQzMl90IHZhbHVlKSA6IG1fdHlwZShU
eXBlOjpVSW50MzIpLCBtX3VpbnQzMih2YWx1ZSkgeyB9CisgICAgICAgIGV4cGxpY2l0IFZhbHVl
KGRvdWJsZSB2YWx1ZSkgOiBtX3R5cGUoVHlwZTo6RG91YmxlKSwgbV9kb3VibGUodmFsdWUpIHsg
fQorCisgICAgICAgIFZhbHVlKFZhbHVlJiYgdmFsdWUpCisgICAgICAgICAgICA6IG1fdHlwZSh2
YWx1ZS5tX3R5cGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHN3aXRjaCAobV90eXBlKSB7Cisg
ICAgICAgICAgICBjYXNlIFR5cGU6Ok5vbmU6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICBjYXNlIFR5cGU6OlN0cmluZzoKKyAgICAgICAgICAgICAgICBuZXcgKCZtX3N0cmlu
ZykgU3RyaW5nKHN0ZDo6bW92ZSh2YWx1ZS5tX3N0cmluZykpOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSBUeXBlOjpCb29sOgorICAgICAgICAgICAgICAgIG1fYm9v
bCA9IHZhbHVlLm1fYm9vbDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgVHlwZTo6VUludDMyOgorICAgICAgICAgICAgICAgIG1fdWludDMyID0gdmFsdWUubV91aW50
MzI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFR5cGU6OkRvdWJs
ZToKKyAgICAgICAgICAgICAgICBtX2RvdWJsZSA9IHZhbHVlLm1fZG91YmxlOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgVmFsdWUm
IG9wZXJhdG9yPShjb25zdCBWYWx1ZSYgb3RoZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlm
ICh0aGlzID09ICZvdGhlcikKKyAgICAgICAgICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgICAg
ICAgICAgICAgCisgICAgICAgICAgICBpZiAobV90eXBlID09IFR5cGU6OlN0cmluZykKKyAgICAg
ICAgICAgICAgICBtX3N0cmluZy5+U3RyaW5nKCk7CisKKyAgICAgICAgICAgIG1fdHlwZSA9IG90
aGVyLm1fdHlwZTsKKyAgICAgICAgICAgIHN3aXRjaCAobV90eXBlKSB7CisgICAgICAgICAgICBj
YXNlIFR5cGU6Ok5vbmU6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IFR5cGU6OlN0cmluZzoKKyAgICAgICAgICAgICAgICBuZXcgKCZtX3N0cmluZykgU3RyaW5nKG90
aGVyLm1fc3RyaW5nKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ug
VHlwZTo6Qm9vbDoKKyAgICAgICAgICAgICAgICBtX2Jvb2wgPSBvdGhlci5tX2Jvb2w7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFR5cGU6OlVJbnQzMjoKKyAgICAg
ICAgICAgICAgICBtX3VpbnQzMiA9IG90aGVyLm1fdWludDMyOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSBUeXBlOjpEb3VibGU6CisgICAgICAgICAgICAgICAgbV9k
b3VibGUgPSBvdGhlci5tX2RvdWJsZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KKyAgICAKKyAgICAgICAgICAgIHJldHVybiAqdGhpczsKKyAgICAgICAgfQorCisgICAg
ICAgIH5WYWx1ZSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChtX3R5cGUgPT0gVHlwZTo6
U3RyaW5nKQorICAgICAgICAgICAgICAgIG1fc3RyaW5nLn5TdHJpbmcoKTsKKyAgICAgICAgfQor
CisgICAgICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQorCisgICAgICAg
IFN0cmluZyBhc1N0cmluZygpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVCht
X3R5cGUgPT0gVHlwZTo6U3RyaW5nKTsKKyAgICAgICAgICAgIHJldHVybiBtX3N0cmluZzsKKyAg
ICAgICAgfQorCisgICAgICAgIGJvb2wgYXNCb29sKCkgY29uc3QKKyAgICAgICAgeworICAgICAg
ICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBlOjpCb29sKTsKKyAgICAgICAgICAgIHJldHVybiBt
X2Jvb2w7CisgICAgICAgIH0KKworICAgICAgICB1aW50MzJfdCBhc1VJbnQzMigpIGNvbnN0Cisg
ICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZTo6VUludDMyKTsKKyAg
ICAgICAgICAgIHJldHVybiBtX3VpbnQzMjsKKyAgICAgICAgfQorCisgICAgICAgIGRvdWJsZSBh
c0RvdWJsZSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChtX3R5cGUgPT0g
VHlwZTo6RG91YmxlKTsKKyAgICAgICAgICAgIHJldHVybiBtX2RvdWJsZTsKKyAgICAgICAgfQor
CisgICAgcHJpdmF0ZToKKyAgICAgICAgVHlwZSBtX3R5cGU7CisgICAgICAgIHVuaW9uIHsKKyAg
ICAgICAgICAgIFN0cmluZyBtX3N0cmluZzsKKyAgICAgICAgICAgIGJvb2wgbV9ib29sOworICAg
ICAgICAgICAgdWludDMyX3QgbV91aW50MzI7CisgICAgICAgICAgICBkb3VibGUgbV9kb3VibGU7
CisgICAgICAgIH07CisgICAgfTsKKworICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFZhbHVl
PiBWYWx1ZU1hcDsKKyAgICBWYWx1ZU1hcCBtX3ZhbHVlczsKKyAgICBWYWx1ZU1hcCBtX292ZXJy
aWRlbkRlZmF1bHRzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>
<flag name="review"
          id="256495"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>