<?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>50097</bug_id>
          
          <creation_ts>2010-11-25 21:31:15 -0800</creation_ts>
          <short_desc>Refactor HTMLInputElement: Move a part of HTMLInputElement::defaultEventHandler() to InputTypes</short_desc>
          <delta_ts>2010-12-01 18:17:32 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Forms</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</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>P3</priority>
          <bug_severity>Minor</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kent Tamura">tkent</reporter>
          <assigned_to name="Kent Tamura">tkent</assigned_to>
          <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>webkit-ews</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>313899</commentid>
    <comment_count>0</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-11-25 21:31:15 -0800</bug_when>
    <thetext>Refactor HTMLInputElement: Move a part of HTMLInputElement::defaultEventHandler() to InputTypes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>313900</commentid>
    <comment_count>1</comment_count>
      <attachid>74902</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-11-25 21:35:10 -0800</bug_when>
    <thetext>Created attachment 74902
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314112</commentid>
    <comment_count>2</comment_count>
      <attachid>74902</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-11-26 21:16:34 -0800</bug_when>
    <thetext>Comment on attachment 74902
Patch

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

&gt; WebCore/html/InputType.cpp:307
&gt; +        // Simulate mouse click on the default form button for enter for these types of elements.

Which types of elements? :) The comment now looks out of place.

Also, passing implicitSubmission bool seems awkward, especially considering you already have shouldSubmitImplicitly method on this class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314250</commentid>
    <comment_count>3</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-11-28 21:36:59 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 74902 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=74902&amp;action=review
&gt; 
&gt; &gt; WebCore/html/InputType.cpp:307
&gt; &gt; +        // Simulate mouse click on the default form button for enter for these types of elements.
&gt; 
&gt; Which types of elements? :) The comment now looks out of place.

Oops, I&apos;ll update it.

&gt; Also, passing implicitSubmission bool seems awkward, especially considering you already have shouldSubmitImplicitly method on this class.

Yeah, we can check implicit submission at one place.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314274</commentid>
    <comment_count>4</comment_count>
      <attachid>74991</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-11-28 23:36:07 -0800</bug_when>
    <thetext>Created attachment 74991
Patch 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314276</commentid>
    <comment_count>5</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-11-28 23:47:18 -0800</bug_when>
    <thetext>Attachment 74991 did not build on qt:
Build output: http://queues.webkit.org/results/6450013</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314277</commentid>
    <comment_count>6</comment_count>
      <attachid>74992</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-11-28 23:53:01 -0800</bug_when>
    <thetext>Created attachment 74992
Patch 3 (fix Qt build)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314434</commentid>
    <comment_count>7</comment_count>
      <attachid>74992</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-11-29 08:38:16 -0800</bug_when>
    <thetext>Comment on attachment 74992
Patch 3 (fix Qt build)

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

&gt; WebCore/html/BaseButtonInputType.cpp:80
&gt; +    if (element()-&gt;active())
&gt; +        element()-&gt;dispatchSimulatedClick(event);

We could make a protected helper function for this sequence, which occurs repeatedly in multiple classes.

&gt; WebCore/html/InputType.h:115
&gt;      // Event handlers
&gt; -    // If the return value is true, do no further default event handling in the
&gt; -    // default event handler. If an event handler calls Event::setDefaultHandled(),
&gt; -    // its return value must be true.
&gt; +    // If the return value of handleFooEvent() is true, do no further default
&gt; +    // event handling in the default event handler. If an event handler calls
&gt; +    // Event::setDefaultHandled(), its return value must be true.
&gt;  
&gt; +    virtual bool shouldSubmitImplicitly(Event*);
&gt;      virtual bool handleClickEvent(MouseEvent*);
&gt;      virtual bool handleDOMActivateEvent(Event*);
&gt;      virtual bool handleKeydownEvent(KeyboardEvent*);
&gt; +    virtual bool handleKeypressEvent(KeyboardEvent*);
&gt; +    virtual bool handleKeyupEvent(KeyboardEvent*);

I think it would be better to put shouldSubmitImplicitly into a separate paragraph. It is not like the other functions, and changing the comment to say handleFooEvent is a roundabout way to deal with that.

I think in a future patch we should get rid of the bool return values and instead change the code in HTMLInputElement to check defaultHandled directly; that makes it impossible to make a mistake and eliminates the need for that last sentence of the comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314791</commentid>
    <comment_count>8</comment_count>
      <attachid>74992</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-11-29 18:08:18 -0800</bug_when>
    <thetext>Comment on attachment 74992
Patch 3 (fix Qt build)

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

&gt;&gt; WebCore/html/BaseButtonInputType.cpp:80
&gt;&gt; +        element()-&gt;dispatchSimulatedClick(event);
&gt; 
&gt; We could make a protected helper function for this sequence, which occurs repeatedly in multiple classes.

I&apos;ll add InputType::dispatchSimulatedClickIfActive(KeyboardEvent*).

&gt;&gt; WebCore/html/InputType.h:115
&gt;&gt; +    virtual bool handleKeyupEvent(KeyboardEvent*);
&gt; 
&gt; I think it would be better to put shouldSubmitImplicitly into a separate paragraph. It is not like the other functions, and changing the comment to say handleFooEvent is a roundabout way to deal with that.
&gt; 
&gt; I think in a future patch we should get rid of the bool return values and instead change the code in HTMLInputElement to check defaultHandled directly; that makes it impossible to make a mistake and eliminates the need for that last sentence of the comment.

ok, I&apos;ll move shouldSubmitImplicitly() declaration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314832</commentid>
    <comment_count>9</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-11-29 20:00:27 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; I think in a future patch we should get rid of the bool return values and instead change the code in HTMLInputElement to check defaultHandled directly; that makes it impossible to make a mistake and eliminates the need for that last sentence of the comment.

Yes.  &quot;return true&quot; and &quot;setDefaultHandled()&quot; are matched exactly in the current code though they were not matched before the previous patch.  I&apos;ll remove the bool return values.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>315982</commentid>
    <comment_count>10</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-12-01 18:17:14 -0800</bug_when>
    <thetext>Landed: http://trac.webkit.org/changeset/73008</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74902</attachid>
            <date>2010-11-25 21:35:10 -0800</date>
            <delta_ts>2010-11-28 23:36:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-50097-20101126143508.patch</filename>
            <type>text/plain</type>
            <size>26483</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MjgxYzUxZjE0NDljODEzZDljMmQ3NjgwMzM5NmYyZGQxMTE0NmFhMy4uYTkwOWE3YTY5Yzg3ZmVk
NWU0ZGVmNjI5ZGUxOGZiZWQzMzY4NGUwNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAxMC0xMS0yNSAgS2Vu
dCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUmVmYWN0b3IgSFRNTElucHV0RWxlbWVudDogTW92ZSBh
IHBhcnQgb2YgSFRNTElucHV0RWxlbWVudDo6CisgICAgICAgIGRlZmF1bHRFdmVudEhhbmRsZXIo
KSB0byBJbnB1dFR5cGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01MDA5NworICAgICAgICAKKyAgICAgICAgTW92ZSBhbGwgb2Yga2V5Ym9hcmQtcmVs
YXRlZCBldmVudCBoYW5kbGluZyB0byBJbnB1dFR5cGUuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
IGJlY2F1c2UgdGhpcyBzaG91bGQgbm90IGNoYW5nZSBhbnkgYmVoYXZpb3IuCisKKyAgICAgICAg
KiBodG1sL0Jhc2VCdXR0b25JbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmFzZUJ1
dHRvbklucHV0VHlwZTo6aGFuZGxlS2V5ZG93bkV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkJh
c2VCdXR0b25JbnB1dFR5cGU6OmhhbmRsZUtleXByZXNzRXZlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6QmFzZUJ1dHRvbklucHV0VHlwZTo6aGFuZGxlS2V5dXBFdmVudCk6CisgICAgICAgICogaHRt
bC9CYXNlQnV0dG9uSW5wdXRUeXBlLmg6CisgICAgICAgICogaHRtbC9CYXNlQ2hlY2thYmxlSW5w
dXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VDaGVja2FibGVJbnB1dFR5cGU6Omhh
bmRsZUtleWRvd25FdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpCYXNlQ2hlY2thYmxlSW5wdXRU
eXBlOjpoYW5kbGVLZXlwcmVzc0V2ZW50KToKKyAgICAgICAgKiBodG1sL0Jhc2VDaGVja2FibGVJ
bnB1dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL0NoZWNrYm94SW5wdXRUeXBlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNoZWNrYm94SW5wdXRUeXBlOjpoYW5kbGVLZXl1cEV2ZW50KToKKyAgICAg
ICAgKiBodG1sL0NoZWNrYm94SW5wdXRUeXBlLmg6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmRlZmF1bHRF
dmVudEhhbmRsZXIpOgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OklucHV0VHlwZTo6c2hvdWxkU3VibWl0SW1wbGljaXRseSk6CisgICAgICAgIChXZWJD
b3JlOjpJbnB1dFR5cGU6OmhhbmRsZUtleXByZXNzRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
SW5wdXRUeXBlOjpoYW5kbGVLZXl1cEV2ZW50KToKKyAgICAgICAgKiBodG1sL0lucHV0VHlwZS5o
OgorICAgICAgICAqIGh0bWwvUmFkaW9JbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmFkaW9JbnB1dFR5cGU6OmhhbmRsZUtleWRvd25FdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpS
YWRpb0lucHV0VHlwZTo6aGFuZGxlS2V5dXBFdmVudCk6CisgICAgICAgICogaHRtbC9SYWRpb0lu
cHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6c2hvdWxkU3VibWl0SW1wbGljaXRseSk6
CisgICAgICAgICogaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuaDoKKwogMjAxMC0xMS0yNSAgQW50
dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFu
IEJlcm5zdGVpbi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9CYXNlQnV0dG9uSW5wdXRUeXBl
LmNwcCBiL1dlYkNvcmUvaHRtbC9CYXNlQnV0dG9uSW5wdXRUeXBlLmNwcAppbmRleCBmZDZhOGZm
ZWQ4MGQyNTU5YmE2ODE1OGFiZDNlNjE0Yzg5YmJhNTdmLi5mNDQxMmUwOWJjNTYzNTQ0ZDhlOTM2
OTU5ZjMwZjQzMzY0ODY5MDhjIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvQmFzZUJ1dHRvbklu
cHV0VHlwZS5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0Jhc2VCdXR0b25JbnB1dFR5cGUuY3BwCkBA
IC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiQmFzZUJ1dHRvbklucHV0VHlwZS5oIgogCiAjaW5j
bHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgorI2luY2x1ZGUgIktleWJvYXJkRXZlbnQuaCIKICNp
bmNsdWRlICJSZW5kZXJCdXR0b24uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDIsNiAr
NDMsNDUgQEAgYm9vbCBCYXNlQnV0dG9uSW5wdXRUeXBlOjphcHBlbmRGb3JtRGF0YShGb3JtRGF0
YUxpc3QmLCBib29sKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBCYXNlQnV0
dG9uSW5wdXRUeXBlOjpoYW5kbGVLZXlkb3duRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQpCit7
CisgICAgY29uc3QgU3RyaW5nJiBrZXkgPSBldmVudC0+a2V5SWRlbnRpZmllcigpOworICAgIGlm
IChrZXkgPT0gIlUrMDAyMCIpIHsKKyAgICAgICAgZWxlbWVudCgpLT5zZXRBY3RpdmUodHJ1ZSwg
dHJ1ZSk7CisgICAgICAgIC8vIE5vIHNldERlZmF1bHRIYW5kbGVkKCksIGJlY2F1c2UgSUUgZGlz
cGF0Y2hlcyBhIGtleXByZXNzIGluIHRoaXMgY2FzZQorICAgICAgICAvLyBhbmQgdGhlIGNhbGxl
ciB3aWxsIG9ubHkgZGlzcGF0Y2ggYSBrZXlwcmVzcyBpZiB3ZSBkb24ndCBjYWxsIHNldERlZmF1
bHRIYW5kbGVkKCkuCisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBCYXNlQnV0
dG9uSW5wdXRUeXBlOjpoYW5kbGVLZXlwcmVzc0V2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50LCBi
b29sJikKK3sKKyAgICBpbnQgY2hhckNvZGUgPSBldmVudC0+Y2hhckNvZGUoKTsKKyAgICBpZiAo
Y2hhckNvZGUgPT0gJ1xyJykgeworICAgICAgICBlbGVtZW50KCktPmRpc3BhdGNoU2ltdWxhdGVk
Q2xpY2soZXZlbnQpOworICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGlmIChjaGFyQ29kZSA9PSAnICcpIHsKKyAgICAg
ICAgLy8gUHJldmVudCBzY3JvbGxpbmcgZG93biB0aGUgcGFnZS4KKyAgICAgICAgZXZlbnQtPnNl
dERlZmF1bHRIYW5kbGVkKCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK2Jvb2wgQmFzZUJ1dHRvbklucHV0VHlwZTo6aGFuZGxlS2V5dXBFdmVu
dChLZXlib2FyZEV2ZW50KiBldmVudCkKK3sKKyAgICBjb25zdCBTdHJpbmcmIGtleSA9IGV2ZW50
LT5rZXlJZGVudGlmaWVyKCk7CisgICAgaWYgKGtleSAhPSAiVSswMDIwIikKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIC8vIFNpbXVsYXRlIG1vdXNlIGNsaWNrIGZvciBzcGFjZWJhciBmb3Ig
dGhlc2UgdHlwZXMgb2YgZWxlbWVudHMuCisgICAgaWYgKGVsZW1lbnQoKS0+YWN0aXZlKCkpCisg
ICAgICAgIGVsZW1lbnQoKS0+ZGlzcGF0Y2hTaW11bGF0ZWRDbGljayhldmVudCk7CisgICAgZXZl
bnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIFJlbmRlck9i
amVjdCogQmFzZUJ1dHRvbklucHV0VHlwZTo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFy
ZW5hLCBSZW5kZXJTdHlsZSopIGNvbnN0CiB7CiAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRl
ckJ1dHRvbihlbGVtZW50KCkpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0Jhc2VCdXR0b25J
bnB1dFR5cGUuaCBiL1dlYkNvcmUvaHRtbC9CYXNlQnV0dG9uSW5wdXRUeXBlLmgKaW5kZXggZTdm
NjgzYmFhOTFiMzU3YWY2Y2M5MmEyODRhM2E3MjI3YmIyYzEzZS4uODQwOTEyMTYxNzY2NmYyMGM3
N2I4ZDQ0ZDVmNzcyOWZiNzM1ZTE0NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0Jhc2VCdXR0
b25JbnB1dFR5cGUuaAorKysgYi9XZWJDb3JlL2h0bWwvQmFzZUJ1dHRvbklucHV0VHlwZS5oCkBA
IC00Miw2ICs0Miw5IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wg
YXBwZW5kRm9ybURhdGEoRm9ybURhdGFMaXN0JiwgYm9vbCkgY29uc3Q7CisgICAgdmlydHVhbCBi
b29sIGhhbmRsZUtleWRvd25FdmVudChLZXlib2FyZEV2ZW50Kik7CisgICAgdmlydHVhbCBib29s
IGhhbmRsZUtleXByZXNzRXZlbnQoS2V5Ym9hcmRFdmVudCosIGJvb2wmIGltcGxpY2l0U3VibWlz
c2lvbik7CisgICAgdmlydHVhbCBib29sIGhhbmRsZUtleXVwRXZlbnQoS2V5Ym9hcmRFdmVudCop
OwogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSos
IFJlbmRlclN0eWxlKikgY29uc3Q7CiB9OwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvQmFz
ZUNoZWNrYWJsZUlucHV0VHlwZS5jcHAgYi9XZWJDb3JlL2h0bWwvQmFzZUNoZWNrYWJsZUlucHV0
VHlwZS5jcHAKaW5kZXggMDA5ZThlNDhkM2UyMGFmMTNkMGFmZWUzYTE4YTc5ZTc0ODhkMTA1YS4u
YTVlY2Y5NTEzMWEzOGZjNDgwMzZkZGJiMjllOTNkMjM0NDliMDEwNiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9odG1sL0Jhc2VDaGVja2FibGVJbnB1dFR5cGUuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9C
YXNlQ2hlY2thYmxlSW5wdXRUeXBlLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkZv
cm1EYXRhTGlzdC5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJI
VE1MTmFtZXMuaCIKKyNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAiUmVndWxh
ckV4cHJlc3Npb24uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTcsNCArNTgsMjcgQEAg
Ym9vbCBCYXNlQ2hlY2thYmxlSW5wdXRUeXBlOjphcHBlbmRGb3JtRGF0YShGb3JtRGF0YUxpc3Qm
IGVuY29kaW5nLCBib29sKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCitib29sIEJhc2VD
aGVja2FibGVJbnB1dFR5cGU6OmhhbmRsZUtleWRvd25FdmVudChLZXlib2FyZEV2ZW50KiBldmVu
dCkKK3sKKyAgICBjb25zdCBTdHJpbmcmIGtleSA9IGV2ZW50LT5rZXlJZGVudGlmaWVyKCk7Cisg
ICAgaWYgKGtleSA9PSAiVSswMDIwIikgeworICAgICAgICBlbGVtZW50KCktPnNldEFjdGl2ZSh0
cnVlLCB0cnVlKTsKKyAgICAgICAgLy8gTm8gc2V0RGVmYXVsdEhhbmRsZWQoKSwgYmVjYXVzZSBJ
RSBkaXNwYXRjaGVzIGEga2V5cHJlc3MgaW4gdGhpcyBjYXNlCisgICAgICAgIC8vIGFuZCB0aGUg
Y2FsbGVyIHdpbGwgb25seSBkaXNwYXRjaCBhIGtleXByZXNzIGlmIHdlIGRvbid0IGNhbGwgc2V0
RGVmYXVsdEhhbmRsZWQoKS4KKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEJh
c2VDaGVja2FibGVJbnB1dFR5cGU6OmhhbmRsZUtleXByZXNzRXZlbnQoS2V5Ym9hcmRFdmVudCog
ZXZlbnQsIGJvb2wmIGltcGxpY2l0U3VibWlzc2lvbikKK3sKKyAgICBpZiAoSW5wdXRUeXBlOjpo
YW5kbGVLZXlwcmVzc0V2ZW50KGV2ZW50LCBpbXBsaWNpdFN1Ym1pc3Npb24pKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICBpZiAoZXZlbnQtPmNoYXJDb2RlKCkgPT0gJyAnKSB7CisgICAgICAg
IC8vIFByZXZlbnQgc2Nyb2xsaW5nIGRvd24gdGhlIHBhZ2UuCisgICAgICAgIGV2ZW50LT5zZXRE
ZWZhdWx0SGFuZGxlZCgpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJu
IGZhbHNlOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2h0bWwvQmFzZUNoZWNrYWJsZUlucHV0VHlwZS5oIGIvV2ViQ29yZS9odG1sL0Jhc2VDaGVja2Fi
bGVJbnB1dFR5cGUuaAppbmRleCAwMmVkZjI5Njg0MmU3ZGNiM2IwMzQyNTE4NmQ3MWM1YWI5Mzc2
ODZhLi4wODRiNDYyNjNkMDM4NzA4MzVlYTc3OTYxNjEyMzY1MzU3MjhjYzNmIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2h0bWwvQmFzZUNoZWNrYWJsZUlucHV0VHlwZS5oCisrKyBiL1dlYkNvcmUvaHRt
bC9CYXNlQ2hlY2thYmxlSW5wdXRUeXBlLmgKQEAgLTM5LDExICszOSwxMyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBCYXNlQ2hlY2thYmxlSW5wdXRUeXBlIDogcHVibGljIElucHV0VHlw
ZSB7CiBwcm90ZWN0ZWQ6CiAgICAgQmFzZUNoZWNrYWJsZUlucHV0VHlwZShIVE1MSW5wdXRFbGVt
ZW50KiBlbGVtZW50KSA6IElucHV0VHlwZShlbGVtZW50KSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wg
aGFuZGxlS2V5ZG93bkV2ZW50KEtleWJvYXJkRXZlbnQqKTsKIAogcHJpdmF0ZToKICAgICB2aXJ0
dWFsIGJvb2wgc2F2ZUZvcm1Db250cm9sU3RhdGUoU3RyaW5nJikgY29uc3Q7CiAgICAgdmlydHVh
bCB2b2lkIHJlc3RvcmVGb3JtQ29udHJvbFN0YXRlKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogICAg
IHZpcnR1YWwgYm9vbCBhcHBlbmRGb3JtRGF0YShGb3JtRGF0YUxpc3QmLCBib29sKSBjb25zdDsK
KyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlS2V5cHJlc3NFdmVudChLZXlib2FyZEV2ZW50KiwgYm9v
bCYgaW1wbGljaXRTdWJtaXNzaW9uKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9DaGVja2JveElucHV0VHlwZS5jcHAgYi9XZWJDb3JlL2h0
bWwvQ2hlY2tib3hJbnB1dFR5cGUuY3BwCmluZGV4IDVlMDE1ZTRmZDM4ZDQ5MTY3NWNlODhjZDhk
MzdhMGQzOTUzOGNmYjMuLjc5ZDllNDI1OWQ4MWZiYmRhOTU0OTdiZDlhYzliYjI1OWYxYWZjZjUg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9DaGVja2JveElucHV0VHlwZS5jcHAKKysrIGIvV2Vi
Q29yZS9odG1sL0NoZWNrYm94SW5wdXRUeXBlLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1
ZGUgIkNoZWNrYm94SW5wdXRUeXBlLmgiCiAKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50Lmgi
CisjaW5jbHVkZSAiS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIkxvY2FsaXplZFN0cmluZ3Mu
aCIKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCkBAIC01Nyw0ICs1OCwxNSBAQCBTdHJp
bmcgQ2hlY2tib3hJbnB1dFR5cGU6OnZhbHVlTWlzc2luZ1RleHQoKSBjb25zdAogICAgIHJldHVy
biB2YWxpZGF0aW9uTWVzc2FnZVZhbHVlTWlzc2luZ0ZvckNoZWNrYm94VGV4dCgpOwogfQogCiti
b29sIENoZWNrYm94SW5wdXRUeXBlOjpoYW5kbGVLZXl1cEV2ZW50KEtleWJvYXJkRXZlbnQqIGV2
ZW50KQoreworICAgIGNvbnN0IFN0cmluZyYga2V5ID0gZXZlbnQtPmtleUlkZW50aWZpZXIoKTsK
KyAgICBpZiAoa2V5ICE9ICJVKzAwMjAiKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYg
KGVsZW1lbnQoKS0+YWN0aXZlKCkpCisgICAgICAgIGVsZW1lbnQoKS0+ZGlzcGF0Y2hTaW11bGF0
ZWRDbGljayhldmVudCk7CisgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CisgICAgcmV0
dXJuIHRydWU7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaHRtbC9DaGVja2JveElucHV0VHlwZS5oIGIvV2ViQ29yZS9odG1sL0NoZWNrYm94SW5wdXRU
eXBlLmgKaW5kZXggYTRjNDE5ZGI3ZGVmZmVhMjViOWZlNzk3MzQ0ZTFiOGExOTc5ODdmZi4uZTY2
YWIxNTM5ZTliOTM4MWM5MTRiZGZiNzg5NDZkYjFhZDFiM2RmYyAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9odG1sL0NoZWNrYm94SW5wdXRUeXBlLmgKKysrIGIvV2ViQ29yZS9odG1sL0NoZWNrYm94SW5w
dXRUeXBlLmgKQEAgLTQ0LDYgKzQ0LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGNvbnN0IEF0
b21pY1N0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHZh
bHVlTWlzc2luZyhjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICB2aXJ0dWFsIFN0cmluZyB2YWx1
ZU1pc3NpbmdUZXh0KCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGhhbmRsZUtleXVwRXZlbnQo
S2V5Ym9hcmRFdmVudCopOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxJ
bnB1dEVsZW1lbnQuY3BwCmluZGV4IGZjYjJiZThkNjg2ODlmNWYxMTBjMzRlYjAyY2FlMTQ2MGMy
OTM5MmMuLjAzYmU1NjIzZjFhNDJkNTljZTE1MWQwNDRkNjZjYjdmOGRlNmM4N2EgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwv
SFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTEyOTIsMTAgKzEyOTIsNyBAQCB2b2lkIEhUTUxJbnB1
dEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2dCkKICAgICAvLyBGSVhNRTog
SXQgd291bGQgYmUgYmV0dGVyIHRvIHJlZmFjdG9yIHRoaXMgZm9yIHRoZSBkaWZmZXJlbnQgdHlw
ZXMgb2YgaW5wdXQgZWxlbWVudC4KICAgICAvLyBIYXZpbmcgdGhlbSBhbGwgaW4gb25lIGdpYW50
IGZ1bmN0aW9uIG1ha2VzIHRoaXMgaGFyZCB0byByZWFkLCBhbmQgYWxtb3N0IGFsbCB0aGUgaGFu
ZGxpbmcgaXMgdHlwZS1zcGVjaWZpYy4KIAotICAgIGJvb2wgaW1wbGljaXRTdWJtaXNzaW9uID0g
ZmFsc2U7Ci0KLSAgICBpZiAoaXNUZXh0RmllbGQoKSAmJiBldnQtPnR5cGUoKSA9PSBldmVudE5h
bWVzKCkudGV4dElucHV0RXZlbnQgJiYgZXZ0LT5pc1RleHRFdmVudCgpICYmIHN0YXRpY19jYXN0
PFRleHRFdmVudCo+KGV2dCktPmRhdGEoKSA9PSAiXG4iKQotICAgICAgICBpbXBsaWNpdFN1Ym1p
c3Npb24gPSB0cnVlOworICAgIGJvb2wgaW1wbGljaXRTdWJtaXNzaW9uID0gbV9pbnB1dFR5cGUt
PnNob3VsZFN1Ym1pdEltcGxpY2l0bHkoZXZ0KTsKIAogICAgIGlmIChldnQtPmlzTW91c2VFdmVu
dCgpICYmIGV2dC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50ICYmIG1faW5wdXRU
eXBlLT5oYW5kbGVDbGlja0V2ZW50KHN0YXRpY19jYXN0PE1vdXNlRXZlbnQqPihldnQpKSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtMTMyMiwxNzggKzEzMTksMTEgQEAgdm9pZCBIVE1MSW5wdXRFbGVt
ZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldnQpCiAKICAgICAvLyBVc2Uga2V5IHBy
ZXNzIGV2ZW50IGhlcmUgc2luY2Ugc2VuZGluZyBzaW11bGF0ZWQgbW91c2UgZXZlbnRzCiAgICAg
Ly8gb24ga2V5IGRvd24gYmxvY2tzIHRoZSBwcm9wZXIgc2VuZGluZyBvZiB0aGUga2V5IHByZXNz
IGV2ZW50LgotICAgIGlmIChldnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkua2V5cHJlc3NFdmVu
dCAmJiBldnQtPmlzS2V5Ym9hcmRFdmVudCgpKSB7Ci0gICAgICAgIGJvb2wgY2xpY2tFbGVtZW50
ID0gZmFsc2U7Ci0KLSAgICAgICAgaW50IGNoYXJDb2RlID0gc3RhdGljX2Nhc3Q8S2V5Ym9hcmRF
dmVudCo+KGV2dCktPmNoYXJDb2RlKCk7Ci0KLSAgICAgICAgaWYgKGNoYXJDb2RlID09ICdccicp
IHsKLSAgICAgICAgICAgIHN3aXRjaCAoZGVwcmVjYXRlZElucHV0VHlwZSgpKSB7Ci0gICAgICAg
ICAgICBjYXNlIENIRUNLQk9YOgotICAgICAgICAgICAgY2FzZSBDT0xPUjoKLSAgICAgICAgICAg
IGNhc2UgREFURToKLSAgICAgICAgICAgIGNhc2UgREFURVRJTUU6Ci0gICAgICAgICAgICBjYXNl
IERBVEVUSU1FTE9DQUw6Ci0gICAgICAgICAgICBjYXNlIEVNQUlMOgotICAgICAgICAgICAgY2Fz
ZSBISURERU46Ci0gICAgICAgICAgICBjYXNlIElTSU5ERVg6Ci0gICAgICAgICAgICBjYXNlIE1P
TlRIOgotICAgICAgICAgICAgY2FzZSBOVU1CRVI6Ci0gICAgICAgICAgICBjYXNlIFBBU1NXT1JE
OgotICAgICAgICAgICAgY2FzZSBSQURJTzoKLSAgICAgICAgICAgIGNhc2UgUkFOR0U6Ci0gICAg
ICAgICAgICBjYXNlIFNFQVJDSDoKLSAgICAgICAgICAgIGNhc2UgVEVMRVBIT05FOgotICAgICAg
ICAgICAgY2FzZSBURVhUOgotICAgICAgICAgICAgY2FzZSBUSU1FOgotICAgICAgICAgICAgY2Fz
ZSBVUkw6Ci0gICAgICAgICAgICBjYXNlIFdFRUs6Ci0gICAgICAgICAgICAgICAgLy8gU2ltdWxh
dGUgbW91c2UgY2xpY2sgb24gdGhlIGRlZmF1bHQgZm9ybSBidXR0b24gZm9yIGVudGVyIGZvciB0
aGVzZSB0eXBlcyBvZiBlbGVtZW50cy4KLSAgICAgICAgICAgICAgICBpbXBsaWNpdFN1Ym1pc3Np
b24gPSB0cnVlOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBCVVRU
T046Ci0gICAgICAgICAgICBjYXNlIEZJTEU6Ci0gICAgICAgICAgICBjYXNlIElNQUdFOgotICAg
ICAgICAgICAgY2FzZSBSRVNFVDoKLSAgICAgICAgICAgIGNhc2UgU1VCTUlUOgotICAgICAgICAg
ICAgICAgIC8vIFNpbXVsYXRlIG1vdXNlIGNsaWNrIGZvciBlbnRlciBmb3IgdGhlc2UgdHlwZXMg
b2YgZWxlbWVudHMuCi0gICAgICAgICAgICAgICAgY2xpY2tFbGVtZW50ID0gdHJ1ZTsKLSAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmIChjaGFy
Q29kZSA9PSAnICcpIHsKLSAgICAgICAgICAgIHN3aXRjaCAoZGVwcmVjYXRlZElucHV0VHlwZSgp
KSB7Ci0gICAgICAgICAgICBjYXNlIEJVVFRPTjoKLSAgICAgICAgICAgIGNhc2UgQ0hFQ0tCT1g6
Ci0gICAgICAgICAgICBjYXNlIEZJTEU6Ci0gICAgICAgICAgICBjYXNlIElNQUdFOgotICAgICAg
ICAgICAgY2FzZSBSRVNFVDoKLSAgICAgICAgICAgIGNhc2UgU1VCTUlUOgotICAgICAgICAgICAg
Y2FzZSBSQURJTzoKLSAgICAgICAgICAgICAgICAvLyBQcmV2ZW50IHNjcm9sbGluZyBkb3duIHRo
ZSBwYWdlLgotICAgICAgICAgICAgICAgIGV2dC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKLSAgICAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGNsaWNrRWxl
bWVudCkgewotICAgICAgICAgICAgZGlzcGF0Y2hTaW11bGF0ZWRDbGljayhldnQpOwotICAgICAg
ICAgICAgZXZ0LT5zZXREZWZhdWx0SGFuZGxlZCgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgaWYgKGV2dC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5rZXlk
b3duRXZlbnQgJiYgZXZ0LT5pc0tleWJvYXJkRXZlbnQoKSkgewotICAgICAgICBjb25zdCBTdHJp
bmcmIGtleSA9IHN0YXRpY19jYXN0PEtleWJvYXJkRXZlbnQqPihldnQpLT5rZXlJZGVudGlmaWVy
KCk7Ci0KLSAgICAgICAgaWYgKGtleSA9PSAiVSswMDIwIikgewotICAgICAgICAgICAgc3dpdGNo
IChkZXByZWNhdGVkSW5wdXRUeXBlKCkpIHsKLSAgICAgICAgICAgIGNhc2UgQlVUVE9OOgotICAg
ICAgICAgICAgY2FzZSBDSEVDS0JPWDoKLSAgICAgICAgICAgIGNhc2UgRklMRToKLSAgICAgICAg
ICAgIGNhc2UgSU1BR0U6Ci0gICAgICAgICAgICBjYXNlIFJFU0VUOgotICAgICAgICAgICAgY2Fz
ZSBTVUJNSVQ6Ci0gICAgICAgICAgICBjYXNlIFJBRElPOgotICAgICAgICAgICAgICAgIHNldEFj
dGl2ZSh0cnVlLCB0cnVlKTsKLSAgICAgICAgICAgICAgICAvLyBObyBzZXREZWZhdWx0SGFuZGxl
ZCgpLCBiZWNhdXNlIElFIGRpc3BhdGNoZXMgYSBrZXlwcmVzcyBpbiB0aGlzIGNhc2UKLSAgICAg
ICAgICAgICAgICAvLyBhbmQgdGhlIGNhbGxlciB3aWxsIG9ubHkgZGlzcGF0Y2ggYSBrZXlwcmVz
cyBpZiB3ZSBkb24ndCBjYWxsIHNldERlZmF1bHRIYW5kbGVkLgotICAgICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoZGVwcmVjYXRlZElucHV0VHlwZSgp
ID09IFJBRElPICYmIChrZXkgPT0gIlVwIiB8fCBrZXkgPT0gIkRvd24iIHx8IGtleSA9PSAiTGVm
dCIgfHwga2V5ID09ICJSaWdodCIpKSB7Ci0gICAgICAgICAgICAvLyBMZWZ0IGFuZCB1cCBtZWFu
ICJwcmV2aW91cyByYWRpbyBidXR0b24iLgotICAgICAgICAgICAgLy8gUmlnaHQgYW5kIGRvd24g
bWVhbiAibmV4dCByYWRpbyBidXR0b24iLgotICAgICAgICAgICAgLy8gVGVzdGVkIGluIFdpbklF
LCBhbmQgZXZlbiBmb3IgUlRMLCBsZWZ0IHN0aWxsIG1lYW5zIHByZXZpb3VzIHJhZGlvIGJ1dHRv
biAoYW5kIHNvIG1vdmVzCi0gICAgICAgICAgICAvLyB0byB0aGUgcmlnaHQpLiAgU2VlbXMgc3Ry
YW5nZSwgYnV0IHdlJ2xsIG1hdGNoIGl0LgotICAgICAgICAgICAgLy8gSG93ZXZlciwgd2hlbiB1
c2luZyBTcGF0aWFsIE5hdmlnYXRpb24sIHdlIG5lZWQgdG8gYmUgYWJsZSB0byBuYXZpZ2F0ZSB3
aXRob3V0IGNoYW5naW5nIHRoZSBzZWxlY3Rpb24uCi0gICAgICAgICAgICBpZiAoIWRvY3VtZW50
KCktPmZyYW1lKCkgfHwgIWRvY3VtZW50KCktPmZyYW1lKCktPnNldHRpbmdzKCkgfHwgIWRvY3Vt
ZW50KCktPmZyYW1lKCktPnNldHRpbmdzKCktPmlzU3BhdGlhbE5hdmlnYXRpb25FbmFibGVkKCkp
IHsKLSAgICAgICAgICAgICAgICBib29sIGZvcndhcmQgPSAoa2V5ID09ICJEb3duIiB8fCBrZXkg
PT0gIlJpZ2h0Iik7Ci0KLSAgICAgICAgICAgICAgICAvLyBXZSBjYW4gb25seSBzdGF5IHdpdGhp
biB0aGUgZm9ybSdzIGNoaWxkcmVuIGlmIHRoZSBmb3JtIGhhc24ndCBiZWVuIGRlbW90ZWQgdG8g
YSBsZWFmIGJlY2F1c2UKLSAgICAgICAgICAgICAgICAvLyBvZiBtYWxmb3JtZWQgSFRNTC4KLSAg
ICAgICAgICAgICAgICBOb2RlKiBuID0gdGhpczsKLSAgICAgICAgICAgICAgICB3aGlsZSAoKG4g
PSAoZm9yd2FyZCA/IG4tPnRyYXZlcnNlTmV4dE5vZGUoKSA6IG4tPnRyYXZlcnNlUHJldmlvdXNO
b2RlKCkpKSkgewotICAgICAgICAgICAgICAgICAgICAvLyBPbmNlIHdlIGVuY291bnRlciBhIGZv
cm0gZWxlbWVudCwgd2Uga25vdyB3ZSdyZSB0aHJvdWdoLgotICAgICAgICAgICAgICAgICAgICBp
ZiAobi0+aGFzVGFnTmFtZShmb3JtVGFnKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotCi0gICAgICAgICAgICAgICAgICAgIC8vIExvb2sgZm9yIG1vcmUgcmFkaW8gYnV0dG9ucy4K
LSAgICAgICAgICAgICAgICAgICAgaWYgKG4tPmhhc1RhZ05hbWUoaW5wdXRUYWcpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBIVE1MSW5wdXRFbGVtZW50KiBlbHQgPSBzdGF0aWNfY2FzdDxI
VE1MSW5wdXRFbGVtZW50Kj4obik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWx0LT5m
b3JtKCkgIT0gZm9ybSgpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKG4tPmhhc1RhZ05hbWUoaW5wdXRUYWcpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgSFRNTElucHV0RWxlbWVudCogaW5wdXRFbHQgPSBzdGF0
aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4obik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKGlucHV0RWx0LT5kZXByZWNhdGVkSW5wdXRUeXBlKCkgPT0gUkFESU8gJiYgaW5wdXRF
bHQtPm5hbWUoKSA9PSBuYW1lKCkgJiYgaW5wdXRFbHQtPmlzRm9jdXNhYmxlKCkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRFbHQtPnNldENoZWNrZWQodHJ1ZSk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50KCktPnNldEZvY3VzZWROb2Rl
KGlucHV0RWx0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRFbHQtPmRp
c3BhdGNoU2ltdWxhdGVkQ2xpY2soZXZ0LCBmYWxzZSwgZmFsc2UpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBldnQtPnNldERlZmF1bHRIYW5kbGVkKCk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChl
dnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkua2V5dXBFdmVudCAmJiBldnQtPmlzS2V5Ym9hcmRF
dmVudCgpKSB7Ci0gICAgICAgIGJvb2wgY2xpY2tFbGVtZW50ID0gZmFsc2U7Ci0KLSAgICAgICAg
Y29uc3QgU3RyaW5nJiBrZXkgPSBzdGF0aWNfY2FzdDxLZXlib2FyZEV2ZW50Kj4oZXZ0KS0+a2V5
SWRlbnRpZmllcigpOwotCi0gICAgICAgIGlmIChrZXkgPT0gIlUrMDAyMCIpIHsKLSAgICAgICAg
ICAgIHN3aXRjaCAoZGVwcmVjYXRlZElucHV0VHlwZSgpKSB7Ci0gICAgICAgICAgICBjYXNlIEJV
VFRPTjoKLSAgICAgICAgICAgIGNhc2UgQ0hFQ0tCT1g6Ci0gICAgICAgICAgICBjYXNlIEZJTEU6
Ci0gICAgICAgICAgICBjYXNlIElNQUdFOgotICAgICAgICAgICAgY2FzZSBSRVNFVDoKLSAgICAg
ICAgICAgIGNhc2UgU1VCTUlUOgotICAgICAgICAgICAgICAgIC8vIFNpbXVsYXRlIG1vdXNlIGNs
aWNrIGZvciBzcGFjZWJhciBmb3IgdGhlc2UgdHlwZXMgb2YgZWxlbWVudHMuCi0gICAgICAgICAg
ICAgICAgLy8gVGhlIEFwcEtpdCBhbHJlYWR5IGRvZXMgdGhpcyBmb3Igc29tZSwgYnV0IG5vdCBh
bGwsIG9mIHRoZW0uCi0gICAgICAgICAgICAgICAgY2xpY2tFbGVtZW50ID0gdHJ1ZTsKLSAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgUkFESU86Ci0gICAgICAgICAgICAg
ICAgLy8gSWYgYW4gdW5zZWxlY3RlZCByYWRpbyBpcyB0YWJiZWQgaW50byAoYmVjYXVzZSB0aGUg
ZW50aXJlIGdyb3VwIGhhcyBub3RoaW5nCi0gICAgICAgICAgICAgICAgLy8gY2hlY2tlZCwgb3Ig
YmVjYXVzZSBvZiBzb21lIGV4cGxpY2l0IC5mb2N1cygpIGNhbGwpLCB0aGVuIGFsbG93IHNwYWNl
IHRvIGNoZWNrIGl0LgotICAgICAgICAgICAgICAgIGlmICghY2hlY2tlZCgpKQotICAgICAgICAg
ICAgICAgICAgICBjbGlja0VsZW1lbnQgPSB0cnVlOwotICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgY2FzZSBDT0xPUjoKLSAgICAgICAgICAgIGNhc2UgREFURToKLSAgICAgICAg
ICAgIGNhc2UgREFURVRJTUU6Ci0gICAgICAgICAgICBjYXNlIERBVEVUSU1FTE9DQUw6Ci0gICAg
ICAgICAgICBjYXNlIEVNQUlMOgotICAgICAgICAgICAgY2FzZSBISURERU46Ci0gICAgICAgICAg
ICBjYXNlIElTSU5ERVg6Ci0gICAgICAgICAgICBjYXNlIE1PTlRIOgotICAgICAgICAgICAgY2Fz
ZSBOVU1CRVI6Ci0gICAgICAgICAgICBjYXNlIFBBU1NXT1JEOgotICAgICAgICAgICAgY2FzZSBS
QU5HRToKLSAgICAgICAgICAgIGNhc2UgU0VBUkNIOgotICAgICAgICAgICAgY2FzZSBURUxFUEhP
TkU6Ci0gICAgICAgICAgICBjYXNlIFRFWFQ6Ci0gICAgICAgICAgICBjYXNlIFRJTUU6Ci0gICAg
ICAgICAgICBjYXNlIFVSTDoKLSAgICAgICAgICAgIGNhc2UgV0VFSzoKLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQorICAgIGlmIChldnQtPmlzS2V5Ym9h
cmRFdmVudCgpICYmIGV2dC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5rZXlwcmVzc0V2ZW50ICYm
IG1faW5wdXRUeXBlLT5oYW5kbGVLZXlwcmVzc0V2ZW50KHN0YXRpY19jYXN0PEtleWJvYXJkRXZl
bnQqPihldnQpLCBpbXBsaWNpdFN1Ym1pc3Npb24pKQorICAgICAgICByZXR1cm47CiAKLSAgICAg
ICAgaWYgKGNsaWNrRWxlbWVudCkgewotICAgICAgICAgICAgaWYgKGFjdGl2ZSgpKQotICAgICAg
ICAgICAgICAgIGRpc3BhdGNoU2ltdWxhdGVkQ2xpY2soZXZ0KTsKLSAgICAgICAgICAgIGV2dC0+
c2V0RGVmYXVsdEhhbmRsZWQoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfSAgICAg
ICAgCi0gICAgfQorICAgIGlmIChldnQtPmlzS2V5Ym9hcmRFdmVudCgpICYmIGV2dC0+dHlwZSgp
ID09IGV2ZW50TmFtZXMoKS5rZXl1cEV2ZW50ICYmIG1faW5wdXRUeXBlLT5oYW5kbGVLZXl1cEV2
ZW50KHN0YXRpY19jYXN0PEtleWJvYXJkRXZlbnQqPihldnQpKSkKKyAgICAgICAgcmV0dXJuOwog
CiAgICAgaWYgKGltcGxpY2l0U3VibWlzc2lvbikgewogICAgICAgICBpZiAoaXNTZWFyY2hGaWVs
ZCgpKSB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcCBiL1dlYkNvcmUv
aHRtbC9JbnB1dFR5cGUuY3BwCmluZGV4IDI5NGY3NWViZDcxOGU3MjE3NTljYmI2NjVlMzQ5YTgz
NTUyYTE3MDcuLjQwYTE5NGY0OTBmZDM3MWYyZjRhMmQyMWY2ZGMzMTRhM2MwYzI1NzkgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9JbnB1
dFR5cGUuY3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiSGlkZGVuSW5wdXRUeXBlLmgi
CiAjaW5jbHVkZSAiSW1hZ2VJbnB1dFR5cGUuaCIKICNpbmNsdWRlICJJc0luZGV4SW5wdXRUeXBl
LmgiCisjaW5jbHVkZSAiS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIkxvY2FsaXplZFN0cmlu
Z3MuaCIKICNpbmNsdWRlICJNb250aElucHV0VHlwZS5oIgogI2luY2x1ZGUgIk51bWJlcklucHV0
VHlwZS5oIgpAQCAtMjgwLDYgKzI4MSwxMSBAQCBTdHJpbmcgSW5wdXRUeXBlOjp2YWx1ZU1pc3Np
bmdUZXh0KCkgY29uc3QKICAgICByZXR1cm4gdmFsaWRhdGlvbk1lc3NhZ2VWYWx1ZU1pc3NpbmdU
ZXh0KCk7CiB9CiAKK2Jvb2wgSW5wdXRUeXBlOjpzaG91bGRTdWJtaXRJbXBsaWNpdGx5KEV2ZW50
KikKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIGJvb2wgSW5wdXRUeXBlOjpoYW5kbGVDbGlj
a0V2ZW50KE1vdXNlRXZlbnQqKQogewogICAgIHJldHVybiBmYWxzZTsKQEAgLTI5NSw2ICszMDEs
MjAgQEAgYm9vbCBJbnB1dFR5cGU6OmhhbmRsZUtleWRvd25FdmVudChLZXlib2FyZEV2ZW50KikK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2Jvb2wgSW5wdXRUeXBlOjpoYW5kbGVLZXlwcmVzc0V2
ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50LCBib29sJiBpbXBsaWNpdFN1Ym1pc3Npb24pCit7Cisg
ICAgaWYgKGV2ZW50LT5jaGFyQ29kZSgpID09ICdccicpIHsKKyAgICAgICAgLy8gU2ltdWxhdGUg
bW91c2UgY2xpY2sgb24gdGhlIGRlZmF1bHQgZm9ybSBidXR0b24gZm9yIGVudGVyIGZvciB0aGVz
ZSB0eXBlcyBvZiBlbGVtZW50cy4KKyAgICAgICAgaW1wbGljaXRTdWJtaXNzaW9uID0gdHJ1ZTsK
KyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIElucHV0VHlwZTo6aGFuZGxlS2V5
dXBFdmVudChLZXlib2FyZEV2ZW50KikKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIFJlbmRl
ck9iamVjdCogSW5wdXRUeXBlOjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0
eWxlKiBzdHlsZSkgY29uc3QKIHsKICAgICByZXR1cm4gUmVuZGVyT2JqZWN0OjpjcmVhdGVPYmpl
Y3QoZWxlbWVudCgpLCBzdHlsZSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBl
LmggYi9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKaW5kZXggYzE0MTdmYTRlNGI0NjAwODQ0OTk1
YzQzNTcwZjY2ZWE4NGI0OTcxMS4uNDUxNWFjOTI3ZmE1NzkzM2FmZGIxMDA4NWY4YzNmY2U5YjA4
ODZlNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oCisrKyBiL1dlYkNvcmUv
aHRtbC9JbnB1dFR5cGUuaApAQCAtMTAzLDEzICsxMDMsMTYgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgU3RyaW5nIHZhbHVlTWlzc2luZ1RleHQoKSBjb25zdDsKIAogICAgIC8vIEV2ZW50IGhhbmRs
ZXJzCi0gICAgLy8gSWYgdGhlIHJldHVybiB2YWx1ZSBpcyB0cnVlLCBkbyBubyBmdXJ0aGVyIGRl
ZmF1bHQgZXZlbnQgaGFuZGxpbmcgaW4gdGhlCi0gICAgLy8gZGVmYXVsdCBldmVudCBoYW5kbGVy
LiBJZiBhbiBldmVudCBoYW5kbGVyIGNhbGxzIEV2ZW50OjpzZXREZWZhdWx0SGFuZGxlZCgpLAot
ICAgIC8vIGl0cyByZXR1cm4gdmFsdWUgbXVzdCBiZSB0cnVlLgorICAgIC8vIElmIHRoZSByZXR1
cm4gdmFsdWUgb2YgaGFuZGxlRm9vRXZlbnQoKSBpcyB0cnVlLCBkbyBubyBmdXJ0aGVyIGRlZmF1
bHQKKyAgICAvLyBldmVudCBoYW5kbGluZyBpbiB0aGUgZGVmYXVsdCBldmVudCBoYW5kbGVyLiBJ
ZiBhbiBldmVudCBoYW5kbGVyIGNhbGxzCisgICAgLy8gRXZlbnQ6OnNldERlZmF1bHRIYW5kbGVk
KCksIGl0cyByZXR1cm4gdmFsdWUgbXVzdCBiZSB0cnVlLgogCisgICAgdmlydHVhbCBib29sIHNo
b3VsZFN1Ym1pdEltcGxpY2l0bHkoRXZlbnQqKTsKICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlQ2xp
Y2tFdmVudChNb3VzZUV2ZW50Kik7CiAgICAgdmlydHVhbCBib29sIGhhbmRsZURPTUFjdGl2YXRl
RXZlbnQoRXZlbnQqKTsKICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlS2V5ZG93bkV2ZW50KEtleWJv
YXJkRXZlbnQqKTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlS2V5cHJlc3NFdmVudChLZXlib2Fy
ZEV2ZW50KiwgYm9vbCYgaW1wbGljaXRTdWJtaXNzaW9uKTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFu
ZGxlS2V5dXBFdmVudChLZXlib2FyZEV2ZW50Kik7CiAKICAgICAvLyBNaXNjZWxsYW5lb3VzIGZ1
bmN0aW9ucwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvUmFkaW9JbnB1dFR5cGUuY3BwIGIv
V2ViQ29yZS9odG1sL1JhZGlvSW5wdXRUeXBlLmNwcAppbmRleCBmNTljZjc4ZjM2MzdmNzI2ZTE4
YWJhNDRhNDhkOWY1NjE2ZTc2NzM5Li4yYWJhMDQzZmI0Njc5ZTUzZjQ2NGM3MzM1YTYzMGEzMThi
NTE1YjI2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvUmFkaW9JbnB1dFR5cGUuY3BwCisrKyBi
L1dlYkNvcmUvaHRtbC9SYWRpb0lucHV0VHlwZS5jcHAKQEAgLTEsNDMgKzEsNDAgQEAKIC8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICog
Q29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6CisgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwor
ICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCiAgKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
LSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCiAgKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAot
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiUmFkaW9JbnB1dFR5cGUuaCIKIAorI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAi
SFRNTElucHV0RWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIktl
eWJvYXJkRXZlbnQuaCIKICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW5jbHVkZSAi
TW91c2VFdmVudC5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NP
d25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCit1c2luZyBuYW1lc3BhY2UgSFRNTE5h
bWVzOworCiBQYXNzT3duUHRyPElucHV0VHlwZT4gUmFkaW9JbnB1dFR5cGU6OmNyZWF0ZShIVE1M
SW5wdXRFbGVtZW50KiBlbGVtZW50KQogewogICAgIHJldHVybiBhZG9wdFB0cihuZXcgUmFkaW9J
bnB1dFR5cGUoZWxlbWVudCkpOwpAQCAtNjQsNCArNjEsNjEgQEAgYm9vbCBSYWRpb0lucHV0VHlw
ZTo6aGFuZGxlQ2xpY2tFdmVudChNb3VzZUV2ZW50KiBldmVudCkKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAorYm9vbCBSYWRpb0lucHV0VHlwZTo6aGFuZGxlS2V5ZG93bkV2ZW50KEtleWJvYXJkRXZl
bnQqIGV2ZW50KQoreworICAgIGlmIChCYXNlQ2hlY2thYmxlSW5wdXRUeXBlOjpoYW5kbGVLZXlk
b3duRXZlbnQoZXZlbnQpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBjb25zdCBTdHJpbmcm
IGtleSA9IGV2ZW50LT5rZXlJZGVudGlmaWVyKCk7CisgICAgaWYgKGtleSAhPSAiVXAiICYmIGtl
eSAhPSAiRG93biIgJiYga2V5ICE9ICJMZWZ0IiAmJiBrZXkgIT0gIlJpZ2h0IikKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgLy8gTGVmdCBhbmQgdXAgbWVhbiAicHJldmlvdXMgcmFkaW8g
YnV0dG9uIi4KKyAgICAvLyBSaWdodCBhbmQgZG93biBtZWFuICJuZXh0IHJhZGlvIGJ1dHRvbiIu
CisgICAgLy8gVGVzdGVkIGluIFdpbklFLCBhbmQgZXZlbiBmb3IgUlRMLCBsZWZ0IHN0aWxsIG1l
YW5zIHByZXZpb3VzIHJhZGlvIGJ1dHRvbiAoYW5kIHNvIG1vdmVzCisgICAgLy8gdG8gdGhlIHJp
Z2h0KS4gIFNlZW1zIHN0cmFuZ2UsIGJ1dCB3ZSdsbCBtYXRjaCBpdC4KKyAgICAvLyBIb3dldmVy
LCB3aGVuIHVzaW5nIFNwYXRpYWwgTmF2aWdhdGlvbiwgd2UgbmVlZCB0byBiZSBhYmxlIHRvIG5h
dmlnYXRlIHdpdGhvdXQgY2hhbmdpbmcgdGhlIHNlbGVjdGlvbi4KKyAgICBEb2N1bWVudCogZG9j
dW1lbnQgPSBlbGVtZW50KCktPmRvY3VtZW50KCk7CisgICAgaWYgKGRvY3VtZW50LT5mcmFtZSgp
ICYmIGRvY3VtZW50LT5mcmFtZSgpLT5zZXR0aW5ncygpICYmIGRvY3VtZW50LT5mcmFtZSgpLT5z
ZXR0aW5ncygpLT5pc1NwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZCgpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgYm9vbCBmb3J3YXJkID0gKGtleSA9PSAiRG93biIgfHwga2V5ID09ICJSaWdo
dCIpOworCisgICAgLy8gV2UgY2FuIG9ubHkgc3RheSB3aXRoaW4gdGhlIGZvcm0ncyBjaGlsZHJl
biBpZiB0aGUgZm9ybSBoYXNuJ3QgYmVlbiBkZW1vdGVkIHRvIGEgbGVhZiBiZWNhdXNlCisgICAg
Ly8gb2YgbWFsZm9ybWVkIEhUTUwuCisgICAgTm9kZSogbm9kZSA9IGVsZW1lbnQoKTsKKyAgICB3
aGlsZSAoKG5vZGUgPSAoZm9yd2FyZCA/IG5vZGUtPnRyYXZlcnNlTmV4dE5vZGUoKSA6IG5vZGUt
PnRyYXZlcnNlUHJldmlvdXNOb2RlKCkpKSkgeworICAgICAgICAvLyBPbmNlIHdlIGVuY291bnRl
ciBhIGZvcm0gZWxlbWVudCwgd2Uga25vdyB3ZSdyZSB0aHJvdWdoLgorICAgICAgICBpZiAobm9k
ZS0+aGFzVGFnTmFtZShmb3JtVGFnKSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAvLyBM
b29rIGZvciBtb3JlIHJhZGlvIGJ1dHRvbnMuCisgICAgICAgIGlmICghbm9kZS0+aGFzVGFnTmFt
ZShpbnB1dFRhZykpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgSFRNTElucHV0RWxl
bWVudCogaW5wdXRFbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KG5vZGUp
OworICAgICAgICBpZiAoaW5wdXRFbGVtZW50LT5mb3JtKCkgIT0gZWxlbWVudCgpLT5mb3JtKCkp
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKGlucHV0RWxlbWVudC0+aXNSYWRpb0J1
dHRvbigpICYmIGlucHV0RWxlbWVudC0+bmFtZSgpID09IGVsZW1lbnQoKS0+bmFtZSgpICYmIGlu
cHV0RWxlbWVudC0+aXNGb2N1c2FibGUoKSkgeworICAgICAgICAgICAgaW5wdXRFbGVtZW50LT5z
ZXRDaGVja2VkKHRydWUpOworICAgICAgICAgICAgZG9jdW1lbnQtPnNldEZvY3VzZWROb2RlKGlu
cHV0RWxlbWVudCk7CisgICAgICAgICAgICBpbnB1dEVsZW1lbnQtPmRpc3BhdGNoU2ltdWxhdGVk
Q2xpY2soZXZlbnQsIGZhbHNlLCBmYWxzZSk7CisgICAgICAgICAgICBldmVudC0+c2V0RGVmYXVs
dEhhbmRsZWQoKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQor
ICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBSYWRpb0lucHV0VHlwZTo6aGFuZGxlS2V5dXBF
dmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKK3sKKyAgICBjb25zdCBTdHJpbmcmIGtleSA9IGV2
ZW50LT5rZXlJZGVudGlmaWVyKCk7CisgICAgaWYgKGtleSAhPSAiVSswMDIwIikKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIC8vIElmIGFuIHVuc2VsZWN0ZWQgcmFkaW8gaXMgdGFiYmVkIGlu
dG8gKGJlY2F1c2UgdGhlIGVudGlyZSBncm91cCBoYXMgbm90aGluZworICAgIC8vIGNoZWNrZWQs
IG9yIGJlY2F1c2Ugb2Ygc29tZSBleHBsaWNpdCAuZm9jdXMoKSBjYWxsKSwgdGhlbiBhbGxvdyBz
cGFjZSB0byBjaGVjayBpdC4KKyAgICBpZiAoZWxlbWVudCgpLT5jaGVja2VkKCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBpZiAoZWxlbWVudCgpLT5hY3RpdmUoKSkKKyAgICAgICAgZWxl
bWVudCgpLT5kaXNwYXRjaFNpbXVsYXRlZENsaWNrKGV2ZW50KTsKKyAgICBldmVudC0+c2V0RGVm
YXVsdEhhbmRsZWQoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL1JhZGlvSW5wdXRUeXBlLmggYi9XZWJDb3Jl
L2h0bWwvUmFkaW9JbnB1dFR5cGUuaAppbmRleCAyN2FlNzVlYzViMGE2OTgwNzJmZDk4MjhkYTBi
Y2E1YWFiODQxZGE5Li42MmJlY2Y2NjljOTFhYWY2ZmQzZjZjZTE1ZDIxMDU5NWIxOWYxYmE1IDEw
MDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvUmFkaW9JbnB1dFR5cGUuaAorKysgYi9XZWJDb3JlL2h0
bWwvUmFkaW9JbnB1dFR5cGUuaApAQCAtNDUsNiArNDUsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1
YWwgYm9vbCB2YWx1ZU1pc3NpbmcoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAgICAgdmlydHVhbCBT
dHJpbmcgdmFsdWVNaXNzaW5nVGV4dCgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVD
bGlja0V2ZW50KE1vdXNlRXZlbnQqKTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlS2V5ZG93bkV2
ZW50KEtleWJvYXJkRXZlbnQqKTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlS2V5dXBFdmVudChL
ZXlib2FyZEV2ZW50Kik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcCBiL1dlYkNvcmUvaHRtbC9UZXh0
RmllbGRJbnB1dFR5cGUuY3BwCmluZGV4IGQ5M2Y5NzIxZjUzZTgyOGVkOGY5MmZjMTc4ZTM0Yjc0
ZjNjNzlhYzkuLjliZGVjYjhiZThjYWQ0ZDk1NGRhZjg4MDhhNjllYmNhNGJlZWJlYzcgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCisrKyBiL1dlYkNvcmUv
aHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAi
SFRNTElucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIktleWJvYXJkRXZlbnQuaCIKICNpbmNsdWRl
ICJSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuaCIKKyNpbmNsdWRlICJUZXh0RXZlbnQuaCIK
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtNDksNiArNTAsMTEgQEAgYm9vbCBUZXh0RmllbGRJbnB1dFR5cGU6OnZhbHVlTWlzc2luZyhj
b25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAogICAgIHJldHVybiB2YWx1ZS5pc0VtcHR5KCk7CiB9
CiAKK2Jvb2wgVGV4dEZpZWxkSW5wdXRUeXBlOjpzaG91bGRTdWJtaXRJbXBsaWNpdGx5KEV2ZW50
KiBldmVudCkKK3sKKyAgICByZXR1cm4gZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkudGV4
dElucHV0RXZlbnQgJiYgZXZlbnQtPmlzVGV4dEV2ZW50KCkgJiYgc3RhdGljX2Nhc3Q8VGV4dEV2
ZW50Kj4oZXZlbnQpLT5kYXRhKCkgPT0gIlxuIjsKK30KKwogYm9vbCBUZXh0RmllbGRJbnB1dFR5
cGU6OmhhbmRsZUtleWRvd25FdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKIHsKICAgICBpZiAo
IWVsZW1lbnQoKS0+Zm9jdXNlZCgpKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL1RleHRGaWVs
ZElucHV0VHlwZS5oIGIvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5oCmluZGV4IDUw
NDE4YWFjZGYyYmI4ODIzMDIxMjJmNTVjMWZlZDE3ZDhmM2IwMjUuLjRmOWVlZmY2MmJlNTY3N2Iz
ODlmODVmZTE2NWIyODk1NzUwYzI1MjAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9UZXh0Rmll
bGRJbnB1dFR5cGUuaAorKysgYi9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmgKQEAg
LTQyLDYgKzQyLDcgQEAgcHJvdGVjdGVkOgogICAgIFRleHRGaWVsZElucHV0VHlwZShIVE1MSW5w
dXRFbGVtZW50KiBlbGVtZW50KSA6IElucHV0VHlwZShlbGVtZW50KSB7IH0KICAgICB2aXJ0dWFs
IGJvb2wgaXNUZXh0RmllbGQoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgdmFsdWVNaXNzaW5n
KGNvbnN0IFN0cmluZyYpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTdWJtaXRJbXBs
aWNpdGx5KEV2ZW50Kik7CiAgICAgdmlydHVhbCBib29sIGhhbmRsZUtleWRvd25FdmVudChLZXli
b2FyZEV2ZW50Kik7CiAgICAgYm9vbCBoYW5kbGVLZXlkb3duRXZlbnRGb3JTcGluQnV0dG9uKEtl
eWJvYXJkRXZlbnQqKTsKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIo
UmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopIGNvbnN0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74991</attachid>
            <date>2010-11-28 23:36:07 -0800</date>
            <delta_ts>2010-11-28 23:52:56 -0800</delta_ts>
            <desc>Patch 2</desc>
            <filename>bug-50097-20101129163604.patch</filename>
            <type>text/plain</type>
            <size>27392</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZmI1NWJkMDZkZWUwN2IxNDEzNTkyMDg5NTc3NzNlYzdhM2QxNTAyNi4uNDU2YjM0MGU5YWU2OTMy
ZWI4NjIxNWIzNmY5NWIwMzdmMGE1MzNlZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OSBAQAorMjAxMC0xMS0yNSAgS2Vu
dCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUmVmYWN0b3IgSFRNTElucHV0RWxlbWVudDogTW92ZSBh
IHBhcnQgb2YgSFRNTElucHV0RWxlbWVudDo6CisgICAgICAgIGRlZmF1bHRFdmVudEhhbmRsZXIo
KSB0byBJbnB1dFR5cGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01MDA5NworICAgICAgICAKKyAgICAgICAgTW92ZSBhbGwgb2Yga2V5Ym9hcmQtcmVs
YXRlZCBldmVudCBoYW5kbGluZyB0byBJbnB1dFR5cGUuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
IGJlY2F1c2UgdGhpcyBzaG91bGQgbm90IGNoYW5nZSBhbnkgYmVoYXZpb3IuCisKKyAgICAgICAg
KiBodG1sL0Jhc2VCdXR0b25JbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmFzZUJ1
dHRvbklucHV0VHlwZTo6aGFuZGxlS2V5ZG93bkV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkJh
c2VCdXR0b25JbnB1dFR5cGU6OmhhbmRsZUtleXByZXNzRXZlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6QmFzZUJ1dHRvbklucHV0VHlwZTo6aGFuZGxlS2V5dXBFdmVudCk6CisgICAgICAgICogaHRt
bC9CYXNlQnV0dG9uSW5wdXRUeXBlLmg6CisgICAgICAgICogaHRtbC9CYXNlQ2hlY2thYmxlSW5w
dXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VDaGVja2FibGVJbnB1dFR5cGU6Omhh
bmRsZUtleWRvd25FdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpCYXNlQ2hlY2thYmxlSW5wdXRU
eXBlOjpoYW5kbGVLZXlwcmVzc0V2ZW50KToKKyAgICAgICAgKiBodG1sL0Jhc2VDaGVja2FibGVJ
bnB1dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL0NoZWNrYm94SW5wdXRUeXBlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNoZWNrYm94SW5wdXRUeXBlOjpoYW5kbGVLZXl1cEV2ZW50KToKKyAgICAg
ICAgKiBodG1sL0NoZWNrYm94SW5wdXRUeXBlLmg6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmRlZmF1bHRF
dmVudEhhbmRsZXIpOgorICAgICAgICAgV2UgcmVtb3ZlICFpbXBsaWNpdFN1Ym1pc3Npb24gY2hl
Y2sgZm9yIGNhbGxCYXNlQ2xhc3NFYXJseSBiZWNhdXNlCisgICAgICAgICBpbXBsaWNpdFN1Ym1p
c3Npb24gY2FuIG5vdCBiZSB0cnVlIGZvciBrZXlkb3duIGV2ZW50IGFuZCBrZXlwcmVzcworICAg
ICAgICAgZXZlbnQgYXQgdGhpcyBwb2ludC4KKyAgICAgICAgKiBodG1sL0lucHV0VHlwZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OnNob3VsZFN1Ym1pdEltcGxpY2l0bHkpOgor
ICAgICAgICAgUmV0dXJucyB0cnVlIGZvciBhIGtleXByZXNzIGV2ZW50IHdpdGggIlxyIi4gTm90
ZSB0aGF0IHdlIGRvbid0IG92ZXJsb2FkCisgICAgICAgICB0aGlzIGZ1bmN0aW9uIGZvciBCVVRU
T04sIEZJTEUsIElNQUdFLCBSRVNFVCwgYW5kIFNVQk1JVCBiZWNhdXNlIGEKKyAgICAgICAgIGtl
eXByZXNzIGV2ZW50IHdpdGggIlxyIiBmb3IgdGhlc2UgdHlwZXMgcmV0dXJucyBmcm9tIEhUTUxJ
bnB1dEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoKQorICAgICAgICAgYmVmb3JlIGltcGxp
Y2l0IHN1Ym1pc3Npb24gY2hlY2tpbmcuCisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6Omhh
bmRsZUtleXByZXNzRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjpoYW5kbGVL
ZXl1cEV2ZW50KToKKyAgICAgICAgKiBodG1sL0lucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwv
UmFkaW9JbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmFkaW9JbnB1dFR5cGU6Omhh
bmRsZUtleWRvd25FdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpSYWRpb0lucHV0VHlwZTo6aGFu
ZGxlS2V5dXBFdmVudCk6CisgICAgICAgICogaHRtbC9SYWRpb0lucHV0VHlwZS5oOgorICAgICAg
ICAqIGh0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRG
aWVsZElucHV0VHlwZTo6c2hvdWxkU3VibWl0SW1wbGljaXRseSk6CisgICAgICAgICogaHRtbC9U
ZXh0RmllbGRJbnB1dFR5cGUuaDoKKwogMjAxMC0xMS0yMyAgTU9SSVRBIEhhamltZSAgPG1vcnJp
dGFAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW50IFRhbXVyYS4KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvaHRtbC9CYXNlQnV0dG9uSW5wdXRUeXBlLmNwcCBiL1dlYkNvcmUvaHRt
bC9CYXNlQnV0dG9uSW5wdXRUeXBlLmNwcAppbmRleCBmZDZhOGZmZWQ4MGQyNTU5YmE2ODE1OGFi
ZDNlNjE0Yzg5YmJhNTdmLi40ZjhmYmUwMjkxMzQ2NDIyMTAyOThiOGE4YWZhYTk4ZDE5N2NlMjlj
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvQmFzZUJ1dHRvbklucHV0VHlwZS5jcHAKKysrIGIv
V2ViQ29yZS9odG1sL0Jhc2VCdXR0b25JbnB1dFR5cGUuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAj
aW5jbHVkZSAiQmFzZUJ1dHRvbklucHV0VHlwZS5oIgogCiAjaW5jbHVkZSAiSFRNTElucHV0RWxl
bWVudC5oIgorI2luY2x1ZGUgIktleWJvYXJkRXZlbnQuaCIKICNpbmNsdWRlICJSZW5kZXJCdXR0
b24uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDIsNiArNDMsNDUgQEAgYm9vbCBCYXNl
QnV0dG9uSW5wdXRUeXBlOjphcHBlbmRGb3JtRGF0YShGb3JtRGF0YUxpc3QmLCBib29sKSBjb25z
dAogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBCYXNlQnV0dG9uSW5wdXRUeXBlOjpoYW5k
bGVLZXlkb3duRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQpCit7CisgICAgY29uc3QgU3RyaW5n
JiBrZXkgPSBldmVudC0+a2V5SWRlbnRpZmllcigpOworICAgIGlmIChrZXkgPT0gIlUrMDAyMCIp
IHsKKyAgICAgICAgZWxlbWVudCgpLT5zZXRBY3RpdmUodHJ1ZSwgdHJ1ZSk7CisgICAgICAgIC8v
IE5vIHNldERlZmF1bHRIYW5kbGVkKCksIGJlY2F1c2UgSUUgZGlzcGF0Y2hlcyBhIGtleXByZXNz
IGluIHRoaXMgY2FzZQorICAgICAgICAvLyBhbmQgdGhlIGNhbGxlciB3aWxsIG9ubHkgZGlzcGF0
Y2ggYSBrZXlwcmVzcyBpZiB3ZSBkb24ndCBjYWxsIHNldERlZmF1bHRIYW5kbGVkKCkuCisgICAg
fQorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBCYXNlQnV0dG9uSW5wdXRUeXBlOjpoYW5k
bGVLZXlwcmVzc0V2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQoreworICAgIGludCBjaGFyQ29k
ZSA9IGV2ZW50LT5jaGFyQ29kZSgpOworICAgIGlmIChjaGFyQ29kZSA9PSAnXHInKSB7CisgICAg
ICAgIGVsZW1lbnQoKS0+ZGlzcGF0Y2hTaW11bGF0ZWRDbGljayhldmVudCk7CisgICAgICAgIGV2
ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9Cisg
ICAgaWYgKGNoYXJDb2RlID09ICcgJykgeworICAgICAgICAvLyBQcmV2ZW50IHNjcm9sbGluZyBk
b3duIHRoZSBwYWdlLgorICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBCYXNl
QnV0dG9uSW5wdXRUeXBlOjpoYW5kbGVLZXl1cEV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQor
eworICAgIGNvbnN0IFN0cmluZyYga2V5ID0gZXZlbnQtPmtleUlkZW50aWZpZXIoKTsKKyAgICBp
ZiAoa2V5ICE9ICJVKzAwMjAiKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgLy8gU2ltdWxh
dGUgbW91c2UgY2xpY2sgZm9yIHNwYWNlYmFyIGZvciB0aGVzZSB0eXBlcyBvZiBlbGVtZW50cy4K
KyAgICBpZiAoZWxlbWVudCgpLT5hY3RpdmUoKSkKKyAgICAgICAgZWxlbWVudCgpLT5kaXNwYXRj
aFNpbXVsYXRlZENsaWNrKGV2ZW50KTsKKyAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKwogUmVuZGVyT2JqZWN0KiBCYXNlQnV0dG9uSW5wdXRUeXBl
OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikgY29uc3QK
IHsKICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyQnV0dG9uKGVsZW1lbnQoKSk7CmRpZmYg
LS1naXQgYS9XZWJDb3JlL2h0bWwvQmFzZUJ1dHRvbklucHV0VHlwZS5oIGIvV2ViQ29yZS9odG1s
L0Jhc2VCdXR0b25JbnB1dFR5cGUuaAppbmRleCBlN2Y2ODNiYWE5MWIzNTdhZjZjYzkyYTI4NGEz
YTcyMjdiYjJjMTNlLi41OWUyOGJmOTZjZDg5MDFkNTdkZDZhOTM2NTMyZjkxMDlmYTcwMmVmIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvQmFzZUJ1dHRvbklucHV0VHlwZS5oCisrKyBiL1dlYkNv
cmUvaHRtbC9CYXNlQnV0dG9uSW5wdXRUeXBlLmgKQEAgLTQyLDYgKzQyLDkgQEAgcHJvdGVjdGVk
OgogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBhcHBlbmRGb3JtRGF0YShGb3JtRGF0YUxp
c3QmLCBib29sKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlS2V5ZG93bkV2ZW50KEtl
eWJvYXJkRXZlbnQqKTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlS2V5cHJlc3NFdmVudChLZXli
b2FyZEV2ZW50Kik7CisgICAgdmlydHVhbCBib29sIGhhbmRsZUtleXVwRXZlbnQoS2V5Ym9hcmRF
dmVudCopOwogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJB
cmVuYSosIFJlbmRlclN0eWxlKikgY29uc3Q7CiB9OwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0
bWwvQmFzZUNoZWNrYWJsZUlucHV0VHlwZS5jcHAgYi9XZWJDb3JlL2h0bWwvQmFzZUNoZWNrYWJs
ZUlucHV0VHlwZS5jcHAKaW5kZXggMDA5ZThlNDhkM2UyMGFmMTNkMGFmZWUzYTE4YTc5ZTc0ODhk
MTA1YS4uOTQwYWNmNDJiODMyZmZkZjgzMzM2NDhlMDlhYmVlOGM0N2MxZGExYyAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9odG1sL0Jhc2VDaGVja2FibGVJbnB1dFR5cGUuY3BwCisrKyBiL1dlYkNvcmUv
aHRtbC9CYXNlQ2hlY2thYmxlSW5wdXRUeXBlLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1
ZGUgIkZvcm1EYXRhTGlzdC5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKICNpbmNs
dWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAi
UmVndWxhckV4cHJlc3Npb24uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTcsNCArNTgs
MjUgQEAgYm9vbCBCYXNlQ2hlY2thYmxlSW5wdXRUeXBlOjphcHBlbmRGb3JtRGF0YShGb3JtRGF0
YUxpc3QmIGVuY29kaW5nLCBib29sKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCitib29s
IEJhc2VDaGVja2FibGVJbnB1dFR5cGU6OmhhbmRsZUtleWRvd25FdmVudChLZXlib2FyZEV2ZW50
KiBldmVudCkKK3sKKyAgICBjb25zdCBTdHJpbmcmIGtleSA9IGV2ZW50LT5rZXlJZGVudGlmaWVy
KCk7CisgICAgaWYgKGtleSA9PSAiVSswMDIwIikgeworICAgICAgICBlbGVtZW50KCktPnNldEFj
dGl2ZSh0cnVlLCB0cnVlKTsKKyAgICAgICAgLy8gTm8gc2V0RGVmYXVsdEhhbmRsZWQoKSwgYmVj
YXVzZSBJRSBkaXNwYXRjaGVzIGEga2V5cHJlc3MgaW4gdGhpcyBjYXNlCisgICAgICAgIC8vIGFu
ZCB0aGUgY2FsbGVyIHdpbGwgb25seSBkaXNwYXRjaCBhIGtleXByZXNzIGlmIHdlIGRvbid0IGNh
bGwgc2V0RGVmYXVsdEhhbmRsZWQoKS4KKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCiti
b29sIEJhc2VDaGVja2FibGVJbnB1dFR5cGU6OmhhbmRsZUtleXByZXNzRXZlbnQoS2V5Ym9hcmRF
dmVudCogZXZlbnQpCit7CisgICAgaWYgKGV2ZW50LT5jaGFyQ29kZSgpID09ICcgJykgeworICAg
ICAgICAvLyBQcmV2ZW50IHNjcm9sbGluZyBkb3duIHRoZSBwYWdlLgorICAgICAgICBldmVudC0+
c2V0RGVmYXVsdEhhbmRsZWQoKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJl
dHVybiBmYWxzZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9odG1sL0Jhc2VDaGVja2FibGVJbnB1dFR5cGUuaCBiL1dlYkNvcmUvaHRtbC9CYXNlQ2hl
Y2thYmxlSW5wdXRUeXBlLmgKaW5kZXggMDJlZGYyOTY4NDJlN2RjYjNiMDM0MjUxODZkNzFjNWFi
OTM3Njg2YS4uOGNiOTVjZjY3NzBlNzYzNTZlMTU2NzIxMmIzOWM5NjkyNzgxODA0OSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9odG1sL0Jhc2VDaGVja2FibGVJbnB1dFR5cGUuaAorKysgYi9XZWJDb3Jl
L2h0bWwvQmFzZUNoZWNrYWJsZUlucHV0VHlwZS5oCkBAIC0zOSwxMSArMzksMTMgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgQmFzZUNoZWNrYWJsZUlucHV0VHlwZSA6IHB1YmxpYyBJbnB1
dFR5cGUgewogcHJvdGVjdGVkOgogICAgIEJhc2VDaGVja2FibGVJbnB1dFR5cGUoSFRNTElucHV0
RWxlbWVudCogZWxlbWVudCkgOiBJbnB1dFR5cGUoZWxlbWVudCkgeyB9CisgICAgdmlydHVhbCBi
b29sIGhhbmRsZUtleWRvd25FdmVudChLZXlib2FyZEV2ZW50Kik7CiAKIHByaXZhdGU6CiAgICAg
dmlydHVhbCBib29sIHNhdmVGb3JtQ29udHJvbFN0YXRlKFN0cmluZyYpIGNvbnN0OwogICAgIHZp
cnR1YWwgdm9pZCByZXN0b3JlRm9ybUNvbnRyb2xTdGF0ZShjb25zdCBTdHJpbmcmKSBjb25zdDsK
ICAgICB2aXJ0dWFsIGJvb2wgYXBwZW5kRm9ybURhdGEoRm9ybURhdGFMaXN0JiwgYm9vbCkgY29u
c3Q7CisgICAgdmlydHVhbCBib29sIGhhbmRsZUtleXByZXNzRXZlbnQoS2V5Ym9hcmRFdmVudCop
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1s
L0NoZWNrYm94SW5wdXRUeXBlLmNwcCBiL1dlYkNvcmUvaHRtbC9DaGVja2JveElucHV0VHlwZS5j
cHAKaW5kZXggNWUwMTVlNGZkMzhkNDkxNjc1Y2U4OGNkOGQzN2EwZDM5NTM4Y2ZiMy4uNzlkOWU0
MjU5ZDgxZmJiZGE5NTQ5N2JkOWFjOWJiMjU5ZjFhZmNmNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9o
dG1sL0NoZWNrYm94SW5wdXRUeXBlLmNwcAorKysgYi9XZWJDb3JlL2h0bWwvQ2hlY2tib3hJbnB1
dFR5cGUuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiQ2hlY2tib3hJbnB1dFR5cGUu
aCIKIAogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKKyNpbmNsdWRlICJLZXlib2FyZEV2
ZW50LmgiCiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUgPHd0Zi9QYXNz
T3duUHRyLmg+CiAKQEAgLTU3LDQgKzU4LDE1IEBAIFN0cmluZyBDaGVja2JveElucHV0VHlwZTo6
dmFsdWVNaXNzaW5nVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIHZhbGlkYXRpb25NZXNzYWdlVmFs
dWVNaXNzaW5nRm9yQ2hlY2tib3hUZXh0KCk7CiB9CiAKK2Jvb2wgQ2hlY2tib3hJbnB1dFR5cGU6
OmhhbmRsZUtleXVwRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQpCit7CisgICAgY29uc3QgU3Ry
aW5nJiBrZXkgPSBldmVudC0+a2V5SWRlbnRpZmllcigpOworICAgIGlmIChrZXkgIT0gIlUrMDAy
MCIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoZWxlbWVudCgpLT5hY3RpdmUoKSkK
KyAgICAgICAgZWxlbWVudCgpLT5kaXNwYXRjaFNpbXVsYXRlZENsaWNrKGV2ZW50KTsKKyAgICBl
dmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0NoZWNrYm94SW5wdXRU
eXBlLmggYi9XZWJDb3JlL2h0bWwvQ2hlY2tib3hJbnB1dFR5cGUuaAppbmRleCBhNGM0MTlkYjdk
ZWZmZWEyNWI5ZmU3OTczNDRlMWI4YTE5Nzk4N2ZmLi5lNjZhYjE1MzllOWI5MzgxYzkxNGJkZmI3
ODk0NmRiMWFkMWIzZGZjIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvQ2hlY2tib3hJbnB1dFR5
cGUuaAorKysgYi9XZWJDb3JlL2h0bWwvQ2hlY2tib3hJbnB1dFR5cGUuaApAQCAtNDQsNiArNDQs
NyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBmb3JtQ29udHJv
bFR5cGUoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgdmFsdWVNaXNzaW5nKGNvbnN0IFN0cmlu
ZyYpIGNvbnN0OwogICAgIHZpcnR1YWwgU3RyaW5nIHZhbHVlTWlzc2luZ1RleHQoKSBjb25zdDsK
KyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlS2V5dXBFdmVudChLZXlib2FyZEV2ZW50Kik7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXgg
NTVmYTE5NWQyYWJmMTY1OTA1Mzg2NzIyY2QwNGJkYTU1NzFlNTE5ZS4uZjZkNjFlMjc0YWQyMmRj
ZWY4MmU5MWQ5YmJmNmYzYmM3OWJiN2Q3NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxJ
bnB1dEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApA
QCAtMTI5MiwxMSArMTI5Miw2IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6ZGVmYXVsdEV2ZW50
SGFuZGxlcihFdmVudCogZXZ0KQogICAgIC8vIEZJWE1FOiBJdCB3b3VsZCBiZSBiZXR0ZXIgdG8g
cmVmYWN0b3IgdGhpcyBmb3IgdGhlIGRpZmZlcmVudCB0eXBlcyBvZiBpbnB1dCBlbGVtZW50Lgog
ICAgIC8vIEhhdmluZyB0aGVtIGFsbCBpbiBvbmUgZ2lhbnQgZnVuY3Rpb24gbWFrZXMgdGhpcyBo
YXJkIHRvIHJlYWQsIGFuZCBhbG1vc3QgYWxsIHRoZSBoYW5kbGluZyBpcyB0eXBlLXNwZWNpZmlj
LgogCi0gICAgYm9vbCBpbXBsaWNpdFN1Ym1pc3Npb24gPSBmYWxzZTsKLQotICAgIGlmIChpc1Rl
eHRGaWVsZCgpICYmIGV2dC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS50ZXh0SW5wdXRFdmVudCAm
JiBldnQtPmlzVGV4dEV2ZW50KCkgJiYgc3RhdGljX2Nhc3Q8VGV4dEV2ZW50Kj4oZXZ0KS0+ZGF0
YSgpID09ICJcbiIpCi0gICAgICAgIGltcGxpY2l0U3VibWlzc2lvbiA9IHRydWU7Ci0KICAgICBp
ZiAoZXZ0LT5pc01vdXNlRXZlbnQoKSAmJiBldnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuY2xp
Y2tFdmVudCAmJiBtX2lucHV0VHlwZS0+aGFuZGxlQ2xpY2tFdmVudChzdGF0aWNfY2FzdDxNb3Vz
ZUV2ZW50Kj4oZXZ0KSkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTMwNSw4ICsxMzAwLDcgQEAg
dm9pZCBIVE1MSW5wdXRFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldnQpCiAK
ICAgICAvLyBDYWxsIHRoZSBiYXNlIGV2ZW50IGhhbmRsZXIgYmVmb3JlIGFueSBvZiBvdXIgb3du
IGV2ZW50IGhhbmRsaW5nIGZvciBhbG1vc3QgYWxsIGV2ZW50cyBpbiB0ZXh0IGZpZWxkcy4KICAg
ICAvLyBNYWtlcyBlZGl0aW5nIGtleWJvYXJkIGhhbmRsaW5nIHRha2UgcHJlY2VkZW5jZSBvdmVy
IHRoZSBrZXlkb3duIGFuZCBrZXlwcmVzcyBoYW5kbGluZyBpbiB0aGlzIGZ1bmN0aW9uLgotICAg
IGJvb2wgY2FsbEJhc2VDbGFzc0Vhcmx5ID0gaXNUZXh0RmllbGQoKSAmJiAhaW1wbGljaXRTdWJt
aXNzaW9uCi0gICAgICAgICYmIChldnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkua2V5ZG93bkV2
ZW50IHx8IGV2dC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5rZXlwcmVzc0V2ZW50KTsKKyAgICBi
b29sIGNhbGxCYXNlQ2xhc3NFYXJseSA9IGlzVGV4dEZpZWxkKCkgJiYgKGV2dC0+dHlwZSgpID09
IGV2ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQgfHwgZXZ0LT50eXBlKCkgPT0gZXZlbnROYW1lcygp
LmtleXByZXNzRXZlbnQpOwogICAgIGlmIChjYWxsQmFzZUNsYXNzRWFybHkpIHsKICAgICAgICAg
SFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZTo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldnQp
OwogICAgICAgICBpZiAoZXZ0LT5kZWZhdWx0SGFuZGxlZCgpKQpAQCAtMTMyMiwxODAgKzEzMTYs
MTMgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBl
dnQpCiAKICAgICAvLyBVc2Uga2V5IHByZXNzIGV2ZW50IGhlcmUgc2luY2Ugc2VuZGluZyBzaW11
bGF0ZWQgbW91c2UgZXZlbnRzCiAgICAgLy8gb24ga2V5IGRvd24gYmxvY2tzIHRoZSBwcm9wZXIg
c2VuZGluZyBvZiB0aGUga2V5IHByZXNzIGV2ZW50LgotICAgIGlmIChldnQtPnR5cGUoKSA9PSBl
dmVudE5hbWVzKCkua2V5cHJlc3NFdmVudCAmJiBldnQtPmlzS2V5Ym9hcmRFdmVudCgpKSB7Ci0g
ICAgICAgIGJvb2wgY2xpY2tFbGVtZW50ID0gZmFsc2U7Ci0KLSAgICAgICAgaW50IGNoYXJDb2Rl
ID0gc3RhdGljX2Nhc3Q8S2V5Ym9hcmRFdmVudCo+KGV2dCktPmNoYXJDb2RlKCk7Ci0KLSAgICAg
ICAgaWYgKGNoYXJDb2RlID09ICdccicpIHsKLSAgICAgICAgICAgIHN3aXRjaCAoZGVwcmVjYXRl
ZElucHV0VHlwZSgpKSB7Ci0gICAgICAgICAgICBjYXNlIENIRUNLQk9YOgotICAgICAgICAgICAg
Y2FzZSBDT0xPUjoKLSAgICAgICAgICAgIGNhc2UgREFURToKLSAgICAgICAgICAgIGNhc2UgREFU
RVRJTUU6Ci0gICAgICAgICAgICBjYXNlIERBVEVUSU1FTE9DQUw6Ci0gICAgICAgICAgICBjYXNl
IEVNQUlMOgotICAgICAgICAgICAgY2FzZSBISURERU46Ci0gICAgICAgICAgICBjYXNlIElTSU5E
RVg6Ci0gICAgICAgICAgICBjYXNlIE1PTlRIOgotICAgICAgICAgICAgY2FzZSBOVU1CRVI6Ci0g
ICAgICAgICAgICBjYXNlIFBBU1NXT1JEOgotICAgICAgICAgICAgY2FzZSBSQURJTzoKLSAgICAg
ICAgICAgIGNhc2UgUkFOR0U6Ci0gICAgICAgICAgICBjYXNlIFNFQVJDSDoKLSAgICAgICAgICAg
IGNhc2UgVEVMRVBIT05FOgotICAgICAgICAgICAgY2FzZSBURVhUOgotICAgICAgICAgICAgY2Fz
ZSBUSU1FOgotICAgICAgICAgICAgY2FzZSBVUkw6Ci0gICAgICAgICAgICBjYXNlIFdFRUs6Ci0g
ICAgICAgICAgICAgICAgLy8gU2ltdWxhdGUgbW91c2UgY2xpY2sgb24gdGhlIGRlZmF1bHQgZm9y
bSBidXR0b24gZm9yIGVudGVyIGZvciB0aGVzZSB0eXBlcyBvZiBlbGVtZW50cy4KLSAgICAgICAg
ICAgICAgICBpbXBsaWNpdFN1Ym1pc3Npb24gPSB0cnVlOwotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgY2FzZSBCVVRUT046Ci0gICAgICAgICAgICBjYXNlIEZJTEU6Ci0gICAg
ICAgICAgICBjYXNlIElNQUdFOgotICAgICAgICAgICAgY2FzZSBSRVNFVDoKLSAgICAgICAgICAg
IGNhc2UgU1VCTUlUOgotICAgICAgICAgICAgICAgIC8vIFNpbXVsYXRlIG1vdXNlIGNsaWNrIGZv
ciBlbnRlciBmb3IgdGhlc2UgdHlwZXMgb2YgZWxlbWVudHMuCi0gICAgICAgICAgICAgICAgY2xp
Y2tFbGVtZW50ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfSBlbHNlIGlmIChjaGFyQ29kZSA9PSAnICcpIHsKLSAgICAgICAgICAgIHN3aXRj
aCAoZGVwcmVjYXRlZElucHV0VHlwZSgpKSB7Ci0gICAgICAgICAgICBjYXNlIEJVVFRPTjoKLSAg
ICAgICAgICAgIGNhc2UgQ0hFQ0tCT1g6Ci0gICAgICAgICAgICBjYXNlIEZJTEU6Ci0gICAgICAg
ICAgICBjYXNlIElNQUdFOgotICAgICAgICAgICAgY2FzZSBSRVNFVDoKLSAgICAgICAgICAgIGNh
c2UgU1VCTUlUOgotICAgICAgICAgICAgY2FzZSBSQURJTzoKLSAgICAgICAgICAgICAgICAvLyBQ
cmV2ZW50IHNjcm9sbGluZyBkb3duIHRoZSBwYWdlLgotICAgICAgICAgICAgICAgIGV2dC0+c2V0
RGVmYXVsdEhhbmRsZWQoKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBk
ZWZhdWx0OgotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0KLSAgICAgICAgaWYgKGNsaWNrRWxlbWVudCkgewotICAgICAgICAgICAgZGlzcGF0Y2hTaW11
bGF0ZWRDbGljayhldnQpOwotICAgICAgICAgICAgZXZ0LT5zZXREZWZhdWx0SGFuZGxlZCgpOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKGV2dC0+dHlw
ZSgpID09IGV2ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQgJiYgZXZ0LT5pc0tleWJvYXJkRXZlbnQo
KSkgewotICAgICAgICBjb25zdCBTdHJpbmcmIGtleSA9IHN0YXRpY19jYXN0PEtleWJvYXJkRXZl
bnQqPihldnQpLT5rZXlJZGVudGlmaWVyKCk7Ci0KLSAgICAgICAgaWYgKGtleSA9PSAiVSswMDIw
IikgewotICAgICAgICAgICAgc3dpdGNoIChkZXByZWNhdGVkSW5wdXRUeXBlKCkpIHsKLSAgICAg
ICAgICAgIGNhc2UgQlVUVE9OOgotICAgICAgICAgICAgY2FzZSBDSEVDS0JPWDoKLSAgICAgICAg
ICAgIGNhc2UgRklMRToKLSAgICAgICAgICAgIGNhc2UgSU1BR0U6Ci0gICAgICAgICAgICBjYXNl
IFJFU0VUOgotICAgICAgICAgICAgY2FzZSBTVUJNSVQ6Ci0gICAgICAgICAgICBjYXNlIFJBRElP
OgotICAgICAgICAgICAgICAgIHNldEFjdGl2ZSh0cnVlLCB0cnVlKTsKLSAgICAgICAgICAgICAg
ICAvLyBObyBzZXREZWZhdWx0SGFuZGxlZCgpLCBiZWNhdXNlIElFIGRpc3BhdGNoZXMgYSBrZXlw
cmVzcyBpbiB0aGlzIGNhc2UKLSAgICAgICAgICAgICAgICAvLyBhbmQgdGhlIGNhbGxlciB3aWxs
IG9ubHkgZGlzcGF0Y2ggYSBrZXlwcmVzcyBpZiB3ZSBkb24ndCBjYWxsIHNldERlZmF1bHRIYW5k
bGVkLgotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBp
ZiAoZGVwcmVjYXRlZElucHV0VHlwZSgpID09IFJBRElPICYmIChrZXkgPT0gIlVwIiB8fCBrZXkg
PT0gIkRvd24iIHx8IGtleSA9PSAiTGVmdCIgfHwga2V5ID09ICJSaWdodCIpKSB7Ci0gICAgICAg
ICAgICAvLyBMZWZ0IGFuZCB1cCBtZWFuICJwcmV2aW91cyByYWRpbyBidXR0b24iLgotICAgICAg
ICAgICAgLy8gUmlnaHQgYW5kIGRvd24gbWVhbiAibmV4dCByYWRpbyBidXR0b24iLgotICAgICAg
ICAgICAgLy8gVGVzdGVkIGluIFdpbklFLCBhbmQgZXZlbiBmb3IgUlRMLCBsZWZ0IHN0aWxsIG1l
YW5zIHByZXZpb3VzIHJhZGlvIGJ1dHRvbiAoYW5kIHNvIG1vdmVzCi0gICAgICAgICAgICAvLyB0
byB0aGUgcmlnaHQpLiAgU2VlbXMgc3RyYW5nZSwgYnV0IHdlJ2xsIG1hdGNoIGl0LgotICAgICAg
ICAgICAgLy8gSG93ZXZlciwgd2hlbiB1c2luZyBTcGF0aWFsIE5hdmlnYXRpb24sIHdlIG5lZWQg
dG8gYmUgYWJsZSB0byBuYXZpZ2F0ZSB3aXRob3V0IGNoYW5naW5nIHRoZSBzZWxlY3Rpb24uCi0g
ICAgICAgICAgICBpZiAoIWlzU3BhdGlhbE5hdmlnYXRpb25FbmFibGVkKGRvY3VtZW50KCktPmZy
YW1lKCkpKSB7Ci0gICAgICAgICAgICAgICAgYm9vbCBmb3J3YXJkID0gKGtleSA9PSAiRG93biIg
fHwga2V5ID09ICJSaWdodCIpOwotCi0gICAgICAgICAgICAgICAgLy8gV2UgY2FuIG9ubHkgc3Rh
eSB3aXRoaW4gdGhlIGZvcm0ncyBjaGlsZHJlbiBpZiB0aGUgZm9ybSBoYXNuJ3QgYmVlbiBkZW1v
dGVkIHRvIGEgbGVhZiBiZWNhdXNlCi0gICAgICAgICAgICAgICAgLy8gb2YgbWFsZm9ybWVkIEhU
TUwuCi0gICAgICAgICAgICAgICAgTm9kZSogbiA9IHRoaXM7Ci0gICAgICAgICAgICAgICAgd2hp
bGUgKChuID0gKGZvcndhcmQgPyBuLT50cmF2ZXJzZU5leHROb2RlKCkgOiBuLT50cmF2ZXJzZVBy
ZXZpb3VzTm9kZSgpKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gT25jZSB3ZSBlbmNvdW50
ZXIgYSBmb3JtIGVsZW1lbnQsIHdlIGtub3cgd2UncmUgdGhyb3VnaC4KLSAgICAgICAgICAgICAg
ICAgICAgaWYgKG4tPmhhc1RhZ05hbWUoZm9ybVRhZykpCi0gICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLQotICAgICAgICAgICAgICAgICAgICAvLyBMb29rIGZvciBtb3JlIHJhZGlvIGJ1
dHRvbnMuCi0gICAgICAgICAgICAgICAgICAgIGlmIChuLT5oYXNUYWdOYW1lKGlucHV0VGFnKSkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgSFRNTElucHV0RWxlbWVudCogZWx0ID0gc3RhdGlj
X2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KG4pOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KGVsdC0+Zm9ybSgpICE9IGZvcm0oKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuLT5oYXNUYWdOYW1lKGlucHV0VGFnKSkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWx0
ID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KG4pOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChpbnB1dEVsdC0+ZGVwcmVjYXRlZElucHV0VHlwZSgpID09IFJBRElPICYm
IGlucHV0RWx0LT5uYW1lKCkgPT0gbmFtZSgpICYmIGlucHV0RWx0LT5pc0ZvY3VzYWJsZSgpKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0RWx0LT5zZXRDaGVja2VkKHRy
dWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudCgpLT5zZXRGb2N1
c2VkTm9kZShpbnB1dEVsdCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0
RWx0LT5kaXNwYXRjaFNpbXVsYXRlZENsaWNrKGV2dCwgZmFsc2UsIGZhbHNlKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZXZ0LT5zZXREZWZhdWx0SGFuZGxlZCgpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAg
ICBpZiAoZXZ0LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmtleXVwRXZlbnQgJiYgZXZ0LT5pc0tl
eWJvYXJkRXZlbnQoKSkgewotICAgICAgICBib29sIGNsaWNrRWxlbWVudCA9IGZhbHNlOwotCi0g
ICAgICAgIGNvbnN0IFN0cmluZyYga2V5ID0gc3RhdGljX2Nhc3Q8S2V5Ym9hcmRFdmVudCo+KGV2
dCktPmtleUlkZW50aWZpZXIoKTsKLQotICAgICAgICBpZiAoa2V5ID09ICJVKzAwMjAiKSB7Ci0g
ICAgICAgICAgICBzd2l0Y2ggKGRlcHJlY2F0ZWRJbnB1dFR5cGUoKSkgewotICAgICAgICAgICAg
Y2FzZSBCVVRUT046Ci0gICAgICAgICAgICBjYXNlIENIRUNLQk9YOgotICAgICAgICAgICAgY2Fz
ZSBGSUxFOgotICAgICAgICAgICAgY2FzZSBJTUFHRToKLSAgICAgICAgICAgIGNhc2UgUkVTRVQ6
Ci0gICAgICAgICAgICBjYXNlIFNVQk1JVDoKLSAgICAgICAgICAgICAgICAvLyBTaW11bGF0ZSBt
b3VzZSBjbGljayBmb3Igc3BhY2ViYXIgZm9yIHRoZXNlIHR5cGVzIG9mIGVsZW1lbnRzLgotICAg
ICAgICAgICAgICAgIC8vIFRoZSBBcHBLaXQgYWxyZWFkeSBkb2VzIHRoaXMgZm9yIHNvbWUsIGJ1
dCBub3QgYWxsLCBvZiB0aGVtLgotICAgICAgICAgICAgICAgIGNsaWNrRWxlbWVudCA9IHRydWU7
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFJBRElPOgotICAgICAg
ICAgICAgICAgIC8vIElmIGFuIHVuc2VsZWN0ZWQgcmFkaW8gaXMgdGFiYmVkIGludG8gKGJlY2F1
c2UgdGhlIGVudGlyZSBncm91cCBoYXMgbm90aGluZwotICAgICAgICAgICAgICAgIC8vIGNoZWNr
ZWQsIG9yIGJlY2F1c2Ugb2Ygc29tZSBleHBsaWNpdCAuZm9jdXMoKSBjYWxsKSwgdGhlbiBhbGxv
dyBzcGFjZSB0byBjaGVjayBpdC4KLSAgICAgICAgICAgICAgICBpZiAoIWNoZWNrZWQoKSkKLSAg
ICAgICAgICAgICAgICAgICAgY2xpY2tFbGVtZW50ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIGNhc2UgQ09MT1I6Ci0gICAgICAgICAgICBjYXNlIERBVEU6Ci0g
ICAgICAgICAgICBjYXNlIERBVEVUSU1FOgotICAgICAgICAgICAgY2FzZSBEQVRFVElNRUxPQ0FM
OgotICAgICAgICAgICAgY2FzZSBFTUFJTDoKLSAgICAgICAgICAgIGNhc2UgSElEREVOOgotICAg
ICAgICAgICAgY2FzZSBJU0lOREVYOgotICAgICAgICAgICAgY2FzZSBNT05USDoKLSAgICAgICAg
ICAgIGNhc2UgTlVNQkVSOgotICAgICAgICAgICAgY2FzZSBQQVNTV09SRDoKLSAgICAgICAgICAg
IGNhc2UgUkFOR0U6Ci0gICAgICAgICAgICBjYXNlIFNFQVJDSDoKLSAgICAgICAgICAgIGNhc2Ug
VEVMRVBIT05FOgotICAgICAgICAgICAgY2FzZSBURVhUOgotICAgICAgICAgICAgY2FzZSBUSU1F
OgotICAgICAgICAgICAgY2FzZSBVUkw6Ci0gICAgICAgICAgICBjYXNlIFdFRUs6Ci0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KKyAgICBpZiAoZXZ0LT5p
c0tleWJvYXJkRXZlbnQoKSAmJiBldnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkua2V5cHJlc3NF
dmVudCAmJiBtX2lucHV0VHlwZS0+aGFuZGxlS2V5cHJlc3NFdmVudChzdGF0aWNfY2FzdDxLZXli
b2FyZEV2ZW50Kj4oZXZ0KSkpCisgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoY2xpY2tF
bGVtZW50KSB7Ci0gICAgICAgICAgICBpZiAoYWN0aXZlKCkpCi0gICAgICAgICAgICAgICAgZGlz
cGF0Y2hTaW11bGF0ZWRDbGljayhldnQpOwotICAgICAgICAgICAgZXZ0LT5zZXREZWZhdWx0SGFu
ZGxlZCgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9ICAgICAgICAKLSAgICB9Cisg
ICAgaWYgKGV2dC0+aXNLZXlib2FyZEV2ZW50KCkgJiYgZXZ0LT50eXBlKCkgPT0gZXZlbnROYW1l
cygpLmtleXVwRXZlbnQgJiYgbV9pbnB1dFR5cGUtPmhhbmRsZUtleXVwRXZlbnQoc3RhdGljX2Nh
c3Q8S2V5Ym9hcmRFdmVudCo+KGV2dCkpKQorICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoaW1w
bGljaXRTdWJtaXNzaW9uKSB7CisgICAgaWYgKG1faW5wdXRUeXBlLT5zaG91bGRTdWJtaXRJbXBs
aWNpdGx5KGV2dCkpIHsKICAgICAgICAgaWYgKGlzU2VhcmNoRmllbGQoKSkgewogICAgICAgICAg
ICAgYWRkU2VhcmNoUmVzdWx0KCk7CiAgICAgICAgICAgICBvblNlYXJjaCgpOwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAgYi9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNw
cAppbmRleCAyOTRmNzVlYmQ3MThlNzIxNzU5Y2JiNjY1ZTM0OWE4MzU1MmExNzA3Li42NTY2NjYy
N2QyMmNlZmFjMGY4NGYxYjZhYmViZWY4ZWE0M2Q5ZjM0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0
bWwvSW5wdXRUeXBlLmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcApAQCAtNDEs
NiArNDEsNyBAQAogI2luY2x1ZGUgIkhpZGRlbklucHV0VHlwZS5oIgogI2luY2x1ZGUgIkltYWdl
SW5wdXRUeXBlLmgiCiAjaW5jbHVkZSAiSXNJbmRleElucHV0VHlwZS5oIgorI2luY2x1ZGUgIktl
eWJvYXJkRXZlbnQuaCIKICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW5jbHVkZSAi
TW9udGhJbnB1dFR5cGUuaCIKICNpbmNsdWRlICJOdW1iZXJJbnB1dFR5cGUuaCIKQEAgLTI4MCw2
ICsyODEsMTEgQEAgU3RyaW5nIElucHV0VHlwZTo6dmFsdWVNaXNzaW5nVGV4dCgpIGNvbnN0CiAg
ICAgcmV0dXJuIHZhbGlkYXRpb25NZXNzYWdlVmFsdWVNaXNzaW5nVGV4dCgpOwogfQogCitib29s
IElucHV0VHlwZTo6c2hvdWxkU3VibWl0SW1wbGljaXRseShFdmVudCogZXZlbnQpCit7CisgICAg
cmV0dXJuIGV2ZW50LT5pc0tleWJvYXJkRXZlbnQoKSAmJiBldmVudC0+dHlwZSgpID09IGV2ZW50
TmFtZXMoKS5rZXlwcmVzc0V2ZW50ICYmIHN0YXRpY19jYXN0PEtleWJvYXJkRXZlbnQqPihldmVu
dCktPmNoYXJDb2RlKCkgPT0gJ1xyJzsKK30KKwogYm9vbCBJbnB1dFR5cGU6OmhhbmRsZUNsaWNr
RXZlbnQoTW91c2VFdmVudCopCiB7CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjk1LDYgKzMwMSwx
NiBAQCBib29sIElucHV0VHlwZTo6aGFuZGxlS2V5ZG93bkV2ZW50KEtleWJvYXJkRXZlbnQqKQog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBJbnB1dFR5cGU6OmhhbmRsZUtleXByZXNzRXZl
bnQoS2V5Ym9hcmRFdmVudCopCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIElucHV0
VHlwZTo6aGFuZGxlS2V5dXBFdmVudChLZXlib2FyZEV2ZW50KikKK3sKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKIFJlbmRlck9iamVjdCogSW5wdXRUeXBlOjpjcmVhdGVSZW5kZXJlcihSZW5kZXJB
cmVuYSosIFJlbmRlclN0eWxlKiBzdHlsZSkgY29uc3QKIHsKICAgICByZXR1cm4gUmVuZGVyT2Jq
ZWN0OjpjcmVhdGVPYmplY3QoZWxlbWVudCgpLCBzdHlsZSk7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2h0bWwvSW5wdXRUeXBlLmggYi9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKaW5kZXggYzE0MTdm
YTRlNGI0NjAwODQ0OTk1YzQzNTcwZjY2ZWE4NGI0OTcxMS4uYTdjZjRjOWU5MjMyNjAwZGJjODZm
ZWU0ZWIzMTU0ODJlNWRjNzk3YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5o
CisrKyBiL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaApAQCAtMTAzLDEzICsxMDMsMTYgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgU3RyaW5nIHZhbHVlTWlzc2luZ1RleHQoKSBjb25zdDsKIAogICAg
IC8vIEV2ZW50IGhhbmRsZXJzCi0gICAgLy8gSWYgdGhlIHJldHVybiB2YWx1ZSBpcyB0cnVlLCBk
byBubyBmdXJ0aGVyIGRlZmF1bHQgZXZlbnQgaGFuZGxpbmcgaW4gdGhlCi0gICAgLy8gZGVmYXVs
dCBldmVudCBoYW5kbGVyLiBJZiBhbiBldmVudCBoYW5kbGVyIGNhbGxzIEV2ZW50OjpzZXREZWZh
dWx0SGFuZGxlZCgpLAotICAgIC8vIGl0cyByZXR1cm4gdmFsdWUgbXVzdCBiZSB0cnVlLgorICAg
IC8vIElmIHRoZSByZXR1cm4gdmFsdWUgb2YgaGFuZGxlRm9vRXZlbnQoKSBpcyB0cnVlLCBkbyBu
byBmdXJ0aGVyIGRlZmF1bHQKKyAgICAvLyBldmVudCBoYW5kbGluZyBpbiB0aGUgZGVmYXVsdCBl
dmVudCBoYW5kbGVyLiBJZiBhbiBldmVudCBoYW5kbGVyIGNhbGxzCisgICAgLy8gRXZlbnQ6OnNl
dERlZmF1bHRIYW5kbGVkKCksIGl0cyByZXR1cm4gdmFsdWUgbXVzdCBiZSB0cnVlLgogCisgICAg
dmlydHVhbCBib29sIHNob3VsZFN1Ym1pdEltcGxpY2l0bHkoRXZlbnQqKTsKICAgICB2aXJ0dWFs
IGJvb2wgaGFuZGxlQ2xpY2tFdmVudChNb3VzZUV2ZW50Kik7CiAgICAgdmlydHVhbCBib29sIGhh
bmRsZURPTUFjdGl2YXRlRXZlbnQoRXZlbnQqKTsKICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlS2V5
ZG93bkV2ZW50KEtleWJvYXJkRXZlbnQqKTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlS2V5cHJl
c3NFdmVudChLZXlib2FyZEV2ZW50Kik7CisgICAgdmlydHVhbCBib29sIGhhbmRsZUtleXVwRXZl
bnQoS2V5Ym9hcmRFdmVudCopOwogCiAgICAgLy8gTWlzY2VsbGFuZW91cyBmdW5jdGlvbnMKIApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL1JhZGlvSW5wdXRUeXBlLmNwcCBiL1dlYkNvcmUvaHRt
bC9SYWRpb0lucHV0VHlwZS5jcHAKaW5kZXggZjU5Y2Y3OGYzNjM3ZjcyNmUxOGFiYTQ0YTQ4ZDlm
NTYxNmU3NjczOS4uOGU0OWQ3NmRjMjc1MjMzMWFlODM1ZWVkNzdhZmEzN2YyNjJmZjNjZiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9odG1sL1JhZGlvSW5wdXRUeXBlLmNwcAorKysgYi9XZWJDb3JlL2h0
bWwvUmFkaW9JbnB1dFR5cGUuY3BwCkBAIC0xLDQzICsxLDQxIEBACiAvKgorICogQ29weXJpZ2h0
IChDKSAyMDA1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAo
QykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICog
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgogICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQot
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
CisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgogICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
LSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJhZGlv
SW5wdXRUeXBlLmgiCiAKKyNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVs
ZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJLZXlib2FyZEV2ZW50
LmgiCiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUgIk1vdXNlRXZlbnQu
aCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIlNwYXRpYWxOYXZpZ2F0aW9uLmgi
CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCit1
c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOworCiBQYXNzT3duUHRyPElucHV0VHlwZT4gUmFkaW9J
bnB1dFR5cGU6OmNyZWF0ZShIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50KQogewogICAgIHJldHVy
biBhZG9wdFB0cihuZXcgUmFkaW9JbnB1dFR5cGUoZWxlbWVudCkpOwpAQCAtNjQsNCArNjIsNjEg
QEAgYm9vbCBSYWRpb0lucHV0VHlwZTo6aGFuZGxlQ2xpY2tFdmVudChNb3VzZUV2ZW50KiBldmVu
dCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBSYWRpb0lucHV0VHlwZTo6aGFuZGxlS2V5
ZG93bkV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQoreworICAgIGlmIChCYXNlQ2hlY2thYmxl
SW5wdXRUeXBlOjpoYW5kbGVLZXlkb3duRXZlbnQoZXZlbnQpKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICBjb25zdCBTdHJpbmcmIGtleSA9IGV2ZW50LT5rZXlJZGVudGlmaWVyKCk7CisgICAg
aWYgKGtleSAhPSAiVXAiICYmIGtleSAhPSAiRG93biIgJiYga2V5ICE9ICJMZWZ0IiAmJiBrZXkg
IT0gIlJpZ2h0IikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gTGVmdCBhbmQgdXAg
bWVhbiAicHJldmlvdXMgcmFkaW8gYnV0dG9uIi4KKyAgICAvLyBSaWdodCBhbmQgZG93biBtZWFu
ICJuZXh0IHJhZGlvIGJ1dHRvbiIuCisgICAgLy8gVGVzdGVkIGluIFdpbklFLCBhbmQgZXZlbiBm
b3IgUlRMLCBsZWZ0IHN0aWxsIG1lYW5zIHByZXZpb3VzIHJhZGlvIGJ1dHRvbiAoYW5kIHNvIG1v
dmVzCisgICAgLy8gdG8gdGhlIHJpZ2h0KS4gIFNlZW1zIHN0cmFuZ2UsIGJ1dCB3ZSdsbCBtYXRj
aCBpdC4KKyAgICAvLyBIb3dldmVyLCB3aGVuIHVzaW5nIFNwYXRpYWwgTmF2aWdhdGlvbiwgd2Ug
bmVlZCB0byBiZSBhYmxlIHRvIG5hdmlnYXRlIHdpdGhvdXQgY2hhbmdpbmcgdGhlIHNlbGVjdGlv
bi4KKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBlbGVtZW50KCktPmRvY3VtZW50KCk7CisgICAg
aWYgKGlzU3BhdGlhbE5hdmlnYXRpb25FbmFibGVkKGRvY3VtZW50LT5mcmFtZSgpKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIGJvb2wgZm9yd2FyZCA9IChrZXkgPT0gIkRvd24iIHx8IGtl
eSA9PSAiUmlnaHQiKTsKKworICAgIC8vIFdlIGNhbiBvbmx5IHN0YXkgd2l0aGluIHRoZSBmb3Jt
J3MgY2hpbGRyZW4gaWYgdGhlIGZvcm0gaGFzbid0IGJlZW4gZGVtb3RlZCB0byBhIGxlYWYgYmVj
YXVzZQorICAgIC8vIG9mIG1hbGZvcm1lZCBIVE1MLgorICAgIE5vZGUqIG5vZGUgPSBlbGVtZW50
KCk7CisgICAgd2hpbGUgKChub2RlID0gKGZvcndhcmQgPyBub2RlLT50cmF2ZXJzZU5leHROb2Rl
KCkgOiBub2RlLT50cmF2ZXJzZVByZXZpb3VzTm9kZSgpKSkpIHsKKyAgICAgICAgLy8gT25jZSB3
ZSBlbmNvdW50ZXIgYSBmb3JtIGVsZW1lbnQsIHdlIGtub3cgd2UncmUgdGhyb3VnaC4KKyAgICAg
ICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUoZm9ybVRhZykpCisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgLy8gTG9vayBmb3IgbW9yZSByYWRpbyBidXR0b25zLgorICAgICAgICBpZiAoIW5vZGUt
Pmhhc1RhZ05hbWUoaW5wdXRUYWcpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIEhU
TUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1l
bnQqPihub2RlKTsKKyAgICAgICAgaWYgKGlucHV0RWxlbWVudC0+Zm9ybSgpICE9IGVsZW1lbnQo
KS0+Zm9ybSgpKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmIChpbnB1dEVsZW1lbnQt
PmlzUmFkaW9CdXR0b24oKSAmJiBpbnB1dEVsZW1lbnQtPm5hbWUoKSA9PSBlbGVtZW50KCktPm5h
bWUoKSAmJiBpbnB1dEVsZW1lbnQtPmlzRm9jdXNhYmxlKCkpIHsKKyAgICAgICAgICAgIGlucHV0
RWxlbWVudC0+c2V0Q2hlY2tlZCh0cnVlKTsKKyAgICAgICAgICAgIGRvY3VtZW50LT5zZXRGb2N1
c2VkTm9kZShpbnB1dEVsZW1lbnQpOworICAgICAgICAgICAgaW5wdXRFbGVtZW50LT5kaXNwYXRj
aFNpbXVsYXRlZENsaWNrKGV2ZW50LCBmYWxzZSwgZmFsc2UpOworICAgICAgICAgICAgZXZlbnQt
PnNldERlZmF1bHRIYW5kbGVkKCk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
fQorICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgUmFkaW9JbnB1dFR5cGU6Omhh
bmRsZUtleXVwRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQpCit7CisgICAgY29uc3QgU3RyaW5n
JiBrZXkgPSBldmVudC0+a2V5SWRlbnRpZmllcigpOworICAgIGlmIChrZXkgIT0gIlUrMDAyMCIp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAvLyBJZiBhbiB1bnNlbGVjdGVkIHJhZGlvIGlz
IHRhYmJlZCBpbnRvIChiZWNhdXNlIHRoZSBlbnRpcmUgZ3JvdXAgaGFzIG5vdGhpbmcKKyAgICAv
LyBjaGVja2VkLCBvciBiZWNhdXNlIG9mIHNvbWUgZXhwbGljaXQgLmZvY3VzKCkgY2FsbCksIHRo
ZW4gYWxsb3cgc3BhY2UgdG8gY2hlY2sgaXQuCisgICAgaWYgKGVsZW1lbnQoKS0+Y2hlY2tlZCgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGVsZW1lbnQoKS0+YWN0aXZlKCkpCisg
ICAgICAgIGVsZW1lbnQoKS0+ZGlzcGF0Y2hTaW11bGF0ZWRDbGljayhldmVudCk7CisgICAgZXZl
bnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9SYWRpb0lucHV0VHlwZS5o
IGIvV2ViQ29yZS9odG1sL1JhZGlvSW5wdXRUeXBlLmgKaW5kZXggMjdhZTc1ZWM1YjBhNjk4MDcy
ZmQ5ODI4ZGEwYmNhNWFhYjg0MWRhOS4uNjJiZWNmNjY5YzkxYWFmNmZkM2Y2Y2UxNWQyMTA1OTVi
MTlmMWJhNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL1JhZGlvSW5wdXRUeXBlLmgKKysrIGIv
V2ViQ29yZS9odG1sL1JhZGlvSW5wdXRUeXBlLmgKQEAgLTQ1LDYgKzQ1LDggQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIGJvb2wgdmFsdWVNaXNzaW5nKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogICAg
IHZpcnR1YWwgU3RyaW5nIHZhbHVlTWlzc2luZ1RleHQoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJv
b2wgaGFuZGxlQ2xpY2tFdmVudChNb3VzZUV2ZW50Kik7CisgICAgdmlydHVhbCBib29sIGhhbmRs
ZUtleWRvd25FdmVudChLZXlib2FyZEV2ZW50Kik7CisgICAgdmlydHVhbCBib29sIGhhbmRsZUtl
eXVwRXZlbnQoS2V5Ym9hcmRFdmVudCopOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAgYi9XZWJDb3Jl
L2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcAppbmRleCBkOTNmOTcyMWY1M2U4MjhlZDhmOTJm
YzE3OGUzNGI3NGYzYzc5YWM5Li4yOTZhOWNkYTIxZWNjMzI3NGVhZGZmMzcxNDRjMzU2MzQxY2Qz
YjZkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcAorKysg
Yi9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcApAQCAtMzUsNiArMzUsNyBAQAog
I2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50Lmgi
CiAjaW5jbHVkZSAiUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmgiCisjaW5jbHVkZSAiVGV4
dEV2ZW50LmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTQ5LDYgKzUwLDExIEBAIGJvb2wgVGV4dEZpZWxkSW5wdXRUeXBlOjp2YWx1
ZU1pc3NpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKICAgICByZXR1cm4gdmFsdWUuaXNF
bXB0eSgpOwogfQogCitib29sIFRleHRGaWVsZElucHV0VHlwZTo6c2hvdWxkU3VibWl0SW1wbGlj
aXRseShFdmVudCogZXZlbnQpCit7CisgICAgcmV0dXJuIGV2ZW50LT50eXBlKCkgPT0gZXZlbnRO
YW1lcygpLnRleHRJbnB1dEV2ZW50ICYmIGV2ZW50LT5pc1RleHRFdmVudCgpICYmIHN0YXRpY19j
YXN0PFRleHRFdmVudCo+KGV2ZW50KS0+ZGF0YSgpID09ICJcbiIgfHwgSW5wdXRUeXBlOjpzaG91
bGRTdWJtaXRJbXBsaWNpdGx5KGV2ZW50KTsKK30KKwogYm9vbCBUZXh0RmllbGRJbnB1dFR5cGU6
OmhhbmRsZUtleWRvd25FdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKIHsKICAgICBpZiAoIWVs
ZW1lbnQoKS0+Zm9jdXNlZCgpKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL1RleHRGaWVsZElu
cHV0VHlwZS5oIGIvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5oCmluZGV4IDUwNDE4
YWFjZGYyYmI4ODIzMDIxMjJmNTVjMWZlZDE3ZDhmM2IwMjUuLjRmOWVlZmY2MmJlNTY3N2IzODlm
ODVmZTE2NWIyODk1NzUwYzI1MjAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJ
bnB1dFR5cGUuaAorKysgYi9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmgKQEAgLTQy
LDYgKzQyLDcgQEAgcHJvdGVjdGVkOgogICAgIFRleHRGaWVsZElucHV0VHlwZShIVE1MSW5wdXRF
bGVtZW50KiBlbGVtZW50KSA6IElucHV0VHlwZShlbGVtZW50KSB7IH0KICAgICB2aXJ0dWFsIGJv
b2wgaXNUZXh0RmllbGQoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgdmFsdWVNaXNzaW5nKGNv
bnN0IFN0cmluZyYpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTdWJtaXRJbXBsaWNp
dGx5KEV2ZW50Kik7CiAgICAgdmlydHVhbCBib29sIGhhbmRsZUtleWRvd25FdmVudChLZXlib2Fy
ZEV2ZW50Kik7CiAgICAgYm9vbCBoYW5kbGVLZXlkb3duRXZlbnRGb3JTcGluQnV0dG9uKEtleWJv
YXJkRXZlbnQqKTsKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVu
ZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopIGNvbnN0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74992</attachid>
            <date>2010-11-28 23:53:01 -0800</date>
            <delta_ts>2010-12-01 18:17:32 -0800</delta_ts>
            <desc>Patch 3 (fix Qt build)</desc>
            <filename>bug-50097-20101129165259.patch</filename>
            <type>text/plain</type>
            <size>27394</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZmI1NWJkMDZkZWUwN2IxNDEzNTkyMDg5NTc3NzNlYzdhM2QxNTAyNi4uNDU2YjM0MGU5YWU2OTMy
ZWI4NjIxNWIzNmY5NWIwMzdmMGE1MzNlZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OSBAQAorMjAxMC0xMS0yNSAgS2Vu
dCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUmVmYWN0b3IgSFRNTElucHV0RWxlbWVudDogTW92ZSBh
IHBhcnQgb2YgSFRNTElucHV0RWxlbWVudDo6CisgICAgICAgIGRlZmF1bHRFdmVudEhhbmRsZXIo
KSB0byBJbnB1dFR5cGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01MDA5NworICAgICAgICAKKyAgICAgICAgTW92ZSBhbGwgb2Yga2V5Ym9hcmQtcmVs
YXRlZCBldmVudCBoYW5kbGluZyB0byBJbnB1dFR5cGUuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
IGJlY2F1c2UgdGhpcyBzaG91bGQgbm90IGNoYW5nZSBhbnkgYmVoYXZpb3IuCisKKyAgICAgICAg
KiBodG1sL0Jhc2VCdXR0b25JbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmFzZUJ1
dHRvbklucHV0VHlwZTo6aGFuZGxlS2V5ZG93bkV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkJh
c2VCdXR0b25JbnB1dFR5cGU6OmhhbmRsZUtleXByZXNzRXZlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6QmFzZUJ1dHRvbklucHV0VHlwZTo6aGFuZGxlS2V5dXBFdmVudCk6CisgICAgICAgICogaHRt
bC9CYXNlQnV0dG9uSW5wdXRUeXBlLmg6CisgICAgICAgICogaHRtbC9CYXNlQ2hlY2thYmxlSW5w
dXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VDaGVja2FibGVJbnB1dFR5cGU6Omhh
bmRsZUtleWRvd25FdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpCYXNlQ2hlY2thYmxlSW5wdXRU
eXBlOjpoYW5kbGVLZXlwcmVzc0V2ZW50KToKKyAgICAgICAgKiBodG1sL0Jhc2VDaGVja2FibGVJ
bnB1dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL0NoZWNrYm94SW5wdXRUeXBlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNoZWNrYm94SW5wdXRUeXBlOjpoYW5kbGVLZXl1cEV2ZW50KToKKyAgICAg
ICAgKiBodG1sL0NoZWNrYm94SW5wdXRUeXBlLmg6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmRlZmF1bHRF
dmVudEhhbmRsZXIpOgorICAgICAgICAgV2UgcmVtb3ZlICFpbXBsaWNpdFN1Ym1pc3Npb24gY2hl
Y2sgZm9yIGNhbGxCYXNlQ2xhc3NFYXJseSBiZWNhdXNlCisgICAgICAgICBpbXBsaWNpdFN1Ym1p
c3Npb24gY2FuIG5vdCBiZSB0cnVlIGZvciBrZXlkb3duIGV2ZW50IGFuZCBrZXlwcmVzcworICAg
ICAgICAgZXZlbnQgYXQgdGhpcyBwb2ludC4KKyAgICAgICAgKiBodG1sL0lucHV0VHlwZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OnNob3VsZFN1Ym1pdEltcGxpY2l0bHkpOgor
ICAgICAgICAgUmV0dXJucyB0cnVlIGZvciBhIGtleXByZXNzIGV2ZW50IHdpdGggIlxyIi4gTm90
ZSB0aGF0IHdlIGRvbid0IG92ZXJsb2FkCisgICAgICAgICB0aGlzIGZ1bmN0aW9uIGZvciBCVVRU
T04sIEZJTEUsIElNQUdFLCBSRVNFVCwgYW5kIFNVQk1JVCBiZWNhdXNlIGEKKyAgICAgICAgIGtl
eXByZXNzIGV2ZW50IHdpdGggIlxyIiBmb3IgdGhlc2UgdHlwZXMgcmV0dXJucyBmcm9tIEhUTUxJ
bnB1dEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoKQorICAgICAgICAgYmVmb3JlIGltcGxp
Y2l0IHN1Ym1pc3Npb24gY2hlY2tpbmcuCisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6Omhh
bmRsZUtleXByZXNzRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjpoYW5kbGVL
ZXl1cEV2ZW50KToKKyAgICAgICAgKiBodG1sL0lucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwv
UmFkaW9JbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmFkaW9JbnB1dFR5cGU6Omhh
bmRsZUtleWRvd25FdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpSYWRpb0lucHV0VHlwZTo6aGFu
ZGxlS2V5dXBFdmVudCk6CisgICAgICAgICogaHRtbC9SYWRpb0lucHV0VHlwZS5oOgorICAgICAg
ICAqIGh0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRG
aWVsZElucHV0VHlwZTo6c2hvdWxkU3VibWl0SW1wbGljaXRseSk6CisgICAgICAgICogaHRtbC9U
ZXh0RmllbGRJbnB1dFR5cGUuaDoKKwogMjAxMC0xMS0yMyAgTU9SSVRBIEhhamltZSAgPG1vcnJp
dGFAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW50IFRhbXVyYS4KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvaHRtbC9CYXNlQnV0dG9uSW5wdXRUeXBlLmNwcCBiL1dlYkNvcmUvaHRt
bC9CYXNlQnV0dG9uSW5wdXRUeXBlLmNwcAppbmRleCBmZDZhOGZmZWQ4MGQyNTU5YmE2ODE1OGFi
ZDNlNjE0Yzg5YmJhNTdmLi40ZjhmYmUwMjkxMzQ2NDIyMTAyOThiOGE4YWZhYTk4ZDE5N2NlMjlj
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvQmFzZUJ1dHRvbklucHV0VHlwZS5jcHAKKysrIGIv
V2ViQ29yZS9odG1sL0Jhc2VCdXR0b25JbnB1dFR5cGUuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAj
aW5jbHVkZSAiQmFzZUJ1dHRvbklucHV0VHlwZS5oIgogCiAjaW5jbHVkZSAiSFRNTElucHV0RWxl
bWVudC5oIgorI2luY2x1ZGUgIktleWJvYXJkRXZlbnQuaCIKICNpbmNsdWRlICJSZW5kZXJCdXR0
b24uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDIsNiArNDMsNDUgQEAgYm9vbCBCYXNl
QnV0dG9uSW5wdXRUeXBlOjphcHBlbmRGb3JtRGF0YShGb3JtRGF0YUxpc3QmLCBib29sKSBjb25z
dAogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBCYXNlQnV0dG9uSW5wdXRUeXBlOjpoYW5k
bGVLZXlkb3duRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQpCit7CisgICAgY29uc3QgU3RyaW5n
JiBrZXkgPSBldmVudC0+a2V5SWRlbnRpZmllcigpOworICAgIGlmIChrZXkgPT0gIlUrMDAyMCIp
IHsKKyAgICAgICAgZWxlbWVudCgpLT5zZXRBY3RpdmUodHJ1ZSwgdHJ1ZSk7CisgICAgICAgIC8v
IE5vIHNldERlZmF1bHRIYW5kbGVkKCksIGJlY2F1c2UgSUUgZGlzcGF0Y2hlcyBhIGtleXByZXNz
IGluIHRoaXMgY2FzZQorICAgICAgICAvLyBhbmQgdGhlIGNhbGxlciB3aWxsIG9ubHkgZGlzcGF0
Y2ggYSBrZXlwcmVzcyBpZiB3ZSBkb24ndCBjYWxsIHNldERlZmF1bHRIYW5kbGVkKCkuCisgICAg
fQorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBCYXNlQnV0dG9uSW5wdXRUeXBlOjpoYW5k
bGVLZXlwcmVzc0V2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQoreworICAgIGludCBjaGFyQ29k
ZSA9IGV2ZW50LT5jaGFyQ29kZSgpOworICAgIGlmIChjaGFyQ29kZSA9PSAnXHInKSB7CisgICAg
ICAgIGVsZW1lbnQoKS0+ZGlzcGF0Y2hTaW11bGF0ZWRDbGljayhldmVudCk7CisgICAgICAgIGV2
ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9Cisg
ICAgaWYgKGNoYXJDb2RlID09ICcgJykgeworICAgICAgICAvLyBQcmV2ZW50IHNjcm9sbGluZyBk
b3duIHRoZSBwYWdlLgorICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBCYXNl
QnV0dG9uSW5wdXRUeXBlOjpoYW5kbGVLZXl1cEV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQor
eworICAgIGNvbnN0IFN0cmluZyYga2V5ID0gZXZlbnQtPmtleUlkZW50aWZpZXIoKTsKKyAgICBp
ZiAoa2V5ICE9ICJVKzAwMjAiKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgLy8gU2ltdWxh
dGUgbW91c2UgY2xpY2sgZm9yIHNwYWNlYmFyIGZvciB0aGVzZSB0eXBlcyBvZiBlbGVtZW50cy4K
KyAgICBpZiAoZWxlbWVudCgpLT5hY3RpdmUoKSkKKyAgICAgICAgZWxlbWVudCgpLT5kaXNwYXRj
aFNpbXVsYXRlZENsaWNrKGV2ZW50KTsKKyAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKwogUmVuZGVyT2JqZWN0KiBCYXNlQnV0dG9uSW5wdXRUeXBl
OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikgY29uc3QK
IHsKICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyQnV0dG9uKGVsZW1lbnQoKSk7CmRpZmYg
LS1naXQgYS9XZWJDb3JlL2h0bWwvQmFzZUJ1dHRvbklucHV0VHlwZS5oIGIvV2ViQ29yZS9odG1s
L0Jhc2VCdXR0b25JbnB1dFR5cGUuaAppbmRleCBlN2Y2ODNiYWE5MWIzNTdhZjZjYzkyYTI4NGEz
YTcyMjdiYjJjMTNlLi41OWUyOGJmOTZjZDg5MDFkNTdkZDZhOTM2NTMyZjkxMDlmYTcwMmVmIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvQmFzZUJ1dHRvbklucHV0VHlwZS5oCisrKyBiL1dlYkNv
cmUvaHRtbC9CYXNlQnV0dG9uSW5wdXRUeXBlLmgKQEAgLTQyLDYgKzQyLDkgQEAgcHJvdGVjdGVk
OgogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBhcHBlbmRGb3JtRGF0YShGb3JtRGF0YUxp
c3QmLCBib29sKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlS2V5ZG93bkV2ZW50KEtl
eWJvYXJkRXZlbnQqKTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlS2V5cHJlc3NFdmVudChLZXli
b2FyZEV2ZW50Kik7CisgICAgdmlydHVhbCBib29sIGhhbmRsZUtleXVwRXZlbnQoS2V5Ym9hcmRF
dmVudCopOwogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJB
cmVuYSosIFJlbmRlclN0eWxlKikgY29uc3Q7CiB9OwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0
bWwvQmFzZUNoZWNrYWJsZUlucHV0VHlwZS5jcHAgYi9XZWJDb3JlL2h0bWwvQmFzZUNoZWNrYWJs
ZUlucHV0VHlwZS5jcHAKaW5kZXggMDA5ZThlNDhkM2UyMGFmMTNkMGFmZWUzYTE4YTc5ZTc0ODhk
MTA1YS4uOTQwYWNmNDJiODMyZmZkZjgzMzM2NDhlMDlhYmVlOGM0N2MxZGExYyAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9odG1sL0Jhc2VDaGVja2FibGVJbnB1dFR5cGUuY3BwCisrKyBiL1dlYkNvcmUv
aHRtbC9CYXNlQ2hlY2thYmxlSW5wdXRUeXBlLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1
ZGUgIkZvcm1EYXRhTGlzdC5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKICNpbmNs
dWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAi
UmVndWxhckV4cHJlc3Npb24uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTcsNCArNTgs
MjUgQEAgYm9vbCBCYXNlQ2hlY2thYmxlSW5wdXRUeXBlOjphcHBlbmRGb3JtRGF0YShGb3JtRGF0
YUxpc3QmIGVuY29kaW5nLCBib29sKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCitib29s
IEJhc2VDaGVja2FibGVJbnB1dFR5cGU6OmhhbmRsZUtleWRvd25FdmVudChLZXlib2FyZEV2ZW50
KiBldmVudCkKK3sKKyAgICBjb25zdCBTdHJpbmcmIGtleSA9IGV2ZW50LT5rZXlJZGVudGlmaWVy
KCk7CisgICAgaWYgKGtleSA9PSAiVSswMDIwIikgeworICAgICAgICBlbGVtZW50KCktPnNldEFj
dGl2ZSh0cnVlLCB0cnVlKTsKKyAgICAgICAgLy8gTm8gc2V0RGVmYXVsdEhhbmRsZWQoKSwgYmVj
YXVzZSBJRSBkaXNwYXRjaGVzIGEga2V5cHJlc3MgaW4gdGhpcyBjYXNlCisgICAgICAgIC8vIGFu
ZCB0aGUgY2FsbGVyIHdpbGwgb25seSBkaXNwYXRjaCBhIGtleXByZXNzIGlmIHdlIGRvbid0IGNh
bGwgc2V0RGVmYXVsdEhhbmRsZWQoKS4KKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCiti
b29sIEJhc2VDaGVja2FibGVJbnB1dFR5cGU6OmhhbmRsZUtleXByZXNzRXZlbnQoS2V5Ym9hcmRF
dmVudCogZXZlbnQpCit7CisgICAgaWYgKGV2ZW50LT5jaGFyQ29kZSgpID09ICcgJykgeworICAg
ICAgICAvLyBQcmV2ZW50IHNjcm9sbGluZyBkb3duIHRoZSBwYWdlLgorICAgICAgICBldmVudC0+
c2V0RGVmYXVsdEhhbmRsZWQoKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJl
dHVybiBmYWxzZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9odG1sL0Jhc2VDaGVja2FibGVJbnB1dFR5cGUuaCBiL1dlYkNvcmUvaHRtbC9CYXNlQ2hl
Y2thYmxlSW5wdXRUeXBlLmgKaW5kZXggMDJlZGYyOTY4NDJlN2RjYjNiMDM0MjUxODZkNzFjNWFi
OTM3Njg2YS4uOGNiOTVjZjY3NzBlNzYzNTZlMTU2NzIxMmIzOWM5NjkyNzgxODA0OSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9odG1sL0Jhc2VDaGVja2FibGVJbnB1dFR5cGUuaAorKysgYi9XZWJDb3Jl
L2h0bWwvQmFzZUNoZWNrYWJsZUlucHV0VHlwZS5oCkBAIC0zOSwxMSArMzksMTMgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgQmFzZUNoZWNrYWJsZUlucHV0VHlwZSA6IHB1YmxpYyBJbnB1
dFR5cGUgewogcHJvdGVjdGVkOgogICAgIEJhc2VDaGVja2FibGVJbnB1dFR5cGUoSFRNTElucHV0
RWxlbWVudCogZWxlbWVudCkgOiBJbnB1dFR5cGUoZWxlbWVudCkgeyB9CisgICAgdmlydHVhbCBi
b29sIGhhbmRsZUtleWRvd25FdmVudChLZXlib2FyZEV2ZW50Kik7CiAKIHByaXZhdGU6CiAgICAg
dmlydHVhbCBib29sIHNhdmVGb3JtQ29udHJvbFN0YXRlKFN0cmluZyYpIGNvbnN0OwogICAgIHZp
cnR1YWwgdm9pZCByZXN0b3JlRm9ybUNvbnRyb2xTdGF0ZShjb25zdCBTdHJpbmcmKSBjb25zdDsK
ICAgICB2aXJ0dWFsIGJvb2wgYXBwZW5kRm9ybURhdGEoRm9ybURhdGFMaXN0JiwgYm9vbCkgY29u
c3Q7CisgICAgdmlydHVhbCBib29sIGhhbmRsZUtleXByZXNzRXZlbnQoS2V5Ym9hcmRFdmVudCop
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1s
L0NoZWNrYm94SW5wdXRUeXBlLmNwcCBiL1dlYkNvcmUvaHRtbC9DaGVja2JveElucHV0VHlwZS5j
cHAKaW5kZXggNWUwMTVlNGZkMzhkNDkxNjc1Y2U4OGNkOGQzN2EwZDM5NTM4Y2ZiMy4uNzlkOWU0
MjU5ZDgxZmJiZGE5NTQ5N2JkOWFjOWJiMjU5ZjFhZmNmNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9o
dG1sL0NoZWNrYm94SW5wdXRUeXBlLmNwcAorKysgYi9XZWJDb3JlL2h0bWwvQ2hlY2tib3hJbnB1
dFR5cGUuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiQ2hlY2tib3hJbnB1dFR5cGUu
aCIKIAogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKKyNpbmNsdWRlICJLZXlib2FyZEV2
ZW50LmgiCiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUgPHd0Zi9QYXNz
T3duUHRyLmg+CiAKQEAgLTU3LDQgKzU4LDE1IEBAIFN0cmluZyBDaGVja2JveElucHV0VHlwZTo6
dmFsdWVNaXNzaW5nVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIHZhbGlkYXRpb25NZXNzYWdlVmFs
dWVNaXNzaW5nRm9yQ2hlY2tib3hUZXh0KCk7CiB9CiAKK2Jvb2wgQ2hlY2tib3hJbnB1dFR5cGU6
OmhhbmRsZUtleXVwRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQpCit7CisgICAgY29uc3QgU3Ry
aW5nJiBrZXkgPSBldmVudC0+a2V5SWRlbnRpZmllcigpOworICAgIGlmIChrZXkgIT0gIlUrMDAy
MCIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoZWxlbWVudCgpLT5hY3RpdmUoKSkK
KyAgICAgICAgZWxlbWVudCgpLT5kaXNwYXRjaFNpbXVsYXRlZENsaWNrKGV2ZW50KTsKKyAgICBl
dmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0NoZWNrYm94SW5wdXRU
eXBlLmggYi9XZWJDb3JlL2h0bWwvQ2hlY2tib3hJbnB1dFR5cGUuaAppbmRleCBhNGM0MTlkYjdk
ZWZmZWEyNWI5ZmU3OTczNDRlMWI4YTE5Nzk4N2ZmLi5lNjZhYjE1MzllOWI5MzgxYzkxNGJkZmI3
ODk0NmRiMWFkMWIzZGZjIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvQ2hlY2tib3hJbnB1dFR5
cGUuaAorKysgYi9XZWJDb3JlL2h0bWwvQ2hlY2tib3hJbnB1dFR5cGUuaApAQCAtNDQsNiArNDQs
NyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBmb3JtQ29udHJv
bFR5cGUoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgdmFsdWVNaXNzaW5nKGNvbnN0IFN0cmlu
ZyYpIGNvbnN0OwogICAgIHZpcnR1YWwgU3RyaW5nIHZhbHVlTWlzc2luZ1RleHQoKSBjb25zdDsK
KyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlS2V5dXBFdmVudChLZXlib2FyZEV2ZW50Kik7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXgg
NTVmYTE5NWQyYWJmMTY1OTA1Mzg2NzIyY2QwNGJkYTU1NzFlNTE5ZS4uZjZkNjFlMjc0YWQyMmRj
ZWY4MmU5MWQ5YmJmNmYzYmM3OWJiN2Q3NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxJ
bnB1dEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApA
QCAtMTI5MiwxMSArMTI5Miw2IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6ZGVmYXVsdEV2ZW50
SGFuZGxlcihFdmVudCogZXZ0KQogICAgIC8vIEZJWE1FOiBJdCB3b3VsZCBiZSBiZXR0ZXIgdG8g
cmVmYWN0b3IgdGhpcyBmb3IgdGhlIGRpZmZlcmVudCB0eXBlcyBvZiBpbnB1dCBlbGVtZW50Lgog
ICAgIC8vIEhhdmluZyB0aGVtIGFsbCBpbiBvbmUgZ2lhbnQgZnVuY3Rpb24gbWFrZXMgdGhpcyBo
YXJkIHRvIHJlYWQsIGFuZCBhbG1vc3QgYWxsIHRoZSBoYW5kbGluZyBpcyB0eXBlLXNwZWNpZmlj
LgogCi0gICAgYm9vbCBpbXBsaWNpdFN1Ym1pc3Npb24gPSBmYWxzZTsKLQotICAgIGlmIChpc1Rl
eHRGaWVsZCgpICYmIGV2dC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS50ZXh0SW5wdXRFdmVudCAm
JiBldnQtPmlzVGV4dEV2ZW50KCkgJiYgc3RhdGljX2Nhc3Q8VGV4dEV2ZW50Kj4oZXZ0KS0+ZGF0
YSgpID09ICJcbiIpCi0gICAgICAgIGltcGxpY2l0U3VibWlzc2lvbiA9IHRydWU7Ci0KICAgICBp
ZiAoZXZ0LT5pc01vdXNlRXZlbnQoKSAmJiBldnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuY2xp
Y2tFdmVudCAmJiBtX2lucHV0VHlwZS0+aGFuZGxlQ2xpY2tFdmVudChzdGF0aWNfY2FzdDxNb3Vz
ZUV2ZW50Kj4oZXZ0KSkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTMwNSw4ICsxMzAwLDcgQEAg
dm9pZCBIVE1MSW5wdXRFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldnQpCiAK
ICAgICAvLyBDYWxsIHRoZSBiYXNlIGV2ZW50IGhhbmRsZXIgYmVmb3JlIGFueSBvZiBvdXIgb3du
IGV2ZW50IGhhbmRsaW5nIGZvciBhbG1vc3QgYWxsIGV2ZW50cyBpbiB0ZXh0IGZpZWxkcy4KICAg
ICAvLyBNYWtlcyBlZGl0aW5nIGtleWJvYXJkIGhhbmRsaW5nIHRha2UgcHJlY2VkZW5jZSBvdmVy
IHRoZSBrZXlkb3duIGFuZCBrZXlwcmVzcyBoYW5kbGluZyBpbiB0aGlzIGZ1bmN0aW9uLgotICAg
IGJvb2wgY2FsbEJhc2VDbGFzc0Vhcmx5ID0gaXNUZXh0RmllbGQoKSAmJiAhaW1wbGljaXRTdWJt
aXNzaW9uCi0gICAgICAgICYmIChldnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkua2V5ZG93bkV2
ZW50IHx8IGV2dC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5rZXlwcmVzc0V2ZW50KTsKKyAgICBi
b29sIGNhbGxCYXNlQ2xhc3NFYXJseSA9IGlzVGV4dEZpZWxkKCkgJiYgKGV2dC0+dHlwZSgpID09
IGV2ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQgfHwgZXZ0LT50eXBlKCkgPT0gZXZlbnROYW1lcygp
LmtleXByZXNzRXZlbnQpOwogICAgIGlmIChjYWxsQmFzZUNsYXNzRWFybHkpIHsKICAgICAgICAg
SFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZTo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldnQp
OwogICAgICAgICBpZiAoZXZ0LT5kZWZhdWx0SGFuZGxlZCgpKQpAQCAtMTMyMiwxODAgKzEzMTYs
MTMgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBl
dnQpCiAKICAgICAvLyBVc2Uga2V5IHByZXNzIGV2ZW50IGhlcmUgc2luY2Ugc2VuZGluZyBzaW11
bGF0ZWQgbW91c2UgZXZlbnRzCiAgICAgLy8gb24ga2V5IGRvd24gYmxvY2tzIHRoZSBwcm9wZXIg
c2VuZGluZyBvZiB0aGUga2V5IHByZXNzIGV2ZW50LgotICAgIGlmIChldnQtPnR5cGUoKSA9PSBl
dmVudE5hbWVzKCkua2V5cHJlc3NFdmVudCAmJiBldnQtPmlzS2V5Ym9hcmRFdmVudCgpKSB7Ci0g
ICAgICAgIGJvb2wgY2xpY2tFbGVtZW50ID0gZmFsc2U7Ci0KLSAgICAgICAgaW50IGNoYXJDb2Rl
ID0gc3RhdGljX2Nhc3Q8S2V5Ym9hcmRFdmVudCo+KGV2dCktPmNoYXJDb2RlKCk7Ci0KLSAgICAg
ICAgaWYgKGNoYXJDb2RlID09ICdccicpIHsKLSAgICAgICAgICAgIHN3aXRjaCAoZGVwcmVjYXRl
ZElucHV0VHlwZSgpKSB7Ci0gICAgICAgICAgICBjYXNlIENIRUNLQk9YOgotICAgICAgICAgICAg
Y2FzZSBDT0xPUjoKLSAgICAgICAgICAgIGNhc2UgREFURToKLSAgICAgICAgICAgIGNhc2UgREFU
RVRJTUU6Ci0gICAgICAgICAgICBjYXNlIERBVEVUSU1FTE9DQUw6Ci0gICAgICAgICAgICBjYXNl
IEVNQUlMOgotICAgICAgICAgICAgY2FzZSBISURERU46Ci0gICAgICAgICAgICBjYXNlIElTSU5E
RVg6Ci0gICAgICAgICAgICBjYXNlIE1PTlRIOgotICAgICAgICAgICAgY2FzZSBOVU1CRVI6Ci0g
ICAgICAgICAgICBjYXNlIFBBU1NXT1JEOgotICAgICAgICAgICAgY2FzZSBSQURJTzoKLSAgICAg
ICAgICAgIGNhc2UgUkFOR0U6Ci0gICAgICAgICAgICBjYXNlIFNFQVJDSDoKLSAgICAgICAgICAg
IGNhc2UgVEVMRVBIT05FOgotICAgICAgICAgICAgY2FzZSBURVhUOgotICAgICAgICAgICAgY2Fz
ZSBUSU1FOgotICAgICAgICAgICAgY2FzZSBVUkw6Ci0gICAgICAgICAgICBjYXNlIFdFRUs6Ci0g
ICAgICAgICAgICAgICAgLy8gU2ltdWxhdGUgbW91c2UgY2xpY2sgb24gdGhlIGRlZmF1bHQgZm9y
bSBidXR0b24gZm9yIGVudGVyIGZvciB0aGVzZSB0eXBlcyBvZiBlbGVtZW50cy4KLSAgICAgICAg
ICAgICAgICBpbXBsaWNpdFN1Ym1pc3Npb24gPSB0cnVlOwotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgY2FzZSBCVVRUT046Ci0gICAgICAgICAgICBjYXNlIEZJTEU6Ci0gICAg
ICAgICAgICBjYXNlIElNQUdFOgotICAgICAgICAgICAgY2FzZSBSRVNFVDoKLSAgICAgICAgICAg
IGNhc2UgU1VCTUlUOgotICAgICAgICAgICAgICAgIC8vIFNpbXVsYXRlIG1vdXNlIGNsaWNrIGZv
ciBlbnRlciBmb3IgdGhlc2UgdHlwZXMgb2YgZWxlbWVudHMuCi0gICAgICAgICAgICAgICAgY2xp
Y2tFbGVtZW50ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfSBlbHNlIGlmIChjaGFyQ29kZSA9PSAnICcpIHsKLSAgICAgICAgICAgIHN3aXRj
aCAoZGVwcmVjYXRlZElucHV0VHlwZSgpKSB7Ci0gICAgICAgICAgICBjYXNlIEJVVFRPTjoKLSAg
ICAgICAgICAgIGNhc2UgQ0hFQ0tCT1g6Ci0gICAgICAgICAgICBjYXNlIEZJTEU6Ci0gICAgICAg
ICAgICBjYXNlIElNQUdFOgotICAgICAgICAgICAgY2FzZSBSRVNFVDoKLSAgICAgICAgICAgIGNh
c2UgU1VCTUlUOgotICAgICAgICAgICAgY2FzZSBSQURJTzoKLSAgICAgICAgICAgICAgICAvLyBQ
cmV2ZW50IHNjcm9sbGluZyBkb3duIHRoZSBwYWdlLgotICAgICAgICAgICAgICAgIGV2dC0+c2V0
RGVmYXVsdEhhbmRsZWQoKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBk
ZWZhdWx0OgotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0KLSAgICAgICAgaWYgKGNsaWNrRWxlbWVudCkgewotICAgICAgICAgICAgZGlzcGF0Y2hTaW11
bGF0ZWRDbGljayhldnQpOwotICAgICAgICAgICAgZXZ0LT5zZXREZWZhdWx0SGFuZGxlZCgpOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKGV2dC0+dHlw
ZSgpID09IGV2ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQgJiYgZXZ0LT5pc0tleWJvYXJkRXZlbnQo
KSkgewotICAgICAgICBjb25zdCBTdHJpbmcmIGtleSA9IHN0YXRpY19jYXN0PEtleWJvYXJkRXZl
bnQqPihldnQpLT5rZXlJZGVudGlmaWVyKCk7Ci0KLSAgICAgICAgaWYgKGtleSA9PSAiVSswMDIw
IikgewotICAgICAgICAgICAgc3dpdGNoIChkZXByZWNhdGVkSW5wdXRUeXBlKCkpIHsKLSAgICAg
ICAgICAgIGNhc2UgQlVUVE9OOgotICAgICAgICAgICAgY2FzZSBDSEVDS0JPWDoKLSAgICAgICAg
ICAgIGNhc2UgRklMRToKLSAgICAgICAgICAgIGNhc2UgSU1BR0U6Ci0gICAgICAgICAgICBjYXNl
IFJFU0VUOgotICAgICAgICAgICAgY2FzZSBTVUJNSVQ6Ci0gICAgICAgICAgICBjYXNlIFJBRElP
OgotICAgICAgICAgICAgICAgIHNldEFjdGl2ZSh0cnVlLCB0cnVlKTsKLSAgICAgICAgICAgICAg
ICAvLyBObyBzZXREZWZhdWx0SGFuZGxlZCgpLCBiZWNhdXNlIElFIGRpc3BhdGNoZXMgYSBrZXlw
cmVzcyBpbiB0aGlzIGNhc2UKLSAgICAgICAgICAgICAgICAvLyBhbmQgdGhlIGNhbGxlciB3aWxs
IG9ubHkgZGlzcGF0Y2ggYSBrZXlwcmVzcyBpZiB3ZSBkb24ndCBjYWxsIHNldERlZmF1bHRIYW5k
bGVkLgotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBp
ZiAoZGVwcmVjYXRlZElucHV0VHlwZSgpID09IFJBRElPICYmIChrZXkgPT0gIlVwIiB8fCBrZXkg
PT0gIkRvd24iIHx8IGtleSA9PSAiTGVmdCIgfHwga2V5ID09ICJSaWdodCIpKSB7Ci0gICAgICAg
ICAgICAvLyBMZWZ0IGFuZCB1cCBtZWFuICJwcmV2aW91cyByYWRpbyBidXR0b24iLgotICAgICAg
ICAgICAgLy8gUmlnaHQgYW5kIGRvd24gbWVhbiAibmV4dCByYWRpbyBidXR0b24iLgotICAgICAg
ICAgICAgLy8gVGVzdGVkIGluIFdpbklFLCBhbmQgZXZlbiBmb3IgUlRMLCBsZWZ0IHN0aWxsIG1l
YW5zIHByZXZpb3VzIHJhZGlvIGJ1dHRvbiAoYW5kIHNvIG1vdmVzCi0gICAgICAgICAgICAvLyB0
byB0aGUgcmlnaHQpLiAgU2VlbXMgc3RyYW5nZSwgYnV0IHdlJ2xsIG1hdGNoIGl0LgotICAgICAg
ICAgICAgLy8gSG93ZXZlciwgd2hlbiB1c2luZyBTcGF0aWFsIE5hdmlnYXRpb24sIHdlIG5lZWQg
dG8gYmUgYWJsZSB0byBuYXZpZ2F0ZSB3aXRob3V0IGNoYW5naW5nIHRoZSBzZWxlY3Rpb24uCi0g
ICAgICAgICAgICBpZiAoIWlzU3BhdGlhbE5hdmlnYXRpb25FbmFibGVkKGRvY3VtZW50KCktPmZy
YW1lKCkpKSB7Ci0gICAgICAgICAgICAgICAgYm9vbCBmb3J3YXJkID0gKGtleSA9PSAiRG93biIg
fHwga2V5ID09ICJSaWdodCIpOwotCi0gICAgICAgICAgICAgICAgLy8gV2UgY2FuIG9ubHkgc3Rh
eSB3aXRoaW4gdGhlIGZvcm0ncyBjaGlsZHJlbiBpZiB0aGUgZm9ybSBoYXNuJ3QgYmVlbiBkZW1v
dGVkIHRvIGEgbGVhZiBiZWNhdXNlCi0gICAgICAgICAgICAgICAgLy8gb2YgbWFsZm9ybWVkIEhU
TUwuCi0gICAgICAgICAgICAgICAgTm9kZSogbiA9IHRoaXM7Ci0gICAgICAgICAgICAgICAgd2hp
bGUgKChuID0gKGZvcndhcmQgPyBuLT50cmF2ZXJzZU5leHROb2RlKCkgOiBuLT50cmF2ZXJzZVBy
ZXZpb3VzTm9kZSgpKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gT25jZSB3ZSBlbmNvdW50
ZXIgYSBmb3JtIGVsZW1lbnQsIHdlIGtub3cgd2UncmUgdGhyb3VnaC4KLSAgICAgICAgICAgICAg
ICAgICAgaWYgKG4tPmhhc1RhZ05hbWUoZm9ybVRhZykpCi0gICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLQotICAgICAgICAgICAgICAgICAgICAvLyBMb29rIGZvciBtb3JlIHJhZGlvIGJ1
dHRvbnMuCi0gICAgICAgICAgICAgICAgICAgIGlmIChuLT5oYXNUYWdOYW1lKGlucHV0VGFnKSkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgSFRNTElucHV0RWxlbWVudCogZWx0ID0gc3RhdGlj
X2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KG4pOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KGVsdC0+Zm9ybSgpICE9IGZvcm0oKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuLT5oYXNUYWdOYW1lKGlucHV0VGFnKSkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWx0
ID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KG4pOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChpbnB1dEVsdC0+ZGVwcmVjYXRlZElucHV0VHlwZSgpID09IFJBRElPICYm
IGlucHV0RWx0LT5uYW1lKCkgPT0gbmFtZSgpICYmIGlucHV0RWx0LT5pc0ZvY3VzYWJsZSgpKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0RWx0LT5zZXRDaGVja2VkKHRy
dWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudCgpLT5zZXRGb2N1
c2VkTm9kZShpbnB1dEVsdCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0
RWx0LT5kaXNwYXRjaFNpbXVsYXRlZENsaWNrKGV2dCwgZmFsc2UsIGZhbHNlKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZXZ0LT5zZXREZWZhdWx0SGFuZGxlZCgpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAg
ICBpZiAoZXZ0LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmtleXVwRXZlbnQgJiYgZXZ0LT5pc0tl
eWJvYXJkRXZlbnQoKSkgewotICAgICAgICBib29sIGNsaWNrRWxlbWVudCA9IGZhbHNlOwotCi0g
ICAgICAgIGNvbnN0IFN0cmluZyYga2V5ID0gc3RhdGljX2Nhc3Q8S2V5Ym9hcmRFdmVudCo+KGV2
dCktPmtleUlkZW50aWZpZXIoKTsKLQotICAgICAgICBpZiAoa2V5ID09ICJVKzAwMjAiKSB7Ci0g
ICAgICAgICAgICBzd2l0Y2ggKGRlcHJlY2F0ZWRJbnB1dFR5cGUoKSkgewotICAgICAgICAgICAg
Y2FzZSBCVVRUT046Ci0gICAgICAgICAgICBjYXNlIENIRUNLQk9YOgotICAgICAgICAgICAgY2Fz
ZSBGSUxFOgotICAgICAgICAgICAgY2FzZSBJTUFHRToKLSAgICAgICAgICAgIGNhc2UgUkVTRVQ6
Ci0gICAgICAgICAgICBjYXNlIFNVQk1JVDoKLSAgICAgICAgICAgICAgICAvLyBTaW11bGF0ZSBt
b3VzZSBjbGljayBmb3Igc3BhY2ViYXIgZm9yIHRoZXNlIHR5cGVzIG9mIGVsZW1lbnRzLgotICAg
ICAgICAgICAgICAgIC8vIFRoZSBBcHBLaXQgYWxyZWFkeSBkb2VzIHRoaXMgZm9yIHNvbWUsIGJ1
dCBub3QgYWxsLCBvZiB0aGVtLgotICAgICAgICAgICAgICAgIGNsaWNrRWxlbWVudCA9IHRydWU7
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFJBRElPOgotICAgICAg
ICAgICAgICAgIC8vIElmIGFuIHVuc2VsZWN0ZWQgcmFkaW8gaXMgdGFiYmVkIGludG8gKGJlY2F1
c2UgdGhlIGVudGlyZSBncm91cCBoYXMgbm90aGluZwotICAgICAgICAgICAgICAgIC8vIGNoZWNr
ZWQsIG9yIGJlY2F1c2Ugb2Ygc29tZSBleHBsaWNpdCAuZm9jdXMoKSBjYWxsKSwgdGhlbiBhbGxv
dyBzcGFjZSB0byBjaGVjayBpdC4KLSAgICAgICAgICAgICAgICBpZiAoIWNoZWNrZWQoKSkKLSAg
ICAgICAgICAgICAgICAgICAgY2xpY2tFbGVtZW50ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIGNhc2UgQ09MT1I6Ci0gICAgICAgICAgICBjYXNlIERBVEU6Ci0g
ICAgICAgICAgICBjYXNlIERBVEVUSU1FOgotICAgICAgICAgICAgY2FzZSBEQVRFVElNRUxPQ0FM
OgotICAgICAgICAgICAgY2FzZSBFTUFJTDoKLSAgICAgICAgICAgIGNhc2UgSElEREVOOgotICAg
ICAgICAgICAgY2FzZSBJU0lOREVYOgotICAgICAgICAgICAgY2FzZSBNT05USDoKLSAgICAgICAg
ICAgIGNhc2UgTlVNQkVSOgotICAgICAgICAgICAgY2FzZSBQQVNTV09SRDoKLSAgICAgICAgICAg
IGNhc2UgUkFOR0U6Ci0gICAgICAgICAgICBjYXNlIFNFQVJDSDoKLSAgICAgICAgICAgIGNhc2Ug
VEVMRVBIT05FOgotICAgICAgICAgICAgY2FzZSBURVhUOgotICAgICAgICAgICAgY2FzZSBUSU1F
OgotICAgICAgICAgICAgY2FzZSBVUkw6Ci0gICAgICAgICAgICBjYXNlIFdFRUs6Ci0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KKyAgICBpZiAoZXZ0LT5p
c0tleWJvYXJkRXZlbnQoKSAmJiBldnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkua2V5cHJlc3NF
dmVudCAmJiBtX2lucHV0VHlwZS0+aGFuZGxlS2V5cHJlc3NFdmVudChzdGF0aWNfY2FzdDxLZXli
b2FyZEV2ZW50Kj4oZXZ0KSkpCisgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoY2xpY2tF
bGVtZW50KSB7Ci0gICAgICAgICAgICBpZiAoYWN0aXZlKCkpCi0gICAgICAgICAgICAgICAgZGlz
cGF0Y2hTaW11bGF0ZWRDbGljayhldnQpOwotICAgICAgICAgICAgZXZ0LT5zZXREZWZhdWx0SGFu
ZGxlZCgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9ICAgICAgICAKLSAgICB9Cisg
ICAgaWYgKGV2dC0+aXNLZXlib2FyZEV2ZW50KCkgJiYgZXZ0LT50eXBlKCkgPT0gZXZlbnROYW1l
cygpLmtleXVwRXZlbnQgJiYgbV9pbnB1dFR5cGUtPmhhbmRsZUtleXVwRXZlbnQoc3RhdGljX2Nh
c3Q8S2V5Ym9hcmRFdmVudCo+KGV2dCkpKQorICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoaW1w
bGljaXRTdWJtaXNzaW9uKSB7CisgICAgaWYgKG1faW5wdXRUeXBlLT5zaG91bGRTdWJtaXRJbXBs
aWNpdGx5KGV2dCkpIHsKICAgICAgICAgaWYgKGlzU2VhcmNoRmllbGQoKSkgewogICAgICAgICAg
ICAgYWRkU2VhcmNoUmVzdWx0KCk7CiAgICAgICAgICAgICBvblNlYXJjaCgpOwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAgYi9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNw
cAppbmRleCAyOTRmNzVlYmQ3MThlNzIxNzU5Y2JiNjY1ZTM0OWE4MzU1MmExNzA3Li42NTY2NjYy
N2QyMmNlZmFjMGY4NGYxYjZhYmViZWY4ZWE0M2Q5ZjM0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0
bWwvSW5wdXRUeXBlLmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcApAQCAtNDEs
NiArNDEsNyBAQAogI2luY2x1ZGUgIkhpZGRlbklucHV0VHlwZS5oIgogI2luY2x1ZGUgIkltYWdl
SW5wdXRUeXBlLmgiCiAjaW5jbHVkZSAiSXNJbmRleElucHV0VHlwZS5oIgorI2luY2x1ZGUgIktl
eWJvYXJkRXZlbnQuaCIKICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW5jbHVkZSAi
TW9udGhJbnB1dFR5cGUuaCIKICNpbmNsdWRlICJOdW1iZXJJbnB1dFR5cGUuaCIKQEAgLTI4MCw2
ICsyODEsMTEgQEAgU3RyaW5nIElucHV0VHlwZTo6dmFsdWVNaXNzaW5nVGV4dCgpIGNvbnN0CiAg
ICAgcmV0dXJuIHZhbGlkYXRpb25NZXNzYWdlVmFsdWVNaXNzaW5nVGV4dCgpOwogfQogCitib29s
IElucHV0VHlwZTo6c2hvdWxkU3VibWl0SW1wbGljaXRseShFdmVudCogZXZlbnQpCit7CisgICAg
cmV0dXJuIGV2ZW50LT5pc0tleWJvYXJkRXZlbnQoKSAmJiBldmVudC0+dHlwZSgpID09IGV2ZW50
TmFtZXMoKS5rZXlwcmVzc0V2ZW50ICYmIHN0YXRpY19jYXN0PEtleWJvYXJkRXZlbnQqPihldmVu
dCktPmNoYXJDb2RlKCkgPT0gJ1xyJzsKK30KKwogYm9vbCBJbnB1dFR5cGU6OmhhbmRsZUNsaWNr
RXZlbnQoTW91c2VFdmVudCopCiB7CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjk1LDYgKzMwMSwx
NiBAQCBib29sIElucHV0VHlwZTo6aGFuZGxlS2V5ZG93bkV2ZW50KEtleWJvYXJkRXZlbnQqKQog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBJbnB1dFR5cGU6OmhhbmRsZUtleXByZXNzRXZl
bnQoS2V5Ym9hcmRFdmVudCopCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIElucHV0
VHlwZTo6aGFuZGxlS2V5dXBFdmVudChLZXlib2FyZEV2ZW50KikKK3sKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKIFJlbmRlck9iamVjdCogSW5wdXRUeXBlOjpjcmVhdGVSZW5kZXJlcihSZW5kZXJB
cmVuYSosIFJlbmRlclN0eWxlKiBzdHlsZSkgY29uc3QKIHsKICAgICByZXR1cm4gUmVuZGVyT2Jq
ZWN0OjpjcmVhdGVPYmplY3QoZWxlbWVudCgpLCBzdHlsZSk7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2h0bWwvSW5wdXRUeXBlLmggYi9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKaW5kZXggYzE0MTdm
YTRlNGI0NjAwODQ0OTk1YzQzNTcwZjY2ZWE4NGI0OTcxMS4uYTdjZjRjOWU5MjMyNjAwZGJjODZm
ZWU0ZWIzMTU0ODJlNWRjNzk3YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5o
CisrKyBiL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaApAQCAtMTAzLDEzICsxMDMsMTYgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgU3RyaW5nIHZhbHVlTWlzc2luZ1RleHQoKSBjb25zdDsKIAogICAg
IC8vIEV2ZW50IGhhbmRsZXJzCi0gICAgLy8gSWYgdGhlIHJldHVybiB2YWx1ZSBpcyB0cnVlLCBk
byBubyBmdXJ0aGVyIGRlZmF1bHQgZXZlbnQgaGFuZGxpbmcgaW4gdGhlCi0gICAgLy8gZGVmYXVs
dCBldmVudCBoYW5kbGVyLiBJZiBhbiBldmVudCBoYW5kbGVyIGNhbGxzIEV2ZW50OjpzZXREZWZh
dWx0SGFuZGxlZCgpLAotICAgIC8vIGl0cyByZXR1cm4gdmFsdWUgbXVzdCBiZSB0cnVlLgorICAg
IC8vIElmIHRoZSByZXR1cm4gdmFsdWUgb2YgaGFuZGxlRm9vRXZlbnQoKSBpcyB0cnVlLCBkbyBu
byBmdXJ0aGVyIGRlZmF1bHQKKyAgICAvLyBldmVudCBoYW5kbGluZyBpbiB0aGUgZGVmYXVsdCBl
dmVudCBoYW5kbGVyLiBJZiBhbiBldmVudCBoYW5kbGVyIGNhbGxzCisgICAgLy8gRXZlbnQ6OnNl
dERlZmF1bHRIYW5kbGVkKCksIGl0cyByZXR1cm4gdmFsdWUgbXVzdCBiZSB0cnVlLgogCisgICAg
dmlydHVhbCBib29sIHNob3VsZFN1Ym1pdEltcGxpY2l0bHkoRXZlbnQqKTsKICAgICB2aXJ0dWFs
IGJvb2wgaGFuZGxlQ2xpY2tFdmVudChNb3VzZUV2ZW50Kik7CiAgICAgdmlydHVhbCBib29sIGhh
bmRsZURPTUFjdGl2YXRlRXZlbnQoRXZlbnQqKTsKICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlS2V5
ZG93bkV2ZW50KEtleWJvYXJkRXZlbnQqKTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlS2V5cHJl
c3NFdmVudChLZXlib2FyZEV2ZW50Kik7CisgICAgdmlydHVhbCBib29sIGhhbmRsZUtleXVwRXZl
bnQoS2V5Ym9hcmRFdmVudCopOwogCiAgICAgLy8gTWlzY2VsbGFuZW91cyBmdW5jdGlvbnMKIApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL1JhZGlvSW5wdXRUeXBlLmNwcCBiL1dlYkNvcmUvaHRt
bC9SYWRpb0lucHV0VHlwZS5jcHAKaW5kZXggZjU5Y2Y3OGYzNjM3ZjcyNmUxOGFiYTQ0YTQ4ZDlm
NTYxNmU3NjczOS4uOGU0OWQ3NmRjMjc1MjMzMWFlODM1ZWVkNzdhZmEzN2YyNjJmZjNjZiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9odG1sL1JhZGlvSW5wdXRUeXBlLmNwcAorKysgYi9XZWJDb3JlL2h0
bWwvUmFkaW9JbnB1dFR5cGUuY3BwCkBAIC0xLDQzICsxLDQxIEBACiAvKgorICogQ29weXJpZ2h0
IChDKSAyMDA1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAo
QykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICog
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgogICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQot
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
CisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgogICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
LSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJhZGlv
SW5wdXRUeXBlLmgiCiAKKyNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVs
ZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJLZXlib2FyZEV2ZW50
LmgiCiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUgIk1vdXNlRXZlbnQu
aCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIlNwYXRpYWxOYXZpZ2F0aW9uLmgi
CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCit1
c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOworCiBQYXNzT3duUHRyPElucHV0VHlwZT4gUmFkaW9J
bnB1dFR5cGU6OmNyZWF0ZShIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50KQogewogICAgIHJldHVy
biBhZG9wdFB0cihuZXcgUmFkaW9JbnB1dFR5cGUoZWxlbWVudCkpOwpAQCAtNjQsNCArNjIsNjEg
QEAgYm9vbCBSYWRpb0lucHV0VHlwZTo6aGFuZGxlQ2xpY2tFdmVudChNb3VzZUV2ZW50KiBldmVu
dCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBSYWRpb0lucHV0VHlwZTo6aGFuZGxlS2V5
ZG93bkV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQoreworICAgIGlmIChCYXNlQ2hlY2thYmxl
SW5wdXRUeXBlOjpoYW5kbGVLZXlkb3duRXZlbnQoZXZlbnQpKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICBjb25zdCBTdHJpbmcmIGtleSA9IGV2ZW50LT5rZXlJZGVudGlmaWVyKCk7CisgICAg
aWYgKGtleSAhPSAiVXAiICYmIGtleSAhPSAiRG93biIgJiYga2V5ICE9ICJMZWZ0IiAmJiBrZXkg
IT0gIlJpZ2h0IikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gTGVmdCBhbmQgdXAg
bWVhbiAicHJldmlvdXMgcmFkaW8gYnV0dG9uIi4KKyAgICAvLyBSaWdodCBhbmQgZG93biBtZWFu
ICJuZXh0IHJhZGlvIGJ1dHRvbiIuCisgICAgLy8gVGVzdGVkIGluIFdpbklFLCBhbmQgZXZlbiBm
b3IgUlRMLCBsZWZ0IHN0aWxsIG1lYW5zIHByZXZpb3VzIHJhZGlvIGJ1dHRvbiAoYW5kIHNvIG1v
dmVzCisgICAgLy8gdG8gdGhlIHJpZ2h0KS4gIFNlZW1zIHN0cmFuZ2UsIGJ1dCB3ZSdsbCBtYXRj
aCBpdC4KKyAgICAvLyBIb3dldmVyLCB3aGVuIHVzaW5nIFNwYXRpYWwgTmF2aWdhdGlvbiwgd2Ug
bmVlZCB0byBiZSBhYmxlIHRvIG5hdmlnYXRlIHdpdGhvdXQgY2hhbmdpbmcgdGhlIHNlbGVjdGlv
bi4KKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBlbGVtZW50KCktPmRvY3VtZW50KCk7CisgICAg
aWYgKGlzU3BhdGlhbE5hdmlnYXRpb25FbmFibGVkKGRvY3VtZW50LT5mcmFtZSgpKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIGJvb2wgZm9yd2FyZCA9IChrZXkgPT0gIkRvd24iIHx8IGtl
eSA9PSAiUmlnaHQiKTsKKworICAgIC8vIFdlIGNhbiBvbmx5IHN0YXkgd2l0aGluIHRoZSBmb3Jt
J3MgY2hpbGRyZW4gaWYgdGhlIGZvcm0gaGFzbid0IGJlZW4gZGVtb3RlZCB0byBhIGxlYWYgYmVj
YXVzZQorICAgIC8vIG9mIG1hbGZvcm1lZCBIVE1MLgorICAgIE5vZGUqIG5vZGUgPSBlbGVtZW50
KCk7CisgICAgd2hpbGUgKChub2RlID0gKGZvcndhcmQgPyBub2RlLT50cmF2ZXJzZU5leHROb2Rl
KCkgOiBub2RlLT50cmF2ZXJzZVByZXZpb3VzTm9kZSgpKSkpIHsKKyAgICAgICAgLy8gT25jZSB3
ZSBlbmNvdW50ZXIgYSBmb3JtIGVsZW1lbnQsIHdlIGtub3cgd2UncmUgdGhyb3VnaC4KKyAgICAg
ICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUoZm9ybVRhZykpCisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgLy8gTG9vayBmb3IgbW9yZSByYWRpbyBidXR0b25zLgorICAgICAgICBpZiAoIW5vZGUt
Pmhhc1RhZ05hbWUoaW5wdXRUYWcpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIEhU
TUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1l
bnQqPihub2RlKTsKKyAgICAgICAgaWYgKGlucHV0RWxlbWVudC0+Zm9ybSgpICE9IGVsZW1lbnQo
KS0+Zm9ybSgpKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmIChpbnB1dEVsZW1lbnQt
PmlzUmFkaW9CdXR0b24oKSAmJiBpbnB1dEVsZW1lbnQtPm5hbWUoKSA9PSBlbGVtZW50KCktPm5h
bWUoKSAmJiBpbnB1dEVsZW1lbnQtPmlzRm9jdXNhYmxlKCkpIHsKKyAgICAgICAgICAgIGlucHV0
RWxlbWVudC0+c2V0Q2hlY2tlZCh0cnVlKTsKKyAgICAgICAgICAgIGRvY3VtZW50LT5zZXRGb2N1
c2VkTm9kZShpbnB1dEVsZW1lbnQpOworICAgICAgICAgICAgaW5wdXRFbGVtZW50LT5kaXNwYXRj
aFNpbXVsYXRlZENsaWNrKGV2ZW50LCBmYWxzZSwgZmFsc2UpOworICAgICAgICAgICAgZXZlbnQt
PnNldERlZmF1bHRIYW5kbGVkKCk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
fQorICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgUmFkaW9JbnB1dFR5cGU6Omhh
bmRsZUtleXVwRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQpCit7CisgICAgY29uc3QgU3RyaW5n
JiBrZXkgPSBldmVudC0+a2V5SWRlbnRpZmllcigpOworICAgIGlmIChrZXkgIT0gIlUrMDAyMCIp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAvLyBJZiBhbiB1bnNlbGVjdGVkIHJhZGlvIGlz
IHRhYmJlZCBpbnRvIChiZWNhdXNlIHRoZSBlbnRpcmUgZ3JvdXAgaGFzIG5vdGhpbmcKKyAgICAv
LyBjaGVja2VkLCBvciBiZWNhdXNlIG9mIHNvbWUgZXhwbGljaXQgLmZvY3VzKCkgY2FsbCksIHRo
ZW4gYWxsb3cgc3BhY2UgdG8gY2hlY2sgaXQuCisgICAgaWYgKGVsZW1lbnQoKS0+Y2hlY2tlZCgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGVsZW1lbnQoKS0+YWN0aXZlKCkpCisg
ICAgICAgIGVsZW1lbnQoKS0+ZGlzcGF0Y2hTaW11bGF0ZWRDbGljayhldmVudCk7CisgICAgZXZl
bnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9SYWRpb0lucHV0VHlwZS5o
IGIvV2ViQ29yZS9odG1sL1JhZGlvSW5wdXRUeXBlLmgKaW5kZXggMjdhZTc1ZWM1YjBhNjk4MDcy
ZmQ5ODI4ZGEwYmNhNWFhYjg0MWRhOS4uNjJiZWNmNjY5YzkxYWFmNmZkM2Y2Y2UxNWQyMTA1OTVi
MTlmMWJhNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL1JhZGlvSW5wdXRUeXBlLmgKKysrIGIv
V2ViQ29yZS9odG1sL1JhZGlvSW5wdXRUeXBlLmgKQEAgLTQ1LDYgKzQ1LDggQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIGJvb2wgdmFsdWVNaXNzaW5nKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogICAg
IHZpcnR1YWwgU3RyaW5nIHZhbHVlTWlzc2luZ1RleHQoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJv
b2wgaGFuZGxlQ2xpY2tFdmVudChNb3VzZUV2ZW50Kik7CisgICAgdmlydHVhbCBib29sIGhhbmRs
ZUtleWRvd25FdmVudChLZXlib2FyZEV2ZW50Kik7CisgICAgdmlydHVhbCBib29sIGhhbmRsZUtl
eXVwRXZlbnQoS2V5Ym9hcmRFdmVudCopOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAgYi9XZWJDb3Jl
L2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcAppbmRleCBkOTNmOTcyMWY1M2U4MjhlZDhmOTJm
YzE3OGUzNGI3NGYzYzc5YWM5Li5mMWQxOTUxZDNlYTQ0MDcwOTJhZjllZjg1MmE2NmQxNzRhZWNj
MGU4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcAorKysg
Yi9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcApAQCAtMzUsNiArMzUsNyBAQAog
I2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50Lmgi
CiAjaW5jbHVkZSAiUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmgiCisjaW5jbHVkZSAiVGV4
dEV2ZW50LmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTQ5LDYgKzUwLDExIEBAIGJvb2wgVGV4dEZpZWxkSW5wdXRUeXBlOjp2YWx1
ZU1pc3NpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKICAgICByZXR1cm4gdmFsdWUuaXNF
bXB0eSgpOwogfQogCitib29sIFRleHRGaWVsZElucHV0VHlwZTo6c2hvdWxkU3VibWl0SW1wbGlj
aXRseShFdmVudCogZXZlbnQpCit7CisgICAgcmV0dXJuIChldmVudC0+dHlwZSgpID09IGV2ZW50
TmFtZXMoKS50ZXh0SW5wdXRFdmVudCAmJiBldmVudC0+aXNUZXh0RXZlbnQoKSAmJiBzdGF0aWNf
Y2FzdDxUZXh0RXZlbnQqPihldmVudCktPmRhdGEoKSA9PSAiXG4iKSB8fCBJbnB1dFR5cGU6OnNo
b3VsZFN1Ym1pdEltcGxpY2l0bHkoZXZlbnQpOworfQorCiBib29sIFRleHRGaWVsZElucHV0VHlw
ZTo6aGFuZGxlS2V5ZG93bkV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogewogICAgIGlmICgh
ZWxlbWVudCgpLT5mb2N1c2VkKCkpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxk
SW5wdXRUeXBlLmggYi9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmgKaW5kZXggNTA0
MThhYWNkZjJiYjg4MjMwMjEyMmY1NWMxZmVkMTdkOGYzYjAyNS4uNGY5ZWVmZjYyYmU1Njc3YjM4
OWY4NWZlMTY1YjI4OTU3NTBjMjUyMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL1RleHRGaWVs
ZElucHV0VHlwZS5oCisrKyBiL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuaApAQCAt
NDIsNiArNDIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgVGV4dEZpZWxkSW5wdXRUeXBlKEhUTUxJbnB1
dEVsZW1lbnQqIGVsZW1lbnQpIDogSW5wdXRUeXBlKGVsZW1lbnQpIHsgfQogICAgIHZpcnR1YWwg
Ym9vbCBpc1RleHRGaWVsZCgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCB2YWx1ZU1pc3Npbmco
Y29uc3QgU3RyaW5nJikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIHNob3VsZFN1Ym1pdEltcGxp
Y2l0bHkoRXZlbnQqKTsKICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlS2V5ZG93bkV2ZW50KEtleWJv
YXJkRXZlbnQqKTsKICAgICBib29sIGhhbmRsZUtleWRvd25FdmVudEZvclNwaW5CdXR0b24oS2V5
Ym9hcmRFdmVudCopOwogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihS
ZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKikgY29uc3Q7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>