<?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>130275</bug_id>
          
          <creation_ts>2014-03-14 17:37:09 -0700</creation_ts>
          <short_desc>Provide preference to enable additional AVFoundation options</short_desc>
          <delta_ts>2014-03-17 13:33:50 -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>Media</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>All</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="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Brent Fulgham">bfulgham</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>calvaris</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>990758</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-03-14 17:37:09 -0700</bug_when>
    <thetext>Add a new preference and attribute to allow WebKit to tell AVFoundation to turn on additional processing during playback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>990808</commentid>
    <comment_count>1</comment_count>
      <attachid>226802</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-03-14 21:10:27 -0700</bug_when>
    <thetext>Created attachment 226802
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>990809</commentid>
    <comment_count>2</comment_count>
      <attachid>226802</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-03-14 21:12:16 -0700</bug_when>
    <thetext>Comment on attachment 226802
Patch

Initial WIP. Checking Windows build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>990828</commentid>
    <comment_count>3</comment_count>
      <attachid>226810</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-03-14 23:04:01 -0700</bug_when>
    <thetext>Created attachment 226810
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>990847</commentid>
    <comment_count>4</comment_count>
      <attachid>226810</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2014-03-15 00:28:21 -0700</bug_when>
    <thetext>Comment on attachment 226810
Patch

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

Where&apos;s WebKit2?

&gt; Source/WebCore/html/HTMLMediaElement.cpp:5986
&gt; +    return true;

This logic, while correct, seems a bit odd to me. Why check for the attribute first before the setting, rather than the other way around?

&gt; Source/WebCore/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:2
&gt; + * Copyright (C) 2011-2014 Apple Inc. All rights reserved.

I think proper style was to list individual years separately than a range…?

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:589
&gt; +    

Please remove.

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:617
&gt; +        [options.get() setObject: [NSNumber numberWithBool: TRUE] forKey: AVURLAssetInheritURIQueryComponentFromReferencingURIKey];

no space after &quot;:&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>990875</commentid>
    <comment_count>5</comment_count>
      <attachid>226824</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-03-15 10:37:52 -0700</bug_when>
    <thetext>Created attachment 226824
Updated to handle Windows.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>990877</commentid>
    <comment_count>6</comment_count>
      <attachid>226810</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-03-15 10:49:23 -0700</bug_when>
    <thetext>Comment on attachment 226810
Patch

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

&gt;&gt; Source/WebCore/html/HTMLMediaElement.cpp:5986
&gt;&gt; +    return true;
&gt; 
&gt; This logic, while correct, seems a bit odd to me. Why check for the attribute first before the setting, rather than the other way around?

After talking with Jer, we decided to make this a generic method that could check for arbitrary attributes, not just this specific case we are dealing with today. If the attribute doesn&apos;t exist, it doesn&apos;t really matter if the setting is turned off since the result is the same. But if the setting does exist, we only need to check the setting for this specific URI case.

I&apos;m not strongly attached to this; I could switch the order if you prefer.

&gt;&gt; Source/WebCore/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:2
&gt;&gt; + * Copyright (C) 2011-2014 Apple Inc. All rights reserved.
&gt; 
&gt; I think proper style was to list individual years separately than a range…?

Darin told me in a recent review that we should use ranges.

&gt; Source/WebCore/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:255
&gt; +static CFStringRef AVCFURLAssetInheritURIQueryComponentFromReferencingURIKey()

Note: This isn&apos;t needed and is removed in an updated patch.

&gt;&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:589
&gt;&gt; +    
&gt; 
&gt; Please remove.

Will do.

&gt;&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:617
&gt;&gt; +        [options.get() setObject: [NSNumber numberWithBool: TRUE] forKey: AVURLAssetInheritURIQueryComponentFromReferencingURIKey];
&gt; 
&gt; no space after &quot;:&quot;

Will do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>990878</commentid>
    <comment_count>7</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-03-15 10:51:09 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 226810 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=226810&amp;action=review
&gt; 
&gt; Where&apos;s WebKit2?

I&apos;ll review this on Mac after the servers are back up. I believe the preference logic is auto generated based on the Settings.in file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>991081</commentid>
    <comment_count>8</comment_count>
      <attachid>226875</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-03-16 21:27:00 -0700</bug_when>
    <thetext>Created attachment 226875
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>991087</commentid>
    <comment_count>9</comment_count>
      <attachid>226878</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-03-16 21:42:34 -0700</bug_when>
    <thetext>Created attachment 226878
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>991089</commentid>
    <comment_count>10</comment_count>
      <attachid>226878</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2014-03-16 21:57:04 -0700</bug_when>
    <thetext>Comment on attachment 226878
Patch

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

&gt; Source/WebCore/platform/graphics/MediaPlayer.h:251
&gt; +    virtual bool doesHaveAttribute(const QualifiedName&amp;) const { return false; }

This is a layering violation, QualifiedName is in WebCore/dom.

&gt; Source/WebCore/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:39
&gt; +#include &quot;HTMLNames.h&quot;

This can&apos;t be included from platform/

&gt; Source/WebCore/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:1339
&gt; +        bool value = true;

Nit: why not reuse inheritURI?

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:43
&gt; +#import &quot;HTMLNames.h&quot;

Layering.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>991282</commentid>
    <comment_count>11</comment_count>
      <attachid>226935</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-03-17 10:18:34 -0700</bug_when>
    <thetext>Created attachment 226935
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>991283</commentid>
    <comment_count>12</comment_count>
      <attachid>226935</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-03-17 10:20:38 -0700</bug_when>
    <thetext>Comment on attachment 226935
Patch

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

WIP patch to move changes from Mac to Windows.

&gt; Source/WebCore/platform/graphics/MediaPlayer.h:142
&gt; +class QualifiedName;

Whoops -- need to remove this.

&gt; Source/WebKit/win/WebView.cpp:5054
&gt; +    hr = prefsPrivate-&gt;isInheritURIQueryComponentEnabled(&amp;enabled); // OOPS! Don&apos;t checkin

Oops 2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>991299</commentid>
    <comment_count>13</comment_count>
      <attachid>226935</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2014-03-17 10:44:03 -0700</bug_when>
    <thetext>Comment on attachment 226935
Patch

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

&gt; Source/WebCore/html/HTMLMediaElement.cpp:5989
&gt; +    

Nit: unnecessary white space.

&gt; Source/WebCore/platform/graphics/MediaPlayer.cpp:1414
&gt; +    

Ditto.

&gt; Source/WebCore/platform/graphics/MediaPlayer.h:303
&gt; +    

Ditto.

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:615
&gt; +    

Ditto.

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:618
&gt; +    

Ditto.

&gt; Source/WebKit2/Shared/WebPreferencesStore.h:218
&gt; +    

Ditto.

&gt; Source/WebKit2/UIProcess/API/C/WKPreferencesPrivate.h:324
&gt; +    

Ditto.

&gt; Source/WebKit2/UIProcess/API/C/WKPreferencesPrivate.h:328
&gt; +    

Ditto.

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:2628
&gt; +    

Ditto.

&gt; Source/WebKit/mac/WebView/WebView.mm:2394
&gt; +    

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>991337</commentid>
    <comment_count>14</comment_count>
      <attachid>226945</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-03-17 12:19:17 -0700</bug_when>
    <thetext>Created attachment 226945
Finalized after testing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>991355</commentid>
    <comment_count>15</comment_count>
      <attachid>226935</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-03-17 13:16:53 -0700</bug_when>
    <thetext>Comment on attachment 226935
Patch

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

&gt;&gt; Source/WebCore/html/HTMLMediaElement.cpp:5989
&gt;&gt; +    
&gt; 
&gt; Nit: unnecessary white space.

Looks like I have a bad Xcode editor preference set. I&apos;ll fix these when landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>991367</commentid>
    <comment_count>16</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-03-17 13:33:50 -0700</bug_when>
    <thetext>Committed r165753: &lt;http://trac.webkit.org/changeset/165753&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>226802</attachid>
            <date>2014-03-14 21:10:27 -0700</date>
            <delta_ts>2014-03-14 23:03:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-130275-20140314211005.patch</filename>
            <type>text/plain</type>
            <size>14499</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NTY2NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDE0LTAzLTE0ICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFByb3ZpZGUgcHJlZmVyZW5j
ZSB0byBlbmFibGUgYWRkaXRpb25hbCBBVkZvdW5kYXRpb24gb3B0aW9ucworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMwMjc1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZG9lc0hhdmVBdHRy
aWJ1dGUpOiBBZGRlZC4KKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAg
ICAgKiBwYWdlL1NldHRpbmdzLmluOiBBZGQgbmV3IGF0dHJpYnV0ZS4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllcjo6ZG9lc0hhdmVBdHRyaWJ1dGUpOiBBZGRlZCBzdHViIHRvIGNhbGwgcHJpdmF0ZSBwbGF5
ZXIgb2JqZWN0J3MKKyAgICAgICAgaW1wbGVtZW50YXRpb24gb2YgZG9lc0hhdmVBdHRyaWJ1dGUu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyQ2xpZW50Ojpkb2VzSGF2ZUF0dHJpYnV0ZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbkNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbkNGOjpBVkZXcmFwcGVyOjpjcmVhdGVBc3NldEZvclVSTCk6IENoZWNrIHRoZSA8bWVk
aWE+IG9iamVjdCwKKyAgICAgICAgYW5kIG5vdGlmeSBBVkZvdW5kYXRpb25DRiB0byB1c2UgVVJJ
IG9wdGlvbiBpZiByZWxldmFudC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlQVZB
c3NldEZvclVSTCk6IENoZWNrIHRoZSA8bWVkaWE+IG9iamVjdCwKKyAgICAgICAgYW5kIG5vdGlm
eSBBVkZvdW5kYXRpb24gdG8gdXNlIFVSSSBvcHRpb24gaWYgcmVsZXZhbnQuCisKIDIwMTQtMDMt
MTQgIEphZSBIeXVuIFBhcmsgIDxqYWVwYXJrQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1RleG1h
cF0gUmVtb3ZlIGR1cGxpY2F0ZWQgY29kZSBpbiBUZXh0dXJlTWFwcGVyTGF5ZXIKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCShyZXZpc2lvbiAxNjU2NTQp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgkod29ya2luZyBj
b3B5KQpAQCAtMzU2LDMgKzM1Niw0IEBAIHgtd2Via2l0LWltYWdlbWVudQogd2Via2l0LXBsYXlz
aW5saW5lCiB4LXdlYmtpdC1haXJwbGF5CiB4LXdlYmtpdC13aXJlbGVzc3ZpZGVvcGxheWJhY2tk
aXNhYmxlZAoreC1pdHVuZXMtaW5oZXJpdC11cmktcXVlcnktY29tcG9uZW50CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHJldmlzaW9uIDE2NTY1NCkKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTU5NzMsNiArNTk3MywxOSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZFJlY2VpdmVS
ZW1vdGVDCiAgICAgfQogfQogCitib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmRvZXNIYXZlQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpIGNvbnN0Cit7CisgICAgaWYg
KCFmYXN0SGFzQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgCisgICAgaWYgKFNldHRpbmdzKiBzZXR0aW5ncyA9IGRvY3VtZW50KCkuc2V0dGluZ3Mo
KSkgeworICAgICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSBIVE1MTmFtZXM6OnhfaXR1bmVzX2lu
aGVyaXRfdXJpX3F1ZXJ5X2NvbXBvbmVudEF0dHIpCisgICAgICAgICAgICByZXR1cm4gc2V0dGlu
Z3MtPmVuYWJsZUluaGVyaXRVUklRdWVyeUNvbXBvbmVudCgpOworICAgIH0KKyAgICAKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKyAgICAKIH0KIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuaAkocmV2aXNpb24gMTY1NjU0KQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMSw2ICsxMzEsOCBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzU2F2ZSgpIGNvbnN0OwogICAgIHZp
cnR1YWwgYm9vbCBzdXBwb3J0c1NjYW5uaW5nKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgCisgICAg
dmlydHVhbCBib29sIGRvZXNIYXZlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25z
dCBvdmVycmlkZTsKKwogICAgIFBsYXRmb3JtTWVkaWEgcGxhdGZvcm1NZWRpYSgpIGNvbnN0Owog
ICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdDsKICNpZiBQTEFURk9STShJ
T1MpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmluCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaW4JKHJldmlzaW9uIDE2NTY1NCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaW4JKHdvcmtpbmcgY29weSkKQEAgLTIxOCwzICsy
MTgsNSBAQCBpbWFnZUNvbnRyb2xzRW5hYmxlZCBpbml0aWFsPWZhbHNlLCBjb25kCiAKICMgRklY
TUU6IFRoaXMgaXMgdW5uZWVkZWQgYW5kIHNob3VsZCBiZSByZW1vdmVkLgogYWx3YXlzVXNlQmFz
ZWxpbmVPZlByaW1hcnlGb250IGluaXRpYWw9ZmFsc2UKKworZW5hYmxlSW5oZXJpdFVSSVF1ZXJ5
Q29tcG9uZW50IGluaXRpYWw9ZmFsc2UKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAJKHJldmlzaW9uIDE2NTY1NCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTQwMyw3ICsxNDAzLDE1IEBAIHZvaWQgTWVkaWFQbGF5ZXJGYWN0b3J5U3VwcG9ydDo6
Y2FsbFJlZ2kKIHsKICAgICByZWdpc3Rlck1lZGlhRW5naW5lKGFkZE1lZGlhRW5naW5lKTsKIH0K
LQorICAgIAorYm9vbCBNZWRpYVBsYXllcjo6ZG9lc0hhdmVBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0cmlidXRlKSBjb25zdAoreworICAgIGlmICghbV9tZWRpYVBsYXllckNsaWVu
dCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIHJldHVybiBtX21lZGlhUGxheWVy
Q2xpZW50LT5kb2VzSGF2ZUF0dHJpYnV0ZShhdHRyaWJ1dGUpOworfQorICAgIAogfQogCiAjZW5k
aWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuaAkocmV2aXNpb24gMTY1NjU0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTM5LDYgKzEzOSw3IEBAIGNsYXNz
IEludFNpemU7CiBjbGFzcyBNZWRpYVBsYXllcjsKIHN0cnVjdCBNZWRpYVBsYXllckZhY3Rvcnk7
CiBjbGFzcyBQbGF0Zm9ybVRpbWVSYW5nZXM7CitjbGFzcyBRdWFsaWZpZWROYW1lOwogCiAjaWYg
UExBVEZPUk0oV0lOKSAmJiBVU0UoQVZGT1VOREFUSU9OKQogc3RydWN0IEdyYXBoaWNzRGV2aWNl
QWRhcHRlcjsKQEAgLTI0Nyw2ICsyNDgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBIb3N0V2lu
ZG93KiBtZWRpYVBsYXllckhvc3RXaW5kb3coKSB7IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCBJ
bnRSZWN0IG1lZGlhUGxheWVyV2luZG93Q2xpcFJlY3QoKSB7IHJldHVybiBJbnRSZWN0KCk7IH0K
ICAgICB2aXJ0dWFsIENhY2hlZFJlc291cmNlTG9hZGVyKiBtZWRpYVBsYXllckNhY2hlZFJlc291
cmNlTG9hZGVyKCkgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgYm9vbCBkb2VzSGF2ZUF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogI2lm
IEVOQUJMRShWSURFT19UUkFDSykKICAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJEaWRBZGRB
dWRpb1RyYWNrKFBhc3NSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGU+KSB7IH0KQEAgLTI2Miw3ICsy
NjQsNiBAQCBwdWJsaWM6CiAjZW5kaWYKICNlbmRpZgogCi0KICAgICB2aXJ0dWFsIGJvb2wgbWVk
aWFQbGF5ZXJTaG91bGRXYWl0Rm9yUmVzcG9uc2VUb0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNv
bnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgeyByZXR1cm4gZmFsc2U7IH0KIH07CiAKQEAg
LTI5OCw2ICsyOTksOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBzdXBwb3J0c1NhdmUoKSBjb25zdDsK
ICAgICBib29sIHN1cHBvcnRzU2Nhbm5pbmcoKSBjb25zdDsKICAgICBib29sIHJlcXVpcmVzSW1t
ZWRpYXRlQ29tcG9zaXRpbmcoKSBjb25zdDsKKyAgICBib29sIGRvZXNIYXZlQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKKyAgICAKICAgICBQbGF0Zm9ybU1lZGlhIHBsYXRm
b3JtTWVkaWEoKSBjb25zdDsKICAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29u
c3Q7CiAjaWYgUExBVEZPUk0oSU9TKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCShyZXZpc2lvbiAx
NjU2NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
Y2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC05OCw3ICs5OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlc3Ryb3lJbWFnZUdlbmVyYXRvcigp
OwogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjcmVhdGVJbWFnZUZvclRpbWVJblJlY3QoZmxv
YXQsIGNvbnN0IEludFJlY3QmKTsKIAotICAgIHZvaWQgY3JlYXRlQXNzZXRGb3JVUkwoY29uc3Qg
U3RyaW5nJiB1cmwpOworICAgIHZvaWQgY3JlYXRlQXNzZXRGb3JVUkwoY29uc3QgU3RyaW5nJiB1
cmwsIGJvb2wgaW5oZXJpdFVSSSk7CiAgICAgdm9pZCBzZXRBc3NldChBVkNGVVJMQXNzZXRSZWYp
OwogICAgIAogICAgIHZvaWQgY3JlYXRlUGxheWVyKElEaXJlY3QzRERldmljZTkqKTsKQEAgLTQx
Miw4ICs0MTIsMTAgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6Ywog
CiAgICAgc2V0RGVsYXlDYWxsYmFja3ModHJ1ZSk7CiAKKyAgICBib29sIGluaGVyaXRVUkkgPSBw
bGF5ZXIoKS0+ZG9lc0hhdmVBdHRyaWJ1dGUoSFRNTE5hbWVzOjp4X2l0dW5lc19pbmhlcml0X3Vy
aV9xdWVyeV9jb21wb25lbnRBdHRyKTsKKwogICAgIG1fYXZmV3JhcHBlciA9IG5ldyBBVkZXcmFw
cGVyKHRoaXMpOwotICAgIG1fYXZmV3JhcHBlci0+Y3JlYXRlQXNzZXRGb3JVUkwodXJsKTsKKyAg
ICBtX2F2ZldyYXBwZXItPmNyZWF0ZUFzc2V0Rm9yVVJMKHVybCwgaW5oZXJpdFVSSSk7CiAgICAg
c2V0RGVsYXlDYWxsYmFja3MoZmFsc2UpOwogfQogCkBAIC0xMzI0LDEzICsxMzI2LDIxIEBAIHZv
aWQgQVZGV3JhcHBlcjo6ZGlzY29ubmVjdEFuZERlbGV0ZUFWRlcKICAgICBkaXNwYXRjaF9hc3lu
Y19mKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIGNvbnRleHQsIGRlc3Ryb3lBVkZXcmFwcGVy
KTsKIH0KIAotdm9pZCBBVkZXcmFwcGVyOjpjcmVhdGVBc3NldEZvclVSTChjb25zdCBTdHJpbmcm
IHVybCkKK3ZvaWQgQVZGV3JhcHBlcjo6Y3JlYXRlQXNzZXRGb3JVUkwoY29uc3QgU3RyaW5nJiB1
cmwsIGJvb2wgaW5oZXJpdFVSSSkKIHsKICAgICBBU1NFUlQoIWF2QXNzZXQoKSk7CiAKICAgICBS
ZXRhaW5QdHI8Q0ZVUkxSZWY+IHVybFJlZiA9IFVSTChQYXJzZWRVUkxTdHJpbmcsIHVybCkuY3Jl
YXRlQ0ZVUkwoKTsKIAotICAgIEFWQ0ZVUkxBc3NldFJlZiBhc3NldFJlZiA9IEFWQ0ZVUkxBc3Nl
dENyZWF0ZVdpdGhVUkxBbmRPcHRpb25zKGtDRkFsbG9jYXRvckRlZmF1bHQsIHVybFJlZi5nZXQo
KSwgMCwgbV9ub3RpZmljYXRpb25RdWV1ZSk7CisgICAgUmV0YWluUHRyPENGTXV0YWJsZURpY3Rp
b25hcnlSZWY+IG9wdGlvbnNSZWYgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUo
a0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAm
a0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOworCisgICAgaWYgKGluaGVyaXRVUkkp
IHsKKyAgICAgICAgYm9vbCB2YWx1ZSA9IHRydWU7CisgICAgICAgIFJldGFpblB0cjxDRk51bWJl
clJlZj4gaW5oZXJpdFVSSVZhbCA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9y
RGVmYXVsdCwga0NGTnVtYmVyU0ludDhUeXBlLCAmdmFsdWUpKTsKKyAgICAgICAgQ0ZEaWN0aW9u
YXJ5U2V0VmFsdWUob3B0aW9uc1JlZi5nZXQoKSwgQVZDRlVSTEFzc2V0SW5oZXJpdFVSSVF1ZXJ5
Q29tcG9uZW50RnJvbVJlZmVyZW5jaW5nVVJJS2V5LCBpbmhlcml0VVJJVmFsLmdldCgpKTsKKyAg
ICB9CisKKyAgICBBVkNGVVJMQXNzZXRSZWYgYXNzZXRSZWYgPSBBVkNGVVJMQXNzZXRDcmVhdGVX
aXRoVVJMQW5kT3B0aW9ucyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB1cmxSZWYuZ2V0KCksIG9wdGlv
bnNSZWYuZ2V0KCksIG1fbm90aWZpY2F0aW9uUXVldWUpOwogICAgIG1fYXZBc3NldCA9IGFkb3B0
Q0YoYXNzZXRSZWYpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0JKHJldmlzaW9u
IDE2NTY1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTYyLDYgKzYyLDcgQEAKICNpbXBvcnQgPHd0Zi9DdXJyZW50VGltZS5oPgogI2ltcG9y
dCA8d3RmL0Z1bmN0aW9uYWwuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbXBv
cnQgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogI2lmIEVOQUJMRShBVkZfQ0FQVElPTlMp
CiAjaW5jbHVkZSAiVGV4dFRyYWNrLmgiCkBAIC0xMzIsNiArMTMzLDcgQEAgU09GVF9MSU5LX1BP
SU5URVIoQVZGb3VuZGF0aW9uLCBBVk1lZGlhVAogU09GVF9MSU5LX1BPSU5URVIoQVZGb3VuZGF0
aW9uLCBBVk1lZGlhVHlwZVZpZGVvLCBOU1N0cmluZyAqKQogU09GVF9MSU5LX1BPSU5URVIoQVZG
b3VuZGF0aW9uLCBBVk1lZGlhVHlwZUF1ZGlvLCBOU1N0cmluZyAqKQogU09GVF9MSU5LX1BPSU5U
RVIoQVZGb3VuZGF0aW9uLCBBVlBsYXllckl0ZW1EaWRQbGF5VG9FbmRUaW1lTm90aWZpY2F0aW9u
LCBOU1N0cmluZyAqKQorU09GVF9MSU5LX1BPSU5URVIoQVZGb3VuZGF0aW9uLCBBVlVSTEFzc2V0
SW5oZXJpdFVSSVF1ZXJ5Q29tcG9uZW50RnJvbVJlZmVyZW5jaW5nVVJJS2V5LCBOU1N0cmluZyAq
KQogU09GVF9MSU5LX1BPSU5URVIoQVZGb3VuZGF0aW9uLCBBVkFzc2V0SW1hZ2VHZW5lcmF0b3JB
cGVydHVyZU1vZGVDbGVhbkFwZXJ0dXJlLCBOU1N0cmluZyAqKQogU09GVF9MSU5LX1BPSU5URVIo
QVZGb3VuZGF0aW9uLCBBVlVSTEFzc2V0UmVmZXJlbmNlUmVzdHJpY3Rpb25zS2V5LCBOU1N0cmlu
ZyAqKQogU09GVF9MSU5LX1BPSU5URVIoQVZGb3VuZGF0aW9uLCBBVkxheWVyVmlkZW9HcmF2aXR5
UmVzaXplQXNwZWN0LCBOU1N0cmluZyAqKQpAQCAtMTUzLDYgKzE1NSw3IEBAIFNPRlRfTElOS19D
T05TVEFOVChDb3JlTWVkaWEsIGtDTVRpbWVaZXIKICNkZWZpbmUgQVZNZWRpYVR5cGVWaWRlbyBn
ZXRBVk1lZGlhVHlwZVZpZGVvKCkKICNkZWZpbmUgQVZNZWRpYVR5cGVBdWRpbyBnZXRBVk1lZGlh
VHlwZUF1ZGlvKCkKICNkZWZpbmUgQVZQbGF5ZXJJdGVtRGlkUGxheVRvRW5kVGltZU5vdGlmaWNh
dGlvbiBnZXRBVlBsYXllckl0ZW1EaWRQbGF5VG9FbmRUaW1lTm90aWZpY2F0aW9uKCkKKyNkZWZp
bmUgQVZVUkxBc3NldEluaGVyaXRVUklRdWVyeUNvbXBvbmVudEZyb21SZWZlcmVuY2luZ1VSSUtl
eSBnZXRBVlVSTEFzc2V0SW5oZXJpdFVSSVF1ZXJ5Q29tcG9uZW50RnJvbVJlZmVyZW5jaW5nVVJJ
S2V5KCkKICNkZWZpbmUgQVZBc3NldEltYWdlR2VuZXJhdG9yQXBlcnR1cmVNb2RlQ2xlYW5BcGVy
dHVyZSBnZXRBVkFzc2V0SW1hZ2VHZW5lcmF0b3JBcGVydHVyZU1vZGVDbGVhbkFwZXJ0dXJlKCkK
ICNkZWZpbmUgQVZVUkxBc3NldFJlZmVyZW5jZVJlc3RyaWN0aW9uc0tleSBnZXRBVlVSTEFzc2V0
UmVmZXJlbmNlUmVzdHJpY3Rpb25zS2V5KCkKICNkZWZpbmUgQVZMYXllclZpZGVvR3Jhdml0eVJl
c2l6ZUFzcGVjdCBnZXRBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0KCkKQEAgLTU4Myw3
ICs1ODYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6CiAgICAg
fQogfQogI2VuZGlmCi0KKyAgICAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6Y3JlYXRlQVZBc3NldEZvclVSTChjb25zdCBTdHJpbmcmIHVybCkKIHsKICAgICBpZiAo
bV9hdkFzc2V0KQpAQCAtNjA5LDcgKzYxMiwxMCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6CiAKICAgICBpZiAoW2hlYWRlckZpZWxkcy5nZXQoKSBjb3VudF0pCiAg
ICAgICAgIFtvcHRpb25zLmdldCgpIHNldE9iamVjdDpoZWFkZXJGaWVsZHMuZ2V0KCkgZm9yS2V5
OkAiQVZVUkxBc3NldEhUVFBIZWFkZXJGaWVsZHNLZXkiXTsKLQorICAgIAorICAgIGlmIChwbGF5
ZXIoKS0+ZG9lc0hhdmVBdHRyaWJ1dGUoSFRNTE5hbWVzOjp4X2l0dW5lc19pbmhlcml0X3VyaV9x
dWVyeV9jb21wb25lbnRBdHRyKSkKKyAgICAgICAgW29wdGlvbnMuZ2V0KCkgc2V0T2JqZWN0OiBb
TlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6IFRSVUVdIGZvcktleTogQVZVUkxBc3NldEluaGVyaXRV
UklRdWVyeUNvbXBvbmVudEZyb21SZWZlcmVuY2luZ1VSSUtleV07CisgICAgCiAjaWYgRU5BQkxF
KEFWRl9DQVBUSU9OUykKICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPFBsYXRmb3JtVGV4dFRyYWNr
Pj4mIG91dE9mQmFuZFRyYWNrU291cmNlcyA9IHBsYXllcigpLT5vdXRPZkJhbmRUcmFja1NvdXJj
ZXMoKTsKICAgICBpZiAoIW91dE9mQmFuZFRyYWNrU291cmNlcy5pc0VtcHR5KCkpIHsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NTY2NSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDE0LTAzLTE0ICBCcmVu
dCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFByb3ZpZGUgcHJlZmVy
ZW5jZSB0byBlbmFibGUgYWRkaXRpb25hbCBBVkZvdW5kYXRpb24gb3B0aW9ucworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMwMjc1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlByZWZl
cmVuY2VLZXlzUHJpdmF0ZS5oOiBBZGRlZCBuZXcgcHJlZmVyZWNlLgorICAgICAgICAqIFdlYlZp
ZXcvV2ViUHJlZmVyZW5jZXMubW06CisgICAgICAgICgrW1dlYlByZWZlcmVuY2VzIGluaXRpYWxp
emVdKTogSW5pdGlhbGl6ZSBwcmVmZXJlbmNlIHRvIGZhbHNlLgorICAgICAgICAoLVtXZWJQcmVm
ZXJlbmNlcyBpc0luaGVyaXRVUklRdWVyeUNvbXBvbmVudEVuYWJsZWRdKTogQWRkZWQuCisgICAg
ICAgICgtW1dlYlByZWZlcmVuY2VzIHNldEVuYWJsZUluaGVyaXRVUklRdWVyeUNvbXBvbmVudDpd
KTogQWRkZWQuCisgICAgICAgICogV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaDoKKyAg
ICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgX3ByZWZlcmVu
Y2VzQ2hhbmdlZDpdKTogSGFuZGxlIG5ldyBwcmVmZXJlbmNlLgorCiAyMDE0LTAzLTE0ICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjE2NTM4
NSk6IFtXZWJUZXh0SXRlcmF0b3IgY3VycmVudFJhbmdlXSBjcmFzaGVzCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgJ
KHJldmlzaW9uIDE2NTY1NCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVy
ZW5jZUtleXNQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwOSwzICsyMDksNSBAQAogI2Rl
ZmluZSBXZWJLaXRUZXh0RmllbGRSZW1vdGVJbnNwZWN0aW9uRW5hYmxlZFByZWZlcmVuY2VLZXkg
QCJXZWJLaXRUZXh0RmllbGRSZW1vdGVJbnNwZWN0aW9uRW5hYmxlZCIKICNlbmRpZgogI2VuZGlm
CisKKyNkZWZpbmUgV2ViS2l0RW5hYmxlSW5oZXJpdFVSSVF1ZXJ5Q29tcG9uZW50UHJlZmVyZW5j
ZUtleSBAIldlYktpdEVuYWJsZUluaGVyaXRVUklRdWVyeUNvbXBvbmVudCIKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQkocmV2aXNpb24gMTY1NjU0
KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYs
IDIwMDcsIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3LCAyMDExLCAyMDEyLCAyMDE0IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICAgICAgICAgICAoQykgMjAwNiBHcmFoYW0gRGVubmlz
IChncmFoYW0uZGVubmlzQGdtYWlsLmNvbSkKICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTU5OCw2ICs1
OTgsNyBAQCArICh2b2lkKWluaXRpYWxpemUKICNpZiBFTkFCTEUoSU1BR0VfQ09OVFJPTFMpCiAg
ICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpOT10sIFdlYktpdEltYWdlQ29udHJvbHNF
bmFibGVkUHJlZmVyZW5jZUtleSwKICNlbmRpZgorICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0
aEJvb2w6Tk9dLCBXZWJLaXRFbmFibGVJbmhlcml0VVJJUXVlcnlDb21wb25lbnRQcmVmZXJlbmNl
S2V5LAogICAgICAgICBuaWxdOwogCiAjaWYgIVBMQVRGT1JNKElPUykKQEAgLTIxNTYsNiArMjE1
NywxNiBAQCAtIChCT09MKWlzSGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlCiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCistIChCT09MKWlzSW5oZXJpdFVSSVF1ZXJ5Q29tcG9uZW50RW5hYmxl
ZAoreworICAgIHJldHVybiBbc2VsZiBfYm9vbFZhbHVlRm9yS2V5OiBXZWJLaXRFbmFibGVJbmhl
cml0VVJJUXVlcnlDb21wb25lbnRQcmVmZXJlbmNlS2V5XTsKK30KKworLSAodm9pZClzZXRFbmFi
bGVJbmhlcml0VVJJUXVlcnlDb21wb25lbnQ6KEJPT0wpZmxhZworeworICAgIFtzZWxmIF9zZXRC
b29sVmFsdWU6ZmxhZyBmb3JLZXk6IFdlYktpdEVuYWJsZUluaGVyaXRVUklRdWVyeUNvbXBvbmVu
dFByZWZlcmVuY2VLZXldOworfQorCiAjaWYgUExBVEZPUk0oSU9TKQogLSAoQk9PTCltZWRpYVBs
YXliYWNrQWxsb3dzQWlyUGxheQogewpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJQcmVmZXJlbmNlc1ByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oCShyZXZpc2lvbiAxNjU2NTQpCisrKyBTb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yODcsNiArMjg3LDkgQEAgQGludGVyZmFjZSBXZWJQcmVmZXJlbmNlcyAoV2ViUHJp
dmF0ZSkKIC0gKEJPT0wpbWVkaWFQbGF5YmFja0FsbG93c0FpclBsYXk7CiAjZW5kaWYKIAorLSAo
Qk9PTClpc0luaGVyaXRVUklRdWVyeUNvbXBvbmVudEVuYWJsZWQ7CistICh2b2lkKXNldEVuYWJs
ZUluaGVyaXRVUklRdWVyeUNvbXBvbmVudDooQk9PTClmbGFnOworCiAvLyBPdGhlciBwcml2YXRl
IG1ldGhvZHMKICNpZiBUQVJHRVRfT1NfSVBIT05FCiAtIChzaXplX3QpX21heGltdW1JbWFnZVNp
emU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiAxNjU2
NTQpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTIzOTEsNiArMjM5MSw4IEBAIC0gKHZvaWQpX3ByZWZlcmVuY2VzQ2hhbmdlZDooV2Vi
UHJlZmVyZW4KICNlbmRpZgogCiAgICAgc2V0dGluZ3Muc2V0U2hvdWxkQ29udmVydFBvc2l0aW9u
U3R5bGVPbkNvcHkoW3ByZWZlcmVuY2VzIHNob3VsZENvbnZlcnRQb3NpdGlvblN0eWxlT25Db3B5
XSk7CisgICAgCisgICAgc2V0dGluZ3Muc2V0RW5hYmxlSW5oZXJpdFVSSVF1ZXJ5Q29tcG9uZW50
KFtwcmVmZXJlbmNlcyBpc0luaGVyaXRVUklRdWVyeUNvbXBvbmVudEVuYWJsZWRdKTsKIAogICAg
IHN3aXRjaCAoW3ByZWZlcmVuY2VzIHN0b3JhZ2VCbG9ja2luZ1BvbGljeV0pIHsKICAgICBjYXNl
IFdlYkFsbG93QWxsU3RvcmFnZToK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>226810</attachid>
            <date>2014-03-14 23:04:01 -0700</date>
            <delta_ts>2014-03-15 10:49:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-130275-20140314230338.patch</filename>
            <type>text/plain</type>
            <size>15654</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NTY3NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDE0LTAzLTE0ICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFByb3ZpZGUgcHJlZmVyZW5j
ZSB0byBlbmFibGUgYWRkaXRpb25hbCBBVkZvdW5kYXRpb24gb3B0aW9ucworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMwMjc1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZG9lc0hhdmVBdHRy
aWJ1dGUpOiBBZGRlZC4KKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAg
ICAgKiBwYWdlL1NldHRpbmdzLmluOiBBZGQgbmV3IGF0dHJpYnV0ZS4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllcjo6ZG9lc0hhdmVBdHRyaWJ1dGUpOiBBZGRlZCBzdHViIHRvIGNhbGwgcHJpdmF0ZSBwbGF5
ZXIgb2JqZWN0J3MKKyAgICAgICAgaW1wbGVtZW50YXRpb24gb2YgZG9lc0hhdmVBdHRyaWJ1dGUu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyQ2xpZW50Ojpkb2VzSGF2ZUF0dHJpYnV0ZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbkNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbkNGOjpBVkZXcmFwcGVyOjpjcmVhdGVBc3NldEZvclVSTCk6IENoZWNrIHRoZSA8bWVk
aWE+IG9iamVjdCwKKyAgICAgICAgYW5kIG5vdGlmeSBBVkZvdW5kYXRpb25DRiB0byB1c2UgVVJJ
IG9wdGlvbiBpZiByZWxldmFudC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlQVZB
c3NldEZvclVSTCk6IENoZWNrIHRoZSA8bWVkaWE+IG9iamVjdCwKKyAgICAgICAgYW5kIG5vdGlm
eSBBVkZvdW5kYXRpb24gdG8gdXNlIFVSSSBvcHRpb24gaWYgcmVsZXZhbnQuCisKIDIwMTQtMDMt
MTQgIE1hY2llaiBTdGFjaG93aWFrICA8bWpzQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXBsYWNl
ICJBcHBsZSBDb21wdXRlciwgSW5jLiIgd2l0aCAiQXBwbGUgSW5jLiIgaW4gY29weXJpZ2h0IGhl
YWRlcnMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCShy
ZXZpc2lvbiAxNjU2NzYpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1l
cy5pbgkod29ya2luZyBjb3B5KQpAQCAtMzU2LDMgKzM1Niw0IEBAIHgtd2Via2l0LWltYWdlbWVu
dQogd2Via2l0LXBsYXlzaW5saW5lCiB4LXdlYmtpdC1haXJwbGF5CiB4LXdlYmtpdC13aXJlbGVz
c3ZpZGVvcGxheWJhY2tkaXNhYmxlZAoreC1pdHVuZXMtaW5oZXJpdC11cmktcXVlcnktY29tcG9u
ZW50CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHJldmlz
aW9uIDE2NTY3NikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU5NzMsNiArNTk3MywxOSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OmRpZFJlY2VpdmVSZW1vdGVDCiAgICAgfQogfQogCitib29sIEhUTUxNZWRpYUVsZW1lbnQ6
OmRvZXNIYXZlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpIGNv
bnN0Cit7CisgICAgaWYgKCFmYXN0SGFzQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYgKFNldHRpbmdzKiBzZXR0aW5ncyA9IGRvY3Vt
ZW50KCkuc2V0dGluZ3MoKSkgeworICAgICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSBIVE1MTmFt
ZXM6OnhfaXR1bmVzX2luaGVyaXRfdXJpX3F1ZXJ5X2NvbXBvbmVudEF0dHIpCisgICAgICAgICAg
ICByZXR1cm4gc2V0dGluZ3MtPmVuYWJsZUluaGVyaXRVUklRdWVyeUNvbXBvbmVudCgpOworICAg
IH0KKyAgICAKKyAgICByZXR1cm4gdHJ1ZTsKK30KKyAgICAKIH0KIAogI2VuZGlmCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAkocmV2aXNpb24gMTY1Njc2KQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTEzMSw2ICsxMzEsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzU2F2ZSgp
IGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1NjYW5uaW5nKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgCisgICAgdmlydHVhbCBib29sIGRvZXNIYXZlQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmKSBjb25zdCBvdmVycmlkZTsKKwogICAgIFBsYXRmb3JtTWVkaWEgcGxhdGZvcm1N
ZWRpYSgpIGNvbnN0OwogICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdDsK
ICNpZiBQTEFURk9STShJT1MpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmlu
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaW4JKHJldmlzaW9u
IDE2NTY3NikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaW4JKHdvcmtpbmcgY29w
eSkKQEAgLTIxOCwzICsyMTgsNSBAQCBpbWFnZUNvbnRyb2xzRW5hYmxlZCBpbml0aWFsPWZhbHNl
LCBjb25kCiAKICMgRklYTUU6IFRoaXMgaXMgdW5uZWVkZWQgYW5kIHNob3VsZCBiZSByZW1vdmVk
LgogYWx3YXlzVXNlQmFzZWxpbmVPZlByaW1hcnlGb250IGluaXRpYWw9ZmFsc2UKKworZW5hYmxl
SW5oZXJpdFVSSVF1ZXJ5Q29tcG9uZW50IGluaXRpYWw9ZmFsc2UKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAJKHJldmlzaW9uIDE2
NTY3NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTQwMyw3ICsxNDAzLDE1IEBAIHZvaWQgTWVkaWFQbGF5ZXJG
YWN0b3J5U3VwcG9ydDo6Y2FsbFJlZ2kKIHsKICAgICByZWdpc3Rlck1lZGlhRW5naW5lKGFkZE1l
ZGlhRW5naW5lKTsKIH0KLQorICAgIAorYm9vbCBNZWRpYVBsYXllcjo6ZG9lc0hhdmVBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlKSBjb25zdAoreworICAgIGlmICghbV9t
ZWRpYVBsYXllckNsaWVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIHJldHVy
biBtX21lZGlhUGxheWVyQ2xpZW50LT5kb2VzSGF2ZUF0dHJpYnV0ZShhdHRyaWJ1dGUpOworfQor
ICAgIAogfQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuaAkocmV2aXNpb24gMTY1Njc2KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTM5LDYg
KzEzOSw3IEBAIGNsYXNzIEludFNpemU7CiBjbGFzcyBNZWRpYVBsYXllcjsKIHN0cnVjdCBNZWRp
YVBsYXllckZhY3Rvcnk7CiBjbGFzcyBQbGF0Zm9ybVRpbWVSYW5nZXM7CitjbGFzcyBRdWFsaWZp
ZWROYW1lOwogCiAjaWYgUExBVEZPUk0oV0lOKSAmJiBVU0UoQVZGT1VOREFUSU9OKQogc3RydWN0
IEdyYXBoaWNzRGV2aWNlQWRhcHRlcjsKQEAgLTI0Nyw2ICsyNDgsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBIb3N0V2luZG93KiBtZWRpYVBsYXllckhvc3RXaW5kb3coKSB7IHJldHVybiAwOyB9
CiAgICAgdmlydHVhbCBJbnRSZWN0IG1lZGlhUGxheWVyV2luZG93Q2xpcFJlY3QoKSB7IHJldHVy
biBJbnRSZWN0KCk7IH0KICAgICB2aXJ0dWFsIENhY2hlZFJlc291cmNlTG9hZGVyKiBtZWRpYVBs
YXllckNhY2hlZFJlc291cmNlTG9hZGVyKCkgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgYm9v
bCBkb2VzSGF2ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICB2aXJ0dWFsIHZvaWQgbWVk
aWFQbGF5ZXJEaWRBZGRBdWRpb1RyYWNrKFBhc3NSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGU+KSB7
IH0KQEAgLTI2Miw3ICsyNjQsNiBAQCBwdWJsaWM6CiAjZW5kaWYKICNlbmRpZgogCi0KICAgICB2
aXJ0dWFsIGJvb2wgbWVkaWFQbGF5ZXJTaG91bGRXYWl0Rm9yUmVzcG9uc2VUb0F1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgeyByZXR1cm4gZmFs
c2U7IH0KIH07CiAKQEAgLTI5OCw2ICsyOTksOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBzdXBwb3J0
c1NhdmUoKSBjb25zdDsKICAgICBib29sIHN1cHBvcnRzU2Nhbm5pbmcoKSBjb25zdDsKICAgICBi
b29sIHJlcXVpcmVzSW1tZWRpYXRlQ29tcG9zaXRpbmcoKSBjb25zdDsKKyAgICBib29sIGRvZXNI
YXZlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKKyAgICAKICAgICBQbGF0
Zm9ybU1lZGlhIHBsYXRmb3JtTWVkaWEoKSBjb25zdDsKICAgICBQbGF0Zm9ybUxheWVyKiBwbGF0
Zm9ybUxheWVyKCkgY29uc3Q7CiAjaWYgUExBVEZPUk0oSU9TKQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbkNGLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Yu
Y3BwCShyZXZpc2lvbiAxNjU2NzYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwg
MjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEtMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJGbG9hdENv
bnZlcnNpb24uaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHQuaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpZiBIQVZFKEFWRk9VTkRBVElPTl9M
RUdJQkxFX09VVFBVVF9TVVBQT1JUKQogI2luY2x1ZGUgIkluYmFuZFRleHRUcmFja1ByaXZhdGVB
VkNGLmgiCiAjZWxzZQpAQCAtOTgsNyArOTksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZXN0cm95
SW1hZ2VHZW5lcmF0b3IoKTsKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY3JlYXRlSW1hZ2VG
b3JUaW1lSW5SZWN0KGZsb2F0LCBjb25zdCBJbnRSZWN0Jik7CiAKLSAgICB2b2lkIGNyZWF0ZUFz
c2V0Rm9yVVJMKGNvbnN0IFN0cmluZyYgdXJsKTsKKyAgICB2b2lkIGNyZWF0ZUFzc2V0Rm9yVVJM
KGNvbnN0IFN0cmluZyYgdXJsLCBib29sIGluaGVyaXRVUkkpOwogICAgIHZvaWQgc2V0QXNzZXQo
QVZDRlVSTEFzc2V0UmVmKTsKICAgICAKICAgICB2b2lkIGNyZWF0ZVBsYXllcihJRGlyZWN0M0RE
ZXZpY2U5Kik7CkBAIC0yNTAsNiArMjUxLDEzIEBAIHN0YXRpYyBDRlN0cmluZ1JlZiBDQUNGQ29u
dGV4dE5lZWRzRmx1c2gKICAgICByZXR1cm4gbmFtZTsKIH0KIAorLy8gRklYTUU6IFRoaXMgbmVl
ZHMgdG8gYmUgZXhwb3NlZCBieSBBVkNGCitzdGF0aWMgQ0ZTdHJpbmdSZWYgQVZDRlVSTEFzc2V0
SW5oZXJpdFVSSVF1ZXJ5Q29tcG9uZW50RnJvbVJlZmVyZW5jaW5nVVJJS2V5KCkKK3sKKyAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ0ZTdHJpbmdSZWYsIG5hbWUsIChDRlNUUigi
QVZDRlVSTEFzc2V0SW5oZXJpdFVSSVF1ZXJ5Q29tcG9uZW50RnJvbVJlZmVyZW5jaW5nVVJJS2V5
IikpKTsKKyAgICByZXR1cm4gbmFtZTsKK30KKwogLy8gRGVmaW5lIEFWQ0Ygb2JqZWN0IGFjY2Vz
c29ycyBhcyBpbmxpbmUgZnVuY3Rpb25zIGhlcmUgaW5zdGVhZCBvZiBpbiBNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25DRiBzbyB3ZSBkb24ndCBoYXZlCiAvLyB0byBpbmNsdWRlIHRoZSBB
VkNGIGhlYWRlcnMgaW4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuaAogaW5saW5l
IEFWQ0ZQbGF5ZXJMYXllclJlZiB2aWRlb0xheWVyKEFWRldyYXBwZXIqIHdyYXBwZXIpCkBAIC00
MTIsOCArNDIwLDEwIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OmMK
IAogICAgIHNldERlbGF5Q2FsbGJhY2tzKHRydWUpOwogCisgICAgYm9vbCBpbmhlcml0VVJJID0g
cGxheWVyKCktPmRvZXNIYXZlQXR0cmlidXRlKEhUTUxOYW1lczo6eF9pdHVuZXNfaW5oZXJpdF91
cmlfcXVlcnlfY29tcG9uZW50QXR0cik7CisKICAgICBtX2F2ZldyYXBwZXIgPSBuZXcgQVZGV3Jh
cHBlcih0aGlzKTsKLSAgICBtX2F2ZldyYXBwZXItPmNyZWF0ZUFzc2V0Rm9yVVJMKHVybCk7Cisg
ICAgbV9hdmZXcmFwcGVyLT5jcmVhdGVBc3NldEZvclVSTCh1cmwsIGluaGVyaXRVUkkpOwogICAg
IHNldERlbGF5Q2FsbGJhY2tzKGZhbHNlKTsKIH0KIApAQCAtMTMyNCwxMyArMTMzNCwyMSBAQCB2
b2lkIEFWRldyYXBwZXI6OmRpc2Nvbm5lY3RBbmREZWxldGVBVkZXCiAgICAgZGlzcGF0Y2hfYXN5
bmNfZihkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBjb250ZXh0LCBkZXN0cm95QVZGV3JhcHBl
cik7CiB9CiAKLXZvaWQgQVZGV3JhcHBlcjo6Y3JlYXRlQXNzZXRGb3JVUkwoY29uc3QgU3RyaW5n
JiB1cmwpCit2b2lkIEFWRldyYXBwZXI6OmNyZWF0ZUFzc2V0Rm9yVVJMKGNvbnN0IFN0cmluZyYg
dXJsLCBib29sIGluaGVyaXRVUkkpCiB7CiAgICAgQVNTRVJUKCFhdkFzc2V0KCkpOwogCiAgICAg
UmV0YWluUHRyPENGVVJMUmVmPiB1cmxSZWYgPSBVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpLmNy
ZWF0ZUNGVVJMKCk7CiAKLSAgICBBVkNGVVJMQXNzZXRSZWYgYXNzZXRSZWYgPSBBVkNGVVJMQXNz
ZXRDcmVhdGVXaXRoVVJMQW5kT3B0aW9ucyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB1cmxSZWYuZ2V0
KCksIDAsIG1fbm90aWZpY2F0aW9uUXVldWUpOworICAgIFJldGFpblB0cjxDRk11dGFibGVEaWN0
aW9uYXJ5UmVmPiBvcHRpb25zUmVmID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxl
KGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywg
JmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKKworICAgIGlmIChpbmhlcml0VVJJ
KSB7CisgICAgICAgIGJvb2wgdmFsdWUgPSB0cnVlOworICAgICAgICBSZXRhaW5QdHI8Q0ZOdW1i
ZXJSZWY+IGluaGVyaXRVUklWYWwgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIGtDRk51bWJlclNJbnQ4VHlwZSwgJnZhbHVlKSk7CisgICAgICAgIENGRGljdGlv
bmFyeVNldFZhbHVlKG9wdGlvbnNSZWYuZ2V0KCksIEFWQ0ZVUkxBc3NldEluaGVyaXRVUklRdWVy
eUNvbXBvbmVudEZyb21SZWZlcmVuY2luZ1VSSUtleSgpLCBpbmhlcml0VVJJVmFsLmdldCgpKTsK
KyAgICB9CisKKyAgICBBVkNGVVJMQXNzZXRSZWYgYXNzZXRSZWYgPSBBVkNGVVJMQXNzZXRDcmVh
dGVXaXRoVVJMQW5kT3B0aW9ucyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB1cmxSZWYuZ2V0KCksIG9w
dGlvbnNSZWYuZ2V0KCksIG1fbm90aWZpY2F0aW9uUXVldWUpOwogICAgIG1fYXZBc3NldCA9IGFk
b3B0Q0YoYXNzZXRSZWYpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0JKHJldmlz
aW9uIDE2NTY3NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTYyLDYgKzYyLDcgQEAKICNpbXBvcnQgPHd0Zi9DdXJyZW50VGltZS5oPgogI2lt
cG9ydCA8d3RmL0Z1bmN0aW9uYWwuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNp
bXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogI2lmIEVOQUJMRShBVkZfQ0FQVElP
TlMpCiAjaW5jbHVkZSAiVGV4dFRyYWNrLmgiCkBAIC0xMzIsNiArMTMzLDcgQEAgU09GVF9MSU5L
X1BPSU5URVIoQVZGb3VuZGF0aW9uLCBBVk1lZGlhVAogU09GVF9MSU5LX1BPSU5URVIoQVZGb3Vu
ZGF0aW9uLCBBVk1lZGlhVHlwZVZpZGVvLCBOU1N0cmluZyAqKQogU09GVF9MSU5LX1BPSU5URVIo
QVZGb3VuZGF0aW9uLCBBVk1lZGlhVHlwZUF1ZGlvLCBOU1N0cmluZyAqKQogU09GVF9MSU5LX1BP
SU5URVIoQVZGb3VuZGF0aW9uLCBBVlBsYXllckl0ZW1EaWRQbGF5VG9FbmRUaW1lTm90aWZpY2F0
aW9uLCBOU1N0cmluZyAqKQorU09GVF9MSU5LX1BPSU5URVIoQVZGb3VuZGF0aW9uLCBBVlVSTEFz
c2V0SW5oZXJpdFVSSVF1ZXJ5Q29tcG9uZW50RnJvbVJlZmVyZW5jaW5nVVJJS2V5LCBOU1N0cmlu
ZyAqKQogU09GVF9MSU5LX1BPSU5URVIoQVZGb3VuZGF0aW9uLCBBVkFzc2V0SW1hZ2VHZW5lcmF0
b3JBcGVydHVyZU1vZGVDbGVhbkFwZXJ0dXJlLCBOU1N0cmluZyAqKQogU09GVF9MSU5LX1BPSU5U
RVIoQVZGb3VuZGF0aW9uLCBBVlVSTEFzc2V0UmVmZXJlbmNlUmVzdHJpY3Rpb25zS2V5LCBOU1N0
cmluZyAqKQogU09GVF9MSU5LX1BPSU5URVIoQVZGb3VuZGF0aW9uLCBBVkxheWVyVmlkZW9HcmF2
aXR5UmVzaXplQXNwZWN0LCBOU1N0cmluZyAqKQpAQCAtMTUzLDYgKzE1NSw3IEBAIFNPRlRfTElO
S19DT05TVEFOVChDb3JlTWVkaWEsIGtDTVRpbWVaZXIKICNkZWZpbmUgQVZNZWRpYVR5cGVWaWRl
byBnZXRBVk1lZGlhVHlwZVZpZGVvKCkKICNkZWZpbmUgQVZNZWRpYVR5cGVBdWRpbyBnZXRBVk1l
ZGlhVHlwZUF1ZGlvKCkKICNkZWZpbmUgQVZQbGF5ZXJJdGVtRGlkUGxheVRvRW5kVGltZU5vdGlm
aWNhdGlvbiBnZXRBVlBsYXllckl0ZW1EaWRQbGF5VG9FbmRUaW1lTm90aWZpY2F0aW9uKCkKKyNk
ZWZpbmUgQVZVUkxBc3NldEluaGVyaXRVUklRdWVyeUNvbXBvbmVudEZyb21SZWZlcmVuY2luZ1VS
SUtleSBnZXRBVlVSTEFzc2V0SW5oZXJpdFVSSVF1ZXJ5Q29tcG9uZW50RnJvbVJlZmVyZW5jaW5n
VVJJS2V5KCkKICNkZWZpbmUgQVZBc3NldEltYWdlR2VuZXJhdG9yQXBlcnR1cmVNb2RlQ2xlYW5B
cGVydHVyZSBnZXRBVkFzc2V0SW1hZ2VHZW5lcmF0b3JBcGVydHVyZU1vZGVDbGVhbkFwZXJ0dXJl
KCkKICNkZWZpbmUgQVZVUkxBc3NldFJlZmVyZW5jZVJlc3RyaWN0aW9uc0tleSBnZXRBVlVSTEFz
c2V0UmVmZXJlbmNlUmVzdHJpY3Rpb25zS2V5KCkKICNkZWZpbmUgQVZMYXllclZpZGVvR3Jhdml0
eVJlc2l6ZUFzcGVjdCBnZXRBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0KCkKQEAgLTU4
Myw3ICs1ODYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6CiAg
ICAgfQogfQogI2VuZGlmCi0KKyAgICAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6Y3JlYXRlQVZBc3NldEZvclVSTChjb25zdCBTdHJpbmcmIHVybCkKIHsKICAgICBp
ZiAobV9hdkFzc2V0KQpAQCAtNjA5LDcgKzYxMiwxMCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6CiAKICAgICBpZiAoW2hlYWRlckZpZWxkcy5nZXQoKSBjb3VudF0p
CiAgICAgICAgIFtvcHRpb25zLmdldCgpIHNldE9iamVjdDpoZWFkZXJGaWVsZHMuZ2V0KCkgZm9y
S2V5OkAiQVZVUkxBc3NldEhUVFBIZWFkZXJGaWVsZHNLZXkiXTsKLQorICAgIAorICAgIGlmIChw
bGF5ZXIoKS0+ZG9lc0hhdmVBdHRyaWJ1dGUoSFRNTE5hbWVzOjp4X2l0dW5lc19pbmhlcml0X3Vy
aV9xdWVyeV9jb21wb25lbnRBdHRyKSkKKyAgICAgICAgW29wdGlvbnMuZ2V0KCkgc2V0T2JqZWN0
OiBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6IFRSVUVdIGZvcktleTogQVZVUkxBc3NldEluaGVy
aXRVUklRdWVyeUNvbXBvbmVudEZyb21SZWZlcmVuY2luZ1VSSUtleV07CisgICAgCiAjaWYgRU5B
QkxFKEFWRl9DQVBUSU9OUykKICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPFBsYXRmb3JtVGV4dFRy
YWNrPj4mIG91dE9mQmFuZFRyYWNrU291cmNlcyA9IHBsYXllcigpLT5vdXRPZkJhbmRUcmFja1Nv
dXJjZXMoKTsKICAgICBpZiAoIW91dE9mQmFuZFRyYWNrU291cmNlcy5pc0VtcHR5KCkpIHsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NTY3NikKKysrIFNvdXJjZS9XZWJLaXQvbWFj
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDE0LTAzLTE0ICBC
cmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFByb3ZpZGUgcHJl
ZmVyZW5jZSB0byBlbmFibGUgYWRkaXRpb25hbCBBVkZvdW5kYXRpb24gb3B0aW9ucworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMwMjc1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlBy
ZWZlcmVuY2VLZXlzUHJpdmF0ZS5oOiBBZGRlZCBuZXcgcHJlZmVyZWNlLgorICAgICAgICAqIFdl
YlZpZXcvV2ViUHJlZmVyZW5jZXMubW06CisgICAgICAgICgrW1dlYlByZWZlcmVuY2VzIGluaXRp
YWxpemVdKTogSW5pdGlhbGl6ZSBwcmVmZXJlbmNlIHRvIGZhbHNlLgorICAgICAgICAoLVtXZWJQ
cmVmZXJlbmNlcyBpc0luaGVyaXRVUklRdWVyeUNvbXBvbmVudEVuYWJsZWRdKTogQWRkZWQuCisg
ICAgICAgICgtW1dlYlByZWZlcmVuY2VzIHNldEVuYWJsZUluaGVyaXRVUklRdWVyeUNvbXBvbmVu
dDpdKTogQWRkZWQuCisgICAgICAgICogV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaDoK
KyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgX3ByZWZl
cmVuY2VzQ2hhbmdlZDpdKTogSGFuZGxlIG5ldyBwcmVmZXJlbmNlLgorCiAyMDE0LTAzLTE0ICBN
YWNpZWogU3RhY2hvd2lhayAgPG1qc0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVwbGFjZSAiQXBw
bGUgQ29tcHV0ZXIsIEluYy4iIHdpdGggIkFwcGxlIEluYy4iIGluIGNvcHlyaWdodCBoZWFkZXJz
CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5j
ZUtleXNQcml2YXRlLmgJKHJldmlzaW9uIDE2NTY3NikKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwOSwz
ICsyMDksNSBAQAogI2RlZmluZSBXZWJLaXRUZXh0RmllbGRSZW1vdGVJbnNwZWN0aW9uRW5hYmxl
ZFByZWZlcmVuY2VLZXkgQCJXZWJLaXRUZXh0RmllbGRSZW1vdGVJbnNwZWN0aW9uRW5hYmxlZCIK
ICNlbmRpZgogI2VuZGlmCisKKyNkZWZpbmUgV2ViS2l0RW5hYmxlSW5oZXJpdFVSSVF1ZXJ5Q29t
cG9uZW50UHJlZmVyZW5jZUtleSBAIldlYktpdEVuYWJsZUluaGVyaXRVUklRdWVyeUNvbXBvbmVu
dCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQko
cmV2aXNpb24gMTY1Njc2KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJl
bmNlcy5tbQkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDUsIDIwMDYsIDIwMDcsIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3LCAyMDExLCAyMDEyLCAy
MDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICAgICAgICAgICAoQykgMjAw
NiBHcmFoYW0gRGVubmlzIChncmFoYW0uZGVubmlzQGdtYWlsLmNvbSkKICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKQEAgLTU5OCw2ICs1OTgsNyBAQCArICh2b2lkKWluaXRpYWxpemUKICNpZiBFTkFCTEUoSU1B
R0VfQ09OVFJPTFMpCiAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpOT10sIFdlYktp
dEltYWdlQ29udHJvbHNFbmFibGVkUHJlZmVyZW5jZUtleSwKICNlbmRpZgorICAgICAgICBbTlNO
dW1iZXIgbnVtYmVyV2l0aEJvb2w6Tk9dLCBXZWJLaXRFbmFibGVJbmhlcml0VVJJUXVlcnlDb21w
b25lbnRQcmVmZXJlbmNlS2V5LAogICAgICAgICBuaWxdOwogCiAjaWYgIVBMQVRGT1JNKElPUykK
QEAgLTIxNTYsNiArMjE1NywxNiBAQCAtIChCT09MKWlzSGl4aWU3NldlYlNvY2tldFByb3RvY29s
RW5hYmxlCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCistIChCT09MKWlzSW5oZXJpdFVSSVF1ZXJ5
Q29tcG9uZW50RW5hYmxlZAoreworICAgIHJldHVybiBbc2VsZiBfYm9vbFZhbHVlRm9yS2V5OiBX
ZWJLaXRFbmFibGVJbmhlcml0VVJJUXVlcnlDb21wb25lbnRQcmVmZXJlbmNlS2V5XTsKK30KKwor
LSAodm9pZClzZXRFbmFibGVJbmhlcml0VVJJUXVlcnlDb21wb25lbnQ6KEJPT0wpZmxhZworewor
ICAgIFtzZWxmIF9zZXRCb29sVmFsdWU6ZmxhZyBmb3JLZXk6IFdlYktpdEVuYWJsZUluaGVyaXRV
UklRdWVyeUNvbXBvbmVudFByZWZlcmVuY2VLZXldOworfQorCiAjaWYgUExBVEZPUk0oSU9TKQog
LSAoQk9PTCltZWRpYVBsYXliYWNrQWxsb3dzQWlyUGxheQogewpJbmRleDogU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oCShyZXZpc2lvbiAx
NjU2NzYpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yODcsNiArMjg3LDkgQEAgQGludGVyZmFjZSBXZWJQcmVm
ZXJlbmNlcyAoV2ViUHJpdmF0ZSkKIC0gKEJPT0wpbWVkaWFQbGF5YmFja0FsbG93c0FpclBsYXk7
CiAjZW5kaWYKIAorLSAoQk9PTClpc0luaGVyaXRVUklRdWVyeUNvbXBvbmVudEVuYWJsZWQ7Cist
ICh2b2lkKXNldEVuYWJsZUluaGVyaXRVUklRdWVyeUNvbXBvbmVudDooQk9PTClmbGFnOworCiAv
LyBPdGhlciBwcml2YXRlIG1ldGhvZHMKICNpZiBUQVJHRVRfT1NfSVBIT05FCiAtIChzaXplX3Qp
X21heGltdW1JbWFnZVNpemU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZp
ZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
CShyZXZpc2lvbiAxNjU2NzYpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTIzOTEsNiArMjM5MSw4IEBAIC0gKHZvaWQpX3ByZWZlcmVu
Y2VzQ2hhbmdlZDooV2ViUHJlZmVyZW4KICNlbmRpZgogCiAgICAgc2V0dGluZ3Muc2V0U2hvdWxk
Q29udmVydFBvc2l0aW9uU3R5bGVPbkNvcHkoW3ByZWZlcmVuY2VzIHNob3VsZENvbnZlcnRQb3Np
dGlvblN0eWxlT25Db3B5XSk7CisgICAgCisgICAgc2V0dGluZ3Muc2V0RW5hYmxlSW5oZXJpdFVS
SVF1ZXJ5Q29tcG9uZW50KFtwcmVmZXJlbmNlcyBpc0luaGVyaXRVUklRdWVyeUNvbXBvbmVudEVu
YWJsZWRdKTsKIAogICAgIHN3aXRjaCAoW3ByZWZlcmVuY2VzIHN0b3JhZ2VCbG9ja2luZ1BvbGlj
eV0pIHsKICAgICBjYXNlIFdlYkFsbG93QWxsU3RvcmFnZToK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>226824</attachid>
            <date>2014-03-15 10:37:52 -0700</date>
            <delta_ts>2014-03-16 21:26:55 -0700</delta_ts>
            <desc>Updated to handle Windows.</desc>
            <filename>bug-130275-20140315103729.patch</filename>
            <type>text/plain</type>
            <size>19681</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NTY3NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDE0LTAzLTE0ICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFByb3ZpZGUgcHJlZmVyZW5j
ZSB0byBlbmFibGUgYWRkaXRpb25hbCBBVkZvdW5kYXRpb24gb3B0aW9ucworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMwMjc1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZG9lc0hhdmVBdHRy
aWJ1dGUpOiBBZGRlZC4KKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAg
ICAgKiBwYWdlL1NldHRpbmdzLmluOiBBZGQgbmV3IGF0dHJpYnV0ZS4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllcjo6ZG9lc0hhdmVBdHRyaWJ1dGUpOiBBZGRlZCBzdHViIHRvIGNhbGwgcHJpdmF0ZSBwbGF5
ZXIgb2JqZWN0J3MKKyAgICAgICAgaW1wbGVtZW50YXRpb24gb2YgZG9lc0hhdmVBdHRyaWJ1dGUu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyQ2xpZW50Ojpkb2VzSGF2ZUF0dHJpYnV0ZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbkNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbkNGOjpBVkZXcmFwcGVyOjpjcmVhdGVBc3NldEZvclVSTCk6IENoZWNrIHRoZSA8bWVk
aWE+IG9iamVjdCwKKyAgICAgICAgYW5kIG5vdGlmeSBBVkZvdW5kYXRpb25DRiB0byB1c2UgVVJJ
IG9wdGlvbiBpZiByZWxldmFudC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlQVZB
c3NldEZvclVSTCk6IENoZWNrIHRoZSA8bWVkaWE+IG9iamVjdCwKKyAgICAgICAgYW5kIG5vdGlm
eSBBVkZvdW5kYXRpb24gdG8gdXNlIFVSSSBvcHRpb24gaWYgcmVsZXZhbnQuCisKIDIwMTQtMDMt
MTQgIE1hY2llaiBTdGFjaG93aWFrICA8bWpzQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXBsYWNl
ICJBcHBsZSBDb21wdXRlciwgSW5jLiIgd2l0aCAiQXBwbGUgSW5jLiIgaW4gY29weXJpZ2h0IGhl
YWRlcnMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCShy
ZXZpc2lvbiAxNjU2NzYpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1l
cy5pbgkod29ya2luZyBjb3B5KQpAQCAtMzU2LDMgKzM1Niw0IEBAIHgtd2Via2l0LWltYWdlbWVu
dQogd2Via2l0LXBsYXlzaW5saW5lCiB4LXdlYmtpdC1haXJwbGF5CiB4LXdlYmtpdC13aXJlbGVz
c3ZpZGVvcGxheWJhY2tkaXNhYmxlZAoreC1pdHVuZXMtaW5oZXJpdC11cmktcXVlcnktY29tcG9u
ZW50CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHJldmlz
aW9uIDE2NTY3NikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU5NzMsNiArNTk3MywxOSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OmRpZFJlY2VpdmVSZW1vdGVDCiAgICAgfQogfQogCitib29sIEhUTUxNZWRpYUVsZW1lbnQ6
OmRvZXNIYXZlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpIGNv
bnN0Cit7CisgICAgaWYgKCFmYXN0SGFzQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYgKFNldHRpbmdzKiBzZXR0aW5ncyA9IGRvY3Vt
ZW50KCkuc2V0dGluZ3MoKSkgeworICAgICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSBIVE1MTmFt
ZXM6OnhfaXR1bmVzX2luaGVyaXRfdXJpX3F1ZXJ5X2NvbXBvbmVudEF0dHIpCisgICAgICAgICAg
ICByZXR1cm4gc2V0dGluZ3MtPmVuYWJsZUluaGVyaXRVUklRdWVyeUNvbXBvbmVudCgpOworICAg
IH0KKyAgICAKKyAgICByZXR1cm4gdHJ1ZTsKK30KKyAgICAKIH0KIAogI2VuZGlmCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAkocmV2aXNpb24gMTY1Njc2KQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTEzMSw2ICsxMzEsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzU2F2ZSgp
IGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1NjYW5uaW5nKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgCisgICAgdmlydHVhbCBib29sIGRvZXNIYXZlQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmKSBjb25zdCBvdmVycmlkZTsKKwogICAgIFBsYXRmb3JtTWVkaWEgcGxhdGZvcm1N
ZWRpYSgpIGNvbnN0OwogICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdDsK
ICNpZiBQTEFURk9STShJT1MpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmlu
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaW4JKHJldmlzaW9u
IDE2NTY3NikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaW4JKHdvcmtpbmcgY29w
eSkKQEAgLTIxOCwzICsyMTgsNSBAQCBpbWFnZUNvbnRyb2xzRW5hYmxlZCBpbml0aWFsPWZhbHNl
LCBjb25kCiAKICMgRklYTUU6IFRoaXMgaXMgdW5uZWVkZWQgYW5kIHNob3VsZCBiZSByZW1vdmVk
LgogYWx3YXlzVXNlQmFzZWxpbmVPZlByaW1hcnlGb250IGluaXRpYWw9ZmFsc2UKKworZW5hYmxl
SW5oZXJpdFVSSVF1ZXJ5Q29tcG9uZW50IGluaXRpYWw9ZmFsc2UKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAJKHJldmlzaW9uIDE2
NTY3NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTQwMyw3ICsxNDAzLDE1IEBAIHZvaWQgTWVkaWFQbGF5ZXJG
YWN0b3J5U3VwcG9ydDo6Y2FsbFJlZ2kKIHsKICAgICByZWdpc3Rlck1lZGlhRW5naW5lKGFkZE1l
ZGlhRW5naW5lKTsKIH0KLQorICAgIAorYm9vbCBNZWRpYVBsYXllcjo6ZG9lc0hhdmVBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlKSBjb25zdAoreworICAgIGlmICghbV9t
ZWRpYVBsYXllckNsaWVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIHJldHVy
biBtX21lZGlhUGxheWVyQ2xpZW50LT5kb2VzSGF2ZUF0dHJpYnV0ZShhdHRyaWJ1dGUpOworfQor
ICAgIAogfQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuaAkocmV2aXNpb24gMTY1Njc2KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTM5LDYg
KzEzOSw3IEBAIGNsYXNzIEludFNpemU7CiBjbGFzcyBNZWRpYVBsYXllcjsKIHN0cnVjdCBNZWRp
YVBsYXllckZhY3Rvcnk7CiBjbGFzcyBQbGF0Zm9ybVRpbWVSYW5nZXM7CitjbGFzcyBRdWFsaWZp
ZWROYW1lOwogCiAjaWYgUExBVEZPUk0oV0lOKSAmJiBVU0UoQVZGT1VOREFUSU9OKQogc3RydWN0
IEdyYXBoaWNzRGV2aWNlQWRhcHRlcjsKQEAgLTI0Nyw2ICsyNDgsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBIb3N0V2luZG93KiBtZWRpYVBsYXllckhvc3RXaW5kb3coKSB7IHJldHVybiAwOyB9
CiAgICAgdmlydHVhbCBJbnRSZWN0IG1lZGlhUGxheWVyV2luZG93Q2xpcFJlY3QoKSB7IHJldHVy
biBJbnRSZWN0KCk7IH0KICAgICB2aXJ0dWFsIENhY2hlZFJlc291cmNlTG9hZGVyKiBtZWRpYVBs
YXllckNhY2hlZFJlc291cmNlTG9hZGVyKCkgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgYm9v
bCBkb2VzSGF2ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICB2aXJ0dWFsIHZvaWQgbWVk
aWFQbGF5ZXJEaWRBZGRBdWRpb1RyYWNrKFBhc3NSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGU+KSB7
IH0KQEAgLTI2Miw3ICsyNjQsNiBAQCBwdWJsaWM6CiAjZW5kaWYKICNlbmRpZgogCi0KICAgICB2
aXJ0dWFsIGJvb2wgbWVkaWFQbGF5ZXJTaG91bGRXYWl0Rm9yUmVzcG9uc2VUb0F1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgeyByZXR1cm4gZmFs
c2U7IH0KIH07CiAKQEAgLTI5OCw2ICsyOTksOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBzdXBwb3J0
c1NhdmUoKSBjb25zdDsKICAgICBib29sIHN1cHBvcnRzU2Nhbm5pbmcoKSBjb25zdDsKICAgICBi
b29sIHJlcXVpcmVzSW1tZWRpYXRlQ29tcG9zaXRpbmcoKSBjb25zdDsKKyAgICBib29sIGRvZXNI
YXZlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKKyAgICAKICAgICBQbGF0
Zm9ybU1lZGlhIHBsYXRmb3JtTWVkaWEoKSBjb25zdDsKICAgICBQbGF0Zm9ybUxheWVyKiBwbGF0
Zm9ybUxheWVyKCkgY29uc3Q7CiAjaWYgUExBVEZPUk0oSU9TKQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0FWRm91bmRhdGlvbkNGU29mdExp
bmtpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vY2YvQVZGb3VuZGF0aW9uQ0ZTb2Z0TGlua2luZy5oCShyZXZpc2lvbiAxNjU2
NzYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2Yv
QVZGb3VuZGF0aW9uQ0ZTb2Z0TGlua2luZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zODQsNCArMzg0
LDcgQEAgU09GVF9MSU5LX1ZBUklBQkxFX0RMTF9JTVBPUlQoQVZGb3VuZGF0aQogU09GVF9MSU5L
X1ZBUklBQkxFX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZQbGF5ZXJJdGVtTGVnaWJs
ZU91dHB1dFRleHRTdHlsaW5nUmVzb2x1dGlvblNvdXJjZUFuZFJ1bGVzT25seSwgY29uc3QgQ0ZT
dHJpbmdSZWYpOwogI2RlZmluZSBBVkNGUGxheWVySXRlbUxlZ2libGVPdXRwdXRUZXh0U3R5bGlu
Z1Jlc29sdXRpb25Tb3VyY2VBbmRSdWxlc09ubHkgZ2V0QVZDRlBsYXllckl0ZW1MZWdpYmxlT3V0
cHV0VGV4dFN0eWxpbmdSZXNvbHV0aW9uU291cmNlQW5kUnVsZXNPbmx5KCkKIAorU09GVF9MSU5L
X1ZBUklBQkxFX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZVUkxBc3NldEluaGVyaXRV
UklRdWVyeUNvbXBvbmVudEZyb21SZWZlcmVuY2luZ1VSSUtleSwgY29uc3QgQ0ZTdHJpbmdSZWYp
OworI2RlZmluZSBBVkNGVVJMQXNzZXRJbmhlcml0VVJJUXVlcnlDb21wb25lbnRGcm9tUmVmZXJl
bmNpbmdVUklLZXkgZ2V0QVZDRlVSTEFzc2V0SW5oZXJpdFVSSVF1ZXJ5Q29tcG9uZW50RnJvbVJl
ZmVyZW5jaW5nVVJJS2V5KCkKKwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
Q0YuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAJKHJldmlz
aW9uIDE2NTY3NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0y
MDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5o
IgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgor
I2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2lmIEhBVkUoQVZGT1VOREFUSU9OX0xFR0lCTEVfT1VU
UFVUX1NVUFBPUlQpCiAjaW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0YuaCIKICNl
bHNlCkBAIC05OCw3ICs5OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlc3Ryb3lJbWFnZUdlbmVy
YXRvcigpOwogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjcmVhdGVJbWFnZUZvclRpbWVJblJl
Y3QoZmxvYXQsIGNvbnN0IEludFJlY3QmKTsKIAotICAgIHZvaWQgY3JlYXRlQXNzZXRGb3JVUkwo
Y29uc3QgU3RyaW5nJiB1cmwpOworICAgIHZvaWQgY3JlYXRlQXNzZXRGb3JVUkwoY29uc3QgU3Ry
aW5nJiB1cmwsIGJvb2wgaW5oZXJpdFVSSSk7CiAgICAgdm9pZCBzZXRBc3NldChBVkNGVVJMQXNz
ZXRSZWYpOwogICAgIAogICAgIHZvaWQgY3JlYXRlUGxheWVyKElEaXJlY3QzRERldmljZTkqKTsK
QEAgLTQxMiw4ICs0MTMsMTAgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25D
Rjo6YwogCiAgICAgc2V0RGVsYXlDYWxsYmFja3ModHJ1ZSk7CiAKKyAgICBib29sIGluaGVyaXRV
UkkgPSBwbGF5ZXIoKS0+ZG9lc0hhdmVBdHRyaWJ1dGUoSFRNTE5hbWVzOjp4X2l0dW5lc19pbmhl
cml0X3VyaV9xdWVyeV9jb21wb25lbnRBdHRyKTsKKwogICAgIG1fYXZmV3JhcHBlciA9IG5ldyBB
VkZXcmFwcGVyKHRoaXMpOwotICAgIG1fYXZmV3JhcHBlci0+Y3JlYXRlQXNzZXRGb3JVUkwodXJs
KTsKKyAgICBtX2F2ZldyYXBwZXItPmNyZWF0ZUFzc2V0Rm9yVVJMKHVybCwgaW5oZXJpdFVSSSk7
CiAgICAgc2V0RGVsYXlDYWxsYmFja3MoZmFsc2UpOwogfQogCkBAIC0xMzI0LDEzICsxMzI3LDIx
IEBAIHZvaWQgQVZGV3JhcHBlcjo6ZGlzY29ubmVjdEFuZERlbGV0ZUFWRlcKICAgICBkaXNwYXRj
aF9hc3luY19mKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIGNvbnRleHQsIGRlc3Ryb3lBVkZX
cmFwcGVyKTsKIH0KIAotdm9pZCBBVkZXcmFwcGVyOjpjcmVhdGVBc3NldEZvclVSTChjb25zdCBT
dHJpbmcmIHVybCkKK3ZvaWQgQVZGV3JhcHBlcjo6Y3JlYXRlQXNzZXRGb3JVUkwoY29uc3QgU3Ry
aW5nJiB1cmwsIGJvb2wgaW5oZXJpdFVSSSkKIHsKICAgICBBU1NFUlQoIWF2QXNzZXQoKSk7CiAK
ICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHVybFJlZiA9IFVSTChQYXJzZWRVUkxTdHJpbmcsIHVy
bCkuY3JlYXRlQ0ZVUkwoKTsKIAotICAgIEFWQ0ZVUkxBc3NldFJlZiBhc3NldFJlZiA9IEFWQ0ZV
UkxBc3NldENyZWF0ZVdpdGhVUkxBbmRPcHRpb25zKGtDRkFsbG9jYXRvckRlZmF1bHQsIHVybFJl
Zi5nZXQoKSwgMCwgbV9ub3RpZmljYXRpb25RdWV1ZSk7CisgICAgUmV0YWluUHRyPENGTXV0YWJs
ZURpY3Rpb25hcnlSZWY+IG9wdGlvbnNSZWYgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11
dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJh
Y2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOworCisgICAgaWYgKGluaGVy
aXRVUkkpIHsKKyAgICAgICAgYm9vbCB2YWx1ZSA9IHRydWU7CisgICAgICAgIFJldGFpblB0cjxD
Rk51bWJlclJlZj4gaW5oZXJpdFVSSVZhbCA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwga0NGTnVtYmVyU0ludDhUeXBlLCAmdmFsdWUpKTsKKyAgICAgICAgQ0ZE
aWN0aW9uYXJ5U2V0VmFsdWUob3B0aW9uc1JlZi5nZXQoKSwgQVZDRlVSTEFzc2V0SW5oZXJpdFVS
SVF1ZXJ5Q29tcG9uZW50RnJvbVJlZmVyZW5jaW5nVVJJS2V5LCBpbmhlcml0VVJJVmFsLmdldCgp
KTsKKyAgICB9CisKKyAgICBBVkNGVVJMQXNzZXRSZWYgYXNzZXRSZWYgPSBBVkNGVVJMQXNzZXRD
cmVhdGVXaXRoVVJMQW5kT3B0aW9ucyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB1cmxSZWYuZ2V0KCks
IG9wdGlvbnNSZWYuZ2V0KCksIG1fbm90aWZpY2F0aW9uUXVldWUpOwogICAgIG1fYXZBc3NldCA9
IGFkb3B0Q0YoYXNzZXRSZWYpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0JKHJl
dmlzaW9uIDE2NTY3NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0JKHdvcmtp
bmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAKICNpbXBvcnQgIkZyYW1lVmlldy5oIgogI2ltcG9y
dCAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRDRy5oIgorI2lt
cG9ydCAiSFRNTE5hbWVzLmgiCiAjaW1wb3J0ICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2Jq
Qy5oIgogI2ltcG9ydCAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWRk9iakMuaCIKICNp
bXBvcnQgIk91dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaCIKQEAgLTYyLDYgKzYzLDcgQEAK
ICNpbXBvcnQgPHd0Zi9DdXJyZW50VGltZS5oPgogI2ltcG9ydCA8d3RmL0Z1bmN0aW9uYWwuaD4K
ICNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaD4KIAogI2lmIEVOQUJMRShBVkZfQ0FQVElPTlMpCiAjaW5jbHVkZSAiVGV4dFRyYWNr
LmgiCkBAIC0xMzIsNiArMTM0LDcgQEAgU09GVF9MSU5LX1BPSU5URVIoQVZGb3VuZGF0aW9uLCBB
Vk1lZGlhVAogU09GVF9MSU5LX1BPSU5URVIoQVZGb3VuZGF0aW9uLCBBVk1lZGlhVHlwZVZpZGVv
LCBOU1N0cmluZyAqKQogU09GVF9MSU5LX1BPSU5URVIoQVZGb3VuZGF0aW9uLCBBVk1lZGlhVHlw
ZUF1ZGlvLCBOU1N0cmluZyAqKQogU09GVF9MSU5LX1BPSU5URVIoQVZGb3VuZGF0aW9uLCBBVlBs
YXllckl0ZW1EaWRQbGF5VG9FbmRUaW1lTm90aWZpY2F0aW9uLCBOU1N0cmluZyAqKQorU09GVF9M
SU5LX1BPSU5URVIoQVZGb3VuZGF0aW9uLCBBVlVSTEFzc2V0SW5oZXJpdFVSSVF1ZXJ5Q29tcG9u
ZW50RnJvbVJlZmVyZW5jaW5nVVJJS2V5LCBOU1N0cmluZyAqKQogU09GVF9MSU5LX1BPSU5URVIo
QVZGb3VuZGF0aW9uLCBBVkFzc2V0SW1hZ2VHZW5lcmF0b3JBcGVydHVyZU1vZGVDbGVhbkFwZXJ0
dXJlLCBOU1N0cmluZyAqKQogU09GVF9MSU5LX1BPSU5URVIoQVZGb3VuZGF0aW9uLCBBVlVSTEFz
c2V0UmVmZXJlbmNlUmVzdHJpY3Rpb25zS2V5LCBOU1N0cmluZyAqKQogU09GVF9MSU5LX1BPSU5U
RVIoQVZGb3VuZGF0aW9uLCBBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0LCBOU1N0cmlu
ZyAqKQpAQCAtMTUzLDYgKzE1Niw3IEBAIFNPRlRfTElOS19DT05TVEFOVChDb3JlTWVkaWEsIGtD
TVRpbWVaZXIKICNkZWZpbmUgQVZNZWRpYVR5cGVWaWRlbyBnZXRBVk1lZGlhVHlwZVZpZGVvKCkK
ICNkZWZpbmUgQVZNZWRpYVR5cGVBdWRpbyBnZXRBVk1lZGlhVHlwZUF1ZGlvKCkKICNkZWZpbmUg
QVZQbGF5ZXJJdGVtRGlkUGxheVRvRW5kVGltZU5vdGlmaWNhdGlvbiBnZXRBVlBsYXllckl0ZW1E
aWRQbGF5VG9FbmRUaW1lTm90aWZpY2F0aW9uKCkKKyNkZWZpbmUgQVZVUkxBc3NldEluaGVyaXRV
UklRdWVyeUNvbXBvbmVudEZyb21SZWZlcmVuY2luZ1VSSUtleSBnZXRBVlVSTEFzc2V0SW5oZXJp
dFVSSVF1ZXJ5Q29tcG9uZW50RnJvbVJlZmVyZW5jaW5nVVJJS2V5KCkKICNkZWZpbmUgQVZBc3Nl
dEltYWdlR2VuZXJhdG9yQXBlcnR1cmVNb2RlQ2xlYW5BcGVydHVyZSBnZXRBVkFzc2V0SW1hZ2VH
ZW5lcmF0b3JBcGVydHVyZU1vZGVDbGVhbkFwZXJ0dXJlKCkKICNkZWZpbmUgQVZVUkxBc3NldFJl
ZmVyZW5jZVJlc3RyaWN0aW9uc0tleSBnZXRBVlVSTEFzc2V0UmVmZXJlbmNlUmVzdHJpY3Rpb25z
S2V5KCkKICNkZWZpbmUgQVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdCBnZXRBVkxheWVy
VmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0KCkKQEAgLTU4Myw3ICs1ODcsNyBAQCB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6CiAgICAgfQogfQogI2VuZGlmCi0KKyAgICAK
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlQVZBc3NldEZv
clVSTChjb25zdCBTdHJpbmcmIHVybCkKIHsKICAgICBpZiAobV9hdkFzc2V0KQpAQCAtNjA5LDcg
KzYxMywxMCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6CiAKICAg
ICBpZiAoW2hlYWRlckZpZWxkcy5nZXQoKSBjb3VudF0pCiAgICAgICAgIFtvcHRpb25zLmdldCgp
IHNldE9iamVjdDpoZWFkZXJGaWVsZHMuZ2V0KCkgZm9yS2V5OkAiQVZVUkxBc3NldEhUVFBIZWFk
ZXJGaWVsZHNLZXkiXTsKLQorICAgIAorICAgIGlmIChwbGF5ZXIoKS0+ZG9lc0hhdmVBdHRyaWJ1
dGUoSFRNTE5hbWVzOjp4X2l0dW5lc19pbmhlcml0X3VyaV9xdWVyeV9jb21wb25lbnRBdHRyKSkK
KyAgICAgICAgW29wdGlvbnMuZ2V0KCkgc2V0T2JqZWN0OiBbTlNOdW1iZXIgbnVtYmVyV2l0aEJv
b2w6IFRSVUVdIGZvcktleTogQVZVUkxBc3NldEluaGVyaXRVUklRdWVyeUNvbXBvbmVudEZyb21S
ZWZlcmVuY2luZ1VSSUtleV07CisgICAgCiAjaWYgRU5BQkxFKEFWRl9DQVBUSU9OUykKICAgICBj
b25zdCBWZWN0b3I8UmVmUHRyPFBsYXRmb3JtVGV4dFRyYWNrPj4mIG91dE9mQmFuZFRyYWNrU291
cmNlcyA9IHBsYXllcigpLT5vdXRPZkJhbmRUcmFja1NvdXJjZXMoKTsKICAgICBpZiAoIW91dE9m
QmFuZFRyYWNrU291cmNlcy5pc0VtcHR5KCkpIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlz
aW9uIDE2NTY3NikKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDE5IEBACisyMDE0LTAzLTE0ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1A
YXBwbGUuY29tPgorCisgICAgICAgIFByb3ZpZGUgcHJlZmVyZW5jZSB0byBlbmFibGUgYWRkaXRp
b25hbCBBVkZvdW5kYXRpb24gb3B0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTMwMjc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oOiBB
ZGRlZCBuZXcgcHJlZmVyZWNlLgorICAgICAgICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW06
CisgICAgICAgICgrW1dlYlByZWZlcmVuY2VzIGluaXRpYWxpemVdKTogSW5pdGlhbGl6ZSBwcmVm
ZXJlbmNlIHRvIGZhbHNlLgorICAgICAgICAoLVtXZWJQcmVmZXJlbmNlcyBpc0luaGVyaXRVUklR
dWVyeUNvbXBvbmVudEVuYWJsZWRdKTogQWRkZWQuCisgICAgICAgICgtW1dlYlByZWZlcmVuY2Vz
IHNldEVuYWJsZUluaGVyaXRVUklRdWVyeUNvbXBvbmVudDpdKTogQWRkZWQuCisgICAgICAgICog
V2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaDoKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZp
ZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgX3ByZWZlcmVuY2VzQ2hhbmdlZDpdKTogSGFuZGxl
IG5ldyBwcmVmZXJlbmNlLgorCiAyMDE0LTAzLTE0ICBNYWNpZWogU3RhY2hvd2lhayAgPG1qc0Bh
cHBsZS5jb20+CiAKICAgICAgICAgUmVwbGFjZSAiQXBwbGUgQ29tcHV0ZXIsIEluYy4iIHdpdGgg
IkFwcGxlIEluYy4iIGluIGNvcHlyaWdodCBoZWFkZXJzCkluZGV4OiBTb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgJKHJldmlzaW9u
IDE2NTY3NikKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQ
cml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwOSwzICsyMDksNSBAQAogI2RlZmluZSBXZWJL
aXRUZXh0RmllbGRSZW1vdGVJbnNwZWN0aW9uRW5hYmxlZFByZWZlcmVuY2VLZXkgQCJXZWJLaXRU
ZXh0RmllbGRSZW1vdGVJbnNwZWN0aW9uRW5hYmxlZCIKICNlbmRpZgogI2VuZGlmCisKKyNkZWZp
bmUgV2ViS2l0RW5hYmxlSW5oZXJpdFVSSVF1ZXJ5Q29tcG9uZW50UHJlZmVyZW5jZUtleSBAIldl
YktpdEVuYWJsZUluaGVyaXRVUklRdWVyeUNvbXBvbmVudCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQkocmV2aXNpb24gMTY1Njc2KQorKysgU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcsIDIw
MTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDA1LCAyMDA2LCAyMDA3LCAyMDExLCAyMDEyLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqICAgICAgICAgICAoQykgMjAwNiBHcmFoYW0gRGVubmlzIChncmFoYW0u
ZGVubmlzQGdtYWlsLmNvbSkKICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTU5OCw2ICs1OTgsNyBAQCAr
ICh2b2lkKWluaXRpYWxpemUKICNpZiBFTkFCTEUoSU1BR0VfQ09OVFJPTFMpCiAgICAgICAgIFtO
U051bWJlciBudW1iZXJXaXRoQm9vbDpOT10sIFdlYktpdEltYWdlQ29udHJvbHNFbmFibGVkUHJl
ZmVyZW5jZUtleSwKICNlbmRpZgorICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6Tk9d
LCBXZWJLaXRFbmFibGVJbmhlcml0VVJJUXVlcnlDb21wb25lbnRQcmVmZXJlbmNlS2V5LAogICAg
ICAgICBuaWxdOwogCiAjaWYgIVBMQVRGT1JNKElPUykKQEAgLTIxNTYsNiArMjE1NywxNiBAQCAt
IChCT09MKWlzSGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlCiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCistIChCT09MKWlzSW5oZXJpdFVSSVF1ZXJ5Q29tcG9uZW50RW5hYmxlZAoreworICAg
IHJldHVybiBbc2VsZiBfYm9vbFZhbHVlRm9yS2V5OiBXZWJLaXRFbmFibGVJbmhlcml0VVJJUXVl
cnlDb21wb25lbnRQcmVmZXJlbmNlS2V5XTsKK30KKworLSAodm9pZClzZXRFbmFibGVJbmhlcml0
VVJJUXVlcnlDb21wb25lbnQ6KEJPT0wpZmxhZworeworICAgIFtzZWxmIF9zZXRCb29sVmFsdWU6
ZmxhZyBmb3JLZXk6IFdlYktpdEVuYWJsZUluaGVyaXRVUklRdWVyeUNvbXBvbmVudFByZWZlcmVu
Y2VLZXldOworfQorCiAjaWYgUExBVEZPUk0oSU9TKQogLSAoQk9PTCltZWRpYVBsYXliYWNrQWxs
b3dzQWlyUGxheQogewpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJl
bmNlc1ByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YlByZWZlcmVuY2VzUHJpdmF0ZS5oCShyZXZpc2lvbiAxNjU2NzYpCisrKyBTb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
ODcsNiArMjg3LDkgQEAgQGludGVyZmFjZSBXZWJQcmVmZXJlbmNlcyAoV2ViUHJpdmF0ZSkKIC0g
KEJPT0wpbWVkaWFQbGF5YmFja0FsbG93c0FpclBsYXk7CiAjZW5kaWYKIAorLSAoQk9PTClpc0lu
aGVyaXRVUklRdWVyeUNvbXBvbmVudEVuYWJsZWQ7CistICh2b2lkKXNldEVuYWJsZUluaGVyaXRV
UklRdWVyeUNvbXBvbmVudDooQk9PTClmbGFnOworCiAvLyBPdGhlciBwcml2YXRlIG1ldGhvZHMK
ICNpZiBUQVJHRVRfT1NfSVBIT05FCiAtIChzaXplX3QpX21heGltdW1JbWFnZVNpemU7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiAxNjU2NzYpCisrKyBT
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTIz
OTEsNiArMjM5MSw4IEBAIC0gKHZvaWQpX3ByZWZlcmVuY2VzQ2hhbmdlZDooV2ViUHJlZmVyZW4K
ICNlbmRpZgogCiAgICAgc2V0dGluZ3Muc2V0U2hvdWxkQ29udmVydFBvc2l0aW9uU3R5bGVPbkNv
cHkoW3ByZWZlcmVuY2VzIHNob3VsZENvbnZlcnRQb3NpdGlvblN0eWxlT25Db3B5XSk7CisgICAg
CisgICAgc2V0dGluZ3Muc2V0RW5hYmxlSW5oZXJpdFVSSVF1ZXJ5Q29tcG9uZW50KFtwcmVmZXJl
bmNlcyBpc0luaGVyaXRVUklRdWVyeUNvbXBvbmVudEVuYWJsZWRdKTsKIAogICAgIHN3aXRjaCAo
W3ByZWZlcmVuY2VzIHN0b3JhZ2VCbG9ja2luZ1BvbGljeV0pIHsKICAgICBjYXNlIFdlYkFsbG93
QWxsU3RvcmFnZToKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYlByZWZlcmVuY2VLZXlzUHJp
dmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYlByZWZlcmVuY2VLZXlz
UHJpdmF0ZS5oCShyZXZpc2lvbiAxNjU2NzYpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJQcmVm
ZXJlbmNlS2V5c1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTY2LDMgKzE2Niw1IEBACiAj
ZGVmaW5lIFdlYktpdE1vY2tTY3JvbGxiYXJzRW5hYmxlZFByZWZlcmVuY2VLZXkgIldlYktpdE1v
Y2tTY3JvbGxiYXJzRW5hYmxlZCIKIAogI2RlZmluZSBXZWJLaXRTY3JlZW5Gb250U3Vic3RpdHV0
aW9uRW5hYmxlZFByZWZlcmVuY2VLZXkgIldlYktpdFNjcmVlbkZvbnRTdWJzdGl0dXRpb25FbmFi
bGVkUHJlZmVyZW5jZUtleSIKKworI2RlZmluZSBXZWJLaXRFbmFibGVJbmhlcml0VVJJUXVlcnlD
b21wb25lbnRQcmVmZXJlbmNlS2V5ICJXZWJLaXRFbmFibGVJbmhlcml0VVJJUXVlcnlDb21wb25l
bnQiCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCShyZXZpc2lvbiAxNjU2
NzYpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI4MCw2ICsyODAsOCBAQCB2b2lkIFdlYlByZWZlcmVuY2VzOjppbml0aWFsaXplRGVm
YXVsdFNlCiAKICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0
RnVsbFNjcmVlbkVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKIAorICAg
IENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRSZXF1ZXN0QW5pbWF0
aW9uRnJhbWVFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisKICAgICBk
ZWZhdWx0U2V0dGluZ3MgPSBkZWZhdWx0czsKIH0KIApAQCAtMTgwMiwzICsxODA0LDE0IEBAIEhS
RVNVTFQgV2ViUHJlZmVyZW5jZXM6OnJlcXVlc3RBbmltYXRpb24KICAgICByZXR1cm4gU19PSzsK
IH0KIAorSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6aXNJbmhlcml0VVJJUXVlcnlDb21wb25lbnRF
bmFibGVkKEJPT0wqIGVuYWJsZWQpCit7CisgICAgKmVuYWJsZWQgPSBib29sVmFsdWVGb3JLZXko
V2ViS2l0RW5hYmxlSW5oZXJpdFVSSVF1ZXJ5Q29tcG9uZW50UHJlZmVyZW5jZUtleSk7CisgICAg
cmV0dXJuIFNfT0s7Cit9CisKK0hSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OnNldEVuYWJsZUluaGVy
aXRVUklRdWVyeUNvbXBvbmVudChCT09MIGVuYWJsZWQpCit7CisgICAgc2V0Qm9vbFZhbHVlKFdl
YktpdEVuYWJsZUluaGVyaXRVUklRdWVyeUNvbXBvbmVudFByZWZlcmVuY2VLZXksIGVuYWJsZWQp
OworICAgIHJldHVybiBTX09LOworfQpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViUHJlZmVy
ZW5jZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5o
CShyZXZpc2lvbiAxNjU2NzYpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5o
CSh3b3JraW5nIGNvcHkpCkBAIC00ODMsNiArNDgzLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzY3JlZW5Gb250U3Vic3RpdHV0aW9uRW5hYmxlZChC
T09MKik7CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFNjcmVlbkZv
bnRTdWJzdGl0dXRpb25FbmFibGVkKEJPT0wpOwogCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIGlzSW5oZXJpdFVSSVF1ZXJ5Q29tcG9uZW50RW5hYmxlZChCT09MKik7Cisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEVuYWJsZUluaGVyaXRVUklR
dWVyeUNvbXBvbmVudChCT09MKTsKKwogICAgIC8vIFdlYlByZWZlcmVuY2VzCiAKICAgICAvLyBU
aGlzIG1ldGhvZCBhY2Nlc3NlcyBhIGRpZmZlcmVudCBwcmVmZXJlbmNlIGtleSB0aGFuIGRldmVs
b3BlckV4dHJhc0VuYWJsZWQuCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAkocmV2aXNpb24gMTY1
Njc2KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTUwNTEsNyArNTA1MSw3IEBAIEhSRVNVTFQgV2ViVmlldzo6bm90aWZ5UHJlZmVyZW5jZXNDaGFu
Z2UKICAgICBpZiAoRkFJTEVEKGhyKSkKICAgICAgICAgcmV0dXJuIGhyOwogICAgIHNldHRpbmdz
LnNldE1vY2tTY3JvbGxiYXJzRW5hYmxlZChlbmFibGVkKTsKLQorICAgIGhyID0gcHJlZnNQcml2
YXRlLT5pc0luaGVyaXRVUklRdWVyeUNvbXBvbmVudEVuYWJsZWQoJmVuYWJsZWQpOyAvLyBPT1BT
ISBEb24ndCBjaGVja2luCiAgICAgaHIgPSBwcmVmc1ByaXZhdGUtPnNjcmVlbkZvbnRTdWJzdGl0
dXRpb25FbmFibGVkKCZlbmFibGVkKTsKICAgICBpZiAoRkFJTEVEKGhyKSkKICAgICAgICAgcmV0
dXJuIGhyOwpJbmRleDogU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViUHJlZmVyZW5j
ZXNQcml2YXRlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2Vz
L0lXZWJQcmVmZXJlbmNlc1ByaXZhdGUuaWRsCShyZXZpc2lvbiAxNjU2NzYpCisrKyBTb3VyY2Uv
V2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJQcmVmZXJlbmNlc1ByaXZhdGUuaWRsCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDgsNCArMTQ4LDcgQEAgaW50ZXJmYWNlIElXZWJQcmVmZXJlbmNlc1ByaXZh
dGUgOiBJVW5rbgogCiAgICAgSFJFU1VMVCBzY3JlZW5Gb250U3Vic3RpdHV0aW9uRW5hYmxlZChb
b3V0LCByZXR2YWxdIEJPT0wqIGVuYWJsZWQpOwogICAgIEhSRVNVTFQgc2V0U2NyZWVuRm9udFN1
YnN0aXR1dGlvbkVuYWJsZWQoW2luXSBCT09MIGVuYWJsZWQpOworCisgICAgSFJFU1VMVCBpc0lu
aGVyaXRVUklRdWVyeUNvbXBvbmVudEVuYWJsZWQoW291dCwgcmV0dmFsXSBCT09MKiBlbmFibGVk
KTsKKyAgICBIUkVTVUxUIHNldEVuYWJsZUluaGVyaXRVUklRdWVyeUNvbXBvbmVudChbaW5dIEJP
T0wgZW5hYmxlZCk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>226875</attachid>
            <date>2014-03-16 21:27:00 -0700</date>
            <delta_ts>2014-03-16 21:42:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-130275-20140316212638.patch</filename>
            <type>text/plain</type>
            <size>23369</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NTcxNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDE0LTAzLTE2ICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFByb3ZpZGUgcHJlZmVyZW5j
ZSB0byBlbmFibGUgYWRkaXRpb25hbCBBVkZvdW5kYXRpb24gb3B0aW9ucworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMwMjc1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZG9lc0hhdmVBdHRy
aWJ1dGUpOiBBZGRlZC4KKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAg
ICAgKiBwYWdlL1NldHRpbmdzLmluOiBBZGQgbmV3IGF0dHJpYnV0ZS4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllcjo6ZG9lc0hhdmVBdHRyaWJ1dGUpOiBBZGRlZCBzdHViIHRvIGNhbGwgcHJpdmF0ZSBwbGF5
ZXIgb2JqZWN0J3MKKyAgICAgICAgaW1wbGVtZW50YXRpb24gb2YgZG9lc0hhdmVBdHRyaWJ1dGUu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyQ2xpZW50Ojpkb2VzSGF2ZUF0dHJpYnV0ZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbkNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbkNGOjpBVkZXcmFwcGVyOjpjcmVhdGVBc3NldEZvclVSTCk6IENoZWNrIHRoZSA8bWVk
aWE+IG9iamVjdCwKKyAgICAgICAgYW5kIG5vdGlmeSBBVkZvdW5kYXRpb25DRiB0byB1c2UgVVJJ
IG9wdGlvbiBpZiByZWxldmFudC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlQVZB
c3NldEZvclVSTCk6IENoZWNrIHRoZSA8bWVkaWE+IG9iamVjdCwKKyAgICAgICAgYW5kIG5vdGlm
eSBBVkZvdW5kYXRpb24gdG8gdXNlIFVSSSBvcHRpb24gaWYgcmVsZXZhbnQuCisKIDIwMTQtMDMt
MTYgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3Rv
cjogZ2VuZXJhdGVkIGJhY2tlbmQgY29tbWFuZHMgc2hvdWxkIHJlZmxlY3QgYnVpbGQgc3lzdGVt
IEVOQUJMRSBzZXR0aW5ncwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRl
TmFtZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRl
TmFtZXMuaW4JKHJldmlzaW9uIDE2NTcxNSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0
dHJpYnV0ZU5hbWVzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0zNTYsMyArMzU2LDQgQEAgeC13ZWJr
aXQtaW1hZ2VtZW51CiB3ZWJraXQtcGxheXNpbmxpbmUKIHgtd2Via2l0LWFpcnBsYXkKIHgtd2Vi
a2l0LXdpcmVsZXNzdmlkZW9wbGF5YmFja2Rpc2FibGVkCit4LWl0dW5lcy1pbmhlcml0LXVyaS1x
dWVyeS1jb21wb25lbnQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcAkocmV2aXNpb24gMTY1NzE1KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTk3Myw2ICs1OTczLDE5IEBAIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6ZGlkUmVjZWl2ZVJlbW90ZUMKICAgICB9CiB9CiAKK2Jvb2wgSFRNTE1l
ZGlhRWxlbWVudDo6ZG9lc0hhdmVBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmli
dXRlTmFtZSkgY29uc3QKK3sKKyAgICBpZiAoIWZhc3RIYXNBdHRyaWJ1dGUoYXR0cmlidXRlTmFt
ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBpZiAoU2V0dGluZ3MqIHNldHRp
bmdzID0gZG9jdW1lbnQoKS5zZXR0aW5ncygpKSB7CisgICAgICAgIGlmIChhdHRyaWJ1dGVOYW1l
ID09IEhUTUxOYW1lczo6eF9pdHVuZXNfaW5oZXJpdF91cmlfcXVlcnlfY29tcG9uZW50QXR0cikK
KyAgICAgICAgICAgIHJldHVybiBzZXR0aW5ncy0+ZW5hYmxlSW5oZXJpdFVSSVF1ZXJ5Q29tcG9u
ZW50KCk7CisgICAgfQorICAgIAorICAgIHJldHVybiB0cnVlOworfQorICAgIAogfQogCiAjZW5k
aWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCShyZXZpc2lvbiAx
NjU3MTUpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTMxLDYgKzEzMSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc3Vw
cG9ydHNTYXZlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzU2Nhbm5pbmcoKSBj
b25zdCBvdmVycmlkZTsKICAgICAKKyAgICB2aXJ0dWFsIGJvb2wgZG9lc0hhdmVBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IG92ZXJyaWRlOworCiAgICAgUGxhdGZvcm1NZWRp
YSBwbGF0Zm9ybU1lZGlhKCkgY29uc3Q7CiAgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXll
cigpIGNvbnN0OwogI2lmIFBMQVRGT1JNKElPUykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2V0dGluZ3MuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5p
bgkocmV2aXNpb24gMTY1NzE1KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5pbgko
d29ya2luZyBjb3B5KQpAQCAtMjE4LDMgKzIxOCw1IEBAIGltYWdlQ29udHJvbHNFbmFibGVkIGlu
aXRpYWw9ZmFsc2UsIGNvbmQKIAogIyBGSVhNRTogVGhpcyBpcyB1bm5lZWRlZCBhbmQgc2hvdWxk
IGJlIHJlbW92ZWQuCiBhbHdheXNVc2VCYXNlbGluZU9mUHJpbWFyeUZvbnQgaW5pdGlhbD1mYWxz
ZQorCitlbmFibGVJbmhlcml0VVJJUXVlcnlDb21wb25lbnQgaW5pdGlhbD1mYWxzZQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAko
cmV2aXNpb24gMTY1NzE1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDAzLDcgKzE0MDMsMTUgQEAgdm9pZCBN
ZWRpYVBsYXllckZhY3RvcnlTdXBwb3J0OjpjYWxsUmVnaQogewogICAgIHJlZ2lzdGVyTWVkaWFF
bmdpbmUoYWRkTWVkaWFFbmdpbmUpOwogfQotCisgICAgCitib29sIE1lZGlhUGxheWVyOjpkb2Vz
SGF2ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGUpIGNvbnN0Cit7Cisg
ICAgaWYgKCFtX21lZGlhUGxheWVyQ2xpZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
CisgICAgcmV0dXJuIG1fbWVkaWFQbGF5ZXJDbGllbnQtPmRvZXNIYXZlQXR0cmlidXRlKGF0dHJp
YnV0ZSk7Cit9CisgICAgCiB9CiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCShyZXZpc2lvbiAxNjU3MTUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xMzksNiArMTM5LDcgQEAgY2xhc3MgSW50U2l6ZTsKIGNsYXNzIE1lZGlhUGxheWVyOwog
c3RydWN0IE1lZGlhUGxheWVyRmFjdG9yeTsKIGNsYXNzIFBsYXRmb3JtVGltZVJhbmdlczsKK2Ns
YXNzIFF1YWxpZmllZE5hbWU7CiAKICNpZiBQTEFURk9STShXSU4pICYmIFVTRShBVkZPVU5EQVRJ
T04pCiBzdHJ1Y3QgR3JhcGhpY3NEZXZpY2VBZGFwdGVyOwpAQCAtMjQ3LDYgKzI0OCw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIEhvc3RXaW5kb3cqIG1lZGlhUGxheWVySG9zdFdpbmRvdygpIHsg
cmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIEludFJlY3QgbWVkaWFQbGF5ZXJXaW5kb3dDbGlwUmVj
dCgpIHsgcmV0dXJuIEludFJlY3QoKTsgfQogICAgIHZpcnR1YWwgQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXIqIG1lZGlhUGxheWVyQ2FjaGVkUmVzb3VyY2VMb2FkZXIoKSB7IHJldHVybiAwOyB9CisgICAg
dmlydHVhbCBib29sIGRvZXNIYXZlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgIHZpcnR1
YWwgdm9pZCBtZWRpYVBsYXllckRpZEFkZEF1ZGlvVHJhY2soUGFzc1JlZlB0cjxBdWRpb1RyYWNr
UHJpdmF0ZT4pIHsgfQpAQCAtMjYyLDcgKzI2NCw2IEBAIHB1YmxpYzoKICNlbmRpZgogI2VuZGlm
CiAKLQogICAgIHZpcnR1YWwgYm9vbCBtZWRpYVBsYXllclNob3VsZFdhaXRGb3JSZXNwb25zZVRv
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSB7
IHJldHVybiBmYWxzZTsgfQogfTsKIApAQCAtMjk4LDYgKzI5OSw4IEBAIHB1YmxpYzoKICAgICBi
b29sIHN1cHBvcnRzU2F2ZSgpIGNvbnN0OwogICAgIGJvb2wgc3VwcG9ydHNTY2FubmluZygpIGNv
bnN0OwogICAgIGJvb2wgcmVxdWlyZXNJbW1lZGlhdGVDb21wb3NpdGluZygpIGNvbnN0OworICAg
IGJvb2wgZG9lc0hhdmVBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OworICAg
IAogICAgIFBsYXRmb3JtTWVkaWEgcGxhdGZvcm1NZWRpYSgpIGNvbnN0OwogICAgIFBsYXRmb3Jt
TGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdDsKICNpZiBQTEFURk9STShJT1MpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvQVZGb3VuZGF0
aW9uQ0ZTb2Z0TGlua2luZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9BVkZvdW5kYXRpb25DRlNvZnRMaW5raW5nLmgJKHJl
dmlzaW9uIDE2NTcxNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9jZi9BVkZvdW5kYXRpb25DRlNvZnRMaW5raW5nLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM4NCw0ICszODQsNyBAQCBTT0ZUX0xJTktfVkFSSUFCTEVfRExMX0lNUE9SVChBVkZvdW5kYXRp
CiBTT0ZUX0xJTktfVkFSSUFCTEVfRExMX0lNUE9SVChBVkZvdW5kYXRpb25DRiwgQVZDRlBsYXll
ckl0ZW1MZWdpYmxlT3V0cHV0VGV4dFN0eWxpbmdSZXNvbHV0aW9uU291cmNlQW5kUnVsZXNPbmx5
LCBjb25zdCBDRlN0cmluZ1JlZik7CiAjZGVmaW5lIEFWQ0ZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1
dFRleHRTdHlsaW5nUmVzb2x1dGlvblNvdXJjZUFuZFJ1bGVzT25seSBnZXRBVkNGUGxheWVySXRl
bUxlZ2libGVPdXRwdXRUZXh0U3R5bGluZ1Jlc29sdXRpb25Tb3VyY2VBbmRSdWxlc09ubHkoKQog
CitTT0ZUX0xJTktfVkFSSUFCTEVfRExMX0lNUE9SVChBVkZvdW5kYXRpb25DRiwgQVZDRlVSTEFz
c2V0SW5oZXJpdFVSSVF1ZXJ5Q29tcG9uZW50RnJvbVJlZmVyZW5jaW5nVVJJS2V5LCBjb25zdCBD
RlN0cmluZ1JlZik7CisjZGVmaW5lIEFWQ0ZVUkxBc3NldEluaGVyaXRVUklRdWVyeUNvbXBvbmVu
dEZyb21SZWZlcmVuY2luZ1VSSUtleSBnZXRBVkNGVVJMQXNzZXRJbmhlcml0VVJJUXVlcnlDb21w
b25lbnRGcm9tUmVmZXJlbmNpbmdVUklLZXkoKQorCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25DRi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNG
LmNwcAkocmV2aXNpb24gMTY1NzE1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEs
IDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDExLTIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiRmxvYXRD
b252ZXJzaW9uLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0LmgiCisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaWYgSEFWRShBVkZPVU5EQVRJT05f
TEVHSUJMRV9PVVRQVVRfU1VQUE9SVCkKICNpbmNsdWRlICJJbmJhbmRUZXh0VHJhY2tQcml2YXRl
QVZDRi5oIgogI2Vsc2UKQEAgLTk4LDcgKzk5LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGVzdHJv
eUltYWdlR2VuZXJhdG9yKCk7CiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNyZWF0ZUltYWdl
Rm9yVGltZUluUmVjdChmbG9hdCwgY29uc3QgSW50UmVjdCYpOwogCi0gICAgdm9pZCBjcmVhdGVB
c3NldEZvclVSTChjb25zdCBTdHJpbmcmIHVybCk7CisgICAgdm9pZCBjcmVhdGVBc3NldEZvclVS
TChjb25zdCBTdHJpbmcmIHVybCwgYm9vbCBpbmhlcml0VVJJKTsKICAgICB2b2lkIHNldEFzc2V0
KEFWQ0ZVUkxBc3NldFJlZik7CiAgICAgCiAgICAgdm9pZCBjcmVhdGVQbGF5ZXIoSURpcmVjdDNE
RGV2aWNlOSopOwpAQCAtNDEyLDggKzQxMywxMCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbkNGOjpjCiAKICAgICBzZXREZWxheUNhbGxiYWNrcyh0cnVlKTsKIAorICAgIGJv
b2wgaW5oZXJpdFVSSSA9IHBsYXllcigpLT5kb2VzSGF2ZUF0dHJpYnV0ZShIVE1MTmFtZXM6Onhf
aXR1bmVzX2luaGVyaXRfdXJpX3F1ZXJ5X2NvbXBvbmVudEF0dHIpOworCiAgICAgbV9hdmZXcmFw
cGVyID0gbmV3IEFWRldyYXBwZXIodGhpcyk7Ci0gICAgbV9hdmZXcmFwcGVyLT5jcmVhdGVBc3Nl
dEZvclVSTCh1cmwpOworICAgIG1fYXZmV3JhcHBlci0+Y3JlYXRlQXNzZXRGb3JVUkwodXJsLCBp
bmhlcml0VVJJKTsKICAgICBzZXREZWxheUNhbGxiYWNrcyhmYWxzZSk7CiB9CiAKQEAgLTEzMjQs
MTMgKzEzMjcsMjEgQEAgdm9pZCBBVkZXcmFwcGVyOjpkaXNjb25uZWN0QW5kRGVsZXRlQVZGVwog
ICAgIGRpc3BhdGNoX2FzeW5jX2YoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgY29udGV4dCwg
ZGVzdHJveUFWRldyYXBwZXIpOwogfQogCi12b2lkIEFWRldyYXBwZXI6OmNyZWF0ZUFzc2V0Rm9y
VVJMKGNvbnN0IFN0cmluZyYgdXJsKQordm9pZCBBVkZXcmFwcGVyOjpjcmVhdGVBc3NldEZvclVS
TChjb25zdCBTdHJpbmcmIHVybCwgYm9vbCBpbmhlcml0VVJJKQogewogICAgIEFTU0VSVCghYXZB
c3NldCgpKTsKIAogICAgIFJldGFpblB0cjxDRlVSTFJlZj4gdXJsUmVmID0gVVJMKFBhcnNlZFVS
TFN0cmluZywgdXJsKS5jcmVhdGVDRlVSTCgpOwogCi0gICAgQVZDRlVSTEFzc2V0UmVmIGFzc2V0
UmVmID0gQVZDRlVSTEFzc2V0Q3JlYXRlV2l0aFVSTEFuZE9wdGlvbnMoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgdXJsUmVmLmdldCgpLCAwLCBtX25vdGlmaWNhdGlvblF1ZXVlKTsKKyAgICBSZXRhaW5Q
dHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4gb3B0aW9uc1JlZiA9IGFkb3B0Q0YoQ0ZEaWN0aW9u
YXJ5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCAma0NGVHlwZURpY3Rpb25h
cnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CisKKyAg
ICBpZiAoaW5oZXJpdFVSSSkgeworICAgICAgICBib29sIHZhbHVlID0gdHJ1ZTsKKyAgICAgICAg
UmV0YWluUHRyPENGTnVtYmVyUmVmPiBpbmhlcml0VVJJVmFsID0gYWRvcHRDRihDRk51bWJlckNy
ZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJTSW50OFR5cGUsICZ2YWx1ZSkpOwor
ICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShvcHRpb25zUmVmLmdldCgpLCBBVkNGVVJMQXNz
ZXRJbmhlcml0VVJJUXVlcnlDb21wb25lbnRGcm9tUmVmZXJlbmNpbmdVUklLZXksIGluaGVyaXRV
UklWYWwuZ2V0KCkpOworICAgIH0KKworICAgIEFWQ0ZVUkxBc3NldFJlZiBhc3NldFJlZiA9IEFW
Q0ZVUkxBc3NldENyZWF0ZVdpdGhVUkxBbmRPcHRpb25zKGtDRkFsbG9jYXRvckRlZmF1bHQsIHVy
bFJlZi5nZXQoKSwgb3B0aW9uc1JlZi5nZXQoKSwgbV9ub3RpZmljYXRpb25RdWV1ZSk7CiAgICAg
bV9hdkFzc2V0ID0gYWRvcHRDRihhc3NldFJlZik7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQy5tbQkocmV2aXNpb24gMTY1NzE1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQAogI2ltcG9ydCAiRnJhbWVWaWV3
LmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHQuaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4
dENHLmgiCisjaW1wb3J0ICJIVE1MTmFtZXMuaCIKICNpbXBvcnQgIkluYmFuZFRleHRUcmFja1By
aXZhdGVBVkZPYmpDLmgiCiAjaW1wb3J0ICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZG
T2JqQy5oIgogI2ltcG9ydCAiT3V0T2ZCYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oIgpAQCAtNjIs
NiArNjMsNyBAQAogI2ltcG9ydCA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW1wb3J0IDx3dGYvRnVu
Y3Rpb25hbC5oPgogI2ltcG9ydCA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2ltcG9ydCA8d3RmL3Rl
eHQvU3RyaW5nQnVpbGRlci5oPgogCiAjaWYgRU5BQkxFKEFWRl9DQVBUSU9OUykKICNpbmNsdWRl
ICJUZXh0VHJhY2suaCIKQEAgLTEzMiw2ICsxMzQsNyBAQCBTT0ZUX0xJTktfUE9JTlRFUihBVkZv
dW5kYXRpb24sIEFWTWVkaWFUCiBTT0ZUX0xJTktfUE9JTlRFUihBVkZvdW5kYXRpb24sIEFWTWVk
aWFUeXBlVmlkZW8sIE5TU3RyaW5nICopCiBTT0ZUX0xJTktfUE9JTlRFUihBVkZvdW5kYXRpb24s
IEFWTWVkaWFUeXBlQXVkaW8sIE5TU3RyaW5nICopCiBTT0ZUX0xJTktfUE9JTlRFUihBVkZvdW5k
YXRpb24sIEFWUGxheWVySXRlbURpZFBsYXlUb0VuZFRpbWVOb3RpZmljYXRpb24sIE5TU3RyaW5n
ICopCitTT0ZUX0xJTktfUE9JTlRFUihBVkZvdW5kYXRpb24sIEFWVVJMQXNzZXRJbmhlcml0VVJJ
UXVlcnlDb21wb25lbnRGcm9tUmVmZXJlbmNpbmdVUklLZXksIE5TU3RyaW5nICopCiBTT0ZUX0xJ
TktfUE9JTlRFUihBVkZvdW5kYXRpb24sIEFWQXNzZXRJbWFnZUdlbmVyYXRvckFwZXJ0dXJlTW9k
ZUNsZWFuQXBlcnR1cmUsIE5TU3RyaW5nICopCiBTT0ZUX0xJTktfUE9JTlRFUihBVkZvdW5kYXRp
b24sIEFWVVJMQXNzZXRSZWZlcmVuY2VSZXN0cmljdGlvbnNLZXksIE5TU3RyaW5nICopCiBTT0ZU
X0xJTktfUE9JTlRFUihBVkZvdW5kYXRpb24sIEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemVBc3Bl
Y3QsIE5TU3RyaW5nICopCkBAIC0xNTMsNiArMTU2LDcgQEAgU09GVF9MSU5LX0NPTlNUQU5UKENv
cmVNZWRpYSwga0NNVGltZVplcgogI2RlZmluZSBBVk1lZGlhVHlwZVZpZGVvIGdldEFWTWVkaWFU
eXBlVmlkZW8oKQogI2RlZmluZSBBVk1lZGlhVHlwZUF1ZGlvIGdldEFWTWVkaWFUeXBlQXVkaW8o
KQogI2RlZmluZSBBVlBsYXllckl0ZW1EaWRQbGF5VG9FbmRUaW1lTm90aWZpY2F0aW9uIGdldEFW
UGxheWVySXRlbURpZFBsYXlUb0VuZFRpbWVOb3RpZmljYXRpb24oKQorI2RlZmluZSBBVlVSTEFz
c2V0SW5oZXJpdFVSSVF1ZXJ5Q29tcG9uZW50RnJvbVJlZmVyZW5jaW5nVVJJS2V5IGdldEFWVVJM
QXNzZXRJbmhlcml0VVJJUXVlcnlDb21wb25lbnRGcm9tUmVmZXJlbmNpbmdVUklLZXkoKQogI2Rl
ZmluZSBBVkFzc2V0SW1hZ2VHZW5lcmF0b3JBcGVydHVyZU1vZGVDbGVhbkFwZXJ0dXJlIGdldEFW
QXNzZXRJbWFnZUdlbmVyYXRvckFwZXJ0dXJlTW9kZUNsZWFuQXBlcnR1cmUoKQogI2RlZmluZSBB
VlVSTEFzc2V0UmVmZXJlbmNlUmVzdHJpY3Rpb25zS2V5IGdldEFWVVJMQXNzZXRSZWZlcmVuY2VS
ZXN0cmljdGlvbnNLZXkoKQogI2RlZmluZSBBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0
IGdldEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3QoKQpAQCAtNTgzLDcgKzU4Nyw3IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzoKICAgICB9CiB9CiAjZW5k
aWYKLQorICAgIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVh
dGVBVkFzc2V0Rm9yVVJMKGNvbnN0IFN0cmluZyYgdXJsKQogewogICAgIGlmIChtX2F2QXNzZXQp
CkBAIC02MDksNyArNjEzLDEwIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzoKIAogICAgIGlmIChbaGVhZGVyRmllbGRzLmdldCgpIGNvdW50XSkKICAgICAgICAgW29w
dGlvbnMuZ2V0KCkgc2V0T2JqZWN0OmhlYWRlckZpZWxkcy5nZXQoKSBmb3JLZXk6QCJBVlVSTEFz
c2V0SFRUUEhlYWRlckZpZWxkc0tleSJdOwotCisgICAgCisgICAgaWYgKHBsYXllcigpLT5kb2Vz
SGF2ZUF0dHJpYnV0ZShIVE1MTmFtZXM6OnhfaXR1bmVzX2luaGVyaXRfdXJpX3F1ZXJ5X2NvbXBv
bmVudEF0dHIpKQorICAgICAgICBbb3B0aW9ucy5nZXQoKSBzZXRPYmplY3Q6IFtOU051bWJlciBu
dW1iZXJXaXRoQm9vbDogVFJVRV0gZm9yS2V5OiBBVlVSTEFzc2V0SW5oZXJpdFVSSVF1ZXJ5Q29t
cG9uZW50RnJvbVJlZmVyZW5jaW5nVVJJS2V5XTsKKyAgICAKICNpZiBFTkFCTEUoQVZGX0NBUFRJ
T05TKQogICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8UGxhdGZvcm1UZXh0VHJhY2s+PiYgb3V0T2ZC
YW5kVHJhY2tTb3VyY2VzID0gcGxheWVyKCktPm91dE9mQmFuZFRyYWNrU291cmNlcygpOwogICAg
IGlmICghb3V0T2ZCYW5kVHJhY2tTb3VyY2VzLmlzRW1wdHkoKSkgewpJbmRleDogU291cmNlL1dl
YktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5oCShyZXZpc2lvbiAxNjU3MTUpCisr
KyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yMTQsNyArMjE0LDggQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgbWFjcm8oQWx3
YXlzVXNlQWNjZWxlcmF0ZWRPdmVyZmxvd1Njcm9sbCwgYWx3YXlzVXNlQWNjZWxlcmF0ZWRPdmVy
Zmxvd1Njcm9sbCwgQm9vbCwgYm9vbCwgZmFsc2UpIFwKICAgICBtYWNybyhQYXNzd29yZEVjaG9F
bmFibGVkLCBwYXNzd29yZEVjaG9FbmFibGVkLCBCb29sLCBib29sLCBERUZBVUxUX1BBU1NXT1JE
X0VDSE9fRU5BQkxFRCkgXAogICAgIG1hY3JvKEltYWdlQ29udHJvbHNFbmFibGVkLCBpbWFnZUNv
bnRyb2xzRW5hYmxlZCwgQm9vbCwgYm9vbCwgZmFsc2UpIFwKLQorICAgIG1hY3JvKEVuYWJsZUlu
aGVyaXRVUklRdWVyeUNvbXBvbmVudCwgZW5hYmxlSW5oZXJpdFVSSVF1ZXJ5Q29tcG9uZW50LCBC
b29sLCBib29sLCBmYWxzZSkgXAorICAgIAogI2RlZmluZSBGT1JfRUFDSF9XRUJLSVRfRE9VQkxF
X1BSRUZFUkVOQ0UobWFjcm8pIFwKICAgICBtYWNybyhQREZTY2FsZUZhY3RvciwgcGRmU2NhbGVG
YWN0b3IsIERvdWJsZSwgZG91YmxlLCAwKSBcCiAgICAgbWFjcm8oSW5jcmVtZW50YWxSZW5kZXJp
bmdTdXBwcmVzc2lvblRpbWVvdXQsIGluY3JlbWVudGFsUmVuZGVyaW5nU3VwcHJlc3Npb25UaW1l
b3V0LCBEb3VibGUsIGRvdWJsZSwgNSkgXApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAkocmV2aXNpb24gMTY1NzE1KQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMjU1LDMgKzEyNTUsMTMgQEAgYm9vbCBXS1ByZWZlcmVuY2VzR2V0VGVsZXBob25l
TnVtYmVyUGFycwogewogICAgIHJldHVybiB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT50ZWxlcGhv
bmVOdW1iZXJQYXJzaW5nRW5hYmxlZCgpOwogfQorCit2b2lkIFdLUHJlZmVyZW5jZXNTZXRFbmFi
bGVJbmhlcml0VVJJUXVlcnlDb21wb25lbnQoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1Jl
ZiwgYm9vbCBlbmFibGVkKQoreworICAgIHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPnNldEVuYWJs
ZUluaGVyaXRVUklRdWVyeUNvbXBvbmVudChlbmFibGVkKTsKK30KKworYm9vbCBXS1ByZWZlcmVu
Y2VzR2V0RW5hYmxlSW5oZXJpdFVSSVF1ZXJ5Q29tcG9uZW50KFdLUHJlZmVyZW5jZXNSZWYgcHJl
ZmVyZW5jZXNSZWYpCit7CisgICAgcmV0dXJuIHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPmVuYWJs
ZUluaGVyaXRVUklRdWVyeUNvbXBvbmVudCgpOworfQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNQcml2YXRlLmgJKHJldmlzaW9u
IDE2NTcxNSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2Vz
UHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMjEsNyArMzIxLDExIEBAIFdLX0VYUE9SVCBib29s
IFdLUHJlZmVyZW5jZXNHZXRTaG91bGRDb24KIC8vIERlZmF1bHQgdG8gZmFsc2UuCiBXS19FWFBP
UlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0VGVsZXBob25lTnVtYmVyUGFyc2luZ0VuYWJsZWQoV0tQ
cmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgYm9vbCBlbmFibGVkKTsKIFdLX0VYUE9SVCBi
b29sIFdLUHJlZmVyZW5jZXNHZXRUZWxlcGhvbmVOdW1iZXJQYXJzaW5nRW5hYmxlZChXS1ByZWZl
cmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmKTsKLQorICAgIAorLy8gRGVmYXVsdCB0byBmYWxzZS4K
K1dLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNTZXRFbmFibGVJbmhlcml0VVJJUXVlcnlDb21w
b25lbnQoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgYm9vbCBlbmFibGVkKTsKK1dL
X0VYUE9SVCBib29sIFdLUHJlZmVyZW5jZXNHZXRFbmFibGVJbmhlcml0VVJJUXVlcnlDb21wb25l
bnQoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZik7CisgICAgCiAjaWZkZWYgX19jcGx1
c3BsdXMKIH0KICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMTY1NzE1KQorKysgU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjI0LDYgKzI2
MjQsOCBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdlCiAgICAgc2V0
dGluZ3Muc2V0TGF5b3V0SW50ZXJ2YWwoc3RkOjpjaHJvbm86OmR1cmF0aW9uX2Nhc3Q8c3RkOjpj
aHJvbm86Om1pbGxpc2Vjb25kcz4oc3RkOjpjaHJvbm86OmR1cmF0aW9uPGRvdWJsZT4oc3RvcmUu
Z2V0RG91YmxlVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmxheW91dEludGVydmFsS2V5
KCkpKSkpOwogICAgIHNldHRpbmdzLnNldE1heFBhcnNlRHVyYXRpb24oc3RvcmUuZ2V0RG91Ymxl
VmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6Om1heFBhcnNlRHVyYXRpb25LZXkoKSkpOwog
CisgICAgc2V0dGluZ3Muc2V0RW5hYmxlSW5oZXJpdFVSSVF1ZXJ5Q29tcG9uZW50KHN0b3JlLmdl
dEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6ZW5hYmxlSW5oZXJpdFVSSVF1ZXJ5
Q29tcG9uZW50S2V5KCkpKTsKKyAgICAKICAgICBpZiAoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5
KFdlYlByZWZlcmVuY2VzS2V5OjpwYWdlVmlzaWJpbGl0eUJhc2VkUHJvY2Vzc1N1cHByZXNzaW9u
RW5hYmxlZEtleSgpKSkKICAgICAgICAgbV9wcm9jZXNzU3VwcHJlc3Npb25EaXNhYmxlZEJ5V2Vi
UHJlZmVyZW5jZS5zdG9wKCk7CiAgICAgZWxzZQpJbmRleDogU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNp
b24gMTY1NzE1KQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTkgQEAKKzIwMTQtMDMtMTYgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBh
cHBsZS5jb20+CisKKyAgICAgICAgUHJvdmlkZSBwcmVmZXJlbmNlIHRvIGVuYWJsZSBhZGRpdGlv
bmFsIEFWRm91bmRhdGlvbiBvcHRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMzAyNzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmg6IEFk
ZGVkIG5ldyBwcmVmZXJlY2UuCisgICAgICAgICogV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbToK
KyAgICAgICAgKCtbV2ViUHJlZmVyZW5jZXMgaW5pdGlhbGl6ZV0pOiBJbml0aWFsaXplIHByZWZl
cmVuY2UgdG8gZmFsc2UuCisgICAgICAgICgtW1dlYlByZWZlcmVuY2VzIGlzSW5oZXJpdFVSSVF1
ZXJ5Q29tcG9uZW50RW5hYmxlZF0pOiBBZGRlZC4KKyAgICAgICAgKC1bV2ViUHJlZmVyZW5jZXMg
c2V0RW5hYmxlSW5oZXJpdFVSSVF1ZXJ5Q29tcG9uZW50Ol0pOiBBZGRlZC4KKyAgICAgICAgKiBX
ZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmll
dy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBfcHJlZmVyZW5jZXNDaGFuZ2VkOl0pOiBIYW5kbGUg
bmV3IHByZWZlcmVuY2UuCisKIDIwMTQtMDMtMTYgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIFJlbW92ZSBhbGwgZGVwcmVjYXRlZENoYXJhY3RlcnMgdXNlIGZyb20g
V2ViS2l0IGRpcmVjdG9yeQpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVm
ZXJlbmNlS2V5c1ByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCShyZXZpc2lvbiAxNjU3MTUpCisrKyBTb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yMDksMyArMjA5LDUgQEAKICNkZWZpbmUgV2ViS2l0VGV4dEZpZWxkUmVtb3Rl
SW5zcGVjdGlvbkVuYWJsZWRQcmVmZXJlbmNlS2V5IEAiV2ViS2l0VGV4dEZpZWxkUmVtb3RlSW5z
cGVjdGlvbkVuYWJsZWQiCiAjZW5kaWYKICNlbmRpZgorCisjZGVmaW5lIFdlYktpdEVuYWJsZUlu
aGVyaXRVUklRdWVyeUNvbXBvbmVudFByZWZlcmVuY2VLZXkgQCJXZWJLaXRFbmFibGVJbmhlcml0
VVJJUXVlcnlDb21wb25lbnQiCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlBy
ZWZlcmVuY2VzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
UHJlZmVyZW5jZXMubW0JKHJldmlzaW9uIDE2NTcxNSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViUHJlZmVyZW5jZXMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3LCAyMDExLCAyMDEyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAw
NywgMjAxMSwgMjAxMiwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAg
ICAgICAgICAgKEMpIDIwMDYgR3JhaGFtIERlbm5pcyAoZ3JhaGFtLmRlbm5pc0BnbWFpbC5jb20p
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CkBAIC01OTgsNiArNTk4LDcgQEAgKyAodm9pZClpbml0aWFsaXpl
CiAjaWYgRU5BQkxFKElNQUdFX0NPTlRST0xTKQogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0
aEJvb2w6Tk9dLCBXZWJLaXRJbWFnZUNvbnRyb2xzRW5hYmxlZFByZWZlcmVuY2VLZXksCiAjZW5k
aWYKKyAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOk5PXSwgV2ViS2l0RW5hYmxlSW5o
ZXJpdFVSSVF1ZXJ5Q29tcG9uZW50UHJlZmVyZW5jZUtleSwKICAgICAgICAgbmlsXTsKIAogI2lm
ICFQTEFURk9STShJT1MpCkBAIC0yMTU2LDYgKzIxNTcsMTYgQEAgLSAoQk9PTClpc0hpeGllNzZX
ZWJTb2NrZXRQcm90b2NvbEVuYWJsZQogICAgIHJldHVybiBmYWxzZTsKIH0KIAorLSAoQk9PTClp
c0luaGVyaXRVUklRdWVyeUNvbXBvbmVudEVuYWJsZWQKK3sKKyAgICByZXR1cm4gW3NlbGYgX2Jv
b2xWYWx1ZUZvcktleTogV2ViS2l0RW5hYmxlSW5oZXJpdFVSSVF1ZXJ5Q29tcG9uZW50UHJlZmVy
ZW5jZUtleV07Cit9CisKKy0gKHZvaWQpc2V0RW5hYmxlSW5oZXJpdFVSSVF1ZXJ5Q29tcG9uZW50
OihCT09MKWZsYWcKK3sKKyAgICBbc2VsZiBfc2V0Qm9vbFZhbHVlOmZsYWcgZm9yS2V5OiBXZWJL
aXRFbmFibGVJbmhlcml0VVJJUXVlcnlDb21wb25lbnRQcmVmZXJlbmNlS2V5XTsKK30KKwogI2lm
IFBMQVRGT1JNKElPUykKIC0gKEJPT0wpbWVkaWFQbGF5YmFja0FsbG93c0FpclBsYXkKIHsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZh
dGUuaAkocmV2aXNpb24gMTY1NzE1KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQ
cmVmZXJlbmNlc1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjg3LDYgKzI4Nyw5IEBAIEBp
bnRlcmZhY2UgV2ViUHJlZmVyZW5jZXMgKFdlYlByaXZhdGUpCiAtIChCT09MKW1lZGlhUGxheWJh
Y2tBbGxvd3NBaXJQbGF5OwogI2VuZGlmCiAKKy0gKEJPT0wpaXNJbmhlcml0VVJJUXVlcnlDb21w
b25lbnRFbmFibGVkOworLSAodm9pZClzZXRFbmFibGVJbmhlcml0VVJJUXVlcnlDb21wb25lbnQ6
KEJPT0wpZmxhZzsKKwogLy8gT3RoZXIgcHJpdmF0ZSBtZXRob2RzCiAjaWYgVEFSR0VUX09TX0lQ
SE9ORQogLSAoc2l6ZV90KV9tYXhpbXVtSW1hZ2VTaXplOwpJbmRleDogU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViVmlldy5tbQkocmV2aXNpb24gMTY1NzE1KQorKysgU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMzkxLDYgKzIzOTEsOCBAQCAt
ICh2b2lkKV9wcmVmZXJlbmNlc0NoYW5nZWQ6KFdlYlByZWZlcmVuCiAjZW5kaWYKIAogICAgIHNl
dHRpbmdzLnNldFNob3VsZENvbnZlcnRQb3NpdGlvblN0eWxlT25Db3B5KFtwcmVmZXJlbmNlcyBz
aG91bGRDb252ZXJ0UG9zaXRpb25TdHlsZU9uQ29weV0pOworICAgIAorICAgIHNldHRpbmdzLnNl
dEVuYWJsZUluaGVyaXRVUklRdWVyeUNvbXBvbmVudChbcHJlZmVyZW5jZXMgaXNJbmhlcml0VVJJ
UXVlcnlDb21wb25lbnRFbmFibGVkXSk7CiAKICAgICBzd2l0Y2ggKFtwcmVmZXJlbmNlcyBzdG9y
YWdlQmxvY2tpbmdQb2xpY3ldKSB7CiAgICAgY2FzZSBXZWJBbGxvd0FsbFN0b3JhZ2U6CkluZGV4
OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaAkocmV2aXNp
b24gMTY1NzE1KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViUHJlZmVyZW5jZUtleXNQcml2YXRl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE2NiwzICsxNjYsNSBAQAogI2RlZmluZSBXZWJLaXRNb2Nr
U2Nyb2xsYmFyc0VuYWJsZWRQcmVmZXJlbmNlS2V5ICJXZWJLaXRNb2NrU2Nyb2xsYmFyc0VuYWJs
ZWQiCiAKICNkZWZpbmUgV2ViS2l0U2NyZWVuRm9udFN1YnN0aXR1dGlvbkVuYWJsZWRQcmVmZXJl
bmNlS2V5ICJXZWJLaXRTY3JlZW5Gb250U3Vic3RpdHV0aW9uRW5hYmxlZFByZWZlcmVuY2VLZXki
CisKKyNkZWZpbmUgV2ViS2l0RW5hYmxlSW5oZXJpdFVSSVF1ZXJ5Q29tcG9uZW50UHJlZmVyZW5j
ZUtleSAiV2ViS2l0RW5hYmxlSW5oZXJpdFVSSVF1ZXJ5Q29tcG9uZW50IgpJbmRleDogU291cmNl
L1dlYktpdC93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvd2luL1dlYlByZWZlcmVuY2VzLmNwcAkocmV2aXNpb24gMTY1NzE1KQorKysgU291cmNlL1dl
YktpdC93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODAsNiArMjgw
LDggQEAgdm9pZCBXZWJQcmVmZXJlbmNlczo6aW5pdGlhbGl6ZURlZmF1bHRTZQogCiAgICAgQ0ZE
aWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEZ1bGxTY3JlZW5FbmFibGVk
UHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CiAKKyAgICBDRkRpY3Rpb25hcnlBZGRW
YWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0UmVxdWVzdEFuaW1hdGlvbkZyYW1lRW5hYmxlZFBy
ZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworCiAgICAgZGVmYXVsdFNldHRpbmdzID0g
ZGVmYXVsdHM7CiB9CiAKQEAgLTE4MDIsMyArMTgwNCwxNCBAQCBIUkVTVUxUIFdlYlByZWZlcmVu
Y2VzOjpyZXF1ZXN0QW5pbWF0aW9uCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKK0hSRVNVTFQgV2Vi
UHJlZmVyZW5jZXM6OmlzSW5oZXJpdFVSSVF1ZXJ5Q29tcG9uZW50RW5hYmxlZChCT09MKiBlbmFi
bGVkKQoreworICAgICplbmFibGVkID0gYm9vbFZhbHVlRm9yS2V5KFdlYktpdEVuYWJsZUluaGVy
aXRVUklRdWVyeUNvbXBvbmVudFByZWZlcmVuY2VLZXkpOworICAgIHJldHVybiBTX09LOworfQor
CitIUkVTVUxUIFdlYlByZWZlcmVuY2VzOjpzZXRFbmFibGVJbmhlcml0VVJJUXVlcnlDb21wb25l
bnQoQk9PTCBlbmFibGVkKQoreworICAgIHNldEJvb2xWYWx1ZShXZWJLaXRFbmFibGVJbmhlcml0
VVJJUXVlcnlDb21wb25lbnRQcmVmZXJlbmNlS2V5LCBlbmFibGVkKTsKKyAgICByZXR1cm4gU19P
SzsKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYlByZWZlcmVuY2VzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViUHJlZmVyZW5jZXMuaAkocmV2aXNpb24gMTY1NzE1
KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViUHJlZmVyZW5jZXMuaAkod29ya2luZyBjb3B5KQpA
QCAtNDgzLDYgKzQ4Myw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgc2NyZWVuRm9udFN1YnN0aXR1dGlvbkVuYWJsZWQoQk9PTCopOwogICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRTY3JlZW5Gb250U3Vic3RpdHV0aW9uRW5h
YmxlZChCT09MKTsKIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpc0lu
aGVyaXRVUklRdWVyeUNvbXBvbmVudEVuYWJsZWQoQk9PTCopOworICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBzZXRFbmFibGVJbmhlcml0VVJJUXVlcnlDb21wb25lbnQoQk9P
TCk7CisKICAgICAvLyBXZWJQcmVmZXJlbmNlcwogCiAgICAgLy8gVGhpcyBtZXRob2QgYWNjZXNz
ZXMgYSBkaWZmZXJlbnQgcHJlZmVyZW5jZSBrZXkgdGhhbiBkZXZlbG9wZXJFeHRyYXNFbmFibGVk
LgpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAJKHJldmlzaW9uIDE2NTcxNSkKKysrIFNvdXJjZS9X
ZWJLaXQvd2luL1dlYlZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MDUxLDcgKzUwNTEsNyBA
QCBIUkVTVUxUIFdlYlZpZXc6Om5vdGlmeVByZWZlcmVuY2VzQ2hhbmdlCiAgICAgaWYgKEZBSUxF
RChocikpCiAgICAgICAgIHJldHVybiBocjsKICAgICBzZXR0aW5ncy5zZXRNb2NrU2Nyb2xsYmFy
c0VuYWJsZWQoZW5hYmxlZCk7Ci0KKyAgICBociA9IHByZWZzUHJpdmF0ZS0+aXNJbmhlcml0VVJJ
UXVlcnlDb21wb25lbnRFbmFibGVkKCZlbmFibGVkKTsgLy8gT09QUyEgRG9uJ3QgY2hlY2tpbgog
ICAgIGhyID0gcHJlZnNQcml2YXRlLT5zY3JlZW5Gb250U3Vic3RpdHV0aW9uRW5hYmxlZCgmZW5h
YmxlZCk7CiAgICAgaWYgKEZBSUxFRChocikpCiAgICAgICAgIHJldHVybiBocjsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYlByZWZlcmVuY2VzUHJpdmF0ZS5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViUHJlZmVyZW5jZXNQ
cml2YXRlLmlkbAkocmV2aXNpb24gMTY1NzE1KQorKysgU291cmNlL1dlYktpdC93aW4vSW50ZXJm
YWNlcy9JV2ViUHJlZmVyZW5jZXNQcml2YXRlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMTQ4LDQg
KzE0OCw3IEBAIGludGVyZmFjZSBJV2ViUHJlZmVyZW5jZXNQcml2YXRlIDogSVVua24KIAogICAg
IEhSRVNVTFQgc2NyZWVuRm9udFN1YnN0aXR1dGlvbkVuYWJsZWQoW291dCwgcmV0dmFsXSBCT09M
KiBlbmFibGVkKTsKICAgICBIUkVTVUxUIHNldFNjcmVlbkZvbnRTdWJzdGl0dXRpb25FbmFibGVk
KFtpbl0gQk9PTCBlbmFibGVkKTsKKworICAgIEhSRVNVTFQgaXNJbmhlcml0VVJJUXVlcnlDb21w
b25lbnRFbmFibGVkKFtvdXQsIHJldHZhbF0gQk9PTCogZW5hYmxlZCk7CisgICAgSFJFU1VMVCBz
ZXRFbmFibGVJbmhlcml0VVJJUXVlcnlDb21wb25lbnQoW2luXSBCT09MIGVuYWJsZWQpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>226878</attachid>
            <date>2014-03-16 21:42:34 -0700</date>
            <delta_ts>2014-03-17 10:18:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-130275-20140316214211.patch</filename>
            <type>text/plain</type>
            <size>23178</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NTcxNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDE0LTAzLTE2ICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFByb3ZpZGUgcHJlZmVyZW5j
ZSB0byBlbmFibGUgYWRkaXRpb25hbCBBVkZvdW5kYXRpb24gb3B0aW9ucworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMwMjc1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZG9lc0hhdmVBdHRy
aWJ1dGUpOiBBZGRlZC4KKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAg
ICAgKiBwYWdlL1NldHRpbmdzLmluOiBBZGQgbmV3IGF0dHJpYnV0ZS4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllcjo6ZG9lc0hhdmVBdHRyaWJ1dGUpOiBBZGRlZCBzdHViIHRvIGNhbGwgcHJpdmF0ZSBwbGF5
ZXIgb2JqZWN0J3MKKyAgICAgICAgaW1wbGVtZW50YXRpb24gb2YgZG9lc0hhdmVBdHRyaWJ1dGUu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyQ2xpZW50Ojpkb2VzSGF2ZUF0dHJpYnV0ZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbkNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbkNGOjpBVkZXcmFwcGVyOjpjcmVhdGVBc3NldEZvclVSTCk6IENoZWNrIHRoZSA8bWVk
aWE+IG9iamVjdCwKKyAgICAgICAgYW5kIG5vdGlmeSBBVkZvdW5kYXRpb25DRiB0byB1c2UgVVJJ
IG9wdGlvbiBpZiByZWxldmFudC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlQVZB
c3NldEZvclVSTCk6IENoZWNrIHRoZSA8bWVkaWE+IG9iamVjdCwKKyAgICAgICAgYW5kIG5vdGlm
eSBBVkZvdW5kYXRpb24gdG8gdXNlIFVSSSBvcHRpb24gaWYgcmVsZXZhbnQuCisKIDIwMTQtMDMt
MTYgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3Rv
cjogZ2VuZXJhdGVkIGJhY2tlbmQgY29tbWFuZHMgc2hvdWxkIHJlZmxlY3QgYnVpbGQgc3lzdGVt
IEVOQUJMRSBzZXR0aW5ncwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRl
TmFtZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRl
TmFtZXMuaW4JKHJldmlzaW9uIDE2NTcxNSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0
dHJpYnV0ZU5hbWVzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0zNTYsMyArMzU2LDQgQEAgeC13ZWJr
aXQtaW1hZ2VtZW51CiB3ZWJraXQtcGxheXNpbmxpbmUKIHgtd2Via2l0LWFpcnBsYXkKIHgtd2Vi
a2l0LXdpcmVsZXNzdmlkZW9wbGF5YmFja2Rpc2FibGVkCit4LWl0dW5lcy1pbmhlcml0LXVyaS1x
dWVyeS1jb21wb25lbnQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcAkocmV2aXNpb24gMTY1NzE1KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTk3Myw2ICs1OTczLDE5IEBAIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6ZGlkUmVjZWl2ZVJlbW90ZUMKICAgICB9CiB9CiAKK2Jvb2wgSFRNTE1l
ZGlhRWxlbWVudDo6ZG9lc0hhdmVBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmli
dXRlTmFtZSkgY29uc3QKK3sKKyAgICBpZiAoIWZhc3RIYXNBdHRyaWJ1dGUoYXR0cmlidXRlTmFt
ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBpZiAoU2V0dGluZ3MqIHNldHRp
bmdzID0gZG9jdW1lbnQoKS5zZXR0aW5ncygpKSB7CisgICAgICAgIGlmIChhdHRyaWJ1dGVOYW1l
ID09IEhUTUxOYW1lczo6eF9pdHVuZXNfaW5oZXJpdF91cmlfcXVlcnlfY29tcG9uZW50QXR0cikK
KyAgICAgICAgICAgIHJldHVybiBzZXR0aW5ncy0+ZW5hYmxlSW5oZXJpdFVSSVF1ZXJ5Q29tcG9u
ZW50KCk7CisgICAgfQorICAgIAorICAgIHJldHVybiB0cnVlOworfQorICAgIAogfQogCiAjZW5k
aWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCShyZXZpc2lvbiAx
NjU3MTUpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTMxLDYgKzEzMSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc3Vw
cG9ydHNTYXZlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzU2Nhbm5pbmcoKSBj
b25zdCBvdmVycmlkZTsKICAgICAKKyAgICB2aXJ0dWFsIGJvb2wgZG9lc0hhdmVBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IG92ZXJyaWRlOworCiAgICAgUGxhdGZvcm1NZWRp
YSBwbGF0Zm9ybU1lZGlhKCkgY29uc3Q7CiAgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXll
cigpIGNvbnN0OwogI2lmIFBMQVRGT1JNKElPUykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2V0dGluZ3MuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5p
bgkocmV2aXNpb24gMTY1NzE1KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5pbgko
d29ya2luZyBjb3B5KQpAQCAtMjE4LDMgKzIxOCw1IEBAIGltYWdlQ29udHJvbHNFbmFibGVkIGlu
aXRpYWw9ZmFsc2UsIGNvbmQKIAogIyBGSVhNRTogVGhpcyBpcyB1bm5lZWRlZCBhbmQgc2hvdWxk
IGJlIHJlbW92ZWQuCiBhbHdheXNVc2VCYXNlbGluZU9mUHJpbWFyeUZvbnQgaW5pdGlhbD1mYWxz
ZQorCitlbmFibGVJbmhlcml0VVJJUXVlcnlDb21wb25lbnQgaW5pdGlhbD1mYWxzZQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAko
cmV2aXNpb24gMTY1NzE1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDAzLDcgKzE0MDMsMTUgQEAgdm9pZCBN
ZWRpYVBsYXllckZhY3RvcnlTdXBwb3J0OjpjYWxsUmVnaQogewogICAgIHJlZ2lzdGVyTWVkaWFF
bmdpbmUoYWRkTWVkaWFFbmdpbmUpOwogfQotCisgICAgCitib29sIE1lZGlhUGxheWVyOjpkb2Vz
SGF2ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGUpIGNvbnN0Cit7Cisg
ICAgaWYgKCFtX21lZGlhUGxheWVyQ2xpZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
CisgICAgcmV0dXJuIG1fbWVkaWFQbGF5ZXJDbGllbnQtPmRvZXNIYXZlQXR0cmlidXRlKGF0dHJp
YnV0ZSk7Cit9CisgICAgCiB9CiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCShyZXZpc2lvbiAxNjU3MTUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xMzksNiArMTM5LDcgQEAgY2xhc3MgSW50U2l6ZTsKIGNsYXNzIE1lZGlhUGxheWVyOwog
c3RydWN0IE1lZGlhUGxheWVyRmFjdG9yeTsKIGNsYXNzIFBsYXRmb3JtVGltZVJhbmdlczsKK2Ns
YXNzIFF1YWxpZmllZE5hbWU7CiAKICNpZiBQTEFURk9STShXSU4pICYmIFVTRShBVkZPVU5EQVRJ
T04pCiBzdHJ1Y3QgR3JhcGhpY3NEZXZpY2VBZGFwdGVyOwpAQCAtMjQ3LDYgKzI0OCw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIEhvc3RXaW5kb3cqIG1lZGlhUGxheWVySG9zdFdpbmRvdygpIHsg
cmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIEludFJlY3QgbWVkaWFQbGF5ZXJXaW5kb3dDbGlwUmVj
dCgpIHsgcmV0dXJuIEludFJlY3QoKTsgfQogICAgIHZpcnR1YWwgQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXIqIG1lZGlhUGxheWVyQ2FjaGVkUmVzb3VyY2VMb2FkZXIoKSB7IHJldHVybiAwOyB9CisgICAg
dmlydHVhbCBib29sIGRvZXNIYXZlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgIHZpcnR1
YWwgdm9pZCBtZWRpYVBsYXllckRpZEFkZEF1ZGlvVHJhY2soUGFzc1JlZlB0cjxBdWRpb1RyYWNr
UHJpdmF0ZT4pIHsgfQpAQCAtMjYyLDcgKzI2NCw2IEBAIHB1YmxpYzoKICNlbmRpZgogI2VuZGlm
CiAKLQogICAgIHZpcnR1YWwgYm9vbCBtZWRpYVBsYXllclNob3VsZFdhaXRGb3JSZXNwb25zZVRv
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSB7
IHJldHVybiBmYWxzZTsgfQogfTsKIApAQCAtMjk4LDYgKzI5OSw4IEBAIHB1YmxpYzoKICAgICBi
b29sIHN1cHBvcnRzU2F2ZSgpIGNvbnN0OwogICAgIGJvb2wgc3VwcG9ydHNTY2FubmluZygpIGNv
bnN0OwogICAgIGJvb2wgcmVxdWlyZXNJbW1lZGlhdGVDb21wb3NpdGluZygpIGNvbnN0OworICAg
IGJvb2wgZG9lc0hhdmVBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OworICAg
IAogICAgIFBsYXRmb3JtTWVkaWEgcGxhdGZvcm1NZWRpYSgpIGNvbnN0OwogICAgIFBsYXRmb3Jt
TGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdDsKICNpZiBQTEFURk9STShJT1MpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvQVZGb3VuZGF0
aW9uQ0ZTb2Z0TGlua2luZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9BVkZvdW5kYXRpb25DRlNvZnRMaW5raW5nLmgJKHJl
dmlzaW9uIDE2NTcxNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9jZi9BVkZvdW5kYXRpb25DRlNvZnRMaW5raW5nLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM4NCw0ICszODQsNyBAQCBTT0ZUX0xJTktfVkFSSUFCTEVfRExMX0lNUE9SVChBVkZvdW5kYXRp
CiBTT0ZUX0xJTktfVkFSSUFCTEVfRExMX0lNUE9SVChBVkZvdW5kYXRpb25DRiwgQVZDRlBsYXll
ckl0ZW1MZWdpYmxlT3V0cHV0VGV4dFN0eWxpbmdSZXNvbHV0aW9uU291cmNlQW5kUnVsZXNPbmx5
LCBjb25zdCBDRlN0cmluZ1JlZik7CiAjZGVmaW5lIEFWQ0ZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1
dFRleHRTdHlsaW5nUmVzb2x1dGlvblNvdXJjZUFuZFJ1bGVzT25seSBnZXRBVkNGUGxheWVySXRl
bUxlZ2libGVPdXRwdXRUZXh0U3R5bGluZ1Jlc29sdXRpb25Tb3VyY2VBbmRSdWxlc09ubHkoKQog
CitTT0ZUX0xJTktfVkFSSUFCTEVfRExMX0lNUE9SVChBVkZvdW5kYXRpb25DRiwgQVZDRlVSTEFz
c2V0SW5oZXJpdFVSSVF1ZXJ5Q29tcG9uZW50RnJvbVJlZmVyZW5jaW5nVVJJS2V5LCBjb25zdCBD
RlN0cmluZ1JlZik7CisjZGVmaW5lIEFWQ0ZVUkxBc3NldEluaGVyaXRVUklRdWVyeUNvbXBvbmVu
dEZyb21SZWZlcmVuY2luZ1VSSUtleSBnZXRBVkNGVVJMQXNzZXRJbmhlcml0VVJJUXVlcnlDb21w
b25lbnRGcm9tUmVmZXJlbmNpbmdVUklLZXkoKQorCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25DRi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNG
LmNwcAkocmV2aXNpb24gMTY1NzE1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEs
IDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDExLTIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiRmxvYXRD
b252ZXJzaW9uLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0LmgiCisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaWYgSEFWRShBVkZPVU5EQVRJT05f
TEVHSUJMRV9PVVRQVVRfU1VQUE9SVCkKICNpbmNsdWRlICJJbmJhbmRUZXh0VHJhY2tQcml2YXRl
QVZDRi5oIgogI2Vsc2UKQEAgLTk4LDcgKzk5LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGVzdHJv
eUltYWdlR2VuZXJhdG9yKCk7CiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNyZWF0ZUltYWdl
Rm9yVGltZUluUmVjdChmbG9hdCwgY29uc3QgSW50UmVjdCYpOwogCi0gICAgdm9pZCBjcmVhdGVB
c3NldEZvclVSTChjb25zdCBTdHJpbmcmIHVybCk7CisgICAgdm9pZCBjcmVhdGVBc3NldEZvclVS
TChjb25zdCBTdHJpbmcmIHVybCwgYm9vbCBpbmhlcml0VVJJKTsKICAgICB2b2lkIHNldEFzc2V0
KEFWQ0ZVUkxBc3NldFJlZik7CiAgICAgCiAgICAgdm9pZCBjcmVhdGVQbGF5ZXIoSURpcmVjdDNE
RGV2aWNlOSopOwpAQCAtNDEyLDggKzQxMywxMCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbkNGOjpjCiAKICAgICBzZXREZWxheUNhbGxiYWNrcyh0cnVlKTsKIAorICAgIGJv
b2wgaW5oZXJpdFVSSSA9IHBsYXllcigpLT5kb2VzSGF2ZUF0dHJpYnV0ZShIVE1MTmFtZXM6Onhf
aXR1bmVzX2luaGVyaXRfdXJpX3F1ZXJ5X2NvbXBvbmVudEF0dHIpOworCiAgICAgbV9hdmZXcmFw
cGVyID0gbmV3IEFWRldyYXBwZXIodGhpcyk7Ci0gICAgbV9hdmZXcmFwcGVyLT5jcmVhdGVBc3Nl
dEZvclVSTCh1cmwpOworICAgIG1fYXZmV3JhcHBlci0+Y3JlYXRlQXNzZXRGb3JVUkwodXJsLCBp
bmhlcml0VVJJKTsKICAgICBzZXREZWxheUNhbGxiYWNrcyhmYWxzZSk7CiB9CiAKQEAgLTEzMjQs
MTMgKzEzMjcsMjEgQEAgdm9pZCBBVkZXcmFwcGVyOjpkaXNjb25uZWN0QW5kRGVsZXRlQVZGVwog
ICAgIGRpc3BhdGNoX2FzeW5jX2YoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgY29udGV4dCwg
ZGVzdHJveUFWRldyYXBwZXIpOwogfQogCi12b2lkIEFWRldyYXBwZXI6OmNyZWF0ZUFzc2V0Rm9y
VVJMKGNvbnN0IFN0cmluZyYgdXJsKQordm9pZCBBVkZXcmFwcGVyOjpjcmVhdGVBc3NldEZvclVS
TChjb25zdCBTdHJpbmcmIHVybCwgYm9vbCBpbmhlcml0VVJJKQogewogICAgIEFTU0VSVCghYXZB
c3NldCgpKTsKIAogICAgIFJldGFpblB0cjxDRlVSTFJlZj4gdXJsUmVmID0gVVJMKFBhcnNlZFVS
TFN0cmluZywgdXJsKS5jcmVhdGVDRlVSTCgpOwogCi0gICAgQVZDRlVSTEFzc2V0UmVmIGFzc2V0
UmVmID0gQVZDRlVSTEFzc2V0Q3JlYXRlV2l0aFVSTEFuZE9wdGlvbnMoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgdXJsUmVmLmdldCgpLCAwLCBtX25vdGlmaWNhdGlvblF1ZXVlKTsKKyAgICBSZXRhaW5Q
dHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4gb3B0aW9uc1JlZiA9IGFkb3B0Q0YoQ0ZEaWN0aW9u
YXJ5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCAma0NGVHlwZURpY3Rpb25h
cnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CisKKyAg
ICBpZiAoaW5oZXJpdFVSSSkgeworICAgICAgICBib29sIHZhbHVlID0gdHJ1ZTsKKyAgICAgICAg
UmV0YWluUHRyPENGTnVtYmVyUmVmPiBpbmhlcml0VVJJVmFsID0gYWRvcHRDRihDRk51bWJlckNy
ZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJTSW50OFR5cGUsICZ2YWx1ZSkpOwor
ICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShvcHRpb25zUmVmLmdldCgpLCBBVkNGVVJMQXNz
ZXRJbmhlcml0VVJJUXVlcnlDb21wb25lbnRGcm9tUmVmZXJlbmNpbmdVUklLZXksIGluaGVyaXRV
UklWYWwuZ2V0KCkpOworICAgIH0KKworICAgIEFWQ0ZVUkxBc3NldFJlZiBhc3NldFJlZiA9IEFW
Q0ZVUkxBc3NldENyZWF0ZVdpdGhVUkxBbmRPcHRpb25zKGtDRkFsbG9jYXRvckRlZmF1bHQsIHVy
bFJlZi5nZXQoKSwgb3B0aW9uc1JlZi5nZXQoKSwgbV9ub3RpZmljYXRpb25RdWV1ZSk7CiAgICAg
bV9hdkFzc2V0ID0gYWRvcHRDRihhc3NldFJlZik7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQy5tbQkocmV2aXNpb24gMTY1NzE1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQAogI2ltcG9ydCAiRnJhbWVWaWV3
LmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHQuaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4
dENHLmgiCisjaW1wb3J0ICJIVE1MTmFtZXMuaCIKICNpbXBvcnQgIkluYmFuZFRleHRUcmFja1By
aXZhdGVBVkZPYmpDLmgiCiAjaW1wb3J0ICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZG
T2JqQy5oIgogI2ltcG9ydCAiT3V0T2ZCYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oIgpAQCAtNjIs
NiArNjMsNyBAQAogI2ltcG9ydCA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW1wb3J0IDx3dGYvRnVu
Y3Rpb25hbC5oPgogI2ltcG9ydCA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2ltcG9ydCA8d3RmL3Rl
eHQvU3RyaW5nQnVpbGRlci5oPgogCiAjaWYgRU5BQkxFKEFWRl9DQVBUSU9OUykKICNpbmNsdWRl
ICJUZXh0VHJhY2suaCIKQEAgLTEzMiw2ICsxMzQsNyBAQCBTT0ZUX0xJTktfUE9JTlRFUihBVkZv
dW5kYXRpb24sIEFWTWVkaWFUCiBTT0ZUX0xJTktfUE9JTlRFUihBVkZvdW5kYXRpb24sIEFWTWVk
aWFUeXBlVmlkZW8sIE5TU3RyaW5nICopCiBTT0ZUX0xJTktfUE9JTlRFUihBVkZvdW5kYXRpb24s
IEFWTWVkaWFUeXBlQXVkaW8sIE5TU3RyaW5nICopCiBTT0ZUX0xJTktfUE9JTlRFUihBVkZvdW5k
YXRpb24sIEFWUGxheWVySXRlbURpZFBsYXlUb0VuZFRpbWVOb3RpZmljYXRpb24sIE5TU3RyaW5n
ICopCitTT0ZUX0xJTktfUE9JTlRFUihBVkZvdW5kYXRpb24sIEFWVVJMQXNzZXRJbmhlcml0VVJJ
UXVlcnlDb21wb25lbnRGcm9tUmVmZXJlbmNpbmdVUklLZXksIE5TU3RyaW5nICopCiBTT0ZUX0xJ
TktfUE9JTlRFUihBVkZvdW5kYXRpb24sIEFWQXNzZXRJbWFnZUdlbmVyYXRvckFwZXJ0dXJlTW9k
ZUNsZWFuQXBlcnR1cmUsIE5TU3RyaW5nICopCiBTT0ZUX0xJTktfUE9JTlRFUihBVkZvdW5kYXRp
b24sIEFWVVJMQXNzZXRSZWZlcmVuY2VSZXN0cmljdGlvbnNLZXksIE5TU3RyaW5nICopCiBTT0ZU
X0xJTktfUE9JTlRFUihBVkZvdW5kYXRpb24sIEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemVBc3Bl
Y3QsIE5TU3RyaW5nICopCkBAIC0xNTMsNiArMTU2LDcgQEAgU09GVF9MSU5LX0NPTlNUQU5UKENv
cmVNZWRpYSwga0NNVGltZVplcgogI2RlZmluZSBBVk1lZGlhVHlwZVZpZGVvIGdldEFWTWVkaWFU
eXBlVmlkZW8oKQogI2RlZmluZSBBVk1lZGlhVHlwZUF1ZGlvIGdldEFWTWVkaWFUeXBlQXVkaW8o
KQogI2RlZmluZSBBVlBsYXllckl0ZW1EaWRQbGF5VG9FbmRUaW1lTm90aWZpY2F0aW9uIGdldEFW
UGxheWVySXRlbURpZFBsYXlUb0VuZFRpbWVOb3RpZmljYXRpb24oKQorI2RlZmluZSBBVlVSTEFz
c2V0SW5oZXJpdFVSSVF1ZXJ5Q29tcG9uZW50RnJvbVJlZmVyZW5jaW5nVVJJS2V5IGdldEFWVVJM
QXNzZXRJbmhlcml0VVJJUXVlcnlDb21wb25lbnRGcm9tUmVmZXJlbmNpbmdVUklLZXkoKQogI2Rl
ZmluZSBBVkFzc2V0SW1hZ2VHZW5lcmF0b3JBcGVydHVyZU1vZGVDbGVhbkFwZXJ0dXJlIGdldEFW
QXNzZXRJbWFnZUdlbmVyYXRvckFwZXJ0dXJlTW9kZUNsZWFuQXBlcnR1cmUoKQogI2RlZmluZSBB
VlVSTEFzc2V0UmVmZXJlbmNlUmVzdHJpY3Rpb25zS2V5IGdldEFWVVJMQXNzZXRSZWZlcmVuY2VS
ZXN0cmljdGlvbnNLZXkoKQogI2RlZmluZSBBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0
IGdldEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3QoKQpAQCAtNjA5LDcgKzYxMywxMCBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6CiAKICAgICBpZiAoW2hl
YWRlckZpZWxkcy5nZXQoKSBjb3VudF0pCiAgICAgICAgIFtvcHRpb25zLmdldCgpIHNldE9iamVj
dDpoZWFkZXJGaWVsZHMuZ2V0KCkgZm9yS2V5OkAiQVZVUkxBc3NldEhUVFBIZWFkZXJGaWVsZHNL
ZXkiXTsKLQorICAgIAorICAgIGlmIChwbGF5ZXIoKS0+ZG9lc0hhdmVBdHRyaWJ1dGUoSFRNTE5h
bWVzOjp4X2l0dW5lc19pbmhlcml0X3VyaV9xdWVyeV9jb21wb25lbnRBdHRyKSkKKyAgICAgICAg
W29wdGlvbnMuZ2V0KCkgc2V0T2JqZWN0OiBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6IFRSVUVd
IGZvcktleTogQVZVUkxBc3NldEluaGVyaXRVUklRdWVyeUNvbXBvbmVudEZyb21SZWZlcmVuY2lu
Z1VSSUtleV07CisgICAgCiAjaWYgRU5BQkxFKEFWRl9DQVBUSU9OUykKICAgICBjb25zdCBWZWN0
b3I8UmVmUHRyPFBsYXRmb3JtVGV4dFRyYWNrPj4mIG91dE9mQmFuZFRyYWNrU291cmNlcyA9IHBs
YXllcigpLT5vdXRPZkJhbmRUcmFja1NvdXJjZXMoKTsKICAgICBpZiAoIW91dE9mQmFuZFRyYWNr
U291cmNlcy5pc0VtcHR5KCkpIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcmVm
ZXJlbmNlc1N0b3JlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBy
ZWZlcmVuY2VzU3RvcmUuaAkocmV2aXNpb24gMTY1NzE1KQorKysgU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuaAkod29ya2luZyBjb3B5KQpAQCAtMjE0LDcgKzIxNCw4
IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogICAgIG1hY3JvKEFsd2F5c1VzZUFjY2VsZXJhdGVkT3Zl
cmZsb3dTY3JvbGwsIGFsd2F5c1VzZUFjY2VsZXJhdGVkT3ZlcmZsb3dTY3JvbGwsIEJvb2wsIGJv
b2wsIGZhbHNlKSBcCiAgICAgbWFjcm8oUGFzc3dvcmRFY2hvRW5hYmxlZCwgcGFzc3dvcmRFY2hv
RW5hYmxlZCwgQm9vbCwgYm9vbCwgREVGQVVMVF9QQVNTV09SRF9FQ0hPX0VOQUJMRUQpIFwKICAg
ICBtYWNybyhJbWFnZUNvbnRyb2xzRW5hYmxlZCwgaW1hZ2VDb250cm9sc0VuYWJsZWQsIEJvb2ws
IGJvb2wsIGZhbHNlKSBcCi0KKyAgICBtYWNybyhFbmFibGVJbmhlcml0VVJJUXVlcnlDb21wb25l
bnQsIGVuYWJsZUluaGVyaXRVUklRdWVyeUNvbXBvbmVudCwgQm9vbCwgYm9vbCwgZmFsc2UpIFwK
KyAgICAKICNkZWZpbmUgRk9SX0VBQ0hfV0VCS0lUX0RPVUJMRV9QUkVGRVJFTkNFKG1hY3JvKSBc
CiAgICAgbWFjcm8oUERGU2NhbGVGYWN0b3IsIHBkZlNjYWxlRmFjdG9yLCBEb3VibGUsIGRvdWJs
ZSwgMCkgXAogICAgIG1hY3JvKEluY3JlbWVudGFsUmVuZGVyaW5nU3VwcHJlc3Npb25UaW1lb3V0
LCBpbmNyZW1lbnRhbFJlbmRlcmluZ1N1cHByZXNzaW9uVGltZW91dCwgRG91YmxlLCBkb3VibGUs
IDUpIFwKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2Vz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVm
ZXJlbmNlcy5jcHAJKHJldmlzaW9uIDE2NTcxNSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI1NSwzICsxMjU1
LDEzIEBAIGJvb2wgV0tQcmVmZXJlbmNlc0dldFRlbGVwaG9uZU51bWJlclBhcnMKIHsKICAgICBy
ZXR1cm4gdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+dGVsZXBob25lTnVtYmVyUGFyc2luZ0VuYWJs
ZWQoKTsKIH0KKwordm9pZCBXS1ByZWZlcmVuY2VzU2V0RW5hYmxlSW5oZXJpdFVSSVF1ZXJ5Q29t
cG9uZW50KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIGJvb2wgZW5hYmxlZCkKK3sK
KyAgICB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5zZXRFbmFibGVJbmhlcml0VVJJUXVlcnlDb21w
b25lbnQoZW5hYmxlZCk7Cit9CisKK2Jvb2wgV0tQcmVmZXJlbmNlc0dldEVuYWJsZUluaGVyaXRV
UklRdWVyeUNvbXBvbmVudChXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmKQoreworICAg
IHJldHVybiB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5lbmFibGVJbmhlcml0VVJJUXVlcnlDb21w
b25lbnQoKTsKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZl
cmVuY2VzUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oCShyZXZpc2lvbiAxNjU3MTUpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMzIxLDcgKzMyMSwxMSBAQCBXS19FWFBPUlQgYm9vbCBXS1ByZWZlcmVuY2VzR2V0U2hv
dWxkQ29uCiAvLyBEZWZhdWx0IHRvIGZhbHNlLgogV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNl
c1NldFRlbGVwaG9uZU51bWJlclBhcnNpbmdFbmFibGVkKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVy
ZW5jZXNSZWYsIGJvb2wgZW5hYmxlZCk7CiBXS19FWFBPUlQgYm9vbCBXS1ByZWZlcmVuY2VzR2V0
VGVsZXBob25lTnVtYmVyUGFyc2luZ0VuYWJsZWQoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNl
c1JlZik7Ci0KKyAgICAKKy8vIERlZmF1bHQgdG8gZmFsc2UuCitXS19FWFBPUlQgdm9pZCBXS1By
ZWZlcmVuY2VzU2V0RW5hYmxlSW5oZXJpdFVSSVF1ZXJ5Q29tcG9uZW50KFdLUHJlZmVyZW5jZXNS
ZWYgcHJlZmVyZW5jZXNSZWYsIGJvb2wgZW5hYmxlZCk7CitXS19FWFBPUlQgYm9vbCBXS1ByZWZl
cmVuY2VzR2V0RW5hYmxlSW5oZXJpdFVSSVF1ZXJ5Q29tcG9uZW50KFdLUHJlZmVyZW5jZXNSZWYg
cHJlZmVyZW5jZXNSZWYpOworICAgIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJl
dmlzaW9uIDE2NTcxNSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYyNCw2ICsyNjI0LDggQEAgdm9pZCBXZWJQYWdl
Ojp1cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBXZQogICAgIHNldHRpbmdzLnNldExheW91dEludGVy
dmFsKHN0ZDo6Y2hyb25vOjpkdXJhdGlvbl9jYXN0PHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHM+
KHN0ZDo6Y2hyb25vOjpkdXJhdGlvbjxkb3VibGU+KHN0b3JlLmdldERvdWJsZVZhbHVlRm9yS2V5
KFdlYlByZWZlcmVuY2VzS2V5OjpsYXlvdXRJbnRlcnZhbEtleSgpKSkpKTsKICAgICBzZXR0aW5n
cy5zZXRNYXhQYXJzZUR1cmF0aW9uKHN0b3JlLmdldERvdWJsZVZhbHVlRm9yS2V5KFdlYlByZWZl
cmVuY2VzS2V5OjptYXhQYXJzZUR1cmF0aW9uS2V5KCkpKTsKIAorICAgIHNldHRpbmdzLnNldEVu
YWJsZUluaGVyaXRVUklRdWVyeUNvbXBvbmVudChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2Vi
UHJlZmVyZW5jZXNLZXk6OmVuYWJsZUluaGVyaXRVUklRdWVyeUNvbXBvbmVudEtleSgpKSk7Cisg
ICAgCiAgICAgaWYgKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6
cGFnZVZpc2liaWxpdHlCYXNlZFByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWRLZXkoKSkpCiAgICAg
ICAgIG1fcHJvY2Vzc1N1cHByZXNzaW9uRGlzYWJsZWRCeVdlYlByZWZlcmVuY2Uuc3RvcCgpOwog
ICAgIGVsc2UKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NTcxNSkKKysrIFNvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisy
MDE0LTAzLTE2ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAg
IFByb3ZpZGUgcHJlZmVyZW5jZSB0byBlbmFibGUgYWRkaXRpb25hbCBBVkZvdW5kYXRpb24gb3B0
aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMw
Mjc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBX
ZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oOiBBZGRlZCBuZXcgcHJlZmVyZWNlLgor
ICAgICAgICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW06CisgICAgICAgICgrW1dlYlByZWZl
cmVuY2VzIGluaXRpYWxpemVdKTogSW5pdGlhbGl6ZSBwcmVmZXJlbmNlIHRvIGZhbHNlLgorICAg
ICAgICAoLVtXZWJQcmVmZXJlbmNlcyBpc0luaGVyaXRVUklRdWVyeUNvbXBvbmVudEVuYWJsZWRd
KTogQWRkZWQuCisgICAgICAgICgtW1dlYlByZWZlcmVuY2VzIHNldEVuYWJsZUluaGVyaXRVUklR
dWVyeUNvbXBvbmVudDpdKTogQWRkZWQuCisgICAgICAgICogV2ViVmlldy9XZWJQcmVmZXJlbmNl
c1ByaXZhdGUuaDoKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dl
YlZpZXcgX3ByZWZlcmVuY2VzQ2hhbmdlZDpdKTogSGFuZGxlIG5ldyBwcmVmZXJlbmNlLgorCiAy
MDE0LTAzLTE2ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1v
dmUgYWxsIGRlcHJlY2F0ZWRDaGFyYWN0ZXJzIHVzZSBmcm9tIFdlYktpdCBkaXJlY3RvcnkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5
c1ByaXZhdGUuaAkocmV2aXNpb24gMTY1NzE1KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjA5LDMgKzIw
OSw1IEBACiAjZGVmaW5lIFdlYktpdFRleHRGaWVsZFJlbW90ZUluc3BlY3Rpb25FbmFibGVkUHJl
ZmVyZW5jZUtleSBAIldlYktpdFRleHRGaWVsZFJlbW90ZUluc3BlY3Rpb25FbmFibGVkIgogI2Vu
ZGlmCiAjZW5kaWYKKworI2RlZmluZSBXZWJLaXRFbmFibGVJbmhlcml0VVJJUXVlcnlDb21wb25l
bnRQcmVmZXJlbmNlS2V5IEAiV2ViS2l0RW5hYmxlSW5oZXJpdFVSSVF1ZXJ5Q29tcG9uZW50IgpJ
bmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCShyZXZp
c2lvbiAxNjU3MTUpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2Vz
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwNSwgMjAwNiwgMjAwNywgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcsIDIwMTEsIDIwMTIsIDIwMTQg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogICAgICAgICAgIChDKSAyMDA2IEdy
YWhhbSBEZW5uaXMgKGdyYWhhbS5kZW5uaXNAZ21haWwuY29tKQogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApA
QCAtNTk4LDYgKzU5OCw3IEBAICsgKHZvaWQpaW5pdGlhbGl6ZQogI2lmIEVOQUJMRShJTUFHRV9D
T05UUk9MUykKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOk5PXSwgV2ViS2l0SW1h
Z2VDb250cm9sc0VuYWJsZWRQcmVmZXJlbmNlS2V5LAogI2VuZGlmCisgICAgICAgIFtOU051bWJl
ciBudW1iZXJXaXRoQm9vbDpOT10sIFdlYktpdEVuYWJsZUluaGVyaXRVUklRdWVyeUNvbXBvbmVu
dFByZWZlcmVuY2VLZXksCiAgICAgICAgIG5pbF07CiAKICNpZiAhUExBVEZPUk0oSU9TKQpAQCAt
MjE1Niw2ICsyMTU3LDE2IEBAIC0gKEJPT0wpaXNIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFi
bGUKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKKy0gKEJPT0wpaXNJbmhlcml0VVJJUXVlcnlDb21w
b25lbnRFbmFibGVkCit7CisgICAgcmV0dXJuIFtzZWxmIF9ib29sVmFsdWVGb3JLZXk6IFdlYktp
dEVuYWJsZUluaGVyaXRVUklRdWVyeUNvbXBvbmVudFByZWZlcmVuY2VLZXldOworfQorCistICh2
b2lkKXNldEVuYWJsZUluaGVyaXRVUklRdWVyeUNvbXBvbmVudDooQk9PTClmbGFnCit7CisgICAg
W3NlbGYgX3NldEJvb2xWYWx1ZTpmbGFnIGZvcktleTogV2ViS2l0RW5hYmxlSW5oZXJpdFVSSVF1
ZXJ5Q29tcG9uZW50UHJlZmVyZW5jZUtleV07Cit9CisKICNpZiBQTEFURk9STShJT1MpCiAtIChC
T09MKW1lZGlhUGxheWJhY2tBbGxvd3NBaXJQbGF5CiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmgJKHJldmlzaW9uIDE2NTcx
NSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI4Nyw2ICsyODcsOSBAQCBAaW50ZXJmYWNlIFdlYlByZWZlcmVu
Y2VzIChXZWJQcml2YXRlKQogLSAoQk9PTCltZWRpYVBsYXliYWNrQWxsb3dzQWlyUGxheTsKICNl
bmRpZgogCistIChCT09MKWlzSW5oZXJpdFVSSVF1ZXJ5Q29tcG9uZW50RW5hYmxlZDsKKy0gKHZv
aWQpc2V0RW5hYmxlSW5oZXJpdFVSSVF1ZXJ5Q29tcG9uZW50OihCT09MKWZsYWc7CisKIC8vIE90
aGVyIHByaXZhdGUgbWV0aG9kcwogI2lmIFRBUkdFVF9PU19JUEhPTkUKIC0gKHNpemVfdClfbWF4
aW11bUltYWdlU2l6ZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHJl
dmlzaW9uIDE2NTcxNSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQko
d29ya2luZyBjb3B5KQpAQCAtMjM5MSw2ICsyMzkxLDggQEAgLSAodm9pZClfcHJlZmVyZW5jZXND
aGFuZ2VkOihXZWJQcmVmZXJlbgogI2VuZGlmCiAKICAgICBzZXR0aW5ncy5zZXRTaG91bGRDb252
ZXJ0UG9zaXRpb25TdHlsZU9uQ29weShbcHJlZmVyZW5jZXMgc2hvdWxkQ29udmVydFBvc2l0aW9u
U3R5bGVPbkNvcHldKTsKKyAgICAKKyAgICBzZXR0aW5ncy5zZXRFbmFibGVJbmhlcml0VVJJUXVl
cnlDb21wb25lbnQoW3ByZWZlcmVuY2VzIGlzSW5oZXJpdFVSSVF1ZXJ5Q29tcG9uZW50RW5hYmxl
ZF0pOwogCiAgICAgc3dpdGNoIChbcHJlZmVyZW5jZXMgc3RvcmFnZUJsb2NraW5nUG9saWN5XSkg
ewogICAgIGNhc2UgV2ViQWxsb3dBbGxTdG9yYWdlOgpJbmRleDogU291cmNlL1dlYktpdC93aW4v
V2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93
aW4vV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgJKHJldmlzaW9uIDE2NTcxNSkKKysrIFNvdXJj
ZS9XZWJLaXQvd2luL1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xNjYsMyArMTY2LDUgQEAKICNkZWZpbmUgV2ViS2l0TW9ja1Njcm9sbGJhcnNFbmFibGVkUHJl
ZmVyZW5jZUtleSAiV2ViS2l0TW9ja1Njcm9sbGJhcnNFbmFibGVkIgogCiAjZGVmaW5lIFdlYktp
dFNjcmVlbkZvbnRTdWJzdGl0dXRpb25FbmFibGVkUHJlZmVyZW5jZUtleSAiV2ViS2l0U2NyZWVu
Rm9udFN1YnN0aXR1dGlvbkVuYWJsZWRQcmVmZXJlbmNlS2V5IgorCisjZGVmaW5lIFdlYktpdEVu
YWJsZUluaGVyaXRVUklRdWVyeUNvbXBvbmVudFByZWZlcmVuY2VLZXkgIldlYktpdEVuYWJsZUlu
aGVyaXRVUklRdWVyeUNvbXBvbmVudCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYlByZWZl
cmVuY2VzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNl
cy5jcHAJKHJldmlzaW9uIDE2NTcxNSkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYlByZWZlcmVu
Y2VzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgwLDYgKzI4MCw4IEBAIHZvaWQgV2ViUHJlZmVy
ZW5jZXM6OmluaXRpYWxpemVEZWZhdWx0U2UKIAogICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRl
ZmF1bHRzLCBDRlNUUihXZWJLaXRGdWxsU2NyZWVuRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZC
b29sZWFuRmFsc2UpOwogCisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RS
KFdlYktpdFJlcXVlc3RBbmltYXRpb25GcmFtZUVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9v
bGVhbkZhbHNlKTsKKwogICAgIGRlZmF1bHRTZXR0aW5ncyA9IGRlZmF1bHRzOwogfQogCkBAIC0x
ODAyLDMgKzE4MDQsMTQgQEAgSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6cmVxdWVzdEFuaW1hdGlv
bgogICAgIHJldHVybiBTX09LOwogfQogCitIUkVTVUxUIFdlYlByZWZlcmVuY2VzOjppc0luaGVy
aXRVUklRdWVyeUNvbXBvbmVudEVuYWJsZWQoQk9PTCogZW5hYmxlZCkKK3sKKyAgICAqZW5hYmxl
ZCA9IGJvb2xWYWx1ZUZvcktleShXZWJLaXRFbmFibGVJbmhlcml0VVJJUXVlcnlDb21wb25lbnRQ
cmVmZXJlbmNlS2V5KTsKKyAgICByZXR1cm4gU19PSzsKK30KKworSFJFU1VMVCBXZWJQcmVmZXJl
bmNlczo6c2V0RW5hYmxlSW5oZXJpdFVSSVF1ZXJ5Q29tcG9uZW50KEJPT0wgZW5hYmxlZCkKK3sK
KyAgICBzZXRCb29sVmFsdWUoV2ViS2l0RW5hYmxlSW5oZXJpdFVSSVF1ZXJ5Q29tcG9uZW50UHJl
ZmVyZW5jZUtleSwgZW5hYmxlZCk7CisgICAgcmV0dXJuIFNfT0s7Cit9CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
d2luL1dlYlByZWZlcmVuY2VzLmgJKHJldmlzaW9uIDE2NTcxNSkKKysrIFNvdXJjZS9XZWJLaXQv
d2luL1dlYlByZWZlcmVuY2VzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4Myw2ICs0ODMsOSBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNjcmVlbkZvbnRT
dWJzdGl0dXRpb25FbmFibGVkKEJPT0wqKTsKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgc2V0U2NyZWVuRm9udFN1YnN0aXR1dGlvbkVuYWJsZWQoQk9PTCk7CiAKKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaXNJbmhlcml0VVJJUXVlcnlDb21wb25l
bnRFbmFibGVkKEJPT0wqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
c2V0RW5hYmxlSW5oZXJpdFVSSVF1ZXJ5Q29tcG9uZW50KEJPT0wpOworCiAgICAgLy8gV2ViUHJl
ZmVyZW5jZXMKIAogICAgIC8vIFRoaXMgbWV0aG9kIGFjY2Vzc2VzIGEgZGlmZmVyZW50IHByZWZl
cmVuY2Uga2V5IHRoYW4gZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZC4KSW5kZXg6IFNvdXJjZS9XZWJL
aXQvd2luL1dlYlZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYlZp
ZXcuY3BwCShyZXZpc2lvbiAxNjU3MTUpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTA1MSw3ICs1MDUxLDcgQEAgSFJFU1VMVCBXZWJWaWV3Ojpu
b3RpZnlQcmVmZXJlbmNlc0NoYW5nZQogICAgIGlmIChGQUlMRUQoaHIpKQogICAgICAgICByZXR1
cm4gaHI7CiAgICAgc2V0dGluZ3Muc2V0TW9ja1Njcm9sbGJhcnNFbmFibGVkKGVuYWJsZWQpOwot
CisgICAgaHIgPSBwcmVmc1ByaXZhdGUtPmlzSW5oZXJpdFVSSVF1ZXJ5Q29tcG9uZW50RW5hYmxl
ZCgmZW5hYmxlZCk7IC8vIE9PUFMhIERvbid0IGNoZWNraW4KICAgICBociA9IHByZWZzUHJpdmF0
ZS0+c2NyZWVuRm9udFN1YnN0aXR1dGlvbkVuYWJsZWQoJmVuYWJsZWQpOwogICAgIGlmIChGQUlM
RUQoaHIpKQogICAgICAgICByZXR1cm4gaHI7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9JbnRl
cmZhY2VzL0lXZWJQcmVmZXJlbmNlc1ByaXZhdGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYlByZWZlcmVuY2VzUHJpdmF0ZS5pZGwJKHJldmlzaW9u
IDE2NTcxNSkKKysrIFNvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYlByZWZlcmVuY2Vz
UHJpdmF0ZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTE0OCw0ICsxNDgsNyBAQCBpbnRlcmZhY2Ug
SVdlYlByZWZlcmVuY2VzUHJpdmF0ZSA6IElVbmtuCiAKICAgICBIUkVTVUxUIHNjcmVlbkZvbnRT
dWJzdGl0dXRpb25FbmFibGVkKFtvdXQsIHJldHZhbF0gQk9PTCogZW5hYmxlZCk7CiAgICAgSFJF
U1VMVCBzZXRTY3JlZW5Gb250U3Vic3RpdHV0aW9uRW5hYmxlZChbaW5dIEJPT0wgZW5hYmxlZCk7
CisKKyAgICBIUkVTVUxUIGlzSW5oZXJpdFVSSVF1ZXJ5Q29tcG9uZW50RW5hYmxlZChbb3V0LCBy
ZXR2YWxdIEJPT0wqIGVuYWJsZWQpOworICAgIEhSRVNVTFQgc2V0RW5hYmxlSW5oZXJpdFVSSVF1
ZXJ5Q29tcG9uZW50KFtpbl0gQk9PTCBlbmFibGVkKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>226935</attachid>
            <date>2014-03-17 10:18:34 -0700</date>
            <delta_ts>2014-03-17 13:16:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-130275-20140317101812.patch</filename>
            <type>text/plain</type>
            <size>25397</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NTcxNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDE0LTAzLTE2ICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFByb3ZpZGUgcHJlZmVyZW5j
ZSB0byBlbmFibGUgYWRkaXRpb25hbCBBVkZvdW5kYXRpb24gb3B0aW9ucworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMwMjc1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZG9lc0hhdmVBdHRy
aWJ1dGUpOiBBZGRlZC4KKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAg
ICAgKiBwYWdlL1NldHRpbmdzLmluOiBBZGQgbmV3IGF0dHJpYnV0ZS4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllcjo6ZG9lc0hhdmVBdHRyaWJ1dGUpOiBBZGRlZCBzdHViIHRvIGNhbGwgcHJpdmF0ZSBwbGF5
ZXIgb2JqZWN0J3MKKyAgICAgICAgaW1wbGVtZW50YXRpb24gb2YgZG9lc0hhdmVBdHRyaWJ1dGUu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyQ2xpZW50Ojpkb2VzSGF2ZUF0dHJpYnV0ZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbkNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbkNGOjpBVkZXcmFwcGVyOjpjcmVhdGVBc3NldEZvclVSTCk6IENoZWNrIHRoZSA8bWVk
aWE+IG9iamVjdCwKKyAgICAgICAgYW5kIG5vdGlmeSBBVkZvdW5kYXRpb25DRiB0byB1c2UgVVJJ
IG9wdGlvbiBpZiByZWxldmFudC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlQVZB
c3NldEZvclVSTCk6IENoZWNrIHRoZSA8bWVkaWE+IG9iamVjdCwKKyAgICAgICAgYW5kIG5vdGlm
eSBBVkZvdW5kYXRpb24gdG8gdXNlIFVSSSBvcHRpb24gaWYgcmVsZXZhbnQuCisKIDIwMTQtMDMt
MTYgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3Rv
cjogZ2VuZXJhdGVkIGJhY2tlbmQgY29tbWFuZHMgc2hvdWxkIHJlZmxlY3QgYnVpbGQgc3lzdGVt
IEVOQUJMRSBzZXR0aW5ncwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRl
TmFtZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRl
TmFtZXMuaW4JKHJldmlzaW9uIDE2NTcxNSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0
dHJpYnV0ZU5hbWVzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0zNTYsMyArMzU2LDQgQEAgeC13ZWJr
aXQtaW1hZ2VtZW51CiB3ZWJraXQtcGxheXNpbmxpbmUKIHgtd2Via2l0LWFpcnBsYXkKIHgtd2Vi
a2l0LXdpcmVsZXNzdmlkZW9wbGF5YmFja2Rpc2FibGVkCit4LWl0dW5lcy1pbmhlcml0LXVyaS1x
dWVyeS1jb21wb25lbnQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcAkocmV2aXNpb24gMTY1NzE1KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTk3Myw2ICs1OTczLDIwIEBAIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6ZGlkUmVjZWl2ZVJlbW90ZUMKICAgICB9CiB9CiAKK2Jvb2wgSFRNTE1l
ZGlhRWxlbWVudDo6ZG9lc0hhdmVBdHRyaWJ1dGUoY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1
dGUpIGNvbnN0Cit7CisgICAgUXVhbGlmaWVkTmFtZSBhdHRyaWJ1dGVOYW1lKG51bGxBdG9tLCBh
dHRyaWJ1dGUsIG51bGxBdG9tKTsKKyAgICBpZiAoIWZhc3RIYXNBdHRyaWJ1dGUoYXR0cmlidXRl
TmFtZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBpZiAoU2V0dGluZ3MqIHNl
dHRpbmdzID0gZG9jdW1lbnQoKS5zZXR0aW5ncygpKSB7CisgICAgICAgIGlmIChhdHRyaWJ1dGVO
YW1lID09IEhUTUxOYW1lczo6eF9pdHVuZXNfaW5oZXJpdF91cmlfcXVlcnlfY29tcG9uZW50QXR0
cikKKyAgICAgICAgICAgIHJldHVybiBzZXR0aW5ncy0+ZW5hYmxlSW5oZXJpdFVSSVF1ZXJ5Q29t
cG9uZW50KCk7CisgICAgfQorICAgIAorICAgIHJldHVybiB0cnVlOworfQorICAgIAogfQogCiAj
ZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCShyZXZpc2lv
biAxNjU3MTUpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMTMxLDYgKzEzMSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wg
c3VwcG9ydHNTYXZlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzU2Nhbm5pbmco
KSBjb25zdCBvdmVycmlkZTsKICAgICAKKyAgICB2aXJ0dWFsIGJvb2wgZG9lc0hhdmVBdHRyaWJ1
dGUoY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3Qgb3ZlcnJpZGU7CisKICAgICBQbGF0Zm9ybU1l
ZGlhIHBsYXRmb3JtTWVkaWEoKSBjb25zdDsKICAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxh
eWVyKCkgY29uc3Q7CiAjaWYgUExBVEZPUk0oSU9TKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9TZXR0aW5ncy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdz
LmluCShyZXZpc2lvbiAxNjU3MTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmlu
CSh3b3JraW5nIGNvcHkpCkBAIC0yMTgsMyArMjE4LDUgQEAgaW1hZ2VDb250cm9sc0VuYWJsZWQg
aW5pdGlhbD1mYWxzZSwgY29uZAogCiAjIEZJWE1FOiBUaGlzIGlzIHVubmVlZGVkIGFuZCBzaG91
bGQgYmUgcmVtb3ZlZC4KIGFsd2F5c1VzZUJhc2VsaW5lT2ZQcmltYXJ5Rm9udCBpbml0aWFsPWZh
bHNlCisKK2VuYWJsZUluaGVyaXRVUklRdWVyeUNvbXBvbmVudCBpbml0aWFsPWZhbHNlCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3Bw
CShyZXZpc2lvbiAxNjU3MTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MDMsNyArMTQwMywxNSBAQCB2b2lk
IE1lZGlhUGxheWVyRmFjdG9yeVN1cHBvcnQ6OmNhbGxSZWdpCiB7CiAgICAgcmVnaXN0ZXJNZWRp
YUVuZ2luZShhZGRNZWRpYUVuZ2luZSk7CiB9Ci0KKyAgICAKK2Jvb2wgTWVkaWFQbGF5ZXI6OmRv
ZXNIYXZlQXR0cmlidXRlKGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlKSBjb25zdAorewor
ICAgIGlmICghbV9tZWRpYVBsYXllckNsaWVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IAorICAgIHJldHVybiBtX21lZGlhUGxheWVyQ2xpZW50LT5kb2VzSGF2ZUF0dHJpYnV0ZShhdHRy
aWJ1dGUpOworfQorICAgIAogfQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAkocmV2aXNpb24gMTY1NzE1KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMTM5LDYgKzEzOSw3IEBAIGNsYXNzIEludFNpemU7CiBjbGFzcyBNZWRpYVBsYXllcjsK
IHN0cnVjdCBNZWRpYVBsYXllckZhY3Rvcnk7CiBjbGFzcyBQbGF0Zm9ybVRpbWVSYW5nZXM7Citj
bGFzcyBRdWFsaWZpZWROYW1lOwogCiAjaWYgUExBVEZPUk0oV0lOKSAmJiBVU0UoQVZGT1VOREFU
SU9OKQogc3RydWN0IEdyYXBoaWNzRGV2aWNlQWRhcHRlcjsKQEAgLTI0Nyw2ICsyNDgsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBIb3N0V2luZG93KiBtZWRpYVBsYXllckhvc3RXaW5kb3coKSB7
IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCBJbnRSZWN0IG1lZGlhUGxheWVyV2luZG93Q2xpcFJl
Y3QoKSB7IHJldHVybiBJbnRSZWN0KCk7IH0KICAgICB2aXJ0dWFsIENhY2hlZFJlc291cmNlTG9h
ZGVyKiBtZWRpYVBsYXllckNhY2hlZFJlc291cmNlTG9hZGVyKCkgeyByZXR1cm4gMDsgfQorICAg
IHZpcnR1YWwgYm9vbCBkb2VzSGF2ZUF0dHJpYnV0ZShjb25zdCBBdG9taWNTdHJpbmcmKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgIHZpcnR1
YWwgdm9pZCBtZWRpYVBsYXllckRpZEFkZEF1ZGlvVHJhY2soUGFzc1JlZlB0cjxBdWRpb1RyYWNr
UHJpdmF0ZT4pIHsgfQpAQCAtMjYyLDcgKzI2NCw2IEBAIHB1YmxpYzoKICNlbmRpZgogI2VuZGlm
CiAKLQogICAgIHZpcnR1YWwgYm9vbCBtZWRpYVBsYXllclNob3VsZFdhaXRGb3JSZXNwb25zZVRv
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSB7
IHJldHVybiBmYWxzZTsgfQogfTsKIApAQCAtMjk4LDYgKzI5OSw4IEBAIHB1YmxpYzoKICAgICBi
b29sIHN1cHBvcnRzU2F2ZSgpIGNvbnN0OwogICAgIGJvb2wgc3VwcG9ydHNTY2FubmluZygpIGNv
bnN0OwogICAgIGJvb2wgcmVxdWlyZXNJbW1lZGlhdGVDb21wb3NpdGluZygpIGNvbnN0OworICAg
IGJvb2wgZG9lc0hhdmVBdHRyaWJ1dGUoY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3Q7CisgICAg
CiAgICAgUGxhdGZvcm1NZWRpYSBwbGF0Zm9ybU1lZGlhKCkgY29uc3Q7CiAgICAgUGxhdGZvcm1M
YXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0OwogI2lmIFBMQVRGT1JNKElPUykKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9BVkZvdW5kYXRp
b25DRlNvZnRMaW5raW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0FWRm91bmRhdGlvbkNGU29mdExpbmtpbmcuaAkocmV2
aXNpb24gMTY1NzE1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL2NmL0FWRm91bmRhdGlvbkNGU29mdExpbmtpbmcuaAkod29ya2luZyBjb3B5KQpAQCAt
Mzg0LDQgKzM4NCw3IEBAIFNPRlRfTElOS19WQVJJQUJMRV9ETExfSU1QT1JUKEFWRm91bmRhdGkK
IFNPRlRfTElOS19WQVJJQUJMRV9ETExfSU1QT1JUKEFWRm91bmRhdGlvbkNGLCBBVkNGUGxheWVy
SXRlbUxlZ2libGVPdXRwdXRUZXh0U3R5bGluZ1Jlc29sdXRpb25Tb3VyY2VBbmRSdWxlc09ubHks
IGNvbnN0IENGU3RyaW5nUmVmKTsKICNkZWZpbmUgQVZDRlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0
VGV4dFN0eWxpbmdSZXNvbHV0aW9uU291cmNlQW5kUnVsZXNPbmx5IGdldEFWQ0ZQbGF5ZXJJdGVt
TGVnaWJsZU91dHB1dFRleHRTdHlsaW5nUmVzb2x1dGlvblNvdXJjZUFuZFJ1bGVzT25seSgpCiAK
K1NPRlRfTElOS19WQVJJQUJMRV9ETExfSU1QT1JUKEFWRm91bmRhdGlvbkNGLCBBVkNGVVJMQXNz
ZXRJbmhlcml0VVJJUXVlcnlDb21wb25lbnRGcm9tUmVmZXJlbmNpbmdVUklLZXksIGNvbnN0IENG
U3RyaW5nUmVmKTsKKyNkZWZpbmUgQVZDRlVSTEFzc2V0SW5oZXJpdFVSSVF1ZXJ5Q29tcG9uZW50
RnJvbVJlZmVyZW5jaW5nVVJJS2V5IGdldEFWQ0ZVUkxBc3NldEluaGVyaXRVUklRdWVyeUNvbXBv
bmVudEZyb21SZWZlcmVuY2luZ1VSSUtleSgpCisKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbkNGLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Yu
Y3BwCShyZXZpc2lvbiAxNjU3MTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwg
MjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEtMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTk4LDcgKzk4LDcgQEAgcHVibGljOgogICAgIHZvaWQg
ZGVzdHJveUltYWdlR2VuZXJhdG9yKCk7CiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNyZWF0
ZUltYWdlRm9yVGltZUluUmVjdChmbG9hdCwgY29uc3QgSW50UmVjdCYpOwogCi0gICAgdm9pZCBj
cmVhdGVBc3NldEZvclVSTChjb25zdCBTdHJpbmcmIHVybCk7CisgICAgdm9pZCBjcmVhdGVBc3Nl
dEZvclVSTChjb25zdCBTdHJpbmcmIHVybCwgYm9vbCBpbmhlcml0VVJJKTsKICAgICB2b2lkIHNl
dEFzc2V0KEFWQ0ZVUkxBc3NldFJlZik7CiAgICAgCiAgICAgdm9pZCBjcmVhdGVQbGF5ZXIoSURp
cmVjdDNERGV2aWNlOSopOwpAQCAtNDEyLDggKzQxMiwxMCBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbkNGOjpjCiAKICAgICBzZXREZWxheUNhbGxiYWNrcyh0cnVlKTsKIAor
ICAgIGJvb2wgaW5oZXJpdFVSSSA9IHBsYXllcigpLT5kb2VzSGF2ZUF0dHJpYnV0ZSgieC1pdHVu
ZXMtaW5oZXJpdC11cmktcXVlcnktY29tcG9uZW50Iik7CisKICAgICBtX2F2ZldyYXBwZXIgPSBu
ZXcgQVZGV3JhcHBlcih0aGlzKTsKLSAgICBtX2F2ZldyYXBwZXItPmNyZWF0ZUFzc2V0Rm9yVVJM
KHVybCk7CisgICAgbV9hdmZXcmFwcGVyLT5jcmVhdGVBc3NldEZvclVSTCh1cmwsIGluaGVyaXRV
UkkpOwogICAgIHNldERlbGF5Q2FsbGJhY2tzKGZhbHNlKTsKIH0KIApAQCAtMTMyNCwxMyArMTMy
NiwyMCBAQCB2b2lkIEFWRldyYXBwZXI6OmRpc2Nvbm5lY3RBbmREZWxldGVBVkZXCiAgICAgZGlz
cGF0Y2hfYXN5bmNfZihkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBjb250ZXh0LCBkZXN0cm95
QVZGV3JhcHBlcik7CiB9CiAKLXZvaWQgQVZGV3JhcHBlcjo6Y3JlYXRlQXNzZXRGb3JVUkwoY29u
c3QgU3RyaW5nJiB1cmwpCit2b2lkIEFWRldyYXBwZXI6OmNyZWF0ZUFzc2V0Rm9yVVJMKGNvbnN0
IFN0cmluZyYgdXJsLCBib29sIGluaGVyaXRVUkkpCiB7CiAgICAgQVNTRVJUKCFhdkFzc2V0KCkp
OwogCiAgICAgUmV0YWluUHRyPENGVVJMUmVmPiB1cmxSZWYgPSBVUkwoUGFyc2VkVVJMU3RyaW5n
LCB1cmwpLmNyZWF0ZUNGVVJMKCk7CiAKLSAgICBBVkNGVVJMQXNzZXRSZWYgYXNzZXRSZWYgPSBB
VkNGVVJMQXNzZXRDcmVhdGVXaXRoVVJMQW5kT3B0aW9ucyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB1
cmxSZWYuZ2V0KCksIDAsIG1fbm90aWZpY2F0aW9uUXVldWUpOworICAgIFJldGFpblB0cjxDRk11
dGFibGVEaWN0aW9uYXJ5UmVmPiBvcHRpb25zUmVmID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVh
dGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNh
bGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKKworICAgIGlmIChp
bmhlcml0VVJJKSB7CisgICAgICAgIFJldGFpblB0cjxDRk51bWJlclJlZj4gaW5oZXJpdFVSSVZh
bCA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVy
U0ludDhUeXBlLCAmaW5oZXJpdFVSSSkpOworICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShv
cHRpb25zUmVmLmdldCgpLCBBVkNGVVJMQXNzZXRJbmhlcml0VVJJUXVlcnlDb21wb25lbnRGcm9t
UmVmZXJlbmNpbmdVUklLZXksIGluaGVyaXRVUklWYWwuZ2V0KCkpOworICAgIH0KKworICAgIEFW
Q0ZVUkxBc3NldFJlZiBhc3NldFJlZiA9IEFWQ0ZVUkxBc3NldENyZWF0ZVdpdGhVUkxBbmRPcHRp
b25zKGtDRkFsbG9jYXRvckRlZmF1bHQsIHVybFJlZi5nZXQoKSwgb3B0aW9uc1JlZi5nZXQoKSwg
bV9ub3RpZmljYXRpb25RdWV1ZSk7CiAgICAgbV9hdkFzc2V0ID0gYWRvcHRDRihhc3NldFJlZik7
CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQkocmV2aXNpb24gMTY1NzE1KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQkod29ya2luZyBjb3B5KQpAQCAtNjIsNiAr
NjIsNyBAQAogI2ltcG9ydCA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW1wb3J0IDx3dGYvRnVuY3Rp
b25hbC5oPgogI2ltcG9ydCA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2ltcG9ydCA8d3RmL3RleHQv
U3RyaW5nQnVpbGRlci5oPgogCiAjaWYgRU5BQkxFKEFWRl9DQVBUSU9OUykKICNpbmNsdWRlICJU
ZXh0VHJhY2suaCIKQEAgLTEzMiw2ICsxMzMsNyBAQCBTT0ZUX0xJTktfUE9JTlRFUihBVkZvdW5k
YXRpb24sIEFWTWVkaWFUCiBTT0ZUX0xJTktfUE9JTlRFUihBVkZvdW5kYXRpb24sIEFWTWVkaWFU
eXBlVmlkZW8sIE5TU3RyaW5nICopCiBTT0ZUX0xJTktfUE9JTlRFUihBVkZvdW5kYXRpb24sIEFW
TWVkaWFUeXBlQXVkaW8sIE5TU3RyaW5nICopCiBTT0ZUX0xJTktfUE9JTlRFUihBVkZvdW5kYXRp
b24sIEFWUGxheWVySXRlbURpZFBsYXlUb0VuZFRpbWVOb3RpZmljYXRpb24sIE5TU3RyaW5nICop
CitTT0ZUX0xJTktfUE9JTlRFUihBVkZvdW5kYXRpb24sIEFWVVJMQXNzZXRJbmhlcml0VVJJUXVl
cnlDb21wb25lbnRGcm9tUmVmZXJlbmNpbmdVUklLZXksIE5TU3RyaW5nICopCiBTT0ZUX0xJTktf
UE9JTlRFUihBVkZvdW5kYXRpb24sIEFWQXNzZXRJbWFnZUdlbmVyYXRvckFwZXJ0dXJlTW9kZUNs
ZWFuQXBlcnR1cmUsIE5TU3RyaW5nICopCiBTT0ZUX0xJTktfUE9JTlRFUihBVkZvdW5kYXRpb24s
IEFWVVJMQXNzZXRSZWZlcmVuY2VSZXN0cmljdGlvbnNLZXksIE5TU3RyaW5nICopCiBTT0ZUX0xJ
TktfUE9JTlRFUihBVkZvdW5kYXRpb24sIEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3Qs
IE5TU3RyaW5nICopCkBAIC0xNTMsNiArMTU1LDcgQEAgU09GVF9MSU5LX0NPTlNUQU5UKENvcmVN
ZWRpYSwga0NNVGltZVplcgogI2RlZmluZSBBVk1lZGlhVHlwZVZpZGVvIGdldEFWTWVkaWFUeXBl
VmlkZW8oKQogI2RlZmluZSBBVk1lZGlhVHlwZUF1ZGlvIGdldEFWTWVkaWFUeXBlQXVkaW8oKQog
I2RlZmluZSBBVlBsYXllckl0ZW1EaWRQbGF5VG9FbmRUaW1lTm90aWZpY2F0aW9uIGdldEFWUGxh
eWVySXRlbURpZFBsYXlUb0VuZFRpbWVOb3RpZmljYXRpb24oKQorI2RlZmluZSBBVlVSTEFzc2V0
SW5oZXJpdFVSSVF1ZXJ5Q29tcG9uZW50RnJvbVJlZmVyZW5jaW5nVVJJS2V5IGdldEFWVVJMQXNz
ZXRJbmhlcml0VVJJUXVlcnlDb21wb25lbnRGcm9tUmVmZXJlbmNpbmdVUklLZXkoKQogI2RlZmlu
ZSBBVkFzc2V0SW1hZ2VHZW5lcmF0b3JBcGVydHVyZU1vZGVDbGVhbkFwZXJ0dXJlIGdldEFWQXNz
ZXRJbWFnZUdlbmVyYXRvckFwZXJ0dXJlTW9kZUNsZWFuQXBlcnR1cmUoKQogI2RlZmluZSBBVlVS
TEFzc2V0UmVmZXJlbmNlUmVzdHJpY3Rpb25zS2V5IGdldEFWVVJMQXNzZXRSZWZlcmVuY2VSZXN0
cmljdGlvbnNLZXkoKQogI2RlZmluZSBBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0IGdl
dEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3QoKQpAQCAtNjA5LDcgKzYxMiwxMCBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6CiAKICAgICBpZiAoW2hlYWRl
ckZpZWxkcy5nZXQoKSBjb3VudF0pCiAgICAgICAgIFtvcHRpb25zLmdldCgpIHNldE9iamVjdDpo
ZWFkZXJGaWVsZHMuZ2V0KCkgZm9yS2V5OkAiQVZVUkxBc3NldEhUVFBIZWFkZXJGaWVsZHNLZXki
XTsKLQorICAgIAorICAgIGlmIChwbGF5ZXIoKS0+ZG9lc0hhdmVBdHRyaWJ1dGUoIngtaXR1bmVz
LWluaGVyaXQtdXJpLXF1ZXJ5LWNvbXBvbmVudCIpKQorICAgICAgICBbb3B0aW9ucy5nZXQoKSBz
ZXRPYmplY3Q6IFtOU051bWJlciBudW1iZXJXaXRoQm9vbDogVFJVRV0gZm9yS2V5OiBBVlVSTEFz
c2V0SW5oZXJpdFVSSVF1ZXJ5Q29tcG9uZW50RnJvbVJlZmVyZW5jaW5nVVJJS2V5XTsKKyAgICAK
ICNpZiBFTkFCTEUoQVZGX0NBUFRJT05TKQogICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8UGxhdGZv
cm1UZXh0VHJhY2s+PiYgb3V0T2ZCYW5kVHJhY2tTb3VyY2VzID0gcGxheWVyKCktPm91dE9mQmFu
ZFRyYWNrU291cmNlcygpOwogICAgIGlmICghb3V0T2ZCYW5kVHJhY2tTb3VyY2VzLmlzRW1wdHko
KSkgewpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5o
CShyZXZpc2lvbiAxNjU3MTUpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5j
ZXNTdG9yZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTQsNyArMjE0LDggQEAgbmFtZXNwYWNlIFdl
YktpdCB7CiAgICAgbWFjcm8oQWx3YXlzVXNlQWNjZWxlcmF0ZWRPdmVyZmxvd1Njcm9sbCwgYWx3
YXlzVXNlQWNjZWxlcmF0ZWRPdmVyZmxvd1Njcm9sbCwgQm9vbCwgYm9vbCwgZmFsc2UpIFwKICAg
ICBtYWNybyhQYXNzd29yZEVjaG9FbmFibGVkLCBwYXNzd29yZEVjaG9FbmFibGVkLCBCb29sLCBi
b29sLCBERUZBVUxUX1BBU1NXT1JEX0VDSE9fRU5BQkxFRCkgXAogICAgIG1hY3JvKEltYWdlQ29u
dHJvbHNFbmFibGVkLCBpbWFnZUNvbnRyb2xzRW5hYmxlZCwgQm9vbCwgYm9vbCwgZmFsc2UpIFwK
LQorICAgIG1hY3JvKEVuYWJsZUluaGVyaXRVUklRdWVyeUNvbXBvbmVudCwgZW5hYmxlSW5oZXJp
dFVSSVF1ZXJ5Q29tcG9uZW50LCBCb29sLCBib29sLCBmYWxzZSkgXAorICAgIAogI2RlZmluZSBG
T1JfRUFDSF9XRUJLSVRfRE9VQkxFX1BSRUZFUkVOQ0UobWFjcm8pIFwKICAgICBtYWNybyhQREZT
Y2FsZUZhY3RvciwgcGRmU2NhbGVGYWN0b3IsIERvdWJsZSwgZG91YmxlLCAwKSBcCiAgICAgbWFj
cm8oSW5jcmVtZW50YWxSZW5kZXJpbmdTdXBwcmVzc2lvblRpbWVvdXQsIGluY3JlbWVudGFsUmVu
ZGVyaW5nU3VwcHJlc3Npb25UaW1lb3V0LCBEb3VibGUsIGRvdWJsZSwgNSkgXApJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAkocmV2
aXNpb24gMTY1NzE1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVy
ZW5jZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjU1LDMgKzEyNTUsMTMgQEAgYm9vbCBXS1By
ZWZlcmVuY2VzR2V0VGVsZXBob25lTnVtYmVyUGFycwogewogICAgIHJldHVybiB0b0ltcGwocHJl
ZmVyZW5jZXNSZWYpLT50ZWxlcGhvbmVOdW1iZXJQYXJzaW5nRW5hYmxlZCgpOwogfQorCit2b2lk
IFdLUHJlZmVyZW5jZXNTZXRFbmFibGVJbmhlcml0VVJJUXVlcnlDb21wb25lbnQoV0tQcmVmZXJl
bmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgYm9vbCBlbmFibGVkKQoreworICAgIHRvSW1wbChwcmVm
ZXJlbmNlc1JlZiktPnNldEVuYWJsZUluaGVyaXRVUklRdWVyeUNvbXBvbmVudChlbmFibGVkKTsK
K30KKworYm9vbCBXS1ByZWZlcmVuY2VzR2V0RW5hYmxlSW5oZXJpdFVSSVF1ZXJ5Q29tcG9uZW50
KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYpCit7CisgICAgcmV0dXJuIHRvSW1wbChw
cmVmZXJlbmNlc1JlZiktPmVuYWJsZUluaGVyaXRVUklRdWVyeUNvbXBvbmVudCgpOworfQpJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNQcml2YXRlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5j
ZXNQcml2YXRlLmgJKHJldmlzaW9uIDE2NTcxNSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMjEsNyArMzIx
LDExIEBAIFdLX0VYUE9SVCBib29sIFdLUHJlZmVyZW5jZXNHZXRTaG91bGRDb24KIC8vIERlZmF1
bHQgdG8gZmFsc2UuCiBXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0VGVsZXBob25lTnVt
YmVyUGFyc2luZ0VuYWJsZWQoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgYm9vbCBl
bmFibGVkKTsKIFdLX0VYUE9SVCBib29sIFdLUHJlZmVyZW5jZXNHZXRUZWxlcGhvbmVOdW1iZXJQ
YXJzaW5nRW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmKTsKLQorICAgIAor
Ly8gRGVmYXVsdCB0byBmYWxzZS4KK1dLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNTZXRFbmFi
bGVJbmhlcml0VVJJUXVlcnlDb21wb25lbnQoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1Jl
ZiwgYm9vbCBlbmFibGVkKTsKK1dLX0VYUE9SVCBib29sIFdLUHJlZmVyZW5jZXNHZXRFbmFibGVJ
bmhlcml0VVJJUXVlcnlDb21wb25lbnQoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZik7
CisgICAgCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpJbmRleDogU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMTY1NzE1KQor
KysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNjI0LDYgKzI2MjQsOCBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVByZWZlcmVu
Y2VzKGNvbnN0IFdlCiAgICAgc2V0dGluZ3Muc2V0TGF5b3V0SW50ZXJ2YWwoc3RkOjpjaHJvbm86
OmR1cmF0aW9uX2Nhc3Q8c3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcz4oc3RkOjpjaHJvbm86OmR1
cmF0aW9uPGRvdWJsZT4oc3RvcmUuZ2V0RG91YmxlVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNL
ZXk6OmxheW91dEludGVydmFsS2V5KCkpKSkpOwogICAgIHNldHRpbmdzLnNldE1heFBhcnNlRHVy
YXRpb24oc3RvcmUuZ2V0RG91YmxlVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6Om1heFBh
cnNlRHVyYXRpb25LZXkoKSkpOwogCisgICAgc2V0dGluZ3Muc2V0RW5hYmxlSW5oZXJpdFVSSVF1
ZXJ5Q29tcG9uZW50KHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6
ZW5hYmxlSW5oZXJpdFVSSVF1ZXJ5Q29tcG9uZW50S2V5KCkpKTsKKyAgICAKICAgICBpZiAoc3Rv
cmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjpwYWdlVmlzaWJpbGl0eUJh
c2VkUHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZEtleSgpKSkKICAgICAgICAgbV9wcm9jZXNzU3Vw
cHJlc3Npb25EaXNhYmxlZEJ5V2ViUHJlZmVyZW5jZS5zdG9wKCk7CiAgICAgZWxzZQpJbmRleDog
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMTY1NzE1KQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTQtMDMtMTYgIEJyZW50
IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgUHJvdmlkZSBwcmVmZXJl
bmNlIHRvIGVuYWJsZSBhZGRpdGlvbmFsIEFWRm91bmRhdGlvbiBvcHRpb25zCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzAyNzUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViUHJlZmVy
ZW5jZUtleXNQcml2YXRlLmg6IEFkZGVkIG5ldyBwcmVmZXJlY2UuCisgICAgICAgICogV2ViVmll
dy9XZWJQcmVmZXJlbmNlcy5tbToKKyAgICAgICAgKCtbV2ViUHJlZmVyZW5jZXMgaW5pdGlhbGl6
ZV0pOiBJbml0aWFsaXplIHByZWZlcmVuY2UgdG8gZmFsc2UuCisgICAgICAgICgtW1dlYlByZWZl
cmVuY2VzIGlzSW5oZXJpdFVSSVF1ZXJ5Q29tcG9uZW50RW5hYmxlZF0pOiBBZGRlZC4KKyAgICAg
ICAgKC1bV2ViUHJlZmVyZW5jZXMgc2V0RW5hYmxlSW5oZXJpdFVSSVF1ZXJ5Q29tcG9uZW50Ol0p
OiBBZGRlZC4KKyAgICAgICAgKiBXZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oOgorICAg
ICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBfcHJlZmVyZW5j
ZXNDaGFuZ2VkOl0pOiBIYW5kbGUgbmV3IHByZWZlcmVuY2UuCisKIDIwMTQtMDMtMTYgIERhcmlu
IEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBhbGwgZGVwcmVjYXRl
ZENoYXJhY3RlcnMgdXNlIGZyb20gV2ViS2l0IGRpcmVjdG9yeQpJbmRleDogU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCShyZXZp
c2lvbiAxNjU3MTUpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VL
ZXlzUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDksMyArMjA5LDUgQEAKICNkZWZpbmUg
V2ViS2l0VGV4dEZpZWxkUmVtb3RlSW5zcGVjdGlvbkVuYWJsZWRQcmVmZXJlbmNlS2V5IEAiV2Vi
S2l0VGV4dEZpZWxkUmVtb3RlSW5zcGVjdGlvbkVuYWJsZWQiCiAjZW5kaWYKICNlbmRpZgorCisj
ZGVmaW5lIFdlYktpdEVuYWJsZUluaGVyaXRVUklRdWVyeUNvbXBvbmVudFByZWZlcmVuY2VLZXkg
QCJXZWJLaXRFbmFibGVJbmhlcml0VVJJUXVlcnlDb21wb25lbnQiCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0JKHJldmlzaW9uIDE2NTcxNSkKKysr
IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3
LCAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwNSwgMjAwNiwgMjAwNywgMjAxMSwgMjAxMiwgMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKiAgICAgICAgICAgKEMpIDIwMDYgR3JhaGFtIERlbm5pcyAoZ3Jh
aGFtLmRlbm5pc0BnbWFpbC5jb20pCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC01OTgsNiArNTk4LDcg
QEAgKyAodm9pZClpbml0aWFsaXplCiAjaWYgRU5BQkxFKElNQUdFX0NPTlRST0xTKQogICAgICAg
ICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6Tk9dLCBXZWJLaXRJbWFnZUNvbnRyb2xzRW5hYmxl
ZFByZWZlcmVuY2VLZXksCiAjZW5kaWYKKyAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29s
Ok5PXSwgV2ViS2l0RW5hYmxlSW5oZXJpdFVSSVF1ZXJ5Q29tcG9uZW50UHJlZmVyZW5jZUtleSwK
ICAgICAgICAgbmlsXTsKIAogI2lmICFQTEFURk9STShJT1MpCkBAIC0yMTU2LDYgKzIxNTcsMTYg
QEAgLSAoQk9PTClpc0hpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZQogICAgIHJldHVybiBm
YWxzZTsKIH0KIAorLSAoQk9PTClpc0luaGVyaXRVUklRdWVyeUNvbXBvbmVudEVuYWJsZWQKK3sK
KyAgICByZXR1cm4gW3NlbGYgX2Jvb2xWYWx1ZUZvcktleTogV2ViS2l0RW5hYmxlSW5oZXJpdFVS
SVF1ZXJ5Q29tcG9uZW50UHJlZmVyZW5jZUtleV07Cit9CisKKy0gKHZvaWQpc2V0RW5hYmxlSW5o
ZXJpdFVSSVF1ZXJ5Q29tcG9uZW50OihCT09MKWZsYWcKK3sKKyAgICBbc2VsZiBfc2V0Qm9vbFZh
bHVlOmZsYWcgZm9yS2V5OiBXZWJLaXRFbmFibGVJbmhlcml0VVJJUXVlcnlDb21wb25lbnRQcmVm
ZXJlbmNlS2V5XTsKK30KKwogI2lmIFBMQVRGT1JNKElPUykKIC0gKEJPT0wpbWVkaWFQbGF5YmFj
a0FsbG93c0FpclBsYXkKIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJl
ZmVyZW5jZXNQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaAkocmV2aXNpb24gMTY1NzE1KQorKysgU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMjg3LDYgKzI4Nyw5IEBAIEBpbnRlcmZhY2UgV2ViUHJlZmVyZW5jZXMgKFdlYlByaXZhdGUp
CiAtIChCT09MKW1lZGlhUGxheWJhY2tBbGxvd3NBaXJQbGF5OwogI2VuZGlmCiAKKy0gKEJPT0wp
aXNJbmhlcml0VVJJUXVlcnlDb21wb25lbnRFbmFibGVkOworLSAodm9pZClzZXRFbmFibGVJbmhl
cml0VVJJUXVlcnlDb21wb25lbnQ6KEJPT0wpZmxhZzsKKwogLy8gT3RoZXIgcHJpdmF0ZSBtZXRo
b2RzCiAjaWYgVEFSR0VUX09TX0lQSE9ORQogLSAoc2l6ZV90KV9tYXhpbXVtSW1hZ2VTaXplOwpJ
bmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkocmV2aXNpb24gMTY1NzE1KQor
KysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0yMzkxLDYgKzIzOTEsOCBAQCAtICh2b2lkKV9wcmVmZXJlbmNlc0NoYW5nZWQ6KFdlYlByZWZl
cmVuCiAjZW5kaWYKIAogICAgIHNldHRpbmdzLnNldFNob3VsZENvbnZlcnRQb3NpdGlvblN0eWxl
T25Db3B5KFtwcmVmZXJlbmNlcyBzaG91bGRDb252ZXJ0UG9zaXRpb25TdHlsZU9uQ29weV0pOwor
ICAgIAorICAgIHNldHRpbmdzLnNldEVuYWJsZUluaGVyaXRVUklRdWVyeUNvbXBvbmVudChbcHJl
ZmVyZW5jZXMgaXNJbmhlcml0VVJJUXVlcnlDb21wb25lbnRFbmFibGVkXSk7CiAKICAgICBzd2l0
Y2ggKFtwcmVmZXJlbmNlcyBzdG9yYWdlQmxvY2tpbmdQb2xpY3ldKSB7CiAgICAgY2FzZSBXZWJB
bGxvd0FsbFN0b3JhZ2U6CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlS2V5
c1ByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNl
S2V5c1ByaXZhdGUuaAkocmV2aXNpb24gMTY1NzE1KQorKysgU291cmNlL1dlYktpdC93aW4vV2Vi
UHJlZmVyZW5jZUtleXNQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2NiwzICsxNjYsNSBA
QAogI2RlZmluZSBXZWJLaXRNb2NrU2Nyb2xsYmFyc0VuYWJsZWRQcmVmZXJlbmNlS2V5ICJXZWJL
aXRNb2NrU2Nyb2xsYmFyc0VuYWJsZWQiCiAKICNkZWZpbmUgV2ViS2l0U2NyZWVuRm9udFN1YnN0
aXR1dGlvbkVuYWJsZWRQcmVmZXJlbmNlS2V5ICJXZWJLaXRTY3JlZW5Gb250U3Vic3RpdHV0aW9u
RW5hYmxlZFByZWZlcmVuY2VLZXkiCisKKyNkZWZpbmUgV2ViS2l0RW5hYmxlSW5oZXJpdFVSSVF1
ZXJ5Q29tcG9uZW50UHJlZmVyZW5jZUtleSAiV2ViS2l0RW5hYmxlSW5oZXJpdFVSSVF1ZXJ5Q29t
cG9uZW50IgpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYlByZWZlcmVuY2VzLmNwcAkocmV2aXNpb24g
MTY1NzE1KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yODAsNiArMjgwLDggQEAgdm9pZCBXZWJQcmVmZXJlbmNlczo6aW5pdGlhbGl6
ZURlZmF1bHRTZQogCiAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdl
YktpdEZ1bGxTY3JlZW5FbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CiAK
KyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0UmVxdWVzdEFu
aW1hdGlvbkZyYW1lRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworCiAg
ICAgZGVmYXVsdFNldHRpbmdzID0gZGVmYXVsdHM7CiB9CiAKQEAgLTE4MDIsMyArMTgwNCwxNCBA
QCBIUkVTVUxUIFdlYlByZWZlcmVuY2VzOjpyZXF1ZXN0QW5pbWF0aW9uCiAgICAgcmV0dXJuIFNf
T0s7CiB9CiAKK0hSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OmlzSW5oZXJpdFVSSVF1ZXJ5Q29tcG9u
ZW50RW5hYmxlZChCT09MKiBlbmFibGVkKQoreworICAgICplbmFibGVkID0gYm9vbFZhbHVlRm9y
S2V5KFdlYktpdEVuYWJsZUluaGVyaXRVUklRdWVyeUNvbXBvbmVudFByZWZlcmVuY2VLZXkpOwor
ICAgIHJldHVybiBTX09LOworfQorCitIUkVTVUxUIFdlYlByZWZlcmVuY2VzOjpzZXRFbmFibGVJ
bmhlcml0VVJJUXVlcnlDb21wb25lbnQoQk9PTCBlbmFibGVkKQoreworICAgIHNldEJvb2xWYWx1
ZShXZWJLaXRFbmFibGVJbmhlcml0VVJJUXVlcnlDb21wb25lbnRQcmVmZXJlbmNlS2V5LCBlbmFi
bGVkKTsKKyAgICByZXR1cm4gU19PSzsKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYlBy
ZWZlcmVuY2VzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViUHJlZmVyZW5j
ZXMuaAkocmV2aXNpb24gMTY1NzE1KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViUHJlZmVyZW5j
ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNDgzLDYgKzQ4Myw5IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2NyZWVuRm9udFN1YnN0aXR1dGlvbkVuYWJs
ZWQoQk9PTCopOwogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRTY3Jl
ZW5Gb250U3Vic3RpdHV0aW9uRW5hYmxlZChCT09MKTsKIAorICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBpc0luaGVyaXRVUklRdWVyeUNvbXBvbmVudEVuYWJsZWQoQk9PTCop
OworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRFbmFibGVJbmhlcml0
VVJJUXVlcnlDb21wb25lbnQoQk9PTCk7CisKICAgICAvLyBXZWJQcmVmZXJlbmNlcwogCiAgICAg
Ly8gVGhpcyBtZXRob2QgYWNjZXNzZXMgYSBkaWZmZXJlbnQgcHJlZmVyZW5jZSBrZXkgdGhhbiBk
ZXZlbG9wZXJFeHRyYXNFbmFibGVkLgpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAJKHJldmlzaW9u
IDE2NTcxNSkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01MDUxLDcgKzUwNTEsNyBAQCBIUkVTVUxUIFdlYlZpZXc6Om5vdGlmeVByZWZlcmVuY2Vz
Q2hhbmdlCiAgICAgaWYgKEZBSUxFRChocikpCiAgICAgICAgIHJldHVybiBocjsKICAgICBzZXR0
aW5ncy5zZXRNb2NrU2Nyb2xsYmFyc0VuYWJsZWQoZW5hYmxlZCk7Ci0KKyAgICBociA9IHByZWZz
UHJpdmF0ZS0+aXNJbmhlcml0VVJJUXVlcnlDb21wb25lbnRFbmFibGVkKCZlbmFibGVkKTsgLy8g
T09QUyEgRG9uJ3QgY2hlY2tpbgogICAgIGhyID0gcHJlZnNQcml2YXRlLT5zY3JlZW5Gb250U3Vi
c3RpdHV0aW9uRW5hYmxlZCgmZW5hYmxlZCk7CiAgICAgaWYgKEZBSUxFRChocikpCiAgICAgICAg
IHJldHVybiBocjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYlByZWZl
cmVuY2VzUHJpdmF0ZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vSW50ZXJm
YWNlcy9JV2ViUHJlZmVyZW5jZXNQcml2YXRlLmlkbAkocmV2aXNpb24gMTY1NzE1KQorKysgU291
cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViUHJlZmVyZW5jZXNQcml2YXRlLmlkbAkod29y
a2luZyBjb3B5KQpAQCAtMTQ4LDQgKzE0OCw3IEBAIGludGVyZmFjZSBJV2ViUHJlZmVyZW5jZXNQ
cml2YXRlIDogSVVua24KIAogICAgIEhSRVNVTFQgc2NyZWVuRm9udFN1YnN0aXR1dGlvbkVuYWJs
ZWQoW291dCwgcmV0dmFsXSBCT09MKiBlbmFibGVkKTsKICAgICBIUkVTVUxUIHNldFNjcmVlbkZv
bnRTdWJzdGl0dXRpb25FbmFibGVkKFtpbl0gQk9PTCBlbmFibGVkKTsKKworICAgIEhSRVNVTFQg
aXNJbmhlcml0VVJJUXVlcnlDb21wb25lbnRFbmFibGVkKFtvdXQsIHJldHZhbF0gQk9PTCogZW5h
YmxlZCk7CisgICAgSFJFU1VMVCBzZXRFbmFibGVJbmhlcml0VVJJUXVlcnlDb21wb25lbnQoW2lu
XSBCT09MIGVuYWJsZWQpOwogfQpJbmRleDogVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMUJyb3dz
ZXJXaW5kb3dDb250cm9sbGVyLm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvTWluaUJyb3dzZXIvbWFj
L1dLMUJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0JKHJldmlzaW9uIDE2NTcxNSkKKysrIFRvb2xz
L01pbmlCcm93c2VyL21hYy9XSzFCcm93c2VyV2luZG93Q29udHJvbGxlci5tCSh3b3JraW5nIGNv
cHkpCkBAIC0yNyw2ICsyNyw5IEBACiAKICNpbXBvcnQgPFdlYktpdC9XZWJLaXQuaD4KICNpbXBv
cnQgPFdlYktpdC9XZWJWaWV3UHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dlYlByZWZlcmVu
Y2VzLmg+CisjaW1wb3J0IDxXZWJLaXQvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmg+CisjaW1wb3J0
IDxXZWJLaXQvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmg+CiAjaW1wb3J0ICJBcHBEZWxlZ2F0
ZS5oIgogCiBAaW50ZXJmYWNlIFdLMUJyb3dzZXJXaW5kb3dDb250cm9sbGVyICgpCkBAIC00NCw3
ICs0NywxMCBAQCAtICh2b2lkKWF3YWtlRnJvbU5pYgogICAgIFtfd2ViVmlldyBzZXRVSURlbGVn
YXRlOnNlbGZdOwogICAgIFtfd2ViVmlldyBzZXRSZXNvdXJjZUxvYWREZWxlZ2F0ZTpzZWxmXTsK
ICAgICBbX3dlYlZpZXcgc2V0UG9saWN5RGVsZWdhdGU6c2VsZl07Ci0KKyAgICAKKyAgICBXZWJQ
cmVmZXJlbmNlcyAqcHJlZmVyZW5jZXMgPSBbV2ViUHJlZmVyZW5jZXMgc3RhbmRhcmRQcmVmZXJl
bmNlc107CisgICAgW3ByZWZlcmVuY2VzIHNldEVuYWJsZUluaGVyaXRVUklRdWVyeUNvbXBvbmVu
dDpZRVNdOworICAgIAogICAgIFtjb250YWluZXJWaWV3IGFkZFN1YnZpZXc6X3dlYlZpZXddOwog
fQogCkluZGV4OiBXZWJLaXQueGN3b3Jrc3BhY2UveGNzaGFyZWRkYXRhL3hjc2NoZW1lcy9BbGwg
U291cmNlLnhjc2NoZW1lCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC54Y3dvcmtzcGFjZS94Y3NoYXJl
ZGRhdGEveGNzY2hlbWVzL0FsbCBTb3VyY2UueGNzY2hlbWUJKHJldmlzaW9uIDE2NTcxNSkKKysr
IFdlYktpdC54Y3dvcmtzcGFjZS94Y3NoYXJlZGRhdGEveGNzY2hlbWVzL0FsbCBTb3VyY2UueGNz
Y2hlbWUJKHdvcmtpbmcgY29weSkKQEAgLTExNiw2ICsxMTYsMTUgQEAKICAgICAgIGJ1aWxkQ29u
ZmlndXJhdGlvbiA9ICJEZWJ1ZyI+CiAgICAgICA8VGVzdGFibGVzPgogICAgICAgPC9UZXN0YWJs
ZXM+CisgICAgICA8TWFjcm9FeHBhbnNpb24+CisgICAgICAgICA8QnVpbGRhYmxlUmVmZXJlbmNl
CisgICAgICAgICAgICBCdWlsZGFibGVJZGVudGlmaWVyID0gInByaW1hcnkiCisgICAgICAgICAg
ICBCbHVlcHJpbnRJZGVudGlmaWVyID0gIjhEMTEwNzI2MDQ4NkNFQjgwMEU0NzA5MCIKKyAgICAg
ICAgICAgIEJ1aWxkYWJsZU5hbWUgPSAiTWluaUJyb3dzZXIuYXBwIgorICAgICAgICAgICAgQmx1
ZXByaW50TmFtZSA9ICJNaW5pQnJvd3NlciIKKyAgICAgICAgICAgIFJlZmVyZW5jZWRDb250YWlu
ZXIgPSAiY29udGFpbmVyOlRvb2xzL01pbmlCcm93c2VyL01pbmlCcm93c2VyLnhjb2RlcHJvaiI+
CisgICAgICAgICA8L0J1aWxkYWJsZVJlZmVyZW5jZT4KKyAgICAgIDwvTWFjcm9FeHBhbnNpb24+
CiAgICA8L1Rlc3RBY3Rpb24+CiAgICA8TGF1bmNoQWN0aW9uCiAgICAgICBzZWxlY3RlZERlYnVn
Z2VySWRlbnRpZmllciA9ICJYY29kZS5EZWJ1Z2dlckZvdW5kYXRpb24uRGVidWdnZXIuTExEQiIK
QEAgLTEyNSwxMCArMTM0LDE3IEBACiAgICAgICBidWlsZENvbmZpZ3VyYXRpb24gPSAiRGVidWci
CiAgICAgICBpZ25vcmVzUGVyc2lzdGVudFN0YXRlT25MYXVuY2ggPSAiWUVTIgogICAgICAgZGVi
dWdEb2N1bWVudFZlcnNpb25pbmcgPSAiWUVTIgotICAgICAgYWxsb3dMb2NhdGlvblNpbXVsYXRp
b24gPSAiWUVTIj4KLSAgICAgIDxQYXRoUnVubmFibGUKLSAgICAgICAgIEZpbGVQYXRoID0gIi9B
cHBsaWNhdGlvbnMvU2FmYXJpLmFwcC9Db250ZW50cy9NYWNPUy9TYWZhcmlGb3JXZWJLaXREZXZl
bG9wbWVudCI+Ci0gICAgICA8L1BhdGhSdW5uYWJsZT4KKyAgICAgIGFsbG93TG9jYXRpb25TaW11
bGF0aW9uID0gIllFUyIKKyAgICAgIHNob3dOb25Mb2NhbGl6ZWRTdHJpbmdzID0gIk5PIj4KKyAg
ICAgIDxCdWlsZGFibGVQcm9kdWN0UnVubmFibGU+CisgICAgICAgICA8QnVpbGRhYmxlUmVmZXJl
bmNlCisgICAgICAgICAgICBCdWlsZGFibGVJZGVudGlmaWVyID0gInByaW1hcnkiCisgICAgICAg
ICAgICBCbHVlcHJpbnRJZGVudGlmaWVyID0gIjhEMTEwNzI2MDQ4NkNFQjgwMEU0NzA5MCIKKyAg
ICAgICAgICAgIEJ1aWxkYWJsZU5hbWUgPSAiTWluaUJyb3dzZXIuYXBwIgorICAgICAgICAgICAg
Qmx1ZXByaW50TmFtZSA9ICJNaW5pQnJvd3NlciIKKyAgICAgICAgICAgIFJlZmVyZW5jZWRDb250
YWluZXIgPSAiY29udGFpbmVyOlRvb2xzL01pbmlCcm93c2VyL01pbmlCcm93c2VyLnhjb2RlcHJv
aiI+CisgICAgICAgICA8L0J1aWxkYWJsZVJlZmVyZW5jZT4KKyAgICAgIDwvQnVpbGRhYmxlUHJv
ZHVjdFJ1bm5hYmxlPgogICAgICAgPEFkZGl0aW9uYWxPcHRpb25zPgogICAgICAgPC9BZGRpdGlv
bmFsT3B0aW9ucz4KICAgIDwvTGF1bmNoQWN0aW9uPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>226945</attachid>
            <date>2014-03-17 12:19:17 -0700</date>
            <delta_ts>2014-03-17 12:55:04 -0700</delta_ts>
            <desc>Finalized after testing.</desc>
            <filename>bug-130275-20140317121854.patch</filename>
            <type>text/plain</type>
            <size>22418</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NTcxNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDE0LTAzLTE2ICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFByb3ZpZGUgcHJlZmVyZW5j
ZSB0byBlbmFibGUgYWRkaXRpb25hbCBBVkZvdW5kYXRpb24gb3B0aW9ucworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMwMjc1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZG9lc0hhdmVBdHRy
aWJ1dGUpOiBBZGRlZC4KKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAg
ICAgKiBwYWdlL1NldHRpbmdzLmluOiBBZGQgbmV3IGF0dHJpYnV0ZS4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllcjo6ZG9lc0hhdmVBdHRyaWJ1dGUpOiBBZGRlZCBzdHViIHRvIGNhbGwgcHJpdmF0ZSBwbGF5
ZXIgb2JqZWN0J3MKKyAgICAgICAgaW1wbGVtZW50YXRpb24gb2YgZG9lc0hhdmVBdHRyaWJ1dGUu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyQ2xpZW50Ojpkb2VzSGF2ZUF0dHJpYnV0ZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbkNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbkNGOjpBVkZXcmFwcGVyOjpjcmVhdGVBc3NldEZvclVSTCk6IENoZWNrIHRoZSA8bWVk
aWE+IG9iamVjdCwKKyAgICAgICAgYW5kIG5vdGlmeSBBVkZvdW5kYXRpb25DRiB0byB1c2UgVVJJ
IG9wdGlvbiBpZiByZWxldmFudC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlQVZB
c3NldEZvclVSTCk6IENoZWNrIHRoZSA8bWVkaWE+IG9iamVjdCwKKyAgICAgICAgYW5kIG5vdGlm
eSBBVkZvdW5kYXRpb24gdG8gdXNlIFVSSSBvcHRpb24gaWYgcmVsZXZhbnQuCisKIDIwMTQtMDMt
MTYgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3Rv
cjogZ2VuZXJhdGVkIGJhY2tlbmQgY29tbWFuZHMgc2hvdWxkIHJlZmxlY3QgYnVpbGQgc3lzdGVt
IEVOQUJMRSBzZXR0aW5ncwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRl
TmFtZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRl
TmFtZXMuaW4JKHJldmlzaW9uIDE2NTcxNSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0
dHJpYnV0ZU5hbWVzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0zNTYsMyArMzU2LDQgQEAgeC13ZWJr
aXQtaW1hZ2VtZW51CiB3ZWJraXQtcGxheXNpbmxpbmUKIHgtd2Via2l0LWFpcnBsYXkKIHgtd2Vi
a2l0LXdpcmVsZXNzdmlkZW9wbGF5YmFja2Rpc2FibGVkCit4LWl0dW5lcy1pbmhlcml0LXVyaS1x
dWVyeS1jb21wb25lbnQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcAkocmV2aXNpb24gMTY1NzE1KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTk3Myw2ICs1OTczLDIwIEBAIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6ZGlkUmVjZWl2ZVJlbW90ZUMKICAgICB9CiB9CiAKK2Jvb2wgSFRNTE1l
ZGlhRWxlbWVudDo6ZG9lc0hhdmVBdHRyaWJ1dGUoY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1
dGUpIGNvbnN0Cit7CisgICAgUXVhbGlmaWVkTmFtZSBhdHRyaWJ1dGVOYW1lKG51bGxBdG9tLCBh
dHRyaWJ1dGUsIG51bGxBdG9tKTsKKyAgICBpZiAoIWZhc3RIYXNBdHRyaWJ1dGUoYXR0cmlidXRl
TmFtZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBpZiAoU2V0dGluZ3MqIHNl
dHRpbmdzID0gZG9jdW1lbnQoKS5zZXR0aW5ncygpKSB7CisgICAgICAgIGlmIChhdHRyaWJ1dGVO
YW1lID09IEhUTUxOYW1lczo6eF9pdHVuZXNfaW5oZXJpdF91cmlfcXVlcnlfY29tcG9uZW50QXR0
cikKKyAgICAgICAgICAgIHJldHVybiBzZXR0aW5ncy0+ZW5hYmxlSW5oZXJpdFVSSVF1ZXJ5Q29t
cG9uZW50KCk7CisgICAgfQorICAgIAorICAgIHJldHVybiB0cnVlOworfQorICAgIAogfQogCiAj
ZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCShyZXZpc2lv
biAxNjU3MTUpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMTMxLDYgKzEzMSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wg
c3VwcG9ydHNTYXZlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzU2Nhbm5pbmco
KSBjb25zdCBvdmVycmlkZTsKICAgICAKKyAgICB2aXJ0dWFsIGJvb2wgZG9lc0hhdmVBdHRyaWJ1
dGUoY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3Qgb3ZlcnJpZGU7CisKICAgICBQbGF0Zm9ybU1l
ZGlhIHBsYXRmb3JtTWVkaWEoKSBjb25zdDsKICAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxh
eWVyKCkgY29uc3Q7CiAjaWYgUExBVEZPUk0oSU9TKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9TZXR0aW5ncy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdz
LmluCShyZXZpc2lvbiAxNjU3MTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmlu
CSh3b3JraW5nIGNvcHkpCkBAIC0yMTgsMyArMjE4LDUgQEAgaW1hZ2VDb250cm9sc0VuYWJsZWQg
aW5pdGlhbD1mYWxzZSwgY29uZAogCiAjIEZJWE1FOiBUaGlzIGlzIHVubmVlZGVkIGFuZCBzaG91
bGQgYmUgcmVtb3ZlZC4KIGFsd2F5c1VzZUJhc2VsaW5lT2ZQcmltYXJ5Rm9udCBpbml0aWFsPWZh
bHNlCisKK2VuYWJsZUluaGVyaXRVUklRdWVyeUNvbXBvbmVudCBpbml0aWFsPWZhbHNlCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3Bw
CShyZXZpc2lvbiAxNjU3MTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MDMsNyArMTQwMywxNSBAQCB2b2lk
IE1lZGlhUGxheWVyRmFjdG9yeVN1cHBvcnQ6OmNhbGxSZWdpCiB7CiAgICAgcmVnaXN0ZXJNZWRp
YUVuZ2luZShhZGRNZWRpYUVuZ2luZSk7CiB9Ci0KKyAgICAKK2Jvb2wgTWVkaWFQbGF5ZXI6OmRv
ZXNIYXZlQXR0cmlidXRlKGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlKSBjb25zdAorewor
ICAgIGlmICghbV9tZWRpYVBsYXllckNsaWVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IAorICAgIHJldHVybiBtX21lZGlhUGxheWVyQ2xpZW50LT5kb2VzSGF2ZUF0dHJpYnV0ZShhdHRy
aWJ1dGUpOworfQorICAgIAogfQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAkocmV2aXNpb24gMTY1NzE1KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMjQ3LDYgKzI0Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEhvc3RXaW5kb3cqIG1l
ZGlhUGxheWVySG9zdFdpbmRvdygpIHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIEludFJlY3Qg
bWVkaWFQbGF5ZXJXaW5kb3dDbGlwUmVjdCgpIHsgcmV0dXJuIEludFJlY3QoKTsgfQogICAgIHZp
cnR1YWwgQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIG1lZGlhUGxheWVyQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXIoKSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBib29sIGRvZXNIYXZlQXR0cmlidXRlKGNv
bnN0IEF0b21pY1N0cmluZyYpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICNpZiBFTkFCTEUo
VklERU9fVFJBQ0spCiAgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyRGlkQWRkQXVkaW9UcmFj
ayhQYXNzUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlPikgeyB9CkBAIC0yNjIsNyArMjYzLDYgQEAg
cHVibGljOgogI2VuZGlmCiAjZW5kaWYKIAotCiAgICAgdmlydHVhbCBib29sIG1lZGlhUGxheWVy
U2hvdWxkV2FpdEZvclJlc3BvbnNlVG9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSYpIHsgcmV0dXJuIGZhbHNlOyB9CiB9OwogCkBAIC0yOTgsNiAr
Mjk4LDggQEAgcHVibGljOgogICAgIGJvb2wgc3VwcG9ydHNTYXZlKCkgY29uc3Q7CiAgICAgYm9v
bCBzdXBwb3J0c1NjYW5uaW5nKCkgY29uc3Q7CiAgICAgYm9vbCByZXF1aXJlc0ltbWVkaWF0ZUNv
bXBvc2l0aW5nKCkgY29uc3Q7CisgICAgYm9vbCBkb2VzSGF2ZUF0dHJpYnV0ZShjb25zdCBBdG9t
aWNTdHJpbmcmKSBjb25zdDsKKyAgICAKICAgICBQbGF0Zm9ybU1lZGlhIHBsYXRmb3JtTWVkaWEo
KSBjb25zdDsKICAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Q7CiAjaWYg
UExBVEZPUk0oSU9TKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL2NmL0FWRm91bmRhdGlvbkNGU29mdExpbmtpbmcuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvQVZGb3VuZGF0
aW9uQ0ZTb2Z0TGlua2luZy5oCShyZXZpc2lvbiAxNjU3MTUpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvQVZGb3VuZGF0aW9uQ0ZTb2Z0TGlua2lu
Zy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zODQsNCArMzg0LDcgQEAgU09GVF9MSU5LX1ZBUklBQkxF
X0RMTF9JTVBPUlQoQVZGb3VuZGF0aQogU09GVF9MSU5LX1ZBUklBQkxFX0RMTF9JTVBPUlQoQVZG
b3VuZGF0aW9uQ0YsIEFWQ0ZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1dFRleHRTdHlsaW5nUmVzb2x1
dGlvblNvdXJjZUFuZFJ1bGVzT25seSwgY29uc3QgQ0ZTdHJpbmdSZWYpOwogI2RlZmluZSBBVkNG
UGxheWVySXRlbUxlZ2libGVPdXRwdXRUZXh0U3R5bGluZ1Jlc29sdXRpb25Tb3VyY2VBbmRSdWxl
c09ubHkgZ2V0QVZDRlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0VGV4dFN0eWxpbmdSZXNvbHV0aW9u
U291cmNlQW5kUnVsZXNPbmx5KCkKIAorU09GVF9MSU5LX1ZBUklBQkxFX0RMTF9JTVBPUlQoQVZG
b3VuZGF0aW9uQ0YsIEFWQ0ZVUkxBc3NldEluaGVyaXRVUklRdWVyeUNvbXBvbmVudEZyb21SZWZl
cmVuY2luZ1VSSUtleSwgY29uc3QgQ0ZTdHJpbmdSZWYpOworI2RlZmluZSBBVkNGVVJMQXNzZXRJ
bmhlcml0VVJJUXVlcnlDb21wb25lbnRGcm9tUmVmZXJlbmNpbmdVUklLZXkgZ2V0QVZDRlVSTEFz
c2V0SW5oZXJpdFVSSVF1ZXJ5Q29tcG9uZW50RnJvbVJlZmVyZW5jaW5nVVJJS2V5KCkKKwogI2Vu
ZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
Y2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAJKHJldmlzaW9uIDE2NTcxNSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25DRi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtOTgsNyArOTgs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZXN0cm95SW1hZ2VHZW5lcmF0b3IoKTsKICAgICBSZXRh
aW5QdHI8Q0dJbWFnZVJlZj4gY3JlYXRlSW1hZ2VGb3JUaW1lSW5SZWN0KGZsb2F0LCBjb25zdCBJ
bnRSZWN0Jik7CiAKLSAgICB2b2lkIGNyZWF0ZUFzc2V0Rm9yVVJMKGNvbnN0IFN0cmluZyYgdXJs
KTsKKyAgICB2b2lkIGNyZWF0ZUFzc2V0Rm9yVVJMKGNvbnN0IFN0cmluZyYgdXJsLCBib29sIGlu
aGVyaXRVUkkpOwogICAgIHZvaWQgc2V0QXNzZXQoQVZDRlVSTEFzc2V0UmVmKTsKICAgICAKICAg
ICB2b2lkIGNyZWF0ZVBsYXllcihJRGlyZWN0M0REZXZpY2U5Kik7CkBAIC00MTIsOCArNDEyLDEw
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OmMKIAogICAgIHNldERl
bGF5Q2FsbGJhY2tzKHRydWUpOwogCisgICAgYm9vbCBpbmhlcml0VVJJID0gcGxheWVyKCktPmRv
ZXNIYXZlQXR0cmlidXRlKCJ4LWl0dW5lcy1pbmhlcml0LXVyaS1xdWVyeS1jb21wb25lbnQiKTsK
KwogICAgIG1fYXZmV3JhcHBlciA9IG5ldyBBVkZXcmFwcGVyKHRoaXMpOwotICAgIG1fYXZmV3Jh
cHBlci0+Y3JlYXRlQXNzZXRGb3JVUkwodXJsKTsKKyAgICBtX2F2ZldyYXBwZXItPmNyZWF0ZUFz
c2V0Rm9yVVJMKHVybCwgaW5oZXJpdFVSSSk7CiAgICAgc2V0RGVsYXlDYWxsYmFja3MoZmFsc2Up
OwogfQogCkBAIC0xMzI0LDEzICsxMzI2LDE4IEBAIHZvaWQgQVZGV3JhcHBlcjo6ZGlzY29ubmVj
dEFuZERlbGV0ZUFWRlcKICAgICBkaXNwYXRjaF9hc3luY19mKGRpc3BhdGNoX2dldF9tYWluX3F1
ZXVlKCksIGNvbnRleHQsIGRlc3Ryb3lBVkZXcmFwcGVyKTsKIH0KIAotdm9pZCBBVkZXcmFwcGVy
OjpjcmVhdGVBc3NldEZvclVSTChjb25zdCBTdHJpbmcmIHVybCkKK3ZvaWQgQVZGV3JhcHBlcjo6
Y3JlYXRlQXNzZXRGb3JVUkwoY29uc3QgU3RyaW5nJiB1cmwsIGJvb2wgaW5oZXJpdFVSSSkKIHsK
ICAgICBBU1NFUlQoIWF2QXNzZXQoKSk7CiAKICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHVybFJl
ZiA9IFVSTChQYXJzZWRVUkxTdHJpbmcsIHVybCkuY3JlYXRlQ0ZVUkwoKTsKIAotICAgIEFWQ0ZV
UkxBc3NldFJlZiBhc3NldFJlZiA9IEFWQ0ZVUkxBc3NldENyZWF0ZVdpdGhVUkxBbmRPcHRpb25z
KGtDRkFsbG9jYXRvckRlZmF1bHQsIHVybFJlZi5nZXQoKSwgMCwgbV9ub3RpZmljYXRpb25RdWV1
ZSk7CisgICAgUmV0YWluUHRyPENGTXV0YWJsZURpY3Rpb25hcnlSZWY+IG9wdGlvbnNSZWYgPSBh
ZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwg
JmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNh
bGxCYWNrcykpOworCisgICAgaWYgKGluaGVyaXRVUkkpCisgICAgICAgIENGRGljdGlvbmFyeVNl
dFZhbHVlKG9wdGlvbnNSZWYuZ2V0KCksIEFWQ0ZVUkxBc3NldEluaGVyaXRVUklRdWVyeUNvbXBv
bmVudEZyb21SZWZlcmVuY2luZ1VSSUtleSwga0NGQm9vbGVhblRydWUpOworCisgICAgQVZDRlVS
TEFzc2V0UmVmIGFzc2V0UmVmID0gQVZDRlVSTEFzc2V0Q3JlYXRlV2l0aFVSTEFuZE9wdGlvbnMo
a0NGQWxsb2NhdG9yRGVmYXVsdCwgdXJsUmVmLmdldCgpLCBvcHRpb25zUmVmLmdldCgpLCBtX25v
dGlmaWNhdGlvblF1ZXVlKTsKICAgICBtX2F2QXNzZXQgPSBhZG9wdENGKGFzc2V0UmVmKTsKIH0K
IApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCShyZXZpc2lvbiAxNjU3MTUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02Miw2ICs2Miw3
IEBACiAjaW1wb3J0IDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbXBvcnQgPHd0Zi9GdW5jdGlvbmFs
Lmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9TdHJp
bmdCdWlsZGVyLmg+CiAKICNpZiBFTkFCTEUoQVZGX0NBUFRJT05TKQogI2luY2x1ZGUgIlRleHRU
cmFjay5oIgpAQCAtMTMyLDYgKzEzMyw3IEBAIFNPRlRfTElOS19QT0lOVEVSKEFWRm91bmRhdGlv
biwgQVZNZWRpYVQKIFNPRlRfTElOS19QT0lOVEVSKEFWRm91bmRhdGlvbiwgQVZNZWRpYVR5cGVW
aWRlbywgTlNTdHJpbmcgKikKIFNPRlRfTElOS19QT0lOVEVSKEFWRm91bmRhdGlvbiwgQVZNZWRp
YVR5cGVBdWRpbywgTlNTdHJpbmcgKikKIFNPRlRfTElOS19QT0lOVEVSKEFWRm91bmRhdGlvbiwg
QVZQbGF5ZXJJdGVtRGlkUGxheVRvRW5kVGltZU5vdGlmaWNhdGlvbiwgTlNTdHJpbmcgKikKK1NP
RlRfTElOS19QT0lOVEVSKEFWRm91bmRhdGlvbiwgQVZVUkxBc3NldEluaGVyaXRVUklRdWVyeUNv
bXBvbmVudEZyb21SZWZlcmVuY2luZ1VSSUtleSwgTlNTdHJpbmcgKikKIFNPRlRfTElOS19QT0lO
VEVSKEFWRm91bmRhdGlvbiwgQVZBc3NldEltYWdlR2VuZXJhdG9yQXBlcnR1cmVNb2RlQ2xlYW5B
cGVydHVyZSwgTlNTdHJpbmcgKikKIFNPRlRfTElOS19QT0lOVEVSKEFWRm91bmRhdGlvbiwgQVZV
UkxBc3NldFJlZmVyZW5jZVJlc3RyaWN0aW9uc0tleSwgTlNTdHJpbmcgKikKIFNPRlRfTElOS19Q
T0lOVEVSKEFWRm91bmRhdGlvbiwgQVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdCwgTlNT
dHJpbmcgKikKQEAgLTE1Myw2ICsxNTUsNyBAQCBTT0ZUX0xJTktfQ09OU1RBTlQoQ29yZU1lZGlh
LCBrQ01UaW1lWmVyCiAjZGVmaW5lIEFWTWVkaWFUeXBlVmlkZW8gZ2V0QVZNZWRpYVR5cGVWaWRl
bygpCiAjZGVmaW5lIEFWTWVkaWFUeXBlQXVkaW8gZ2V0QVZNZWRpYVR5cGVBdWRpbygpCiAjZGVm
aW5lIEFWUGxheWVySXRlbURpZFBsYXlUb0VuZFRpbWVOb3RpZmljYXRpb24gZ2V0QVZQbGF5ZXJJ
dGVtRGlkUGxheVRvRW5kVGltZU5vdGlmaWNhdGlvbigpCisjZGVmaW5lIEFWVVJMQXNzZXRJbmhl
cml0VVJJUXVlcnlDb21wb25lbnRGcm9tUmVmZXJlbmNpbmdVUklLZXkgZ2V0QVZVUkxBc3NldElu
aGVyaXRVUklRdWVyeUNvbXBvbmVudEZyb21SZWZlcmVuY2luZ1VSSUtleSgpCiAjZGVmaW5lIEFW
QXNzZXRJbWFnZUdlbmVyYXRvckFwZXJ0dXJlTW9kZUNsZWFuQXBlcnR1cmUgZ2V0QVZBc3NldElt
YWdlR2VuZXJhdG9yQXBlcnR1cmVNb2RlQ2xlYW5BcGVydHVyZSgpCiAjZGVmaW5lIEFWVVJMQXNz
ZXRSZWZlcmVuY2VSZXN0cmljdGlvbnNLZXkgZ2V0QVZVUkxBc3NldFJlZmVyZW5jZVJlc3RyaWN0
aW9uc0tleSgpCiAjZGVmaW5lIEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3QgZ2V0QVZM
YXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdCgpCkBAIC02MDksNyArNjEyLDEwIEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzoKIAogICAgIGlmIChbaGVhZGVyRmll
bGRzLmdldCgpIGNvdW50XSkKICAgICAgICAgW29wdGlvbnMuZ2V0KCkgc2V0T2JqZWN0OmhlYWRl
ckZpZWxkcy5nZXQoKSBmb3JLZXk6QCJBVlVSTEFzc2V0SFRUUEhlYWRlckZpZWxkc0tleSJdOwot
CisgICAgCisgICAgaWYgKHBsYXllcigpLT5kb2VzSGF2ZUF0dHJpYnV0ZSgieC1pdHVuZXMtaW5o
ZXJpdC11cmktcXVlcnktY29tcG9uZW50IikpCisgICAgICAgIFtvcHRpb25zLmdldCgpIHNldE9i
amVjdDogW05TTnVtYmVyIG51bWJlcldpdGhCb29sOiBUUlVFXSBmb3JLZXk6IEFWVVJMQXNzZXRJ
bmhlcml0VVJJUXVlcnlDb21wb25lbnRGcm9tUmVmZXJlbmNpbmdVUklLZXldOworICAgIAogI2lm
IEVOQUJMRShBVkZfQ0FQVElPTlMpCiAgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxQbGF0Zm9ybVRl
eHRUcmFjaz4+JiBvdXRPZkJhbmRUcmFja1NvdXJjZXMgPSBwbGF5ZXIoKS0+b3V0T2ZCYW5kVHJh
Y2tTb3VyY2VzKCk7CiAgICAgaWYgKCFvdXRPZkJhbmRUcmFja1NvdXJjZXMuaXNFbXB0eSgpKSB7
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmgJKHJl
dmlzaW9uIDE2NTcxNSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0
b3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxNCw3ICsyMTQsOCBAQCBuYW1lc3BhY2UgV2ViS2l0
IHsKICAgICBtYWNybyhBbHdheXNVc2VBY2NlbGVyYXRlZE92ZXJmbG93U2Nyb2xsLCBhbHdheXNV
c2VBY2NlbGVyYXRlZE92ZXJmbG93U2Nyb2xsLCBCb29sLCBib29sLCBmYWxzZSkgXAogICAgIG1h
Y3JvKFBhc3N3b3JkRWNob0VuYWJsZWQsIHBhc3N3b3JkRWNob0VuYWJsZWQsIEJvb2wsIGJvb2ws
IERFRkFVTFRfUEFTU1dPUkRfRUNIT19FTkFCTEVEKSBcCiAgICAgbWFjcm8oSW1hZ2VDb250cm9s
c0VuYWJsZWQsIGltYWdlQ29udHJvbHNFbmFibGVkLCBCb29sLCBib29sLCBmYWxzZSkgXAotCisg
ICAgbWFjcm8oRW5hYmxlSW5oZXJpdFVSSVF1ZXJ5Q29tcG9uZW50LCBlbmFibGVJbmhlcml0VVJJ
UXVlcnlDb21wb25lbnQsIEJvb2wsIGJvb2wsIGZhbHNlKSBcCisgICAgCiAjZGVmaW5lIEZPUl9F
QUNIX1dFQktJVF9ET1VCTEVfUFJFRkVSRU5DRShtYWNybykgXAogICAgIG1hY3JvKFBERlNjYWxl
RmFjdG9yLCBwZGZTY2FsZUZhY3RvciwgRG91YmxlLCBkb3VibGUsIDApIFwKICAgICBtYWNybyhJ
bmNyZW1lbnRhbFJlbmRlcmluZ1N1cHByZXNzaW9uVGltZW91dCwgaW5jcmVtZW50YWxSZW5kZXJp
bmdTdXBwcmVzc2lvblRpbWVvdXQsIERvdWJsZSwgZG91YmxlLCA1KSBcCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCShyZXZpc2lv
biAxNjU3MTUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNl
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNTUsMyArMTI1NSwxMyBAQCBib29sIFdLUHJlZmVy
ZW5jZXNHZXRUZWxlcGhvbmVOdW1iZXJQYXJzCiB7CiAgICAgcmV0dXJuIHRvSW1wbChwcmVmZXJl
bmNlc1JlZiktPnRlbGVwaG9uZU51bWJlclBhcnNpbmdFbmFibGVkKCk7CiB9CisKK3ZvaWQgV0tQ
cmVmZXJlbmNlc1NldEVuYWJsZUluaGVyaXRVUklRdWVyeUNvbXBvbmVudChXS1ByZWZlcmVuY2Vz
UmVmIHByZWZlcmVuY2VzUmVmLCBib29sIGVuYWJsZWQpCit7CisgICAgdG9JbXBsKHByZWZlcmVu
Y2VzUmVmKS0+c2V0RW5hYmxlSW5oZXJpdFVSSVF1ZXJ5Q29tcG9uZW50KGVuYWJsZWQpOworfQor
Citib29sIFdLUHJlZmVyZW5jZXNHZXRFbmFibGVJbmhlcml0VVJJUXVlcnlDb21wb25lbnQoV0tQ
cmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZikKK3sKKyAgICByZXR1cm4gdG9JbXBsKHByZWZl
cmVuY2VzUmVmKS0+ZW5hYmxlSW5oZXJpdFVSSVF1ZXJ5Q29tcG9uZW50KCk7Cit9CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlc1By
aXZhdGUuaAkocmV2aXNpb24gMTY1NzE1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLUHJlZmVyZW5jZXNQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyMSw3ICszMjEsMTEg
QEAgV0tfRVhQT1JUIGJvb2wgV0tQcmVmZXJlbmNlc0dldFNob3VsZENvbgogLy8gRGVmYXVsdCB0
byBmYWxzZS4KIFdLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNTZXRUZWxlcGhvbmVOdW1iZXJQ
YXJzaW5nRW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBib29sIGVuYWJs
ZWQpOwogV0tfRVhQT1JUIGJvb2wgV0tQcmVmZXJlbmNlc0dldFRlbGVwaG9uZU51bWJlclBhcnNp
bmdFbmFibGVkKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYpOwotCisgICAgCisvLyBE
ZWZhdWx0IHRvIGZhbHNlLgorV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1NldEVuYWJsZUlu
aGVyaXRVUklRdWVyeUNvbXBvbmVudChXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBi
b29sIGVuYWJsZWQpOworV0tfRVhQT1JUIGJvb2wgV0tQcmVmZXJlbmNlc0dldEVuYWJsZUluaGVy
aXRVUklRdWVyeUNvbXBvbmVudChXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmKTsKKyAg
ICAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAxNjU3MTUpCisrKyBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI2MjQsNiArMjYyNCw4IEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXMo
Y29uc3QgV2UKICAgICBzZXR0aW5ncy5zZXRMYXlvdXRJbnRlcnZhbChzdGQ6OmNocm9ubzo6ZHVy
YXRpb25fY2FzdDxzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzPihzdGQ6OmNocm9ubzo6ZHVyYXRp
b248ZG91YmxlPihzdG9yZS5nZXREb3VibGVWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6
bGF5b3V0SW50ZXJ2YWxLZXkoKSkpKSk7CiAgICAgc2V0dGluZ3Muc2V0TWF4UGFyc2VEdXJhdGlv
bihzdG9yZS5nZXREb3VibGVWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6bWF4UGFyc2VE
dXJhdGlvbktleSgpKSk7CiAKKyAgICBzZXR0aW5ncy5zZXRFbmFibGVJbmhlcml0VVJJUXVlcnlD
b21wb25lbnQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjplbmFi
bGVJbmhlcml0VVJJUXVlcnlDb21wb25lbnRLZXkoKSkpOworICAgIAogICAgIGlmIChzdG9yZS5n
ZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OnBhZ2VWaXNpYmlsaXR5QmFzZWRQ
cm9jZXNzU3VwcHJlc3Npb25FbmFibGVkS2V5KCkpKQogICAgICAgICBtX3Byb2Nlc3NTdXBwcmVz
c2lvbkRpc2FibGVkQnlXZWJQcmVmZXJlbmNlLnN0b3AoKTsKICAgICBlbHNlCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCShyZXZpc2lvbiAxNjU3MTUpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAxNC0wMy0xNiAgQnJlbnQgRnVs
Z2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBQcm92aWRlIHByZWZlcmVuY2Ug
dG8gZW5hYmxlIGFkZGl0aW9uYWwgQVZGb3VuZGF0aW9uIG9wdGlvbnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDI3NQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViVmlldy9XZWJQcmVmZXJlbmNl
S2V5c1ByaXZhdGUuaDogQWRkZWQgbmV3IHByZWZlcmVjZS4KKyAgICAgICAgKiBXZWJWaWV3L1dl
YlByZWZlcmVuY2VzLm1tOgorICAgICAgICAoK1tXZWJQcmVmZXJlbmNlcyBpbml0aWFsaXplXSk6
IEluaXRpYWxpemUgcHJlZmVyZW5jZSB0byBmYWxzZS4KKyAgICAgICAgKC1bV2ViUHJlZmVyZW5j
ZXMgaXNJbmhlcml0VVJJUXVlcnlDb21wb25lbnRFbmFibGVkXSk6IEFkZGVkLgorICAgICAgICAo
LVtXZWJQcmVmZXJlbmNlcyBzZXRFbmFibGVJbmhlcml0VVJJUXVlcnlDb21wb25lbnQ6XSk6IEFk
ZGVkLgorICAgICAgICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmg6CisgICAgICAg
ICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9wcmVmZXJlbmNlc0No
YW5nZWQ6XSk6IEhhbmRsZSBuZXcgcHJlZmVyZW5jZS4KKwogMjAxNC0wMy0xNiAgRGFyaW4gQWRs
ZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIGFsbCBkZXByZWNhdGVkQ2hh
cmFjdGVycyB1c2UgZnJvbSBXZWJLaXQgZGlyZWN0b3J5CkluZGV4OiBTb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgJKHJldmlzaW9u
IDE2NTcxNSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQ
cml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwOSwzICsyMDksNSBAQAogI2RlZmluZSBXZWJL
aXRUZXh0RmllbGRSZW1vdGVJbnNwZWN0aW9uRW5hYmxlZFByZWZlcmVuY2VLZXkgQCJXZWJLaXRU
ZXh0RmllbGRSZW1vdGVJbnNwZWN0aW9uRW5hYmxlZCIKICNlbmRpZgogI2VuZGlmCisKKyNkZWZp
bmUgV2ViS2l0RW5hYmxlSW5oZXJpdFVSSVF1ZXJ5Q29tcG9uZW50UHJlZmVyZW5jZUtleSBAIldl
YktpdEVuYWJsZUluaGVyaXRVUklRdWVyeUNvbXBvbmVudCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQkocmV2aXNpb24gMTY1NzE1KQorKysgU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcsIDIw
MTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDA1LCAyMDA2LCAyMDA3LCAyMDExLCAyMDEyLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqICAgICAgICAgICAoQykgMjAwNiBHcmFoYW0gRGVubmlzIChncmFoYW0u
ZGVubmlzQGdtYWlsLmNvbSkKICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTU5OCw2ICs1OTgsNyBAQCAr
ICh2b2lkKWluaXRpYWxpemUKICNpZiBFTkFCTEUoSU1BR0VfQ09OVFJPTFMpCiAgICAgICAgIFtO
U051bWJlciBudW1iZXJXaXRoQm9vbDpOT10sIFdlYktpdEltYWdlQ29udHJvbHNFbmFibGVkUHJl
ZmVyZW5jZUtleSwKICNlbmRpZgorICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6Tk9d
LCBXZWJLaXRFbmFibGVJbmhlcml0VVJJUXVlcnlDb21wb25lbnRQcmVmZXJlbmNlS2V5LAogICAg
ICAgICBuaWxdOwogCiAjaWYgIVBMQVRGT1JNKElPUykKQEAgLTIxNTYsNiArMjE1NywxNiBAQCAt
IChCT09MKWlzSGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlCiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCistIChCT09MKWlzSW5oZXJpdFVSSVF1ZXJ5Q29tcG9uZW50RW5hYmxlZAoreworICAg
IHJldHVybiBbc2VsZiBfYm9vbFZhbHVlRm9yS2V5OiBXZWJLaXRFbmFibGVJbmhlcml0VVJJUXVl
cnlDb21wb25lbnRQcmVmZXJlbmNlS2V5XTsKK30KKworLSAodm9pZClzZXRFbmFibGVJbmhlcml0
VVJJUXVlcnlDb21wb25lbnQ6KEJPT0wpZmxhZworeworICAgIFtzZWxmIF9zZXRCb29sVmFsdWU6
ZmxhZyBmb3JLZXk6IFdlYktpdEVuYWJsZUluaGVyaXRVUklRdWVyeUNvbXBvbmVudFByZWZlcmVu
Y2VLZXldOworfQorCiAjaWYgUExBVEZPUk0oSU9TKQogLSAoQk9PTCltZWRpYVBsYXliYWNrQWxs
b3dzQWlyUGxheQogewpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJl
bmNlc1ByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YlByZWZlcmVuY2VzUHJpdmF0ZS5oCShyZXZpc2lvbiAxNjU3MTUpCisrKyBTb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
ODcsNiArMjg3LDkgQEAgQGludGVyZmFjZSBXZWJQcmVmZXJlbmNlcyAoV2ViUHJpdmF0ZSkKIC0g
KEJPT0wpbWVkaWFQbGF5YmFja0FsbG93c0FpclBsYXk7CiAjZW5kaWYKIAorLSAoQk9PTClpc0lu
aGVyaXRVUklRdWVyeUNvbXBvbmVudEVuYWJsZWQ7CistICh2b2lkKXNldEVuYWJsZUluaGVyaXRV
UklRdWVyeUNvbXBvbmVudDooQk9PTClmbGFnOworCiAvLyBPdGhlciBwcml2YXRlIG1ldGhvZHMK
ICNpZiBUQVJHRVRfT1NfSVBIT05FCiAtIChzaXplX3QpX21heGltdW1JbWFnZVNpemU7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiAxNjU3MTUpCisrKyBT
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTIz
OTEsNiArMjM5MSw4IEBAIC0gKHZvaWQpX3ByZWZlcmVuY2VzQ2hhbmdlZDooV2ViUHJlZmVyZW4K
ICNlbmRpZgogCiAgICAgc2V0dGluZ3Muc2V0U2hvdWxkQ29udmVydFBvc2l0aW9uU3R5bGVPbkNv
cHkoW3ByZWZlcmVuY2VzIHNob3VsZENvbnZlcnRQb3NpdGlvblN0eWxlT25Db3B5XSk7CisgICAg
CisgICAgc2V0dGluZ3Muc2V0RW5hYmxlSW5oZXJpdFVSSVF1ZXJ5Q29tcG9uZW50KFtwcmVmZXJl
bmNlcyBpc0luaGVyaXRVUklRdWVyeUNvbXBvbmVudEVuYWJsZWRdKTsKIAogICAgIHN3aXRjaCAo
W3ByZWZlcmVuY2VzIHN0b3JhZ2VCbG9ja2luZ1BvbGljeV0pIHsKICAgICBjYXNlIFdlYkFsbG93
QWxsU3RvcmFnZToKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYlByZWZlcmVuY2VLZXlzUHJp
dmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYlByZWZlcmVuY2VLZXlz
UHJpdmF0ZS5oCShyZXZpc2lvbiAxNjU3MTUpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJQcmVm
ZXJlbmNlS2V5c1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTY2LDMgKzE2Niw1IEBACiAj
ZGVmaW5lIFdlYktpdE1vY2tTY3JvbGxiYXJzRW5hYmxlZFByZWZlcmVuY2VLZXkgIldlYktpdE1v
Y2tTY3JvbGxiYXJzRW5hYmxlZCIKIAogI2RlZmluZSBXZWJLaXRTY3JlZW5Gb250U3Vic3RpdHV0
aW9uRW5hYmxlZFByZWZlcmVuY2VLZXkgIldlYktpdFNjcmVlbkZvbnRTdWJzdGl0dXRpb25FbmFi
bGVkUHJlZmVyZW5jZUtleSIKKworI2RlZmluZSBXZWJLaXRFbmFibGVJbmhlcml0VVJJUXVlcnlD
b21wb25lbnRQcmVmZXJlbmNlS2V5ICJXZWJLaXRFbmFibGVJbmhlcml0VVJJUXVlcnlDb21wb25l
bnQiCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCShyZXZpc2lvbiAxNjU3
MTUpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI4MCw2ICsyODAsOCBAQCB2b2lkIFdlYlByZWZlcmVuY2VzOjppbml0aWFsaXplRGVm
YXVsdFNlCiAKICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0
RnVsbFNjcmVlbkVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKIAorICAg
IENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRSZXF1ZXN0QW5pbWF0
aW9uRnJhbWVFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisKICAgICBk
ZWZhdWx0U2V0dGluZ3MgPSBkZWZhdWx0czsKIH0KIApAQCAtMTgwMiwzICsxODA0LDE0IEBAIEhS
RVNVTFQgV2ViUHJlZmVyZW5jZXM6OnJlcXVlc3RBbmltYXRpb24KICAgICByZXR1cm4gU19PSzsK
IH0KIAorSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6aXNJbmhlcml0VVJJUXVlcnlDb21wb25lbnRF
bmFibGVkKEJPT0wqIGVuYWJsZWQpCit7CisgICAgKmVuYWJsZWQgPSBib29sVmFsdWVGb3JLZXko
V2ViS2l0RW5hYmxlSW5oZXJpdFVSSVF1ZXJ5Q29tcG9uZW50UHJlZmVyZW5jZUtleSk7CisgICAg
cmV0dXJuIFNfT0s7Cit9CisKK0hSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OnNldEVuYWJsZUluaGVy
aXRVUklRdWVyeUNvbXBvbmVudChCT09MIGVuYWJsZWQpCit7CisgICAgc2V0Qm9vbFZhbHVlKFdl
YktpdEVuYWJsZUluaGVyaXRVUklRdWVyeUNvbXBvbmVudFByZWZlcmVuY2VLZXksIGVuYWJsZWQp
OworICAgIHJldHVybiBTX09LOworfQpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViUHJlZmVy
ZW5jZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5o
CShyZXZpc2lvbiAxNjU3MTUpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5o
CSh3b3JraW5nIGNvcHkpCkBAIC00ODMsNiArNDgzLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzY3JlZW5Gb250U3Vic3RpdHV0aW9uRW5hYmxlZChC
T09MKik7CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFNjcmVlbkZv
bnRTdWJzdGl0dXRpb25FbmFibGVkKEJPT0wpOwogCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIGlzSW5oZXJpdFVSSVF1ZXJ5Q29tcG9uZW50RW5hYmxlZChCT09MKik7Cisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEVuYWJsZUluaGVyaXRVUklR
dWVyeUNvbXBvbmVudChCT09MKTsKKwogICAgIC8vIFdlYlByZWZlcmVuY2VzCiAKICAgICAvLyBU
aGlzIG1ldGhvZCBhY2Nlc3NlcyBhIGRpZmZlcmVudCBwcmVmZXJlbmNlIGtleSB0aGFuIGRldmVs
b3BlckV4dHJhc0VuYWJsZWQuCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAkocmV2aXNpb24gMTY1
NzE1KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTUwNTIsNiArNTA1MiwxMSBAQCBIUkVTVUxUIFdlYlZpZXc6Om5vdGlmeVByZWZlcmVuY2VzQ2hh
bmdlCiAgICAgICAgIHJldHVybiBocjsKICAgICBzZXR0aW5ncy5zZXRNb2NrU2Nyb2xsYmFyc0Vu
YWJsZWQoZW5hYmxlZCk7CiAKKyAgICBociA9IHByZWZzUHJpdmF0ZS0+aXNJbmhlcml0VVJJUXVl
cnlDb21wb25lbnRFbmFibGVkKCZlbmFibGVkKTsKKyAgICBpZiAoRkFJTEVEKGhyKSkKKyAgICAg
ICAgcmV0dXJuIGhyOworICAgIHNldHRpbmdzLnNldEVuYWJsZUluaGVyaXRVUklRdWVyeUNvbXBv
bmVudChlbmFibGVkKTsKKwogICAgIGhyID0gcHJlZnNQcml2YXRlLT5zY3JlZW5Gb250U3Vic3Rp
dHV0aW9uRW5hYmxlZCgmZW5hYmxlZCk7CiAgICAgaWYgKEZBSUxFRChocikpCiAgICAgICAgIHJl
dHVybiBocjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYlByZWZlcmVu
Y2VzUHJpdmF0ZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNl
cy9JV2ViUHJlZmVyZW5jZXNQcml2YXRlLmlkbAkocmV2aXNpb24gMTY1NzE1KQorKysgU291cmNl
L1dlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViUHJlZmVyZW5jZXNQcml2YXRlLmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtMTQ4LDQgKzE0OCw3IEBAIGludGVyZmFjZSBJV2ViUHJlZmVyZW5jZXNQcml2
YXRlIDogSVVua24KIAogICAgIEhSRVNVTFQgc2NyZWVuRm9udFN1YnN0aXR1dGlvbkVuYWJsZWQo
W291dCwgcmV0dmFsXSBCT09MKiBlbmFibGVkKTsKICAgICBIUkVTVUxUIHNldFNjcmVlbkZvbnRT
dWJzdGl0dXRpb25FbmFibGVkKFtpbl0gQk9PTCBlbmFibGVkKTsKKworICAgIEhSRVNVTFQgaXNJ
bmhlcml0VVJJUXVlcnlDb21wb25lbnRFbmFibGVkKFtvdXQsIHJldHZhbF0gQk9PTCogZW5hYmxl
ZCk7CisgICAgSFJFU1VMVCBzZXRFbmFibGVJbmhlcml0VVJJUXVlcnlDb21wb25lbnQoW2luXSBC
T09MIGVuYWJsZWQpOwogfQo=
</data>
<flag name="review"
          id="251180"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
          </attachment>
      

    </bug>

</bugzilla>