<?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>92380</bug_id>
          
          <creation_ts>2012-07-26 07:04:18 -0700</creation_ts>
          <short_desc>Introduce a minimal RTCPeerConnection together with Dictionary changes</short_desc>
          <delta_ts>2012-07-31 05:00:02 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</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>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>80589</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Tommy Widenflycht">tommyw</reporter>
          <assigned_to name="Tommy Widenflycht">tommyw</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>jochen</cc>
    
    <cc>ojan</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>679285</commentid>
    <comment_count>0</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-07-26 07:04:18 -0700</bug_when>
    <thetext>Since Dictionaries can&apos;t be fully copied around having an get(const String&amp; name, Vector&lt;Dictionary&gt;&amp; result isn&apos;t reasible so I have added two new methods: getArrayLength and getArrayItem.
This is just done for V8, and if this patch is approved by the powers I&apos;ll add the same to JS.

This is needed to be able to parse dictionaries created by these kinds of constructs:

{ servers: [ {uri:&quot;...&quot;, credential:&quot;..&quot;}, {uri:&quot;...&quot;, credential:&quot;..&quot;}, ... ]}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>679293</commentid>
    <comment_count>1</comment_count>
      <attachid>154647</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-07-26 07:09:37 -0700</bug_when>
    <thetext>Created attachment 154647
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>679295</commentid>
    <comment_count>2</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-07-26 07:13:02 -0700</bug_when>
    <thetext>I would be grateful if someone could describe how to add tests for the class Dictionary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>679309</commentid>
    <comment_count>3</comment_count>
      <attachid>154647</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-07-26 07:30:57 -0700</bug_when>
    <thetext>Comment on attachment 154647
Patch

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

r- due to missing tests.

&gt; Source/WebCore/ChangeLog:10
&gt; +        isn&apos;t reasible so I have added two new methods: getArrayLength and getArrayItem.

I don&apos;t understand why you need these two methods. Please describe your working context here.

&gt; Source/WebCore/ChangeLog:12
&gt; +        No new tests (OOPS!).

Please add test cases not only to test your change but also to show how you are planning to use the methods.

&gt; I would be grateful if someone could describe how to add tests for the class Dictionary.

There are no unit tests. You can add LayoutTests that use the methods.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>679315</commentid>
    <comment_count>4</comment_count>
      <attachid>154647</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-07-26 07:39:14 -0700</bug_when>
    <thetext>Comment on attachment 154647
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:10
&gt;&gt; +        isn&apos;t reasible so I have added two new methods: getArrayLength and getArrayItem.
&gt; 
&gt; I don&apos;t understand why you need these two methods. Please describe your working context here.

This is needed to be able to parse dictionaries created by these kinds of constructs:
{ servers: [ {uri:&quot;...&quot;, credential:&quot;..&quot;}, {uri:&quot;...&quot;, credential:&quot;..&quot;}, ... ]}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>679322</commentid>
    <comment_count>5</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-07-26 07:42:42 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; &gt; Source/WebCore/ChangeLog:12
&gt; &gt; +        No new tests (OOPS!).
&gt; 
&gt; Please add test cases not only to test your change but also to show how you are planning to use the methods.
&gt; 
&gt; &gt; I would be grateful if someone could describe how to add tests for the class Dictionary.
&gt; 
&gt; There are no unit tests. You can add LayoutTests that use the methods.

That requires adding the code that does the actual parsing, a mock, DumpRenderTree modifications and LayoutTests. I was hoping there were a way to just test this class separately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>679324</commentid>
    <comment_count>6</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-07-26 07:43:44 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; This is needed to be able to parse dictionaries created by these kinds of constructs:
&gt; { servers: [ {uri:&quot;...&quot;, credential:&quot;..&quot;}, {uri:&quot;...&quot;, credential:&quot;..&quot;}, ... ]}

Specifically, where is it used in JavaScript? Would you write some code snippet you are assuming? I can give you more advice how to write the test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>679333</commentid>
    <comment_count>7</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-07-26 07:52:40 -0700</bug_when>
    <thetext>
http://dev.w3.org/2011/webrtc/editor/webrtc.html#rtcconfiguration-type

When one wants to create a RTCPeerConnection object one has to specify which TURN/STUN servers to use like this

pc = new RTCPeerConnection({servers:[{uri:&quot;...&quot;, credential:&quot;..&quot;},{uri:&quot;...&quot;,credential:&quot;..&quot;},...]});

and a simple real world example would be

pc = new RTCPeerConnection({servers:[{uri:&quot;stun.l.google.com&quot;}]});

The peer connection WebCore native object needs to parse this and send down the list of servers to the network stack for the ICE process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>679339</commentid>
    <comment_count>8</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-07-26 07:58:55 -0700</bug_when>
    <thetext>OK, then a good example is event-constructors.html: http://code.google.com/codesearch#OAMlx_jo-ck/src/third_party/WebKit/LayoutTests/fast/events/constructors/event-constructors.html&amp;type=cs

You can add your test to the directory that contains tests about RTCPeerConnection or something like that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>679341</commentid>
    <comment_count>9</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-07-26 08:00:40 -0700</bug_when>
    <thetext>Also please add the spec link to the ChangeLog. This one? http://dev.w3.org/2011/webrtc/editor/webrtc.html#rtcpeerconnection</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680363</commentid>
    <comment_count>10</comment_count>
      <attachid>154887</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-07-27 02:49:42 -0700</bug_when>
    <thetext>Created attachment 154887
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680377</commentid>
    <comment_count>11</comment_count>
      <attachid>154887</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-27 03:02:43 -0700</bug_when>
    <thetext>Comment on attachment 154887
Patch

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

&gt; Source/WebCore/Modules/mediastream/RTCPeerConnection.cpp:43
&gt; +// FYI: RTCIceServer and RTCConfigration are placed here temporarily.
&gt; +// Their final place is in Source/WebCore/platform/mediastream.

I probably would have phrased this as a FIXME comment.

&gt; Source/WebCore/Modules/mediastream/RTCPeerConnection.cpp:53
&gt; +    RTCIceServer(const String&amp; uri, const String&amp; password) : m_uri(uri), m_password(password) { }

This should be split onto a bunch of lines.

&gt; Source/WebCore/Modules/mediastream/RTCPeerConnection.cpp:145
&gt; +void RTCPeerConnection::stop()
&gt; +{
&gt; +}

Should we add a FIXME about what we should do here?

&gt; Source/WebCore/bindings/v8/Dictionary.cpp:441
&gt; +bool Dictionary::getArrayItem(const String&amp; key, size_t index, Dictionary&amp; value) const

This seems inefficient since we need to look up the key each time.  Is there a way to create some sort of temporary object that caches the v8::Local&lt;v8::Array&gt; handle?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680378</commentid>
    <comment_count>12</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-27 03:03:26 -0700</bug_when>
    <thetext>The RTCPeerConnection part of this patch looks fine.  My main concern is making the array support in dictionary efficient.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680412</commentid>
    <comment_count>13</comment_count>
      <attachid>154887</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-07-27 04:02:54 -0700</bug_when>
    <thetext>Comment on attachment 154887
Patch

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

Marking r- due to inefficient Dictionary APIs

&gt; Source/WebCore/Modules/mediastream/RTCPeerConnection.idl:33
&gt; +    // FIXME: The second argument to the constructor should be optional but the idl code generator doesn&apos;t support that yet.

Can&apos;t you use [Optional=DefaultIsUndefined]? (https://trac.webkit.org/wiki/WebKitIDL#Optional)

&gt;&gt; Source/WebCore/bindings/v8/Dictionary.cpp:441
&gt;&gt; +bool Dictionary::getArrayItem(const String&amp; key, size_t index, Dictionary&amp; value) const
&gt; 
&gt; This seems inefficient since we need to look up the key each time.  Is there a way to create some sort of temporary object that caches the v8::Local&lt;v8::Array&gt; handle?

Yes. A general solution would be to introduce v8/Array.{h,cpp} and js/Array.{h,cpp}. The Array class will provide Array::item(size_t index) and Array::length(). Then you can add Dictionary::get(const String&amp; key, Array&amp; array).

&gt; Source/WebCore/bindings/v8/Dictionary.cpp:455
&gt; +    if (!indexedValue-&gt;IsObject())

This check should be:

    if (!indexedValue-&gt;IsEmpty() || !indexedValue-&gt;IsObject())

&gt; Source/WebCore/bindings/v8/Dictionary.h:91
&gt; +    bool getArrayLength(const String&amp; key, size_t&amp; length) const;
&gt; +    bool getArrayItem(const String&amp; key, size_t index, Dictionary&amp; value) const;

Nit: WebKit omits obvious variable names in method declarations. &apos;key&apos; and &apos;value&apos; are not needed here.

&gt; LayoutTests/fast/mediastream/RTCPeerConnection.html:4
&gt; +&lt;link rel=&quot;stylesheet&quot; href=&quot;../js/resources/js-test-style.css&quot;&gt;

Nit: Why is it needed?

&gt; LayoutTests/fast/mediastream/RTCPeerConnection.html:9
&gt; +&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
&gt; +&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;

Nit: These two lines are not needed. They will be generated by js-test-pre.js.

&gt; LayoutTests/fast/mediastream/RTCPeerConnection.html:13
&gt; +shouldNotThrow(&quot;new webkitRTCPeerConnection(null, null);&quot;);

In addition to null, please add test cases for undefined, &apos;&apos; (an empty string), and a missing argument.

&gt; LayoutTests/fast/mediastream/RTCPeerConnection.html:25
&gt; +
&gt; +window.jsTestIsAsync = false;

Is it needed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680522</commentid>
    <comment_count>14</comment_count>
      <attachid>154887</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-07-27 06:14:37 -0700</bug_when>
    <thetext>Comment on attachment 154887
Patch

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

&gt;&gt; Source/WebCore/Modules/mediastream/RTCPeerConnection.cpp:43
&gt;&gt; +// Their final place is in Source/WebCore/platform/mediastream.
&gt; 
&gt; I probably would have phrased this as a FIXME comment.

Done.

&gt;&gt; Source/WebCore/Modules/mediastream/RTCPeerConnection.cpp:53
&gt;&gt; +    RTCIceServer(const String&amp; uri, const String&amp; password) : m_uri(uri), m_password(password) { }
&gt; 
&gt; This should be split onto a bunch of lines.

Done.

&gt;&gt; Source/WebCore/Modules/mediastream/RTCPeerConnection.idl:33
&gt;&gt; +    // FIXME: The second argument to the constructor should be optional but the idl code generator doesn&apos;t support that yet.
&gt; 
&gt; Can&apos;t you use [Optional=DefaultIsUndefined]? (https://trac.webkit.org/wiki/WebKitIDL#Optional)

That works just fine :)
Just optional doesn&apos;t work, but this is even better.

&gt;&gt;&gt; Source/WebCore/bindings/v8/Dictionary.cpp:441
&gt;&gt;&gt; +bool Dictionary::getArrayItem(const String&amp; key, size_t index, Dictionary&amp; value) const
&gt;&gt; 
&gt;&gt; This seems inefficient since we need to look up the key each time.  Is there a way to create some sort of temporary object that caches the v8::Local&lt;v8::Array&gt; handle?
&gt; 
&gt; Yes. A general solution would be to introduce v8/Array.{h,cpp} and js/Array.{h,cpp}. The Array class will provide Array::item(size_t index) and Array::length(). Then you can add Dictionary::get(const String&amp; key, Array&amp; array).

The name Array is already taken so I choose ArrayValue.

&gt;&gt; Source/WebCore/bindings/v8/Dictionary.cpp:455
&gt;&gt; +    if (!indexedValue-&gt;IsObject())
&gt; 
&gt; This check should be:
&gt; 
&gt;     if (!indexedValue-&gt;IsEmpty() || !indexedValue-&gt;IsObject())

Fixed, but not quite like you wrote. indexedValue doesn&apos;t have a IsEmpty().

&gt;&gt; LayoutTests/fast/mediastream/RTCPeerConnection.html:4
&gt;&gt; +&lt;link rel=&quot;stylesheet&quot; href=&quot;../js/resources/js-test-style.css&quot;&gt;
&gt; 
&gt; Nit: Why is it needed?

Dunno. Copy-n-paste...

&gt;&gt; LayoutTests/fast/mediastream/RTCPeerConnection.html:9
&gt;&gt; +&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
&gt; 
&gt; Nit: These two lines are not needed. They will be generated by js-test-pre.js.

Fixed.

&gt;&gt; LayoutTests/fast/mediastream/RTCPeerConnection.html:13
&gt;&gt; +shouldNotThrow(&quot;new webkitRTCPeerConnection(null, null);&quot;);
&gt; 
&gt; In addition to null, please add test cases for undefined, &apos;&apos; (an empty string), and a missing argument.

Done.

&gt;&gt; LayoutTests/fast/mediastream/RTCPeerConnection.html:25
&gt;&gt; +window.jsTestIsAsync = false;
&gt; 
&gt; Is it needed?

No, but I usually put it in for symmetry reasons.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680526</commentid>
    <comment_count>15</comment_count>
      <attachid>154924</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-07-27 06:17:33 -0700</bug_when>
    <thetext>Created attachment 154924
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680559</commentid>
    <comment_count>16</comment_count>
      <attachid>154924</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-07-27 06:41:54 -0700</bug_when>
    <thetext>Comment on attachment 154924
Patch

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

The approach looks great. I added a couple of minor comments.

&gt; Source/WebCore/Modules/mediastream/RTCPeerConnection.cpp:87
&gt; +    if (!ok || !iceServers.isArrayValue()) {

Is the !iceServers.isArrayValue() check needed?

&gt; Source/WebCore/Modules/mediastream/RTCPeerConnection.cpp:104
&gt; +        if (!ok || !iceServer.isObject()) {

Is the !iceServer.isObject() needed?

&gt; Source/WebCore/bindings/v8/ArrayValue.cpp:36
&gt; +ArrayValue::ArrayValue()
&gt; +{
&gt; +}

Nit: You can write this in the header file.

&gt; Source/WebCore/bindings/v8/ArrayValue.cpp:38
&gt; +ArrayValue::ArrayValue(const v8::Local&lt;v8::Value&gt;&amp; options)

Nit: You can write this in the header file.

&gt; Source/WebCore/bindings/v8/ArrayValue.cpp:39
&gt; +    : m_options(options)

m_options =&gt; m_array

&gt; Source/WebCore/bindings/v8/ArrayValue.cpp:43
&gt; +ArrayValue::~ArrayValue()

Nit: You can write this in the header file.

&gt; Source/WebCore/bindings/v8/ArrayValue.cpp:47
&gt; +ArrayValue&amp; ArrayValue::operator=(const ArrayValue&amp; optionsObject)

optionsObject =&gt; array

&gt; Source/WebCore/bindings/v8/ArrayValue.cpp:70
&gt; +    v8::Local&lt;v8::Array&gt; v8Array = v8::Local&lt;v8::Array&gt;::Cast(m_options);

How about storing v8Array instead of m_options to an ArrayValue object, so that we can avoid casting m_options every time?

&gt; Source/WebCore/bindings/v8/ArrayValue.cpp:84
&gt; +    v8::Local&lt;v8::Value&gt; indexedValue = v8Array-&gt;Get(v8::Uint32::New(index));

v8::Uint32::New(index) =&gt; v8UnsignedInteger(index)

&gt; Source/WebCore/bindings/v8/ArrayValue.cpp:85
&gt; +    if (WebCore::isUndefinedOrNull(indexedValue) || !indexedValue-&gt;IsObject())

WebCore::isUndefinedOrNull(indexedValue) =&gt; indexedValule.IsEmpty()  (Note: This is not indexedValule-&gt;IsEmpty() but indexedValule.IsEmpty().)

&gt; Source/WebCore/bindings/v8/ArrayValue.h:38
&gt; +    ArrayValue(const v8::Local&lt;v8::Value&gt;&amp; options);

Nit: &apos;options&apos; is not needed.

&gt; Source/WebCore/bindings/v8/ArrayValue.h:55
&gt; +    v8::Local&lt;v8::Value&gt; m_options;

m_options =&gt; m_array

&gt; LayoutTests/fast/mediastream/RTCPeerConnection.html:10
&gt; +shouldNotThrow(&quot;new webkitRTCPeerConnection(null, null);&quot;);

Let&apos;s add test cases for undefined and &apos;&apos; in the second argument.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680603</commentid>
    <comment_count>17</comment_count>
      <attachid>154924</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-07-27 07:15:18 -0700</bug_when>
    <thetext>Comment on attachment 154924
Patch

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

&gt;&gt; Source/WebCore/Modules/mediastream/RTCPeerConnection.cpp:87
&gt;&gt; +    if (!ok || !iceServers.isArrayValue()) {
&gt; 
&gt; Is the !iceServers.isArrayValue() check needed?

No, not anymore.

&gt;&gt; Source/WebCore/Modules/mediastream/RTCPeerConnection.cpp:104
&gt;&gt; +        if (!ok || !iceServer.isObject()) {
&gt; 
&gt; Is the !iceServer.isObject() needed?

No.

&gt;&gt; Source/WebCore/bindings/v8/ArrayValue.cpp:39
&gt;&gt; +    : m_options(options)
&gt; 
&gt; m_options =&gt; m_array

Done.

&gt;&gt; Source/WebCore/bindings/v8/ArrayValue.cpp:47
&gt;&gt; +ArrayValue&amp; ArrayValue::operator=(const ArrayValue&amp; optionsObject)
&gt; 
&gt; optionsObject =&gt; array

Done.

&gt;&gt; Source/WebCore/bindings/v8/ArrayValue.cpp:70
&gt;&gt; +    v8::Local&lt;v8::Array&gt; v8Array = v8::Local&lt;v8::Array&gt;::Cast(m_options);
&gt; 
&gt; How about storing v8Array instead of m_options to an ArrayValue object, so that we can avoid casting m_options every time?

Done.

&gt;&gt; Source/WebCore/bindings/v8/ArrayValue.cpp:84
&gt;&gt; +    v8::Local&lt;v8::Value&gt; indexedValue = v8Array-&gt;Get(v8::Uint32::New(index));
&gt; 
&gt; v8::Uint32::New(index) =&gt; v8UnsignedInteger(index)

Done.

&gt;&gt; Source/WebCore/bindings/v8/ArrayValue.cpp:85
&gt;&gt; +    if (WebCore::isUndefinedOrNull(indexedValue) || !indexedValue-&gt;IsObject())
&gt; 
&gt; WebCore::isUndefinedOrNull(indexedValue) =&gt; indexedValule.IsEmpty()  (Note: This is not indexedValule-&gt;IsEmpty() but indexedValule.IsEmpty().)

Doh. Thanks.

&gt;&gt; Source/WebCore/bindings/v8/ArrayValue.h:38
&gt;&gt; +    ArrayValue(const v8::Local&lt;v8::Value&gt;&amp; options);
&gt; 
&gt; Nit: &apos;options&apos; is not needed.

Fixed.

&gt;&gt; Source/WebCore/bindings/v8/ArrayValue.h:55
&gt;&gt; +    v8::Local&lt;v8::Value&gt; m_options;
&gt; 
&gt; m_options =&gt; m_array

Fixed.

&gt;&gt; LayoutTests/fast/mediastream/RTCPeerConnection.html:10
&gt;&gt; +shouldNotThrow(&quot;new webkitRTCPeerConnection(null, null);&quot;);
&gt; 
&gt; Let&apos;s add test cases for undefined and &apos;&apos; in the second argument.

Done. The second argument will get proper parsing on its own later on and get some proper tests at that stage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680607</commentid>
    <comment_count>18</comment_count>
      <attachid>154939</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-07-27 07:16:37 -0700</bug_when>
    <thetext>Created attachment 154939
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680609</commentid>
    <comment_count>19</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-07-27 07:17:46 -0700</bug_when>
    <thetext>I am now working on mimicking the V8 changes to JSC, but that will likely not be done today.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680617</commentid>
    <comment_count>20</comment_count>
      <attachid>154939</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-07-27 07:25:39 -0700</bug_when>
    <thetext>Comment on attachment 154939
Patch

Looks good. r+ for all the files in this patch.

In my understanding, you need to land the js/Dictionary.{h,cpp} at the same time (and you are going to do it tomorrow), right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680643</commentid>
    <comment_count>21</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-07-27 07:49:16 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; (From update of attachment 154939 [details])
&gt; Looks good. r+ for all the files in this patch.
&gt; 
&gt; In my understanding, you need to land the js/Dictionary.{h,cpp} at the same time (and you are going to do it tomorrow), right?

That&apos;s right. Unless JSC has the same changes the GTK port will not compile. And unless I can&apos;t finish this patch today I will do it on Monday.

Thanks for your review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680700</commentid>
    <comment_count>22</comment_count>
      <attachid>154939</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-07-27 08:43:45 -0700</bug_when>
    <thetext>Comment on attachment 154939
Patch

Sounds like a good plan! (Marking r- due to missing JSC support. We just don&apos;t want to show the patch in the review list.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681877</commentid>
    <comment_count>23</comment_count>
      <attachid>155259</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-07-30 04:48:15 -0700</bug_when>
    <thetext>Created attachment 155259
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681881</commentid>
    <comment_count>24</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-07-30 04:49:45 -0700</bug_when>
    <thetext>I have now added the JSC variant as well, no changes in previously reviewed code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681908</commentid>
    <comment_count>25</comment_count>
      <attachid>155259</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-07-30 05:29:56 -0700</bug_when>
    <thetext>Comment on attachment 155259
Patch

Attachment 155259 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13381755</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681923</commentid>
    <comment_count>26</comment_count>
      <attachid>155259</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-07-30 05:44:47 -0700</bug_when>
    <thetext>Comment on attachment 155259
Patch

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

&gt; Source/WebCore/bindings/js/ArrayValue.cpp:41
&gt; +ArrayValue::ArrayValue(JSC::ExecState* exec, JSC::JSValue value)

value =&gt; array (for clarification and consistency with V8)

&gt; Source/WebCore/bindings/js/ArrayValue.cpp:43
&gt; +    , m_value(value)

m_value =&gt; m_array (for clarification and consistency with V8)

&gt; Source/WebCore/bindings/js/ArrayValue.cpp:57
&gt; +    return !m_exec;

This should be something like this:

  if (m_value.IsEmpty())
    return true;
  return WebCore::isUndefinedOrNull(m_value);

&gt; Source/WebCore/bindings/js/ArrayValue.cpp:65
&gt; +    JSArray* array = asArray(m_value);

Let&apos;s store JSArray* to the ArrayValue object so that we can avoid calling asArray every time.

Also you need to check m_value-&gt;isArray() before calling asArray(). Given that you store JSArray* to the ArrayValue object, you can do the check in JSDictionary::convertValue() before calling the ArrayValue constructor.

&gt; Source/WebCore/bindings/js/ArrayValue.cpp:75
&gt; +    JSArray* array = asArray(m_value);

Ditto.

&gt; Source/WebCore/bindings/js/ArrayValue.h:29
&gt; +#include &lt;interpreter/CallFrame.h&gt;

Remove this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681929</commentid>
    <comment_count>27</comment_count>
      <attachid>155259</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-07-30 05:51:07 -0700</bug_when>
    <thetext>Comment on attachment 155259
Patch

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

&gt;&gt; Source/WebCore/bindings/js/ArrayValue.cpp:57
&gt;&gt; +    return !m_exec;
&gt; 
&gt; This should be something like this:
&gt; 
&gt;   if (m_value.IsEmpty())
&gt;     return true;
&gt;   return WebCore::isUndefinedOrNull(m_value);

No need, I have an assert in the constructor.

&gt;&gt; Source/WebCore/bindings/js/ArrayValue.cpp:65
&gt;&gt; +    JSArray* array = asArray(m_value);
&gt; 
&gt; Let&apos;s store JSArray* to the ArrayValue object so that we can avoid calling asArray every time.
&gt; 
&gt; Also you need to check m_value-&gt;isArray() before calling asArray(). Given that you store JSArray* to the ArrayValue object, you can do the check in JSDictionary::convertValue() before calling the ArrayValue constructor.

Can&apos;t do that unless we store both the JSValue object and the JSArray pointer, just storing the pointer is dangerous.
And again I do have an assert in the constructor that stops anything else than Array objects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681944</commentid>
    <comment_count>28</comment_count>
      <attachid>155259</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-07-30 06:08:53 -0700</bug_when>
    <thetext>Comment on attachment 155259
Patch

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

&gt; Source/WebCore/bindings/js/ArrayValue.cpp:45
&gt; +    ASSERT(m_exec &amp;&amp; !m_value.isUndefinedOrNull() &amp;&amp; isJSArray(m_value));

Let&apos;s write the ASSERTs in separate lines.

  ASSERT(m_exec);
  ASSERT(!m_value.isUndefinedOrNull());
  ASSERT(isJSArray(m_value));

BTW, do you intend m_value.isUndefinedOrNull() or WebCore::isUndefinedOrNull(m_value)? (I think the latter would be better.)

&gt;&gt;&gt; Source/WebCore/bindings/js/ArrayValue.cpp:57
&gt;&gt;&gt; +    return !m_exec;
&gt;&gt; 
&gt;&gt; This should be something like this:
&gt;&gt; 
&gt;&gt;   if (m_value.IsEmpty())
&gt;&gt;     return true;
&gt;&gt;   return WebCore::isUndefinedOrNull(m_value);
&gt; 
&gt; No need, I have an assert in the constructor.

You might be right but I would like to make the code clearer.

For example, what happens in the following code?

  ArrayValue v;
  v.length();

The code will work well but the reasoning is not straightforward. Given that the code here would not be performance sensitive, let&apos;s write a straightforward code (i.e. the same code as ArrayValue::isUndefinedOrNull() in v8/ArrayValue.cpp)

&gt;&gt;&gt; Source/WebCore/bindings/js/ArrayValue.cpp:65
&gt;&gt;&gt; +    JSArray* array = asArray(m_value);
&gt;&gt; 
&gt;&gt; Let&apos;s store JSArray* to the ArrayValue object so that we can avoid calling asArray every time.
&gt;&gt; 
&gt;&gt; Also you need to check m_value-&gt;isArray() before calling asArray(). Given that you store JSArray* to the ArrayValue object, you can do the check in JSDictionary::convertValue() before calling the ArrayValue constructor.
&gt; 
&gt; Can&apos;t do that unless we store both the JSValue object and the JSArray pointer, just storing the pointer is dangerous.
&gt; And again I do have an assert in the constructor that stops anything else than Array objects.

Makes sense. Thanks for the clarification. Then let&apos;s insert ASSERT(isJSArray(m_value)) into just before asArray().

&gt;&gt; Source/WebCore/bindings/js/ArrayValue.cpp:75
&gt;&gt; +    JSArray* array = asArray(m_value);
&gt; 
&gt; Ditto.

Let&apos;s insert ASSERT(isJSArray(m_value)) into just before asArray().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681985</commentid>
    <comment_count>29</comment_count>
      <attachid>155259</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-07-30 07:06:27 -0700</bug_when>
    <thetext>Comment on attachment 155259
Patch

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

&gt;&gt; Source/WebCore/bindings/js/ArrayValue.cpp:45
&gt;&gt; +    ASSERT(m_exec &amp;&amp; !m_value.isUndefinedOrNull() &amp;&amp; isJSArray(m_value));
&gt; 
&gt; Let&apos;s write the ASSERTs in separate lines.
&gt; 
&gt;   ASSERT(m_exec);
&gt;   ASSERT(!m_value.isUndefinedOrNull());
&gt;   ASSERT(isJSArray(m_value));
&gt; 
&gt; BTW, do you intend m_value.isUndefinedOrNull() or WebCore::isUndefinedOrNull(m_value)? (I think the latter would be better.)

The code in bindings/js/ uses value.isUndefinedOrNull().

&gt;&gt; Source/WebCore/bindings/js/ArrayValue.h:29
&gt;&gt; +#include &lt;interpreter/CallFrame.h&gt;
&gt; 
&gt; Remove this.

Not going to. This brings in the definition of JSC::ExecState.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>682033</commentid>
    <comment_count>30</comment_count>
      <attachid>155296</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-07-30 08:22:27 -0700</bug_when>
    <thetext>Created attachment 155296
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>682035</commentid>
    <comment_count>31</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-07-30 08:23:58 -0700</bug_when>
    <thetext>Fixed several build files and refactored js/ArrayValue to behave more like js/Dictionary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>682045</commentid>
    <comment_count>32</comment_count>
      <attachid>155296</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-07-30 08:42:49 -0700</bug_when>
    <thetext>Comment on attachment 155296
Patch

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

Looks good to me. Please confirm that build bots get green before landing.

&gt; Source/WebCore/bindings/js/ArrayValue.cpp:44
&gt; +    if (!value.isUndefinedOrNull() &amp;&amp; isJSArray(value))

Nit: To keep the implementation consistent between JSC and V8, I might want to move this check to JSDictionary::convertValue(). You can write ASSERT() here.

&gt; Source/WebCore/bindings/v8/ArrayValue.cpp:44
&gt; +    if (m_array.IsEmpty())
&gt; +        return true;
&gt; +    return WebCore::isUndefinedOrNull(m_array);

Nit: This could be:

    return m_array.IsEmpty() || WebCore::isUndefinedOrNull(m_array);

Let&apos;s keep the implementation consistent between JSC and V8.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>682054</commentid>
    <comment_count>33</comment_count>
      <attachid>155296</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-07-30 08:54:01 -0700</bug_when>
    <thetext>Comment on attachment 155296
Patch

Attachment 155296 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13381812</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>682820</commentid>
    <comment_count>34</comment_count>
      <attachid>155465</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-07-31 01:31:29 -0700</bug_when>
    <thetext>Created attachment 155465
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>682838</commentid>
    <comment_count>35</comment_count>
      <attachid>155465</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-07-31 02:00:11 -0700</bug_when>
    <thetext>Comment on attachment 155465
Patch

LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>682929</commentid>
    <comment_count>36</comment_count>
      <attachid>155465</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-31 04:59:54 -0700</bug_when>
    <thetext>Comment on attachment 155465
Patch

Clearing flags on attachment: 155465

Committed r124193: &lt;http://trac.webkit.org/changeset/124193&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>682930</commentid>
    <comment_count>37</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-31 05:00:02 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154647</attachid>
            <date>2012-07-26 07:09:37 -0700</date>
            <delta_ts>2012-07-27 02:49:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92380-20120726160925.patch</filename>
            <type>text/plain</type>
            <size>3380</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzNzMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTUyZGMyNzE4ZjA0MzFl
NTc3Y2M3M2U4YzMwM2Y5N2Y4ZDc1NTI1My4uNjRlN2E0NDZmZmFhNmFkODcyYTYwNTBjMDMyMjEw
OTBjZmViNDVhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEyLTA3LTI2ICBUb21t
eSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIEV4dGVuZCBEaWN0
aW9uYXJ5IHdpdGggc3VwcG9ydCBmb3IgYWNjZXNzaW5nIGFuIGFycmF5IG9mIERpY3Rpb25hcmll
cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkyMzgw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2luY2Ug
RGljdGlvbmFyaWVzIGNhbid0IGJlIGZ1bGx5IGNvcGllZCBhcm91bmQgYWRkaW5nCisgICAgICAg
IGdldChjb25zdCBTdHJpbmcmIG5hbWUsIFZlY3RvcjxEaWN0aW9uYXJ5PiYgcmVzdWx0KQorICAg
ICAgICBpc24ndCByZWFzaWJsZSBzbyBJIGhhdmUgYWRkZWQgdHdvIG5ldyBtZXRob2RzOiBnZXRB
cnJheUxlbmd0aCBhbmQgZ2V0QXJyYXlJdGVtLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09Q
UyEpLgorCisgICAgICAgICogYmluZGluZ3MvdjgvRGljdGlvbmFyeS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEaWN0aW9uYXJ5OjpnZXRBcnJheUxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OkRpY3Rpb25hcnk6OmdldEFycmF5SXRlbSk6CisgICAgICAgICog
YmluZGluZ3MvdjgvRGljdGlvbmFyeS5oOgorICAgICAgICAoRGljdGlvbmFyeSk6CisKIDIwMTIt
MDctMjYgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgogCiAgICAgICAgIDIlIG9mIGFs
bCBzYW1wbGVzIHJ1bm5pbmcgZ3JpZCBkZW1vIHNob3cgdXAgaW4gU3R5bGVSZXNvbHZlcjo6Y2Fu
U2hhcmVTdHlsZVdpdGhFbGVtZW50LCAyMCUgb2YgdGhvc2UgZHVlIHRvIGdldEF0dHJpYnV0ZSBp
bnN0ZWFkIG9mIGZhc3RHZXRBdHRyaWJ1dGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L0RpY3Rpb25hcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGlj
dGlvbmFyeS5jcHAKaW5kZXggN2Q2OTJlNzhlNDA3NTJjYmVlZmRlY2JhYTE4MDRkN2MxMjYxNGZj
OS4uODM5ZTU4MmQ2NzIyNDUzNTNhNGE2NDk3OGUzMDA0Nzg3YzgwMzlkNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGljdGlvbmFyeS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvRGljdGlvbmFyeS5jcHAKQEAgLTQyNCw2ICs0MjQsNDEgQEAgYm9v
bCBEaWN0aW9uYXJ5OjpnZXQoY29uc3QgU3RyaW5nJiBrZXksIERpY3Rpb25hcnkmIHZhbHVlKSBj
b25zdAogICAgIHJldHVybiB0cnVlOwogfQogCitib29sIERpY3Rpb25hcnk6OmdldEFycmF5TGVu
Z3RoKGNvbnN0IFN0cmluZyYga2V5LCBzaXplX3QmIGxlbmd0aCkgY29uc3QKK3sKKyAgICB2ODo6
TG9jYWw8djg6OlZhbHVlPiB2OFZhbHVlOworICAgIGlmICghZ2V0S2V5KGtleSwgdjhWYWx1ZSkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghdjhWYWx1ZS0+SXNBcnJheSgpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICB2ODo6TG9jYWw8djg6OkFycmF5PiB2OEFycmF5
ID0gdjg6OkxvY2FsPHY4OjpBcnJheT46OkNhc3QodjhWYWx1ZSk7CisgICAgbGVuZ3RoID0gdjhB
cnJheS0+TGVuZ3RoKCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgRGljdGlvbmFyeTo6
Z2V0QXJyYXlJdGVtKGNvbnN0IFN0cmluZyYga2V5LCBzaXplX3QgaW5kZXgsIERpY3Rpb25hcnkm
IHZhbHVlKSBjb25zdAoreworICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHY4VmFsdWU7CisgICAg
aWYgKCFnZXRLZXkoa2V5LCB2OFZhbHVlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
aWYgKCF2OFZhbHVlLT5Jc0FycmF5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHY4
OjpMb2NhbDx2ODo6QXJyYXk+IHY4QXJyYXkgPSB2ODo6TG9jYWw8djg6OkFycmF5Pjo6Q2FzdCh2
OFZhbHVlKTsKKyAgICBpZiAoaW5kZXggPj0gdjhBcnJheS0+TGVuZ3RoKCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IGluZGV4ZWRWYWx1ZSA9IHY4
QXJyYXktPkdldCh2ODo6VWludDMyOjpOZXcoaW5kZXgpKTsKKyAgICBpZiAoIWluZGV4ZWRWYWx1
ZS0+SXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgdmFsdWUgPSBEaWN0
aW9uYXJ5KGluZGV4ZWRWYWx1ZSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIGJvb2wgRGljdGlv
bmFyeTo6Z2V0KGNvbnN0IFN0cmluZyYga2V5LCBWZWN0b3I8U3RyaW5nPiYgdmFsdWUpIGNvbnN0
CiB7CiAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdjhWYWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RpY3Rpb25hcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L0RpY3Rpb25hcnkuaAppbmRleCBmMTUzZWE5YzgyOTg0ODA4MGYyZjVlNjg1YmNjNmE3
NzM0M2Y1NGFlLi44MTIyNjRjMTZiYzUxMzQ0YjFlZDEzZTA3ZTk1ZGM0NjI1NjViNTZjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9EaWN0aW9uYXJ5LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGljdGlvbmFyeS5oCkBAIC04Niw2ICs4NiwxMCBAQCBw
dWJsaWM6CiAgICAgYm9vbCBnZXQoY29uc3QgU3RyaW5nJiwgSGFzaFNldDxBdG9taWNTdHJpbmc+
JikgY29uc3Q7CiAgICAgYm9vbCBnZXQoY29uc3QgU3RyaW5nJiwgRGljdGlvbmFyeSYpIGNvbnN0
OwogICAgIGJvb2wgZ2V0KGNvbnN0IFN0cmluZyYsIFZlY3RvcjxTdHJpbmc+JikgY29uc3Q7CisK
KyAgICBib29sIGdldEFycmF5TGVuZ3RoKGNvbnN0IFN0cmluZyYga2V5LCBzaXplX3QmIGxlbmd0
aCkgY29uc3Q7CisgICAgYm9vbCBnZXRBcnJheUl0ZW0oY29uc3QgU3RyaW5nJiBrZXksIHNpemVf
dCBpbmRleCwgRGljdGlvbmFyeSYgdmFsdWUpIGNvbnN0OworCiAgICAgYm9vbCBnZXRPd25Qcm9w
ZXJ0aWVzQXNTdHJpbmdIYXNoTWFwKFdURjo6SGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mKSBjb25z
dDsKIAogICAgIGJvb2wgZ2V0V2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrKGNvbnN0IFN0cmluZyYs
IFN0cmluZyYpIGNvbnN0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154887</attachid>
            <date>2012-07-27 02:49:42 -0700</date>
            <delta_ts>2012-07-27 06:17:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92380-20120727114930.patch</filename>
            <type>text/plain</type>
            <size>24571</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzNzMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTUyZGMyNzE4ZjA0MzFl
NTc3Y2M3M2U4YzMwM2Y5N2Y4ZDc1NTI1My4uYmM0OTI1ZDZmYjRiNTk5MjhiMzRiODNkZWI0NTM0
M2UxOWZiYmY3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDEyLTA3LTI3ICBUb21t
eSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIEludHJvZHVjZSBh
IG1pbmltYWwgUlRDUGVlckNvbm5lY3Rpb24gdG9nZXRoZXIgd2l0aCBEaWN0aW9uYXJ5IGNoYW5n
ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkyMzgw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBpbnRyb2R1Y2VzIGEgc2hlbGwgUlRDUGVlckNvbm5lY3Rpb24gdG9nZXRoZXIgd2l0aCBu
ZWNjZWNhcnkgY2hhbmdlcyB0bworICAgICAgICBEaWN0aW9uYXJ5LgorCisgICAgICAgIFRoZSBX
M0Mgc3BlY2lmaWNhdGlvbiBjYW4gYmUgZm91bmQgaGVyZToKKyAgICAgICAgaHR0cDovL2Rldi53
My5vcmcvMjAxMS93ZWJydGMvZWRpdG9yL3dlYnJ0Yy5odG1sI3J0Y3BlZXJjb25uZWN0aW9uCisK
KyAgICAgICAgU2luY2UgRGljdGlvbmFyaWVzIGNhbid0IGJlIGZ1bGx5IGNvcGllZCBhcm91bmQg
YWRkaW5nCisgICAgICAgIGdldChjb25zdCBTdHJpbmcmIG5hbWUsIFZlY3RvcjxEaWN0aW9uYXJ5
PiYgcmVzdWx0KQorICAgICAgICBpc24ndCByZWFzaWJsZSBzbyBJIGhhdmUgYWRkZWQgdHdvIG5l
dyBtZXRob2RzOiBnZXRBcnJheUxlbmd0aCBhbmQgZ2V0QXJyYXlJdGVtLgorCisgICAgICAgIFRl
c3Q6IGZhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaHRtbAorCisgICAgICAgICog
TW9kdWxlcy9tZWRpYXN0cmVhbS9ET01XaW5kb3dNZWRpYVN0cmVhbS5pZGw6CisgICAgICAgICog
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChSVENJY2VTZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
UlRDSWNlU2VydmVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDSWNlU2VydmVyOjp+
UlRDSWNlU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0ljZVNlcnZlcjo6dXJpKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJUQ0ljZVNlcnZlcjo6cGFzc3dvcmQpOgorICAgICAgICAoV2ViQ29y
ZTo6UlRDSWNlU2VydmVyOjpSVENJY2VTZXJ2ZXIpOgorICAgICAgICAoUlRDQ29uZmlndXJhdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpSVENDb25maWd1cmF0aW9uOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UlRDQ29uZmlndXJhdGlvbjo6flJUQ0NvbmZpZ3VyYXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6UlRDQ29uZmlndXJhdGlvbjo6YXBwZW5kU2VydmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlJUQ0NvbmZpZ3VyYXRpb246Om51bWJlck9mU2VydmVycyk6CisgICAgICAgIChXZWJD
b3JlOjpSVENDb25maWd1cmF0aW9uOjpzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UlRDQ29u
ZmlndXJhdGlvbjo6UlRDQ29uZmlndXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVy
Q29ubmVjdGlvbjo6cGFyc2VDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1Bl
ZXJDb25uZWN0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rp
b246OlJUQ1BlZXJDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0
aW9uOjp+UlRDUGVlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNvbm5l
Y3Rpb246OmludGVyZmFjZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rp
b246OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNv
bm5lY3Rpb246OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb246OmV2
ZW50VGFyZ2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6ZW5z
dXJlRXZlbnRUYXJnZXREYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1Bl
ZXJDb25uZWN0aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChSVENQ
ZWVyQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6cmVm
RXZlbnRUYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb246OmRlcmVm
RXZlbnRUYXJnZXQpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5l
Y3Rpb24uaWRsOiBBZGRlZC4KKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogYmlu
ZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmg6CisgICAgICAgIChXZWJDb3Jl
OjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRSVENQZWVyQ29ubmVjdGlvbkVuYWJsZWQp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0RpY3Rpb25hcnkuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RGljdGlvbmFyeTo6Z2V0QXJyYXlMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpEaWN0aW9uYXJ5OjpnZXRBcnJheUl0ZW0pOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L0RpY3Rpb25hcnkuaDoKKyAgICAgICAgKERpY3Rpb25hcnkpOgorICAgICAgICAqIGRv
bS9FdmVudFRhcmdldEZhY3RvcnkuaW46CisKIDIwMTItMDctMjYgIEVyaWMgU2VpZGVsICA8ZXJp
Y0B3ZWJraXQub3JnPgogCiAgICAgICAgIDIlIG9mIGFsbCBzYW1wbGVzIHJ1bm5pbmcgZ3JpZCBk
ZW1vIHNob3cgdXAgaW4gU3R5bGVSZXNvbHZlcjo6Y2FuU2hhcmVTdHlsZVdpdGhFbGVtZW50LCAy
MCUgb2YgdGhvc2UgZHVlIHRvIGdldEF0dHJpYnV0ZSBpbnN0ZWFkIG9mIGZhc3RHZXRBdHRyaWJ1
dGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vRE9NV2lu
ZG93TWVkaWFTdHJlYW0uaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9E
T01XaW5kb3dNZWRpYVN0cmVhbS5pZGwKaW5kZXggNzQyYTYyNDYzMmU2OWMwNmYwMmYwMjUyNDEy
YmJhMjczYjJhZjVhNS4uZWE5NDZhNDk2NmJlOGJiYmY0OGEzYWMwYTUyNmViNTQwNzY1MWQ0ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9ET01XaW5kb3dN
ZWRpYVN0cmVhbS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9E
T01XaW5kb3dNZWRpYVN0cmVhbS5pZGwKQEAgLTMyLDYgKzMyLDcgQEAgbW9kdWxlIHdpbmRvdyB7
CiAgICAgXSBET01XaW5kb3dNZWRpYVN0cmVhbSB7CiAgICAgICAgIGF0dHJpYnV0ZSBbVjhFbmFi
bGVkQXRSdW50aW1lXSBNZWRpYVN0cmVhbUNvbnN0cnVjdG9yIHdlYmtpdE1lZGlhU3RyZWFtOwog
ICAgICAgICBhdHRyaWJ1dGUgW1Y4RW5hYmxlZEF0UnVudGltZV0gUGVlckNvbm5lY3Rpb24wMENv
bnN0cnVjdG9yIHdlYmtpdFBlZXJDb25uZWN0aW9uMDA7CisgICAgICAgIGF0dHJpYnV0ZSBbVjhF
bmFibGVkQXRSdW50aW1lXSBSVENQZWVyQ29ubmVjdGlvbkNvbnN0cnVjdG9yIHdlYmtpdFJUQ1Bl
ZXJDb25uZWN0aW9uOwogICAgICAgICBhdHRyaWJ1dGUgU2Vzc2lvbkRlc2NyaXB0aW9uQ29uc3Ry
dWN0b3IgU2Vzc2lvbkRlc2NyaXB0aW9uOwogICAgICAgICBhdHRyaWJ1dGUgSWNlQ2FuZGlkYXRl
Q29uc3RydWN0b3IgSWNlQ2FuZGlkYXRlOwogICAgICAgICBhdHRyaWJ1dGUgTWVkaWFTdHJlYW1F
dmVudENvbnN0cnVjdG9yIE1lZGlhU3RyZWFtRXZlbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmZmZTdhYTVmNGE4NzBhMWI3MTlhOTcxYmYxNmM3OWNiYTg5MGViNmEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0
aW9uLmNwcApAQCAtMCwwICsxLDE1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRy
aWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKwor
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJSVENQZWVyQ29ubmVjdGlvbi5o
IgorCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBGWUk6IFJUQ0ljZVNlcnZl
ciBhbmQgUlRDQ29uZmlncmF0aW9uIGFyZSBwbGFjZWQgaGVyZSB0ZW1wb3JhcmlseS4KKy8vIFRo
ZWlyIGZpbmFsIHBsYWNlIGlzIGluIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
LgorY2xhc3MgUlRDSWNlU2VydmVyIDogcHVibGljIFJlZkNvdW50ZWQ8UlRDSWNlU2VydmVyPiB7
CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8UlRDSWNlU2VydmVyPiBjcmVhdGUoY29u
c3QgU3RyaW5nJiB1cmksIGNvbnN0IFN0cmluZyYgcGFzc3dvcmQpIHsgcmV0dXJuIGFkb3B0UmVm
KG5ldyBSVENJY2VTZXJ2ZXIodXJpLCBwYXNzd29yZCkpOyB9CisgICAgdmlydHVhbCB+UlRDSWNl
U2VydmVyKCkgeyB9CisKKyAgICBjb25zdCBTdHJpbmcmIHVyaSgpIHsgcmV0dXJuIG1fdXJpOyB9
CisgICAgY29uc3QgU3RyaW5nJiBwYXNzd29yZCgpIHsgcmV0dXJuIG1fcGFzc3dvcmQ7IH0KKwor
cHJpdmF0ZToKKyAgICBSVENJY2VTZXJ2ZXIoY29uc3QgU3RyaW5nJiB1cmksIGNvbnN0IFN0cmlu
ZyYgcGFzc3dvcmQpIDogbV91cmkodXJpKSwgbV9wYXNzd29yZChwYXNzd29yZCkgeyB9CisKKyAg
ICBTdHJpbmcgbV91cmk7CisgICAgU3RyaW5nIG1fcGFzc3dvcmQ7Cit9OworCitjbGFzcyBSVEND
b25maWd1cmF0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8UlRDQ29uZmlndXJhdGlvbj4geworcHVi
bGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJUQ0NvbmZpZ3VyYXRpb24+IGNyZWF0ZSgpIHsg
cmV0dXJuIGFkb3B0UmVmKG5ldyBSVENDb25maWd1cmF0aW9uKCkpOyB9CisgICAgdmlydHVhbCB+
UlRDQ29uZmlndXJhdGlvbigpIHsgfQorCisgICAgdm9pZCBhcHBlbmRTZXJ2ZXIoUGFzc1JlZlB0
cjxSVENJY2VTZXJ2ZXI+IHNlcnZlcikgeyBtX3NlcnZlcnMuYXBwZW5kKHNlcnZlcik7IH0KKyAg
ICBzaXplX3QgbnVtYmVyT2ZTZXJ2ZXJzKCkgeyByZXR1cm4gbV9zZXJ2ZXJzLnNpemUoKTsgfQor
ICAgIFJUQ0ljZVNlcnZlciogc2VydmVyKHNpemVfdCBpbmRleCkgeyByZXR1cm4gbV9zZXJ2ZXJz
W2luZGV4XS5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIFJUQ0NvbmZpZ3VyYXRpb24oKSB7IH0K
KworICAgIFZlY3RvcjxSZWZQdHI8UlRDSWNlU2VydmVyPiA+IG1fc2VydmVyczsKK307CisKK1Bh
c3NSZWZQdHI8UlRDQ29uZmlndXJhdGlvbj4gUlRDUGVlckNvbm5lY3Rpb246OnBhcnNlQ29uZmln
dXJhdGlvbihjb25zdCBEaWN0aW9uYXJ5JiBjb25maWd1cmF0aW9uLCBFeGNlcHRpb25Db2RlJiBl
YykKK3sKKyAgICBpZiAoY29uZmlndXJhdGlvbi5pc1VuZGVmaW5lZE9yTnVsbCgpKQorICAgICAg
ICByZXR1cm4gMDsKKworICAgIHNpemVfdCBudW1iZXJPZlNlcnZlcnM7CisgICAgYm9vbCBvayA9
IGNvbmZpZ3VyYXRpb24uZ2V0QXJyYXlMZW5ndGgoImljZVNlcnZlcnMiLCBudW1iZXJPZlNlcnZl
cnMpOworICAgIGlmICghb2spIHsKKyAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKKyAg
ICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgUmVmUHRyPFJUQ0NvbmZpZ3VyYXRpb24+IHJ0
Y0NvbmZpZ3VyYXRpb24gPSBSVENDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKKworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbnVtYmVyT2ZTZXJ2ZXJzOyArK2kpIHsKKyAgICAgICAgRGljdGlv
bmFyeSBzZXJ2ZXJDb25maWd1cmF0aW9uOworICAgICAgICBvayA9IGNvbmZpZ3VyYXRpb24uZ2V0
QXJyYXlJdGVtKCJpY2VTZXJ2ZXJzIiwgaSwgc2VydmVyQ29uZmlndXJhdGlvbik7CisgICAgICAg
IGlmICghb2spIHsKKyAgICAgICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CisgICAgICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorCisgICAgICAgIFN0cmluZyB1cmksIHBhc3N3b3Jk
OworICAgICAgICBvayA9IHNlcnZlckNvbmZpZ3VyYXRpb24uZ2V0KCJ1cmkiLCB1cmkpOworICAg
ICAgICBpZiAoIW9rKSB7CisgICAgICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOworICAg
ICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgc2VydmVyQ29uZmlndXJhdGlv
bi5nZXQoImNyZWRlbnRpYWwiLCBwYXNzd29yZCk7CisKKyAgICAgICAgcnRjQ29uZmlndXJhdGlv
bi0+YXBwZW5kU2VydmVyKFJUQ0ljZVNlcnZlcjo6Y3JlYXRlKHVyaSwgcGFzc3dvcmQpKTsKKyAg
ICB9CisKKyAgICByZXR1cm4gcnRjQ29uZmlndXJhdGlvbi5yZWxlYXNlKCk7Cit9CisKK1Bhc3NS
ZWZQdHI8UlRDUGVlckNvbm5lY3Rpb24+IFJUQ1BlZXJDb25uZWN0aW9uOjpjcmVhdGUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgRGljdGlvbmFyeSYgcnRjQ29uZmlndXJh
dGlvbiwgY29uc3QgRGljdGlvbmFyeSYsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIFJlZlB0
cjxSVENDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gcGFyc2VDb25maWd1cmF0aW9uKHJ0
Y0NvbmZpZ3VyYXRpb24sIGVjKTsKKyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybiAwOworCisg
ICAgUmVmUHRyPFJUQ1BlZXJDb25uZWN0aW9uPiBwZWVyQ29ubmVjdGlvbiA9IGFkb3B0UmVmKG5l
dyBSVENQZWVyQ29ubmVjdGlvbihjb250ZXh0LCBjb25maWd1cmF0aW9uLnJlbGVhc2UoKSwgZWMp
KTsKKyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybiAwOworCisgICAgcGVlckNvbm5lY3Rpb24t
PnN1c3BlbmRJZk5lZWRlZCgpOworICAgIHJldHVybiBwZWVyQ29ubmVjdGlvbi5yZWxlYXNlKCk7
Cit9CisKK1JUQ1BlZXJDb25uZWN0aW9uOjpSVENQZWVyQ29ubmVjdGlvbihTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPFJUQ0NvbmZpZ3VyYXRpb24+LCBFeGNlcHRp
b25Db2RlJiBlYykKKyAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0LCB0aGlzKQoreworfQor
CitSVENQZWVyQ29ubmVjdGlvbjo6flJUQ1BlZXJDb25uZWN0aW9uKCkKK3sKK30KKworY29uc3Qg
QXRvbWljU3RyaW5nJiBSVENQZWVyQ29ubmVjdGlvbjo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JSVENQZWVyQ29ubmVjdGlvbjsK
K30KKworU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogUlRDUGVlckNvbm5lY3Rpb246OnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSBjb25zdAoreworICAgIHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKK30KKwordm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6c3Rv
cCgpCit7Cit9CisKK0V2ZW50VGFyZ2V0RGF0YSogUlRDUGVlckNvbm5lY3Rpb246OmV2ZW50VGFy
Z2V0RGF0YSgpCit7CisgICAgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsKK30KKworRXZlbnRU
YXJnZXREYXRhKiBSVENQZWVyQ29ubmVjdGlvbjo6ZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkKK3sK
KyAgICByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmE3ZjI4ZDE1MDBjMzAxZTA5YWEzYTBiMTA5MDgzYzM0NzFiYTEwZDQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0
aW9uLmgKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1
dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUlRDUGVlckNvbm5lY3Rpb25f
aAorI2RlZmluZSBSVENQZWVyQ29ubmVjdGlvbl9oCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQorCisjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRGljdGlvbmFyeS5o
IgorI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQmFzZS5oIgor
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNz
IFJUQ0NvbmZpZ3VyYXRpb247CisKK2NsYXNzIFJUQ1BlZXJDb25uZWN0aW9uIDogcHVibGljIFJl
ZkNvdW50ZWQ8UlRDUGVlckNvbm5lY3Rpb24+LCBwdWJsaWMgRXZlbnRUYXJnZXQsIHB1YmxpYyBB
Y3RpdmVET01PYmplY3QgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJUQ1BlZXJD
b25uZWN0aW9uPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IERpY3Rpb25h
cnkmIHJ0Y0NvbmZpZ3VyYXRpb24sIGNvbnN0IERpY3Rpb25hcnkmIG1lZGlhQ29uc3RyYWludHMs
IEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB+UlRDUGVlckNvbm5lY3Rpb24oKTsKKworICAgIC8vIEV2
ZW50VGFyZ2V0CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUo
KSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBPVkVSUklERTsKKworICAgIC8vIEFjdGl2ZURP
TU9iamVjdAorICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgT1ZFUlJJREU7CisKKyAgICB1c2luZyBS
ZWZDb3VudGVkPFJUQ1BlZXJDb25uZWN0aW9uPjo6cmVmOworICAgIHVzaW5nIFJlZkNvdW50ZWQ8
UlRDUGVlckNvbm5lY3Rpb24+OjpkZXJlZjsKKworcHJpdmF0ZToKKyAgICBSVENQZWVyQ29ubmVj
dGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxSVENDb25maWd1cmF0aW9u
PiwgRXhjZXB0aW9uQ29kZSYpOworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8UlRDQ29uZmlndXJh
dGlvbj4gcGFyc2VDb25maWd1cmF0aW9uKGNvbnN0IERpY3Rpb25hcnkmIGNvbmZpZ3VyYXRpb24s
IEV4Y2VwdGlvbkNvZGUmKTsKKworICAgIC8vIEV2ZW50VGFyZ2V0IGltcGxlbWVudGF0aW9uLgor
ICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBldmVudFRhcmdldERhdGEoKTsKKyAgICB2aXJ0
dWFsIEV2ZW50VGFyZ2V0RGF0YSogZW5zdXJlRXZlbnRUYXJnZXREYXRhKCk7CisgICAgdmlydHVh
bCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgeyByZWYoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkZXJl
ZkV2ZW50VGFyZ2V0KCkgeyBkZXJlZigpOyB9CisgICAgRXZlbnRUYXJnZXREYXRhIG1fZXZlbnRU
YXJnZXREYXRhOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKE1FRElBX1NUUkVBTSkKKworI2VuZGlmIC8vIFJUQ1BlZXJDb25uZWN0aW9uX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rp
b24uaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVj
dGlvbi5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNWVhNTk2YTQ4ZDk3NjhkZTFhMzNjYTZkOGQ5NDVjM2QyM2Rh
YTczZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDUGVlckNvbm5lY3Rpb24uaWRsCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogICAgaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJp
YnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cyBjb250cmlidXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcworICogICAgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1bGUg
bWVkaWFzdHJlYW0geworCisgICAgLy8gRklYTUU6IFRoZSBzZWNvbmQgYXJndW1lbnQgdG8gdGhl
IGNvbnN0cnVjdG9yIHNob3VsZCBiZSBvcHRpb25hbCBidXQgdGhlIGlkbCBjb2RlIGdlbmVyYXRv
ciBkb2Vzbid0IHN1cHBvcnQgdGhhdCB5ZXQuCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29u
ZGl0aW9uYWw9TUVESUFfU1RSRUFNLAorICAgICAgICBBY3RpdmVET01PYmplY3QsCisgICAgICAg
IENvbnN0cnVjdG9yKGluIERpY3Rpb25hcnkgcnRjSUNFU2VydmVycywgaW4gRGljdGlvbmFyeSBt
ZWRpYUNvbnN0cmFpbnRzKSwKKyAgICAgICAgQ29uc3RydWN0b3JSYWlzZXNFeGNlcHRpb24sCisg
ICAgICAgIENhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCisgICAgICAgIEV2ZW50VGFy
Z2V0CisgICAgXSBSVENQZWVyQ29ubmVjdGlvbiB7CisgICAgICAgIC8vIEV2ZW50VGFyZ2V0IGlu
dGVyZmFjZQorICAgICAgICB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBFdmVudExpc3RlbmVyIGxpc3RlbmVy
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsXSBib29sZWFuIHVz
ZUNhcHR1cmUpOworICAgICAgICB2b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5n
IHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBFdmVudExpc3RlbmVy
IGxpc3RlbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFs
XSBib29sZWFuIHVzZUNhcHR1cmUpOworICAgICAgICBib29sZWFuIGRpc3BhdGNoRXZlbnQoaW4g
RXZlbnQgZXZlbnQpCisgICAgICAgICAgICByYWlzZXMoRXZlbnRFeGNlcHRpb24pOworICAgIH07
CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA3NWU1NDFiNzhiMzJiZDRhZjc1OGFjMDE0ZjIyYjgw
MDljZDVkNzRhLi4wMTU2OTc0NTA5MTRjN2FmYjJiOWEwZGU2ZWQ0YmU5Mzc1YjM2ZDBkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCkBAIC04NDAsNiArODQwLDcgQEAKICAgICAgICAgICAgICdNb2R1bGVzL21l
ZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2suaWRsJywKICAgICAgICAg
ICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFj
ay5pZGwnLAogICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb24w
MC5pZGwnLAorICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rp
b24uaWRsJywKICAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL1Nlc3Npb25EZXNjcmlw
dGlvbi5pZGwnLAogICAgICAgICAgICAgJ01vZHVsZXMvbm90aWZpY2F0aW9ucy9ET01XaW5kb3dO
b3RpZmljYXRpb25zLmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9ub3RpZmljYXRpb25zL05v
dGlmaWNhdGlvbi5pZGwnLApAQCAtMTU2Niw2ICsxNTY3LDggQEAKICAgICAgICAgICAgICdNb2R1
bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjay5oJywKICAg
ICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uMDAuY3BwJywKICAg
ICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uMDAuaCcsCisgICAg
ICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAnLAorICAg
ICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaCcsCiAgICAg
ICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9TZXNzaW9uRGVzY3JpcHRpb24uY3BwJywKICAg
ICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL1Nlc3Npb25EZXNjcmlwdGlvbi5oJywKICAg
ICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNsaWVudC5oJywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0
dXJlcy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZl
YXR1cmVzLmgKaW5kZXggNDAyMjAyNGY0MzAyMjI3OTVmMDI4MWZjZGI3NTZmNDQ0NGU3ZjA5Zi4u
ZDZhOTNhN2FkMDQzODUzNDc5MTc5ZjE1N2IwM2Y2ZWUzMjFkNjIwNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVz
LmgKQEAgLTE4OCw2ICsxODgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgcGVlckNvbm5l
Y3Rpb25FbmFibGVkKCkgeyByZXR1cm4gaXNNZWRpYVN0cmVhbUVuYWJsZWQgJiYgaXNQZWVyQ29u
bmVjdGlvbkVuYWJsZWQ7IH0KICAgICBzdGF0aWMgdm9pZCBzZXRQZWVyQ29ubmVjdGlvbkVuYWJs
ZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNQZWVyQ29ubmVjdGlvbkVuYWJsZWQgPSBpc0VuYWJsZWQ7
IH0KICAgICBzdGF0aWMgYm9vbCB3ZWJraXRQZWVyQ29ubmVjdGlvbjAwRW5hYmxlZCgpIHsgcmV0
dXJuIHBlZXJDb25uZWN0aW9uRW5hYmxlZCgpOyB9CisgICAgc3RhdGljIGJvb2wgd2Via2l0UlRD
UGVlckNvbm5lY3Rpb25FbmFibGVkKCkgeyByZXR1cm4gcGVlckNvbm5lY3Rpb25FbmFibGVkKCk7
IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKEdBTUVQQUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9EaWN0aW9uYXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L0RpY3Rpb25hcnkuY3BwCmluZGV4IDdkNjkyZTc4ZTQwNzUyY2JlZWZkZWNiYWExODA0ZDdj
MTI2MTRmYzkuLjgzOWU1ODJkNjcyMjQ1MzUzYTRhNjQ5NzhlMzAwNDc4N2M4MDM5ZDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RpY3Rpb25hcnkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RpY3Rpb25hcnkuY3BwCkBAIC00MjQsNiArNDI0LDQx
IEBAIGJvb2wgRGljdGlvbmFyeTo6Z2V0KGNvbnN0IFN0cmluZyYga2V5LCBEaWN0aW9uYXJ5JiB2
YWx1ZSkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBEaWN0aW9uYXJ5OjpnZXRB
cnJheUxlbmd0aChjb25zdCBTdHJpbmcmIGtleSwgc2l6ZV90JiBsZW5ndGgpIGNvbnN0Cit7Cisg
ICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdjhWYWx1ZTsKKyAgICBpZiAoIWdldEtleShrZXksIHY4
VmFsdWUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIXY4VmFsdWUtPklzQXJy
YXkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgdjg6OkxvY2FsPHY4OjpBcnJheT4g
djhBcnJheSA9IHY4OjpMb2NhbDx2ODo6QXJyYXk+OjpDYXN0KHY4VmFsdWUpOworICAgIGxlbmd0
aCA9IHY4QXJyYXktPkxlbmd0aCgpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIERpY3Rp
b25hcnk6OmdldEFycmF5SXRlbShjb25zdCBTdHJpbmcmIGtleSwgc2l6ZV90IGluZGV4LCBEaWN0
aW9uYXJ5JiB2YWx1ZSkgY29uc3QKK3sKKyAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2OFZhbHVl
OworICAgIGlmICghZ2V0S2V5KGtleSwgdjhWYWx1ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGlmICghdjhWYWx1ZS0+SXNBcnJheSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICB2ODo6TG9jYWw8djg6OkFycmF5PiB2OEFycmF5ID0gdjg6OkxvY2FsPHY4OjpBcnJheT46
OkNhc3QodjhWYWx1ZSk7CisgICAgaWYgKGluZGV4ID49IHY4QXJyYXktPkxlbmd0aCgpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBpbmRleGVkVmFs
dWUgPSB2OEFycmF5LT5HZXQodjg6OlVpbnQzMjo6TmV3KGluZGV4KSk7CisgICAgaWYgKCFpbmRl
eGVkVmFsdWUtPklzT2JqZWN0KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHZhbHVl
ID0gRGljdGlvbmFyeShpbmRleGVkVmFsdWUpOworICAgIHJldHVybiB0cnVlOworfQorCiBib29s
IERpY3Rpb25hcnk6OmdldChjb25zdCBTdHJpbmcmIGtleSwgVmVjdG9yPFN0cmluZz4mIHZhbHVl
KSBjb25zdAogewogICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHY4VmFsdWU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9EaWN0aW9uYXJ5LmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9EaWN0aW9uYXJ5LmgKaW5kZXggZjE1M2VhOWM4Mjk4NDgwODBmMmY1ZTY4
NWJjYzZhNzczNDNmNTRhZS4uODEyMjY0YzE2YmM1MTM0NGIxZWQxM2UwN2U5NWRjNDYyNTY1YjU2
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGljdGlvbmFyeS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RpY3Rpb25hcnkuaApAQCAtODYsNiArODYs
MTAgQEAgcHVibGljOgogICAgIGJvb2wgZ2V0KGNvbnN0IFN0cmluZyYsIEhhc2hTZXQ8QXRvbWlj
U3RyaW5nPiYpIGNvbnN0OwogICAgIGJvb2wgZ2V0KGNvbnN0IFN0cmluZyYsIERpY3Rpb25hcnkm
KSBjb25zdDsKICAgICBib29sIGdldChjb25zdCBTdHJpbmcmLCBWZWN0b3I8U3RyaW5nPiYpIGNv
bnN0OworCisgICAgYm9vbCBnZXRBcnJheUxlbmd0aChjb25zdCBTdHJpbmcmIGtleSwgc2l6ZV90
JiBsZW5ndGgpIGNvbnN0OworICAgIGJvb2wgZ2V0QXJyYXlJdGVtKGNvbnN0IFN0cmluZyYga2V5
LCBzaXplX3QgaW5kZXgsIERpY3Rpb25hcnkmIHZhbHVlKSBjb25zdDsKKwogICAgIGJvb2wgZ2V0
T3duUHJvcGVydGllc0FzU3RyaW5nSGFzaE1hcChXVEY6Okhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+
JikgY29uc3Q7CiAKICAgICBib29sIGdldFdpdGhVbmRlZmluZWRPck51bGxDaGVjayhjb25zdCBT
dHJpbmcmLCBTdHJpbmcmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudFRhcmdldEZhY3RvcnkuaW4gYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0
b3J5LmluCmluZGV4IGZmNjBhYWQ0ZGI1OWY5Y2ZlN2Y5OGExYWRjOTVmN2Q5MTFjMGFjMzIuLjQ0
ZThkOGU4NWFmNTBjYjQ1YTA0YTgyNzBjMjRkMDU1MzQwYzMyMDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgpAQCAtMjQsNiArMjQsNyBAQCBOb2RlCiBOb3RpZmlj
YXRpb24gY29uZGl0aW9uYWw9Tk9USUZJQ0FUSU9OU3xMRUdBQ1lfTk9USUZJQ0FUSU9OUwogUGVl
ckNvbm5lY3Rpb24wMCBjb25kaXRpb25hbD1NRURJQV9TVFJFQU0KIFBlcmZvcm1hbmNlIGNvbmRp
dGlvbmFsPVdFQl9USU1JTkcKK1JUQ1BlZXJDb25uZWN0aW9uIGNvbmRpdGlvbmFsPU1FRElBX1NU
UkVBTQogU2hhcmVkV29ya2VyIGNvbmRpdGlvbmFsPVNIQVJFRF9XT1JLRVJTCiBTaGFyZWRXb3Jr
ZXJDb250ZXh0IGNvbmRpdGlvbmFsPVNIQVJFRF9XT1JLRVJTCiBTb3VyY2VCdWZmZXJMaXN0IGNv
bmRpdGlvbmFsPU1FRElBX1NPVVJDRQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDQwY2Q1MjBjMDQxOWRhNDFlMmZhYzIwMDZm
OGJlYzkxYzgwOTY4Y2QuLjFmMzhjODMwMDZkM2E0MGIzNmEyOWNmZmZjMGFjYWM3NzU1NzgwN2Yg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMi0wNy0yNyAgVG9tbXkgV2lkZW5mbHljaHQgIDx0
b21teXdAZ29vZ2xlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2UgYSBtaW5pbWFsIFJUQ1BlZXJD
b25uZWN0aW9uIHRvZ2V0aGVyIHdpdGggRGljdGlvbmFyeSBjaGFuZ2VzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MjM4MAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9SVENQ
ZWVyQ29ubmVjdGlvbi5odG1sOiBBZGRlZC4KKwogMjAxMi0wNy0yNiAgTWlraGFpbCBQb3pkbnlh
a292ICA8bWlraGFpbC5wb3pkbnlha292QGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXSBHYXJk
ZW5pbmcgYWZ0ZXIgcjEyMzYzNApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0
cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L21l
ZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZWE3
NTEwM2I4Nzg4ZjFlOTFiMzVkOGVhNzZiYzcyZTJiMDVmNmFlCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxOSBAQAorVGVzdHMgdGhlIFJUQ1BlZXJDb25uZWN0aW9uIGNvbnN0cnVj
dG9yLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBuZXcgd2Via2l0UlRD
UGVlckNvbm5lY3Rpb24obnVsbCwgbnVsbCk7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFT
UyBuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24oe2ljZVNlcnZlcnM6W119LCBudWxsKTsgZGlk
IG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIG5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbih7
aWNlU2VydmVyczpbe3VyaTonZm9vJ31dfSwgbnVsbCk7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9u
LgorUEFTUyBuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24oe2ljZVNlcnZlcnM6W3t1cmk6J2Zv
bycsIGNyZWRlbnRpYWw6J3gnfV19LCBudWxsKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQ
QVNTIG5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbih7aWNlU2VydmVyczpbe3VyaTonZm9vJywg
Y3JlZGVudGlhbDoneCd9LHt1cmk6J2Jhcid9XX0sIG51bGwpOyBkaWQgbm90IHRocm93IGV4Y2Vw
dGlvbi4KK1BBU1MgbmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKHtmb29TZXJ2ZXJzOltdfSwg
bnVsbCk7IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNl
cHRpb24gMTcuCitQQVNTIG5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbih7aWNlU2VydmVyczp0
cnVlfSwgbnVsbCk7IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERP
TSBFeGNlcHRpb24gMTcuCitQQVNTIG5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbih7aWNlU2Vy
dmVyczpbMSwgMiwgM119LCBudWxsKTsgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01B
VENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KK1BBU1MgbmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0
aW9uKHtpY2VTZXJ2ZXJzOlt7fV19LCBudWxsKTsgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBF
X01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KK1BBU1MgbmV3IHdlYmtpdFJUQ1BlZXJD
b25uZWN0aW9uKHtpY2VTZXJ2ZXJzOlt7dXJsOidmb28nfV19LCBudWxsKTsgdGhyZXcgZXhjZXB0
aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uODFkZDlhNzllZDJmYzA0YjJiZWVhNGY4OWUzMWIxZmZiYjU1OTI5NgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaHRt
bApAQCAtMCwwICsxLDI5IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBI
VE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlk
PSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0Pgor
ZGVzY3JpcHRpb24oIlRlc3RzIHRoZSBSVENQZWVyQ29ubmVjdGlvbiBjb25zdHJ1Y3Rvci4iKTsK
Kworc2hvdWxkTm90VGhyb3coIm5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbihudWxsLCBudWxs
KTsiKTsKK3Nob3VsZE5vdFRocm93KCJuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24oe2ljZVNl
cnZlcnM6W119LCBudWxsKTsiKTsKK3Nob3VsZE5vdFRocm93KCJuZXcgd2Via2l0UlRDUGVlckNv
bm5lY3Rpb24oe2ljZVNlcnZlcnM6W3t1cmk6J2Zvbyd9XX0sIG51bGwpOyIpOworc2hvdWxkTm90
VGhyb3coIm5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbih7aWNlU2VydmVyczpbe3VyaTonZm9v
JywgY3JlZGVudGlhbDoneCd9XX0sIG51bGwpOyIpOworc2hvdWxkTm90VGhyb3coIm5ldyB3ZWJr
aXRSVENQZWVyQ29ubmVjdGlvbih7aWNlU2VydmVyczpbe3VyaTonZm9vJywgY3JlZGVudGlhbDon
eCd9LHt1cmk6J2Jhcid9XX0sIG51bGwpOyIpOworCitzaG91bGRUaHJvdygibmV3IHdlYmtpdFJU
Q1BlZXJDb25uZWN0aW9uKHtmb29TZXJ2ZXJzOltdfSwgbnVsbCk7Iik7CitzaG91bGRUaHJvdygi
bmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKHtpY2VTZXJ2ZXJzOnRydWV9LCBudWxsKTsiKTsK
K3Nob3VsZFRocm93KCJuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24oe2ljZVNlcnZlcnM6WzEs
IDIsIDNdfSwgbnVsbCk7Iik7CitzaG91bGRUaHJvdygibmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0
aW9uKHtpY2VTZXJ2ZXJzOlt7fV19LCBudWxsKTsiKTsKK3Nob3VsZFRocm93KCJuZXcgd2Via2l0
UlRDUGVlckNvbm5lY3Rpb24oe2ljZVNlcnZlcnM6W3t1cmw6J2Zvbyd9XX0sIG51bGwpOyIpOwor
Cit3aW5kb3cuanNUZXN0SXNBc3luYyA9IGZhbHNlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154924</attachid>
            <date>2012-07-27 06:17:33 -0700</date>
            <delta_ts>2012-07-27 07:16:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92380-20120727151720.patch</filename>
            <type>text/plain</type>
            <size>31281</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzNzMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTUyZGMyNzE4ZjA0MzFl
NTc3Y2M3M2U4YzMwM2Y5N2Y4ZDc1NTI1My4uNmUwNzljZTI1NDVhYzIxOTBkNzVlYmRiNTI3Mjc0
OTQ5NDEwZGU1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDEyLTA3LTI3ICBUb21t
eSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIEludHJvZHVjZSBh
IG1pbmltYWwgUlRDUGVlckNvbm5lY3Rpb24gdG9nZXRoZXIgd2l0aCBEaWN0aW9uYXJ5IGNoYW5n
ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkyMzgw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBpbnRyb2R1Y2VzIGEgc2hlbGwgUlRDUGVlckNvbm5lY3Rpb24gdG9nZXRoZXIgd2l0aCBu
ZWNjZWNhcnkgY2hhbmdlcyB0bworICAgICAgICBEaWN0aW9uYXJ5LgorCisgICAgICAgIFRoZSBX
M0Mgc3BlY2lmaWNhdGlvbiBjYW4gYmUgZm91bmQgaGVyZToKKyAgICAgICAgaHR0cDovL2Rldi53
My5vcmcvMjAxMS93ZWJydGMvZWRpdG9yL3dlYnJ0Yy5odG1sI3J0Y3BlZXJjb25uZWN0aW9uCisK
KyAgICAgICAgU2luY2UgRGljdGlvbmFyaWVzIGNhbid0IGJlIGZ1bGx5IGNvcGllZCBhcm91bmQg
YWRkaW5nCisgICAgICAgIGdldChjb25zdCBTdHJpbmcmIG5hbWUsIFZlY3RvcjxEaWN0aW9uYXJ5
PiYgcmVzdWx0KQorICAgICAgICBpc24ndCBmZWFzaWJsZSBzbyBJIGhhdmUgYWRkZWQgYSBuZXcg
QXJyYXlWYWx1ZSBjbGFzcy4KKworICAgICAgICBUZXN0OiBmYXN0L21lZGlhc3RyZWFtL1JUQ1Bl
ZXJDb25uZWN0aW9uLmh0bWwKKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vRE9NV2lu
ZG93TWVkaWFTdHJlYW0uaWRsOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVl
ckNvbm5lY3Rpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUlRD
SWNlU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0ljZVNlcnZlcjo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJUQ0ljZVNlcnZlcjo6flJUQ0ljZVNlcnZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpSVENJY2VTZXJ2ZXI6OnVyaSk6CisgICAgICAgIChXZWJDb3JlOjpSVENJY2VTZXJ2
ZXI6OnBhc3N3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0ljZVNlcnZlcjo6UlRDSWNlU2Vy
dmVyKToKKyAgICAgICAgKFJUQ0NvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UlRD
Q29uZmlndXJhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0NvbmZpZ3VyYXRp
b246On5SVENDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0NvbmZpZ3VyYXRp
b246OmFwcGVuZFNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpSVENDb25maWd1cmF0aW9uOjpu
dW1iZXJPZlNlcnZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6UlRDQ29uZmlndXJhdGlvbjo6c2Vy
dmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0NvbmZpZ3VyYXRpb246OlJUQ0NvbmZpZ3VyYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb246OnBhcnNlQ29uZmlndXJh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjpSVENQZWVyQ29ubmVjdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6flJUQ1BlZXJDb25uZWN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjppbnRlcmZhY2VOYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjpzdG9wKToKKyAgICAgICAg
KFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjpldmVudFRhcmdldERhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb246OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSk6CisgICAg
ICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUlRDUGVlckNvbm5lY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb246OnJlZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjpkZXJlZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmlkbDogQWRkZWQuCisgICAgICAg
ICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIGJpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJs
ZWRGZWF0dXJlcy5oOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6
d2Via2l0UlRDUGVlckNvbm5lY3Rpb25FbmFibGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9B
cnJheVZhbHVlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OkFycmF5VmFsdWU6OkFycmF5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXJyYXlWYWx1
ZTo6fkFycmF5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXJyYXlWYWx1ZTo6b3BlcmF0b3I9
KToKKyAgICAgICAgKFdlYkNvcmU6OkFycmF5VmFsdWU6OmlzQXJyYXlWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpBcnJheVZhbHVlOjppc1VuZGVmaW5lZE9yTnVsbCk6CisgICAgICAgIChXZWJD
b3JlOjpBcnJheVZhbHVlOjpsZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6QXJyYXlWYWx1ZTo6
Z2V0KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9BcnJheVZhbHVlLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChBcnJheVZhbHVlKToKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9EaWN0aW9uYXJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpY3Rpb25hcnk6OmdldCk6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9EaWN0aW9uYXJ5Lmg6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKERpY3Rpb25hcnkpOgorICAgICAgICAqIGRvbS9F
dmVudFRhcmdldEZhY3RvcnkuaW46CisKIDIwMTItMDctMjYgIEVyaWMgU2VpZGVsICA8ZXJpY0B3
ZWJraXQub3JnPgogCiAgICAgICAgIDIlIG9mIGFsbCBzYW1wbGVzIHJ1bm5pbmcgZ3JpZCBkZW1v
IHNob3cgdXAgaW4gU3R5bGVSZXNvbHZlcjo6Y2FuU2hhcmVTdHlsZVdpdGhFbGVtZW50LCAyMCUg
b2YgdGhvc2UgZHVlIHRvIGdldEF0dHJpYnV0ZSBpbnN0ZWFkIG9mIGZhc3RHZXRBdHRyaWJ1dGUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vRE9NV2luZG93
TWVkaWFTdHJlYW0uaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9ET01X
aW5kb3dNZWRpYVN0cmVhbS5pZGwKaW5kZXggNzQyYTYyNDYzMmU2OWMwNmYwMmYwMjUyNDEyYmJh
MjczYjJhZjVhNS4uZWE5NDZhNDk2NmJlOGJiYmY0OGEzYWMwYTUyNmViNTQwNzY1MWQ0ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9ET01XaW5kb3dNZWRp
YVN0cmVhbS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9ET01X
aW5kb3dNZWRpYVN0cmVhbS5pZGwKQEAgLTMyLDYgKzMyLDcgQEAgbW9kdWxlIHdpbmRvdyB7CiAg
ICAgXSBET01XaW5kb3dNZWRpYVN0cmVhbSB7CiAgICAgICAgIGF0dHJpYnV0ZSBbVjhFbmFibGVk
QXRSdW50aW1lXSBNZWRpYVN0cmVhbUNvbnN0cnVjdG9yIHdlYmtpdE1lZGlhU3RyZWFtOwogICAg
ICAgICBhdHRyaWJ1dGUgW1Y4RW5hYmxlZEF0UnVudGltZV0gUGVlckNvbm5lY3Rpb24wMENvbnN0
cnVjdG9yIHdlYmtpdFBlZXJDb25uZWN0aW9uMDA7CisgICAgICAgIGF0dHJpYnV0ZSBbVjhFbmFi
bGVkQXRSdW50aW1lXSBSVENQZWVyQ29ubmVjdGlvbkNvbnN0cnVjdG9yIHdlYmtpdFJUQ1BlZXJD
b25uZWN0aW9uOwogICAgICAgICBhdHRyaWJ1dGUgU2Vzc2lvbkRlc2NyaXB0aW9uQ29uc3RydWN0
b3IgU2Vzc2lvbkRlc2NyaXB0aW9uOwogICAgICAgICBhdHRyaWJ1dGUgSWNlQ2FuZGlkYXRlQ29u
c3RydWN0b3IgSWNlQ2FuZGlkYXRlOwogICAgICAgICBhdHRyaWJ1dGUgTWVkaWFTdHJlYW1FdmVu
dENvbnN0cnVjdG9yIE1lZGlhU3RyZWFtRXZlbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmJhNWMzOTA5NmM5YjNmNWMzODVlNmE4NmZhYjU2YWE5ZDFjYzg0OTkKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9u
LmNwcApAQCAtMCwwICsxLDE3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1
dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJSVENQZWVyQ29ubmVjdGlvbi5oIgor
CisjaW5jbHVkZSAiQXJyYXlWYWx1ZS5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNp
bmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIEZJWE1FOiBSVENJY2VTZXJ2ZXIgYW5kIFJUQ0NvbmZp
Z3JhdGlvbiBhcmUgcGxhY2VkIGhlcmUgdGVtcG9yYXJpbHkuCisvLyBUaGVpciBmaW5hbCBwbGFj
ZSBpcyBpbiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS4KK2NsYXNzIFJUQ0lj
ZVNlcnZlciA6IHB1YmxpYyBSZWZDb3VudGVkPFJUQ0ljZVNlcnZlcj4geworcHVibGljOgorICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFJUQ0ljZVNlcnZlcj4gY3JlYXRlKGNvbnN0IEtVUkwmIHVyaSwg
Y29uc3QgU3RyaW5nJiBwYXNzd29yZCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFJUQ0ljZVNlcnZl
cih1cmksIHBhc3N3b3JkKSk7IH0KKyAgICB2aXJ0dWFsIH5SVENJY2VTZXJ2ZXIoKSB7IH0KKwor
ICAgIGNvbnN0IEtVUkwmIHVyaSgpIHsgcmV0dXJuIG1fdXJpOyB9CisgICAgY29uc3QgU3RyaW5n
JiBwYXNzd29yZCgpIHsgcmV0dXJuIG1fcGFzc3dvcmQ7IH0KKworcHJpdmF0ZToKKyAgICBSVENJ
Y2VTZXJ2ZXIoY29uc3QgS1VSTCYgdXJpLCBjb25zdCBTdHJpbmcmIHBhc3N3b3JkKQorICAgICAg
ICA6IG1fdXJpKHVyaSkKKyAgICAgICAgLCBtX3Bhc3N3b3JkKHBhc3N3b3JkKQorICAgIHsKKyAg
ICB9CisKKyAgICBLVVJMIG1fdXJpOworICAgIFN0cmluZyBtX3Bhc3N3b3JkOworfTsKKworY2xh
c3MgUlRDQ29uZmlndXJhdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPFJUQ0NvbmZpZ3VyYXRpb24+
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxSVENDb25maWd1cmF0aW9uPiBjcmVh
dGUoKSB7IHJldHVybiBhZG9wdFJlZihuZXcgUlRDQ29uZmlndXJhdGlvbigpKTsgfQorICAgIHZp
cnR1YWwgflJUQ0NvbmZpZ3VyYXRpb24oKSB7IH0KKworICAgIHZvaWQgYXBwZW5kU2VydmVyKFBh
c3NSZWZQdHI8UlRDSWNlU2VydmVyPiBzZXJ2ZXIpIHsgbV9zZXJ2ZXJzLmFwcGVuZChzZXJ2ZXIp
OyB9CisgICAgc2l6ZV90IG51bWJlck9mU2VydmVycygpIHsgcmV0dXJuIG1fc2VydmVycy5zaXpl
KCk7IH0KKyAgICBSVENJY2VTZXJ2ZXIqIHNlcnZlcihzaXplX3QgaW5kZXgpIHsgcmV0dXJuIG1f
c2VydmVyc1tpbmRleF0uZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBSVENDb25maWd1cmF0aW9u
KCkgeyB9CisKKyAgICBWZWN0b3I8UmVmUHRyPFJUQ0ljZVNlcnZlcj4gPiBtX3NlcnZlcnM7Cit9
OworCitQYXNzUmVmUHRyPFJUQ0NvbmZpZ3VyYXRpb24+IFJUQ1BlZXJDb25uZWN0aW9uOjpwYXJz
ZUNvbmZpZ3VyYXRpb24oY29uc3QgRGljdGlvbmFyeSYgY29uZmlndXJhdGlvbiwgRXhjZXB0aW9u
Q29kZSYgZWMpCit7CisgICAgaWYgKGNvbmZpZ3VyYXRpb24uaXNVbmRlZmluZWRPck51bGwoKSkK
KyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBBcnJheVZhbHVlIGljZVNlcnZlcnM7CisgICAgYm9v
bCBvayA9IGNvbmZpZ3VyYXRpb24uZ2V0KCJpY2VTZXJ2ZXJzIiwgaWNlU2VydmVycyk7CisgICAg
aWYgKCFvayB8fCAhaWNlU2VydmVycy5pc0FycmF5VmFsdWUoKSkgeworICAgICAgICBlYyA9IFRZ
UEVfTUlTTUFUQ0hfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBzaXplX3Qg
bnVtYmVyT2ZTZXJ2ZXJzOworICAgIG9rID0gaWNlU2VydmVycy5sZW5ndGgobnVtYmVyT2ZTZXJ2
ZXJzKTsKKyAgICBpZiAoIW9rKSB7CisgICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7Cisg
ICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIFJlZlB0cjxSVENDb25maWd1cmF0aW9uPiBy
dGNDb25maWd1cmF0aW9uID0gUlRDQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7CisKKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG51bWJlck9mU2VydmVyczsgKytpKSB7CisgICAgICAgIERpY3Rp
b25hcnkgaWNlU2VydmVyOworICAgICAgICBvayA9IGljZVNlcnZlcnMuZ2V0KGksIGljZVNlcnZl
cik7CisgICAgICAgIGlmICghb2sgfHwgIWljZVNlcnZlci5pc09iamVjdCgpKSB7CisgICAgICAg
ICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgIH0KKworICAgICAgICBTdHJpbmcgdXJpLCBwYXNzd29yZDsKKyAgICAgICAgb2sgPSBpY2VT
ZXJ2ZXIuZ2V0KCJ1cmkiLCB1cmkpOworICAgICAgICBpZiAoIW9rKSB7CisgICAgICAgICAgICBl
YyA9IFRZUEVfTUlTTUFUQ0hfRVJSOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0K
KyAgICAgICAgS1VSTCB1cmwoS1VSTCgpLCB1cmkpOworICAgICAgICBpZiAoIXVybC5pc1ZhbGlk
KCkgfHwgISh1cmwucHJvdG9jb2xJcygidHVybiIpIHx8IHVybC5wcm90b2NvbElzKCJzdHVuIikp
KSB7CisgICAgICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOworICAgICAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgIH0KKworICAgICAgICBpY2VTZXJ2ZXIuZ2V0KCJjcmVkZW50aWFsIiwg
cGFzc3dvcmQpOworCisgICAgICAgIHJ0Y0NvbmZpZ3VyYXRpb24tPmFwcGVuZFNlcnZlcihSVENJ
Y2VTZXJ2ZXI6OmNyZWF0ZSh1cmwsIHBhc3N3b3JkKSk7CisgICAgfQorICAgIHJldHVybiBydGND
b25maWd1cmF0aW9uLnJlbGVhc2UoKTsKK30KKworUGFzc1JlZlB0cjxSVENQZWVyQ29ubmVjdGlv
bj4gUlRDUGVlckNvbm5lY3Rpb246OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBjb25zdCBEaWN0aW9uYXJ5JiBydGNDb25maWd1cmF0aW9uLCBjb25zdCBEaWN0aW9uYXJ5
JiwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgUmVmUHRyPFJUQ0NvbmZpZ3VyYXRpb24+IGNv
bmZpZ3VyYXRpb24gPSBwYXJzZUNvbmZpZ3VyYXRpb24ocnRjQ29uZmlndXJhdGlvbiwgZWMpOwor
ICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBSZWZQdHI8UlRDUGVlckNvbm5l
Y3Rpb24+IHBlZXJDb25uZWN0aW9uID0gYWRvcHRSZWYobmV3IFJUQ1BlZXJDb25uZWN0aW9uKGNv
bnRleHQsIGNvbmZpZ3VyYXRpb24ucmVsZWFzZSgpLCBlYykpOworICAgIGlmIChlYykKKyAgICAg
ICAgcmV0dXJuIDA7CisKKyAgICBwZWVyQ29ubmVjdGlvbi0+c3VzcGVuZElmTmVlZGVkKCk7Cisg
ICAgcmV0dXJuIHBlZXJDb25uZWN0aW9uLnJlbGVhc2UoKTsKK30KKworUlRDUGVlckNvbm5lY3Rp
b246OlJUQ1BlZXJDb25uZWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBh
c3NSZWZQdHI8UlRDQ29uZmlndXJhdGlvbj4sIEV4Y2VwdGlvbkNvZGUmIGVjKQorICAgIDogQWN0
aXZlRE9NT2JqZWN0KGNvbnRleHQsIHRoaXMpCit7Cit9CisKK1JUQ1BlZXJDb25uZWN0aW9uOjp+
UlRDUGVlckNvbm5lY3Rpb24oKQoreworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIFJUQ1BlZXJD
b25uZWN0aW9uOjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1l
cygpLmludGVyZmFjZUZvclJUQ1BlZXJDb25uZWN0aW9uOworfQorCitTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBSVENQZWVyQ29ubmVjdGlvbjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
OworfQorCit2b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjpzdG9wKCkKK3sKKyAgICAvLyBGSVhNRTog
TWFrZSBzdXJlIHRoYXQgdGhpcyBvYmplY3Qgc3RvcHMgcG9zdGluZyBldmVudHMgYW5kIHJlbGVh
c2VzIHJlc291cmNlcyBhdCB0aGlzIHN0YWdlLgorfQorCitFdmVudFRhcmdldERhdGEqIFJUQ1Bl
ZXJDb25uZWN0aW9uOjpldmVudFRhcmdldERhdGEoKQoreworICAgIHJldHVybiAmbV9ldmVudFRh
cmdldERhdGE7Cit9CisKK0V2ZW50VGFyZ2V0RGF0YSogUlRDUGVlckNvbm5lY3Rpb246OmVuc3Vy
ZUV2ZW50VGFyZ2V0RGF0YSgpCit7CisgICAgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVB
TSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVl
ckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVl
ckNvbm5lY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hN2YyOGQxNTAwYzMwMWUwOWFhM2EwYjEwOTA4M2Mz
NDcxYmExMGQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogICAgaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgZGlz
dHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcworICogICAgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFJUQ1BlZXJDb25uZWN0aW9uX2gKKyNkZWZpbmUgUlRDUGVlckNvbm5lY3Rpb25faAorCisj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgor
I2luY2x1ZGUgIkRpY3Rpb25hcnkuaCIKKyNpbmNsdWRlICJFdmVudFRhcmdldC5oIgorI2luY2x1
ZGUgIkV4Y2VwdGlvbkJhc2UuaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CitjbGFzcyBSVENDb25maWd1cmF0aW9uOworCitjbGFzcyBSVENQZWVy
Q29ubmVjdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPFJUQ1BlZXJDb25uZWN0aW9uPiwgcHVibGlj
IEV2ZW50VGFyZ2V0LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxSVENQZWVyQ29ubmVjdGlvbj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBjb25zdCBEaWN0aW9uYXJ5JiBydGNDb25maWd1cmF0aW9uLCBjb25zdCBEaWN0aW9u
YXJ5JiBtZWRpYUNvbnN0cmFpbnRzLCBFeGNlcHRpb25Db2RlJik7CisgICAgflJUQ1BlZXJDb25u
ZWN0aW9uKCk7CisKKyAgICAvLyBFdmVudFRhcmdldAorICAgIHZpcnR1YWwgY29uc3QgQXRvbWlj
U3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgT1ZFUlJJ
REU7CisKKyAgICAvLyBBY3RpdmVET01PYmplY3QKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpIE9W
RVJSSURFOworCisgICAgdXNpbmcgUmVmQ291bnRlZDxSVENQZWVyQ29ubmVjdGlvbj46OnJlZjsK
KyAgICB1c2luZyBSZWZDb3VudGVkPFJUQ1BlZXJDb25uZWN0aW9uPjo6ZGVyZWY7CisKK3ByaXZh
dGU6CisgICAgUlRDUGVlckNvbm5lY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NS
ZWZQdHI8UlRDQ29uZmlndXJhdGlvbj4sIEV4Y2VwdGlvbkNvZGUmKTsKKworICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFJUQ0NvbmZpZ3VyYXRpb24+IHBhcnNlQ29uZmlndXJhdGlvbihjb25zdCBEaWN0
aW9uYXJ5JiBjb25maWd1cmF0aW9uLCBFeGNlcHRpb25Db2RlJik7CisKKyAgICAvLyBFdmVudFRh
cmdldCBpbXBsZW1lbnRhdGlvbi4KKyAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZXZlbnRU
YXJnZXREYXRhKCk7CisgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGVuc3VyZUV2ZW50VGFy
Z2V0RGF0YSgpOworICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIHsgcmVmKCk7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIHsgZGVyZWYoKTsgfQorICAgIEV2
ZW50VGFyZ2V0RGF0YSBtX2V2ZW50VGFyZ2V0RGF0YTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNlbmRpZiAvLyBSVENQ
ZWVyQ29ubmVjdGlvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ0YWQ3MjM1YmU0YTM4
MzdlNTA4MDBiMDlkY2FkZjkzNGIyNGM4NTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmlkbApAQCAtMCwwICsx
LDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAq
ICAgIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCisgKiAgICBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMK
KyAqICAgIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworbW9kdWxlIG1lZGlhc3RyZWFtIHsKKworICAgIGludGVyZmFjZSBbCisg
ICAgICAgIENvbmRpdGlvbmFsPU1FRElBX1NUUkVBTSwKKyAgICAgICAgQWN0aXZlRE9NT2JqZWN0
LAorICAgICAgICBDb25zdHJ1Y3RvcihpbiBEaWN0aW9uYXJ5IHJ0Y0lDRVNlcnZlcnMsIGluIFtP
cHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIERpY3Rpb25hcnkgbWVkaWFDb25zdHJhaW50cyks
CisgICAgICAgIENvbnN0cnVjdG9yUmFpc2VzRXhjZXB0aW9uLAorICAgICAgICBDYWxsV2l0aD1T
Y3JpcHRFeGVjdXRpb25Db250ZXh0LAorICAgICAgICBFdmVudFRhcmdldAorICAgIF0gUlRDUGVl
ckNvbm5lY3Rpb24geworICAgICAgICAvLyBFdmVudFRhcmdldCBpbnRlcmZhY2UKKyAgICAgICAg
dm9pZCBhZGRFdmVudExpc3RlbmVyKGluIERPTVN0cmluZyB0eXBlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGluIFtPcHRpb25hbF0gYm9vbGVhbiB1c2VDYXB0dXJlKTsKKyAgICAg
ICAgdm9pZCByZW1vdmVFdmVudExpc3RlbmVyKGluIERPTVN0cmluZyB0eXBlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25hbF0gYm9vbGVhbiB1c2VDYXB0
dXJlKTsKKyAgICAgICAgYm9vbGVhbiBkaXNwYXRjaEV2ZW50KGluIEV2ZW50IGV2ZW50KQorICAg
ICAgICAgICAgcmFpc2VzKEV2ZW50RXhjZXB0aW9uKTsKKyAgICB9OworCit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKaW5kZXggNzVlNTQxYjc4YjMyYmQ0YWY3NThhYzAxNGYyMmI4MDA5Y2Q1ZDc0YS4uZWY2ZGEx
ZDQ3NzBmMDhmY2I0MzI3MzM4ZWY5ZGMzNDExMmMzMzhlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAt
ODQwLDYgKzg0MCw3IEBACiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0
b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrLmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRp
YXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2suaWRsJywKICAgICAgICAg
ICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uMDAuaWRsJywKKyAgICAgICAg
ICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmlkbCcsCiAgICAgICAg
ICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9TZXNzaW9uRGVzY3JpcHRpb24uaWRsJywKICAgICAg
ICAgICAgICdNb2R1bGVzL25vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90aWZpY2F0aW9ucy5pZGwn
LAogICAgICAgICAgICAgJ01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaWRsJywK
QEAgLTE1NjYsNiArMTU2Nyw4IEBACiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9O
YXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2suaCcsCiAgICAgICAgICAgICAnTW9kdWxl
cy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbjAwLmNwcCcsCiAgICAgICAgICAgICAnTW9kdWxl
cy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbjAwLmgnLAorICAgICAgICAgICAgJ01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwJywKKyAgICAgICAgICAgICdNb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMv
bWVkaWFzdHJlYW0vU2Vzc2lvbkRlc2NyaXB0aW9uLmNwcCcsCiAgICAgICAgICAgICAnTW9kdWxl
cy9tZWRpYXN0cmVhbS9TZXNzaW9uRGVzY3JpcHRpb24uaCcsCiAgICAgICAgICAgICAnTW9kdWxl
cy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDbGllbnQuaCcsCkBAIC0yMTUwLDYgKzIxNTMsOCBAQAog
ICAgICAgICAgICAgJ2JpbmRpbmdzL29iamMvT2JqQ05vZGVGaWx0ZXJDb25kaXRpb24ubW0nLAog
ICAgICAgICAgICAgJ2JpbmRpbmdzL29iamMvUHVibGljRE9NSW50ZXJmYWNlcy5oJywKICAgICAg
ICAgICAgICdiaW5kaW5ncy9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbScsCisgICAgICAgICAgICAn
YmluZGluZ3MvdjgvQXJyYXlWYWx1ZS5jcHAnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L0Fy
cmF5VmFsdWUuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvRE9NRGF0YS5jcHAnLAogICAg
ICAgICAgICAgJ2JpbmRpbmdzL3Y4L0RPTURhdGEuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mv
djgvRE9NRGF0YVN0b3JlLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oCmluZGV4IDQwMjIwMjRmNDMwMjIy
Nzk1ZjAyODFmY2RiNzU2ZjQ0NDRlN2YwOWYuLmQ2YTkzYTdhZDA0Mzg1MzQ3OTE3OWYxNTdiMDNm
NmVlMzIxZDYyMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMv
UnVudGltZUVuYWJsZWRGZWF0dXJlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dl
bmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oCkBAIC0xODgsNiArMTg4LDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBib29sIHBlZXJDb25uZWN0aW9uRW5hYmxlZCgpIHsgcmV0dXJuIGlzTWVk
aWFTdHJlYW1FbmFibGVkICYmIGlzUGVlckNvbm5lY3Rpb25FbmFibGVkOyB9CiAgICAgc3RhdGlj
IHZvaWQgc2V0UGVlckNvbm5lY3Rpb25FbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IGlzUGVlckNv
bm5lY3Rpb25FbmFibGVkID0gaXNFbmFibGVkOyB9CiAgICAgc3RhdGljIGJvb2wgd2Via2l0UGVl
ckNvbm5lY3Rpb24wMEVuYWJsZWQoKSB7IHJldHVybiBwZWVyQ29ubmVjdGlvbkVuYWJsZWQoKTsg
fQorICAgIHN0YXRpYyBib29sIHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uRW5hYmxlZCgpIHsgcmV0
dXJuIHBlZXJDb25uZWN0aW9uRW5hYmxlZCgpOyB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShHQU1F
UEFEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvQXJyYXlWYWx1ZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9BcnJheVZhbHVlLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xY2VlYWYwNTc2NmY3YjBjYjM5MzA2Y2M5ZmMyMGM2MzA4NGQzYjg5Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvQXJyYXlWYWx1ZS5jcHAKQEAgLTAsMCAr
MSw5MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisg
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBcnJheVZhbHVl
LmgiCisKKyNpbmNsdWRlICJEaWN0aW9uYXJ5LmgiCisjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworQXJyYXlWYWx1ZTo6QXJyYXlWYWx1ZSgpCit7Cit9CisK
K0FycmF5VmFsdWU6OkFycmF5VmFsdWUoY29uc3Qgdjg6OkxvY2FsPHY4OjpWYWx1ZT4mIG9wdGlv
bnMpCisgICAgOiBtX29wdGlvbnMob3B0aW9ucykKK3sKK30KKworQXJyYXlWYWx1ZTo6fkFycmF5
VmFsdWUoKQoreworfQorCitBcnJheVZhbHVlJiBBcnJheVZhbHVlOjpvcGVyYXRvcj0oY29uc3Qg
QXJyYXlWYWx1ZSYgb3B0aW9uc09iamVjdCkKK3sKKyAgICBtX29wdGlvbnMgPSBvcHRpb25zT2Jq
ZWN0Lm1fb3B0aW9uczsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK2Jvb2wgQXJyYXlWYWx1ZTo6
aXNBcnJheVZhbHVlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIWlzVW5kZWZpbmVkT3JOdWxsKCkg
JiYgbV9vcHRpb25zLT5Jc0FycmF5KCk7Cit9CisKK2Jvb2wgQXJyYXlWYWx1ZTo6aXNVbmRlZmlu
ZWRPck51bGwoKSBjb25zdAoreworICAgIGlmIChtX29wdGlvbnMuSXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gV2ViQ29yZTo6aXNVbmRlZmluZWRPck51bGwobV9v
cHRpb25zKTsKK30KKworYm9vbCBBcnJheVZhbHVlOjpsZW5ndGgoc2l6ZV90JiBsZW5ndGgpIGNv
bnN0Cit7CisgICAgaWYgKCFpc0FycmF5VmFsdWUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgdjg6OkxvY2FsPHY4OjpBcnJheT4gdjhBcnJheSA9IHY4OjpMb2NhbDx2ODo6QXJyYXk+
OjpDYXN0KG1fb3B0aW9ucyk7CisgICAgbGVuZ3RoID0gdjhBcnJheS0+TGVuZ3RoKCk7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgQXJyYXlWYWx1ZTo6Z2V0KHNpemVfdCBpbmRleCwgRGlj
dGlvbmFyeSYgdmFsdWUpIGNvbnN0Cit7CisgICAgaWYgKCFpc0FycmF5VmFsdWUoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgdjg6OkxvY2FsPHY4OjpBcnJheT4gdjhBcnJheSA9IHY4
OjpMb2NhbDx2ODo6QXJyYXk+OjpDYXN0KG1fb3B0aW9ucyk7CisgICAgaWYgKGluZGV4ID49IHY4
QXJyYXktPkxlbmd0aCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICB2ODo6TG9jYWw8
djg6OlZhbHVlPiBpbmRleGVkVmFsdWUgPSB2OEFycmF5LT5HZXQodjg6OlVpbnQzMjo6TmV3KGlu
ZGV4KSk7CisgICAgaWYgKFdlYkNvcmU6OmlzVW5kZWZpbmVkT3JOdWxsKGluZGV4ZWRWYWx1ZSkg
fHwgIWluZGV4ZWRWYWx1ZS0+SXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgdmFsdWUgPSBEaWN0aW9uYXJ5KGluZGV4ZWRWYWx1ZSk7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L0FycmF5VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0FycmF5
VmFsdWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hYTM2NDQ1Y2FiYmZhNDM0NTU3NTE1NTc4OGU3ZDdiMTFmZmY0
ZDE4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvQXJyYXlW
YWx1ZS5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJ
UyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEFycmF5VmFsdWVfaAorI2Rl
ZmluZSBBcnJheVZhbHVlX2gKKworI2luY2x1ZGUgPHY4Lmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgRGljdGlvbmFyeTsKKworY2xhc3MgQXJyYXlWYWx1ZSB7CitwdWJsaWM6Cisg
ICAgQXJyYXlWYWx1ZSgpOworICAgIEFycmF5VmFsdWUoY29uc3Qgdjg6OkxvY2FsPHY4OjpWYWx1
ZT4mIG9wdGlvbnMpOworICAgIH5BcnJheVZhbHVlKCk7CisKKyAgICBBcnJheVZhbHVlJiBvcGVy
YXRvcj0oY29uc3QgQXJyYXlWYWx1ZSYpOworCisgICAgYm9vbCBpc0FycmF5VmFsdWUoKSBjb25z
dDsKKyAgICBib29sIGlzVW5kZWZpbmVkT3JOdWxsKCkgY29uc3Q7CisKKyAgICBib29sIGxlbmd0
aChzaXplX3QmKSBjb25zdDsKKyAgICBib29sIGdldChzaXplX3QgaW5kZXgsIERpY3Rpb25hcnkm
KSBjb25zdDsKKworcHJpdmF0ZToKKyAgICAvLyBUaGlzIG9iamVjdCBjYW4gb25seSBiZSB1c2Vk
IHNhZmVseSB3aGVuIHN0YWNrIGFsbG9jYXRlZCBiZWNhdXNlIG9mIHY4OjpMb2NhbC4KKyAgICBz
dGF0aWMgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCk7CisgICAgc3RhdGljIHZvaWQqIG9wZXJh
dG9yIG5ld1tdKHNpemVfdCk7CisgICAgc3RhdGljIHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQg
Kik7CisKKyAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBtX29wdGlvbnM7Cit9OworCit9CisKKyNl
bmRpZiAvLyBBcnJheVZhbHVlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L0RpY3Rpb25hcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGljdGlvbmFy
eS5jcHAKaW5kZXggN2Q2OTJlNzhlNDA3NTJjYmVlZmRlY2JhYTE4MDRkN2MxMjYxNGZjOS4uMTk1
YjNjODcxMmNiOTFmNzI2ODNjMTFkZGRlMWI2ZGQ3NzQ5ZThmMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvRGljdGlvbmFyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvRGljdGlvbmFyeS5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJEaWN0aW9uYXJ5LmgiCiAKKyNpbmNsdWRlICJBcnJheVZhbHVl
LmgiCiAjaW5jbHVkZSAiRE9NU3RyaW5nTGlzdC5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgog
I2luY2x1ZGUgIlY4RE9NV2luZG93LmgiCkBAIC00NDIsNiArNDQzLDE5IEBAIGJvb2wgRGljdGlv
bmFyeTo6Z2V0KGNvbnN0IFN0cmluZyYga2V5LCBWZWN0b3I8U3RyaW5nPiYgdmFsdWUpIGNvbnN0
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgRGljdGlvbmFyeTo6Z2V0KGNvbnN0IFN0cmlu
ZyYga2V5LCBBcnJheVZhbHVlJiB2YWx1ZSkgY29uc3QKK3sKKyAgICB2ODo6TG9jYWw8djg6OlZh
bHVlPiB2OFZhbHVlOworICAgIGlmICghZ2V0S2V5KGtleSwgdjhWYWx1ZSkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGlmICghdjhWYWx1ZS0+SXNBcnJheSgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICB2YWx1ZSA9IEFycmF5VmFsdWUodjhWYWx1ZSk7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKIGJvb2wgRGljdGlvbmFyeTo6Z2V0T3duUHJvcGVydGllc0FzU3RyaW5nSGFz
aE1hcChXVEY6Okhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBoYXNoTWFwKSBjb25zdAogewogICAg
IGlmICghaXNPYmplY3QoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L0RpY3Rpb25hcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RpY3Rpb25hcnkuaApp
bmRleCBmMTUzZWE5YzgyOTg0ODA4MGYyZjVlNjg1YmNjNmE3NzM0M2Y1NGFlLi4xOTJiMzFmNzJk
NDAyYzEzMTBlNWZjYWNkZjFiN2QxYWViNDQ1OTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9EaWN0aW9uYXJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvRGljdGlvbmFyeS5oCkBAIC0zOCw2ICszOCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAorY2xhc3MgQXJyYXlWYWx1ZTsKIGNsYXNzIERPTVdpbmRvdzsKIGNsYXNzIElEQktleVJhbmdl
OwogY2xhc3MgTWVkaWFLZXlFcnJvcjsKQEAgLTg2LDYgKzg3LDggQEAgcHVibGljOgogICAgIGJv
b2wgZ2V0KGNvbnN0IFN0cmluZyYsIEhhc2hTZXQ8QXRvbWljU3RyaW5nPiYpIGNvbnN0OwogICAg
IGJvb2wgZ2V0KGNvbnN0IFN0cmluZyYsIERpY3Rpb25hcnkmKSBjb25zdDsKICAgICBib29sIGdl
dChjb25zdCBTdHJpbmcmLCBWZWN0b3I8U3RyaW5nPiYpIGNvbnN0OworICAgIGJvb2wgZ2V0KGNv
bnN0IFN0cmluZyYsIEFycmF5VmFsdWUmKSBjb25zdDsKKwogICAgIGJvb2wgZ2V0T3duUHJvcGVy
dGllc0FzU3RyaW5nSGFzaE1hcChXVEY6Okhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JikgY29uc3Q7
CiAKICAgICBib29sIGdldFdpdGhVbmRlZmluZWRPck51bGxDaGVjayhjb25zdCBTdHJpbmcmLCBT
dHJpbmcmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdl
dEZhY3RvcnkuaW4gYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCmlu
ZGV4IGZmNjBhYWQ0ZGI1OWY5Y2ZlN2Y5OGExYWRjOTVmN2Q5MTFjMGFjMzIuLjQ0ZThkOGU4NWFm
NTBjYjQ1YTA0YTgyNzBjMjRkMDU1MzQwYzMyMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
VGFyZ2V0RmFjdG9yeS5pbgpAQCAtMjQsNiArMjQsNyBAQCBOb2RlCiBOb3RpZmljYXRpb24gY29u
ZGl0aW9uYWw9Tk9USUZJQ0FUSU9OU3xMRUdBQ1lfTk9USUZJQ0FUSU9OUwogUGVlckNvbm5lY3Rp
b24wMCBjb25kaXRpb25hbD1NRURJQV9TVFJFQU0KIFBlcmZvcm1hbmNlIGNvbmRpdGlvbmFsPVdF
Ql9USU1JTkcKK1JUQ1BlZXJDb25uZWN0aW9uIGNvbmRpdGlvbmFsPU1FRElBX1NUUkVBTQogU2hh
cmVkV29ya2VyIGNvbmRpdGlvbmFsPVNIQVJFRF9XT1JLRVJTCiBTaGFyZWRXb3JrZXJDb250ZXh0
IGNvbmRpdGlvbmFsPVNIQVJFRF9XT1JLRVJTCiBTb3VyY2VCdWZmZXJMaXN0IGNvbmRpdGlvbmFs
PU1FRElBX1NPVVJDRQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDQwY2Q1MjBjMDQxOWRhNDFlMmZhYzIwMDZmOGJlYzkxYzgw
OTY4Y2QuLjBjNTFkYjY2NDExNWY5YWZmMDgzOGNiZGI2Y2YyNTdkODc5MTMxM2IgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMyBAQAorMjAxMi0wNy0yNyAgVG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29v
Z2xlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2UgYSBtaW5pbWFsIFJUQ1BlZXJDb25uZWN0aW9u
IHRvZ2V0aGVyIHdpdGggRGljdGlvbmFyeSBjaGFuZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MjM4MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVj
dGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vUlRD
UGVlckNvbm5lY3Rpb24uaHRtbDogQWRkZWQuCisKIDIwMTItMDctMjYgIE1pa2hhaWwgUG96ZG55
YWtvdiAgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CiAKICAgICAgICAgW0VGTF0gR2Fy
ZGVuaW5nIGFmdGVyIHIxMjM2MzQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFz
dHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9t
ZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmUy
MWE3YWJjNDc0ZWQ5MmQ1NDJlYTEzODRjMmQwMjZlOTg1ODA3OQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMjMgQEAKK1Rlc3RzIHRoZSBSVENQZWVyQ29ubmVjdGlvbiBjb25zdHJ1
Y3Rvci4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgbmV3IHdlYmtpdFJU
Q1BlZXJDb25uZWN0aW9uKG51bGwsIG51bGwpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BB
U1MgbmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKG51bGwpOyBkaWQgbm90IHRocm93IGV4Y2Vw
dGlvbi4KK1BBU1MgbmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKHVuZGVmaW5lZCk7IGRpZCBu
b3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24oe2lj
ZVNlcnZlcnM6W119LCBudWxsKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIG5ldyB3
ZWJraXRSVENQZWVyQ29ubmVjdGlvbih7aWNlU2VydmVyczpbe3VyaTonc3R1bjpmb28uY29tJ31d
fSwgbnVsbCk7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBuZXcgd2Via2l0UlRDUGVl
ckNvbm5lY3Rpb24oe2ljZVNlcnZlcnM6W3t1cmk6J3R1cm46Zm9vLmNvbScsIGNyZWRlbnRpYWw6
J3gnfV19LCBudWxsKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIG5ldyB3ZWJraXRS
VENQZWVyQ29ubmVjdGlvbih7aWNlU2VydmVyczpbe3VyaTondHVybjpmb28uY29tJywgY3JlZGVu
dGlhbDoneCd9LHt1cmk6J3N0dW46YmFyLmNvbSd9XX0sIG51bGwpOyBkaWQgbm90IHRocm93IGV4
Y2VwdGlvbi4KK1BBU1MgbmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKCcnKTsgdGhyZXcgZXhj
ZXB0aW9uIFR5cGVFcnJvcjogTm90IGFuIG9iamVjdC4uCitQQVNTIG5ldyB3ZWJraXRSVENQZWVy
Q29ubmVjdGlvbigpOyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3Vt
ZW50cy4KK1BBU1MgbmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKHtmb29TZXJ2ZXJzOltdfSwg
bnVsbCk7IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNl
cHRpb24gMTcuCitQQVNTIG5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbih7aWNlU2VydmVyczp0
cnVlfSwgbnVsbCk7IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERP
TSBFeGNlcHRpb24gMTcuCitQQVNTIG5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbih7aWNlU2Vy
dmVyczpbMSwgMiwgM119LCBudWxsKTsgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01B
VENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KK1BBU1MgbmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0
aW9uKHtpY2VTZXJ2ZXJzOlt7fV19LCBudWxsKTsgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBF
X01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KK1BBU1MgbmV3IHdlYmtpdFJUQ1BlZXJD
b25uZWN0aW9uKHtpY2VTZXJ2ZXJzOlt7dXJsOidmb28nfV19LCBudWxsKTsgdGhyZXcgZXhjZXB0
aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uY2E5ZDE4ZDI2NGFiMmQ1OTUyNWQ1NDI1N2YyYmVkNWVmNDVjMDY4ZAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaHRt
bApAQCAtMCwwICsxLDI4IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBI
VE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CitkZXNj
cmlwdGlvbigiVGVzdHMgdGhlIFJUQ1BlZXJDb25uZWN0aW9uIGNvbnN0cnVjdG9yLiIpOworCitz
aG91bGROb3RUaHJvdygibmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKG51bGwsIG51bGwpOyIp
Oworc2hvdWxkTm90VGhyb3coIm5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbihudWxsKTsiKTsK
K3Nob3VsZE5vdFRocm93KCJuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24odW5kZWZpbmVkKTsi
KTsKK3Nob3VsZE5vdFRocm93KCJuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24oe2ljZVNlcnZl
cnM6W119LCBudWxsKTsiKTsKK3Nob3VsZE5vdFRocm93KCJuZXcgd2Via2l0UlRDUGVlckNvbm5l
Y3Rpb24oe2ljZVNlcnZlcnM6W3t1cmk6J3N0dW46Zm9vLmNvbSd9XX0sIG51bGwpOyIpOworc2hv
dWxkTm90VGhyb3coIm5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbih7aWNlU2VydmVyczpbe3Vy
aTondHVybjpmb28uY29tJywgY3JlZGVudGlhbDoneCd9XX0sIG51bGwpOyIpOworc2hvdWxkTm90
VGhyb3coIm5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbih7aWNlU2VydmVyczpbe3VyaTondHVy
bjpmb28uY29tJywgY3JlZGVudGlhbDoneCd9LHt1cmk6J3N0dW46YmFyLmNvbSd9XX0sIG51bGwp
OyIpOworCitzaG91bGRUaHJvdygibmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKCcnKTsiKTsK
K3Nob3VsZFRocm93KCJuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24oKTsiKTsKK3Nob3VsZFRo
cm93KCJuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24oe2Zvb1NlcnZlcnM6W119LCBudWxsKTsi
KTsKK3Nob3VsZFRocm93KCJuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24oe2ljZVNlcnZlcnM6
dHJ1ZX0sIG51bGwpOyIpOworc2hvdWxkVGhyb3coIm5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlv
bih7aWNlU2VydmVyczpbMSwgMiwgM119LCBudWxsKTsiKTsKK3Nob3VsZFRocm93KCJuZXcgd2Vi
a2l0UlRDUGVlckNvbm5lY3Rpb24oe2ljZVNlcnZlcnM6W3t9XX0sIG51bGwpOyIpOworc2hvdWxk
VGhyb3coIm5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbih7aWNlU2VydmVyczpbe3VybDonZm9v
J31dfSwgbnVsbCk7Iik7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154939</attachid>
            <date>2012-07-27 07:16:37 -0700</date>
            <delta_ts>2012-07-30 04:48:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92380-20120727161624.patch</filename>
            <type>text/plain</type>
            <size>31112</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzNzMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTUyZGMyNzE4ZjA0MzFl
NTc3Y2M3M2U4YzMwM2Y5N2Y4ZDc1NTI1My4uNmUwNzljZTI1NDVhYzIxOTBkNzVlYmRiNTI3Mjc0
OTQ5NDEwZGU1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDEyLTA3LTI3ICBUb21t
eSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIEludHJvZHVjZSBh
IG1pbmltYWwgUlRDUGVlckNvbm5lY3Rpb24gdG9nZXRoZXIgd2l0aCBEaWN0aW9uYXJ5IGNoYW5n
ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkyMzgw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBpbnRyb2R1Y2VzIGEgc2hlbGwgUlRDUGVlckNvbm5lY3Rpb24gdG9nZXRoZXIgd2l0aCBu
ZWNjZWNhcnkgY2hhbmdlcyB0bworICAgICAgICBEaWN0aW9uYXJ5LgorCisgICAgICAgIFRoZSBX
M0Mgc3BlY2lmaWNhdGlvbiBjYW4gYmUgZm91bmQgaGVyZToKKyAgICAgICAgaHR0cDovL2Rldi53
My5vcmcvMjAxMS93ZWJydGMvZWRpdG9yL3dlYnJ0Yy5odG1sI3J0Y3BlZXJjb25uZWN0aW9uCisK
KyAgICAgICAgU2luY2UgRGljdGlvbmFyaWVzIGNhbid0IGJlIGZ1bGx5IGNvcGllZCBhcm91bmQg
YWRkaW5nCisgICAgICAgIGdldChjb25zdCBTdHJpbmcmIG5hbWUsIFZlY3RvcjxEaWN0aW9uYXJ5
PiYgcmVzdWx0KQorICAgICAgICBpc24ndCBmZWFzaWJsZSBzbyBJIGhhdmUgYWRkZWQgYSBuZXcg
QXJyYXlWYWx1ZSBjbGFzcy4KKworICAgICAgICBUZXN0OiBmYXN0L21lZGlhc3RyZWFtL1JUQ1Bl
ZXJDb25uZWN0aW9uLmh0bWwKKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vRE9NV2lu
ZG93TWVkaWFTdHJlYW0uaWRsOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVl
ckNvbm5lY3Rpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUlRD
SWNlU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0ljZVNlcnZlcjo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJUQ0ljZVNlcnZlcjo6flJUQ0ljZVNlcnZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpSVENJY2VTZXJ2ZXI6OnVyaSk6CisgICAgICAgIChXZWJDb3JlOjpSVENJY2VTZXJ2
ZXI6OnBhc3N3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0ljZVNlcnZlcjo6UlRDSWNlU2Vy
dmVyKToKKyAgICAgICAgKFJUQ0NvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UlRD
Q29uZmlndXJhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0NvbmZpZ3VyYXRp
b246On5SVENDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0NvbmZpZ3VyYXRp
b246OmFwcGVuZFNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpSVENDb25maWd1cmF0aW9uOjpu
dW1iZXJPZlNlcnZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6UlRDQ29uZmlndXJhdGlvbjo6c2Vy
dmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0NvbmZpZ3VyYXRpb246OlJUQ0NvbmZpZ3VyYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb246OnBhcnNlQ29uZmlndXJh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjpSVENQZWVyQ29ubmVjdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6flJUQ1BlZXJDb25uZWN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjppbnRlcmZhY2VOYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjpzdG9wKToKKyAgICAgICAg
KFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjpldmVudFRhcmdldERhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb246OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSk6CisgICAg
ICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUlRDUGVlckNvbm5lY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb246OnJlZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjpkZXJlZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmlkbDogQWRkZWQuCisgICAgICAg
ICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIGJpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJs
ZWRGZWF0dXJlcy5oOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6
d2Via2l0UlRDUGVlckNvbm5lY3Rpb25FbmFibGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9B
cnJheVZhbHVlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OkFycmF5VmFsdWU6OkFycmF5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXJyYXlWYWx1
ZTo6fkFycmF5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXJyYXlWYWx1ZTo6b3BlcmF0b3I9
KToKKyAgICAgICAgKFdlYkNvcmU6OkFycmF5VmFsdWU6OmlzQXJyYXlWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpBcnJheVZhbHVlOjppc1VuZGVmaW5lZE9yTnVsbCk6CisgICAgICAgIChXZWJD
b3JlOjpBcnJheVZhbHVlOjpsZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6QXJyYXlWYWx1ZTo6
Z2V0KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9BcnJheVZhbHVlLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChBcnJheVZhbHVlKToKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9EaWN0aW9uYXJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpY3Rpb25hcnk6OmdldCk6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9EaWN0aW9uYXJ5Lmg6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKERpY3Rpb25hcnkpOgorICAgICAgICAqIGRvbS9F
dmVudFRhcmdldEZhY3RvcnkuaW46CisKIDIwMTItMDctMjYgIEVyaWMgU2VpZGVsICA8ZXJpY0B3
ZWJraXQub3JnPgogCiAgICAgICAgIDIlIG9mIGFsbCBzYW1wbGVzIHJ1bm5pbmcgZ3JpZCBkZW1v
IHNob3cgdXAgaW4gU3R5bGVSZXNvbHZlcjo6Y2FuU2hhcmVTdHlsZVdpdGhFbGVtZW50LCAyMCUg
b2YgdGhvc2UgZHVlIHRvIGdldEF0dHJpYnV0ZSBpbnN0ZWFkIG9mIGZhc3RHZXRBdHRyaWJ1dGUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vRE9NV2luZG93
TWVkaWFTdHJlYW0uaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9ET01X
aW5kb3dNZWRpYVN0cmVhbS5pZGwKaW5kZXggNzQyYTYyNDYzMmU2OWMwNmYwMmYwMjUyNDEyYmJh
MjczYjJhZjVhNS4uZWE5NDZhNDk2NmJlOGJiYmY0OGEzYWMwYTUyNmViNTQwNzY1MWQ0ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9ET01XaW5kb3dNZWRp
YVN0cmVhbS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9ET01X
aW5kb3dNZWRpYVN0cmVhbS5pZGwKQEAgLTMyLDYgKzMyLDcgQEAgbW9kdWxlIHdpbmRvdyB7CiAg
ICAgXSBET01XaW5kb3dNZWRpYVN0cmVhbSB7CiAgICAgICAgIGF0dHJpYnV0ZSBbVjhFbmFibGVk
QXRSdW50aW1lXSBNZWRpYVN0cmVhbUNvbnN0cnVjdG9yIHdlYmtpdE1lZGlhU3RyZWFtOwogICAg
ICAgICBhdHRyaWJ1dGUgW1Y4RW5hYmxlZEF0UnVudGltZV0gUGVlckNvbm5lY3Rpb24wMENvbnN0
cnVjdG9yIHdlYmtpdFBlZXJDb25uZWN0aW9uMDA7CisgICAgICAgIGF0dHJpYnV0ZSBbVjhFbmFi
bGVkQXRSdW50aW1lXSBSVENQZWVyQ29ubmVjdGlvbkNvbnN0cnVjdG9yIHdlYmtpdFJUQ1BlZXJD
b25uZWN0aW9uOwogICAgICAgICBhdHRyaWJ1dGUgU2Vzc2lvbkRlc2NyaXB0aW9uQ29uc3RydWN0
b3IgU2Vzc2lvbkRlc2NyaXB0aW9uOwogICAgICAgICBhdHRyaWJ1dGUgSWNlQ2FuZGlkYXRlQ29u
c3RydWN0b3IgSWNlQ2FuZGlkYXRlOwogICAgICAgICBhdHRyaWJ1dGUgTWVkaWFTdHJlYW1FdmVu
dENvbnN0cnVjdG9yIE1lZGlhU3RyZWFtRXZlbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljc3MGE0ODA4ZjFkNjQ4NDE5OTc5ODA0NWM5YTgwNTk1OGE3NTczZjcKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9u
LmNwcApAQCAtMCwwICsxLDE3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1
dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJSVENQZWVyQ29ubmVjdGlvbi5oIgor
CisjaW5jbHVkZSAiQXJyYXlWYWx1ZS5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNp
bmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIEZJWE1FOiBSVENJY2VTZXJ2ZXIgYW5kIFJUQ0NvbmZp
Z3JhdGlvbiBhcmUgcGxhY2VkIGhlcmUgdGVtcG9yYXJpbHkuCisvLyBUaGVpciBmaW5hbCBwbGFj
ZSBpcyBpbiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS4KK2NsYXNzIFJUQ0lj
ZVNlcnZlciA6IHB1YmxpYyBSZWZDb3VudGVkPFJUQ0ljZVNlcnZlcj4geworcHVibGljOgorICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFJUQ0ljZVNlcnZlcj4gY3JlYXRlKGNvbnN0IEtVUkwmIHVyaSwg
Y29uc3QgU3RyaW5nJiBjcmVkZW50aWFsKSB7IHJldHVybiBhZG9wdFJlZihuZXcgUlRDSWNlU2Vy
dmVyKHVyaSwgY3JlZGVudGlhbCkpOyB9CisgICAgdmlydHVhbCB+UlRDSWNlU2VydmVyKCkgeyB9
CisKKyAgICBjb25zdCBLVVJMJiB1cmkoKSB7IHJldHVybiBtX3VyaTsgfQorICAgIGNvbnN0IFN0
cmluZyYgY3JlZGVudGlhbCgpIHsgcmV0dXJuIG1fY3JlZGVudGlhbDsgfQorCitwcml2YXRlOgor
ICAgIFJUQ0ljZVNlcnZlcihjb25zdCBLVVJMJiB1cmksIGNvbnN0IFN0cmluZyYgY3JlZGVudGlh
bCkKKyAgICAgICAgOiBtX3VyaSh1cmkpCisgICAgICAgICwgbV9jcmVkZW50aWFsKGNyZWRlbnRp
YWwpCisgICAgeworICAgIH0KKworICAgIEtVUkwgbV91cmk7CisgICAgU3RyaW5nIG1fY3JlZGVu
dGlhbDsKK307CisKK2NsYXNzIFJUQ0NvbmZpZ3VyYXRpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxS
VENDb25maWd1cmF0aW9uPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8UlRDQ29u
ZmlndXJhdGlvbj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFJUQ0NvbmZpZ3VyYXRp
b24oKSk7IH0KKyAgICB2aXJ0dWFsIH5SVENDb25maWd1cmF0aW9uKCkgeyB9CisKKyAgICB2b2lk
IGFwcGVuZFNlcnZlcihQYXNzUmVmUHRyPFJUQ0ljZVNlcnZlcj4gc2VydmVyKSB7IG1fc2VydmVy
cy5hcHBlbmQoc2VydmVyKTsgfQorICAgIHNpemVfdCBudW1iZXJPZlNlcnZlcnMoKSB7IHJldHVy
biBtX3NlcnZlcnMuc2l6ZSgpOyB9CisgICAgUlRDSWNlU2VydmVyKiBzZXJ2ZXIoc2l6ZV90IGlu
ZGV4KSB7IHJldHVybiBtX3NlcnZlcnNbaW5kZXhdLmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAg
UlRDQ29uZmlndXJhdGlvbigpIHsgfQorCisgICAgVmVjdG9yPFJlZlB0cjxSVENJY2VTZXJ2ZXI+
ID4gbV9zZXJ2ZXJzOworfTsKKworUGFzc1JlZlB0cjxSVENDb25maWd1cmF0aW9uPiBSVENQZWVy
Q29ubmVjdGlvbjo6cGFyc2VDb25maWd1cmF0aW9uKGNvbnN0IERpY3Rpb25hcnkmIGNvbmZpZ3Vy
YXRpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmIChjb25maWd1cmF0aW9uLmlzVW5k
ZWZpbmVkT3JOdWxsKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgQXJyYXlWYWx1ZSBpY2VT
ZXJ2ZXJzOworICAgIGJvb2wgb2sgPSBjb25maWd1cmF0aW9uLmdldCgiaWNlU2VydmVycyIsIGlj
ZVNlcnZlcnMpOworICAgIGlmICghb2spIHsKKyAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VS
UjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgc2l6ZV90IG51bWJlck9mU2VydmVy
czsKKyAgICBvayA9IGljZVNlcnZlcnMubGVuZ3RoKG51bWJlck9mU2VydmVycyk7CisgICAgaWYg
KCFvaykgeworICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOworICAgICAgICByZXR1cm4g
MDsKKyAgICB9CisKKyAgICBSZWZQdHI8UlRDQ29uZmlndXJhdGlvbj4gcnRjQ29uZmlndXJhdGlv
biA9IFJUQ0NvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBudW1iZXJPZlNlcnZlcnM7ICsraSkgeworICAgICAgICBEaWN0aW9uYXJ5IGljZVNlcnZl
cjsKKyAgICAgICAgb2sgPSBpY2VTZXJ2ZXJzLmdldChpLCBpY2VTZXJ2ZXIpOworICAgICAgICBp
ZiAoIW9rKSB7CisgICAgICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOworICAgICAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgIH0KKworICAgICAgICBTdHJpbmcgdXJpLCBjcmVkZW50aWFs
OworICAgICAgICBvayA9IGljZVNlcnZlci5nZXQoInVyaSIsIHVyaSk7CisgICAgICAgIGlmICgh
b2spIHsKKyAgICAgICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CisgICAgICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBLVVJMIHVybChLVVJMKCksIHVyaSk7CisgICAg
ICAgIGlmICghdXJsLmlzVmFsaWQoKSB8fCAhKHVybC5wcm90b2NvbElzKCJ0dXJuIikgfHwgdXJs
LnByb3RvY29sSXMoInN0dW4iKSkpIHsKKyAgICAgICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9F
UlI7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorCisgICAgICAgIGljZVNlcnZl
ci5nZXQoImNyZWRlbnRpYWwiLCBjcmVkZW50aWFsKTsKKworICAgICAgICBydGNDb25maWd1cmF0
aW9uLT5hcHBlbmRTZXJ2ZXIoUlRDSWNlU2VydmVyOjpjcmVhdGUodXJsLCBjcmVkZW50aWFsKSk7
CisgICAgfQorICAgIHJldHVybiBydGNDb25maWd1cmF0aW9uLnJlbGVhc2UoKTsKK30KKworUGFz
c1JlZlB0cjxSVENQZWVyQ29ubmVjdGlvbj4gUlRDUGVlckNvbm5lY3Rpb246OmNyZWF0ZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBEaWN0aW9uYXJ5JiBydGNDb25maWd1
cmF0aW9uLCBjb25zdCBEaWN0aW9uYXJ5JiwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgUmVm
UHRyPFJUQ0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBwYXJzZUNvbmZpZ3VyYXRpb24o
cnRjQ29uZmlndXJhdGlvbiwgZWMpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7CisK
KyAgICBSZWZQdHI8UlRDUGVlckNvbm5lY3Rpb24+IHBlZXJDb25uZWN0aW9uID0gYWRvcHRSZWYo
bmV3IFJUQ1BlZXJDb25uZWN0aW9uKGNvbnRleHQsIGNvbmZpZ3VyYXRpb24ucmVsZWFzZSgpLCBl
YykpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBwZWVyQ29ubmVjdGlv
bi0+c3VzcGVuZElmTmVlZGVkKCk7CisgICAgcmV0dXJuIHBlZXJDb25uZWN0aW9uLnJlbGVhc2Uo
KTsKK30KKworUlRDUGVlckNvbm5lY3Rpb246OlJUQ1BlZXJDb25uZWN0aW9uKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8UlRDQ29uZmlndXJhdGlvbj4sIEV4Y2Vw
dGlvbkNvZGUmIGVjKQorICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQsIHRoaXMpCit7Cit9
CisKK1JUQ1BlZXJDb25uZWN0aW9uOjp+UlRDUGVlckNvbm5lY3Rpb24oKQoreworfQorCitjb25z
dCBBdG9taWNTdHJpbmcmIFJUQ1BlZXJDb25uZWN0aW9uOjppbnRlcmZhY2VOYW1lKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvclJUQ1BlZXJDb25uZWN0aW9u
OworfQorCitTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBSVENQZWVyQ29ubmVjdGlvbjo6c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworfQorCit2b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjpz
dG9wKCkKK3sKKyAgICAvLyBGSVhNRTogTWFrZSBzdXJlIHRoYXQgdGhpcyBvYmplY3Qgc3RvcHMg
cG9zdGluZyBldmVudHMgYW5kIHJlbGVhc2VzIHJlc291cmNlcyBhdCB0aGlzIHN0YWdlLgorfQor
CitFdmVudFRhcmdldERhdGEqIFJUQ1BlZXJDb25uZWN0aW9uOjpldmVudFRhcmdldERhdGEoKQor
eworICAgIHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7Cit9CisKK0V2ZW50VGFyZ2V0RGF0YSog
UlRDUGVlckNvbm5lY3Rpb246OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpCit7CisgICAgcmV0dXJu
ICZtX2V2ZW50VGFyZ2V0RGF0YTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hN2YyOGQx
NTAwYzMwMWUwOWFhM2EwYjEwOTA4M2MzNDcxYmExMGQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oCkBAIC0w
LDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogICAgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKKyAqICAg
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20g
dGhpcworICogICAgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFJUQ1BlZXJDb25uZWN0aW9uX2gKKyNkZWZpbmUg
UlRDUGVlckNvbm5lY3Rpb25faAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1
ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkRpY3Rpb25hcnkuaCIKKyNpbmNsdWRl
ICJFdmVudFRhcmdldC5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkJhc2UuaCIKKyNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBSVENDb25maWd1
cmF0aW9uOworCitjbGFzcyBSVENQZWVyQ29ubmVjdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPFJU
Q1BlZXJDb25uZWN0aW9uPiwgcHVibGljIEV2ZW50VGFyZ2V0LCBwdWJsaWMgQWN0aXZlRE9NT2Jq
ZWN0IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxSVENQZWVyQ29ubmVjdGlvbj4g
Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBEaWN0aW9uYXJ5JiBydGNDb25m
aWd1cmF0aW9uLCBjb25zdCBEaWN0aW9uYXJ5JiBtZWRpYUNvbnN0cmFpbnRzLCBFeGNlcHRpb25D
b2RlJik7CisgICAgflJUQ1BlZXJDb25uZWN0aW9uKCk7CisKKyAgICAvLyBFdmVudFRhcmdldAor
ICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3QgT1ZF
UlJJREU7CisgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkgY29uc3QgT1ZFUlJJREU7CisKKyAgICAvLyBBY3RpdmVET01PYmplY3QKKyAg
ICB2aXJ0dWFsIHZvaWQgc3RvcCgpIE9WRVJSSURFOworCisgICAgdXNpbmcgUmVmQ291bnRlZDxS
VENQZWVyQ29ubmVjdGlvbj46OnJlZjsKKyAgICB1c2luZyBSZWZDb3VudGVkPFJUQ1BlZXJDb25u
ZWN0aW9uPjo6ZGVyZWY7CisKK3ByaXZhdGU6CisgICAgUlRDUGVlckNvbm5lY3Rpb24oU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8UlRDQ29uZmlndXJhdGlvbj4sIEV4Y2VwdGlv
bkNvZGUmKTsKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJUQ0NvbmZpZ3VyYXRpb24+IHBhcnNl
Q29uZmlndXJhdGlvbihjb25zdCBEaWN0aW9uYXJ5JiBjb25maWd1cmF0aW9uLCBFeGNlcHRpb25D
b2RlJik7CisKKyAgICAvLyBFdmVudFRhcmdldCBpbXBsZW1lbnRhdGlvbi4KKyAgICB2aXJ0dWFs
IEV2ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJnZXREYXRhKCk7CisgICAgdmlydHVhbCBFdmVudFRh
cmdldERhdGEqIGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpOworICAgIHZpcnR1YWwgdm9pZCByZWZF
dmVudFRhcmdldCgpIHsgcmVmKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdl
dCgpIHsgZGVyZWYoKTsgfQorICAgIEV2ZW50VGFyZ2V0RGF0YSBtX2V2ZW50VGFyZ2V0RGF0YTsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9T
VFJFQU0pCisKKyNlbmRpZiAvLyBSVENQZWVyQ29ubmVjdGlvbl9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaWRsCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjQ0YWQ3MjM1YmU0YTM4MzdlNTA4MDBiMDlkY2FkZjkzNGIyNGM4NTUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJD
b25uZWN0aW9uLmlkbApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyAqICAgIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAq
IDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMg
Y29udHJpYnV0b3JzCisgKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMKKyAqICAgIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxlIG1lZGlhc3RyZWFt
IHsKKworICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPU1FRElBX1NUUkVBTSwK
KyAgICAgICAgQWN0aXZlRE9NT2JqZWN0LAorICAgICAgICBDb25zdHJ1Y3RvcihpbiBEaWN0aW9u
YXJ5IHJ0Y0lDRVNlcnZlcnMsIGluIFtPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIERpY3Rp
b25hcnkgbWVkaWFDb25zdHJhaW50cyksCisgICAgICAgIENvbnN0cnVjdG9yUmFpc2VzRXhjZXB0
aW9uLAorICAgICAgICBDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LAorICAgICAgICBF
dmVudFRhcmdldAorICAgIF0gUlRDUGVlckNvbm5lY3Rpb24geworICAgICAgICAvLyBFdmVudFRh
cmdldCBpbnRlcmZhY2UKKyAgICAgICAgdm9pZCBhZGRFdmVudExpc3RlbmVyKGluIERPTVN0cmlu
ZyB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBs
aXN0ZW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25hbF0gYm9v
bGVhbiB1c2VDYXB0dXJlKTsKKyAgICAgICAgdm9pZCByZW1vdmVFdmVudExpc3RlbmVyKGluIERP
TVN0cmluZyB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRM
aXN0ZW5lciBsaXN0ZW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtP
cHRpb25hbF0gYm9vbGVhbiB1c2VDYXB0dXJlKTsKKyAgICAgICAgYm9vbGVhbiBkaXNwYXRjaEV2
ZW50KGluIEV2ZW50IGV2ZW50KQorICAgICAgICAgICAgcmFpc2VzKEV2ZW50RXhjZXB0aW9uKTsK
KyAgICB9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggNzVlNTQxYjc4YjMyYmQ0YWY3NThhYzAx
NGYyMmI4MDA5Y2Q1ZDc0YS4uZWY2ZGExZDQ3NzBmMDhmY2I0MzI3MzM4ZWY5ZGMzNDExMmMzMzhl
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtODQwLDYgKzg0MCw3IEBACiAgICAgICAgICAgICAnTW9k
dWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrLmlkbCcsCiAg
ICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNz
Q2FsbGJhY2suaWRsJywKICAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25u
ZWN0aW9uMDAuaWRsJywKKyAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJD
b25uZWN0aW9uLmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9TZXNzaW9u
RGVzY3JpcHRpb24uaWRsJywKICAgICAgICAgICAgICdNb2R1bGVzL25vdGlmaWNhdGlvbnMvRE9N
V2luZG93Tm90aWZpY2F0aW9ucy5pZGwnLAogICAgICAgICAgICAgJ01vZHVsZXMvbm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb24uaWRsJywKQEAgLTE1NjYsNiArMTU2Nyw4IEBACiAgICAgICAgICAg
ICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2su
aCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbjAwLmNw
cCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbjAwLmgn
LAorICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3Bw
JywKKyAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmgn
LAogICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vU2Vzc2lvbkRlc2NyaXB0aW9uLmNw
cCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9TZXNzaW9uRGVzY3JpcHRpb24u
aCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDbGllbnQuaCcs
CkBAIC0yMTUwLDYgKzIxNTMsOCBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL29iamMvT2JqQ05v
ZGVGaWx0ZXJDb25kaXRpb24ubW0nLAogICAgICAgICAgICAgJ2JpbmRpbmdzL29iamMvUHVibGlj
RE9NSW50ZXJmYWNlcy5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy9vYmpjL1dlYlNjcmlwdE9i
amVjdC5tbScsCisgICAgICAgICAgICAnYmluZGluZ3MvdjgvQXJyYXlWYWx1ZS5jcHAnLAorICAg
ICAgICAgICAgJ2JpbmRpbmdzL3Y4L0FycmF5VmFsdWUuaCcsCiAgICAgICAgICAgICAnYmluZGlu
Z3MvdjgvRE9NRGF0YS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L0RPTURhdGEuaCcs
CiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmNwcCcsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMu
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJl
cy5oCmluZGV4IDQwMjIwMjRmNDMwMjIyNzk1ZjAyODFmY2RiNzU2ZjQ0NDRlN2YwOWYuLmQ2YTkz
YTdhZDA0Mzg1MzQ3OTE3OWYxNTdiMDNmNmVlMzIxZDYyMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oCkBA
IC0xODgsNiArMTg4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIHBlZXJDb25uZWN0aW9u
RW5hYmxlZCgpIHsgcmV0dXJuIGlzTWVkaWFTdHJlYW1FbmFibGVkICYmIGlzUGVlckNvbm5lY3Rp
b25FbmFibGVkOyB9CiAgICAgc3RhdGljIHZvaWQgc2V0UGVlckNvbm5lY3Rpb25FbmFibGVkKGJv
b2wgaXNFbmFibGVkKSB7IGlzUGVlckNvbm5lY3Rpb25FbmFibGVkID0gaXNFbmFibGVkOyB9CiAg
ICAgc3RhdGljIGJvb2wgd2Via2l0UGVlckNvbm5lY3Rpb24wMEVuYWJsZWQoKSB7IHJldHVybiBw
ZWVyQ29ubmVjdGlvbkVuYWJsZWQoKTsgfQorICAgIHN0YXRpYyBib29sIHdlYmtpdFJUQ1BlZXJD
b25uZWN0aW9uRW5hYmxlZCgpIHsgcmV0dXJuIHBlZXJDb25uZWN0aW9uRW5hYmxlZCgpOyB9CiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShHQU1FUEFEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvQXJyYXlWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9B
cnJheVZhbHVlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MjA0MTg1OGM5ZTc4ZTY4ZmQ2MmM3ZTU1MDdlOTJm
Y2E3NjgwNDE4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
QXJyYXlWYWx1ZS5jcHAKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJBcnJheVZhbHVlLmgiCisKKyNpbmNsdWRlICJEaWN0aW9uYXJ5LmgiCisj
aW5jbHVkZSAiVjhCaW5kaW5nLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQXJyYXlWYWx1
ZSYgQXJyYXlWYWx1ZTo6b3BlcmF0b3I9KGNvbnN0IEFycmF5VmFsdWUmIG90aGVyKQoreworICAg
IG1fYXJyYXkgPSBvdGhlci5tX2FycmF5OworICAgIHJldHVybiAqdGhpczsKK30KKworYm9vbCBB
cnJheVZhbHVlOjppc1VuZGVmaW5lZE9yTnVsbCgpIGNvbnN0Cit7CisgICAgaWYgKG1fYXJyYXku
SXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gV2ViQ29yZTo6aXNV
bmRlZmluZWRPck51bGwobV9hcnJheSk7Cit9CisKK2Jvb2wgQXJyYXlWYWx1ZTo6bGVuZ3RoKHNp
emVfdCYgbGVuZ3RoKSBjb25zdAoreworICAgIGlmIChpc1VuZGVmaW5lZE9yTnVsbCgpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBsZW5ndGggPSBtX2FycmF5LT5MZW5ndGgoKTsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBBcnJheVZhbHVlOjpnZXQoc2l6ZV90IGluZGV4LCBE
aWN0aW9uYXJ5JiB2YWx1ZSkgY29uc3QKK3sKKyAgICBpZiAoaXNVbmRlZmluZWRPck51bGwoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGluZGV4ID49IG1fYXJyYXktPkxlbmd0
aCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBp
bmRleGVkVmFsdWUgPSBtX2FycmF5LT5HZXQodjhVbnNpZ25lZEludGVnZXIoaW5kZXgpKTsKKyAg
ICBpZiAoaW5kZXhlZFZhbHVlLklzRW1wdHkoKSB8fCAhaW5kZXhlZFZhbHVlLT5Jc09iamVjdCgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICB2YWx1ZSA9IERpY3Rpb25hcnkoaW5kZXhl
ZFZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvQXJyYXlWYWx1ZS5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvQXJyYXlWYWx1ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk4MjNhNmY2
ZDM1NjkyODNhNTQ4NjJmNzczMDk3ZDI4NzFhODcyNjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9BcnJheVZhbHVlLmgKQEAgLTAsMCArMSw1OSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisg
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgQXJyYXlWYWx1ZV9oCisjZGVmaW5lIEFycmF5VmFsdWVfaAorCisjaW5jbHVk
ZSA8djguaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBEaWN0aW9uYXJ5OworCitj
bGFzcyBBcnJheVZhbHVlIHsKK3B1YmxpYzoKKyAgICBBcnJheVZhbHVlKCkgeyB9CisgICAgQXJy
YXlWYWx1ZShjb25zdCB2ODo6TG9jYWw8djg6OkFycmF5PiYgYXJyYXkpIDogbV9hcnJheShhcnJh
eSkgeyB9CisgICAgfkFycmF5VmFsdWUoKSB7IH0KKworICAgIEFycmF5VmFsdWUmIG9wZXJhdG9y
PShjb25zdCBBcnJheVZhbHVlJik7CisKKyAgICBib29sIGlzVW5kZWZpbmVkT3JOdWxsKCkgY29u
c3Q7CisKKyAgICBib29sIGxlbmd0aChzaXplX3QmKSBjb25zdDsKKyAgICBib29sIGdldChzaXpl
X3QgaW5kZXgsIERpY3Rpb25hcnkmKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICAvLyBUaGlzIG9i
amVjdCBjYW4gb25seSBiZSB1c2VkIHNhZmVseSB3aGVuIHN0YWNrIGFsbG9jYXRlZCBiZWNhdXNl
IG9mIHY4OjpMb2NhbC4KKyAgICBzdGF0aWMgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCk7Cisg
ICAgc3RhdGljIHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCk7CisgICAgc3RhdGljIHZvaWQg
b3BlcmF0b3IgZGVsZXRlKHZvaWQgKik7CisKKyAgICB2ODo6TG9jYWw8djg6OkFycmF5PiBtX2Fy
cmF5OworfTsKKworfQorCisjZW5kaWYgLy8gQXJyYXlWYWx1ZV9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9EaWN0aW9uYXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L0RpY3Rpb25hcnkuY3BwCmluZGV4IDdkNjkyZTc4ZTQwNzUyY2JlZWZkZWNiYWEx
ODA0ZDdjMTI2MTRmYzkuLjZjZjU2NzkxZWUxYjQ1NTY1NTVhZjk4YjFkZjE0MzQ2ZDJhZjUzYzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RpY3Rpb25hcnkuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RpY3Rpb25hcnkuY3BwCkBAIC0yNiw2ICsy
Niw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRGljdGlvbmFyeS5oIgogCisj
aW5jbHVkZSAiQXJyYXlWYWx1ZS5oIgogI2luY2x1ZGUgIkRPTVN0cmluZ0xpc3QuaCIKICNpbmNs
dWRlICJWOEJpbmRpbmcuaCIKICNpbmNsdWRlICJWOERPTVdpbmRvdy5oIgpAQCAtNDQyLDYgKzQ0
MywxOSBAQCBib29sIERpY3Rpb25hcnk6OmdldChjb25zdCBTdHJpbmcmIGtleSwgVmVjdG9yPFN0
cmluZz4mIHZhbHVlKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCitib29sIERpY3Rpb25h
cnk6OmdldChjb25zdCBTdHJpbmcmIGtleSwgQXJyYXlWYWx1ZSYgdmFsdWUpIGNvbnN0Cit7Cisg
ICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdjhWYWx1ZTsKKyAgICBpZiAoIWdldEtleShrZXksIHY4
VmFsdWUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIXY4VmFsdWUtPklzQXJy
YXkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgdmFsdWUgPSBBcnJheVZhbHVlKHY4
OjpMb2NhbDx2ODo6QXJyYXk+OjpDYXN0KHY4VmFsdWUpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KwogYm9vbCBEaWN0aW9uYXJ5OjpnZXRPd25Qcm9wZXJ0aWVzQXNTdHJpbmdIYXNoTWFwKFdURjo6
SGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIGhhc2hNYXApIGNvbnN0CiB7CiAgICAgaWYgKCFpc09i
amVjdCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGljdGlvbmFy
eS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGljdGlvbmFyeS5oCmluZGV4IGYxNTNl
YTljODI5ODQ4MDgwZjJmNWU2ODViY2M2YTc3MzQzZjU0YWUuLjE5MmIzMWY3MmQ0MDJjMTMxMGU1
ZmNhY2RmMWI3ZDFhZWI0NDU5OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L0RpY3Rpb25hcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9EaWN0aW9u
YXJ5LmgKQEAgLTM4LDYgKzM4LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBB
cnJheVZhbHVlOwogY2xhc3MgRE9NV2luZG93OwogY2xhc3MgSURCS2V5UmFuZ2U7CiBjbGFzcyBN
ZWRpYUtleUVycm9yOwpAQCAtODYsNiArODcsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBnZXQoY29u
c3QgU3RyaW5nJiwgSGFzaFNldDxBdG9taWNTdHJpbmc+JikgY29uc3Q7CiAgICAgYm9vbCBnZXQo
Y29uc3QgU3RyaW5nJiwgRGljdGlvbmFyeSYpIGNvbnN0OwogICAgIGJvb2wgZ2V0KGNvbnN0IFN0
cmluZyYsIFZlY3RvcjxTdHJpbmc+JikgY29uc3Q7CisgICAgYm9vbCBnZXQoY29uc3QgU3RyaW5n
JiwgQXJyYXlWYWx1ZSYpIGNvbnN0OworCiAgICAgYm9vbCBnZXRPd25Qcm9wZXJ0aWVzQXNTdHJp
bmdIYXNoTWFwKFdURjo6SGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mKSBjb25zdDsKIAogICAgIGJv
b2wgZ2V0V2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrKGNvbnN0IFN0cmluZyYsIFN0cmluZyYpIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5p
biBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KaW5kZXggZmY2MGFh
ZDRkYjU5ZjljZmU3Zjk4YTFhZGM5NWY3ZDkxMWMwYWMzMi4uNDRlOGQ4ZTg1YWY1MGNiNDVhMDRh
ODI3MGMyNGQwNTUzNDBjMzIwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
VGFyZ2V0RmFjdG9yeS5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0
b3J5LmluCkBAIC0yNCw2ICsyNCw3IEBAIE5vZGUKIE5vdGlmaWNhdGlvbiBjb25kaXRpb25hbD1O
T1RJRklDQVRJT05TfExFR0FDWV9OT1RJRklDQVRJT05TCiBQZWVyQ29ubmVjdGlvbjAwIGNvbmRp
dGlvbmFsPU1FRElBX1NUUkVBTQogUGVyZm9ybWFuY2UgY29uZGl0aW9uYWw9V0VCX1RJTUlORwor
UlRDUGVlckNvbm5lY3Rpb24gY29uZGl0aW9uYWw9TUVESUFfU1RSRUFNCiBTaGFyZWRXb3JrZXIg
Y29uZGl0aW9uYWw9U0hBUkVEX1dPUktFUlMKIFNoYXJlZFdvcmtlckNvbnRleHQgY29uZGl0aW9u
YWw9U0hBUkVEX1dPUktFUlMKIFNvdXJjZUJ1ZmZlckxpc3QgY29uZGl0aW9uYWw9TUVESUFfU09V
UkNFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggNDBjZDUyMGMwNDE5ZGE0MWUyZmFjMjAwNmY4YmVjOTFjODA5NjhjZC4uMGM1
MWRiNjY0MTE1ZjlhZmYwODM4Y2JkYjZjZjI1N2Q4NzkxMzEzYiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEz
IEBACisyMDEyLTA3LTI3ICBUb21teSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgor
CisgICAgICAgIEludHJvZHVjZSBhIG1pbmltYWwgUlRDUGVlckNvbm5lY3Rpb24gdG9nZXRoZXIg
d2l0aCBEaWN0aW9uYXJ5IGNoYW5nZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTkyMzgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVj
dGlvbi5odG1sOiBBZGRlZC4KKwogMjAxMi0wNy0yNiAgTWlraGFpbCBQb3pkbnlha292ICA8bWlr
aGFpbC5wb3pkbnlha292QGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXSBHYXJkZW5pbmcgYWZ0
ZXIgcjEyMzYzNApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9SVENQ
ZWVyQ29ubmVjdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFt
L1JUQ1BlZXJDb25uZWN0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZjFiYmI1NTRlYWZl
M2UwYmNiYzdkMWY0YjI0ZDc1ZTg5YjQyNTFjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwyNSBAQAorVGVzdHMgdGhlIFJUQ1BlZXJDb25uZWN0aW9uIGNvbnN0cnVjdG9yLgorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBuZXcgd2Via2l0UlRDUGVlckNvbm5l
Y3Rpb24obnVsbCk7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBuZXcgd2Via2l0UlRD
UGVlckNvbm5lY3Rpb24obnVsbCwgbnVsbCk7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFT
UyBuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24odW5kZWZpbmVkKTsgZGlkIG5vdCB0aHJvdyBl
eGNlcHRpb24uCitQQVNTIG5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbih1bmRlZmluZWQsIHVu
ZGVmaW5lZCk7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBuZXcgd2Via2l0UlRDUGVl
ckNvbm5lY3Rpb24oe2ljZVNlcnZlcnM6W119LCBudWxsKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRp
b24uCitQQVNTIG5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbih7aWNlU2VydmVyczpbe3VyaTon
c3R1bjpmb28uY29tJ31dfSwgbnVsbCk7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBu
ZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24oe2ljZVNlcnZlcnM6W3t1cmk6J3R1cm46Zm9vLmNv
bScsIGNyZWRlbnRpYWw6J3gnfV19LCBudWxsKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQ
QVNTIG5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbih7aWNlU2VydmVyczpbe3VyaTondHVybjpm
b28uY29tJywgY3JlZGVudGlhbDoneCd9LHt1cmk6J3N0dW46YmFyLmNvbSd9XX0sIG51bGwpOyBk
aWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgbmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9u
KCk7IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgorUEFT
UyBuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24oJycpOyB0aHJldyBleGNlcHRpb24gVHlwZUVy
cm9yOiBOb3QgYW4gb2JqZWN0Li4KK1BBU1MgbmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKG51
bGwsICcnKTsgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGFuIG9iamVjdC4uCitQQVNT
IG5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbih7Zm9vU2VydmVyczpbXX0sIG51bGwpOyB0aHJl
dyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3Lgor
UEFTUyBuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24oe2ljZVNlcnZlcnM6dHJ1ZX0sIG51bGwp
OyB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9u
IDE3LgorUEFTUyBuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24oe2ljZVNlcnZlcnM6WzEsIDIs
IDNdfSwgbnVsbCk7IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERP
TSBFeGNlcHRpb24gMTcuCitQQVNTIG5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbih7aWNlU2Vy
dmVyczpbe31dfSwgbnVsbCk7IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9F
UlI6IERPTSBFeGNlcHRpb24gMTcuCitQQVNTIG5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbih7
aWNlU2VydmVyczpbe3VybDonZm9vJ31dfSwgbnVsbCk7IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjog
VFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBmMjllNmIy
NThlMGY4MjUzMDdjMjgwMGM5MzVjNTY2MTNkZmMxMTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmh0bWwKQEAgLTAsMCAr
MSwzMCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgor
PGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRl
c3RzIHRoZSBSVENQZWVyQ29ubmVjdGlvbiBjb25zdHJ1Y3Rvci4iKTsKKworc2hvdWxkTm90VGhy
b3coIm5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbihudWxsKTsiKTsKK3Nob3VsZE5vdFRocm93
KCJuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24obnVsbCwgbnVsbCk7Iik7CitzaG91bGROb3RU
aHJvdygibmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKHVuZGVmaW5lZCk7Iik7CitzaG91bGRO
b3RUaHJvdygibmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKHVuZGVmaW5lZCwgdW5kZWZpbmVk
KTsiKTsKK3Nob3VsZE5vdFRocm93KCJuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24oe2ljZVNl
cnZlcnM6W119LCBudWxsKTsiKTsKK3Nob3VsZE5vdFRocm93KCJuZXcgd2Via2l0UlRDUGVlckNv
bm5lY3Rpb24oe2ljZVNlcnZlcnM6W3t1cmk6J3N0dW46Zm9vLmNvbSd9XX0sIG51bGwpOyIpOwor
c2hvdWxkTm90VGhyb3coIm5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbih7aWNlU2VydmVyczpb
e3VyaTondHVybjpmb28uY29tJywgY3JlZGVudGlhbDoneCd9XX0sIG51bGwpOyIpOworc2hvdWxk
Tm90VGhyb3coIm5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbih7aWNlU2VydmVyczpbe3VyaTon
dHVybjpmb28uY29tJywgY3JlZGVudGlhbDoneCd9LHt1cmk6J3N0dW46YmFyLmNvbSd9XX0sIG51
bGwpOyIpOworCitzaG91bGRUaHJvdygibmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKCk7Iik7
CitzaG91bGRUaHJvdygibmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKCcnKTsiKTsKK3Nob3Vs
ZFRocm93KCJuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24obnVsbCwgJycpOyIpOworc2hvdWxk
VGhyb3coIm5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbih7Zm9vU2VydmVyczpbXX0sIG51bGwp
OyIpOworc2hvdWxkVGhyb3coIm5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbih7aWNlU2VydmVy
czp0cnVlfSwgbnVsbCk7Iik7CitzaG91bGRUaHJvdygibmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0
aW9uKHtpY2VTZXJ2ZXJzOlsxLCAyLCAzXX0sIG51bGwpOyIpOworc2hvdWxkVGhyb3coIm5ldyB3
ZWJraXRSVENQZWVyQ29ubmVjdGlvbih7aWNlU2VydmVyczpbe31dfSwgbnVsbCk7Iik7CitzaG91
bGRUaHJvdygibmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKHtpY2VTZXJ2ZXJzOlt7dXJsOidm
b28nfV19LCBudWxsKTsiKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>155259</attachid>
            <date>2012-07-30 04:48:15 -0700</date>
            <delta_ts>2012-07-30 08:22:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92380-20120730134759.patch</filename>
            <type>text/plain</type>
            <size>43036</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0MDEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTc3NDQwNjliNGQ1NmY4
M2Q1NDIwYTgyMjE3ZDg2MDhiZTI1MTA5Zi4uYjA5MzQxZDg5YWJiMzhiNjBhYTA2YTM3ZWI4OTkz
Mjk2ZDEzMmRmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk1IEBACisyMDEyLTA3LTMwICBUb21t
eSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIEludHJvZHVjZSBh
IG1pbmltYWwgUlRDUGVlckNvbm5lY3Rpb24gdG9nZXRoZXIgd2l0aCBEaWN0aW9uYXJ5IGNoYW5n
ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkyMzgw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBpbnRyb2R1Y2VzIGEgc2hlbGwgUlRDUGVlckNvbm5lY3Rpb24gdG9nZXRoZXIgd2l0aCBu
ZWNjZWNhcnkgY2hhbmdlcyB0bworICAgICAgICBEaWN0aW9uYXJ5LgorCisgICAgICAgIFRoZSBX
M0Mgc3BlY2lmaWNhdGlvbiBjYW4gYmUgZm91bmQgaGVyZToKKyAgICAgICAgaHR0cDovL2Rldi53
My5vcmcvMjAxMS93ZWJydGMvZWRpdG9yL3dlYnJ0Yy5odG1sI3J0Y3BlZXJjb25uZWN0aW9uCisK
KyAgICAgICAgU2luY2UgRGljdGlvbmFyaWVzIGNhbid0IGJlIGZ1bGx5IGNvcGllZCBhcm91bmQg
YWRkaW5nCisgICAgICAgIGdldChjb25zdCBTdHJpbmcmIG5hbWUsIFZlY3RvcjxEaWN0aW9uYXJ5
PiYgcmVzdWx0KQorICAgICAgICBpc24ndCBmZWFzaWJsZSBzbyBJIGhhdmUgYWRkZWQgYSBuZXcg
QXJyYXlWYWx1ZSBjbGFzcy4KKworICAgICAgICBUZXN0OiBmYXN0L21lZGlhc3RyZWFtL1JUQ1Bl
ZXJDb25uZWN0aW9uLmh0bWwKKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAq
IEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9ET01X
aW5kb3dNZWRpYVN0cmVhbS5pZGw6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQ
ZWVyQ29ubmVjdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChS
VENJY2VTZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UlRDSWNlU2VydmVyOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6UlRDSWNlU2VydmVyOjp+UlRDSWNlU2VydmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlJUQ0ljZVNlcnZlcjo6dXJpKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0ljZVNl
cnZlcjo6Y3JlZGVudGlhbCk6CisgICAgICAgIChXZWJDb3JlOjpSVENJY2VTZXJ2ZXI6OlJUQ0lj
ZVNlcnZlcik6CisgICAgICAgIChSVENDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlJUQ0NvbmZpZ3VyYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSVENDb25maWd1
cmF0aW9uOjp+UlRDQ29uZmlndXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSVENDb25maWd1
cmF0aW9uOjphcHBlbmRTZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UlRDQ29uZmlndXJhdGlv
bjo6bnVtYmVyT2ZTZXJ2ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0NvbmZpZ3VyYXRpb246
OnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpSVENDb25maWd1cmF0aW9uOjpSVENDb25maWd1
cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjpwYXJzZUNvbmZp
Z3VyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb246OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6UlRDUGVlckNvbm5lY3Rpb24p
OgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb246On5SVENQZWVyQ29ubmVjdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6aW50ZXJmYWNlTmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6c3RvcCk6CisgICAg
ICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6ZXZlbnRUYXJnZXREYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjplbnN1cmVFdmVudFRhcmdldERhdGEpOgor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFJUQ1BlZXJDb25uZWN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjpyZWZFdmVudFRhcmdldCk6CisgICAgICAg
IChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6ZGVyZWZFdmVudFRhcmdldCk6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5pZGw6IEFkZGVkLgorICAg
ICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogVXNlSlNDLmNtYWtlOgorICAgICAgICAqIFdl
YkNvcmUuZ3lwaToKKyAgICAgICAgKiBiaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVh
dHVyZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtp
dFJUQ1BlZXJDb25uZWN0aW9uRW5hYmxlZCk6CisgICAgICAgICogYmluZGluZ3MvanMvQXJyYXlW
YWx1ZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpB
cnJheVZhbHVlOjpBcnJheVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFycmF5VmFsdWU6Om9w
ZXJhdG9yPSk6CisgICAgICAgIChXZWJDb3JlOjpBcnJheVZhbHVlOjppc1VuZGVmaW5lZE9yTnVs
bCk6CisgICAgICAgIChXZWJDb3JlOjpBcnJheVZhbHVlOjpsZW5ndGgpOgorICAgICAgICAoV2Vi
Q29yZTo6QXJyYXlWYWx1ZTo6Z2V0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9BcnJheVZhbHVl
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChBcnJheVZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFycmF5VmFsdWU6On5BcnJheVZhbHVlKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0RpY3Rpb25hcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNEaWN0aW9uYXJ5
Ojpjb252ZXJ0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNEaWN0aW9uYXJ5Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9BcnJheVZhbHVlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OkFycmF5VmFsdWU6Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJDb3JlOjpBcnJh
eVZhbHVlOjppc1VuZGVmaW5lZE9yTnVsbCk6CisgICAgICAgIChXZWJDb3JlOjpBcnJheVZhbHVl
OjpsZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6QXJyYXlWYWx1ZTo6Z2V0KToKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9BcnJheVZhbHVlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChBcnJheVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFycmF5VmFsdWU6OkFycmF5
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXJyYXlWYWx1ZTo6fkFycmF5VmFsdWUpOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L0RpY3Rpb25hcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlj
dGlvbmFyeTo6Z2V0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4
L0RpY3Rpb25hcnkuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoRGljdGlvbmFyeSk6
CisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbjoKKwogMjAxMi0wNy0yNyAgSm9j
ZWx5biBUdXJjb3R0ZSAgPGpvY2VseW4udHVyY290dGVAbm9raWEuY29tPgogCiAgICAgICAgIFtR
dF0gRml4IGlzc3VlcyByZW1haW5pbmcgd2l0aCBmaXhlZCBwb3NpdGlvbmVkIGxheWVycwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAppbmRleCA2ZjhmZjY1ZTIzOTY0YWQ2ODRiNTUzYzQzNTc0ZjA4ZjM3MDk5
OTI4Li5mZjJlN2JkNmE2MGE5ZTgwMGE5OTIwMWZlOTI3MWFhNTJmY2E3Zjg5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dApAQCAtMjA2LDYgKzIwNiw3IEBAIFNFVChXZWJDb3JlX0lETF9GSUxFUwogICAg
IE1vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjay5pZGwK
ICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFj
ay5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uMDAuaWRsCisgICAg
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5pZGwKICAgICBNb2R1bGVzL21l
ZGlhc3RyZWFtL1Nlc3Npb25EZXNjcmlwdGlvbi5pZGwKIAogICAgIE1vZHVsZXMvbmV0d29ya2lu
Zm8vTmF2aWdhdG9yTmV0d29ya0luZm9Db25uZWN0aW9uLmlkbApAQCAtODI1LDYgKzgyNiw3IEBA
IFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
VHJhY2tMaXN0LmNwcAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yTWVkaWFTdHJl
YW0uY3BwCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbjAwLmNwcAorICAg
IE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwCiAgICAgTW9kdWxlcy9t
ZWRpYXN0cmVhbS9TZXNzaW9uRGVzY3JpcHRpb24uY3BwCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVh
bS9Vc2VyTWVkaWFDb250cm9sbGVyLmNwcAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1l
ZGlhUmVxdWVzdC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGM5ZTkyMzA5
MGViNjQ3MTY5YjE5Mjg5MGJmMTU4YTgwNzU3ZDQ1NTQuLjQ4NTBiMDhmN2NjNzJiZjNhZWQ0OGY5
MmYwYmJkNmFmMGQ1ZDBkZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNDkx
LDYgKzQ5MSw4IEBAIHdlYmNvcmVfYnVpbHRfc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU1JlY3QuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JHQkNvbG9yLmNw
cCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JHQkNvbG9yLmggXAorCURlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNSVENQZWVyQ29ubmVjdGlvbi5jcHAgXAorCURlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNSVENQZWVyQ29ubmVjdGlvbi5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
U2NyZWVuLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1NjcmVlbi5oIFwKIAlEZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTU2NyaXB0UHJvZmlsZS5jcHAgXApAQCAtNzE1LDYgKzcxNyw3
IEBAIGRvbV9iaW5kaW5nX2lkbHMgKz0gXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVh
bS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrLmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1
bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjay5pZGwgXAog
CSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbjAwLmlkbCBcCisJ
JChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmlkbCBcCiAJ
JChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1Nlc3Npb25EZXNjcmlwdGlvbi5pZGwgXAog
CSQoV2ViQ29yZSkvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5pZGwgXAogCSQo
V2ViQ29yZSkvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5pZGwgXApA
QCAtMTE5OSw2ICsxMjAyLDggQEAgd2ViY29yZV9tb2R1bGVzX3NvdXJjZXMgKz0gXAogCVNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0Nh
bGxiYWNrLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5l
Y3Rpb24wMC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNv
bm5lY3Rpb24wMC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1Bl
ZXJDb25uZWN0aW9uLmNwcCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENQZWVyQ29ubmVjdGlvbi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1Nlc3Npb25EZXNjcmlwdGlvbi5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vU2Vzc2lvbkRlc2NyaXB0aW9uLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vVXNlck1lZGlhQ2xpZW50LmggXApAQCAtMTM2NCw2ICsxMzY5LDggQEAgd2ViY29y
ZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL0dlbmVyaWNC
aW5kaW5nLmggXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJs
ZWRGZWF0dXJlcy5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGlt
ZUVuYWJsZWRGZWF0dXJlcy5oIFwKKwlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9BcnJheVZh
bHVlLmNwcCBcCisJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQXJyYXlWYWx1ZS5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlci5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWxsYmFja0Z1bmN0aW9uLmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FsbGJhY2tGdW5jdGlvbi5oIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vRE9NV2luZG93TWVkaWFTdHJlYW0u
aWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9ET01XaW5kb3dNZWRpYVN0
cmVhbS5pZGwKaW5kZXggNzQyYTYyNDYzMmU2OWMwNmYwMmYwMjUyNDEyYmJhMjczYjJhZjVhNS4u
ZWE5NDZhNDk2NmJlOGJiYmY0OGEzYWMwYTUyNmViNTQwNzY1MWQ0ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9ET01XaW5kb3dNZWRpYVN0cmVhbS5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9ET01XaW5kb3dNZWRpYVN0
cmVhbS5pZGwKQEAgLTMyLDYgKzMyLDcgQEAgbW9kdWxlIHdpbmRvdyB7CiAgICAgXSBET01XaW5k
b3dNZWRpYVN0cmVhbSB7CiAgICAgICAgIGF0dHJpYnV0ZSBbVjhFbmFibGVkQXRSdW50aW1lXSBN
ZWRpYVN0cmVhbUNvbnN0cnVjdG9yIHdlYmtpdE1lZGlhU3RyZWFtOwogICAgICAgICBhdHRyaWJ1
dGUgW1Y4RW5hYmxlZEF0UnVudGltZV0gUGVlckNvbm5lY3Rpb24wMENvbnN0cnVjdG9yIHdlYmtp
dFBlZXJDb25uZWN0aW9uMDA7CisgICAgICAgIGF0dHJpYnV0ZSBbVjhFbmFibGVkQXRSdW50aW1l
XSBSVENQZWVyQ29ubmVjdGlvbkNvbnN0cnVjdG9yIHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uOwog
ICAgICAgICBhdHRyaWJ1dGUgU2Vzc2lvbkRlc2NyaXB0aW9uQ29uc3RydWN0b3IgU2Vzc2lvbkRl
c2NyaXB0aW9uOwogICAgICAgICBhdHRyaWJ1dGUgSWNlQ2FuZGlkYXRlQ29uc3RydWN0b3IgSWNl
Q2FuZGlkYXRlOwogICAgICAgICBhdHRyaWJ1dGUgTWVkaWFTdHJlYW1FdmVudENvbnN0cnVjdG9y
IE1lZGlhU3RyZWFtRXZlbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc3MGE0ODA4ZjFk
NjQ4NDE5OTc5ODA0NWM5YTgwNTk1OGE3NTczZjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcApAQCAtMCww
ICsxLDE3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycworICogICAg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0
aGlzCisgKiAgICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCisKKyNpbmNsdWRlICJSVENQZWVyQ29ubmVjdGlvbi5oIgorCisjaW5jbHVkZSAi
QXJyYXlWYWx1ZS5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJLVVJM
LmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKKy8vIEZJWE1FOiBSVENJY2VTZXJ2ZXIgYW5kIFJUQ0NvbmZpZ3JhdGlvbiBhcmUg
cGxhY2VkIGhlcmUgdGVtcG9yYXJpbHkuCisvLyBUaGVpciBmaW5hbCBwbGFjZSBpcyBpbiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS4KK2NsYXNzIFJUQ0ljZVNlcnZlciA6IHB1
YmxpYyBSZWZDb3VudGVkPFJUQ0ljZVNlcnZlcj4geworcHVibGljOgorICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFJUQ0ljZVNlcnZlcj4gY3JlYXRlKGNvbnN0IEtVUkwmIHVyaSwgY29uc3QgU3RyaW5n
JiBjcmVkZW50aWFsKSB7IHJldHVybiBhZG9wdFJlZihuZXcgUlRDSWNlU2VydmVyKHVyaSwgY3Jl
ZGVudGlhbCkpOyB9CisgICAgdmlydHVhbCB+UlRDSWNlU2VydmVyKCkgeyB9CisKKyAgICBjb25z
dCBLVVJMJiB1cmkoKSB7IHJldHVybiBtX3VyaTsgfQorICAgIGNvbnN0IFN0cmluZyYgY3JlZGVu
dGlhbCgpIHsgcmV0dXJuIG1fY3JlZGVudGlhbDsgfQorCitwcml2YXRlOgorICAgIFJUQ0ljZVNl
cnZlcihjb25zdCBLVVJMJiB1cmksIGNvbnN0IFN0cmluZyYgY3JlZGVudGlhbCkKKyAgICAgICAg
OiBtX3VyaSh1cmkpCisgICAgICAgICwgbV9jcmVkZW50aWFsKGNyZWRlbnRpYWwpCisgICAgewor
ICAgIH0KKworICAgIEtVUkwgbV91cmk7CisgICAgU3RyaW5nIG1fY3JlZGVudGlhbDsKK307CisK
K2NsYXNzIFJUQ0NvbmZpZ3VyYXRpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxSVENDb25maWd1cmF0
aW9uPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8UlRDQ29uZmlndXJhdGlvbj4g
Y3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFJUQ0NvbmZpZ3VyYXRpb24oKSk7IH0KKyAg
ICB2aXJ0dWFsIH5SVENDb25maWd1cmF0aW9uKCkgeyB9CisKKyAgICB2b2lkIGFwcGVuZFNlcnZl
cihQYXNzUmVmUHRyPFJUQ0ljZVNlcnZlcj4gc2VydmVyKSB7IG1fc2VydmVycy5hcHBlbmQoc2Vy
dmVyKTsgfQorICAgIHNpemVfdCBudW1iZXJPZlNlcnZlcnMoKSB7IHJldHVybiBtX3NlcnZlcnMu
c2l6ZSgpOyB9CisgICAgUlRDSWNlU2VydmVyKiBzZXJ2ZXIoc2l6ZV90IGluZGV4KSB7IHJldHVy
biBtX3NlcnZlcnNbaW5kZXhdLmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAgUlRDQ29uZmlndXJh
dGlvbigpIHsgfQorCisgICAgVmVjdG9yPFJlZlB0cjxSVENJY2VTZXJ2ZXI+ID4gbV9zZXJ2ZXJz
OworfTsKKworUGFzc1JlZlB0cjxSVENDb25maWd1cmF0aW9uPiBSVENQZWVyQ29ubmVjdGlvbjo6
cGFyc2VDb25maWd1cmF0aW9uKGNvbnN0IERpY3Rpb25hcnkmIGNvbmZpZ3VyYXRpb24sIEV4Y2Vw
dGlvbkNvZGUmIGVjKQoreworICAgIGlmIChjb25maWd1cmF0aW9uLmlzVW5kZWZpbmVkT3JOdWxs
KCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgQXJyYXlWYWx1ZSBpY2VTZXJ2ZXJzOworICAg
IGJvb2wgb2sgPSBjb25maWd1cmF0aW9uLmdldCgiaWNlU2VydmVycyIsIGljZVNlcnZlcnMpOwor
ICAgIGlmICghb2spIHsKKyAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgfQorCisgICAgc2l6ZV90IG51bWJlck9mU2VydmVyczsKKyAgICBvayA9
IGljZVNlcnZlcnMubGVuZ3RoKG51bWJlck9mU2VydmVycyk7CisgICAgaWYgKCFvaykgeworICAg
ICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisK
KyAgICBSZWZQdHI8UlRDQ29uZmlndXJhdGlvbj4gcnRjQ29uZmlndXJhdGlvbiA9IFJUQ0NvbmZp
Z3VyYXRpb246OmNyZWF0ZSgpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1iZXJP
ZlNlcnZlcnM7ICsraSkgeworICAgICAgICBEaWN0aW9uYXJ5IGljZVNlcnZlcjsKKyAgICAgICAg
b2sgPSBpY2VTZXJ2ZXJzLmdldChpLCBpY2VTZXJ2ZXIpOworICAgICAgICBpZiAoIW9rKSB7Cisg
ICAgICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOworICAgICAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgIH0KKworICAgICAgICBTdHJpbmcgdXJpLCBjcmVkZW50aWFsOworICAgICAgICBv
ayA9IGljZVNlcnZlci5nZXQoInVyaSIsIHVyaSk7CisgICAgICAgIGlmICghb2spIHsKKyAgICAg
ICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAg
ICAgICAgfQorICAgICAgICBLVVJMIHVybChLVVJMKCksIHVyaSk7CisgICAgICAgIGlmICghdXJs
LmlzVmFsaWQoKSB8fCAhKHVybC5wcm90b2NvbElzKCJ0dXJuIikgfHwgdXJsLnByb3RvY29sSXMo
InN0dW4iKSkpIHsKKyAgICAgICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CisgICAgICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorCisgICAgICAgIGljZVNlcnZlci5nZXQoImNyZWRl
bnRpYWwiLCBjcmVkZW50aWFsKTsKKworICAgICAgICBydGNDb25maWd1cmF0aW9uLT5hcHBlbmRT
ZXJ2ZXIoUlRDSWNlU2VydmVyOjpjcmVhdGUodXJsLCBjcmVkZW50aWFsKSk7CisgICAgfQorICAg
IHJldHVybiBydGNDb25maWd1cmF0aW9uLnJlbGVhc2UoKTsKK30KKworUGFzc1JlZlB0cjxSVENQ
ZWVyQ29ubmVjdGlvbj4gUlRDUGVlckNvbm5lY3Rpb246OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBjb25zdCBEaWN0aW9uYXJ5JiBydGNDb25maWd1cmF0aW9uLCBjb25z
dCBEaWN0aW9uYXJ5JiwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgUmVmUHRyPFJUQ0NvbmZp
Z3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBwYXJzZUNvbmZpZ3VyYXRpb24ocnRjQ29uZmlndXJh
dGlvbiwgZWMpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBSZWZQdHI8
UlRDUGVlckNvbm5lY3Rpb24+IHBlZXJDb25uZWN0aW9uID0gYWRvcHRSZWYobmV3IFJUQ1BlZXJD
b25uZWN0aW9uKGNvbnRleHQsIGNvbmZpZ3VyYXRpb24ucmVsZWFzZSgpLCBlYykpOworICAgIGlm
IChlYykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBwZWVyQ29ubmVjdGlvbi0+c3VzcGVuZElm
TmVlZGVkKCk7CisgICAgcmV0dXJuIHBlZXJDb25uZWN0aW9uLnJlbGVhc2UoKTsKK30KKworUlRD
UGVlckNvbm5lY3Rpb246OlJUQ1BlZXJDb25uZWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIFBhc3NSZWZQdHI8UlRDQ29uZmlndXJhdGlvbj4sIEV4Y2VwdGlvbkNvZGUmIGVj
KQorICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQsIHRoaXMpCit7Cit9CisKK1JUQ1BlZXJD
b25uZWN0aW9uOjp+UlRDUGVlckNvbm5lY3Rpb24oKQoreworfQorCitjb25zdCBBdG9taWNTdHJp
bmcmIFJUQ1BlZXJDb25uZWN0aW9uOjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvclJUQ1BlZXJDb25uZWN0aW9uOworfQorCitTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBSVENQZWVyQ29ubmVjdGlvbjo6c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpOworfQorCit2b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjpzdG9wKCkKK3sKKyAg
ICAvLyBGSVhNRTogTWFrZSBzdXJlIHRoYXQgdGhpcyBvYmplY3Qgc3RvcHMgcG9zdGluZyBldmVu
dHMgYW5kIHJlbGVhc2VzIHJlc291cmNlcyBhdCB0aGlzIHN0YWdlLgorfQorCitFdmVudFRhcmdl
dERhdGEqIFJUQ1BlZXJDb25uZWN0aW9uOjpldmVudFRhcmdldERhdGEoKQoreworICAgIHJldHVy
biAmbV9ldmVudFRhcmdldERhdGE7Cit9CisKK0V2ZW50VGFyZ2V0RGF0YSogUlRDUGVlckNvbm5l
Y3Rpb246OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpCit7CisgICAgcmV0dXJuICZtX2V2ZW50VGFy
Z2V0RGF0YTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hN2YyOGQxNTAwYzMwMWUwOWFh
M2EwYjEwOTA4M2MzNDcxYmExMGQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oCkBAIC0wLDAgKzEsNzcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogICAgaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogICAgZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKKyAqICAgIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcworICogICAg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIFJUQ1BlZXJDb25uZWN0aW9uX2gKKyNkZWZpbmUgUlRDUGVlckNvbm5l
Y3Rpb25faAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIkFjdGl2ZURP
TU9iamVjdC5oIgorI2luY2x1ZGUgIkRpY3Rpb25hcnkuaCIKKyNpbmNsdWRlICJFdmVudFRhcmdl
dC5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkJhc2UuaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBSVENDb25maWd1cmF0aW9uOworCitj
bGFzcyBSVENQZWVyQ29ubmVjdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPFJUQ1BlZXJDb25uZWN0
aW9uPiwgcHVibGljIEV2ZW50VGFyZ2V0LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxSVENQZWVyQ29ubmVjdGlvbj4gY3JlYXRlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBEaWN0aW9uYXJ5JiBydGNDb25maWd1cmF0aW9uLCBj
b25zdCBEaWN0aW9uYXJ5JiBtZWRpYUNvbnN0cmFpbnRzLCBFeGNlcHRpb25Db2RlJik7CisgICAg
flJUQ1BlZXJDb25uZWN0aW9uKCk7CisKKyAgICAvLyBFdmVudFRhcmdldAorICAgIHZpcnR1YWwg
Y29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3QgT1ZFUlJJREU7CisgICAg
dmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkg
Y29uc3QgT1ZFUlJJREU7CisKKyAgICAvLyBBY3RpdmVET01PYmplY3QKKyAgICB2aXJ0dWFsIHZv
aWQgc3RvcCgpIE9WRVJSSURFOworCisgICAgdXNpbmcgUmVmQ291bnRlZDxSVENQZWVyQ29ubmVj
dGlvbj46OnJlZjsKKyAgICB1c2luZyBSZWZDb3VudGVkPFJUQ1BlZXJDb25uZWN0aW9uPjo6ZGVy
ZWY7CisKK3ByaXZhdGU6CisgICAgUlRDUGVlckNvbm5lY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIFBhc3NSZWZQdHI8UlRDQ29uZmlndXJhdGlvbj4sIEV4Y2VwdGlvbkNvZGUmKTsKKwor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJUQ0NvbmZpZ3VyYXRpb24+IHBhcnNlQ29uZmlndXJhdGlv
bihjb25zdCBEaWN0aW9uYXJ5JiBjb25maWd1cmF0aW9uLCBFeGNlcHRpb25Db2RlJik7CisKKyAg
ICAvLyBFdmVudFRhcmdldCBpbXBsZW1lbnRhdGlvbi4KKyAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0
RGF0YSogZXZlbnRUYXJnZXREYXRhKCk7CisgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGVu
c3VyZUV2ZW50VGFyZ2V0RGF0YSgpOworICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgp
IHsgcmVmKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIHsgZGVyZWYo
KTsgfQorICAgIEV2ZW50VGFyZ2V0RGF0YSBtX2V2ZW50VGFyZ2V0RGF0YTsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNl
bmRpZiAvLyBSVENQZWVyQ29ubmVjdGlvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaWRsCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ0
YWQ3MjM1YmU0YTM4MzdlNTA4MDBiMDlkY2FkZjkzNGIyNGM4NTUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmlk
bApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqICAgIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3Jz
CisgKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tIHRoaXMKKyAqICAgIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxlIG1lZGlhc3RyZWFtIHsKKworICAgIGlu
dGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPU1FRElBX1NUUkVBTSwKKyAgICAgICAgQWN0
aXZlRE9NT2JqZWN0LAorICAgICAgICBDb25zdHJ1Y3RvcihpbiBEaWN0aW9uYXJ5IHJ0Y0lDRVNl
cnZlcnMsIGluIFtPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIERpY3Rpb25hcnkgbWVkaWFD
b25zdHJhaW50cyksCisgICAgICAgIENvbnN0cnVjdG9yUmFpc2VzRXhjZXB0aW9uLAorICAgICAg
ICBDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LAorICAgICAgICBFdmVudFRhcmdldAor
ICAgIF0gUlRDUGVlckNvbm5lY3Rpb24geworICAgICAgICAvLyBFdmVudFRhcmdldCBpbnRlcmZh
Y2UKKyAgICAgICAgdm9pZCBhZGRFdmVudExpc3RlbmVyKGluIERPTVN0cmluZyB0eXBlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25hbF0gYm9vbGVhbiB1c2VDYXB0
dXJlKTsKKyAgICAgICAgdm9pZCByZW1vdmVFdmVudExpc3RlbmVyKGluIERPTVN0cmluZyB0eXBl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0
ZW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25hbF0gYm9v
bGVhbiB1c2VDYXB0dXJlKTsKKyAgICAgICAgYm9vbGVhbiBkaXNwYXRjaEV2ZW50KGluIEV2ZW50
IGV2ZW50KQorICAgICAgICAgICAgcmFpc2VzKEV2ZW50RXhjZXB0aW9uKTsKKyAgICB9OworCit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUv
VGFyZ2V0LnByaQppbmRleCAwZTkwOGViMDA3OTY4MWI0M2YwMTRkOGVjZmJhZjM4M2EwNGM2ZWVj
Li4wOTZhNWYzNGExMTI0ODk4ZTRhY2M5ZjIwMmM1M2VhODE3ZjcyMGRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkK
QEAgLTczLDYgKzczLDcgQEAgU09VUkNFUyArPSBcCiAKIFNPVVJDRVMgKz0gXAogICAgICBiaW5k
aW5ncy9TY3JpcHRDb250cm9sbGVyQmFzZS5jcHAgXAorICAgICBiaW5kaW5ncy9qcy9BcnJheVZh
bHVlLmNwcCBcCiAgICAgIGJpbmRpbmdzL2pzL0NhbGxiYWNrRnVuY3Rpb24uY3BwIFwKICAgICAg
YmluZGluZ3MvanMvRE9NT2JqZWN0SGFzaFRhYmxlTWFwLmNwcCBcCiAgICAgIGJpbmRpbmdzL2pz
L0RPTVdyYXBwZXJXb3JsZC5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVXNlSlND
LmNtYWtlIGIvU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlCmluZGV4IDAwZjFiZTEwMjhlYzFh
NzlkMmNkMGJjZmUwZGIwMmYzMzFjNWExYmEuLmYzNTAyNWY2ZDhjZTY3MTE5OTRiMDkzNTBiODEy
YWJhMjQ3MmNhNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFrZQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UKQEAgLTIyLDYgKzIyLDcgQEAgSUYgKFBPUlQg
TUFUQ0hFUyAiQmxhY2tCZXJyeSIpCiBFTkRJRiAoKQogCiBMSVNUKEFQUEVORCBXZWJDb3JlX1NP
VVJDRVMKKyAgICBiaW5kaW5ncy9qcy9BcnJheVZhbHVlcy5jcHAKICAgICBiaW5kaW5ncy9qcy9D
YWxsYmFja0Z1bmN0aW9uLmNwcAogICAgIGJpbmRpbmdzL2pzL0RPTU9iamVjdEhhc2hUYWJsZU1h
cC5jcHAKICAgICBiaW5kaW5ncy9qcy9ET01XcmFwcGVyV29ybGQuY3BwCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
aW5kZXggM2VjODRmNGI1MjY4YThjMmM0MTA2YjBhMTQ2YzVmODBmOWNlMTNmYS4uZmRlZDM1Y2Uw
MzZhMDNhMGEwMTVmNzQxZTEzNjAxMmQ3ODI2YjM1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtODQx
LDYgKzg0MSw3IEBACiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JV
c2VyTWVkaWFFcnJvckNhbGxiYWNrLmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0
cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2suaWRsJywKICAgICAgICAgICAg
ICdNb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uMDAuaWRsJywKKyAgICAgICAgICAg
ICdNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmlkbCcsCiAgICAgICAgICAg
ICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9TZXNzaW9uRGVzY3JpcHRpb24uaWRsJywKICAgICAgICAg
ICAgICdNb2R1bGVzL25vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90aWZpY2F0aW9ucy5pZGwnLAog
ICAgICAgICAgICAgJ01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaWRsJywKQEAg
LTE1NjcsNiArMTU2OCw4IEBACiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZp
Z2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2suaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9t
ZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbjAwLmNwcCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9t
ZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbjAwLmgnLAorICAgICAgICAgICAgJ01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwJywKKyAgICAgICAgICAgICdNb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvbWVk
aWFzdHJlYW0vU2Vzc2lvbkRlc2NyaXB0aW9uLmNwcCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9t
ZWRpYXN0cmVhbS9TZXNzaW9uRGVzY3JpcHRpb24uaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9t
ZWRpYXN0cmVhbS9Vc2VyTWVkaWFDbGllbnQuaCcsCkBAIC0xOTA4LDYgKzE5MTEsOCBAQAogICAg
ICAgICAgICAgJ2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NT2JqZWN0LmgnLAogICAgICAgICAg
ICAgJ2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0SFRNTEVsZW1lbnRXcmFwcGVyRmFjdG9yeS5jcHAn
LAogICAgICAgICAgICAgJ2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0SFRNTEVsZW1lbnRXcmFwcGVy
RmFjdG9yeS5oJywKKyAgICAgICAgICAgICdiaW5kaW5ncy9qcy9BcnJheVZhbHVlLmgnLAorICAg
ICAgICAgICAgJ2JpbmRpbmdzL2pzL0FycmF5VmFsdWUuY3BwJywKICAgICAgICAgICAgICdiaW5k
aW5ncy9qcy9DYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlci5oJywKICAgICAgICAgICAgICdiaW5k
aW5ncy9qcy9DYWxsYmFja0Z1bmN0aW9uLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMv
Q2FsbGJhY2tGdW5jdGlvbi5oJywKQEAgLTIxNTEsNiArMjE1Niw4IEBACiAgICAgICAgICAgICAn
YmluZGluZ3Mvb2JqYy9PYmpDTm9kZUZpbHRlckNvbmRpdGlvbi5tbScsCiAgICAgICAgICAgICAn
YmluZGluZ3Mvb2JqYy9QdWJsaWNET01JbnRlcmZhY2VzLmgnLAogICAgICAgICAgICAgJ2JpbmRp
bmdzL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tJywKKyAgICAgICAgICAgICdiaW5kaW5ncy92OC9B
cnJheVZhbHVlLmNwcCcsCisgICAgICAgICAgICAnYmluZGluZ3MvdjgvQXJyYXlWYWx1ZS5oJywK
ICAgICAgICAgICAgICdiaW5kaW5ncy92OC9ET01EYXRhLmNwcCcsCiAgICAgICAgICAgICAnYmlu
ZGluZ3MvdjgvRE9NRGF0YS5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9ET01EYXRhU3Rv
cmUuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVu
dGltZUVuYWJsZWRGZWF0dXJlcy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9S
dW50aW1lRW5hYmxlZEZlYXR1cmVzLmgKaW5kZXggNjg0YzU3ZDhiZjNhMzczZjkxNjFiM2MwOGU5
Yzc4ZGRhMGMyNWYxMy4uMmQ5MmNiN2RiMjc2YTNlOGI5ZDk1ZGYxYjg2YTJjYTVmNGQxODhiNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxl
ZEZlYXR1cmVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1l
RW5hYmxlZEZlYXR1cmVzLmgKQEAgLTE4OCw2ICsxODgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IGJvb2wgcGVlckNvbm5lY3Rpb25FbmFibGVkKCkgeyByZXR1cm4gaXNNZWRpYVN0cmVhbUVuYWJs
ZWQgJiYgaXNQZWVyQ29ubmVjdGlvbkVuYWJsZWQ7IH0KICAgICBzdGF0aWMgdm9pZCBzZXRQZWVy
Q29ubmVjdGlvbkVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNQZWVyQ29ubmVjdGlvbkVuYWJs
ZWQgPSBpc0VuYWJsZWQ7IH0KICAgICBzdGF0aWMgYm9vbCB3ZWJraXRQZWVyQ29ubmVjdGlvbjAw
RW5hYmxlZCgpIHsgcmV0dXJuIHBlZXJDb25uZWN0aW9uRW5hYmxlZCgpOyB9CisgICAgc3RhdGlj
IGJvb2wgd2Via2l0UlRDUGVlckNvbm5lY3Rpb25FbmFibGVkKCkgeyByZXR1cm4gcGVlckNvbm5l
Y3Rpb25FbmFibGVkKCk7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKEdBTUVQQUQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9BcnJheVZhbHVlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0FycmF5VmFsdWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhlM2QyNmRiZTZh
NjQ4YzU2NjYzOTdjODQ5YmQ4ZDExNjk2YzJhYzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9BcnJheVZhbHVlLmNwcApAQCAtMCwwICsxLDg3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFycmF5VmFsdWUuaCIKKworI2luY2x1
ZGUgIkRpY3Rpb25hcnkuaCIKKyNpbmNsdWRlICJKU0FycmF5LmgiCisKK3VzaW5nIG5hbWVzcGFj
ZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQXJyYXlWYWx1ZTo6QXJyYXlWYWx1ZSgp
CisgICAgOiBtX2V4ZWMoMCkKK3sKK30KKworQXJyYXlWYWx1ZTo6QXJyYXlWYWx1ZShKU0M6OkV4
ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlIHZhbHVlKQorICAgIDogbV9leGVjKGV4ZWMpCisg
ICAgLCBtX3ZhbHVlKHZhbHVlKQoreworICAgIEFTU0VSVChtX2V4ZWMgJiYgIW1fdmFsdWUuaXNV
bmRlZmluZWRPck51bGwoKSAmJiBpc0pTQXJyYXkobV92YWx1ZSkpOworfQorCitBcnJheVZhbHVl
JiBBcnJheVZhbHVlOjpvcGVyYXRvcj0oY29uc3QgQXJyYXlWYWx1ZSYgb3RoZXIpCit7CisgICAg
bV9leGVjID0gb3RoZXIubV9leGVjOworICAgIG1fdmFsdWUgPSBvdGhlci5tX3ZhbHVlOworICAg
IHJldHVybiAqdGhpczsKK30KKworYm9vbCBBcnJheVZhbHVlOjppc1VuZGVmaW5lZE9yTnVsbCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuICFtX2V4ZWM7Cit9CisKK2Jvb2wgQXJyYXlWYWx1ZTo6bGVu
Z3RoKHNpemVfdCYgbGVuZ3RoKSBjb25zdAoreworICAgIGlmIChpc1VuZGVmaW5lZE9yTnVsbCgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBKU0FycmF5KiBhcnJheSA9IGFzQXJyYXko
bV92YWx1ZSk7CisgICAgbGVuZ3RoID0gYXJyYXktPmxlbmd0aCgpOworICAgIHJldHVybiB0cnVl
OworfQorCitib29sIEFycmF5VmFsdWU6OmdldChzaXplX3QgaW5kZXgsIERpY3Rpb25hcnkmIHZh
bHVlKSBjb25zdAoreworICAgIGlmIChpc1VuZGVmaW5lZE9yTnVsbCgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBKU0FycmF5KiBhcnJheSA9IGFzQXJyYXkobV92YWx1ZSk7CisgICAg
aWYgKCFhcnJheS0+Y2FuR2V0SW5kZXgoaW5kZXgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBKU1ZhbHVlIGluZGV4ZWRWYWx1ZSA9IGFycmF5LT5nZXRJbmRleChpbmRleCk7CisgICAg
aWYgKGluZGV4ZWRWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpIHx8ICFpbmRleGVkVmFsdWUuaXNP
YmplY3QoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgdmFsdWUgPSBEaWN0aW9uYXJ5
KG1fZXhlYywgaW5kZXhlZFZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQXJy
YXlWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQXJyYXlWYWx1ZS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjJmY2E3NWJlMmMyOTUwNmZlZTNkNzUyOTY4MzZjMzMwMjNhODIwMDkKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9BcnJheVZhbHVlLmgKQEAgLTAs
MCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisg
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQXJyYXlWYWx1ZV9oCisjZGVmaW5lIEFycmF5VmFs
dWVfaAorCisjaW5jbHVkZSA8aW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgRGljdGlvbmFyeTsKKworY2xhc3MgQXJyYXlWYWx1ZSB7CitwdWJs
aWM6CisgICAgQXJyYXlWYWx1ZSgpOworICAgIEFycmF5VmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkpTVmFsdWUpOworICAgIH5BcnJheVZhbHVlKCkgeyB9CisKKyAgICBBcnJheVZhbHVlJiBv
cGVyYXRvcj0oY29uc3QgQXJyYXlWYWx1ZSYpOworCisgICAgYm9vbCBpc1VuZGVmaW5lZE9yTnVs
bCgpIGNvbnN0OworCisgICAgYm9vbCBsZW5ndGgoc2l6ZV90JikgY29uc3Q7CisgICAgYm9vbCBn
ZXQoc2l6ZV90IGluZGV4LCBEaWN0aW9uYXJ5JikgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgSlND
OjpFeGVjU3RhdGUqIG1fZXhlYzsKKyAgICBKU0M6OkpTVmFsdWUgbV92YWx1ZTsKK307CisKK30K
KworI2VuZGlmIC8vIEFycmF5VmFsdWVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RGljdGlvbmFyeS5jcHAKaW5kZXggMWYzOTg4MjBiNzZiZGYyNDI3YzZkNWVlMzQwNGY3MDhkODUy
MWVjOC4uNzc0NzFjNmQ3ZDhiMTVhZGM3ZDNhYjcyMWJmMWNiYjA0Mjk2YzljMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuY3BwCkBAIC0yNiw3ICsyNiw5IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSlNEaWN0aW9uYXJ5LmgiCiAKKyNpbmNs
dWRlICJBcnJheVZhbHVlLmgiCiAjaW5jbHVkZSAiRGljdGlvbmFyeS5oIgorI2luY2x1ZGUgIkpT
QXJyYXkuaCIKICNpbmNsdWRlICJKU0RPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkpTRXZlbnRUYXJn
ZXQuaCIKICNpbmNsdWRlICJKU01lc3NhZ2VQb3J0Q3VzdG9tLmgiCkBAIC0xODUsNiArMTg3LDE0
IEBAIHZvaWQgSlNEaWN0aW9uYXJ5Ojpjb252ZXJ0VmFsdWUoRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlIHZhbHVlLCBIYXNoU2V0PEF0b21pY1N0CiB9CiAjZW5kaWYKIAordm9pZCBKU0RpY3Rpb25h
cnk6OmNvbnZlcnRWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIEFycmF5VmFs
dWUmIHJlc3VsdCkKK3sKKyAgICBpZiAodmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSB8fCAhaXNK
U0FycmF5KHZhbHVlKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcmVzdWx0ID0gQXJyYXlWYWx1
ZShleGVjLCB2YWx1ZSk7Cit9CisKIGJvb2wgSlNEaWN0aW9uYXJ5OjpnZXRXaXRoVW5kZWZpbmVk
T3JOdWxsQ2hlY2soY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIFN0cmluZyYgcmVzdWx0KSBj
b25zdAogewogICAgIEpTVmFsdWUgdmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RGljdGlvbmFyeS5oCmluZGV4IDNlN2VlNTViMmNkNmNhYmU4MWYxZWZlMjgxNTBhZGU2ZDVmZTll
YTUuLjcxN2I1ODgwYTU5MjNlODMxYjRlNjBkMzUxYTUwMmQ1ZDY3MzAwOTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5oCkBAIC0zMiw2ICszMiw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQXJyYXlWYWx1ZTsKIGNsYXNzIERpY3Rpb25hcnk7
CiBjbGFzcyBET01XaW5kb3c7CiBjbGFzcyBFdmVudFRhcmdldDsKQEAgLTEwNSw2ICsxMDYsNyBA
QCBwcml2YXRlOgogI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpIHx8IEVOQUJMRShXRUJf
SU5URU5UUykKICAgICBzdGF0aWMgdm9pZCBjb252ZXJ0VmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkpTVmFsdWUsIEhhc2hTZXQ8QXRvbWljU3RyaW5nPiYgcmVzdWx0KTsKICNlbmRpZgorICAg
IHN0YXRpYyB2b2lkIGNvbnZlcnRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwg
QXJyYXlWYWx1ZSYgcmVzdWx0KTsKIAogICAgIEpTQzo6RXhlY1N0YXRlKiBtX2V4ZWM7CiAgICAg
SlNDOjpKU09iamVjdCogbV9pbml0aWFsaXplck9iamVjdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L0FycmF5VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvQXJyYXlWYWx1ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTIwNDE4NThjOWU3OGU2OGZkNjJjN2U1
NTA3ZTkyZmNhNzY4MDQxOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L0FycmF5VmFsdWUuY3BwCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09O
VFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiQXJyYXlWYWx1ZS5oIgorCisjaW5jbHVkZSAiRGljdGlvbmFy
eS5oIgorI2luY2x1ZGUgIlY4QmluZGluZy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0Fy
cmF5VmFsdWUmIEFycmF5VmFsdWU6Om9wZXJhdG9yPShjb25zdCBBcnJheVZhbHVlJiBvdGhlcikK
K3sKKyAgICBtX2FycmF5ID0gb3RoZXIubV9hcnJheTsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisK
K2Jvb2wgQXJyYXlWYWx1ZTo6aXNVbmRlZmluZWRPck51bGwoKSBjb25zdAoreworICAgIGlmICht
X2FycmF5LklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIFdlYkNv
cmU6OmlzVW5kZWZpbmVkT3JOdWxsKG1fYXJyYXkpOworfQorCitib29sIEFycmF5VmFsdWU6Omxl
bmd0aChzaXplX3QmIGxlbmd0aCkgY29uc3QKK3sKKyAgICBpZiAoaXNVbmRlZmluZWRPck51bGwo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbGVuZ3RoID0gbV9hcnJheS0+TGVuZ3Ro
KCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgQXJyYXlWYWx1ZTo6Z2V0KHNpemVfdCBp
bmRleCwgRGljdGlvbmFyeSYgdmFsdWUpIGNvbnN0Cit7CisgICAgaWYgKGlzVW5kZWZpbmVkT3JO
dWxsKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChpbmRleCA+PSBtX2FycmF5
LT5MZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgdjg6OkxvY2FsPHY4OjpW
YWx1ZT4gaW5kZXhlZFZhbHVlID0gbV9hcnJheS0+R2V0KHY4VW5zaWduZWRJbnRlZ2VyKGluZGV4
KSk7CisgICAgaWYgKGluZGV4ZWRWYWx1ZS5Jc0VtcHR5KCkgfHwgIWluZGV4ZWRWYWx1ZS0+SXNP
YmplY3QoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgdmFsdWUgPSBEaWN0aW9uYXJ5
KGluZGV4ZWRWYWx1ZSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0FycmF5VmFsdWUu
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0FycmF5VmFsdWUuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5i
ZTAxNTQxZGY4NjU1MTVlYjYzZjU0MDQwNTkwZmQwMDI1NGRhMmMzCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvQXJyYXlWYWx1ZS5oCkBAIC0wLDAgKzEsNTkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisg
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIEFycmF5VmFsdWVfaAorI2RlZmluZSBBcnJheVZhbHVlX2gKKwor
I2luY2x1ZGUgPHY4Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRGljdGlvbmFy
eTsKKworY2xhc3MgQXJyYXlWYWx1ZSB7CitwdWJsaWM6CisgICAgQXJyYXlWYWx1ZSgpIHsgfQor
ICAgIGV4cGxpY2l0IEFycmF5VmFsdWUoY29uc3Qgdjg6OkxvY2FsPHY4OjpBcnJheT4mIGFycmF5
KSA6IG1fYXJyYXkoYXJyYXkpIHsgfQorICAgIH5BcnJheVZhbHVlKCkgeyB9CisKKyAgICBBcnJh
eVZhbHVlJiBvcGVyYXRvcj0oY29uc3QgQXJyYXlWYWx1ZSYpOworCisgICAgYm9vbCBpc1VuZGVm
aW5lZE9yTnVsbCgpIGNvbnN0OworCisgICAgYm9vbCBsZW5ndGgoc2l6ZV90JikgY29uc3Q7Cisg
ICAgYm9vbCBnZXQoc2l6ZV90IGluZGV4LCBEaWN0aW9uYXJ5JikgY29uc3Q7CisKK3ByaXZhdGU6
CisgICAgLy8gVGhpcyBvYmplY3QgY2FuIG9ubHkgYmUgdXNlZCBzYWZlbHkgd2hlbiBzdGFjayBh
bGxvY2F0ZWQgYmVjYXVzZSBvZiB2ODo6TG9jYWwuCisgICAgc3RhdGljIHZvaWQqIG9wZXJhdG9y
IG5ldyhzaXplX3QpOworICAgIHN0YXRpYyB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3QpOwor
ICAgIHN0YXRpYyB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkICopOworCisgICAgdjg6OkxvY2Fs
PHY4OjpBcnJheT4gbV9hcnJheTsKK307CisKK30KKworI2VuZGlmIC8vIEFycmF5VmFsdWVfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGljdGlvbmFyeS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9EaWN0aW9uYXJ5LmNwcAppbmRleCA3ZDY5MmU3OGU0
MDc1MmNiZWVmZGVjYmFhMTgwNGQ3YzEyNjE0ZmM5Li42Y2Y1Njc5MWVlMWI0NTU2NTU1YWY5OGIx
ZGYxNDM0NmQyYWY1M2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9E
aWN0aW9uYXJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9EaWN0aW9uYXJ5
LmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkRp
Y3Rpb25hcnkuaCIKIAorI2luY2x1ZGUgIkFycmF5VmFsdWUuaCIKICNpbmNsdWRlICJET01TdHJp
bmdMaXN0LmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhET01XaW5kb3cu
aCIKQEAgLTQ0Miw2ICs0NDMsMTkgQEAgYm9vbCBEaWN0aW9uYXJ5OjpnZXQoY29uc3QgU3RyaW5n
JiBrZXksIFZlY3RvcjxTdHJpbmc+JiB2YWx1ZSkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAorYm9vbCBEaWN0aW9uYXJ5OjpnZXQoY29uc3QgU3RyaW5nJiBrZXksIEFycmF5VmFsdWUmIHZh
bHVlKSBjb25zdAoreworICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHY4VmFsdWU7CisgICAgaWYg
KCFnZXRLZXkoa2V5LCB2OFZhbHVlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYg
KCF2OFZhbHVlLT5Jc0FycmF5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHZhbHVl
ID0gQXJyYXlWYWx1ZSh2ODo6TG9jYWw8djg6OkFycmF5Pjo6Q2FzdCh2OFZhbHVlKSk7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKIGJvb2wgRGljdGlvbmFyeTo6Z2V0T3duUHJvcGVydGllc0FzU3Ry
aW5nSGFzaE1hcChXVEY6Okhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBoYXNoTWFwKSBjb25zdAog
ewogICAgIGlmICghaXNPYmplY3QoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L0RpY3Rpb25hcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RpY3Rpb25h
cnkuaAppbmRleCBmMTUzZWE5YzgyOTg0ODA4MGYyZjVlNjg1YmNjNmE3NzM0M2Y1NGFlLi4xOTJi
MzFmNzJkNDAyYzEzMTBlNWZjYWNkZjFiN2QxYWViNDQ1OTlmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9EaWN0aW9uYXJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvRGljdGlvbmFyeS5oCkBAIC0zOCw2ICszOCw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorY2xhc3MgQXJyYXlWYWx1ZTsKIGNsYXNzIERPTVdpbmRvdzsKIGNsYXNzIElEQktl
eVJhbmdlOwogY2xhc3MgTWVkaWFLZXlFcnJvcjsKQEAgLTg2LDYgKzg3LDggQEAgcHVibGljOgog
ICAgIGJvb2wgZ2V0KGNvbnN0IFN0cmluZyYsIEhhc2hTZXQ8QXRvbWljU3RyaW5nPiYpIGNvbnN0
OwogICAgIGJvb2wgZ2V0KGNvbnN0IFN0cmluZyYsIERpY3Rpb25hcnkmKSBjb25zdDsKICAgICBi
b29sIGdldChjb25zdCBTdHJpbmcmLCBWZWN0b3I8U3RyaW5nPiYpIGNvbnN0OworICAgIGJvb2wg
Z2V0KGNvbnN0IFN0cmluZyYsIEFycmF5VmFsdWUmKSBjb25zdDsKKwogICAgIGJvb2wgZ2V0T3du
UHJvcGVydGllc0FzU3RyaW5nSGFzaE1hcChXVEY6Okhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+Jikg
Y29uc3Q7CiAKICAgICBib29sIGdldFdpdGhVbmRlZmluZWRPck51bGxDaGVjayhjb25zdCBTdHJp
bmcmLCBTdHJpbmcmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dFRhcmdldEZhY3RvcnkuaW4gYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5
LmluCmluZGV4IGZmNjBhYWQ0ZGI1OWY5Y2ZlN2Y5OGExYWRjOTVmN2Q5MTFjMGFjMzIuLjQ0ZThk
OGU4NWFmNTBjYjQ1YTA0YTgyNzBjMjRkMDU1MzQwYzMyMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgpAQCAtMjQsNiArMjQsNyBAQCBOb2RlCiBOb3RpZmljYXRp
b24gY29uZGl0aW9uYWw9Tk9USUZJQ0FUSU9OU3xMRUdBQ1lfTk9USUZJQ0FUSU9OUwogUGVlckNv
bm5lY3Rpb24wMCBjb25kaXRpb25hbD1NRURJQV9TVFJFQU0KIFBlcmZvcm1hbmNlIGNvbmRpdGlv
bmFsPVdFQl9USU1JTkcKK1JUQ1BlZXJDb25uZWN0aW9uIGNvbmRpdGlvbmFsPU1FRElBX1NUUkVB
TQogU2hhcmVkV29ya2VyIGNvbmRpdGlvbmFsPVNIQVJFRF9XT1JLRVJTCiBTaGFyZWRXb3JrZXJD
b250ZXh0IGNvbmRpdGlvbmFsPVNIQVJFRF9XT1JLRVJTCiBTb3VyY2VCdWZmZXJMaXN0IGNvbmRp
dGlvbmFsPU1FRElBX1NPVVJDRQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDFkNzY3MjY5ZTAyOGQxYmVkMzk3ZTZlMzA5ZTFm
YWJkYzQ2YTc2ZjMuLmM3ZWFiYjBjZGRlNzIyNjUzOTgzNzVhYTBmNzUyNzRiNzhmYmUzM2UgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0wNy0zMCAgVG9tbXkgV2lkZW5mbHljaHQgIDx0b21t
eXdAZ29vZ2xlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2UgYSBtaW5pbWFsIFJUQ1BlZXJDb25u
ZWN0aW9uIHRvZ2V0aGVyIHdpdGggRGljdGlvbmFyeSBjaGFuZ2VzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MjM4MAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVy
Q29ubmVjdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJl
YW0vUlRDUGVlckNvbm5lY3Rpb24uaHRtbDogQWRkZWQuCisKIDIwMTItMDctMzAgIFNoZXJpZmYg
Qm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQs
IHJvbGxpbmcgb3V0IHIxMjQwMDQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlh
c3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qv
bWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNm
MWJiYjU1NGVhZmUzZTBiY2JjN2QxZjRiMjRkNzVlODliNDI1MWMKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDI1IEBACitUZXN0cyB0aGUgUlRDUGVlckNvbm5lY3Rpb24gY29uc3Ry
dWN0b3IuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5ldyB3ZWJraXRS
VENQZWVyQ29ubmVjdGlvbihudWxsKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIG5l
dyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbihudWxsLCBudWxsKTsgZGlkIG5vdCB0aHJvdyBleGNl
cHRpb24uCitQQVNTIG5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbih1bmRlZmluZWQpOyBkaWQg
bm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgbmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKHVu
ZGVmaW5lZCwgdW5kZWZpbmVkKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIG5ldyB3
ZWJraXRSVENQZWVyQ29ubmVjdGlvbih7aWNlU2VydmVyczpbXX0sIG51bGwpOyBkaWQgbm90IHRo
cm93IGV4Y2VwdGlvbi4KK1BBU1MgbmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKHtpY2VTZXJ2
ZXJzOlt7dXJpOidzdHVuOmZvby5jb20nfV19LCBudWxsKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRp
b24uCitQQVNTIG5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbih7aWNlU2VydmVyczpbe3VyaTon
dHVybjpmb28uY29tJywgY3JlZGVudGlhbDoneCd9XX0sIG51bGwpOyBkaWQgbm90IHRocm93IGV4
Y2VwdGlvbi4KK1BBU1MgbmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKHtpY2VTZXJ2ZXJzOlt7
dXJpOid0dXJuOmZvby5jb20nLCBjcmVkZW50aWFsOid4J30se3VyaTonc3R1bjpiYXIuY29tJ31d
fSwgbnVsbCk7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBuZXcgd2Via2l0UlRDUGVl
ckNvbm5lY3Rpb24oKTsgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1
bWVudHMuCitQQVNTIG5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbignJyk7IHRocmV3IGV4Y2Vw
dGlvbiBUeXBlRXJyb3I6IE5vdCBhbiBvYmplY3QuLgorUEFTUyBuZXcgd2Via2l0UlRDUGVlckNv
bm5lY3Rpb24obnVsbCwgJycpOyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBOb3QgYW4gb2Jq
ZWN0Li4KK1BBU1MgbmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKHtmb29TZXJ2ZXJzOltdfSwg
bnVsbCk7IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNl
cHRpb24gMTcuCitQQVNTIG5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbih7aWNlU2VydmVyczp0
cnVlfSwgbnVsbCk7IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERP
TSBFeGNlcHRpb24gMTcuCitQQVNTIG5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbih7aWNlU2Vy
dmVyczpbMSwgMiwgM119LCBudWxsKTsgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01B
VENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KK1BBU1MgbmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0
aW9uKHtpY2VTZXJ2ZXJzOlt7fV19LCBudWxsKTsgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBF
X01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KK1BBU1MgbmV3IHdlYmtpdFJUQ1BlZXJD
b25uZWN0aW9uKHtpY2VTZXJ2ZXJzOlt7dXJsOidmb28nfV19LCBudWxsKTsgdGhyZXcgZXhjZXB0
aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMGYyOWU2YjI1OGUwZjgyNTMwN2MyODAwYzkzNWM1NjYxM2RmYzExOAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaHRt
bApAQCAtMCwwICsxLDMwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBI
VE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CitkZXNj
cmlwdGlvbigiVGVzdHMgdGhlIFJUQ1BlZXJDb25uZWN0aW9uIGNvbnN0cnVjdG9yLiIpOworCitz
aG91bGROb3RUaHJvdygibmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKG51bGwpOyIpOworc2hv
dWxkTm90VGhyb3coIm5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbihudWxsLCBudWxsKTsiKTsK
K3Nob3VsZE5vdFRocm93KCJuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24odW5kZWZpbmVkKTsi
KTsKK3Nob3VsZE5vdFRocm93KCJuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24odW5kZWZpbmVk
LCB1bmRlZmluZWQpOyIpOworc2hvdWxkTm90VGhyb3coIm5ldyB3ZWJraXRSVENQZWVyQ29ubmVj
dGlvbih7aWNlU2VydmVyczpbXX0sIG51bGwpOyIpOworc2hvdWxkTm90VGhyb3coIm5ldyB3ZWJr
aXRSVENQZWVyQ29ubmVjdGlvbih7aWNlU2VydmVyczpbe3VyaTonc3R1bjpmb28uY29tJ31dfSwg
bnVsbCk7Iik7CitzaG91bGROb3RUaHJvdygibmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKHtp
Y2VTZXJ2ZXJzOlt7dXJpOid0dXJuOmZvby5jb20nLCBjcmVkZW50aWFsOid4J31dfSwgbnVsbCk7
Iik7CitzaG91bGROb3RUaHJvdygibmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKHtpY2VTZXJ2
ZXJzOlt7dXJpOid0dXJuOmZvby5jb20nLCBjcmVkZW50aWFsOid4J30se3VyaTonc3R1bjpiYXIu
Y29tJ31dfSwgbnVsbCk7Iik7CisKK3Nob3VsZFRocm93KCJuZXcgd2Via2l0UlRDUGVlckNvbm5l
Y3Rpb24oKTsiKTsKK3Nob3VsZFRocm93KCJuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24oJycp
OyIpOworc2hvdWxkVGhyb3coIm5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbihudWxsLCAnJyk7
Iik7CitzaG91bGRUaHJvdygibmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKHtmb29TZXJ2ZXJz
OltdfSwgbnVsbCk7Iik7CitzaG91bGRUaHJvdygibmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9u
KHtpY2VTZXJ2ZXJzOnRydWV9LCBudWxsKTsiKTsKK3Nob3VsZFRocm93KCJuZXcgd2Via2l0UlRD
UGVlckNvbm5lY3Rpb24oe2ljZVNlcnZlcnM6WzEsIDIsIDNdfSwgbnVsbCk7Iik7CitzaG91bGRU
aHJvdygibmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKHtpY2VTZXJ2ZXJzOlt7fV19LCBudWxs
KTsiKTsKK3Nob3VsZFRocm93KCJuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24oe2ljZVNlcnZl
cnM6W3t1cmw6J2Zvbyd9XX0sIG51bGwpOyIpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
anMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>155296</attachid>
            <date>2012-07-30 08:22:27 -0700</date>
            <delta_ts>2012-07-31 01:31:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92380-20120730172210.patch</filename>
            <type>text/plain</type>
            <size>48624</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0MDE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWRmNTIxNDEyYTU2ZDg4
ZTFkYjBkNGIwOGM3OWFlOTU3YmE3YTFjYi4uM2U2MmZhZDc5MmIxYzA2NDM2YTc2ZjkxYjA0NDQ3
ZWE3MmU2OTBlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk2IEBACisyMDEyLTA3LTMwICBUb21t
eSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIEludHJvZHVjZSBh
IG1pbmltYWwgUlRDUGVlckNvbm5lY3Rpb24gdG9nZXRoZXIgd2l0aCBEaWN0aW9uYXJ5IGNoYW5n
ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkyMzgw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBpbnRyb2R1Y2VzIGEgc2hlbGwgUlRDUGVlckNvbm5lY3Rpb24gdG9nZXRoZXIgd2l0aCBu
ZWNjZWNhcnkgY2hhbmdlcyB0bworICAgICAgICBEaWN0aW9uYXJ5LgorCisgICAgICAgIFRoZSBX
M0Mgc3BlY2lmaWNhdGlvbiBjYW4gYmUgZm91bmQgaGVyZToKKyAgICAgICAgaHR0cDovL2Rldi53
My5vcmcvMjAxMS93ZWJydGMvZWRpdG9yL3dlYnJ0Yy5odG1sI3J0Y3BlZXJjb25uZWN0aW9uCisK
KyAgICAgICAgU2luY2UgRGljdGlvbmFyaWVzIGNhbid0IGJlIGZ1bGx5IGNvcGllZCBhcm91bmQg
YWRkaW5nCisgICAgICAgIGdldChjb25zdCBTdHJpbmcmIG5hbWUsIFZlY3RvcjxEaWN0aW9uYXJ5
PiYgcmVzdWx0KQorICAgICAgICBpc24ndCBmZWFzaWJsZSBzbyBJIGhhdmUgYWRkZWQgYSBuZXcg
QXJyYXlWYWx1ZSBjbGFzcy4KKworICAgICAgICBUZXN0OiBmYXN0L21lZGlhc3RyZWFtL1JUQ1Bl
ZXJDb25uZWN0aW9uLmh0bWwKKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAq
IEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9ET01X
aW5kb3dNZWRpYVN0cmVhbS5pZGw6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQ
ZWVyQ29ubmVjdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChS
VENJY2VTZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UlRDSWNlU2VydmVyOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6UlRDSWNlU2VydmVyOjp+UlRDSWNlU2VydmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlJUQ0ljZVNlcnZlcjo6dXJpKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0ljZVNl
cnZlcjo6Y3JlZGVudGlhbCk6CisgICAgICAgIChXZWJDb3JlOjpSVENJY2VTZXJ2ZXI6OlJUQ0lj
ZVNlcnZlcik6CisgICAgICAgIChSVENDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlJUQ0NvbmZpZ3VyYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSVENDb25maWd1
cmF0aW9uOjp+UlRDQ29uZmlndXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSVENDb25maWd1
cmF0aW9uOjphcHBlbmRTZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UlRDQ29uZmlndXJhdGlv
bjo6bnVtYmVyT2ZTZXJ2ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0NvbmZpZ3VyYXRpb246
OnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpSVENDb25maWd1cmF0aW9uOjpSVENDb25maWd1
cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjpwYXJzZUNvbmZp
Z3VyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb246OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6UlRDUGVlckNvbm5lY3Rpb24p
OgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb246On5SVENQZWVyQ29ubmVjdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6aW50ZXJmYWNlTmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6c3RvcCk6CisgICAg
ICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6ZXZlbnRUYXJnZXREYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjplbnN1cmVFdmVudFRhcmdldERhdGEpOgor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFJUQ1BlZXJDb25uZWN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjpyZWZFdmVudFRhcmdldCk6CisgICAgICAg
IChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6ZGVyZWZFdmVudFRhcmdldCk6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5pZGw6IEFkZGVkLgorICAg
ICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogVXNlSlNDLmNtYWtlOgorICAgICAgICAqIFdl
YkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmlu
ZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmg6CisgICAgICAgIChXZWJDb3Jl
OjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRSVENQZWVyQ29ubmVjdGlvbkVuYWJsZWQp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0FycmF5VmFsdWUuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6QXJyYXlWYWx1ZTo6QXJyYXlWYWx1ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBcnJheVZhbHVlOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViQ29y
ZTo6QXJyYXlWYWx1ZTo6aXNVbmRlZmluZWRPck51bGwpOgorICAgICAgICAoV2ViQ29yZTo6QXJy
YXlWYWx1ZTo6bGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OkFycmF5VmFsdWU6OmdldCk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvQXJyYXlWYWx1ZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoQXJyYXlWYWx1ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNEaWN0
aW9uYXJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRGljdGlvbmFyeTo6Y29udmVydFZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRGljdGlvbmFy
eS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvQXJyYXlWYWx1
ZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpBcnJh
eVZhbHVlOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViQ29yZTo6QXJyYXlWYWx1ZTo6aXNVbmRl
ZmluZWRPck51bGwpOgorICAgICAgICAoV2ViQ29yZTo6QXJyYXlWYWx1ZTo6bGVuZ3RoKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFycmF5VmFsdWU6OmdldCk6CisgICAgICAgICogYmluZGluZ3Mvdjgv
QXJyYXlWYWx1ZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQXJyYXlW
YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcnJheVZhbHVlOjpBcnJheVZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFycmF5VmFsdWU6On5BcnJheVZhbHVlKToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9EaWN0aW9uYXJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpY3Rpb25hcnk6OmdldCk6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9EaWN0aW9uYXJ5Lmg6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKERpY3Rpb25hcnkpOgorICAgICAgICAqIGRv
bS9FdmVudFRhcmdldEZhY3RvcnkuaW46CisKIDIwMTItMDctMzAgIFNoZXJpZmYgQm90ICA8d2Vi
a2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcg
b3V0IHIxMjQwMDAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBi
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDZmOGZmNjVlMjM5NjRhZDY4NGI1
NTNjNDM1NzRmMDhmMzcwOTk5MjguLmZmMmU3YmQ2YTYwYTllODAwYTk5MjAxZmU5MjcxYWE1MmZj
YTdmODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0yMDYsNiArMjA2LDcgQEAgU0VUKFdlYkNv
cmVfSURMX0ZJTEVTCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFF
cnJvckNhbGxiYWNrLmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1l
ZGlhU3VjY2Vzc0NhbGxiYWNrLmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5l
Y3Rpb24wMC5pZGwKKyAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmlk
bAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vU2Vzc2lvbkRlc2NyaXB0aW9uLmlkbAogCiAgICAg
TW9kdWxlcy9uZXR3b3JraW5mby9OYXZpZ2F0b3JOZXR3b3JrSW5mb0Nvbm5lY3Rpb24uaWRsCkBA
IC04MjUsNiArODI2LDcgQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIE1vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW1UcmFja0xpc3QuY3BwCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9O
YXZpZ2F0b3JNZWRpYVN0cmVhbS5jcHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25u
ZWN0aW9uMDAuY3BwCisgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5j
cHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1Nlc3Npb25EZXNjcmlwdGlvbi5jcHAKICAgICBN
b2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNvbnRyb2xsZXIuY3BwCiAgICAgTW9kdWxlcy9t
ZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KaW5kZXggYzllOTIzMDkwZWI2NDcxNjliMTkyODkwYmYxNThhODA3NTdkNDU1NC4uNDg1MGIw
OGY3Y2M3MmJmM2FlZDQ4ZjkyZjBiYmQ2YWYwZDVkMGRkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCkBAIC00OTEsNiArNDkxLDggQEAgd2ViY29yZV9idWlsdF9zb3VyY2VzICs9IFwK
IAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUmVjdC5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTUkdCQ29sb3IuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUkdCQ29sb3Iu
aCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ1BlZXJDb25uZWN0aW9uLmNwcCBcCisJ
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ1BlZXJDb25uZWN0aW9uLmggXAogCURlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNTY3JlZW4uY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
U2NyZWVuLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNTY3JpcHRQcm9maWxlLmNwcCBc
CkBAIC03MTUsNiArNzE3LDcgQEAgZG9tX2JpbmRpbmdfaWRscyArPSBcCiAJJChXZWJDb3JlKS9N
b2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2suaWRsIFwK
IAkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vz
c0NhbGxiYWNrLmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25u
ZWN0aW9uMDAuaWRsIFwKKwkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNv
bm5lY3Rpb24uaWRsIFwKIAkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vU2Vzc2lvbkRl
c2NyaXB0aW9uLmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZp
Y2F0aW9uLmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0
aW9uQ2VudGVyLmlkbCBcCkBAIC0xMTk5LDYgKzEyMDIsOCBAQCB3ZWJjb3JlX21vZHVsZXNfc291
cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JV
c2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2suaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9QZWVyQ29ubmVjdGlvbjAwLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbjAwLmggXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmggXAogCVNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vU2Vzc2lvbkRlc2NyaXB0aW9uLmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9TZXNzaW9uRGVzY3JpcHRpb24uaCBcCiAJU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDbGllbnQuaCBcCkBAIC0xMzY0LDYg
KzEzNjksOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2dlbmVyaWMvR2VuZXJpY0JpbmRpbmcuaCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2Vu
ZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmggXAorCVNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0FycmF5VmFsdWUuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9B
cnJheVZhbHVlLmggXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZFNjcmlwdFNv
dXJjZVByb3ZpZGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhbGxiYWNrRnVu
Y3Rpb24uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWxsYmFja0Z1bmN0aW9u
LmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9ET01X
aW5kb3dNZWRpYVN0cmVhbS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L0RPTVdpbmRvd01lZGlhU3RyZWFtLmlkbAppbmRleCA3NDJhNjI0NjMyZTY5YzA2ZjAyZjAyNTI0
MTJiYmEyNzNiMmFmNWE1Li5lYTk0NmE0OTY2YmU4YmJiZjQ4YTNhYzBhNTI2ZWI1NDA3NjUxZDRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0RPTVdpbmRv
d01lZGlhU3RyZWFtLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L0RPTVdpbmRvd01lZGlhU3RyZWFtLmlkbApAQCAtMzIsNiArMzIsNyBAQCBtb2R1bGUgd2luZG93
IHsKICAgICBdIERPTVdpbmRvd01lZGlhU3RyZWFtIHsKICAgICAgICAgYXR0cmlidXRlIFtWOEVu
YWJsZWRBdFJ1bnRpbWVdIE1lZGlhU3RyZWFtQ29uc3RydWN0b3Igd2Via2l0TWVkaWFTdHJlYW07
CiAgICAgICAgIGF0dHJpYnV0ZSBbVjhFbmFibGVkQXRSdW50aW1lXSBQZWVyQ29ubmVjdGlvbjAw
Q29uc3RydWN0b3Igd2Via2l0UGVlckNvbm5lY3Rpb24wMDsKKyAgICAgICAgYXR0cmlidXRlIFtW
OEVuYWJsZWRBdFJ1bnRpbWVdIFJUQ1BlZXJDb25uZWN0aW9uQ29uc3RydWN0b3Igd2Via2l0UlRD
UGVlckNvbm5lY3Rpb247CiAgICAgICAgIGF0dHJpYnV0ZSBTZXNzaW9uRGVzY3JpcHRpb25Db25z
dHJ1Y3RvciBTZXNzaW9uRGVzY3JpcHRpb247CiAgICAgICAgIGF0dHJpYnV0ZSBJY2VDYW5kaWRh
dGVDb25zdHJ1Y3RvciBJY2VDYW5kaWRhdGU7CiAgICAgICAgIGF0dHJpYnV0ZSBNZWRpYVN0cmVh
bUV2ZW50Q29uc3RydWN0b3IgTWVkaWFTdHJlYW1FdmVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNzcwYTQ4MDhmMWQ2NDg0MTk5Nzk4MDQ1YzlhODA1OTU4YTc1NzNmNwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5l
Y3Rpb24uY3BwCkBAIC0wLDAgKzEsMTc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqICAgIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqIDMu
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29u
dHJpYnV0b3JzCisgKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tIHRoaXMKKyAqICAgIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIlJUQ1BlZXJDb25uZWN0aW9u
LmgiCisKKyNpbmNsdWRlICJBcnJheVZhbHVlLmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5o
IgorI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gRklYTUU6IFJUQ0ljZVNlcnZlciBhbmQgUlRD
Q29uZmlncmF0aW9uIGFyZSBwbGFjZWQgaGVyZSB0ZW1wb3JhcmlseS4KKy8vIFRoZWlyIGZpbmFs
IHBsYWNlIGlzIGluIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtLgorY2xhc3Mg
UlRDSWNlU2VydmVyIDogcHVibGljIFJlZkNvdW50ZWQ8UlRDSWNlU2VydmVyPiB7CitwdWJsaWM6
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8UlRDSWNlU2VydmVyPiBjcmVhdGUoY29uc3QgS1VSTCYg
dXJpLCBjb25zdCBTdHJpbmcmIGNyZWRlbnRpYWwpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBSVENJ
Y2VTZXJ2ZXIodXJpLCBjcmVkZW50aWFsKSk7IH0KKyAgICB2aXJ0dWFsIH5SVENJY2VTZXJ2ZXIo
KSB7IH0KKworICAgIGNvbnN0IEtVUkwmIHVyaSgpIHsgcmV0dXJuIG1fdXJpOyB9CisgICAgY29u
c3QgU3RyaW5nJiBjcmVkZW50aWFsKCkgeyByZXR1cm4gbV9jcmVkZW50aWFsOyB9CisKK3ByaXZh
dGU6CisgICAgUlRDSWNlU2VydmVyKGNvbnN0IEtVUkwmIHVyaSwgY29uc3QgU3RyaW5nJiBjcmVk
ZW50aWFsKQorICAgICAgICA6IG1fdXJpKHVyaSkKKyAgICAgICAgLCBtX2NyZWRlbnRpYWwoY3Jl
ZGVudGlhbCkKKyAgICB7CisgICAgfQorCisgICAgS1VSTCBtX3VyaTsKKyAgICBTdHJpbmcgbV9j
cmVkZW50aWFsOworfTsKKworY2xhc3MgUlRDQ29uZmlndXJhdGlvbiA6IHB1YmxpYyBSZWZDb3Vu
dGVkPFJUQ0NvbmZpZ3VyYXRpb24+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxS
VENDb25maWd1cmF0aW9uPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZihuZXcgUlRDQ29uZmln
dXJhdGlvbigpKTsgfQorICAgIHZpcnR1YWwgflJUQ0NvbmZpZ3VyYXRpb24oKSB7IH0KKworICAg
IHZvaWQgYXBwZW5kU2VydmVyKFBhc3NSZWZQdHI8UlRDSWNlU2VydmVyPiBzZXJ2ZXIpIHsgbV9z
ZXJ2ZXJzLmFwcGVuZChzZXJ2ZXIpOyB9CisgICAgc2l6ZV90IG51bWJlck9mU2VydmVycygpIHsg
cmV0dXJuIG1fc2VydmVycy5zaXplKCk7IH0KKyAgICBSVENJY2VTZXJ2ZXIqIHNlcnZlcihzaXpl
X3QgaW5kZXgpIHsgcmV0dXJuIG1fc2VydmVyc1tpbmRleF0uZ2V0KCk7IH0KKworcHJpdmF0ZToK
KyAgICBSVENDb25maWd1cmF0aW9uKCkgeyB9CisKKyAgICBWZWN0b3I8UmVmUHRyPFJUQ0ljZVNl
cnZlcj4gPiBtX3NlcnZlcnM7Cit9OworCitQYXNzUmVmUHRyPFJUQ0NvbmZpZ3VyYXRpb24+IFJU
Q1BlZXJDb25uZWN0aW9uOjpwYXJzZUNvbmZpZ3VyYXRpb24oY29uc3QgRGljdGlvbmFyeSYgY29u
ZmlndXJhdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKGNvbmZpZ3VyYXRpb24u
aXNVbmRlZmluZWRPck51bGwoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBBcnJheVZhbHVl
IGljZVNlcnZlcnM7CisgICAgYm9vbCBvayA9IGNvbmZpZ3VyYXRpb24uZ2V0KCJpY2VTZXJ2ZXJz
IiwgaWNlU2VydmVycyk7CisgICAgaWYgKCFvaykgeworICAgICAgICBlYyA9IFRZUEVfTUlTTUFU
Q0hfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBzaXplX3QgbnVtYmVyT2ZT
ZXJ2ZXJzOworICAgIG9rID0gaWNlU2VydmVycy5sZW5ndGgobnVtYmVyT2ZTZXJ2ZXJzKTsKKyAg
ICBpZiAoIW9rKSB7CisgICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CisgICAgICAgIHJl
dHVybiAwOworICAgIH0KKworICAgIFJlZlB0cjxSVENDb25maWd1cmF0aW9uPiBydGNDb25maWd1
cmF0aW9uID0gUlRDQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7CisKKyAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG51bWJlck9mU2VydmVyczsgKytpKSB7CisgICAgICAgIERpY3Rpb25hcnkgaWNl
U2VydmVyOworICAgICAgICBvayA9IGljZVNlcnZlcnMuZ2V0KGksIGljZVNlcnZlcik7CisgICAg
ICAgIGlmICghb2spIHsKKyAgICAgICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CisgICAg
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorCisgICAgICAgIFN0cmluZyB1cmksIGNyZWRl
bnRpYWw7CisgICAgICAgIG9rID0gaWNlU2VydmVyLmdldCgidXJpIiwgdXJpKTsKKyAgICAgICAg
aWYgKCFvaykgeworICAgICAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKKyAgICAgICAg
ICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIEtVUkwgdXJsKEtVUkwoKSwgdXJpKTsK
KyAgICAgICAgaWYgKCF1cmwuaXNWYWxpZCgpIHx8ICEodXJsLnByb3RvY29sSXMoInR1cm4iKSB8
fCB1cmwucHJvdG9jb2xJcygic3R1biIpKSkgeworICAgICAgICAgICAgZWMgPSBUWVBFX01JU01B
VENIX0VSUjsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisKKyAgICAgICAgaWNl
U2VydmVyLmdldCgiY3JlZGVudGlhbCIsIGNyZWRlbnRpYWwpOworCisgICAgICAgIHJ0Y0NvbmZp
Z3VyYXRpb24tPmFwcGVuZFNlcnZlcihSVENJY2VTZXJ2ZXI6OmNyZWF0ZSh1cmwsIGNyZWRlbnRp
YWwpKTsKKyAgICB9CisgICAgcmV0dXJuIHJ0Y0NvbmZpZ3VyYXRpb24ucmVsZWFzZSgpOworfQor
CitQYXNzUmVmUHRyPFJUQ1BlZXJDb25uZWN0aW9uPiBSVENQZWVyQ29ubmVjdGlvbjo6Y3JlYXRl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IERpY3Rpb25hcnkmIHJ0Y0Nv
bmZpZ3VyYXRpb24sIGNvbnN0IERpY3Rpb25hcnkmLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAg
ICBSZWZQdHI8UlRDQ29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IHBhcnNlQ29uZmlndXJh
dGlvbihydGNDb25maWd1cmF0aW9uLCBlYyk7CisgICAgaWYgKGVjKQorICAgICAgICByZXR1cm4g
MDsKKworICAgIFJlZlB0cjxSVENQZWVyQ29ubmVjdGlvbj4gcGVlckNvbm5lY3Rpb24gPSBhZG9w
dFJlZihuZXcgUlRDUGVlckNvbm5lY3Rpb24oY29udGV4dCwgY29uZmlndXJhdGlvbi5yZWxlYXNl
KCksIGVjKSk7CisgICAgaWYgKGVjKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHBlZXJDb25u
ZWN0aW9uLT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAgICByZXR1cm4gcGVlckNvbm5lY3Rpb24ucmVs
ZWFzZSgpOworfQorCitSVENQZWVyQ29ubmVjdGlvbjo6UlRDUGVlckNvbm5lY3Rpb24oU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxSVENDb25maWd1cmF0aW9uPiwg
RXhjZXB0aW9uQ29kZSYgZWMpCisgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCwgdGhpcykK
K3sKK30KKworUlRDUGVlckNvbm5lY3Rpb246On5SVENQZWVyQ29ubmVjdGlvbigpCit7Cit9CisK
K2NvbnN0IEF0b21pY1N0cmluZyYgUlRDUGVlckNvbm5lY3Rpb246OmludGVyZmFjZU5hbWUoKSBj
b25zdAoreworICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yUlRDUGVlckNvbm5l
Y3Rpb247Cit9CisKK1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIFJUQ1BlZXJDb25uZWN0aW9uOjpz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gQWN0aXZlRE9NT2Jq
ZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Cit9CisKK3ZvaWQgUlRDUGVlckNvbm5lY3Rp
b246OnN0b3AoKQoreworICAgIC8vIEZJWE1FOiBNYWtlIHN1cmUgdGhhdCB0aGlzIG9iamVjdCBz
dG9wcyBwb3N0aW5nIGV2ZW50cyBhbmQgcmVsZWFzZXMgcmVzb3VyY2VzIGF0IHRoaXMgc3RhZ2Uu
Cit9CisKK0V2ZW50VGFyZ2V0RGF0YSogUlRDUGVlckNvbm5lY3Rpb246OmV2ZW50VGFyZ2V0RGF0
YSgpCit7CisgICAgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsKK30KKworRXZlbnRUYXJnZXRE
YXRhKiBSVENQZWVyQ29ubmVjdGlvbjo6ZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkKK3sKKyAgICBy
ZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE3
ZjI4ZDE1MDBjMzAxZTA5YWEzYTBiMTA5MDgzYzM0NzFiYTEwZDQKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmgK
QEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisgKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycwor
ICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbSB0aGlzCisgKiAgICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUlRDUGVlckNvbm5lY3Rpb25faAorI2Rl
ZmluZSBSVENQZWVyQ29ubmVjdGlvbl9oCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisj
aW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRGljdGlvbmFyeS5oIgorI2lu
Y2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQmFzZS5oIgorI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFJUQ0Nv
bmZpZ3VyYXRpb247CisKK2NsYXNzIFJUQ1BlZXJDb25uZWN0aW9uIDogcHVibGljIFJlZkNvdW50
ZWQ8UlRDUGVlckNvbm5lY3Rpb24+LCBwdWJsaWMgRXZlbnRUYXJnZXQsIHB1YmxpYyBBY3RpdmVE
T01PYmplY3QgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJUQ1BlZXJDb25uZWN0
aW9uPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IERpY3Rpb25hcnkmIHJ0
Y0NvbmZpZ3VyYXRpb24sIGNvbnN0IERpY3Rpb25hcnkmIG1lZGlhQ29uc3RyYWludHMsIEV4Y2Vw
dGlvbkNvZGUmKTsKKyAgICB+UlRDUGVlckNvbm5lY3Rpb24oKTsKKworICAgIC8vIEV2ZW50VGFy
Z2V0CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25z
dCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBPVkVSUklERTsKKworICAgIC8vIEFjdGl2ZURPTU9iamVj
dAorICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgT1ZFUlJJREU7CisKKyAgICB1c2luZyBSZWZDb3Vu
dGVkPFJUQ1BlZXJDb25uZWN0aW9uPjo6cmVmOworICAgIHVzaW5nIFJlZkNvdW50ZWQ8UlRDUGVl
ckNvbm5lY3Rpb24+OjpkZXJlZjsKKworcHJpdmF0ZToKKyAgICBSVENQZWVyQ29ubmVjdGlvbihT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxSVENDb25maWd1cmF0aW9uPiwgRXhj
ZXB0aW9uQ29kZSYpOworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8UlRDQ29uZmlndXJhdGlvbj4g
cGFyc2VDb25maWd1cmF0aW9uKGNvbnN0IERpY3Rpb25hcnkmIGNvbmZpZ3VyYXRpb24sIEV4Y2Vw
dGlvbkNvZGUmKTsKKworICAgIC8vIEV2ZW50VGFyZ2V0IGltcGxlbWVudGF0aW9uLgorICAgIHZp
cnR1YWwgRXZlbnRUYXJnZXREYXRhKiBldmVudFRhcmdldERhdGEoKTsKKyAgICB2aXJ0dWFsIEV2
ZW50VGFyZ2V0RGF0YSogZW5zdXJlRXZlbnRUYXJnZXREYXRhKCk7CisgICAgdmlydHVhbCB2b2lk
IHJlZkV2ZW50VGFyZ2V0KCkgeyByZWYoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50
VGFyZ2V0KCkgeyBkZXJlZigpOyB9CisgICAgRXZlbnRUYXJnZXREYXRhIG1fZXZlbnRUYXJnZXRE
YXRhOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1F
RElBX1NUUkVBTSkKKworI2VuZGlmIC8vIFJUQ1BlZXJDb25uZWN0aW9uX2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaWRs
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5p
ZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNDRhZDcyMzViZTRhMzgzN2U1MDgwMGIwOWRjYWRmOTM0YjI0Yzg1NQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UGVlckNvbm5lY3Rpb24uaWRsCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogICAgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJpYnV0aW9u
LgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cyBjb250cmlidXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcworICogICAgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1bGUgbWVkaWFz
dHJlYW0geworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9TUVESUFfU1RS
RUFNLAorICAgICAgICBBY3RpdmVET01PYmplY3QsCisgICAgICAgIENvbnN0cnVjdG9yKGluIERp
Y3Rpb25hcnkgcnRjSUNFU2VydmVycywgaW4gW09wdGlvbmFsPURlZmF1bHRJc1VuZGVmaW5lZF0g
RGljdGlvbmFyeSBtZWRpYUNvbnN0cmFpbnRzKSwKKyAgICAgICAgQ29uc3RydWN0b3JSYWlzZXNF
eGNlcHRpb24sCisgICAgICAgIENhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCisgICAg
ICAgIEV2ZW50VGFyZ2V0CisgICAgXSBSVENQZWVyQ29ubmVjdGlvbiB7CisgICAgICAgIC8vIEV2
ZW50VGFyZ2V0IGludGVyZmFjZQorICAgICAgICB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoaW4gRE9N
U3RyaW5nIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBFdmVudExpc3Rl
bmVyIGxpc3RlbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFs
XSBib29sZWFuIHVzZUNhcHR1cmUpOworICAgICAgICB2b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXIo
aW4gRE9NU3RyaW5nIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBF
dmVudExpc3RlbmVyIGxpc3RlbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW4gW09wdGlvbmFsXSBib29sZWFuIHVzZUNhcHR1cmUpOworICAgICAgICBib29sZWFuIGRpc3Bh
dGNoRXZlbnQoaW4gRXZlbnQgZXZlbnQpCisgICAgICAgICAgICByYWlzZXMoRXZlbnRFeGNlcHRp
b24pOworICAgIH07CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkg
Yi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IDBlOTA4ZWIwMDc5NjgxYjQzZjAxNGQ4
ZWNmYmFmMzgzYTA0YzZlZWMuLjA5NmE1ZjM0YTExMjQ4OThlNGFjYzlmMjAyYzUzZWE4MTdmNzIw
ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dl
YkNvcmUvVGFyZ2V0LnByaQpAQCAtNzMsNiArNzMsNyBAQCBTT1VSQ0VTICs9IFwKIAogU09VUkNF
UyArPSBcCiAgICAgIGJpbmRpbmdzL1NjcmlwdENvbnRyb2xsZXJCYXNlLmNwcCBcCisgICAgIGJp
bmRpbmdzL2pzL0FycmF5VmFsdWUuY3BwIFwKICAgICAgYmluZGluZ3MvanMvQ2FsbGJhY2tGdW5j
dGlvbi5jcHAgXAogICAgICBiaW5kaW5ncy9qcy9ET01PYmplY3RIYXNoVGFibGVNYXAuY3BwIFwK
ICAgICAgYmluZGluZ3MvanMvRE9NV3JhcHBlcldvcmxkLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UKaW5k
ZXggMDBmMWJlMTAyOGVjMWE3OWQyY2QwYmNmZTBkYjAyZjMzMWM1YTFiYS4uOTU4OTVlZDJhZTFh
M2U0YjJiOWYxODJmMmRjYzNmOGRjYzE0MDdlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
VXNlSlNDLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFrZQpAQCAtMjIsNiAr
MjIsNyBAQCBJRiAoUE9SVCBNQVRDSEVTICJCbGFja0JlcnJ5IikKIEVORElGICgpCiAKIExJU1Qo
QVBQRU5EIFdlYkNvcmVfU09VUkNFUworICAgIGJpbmRpbmdzL2pzL0FycmF5VmFsdWUuY3BwCiAg
ICAgYmluZGluZ3MvanMvQ2FsbGJhY2tGdW5jdGlvbi5jcHAKICAgICBiaW5kaW5ncy9qcy9ET01P
YmplY3RIYXNoVGFibGVNYXAuY3BwCiAgICAgYmluZGluZ3MvanMvRE9NV3JhcHBlcldvcmxkLmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpCmluZGV4IDNlYzg0ZjRiNTI2OGE4YzJjNDEwNmIwYTE0NmM1ZjgwZjlj
ZTEzZmEuLjNiZmQwYjFlOGZhZjA0NTlhOWViMDVlNzc0NDhlZmQ5ZDkxZTcxY2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKQEAgLTg0MSw2ICs4NDEsNyBAQAogICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFz
dHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjay5pZGwnLAogICAgICAgICAgICAg
J01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrLmlk
bCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbjAwLmlk
bCcsCisgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5p
ZGwnLAogICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vU2Vzc2lvbkRlc2NyaXB0aW9u
LmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9ub3RpZmljYXRpb25zL0RPTVdpbmRvd05vdGlm
aWNhdGlvbnMuaWRsJywKICAgICAgICAgICAgICdNb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZp
Y2F0aW9uLmlkbCcsCkBAIC0xNTY3LDYgKzE1NjgsOCBAQAogICAgICAgICAgICAgJ01vZHVsZXMv
bWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrLmgnLAogICAgICAg
ICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb24wMC5jcHAnLAogICAgICAg
ICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb24wMC5oJywKKyAgICAgICAg
ICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcCcsCisgICAgICAg
ICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oJywKICAgICAgICAg
ICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL1Nlc3Npb25EZXNjcmlwdGlvbi5jcHAnLAogICAgICAg
ICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vU2Vzc2lvbkRlc2NyaXB0aW9uLmgnLAogICAgICAg
ICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ2xpZW50LmgnLApAQCAtMTkwOCw2
ICsxOTExLDggQEAKICAgICAgICAgICAgICdiaW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTU9iamVj
dC5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy9nb2JqZWN0L1dlYktpdEhUTUxFbGVtZW50V3Jh
cHBlckZhY3RvcnkuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9nb2JqZWN0L1dlYktpdEhU
TUxFbGVtZW50V3JhcHBlckZhY3RvcnkuaCcsCisgICAgICAgICAgICAnYmluZGluZ3MvanMvQXJy
YXlWYWx1ZS5jcHAnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0FycmF5VmFsdWUuaCcsCiAg
ICAgICAgICAgICAnYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXIuaCcsCiAg
ICAgICAgICAgICAnYmluZGluZ3MvanMvQ2FsbGJhY2tGdW5jdGlvbi5jcHAnLAogICAgICAgICAg
ICAgJ2JpbmRpbmdzL2pzL0NhbGxiYWNrRnVuY3Rpb24uaCcsCkBAIC0yMTUxLDYgKzIxNTYsOCBA
QAogICAgICAgICAgICAgJ2JpbmRpbmdzL29iamMvT2JqQ05vZGVGaWx0ZXJDb25kaXRpb24ubW0n
LAogICAgICAgICAgICAgJ2JpbmRpbmdzL29iamMvUHVibGljRE9NSW50ZXJmYWNlcy5oJywKICAg
ICAgICAgICAgICdiaW5kaW5ncy9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbScsCisgICAgICAgICAg
ICAnYmluZGluZ3MvdjgvQXJyYXlWYWx1ZS5jcHAnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4
L0FycmF5VmFsdWUuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvRE9NRGF0YS5jcHAnLAog
ICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L0RPTURhdGEuaCcsCiAgICAgICAgICAgICAnYmluZGlu
Z3MvdjgvRE9NRGF0YVN0b3JlLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCmluZGV4IDY0MjAyOTM1OWEzMTVhNjcxNjg2YzIzMTUyYmU4NWFiZGMy
MTU1NDEuLmUyZDQ0N2NlNDliNzc0Y2FkNGJmMjI1Yzc1ZTM5ZmRmZDYxYThhZTIgMTAwNzU1Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC02Mzc5Nyw2ICs2
Mzc5Nyw2MiBAQAogCQkJPEZpbHRlcgogCQkJCU5hbWU9ImpzIgogCQkJCT4KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPEZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEFycmF5VmFsdWUuY3BwIgor
CQkJCQk+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJTmFtZT0iRGVidWd8V2luMzIi
CisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJCQkJCTxUb29sCisJ
CQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJCTwvRmlsZUNvbmZp
Z3VyYXRpb24+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJTmFtZT0iUmVsZWFzZXxX
aW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJPFRv
b2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJPC9GaWxl
Q29uZmlndXJhdGlvbj4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQlOYW1lPSJEZWJ1
Z19DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJ
CQkJCT4KKwkJCQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJ
CS8+CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgor
CQkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCQlFeGNsdWRlZEZy
b21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJCQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkNDTENv
bXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCTxG
aWxlQ29uZmlndXJhdGlvbgorCQkJCQkJTmFtZT0iRGVidWdfQWxsfFdpbjMyIgorCQkJCQkJRXhj
bHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9
IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgor
CQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IlByb2R1Y3Rpb258V2luMzIiCisJ
CQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJCQkJCTxUb29sCisJCQkJ
CQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJCTwvRmlsZUNvbmZpZ3Vy
YXRpb24+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xBcnJheVZhbHVlLmgi
CisJCQkJCT4KKwkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxi
aW5kaW5nc1xqc1xDYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlci5oIgogCQkJCQk+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYzNj
YTM0ZTQzMjFjM2IyM2FlMWM5N2U4YjI4YWYyYmU1MDdhNmJiMS4uMGUwNzJiYzEyMWMzNjYzMDQy
MzM3Y2FhMWJmNzNjNjE4ZDIzOWVlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTI4Nyw2ICsxMjg3LDggQEAKIAkJNDlBRTJE
OTcxMzRFRTVGOTAwNzI5MjBBIC8qIENhbGN1bGF0aW9uVmFsdWUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5QUUyRDk1MTM0RUU1RjkwMDcyOTIwQSAv
KiBDYWxjdWxhdGlvblZhbHVlLmggKi87IH07CiAJCTQ5QUYyRDY5MTQ0MzVEMDUwMDE2QTc4NCAv
KiBEaXNwbGF5UmVmcmVzaE1vbml0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ5QUYyRDY4MTQ0MzVEMDUwMDE2QTc4NCAvKiBEaXNwbGF5UmVmcmVz
aE1vbml0b3IuaCAqLzsgfTsKIAkJNDlBRjJENkMxNDQzNUQyMTAwMTZBNzg0IC8qIERpc3BsYXlS
ZWZyZXNoTW9uaXRvck1hYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0OUFGMkQ2QjE0NDM1RDIxMDAxNkE3ODQgLyogRGlzcGxheVJlZnJlc2hNb25p
dG9yTWFjLmNwcCAqLzsgfTsKKwkJNDlCMzc2MEMxNUM2QzY4NDAwNTkxMzFEIC8qIEFycmF5VmFs
dWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlC
Mzc2MEExNUM2QzY4NDAwNTkxMzFEIC8qIEFycmF5VmFsdWUuY3BwICovOyB9OworCQk0OUIzNzYw
RDE1QzZDNjg0MDA1OTEzMUQgLyogQXJyYXlWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlCMzc2MEIxNUM2QzY4NDAwNTkxMzFEIC8qIEFycmF5
VmFsdWUuaCAqLzsgfTsKIAkJNDlDN0I5OTMxMDQyRDJEMzAwMDlENDQ3IC8qIEpTV2ViR0xCdWZm
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlD
N0I5ODAxMDQyRDJEMzAwMDlENDQ3IC8qIEpTV2ViR0xCdWZmZXIuY3BwICovOyB9OwogCQk0OUM3
Qjk5NDEwNDJEMkQzMDAwOUQ0NDcgLyogSlNXZWJHTEJ1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlDN0I5ODExMDQyRDJEMzAwMDlENDQ3IC8q
IEpTV2ViR0xCdWZmZXIuaCAqLzsgfTsKIAkJNDlDN0I5OTUxMDQyRDJEMzAwMDlENDQ3IC8qIEpT
SW50OEFycmF5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ5QzdCOTgyMTA0MkQyRDMwMDA5RDQ0NyAvKiBKU0ludDhBcnJheS5jcHAgKi87IH07CkBA
IC04Mzg2LDYgKzgzODgsOCBAQAogCQk0OUFFMkQ5NTEzNEVFNUY5MDA3MjkyMEEgLyogQ2FsY3Vs
YXRpb25WYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWxjdWxhdGlv
blZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5QUYyRDY4MTQ0MzVEMDUw
MDE2QTc4NCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRGlzcGxheVJlZnJlc2hNb25pdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ5QUYyRDZCMTQ0MzVEMjEwMDE2QTc4NCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0
b3JNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGlzcGxheVJl
ZnJlc2hNb25pdG9yTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDlCMzc2
MEExNUM2QzY4NDAwNTkxMzFEIC8qIEFycmF5VmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQXJyYXlWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTQ5QjM3NjBCMTVDNkM2ODQwMDU5MTMxRCAvKiBBcnJheVZhbHVlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFycmF5VmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDlDN0I5ODAxMDQyRDJEMzAwMDlENDQ3IC8qIEpTV2ViR0xCdWZmZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJHTEJ1ZmZlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5QzdCOTgxMTA0MkQyRDMwMDA5RDQ0NyAv
KiBKU1dlYkdMQnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTV2Vi
R0xCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDlDN0I5ODIxMDQyRDJE
MzAwMDlENDQ3IC8qIEpTSW50OEFycmF5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTSW50OEFycmF5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTIwMDIxLDYgKzIwMDI1LDggQEAKIAkJCQlCQ0NFNThCNDEwNjFFOTI1MDA4RkIzNUEgLyogQ29u
c3RydWN0b3JzICovLAogCQkJCUJDNEVERUY3MEMwOEY0MTQwMDdFREQ0OSAvKiBDdXN0b20gKi8s
CiAJCQkJMTRERkIzM0YwQTdERjc2MzAwMThGNzY5IC8qIERlcml2ZWQgU291cmNlcyAqLywKKwkJ
CQk0OUIzNzYwQTE1QzZDNjg0MDA1OTEzMUQgLyogQXJyYXlWYWx1ZS5jcHAgKi8sCisJCQkJNDlC
Mzc2MEIxNUM2QzY4NDAwNTkxMzFEIC8qIEFycmF5VmFsdWUuaCAqLywKIAkJCQlCQ0Q1MzM2MzBF
RDY4NDg5MDA4ODc0NjggLyogQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXIuaCAqLywKIAkJCQk5
M0Y4QjMwNjBBMzAwRkVBMDBGNjFBQjggLyogQ29kZUdlbmVyYXRvckpTLnBtICovLAogCQkJCTMx
MkQ2N0IwMTUzNTY5MUYwMDU2M0QwRCAvKiBEaWN0aW9uYXJ5LmNwcCAqLywKQEAgLTI1MzM2LDYg
KzI1MzQyLDcgQEAKIAkJCQkxMDU5NDU3QTE1QjQyQTQzMDA0RDM3RkQgLyogSlNNaWNyb0RhdGFJ
dGVtVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTEwNTk0NTk5MTVCNDJBQTAwMDREMzdGRCAv
KiBQcm9wZXJ0eU5vZGVMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxMDU5NDU5RjE1QjQyQjFB
MDA0RDM3RkQgLyogSlNQcm9wZXJ0eU5vZGVMaXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk0OUIz
NzYwRDE1QzZDNjg0MDA1OTEzMUQgLyogQXJyYXlWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkp
OwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0y
ODQwNSw2ICsyODQxMiw3IEBACiAJCQkJMTA1OTQ1OTcxNUI0MkE4RTAwNEQzN0ZEIC8qIFByb3Bl
cnR5Tm9kZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTA1OTQ1OUQxNUI0MkIwQzAwNEQz
N0ZEIC8qIEpTUHJvcGVydHlOb2RlTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDM3QjM5
ODE1QzFCOTcxMDA2REM4OTggLyogRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTQ5QjM3NjBDMTVDNkM2ODQwMDU5MTMxRCAvKiBBcnJheVZhbHVlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9S
dW50aW1lRW5hYmxlZEZlYXR1cmVzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmlj
L1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaAppbmRleCA2ODRjNTdkOGJmM2EzNzNmOTE2MWIzYzA4
ZTljNzhkZGEwYzI1ZjEzLi4yZDkyY2I3ZGIyNzZhM2U4YjlkOTVkZjFiODZhMmNhNWY0ZDE4OGI2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFi
bGVkRmVhdHVyZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRp
bWVFbmFibGVkRmVhdHVyZXMuaApAQCAtMTg4LDYgKzE4OCw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgYm9vbCBwZWVyQ29ubmVjdGlvbkVuYWJsZWQoKSB7IHJldHVybiBpc01lZGlhU3RyZWFtRW5h
YmxlZCAmJiBpc1BlZXJDb25uZWN0aW9uRW5hYmxlZDsgfQogICAgIHN0YXRpYyB2b2lkIHNldFBl
ZXJDb25uZWN0aW9uRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBpc1BlZXJDb25uZWN0aW9uRW5h
YmxlZCA9IGlzRW5hYmxlZDsgfQogICAgIHN0YXRpYyBib29sIHdlYmtpdFBlZXJDb25uZWN0aW9u
MDBFbmFibGVkKCkgeyByZXR1cm4gcGVlckNvbm5lY3Rpb25FbmFibGVkKCk7IH0KKyAgICBzdGF0
aWMgYm9vbCB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbkVuYWJsZWQoKSB7IHJldHVybiBwZWVyQ29u
bmVjdGlvbkVuYWJsZWQoKTsgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoR0FNRVBBRCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0FycmF5VmFsdWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvQXJyYXlWYWx1ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmM1YjVkNmUw
MDJmYTM2MGI0M2UyN2U5ZWNhNTRlZjkyNTJiOWYzMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0FycmF5VmFsdWUuY3BwCkBAIC0wLDAgKzEsOTEgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAor
ICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQXJyYXlWYWx1ZS5oIgorCisjaW5j
bHVkZSAiRGljdGlvbmFyeS5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNBcnJheS5oPgorCit1c2lu
ZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0FycmF5VmFsdWU6OkFy
cmF5VmFsdWUoKQorICAgIDogbV9leGVjKDApCit7Cit9CisKK0FycmF5VmFsdWU6OkFycmF5VmFs
dWUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKKyAgICA6IG1fZXhl
YyhleGVjKQoreworICAgIGlmICghdmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSAmJiBpc0pTQXJy
YXkodmFsdWUpKQorICAgICAgICBtX3ZhbHVlID0gdmFsdWU7Cit9CisKK0FycmF5VmFsdWUmIEFy
cmF5VmFsdWU6Om9wZXJhdG9yPShjb25zdCBBcnJheVZhbHVlJiBvdGhlcikKK3sKKyAgICBtX2V4
ZWMgPSBvdGhlci5tX2V4ZWM7CisgICAgbV92YWx1ZSA9IG90aGVyLm1fdmFsdWU7CisgICAgcmV0
dXJuICp0aGlzOworfQorCitib29sIEFycmF5VmFsdWU6OmlzVW5kZWZpbmVkT3JOdWxsKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV92YWx1ZS5pc0VtcHR5KCkgfHwgbV92YWx1ZS5pc1VuZGVmaW5l
ZE9yTnVsbCgpOworfQorCitib29sIEFycmF5VmFsdWU6Omxlbmd0aChzaXplX3QmIGxlbmd0aCkg
Y29uc3QKK3sKKyAgICBpZiAoaXNVbmRlZmluZWRPck51bGwoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgQVNTRVJUKGlzSlNBcnJheShtX3ZhbHVlKSk7CisKKyAgICBKU0FycmF5KiBh
cnJheSA9IGFzQXJyYXkobV92YWx1ZSk7CisgICAgbGVuZ3RoID0gYXJyYXktPmxlbmd0aCgpOwor
ICAgIHJldHVybiB0cnVlOworfQorCitib29sIEFycmF5VmFsdWU6OmdldChzaXplX3QgaW5kZXgs
IERpY3Rpb25hcnkmIHZhbHVlKSBjb25zdAoreworICAgIGlmIChpc1VuZGVmaW5lZE9yTnVsbCgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBBU1NFUlQoaXNKU0FycmF5KG1fdmFsdWUp
KTsKKworICAgIEpTQXJyYXkqIGFycmF5ID0gYXNBcnJheShtX3ZhbHVlKTsKKyAgICBpZiAoIWFy
cmF5LT5jYW5HZXRJbmRleChpbmRleCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEpT
VmFsdWUgaW5kZXhlZFZhbHVlID0gYXJyYXktPmdldEluZGV4KGluZGV4KTsKKyAgICBpZiAoaW5k
ZXhlZFZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkgfHwgIWluZGV4ZWRWYWx1ZS5pc09iamVjdCgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICB2YWx1ZSA9IERpY3Rpb25hcnkobV9leGVj
LCBpbmRleGVkVmFsdWUpOworICAgIHJldHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9BcnJheVZhbHVl
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9BcnJheVZhbHVlLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MDg0ZjhjM2NmMjBmZTQ1ODI1N2ZkYjNhMmU2MzljNDA1N2QxMzdhMQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0FycmF5VmFsdWUuaApAQCAtMCwwICsxLDU0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBBcnJheVZhbHVlX2gKKyNkZWZpbmUgQXJyYXlWYWx1ZV9oCisK
KyNpbmNsdWRlIDxpbnRlcnByZXRlci9DYWxsRnJhbWUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBEaWN0aW9uYXJ5OworCitjbGFzcyBBcnJheVZhbHVlIHsKK3B1YmxpYzoKKyAg
ICBBcnJheVZhbHVlKCk7CisgICAgQXJyYXlWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNW
YWx1ZSk7CisKKyAgICBBcnJheVZhbHVlJiBvcGVyYXRvcj0oY29uc3QgQXJyYXlWYWx1ZSYpOwor
CisgICAgYm9vbCBpc1VuZGVmaW5lZE9yTnVsbCgpIGNvbnN0OworCisgICAgYm9vbCBsZW5ndGgo
c2l6ZV90JikgY29uc3Q7CisgICAgYm9vbCBnZXQoc2l6ZV90IGluZGV4LCBEaWN0aW9uYXJ5Jikg
Y29uc3Q7CisKK3ByaXZhdGU6CisgICAgSlNDOjpFeGVjU3RhdGUqIG1fZXhlYzsKKyAgICBKU0M6
OkpTVmFsdWUgbV92YWx1ZTsKK307CisKK30KKworI2VuZGlmIC8vIEFycmF5VmFsdWVfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5jcHAKaW5kZXggMWYzOTg4MjBi
NzZiZGYyNDI3YzZkNWVlMzQwNGY3MDhkODUyMWVjOC4uNzAyOTEyYTAwMTNkYmI4YWFiNjBlM2Qz
YmJmZjk2ZTQxOWI5ZDkxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNEaWN0aW9uYXJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RpY3Rp
b25hcnkuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiSlNEaWN0aW9uYXJ5LmgiCiAKKyNpbmNsdWRlICJBcnJheVZhbHVlLmgiCiAjaW5jbHVkZSAi
RGljdGlvbmFyeS5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiSlNFdmVu
dFRhcmdldC5oIgpAQCAtMzMsOCArMzQsOCBAQAogI2luY2x1ZGUgIkpTTm9kZS5oIgogI2luY2x1
ZGUgIkpTU3RvcmFnZS5oIgogI2luY2x1ZGUgIkpTVHJhY2tDdXN0b20uaCIKLSNpbmNsdWRlICJT
ZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgorI2luY2x1
ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAj
aW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJp
bmcuaD4KQEAgLTE4NSw2ICsxODYsMTEgQEAgdm9pZCBKU0RpY3Rpb25hcnk6OmNvbnZlcnRWYWx1
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIEhhc2hTZXQ8QXRvbWljU3QKIH0KICNl
bmRpZgogCit2b2lkIEpTRGljdGlvbmFyeTo6Y29udmVydFZhbHVlKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSB2YWx1ZSwgQXJyYXlWYWx1ZSYgcmVzdWx0KQoreworICAgIHJlc3VsdCA9IEFycmF5
VmFsdWUoZXhlYywgdmFsdWUpOworfQorCiBib29sIEpTRGljdGlvbmFyeTo6Z2V0V2l0aFVuZGVm
aW5lZE9yTnVsbENoZWNrKGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBTdHJpbmcmIHJlc3Vs
dCkgY29uc3QKIHsKICAgICBKU1ZhbHVlIHZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RpY3Rpb25hcnkuaAppbmRleCAzZTdlZTU1YjJjZDZjYWJlODFmMWVmZTI4MTUwYWRlNmQ1
ZmU5ZWE1Li43MTdiNTg4MGE1OTIzZTgzMWI0ZTYwZDM1MWE1MDJkNWQ2NzMwMDkxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuaApAQCAtMzIsNiArMzIsNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEFycmF5VmFsdWU7CiBjbGFzcyBEaWN0aW9u
YXJ5OwogY2xhc3MgRE9NV2luZG93OwogY2xhc3MgRXZlbnRUYXJnZXQ7CkBAIC0xMDUsNiArMTA2
LDcgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKSB8fCBFTkFCTEUo
V0VCX0lOVEVOVFMpCiAgICAgc3RhdGljIHZvaWQgY29udmVydFZhbHVlKEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpKU1ZhbHVlLCBIYXNoU2V0PEF0b21pY1N0cmluZz4mIHJlc3VsdCk7CiAjZW5kaWYK
KyAgICBzdGF0aWMgdm9pZCBjb252ZXJ0VmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFs
dWUsIEFycmF5VmFsdWUmIHJlc3VsdCk7CiAKICAgICBKU0M6OkV4ZWNTdGF0ZSogbV9leGVjOwog
ICAgIEpTQzo6SlNPYmplY3QqIG1faW5pdGlhbGl6ZXJPYmplY3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9BcnJheVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L0FycmF5VmFsdWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUyMDQxODU4YzllNzhlNjhmZDYy
YzdlNTUwN2U5MmZjYTc2ODA0MTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9BcnJheVZhbHVlLmNwcApAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisg
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFycmF5VmFsdWUuaCIKKworI2luY2x1ZGUgIkRpY3Rp
b25hcnkuaCIKKyNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitBcnJheVZhbHVlJiBBcnJheVZhbHVlOjpvcGVyYXRvcj0oY29uc3QgQXJyYXlWYWx1ZSYgb3Ro
ZXIpCit7CisgICAgbV9hcnJheSA9IG90aGVyLm1fYXJyYXk7CisgICAgcmV0dXJuICp0aGlzOwor
fQorCitib29sIEFycmF5VmFsdWU6OmlzVW5kZWZpbmVkT3JOdWxsKCkgY29uc3QKK3sKKyAgICBp
ZiAobV9hcnJheS5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBX
ZWJDb3JlOjppc1VuZGVmaW5lZE9yTnVsbChtX2FycmF5KTsKK30KKworYm9vbCBBcnJheVZhbHVl
OjpsZW5ndGgoc2l6ZV90JiBsZW5ndGgpIGNvbnN0Cit7CisgICAgaWYgKGlzVW5kZWZpbmVkT3JO
dWxsKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGxlbmd0aCA9IG1fYXJyYXktPkxl
bmd0aCgpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIEFycmF5VmFsdWU6OmdldChzaXpl
X3QgaW5kZXgsIERpY3Rpb25hcnkmIHZhbHVlKSBjb25zdAoreworICAgIGlmIChpc1VuZGVmaW5l
ZE9yTnVsbCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoaW5kZXggPj0gbV9h
cnJheS0+TGVuZ3RoKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHY4OjpMb2NhbDx2
ODo6VmFsdWU+IGluZGV4ZWRWYWx1ZSA9IG1fYXJyYXktPkdldCh2OFVuc2lnbmVkSW50ZWdlcihp
bmRleCkpOworICAgIGlmIChpbmRleGVkVmFsdWUuSXNFbXB0eSgpIHx8ICFpbmRleGVkVmFsdWUt
PklzT2JqZWN0KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHZhbHVlID0gRGljdGlv
bmFyeShpbmRleGVkVmFsdWUpOworICAgIHJldHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9BcnJheVZh
bHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9BcnJheVZhbHVlLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYmUwMTU0MWRmODY1NTE1ZWI2M2Y1NDA0MDU5MGZkMDAyNTRkYTJjMwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0FycmF5VmFsdWUuaApAQCAtMCwwICsx
LDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBBcnJheVZhbHVlX2gKKyNkZWZpbmUgQXJyYXlWYWx1ZV9o
CisKKyNpbmNsdWRlIDx2OC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERpY3Rp
b25hcnk7CisKK2NsYXNzIEFycmF5VmFsdWUgeworcHVibGljOgorICAgIEFycmF5VmFsdWUoKSB7
IH0KKyAgICBleHBsaWNpdCBBcnJheVZhbHVlKGNvbnN0IHY4OjpMb2NhbDx2ODo6QXJyYXk+JiBh
cnJheSkgOiBtX2FycmF5KGFycmF5KSB7IH0KKyAgICB+QXJyYXlWYWx1ZSgpIHsgfQorCisgICAg
QXJyYXlWYWx1ZSYgb3BlcmF0b3I9KGNvbnN0IEFycmF5VmFsdWUmKTsKKworICAgIGJvb2wgaXNV
bmRlZmluZWRPck51bGwoKSBjb25zdDsKKworICAgIGJvb2wgbGVuZ3RoKHNpemVfdCYpIGNvbnN0
OworICAgIGJvb2wgZ2V0KHNpemVfdCBpbmRleCwgRGljdGlvbmFyeSYpIGNvbnN0OworCitwcml2
YXRlOgorICAgIC8vIFRoaXMgb2JqZWN0IGNhbiBvbmx5IGJlIHVzZWQgc2FmZWx5IHdoZW4gc3Rh
Y2sgYWxsb2NhdGVkIGJlY2F1c2Ugb2Ygdjg6OkxvY2FsLgorICAgIHN0YXRpYyB2b2lkKiBvcGVy
YXRvciBuZXcoc2l6ZV90KTsKKyAgICBzdGF0aWMgdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90
KTsKKyAgICBzdGF0aWMgdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCAqKTsKKworICAgIHY4OjpM
b2NhbDx2ODo6QXJyYXk+IG1fYXJyYXk7Cit9OworCit9CisKKyNlbmRpZiAvLyBBcnJheVZhbHVl
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RpY3Rpb25hcnkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGljdGlvbmFyeS5jcHAKaW5kZXggN2Q2OTJl
NzhlNDA3NTJjYmVlZmRlY2JhYTE4MDRkN2MxMjYxNGZjOS4uNmNmNTY3OTFlZTFiNDU1NjU1NWFm
OThiMWRmMTQzNDZkMmFmNTNjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvRGljdGlvbmFyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGljdGlv
bmFyeS5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJEaWN0aW9uYXJ5LmgiCiAKKyNpbmNsdWRlICJBcnJheVZhbHVlLmgiCiAjaW5jbHVkZSAiRE9N
U3RyaW5nTGlzdC5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4RE9NV2lu
ZG93LmgiCkBAIC00NDIsNiArNDQzLDE5IEBAIGJvb2wgRGljdGlvbmFyeTo6Z2V0KGNvbnN0IFN0
cmluZyYga2V5LCBWZWN0b3I8U3RyaW5nPiYgdmFsdWUpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKK2Jvb2wgRGljdGlvbmFyeTo6Z2V0KGNvbnN0IFN0cmluZyYga2V5LCBBcnJheVZhbHVl
JiB2YWx1ZSkgY29uc3QKK3sKKyAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2OFZhbHVlOworICAg
IGlmICghZ2V0S2V5KGtleSwgdjhWYWx1ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IGlmICghdjhWYWx1ZS0+SXNBcnJheSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICB2
YWx1ZSA9IEFycmF5VmFsdWUodjg6OkxvY2FsPHY4OjpBcnJheT46OkNhc3QodjhWYWx1ZSkpOwor
ICAgIHJldHVybiB0cnVlOworfQorCiBib29sIERpY3Rpb25hcnk6OmdldE93blByb3BlcnRpZXNB
c1N0cmluZ0hhc2hNYXAoV1RGOjpIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYgaGFzaE1hcCkgY29u
c3QKIHsKICAgICBpZiAoIWlzT2JqZWN0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9EaWN0aW9uYXJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9EaWN0
aW9uYXJ5LmgKaW5kZXggZjE1M2VhOWM4Mjk4NDgwODBmMmY1ZTY4NWJjYzZhNzczNDNmNTRhZS4u
MTkyYjMxZjcyZDQwMmMxMzEwZTVmY2FjZGYxYjdkMWFlYjQ0NTk5ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGljdGlvbmFyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L0RpY3Rpb25hcnkuaApAQCAtMzgsNiArMzgsNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKK2NsYXNzIEFycmF5VmFsdWU7CiBjbGFzcyBET01XaW5kb3c7CiBjbGFzcyBJ
REJLZXlSYW5nZTsKIGNsYXNzIE1lZGlhS2V5RXJyb3I7CkBAIC04Niw2ICs4Nyw4IEBAIHB1Ymxp
YzoKICAgICBib29sIGdldChjb25zdCBTdHJpbmcmLCBIYXNoU2V0PEF0b21pY1N0cmluZz4mKSBj
b25zdDsKICAgICBib29sIGdldChjb25zdCBTdHJpbmcmLCBEaWN0aW9uYXJ5JikgY29uc3Q7CiAg
ICAgYm9vbCBnZXQoY29uc3QgU3RyaW5nJiwgVmVjdG9yPFN0cmluZz4mKSBjb25zdDsKKyAgICBi
b29sIGdldChjb25zdCBTdHJpbmcmLCBBcnJheVZhbHVlJikgY29uc3Q7CisKICAgICBib29sIGdl
dE93blByb3BlcnRpZXNBc1N0cmluZ0hhc2hNYXAoV1RGOjpIYXNoTWFwPFN0cmluZywgU3RyaW5n
PiYpIGNvbnN0OwogCiAgICAgYm9vbCBnZXRXaXRoVW5kZWZpbmVkT3JOdWxsQ2hlY2soY29uc3Qg
U3RyaW5nJiwgU3RyaW5nJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnRUYXJnZXRGYWN0b3J5LmluIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFj
dG9yeS5pbgppbmRleCBmZjYwYWFkNGRiNTlmOWNmZTdmOThhMWFkYzk1ZjdkOTExYzBhYzMyLi40
NGU4ZDhlODVhZjUwY2I0NWEwNGE4MjcwYzI0ZDA1NTM0MGMzMjAzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KQEAgLTI0LDYgKzI0LDcgQEAgTm9kZQogTm90aWZp
Y2F0aW9uIGNvbmRpdGlvbmFsPU5PVElGSUNBVElPTlN8TEVHQUNZX05PVElGSUNBVElPTlMKIFBl
ZXJDb25uZWN0aW9uMDAgY29uZGl0aW9uYWw9TUVESUFfU1RSRUFNCiBQZXJmb3JtYW5jZSBjb25k
aXRpb25hbD1XRUJfVElNSU5HCitSVENQZWVyQ29ubmVjdGlvbiBjb25kaXRpb25hbD1NRURJQV9T
VFJFQU0KIFNoYXJlZFdvcmtlciBjb25kaXRpb25hbD1TSEFSRURfV09SS0VSUwogU2hhcmVkV29y
a2VyQ29udGV4dCBjb25kaXRpb25hbD1TSEFSRURfV09SS0VSUwogU291cmNlQnVmZmVyTGlzdCBj
b25kaXRpb25hbD1NRURJQV9TT1VSQ0UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVk
aWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFz
dC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
Y2YxYmJiNTU0ZWFmZTNlMGJjYmM3ZDFmNGIyNGQ3NWU4OWI0MjUxYwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMjUgQEAKK1Rlc3RzIHRoZSBSVENQZWVyQ29ubmVjdGlvbiBjb25z
dHJ1Y3Rvci4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgbmV3IHdlYmtp
dFJUQ1BlZXJDb25uZWN0aW9uKG51bGwpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1Mg
bmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKG51bGwsIG51bGwpOyBkaWQgbm90IHRocm93IGV4
Y2VwdGlvbi4KK1BBU1MgbmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKHVuZGVmaW5lZCk7IGRp
ZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24o
dW5kZWZpbmVkLCB1bmRlZmluZWQpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgbmV3
IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKHtpY2VTZXJ2ZXJzOltdfSwgbnVsbCk7IGRpZCBub3Qg
dGhyb3cgZXhjZXB0aW9uLgorUEFTUyBuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24oe2ljZVNl
cnZlcnM6W3t1cmk6J3N0dW46Zm9vLmNvbSd9XX0sIG51bGwpOyBkaWQgbm90IHRocm93IGV4Y2Vw
dGlvbi4KK1BBU1MgbmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKHtpY2VTZXJ2ZXJzOlt7dXJp
Oid0dXJuOmZvby5jb20nLCBjcmVkZW50aWFsOid4J31dfSwgbnVsbCk7IGRpZCBub3QgdGhyb3cg
ZXhjZXB0aW9uLgorUEFTUyBuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24oe2ljZVNlcnZlcnM6
W3t1cmk6J3R1cm46Zm9vLmNvbScsIGNyZWRlbnRpYWw6J3gnfSx7dXJpOidzdHVuOmJhci5jb20n
fV19LCBudWxsKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIG5ldyB3ZWJraXRSVENQ
ZWVyQ29ubmVjdGlvbigpOyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFy
Z3VtZW50cy4KK1BBU1MgbmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKCcnKTsgdGhyZXcgZXhj
ZXB0aW9uIFR5cGVFcnJvcjogTm90IGFuIG9iamVjdC4uCitQQVNTIG5ldyB3ZWJraXRSVENQZWVy
Q29ubmVjdGlvbihudWxsLCAnJyk7IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBhbiBv
YmplY3QuLgorUEFTUyBuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24oe2Zvb1NlcnZlcnM6W119
LCBudWxsKTsgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4
Y2VwdGlvbiAxNy4KK1BBU1MgbmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKHtpY2VTZXJ2ZXJz
OnRydWV9LCBudWxsKTsgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjog
RE9NIEV4Y2VwdGlvbiAxNy4KK1BBU1MgbmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKHtpY2VT
ZXJ2ZXJzOlsxLCAyLCAzXX0sIG51bGwpOyB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlT
TUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgorUEFTUyBuZXcgd2Via2l0UlRDUGVlckNvbm5l
Y3Rpb24oe2ljZVNlcnZlcnM6W3t9XX0sIG51bGwpOyB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZ
UEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgorUEFTUyBuZXcgd2Via2l0UlRDUGVl
ckNvbm5lY3Rpb24oe2ljZVNlcnZlcnM6W3t1cmw6J2Zvbyd9XX0sIG51bGwpOyB0aHJldyBleGNl
cHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4wZjI5ZTZiMjU4ZTBmODI1MzA3YzI4MDBjOTM1YzU2NjEzZGZjMTE4Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5o
dG1sCkBAIC0wLDAgKzEsMzAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFRE
IEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KK2Rl
c2NyaXB0aW9uKCJUZXN0cyB0aGUgUlRDUGVlckNvbm5lY3Rpb24gY29uc3RydWN0b3IuIik7CisK
K3Nob3VsZE5vdFRocm93KCJuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24obnVsbCk7Iik7Citz
aG91bGROb3RUaHJvdygibmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKG51bGwsIG51bGwpOyIp
Oworc2hvdWxkTm90VGhyb3coIm5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbih1bmRlZmluZWQp
OyIpOworc2hvdWxkTm90VGhyb3coIm5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbih1bmRlZmlu
ZWQsIHVuZGVmaW5lZCk7Iik7CitzaG91bGROb3RUaHJvdygibmV3IHdlYmtpdFJUQ1BlZXJDb25u
ZWN0aW9uKHtpY2VTZXJ2ZXJzOltdfSwgbnVsbCk7Iik7CitzaG91bGROb3RUaHJvdygibmV3IHdl
YmtpdFJUQ1BlZXJDb25uZWN0aW9uKHtpY2VTZXJ2ZXJzOlt7dXJpOidzdHVuOmZvby5jb20nfV19
LCBudWxsKTsiKTsKK3Nob3VsZE5vdFRocm93KCJuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24o
e2ljZVNlcnZlcnM6W3t1cmk6J3R1cm46Zm9vLmNvbScsIGNyZWRlbnRpYWw6J3gnfV19LCBudWxs
KTsiKTsKK3Nob3VsZE5vdFRocm93KCJuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24oe2ljZVNl
cnZlcnM6W3t1cmk6J3R1cm46Zm9vLmNvbScsIGNyZWRlbnRpYWw6J3gnfSx7dXJpOidzdHVuOmJh
ci5jb20nfV19LCBudWxsKTsiKTsKKworc2hvdWxkVGhyb3coIm5ldyB3ZWJraXRSVENQZWVyQ29u
bmVjdGlvbigpOyIpOworc2hvdWxkVGhyb3coIm5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbign
Jyk7Iik7CitzaG91bGRUaHJvdygibmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKG51bGwsICcn
KTsiKTsKK3Nob3VsZFRocm93KCJuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24oe2Zvb1NlcnZl
cnM6W119LCBudWxsKTsiKTsKK3Nob3VsZFRocm93KCJuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rp
b24oe2ljZVNlcnZlcnM6dHJ1ZX0sIG51bGwpOyIpOworc2hvdWxkVGhyb3coIm5ldyB3ZWJraXRS
VENQZWVyQ29ubmVjdGlvbih7aWNlU2VydmVyczpbMSwgMiwgM119LCBudWxsKTsiKTsKK3Nob3Vs
ZFRocm93KCJuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24oe2ljZVNlcnZlcnM6W3t9XX0sIG51
bGwpOyIpOworc2hvdWxkVGhyb3coIm5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbih7aWNlU2Vy
dmVyczpbe3VybDonZm9vJ31dfSwgbnVsbCk7Iik7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>155465</attachid>
            <date>2012-07-31 01:31:29 -0700</date>
            <delta_ts>2012-07-31 04:59:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92380-20120731103111.patch</filename>
            <type>text/plain</type>
            <size>49941</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0MTgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGMxYjMyZTlhNGM4ODcw
OTY1YTk5YTY4ODgzMmNkZjk0NzM0NzliYS4uYzRkNjljZTdlYjkzNGM5MWZlNjVmOWUzZDk1OTE1
YjMxZmEzZTAxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk3IEBACisyMDEyLTA3LTMxICBUb21t
eSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIEludHJvZHVjZSBh
IG1pbmltYWwgUlRDUGVlckNvbm5lY3Rpb24gdG9nZXRoZXIgd2l0aCBEaWN0aW9uYXJ5IGNoYW5n
ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkyMzgw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBpbnRyb2R1Y2VzIGEgc2hlbGwgUlRDUGVlckNvbm5lY3Rpb24gdG9nZXRoZXIgd2l0aCBu
ZWNjZWNhcnkgY2hhbmdlcyB0bworICAgICAgICBEaWN0aW9uYXJ5LgorCisgICAgICAgIFRoZSBX
M0Mgc3BlY2lmaWNhdGlvbiBjYW4gYmUgZm91bmQgaGVyZToKKyAgICAgICAgaHR0cDovL2Rldi53
My5vcmcvMjAxMS93ZWJydGMvZWRpdG9yL3dlYnJ0Yy5odG1sI3J0Y3BlZXJjb25uZWN0aW9uCisK
KyAgICAgICAgU2luY2UgRGljdGlvbmFyaWVzIGNhbid0IGJlIGZ1bGx5IGNvcGllZCBhcm91bmQg
YWRkaW5nCisgICAgICAgIGdldChjb25zdCBTdHJpbmcmIG5hbWUsIFZlY3RvcjxEaWN0aW9uYXJ5
PiYgcmVzdWx0KQorICAgICAgICBpc24ndCBmZWFzaWJsZSBzbyBJIGhhdmUgYWRkZWQgYSBuZXcg
QXJyYXlWYWx1ZSBjbGFzcy4KKworICAgICAgICBUZXN0OiBmYXN0L21lZGlhc3RyZWFtL1JUQ1Bl
ZXJDb25uZWN0aW9uLmh0bWwKKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAq
IEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9ET01X
aW5kb3dNZWRpYVN0cmVhbS5pZGw6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQ
ZWVyQ29ubmVjdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChS
VENJY2VTZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UlRDSWNlU2VydmVyOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6UlRDSWNlU2VydmVyOjp+UlRDSWNlU2VydmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlJUQ0ljZVNlcnZlcjo6dXJpKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0ljZVNl
cnZlcjo6Y3JlZGVudGlhbCk6CisgICAgICAgIChXZWJDb3JlOjpSVENJY2VTZXJ2ZXI6OlJUQ0lj
ZVNlcnZlcik6CisgICAgICAgIChSVENDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlJUQ0NvbmZpZ3VyYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSVENDb25maWd1
cmF0aW9uOjp+UlRDQ29uZmlndXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSVENDb25maWd1
cmF0aW9uOjphcHBlbmRTZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UlRDQ29uZmlndXJhdGlv
bjo6bnVtYmVyT2ZTZXJ2ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0NvbmZpZ3VyYXRpb246
OnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpSVENDb25maWd1cmF0aW9uOjpSVENDb25maWd1
cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjpwYXJzZUNvbmZp
Z3VyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb246OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6UlRDUGVlckNvbm5lY3Rpb24p
OgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb246On5SVENQZWVyQ29ubmVjdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6aW50ZXJmYWNlTmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6c3RvcCk6CisgICAg
ICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6ZXZlbnRUYXJnZXREYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjplbnN1cmVFdmVudFRhcmdldERhdGEpOgor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFJUQ1BlZXJDb25uZWN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjpyZWZFdmVudFRhcmdldCk6CisgICAgICAg
IChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6ZGVyZWZFdmVudFRhcmdldCk6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5pZGw6IEFkZGVkLgorICAg
ICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogVXNlSlNDLmNtYWtlOgorICAgICAgICAqIFdl
YkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmlu
ZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmg6CisgICAgICAgIChXZWJDb3Jl
OjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRSVENQZWVyQ29ubmVjdGlvbkVuYWJsZWQp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0FycmF5VmFsdWUuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6QXJyYXlWYWx1ZTo6QXJyYXlWYWx1ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBcnJheVZhbHVlOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViQ29y
ZTo6QXJyYXlWYWx1ZTo6aXNVbmRlZmluZWRPck51bGwpOgorICAgICAgICAoV2ViQ29yZTo6QXJy
YXlWYWx1ZTo6bGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OkFycmF5VmFsdWU6OmdldCk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvQXJyYXlWYWx1ZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoQXJyYXlWYWx1ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNCaW5k
aW5nc0FsbEluT25lLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNEaWN0aW9uYXJ5Ojpjb252ZXJ0VmFsdWUpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5Lmg6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9BcnJheVZhbHVlLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkFycmF5VmFsdWU6Om9w
ZXJhdG9yPSk6CisgICAgICAgIChXZWJDb3JlOjpBcnJheVZhbHVlOjppc1VuZGVmaW5lZE9yTnVs
bCk6CisgICAgICAgIChXZWJDb3JlOjpBcnJheVZhbHVlOjpsZW5ndGgpOgorICAgICAgICAoV2Vi
Q29yZTo6QXJyYXlWYWx1ZTo6Z2V0KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9BcnJheVZhbHVl
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChBcnJheVZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFycmF5VmFsdWU6OkFycmF5VmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6QXJyYXlWYWx1ZTo6fkFycmF5VmFsdWUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0RpY3Rp
b25hcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGljdGlvbmFyeTo6Z2V0KToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0RpY3Rpb25hcnkuaDoKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoRGljdGlvbmFyeSk6CisgICAgICAgICogZG9tL0V2ZW50VGFy
Z2V0RmFjdG9yeS5pbjoKKwogMjAxMi0wNy0zMSAgWmFuIERvYmVyc2VrICA8emFuZG9iZXJzZWtA
Z21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgY3Jhc2ggZml4IGFmdGVyIHIxMjQxMzUu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDY3NTZiZDVhOTMwYmY5Njg5N2YyNzcxODYxYTk0ZDk3
MmFjNTVjZmIuLjUzNjEwZGY5MjNjOTAxOWQ4NmZkNGJiZmNmZDdlNGM5MjhiNGFjNjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CkBAIC0yMDYsNiArMjA2LDcgQEAgU0VUKFdlYkNvcmVfSURMX0ZJTEVT
CiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNr
LmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0Nh
bGxiYWNrLmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb24wMC5pZGwK
KyAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmlkbAogICAgIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vU2Vzc2lvbkRlc2NyaXB0aW9uLmlkbAogCiAgICAgTW9kdWxlcy9uZXR3
b3JraW5mby9OYXZpZ2F0b3JOZXR3b3JrSW5mb0Nvbm5lY3Rpb24uaWRsCkBAIC04MjUsNiArODI2
LDcgQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW1UcmFja0xpc3QuY3BwCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JNZWRp
YVN0cmVhbS5jcHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uMDAuY3Bw
CisgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKICAgICBNb2R1
bGVzL21lZGlhc3RyZWFtL1Nlc3Npb25EZXNjcmlwdGlvbi5jcHAKICAgICBNb2R1bGVzL21lZGlh
c3RyZWFtL1VzZXJNZWRpYUNvbnRyb2xsZXIuY3BwCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9V
c2VyTWVkaWFSZXF1ZXN0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggZjQ4
ZDdkNzA0ZTI1NGQzOTdlNWEyZmY2NTk2M2U3NDQyN2JiYjYxYy4uNTU2NzlhMzNjMGRlMTBjMWE4
ZDAwMmMzYmRjNjYxNTdhOTE5ODk0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBA
IC00OTEsNiArNDkxLDggQEAgd2ViY29yZV9idWlsdF9zb3VyY2VzICs9IFwKIAlEZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTUmVjdC5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUkdCQ29s
b3IuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUkdCQ29sb3IuaCBcCisJRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ1BlZXJDb25uZWN0aW9uLmNwcCBcCisJRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU1JUQ1BlZXJDb25uZWN0aW9uLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNTY3JlZW4uY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTU2NyZWVuLmggXAog
CURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNTY3JpcHRQcm9maWxlLmNwcCBcCkBAIC03MTUsNiAr
NzE3LDcgQEAgZG9tX2JpbmRpbmdfaWRscyArPSBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlh
c3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2suaWRsIFwKIAkkKFdlYkNvcmUp
L01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrLmlk
bCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uMDAuaWRs
IFwKKwkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaWRs
IFwKIAkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vU2Vzc2lvbkRlc2NyaXB0aW9uLmlk
bCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmlkbCBc
CiAJJChXZWJDb3JlKS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmlk
bCBcCkBAIC0xMTk5LDYgKzEyMDIsOCBAQCB3ZWJjb3JlX21vZHVsZXNfc291cmNlcyArPSBcCiAJ
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFTdWNj
ZXNzQ2FsbGJhY2suaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVy
Q29ubmVjdGlvbjAwLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Q
ZWVyQ29ubmVjdGlvbjAwLmggXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDUGVlckNvbm5lY3Rpb24uY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vU2Vzc2lvbkRlc2NyaXB0aW9uLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9TZXNzaW9uRGVzY3JpcHRpb24uaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDbGllbnQuaCBcCkBAIC0xMzY0LDYgKzEzNjksOCBAQCB3
ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvR2Vu
ZXJpY0JpbmRpbmcuaCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1l
RW5hYmxlZEZlYXR1cmVzLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9S
dW50aW1lRW5hYmxlZEZlYXR1cmVzLmggXAorCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0Fy
cmF5VmFsdWUuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9BcnJheVZhbHVlLmgg
XAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVy
LmggXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhbGxiYWNrRnVuY3Rpb24uY3BwIFwK
IAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWxsYmFja0Z1bmN0aW9uLmggXApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9ET01XaW5kb3dNZWRpYVN0
cmVhbS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0RPTVdpbmRvd01l
ZGlhU3RyZWFtLmlkbAppbmRleCA3NDJhNjI0NjMyZTY5YzA2ZjAyZjAyNTI0MTJiYmEyNzNiMmFm
NWE1Li5lYTk0NmE0OTY2YmU4YmJiZjQ4YTNhYzBhNTI2ZWI1NDA3NjUxZDRkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0RPTVdpbmRvd01lZGlhU3RyZWFt
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0RPTVdpbmRvd01l
ZGlhU3RyZWFtLmlkbApAQCAtMzIsNiArMzIsNyBAQCBtb2R1bGUgd2luZG93IHsKICAgICBdIERP
TVdpbmRvd01lZGlhU3RyZWFtIHsKICAgICAgICAgYXR0cmlidXRlIFtWOEVuYWJsZWRBdFJ1bnRp
bWVdIE1lZGlhU3RyZWFtQ29uc3RydWN0b3Igd2Via2l0TWVkaWFTdHJlYW07CiAgICAgICAgIGF0
dHJpYnV0ZSBbVjhFbmFibGVkQXRSdW50aW1lXSBQZWVyQ29ubmVjdGlvbjAwQ29uc3RydWN0b3Ig
d2Via2l0UGVlckNvbm5lY3Rpb24wMDsKKyAgICAgICAgYXR0cmlidXRlIFtWOEVuYWJsZWRBdFJ1
bnRpbWVdIFJUQ1BlZXJDb25uZWN0aW9uQ29uc3RydWN0b3Igd2Via2l0UlRDUGVlckNvbm5lY3Rp
b247CiAgICAgICAgIGF0dHJpYnV0ZSBTZXNzaW9uRGVzY3JpcHRpb25Db25zdHJ1Y3RvciBTZXNz
aW9uRGVzY3JpcHRpb247CiAgICAgICAgIGF0dHJpYnV0ZSBJY2VDYW5kaWRhdGVDb25zdHJ1Y3Rv
ciBJY2VDYW5kaWRhdGU7CiAgICAgICAgIGF0dHJpYnV0ZSBNZWRpYVN0cmVhbUV2ZW50Q29uc3Ry
dWN0b3IgTWVkaWFTdHJlYW1FdmVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODRjMDcw
OTRjMzBlYTNhYzkzM2M0MGU0MTNiMDRkMjg4MzEzZTllYgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwCkBA
IC0wLDAgKzEsMTc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqICAgIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCisg
KiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tIHRoaXMKKyAqICAgIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIlJUQ1BlZXJDb25uZWN0aW9uLmgiCisKKyNpbmNs
dWRlICJBcnJheVZhbHVlLmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUg
IktVUkwuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworLy8gRklYTUU6IFJUQ0ljZVNlcnZlciBhbmQgUlRDQ29uZmlncmF0aW9u
IGFyZSBwbGFjZWQgaGVyZSB0ZW1wb3JhcmlseS4KKy8vIFRoZWlyIGZpbmFsIHBsYWNlIGlzIGlu
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtLgorY2xhc3MgUlRDSWNlU2VydmVy
IDogcHVibGljIFJlZkNvdW50ZWQ8UlRDSWNlU2VydmVyPiB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8UlRDSWNlU2VydmVyPiBjcmVhdGUoY29uc3QgS1VSTCYgdXJpLCBjb25zdCBT
dHJpbmcmIGNyZWRlbnRpYWwpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBSVENJY2VTZXJ2ZXIodXJp
LCBjcmVkZW50aWFsKSk7IH0KKyAgICB2aXJ0dWFsIH5SVENJY2VTZXJ2ZXIoKSB7IH0KKworICAg
IGNvbnN0IEtVUkwmIHVyaSgpIHsgcmV0dXJuIG1fdXJpOyB9CisgICAgY29uc3QgU3RyaW5nJiBj
cmVkZW50aWFsKCkgeyByZXR1cm4gbV9jcmVkZW50aWFsOyB9CisKK3ByaXZhdGU6CisgICAgUlRD
SWNlU2VydmVyKGNvbnN0IEtVUkwmIHVyaSwgY29uc3QgU3RyaW5nJiBjcmVkZW50aWFsKQorICAg
ICAgICA6IG1fdXJpKHVyaSkKKyAgICAgICAgLCBtX2NyZWRlbnRpYWwoY3JlZGVudGlhbCkKKyAg
ICB7CisgICAgfQorCisgICAgS1VSTCBtX3VyaTsKKyAgICBTdHJpbmcgbV9jcmVkZW50aWFsOwor
fTsKKworY2xhc3MgUlRDQ29uZmlndXJhdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPFJUQ0NvbmZp
Z3VyYXRpb24+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxSVENDb25maWd1cmF0
aW9uPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZihuZXcgUlRDQ29uZmlndXJhdGlvbigpKTsg
fQorICAgIHZpcnR1YWwgflJUQ0NvbmZpZ3VyYXRpb24oKSB7IH0KKworICAgIHZvaWQgYXBwZW5k
U2VydmVyKFBhc3NSZWZQdHI8UlRDSWNlU2VydmVyPiBzZXJ2ZXIpIHsgbV9zZXJ2ZXJzLmFwcGVu
ZChzZXJ2ZXIpOyB9CisgICAgc2l6ZV90IG51bWJlck9mU2VydmVycygpIHsgcmV0dXJuIG1fc2Vy
dmVycy5zaXplKCk7IH0KKyAgICBSVENJY2VTZXJ2ZXIqIHNlcnZlcihzaXplX3QgaW5kZXgpIHsg
cmV0dXJuIG1fc2VydmVyc1tpbmRleF0uZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBSVENDb25m
aWd1cmF0aW9uKCkgeyB9CisKKyAgICBWZWN0b3I8UmVmUHRyPFJUQ0ljZVNlcnZlcj4gPiBtX3Nl
cnZlcnM7Cit9OworCitQYXNzUmVmUHRyPFJUQ0NvbmZpZ3VyYXRpb24+IFJUQ1BlZXJDb25uZWN0
aW9uOjpwYXJzZUNvbmZpZ3VyYXRpb24oY29uc3QgRGljdGlvbmFyeSYgY29uZmlndXJhdGlvbiwg
RXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKGNvbmZpZ3VyYXRpb24uaXNVbmRlZmluZWRP
ck51bGwoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBBcnJheVZhbHVlIGljZVNlcnZlcnM7
CisgICAgYm9vbCBvayA9IGNvbmZpZ3VyYXRpb24uZ2V0KCJpY2VTZXJ2ZXJzIiwgaWNlU2VydmVy
cyk7CisgICAgaWYgKCFvayB8fCBpY2VTZXJ2ZXJzLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKKyAg
ICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQor
CisgICAgc2l6ZV90IG51bWJlck9mU2VydmVyczsKKyAgICBvayA9IGljZVNlcnZlcnMubGVuZ3Ro
KG51bWJlck9mU2VydmVycyk7CisgICAgaWYgKCFvaykgeworICAgICAgICBlYyA9IFRZUEVfTUlT
TUFUQ0hfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBSZWZQdHI8UlRDQ29u
ZmlndXJhdGlvbj4gcnRjQ29uZmlndXJhdGlvbiA9IFJUQ0NvbmZpZ3VyYXRpb246OmNyZWF0ZSgp
OworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1iZXJPZlNlcnZlcnM7ICsraSkgewor
ICAgICAgICBEaWN0aW9uYXJ5IGljZVNlcnZlcjsKKyAgICAgICAgb2sgPSBpY2VTZXJ2ZXJzLmdl
dChpLCBpY2VTZXJ2ZXIpOworICAgICAgICBpZiAoIW9rKSB7CisgICAgICAgICAgICBlYyA9IFRZ
UEVfTUlTTUFUQ0hfRVJSOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKworICAg
ICAgICBTdHJpbmcgdXJpLCBjcmVkZW50aWFsOworICAgICAgICBvayA9IGljZVNlcnZlci5nZXQo
InVyaSIsIHVyaSk7CisgICAgICAgIGlmICghb2spIHsKKyAgICAgICAgICAgIGVjID0gVFlQRV9N
SVNNQVRDSF9FUlI7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBL
VVJMIHVybChLVVJMKCksIHVyaSk7CisgICAgICAgIGlmICghdXJsLmlzVmFsaWQoKSB8fCAhKHVy
bC5wcm90b2NvbElzKCJ0dXJuIikgfHwgdXJsLnByb3RvY29sSXMoInN0dW4iKSkpIHsKKyAgICAg
ICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAg
ICAgICAgfQorCisgICAgICAgIGljZVNlcnZlci5nZXQoImNyZWRlbnRpYWwiLCBjcmVkZW50aWFs
KTsKKworICAgICAgICBydGNDb25maWd1cmF0aW9uLT5hcHBlbmRTZXJ2ZXIoUlRDSWNlU2VydmVy
OjpjcmVhdGUodXJsLCBjcmVkZW50aWFsKSk7CisgICAgfQorICAgIHJldHVybiBydGNDb25maWd1
cmF0aW9uLnJlbGVhc2UoKTsKK30KKworUGFzc1JlZlB0cjxSVENQZWVyQ29ubmVjdGlvbj4gUlRD
UGVlckNvbm5lY3Rpb246OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBj
b25zdCBEaWN0aW9uYXJ5JiBydGNDb25maWd1cmF0aW9uLCBjb25zdCBEaWN0aW9uYXJ5JiwgRXhj
ZXB0aW9uQ29kZSYgZWMpCit7CisgICAgUmVmUHRyPFJUQ0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3Vy
YXRpb24gPSBwYXJzZUNvbmZpZ3VyYXRpb24ocnRjQ29uZmlndXJhdGlvbiwgZWMpOworICAgIGlm
IChlYykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBSZWZQdHI8UlRDUGVlckNvbm5lY3Rpb24+
IHBlZXJDb25uZWN0aW9uID0gYWRvcHRSZWYobmV3IFJUQ1BlZXJDb25uZWN0aW9uKGNvbnRleHQs
IGNvbmZpZ3VyYXRpb24ucmVsZWFzZSgpLCBlYykpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0
dXJuIDA7CisKKyAgICBwZWVyQ29ubmVjdGlvbi0+c3VzcGVuZElmTmVlZGVkKCk7CisgICAgcmV0
dXJuIHBlZXJDb25uZWN0aW9uLnJlbGVhc2UoKTsKK30KKworUlRDUGVlckNvbm5lY3Rpb246OlJU
Q1BlZXJDb25uZWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQ
dHI8UlRDQ29uZmlndXJhdGlvbj4sIEV4Y2VwdGlvbkNvZGUmIGVjKQorICAgIDogQWN0aXZlRE9N
T2JqZWN0KGNvbnRleHQsIHRoaXMpCit7Cit9CisKK1JUQ1BlZXJDb25uZWN0aW9uOjp+UlRDUGVl
ckNvbm5lY3Rpb24oKQoreworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIFJUQ1BlZXJDb25uZWN0
aW9uOjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmlu
dGVyZmFjZUZvclJUQ1BlZXJDb25uZWN0aW9uOworfQorCitTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBSVENQZWVyQ29ubmVjdGlvbjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworfQor
Cit2b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjpzdG9wKCkKK3sKKyAgICAvLyBGSVhNRTogTWFrZSBz
dXJlIHRoYXQgdGhpcyBvYmplY3Qgc3RvcHMgcG9zdGluZyBldmVudHMgYW5kIHJlbGVhc2VzIHJl
c291cmNlcyBhdCB0aGlzIHN0YWdlLgorfQorCitFdmVudFRhcmdldERhdGEqIFJUQ1BlZXJDb25u
ZWN0aW9uOjpldmVudFRhcmdldERhdGEoKQoreworICAgIHJldHVybiAmbV9ldmVudFRhcmdldERh
dGE7Cit9CisKK0V2ZW50VGFyZ2V0RGF0YSogUlRDUGVlckNvbm5lY3Rpb246OmVuc3VyZUV2ZW50
VGFyZ2V0RGF0YSgpCit7CisgICAgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5l
Y3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5l
Y3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hN2YyOGQxNTAwYzMwMWUwOWFhM2EwYjEwOTA4M2MzNDcxYmEx
MGQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENQZWVyQ29ubmVjdGlvbi5oCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogICAgaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJpYnV0
aW9uLgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cyBjb250cmlidXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcworICogICAgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFJU
Q1BlZXJDb25uZWN0aW9uX2gKKyNkZWZpbmUgUlRDUGVlckNvbm5lY3Rpb25faAorCisjaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1
ZGUgIkRpY3Rpb25hcnkuaCIKKyNpbmNsdWRlICJFdmVudFRhcmdldC5oIgorI2luY2x1ZGUgIkV4
Y2VwdGlvbkJhc2UuaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CitjbGFzcyBSVENDb25maWd1cmF0aW9uOworCitjbGFzcyBSVENQZWVyQ29ubmVj
dGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPFJUQ1BlZXJDb25uZWN0aW9uPiwgcHVibGljIEV2ZW50
VGFyZ2V0LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxSVENQZWVyQ29ubmVjdGlvbj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBjb25zdCBEaWN0aW9uYXJ5JiBydGNDb25maWd1cmF0aW9uLCBjb25zdCBEaWN0aW9uYXJ5JiBt
ZWRpYUNvbnN0cmFpbnRzLCBFeGNlcHRpb25Db2RlJik7CisgICAgflJUQ1BlZXJDb25uZWN0aW9u
KCk7CisKKyAgICAvLyBFdmVudFRhcmdldAorICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5n
JiBpbnRlcmZhY2VOYW1lKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgT1ZFUlJJREU7CisK
KyAgICAvLyBBY3RpdmVET01PYmplY3QKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpIE9WRVJSSURF
OworCisgICAgdXNpbmcgUmVmQ291bnRlZDxSVENQZWVyQ29ubmVjdGlvbj46OnJlZjsKKyAgICB1
c2luZyBSZWZDb3VudGVkPFJUQ1BlZXJDb25uZWN0aW9uPjo6ZGVyZWY7CisKK3ByaXZhdGU6Cisg
ICAgUlRDUGVlckNvbm5lY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8
UlRDQ29uZmlndXJhdGlvbj4sIEV4Y2VwdGlvbkNvZGUmKTsKKworICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFJUQ0NvbmZpZ3VyYXRpb24+IHBhcnNlQ29uZmlndXJhdGlvbihjb25zdCBEaWN0aW9uYXJ5
JiBjb25maWd1cmF0aW9uLCBFeGNlcHRpb25Db2RlJik7CisKKyAgICAvLyBFdmVudFRhcmdldCBp
bXBsZW1lbnRhdGlvbi4KKyAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJnZXRE
YXRhKCk7CisgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGVuc3VyZUV2ZW50VGFyZ2V0RGF0
YSgpOworICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIHsgcmVmKCk7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIHsgZGVyZWYoKTsgfQorICAgIEV2ZW50VGFy
Z2V0RGF0YSBtX2V2ZW50VGFyZ2V0RGF0YTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNlbmRpZiAvLyBSVENQZWVyQ29u
bmVjdGlvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ1BlZXJDb25uZWN0aW9uLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDUGVlckNvbm5lY3Rpb24uaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ0YWQ3MjM1YmU0YTM4MzdlNTA4
MDBiMDlkY2FkZjkzNGIyNGM4NTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmlkbApAQCAtMCwwICsxLDUyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqICAgIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCisgKiAgICBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMKKyAqICAg
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworbW9kdWxlIG1lZGlhc3RyZWFtIHsKKworICAgIGludGVyZmFjZSBbCisgICAgICAg
IENvbmRpdGlvbmFsPU1FRElBX1NUUkVBTSwKKyAgICAgICAgQWN0aXZlRE9NT2JqZWN0LAorICAg
ICAgICBDb25zdHJ1Y3RvcihpbiBEaWN0aW9uYXJ5IHJ0Y0lDRVNlcnZlcnMsIGluIFtPcHRpb25h
bD1EZWZhdWx0SXNVbmRlZmluZWRdIERpY3Rpb25hcnkgbWVkaWFDb25zdHJhaW50cyksCisgICAg
ICAgIENvbnN0cnVjdG9yUmFpc2VzRXhjZXB0aW9uLAorICAgICAgICBDYWxsV2l0aD1TY3JpcHRF
eGVjdXRpb25Db250ZXh0LAorICAgICAgICBFdmVudFRhcmdldAorICAgIF0gUlRDUGVlckNvbm5l
Y3Rpb24geworICAgICAgICAvLyBFdmVudFRhcmdldCBpbnRlcmZhY2UKKyAgICAgICAgdm9pZCBh
ZGRFdmVudExpc3RlbmVyKGluIERPTVN0cmluZyB0eXBlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGluIFtPcHRpb25hbF0gYm9vbGVhbiB1c2VDYXB0dXJlKTsKKyAgICAgICAgdm9p
ZCByZW1vdmVFdmVudExpc3RlbmVyKGluIERPTVN0cmluZyB0eXBlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25hbF0gYm9vbGVhbiB1c2VDYXB0dXJlKTsK
KyAgICAgICAgYm9vbGVhbiBkaXNwYXRjaEV2ZW50KGluIEV2ZW50IGV2ZW50KQorICAgICAgICAg
ICAgcmFpc2VzKEV2ZW50RXhjZXB0aW9uKTsKKyAgICB9OworCit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCBk
MTVjODgzODYyZjk1NjFiNzAzYWNhYjY2YWM3Y2I3MDMxNjQ0M2Q2Li45ODQzNzhmZGY4OGNmZWRh
ODNjZjFlMmNmN2I2Mzg5MzAwYjc0ZDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJn
ZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTczLDYgKzczLDcgQEAg
U09VUkNFUyArPSBcCiAKIFNPVVJDRVMgKz0gXAogICAgICBiaW5kaW5ncy9TY3JpcHRDb250cm9s
bGVyQmFzZS5jcHAgXAorICAgICBiaW5kaW5ncy9qcy9BcnJheVZhbHVlLmNwcCBcCiAgICAgIGJp
bmRpbmdzL2pzL0NhbGxiYWNrRnVuY3Rpb24uY3BwIFwKICAgICAgYmluZGluZ3MvanMvRE9NT2Jq
ZWN0SGFzaFRhYmxlTWFwLmNwcCBcCiAgICAgIGJpbmRpbmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5j
cHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlIGIvU291cmNlL1dl
YkNvcmUvVXNlSlNDLmNtYWtlCmluZGV4IDAwZjFiZTEwMjhlYzFhNzlkMmNkMGJjZmUwZGIwMmYz
MzFjNWExYmEuLjk1ODk1ZWQyYWUxYTNlNGIyYjlmMTgyZjJkY2MzZjhkY2MxNDA3ZWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9V
c2VKU0MuY21ha2UKQEAgLTIyLDYgKzIyLDcgQEAgSUYgKFBPUlQgTUFUQ0hFUyAiQmxhY2tCZXJy
eSIpCiBFTkRJRiAoKQogCiBMSVNUKEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKKyAgICBiaW5kaW5n
cy9qcy9BcnJheVZhbHVlLmNwcAogICAgIGJpbmRpbmdzL2pzL0NhbGxiYWNrRnVuY3Rpb24uY3Bw
CiAgICAgYmluZGluZ3MvanMvRE9NT2JqZWN0SGFzaFRhYmxlTWFwLmNwcAogICAgIGJpbmRpbmdz
L2pzL0RPTVdyYXBwZXJXb3JsZC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA2MWY3OGRjYjc3NzVk
MjUyZWVmYTU2MDgwNzc3ODFlYmRmZWYyNDgxLi44NDIxMGNjNDhhMmRhZjI5OTg1YzVlZGE2MTli
Yjg0YTYzNzVlMTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC04NDEsNiArODQxLDcgQEAKICAgICAg
ICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJh
Y2suaWRsJywKICAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvclVzZXJN
ZWRpYVN1Y2Nlc3NDYWxsYmFjay5pZGwnLAogICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJl
YW0vUGVlckNvbm5lY3Rpb24wMC5pZGwnLAorICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDUGVlckNvbm5lY3Rpb24uaWRsJywKICAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3Ry
ZWFtL1Nlc3Npb25EZXNjcmlwdGlvbi5pZGwnLAogICAgICAgICAgICAgJ01vZHVsZXMvbm90aWZp
Y2F0aW9ucy9ET01XaW5kb3dOb3RpZmljYXRpb25zLmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxl
cy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5pZGwnLApAQCAtMTU2Nyw2ICsxNTY4LDggQEAK
ICAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYVN1Y2Nl
c3NDYWxsYmFjay5oJywKICAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25u
ZWN0aW9uMDAuY3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25u
ZWN0aW9uMDAuaCcsCisgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29u
bmVjdGlvbi5jcHAnLAorICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNv
bm5lY3Rpb24uaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9TZXNzaW9uRGVz
Y3JpcHRpb24uY3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL1Nlc3Npb25E
ZXNjcmlwdGlvbi5oJywKICAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRp
YUNsaWVudC5oJywKQEAgLTE5MDgsNiArMTkxMSw4IEBACiAgICAgICAgICAgICAnYmluZGluZ3Mv
Z29iamVjdC9XZWJLaXRET01PYmplY3QuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvZ29iamVj
dC9XZWJLaXRIVE1MRWxlbWVudFdyYXBwZXJGYWN0b3J5LmNwcCcsCiAgICAgICAgICAgICAnYmlu
ZGluZ3MvZ29iamVjdC9XZWJLaXRIVE1MRWxlbWVudFdyYXBwZXJGYWN0b3J5LmgnLAorICAgICAg
ICAgICAgJ2JpbmRpbmdzL2pzL0FycmF5VmFsdWUuY3BwJywKKyAgICAgICAgICAgICdiaW5kaW5n
cy9qcy9BcnJheVZhbHVlLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0NhY2hlZFNjcmlw
dFNvdXJjZVByb3ZpZGVyLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0NhbGxiYWNrRnVu
Y3Rpb24uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9DYWxsYmFja0Z1bmN0aW9uLmgn
LApAQCAtMjE1MSw2ICsyMTU2LDggQEAKICAgICAgICAgICAgICdiaW5kaW5ncy9vYmpjL09iakNO
b2RlRmlsdGVyQ29uZGl0aW9uLm1tJywKICAgICAgICAgICAgICdiaW5kaW5ncy9vYmpjL1B1Ymxp
Y0RPTUludGVyZmFjZXMuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mvb2JqYy9XZWJTY3JpcHRP
YmplY3QubW0nLAorICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L0FycmF5VmFsdWUuY3BwJywKKyAg
ICAgICAgICAgICdiaW5kaW5ncy92OC9BcnJheVZhbHVlLmgnLAogICAgICAgICAgICAgJ2JpbmRp
bmdzL3Y4L0RPTURhdGEuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9ET01EYXRhLmgn
LAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5jcHAnLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCBlODJiNWM4OTBmZDAy
MGNlMzA4N2Q0ZTk2MzhmYTMyM2QwNmJlMjQzLi4zZTFkMGI1NmRkODA1YzUyN2EwNDJkY2Q2ZmI2
MzBjZTg4MjVlNDdkIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvagpAQCAtNjM4MDEsNiArNjM4MDEsNjIgQEAKIAkJCTxGaWx0ZXIKIAkJCQlOYW1lPSJq
cyIKIAkJCQk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGaWxlCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5n
c1xqc1xBcnJheVZhbHVlLmNwcCIKKwkJCQkJPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJ
CQkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJ
CQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJ
CQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24K
KwkJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1
ZSIKKwkJCQkJCT4KKwkJCQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIK
KwkJCQkJCS8+CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCTxGaWxlQ29uZmlndXJh
dGlvbgorCQkJCQkJTmFtZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQkJRXhjbHVk
ZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZD
Q0xDb21waWxlclRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJ
CQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdp
bjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9v
bAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVD
b25maWd1cmF0aW9uPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IkRlYnVn
X0FsbHxXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJ
CQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJ
PC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQlOYW1l
PSJQcm9kdWN0aW9ufFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJ
CQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkv
PgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbGF0aXZlUGF0aD0iLi5cYmlu
ZGluZ3NcanNcQXJyYXlWYWx1ZS5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgogCQkJCTxGaWxlCiAJ
CQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlk
ZXIuaCIKIAkJCQkJPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IDMwZDYyYzg4YzFiYWUyOWE5ZDQ0NDlkMTk4MDVhZTVhN2I0ODk3
ODYuLjQ5ZWQ2Y2ExZWEzYzUxZjM2ZDlkY2RlNjI1OTRhZTg0YWM0MDJiYzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyODks
NiArMTI4OSw4IEBACiAJCTQ5QUUyRDk3MTM0RUU1RjkwMDcyOTIwQSAvKiBDYWxjdWxhdGlvblZh
bHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUFF
MkQ5NTEzNEVFNUY5MDA3MjkyMEEgLyogQ2FsY3VsYXRpb25WYWx1ZS5oICovOyB9OwogCQk0OUFG
MkQ2OTE0NDM1RDA1MDAxNkE3ODQgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUFGMkQ2ODE0NDM1RDA1MDAx
NkE3ODQgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yLmggKi87IH07CiAJCTQ5QUYyRDZDMTQ0MzVE
MjEwMDE2QTc4NCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlBRjJENkIxNDQzNUQyMTAwMTZBNzg0
IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5jcHAgKi87IH07CisJCTQ5QjM3NjBDMTVDNkM2
ODQwMDU5MTMxRCAvKiBBcnJheVZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ5QjM3NjBBMTVDNkM2ODQwMDU5MTMxRCAvKiBBcnJheVZhbHVl
LmNwcCAqLzsgfTsKKwkJNDlCMzc2MEQxNUM2QzY4NDAwNTkxMzFEIC8qIEFycmF5VmFsdWUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5QjM3NjBCMTVD
NkM2ODQwMDU5MTMxRCAvKiBBcnJheVZhbHVlLmggKi87IH07CiAJCTQ5QzdCOTkzMTA0MkQyRDMw
MDA5RDQ0NyAvKiBKU1dlYkdMQnVmZmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ5QzdCOTgwMTA0MkQyRDMwMDA5RDQ0NyAvKiBKU1dlYkdMQnVm
ZmVyLmNwcCAqLzsgfTsKIAkJNDlDN0I5OTQxMDQyRDJEMzAwMDlENDQ3IC8qIEpTV2ViR0xCdWZm
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5QzdC
OTgxMTA0MkQyRDMwMDA5RDQ0NyAvKiBKU1dlYkdMQnVmZmVyLmggKi87IH07CiAJCTQ5QzdCOTk1
MTA0MkQyRDMwMDA5RDQ0NyAvKiBKU0ludDhBcnJheS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUM3Qjk4MjEwNDJEMkQzMDAwOUQ0NDcgLyogSlNJ
bnQ4QXJyYXkuY3BwICovOyB9OwpAQCAtODM5MSw2ICs4MzkzLDggQEAKIAkJNDlBRTJEOTUxMzRF
RTVGOTAwNzI5MjBBIC8qIENhbGN1bGF0aW9uVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ2FsY3VsYXRpb25WYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0OUFGMkQ2ODE0NDM1RDA1MDAxNkE3ODQgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc3BsYXlSZWZyZXNoTW9uaXRvci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OUFGMkQ2QjE0NDM1RDIxMDAxNkE3ODQg
LyogRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IERpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQ5QjM3NjBBMTVDNkM2ODQwMDU5MTMxRCAvKiBBcnJheVZhbHVlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFycmF5VmFsdWUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0OUIzNzYwQjE1QzZDNjg0MDA1OTEzMUQgLyog
QXJyYXlWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcnJheVZhbHVl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5QzdCOTgwMTA0MkQyRDMwMDA5RDQ0
NyAvKiBKU1dlYkdMQnVmZmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTV2ViR0xCdWZmZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OUM3
Qjk4MTEwNDJEMkQzMDAwOUQ0NDcgLyogSlNXZWJHTEJ1ZmZlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU1dlYkdMQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQ5QzdCOTgyMTA0MkQyRDMwMDA5RDQ0NyAvKiBKU0ludDhBcnJheS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0ludDhBcnJheS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDAyNyw2ICsyMDAzMSw4IEBACiAJCQkJQkNDRTU4QjQx
MDYxRTkyNTAwOEZCMzVBIC8qIENvbnN0cnVjdG9ycyAqLywKIAkJCQlCQzRFREVGNzBDMDhGNDE0
MDA3RURENDkgLyogQ3VzdG9tICovLAogCQkJCTE0REZCMzNGMEE3REY3NjMwMDE4Rjc2OSAvKiBE
ZXJpdmVkIFNvdXJjZXMgKi8sCisJCQkJNDlCMzc2MEExNUM2QzY4NDAwNTkxMzFEIC8qIEFycmF5
VmFsdWUuY3BwICovLAorCQkJCTQ5QjM3NjBCMTVDNkM2ODQwMDU5MTMxRCAvKiBBcnJheVZhbHVl
LmggKi8sCiAJCQkJQkNENTMzNjMwRUQ2ODQ4OTAwODg3NDY4IC8qIENhY2hlZFNjcmlwdFNvdXJj
ZVByb3ZpZGVyLmggKi8sCiAJCQkJOTNGOEIzMDYwQTMwMEZFQTAwRjYxQUI4IC8qIENvZGVHZW5l
cmF0b3JKUy5wbSAqLywKIAkJCQkzMTJENjdCMDE1MzU2OTFGMDA1NjNEMEQgLyogRGljdGlvbmFy
eS5jcHAgKi8sCkBAIC0yNTM0Niw2ICsyNTM1Miw3IEBACiAJCQkJMTA1OTQ1N0ExNUI0MkE0MzAw
NEQzN0ZEIC8qIEpTTWljcm9EYXRhSXRlbVZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxMDU5
NDU5OTE1QjQyQUEwMDA0RDM3RkQgLyogUHJvcGVydHlOb2RlTGlzdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMTA1OTQ1OUYxNUI0MkIxQTAwNEQzN0ZEIC8qIEpTUHJvcGVydHlOb2RlTGlzdC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNDlCMzc2MEQxNUM2QzY4NDAwNTkxMzFEIC8qIEFycmF5VmFsdWUu
aCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nl
c3NpbmcgPSAwOwogCQl9OwpAQCAtMjg0MTcsNiArMjg0MjQsNyBAQAogCQkJCTEwNTk0NTk3MTVC
NDJBOEUwMDREMzdGRCAvKiBQcm9wZXJ0eU5vZGVMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTEwNTk0NTlEMTVCNDJCMEMwMDREMzdGRCAvKiBKU1Byb3BlcnR5Tm9kZUxpc3QuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQ0QzN0IzOTgxNUMxQjk3MTAwNkRDODk4IC8qIERpYWdub3N0aWNMb2dn
aW5nS2V5cy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0OUIzNzYwQzE1QzZDNjg0MDA1OTEzMUQg
LyogQXJyYXlWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgKaW5kZXggZDBl
ZTI2YzQ4ZGJiMTdkYzg3MWYzNDRlNTYwODVjZTVjNmMxZjE5YS4uYzY4YzNhODBlNmY0OGU2NDA1
NTM1N2VjYWNkNWVmYzk3NTFmNGRhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgKQEAgLTE4OCw2ICsxODgs
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgcGVlckNvbm5lY3Rpb25FbmFibGVkKCkgeyBy
ZXR1cm4gaXNNZWRpYVN0cmVhbUVuYWJsZWQgJiYgaXNQZWVyQ29ubmVjdGlvbkVuYWJsZWQ7IH0K
ICAgICBzdGF0aWMgdm9pZCBzZXRQZWVyQ29ubmVjdGlvbkVuYWJsZWQoYm9vbCBpc0VuYWJsZWQp
IHsgaXNQZWVyQ29ubmVjdGlvbkVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KICAgICBzdGF0aWMgYm9v
bCB3ZWJraXRQZWVyQ29ubmVjdGlvbjAwRW5hYmxlZCgpIHsgcmV0dXJuIHBlZXJDb25uZWN0aW9u
RW5hYmxlZCgpOyB9CisgICAgc3RhdGljIGJvb2wgd2Via2l0UlRDUGVlckNvbm5lY3Rpb25FbmFi
bGVkKCkgeyByZXR1cm4gcGVlckNvbm5lY3Rpb25FbmFibGVkKCk7IH0KICNlbmRpZgogCiAjaWYg
RU5BQkxFKEdBTUVQQUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9B
cnJheVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0FycmF5VmFsdWUuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmFmYTUzYmZlYjY5ZDJhZWRkMDU1ODBmYjA2MzJjMGQ3NGI1NmU3MGMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9BcnJheVZhbHVlLmNw
cApAQCAtMCwwICsxLDg3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkFycmF5VmFsdWUuaCIKKworI2luY2x1ZGUgIkRpY3Rpb25hcnkuaCIKKyNpbmNsdWRlIDxydW50
aW1lL0pTQXJyYXkuaD4KKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitBcnJheVZhbHVlOjpBcnJheVZhbHVlKCkKKyAgICA6IG1fZXhlYygwKQoreworfQor
CitBcnJheVZhbHVlOjpBcnJheVZhbHVlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTVmFs
dWUgdmFsdWUpCisgICAgOiBtX2V4ZWMoZXhlYykKK3sKKyAgICBpZiAoIXZhbHVlLmlzVW5kZWZp
bmVkT3JOdWxsKCkgJiYgaXNKU0FycmF5KHZhbHVlKSkKKyAgICAgICAgbV92YWx1ZSA9IHZhbHVl
OworfQorCitBcnJheVZhbHVlJiBBcnJheVZhbHVlOjpvcGVyYXRvcj0oY29uc3QgQXJyYXlWYWx1
ZSYgb3RoZXIpCit7CisgICAgbV9leGVjID0gb3RoZXIubV9leGVjOworICAgIG1fdmFsdWUgPSBv
dGhlci5tX3ZhbHVlOworICAgIHJldHVybiAqdGhpczsKK30KKworYm9vbCBBcnJheVZhbHVlOjpp
c1VuZGVmaW5lZE9yTnVsbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdmFsdWUuaXNFbXB0eSgp
IHx8IG1fdmFsdWUuaXNVbmRlZmluZWRPck51bGwoKTsKK30KKworYm9vbCBBcnJheVZhbHVlOjps
ZW5ndGgoc2l6ZV90JiBsZW5ndGgpIGNvbnN0Cit7CisgICAgaWYgKGlzVW5kZWZpbmVkT3JOdWxs
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEpTQXJyYXkqIGFycmF5ID0gYXNBcnJh
eShtX3ZhbHVlKTsKKyAgICBsZW5ndGggPSBhcnJheS0+bGVuZ3RoKCk7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK2Jvb2wgQXJyYXlWYWx1ZTo6Z2V0KHNpemVfdCBpbmRleCwgRGljdGlvbmFyeSYg
dmFsdWUpIGNvbnN0Cit7CisgICAgaWYgKGlzVW5kZWZpbmVkT3JOdWxsKCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIEpTQXJyYXkqIGFycmF5ID0gYXNBcnJheShtX3ZhbHVlKTsKKyAg
ICBpZiAoIWFycmF5LT5jYW5HZXRJbmRleChpbmRleCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIEpTVmFsdWUgaW5kZXhlZFZhbHVlID0gYXJyYXktPmdldEluZGV4KGluZGV4KTsKKyAg
ICBpZiAoaW5kZXhlZFZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkgfHwgIWluZGV4ZWRWYWx1ZS5p
c09iamVjdCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICB2YWx1ZSA9IERpY3Rpb25h
cnkobV9leGVjLCBpbmRleGVkVmFsdWUpOworICAgIHJldHVybiB0cnVlOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9B
cnJheVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9BcnJheVZhbHVlLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMDg0ZjhjM2NmMjBmZTQ1ODI1N2ZkYjNhMmU2MzljNDA1N2QxMzdhMQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0FycmF5VmFsdWUuaApAQCAt
MCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YK
KyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBBcnJheVZhbHVlX2gKKyNkZWZpbmUgQXJyYXlW
YWx1ZV9oCisKKyNpbmNsdWRlIDxpbnRlcnByZXRlci9DYWxsRnJhbWUuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBEaWN0aW9uYXJ5OworCitjbGFzcyBBcnJheVZhbHVlIHsKK3B1
YmxpYzoKKyAgICBBcnJheVZhbHVlKCk7CisgICAgQXJyYXlWYWx1ZShKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6SlNWYWx1ZSk7CisKKyAgICBBcnJheVZhbHVlJiBvcGVyYXRvcj0oY29uc3QgQXJyYXlW
YWx1ZSYpOworCisgICAgYm9vbCBpc1VuZGVmaW5lZE9yTnVsbCgpIGNvbnN0OworCisgICAgYm9v
bCBsZW5ndGgoc2l6ZV90JikgY29uc3Q7CisgICAgYm9vbCBnZXQoc2l6ZV90IGluZGV4LCBEaWN0
aW9uYXJ5JikgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgSlNDOjpFeGVjU3RhdGUqIG1fZXhlYzsK
KyAgICBKU0M6OkpTVmFsdWUgbV92YWx1ZTsKK307CisKK30KKworI2VuZGlmIC8vIEFycmF5VmFs
dWVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0Fs
bEluT25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9u
ZS5jcHAKaW5kZXggNTliOWZlNjA0YzY3NTZiYmIzZTdhZjJiY2MxYjg2OWFhYjViZjM4NS4uY2Yx
ZjQyYjhlMGIzYmE0ZjI0NDI4M2M5NWFhMzUyYzgwYjAxMmVmOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCkBAIC0yNSw2ICsyNSw3
IEBACiAKIC8vIFRoaXMgYWxsLWluLW9uZSBjcHAgZmlsZSBjdXRzIGRvd24gb24gdGVtcGxhdGUg
YmxvYXQgdG8gYWxsb3cgdXMgdG8gYnVpbGQgb3VyIFdpbmRvd3MgcmVsZWFzZSBidWlsZC4KIAor
I2luY2x1ZGUgIkFycmF5VmFsdWUuY3BwIgogI2luY2x1ZGUgIkNhbGxiYWNrRnVuY3Rpb24uY3Bw
IgogI2luY2x1ZGUgIkRPTU9iamVjdEhhc2hUYWJsZU1hcC5jcHAiCiAjaW5jbHVkZSAiRE9NV3Jh
cHBlcldvcmxkLmNwcCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RGljdGlvbmFyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RpY3Rpb25hcnku
Y3BwCmluZGV4IDFmMzk4ODIwYjc2YmRmMjQyN2M2ZDVlZTM0MDRmNzA4ZDg1MjFlYzguLmQ4OGQ1
MzVmMjYyNGYzZDQ3MDcxM2Y1Mjk0YzRmMDA3OGI3MzVhNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIkpTRGljdGlvbmFyeS5oIgogCisjaW5jbHVkZSAiQXJyYXlW
YWx1ZS5oIgogI2luY2x1ZGUgIkRpY3Rpb25hcnkuaCIKICNpbmNsdWRlICJKU0RPTVdpbmRvdy5o
IgogI2luY2x1ZGUgIkpTRXZlbnRUYXJnZXQuaCIKQEAgLTMzLDggKzM0LDggQEAKICNpbmNsdWRl
ICJKU05vZGUuaCIKICNpbmNsdWRlICJKU1N0b3JhZ2UuaCIKICNpbmNsdWRlICJKU1RyYWNrQ3Vz
dG9tLmgiCi0jaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0VmFsdWUuaCIKKyNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CkBAIC0xODUsNiArMTg2LDE0IEBAIHZvaWQgSlNEaWN0
aW9uYXJ5Ojpjb252ZXJ0VmFsdWUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBIYXNo
U2V0PEF0b21pY1N0CiB9CiAjZW5kaWYKIAordm9pZCBKU0RpY3Rpb25hcnk6OmNvbnZlcnRWYWx1
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIEFycmF5VmFsdWUmIHJlc3VsdCkKK3sK
KyAgICBpZiAodmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgcmVzdWx0ID0gQXJyYXlWYWx1ZShleGVjLCB2YWx1ZSk7Cit9CisKIGJvb2wgSlNEaWN0aW9u
YXJ5OjpnZXRXaXRoVW5kZWZpbmVkT3JOdWxsQ2hlY2soY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5h
bWUsIFN0cmluZyYgcmVzdWx0KSBjb25zdAogewogICAgIEpTVmFsdWUgdmFsdWU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5oCmluZGV4IDNlN2VlNTViMmNkNmNhYmU4
MWYxZWZlMjgxNTBhZGU2ZDVmZTllYTUuLjcxN2I1ODgwYTU5MjNlODMxYjRlNjBkMzUxYTUwMmQ1
ZDY3MzAwOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlv
bmFyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5oCkBA
IC0zMiw2ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQXJyYXlWYWx1
ZTsKIGNsYXNzIERpY3Rpb25hcnk7CiBjbGFzcyBET01XaW5kb3c7CiBjbGFzcyBFdmVudFRhcmdl
dDsKQEAgLTEwNSw2ICsxMDYsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShNVVRBVElPTl9PQlNF
UlZFUlMpIHx8IEVOQUJMRShXRUJfSU5URU5UUykKICAgICBzdGF0aWMgdm9pZCBjb252ZXJ0VmFs
dWUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIEhhc2hTZXQ8QXRvbWljU3RyaW5nPiYg
cmVzdWx0KTsKICNlbmRpZgorICAgIHN0YXRpYyB2b2lkIGNvbnZlcnRWYWx1ZShKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6SlNWYWx1ZSwgQXJyYXlWYWx1ZSYgcmVzdWx0KTsKIAogICAgIEpTQzo6RXhl
Y1N0YXRlKiBtX2V4ZWM7CiAgICAgSlNDOjpKU09iamVjdCogbV9pbml0aWFsaXplck9iamVjdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0FycmF5VmFsdWUuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvQXJyYXlWYWx1ZS5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjk5
MDA3ODllNjcwNjY4NzczMTMzYjU2OWEwNTgxNWE4NzBiYTZmMgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0FycmF5VmFsdWUuY3BwCkBAIC0wLDAgKzEsNzAg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisg
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQXJyYXlWYWx1ZS5oIgor
CisjaW5jbHVkZSAiRGljdGlvbmFyeS5oIgorI2luY2x1ZGUgIlY4QmluZGluZy5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK0FycmF5VmFsdWUmIEFycmF5VmFsdWU6Om9wZXJhdG9yPShjb25z
dCBBcnJheVZhbHVlJiBvdGhlcikKK3sKKyAgICBtX2FycmF5ID0gb3RoZXIubV9hcnJheTsKKyAg
ICByZXR1cm4gKnRoaXM7Cit9CisKK2Jvb2wgQXJyYXlWYWx1ZTo6aXNVbmRlZmluZWRPck51bGwo
KSBjb25zdAoreworICAgIHJldHVybiBtX2FycmF5LklzRW1wdHkoKSB8fCBXZWJDb3JlOjppc1Vu
ZGVmaW5lZE9yTnVsbChtX2FycmF5KTsKK30KKworYm9vbCBBcnJheVZhbHVlOjpsZW5ndGgoc2l6
ZV90JiBsZW5ndGgpIGNvbnN0Cit7CisgICAgaWYgKGlzVW5kZWZpbmVkT3JOdWxsKCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIGxlbmd0aCA9IG1fYXJyYXktPkxlbmd0aCgpOworICAg
IHJldHVybiB0cnVlOworfQorCitib29sIEFycmF5VmFsdWU6OmdldChzaXplX3QgaW5kZXgsIERp
Y3Rpb25hcnkmIHZhbHVlKSBjb25zdAoreworICAgIGlmIChpc1VuZGVmaW5lZE9yTnVsbCgpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoaW5kZXggPj0gbV9hcnJheS0+TGVuZ3Ro
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IGlu
ZGV4ZWRWYWx1ZSA9IG1fYXJyYXktPkdldCh2OFVuc2lnbmVkSW50ZWdlcihpbmRleCkpOworICAg
IGlmIChpbmRleGVkVmFsdWUuSXNFbXB0eSgpIHx8ICFpbmRleGVkVmFsdWUtPklzT2JqZWN0KCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHZhbHVlID0gRGljdGlvbmFyeShpbmRleGVk
VmFsdWUpOworICAgIHJldHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9BcnJheVZhbHVlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9BcnJheVZhbHVlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmUwMTU0MWRm
ODY1NTE1ZWI2M2Y1NDA0MDU5MGZkMDAyNTRkYTJjMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0FycmF5VmFsdWUuaApAQCAtMCwwICsxLDU5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBBcnJheVZhbHVlX2gKKyNkZWZpbmUgQXJyYXlWYWx1ZV9oCisKKyNpbmNsdWRl
IDx2OC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERpY3Rpb25hcnk7CisKK2Ns
YXNzIEFycmF5VmFsdWUgeworcHVibGljOgorICAgIEFycmF5VmFsdWUoKSB7IH0KKyAgICBleHBs
aWNpdCBBcnJheVZhbHVlKGNvbnN0IHY4OjpMb2NhbDx2ODo6QXJyYXk+JiBhcnJheSkgOiBtX2Fy
cmF5KGFycmF5KSB7IH0KKyAgICB+QXJyYXlWYWx1ZSgpIHsgfQorCisgICAgQXJyYXlWYWx1ZSYg
b3BlcmF0b3I9KGNvbnN0IEFycmF5VmFsdWUmKTsKKworICAgIGJvb2wgaXNVbmRlZmluZWRPck51
bGwoKSBjb25zdDsKKworICAgIGJvb2wgbGVuZ3RoKHNpemVfdCYpIGNvbnN0OworICAgIGJvb2wg
Z2V0KHNpemVfdCBpbmRleCwgRGljdGlvbmFyeSYpIGNvbnN0OworCitwcml2YXRlOgorICAgIC8v
IFRoaXMgb2JqZWN0IGNhbiBvbmx5IGJlIHVzZWQgc2FmZWx5IHdoZW4gc3RhY2sgYWxsb2NhdGVk
IGJlY2F1c2Ugb2Ygdjg6OkxvY2FsLgorICAgIHN0YXRpYyB2b2lkKiBvcGVyYXRvciBuZXcoc2l6
ZV90KTsKKyAgICBzdGF0aWMgdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90KTsKKyAgICBzdGF0
aWMgdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCAqKTsKKworICAgIHY4OjpMb2NhbDx2ODo6QXJy
YXk+IG1fYXJyYXk7Cit9OworCit9CisKKyNlbmRpZiAvLyBBcnJheVZhbHVlX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RpY3Rpb25hcnkuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvRGljdGlvbmFyeS5jcHAKaW5kZXggN2Q2OTJlNzhlNDA3NTJjYmVl
ZmRlY2JhYTE4MDRkN2MxMjYxNGZjOS4uNmNmNTY3OTFlZTFiNDU1NjU1NWFmOThiMWRmMTQzNDZk
MmFmNTNjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGljdGlvbmFy
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGljdGlvbmFyeS5jcHAKQEAg
LTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJEaWN0aW9uYXJ5
LmgiCiAKKyNpbmNsdWRlICJBcnJheVZhbHVlLmgiCiAjaW5jbHVkZSAiRE9NU3RyaW5nTGlzdC5o
IgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4RE9NV2luZG93LmgiCkBAIC00
NDIsNiArNDQzLDE5IEBAIGJvb2wgRGljdGlvbmFyeTo6Z2V0KGNvbnN0IFN0cmluZyYga2V5LCBW
ZWN0b3I8U3RyaW5nPiYgdmFsdWUpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wg
RGljdGlvbmFyeTo6Z2V0KGNvbnN0IFN0cmluZyYga2V5LCBBcnJheVZhbHVlJiB2YWx1ZSkgY29u
c3QKK3sKKyAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2OFZhbHVlOworICAgIGlmICghZ2V0S2V5
KGtleSwgdjhWYWx1ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghdjhWYWx1
ZS0+SXNBcnJheSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICB2YWx1ZSA9IEFycmF5
VmFsdWUodjg6OkxvY2FsPHY4OjpBcnJheT46OkNhc3QodjhWYWx1ZSkpOworICAgIHJldHVybiB0
cnVlOworfQorCiBib29sIERpY3Rpb25hcnk6OmdldE93blByb3BlcnRpZXNBc1N0cmluZ0hhc2hN
YXAoV1RGOjpIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYgaGFzaE1hcCkgY29uc3QKIHsKICAgICBp
ZiAoIWlzT2JqZWN0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9E
aWN0aW9uYXJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9EaWN0aW9uYXJ5LmgKaW5k
ZXggZjE1M2VhOWM4Mjk4NDgwODBmMmY1ZTY4NWJjYzZhNzczNDNmNTRhZS4uMTkyYjMxZjcyZDQw
MmMxMzEwZTVmY2FjZGYxYjdkMWFlYjQ0NTk5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvRGljdGlvbmFyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L0RpY3Rpb25hcnkuaApAQCAtMzgsNiArMzgsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
K2NsYXNzIEFycmF5VmFsdWU7CiBjbGFzcyBET01XaW5kb3c7CiBjbGFzcyBJREJLZXlSYW5nZTsK
IGNsYXNzIE1lZGlhS2V5RXJyb3I7CkBAIC04Niw2ICs4Nyw4IEBAIHB1YmxpYzoKICAgICBib29s
IGdldChjb25zdCBTdHJpbmcmLCBIYXNoU2V0PEF0b21pY1N0cmluZz4mKSBjb25zdDsKICAgICBi
b29sIGdldChjb25zdCBTdHJpbmcmLCBEaWN0aW9uYXJ5JikgY29uc3Q7CiAgICAgYm9vbCBnZXQo
Y29uc3QgU3RyaW5nJiwgVmVjdG9yPFN0cmluZz4mKSBjb25zdDsKKyAgICBib29sIGdldChjb25z
dCBTdHJpbmcmLCBBcnJheVZhbHVlJikgY29uc3Q7CisKICAgICBib29sIGdldE93blByb3BlcnRp
ZXNBc1N0cmluZ0hhc2hNYXAoV1RGOjpIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYpIGNvbnN0Owog
CiAgICAgYm9vbCBnZXRXaXRoVW5kZWZpbmVkT3JOdWxsQ2hlY2soY29uc3QgU3RyaW5nJiwgU3Ry
aW5nJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRG
YWN0b3J5LmluIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgppbmRl
eCBmZjYwYWFkNGRiNTlmOWNmZTdmOThhMWFkYzk1ZjdkOTExYzBhYzMyLi40NGU4ZDhlODVhZjUw
Y2I0NWEwNGE4MjcwYzI0ZDA1NTM0MGMzMjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRh
cmdldEZhY3RvcnkuaW4KQEAgLTI0LDYgKzI0LDcgQEAgTm9kZQogTm90aWZpY2F0aW9uIGNvbmRp
dGlvbmFsPU5PVElGSUNBVElPTlN8TEVHQUNZX05PVElGSUNBVElPTlMKIFBlZXJDb25uZWN0aW9u
MDAgY29uZGl0aW9uYWw9TUVESUFfU1RSRUFNCiBQZXJmb3JtYW5jZSBjb25kaXRpb25hbD1XRUJf
VElNSU5HCitSVENQZWVyQ29ubmVjdGlvbiBjb25kaXRpb25hbD1NRURJQV9TVFJFQU0KIFNoYXJl
ZFdvcmtlciBjb25kaXRpb25hbD1TSEFSRURfV09SS0VSUwogU2hhcmVkV29ya2VyQ29udGV4dCBj
b25kaXRpb25hbD1TSEFSRURfV09SS0VSUwogU291cmNlQnVmZmVyTGlzdCBjb25kaXRpb25hbD1N
RURJQV9TT1VSQ0UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCA2MDFlNTRiNGE3NWJjZTFjNTljZDE1ODI2MDdkZGNjMzIzZjJl
MzEzLi4xMWQ5MTY1ODBjNjdlYTJmZTM4ODA3NTBkNzM4MGVlNjMzY2I4NDcxIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTMgQEAKKzIwMTItMDctMzEgIFRvbW15IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGdvb2ds
ZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIGEgbWluaW1hbCBSVENQZWVyQ29ubmVjdGlvbiB0
b2dldGhlciB3aXRoIERpY3Rpb25hcnkgY2hhbmdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTIzODAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rp
b24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL1JUQ1Bl
ZXJDb25uZWN0aW9uLmh0bWw6IEFkZGVkLgorCiAyMDEyLTA3LTMwICBLZWlzaGkgSGF0dG9yaSAg
PGtlaXNoaUB3ZWJraXQub3JnPgogCiAgICAgICAgIEltcGxlbWVudCBkYXRhbGlzdCBVSSBmb3Ig
aW5wdXQgdHlwZSBjb2xvciBmb3IgQ2hyb21pdW0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uY2YxYmJiNTU0ZWFmZTNlMGJjYmM3ZDFmNGIyNGQ3NWU4OWI0MjUxYwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24t
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjUgQEAKK1Rlc3RzIHRoZSBSVENQZWVyQ29ubmVjdGlv
biBjb25zdHJ1Y3Rvci4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgbmV3
IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKG51bGwpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4K
K1BBU1MgbmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKG51bGwsIG51bGwpOyBkaWQgbm90IHRo
cm93IGV4Y2VwdGlvbi4KK1BBU1MgbmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKHVuZGVmaW5l
ZCk7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBuZXcgd2Via2l0UlRDUGVlckNvbm5l
Y3Rpb24odW5kZWZpbmVkLCB1bmRlZmluZWQpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BB
U1MgbmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKHtpY2VTZXJ2ZXJzOltdfSwgbnVsbCk7IGRp
ZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24o
e2ljZVNlcnZlcnM6W3t1cmk6J3N0dW46Zm9vLmNvbSd9XX0sIG51bGwpOyBkaWQgbm90IHRocm93
IGV4Y2VwdGlvbi4KK1BBU1MgbmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKHtpY2VTZXJ2ZXJz
Olt7dXJpOid0dXJuOmZvby5jb20nLCBjcmVkZW50aWFsOid4J31dfSwgbnVsbCk7IGRpZCBub3Qg
dGhyb3cgZXhjZXB0aW9uLgorUEFTUyBuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24oe2ljZVNl
cnZlcnM6W3t1cmk6J3R1cm46Zm9vLmNvbScsIGNyZWRlbnRpYWw6J3gnfSx7dXJpOidzdHVuOmJh
ci5jb20nfV19LCBudWxsKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIG5ldyB3ZWJr
aXRSVENQZWVyQ29ubmVjdGlvbigpOyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBOb3QgZW5v
dWdoIGFyZ3VtZW50cy4KK1BBU1MgbmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKCcnKTsgdGhy
ZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGFuIG9iamVjdC4uCitQQVNTIG5ldyB3ZWJraXRS
VENQZWVyQ29ubmVjdGlvbihudWxsLCAnJyk7IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5v
dCBhbiBvYmplY3QuLgorUEFTUyBuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24oe2Zvb1NlcnZl
cnM6W119LCBudWxsKTsgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjog
RE9NIEV4Y2VwdGlvbiAxNy4KK1BBU1MgbmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKHtpY2VT
ZXJ2ZXJzOnRydWV9LCBudWxsKTsgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENI
X0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KK1BBU1MgbmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9u
KHtpY2VTZXJ2ZXJzOlsxLCAyLCAzXX0sIG51bGwpOyB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZ
UEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgorUEFTUyBuZXcgd2Via2l0UlRDUGVl
ckNvbm5lY3Rpb24oe2ljZVNlcnZlcnM6W3t9XX0sIG51bGwpOyB0aHJldyBleGNlcHRpb24gRXJy
b3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgorUEFTUyBuZXcgd2Via2l0
UlRDUGVlckNvbm5lY3Rpb24oe2ljZVNlcnZlcnM6W3t1cmw6J2Zvbyd9XX0sIG51bGwpOyB0aHJl
dyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3Lgor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wZjI5ZTZiMjU4ZTBmODI1MzA3YzI4MDBjOTM1YzU2NjEzZGZjMTE4Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVj
dGlvbi5odG1sCkBAIC0wLDAgKzEsMzAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVU
Ri8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlw
dD4KK2Rlc2NyaXB0aW9uKCJUZXN0cyB0aGUgUlRDUGVlckNvbm5lY3Rpb24gY29uc3RydWN0b3Iu
Iik7CisKK3Nob3VsZE5vdFRocm93KCJuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24obnVsbCk7
Iik7CitzaG91bGROb3RUaHJvdygibmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKG51bGwsIG51
bGwpOyIpOworc2hvdWxkTm90VGhyb3coIm5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbih1bmRl
ZmluZWQpOyIpOworc2hvdWxkTm90VGhyb3coIm5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbih1
bmRlZmluZWQsIHVuZGVmaW5lZCk7Iik7CitzaG91bGROb3RUaHJvdygibmV3IHdlYmtpdFJUQ1Bl
ZXJDb25uZWN0aW9uKHtpY2VTZXJ2ZXJzOltdfSwgbnVsbCk7Iik7CitzaG91bGROb3RUaHJvdygi
bmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKHtpY2VTZXJ2ZXJzOlt7dXJpOidzdHVuOmZvby5j
b20nfV19LCBudWxsKTsiKTsKK3Nob3VsZE5vdFRocm93KCJuZXcgd2Via2l0UlRDUGVlckNvbm5l
Y3Rpb24oe2ljZVNlcnZlcnM6W3t1cmk6J3R1cm46Zm9vLmNvbScsIGNyZWRlbnRpYWw6J3gnfV19
LCBudWxsKTsiKTsKK3Nob3VsZE5vdFRocm93KCJuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24o
e2ljZVNlcnZlcnM6W3t1cmk6J3R1cm46Zm9vLmNvbScsIGNyZWRlbnRpYWw6J3gnfSx7dXJpOidz
dHVuOmJhci5jb20nfV19LCBudWxsKTsiKTsKKworc2hvdWxkVGhyb3coIm5ldyB3ZWJraXRSVENQ
ZWVyQ29ubmVjdGlvbigpOyIpOworc2hvdWxkVGhyb3coIm5ldyB3ZWJraXRSVENQZWVyQ29ubmVj
dGlvbignJyk7Iik7CitzaG91bGRUaHJvdygibmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKG51
bGwsICcnKTsiKTsKK3Nob3VsZFRocm93KCJuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24oe2Zv
b1NlcnZlcnM6W119LCBudWxsKTsiKTsKK3Nob3VsZFRocm93KCJuZXcgd2Via2l0UlRDUGVlckNv
bm5lY3Rpb24oe2ljZVNlcnZlcnM6dHJ1ZX0sIG51bGwpOyIpOworc2hvdWxkVGhyb3coIm5ldyB3
ZWJraXRSVENQZWVyQ29ubmVjdGlvbih7aWNlU2VydmVyczpbMSwgMiwgM119LCBudWxsKTsiKTsK
K3Nob3VsZFRocm93KCJuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24oe2ljZVNlcnZlcnM6W3t9
XX0sIG51bGwpOyIpOworc2hvdWxkVGhyb3coIm5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbih7
aWNlU2VydmVyczpbe3VybDonZm9vJ31dfSwgbnVsbCk7Iik7Cis8L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>