<?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>55633</bug_id>
          
          <creation_ts>2011-03-02 17:16:22 -0800</creation_ts>
          <short_desc>REGRESSION (WebKit2): Tab keys no longer observe Full Keyboard Access</short_desc>
          <delta_ts>2011-03-03 13:44:27 -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>Accessibility</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.6</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, Regression</keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>abarth</cc>
    
    <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>361218</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-03-02 17:16:22 -0800</bug_when>
    <thetext>WebKit2 doesn&apos;t implement ChromeClient::keyboardUIMode(), so full keyboard access setting has no effect.

&lt;rdar://problem/8963023&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361763</commentid>
    <comment_count>1</comment_count>
      <attachid>84593</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-03-03 11:14:54 -0800</bug_when>
    <thetext>Created attachment 84593
proposed fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361769</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-03 11:16:45 -0800</bug_when>
    <thetext>Attachment 84593 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebKit/wx/WebKitSupport/ChromeClientWx.h:36:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 40 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>361786</commentid>
    <comment_count>3</comment_count>
      <attachid>84593</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-03-03 11:30:20 -0800</bug_when>
    <thetext>Comment on attachment 84593
proposed fix

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

&gt; Source/WebCore/ChangeLog:13
&gt; +        compared to the former.

I would say “superset of information returned by” rather than “superset of information compared to”.

&gt; Source/WebKit2/ChangeLog:15
&gt; +        Get the current state of full keybaord access, listening for change notifications.

Typo: keybaord.

&gt; Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp:344
&gt; +#if PLATFORM(MAC)
&gt; +KeyboardUIMode WebChromeClient::keyboardUIMode()

Isn’t there a Mac-specific file to put this in?

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:1195
&gt; +    bool fullKeyboardAccessEnabled = WebProcess::shared().fullKeyboardAccessEnabled();
&gt; +    return static_cast&lt;KeyboardUIMode&gt;((fullKeyboardAccessEnabled ? KeyboardAccessFull : KeyboardAccessDefault) | (m_tabToLinks ? KeyboardAccessTabsToLinks : 0));

I think there’s a way to write this that avoids the typecasts:

    KeyboardUIMode mode = WebProcess::shared().fullKeyboardAccessEnabled() ? KeyboardAccessFull : KeyboardAccessDefault;
    if (m_tabToLinks)
        mode |= KeyboardAccessTabsToLinks;
    return mode;

Not sure you’ll like my version better, but if you do, please use it.

&gt; Source/WebKit2/WebProcess/mac/FullKeyboardAccessWatcher.mm:45
&gt; +        // The keyboard access mode is reported by two bits:
&gt; +        // Bit 0 is set if feature is on
&gt; +        // Bit 1 is set if full keyboard access works for any control, not just text boxes and lists.
&gt; +        fullKeyboardAccessEnabled = (mode &amp; 0x2);

This comment doesn’t make it clear why we look at only bit 1 here. The why part of the comment is the most important part!

&gt; Source/WebKit2/WebProcess/mac/FullKeyboardAccessWatcher.mm:51
&gt; +    self = [super init];

I think it would be slightly better if this class made it clear it was incorrect to create an instance. For example, in some classes I have overridden init to make it return nil or throw an exception or something like that, and then put the actual initialization in a method of a different name, say _init, with the call to [super init] there.

Nothing in the header tells you not to create an instance of this class.

&gt; Source/WebKit/qt/WebCoreSupport/ChromeClientQt.cpp:360
&gt; +    return m_webPage-&gt;settings()-&gt;testAttribute(QWebSettings::LinksIncludedInFocusChain) ?
&gt; +        KeyboardAccessTabsToLinks : KeyboardAccessDefault;

Normally we put the ? on the start of the second line, not the end of the first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361802</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-03-03 11:45:57 -0800</bug_when>
    <thetext>&gt;&gt; +#if PLATFORM(MAC)
&gt;&gt; +KeyboardUIMode WebChromeClient::keyboardUIMode()
&gt;
&gt; Isn’t there a Mac-specific file to put this in?

This should be compiled on all platforms, thanks for catching it!

&gt; I think there’s a way to write this that avoids the typecasts:

GCC gives an error on your code (the result of |= is an int). Actually, I think that it&apos;s a mistake for KeyboardUIMode to be an enum!

    enum KeyboardUIMode {
        KeyboardAccessDefault     = 0x00000000,
        KeyboardAccessFull        = 0x00000001,
        // this flag may be or&apos;ed with either of the two above
        KeyboardAccessTabsToLinks = 0x10000000
    };

&gt; This comment doesn’t make it clear why we look at only bit 1 here. The why part of the comment is the most important part!

I don&apos;t know why we do it. There doesn&apos;t seem to be any definitive proof, even internal (some other code does the same, but that&apos;s it). I mentioned it in ChangeLog that even the remaining part of the comment may be not true, but I didn&apos;t feel comfortable removing it.

&gt; I think it would be slightly better if this class made it clear it was incorrect to create an instance.

Since you said r+, I&apos;m going to land this part as is. I&apos;ll keep this in mind in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361811</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-03-03 11:57:54 -0800</bug_when>
    <thetext>Thanks, sounds good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361898</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-03-03 13:34:56 -0800</bug_when>
    <thetext>Committed &lt;http://trac.webkit.org/changeset/80279&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361901</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-03 13:44:27 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/80279 might have broken Qt Linux Release minimal, Chromium Linux Release, and EFL Linux Release (Build)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84593</attachid>
            <date>2011-03-03 11:14:54 -0800</date>
            <delta_ts>2011-03-03 11:30:20 -0800</delta_ts>
            <desc>proposed fix</desc>
            <filename>FKA.txt</filename>
            <type>text/plain</type>
            <size>41981</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgwMTg3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDMtMDIgIEFsZXhleSBQ
cm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUkVHUkVTU0lPTiAoV2ViS2l0Mik6IFRhYiBrZXlzIG5vIGxv
bmdlciBvYnNlcnZlIEZ1bGwgS2V5Ym9hcmQgQWNjZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NTYzMworICAgICAgICA8cmRhcjovL3Byb2JsZW0v
ODk2MzAyMz4KKworICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDogKFdlYkNvcmU6OkVt
cHR5Q2hyb21lQ2xpZW50OjprZXlib2FyZFVJTW9kZSk6CisgICAgICAgICogcGFnZS9DaHJvbWVD
bGllbnQuaDoKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6IChXZWJDb3JlOjpFdmVu
dEhhbmRsZXI6OnRhYnNUb0xpbmtzKToKKyAgICAgICAgTWVyZ2VkIHRhYnNUb0xpbmtzKCkgYW5k
IGtleWJvYXJkVUlNb2RlKCkuIFRoZSBsYXR0ZXIgcmV0dXJuZWQgYSBzdXBlcnNldCBvZiBpbmZv
cm1hdGlvbgorICAgICAgICBjb21wYXJlZCB0byB0aGUgZm9ybWVyLgorCiAyMDExLTAzLTAyICBE
YW5pZWwgQ2hlbmcgIDxkY2hlbmdAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IERhdmlkIExldmluLgpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkocmV2
aXNpb24gODAxNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTE1Miw3ICsxNTIsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZv
aWQgc2V0U3RhdHVzYmFyVGV4dChjb25zdCBTdHJpbmcmKSB7IH0KIAotICAgIHZpcnR1YWwgYm9v
bCB0YWJzVG9MaW5rcygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBLZXli
b2FyZFVJTW9kZSBrZXlib2FyZFVJTW9kZSgpIHsgcmV0dXJuIEtleWJvYXJkQWNjZXNzRGVmYXVs
dDsgfQogCiAgICAgdmlydHVhbCBJbnRSZWN0IHdpbmRvd1Jlc2l6ZXJSZWN0KCkgY29uc3QgeyBy
ZXR1cm4gSW50UmVjdCgpOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xp
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAko
cmV2aXNpb24gODAxNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMzIsNyArMTMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICB2aXJ0dWFsIGJvb2wgcnVuSmF2YVNjcmlwdFByb21wdChGcmFtZSosIGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZWZhdWx0VmFsdWUsIFN0cmluZyYgcmVzdWx0KSA9
IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRTdGF0dXNiYXJUZXh0KGNvbnN0IFN0cmluZyYp
ID0gMDsKICAgICAgICAgdmlydHVhbCBib29sIHNob3VsZEludGVycnVwdEphdmFTY3JpcHQoKSA9
IDA7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCB0YWJzVG9MaW5rcygpIGNvbnN0ID0gMDsKKyAgICAg
ICAgdmlydHVhbCBLZXlib2FyZFVJTW9kZSBrZXlib2FyZFVJTW9kZSgpID0gMDsKIAogI2lmIEVO
QUJMRShSRUdJU1RFUl9QUk9UT0NPTF9IQU5ETEVSKQogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVn
aXN0ZXJQcm90b2NvbEhhbmRsZXIoY29uc3QgU3RyaW5nJiBzY2hlbWUsIGNvbnN0IFN0cmluZyYg
YmFzZVVSTCwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUpID0gMDsKQEAg
LTI3Nyw4ICsyNzcsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKIAogI2lmIFBMQVRG
T1JNKE1BQykKLSAgICAgICAgdmlydHVhbCBLZXlib2FyZFVJTW9kZSBrZXlib2FyZFVJTW9kZSgp
IHsgcmV0dXJuIEtleWJvYXJkQWNjZXNzRGVmYXVsdDsgfQotCiAgICAgICAgIHZpcnR1YWwgTlNS
ZXNwb25kZXIgKmZpcnN0UmVzcG9uZGVyKCkgeyByZXR1cm4gMDsgfQogICAgICAgICB2aXJ0dWFs
IHZvaWQgbWFrZUZpcnN0UmVzcG9uZGVyKE5TUmVzcG9uZGVyICopIHsgfQogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCShyZXZpc2lvbiA4MDE3NSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjc1Myw3ICsy
NzUzLDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OnRhYnNUb0xpbmtzKEtleWJvYXJkRQogICAgIGlm
ICghcGFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYm9vbCB0YWJzVG9MaW5rc0Ns
aWVudENhbGxSZXN1bHQgPSBwYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPnRhYnNUb0xpbmtzKCk7
CisgICAgYm9vbCB0YWJzVG9MaW5rc0NsaWVudENhbGxSZXN1bHQgPSBwYWdlLT5jaHJvbWUoKS0+
Y2xpZW50KCktPmtleWJvYXJkVUlNb2RlKCkgJiBLZXlib2FyZEFjY2Vzc1RhYnNUb0xpbmtzOwog
ICAgIHJldHVybiBldmVudEludmVydHNUYWJzVG9MaW5rc0NsaWVudENhbGxSZXN1bHQoZXZlbnQp
ID8gIXRhYnNUb0xpbmtzQ2xpZW50Q2FsbFJlc3VsdCA6IHRhYnNUb0xpbmtzQ2xpZW50Q2FsbFJl
c3VsdDsKIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gODAyNTgpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzNSBAQAorMjAxMS0wMy0w
MyAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSRUdSRVNTSU9OIChXZWJLaXQyKTogVGFi
IGtleXMgbm8gbG9uZ2VyIG9ic2VydmUgRnVsbCBLZXlib2FyZCBBY2Nlc3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU1NjMzCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS84OTYzMDIzPgorCisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvbWFjL0Z1bGxLZXlib2FyZEFjY2Vzc1dh
dGNoZXIuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9tYWMvRnVsbEtleWJvYXJkQWNj
ZXNzV2F0Y2hlci5tbTogQWRkZWQuCisgICAgICAgICgtW0Z1bGxLZXlib2FyZEFjY2Vzc1dhdGNo
ZXIgcmV0cmlldmVLZXlib2FyZFVJTW9kZUZyb21QcmVmZXJlbmNlczpdKToKKyAgICAgICAgKC1b
RnVsbEtleWJvYXJkQWNjZXNzV2F0Y2hlciBpbml0XSk6CisgICAgICAgICgrW0Z1bGxLZXlib2Fy
ZEFjY2Vzc1dhdGNoZXIgZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZF0pOgorICAgICAgICBHZXQg
dGhlIGN1cnJlbnQgc3RhdGUgb2YgZnVsbCBrZXliYW9yZCBhY2Nlc3MsIGxpc3RlbmluZyBmb3Ig
Y2hhbmdlIG5vdGlmaWNhdGlvbnMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
aDogIEFkZGVkIGZ1bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQoKS4KKworICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHA6IChXZWJLaXQ6OldlYlByb2Nlc3M6OmZ1bGxLZXlib2FyZEFj
Y2Vzc0VuYWJsZWQpOgorICAgICAgICBXZWJLaXQxIGFsc28gZG9lc24ndCBpbXBsZW1lbnQgdGhp
cyBvbiBwbGF0Zm9ybXMgb3RoZXIgdGhhbiBNYWMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL21h
Yy9XZWJQcm9jZXNzTWFjLm1tOiAoV2ViS2l0OjpXZWJQcm9jZXNzOjpmdWxsS2V5Ym9hcmRBY2Nl
c3NFbmFibGVkKToKKyAgICAgICAgSnVzdCBhc2sgRnVsbEtleWJvYXJkQWNjZXNzV2F0Y2hlci4K
KworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNw
cDogKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjprZXlib2FyZFVJTW9kZSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgQWRk
ZWQga2V5Ym9hcmRVSU1vZGUoKSwgcmVtb3ZlZCB0YWJzVG9MaW5rcygpLgorCisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOiAoV2ViS2l0OjpXZWJQYWdlOjprZXlib2Fy
ZFVJTW9kZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAg
ICAgR2VuZXJhdGUga2V5Ym9hcmQgVUkgbW9kZSBmcm9tIHRhYlRvTGlua3MgcHJlZmVyZW5jZSBh
bmQgY3VycmVudCBzdGF0ZSBvZiBGS0EuCisKIDIwMTEtMDMtMDMgIEFkYW0gUm9iZW4gIDxhcm9i
ZW5AYXBwbGUuY29tPgogCiAgICAgICAgIENyZWF0ZSB0aGUgQ0ZCdW5kbGVSZWYgZm9yIFdlYktp
dC5kbGwgb24gV2luZG93cyBpZiBuZWVkZWQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9X
ZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDgwMTc1KQorKysgU291
cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC03NDUsNiArNzQ1LDggQEAKIAkJRTE4QzkyRjQxMkRCOUU3MTAwQ0YyQUVCIC8qIFBy
aW50SW5mby5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMThDOTJGMzEyREI5RTcxMDBDRjJBRUIgLyogUHJpbnRJbmZvLmNwcCAqLzsgfTsKIAkJRTE4
QzkyRjUxMkRCOUU3QTAwQ0YyQUVCIC8qIFByaW50SW5mby5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMThDOTJGMzEyREI5RTcxMDBDRjJBRUIgLyog
UHJpbnRJbmZvLmNwcCAqLzsgfTsKIAkJRTE4QzkyRjYxMkRCOUU5NDAwQ0YyQUVCIC8qIFByaW50
SW5mb01hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUxQ0MxQjhGMTJEN0VBREYwMDYyNTgzOCAvKiBQcmludEluZm9NYWMubW0gKi87IH07CisJCUUx
QkIxNkE0MTMyMDFCOUIwMEY0OTQzMSAvKiBGdWxsS2V5Ym9hcmRBY2Nlc3NXYXRjaGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUJCMTY4ODEzMjAx
OEJBMDBGNDk0MzEgLyogRnVsbEtleWJvYXJkQWNjZXNzV2F0Y2hlci5oICovOyB9OworCQlFMUJC
MTZBNTEzMjAxQjlCMDBGNDk0MzEgLyogRnVsbEtleWJvYXJkQWNjZXNzV2F0Y2hlci5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQkIxNjg5MTMyMDE4
QkEwMEY0OTQzMSAvKiBGdWxsS2V5Ym9hcmRBY2Nlc3NXYXRjaGVyLm1tICovOyB9OwogCQlFMUND
MUI5MDEyRDdFQURGMDA2MjU4MzggLyogUHJpbnRJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUNDMUI4RTEyRDdFQURGMDA2MjU4MzggLyogUHJp
bnRJbmZvLmggKi87IH07CiAJCUUxQ0MxQjkxMTJEN0VBREYwMDYyNTgzOCAvKiBQcmludEluZm9N
YWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUND
MUI4RjEyRDdFQURGMDA2MjU4MzggLyogUHJpbnRJbmZvTWFjLm1tICovOyB9OwogCQlFMUVFNTNF
MzExRjhDRkMwMDBDQ0JFRTQgLyogSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUVFNTNEQzExRjhD
RjlGMDBDQ0JFRTQgLyogSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmggKi87IH07CkBA
IC0xNTg5LDYgKzE1OTEsOCBAQAogCQlFMTM0RjAxNTEyRUE1RDExMDA0RUM1OEQgLyogV0tQcmlu
dGluZ1ZpZXcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tQcmludGluZ1Zp
ZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTEzNEYwMTkxMkVBNUQ5OTAwNEVD
NThEIC8qIFdLUHJpbnRpbmdWaWV3Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gV0tQcmludGluZ1ZpZXcubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUxOEM5MkYzMTJEQjlFNzEwMENGMkFFQiAvKiBQcmludEluZm8uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJpbnRJbmZvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJRTFCQjE2ODgxMzIwMThCQTAwRjQ5NDMxIC8qIEZ1bGxLZXlib2FyZEFjY2Vz
c1dhdGNoZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnVsbEtleWJvYXJk
QWNjZXNzV2F0Y2hlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMUJCMTY4OTEz
MjAxOEJBMDBGNDk0MzEgLyogRnVsbEtleWJvYXJkQWNjZXNzV2F0Y2hlci5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBmaWxlRW5jb2RpbmcgPSA0OyBwYXRoID0gRnVsbEtleWJvYXJkQWNjZXNzV2F0Y2hlci5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFDQzFCOEUxMkQ3RUFERjAwNjI1ODM4
IC8qIFByaW50SW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcmludElu
Zm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFDQzFCOEYxMkQ3RUFERjAwNjI1
ODM4IC8qIFByaW50SW5mb01hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFByaW50SW5mb01hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFF
RTUzREMxMUY4Q0Y5RjAwQ0NCRUU0IC8qIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0
b3JDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4MTUsNiArMTgxOSw4
IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQkxQTZGQTAxRDExRTE1MjYzMDBEQjEzNzEgLyogV2Vi
UHJvY2Vzc01haW5NYWMubW0gKi8sCiAJCQkJQkMzMDY1QzMxMjU5MkY4OTAwRTcxMjc4IC8qIFdl
YlByb2Nlc3NNYWMubW0gKi8sCisJCQkJRTFCQjE2ODgxMzIwMThCQTAwRjQ5NDMxIC8qIEZ1bGxL
ZXlib2FyZEFjY2Vzc1dhdGNoZXIuaCAqLywKKwkJCQlFMUJCMTY4OTEzMjAxOEJBMDBGNDk0MzEg
LyogRnVsbEtleWJvYXJkQWNjZXNzV2F0Y2hlci5tbSAqLywKIAkJCSk7CiAJCQlwYXRoID0gbWFj
OwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTMzODMsNiArMzM4OSw3IEBACiAJCQkJ
QkNFODFEOEQxMzE5RjdFRjAwMjQxOTEwIC8qIEZvbnRJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQ0U4MUQ5OTEzMUFFMDIxMDAyNDE5MTAgLyogRGljdGlvbmFyeVBvcHVwSW5mby5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMzdDNEU5RjYxMzFDNkU3RTAwMjlCRDVBIC8qIGNvbmZpZy5oIGluIEhl
YWRlcnMgKi8sCisJCQkJRTFCQjE2QTQxMzIwMUI5QjAwRjQ5NDMxIC8qIEZ1bGxLZXlib2FyZEFj
Y2Vzc1dhdGNoZXIuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMzk2MCw2ICszOTY3LDcgQEAKIAkJCQkz
MzA5MzQ1QTEzMTVCOTk4MDA5N0E3QkMgLyogV0tDb29raWVNYW5hZ2VyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUJDRTgxRDhDMTMxOUY3RUYwMDI0MTkxMCAvKiBGb250SW5mby5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlCQ0U4MUQ5ODEzMUFFMDIxMDAyNDE5MTAgLyogRGljdGlvbmFyeVBvcHVw
SW5mby5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMUJCMTZBNTEzMjAxQjlCMDBGNDk0MzEgLyog
RnVsbEtleWJvYXJkQWNjZXNzV2F0Y2hlci5tbSBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiA4MDE3NSkKKysrIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI4Niw2ICsyODYsMTMgQEAgdm9pZCBXZWJQcm9jZXNzOjphZGRWaXNpdGVkTGluayhXZWJDb3Jl
OgogICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViQ29udGV4dDo6QWRkVmlzaXRl
ZExpbmtIYXNoKGxpbmtIYXNoKSwgMCk7CiB9CiAKKyNpZiAhUExBVEZPUk0oTUFDKQorYm9vbCBX
ZWJQcm9jZXNzOjpmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkKCkKK3sKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisjZW5kaWYKKwogdm9pZCBXZWJQcm9jZXNzOjpzZXRDYWNoZU1vZGVsKHVpbnQzMl90
IGNtKQogewogICAgIENhY2hlTW9kZWwgY2FjaGVNb2RlbCA9IHN0YXRpY19jYXN0PENhY2hlTW9k
ZWw+KGNtKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCShyZXZp
c2lvbiA4MDE3NSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC04OCw2ICs4OCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZFZpc2l0
ZWRMaW5rKFdlYkNvcmU6OkxpbmtIYXNoKTsKICAgICBib29sIGlzTGlua1Zpc2l0ZWQoV2ViQ29y
ZTo6TGlua0hhc2gpIGNvbnN0OwogCisgICAgYm9vbCBmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVk
KCk7CisKICAgICBXZWJGcmFtZSogd2ViRnJhbWUodWludDY0X3QpIGNvbnN0OwogICAgIHZvaWQg
YWRkV2ViRnJhbWUodWludDY0X3QsIFdlYkZyYW1lKik7CiAgICAgdm9pZCByZW1vdmVXZWJGcmFt
ZSh1aW50NjRfdCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCShyZXZpc2lvbiA4MDE3
NSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQwLDEwICszNDAsMTIgQEAgYm9vbCBXZWJD
aHJvbWVDbGllbnQ6OnNob3VsZEludGVycnVwdEphdgogICAgIHJldHVybiBmYWxzZTsKIH0KIAot
Ym9vbCBXZWJDaHJvbWVDbGllbnQ6OnRhYnNUb0xpbmtzKCkgY29uc3QKKyNpZiBQTEFURk9STShN
QUMpCitLZXlib2FyZFVJTW9kZSBXZWJDaHJvbWVDbGllbnQ6OmtleWJvYXJkVUlNb2RlKCkKIHsK
LSAgICByZXR1cm4gbV9wYWdlLT50YWJzVG9MaW5rcygpOworICAgIHJldHVybiBtX3BhZ2UtPmtl
eWJvYXJkVUlNb2RlKCk7CiB9CisjZW5kaWYKIAogSW50UmVjdCBXZWJDaHJvbWVDbGllbnQ6Ondp
bmRvd1Jlc2l6ZXJSZWN0KCkgY29uc3QKIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAkocmV2
aXNpb24gODAxNzUpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsOCArMTAyLDExIEBAIHBy
aXZhdGU6CiAgICAgdmlydHVhbCBib29sIHJ1bkphdmFTY3JpcHRQcm9tcHQoV2ViQ29yZTo6RnJh
bWUqLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVmYXVsdFZhbHVlLCBT
dHJpbmcmIHJlc3VsdCk7CiAgICAgdmlydHVhbCB2b2lkIHNldFN0YXR1c2JhclRleHQoY29uc3Qg
U3RyaW5nJik7CiAgICAgdmlydHVhbCBib29sIHNob3VsZEludGVycnVwdEphdmFTY3JpcHQoKTsK
LSAgICB2aXJ0dWFsIGJvb2wgdGFic1RvTGlua3MoKSBjb25zdDsKLSAgICAKKworI2lmIFBMQVRG
T1JNKE1BQykKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OktleWJvYXJkVUlNb2RlIGtleWJvYXJkVUlN
b2RlKCk7CisjZW5kaWYKKwogICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UmVjdCB3aW5kb3dSZXNp
emVyUmVjdCgpIGNvbnN0OwogICAgIAogICAgIC8vIE1ldGhvZHMgdXNlZCBieSBIb3N0V2luZG93
LgpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAkocmV2aXNpb24gODAxNzUpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExODksNiArMTE4OSwxMiBAQCBJbnRSZWN0
IFdlYlBhZ2U6OndpbmRvd1Jlc2l6ZXJSZWN0KCkgY29uCiAgICAgICAgICAgICAgICAgICAgbV93
aW5kb3dSZXNpemVyU2l6ZS53aWR0aCgpLCBtX3dpbmRvd1Jlc2l6ZXJTaXplLmhlaWdodCgpKTsK
IH0KIAorS2V5Ym9hcmRVSU1vZGUgV2ViUGFnZTo6a2V5Ym9hcmRVSU1vZGUoKQoreworICAgIGJv
b2wgZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZCA9IFdlYlByb2Nlc3M6OnNoYXJlZCgpLmZ1bGxL
ZXlib2FyZEFjY2Vzc0VuYWJsZWQoKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8S2V5Ym9hcmRV
SU1vZGU+KChmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkID8gS2V5Ym9hcmRBY2Nlc3NGdWxsIDog
S2V5Ym9hcmRBY2Nlc3NEZWZhdWx0KSB8IChtX3RhYlRvTGlua3MgPyBLZXlib2FyZEFjY2Vzc1Rh
YnNUb0xpbmtzIDogMCkpOworfQorCiB2b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHRJbk1haW5G
cmFtZShjb25zdCBTdHJpbmcmIHNjcmlwdCwgdWludDY0X3QgY2FsbGJhY2tJRCkKIHsKICAgICAv
LyBOT1RFOiBXZSBuZWVkIHRvIGJlIGNhcmVmdWwgd2hlbiBydW5uaW5nIHNjcmlwdHMgdGhhdCB0
aGUgb2JqZWN0cyB3ZSBkZXBlbmQgb24gZG9uJ3QKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkocmV2aXNpb24gODAxNzUpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2
ICs0Niw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9FZGl0b3IuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0ZyYW1lTG9hZGVyVHlwZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1dlYkNvcmVLZXlib2FyZFVJTW9kZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CkBAIC0xNTMsNyArMTU0LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2hvdygpOwogICAgIFN0
cmluZyB1c2VyQWdlbnQoKSBjb25zdCB7IHJldHVybiBtX3VzZXJBZ2VudDsgfQogICAgIFdlYkNv
cmU6OkludFJlY3Qgd2luZG93UmVzaXplclJlY3QoKSBjb25zdDsKLSAgICBib29sIHRhYnNUb0xp
bmtzKCkgY29uc3QgeyByZXR1cm4gbV90YWJUb0xpbmtzOyB9CisgICAgV2ViQ29yZTo6S2V5Ym9h
cmRVSU1vZGUga2V5Ym9hcmRVSU1vZGUoKTsKIAogICAgIFdlYkVkaXRDb21tYW5kKiB3ZWJFZGl0
Q29tbWFuZCh1aW50NjRfdCk7CiAgICAgdm9pZCBhZGRXZWJFZGl0Q29tbWFuZCh1aW50NjRfdCwg
V2ViRWRpdENvbW1hbmQqKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFjL0Z1
bGxLZXlib2FyZEFjY2Vzc1dhdGNoZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL21hYy9GdWxsS2V5Ym9hcmRBY2Nlc3NXYXRjaGVyLmgJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9GdWxsS2V5Ym9hcmRBY2Nlc3NXYXRjaGVy
LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEZ1
bGxLZXlib2FyZEFjY2Vzc1dhdGNoZXJfaAorI2RlZmluZSBGdWxsS2V5Ym9hcmRBY2Nlc3NXYXRj
aGVyX2gKKworI2ltcG9ydCA8Q29jb2EvQ29jb2EuaD4KKworQGludGVyZmFjZSBGdWxsS2V5Ym9h
cmRBY2Nlc3NXYXRjaGVyIDogTlNPYmplY3QgeworQHByaXZhdGUKKyAgICBCT09MIGZ1bGxLZXli
b2FyZEFjY2Vzc0VuYWJsZWQ7Cit9CisKKysgKEJPT0wpZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxl
ZDsKKworQGVuZDsKKworI2VuZGlmIC8vIEZ1bGxLZXlib2FyZEFjY2Vzc1dhdGNoZXJfaApJbmRl
eDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMvRnVsbEtleWJvYXJkQWNjZXNzV2F0Y2hl
ci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9GdWxsS2V5
Ym9hcmRBY2Nlc3NXYXRjaGVyLm1tCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9tYWMvRnVsbEtleWJvYXJkQWNjZXNzV2F0Y2hlci5tbQkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAi
RnVsbEtleWJvYXJkQWNjZXNzV2F0Y2hlci5oIgorCitjb25zdCBOU1N0cmluZyAqS2V5Ym9hcmRV
SU1vZGVEaWRDaGFuZ2VOb3RpZmljYXRpb24gPSBAImNvbS5hcHBsZS5LZXlib2FyZFVJTW9kZURp
ZENoYW5nZSI7Citjb25zdCBDRlN0cmluZ1JlZiBBcHBsZUtleWJvYXJkVUlNb2RlID0gQ0ZTVFIo
IkFwcGxlS2V5Ym9hcmRVSU1vZGUiKTsKK2NvbnN0IENGU3RyaW5nUmVmIFVuaXZlcnNhbEFjY2Vz
c0RvbWFpbiA9IENGU1RSKCJjb20uYXBwbGUudW5pdmVyc2FsYWNjZXNzIik7CisKK0BpbXBsZW1l
bnRhdGlvbiBGdWxsS2V5Ym9hcmRBY2Nlc3NXYXRjaGVyCisKKy0gKHZvaWQpcmV0cmlldmVLZXli
b2FyZFVJTW9kZUZyb21QcmVmZXJlbmNlczooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24K
K3sKKyAgICBDRlByZWZlcmVuY2VzQXBwU3luY2hyb25pemUoVW5pdmVyc2FsQWNjZXNzRG9tYWlu
KTsKKworICAgIEJvb2xlYW4ga2V5RXhpc3RzQW5kSGFzVmFsaWRGb3JtYXQ7CisgICAgaW50IG1v
ZGUgPSBDRlByZWZlcmVuY2VzR2V0QXBwSW50ZWdlclZhbHVlKEFwcGxlS2V5Ym9hcmRVSU1vZGUs
IFVuaXZlcnNhbEFjY2Vzc0RvbWFpbiwgJmtleUV4aXN0c0FuZEhhc1ZhbGlkRm9ybWF0KTsKKyAg
ICBpZiAoa2V5RXhpc3RzQW5kSGFzVmFsaWRGb3JtYXQpIHsKKyAgICAgICAgLy8gVGhlIGtleWJv
YXJkIGFjY2VzcyBtb2RlIGlzIHJlcG9ydGVkIGJ5IHR3byBiaXRzOgorICAgICAgICAvLyBCaXQg
MCBpcyBzZXQgaWYgZmVhdHVyZSBpcyBvbgorICAgICAgICAvLyBCaXQgMSBpcyBzZXQgaWYgZnVs
bCBrZXlib2FyZCBhY2Nlc3Mgd29ya3MgZm9yIGFueSBjb250cm9sLCBub3QganVzdCB0ZXh0IGJv
eGVzIGFuZCBsaXN0cy4KKyAgICAgICAgZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZCA9IChtb2Rl
ICYgMHgyKTsKKyAgICB9Cit9CisKKy0gKGlkKWluaXQKK3sKKyAgICBzZWxmID0gW3N1cGVyIGlu
aXRdOworICAgIGlmICghc2VsZikKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIFtzZWxmIHJl
dHJpZXZlS2V5Ym9hcmRVSU1vZGVGcm9tUHJlZmVyZW5jZXM6bmlsXTsKKworICAgIFtbTlNEaXN0
cmlidXRlZE5vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSAKKyAgICAgICAgYWRkT2Jz
ZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IocmV0cmlldmVLZXlib2FyZFVJTW9kZUZyb21Q
cmVmZXJlbmNlczopIAorICAgICAgICBuYW1lOktleWJvYXJkVUlNb2RlRGlkQ2hhbmdlTm90aWZp
Y2F0aW9uIG9iamVjdDpuaWxdOworCisgICAgcmV0dXJuIHNlbGY7Cit9CisKKysgKEJPT0wpZnVs
bEtleWJvYXJkQWNjZXNzRW5hYmxlZAoreworICAgIHN0YXRpYyBGdWxsS2V5Ym9hcmRBY2Nlc3NX
YXRjaGVyICp3YXRjaGVyID0gW1tGdWxsS2V5Ym9hcmRBY2Nlc3NXYXRjaGVyIGFsbG9jXSBpbml0
XTsKKyAgICByZXR1cm4gd2F0Y2hlci0+ZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZDsKK30KKwor
QGVuZApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc01hYy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNz
TWFjLm1tCShyZXZpc2lvbiA4MDE3NSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFj
L1dlYlByb2Nlc3NNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbXBv
cnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzcy5oIgogCisjaW1wb3J0ICJGdWxsS2V5
Ym9hcmRBY2Nlc3NXYXRjaGVyLmgiCiAjaW1wb3J0ICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW1w
b3J0ICJXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW1wb3J0IDxXZWJDb3JlL01l
bW9yeUNhY2hlLmg+CkBAIC0xMTAsNiArMTExLDExIEBAIHZvaWQgV2ViUHJvY2Vzczo6cGxhdGZv
cm1DbGVhclJlc291cmNlQ2EKICAgICBbW05TVVJMQ2FjaGUgc2hhcmVkVVJMQ2FjaGVdIHJlbW92
ZUFsbENhY2hlZFJlc3BvbnNlc107CiB9CiAKK2Jvb2wgV2ViUHJvY2Vzczo6ZnVsbEtleWJvYXJk
QWNjZXNzRW5hYmxlZCgpCit7CisgICAgcmV0dXJuIFtGdWxsS2V5Ym9hcmRBY2Nlc3NXYXRjaGVy
IGZ1bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWRdOworfQorCiAjaWYgRU5BQkxFKFdFQl9QUk9DRVNT
X1NBTkRCT1gpCiBzdGF0aWMgdm9pZCBhcHBlbmRTYW5kYm94UGFyYW1ldGVyUGF0aChWZWN0b3I8
Y29uc3QgY2hhcio+JiB2ZWN0b3IsIGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IGNoYXIqIHBhdGgp
CiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gODAxODcpCisrKyBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDE2IEBACisyMDExLTAzLTAyICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJFR1JFU1NJ
T04gKFdlYktpdDIpOiBUYWIga2V5cyBubyBsb25nZXIgb2JzZXJ2ZSBGdWxsIEtleWJvYXJkIEFj
Y2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTU2
MzMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg5NjMwMjM+CisKKyAgICAgICAgKiBzcmMvQ2hy
b21lQ2xpZW50SW1wbC5jcHA6IChXZWJLaXQ6OkNocm9tZUNsaWVudEltcGw6OmtleWJvYXJkVUlN
b2RlKToKKyAgICAgICAgKiBzcmMvQ2hyb21lQ2xpZW50SW1wbC5oOgorICAgICAgICBJbXBsZW1l
bnQga2V5Ym9hcmRVSU1vZGUoKSBpbnN0ZWFkIG9mIHRhYnNUb0xpbmtzKCkuIE5vIGNoYW5nZSBp
biBmdW5jdGlvbmFsaXR5LCBzaW5jZQorICAgICAgICB0aGlzIHBsYXRmb3JtIGRvZXNuJ3Qgb2Jz
ZXJ2ZSBvciBoYXZlIGZ1bGwga2V5Ym9hcmQgYWNjZXNzIHN0YXRlLgorCiAyMDExLTAzLTAyICBE
YW5pZWwgQ2hlbmcgIDxkY2hlbmdAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IERhdmlkIExldmluLgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xp
ZW50SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hy
b21lQ2xpZW50SW1wbC5jcHAJKHJldmlzaW9uIDgwMTc1KQorKysgU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4NSwxNCAr
NDg1LDkgQEAgYm9vbCBDaHJvbWVDbGllbnRJbXBsOjpzaG91bGRJbnRlcnJ1cHRKYQogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAotYm9vbCBDaHJvbWVDbGllbnRJbXBsOjp0YWJzVG9MaW5rcygpIGNv
bnN0CitLZXlib2FyZFVJTW9kZSBDaHJvbWVDbGllbnRJbXBsOjprZXlib2FyZFVJTW9kZSgpCiB7
Ci0gICAgLy8gUmV0dXJucyB0cnVlIGlmIGFuY2hvcnMgc2hvdWxkIGFjY2VwdCBrZXlib2FyZCBm
b2N1cyB3aXRoIHRoZSB0YWIga2V5LgotICAgIC8vIFRoaXMgbWV0aG9kIGlzIHVzZWQgaW4gYSBj
b252b2x1dGVkIGZhc2hpb24gYnkgRXZlbnRIYW5kbGVyOjp0YWJzVG9MaW5rcy4KLSAgICAvLyBJ
dCdzIGEgdHdpc3RlZCBwYXRoIChzZWxmLWV2aWRlbnQsIGJ1dCBtb3JlIGNvbXBsaWNhdGVkIHRo
YW4gc2VlbXMKLSAgICAvLyBuZWNlc3NhcnkpLCBidXQgdGhlIG5ldCByZXN1bHQgaXMgdGhhdCBy
ZXR1cm5pbmcgdHJ1ZSBmcm9tIGhlcmUsIG9uIGEKLSAgICAvLyBwbGF0Zm9ybSBvdGhlciB0aGFu
IE1BQyBvciBRVCwgbGV0cyBhbmNob3JzIGdldCBrZXlib2FyZCBmb2N1cy4KLSAgICByZXR1cm4g
bV93ZWJWaWV3LT50YWJzVG9MaW5rcygpOworICAgIHJldHVybiBtX3dlYlZpZXctPnRhYnNUb0xp
bmtzKCkgPyBLZXlib2FyZEFjY2Vzc1RhYnNUb0xpbmtzIDogS2V5Ym9hcmRBY2Nlc3NEZWZhdWx0
OwogfQogCiBJbnRSZWN0IENocm9tZUNsaWVudEltcGw6OndpbmRvd1Jlc2l6ZXJSZWN0KCkgY29u
c3QKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBs
LmgJKHJldmlzaW9uIDgwMTc1KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21l
Q2xpZW50SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAi
Q2hyb21lQ2xpZW50Q2hyb21pdW0uaCIKICNpbmNsdWRlICJQb3B1cE1lbnUuaCIKICNpbmNsdWRl
ICJTZWFyY2hQb3B1cE1lbnUuaCIKKyNpbmNsdWRlICJXZWJDb3JlS2V5Ym9hcmRVSU1vZGUuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQWNjZXNzaWJpbGl0eU9iamVjdDsKQEAgLTEw
MSw3ICsxMDIsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNvbnN0IFdURjo6U3RyaW5nJiBkZWZhdWx0
VmFsdWUsIFdURjo6U3RyaW5nJiByZXN1bHQpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRTdGF0dXNi
YXJUZXh0KGNvbnN0IFdURjo6U3RyaW5nJiBtZXNzYWdlKTsKICAgICB2aXJ0dWFsIGJvb2wgc2hv
dWxkSW50ZXJydXB0SmF2YVNjcmlwdCgpOwotICAgIHZpcnR1YWwgYm9vbCB0YWJzVG9MaW5rcygp
IGNvbnN0OworICAgIHZpcnR1YWwgV2ViQ29yZTo6S2V5Ym9hcmRVSU1vZGUga2V5Ym9hcmRVSU1v
ZGUoKTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFJlY3Qgd2luZG93UmVzaXplclJlY3QoKSBj
b25zdDsKICNpZiBFTkFCTEUoUkVHSVNURVJfUFJPVE9DT0xfSEFORExFUikKICAgICB2aXJ0dWFs
IHZvaWQgcmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIoY29uc3QgU3RyaW5nJiBzY2hlbWUsIGNvbnN0
IFN0cmluZyYgYmFzZVVSTCwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUp
OwpJbmRleDogU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwkocmV2aXNpb24gODAxODcpCisrKyBTb3VyY2UvV2ViS2l0
L2VmbC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMS0wMy0w
MiAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSRUdSRVNTSU9OIChXZWJLaXQyKTogVGFi
IGtleXMgbm8gbG9uZ2VyIG9ic2VydmUgRnVsbCBLZXlib2FyZCBBY2Nlc3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU1NjMzCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS84OTYzMDIzPgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50RWZsLmNwcDogKFdlYkNvcmU6OkNocm9tZUNsaWVudEVmbDo6a2V5Ym9hcmRVSU1vZGUpOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oOgorICAgICAgICBJbXBs
ZW1lbnQga2V5Ym9hcmRVSU1vZGUoKSBpbnN0ZWFkIG9mIHRhYnNUb0xpbmtzKCkuIE5vIGNoYW5n
ZSBpbiBmdW5jdGlvbmFsaXR5LCBzaW5jZQorICAgICAgICB0aGlzIHBsYXRmb3JtIGRvZXNuJ3Qg
b2JzZXJ2ZSBvciBoYXZlIGZ1bGwga2V5Ym9hcmQgYWNjZXNzIHN0YXRlLgorCiAyMDExLTAzLTAx
ICBKb3NlcGggUGVjb3Jhcm8gIDxqb2VwZWNrQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZp
ZXdlZC4gUm9sbCBvdXQgcjgwMDY4IGFuZCByODAwNzMgZHVlIHRvIGJyZWFraW5nIFdlYktpdDIg
UXQgcG9ydC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNs
aWVudEVmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBv
cnQvQ2hyb21lQ2xpZW50RWZsLmNwcAkocmV2aXNpb24gODAxNzUpCisrKyBTb3VyY2UvV2ViS2l0
L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMDUsOSArMzA1LDkgQEAgYm9vbCBDaHJvbWVDbGllbnRFZmw6OnNob3VsZEludGVycnVwdEph
dgogICAgIHJldHVybiBld2tfdmlld19zaG91bGRfaW50ZXJydXB0X2phdmFzY3JpcHQobV92aWV3
KTsKIH0KIAotYm9vbCBDaHJvbWVDbGllbnRFZmw6OnRhYnNUb0xpbmtzKCkgY29uc3QKK0tleWJv
YXJkVUlNb2RlIENocm9tZUNsaWVudEVmbDo6a2V5Ym9hcmRVSU1vZGUoKQogewotICAgIHJldHVy
biB0cnVlOworICAgIHJldHVybiBLZXlib2FyZEFjY2Vzc1RhYnNUb0xpbmtzOwogfQogCiBJbnRS
ZWN0IENocm9tZUNsaWVudEVmbDo6d2luZG93UmVzaXplclJlY3QoKSBjb25zdApJbmRleDogU291
cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmgJ
KHJldmlzaW9uIDgwMTc1KQorKysgU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50RWZsLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRl
ICJDaHJvbWVDbGllbnQuaCIKICNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiUG9wdXBNZW51
LmgiCisjaW5jbHVkZSAiV2ViQ29yZUtleWJvYXJkVUlNb2RlLmgiCiAKIHR5cGVkZWYgc3RydWN0
IF9FdmFzX09iamVjdCBFdmFzX09iamVjdDsKIApAQCAtOTEsNyArOTIsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBib29sIHJ1bkphdmFTY3JpcHRQcm9tcHQoRnJhbWUqLCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVmYXVsdFZhbHVlLCBTdHJpbmcmIHJlc3VsdCk7CiAg
ICAgdmlydHVhbCB2b2lkIHNldFN0YXR1c2JhclRleHQoY29uc3QgU3RyaW5nJik7CiAgICAgdmly
dHVhbCBib29sIHNob3VsZEludGVycnVwdEphdmFTY3JpcHQoKTsKLSAgICB2aXJ0dWFsIGJvb2wg
dGFic1RvTGlua3MoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OktleWJvYXJkVUlNb2Rl
IGtleWJvYXJkVUlNb2RlKCk7CiAKICAgICB2aXJ0dWFsIEludFJlY3Qgd2luZG93UmVzaXplclJl
Y3QoKSBjb25zdDsKIApJbmRleDogU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwkocmV2aXNpb24gODAxODcpCisrKyBT
b3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBA
QAorMjAxMS0wMy0wMiAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSRUdSRVNTSU9OIChX
ZWJLaXQyKTogVGFiIGtleXMgbm8gbG9uZ2VyIG9ic2VydmUgRnVsbCBLZXlib2FyZCBBY2Nlc3MK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU1NjMzCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS84OTYzMDIzPgorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvQ2hyb21lQ2xpZW50R3RrLmNwcDogKFdlYktpdDo6Q2hyb21lQ2xpZW50OjprZXlib2FyZFVJ
TW9kZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmg6CisgICAg
ICAgIEltcGxlbWVudCBrZXlib2FyZFVJTW9kZSgpIGluc3RlYWQgb2YgdGFic1RvTGlua3MoKS4g
Tm8gY2hhbmdlIGluIGZ1bmN0aW9uYWxpdHksIHNpbmNlCisgICAgICAgIHRoaXMgcGxhdGZvcm0g
ZG9lc24ndCBvYnNlcnZlIG9yIGhhdmUgZnVsbCBrZXlib2FyZCBhY2Nlc3Mgc3RhdGUuCisKIDIw
MTEtMDMtMDIgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IFhhbiBMb3Blei4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcAkocmV2aXNpb24gODAxNzUp
CisrKyBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNTQsMTIgKzM1NCwxMyBAQCBib29sIENocm9tZUNsaWVudDo6
c2hvdWxkSW50ZXJydXB0SmF2YVNjCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIENocm9t
ZUNsaWVudDo6dGFic1RvTGlua3MoKSBjb25zdAorS2V5Ym9hcmRVSU1vZGUgQ2hyb21lQ2xpZW50
OjprZXlib2FyZFVJTW9kZSgpCiB7CisgICAgYm9vbCB0YWJzVG9MaW5rcyA9IHRydWU7CiAgICAg
aWYgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6ZHVtcFJlbmRlclRyZWVNb2RlRW5hYmxlZCgp
KQotICAgICAgICByZXR1cm4gRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpsaW5rc0luY2x1ZGVk
SW5Gb2N1c0NoYWluKCk7CisgICAgICAgIHRhYnNUb0xpbmtzID0gRHVtcFJlbmRlclRyZWVTdXBw
b3J0R3RrOjpsaW5rc0luY2x1ZGVkSW5Gb2N1c0NoYWluKCk7CiAKLSAgICByZXR1cm4gdHJ1ZTsK
KyAgICByZXR1cm4gdGFic1RvTGlua3MgPyBLZXlib2FyZEFjY2Vzc1RhYnNUb0xpbmtzIDogS2V5
Ym9hcmRBY2Nlc3NEZWZhdWx0OwogfQogCiBJbnRSZWN0IENocm9tZUNsaWVudDo6d2luZG93UmVz
aXplclJlY3QoKSBjb25zdApJbmRleDogU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
Q2hyb21lQ2xpZW50R3RrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgJKHJldmlzaW9uIDgwMTc1KQorKysgU291cmNlL1dl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiUG9wdXBNZW51
LmgiCiAjaW5jbHVkZSAiU2VhcmNoUG9wdXBNZW51LmgiCisjaW5jbHVkZSAiV2ViQ29yZUtleWJv
YXJkVUlNb2RlLmgiCiAKIHR5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJWaWV3IFdlYktpdFdlYlZp
ZXc7CiAKQEAgLTkxLDcgKzkyLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgICAgIHZpcnR1
YWwgYm9vbCBydW5KYXZhU2NyaXB0UHJvbXB0KFdlYkNvcmU6OkZyYW1lKiwgY29uc3QgV1RGOjpT
dHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFdURjo6U3RyaW5nJiBkZWZhdWx0VmFsdWUsIFdURjo6U3Ry
aW5nJiByZXN1bHQpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0U3RhdHVzYmFyVGV4dChjb25z
dCBXVEY6OlN0cmluZyYpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSW50ZXJydXB0SmF2
YVNjcmlwdCgpOwotICAgICAgICB2aXJ0dWFsIGJvb2wgdGFic1RvTGlua3MoKSBjb25zdDsKKyAg
ICAgICAgdmlydHVhbCBXZWJDb3JlOjpLZXlib2FyZFVJTW9kZSBrZXlib2FyZFVJTW9kZSgpOwog
CiAgICAgICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UmVjdCB3aW5kb3dSZXNpemVyUmVjdCgpIGNv
bnN0OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L2hhaWt1L0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2hhaWt1L0NoYW5nZUxvZwkocmV2aXNpb24gODAxODcpCisrKyBTb3Vy
Y2UvV2ViS2l0L2hhaWt1L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBA
CisyMDExLTAzLTAyICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJFR1JFU1NJT04gKFdl
YktpdDIpOiBUYWIga2V5cyBubyBsb25nZXIgb2JzZXJ2ZSBGdWxsIEtleWJvYXJkIEFjY2Vzcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTU2MzMKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg5NjMwMjM+CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRIYWlrdS5jcHA6IChXZWJDb3JlOjpDaHJvbWVDbGllbnRIYWlrdTo6a2V5
Ym9hcmRVSU1vZGUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1
Lmg6CisgICAgICAgIEltcGxlbWVudCBrZXlib2FyZFVJTW9kZSgpIGluc3RlYWQgb2YgdGFic1Rv
TGlua3MoKS4gTm8gY2hhbmdlIGluIGZ1bmN0aW9uYWxpdHksIHNpbmNlCisgICAgICAgIHRoaXMg
cGxhdGZvcm0gZG9lc24ndCBvYnNlcnZlIG9yIGhhdmUgZnVsbCBrZXlib2FyZCBhY2Nlc3Mgc3Rh
dGUuCisKIDIwMTEtMDItMjggIENoYW5nIFNodSAgPGNzaHVAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2hhaWt1L1dl
YkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1LmNwcAkocmV2aXNp
b24gODAxNzUpCisrKyBTb3VyY2UvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNs
aWVudEhhaWt1LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUzLDkgKzI1Myw5IEBAIGJvb2wgQ2hy
b21lQ2xpZW50SGFpa3U6OnNob3VsZEludGVycnVwdEoKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
LWJvb2wgQ2hyb21lQ2xpZW50SGFpa3U6OnRhYnNUb0xpbmtzKCkgY29uc3QKK0tleWJvYXJkVUlN
b2RlIENocm9tZUNsaWVudEhhaWt1OjprZXlib2FyZFVJTW9kZSgpCiB7Ci0gICAgcmV0dXJuIGZh
bHNlOworICAgIHJldHVybiBLZXlib2FyZEFjY2Vzc0RlZmF1bHQ7CiB9CiAKIEludFJlY3QgQ2hy
b21lQ2xpZW50SGFpa3U6OndpbmRvd1Jlc2l6ZXJSZWN0KCkgY29uc3QKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50SGFpa3UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1
LmgJKHJldmlzaW9uIDgwMTc1KQorKysgU291cmNlL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRIYWlrdS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAj
aW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVk
ZSAiUmVmQ291bnRlZC5oIgorI2luY2x1ZGUgIldlYkNvcmVLZXlib2FyZFVJTW9kZS5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEwMSw3ICsxMDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJbnRlcnJ1cHRKYXZhU2NyaXB0KCk7CiAK
ICAgICAgICAgdmlydHVhbCB2b2lkIHNldFN0YXR1c2JhclRleHQoY29uc3QgV1RGOjpTdHJpbmcm
KTsKLSAgICAgICAgdmlydHVhbCBib29sIHRhYnNUb0xpbmtzKCkgY29uc3Q7CisgICAgICAgIHZp
cnR1YWwgV2ViQ29yZTo6S2V5Ym9hcmRVSU1vZGUga2V5Ym9hcmRVSU1vZGUoKTsKICAgICAgICAg
dmlydHVhbCBJbnRSZWN0IHdpbmRvd1Jlc2l6ZXJSZWN0KCkgY29uc3Q7CiAKICAgICAgICAgdmly
dHVhbCB2b2lkIGludmFsaWRhdGVXaW5kb3coY29uc3QgSW50UmVjdCYsIGJvb2wpOwpJbmRleDog
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZwkocmV2aXNpb24gODAxODcpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMCBAQAorMjAxMS0wMy0wMiAgQWxleGV5
IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBSRUdSRVNTSU9OIChXZWJLaXQyKTogVGFiIGtleXMgbm8g
bG9uZ2VyIG9ic2VydmUgRnVsbCBLZXlib2FyZCBBY2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU1NjMzCisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS84OTYzMDIzPgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tOgorICAgICAgICBS
ZW1vdmVkIHRhYnNUb0xpbmtzKCkuIE1hYyBXZWJLaXQgYWxyZWFkeSBpbXBsZW1lbnRzIGtleWJv
YXJkVUlNb2RlKCkuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06ICgtW1dlYlZpZXcg
X3JldHJpZXZlS2V5Ym9hcmRVSU1vZGVGcm9tUHJlZmVyZW5jZXM6XSk6CisgICAgICAgIFJlbW92
ZWQgYW4gaW5jb3JyZWN0IGNvbW1lbnQuIFdlIGFjdHVhbGx5IGdldCBhIHZhbHVlIG9mIDIgb24g
U25vdyBMZW9wYXJkLCBhbmQgd2UgZG9uJ3QKKyAgICAgICAgcmVxdWlyZSBib3RoIGJpdHMgdG8g
YmUgc2V0LiBUaGUgcmVzdCBvZiB0aGUgY29tbWVudCBtaWdodCBiZSB3cm9uZyB0b28sIGJ1dCBJ
J20gbm90IHN1cmUsCisgICAgICAgIHNvIEkndmUgcHJlc2VydmVkIGl0LgorCiAyMDExLTAzLTAy
ICBKZXNzaWUgQmVybGluICA8amJlcmxpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgQWRhbSBSb2Jlbi4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCShyZXZpc2lvbiA4MDE3NSkKKysrIFNvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC04OCw4ICs4OCw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgcnVuSmF2YVNjcmlwdFBy
b21wdChXZWJDb3JlOjpGcmFtZSosIGNvbnN0IFdURjo6U3RyaW5nJiBtZXNzYWdlLCBjb25zdCBX
VEY6OlN0cmluZyYgZGVmYXVsdFZhbHVlLCBXVEY6OlN0cmluZyYgcmVzdWx0KTsKICAgICB2aXJ0
dWFsIGJvb2wgc2hvdWxkSW50ZXJydXB0SmF2YVNjcmlwdCgpOwogCi0gICAgdmlydHVhbCBib29s
IHRhYnNUb0xpbmtzKCkgY29uc3Q7Ci0gICAgCiAgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRSZWN0
IHdpbmRvd1Jlc2l6ZXJSZWN0KCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0
ZVdpbmRvdyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgYm9vbCk7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCShyZXZp
c2lvbiA4MDE3NSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtNTQ2LDExICs1NDYsNiBAQCB2b2lkIFdlYkNo
cm9tZUNsaWVudDo6c2V0U3RhdHVzYmFyVGV4dChjCiAgICAgW2xvY2FsUG9vbCBkcmFpbl07CiB9
CiAKLWJvb2wgV2ViQ2hyb21lQ2xpZW50Ojp0YWJzVG9MaW5rcygpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIFtbbV93ZWJWaWV3IHByZWZlcmVuY2VzXSB0YWJzVG9MaW5rc107Ci19Ci0KIEludFJlY3Qg
V2ViQ2hyb21lQ2xpZW50Ojp3aW5kb3dSZXNpemVyUmVjdCgpIGNvbnN0CiB7CiAgICAgTlNSZWN0
IHJlY3QgPSBbW21fd2ViVmlldyB3aW5kb3ddIF9ncm93Qm94UmVjdF07CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiA4MDE3NSkKKysrIFNvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTg5NSwxMCArNTg5
NSw2IEBAIC0gKHZvaWQpX3JldHJpZXZlS2V5Ym9hcmRVSU1vZGVGcm9tUHJlZmUKICAgICAvLyBU
aGUga2V5Ym9hcmQgYWNjZXNzIG1vZGUgaXMgcmVwb3J0ZWQgYnkgdHdvIGJpdHM6CiAgICAgLy8g
Qml0IDAgaXMgc2V0IGlmIGZlYXR1cmUgaXMgb24KICAgICAvLyBCaXQgMSBpcyBzZXQgaWYgZnVs
bCBrZXlib2FyZCBhY2Nlc3Mgd29ya3MgZm9yIGFueSBjb250cm9sLCBub3QganVzdCB0ZXh0IGJv
eGVzIGFuZCBsaXN0cwotICAgIC8vIFdlIHJlcXVpcmUgYm90aCBiaXRzIHRvIGJlIG9uLgotICAg
IC8vIEkgZG8gbm90IGtub3cgdGhhdCB3ZSB3b3VsZCBldmVyIGdldCBvbmUgYml0IG9uIGFuZCB0
aGUgb3RoZXIgb2ZmIHNpbmNlCi0gICAgLy8gY2hlY2tpbmcgdGhlIGNoZWNrYm94IGluIHN5c3Rl
bSBwcmVmZXJlbmNlcyB3aGljaCBpcyBtYXJrZWQgYXMgIlR1cm4gb24gZnVsbCBrZXlib2FyZCBh
Y2Nlc3MiCi0gICAgLy8gdHVybnMgb24gYm90aCBiaXRzLgogICAgIF9wcml2YXRlLT5fa2V5Ym9h
cmRVSU1vZGUgPSAobW9kZSAmIDB4MikgPyBLZXlib2FyZEFjY2Vzc0Z1bGwgOiBLZXlib2FyZEFj
Y2Vzc0RlZmF1bHQ7CiAgICAgCiAgICAgLy8gY2hlY2sgZm9yIHRhYmJpbmcgdG8gbGlua3MKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvcXQvQ2hhbmdlTG9nCShyZXZpc2lvbiA4MDE4NykKKysrIFNvdXJjZS9XZWJLaXQvcXQvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDMtMDIgIEFsZXhl
eSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUkVHUkVTU0lPTiAoV2ViS2l0Mik6IFRhYiBrZXlzIG5v
IGxvbmdlciBvYnNlcnZlIEZ1bGwgS2V5Ym9hcmQgQWNjZXNzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NTYzMworICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vODk2MzAyMz4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNw
cCAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OmtleWJvYXJkVUlNb2RlKToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oOgorICAgICAgICBJbXBsZW1lbnQga2V5Ym9h
cmRVSU1vZGUoKSBpbnN0ZWFkIG9mIHRhYnNUb0xpbmtzKCkuIE5vIGNoYW5nZSBpbiBmdW5jdGlv
bmFsaXR5LCBzaW5jZQorICAgICAgICB0aGlzIHBsYXRmb3JtIGRvZXNuJ3Qgb2JzZXJ2ZSBvciBo
YXZlIGZ1bGwga2V5Ym9hcmQgYWNjZXNzIHN0YXRlLgorCiAyMDExLTAzLTAxICBCcmlhbiBXZWlu
c3RlaW4gIDxid2VpbnN0ZWluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFt
IFJvYmVuLgpJbmRleDogU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGll
bnRRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9D
aHJvbWVDbGllbnRRdC5jcHAJKHJldmlzaW9uIDgwMTc1KQorKysgU291cmNlL1dlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1NCw5
ICszNTQsMTAgQEAgYm9vbCBDaHJvbWVDbGllbnRRdDo6c2hvdWxkSW50ZXJydXB0SmF2YQogICAg
IHJldHVybiBzaG91bGRJbnRlcnJ1cHQ7CiB9CiAKLWJvb2wgQ2hyb21lQ2xpZW50UXQ6OnRhYnNU
b0xpbmtzKCkgY29uc3QKK0tleWJvYXJkVUlNb2RlIENocm9tZUNsaWVudFF0OjprZXlib2FyZFVJ
TW9kZSgpCiB7Ci0gICAgcmV0dXJuIG1fd2ViUGFnZS0+c2V0dGluZ3MoKS0+dGVzdEF0dHJpYnV0
ZShRV2ViU2V0dGluZ3M6OkxpbmtzSW5jbHVkZWRJbkZvY3VzQ2hhaW4pOworICAgIHJldHVybiBt
X3dlYlBhZ2UtPnNldHRpbmdzKCktPnRlc3RBdHRyaWJ1dGUoUVdlYlNldHRpbmdzOjpMaW5rc0lu
Y2x1ZGVkSW5Gb2N1c0NoYWluKSA/CisgICAgICAgIEtleWJvYXJkQWNjZXNzVGFic1RvTGlua3Mg
OiBLZXlib2FyZEFjY2Vzc0RlZmF1bHQ7CiB9CiAKIEludFJlY3QgQ2hyb21lQ2xpZW50UXQ6Ondp
bmRvd1Jlc2l6ZXJSZWN0KCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvQ2hyb21lQ2xpZW50UXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L1dl
YkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmgJKHJldmlzaW9uIDgwMTc1KQorKysgU291cmNl
L1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIlBsYXRmb3Jt
U3RyaW5nLmgiCiAjaW5jbHVkZSAiUXRQbGF0Zm9ybVBsdWdpbi5oIgorI2luY2x1ZGUgIldlYkNv
cmVLZXlib2FyZFVJTW9kZS5oIgogCiBRVF9CRUdJTl9OQU1FU1BBQ0UKIGNsYXNzIFFFdmVudExv
b3A7CkBAIC0xMTIsNyArMTEzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZp
cnR1YWwgdm9pZCBzZXRTdGF0dXNiYXJUZXh0KGNvbnN0IFN0cmluZyYpOwogCi0gICAgICAgIHZp
cnR1YWwgYm9vbCB0YWJzVG9MaW5rcygpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIFdlYkNvcmU6
OktleWJvYXJkVUlNb2RlIGtleWJvYXJkVUlNb2RlKCk7CiAgICAgICAgIHZpcnR1YWwgSW50UmVj
dCB3aW5kb3dSZXNpemVyUmVjdCgpIGNvbnN0OwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBpbnZh
bGlkYXRlV2luZG93KGNvbnN0IEludFJlY3QmLCBib29sKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
d2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDgwMTg3KQorKysgU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDMtMDIgIEFsZXhleSBQcm9za3VyeWFrb3Yg
IDxhcEBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgUkVHUkVTU0lPTiAoV2ViS2l0Mik6IFRhYiBrZXlzIG5vIGxvbmdlciBvYnNlcnZl
IEZ1bGwgS2V5Ym9hcmQgQWNjZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01NTYzMworICAgICAgICA8cmRhcjovL3Byb2JsZW0vODk2MzAyMz4KKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6IChXZWJDaHJvbWVD
bGllbnQ6OmtleWJvYXJkVUlNb2RlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuaDoKKyAgICAgICAgSW1wbGVtZW50IGtleWJvYXJkVUlNb2RlKCkgaW5zdGVhZCBv
ZiB0YWJzVG9MaW5rcygpLiBObyBjaGFuZ2UgaW4gZnVuY3Rpb25hbGl0eSwgc2luY2UKKyAgICAg
ICAgdGhpcyBwbGF0Zm9ybSBkb2Vzbid0IG9ic2VydmUgb3IgaGF2ZSBmdWxsIGtleWJvYXJkIGFj
Y2VzcyBzdGF0ZS4KKwogMjAxMS0wMy0wMSAgQnJpYW4gV2VpbnN0ZWluICA8YndlaW5zdGVpbkBh
cHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBSb2Jlbi4KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNw
cAkocmV2aXNpb24gODAxNzUpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NDgsMTQgKzQ0OCwxNCBAQCBi
b29sIFdlYkNocm9tZUNsaWVudDo6c2hvdWxkSW50ZXJydXB0SmF2CiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi1ib29sIFdlYkNocm9tZUNsaWVudDo6dGFic1RvTGlua3MoKSBjb25zdAorS2V5Ym9h
cmRVSU1vZGUgV2ViQ2hyb21lQ2xpZW50OjprZXlib2FyZFVJTW9kZSgpCiB7CiAgICAgQk9PTCBl
bmFibGVkID0gRkFMU0U7CiAgICAgSVdlYlByZWZlcmVuY2VzKiBwcmVmZXJlbmNlczsKICAgICBp
ZiAoU1VDQ0VFREVEKG1fd2ViVmlldy0+cHJlZmVyZW5jZXMoJnByZWZlcmVuY2VzKSkpCiAgICAg
ICAgIHByZWZlcmVuY2VzLT50YWJzVG9MaW5rcygmZW5hYmxlZCk7CiAKLSAgICByZXR1cm4gISFl
bmFibGVkOworICAgIHJldHVybiBlbmFibGVkID8gS2V5Ym9hcmRBY2Nlc3NUYWJzVG9MaW5rcyA6
IEtleWJvYXJkQWNjZXNzRGVmYXVsdDsKIH0KIAogSW50UmVjdCBXZWJDaHJvbWVDbGllbnQ6Ondp
bmRvd1Jlc2l6ZXJSZWN0KCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCShyZXZpc2lvbiA4MDE3NSkKKysrIFNv
dXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRl
eHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZvY3VzRGlyZWN0aW9uLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9TY3JvbGxUeXBlcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvV2ViQ29yZUtleWJvYXJkVUlN
b2RlLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgogCkBAIC05Miw3ICs5Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0U3Rh
dHVzYmFyVGV4dChjb25zdCBXVEY6OlN0cmluZyYpOwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJ
bnRlcnJ1cHRKYXZhU2NyaXB0KCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgdGFic1RvTGlua3MoKSBj
b25zdDsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OktleWJvYXJkVUlNb2RlIGtleWJvYXJkVUlNb2Rl
KCk7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRSZWN0IHdpbmRvd1Jlc2l6ZXJSZWN0KCkgY29u
c3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVdpbmRvdyhjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiwgYm9vbCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxvZwkocmV2aXNpb24gODAxODcp
CisrKyBTb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE2IEBACisyMDExLTAzLTAyICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJFR1JF
U1NJT04gKFdlYktpdDIpOiBUYWIga2V5cyBubyBsb25nZXIgb2JzZXJ2ZSBGdWxsIEtleWJvYXJk
IEFjY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NTU2MzMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg5NjMwMjM+CisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9DaHJvbWVDbGllbnRXaW5DRS5jcHA6IChXZWJLaXQ6OkNocm9tZUNsaWVudFdp
bkNFOjprZXlib2FyZFVJTW9kZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50V2luQ0UuaDoKKyAgICAgICAgSW1wbGVtZW50IGtleWJvYXJkVUlNb2RlKCkgaW5zdGVhZCBv
ZiB0YWJzVG9MaW5rcygpLiBObyBjaGFuZ2UgaW4gZnVuY3Rpb25hbGl0eSwgc2luY2UKKyAgICAg
ICAgdGhpcyBwbGF0Zm9ybSBkb2Vzbid0IG9ic2VydmUgb3IgaGF2ZSBmdWxsIGtleWJvYXJkIGFj
Y2VzcyBzdGF0ZS4KKwogMjAxMS0wMy0wMiAgQnJpYW4gV2VpbnN0ZWluICA8YndlaW5zdGVpbkBh
cHBsZS5jb20+CiAKICAgICAgICAgV2luQ0UgYnVpbGQgZml4LgpJbmRleDogU291cmNlL1dlYktp
dC93aW5jZS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRXaW5DRS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRXaW5DRS5j
cHAJKHJldmlzaW9uIDgwMTc1KQorKysgU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRXaW5DRS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxOSw5ICsyMTksOSBA
QCBib29sIENocm9tZUNsaWVudFdpbkNFOjpzaG91bGRJbnRlcnJ1cHRKCiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCi1ib29sIENocm9tZUNsaWVudFdpbkNFOjp0YWJzVG9MaW5rcygpIGNvbnN0CitL
ZXlib2FyZFVJTW9kZSBDaHJvbWVDbGllbnRXaW5DRTo6a2V5Ym9hcmRVSU1vZGUoKQogewotICAg
IHJldHVybiB0cnVlOworICAgIHJldHVybiBLZXlib2FyZEFjY2Vzc1RhYnNUb0xpbmtzOwogfQog
CiBJbnRSZWN0IENocm9tZUNsaWVudFdpbkNFOjp3aW5kb3dSZXNpemVyUmVjdCgpIGNvbnN0Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFdpbkNF
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9DaHJv
bWVDbGllbnRXaW5DRS5oCShyZXZpc2lvbiA4MDE3NSkKKysrIFNvdXJjZS9XZWJLaXQvd2luY2Uv
V2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50V2luQ0UuaAkod29ya2luZyBjb3B5KQpAQCAtMjYs
NiArMjYsNyBAQAogI2RlZmluZSBDaHJvbWVDbGllbnRXaW5DRV9oCiAKICNpbmNsdWRlICJDaHJv
bWVDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJDb3JlS2V5Ym9hcmRVSU1vZGUuaCIKIAogY2xhc3Mg
V2ViVmlldzsKIApAQCAtODksNyArOTAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHJ1
bkphdmFTY3JpcHRQcm9tcHQoV2ViQ29yZTo6RnJhbWUqLCBjb25zdCBXVEY6OlN0cmluZyYgbWVz
c2FnZSwgY29uc3QgV1RGOjpTdHJpbmcmIGRlZmF1bHRWYWx1ZSwgV1RGOjpTdHJpbmcmIHJlc3Vs
dCk7CiAgICAgdmlydHVhbCB2b2lkIHNldFN0YXR1c2JhclRleHQoY29uc3QgV1RGOjpTdHJpbmcm
KTsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSW50ZXJydXB0SmF2YVNjcmlwdCgpOwotICAgIHZp
cnR1YWwgYm9vbCB0YWJzVG9MaW5rcygpIGNvbnN0OworICAgIHZpcnR1YWwgV2ViQ29yZTo6S2V5
Ym9hcmRVSU1vZGUga2V5Ym9hcmRVSU1vZGUoKTsKIAogICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50
UmVjdCB3aW5kb3dSZXNpemVyUmVjdCgpIGNvbnN0OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L3d4
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZwkocmV2
aXNpb24gODAxODcpCisrKyBTb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDE2IEBACisyMDExLTAzLTAyICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBA
YXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFJFR1JFU1NJT04gKFdlYktpdDIpOiBUYWIga2V5cyBubyBsb25nZXIgb2JzZXJ2ZSBGdWxs
IEtleWJvYXJkIEFjY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTU2MzMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg5NjMwMjM+CisKKyAgICAg
ICAgKiBXZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmNwcDogKFdlYkNvcmU6OkNocm9tZUNs
aWVudFd4OjprZXlib2FyZFVJTW9kZSk6CisgICAgICAgICogV2ViS2l0U3VwcG9ydC9DaHJvbWVD
bGllbnRXeC5oOgorICAgICAgICBJbXBsZW1lbnQga2V5Ym9hcmRVSU1vZGUoKSBpbnN0ZWFkIG9m
IHRhYnNUb0xpbmtzKCkuIE5vIGNoYW5nZSBpbiBmdW5jdGlvbmFsaXR5LCBzaW5jZQorICAgICAg
ICB0aGlzIHBsYXRmb3JtIGRvZXNuJ3Qgb2JzZXJ2ZSBvciBoYXZlIGZ1bGwga2V5Ym9hcmQgYWNj
ZXNzIHN0YXRlLgorCiAyMDExLTAzLTAxICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0aGVvbGxp
dmllcnMuY29tPgogCiAgICAgICAgIFt3eF0gQnVpbGQgZml4IGFmdGVyIHJlbW92YWwgb2YgRnJh
bWU6OmlzQ29udGVudEVkaXRhYmxlLgpJbmRleDogU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBw
b3J0L0Nocm9tZUNsaWVudFd4LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3d4L1dl
YktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guY3BwCShyZXZpc2lvbiA4MDE3NSkKKysrIFNvdXJj
ZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMzMywxMCArMzMzLDEwIEBAIGJvb2wgQ2hyb21lQ2xpZW50V3g6OnNob3VsZEludGVy
cnVwdEphdmEKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgQ2hyb21lQ2xpZW50V3g6OnRh
YnNUb0xpbmtzKCkgY29uc3QKK0tleWJvYXJkVUlNb2RlIENocm9tZUNsaWVudFd4OjprZXlib2Fy
ZFVJTW9kZSgpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7Cisg
ICAgcmV0dXJuIEtleWJvYXJkQWNjZXNzRGVmYXVsdDsKIH0KIAogSW50UmVjdCBDaHJvbWVDbGll
bnRXeDo6d2luZG93UmVzaXplclJlY3QoKSBjb25zdApJbmRleDogU291cmNlL1dlYktpdC93eC9X
ZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC93eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmgJKHJldmlzaW9uIDgwMTc1KQorKysg
U291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJGb2N1c0RpcmVjdGlvbi5oIgogI2lu
Y2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJXZWJWaWV3LmgiCisjaW5jbHVkZSAiV2ViQ29y
ZUtleWJvYXJkVUlNb2RlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtOTgsNyArOTks
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldFN0YXR1c2JhclRleHQoY29uc3QgU3Ry
aW5nJik7CiAgICAgdmlydHVhbCBib29sIHNob3VsZEludGVycnVwdEphdmFTY3JpcHQoKTsKICAg
ICAKLSAgICB2aXJ0dWFsIGJvb2wgdGFic1RvTGlua3MoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFdl
YkNvcmU6OktleWJvYXJkVUlNb2RlIGtleWJvYXJkVUlNb2RlKCk7CiAKICAgICB2aXJ0dWFsIElu
dFJlY3Qgd2luZG93UmVzaXplclJlY3QoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xs
QmFja2luZ1N0b3JlKGludCBkeCwgaW50IGR5LCBjb25zdCBJbnRSZWN0JiBzY3JvbGxWaWV3UmVj
dCwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QpOwo=
</data>
<flag name="review"
          id="76588"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>