<?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>91812</bug_id>
          
          <creation_ts>2012-07-19 21:24:13 -0700</creation_ts>
          <short_desc>Implement UndoManager&apos;s automatic DOM transactions</short_desc>
          <delta_ts>2012-08-21 20:56:14 -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>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>89722</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sukolsak Sakshuwong">sukolsak</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>adamk</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>jochen</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>mifenton</cc>
    
    <cc>ojan</cc>
    
    <cc>rakuco</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>674127</commentid>
    <comment_count>0</comment_count>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2012-07-19 21:24:13 -0700</bug_when>
    <thetext>Implement UndoManager&apos;s automatic DOM transactions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674136</commentid>
    <comment_count>1</comment_count>
      <attachid>153399</attachid>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2012-07-19 21:29:37 -0700</bug_when>
    <thetext>Created attachment 153399
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674253</commentid>
    <comment_count>2</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-07-20 00:08:54 -0700</bug_when>
    <thetext>What&apos;s the difference between this bug and bug 89722? As you got a lot of feedback in bug 89722, you might want to keep working on bug 89722 if you don&apos;t have a strong reason to create a new bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674273</commentid>
    <comment_count>3</comment_count>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2012-07-20 00:37:01 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; What&apos;s the difference between this bug and bug 89722? As you got a lot of feedback in bug 89722, you might want to keep working on bug 89722 if you don&apos;t have a strong reason to create a new bug.

The patch for bug 89722 is getting too large so I figure it&apos;s better to create a separate patch that focuses on only one feature. I will upload a new patch for bug 89722 soon. It will contain all the changes made in this patch, excluding the automatic DOM transaction part. I will keep working on bug 89722 and will merge all the work on that bug with this bug. I&apos;m not sure if there is a better way to do this though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674282</commentid>
    <comment_count>4</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-07-20 00:46:05 -0700</bug_when>
    <thetext>&gt; The patch for bug 89722 is getting too large so I figure it&apos;s better to create a separate patch that focuses on only one feature.

Makes sense. Then you can create a new bug blocking the original bug, to clarify the dependency. (Done for this bug.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674288</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-07-20 00:52:29 -0700</bug_when>
    <thetext>This bug depends on 89722, not the other way around. Automatic transaction is a natural addition to manual transaction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674326</commentid>
    <comment_count>6</comment_count>
      <attachid>153399</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-07-20 01:41:57 -0700</bug_when>
    <thetext>Comment on attachment 153399
Patch

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

V8 change LGTM.

&gt; Source/WebCore/bindings/js/JSUndoManagerCustom.cpp:90
&gt; +        return throwTypeError(exec);

Let&apos;s make this message the same as the V8&apos;s one.

&gt; Source/WebCore/bindings/js/JSUndoManagerCustom.cpp:104
&gt; +    setDOMException(exec, ec);

if (ec) setDOMException(exec, ec);

&gt; Source/WebCore/bindings/v8/custom/V8UndoManagerCustom.cpp:80
&gt; +    ExceptionCode ec = 0;

Nit: This line should be just before imp-&gt;transact().

&gt; Source/WebCore/bindings/v8/custom/V8UndoManagerCustom.cpp:84
&gt; +        return V8Proxy::throwTypeError(&quot;Not an object.&quot;, args.GetIsolate());

Nit: I expected more descriptive message than &quot;Not an object&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674925</commentid>
    <comment_count>7</comment_count>
      <attachid>153589</attachid>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2012-07-20 13:46:02 -0700</bug_when>
    <thetext>Created attachment 153589
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>698909</commentid>
    <comment_count>8</comment_count>
      <attachid>159259</attachid>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2012-08-17 21:35:24 -0700</bug_when>
    <thetext>Created attachment 159259
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>698918</commentid>
    <comment_count>9</comment_count>
      <attachid>159259</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-08-17 22:28:39 -0700</bug_when>
    <thetext>Comment on attachment 159259
Patch

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

&gt; Source/WebCore/bindings/v8/DOMTransaction.cpp:38
&gt; +DOMTransaction* DOMTransaction::s_recordingDOMTransaction = 0;

It&apos;s probably better to put this on undoManager so that we can share code with JSC.

&gt; Source/WebCore/bindings/v8/DOMTransaction.cpp:58
&gt; +        m_transactionSteps = adoptPtr(new Vector&lt;RefPtr&lt;DOMTransactionStep&gt; &gt;);

We can&apos;t just have Vector&lt;RefPtr&lt;DOMTransactionStep&gt; &gt; as a member?

&gt; Source/WebCore/editing/DOMTransactionStep.h:45
&gt; +class DOMTransactionStep : public RefCounted&lt;DOMTransactionStep&gt; {
&gt; +public:
&gt; +    virtual ~DOMTransactionStep() { }

You need to make the constructor private and add a static create() function. See other RefCounted classes for an example.

&gt; Source/WebCore/editing/DOMTransactionStep.h:62
&gt; +    RefPtr&lt;Node&gt; m_parent;
&gt; +    RefPtr&lt;Node&gt; m_refChild;
&gt; +    RefPtr&lt;Node&gt; m_child;

Don&apos;t we have that cycle problem?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700335</commentid>
    <comment_count>10</comment_count>
      <attachid>159588</attachid>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2012-08-20 19:02:15 -0700</bug_when>
    <thetext>Created attachment 159588
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700420</commentid>
    <comment_count>11</comment_count>
      <attachid>159588</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-08-20 20:54:50 -0700</bug_when>
    <thetext>Comment on attachment 159588
Patch

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

&gt; Source/WebCore/bindings/v8/DOMTransaction.cpp:57
&gt; +        UndoManager::setRecordingDOMTransaction(this);
&gt; +        callFunction(&quot;executeAutomatic&quot;);
&gt; +        UndoManager::setRecordingDOMTransaction(0);

These calls to setRecordingDOMTransaction should be done a RAII object.

&gt; Source/WebCore/css/PropertySetCSSStyleDeclaration.cpp:62
&gt; +            AtomicString oldValue = m_mutationRecipients-&gt;isOldValueRequested() ? s_currentDecl-&gt;parentElement()-&gt;getAttribute(HTMLNames::styleAttr) : nullAtom;

getAttribute is an expensive operation. We should probably not compute it twice for mutation observers &amp; undo manager.
Instead, share the code that it&apos;s only computed once.

&gt; Source/WebCore/css/PropertySetCSSStyleDeclaration.cpp:69
&gt; +        if (!s_currentDecl-&gt;parentElement())
&gt; +            return;

We already have this early exit in lines 58-59

&gt; Source/WebCore/dom/ContainerNode.cpp:353
&gt; +#if ENABLE(UNDO_MANAGER)
&gt; +    bool isRecordingAutomaticTransaction = UndoManager::isRecordingAutomaticTransaction(container);
&gt; +#endif

What&apos;s the point of this local variable? I&apos;m pretty certain the value of isRecordingAutomaticTransaction could change.
e.g. its undo manager can get disconnected in the middle of a DOM transaction.

&gt; Source/WebCore/dom/Document.cpp:6162
&gt; +PassRefPtr&lt;UndoManager&gt; Document::getUndoManager(Node* node)

We prefix a function name with &quot;get&quot; when the function has an out argument.
Since we don&apos;t have an out argument, we shouldn&apos;t prefix it with &quot;get&quot;.
How about undoManagerForNode?

&gt; Source/WebCore/editing/UndoManager.cpp:219
&gt; +    if (!s_recordingDOMTransaction || !s_recordingDOMTransaction-&gt;undoManager())

I don&apos;t think we can ever have a recording DOM transaction and then its undo manager being null.
We should assert that condition instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700521</commentid>
    <comment_count>12</comment_count>
      <attachid>159628</attachid>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2012-08-21 00:00:59 -0700</bug_when>
    <thetext>Created attachment 159628
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700530</commentid>
    <comment_count>13</comment_count>
      <attachid>159629</attachid>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2012-08-21 00:12:12 -0700</bug_when>
    <thetext>Created attachment 159629
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700851</commentid>
    <comment_count>14</comment_count>
      <attachid>159629</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-08-21 09:54:01 -0700</bug_when>
    <thetext>Comment on attachment 159629
Patch

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

&gt; Source/WebCore/dom/CharacterData.cpp:193
&gt; +#if ENABLE(UNDO_MANAGER)
&gt; +    if (UndoManager::isRecordingAutomaticTransaction(this)) {
&gt; +        const String&amp; replacingData = newData.substring(offsetOfReplacedData, newLength);
&gt; +        const String&amp; replacedData = m_data.substring(offsetOfReplacedData, oldLength);
&gt; +        UndoManager::addTransactionStep(DataReplacingDOMTransactionStep::create(this, offsetOfReplacedData, oldLength, replacingData, replacedData));
&gt; +    }
&gt; +#endif

Why don&apos;t we do this in dispatchModifiedEvent to follow the pattern?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700877</commentid>
    <comment_count>15</comment_count>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2012-08-21 10:19:36 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 159629 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=159629&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/CharacterData.cpp:193
&gt; &gt; +#if ENABLE(UNDO_MANAGER)
&gt; &gt; +    if (UndoManager::isRecordingAutomaticTransaction(this)) {
&gt; &gt; +        const String&amp; replacingData = newData.substring(offsetOfReplacedData, newLength);
&gt; &gt; +        const String&amp; replacedData = m_data.substring(offsetOfReplacedData, oldLength);
&gt; &gt; +        UndoManager::addTransactionStep(DataReplacingDOMTransactionStep::create(this, offsetOfReplacedData, oldLength, replacingData, replacedData));
&gt; &gt; +    }
&gt; &gt; +#endif
&gt; 
&gt; Why don&apos;t we do this in dispatchModifiedEvent to follow the pattern?

Because we need to record the offset and the length of replaced data to be able to unapply/reapply change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701513</commentid>
    <comment_count>16</comment_count>
      <attachid>159848</attachid>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2012-08-21 20:04:36 -0700</bug_when>
    <thetext>Created attachment 159848
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701537</commentid>
    <comment_count>17</comment_count>
      <attachid>159848</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-08-21 20:37:39 -0700</bug_when>
    <thetext>Comment on attachment 159848
Patch

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

&gt; Source/WebCore/bindings/v8/DOMTransaction.cpp:80
&gt; +    else {
&gt; +        for (size_t i = m_transactionSteps.size(); i &gt; 0; --i)
&gt; +            m_transactionSteps[i - 1]-&gt;unapply();
&gt; +    }

It&apos;ll be nice if we can share this code with JSC implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701545</commentid>
    <comment_count>18</comment_count>
      <attachid>159848</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-21 20:56:08 -0700</bug_when>
    <thetext>Comment on attachment 159848
Patch

Clearing flags on attachment: 159848

Committed r126258: &lt;http://trac.webkit.org/changeset/126258&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701546</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-21 20:56:14 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153399</attachid>
            <date>2012-07-19 21:29:37 -0700</date>
            <delta_ts>2012-07-20 13:45:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91812-20120719213127.patch</filename>
            <type>text/plain</type>
            <size>117676</size>
            <attacher name="Sukolsak Sakshuwong">sukolsak</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMzE3MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0NyBAQAorMjAxMi0wNy0xOSAgU3Vrb2xz
YWsgU2Frc2h1d29uZyAgPHN1a29sc2FrQGdvb2dsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50
IFVuZG9NYW5hZ2VyJ3MgYXV0b21hdGljIERPTSB0cmFuc2FjdGlvbnMuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTgxMgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW5jbHVkZXMgY2hh
bmdlcyBmcm9tIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTcyMgor
ICAgICAgICB3aGljaCBoYXZlIG5vdCB5ZXQgYmVlbiBhY2NlcHRlZC4KKworICAgICAgICBUZXN0
OiBlZGl0aW5nL3VuZG9tYW5hZ2VyL3VuZG9tYW5hZ2VyLXRyYW5zYWN0LWF1dG9tYXRpYy5odG1s
CisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0
LmFtOgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogVXNlSlNDLmNtYWtlOgorICAg
ICAgICAqIFVzZVY4LmNtYWtlOgorICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAq
IFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoK
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTVRyYW5zYWN0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTRE9NVHJhbnNhY3Rpb246OkpTRE9NVHJhbnNhY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6SlNET01UcmFuc2FjdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTRE9NVHJhbnNhY3Rpb246OnZpc2l0RGljdGlvbmFyeSk6CisgICAgICAgIChXZWJDb3JlOjpK
U0RPTVRyYW5zYWN0aW9uOjpleGVjU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01UcmFu
c2FjdGlvbjo6Z2V0UHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01UcmFuc2FjdGlv
bjo6Y2FsbFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NVHJhbnNhY3Rpb246OmV4
ZWN1dGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01UcmFuc2FjdGlvbjo6ZXhlY3V0ZUF1dG9t
YXRpYyk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVRyYW5zYWN0aW9uOjp1bmRvKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTRE9NVHJhbnNhY3Rpb246OnJlZG8pOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTRE9NVHJhbnNhY3Rpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKEpTRE9NVHJhbnNhY3Rpb24pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTVW5kb01hbmFn
ZXJDdXN0b20uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6dmlzaXRUcmFuc2FjdGlvbnNJblN0YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVW5kb01h
bmFnZXI6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6SlNVbmRvTWFuYWdlcjo6
dHJhbnNhY3QpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NVHJhbnNhY3Rpb24uY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6d2Vha0RpY3Rpb25h
cnlDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVRyYW5zYWN0aW9uOjpWOERPTVRy
YW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NVHJhbnNhY3Rpb246OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpWOERPTVRyYW5zYWN0aW9uOjp+VjhET01UcmFuc2FjdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpWOERPTVRyYW5zYWN0aW9uOjpkaXNwb3NlRGljdGlvbmFyeU9i
amVjdCk6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVRyYW5zYWN0aW9uOjpleGVjdXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlY4RE9NVHJhbnNhY3Rpb246OmV4ZWN1dGVBdXRvbWF0aWMpOgorICAg
ICAgICAoV2ViQ29yZTo6VjhET01UcmFuc2FjdGlvbjo6dW5kbyk6CisgICAgICAgIChXZWJDb3Jl
OjpWOERPTVRyYW5zYWN0aW9uOjpyZWRvKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NVHJhbnNh
Y3Rpb246OmNhbGxQcm9wZXJ0eSk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhET01UcmFuc2Fj
dGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoVjhET01UcmFuc2Fj
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVRyYW5zYWN0aW9uOjpkaWN0aW9uYXJ5SlNP
YmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFVuZG9NYW5hZ2VyQ3VzdG9t
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OnZpc2l0
VHJhbnNhY3Rpb25zSW5TdGFjayk6CisgICAgICAgIChXZWJDb3JlOjpWOFVuZG9NYW5hZ2VyOjp2
aXNpdERPTVdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6VjhVbmRvTWFuYWdlcjo6dHJhbnNh
Y3RDYWxsYmFjayk6CisgICAgICAgICogZG9tL0NoYXJhY3RlckRhdGEuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2hhcmFjdGVyRGF0YTo6c2V0RGF0YUFuZFVwZGF0ZSk6CisgICAgICAgICogZG9t
L0NvbnRhaW5lck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6d2lsbFJlbW92ZUNoaWxkKToK
KyAgICAgICAgKFdlYkNvcmU6OndpbGxSZW1vdmVDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3Jl
Ojp1cGRhdGVUcmVlQWZ0ZXJJbnNlcnRpb24pOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OndpbGxNb2RpZnlBdHRyaWJ1dGUpOgorICAgICAg
ICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuaDoKKyAgICAgICAgKiBlZGl0aW5nL0RP
TVRyYW5zYWN0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OkRPTVRyYW5zYWN0aW9uOjpET01UcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpET01UcmFuc2FjdGlvbjo6YXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVHJhbnNhY3Rp
b246OnVuYXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVHJhbnNhY3Rpb246OnJlYXBwbHkp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NVHJhbnNhY3Rpb246OmlzUmVjb3JkaW5nQXV0b21hdGlj
VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RE9NVHJhbnNhY3Rpb246OmFkZERPTVRy
YW5zYWN0aW9uU3RlcCk6CisgICAgICAgICogZWRpdGluZy9ET01UcmFuc2FjdGlvbi5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoRE9NVHJhbnNhY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NVHJhbnNhY3Rpb246On5ET01UcmFuc2FjdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpET01UcmFuc2FjdGlvbjo6dW5kb01hbmFnZXIpOgorICAgICAgICAoV2ViQ29yZTo6
RE9NVHJhbnNhY3Rpb246OnNldFVuZG9NYW5hZ2VyKToKKyAgICAgICAgKiBlZGl0aW5nL0RPTVRy
YW5zYWN0aW9uU3RlcC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpOb2RlSW5zZXJ0aW5nRE9NVHJhbnNhY3Rpb25TdGVwOjpOb2RlSW5zZXJ0aW5nRE9N
VHJhbnNhY3Rpb25TdGVwKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVJbnNlcnRpbmdET01UcmFu
c2FjdGlvblN0ZXA6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlSW5zZXJ0aW5nRE9N
VHJhbnNhY3Rpb25TdGVwOjp1bmFwcGx5KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVJbnNlcnRp
bmdET01UcmFuc2FjdGlvblN0ZXA6OnJlYXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJl
bW92aW5nRE9NVHJhbnNhY3Rpb25TdGVwOjpOb2RlUmVtb3ZpbmdET01UcmFuc2FjdGlvblN0ZXAp
OgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbW92aW5nRE9NVHJhbnNhY3Rpb25TdGVwOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbW92aW5nRE9NVHJhbnNhY3Rpb25TdGVwOjp1
bmFwcGx5KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW1vdmluZ0RPTVRyYW5zYWN0aW9uU3Rl
cDo6cmVhcHBseSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhUmVwbGFjaW5nRE9NVHJhbnNhY3Rp
b25TdGVwOjpEYXRhUmVwbGFjaW5nRE9NVHJhbnNhY3Rpb25TdGVwKToKKyAgICAgICAgKFdlYkNv
cmU6OkRhdGFSZXBsYWNpbmdET01UcmFuc2FjdGlvblN0ZXA6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhUmVwbGFjaW5nRE9NVHJhbnNhY3Rpb25TdGVwOjp1bmFwcGx5KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFSZXBsYWNpbmdET01UcmFuc2FjdGlvblN0ZXA6OnJlYXBwbHkpOgor
ICAgICAgICAoV2ViQ29yZTo6QXR0ckNoYW5naW5nRE9NVHJhbnNhY3Rpb25TdGVwOjpBdHRyQ2hh
bmdpbmdET01UcmFuc2FjdGlvblN0ZXApOgorICAgICAgICAoV2ViQ29yZTo6QXR0ckNoYW5naW5n
RE9NVHJhbnNhY3Rpb25TdGVwOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXR0ckNoYW5n
aW5nRE9NVHJhbnNhY3Rpb25TdGVwOjp1bmFwcGx5KToKKyAgICAgICAgKFdlYkNvcmU6OkF0dHJD
aGFuZ2luZ0RPTVRyYW5zYWN0aW9uU3RlcDo6cmVhcHBseSk6CisgICAgICAgICogZWRpdGluZy9E
T01UcmFuc2FjdGlvblN0ZXAuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KERPTVRyYW5zYWN0aW9uU3RlcCk6CisgICAgICAgIChXZWJDb3JlOjpET01UcmFuc2FjdGlvblN0
ZXA6On5ET01UcmFuc2FjdGlvblN0ZXApOgorICAgICAgICAoTm9kZUluc2VydGluZ0RPTVRyYW5z
YWN0aW9uU3RlcCk6CisgICAgICAgIChOb2RlUmVtb3ZpbmdET01UcmFuc2FjdGlvblN0ZXApOgor
ICAgICAgICAoRGF0YVJlcGxhY2luZ0RPTVRyYW5zYWN0aW9uU3RlcCk6CisgICAgICAgIChBdHRy
Q2hhbmdpbmdET01UcmFuc2FjdGlvblN0ZXApOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6YXBwbGllZEVkaXRpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yOjp1bmFwcGxpZWRFZGl0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvcjo6cmVhcHBsaWVkRWRpdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmNhblVu
ZG8pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjp1bmRvKToKKyAgICAgICAgKFdlYkNvcmU6
OkVkaXRvcjo6Y2FuUmVkbyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJlZG8pOgorICAg
ICAgICAqIGVkaXRpbmcvVW5kb01hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VW5kb01h
bmFnZXI6OlVuZG9NYW5hZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjp0cmFu
c2FjdCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2Vy
Ojp1bmRvKToKKyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjpyZWRvKToKKyAgICAgICAg
KFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjpyZWdpc3RlclVuZG9TdGVwKToKKyAgICAgICAgKFdlYkNv
cmU6OlVuZG9NYW5hZ2VyOjpyZWdpc3RlclJlZG9TdGVwKToKKyAgICAgICAgKFdlYkNvcmU6OlVu
ZG9NYW5hZ2VyOjpjbGVhclVuZG8pOgorICAgICAgICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OmNs
ZWFyUmVkbyk6CisgICAgICAgICogZWRpdGluZy9VbmRvTWFuYWdlci5oOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJDb3JlOjpVbmRvTWFuYWdlcjo6dW5kb1Njb3BlSG9zdCk6Cisg
ICAgICAgIChVbmRvTWFuYWdlcik6CisgICAgICAgIChXZWJDb3JlOjpVbmRvTWFuYWdlcjo6bGVu
Z3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjpwb3NpdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpVbmRvTWFuYWdlcjo6Y2FuVW5kbyk6CisgICAgICAgIChXZWJDb3JlOjpVbmRv
TWFuYWdlcjo6Y2FuUmVkbyk6CisgICAgICAgIChXZWJDb3JlOjpVbmRvTWFuYWdlcjo6dW5kb1N0
YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjpyZWRvU3RhY2spOgorICAgICAg
ICAqIGVkaXRpbmcvVW5kb01hbmFnZXIuaWRsOgorICAgICAgICAqIGVkaXRpbmcvVW5kb1N0ZXAu
aDoKKyAgICAgICAgKFVuZG9TdGVwKToKKwogMjAxMi0wNy0xOSAgRGF2aWQgSHlhdHQgIDxoeWF0
dEBhcHBsZS5jb20+CiAKICAgICAgICAgU1ZHIGltYWdlcyBicm9rZW4gd2hlbiBtYXgtd2lkdGgg
c3BlY2lmaWVkLgpJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDEyMzE3MykKKysr
IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMTg3LDYg
KzExODcsOCBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgZWRpdGluZy9EZWxldGVTZWxlY3Rp
b25Db21tYW5kLmNwcAogICAgIGVkaXRpbmcvRGljdGF0aW9uQWx0ZXJuYXRpdmUuY3BwCiAgICAg
ZWRpdGluZy9EaWN0YXRpb25Db21tYW5kLmNwcAorICAgIGVkaXRpbmcvRE9NVHJhbnNhY3Rpb24u
Y3BwCisgICAgZWRpdGluZy9ET01UcmFuc2FjdGlvblN0ZXAuY3BwCiAgICAgZWRpdGluZy9FZGl0
Q29tbWFuZC5jcHAKICAgICBlZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKICAgICBlZGl0aW5nL0Vk
aXRvci5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTIz
MTczKQorKysgU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5
KQpAQCAtMTQwMyw2ICsxNDAzLDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVN0cmluZ01hcEN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3VzdG9tLmggXAogCVNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NVG9rZW5MaXN0Q3VzdG9tLmNwcCBcCisJU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01UcmFuc2FjdGlvbi5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NVHJhbnNhY3Rpb24uaCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XaW5kb3dCYXNlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
aW5kb3dCYXNlLmggXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3Vz
dG9tLmNwcCBcCkBAIC0xNTI0LDYgKzE1MjYsNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVWludDMyQXJyYXlDdXN0b20uY3BwIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VpbnQ4QXJyYXlDdXN0b20uY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VpbnQ4Q2xhbXBlZEFycmF5Q3VzdG9tLmNwcCBcCisJU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNVbmRvTWFuYWdlckN1c3RvbS5jcHAgXAogCVNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViS2l0QW5pbWF0aW9uQ3VzdG9tLmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJLaXRBbmltYXRpb25MaXN0Q3VzdG9tLmNwcCBc
CiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJLaXRDU1NLZXlmcmFtZVJ1bGVDdXN0
b20uY3BwIFwKQEAgLTIxMTgsNiArMjEyMSwxMCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRGljdGF0aW9uQWx0ZXJuYXRpdmUuaCBcCiAJU291cmNlL1dl
YkNvcmUvZWRpdGluZy9EaWN0YXRpb25Db21tYW5kLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZWRp
dGluZy9EaWN0YXRpb25Db21tYW5kLmggXAorCVNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRE9NVHJh
bnNhY3Rpb24uY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RPTVRyYW5zYWN0aW9uLmgg
XAorCVNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRE9NVHJhbnNhY3Rpb25TdGVwLmNwcCBcCisJU291
cmNlL1dlYkNvcmUvZWRpdGluZy9ET01UcmFuc2FjdGlvblN0ZXAuaCBcCiAJU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0QWN0aW9uLmggXAogCVNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdENv
bW1hbmQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRDb21tYW5kLmggXApJbmRl
eDogU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9UYXJnZXQucHJpCShyZXZpc2lvbiAxMjMxNzMpCisrKyBTb3VyY2UvV2ViQ29yZS9UYXJnZXQu
cHJpCSh3b3JraW5nIGNvcHkpCkBAIC0xMDksNiArMTA5LDcgQEAgU09VUkNFUyArPSBcCiAgICAg
IGJpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTGlzdEN1c3RvbS5jcHAgXAogICAgICBiaW5kaW5ncy9q
cy9KU0RPTVN0cmluZ01hcEN1c3RvbS5jcHAgXAogICAgICBiaW5kaW5ncy9qcy9KU0RPTVRva2Vu
TGlzdEN1c3RvbS5jcHAgXAorICAgICBiaW5kaW5ncy9qcy9KU0RPTVRyYW5zYWN0aW9uLmNwcCBc
CiAgICAgIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAgXAogICAgICBiaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAgXAogICAgICBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1No
ZWxsLmNwcCBcCkBAIC0xOTEsNiArMTkyLDcgQEAgU09VUkNFUyArPSBcCiAgICAgIGJpbmRpbmdz
L2pzL0pTVWludDMyQXJyYXlDdXN0b20uY3BwIFwKICAgICAgYmluZGluZ3MvanMvSlNVaW50OEFy
cmF5Q3VzdG9tLmNwcCBcCiAgICAgIGJpbmRpbmdzL2pzL0pTVWludDhDbGFtcGVkQXJyYXlDdXN0
b20uY3BwIFwKKyAgICAgYmluZGluZ3MvanMvSlNVbmRvTWFuYWdlckN1c3RvbS5jcHAgXAogICAg
ICBiaW5kaW5ncy9qcy9KU1dlYktpdEFuaW1hdGlvbkN1c3RvbS5jcHAgXAogICAgICBiaW5kaW5n
cy9qcy9KU1dlYktpdEFuaW1hdGlvbkxpc3RDdXN0b20uY3BwIFwKICAgICAgYmluZGluZ3MvanMv
SlNXZWJLaXRDU1NLZXlmcmFtZVJ1bGVDdXN0b20uY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L1VzZUpTQy5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UJ
KHJldmlzaW9uIDEyMzE3MykKKysrIFNvdXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFrZQkod29ya2lu
ZyBjb3B5KQpAQCAtMjk1LDYgKzI5NSwxMyBAQCBJRiAoRU5BQkxFX1dFQl9JTlRFTlRTKQogICAg
ICkKIEVORElGICgpCiAKK0lGIChFTkFCTEVfVU5ET19NQU5BR0VSKQorICAgIExJU1QgKEFQUEVO
RCBXZWJDb3JlX1NPVVJDRVMKKyAgICAgICAgYmluZGluZ3MvanMvSlNET01UcmFuc2FjdGlvbi5j
cHAKKyAgICAgICAgYmluZGluZ3MvanMvSlNVbmRvTWFuYWdlckN1c3RvbS5jcHAKKyAgICApCitF
TkRJRiAoKQorCiBMSVNUKEFQUEVORCBTQ1JJUFRTX0JJTkRJTkdTCiAgICAgJHtXRUJDT1JFX0RJ
Un0vYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCiApCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Vc2VWOC5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Vc2VWOC5jbWFr
ZQkocmV2aXNpb24gMTIzMTczKQorKysgU291cmNlL1dlYkNvcmUvVXNlVjguY21ha2UJKHdvcmtp
bmcgY29weSkKQEAgLTQ2LDYgKzQ2LDcgQEAgTElTVChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAg
ICAgYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcAogICAgIGJpbmRpbmdzL3Y4L1Y4Q29sbGVjdGlv
bi5jcHAKICAgICBiaW5kaW5ncy92OC9WOERPTU1hcC5jcHAKKyAgICBiaW5kaW5ncy92OC9WOERP
TVRyYW5zYWN0aW9uLmNwcAogICAgIGJpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwCiAg
ICAgYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcAogICAgIGJpbmRpbmdzL3Y4L1Y4RXZlbnRM
aXN0ZW5lci5jcHAKQEAgLTE1MCw2ICsxNTEsNyBAQCBMSVNUKEFQUEVORCBXZWJDb3JlX1NPVVJD
RVMKICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhVaW50MTZBcnJheUN1c3RvbS5jcHAKICAgICBi
aW5kaW5ncy92OC9jdXN0b20vVjhVaW50MzJBcnJheUN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy92
OC9jdXN0b20vVjhVaW50OEFycmF5Q3VzdG9tLmNwcAorICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9W
OFVuZG9NYW5hZ2VyQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJLaXRB
bmltYXRpb25DdXN0b20uY3BwCiAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViS2l0UG9pbnRD
b25zdHJ1Y3Rvci5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiAxMjMxNzMp
CisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtMjU1
OSwzICsyNTU5LDkgQEAgX19aTjdXZWJDb3JlMjdBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZQog
X19aTjdXZWJDb3JlMjRUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2VDMUVQMThOU1RleHRBbHRlcm5h
dGl2ZXM4X05TUmFuZ2UKIF9fWk43V2ViQ29yZTMyY29sbGVjdERpY3RhdGlvblRleHRBbHRlcm5h
dGl2ZXNFUDE4TlNBdHRyaWJ1dGVkU3RyaW5nUk4zV1RGNlZlY3RvcklOU18yNFRleHRBbHRlcm5h
dGl2ZVdpdGhSYW5nZUVMbTBFRUUKICNlbmRpZgorCisjaWYgRU5BQkxFKFVORE9fTUFOQUdFUikK
K19fWk43V2ViQ29yZThEb2N1bWVudDExdW5kb01hbmFnZXJFdgorX19aTjdXZWJDb3JlMTFVbmRv
TWFuYWdlcjRyZWRvRXYKK19fWk43V2ViQ29yZTExVW5kb01hbmFnZXI0dW5kb0V2CisjZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDEyMzE3MykKKysrIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMTk3MCw2ICsxOTcwLDggQEAKICAgICAg
ICAgICAgICdiaW5kaW5ncy9qcy9KU0RpcmVjdG9yeUVudHJ5Q3VzdG9tLmNwcCcsCiAgICAgICAg
ICAgICAnYmluZGluZ3MvanMvSlNEaXJlY3RvcnlFbnRyeVN5bmNDdXN0b20uY3BwJywKICAgICAg
ICAgICAgICdiaW5kaW5ncy9qcy9KU0RvY3VtZW50Q3VzdG9tLmNwcCcsCisgICAgICAgICAgICAn
YmluZGluZ3MvanMvSlNET01UcmFuc2FjdGlvbi5jcHAnLAorICAgICAgICAgICAgJ2JpbmRpbmdz
L2pzL0pTRE9NVHJhbnNhY3Rpb24uaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNFbGVt
ZW50Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNFbnRyeUN1c3RvbS5j
cHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTRW50cnlTeW5jQ3VzdG9tLmNwcCcsCkBA
IC0yMDc0LDYgKzIwNzYsNyBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTVWludDE2QXJy
YXlDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU1VpbnQzMkFycmF5Q3Vz
dG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNVaW50OEFycmF5Q3VzdG9tLmNw
cCcsCisgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNVbmRvTWFuYWdlckN1c3RvbS5jcHAnLAog
ICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNw
cCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNXZWJLaXRBbmltYXRpb25DdXN0b20uY3Bw
JywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU1dlYktpdEFuaW1hdGlvbkxpc3RDdXN0b20u
Y3BwJywKQEAgLTIyMjgsNiArMjIzMSw4IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhD
b2xsZWN0aW9uLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4RE9NTWFwLmNwcCcsCiAg
ICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhET01NYXAuaCcsCisgICAgICAgICAgICAnYmluZGlu
Z3MvdjgvVjhET01UcmFuc2FjdGlvbi5jcHAnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4
RE9NVHJhbnNhY3Rpb24uaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhET01XaW5kb3dT
aGVsbC5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuaCcs
CiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcCcsCkBAIC0yMzc1LDYg
KzIzODAsNyBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFVpbnQzMkFycmF5
Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4VWludDhBcnJh
eUN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFVpbnQ4Q2xh
bXBlZEFycmF5Q3VzdG9tLmNwcCcsCisgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4
VW5kb01hbmFnZXJDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20v
VjhXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5n
cy92OC9jdXN0b20vVjhXZWJLaXRBbmltYXRpb25DdXN0b20uY3BwJywKICAgICAgICAgICAgICdi
aW5kaW5ncy92OC9jdXN0b20vVjhXZWJLaXRQb2ludENvbnN0cnVjdG9yLmNwcCcsCkBAIC0yNjI3
LDYgKzI2MzMsMTAgQEAKICAgICAgICAgICAgICdlZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1h
bmQuY3BwJywKICAgICAgICAgICAgICdlZGl0aW5nL0RpY3RhdGlvbkFsdGVybmF0aXZlLmNwcCcs
CiAgICAgICAgICAgICAnZWRpdGluZy9EaWN0YXRpb25Db21tYW5kLmNwcCcsCisgICAgICAgICAg
ICAnZWRpdGluZy9ET01UcmFuc2FjdGlvbi5jcHAnLAorICAgICAgICAgICAgJ2VkaXRpbmcvRE9N
VHJhbnNhY3Rpb24uaCcsCisgICAgICAgICAgICAnZWRpdGluZy9ET01UcmFuc2FjdGlvblN0ZXAu
Y3BwJywKKyAgICAgICAgICAgICdlZGl0aW5nL0RPTVRyYW5zYWN0aW9uU3RlcC5oJywKICAgICAg
ICAgICAgICdlZGl0aW5nL0VkaXRDb21tYW5kLmNwcCcsCiAgICAgICAgICAgICAnZWRpdGluZy9F
ZGl0aW5nQWxsSW5PbmUuY3BwJywKICAgICAgICAgICAgICdlZGl0aW5nL0VkaXRpbmdTdHlsZS5j
cHAnLApAQCAtMjY5NCw2ICsyNzA0LDggQEAKICAgICAgICAgICAgICdlZGl0aW5nL1RleHRJbnNl
cnRpb25CYXNlQ29tbWFuZC5oJywKICAgICAgICAgICAgICdlZGl0aW5nL1RleHRJdGVyYXRvci5j
cHAnLAogICAgICAgICAgICAgJ2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAnLAorICAgICAgICAg
ICAgJ2VkaXRpbmcvVW5kb01hbmFnZXIuY3BwJywKKyAgICAgICAgICAgICdlZGl0aW5nL1VuZG9N
YW5hZ2VyLmgnLAogICAgICAgICAgICAgJ2VkaXRpbmcvVW5kb1N0ZXAuaCcsCiAgICAgICAgICAg
ICAnZWRpdGluZy9VbmxpbmtDb21tYW5kLmNwcCcsCiAgICAgICAgICAgICAnZWRpdGluZy9Vbmxp
bmtDb21tYW5kLmgnLApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2oJKHJldmlzaW9uIDEyMzE3MykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yMjUwMyw2ICsyMjUwMyw2
MiBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKENv
bmZpZ3VyYXRpb25CdWlsZERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpT
VW5kb01hbmFnZXIuY3BwIgorCQkJCT4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFt
ZT0iRGVidWd8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJ
CQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwv
RmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJl
bGVhc2V8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJ
CTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmls
ZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVn
X0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJ
CT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJ
CQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFt
ZT0iUmVsZWFzZV9DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0
cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgor
CQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9u
CisJCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRy
dWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJ
CQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24K
KwkJCQkJTmFtZT0iUHJvZHVjdGlvbnxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRy
dWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJ
CQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJ
CQkJUmVsYXRpdmVQYXRoPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqXCQoUHJvamVjdE5h
bWUpXERlcml2ZWRTb3VyY2VzXEpTVW5kb01hbmFnZXIuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJ
CQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9ialwk
KFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU1ZhbGlkaXR5U3RhdGUuY3BwIgogCQkJCT4K
IAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KQEAgLTU1NjIzLDYgKzU1Njc5LDEwIEBACiAJCQkJPgog
CQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGVkaXRpbmdcRE9NVHJh
bnNhY3Rpb24uaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0
aD0iLi5cZWRpdGluZ1xFZGl0QWN0aW9uLmgiCiAJCQkJPgogCQkJPC9GaWxlPgpAQCAtNTc5NDcs
NiArNTgwMDcsNjIgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZl
UGF0aD0iLi5cZWRpdGluZ1xVbmRvTWFuYWdlci5jcHAiCisJCQkJPgorCQkJCTxGaWxlQ29uZmln
dXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9
InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wi
CisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRp
b24KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRy
dWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJ
CQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24K
KwkJCQkJTmFtZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21C
dWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVy
VG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmln
dXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJRXhj
bHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZD
Q0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8
RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWdfQWxsfFdpbjMyIgorCQkJCQlFeGNs
dWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkND
TENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxG
aWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJQcm9kdWN0aW9ufFdpbjMyIgorCQkJCQlFeGNs
dWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkND
TENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJPC9G
aWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGVkaXRpbmdcVW5kb01hbmFnZXIu
aCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cZWRp
dGluZ1xVbmRvU3RlcC5oIgogCQkJCT4KIAkJCTwvRmlsZT4KQEAgLTY1ODkwLDYgKzY2MDA2LDYy
IEBACiAJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJ
CQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNET01UcmFuc2FjdGlvbi5jcHAiCisJ
CQkJCT4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIK
KwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJ
CQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29uZmln
dXJhdGlvbj4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQlOYW1lPSJSZWxlYXNlfFdp
bjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9v
bAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVD
b25maWd1cmF0aW9uPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IkRlYnVn
X0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJ
CQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJ
Lz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJ
CQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJv
bUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29t
cGlsZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJPEZp
bGVDb25maWd1cmF0aW9uCisJCQkJCQlOYW1lPSJEZWJ1Z19BbGx8V2luMzIiCisJCQkJCQlFeGNs
dWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJCQkJCTxUb29sCisJCQkJCQkJTmFtZT0i
VkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJ
CQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJTmFtZT0iUHJvZHVjdGlvbnxXaW4zMiIKKwkJ
CQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJ
CQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29uZmlndXJh
dGlvbj4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5k
aW5nc1xqc1xKU0RPTVRyYW5zYWN0aW9uLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZp
bGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU0RPTVdpbmRvd0Jhc2UuY3Bw
IgogCQkJCQk+CiAJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgpAQCAtNjk2ODIsNiArNjk4NTQsNTgg
QEAKIAkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU1VuZG9NYW5hZ2VyQ3VzdG9tLmNwcCIK
KwkJCQkJPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IkRlYnVnfFdpbjMy
IgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAor
CQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25m
aWd1cmF0aW9uPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IlJlbGVhc2V8
V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJCQkJCTxU
b29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJCTwvRmls
ZUNvbmZpZ3VyYXRpb24+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJTmFtZT0iRGVi
dWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJ
CQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJ
CQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24K
KwkJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRG
cm9tQnVpbGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xD
b21waWxlclRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQk8
RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4zMiIKKwkJCQkJCUV4
Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1l
PSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4K
KwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQlOYW1lPSJQcm9kdWN0aW9ufFdpbjMyIgor
CQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJ
CQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1
cmF0aW9uPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJp
bmRpbmdzXGpzXEpTV2ViS2l0QW5pbWF0aW9uQ3VzdG9tLmNwcCIKIAkJCQkJPgogCQkJCQk8Rmls
ZUNvbmZpZ3VyYXRpb24KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEyMzE3MykKKysrIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTk0
NiwxMCArMTk0NiwxNyBAQAogCQk3QUYxMUE1QTEyRTcyNzQ5MDA2MUYyM0MgLyogSW5zcGVjdG9y
UnVudGltZUFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QUYxMUE1OTEyRTcyNzQ5MDA2MUYyM0MgLyogSW5zcGVjdG9yUnVudGltZUFnZW50Lmgg
Ki87IH07CiAJCTdBRkQ0QThCMTEzMUMyNzYwMDM1Qjg4MyAvKiBTY3JpcHRCcmVha3BvaW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUZENEE4QTEx
MzFDMjc2MDAzNUI4ODMgLyogU2NyaXB0QnJlYWtwb2ludC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdBRkQ0RkY0MTEzMjc3QjYwMDM1Qjg4MyAv
KiBTY3JpcHREZWJ1Z0xpc3RlbmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3QUZENEZGMzExMzI3N0I2MDAzNUI4ODMgLyogU2NyaXB0RGVidWdMaXN0
ZW5lci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTdCMDk5MkY1MTVBQ0YxQUQwMEVENkQyMCAvKiBKU1VuZG9NYW5hZ2VyQ3VzdG9tLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMDk5MkY0MTVBQ0Yx
QUQwMEVENkQyMCAvKiBKU1VuZG9NYW5hZ2VyQ3VzdG9tLmNwcCAqLzsgfTsKIAkJN0IxRUEwQ0Ux
NTc2QzVCNTAwNjAxNzdEIC8qIEpTVW5kb01hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0IxRUEwQ0MxNTc2QzVCNTAwNjAxNzdEIC8qIEpT
VW5kb01hbmFnZXIuY3BwICovOyB9OwogCQk3QjFFQTBDRjE1NzZDNUI1MDA2MDE3N0QgLyogSlNV
bmRvTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0IxRUEwQ0QxNTc2QzVCNTAwNjAxNzdEIC8qIEpTVW5kb01hbmFnZXIuaCAqLzsgfTsKKwkJ
N0I1MTdFODQxNUFDRjFGNTAwRjE2QjdBIC8qIEpTRE9NVHJhbnNhY3Rpb24uY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I1MTdFODIxNUFDRjFGMzAw
RjE2QjdBIC8qIEpTRE9NVHJhbnNhY3Rpb24uY3BwICovOyB9OworCQk3QjUxN0U4NTE1QUNGMUY1
MDBGMTZCN0EgLyogSlNET01UcmFuc2FjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0I1MTdFODMxNUFDRjFGNTAwRjE2QjdBIC8qIEpTRE9NVHJh
bnNhY3Rpb24uaCAqLzsgfTsKKwkJN0I1MTdFODcxNUFDRjIxMTAwRjE2QjdBIC8qIERPTVRyYW5z
YWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QjUxN0U4NjE1QUNGMjExMDBGMTZCN0EgLyogRE9NVHJhbnNhY3Rpb24uaCAqLzsgfTsKKwkJN0I3
OERBQTgxNUI3N0MwMzAwMzNDMkQyIC8qIERPTVRyYW5zYWN0aW9uLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNzhEQUE3MTVCNzdDMDMwMDMzQzJE
MiAvKiBET01UcmFuc2FjdGlvbi5jcHAgKi87IH07CiAJCTdCOTE4NEQyMTU3NThFNDIwMDkyQUE5
MyAvKiBVbmRvTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3QjkxODRDRjE1NzU4RTQyMDA5MkFBOTMgLyogVW5kb01hbmFnZXIuY3BwICov
OyB9OwogCQk3QjkxODREMzE1NzU4RTQyMDA5MkFBOTMgLyogVW5kb01hbmFnZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCOTE4NEQwMTU3NThFNDIw
MDkyQUE5MyAvKiBVbmRvTWFuYWdlci5oICovOyB9OworCQk3QkQxMTdFQjE1QjhEQjAxMDBDOTc0
QTMgLyogRE9NVHJhbnNhY3Rpb25TdGVwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdCRDExN0U5MTVCOERCMDEwMEM5NzRBMyAvKiBET01UcmFuc2Fj
dGlvblN0ZXAuY3BwICovOyB9OworCQk3QkQxMTdFQzE1QjhEQjAxMDBDOTc0QTMgLyogRE9NVHJh
bnNhY3Rpb25TdGVwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QkQxMTdFQTE1QjhEQjAxMDBDOTc0QTMgLyogRE9NVHJhbnNhY3Rpb25TdGVwLmggKi87
IH07CiAJCTdFMzNDRDAxMTI3RjM0MEQwMEJFOEYxNyAvKiBQdXJnZVByaW9yaXR5LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTMzQ0QwMDEyN0YzNDBE
MDBCRThGMTcgLyogUHVyZ2VQcmlvcml0eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTdFMzdFRjJFMTMzOTIwODgwMEIyOTI1MCAvKiBTdWJyZXNv
dXJjZUxvYWRlckNGLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdFMzdFRjJEMTMzOTIwODgwMEIyOTI1MCAvKiBTdWJyZXNvdXJjZUxvYWRlckNGLmNw
cCAqLzsgfTsKIAkJN0U5OUFGNTEwQjEzODQ2NDY4RkIwMUE1IC8qIFdpbmRvd0ZvY3VzQWxsb3dl
ZEluZGljYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3RTk5QUY1MjBCMTM4NDY0NjhGQjAxQTUgLyogV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNh
dG9yLmNwcCAqLzsgfTsKQEAgLTkwODcsMTEgKzkwOTQsMTggQEAKIAkJN0FGMTFBNTkxMkU3Mjc0
OTAwNjFGMjNDIC8qIEluc3BlY3RvclJ1bnRpbWVBZ2VudC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JSdW50aW1lQWdlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJN0FGRDRBOEExMTMxQzI3NjAwMzVCODgzIC8qIFNjcmlwdEJyZWFrcG9pbnQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0QnJlYWtwb2ludC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QUZENEZGMzExMzI3N0I2MDAzNUI4ODMgLyog
U2NyaXB0RGVidWdMaXN0ZW5lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
Y3JpcHREZWJ1Z0xpc3RlbmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCMDk5
MkY0MTVBQ0YxQUQwMEVENkQyMCAvKiBKU1VuZG9NYW5hZ2VyQ3VzdG9tLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpTVW5kb01hbmFnZXJDdXN0b20uY3BwOyBwYXRo
ID0gLi4vLi4vLi4vd2Via2l0L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVW5kb01hbmFn
ZXJDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTdCMUVBMENDMTU3
NkM1QjUwMDYwMTc3RCAvKiBKU1VuZG9NYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTVW5kb01hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3QjFFQTBDRDE1NzZDNUI1MDA2MDE3N0QgLyogSlNVbmRvTWFuYWdlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1VuZG9NYW5hZ2VyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTdCNTE3RTgyMTVBQ0YxRjMwMEYxNkI3QSAvKiBKU0RPTVRyYW5z
YWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpTRE9NVHJh
bnNhY3Rpb24uY3BwOyBwYXRoID0gLi4vLi4vLi4vd2Via2l0L1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NVHJhbnNhY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07
CisJCTdCNTE3RTgzMTVBQ0YxRjUwMEYxNkI3QSAvKiBKU0RPTVRyYW5zYWN0aW9uLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpTRE9NVHJhbnNhY3Rpb24uaDsgcGF0aCA9IC4u
Ly4uLy4uL3dlYmtpdC9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVRyYW5zYWN0aW9u
Lmg7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKKwkJN0I1MTdFODYxNUFDRjIxMTAwRjE2
QjdBIC8qIERPTVRyYW5zYWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IERPTVRyYW5zYWN0aW9uLmg7IHBhdGggPSAuLi8uLi8uLi93ZWJraXQvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9ET01UcmFuc2FjdGlvbi5oOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJ
CTdCNzhEQUE3MTVCNzdDMDMwMDMzQzJEMiAvKiBET01UcmFuc2FjdGlvbi5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBET01UcmFuc2FjdGlvbi5jcHA7IHBhdGggPSAu
Li8uLi8uLi93ZWJraXQvU291cmNlL1dlYkNvcmUvZWRpdGluZy9ET01UcmFuc2FjdGlvbi5jcHA7
IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJN0I5MTg0Q0YxNTc1OEU0MjAwOTJBQTkz
IC8qIFVuZG9NYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFVuZG9NYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I5MTg0RDAx
NTc1OEU0MjAwOTJBQTkzIC8qIFVuZG9NYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFVuZG9NYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdC
OTE4NEQxMTU3NThFNDIwMDkyQUE5MyAvKiBVbmRvTWFuYWdlci5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gVW5kb01hbmFnZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3
QkQxMTdFOTE1QjhEQjAxMDBDOTc0QTMgLyogRE9NVHJhbnNhY3Rpb25TdGVwLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERPTVRyYW5zYWN0aW9uU3RlcC5jcHA7IHBh
dGggPSAuLi8uLi8uLi93ZWJraXQvU291cmNlL1dlYkNvcmUvZWRpdGluZy9ET01UcmFuc2FjdGlv
blN0ZXAuY3BwOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJCTdCRDExN0VBMTVCOERC
MDEwMEM5NzRBMyAvKiBET01UcmFuc2FjdGlvblN0ZXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gRE9NVHJhbnNhY3Rpb25TdGVwLmg7IHBhdGggPSAuLi8uLi8uLi93ZWJraXQv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9ET01UcmFuc2FjdGlvblN0ZXAuaDsgc291cmNlVHJlZSA9
IFNPVVJDRV9ST09UOyB9OwogCQk3QzYwMTI4MDYwMDc4QkI3MEUzNjdBOTUgLyogRE5TUmVzb2x2
ZVF1ZXVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEROU1Jlc29s
dmVRdWV1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFMzNDRDAwMTI3RjM0
MEQwMEJFOEYxNyAvKiBQdXJnZVByaW9yaXR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFB1cmdlUHJpb3JpdHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0Uz
N0VGMkQxMzM5MjA4ODAwQjI5MjUwIC8qIFN1YnJlc291cmNlTG9hZGVyQ0YuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU3VicmVzb3VyY2VMb2FkZXJDRi5jcHA7IHBh
dGggPSBjZi9TdWJyZXNvdXJjZUxvYWRlckNGLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTE3MDAxLDYgKzE3MDE1LDEwIEBACiAJCQkJQ0VDQURGQzMxNTM3NzhGRjAwRTM3MDY4
IC8qIERpY3RhdGlvbkFsdGVybmF0aXZlLmggKi8sCiAJCQkJQ0VDQURGQzQxNTM3NzhGRjAwRTM3
MDY4IC8qIERpY3RhdGlvbkNvbW1hbmQuY3BwICovLAogCQkJCUNFQ0FERkM1MTUzNzc4RkYwMEUz
NzA2OCAvKiBEaWN0YXRpb25Db21tYW5kLmggKi8sCisJCQkJN0I3OERBQTcxNUI3N0MwMzAwMzND
MkQyIC8qIERPTVRyYW5zYWN0aW9uLmNwcCAqLywKKwkJCQk3QjUxN0U4NjE1QUNGMjExMDBGMTZC
N0EgLyogRE9NVHJhbnNhY3Rpb24uaCAqLywKKwkJCQk3QkQxMTdFOTE1QjhEQjAxMDBDOTc0QTMg
LyogRE9NVHJhbnNhY3Rpb25TdGVwLmNwcCAqLywKKwkJCQk3QkQxMTdFQTE1QjhEQjAxMDBDOTc0
QTMgLyogRE9NVHJhbnNhY3Rpb25TdGVwLmggKi8sCiAJCQkJOTMzMDlEOTMwOTlFNjQ5MTAwNTZF
NTgxIC8qIEVkaXRBY3Rpb24uaCAqLywKIAkJCQk5MzMwOUQ5NDA5OUU2NDkxMDA1NkU1ODEgLyog
RWRpdENvbW1hbmQuY3BwICovLAogCQkJCTkzMzA5RDk1MDk5RTY0OTEwMDU2RTU4MSAvKiBFZGl0
Q29tbWFuZC5oICovLApAQCAtMTk5NzAsNiArMTk5ODgsOCBAQAogCQkJCTkzQjcwRDQ4MDlFQjBD
N0MwMDlEODQ2OCAvKiBKU0RPTUJpbmRpbmcuaCAqLywKIAkJCQlFMUMzNkNCQzBFQjA4MDYyMDA3
NDEwQkMgLyogSlNET01HbG9iYWxPYmplY3QuY3BwICovLAogCQkJCUUxQzM2QzAyMEVCMDc2RDYw
MDc0MTBCQyAvKiBKU0RPTUdsb2JhbE9iamVjdC5oICovLAorCQkJCTdCNTE3RTgyMTVBQ0YxRjMw
MEYxNkI3QSAvKiBKU0RPTVRyYW5zYWN0aW9uLmNwcCAqLywKKwkJCQk3QjUxN0U4MzE1QUNGMUY1
MDBGMTZCN0EgLyogSlNET01UcmFuc2FjdGlvbi5oICovLAogCQkJCUJDNjkzMjcxMEQ3RTI5Mzkw
MEFFNDREMSAvKiBKU0RPTVdpbmRvd0Jhc2UuY3BwICovLAogCQkJCUJDNjkzMjcyMEQ3RTI5Mzkw
MEFFNDREMSAvKiBKU0RPTVdpbmRvd0Jhc2UuaCAqLywKIAkJCQlCQ0JGQjUzQTBEQ0QyOUNGMDAx
OUIzRTUgLyogSlNET01XaW5kb3dTaGVsbC5jcHAgKi8sCkBAIC0yMDIxMiw2ICsyMDIzMiw3IEBA
CiAJCQkJNDlFRUNGNzYxMDUwOEQ5QzAwMDk5RkFCIC8qIEpTVWludDMyQXJyYXlDdXN0b20uY3Bw
ICovLAogCQkJCTQ5RUVDRjc1MTA1MDhEOUMwMDA5OUZBQiAvKiBKU1VpbnQ4QXJyYXlDdXN0b20u
Y3BwICovLAogCQkJCTkxQTM5MDVBMTRDMEY2MTEwMEY2NzkwMSAvKiBKU1VpbnQ4Q2xhbXBlZEFy
cmF5Q3VzdG9tLmNwcCAqLywKKwkJCQk3QjA5OTJGNDE1QUNGMUFEMDBFRDZEMjAgLyogSlNVbmRv
TWFuYWdlckN1c3RvbS5jcHAgKi8sCiAJCQkJRkQ4RTlCREUxM0Q0Q0QyQjAwNTBEQzcyIC8qIEpT
V2F2ZVNoYXBlck5vZGVDdXN0b20uY3BwICovLAogCQkJCTQ5RUVEMTRDMTA1MTk3MUEwMDA5OUZB
QiAvKiBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAgKi8sCiAJCQkJMzE5RTY4ODYx
MzI3QzkxMTAwNEFDOTFBIC8qIEpTV2ViS2l0QW5pbWF0aW9uQ3VzdG9tLmNwcCAqLywKQEAgLTIy
OTc0LDYgKzIyOTk1LDggQEAKIAkJCQkxODg2MDRCNDBGMkU2NTRBMDAwQjY0NDMgLyogRE9NVGlt
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTA1RkQ2OUUwMTI4NDVENDMwMEIyQkVCMyAvKiBET01U
aW1lU3RhbXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTc2RkMyQjBDMTIzNzBEQTAwMDZBOTkxQSAv
KiBET01Ub2tlbkxpc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTdCNTE3RTg3MTVBQ0YyMTEwMEYx
NkI3QSAvKiBET01UcmFuc2FjdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0JEMTE3RUMxNUI4
REIwMTAwQzk3NEEzIC8qIERPTVRyYW5zYWN0aW9uU3RlcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkMxQTM3QkUwOTdDNzE1RjAwMTlGM0Q4IC8qIERPTVRyYXZlcnNhbC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJODU1MjZDRDIwQUIwQjdEOTAwMDMwMkVBIC8qIERPTVRyZWVXYWxrZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTg1MEI0MUMzMEFEOUU3RTcwMEE2RUQ0RiAvKiBET01UcmVlV2Fsa2VySW50
ZXJuYWwuaCBpbiBIZWFkZXJzICovLApAQCAtMjM2MjcsNiArMjM2NTAsNyBAQAogCQkJCUM1MTM3
Q0YzMTFBNTgzNzgwMDRBREI5OSAvKiBKU0RPTVN0cmluZ0xpc3QuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDNjQ2NDk4MTFEODIzNDkwMDY0NTVCMCAvKiBKU0RPTVN0cmluZ01hcC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNzY5NDU2M0QxMjE0RDk3QzAwMDdDQkFFIC8qIEpTRE9NVG9rZW5MaXN0Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQk3QjUxN0U4NTE1QUNGMUY1MDBGMTZCN0EgLyogSlNET01UcmFu
c2FjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkUzN0UwMDYxMkRCQzVBNDAwQTZCMjMzIC8q
IEpTRE9NVVJMLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzY5MzI3NDBEN0UyOTM5MDBBRTQ0RDEg
LyogSlNET01XaW5kb3dCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NTJGQkJCQzBERTI3Q0I2
MDAwMUQzODYgLyogSlNET01XaW5kb3dDdXN0b20uaCBpbiBIZWFkZXJzICovLApAQCAtMjYyMTcs
NiArMjYyNDEsOCBAQAogCQkJCTkzM0ExNEFBMEI3RDFEMDkwMEE1M0ZGRCAvKiBET01UZXh0RXZl
bnQubW0gaW4gU291cmNlcyAqLywKIAkJCQkxODg2MDRCMzBGMkU2NTRBMDAwQjY0NDMgLyogRE9N
VGltZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNzZGQzJCMEIxMjM3MERBMDAwNkE5OTFBIC8q
IERPTVRva2VuTGlzdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3Qjc4REFBODE1Qjc3QzAzMDAz
M0MyRDIgLyogRE9NVHJhbnNhY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0JEMTE3RUIx
NUI4REIwMTAwQzk3NEEzIC8qIERPTVRyYW5zYWN0aW9uU3RlcC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk4NTUyNkNEMzBBQjBCN0RBMDAwMzAyRUEgLyogRE9NVHJlZVdhbGtlci5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTg1QzdGNDkyMEFBRjc5REMwMDQwMTRERCAvKiBET01VSUV2ZW50Lm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMkUzN0RGREExMkRCQUZCODAwQTZCMjMzIC8qIERPTVVSTC5jcHAg
aW4gU291cmNlcyAqLywKQEAgLTI2ODE0LDYgKzI2ODQwLDcgQEAKIAkJCQlCQzY0NjQ5QzExRDgy
MzhDMDA2NDU1QjAgLyogSlNET01TdHJpbmdNYXBDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNzY5NDU2M0MxMjE0RDk3QzAwMDdDQkFFIC8qIEpTRE9NVG9rZW5MaXN0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTE0RTBCQzU2MTM2MTQ4QTgwMDJBRDEyRSAvKiBKU0RPTVRva2VuTGlzdEN1
c3RvbS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3QjUxN0U4NDE1QUNGMUY1MDBGMTZCN0EgLyog
SlNET01UcmFuc2FjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRTM3RTAwNTEyREJDNUE0
MDBBNkIyMzMgLyogSlNET01VUkwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQwM0JBMEMwOUVC
MThDNzAwNzk3QzdGIC8qIEpTRE9NV2luZG93LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNjkz
MjczMEQ3RTI5MzkwMEFFNDREMSAvKiBKU0RPTVdpbmRvd0Jhc2UuY3BwIGluIFNvdXJjZXMgKi8s
CkBAIC0yNzI4Miw2ICsyNzMwOSw3IEBACiAJCQkJOTEwODlEMzMxNEMzMzYwNTAwNUFGQzQ5IC8q
IEpTVWludDhDbGFtcGVkQXJyYXkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTFBMzkwNUIxNEMw
RjYxMTAwRjY3OTAxIC8qIEpTVWludDhDbGFtcGVkQXJyYXlDdXN0b20uY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJN0IxRUEwQ0UxNTc2QzVCNTAwNjAxNzdEIC8qIEpTVW5kb01hbmFnZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJN0IwOTkyRjUxNUFDRjFBRDAwRUQ2RDIwIC8qIEpTVW5kb01hbmFn
ZXJDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTVDNzcwOTQxMDBEM0NBODAwNUJBMjY3
IC8qIEpTVmFsaWRpdHlTdGF0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDgyRDdGNzEzRDRD
OEJEMDA0RTQzNzIgLyogSlNXYXZlU2hhcGVyTm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlG
RDhFOUJERjEzRDRDRDJCMDA1MERDNzIgLyogSlNXYXZlU2hhcGVyTm9kZUN1c3RvbS5jcHAgaW4g
U291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NB
bGxJbk9uZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNC
aW5kaW5nc0FsbEluT25lLmNwcAkocmV2aXNpb24gMTIzMTczKQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMs
NiArNjMsNyBAQAogI2luY2x1ZGUgIkpTRE9NU3RyaW5nTGlzdEN1c3RvbS5jcHAiCiAjaW5jbHVk
ZSAiSlNET01TdHJpbmdNYXBDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTRE9NVG9rZW5MaXN0Q3Vz
dG9tLmNwcCIKKyNpbmNsdWRlICJKU0RPTVRyYW5zYWN0aW9uLmNwcCIKICNpbmNsdWRlICJKU0RP
TVdpbmRvd0Jhc2UuY3BwIgogI2luY2x1ZGUgIkpTRE9NV2luZG93Q3VzdG9tLmNwcCIKICNpbmNs
dWRlICJKU0RPTVdpbmRvd1NoZWxsLmNwcCIKQEAgLTE1NSw2ICsxNTYsNyBAQAogI2luY2x1ZGUg
IkpTVWludDMyQXJyYXlDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTVWludDhBcnJheUN1c3RvbS5j
cHAiCiAjaW5jbHVkZSAiSlNVaW50OENsYW1wZWRBcnJheUN1c3RvbS5jcHAiCisjaW5jbHVkZSAi
SlNVbmRvTWFuYWdlckN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNXZWJLaXRBbmltYXRpb25DdXN0
b20uY3BwIgogI2luY2x1ZGUgIkpTV2ViS2l0QW5pbWF0aW9uTGlzdEN1c3RvbS5jcHAiCiAjaW5j
bHVkZSAiSlNXZWJLaXRDU1NLZXlmcmFtZVJ1bGVDdXN0b20uY3BwIgpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01UcmFuc2FjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01UcmFuc2FjdGlvbi5jcHAJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVRyYW5zYWN0aW9uLmNwcAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwxNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
SlNET01UcmFuc2FjdGlvbi5oIgorCisjaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCisjaW5j
bHVkZSAiSlNEaWN0aW9uYXJ5LmgiCisjaW5jbHVkZSAiSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgi
CisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIlNjcmlwdFZh
bHVlLmgiCisjaW5jbHVkZSAiVW5kb01hbmFnZXIuaCIKKworI2lmIEVOQUJMRShVTkRPX01BTkFH
RVIpCisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworSlNE
T01UcmFuc2FjdGlvbjo6SlNET01UcmFuc2FjdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCBKU09iamVjdCogZGljdGlvbmFyeSwgSlNPYmplY3QqIHdyYXBwZXIsIERPTVdyYXBw
ZXJXb3JsZCogaXNvbGF0ZWRXb3JsZCkKKyAgICA6IG1fY29udGV4dChjb250ZXh0KQorICAgICwg
bV93cmFwcGVyKHdyYXBwZXIpCisgICAgLCBtX2lzb2xhdGVkV29ybGQoaXNvbGF0ZWRXb3JsZCkK
K3sKKyAgICBpZiAod3JhcHBlcikKKyAgICAgICAgbV9kaWN0aW9uYXJ5LnNldE1heUJlTnVsbCgq
bV9pc29sYXRlZFdvcmxkLT5nbG9iYWxEYXRhKCksIHdyYXBwZXIsIGRpY3Rpb25hcnkpOworICAg
IGVsc2UKKyAgICAgICAgQVNTRVJUKCFkaWN0aW9uYXJ5KTsKKyAgICAKKyAgICBFeGVjU3RhdGUq
IGV4ZWMgPSBleGVjU3RhdGUoKTsKKyAgICBBU1NFUlQoZXhlYyk7CisgICAgU2NyaXB0VmFsdWUg
dmFsdWU7CisgICAgbV9pc0F1dG9tYXRpYyA9IGdldFByb3BlcnR5KGV4ZWMsICJleGVjdXRlQXV0
b21hdGljIiwgdmFsdWUpICYmIHZhbHVlLmlzRnVuY3Rpb24oKTsKK30KKworUGFzc1JlZlB0cjxK
U0RPTVRyYW5zYWN0aW9uPiBKU0RPTVRyYW5zYWN0aW9uOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgSlNPYmplY3QqIGRpY3Rpb25hcnksIEpTT2JqZWN0KiB3cmFwcGVy
LCBET01XcmFwcGVyV29ybGQqIGlzb2xhdGVkV29ybGQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBKU0RPTVRyYW5zYWN0aW9uKGNvbnRleHQsIGRpY3Rpb25hcnksIHdyYXBwZXIsIGlzb2xh
dGVkV29ybGQpKTsKK30KKwordm9pZCBKU0RPTVRyYW5zYWN0aW9uOjp2aXNpdERpY3Rpb25hcnko
SlNDOjpTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBpZiAobV9kaWN0aW9uYXJ5KQorICAg
ICAgICB2aXNpdG9yLmFwcGVuZCgmbV9kaWN0aW9uYXJ5KTsKK30KKyAgICAKK0V4ZWNTdGF0ZSog
SlNET01UcmFuc2FjdGlvbjo6ZXhlY1N0YXRlKCkKK3sKKyAgICBBU1NFUlQobV9jb250ZXh0Lmdl
dCgpKTsKKyAgICBpZiAoIW1fY29udGV4dC5nZXQoKSB8fCBtX2NvbnRleHQtPmlzSlNFeGVjdXRp
b25Gb3JiaWRkZW4oKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IHRvSlNET01HbG9iYWxPYmplY3QobV9jb250ZXh0LmdldCgp
LCBtX2lzb2xhdGVkV29ybGQuZ2V0KCkpOworICAgIGlmICghZ2xvYmFsT2JqZWN0KQorICAgICAg
ICByZXR1cm4gMDsKKyAgICAKKyAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7
Cit9CisgICAgCitib29sIEpTRE9NVHJhbnNhY3Rpb246OmdldFByb3BlcnR5KEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgY2hhciogcHJvcGVydHlOYW1lLCBTY3JpcHRWYWx1ZSYgdmFsdWUpCit7Cisg
ICAgSlNEaWN0aW9uYXJ5IGpzRGljdGlvbmFyeShleGVjLCBtX2RpY3Rpb25hcnkuZ2V0KCkpOwor
ICAgIGlmICghanNEaWN0aW9uYXJ5LmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIAorICAgIHJldHVybiBqc0RpY3Rpb25hcnkuZ2V0KHByb3BlcnR5TmFtZSwgdmFsdWUpOwor
fQorCit2b2lkIEpTRE9NVHJhbnNhY3Rpb246OmNhbGxQcm9wZXJ0eShjb25zdCBjaGFyKiBwcm9w
ZXJ0eU5hbWUpCit7CisgICAgRXhlY1N0YXRlKiBleGVjID0gZXhlY1N0YXRlKCk7CisgICAgaWYg
KCFleGVjKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgU2NyaXB0VmFsdWUgdmFsdWU7Cisg
ICAgaWYgKCFnZXRQcm9wZXJ0eShleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKSB8fCAhdmFsdWUu
aXNGdW5jdGlvbigpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgSlNWYWx1ZSBmdW5jdGlv
biA9IHZhbHVlLmpzVmFsdWUoKTsKKyAgICAKKyAgICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICBD
YWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGZ1bmN0aW9uLCBjYWxsRGF0YSk7CisgICAg
CisgICAgaWYgKGNhbGxUeXBlICE9IENhbGxUeXBlTm9uZSkgeworICAgICAgICBNYXJrZWRBcmd1
bWVudEJ1ZmZlciBhcmdzOworICAgICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGZ1bmN0aW9uOwor
ICAgICAgICBpZiAobV9jb250ZXh0LT5pc0RvY3VtZW50KCkpCisgICAgICAgICAgICBKU01haW5U
aHJlYWRFeGVjU3RhdGU6OmNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwg
dGhpc1ZhbHVlLCBhcmdzKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgSlNDOjpjYWxsKGV4
ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXNWYWx1ZSwgYXJncyk7CisgICAg
fQorfQorCit2b2lkIEpTRE9NVHJhbnNhY3Rpb246OmV4ZWN1dGUoKQoreworICAgIGNhbGxQcm9w
ZXJ0eSgiZXhlY3V0ZSIpOworfQorCit2b2lkIEpTRE9NVHJhbnNhY3Rpb246OmV4ZWN1dGVBdXRv
bWF0aWMoKQoreworICAgIGNhbGxQcm9wZXJ0eSgiZXhlY3V0ZUF1dG9tYXRpYyIpOworfQorCit2
b2lkIEpTRE9NVHJhbnNhY3Rpb246OnVuZG8oKQoreworICAgIGNhbGxQcm9wZXJ0eSgidW5kbyIp
OworfQorCit2b2lkIEpTRE9NVHJhbnNhY3Rpb246OnJlZG8oKQoreworICAgIGNhbGxQcm9wZXJ0
eSgicmVkbyIpOworfQorCit9CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01UcmFuc2FjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NVHJhbnNhY3Rpb24uaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NVHJhbnNhY3Rpb24uaAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw3NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0Ogor
ICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgSlNET01UcmFuc2FjdGlvbl9oCisjZGVmaW5lIEpTRE9NVHJhbnNhY3Rp
b25faAorCisjaWYgRU5BQkxFKFVORE9fTUFOQUdFUikKKworI2luY2x1ZGUgIkRPTVRyYW5zYWN0
aW9uLmgiCisjaW5jbHVkZSA8cnVudGltZS9KU09iamVjdC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgorI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBET01XcmFw
cGVyV29ybGQ7CitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OworY2xhc3MgU2NyaXB0VmFs
dWU7CisKK2NsYXNzIEpTRE9NVHJhbnNhY3Rpb24gOiBwdWJsaWMgRE9NVHJhbnNhY3Rpb24gewor
cHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEpTRE9NVHJhbnNhY3Rpb24+IGNyZWF0ZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgSlNDOjpKU09iamVjdCogZGljdGlvbmFyeSwgSlNDOjpK
U09iamVjdCogd3JhcHBlciwgRE9NV3JhcHBlcldvcmxkKiBpc29sYXRlZFdvcmxkKTsKKyAgICB2
b2lkIHZpc2l0RGljdGlvbmFyeShKU0M6OlNsb3RWaXNpdG9yJik7CisgICAgCisgICAgdmlydHVh
bCB2b2lkIGV4ZWN1dGUoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZUF1dG9t
YXRpYygpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB1bmRvKCkgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIHJlZG8oKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNBdXRvbWF0
aWMoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2lzQXV0b21hdGljOyB9CisgICAgCitwcml2
YXRlOgorICAgIEpTRE9NVHJhbnNhY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEpTQzo6
SlNPYmplY3QqIGRpY3Rpb25hcnksIEpTQzo6SlNPYmplY3QqIHdyYXBwZXIsIERPTVdyYXBwZXJX
b3JsZCogaXNvbGF0ZWRXb3JsZCk7CisgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWNTdGF0ZSgpOwor
ICAgIGJvb2wgZ2V0UHJvcGVydHkoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBjaGFyKiBwcm9wZXJ0
eU5hbWUsIFNjcmlwdFZhbHVlJik7CisgICAgdm9pZCBjYWxsUHJvcGVydHkoY29uc3QgY2hhciog
cHJvcGVydHlOYW1lKTsKKyAgICAKKyAgICBSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4g
bV9jb250ZXh0OworICAgIEpTQzo6V3JpdGVCYXJyaWVyPEpTQzo6SlNPYmplY3Q+IG1fZGljdGlv
bmFyeTsKKyAgICBKU0M6OldlYWs8SlNDOjpKU09iamVjdD4gbV93cmFwcGVyOworICAgIFJlZlB0
cjxET01XcmFwcGVyV29ybGQ+IG1faXNvbGF0ZWRXb3JsZDsKKyAgICBib29sIG1faXNBdXRvbWF0
aWM7Cit9OworCit9CisKKyNlbmRpZgorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTVW5kb01hbmFnZXJDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTVW5kb01hbmFnZXJDdXN0b20uY3BwCShyZXZpc2lvbiAwKQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNVbmRvTWFuYWdlckN1c3RvbS5jcHAJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMTEwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5B
QkxFKFVORE9fTUFOQUdFUikKKworI2luY2x1ZGUgIkpTVW5kb01hbmFnZXIuaCIKKworI2luY2x1
ZGUgIkpTRE9NVHJhbnNhY3Rpb24uaCIKKyNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+CisKK3Vz
aW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIHZvaWQg
dmlzaXRUcmFuc2FjdGlvbnNJblN0YWNrKGNvbnN0IFVuZG9NYW5hZ2VyU3RhY2smIHN0YWNrLCBT
bG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0YWNr
LnNpemUoKTsgKytpKSB7CisgICAgICAgIGNvbnN0IFVuZG9NYW5hZ2VyRW50cnkmIGVudHJ5ID0g
KihzdGFja1tpXS5nZXQoKSk7CisgICAgICAgIGlmIChlbnRyeS5pc0VtcHR5KCkpCisgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKGVudHJ5WzBdLT5pc0RPTVRyYW5zYWN0aW9uKCkp
IHsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgZW50cnkuc2l6ZSgpOyArK2op
IHsKKyAgICAgICAgICAgICAgICBVbmRvU3RlcCogc3RlcCA9IGVudHJ5W2pdLmdldCgpOworICAg
ICAgICAgICAgICAgIEFTU0VSVChzdGVwLT5pc0RPTVRyYW5zYWN0aW9uKCkpOworICAgICAgICAg
ICAgICAgIHN0YXRpY19jYXN0PEpTRE9NVHJhbnNhY3Rpb24qPihzdGVwKS0+dmlzaXREaWN0aW9u
YXJ5KHZpc2l0b3IpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2b2lk
IEpTVW5kb01hbmFnZXI6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYg
dmlzaXRvcikKK3sKKyAgICBKU1VuZG9NYW5hZ2VyKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVW5k
b01hbmFnZXIqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmpl
Y3QsICZzX2luZm8pOworICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJp
ZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxh
Zyk7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJy
aWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0
LCB2aXNpdG9yKTsKKyAgICAKKyAgICBVbmRvTWFuYWdlciogdW5kb01hbmFnZXIgPSB0aGlzT2Jq
ZWN0LT5pbXBsKCk7CisgICAgdmlzaXRUcmFuc2FjdGlvbnNJblN0YWNrKHVuZG9NYW5hZ2VyLT51
bmRvU3RhY2soKSwgdmlzaXRvcik7CisgICAgdmlzaXRUcmFuc2FjdGlvbnNJblN0YWNrKHVuZG9N
YW5hZ2VyLT5yZWRvU3RhY2soKSwgdmlzaXRvcik7Cit9CisKKworSlNWYWx1ZSBKU1VuZG9NYW5h
Z2VyOjp0cmFuc2FjdChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBleGVjLT5ob3N0VGhpc1ZhbHVlKCk7CisgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoJkpT
VW5kb01hbmFnZXI6OnNfaW5mbykpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVj
KTsKKyAgICBKU1VuZG9NYW5hZ2VyKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVW5kb01hbmFnZXIq
Pihhc09iamVjdCh0aGlzVmFsdWUpKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNh
c3RlZFRoaXMsICZKU1VuZG9NYW5hZ2VyOjpzX2luZm8pOworICAgIFVuZG9NYW5hZ2VyKiBpbXBs
ID0gc3RhdGljX2Nhc3Q8VW5kb01hbmFnZXIqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOworICAgIAor
ICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAyKQorICAgICAgICByZXR1cm4gdGhyb3dF
cnJvcihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7CisgICAgCisg
ICAgSlNWYWx1ZSBkaWN0aW9uYXJ5ID0gTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwg
RGVmYXVsdElzVW5kZWZpbmVkKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAg
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIGlmICghZGljdGlvbmFyeS5pc09iamVjdCgp
KQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYyk7CisgICAgCisgICAgYm9vbCBt
ZXJnZShNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAxLCBEZWZhdWx0SXNVbmRlZmluZWQp
LnRvQm9vbGVhbigpKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOworICAgIAorICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNj
cmlwdENvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgaWYgKCFzY3JpcHRD
b250ZXh0KQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICAKKyAgICBSZWZQdHI8
SlNET01UcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb24gPSBKU0RPTVRyYW5zYWN0aW9uOjpjcmVhdGUo
c2NyaXB0Q29udGV4dCwgZGljdGlvbmFyeS5nZXRPYmplY3QoKSwgdGhpc1ZhbHVlLmdldE9iamVj
dCgpLCBjdXJyZW50V29ybGQoZXhlYykpOworICAgIAorICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OworICAgIGltcGwtPnRyYW5zYWN0KHRyYW5zYWN0aW9uLCBtZXJnZSwgZWMpOworICAgIHNldERP
TUV4Y2VwdGlvbihleGVjLCBlYyk7CisgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cit9CisKK30K
KworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVRyYW5zYWN0
aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVRy
YW5zYWN0aW9uLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4RE9NVHJhbnNhY3Rpb24uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzNSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBk
aXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJWOERPTVRyYW5zYWN0aW9uLmgiCisKKyNpZiBFTkFC
TEUoVU5ET19NQU5BR0VSKQorCisjaW5jbHVkZSAiRE9NU3RyaW5nTGlzdC5oIgorI2luY2x1ZGUg
IlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKyNpbmNs
dWRlICJWOERPTVdpbmRvdy5oIgorI2luY2x1ZGUgIlY4U3RvcmFnZS5oIgorI2luY2x1ZGUgIlY4
VXRpbGl0aWVzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIHZvaWQgd2Vha0Rp
Y3Rpb25hcnlDYWxsYmFjayh2ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+LCB2b2lkKiBwYXJhbWV0
ZXIpCit7CisgICAgc3RhdGljX2Nhc3Q8VjhET01UcmFuc2FjdGlvbio+KHBhcmFtZXRlciktPmRp
c3Bvc2VEaWN0aW9uYXJ5T2JqZWN0KCk7Cit9CisKK1Y4RE9NVHJhbnNhY3Rpb246OlY4RE9NVHJh
bnNhY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgdjg6OkxvY2FsPHY4OjpP
YmplY3Q+IGRpY3Rpb25hcnksIGNvbnN0IFdvcmxkQ29udGV4dEhhbmRsZSYgd29ybGRDb250ZXh0
KQorICAgIDogbV9jb250ZXh0KGNvbnRleHQpCisgICAgLCBtX3dvcmxkQ29udGV4dCh3b3JsZENv
bnRleHQpCit7CisgICAgbV9kaWN0aW9uYXJ5ID0gdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46
Ok5ldyhkaWN0aW9uYXJ5KTsKKyAgICBtX2RpY3Rpb25hcnkuTWFrZVdlYWsodGhpcywgJndlYWtE
aWN0aW9uYXJ5Q2FsbGJhY2spOworICAgIAorICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHByb3Bl
cnR5ID0gZGljdGlvbmFyeS0+R2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgiZXhlY3V0ZUF1dG9t
YXRpYyIpKTsKKyAgICBtX2lzQXV0b21hdGljID0gIXByb3BlcnR5LklzRW1wdHkoKSAmJiBwcm9w
ZXJ0eS0+SXNGdW5jdGlvbigpOworfQorCitQYXNzUmVmUHRyPFY4RE9NVHJhbnNhY3Rpb24+IFY4
RE9NVHJhbnNhY3Rpb246OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCB2
ODo6TG9jYWw8djg6Ok9iamVjdD4gZGljdGlvbmFyeSwgY29uc3QgV29ybGRDb250ZXh0SGFuZGxl
JiB3b3JsZENvbnRleHQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBWOERPTVRyYW5zYWN0
aW9uKGNvbnRleHQsIGRpY3Rpb25hcnksIHdvcmxkQ29udGV4dCkpOworfQorICAgIAorVjhET01U
cmFuc2FjdGlvbjo6flY4RE9NVHJhbnNhY3Rpb24oKQoreworICAgIGRpc3Bvc2VEaWN0aW9uYXJ5
T2JqZWN0KCk7Cit9CisKK3ZvaWQgVjhET01UcmFuc2FjdGlvbjo6ZGlzcG9zZURpY3Rpb25hcnlP
YmplY3QoKQoreworICAgIGlmICghbV9kaWN0aW9uYXJ5LklzRW1wdHkoKSkgeworICAgICAgICBt
X2RpY3Rpb25hcnkuRGlzcG9zZSgpOworICAgICAgICBtX2RpY3Rpb25hcnkuQ2xlYXIoKTsKKyAg
ICB9Cit9CisKK3ZvaWQgVjhET01UcmFuc2FjdGlvbjo6ZXhlY3V0ZSgpCit7CisgICAgY2FsbFBy
b3BlcnR5KG1fY29udGV4dC5nZXQoKSwgImV4ZWN1dGUiKTsKK30KKwordm9pZCBWOERPTVRyYW5z
YWN0aW9uOjpleGVjdXRlQXV0b21hdGljKCkKK3sKKyAgICBjYWxsUHJvcGVydHkobV9jb250ZXh0
LmdldCgpLCAiZXhlY3V0ZUF1dG9tYXRpYyIpOworfQorCit2b2lkIFY4RE9NVHJhbnNhY3Rpb246
OnVuZG8oKQoreworICAgIGNhbGxQcm9wZXJ0eShtX2NvbnRleHQuZ2V0KCksICJ1bmRvIik7Cit9
CisKK3ZvaWQgVjhET01UcmFuc2FjdGlvbjo6cmVkbygpCit7CisgICAgY2FsbFByb3BlcnR5KG1f
Y29udGV4dC5nZXQoKSwgInJlZG8iKTsKK30KKworCit2b2lkIFY4RE9NVHJhbnNhY3Rpb246OmNh
bGxQcm9wZXJ0eShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBjaGFyKiBw
cm9wZXJ0eU5hbWUpCit7CisgICAgaWYgKCFjb250ZXh0IHx8IGNvbnRleHQtPmlzSlNFeGVjdXRp
b25Gb3JiaWRkZW4oKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIHY4OjpIYW5kbGVTY29w
ZSBoYW5kbGVTY29wZTsKKyAgICAKKyAgICB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IHY4Q29udGV4
dCA9IHRvVjhDb250ZXh0KGNvbnRleHQsIG1fd29ybGRDb250ZXh0KTsKKyAgICBpZiAodjhDb250
ZXh0LklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIHY4OjpDb250ZXh0OjpT
Y29wZSBzY29wZSh2OENvbnRleHQpOworICAgIAorICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBk
aWN0aW9uYXJ5ID0gdjg6OkxvY2FsPHY4OjpPYmplY3Q+OjpOZXcobV9kaWN0aW9uYXJ5KTsKKyAg
ICBpZiAoZGljdGlvbmFyeS5Jc0VtcHR5KCkgfHwgIWRpY3Rpb25hcnktPklzT2JqZWN0KCkpCisg
ICAgICAgIHJldHVybjsKKyAgICAKKyAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBwcm9wZXJ0eSA9
IGRpY3Rpb25hcnktPkdldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2wocHJvcGVydHlOYW1lKSk7Cisg
ICAgaWYgKHByb3BlcnR5LklzRW1wdHkoKSB8fCAhcHJvcGVydHktPklzRnVuY3Rpb24oKSkKKyAg
ICAgICAgcmV0dXJuOworICAgIAorICAgIHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+IGhhbmRsZXJG
dW5jdGlvbiA9ICB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPjo6Q2FzdChwcm9wZXJ0eSk7CisgICAg
CisgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IHJlY2VpdmVyID0gdjg6OkxvY2FsPHY4OjpPYmpl
Y3Q+OjpDYXN0KGhhbmRsZXJGdW5jdGlvbik7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHBh
cmFtZXRlcnNbMF0gPSB7IH07CisgICAgCisgICAgaWYgKFY4UHJveHkqIHByb3h5ID0gVjhQcm94
eTo6cmV0cmlldmUoY29udGV4dCkpIHsKKyAgICAgICAgRnJhbWUqIGZyYW1lID0gc3RhdGljX2Nh
c3Q8RG9jdW1lbnQqPihjb250ZXh0KS0+ZnJhbWUoKTsKKyAgICAgICAgaWYgKGZyYW1lLT5zY3Jp
cHQoKS0+Y2FuRXhlY3V0ZVNjcmlwdHMoQWJvdXRUb0V4ZWN1dGVTY3JpcHQpKQorICAgICAgICAg
ICAgcHJveHktPmNhbGxGdW5jdGlvbihoYW5kbGVyRnVuY3Rpb24sIHJlY2VpdmVyLCAwLCBwYXJh
bWV0ZXJzKTsKKyAgICB9Cit9CisKK30KKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOERPTVRyYW5zYWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhET01UcmFuc2FjdGlvbi5oCShyZXZpc2lvbiAwKQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01UcmFuc2FjdGlvbi5oCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBt
ZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBWOERPTVRyYW5zYWN0aW9uX2gKKyNkZWZpbmUgVjhET01UcmFu
c2FjdGlvbl9oCisKKyNpZiBFTkFCTEUoVU5ET19NQU5BR0VSKQorCisjaW5jbHVkZSAiRE9NVHJh
bnNhY3Rpb24uaCIKKyNpbmNsdWRlICJXb3JsZENvbnRleHRIYW5kbGUuaCIKKyNpbmNsdWRlIDx2
OC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ7CisKK2NsYXNzIFY4RE9NVHJhbnNhY3Rpb24gOiBwdWJsaWMgRE9NVHJhbnNhY3Rpb24gewor
cHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFY4RE9NVHJhbnNhY3Rpb24+IGNyZWF0ZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0Kiwgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IGRpY3Rpb25hcnks
IGNvbnN0IFdvcmxkQ29udGV4dEhhbmRsZSYpOyAgICAKKyAgICB+VjhET01UcmFuc2FjdGlvbigp
OworICAgIAorICAgIC8vIFByb3ZpZGVzIGFjY2VzcyB0byB0aGUgdW5kZXJseWluZyBoYW5kbGUg
Zm9yIEdDLiBSZXR1cm5lZAorICAgIC8vIHZhbHVlIGlzIGEgd2VhayBoYW5kbGUgYW5kIHNvIG5v
dCBndWFyYW50ZWVkIHRvIHN0YXkgYWxpdmUuCisgICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVj
dD4gZGljdGlvbmFyeUpTT2JqZWN0KCkgeyByZXR1cm4gbV9kaWN0aW9uYXJ5OyB9CisgICAgCisg
ICAgdmlydHVhbCB2b2lkIGV4ZWN1dGUoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZXhl
Y3V0ZUF1dG9tYXRpYygpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB1bmRvKCkgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIHJlZG8oKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wg
aXNBdXRvbWF0aWMoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2lzQXV0b21hdGljOyB9Cisg
ICAgCisgICAgdm9pZCBkaXNwb3NlRGljdGlvbmFyeU9iamVjdCgpOworCitwcml2YXRlOgorICAg
IFY4RE9NVHJhbnNhY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIHY4OjpMb2NhbDx2ODo6
T2JqZWN0PiBkaWN0aW9uYXJ5LCBjb25zdCBXb3JsZENvbnRleHRIYW5kbGUmKTsKKyAgICB2b2lk
IGNhbGxQcm9wZXJ0eShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgY2hhciogcHJvcGVy
dHlOYW1lKTsKKworICAgIFJlZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBtX2NvbnRleHQ7
CisgICAgV29ybGRDb250ZXh0SGFuZGxlIG1fd29ybGRDb250ZXh0OworICAgIHY4OjpQZXJzaXN0
ZW50PHY4OjpPYmplY3Q+IG1fZGljdGlvbmFyeTsKKyAgICBib29sIG1faXNBdXRvbWF0aWM7Cit9
OworCit9CisKKyNlbmRpZgorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOFVuZG9NYW5hZ2VyQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhVbmRvTWFuYWdlckN1c3RvbS5jcHAJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhVbmRvTWFuYWdl
ckN1c3RvbS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTAyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlv
bi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorCisjaWYgRU5BQkxFKFVORE9fTUFOQUdFUikKKworI2luY2x1ZGUgIlY4VW5kb01hbmFn
ZXIuaCIKKworI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVj
dXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiVjhET01UcmFuc2FjdGlvbi5oIgorI2luY2x1ZGUg
IlY4RE9NV3JhcHBlci5oIgorI2luY2x1ZGUgIlY4UHJveHkuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitzdGF0aWMgdm9pZCB2aXNpdFRyYW5zYWN0aW9uc0luU3RhY2soVmVjdG9yPHY4OjpQ
ZXJzaXN0ZW50PHY4OjpWYWx1ZT4gPiYgZGljdGlvbmFyaWVzLCBjb25zdCBVbmRvTWFuYWdlclN0
YWNrJiBzdGFjaykKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0YWNrLnNpemUoKTsg
KytpKSB7CisgICAgICAgIGNvbnN0IFVuZG9NYW5hZ2VyRW50cnkmIGVudHJ5ID0gKihzdGFja1tp
XS5nZXQoKSk7CisgICAgICAgIGlmIChlbnRyeS5pc0VtcHR5KCkpCisgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgaWYgKGVudHJ5WzBdLT5pc0RPTVRyYW5zYWN0aW9uKCkpIHsKKyAgICAg
ICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgZW50cnkuc2l6ZSgpOyArK2opIHsKKyAgICAg
ICAgICAgICAgICBVbmRvU3RlcCogc3RlcCA9IGVudHJ5W2pdLmdldCgpOworICAgICAgICAgICAg
ICAgIEFTU0VSVChzdGVwLT5pc0RPTVRyYW5zYWN0aW9uKCkpOworICAgICAgICAgICAgICAgIFY4
RE9NVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uID0gc3RhdGljX2Nhc3Q8VjhET01UcmFuc2FjdGlv
bio+KHN0ZXApOworICAgICAgICAgICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IGRp
Y3Rpb25hcnkgPSB0cmFuc2FjdGlvbi0+ZGljdGlvbmFyeUpTT2JqZWN0KCk7CisgICAgICAgICAg
ICAgICAgaWYgKCFkaWN0aW9uYXJ5LklzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICAgICAgZGlj
dGlvbmFyaWVzLmFwcGVuZChkaWN0aW9uYXJ5KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgIH0KK30KKwordm9pZCBWOFVuZG9NYW5hZ2VyOjp2aXNpdERPTVdyYXBwZXIoRE9NRGF0YVN0
b3JlKiBzdG9yZSwgdm9pZCogb2JqZWN0LCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFw
cGVyKQoreworICAgIFVuZG9NYW5hZ2VyKiB1bmRvTWFuYWdlciA9IHN0YXRpY19jYXN0PFVuZG9N
YW5hZ2VyKj4ob2JqZWN0KTsKKyAgICBWZWN0b3I8djg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiA+
IGRpY3Rpb25hcmllczsKKyAgICB2aXNpdFRyYW5zYWN0aW9uc0luU3RhY2soZGljdGlvbmFyaWVz
LCB1bmRvTWFuYWdlci0+dW5kb1N0YWNrKCkpOworICAgIHZpc2l0VHJhbnNhY3Rpb25zSW5TdGFj
ayhkaWN0aW9uYXJpZXMsIHVuZG9NYW5hZ2VyLT5yZWRvU3RhY2soKSk7CisgICAgaWYgKCFkaWN0
aW9uYXJpZXMuaXNFbXB0eSgpKQorICAgICAgICB2ODo6Vjg6OkFkZEltcGxpY2l0UmVmZXJlbmNl
cyh3cmFwcGVyLCBkaWN0aW9uYXJpZXMuZGF0YSgpLCBkaWN0aW9uYXJpZXMuc2l6ZSgpKTsKK30K
Kwordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4VW5kb01hbmFnZXI6OnRyYW5zYWN0Q2FsbGJhY2so
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5VbmRvTWFu
YWdlci50cmFuc2FjdCIpOworICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMikKKyAgICAgICAgcmV0
dXJuIFY4UHJveHk6OnRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRl
KCkpOworICAgIFVuZG9NYW5hZ2VyKiBpbXAgPSBWOFVuZG9NYW5hZ2VyOjp0b05hdGl2ZShhcmdz
LkhvbGRlcigpKTsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICAKKyAgICBFWENFUFRJ
T05fQkxPQ0sodjg6OkxvY2FsPHY4OjpWYWx1ZT4sIGRpY3Rpb25hcnksIE1BWUJFX01JU1NJTkdf
UEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpOworICAgIGlmIChkaWN0aW9u
YXJ5LklzRW1wdHkoKSB8fCAhZGljdGlvbmFyeS0+SXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJu
IFY4UHJveHk6OnRocm93VHlwZUVycm9yKCJOb3QgYW4gb2JqZWN0LiIsIGFyZ3MuR2V0SXNvbGF0
ZSgpKTsKKyAgICAKKyAgICBFWENFUFRJT05fQkxPQ0soYm9vbCwgbWVyZ2UsIE1BWUJFX01JU1NJ
TkdfUEFSQU1FVEVSKGFyZ3MsIDEsIERlZmF1bHRJc1VuZGVmaW5lZCktPkJvb2xlYW5WYWx1ZSgp
KTsKKyAgICAKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gZ2V0U2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpOworICAgIGlmICghY29udGV4dCkKKyAgICAgICAgcmV0dXJuIHY4
OjpIYW5kbGU8djg6OlZhbHVlPigpOworICAgIAorICAgIFJlZlB0cjxWOERPTVRyYW5zYWN0aW9u
PiB0cmFuc2FjdGlvbiA9IFY4RE9NVHJhbnNhY3Rpb246OmNyZWF0ZShjb250ZXh0LCB2ODo6TG9j
YWw8djg6Ok9iamVjdD46OkNhc3QoZGljdGlvbmFyeSksIFdvcmxkQ29udGV4dEhhbmRsZShVc2VD
dXJyZW50V29ybGQpKTsKKyAgICAKKyAgICBpbXAtPnRyYW5zYWN0KHRyYW5zYWN0aW9uLCBtZXJn
ZSwgZWMpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIFY4UHJveHk6OnNldERPTUV4Y2Vw
dGlvbihlYywgYXJncy5HZXRJc29sYXRlKCkpOworICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4oKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KFVORE9fTUFOQUdFUikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAJKHJl
dmlzaW9uIDEyMzE3MykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIkNoYXJhY3RlckRhdGEuaCIKIAorI2luY2x1ZGUgIkRPTVRyYW5zYWN0aW9uLmgiCiAj
aW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAi
RXhjZXB0aW9uQ29kZS5oIgpAQCAtMTgzLDYgKzE4NCwxMyBAQCB2b2lkIENoYXJhY3RlckRhdGE6
OnNldE5vZGVWYWx1ZShjb25zdCBTCiAKIHZvaWQgQ2hhcmFjdGVyRGF0YTo6c2V0RGF0YUFuZFVw
ZGF0ZShjb25zdCBTdHJpbmcmIG5ld0RhdGEsIHVuc2lnbmVkIG9mZnNldE9mUmVwbGFjZWREYXRh
LCB1bnNpZ25lZCBvbGRMZW5ndGgsIHVuc2lnbmVkIG5ld0xlbmd0aCkKIHsKKyNpZiBFTkFCTEUo
VU5ET19NQU5BR0VSKQorICAgIGlmIChET01UcmFuc2FjdGlvbjo6aXNSZWNvcmRpbmdBdXRvbWF0
aWNUcmFuc2FjdGlvbih0aGlzKSkgeworICAgICAgICBjb25zdCBTdHJpbmcmIHJlcGxhY2luZ0Rh
dGEgPSBuZXdEYXRhLnN1YnN0cmluZyhvZmZzZXRPZlJlcGxhY2VkRGF0YSwgbmV3TGVuZ3RoKTsK
KyAgICAgICAgY29uc3QgU3RyaW5nJiByZXBsYWNlZERhdGEgPSBtX2RhdGEuc3Vic3RyaW5nKG9m
ZnNldE9mUmVwbGFjZWREYXRhLCBvbGRMZW5ndGgpOworICAgICAgICBET01UcmFuc2FjdGlvbjo6
YWRkRE9NVHJhbnNhY3Rpb25TdGVwKERhdGFSZXBsYWNpbmdET01UcmFuc2FjdGlvblN0ZXA6OmNy
ZWF0ZSh0aGlzLCBvZmZzZXRPZlJlcGxhY2VkRGF0YSwgb2xkTGVuZ3RoLCByZXBsYWNpbmdEYXRh
LCByZXBsYWNlZERhdGEpKTsKKyAgICB9CisjZW5kaWYKICAgICBTdHJpbmcgb2xkRGF0YSA9IG1f
ZGF0YTsKICAgICBtX2RhdGEgPSBuZXdEYXRhOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20v
Q29udGFpbmVyTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0NvbnRh
aW5lck5vZGUuY3BwCShyZXZpc2lvbiAxMjMxNzMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vQ29u
dGFpbmVyTm9kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAKIAogI2luY2x1
ZGUgIkNoaWxkTGlzdE11dGF0aW9uU2NvcGUuaCIKICNpbmNsdWRlICJDb250YWluZXJOb2RlQWxn
b3JpdGhtcy5oIgorI2luY2x1ZGUgIkRPTVRyYW5zYWN0aW9uLmgiCiAjaW5jbHVkZSAiRGVsZXRl
QnV0dG9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJF
eGNlcHRpb25Db2RlLmgiCkBAIC0zMTUsNiArMzE2LDEwIEBAIHN0YXRpYyB2b2lkIHdpbGxSZW1v
dmVDaGlsZChOb2RlKiBjaGlsZCkKICAgICBDaGlsZExpc3RNdXRhdGlvblNjb3BlKGNoaWxkLT5w
YXJlbnROb2RlKCkpLndpbGxSZW1vdmVDaGlsZChjaGlsZCk7CiAgICAgY2hpbGQtPm5vdGlmeU11
dGF0aW9uT2JzZXJ2ZXJzTm9kZVdpbGxEZXRhY2goKTsKICNlbmRpZgorI2lmIEVOQUJMRShVTkRP
X01BTkFHRVIpCisgICAgaWYgKERPTVRyYW5zYWN0aW9uOjppc1JlY29yZGluZ0F1dG9tYXRpY1Ry
YW5zYWN0aW9uKGNoaWxkLT5wYXJlbnROb2RlKCkpKQorICAgICAgICBET01UcmFuc2FjdGlvbjo6
YWRkRE9NVHJhbnNhY3Rpb25TdGVwKE5vZGVSZW1vdmluZ0RPTVRyYW5zYWN0aW9uU3RlcDo6Y3Jl
YXRlKGNoaWxkLT5wYXJlbnROb2RlKCksIGNoaWxkKSk7CisjZW5kaWYKIAogICAgIGRpc3BhdGNo
Q2hpbGRSZW1vdmFsRXZlbnRzKGNoaWxkKTsKICAgICBjaGlsZC0+ZG9jdW1lbnQoKS0+bm9kZVdp
bGxCZVJlbW92ZWQoY2hpbGQpOyAvLyBlLmcuIG11dGF0aW9uIGV2ZW50IGxpc3RlbmVyIGNhbiBj
cmVhdGUgYSBuZXcgcmFuZ2UuCkBAIC0zMzEsNiArMzM2LDkgQEAgc3RhdGljIHZvaWQgd2lsbFJl
bW92ZUNoaWxkcmVuKENvbnRhaW5lcgogI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpCiAg
ICAgQ2hpbGRMaXN0TXV0YXRpb25TY29wZSBtdXRhdGlvbihjb250YWluZXIpOwogI2VuZGlmCisj
aWYgRU5BQkxFKFVORE9fTUFOQUdFUikKKyAgICBib29sIGlzUmVjb3JkaW5nQXV0b21hdGljVHJh
bnNhY3Rpb24gPSBET01UcmFuc2FjdGlvbjo6aXNSZWNvcmRpbmdBdXRvbWF0aWNUcmFuc2FjdGlv
bihjb250YWluZXIpOworI2VuZGlmCiAKICAgICBmb3IgKE5vZGVWZWN0b3I6OmNvbnN0X2l0ZXJh
dG9yIGl0ID0gY2hpbGRyZW4uYmVnaW4oKTsgaXQgIT0gY2hpbGRyZW4uZW5kKCk7IGl0KyspIHsK
ICAgICAgICAgTm9kZSogY2hpbGQgPSBpdC0+Z2V0KCk7CkBAIC0zMzksNiArMzQ3LDEwIEBAIHN0
YXRpYyB2b2lkIHdpbGxSZW1vdmVDaGlsZHJlbihDb250YWluZXIKICAgICAgICAgbXV0YXRpb24u
d2lsbFJlbW92ZUNoaWxkKGNoaWxkKTsKICAgICAgICAgY2hpbGQtPm5vdGlmeU11dGF0aW9uT2Jz
ZXJ2ZXJzTm9kZVdpbGxEZXRhY2goKTsKICNlbmRpZgorI2lmIEVOQUJMRShVTkRPX01BTkFHRVIp
CisgICAgICAgIGlmIChpc1JlY29yZGluZ0F1dG9tYXRpY1RyYW5zYWN0aW9uKQorICAgICAgICAg
ICAgRE9NVHJhbnNhY3Rpb246OmFkZERPTVRyYW5zYWN0aW9uU3RlcChOb2RlUmVtb3ZpbmdET01U
cmFuc2FjdGlvblN0ZXA6OmNyZWF0ZShjb250YWluZXIsIGNoaWxkKSk7CisjZW5kaWYKIAogICAg
ICAgICAvLyBmaXJlIHJlbW92ZWQgZnJvbSBkb2N1bWVudCBtdXRhdGlvbiBldmVudHMuCiAgICAg
ICAgIGRpc3BhdGNoQ2hpbGRSZW1vdmFsRXZlbnRzKGNoaWxkKTsKQEAgLTk3Miw2ICs5ODQsMTEg
QEAgc3RhdGljIHZvaWQgdXBkYXRlVHJlZUFmdGVySW5zZXJ0aW9uKENvbgogI2lmIEVOQUJMRShN
VVRBVElPTl9PQlNFUlZFUlMpCiAgICAgQ2hpbGRMaXN0TXV0YXRpb25TY29wZShwYXJlbnQpLmNo
aWxkQWRkZWQoY2hpbGQpOwogI2VuZGlmCisgICAgCisjaWYgRU5BQkxFKFVORE9fTUFOQUdFUikK
KyAgICBpZiAoRE9NVHJhbnNhY3Rpb246OmlzUmVjb3JkaW5nQXV0b21hdGljVHJhbnNhY3Rpb24o
cGFyZW50KSkKKyAgICAgICAgRE9NVHJhbnNhY3Rpb246OmFkZERPTVRyYW5zYWN0aW9uU3RlcChO
b2RlSW5zZXJ0aW5nRE9NVHJhbnNhY3Rpb25TdGVwOjpjcmVhdGUocGFyZW50LCBjaGlsZCkpOwor
I2VuZGlmCiAKICAgICBwYXJlbnQtPmNoaWxkcmVuQ2hhbmdlZChmYWxzZSwgY2hpbGQtPnByZXZp
b3VzU2libGluZygpLCBjaGlsZC0+bmV4dFNpYmxpbmcoKSwgMSk7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5jcHAJKHJldmlzaW9uIDEyMzE3MykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkNsaWVu
dFJlY3QuaCIKICNpbmNsdWRlICJDbGllbnRSZWN0TGlzdC5oIgogI2luY2x1ZGUgIkRPTVRva2Vu
TGlzdC5oIgorI2luY2x1ZGUgIkRPTVRyYW5zYWN0aW9uLmgiCiAjaW5jbHVkZSAiRGF0YXNldERP
TVN0cmluZ01hcC5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRG
cmFnbWVudC5oIgpAQCAtMjAyMyw2ICsyMDI0LDExIEBAIHZvaWQgRWxlbWVudDo6d2lsbE1vZGlm
eUF0dHJpYnV0ZShjb25zdCAKICAgICAgICAgcmVjaXBpZW50cy0+ZW5xdWV1ZU11dGF0aW9uUmVj
b3JkKE11dGF0aW9uUmVjb3JkOjpjcmVhdGVBdHRyaWJ1dGVzKHRoaXMsIG5hbWUsIG9sZFZhbHVl
KSk7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShVTkRPX01BTkFHRVIpCisgICAgaWYgKERPTVRyYW5z
YWN0aW9uOjppc1JlY29yZGluZ0F1dG9tYXRpY1RyYW5zYWN0aW9uKHRoaXMpKQorICAgICAgICBE
T01UcmFuc2FjdGlvbjo6YWRkRE9NVHJhbnNhY3Rpb25TdGVwKEF0dHJDaGFuZ2luZ0RPTVRyYW5z
YWN0aW9uU3RlcDo6Y3JlYXRlKHRoaXMsIG5hbWUsIG9sZFZhbHVlLCBuZXdWYWx1ZSkpOworI2Vu
ZGlmCisKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6d2lsbE1vZGlmeURPTUF0dHIoZG9jdW1lbnQoKSwgdGhpcywgb2xkVmFsdWUsIG5ld1ZhbHVl
KTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29t
bWFuZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRp
dENvbW1hbmQuaAkocmV2aXNpb24gMTIzMTczKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9D
b21wb3NpdGVFZGl0Q29tbWFuZC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw5IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdW5hcHBseSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
dm9pZCByZWFwcGx5KCkgT1ZFUlJJREU7CiAgICAgRWRpdEFjdGlvbiBlZGl0aW5nQWN0aW9uKCkg
Y29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9lZGl0QWN0aW9uOyB9CisjaWYgRU5BQkxFKFVORE9f
TUFOQUdFUikKKyAgICBib29sIGlzRE9NVHJhbnNhY3Rpb24oKSBjb25zdCBPVkVSUklERSB7IHJl
dHVybiBmYWxzZTsgfQorI2VuZGlmCiAgICAgdm9pZCBhcHBlbmQoU2ltcGxlRWRpdENvbW1hbmQq
KTsKICAgICBib29sIHdhc0NyZWF0ZUxpbmtDb21tYW5kKCkgY29uc3QgeyByZXR1cm4gbV9lZGl0
QWN0aW9uID09IEVkaXRBY3Rpb25DcmVhdGVMaW5rOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRE9NVHJhbnNhY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRE9NVHJhbnNhY3Rpb24uY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNv
cmUvZWRpdGluZy9ET01UcmFuc2FjdGlvbi5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTAx
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRPTVRyYW5zYWN0aW9uLmgiCisKKyNp
ZiBFTkFCTEUoVU5ET19NQU5BR0VSKQorCisjaW5jbHVkZSAiTm9kZS5oIgorI2luY2x1ZGUgIlVu
ZG9NYW5hZ2VyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRE9NVHJhbnNhY3Rpb24qIERP
TVRyYW5zYWN0aW9uOjpzX2NhcHR1cmluZ0RPTVRyYW5zYWN0aW9uID0gMDsKKyAgICAKK0RPTVRy
YW5zYWN0aW9uOjpET01UcmFuc2FjdGlvbigpCisgICAgOiBtX3VuZG9NYW5hZ2VyKDApCit7Cit9
CisgICAgCit2b2lkIERPTVRyYW5zYWN0aW9uOjphcHBseSgpCit7CisgICAgaWYgKGlzQXV0b21h
dGljKCkpIHsKKyAgICAgICAgc19jYXB0dXJpbmdET01UcmFuc2FjdGlvbiA9IHRoaXM7CisgICAg
ICAgIG1fY2hhbmdlcyA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8UmVmUHRyPERPTVRyYW5zYWN0aW9u
U3RlcD4gPik7CisgICAgICAgIGV4ZWN1dGVBdXRvbWF0aWMoKTsKKyAgICAgICAgc19jYXB0dXJp
bmdET01UcmFuc2FjdGlvbiA9IDA7CisgICAgfSBlbHNlCisgICAgICAgIGV4ZWN1dGUoKTsKK30K
Kwordm9pZCBET01UcmFuc2FjdGlvbjo6dW5hcHBseSgpCit7CisgICAgaWYgKGlzQXV0b21hdGlj
KCkpIHsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IG1fY2hhbmdlcy0+c2l6ZSgpOyBpID4gMDsg
LS1pKQorICAgICAgICAgICAgbV9jaGFuZ2VzLT5hdChpIC0gMSktPnVuYXBwbHkoKTsKKyAgICB9
IGVsc2UKKyAgICAgICAgdW5kbygpOworICAgIAorICAgIGlmIChtX3VuZG9NYW5hZ2VyKQorICAg
ICAgICBtX3VuZG9NYW5hZ2VyLT5yZWdpc3RlclJlZG9TdGVwKHRoaXMpOworfQorCit2b2lkIERP
TVRyYW5zYWN0aW9uOjpyZWFwcGx5KCkKK3sKKyAgICBpZiAoaXNBdXRvbWF0aWMoKSkgeworICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fY2hhbmdlcy0+c2l6ZSgpOyArK2kpCisgICAg
ICAgICAgICBtX2NoYW5nZXMtPmF0KGkpLT5yZWFwcGx5KCk7CisgICAgfSBlbHNlCisgICAgICAg
IHJlZG8oKTsKKyAgICAKKyAgICBpZiAobV91bmRvTWFuYWdlcikKKyAgICAgICAgbV91bmRvTWFu
YWdlci0+cmVnaXN0ZXJVbmRvU3RlcCh0aGlzKTsKK30KKworYm9vbCBET01UcmFuc2FjdGlvbjo6
aXNSZWNvcmRpbmdBdXRvbWF0aWNUcmFuc2FjdGlvbihOb2RlKiBub2RlKQoreworICAgIGlmICgh
c19jYXB0dXJpbmdET01UcmFuc2FjdGlvbikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIE5v
ZGUqIGhvc3QgPSBzX2NhcHR1cmluZ0RPTVRyYW5zYWN0aW9uLT5tX3VuZG9NYW5hZ2VyLT51bmRv
U2NvcGVIb3N0KCk7CisgICAgaWYgKCFob3N0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
cmV0dXJuIGhvc3QtPmNvbnRhaW5zKG5vZGUpOworfQorCit2b2lkIERPTVRyYW5zYWN0aW9uOjph
ZGRET01UcmFuc2FjdGlvblN0ZXAoUGFzc1JlZlB0cjxET01UcmFuc2FjdGlvblN0ZXA+IGNoYW5n
ZSkKK3sKKyAgICBBU1NFUlQoc19jYXB0dXJpbmdET01UcmFuc2FjdGlvbik7CisgICAgc19jYXB0
dXJpbmdET01UcmFuc2FjdGlvbi0+bV9jaGFuZ2VzLT5hcHBlbmQoY2hhbmdlKTsKK30KKworfQor
CisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRE9NVHJhbnNhY3Rpb24uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RPTVRyYW5zYWN0aW9uLmgJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RPTVRyYW5zYWN0aW9uLmgJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIERPTVRyYW5zYWN0aW9uX2gKKyNkZWZp
bmUgRE9NVHJhbnNhY3Rpb25faAorCisjaWYgRU5BQkxFKFVORE9fTUFOQUdFUikKKworI2luY2x1
ZGUgIkRPTVRyYW5zYWN0aW9uU3RlcC5oIgorI2luY2x1ZGUgIlVuZG9TdGVwLmgiCisjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBOb2RlOworY2xhc3MgVW5kb01hbmFnZXI7CisKK2NsYXNzIERPTVRy
YW5zYWN0aW9uIDogcHVibGljIFVuZG9TdGVwIHsKK3B1YmxpYzoKKyAgICBET01UcmFuc2FjdGlv
bigpOworICAgIHZpcnR1YWwgfkRPTVRyYW5zYWN0aW9uKCkgeyB9CisgICAgCisgICAgdm9pZCBh
cHBseSgpOworICAgIHZvaWQgdW5hcHBseSgpIE9WRVJSSURFOworICAgIHZvaWQgcmVhcHBseSgp
IE9WRVJSSURFOworICAgIAorICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlKCkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBleGVjdXRlQXV0b21hdGljKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bmRv
KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWRvKCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBp
c0F1dG9tYXRpYygpIGNvbnN0ID0gMDsKKyAgICAKKyAgICBFZGl0QWN0aW9uIGVkaXRpbmdBY3Rp
b24oKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBFZGl0QWN0aW9uVW5zcGVjaWZpZWQ7IH0KKyAg
ICBib29sIGlzRE9NVHJhbnNhY3Rpb24oKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9
CisgICAgCisgICAgVW5kb01hbmFnZXIqIHVuZG9NYW5hZ2VyKCkgY29uc3QgeyByZXR1cm4gbV91
bmRvTWFuYWdlcjsgfQorICAgIHZvaWQgc2V0VW5kb01hbmFnZXIoVW5kb01hbmFnZXIqIHVuZG9N
YW5hZ2VyKSB7IG1fdW5kb01hbmFnZXIgPSB1bmRvTWFuYWdlcjsgfQorICAgIAorICAgIHN0YXRp
YyBib29sIGlzUmVjb3JkaW5nQXV0b21hdGljVHJhbnNhY3Rpb24oTm9kZSopOworICAgIHN0YXRp
YyB2b2lkIGFkZERPTVRyYW5zYWN0aW9uU3RlcChQYXNzUmVmUHRyPERPTVRyYW5zYWN0aW9uU3Rl
cD4pOworCitwcml2YXRlOgorICAgIFVuZG9NYW5hZ2VyKiBtX3VuZG9NYW5hZ2VyOworICAgIE93
blB0cjxWZWN0b3I8UmVmUHRyPERPTVRyYW5zYWN0aW9uU3RlcD4gPiA+IG1fY2hhbmdlczsKKyAg
ICAKKyAgICBzdGF0aWMgRE9NVHJhbnNhY3Rpb24qIHNfY2FwdHVyaW5nRE9NVHJhbnNhY3Rpb247
Cit9OworCit9CisKKyNlbmRpZgorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRE9NVHJhbnNhY3Rpb25TdGVwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0RPTVRyYW5zYWN0aW9uU3RlcC5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0RPTVRyYW5zYWN0aW9uU3RlcC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMTczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRPTVRyYW5zYWN0aW9uU3Rl
cC5oIgorCisjaWYgRU5BQkxFKFVORE9fTUFOQUdFUikKKworI2luY2x1ZGUgIkNoYXJhY3RlckRh
dGEuaCIKKyNpbmNsdWRlICJDb250YWluZXJOb2RlLmgiCisjaW5jbHVkZSAiRWxlbWVudC5oIgor
I2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJOb2RlLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworTm9kZUluc2VydGluZ0RPTVRyYW5zYWN0aW9uU3RlcDo6Tm9kZUluc2Vy
dGluZ0RPTVRyYW5zYWN0aW9uU3RlcChOb2RlKiBwYXJlbnQsIE5vZGUqIGNoaWxkKQorICAgIDog
bV9wYXJlbnQocGFyZW50KQorICAgICwgbV9yZWZDaGlsZChjaGlsZC0+bmV4dFNpYmxpbmcoKSkK
KyAgICAsIG1fY2hpbGQoY2hpbGQpCit7Cit9CisKK1Bhc3NSZWZQdHI8Tm9kZUluc2VydGluZ0RP
TVRyYW5zYWN0aW9uU3RlcD4gTm9kZUluc2VydGluZ0RPTVRyYW5zYWN0aW9uU3RlcDo6Y3JlYXRl
KE5vZGUqIHBhcmVudCwgTm9kZSogY2hpbGQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBO
b2RlSW5zZXJ0aW5nRE9NVHJhbnNhY3Rpb25TdGVwKHBhcmVudCwgY2hpbGQpKTsKK30KKwordm9p
ZCBOb2RlSW5zZXJ0aW5nRE9NVHJhbnNhY3Rpb25TdGVwOjp1bmFwcGx5KCkKK3sKKyAgICBpZiAo
bV9jaGlsZC5nZXQoKSAmJiBtX2NoaWxkLT5wYXJlbnROb2RlKCkgIT0gbV9wYXJlbnQuZ2V0KCkp
CisgICAgICAgIHJldHVybjsKKyAgICBpZiAobV9yZWZDaGlsZC5nZXQoKSAmJiBtX3JlZkNoaWxk
LT5wYXJlbnROb2RlKCkgIT0gbV9wYXJlbnQuZ2V0KCkpCisgICAgICAgIHJldHVybjsKKyAgICBp
ZiAobV9yZWZDaGlsZC5nZXQoKSAmJiBtX3JlZkNoaWxkLT5wcmV2aW91c1NpYmxpbmcoKSAhPSBt
X2NoaWxkLmdldCgpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgRXhjZXB0aW9uQ29kZSBl
YzsKKyAgICBtX3BhcmVudC0+cmVtb3ZlQ2hpbGQobV9jaGlsZC5nZXQoKSwgZWMpOworfQorCit2
b2lkIE5vZGVJbnNlcnRpbmdET01UcmFuc2FjdGlvblN0ZXA6OnJlYXBwbHkoKQoreworICAgIGlm
IChtX2NoaWxkLmdldCgpICYmIG1fY2hpbGQtPnBhcmVudE5vZGUoKSkKKyAgICAgICAgcmV0dXJu
OworICAgIGlmIChtX3JlZkNoaWxkLmdldCgpICYmIG1fcmVmQ2hpbGQtPnBhcmVudE5vZGUoKSAh
PSBtX3BhcmVudC5nZXQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIEV4Y2VwdGlvbkNv
ZGUgZWM7CisgICAgbV9wYXJlbnQtPmluc2VydEJlZm9yZShtX2NoaWxkLCBtX3JlZkNoaWxkLmdl
dCgpLCBlYyk7Cit9CisKK05vZGVSZW1vdmluZ0RPTVRyYW5zYWN0aW9uU3RlcDo6Tm9kZVJlbW92
aW5nRE9NVHJhbnNhY3Rpb25TdGVwKE5vZGUqIHBhcmVudCwgTm9kZSogY2hpbGQpCisgICAgOiBt
X3BhcmVudChwYXJlbnQpCisgICAgLCBtX3JlZkNoaWxkKGNoaWxkLT5uZXh0U2libGluZygpKQor
ICAgICwgbV9jaGlsZChjaGlsZCkKK3sKK30KKworUGFzc1JlZlB0cjxOb2RlUmVtb3ZpbmdET01U
cmFuc2FjdGlvblN0ZXA+IE5vZGVSZW1vdmluZ0RPTVRyYW5zYWN0aW9uU3RlcDo6Y3JlYXRlKE5v
ZGUqIHBhcmVudCwgTm9kZSogY2hpbGQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBOb2Rl
UmVtb3ZpbmdET01UcmFuc2FjdGlvblN0ZXAocGFyZW50LCBjaGlsZCkpOworfQorCit2b2lkIE5v
ZGVSZW1vdmluZ0RPTVRyYW5zYWN0aW9uU3RlcDo6dW5hcHBseSgpCit7CisgICAgaWYgKG1fY2hp
bGQuZ2V0KCkgJiYgbV9jaGlsZC0+cGFyZW50Tm9kZSgpKQorICAgICAgICByZXR1cm47CisgICAg
aWYgKG1fcmVmQ2hpbGQuZ2V0KCkgJiYgbV9yZWZDaGlsZC0+cGFyZW50Tm9kZSgpICE9IG1fcGFy
ZW50LmdldCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBFeGNlcHRpb25Db2RlIGVjOworICAg
IG1fcGFyZW50LT5pbnNlcnRCZWZvcmUobV9jaGlsZCwgbV9yZWZDaGlsZC5nZXQoKSwgZWMpOwor
fQorCit2b2lkIE5vZGVSZW1vdmluZ0RPTVRyYW5zYWN0aW9uU3RlcDo6cmVhcHBseSgpCit7Cisg
ICAgaWYgKG1fY2hpbGQuZ2V0KCkgJiYgbV9jaGlsZC0+cGFyZW50Tm9kZSgpICE9IG1fcGFyZW50
LmdldCgpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKG1fcmVmQ2hpbGQuZ2V0KCkgJiYgbV9y
ZWZDaGlsZC0+cGFyZW50Tm9kZSgpICE9IG1fcGFyZW50LmdldCgpKQorICAgICAgICByZXR1cm47
CisgICAgaWYgKG1fcmVmQ2hpbGQuZ2V0KCkgJiYgbV9yZWZDaGlsZC0+cHJldmlvdXNTaWJsaW5n
KCkgIT0gbV9jaGlsZC5nZXQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIEV4Y2VwdGlv
bkNvZGUgZWM7CisgICAgbV9wYXJlbnQtPnJlbW92ZUNoaWxkKG1fY2hpbGQuZ2V0KCksIGVjKTsK
K30KKworRGF0YVJlcGxhY2luZ0RPTVRyYW5zYWN0aW9uU3RlcDo6RGF0YVJlcGxhY2luZ0RPTVRy
YW5zYWN0aW9uU3RlcChDaGFyYWN0ZXJEYXRhKiBub2RlLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2ln
bmVkIGNvdW50LCBjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWREYXRh
KQorICAgIDogbV9ub2RlKG5vZGUpCisgICAgLCBtX29mZnNldChvZmZzZXQpCisgICAgLCBtX2Nv
dW50KGNvdW50KQorICAgICwgbV9kYXRhKGRhdGEpCisgICAgLCBtX3JlcGxhY2VkRGF0YShyZXBs
YWNlZERhdGEpCit7Cit9CisKK1Bhc3NSZWZQdHI8RGF0YVJlcGxhY2luZ0RPTVRyYW5zYWN0aW9u
U3RlcD4gRGF0YVJlcGxhY2luZ0RPTVRyYW5zYWN0aW9uU3RlcDo6Y3JlYXRlKENoYXJhY3RlckRh
dGEqIG5vZGUsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgY291bnQsIGNvbnN0IFN0cmluZyYg
ZGF0YSwgY29uc3QgU3RyaW5nJiByZXBsYWNlZERhdGEpCit7CisgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBEYXRhUmVwbGFjaW5nRE9NVHJhbnNhY3Rpb25TdGVwKG5vZGUsIG9mZnNldCwgY291bnQs
IGRhdGEsIHJlcGxhY2VkRGF0YSkpOworfQorCit2b2lkIERhdGFSZXBsYWNpbmdET01UcmFuc2Fj
dGlvblN0ZXA6OnVuYXBwbHkoKQoreworICAgIGlmIChtX25vZGUtPmxlbmd0aCgpIDwgbV9vZmZz
ZXQpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBFeGNlcHRpb25Db2RlIGVjOworICAgIG1f
bm9kZS0+cmVwbGFjZURhdGEobV9vZmZzZXQsIG1fZGF0YS5sZW5ndGgoKSwgbV9yZXBsYWNlZERh
dGEsIGVjKTsKK30KKwordm9pZCBEYXRhUmVwbGFjaW5nRE9NVHJhbnNhY3Rpb25TdGVwOjpyZWFw
cGx5KCkKK3sKKyAgICBpZiAobV9ub2RlLT5sZW5ndGgoKSA8IG1fb2Zmc2V0KQorICAgICAgICBy
ZXR1cm47CisgICAgCisgICAgRXhjZXB0aW9uQ29kZSBlYzsKKyAgICBtX25vZGUtPnJlcGxhY2VE
YXRhKG1fb2Zmc2V0LCBtX2NvdW50LCBtX2RhdGEsIGVjKTsKK30KKworQXR0ckNoYW5naW5nRE9N
VHJhbnNhY3Rpb25TdGVwOjpBdHRyQ2hhbmdpbmdET01UcmFuc2FjdGlvblN0ZXAoRWxlbWVudCog
ZWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBv
bGRWYWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSkKKyAgICA6IG1fZWxlbWVudChl
bGVtZW50KQorICAgICwgbV9uYW1lKG5hbWUpCisgICAgLCBtX29sZFZhbHVlKG9sZFZhbHVlKQor
ICAgICwgbV9uZXdWYWx1ZShuZXdWYWx1ZSkKK3sKK30KKworUGFzc1JlZlB0cjxBdHRyQ2hhbmdp
bmdET01UcmFuc2FjdGlvblN0ZXA+IEF0dHJDaGFuZ2luZ0RPTVRyYW5zYWN0aW9uU3RlcDo6Y3Jl
YXRlKEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0
b21pY1N0cmluZyYgb2xkVmFsdWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFsdWUpCit7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBdHRyQ2hhbmdpbmdET01UcmFuc2FjdGlvblN0ZXAoZWxl
bWVudCwgbmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKSk7Cit9CisKK3ZvaWQgQXR0ckNoYW5naW5n
RE9NVHJhbnNhY3Rpb25TdGVwOjp1bmFwcGx5KCkKK3sKKyAgICBtX2VsZW1lbnQtPnNldEF0dHJp
YnV0ZShtX25hbWUsIG1fb2xkVmFsdWUpOworfQorCit2b2lkIEF0dHJDaGFuZ2luZ0RPTVRyYW5z
YWN0aW9uU3RlcDo6cmVhcHBseSgpCit7CisgICAgbV9lbGVtZW50LT5zZXRBdHRyaWJ1dGUobV9u
YW1lLCBtX25ld1ZhbHVlKTsKK30KKworfQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRE9NVHJhbnNhY3Rpb25TdGVwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZWRpdGluZy9ET01UcmFuc2FjdGlvblN0ZXAuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRE9NVHJhbnNhY3Rpb25TdGVwLmgJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMTIwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBET01UcmFuc2FjdGlvblN0ZXBfaAorI2RlZmluZSBET01UcmFuc2Fj
dGlvblN0ZXBfaAorCisjaWYgRU5BQkxFKFVORE9fTUFOQUdFUikKKworI2luY2x1ZGUgIlBsYXRm
b3JtU3RyaW5nLmgiCisjaW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5oIgorI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgQ2hhcmFjdGVyRGF0YTsKK2NsYXNzIEVsZW1lbnQ7CitjbGFzcyBO
b2RlOworCitjbGFzcyBET01UcmFuc2FjdGlvblN0ZXAgOiBwdWJsaWMgUmVmQ291bnRlZDxET01U
cmFuc2FjdGlvblN0ZXA+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5ET01UcmFuc2FjdGlvblN0
ZXAoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCB1bmFwcGx5KCkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCByZWFwcGx5KCkgPSAwOworfTsKKworY2xhc3MgTm9kZUluc2VydGluZ0RPTVRyYW5zYWN0
aW9uU3RlcCA6IHB1YmxpYyBET01UcmFuc2FjdGlvblN0ZXAgeworcHVibGljOgorICAgIHN0YXRp
YyBQYXNzUmVmUHRyPE5vZGVJbnNlcnRpbmdET01UcmFuc2FjdGlvblN0ZXA+IGNyZWF0ZShOb2Rl
KiBwYXJlbnQsIE5vZGUqIGNoaWxkKTsKKyAgICB2b2lkIHVuYXBwbHkoKSBPVkVSUklERTsKKyAg
ICB2b2lkIHJlYXBwbHkoKSBPVkVSUklERTsKKworcHJpdmF0ZToKKyAgICBOb2RlSW5zZXJ0aW5n
RE9NVHJhbnNhY3Rpb25TdGVwKE5vZGUqIHBhcmVudCwgTm9kZSogY2hpbGQpOworICAgIAorICAg
IFJlZlB0cjxOb2RlPiBtX3BhcmVudDsKKyAgICBSZWZQdHI8Tm9kZT4gbV9yZWZDaGlsZDsKKyAg
ICBSZWZQdHI8Tm9kZT4gbV9jaGlsZDsKK307CisKK2NsYXNzIE5vZGVSZW1vdmluZ0RPTVRyYW5z
YWN0aW9uU3RlcCA6IHB1YmxpYyBET01UcmFuc2FjdGlvblN0ZXAgeworcHVibGljOgorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPE5vZGVSZW1vdmluZ0RPTVRyYW5zYWN0aW9uU3RlcD4gY3JlYXRlKE5v
ZGUqIHBhcmVudCwgTm9kZSogY2hpbGQpOworICAgIHZvaWQgdW5hcHBseSgpIE9WRVJSSURFOwor
ICAgIHZvaWQgcmVhcHBseSgpIE9WRVJSSURFOworICAgIAorcHJpdmF0ZToKKyAgICBOb2RlUmVt
b3ZpbmdET01UcmFuc2FjdGlvblN0ZXAoTm9kZSogcGFyZW50LCBOb2RlKiBjaGlsZCk7CisgICAg
CisgICAgUmVmUHRyPE5vZGU+IG1fcGFyZW50OworICAgIFJlZlB0cjxOb2RlPiBtX3JlZkNoaWxk
OworICAgIFJlZlB0cjxOb2RlPiBtX2NoaWxkOworfTsKKworY2xhc3MgRGF0YVJlcGxhY2luZ0RP
TVRyYW5zYWN0aW9uU3RlcCA6IHB1YmxpYyBET01UcmFuc2FjdGlvblN0ZXAgeworcHVibGljOgor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPERhdGFSZXBsYWNpbmdET01UcmFuc2FjdGlvblN0ZXA+IGNy
ZWF0ZShDaGFyYWN0ZXJEYXRhKiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBjb3VudCwgY29u
c3QgU3RyaW5nJiBkYXRhLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkRGF0YSk7CisgICAgdm9pZCB1
bmFwcGx5KCkgT1ZFUlJJREU7CisgICAgdm9pZCByZWFwcGx5KCkgT1ZFUlJJREU7CisgICAgCitw
cml2YXRlOgorICAgIERhdGFSZXBsYWNpbmdET01UcmFuc2FjdGlvblN0ZXAoQ2hhcmFjdGVyRGF0
YSosIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgY291bnQsIGNvbnN0IFN0cmluZyYgZGF0YSwg
Y29uc3QgU3RyaW5nJiByZXBsYWNlZERhdGEpOworICAgIAorICAgIFJlZlB0cjxDaGFyYWN0ZXJE
YXRhPiBtX25vZGU7CisgICAgdW5zaWduZWQgbV9vZmZzZXQ7CisgICAgdW5zaWduZWQgbV9jb3Vu
dDsKKyAgICBTdHJpbmcgbV9kYXRhOworICAgIFN0cmluZyBtX3JlcGxhY2VkRGF0YTsKK307CisK
K2NsYXNzIEF0dHJDaGFuZ2luZ0RPTVRyYW5zYWN0aW9uU3RlcCA6IHB1YmxpYyBET01UcmFuc2Fj
dGlvblN0ZXAgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEF0dHJDaGFuZ2luZ0RP
TVRyYW5zYWN0aW9uU3RlcD4gY3JlYXRlKEVsZW1lbnQqLCBjb25zdCBRdWFsaWZpZWROYW1lJiwg
Y29uc3QgQXRvbWljU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1
ZSk7CisgICAgdm9pZCB1bmFwcGx5KCkgT1ZFUlJJREU7CisgICAgdm9pZCByZWFwcGx5KCkgT1ZF
UlJJREU7CisgICAgCitwcml2YXRlOgorICAgIEF0dHJDaGFuZ2luZ0RPTVRyYW5zYWN0aW9uU3Rl
cChFbGVtZW50KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYgb2xk
VmFsdWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFsdWUpOworICAgIAorICAgIFJlZlB0cjxF
bGVtZW50PiBtX2VsZW1lbnQ7CisgICAgUXVhbGlmaWVkTmFtZSBtX25hbWU7CisgICAgQXRvbWlj
U3RyaW5nIG1fb2xkVmFsdWU7CisgICAgQXRvbWljU3RyaW5nIG1fbmV3VmFsdWU7Cit9OworCit9
CisKKyNlbmRpZgorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAJKHJl
dmlzaW9uIDEyMzE3MykKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtODYsNiArODYsNyBAQAogI2luY2x1ZGUgIlRleHRFdmVudC5oIgogI2lu
Y2x1ZGUgIlRleHRJdGVyYXRvci5oIgogI2luY2x1ZGUgIlR5cGluZ0NvbW1hbmQuaCIKKyNpbmNs
dWRlICJVbmRvTWFuYWdlci5oIgogI2luY2x1ZGUgIlVzZXJUeXBpbmdHZXN0dXJlSW5kaWNhdG9y
LmgiCiAjaW5jbHVkZSAiaHRtbGVkaXRpbmcuaCIKICNpbmNsdWRlICJtYXJrdXAuaCIKQEAgLTgw
Miw4ICs4MDMsMTIgQEAgdm9pZCBFZGl0b3I6OmFwcGxpZWRFZGl0aW5nKFBhc3NSZWZQdHI8Qwog
ICAgICAgICAvLyBPbmx5IHJlZ2lzdGVyIGEgbmV3IHVuZG8gY29tbWFuZCBpZiB0aGUgY29tbWFu
ZCBwYXNzZWQgaW4gaXMKICAgICAgICAgLy8gZGlmZmVyZW50IGZyb20gdGhlIGxhc3QgY29tbWFu
ZAogICAgICAgICBtX2xhc3RFZGl0Q29tbWFuZCA9IGNtZDsKKyNpZiAhRU5BQkxFKFVORE9fTUFO
QUdFUikKICAgICAgICAgaWYgKGNsaWVudCgpKQogICAgICAgICAgICAgY2xpZW50KCktPnJlZ2lz
dGVyVW5kb1N0ZXAobV9sYXN0RWRpdENvbW1hbmQtPmVuc3VyZUNvbXBvc2l0aW9uKCkpOworI2Vs
c2UKKyAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dW5kb01hbmFnZXIoKS0+cmVnaXN0ZXJV
bmRvU3RlcChtX2xhc3RFZGl0Q29tbWFuZC0+ZW5zdXJlQ29tcG9zaXRpb24oKSk7CisjZW5kaWYK
ICAgICB9CiAKICAgICByZXNwb25kVG9DaGFuZ2VkQ29udGVudHMobmV3U2VsZWN0aW9uKTsKQEAg
LTgyMCw4ICs4MjUsMTIgQEAgdm9pZCBFZGl0b3I6OnVuYXBwbGllZEVkaXRpbmcoUGFzc1JlZlB0
cgogICAgIG1fYWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci0+cmVzcG9uZFRvVW5hcHBsaWVkRWRp
dGluZyhjbWQuZ2V0KCkpOwogICAgIAogICAgIG1fbGFzdEVkaXRDb21tYW5kID0gMDsKKyNpZiAh
RU5BQkxFKFVORE9fTUFOQUdFUikKICAgICBpZiAoY2xpZW50KCkpCiAgICAgICAgIGNsaWVudCgp
LT5yZWdpc3RlclJlZG9TdGVwKGNtZCk7CisjZWxzZQorICAgIG1fZnJhbWUtPmRvY3VtZW50KCkt
PnVuZG9NYW5hZ2VyKCktPnJlZ2lzdGVyUmVkb1N0ZXAoY21kKTsKKyNlbmRpZiAgCiAgICAgcmVz
cG9uZFRvQ2hhbmdlZENvbnRlbnRzKG5ld1NlbGVjdGlvbik7CiB9CiAKQEAgLTgzNSw4ICs4NDQs
MTIgQEAgdm9pZCBFZGl0b3I6OnJlYXBwbGllZEVkaXRpbmcoUGFzc1JlZlB0cgogICAgIGNoYW5n
ZVNlbGVjdGlvbkFmdGVyQ29tbWFuZChuZXdTZWxlY3Rpb24sIEZyYW1lU2VsZWN0aW9uOjpDbG9z
ZVR5cGluZyB8IEZyYW1lU2VsZWN0aW9uOjpDbGVhclR5cGluZ1N0eWxlKTsKICAgICAKICAgICBt
X2xhc3RFZGl0Q29tbWFuZCA9IDA7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgaWYg
KGNsaWVudCgpKQogICAgICAgICBjbGllbnQoKS0+cmVnaXN0ZXJVbmRvU3RlcChjbWQpOworI2Vs
c2UKKyAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT51bmRvTWFuYWdlcigpLT5yZWdpc3RlclVuZG9T
dGVwKGNtZCk7CisjZW5kaWYKICAgICByZXNwb25kVG9DaGFuZ2VkQ29udGVudHMobmV3U2VsZWN0
aW9uKTsKIH0KIApAQCAtMTI0MiwyNCArMTI1NSw0MCBAQCB2b2lkIEVkaXRvcjo6Y2xlYXJVbmRv
UmVkb09wZXJhdGlvbnMoKQogCiBib29sIEVkaXRvcjo6Y2FuVW5kbygpCiB7CisjaWYgIUVOQUJM
RShVTkRPX01BTkFHRVIpCiAgICAgcmV0dXJuIGNsaWVudCgpICYmIGNsaWVudCgpLT5jYW5VbmRv
KCk7CisjZWxzZQorICAgIHJldHVybiBtX2ZyYW1lLT5kb2N1bWVudCgpLT51bmRvTWFuYWdlcigp
LT5jYW5VbmRvKCk7CisjZW5kaWYKIH0KIAogdm9pZCBFZGl0b3I6OnVuZG8oKQogeworI2lmICFF
TkFCTEUoVU5ET19NQU5BR0VSKQogICAgIGlmIChjbGllbnQoKSkKICAgICAgICAgY2xpZW50KCkt
PnVuZG8oKTsKKyNlbHNlCisgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dW5kb01hbmFnZXIoKS0+
dW5kbygpOworI2VuZGlmCiB9CiAKIGJvb2wgRWRpdG9yOjpjYW5SZWRvKCkKIHsKKyNpZiAhRU5B
QkxFKFVORE9fTUFOQUdFUikKICAgICByZXR1cm4gY2xpZW50KCkgJiYgY2xpZW50KCktPmNhblJl
ZG8oKTsKKyNlbHNlCisgICAgcmV0dXJuIG1fZnJhbWUtPmRvY3VtZW50KCktPnVuZG9NYW5hZ2Vy
KCktPmNhblJlZG8oKTsKKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvcjo6cmVkbygpCiB7CisjaWYg
IUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgaWYgKGNsaWVudCgpKQogICAgICAgICBjbGllbnQo
KS0+cmVkbygpOworI2Vsc2UKKyAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT51bmRvTWFuYWdlcigp
LT5yZWRvKCk7CisjZW5kaWYKIH0KIAogdm9pZCBFZGl0b3I6OmRpZEJlZ2luRWRpdGluZygpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1VuZG9NYW5hZ2VyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1VuZG9NYW5hZ2VyLmNwcAkocmV2aXNpb24gMTIzMTcz
KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9VbmRvTWFuYWdlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMzLDcgKzMzLDcgQEAKIAogI2lmIEVOQUJMRShVTkRPX01BTkFHRVIpCiAKLSNpbmNs
dWRlICJOb2RlLmgiCisjaW5jbHVkZSAiRE9NVHJhbnNhY3Rpb24uaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkBAIC00NCw2ICs0NCw3IEBAIFBhc3NSZWZQdHI8VW5kb01hbmFnZXI+IFVuZG9N
YW5hZ2VyOjpjcmUKIAogVW5kb01hbmFnZXI6OlVuZG9NYW5hZ2VyKE5vZGUqIGhvc3QpCiAgICAg
OiBtX3VuZG9TY29wZUhvc3QoaG9zdCkKKyAgICAsIG1faXNJblByb2dyZXNzKGZhbHNlKQogewog
fQogCkBAIC01MiwyMCArNTMsMTEyIEBAIHZvaWQgVW5kb01hbmFnZXI6OnVuZG9TY29wZUhvc3RE
ZXN0cm95ZWQKICAgICBtX3VuZG9TY29wZUhvc3QgPSAwOwogfQogCit2b2lkIFVuZG9NYW5hZ2Vy
Ojp0cmFuc2FjdChQYXNzUmVmUHRyPERPTVRyYW5zYWN0aW9uPiB0cmFuc2FjdGlvbiwgYm9vbCBt
ZXJnZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKG1faXNJblByb2dyZXNzIHx8ICFt
X3VuZG9TY29wZUhvc3QpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgY2xlYXJSZWRvKEFTU0VSVF9OT19FWENFUFRJT04pOwor
ICAgIHRyYW5zYWN0aW9uLT5zZXRVbmRvTWFuYWdlcih0aGlzKTsKKyAgICAKKyAgICBtX2lzSW5Q
cm9ncmVzcyA9IHRydWU7CisgICAgdHJhbnNhY3Rpb24tPmFwcGx5KCk7CisgICAgbV9pc0luUHJv
Z3Jlc3MgPSBmYWxzZTsKKyAgICAKKyAgICBpZiAoIW1lcmdlIHx8IG1fdW5kb1N0YWNrLmlzRW1w
dHkoKSkKKyAgICAgICAgbV91bmRvU3RhY2suYXBwZW5kKGFkb3B0UHRyKG5ldyBVbmRvTWFuYWdl
ckVudHJ5KSk7CisgICAgbV91bmRvU3RhY2subGFzdCgpLT5hcHBlbmQodHJhbnNhY3Rpb24pOwor
fQorCit2b2lkIFVuZG9NYW5hZ2VyOjp1bmRvKEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlm
IChtX2lzSW5Qcm9ncmVzcyB8fCAhbV91bmRvU2NvcGVIb3N0KSB7CisgICAgICAgIGVjID0gSU5W
QUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChtX3VuZG9T
dGFjay5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX2luUHJvZ3Jlc3NFbnRyeSA9
IGFkb3B0UHRyKG5ldyBVbmRvTWFuYWdlckVudHJ5KTsKKyAgICAKKyAgICBtX2lzSW5Qcm9ncmVz
cyA9IHRydWU7CisgICAgY29uc3QgVW5kb01hbmFnZXJFbnRyeSYgZW50cnkgPSAqKG1fdW5kb1N0
YWNrLmxhc3QoKS5nZXQoKSk7CisgICAgZm9yIChzaXplX3QgaSA9IGVudHJ5LnNpemUoKTsgaSA+
IDA7IC0taSkKKyAgICAgICAgZW50cnlbaSAtIDFdLT51bmFwcGx5KCk7CisgICAgbV9pc0luUHJv
Z3Jlc3MgPSBmYWxzZTsKKyAgICAKKyAgICBtX3JlZG9TdGFjay5hcHBlbmQobV9pblByb2dyZXNz
RW50cnkucmVsZWFzZSgpKTsKKyAgICBtX3VuZG9TdGFjay5yZW1vdmVMYXN0KCk7Cit9CisKK3Zv
aWQgVW5kb01hbmFnZXI6OnJlZG8oRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKG1faXNJ
blByb2dyZXNzIHx8ICFtX3VuZG9TY29wZUhvc3QpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX0FD
Q0VTU19FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKG1fcmVkb1N0YWNrLmlz
RW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworICAgIG1faW5Qcm9ncmVzc0VudHJ5ID0gYWRvcHRQ
dHIobmV3IFVuZG9NYW5hZ2VyRW50cnkpOworICAgIAorICAgIG1faXNJblByb2dyZXNzID0gdHJ1
ZTsKKyAgICBjb25zdCBVbmRvTWFuYWdlckVudHJ5JiBlbnRyeSA9ICoobV9yZWRvU3RhY2subGFz
dCgpLmdldCgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gZW50cnkuc2l6ZSgpOyBpID4gMDsgLS1p
KQorICAgICAgICBlbnRyeVtpIC0gMV0tPnJlYXBwbHkoKTsKKyAgICBtX2lzSW5Qcm9ncmVzcyA9
IGZhbHNlOworICAgIAorICAgIG1fdW5kb1N0YWNrLmFwcGVuZChtX2luUHJvZ3Jlc3NFbnRyeS5y
ZWxlYXNlKCkpOworICAgIG1fcmVkb1N0YWNrLnJlbW92ZUxhc3QoKTsKK30KKwogdm9pZCBVbmRv
TWFuYWdlcjo6dW5kbygpCiB7CisgICAgdW5kbyhBU1NFUlRfTk9fRVhDRVBUSU9OKTsKIH0KIAog
dm9pZCBVbmRvTWFuYWdlcjo6cmVkbygpCiB7CisgICAgcmVkbyhBU1NFUlRfTk9fRVhDRVBUSU9O
KTsKK30KKwordm9pZCBVbmRvTWFuYWdlcjo6cmVnaXN0ZXJVbmRvU3RlcChQYXNzUmVmUHRyPFVu
ZG9TdGVwPiBzdGVwKQoreworICAgIGlmICghbV9pc0luUHJvZ3Jlc3MpIHsKKyAgICAgICAgT3du
UHRyPFVuZG9NYW5hZ2VyRW50cnk+IGVudHJ5ID0gYWRvcHRQdHIobmV3IFVuZG9NYW5hZ2VyRW50
cnkpOworICAgICAgICBlbnRyeS0+YXBwZW5kKHN0ZXApOworICAgICAgICBtX3VuZG9TdGFjay5h
cHBlbmQoZW50cnkucmVsZWFzZSgpKTsKKyAgICAgICAgCisgICAgICAgIGNsZWFyUmVkbyhBU1NF
UlRfTk9fRVhDRVBUSU9OKTsKKyAgICB9IGVsc2UKKyAgICAgICAgbV9pblByb2dyZXNzRW50cnkt
PmFwcGVuZChzdGVwKTsKK30KKwordm9pZCBVbmRvTWFuYWdlcjo6cmVnaXN0ZXJSZWRvU3RlcChQ
YXNzUmVmUHRyPFVuZG9TdGVwPiBzdGVwKQoreworICAgIGlmICghbV9pc0luUHJvZ3Jlc3MpIHsK
KyAgICAgICAgT3duUHRyPFVuZG9NYW5hZ2VyRW50cnk+IGVudHJ5ID0gYWRvcHRQdHIobmV3IFVu
ZG9NYW5hZ2VyRW50cnkpOworICAgICAgICBlbnRyeS0+YXBwZW5kKHN0ZXApOworICAgICAgICBt
X3JlZG9TdGFjay5hcHBlbmQoZW50cnkucmVsZWFzZSgpKTsKKyAgICB9IGVsc2UKKyAgICAgICAg
bV9pblByb2dyZXNzRW50cnktPmFwcGVuZChzdGVwKTsKIH0KIAotdm9pZCBVbmRvTWFuYWdlcjo6
Y2xlYXJVbmRvKCkKK3ZvaWQgVW5kb01hbmFnZXI6OmNsZWFyVW5kbyhFeGNlcHRpb25Db2RlJiBl
YykKIHsKKyAgICBpZiAobV9pc0luUHJvZ3Jlc3MgfHwgIW1fdW5kb1Njb3BlSG9zdCkgeworICAg
ICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICBtX3VuZG9TdGFjay5jbGVhcigpOwogfQogCi12b2lkIFVuZG9NYW5hZ2VyOjpjbGVhclJlZG8o
KQordm9pZCBVbmRvTWFuYWdlcjo6Y2xlYXJSZWRvKEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAg
IGlmIChtX2lzSW5Qcm9ncmVzcyB8fCAhbV91bmRvU2NvcGVIb3N0KSB7CisgICAgICAgIGVjID0g
SU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fcmVkb1N0
YWNrLmNsZWFyKCk7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVW5kb01h
bmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1VuZG9NYW5hZ2Vy
LmgJKHJldmlzaW9uIDEyMzE3MykKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVW5kb01hbmFn
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsMzIgKzMzLDY0IEBACiAKICNpZiBFTkFCTEUoVU5E
T19NQU5BR0VSKQogCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIkV4Y2Vw
dGlvbkNvZGVQbGFjZWhvbGRlci5oIgorI2luY2x1ZGUgIlVuZG9TdGVwLmgiCisjaW5jbHVkZSA8
d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAorY2xhc3MgRE9NVHJhbnNhY3Rpb247CiBjbGFzcyBOb2RlOwogCit0eXBlZGVmIFZlY3Rv
cjxSZWZQdHI8VW5kb1N0ZXA+ID4gVW5kb01hbmFnZXJFbnRyeTsKK3R5cGVkZWYgVmVjdG9yPE93
blB0cjxVbmRvTWFuYWdlckVudHJ5PiA+IFVuZG9NYW5hZ2VyU3RhY2s7CisKIGNsYXNzIFVuZG9N
YW5hZ2VyIDogcHVibGljIFJlZkNvdW50ZWQ8VW5kb01hbmFnZXI+IHsKIHB1YmxpYzoKICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxVbmRvTWFuYWdlcj4gY3JlYXRlKE5vZGUqIGhvc3QpOworICAgIE5v
ZGUqIHVuZG9TY29wZUhvc3QoKSBjb25zdCB7IHJldHVybiBtX3VuZG9TY29wZUhvc3Q7IH0KICAg
ICB2b2lkIHVuZG9TY29wZUhvc3REZXN0cm95ZWQoKTsKKyAgICAKKyAgICB2b2lkIHRyYW5zYWN0
KFBhc3NSZWZQdHI8RE9NVHJhbnNhY3Rpb24+LCBib29sLCBFeGNlcHRpb25Db2RlJik7CiAKKyAg
ICB2b2lkIHVuZG8oRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgcmVkbyhFeGNlcHRpb25Db2Rl
Jik7CiAgICAgdm9pZCB1bmRvKCk7CiAgICAgdm9pZCByZWRvKCk7CisgICAgCisgICAgaW5saW5l
IHVuc2lnbmVkIGxvbmcgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV91bmRvU3RhY2suc2l6ZSgp
ICsgbV9yZWRvU3RhY2suc2l6ZSgpOyB9IAorICAgIGlubGluZSB1bnNpZ25lZCBsb25nIHBvc2l0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9yZWRvU3RhY2suc2l6ZSgpOyB9CiAKLSAgICB2b2lkIGNs
ZWFyVW5kbygpOwotICAgIHZvaWQgY2xlYXJSZWRvKCk7CisgICAgdm9pZCBjbGVhclVuZG8oRXhj
ZXB0aW9uQ29kZSYpOworICAgIHZvaWQgY2xlYXJSZWRvKEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAK
KyAgICBpbmxpbmUgYm9vbCBjYW5VbmRvKCkgY29uc3QgeyByZXR1cm4gIW1fdW5kb1N0YWNrLmlz
RW1wdHkoKTsgfQorICAgIGlubGluZSBib29sIGNhblJlZG8oKSBjb25zdCB7IHJldHVybiAhbV9y
ZWRvU3RhY2suaXNFbXB0eSgpOyB9CisgICAgCisgICAgdm9pZCByZWdpc3RlclVuZG9TdGVwKFBh
c3NSZWZQdHI8VW5kb1N0ZXA+KTsKKyAgICB2b2lkIHJlZ2lzdGVyUmVkb1N0ZXAoUGFzc1JlZlB0
cjxVbmRvU3RlcD4pOworICAgIAorICAgIGlubGluZSBjb25zdCBVbmRvTWFuYWdlclN0YWNrJiB1
bmRvU3RhY2soKSBjb25zdCB7IHJldHVybiBtX3VuZG9TdGFjazsgfQorICAgIGlubGluZSBjb25z
dCBVbmRvTWFuYWdlclN0YWNrJiByZWRvU3RhY2soKSBjb25zdCB7IHJldHVybiBtX3JlZG9TdGFj
azsgfQogCiBwcml2YXRlOgogICAgIFVuZG9NYW5hZ2VyKE5vZGUqIGhvc3QpOwogICAgIE5vZGUq
IG1fdW5kb1Njb3BlSG9zdDsKLX07CiAgICAgCisgICAgVW5kb01hbmFnZXJTdGFjayBtX3VuZG9T
dGFjazsKKyAgICBVbmRvTWFuYWdlclN0YWNrIG1fcmVkb1N0YWNrOworICAgIGJvb2wgbV9pc0lu
UHJvZ3Jlc3M7CisgICAgT3duUHRyPFVuZG9NYW5hZ2VyRW50cnk+IG1faW5Qcm9ncmVzc0VudHJ5
OworfTsKKwogfQotICAgIAorCiAjZW5kaWYKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1VuZG9NYW5hZ2VyLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1VuZG9NYW5hZ2VyLmlkbAkocmV2aXNpb24gMTIzMTczKQorKysgU291cmNlL1dlYkNv
cmUvZWRpdGluZy9VbmRvTWFuYWdlci5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMxLDEzICszMSwy
NCBAQAogbW9kdWxlIGNvcmUgewogCiAgICAgaW50ZXJmYWNlIFsKLSAgICAgICAgQ29uZGl0aW9u
YWw9VU5ET19NQU5BR0VSCisgICAgICAgIENvbmRpdGlvbmFsPVVORE9fTUFOQUdFUiwKKyAgICAg
ICAgSlNDdXN0b21NYXJrRnVuY3Rpb24sCisgICAgICAgIFY4Q3VzdG9tSXNSZWFjaGFibGUKICAg
ICBdIFVuZG9NYW5hZ2VyIHsKLSAgICAgICAgdm9pZCB1bmRvKCk7Ci0gICAgICAgIHZvaWQgcmVk
bygpOworICAgICAgICBbQ3VzdG9tXSB2b2lkIHRyYW5zYWN0KGluIERpY3Rpb25hcnkgdHJhbnNh
Y3Rpb24sIGluIGJvb2xlYW4gbWVyZ2UpOwogCi0gICAgICAgIHZvaWQgY2xlYXJVbmRvKCk7Ci0g
ICAgICAgIHZvaWQgY2xlYXJSZWRvKCk7CisgICAgICAgIHZvaWQgdW5kbygpCisgICAgICAgICAg
ICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgdm9pZCByZWRvKCkKKyAgICAgICAgICAg
IHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICAKKyAgICAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5z
aWduZWQgbG9uZyBwb3NpdGlvbjsKKworICAgICAgICB2b2lkIGNsZWFyVW5kbygpCisgICAgICAg
ICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgdm9pZCBjbGVhclJlZG8oKQorICAg
ICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAgfTsKIAogfQpJbmRleDogU291cmNl
L1dlYkNvcmUvZWRpdGluZy9VbmRvU3RlcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVW5kb1N0ZXAuaAkocmV2aXNpb24gMTIzMTczKQorKysgU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9VbmRvU3RlcC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw5IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgdW5hcHBseSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVh
cHBseSgpID0gMDsKICAgICB2aXJ0dWFsIEVkaXRBY3Rpb24gZWRpdGluZ0FjdGlvbigpIGNvbnN0
ID0gMDsKKyNpZiBFTkFCTEUoVU5ET19NQU5BR0VSKQorICAgIHZpcnR1YWwgYm9vbCBpc0RPTVRy
YW5zYWN0aW9uKCkgY29uc3QgPSAwOworI2VuZGlmCiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50QmxhY2tCZXJyeS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0Vk
aXRvckNsaWVudEJsYWNrQmVycnkuY3BwCShyZXZpc2lvbiAxMjMxNzMpCisrKyBTb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50QmxhY2tCZXJyeS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI2MCw2ICsyNjAsNyBAQCB2b2lkIEVkaXRvckNsaWVudEJsYWNr
QmVycnk6OmRpZFNldFNlbGVjCiAKIHZvaWQgRWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6cmVnaXN0
ZXJVbmRvU3RlcChQYXNzUmVmUHRyPFVuZG9TdGVwPiBzdGVwKQogeworI2lmICFFTkFCTEUoVU5E
T19NQU5BR0VSKQogICAgIC8vIFJlbW92ZSB0aGUgb2xkZXN0IGl0ZW0gaWYgd2UndmUgcmVhY2hl
ZCB0aGUgbWF4aW11bSBjYXBhY2l0eSBmb3IgdGhlIHN0YWNrLgogICAgIGlmIChtX3VuZG9TdGFj
ay5zaXplKCkgPT0gbWF4aW11bVVuZG9TdGFja0RlcHRoKQogICAgICAgICBtX3VuZG9TdGFjay5y
ZW1vdmVGaXJzdCgpOwpAQCAtMjY4LDI3ICsyNjksNDQgQEAgdm9pZCBFZGl0b3JDbGllbnRCbGFj
a0JlcnJ5OjpyZWdpc3RlclVuZAogICAgICAgICBtX3JlZG9TdGFjay5jbGVhcigpOwogCiAgICAg
bV91bmRvU3RhY2suYXBwZW5kKHN0ZXApOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oc3RlcCk7
CisjZW5kaWYKIH0KIAogdm9pZCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpyZWdpc3RlclJlZG9T
dGVwKFBhc3NSZWZQdHI8VW5kb1N0ZXA+IHN0ZXApCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFH
RVIpCiAgICAgbV9yZWRvU3RhY2suYXBwZW5kKHN0ZXApOworI2Vsc2UKKyAgICBVTlVTRURfUEFS
QU0oc3RlcCk7CisjZW5kaWYKIH0KIAogdm9pZCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpjbGVh
clVuZG9SZWRvT3BlcmF0aW9ucygpCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAg
bV91bmRvU3RhY2suY2xlYXIoKTsKICAgICBtX3JlZG9TdGFjay5jbGVhcigpOworI2VuZGlmCiB9
CiAKIGJvb2wgRWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6Y2FuVW5kbygpIGNvbnN0CiB7CisjaWYg
IUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgcmV0dXJuICFtX3VuZG9TdGFjay5pc0VtcHR5KCk7
CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogfQogCiBib29sIEVkaXRvckNsaWVu
dEJsYWNrQmVycnk6OmNhblJlZG8oKSBjb25zdAogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VS
KQogICAgIHJldHVybiAhbV9yZWRvU3RhY2suaXNFbXB0eSgpOworI2Vsc2UKKyAgICByZXR1cm4g
ZmFsc2U7CisjZW5kaWYKIH0KIAogYm9vbCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpjYW5Db3B5
Q3V0KEZyYW1lKiwgYm9vbCBkZWZhdWx0VmFsdWUpIGNvbnN0CkBAIC0zMDMsNiArMzIxLDcgQEAg
Ym9vbCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpjYW5QYXN0ZShGcgogCiB2b2lkIEVkaXRvckNs
aWVudEJsYWNrQmVycnk6OnVuZG8oKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAg
IGlmIChjYW5VbmRvKCkpIHsKICAgICAgICAgRWRpdENvbW1hbmRTdGFjazo6aXRlcmF0b3IgYmFj
ayA9IC0tbV91bmRvU3RhY2suZW5kKCk7CiAgICAgICAgIFJlZlB0cjxVbmRvU3RlcD4gY29tbWFu
ZCgqYmFjayk7CkBAIC0zMTEsMTAgKzMzMCwxMiBAQCB2b2lkIEVkaXRvckNsaWVudEJsYWNrQmVy
cnk6OnVuZG8oKQogICAgICAgICAvLyBVbmFwcGx5IHdpbGwgY2FsbCB1cyBiYWNrIHRvIHB1c2gg
dGhpcyBjb21tYW5kIG9udG8gdGhlIHJlZG8gc3RhY2suCiAgICAgICAgIGNvbW1hbmQtPnVuYXBw
bHkoKTsKICAgICB9CisjZW5kaWYKIH0KIAogdm9pZCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5Ojpy
ZWRvKCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICBpZiAoY2FuUmVkbygpKSB7
CiAgICAgICAgIEVkaXRDb21tYW5kU3RhY2s6Oml0ZXJhdG9yIGJhY2sgPSAtLW1fcmVkb1N0YWNr
LmVuZCgpOwogICAgICAgICBSZWZQdHI8VW5kb1N0ZXA+IGNvbW1hbmQoKmJhY2spOwpAQCAtMzI3
LDYgKzM0OCw3IEBAIHZvaWQgRWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6cmVkbygpCiAgICAgICAg
IGNvbW1hbmQtPnJlYXBwbHkoKTsKICAgICAgICAgbV9pblJlZG8gPSBmYWxzZTsKICAgICB9Cisj
ZW5kaWYKIH0KIAogc3RhdGljIGNvbnN0IHVuc2lnbmVkIEN0cmxLZXkgPSAxIDw8IDA7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmNwcAko
cmV2aXNpb24gMTIzMTczKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xp
ZW50SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5NSwyMiArMjk1LDMyIEBAIHZvaWQgRWRp
dG9yQ2xpZW50SW1wbDo6ZGlkU2V0U2VsZWN0aW9uVHkKIAogdm9pZCBFZGl0b3JDbGllbnRJbXBs
OjpyZWdpc3RlclVuZG9TdGVwKFBhc3NSZWZQdHI8VW5kb1N0ZXA+IHN0ZXApCiB7CisjaWYgIUVO
QUJMRShVTkRPX01BTkFHRVIpCiAgICAgaWYgKG1fdW5kb1N0YWNrLnNpemUoKSA9PSBtYXhpbXVt
VW5kb1N0YWNrRGVwdGgpCiAgICAgICAgIG1fdW5kb1N0YWNrLnJlbW92ZUZpcnN0KCk7IC8vIGRy
b3Agb2xkZXN0IGl0ZW0gb2ZmIHRoZSBmYXIgZW5kCiAgICAgaWYgKCFtX2luUmVkbykKICAgICAg
ICAgbV9yZWRvU3RhY2suY2xlYXIoKTsKICAgICBtX3VuZG9TdGFjay5hcHBlbmQoc3RlcCk7Cisj
ZWxzZQorICAgIFVOVVNFRF9QQVJBTShzdGVwKTsKKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNs
aWVudEltcGw6OnJlZ2lzdGVyUmVkb1N0ZXAoUGFzc1JlZlB0cjxVbmRvU3RlcD4gc3RlcCkKIHsK
KyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICBtX3JlZG9TdGFjay5hcHBlbmQoc3RlcCk7
CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShzdGVwKTsKKyNlbmRpZgogfQogCiB2b2lkIEVkaXRv
ckNsaWVudEltcGw6OmNsZWFyVW5kb1JlZG9PcGVyYXRpb25zKCkKIHsKKyNpZiAhRU5BQkxFKFVO
RE9fTUFOQUdFUikKICAgICBtX3VuZG9TdGFjay5jbGVhcigpOwogICAgIG1fcmVkb1N0YWNrLmNs
ZWFyKCk7CisjZW5kaWYKIH0KIAogYm9vbCBFZGl0b3JDbGllbnRJbXBsOjpjYW5Db3B5Q3V0KEZy
YW1lKiBmcmFtZSwgYm9vbCBkZWZhdWx0VmFsdWUpIGNvbnN0CkBAIC0zMjksMTYgKzMzOSwyNSBA
QCBib29sIEVkaXRvckNsaWVudEltcGw6OmNhblBhc3RlKEZyYW1lKiBmCiAKIGJvb2wgRWRpdG9y
Q2xpZW50SW1wbDo6Y2FuVW5kbygpIGNvbnN0CiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIp
CiAgICAgcmV0dXJuICFtX3VuZG9TdGFjay5pc0VtcHR5KCk7CisjZWxzZQorICAgIHJldHVybiBm
YWxzZTsKKyNlbmRpZgogfQogCiBib29sIEVkaXRvckNsaWVudEltcGw6OmNhblJlZG8oKSBjb25z
dAogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIHJldHVybiAhbV9yZWRvU3RhY2su
aXNFbXB0eSgpOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKIH0KIAogdm9pZCBF
ZGl0b3JDbGllbnRJbXBsOjp1bmRvKCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAg
ICBpZiAoY2FuVW5kbygpKSB7CiAgICAgICAgIFVuZG9NYW5hZ2VyU3RhY2s6Oml0ZXJhdG9yIGJh
Y2sgPSAtLW1fdW5kb1N0YWNrLmVuZCgpOwogICAgICAgICBSZWZQdHI8VW5kb1N0ZXA+IHN0ZXAo
KmJhY2spOwpAQCAtMzQ2LDEwICszNjUsMTIgQEAgdm9pZCBFZGl0b3JDbGllbnRJbXBsOjp1bmRv
KCkKICAgICAgICAgc3RlcC0+dW5hcHBseSgpOwogICAgICAgICAvLyB1bmFwcGx5IHdpbGwgY2Fs
bCB1cyBiYWNrIHRvIHB1c2ggdGhpcyBjb21tYW5kIG9udG8gdGhlIHJlZG8gc3RhY2suCiAgICAg
fQorI2VuZGlmCiB9CiAKIHZvaWQgRWRpdG9yQ2xpZW50SW1wbDo6cmVkbygpCiB7CisjaWYgIUVO
QUJMRShVTkRPX01BTkFHRVIpCiAgICAgaWYgKGNhblJlZG8oKSkgewogICAgICAgICBVbmRvTWFu
YWdlclN0YWNrOjppdGVyYXRvciBiYWNrID0gLS1tX3JlZG9TdGFjay5lbmQoKTsKICAgICAgICAg
UmVmUHRyPFVuZG9TdGVwPiBzdGVwKCpiYWNrKTsKQEAgLTM2MSw2ICszODIsNyBAQCB2b2lkIEVk
aXRvckNsaWVudEltcGw6OnJlZG8oKQogICAgICAgICAvLyByZWFwcGx5IHdpbGwgY2FsbCB1cyBi
YWNrIHRvIHB1c2ggdGhpcyBjb21tYW5kIG9udG8gdGhlIHVuZG8gc3RhY2suCiAgICAgICAgIG1f
aW5SZWRvID0gZmFsc2U7CiAgICAgfQorI2VuZGlmCiB9CiAKIC8vCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5jcHAJKHJl
dmlzaW9uIDEyMzE3MykKKysrIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRv
ckNsaWVudEVmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3OCwyMCArMTc4LDMwIEBAIHZvaWQg
RWRpdG9yQ2xpZW50RWZsOjpkaWRTZXRTZWxlY3Rpb25UeXAKIAogdm9pZCBFZGl0b3JDbGllbnRF
Zmw6OnJlZ2lzdGVyVW5kb1N0ZXAoV1RGOjpQYXNzUmVmUHRyPFVuZG9TdGVwPiBzdGVwKQogewor
I2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIGlmICghbV9pc0luUmVkbykKICAgICAgICAg
cmVkb1N0YWNrLmNsZWFyKCk7CiAgICAgdW5kb1N0YWNrLnByZXBlbmQoc3RlcCk7CisjZWxzZQor
ICAgIFVOVVNFRF9QQVJBTShzdGVwKTsKKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNsaWVudEVm
bDo6cmVnaXN0ZXJSZWRvU3RlcChXVEY6OlBhc3NSZWZQdHI8VW5kb1N0ZXA+IHN0ZXApCiB7Cisj
aWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgcmVkb1N0YWNrLnByZXBlbmQoc3RlcCk7Cisj
ZWxzZQorICAgIFVOVVNFRF9QQVJBTShzdGVwKTsKKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNs
aWVudEVmbDo6Y2xlYXJVbmRvUmVkb09wZXJhdGlvbnMoKQogeworI2lmICFFTkFCTEUoVU5ET19N
QU5BR0VSKQogICAgIHVuZG9TdGFjay5jbGVhcigpOwogICAgIHJlZG9TdGFjay5jbGVhcigpOwor
I2VuZGlmCiB9CiAKIGJvb2wgRWRpdG9yQ2xpZW50RWZsOjpjYW5Db3B5Q3V0KEZyYW1lKiwgYm9v
bCBkZWZhdWx0VmFsdWUpIGNvbnN0CkBAIC0yMDYsMjQgKzIxNiwzNSBAQCBib29sIEVkaXRvckNs
aWVudEVmbDo6Y2FuUGFzdGUoRnJhbWUqLCBiCiAKIGJvb2wgRWRpdG9yQ2xpZW50RWZsOjpjYW5V
bmRvKCkgY29uc3QKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICByZXR1cm4gIXVu
ZG9TdGFjay5pc0VtcHR5KCk7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogfQog
CiBib29sIEVkaXRvckNsaWVudEVmbDo6Y2FuUmVkbygpIGNvbnN0CiB7CisjaWYgIUVOQUJMRShV
TkRPX01BTkFHRVIpCiAgICAgcmV0dXJuICFyZWRvU3RhY2suaXNFbXB0eSgpOworI2Vsc2UKKyAg
ICByZXR1cm4gZmFsc2U7CisjZW5kaWYKIH0KIAogdm9pZCBFZGl0b3JDbGllbnRFZmw6OnVuZG8o
KQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIGlmIChjYW5VbmRvKCkpIHsKICAg
ICAgICAgUmVmUHRyPFdlYkNvcmU6OlVuZG9TdGVwPiBzdGVwID0gdW5kb1N0YWNrLnRha2VGaXJz
dCgpOwogICAgICAgICBzdGVwLT51bmFwcGx5KCk7CiAgICAgfQorI2VuZGlmCiB9CiAKIHZvaWQg
RWRpdG9yQ2xpZW50RWZsOjpyZWRvKCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAg
ICBpZiAoY2FuUmVkbygpKSB7CiAgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpVbmRvU3RlcD4gc3Rl
cCA9IHJlZG9TdGFjay50YWtlRmlyc3QoKTsKIApAQCAtMjMyLDYgKzI1Myw3IEBAIHZvaWQgRWRp
dG9yQ2xpZW50RWZsOjpyZWRvKCkKICAgICAgICAgc3RlcC0+cmVhcHBseSgpOwogICAgICAgICBt
X2lzSW5SZWRvID0gZmFsc2U7CiAgICAgfQorI2VuZGlmCiB9CiAKIGJvb2wgRWRpdG9yQ2xpZW50
RWZsOjpzaG91bGRJbnNlcnROb2RlKE5vZGUqIG5vZGUsIFJhbmdlKiByYW5nZSwgRWRpdG9ySW5z
ZXJ0QWN0aW9uIGFjdGlvbikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0VkaXRvckNsaWVudEd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcAkocmV2aXNpb24gMTIzMTczKQorKysgU291
cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjg4LDIyICsyODgsMzIgQEAgdm9pZCBFZGl0b3JDbGllbnQ6OmRpZFNldFNl
bGVjdGlvblR5cGVzRgogCiB2b2lkIEVkaXRvckNsaWVudDo6cmVnaXN0ZXJVbmRvU3RlcChXVEY6
OlBhc3NSZWZQdHI8V2ViQ29yZTo6VW5kb1N0ZXA+IHN0ZXApCiB7CisjaWYgIUVOQUJMRShVTkRP
X01BTkFHRVIpCiAgICAgaWYgKHVuZG9TdGFjay5zaXplKCkgPT0gbWF4aW11bVVuZG9TdGFja0Rl
cHRoKQogICAgICAgICB1bmRvU3RhY2sucmVtb3ZlRmlyc3QoKTsKICAgICBpZiAoIW1faXNJblJl
ZG8pCiAgICAgICAgIHJlZG9TdGFjay5jbGVhcigpOwogICAgIHVuZG9TdGFjay5hcHBlbmQoc3Rl
cCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShzdGVwKTsKKyNlbmRpZgogfQogCiB2b2lkIEVk
aXRvckNsaWVudDo6cmVnaXN0ZXJSZWRvU3RlcChXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6VW5k
b1N0ZXA+IHN0ZXApCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgcmVkb1N0YWNr
LmFwcGVuZChzdGVwKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHN0ZXApOworI2VuZGlmCiB9
CiAKIHZvaWQgRWRpdG9yQ2xpZW50OjpjbGVhclVuZG9SZWRvT3BlcmF0aW9ucygpCiB7CisjaWYg
IUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgdW5kb1N0YWNrLmNsZWFyKCk7CiAgICAgcmVkb1N0
YWNrLmNsZWFyKCk7CisjZW5kaWYKIH0KIAogYm9vbCBFZGl0b3JDbGllbnQ6OmNhbkNvcHlDdXQo
V2ViQ29yZTo6RnJhbWUqLCBib29sIGRlZmF1bHRWYWx1ZSkgY29uc3QKQEAgLTMxOCwyNiArMzI4
LDM3IEBAIGJvb2wgRWRpdG9yQ2xpZW50OjpjYW5QYXN0ZShXZWJDb3JlOjpGcmEKIAogYm9vbCBF
ZGl0b3JDbGllbnQ6OmNhblVuZG8oKSBjb25zdAogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VS
KQogICAgIHJldHVybiAhdW5kb1N0YWNrLmlzRW1wdHkoKTsKKyNlbHNlCisgICAgcmV0dXJuIGZh
bHNlOworI2VuZGlmCiB9CiAKIGJvb2wgRWRpdG9yQ2xpZW50OjpjYW5SZWRvKCkgY29uc3QKIHsK
KyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICByZXR1cm4gIXJlZG9TdGFjay5pc0VtcHR5
KCk7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNs
aWVudDo6dW5kbygpCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgaWYgKGNhblVu
ZG8oKSkgewogICAgICAgICBSZWZQdHI8V2ViQ29yZTo6VW5kb1N0ZXA+IHN0ZXAoKigtLXVuZG9T
dGFjay5lbmQoKSkpOwogICAgICAgICB1bmRvU3RhY2sucmVtb3ZlKC0tdW5kb1N0YWNrLmVuZCgp
KTsKICAgICAgICAgLy8gdW5hcHBseSB3aWxsIGNhbGwgdXMgYmFjayB0byBwdXNoIHRoaXMgY29t
bWFuZCBvbnRvIHRoZSByZWRvIHN0YWNrLgogICAgICAgICBzdGVwLT51bmFwcGx5KCk7CiAgICAg
fQorI2VuZGlmCiB9CiAKIHZvaWQgRWRpdG9yQ2xpZW50OjpyZWRvKCkKIHsKKyNpZiAhRU5BQkxF
KFVORE9fTUFOQUdFUikKICAgICBpZiAoY2FuUmVkbygpKSB7CiAgICAgICAgIFJlZlB0cjxXZWJD
b3JlOjpVbmRvU3RlcD4gc3RlcCgqKC0tcmVkb1N0YWNrLmVuZCgpKSk7CiAgICAgICAgIHJlZG9T
dGFjay5yZW1vdmUoLS1yZWRvU3RhY2suZW5kKCkpOwpAQCAtMzQ4LDYgKzM2OSw3IEBAIHZvaWQg
RWRpdG9yQ2xpZW50OjpyZWRvKCkKICAgICAgICAgc3RlcC0+cmVhcHBseSgpOwogICAgICAgICBt
X2lzSW5SZWRvID0gZmFsc2U7CiAgICAgfQorI2VuZGlmCiB9CiAKIGJvb2wgRWRpdG9yQ2xpZW50
OjpzaG91bGRJbnNlcnROb2RlKE5vZGUqIG5vZGUsIFJhbmdlKiByYW5nZSwgRWRpdG9ySW5zZXJ0
QWN0aW9uIGFjdGlvbikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRp
dG9yQ2xpZW50UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwCShyZXZpc2lvbiAxMjMxNzMpCisrKyBTb3VyY2UvV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjM5LDEyICsyMzksMTYgQEAgYm9vbCBFZGl0b3JDbGllbnRRdDo6c2VsZWN0V29yZEJlZm9y
ZU1lbgogCiB2b2lkIEVkaXRvckNsaWVudFF0OjpyZWdpc3RlclVuZG9TdGVwKFdURjo6UGFzc1Jl
ZlB0cjxXZWJDb3JlOjpVbmRvU3RlcD4gc3RlcCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdF
UikKICNpZm5kZWYgUVRfTk9fVU5ET1NUQUNLCiAgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5k
LT5wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgaWYg
KG1faW5VbmRvUmVkbyB8fCAoZnJhbWUgJiYgIWZyYW1lLT5lZGl0b3IoKS0+bGFzdEVkaXRDb21t
YW5kKCkgLyogSEFDSyEhIERvbid0IHJlY3JlYXRlIHVuZG9zICovKSkKICAgICAgICAgcmV0dXJu
OwogICAgIG1fcGFnZS0+dW5kb1N0YWNrKCktPnB1c2gobmV3IFVuZG9TdGVwUXQoc3RlcCkpOwog
I2VuZGlmIC8vIFFUX05PX1VORE9TVEFDSworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oc3RlcCk7
CisjZW5kaWYKIH0KIAogdm9pZCBFZGl0b3JDbGllbnRRdDo6cmVnaXN0ZXJSZWRvU3RlcChXVEY6
OlBhc3NSZWZQdHI8V2ViQ29yZTo6VW5kb1N0ZXA+KQpAQCAtMjUzLDkgKzI1NywxMSBAQCB2b2lk
IEVkaXRvckNsaWVudFF0OjpyZWdpc3RlclJlZG9TdGVwKFdUCiAKIHZvaWQgRWRpdG9yQ2xpZW50
UXQ6OmNsZWFyVW5kb1JlZG9PcGVyYXRpb25zKCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdF
UikKICNpZm5kZWYgUVRfTk9fVU5ET1NUQUNLCiAgICAgcmV0dXJuIG1fcGFnZS0+dW5kb1N0YWNr
KCktPmNsZWFyKCk7CiAjZW5kaWYKKyNlbmRpZgogfQogCiBib29sIEVkaXRvckNsaWVudFF0Ojpj
YW5Db3B5Q3V0KFdlYkNvcmU6OkZyYW1lKiwgYm9vbCBkZWZhdWx0VmFsdWUpIGNvbnN0CkBAIC0y
NzAsMzggKzI3Niw1MCBAQCBib29sIEVkaXRvckNsaWVudFF0OjpjYW5QYXN0ZShXZWJDb3JlOjpG
CiAKIGJvb2wgRWRpdG9yQ2xpZW50UXQ6OmNhblVuZG8oKSBjb25zdAogeworI2lmICFFTkFCTEUo
VU5ET19NQU5BR0VSKQogI2lmZGVmIFFUX05PX1VORE9TVEFDSwogICAgIHJldHVybiBmYWxzZTsK
ICNlbHNlCiAgICAgcmV0dXJuIG1fcGFnZS0+dW5kb1N0YWNrKCktPmNhblVuZG8oKTsKICNlbmRp
ZgorI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKIH0KIAogYm9vbCBFZGl0b3JDbGll
bnRRdDo6Y2FuUmVkbygpIGNvbnN0CiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAjaWZk
ZWYgUVRfTk9fVU5ET1NUQUNLCiAgICAgcmV0dXJuIGZhbHNlOwogI2Vsc2UKICAgICByZXR1cm4g
bV9wYWdlLT51bmRvU3RhY2soKS0+Y2FuUmVkbygpOwogI2VuZGlmCisjZWxzZQorICAgIHJldHVy
biBmYWxzZTsKKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNsaWVudFF0Ojp1bmRvKCkKIHsKKyNp
ZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICNpZm5kZWYgUVRfTk9fVU5ET1NUQUNLCiAgICAgbV9p
blVuZG9SZWRvID0gdHJ1ZTsKICAgICBtX3BhZ2UtPnVuZG9TdGFjaygpLT51bmRvKCk7CiAgICAg
bV9pblVuZG9SZWRvID0gZmFsc2U7CiAjZW5kaWYKKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNs
aWVudFF0OjpyZWRvKCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICNpZm5kZWYgUVRf
Tk9fVU5ET1NUQUNLCiAgICAgbV9pblVuZG9SZWRvID0gdHJ1ZTsKICAgICBtX3BhZ2UtPnVuZG9T
dGFjaygpLT5yZWRvKCk7CiAgICAgbV9pblVuZG9SZWRvID0gZmFsc2U7CiAjZW5kaWYKKyNlbmRp
ZgogfQogCiBib29sIEVkaXRvckNsaWVudFF0OjpzaG91bGRJbnNlcnROb2RlKE5vZGUqIG5vZGUs
IFJhbmdlKiByYW5nZSwgRWRpdG9ySW5zZXJ0QWN0aW9uIGFjdGlvbikKSW5kZXg6IExheW91dFRl
c3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlz
aW9uIDEyMzE3MykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDIzIEBACisyMDEyLTA3LTE5ICBTdWtvbHNhayBTYWtzaHV3b25nICA8c3Vrb2xzYWtA
Z29vZ2xlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgVW5kb01hbmFnZXIncyBhdXRvbWF0aWMg
RE9NIHRyYW5zYWN0aW9ucy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTkxODEyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhpcyBwYXRjaCBpbmNsdWRlcyBjaGFuZ2VzIGZyb20gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg5NzIyCisgICAgICAgIHdoaWNoIGhhdmUgbm90IHll
dCBiZWVuIGFjY2VwdGVkLgorCisgICAgICAgICogZWRpdGluZy91bmRvbWFuYWdlci9kb2N1bWVu
dC1oYXMtdW5kb21hbmFnZXIuaHRtbDoKKyAgICAgICAgKiBlZGl0aW5nL3VuZG9tYW5hZ2VyL2Rv
bXRyYW5zYWN0aW9uLXN1cnZpdmVzLWdjLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZWRpdGluZy91bmRvbWFuYWdlci9kb210cmFuc2FjdGlvbi1zdXJ2aXZlcy1nYy5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBlZGl0aW5nL3VuZG9tYW5hZ2VyL3VuZG9tYW5hZ2VyLXRyYW5zYWN0LWF1
dG9tYXRpYy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvdW5kb21hbmFn
ZXIvdW5kb21hbmFnZXItdHJhbnNhY3QtYXV0b21hdGljLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGVkaXRpbmcvdW5kb21hbmFnZXIvdW5kb21hbmFnZXItdHJhbnNhY3QtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3VuZG9tYW5hZ2VyL3VuZG9tYW5hZ2VyLXRyYW5zYWN0
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvdW5kb21hbmFnZXIvdW5kb21hbmFnZXIt
dW5kby1yZWRvLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy91bmRvbWFu
YWdlci91bmRvbWFuYWdlci11bmRvLXJlZG8uaHRtbDogQWRkZWQuCisKIDIwMTItMDctMTkgIERh
dmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgogCiAgICAgICAgIFNWRyBpbWFnZXMgYnJva2Vu
IHdoZW4gbWF4LXdpZHRoIHNwZWNpZmllZC4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvdW5k
b21hbmFnZXIvZG9jdW1lbnQtaGFzLXVuZG9tYW5hZ2VyLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZWRpdGluZy91bmRvbWFuYWdlci9kb2N1bWVudC1oYXMtdW5kb21hbmFnZXIuaHRt
bAkocmV2aXNpb24gMTIzMTczKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvbWFuYWdlci9k
b2N1bWVudC1oYXMtdW5kb21hbmFnZXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNiw3ICs2LDYg
QEAKIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwv
c2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08ZGl2IGlkPSJsb2ciPjwvZGl2PgogPHNjcmlwdD4K
IHRlc3QoZnVuY3Rpb24oKSB7CiAgICAgYXNzZXJ0X293bl9wcm9wZXJ0eShkb2N1bWVudCwgInVu
ZG9NYW5hZ2VyIik7CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2VyL2RvbXRy
YW5zYWN0aW9uLXN1cnZpdmVzLWdjLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2VyL2RvbXRyYW5zYWN0aW9uLXN1cnZpdmVzLWdjLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIv
ZG9tdHJhbnNhY3Rpb24tc3Vydml2ZXMtZ2MtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDUgQEAKK1RoaXMgdGVzdHMgdGhhdCB1bmRvTWFuYWdlciBrZWVwcyBET01UcmFuc2Fj
dGlvbiBvYmplY3RzIGFsaXZlIGR1cmluZyBpdHMgbGlmZXRpbWUgYW5kIHRoZXJlZm9yZSBkb2Vz
IG5vdCBjcmFzaCBhZnRlciB0aGUgR0MgcnVucy4KKworUEFTUyBBZnRlciB0aGUgR0MgcnVucywg
dW5kb01hbmFnZXIudW5kbygpIHN0aWxsIHdvcmtzLiAKK1BBU1MgQWZ0ZXIgdGhlIEdDIHJ1bnMg
YWdhaW4sIHVuZG9NYW5hZ2VyLnJlZG8oKSBzdGlsbCB3b3Jrcy4gCisKSW5kZXg6IExheW91dFRl
c3RzL2VkaXRpbmcvdW5kb21hbmFnZXIvZG9tdHJhbnNhY3Rpb24tc3Vydml2ZXMtZ2MuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2VyL2RvbXRyYW5zYWN0
aW9uLXN1cnZpdmVzLWdjLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5n
L3VuZG9tYW5hZ2VyL2RvbXRyYW5zYWN0aW9uLXN1cnZpdmVzLWdjLmh0bWwJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNDkgQEAKKzwhZG9jdHlwZSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzx0aXRs
ZT5ET01UcmFuc2FjdGlvbiBzdXJ2aXZlcyBHQzwvdGl0bGU+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
CitUaGlzIHRlc3RzIHRoYXQgdW5kb01hbmFnZXIga2VlcHMgRE9NVHJhbnNhY3Rpb24gb2JqZWN0
cyBhbGl2ZSBkdXJpbmcgaXRzIGxpZmV0aW1lCithbmQgdGhlcmVmb3JlIGRvZXMgbm90IGNyYXNo
IGFmdGVyIHRoZSBHQyBydW5zLgorCis8ZGl2IGlkPSJsb2ciPjwvZGl2PgorCis8c2NyaXB0Pgor
dmFyIGxvZyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsb2cnKTsKKwordmFyIHUgPSBkb2N1
bWVudC51bmRvTWFuYWdlcjsKK3UudHJhbnNhY3QoeworCSJleGVjdXRlIjogZnVuY3Rpb24oKSB7
CisJCWxvZy5pbm5lclRleHQgKz0gKCJleGVjdXRlXG4iKTsKKwl9LAorCSJ1bmRvIjogZnVuY3Rp
b24oKSB7CisJCWxvZy5pbm5lclRleHQgKz0gKCJ1bmRvXG4iKTsKKwl9LAorCSJyZWRvIjogZnVu
Y3Rpb24oKSB7CisJCWxvZy5pbm5lclRleHQgKz0gKCJyZWRvXG4iKTsKKwl9LAorfSwgdHJ1ZSk7
CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisJaWYgKHdpbmRvdy5HQ0NvbnRyb2xsZXIpCisJCUdDQ29u
dHJvbGxlci5jb2xsZWN0KCk7CisJdS51bmRvKCk7CisJCisJYXNzZXJ0X3RydWUobG9nLmlubmVy
VGV4dCA9PSAiZXhlY3V0ZVxudW5kb1xuIik7Cit9LCAiQWZ0ZXIgdGhlIEdDIHJ1bnMsIHVuZG9N
YW5hZ2VyLnVuZG8oKSBzdGlsbCB3b3Jrcy4iKTsKKwkKK3Rlc3QoZnVuY3Rpb24oKSB7CisJaWYg
KHdpbmRvdy5HQ0NvbnRyb2xsZXIpCisJCUdDQ29udHJvbGxlci5jb2xsZWN0KCk7CisJdS5yZWRv
KCk7CisJCisJYXNzZXJ0X3RydWUobG9nLmlubmVyVGV4dCA9PSAiZXhlY3V0ZVxudW5kb1xucmVk
b1xuIik7Cit9LCAiQWZ0ZXIgdGhlIEdDIHJ1bnMgYWdhaW4sIHVuZG9NYW5hZ2VyLnJlZG8oKSBz
dGlsbCB3b3Jrcy4iKTsKKworbG9nLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7Cis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIv
dW5kb21hbmFnZXItdHJhbnNhY3QtYXV0b21hdGljLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2VyL3VuZG9tYW5hZ2VyLXRyYW5zYWN0LWF1
dG9tYXRpYy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5n
L3VuZG9tYW5hZ2VyL3VuZG9tYW5hZ2VyLXRyYW5zYWN0LWF1dG9tYXRpYy1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTIgQEAKK1RoaXMgdGVzdHMgdGhhdCBVbmRvTWFuYWdl
ciBjb3JyZWN0bHkgcmV2ZXJ0cy9yZWFwcGxpZXMgYXV0b21hdGljIERPTSB0cmFuc2FjdGlvbnMg
dGhhdCBtb2RpZnkgdGhlIHN0cnVjdHVyZSBvZiB0aGUgRE9NIHRyZWUuCisKK1BBU1MgVW5kb01h
bmFnZXIgY2FsbHMgdGhlIGZ1bmN0aW9uIHJldHVybmVkIGJ5IGV4ZWN1dGVBdXRvbWF0aWMuIChh
cHBlbmRDaGlsZCkgCitQQVNTIFVuZG9NYW5hZ2VyIGNhbGxzIHRoZSBmdW5jdGlvbiByZXR1cm5l
ZCBieSBleGVjdXRlQXV0b21hdGljLiAoaW5zZXJ0QmVmb3JlKSAKK1BBU1MgVW5kb01hbmFnZXIg
Y2FsbHMgdGhlIGZ1bmN0aW9uIHJldHVybmVkIGJ5IGV4ZWN1dGVBdXRvbWF0aWMuIChyZW1vdmVD
aGlsZCkgCitQQVNTIFVuZG9NYW5hZ2VyIHJldmVydHMgdGhlIGNoYW5nZSBtYWRlIGJ5IHJlbW92
ZUNoaWxkLiAKK1BBU1MgVW5kb01hbmFnZXIgcmV2ZXJ0cyB0aGUgY2hhbmdlIG1hZGUgYnkgaW5z
ZXJ0QmVmb3JlLiAKK1BBU1MgVW5kb01hbmFnZXIgcmV2ZXJ0cyB0aGUgY2hhbmdlIG1hZGUgYnkg
YXBwZW5kQ2hpbGQuIAorUEFTUyBVbmRvTWFuYWdlciByZWFwcGxpZXMgdGhlIGNoYW5nZSBtYWRl
IGJ5IGFwcGVuZENoaWxkLiAKK1BBU1MgVW5kb01hbmFnZXIgcmVhcHBsaWVzIHRoZSBjaGFuZ2Ug
bWFkZSBieSBpbnNlcnRCZWZvcmUuIAorUEFTUyBVbmRvTWFuYWdlciByZWFwcGxpZXMgdGhlIGNo
YW5nZSBtYWRlIGJ5IHJlbW92ZUNoaWxkLiAKKwpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy91
bmRvbWFuYWdlci91bmRvbWFuYWdlci10cmFuc2FjdC1hdXRvbWF0aWMuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2VyL3VuZG9tYW5hZ2VyLXRyYW5zYWN0
LWF1dG9tYXRpYy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy91bmRv
bWFuYWdlci91bmRvbWFuYWdlci10cmFuc2FjdC1hdXRvbWF0aWMuaHRtbAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw4MiBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHRpdGxl
PlVuZG9NYW5hZ2VyLnRyYW5zYWN0KCkgYXV0b21hdGljPC90aXRsZT4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KK1RoaXMgdGVzdHMgdGhhdCBVbmRvTWFuYWdlciBjb3JyZWN0bHkgcmV2ZXJ0cy9yZWFw
cGxpZXMgYXV0b21hdGljIERPTSB0cmFuc2FjdGlvbnMKK3RoYXQgbW9kaWZ5IHRoZSBzdHJ1Y3R1
cmUgb2YgdGhlIERPTSB0cmVlLgorCis8ZGl2IGlkPSJlZGl0Ij48L2Rpdj4KKzxzY3JpcHQ+CisK
K3ZhciBlZGl0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImVkaXQiKTsKK3ZhciB1bmRvTWFu
YWdlciA9IGRvY3VtZW50LnVuZG9NYW5hZ2VyOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIHVu
ZG9NYW5hZ2VyLnRyYW5zYWN0KHsKKyAgICAgICAgImV4ZWN1dGVBdXRvbWF0aWMiOiBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgIHZhciBkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIp
OworICAgICAgICAgICAgZC5pbm5lclRleHQgPSAiMSI7CisgICAgICAgICAgICBlZGl0LmFwcGVu
ZENoaWxkKGQpOworICAgICAgICB9CisgICAgfSwgZmFsc2UpOworICAgIGFzc2VydF90cnVlKGVk
aXQuaW5uZXJIVE1MID09ICI8c3Bhbj4xPC9zcGFuPiIpOworfSwgIlVuZG9NYW5hZ2VyIGNhbGxz
IHRoZSBmdW5jdGlvbiByZXR1cm5lZCBieSBleGVjdXRlQXV0b21hdGljLiAoYXBwZW5kQ2hpbGQp
Iik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgdW5kb01hbmFnZXIudHJhbnNhY3QoeworICAg
ICAgICAiZXhlY3V0ZUF1dG9tYXRpYyI6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdmFyIGQy
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworICAgICAgICAgICAgZDIuaW5uZXJI
VE1MID0gIjxiPjI8L2I+IjsKKyAgICAgICAgICAgIGVkaXQuaW5zZXJ0QmVmb3JlKGQyLCBlZGl0
LmZpcnN0Q2hpbGQpOworICAgICAgICB9CisgICAgfSwgZmFsc2UpOworICAgIGFzc2VydF90cnVl
KGVkaXQuaW5uZXJIVE1MID09ICI8c3Bhbj48Yj4yPC9iPjwvc3Bhbj48c3Bhbj4xPC9zcGFuPiIp
OworfSwgIlVuZG9NYW5hZ2VyIGNhbGxzIHRoZSBmdW5jdGlvbiByZXR1cm5lZCBieSBleGVjdXRl
QXV0b21hdGljLiAoaW5zZXJ0QmVmb3JlKSIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIHVu
ZG9NYW5hZ2VyLnRyYW5zYWN0KHsKKyAgICAgICAgImV4ZWN1dGVBdXRvbWF0aWMiOiBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgIGVkaXQucmVtb3ZlQ2hpbGQoZWRpdC5sYXN0Q2hpbGQpOworICAg
ICAgICB9CisgICAgfSwgZmFsc2UpOworICAgIGFzc2VydF90cnVlKGVkaXQuaW5uZXJIVE1MID09
ICI8c3Bhbj48Yj4yPC9iPjwvc3Bhbj4iKTsKK30sICJVbmRvTWFuYWdlciBjYWxscyB0aGUgZnVu
Y3Rpb24gcmV0dXJuZWQgYnkgZXhlY3V0ZUF1dG9tYXRpYy4gKHJlbW92ZUNoaWxkKSIpOworCit0
ZXN0KGZ1bmN0aW9uKCkgeworICAgIHVuZG9NYW5hZ2VyLnVuZG8oKTsKKyAgICBhc3NlcnRfdHJ1
ZShlZGl0LmlubmVySFRNTCA9PSAiPHNwYW4+PGI+MjwvYj48L3NwYW4+PHNwYW4+MTwvc3Bhbj4i
KTsKK30sICJVbmRvTWFuYWdlciByZXZlcnRzIHRoZSBjaGFuZ2UgbWFkZSBieSByZW1vdmVDaGls
ZC4iKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICB1bmRvTWFuYWdlci51bmRvKCk7CisgICAg
YXNzZXJ0X3RydWUoZWRpdC5pbm5lckhUTUwgPT0gIjxzcGFuPjE8L3NwYW4+Iik7Cit9LCAiVW5k
b01hbmFnZXIgcmV2ZXJ0cyB0aGUgY2hhbmdlIG1hZGUgYnkgaW5zZXJ0QmVmb3JlLiIpOworCit0
ZXN0KGZ1bmN0aW9uKCkgeworICAgIHVuZG9NYW5hZ2VyLnVuZG8oKTsKKyAgICBhc3NlcnRfdHJ1
ZShlZGl0LmlubmVySFRNTCA9PSAiIik7Cit9LCAiVW5kb01hbmFnZXIgcmV2ZXJ0cyB0aGUgY2hh
bmdlIG1hZGUgYnkgYXBwZW5kQ2hpbGQuIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgdW5k
b01hbmFnZXIucmVkbygpOworICAgIGFzc2VydF90cnVlKGVkaXQuaW5uZXJIVE1MID09ICI8c3Bh
bj4xPC9zcGFuPiIpOworfSwgIlVuZG9NYW5hZ2VyIHJlYXBwbGllcyB0aGUgY2hhbmdlIG1hZGUg
YnkgYXBwZW5kQ2hpbGQuIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgdW5kb01hbmFnZXIu
cmVkbygpOworICAgIGFzc2VydF90cnVlKGVkaXQuaW5uZXJIVE1MID09ICI8c3Bhbj48Yj4yPC9i
Pjwvc3Bhbj48c3Bhbj4xPC9zcGFuPiIpOworfSwgIlVuZG9NYW5hZ2VyIHJlYXBwbGllcyB0aGUg
Y2hhbmdlIG1hZGUgYnkgaW5zZXJ0QmVmb3JlLiIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAg
IHVuZG9NYW5hZ2VyLnJlZG8oKTsKKyAgICBhc3NlcnRfdHJ1ZShlZGl0LmlubmVySFRNTCA9PSAi
PHNwYW4+PGI+MjwvYj48L3NwYW4+Iik7Cit9LCAiVW5kb01hbmFnZXIgcmVhcHBsaWVzIHRoZSBj
aGFuZ2UgbWFkZSBieSByZW1vdmVDaGlsZC4iKTsKKworZWRpdC5zdHlsZS5kaXNwbGF5ID0gIm5v
bmUiOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0
aW5nL3VuZG9tYW5hZ2VyL3VuZG9tYW5hZ2VyLXRyYW5zYWN0LWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2VyL3VuZG9tYW5hZ2VyLXRyYW5z
YWN0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvdW5k
b21hbmFnZXIvdW5kb21hbmFnZXItdHJhbnNhY3QtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDE0IEBACitUaGlzIHRlc3RzIFVuZG9NYW5hZ2VyJ3MgdHJhbnNhY3QoKSBtZXRo
b2QuCisKK1BBU1MgZG9jdW1lbnQgaGFzIHByb3BlcnR5IHVuZG9NYW5hZ2VyLiAKK1BBU1MgdW5k
b01hbmFnZXIgaGFzIHByb3BlcnR5IHRyYW5zYWN0LiAKK1BBU1MgQWZ0ZXIgYSB0cmFuc2FjdCBj
YWxsLCB1bmRvTWFuYWdlciBhcHBsaWVzIHRoZSB0cmFuc2FjdGlvbi4gCitQQVNTIEFmdGVyIGFu
b3RoZXIgdHJhbnNhY3QgY2FsbCwgdW5kb01hbmFnZXIgYXBwbGllcyB0aGUgc2Vjb25kIHRyYW5z
YWN0aW9uLiAKK1BBU1MgQWZ0ZXIgYW4gdW5kbyBjYWxsLCB1bmRvTWFuYWdlciB1bmFwcGxpZXMg
dGhlIHNlY29uZCB0cmFuc2FjdGlvbi4gCitQQVNTIEFmdGVyIGFub3RoZXIgdW5kbyBjYWxsLCB1
bmRvTWFuYWdlciB1bmFwcGxpZXMgdGhlIGZpcnN0IHRyYW5zYWN0aW9uLiAKK1BBU1MgQWZ0ZXIg
YSByZWRvIGNhbGwsIHVuZG9NYW5hZ2VyIHJlYXBwbGllcyB0aGUgZmlyc3QgdHJhbnNhY3Rpb24u
IAorUEFTUyBBZnRlciBhbm90aGVyIHJlZG8gY2FsbCwgdW5kb01hbmFnZXIgcmVhcHBsaWVzIHRo
ZSBzZWNvbmQgdHJhbnNhY3Rpb24uIAorUEFTUyBBZnRlciB0aHJlZSB0cmFuc2FjdCBjYWxscyB0
aGF0IGFyZSBtZXJnZWQgaW50byBvbmUgZW50cnksIHVuZG9NYW5hZ2VyIGFwcGxpZXMgdGhlIHRo
cmVlIHRyYW5zYWN0aW9ucy4gCitQQVNTIEFmdGVyIGFuIHVuZG8gY2FsbCwgdW5kb01hbmFnZXIg
dW5hcHBsaWVzIHRoZSB0aHJlZSB0cmFuc2FjdGlvbnMgaW4gdGhlIGNvcnJlY3Qgb3JkZXIuIAor
UEFTUyBBZnRlciBhIHJlZG8gY2FsbCwgdW5kb01hbmFnZXIgcmVhcHBsaWVzIHRoZSB0aHJlZSB0
cmFuc2FjdGlvbnMgaW4gdGhlIGNvcnJlY3Qgb3JkZXIuIAorCkluZGV4OiBMYXlvdXRUZXN0cy9l
ZGl0aW5nL3VuZG9tYW5hZ2VyL3VuZG9tYW5hZ2VyLXRyYW5zYWN0Lmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvbWFuYWdlci91bmRvbWFuYWdlci10cmFuc2FjdC5o
dG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvbWFuYWdlci91bmRv
bWFuYWdlci10cmFuc2FjdC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyOSBAQAorPCFk
b2N0eXBlIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPlVuZG9NYW5hZ2VyLnRyYW5zYWN0
KCk8L3RpdGxlPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorVGhpcyB0ZXN0cyBVbmRvTWFuYWdlcidz
IHRyYW5zYWN0KCkgbWV0aG9kLgorCis8ZGl2IGlkPSJlZGl0IiBjb250ZW50RWRpdGFibGU9InRy
dWUiPjwvZGl2PgorPHNjcmlwdD4KKwordGVzdChmdW5jdGlvbigpIHsKKyAgICBhc3NlcnRfb3du
X3Byb3BlcnR5KGRvY3VtZW50LCAidW5kb01hbmFnZXIiKTsKK30sICJkb2N1bWVudCBoYXMgcHJv
cGVydHkgdW5kb01hbmFnZXIuIik7CisKK3ZhciB1bmRvTWFuYWdlciA9IGRvY3VtZW50LnVuZG9N
YW5hZ2VyOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGFzc2VydF9pZGxfYXR0cmlidXRlKHVu
ZG9NYW5hZ2VyLCAidHJhbnNhY3QiKTsKK30sICJ1bmRvTWFuYWdlciBoYXMgcHJvcGVydHkgdHJh
bnNhY3QuIik7CisKK3ZhciBlZGl0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImVkaXQiKTsK
KwordGVzdChmdW5jdGlvbigpIHsKKyAgICB1bmRvTWFuYWdlci50cmFuc2FjdCh7CisgICAgICAg
ICJleGVjdXRlIjogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBlZGl0LmlubmVySFRNTCArPSAi
MWUgIjsKKyAgICAgICAgfSwKKyAgICAgICAgInVuZG8iOiBmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgIGVkaXQuaW5uZXJIVE1MICs9ICIxdSAiOworICAgICAgICB9LAorICAgICAgICAicmVkbyI6
IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZWRpdC5pbm5lckhUTUwgKz0gIjFyICI7CisgICAg
ICAgIH0KKyAgICB9LCBmYWxzZSk7CisgICAgYXNzZXJ0X3RydWUoZWRpdC5pbm5lckhUTUwgPT0g
IjFlICIpOworfSwgIkFmdGVyIGEgdHJhbnNhY3QgY2FsbCwgdW5kb01hbmFnZXIgYXBwbGllcyB0
aGUgdHJhbnNhY3Rpb24uIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgdW5kb01hbmFnZXIu
dHJhbnNhY3QoeworICAgICAgICAiZXhlY3V0ZSI6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
ZWRpdC5pbm5lckhUTUwgKz0gIjJlICI7CisgICAgICAgIH0sCisgICAgICAgICJ1bmRvIjogZnVu
Y3Rpb24oKSB7CisgICAgICAgICAgICBlZGl0LmlubmVySFRNTCArPSAiMnUgIjsKKyAgICAgICAg
fSwKKyAgICAgICAgInJlZG8iOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGVkaXQuaW5uZXJI
VE1MICs9ICIyciAiOworICAgICAgICB9CisgICAgfSwgZmFsc2UpOworICAgIGFzc2VydF90cnVl
KGVkaXQuaW5uZXJIVE1MID09ICIxZSAyZSAiKTsKK30sICJBZnRlciBhbm90aGVyIHRyYW5zYWN0
IGNhbGwsIHVuZG9NYW5hZ2VyIGFwcGxpZXMgdGhlIHNlY29uZCB0cmFuc2FjdGlvbi4iKTsKKwor
dGVzdChmdW5jdGlvbigpIHsKKyAgICB1bmRvTWFuYWdlci51bmRvKCk7CisgICAgYXNzZXJ0X3Ry
dWUoZWRpdC5pbm5lckhUTUwgPT0gIjFlIDJlIDJ1ICIpOworfSwgIkFmdGVyIGFuIHVuZG8gY2Fs
bCwgdW5kb01hbmFnZXIgdW5hcHBsaWVzIHRoZSBzZWNvbmQgdHJhbnNhY3Rpb24uIik7CisKK3Rl
c3QoZnVuY3Rpb24oKSB7CisgICAgdW5kb01hbmFnZXIudW5kbygpOworICAgIGFzc2VydF90cnVl
KGVkaXQuaW5uZXJIVE1MID09ICIxZSAyZSAydSAxdSAiKTsKK30sICJBZnRlciBhbm90aGVyIHVu
ZG8gY2FsbCwgdW5kb01hbmFnZXIgdW5hcHBsaWVzIHRoZSBmaXJzdCB0cmFuc2FjdGlvbi4iKTsK
KwordGVzdChmdW5jdGlvbigpIHsKKyAgICB1bmRvTWFuYWdlci5yZWRvKCk7CisgICAgYXNzZXJ0
X3RydWUoZWRpdC5pbm5lckhUTUwgPT0gIjFlIDJlIDJ1IDF1IDFyICIpOworfSwgIkFmdGVyIGEg
cmVkbyBjYWxsLCB1bmRvTWFuYWdlciByZWFwcGxpZXMgdGhlIGZpcnN0IHRyYW5zYWN0aW9uLiIp
OworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIHVuZG9NYW5hZ2VyLnJlZG8oKTsKKyAgICBhc3Nl
cnRfdHJ1ZShlZGl0LmlubmVySFRNTCA9PSAiMWUgMmUgMnUgMXUgMXIgMnIgIik7Cit9LCAiQWZ0
ZXIgYW5vdGhlciByZWRvIGNhbGwsIHVuZG9NYW5hZ2VyIHJlYXBwbGllcyB0aGUgc2Vjb25kIHRy
YW5zYWN0aW9uLiIpOworCitlZGl0LmlubmVySFRNTCA9ICIiOworCit0ZXN0KGZ1bmN0aW9uKCkg
eworICAgIHVuZG9NYW5hZ2VyLnRyYW5zYWN0KHsKKyAgICAgICAgImV4ZWN1dGUiOiBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgIGVkaXQuaW5uZXJIVE1MICs9ICIxZSAiOworICAgICAgICB9LAor
ICAgICAgICAidW5kbyI6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZWRpdC5pbm5lckhUTUwg
Kz0gIjF1ICI7CisgICAgICAgIH0sCisgICAgICAgICJyZWRvIjogZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICBlZGl0LmlubmVySFRNTCArPSAiMXIgIjsKKyAgICAgICAgfQorICAgIH0sIGZhbHNl
KTsKKyAgICB1bmRvTWFuYWdlci50cmFuc2FjdCh7CisgICAgICAgICJleGVjdXRlIjogZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICBlZGl0LmlubmVySFRNTCArPSAiMmUgIjsKKyAgICAgICAgfSwK
KyAgICAgICAgInVuZG8iOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGVkaXQuaW5uZXJIVE1M
ICs9ICIydSAiOworICAgICAgICB9LAorICAgICAgICAicmVkbyI6IGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgZWRpdC5pbm5lckhUTUwgKz0gIjJyICI7CisgICAgICAgIH0KKyAgICB9LCB0cnVl
KTsKKyAgICB1bmRvTWFuYWdlci50cmFuc2FjdCh7CisgICAgICAgICJleGVjdXRlIjogZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICBlZGl0LmlubmVySFRNTCArPSAiM2UgIjsKKyAgICAgICAgfSwK
KyAgICAgICAgInVuZG8iOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGVkaXQuaW5uZXJIVE1M
ICs9ICIzdSAiOworICAgICAgICB9LAorICAgICAgICAicmVkbyI6IGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgZWRpdC5pbm5lckhUTUwgKz0gIjNyICI7CisgICAgICAgIH0KKyAgICB9LCB0cnVl
KTsKKyAgICBhc3NlcnRfdHJ1ZShlZGl0LmlubmVySFRNTCA9PSAiMWUgMmUgM2UgIik7Cit9LCAi
QWZ0ZXIgdGhyZWUgdHJhbnNhY3QgY2FsbHMgdGhhdCBhcmUgbWVyZ2VkIGludG8gb25lIGVudHJ5
LCB1bmRvTWFuYWdlciBhcHBsaWVzIHRoZSB0aHJlZSB0cmFuc2FjdGlvbnMuIik7CisKK3Rlc3Qo
ZnVuY3Rpb24oKSB7CisgICAgdW5kb01hbmFnZXIudW5kbygpOworICAgIGFzc2VydF90cnVlKGVk
aXQuaW5uZXJIVE1MID09ICIxZSAyZSAzZSAzdSAydSAxdSAiKTsKK30sICJBZnRlciBhbiB1bmRv
IGNhbGwsIHVuZG9NYW5hZ2VyIHVuYXBwbGllcyB0aGUgdGhyZWUgdHJhbnNhY3Rpb25zIGluIHRo
ZSBjb3JyZWN0IG9yZGVyLiIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIHVuZG9NYW5hZ2Vy
LnJlZG8oKTsKKyAgICBhc3NlcnRfdHJ1ZShlZGl0LmlubmVySFRNTCA9PSAiMWUgMmUgM2UgM3Ug
MnUgMXUgMXIgMnIgM3IgIik7Cit9LCAiQWZ0ZXIgYSByZWRvIGNhbGwsIHVuZG9NYW5hZ2VyIHJl
YXBwbGllcyB0aGUgdGhyZWUgdHJhbnNhY3Rpb25zIGluIHRoZSBjb3JyZWN0IG9yZGVyLiIpOwor
CitlZGl0LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvbWFuYWdlci91bmRvbWFuYWdlci11
bmRvLXJlZG8tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcv
dW5kb21hbmFnZXIvdW5kb21hbmFnZXItdW5kby1yZWRvLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIvdW5kb21hbmFnZXItdW5kby1y
ZWRvLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMiBAQAorVGhpcyB0ZXN0
cyBVbmRvTWFuYWdlcidzIHVuZG8oKSwgcmVkbygpLCBsZW5ndGgsIGFuZCBwb3NpdGlvbi4KKwor
UEFTUyBkb2N1bWVudCBoYXMgcHJvcGVydHkgdW5kb01hbmFnZXIuIAorUEFTUyB1bmRvTWFuYWdl
ciBoYXMgcHJvcGVydGllcyB1bmRvLCByZWRvLCBsZW5ndGgsIGFuZCBwb3NpdGlvbi4gCitQQVNT
IHVuZG9NYW5hZ2VyIGhhcyBjb3JyZWN0IGluaXRpYWwgdmFsdWVzIGZvciBsZW5ndGggKDApIGFu
ZCBwb3NpdGlvbiAoMCkuIAorUEFTUyBBZnRlciBpbnNlcnRpbmcgdGV4dCAndGVzdCcgaW4gYSBE
SVYsIHVuZG9NYW5hZ2VyJ3MgbGVuZ3RoIGlzIDEgYW5kIHBvc2l0aW9uIGlzIDAuIAorUEFTUyBB
ZnRlciBib2xkaW5nIHRoZSB0ZXh0LCB1bmRvTWFuYWdlcidzIGxlbmd0aCBpcyAyIGFuZCBwb3Np
dGlvbiBpcyAwLCBhbmQgdGhlIHJlc3VsdCBpcyBhIGJvbGQgJ3Rlc3QnLiAKK1BBU1MgQWZ0ZXIg
dW5kb2luZywgdW5kb01hbmFnZXIncyBsZW5ndGggaXMgMiBhbmQgcG9zaXRpb24gaXMgMSwgYW5k
IHRoZSByZXN1bHQgaXMgYSBwbGFpbiAndGVzdCcuIAorUEFTUyBBZnRlciB1bmRvaW5nLCB1bmRv
TWFuYWdlcidzIGxlbmd0aCBpcyAyIGFuZCBwb3NpdGlvbiBpcyAyLCBhbmQgdGhlIHJlc3VsdCBp
cyBlbXB0eS4gCitQQVNTIEFmdGVyIHJlZG9pbmcsIHVuZG9NYW5hZ2VyJ3MgbGVuZ3RoIGlzIDIg
YW5kIHBvc2l0aW9uIGlzIDEsIGFuZCB0aGUgcmVzdWx0IGlzIGEgcGxhaW4gJ3Rlc3QnLiAKK1BB
U1MgQWZ0ZXIgcmVkb2luZywgdW5kb01hbmFnZXIncyBsZW5ndGggaXMgMiBhbmQgcG9zaXRpb24g
aXMgMCwgYW5kIHRoZSByZXN1bHQgaXMgYSBib2xkICd0ZXN0Jy4gCisKSW5kZXg6IExheW91dFRl
c3RzL2VkaXRpbmcvdW5kb21hbmFnZXIvdW5kb21hbmFnZXItdW5kby1yZWRvLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvbWFuYWdlci91bmRvbWFuYWdlci11bmRv
LXJlZG8uaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFn
ZXIvdW5kb21hbmFnZXItdW5kby1yZWRvLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODYg
QEAKKzwhZG9jdHlwZSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5VbmRvTWFuYWdlciBo
YXMgdW5kbygpIGFuZCByZWRvKCkgdGhhdCB3b3JrPC90aXRsZT4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KK1RoaXMgdGVzdHMgVW5kb01hbmFnZXIncyB1bmRvKCksIHJlZG8oKSwgbGVuZ3RoLCBhbmQg
cG9zaXRpb24uCisKKzxkaXYgaWQ9ImVkaXQiIGNvbnRlbnRFZGl0YWJsZT0idHJ1ZSI+PC9kaXY+
Cis8c2NyaXB0PgorCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGFzc2VydF9vd25fcHJvcGVydHko
ZG9jdW1lbnQsICJ1bmRvTWFuYWdlciIpOworfSwgImRvY3VtZW50IGhhcyBwcm9wZXJ0eSB1bmRv
TWFuYWdlci4iKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICBhc3NlcnRfaWRsX2F0dHJpYnV0
ZShkb2N1bWVudC51bmRvTWFuYWdlciwgInVuZG8iKTsKKyAgICBhc3NlcnRfaWRsX2F0dHJpYnV0
ZShkb2N1bWVudC51bmRvTWFuYWdlciwgInJlZG8iKTsKKyAgICBhc3NlcnRfb3duX3Byb3BlcnR5
KGRvY3VtZW50LnVuZG9NYW5hZ2VyLCAibGVuZ3RoIik7CisgICAgYXNzZXJ0X293bl9wcm9wZXJ0
eShkb2N1bWVudC51bmRvTWFuYWdlciwgInBvc2l0aW9uIik7Cit9LCAidW5kb01hbmFnZXIgaGFz
IHByb3BlcnRpZXMgdW5kbywgcmVkbywgbGVuZ3RoLCBhbmQgcG9zaXRpb24uIik7CisKK3Rlc3Qo
ZnVuY3Rpb24oKSB7CisgICAgYXNzZXJ0X3RydWUoZG9jdW1lbnQudW5kb01hbmFnZXIubGVuZ3Ro
ID09IDApOworICAgIGFzc2VydF90cnVlKGRvY3VtZW50LnVuZG9NYW5hZ2VyLnBvc2l0aW9uID09
IDApOworfSwgInVuZG9NYW5hZ2VyIGhhcyBjb3JyZWN0IGluaXRpYWwgdmFsdWVzIGZvciBsZW5n
dGggKDApIGFuZCBwb3NpdGlvbiAoMCkuIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgdmFy
IGVkaXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZWRpdCIpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5zZXRQb3NpdGlvbihlZGl0LCAwKTsKKyAgICBkb2N1bWVudC5leGVjQ29tbWFu
ZCgiSW5zZXJ0SFRNTCIsIGZhbHNlLCAidGVzdCIpOworICAgIAorICAgIGFzc2VydF90cnVlKGRv
Y3VtZW50LnVuZG9NYW5hZ2VyLmxlbmd0aCA9PSAxKTsKKyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVu
dC51bmRvTWFuYWdlci5wb3NpdGlvbiA9PSAwKTsKK30sICJBZnRlciBpbnNlcnRpbmcgdGV4dCAn
dGVzdCcgaW4gYSBESVYsIHVuZG9NYW5hZ2VyJ3MgbGVuZ3RoIGlzIDEgYW5kIHBvc2l0aW9uIGlz
IDAuIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZWxlY3ROb2RlQ29udGVudHMoZWRpdCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgICBkb2N1bWVudC5leGVjQ29t
bWFuZCgiQm9sZCIsIGZhbHNlLCBudWxsKTsKKyAgICAKKyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVu
dC51bmRvTWFuYWdlci5sZW5ndGggPT0gMik7CisgICAgYXNzZXJ0X3RydWUoZG9jdW1lbnQudW5k
b01hbmFnZXIucG9zaXRpb24gPT0gMCk7CisgICAgYXNzZXJ0X3RydWUoZWRpdC5pbm5lckhUTUwg
PT0gIjxiPnRlc3Q8L2I+Iik7Cit9LCAiQWZ0ZXIgYm9sZGluZyB0aGUgdGV4dCwgdW5kb01hbmFn
ZXIncyBsZW5ndGggaXMgMiBhbmQgcG9zaXRpb24gaXMgMCwgYW5kIHRoZSByZXN1bHQgaXMgYSBi
b2xkICd0ZXN0Jy4iKTsKKyAgICAKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgZG9jdW1lbnQudW5k
b01hbmFnZXIudW5kbygpOworICAgIAorICAgIGFzc2VydF90cnVlKGRvY3VtZW50LnVuZG9NYW5h
Z2VyLmxlbmd0aCA9PSAyKTsKKyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVudC51bmRvTWFuYWdlci5w
b3NpdGlvbiA9PSAxKTsKKyAgICBhc3NlcnRfdHJ1ZShlZGl0LmlubmVySFRNTCA9PSAidGVzdCIp
OworfSwgIkFmdGVyIHVuZG9pbmcsIHVuZG9NYW5hZ2VyJ3MgbGVuZ3RoIGlzIDIgYW5kIHBvc2l0
aW9uIGlzIDEsIGFuZCB0aGUgcmVzdWx0IGlzIGEgcGxhaW4gJ3Rlc3QnLiIpOworICAgIAordGVz
dChmdW5jdGlvbigpIHsKKyAgICBkb2N1bWVudC51bmRvTWFuYWdlci51bmRvKCk7CisgICAgCisg
ICAgYXNzZXJ0X3RydWUoZG9jdW1lbnQudW5kb01hbmFnZXIubGVuZ3RoID09IDIpOworICAgIGFz
c2VydF90cnVlKGRvY3VtZW50LnVuZG9NYW5hZ2VyLnBvc2l0aW9uID09IDIpOworICAgIGFzc2Vy
dF90cnVlKGVkaXQuaW5uZXJIVE1MID09ICIiKTsKK30sICJBZnRlciB1bmRvaW5nLCB1bmRvTWFu
YWdlcidzIGxlbmd0aCBpcyAyIGFuZCBwb3NpdGlvbiBpcyAyLCBhbmQgdGhlIHJlc3VsdCBpcyBl
bXB0eS4iKTsKKyAgICAKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgZG9jdW1lbnQudW5kb01hbmFn
ZXIucmVkbygpOworICAgIAorICAgIGFzc2VydF90cnVlKGRvY3VtZW50LnVuZG9NYW5hZ2VyLmxl
bmd0aCA9PSAyKTsKKyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVudC51bmRvTWFuYWdlci5wb3NpdGlv
biA9PSAxKTsKKyAgICBhc3NlcnRfdHJ1ZShlZGl0LmlubmVySFRNTCA9PSAidGVzdCIpOworfSwg
IkFmdGVyIHJlZG9pbmcsIHVuZG9NYW5hZ2VyJ3MgbGVuZ3RoIGlzIDIgYW5kIHBvc2l0aW9uIGlz
IDEsIGFuZCB0aGUgcmVzdWx0IGlzIGEgcGxhaW4gJ3Rlc3QnLiIpOworICAgIAordGVzdChmdW5j
dGlvbigpIHsKKyAgICBkb2N1bWVudC51bmRvTWFuYWdlci5yZWRvKCk7CisgICAgCisgICAgYXNz
ZXJ0X3RydWUoZG9jdW1lbnQudW5kb01hbmFnZXIubGVuZ3RoID09IDIpOworICAgIGFzc2VydF90
cnVlKGRvY3VtZW50LnVuZG9NYW5hZ2VyLnBvc2l0aW9uID09IDApOworICAgIGFzc2VydF90cnVl
KGVkaXQuaW5uZXJIVE1MID09ICI8Yj50ZXN0PC9iPiIpOworfSwgIkFmdGVyIHJlZG9pbmcsIHVu
ZG9NYW5hZ2VyJ3MgbGVuZ3RoIGlzIDIgYW5kIHBvc2l0aW9uIGlzIDAsIGFuZCB0aGUgcmVzdWx0
IGlzIGEgYm9sZCAndGVzdCcuIik7CisKK2VkaXQuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKKwor
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153589</attachid>
            <date>2012-07-20 13:46:02 -0700</date>
            <delta_ts>2012-08-17 21:35:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91812-20120720134749.patch</filename>
            <type>text/plain</type>
            <size>129368</size>
            <attacher name="Sukolsak Sakshuwong">sukolsak</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMzI1NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwMCBAQAorMjAxMi0wNy0yMCAgU3Vrb2xz
YWsgU2Frc2h1d29uZyAgPHN1a29sc2FrQGdvb2dsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50
IFVuZG9NYW5hZ2VyJ3MgYXV0b21hdGljIERPTSB0cmFuc2FjdGlvbnMuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTgxMgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW5jbHVkZXMgY2hh
bmdlcyBmcm9tIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTcyMgor
ICAgICAgICB3aGljaCBoYXZlIG5vdCB5ZXQgYmVlbiBhY2NlcHRlZC4KKworICAgICAgICBUZXN0
OiBlZGl0aW5nL3VuZG9tYW5hZ2VyL3VuZG9tYW5hZ2VyLXRyYW5zYWN0LWF1dG9tYXRpYy5odG1s
CisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0
LmFtOgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogVXNlSlNDLmNtYWtlOgorICAg
ICAgICAqIFVzZVY4LmNtYWtlOgorICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAq
IFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoK
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTVRyYW5zYWN0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTRE9NVHJhbnNhY3Rpb246OkpTRE9NVHJhbnNhY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6SlNET01UcmFuc2FjdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTRE9NVHJhbnNhY3Rpb246OnZpc2l0RGljdGlvbmFyeSk6CisgICAgICAgIChXZWJDb3JlOjpK
U0RPTVRyYW5zYWN0aW9uOjpleGVjU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01UcmFu
c2FjdGlvbjo6Z2V0UHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01UcmFuc2FjdGlv
bjo6Y2FsbFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NVHJhbnNhY3Rpb246OmV4
ZWN1dGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01UcmFuc2FjdGlvbjo6ZXhlY3V0ZUF1dG9t
YXRpYyk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVRyYW5zYWN0aW9uOjp1bmRvKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTRE9NVHJhbnNhY3Rpb246OnJlZG8pOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTRE9NVHJhbnNhY3Rpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKEpTRE9NVHJhbnNhY3Rpb24pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTVW5kb01hbmFn
ZXJDdXN0b20uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6dmlzaXRUcmFuc2FjdGlvbnNJblN0YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVW5kb01h
bmFnZXI6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6SlNVbmRvTWFuYWdlcjo6
dHJhbnNhY3QpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NVHJhbnNhY3Rpb24uY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6d2Vha0RpY3Rpb25h
cnlDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVRyYW5zYWN0aW9uOjpWOERPTVRy
YW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NVHJhbnNhY3Rpb246OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpWOERPTVRyYW5zYWN0aW9uOjp+VjhET01UcmFuc2FjdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpWOERPTVRyYW5zYWN0aW9uOjpkaXNwb3NlRGljdGlvbmFyeU9i
amVjdCk6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVRyYW5zYWN0aW9uOjpleGVjdXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlY4RE9NVHJhbnNhY3Rpb246OmV4ZWN1dGVBdXRvbWF0aWMpOgorICAg
ICAgICAoV2ViQ29yZTo6VjhET01UcmFuc2FjdGlvbjo6dW5kbyk6CisgICAgICAgIChXZWJDb3Jl
OjpWOERPTVRyYW5zYWN0aW9uOjpyZWRvKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NVHJhbnNh
Y3Rpb246OmNhbGxQcm9wZXJ0eSk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhET01UcmFuc2Fj
dGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoVjhET01UcmFuc2Fj
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVRyYW5zYWN0aW9uOjpkaWN0aW9uYXJ5SlNP
YmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFVuZG9NYW5hZ2VyQ3VzdG9t
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OnZpc2l0
VHJhbnNhY3Rpb25zSW5TdGFjayk6CisgICAgICAgIChXZWJDb3JlOjpWOFVuZG9NYW5hZ2VyOjp2
aXNpdERPTVdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6VjhVbmRvTWFuYWdlcjo6dHJhbnNh
Y3RDYWxsYmFjayk6CisgICAgICAgICogY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246
OnNldENzc1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6UHJvcGVydHlTZXRDU1NTdHlsZURlY2xh
cmF0aW9uOjpzZXRQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eVNldENTU1N0
eWxlRGVjbGFyYXRpb246OnJlbW92ZVByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlByb3Bl
cnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6c2V0UHJvcGVydHlJbnRlcm5hbCk6CisgICAgICAg
ICogZG9tL0NoYXJhY3RlckRhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hhcmFjdGVyRGF0
YTo6c2V0RGF0YUFuZFVwZGF0ZSk6CisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6d2lsbFJlbW92ZUNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6Ondp
bGxSZW1vdmVDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjp1cGRhdGVUcmVlQWZ0ZXJJbnNl
cnRpb24pOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnQ6OndpbGxNb2RpZnlBdHRyaWJ1dGUpOgorICAgICAgICAqIGVkaXRpbmcvQ29tcG9zaXRl
RWRpdENvbW1hbmQuaDoKKyAgICAgICAgKiBlZGl0aW5nL0RPTVRyYW5zYWN0aW9uLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVRyYW5zYWN0aW9u
OjpET01UcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpET01UcmFuc2FjdGlvbjo6YXBw
bHkpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVHJhbnNhY3Rpb246OnVuYXBwbHkpOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NVHJhbnNhY3Rpb246OnJlYXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6
RE9NVHJhbnNhY3Rpb246OmlzUmVjb3JkaW5nQXV0b21hdGljVHJhbnNhY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NVHJhbnNhY3Rpb246OmFkZERPTVRyYW5zYWN0aW9uU3RlcCk6CisgICAg
ICAgICogZWRpdGluZy9ET01UcmFuc2FjdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoRE9NVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RE9NVHJhbnNh
Y3Rpb246On5ET01UcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpET01UcmFuc2FjdGlv
bjo6dW5kb01hbmFnZXIpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVHJhbnNhY3Rpb246OnNldFVu
ZG9NYW5hZ2VyKToKKyAgICAgICAgKiBlZGl0aW5nL0RPTVRyYW5zYWN0aW9uU3RlcC5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlSW5zZXJ0aW5n
RE9NVHJhbnNhY3Rpb25TdGVwOjpOb2RlSW5zZXJ0aW5nRE9NVHJhbnNhY3Rpb25TdGVwKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5vZGVJbnNlcnRpbmdET01UcmFuc2FjdGlvblN0ZXA6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpOb2RlSW5zZXJ0aW5nRE9NVHJhbnNhY3Rpb25TdGVwOjp1bmFw
cGx5KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVJbnNlcnRpbmdET01UcmFuc2FjdGlvblN0ZXA6
OnJlYXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbW92aW5nRE9NVHJhbnNhY3Rpb25T
dGVwOjpOb2RlUmVtb3ZpbmdET01UcmFuc2FjdGlvblN0ZXApOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZVJlbW92aW5nRE9NVHJhbnNhY3Rpb25TdGVwOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Tm9kZVJlbW92aW5nRE9NVHJhbnNhY3Rpb25TdGVwOjp1bmFwcGx5KToKKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGVSZW1vdmluZ0RPTVRyYW5zYWN0aW9uU3RlcDo6cmVhcHBseSk6CisgICAgICAg
IChXZWJDb3JlOjpEYXRhUmVwbGFjaW5nRE9NVHJhbnNhY3Rpb25TdGVwOjpEYXRhUmVwbGFjaW5n
RE9NVHJhbnNhY3Rpb25TdGVwKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFSZXBsYWNpbmdET01U
cmFuc2FjdGlvblN0ZXA6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhUmVwbGFjaW5n
RE9NVHJhbnNhY3Rpb25TdGVwOjp1bmFwcGx5KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFSZXBs
YWNpbmdET01UcmFuc2FjdGlvblN0ZXA6OnJlYXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6QXR0
ckNoYW5naW5nRE9NVHJhbnNhY3Rpb25TdGVwOjpBdHRyQ2hhbmdpbmdET01UcmFuc2FjdGlvblN0
ZXApOgorICAgICAgICAoV2ViQ29yZTo6QXR0ckNoYW5naW5nRE9NVHJhbnNhY3Rpb25TdGVwOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXR0ckNoYW5naW5nRE9NVHJhbnNhY3Rpb25TdGVw
Ojp1bmFwcGx5KToKKyAgICAgICAgKFdlYkNvcmU6OkF0dHJDaGFuZ2luZ0RPTVRyYW5zYWN0aW9u
U3RlcDo6cmVhcHBseSk6CisgICAgICAgICogZWRpdGluZy9ET01UcmFuc2FjdGlvblN0ZXAuaDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKERPTVRyYW5zYWN0aW9uU3RlcCk6
CisgICAgICAgIChXZWJDb3JlOjpET01UcmFuc2FjdGlvblN0ZXA6On5ET01UcmFuc2FjdGlvblN0
ZXApOgorICAgICAgICAoTm9kZUluc2VydGluZ0RPTVRyYW5zYWN0aW9uU3RlcCk6CisgICAgICAg
IChOb2RlUmVtb3ZpbmdET01UcmFuc2FjdGlvblN0ZXApOgorICAgICAgICAoRGF0YVJlcGxhY2lu
Z0RPTVRyYW5zYWN0aW9uU3RlcCk6CisgICAgICAgIChBdHRyQ2hhbmdpbmdET01UcmFuc2FjdGlv
blN0ZXApOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkVkaXRvcjo6YXBwbGllZEVkaXRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjp1bmFw
cGxpZWRFZGl0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cmVhcHBsaWVkRWRpdGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmNhblVuZG8pOgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yOjp1bmRvKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Y2FuUmVkbyk6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJlZG8pOgorICAgICAgICAqIGVkaXRpbmcvVW5kb01h
bmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OlVuZG9NYW5hZ2VyKToK
KyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjp0cmFuc2FjdCk6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjp1bmRvKToKKyAgICAgICAgKFdl
YkNvcmU6OlVuZG9NYW5hZ2VyOjpyZWRvKToKKyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2Vy
OjpyZWdpc3RlclVuZG9TdGVwKToKKyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjpyZWdp
c3RlclJlZG9TdGVwKToKKyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjpjbGVhclVuZG8p
OgorICAgICAgICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OmNsZWFyUmVkbyk6CisgICAgICAgICog
ZWRpdGluZy9VbmRvTWFuYWdlci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpVbmRvTWFuYWdlcjo6dW5kb1Njb3BlSG9zdCk6CisgICAgICAgIChVbmRvTWFuYWdlcik6
CisgICAgICAgIChXZWJDb3JlOjpVbmRvTWFuYWdlcjo6bGVuZ3RoKToKKyAgICAgICAgKFdlYkNv
cmU6OlVuZG9NYW5hZ2VyOjpwb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpVbmRvTWFuYWdl
cjo6Y2FuVW5kbyk6CisgICAgICAgIChXZWJDb3JlOjpVbmRvTWFuYWdlcjo6Y2FuUmVkbyk6Cisg
ICAgICAgIChXZWJDb3JlOjpVbmRvTWFuYWdlcjo6dW5kb1N0YWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OlVuZG9NYW5hZ2VyOjpyZWRvU3RhY2spOgorICAgICAgICAqIGVkaXRpbmcvVW5kb01hbmFn
ZXIuaWRsOgorICAgICAgICAqIGVkaXRpbmcvVW5kb1N0ZXAuaDoKKyAgICAgICAgKFVuZG9TdGVw
KToKKworMjAxMi0wNy0yMCAgU3Vrb2xzYWsgU2Frc2h1d29uZyAgPHN1a29sc2FrQGdvb2dsZS5j
b20+CisKKyAgICAgICAgTmVlZCBhIHNob3J0IGRlc2NyaXB0aW9uIChPT1BTISkuCisgICAgICAg
IE5lZWQgdGhlIGJ1ZyBVUkwgKE9PUFMhKS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9mIHRoZSBjaGFuZ2Ug
c3VjaCBhcyBhcHByb2FjaCwgcmF0aW9uYWxlLiBQbGVhc2UgYWRkIHBlci1mdW5jdGlvbiBkZXNj
cmlwdGlvbnMgYmVsb3cgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMhKS4K
KworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3Qu
YW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBVc2VKU0MuY21ha2U6CisgICAg
ICAgICogVXNlVjguY21ha2U6CisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICog
V2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRE9NVHJhbnNhY3Rpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNET01UcmFuc2FjdGlvbjo6SlNET01UcmFuc2FjdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpKU0RPTVRyYW5zYWN0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
SlNET01UcmFuc2FjdGlvbjo6dmlzaXREaWN0aW9uYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkpT
RE9NVHJhbnNhY3Rpb246OmV4ZWNTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVRyYW5z
YWN0aW9uOjpnZXRQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVRyYW5zYWN0aW9u
OjpjYWxsUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01UcmFuc2FjdGlvbjo6ZXhl
Y3V0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVRyYW5zYWN0aW9uOjpleGVjdXRlQXV0b21h
dGljKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NVHJhbnNhY3Rpb246OnVuZG8pOgorICAgICAg
ICAoV2ViQ29yZTo6SlNET01UcmFuc2FjdGlvbjo6cmVkbyk6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNET01UcmFuc2FjdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoSlNET01UcmFuc2FjdGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNVbmRvTWFuYWdl
ckN1c3RvbS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
Ojp2aXNpdFRyYW5zYWN0aW9uc0luU3RhY2spOgorICAgICAgICAoV2ViQ29yZTo6SlNVbmRvTWFu
YWdlcjo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpKU1VuZG9NYW5hZ2VyOjp0
cmFuc2FjdCk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhET01UcmFuc2FjdGlvbi5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjp3ZWFrRGljdGlvbmFy
eUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NVHJhbnNhY3Rpb246OlY4RE9NVHJh
bnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6VjhET01UcmFuc2FjdGlvbjo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlY4RE9NVHJhbnNhY3Rpb246On5WOERPTVRyYW5zYWN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlY4RE9NVHJhbnNhY3Rpb246OmRpc3Bvc2VEaWN0aW9uYXJ5T2Jq
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NVHJhbnNhY3Rpb246OmV4ZWN1dGUpOgorICAg
ICAgICAoV2ViQ29yZTo6VjhET01UcmFuc2FjdGlvbjo6ZXhlY3V0ZUF1dG9tYXRpYyk6CisgICAg
ICAgIChXZWJDb3JlOjpWOERPTVRyYW5zYWN0aW9uOjp1bmRvKToKKyAgICAgICAgKFdlYkNvcmU6
OlY4RE9NVHJhbnNhY3Rpb246OnJlZG8pOgorICAgICAgICAoV2ViQ29yZTo6VjhET01UcmFuc2Fj
dGlvbjo6Y2FsbFByb3BlcnR5KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOERPTVRyYW5zYWN0
aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChWOERPTVRyYW5zYWN0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NVHJhbnNhY3Rpb246OmRpY3Rpb25hcnlKU09i
amVjdCk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4VW5kb01hbmFnZXJDdXN0b20u
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6dmlzaXRU
cmFuc2FjdGlvbnNJblN0YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VW5kb01hbmFnZXI6OnZp
c2l0RE9NV3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpWOFVuZG9NYW5hZ2VyOjp0cmFuc2Fj
dENhbGxiYWNrKToKKyAgICAgICAgKiBjc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6
c2V0Q3NzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFy
YXRpb246OnNldFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5U2V0Q1NTU3R5
bGVEZWNsYXJhdGlvbjo6cmVtb3ZlUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6UHJvcGVy
dHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpzZXRQcm9wZXJ0eUludGVybmFsKToKKyAgICAgICAg
KiBkb20vQ2hhcmFjdGVyRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaGFyYWN0ZXJEYXRh
OjpzZXREYXRhQW5kVXBkYXRlKToKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjp3aWxsUmVtb3ZlQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6d2ls
bFJlbW92ZUNoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZVRyZWVBZnRlckluc2Vy
dGlvbik6CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxl
bWVudDo6d2lsbE1vZGlmeUF0dHJpYnV0ZSk6CisgICAgICAgICogZWRpdGluZy9Db21wb3NpdGVF
ZGl0Q29tbWFuZC5oOgorICAgICAgICAqIGVkaXRpbmcvRE9NVHJhbnNhY3Rpb24uY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVHJhbnNhY3Rpb246
OkRPTVRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVRyYW5zYWN0aW9uOjphcHBs
eSk6CisgICAgICAgIChXZWJDb3JlOjpET01UcmFuc2FjdGlvbjo6dW5hcHBseSk6CisgICAgICAg
IChXZWJDb3JlOjpET01UcmFuc2FjdGlvbjo6cmVhcHBseSk6CisgICAgICAgIChXZWJDb3JlOjpE
T01UcmFuc2FjdGlvbjo6aXNSZWNvcmRpbmdBdXRvbWF0aWNUcmFuc2FjdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpET01UcmFuc2FjdGlvbjo6YWRkRE9NVHJhbnNhY3Rpb25TdGVwKToKKyAgICAg
ICAgKiBlZGl0aW5nL0RPTVRyYW5zYWN0aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChET01UcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpET01UcmFuc2Fj
dGlvbjo6fkRPTVRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVRyYW5zYWN0aW9u
Ojp1bmRvTWFuYWdlcik6CisgICAgICAgIChXZWJDb3JlOjpET01UcmFuc2FjdGlvbjo6c2V0VW5k
b01hbmFnZXIpOgorICAgICAgICAqIGVkaXRpbmcvRE9NVHJhbnNhY3Rpb25TdGVwLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVJbnNlcnRpbmdE
T01UcmFuc2FjdGlvblN0ZXA6Ok5vZGVJbnNlcnRpbmdET01UcmFuc2FjdGlvblN0ZXApOgorICAg
ICAgICAoV2ViQ29yZTo6Tm9kZUluc2VydGluZ0RPTVRyYW5zYWN0aW9uU3RlcDo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5vZGVJbnNlcnRpbmdET01UcmFuc2FjdGlvblN0ZXA6OnVuYXBw
bHkpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZUluc2VydGluZ0RPTVRyYW5zYWN0aW9uU3RlcDo6
cmVhcHBseSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVtb3ZpbmdET01UcmFuc2FjdGlvblN0
ZXA6Ok5vZGVSZW1vdmluZ0RPTVRyYW5zYWN0aW9uU3RlcCk6CisgICAgICAgIChXZWJDb3JlOjpO
b2RlUmVtb3ZpbmdET01UcmFuc2FjdGlvblN0ZXA6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpOb2RlUmVtb3ZpbmdET01UcmFuc2FjdGlvblN0ZXA6OnVuYXBwbHkpOgorICAgICAgICAoV2Vi
Q29yZTo6Tm9kZVJlbW92aW5nRE9NVHJhbnNhY3Rpb25TdGVwOjpyZWFwcGx5KToKKyAgICAgICAg
KFdlYkNvcmU6OkRhdGFSZXBsYWNpbmdET01UcmFuc2FjdGlvblN0ZXA6OkRhdGFSZXBsYWNpbmdE
T01UcmFuc2FjdGlvblN0ZXApOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVJlcGxhY2luZ0RPTVRy
YW5zYWN0aW9uU3RlcDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFSZXBsYWNpbmdE
T01UcmFuc2FjdGlvblN0ZXA6OnVuYXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVJlcGxh
Y2luZ0RPTVRyYW5zYWN0aW9uU3RlcDo6cmVhcHBseSk6CisgICAgICAgIChXZWJDb3JlOjpBdHRy
Q2hhbmdpbmdET01UcmFuc2FjdGlvblN0ZXA6OkF0dHJDaGFuZ2luZ0RPTVRyYW5zYWN0aW9uU3Rl
cCk6CisgICAgICAgIChXZWJDb3JlOjpBdHRyQ2hhbmdpbmdET01UcmFuc2FjdGlvblN0ZXA6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBdHRyQ2hhbmdpbmdET01UcmFuc2FjdGlvblN0ZXA6
OnVuYXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6QXR0ckNoYW5naW5nRE9NVHJhbnNhY3Rpb25T
dGVwOjpyZWFwcGx5KToKKyAgICAgICAgKiBlZGl0aW5nL0RPTVRyYW5zYWN0aW9uU3RlcC5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoRE9NVHJhbnNhY3Rpb25TdGVwKToK
KyAgICAgICAgKFdlYkNvcmU6OkRPTVRyYW5zYWN0aW9uU3RlcDo6fkRPTVRyYW5zYWN0aW9uU3Rl
cCk6CisgICAgICAgIChOb2RlSW5zZXJ0aW5nRE9NVHJhbnNhY3Rpb25TdGVwKToKKyAgICAgICAg
KE5vZGVSZW1vdmluZ0RPTVRyYW5zYWN0aW9uU3RlcCk6CisgICAgICAgIChEYXRhUmVwbGFjaW5n
RE9NVHJhbnNhY3Rpb25TdGVwKToKKyAgICAgICAgKEF0dHJDaGFuZ2luZ0RPTVRyYW5zYWN0aW9u
U3RlcCk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RWRpdG9yOjphcHBsaWVkRWRpdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnVuYXBw
bGllZEVkaXRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpyZWFwcGxpZWRFZGl0aW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Y2FuVW5kbyk6CisgICAgICAgIChXZWJDb3Jl
OjpFZGl0b3I6OnVuZG8pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpjYW5SZWRvKToKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cmVkbyk6CisgICAgICAgICogZWRpdGluZy9VbmRvTWFu
YWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpVbmRvTWFuYWdlcjo6VW5kb01hbmFnZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OnRyYW5zYWN0KToKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OnVuZG8pOgorICAgICAgICAoV2Vi
Q29yZTo6VW5kb01hbmFnZXI6OnJlZG8pOgorICAgICAgICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6
OnJlZ2lzdGVyVW5kb1N0ZXApOgorICAgICAgICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OnJlZ2lz
dGVyUmVkb1N0ZXApOgorICAgICAgICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OmNsZWFyVW5kbyk6
CisgICAgICAgIChXZWJDb3JlOjpVbmRvTWFuYWdlcjo6Y2xlYXJSZWRvKToKKyAgICAgICAgKiBl
ZGl0aW5nL1VuZG9NYW5hZ2VyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OlVuZG9NYW5hZ2VyOjp1bmRvU2NvcGVIb3N0KToKKyAgICAgICAgKFVuZG9NYW5hZ2VyKToK
KyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjpsZW5ndGgpOgorICAgICAgICAoV2ViQ29y
ZTo6VW5kb01hbmFnZXI6OnBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2Vy
OjpjYW5VbmRvKToKKyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjpjYW5SZWRvKToKKyAg
ICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjp1bmRvU3RhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6VW5kb01hbmFnZXI6OnJlZG9TdGFjayk6CisgICAgICAgICogZWRpdGluZy9VbmRvTWFuYWdl
ci5pZGw6CisgICAgICAgICogZWRpdGluZy9VbmRvU3RlcC5oOgorICAgICAgICAoVW5kb1N0ZXAp
OgorCiAyMDEyLTA3LTIwICBIYW4gU2hlbiAgPHNoZW5oYW5AZ29vZ2xlLmNvbT4KIAogICAgICAg
ICBbQ2hyb21pdW1dIENvbXBpbGF0aW9uIGZhaWxzIHVuZGVyIGdjYyA0LjcKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMjMyNTUpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTE4Nyw2ICsxMTg3LDggQEAgU0VUKFdlYkNvcmVf
U09VUkNFUwogICAgIGVkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAKICAgICBlZGl0
aW5nL0RpY3RhdGlvbkFsdGVybmF0aXZlLmNwcAogICAgIGVkaXRpbmcvRGljdGF0aW9uQ29tbWFu
ZC5jcHAKKyAgICBlZGl0aW5nL0RPTVRyYW5zYWN0aW9uLmNwcAorICAgIGVkaXRpbmcvRE9NVHJh
bnNhY3Rpb25TdGVwLmNwcAogICAgIGVkaXRpbmcvRWRpdENvbW1hbmQuY3BwCiAgICAgZWRpdGlu
Zy9FZGl0aW5nU3R5bGUuY3BwCiAgICAgZWRpdGluZy9FZGl0b3IuY3BwCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDEyMzI1NSkKKysrIFNvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTE0MDMsNiArMTQwMyw4IEBA
IHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01T
dHJpbmdNYXBDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVN0
cmluZ01hcEN1c3RvbS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVRva2Vu
TGlzdEN1c3RvbS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NVHJhbnNh
Y3Rpb24uY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVRyYW5zYWN0aW9u
LmggXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAgXApAQCAtMTUyNCw2ICsx
NTI2LDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1VpbnQzMkFycmF5Q3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNVaW50OEFycmF5Q3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNV
aW50OENsYW1wZWRBcnJheUN1c3RvbS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTVW5kb01hbmFnZXJDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1dlYktpdEFuaW1hdGlvbkN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTV2ViS2l0QW5pbWF0aW9uTGlzdEN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlQ3VzdG9tLmNwcCBcCkBAIC0yMTE4LDYgKzIx
MjEsMTAgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Rp
Y3RhdGlvbkFsdGVybmF0aXZlLmggXAogCVNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGljdGF0aW9u
Q29tbWFuZC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGljdGF0aW9uQ29tbWFuZC5o
IFwKKwlTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RPTVRyYW5zYWN0aW9uLmNwcCBcCisJU291cmNl
L1dlYkNvcmUvZWRpdGluZy9ET01UcmFuc2FjdGlvbi5oIFwKKwlTb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0RPTVRyYW5zYWN0aW9uU3RlcC5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRE9N
VHJhbnNhY3Rpb25TdGVwLmggXAogCVNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdEFjdGlvbi5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRDb21tYW5kLmNwcCBcCiAJU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0Q29tbWFuZC5oIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1Rhcmdl
dC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQkocmV2aXNpb24g
MTIzMjU1KQorKysgU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQkod29ya2luZyBjb3B5KQpAQCAt
MTA5LDYgKzEwOSw3IEBAIFNPVVJDRVMgKz0gXAogICAgICBiaW5kaW5ncy9qcy9KU0RPTVN0cmlu
Z0xpc3RDdXN0b20uY3BwIFwKICAgICAgYmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20u
Y3BwIFwKICAgICAgYmluZGluZ3MvanMvSlNET01Ub2tlbkxpc3RDdXN0b20uY3BwIFwKKyAgICAg
YmluZGluZ3MvanMvSlNET01UcmFuc2FjdGlvbi5jcHAgXAogICAgICBiaW5kaW5ncy9qcy9KU0RP
TVdpbmRvd0Jhc2UuY3BwIFwKICAgICAgYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3Bw
IFwKICAgICAgYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5jcHAgXApAQCAtMTkxLDYgKzE5
Miw3IEBAIFNPVVJDRVMgKz0gXAogICAgICBiaW5kaW5ncy9qcy9KU1VpbnQzMkFycmF5Q3VzdG9t
LmNwcCBcCiAgICAgIGJpbmRpbmdzL2pzL0pTVWludDhBcnJheUN1c3RvbS5jcHAgXAogICAgICBi
aW5kaW5ncy9qcy9KU1VpbnQ4Q2xhbXBlZEFycmF5Q3VzdG9tLmNwcCBcCisgICAgIGJpbmRpbmdz
L2pzL0pTVW5kb01hbmFnZXJDdXN0b20uY3BwIFwKICAgICAgYmluZGluZ3MvanMvSlNXZWJLaXRB
bmltYXRpb25DdXN0b20uY3BwIFwKICAgICAgYmluZGluZ3MvanMvSlNXZWJLaXRBbmltYXRpb25M
aXN0Q3VzdG9tLmNwcCBcCiAgICAgIGJpbmRpbmdzL2pzL0pTV2ViS2l0Q1NTS2V5ZnJhbWVSdWxl
Q3VzdG9tLmNwcCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlCShyZXZpc2lvbiAxMjMyNTUpCisrKyBT
b3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTI5NSw2ICsyOTUs
MTMgQEAgSUYgKEVOQUJMRV9XRUJfSU5URU5UUykKICAgICApCiBFTkRJRiAoKQogCitJRiAoRU5B
QkxFX1VORE9fTUFOQUdFUikKKyAgICBMSVNUIChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCisgICAg
ICAgIGJpbmRpbmdzL2pzL0pTRE9NVHJhbnNhY3Rpb24uY3BwCisgICAgICAgIGJpbmRpbmdzL2pz
L0pTVW5kb01hbmFnZXJDdXN0b20uY3BwCisgICAgKQorRU5ESUYgKCkKKwogTElTVChBUFBFTkQg
U0NSSVBUU19CSU5ESU5HUwogICAgICR7V0VCQ09SRV9ESVJ9L2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvci5wbQogKQpJbmRleDogU291cmNlL1dlYkNvcmUvVXNlVjguY21ha2UKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvVXNlVjguY21ha2UJKHJldmlzaW9uIDEyMzI1NSkKKysr
IFNvdXJjZS9XZWJDb3JlL1VzZVY4LmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw3
IEBAIExJU1QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIGJpbmRpbmdzL3Y4L1Y4QmluZGlu
Zy5jcHAKICAgICBiaW5kaW5ncy92OC9WOENvbGxlY3Rpb24uY3BwCiAgICAgYmluZGluZ3Mvdjgv
VjhET01NYXAuY3BwCisgICAgYmluZGluZ3MvdjgvVjhET01UcmFuc2FjdGlvbi5jcHAKICAgICBi
aW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcAogICAgIGJpbmRpbmdzL3Y4L1Y4RE9NV3Jh
cHBlci5jcHAKICAgICBiaW5kaW5ncy92OC9WOEV2ZW50TGlzdGVuZXIuY3BwCkBAIC0xNTAsNiAr
MTUxLDcgQEAgTElTVChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4VWludDE2QXJyYXlDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4VWlu
dDMyQXJyYXlDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4VWludDhBcnJheUN1
c3RvbS5jcHAKKyAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhVbmRvTWFuYWdlckN1c3RvbS5jcHAK
ICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3Bw
CiAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViS2l0QW5pbWF0aW9uQ3VzdG9tLmNwcAogICAg
IGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYktpdFBvaW50Q29uc3RydWN0b3IuY3BwCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNpb24gMTIzMjU1KQorKysgU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTI1NTksMyArMjU1OSw5IEBAIF9fWk43V2Vi
Q29yZTI3QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGUKIF9fWk43V2ViQ29yZTI0VGV4dEFsdGVy
bmF0aXZlV2l0aFJhbmdlQzFFUDE4TlNUZXh0QWx0ZXJuYXRpdmVzOF9OU1JhbmdlCiBfX1pON1dl
YkNvcmUzMmNvbGxlY3REaWN0YXRpb25UZXh0QWx0ZXJuYXRpdmVzRVAxOE5TQXR0cmlidXRlZFN0
cmluZ1JOM1dURjZWZWN0b3JJTlNfMjRUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2VFTG0wRUVFCiAj
ZW5kaWYKKworI2lmIEVOQUJMRShVTkRPX01BTkFHRVIpCitfX1pON1dlYkNvcmU4RG9jdW1lbnQx
MXVuZG9NYW5hZ2VyRXYKK19fWk43V2ViQ29yZTExVW5kb01hbmFnZXI0cmVkb0V2CitfX1pON1dl
YkNvcmUxMVVuZG9NYW5hZ2VyNHVuZG9FdgorI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCShy
ZXZpc2lvbiAxMjMyNTUpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcg
Y29weSkKQEAgLTE5NzAsNiArMTk3MCw4IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNE
aXJlY3RvcnlFbnRyeUN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTRGly
ZWN0b3J5RW50cnlTeW5jQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNE
b2N1bWVudEN1c3RvbS5jcHAnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTRE9NVHJhbnNh
Y3Rpb24uY3BwJywKKyAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0RPTVRyYW5zYWN0aW9uLmgn
LAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTRWxlbWVudEN1c3RvbS5jcHAnLAogICAgICAg
ICAgICAgJ2JpbmRpbmdzL2pzL0pTRW50cnlDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5k
aW5ncy9qcy9KU0VudHJ5U3luY0N1c3RvbS5jcHAnLApAQCAtMjA3NCw2ICsyMDc2LDcgQEAKICAg
ICAgICAgICAgICdiaW5kaW5ncy9qcy9KU1VpbnQxNkFycmF5Q3VzdG9tLmNwcCcsCiAgICAgICAg
ICAgICAnYmluZGluZ3MvanMvSlNVaW50MzJBcnJheUN1c3RvbS5jcHAnLAogICAgICAgICAgICAg
J2JpbmRpbmdzL2pzL0pTVWludDhBcnJheUN1c3RvbS5jcHAnLAorICAgICAgICAgICAgJ2JpbmRp
bmdzL2pzL0pTVW5kb01hbmFnZXJDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9q
cy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRp
bmdzL2pzL0pTV2ViS2l0QW5pbWF0aW9uQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGlu
Z3MvanMvSlNXZWJLaXRBbmltYXRpb25MaXN0Q3VzdG9tLmNwcCcsCkBAIC0yMjI4LDYgKzIyMzEs
OCBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4Q29sbGVjdGlvbi5oJywKICAgICAgICAg
ICAgICdiaW5kaW5ncy92OC9WOERPTU1hcC5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4
L1Y4RE9NTWFwLmgnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4RE9NVHJhbnNhY3Rpb24u
Y3BwJywKKyAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOERPTVRyYW5zYWN0aW9uLmgnLAogICAg
ICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwJywKICAgICAgICAgICAg
ICdiaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdz
L3Y4L1Y4RE9NV3JhcHBlci5jcHAnLApAQCAtMjM3NSw2ICsyMzgwLDcgQEAKICAgICAgICAgICAg
ICdiaW5kaW5ncy92OC9jdXN0b20vVjhVaW50MzJBcnJheUN1c3RvbS5jcHAnLAogICAgICAgICAg
ICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFVpbnQ4QXJyYXlDdXN0b20uY3BwJywKICAgICAgICAg
ICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhVaW50OENsYW1wZWRBcnJheUN1c3RvbS5jcHAnLAor
ICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFVuZG9NYW5hZ2VyQ3VzdG9tLmNwcCcs
CiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xSZW5kZXJpbmdDb250ZXh0
Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViS2l0QW5p
bWF0aW9uQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2Vi
S2l0UG9pbnRDb25zdHJ1Y3Rvci5jcHAnLApAQCAtMjYyNyw2ICsyNjMzLDEwIEBACiAgICAgICAg
ICAgICAnZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcCcsCiAgICAgICAgICAgICAn
ZWRpdGluZy9EaWN0YXRpb25BbHRlcm5hdGl2ZS5jcHAnLAogICAgICAgICAgICAgJ2VkaXRpbmcv
RGljdGF0aW9uQ29tbWFuZC5jcHAnLAorICAgICAgICAgICAgJ2VkaXRpbmcvRE9NVHJhbnNhY3Rp
b24uY3BwJywKKyAgICAgICAgICAgICdlZGl0aW5nL0RPTVRyYW5zYWN0aW9uLmgnLAorICAgICAg
ICAgICAgJ2VkaXRpbmcvRE9NVHJhbnNhY3Rpb25TdGVwLmNwcCcsCisgICAgICAgICAgICAnZWRp
dGluZy9ET01UcmFuc2FjdGlvblN0ZXAuaCcsCiAgICAgICAgICAgICAnZWRpdGluZy9FZGl0Q29t
bWFuZC5jcHAnLAogICAgICAgICAgICAgJ2VkaXRpbmcvRWRpdGluZ0FsbEluT25lLmNwcCcsCiAg
ICAgICAgICAgICAnZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwJywKQEAgLTI2OTQsNiArMjcwNCw4
IEBACiAgICAgICAgICAgICAnZWRpdGluZy9UZXh0SW5zZXJ0aW9uQmFzZUNvbW1hbmQuaCcsCiAg
ICAgICAgICAgICAnZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwJywKICAgICAgICAgICAgICdlZGl0
aW5nL1R5cGluZ0NvbW1hbmQuY3BwJywKKyAgICAgICAgICAgICdlZGl0aW5nL1VuZG9NYW5hZ2Vy
LmNwcCcsCisgICAgICAgICAgICAnZWRpdGluZy9VbmRvTWFuYWdlci5oJywKICAgICAgICAgICAg
ICdlZGl0aW5nL1VuZG9TdGVwLmgnLAogICAgICAgICAgICAgJ2VkaXRpbmcvVW5saW5rQ29tbWFu
ZC5jcHAnLAogICAgICAgICAgICAgJ2VkaXRpbmcvVW5saW5rQ29tbWFuZC5oJywKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiAx
MjMyNTUpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagko
d29ya2luZyBjb3B5KQpAQCAtMjI1MDMsNiArMjI1MDMsNjIgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+
CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9i
alwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU1VuZG9NYW5hZ2VyLmNwcCIKKwkJCQk+
CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJCQlF
eGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0i
VkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJ
CTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJCQlFeGNs
dWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkND
TENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxG
aWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb19DRkxpdGV8V2luMzIiCisJ
CQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlO
YW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+
CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm9fQ0ZMaXRl
fFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9v
bAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25m
aWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19BbGx8
V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29s
CisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZp
Z3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlByb2R1Y3Rpb258
V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29s
CisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZp
Z3VyYXRpb24+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChDb25m
aWd1cmF0aW9uQnVpbGREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU1Vu
ZG9NYW5hZ2VyLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBh
dGg9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNv
dXJjZXNcSlNWYWxpZGl0eVN0YXRlLmNwcCIKIAkJCQk+CiAJCQkJPEZpbGVDb25maWd1cmF0aW9u
CkBAIC01NTYyMyw2ICs1NTY3OSwxMCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxlZGl0aW5nXERPTVRyYW5zYWN0aW9uLmgiCisJCQkJPgorCQkJ
PC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGVkaXRpbmdcRWRpdEFjdGlv
bi5oIgogCQkJCT4KIAkJCTwvRmlsZT4KQEAgLTU3OTQ3LDYgKzU4MDA3LDYyIEBACiAJCQkJPgog
CQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGVkaXRpbmdcVW5kb01h
bmFnZXIuY3BwIgorCQkJCT4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVi
dWd8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxU
b29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNv
bmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2V8
V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29s
CisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZp
Z3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnX0NhaXJv
X0NGTGl0ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJ
CQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9G
aWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVs
ZWFzZV9DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgor
CQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkv
PgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJ
CU5hbWU9IkRlYnVnX0FsbHxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJ
CQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+
CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJ
TmFtZT0iUHJvZHVjdGlvbnxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJ
CQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+
CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVs
YXRpdmVQYXRoPSIuLlxlZGl0aW5nXFVuZG9NYW5hZ2VyLmgiCisJCQkJPgorCQkJPC9GaWxlPgor
CQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGVkaXRpbmdcVW5kb1N0ZXAuaCIKIAkJCQk+
CiAJCQk8L0ZpbGU+CkBAIC02NTg5MCw2ICs2NjAwNiw2MiBAQAogCQkJCQk8L0ZpbGVDb25maWd1
cmF0aW9uPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJp
bmRpbmdzXGpzXEpTRE9NVHJhbnNhY3Rpb24uY3BwIgorCQkJCQk+CisJCQkJCTxGaWxlQ29uZmln
dXJhdGlvbgorCQkJCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWls
ZD0idHJ1ZSIKKwkJCQkJCT4KKwkJCQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVy
VG9vbCIKKwkJCQkJCS8+CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCTxGaWxlQ29u
ZmlndXJhdGlvbgorCQkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJv
bUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29t
cGlsZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJPEZp
bGVDb25maWd1cmF0aW9uCisJCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb19DRkxpdGV8V2luMzIiCisJ
CQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJCQkJCTxUb29sCisJCQkJ
CQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJCTwvRmlsZUNvbmZpZ3Vy
YXRpb24+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJTmFtZT0iUmVsZWFzZV9DYWly
b19DRkxpdGV8V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4K
KwkJCQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJ
CQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJ
TmFtZT0iRGVidWdfQWxsfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJ
CQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJ
CQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24K
KwkJCQkJCU5hbWU9IlByb2R1Y3Rpb258V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0i
dHJ1ZSIKKwkJCQkJCT4KKwkJCQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9v
bCIKKwkJCQkJCS8+CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPC9GaWxlPgorCQkJ
CTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNET01UcmFuc2FjdGlv
bi5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0i
Li5cYmluZGluZ3NcanNcSlNET01XaW5kb3dCYXNlLmNwcCIKIAkJCQkJPgogCQkJCQk8RmlsZUNv
bmZpZ3VyYXRpb24KQEAgLTY5NjgyLDYgKzY5ODU0LDU4IEBACiAJCQkJCTwvRmlsZUNvbmZpZ3Vy
YXRpb24+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmlu
ZGluZ3NcanNcSlNVbmRvTWFuYWdlckN1c3RvbS5jcHAiCisJCQkJCT4KKwkJCQkJPEZpbGVDb25m
aWd1cmF0aW9uCisJCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1
aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGls
ZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJPEZpbGVD
b25maWd1cmF0aW9uCisJCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRG
cm9tQnVpbGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xD
b21waWxlclRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQk8
RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IkRlYnVnX0NhaXJvX0NGTGl0ZXxXaW4zMiIK
KwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJ
CQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29uZmln
dXJhdGlvbj4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQlOYW1lPSJSZWxlYXNlX0Nh
aXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJ
PgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJLz4K
KwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJ
CQlOYW1lPSJEZWJ1Z19BbGx8V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIK
KwkJCQkJCT4KKwkJCQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJ
CQkJCS8+CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlv
bgorCQkJCQkJTmFtZT0iUHJvZHVjdGlvbnxXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxk
PSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJU
b29sIgorCQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8L0ZpbGU+CisJ
CQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU1dlYktpdEFuaW1h
dGlvbkN1c3RvbS5jcHAiCiAJCQkJCT4KIAkJCQkJPEZpbGVDb25maWd1cmF0aW9uCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShy
ZXZpc2lvbiAxMjMyNTUpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE5NDQsMTAgKzE5NDQsMTcgQEAKIAkJN0FG
MTFBNUExMkU3Mjc0OTAwNjFGMjNDIC8qIEluc3BlY3RvclJ1bnRpbWVBZ2VudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGMTFBNTkxMkU3Mjc0OTAw
NjFGMjNDIC8qIEluc3BlY3RvclJ1bnRpbWVBZ2VudC5oICovOyB9OwogCQk3QUZENEE4QjExMzFD
Mjc2MDAzNUI4ODMgLyogU2NyaXB0QnJlYWtwb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGRDRBOEExMTMxQzI3NjAwMzVCODgzIC8qIFNjcmlw
dEJyZWFrcG9pbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk3QUZENEZGNDExMzI3N0I2MDAzNUI4ODMgLyogU2NyaXB0RGVidWdMaXN0ZW5lci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGRDRGRjMx
MTMyNzdCNjAwMzVCODgzIC8qIFNjcmlwdERlYnVnTGlzdGVuZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3QjA5OTJGNTE1QUNGMUFEMDBFRDZE
MjAgLyogSlNVbmRvTWFuYWdlckN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QjA5OTJGNDE1QUNGMUFEMDBFRDZEMjAgLyogSlNVbmRvTWFu
YWdlckN1c3RvbS5jcHAgKi87IH07CiAJCTdCMUVBMENFMTU3NkM1QjUwMDYwMTc3RCAvKiBKU1Vu
ZG9NYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdCMUVBMENDMTU3NkM1QjUwMDYwMTc3RCAvKiBKU1VuZG9NYW5hZ2VyLmNwcCAqLzsgfTsK
IAkJN0IxRUEwQ0YxNTc2QzVCNTAwNjAxNzdEIC8qIEpTVW5kb01hbmFnZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMUVBMENEMTU3NkM1QjUwMDYw
MTc3RCAvKiBKU1VuZG9NYW5hZ2VyLmggKi87IH07CisJCTdCNTE3RTg0MTVBQ0YxRjUwMEYxNkI3
QSAvKiBKU0RPTVRyYW5zYWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdCNTE3RTgyMTVBQ0YxRjMwMEYxNkI3QSAvKiBKU0RPTVRyYW5zYWN0
aW9uLmNwcCAqLzsgfTsKKwkJN0I1MTdFODUxNUFDRjFGNTAwRjE2QjdBIC8qIEpTRE9NVHJhbnNh
Y3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdC
NTE3RTgzMTVBQ0YxRjUwMEYxNkI3QSAvKiBKU0RPTVRyYW5zYWN0aW9uLmggKi87IH07CisJCTdC
NTE3RTg3MTVBQ0YyMTEwMEYxNkI3QSAvKiBET01UcmFuc2FjdGlvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I1MTdFODYxNUFDRjIxMTAwRjE2QjdB
IC8qIERPTVRyYW5zYWN0aW9uLmggKi87IH07CisJCTdCNzhEQUE4MTVCNzdDMDMwMDMzQzJEMiAv
KiBET01UcmFuc2FjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3Qjc4REFBNzE1Qjc3QzAzMDAzM0MyRDIgLyogRE9NVHJhbnNhY3Rpb24uY3Bw
ICovOyB9OwogCQk3QjkxODREMjE1NzU4RTQyMDA5MkFBOTMgLyogVW5kb01hbmFnZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I5MTg0Q0YxNTc1
OEU0MjAwOTJBQTkzIC8qIFVuZG9NYW5hZ2VyLmNwcCAqLzsgfTsKIAkJN0I5MTg0RDMxNTc1OEU0
MjAwOTJBQTkzIC8qIFVuZG9NYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QjkxODREMDE1NzU4RTQyMDA5MkFBOTMgLyogVW5kb01hbmFnZXIu
aCAqLzsgfTsKKwkJN0JEMTE3RUIxNUI4REIwMTAwQzk3NEEzIC8qIERPTVRyYW5zYWN0aW9uU3Rl
cC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkQx
MTdFOTE1QjhEQjAxMDBDOTc0QTMgLyogRE9NVHJhbnNhY3Rpb25TdGVwLmNwcCAqLzsgfTsKKwkJ
N0JEMTE3RUMxNUI4REIwMTAwQzk3NEEzIC8qIERPTVRyYW5zYWN0aW9uU3RlcC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0JEMTE3RUExNUI4REIwMTAw
Qzk3NEEzIC8qIERPTVRyYW5zYWN0aW9uU3RlcC5oICovOyB9OwogCQk3RTMzQ0QwMTEyN0YzNDBE
MDBCRThGMTcgLyogUHVyZ2VQcmlvcml0eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0UzM0NEMDAxMjdGMzQwRDAwQkU4RjE3IC8qIFB1cmdlUHJpb3Jp
dHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3
RTM3RUYyRTEzMzkyMDg4MDBCMjkyNTAgLyogU3VicmVzb3VyY2VMb2FkZXJDRi5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTM3RUYyRDEzMzkyMDg4
MDBCMjkyNTAgLyogU3VicmVzb3VyY2VMb2FkZXJDRi5jcHAgKi87IH07CiAJCTdFOTlBRjUxMEIx
Mzg0NjQ2OEZCMDFBNSAvKiBXaW5kb3dGb2N1c0FsbG93ZWRJbmRpY2F0b3IuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0U5OUFGNTIwQjEzODQ2NDY4
RkIwMUE1IC8qIFdpbmRvd0ZvY3VzQWxsb3dlZEluZGljYXRvci5jcHAgKi87IH07CkBAIC05MDgx
LDExICs5MDg4LDE4IEBACiAJCTdBRjExQTU5MTJFNzI3NDkwMDYxRjIzQyAvKiBJbnNwZWN0b3JS
dW50aW1lQWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9y
UnVudGltZUFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBRkQ0QThBMTEz
MUMyNzYwMDM1Qjg4MyAvKiBTY3JpcHRCcmVha3BvaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNjcmlwdEJyZWFrcG9pbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJN0FGRDRGRjMxMTMyNzdCNjAwMzVCODgzIC8qIFNjcmlwdERlYnVnTGlzdGVuZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0RGVidWdMaXN0ZW5lci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjA5OTJGNDE1QUNGMUFEMDBFRDZEMjAgLyog
SlNVbmRvTWFuYWdlckN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBKU1VuZG9NYW5hZ2VyQ3VzdG9tLmNwcDsgcGF0aCA9IC4uLy4uLy4uL3dlYmtpdC9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VuZG9NYW5hZ2VyQ3VzdG9tLmNwcDsgc291cmNlVHJl
ZSA9IFNPVVJDRV9ST09UOyB9OwogCQk3QjFFQTBDQzE1NzZDNUI1MDA2MDE3N0QgLyogSlNVbmRv
TWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1VuZG9N
YW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0IxRUEwQ0QxNTc2QzVC
NTAwNjAxNzdEIC8qIEpTVW5kb01hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNVbmRvTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjUx
N0U4MjE1QUNGMUYzMDBGMTZCN0EgLyogSlNET01UcmFuc2FjdGlvbi5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBKU0RPTVRyYW5zYWN0aW9uLmNwcDsgcGF0aCA9IC4u
Ly4uLy4uL3dlYmtpdC9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVRyYW5zYWN0aW9u
LmNwcDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQk3QjUxN0U4MzE1QUNGMUY1MDBG
MTZCN0EgLyogSlNET01UcmFuc2FjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBKU0RPTVRyYW5zYWN0aW9uLmg7IHBhdGggPSAuLi8uLi8uLi93ZWJraXQvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01UcmFuc2FjdGlvbi5oOyBzb3VyY2VUcmVlID0gU09VUkNF
X1JPT1Q7IH07CisJCTdCNTE3RTg2MTVBQ0YyMTEwMEYxNkI3QSAvKiBET01UcmFuc2FjdGlvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBET01UcmFuc2FjdGlvbi5oOyBwYXRo
ID0gLi4vLi4vLi4vd2Via2l0L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRE9NVHJhbnNhY3Rpb24u
aDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQk3Qjc4REFBNzE1Qjc3QzAzMDAzM0My
RDIgLyogRE9NVHJhbnNhY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gRE9NVHJhbnNhY3Rpb24uY3BwOyBwYXRoID0gLi4vLi4vLi4vd2Via2l0L1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRE9NVHJhbnNhY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gU09VUkNFX1JP
T1Q7IH07CiAJCTdCOTE4NENGMTU3NThFNDIwMDkyQUE5MyAvKiBVbmRvTWFuYWdlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVbmRvTWFuYWdlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCOTE4NEQwMTU3NThFNDIwMDkyQUE5MyAvKiBVbmRv
TWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVbmRvTWFuYWdlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjkxODREMTE1NzU4RTQyMDA5MkFBOTMg
LyogVW5kb01hbmFnZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFVuZG9NYW5hZ2VyLmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0JEMTE3RTkxNUI4REIwMTAwQzk3NEEz
IC8qIERPTVRyYW5zYWN0aW9uU3RlcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBET01UcmFuc2FjdGlvblN0ZXAuY3BwOyBwYXRoID0gLi4vLi4vLi4vd2Via2l0L1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRE9NVHJhbnNhY3Rpb25TdGVwLmNwcDsgc291cmNlVHJlZSA9
IFNPVVJDRV9ST09UOyB9OworCQk3QkQxMTdFQTE1QjhEQjAxMDBDOTc0QTMgLyogRE9NVHJhbnNh
Y3Rpb25TdGVwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERPTVRyYW5zYWN0
aW9uU3RlcC5oOyBwYXRoID0gLi4vLi4vLi4vd2Via2l0L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RE9NVHJhbnNhY3Rpb25TdGVwLmg7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJN0M2
MDEyODA2MDA3OEJCNzBFMzY3QTk1IC8qIEROU1Jlc29sdmVRdWV1ZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBETlNSZXNvbHZlUXVldWUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3RTMzQ0QwMDEyN0YzNDBEMDBCRThGMTcgLyogUHVyZ2VQcmlv
cml0eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQdXJnZVByaW9yaXR5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFMzdFRjJEMTMzOTIwODgwMEIyOTI1MCAv
KiBTdWJyZXNvdXJjZUxvYWRlckNGLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IFN1YnJlc291cmNlTG9hZGVyQ0YuY3BwOyBwYXRoID0gY2YvU3VicmVzb3VyY2VMb2Fk
ZXJDRi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNjk5Myw2ICsxNzAwNywx
MCBAQAogCQkJCUNFQ0FERkMzMTUzNzc4RkYwMEUzNzA2OCAvKiBEaWN0YXRpb25BbHRlcm5hdGl2
ZS5oICovLAogCQkJCUNFQ0FERkM0MTUzNzc4RkYwMEUzNzA2OCAvKiBEaWN0YXRpb25Db21tYW5k
LmNwcCAqLywKIAkJCQlDRUNBREZDNTE1Mzc3OEZGMDBFMzcwNjggLyogRGljdGF0aW9uQ29tbWFu
ZC5oICovLAorCQkJCTdCNzhEQUE3MTVCNzdDMDMwMDMzQzJEMiAvKiBET01UcmFuc2FjdGlvbi5j
cHAgKi8sCisJCQkJN0I1MTdFODYxNUFDRjIxMTAwRjE2QjdBIC8qIERPTVRyYW5zYWN0aW9uLmgg
Ki8sCisJCQkJN0JEMTE3RTkxNUI4REIwMTAwQzk3NEEzIC8qIERPTVRyYW5zYWN0aW9uU3RlcC5j
cHAgKi8sCisJCQkJN0JEMTE3RUExNUI4REIwMTAwQzk3NEEzIC8qIERPTVRyYW5zYWN0aW9uU3Rl
cC5oICovLAogCQkJCTkzMzA5RDkzMDk5RTY0OTEwMDU2RTU4MSAvKiBFZGl0QWN0aW9uLmggKi8s
CiAJCQkJOTMzMDlEOTQwOTlFNjQ5MTAwNTZFNTgxIC8qIEVkaXRDb21tYW5kLmNwcCAqLywKIAkJ
CQk5MzMwOUQ5NTA5OUU2NDkxMDA1NkU1ODEgLyogRWRpdENvbW1hbmQuaCAqLywKQEAgLTE5OTU4
LDYgKzE5OTc2LDggQEAKIAkJCQk5M0I3MEQ0ODA5RUIwQzdDMDA5RDg0NjggLyogSlNET01CaW5k
aW5nLmggKi8sCiAJCQkJRTFDMzZDQkMwRUIwODA2MjAwNzQxMEJDIC8qIEpTRE9NR2xvYmFsT2Jq
ZWN0LmNwcCAqLywKIAkJCQlFMUMzNkMwMjBFQjA3NkQ2MDA3NDEwQkMgLyogSlNET01HbG9iYWxP
YmplY3QuaCAqLywKKwkJCQk3QjUxN0U4MjE1QUNGMUYzMDBGMTZCN0EgLyogSlNET01UcmFuc2Fj
dGlvbi5jcHAgKi8sCisJCQkJN0I1MTdFODMxNUFDRjFGNTAwRjE2QjdBIC8qIEpTRE9NVHJhbnNh
Y3Rpb24uaCAqLywKIAkJCQlCQzY5MzI3MTBEN0UyOTM5MDBBRTQ0RDEgLyogSlNET01XaW5kb3dC
YXNlLmNwcCAqLywKIAkJCQlCQzY5MzI3MjBEN0UyOTM5MDBBRTQ0RDEgLyogSlNET01XaW5kb3dC
YXNlLmggKi8sCiAJCQkJQkNCRkI1M0EwRENEMjlDRjAwMTlCM0U1IC8qIEpTRE9NV2luZG93U2hl
bGwuY3BwICovLApAQCAtMjAyMDAsNiArMjAyMjAsNyBAQAogCQkJCTQ5RUVDRjc2MTA1MDhEOUMw
MDA5OUZBQiAvKiBKU1VpbnQzMkFycmF5Q3VzdG9tLmNwcCAqLywKIAkJCQk0OUVFQ0Y3NTEwNTA4
RDlDMDAwOTlGQUIgLyogSlNVaW50OEFycmF5Q3VzdG9tLmNwcCAqLywKIAkJCQk5MUEzOTA1QTE0
QzBGNjExMDBGNjc5MDEgLyogSlNVaW50OENsYW1wZWRBcnJheUN1c3RvbS5jcHAgKi8sCisJCQkJ
N0IwOTkyRjQxNUFDRjFBRDAwRUQ2RDIwIC8qIEpTVW5kb01hbmFnZXJDdXN0b20uY3BwICovLAog
CQkJCUZEOEU5QkRFMTNENENEMkIwMDUwREM3MiAvKiBKU1dhdmVTaGFwZXJOb2RlQ3VzdG9tLmNw
cCAqLywKIAkJCQk0OUVFRDE0QzEwNTE5NzFBMDAwOTlGQUIgLyogSlNXZWJHTFJlbmRlcmluZ0Nv
bnRleHRDdXN0b20uY3BwICovLAogCQkJCTMxOUU2ODg2MTMyN0M5MTEwMDRBQzkxQSAvKiBKU1dl
YktpdEFuaW1hdGlvbkN1c3RvbS5jcHAgKi8sCkBAIC0yMjk2Miw2ICsyMjk4Myw4IEBACiAJCQkJ
MTg4NjA0QjQwRjJFNjU0QTAwMEI2NDQzIC8qIERPTVRpbWVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwNUZENjlFMDEyODQ1RDQzMDBCMkJFQjMgLyogRE9NVGltZVN0YW1wLmggaW4gSGVhZGVycyAq
LywKIAkJCQk3NkZDMkIwQzEyMzcwREEwMDA2QTk5MUEgLyogRE9NVG9rZW5MaXN0LmggaW4gSGVh
ZGVycyAqLywKKwkJCQk3QjUxN0U4NzE1QUNGMjExMDBGMTZCN0EgLyogRE9NVHJhbnNhY3Rpb24u
aCBpbiBIZWFkZXJzICovLAorCQkJCTdCRDExN0VDMTVCOERCMDEwMEM5NzRBMyAvKiBET01UcmFu
c2FjdGlvblN0ZXAuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMUEzN0JFMDk3QzcxNUYwMDE5RjNE
OCAvKiBET01UcmF2ZXJzYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1NTI2Q0QyMEFCMEI3RDkw
MDAzMDJFQSAvKiBET01UcmVlV2Fsa2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTBCNDFDMzBB
RDlFN0U3MDBBNkVENEYgLyogRE9NVHJlZVdhbGtlckludGVybmFsLmggaW4gSGVhZGVycyAqLywK
QEAgLTIzNjE1LDYgKzIzNjM4LDcgQEAKIAkJCQlDNTEzN0NGMzExQTU4Mzc4MDA0QURCOTkgLyog
SlNET01TdHJpbmdMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzY0NjQ5ODExRDgyMzQ5MDA2
NDU1QjAgLyogSlNET01TdHJpbmdNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTc2OTQ1NjNEMTIx
NEQ5N0MwMDA3Q0JBRSAvKiBKU0RPTVRva2VuTGlzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0I1
MTdFODUxNUFDRjFGNTAwRjE2QjdBIC8qIEpTRE9NVHJhbnNhY3Rpb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCTJFMzdFMDA2MTJEQkM1QTQwMEE2QjIzMyAvKiBKU0RPTVVSTC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkM2OTMyNzQwRDdFMjkzOTAwQUU0NEQxIC8qIEpTRE9NV2luZG93QmFzZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNjUyRkJCQkMwREUyN0NCNjAwMDFEMzg2IC8qIEpTRE9NV2luZG93
Q3VzdG9tLmggaW4gSGVhZGVycyAqLywKQEAgLTI2MjAzLDYgKzI2MjI3LDggQEAKIAkJCQk5MzNB
MTRBQTBCN0QxRDA5MDBBNTNGRkQgLyogRE9NVGV4dEV2ZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMTg4NjA0QjMwRjJFNjU0QTAwMEI2NDQzIC8qIERPTVRpbWVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTc2RkMyQjBCMTIzNzBEQTAwMDZBOTkxQSAvKiBET01Ub2tlbkxpc3QuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJN0I3OERBQTgxNUI3N0MwMzAwMzNDMkQyIC8qIERPTVRyYW5zYWN0aW9u
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdCRDExN0VCMTVCOERCMDEwMEM5NzRBMyAvKiBET01U
cmFuc2FjdGlvblN0ZXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODU1MjZDRDMwQUIwQjdEQTAw
MDMwMkVBIC8qIERPTVRyZWVXYWxrZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQk4NUM3RjQ5MjBB
QUY3OURDMDA0MDE0REQgLyogRE9NVUlFdmVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTJFMzdE
RkRBMTJEQkFGQjgwMEE2QjIzMyAvKiBET01VUkwuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNjgw
MCw2ICsyNjgyNiw3IEBACiAJCQkJQkM2NDY0OUMxMUQ4MjM4QzAwNjQ1NUIwIC8qIEpTRE9NU3Ry
aW5nTWFwQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTc2OTQ1NjNDMTIxNEQ5N0MwMDA3
Q0JBRSAvKiBKU0RPTVRva2VuTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNEUwQkM1NjEz
NjE0OEE4MDAyQUQxMkUgLyogSlNET01Ub2tlbkxpc3RDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJN0I1MTdFODQxNUFDRjFGNTAwRjE2QjdBIC8qIEpTRE9NVHJhbnNhY3Rpb24uY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMkUzN0UwMDUxMkRCQzVBNDAwQTZCMjMzIC8qIEpTRE9NVVJMLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTE0MDNCQTBDMDlFQjE4QzcwMDc5N0M3RiAvKiBKU0RPTVdp
bmRvdy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzY5MzI3MzBEN0UyOTM5MDBBRTQ0RDEgLyog
SlNET01XaW5kb3dCYXNlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjcyNjgsNiArMjcyOTUsNyBA
QAogCQkJCTkxMDg5RDMzMTRDMzM2MDUwMDVBRkM0OSAvKiBKU1VpbnQ4Q2xhbXBlZEFycmF5LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTkxQTM5MDVCMTRDMEY2MTEwMEY2NzkwMSAvKiBKU1VpbnQ4
Q2xhbXBlZEFycmF5Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdCMUVBMENFMTU3NkM1
QjUwMDYwMTc3RCAvKiBKU1VuZG9NYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdCMDk5
MkY1MTVBQ0YxQUQwMEVENkQyMCAvKiBKU1VuZG9NYW5hZ2VyQ3VzdG9tLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTE1Qzc3MDk0MTAwRDNDQTgwMDVCQTI2NyAvKiBKU1ZhbGlkaXR5U3RhdGUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRkQ4MkQ3RjcxM0Q0QzhCRDAwNEU0MzcyIC8qIEpTV2F2ZVNo
YXBlck5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQ4RTlCREYxM0Q0Q0QyQjAwNTBEQzcy
IC8qIEpTV2F2ZVNoYXBlck5vZGVDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAJKHJl
dmlzaW9uIDEyMzI1NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NB
bGxJbk9uZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzLDYgKzYzLDcgQEAKICNpbmNsdWRlICJK
U0RPTVN0cmluZ0xpc3RDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTRE9NU3RyaW5nTWFwQ3VzdG9t
LmNwcCIKICNpbmNsdWRlICJKU0RPTVRva2VuTGlzdEN1c3RvbS5jcHAiCisjaW5jbHVkZSAiSlNE
T01UcmFuc2FjdGlvbi5jcHAiCiAjaW5jbHVkZSAiSlNET01XaW5kb3dCYXNlLmNwcCIKICNpbmNs
dWRlICJKU0RPTVdpbmRvd0N1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNET01XaW5kb3dTaGVsbC5j
cHAiCkBAIC0xNTUsNiArMTU2LDcgQEAKICNpbmNsdWRlICJKU1VpbnQzMkFycmF5Q3VzdG9tLmNw
cCIKICNpbmNsdWRlICJKU1VpbnQ4QXJyYXlDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTVWludDhD
bGFtcGVkQXJyYXlDdXN0b20uY3BwIgorI2luY2x1ZGUgIkpTVW5kb01hbmFnZXJDdXN0b20uY3Bw
IgogI2luY2x1ZGUgIkpTV2ViS2l0QW5pbWF0aW9uQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU1dl
YktpdEFuaW1hdGlvbkxpc3RDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTV2ViS2l0Q1NTS2V5ZnJh
bWVSdWxlQ3VzdG9tLmNwcCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
VHJhbnNhY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NVHJhbnNhY3Rpb24uY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01UcmFuc2FjdGlvbi5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTRE9NVHJhbnNhY3Rpb24uaCIKKwor
I2luY2x1ZGUgIkRPTVdyYXBwZXJXb3JsZC5oIgorI2luY2x1ZGUgIkpTRGljdGlvbmFyeS5oIgor
I2luY2x1ZGUgIkpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgIlVuZG9N
YW5hZ2VyLmgiCisKKyNpZiBFTkFCTEUoVU5ET19NQU5BR0VSKQorCit1c2luZyBuYW1lc3BhY2Ug
SlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0pTRE9NVHJhbnNhY3Rpb246OkpTRE9NVHJh
bnNhY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgSlNPYmplY3QqIGRpY3Rp
b25hcnksIEpTT2JqZWN0KiB3cmFwcGVyLCBET01XcmFwcGVyV29ybGQqIGlzb2xhdGVkV29ybGQp
CisgICAgOiBtX2NvbnRleHQoY29udGV4dCkKKyAgICAsIG1fd3JhcHBlcih3cmFwcGVyKQorICAg
ICwgbV9pc29sYXRlZFdvcmxkKGlzb2xhdGVkV29ybGQpCit7CisgICAgaWYgKHdyYXBwZXIpCisg
ICAgICAgIG1fZGljdGlvbmFyeS5zZXRNYXlCZU51bGwoKm1faXNvbGF0ZWRXb3JsZC0+Z2xvYmFs
RGF0YSgpLCB3cmFwcGVyLCBkaWN0aW9uYXJ5KTsKKyAgICBlbHNlCisgICAgICAgIEFTU0VSVCgh
ZGljdGlvbmFyeSk7CisgICAgCisgICAgRXhlY1N0YXRlKiBleGVjID0gZXhlY1N0YXRlKCk7Cisg
ICAgQVNTRVJUKGV4ZWMpOworICAgIFNjcmlwdFZhbHVlIHZhbHVlOworICAgIG1faXNBdXRvbWF0
aWMgPSBnZXRQcm9wZXJ0eShleGVjLCAiZXhlY3V0ZUF1dG9tYXRpYyIsIHZhbHVlKSAmJiB2YWx1
ZS5pc0Z1bmN0aW9uKCk7Cit9CisKK1Bhc3NSZWZQdHI8SlNET01UcmFuc2FjdGlvbj4gSlNET01U
cmFuc2FjdGlvbjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEpTT2Jq
ZWN0KiBkaWN0aW9uYXJ5LCBKU09iamVjdCogd3JhcHBlciwgRE9NV3JhcHBlcldvcmxkKiBpc29s
YXRlZFdvcmxkKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSlNET01UcmFuc2FjdGlvbihj
b250ZXh0LCBkaWN0aW9uYXJ5LCB3cmFwcGVyLCBpc29sYXRlZFdvcmxkKSk7Cit9CisKK3ZvaWQg
SlNET01UcmFuc2FjdGlvbjo6dmlzaXREaWN0aW9uYXJ5KEpTQzo6U2xvdFZpc2l0b3ImIHZpc2l0
b3IpCit7CisgICAgaWYgKG1fZGljdGlvbmFyeSkKKyAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1f
ZGljdGlvbmFyeSk7Cit9CisgICAgCitFeGVjU3RhdGUqIEpTRE9NVHJhbnNhY3Rpb246OmV4ZWNT
dGF0ZSgpCit7CisgICAgQVNTRVJUKG1fY29udGV4dC5nZXQoKSk7CisgICAgaWYgKCFtX2NvbnRl
eHQuZ2V0KCkgfHwgbV9jb250ZXh0LT5pc0pTRXhlY3V0aW9uRm9yYmlkZGVuKCkpCisgICAgICAg
IHJldHVybiAwOworICAgIAorICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB0
b0pTRE9NR2xvYmFsT2JqZWN0KG1fY29udGV4dC5nZXQoKSwgbV9pc29sYXRlZFdvcmxkLmdldCgp
KTsKKyAgICBpZiAoIWdsb2JhbE9iamVjdCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAg
cmV0dXJuIGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOworfQorICAgIAorYm9vbCBKU0RPTVRy
YW5zYWN0aW9uOjpnZXRQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IGNoYXIqIHByb3Bl
cnR5TmFtZSwgU2NyaXB0VmFsdWUmIHZhbHVlKQoreworICAgIEpTRGljdGlvbmFyeSBqc0RpY3Rp
b25hcnkoZXhlYywgbV9kaWN0aW9uYXJ5LmdldCgpKTsKKyAgICBpZiAoIWpzRGljdGlvbmFyeS5p
c1ZhbGlkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICByZXR1cm4ganNEaWN0
aW9uYXJ5LmdldChwcm9wZXJ0eU5hbWUsIHZhbHVlKTsKK30KKwordm9pZCBKU0RPTVRyYW5zYWN0
aW9uOjpjYWxsUHJvcGVydHkoY29uc3QgY2hhciogcHJvcGVydHlOYW1lKQoreworICAgIEV4ZWNT
dGF0ZSogZXhlYyA9IGV4ZWNTdGF0ZSgpOworICAgIGlmICghZXhlYykKKyAgICAgICAgcmV0dXJu
OworICAgIAorICAgIFNjcmlwdFZhbHVlIHZhbHVlOworICAgIGlmICghZ2V0UHJvcGVydHkoZXhl
YywgcHJvcGVydHlOYW1lLCB2YWx1ZSkgfHwgIXZhbHVlLmlzRnVuY3Rpb24oKSkKKyAgICAgICAg
cmV0dXJuOworICAgIAorICAgIEpTVmFsdWUgZnVuY3Rpb24gPSB2YWx1ZS5qc1ZhbHVlKCk7Cisg
ICAgCisgICAgQ2FsbERhdGEgY2FsbERhdGE7CisgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRD
YWxsRGF0YShmdW5jdGlvbiwgY2FsbERhdGEpOworICAgIAorICAgIGlmIChjYWxsVHlwZSAhPSBD
YWxsVHlwZU5vbmUpIHsKKyAgICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKKyAgICAg
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBmdW5jdGlvbjsKKyAgICAgICAgaWYgKG1fY29udGV4dC0+
aXNEb2N1bWVudCgpKQorICAgICAgICAgICAgSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpjYWxsKGV4
ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXNWYWx1ZSwgYXJncyk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIEpTQzo6Y2FsbChleGVjLCBmdW5jdGlvbiwgY2FsbFR5cGUs
IGNhbGxEYXRhLCB0aGlzVmFsdWUsIGFyZ3MpOworICAgIH0KK30KKwordm9pZCBKU0RPTVRyYW5z
YWN0aW9uOjpleGVjdXRlKCkKK3sKKyAgICBjYWxsUHJvcGVydHkoImV4ZWN1dGUiKTsKK30KKwor
dm9pZCBKU0RPTVRyYW5zYWN0aW9uOjpleGVjdXRlQXV0b21hdGljKCkKK3sKKyAgICBjYWxsUHJv
cGVydHkoImV4ZWN1dGVBdXRvbWF0aWMiKTsKK30KKwordm9pZCBKU0RPTVRyYW5zYWN0aW9uOjp1
bmRvKCkKK3sKKyAgICBjYWxsUHJvcGVydHkoInVuZG8iKTsKK30KKwordm9pZCBKU0RPTVRyYW5z
YWN0aW9uOjpyZWRvKCkKK3sKKyAgICBjYWxsUHJvcGVydHkoInJlZG8iKTsKK30KKworfQorCisj
ZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NVHJhbnNhY3Rpb24u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVRyYW5zYWN0
aW9uLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVRy
YW5zYWN0aW9uLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEpTRE9NVHJh
bnNhY3Rpb25faAorI2RlZmluZSBKU0RPTVRyYW5zYWN0aW9uX2gKKworI2lmIEVOQUJMRShVTkRP
X01BTkFHRVIpCisKKyNpbmNsdWRlICJET01UcmFuc2FjdGlvbi5oIgorI2luY2x1ZGUgPHJ1bnRp
bWUvSlNPYmplY3QuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRE9NV3JhcHBlcldvcmxkOworY2xhc3MgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDsKK2NsYXNzIFNjcmlwdFZhbHVlOworCitjbGFzcyBKU0RPTVRyYW5z
YWN0aW9uIDogcHVibGljIERPTVRyYW5zYWN0aW9uIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxKU0RPTVRyYW5zYWN0aW9uPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IEpTQzo6SlNPYmplY3QqIGRpY3Rpb25hcnksIEpTQzo6SlNPYmplY3QqIHdyYXBwZXIsIERPTVdy
YXBwZXJXb3JsZCogaXNvbGF0ZWRXb3JsZCk7CisgICAgdm9pZCB2aXNpdERpY3Rpb25hcnkoSlND
OjpTbG90VmlzaXRvciYpOworICAgIAorICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlKCkgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVBdXRvbWF0aWMoKSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIHZvaWQgdW5kbygpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZWRvKCkgT1ZF
UlJJREU7CisgICAgdmlydHVhbCBib29sIGlzQXV0b21hdGljKCkgY29uc3QgT1ZFUlJJREUgeyBy
ZXR1cm4gbV9pc0F1dG9tYXRpYzsgfQorICAgIAorcHJpdmF0ZToKKyAgICBKU0RPTVRyYW5zYWN0
aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBKU0M6OkpTT2JqZWN0KiBkaWN0aW9uYXJ5LCBK
U0M6OkpTT2JqZWN0KiB3cmFwcGVyLCBET01XcmFwcGVyV29ybGQqIGlzb2xhdGVkV29ybGQpOwor
ICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjU3RhdGUoKTsKKyAgICBib29sIGdldFByb3BlcnR5KEpT
Qzo6RXhlY1N0YXRlKiwgY29uc3QgY2hhciogcHJvcGVydHlOYW1lLCBTY3JpcHRWYWx1ZSYpOwor
ICAgIHZvaWQgY2FsbFByb3BlcnR5KGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSk7CisgICAgCisg
ICAgUmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+IG1fY29udGV4dDsKKyAgICBKU0M6Oldy
aXRlQmFycmllcjxKU0M6OkpTT2JqZWN0PiBtX2RpY3Rpb25hcnk7CisgICAgSlNDOjpXZWFrPEpT
Qzo6SlNPYmplY3Q+IG1fd3JhcHBlcjsKKyAgICBSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiBtX2lz
b2xhdGVkV29ybGQ7CisgICAgYm9vbCBtX2lzQXV0b21hdGljOworfTsKKworfQorCisjZW5kaWYK
KworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VuZG9NYW5hZ2Vy
Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1Vu
ZG9NYW5hZ2VyQ3VzdG9tLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTVW5kb01hbmFnZXJDdXN0b20uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEx
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoK
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShVTkRPX01BTkFHRVIpCisKKyNp
bmNsdWRlICJKU1VuZG9NYW5hZ2VyLmgiCisKKyNpbmNsdWRlICJKU0RPTVRyYW5zYWN0aW9uLmgi
CisjaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyB2b2lkIHZpc2l0VHJhbnNhY3Rpb25zSW5TdGFj
ayhjb25zdCBVbmRvTWFuYWdlclN0YWNrJiBzdGFjaywgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdGFjay5zaXplKCk7ICsraSkgeworICAgICAg
ICBjb25zdCBVbmRvTWFuYWdlckVudHJ5JiBlbnRyeSA9ICooc3RhY2tbaV0uZ2V0KCkpOworICAg
ICAgICBpZiAoZW50cnkuaXNFbXB0eSgpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
IGlmIChlbnRyeVswXS0+aXNET01UcmFuc2FjdGlvbigpKSB7CisgICAgICAgICAgICBmb3IgKHNp
emVfdCBqID0gMDsgaiA8IGVudHJ5LnNpemUoKTsgKytqKSB7CisgICAgICAgICAgICAgICAgVW5k
b1N0ZXAqIHN0ZXAgPSBlbnRyeVtqXS5nZXQoKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoc3Rl
cC0+aXNET01UcmFuc2FjdGlvbigpKTsKKyAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxKU0RP
TVRyYW5zYWN0aW9uKj4oc3RlcCktPnZpc2l0RGljdGlvbmFyeSh2aXNpdG9yKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBKU1VuZG9NYW5hZ2VyOjp2aXNpdENo
aWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNVbmRv
TWFuYWdlciogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1VuZG9NYW5hZ2VyKj4oY2VsbCk7CisgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKKyAgICBDT01Q
SUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJy
aWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOworICAgIEFTU0VSVCh0aGlzT2Jq
ZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwor
ICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgCisgICAg
VW5kb01hbmFnZXIqIHVuZG9NYW5hZ2VyID0gdGhpc09iamVjdC0+aW1wbCgpOworICAgIHZpc2l0
VHJhbnNhY3Rpb25zSW5TdGFjayh1bmRvTWFuYWdlci0+dW5kb1N0YWNrKCksIHZpc2l0b3IpOwor
ICAgIHZpc2l0VHJhbnNhY3Rpb25zSW5TdGFjayh1bmRvTWFuYWdlci0+cmVkb1N0YWNrKCksIHZp
c2l0b3IpOworfQorCisKK0pTVmFsdWUgSlNVbmRvTWFuYWdlcjo6dHJhbnNhY3QoRXhlY1N0YXRl
KiBleGVjKQoreworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgp
OworICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKCZKU1VuZG9NYW5hZ2VyOjpzX2luZm8pKQor
ICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYyk7CisgICAgSlNVbmRvTWFuYWdlciog
Y2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1VuZG9NYW5hZ2VyKj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7
CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCAmSlNVbmRvTWFuYWdl
cjo6c19pbmZvKTsKKyAgICBVbmRvTWFuYWdlciogaW1wbCA9IHN0YXRpY19jYXN0PFVuZG9NYW5h
Z2VyKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKKyAgICAKKyAgICBpZiAoZXhlYy0+YXJndW1lbnRD
b3VudCgpIDwgMikKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgY3JlYXRlTm90RW5v
dWdoQXJndW1lbnRzRXJyb3IoZXhlYykpOworICAgIAorICAgIEpTVmFsdWUgZGljdGlvbmFyeSA9
IE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCk7Cisg
ICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKKyAgICBpZiAoIWRpY3Rpb25hcnkuaXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIHRocm93
RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJUaGUgZmlyc3QgYXJndW1lbnQgaXMg
bm90IG9mIHR5cGUgRE9NVHJhbnNhY3Rpb24uIikpOworICAgIAorICAgIGJvb2wgbWVyZ2UoTUFZ
QkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMSwgRGVmYXVsdElzVW5kZWZpbmVkKS50b0Jvb2xl
YW4oKSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4ganNV
bmRlZmluZWQoKTsKKyAgICAKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250
ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIGlmICghc2NyaXB0Q29udGV4dCkK
KyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgCisgICAgUmVmUHRyPEpTRE9NVHJh
bnNhY3Rpb24+IHRyYW5zYWN0aW9uID0gSlNET01UcmFuc2FjdGlvbjo6Y3JlYXRlKHNjcmlwdENv
bnRleHQsIGRpY3Rpb25hcnkuZ2V0T2JqZWN0KCksIHRoaXNWYWx1ZS5nZXRPYmplY3QoKSwgY3Vy
cmVudFdvcmxkKGV4ZWMpKTsKKyAgICAKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBp
bXBsLT50cmFuc2FjdCh0cmFuc2FjdGlvbiwgbWVyZ2UsIGVjKTsKKyAgICBpZiAoZWMpCisgICAg
ICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CisgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
Cit9CisKK30KKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERP
TVRyYW5zYWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOERPTVRyYW5zYWN0aW9uLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4RE9NVHJhbnNhY3Rpb24uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEz
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoK
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJWOERPTVRyYW5zYWN0aW9uLmgiCisK
KyNpZiBFTkFCTEUoVU5ET19NQU5BR0VSKQorCisjaW5jbHVkZSAiRE9NU3RyaW5nTGlzdC5oIgor
I2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJWOEJpbmRpbmcu
aCIKKyNpbmNsdWRlICJWOERPTVdpbmRvdy5oIgorI2luY2x1ZGUgIlY4U3RvcmFnZS5oIgorI2lu
Y2x1ZGUgIlY4VXRpbGl0aWVzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIHZv
aWQgd2Vha0RpY3Rpb25hcnlDYWxsYmFjayh2ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+LCB2b2lk
KiBwYXJhbWV0ZXIpCit7CisgICAgc3RhdGljX2Nhc3Q8VjhET01UcmFuc2FjdGlvbio+KHBhcmFt
ZXRlciktPmRpc3Bvc2VEaWN0aW9uYXJ5T2JqZWN0KCk7Cit9CisKK1Y4RE9NVHJhbnNhY3Rpb246
OlY4RE9NVHJhbnNhY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgdjg6Okxv
Y2FsPHY4OjpPYmplY3Q+IGRpY3Rpb25hcnksIGNvbnN0IFdvcmxkQ29udGV4dEhhbmRsZSYgd29y
bGRDb250ZXh0KQorICAgIDogbV9jb250ZXh0KGNvbnRleHQpCisgICAgLCBtX3dvcmxkQ29udGV4
dCh3b3JsZENvbnRleHQpCit7CisgICAgbV9kaWN0aW9uYXJ5ID0gdjg6OlBlcnNpc3RlbnQ8djg6
Ok9iamVjdD46Ok5ldyhkaWN0aW9uYXJ5KTsKKyAgICBtX2RpY3Rpb25hcnkuTWFrZVdlYWsodGhp
cywgJndlYWtEaWN0aW9uYXJ5Q2FsbGJhY2spOworICAgIAorICAgIHY4OjpMb2NhbDx2ODo6VmFs
dWU+IHByb3BlcnR5ID0gZGljdGlvbmFyeS0+R2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgiZXhl
Y3V0ZUF1dG9tYXRpYyIpKTsKKyAgICBtX2lzQXV0b21hdGljID0gIXByb3BlcnR5LklzRW1wdHko
KSAmJiBwcm9wZXJ0eS0+SXNGdW5jdGlvbigpOworfQorCitQYXNzUmVmUHRyPFY4RE9NVHJhbnNh
Y3Rpb24+IFY4RE9NVHJhbnNhY3Rpb246OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCB2ODo6TG9jYWw8djg6Ok9iamVjdD4gZGljdGlvbmFyeSwgY29uc3QgV29ybGRDb250
ZXh0SGFuZGxlJiB3b3JsZENvbnRleHQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBWOERP
TVRyYW5zYWN0aW9uKGNvbnRleHQsIGRpY3Rpb25hcnksIHdvcmxkQ29udGV4dCkpOworfQorICAg
IAorVjhET01UcmFuc2FjdGlvbjo6flY4RE9NVHJhbnNhY3Rpb24oKQoreworICAgIGRpc3Bvc2VE
aWN0aW9uYXJ5T2JqZWN0KCk7Cit9CisKK3ZvaWQgVjhET01UcmFuc2FjdGlvbjo6ZGlzcG9zZURp
Y3Rpb25hcnlPYmplY3QoKQoreworICAgIGlmICghbV9kaWN0aW9uYXJ5LklzRW1wdHkoKSkgewor
ICAgICAgICBtX2RpY3Rpb25hcnkuRGlzcG9zZSgpOworICAgICAgICBtX2RpY3Rpb25hcnkuQ2xl
YXIoKTsKKyAgICB9Cit9CisKK3ZvaWQgVjhET01UcmFuc2FjdGlvbjo6ZXhlY3V0ZSgpCit7Cisg
ICAgY2FsbFByb3BlcnR5KG1fY29udGV4dC5nZXQoKSwgImV4ZWN1dGUiKTsKK30KKwordm9pZCBW
OERPTVRyYW5zYWN0aW9uOjpleGVjdXRlQXV0b21hdGljKCkKK3sKKyAgICBjYWxsUHJvcGVydHko
bV9jb250ZXh0LmdldCgpLCAiZXhlY3V0ZUF1dG9tYXRpYyIpOworfQorCit2b2lkIFY4RE9NVHJh
bnNhY3Rpb246OnVuZG8oKQoreworICAgIGNhbGxQcm9wZXJ0eShtX2NvbnRleHQuZ2V0KCksICJ1
bmRvIik7Cit9CisKK3ZvaWQgVjhET01UcmFuc2FjdGlvbjo6cmVkbygpCit7CisgICAgY2FsbFBy
b3BlcnR5KG1fY29udGV4dC5nZXQoKSwgInJlZG8iKTsKK30KKworCit2b2lkIFY4RE9NVHJhbnNh
Y3Rpb246OmNhbGxQcm9wZXJ0eShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25z
dCBjaGFyKiBwcm9wZXJ0eU5hbWUpCit7CisgICAgaWYgKCFjb250ZXh0IHx8IGNvbnRleHQtPmlz
SlNFeGVjdXRpb25Gb3JiaWRkZW4oKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIHY4OjpI
YW5kbGVTY29wZSBoYW5kbGVTY29wZTsKKyAgICAKKyAgICB2ODo6TG9jYWw8djg6OkNvbnRleHQ+
IHY4Q29udGV4dCA9IHRvVjhDb250ZXh0KGNvbnRleHQsIG1fd29ybGRDb250ZXh0KTsKKyAgICBp
ZiAodjhDb250ZXh0LklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIHY4OjpD
b250ZXh0OjpTY29wZSBzY29wZSh2OENvbnRleHQpOworICAgIAorICAgIHY4OjpMb2NhbDx2ODo6
T2JqZWN0PiBkaWN0aW9uYXJ5ID0gdjg6OkxvY2FsPHY4OjpPYmplY3Q+OjpOZXcobV9kaWN0aW9u
YXJ5KTsKKyAgICBpZiAoZGljdGlvbmFyeS5Jc0VtcHR5KCkgfHwgIWRpY3Rpb25hcnktPklzT2Jq
ZWN0KCkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBw
cm9wZXJ0eSA9IGRpY3Rpb25hcnktPkdldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2wocHJvcGVydHlO
YW1lKSk7CisgICAgaWYgKHByb3BlcnR5LklzRW1wdHkoKSB8fCAhcHJvcGVydHktPklzRnVuY3Rp
b24oKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+
IGhhbmRsZXJGdW5jdGlvbiA9ICB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPjo6Q2FzdChwcm9wZXJ0
eSk7CisgICAgCisgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IHJlY2VpdmVyID0gdjg6OkxvY2Fs
PHY4OjpPYmplY3Q+OjpDYXN0KGhhbmRsZXJGdW5jdGlvbik7CisgICAgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHBhcmFtZXRlcnNbMF0gPSB7IH07CisgICAgCisgICAgaWYgKFY4UHJveHkqIHByb3h5
ID0gVjhQcm94eTo6cmV0cmlldmUoY29udGV4dCkpIHsKKyAgICAgICAgRnJhbWUqIGZyYW1lID0g
c3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0KS0+ZnJhbWUoKTsKKyAgICAgICAgaWYgKGZy
YW1lLT5zY3JpcHQoKS0+Y2FuRXhlY3V0ZVNjcmlwdHMoQWJvdXRUb0V4ZWN1dGVTY3JpcHQpKQor
ICAgICAgICAgICAgcHJveHktPmNhbGxGdW5jdGlvbihoYW5kbGVyRnVuY3Rpb24sIHJlY2VpdmVy
LCAwLCBwYXJhbWV0ZXJzKTsKKyAgICB9Cit9CisKK30KKworI2VuZGlmCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVRyYW5zYWN0aW9uLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01UcmFuc2FjdGlvbi5oCShyZXZpc2lvbiAwKQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01UcmFuc2FjdGlvbi5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBWOERPTVRyYW5zYWN0aW9uX2gKKyNkZWZpbmUg
VjhET01UcmFuc2FjdGlvbl9oCisKKyNpZiBFTkFCTEUoVU5ET19NQU5BR0VSKQorCisjaW5jbHVk
ZSAiRE9NVHJhbnNhY3Rpb24uaCIKKyNpbmNsdWRlICJXb3JsZENvbnRleHRIYW5kbGUuaCIKKyNp
bmNsdWRlIDx2OC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ7CisKK2NsYXNzIFY4RE9NVHJhbnNhY3Rpb24gOiBwdWJsaWMgRE9NVHJhbnNh
Y3Rpb24geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFY4RE9NVHJhbnNhY3Rpb24+
IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IGRp
Y3Rpb25hcnksIGNvbnN0IFdvcmxkQ29udGV4dEhhbmRsZSYpOyAgICAKKyAgICB+VjhET01UcmFu
c2FjdGlvbigpOworICAgIAorICAgIC8vIFByb3ZpZGVzIGFjY2VzcyB0byB0aGUgdW5kZXJseWlu
ZyBoYW5kbGUgZm9yIEdDLiBSZXR1cm5lZAorICAgIC8vIHZhbHVlIGlzIGEgd2VhayBoYW5kbGUg
YW5kIHNvIG5vdCBndWFyYW50ZWVkIHRvIHN0YXkgYWxpdmUuCisgICAgdjg6OlBlcnNpc3RlbnQ8
djg6Ok9iamVjdD4gZGljdGlvbmFyeUpTT2JqZWN0KCkgeyByZXR1cm4gbV9kaWN0aW9uYXJ5OyB9
CisgICAgCisgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGUoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgZXhlY3V0ZUF1dG9tYXRpYygpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB1bmRv
KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlZG8oKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIGJvb2wgaXNBdXRvbWF0aWMoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2lzQXV0b21h
dGljOyB9CisgICAgCisgICAgdm9pZCBkaXNwb3NlRGljdGlvbmFyeU9iamVjdCgpOworCitwcml2
YXRlOgorICAgIFY4RE9NVHJhbnNhY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIHY4OjpM
b2NhbDx2ODo6T2JqZWN0PiBkaWN0aW9uYXJ5LCBjb25zdCBXb3JsZENvbnRleHRIYW5kbGUmKTsK
KyAgICB2b2lkIGNhbGxQcm9wZXJ0eShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgY2hh
ciogcHJvcGVydHlOYW1lKTsKKworICAgIFJlZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBt
X2NvbnRleHQ7CisgICAgV29ybGRDb250ZXh0SGFuZGxlIG1fd29ybGRDb250ZXh0OworICAgIHY4
OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IG1fZGljdGlvbmFyeTsKKyAgICBib29sIG1faXNBdXRv
bWF0aWM7Cit9OworCit9CisKKyNlbmRpZgorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFVuZG9NYW5hZ2VyQ3VzdG9tLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhVbmRvTWFuYWdlckN1c3RvbS5j
cHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhV
bmRvTWFuYWdlckN1c3RvbS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTAyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRp
c3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFVORE9fTUFOQUdFUikKKworI2luY2x1ZGUgIlY4
VW5kb01hbmFnZXIuaCIKKworI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJT
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiVjhET01UcmFuc2FjdGlvbi5oIgor
I2luY2x1ZGUgIlY4RE9NV3JhcHBlci5oIgorI2luY2x1ZGUgIlY4UHJveHkuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitzdGF0aWMgdm9pZCB2aXNpdFRyYW5zYWN0aW9uc0luU3RhY2soVmVj
dG9yPHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4gPiYgZGljdGlvbmFyaWVzLCBjb25zdCBVbmRv
TWFuYWdlclN0YWNrJiBzdGFjaykKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0YWNr
LnNpemUoKTsgKytpKSB7CisgICAgICAgIGNvbnN0IFVuZG9NYW5hZ2VyRW50cnkmIGVudHJ5ID0g
KihzdGFja1tpXS5nZXQoKSk7CisgICAgICAgIGlmIChlbnRyeS5pc0VtcHR5KCkpCisgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKGVudHJ5WzBdLT5pc0RPTVRyYW5zYWN0aW9uKCkp
IHsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgZW50cnkuc2l6ZSgpOyArK2op
IHsKKyAgICAgICAgICAgICAgICBVbmRvU3RlcCogc3RlcCA9IGVudHJ5W2pdLmdldCgpOworICAg
ICAgICAgICAgICAgIEFTU0VSVChzdGVwLT5pc0RPTVRyYW5zYWN0aW9uKCkpOworICAgICAgICAg
ICAgICAgIFY4RE9NVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uID0gc3RhdGljX2Nhc3Q8VjhET01U
cmFuc2FjdGlvbio+KHN0ZXApOworICAgICAgICAgICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpP
YmplY3Q+IGRpY3Rpb25hcnkgPSB0cmFuc2FjdGlvbi0+ZGljdGlvbmFyeUpTT2JqZWN0KCk7Cisg
ICAgICAgICAgICAgICAgaWYgKCFkaWN0aW9uYXJ5LklzRW1wdHkoKSkKKyAgICAgICAgICAgICAg
ICAgICAgZGljdGlvbmFyaWVzLmFwcGVuZChkaWN0aW9uYXJ5KTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIH0KK30KKwordm9pZCBWOFVuZG9NYW5hZ2VyOjp2aXNpdERPTVdyYXBwZXIo
RE9NRGF0YVN0b3JlKiBzdG9yZSwgdm9pZCogb2JqZWN0LCB2ODo6UGVyc2lzdGVudDx2ODo6T2Jq
ZWN0PiB3cmFwcGVyKQoreworICAgIFVuZG9NYW5hZ2VyKiB1bmRvTWFuYWdlciA9IHN0YXRpY19j
YXN0PFVuZG9NYW5hZ2VyKj4ob2JqZWN0KTsKKyAgICBWZWN0b3I8djg6OlBlcnNpc3RlbnQ8djg6
OlZhbHVlPiA+IGRpY3Rpb25hcmllczsKKyAgICB2aXNpdFRyYW5zYWN0aW9uc0luU3RhY2soZGlj
dGlvbmFyaWVzLCB1bmRvTWFuYWdlci0+dW5kb1N0YWNrKCkpOworICAgIHZpc2l0VHJhbnNhY3Rp
b25zSW5TdGFjayhkaWN0aW9uYXJpZXMsIHVuZG9NYW5hZ2VyLT5yZWRvU3RhY2soKSk7CisgICAg
aWYgKCFkaWN0aW9uYXJpZXMuaXNFbXB0eSgpKQorICAgICAgICB2ODo6Vjg6OkFkZEltcGxpY2l0
UmVmZXJlbmNlcyh3cmFwcGVyLCBkaWN0aW9uYXJpZXMuZGF0YSgpLCBkaWN0aW9uYXJpZXMuc2l6
ZSgpKTsKK30KKwordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4VW5kb01hbmFnZXI6OnRyYW5zYWN0
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBJTkNfU1RBVFMoIkRP
TS5VbmRvTWFuYWdlci50cmFuc2FjdCIpOworICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMikKKyAg
ICAgICAgcmV0dXJuIFY4UHJveHk6OnRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5H
ZXRJc29sYXRlKCkpOworICAgIFVuZG9NYW5hZ2VyKiBpbXAgPSBWOFVuZG9NYW5hZ2VyOjp0b05h
dGl2ZShhcmdzLkhvbGRlcigpKTsKKyAgICAKKyAgICBFWENFUFRJT05fQkxPQ0sodjg6OkxvY2Fs
PHY4OjpWYWx1ZT4sIGRpY3Rpb25hcnksIE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAs
IERlZmF1bHRJc1VuZGVmaW5lZCkpOworICAgIGlmIChkaWN0aW9uYXJ5LklzRW1wdHkoKSB8fCAh
ZGljdGlvbmFyeS0+SXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIFY4UHJveHk6OnRocm93VHlw
ZUVycm9yKCJUaGUgZmlyc3QgYXJndW1lbnQgaXMgbm90IG9mIHR5cGUgRE9NVHJhbnNhY3Rpb24u
IiwgYXJncy5HZXRJc29sYXRlKCkpOworICAgIAorICAgIEVYQ0VQVElPTl9CTE9DSyhib29sLCBt
ZXJnZSwgTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMSwgRGVmYXVsdElzVW5kZWZpbmVk
KS0+Qm9vbGVhblZhbHVlKCkpOworICAgIAorICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQgPSBnZXRTY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgaWYgKCFjb250ZXh0KQor
ICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CisgICAgCisgICAgUmVmUHRy
PFY4RE9NVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uID0gVjhET01UcmFuc2FjdGlvbjo6Y3JlYXRl
KGNvbnRleHQsIHY4OjpMb2NhbDx2ODo6T2JqZWN0Pjo6Q2FzdChkaWN0aW9uYXJ5KSwgV29ybGRD
b250ZXh0SGFuZGxlKFVzZUN1cnJlbnRXb3JsZCkpOworICAgIAorICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOworICAgIGltcC0+dHJhbnNhY3QodHJhbnNhY3Rpb24sIG1lcmdlLCBlYyk7CisgICAg
aWYgKGVjKQorICAgICAgICByZXR1cm4gVjhQcm94eTo6c2V0RE9NRXhjZXB0aW9uKGVjLCBhcmdz
LkdldElzb2xhdGUoKSk7CisgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoVU5ET19NQU5BR0VS
KQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlv
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5
bGVEZWNsYXJhdGlvbi5jcHAJKHJldmlzaW9uIDEyMzI1NSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nz
cy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
NCw2ICsyNCw3IEBACiAKICNpbmNsdWRlICJDU1NQYXJzZXIuaCIKICNpbmNsdWRlICJDU1NTdHls
ZVNoZWV0LmgiCisjaW5jbHVkZSAiRE9NVHJhbnNhY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MTmFt
ZXMuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJN
dXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cC5oIgpAQCAtMTIwLDYgKzEyMSw3MCBAQCBib29s
IFN0eWxlQXR0cmlidXRlTXV0YXRpb25TY29wZTo6c19zaG91CiAKIH0gLy8gbmFtZXNwYWNlCiAK
KyNpZiBFTkFCTEUoVU5ET19NQU5BR0VSKQorbmFtZXNwYWNlIHsKKyAgICAKK2NsYXNzIERPTVRy
YW5zYWN0aW9uU2NvcGUgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERPTVRyYW5zYWN0aW9u
U2NvcGUpOworcHVibGljOgorICAgIERPTVRyYW5zYWN0aW9uU2NvcGUoUHJvcGVydHlTZXRDU1NT
dHlsZURlY2xhcmF0aW9uKiBkZWNsKQorICAgIHsKKyAgICAgICAgKytzX3Njb3BlQ291bnQ7Cisg
ICAgICAgIAorICAgICAgICBpZiAoc19zY29wZUNvdW50ICE9IDEpIHsKKyAgICAgICAgICAgIEFT
U0VSVChzX2N1cnJlbnREZWNsID09IGRlY2wpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisgICAgICAgIAorICAgICAgICBBU1NFUlQoIXNfY3VycmVudERlY2wpOworICAgICAgICBz
X2N1cnJlbnREZWNsID0gZGVjbDsKKyAgICAgICAgCisgICAgICAgIGlmICghc19jdXJyZW50RGVj
bC0+cGFyZW50RWxlbWVudCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICAg
ICAgbV9pc1JlY29yZGluZyA9IERPTVRyYW5zYWN0aW9uOjppc1JlY29yZGluZ0F1dG9tYXRpY1Ry
YW5zYWN0aW9uKHNfY3VycmVudERlY2wtPnBhcmVudEVsZW1lbnQoKSk7CisgICAgICAgIGlmICgh
bV9pc1JlY29yZGluZykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgICAgIG1f
b2xkVmFsdWUgPSBzX2N1cnJlbnREZWNsLT5wYXJlbnRFbGVtZW50KCktPmdldEF0dHJpYnV0ZShI
VE1MTmFtZXM6OnN0eWxlQXR0cik7CisgICAgfQorICAgIAorICAgIH5ET01UcmFuc2FjdGlvblNj
b3BlKCkKKyAgICB7CisgICAgICAgIC0tc19zY29wZUNvdW50OworICAgICAgICBpZiAoc19zY29w
ZUNvdW50KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICAgICAgaWYgKG1faXNS
ZWNvcmRpbmcgJiYgc19zaG91bGREZWxpdmVyKSB7CisgICAgICAgICAgICBET01UcmFuc2FjdGlv
bjo6YWRkRE9NVHJhbnNhY3Rpb25TdGVwKEF0dHJDaGFuZ2luZ0RPTVRyYW5zYWN0aW9uU3RlcDo6
Y3JlYXRlKAorICAgICAgICAgICAgICAgIHNfY3VycmVudERlY2wtPnBhcmVudEVsZW1lbnQoKSwg
SFRNTE5hbWVzOjpzdHlsZUF0dHIsIG1fb2xkVmFsdWUsIHNfY3VycmVudERlY2wtPnBhcmVudEVs
ZW1lbnQoKS0+Z2V0QXR0cmlidXRlKEhUTUxOYW1lczo6c3R5bGVBdHRyKSkpOworICAgICAgICB9
CisgICAgICAgIHNfc2hvdWxkRGVsaXZlciA9IGZhbHNlOworICAgICAgICAKKyAgICAgICAgc19j
dXJyZW50RGVjbCA9IDA7CisgICAgfQorICAgIAorICAgIHZvaWQgYWRkRE9NVHJhbnNhY3Rpb25T
dGVwKCkKKyAgICB7CisgICAgICAgIHNfc2hvdWxkRGVsaXZlciA9IHRydWU7CisgICAgfQorICAg
IAorcHJpdmF0ZToKKyAgICBzdGF0aWMgdW5zaWduZWQgc19zY29wZUNvdW50OworICAgIHN0YXRp
YyBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24qIHNfY3VycmVudERlY2w7CisgICAgc3Rh
dGljIGJvb2wgc19zaG91bGREZWxpdmVyOworICAgIAorICAgIEF0b21pY1N0cmluZyBtX29sZFZh
bHVlOworICAgIGJvb2wgbV9pc1JlY29yZGluZzsKK307CisKK3Vuc2lnbmVkIERPTVRyYW5zYWN0
aW9uU2NvcGU6OnNfc2NvcGVDb3VudCA9IDA7CitQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRp
b24qIERPTVRyYW5zYWN0aW9uU2NvcGU6OnNfY3VycmVudERlY2wgPSAwOworYm9vbCBET01UcmFu
c2FjdGlvblNjb3BlOjpzX3Nob3VsZERlbGl2ZXIgPSBmYWxzZTsKKyAgICAKK30gLy8gbmFtZXNw
YWNlCisjZW5kaWYKKwogdm9pZCBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OnJlZigp
CiB7IAogICAgIG1fcHJvcGVydHlTZXQtPnJlZigpOwpAQCAtMTUyLDYgKzIxNyw5IEBAIHZvaWQg
UHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpzZXQKICNpZiBFTkFCTEUoTVVUQVRJT05f
T0JTRVJWRVJTKQogICAgIFN0eWxlQXR0cmlidXRlTXV0YXRpb25TY29wZSBtdXRhdGlvblNjb3Bl
KHRoaXMpOwogI2VuZGlmCisjaWYgRU5BQkxFKFVORE9fTUFOQUdFUikKKyAgICBET01UcmFuc2Fj
dGlvblNjb3BlIHRyYW5zYWN0aW9uU2NvcGUodGhpcyk7CisjZW5kaWYKICAgICB3aWxsTXV0YXRl
KCk7CiAKICAgICBlYyA9IDA7CkBAIC0xNjMsNiArMjMxLDkgQEAgdm9pZCBQcm9wZXJ0eVNldENT
U1N0eWxlRGVjbGFyYXRpb246OnNldAogI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpCiAg
ICAgbXV0YXRpb25TY29wZS5lbnF1ZXVlTXV0YXRpb25SZWNvcmQoKTsgICAgCiAjZW5kaWYKKyNp
ZiBFTkFCTEUoVU5ET19NQU5BR0VSKQorICAgIHRyYW5zYWN0aW9uU2NvcGUuYWRkRE9NVHJhbnNh
Y3Rpb25TdGVwKCk7CisjZW5kaWYKIH0KIAogUGFzc1JlZlB0cjxDU1NWYWx1ZT4gUHJvcGVydHlT
ZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKGNvbnN0IFN0cmluZyYg
cHJvcGVydHlOYW1lKQpAQCAtMjEzLDYgKzI4NCw5IEBAIHZvaWQgUHJvcGVydHlTZXRDU1NTdHls
ZURlY2xhcmF0aW9uOjpzZXQKICNpZiBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKQogICAgIFN0
eWxlQXR0cmlidXRlTXV0YXRpb25TY29wZSBtdXRhdGlvblNjb3BlKHRoaXMpOwogI2VuZGlmCisj
aWYgRU5BQkxFKFVORE9fTUFOQUdFUikKKyAgICBET01UcmFuc2FjdGlvblNjb3BlIHRyYW5zYWN0
aW9uU2NvcGUodGhpcyk7CisjZW5kaWYKICAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQgPSBj
c3NQcm9wZXJ0eUlEKHByb3BlcnR5TmFtZSk7CiAgICAgaWYgKCFwcm9wZXJ0eUlEKQogICAgICAg
ICByZXR1cm47CkBAIC0yMzIsNiArMzA2LDkgQEAgdm9pZCBQcm9wZXJ0eVNldENTU1N0eWxlRGVj
bGFyYXRpb246OnNldAogI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpCiAgICAgICAgIG11
dGF0aW9uU2NvcGUuZW5xdWV1ZU11dGF0aW9uUmVjb3JkKCk7CiAjZW5kaWYKKyNpZiBFTkFCTEUo
VU5ET19NQU5BR0VSKQorICAgICAgICB0cmFuc2FjdGlvblNjb3BlLmFkZERPTVRyYW5zYWN0aW9u
U3RlcCgpOworI2VuZGlmCiAgICAgfQogfQogCkBAIC0yNDAsNiArMzE3LDkgQEAgU3RyaW5nIFBy
b3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6cgogI2lmIEVOQUJMRShNVVRBVElPTl9PQlNF
UlZFUlMpCiAgICAgU3R5bGVBdHRyaWJ1dGVNdXRhdGlvblNjb3BlIG11dGF0aW9uU2NvcGUodGhp
cyk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoVU5ET19NQU5BR0VSKQorICAgIERPTVRyYW5zYWN0aW9u
U2NvcGUgdHJhbnNhY3Rpb25TY29wZSh0aGlzKTsKKyNlbmRpZgogICAgIENTU1Byb3BlcnR5SUQg
cHJvcGVydHlJRCA9IGNzc1Byb3BlcnR5SUQocHJvcGVydHlOYW1lKTsKICAgICBpZiAoIXByb3Bl
cnR5SUQpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKQEAgLTI1Niw2ICszMzYsOSBAQCBTdHJp
bmcgUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpyCiAjaWYgRU5BQkxFKE1VVEFUSU9O
X09CU0VSVkVSUykKICAgICAgICAgbXV0YXRpb25TY29wZS5lbnF1ZXVlTXV0YXRpb25SZWNvcmQo
KTsKICNlbmRpZgorI2lmIEVOQUJMRShVTkRPX01BTkFHRVIpCisgICAgICAgIHRyYW5zYWN0aW9u
U2NvcGUuYWRkRE9NVHJhbnNhY3Rpb25TdGVwKCk7CisjZW5kaWYKICAgICB9CiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KQEAgLTI3NSw2ICszNTgsOSBAQCB2b2lkIFByb3BlcnR5U2V0Q1NTU3R5bGVE
ZWNsYXJhdGlvbjo6c2V0CiAjaWYgRU5BQkxFKE1VVEFUSU9OX09CU0VSVkVSUykKICAgICBTdHls
ZUF0dHJpYnV0ZU11dGF0aW9uU2NvcGUgbXV0YXRpb25TY29wZSh0aGlzKTsKICNlbmRpZgorI2lm
IEVOQUJMRShVTkRPX01BTkFHRVIpCisgICAgRE9NVHJhbnNhY3Rpb25TY29wZSB0cmFuc2FjdGlv
blNjb3BlKHRoaXMpOworI2VuZGlmCiAgICAgd2lsbE11dGF0ZSgpOwogCiAgICAgZWMgPSAwOwpA
QCAtMjg2LDYgKzM3Miw5IEBAIHZvaWQgUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpz
ZXQKICNpZiBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKQogICAgICAgICBtdXRhdGlvblNjb3Bl
LmVucXVldWVNdXRhdGlvblJlY29yZCgpOwogI2VuZGlmCisjaWYgRU5BQkxFKFVORE9fTUFOQUdF
UikKKyAgICAgICAgdHJhbnNhY3Rpb25TY29wZS5hZGRET01UcmFuc2FjdGlvblN0ZXAoKTsKKyNl
bmRpZgogICAgIH0KIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcAko
cmV2aXNpb24gMTIzMjU1KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiQ2hhcmFjdGVyRGF0YS5oIgogCisjaW5jbHVkZSAiRE9NVHJhbnNhY3Rpb24uaCIK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRl
ICJFeGNlcHRpb25Db2RlLmgiCkBAIC0xODMsNiArMTg0LDEzIEBAIHZvaWQgQ2hhcmFjdGVyRGF0
YTo6c2V0Tm9kZVZhbHVlKGNvbnN0IFMKIAogdm9pZCBDaGFyYWN0ZXJEYXRhOjpzZXREYXRhQW5k
VXBkYXRlKGNvbnN0IFN0cmluZyYgbmV3RGF0YSwgdW5zaWduZWQgb2Zmc2V0T2ZSZXBsYWNlZERh
dGEsIHVuc2lnbmVkIG9sZExlbmd0aCwgdW5zaWduZWQgbmV3TGVuZ3RoKQogeworI2lmIEVOQUJM
RShVTkRPX01BTkFHRVIpCisgICAgaWYgKERPTVRyYW5zYWN0aW9uOjppc1JlY29yZGluZ0F1dG9t
YXRpY1RyYW5zYWN0aW9uKHRoaXMpKSB7CisgICAgICAgIGNvbnN0IFN0cmluZyYgcmVwbGFjaW5n
RGF0YSA9IG5ld0RhdGEuc3Vic3RyaW5nKG9mZnNldE9mUmVwbGFjZWREYXRhLCBuZXdMZW5ndGgp
OworICAgICAgICBjb25zdCBTdHJpbmcmIHJlcGxhY2VkRGF0YSA9IG1fZGF0YS5zdWJzdHJpbmco
b2Zmc2V0T2ZSZXBsYWNlZERhdGEsIG9sZExlbmd0aCk7CisgICAgICAgIERPTVRyYW5zYWN0aW9u
OjphZGRET01UcmFuc2FjdGlvblN0ZXAoRGF0YVJlcGxhY2luZ0RPTVRyYW5zYWN0aW9uU3RlcDo6
Y3JlYXRlKHRoaXMsIG9mZnNldE9mUmVwbGFjZWREYXRhLCBvbGRMZW5ndGgsIHJlcGxhY2luZ0Rh
dGEsIHJlcGxhY2VkRGF0YSkpOworICAgIH0KKyNlbmRpZgogICAgIFN0cmluZyBvbGREYXRhID0g
bV9kYXRhOwogICAgIG1fZGF0YSA9IG5ld0RhdGE7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Rv
bS9Db250YWluZXJOb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vQ29u
dGFpbmVyTm9kZS5jcHAJKHJldmlzaW9uIDEyMzI1NSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9D
b250YWluZXJOb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsNyBAQAogCiAjaW5j
bHVkZSAiQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5oIgogI2luY2x1ZGUgIkNvbnRhaW5lck5vZGVB
bGdvcml0aG1zLmgiCisjaW5jbHVkZSAiRE9NVHJhbnNhY3Rpb24uaCIKICNpbmNsdWRlICJEZWxl
dGVCdXR0b25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUg
IkV4Y2VwdGlvbkNvZGUuaCIKQEAgLTMxNSw2ICszMTYsMTAgQEAgc3RhdGljIHZvaWQgd2lsbFJl
bW92ZUNoaWxkKE5vZGUqIGNoaWxkKQogICAgIENoaWxkTGlzdE11dGF0aW9uU2NvcGUoY2hpbGQt
PnBhcmVudE5vZGUoKSkud2lsbFJlbW92ZUNoaWxkKGNoaWxkKTsKICAgICBjaGlsZC0+bm90aWZ5
TXV0YXRpb25PYnNlcnZlcnNOb2RlV2lsbERldGFjaCgpOwogI2VuZGlmCisjaWYgRU5BQkxFKFVO
RE9fTUFOQUdFUikKKyAgICBpZiAoRE9NVHJhbnNhY3Rpb246OmlzUmVjb3JkaW5nQXV0b21hdGlj
VHJhbnNhY3Rpb24oY2hpbGQtPnBhcmVudE5vZGUoKSkpCisgICAgICAgIERPTVRyYW5zYWN0aW9u
OjphZGRET01UcmFuc2FjdGlvblN0ZXAoTm9kZVJlbW92aW5nRE9NVHJhbnNhY3Rpb25TdGVwOjpj
cmVhdGUoY2hpbGQtPnBhcmVudE5vZGUoKSwgY2hpbGQpKTsKKyNlbmRpZgogCiAgICAgZGlzcGF0
Y2hDaGlsZFJlbW92YWxFdmVudHMoY2hpbGQpOwogICAgIGNoaWxkLT5kb2N1bWVudCgpLT5ub2Rl
V2lsbEJlUmVtb3ZlZChjaGlsZCk7IC8vIGUuZy4gbXV0YXRpb24gZXZlbnQgbGlzdGVuZXIgY2Fu
IGNyZWF0ZSBhIG5ldyByYW5nZS4KQEAgLTMzMSw2ICszMzYsOSBAQCBzdGF0aWMgdm9pZCB3aWxs
UmVtb3ZlQ2hpbGRyZW4oQ29udGFpbmVyCiAjaWYgRU5BQkxFKE1VVEFUSU9OX09CU0VSVkVSUykK
ICAgICBDaGlsZExpc3RNdXRhdGlvblNjb3BlIG11dGF0aW9uKGNvbnRhaW5lcik7CiAjZW5kaWYK
KyNpZiBFTkFCTEUoVU5ET19NQU5BR0VSKQorICAgIGJvb2wgaXNSZWNvcmRpbmdBdXRvbWF0aWNU
cmFuc2FjdGlvbiA9IERPTVRyYW5zYWN0aW9uOjppc1JlY29yZGluZ0F1dG9tYXRpY1RyYW5zYWN0
aW9uKGNvbnRhaW5lcik7CisjZW5kaWYKIAogICAgIGZvciAoTm9kZVZlY3Rvcjo6Y29uc3RfaXRl
cmF0b3IgaXQgPSBjaGlsZHJlbi5iZWdpbigpOyBpdCAhPSBjaGlsZHJlbi5lbmQoKTsgaXQrKykg
ewogICAgICAgICBOb2RlKiBjaGlsZCA9IGl0LT5nZXQoKTsKQEAgLTMzOSw2ICszNDcsMTAgQEAg
c3RhdGljIHZvaWQgd2lsbFJlbW92ZUNoaWxkcmVuKENvbnRhaW5lcgogICAgICAgICBtdXRhdGlv
bi53aWxsUmVtb3ZlQ2hpbGQoY2hpbGQpOwogICAgICAgICBjaGlsZC0+bm90aWZ5TXV0YXRpb25P
YnNlcnZlcnNOb2RlV2lsbERldGFjaCgpOwogI2VuZGlmCisjaWYgRU5BQkxFKFVORE9fTUFOQUdF
UikKKyAgICAgICAgaWYgKGlzUmVjb3JkaW5nQXV0b21hdGljVHJhbnNhY3Rpb24pCisgICAgICAg
ICAgICBET01UcmFuc2FjdGlvbjo6YWRkRE9NVHJhbnNhY3Rpb25TdGVwKE5vZGVSZW1vdmluZ0RP
TVRyYW5zYWN0aW9uU3RlcDo6Y3JlYXRlKGNvbnRhaW5lciwgY2hpbGQpKTsKKyNlbmRpZgogCiAg
ICAgICAgIC8vIGZpcmUgcmVtb3ZlZCBmcm9tIGRvY3VtZW50IG11dGF0aW9uIGV2ZW50cy4KICAg
ICAgICAgZGlzcGF0Y2hDaGlsZFJlbW92YWxFdmVudHMoY2hpbGQpOwpAQCAtOTcyLDYgKzk4NCwx
MSBAQCBzdGF0aWMgdm9pZCB1cGRhdGVUcmVlQWZ0ZXJJbnNlcnRpb24oQ29uCiAjaWYgRU5BQkxF
KE1VVEFUSU9OX09CU0VSVkVSUykKICAgICBDaGlsZExpc3RNdXRhdGlvblNjb3BlKHBhcmVudCku
Y2hpbGRBZGRlZChjaGlsZCk7CiAjZW5kaWYKKyAgICAKKyNpZiBFTkFCTEUoVU5ET19NQU5BR0VS
KQorICAgIGlmIChET01UcmFuc2FjdGlvbjo6aXNSZWNvcmRpbmdBdXRvbWF0aWNUcmFuc2FjdGlv
bihwYXJlbnQpKQorICAgICAgICBET01UcmFuc2FjdGlvbjo6YWRkRE9NVHJhbnNhY3Rpb25TdGVw
KE5vZGVJbnNlcnRpbmdET01UcmFuc2FjdGlvblN0ZXA6OmNyZWF0ZShwYXJlbnQsIGNoaWxkKSk7
CisjZW5kaWYKIAogICAgIHBhcmVudC0+Y2hpbGRyZW5DaGFuZ2VkKGZhbHNlLCBjaGlsZC0+cHJl
dmlvdXNTaWJsaW5nKCksIGNoaWxkLT5uZXh0U2libGluZygpLCAxKTsKIApJbmRleDogU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmNwcAkocmV2aXNpb24gMTIzMjU1KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiQ2xp
ZW50UmVjdC5oIgogI2luY2x1ZGUgIkNsaWVudFJlY3RMaXN0LmgiCiAjaW5jbHVkZSAiRE9NVG9r
ZW5MaXN0LmgiCisjaW5jbHVkZSAiRE9NVHJhbnNhY3Rpb24uaCIKICNpbmNsdWRlICJEYXRhc2V0
RE9NU3RyaW5nTWFwLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJEb2N1bWVu
dEZyYWdtZW50LmgiCkBAIC0yMDIzLDYgKzIwMjQsMTEgQEAgdm9pZCBFbGVtZW50Ojp3aWxsTW9k
aWZ5QXR0cmlidXRlKGNvbnN0IAogICAgICAgICByZWNpcGllbnRzLT5lbnF1ZXVlTXV0YXRpb25S
ZWNvcmQoTXV0YXRpb25SZWNvcmQ6OmNyZWF0ZUF0dHJpYnV0ZXModGhpcywgbmFtZSwgb2xkVmFs
dWUpKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKFVORE9fTUFOQUdFUikKKyAgICBpZiAoRE9NVHJh
bnNhY3Rpb246OmlzUmVjb3JkaW5nQXV0b21hdGljVHJhbnNhY3Rpb24odGhpcykpCisgICAgICAg
IERPTVRyYW5zYWN0aW9uOjphZGRET01UcmFuc2FjdGlvblN0ZXAoQXR0ckNoYW5naW5nRE9NVHJh
bnNhY3Rpb25TdGVwOjpjcmVhdGUodGhpcywgbmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKSk7Cisj
ZW5kaWYKKwogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjp3aWxsTW9kaWZ5RE9NQXR0cihkb2N1bWVudCgpLCB0aGlzLCBvbGRWYWx1ZSwgbmV3VmFs
dWUpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRD
b21tYW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVF
ZGl0Q29tbWFuZC5oCShyZXZpc2lvbiAxMjMyNTUpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0NvbXBvc2l0ZUVkaXRDb21tYW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDkgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB1bmFwcGx5KCkgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCB2b2lkIHJlYXBwbHkoKSBPVkVSUklERTsKICAgICBFZGl0QWN0aW9uIGVkaXRpbmdBY3Rpb24o
KSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2VkaXRBY3Rpb247IH0KKyNpZiBFTkFCTEUoVU5E
T19NQU5BR0VSKQorICAgIGJvb2wgaXNET01UcmFuc2FjdGlvbigpIGNvbnN0IE9WRVJSSURFIHsg
cmV0dXJuIGZhbHNlOyB9CisjZW5kaWYKICAgICB2b2lkIGFwcGVuZChTaW1wbGVFZGl0Q29tbWFu
ZCopOwogICAgIGJvb2wgd2FzQ3JlYXRlTGlua0NvbW1hbmQoKSBjb25zdCB7IHJldHVybiBtX2Vk
aXRBY3Rpb24gPT0gRWRpdEFjdGlvbkNyZWF0ZUxpbms7IH0KIApJbmRleDogU291cmNlL1dlYkNv
cmUvZWRpdGluZy9ET01UcmFuc2FjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZWRpdGluZy9ET01UcmFuc2FjdGlvbi5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0RPTVRyYW5zYWN0aW9uLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwx
MDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRE9NVHJhbnNhY3Rpb24uaCIKKwor
I2lmIEVOQUJMRShVTkRPX01BTkFHRVIpCisKKyNpbmNsdWRlICJOb2RlLmgiCisjaW5jbHVkZSAi
VW5kb01hbmFnZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitET01UcmFuc2FjdGlvbiog
RE9NVHJhbnNhY3Rpb246OnNfcmVjb3JkaW5nRE9NVHJhbnNhY3Rpb24gPSAwOworICAgIAorRE9N
VHJhbnNhY3Rpb246OkRPTVRyYW5zYWN0aW9uKCkKKyAgICA6IG1fdW5kb01hbmFnZXIoMCkKK3sK
K30KKyAgICAKK3ZvaWQgRE9NVHJhbnNhY3Rpb246OmFwcGx5KCkKK3sKKyAgICBpZiAoaXNBdXRv
bWF0aWMoKSkgeworICAgICAgICBzX3JlY29yZGluZ0RPTVRyYW5zYWN0aW9uID0gdGhpczsKKyAg
ICAgICAgbV9jaGFuZ2VzID0gYWRvcHRQdHIobmV3IFZlY3RvcjxSZWZQdHI8RE9NVHJhbnNhY3Rp
b25TdGVwPiA+KTsKKyAgICAgICAgZXhlY3V0ZUF1dG9tYXRpYygpOworICAgICAgICBzX3JlY29y
ZGluZ0RPTVRyYW5zYWN0aW9uID0gMDsKKyAgICB9IGVsc2UKKyAgICAgICAgZXhlY3V0ZSgpOwor
fQorCit2b2lkIERPTVRyYW5zYWN0aW9uOjp1bmFwcGx5KCkKK3sKKyAgICBpZiAoaXNBdXRvbWF0
aWMoKSkgeworICAgICAgICBmb3IgKHNpemVfdCBpID0gbV9jaGFuZ2VzLT5zaXplKCk7IGkgPiAw
OyAtLWkpCisgICAgICAgICAgICBtX2NoYW5nZXMtPmF0KGkgLSAxKS0+dW5hcHBseSgpOworICAg
IH0gZWxzZQorICAgICAgICB1bmRvKCk7CisgICAgCisgICAgaWYgKG1fdW5kb01hbmFnZXIpCisg
ICAgICAgIG1fdW5kb01hbmFnZXItPnJlZ2lzdGVyUmVkb1N0ZXAodGhpcyk7Cit9CisKK3ZvaWQg
RE9NVHJhbnNhY3Rpb246OnJlYXBwbHkoKQoreworICAgIGlmIChpc0F1dG9tYXRpYygpKSB7Cisg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9jaGFuZ2VzLT5zaXplKCk7ICsraSkKKyAg
ICAgICAgICAgIG1fY2hhbmdlcy0+YXQoaSktPnJlYXBwbHkoKTsKKyAgICB9IGVsc2UKKyAgICAg
ICAgcmVkbygpOworICAgIAorICAgIGlmIChtX3VuZG9NYW5hZ2VyKQorICAgICAgICBtX3VuZG9N
YW5hZ2VyLT5yZWdpc3RlclVuZG9TdGVwKHRoaXMpOworfQorCitib29sIERPTVRyYW5zYWN0aW9u
Ojppc1JlY29yZGluZ0F1dG9tYXRpY1RyYW5zYWN0aW9uKE5vZGUqIG5vZGUpCit7CisgICAgaWYg
KCFzX3JlY29yZGluZ0RPTVRyYW5zYWN0aW9uKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
Tm9kZSogaG9zdCA9IHNfcmVjb3JkaW5nRE9NVHJhbnNhY3Rpb24tPm1fdW5kb01hbmFnZXItPnVu
ZG9TY29wZUhvc3QoKTsKKyAgICBpZiAoIWhvc3QpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICByZXR1cm4gaG9zdC0+Y29udGFpbnMobm9kZSk7Cit9CisKK3ZvaWQgRE9NVHJhbnNhY3Rpb246
OmFkZERPTVRyYW5zYWN0aW9uU3RlcChQYXNzUmVmUHRyPERPTVRyYW5zYWN0aW9uU3RlcD4gY2hh
bmdlKQoreworICAgIEFTU0VSVChzX3JlY29yZGluZ0RPTVRyYW5zYWN0aW9uKTsKKyAgICBzX3Jl
Y29yZGluZ0RPTVRyYW5zYWN0aW9uLT5tX2NoYW5nZXMtPmFwcGVuZChjaGFuZ2UpOworfQorCit9
CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9ET01UcmFuc2FjdGlvbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRE9NVHJhbnNhY3Rpb24uaAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRE9NVHJhbnNhY3Rpb24uaAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRE9NVHJhbnNhY3Rpb25faAorI2Rl
ZmluZSBET01UcmFuc2FjdGlvbl9oCisKKyNpZiBFTkFCTEUoVU5ET19NQU5BR0VSKQorCisjaW5j
bHVkZSAiRE9NVHJhbnNhY3Rpb25TdGVwLmgiCisjaW5jbHVkZSAiVW5kb1N0ZXAuaCIKKyNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIE5vZGU7CitjbGFzcyBVbmRvTWFuYWdlcjsKKworY2xhc3MgRE9N
VHJhbnNhY3Rpb24gOiBwdWJsaWMgVW5kb1N0ZXAgeworcHVibGljOgorICAgIERPTVRyYW5zYWN0
aW9uKCk7CisgICAgdmlydHVhbCB+RE9NVHJhbnNhY3Rpb24oKSB7IH0KKyAgICAKKyAgICB2b2lk
IGFwcGx5KCk7CisgICAgdm9pZCB1bmFwcGx5KCkgT1ZFUlJJREU7CisgICAgdm9pZCByZWFwcGx5
KCkgT1ZFUlJJREU7CisgICAgCisgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGUoKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGV4ZWN1dGVBdXRvbWF0aWMoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVu
ZG8oKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlZG8oKSA9IDA7CisgICAgdmlydHVhbCBib29s
IGlzQXV0b21hdGljKCkgY29uc3QgPSAwOworICAgIAorICAgIEVkaXRBY3Rpb24gZWRpdGluZ0Fj
dGlvbigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIEVkaXRBY3Rpb25VbnNwZWNpZmllZDsgfQor
ICAgIGJvb2wgaXNET01UcmFuc2FjdGlvbigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7
IH0KKyAgICAKKyAgICBVbmRvTWFuYWdlciogdW5kb01hbmFnZXIoKSBjb25zdCB7IHJldHVybiBt
X3VuZG9NYW5hZ2VyOyB9CisgICAgdm9pZCBzZXRVbmRvTWFuYWdlcihVbmRvTWFuYWdlciogdW5k
b01hbmFnZXIpIHsgbV91bmRvTWFuYWdlciA9IHVuZG9NYW5hZ2VyOyB9CisgICAgCisgICAgc3Rh
dGljIGJvb2wgaXNSZWNvcmRpbmdBdXRvbWF0aWNUcmFuc2FjdGlvbihOb2RlKik7CisgICAgc3Rh
dGljIHZvaWQgYWRkRE9NVHJhbnNhY3Rpb25TdGVwKFBhc3NSZWZQdHI8RE9NVHJhbnNhY3Rpb25T
dGVwPik7CisKK3ByaXZhdGU6CisgICAgVW5kb01hbmFnZXIqIG1fdW5kb01hbmFnZXI7CisgICAg
T3duUHRyPFZlY3RvcjxSZWZQdHI8RE9NVHJhbnNhY3Rpb25TdGVwPiA+ID4gbV9jaGFuZ2VzOwor
ICAgIAorICAgIHN0YXRpYyBET01UcmFuc2FjdGlvbiogc19yZWNvcmRpbmdET01UcmFuc2FjdGlv
bjsKK307CisKK30KKworI2VuZGlmCisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvZWRp
dGluZy9ET01UcmFuc2FjdGlvblN0ZXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRE9NVHJhbnNhY3Rpb25TdGVwLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRE9NVHJhbnNhY3Rpb25TdGVwLmNwcAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwxNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1l
dDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRE9NVHJhbnNhY3Rpb25T
dGVwLmgiCisKKyNpZiBFTkFCTEUoVU5ET19NQU5BR0VSKQorCisjaW5jbHVkZSAiQ2hhcmFjdGVy
RGF0YS5oIgorI2luY2x1ZGUgIkNvbnRhaW5lck5vZGUuaCIKKyNpbmNsdWRlICJFbGVtZW50Lmgi
CisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIk5vZGUuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitOb2RlSW5zZXJ0aW5nRE9NVHJhbnNhY3Rpb25TdGVwOjpOb2RlSW5z
ZXJ0aW5nRE9NVHJhbnNhY3Rpb25TdGVwKE5vZGUqIHBhcmVudCwgTm9kZSogY2hpbGQpCisgICAg
OiBtX3BhcmVudChwYXJlbnQpCisgICAgLCBtX3JlZkNoaWxkKGNoaWxkLT5uZXh0U2libGluZygp
KQorICAgICwgbV9jaGlsZChjaGlsZCkKK3sKK30KKworUGFzc1JlZlB0cjxOb2RlSW5zZXJ0aW5n
RE9NVHJhbnNhY3Rpb25TdGVwPiBOb2RlSW5zZXJ0aW5nRE9NVHJhbnNhY3Rpb25TdGVwOjpjcmVh
dGUoTm9kZSogcGFyZW50LCBOb2RlKiBjaGlsZCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3
IE5vZGVJbnNlcnRpbmdET01UcmFuc2FjdGlvblN0ZXAocGFyZW50LCBjaGlsZCkpOworfQorCit2
b2lkIE5vZGVJbnNlcnRpbmdET01UcmFuc2FjdGlvblN0ZXA6OnVuYXBwbHkoKQoreworICAgIGlm
IChtX2NoaWxkLmdldCgpICYmIG1fY2hpbGQtPnBhcmVudE5vZGUoKSAhPSBtX3BhcmVudC5nZXQo
KSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChtX3JlZkNoaWxkLmdldCgpICYmIG1fcmVmQ2hp
bGQtPnBhcmVudE5vZGUoKSAhPSBtX3BhcmVudC5nZXQoKSkKKyAgICAgICAgcmV0dXJuOworICAg
IGlmIChtX3JlZkNoaWxkLmdldCgpICYmIG1fcmVmQ2hpbGQtPnByZXZpb3VzU2libGluZygpICE9
IG1fY2hpbGQuZ2V0KCkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBFeGNlcHRpb25Db2Rl
IGVjOworICAgIG1fcGFyZW50LT5yZW1vdmVDaGlsZChtX2NoaWxkLmdldCgpLCBlYyk7Cit9CisK
K3ZvaWQgTm9kZUluc2VydGluZ0RPTVRyYW5zYWN0aW9uU3RlcDo6cmVhcHBseSgpCit7CisgICAg
aWYgKG1fY2hpbGQuZ2V0KCkgJiYgbV9jaGlsZC0+cGFyZW50Tm9kZSgpKQorICAgICAgICByZXR1
cm47CisgICAgaWYgKG1fcmVmQ2hpbGQuZ2V0KCkgJiYgbV9yZWZDaGlsZC0+cGFyZW50Tm9kZSgp
ICE9IG1fcGFyZW50LmdldCgpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgRXhjZXB0aW9u
Q29kZSBlYzsKKyAgICBtX3BhcmVudC0+aW5zZXJ0QmVmb3JlKG1fY2hpbGQsIG1fcmVmQ2hpbGQu
Z2V0KCksIGVjKTsKK30KKworTm9kZVJlbW92aW5nRE9NVHJhbnNhY3Rpb25TdGVwOjpOb2RlUmVt
b3ZpbmdET01UcmFuc2FjdGlvblN0ZXAoTm9kZSogcGFyZW50LCBOb2RlKiBjaGlsZCkKKyAgICA6
IG1fcGFyZW50KHBhcmVudCkKKyAgICAsIG1fcmVmQ2hpbGQoY2hpbGQtPm5leHRTaWJsaW5nKCkp
CisgICAgLCBtX2NoaWxkKGNoaWxkKQoreworfQorCitQYXNzUmVmUHRyPE5vZGVSZW1vdmluZ0RP
TVRyYW5zYWN0aW9uU3RlcD4gTm9kZVJlbW92aW5nRE9NVHJhbnNhY3Rpb25TdGVwOjpjcmVhdGUo
Tm9kZSogcGFyZW50LCBOb2RlKiBjaGlsZCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE5v
ZGVSZW1vdmluZ0RPTVRyYW5zYWN0aW9uU3RlcChwYXJlbnQsIGNoaWxkKSk7Cit9CisKK3ZvaWQg
Tm9kZVJlbW92aW5nRE9NVHJhbnNhY3Rpb25TdGVwOjp1bmFwcGx5KCkKK3sKKyAgICBpZiAobV9j
aGlsZC5nZXQoKSAmJiBtX2NoaWxkLT5wYXJlbnROb2RlKCkpCisgICAgICAgIHJldHVybjsKKyAg
ICBpZiAobV9yZWZDaGlsZC5nZXQoKSAmJiBtX3JlZkNoaWxkLT5wYXJlbnROb2RlKCkgIT0gbV9w
YXJlbnQuZ2V0KCkpCisgICAgICAgIHJldHVybjsKKworICAgIEV4Y2VwdGlvbkNvZGUgZWM7Cisg
ICAgbV9wYXJlbnQtPmluc2VydEJlZm9yZShtX2NoaWxkLCBtX3JlZkNoaWxkLmdldCgpLCBlYyk7
Cit9CisKK3ZvaWQgTm9kZVJlbW92aW5nRE9NVHJhbnNhY3Rpb25TdGVwOjpyZWFwcGx5KCkKK3sK
KyAgICBpZiAobV9jaGlsZC5nZXQoKSAmJiBtX2NoaWxkLT5wYXJlbnROb2RlKCkgIT0gbV9wYXJl
bnQuZ2V0KCkpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAobV9yZWZDaGlsZC5nZXQoKSAmJiBt
X3JlZkNoaWxkLT5wYXJlbnROb2RlKCkgIT0gbV9wYXJlbnQuZ2V0KCkpCisgICAgICAgIHJldHVy
bjsKKyAgICBpZiAobV9yZWZDaGlsZC5nZXQoKSAmJiBtX3JlZkNoaWxkLT5wcmV2aW91c1NpYmxp
bmcoKSAhPSBtX2NoaWxkLmdldCgpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgRXhjZXB0
aW9uQ29kZSBlYzsKKyAgICBtX3BhcmVudC0+cmVtb3ZlQ2hpbGQobV9jaGlsZC5nZXQoKSwgZWMp
OworfQorCitEYXRhUmVwbGFjaW5nRE9NVHJhbnNhY3Rpb25TdGVwOjpEYXRhUmVwbGFjaW5nRE9N
VHJhbnNhY3Rpb25TdGVwKENoYXJhY3RlckRhdGEqIG5vZGUsIHVuc2lnbmVkIG9mZnNldCwgdW5z
aWduZWQgY291bnQsIGNvbnN0IFN0cmluZyYgZGF0YSwgY29uc3QgU3RyaW5nJiByZXBsYWNlZERh
dGEpCisgICAgOiBtX25vZGUobm9kZSkKKyAgICAsIG1fb2Zmc2V0KG9mZnNldCkKKyAgICAsIG1f
Y291bnQoY291bnQpCisgICAgLCBtX2RhdGEoZGF0YSkKKyAgICAsIG1fcmVwbGFjZWREYXRhKHJl
cGxhY2VkRGF0YSkKK3sKK30KKworUGFzc1JlZlB0cjxEYXRhUmVwbGFjaW5nRE9NVHJhbnNhY3Rp
b25TdGVwPiBEYXRhUmVwbGFjaW5nRE9NVHJhbnNhY3Rpb25TdGVwOjpjcmVhdGUoQ2hhcmFjdGVy
RGF0YSogbm9kZSwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBjb3VudCwgY29uc3QgU3RyaW5n
JiBkYXRhLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkRGF0YSkKK3sKKyAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IERhdGFSZXBsYWNpbmdET01UcmFuc2FjdGlvblN0ZXAobm9kZSwgb2Zmc2V0LCBjb3Vu
dCwgZGF0YSwgcmVwbGFjZWREYXRhKSk7Cit9CisKK3ZvaWQgRGF0YVJlcGxhY2luZ0RPTVRyYW5z
YWN0aW9uU3RlcDo6dW5hcHBseSgpCit7CisgICAgaWYgKG1fbm9kZS0+bGVuZ3RoKCkgPCBtX29m
ZnNldCkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIEV4Y2VwdGlvbkNvZGUgZWM7CisgICAg
bV9ub2RlLT5yZXBsYWNlRGF0YShtX29mZnNldCwgbV9kYXRhLmxlbmd0aCgpLCBtX3JlcGxhY2Vk
RGF0YSwgZWMpOworfQorCit2b2lkIERhdGFSZXBsYWNpbmdET01UcmFuc2FjdGlvblN0ZXA6OnJl
YXBwbHkoKQoreworICAgIGlmIChtX25vZGUtPmxlbmd0aCgpIDwgbV9vZmZzZXQpCisgICAgICAg
IHJldHVybjsKKyAgICAKKyAgICBFeGNlcHRpb25Db2RlIGVjOworICAgIG1fbm9kZS0+cmVwbGFj
ZURhdGEobV9vZmZzZXQsIG1fY291bnQsIG1fZGF0YSwgZWMpOworfQorCitBdHRyQ2hhbmdpbmdE
T01UcmFuc2FjdGlvblN0ZXA6OkF0dHJDaGFuZ2luZ0RPTVRyYW5zYWN0aW9uU3RlcChFbGVtZW50
KiBlbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcm
IG9sZFZhbHVlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVlKQorICAgIDogbV9lbGVtZW50
KGVsZW1lbnQpCisgICAgLCBtX25hbWUobmFtZSkKKyAgICAsIG1fb2xkVmFsdWUob2xkVmFsdWUp
CisgICAgLCBtX25ld1ZhbHVlKG5ld1ZhbHVlKQoreworfQorCitQYXNzUmVmUHRyPEF0dHJDaGFu
Z2luZ0RPTVRyYW5zYWN0aW9uU3RlcD4gQXR0ckNoYW5naW5nRE9NVHJhbnNhY3Rpb25TdGVwOjpj
cmVhdGUoRWxlbWVudCogZWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3Qg
QXRvbWljU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSkKK3sK
KyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEF0dHJDaGFuZ2luZ0RPTVRyYW5zYWN0aW9uU3RlcChl
bGVtZW50LCBuYW1lLCBvbGRWYWx1ZSwgbmV3VmFsdWUpKTsKK30KKwordm9pZCBBdHRyQ2hhbmdp
bmdET01UcmFuc2FjdGlvblN0ZXA6OnVuYXBwbHkoKQoreworICAgIG1fZWxlbWVudC0+c2V0QXR0
cmlidXRlKG1fbmFtZSwgbV9vbGRWYWx1ZSk7Cit9CisKK3ZvaWQgQXR0ckNoYW5naW5nRE9NVHJh
bnNhY3Rpb25TdGVwOjpyZWFwcGx5KCkKK3sKKyAgICBtX2VsZW1lbnQtPnNldEF0dHJpYnV0ZSht
X25hbWUsIG1fbmV3VmFsdWUpOworfQorCit9CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNv
cmUvZWRpdGluZy9ET01UcmFuc2FjdGlvblN0ZXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0RPTVRyYW5zYWN0aW9uU3RlcC5oCShyZXZpc2lvbiAwKQorKysgU291cmNl
L1dlYkNvcmUvZWRpdGluZy9ET01UcmFuc2FjdGlvblN0ZXAuaAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwxMjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1l
dDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIERPTVRyYW5zYWN0aW9uU3RlcF9oCisjZGVmaW5lIERPTVRyYW5z
YWN0aW9uU3RlcF9oCisKKyNpZiBFTkFCTEUoVU5ET19NQU5BR0VSKQorCisjaW5jbHVkZSAiUGxh
dGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCisjaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBDaGFyYWN0ZXJEYXRhOworY2xhc3MgRWxlbWVudDsKK2NsYXNz
IE5vZGU7CisKK2NsYXNzIERPTVRyYW5zYWN0aW9uU3RlcCA6IHB1YmxpYyBSZWZDb3VudGVkPERP
TVRyYW5zYWN0aW9uU3RlcD4geworcHVibGljOgorICAgIHZpcnR1YWwgfkRPTVRyYW5zYWN0aW9u
U3RlcCgpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIHVuYXBwbHkoKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHJlYXBwbHkoKSA9IDA7Cit9OworCitjbGFzcyBOb2RlSW5zZXJ0aW5nRE9NVHJhbnNh
Y3Rpb25TdGVwIDogcHVibGljIERPTVRyYW5zYWN0aW9uU3RlcCB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8Tm9kZUluc2VydGluZ0RPTVRyYW5zYWN0aW9uU3RlcD4gY3JlYXRlKE5v
ZGUqIHBhcmVudCwgTm9kZSogY2hpbGQpOworICAgIHZvaWQgdW5hcHBseSgpIE9WRVJSSURFOwor
ICAgIHZvaWQgcmVhcHBseSgpIE9WRVJSSURFOworCitwcml2YXRlOgorICAgIE5vZGVJbnNlcnRp
bmdET01UcmFuc2FjdGlvblN0ZXAoTm9kZSogcGFyZW50LCBOb2RlKiBjaGlsZCk7CisgICAgCisg
ICAgUmVmUHRyPE5vZGU+IG1fcGFyZW50OworICAgIFJlZlB0cjxOb2RlPiBtX3JlZkNoaWxkOwor
ICAgIFJlZlB0cjxOb2RlPiBtX2NoaWxkOworfTsKKworY2xhc3MgTm9kZVJlbW92aW5nRE9NVHJh
bnNhY3Rpb25TdGVwIDogcHVibGljIERPTVRyYW5zYWN0aW9uU3RlcCB7CitwdWJsaWM6CisgICAg
c3RhdGljIFBhc3NSZWZQdHI8Tm9kZVJlbW92aW5nRE9NVHJhbnNhY3Rpb25TdGVwPiBjcmVhdGUo
Tm9kZSogcGFyZW50LCBOb2RlKiBjaGlsZCk7CisgICAgdm9pZCB1bmFwcGx5KCkgT1ZFUlJJREU7
CisgICAgdm9pZCByZWFwcGx5KCkgT1ZFUlJJREU7CisgICAgCitwcml2YXRlOgorICAgIE5vZGVS
ZW1vdmluZ0RPTVRyYW5zYWN0aW9uU3RlcChOb2RlKiBwYXJlbnQsIE5vZGUqIGNoaWxkKTsKKyAg
ICAKKyAgICBSZWZQdHI8Tm9kZT4gbV9wYXJlbnQ7CisgICAgUmVmUHRyPE5vZGU+IG1fcmVmQ2hp
bGQ7CisgICAgUmVmUHRyPE5vZGU+IG1fY2hpbGQ7Cit9OworCitjbGFzcyBEYXRhUmVwbGFjaW5n
RE9NVHJhbnNhY3Rpb25TdGVwIDogcHVibGljIERPTVRyYW5zYWN0aW9uU3RlcCB7CitwdWJsaWM6
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8RGF0YVJlcGxhY2luZ0RPTVRyYW5zYWN0aW9uU3RlcD4g
Y3JlYXRlKENoYXJhY3RlckRhdGEqLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGNvdW50LCBj
b25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWREYXRhKTsKKyAgICB2b2lk
IHVuYXBwbHkoKSBPVkVSUklERTsKKyAgICB2b2lkIHJlYXBwbHkoKSBPVkVSUklERTsKKyAgICAK
K3ByaXZhdGU6CisgICAgRGF0YVJlcGxhY2luZ0RPTVRyYW5zYWN0aW9uU3RlcChDaGFyYWN0ZXJE
YXRhKiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBjb3VudCwgY29uc3QgU3RyaW5nJiBkYXRh
LCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkRGF0YSk7CisgICAgCisgICAgUmVmUHRyPENoYXJhY3Rl
ckRhdGE+IG1fbm9kZTsKKyAgICB1bnNpZ25lZCBtX29mZnNldDsKKyAgICB1bnNpZ25lZCBtX2Nv
dW50OworICAgIFN0cmluZyBtX2RhdGE7CisgICAgU3RyaW5nIG1fcmVwbGFjZWREYXRhOworfTsK
KworY2xhc3MgQXR0ckNoYW5naW5nRE9NVHJhbnNhY3Rpb25TdGVwIDogcHVibGljIERPTVRyYW5z
YWN0aW9uU3RlcCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8QXR0ckNoYW5naW5n
RE9NVHJhbnNhY3Rpb25TdGVwPiBjcmVhdGUoRWxlbWVudCosIGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBjb25zdCBBdG9taWNTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5ld1Zh
bHVlKTsKKyAgICB2b2lkIHVuYXBwbHkoKSBPVkVSUklERTsKKyAgICB2b2lkIHJlYXBwbHkoKSBP
VkVSUklERTsKKyAgICAKK3ByaXZhdGU6CisgICAgQXR0ckNoYW5naW5nRE9NVHJhbnNhY3Rpb25T
dGVwKEVsZW1lbnQqLCBjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiBv
bGRWYWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSk7CisgICAgCisgICAgUmVmUHRy
PEVsZW1lbnQ+IG1fZWxlbWVudDsKKyAgICBRdWFsaWZpZWROYW1lIG1fbmFtZTsKKyAgICBBdG9t
aWNTdHJpbmcgbV9vbGRWYWx1ZTsKKyAgICBBdG9taWNTdHJpbmcgbV9uZXdWYWx1ZTsKK307CisK
K30KKworI2VuZGlmCisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAko
cmV2aXNpb24gMTIzMjU1KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC04Niw2ICs4Niw3IEBACiAjaW5jbHVkZSAiVGV4dEV2ZW50LmgiCiAj
aW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVHlwaW5nQ29tbWFuZC5oIgorI2lu
Y2x1ZGUgIlVuZG9NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiVXNlclR5cGluZ0dlc3R1cmVJbmRpY2F0
b3IuaCIKICNpbmNsdWRlICJodG1sZWRpdGluZy5oIgogI2luY2x1ZGUgIm1hcmt1cC5oIgpAQCAt
ODAyLDggKzgwMywxMiBAQCB2b2lkIEVkaXRvcjo6YXBwbGllZEVkaXRpbmcoUGFzc1JlZlB0cjxD
CiAgICAgICAgIC8vIE9ubHkgcmVnaXN0ZXIgYSBuZXcgdW5kbyBjb21tYW5kIGlmIHRoZSBjb21t
YW5kIHBhc3NlZCBpbiBpcwogICAgICAgICAvLyBkaWZmZXJlbnQgZnJvbSB0aGUgbGFzdCBjb21t
YW5kCiAgICAgICAgIG1fbGFzdEVkaXRDb21tYW5kID0gY21kOworI2lmICFFTkFCTEUoVU5ET19N
QU5BR0VSKQogICAgICAgICBpZiAoY2xpZW50KCkpCiAgICAgICAgICAgICBjbGllbnQoKS0+cmVn
aXN0ZXJVbmRvU3RlcChtX2xhc3RFZGl0Q29tbWFuZC0+ZW5zdXJlQ29tcG9zaXRpb24oKSk7Cisj
ZWxzZQorICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT51bmRvTWFuYWdlcigpLT5yZWdpc3Rl
clVuZG9TdGVwKG1fbGFzdEVkaXRDb21tYW5kLT5lbnN1cmVDb21wb3NpdGlvbigpKTsKKyNlbmRp
ZgogICAgIH0KIAogICAgIHJlc3BvbmRUb0NoYW5nZWRDb250ZW50cyhuZXdTZWxlY3Rpb24pOwpA
QCAtODIwLDggKzgyNSwxMiBAQCB2b2lkIEVkaXRvcjo6dW5hcHBsaWVkRWRpdGluZyhQYXNzUmVm
UHRyCiAgICAgbV9hbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLT5yZXNwb25kVG9VbmFwcGxpZWRF
ZGl0aW5nKGNtZC5nZXQoKSk7CiAgICAgCiAgICAgbV9sYXN0RWRpdENvbW1hbmQgPSAwOworI2lm
ICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIGlmIChjbGllbnQoKSkKICAgICAgICAgY2xpZW50
KCktPnJlZ2lzdGVyUmVkb1N0ZXAoY21kKTsKKyNlbHNlCisgICAgbV9mcmFtZS0+ZG9jdW1lbnQo
KS0+dW5kb01hbmFnZXIoKS0+cmVnaXN0ZXJSZWRvU3RlcChjbWQpOworI2VuZGlmICAKICAgICBy
ZXNwb25kVG9DaGFuZ2VkQ29udGVudHMobmV3U2VsZWN0aW9uKTsKIH0KIApAQCAtODM1LDggKzg0
NCwxMiBAQCB2b2lkIEVkaXRvcjo6cmVhcHBsaWVkRWRpdGluZyhQYXNzUmVmUHRyCiAgICAgY2hh
bmdlU2VsZWN0aW9uQWZ0ZXJDb21tYW5kKG5ld1NlbGVjdGlvbiwgRnJhbWVTZWxlY3Rpb246OkNs
b3NlVHlwaW5nIHwgRnJhbWVTZWxlY3Rpb246OkNsZWFyVHlwaW5nU3R5bGUpOwogICAgIAogICAg
IG1fbGFzdEVkaXRDb21tYW5kID0gMDsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICBp
ZiAoY2xpZW50KCkpCiAgICAgICAgIGNsaWVudCgpLT5yZWdpc3RlclVuZG9TdGVwKGNtZCk7Cisj
ZWxzZQorICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnVuZG9NYW5hZ2VyKCktPnJlZ2lzdGVyVW5k
b1N0ZXAoY21kKTsKKyNlbmRpZgogICAgIHJlc3BvbmRUb0NoYW5nZWRDb250ZW50cyhuZXdTZWxl
Y3Rpb24pOwogfQogCkBAIC0xMjQyLDI0ICsxMjU1LDQwIEBAIHZvaWQgRWRpdG9yOjpjbGVhclVu
ZG9SZWRvT3BlcmF0aW9ucygpCiAKIGJvb2wgRWRpdG9yOjpjYW5VbmRvKCkKIHsKKyNpZiAhRU5B
QkxFKFVORE9fTUFOQUdFUikKICAgICByZXR1cm4gY2xpZW50KCkgJiYgY2xpZW50KCktPmNhblVu
ZG8oKTsKKyNlbHNlCisgICAgcmV0dXJuIG1fZnJhbWUtPmRvY3VtZW50KCktPnVuZG9NYW5hZ2Vy
KCktPmNhblVuZG8oKTsKKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvcjo6dW5kbygpCiB7CisjaWYg
IUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgaWYgKGNsaWVudCgpKQogICAgICAgICBjbGllbnQo
KS0+dW5kbygpOworI2Vsc2UKKyAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT51bmRvTWFuYWdlcigp
LT51bmRvKCk7CisjZW5kaWYKIH0KIAogYm9vbCBFZGl0b3I6OmNhblJlZG8oKQogeworI2lmICFF
TkFCTEUoVU5ET19NQU5BR0VSKQogICAgIHJldHVybiBjbGllbnQoKSAmJiBjbGllbnQoKS0+Y2Fu
UmVkbygpOworI2Vsc2UKKyAgICByZXR1cm4gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dW5kb01hbmFn
ZXIoKS0+Y2FuUmVkbygpOworI2VuZGlmCiB9CiAKIHZvaWQgRWRpdG9yOjpyZWRvKCkKIHsKKyNp
ZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICBpZiAoY2xpZW50KCkpCiAgICAgICAgIGNsaWVu
dCgpLT5yZWRvKCk7CisjZWxzZQorICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnVuZG9NYW5hZ2Vy
KCktPnJlZG8oKTsKKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvcjo6ZGlkQmVnaW5FZGl0aW5nKCkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVW5kb01hbmFnZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVW5kb01hbmFnZXIuY3BwCShyZXZpc2lvbiAxMjMy
NTUpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1VuZG9NYW5hZ2VyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzMsNyArMzMsNyBAQAogCiAjaWYgRU5BQkxFKFVORE9fTUFOQUdFUikKIAotI2lu
Y2x1ZGUgIk5vZGUuaCIKKyNpbmNsdWRlICJET01UcmFuc2FjdGlvbi5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKQEAgLTQ0LDYgKzQ0LDcgQEAgUGFzc1JlZlB0cjxVbmRvTWFuYWdlcj4gVW5k
b01hbmFnZXI6OmNyZQogCiBVbmRvTWFuYWdlcjo6VW5kb01hbmFnZXIoTm9kZSogaG9zdCkKICAg
ICA6IG1fdW5kb1Njb3BlSG9zdChob3N0KQorICAgICwgbV9pc0luUHJvZ3Jlc3MoZmFsc2UpCiB7
CiB9CiAKQEAgLTUyLDIwICs1MywxMTIgQEAgdm9pZCBVbmRvTWFuYWdlcjo6dW5kb1Njb3BlSG9z
dERlc3Ryb3llZAogICAgIG1fdW5kb1Njb3BlSG9zdCA9IDA7CiB9CiAKK3ZvaWQgVW5kb01hbmFn
ZXI6OnRyYW5zYWN0KFBhc3NSZWZQdHI8RE9NVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uLCBib29s
IG1lcmdlLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAobV9pc0luUHJvZ3Jlc3MgfHwg
IW1fdW5kb1Njb3BlSG9zdCkgeworICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjbGVhclJlZG8oQVNTRVJUX05PX0VYQ0VQVElPTik7
CisgICAgdHJhbnNhY3Rpb24tPnNldFVuZG9NYW5hZ2VyKHRoaXMpOworICAgIAorICAgIG1faXNJ
blByb2dyZXNzID0gdHJ1ZTsKKyAgICB0cmFuc2FjdGlvbi0+YXBwbHkoKTsKKyAgICBtX2lzSW5Q
cm9ncmVzcyA9IGZhbHNlOworICAgIAorICAgIGlmICghbWVyZ2UgfHwgbV91bmRvU3RhY2suaXNF
bXB0eSgpKQorICAgICAgICBtX3VuZG9TdGFjay5hcHBlbmQoYWRvcHRQdHIobmV3IFVuZG9NYW5h
Z2VyRW50cnkpKTsKKyAgICBtX3VuZG9TdGFjay5sYXN0KCktPmFwcGVuZCh0cmFuc2FjdGlvbik7
Cit9CisKK3ZvaWQgVW5kb01hbmFnZXI6OnVuZG8oRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAg
aWYgKG1faXNJblByb2dyZXNzIHx8ICFtX3VuZG9TY29wZUhvc3QpIHsKKyAgICAgICAgZWMgPSBJ
TlZBTElEX0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKG1fdW5k
b1N0YWNrLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworICAgIG1faW5Qcm9ncmVzc0VudHJ5
ID0gYWRvcHRQdHIobmV3IFVuZG9NYW5hZ2VyRW50cnkpOworICAgIAorICAgIG1faXNJblByb2dy
ZXNzID0gdHJ1ZTsKKyAgICBjb25zdCBVbmRvTWFuYWdlckVudHJ5JiBlbnRyeSA9ICoobV91bmRv
U3RhY2subGFzdCgpLmdldCgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gZW50cnkuc2l6ZSgpOyBp
ID4gMDsgLS1pKQorICAgICAgICBlbnRyeVtpIC0gMV0tPnVuYXBwbHkoKTsKKyAgICBtX2lzSW5Q
cm9ncmVzcyA9IGZhbHNlOworICAgIAorICAgIG1fcmVkb1N0YWNrLmFwcGVuZChtX2luUHJvZ3Jl
c3NFbnRyeS5yZWxlYXNlKCkpOworICAgIG1fdW5kb1N0YWNrLnJlbW92ZUxhc3QoKTsKK30KKwor
dm9pZCBVbmRvTWFuYWdlcjo6cmVkbyhFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAobV9p
c0luUHJvZ3Jlc3MgfHwgIW1fdW5kb1Njb3BlSG9zdCkgeworICAgICAgICBlYyA9IElOVkFMSURf
QUNDRVNTX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobV9yZWRvU3RhY2su
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisgICAgbV9pblByb2dyZXNzRW50cnkgPSBhZG9w
dFB0cihuZXcgVW5kb01hbmFnZXJFbnRyeSk7CisgICAgCisgICAgbV9pc0luUHJvZ3Jlc3MgPSB0
cnVlOworICAgIGNvbnN0IFVuZG9NYW5hZ2VyRW50cnkmIGVudHJ5ID0gKihtX3JlZG9TdGFjay5s
YXN0KCkuZ2V0KCkpOworICAgIGZvciAoc2l6ZV90IGkgPSBlbnRyeS5zaXplKCk7IGkgPiAwOyAt
LWkpCisgICAgICAgIGVudHJ5W2kgLSAxXS0+cmVhcHBseSgpOworICAgIG1faXNJblByb2dyZXNz
ID0gZmFsc2U7CisgICAgCisgICAgbV91bmRvU3RhY2suYXBwZW5kKG1faW5Qcm9ncmVzc0VudHJ5
LnJlbGVhc2UoKSk7CisgICAgbV9yZWRvU3RhY2sucmVtb3ZlTGFzdCgpOworfQorCiB2b2lkIFVu
ZG9NYW5hZ2VyOjp1bmRvKCkKIHsKKyAgICB1bmRvKEFTU0VSVF9OT19FWENFUFRJT04pOwogfQog
CiB2b2lkIFVuZG9NYW5hZ2VyOjpyZWRvKCkKIHsKKyAgICByZWRvKEFTU0VSVF9OT19FWENFUFRJ
T04pOworfQorCit2b2lkIFVuZG9NYW5hZ2VyOjpyZWdpc3RlclVuZG9TdGVwKFBhc3NSZWZQdHI8
VW5kb1N0ZXA+IHN0ZXApCit7CisgICAgaWYgKCFtX2lzSW5Qcm9ncmVzcykgeworICAgICAgICBP
d25QdHI8VW5kb01hbmFnZXJFbnRyeT4gZW50cnkgPSBhZG9wdFB0cihuZXcgVW5kb01hbmFnZXJF
bnRyeSk7CisgICAgICAgIGVudHJ5LT5hcHBlbmQoc3RlcCk7CisgICAgICAgIG1fdW5kb1N0YWNr
LmFwcGVuZChlbnRyeS5yZWxlYXNlKCkpOworICAgICAgICAKKyAgICAgICAgY2xlYXJSZWRvKEFT
U0VSVF9OT19FWENFUFRJT04pOworICAgIH0gZWxzZQorICAgICAgICBtX2luUHJvZ3Jlc3NFbnRy
eS0+YXBwZW5kKHN0ZXApOworfQorCit2b2lkIFVuZG9NYW5hZ2VyOjpyZWdpc3RlclJlZG9TdGVw
KFBhc3NSZWZQdHI8VW5kb1N0ZXA+IHN0ZXApCit7CisgICAgaWYgKCFtX2lzSW5Qcm9ncmVzcykg
eworICAgICAgICBPd25QdHI8VW5kb01hbmFnZXJFbnRyeT4gZW50cnkgPSBhZG9wdFB0cihuZXcg
VW5kb01hbmFnZXJFbnRyeSk7CisgICAgICAgIGVudHJ5LT5hcHBlbmQoc3RlcCk7CisgICAgICAg
IG1fcmVkb1N0YWNrLmFwcGVuZChlbnRyeS5yZWxlYXNlKCkpOworICAgIH0gZWxzZQorICAgICAg
ICBtX2luUHJvZ3Jlc3NFbnRyeS0+YXBwZW5kKHN0ZXApOwogfQogCi12b2lkIFVuZG9NYW5hZ2Vy
OjpjbGVhclVuZG8oKQordm9pZCBVbmRvTWFuYWdlcjo6Y2xlYXJVbmRvKEV4Y2VwdGlvbkNvZGUm
IGVjKQogeworICAgIGlmIChtX2lzSW5Qcm9ncmVzcyB8fCAhbV91bmRvU2NvcGVIb3N0KSB7Cisg
ICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIG1fdW5kb1N0YWNrLmNsZWFyKCk7CiB9CiAKLXZvaWQgVW5kb01hbmFnZXI6OmNsZWFyUmVk
bygpCit2b2lkIFVuZG9NYW5hZ2VyOjpjbGVhclJlZG8oRXhjZXB0aW9uQ29kZSYgZWMpCiB7Cisg
ICAgaWYgKG1faXNJblByb2dyZXNzIHx8ICFtX3VuZG9TY29wZUhvc3QpIHsKKyAgICAgICAgZWMg
PSBJTlZBTElEX0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9yZWRv
U3RhY2suY2xlYXIoKTsKIH0KIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9VbmRv
TWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVW5kb01hbmFn
ZXIuaAkocmV2aXNpb24gMTIzMjU1KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9VbmRvTWFu
YWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMywzMiArMzMsNjQgQEAKIAogI2lmIEVOQUJMRShV
TkRPX01BTkFHRVIpCiAKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiRXhj
ZXB0aW9uQ29kZVBsYWNlaG9sZGVyLmgiCisjaW5jbHVkZSAiVW5kb1N0ZXAuaCIKKyNpbmNsdWRl
IDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCitjbGFzcyBET01UcmFuc2FjdGlvbjsKIGNsYXNzIE5vZGU7CiAKK3R5cGVkZWYgVmVj
dG9yPFJlZlB0cjxVbmRvU3RlcD4gPiBVbmRvTWFuYWdlckVudHJ5OwordHlwZWRlZiBWZWN0b3I8
T3duUHRyPFVuZG9NYW5hZ2VyRW50cnk+ID4gVW5kb01hbmFnZXJTdGFjazsKKwogY2xhc3MgVW5k
b01hbmFnZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxVbmRvTWFuYWdlcj4gewogcHVibGljOgogICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFVuZG9NYW5hZ2VyPiBjcmVhdGUoTm9kZSogaG9zdCk7CisgICAg
Tm9kZSogdW5kb1Njb3BlSG9zdCgpIGNvbnN0IHsgcmV0dXJuIG1fdW5kb1Njb3BlSG9zdDsgfQog
ICAgIHZvaWQgdW5kb1Njb3BlSG9zdERlc3Ryb3llZCgpOworICAgIAorICAgIHZvaWQgdHJhbnNh
Y3QoUGFzc1JlZlB0cjxET01UcmFuc2FjdGlvbj4sIGJvb2wsIEV4Y2VwdGlvbkNvZGUmKTsKIAor
ICAgIHZvaWQgdW5kbyhFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCByZWRvKEV4Y2VwdGlvbkNv
ZGUmKTsKICAgICB2b2lkIHVuZG8oKTsKICAgICB2b2lkIHJlZG8oKTsKKyAgICAKKyAgICBpbmxp
bmUgdW5zaWduZWQgbG9uZyBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX3VuZG9TdGFjay5zaXpl
KCkgKyBtX3JlZG9TdGFjay5zaXplKCk7IH0gCisgICAgaW5saW5lIHVuc2lnbmVkIGxvbmcgcG9z
aXRpb24oKSBjb25zdCB7IHJldHVybiBtX3JlZG9TdGFjay5zaXplKCk7IH0KIAotICAgIHZvaWQg
Y2xlYXJVbmRvKCk7Ci0gICAgdm9pZCBjbGVhclJlZG8oKTsKKyAgICB2b2lkIGNsZWFyVW5kbyhF
eGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBjbGVhclJlZG8oRXhjZXB0aW9uQ29kZSYpOworICAg
IAorICAgIGlubGluZSBib29sIGNhblVuZG8oKSBjb25zdCB7IHJldHVybiAhbV91bmRvU3RhY2su
aXNFbXB0eSgpOyB9CisgICAgaW5saW5lIGJvb2wgY2FuUmVkbygpIGNvbnN0IHsgcmV0dXJuICFt
X3JlZG9TdGFjay5pc0VtcHR5KCk7IH0KKyAgICAKKyAgICB2b2lkIHJlZ2lzdGVyVW5kb1N0ZXAo
UGFzc1JlZlB0cjxVbmRvU3RlcD4pOworICAgIHZvaWQgcmVnaXN0ZXJSZWRvU3RlcChQYXNzUmVm
UHRyPFVuZG9TdGVwPik7CisgICAgCisgICAgaW5saW5lIGNvbnN0IFVuZG9NYW5hZ2VyU3RhY2sm
IHVuZG9TdGFjaygpIGNvbnN0IHsgcmV0dXJuIG1fdW5kb1N0YWNrOyB9CisgICAgaW5saW5lIGNv
bnN0IFVuZG9NYW5hZ2VyU3RhY2smIHJlZG9TdGFjaygpIGNvbnN0IHsgcmV0dXJuIG1fcmVkb1N0
YWNrOyB9CiAKIHByaXZhdGU6CiAgICAgVW5kb01hbmFnZXIoTm9kZSogaG9zdCk7CiAgICAgTm9k
ZSogbV91bmRvU2NvcGVIb3N0OwotfTsKICAgICAKKyAgICBVbmRvTWFuYWdlclN0YWNrIG1fdW5k
b1N0YWNrOworICAgIFVuZG9NYW5hZ2VyU3RhY2sgbV9yZWRvU3RhY2s7CisgICAgYm9vbCBtX2lz
SW5Qcm9ncmVzczsKKyAgICBPd25QdHI8VW5kb01hbmFnZXJFbnRyeT4gbV9pblByb2dyZXNzRW50
cnk7Cit9OworCiB9Ci0gICAgCisKICNlbmRpZgogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvVW5kb01hbmFnZXIuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVW5kb01hbmFnZXIuaWRsCShyZXZpc2lvbiAxMjMyNTUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1VuZG9NYW5hZ2VyLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTMgKzMx
LDI0IEBACiBtb2R1bGUgY29yZSB7CiAKICAgICBpbnRlcmZhY2UgWwotICAgICAgICBDb25kaXRp
b25hbD1VTkRPX01BTkFHRVIKKyAgICAgICAgQ29uZGl0aW9uYWw9VU5ET19NQU5BR0VSLAorICAg
ICAgICBKU0N1c3RvbU1hcmtGdW5jdGlvbiwKKyAgICAgICAgVjhDdXN0b21Jc1JlYWNoYWJsZQog
ICAgIF0gVW5kb01hbmFnZXIgewotICAgICAgICB2b2lkIHVuZG8oKTsKLSAgICAgICAgdm9pZCBy
ZWRvKCk7CisgICAgICAgIFtDdXN0b21dIHZvaWQgdHJhbnNhY3QoaW4gRGljdGlvbmFyeSB0cmFu
c2FjdGlvbiwgaW4gYm9vbGVhbiBtZXJnZSk7CiAKLSAgICAgICAgdm9pZCBjbGVhclVuZG8oKTsK
LSAgICAgICAgdm9pZCBjbGVhclJlZG8oKTsKKyAgICAgICAgdm9pZCB1bmRvKCkKKyAgICAgICAg
ICAgIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICB2b2lkIHJlZG8oKQorICAgICAgICAg
ICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgICAgIAorICAgICAgICByZWFkb25seSBhdHRy
aWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1
bnNpZ25lZCBsb25nIHBvc2l0aW9uOworCisgICAgICAgIHZvaWQgY2xlYXJVbmRvKCkKKyAgICAg
ICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICB2b2lkIGNsZWFyUmVkbygpCisg
ICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICB9OwogCiB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1VuZG9TdGVwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZWRpdGluZy9VbmRvU3RlcC5oCShyZXZpc2lvbiAxMjMyNTUpCisrKyBTb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1VuZG9TdGVwLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDkgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCB1bmFwcGx5KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBy
ZWFwcGx5KCkgPSAwOwogICAgIHZpcnR1YWwgRWRpdEFjdGlvbiBlZGl0aW5nQWN0aW9uKCkgY29u
c3QgPSAwOworI2lmIEVOQUJMRShVTkRPX01BTkFHRVIpCisgICAgdmlydHVhbCBib29sIGlzRE9N
VHJhbnNhY3Rpb24oKSBjb25zdCA9IDA7CisjZW5kaWYKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRCbGFja0JlcnJ5LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQv
RWRpdG9yQ2xpZW50QmxhY2tCZXJyeS5jcHAJKHJldmlzaW9uIDEyMzI1NSkKKysrIFNvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRCbGFja0JlcnJ5LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjYwLDYgKzI2MCw3IEBAIHZvaWQgRWRpdG9yQ2xpZW50Qmxh
Y2tCZXJyeTo6ZGlkU2V0U2VsZWMKIAogdm9pZCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpyZWdp
c3RlclVuZG9TdGVwKFBhc3NSZWZQdHI8VW5kb1N0ZXA+IHN0ZXApCiB7CisjaWYgIUVOQUJMRShV
TkRPX01BTkFHRVIpCiAgICAgLy8gUmVtb3ZlIHRoZSBvbGRlc3QgaXRlbSBpZiB3ZSd2ZSByZWFj
aGVkIHRoZSBtYXhpbXVtIGNhcGFjaXR5IGZvciB0aGUgc3RhY2suCiAgICAgaWYgKG1fdW5kb1N0
YWNrLnNpemUoKSA9PSBtYXhpbXVtVW5kb1N0YWNrRGVwdGgpCiAgICAgICAgIG1fdW5kb1N0YWNr
LnJlbW92ZUZpcnN0KCk7CkBAIC0yNjgsMjcgKzI2OSw0NCBAQCB2b2lkIEVkaXRvckNsaWVudEJs
YWNrQmVycnk6OnJlZ2lzdGVyVW5kCiAgICAgICAgIG1fcmVkb1N0YWNrLmNsZWFyKCk7CiAKICAg
ICBtX3VuZG9TdGFjay5hcHBlbmQoc3RlcCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShzdGVw
KTsKKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OnJlZ2lzdGVyUmVk
b1N0ZXAoUGFzc1JlZlB0cjxVbmRvU3RlcD4gc3RlcCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFO
QUdFUikKICAgICBtX3JlZG9TdGFjay5hcHBlbmQoc3RlcCk7CisjZWxzZQorICAgIFVOVVNFRF9Q
QVJBTShzdGVwKTsKKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OmNs
ZWFyVW5kb1JlZG9PcGVyYXRpb25zKCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAg
ICBtX3VuZG9TdGFjay5jbGVhcigpOwogICAgIG1fcmVkb1N0YWNrLmNsZWFyKCk7CisjZW5kaWYK
IH0KIAogYm9vbCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpjYW5VbmRvKCkgY29uc3QKIHsKKyNp
ZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICByZXR1cm4gIW1fdW5kb1N0YWNrLmlzRW1wdHko
KTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiB9CiAKIGJvb2wgRWRpdG9yQ2xp
ZW50QmxhY2tCZXJyeTo6Y2FuUmVkbygpIGNvbnN0CiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFH
RVIpCiAgICAgcmV0dXJuICFtX3JlZG9TdGFjay5pc0VtcHR5KCk7CisjZWxzZQorICAgIHJldHVy
biBmYWxzZTsKKyNlbmRpZgogfQogCiBib29sIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OmNhbkNv
cHlDdXQoRnJhbWUqLCBib29sIGRlZmF1bHRWYWx1ZSkgY29uc3QKQEAgLTMwMyw2ICszMjEsNyBA
QCBib29sIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OmNhblBhc3RlKEZyCiAKIHZvaWQgRWRpdG9y
Q2xpZW50QmxhY2tCZXJyeTo6dW5kbygpCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAg
ICAgaWYgKGNhblVuZG8oKSkgewogICAgICAgICBFZGl0Q29tbWFuZFN0YWNrOjppdGVyYXRvciBi
YWNrID0gLS1tX3VuZG9TdGFjay5lbmQoKTsKICAgICAgICAgUmVmUHRyPFVuZG9TdGVwPiBjb21t
YW5kKCpiYWNrKTsKQEAgLTMxMSwxMCArMzMwLDEyIEBAIHZvaWQgRWRpdG9yQ2xpZW50QmxhY2tC
ZXJyeTo6dW5kbygpCiAgICAgICAgIC8vIFVuYXBwbHkgd2lsbCBjYWxsIHVzIGJhY2sgdG8gcHVz
aCB0aGlzIGNvbW1hbmQgb250byB0aGUgcmVkbyBzdGFjay4KICAgICAgICAgY29tbWFuZC0+dW5h
cHBseSgpOwogICAgIH0KKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNsaWVudEJsYWNrQmVycnk6
OnJlZG8oKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIGlmIChjYW5SZWRvKCkp
IHsKICAgICAgICAgRWRpdENvbW1hbmRTdGFjazo6aXRlcmF0b3IgYmFjayA9IC0tbV9yZWRvU3Rh
Y2suZW5kKCk7CiAgICAgICAgIFJlZlB0cjxVbmRvU3RlcD4gY29tbWFuZCgqYmFjayk7CkBAIC0z
MjcsNiArMzQ4LDcgQEAgdm9pZCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpyZWRvKCkKICAgICAg
ICAgY29tbWFuZC0+cmVhcHBseSgpOwogICAgICAgICBtX2luUmVkbyA9IGZhbHNlOwogICAgIH0K
KyNlbmRpZgogfQogCiBzdGF0aWMgY29uc3QgdW5zaWduZWQgQ3RybEtleSA9IDEgPDwgMDsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuY3Bw
CShyZXZpc2lvbiAxMjMyNTUpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JD
bGllbnRJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjk1LDIyICsyOTUsMzIgQEAgdm9pZCBF
ZGl0b3JDbGllbnRJbXBsOjpkaWRTZXRTZWxlY3Rpb25UeQogCiB2b2lkIEVkaXRvckNsaWVudElt
cGw6OnJlZ2lzdGVyVW5kb1N0ZXAoUGFzc1JlZlB0cjxVbmRvU3RlcD4gc3RlcCkKIHsKKyNpZiAh
RU5BQkxFKFVORE9fTUFOQUdFUikKICAgICBpZiAobV91bmRvU3RhY2suc2l6ZSgpID09IG1heGlt
dW1VbmRvU3RhY2tEZXB0aCkKICAgICAgICAgbV91bmRvU3RhY2sucmVtb3ZlRmlyc3QoKTsgLy8g
ZHJvcCBvbGRlc3QgaXRlbSBvZmYgdGhlIGZhciBlbmQKICAgICBpZiAoIW1faW5SZWRvKQogICAg
ICAgICBtX3JlZG9TdGFjay5jbGVhcigpOwogICAgIG1fdW5kb1N0YWNrLmFwcGVuZChzdGVwKTsK
KyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHN0ZXApOworI2VuZGlmCiB9CiAKIHZvaWQgRWRpdG9y
Q2xpZW50SW1wbDo6cmVnaXN0ZXJSZWRvU3RlcChQYXNzUmVmUHRyPFVuZG9TdGVwPiBzdGVwKQog
eworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIG1fcmVkb1N0YWNrLmFwcGVuZChzdGVw
KTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHN0ZXApOworI2VuZGlmCiB9CiAKIHZvaWQgRWRp
dG9yQ2xpZW50SW1wbDo6Y2xlYXJVbmRvUmVkb09wZXJhdGlvbnMoKQogeworI2lmICFFTkFCTEUo
VU5ET19NQU5BR0VSKQogICAgIG1fdW5kb1N0YWNrLmNsZWFyKCk7CiAgICAgbV9yZWRvU3RhY2su
Y2xlYXIoKTsKKyNlbmRpZgogfQogCiBib29sIEVkaXRvckNsaWVudEltcGw6OmNhbkNvcHlDdXQo
RnJhbWUqIGZyYW1lLCBib29sIGRlZmF1bHRWYWx1ZSkgY29uc3QKQEAgLTMyOSwxNiArMzM5LDI1
IEBAIGJvb2wgRWRpdG9yQ2xpZW50SW1wbDo6Y2FuUGFzdGUoRnJhbWUqIGYKIAogYm9vbCBFZGl0
b3JDbGllbnRJbXBsOjpjYW5VbmRvKCkgY29uc3QKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdF
UikKICAgICByZXR1cm4gIW1fdW5kb1N0YWNrLmlzRW1wdHkoKTsKKyNlbHNlCisgICAgcmV0dXJu
IGZhbHNlOworI2VuZGlmCiB9CiAKIGJvb2wgRWRpdG9yQ2xpZW50SW1wbDo6Y2FuUmVkbygpIGNv
bnN0CiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgcmV0dXJuICFtX3JlZG9TdGFj
ay5pc0VtcHR5KCk7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogfQogCiB2b2lk
IEVkaXRvckNsaWVudEltcGw6OnVuZG8oKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQog
ICAgIGlmIChjYW5VbmRvKCkpIHsKICAgICAgICAgVW5kb01hbmFnZXJTdGFjazo6aXRlcmF0b3Ig
YmFjayA9IC0tbV91bmRvU3RhY2suZW5kKCk7CiAgICAgICAgIFJlZlB0cjxVbmRvU3RlcD4gc3Rl
cCgqYmFjayk7CkBAIC0zNDYsMTAgKzM2NSwxMiBAQCB2b2lkIEVkaXRvckNsaWVudEltcGw6OnVu
ZG8oKQogICAgICAgICBzdGVwLT51bmFwcGx5KCk7CiAgICAgICAgIC8vIHVuYXBwbHkgd2lsbCBj
YWxsIHVzIGJhY2sgdG8gcHVzaCB0aGlzIGNvbW1hbmQgb250byB0aGUgcmVkbyBzdGFjay4KICAg
ICB9CisjZW5kaWYKIH0KIAogdm9pZCBFZGl0b3JDbGllbnRJbXBsOjpyZWRvKCkKIHsKKyNpZiAh
RU5BQkxFKFVORE9fTUFOQUdFUikKICAgICBpZiAoY2FuUmVkbygpKSB7CiAgICAgICAgIFVuZG9N
YW5hZ2VyU3RhY2s6Oml0ZXJhdG9yIGJhY2sgPSAtLW1fcmVkb1N0YWNrLmVuZCgpOwogICAgICAg
ICBSZWZQdHI8VW5kb1N0ZXA+IHN0ZXAoKmJhY2spOwpAQCAtMzYxLDYgKzM4Miw3IEBAIHZvaWQg
RWRpdG9yQ2xpZW50SW1wbDo6cmVkbygpCiAgICAgICAgIC8vIHJlYXBwbHkgd2lsbCBjYWxsIHVz
IGJhY2sgdG8gcHVzaCB0aGlzIGNvbW1hbmQgb250byB0aGUgdW5kbyBzdGFjay4KICAgICAgICAg
bV9pblJlZG8gPSBmYWxzZTsKICAgICB9CisjZW5kaWYKIH0KIAogLy8KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmNwcAko
cmV2aXNpb24gMTIzMjU1KQorKysgU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRWRp
dG9yQ2xpZW50RWZsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc4LDIwICsxNzgsMzAgQEAgdm9p
ZCBFZGl0b3JDbGllbnRFZmw6OmRpZFNldFNlbGVjdGlvblR5cAogCiB2b2lkIEVkaXRvckNsaWVu
dEVmbDo6cmVnaXN0ZXJVbmRvU3RlcChXVEY6OlBhc3NSZWZQdHI8VW5kb1N0ZXA+IHN0ZXApCiB7
CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgaWYgKCFtX2lzSW5SZWRvKQogICAgICAg
ICByZWRvU3RhY2suY2xlYXIoKTsKICAgICB1bmRvU3RhY2sucHJlcGVuZChzdGVwKTsKKyNlbHNl
CisgICAgVU5VU0VEX1BBUkFNKHN0ZXApOworI2VuZGlmCiB9CiAKIHZvaWQgRWRpdG9yQ2xpZW50
RWZsOjpyZWdpc3RlclJlZG9TdGVwKFdURjo6UGFzc1JlZlB0cjxVbmRvU3RlcD4gc3RlcCkKIHsK
KyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICByZWRvU3RhY2sucHJlcGVuZChzdGVwKTsK
KyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHN0ZXApOworI2VuZGlmCiB9CiAKIHZvaWQgRWRpdG9y
Q2xpZW50RWZsOjpjbGVhclVuZG9SZWRvT3BlcmF0aW9ucygpCiB7CisjaWYgIUVOQUJMRShVTkRP
X01BTkFHRVIpCiAgICAgdW5kb1N0YWNrLmNsZWFyKCk7CiAgICAgcmVkb1N0YWNrLmNsZWFyKCk7
CisjZW5kaWYKIH0KIAogYm9vbCBFZGl0b3JDbGllbnRFZmw6OmNhbkNvcHlDdXQoRnJhbWUqLCBi
b29sIGRlZmF1bHRWYWx1ZSkgY29uc3QKQEAgLTIwNiwyNCArMjE2LDM1IEBAIGJvb2wgRWRpdG9y
Q2xpZW50RWZsOjpjYW5QYXN0ZShGcmFtZSosIGIKIAogYm9vbCBFZGl0b3JDbGllbnRFZmw6OmNh
blVuZG8oKSBjb25zdAogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIHJldHVybiAh
dW5kb1N0YWNrLmlzRW1wdHkoKTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiB9
CiAKIGJvb2wgRWRpdG9yQ2xpZW50RWZsOjpjYW5SZWRvKCkgY29uc3QKIHsKKyNpZiAhRU5BQkxF
KFVORE9fTUFOQUdFUikKICAgICByZXR1cm4gIXJlZG9TdGFjay5pc0VtcHR5KCk7CisjZWxzZQor
ICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNsaWVudEVmbDo6dW5k
bygpCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgaWYgKGNhblVuZG8oKSkgewog
ICAgICAgICBSZWZQdHI8V2ViQ29yZTo6VW5kb1N0ZXA+IHN0ZXAgPSB1bmRvU3RhY2sudGFrZUZp
cnN0KCk7CiAgICAgICAgIHN0ZXAtPnVuYXBwbHkoKTsKICAgICB9CisjZW5kaWYKIH0KIAogdm9p
ZCBFZGl0b3JDbGllbnRFZmw6OnJlZG8oKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQog
ICAgIGlmIChjYW5SZWRvKCkpIHsKICAgICAgICAgUmVmUHRyPFdlYkNvcmU6OlVuZG9TdGVwPiBz
dGVwID0gcmVkb1N0YWNrLnRha2VGaXJzdCgpOwogCkBAIC0yMzIsNiArMjUzLDcgQEAgdm9pZCBF
ZGl0b3JDbGllbnRFZmw6OnJlZG8oKQogICAgICAgICBzdGVwLT5yZWFwcGx5KCk7CiAgICAgICAg
IG1faXNJblJlZG8gPSBmYWxzZTsKICAgICB9CisjZW5kaWYKIH0KIAogYm9vbCBFZGl0b3JDbGll
bnRFZmw6OnNob3VsZEluc2VydE5vZGUoTm9kZSogbm9kZSwgUmFuZ2UqIHJhbmdlLCBFZGl0b3JJ
bnNlcnRBY3Rpb24gYWN0aW9uKQpJbmRleDogU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvRWRpdG9yQ2xpZW50R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwCShyZXZpc2lvbiAxMjMyNTUpCisrKyBT
b3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yODgsMjIgKzI4OCwzMiBAQCB2b2lkIEVkaXRvckNsaWVudDo6ZGlkU2V0
U2VsZWN0aW9uVHlwZXNGCiAKIHZvaWQgRWRpdG9yQ2xpZW50OjpyZWdpc3RlclVuZG9TdGVwKFdU
Rjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpVbmRvU3RlcD4gc3RlcCkKIHsKKyNpZiAhRU5BQkxFKFVO
RE9fTUFOQUdFUikKICAgICBpZiAodW5kb1N0YWNrLnNpemUoKSA9PSBtYXhpbXVtVW5kb1N0YWNr
RGVwdGgpCiAgICAgICAgIHVuZG9TdGFjay5yZW1vdmVGaXJzdCgpOwogICAgIGlmICghbV9pc0lu
UmVkbykKICAgICAgICAgcmVkb1N0YWNrLmNsZWFyKCk7CiAgICAgdW5kb1N0YWNrLmFwcGVuZChz
dGVwKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHN0ZXApOworI2VuZGlmCiB9CiAKIHZvaWQg
RWRpdG9yQ2xpZW50OjpyZWdpc3RlclJlZG9TdGVwKFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpV
bmRvU3RlcD4gc3RlcCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICByZWRvU3Rh
Y2suYXBwZW5kKHN0ZXApOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oc3RlcCk7CisjZW5kaWYK
IH0KIAogdm9pZCBFZGl0b3JDbGllbnQ6OmNsZWFyVW5kb1JlZG9PcGVyYXRpb25zKCkKIHsKKyNp
ZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICB1bmRvU3RhY2suY2xlYXIoKTsKICAgICByZWRv
U3RhY2suY2xlYXIoKTsKKyNlbmRpZgogfQogCiBib29sIEVkaXRvckNsaWVudDo6Y2FuQ29weUN1
dChXZWJDb3JlOjpGcmFtZSosIGJvb2wgZGVmYXVsdFZhbHVlKSBjb25zdApAQCAtMzE4LDI2ICsz
MjgsMzcgQEAgYm9vbCBFZGl0b3JDbGllbnQ6OmNhblBhc3RlKFdlYkNvcmU6OkZyYQogCiBib29s
IEVkaXRvckNsaWVudDo6Y2FuVW5kbygpIGNvbnN0CiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFH
RVIpCiAgICAgcmV0dXJuICF1bmRvU3RhY2suaXNFbXB0eSgpOworI2Vsc2UKKyAgICByZXR1cm4g
ZmFsc2U7CisjZW5kaWYKIH0KIAogYm9vbCBFZGl0b3JDbGllbnQ6OmNhblJlZG8oKSBjb25zdAog
eworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIHJldHVybiAhcmVkb1N0YWNrLmlzRW1w
dHkoKTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiB9CiAKIHZvaWQgRWRpdG9y
Q2xpZW50Ojp1bmRvKCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICBpZiAoY2Fu
VW5kbygpKSB7CiAgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpVbmRvU3RlcD4gc3RlcCgqKC0tdW5k
b1N0YWNrLmVuZCgpKSk7CiAgICAgICAgIHVuZG9TdGFjay5yZW1vdmUoLS11bmRvU3RhY2suZW5k
KCkpOwogICAgICAgICAvLyB1bmFwcGx5IHdpbGwgY2FsbCB1cyBiYWNrIHRvIHB1c2ggdGhpcyBj
b21tYW5kIG9udG8gdGhlIHJlZG8gc3RhY2suCiAgICAgICAgIHN0ZXAtPnVuYXBwbHkoKTsKICAg
ICB9CisjZW5kaWYKIH0KIAogdm9pZCBFZGl0b3JDbGllbnQ6OnJlZG8oKQogeworI2lmICFFTkFC
TEUoVU5ET19NQU5BR0VSKQogICAgIGlmIChjYW5SZWRvKCkpIHsKICAgICAgICAgUmVmUHRyPFdl
YkNvcmU6OlVuZG9TdGVwPiBzdGVwKCooLS1yZWRvU3RhY2suZW5kKCkpKTsKICAgICAgICAgcmVk
b1N0YWNrLnJlbW92ZSgtLXJlZG9TdGFjay5lbmQoKSk7CkBAIC0zNDgsNiArMzY5LDcgQEAgdm9p
ZCBFZGl0b3JDbGllbnQ6OnJlZG8oKQogICAgICAgICBzdGVwLT5yZWFwcGx5KCk7CiAgICAgICAg
IG1faXNJblJlZG8gPSBmYWxzZTsKICAgICB9CisjZW5kaWYKIH0KIAogYm9vbCBFZGl0b3JDbGll
bnQ6OnNob3VsZEluc2VydE5vZGUoTm9kZSogbm9kZSwgUmFuZ2UqIHJhbmdlLCBFZGl0b3JJbnNl
cnRBY3Rpb24gYWN0aW9uKQpJbmRleDogU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9F
ZGl0b3JDbGllbnRRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9XZWJDb3Jl
U3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHAJKHJldmlzaW9uIDEyMzI1NSkKKysrIFNvdXJjZS9X
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMzksMTIgKzIzOSwxNiBAQCBib29sIEVkaXRvckNsaWVudFF0OjpzZWxlY3RXb3JkQmVm
b3JlTWVuCiAKIHZvaWQgRWRpdG9yQ2xpZW50UXQ6OnJlZ2lzdGVyVW5kb1N0ZXAoV1RGOjpQYXNz
UmVmUHRyPFdlYkNvcmU6OlVuZG9TdGVwPiBzdGVwKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5B
R0VSKQogI2lmbmRlZiBRVF9OT19VTkRPU1RBQ0sKICAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2Ut
PmQtPnBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBp
ZiAobV9pblVuZG9SZWRvIHx8IChmcmFtZSAmJiAhZnJhbWUtPmVkaXRvcigpLT5sYXN0RWRpdENv
bW1hbmQoKSAvKiBIQUNLISEgRG9uJ3QgcmVjcmVhdGUgdW5kb3MgKi8pKQogICAgICAgICByZXR1
cm47CiAgICAgbV9wYWdlLT51bmRvU3RhY2soKS0+cHVzaChuZXcgVW5kb1N0ZXBRdChzdGVwKSk7
CiAjZW5kaWYgLy8gUVRfTk9fVU5ET1NUQUNLCisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShzdGVw
KTsKKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNsaWVudFF0OjpyZWdpc3RlclJlZG9TdGVwKFdU
Rjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpVbmRvU3RlcD4pCkBAIC0yNTMsOSArMjU3LDExIEBAIHZv
aWQgRWRpdG9yQ2xpZW50UXQ6OnJlZ2lzdGVyUmVkb1N0ZXAoV1QKIAogdm9pZCBFZGl0b3JDbGll
bnRRdDo6Y2xlYXJVbmRvUmVkb09wZXJhdGlvbnMoKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5B
R0VSKQogI2lmbmRlZiBRVF9OT19VTkRPU1RBQ0sKICAgICByZXR1cm4gbV9wYWdlLT51bmRvU3Rh
Y2soKS0+Y2xlYXIoKTsKICNlbmRpZgorI2VuZGlmCiB9CiAKIGJvb2wgRWRpdG9yQ2xpZW50UXQ6
OmNhbkNvcHlDdXQoV2ViQ29yZTo6RnJhbWUqLCBib29sIGRlZmF1bHRWYWx1ZSkgY29uc3QKQEAg
LTI3MCwzOCArMjc2LDUwIEBAIGJvb2wgRWRpdG9yQ2xpZW50UXQ6OmNhblBhc3RlKFdlYkNvcmU6
OkYKIAogYm9vbCBFZGl0b3JDbGllbnRRdDo6Y2FuVW5kbygpIGNvbnN0CiB7CisjaWYgIUVOQUJM
RShVTkRPX01BTkFHRVIpCiAjaWZkZWYgUVRfTk9fVU5ET1NUQUNLCiAgICAgcmV0dXJuIGZhbHNl
OwogI2Vsc2UKICAgICByZXR1cm4gbV9wYWdlLT51bmRvU3RhY2soKS0+Y2FuVW5kbygpOwogI2Vu
ZGlmCisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogfQogCiBib29sIEVkaXRvckNs
aWVudFF0OjpjYW5SZWRvKCkgY29uc3QKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICNp
ZmRlZiBRVF9OT19VTkRPU1RBQ0sKICAgICByZXR1cm4gZmFsc2U7CiAjZWxzZQogICAgIHJldHVy
biBtX3BhZ2UtPnVuZG9TdGFjaygpLT5jYW5SZWRvKCk7CiAjZW5kaWYKKyNlbHNlCisgICAgcmV0
dXJuIGZhbHNlOworI2VuZGlmCiB9CiAKIHZvaWQgRWRpdG9yQ2xpZW50UXQ6OnVuZG8oKQogewor
I2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogI2lmbmRlZiBRVF9OT19VTkRPU1RBQ0sKICAgICBt
X2luVW5kb1JlZG8gPSB0cnVlOwogICAgIG1fcGFnZS0+dW5kb1N0YWNrKCktPnVuZG8oKTsKICAg
ICBtX2luVW5kb1JlZG8gPSBmYWxzZTsKICNlbmRpZgorI2VuZGlmCiB9CiAKIHZvaWQgRWRpdG9y
Q2xpZW50UXQ6OnJlZG8oKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogI2lmbmRlZiBR
VF9OT19VTkRPU1RBQ0sKICAgICBtX2luVW5kb1JlZG8gPSB0cnVlOwogICAgIG1fcGFnZS0+dW5k
b1N0YWNrKCktPnJlZG8oKTsKICAgICBtX2luVW5kb1JlZG8gPSBmYWxzZTsKICNlbmRpZgorI2Vu
ZGlmCiB9CiAKIGJvb2wgRWRpdG9yQ2xpZW50UXQ6OnNob3VsZEluc2VydE5vZGUoTm9kZSogbm9k
ZSwgUmFuZ2UqIHJhbmdlLCBFZGl0b3JJbnNlcnRBY3Rpb24gYWN0aW9uKQpJbmRleDogTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2
aXNpb24gMTIzMjU1KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjMgQEAKKzIwMTItMDctMTkgIFN1a29sc2FrIFNha3NodXdvbmcgIDxzdWtvbHNh
a0Bnb29nbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBVbmRvTWFuYWdlcidzIGF1dG9tYXRp
YyBET00gdHJhbnNhY3Rpb25zLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9OTE4MTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGlzIHBhdGNoIGluY2x1ZGVzIGNoYW5nZXMgZnJvbSBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODk3MjIKKyAgICAgICAgd2hpY2ggaGF2ZSBub3Qg
eWV0IGJlZW4gYWNjZXB0ZWQuCisKKyAgICAgICAgKiBlZGl0aW5nL3VuZG9tYW5hZ2VyL2RvY3Vt
ZW50LWhhcy11bmRvbWFuYWdlci5odG1sOgorICAgICAgICAqIGVkaXRpbmcvdW5kb21hbmFnZXIv
ZG9tdHJhbnNhY3Rpb24tc3Vydml2ZXMtZ2MtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBlZGl0aW5nL3VuZG9tYW5hZ2VyL2RvbXRyYW5zYWN0aW9uLXN1cnZpdmVzLWdjLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGVkaXRpbmcvdW5kb21hbmFnZXIvdW5kb21hbmFnZXItdHJhbnNhY3Qt
YXV0b21hdGljLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy91bmRvbWFu
YWdlci91bmRvbWFuYWdlci10cmFuc2FjdC1hdXRvbWF0aWMuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZWRpdGluZy91bmRvbWFuYWdlci91bmRvbWFuYWdlci10cmFuc2FjdC1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvdW5kb21hbmFnZXIvdW5kb21hbmFnZXItdHJhbnNh
Y3QuaHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy91bmRvbWFuYWdlci91bmRvbWFuYWdl
ci11bmRvLXJlZG8tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3VuZG9t
YW5hZ2VyL3VuZG9tYW5hZ2VyLXVuZG8tcmVkby5odG1sOiBBZGRlZC4KKwogMjAxMi0wNy0yMCAg
VG9ueSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gUmVi
YXNlbGluZSBjc3MzL2ZpbHRlcnMvY3VzdG9tIHRlc3RzCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0
aW5nL3VuZG9tYW5hZ2VyL2RvY3VtZW50LWhhcy11bmRvbWFuYWdlci5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIvZG9jdW1lbnQtaGFzLXVuZG9tYW5h
Z2VyLmh0bWwJKHJldmlzaW9uIDEyMzI1NSkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21h
bmFnZXIvZG9jdW1lbnQtaGFzLXVuZG9tYW5hZ2VyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTYs
NyArNiw2IEBACiA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0
LmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPGRpdiBpZD0ibG9nIj48L2Rpdj4KIDxz
Y3JpcHQ+CiB0ZXN0KGZ1bmN0aW9uKCkgewogICAgIGFzc2VydF9vd25fcHJvcGVydHkoZG9jdW1l
bnQsICJ1bmRvTWFuYWdlciIpOwpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvbWFuYWdl
ci9kb210cmFuc2FjdGlvbi1zdXJ2aXZlcy1nYy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZWRpdGluZy91bmRvbWFuYWdlci9kb210cmFuc2FjdGlvbi1zdXJ2aXZlcy1n
Yy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG9t
YW5hZ2VyL2RvbXRyYW5zYWN0aW9uLXN1cnZpdmVzLWdjLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw1IEBACitUaGlzIHRlc3RzIHRoYXQgdW5kb01hbmFnZXIga2VlcHMgRE9N
VHJhbnNhY3Rpb24gb2JqZWN0cyBhbGl2ZSBkdXJpbmcgaXRzIGxpZmV0aW1lIGFuZCB0aGVyZWZv
cmUgZG9lcyBub3QgY3Jhc2ggYWZ0ZXIgdGhlIEdDIHJ1bnMuCisKK1BBU1MgQWZ0ZXIgdGhlIEdD
IHJ1bnMsIHVuZG9NYW5hZ2VyLnVuZG8oKSBzdGlsbCB3b3Jrcy4gCitQQVNTIEFmdGVyIHRoZSBH
QyBydW5zIGFnYWluLCB1bmRvTWFuYWdlci5yZWRvKCkgc3RpbGwgd29ya3MuIAorCkluZGV4OiBM
YXlvdXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2VyL2RvbXRyYW5zYWN0aW9uLXN1cnZpdmVzLWdj
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvbWFuYWdlci9kb210
cmFuc2FjdGlvbi1zdXJ2aXZlcy1nYy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZWRpdGluZy91bmRvbWFuYWdlci9kb210cmFuc2FjdGlvbi1zdXJ2aXZlcy1nYy5odG1sCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDQ5IEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8dGl0bGU+RE9NVHJhbnNhY3Rpb24gc3Vydml2ZXMgR0M8L3RpdGxlPgorPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorVGhpcyB0ZXN0cyB0aGF0IHVuZG9NYW5hZ2VyIGtlZXBzIERPTVRyYW5zYWN0aW9u
IG9iamVjdHMgYWxpdmUgZHVyaW5nIGl0cyBsaWZldGltZQorYW5kIHRoZXJlZm9yZSBkb2VzIG5v
dCBjcmFzaCBhZnRlciB0aGUgR0MgcnVucy4KKworPGRpdiBpZD0ibG9nIj48L2Rpdj4KKworPHNj
cmlwdD4KK3ZhciBsb2cgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbG9nJyk7CisKK3ZhciB1
ID0gZG9jdW1lbnQudW5kb01hbmFnZXI7Cit1LnRyYW5zYWN0KHsKKwkiZXhlY3V0ZSI6IGZ1bmN0
aW9uKCkgeworCQlsb2cuaW5uZXJUZXh0ICs9ICgiZXhlY3V0ZVxuIik7CisJfSwKKwkidW5kbyI6
IGZ1bmN0aW9uKCkgeworCQlsb2cuaW5uZXJUZXh0ICs9ICgidW5kb1xuIik7CisJfSwKKwkicmVk
byI6IGZ1bmN0aW9uKCkgeworCQlsb2cuaW5uZXJUZXh0ICs9ICgicmVkb1xuIik7CisJfSwKK30s
IHRydWUpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworCWlmICh3aW5kb3cuR0NDb250cm9sbGVyKQor
CQlHQ0NvbnRyb2xsZXIuY29sbGVjdCgpOworCXUudW5kbygpOworCQorCWFzc2VydF90cnVlKGxv
Zy5pbm5lclRleHQgPT0gImV4ZWN1dGVcbnVuZG9cbiIpOworfSwgIkFmdGVyIHRoZSBHQyBydW5z
LCB1bmRvTWFuYWdlci51bmRvKCkgc3RpbGwgd29ya3MuIik7CisJCit0ZXN0KGZ1bmN0aW9uKCkg
eworCWlmICh3aW5kb3cuR0NDb250cm9sbGVyKQorCQlHQ0NvbnRyb2xsZXIuY29sbGVjdCgpOwor
CXUucmVkbygpOworCQorCWFzc2VydF90cnVlKGxvZy5pbm5lclRleHQgPT0gImV4ZWN1dGVcbnVu
ZG9cbnJlZG9cbiIpOworfSwgIkFmdGVyIHRoZSBHQyBydW5zIGFnYWluLCB1bmRvTWFuYWdlci5y
ZWRvKCkgc3RpbGwgd29ya3MuIik7CisKK2xvZy5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOworPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG9t
YW5hZ2VyL3VuZG9tYW5hZ2VyLXRyYW5zYWN0LWF1dG9tYXRpYy1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvbWFuYWdlci91bmRvbWFuYWdlci10cmFu
c2FjdC1hdXRvbWF0aWMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZWRpdGluZy91bmRvbWFuYWdlci91bmRvbWFuYWdlci10cmFuc2FjdC1hdXRvbWF0aWMtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyIEBACitUaGlzIHRlc3RzIHRoYXQgVW5k
b01hbmFnZXIgY29ycmVjdGx5IHJldmVydHMvcmVhcHBsaWVzIGF1dG9tYXRpYyBET00gdHJhbnNh
Y3Rpb25zIHRoYXQgbW9kaWZ5IHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIERPTSB0cmVlLgorCitQQVNT
IFVuZG9NYW5hZ2VyIGNhbGxzIHRoZSBmdW5jdGlvbiByZXR1cm5lZCBieSBleGVjdXRlQXV0b21h
dGljLiAoYXBwZW5kQ2hpbGQpIAorUEFTUyBVbmRvTWFuYWdlciBjYWxscyB0aGUgZnVuY3Rpb24g
cmV0dXJuZWQgYnkgZXhlY3V0ZUF1dG9tYXRpYy4gKGluc2VydEJlZm9yZSkgCitQQVNTIFVuZG9N
YW5hZ2VyIGNhbGxzIHRoZSBmdW5jdGlvbiByZXR1cm5lZCBieSBleGVjdXRlQXV0b21hdGljLiAo
cmVtb3ZlQ2hpbGQpIAorUEFTUyBVbmRvTWFuYWdlciByZXZlcnRzIHRoZSBjaGFuZ2UgbWFkZSBi
eSByZW1vdmVDaGlsZC4gCitQQVNTIFVuZG9NYW5hZ2VyIHJldmVydHMgdGhlIGNoYW5nZSBtYWRl
IGJ5IGluc2VydEJlZm9yZS4gCitQQVNTIFVuZG9NYW5hZ2VyIHJldmVydHMgdGhlIGNoYW5nZSBt
YWRlIGJ5IGFwcGVuZENoaWxkLiAKK1BBU1MgVW5kb01hbmFnZXIgcmVhcHBsaWVzIHRoZSBjaGFu
Z2UgbWFkZSBieSBhcHBlbmRDaGlsZC4gCitQQVNTIFVuZG9NYW5hZ2VyIHJlYXBwbGllcyB0aGUg
Y2hhbmdlIG1hZGUgYnkgaW5zZXJ0QmVmb3JlLiAKK1BBU1MgVW5kb01hbmFnZXIgcmVhcHBsaWVz
IHRoZSBjaGFuZ2UgbWFkZSBieSByZW1vdmVDaGlsZC4gCisKSW5kZXg6IExheW91dFRlc3RzL2Vk
aXRpbmcvdW5kb21hbmFnZXIvdW5kb21hbmFnZXItdHJhbnNhY3QtYXV0b21hdGljLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvbWFuYWdlci91bmRvbWFuYWdlci10
cmFuc2FjdC1hdXRvbWF0aWMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRp
bmcvdW5kb21hbmFnZXIvdW5kb21hbmFnZXItdHJhbnNhY3QtYXV0b21hdGljLmh0bWwJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsODIgQEAKKzwhZG9jdHlwZSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
Kzx0aXRsZT5VbmRvTWFuYWdlci50cmFuc2FjdCgpIGF1dG9tYXRpYzwvdGl0bGU+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+CitUaGlzIHRlc3RzIHRoYXQgVW5kb01hbmFnZXIgY29ycmVjdGx5IHJldmVy
dHMvcmVhcHBsaWVzIGF1dG9tYXRpYyBET00gdHJhbnNhY3Rpb25zCit0aGF0IG1vZGlmeSB0aGUg
c3RydWN0dXJlIG9mIHRoZSBET00gdHJlZS4KKworPGRpdiBpZD0iZWRpdCI+PC9kaXY+Cis8c2Ny
aXB0PgorCit2YXIgZWRpdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJlZGl0Iik7Cit2YXIg
dW5kb01hbmFnZXIgPSBkb2N1bWVudC51bmRvTWFuYWdlcjsKKwordGVzdChmdW5jdGlvbigpIHsK
KyAgICB1bmRvTWFuYWdlci50cmFuc2FjdCh7CisgICAgICAgICJleGVjdXRlQXV0b21hdGljIjog
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB2YXIgZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
InNwYW4iKTsKKyAgICAgICAgICAgIGQuaW5uZXJUZXh0ID0gIjEiOworICAgICAgICAgICAgZWRp
dC5hcHBlbmRDaGlsZChkKTsKKyAgICAgICAgfQorICAgIH0sIGZhbHNlKTsKKyAgICBhc3NlcnRf
dHJ1ZShlZGl0LmlubmVySFRNTCA9PSAiPHNwYW4+MTwvc3Bhbj4iKTsKK30sICJVbmRvTWFuYWdl
ciBjYWxscyB0aGUgZnVuY3Rpb24gcmV0dXJuZWQgYnkgZXhlY3V0ZUF1dG9tYXRpYy4gKGFwcGVu
ZENoaWxkKSIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIHVuZG9NYW5hZ2VyLnRyYW5zYWN0
KHsKKyAgICAgICAgImV4ZWN1dGVBdXRvbWF0aWMiOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
IHZhciBkMiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAgICAgICAgICAgIGQy
LmlubmVySFRNTCA9ICI8Yj4yPC9iPiI7CisgICAgICAgICAgICBlZGl0Lmluc2VydEJlZm9yZShk
MiwgZWRpdC5maXJzdENoaWxkKTsKKyAgICAgICAgfQorICAgIH0sIGZhbHNlKTsKKyAgICBhc3Nl
cnRfdHJ1ZShlZGl0LmlubmVySFRNTCA9PSAiPHNwYW4+PGI+MjwvYj48L3NwYW4+PHNwYW4+MTwv
c3Bhbj4iKTsKK30sICJVbmRvTWFuYWdlciBjYWxscyB0aGUgZnVuY3Rpb24gcmV0dXJuZWQgYnkg
ZXhlY3V0ZUF1dG9tYXRpYy4gKGluc2VydEJlZm9yZSkiKTsKKwordGVzdChmdW5jdGlvbigpIHsK
KyAgICB1bmRvTWFuYWdlci50cmFuc2FjdCh7CisgICAgICAgICJleGVjdXRlQXV0b21hdGljIjog
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBlZGl0LnJlbW92ZUNoaWxkKGVkaXQubGFzdENoaWxk
KTsKKyAgICAgICAgfQorICAgIH0sIGZhbHNlKTsKKyAgICBhc3NlcnRfdHJ1ZShlZGl0LmlubmVy
SFRNTCA9PSAiPHNwYW4+PGI+MjwvYj48L3NwYW4+Iik7Cit9LCAiVW5kb01hbmFnZXIgY2FsbHMg
dGhlIGZ1bmN0aW9uIHJldHVybmVkIGJ5IGV4ZWN1dGVBdXRvbWF0aWMuIChyZW1vdmVDaGlsZCki
KTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICB1bmRvTWFuYWdlci51bmRvKCk7CisgICAgYXNz
ZXJ0X3RydWUoZWRpdC5pbm5lckhUTUwgPT0gIjxzcGFuPjxiPjI8L2I+PC9zcGFuPjxzcGFuPjE8
L3NwYW4+Iik7Cit9LCAiVW5kb01hbmFnZXIgcmV2ZXJ0cyB0aGUgY2hhbmdlIG1hZGUgYnkgcmVt
b3ZlQ2hpbGQuIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgdW5kb01hbmFnZXIudW5kbygp
OworICAgIGFzc2VydF90cnVlKGVkaXQuaW5uZXJIVE1MID09ICI8c3Bhbj4xPC9zcGFuPiIpOwor
fSwgIlVuZG9NYW5hZ2VyIHJldmVydHMgdGhlIGNoYW5nZSBtYWRlIGJ5IGluc2VydEJlZm9yZS4i
KTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICB1bmRvTWFuYWdlci51bmRvKCk7CisgICAgYXNz
ZXJ0X3RydWUoZWRpdC5pbm5lckhUTUwgPT0gIiIpOworfSwgIlVuZG9NYW5hZ2VyIHJldmVydHMg
dGhlIGNoYW5nZSBtYWRlIGJ5IGFwcGVuZENoaWxkLiIpOworCit0ZXN0KGZ1bmN0aW9uKCkgewor
ICAgIHVuZG9NYW5hZ2VyLnJlZG8oKTsKKyAgICBhc3NlcnRfdHJ1ZShlZGl0LmlubmVySFRNTCA9
PSAiPHNwYW4+MTwvc3Bhbj4iKTsKK30sICJVbmRvTWFuYWdlciByZWFwcGxpZXMgdGhlIGNoYW5n
ZSBtYWRlIGJ5IGFwcGVuZENoaWxkLiIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIHVuZG9N
YW5hZ2VyLnJlZG8oKTsKKyAgICBhc3NlcnRfdHJ1ZShlZGl0LmlubmVySFRNTCA9PSAiPHNwYW4+
PGI+MjwvYj48L3NwYW4+PHNwYW4+MTwvc3Bhbj4iKTsKK30sICJVbmRvTWFuYWdlciByZWFwcGxp
ZXMgdGhlIGNoYW5nZSBtYWRlIGJ5IGluc2VydEJlZm9yZS4iKTsKKwordGVzdChmdW5jdGlvbigp
IHsKKyAgICB1bmRvTWFuYWdlci5yZWRvKCk7CisgICAgYXNzZXJ0X3RydWUoZWRpdC5pbm5lckhU
TUwgPT0gIjxzcGFuPjxiPjI8L2I+PC9zcGFuPiIpOworfSwgIlVuZG9NYW5hZ2VyIHJlYXBwbGll
cyB0aGUgY2hhbmdlIG1hZGUgYnkgcmVtb3ZlQ2hpbGQuIik7CisKK2VkaXQuc3R5bGUuZGlzcGxh
eSA9ICJub25lIjsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVz
dHMvZWRpdGluZy91bmRvbWFuYWdlci91bmRvbWFuYWdlci10cmFuc2FjdC1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvbWFuYWdlci91bmRvbWFuYWdl
ci10cmFuc2FjdC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0
aW5nL3VuZG9tYW5hZ2VyL3VuZG9tYW5hZ2VyLXRyYW5zYWN0LWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwxNCBAQAorVGhpcyB0ZXN0cyBVbmRvTWFuYWdlcidzIHRyYW5zYWN0
KCkgbWV0aG9kLgorCitQQVNTIGRvY3VtZW50IGhhcyBwcm9wZXJ0eSB1bmRvTWFuYWdlci4gCitQ
QVNTIHVuZG9NYW5hZ2VyIGhhcyBwcm9wZXJ0eSB0cmFuc2FjdC4gCitQQVNTIEFmdGVyIGEgdHJh
bnNhY3QgY2FsbCwgdW5kb01hbmFnZXIgYXBwbGllcyB0aGUgdHJhbnNhY3Rpb24uIAorUEFTUyBB
ZnRlciBhbm90aGVyIHRyYW5zYWN0IGNhbGwsIHVuZG9NYW5hZ2VyIGFwcGxpZXMgdGhlIHNlY29u
ZCB0cmFuc2FjdGlvbi4gCitQQVNTIEFmdGVyIGFuIHVuZG8gY2FsbCwgdW5kb01hbmFnZXIgdW5h
cHBsaWVzIHRoZSBzZWNvbmQgdHJhbnNhY3Rpb24uIAorUEFTUyBBZnRlciBhbm90aGVyIHVuZG8g
Y2FsbCwgdW5kb01hbmFnZXIgdW5hcHBsaWVzIHRoZSBmaXJzdCB0cmFuc2FjdGlvbi4gCitQQVNT
IEFmdGVyIGEgcmVkbyBjYWxsLCB1bmRvTWFuYWdlciByZWFwcGxpZXMgdGhlIGZpcnN0IHRyYW5z
YWN0aW9uLiAKK1BBU1MgQWZ0ZXIgYW5vdGhlciByZWRvIGNhbGwsIHVuZG9NYW5hZ2VyIHJlYXBw
bGllcyB0aGUgc2Vjb25kIHRyYW5zYWN0aW9uLiAKK1BBU1MgQWZ0ZXIgdGhyZWUgdHJhbnNhY3Qg
Y2FsbHMgdGhhdCBhcmUgbWVyZ2VkIGludG8gb25lIGVudHJ5LCB1bmRvTWFuYWdlciBhcHBsaWVz
IHRoZSB0aHJlZSB0cmFuc2FjdGlvbnMuIAorUEFTUyBBZnRlciBhbiB1bmRvIGNhbGwsIHVuZG9N
YW5hZ2VyIHVuYXBwbGllcyB0aGUgdGhyZWUgdHJhbnNhY3Rpb25zIGluIHRoZSBjb3JyZWN0IG9y
ZGVyLiAKK1BBU1MgQWZ0ZXIgYSByZWRvIGNhbGwsIHVuZG9NYW5hZ2VyIHJlYXBwbGllcyB0aGUg
dGhyZWUgdHJhbnNhY3Rpb25zIGluIHRoZSBjb3JyZWN0IG9yZGVyLiAKKwpJbmRleDogTGF5b3V0
VGVzdHMvZWRpdGluZy91bmRvbWFuYWdlci91bmRvbWFuYWdlci10cmFuc2FjdC5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIvdW5kb21hbmFnZXItdHJh
bnNhY3QuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFn
ZXIvdW5kb21hbmFnZXItdHJhbnNhY3QuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMjkg
QEAKKzwhZG9jdHlwZSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5VbmRvTWFuYWdlci50
cmFuc2FjdCgpPC90aXRsZT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5l
c3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVz
c3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KK1RoaXMgdGVzdHMgVW5kb01h
bmFnZXIncyB0cmFuc2FjdCgpIG1ldGhvZC4KKworPGRpdiBpZD0iZWRpdCIgY29udGVudEVkaXRh
YmxlPSJ0cnVlIj48L2Rpdj4KKzxzY3JpcHQ+CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgYXNz
ZXJ0X293bl9wcm9wZXJ0eShkb2N1bWVudCwgInVuZG9NYW5hZ2VyIik7Cit9LCAiZG9jdW1lbnQg
aGFzIHByb3BlcnR5IHVuZG9NYW5hZ2VyLiIpOworCit2YXIgdW5kb01hbmFnZXIgPSBkb2N1bWVu
dC51bmRvTWFuYWdlcjsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICBhc3NlcnRfaWRsX2F0dHJp
YnV0ZSh1bmRvTWFuYWdlciwgInRyYW5zYWN0Iik7Cit9LCAidW5kb01hbmFnZXIgaGFzIHByb3Bl
cnR5IHRyYW5zYWN0LiIpOworCit2YXIgZWRpdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJl
ZGl0Iik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgdW5kb01hbmFnZXIudHJhbnNhY3Qoewor
ICAgICAgICAiZXhlY3V0ZSI6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZWRpdC5pbm5lckhU
TUwgKz0gIjFlICI7CisgICAgICAgIH0sCisgICAgICAgICJ1bmRvIjogZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICBlZGl0LmlubmVySFRNTCArPSAiMXUgIjsKKyAgICAgICAgfSwKKyAgICAgICAg
InJlZG8iOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGVkaXQuaW5uZXJIVE1MICs9ICIxciAi
OworICAgICAgICB9CisgICAgfSwgZmFsc2UpOworICAgIGFzc2VydF90cnVlKGVkaXQuaW5uZXJI
VE1MID09ICIxZSAiKTsKK30sICJBZnRlciBhIHRyYW5zYWN0IGNhbGwsIHVuZG9NYW5hZ2VyIGFw
cGxpZXMgdGhlIHRyYW5zYWN0aW9uLiIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIHVuZG9N
YW5hZ2VyLnRyYW5zYWN0KHsKKyAgICAgICAgImV4ZWN1dGUiOiBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgIGVkaXQuaW5uZXJIVE1MICs9ICIyZSAiOworICAgICAgICB9LAorICAgICAgICAidW5k
byI6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZWRpdC5pbm5lckhUTUwgKz0gIjJ1ICI7Cisg
ICAgICAgIH0sCisgICAgICAgICJyZWRvIjogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBlZGl0
LmlubmVySFRNTCArPSAiMnIgIjsKKyAgICAgICAgfQorICAgIH0sIGZhbHNlKTsKKyAgICBhc3Nl
cnRfdHJ1ZShlZGl0LmlubmVySFRNTCA9PSAiMWUgMmUgIik7Cit9LCAiQWZ0ZXIgYW5vdGhlciB0
cmFuc2FjdCBjYWxsLCB1bmRvTWFuYWdlciBhcHBsaWVzIHRoZSBzZWNvbmQgdHJhbnNhY3Rpb24u
Iik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgdW5kb01hbmFnZXIudW5kbygpOworICAgIGFz
c2VydF90cnVlKGVkaXQuaW5uZXJIVE1MID09ICIxZSAyZSAydSAiKTsKK30sICJBZnRlciBhbiB1
bmRvIGNhbGwsIHVuZG9NYW5hZ2VyIHVuYXBwbGllcyB0aGUgc2Vjb25kIHRyYW5zYWN0aW9uLiIp
OworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIHVuZG9NYW5hZ2VyLnVuZG8oKTsKKyAgICBhc3Nl
cnRfdHJ1ZShlZGl0LmlubmVySFRNTCA9PSAiMWUgMmUgMnUgMXUgIik7Cit9LCAiQWZ0ZXIgYW5v
dGhlciB1bmRvIGNhbGwsIHVuZG9NYW5hZ2VyIHVuYXBwbGllcyB0aGUgZmlyc3QgdHJhbnNhY3Rp
b24uIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgdW5kb01hbmFnZXIucmVkbygpOworICAg
IGFzc2VydF90cnVlKGVkaXQuaW5uZXJIVE1MID09ICIxZSAyZSAydSAxdSAxciAiKTsKK30sICJB
ZnRlciBhIHJlZG8gY2FsbCwgdW5kb01hbmFnZXIgcmVhcHBsaWVzIHRoZSBmaXJzdCB0cmFuc2Fj
dGlvbi4iKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICB1bmRvTWFuYWdlci5yZWRvKCk7Cisg
ICAgYXNzZXJ0X3RydWUoZWRpdC5pbm5lckhUTUwgPT0gIjFlIDJlIDJ1IDF1IDFyIDJyICIpOwor
fSwgIkFmdGVyIGFub3RoZXIgcmVkbyBjYWxsLCB1bmRvTWFuYWdlciByZWFwcGxpZXMgdGhlIHNl
Y29uZCB0cmFuc2FjdGlvbi4iKTsKKworZWRpdC5pbm5lckhUTUwgPSAiIjsKKwordGVzdChmdW5j
dGlvbigpIHsKKyAgICB1bmRvTWFuYWdlci50cmFuc2FjdCh7CisgICAgICAgICJleGVjdXRlIjog
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBlZGl0LmlubmVySFRNTCArPSAiMWUgIjsKKyAgICAg
ICAgfSwKKyAgICAgICAgInVuZG8iOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGVkaXQuaW5u
ZXJIVE1MICs9ICIxdSAiOworICAgICAgICB9LAorICAgICAgICAicmVkbyI6IGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgZWRpdC5pbm5lckhUTUwgKz0gIjFyICI7CisgICAgICAgIH0KKyAgICB9
LCBmYWxzZSk7CisgICAgdW5kb01hbmFnZXIudHJhbnNhY3QoeworICAgICAgICAiZXhlY3V0ZSI6
IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZWRpdC5pbm5lckhUTUwgKz0gIjJlICI7CisgICAg
ICAgIH0sCisgICAgICAgICJ1bmRvIjogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBlZGl0Lmlu
bmVySFRNTCArPSAiMnUgIjsKKyAgICAgICAgfSwKKyAgICAgICAgInJlZG8iOiBmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgIGVkaXQuaW5uZXJIVE1MICs9ICIyciAiOworICAgICAgICB9CisgICAg
fSwgdHJ1ZSk7CisgICAgdW5kb01hbmFnZXIudHJhbnNhY3QoeworICAgICAgICAiZXhlY3V0ZSI6
IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZWRpdC5pbm5lckhUTUwgKz0gIjNlICI7CisgICAg
ICAgIH0sCisgICAgICAgICJ1bmRvIjogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBlZGl0Lmlu
bmVySFRNTCArPSAiM3UgIjsKKyAgICAgICAgfSwKKyAgICAgICAgInJlZG8iOiBmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgIGVkaXQuaW5uZXJIVE1MICs9ICIzciAiOworICAgICAgICB9CisgICAg
fSwgdHJ1ZSk7CisgICAgYXNzZXJ0X3RydWUoZWRpdC5pbm5lckhUTUwgPT0gIjFlIDJlIDNlICIp
OworfSwgIkFmdGVyIHRocmVlIHRyYW5zYWN0IGNhbGxzIHRoYXQgYXJlIG1lcmdlZCBpbnRvIG9u
ZSBlbnRyeSwgdW5kb01hbmFnZXIgYXBwbGllcyB0aGUgdGhyZWUgdHJhbnNhY3Rpb25zLiIpOwor
Cit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIHVuZG9NYW5hZ2VyLnVuZG8oKTsKKyAgICBhc3NlcnRf
dHJ1ZShlZGl0LmlubmVySFRNTCA9PSAiMWUgMmUgM2UgM3UgMnUgMXUgIik7Cit9LCAiQWZ0ZXIg
YW4gdW5kbyBjYWxsLCB1bmRvTWFuYWdlciB1bmFwcGxpZXMgdGhlIHRocmVlIHRyYW5zYWN0aW9u
cyBpbiB0aGUgY29ycmVjdCBvcmRlci4iKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICB1bmRv
TWFuYWdlci5yZWRvKCk7CisgICAgYXNzZXJ0X3RydWUoZWRpdC5pbm5lckhUTUwgPT0gIjFlIDJl
IDNlIDN1IDJ1IDF1IDFyIDJyIDNyICIpOworfSwgIkFmdGVyIGEgcmVkbyBjYWxsLCB1bmRvTWFu
YWdlciByZWFwcGxpZXMgdGhlIHRocmVlIHRyYW5zYWN0aW9ucyBpbiB0aGUgY29ycmVjdCBvcmRl
ci4iKTsKKworZWRpdC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOworCis8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIvdW5kb21h
bmFnZXItdW5kby1yZWRvLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9l
ZGl0aW5nL3VuZG9tYW5hZ2VyL3VuZG9tYW5hZ2VyLXVuZG8tcmVkby1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2VyL3VuZG9tYW5hZ2Vy
LXVuZG8tcmVkby1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTIgQEAKK1Ro
aXMgdGVzdHMgVW5kb01hbmFnZXIncyB1bmRvKCksIHJlZG8oKSwgbGVuZ3RoLCBhbmQgcG9zaXRp
b24uCisKK1BBU1MgZG9jdW1lbnQgaGFzIHByb3BlcnR5IHVuZG9NYW5hZ2VyLiAKK1BBU1MgdW5k
b01hbmFnZXIgaGFzIHByb3BlcnRpZXMgdW5kbywgcmVkbywgbGVuZ3RoLCBhbmQgcG9zaXRpb24u
IAorUEFTUyB1bmRvTWFuYWdlciBoYXMgY29ycmVjdCBpbml0aWFsIHZhbHVlcyBmb3IgbGVuZ3Ro
ICgwKSBhbmQgcG9zaXRpb24gKDApLiAKK1BBU1MgQWZ0ZXIgaW5zZXJ0aW5nIHRleHQgJ3Rlc3Qn
IGluIGEgRElWLCB1bmRvTWFuYWdlcidzIGxlbmd0aCBpcyAxIGFuZCBwb3NpdGlvbiBpcyAwLiAK
K1BBU1MgQWZ0ZXIgYm9sZGluZyB0aGUgdGV4dCwgdW5kb01hbmFnZXIncyBsZW5ndGggaXMgMiBh
bmQgcG9zaXRpb24gaXMgMCwgYW5kIHRoZSByZXN1bHQgaXMgYSBib2xkICd0ZXN0Jy4gCitQQVNT
IEFmdGVyIHVuZG9pbmcsIHVuZG9NYW5hZ2VyJ3MgbGVuZ3RoIGlzIDIgYW5kIHBvc2l0aW9uIGlz
IDEsIGFuZCB0aGUgcmVzdWx0IGlzIGEgcGxhaW4gJ3Rlc3QnLiAKK1BBU1MgQWZ0ZXIgdW5kb2lu
ZywgdW5kb01hbmFnZXIncyBsZW5ndGggaXMgMiBhbmQgcG9zaXRpb24gaXMgMiwgYW5kIHRoZSBy
ZXN1bHQgaXMgZW1wdHkuIAorUEFTUyBBZnRlciByZWRvaW5nLCB1bmRvTWFuYWdlcidzIGxlbmd0
aCBpcyAyIGFuZCBwb3NpdGlvbiBpcyAxLCBhbmQgdGhlIHJlc3VsdCBpcyBhIHBsYWluICd0ZXN0
Jy4gCitQQVNTIEFmdGVyIHJlZG9pbmcsIHVuZG9NYW5hZ2VyJ3MgbGVuZ3RoIGlzIDIgYW5kIHBv
c2l0aW9uIGlzIDAsIGFuZCB0aGUgcmVzdWx0IGlzIGEgYm9sZCAndGVzdCcuIAorCkluZGV4OiBM
YXlvdXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2VyL3VuZG9tYW5hZ2VyLXVuZG8tcmVkby5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIvdW5kb21hbmFn
ZXItdW5kby1yZWRvLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3Vu
ZG9tYW5hZ2VyL3VuZG9tYW5hZ2VyLXVuZG8tcmVkby5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDg2IEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+VW5kb01h
bmFnZXIgaGFzIHVuZG8oKSBhbmQgcmVkbygpIHRoYXQgd29yazwvdGl0bGU+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+CitUaGlzIHRlc3RzIFVuZG9NYW5hZ2VyJ3MgdW5kbygpLCByZWRvKCksIGxlbmd0
aCwgYW5kIHBvc2l0aW9uLgorCis8ZGl2IGlkPSJlZGl0IiBjb250ZW50RWRpdGFibGU9InRydWUi
PjwvZGl2PgorPHNjcmlwdD4KKwordGVzdChmdW5jdGlvbigpIHsKKyAgICBhc3NlcnRfb3duX3By
b3BlcnR5KGRvY3VtZW50LCAidW5kb01hbmFnZXIiKTsKK30sICJkb2N1bWVudCBoYXMgcHJvcGVy
dHkgdW5kb01hbmFnZXIuIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgYXNzZXJ0X2lkbF9h
dHRyaWJ1dGUoZG9jdW1lbnQudW5kb01hbmFnZXIsICJ1bmRvIik7CisgICAgYXNzZXJ0X2lkbF9h
dHRyaWJ1dGUoZG9jdW1lbnQudW5kb01hbmFnZXIsICJyZWRvIik7CisgICAgYXNzZXJ0X293bl9w
cm9wZXJ0eShkb2N1bWVudC51bmRvTWFuYWdlciwgImxlbmd0aCIpOworICAgIGFzc2VydF9vd25f
cHJvcGVydHkoZG9jdW1lbnQudW5kb01hbmFnZXIsICJwb3NpdGlvbiIpOworfSwgInVuZG9NYW5h
Z2VyIGhhcyBwcm9wZXJ0aWVzIHVuZG8sIHJlZG8sIGxlbmd0aCwgYW5kIHBvc2l0aW9uLiIpOwor
Cit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGFzc2VydF90cnVlKGRvY3VtZW50LnVuZG9NYW5hZ2Vy
Lmxlbmd0aCA9PSAwKTsKKyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVudC51bmRvTWFuYWdlci5wb3Np
dGlvbiA9PSAwKTsKK30sICJ1bmRvTWFuYWdlciBoYXMgY29ycmVjdCBpbml0aWFsIHZhbHVlcyBm
b3IgbGVuZ3RoICgwKSBhbmQgcG9zaXRpb24gKDApLiIpOworCit0ZXN0KGZ1bmN0aW9uKCkgewor
ICAgIHZhciBlZGl0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImVkaXQiKTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuc2V0UG9zaXRpb24oZWRpdCwgMCk7CisgICAgZG9jdW1lbnQuZXhl
Y0NvbW1hbmQoIkluc2VydEhUTUwiLCBmYWxzZSwgInRlc3QiKTsKKyAgICAKKyAgICBhc3NlcnRf
dHJ1ZShkb2N1bWVudC51bmRvTWFuYWdlci5sZW5ndGggPT0gMSk7CisgICAgYXNzZXJ0X3RydWUo
ZG9jdW1lbnQudW5kb01hbmFnZXIucG9zaXRpb24gPT0gMCk7Cit9LCAiQWZ0ZXIgaW5zZXJ0aW5n
IHRleHQgJ3Rlc3QnIGluIGEgRElWLCB1bmRvTWFuYWdlcidzIGxlbmd0aCBpcyAxIGFuZCBwb3Np
dGlvbiBpcyAwLiIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2VsZWN0Tm9kZUNvbnRlbnRzKGVkaXQpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgICAgZG9jdW1lbnQu
ZXhlY0NvbW1hbmQoIkJvbGQiLCBmYWxzZSwgbnVsbCk7CisgICAgCisgICAgYXNzZXJ0X3RydWUo
ZG9jdW1lbnQudW5kb01hbmFnZXIubGVuZ3RoID09IDIpOworICAgIGFzc2VydF90cnVlKGRvY3Vt
ZW50LnVuZG9NYW5hZ2VyLnBvc2l0aW9uID09IDApOworICAgIGFzc2VydF90cnVlKGVkaXQuaW5u
ZXJIVE1MID09ICI8Yj50ZXN0PC9iPiIpOworfSwgIkFmdGVyIGJvbGRpbmcgdGhlIHRleHQsIHVu
ZG9NYW5hZ2VyJ3MgbGVuZ3RoIGlzIDIgYW5kIHBvc2l0aW9uIGlzIDAsIGFuZCB0aGUgcmVzdWx0
IGlzIGEgYm9sZCAndGVzdCcuIik7CisgICAgCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGRvY3Vt
ZW50LnVuZG9NYW5hZ2VyLnVuZG8oKTsKKyAgICAKKyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVudC51
bmRvTWFuYWdlci5sZW5ndGggPT0gMik7CisgICAgYXNzZXJ0X3RydWUoZG9jdW1lbnQudW5kb01h
bmFnZXIucG9zaXRpb24gPT0gMSk7CisgICAgYXNzZXJ0X3RydWUoZWRpdC5pbm5lckhUTUwgPT0g
InRlc3QiKTsKK30sICJBZnRlciB1bmRvaW5nLCB1bmRvTWFuYWdlcidzIGxlbmd0aCBpcyAyIGFu
ZCBwb3NpdGlvbiBpcyAxLCBhbmQgdGhlIHJlc3VsdCBpcyBhIHBsYWluICd0ZXN0Jy4iKTsKKyAg
ICAKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgZG9jdW1lbnQudW5kb01hbmFnZXIudW5kbygpOwor
ICAgIAorICAgIGFzc2VydF90cnVlKGRvY3VtZW50LnVuZG9NYW5hZ2VyLmxlbmd0aCA9PSAyKTsK
KyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVudC51bmRvTWFuYWdlci5wb3NpdGlvbiA9PSAyKTsKKyAg
ICBhc3NlcnRfdHJ1ZShlZGl0LmlubmVySFRNTCA9PSAiIik7Cit9LCAiQWZ0ZXIgdW5kb2luZywg
dW5kb01hbmFnZXIncyBsZW5ndGggaXMgMiBhbmQgcG9zaXRpb24gaXMgMiwgYW5kIHRoZSByZXN1
bHQgaXMgZW1wdHkuIik7CisgICAgCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGRvY3VtZW50LnVu
ZG9NYW5hZ2VyLnJlZG8oKTsKKyAgICAKKyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVudC51bmRvTWFu
YWdlci5sZW5ndGggPT0gMik7CisgICAgYXNzZXJ0X3RydWUoZG9jdW1lbnQudW5kb01hbmFnZXIu
cG9zaXRpb24gPT0gMSk7CisgICAgYXNzZXJ0X3RydWUoZWRpdC5pbm5lckhUTUwgPT0gInRlc3Qi
KTsKK30sICJBZnRlciByZWRvaW5nLCB1bmRvTWFuYWdlcidzIGxlbmd0aCBpcyAyIGFuZCBwb3Np
dGlvbiBpcyAxLCBhbmQgdGhlIHJlc3VsdCBpcyBhIHBsYWluICd0ZXN0Jy4iKTsKKyAgICAKK3Rl
c3QoZnVuY3Rpb24oKSB7CisgICAgZG9jdW1lbnQudW5kb01hbmFnZXIucmVkbygpOworICAgIAor
ICAgIGFzc2VydF90cnVlKGRvY3VtZW50LnVuZG9NYW5hZ2VyLmxlbmd0aCA9PSAyKTsKKyAgICBh
c3NlcnRfdHJ1ZShkb2N1bWVudC51bmRvTWFuYWdlci5wb3NpdGlvbiA9PSAwKTsKKyAgICBhc3Nl
cnRfdHJ1ZShlZGl0LmlubmVySFRNTCA9PSAiPGI+dGVzdDwvYj4iKTsKK30sICJBZnRlciByZWRv
aW5nLCB1bmRvTWFuYWdlcidzIGxlbmd0aCBpcyAyIGFuZCBwb3NpdGlvbiBpcyAwLCBhbmQgdGhl
IHJlc3VsdCBpcyBhIGJvbGQgJ3Rlc3QnLiIpOworCitlZGl0LnN0eWxlLmRpc3BsYXkgPSAnbm9u
ZSc7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159259</attachid>
            <date>2012-08-17 21:35:24 -0700</date>
            <delta_ts>2012-08-20 19:02:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91812-20120817213726.patch</filename>
            <type>text/plain</type>
            <size>49050</size>
            <attacher name="Sukolsak Sakshuwong">sukolsak</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNTk2MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgwIEBACisyMDEyLTA4LTE3ICBTdWtvbHNh
ayBTYWtzaHV3b25nICA8c3Vrb2xzYWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQg
VW5kb01hbmFnZXIncyBhdXRvbWF0aWMgRE9NIHRyYW5zYWN0aW9ucworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE4MTIKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMgYXV0
b21hdGljIERPTSB0cmFuc2FjdGlvbnMgaW4gVW5kb01hbmFnZXIKKyAgICAgICAgYnkgcmVjb3Jk
aW5nIGNoYW5nZXMgaW4gRE9NIHRyZWUgc3RydWN0dXJlLCBhdHRyaWJ1dGVzLCBhbmQgbm9kZSBk
YXRhCisgICAgICAgIG9mIG5vZGVzIHVuZGVyIHVuZG8gc2NvcGUgaG9zdC4KKworICAgICAgICBU
ZXN0czogZWRpdGluZy91bmRvbWFuYWdlci9hdXRvbWF0aWMtdHJhbnNhY3Rpb24tYXR0cmlidXRl
Lmh0bWwKKyAgICAgICAgICAgICAgIGVkaXRpbmcvdW5kb21hbmFnZXIvYXV0b21hdGljLXRyYW5z
YWN0aW9uLWRhdGEuaHRtbAorICAgICAgICAgICAgICAgZWRpdGluZy91bmRvbWFuYWdlci9hdXRv
bWF0aWMtdHJhbnNhY3Rpb24tbm9kZS5odG1sCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoK
KyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToK
KyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvRE9N
VHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NVHJhbnNhY3Rpb246OmlzUmVj
b3JkaW5nQXV0b21hdGljVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpET01UcmFuc2FjdGlvbjo6YWRkVHJhbnNhY3Rpb25TdGVwKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9ET01UcmFuc2FjdGlvbi5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChET01UcmFuc2FjdGlvbik6CisgICAgICAgICogYmluZGluZ3MvdjgvRE9NVHJhbnNhY3Rp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpET01UcmFuc2Fj
dGlvbjo6YXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVHJhbnNhY3Rpb246OnVuYXBwbHkp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NVHJhbnNhY3Rpb246OnJlYXBwbHkpOgorICAgICAgICAo
V2ViQ29yZTo6RE9NVHJhbnNhY3Rpb246OmlzUmVjb3JkaW5nQXV0b21hdGljVHJhbnNhY3Rpb24p
OgorICAgICAgICAoV2ViQ29yZTo6RE9NVHJhbnNhY3Rpb246OmFkZFRyYW5zYWN0aW9uU3RlcCk6
CisgICAgICAgICogYmluZGluZ3MvdjgvRE9NVHJhbnNhY3Rpb24uaDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoRE9NVHJhbnNhY3Rpb24pOgorICAgICAgICAqIGNzcy9Qcm9wZXJ0eVNl
dENTU1N0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJvcGVydHlTZXRD
U1NTdHlsZURlY2xhcmF0aW9uOjpzZXRDc3NUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlByb3Bl
cnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6c2V0UHJvcGVydHkpOgorICAgICAgICAoV2ViQ29y
ZTo6UHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpyZW1vdmVQcm9wZXJ0eSk6CisgICAg
ICAgIChXZWJDb3JlOjpQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OnNldFByb3BlcnR5
SW50ZXJuYWwpOgorICAgICAgICAqIGRvbS9DaGFyYWN0ZXJEYXRhLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNoYXJhY3RlckRhdGE6OnNldERhdGFBbmRVcGRhdGUpOgorICAgICAgICAqIGRvbS9D
b250YWluZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OndpbGxSZW1vdmVDaGlsZCk6Cisg
ICAgICAgIChXZWJDb3JlOjp3aWxsUmVtb3ZlQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6
dXBkYXRlVHJlZUFmdGVySW5zZXJ0aW9uKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojp3aWxsTW9kaWZ5QXR0cmlidXRlKToKKyAgICAgICAg
KiBlZGl0aW5nL0RPTVRyYW5zYWN0aW9uU3RlcC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlSW5zZXJ0aW5nRE9NVHJhbnNhY3Rpb25TdGVwOjpO
b2RlSW5zZXJ0aW5nRE9NVHJhbnNhY3Rpb25TdGVwKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVJ
bnNlcnRpbmdET01UcmFuc2FjdGlvblN0ZXA6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpO
b2RlSW5zZXJ0aW5nRE9NVHJhbnNhY3Rpb25TdGVwOjp1bmFwcGx5KToKKyAgICAgICAgKFdlYkNv
cmU6Ok5vZGVJbnNlcnRpbmdET01UcmFuc2FjdGlvblN0ZXA6OnJlYXBwbHkpOgorICAgICAgICAo
V2ViQ29yZTo6Tm9kZVJlbW92aW5nRE9NVHJhbnNhY3Rpb25TdGVwOjpOb2RlUmVtb3ZpbmdET01U
cmFuc2FjdGlvblN0ZXApOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbW92aW5nRE9NVHJhbnNh
Y3Rpb25TdGVwOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbW92aW5nRE9NVHJh
bnNhY3Rpb25TdGVwOjp1bmFwcGx5KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW1vdmluZ0RP
TVRyYW5zYWN0aW9uU3RlcDo6cmVhcHBseSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhUmVwbGFj
aW5nRE9NVHJhbnNhY3Rpb25TdGVwOjpEYXRhUmVwbGFjaW5nRE9NVHJhbnNhY3Rpb25TdGVwKToK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFSZXBsYWNpbmdET01UcmFuc2FjdGlvblN0ZXA6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhUmVwbGFjaW5nRE9NVHJhbnNhY3Rpb25TdGVwOjp1
bmFwcGx5KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFSZXBsYWNpbmdET01UcmFuc2FjdGlvblN0
ZXA6OnJlYXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6QXR0ckNoYW5naW5nRE9NVHJhbnNhY3Rp
b25TdGVwOjpBdHRyQ2hhbmdpbmdET01UcmFuc2FjdGlvblN0ZXApOgorICAgICAgICAoV2ViQ29y
ZTo6QXR0ckNoYW5naW5nRE9NVHJhbnNhY3Rpb25TdGVwOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6QXR0ckNoYW5naW5nRE9NVHJhbnNhY3Rpb25TdGVwOjp1bmFwcGx5KToKKyAgICAgICAg
KFdlYkNvcmU6OkF0dHJDaGFuZ2luZ0RPTVRyYW5zYWN0aW9uU3RlcDo6cmVhcHBseSk6CisgICAg
ICAgICogZWRpdGluZy9ET01UcmFuc2FjdGlvblN0ZXAuaDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKERPTVRyYW5zYWN0aW9uU3RlcCk6CisgICAgICAgIChXZWJDb3JlOjpE
T01UcmFuc2FjdGlvblN0ZXA6On5ET01UcmFuc2FjdGlvblN0ZXApOgorICAgICAgICAoTm9kZUlu
c2VydGluZ0RPTVRyYW5zYWN0aW9uU3RlcCk6CisgICAgICAgIChOb2RlUmVtb3ZpbmdET01UcmFu
c2FjdGlvblN0ZXApOgorICAgICAgICAoRGF0YVJlcGxhY2luZ0RPTVRyYW5zYWN0aW9uU3RlcCk6
CisgICAgICAgIChBdHRyQ2hhbmdpbmdET01UcmFuc2FjdGlvblN0ZXApOgorCiAyMDEyLTA4LTE3
ICBLZWlzaGkgSGF0dG9yaSAgPGtlaXNoaUB3ZWJraXQub3JnPgogCiAgICAgICAgIENhbGVuZGFy
IHBpY2tlciBzaG93cyB3cm9uZyBkYXRlIHdoZW4gaW5wdXQgZWxlbWVudCBoYXMgeWVhciBlYXJs
aWVyIHRoYW4gMTAwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTI1OTYzKQor
KysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEyMTgs
NiArMTIxOCw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBlZGl0aW5nL0JyZWFrQmxvY2tx
dW90ZUNvbW1hbmQuY3BwCiAgICAgZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKICAg
ICBlZGl0aW5nL0NyZWF0ZUxpbmtDb21tYW5kLmNwcAorICAgIGVkaXRpbmcvRE9NVHJhbnNhY3Rp
b25TdGVwLmNwcAogICAgIGVkaXRpbmcvRGVsZXRlQnV0dG9uLmNwcAogICAgIGVkaXRpbmcvRGVs
ZXRlQnV0dG9uQ29udHJvbGxlci5jcHAKICAgICBlZGl0aW5nL0RlbGV0ZUZyb21UZXh0Tm9kZUNv
bW1hbmQuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDEy
NTk2MykKKysrIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29w
eSkKQEAgLTI5MzgsNiArMjkzOCw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dl
YkNvcmUvZWRpdGluZy9EaWN0YXRpb25BbHRlcm5hdGl2ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0RpY3RhdGlvbkNvbW1hbmQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Rp
Y3RhdGlvbkNvbW1hbmQuaCBcCisJU291cmNlL1dlYkNvcmUvZWRpdGluZy9ET01UcmFuc2FjdGlv
blN0ZXAuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RPTVRyYW5zYWN0aW9uU3RlcC5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRBY3Rpb24uaCBcCiAJU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0Q29tbWFuZC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dENvbW1hbmQuaCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiAxMjU5NjMpCisrKyBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTI2NDAsNiArMjY0
MCw4IEBACiAgICAgICAgICAgICAnZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAnLAog
ICAgICAgICAgICAgJ2VkaXRpbmcvQ3JlYXRlTGlua0NvbW1hbmQuY3BwJywKICAgICAgICAgICAg
ICdlZGl0aW5nL0NyZWF0ZUxpbmtDb21tYW5kLmgnLAorICAgICAgICAgICAgJ2VkaXRpbmcvRE9N
VHJhbnNhY3Rpb25TdGVwLmNwcCcsCisgICAgICAgICAgICAnZWRpdGluZy9ET01UcmFuc2FjdGlv
blN0ZXAuaCcsCiAgICAgICAgICAgICAnZWRpdGluZy9EZWxldGVCdXR0b24uY3BwJywKICAgICAg
ICAgICAgICdlZGl0aW5nL0RlbGV0ZUJ1dHRvbi5oJywKICAgICAgICAgICAgICdlZGl0aW5nL0Rl
bGV0ZUJ1dHRvbkNvbnRyb2xsZXIuY3BwJywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiAxMjU5NjMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtNTU5
OTksNiArNTU5OTksNjIgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0
aXZlUGF0aD0iLi5cZWRpdGluZ1xET01UcmFuc2FjdGlvblN0ZXAuY3BwIgorCQkJCT4KKwkJCQk8
RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQkJCUV4Y2x1ZGVk
RnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29t
cGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVD
b25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJv
bUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGls
ZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25m
aWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJRXhj
bHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZD
Q0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8
RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb19DRkxpdGV8V2luMzIi
CisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJ
CQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRp
b24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4zMiIK
KwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJ
CU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlv
bj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUHJvZHVjdGlvbnxXaW4zMiIK
KwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJ
CU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlv
bj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxlZGl0aW5nXERP
TVRyYW5zYWN0aW9uU3RlcC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVs
YXRpdmVQYXRoPSIuLlxlZGl0aW5nXEVkaXRBY3Rpb24uaCIKIAkJCQk+CiAJCQk8L0ZpbGU+Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiAxMjU5NjMpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE5NjgsNiArMTk2OCw4IEBACiAJ
CTdCOTE4NEQzMTU3NThFNDIwMDkyQUE5MyAvKiBVbmRvTWFuYWdlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I5MTg0RDAxNTc1OEU0MjAwOTJBQTkz
IC8qIFVuZG9NYW5hZ2VyLmggKi87IH07CiAJCTdCQjM1QUVCMTVDQ0RERjQwMEYyQTY0MyAvKiBE
T01UcmFuc2FjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QkIzNUFFOTE1Q0NEREY0MDBGMkE2NDMgLyogRE9NVHJhbnNhY3Rpb24uY3BwICov
OyB9OwogCQk3QkIzNUFFQzE1Q0NEREY0MDBGMkE2NDMgLyogRE9NVHJhbnNhY3Rpb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCQjM1QUVBMTVDQ0RE
RjQwMEYyQTY0MyAvKiBET01UcmFuc2FjdGlvbi5oICovOyB9OworCQk3QkQxMTdFQjE1QjhEQjAx
MDBDOTc0QTMgLyogRE9NVHJhbnNhY3Rpb25TdGVwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCRDExN0U5MTVCOERCMDEwMEM5NzRBMyAvKiBET01U
cmFuc2FjdGlvblN0ZXAuY3BwICovOyB9OworCQk3QkQxMTdFQzE1QjhEQjAxMDBDOTc0QTMgLyog
RE9NVHJhbnNhY3Rpb25TdGVwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3QkQxMTdFQTE1QjhEQjAxMDBDOTc0QTMgLyogRE9NVHJhbnNhY3Rpb25TdGVw
LmggKi87IH07CiAJCTdDNTIyRDRCMTVCNDc3RTgwMDlCN0M5NSAvKiBJbnNwZWN0b3JPdmVybGF5
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNTIy
RDQ5MTVCNDc3RTgwMDlCN0M5NSAvKiBJbnNwZWN0b3JPdmVybGF5LmNwcCAqLzsgfTsKIAkJN0Uz
M0NEMDExMjdGMzQwRDAwQkU4RjE3IC8qIFB1cmdlUHJpb3JpdHkuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFMzNDRDAwMTI3RjM0MEQwMEJFOEYxNyAv
KiBQdXJnZVByaW9yaXR5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJN0UzN0VGMkUxMzM5MjA4ODAwQjI5MjUwIC8qIFN1YnJlc291cmNlTG9hZGVy
Q0YuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0Uz
N0VGMkQxMzM5MjA4ODAwQjI5MjUwIC8qIFN1YnJlc291cmNlTG9hZGVyQ0YuY3BwICovOyB9OwpA
QCAtOTE0NSw2ICs5MTQ3LDggQEAKIAkJN0I5MTg0RDExNTc1OEU0MjAwOTJBQTkzIC8qIFVuZG9N
YW5hZ2VyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBVbmRvTWFuYWdlci5pZGw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCQjM1QUU5MTVDQ0RERjQwMEYyQTY0MyAvKiBET01U
cmFuc2FjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01U
cmFuc2FjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCQjM1QUVBMTVD
Q0RERjQwMEYyQTY0MyAvKiBET01UcmFuc2FjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBET01UcmFuc2FjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk3QkQxMTdFOTE1QjhEQjAxMDBDOTc0QTMgLyogRE9NVHJhbnNhY3Rpb25TdGVwLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTVRyYW5zYWN0aW9uU3RlcC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCRDExN0VBMTVCOERCMDEwMEM5NzRBMyAv
KiBET01UcmFuc2FjdGlvblN0ZXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RE9NVHJhbnNhY3Rpb25TdGVwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDNTIy
RDQ5MTVCNDc3RTgwMDlCN0M5NSAvKiBJbnNwZWN0b3JPdmVybGF5LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3Rvck92ZXJsYXkuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3QzUyMkQ0QTE1QjQ3OEIyMDA5QjdDOTUgLyogSW5zcGVjdG9y
T3ZlcmxheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JPdmVy
bGF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDNjAxMjgwNjAwNzhCQjcwRTM2
N0E5NSAvKiBETlNSZXNvbHZlUXVldWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gRE5TUmVzb2x2ZVF1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTE3MTA0LDYgKzE3MTA4LDggQEAKIAkJCQlDRUNBREZDNDE1Mzc3OEZGMDBFMzcwNjggLyog
RGljdGF0aW9uQ29tbWFuZC5jcHAgKi8sCiAJCQkJQ0VDQURGQzUxNTM3NzhGRjAwRTM3MDY4IC8q
IERpY3RhdGlvbkNvbW1hbmQuaCAqLywKIAkJCQk3QjhDMUZFNjE1Q0NFM0MyMDA0QjM1REMgLyog
RE9NVHJhbnNhY3Rpb24uaWRsICovLAorCQkJCTdCRDExN0U5MTVCOERCMDEwMEM5NzRBMyAvKiBE
T01UcmFuc2FjdGlvblN0ZXAuY3BwICovLAorCQkJCTdCRDExN0VBMTVCOERCMDEwMEM5NzRBMyAv
KiBET01UcmFuc2FjdGlvblN0ZXAuaCAqLywKIAkJCQk5MzMwOUQ5MzA5OUU2NDkxMDA1NkU1ODEg
LyogRWRpdEFjdGlvbi5oICovLAogCQkJCTkzMzA5RDk0MDk5RTY0OTEwMDU2RTU4MSAvKiBFZGl0
Q29tbWFuZC5jcHAgKi8sCiAJCQkJOTMzMDlEOTUwOTlFNjQ5MTAwNTZFNTgxIC8qIEVkaXRDb21t
YW5kLmggKi8sCkBAIC0yMzEyOSw2ICsyMzEzNSw3IEBACiAJCQkJMDVGRDY5RTAxMjg0NUQ0MzAw
QjJCRUIzIC8qIERPTVRpbWVTdGFtcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzZGQzJCMEMxMjM3
MERBMDAwNkE5OTFBIC8qIERPTVRva2VuTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0JCMzVB
RUMxNUNDRERGNDAwRjJBNjQzIC8qIERPTVRyYW5zYWN0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk3QkQxMTdFQzE1QjhEQjAxMDBDOTc0QTMgLyogRE9NVHJhbnNhY3Rpb25TdGVwLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQzFBMzdCRTA5N0M3MTVGMDAxOUYzRDggLyogRE9NVHJhdmVyc2FsLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk4NTUyNkNEMjBBQjBCN0Q5MDAwMzAyRUEgLyogRE9NVHJlZVdh
bGtlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUwQjQxQzMwQUQ5RTdFNzAwQTZFRDRGIC8qIERP
TVRyZWVXYWxrZXJJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjM5Miw2ICsyNjM5OSw3
IEBACiAJCQkJMTg4NjA0QjMwRjJFNjU0QTAwMEI2NDQzIC8qIERPTVRpbWVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTc2RkMyQjBCMTIzNzBEQTAwMDZBOTkxQSAvKiBET01Ub2tlbkxpc3QuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJN0JCMzVBRUIxNUNDRERGNDAwRjJBNjQzIC8qIERPTVRyYW5z
YWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdCRDExN0VCMTVCOERCMDEwMEM5NzRBMyAv
KiBET01UcmFuc2FjdGlvblN0ZXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODU1MjZDRDMwQUIw
QjdEQTAwMDMwMkVBIC8qIERPTVRyZWVXYWxrZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQk4NUM3
RjQ5MjBBQUY3OURDMDA0MDE0REQgLyogRE9NVUlFdmVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTJFMzdERkRBMTJEQkFGQjgwMEE2QjIzMyAvKiBET01VUkwuY3BwIGluIFNvdXJjZXMgKi8sCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01UcmFuc2FjdGlvbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NVHJhbnNhY3Rpb24uY3BwCShy
ZXZpc2lvbiAxMjU5NjMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01UcmFuc2Fj
dGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDYgKzU1LDE3IEBAIHZvaWQgRE9NVHJhbnNh
Y3Rpb246OnJlYXBwbHkoKQogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgSlNDIGJpbmRpbmdzCiB9
CiAKK2Jvb2wgRE9NVHJhbnNhY3Rpb246OmlzUmVjb3JkaW5nQXV0b21hdGljVHJhbnNhY3Rpb24o
Tm9kZSopCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudCBKU0MgYmluZGluZ3MKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK3ZvaWQgRE9NVHJhbnNhY3Rpb246OmFkZFRyYW5zYWN0aW9uU3RlcChQ
YXNzUmVmUHRyPERPTVRyYW5zYWN0aW9uU3RlcD4pCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVu
dCBKU0MgYmluZGluZ3MKK30KKwogfQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0RPTVRyYW5zYWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvRE9NVHJhbnNhY3Rpb24uaAkocmV2aXNpb24gMTI1OTYzKQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvRE9NVHJhbnNhY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAt
MjcsMTEgKzI3LDEzIEBACiAKICNpZiBFTkFCTEUoVU5ET19NQU5BR0VSKQogCisjaW5jbHVkZSAi
RE9NVHJhbnNhY3Rpb25TdGVwLmgiCiAjaW5jbHVkZSAiVW5kb1N0ZXAuaCIKICNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgTm9kZTsKIGNsYXNz
IFVuZG9NYW5hZ2VyOwogCiBjbGFzcyBET01UcmFuc2FjdGlvbiA6IHB1YmxpYyBVbmRvU3RlcCB7
CkBAIC00OCw2ICs1MCw5IEBAIHB1YmxpYzoKICAgICBVbmRvTWFuYWdlciogdW5kb01hbmFnZXIo
KSBjb25zdCB7IHJldHVybiBtX3VuZG9NYW5hZ2VyOyB9CiAgICAgdm9pZCBzZXRVbmRvTWFuYWdl
cihVbmRvTWFuYWdlciogdW5kb01hbmFnZXIpIHsgbV91bmRvTWFuYWdlciA9IHVuZG9NYW5hZ2Vy
OyB9CiAKKyAgICBzdGF0aWMgYm9vbCBpc1JlY29yZGluZ0F1dG9tYXRpY1RyYW5zYWN0aW9uKE5v
ZGUqKTsKKyAgICBzdGF0aWMgdm9pZCBhZGRUcmFuc2FjdGlvblN0ZXAoUGFzc1JlZlB0cjxET01U
cmFuc2FjdGlvblN0ZXA+KTsKKwogcHJpdmF0ZToKICAgICBET01UcmFuc2FjdGlvbigpOwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01UcmFuc2FjdGlvbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NVHJhbnNhY3Rpb24uY3BwCShy
ZXZpc2lvbiAxMjU5NjMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01UcmFuc2Fj
dGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDggQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCitET01UcmFuc2FjdGlvbiogRE9NVHJhbnNhY3Rpb246OnNfcmVjb3JkaW5nRE9N
VHJhbnNhY3Rpb24gPSAwOworCiBET01UcmFuc2FjdGlvbjo6RE9NVHJhbnNhY3Rpb24oY29uc3Qg
V29ybGRDb250ZXh0SGFuZGxlJiB3b3JsZENvbnRleHQpCiAgICAgOiBtX3dvcmxkQ29udGV4dCh3
b3JsZENvbnRleHQpCiAgICAgLCBtX3VuZG9NYW5hZ2VyKDApCkBAIC01MSwxMiArNTMsMjIgQEAg
dm9pZCBET01UcmFuc2FjdGlvbjo6YXBwbHkoKQogICAgIG1faXNBdXRvbWF0aWMgPSAhZ2V0RnVu
Y3Rpb24oImV4ZWN1dGVBdXRvbWF0aWMiKS5Jc0VtcHR5KCk7CiAgICAgaWYgKCFtX2lzQXV0b21h
dGljKQogICAgICAgICBjYWxsRnVuY3Rpb24oImV4ZWN1dGUiKTsKKyAgICBlbHNlIHsKKyAgICAg
ICAgc19yZWNvcmRpbmdET01UcmFuc2FjdGlvbiA9IHRoaXM7CisgICAgICAgIG1fdHJhbnNhY3Rp
b25TdGVwcyA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8UmVmUHRyPERPTVRyYW5zYWN0aW9uU3RlcD4g
Pik7CisgICAgICAgIGNhbGxGdW5jdGlvbigiZXhlY3V0ZUF1dG9tYXRpYyIpOworICAgICAgICBz
X3JlY29yZGluZ0RPTVRyYW5zYWN0aW9uID0gMDsKKyAgICB9CiB9CiAKIHZvaWQgRE9NVHJhbnNh
Y3Rpb246OnVuYXBwbHkoKQogewogICAgIGlmICghbV9pc0F1dG9tYXRpYykKICAgICAgICAgY2Fs
bEZ1bmN0aW9uKCJ1bmRvIik7CisgICAgZWxzZSB7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSBt
X3RyYW5zYWN0aW9uU3RlcHMtPnNpemUoKTsgaSA+IDA7IC0taSkKKyAgICAgICAgICAgIG1fdHJh
bnNhY3Rpb25TdGVwcy0+YXQoaSAtIDEpLT51bmFwcGx5KCk7CisgICAgfQogCiAgICAgaWYgKG1f
dW5kb01hbmFnZXIpCiAgICAgICAgIG1fdW5kb01hbmFnZXItPnJlZ2lzdGVyUmVkb1N0ZXAodGhp
cyk7CkBAIC02Niw2ICs3OCwxMCBAQCB2b2lkIERPTVRyYW5zYWN0aW9uOjpyZWFwcGx5KCkKIHsK
ICAgICBpZiAoIW1faXNBdXRvbWF0aWMpCiAgICAgICAgIGNhbGxGdW5jdGlvbigicmVkbyIpOwor
ICAgIGVsc2UgeworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fdHJhbnNhY3Rpb25T
dGVwcy0+c2l6ZSgpOyArK2kpCisgICAgICAgICAgICBtX3RyYW5zYWN0aW9uU3RlcHMtPmF0KGkp
LT5yZWFwcGx5KCk7CisgICAgfQogCiAgICAgaWYgKG1fdW5kb01hbmFnZXIpCiAgICAgICAgIG1f
dW5kb01hbmFnZXItPnJlZ2lzdGVyVW5kb1N0ZXAodGhpcyk7CkBAIC0xMTYsNiArMTMyLDIyIEBA
IHZvaWQgRE9NVHJhbnNhY3Rpb246OmNhbGxGdW5jdGlvbihjb25zdCAKICAgICBmcmFtZS0+c2Ny
aXB0KCktPnByb3h5KCktPmNhbGxGdW5jdGlvbihmdW5jdGlvbiwgcmVjZWl2ZXIsIDAsIHBhcmFt
ZXRlcnMpOwogfQogCitib29sIERPTVRyYW5zYWN0aW9uOjppc1JlY29yZGluZ0F1dG9tYXRpY1Ry
YW5zYWN0aW9uKE5vZGUqIG5vZGUpCit7CisgICAgaWYgKCFzX3JlY29yZGluZ0RPTVRyYW5zYWN0
aW9uIHx8ICFzX3JlY29yZGluZ0RPTVRyYW5zYWN0aW9uLT5tX3VuZG9NYW5hZ2VyKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgTm9kZSogaG9zdCA9IHNfcmVjb3JkaW5nRE9NVHJhbnNhY3Rp
b24tPm1fdW5kb01hbmFnZXItPnVuZG9TY29wZUhvc3QoKTsKKyAgICBpZiAoIWhvc3QpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gaG9zdC0+Y29udGFpbnMobm9kZSk7Cit9CisK
K3ZvaWQgRE9NVHJhbnNhY3Rpb246OmFkZFRyYW5zYWN0aW9uU3RlcChQYXNzUmVmUHRyPERPTVRy
YW5zYWN0aW9uU3RlcD4gdHJhbnNhY3Rpb25TdGVwKQoreworICAgIEFTU0VSVChzX3JlY29yZGlu
Z0RPTVRyYW5zYWN0aW9uKTsKKyAgICBzX3JlY29yZGluZ0RPTVRyYW5zYWN0aW9uLT5tX3RyYW5z
YWN0aW9uU3RlcHMtPmFwcGVuZCh0cmFuc2FjdGlvblN0ZXApOworfQorCiB9CiAKICNlbmRpZgpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NVHJhbnNhY3Rpb24uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01UcmFuc2FjdGlvbi5oCShyZXZp
c2lvbiAxMjU5NjMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01UcmFuc2FjdGlv
bi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxMiArMjcsMTQgQEAKIAogI2lmIEVOQUJMRShVTkRP
X01BTkFHRVIpCiAKKyNpbmNsdWRlICJET01UcmFuc2FjdGlvblN0ZXAuaCIKICNpbmNsdWRlICJV
bmRvU3RlcC5oIgogI2luY2x1ZGUgIldvcmxkQ29udGV4dEhhbmRsZS5oIgogI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBOb2RlOwogY2xhc3Mg
VW5kb01hbmFnZXI7CiAKIGNsYXNzIERPTVRyYW5zYWN0aW9uIDogcHVibGljIFVuZG9TdGVwIHsK
QEAgLTQ5LDYgKzUxLDkgQEAgcHVibGljOgogICAgIFVuZG9NYW5hZ2VyKiB1bmRvTWFuYWdlcigp
IGNvbnN0IHsgcmV0dXJuIG1fdW5kb01hbmFnZXI7IH0KICAgICB2b2lkIHNldFVuZG9NYW5hZ2Vy
KFVuZG9NYW5hZ2VyKiB1bmRvTWFuYWdlcikgeyBtX3VuZG9NYW5hZ2VyID0gdW5kb01hbmFnZXI7
IH0KIAorICAgIHN0YXRpYyBib29sIGlzUmVjb3JkaW5nQXV0b21hdGljVHJhbnNhY3Rpb24oTm9k
ZSopOworICAgIHN0YXRpYyB2b2lkIGFkZFRyYW5zYWN0aW9uU3RlcChQYXNzUmVmUHRyPERPTVRy
YW5zYWN0aW9uU3RlcD4pOworCiBwcml2YXRlOgogICAgIERPTVRyYW5zYWN0aW9uKGNvbnN0IFdv
cmxkQ29udGV4dEhhbmRsZSYpOwogICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBnZXRGdW5j
dGlvbihjb25zdCBjaGFyKik7CkBAIC01Nyw2ICs2Miw5IEBAIHByaXZhdGU6CiAgICAgV29ybGRD
b250ZXh0SGFuZGxlIG1fd29ybGRDb250ZXh0OwogICAgIFVuZG9NYW5hZ2VyKiBtX3VuZG9NYW5h
Z2VyOwogICAgIGJvb2wgbV9pc0F1dG9tYXRpYzsKKyAgICBPd25QdHI8VmVjdG9yPFJlZlB0cjxE
T01UcmFuc2FjdGlvblN0ZXA+ID4gPiBtX3RyYW5zYWN0aW9uU3RlcHM7CisgICAgCisgICAgc3Rh
dGljIERPTVRyYW5zYWN0aW9uKiBzX3JlY29yZGluZ0RPTVRyYW5zYWN0aW9uOwogfTsKIAogfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVE
ZWNsYXJhdGlvbi5jcHAJKHJldmlzaW9uIDEyNTk2MykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9Q
cm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2
ICsyNCw3IEBACiAKICNpbmNsdWRlICJDU1NQYXJzZXIuaCIKICNpbmNsdWRlICJDU1NTdHlsZVNo
ZWV0LmgiCisjaW5jbHVkZSAiRE9NVHJhbnNhY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MTmFtZXMu
aCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJNZW1v
cnlJbnN0cnVtZW50YXRpb24uaCIKQEAgLTU3LDExICs1OCwxOCBAQCBwdWJsaWM6CiAgICAgICAg
IGlmICghc19jdXJyZW50RGVjbC0+cGFyZW50RWxlbWVudCgpKQogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICBtX211dGF0aW9uUmVjaXBpZW50cyA9IE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVz
dEdyb3VwOjpjcmVhdGVGb3JBdHRyaWJ1dGVzTXV0YXRpb24oc19jdXJyZW50RGVjbC0+cGFyZW50
RWxlbWVudCgpLCBIVE1MTmFtZXM6OnN0eWxlQXR0cik7Ci0gICAgICAgIGlmICghbV9tdXRhdGlv
blJlY2lwaWVudHMpCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmIChtX211dGF0aW9u
UmVjaXBpZW50cykgeworICAgICAgICAgICAgQXRvbWljU3RyaW5nIG9sZFZhbHVlID0gbV9tdXRh
dGlvblJlY2lwaWVudHMtPmlzT2xkVmFsdWVSZXF1ZXN0ZWQoKSA/IHNfY3VycmVudERlY2wtPnBh
cmVudEVsZW1lbnQoKS0+Z2V0QXR0cmlidXRlKEhUTUxOYW1lczo6c3R5bGVBdHRyKSA6IG51bGxB
dG9tOworICAgICAgICAgICAgbV9tdXRhdGlvbiA9IE11dGF0aW9uUmVjb3JkOjpjcmVhdGVBdHRy
aWJ1dGVzKHNfY3VycmVudERlY2wtPnBhcmVudEVsZW1lbnQoKSwgSFRNTE5hbWVzOjpzdHlsZUF0
dHIsIG9sZFZhbHVlKTsKKyAgICAgICAgfQorI2VuZGlmCiAKLSAgICAgICAgQXRvbWljU3RyaW5n
IG9sZFZhbHVlID0gbV9tdXRhdGlvblJlY2lwaWVudHMtPmlzT2xkVmFsdWVSZXF1ZXN0ZWQoKSA/
IHNfY3VycmVudERlY2wtPnBhcmVudEVsZW1lbnQoKS0+Z2V0QXR0cmlidXRlKEhUTUxOYW1lczo6
c3R5bGVBdHRyKSA6IG51bGxBdG9tOwotICAgICAgICBtX211dGF0aW9uID0gTXV0YXRpb25SZWNv
cmQ6OmNyZWF0ZUF0dHJpYnV0ZXMoc19jdXJyZW50RGVjbC0+cGFyZW50RWxlbWVudCgpLCBIVE1M
TmFtZXM6OnN0eWxlQXR0ciwgb2xkVmFsdWUpOworI2lmIEVOQUJMRShVTkRPX01BTkFHRVIpCisg
ICAgICAgIGlmICghc19jdXJyZW50RGVjbC0+cGFyZW50RWxlbWVudCgpKQorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICBtX2lzUmVjb3JkaW5nQXV0b21hdGljVHJhbnNhY3Rpb24gPSBET01U
cmFuc2FjdGlvbjo6aXNSZWNvcmRpbmdBdXRvbWF0aWNUcmFuc2FjdGlvbihzX2N1cnJlbnREZWNs
LT5wYXJlbnRFbGVtZW50KCkpOworICAgICAgICBpZiAobV9pc1JlY29yZGluZ0F1dG9tYXRpY1Ry
YW5zYWN0aW9uKQorICAgICAgICAgICAgbV9vbGRWYWx1ZSA9IHNfY3VycmVudERlY2wtPnBhcmVu
dEVsZW1lbnQoKS0+Z2V0QXR0cmlidXRlKEhUTUxOYW1lczo6c3R5bGVBdHRyKTsKICNlbmRpZgog
ICAgIH0KIApAQCAtNzYsNiArODQsMTUgQEAgcHVibGljOgogICAgICAgICAgICAgbV9tdXRhdGlv
blJlY2lwaWVudHMtPmVucXVldWVNdXRhdGlvblJlY29yZChtX211dGF0aW9uKTsKICAgICAgICAg
c19zaG91bGREZWxpdmVyID0gZmFsc2U7CiAjZW5kaWYKKworI2lmIEVOQUJMRShVTkRPX01BTkFH
RVIpCisgICAgICAgIGlmIChtX2lzUmVjb3JkaW5nQXV0b21hdGljVHJhbnNhY3Rpb24gJiYgc19z
aG91bGRSZWNvcmRUcmFuc2FjdGlvblN0ZXApIHsKKyAgICAgICAgICAgIERPTVRyYW5zYWN0aW9u
OjphZGRUcmFuc2FjdGlvblN0ZXAoQXR0ckNoYW5naW5nRE9NVHJhbnNhY3Rpb25TdGVwOjpjcmVh
dGUoCisgICAgICAgICAgICAgICAgc19jdXJyZW50RGVjbC0+cGFyZW50RWxlbWVudCgpLCBIVE1M
TmFtZXM6OnN0eWxlQXR0ciwgbV9vbGRWYWx1ZSwgc19jdXJyZW50RGVjbC0+cGFyZW50RWxlbWVu
dCgpLT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpzdHlsZUF0dHIpKSk7CisgICAgICAgIH0KKyAg
ICAgICAgc19zaG91bGRSZWNvcmRUcmFuc2FjdGlvblN0ZXAgPSBmYWxzZTsKKyNlbmRpZgorCiAg
ICAgICAgIGlmICghc19zaG91bGROb3RpZnlJbnNwZWN0b3IpIHsKICAgICAgICAgICAgIHNfY3Vy
cmVudERlY2wgPSAwOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtODgsMTAgKzEwNSwxNSBAQCBw
dWJsaWM6CiAgICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEludmFsaWRh
dGVTdHlsZUF0dHIobG9jYWxDb3B5U3R5bGVEZWNsLT5wYXJlbnRFbGVtZW50KCktPmRvY3VtZW50
KCksIGxvY2FsQ29weVN0eWxlRGVjbC0+cGFyZW50RWxlbWVudCgpKTsKICAgICB9CiAKLSNpZiBF
TkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKQorI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMp
IHx8IEVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgdm9pZCBlbnF1ZXVlTXV0YXRpb25SZWNvcmQo
KQogICAgIHsKKyNpZiBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKQogICAgICAgICBzX3Nob3Vs
ZERlbGl2ZXIgPSB0cnVlOworI2VuZGlmCisjaWYgRU5BQkxFKFVORE9fTUFOQUdFUikKKyAgICAg
ICAgc19zaG91bGRSZWNvcmRUcmFuc2FjdGlvblN0ZXAgPSB0cnVlOworI2VuZGlmCiAgICAgfQog
I2VuZGlmCiAKQEAgLTExMCw2ICsxMzIsMTIgQEAgcHJpdmF0ZToKICAgICBPd25QdHI8TXV0YXRp
b25PYnNlcnZlckludGVyZXN0R3JvdXA+IG1fbXV0YXRpb25SZWNpcGllbnRzOwogICAgIFJlZlB0
cjxNdXRhdGlvblJlY29yZD4gbV9tdXRhdGlvbjsKICNlbmRpZgorI2lmIEVOQUJMRShVTkRPX01B
TkFHRVIpCisgICAgc3RhdGljIGJvb2wgc19zaG91bGRSZWNvcmRUcmFuc2FjdGlvblN0ZXA7Cisg
ICAgCisgICAgYm9vbCBtX2lzUmVjb3JkaW5nQXV0b21hdGljVHJhbnNhY3Rpb247CisgICAgQXRv
bWljU3RyaW5nIG1fb2xkVmFsdWU7CisjZW5kaWYKIH07CiAKIHVuc2lnbmVkIFN0eWxlQXR0cmli
dXRlTXV0YXRpb25TY29wZTo6c19zY29wZUNvdW50ID0gMDsKQEAgLTExOCw2ICsxNDYsOSBAQCBi
b29sIFN0eWxlQXR0cmlidXRlTXV0YXRpb25TY29wZTo6c19zaG91CiAjaWYgRU5BQkxFKE1VVEFU
SU9OX09CU0VSVkVSUykKIGJvb2wgU3R5bGVBdHRyaWJ1dGVNdXRhdGlvblNjb3BlOjpzX3Nob3Vs
ZERlbGl2ZXIgPSBmYWxzZTsKICNlbmRpZgorI2lmIEVOQUJMRShVTkRPX01BTkFHRVIpCitib29s
IFN0eWxlQXR0cmlidXRlTXV0YXRpb25TY29wZTo6c19zaG91bGRSZWNvcmRUcmFuc2FjdGlvblN0
ZXAgPSBmYWxzZTsKKyNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZQogCkBAIC0xNTgsNyArMTg5LDcg
QEAgU3RyaW5nIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6YwogICAgIAogdm9pZCBQ
cm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OnNldENzc1RleHQoY29uc3QgU3RyaW5nJiB0
ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSNpZiBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJT
KQorI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpIHx8IEVOQUJMRShVTkRPX01BTkFHRVIp
CiAgICAgU3R5bGVBdHRyaWJ1dGVNdXRhdGlvblNjb3BlIG11dGF0aW9uU2NvcGUodGhpcyk7CiAj
ZW5kaWYKICAgICB3aWxsTXV0YXRlKCk7CkBAIC0xNjksNyArMjAwLDcgQEAgdm9pZCBQcm9wZXJ0
eVNldENTU1N0eWxlRGVjbGFyYXRpb246OnNldAogCiAgICAgZGlkTXV0YXRlKFByb3BlcnR5Q2hh
bmdlZCk7CiAKLSNpZiBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKQorI2lmIEVOQUJMRShNVVRB
VElPTl9PQlNFUlZFUlMpIHx8IEVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgbXV0YXRpb25TY29w
ZS5lbnF1ZXVlTXV0YXRpb25SZWNvcmQoKTsgICAgCiAjZW5kaWYKIH0KQEAgLTIxOSw3ICsyNTAs
NyBAQCBib29sIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6aXNQCiAKIHZvaWQgUHJv
cGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpzZXRQcm9wZXJ0eShjb25zdCBTdHJpbmcmIHBy
b3BlcnR5TmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBwcmlvcml0eSwg
RXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0jaWYgRU5BQkxFKE1VVEFUSU9OX09CU0VSVkVSUykKKyNp
ZiBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKSB8fCBFTkFCTEUoVU5ET19NQU5BR0VSKQogICAg
IFN0eWxlQXR0cmlidXRlTXV0YXRpb25TY29wZSBtdXRhdGlvblNjb3BlKHRoaXMpOwogI2VuZGlm
CiAgICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEID0gY3NzUHJvcGVydHlJRChwcm9wZXJ0eU5h
bWUpOwpAQCAtMjM4LDcgKzI2OSw3IEBAIHZvaWQgUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0
aW9uOjpzZXQKICAgICBpZiAoY2hhbmdlZCkgewogICAgICAgICAvLyBDU1MgRE9NIHJlcXVpcmVz
IHJhaXNpbmcgU1lOVEFYX0VSUiBvZiBwYXJzaW5nIGZhaWxlZCwgYnV0IHRoaXMgaXMgdG9vIGRh
bmdlcm91cyBmb3IgY29tcGF0aWJpbGl0eSwKICAgICAgICAgLy8gc2VlIDxodHRwOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Mjk2Pi4KLSNpZiBFTkFCTEUoTVVUQVRJT05fT0JT
RVJWRVJTKQorI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpIHx8IEVOQUJMRShVTkRPX01B
TkFHRVIpCiAgICAgICAgIG11dGF0aW9uU2NvcGUuZW5xdWV1ZU11dGF0aW9uUmVjb3JkKCk7CiAj
ZW5kaWYKICAgICB9CkBAIC0yNDYsNyArMjc3LDcgQEAgdm9pZCBQcm9wZXJ0eVNldENTU1N0eWxl
RGVjbGFyYXRpb246OnNldAogCiBTdHJpbmcgUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9u
OjpyZW1vdmVQcm9wZXJ0eShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSwgRXhjZXB0aW9uQ29k
ZSYgZWMpCiB7Ci0jaWYgRU5BQkxFKE1VVEFUSU9OX09CU0VSVkVSUykKKyNpZiBFTkFCTEUoTVVU
QVRJT05fT0JTRVJWRVJTKSB8fCBFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIFN0eWxlQXR0cmli
dXRlTXV0YXRpb25TY29wZSBtdXRhdGlvblNjb3BlKHRoaXMpOwogI2VuZGlmCiAgICAgQ1NTUHJv
cGVydHlJRCBwcm9wZXJ0eUlEID0gY3NzUHJvcGVydHlJRChwcm9wZXJ0eU5hbWUpOwpAQCAtMjYy
LDcgKzI5Myw3IEBAIFN0cmluZyBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OnIKICAg
ICBkaWRNdXRhdGUoY2hhbmdlZCA/IFByb3BlcnR5Q2hhbmdlZCA6IE5vQ2hhbmdlcyk7CiAKICAg
ICBpZiAoY2hhbmdlZCkgewotI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpCisjaWYgRU5B
QkxFKE1VVEFUSU9OX09CU0VSVkVSUykgfHwgRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICAgICAg
bXV0YXRpb25TY29wZS5lbnF1ZXVlTXV0YXRpb25SZWNvcmQoKTsKICNlbmRpZgogICAgIH0KQEAg
LTI4MSw3ICszMTIsNyBAQCBTdHJpbmcgUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpn
CiAKIHZvaWQgUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpzZXRQcm9wZXJ0eUludGVy
bmFsKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCBp
bXBvcnRhbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeyAKLSNpZiBFTkFCTEUoTVVUQVRJT05fT0JT
RVJWRVJTKQorI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpIHx8IEVOQUJMRShVTkRPX01B
TkFHRVIpCiAgICAgU3R5bGVBdHRyaWJ1dGVNdXRhdGlvblNjb3BlIG11dGF0aW9uU2NvcGUodGhp
cyk7CiAjZW5kaWYKICAgICB3aWxsTXV0YXRlKCk7CkBAIC0yOTIsNyArMzIzLDcgQEAgdm9pZCBQ
cm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OnNldAogICAgIGRpZE11dGF0ZShjaGFuZ2Vk
ID8gUHJvcGVydHlDaGFuZ2VkIDogTm9DaGFuZ2VzKTsKIAogICAgIGlmIChjaGFuZ2VkKSB7Ci0j
aWYgRU5BQkxFKE1VVEFUSU9OX09CU0VSVkVSUykKKyNpZiBFTkFCTEUoTVVUQVRJT05fT0JTRVJW
RVJTKSB8fCBFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgICAgICBtdXRhdGlvblNjb3BlLmVucXVl
dWVNdXRhdGlvblJlY29yZCgpOwogI2VuZGlmCiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUv
ZG9tL0NoYXJhY3RlckRhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9D
aGFyYWN0ZXJEYXRhLmNwcAkocmV2aXNpb24gMTI1OTYzKQorKysgU291cmNlL1dlYkNvcmUvZG9t
L0NoYXJhY3RlckRhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ2hhcmFjdGVyRGF0YS5oIgogCisjaW5jbHVkZSAi
RE9NVHJhbnNhY3Rpb24uaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkV2ZW50
TmFtZXMuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCkBAIC0xODMsNiArMTg0LDEzIEBA
IHZvaWQgQ2hhcmFjdGVyRGF0YTo6c2V0Tm9kZVZhbHVlKGNvbnN0IFMKIAogdm9pZCBDaGFyYWN0
ZXJEYXRhOjpzZXREYXRhQW5kVXBkYXRlKGNvbnN0IFN0cmluZyYgbmV3RGF0YSwgdW5zaWduZWQg
b2Zmc2V0T2ZSZXBsYWNlZERhdGEsIHVuc2lnbmVkIG9sZExlbmd0aCwgdW5zaWduZWQgbmV3TGVu
Z3RoKQogeworI2lmIEVOQUJMRShVTkRPX01BTkFHRVIpCisgICAgaWYgKERPTVRyYW5zYWN0aW9u
Ojppc1JlY29yZGluZ0F1dG9tYXRpY1RyYW5zYWN0aW9uKHRoaXMpKSB7CisgICAgICAgIGNvbnN0
IFN0cmluZyYgcmVwbGFjaW5nRGF0YSA9IG5ld0RhdGEuc3Vic3RyaW5nKG9mZnNldE9mUmVwbGFj
ZWREYXRhLCBuZXdMZW5ndGgpOworICAgICAgICBjb25zdCBTdHJpbmcmIHJlcGxhY2VkRGF0YSA9
IG1fZGF0YS5zdWJzdHJpbmcob2Zmc2V0T2ZSZXBsYWNlZERhdGEsIG9sZExlbmd0aCk7CisgICAg
ICAgIERPTVRyYW5zYWN0aW9uOjphZGRUcmFuc2FjdGlvblN0ZXAoRGF0YVJlcGxhY2luZ0RPTVRy
YW5zYWN0aW9uU3RlcDo6Y3JlYXRlKHRoaXMsIG9mZnNldE9mUmVwbGFjZWREYXRhLCBvbGRMZW5n
dGgsIHJlcGxhY2luZ0RhdGEsIHJlcGxhY2VkRGF0YSkpOworICAgIH0KKyNlbmRpZgogICAgIFN0
cmluZyBvbGREYXRhID0gbV9kYXRhOwogICAgIG1fZGF0YSA9IG5ld0RhdGE7CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAJKHJldmlzaW9uIDEyNTk2MykKKysrIFNvdXJj
ZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiAr
MjUsNyBAQAogCiAjaW5jbHVkZSAiQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5oIgogI2luY2x1ZGUg
IkNvbnRhaW5lck5vZGVBbGdvcml0aG1zLmgiCisjaW5jbHVkZSAiRE9NVHJhbnNhY3Rpb24uaCIK
ICNpbmNsdWRlICJEZWxldGVCdXR0b25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1l
cy5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKQEAgLTMyNyw2ICszMjgsMTAgQEAgc3Rh
dGljIHZvaWQgd2lsbFJlbW92ZUNoaWxkKE5vZGUqIGNoaWxkKQogICAgIENoaWxkTGlzdE11dGF0
aW9uU2NvcGUoY2hpbGQtPnBhcmVudE5vZGUoKSkud2lsbFJlbW92ZUNoaWxkKGNoaWxkKTsKICAg
ICBjaGlsZC0+bm90aWZ5TXV0YXRpb25PYnNlcnZlcnNOb2RlV2lsbERldGFjaCgpOwogI2VuZGlm
CisjaWYgRU5BQkxFKFVORE9fTUFOQUdFUikKKyAgICBpZiAoRE9NVHJhbnNhY3Rpb246OmlzUmVj
b3JkaW5nQXV0b21hdGljVHJhbnNhY3Rpb24oY2hpbGQtPnBhcmVudE5vZGUoKSkpCisgICAgICAg
IERPTVRyYW5zYWN0aW9uOjphZGRUcmFuc2FjdGlvblN0ZXAoTm9kZVJlbW92aW5nRE9NVHJhbnNh
Y3Rpb25TdGVwOjpjcmVhdGUoY2hpbGQtPnBhcmVudE5vZGUoKSwgY2hpbGQpKTsKKyNlbmRpZgog
CiAgICAgZGlzcGF0Y2hDaGlsZFJlbW92YWxFdmVudHMoY2hpbGQpOwogICAgIGNoaWxkLT5kb2N1
bWVudCgpLT5ub2RlV2lsbEJlUmVtb3ZlZChjaGlsZCk7IC8vIGUuZy4gbXV0YXRpb24gZXZlbnQg
bGlzdGVuZXIgY2FuIGNyZWF0ZSBhIG5ldyByYW5nZS4KQEAgLTM0Myw2ICszNDgsOSBAQCBzdGF0
aWMgdm9pZCB3aWxsUmVtb3ZlQ2hpbGRyZW4oQ29udGFpbmVyCiAjaWYgRU5BQkxFKE1VVEFUSU9O
X09CU0VSVkVSUykKICAgICBDaGlsZExpc3RNdXRhdGlvblNjb3BlIG11dGF0aW9uKGNvbnRhaW5l
cik7CiAjZW5kaWYKKyNpZiBFTkFCTEUoVU5ET19NQU5BR0VSKQorICAgIGJvb2wgaXNSZWNvcmRp
bmdBdXRvbWF0aWNUcmFuc2FjdGlvbiA9IERPTVRyYW5zYWN0aW9uOjppc1JlY29yZGluZ0F1dG9t
YXRpY1RyYW5zYWN0aW9uKGNvbnRhaW5lcik7CisjZW5kaWYKIAogICAgIGZvciAoTm9kZVZlY3Rv
cjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBjaGlsZHJlbi5iZWdpbigpOyBpdCAhPSBjaGlsZHJlbi5l
bmQoKTsgaXQrKykgewogICAgICAgICBOb2RlKiBjaGlsZCA9IGl0LT5nZXQoKTsKQEAgLTM1MSw2
ICszNTksMTAgQEAgc3RhdGljIHZvaWQgd2lsbFJlbW92ZUNoaWxkcmVuKENvbnRhaW5lcgogICAg
ICAgICBtdXRhdGlvbi53aWxsUmVtb3ZlQ2hpbGQoY2hpbGQpOwogICAgICAgICBjaGlsZC0+bm90
aWZ5TXV0YXRpb25PYnNlcnZlcnNOb2RlV2lsbERldGFjaCgpOwogI2VuZGlmCisjaWYgRU5BQkxF
KFVORE9fTUFOQUdFUikKKyAgICAgICAgaWYgKGlzUmVjb3JkaW5nQXV0b21hdGljVHJhbnNhY3Rp
b24pCisgICAgICAgICAgICBET01UcmFuc2FjdGlvbjo6YWRkVHJhbnNhY3Rpb25TdGVwKE5vZGVS
ZW1vdmluZ0RPTVRyYW5zYWN0aW9uU3RlcDo6Y3JlYXRlKGNvbnRhaW5lciwgY2hpbGQpKTsKKyNl
bmRpZgogCiAgICAgICAgIC8vIGZpcmUgcmVtb3ZlZCBmcm9tIGRvY3VtZW50IG11dGF0aW9uIGV2
ZW50cy4KICAgICAgICAgZGlzcGF0Y2hDaGlsZFJlbW92YWxFdmVudHMoY2hpbGQpOwpAQCAtOTc5
LDYgKzk5MSwxMSBAQCBzdGF0aWMgdm9pZCB1cGRhdGVUcmVlQWZ0ZXJJbnNlcnRpb24oQ29uCiAg
ICAgQ2hpbGRMaXN0TXV0YXRpb25TY29wZShwYXJlbnQpLmNoaWxkQWRkZWQoY2hpbGQpOwogI2Vu
ZGlmCiAKKyNpZiBFTkFCTEUoVU5ET19NQU5BR0VSKQorICAgIGlmIChET01UcmFuc2FjdGlvbjo6
aXNSZWNvcmRpbmdBdXRvbWF0aWNUcmFuc2FjdGlvbihwYXJlbnQpKQorICAgICAgICBET01UcmFu
c2FjdGlvbjo6YWRkVHJhbnNhY3Rpb25TdGVwKE5vZGVJbnNlcnRpbmdET01UcmFuc2FjdGlvblN0
ZXA6OmNyZWF0ZShwYXJlbnQsIGNoaWxkKSk7CisjZW5kaWYKKwogICAgIHBhcmVudC0+Y2hpbGRy
ZW5DaGFuZ2VkKGZhbHNlLCBjaGlsZC0+cHJldmlvdXNTaWJsaW5nKCksIGNoaWxkLT5uZXh0U2li
bGluZygpLCAxKTsKIAogICAgIENoaWxkTm9kZUluc2VydGlvbk5vdGlmaWVyKHBhcmVudCkubm90
aWZ5KGNoaWxkKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHJldmlzaW9uIDEyNTk2MykK
KysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQs
NiArMzQsNyBAQAogI2luY2x1ZGUgIkNsaWVudFJlY3QuaCIKICNpbmNsdWRlICJDbGllbnRSZWN0
TGlzdC5oIgogI2luY2x1ZGUgIkRPTVRva2VuTGlzdC5oIgorI2luY2x1ZGUgIkRPTVRyYW5zYWN0
aW9uLmgiCiAjaW5jbHVkZSAiRGF0YXNldERPTVN0cmluZ01hcC5oIgogI2luY2x1ZGUgIkRvY3Vt
ZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgpAQCAtMjA1NSw2ICsyMDU2LDEx
IEBAIHZvaWQgRWxlbWVudDo6d2lsbE1vZGlmeUF0dHJpYnV0ZShjb25zdCAKICAgICAgICAgcmVj
aXBpZW50cy0+ZW5xdWV1ZU11dGF0aW9uUmVjb3JkKE11dGF0aW9uUmVjb3JkOjpjcmVhdGVBdHRy
aWJ1dGVzKHRoaXMsIG5hbWUsIG9sZFZhbHVlKSk7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShVTkRP
X01BTkFHRVIpCisgICAgaWYgKERPTVRyYW5zYWN0aW9uOjppc1JlY29yZGluZ0F1dG9tYXRpY1Ry
YW5zYWN0aW9uKHRoaXMpKQorICAgICAgICBET01UcmFuc2FjdGlvbjo6YWRkVHJhbnNhY3Rpb25T
dGVwKEF0dHJDaGFuZ2luZ0RPTVRyYW5zYWN0aW9uU3RlcDo6Y3JlYXRlKHRoaXMsIG5hbWUsIG9s
ZFZhbHVlLCBuZXdWYWx1ZSkpOworI2VuZGlmCisKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbE1vZGlmeURPTUF0dHIoZG9jdW1lbnQoKSwg
dGhpcywgb2xkVmFsdWUsIG5ld1ZhbHVlKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9ET01UcmFuc2FjdGlvblN0ZXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRE9NVHJhbnNhY3Rpb25TdGVwLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRE9NVHJhbnNhY3Rpb25TdGVwLmNwcAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwxNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
R09PR0xFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEdPT0dMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFVO
RE9fTUFOQUdFUikKKworI2luY2x1ZGUgIkRPTVRyYW5zYWN0aW9uU3RlcC5oIgorCisjaW5jbHVk
ZSAiQ2hhcmFjdGVyRGF0YS5oIgorI2luY2x1ZGUgIkNvbnRhaW5lck5vZGUuaCIKKyNpbmNsdWRl
ICJFbGVtZW50LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIk5vZGUu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitOb2RlSW5zZXJ0aW5nRE9NVHJhbnNhY3Rpb25T
dGVwOjpOb2RlSW5zZXJ0aW5nRE9NVHJhbnNhY3Rpb25TdGVwKE5vZGUqIHBhcmVudCwgTm9kZSog
Y2hpbGQpCisgICAgOiBtX3BhcmVudChwYXJlbnQpCisgICAgLCBtX3JlZkNoaWxkKGNoaWxkLT5u
ZXh0U2libGluZygpKQorICAgICwgbV9jaGlsZChjaGlsZCkKK3sKK30KKworUGFzc1JlZlB0cjxO
b2RlSW5zZXJ0aW5nRE9NVHJhbnNhY3Rpb25TdGVwPiBOb2RlSW5zZXJ0aW5nRE9NVHJhbnNhY3Rp
b25TdGVwOjpjcmVhdGUoTm9kZSogcGFyZW50LCBOb2RlKiBjaGlsZCkKK3sKKyAgICByZXR1cm4g
YWRvcHRSZWYobmV3IE5vZGVJbnNlcnRpbmdET01UcmFuc2FjdGlvblN0ZXAocGFyZW50LCBjaGls
ZCkpOworfQorCit2b2lkIE5vZGVJbnNlcnRpbmdET01UcmFuc2FjdGlvblN0ZXA6OnVuYXBwbHko
KQoreworICAgIGlmIChtX2NoaWxkLmdldCgpICYmIG1fY2hpbGQtPnBhcmVudE5vZGUoKSAhPSBt
X3BhcmVudC5nZXQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChtX3JlZkNoaWxkLmdldCgp
ICYmIG1fcmVmQ2hpbGQtPnBhcmVudE5vZGUoKSAhPSBtX3BhcmVudC5nZXQoKSkKKyAgICAgICAg
cmV0dXJuOworICAgIGlmIChtX3JlZkNoaWxkLmdldCgpICYmIG1fcmVmQ2hpbGQtPnByZXZpb3Vz
U2libGluZygpICE9IG1fY2hpbGQuZ2V0KCkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBF
eGNlcHRpb25Db2RlIGVjOworICAgIG1fcGFyZW50LT5yZW1vdmVDaGlsZChtX2NoaWxkLmdldCgp
LCBlYyk7Cit9CisKK3ZvaWQgTm9kZUluc2VydGluZ0RPTVRyYW5zYWN0aW9uU3RlcDo6cmVhcHBs
eSgpCit7CisgICAgaWYgKG1fY2hpbGQuZ2V0KCkgJiYgbV9jaGlsZC0+cGFyZW50Tm9kZSgpKQor
ICAgICAgICByZXR1cm47CisgICAgaWYgKG1fcmVmQ2hpbGQuZ2V0KCkgJiYgbV9yZWZDaGlsZC0+
cGFyZW50Tm9kZSgpICE9IG1fcGFyZW50LmdldCgpKQorICAgICAgICByZXR1cm47CisgICAgCisg
ICAgRXhjZXB0aW9uQ29kZSBlYzsKKyAgICBtX3BhcmVudC0+aW5zZXJ0QmVmb3JlKG1fY2hpbGQs
IG1fcmVmQ2hpbGQuZ2V0KCksIGVjKTsKK30KKworTm9kZVJlbW92aW5nRE9NVHJhbnNhY3Rpb25T
dGVwOjpOb2RlUmVtb3ZpbmdET01UcmFuc2FjdGlvblN0ZXAoTm9kZSogcGFyZW50LCBOb2RlKiBj
aGlsZCkKKyAgICA6IG1fcGFyZW50KHBhcmVudCkKKyAgICAsIG1fcmVmQ2hpbGQoY2hpbGQtPm5l
eHRTaWJsaW5nKCkpCisgICAgLCBtX2NoaWxkKGNoaWxkKQoreworfQorCitQYXNzUmVmUHRyPE5v
ZGVSZW1vdmluZ0RPTVRyYW5zYWN0aW9uU3RlcD4gTm9kZVJlbW92aW5nRE9NVHJhbnNhY3Rpb25T
dGVwOjpjcmVhdGUoTm9kZSogcGFyZW50LCBOb2RlKiBjaGlsZCkKK3sKKyAgICByZXR1cm4gYWRv
cHRSZWYobmV3IE5vZGVSZW1vdmluZ0RPTVRyYW5zYWN0aW9uU3RlcChwYXJlbnQsIGNoaWxkKSk7
Cit9CisKK3ZvaWQgTm9kZVJlbW92aW5nRE9NVHJhbnNhY3Rpb25TdGVwOjp1bmFwcGx5KCkKK3sK
KyAgICBpZiAobV9jaGlsZC5nZXQoKSAmJiBtX2NoaWxkLT5wYXJlbnROb2RlKCkpCisgICAgICAg
IHJldHVybjsKKyAgICBpZiAobV9yZWZDaGlsZC5nZXQoKSAmJiBtX3JlZkNoaWxkLT5wYXJlbnRO
b2RlKCkgIT0gbV9wYXJlbnQuZ2V0KCkpCisgICAgICAgIHJldHVybjsKKworICAgIEV4Y2VwdGlv
bkNvZGUgZWM7CisgICAgbV9wYXJlbnQtPmluc2VydEJlZm9yZShtX2NoaWxkLCBtX3JlZkNoaWxk
LmdldCgpLCBlYyk7Cit9CisKK3ZvaWQgTm9kZVJlbW92aW5nRE9NVHJhbnNhY3Rpb25TdGVwOjpy
ZWFwcGx5KCkKK3sKKyAgICBpZiAobV9jaGlsZC5nZXQoKSAmJiBtX2NoaWxkLT5wYXJlbnROb2Rl
KCkgIT0gbV9wYXJlbnQuZ2V0KCkpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAobV9yZWZDaGls
ZC5nZXQoKSAmJiBtX3JlZkNoaWxkLT5wYXJlbnROb2RlKCkgIT0gbV9wYXJlbnQuZ2V0KCkpCisg
ICAgICAgIHJldHVybjsKKyAgICBpZiAobV9yZWZDaGlsZC5nZXQoKSAmJiBtX3JlZkNoaWxkLT5w
cmV2aW91c1NpYmxpbmcoKSAhPSBtX2NoaWxkLmdldCgpKQorICAgICAgICByZXR1cm47CisgICAg
CisgICAgRXhjZXB0aW9uQ29kZSBlYzsKKyAgICBtX3BhcmVudC0+cmVtb3ZlQ2hpbGQobV9jaGls
ZC5nZXQoKSwgZWMpOworfQorCitEYXRhUmVwbGFjaW5nRE9NVHJhbnNhY3Rpb25TdGVwOjpEYXRh
UmVwbGFjaW5nRE9NVHJhbnNhY3Rpb25TdGVwKENoYXJhY3RlckRhdGEqIG5vZGUsIHVuc2lnbmVk
IG9mZnNldCwgdW5zaWduZWQgY291bnQsIGNvbnN0IFN0cmluZyYgZGF0YSwgY29uc3QgU3RyaW5n
JiByZXBsYWNlZERhdGEpCisgICAgOiBtX25vZGUobm9kZSkKKyAgICAsIG1fb2Zmc2V0KG9mZnNl
dCkKKyAgICAsIG1fY291bnQoY291bnQpCisgICAgLCBtX2RhdGEoZGF0YSkKKyAgICAsIG1fcmVw
bGFjZWREYXRhKHJlcGxhY2VkRGF0YSkKK3sKK30KKworUGFzc1JlZlB0cjxEYXRhUmVwbGFjaW5n
RE9NVHJhbnNhY3Rpb25TdGVwPiBEYXRhUmVwbGFjaW5nRE9NVHJhbnNhY3Rpb25TdGVwOjpjcmVh
dGUoQ2hhcmFjdGVyRGF0YSogbm9kZSwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBjb3VudCwg
Y29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkRGF0YSkKK3sKKyAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IERhdGFSZXBsYWNpbmdET01UcmFuc2FjdGlvblN0ZXAobm9kZSwg
b2Zmc2V0LCBjb3VudCwgZGF0YSwgcmVwbGFjZWREYXRhKSk7Cit9CisKK3ZvaWQgRGF0YVJlcGxh
Y2luZ0RPTVRyYW5zYWN0aW9uU3RlcDo6dW5hcHBseSgpCit7CisgICAgaWYgKG1fbm9kZS0+bGVu
Z3RoKCkgPCBtX29mZnNldCkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIEV4Y2VwdGlvbkNv
ZGUgZWM7CisgICAgbV9ub2RlLT5yZXBsYWNlRGF0YShtX29mZnNldCwgbV9kYXRhLmxlbmd0aCgp
LCBtX3JlcGxhY2VkRGF0YSwgZWMpOworfQorCit2b2lkIERhdGFSZXBsYWNpbmdET01UcmFuc2Fj
dGlvblN0ZXA6OnJlYXBwbHkoKQoreworICAgIGlmIChtX25vZGUtPmxlbmd0aCgpIDwgbV9vZmZz
ZXQpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBFeGNlcHRpb25Db2RlIGVjOworICAgIG1f
bm9kZS0+cmVwbGFjZURhdGEobV9vZmZzZXQsIG1fY291bnQsIG1fZGF0YSwgZWMpOworfQorCitB
dHRyQ2hhbmdpbmdET01UcmFuc2FjdGlvblN0ZXA6OkF0dHJDaGFuZ2luZ0RPTVRyYW5zYWN0aW9u
U3RlcChFbGVtZW50KiBlbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBB
dG9taWNTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVlKQorICAg
IDogbV9lbGVtZW50KGVsZW1lbnQpCisgICAgLCBtX25hbWUobmFtZSkKKyAgICAsIG1fb2xkVmFs
dWUob2xkVmFsdWUpCisgICAgLCBtX25ld1ZhbHVlKG5ld1ZhbHVlKQoreworfQorCitQYXNzUmVm
UHRyPEF0dHJDaGFuZ2luZ0RPTVRyYW5zYWN0aW9uU3RlcD4gQXR0ckNoYW5naW5nRE9NVHJhbnNh
Y3Rpb25TdGVwOjpjcmVhdGUoRWxlbWVudCogZWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYg
bmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBu
ZXdWYWx1ZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEF0dHJDaGFuZ2luZ0RPTVRyYW5z
YWN0aW9uU3RlcChlbGVtZW50LCBuYW1lLCBvbGRWYWx1ZSwgbmV3VmFsdWUpKTsKK30KKwordm9p
ZCBBdHRyQ2hhbmdpbmdET01UcmFuc2FjdGlvblN0ZXA6OnVuYXBwbHkoKQoreworICAgIG1fZWxl
bWVudC0+c2V0QXR0cmlidXRlKG1fbmFtZSwgbV9vbGRWYWx1ZSk7Cit9CisKK3ZvaWQgQXR0ckNo
YW5naW5nRE9NVHJhbnNhY3Rpb25TdGVwOjpyZWFwcGx5KCkKK3sKKyAgICBtX2VsZW1lbnQtPnNl
dEF0dHJpYnV0ZShtX25hbWUsIG1fbmV3VmFsdWUpOworfQorCit9CisKKyNlbmRpZgpJbmRleDog
U291cmNlL1dlYkNvcmUvZWRpdGluZy9ET01UcmFuc2FjdGlvblN0ZXAuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RPTVRyYW5zYWN0aW9uU3RlcC5oCShyZXZpc2lvbiAw
KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9ET01UcmFuc2FjdGlvblN0ZXAuaAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwxMTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgR09PR0xFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEdPT0dMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBET01UcmFuc2FjdGlvblN0ZXBf
aAorI2RlZmluZSBET01UcmFuc2FjdGlvblN0ZXBfaAorCisjaWYgRU5BQkxFKFVORE9fTUFOQUdF
UikKKworI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSAiUXVhbGlmaWVkTmFt
ZS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ2hhcmFjdGVyRGF0YTsKK2Ns
YXNzIEVsZW1lbnQ7CitjbGFzcyBOb2RlOworCitjbGFzcyBET01UcmFuc2FjdGlvblN0ZXAgOiBw
dWJsaWMgUmVmQ291bnRlZDxET01UcmFuc2FjdGlvblN0ZXA+IHsKK3B1YmxpYzoKKyAgICB2aXJ0
dWFsIH5ET01UcmFuc2FjdGlvblN0ZXAoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCB1bmFwcGx5
KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWFwcGx5KCkgPSAwOworfTsKKworY2xhc3MgTm9k
ZUluc2VydGluZ0RPTVRyYW5zYWN0aW9uU3RlcCA6IHB1YmxpYyBET01UcmFuc2FjdGlvblN0ZXAg
eworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5vZGVJbnNlcnRpbmdET01UcmFuc2Fj
dGlvblN0ZXA+IGNyZWF0ZShOb2RlKiBwYXJlbnQsIE5vZGUqIGNoaWxkKTsKKyAgICB2aXJ0dWFs
IHZvaWQgdW5hcHBseSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZWFwcGx5KCkgT1ZF
UlJJREU7CisKK3ByaXZhdGU6CisgICAgTm9kZUluc2VydGluZ0RPTVRyYW5zYWN0aW9uU3RlcChO
b2RlKiBwYXJlbnQsIE5vZGUqIGNoaWxkKTsKKyAgICAKKyAgICBSZWZQdHI8Tm9kZT4gbV9wYXJl
bnQ7CisgICAgUmVmUHRyPE5vZGU+IG1fcmVmQ2hpbGQ7CisgICAgUmVmUHRyPE5vZGU+IG1fY2hp
bGQ7Cit9OworCitjbGFzcyBOb2RlUmVtb3ZpbmdET01UcmFuc2FjdGlvblN0ZXAgOiBwdWJsaWMg
RE9NVHJhbnNhY3Rpb25TdGVwIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxOb2Rl
UmVtb3ZpbmdET01UcmFuc2FjdGlvblN0ZXA+IGNyZWF0ZShOb2RlKiBwYXJlbnQsIE5vZGUqIGNo
aWxkKTsKKyAgICB2aXJ0dWFsIHZvaWQgdW5hcHBseSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCByZWFwcGx5KCkgT1ZFUlJJREU7CisgICAgCitwcml2YXRlOgorICAgIE5vZGVSZW1vdmlu
Z0RPTVRyYW5zYWN0aW9uU3RlcChOb2RlKiBwYXJlbnQsIE5vZGUqIGNoaWxkKTsKKyAgICAKKyAg
ICBSZWZQdHI8Tm9kZT4gbV9wYXJlbnQ7CisgICAgUmVmUHRyPE5vZGU+IG1fcmVmQ2hpbGQ7Cisg
ICAgUmVmUHRyPE5vZGU+IG1fY2hpbGQ7Cit9OworCitjbGFzcyBEYXRhUmVwbGFjaW5nRE9NVHJh
bnNhY3Rpb25TdGVwIDogcHVibGljIERPTVRyYW5zYWN0aW9uU3RlcCB7CitwdWJsaWM6CisgICAg
c3RhdGljIFBhc3NSZWZQdHI8RGF0YVJlcGxhY2luZ0RPTVRyYW5zYWN0aW9uU3RlcD4gY3JlYXRl
KENoYXJhY3RlckRhdGEqLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGNvdW50LCBjb25zdCBT
dHJpbmcmIGRhdGEsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWREYXRhKTsKKyAgICB2aXJ0dWFsIHZv
aWQgdW5hcHBseSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZWFwcGx5KCkgT1ZFUlJJ
REU7CisgICAgCitwcml2YXRlOgorICAgIERhdGFSZXBsYWNpbmdET01UcmFuc2FjdGlvblN0ZXAo
Q2hhcmFjdGVyRGF0YSosIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgY291bnQsIGNvbnN0IFN0
cmluZyYgZGF0YSwgY29uc3QgU3RyaW5nJiByZXBsYWNlZERhdGEpOworICAgIAorICAgIFJlZlB0
cjxDaGFyYWN0ZXJEYXRhPiBtX25vZGU7CisgICAgdW5zaWduZWQgbV9vZmZzZXQ7CisgICAgdW5z
aWduZWQgbV9jb3VudDsKKyAgICBTdHJpbmcgbV9kYXRhOworICAgIFN0cmluZyBtX3JlcGxhY2Vk
RGF0YTsKK307CisKK2NsYXNzIEF0dHJDaGFuZ2luZ0RPTVRyYW5zYWN0aW9uU3RlcCA6IHB1Ymxp
YyBET01UcmFuc2FjdGlvblN0ZXAgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEF0
dHJDaGFuZ2luZ0RPTVRyYW5zYWN0aW9uU3RlcD4gY3JlYXRlKEVsZW1lbnQqLCBjb25zdCBRdWFs
aWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbWljU3Ry
aW5nJiBuZXdWYWx1ZSk7CisgICAgdmlydHVhbCB2b2lkIHVuYXBwbHkoKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgcmVhcHBseSgpIE9WRVJSSURFOworICAgIAorcHJpdmF0ZToKKyAgICBB
dHRyQ2hhbmdpbmdET01UcmFuc2FjdGlvblN0ZXAoRWxlbWVudCosIGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBjb25zdCBBdG9taWNTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5l
d1ZhbHVlKTsKKyAgICAKKyAgICBSZWZQdHI8RWxlbWVudD4gbV9lbGVtZW50OworICAgIFF1YWxp
ZmllZE5hbWUgbV9uYW1lOworICAgIEF0b21pY1N0cmluZyBtX29sZFZhbHVlOworICAgIEF0b21p
Y1N0cmluZyBtX25ld1ZhbHVlOworfTsKKworfQorCisjZW5kaWYKKworI2VuZGlmCkluZGV4OiBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxMjU5NjMpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wOC0xNyAgU3Vrb2xzYWsgU2Frc2h1d29uZyAgPHN1
a29sc2FrQGdvb2dsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IFVuZG9NYW5hZ2VyJ3MgYXV0
b21hdGljIERPTSB0cmFuc2FjdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTkxODEyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBlZGl0aW5nL3VuZG9tYW5hZ2VyL2F1dG9tYXRpYy10cmFuc2FjdGlv
bi1hdHRyaWJ1dGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3VuZG9t
YW5hZ2VyL2F1dG9tYXRpYy10cmFuc2FjdGlvbi1hdHRyaWJ1dGUuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZWRpdGluZy91bmRvbWFuYWdlci9hdXRvbWF0aWMtdHJhbnNhY3Rpb24tZGF0YS1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvdW5kb21hbmFnZXIvYXV0b21hdGlj
LXRyYW5zYWN0aW9uLWRhdGEuaHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy91bmRvbWFu
YWdlci9hdXRvbWF0aWMtdHJhbnNhY3Rpb24tbm9kZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGVkaXRpbmcvdW5kb21hbmFnZXIvYXV0b21hdGljLXRyYW5zYWN0aW9uLW5vZGUuaHRt
bDogQWRkZWQuCisKIDIwMTItMDgtMTcgIEtlaXNoaSBIYXR0b3JpICA8a2Vpc2hpQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgQ2FsZW5kYXIgcGlja2VyIHNob3dzIHdyb25nIGRhdGUgd2hlbiBpbnB1
dCBlbGVtZW50IGhhcyB5ZWFyIGVhcmxpZXIgdGhhbiAxMDAKSW5kZXg6IExheW91dFRlc3RzL2Vk
aXRpbmcvdW5kb21hbmFnZXIvYXV0b21hdGljLXRyYW5zYWN0aW9uLWF0dHJpYnV0ZS1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvbWFuYWdlci9hdXRv
bWF0aWMtdHJhbnNhY3Rpb24tYXR0cmlidXRlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIvYXV0b21hdGljLXRyYW5zYWN0aW9uLWF0
dHJpYnV0ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTUgQEAKK1RoaXMg
dGVzdHMgdGhhdCBVbmRvTWFuYWdlciBjb3JyZWN0bHkgcmV2ZXJ0cy9yZWFwcGxpZXMgYXV0b21h
dGljIERPTSB0cmFuc2FjdGlvbnMgb24gYXR0cmlidXRlIGNoYW5nZXMuIFdlIHN0YXJ0IHdpdGgg
YSBzcGFuIHRoYXQgaGFzIGJsdWUgYm9yZGVyIGFuZCBkb2Vzbid0IGhhdmUgdGl0bGUgb3IgY29u
dGVudGVkaXRhYmxlIGF0dHJpYnV0ZXMuIAorCitQQVNTIHRyYW5zYWN0IDE6IHNldCB0aXRsZSB0
byAidGVzdCIgCitQQVNTIHRyYW5zYWN0IDI6IHNldCBjb250ZW50ZWRpdGFibGUgdG8gInRydWUi
IAorUEFTUyB0cmFuc2FjdCAzOiBzZXQgYm9yZGVyIGNvbG9yIHRvIHJlZCAKK1BBU1MgdHJhbnNh
Y3QgNDogcmVtb3ZlIGF0dHJpYnV0ZSB0aXRsZSAKK1BBU1MgdW5kbyA0OiB0aXRsZSBpcyBiYWNr
IHRvICJ0ZXN0IiAKK1BBU1MgdW5kbyAzOiBib3JkZXIgY29sb3IgaXMgYmFjayB0byBibHVlIAor
UEFTUyB1bmRvIDI6IGNvbnRlbnRlZGl0YWJsZSBpcyBiYWNrIHRvICJpbmhlcml0IiAKK1BBU1Mg
dW5kbyAxOiB0aXRsZSBpcyBiYWNrIHRvIGFuIGVtcHR5IHN0cmluZyAKK1BBU1MgcmVkbyAxOiB0
aXRsZSBpcyAidGVzdCIgYWdhaW4gCitQQVNTIHJlZG8gMjogY29udGVudEVkaXRhYmxlIGlzICJ0
cnVlIiBhZ2FpbiAKK1BBU1MgcmVkbyAzOiBib3JkZXIgY29sb3IgaXMgcmVkIGFnYWluIAorUEFT
UyByZWRvIDQ6IHRpdGxlIGlzIGFuIGVtcHR5IHN0cmluZyBhZ2FpbiAKKwpJbmRleDogTGF5b3V0
VGVzdHMvZWRpdGluZy91bmRvbWFuYWdlci9hdXRvbWF0aWMtdHJhbnNhY3Rpb24tYXR0cmlidXRl
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvbWFuYWdlci9hdXRv
bWF0aWMtdHJhbnNhY3Rpb24tYXR0cmlidXRlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2VyL2F1dG9tYXRpYy10cmFuc2FjdGlvbi1hdHRyaWJ1dGUu
aHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4NyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPHRpdGxlPmF1dG9tYXRpYyB0cmFuc2FjdGlvbiBvbiBhdHRyaWJ1dGVzPC90
aXRsZT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KK1RoaXMgdGVzdHMgdGhhdCBVbmRvTWFuYWdlciBj
b3JyZWN0bHkgcmV2ZXJ0cy9yZWFwcGxpZXMgYXV0b21hdGljIERPTSB0cmFuc2FjdGlvbnMKK29u
IGF0dHJpYnV0ZSBjaGFuZ2VzLiBXZSBzdGFydCB3aXRoIGEgc3BhbiB0aGF0IGhhcyBibHVlIGJv
cmRlciBhbmQgZG9lc24ndCBoYXZlIHRpdGxlCitvciBjb250ZW50ZWRpdGFibGUgYXR0cmlidXRl
cy4KKworPHNwYW4gaWQ9InNwYW4iIHN0eWxlPSJib3JkZXI6IDFweCBibHVlIHNvbGlkIj48L3Nw
YW4+Cis8c2NyaXB0PgordmFyIHVuZG9NYW5hZ2VyID0gZG9jdW1lbnQudW5kb01hbmFnZXI7Cit2
YXIgc3BhbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzcGFuIik7CisKK3Rlc3QoZnVuY3Rp
b24oKSB7CisgICAgdW5kb01hbmFnZXIudHJhbnNhY3QoeworICAgICAgICAiZXhlY3V0ZUF1dG9t
YXRpYyI6IGZ1bmN0aW9uKCkgeyBzcGFuLnRpdGxlID0gInRlc3QiOyB9CisgICAgfSk7CisgICAg
YXNzZXJ0X2VxdWFscyhzcGFuLnRpdGxlLCAidGVzdCIpOworfSwgInRyYW5zYWN0IDE6IHNldCB0
aXRsZSB0byBcInRlc3RcIiIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIHVuZG9NYW5hZ2Vy
LnRyYW5zYWN0KHsKKyAgICAgICAgImV4ZWN1dGVBdXRvbWF0aWMiOiBmdW5jdGlvbigpIHsgc3Bh
bi5zZXRBdHRyaWJ1dGUoImNvbnRlbnRlZGl0YWJsZSIsICJ0cnVlIik7IH0KKyAgICB9KTsKKyAg
ICBhc3NlcnRfZXF1YWxzKHNwYW4uY29udGVudEVkaXRhYmxlLCAidHJ1ZSIpOworfSwgInRyYW5z
YWN0IDI6IHNldCBjb250ZW50ZWRpdGFibGUgdG8gXCJ0cnVlXCIiKTsKKwordGVzdChmdW5jdGlv
bigpIHsKKyAgICB1bmRvTWFuYWdlci50cmFuc2FjdCh7CisgICAgICAgICJleGVjdXRlQXV0b21h
dGljIjogZnVuY3Rpb24oKSB7IHNwYW4uc3R5bGUuY3NzVGV4dCA9ICJib3JkZXI6IDFweCByZWQg
c29saWQiOyB9CisgICAgfSk7CisgICAgYXNzZXJ0X2VxdWFscyhzcGFuLnN0eWxlLmJvcmRlckNv
bG9yLCAicmVkIik7Cit9LCAidHJhbnNhY3QgMzogc2V0IGJvcmRlciBjb2xvciB0byByZWQiKTsK
KwordGVzdChmdW5jdGlvbigpIHsKKyAgICB1bmRvTWFuYWdlci50cmFuc2FjdCh7CisgICAgICAg
ICJleGVjdXRlQXV0b21hdGljIjogZnVuY3Rpb24oKSB7IHNwYW4ucmVtb3ZlQXR0cmlidXRlKCJ0
aXRsZSIpOyB9CisgICAgfSk7CisgICAgYXNzZXJ0X2VxdWFscyhzcGFuLnRpdGxlLCAiIik7Cit9
LCAidHJhbnNhY3QgNDogcmVtb3ZlIGF0dHJpYnV0ZSB0aXRsZSIpOworCit0ZXN0KGZ1bmN0aW9u
KCkgeworICAgIHVuZG9NYW5hZ2VyLnVuZG8oKTsKKyAgICBhc3NlcnRfZXF1YWxzKHNwYW4udGl0
bGUsICJ0ZXN0Iik7Cit9LCAidW5kbyA0OiB0aXRsZSBpcyBiYWNrIHRvIFwidGVzdFwiIik7CisK
K3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgdW5kb01hbmFnZXIudW5kbygpOworICAgIGFzc2VydF9l
cXVhbHMoc3Bhbi5zdHlsZS5ib3JkZXJDb2xvciwgImJsdWUiKTsKK30sICJ1bmRvIDM6IGJvcmRl
ciBjb2xvciBpcyBiYWNrIHRvIGJsdWUiKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICB1bmRv
TWFuYWdlci51bmRvKCk7CisgICAgYXNzZXJ0X2VxdWFscyhzcGFuLmNvbnRlbnRFZGl0YWJsZSwg
ImluaGVyaXQiKTsKK30sICJ1bmRvIDI6IGNvbnRlbnRlZGl0YWJsZSBpcyBiYWNrIHRvIFwiaW5o
ZXJpdFwiIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgdW5kb01hbmFnZXIudW5kbygpOwor
ICAgIGFzc2VydF9lcXVhbHMoc3Bhbi50aXRsZSwgIiIpOworfSwgInVuZG8gMTogdGl0bGUgaXMg
YmFjayB0byBhbiBlbXB0eSBzdHJpbmciKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICB1bmRv
TWFuYWdlci5yZWRvKCk7CisgICAgYXNzZXJ0X2VxdWFscyhzcGFuLnRpdGxlLCAidGVzdCIpOwor
fSwgInJlZG8gMTogdGl0bGUgaXMgXCJ0ZXN0XCIgYWdhaW4iKTsKKwordGVzdChmdW5jdGlvbigp
IHsKKyAgICB1bmRvTWFuYWdlci5yZWRvKCk7CisgICAgYXNzZXJ0X2VxdWFscyhzcGFuLmNvbnRl
bnRFZGl0YWJsZSwgInRydWUiKTsKK30sICJyZWRvIDI6IGNvbnRlbnRFZGl0YWJsZSBpcyBcInRy
dWVcIiBhZ2FpbiIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIHVuZG9NYW5hZ2VyLnJlZG8o
KTsKKyAgICBhc3NlcnRfZXF1YWxzKHNwYW4uc3R5bGUuYm9yZGVyQ29sb3IsICJyZWQiKTsKK30s
ICJyZWRvIDM6IGJvcmRlciBjb2xvciBpcyByZWQgYWdhaW4iKTsKKwordGVzdChmdW5jdGlvbigp
IHsKKyAgICB1bmRvTWFuYWdlci5yZWRvKCk7CisgICAgYXNzZXJ0X2VxdWFscyhzcGFuLnRpdGxl
LCAiIik7Cit9LCAicmVkbyA0OiB0aXRsZSBpcyBhbiBlbXB0eSBzdHJpbmcgYWdhaW4iKTsKKzwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy91bmRv
bWFuYWdlci9hdXRvbWF0aWMtdHJhbnNhY3Rpb24tZGF0YS1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvbWFuYWdlci9hdXRvbWF0aWMtdHJhbnNhY3Rp
b24tZGF0YS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5n
L3VuZG9tYW5hZ2VyL2F1dG9tYXRpYy10cmFuc2FjdGlvbi1kYXRhLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw5IEBACitUaGlzIHRlc3RzIHRoYXQgVW5kb01hbmFnZXIgY29y
cmVjdGx5IHJldmVydHMvcmVhcHBsaWVzIGF1dG9tYXRpYyBET00gdHJhbnNhY3Rpb25zIG9uIG5v
ZGUgZGF0YS4KKworUEFTUyBTdGFydGVkIHdpdGggMTIzNDU2Nzg5LiBUcmFuc2FjdGVkIHJlcGxh
Y2VEYXRhKDMsIDMsICdhYmNkJykuIEdvdCAxMjNhYmNkNzg5IAorUEFTUyB1bmRvTWFuYWdlci51
bmRvKCkuIEdvdCAxMjM0NTY3ODkgCitQQVNTIHVuZG9NYW5hZ2VyLnJlZG8oKS4gR290IDEyM2Fi
Y2Q3ODkgCitQQVNTIFN0YXJ0ZWQgd2l0aCAxMjM0LiBUcmFuc2FjdGVkIHJlcGxhY2VEYXRhKDIs
IDEwLCAnYScpLiBHb3QgMTJhIAorUEFTUyB1bmRvTWFuYWdlci51bmRvKCkuIEdvdCAxMjM0IAor
UEFTUyB1bmRvTWFuYWdlci5yZWRvKCkuIEdvdCAxMmEgCisKSW5kZXg6IExheW91dFRlc3RzL2Vk
aXRpbmcvdW5kb21hbmFnZXIvYXV0b21hdGljLXRyYW5zYWN0aW9uLWRhdGEuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2VyL2F1dG9tYXRpYy10cmFuc2Fj
dGlvbi1kYXRhLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG9t
YW5hZ2VyL2F1dG9tYXRpYy10cmFuc2FjdGlvbi1kYXRhLmh0bWwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNTYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5hdXRv
bWF0aWMgdHJhbnNhY3Rpb24gb24gbm9kZSBkYXRhPC90aXRsZT4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KK1RoaXMgdGVzdHMgdGhhdCBVbmRvTWFuYWdlciBjb3JyZWN0bHkgcmV2ZXJ0cy9yZWFwcGxp
ZXMgYXV0b21hdGljIERPTSB0cmFuc2FjdGlvbnMKK29uIG5vZGUgZGF0YS4KKworPGRpdiBpZD0i
ZGl2Ij48L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgdW5kb01hbmFnZXIgPSBkb2N1bWVudC51bmRvTWFu
YWdlcjsKK3ZhciBkaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGl2Iik7CisKK3Rlc3Qo
ZnVuY3Rpb24oKSB7CisJZGl2LmlubmVyVGV4dCA9ICIxMjM0NTY3ODkiOworICAgIHVuZG9NYW5h
Z2VyLnRyYW5zYWN0KHsKKyAgICAgICAgImV4ZWN1dGVBdXRvbWF0aWMiOiBmdW5jdGlvbigpIHsg
ZGl2LmZpcnN0Q2hpbGQucmVwbGFjZURhdGEoMywgMywgImFiY2QiKTsgfQorICAgIH0pOworICAg
IGFzc2VydF9lcXVhbHMoZGl2LmlubmVyVGV4dCwgIjEyM2FiY2Q3ODkiKTsKK30sICJTdGFydGVk
IHdpdGggMTIzNDU2Nzg5LiBUcmFuc2FjdGVkIHJlcGxhY2VEYXRhKDMsIDMsICdhYmNkJykuIEdv
dCAxMjNhYmNkNzg5Iik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgdW5kb01hbmFnZXIudW5k
bygpOworICAgIGFzc2VydF9lcXVhbHMoZGl2LmlubmVyVGV4dCwgIjEyMzQ1Njc4OSIpOworfSwg
InVuZG9NYW5hZ2VyLnVuZG8oKS4gR290IDEyMzQ1Njc4OSIpOworCit0ZXN0KGZ1bmN0aW9uKCkg
eworICAgIHVuZG9NYW5hZ2VyLnJlZG8oKTsKKyAgICBhc3NlcnRfZXF1YWxzKGRpdi5pbm5lclRl
eHQsICIxMjNhYmNkNzg5Iik7Cit9LCAidW5kb01hbmFnZXIucmVkbygpLiBHb3QgMTIzYWJjZDc4
OSIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworCWRpdi5pbm5lclRleHQgPSAiMTIzNCI7CisgICAg
dW5kb01hbmFnZXIudHJhbnNhY3QoeworICAgICAgICAiZXhlY3V0ZUF1dG9tYXRpYyI6IGZ1bmN0
aW9uKCkgeyBkaXYuZmlyc3RDaGlsZC5yZXBsYWNlRGF0YSgyLCAxMCwgImEiKTsgfQorICAgIH0p
OworICAgIGFzc2VydF9lcXVhbHMoZGl2LmlubmVyVGV4dCwgIjEyYSIpOworfSwgIlN0YXJ0ZWQg
d2l0aCAxMjM0LiBUcmFuc2FjdGVkIHJlcGxhY2VEYXRhKDIsIDEwLCAnYScpLiBHb3QgMTJhIik7
CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgdW5kb01hbmFnZXIudW5kbygpOworICAgIGFzc2Vy
dF9lcXVhbHMoZGl2LmlubmVyVGV4dCwgIjEyMzQiKTsKK30sICJ1bmRvTWFuYWdlci51bmRvKCku
IEdvdCAxMjM0Iik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgdW5kb01hbmFnZXIucmVkbygp
OworICAgIGFzc2VydF9lcXVhbHMoZGl2LmlubmVyVGV4dCwgIjEyYSIpOworfSwgInVuZG9NYW5h
Z2VyLnJlZG8oKS4gR290IDEyYSIpOworCitkaXYuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKKzwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy91bmRv
bWFuYWdlci9hdXRvbWF0aWMtdHJhbnNhY3Rpb24tbm9kZS1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvbWFuYWdlci9hdXRvbWF0aWMtdHJhbnNhY3Rp
b24tbm9kZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5n
L3VuZG9tYW5hZ2VyL2F1dG9tYXRpYy10cmFuc2FjdGlvbi1ub2RlLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwxMiBAQAorVGhpcyB0ZXN0cyB0aGF0IFVuZG9NYW5hZ2VyIGNv
cnJlY3RseSByZXZlcnRzL3JlYXBwbGllcyBhdXRvbWF0aWMgRE9NIHRyYW5zYWN0aW9ucyBvbiBu
b2RlIHN0cnVjdHVyYWwgY2hhbmdlLgorCitQQVNTIFVuZG9NYW5hZ2VyIGNhbGxlZCB0aGUgZnVu
Y3Rpb24gcmV0dXJuZWQgYnkgZXhlY3V0ZUF1dG9tYXRpYy4gKGFwcGVuZENoaWxkKSAKK1BBU1Mg
VW5kb01hbmFnZXIgY2FsbGVkIHRoZSBmdW5jdGlvbiByZXR1cm5lZCBieSBleGVjdXRlQXV0b21h
dGljLiAoaW5zZXJ0QmVmb3JlKSAKK1BBU1MgVW5kb01hbmFnZXIgY2FsbGVkIHRoZSBmdW5jdGlv
biByZXR1cm5lZCBieSBleGVjdXRlQXV0b21hdGljLiAocmVtb3ZlQ2hpbGQpIAorUEFTUyBVbmRv
TWFuYWdlciByZXZlcnRlZCB0aGUgY2hhbmdlIG1hZGUgYnkgcmVtb3ZlQ2hpbGQuIAorUEFTUyBV
bmRvTWFuYWdlciByZXZlcnRlZCB0aGUgY2hhbmdlIG1hZGUgYnkgaW5zZXJ0QmVmb3JlLiAKK1BB
U1MgVW5kb01hbmFnZXIgcmV2ZXJ0ZWQgdGhlIGNoYW5nZSBtYWRlIGJ5IGFwcGVuZENoaWxkLiAK
K1BBU1MgVW5kb01hbmFnZXIgcmVhcHBsaWVkIHRoZSBjaGFuZ2UgbWFkZSBieSBhcHBlbmRDaGls
ZC4gCitQQVNTIFVuZG9NYW5hZ2VyIHJlYXBwbGllZCB0aGUgY2hhbmdlIG1hZGUgYnkgaW5zZXJ0
QmVmb3JlLiAKK1BBU1MgVW5kb01hbmFnZXIgcmVhcHBsaWVkIHRoZSBjaGFuZ2UgbWFkZSBieSBy
ZW1vdmVDaGlsZC4gCisKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIvYXV0
b21hdGljLXRyYW5zYWN0aW9uLW5vZGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9l
ZGl0aW5nL3VuZG9tYW5hZ2VyL2F1dG9tYXRpYy10cmFuc2FjdGlvbi1ub2RlLmh0bWwJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2VyL2F1dG9tYXRpYy10cmFu
c2FjdGlvbi1ub2RlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODEgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5hdXRvbWF0aWMgdHJhbnNhY3Rpb24gb24g
bm9kZXM8L3RpdGxlPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVw
b3J0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorVGhpcyB0ZXN0cyB0aGF0IFVuZG9N
YW5hZ2VyIGNvcnJlY3RseSByZXZlcnRzL3JlYXBwbGllcyBhdXRvbWF0aWMgRE9NIHRyYW5zYWN0
aW9ucworb24gbm9kZSBzdHJ1Y3R1cmFsIGNoYW5nZS4KKworPGRpdiBpZD0iZWRpdCI+PC9kaXY+
Cis8c2NyaXB0PgordmFyIGVkaXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZWRpdCIpOwor
dmFyIHVuZG9NYW5hZ2VyID0gZG9jdW1lbnQudW5kb01hbmFnZXI7CisKK3Rlc3QoZnVuY3Rpb24o
KSB7CisgICAgdW5kb01hbmFnZXIudHJhbnNhY3QoeworICAgICAgICAiZXhlY3V0ZUF1dG9tYXRp
YyI6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdmFyIGQgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJzcGFuIik7CisgICAgICAgICAgICBkLmlubmVyVGV4dCA9ICIxIjsKKyAgICAgICAgICAg
IGVkaXQuYXBwZW5kQ2hpbGQoZCk7CisgICAgICAgIH0KKyAgICB9KTsKKyAgICBhc3NlcnRfdHJ1
ZShlZGl0LmlubmVySFRNTCA9PSAiPHNwYW4+MTwvc3Bhbj4iKTsKK30sICJVbmRvTWFuYWdlciBj
YWxsZWQgdGhlIGZ1bmN0aW9uIHJldHVybmVkIGJ5IGV4ZWN1dGVBdXRvbWF0aWMuIChhcHBlbmRD
aGlsZCkiKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICB1bmRvTWFuYWdlci50cmFuc2FjdCh7
CisgICAgICAgICJleGVjdXRlQXV0b21hdGljIjogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB2
YXIgZDIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CisgICAgICAgICAgICBkMi5p
bm5lckhUTUwgPSAiPGI+MjwvYj4iOworICAgICAgICAgICAgZWRpdC5pbnNlcnRCZWZvcmUoZDIs
IGVkaXQuZmlyc3RDaGlsZCk7CisgICAgICAgIH0KKyAgICB9KTsKKyAgICBhc3NlcnRfdHJ1ZShl
ZGl0LmlubmVySFRNTCA9PSAiPHNwYW4+PGI+MjwvYj48L3NwYW4+PHNwYW4+MTwvc3Bhbj4iKTsK
K30sICJVbmRvTWFuYWdlciBjYWxsZWQgdGhlIGZ1bmN0aW9uIHJldHVybmVkIGJ5IGV4ZWN1dGVB
dXRvbWF0aWMuIChpbnNlcnRCZWZvcmUpIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgdW5k
b01hbmFnZXIudHJhbnNhY3QoeworICAgICAgICAiZXhlY3V0ZUF1dG9tYXRpYyI6IGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgZWRpdC5yZW1vdmVDaGlsZChlZGl0Lmxhc3RDaGlsZCk7CisgICAg
ICAgIH0KKyAgICB9KTsKKyAgICBhc3NlcnRfdHJ1ZShlZGl0LmlubmVySFRNTCA9PSAiPHNwYW4+
PGI+MjwvYj48L3NwYW4+Iik7Cit9LCAiVW5kb01hbmFnZXIgY2FsbGVkIHRoZSBmdW5jdGlvbiBy
ZXR1cm5lZCBieSBleGVjdXRlQXV0b21hdGljLiAocmVtb3ZlQ2hpbGQpIik7CisKK3Rlc3QoZnVu
Y3Rpb24oKSB7CisgICAgdW5kb01hbmFnZXIudW5kbygpOworICAgIGFzc2VydF90cnVlKGVkaXQu
aW5uZXJIVE1MID09ICI8c3Bhbj48Yj4yPC9iPjwvc3Bhbj48c3Bhbj4xPC9zcGFuPiIpOworfSwg
IlVuZG9NYW5hZ2VyIHJldmVydGVkIHRoZSBjaGFuZ2UgbWFkZSBieSByZW1vdmVDaGlsZC4iKTsK
KwordGVzdChmdW5jdGlvbigpIHsKKyAgICB1bmRvTWFuYWdlci51bmRvKCk7CisgICAgYXNzZXJ0
X3RydWUoZWRpdC5pbm5lckhUTUwgPT0gIjxzcGFuPjE8L3NwYW4+Iik7Cit9LCAiVW5kb01hbmFn
ZXIgcmV2ZXJ0ZWQgdGhlIGNoYW5nZSBtYWRlIGJ5IGluc2VydEJlZm9yZS4iKTsKKwordGVzdChm
dW5jdGlvbigpIHsKKyAgICB1bmRvTWFuYWdlci51bmRvKCk7CisgICAgYXNzZXJ0X3RydWUoZWRp
dC5pbm5lckhUTUwgPT0gIiIpOworfSwgIlVuZG9NYW5hZ2VyIHJldmVydGVkIHRoZSBjaGFuZ2Ug
bWFkZSBieSBhcHBlbmRDaGlsZC4iKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICB1bmRvTWFu
YWdlci5yZWRvKCk7CisgICAgYXNzZXJ0X3RydWUoZWRpdC5pbm5lckhUTUwgPT0gIjxzcGFuPjE8
L3NwYW4+Iik7Cit9LCAiVW5kb01hbmFnZXIgcmVhcHBsaWVkIHRoZSBjaGFuZ2UgbWFkZSBieSBh
cHBlbmRDaGlsZC4iKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICB1bmRvTWFuYWdlci5yZWRv
KCk7CisgICAgYXNzZXJ0X3RydWUoZWRpdC5pbm5lckhUTUwgPT0gIjxzcGFuPjxiPjI8L2I+PC9z
cGFuPjxzcGFuPjE8L3NwYW4+Iik7Cit9LCAiVW5kb01hbmFnZXIgcmVhcHBsaWVkIHRoZSBjaGFu
Z2UgbWFkZSBieSBpbnNlcnRCZWZvcmUuIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgdW5k
b01hbmFnZXIucmVkbygpOworICAgIGFzc2VydF90cnVlKGVkaXQuaW5uZXJIVE1MID09ICI8c3Bh
bj48Yj4yPC9iPjwvc3Bhbj4iKTsKK30sICJVbmRvTWFuYWdlciByZWFwcGxpZWQgdGhlIGNoYW5n
ZSBtYWRlIGJ5IHJlbW92ZUNoaWxkLiIpOworCitlZGl0LnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7
Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159588</attachid>
            <date>2012-08-20 19:02:15 -0700</date>
            <delta_ts>2012-08-21 00:00:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91812-20120820190419.patch</filename>
            <type>text/plain</type>
            <size>54336</size>
            <attacher name="Sukolsak Sakshuwong">sukolsak</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNjExNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk2IEBACisyMDEyLTA4LTIwICBTdWtvbHNh
ayBTYWtzaHV3b25nICA8c3Vrb2xzYWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQg
VW5kb01hbmFnZXIncyBhdXRvbWF0aWMgRE9NIHRyYW5zYWN0aW9ucworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE4MTIKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMgYXV0
b21hdGljIERPTSB0cmFuc2FjdGlvbnMgaW4gVW5kb01hbmFnZXIKKyAgICAgICAgYnkgcmVjb3Jk
aW5nIGNoYW5nZXMgaW4gRE9NIHRyZWUgc3RydWN0dXJlLCBhdHRyaWJ1dGVzLCBhbmQgbm9kZSBk
YXRhCisgICAgICAgIG9mIG5vZGVzIHVuZGVyIHVuZG8gc2NvcGUgaG9zdC4KKworICAgICAgICBU
ZXN0czogZWRpdGluZy91bmRvbWFuYWdlci9hdXRvbWF0aWMtdHJhbnNhY3Rpb24tYXR0cmlidXRl
Lmh0bWwKKyAgICAgICAgICAgICAgIGVkaXRpbmcvdW5kb21hbmFnZXIvYXV0b21hdGljLXRyYW5z
YWN0aW9uLWRhdGEuaHRtbAorICAgICAgICAgICAgICAgZWRpdGluZy91bmRvbWFuYWdlci9hdXRv
bWF0aWMtdHJhbnNhY3Rpb24tbm9kZS5odG1sCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoK
KyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToK
KyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvRE9N
VHJhbnNhY3Rpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVRyYW5zYWN0aW9uOjphZGRUcmFu
c2FjdGlvblN0ZXApOgorICAgICAgICAoRE9NVHJhbnNhY3Rpb24pOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L0RPTVRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVRyYW5zYWN0
aW9uOjphcHBseSk6CisgICAgICAgIChXZWJDb3JlOjpET01UcmFuc2FjdGlvbjo6dW5hcHBseSk6
CisgICAgICAgIChXZWJDb3JlOjpET01UcmFuc2FjdGlvbjo6cmVhcHBseSk6CisgICAgICAgICog
YmluZGluZ3MvdjgvRE9NVHJhbnNhY3Rpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVRyYW5z
YWN0aW9uOjphZGRUcmFuc2FjdGlvblN0ZXApOgorICAgICAgICAoRE9NVHJhbnNhY3Rpb24pOgor
ICAgICAgICAqIGNzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpzZXRDc3NUZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6c2V0UHJv
cGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6UHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9u
OjpyZW1vdmVQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eVNldENTU1N0eWxl
RGVjbGFyYXRpb246OnNldFByb3BlcnR5SW50ZXJuYWwpOgorICAgICAgICAqIGRvbS9DaGFyYWN0
ZXJEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNoYXJhY3RlckRhdGE6OnNldERhdGFBbmRV
cGRhdGUpOgorICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OndpbGxSZW1vdmVDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjp3aWxsUmVtb3ZlQ2hpbGRy
ZW4pOgorICAgICAgICAoV2ViQ29yZTo6dXBkYXRlVHJlZUFmdGVySW5zZXJ0aW9uKToKKyAgICAg
ICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OkRvY3Vt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp1bmRvTWFuYWdlcik6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpnZXRVbmRvTWFuYWdlcik6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0VW5kb01hbmFnZXIpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OnJlbW92ZVVuZG9NYW5hZ2VyKToKKyAgICAgICAgKiBkb20vRG9j
dW1lbnQuaDoKKyAgICAgICAgKERvY3VtZW50KToKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojp+RWxlbWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpFbGVtZW50Ojp3aWxsTW9kaWZ5QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1l
bnQ6OnVuZG9NYW5hZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmRpc2Nvbm5lY3RV
bmRvTWFuYWdlcik6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpkaXNjb25uZWN0VW5kb01h
bmFnZXJzSW5TdWJ0cmVlKToKKyAgICAgICAgKiBkb20vRWxlbWVudFJhcmVEYXRhLmg6CisgICAg
ICAgIChFbGVtZW50UmFyZURhdGEpOgorICAgICAgICAqIGVkaXRpbmcvRE9NVHJhbnNhY3Rpb25T
dGVwLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5v
ZGVJbnNlcnRpbmdET01UcmFuc2FjdGlvblN0ZXA6Ok5vZGVJbnNlcnRpbmdET01UcmFuc2FjdGlv
blN0ZXApOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZUluc2VydGluZ0RPTVRyYW5zYWN0aW9uU3Rl
cDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVJbnNlcnRpbmdET01UcmFuc2FjdGlv
blN0ZXA6OnVuYXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZUluc2VydGluZ0RPTVRyYW5z
YWN0aW9uU3RlcDo6cmVhcHBseSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVtb3ZpbmdET01U
cmFuc2FjdGlvblN0ZXA6Ok5vZGVSZW1vdmluZ0RPTVRyYW5zYWN0aW9uU3RlcCk6CisgICAgICAg
IChXZWJDb3JlOjpOb2RlUmVtb3ZpbmdET01UcmFuc2FjdGlvblN0ZXA6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpOb2RlUmVtb3ZpbmdET01UcmFuc2FjdGlvblN0ZXA6OnVuYXBwbHkpOgor
ICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbW92aW5nRE9NVHJhbnNhY3Rpb25TdGVwOjpyZWFwcGx5
KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFSZXBsYWNpbmdET01UcmFuc2FjdGlvblN0ZXA6OkRh
dGFSZXBsYWNpbmdET01UcmFuc2FjdGlvblN0ZXApOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVJl
cGxhY2luZ0RPTVRyYW5zYWN0aW9uU3RlcDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRh
dGFSZXBsYWNpbmdET01UcmFuc2FjdGlvblN0ZXA6OnVuYXBwbHkpOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YVJlcGxhY2luZ0RPTVRyYW5zYWN0aW9uU3RlcDo6cmVhcHBseSk6CisgICAgICAgIChX
ZWJDb3JlOjpBdHRyQ2hhbmdpbmdET01UcmFuc2FjdGlvblN0ZXA6OkF0dHJDaGFuZ2luZ0RPTVRy
YW5zYWN0aW9uU3RlcCk6CisgICAgICAgIChXZWJDb3JlOjpBdHRyQ2hhbmdpbmdET01UcmFuc2Fj
dGlvblN0ZXA6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBdHRyQ2hhbmdpbmdET01UcmFu
c2FjdGlvblN0ZXA6OnVuYXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6QXR0ckNoYW5naW5nRE9N
VHJhbnNhY3Rpb25TdGVwOjpyZWFwcGx5KToKKyAgICAgICAgKiBlZGl0aW5nL0RPTVRyYW5zYWN0
aW9uU3RlcC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoRE9NVHJhbnNh
Y3Rpb25TdGVwKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVRyYW5zYWN0aW9uU3RlcDo6fkRPTVRy
YW5zYWN0aW9uU3RlcCk6CisgICAgICAgIChOb2RlSW5zZXJ0aW5nRE9NVHJhbnNhY3Rpb25TdGVw
KToKKyAgICAgICAgKE5vZGVSZW1vdmluZ0RPTVRyYW5zYWN0aW9uU3RlcCk6CisgICAgICAgIChE
YXRhUmVwbGFjaW5nRE9NVHJhbnNhY3Rpb25TdGVwKToKKyAgICAgICAgKEF0dHJDaGFuZ2luZ0RP
TVRyYW5zYWN0aW9uU3RlcCk6CisgICAgICAgICogZWRpdGluZy9VbmRvTWFuYWdlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjppc1JlY29y
ZGluZ0F1dG9tYXRpY1RyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2Vy
OjphZGRUcmFuc2FjdGlvblN0ZXApOgorICAgICAgICAqIGVkaXRpbmcvVW5kb01hbmFnZXIuaDoK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OnNldFJl
Y29yZGluZ0RPTVRyYW5zYWN0aW9uKToKKyAgICAgICAgKFVuZG9NYW5hZ2VyKToKKwogMjAxMi0w
OC0yMCAgU3VkYXJzYW5hIE5hZ2luZW5pICA8c3VkYXJzYW5hLm5hZ2luZW5pQGxpbnV4LmludGVs
LmNvbT4KIAogICAgICAgICBDYW5jZWwgdGhlIG91dHN0YW5kaW5nIHZpYnJhdGlvbiBwYXR0ZXJu
IGlmIHRoZSBwYXR0ZXJuIGlzIDAgb3IgYW4gZW1wdHkgbGlzdApJbmRleDogU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQJKHJldmlzaW9uIDEyNjExNikKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0xMjE4LDYgKzEyMTgsNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VT
CiAgICAgZWRpdGluZy9CcmVha0Jsb2NrcXVvdGVDb21tYW5kLmNwcAogICAgIGVkaXRpbmcvQ29t
cG9zaXRlRWRpdENvbW1hbmQuY3BwCiAgICAgZWRpdGluZy9DcmVhdGVMaW5rQ29tbWFuZC5jcHAK
KyAgICBlZGl0aW5nL0RPTVRyYW5zYWN0aW9uU3RlcC5jcHAKICAgICBlZGl0aW5nL0RlbGV0ZUJ1
dHRvbi5jcHAKICAgICBlZGl0aW5nL0RlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIuY3BwCiAgICAgZWRp
dGluZy9EZWxldGVGcm9tVGV4dE5vZGVDb21tYW5kLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxMjYxMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0yOTM4LDYgKzI5MzgsOCBAQCB3ZWJjb3Jl
X3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGljdGF0aW9uQWx0ZXJuYXRp
dmUuaCBcCiAJU291cmNlL1dlYkNvcmUvZWRpdGluZy9EaWN0YXRpb25Db21tYW5kLmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUvZWRpdGluZy9EaWN0YXRpb25Db21tYW5kLmggXAorCVNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRE9NVHJhbnNhY3Rpb25TdGVwLmNwcCBcCisJU291cmNlL1dlYkNvcmUvZWRp
dGluZy9ET01UcmFuc2FjdGlvblN0ZXAuaCBcCiAJU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
QWN0aW9uLmggXAogCVNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdENvbW1hbmQuY3BwIFwKIAlT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRDb21tYW5kLmggXApJbmRleDogU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQkocmV2aXNpb24gMTI2MTE2KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNjQyLDYgKzI2NDIsOCBAQAogICAgICAgICAgICAgJ2VkaXRpbmcvQ29t
cG9zaXRlRWRpdENvbW1hbmQuY3BwJywKICAgICAgICAgICAgICdlZGl0aW5nL0NyZWF0ZUxpbmtD
b21tYW5kLmNwcCcsCiAgICAgICAgICAgICAnZWRpdGluZy9DcmVhdGVMaW5rQ29tbWFuZC5oJywK
KyAgICAgICAgICAgICdlZGl0aW5nL0RPTVRyYW5zYWN0aW9uU3RlcC5jcHAnLAorICAgICAgICAg
ICAgJ2VkaXRpbmcvRE9NVHJhbnNhY3Rpb25TdGVwLmgnLAogICAgICAgICAgICAgJ2VkaXRpbmcv
RGVsZXRlQnV0dG9uLmNwcCcsCiAgICAgICAgICAgICAnZWRpdGluZy9EZWxldGVCdXR0b24uaCcs
CiAgICAgICAgICAgICAnZWRpdGluZy9EZWxldGVCdXR0b25Db250cm9sbGVyLmNwcCcsCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNp
b24gMTI2MTE2KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2oJKHdvcmtpbmcgY29weSkKQEAgLTU1OTk5LDYgKzU1OTk5LDYyIEBACiAJCQkJPgogCQkJPC9G
aWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGVkaXRpbmdcRE9NVHJhbnNhY3Rp
b25TdGVwLmNwcCIKKwkJCQk+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRl
YnVnfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8
VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVD
b25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNl
fFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9v
bAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25m
aWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19DYWly
b19DRkxpdGV8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJ
CQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwv
RmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJl
bGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIK
KwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJ
Lz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJ
CQlOYW1lPSJEZWJ1Z19BbGx8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgor
CQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkv
PgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJ
CU5hbWU9IlByb2R1Y3Rpb258V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgor
CQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkv
PgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJl
bGF0aXZlUGF0aD0iLi5cZWRpdGluZ1xET01UcmFuc2FjdGlvblN0ZXAuaCIKKwkJCQk+CisJCQk8
L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cZWRpdGluZ1xFZGl0QWN0aW9u
LmgiCiAJCQkJPgogCQkJPC9GaWxlPgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTI2MTE2KQorKysgU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC0xOTY4LDYgKzE5NjgsOCBAQAogCQk3QjkxODREMzE1NzU4RTQyMDA5MkFBOTMgLyogVW5k
b01hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdCOTE4NEQwMTU3NThFNDIwMDkyQUE5MyAvKiBVbmRvTWFuYWdlci5oICovOyB9OwogCQk3QkIz
NUFFQjE1Q0NEREY0MDBGMkE2NDMgLyogRE9NVHJhbnNhY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0JCMzVBRTkxNUNDRERGNDAwRjJBNjQz
IC8qIERPTVRyYW5zYWN0aW9uLmNwcCAqLzsgfTsKIAkJN0JCMzVBRUMxNUNDRERGNDAwRjJBNjQz
IC8qIERPTVRyYW5zYWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3QkIzNUFFQTE1Q0NEREY0MDBGMkE2NDMgLyogRE9NVHJhbnNhY3Rpb24uaCAq
LzsgfTsKKwkJN0JEMTE3RUIxNUI4REIwMTAwQzk3NEEzIC8qIERPTVRyYW5zYWN0aW9uU3RlcC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkQxMTdF
OTE1QjhEQjAxMDBDOTc0QTMgLyogRE9NVHJhbnNhY3Rpb25TdGVwLmNwcCAqLzsgfTsKKwkJN0JE
MTE3RUMxNUI4REIwMTAwQzk3NEEzIC8qIERPTVRyYW5zYWN0aW9uU3RlcC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0JEMTE3RUExNUI4REIwMTAwQzk3
NEEzIC8qIERPTVRyYW5zYWN0aW9uU3RlcC5oICovOyB9OwogCQk3QzUyMkQ0QjE1QjQ3N0U4MDA5
QjdDOTUgLyogSW5zcGVjdG9yT3ZlcmxheS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QzUyMkQ0OTE1QjQ3N0U4MDA5QjdDOTUgLyogSW5zcGVjdG9y
T3ZlcmxheS5jcHAgKi87IH07CiAJCTdFMzNDRDAxMTI3RjM0MEQwMEJFOEYxNyAvKiBQdXJnZVBy
aW9yaXR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
RTMzQ0QwMDEyN0YzNDBEMDBCRThGMTcgLyogUHVyZ2VQcmlvcml0eS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdFMzdFRjJFMTMzOTIwODgwMEIy
OTI1MCAvKiBTdWJyZXNvdXJjZUxvYWRlckNGLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFMzdFRjJEMTMzOTIwODgwMEIyOTI1MCAvKiBTdWJyZXNv
dXJjZUxvYWRlckNGLmNwcCAqLzsgfTsKQEAgLTkxNDUsNiArOTE0Nyw4IEBACiAJCTdCOTE4NEQx
MTU3NThFNDIwMDkyQUE5MyAvKiBVbmRvTWFuYWdlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gVW5kb01hbmFnZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkIzNUFF
OTE1Q0NEREY0MDBGMkE2NDMgLyogRE9NVHJhbnNhY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRE9NVHJhbnNhY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3QkIzNUFFQTE1Q0NEREY0MDBGMkE2NDMgLyogRE9NVHJhbnNhY3Rpb24u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NVHJhbnNhY3Rpb24uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0JEMTE3RTkxNUI4REIwMTAwQzk3NEEzIC8qIERP
TVRyYW5zYWN0aW9uU3RlcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBET01UcmFuc2FjdGlvblN0ZXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3
QkQxMTdFQTE1QjhEQjAxMDBDOTc0QTMgLyogRE9NVHJhbnNhY3Rpb25TdGVwLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVRyYW5zYWN0aW9uU3RlcC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3QzUyMkQ0OTE1QjQ3N0U4MDA5QjdDOTUgLyogSW5zcGVjdG9y
T3ZlcmxheS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0
b3JPdmVybGF5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M1MjJENEExNUI0
NzhCMjAwOUI3Qzk1IC8qIEluc3BlY3Rvck92ZXJsYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSW5zcGVjdG9yT3ZlcmxheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3QzYwMTI4MDYwMDc4QkI3MEUzNjdBOTUgLyogRE5TUmVzb2x2ZVF1ZXVlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEROU1Jlc29sdmVRdWV1ZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzEwNCw2ICsxNzEwOCw4IEBACiAJCQkJQ0VD
QURGQzQxNTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkNvbW1hbmQuY3BwICovLAogCQkJCUNF
Q0FERkM1MTUzNzc4RkYwMEUzNzA2OCAvKiBEaWN0YXRpb25Db21tYW5kLmggKi8sCiAJCQkJN0I4
QzFGRTYxNUNDRTNDMjAwNEIzNURDIC8qIERPTVRyYW5zYWN0aW9uLmlkbCAqLywKKwkJCQk3QkQx
MTdFOTE1QjhEQjAxMDBDOTc0QTMgLyogRE9NVHJhbnNhY3Rpb25TdGVwLmNwcCAqLywKKwkJCQk3
QkQxMTdFQTE1QjhEQjAxMDBDOTc0QTMgLyogRE9NVHJhbnNhY3Rpb25TdGVwLmggKi8sCiAJCQkJ
OTMzMDlEOTMwOTlFNjQ5MTAwNTZFNTgxIC8qIEVkaXRBY3Rpb24uaCAqLywKIAkJCQk5MzMwOUQ5
NDA5OUU2NDkxMDA1NkU1ODEgLyogRWRpdENvbW1hbmQuY3BwICovLAogCQkJCTkzMzA5RDk1MDk5
RTY0OTEwMDU2RTU4MSAvKiBFZGl0Q29tbWFuZC5oICovLApAQCAtMjMxMjksNiArMjMxMzUsNyBA
QAogCQkJCTA1RkQ2OUUwMTI4NDVENDMwMEIyQkVCMyAvKiBET01UaW1lU3RhbXAuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTc2RkMyQjBDMTIzNzBEQTAwMDZBOTkxQSAvKiBET01Ub2tlbkxpc3QuaCBp
biBIZWFkZXJzICovLAogCQkJCTdCQjM1QUVDMTVDQ0RERjQwMEYyQTY0MyAvKiBET01UcmFuc2Fj
dGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0JEMTE3RUMxNUI4REIwMTAwQzk3NEEzIC8qIERP
TVRyYW5zYWN0aW9uU3RlcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxQTM3QkUwOTdDNzE1RjAw
MTlGM0Q4IC8qIERPTVRyYXZlcnNhbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODU1MjZDRDIwQUIw
QjdEOTAwMDMwMkVBIC8qIERPTVRyZWVXYWxrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1MEI0
MUMzMEFEOUU3RTcwMEE2RUQ0RiAvKiBET01UcmVlV2Fsa2VySW50ZXJuYWwuaCBpbiBIZWFkZXJz
ICovLApAQCAtMjY0MDAsNiArMjY0MDcsNyBAQAogCQkJCTE4ODYwNEIzMEYyRTY1NEEwMDBCNjQ0
MyAvKiBET01UaW1lci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3NkZDMkIwQjEyMzcwREEwMDA2
QTk5MUEgLyogRE9NVG9rZW5MaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdCQjM1QUVCMTVD
Q0RERjQwMEYyQTY0MyAvKiBET01UcmFuc2FjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3
QkQxMTdFQjE1QjhEQjAxMDBDOTc0QTMgLyogRE9NVHJhbnNhY3Rpb25TdGVwLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTg1NTI2Q0QzMEFCMEI3REEwMDAzMDJFQSAvKiBET01UcmVlV2Fsa2VyLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJODVDN0Y0OTIwQUFGNzlEQzAwNDAxNEREIC8qIERPTVVJRXZl
bnQubW0gaW4gU291cmNlcyAqLywKIAkJCQkyRTM3REZEQTEyREJBRkI4MDBBNkIyMzMgLyogRE9N
VVJMLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
RE9NVHJhbnNhY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9ET01UcmFuc2FjdGlvbi5oCShyZXZpc2lvbiAxMjYxMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9ET01UcmFuc2FjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3
IEBACiAKICNpZiBFTkFCTEUoVU5ET19NQU5BR0VSKQogCisjaW5jbHVkZSAiRE9NVHJhbnNhY3Rp
b25TdGVwLmgiCiAjaW5jbHVkZSAiVW5kb1N0ZXAuaCIKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CiAKQEAgLTQ4LDEwICs0OSwxMyBAQCBwdWJsaWM6CiAgICAgVW5kb01hbmFnZXIqIHVuZG9NYW5h
Z2VyKCkgY29uc3QgeyByZXR1cm4gbV91bmRvTWFuYWdlcjsgfQogICAgIHZvaWQgc2V0VW5kb01h
bmFnZXIoVW5kb01hbmFnZXIqIHVuZG9NYW5hZ2VyKSB7IG1fdW5kb01hbmFnZXIgPSB1bmRvTWFu
YWdlcjsgfQogCisgICAgdm9pZCBhZGRUcmFuc2FjdGlvblN0ZXAoUGFzc1JlZlB0cjxET01UcmFu
c2FjdGlvblN0ZXA+IHN0ZXApIHsgbV90cmFuc2FjdGlvblN0ZXBzLmFwcGVuZChzdGVwKTsgfQor
CiBwcml2YXRlOgogICAgIERPTVRyYW5zYWN0aW9uKCk7CiAKICAgICBVbmRvTWFuYWdlciogbV91
bmRvTWFuYWdlcjsKKyAgICBWZWN0b3I8UmVmUHRyPERPTVRyYW5zYWN0aW9uU3RlcD4gPiBtX3Ry
YW5zYWN0aW9uU3RlcHM7CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9ET01UcmFuc2FjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvRE9NVHJhbnNhY3Rpb24uY3BwCShyZXZpc2lvbiAxMjYxMTYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9ET01UcmFuc2FjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUx
LDEyICs1MSwyMSBAQCB2b2lkIERPTVRyYW5zYWN0aW9uOjphcHBseSgpCiAgICAgbV9pc0F1dG9t
YXRpYyA9ICFnZXRGdW5jdGlvbigiZXhlY3V0ZUF1dG9tYXRpYyIpLklzRW1wdHkoKTsKICAgICBp
ZiAoIW1faXNBdXRvbWF0aWMpCiAgICAgICAgIGNhbGxGdW5jdGlvbigiZXhlY3V0ZSIpOworICAg
IGVsc2UgeworICAgICAgICBVbmRvTWFuYWdlcjo6c2V0UmVjb3JkaW5nRE9NVHJhbnNhY3Rpb24o
dGhpcyk7CisgICAgICAgIGNhbGxGdW5jdGlvbigiZXhlY3V0ZUF1dG9tYXRpYyIpOworICAgICAg
ICBVbmRvTWFuYWdlcjo6c2V0UmVjb3JkaW5nRE9NVHJhbnNhY3Rpb24oMCk7CisgICAgfQogfQog
CiB2b2lkIERPTVRyYW5zYWN0aW9uOjp1bmFwcGx5KCkKIHsKICAgICBpZiAoIW1faXNBdXRvbWF0
aWMpCiAgICAgICAgIGNhbGxGdW5jdGlvbigidW5kbyIpOworICAgIGVsc2UgeworICAgICAgICBm
b3IgKHNpemVfdCBpID0gbV90cmFuc2FjdGlvblN0ZXBzLnNpemUoKTsgaSA+IDA7IC0taSkKKyAg
ICAgICAgICAgIG1fdHJhbnNhY3Rpb25TdGVwc1tpIC0gMV0tPnVuYXBwbHkoKTsKKyAgICB9CiAK
ICAgICBpZiAobV91bmRvTWFuYWdlcikKICAgICAgICAgbV91bmRvTWFuYWdlci0+cmVnaXN0ZXJS
ZWRvU3RlcCh0aGlzKTsKQEAgLTY2LDYgKzc1LDEwIEBAIHZvaWQgRE9NVHJhbnNhY3Rpb246OnJl
YXBwbHkoKQogewogICAgIGlmICghbV9pc0F1dG9tYXRpYykKICAgICAgICAgY2FsbEZ1bmN0aW9u
KCJyZWRvIik7CisgICAgZWxzZSB7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV90
cmFuc2FjdGlvblN0ZXBzLnNpemUoKTsgKytpKQorICAgICAgICAgICAgbV90cmFuc2FjdGlvblN0
ZXBzW2ldLT5yZWFwcGx5KCk7CisgICAgfQogCiAgICAgaWYgKG1fdW5kb01hbmFnZXIpCiAgICAg
ICAgIG1fdW5kb01hbmFnZXItPnJlZ2lzdGVyVW5kb1N0ZXAodGhpcyk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9ET01UcmFuc2FjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTVRyYW5zYWN0aW9uLmgJKHJldmlzaW9uIDEyNjExNikK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTVRyYW5zYWN0aW9uLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShVTkRPX01BTkFHRVIpCiAKKyNp
bmNsdWRlICJET01UcmFuc2FjdGlvblN0ZXAuaCIKICNpbmNsdWRlICJVbmRvU3RlcC5oIgogI2lu
Y2x1ZGUgIldvcmxkQ29udGV4dEhhbmRsZS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAg
LTQ5LDYgKzUwLDggQEAgcHVibGljOgogICAgIFVuZG9NYW5hZ2VyKiB1bmRvTWFuYWdlcigpIGNv
bnN0IHsgcmV0dXJuIG1fdW5kb01hbmFnZXI7IH0KICAgICB2b2lkIHNldFVuZG9NYW5hZ2VyKFVu
ZG9NYW5hZ2VyKiB1bmRvTWFuYWdlcikgeyBtX3VuZG9NYW5hZ2VyID0gdW5kb01hbmFnZXI7IH0K
IAorICAgIHZvaWQgYWRkVHJhbnNhY3Rpb25TdGVwKFBhc3NSZWZQdHI8RE9NVHJhbnNhY3Rpb25T
dGVwPiBzdGVwKSB7IG1fdHJhbnNhY3Rpb25TdGVwcy5hcHBlbmQoc3RlcCk7IH0KKwogcHJpdmF0
ZToKICAgICBET01UcmFuc2FjdGlvbihjb25zdCBXb3JsZENvbnRleHRIYW5kbGUmKTsKICAgICB2
ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gZ2V0RnVuY3Rpb24oY29uc3QgY2hhciopOwpAQCAtNTcs
NiArNjAsNyBAQCBwcml2YXRlOgogICAgIFdvcmxkQ29udGV4dEhhbmRsZSBtX3dvcmxkQ29udGV4
dDsKICAgICBVbmRvTWFuYWdlciogbV91bmRvTWFuYWdlcjsKICAgICBib29sIG1faXNBdXRvbWF0
aWM7CisgICAgVmVjdG9yPFJlZlB0cjxET01UcmFuc2FjdGlvblN0ZXA+ID4gbV90cmFuc2FjdGlv
blN0ZXBzOwogfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NT
U3R5bGVEZWNsYXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1By
b3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAJKHJldmlzaW9uIDEyNjExNikKKysrIFNv
dXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiTXV0YXRpb25SZWNvcmQuaCIK
ICNpbmNsdWRlICJTdHlsZVByb3BlcnR5U2V0LmgiCiAjaW5jbHVkZSAiU3R5bGVkRWxlbWVudC5o
IgorI2luY2x1ZGUgIlVuZG9NYW5hZ2VyLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKQEAg
LTU3LDExICs1OCwxOCBAQCBwdWJsaWM6CiAgICAgICAgIGlmICghc19jdXJyZW50RGVjbC0+cGFy
ZW50RWxlbWVudCgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBtX211dGF0aW9uUmVj
aXBpZW50cyA9IE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwOjpjcmVhdGVGb3JBdHRyaWJ1
dGVzTXV0YXRpb24oc19jdXJyZW50RGVjbC0+cGFyZW50RWxlbWVudCgpLCBIVE1MTmFtZXM6OnN0
eWxlQXR0cik7Ci0gICAgICAgIGlmICghbV9tdXRhdGlvblJlY2lwaWVudHMpCi0gICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIGlmIChtX211dGF0aW9uUmVjaXBpZW50cykgeworICAgICAgICAg
ICAgQXRvbWljU3RyaW5nIG9sZFZhbHVlID0gbV9tdXRhdGlvblJlY2lwaWVudHMtPmlzT2xkVmFs
dWVSZXF1ZXN0ZWQoKSA/IHNfY3VycmVudERlY2wtPnBhcmVudEVsZW1lbnQoKS0+Z2V0QXR0cmli
dXRlKEhUTUxOYW1lczo6c3R5bGVBdHRyKSA6IG51bGxBdG9tOworICAgICAgICAgICAgbV9tdXRh
dGlvbiA9IE11dGF0aW9uUmVjb3JkOjpjcmVhdGVBdHRyaWJ1dGVzKHNfY3VycmVudERlY2wtPnBh
cmVudEVsZW1lbnQoKSwgSFRNTE5hbWVzOjpzdHlsZUF0dHIsIG9sZFZhbHVlKTsKKyAgICAgICAg
fQorI2VuZGlmCiAKLSAgICAgICAgQXRvbWljU3RyaW5nIG9sZFZhbHVlID0gbV9tdXRhdGlvblJl
Y2lwaWVudHMtPmlzT2xkVmFsdWVSZXF1ZXN0ZWQoKSA/IHNfY3VycmVudERlY2wtPnBhcmVudEVs
ZW1lbnQoKS0+Z2V0QXR0cmlidXRlKEhUTUxOYW1lczo6c3R5bGVBdHRyKSA6IG51bGxBdG9tOwot
ICAgICAgICBtX211dGF0aW9uID0gTXV0YXRpb25SZWNvcmQ6OmNyZWF0ZUF0dHJpYnV0ZXMoc19j
dXJyZW50RGVjbC0+cGFyZW50RWxlbWVudCgpLCBIVE1MTmFtZXM6OnN0eWxlQXR0ciwgb2xkVmFs
dWUpOworI2lmIEVOQUJMRShVTkRPX01BTkFHRVIpCisgICAgICAgIGlmICghc19jdXJyZW50RGVj
bC0+cGFyZW50RWxlbWVudCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2lzUmVj
b3JkaW5nQXV0b21hdGljVHJhbnNhY3Rpb24gPSBVbmRvTWFuYWdlcjo6aXNSZWNvcmRpbmdBdXRv
bWF0aWNUcmFuc2FjdGlvbihzX2N1cnJlbnREZWNsLT5wYXJlbnRFbGVtZW50KCkpOworICAgICAg
ICBpZiAobV9pc1JlY29yZGluZ0F1dG9tYXRpY1RyYW5zYWN0aW9uKQorICAgICAgICAgICAgbV9v
bGRWYWx1ZSA9IHNfY3VycmVudERlY2wtPnBhcmVudEVsZW1lbnQoKS0+Z2V0QXR0cmlidXRlKEhU
TUxOYW1lczo6c3R5bGVBdHRyKTsKICNlbmRpZgogICAgIH0KIApAQCAtNzYsNiArODQsMTUgQEAg
cHVibGljOgogICAgICAgICAgICAgbV9tdXRhdGlvblJlY2lwaWVudHMtPmVucXVldWVNdXRhdGlv
blJlY29yZChtX211dGF0aW9uKTsKICAgICAgICAgc19zaG91bGREZWxpdmVyID0gZmFsc2U7CiAj
ZW5kaWYKKworI2lmIEVOQUJMRShVTkRPX01BTkFHRVIpCisgICAgICAgIGlmIChtX2lzUmVjb3Jk
aW5nQXV0b21hdGljVHJhbnNhY3Rpb24gJiYgc19zaG91bGRSZWNvcmRUcmFuc2FjdGlvblN0ZXAp
IHsKKyAgICAgICAgICAgIFVuZG9NYW5hZ2VyOjphZGRUcmFuc2FjdGlvblN0ZXAoQXR0ckNoYW5n
aW5nRE9NVHJhbnNhY3Rpb25TdGVwOjpjcmVhdGUoCisgICAgICAgICAgICAgICAgc19jdXJyZW50
RGVjbC0+cGFyZW50RWxlbWVudCgpLCBIVE1MTmFtZXM6OnN0eWxlQXR0ciwgbV9vbGRWYWx1ZSwg
c19jdXJyZW50RGVjbC0+cGFyZW50RWxlbWVudCgpLT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpz
dHlsZUF0dHIpKSk7CisgICAgICAgIH0KKyAgICAgICAgc19zaG91bGRSZWNvcmRUcmFuc2FjdGlv
blN0ZXAgPSBmYWxzZTsKKyNlbmRpZgorCiAgICAgICAgIGlmICghc19zaG91bGROb3RpZnlJbnNw
ZWN0b3IpIHsKICAgICAgICAgICAgIHNfY3VycmVudERlY2wgPSAwOwogICAgICAgICAgICAgcmV0
dXJuOwpAQCAtODgsMTAgKzEwNSwxNSBAQCBwdWJsaWM6CiAgICAgICAgICAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZEludmFsaWRhdGVTdHlsZUF0dHIobG9jYWxDb3B5U3R5bGVEZWNs
LT5wYXJlbnRFbGVtZW50KCktPmRvY3VtZW50KCksIGxvY2FsQ29weVN0eWxlRGVjbC0+cGFyZW50
RWxlbWVudCgpKTsKICAgICB9CiAKLSNpZiBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKQorI2lm
IEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpIHx8IEVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAg
dm9pZCBlbnF1ZXVlTXV0YXRpb25SZWNvcmQoKQogICAgIHsKKyNpZiBFTkFCTEUoTVVUQVRJT05f
T0JTRVJWRVJTKQogICAgICAgICBzX3Nob3VsZERlbGl2ZXIgPSB0cnVlOworI2VuZGlmCisjaWYg
RU5BQkxFKFVORE9fTUFOQUdFUikKKyAgICAgICAgc19zaG91bGRSZWNvcmRUcmFuc2FjdGlvblN0
ZXAgPSB0cnVlOworI2VuZGlmCiAgICAgfQogI2VuZGlmCiAKQEAgLTExMCw2ICsxMzIsMTIgQEAg
cHJpdmF0ZToKICAgICBPd25QdHI8TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA+IG1fbXV0
YXRpb25SZWNpcGllbnRzOwogICAgIFJlZlB0cjxNdXRhdGlvblJlY29yZD4gbV9tdXRhdGlvbjsK
ICNlbmRpZgorI2lmIEVOQUJMRShVTkRPX01BTkFHRVIpCisgICAgc3RhdGljIGJvb2wgc19zaG91
bGRSZWNvcmRUcmFuc2FjdGlvblN0ZXA7CisgICAgCisgICAgYm9vbCBtX2lzUmVjb3JkaW5nQXV0
b21hdGljVHJhbnNhY3Rpb247CisgICAgQXRvbWljU3RyaW5nIG1fb2xkVmFsdWU7CisjZW5kaWYK
IH07CiAKIHVuc2lnbmVkIFN0eWxlQXR0cmlidXRlTXV0YXRpb25TY29wZTo6c19zY29wZUNvdW50
ID0gMDsKQEAgLTExOCw2ICsxNDYsOSBAQCBib29sIFN0eWxlQXR0cmlidXRlTXV0YXRpb25TY29w
ZTo6c19zaG91CiAjaWYgRU5BQkxFKE1VVEFUSU9OX09CU0VSVkVSUykKIGJvb2wgU3R5bGVBdHRy
aWJ1dGVNdXRhdGlvblNjb3BlOjpzX3Nob3VsZERlbGl2ZXIgPSBmYWxzZTsKICNlbmRpZgorI2lm
IEVOQUJMRShVTkRPX01BTkFHRVIpCitib29sIFN0eWxlQXR0cmlidXRlTXV0YXRpb25TY29wZTo6
c19zaG91bGRSZWNvcmRUcmFuc2FjdGlvblN0ZXAgPSBmYWxzZTsKKyNlbmRpZgogCiB9IC8vIG5h
bWVzcGFjZQogCkBAIC0xNTgsNyArMTg5LDcgQEAgU3RyaW5nIFByb3BlcnR5U2V0Q1NTU3R5bGVE
ZWNsYXJhdGlvbjo6YwogICAgIAogdm9pZCBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246
OnNldENzc1RleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSNp
ZiBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKQorI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZF
UlMpIHx8IEVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgU3R5bGVBdHRyaWJ1dGVNdXRhdGlvblNj
b3BlIG11dGF0aW9uU2NvcGUodGhpcyk7CiAjZW5kaWYKICAgICB3aWxsTXV0YXRlKCk7CkBAIC0x
NjksNyArMjAwLDcgQEAgdm9pZCBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OnNldAog
CiAgICAgZGlkTXV0YXRlKFByb3BlcnR5Q2hhbmdlZCk7CiAKLSNpZiBFTkFCTEUoTVVUQVRJT05f
T0JTRVJWRVJTKQorI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpIHx8IEVOQUJMRShVTkRP
X01BTkFHRVIpCiAgICAgbXV0YXRpb25TY29wZS5lbnF1ZXVlTXV0YXRpb25SZWNvcmQoKTsgICAg
CiAjZW5kaWYKIH0KQEAgLTIxOSw3ICsyNTAsNyBAQCBib29sIFByb3BlcnR5U2V0Q1NTU3R5bGVE
ZWNsYXJhdGlvbjo6aXNQCiAKIHZvaWQgUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpz
ZXRQcm9wZXJ0eShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1
ZSwgY29uc3QgU3RyaW5nJiBwcmlvcml0eSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0jaWYgRU5B
QkxFKE1VVEFUSU9OX09CU0VSVkVSUykKKyNpZiBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKSB8
fCBFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIFN0eWxlQXR0cmlidXRlTXV0YXRpb25TY29wZSBt
dXRhdGlvblNjb3BlKHRoaXMpOwogI2VuZGlmCiAgICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlE
ID0gY3NzUHJvcGVydHlJRChwcm9wZXJ0eU5hbWUpOwpAQCAtMjM4LDcgKzI2OSw3IEBAIHZvaWQg
UHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpzZXQKICAgICBpZiAoY2hhbmdlZCkgewog
ICAgICAgICAvLyBDU1MgRE9NIHJlcXVpcmVzIHJhaXNpbmcgU1lOVEFYX0VSUiBvZiBwYXJzaW5n
IGZhaWxlZCwgYnV0IHRoaXMgaXMgdG9vIGRhbmdlcm91cyBmb3IgY29tcGF0aWJpbGl0eSwKICAg
ICAgICAgLy8gc2VlIDxodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Mjk2
Pi4KLSNpZiBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKQorI2lmIEVOQUJMRShNVVRBVElPTl9P
QlNFUlZFUlMpIHx8IEVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgICAgIG11dGF0aW9uU2NvcGUu
ZW5xdWV1ZU11dGF0aW9uUmVjb3JkKCk7CiAjZW5kaWYKICAgICB9CkBAIC0yNDYsNyArMjc3LDcg
QEAgdm9pZCBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OnNldAogCiBTdHJpbmcgUHJv
cGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpyZW1vdmVQcm9wZXJ0eShjb25zdCBTdHJpbmcm
IHByb3BlcnR5TmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0jaWYgRU5BQkxFKE1VVEFUSU9O
X09CU0VSVkVSUykKKyNpZiBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKSB8fCBFTkFCTEUoVU5E
T19NQU5BR0VSKQogICAgIFN0eWxlQXR0cmlidXRlTXV0YXRpb25TY29wZSBtdXRhdGlvblNjb3Bl
KHRoaXMpOwogI2VuZGlmCiAgICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEID0gY3NzUHJvcGVy
dHlJRChwcm9wZXJ0eU5hbWUpOwpAQCAtMjYyLDcgKzI5Myw3IEBAIFN0cmluZyBQcm9wZXJ0eVNl
dENTU1N0eWxlRGVjbGFyYXRpb246OnIKICAgICBkaWRNdXRhdGUoY2hhbmdlZCA/IFByb3BlcnR5
Q2hhbmdlZCA6IE5vQ2hhbmdlcyk7CiAKICAgICBpZiAoY2hhbmdlZCkgewotI2lmIEVOQUJMRShN
VVRBVElPTl9PQlNFUlZFUlMpCisjaWYgRU5BQkxFKE1VVEFUSU9OX09CU0VSVkVSUykgfHwgRU5B
QkxFKFVORE9fTUFOQUdFUikKICAgICAgICAgbXV0YXRpb25TY29wZS5lbnF1ZXVlTXV0YXRpb25S
ZWNvcmQoKTsKICNlbmRpZgogICAgIH0KQEAgLTI4MSw3ICszMTIsNyBAQCBTdHJpbmcgUHJvcGVy
dHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpnCiAKIHZvaWQgUHJvcGVydHlTZXRDU1NTdHlsZURl
Y2xhcmF0aW9uOjpzZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwg
Y29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQog
eyAKLSNpZiBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKQorI2lmIEVOQUJMRShNVVRBVElPTl9P
QlNFUlZFUlMpIHx8IEVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgU3R5bGVBdHRyaWJ1dGVNdXRh
dGlvblNjb3BlIG11dGF0aW9uU2NvcGUodGhpcyk7CiAjZW5kaWYKICAgICB3aWxsTXV0YXRlKCk7
CkBAIC0yOTIsNyArMzIzLDcgQEAgdm9pZCBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246
OnNldAogICAgIGRpZE11dGF0ZShjaGFuZ2VkID8gUHJvcGVydHlDaGFuZ2VkIDogTm9DaGFuZ2Vz
KTsKIAogICAgIGlmIChjaGFuZ2VkKSB7Ci0jaWYgRU5BQkxFKE1VVEFUSU9OX09CU0VSVkVSUykK
KyNpZiBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKSB8fCBFTkFCTEUoVU5ET19NQU5BR0VSKQog
ICAgICAgICBtdXRhdGlvblNjb3BlLmVucXVldWVNdXRhdGlvblJlY29yZCgpOwogI2VuZGlmCiAg
ICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcAkocmV2aXNpb24gMTI2
MTE2KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiTm9kZVJlbmRlcmluZ0NvbnRleHQuaCIK
ICNpbmNsdWRlICJSZW5kZXJUZXh0LmgiCiAjaW5jbHVkZSAiVGV4dEJyZWFrSXRlcmF0b3IuaCIK
KyNpbmNsdWRlICJVbmRvTWFuYWdlci5oIgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCkBAIC0x
ODMsNiArMTg0LDEzIEBAIHZvaWQgQ2hhcmFjdGVyRGF0YTo6c2V0Tm9kZVZhbHVlKGNvbnN0IFMK
IAogdm9pZCBDaGFyYWN0ZXJEYXRhOjpzZXREYXRhQW5kVXBkYXRlKGNvbnN0IFN0cmluZyYgbmV3
RGF0YSwgdW5zaWduZWQgb2Zmc2V0T2ZSZXBsYWNlZERhdGEsIHVuc2lnbmVkIG9sZExlbmd0aCwg
dW5zaWduZWQgbmV3TGVuZ3RoKQogeworI2lmIEVOQUJMRShVTkRPX01BTkFHRVIpCisgICAgaWYg
KFVuZG9NYW5hZ2VyOjppc1JlY29yZGluZ0F1dG9tYXRpY1RyYW5zYWN0aW9uKHRoaXMpKSB7Cisg
ICAgICAgIGNvbnN0IFN0cmluZyYgcmVwbGFjaW5nRGF0YSA9IG5ld0RhdGEuc3Vic3RyaW5nKG9m
ZnNldE9mUmVwbGFjZWREYXRhLCBuZXdMZW5ndGgpOworICAgICAgICBjb25zdCBTdHJpbmcmIHJl
cGxhY2VkRGF0YSA9IG1fZGF0YS5zdWJzdHJpbmcob2Zmc2V0T2ZSZXBsYWNlZERhdGEsIG9sZExl
bmd0aCk7CisgICAgICAgIFVuZG9NYW5hZ2VyOjphZGRUcmFuc2FjdGlvblN0ZXAoRGF0YVJlcGxh
Y2luZ0RPTVRyYW5zYWN0aW9uU3RlcDo6Y3JlYXRlKHRoaXMsIG9mZnNldE9mUmVwbGFjZWREYXRh
LCBvbGRMZW5ndGgsIHJlcGxhY2luZ0RhdGEsIHJlcGxhY2VkRGF0YSkpOworICAgIH0KKyNlbmRp
ZgogICAgIFN0cmluZyBvbGREYXRhID0gbV9kYXRhOwogICAgIG1fZGF0YSA9IG5ld0RhdGE7CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAJKHJldmlzaW9uIDEyNjExNikK
KysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIlJlbmRlckJveC5oIgogI2luY2x1ZGUgIlJlbmRl
clRoZW1lLmgiCiAjaW5jbHVkZSAiUm9vdElubGluZUJveC5oIgorI2luY2x1ZGUgIlVuZG9NYW5h
Z2VyLmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgogCkBAIC0zMjcsNiArMzI4LDEwIEBAIHN0YXRpYyB2b2lkIHdpbGxSZW1vdmVDaGlsZChO
b2RlKiBjaGlsZCkKICAgICBDaGlsZExpc3RNdXRhdGlvblNjb3BlKGNoaWxkLT5wYXJlbnROb2Rl
KCkpLndpbGxSZW1vdmVDaGlsZChjaGlsZCk7CiAgICAgY2hpbGQtPm5vdGlmeU11dGF0aW9uT2Jz
ZXJ2ZXJzTm9kZVdpbGxEZXRhY2goKTsKICNlbmRpZgorI2lmIEVOQUJMRShVTkRPX01BTkFHRVIp
CisgICAgaWYgKFVuZG9NYW5hZ2VyOjppc1JlY29yZGluZ0F1dG9tYXRpY1RyYW5zYWN0aW9uKGNo
aWxkLT5wYXJlbnROb2RlKCkpKQorICAgICAgICBVbmRvTWFuYWdlcjo6YWRkVHJhbnNhY3Rpb25T
dGVwKE5vZGVSZW1vdmluZ0RPTVRyYW5zYWN0aW9uU3RlcDo6Y3JlYXRlKGNoaWxkLT5wYXJlbnRO
b2RlKCksIGNoaWxkKSk7CisjZW5kaWYKIAogICAgIGRpc3BhdGNoQ2hpbGRSZW1vdmFsRXZlbnRz
KGNoaWxkKTsKICAgICBjaGlsZC0+ZG9jdW1lbnQoKS0+bm9kZVdpbGxCZVJlbW92ZWQoY2hpbGQp
OyAvLyBlLmcuIG11dGF0aW9uIGV2ZW50IGxpc3RlbmVyIGNhbiBjcmVhdGUgYSBuZXcgcmFuZ2Uu
CkBAIC0zNDMsNiArMzQ4LDkgQEAgc3RhdGljIHZvaWQgd2lsbFJlbW92ZUNoaWxkcmVuKENvbnRh
aW5lcgogI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpCiAgICAgQ2hpbGRMaXN0TXV0YXRp
b25TY29wZSBtdXRhdGlvbihjb250YWluZXIpOwogI2VuZGlmCisjaWYgRU5BQkxFKFVORE9fTUFO
QUdFUikKKyAgICBib29sIGlzUmVjb3JkaW5nQXV0b21hdGljVHJhbnNhY3Rpb24gPSBVbmRvTWFu
YWdlcjo6aXNSZWNvcmRpbmdBdXRvbWF0aWNUcmFuc2FjdGlvbihjb250YWluZXIpOworI2VuZGlm
CiAKICAgICBmb3IgKE5vZGVWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gY2hpbGRyZW4uYmVn
aW4oKTsgaXQgIT0gY2hpbGRyZW4uZW5kKCk7IGl0KyspIHsKICAgICAgICAgTm9kZSogY2hpbGQg
PSBpdC0+Z2V0KCk7CkBAIC0zNTEsNiArMzU5LDEwIEBAIHN0YXRpYyB2b2lkIHdpbGxSZW1vdmVD
aGlsZHJlbihDb250YWluZXIKICAgICAgICAgbXV0YXRpb24ud2lsbFJlbW92ZUNoaWxkKGNoaWxk
KTsKICAgICAgICAgY2hpbGQtPm5vdGlmeU11dGF0aW9uT2JzZXJ2ZXJzTm9kZVdpbGxEZXRhY2go
KTsKICNlbmRpZgorI2lmIEVOQUJMRShVTkRPX01BTkFHRVIpCisgICAgICAgIGlmIChpc1JlY29y
ZGluZ0F1dG9tYXRpY1RyYW5zYWN0aW9uKQorICAgICAgICAgICAgVW5kb01hbmFnZXI6OmFkZFRy
YW5zYWN0aW9uU3RlcChOb2RlUmVtb3ZpbmdET01UcmFuc2FjdGlvblN0ZXA6OmNyZWF0ZShjb250
YWluZXIsIGNoaWxkKSk7CisjZW5kaWYKIAogICAgICAgICAvLyBmaXJlIHJlbW92ZWQgZnJvbSBk
b2N1bWVudCBtdXRhdGlvbiBldmVudHMuCiAgICAgICAgIGRpc3BhdGNoQ2hpbGRSZW1vdmFsRXZl
bnRzKGNoaWxkKTsKQEAgLTk3OSw2ICs5OTEsMTEgQEAgc3RhdGljIHZvaWQgdXBkYXRlVHJlZUFm
dGVySW5zZXJ0aW9uKENvbgogICAgIENoaWxkTGlzdE11dGF0aW9uU2NvcGUocGFyZW50KS5jaGls
ZEFkZGVkKGNoaWxkKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKFVORE9fTUFOQUdFUikKKyAgICBp
ZiAoVW5kb01hbmFnZXI6OmlzUmVjb3JkaW5nQXV0b21hdGljVHJhbnNhY3Rpb24ocGFyZW50KSkK
KyAgICAgICAgVW5kb01hbmFnZXI6OmFkZFRyYW5zYWN0aW9uU3RlcChOb2RlSW5zZXJ0aW5nRE9N
VHJhbnNhY3Rpb25TdGVwOjpjcmVhdGUocGFyZW50LCBjaGlsZCkpOworI2VuZGlmCisKICAgICBw
YXJlbnQtPmNoaWxkcmVuQ2hhbmdlZChmYWxzZSwgY2hpbGQtPnByZXZpb3VzU2libGluZygpLCBj
aGlsZC0+bmV4dFNpYmxpbmcoKSwgMSk7CiAKICAgICBDaGlsZE5vZGVJbnNlcnRpb25Ob3RpZmll
cihwYXJlbnQpLm5vdGlmeShjaGlsZCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJl
dmlzaW9uIDEyNjExNikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ4Niw5ICs0ODYsNiBAQCBEb2N1bWVudDo6RG9jdW1lbnQoRnJhbWUqIGZy
YW1lLCBjb25zdCBLCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICAsIG1fdG91Y2hFdmVu
dEhhbmRsZXJDb3VudCgwKQogI2VuZGlmCi0jaWYgRU5BQkxFKFVORE9fTUFOQUdFUikKLSAgICAs
IG1fdW5kb01hbmFnZXIoMCkKLSNlbmRpZgogICAgICwgbV9wZW5kaW5nVGFza3NUaW1lcih0aGlz
LCAmRG9jdW1lbnQ6OnBlbmRpbmdUYXNrc1RpbWVyRmlyZWQpCiAgICAgLCBtX3NjaGVkdWxlZFRh
c2tzQXJlU3VzcGVuZGVkKGZhbHNlKQogICAgICwgbV92aXN1YWxVcGRhdGVzQWxsb3dlZCh0cnVl
KQpAQCAtNjE1NCw5ICs2MTUxLDI3IEBAIHZvaWQgRG9jdW1lbnQ6OnJlcG9ydE1lbW9yeVVzYWdl
KE1lbW9yeU8KICNpZiBFTkFCTEUoVU5ET19NQU5BR0VSKQogUGFzc1JlZlB0cjxVbmRvTWFuYWdl
cj4gRG9jdW1lbnQ6OnVuZG9NYW5hZ2VyKCkKIHsKLSAgICBpZiAoIW1fdW5kb01hbmFnZXIpCi0g
ICAgICAgIG1fdW5kb01hbmFnZXIgPSBVbmRvTWFuYWdlcjo6Y3JlYXRlKHRoaXMsIHRoaXMpOwot
ICAgIHJldHVybiBtX3VuZG9NYW5hZ2VyOworICAgIFJlZlB0cjxVbmRvTWFuYWdlcj4gdW5kb01h
bmFnZXIgPSBnZXRVbmRvTWFuYWdlcih0aGlzKTsKKyAgICBpZiAoIXVuZG9NYW5hZ2VyKSB7Cisg
ICAgICAgIHVuZG9NYW5hZ2VyID0gVW5kb01hbmFnZXI6OmNyZWF0ZSh0aGlzLCB0aGlzKTsKKyAg
ICAgICAgc2V0VW5kb01hbmFnZXIodGhpcywgdW5kb01hbmFnZXIpOworICAgIH0KKyAgICByZXR1
cm4gdW5kb01hbmFnZXI7Cit9CisKK1Bhc3NSZWZQdHI8VW5kb01hbmFnZXI+IERvY3VtZW50Ojpn
ZXRVbmRvTWFuYWdlcihOb2RlKiBub2RlKQoreworICAgIHJldHVybiBtX3VuZG9NYW5hZ2Vycy5n
ZXQobm9kZSk7Cit9CisKK3ZvaWQgRG9jdW1lbnQ6OnNldFVuZG9NYW5hZ2VyKE5vZGUqIG5vZGUs
IFBhc3NSZWZQdHI8VW5kb01hbmFnZXI+IHVuZG9NYW5hZ2VyKQoreworICAgIG1fdW5kb01hbmFn
ZXJzLnNldChub2RlLCB1bmRvTWFuYWdlcik7Cit9CisKK3ZvaWQgRG9jdW1lbnQ6OnJlbW92ZVVu
ZG9NYW5hZ2VyKE5vZGUqIG5vZGUpCit7CisgICAgbV91bmRvTWFuYWdlcnMucmVtb3ZlKG5vZGUp
OwogfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCShyZXZpc2lvbiAxMjYxMTYp
CisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTE1
Niw2ICsxMTU2LDkgQEAgcHVibGljOgogICAgIAogI2lmIEVOQUJMRShVTkRPX01BTkFHRVIpCiAg
ICAgUGFzc1JlZlB0cjxVbmRvTWFuYWdlcj4gdW5kb01hbmFnZXIoKTsKKyAgICBQYXNzUmVmUHRy
PFVuZG9NYW5hZ2VyPiBnZXRVbmRvTWFuYWdlcihOb2RlKik7CisgICAgdm9pZCBzZXRVbmRvTWFu
YWdlcihOb2RlKiwgUGFzc1JlZlB0cjxVbmRvTWFuYWdlcj4pOworICAgIHZvaWQgcmVtb3ZlVW5k
b01hbmFnZXIoTm9kZSopOwogI2VuZGlmCiAgICAgCiAgICAgYm9vbCBpc0luRG9jdW1lbnRXcml0
ZSgpIHsgcmV0dXJuIG1fd3JpdGVSZWN1cnNpb25EZXB0aCA+IDA7IH0KQEAgLTE1MzcsNyArMTU0
MCw3IEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICAKICNpZiBFTkFCTEUoVU5ET19NQU5BR0VSKQot
ICAgIFJlZlB0cjxVbmRvTWFuYWdlcj4gbV91bmRvTWFuYWdlcjsKKyAgICBIYXNoTWFwPE5vZGUq
LCBSZWZQdHI8VW5kb01hbmFnZXI+ID4gbV91bmRvTWFuYWdlcnM7CiAjZW5kaWYKIAogI2lmIEVO
QUJMRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDEyNjExNikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTQ4LDEwICsxNDgsNyBAQCBFbGVtZW50Ojp+RWxlbWVudCgpCiAgICAg
fQogCiAjaWYgRU5BQkxFKFVORE9fTUFOQUdFUikKLSAgICBpZiAoaGFzUmFyZURhdGEoKSAmJiBl
bGVtZW50UmFyZURhdGEoKS0+bV91bmRvTWFuYWdlcikgewotICAgICAgICBlbGVtZW50UmFyZURh
dGEoKS0+bV91bmRvTWFuYWdlci0+ZGlzY29ubmVjdCgpOwotICAgICAgICBlbGVtZW50UmFyZURh
dGEoKS0+bV91bmRvTWFuYWdlci5jbGVhcigpOwotICAgIH0KKyAgICBkaXNjb25uZWN0VW5kb01h
bmFnZXIoKTsKICNlbmRpZgogfQogCkBAIC0yMDU1LDYgKzIwNTIsMTEgQEAgdm9pZCBFbGVtZW50
Ojp3aWxsTW9kaWZ5QXR0cmlidXRlKGNvbnN0IAogICAgICAgICByZWNpcGllbnRzLT5lbnF1ZXVl
TXV0YXRpb25SZWNvcmQoTXV0YXRpb25SZWNvcmQ6OmNyZWF0ZUF0dHJpYnV0ZXModGhpcywgbmFt
ZSwgb2xkVmFsdWUpKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKFVORE9fTUFOQUdFUikKKyAgICBp
ZiAoVW5kb01hbmFnZXI6OmlzUmVjb3JkaW5nQXV0b21hdGljVHJhbnNhY3Rpb24odGhpcykpCisg
ICAgICAgIFVuZG9NYW5hZ2VyOjphZGRUcmFuc2FjdGlvblN0ZXAoQXR0ckNoYW5naW5nRE9NVHJh
bnNhY3Rpb25TdGVwOjpjcmVhdGUodGhpcywgbmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKSk7Cisj
ZW5kaWYKKwogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjp3aWxsTW9kaWZ5RE9NQXR0cihkb2N1bWVudCgpLCB0aGlzLCBvbGRWYWx1ZSwgbmV3VmFs
dWUpOwogI2VuZGlmCkBAIC0yMjQyLDIyICsyMjQ0LDIxIEBAIFBhc3NSZWZQdHI8VW5kb01hbmFn
ZXI+IEVsZW1lbnQ6OnVuZG9NYW4KICAgICAgICAgZGlzY29ubmVjdFVuZG9NYW5hZ2VyKCk7CiAg
ICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICBFbGVtZW50UmFyZURhdGEqIGRhdGEgPSBlbnN1
cmVFbGVtZW50UmFyZURhdGEoKTsKLSAgICBpZiAoIWRhdGEtPm1fdW5kb01hbmFnZXIpCi0gICAg
ICAgIGRhdGEtPm1fdW5kb01hbmFnZXIgPSBVbmRvTWFuYWdlcjo6Y3JlYXRlKGRvY3VtZW50KCks
IHRoaXMpOwotICAgIHJldHVybiBkYXRhLT5tX3VuZG9NYW5hZ2VyOworICAgIFJlZlB0cjxVbmRv
TWFuYWdlcj4gdW5kb01hbmFnZXIgPSBkb2N1bWVudCgpLT5nZXRVbmRvTWFuYWdlcih0aGlzKTsK
KyAgICBpZiAoIXVuZG9NYW5hZ2VyKSB7CisgICAgICAgIHVuZG9NYW5hZ2VyID0gVW5kb01hbmFn
ZXI6OmNyZWF0ZShkb2N1bWVudCgpLCB0aGlzKTsKKyAgICAgICAgZG9jdW1lbnQoKS0+c2V0VW5k
b01hbmFnZXIodGhpcywgdW5kb01hbmFnZXIpOworICAgIH0KKyAgICByZXR1cm4gdW5kb01hbmFn
ZXI7CiB9CiAKIHZvaWQgRWxlbWVudDo6ZGlzY29ubmVjdFVuZG9NYW5hZ2VyKCkKIHsKLSAgICBp
ZiAoIWhhc1JhcmVEYXRhKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBFbGVtZW50UmFyZURhdGEq
IGRhdGEgPSBlbGVtZW50UmFyZURhdGEoKTsKLSAgICBVbmRvTWFuYWdlciogdW5kb01hbmFnZXIg
PSBkYXRhLT5tX3VuZG9NYW5hZ2VyLmdldCgpOworICAgIFVuZG9NYW5hZ2VyKiB1bmRvTWFuYWdl
ciA9IGRvY3VtZW50KCktPmdldFVuZG9NYW5hZ2VyKHRoaXMpLmdldCgpOwogICAgIGlmICghdW5k
b01hbmFnZXIpCiAgICAgICAgIHJldHVybjsKICAgICB1bmRvTWFuYWdlci0+ZGlzY29ubmVjdCgp
OwotICAgIGRhdGEtPm1fdW5kb01hbmFnZXIuY2xlYXIoKTsKKyAgICBkb2N1bWVudCgpLT5yZW1v
dmVVbmRvTWFuYWdlcih0aGlzKTsKIH0KIAogdm9pZCBFbGVtZW50OjpkaXNjb25uZWN0VW5kb01h
bmFnZXJzSW5TdWJ0cmVlKCkKQEAgLTIyNjUsMTMgKzIyNjYsMTIgQEAgdm9pZCBFbGVtZW50Ojpk
aXNjb25uZWN0VW5kb01hbmFnZXJzSW5TdQogICAgIE5vZGUqIG5vZGUgPSBmaXJzdENoaWxkKCk7
CiAgICAgd2hpbGUgKG5vZGUpIHsKICAgICAgICAgaWYgKG5vZGUtPmlzRWxlbWVudE5vZGUoKSkg
ewotICAgICAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IHRvRWxlbWVudChub2RlKTsKLSAgICAg
ICAgICAgIGlmIChlbGVtZW50LT5oYXNSYXJlRGF0YSgpICYmIGVsZW1lbnQtPmVsZW1lbnRSYXJl
RGF0YSgpLT5tX3VuZG9NYW5hZ2VyKSB7CisgICAgICAgICAgICBpZiAoZG9jdW1lbnQoKS0+Z2V0
VW5kb01hbmFnZXIobm9kZSkpIHsKICAgICAgICAgICAgICAgICBpZiAoIW5vZGUtPmlzQ29udGVu
dEVkaXRhYmxlKCkpIHsKICAgICAgICAgICAgICAgICAgICAgbm9kZSA9IG5vZGUtPnRyYXZlcnNl
TmV4dFNpYmxpbmcodGhpcyk7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbGVtZW50LT5kaXNjb25uZWN0VW5kb01hbmFn
ZXIoKTsKKyAgICAgICAgICAgICAgICB0b0VsZW1lbnQobm9kZSktPmRpc2Nvbm5lY3RVbmRvTWFu
YWdlcigpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIG5vZGUgPSBub2RlLT50
cmF2ZXJzZU5leHROb2RlKHRoaXMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRS
YXJlRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURh
dGEuaAkocmV2aXNpb24gMTI2MTE2KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJl
RGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjEsNyArMTIxLDYgQEAgcHVibGljOgogI2VuZGlm
CiAKICNpZiBFTkFCTEUoVU5ET19NQU5BR0VSKQotICAgIFJlZlB0cjxVbmRvTWFuYWdlcj4gbV91
bmRvTWFuYWdlcjsKICAgICBib29sIG1fdW5kb1Njb3BlOwogI2VuZGlmCiB9OwpJbmRleDogU291
cmNlL1dlYkNvcmUvZWRpdGluZy9ET01UcmFuc2FjdGlvblN0ZXAuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRE9NVHJhbnNhY3Rpb25TdGVwLmNwcAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRE9NVHJhbnNhY3Rpb25TdGVwLmNwcAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwxNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgR09PR0xFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEdPT0dMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisj
aWYgRU5BQkxFKFVORE9fTUFOQUdFUikKKworI2luY2x1ZGUgIkRPTVRyYW5zYWN0aW9uU3RlcC5o
IgorCisjaW5jbHVkZSAiQ2hhcmFjdGVyRGF0YS5oIgorI2luY2x1ZGUgIkNvbnRhaW5lck5vZGUu
aCIKKyNpbmNsdWRlICJFbGVtZW50LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2lu
Y2x1ZGUgIk5vZGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitOb2RlSW5zZXJ0aW5nRE9N
VHJhbnNhY3Rpb25TdGVwOjpOb2RlSW5zZXJ0aW5nRE9NVHJhbnNhY3Rpb25TdGVwKE5vZGUqIG5v
ZGUsIE5vZGUqIGNoaWxkKQorICAgIDogbV9ub2RlKG5vZGUpCisgICAgLCBtX3JlZkNoaWxkKGNo
aWxkLT5uZXh0U2libGluZygpKQorICAgICwgbV9jaGlsZChjaGlsZCkKK3sKK30KKworUGFzc1Jl
ZlB0cjxOb2RlSW5zZXJ0aW5nRE9NVHJhbnNhY3Rpb25TdGVwPiBOb2RlSW5zZXJ0aW5nRE9NVHJh
bnNhY3Rpb25TdGVwOjpjcmVhdGUoTm9kZSogbm9kZSwgTm9kZSogY2hpbGQpCit7CisgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBOb2RlSW5zZXJ0aW5nRE9NVHJhbnNhY3Rpb25TdGVwKG5vZGUsIGNo
aWxkKSk7Cit9CisKK3ZvaWQgTm9kZUluc2VydGluZ0RPTVRyYW5zYWN0aW9uU3RlcDo6dW5hcHBs
eSgpCit7CisgICAgaWYgKG1fY2hpbGQgJiYgbV9jaGlsZC0+cGFyZW50Tm9kZSgpICE9IG1fbm9k
ZS5nZXQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChtX3JlZkNoaWxkICYmIG1fcmVmQ2hp
bGQtPnBhcmVudE5vZGUoKSAhPSBtX25vZGUuZ2V0KCkpCisgICAgICAgIHJldHVybjsKKyAgICBp
ZiAobV9yZWZDaGlsZCAmJiBtX3JlZkNoaWxkLT5wcmV2aW91c1NpYmxpbmcoKSAhPSBtX2NoaWxk
LmdldCgpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgRXhjZXB0aW9uQ29kZSBlYzsKKyAg
ICBtX25vZGUtPnJlbW92ZUNoaWxkKG1fY2hpbGQuZ2V0KCksIGVjKTsKK30KKwordm9pZCBOb2Rl
SW5zZXJ0aW5nRE9NVHJhbnNhY3Rpb25TdGVwOjpyZWFwcGx5KCkKK3sKKyAgICBpZiAobV9jaGls
ZCAmJiBtX2NoaWxkLT5wYXJlbnROb2RlKCkpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAobV9y
ZWZDaGlsZCAmJiBtX3JlZkNoaWxkLT5wYXJlbnROb2RlKCkgIT0gbV9ub2RlLmdldCgpKQorICAg
ICAgICByZXR1cm47CisgICAgCisgICAgRXhjZXB0aW9uQ29kZSBlYzsKKyAgICBtX25vZGUtPmlu
c2VydEJlZm9yZShtX2NoaWxkLCBtX3JlZkNoaWxkLmdldCgpLCBlYyk7Cit9CisKK05vZGVSZW1v
dmluZ0RPTVRyYW5zYWN0aW9uU3RlcDo6Tm9kZVJlbW92aW5nRE9NVHJhbnNhY3Rpb25TdGVwKE5v
ZGUqIG5vZGUsIE5vZGUqIGNoaWxkKQorICAgIDogbV9ub2RlKG5vZGUpCisgICAgLCBtX3JlZkNo
aWxkKGNoaWxkLT5uZXh0U2libGluZygpKQorICAgICwgbV9jaGlsZChjaGlsZCkKK3sKK30KKwor
UGFzc1JlZlB0cjxOb2RlUmVtb3ZpbmdET01UcmFuc2FjdGlvblN0ZXA+IE5vZGVSZW1vdmluZ0RP
TVRyYW5zYWN0aW9uU3RlcDo6Y3JlYXRlKE5vZGUqIG5vZGUsIE5vZGUqIGNoaWxkKQoreworICAg
IHJldHVybiBhZG9wdFJlZihuZXcgTm9kZVJlbW92aW5nRE9NVHJhbnNhY3Rpb25TdGVwKG5vZGUs
IGNoaWxkKSk7Cit9CisKK3ZvaWQgTm9kZVJlbW92aW5nRE9NVHJhbnNhY3Rpb25TdGVwOjp1bmFw
cGx5KCkKK3sKKyAgICBpZiAobV9jaGlsZCAmJiBtX2NoaWxkLT5wYXJlbnROb2RlKCkpCisgICAg
ICAgIHJldHVybjsKKyAgICBpZiAobV9yZWZDaGlsZCAmJiBtX3JlZkNoaWxkLT5wYXJlbnROb2Rl
KCkgIT0gbV9ub2RlLmdldCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBFeGNlcHRpb25Db2Rl
IGVjOworICAgIG1fbm9kZS0+aW5zZXJ0QmVmb3JlKG1fY2hpbGQsIG1fcmVmQ2hpbGQuZ2V0KCks
IGVjKTsKK30KKwordm9pZCBOb2RlUmVtb3ZpbmdET01UcmFuc2FjdGlvblN0ZXA6OnJlYXBwbHko
KQoreworICAgIGlmIChtX2NoaWxkICYmIG1fY2hpbGQtPnBhcmVudE5vZGUoKSAhPSBtX25vZGUu
Z2V0KCkpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAobV9yZWZDaGlsZCAmJiBtX3JlZkNoaWxk
LT5wYXJlbnROb2RlKCkgIT0gbV9ub2RlLmdldCgpKQorICAgICAgICByZXR1cm47CisgICAgaWYg
KG1fcmVmQ2hpbGQgJiYgbV9yZWZDaGlsZC0+cHJldmlvdXNTaWJsaW5nKCkgIT0gbV9jaGlsZC5n
ZXQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIEV4Y2VwdGlvbkNvZGUgZWM7CisgICAg
bV9ub2RlLT5yZW1vdmVDaGlsZChtX2NoaWxkLmdldCgpLCBlYyk7Cit9CisKK0RhdGFSZXBsYWNp
bmdET01UcmFuc2FjdGlvblN0ZXA6OkRhdGFSZXBsYWNpbmdET01UcmFuc2FjdGlvblN0ZXAoQ2hh
cmFjdGVyRGF0YSogbm9kZSwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBjb3VudCwgY29uc3Qg
U3RyaW5nJiBkYXRhLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkRGF0YSkKKyAgICA6IG1fbm9kZShu
b2RlKQorICAgICwgbV9vZmZzZXQob2Zmc2V0KQorICAgICwgbV9jb3VudChjb3VudCkKKyAgICAs
IG1fZGF0YShkYXRhKQorICAgICwgbV9yZXBsYWNlZERhdGEocmVwbGFjZWREYXRhKQoreworfQor
CitQYXNzUmVmUHRyPERhdGFSZXBsYWNpbmdET01UcmFuc2FjdGlvblN0ZXA+IERhdGFSZXBsYWNp
bmdET01UcmFuc2FjdGlvblN0ZXA6OmNyZWF0ZShDaGFyYWN0ZXJEYXRhKiBub2RlLCB1bnNpZ25l
ZCBvZmZzZXQsIHVuc2lnbmVkIGNvdW50LCBjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFN0cmlu
ZyYgcmVwbGFjZWREYXRhKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgRGF0YVJlcGxhY2lu
Z0RPTVRyYW5zYWN0aW9uU3RlcChub2RlLCBvZmZzZXQsIGNvdW50LCBkYXRhLCByZXBsYWNlZERh
dGEpKTsKK30KKwordm9pZCBEYXRhUmVwbGFjaW5nRE9NVHJhbnNhY3Rpb25TdGVwOjp1bmFwcGx5
KCkKK3sKKyAgICBpZiAobV9ub2RlLT5sZW5ndGgoKSA8IG1fb2Zmc2V0KQorICAgICAgICByZXR1
cm47CisgICAgCisgICAgRXhjZXB0aW9uQ29kZSBlYzsKKyAgICBtX25vZGUtPnJlcGxhY2VEYXRh
KG1fb2Zmc2V0LCBtX2RhdGEubGVuZ3RoKCksIG1fcmVwbGFjZWREYXRhLCBlYyk7Cit9CisKK3Zv
aWQgRGF0YVJlcGxhY2luZ0RPTVRyYW5zYWN0aW9uU3RlcDo6cmVhcHBseSgpCit7CisgICAgaWYg
KG1fbm9kZS0+bGVuZ3RoKCkgPCBtX29mZnNldCkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAg
IEV4Y2VwdGlvbkNvZGUgZWM7CisgICAgbV9ub2RlLT5yZXBsYWNlRGF0YShtX29mZnNldCwgbV9j
b3VudCwgbV9kYXRhLCBlYyk7Cit9CisKK0F0dHJDaGFuZ2luZ0RPTVRyYW5zYWN0aW9uU3RlcDo6
QXR0ckNoYW5naW5nRE9NVHJhbnNhY3Rpb25TdGVwKEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFF1
YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgb2xkVmFsdWUsIGNvbnN0IEF0
b21pY1N0cmluZyYgbmV3VmFsdWUpCisgICAgOiBtX2VsZW1lbnQoZWxlbWVudCkKKyAgICAsIG1f
bmFtZShuYW1lKQorICAgICwgbV9vbGRWYWx1ZShvbGRWYWx1ZSkKKyAgICAsIG1fbmV3VmFsdWUo
bmV3VmFsdWUpCit7Cit9CisKK1Bhc3NSZWZQdHI8QXR0ckNoYW5naW5nRE9NVHJhbnNhY3Rpb25T
dGVwPiBBdHRyQ2hhbmdpbmdET01UcmFuc2FjdGlvblN0ZXA6OmNyZWF0ZShFbGVtZW50KiBlbGVt
ZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIG9sZFZh
bHVlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVlKQoreworICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgQXR0ckNoYW5naW5nRE9NVHJhbnNhY3Rpb25TdGVwKGVsZW1lbnQsIG5hbWUsIG9sZFZh
bHVlLCBuZXdWYWx1ZSkpOworfQorCit2b2lkIEF0dHJDaGFuZ2luZ0RPTVRyYW5zYWN0aW9uU3Rl
cDo6dW5hcHBseSgpCit7CisgICAgbV9lbGVtZW50LT5zZXRBdHRyaWJ1dGUobV9uYW1lLCBtX29s
ZFZhbHVlKTsKK30KKwordm9pZCBBdHRyQ2hhbmdpbmdET01UcmFuc2FjdGlvblN0ZXA6OnJlYXBw
bHkoKQoreworICAgIG1fZWxlbWVudC0+c2V0QXR0cmlidXRlKG1fbmFtZSwgbV9uZXdWYWx1ZSk7
Cit9CisKK30KKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RPTVRyYW5z
YWN0aW9uU3RlcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRE9NVHJh
bnNhY3Rpb25TdGVwLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RP
TVRyYW5zYWN0aW9uU3RlcC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExNCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBHT09HTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgR09PR0xFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICog
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIERPTVRyYW5zYWN0aW9uU3RlcF9oCisjZGVmaW5lIERPTVRyYW5zYWN0aW9uU3RlcF9o
CisKKyNpZiBFTkFCTEUoVU5ET19NQU5BR0VSKQorCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcu
aCIKKyNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBDaGFyYWN0ZXJEYXRhOworY2xhc3MgRWxlbWVudDsKK2NsYXNzIE5vZGU7CisKK2Ns
YXNzIERPTVRyYW5zYWN0aW9uU3RlcCA6IHB1YmxpYyBSZWZDb3VudGVkPERPTVRyYW5zYWN0aW9u
U3RlcD4geworcHVibGljOgorICAgIHZpcnR1YWwgfkRPTVRyYW5zYWN0aW9uU3RlcCgpIHsgfQor
CisgICAgdmlydHVhbCB2b2lkIHVuYXBwbHkoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlYXBw
bHkoKSA9IDA7Cit9OworCitjbGFzcyBOb2RlSW5zZXJ0aW5nRE9NVHJhbnNhY3Rpb25TdGVwIDog
cHVibGljIERPTVRyYW5zYWN0aW9uU3RlcCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8Tm9kZUluc2VydGluZ0RPTVRyYW5zYWN0aW9uU3RlcD4gY3JlYXRlKE5vZGUqLCBOb2RlKiBj
aGlsZCk7CisgICAgdmlydHVhbCB2b2lkIHVuYXBwbHkoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgcmVhcHBseSgpIE9WRVJSSURFOworCitwcml2YXRlOgorICAgIE5vZGVJbnNlcnRpbmdE
T01UcmFuc2FjdGlvblN0ZXAoTm9kZSosIE5vZGUqIGNoaWxkKTsKKyAgICAKKyAgICBSZWZQdHI8
Tm9kZT4gbV9ub2RlOworICAgIFJlZlB0cjxOb2RlPiBtX3JlZkNoaWxkOworICAgIFJlZlB0cjxO
b2RlPiBtX2NoaWxkOworfTsKKworY2xhc3MgTm9kZVJlbW92aW5nRE9NVHJhbnNhY3Rpb25TdGVw
IDogcHVibGljIERPTVRyYW5zYWN0aW9uU3RlcCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8Tm9kZVJlbW92aW5nRE9NVHJhbnNhY3Rpb25TdGVwPiBjcmVhdGUoTm9kZSosIE5vZGUq
IGNoaWxkKTsKKyAgICB2aXJ0dWFsIHZvaWQgdW5hcHBseSgpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCByZWFwcGx5KCkgT1ZFUlJJREU7CisgICAgCitwcml2YXRlOgorICAgIE5vZGVSZW1v
dmluZ0RPTVRyYW5zYWN0aW9uU3RlcChOb2RlKiwgTm9kZSogY2hpbGQpOworICAgIAorICAgIFJl
ZlB0cjxOb2RlPiBtX25vZGU7CisgICAgUmVmUHRyPE5vZGU+IG1fcmVmQ2hpbGQ7CisgICAgUmVm
UHRyPE5vZGU+IG1fY2hpbGQ7Cit9OworCitjbGFzcyBEYXRhUmVwbGFjaW5nRE9NVHJhbnNhY3Rp
b25TdGVwIDogcHVibGljIERPTVRyYW5zYWN0aW9uU3RlcCB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8RGF0YVJlcGxhY2luZ0RPTVRyYW5zYWN0aW9uU3RlcD4gY3JlYXRlKENoYXJh
Y3RlckRhdGEqLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGNvdW50LCBjb25zdCBTdHJpbmcm
IGRhdGEsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWREYXRhKTsKKyAgICB2aXJ0dWFsIHZvaWQgdW5h
cHBseSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZWFwcGx5KCkgT1ZFUlJJREU7Cisg
ICAgCitwcml2YXRlOgorICAgIERhdGFSZXBsYWNpbmdET01UcmFuc2FjdGlvblN0ZXAoQ2hhcmFj
dGVyRGF0YSosIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgY291bnQsIGNvbnN0IFN0cmluZyYg
ZGF0YSwgY29uc3QgU3RyaW5nJiByZXBsYWNlZERhdGEpOworICAgIAorICAgIFJlZlB0cjxDaGFy
YWN0ZXJEYXRhPiBtX25vZGU7CisgICAgdW5zaWduZWQgbV9vZmZzZXQ7CisgICAgdW5zaWduZWQg
bV9jb3VudDsKKyAgICBTdHJpbmcgbV9kYXRhOworICAgIFN0cmluZyBtX3JlcGxhY2VkRGF0YTsK
K307CisKK2NsYXNzIEF0dHJDaGFuZ2luZ0RPTVRyYW5zYWN0aW9uU3RlcCA6IHB1YmxpYyBET01U
cmFuc2FjdGlvblN0ZXAgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEF0dHJDaGFu
Z2luZ0RPTVRyYW5zYWN0aW9uU3RlcD4gY3JlYXRlKEVsZW1lbnQqLCBjb25zdCBRdWFsaWZpZWRO
YW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBu
ZXdWYWx1ZSk7CisgICAgdmlydHVhbCB2b2lkIHVuYXBwbHkoKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgcmVhcHBseSgpIE9WRVJSSURFOworICAgIAorcHJpdmF0ZToKKyAgICBBdHRyQ2hh
bmdpbmdET01UcmFuc2FjdGlvblN0ZXAoRWxlbWVudCosIGNvbnN0IFF1YWxpZmllZE5hbWUmLCBj
b25zdCBBdG9taWNTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVl
KTsKKyAgICAKKyAgICBSZWZQdHI8RWxlbWVudD4gbV9lbGVtZW50OworICAgIFF1YWxpZmllZE5h
bWUgbV9uYW1lOworICAgIEF0b21pY1N0cmluZyBtX29sZFZhbHVlOworICAgIEF0b21pY1N0cmlu
ZyBtX25ld1ZhbHVlOworfTsKKworfQorCisjZW5kaWYKKworI2VuZGlmCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1VuZG9NYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1VuZG9NYW5hZ2VyLmNwcAkocmV2aXNpb24gMTI2MTE2KQorKysgU291cmNl
L1dlYkNvcmUvZWRpdGluZy9VbmRvTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDEx
ICszMywxMiBAQAogCiAjaWYgRU5BQkxFKFVORE9fTUFOQUdFUikKIAotI2luY2x1ZGUgIkRPTVRy
YW5zYWN0aW9uLmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKK0RPTVRyYW5zYWN0aW9uKiBVbmRvTWFuYWdlcjo6c19yZWNvcmRpbmdET01UcmFuc2FjdGlv
biA9IDA7CisKIFBhc3NSZWZQdHI8VW5kb01hbmFnZXI+IFVuZG9NYW5hZ2VyOjpjcmVhdGUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgTm9kZSogaG9zdCkKIHsKICAgICBSZWZQdHI8
VW5kb01hbmFnZXI+IHVuZG9NYW5hZ2VyID0gYWRvcHRSZWYobmV3IFVuZG9NYW5hZ2VyKGNvbnRl
eHQsIGhvc3QpKTsKQEAgLTIxMyw2ICsyMTQsMjIgQEAgYm9vbCBVbmRvTWFuYWdlcjo6aXNDb25u
ZWN0ZWQoKQogICAgIHJldHVybiB0cnVlOwogfQogCitib29sIFVuZG9NYW5hZ2VyOjppc1JlY29y
ZGluZ0F1dG9tYXRpY1RyYW5zYWN0aW9uKE5vZGUqIG5vZGUpCit7CisgICAgaWYgKCFzX3JlY29y
ZGluZ0RPTVRyYW5zYWN0aW9uIHx8ICFzX3JlY29yZGluZ0RPTVRyYW5zYWN0aW9uLT51bmRvTWFu
YWdlcigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgTm9kZSogaG9zdCA9IHNfcmVjb3Jk
aW5nRE9NVHJhbnNhY3Rpb24tPnVuZG9NYW5hZ2VyKCktPnVuZG9TY29wZUhvc3QoKTsKKyAgICBp
ZiAoIWhvc3QpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gaG9zdC0+Y29udGFp
bnMobm9kZSk7Cit9CisKK3ZvaWQgVW5kb01hbmFnZXI6OmFkZFRyYW5zYWN0aW9uU3RlcChQYXNz
UmVmUHRyPERPTVRyYW5zYWN0aW9uU3RlcD4gc3RlcCkKK3sKKyAgICBBU1NFUlQoc19yZWNvcmRp
bmdET01UcmFuc2FjdGlvbik7CisgICAgc19yZWNvcmRpbmdET01UcmFuc2FjdGlvbi0+YWRkVHJh
bnNhY3Rpb25TdGVwKHN0ZXApOworfQorCiB9CiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNv
cmUvZWRpdGluZy9VbmRvTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVW5kb01hbmFnZXIuaAkocmV2aXNpb24gMTI2MTE2KQorKysgU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9VbmRvTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiAj
aWYgRU5BQkxFKFVORE9fTUFOQUdFUikKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgor
I2luY2x1ZGUgIkRPTVRyYW5zYWN0aW9uLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZVBsYWNl
aG9sZGVyLmgiCiAjaW5jbHVkZSAiVW5kb1N0ZXAuaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+
CkBAIC00NSw3ICs0Niw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRE9NVHJh
bnNhY3Rpb247CiBjbGFzcyBOb2RlOwogCiB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8VW5kb1N0ZXA+
ID4gVW5kb01hbmFnZXJFbnRyeTsKQEAgLTc4LDYgKzc4LDEwIEBAIHB1YmxpYzoKICAgICBOb2Rl
KiB1bmRvU2NvcGVIb3N0KCkgY29uc3QgeyByZXR1cm4gbV91bmRvU2NvcGVIb3N0OyB9CiAgICAg
Tm9kZSogb3duZXJOb2RlKCkgY29uc3QgeyByZXR1cm4gbV91bmRvU2NvcGVIb3N0OyB9CiAKKyAg
ICBzdGF0aWMgdm9pZCBzZXRSZWNvcmRpbmdET01UcmFuc2FjdGlvbihET01UcmFuc2FjdGlvbiog
dHJhbnNhY3Rpb24pIHsgc19yZWNvcmRpbmdET01UcmFuc2FjdGlvbiA9IHRyYW5zYWN0aW9uOyB9
CisgICAgc3RhdGljIGJvb2wgaXNSZWNvcmRpbmdBdXRvbWF0aWNUcmFuc2FjdGlvbihOb2RlKik7
CisgICAgc3RhdGljIHZvaWQgYWRkVHJhbnNhY3Rpb25TdGVwKFBhc3NSZWZQdHI8RE9NVHJhbnNh
Y3Rpb25TdGVwPik7CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgVW5kb01hbmFnZXIoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIE5vZGUqIGhvc3QpOwogICAgIGJvb2wgaXNDb25uZWN0ZWQoKTsK
QEAgLTg3LDYgKzkxLDggQEAgcHJpdmF0ZToKICAgICBVbmRvTWFuYWdlclN0YWNrIG1fcmVkb1N0
YWNrOwogICAgIGJvb2wgbV9pc0luUHJvZ3Jlc3M7CiAgICAgT3duUHRyPFVuZG9NYW5hZ2VyRW50
cnk+IG1faW5Qcm9ncmVzc0VudHJ5OworCisgICAgc3RhdGljIERPTVRyYW5zYWN0aW9uKiBzX3Jl
Y29yZGluZ0RPTVRyYW5zYWN0aW9uOwogfTsKICAgICAKIH0KSW5kZXg6IExheW91dFRlc3RzL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEy
NjExNikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDE3IEBACisyMDEyLTA4LTE3ICBTdWtvbHNhayBTYWtzaHV3b25nICA8c3Vrb2xzYWtAZ29vZ2xl
LmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgVW5kb01hbmFnZXIncyBhdXRvbWF0aWMgRE9NIHRy
YW5zYWN0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTE4MTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIGVkaXRpbmcvdW5kb21hbmFnZXIvYXV0b21hdGljLXRyYW5zYWN0aW9uLWF0dHJpYnV0ZS1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvdW5kb21hbmFnZXIvYXV0b21h
dGljLXRyYW5zYWN0aW9uLWF0dHJpYnV0ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5n
L3VuZG9tYW5hZ2VyL2F1dG9tYXRpYy10cmFuc2FjdGlvbi1kYXRhLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZWRpdGluZy91bmRvbWFuYWdlci9hdXRvbWF0aWMtdHJhbnNhY3Rpb24t
ZGF0YS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3VuZG9tYW5hZ2VyL2F1dG9tYXRp
Yy10cmFuc2FjdGlvbi1ub2RlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGlu
Zy91bmRvbWFuYWdlci9hdXRvbWF0aWMtdHJhbnNhY3Rpb24tbm9kZS5odG1sOiBBZGRlZC4KKwog
MjAxMi0wOC0yMCAgTGV2aSBXZWludHJhdWIgIDxsZXZpd0BjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgW1N1Yi1waXhlbCBMYXlvdXRdIEJsb2NrIHNlbGVjdGlvbiBnYXAgcmVwYWludGluZyBjYW4g
bGVhdmUgb25lIHBpeGVsIGdhcHMKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFn
ZXIvYXV0b21hdGljLXRyYW5zYWN0aW9uLWF0dHJpYnV0ZS1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvbWFuYWdlci9hdXRvbWF0aWMtdHJhbnNhY3Rp
b24tYXR0cmlidXRlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Vk
aXRpbmcvdW5kb21hbmFnZXIvYXV0b21hdGljLXRyYW5zYWN0aW9uLWF0dHJpYnV0ZS1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTUgQEAKK1RoaXMgdGVzdHMgdGhhdCBVbmRv
TWFuYWdlciBjb3JyZWN0bHkgcmV2ZXJ0cy9yZWFwcGxpZXMgYXV0b21hdGljIERPTSB0cmFuc2Fj
dGlvbnMgb24gYXR0cmlidXRlIGNoYW5nZXMuIFdlIHN0YXJ0IHdpdGggYSBzcGFuIHRoYXQgaGFz
IGJsdWUgYm9yZGVyIGFuZCBkb2Vzbid0IGhhdmUgdGl0bGUgb3IgY29udGVudGVkaXRhYmxlIGF0
dHJpYnV0ZXMuIAorCitQQVNTIHRyYW5zYWN0IDE6IHNldCB0aXRsZSB0byAidGVzdCIgCitQQVNT
IHRyYW5zYWN0IDI6IHNldCBjb250ZW50ZWRpdGFibGUgdG8gInRydWUiIAorUEFTUyB0cmFuc2Fj
dCAzOiBzZXQgYm9yZGVyIGNvbG9yIHRvIHJlZCAKK1BBU1MgdHJhbnNhY3QgNDogcmVtb3ZlIGF0
dHJpYnV0ZSB0aXRsZSAKK1BBU1MgdW5kbyA0OiB0aXRsZSBpcyBiYWNrIHRvICJ0ZXN0IiAKK1BB
U1MgdW5kbyAzOiBib3JkZXIgY29sb3IgaXMgYmFjayB0byBibHVlIAorUEFTUyB1bmRvIDI6IGNv
bnRlbnRlZGl0YWJsZSBpcyBiYWNrIHRvICJpbmhlcml0IiAKK1BBU1MgdW5kbyAxOiB0aXRsZSBp
cyBiYWNrIHRvIGFuIGVtcHR5IHN0cmluZyAKK1BBU1MgcmVkbyAxOiB0aXRsZSBpcyAidGVzdCIg
YWdhaW4gCitQQVNTIHJlZG8gMjogY29udGVudEVkaXRhYmxlIGlzICJ0cnVlIiBhZ2FpbiAKK1BB
U1MgcmVkbyAzOiBib3JkZXIgY29sb3IgaXMgcmVkIGFnYWluIAorUEFTUyByZWRvIDQ6IHRpdGxl
IGlzIGFuIGVtcHR5IHN0cmluZyBhZ2FpbiAKKwpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy91
bmRvbWFuYWdlci9hdXRvbWF0aWMtdHJhbnNhY3Rpb24tYXR0cmlidXRlLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvbWFuYWdlci9hdXRvbWF0aWMtdHJhbnNhY3Rp
b24tYXR0cmlidXRlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3Vu
ZG9tYW5hZ2VyL2F1dG9tYXRpYy10cmFuc2FjdGlvbi1hdHRyaWJ1dGUuaHRtbAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw4NyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHRp
dGxlPmF1dG9tYXRpYyB0cmFuc2FjdGlvbiBvbiBhdHRyaWJ1dGVzPC90aXRsZT4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KK1RoaXMgdGVzdHMgdGhhdCBVbmRvTWFuYWdlciBjb3JyZWN0bHkgcmV2ZXJ0
cy9yZWFwcGxpZXMgYXV0b21hdGljIERPTSB0cmFuc2FjdGlvbnMKK29uIGF0dHJpYnV0ZSBjaGFu
Z2VzLiBXZSBzdGFydCB3aXRoIGEgc3BhbiB0aGF0IGhhcyBibHVlIGJvcmRlciBhbmQgZG9lc24n
dCBoYXZlIHRpdGxlCitvciBjb250ZW50ZWRpdGFibGUgYXR0cmlidXRlcy4KKworPHNwYW4gaWQ9
InNwYW4iIHN0eWxlPSJib3JkZXI6IDFweCBibHVlIHNvbGlkIj48L3NwYW4+Cis8c2NyaXB0Pgor
dmFyIHVuZG9NYW5hZ2VyID0gZG9jdW1lbnQudW5kb01hbmFnZXI7Cit2YXIgc3BhbiA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJzcGFuIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgdW5k
b01hbmFnZXIudHJhbnNhY3QoeworICAgICAgICAiZXhlY3V0ZUF1dG9tYXRpYyI6IGZ1bmN0aW9u
KCkgeyBzcGFuLnRpdGxlID0gInRlc3QiOyB9CisgICAgfSk7CisgICAgYXNzZXJ0X2VxdWFscyhz
cGFuLnRpdGxlLCAidGVzdCIpOworfSwgInRyYW5zYWN0IDE6IHNldCB0aXRsZSB0byBcInRlc3Rc
IiIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIHVuZG9NYW5hZ2VyLnRyYW5zYWN0KHsKKyAg
ICAgICAgImV4ZWN1dGVBdXRvbWF0aWMiOiBmdW5jdGlvbigpIHsgc3Bhbi5zZXRBdHRyaWJ1dGUo
ImNvbnRlbnRlZGl0YWJsZSIsICJ0cnVlIik7IH0KKyAgICB9KTsKKyAgICBhc3NlcnRfZXF1YWxz
KHNwYW4uY29udGVudEVkaXRhYmxlLCAidHJ1ZSIpOworfSwgInRyYW5zYWN0IDI6IHNldCBjb250
ZW50ZWRpdGFibGUgdG8gXCJ0cnVlXCIiKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICB1bmRv
TWFuYWdlci50cmFuc2FjdCh7CisgICAgICAgICJleGVjdXRlQXV0b21hdGljIjogZnVuY3Rpb24o
KSB7IHNwYW4uc3R5bGUuY3NzVGV4dCA9ICJib3JkZXI6IDFweCByZWQgc29saWQiOyB9CisgICAg
fSk7CisgICAgYXNzZXJ0X2VxdWFscyhzcGFuLnN0eWxlLmJvcmRlckNvbG9yLCAicmVkIik7Cit9
LCAidHJhbnNhY3QgMzogc2V0IGJvcmRlciBjb2xvciB0byByZWQiKTsKKwordGVzdChmdW5jdGlv
bigpIHsKKyAgICB1bmRvTWFuYWdlci50cmFuc2FjdCh7CisgICAgICAgICJleGVjdXRlQXV0b21h
dGljIjogZnVuY3Rpb24oKSB7IHNwYW4ucmVtb3ZlQXR0cmlidXRlKCJ0aXRsZSIpOyB9CisgICAg
fSk7CisgICAgYXNzZXJ0X2VxdWFscyhzcGFuLnRpdGxlLCAiIik7Cit9LCAidHJhbnNhY3QgNDog
cmVtb3ZlIGF0dHJpYnV0ZSB0aXRsZSIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIHVuZG9N
YW5hZ2VyLnVuZG8oKTsKKyAgICBhc3NlcnRfZXF1YWxzKHNwYW4udGl0bGUsICJ0ZXN0Iik7Cit9
LCAidW5kbyA0OiB0aXRsZSBpcyBiYWNrIHRvIFwidGVzdFwiIik7CisKK3Rlc3QoZnVuY3Rpb24o
KSB7CisgICAgdW5kb01hbmFnZXIudW5kbygpOworICAgIGFzc2VydF9lcXVhbHMoc3Bhbi5zdHls
ZS5ib3JkZXJDb2xvciwgImJsdWUiKTsKK30sICJ1bmRvIDM6IGJvcmRlciBjb2xvciBpcyBiYWNr
IHRvIGJsdWUiKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICB1bmRvTWFuYWdlci51bmRvKCk7
CisgICAgYXNzZXJ0X2VxdWFscyhzcGFuLmNvbnRlbnRFZGl0YWJsZSwgImluaGVyaXQiKTsKK30s
ICJ1bmRvIDI6IGNvbnRlbnRlZGl0YWJsZSBpcyBiYWNrIHRvIFwiaW5oZXJpdFwiIik7CisKK3Rl
c3QoZnVuY3Rpb24oKSB7CisgICAgdW5kb01hbmFnZXIudW5kbygpOworICAgIGFzc2VydF9lcXVh
bHMoc3Bhbi50aXRsZSwgIiIpOworfSwgInVuZG8gMTogdGl0bGUgaXMgYmFjayB0byBhbiBlbXB0
eSBzdHJpbmciKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICB1bmRvTWFuYWdlci5yZWRvKCk7
CisgICAgYXNzZXJ0X2VxdWFscyhzcGFuLnRpdGxlLCAidGVzdCIpOworfSwgInJlZG8gMTogdGl0
bGUgaXMgXCJ0ZXN0XCIgYWdhaW4iKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICB1bmRvTWFu
YWdlci5yZWRvKCk7CisgICAgYXNzZXJ0X2VxdWFscyhzcGFuLmNvbnRlbnRFZGl0YWJsZSwgInRy
dWUiKTsKK30sICJyZWRvIDI6IGNvbnRlbnRFZGl0YWJsZSBpcyBcInRydWVcIiBhZ2FpbiIpOwor
Cit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIHVuZG9NYW5hZ2VyLnJlZG8oKTsKKyAgICBhc3NlcnRf
ZXF1YWxzKHNwYW4uc3R5bGUuYm9yZGVyQ29sb3IsICJyZWQiKTsKK30sICJyZWRvIDM6IGJvcmRl
ciBjb2xvciBpcyByZWQgYWdhaW4iKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICB1bmRvTWFu
YWdlci5yZWRvKCk7CisgICAgYXNzZXJ0X2VxdWFscyhzcGFuLnRpdGxlLCAiIik7Cit9LCAicmVk
byA0OiB0aXRsZSBpcyBhbiBlbXB0eSBzdHJpbmcgYWdhaW4iKTsKKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvbWFuYWdlci9hdXRvbWF0
aWMtdHJhbnNhY3Rpb24tZGF0YS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZWRpdGluZy91bmRvbWFuYWdlci9hdXRvbWF0aWMtdHJhbnNhY3Rpb24tZGF0YS1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2VyL2F1
dG9tYXRpYy10cmFuc2FjdGlvbi1kYXRhLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw5IEBACitUaGlzIHRlc3RzIHRoYXQgVW5kb01hbmFnZXIgY29ycmVjdGx5IHJldmVydHMv
cmVhcHBsaWVzIGF1dG9tYXRpYyBET00gdHJhbnNhY3Rpb25zIG9uIG5vZGUgZGF0YS4KKworUEFT
UyBTdGFydGVkIHdpdGggMTIzNDU2Nzg5LiBUcmFuc2FjdGVkIHJlcGxhY2VEYXRhKDMsIDMsICdh
YmNkJykuIEdvdCAxMjNhYmNkNzg5IAorUEFTUyB1bmRvTWFuYWdlci51bmRvKCkuIEdvdCAxMjM0
NTY3ODkgCitQQVNTIHVuZG9NYW5hZ2VyLnJlZG8oKS4gR290IDEyM2FiY2Q3ODkgCitQQVNTIFN0
YXJ0ZWQgd2l0aCAxMjM0LiBUcmFuc2FjdGVkIHJlcGxhY2VEYXRhKDIsIDEwLCAnYScpLiBHb3Qg
MTJhIAorUEFTUyB1bmRvTWFuYWdlci51bmRvKCkuIEdvdCAxMjM0IAorUEFTUyB1bmRvTWFuYWdl
ci5yZWRvKCkuIEdvdCAxMmEgCisKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFn
ZXIvYXV0b21hdGljLXRyYW5zYWN0aW9uLWRhdGEuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2VyL2F1dG9tYXRpYy10cmFuc2FjdGlvbi1kYXRhLmh0bWwJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2VyL2F1dG9tYXRp
Yy10cmFuc2FjdGlvbi1kYXRhLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTYgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5hdXRvbWF0aWMgdHJhbnNhY3Rp
b24gb24gbm9kZSBkYXRhPC90aXRsZT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVz
dGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0
aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KK1RoaXMgdGVzdHMg
dGhhdCBVbmRvTWFuYWdlciBjb3JyZWN0bHkgcmV2ZXJ0cy9yZWFwcGxpZXMgYXV0b21hdGljIERP
TSB0cmFuc2FjdGlvbnMKK29uIG5vZGUgZGF0YS4KKworPGRpdiBpZD0iZGl2Ij48L2Rpdj4KKzxz
Y3JpcHQ+Cit2YXIgdW5kb01hbmFnZXIgPSBkb2N1bWVudC51bmRvTWFuYWdlcjsKK3ZhciBkaXYg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGl2Iik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisJ
ZGl2LmlubmVyVGV4dCA9ICIxMjM0NTY3ODkiOworICAgIHVuZG9NYW5hZ2VyLnRyYW5zYWN0KHsK
KyAgICAgICAgImV4ZWN1dGVBdXRvbWF0aWMiOiBmdW5jdGlvbigpIHsgZGl2LmZpcnN0Q2hpbGQu
cmVwbGFjZURhdGEoMywgMywgImFiY2QiKTsgfQorICAgIH0pOworICAgIGFzc2VydF9lcXVhbHMo
ZGl2LmlubmVyVGV4dCwgIjEyM2FiY2Q3ODkiKTsKK30sICJTdGFydGVkIHdpdGggMTIzNDU2Nzg5
LiBUcmFuc2FjdGVkIHJlcGxhY2VEYXRhKDMsIDMsICdhYmNkJykuIEdvdCAxMjNhYmNkNzg5Iik7
CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgdW5kb01hbmFnZXIudW5kbygpOworICAgIGFzc2Vy
dF9lcXVhbHMoZGl2LmlubmVyVGV4dCwgIjEyMzQ1Njc4OSIpOworfSwgInVuZG9NYW5hZ2VyLnVu
ZG8oKS4gR290IDEyMzQ1Njc4OSIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIHVuZG9NYW5h
Z2VyLnJlZG8oKTsKKyAgICBhc3NlcnRfZXF1YWxzKGRpdi5pbm5lclRleHQsICIxMjNhYmNkNzg5
Iik7Cit9LCAidW5kb01hbmFnZXIucmVkbygpLiBHb3QgMTIzYWJjZDc4OSIpOworCit0ZXN0KGZ1
bmN0aW9uKCkgeworCWRpdi5pbm5lclRleHQgPSAiMTIzNCI7CisgICAgdW5kb01hbmFnZXIudHJh
bnNhY3QoeworICAgICAgICAiZXhlY3V0ZUF1dG9tYXRpYyI6IGZ1bmN0aW9uKCkgeyBkaXYuZmly
c3RDaGlsZC5yZXBsYWNlRGF0YSgyLCAxMCwgImEiKTsgfQorICAgIH0pOworICAgIGFzc2VydF9l
cXVhbHMoZGl2LmlubmVyVGV4dCwgIjEyYSIpOworfSwgIlN0YXJ0ZWQgd2l0aCAxMjM0LiBUcmFu
c2FjdGVkIHJlcGxhY2VEYXRhKDIsIDEwLCAnYScpLiBHb3QgMTJhIik7CisKK3Rlc3QoZnVuY3Rp
b24oKSB7CisgICAgdW5kb01hbmFnZXIudW5kbygpOworICAgIGFzc2VydF9lcXVhbHMoZGl2Lmlu
bmVyVGV4dCwgIjEyMzQiKTsKK30sICJ1bmRvTWFuYWdlci51bmRvKCkuIEdvdCAxMjM0Iik7CisK
K3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgdW5kb01hbmFnZXIucmVkbygpOworICAgIGFzc2VydF9l
cXVhbHMoZGl2LmlubmVyVGV4dCwgIjEyYSIpOworfSwgInVuZG9NYW5hZ2VyLnJlZG8oKS4gR290
IDEyYSIpOworCitkaXYuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvbWFuYWdlci9hdXRvbWF0
aWMtdHJhbnNhY3Rpb24tbm9kZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZWRpdGluZy91bmRvbWFuYWdlci9hdXRvbWF0aWMtdHJhbnNhY3Rpb24tbm9kZS1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2VyL2F1
dG9tYXRpYy10cmFuc2FjdGlvbi1ub2RlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwxMiBAQAorVGhpcyB0ZXN0cyB0aGF0IFVuZG9NYW5hZ2VyIGNvcnJlY3RseSByZXZlcnRz
L3JlYXBwbGllcyBhdXRvbWF0aWMgRE9NIHRyYW5zYWN0aW9ucyBvbiBub2RlIHN0cnVjdHVyYWwg
Y2hhbmdlLgorCitQQVNTIFVuZG9NYW5hZ2VyIGNhbGxlZCB0aGUgZnVuY3Rpb24gcmV0dXJuZWQg
YnkgZXhlY3V0ZUF1dG9tYXRpYy4gKGFwcGVuZENoaWxkKSAKK1BBU1MgVW5kb01hbmFnZXIgY2Fs
bGVkIHRoZSBmdW5jdGlvbiByZXR1cm5lZCBieSBleGVjdXRlQXV0b21hdGljLiAoaW5zZXJ0QmVm
b3JlKSAKK1BBU1MgVW5kb01hbmFnZXIgY2FsbGVkIHRoZSBmdW5jdGlvbiByZXR1cm5lZCBieSBl
eGVjdXRlQXV0b21hdGljLiAocmVtb3ZlQ2hpbGQpIAorUEFTUyBVbmRvTWFuYWdlciByZXZlcnRl
ZCB0aGUgY2hhbmdlIG1hZGUgYnkgcmVtb3ZlQ2hpbGQuIAorUEFTUyBVbmRvTWFuYWdlciByZXZl
cnRlZCB0aGUgY2hhbmdlIG1hZGUgYnkgaW5zZXJ0QmVmb3JlLiAKK1BBU1MgVW5kb01hbmFnZXIg
cmV2ZXJ0ZWQgdGhlIGNoYW5nZSBtYWRlIGJ5IGFwcGVuZENoaWxkLiAKK1BBU1MgVW5kb01hbmFn
ZXIgcmVhcHBsaWVkIHRoZSBjaGFuZ2UgbWFkZSBieSBhcHBlbmRDaGlsZC4gCitQQVNTIFVuZG9N
YW5hZ2VyIHJlYXBwbGllZCB0aGUgY2hhbmdlIG1hZGUgYnkgaW5zZXJ0QmVmb3JlLiAKK1BBU1Mg
VW5kb01hbmFnZXIgcmVhcHBsaWVkIHRoZSBjaGFuZ2UgbWFkZSBieSByZW1vdmVDaGlsZC4gCisK
SW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIvYXV0b21hdGljLXRyYW5zYWN0
aW9uLW5vZGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5h
Z2VyL2F1dG9tYXRpYy10cmFuc2FjdGlvbi1ub2RlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2VyL2F1dG9tYXRpYy10cmFuc2FjdGlvbi1ub2RlLmh0
bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzx0aXRsZT5hdXRvbWF0aWMgdHJhbnNhY3Rpb24gb24gbm9kZXM8L3RpdGxlPgor
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorVGhpcyB0ZXN0cyB0aGF0IFVuZG9NYW5hZ2VyIGNvcnJlY3Rs
eSByZXZlcnRzL3JlYXBwbGllcyBhdXRvbWF0aWMgRE9NIHRyYW5zYWN0aW9ucworb24gbm9kZSBz
dHJ1Y3R1cmFsIGNoYW5nZS4KKworPGRpdiBpZD0iZWRpdCI+PC9kaXY+Cis8c2NyaXB0PgordmFy
IGVkaXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZWRpdCIpOwordmFyIHVuZG9NYW5hZ2Vy
ID0gZG9jdW1lbnQudW5kb01hbmFnZXI7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgdW5kb01h
bmFnZXIudHJhbnNhY3QoeworICAgICAgICAiZXhlY3V0ZUF1dG9tYXRpYyI6IGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgdmFyIGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7Cisg
ICAgICAgICAgICBkLmlubmVyVGV4dCA9ICIxIjsKKyAgICAgICAgICAgIGVkaXQuYXBwZW5kQ2hp
bGQoZCk7CisgICAgICAgIH0KKyAgICB9KTsKKyAgICBhc3NlcnRfdHJ1ZShlZGl0LmlubmVySFRN
TCA9PSAiPHNwYW4+MTwvc3Bhbj4iKTsKK30sICJVbmRvTWFuYWdlciBjYWxsZWQgdGhlIGZ1bmN0
aW9uIHJldHVybmVkIGJ5IGV4ZWN1dGVBdXRvbWF0aWMuIChhcHBlbmRDaGlsZCkiKTsKKwordGVz
dChmdW5jdGlvbigpIHsKKyAgICB1bmRvTWFuYWdlci50cmFuc2FjdCh7CisgICAgICAgICJleGVj
dXRlQXV0b21hdGljIjogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB2YXIgZDIgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CisgICAgICAgICAgICBkMi5pbm5lckhUTUwgPSAiPGI+
MjwvYj4iOworICAgICAgICAgICAgZWRpdC5pbnNlcnRCZWZvcmUoZDIsIGVkaXQuZmlyc3RDaGls
ZCk7CisgICAgICAgIH0KKyAgICB9KTsKKyAgICBhc3NlcnRfdHJ1ZShlZGl0LmlubmVySFRNTCA9
PSAiPHNwYW4+PGI+MjwvYj48L3NwYW4+PHNwYW4+MTwvc3Bhbj4iKTsKK30sICJVbmRvTWFuYWdl
ciBjYWxsZWQgdGhlIGZ1bmN0aW9uIHJldHVybmVkIGJ5IGV4ZWN1dGVBdXRvbWF0aWMuIChpbnNl
cnRCZWZvcmUpIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgdW5kb01hbmFnZXIudHJhbnNh
Y3QoeworICAgICAgICAiZXhlY3V0ZUF1dG9tYXRpYyI6IGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgZWRpdC5yZW1vdmVDaGlsZChlZGl0Lmxhc3RDaGlsZCk7CisgICAgICAgIH0KKyAgICB9KTsK
KyAgICBhc3NlcnRfdHJ1ZShlZGl0LmlubmVySFRNTCA9PSAiPHNwYW4+PGI+MjwvYj48L3NwYW4+
Iik7Cit9LCAiVW5kb01hbmFnZXIgY2FsbGVkIHRoZSBmdW5jdGlvbiByZXR1cm5lZCBieSBleGVj
dXRlQXV0b21hdGljLiAocmVtb3ZlQ2hpbGQpIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAg
dW5kb01hbmFnZXIudW5kbygpOworICAgIGFzc2VydF90cnVlKGVkaXQuaW5uZXJIVE1MID09ICI8
c3Bhbj48Yj4yPC9iPjwvc3Bhbj48c3Bhbj4xPC9zcGFuPiIpOworfSwgIlVuZG9NYW5hZ2VyIHJl
dmVydGVkIHRoZSBjaGFuZ2UgbWFkZSBieSByZW1vdmVDaGlsZC4iKTsKKwordGVzdChmdW5jdGlv
bigpIHsKKyAgICB1bmRvTWFuYWdlci51bmRvKCk7CisgICAgYXNzZXJ0X3RydWUoZWRpdC5pbm5l
ckhUTUwgPT0gIjxzcGFuPjE8L3NwYW4+Iik7Cit9LCAiVW5kb01hbmFnZXIgcmV2ZXJ0ZWQgdGhl
IGNoYW5nZSBtYWRlIGJ5IGluc2VydEJlZm9yZS4iKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAg
ICB1bmRvTWFuYWdlci51bmRvKCk7CisgICAgYXNzZXJ0X3RydWUoZWRpdC5pbm5lckhUTUwgPT0g
IiIpOworfSwgIlVuZG9NYW5hZ2VyIHJldmVydGVkIHRoZSBjaGFuZ2UgbWFkZSBieSBhcHBlbmRD
aGlsZC4iKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICB1bmRvTWFuYWdlci5yZWRvKCk7Cisg
ICAgYXNzZXJ0X3RydWUoZWRpdC5pbm5lckhUTUwgPT0gIjxzcGFuPjE8L3NwYW4+Iik7Cit9LCAi
VW5kb01hbmFnZXIgcmVhcHBsaWVkIHRoZSBjaGFuZ2UgbWFkZSBieSBhcHBlbmRDaGlsZC4iKTsK
KwordGVzdChmdW5jdGlvbigpIHsKKyAgICB1bmRvTWFuYWdlci5yZWRvKCk7CisgICAgYXNzZXJ0
X3RydWUoZWRpdC5pbm5lckhUTUwgPT0gIjxzcGFuPjxiPjI8L2I+PC9zcGFuPjxzcGFuPjE8L3Nw
YW4+Iik7Cit9LCAiVW5kb01hbmFnZXIgcmVhcHBsaWVkIHRoZSBjaGFuZ2UgbWFkZSBieSBpbnNl
cnRCZWZvcmUuIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgdW5kb01hbmFnZXIucmVkbygp
OworICAgIGFzc2VydF90cnVlKGVkaXQuaW5uZXJIVE1MID09ICI8c3Bhbj48Yj4yPC9iPjwvc3Bh
bj4iKTsKK30sICJVbmRvTWFuYWdlciByZWFwcGxpZWQgdGhlIGNoYW5nZSBtYWRlIGJ5IHJlbW92
ZUNoaWxkLiIpOworCitlZGl0LnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7Cis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159628</attachid>
            <date>2012-08-21 00:00:59 -0700</date>
            <delta_ts>2012-08-21 00:12:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91812-20120821000303.patch</filename>
            <type>text/plain</type>
            <size>50214</size>
            <attacher name="Sukolsak Sakshuwong">sukolsak</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNjEzOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg1IEBACisyMDEyLTA4LTIwICBTdWtvbHNh
ayBTYWtzaHV3b25nICA8c3Vrb2xzYWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQg
VW5kb01hbmFnZXIncyBhdXRvbWF0aWMgRE9NIHRyYW5zYWN0aW9ucworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE4MTIKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMgYXV0
b21hdGljIERPTSB0cmFuc2FjdGlvbnMgaW4gVW5kb01hbmFnZXIKKyAgICAgICAgYnkgcmVjb3Jk
aW5nIGNoYW5nZXMgaW4gRE9NIHRyZWUgc3RydWN0dXJlLCBhdHRyaWJ1dGVzLCBhbmQgbm9kZSBk
YXRhCisgICAgICAgIG9mIG5vZGVzIHVuZGVyIHVuZG8gc2NvcGUgaG9zdC4KKworICAgICAgICBU
ZXN0czogZWRpdGluZy91bmRvbWFuYWdlci9hdXRvbWF0aWMtdHJhbnNhY3Rpb24tYXR0cmlidXRl
Lmh0bWwKKyAgICAgICAgICAgICAgIGVkaXRpbmcvdW5kb21hbmFnZXIvYXV0b21hdGljLXRyYW5z
YWN0aW9uLWRhdGEuaHRtbAorICAgICAgICAgICAgICAgZWRpdGluZy91bmRvbWFuYWdlci9hdXRv
bWF0aWMtdHJhbnNhY3Rpb24tbm9kZS5odG1sCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoK
KyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToK
KyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvRE9N
VHJhbnNhY3Rpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVRyYW5zYWN0aW9uOjphZGRUcmFu
c2FjdGlvblN0ZXApOgorICAgICAgICAoRE9NVHJhbnNhY3Rpb24pOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L0RPTVRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKERPTVRyYW5zYWN0aW9uU2NvcGUp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NVHJhbnNhY3Rpb25TY29wZTo6RE9NVHJhbnNhY3Rpb25T
Y29wZSk6CisgICAgICAgIChXZWJDb3JlOjpET01UcmFuc2FjdGlvblNjb3BlOjp+RE9NVHJhbnNh
Y3Rpb25TY29wZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVRy
YW5zYWN0aW9uOjphcHBseSk6CisgICAgICAgIChXZWJDb3JlOjpET01UcmFuc2FjdGlvbjo6dW5h
cHBseSk6CisgICAgICAgIChXZWJDb3JlOjpET01UcmFuc2FjdGlvbjo6cmVhcHBseSk6CisgICAg
ICAgICogYmluZGluZ3MvdjgvRE9NVHJhbnNhY3Rpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkRP
TVRyYW5zYWN0aW9uOjphZGRUcmFuc2FjdGlvblN0ZXApOgorICAgICAgICAoRE9NVHJhbnNhY3Rp
b24pOgorICAgICAgICAqIGNzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpzZXRDc3NU
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6
c2V0UHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6UHJvcGVydHlTZXRDU1NTdHlsZURlY2xh
cmF0aW9uOjpyZW1vdmVQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eVNldENT
U1N0eWxlRGVjbGFyYXRpb246OnNldFByb3BlcnR5SW50ZXJuYWwpOgorICAgICAgICAqIGRvbS9D
aGFyYWN0ZXJEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNoYXJhY3RlckRhdGE6OnNldERh
dGFBbmRVcGRhdGUpOgorICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OndpbGxSZW1vdmVDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjp3aWxsUmVtb3Zl
Q2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6dXBkYXRlVHJlZUFmdGVySW5zZXJ0aW9uKToK
KyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojp3
aWxsTW9kaWZ5QXR0cmlidXRlKToKKyAgICAgICAgKiBlZGl0aW5nL0RPTVRyYW5zYWN0aW9uU3Rl
cC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2Rl
SW5zZXJ0aW5nRE9NVHJhbnNhY3Rpb25TdGVwOjpOb2RlSW5zZXJ0aW5nRE9NVHJhbnNhY3Rpb25T
dGVwKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVJbnNlcnRpbmdET01UcmFuc2FjdGlvblN0ZXA6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlSW5zZXJ0aW5nRE9NVHJhbnNhY3Rpb25T
dGVwOjp1bmFwcGx5KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVJbnNlcnRpbmdET01UcmFuc2Fj
dGlvblN0ZXA6OnJlYXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbW92aW5nRE9NVHJh
bnNhY3Rpb25TdGVwOjpOb2RlUmVtb3ZpbmdET01UcmFuc2FjdGlvblN0ZXApOgorICAgICAgICAo
V2ViQ29yZTo6Tm9kZVJlbW92aW5nRE9NVHJhbnNhY3Rpb25TdGVwOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZVJlbW92aW5nRE9NVHJhbnNhY3Rpb25TdGVwOjp1bmFwcGx5KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5vZGVSZW1vdmluZ0RPTVRyYW5zYWN0aW9uU3RlcDo6cmVhcHBseSk6
CisgICAgICAgIChXZWJDb3JlOjpEYXRhUmVwbGFjaW5nRE9NVHJhbnNhY3Rpb25TdGVwOjpEYXRh
UmVwbGFjaW5nRE9NVHJhbnNhY3Rpb25TdGVwKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFSZXBs
YWNpbmdET01UcmFuc2FjdGlvblN0ZXA6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRh
UmVwbGFjaW5nRE9NVHJhbnNhY3Rpb25TdGVwOjp1bmFwcGx5KToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFSZXBsYWNpbmdET01UcmFuc2FjdGlvblN0ZXA6OnJlYXBwbHkpOgorICAgICAgICAoV2Vi
Q29yZTo6QXR0ckNoYW5naW5nRE9NVHJhbnNhY3Rpb25TdGVwOjpBdHRyQ2hhbmdpbmdET01UcmFu
c2FjdGlvblN0ZXApOgorICAgICAgICAoV2ViQ29yZTo6QXR0ckNoYW5naW5nRE9NVHJhbnNhY3Rp
b25TdGVwOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXR0ckNoYW5naW5nRE9NVHJhbnNh
Y3Rpb25TdGVwOjp1bmFwcGx5KToKKyAgICAgICAgKFdlYkNvcmU6OkF0dHJDaGFuZ2luZ0RPTVRy
YW5zYWN0aW9uU3RlcDo6cmVhcHBseSk6CisgICAgICAgICogZWRpdGluZy9ET01UcmFuc2FjdGlv
blN0ZXAuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKERPTVRyYW5zYWN0
aW9uU3RlcCk6CisgICAgICAgIChXZWJDb3JlOjpET01UcmFuc2FjdGlvblN0ZXA6On5ET01UcmFu
c2FjdGlvblN0ZXApOgorICAgICAgICAoTm9kZUluc2VydGluZ0RPTVRyYW5zYWN0aW9uU3RlcCk6
CisgICAgICAgIChOb2RlUmVtb3ZpbmdET01UcmFuc2FjdGlvblN0ZXApOgorICAgICAgICAoRGF0
YVJlcGxhY2luZ0RPTVRyYW5zYWN0aW9uU3RlcCk6CisgICAgICAgIChBdHRyQ2hhbmdpbmdET01U
cmFuc2FjdGlvblN0ZXApOgorICAgICAgICAqIGVkaXRpbmcvVW5kb01hbmFnZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpVbmRvTWFuYWdlcjo6aXNSZWNvcmRp
bmdBdXRvbWF0aWNUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpVbmRvTWFuYWdlcjo6
YWRkVHJhbnNhY3Rpb25TdGVwKToKKyAgICAgICAgKiBlZGl0aW5nL1VuZG9NYW5hZ2VyLmg6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjpzZXRSZWNv
cmRpbmdET01UcmFuc2FjdGlvbik6CisgICAgICAgIChVbmRvTWFuYWdlcik6CisKIDIwMTItMDgt
MjAgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtWOF0g
TW92ZSBoYW5kbGVPdXRPZk1lbW9yeSgpIGZyb20gVjhQcm94eSB0byBWOEJpbmRpbmcKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMjYxMzgpCisrKyBTb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTIxOCw2ICsxMjE4LDcgQEAgU0VUKFdl
YkNvcmVfU09VUkNFUwogICAgIGVkaXRpbmcvQnJlYWtCbG9ja3F1b3RlQ29tbWFuZC5jcHAKICAg
ICBlZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAogICAgIGVkaXRpbmcvQ3JlYXRlTGlu
a0NvbW1hbmQuY3BwCisgICAgZWRpdGluZy9ET01UcmFuc2FjdGlvblN0ZXAuY3BwCiAgICAgZWRp
dGluZy9EZWxldGVCdXR0b24uY3BwCiAgICAgZWRpdGluZy9EZWxldGVCdXR0b25Db250cm9sbGVy
LmNwcAogICAgIGVkaXRpbmcvRGVsZXRlRnJvbVRleHROb2RlQ29tbWFuZC5jcHAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTI2MTM4KQorKysgU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtMjkzOCw2ICsyOTM4
LDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RpY3Rh
dGlvbkFsdGVybmF0aXZlLmggXAogCVNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGljdGF0aW9uQ29t
bWFuZC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGljdGF0aW9uQ29tbWFuZC5oIFwK
KwlTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RPTVRyYW5zYWN0aW9uU3RlcC5jcHAgXAorCVNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRE9NVHJhbnNhY3Rpb25TdGVwLmggXAogCVNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdEFjdGlvbi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRDb21t
YW5kLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0Q29tbWFuZC5oIFwKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDEyNjEzOCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMjY0Miw2ICsyNjQyLDggQEAKICAgICAgICAgICAg
ICdlZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcCcsCiAgICAgICAgICAgICAnZWRpdGlu
Zy9DcmVhdGVMaW5rQ29tbWFuZC5jcHAnLAogICAgICAgICAgICAgJ2VkaXRpbmcvQ3JlYXRlTGlu
a0NvbW1hbmQuaCcsCisgICAgICAgICAgICAnZWRpdGluZy9ET01UcmFuc2FjdGlvblN0ZXAuY3Bw
JywKKyAgICAgICAgICAgICdlZGl0aW5nL0RPTVRyYW5zYWN0aW9uU3RlcC5oJywKICAgICAgICAg
ICAgICdlZGl0aW5nL0RlbGV0ZUJ1dHRvbi5jcHAnLAogICAgICAgICAgICAgJ2VkaXRpbmcvRGVs
ZXRlQnV0dG9uLmgnLAogICAgICAgICAgICAgJ2VkaXRpbmcvRGVsZXRlQnV0dG9uQ29udHJvbGxl
ci5jcHAnLApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2oJKHJldmlzaW9uIDEyNjEzOCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC01NTk5OSw2ICs1NTk5OSw2MiBAQAog
CQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxlZGl0aW5n
XERPTVRyYW5zYWN0aW9uU3RlcC5jcHAiCisJCQkJPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgor
CQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJ
CQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+
CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJ
TmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJ
CT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJ
CQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFt
ZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1
ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJ
CQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgor
CQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9t
QnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxl
clRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZp
Z3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWdfQWxsfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21C
dWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVy
VG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmln
dXJhdGlvbgorCQkJCQlOYW1lPSJQcm9kdWN0aW9ufFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21C
dWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVy
VG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJPC9GaWxlPgorCQkJ
PEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGVkaXRpbmdcRE9NVHJhbnNhY3Rpb25TdGVwLmgi
CisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGVkaXRp
bmdcRWRpdEFjdGlvbi5oIgogCQkJCT4KIAkJCTwvRmlsZT4KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEyNjEz
OCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtMTk2OCw2ICsxOTY4LDggQEAKIAkJN0I5MTg0RDMxNTc1OEU0MjAw
OTJBQTkzIC8qIFVuZG9NYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3QjkxODREMDE1NzU4RTQyMDA5MkFBOTMgLyogVW5kb01hbmFnZXIuaCAq
LzsgfTsKIAkJN0JCMzVBRUIxNUNDRERGNDAwRjJBNjQzIC8qIERPTVRyYW5zYWN0aW9uLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCQjM1QUU5MTVD
Q0RERjQwMEYyQTY0MyAvKiBET01UcmFuc2FjdGlvbi5jcHAgKi87IH07CiAJCTdCQjM1QUVDMTVD
Q0RERjQwMEYyQTY0MyAvKiBET01UcmFuc2FjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0JCMzVBRUExNUNDRERGNDAwRjJBNjQzIC8qIERPTVRy
YW5zYWN0aW9uLmggKi87IH07CisJCTdCRDExN0VCMTVCOERCMDEwMEM5NzRBMyAvKiBET01UcmFu
c2FjdGlvblN0ZXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0JEMTE3RTkxNUI4REIwMTAwQzk3NEEzIC8qIERPTVRyYW5zYWN0aW9uU3RlcC5jcHAg
Ki87IH07CisJCTdCRDExN0VDMTVCOERCMDEwMEM5NzRBMyAvKiBET01UcmFuc2FjdGlvblN0ZXAu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCRDExN0VB
MTVCOERCMDEwMEM5NzRBMyAvKiBET01UcmFuc2FjdGlvblN0ZXAuaCAqLzsgfTsKIAkJN0M1MjJE
NEIxNUI0NzdFODAwOUI3Qzk1IC8qIEluc3BlY3Rvck92ZXJsYXkuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M1MjJENDkxNUI0NzdFODAwOUI3Qzk1
IC8qIEluc3BlY3Rvck92ZXJsYXkuY3BwICovOyB9OwogCQk3RTMzQ0QwMTEyN0YzNDBEMDBCRThG
MTcgLyogUHVyZ2VQcmlvcml0eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0UzM0NEMDAxMjdGMzQwRDAwQkU4RjE3IC8qIFB1cmdlUHJpb3JpdHkuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3RTM3RUYy
RTEzMzkyMDg4MDBCMjkyNTAgLyogU3VicmVzb3VyY2VMb2FkZXJDRi5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTM3RUYyRDEzMzkyMDg4MDBCMjky
NTAgLyogU3VicmVzb3VyY2VMb2FkZXJDRi5jcHAgKi87IH07CkBAIC05MTQ1LDYgKzkxNDcsOCBA
QAogCQk3QjkxODREMTE1NzU4RTQyMDA5MkFBOTMgLyogVW5kb01hbmFnZXIuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFVuZG9NYW5hZ2VyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJN0JCMzVBRTkxNUNDRERGNDAwRjJBNjQzIC8qIERPTVRyYW5zYWN0aW9uLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTVRyYW5zYWN0aW9uLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JCMzVBRUExNUNDRERGNDAwRjJBNjQzIC8qIERP
TVRyYW5zYWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVRyYW5z
YWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCRDExN0U5MTVCOERCMDEw
MEM5NzRBMyAvKiBET01UcmFuc2FjdGlvblN0ZXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRE9NVHJhbnNhY3Rpb25TdGVwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJN0JEMTE3RUExNUI4REIwMTAwQzk3NEEzIC8qIERPTVRyYW5zYWN0aW9uU3Rl
cC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01UcmFuc2FjdGlvblN0ZXAu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M1MjJENDkxNUI0NzdFODAwOUI3Qzk1
IC8qIEluc3BlY3Rvck92ZXJsYXkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSW5zcGVjdG9yT3ZlcmxheS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTdDNTIyRDRBMTVCNDc4QjIwMDlCN0M5NSAvKiBJbnNwZWN0b3JPdmVybGF5LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3Rvck92ZXJsYXkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJN0M2MDEyODA2MDA3OEJCNzBFMzY3QTk1IC8qIEROU1Jlc29sdmVR
dWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBETlNSZXNvbHZl
UXVldWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTcxMDQsNiArMTcxMDgs
OCBAQAogCQkJCUNFQ0FERkM0MTUzNzc4RkYwMEUzNzA2OCAvKiBEaWN0YXRpb25Db21tYW5kLmNw
cCAqLywKIAkJCQlDRUNBREZDNTE1Mzc3OEZGMDBFMzcwNjggLyogRGljdGF0aW9uQ29tbWFuZC5o
ICovLAogCQkJCTdCOEMxRkU2MTVDQ0UzQzIwMDRCMzVEQyAvKiBET01UcmFuc2FjdGlvbi5pZGwg
Ki8sCisJCQkJN0JEMTE3RTkxNUI4REIwMTAwQzk3NEEzIC8qIERPTVRyYW5zYWN0aW9uU3RlcC5j
cHAgKi8sCisJCQkJN0JEMTE3RUExNUI4REIwMTAwQzk3NEEzIC8qIERPTVRyYW5zYWN0aW9uU3Rl
cC5oICovLAogCQkJCTkzMzA5RDkzMDk5RTY0OTEwMDU2RTU4MSAvKiBFZGl0QWN0aW9uLmggKi8s
CiAJCQkJOTMzMDlEOTQwOTlFNjQ5MTAwNTZFNTgxIC8qIEVkaXRDb21tYW5kLmNwcCAqLywKIAkJ
CQk5MzMwOUQ5NTA5OUU2NDkxMDA1NkU1ODEgLyogRWRpdENvbW1hbmQuaCAqLywKQEAgLTIzMTI5
LDYgKzIzMTM1LDcgQEAKIAkJCQkwNUZENjlFMDEyODQ1RDQzMDBCMkJFQjMgLyogRE9NVGltZVN0
YW1wLmggaW4gSGVhZGVycyAqLywKIAkJCQk3NkZDMkIwQzEyMzcwREEwMDA2QTk5MUEgLyogRE9N
VG9rZW5MaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk3QkIzNUFFQzE1Q0NEREY0MDBGMkE2NDMg
LyogRE9NVHJhbnNhY3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTdCRDExN0VDMTVCOERCMDEw
MEM5NzRBMyAvKiBET01UcmFuc2FjdGlvblN0ZXAuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMUEz
N0JFMDk3QzcxNUYwMDE5RjNEOCAvKiBET01UcmF2ZXJzYWwuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTg1NTI2Q0QyMEFCMEI3RDkwMDAzMDJFQSAvKiBET01UcmVlV2Fsa2VyLmggaW4gSGVhZGVycyAq
LywKIAkJCQk4NTBCNDFDMzBBRDlFN0U3MDBBNkVENEYgLyogRE9NVHJlZVdhbGtlckludGVybmFs
LmggaW4gSGVhZGVycyAqLywKQEAgLTI2NDAwLDYgKzI2NDA3LDcgQEAKIAkJCQkxODg2MDRCMzBG
MkU2NTRBMDAwQjY0NDMgLyogRE9NVGltZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNzZGQzJC
MEIxMjM3MERBMDAwNkE5OTFBIC8qIERPTVRva2VuTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk3QkIzNUFFQjE1Q0NEREY0MDBGMkE2NDMgLyogRE9NVHJhbnNhY3Rpb24uY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJN0JEMTE3RUIxNUI4REIwMTAwQzk3NEEzIC8qIERPTVRyYW5zYWN0aW9uU3Rl
cC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NTUyNkNEMzBBQjBCN0RBMDAwMzAyRUEgLyogRE9N
VHJlZVdhbGtlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTg1QzdGNDkyMEFBRjc5REMwMDQwMTRE
RCAvKiBET01VSUV2ZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkUzN0RGREExMkRCQUZCODAw
QTZCMjMzIC8qIERPTVVSTC5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0RPTVRyYW5zYWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvRE9NVHJhbnNhY3Rpb24uaAkocmV2aXNpb24gMTI2MTM4KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NVHJhbnNhY3Rpb24uaAkod29ya2luZyBjb3B5KQpA
QCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKFVORE9fTUFOQUdFUikKIAorI2luY2x1ZGUg
IkRPTVRyYW5zYWN0aW9uU3RlcC5oIgogI2luY2x1ZGUgIlVuZG9TdGVwLmgiCiAjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgogCkBAIC00OCwxMCArNDksMTMgQEAgcHVibGljOgogICAgIFVuZG9NYW5h
Z2VyKiB1bmRvTWFuYWdlcigpIGNvbnN0IHsgcmV0dXJuIG1fdW5kb01hbmFnZXI7IH0KICAgICB2
b2lkIHNldFVuZG9NYW5hZ2VyKFVuZG9NYW5hZ2VyKiB1bmRvTWFuYWdlcikgeyBtX3VuZG9NYW5h
Z2VyID0gdW5kb01hbmFnZXI7IH0KIAorICAgIHZvaWQgYWRkVHJhbnNhY3Rpb25TdGVwKFBhc3NS
ZWZQdHI8RE9NVHJhbnNhY3Rpb25TdGVwPiBzdGVwKSB7IG1fdHJhbnNhY3Rpb25TdGVwcy5hcHBl
bmQoc3RlcCk7IH0KKwogcHJpdmF0ZToKICAgICBET01UcmFuc2FjdGlvbigpOwogCiAgICAgVW5k
b01hbmFnZXIqIG1fdW5kb01hbmFnZXI7CisgICAgVmVjdG9yPFJlZlB0cjxET01UcmFuc2FjdGlv
blN0ZXA+ID4gbV90cmFuc2FjdGlvblN0ZXBzOwogfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvRE9NVHJhbnNhY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTVRyYW5zYWN0aW9uLmNwcAkocmV2aXNpb24gMTI2MTM4KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NVHJhbnNhY3Rpb24uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNSw2ICszNSwxOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNz
IERPTVRyYW5zYWN0aW9uU2NvcGUgeworcHVibGljOgorICAgIERPTVRyYW5zYWN0aW9uU2NvcGUo
RE9NVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQorICAgIHsKKyAgICAgICAgVW5kb01hbmFnZXI6
OnNldFJlY29yZGluZ0RPTVRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uKTsKKyAgICB9CisKKyAgICB+
RE9NVHJhbnNhY3Rpb25TY29wZSgpCisgICAgeworICAgICAgICBVbmRvTWFuYWdlcjo6c2V0UmVj
b3JkaW5nRE9NVHJhbnNhY3Rpb24oMCk7CisgICAgfQorfTsKKwogRE9NVHJhbnNhY3Rpb246OkRP
TVRyYW5zYWN0aW9uKGNvbnN0IFdvcmxkQ29udGV4dEhhbmRsZSYgd29ybGRDb250ZXh0KQogICAg
IDogbV93b3JsZENvbnRleHQod29ybGRDb250ZXh0KQogICAgICwgbV91bmRvTWFuYWdlcigwKQpA
QCAtNTEsMTIgKzY0LDIwIEBAIHZvaWQgRE9NVHJhbnNhY3Rpb246OmFwcGx5KCkKICAgICBtX2lz
QXV0b21hdGljID0gIWdldEZ1bmN0aW9uKCJleGVjdXRlQXV0b21hdGljIikuSXNFbXB0eSgpOwog
ICAgIGlmICghbV9pc0F1dG9tYXRpYykKICAgICAgICAgY2FsbEZ1bmN0aW9uKCJleGVjdXRlIik7
CisgICAgZWxzZSB7CisgICAgICAgIERPTVRyYW5zYWN0aW9uU2NvcGUgc2NvcGUodGhpcyk7Cisg
ICAgICAgIGNhbGxGdW5jdGlvbigiZXhlY3V0ZUF1dG9tYXRpYyIpOworICAgIH0KIH0KIAogdm9p
ZCBET01UcmFuc2FjdGlvbjo6dW5hcHBseSgpCiB7CiAgICAgaWYgKCFtX2lzQXV0b21hdGljKQog
ICAgICAgICBjYWxsRnVuY3Rpb24oInVuZG8iKTsKKyAgICBlbHNlIHsKKyAgICAgICAgZm9yIChz
aXplX3QgaSA9IG1fdHJhbnNhY3Rpb25TdGVwcy5zaXplKCk7IGkgPiAwOyAtLWkpCisgICAgICAg
ICAgICBtX3RyYW5zYWN0aW9uU3RlcHNbaSAtIDFdLT51bmFwcGx5KCk7CisgICAgfQogCiAgICAg
aWYgKG1fdW5kb01hbmFnZXIpCiAgICAgICAgIG1fdW5kb01hbmFnZXItPnJlZ2lzdGVyUmVkb1N0
ZXAodGhpcyk7CkBAIC02Niw2ICs4NywxMCBAQCB2b2lkIERPTVRyYW5zYWN0aW9uOjpyZWFwcGx5
KCkKIHsKICAgICBpZiAoIW1faXNBdXRvbWF0aWMpCiAgICAgICAgIGNhbGxGdW5jdGlvbigicmVk
byIpOworICAgIGVsc2UgeworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fdHJhbnNh
Y3Rpb25TdGVwcy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIG1fdHJhbnNhY3Rpb25TdGVwc1tp
XS0+cmVhcHBseSgpOworICAgIH0KIAogICAgIGlmIChtX3VuZG9NYW5hZ2VyKQogICAgICAgICBt
X3VuZG9NYW5hZ2VyLT5yZWdpc3RlclVuZG9TdGVwKHRoaXMpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvRE9NVHJhbnNhY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9ET01UcmFuc2FjdGlvbi5oCShyZXZpc2lvbiAxMjYxMzgpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01UcmFuc2FjdGlvbi5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoVU5ET19NQU5BR0VSKQogCisjaW5jbHVk
ZSAiRE9NVHJhbnNhY3Rpb25TdGVwLmgiCiAjaW5jbHVkZSAiVW5kb1N0ZXAuaCIKICNpbmNsdWRl
ICJXb3JsZENvbnRleHRIYW5kbGUuaCIKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC00OSw2
ICs1MCw4IEBAIHB1YmxpYzoKICAgICBVbmRvTWFuYWdlciogdW5kb01hbmFnZXIoKSBjb25zdCB7
IHJldHVybiBtX3VuZG9NYW5hZ2VyOyB9CiAgICAgdm9pZCBzZXRVbmRvTWFuYWdlcihVbmRvTWFu
YWdlciogdW5kb01hbmFnZXIpIHsgbV91bmRvTWFuYWdlciA9IHVuZG9NYW5hZ2VyOyB9CiAKKyAg
ICB2b2lkIGFkZFRyYW5zYWN0aW9uU3RlcChQYXNzUmVmUHRyPERPTVRyYW5zYWN0aW9uU3RlcD4g
c3RlcCkgeyBtX3RyYW5zYWN0aW9uU3RlcHMuYXBwZW5kKHN0ZXApOyB9CisKIHByaXZhdGU6CiAg
ICAgRE9NVHJhbnNhY3Rpb24oY29uc3QgV29ybGRDb250ZXh0SGFuZGxlJik7CiAgICAgdjg6Okhh
bmRsZTx2ODo6RnVuY3Rpb24+IGdldEZ1bmN0aW9uKGNvbnN0IGNoYXIqKTsKQEAgLTU3LDYgKzYw
LDcgQEAgcHJpdmF0ZToKICAgICBXb3JsZENvbnRleHRIYW5kbGUgbV93b3JsZENvbnRleHQ7CiAg
ICAgVW5kb01hbmFnZXIqIG1fdW5kb01hbmFnZXI7CiAgICAgYm9vbCBtX2lzQXV0b21hdGljOwor
ICAgIFZlY3RvcjxSZWZQdHI8RE9NVHJhbnNhY3Rpb25TdGVwPiA+IG1fdHJhbnNhY3Rpb25TdGVw
czsKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxl
RGVjbGFyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0
eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCShyZXZpc2lvbiAxMjYxMzgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIk11dGF0aW9uUmVjb3JkLmgiCiAjaW5j
bHVkZSAiU3R5bGVQcm9wZXJ0eVNldC5oIgogI2luY2x1ZGUgIlN0eWxlZEVsZW1lbnQuaCIKKyNp
bmNsdWRlICJVbmRvTWFuYWdlci5oIgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCkBAIC01Mywx
NSArNTQsMzggQEAgcHVibGljOgogICAgICAgICBBU1NFUlQoIXNfY3VycmVudERlY2wpOwogICAg
ICAgICBzX2N1cnJlbnREZWNsID0gZGVjbDsKIAotI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZF
UlMpCisjaWYgRU5BQkxFKE1VVEFUSU9OX09CU0VSVkVSUykgfHwgRU5BQkxFKFVORE9fTUFOQUdF
UikKICAgICAgICAgaWYgKCFzX2N1cnJlbnREZWNsLT5wYXJlbnRFbGVtZW50KCkpCiAgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgYm9vbCBzaG91bGRSZWFkT2xkVmFsdWUgPSBmYWxzZTsK
KworI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpCiAgICAgICAgIG1fbXV0YXRpb25SZWNp
cGllbnRzID0gTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA6OmNyZWF0ZUZvckF0dHJpYnV0
ZXNNdXRhdGlvbihzX2N1cnJlbnREZWNsLT5wYXJlbnRFbGVtZW50KCksIEhUTUxOYW1lczo6c3R5
bGVBdHRyKTsKLSAgICAgICAgaWYgKCFtX211dGF0aW9uUmVjaXBpZW50cykKLSAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgaWYgKG1fbXV0YXRpb25SZWNpcGllbnRzICYmIG1fbXV0YXRpb25S
ZWNpcGllbnRzLT5pc09sZFZhbHVlUmVxdWVzdGVkKCkpCisgICAgICAgICAgICBzaG91bGRSZWFk
T2xkVmFsdWUgPSB0cnVlOworI2VuZGlmCisjaWYgRU5BQkxFKFVORE9fTUFOQUdFUikKKyAgICAg
ICAgbV9pc1JlY29yZGluZ0F1dG9tYXRpY1RyYW5zYWN0aW9uID0gVW5kb01hbmFnZXI6OmlzUmVj
b3JkaW5nQXV0b21hdGljVHJhbnNhY3Rpb24oc19jdXJyZW50RGVjbC0+cGFyZW50RWxlbWVudCgp
KTsKKyAgICAgICAgaWYgKG1faXNSZWNvcmRpbmdBdXRvbWF0aWNUcmFuc2FjdGlvbikKKyAgICAg
ICAgICAgIHNob3VsZFJlYWRPbGRWYWx1ZSA9IHRydWU7CisjZW5kaWYKKworICAgICAgICBBdG9t
aWNTdHJpbmcgb2xkVmFsdWU7CisgICAgICAgIGlmIChzaG91bGRSZWFkT2xkVmFsdWUpCisgICAg
ICAgICAgICBvbGRWYWx1ZSA9IHNfY3VycmVudERlY2wtPnBhcmVudEVsZW1lbnQoKS0+Z2V0QXR0
cmlidXRlKEhUTUxOYW1lczo6c3R5bGVBdHRyKTsKKworI2lmIEVOQUJMRShNVVRBVElPTl9PQlNF
UlZFUlMpCisgICAgICAgIGlmIChtX211dGF0aW9uUmVjaXBpZW50cykgeworICAgICAgICAgICAg
QXRvbWljU3RyaW5nIHJlcXVlc3RlZE9sZFZhbHVlID0gbV9tdXRhdGlvblJlY2lwaWVudHMtPmlz
T2xkVmFsdWVSZXF1ZXN0ZWQoKSA/IG9sZFZhbHVlIDogbnVsbEF0b207CisgICAgICAgICAgICBt
X211dGF0aW9uID0gTXV0YXRpb25SZWNvcmQ6OmNyZWF0ZUF0dHJpYnV0ZXMoc19jdXJyZW50RGVj
bC0+cGFyZW50RWxlbWVudCgpLCBIVE1MTmFtZXM6OnN0eWxlQXR0ciwgcmVxdWVzdGVkT2xkVmFs
dWUpOworICAgICAgICB9CisjZW5kaWYKKyNpZiBFTkFCTEUoVU5ET19NQU5BR0VSKQorICAgICAg
ICBpZiAobV9pc1JlY29yZGluZ0F1dG9tYXRpY1RyYW5zYWN0aW9uKQorICAgICAgICAgICAgbV9v
bGRWYWx1ZSA9IG9sZFZhbHVlOworI2VuZGlmCiAKLSAgICAgICAgQXRvbWljU3RyaW5nIG9sZFZh
bHVlID0gbV9tdXRhdGlvblJlY2lwaWVudHMtPmlzT2xkVmFsdWVSZXF1ZXN0ZWQoKSA/IHNfY3Vy
cmVudERlY2wtPnBhcmVudEVsZW1lbnQoKS0+Z2V0QXR0cmlidXRlKEhUTUxOYW1lczo6c3R5bGVB
dHRyKSA6IG51bGxBdG9tOwotICAgICAgICBtX211dGF0aW9uID0gTXV0YXRpb25SZWNvcmQ6OmNy
ZWF0ZUF0dHJpYnV0ZXMoc19jdXJyZW50RGVjbC0+cGFyZW50RWxlbWVudCgpLCBIVE1MTmFtZXM6
OnN0eWxlQXR0ciwgb2xkVmFsdWUpOwogI2VuZGlmCiAgICAgfQogCkBAIC03NCw2ICs5OCwxNCBA
QCBwdWJsaWM6CiAjaWYgRU5BQkxFKE1VVEFUSU9OX09CU0VSVkVSUykKICAgICAgICAgaWYgKG1f
bXV0YXRpb24gJiYgc19zaG91bGREZWxpdmVyKQogICAgICAgICAgICAgbV9tdXRhdGlvblJlY2lw
aWVudHMtPmVucXVldWVNdXRhdGlvblJlY29yZChtX211dGF0aW9uKTsKKyNlbmRpZgorI2lmIEVO
QUJMRShVTkRPX01BTkFHRVIpCisgICAgICAgIGlmIChtX2lzUmVjb3JkaW5nQXV0b21hdGljVHJh
bnNhY3Rpb24gJiYgc19zaG91bGREZWxpdmVyKSB7CisgICAgICAgICAgICBVbmRvTWFuYWdlcjo6
YWRkVHJhbnNhY3Rpb25TdGVwKEF0dHJDaGFuZ2luZ0RPTVRyYW5zYWN0aW9uU3RlcDo6Y3JlYXRl
KAorICAgICAgICAgICAgICAgIHNfY3VycmVudERlY2wtPnBhcmVudEVsZW1lbnQoKSwgSFRNTE5h
bWVzOjpzdHlsZUF0dHIsIG1fb2xkVmFsdWUsIHNfY3VycmVudERlY2wtPnBhcmVudEVsZW1lbnQo
KS0+Z2V0QXR0cmlidXRlKEhUTUxOYW1lczo6c3R5bGVBdHRyKSkpOworICAgICAgICB9CisjZW5k
aWYKKyNpZiBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKSB8fCBFTkFCTEUoVU5ET19NQU5BR0VS
KQogICAgICAgICBzX3Nob3VsZERlbGl2ZXIgPSBmYWxzZTsKICNlbmRpZgogICAgICAgICBpZiAo
IXNfc2hvdWxkTm90aWZ5SW5zcGVjdG9yKSB7CkBAIC04OCw3ICsxMjAsNyBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEludmFsaWRhdGVTdHlsZUF0
dHIobG9jYWxDb3B5U3R5bGVEZWNsLT5wYXJlbnRFbGVtZW50KCktPmRvY3VtZW50KCksIGxvY2Fs
Q29weVN0eWxlRGVjbC0+cGFyZW50RWxlbWVudCgpKTsKICAgICB9CiAKLSNpZiBFTkFCTEUoTVVU
QVRJT05fT0JTRVJWRVJTKQorI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpIHx8IEVOQUJM
RShVTkRPX01BTkFHRVIpCiAgICAgdm9pZCBlbnF1ZXVlTXV0YXRpb25SZWNvcmQoKQogICAgIHsK
ICAgICAgICAgc19zaG91bGREZWxpdmVyID0gdHJ1ZTsKQEAgLTEwNCwxOCArMTM2LDI0IEBAIHBy
aXZhdGU6CiAgICAgc3RhdGljIHVuc2lnbmVkIHNfc2NvcGVDb3VudDsKICAgICBzdGF0aWMgUHJv
cGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uKiBzX2N1cnJlbnREZWNsOwogICAgIHN0YXRpYyBi
b29sIHNfc2hvdWxkTm90aWZ5SW5zcGVjdG9yOwotI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZF
UlMpCisjaWYgRU5BQkxFKE1VVEFUSU9OX09CU0VSVkVSUykgfHwgRU5BQkxFKFVORE9fTUFOQUdF
UikKICAgICBzdGF0aWMgYm9vbCBzX3Nob3VsZERlbGl2ZXI7CisjZW5kaWYKIAorI2lmIEVOQUJM
RShNVVRBVElPTl9PQlNFUlZFUlMpCiAgICAgT3duUHRyPE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVz
dEdyb3VwPiBtX211dGF0aW9uUmVjaXBpZW50czsKICAgICBSZWZQdHI8TXV0YXRpb25SZWNvcmQ+
IG1fbXV0YXRpb247CiAjZW5kaWYKKyNpZiBFTkFCTEUoVU5ET19NQU5BR0VSKQorICAgIGJvb2wg
bV9pc1JlY29yZGluZ0F1dG9tYXRpY1RyYW5zYWN0aW9uOworICAgIEF0b21pY1N0cmluZyBtX29s
ZFZhbHVlOworI2VuZGlmCiB9OwogCiB1bnNpZ25lZCBTdHlsZUF0dHJpYnV0ZU11dGF0aW9uU2Nv
cGU6OnNfc2NvcGVDb3VudCA9IDA7CiBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24qIFN0
eWxlQXR0cmlidXRlTXV0YXRpb25TY29wZTo6c19jdXJyZW50RGVjbCA9IDA7CiBib29sIFN0eWxl
QXR0cmlidXRlTXV0YXRpb25TY29wZTo6c19zaG91bGROb3RpZnlJbnNwZWN0b3IgPSBmYWxzZTsK
LSNpZiBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKQorI2lmIEVOQUJMRShNVVRBVElPTl9PQlNF
UlZFUlMpIHx8IEVOQUJMRShVTkRPX01BTkFHRVIpCiBib29sIFN0eWxlQXR0cmlidXRlTXV0YXRp
b25TY29wZTo6c19zaG91bGREZWxpdmVyID0gZmFsc2U7CiAjZW5kaWYKIApAQCAtMTU4LDcgKzE5
Niw3IEBAIFN0cmluZyBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OmMKICAgICAKIHZv
aWQgUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpzZXRDc3NUZXh0KGNvbnN0IFN0cmlu
ZyYgdGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0jaWYgRU5BQkxFKE1VVEFUSU9OX09CU0VS
VkVSUykKKyNpZiBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKSB8fCBFTkFCTEUoVU5ET19NQU5B
R0VSKQogICAgIFN0eWxlQXR0cmlidXRlTXV0YXRpb25TY29wZSBtdXRhdGlvblNjb3BlKHRoaXMp
OwogI2VuZGlmCiAgICAgd2lsbE11dGF0ZSgpOwpAQCAtMTY5LDcgKzIwNyw3IEBAIHZvaWQgUHJv
cGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpzZXQKIAogICAgIGRpZE11dGF0ZShQcm9wZXJ0
eUNoYW5nZWQpOwogCi0jaWYgRU5BQkxFKE1VVEFUSU9OX09CU0VSVkVSUykKKyNpZiBFTkFCTEUo
TVVUQVRJT05fT0JTRVJWRVJTKSB8fCBFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIG11dGF0aW9u
U2NvcGUuZW5xdWV1ZU11dGF0aW9uUmVjb3JkKCk7ICAgIAogI2VuZGlmCiB9CkBAIC0yMTksNyAr
MjU3LDcgQEAgYm9vbCBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OmlzUAogCiB2b2lk
IFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6c2V0UHJvcGVydHkoY29uc3QgU3RyaW5n
JiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGNvbnN0IFN0cmluZyYgcHJpb3Jp
dHksIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMp
CisjaWYgRU5BQkxFKE1VVEFUSU9OX09CU0VSVkVSUykgfHwgRU5BQkxFKFVORE9fTUFOQUdFUikK
ICAgICBTdHlsZUF0dHJpYnV0ZU11dGF0aW9uU2NvcGUgbXV0YXRpb25TY29wZSh0aGlzKTsKICNl
bmRpZgogICAgIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCA9IGNzc1Byb3BlcnR5SUQocHJvcGVy
dHlOYW1lKTsKQEAgLTIzOCw3ICsyNzYsNyBAQCB2b2lkIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNs
YXJhdGlvbjo6c2V0CiAgICAgaWYgKGNoYW5nZWQpIHsKICAgICAgICAgLy8gQ1NTIERPTSByZXF1
aXJlcyByYWlzaW5nIFNZTlRBWF9FUlIgb2YgcGFyc2luZyBmYWlsZWQsIGJ1dCB0aGlzIGlzIHRv
byBkYW5nZXJvdXMgZm9yIGNvbXBhdGliaWxpdHksCiAgICAgICAgIC8vIHNlZSA8aHR0cDovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzI5Nj4uCi0jaWYgRU5BQkxFKE1VVEFUSU9O
X09CU0VSVkVSUykKKyNpZiBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKSB8fCBFTkFCTEUoVU5E
T19NQU5BR0VSKQogICAgICAgICBtdXRhdGlvblNjb3BlLmVucXVldWVNdXRhdGlvblJlY29yZCgp
OwogI2VuZGlmCiAgICAgfQpAQCAtMjQ2LDcgKzI4NCw3IEBAIHZvaWQgUHJvcGVydHlTZXRDU1NT
dHlsZURlY2xhcmF0aW9uOjpzZXQKIAogU3RyaW5nIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJh
dGlvbjo6cmVtb3ZlUHJvcGVydHkoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIEV4Y2VwdGlv
bkNvZGUmIGVjKQogewotI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpCisjaWYgRU5BQkxF
KE1VVEFUSU9OX09CU0VSVkVSUykgfHwgRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICBTdHlsZUF0
dHJpYnV0ZU11dGF0aW9uU2NvcGUgbXV0YXRpb25TY29wZSh0aGlzKTsKICNlbmRpZgogICAgIENT
U1Byb3BlcnR5SUQgcHJvcGVydHlJRCA9IGNzc1Byb3BlcnR5SUQocHJvcGVydHlOYW1lKTsKQEAg
LTI2Miw3ICszMDAsNyBAQCBTdHJpbmcgUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpy
CiAgICAgZGlkTXV0YXRlKGNoYW5nZWQgPyBQcm9wZXJ0eUNoYW5nZWQgOiBOb0NoYW5nZXMpOwog
CiAgICAgaWYgKGNoYW5nZWQpIHsKLSNpZiBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKQorI2lm
IEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpIHx8IEVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAg
ICAgIG11dGF0aW9uU2NvcGUuZW5xdWV1ZU11dGF0aW9uUmVjb3JkKCk7CiAjZW5kaWYKICAgICB9
CkBAIC0yODEsNyArMzE5LDcgQEAgU3RyaW5nIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlv
bjo6ZwogCiB2b2lkIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6c2V0UHJvcGVydHlJ
bnRlcm5hbChDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGJv
b2wgaW1wb3J0YW50LCBFeGNlcHRpb25Db2RlJiBlYykKIHsgCi0jaWYgRU5BQkxFKE1VVEFUSU9O
X09CU0VSVkVSUykKKyNpZiBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKSB8fCBFTkFCTEUoVU5E
T19NQU5BR0VSKQogICAgIFN0eWxlQXR0cmlidXRlTXV0YXRpb25TY29wZSBtdXRhdGlvblNjb3Bl
KHRoaXMpOwogI2VuZGlmCiAgICAgd2lsbE11dGF0ZSgpOwpAQCAtMjkyLDcgKzMzMCw3IEBAIHZv
aWQgUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpzZXQKICAgICBkaWRNdXRhdGUoY2hh
bmdlZCA/IFByb3BlcnR5Q2hhbmdlZCA6IE5vQ2hhbmdlcyk7CiAKICAgICBpZiAoY2hhbmdlZCkg
ewotI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpCisjaWYgRU5BQkxFKE1VVEFUSU9OX09C
U0VSVkVSUykgfHwgRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICAgICAgbXV0YXRpb25TY29wZS5l
bnF1ZXVlTXV0YXRpb25SZWNvcmQoKTsKICNlbmRpZgogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9k
b20vQ2hhcmFjdGVyRGF0YS5jcHAJKHJldmlzaW9uIDEyNjEzOCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9DaGFyYWN0ZXJEYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAog
I2luY2x1ZGUgIk5vZGVSZW5kZXJpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dC5o
IgogI2luY2x1ZGUgIlRleHRCcmVha0l0ZXJhdG9yLmgiCisjaW5jbHVkZSAiVW5kb01hbmFnZXIu
aCIKIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIApAQCAtMTgzLDYgKzE4NCwxMyBAQCB2b2lkIENo
YXJhY3RlckRhdGE6OnNldE5vZGVWYWx1ZShjb25zdCBTCiAKIHZvaWQgQ2hhcmFjdGVyRGF0YTo6
c2V0RGF0YUFuZFVwZGF0ZShjb25zdCBTdHJpbmcmIG5ld0RhdGEsIHVuc2lnbmVkIG9mZnNldE9m
UmVwbGFjZWREYXRhLCB1bnNpZ25lZCBvbGRMZW5ndGgsIHVuc2lnbmVkIG5ld0xlbmd0aCkKIHsK
KyNpZiBFTkFCTEUoVU5ET19NQU5BR0VSKQorICAgIGlmIChVbmRvTWFuYWdlcjo6aXNSZWNvcmRp
bmdBdXRvbWF0aWNUcmFuc2FjdGlvbih0aGlzKSkgeworICAgICAgICBjb25zdCBTdHJpbmcmIHJl
cGxhY2luZ0RhdGEgPSBuZXdEYXRhLnN1YnN0cmluZyhvZmZzZXRPZlJlcGxhY2VkRGF0YSwgbmV3
TGVuZ3RoKTsKKyAgICAgICAgY29uc3QgU3RyaW5nJiByZXBsYWNlZERhdGEgPSBtX2RhdGEuc3Vi
c3RyaW5nKG9mZnNldE9mUmVwbGFjZWREYXRhLCBvbGRMZW5ndGgpOworICAgICAgICBVbmRvTWFu
YWdlcjo6YWRkVHJhbnNhY3Rpb25TdGVwKERhdGFSZXBsYWNpbmdET01UcmFuc2FjdGlvblN0ZXA6
OmNyZWF0ZSh0aGlzLCBvZmZzZXRPZlJlcGxhY2VkRGF0YSwgb2xkTGVuZ3RoLCByZXBsYWNpbmdE
YXRhLCByZXBsYWNlZERhdGEpKTsKKyAgICB9CisjZW5kaWYKICAgICBTdHJpbmcgb2xkRGF0YSA9
IG1fZGF0YTsKICAgICBtX2RhdGEgPSBuZXdEYXRhOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9k
b20vQ29udGFpbmVyTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0Nv
bnRhaW5lck5vZGUuY3BwCShyZXZpc2lvbiAxMjYxMzgpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20v
Q29udGFpbmVyTm9kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNs
dWRlICJSZW5kZXJCb3guaCIKICNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgogI2luY2x1ZGUgIlJv
b3RJbmxpbmVCb3guaCIKKyNpbmNsdWRlICJVbmRvTWFuYWdlci5oIgogI2luY2x1ZGUgPHd0Zi9D
dXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtMzI3LDYgKzMyOCwx
MCBAQCBzdGF0aWMgdm9pZCB3aWxsUmVtb3ZlQ2hpbGQoTm9kZSogY2hpbGQpCiAgICAgQ2hpbGRM
aXN0TXV0YXRpb25TY29wZShjaGlsZC0+cGFyZW50Tm9kZSgpKS53aWxsUmVtb3ZlQ2hpbGQoY2hp
bGQpOwogICAgIGNoaWxkLT5ub3RpZnlNdXRhdGlvbk9ic2VydmVyc05vZGVXaWxsRGV0YWNoKCk7
CiAjZW5kaWYKKyNpZiBFTkFCTEUoVU5ET19NQU5BR0VSKQorICAgIGlmIChVbmRvTWFuYWdlcjo6
aXNSZWNvcmRpbmdBdXRvbWF0aWNUcmFuc2FjdGlvbihjaGlsZC0+cGFyZW50Tm9kZSgpKSkKKyAg
ICAgICAgVW5kb01hbmFnZXI6OmFkZFRyYW5zYWN0aW9uU3RlcChOb2RlUmVtb3ZpbmdET01UcmFu
c2FjdGlvblN0ZXA6OmNyZWF0ZShjaGlsZC0+cGFyZW50Tm9kZSgpLCBjaGlsZCkpOworI2VuZGlm
CiAKICAgICBkaXNwYXRjaENoaWxkUmVtb3ZhbEV2ZW50cyhjaGlsZCk7CiAgICAgY2hpbGQtPmRv
Y3VtZW50KCktPm5vZGVXaWxsQmVSZW1vdmVkKGNoaWxkKTsgLy8gZS5nLiBtdXRhdGlvbiBldmVu
dCBsaXN0ZW5lciBjYW4gY3JlYXRlIGEgbmV3IHJhbmdlLgpAQCAtMzUxLDYgKzM1NiwxMCBAQCBz
dGF0aWMgdm9pZCB3aWxsUmVtb3ZlQ2hpbGRyZW4oQ29udGFpbmVyCiAgICAgICAgIG11dGF0aW9u
LndpbGxSZW1vdmVDaGlsZChjaGlsZCk7CiAgICAgICAgIGNoaWxkLT5ub3RpZnlNdXRhdGlvbk9i
c2VydmVyc05vZGVXaWxsRGV0YWNoKCk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoVU5ET19NQU5BR0VS
KQorICAgICAgICBpZiAoVW5kb01hbmFnZXI6OmlzUmVjb3JkaW5nQXV0b21hdGljVHJhbnNhY3Rp
b24oY29udGFpbmVyKSkKKyAgICAgICAgICAgIFVuZG9NYW5hZ2VyOjphZGRUcmFuc2FjdGlvblN0
ZXAoTm9kZVJlbW92aW5nRE9NVHJhbnNhY3Rpb25TdGVwOjpjcmVhdGUoY29udGFpbmVyLCBjaGls
ZCkpOworI2VuZGlmCiAKICAgICAgICAgLy8gZmlyZSByZW1vdmVkIGZyb20gZG9jdW1lbnQgbXV0
YXRpb24gZXZlbnRzLgogICAgICAgICBkaXNwYXRjaENoaWxkUmVtb3ZhbEV2ZW50cyhjaGlsZCk7
CkBAIC05NzksNiArOTg4LDExIEBAIHN0YXRpYyB2b2lkIHVwZGF0ZVRyZWVBZnRlckluc2VydGlv
bihDb24KICAgICBDaGlsZExpc3RNdXRhdGlvblNjb3BlKHBhcmVudCkuY2hpbGRBZGRlZChjaGls
ZCk7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShVTkRPX01BTkFHRVIpCisgICAgaWYgKFVuZG9NYW5h
Z2VyOjppc1JlY29yZGluZ0F1dG9tYXRpY1RyYW5zYWN0aW9uKHBhcmVudCkpCisgICAgICAgIFVu
ZG9NYW5hZ2VyOjphZGRUcmFuc2FjdGlvblN0ZXAoTm9kZUluc2VydGluZ0RPTVRyYW5zYWN0aW9u
U3RlcDo6Y3JlYXRlKHBhcmVudCwgY2hpbGQpKTsKKyNlbmRpZgorCiAgICAgcGFyZW50LT5jaGls
ZHJlbkNoYW5nZWQoZmFsc2UsIGNoaWxkLT5wcmV2aW91c1NpYmxpbmcoKSwgY2hpbGQtPm5leHRT
aWJsaW5nKCksIDEpOwogCiAgICAgQ2hpbGROb2RlSW5zZXJ0aW9uTm90aWZpZXIocGFyZW50KS5u
b3RpZnkoY2hpbGQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkocmV2aXNpb24gMTI2MTM4
KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
MDU1LDYgKzIwNTUsMTEgQEAgdm9pZCBFbGVtZW50Ojp3aWxsTW9kaWZ5QXR0cmlidXRlKGNvbnN0
IAogICAgICAgICByZWNpcGllbnRzLT5lbnF1ZXVlTXV0YXRpb25SZWNvcmQoTXV0YXRpb25SZWNv
cmQ6OmNyZWF0ZUF0dHJpYnV0ZXModGhpcywgbmFtZSwgb2xkVmFsdWUpKTsKICNlbmRpZgogCisj
aWYgRU5BQkxFKFVORE9fTUFOQUdFUikKKyAgICBpZiAoVW5kb01hbmFnZXI6OmlzUmVjb3JkaW5n
QXV0b21hdGljVHJhbnNhY3Rpb24odGhpcykpCisgICAgICAgIFVuZG9NYW5hZ2VyOjphZGRUcmFu
c2FjdGlvblN0ZXAoQXR0ckNoYW5naW5nRE9NVHJhbnNhY3Rpb25TdGVwOjpjcmVhdGUodGhpcywg
bmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKSk7CisjZW5kaWYKKwogI2lmIEVOQUJMRShJTlNQRUNU
T1IpCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTW9kaWZ5RE9NQXR0cihkb2N1
bWVudCgpLCB0aGlzLCBvbGRWYWx1ZSwgbmV3VmFsdWUpOwogI2VuZGlmCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0RPTVRyYW5zYWN0aW9uU3RlcC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZWRpdGluZy9ET01UcmFuc2FjdGlvblN0ZXAuY3BwCShyZXZpc2lvbiAwKQor
KysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9ET01UcmFuc2FjdGlvblN0ZXAuY3BwCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDE2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBHT09HTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgR09PR0xFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
KyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBF
TkFCTEUoVU5ET19NQU5BR0VSKQorCisjaW5jbHVkZSAiRE9NVHJhbnNhY3Rpb25TdGVwLmgiCisK
KyNpbmNsdWRlICJDaGFyYWN0ZXJEYXRhLmgiCisjaW5jbHVkZSAiQ29udGFpbmVyTm9kZS5oIgor
I2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVk
ZSAiTm9kZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK05vZGVJbnNlcnRpbmdET01UcmFu
c2FjdGlvblN0ZXA6Ok5vZGVJbnNlcnRpbmdET01UcmFuc2FjdGlvblN0ZXAoTm9kZSogbm9kZSwg
Tm9kZSogY2hpbGQpCisgICAgOiBtX25vZGUobm9kZSkKKyAgICAsIG1fcmVmQ2hpbGQoY2hpbGQt
Pm5leHRTaWJsaW5nKCkpCisgICAgLCBtX2NoaWxkKGNoaWxkKQoreworfQorCitQYXNzUmVmUHRy
PE5vZGVJbnNlcnRpbmdET01UcmFuc2FjdGlvblN0ZXA+IE5vZGVJbnNlcnRpbmdET01UcmFuc2Fj
dGlvblN0ZXA6OmNyZWF0ZShOb2RlKiBub2RlLCBOb2RlKiBjaGlsZCkKK3sKKyAgICByZXR1cm4g
YWRvcHRSZWYobmV3IE5vZGVJbnNlcnRpbmdET01UcmFuc2FjdGlvblN0ZXAobm9kZSwgY2hpbGQp
KTsKK30KKwordm9pZCBOb2RlSW5zZXJ0aW5nRE9NVHJhbnNhY3Rpb25TdGVwOjp1bmFwcGx5KCkK
K3sKKyAgICBpZiAobV9jaGlsZCAmJiBtX2NoaWxkLT5wYXJlbnROb2RlKCkgIT0gbV9ub2RlLmdl
dCgpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKG1fcmVmQ2hpbGQgJiYgbV9yZWZDaGlsZC0+
cGFyZW50Tm9kZSgpICE9IG1fbm9kZS5nZXQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmICht
X3JlZkNoaWxkICYmIG1fcmVmQ2hpbGQtPnByZXZpb3VzU2libGluZygpICE9IG1fY2hpbGQuZ2V0
KCkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBFeGNlcHRpb25Db2RlIGVjOworICAgIG1f
bm9kZS0+cmVtb3ZlQ2hpbGQobV9jaGlsZC5nZXQoKSwgZWMpOworfQorCit2b2lkIE5vZGVJbnNl
cnRpbmdET01UcmFuc2FjdGlvblN0ZXA6OnJlYXBwbHkoKQoreworICAgIGlmIChtX2NoaWxkICYm
IG1fY2hpbGQtPnBhcmVudE5vZGUoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChtX3JlZkNo
aWxkICYmIG1fcmVmQ2hpbGQtPnBhcmVudE5vZGUoKSAhPSBtX25vZGUuZ2V0KCkpCisgICAgICAg
IHJldHVybjsKKyAgICAKKyAgICBFeGNlcHRpb25Db2RlIGVjOworICAgIG1fbm9kZS0+aW5zZXJ0
QmVmb3JlKG1fY2hpbGQsIG1fcmVmQ2hpbGQuZ2V0KCksIGVjKTsKK30KKworTm9kZVJlbW92aW5n
RE9NVHJhbnNhY3Rpb25TdGVwOjpOb2RlUmVtb3ZpbmdET01UcmFuc2FjdGlvblN0ZXAoTm9kZSog
bm9kZSwgTm9kZSogY2hpbGQpCisgICAgOiBtX25vZGUobm9kZSkKKyAgICAsIG1fcmVmQ2hpbGQo
Y2hpbGQtPm5leHRTaWJsaW5nKCkpCisgICAgLCBtX2NoaWxkKGNoaWxkKQoreworfQorCitQYXNz
UmVmUHRyPE5vZGVSZW1vdmluZ0RPTVRyYW5zYWN0aW9uU3RlcD4gTm9kZVJlbW92aW5nRE9NVHJh
bnNhY3Rpb25TdGVwOjpjcmVhdGUoTm9kZSogbm9kZSwgTm9kZSogY2hpbGQpCit7CisgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBOb2RlUmVtb3ZpbmdET01UcmFuc2FjdGlvblN0ZXAobm9kZSwgY2hp
bGQpKTsKK30KKwordm9pZCBOb2RlUmVtb3ZpbmdET01UcmFuc2FjdGlvblN0ZXA6OnVuYXBwbHko
KQoreworICAgIGlmIChtX2NoaWxkICYmIG1fY2hpbGQtPnBhcmVudE5vZGUoKSkKKyAgICAgICAg
cmV0dXJuOworICAgIGlmIChtX3JlZkNoaWxkICYmIG1fcmVmQ2hpbGQtPnBhcmVudE5vZGUoKSAh
PSBtX25vZGUuZ2V0KCkpCisgICAgICAgIHJldHVybjsKKworICAgIEV4Y2VwdGlvbkNvZGUgZWM7
CisgICAgbV9ub2RlLT5pbnNlcnRCZWZvcmUobV9jaGlsZCwgbV9yZWZDaGlsZC5nZXQoKSwgZWMp
OworfQorCit2b2lkIE5vZGVSZW1vdmluZ0RPTVRyYW5zYWN0aW9uU3RlcDo6cmVhcHBseSgpCit7
CisgICAgaWYgKG1fY2hpbGQgJiYgbV9jaGlsZC0+cGFyZW50Tm9kZSgpICE9IG1fbm9kZS5nZXQo
KSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChtX3JlZkNoaWxkICYmIG1fcmVmQ2hpbGQtPnBh
cmVudE5vZGUoKSAhPSBtX25vZGUuZ2V0KCkpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAobV9y
ZWZDaGlsZCAmJiBtX3JlZkNoaWxkLT5wcmV2aW91c1NpYmxpbmcoKSAhPSBtX2NoaWxkLmdldCgp
KQorICAgICAgICByZXR1cm47CisgICAgCisgICAgRXhjZXB0aW9uQ29kZSBlYzsKKyAgICBtX25v
ZGUtPnJlbW92ZUNoaWxkKG1fY2hpbGQuZ2V0KCksIGVjKTsKK30KKworRGF0YVJlcGxhY2luZ0RP
TVRyYW5zYWN0aW9uU3RlcDo6RGF0YVJlcGxhY2luZ0RPTVRyYW5zYWN0aW9uU3RlcChDaGFyYWN0
ZXJEYXRhKiBub2RlLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGNvdW50LCBjb25zdCBTdHJp
bmcmIGRhdGEsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWREYXRhKQorICAgIDogbV9ub2RlKG5vZGUp
CisgICAgLCBtX29mZnNldChvZmZzZXQpCisgICAgLCBtX2NvdW50KGNvdW50KQorICAgICwgbV9k
YXRhKGRhdGEpCisgICAgLCBtX3JlcGxhY2VkRGF0YShyZXBsYWNlZERhdGEpCit7Cit9CisKK1Bh
c3NSZWZQdHI8RGF0YVJlcGxhY2luZ0RPTVRyYW5zYWN0aW9uU3RlcD4gRGF0YVJlcGxhY2luZ0RP
TVRyYW5zYWN0aW9uU3RlcDo6Y3JlYXRlKENoYXJhY3RlckRhdGEqIG5vZGUsIHVuc2lnbmVkIG9m
ZnNldCwgdW5zaWduZWQgY291bnQsIGNvbnN0IFN0cmluZyYgZGF0YSwgY29uc3QgU3RyaW5nJiBy
ZXBsYWNlZERhdGEpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBEYXRhUmVwbGFjaW5nRE9N
VHJhbnNhY3Rpb25TdGVwKG5vZGUsIG9mZnNldCwgY291bnQsIGRhdGEsIHJlcGxhY2VkRGF0YSkp
OworfQorCit2b2lkIERhdGFSZXBsYWNpbmdET01UcmFuc2FjdGlvblN0ZXA6OnVuYXBwbHkoKQor
eworICAgIGlmIChtX25vZGUtPmxlbmd0aCgpIDwgbV9vZmZzZXQpCisgICAgICAgIHJldHVybjsK
KyAgICAKKyAgICBFeGNlcHRpb25Db2RlIGVjOworICAgIG1fbm9kZS0+cmVwbGFjZURhdGEobV9v
ZmZzZXQsIG1fZGF0YS5sZW5ndGgoKSwgbV9yZXBsYWNlZERhdGEsIGVjKTsKK30KKwordm9pZCBE
YXRhUmVwbGFjaW5nRE9NVHJhbnNhY3Rpb25TdGVwOjpyZWFwcGx5KCkKK3sKKyAgICBpZiAobV9u
b2RlLT5sZW5ndGgoKSA8IG1fb2Zmc2V0KQorICAgICAgICByZXR1cm47CisgICAgCisgICAgRXhj
ZXB0aW9uQ29kZSBlYzsKKyAgICBtX25vZGUtPnJlcGxhY2VEYXRhKG1fb2Zmc2V0LCBtX2NvdW50
LCBtX2RhdGEsIGVjKTsKK30KKworQXR0ckNoYW5naW5nRE9NVHJhbnNhY3Rpb25TdGVwOjpBdHRy
Q2hhbmdpbmdET01UcmFuc2FjdGlvblN0ZXAoRWxlbWVudCogZWxlbWVudCwgY29uc3QgUXVhbGlm
aWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbWlj
U3RyaW5nJiBuZXdWYWx1ZSkKKyAgICA6IG1fZWxlbWVudChlbGVtZW50KQorICAgICwgbV9uYW1l
KG5hbWUpCisgICAgLCBtX29sZFZhbHVlKG9sZFZhbHVlKQorICAgICwgbV9uZXdWYWx1ZShuZXdW
YWx1ZSkKK3sKK30KKworUGFzc1JlZlB0cjxBdHRyQ2hhbmdpbmdET01UcmFuc2FjdGlvblN0ZXA+
IEF0dHJDaGFuZ2luZ0RPTVRyYW5zYWN0aW9uU3RlcDo6Y3JlYXRlKEVsZW1lbnQqIGVsZW1lbnQs
IGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgb2xkVmFsdWUs
IGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFsdWUpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBBdHRyQ2hhbmdpbmdET01UcmFuc2FjdGlvblN0ZXAoZWxlbWVudCwgbmFtZSwgb2xkVmFsdWUs
IG5ld1ZhbHVlKSk7Cit9CisKK3ZvaWQgQXR0ckNoYW5naW5nRE9NVHJhbnNhY3Rpb25TdGVwOjp1
bmFwcGx5KCkKK3sKKyAgICBtX2VsZW1lbnQtPnNldEF0dHJpYnV0ZShtX25hbWUsIG1fb2xkVmFs
dWUpOworfQorCit2b2lkIEF0dHJDaGFuZ2luZ0RPTVRyYW5zYWN0aW9uU3RlcDo6cmVhcHBseSgp
Cit7CisgICAgbV9lbGVtZW50LT5zZXRBdHRyaWJ1dGUobV9uYW1lLCBtX25ld1ZhbHVlKTsKK30K
KworfQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRE9NVHJhbnNhY3Rp
b25TdGVwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9ET01UcmFuc2Fj
dGlvblN0ZXAuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRE9NVHJh
bnNhY3Rpb25TdGVwLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTE0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEdPT0dMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBHT09HTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgRE9NVHJhbnNhY3Rpb25TdGVwX2gKKyNkZWZpbmUgRE9NVHJhbnNhY3Rpb25TdGVwX2gKKwor
I2lmIEVOQUJMRShVTkRPX01BTkFHRVIpCisKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgor
I2luY2x1ZGUgIlF1YWxpZmllZE5hbWUuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgor
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIENoYXJhY3RlckRhdGE7CitjbGFzcyBFbGVtZW50OworY2xhc3MgTm9kZTsKKworY2xhc3Mg
RE9NVHJhbnNhY3Rpb25TdGVwIDogcHVibGljIFJlZkNvdW50ZWQ8RE9NVHJhbnNhY3Rpb25TdGVw
PiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+RE9NVHJhbnNhY3Rpb25TdGVwKCkgeyB9CisKKyAg
ICB2aXJ0dWFsIHZvaWQgdW5hcHBseSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVhcHBseSgp
ID0gMDsKK307CisKK2NsYXNzIE5vZGVJbnNlcnRpbmdET01UcmFuc2FjdGlvblN0ZXAgOiBwdWJs
aWMgRE9NVHJhbnNhY3Rpb25TdGVwIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxO
b2RlSW5zZXJ0aW5nRE9NVHJhbnNhY3Rpb25TdGVwPiBjcmVhdGUoTm9kZSosIE5vZGUqIGNoaWxk
KTsKKyAgICB2aXJ0dWFsIHZvaWQgdW5hcHBseSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCByZWFwcGx5KCkgT1ZFUlJJREU7CisKK3ByaXZhdGU6CisgICAgTm9kZUluc2VydGluZ0RPTVRy
YW5zYWN0aW9uU3RlcChOb2RlKiwgTm9kZSogY2hpbGQpOworICAgIAorICAgIFJlZlB0cjxOb2Rl
PiBtX25vZGU7CisgICAgUmVmUHRyPE5vZGU+IG1fcmVmQ2hpbGQ7CisgICAgUmVmUHRyPE5vZGU+
IG1fY2hpbGQ7Cit9OworCitjbGFzcyBOb2RlUmVtb3ZpbmdET01UcmFuc2FjdGlvblN0ZXAgOiBw
dWJsaWMgRE9NVHJhbnNhY3Rpb25TdGVwIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxOb2RlUmVtb3ZpbmdET01UcmFuc2FjdGlvblN0ZXA+IGNyZWF0ZShOb2RlKiwgTm9kZSogY2hp
bGQpOworICAgIHZpcnR1YWwgdm9pZCB1bmFwcGx5KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2
b2lkIHJlYXBwbHkoKSBPVkVSUklERTsKKyAgICAKK3ByaXZhdGU6CisgICAgTm9kZVJlbW92aW5n
RE9NVHJhbnNhY3Rpb25TdGVwKE5vZGUqLCBOb2RlKiBjaGlsZCk7CisgICAgCisgICAgUmVmUHRy
PE5vZGU+IG1fbm9kZTsKKyAgICBSZWZQdHI8Tm9kZT4gbV9yZWZDaGlsZDsKKyAgICBSZWZQdHI8
Tm9kZT4gbV9jaGlsZDsKK307CisKK2NsYXNzIERhdGFSZXBsYWNpbmdET01UcmFuc2FjdGlvblN0
ZXAgOiBwdWJsaWMgRE9NVHJhbnNhY3Rpb25TdGVwIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxEYXRhUmVwbGFjaW5nRE9NVHJhbnNhY3Rpb25TdGVwPiBjcmVhdGUoQ2hhcmFjdGVy
RGF0YSosIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgY291bnQsIGNvbnN0IFN0cmluZyYgZGF0
YSwgY29uc3QgU3RyaW5nJiByZXBsYWNlZERhdGEpOworICAgIHZpcnR1YWwgdm9pZCB1bmFwcGx5
KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlYXBwbHkoKSBPVkVSUklERTsKKyAgICAK
K3ByaXZhdGU6CisgICAgRGF0YVJlcGxhY2luZ0RPTVRyYW5zYWN0aW9uU3RlcChDaGFyYWN0ZXJE
YXRhKiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBjb3VudCwgY29uc3QgU3RyaW5nJiBkYXRh
LCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkRGF0YSk7CisgICAgCisgICAgUmVmUHRyPENoYXJhY3Rl
ckRhdGE+IG1fbm9kZTsKKyAgICB1bnNpZ25lZCBtX29mZnNldDsKKyAgICB1bnNpZ25lZCBtX2Nv
dW50OworICAgIFN0cmluZyBtX2RhdGE7CisgICAgU3RyaW5nIG1fcmVwbGFjZWREYXRhOworfTsK
KworY2xhc3MgQXR0ckNoYW5naW5nRE9NVHJhbnNhY3Rpb25TdGVwIDogcHVibGljIERPTVRyYW5z
YWN0aW9uU3RlcCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8QXR0ckNoYW5naW5n
RE9NVHJhbnNhY3Rpb25TdGVwPiBjcmVhdGUoRWxlbWVudCosIGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBjb25zdCBBdG9taWNTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5ld1Zh
bHVlKTsKKyAgICB2aXJ0dWFsIHZvaWQgdW5hcHBseSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCByZWFwcGx5KCkgT1ZFUlJJREU7CisgICAgCitwcml2YXRlOgorICAgIEF0dHJDaGFuZ2lu
Z0RPTVRyYW5zYWN0aW9uU3RlcChFbGVtZW50KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0
IEF0b21pY1N0cmluZyYgb2xkVmFsdWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFsdWUpOwor
ICAgIAorICAgIFJlZlB0cjxFbGVtZW50PiBtX2VsZW1lbnQ7CisgICAgUXVhbGlmaWVkTmFtZSBt
X25hbWU7CisgICAgQXRvbWljU3RyaW5nIG1fb2xkVmFsdWU7CisgICAgQXRvbWljU3RyaW5nIG1f
bmV3VmFsdWU7Cit9OworCit9CisKKyNlbmRpZgorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvVW5kb01hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVW5kb01hbmFnZXIuY3BwCShyZXZpc2lvbiAxMjYxMzgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1VuZG9NYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTEgKzMz
LDEyIEBACiAKICNpZiBFTkFCTEUoVU5ET19NQU5BR0VSKQogCi0jaW5jbHVkZSAiRE9NVHJhbnNh
Y3Rpb24uaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
RE9NVHJhbnNhY3Rpb24qIFVuZG9NYW5hZ2VyOjpzX3JlY29yZGluZ0RPTVRyYW5zYWN0aW9uID0g
MDsKKwogUGFzc1JlZlB0cjxVbmRvTWFuYWdlcj4gVW5kb01hbmFnZXI6OmNyZWF0ZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBOb2RlKiBob3N0KQogewogICAgIFJlZlB0cjxVbmRv
TWFuYWdlcj4gdW5kb01hbmFnZXIgPSBhZG9wdFJlZihuZXcgVW5kb01hbmFnZXIoY29udGV4dCwg
aG9zdCkpOwpAQCAtMjEzLDYgKzIxNCwyNCBAQCBib29sIFVuZG9NYW5hZ2VyOjppc0Nvbm5lY3Rl
ZCgpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgVW5kb01hbmFnZXI6OmlzUmVjb3JkaW5n
QXV0b21hdGljVHJhbnNhY3Rpb24oTm9kZSogbm9kZSkKK3sKKyAgICAvLyBXZSBuZWVkIHRvIGNo
ZWNrIHRoYXQgdHJhbnNhY3Rpb24gc3RpbGwgaGFzIGl0cyB1bmRvbWFuYWdlciBiZWNhdXNlCisg
ICAgLy8gdHJhbnNhY3Rpb24gY2FuIGRpc2Nvbm5lY3QgaXRzIHVuZG9tYW5hZ2VyLCB3aGljaCB3
aWxsIGNsZWFyIHRoZSB1bmRvL3JlZG8gc3RhY2tzLgorICAgIGlmICghc19yZWNvcmRpbmdET01U
cmFuc2FjdGlvbiB8fCAhc19yZWNvcmRpbmdET01UcmFuc2FjdGlvbi0+dW5kb01hbmFnZXIoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIE5vZGUqIGhvc3QgPSBzX3JlY29yZGluZ0RPTVRy
YW5zYWN0aW9uLT51bmRvTWFuYWdlcigpLT51bmRvU2NvcGVIb3N0KCk7CisgICAgaWYgKCFob3N0
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGhvc3QtPmNvbnRhaW5zKG5vZGUp
OworfQorCit2b2lkIFVuZG9NYW5hZ2VyOjphZGRUcmFuc2FjdGlvblN0ZXAoUGFzc1JlZlB0cjxE
T01UcmFuc2FjdGlvblN0ZXA+IHN0ZXApCit7CisgICAgQVNTRVJUKHNfcmVjb3JkaW5nRE9NVHJh
bnNhY3Rpb24pOworICAgIHNfcmVjb3JkaW5nRE9NVHJhbnNhY3Rpb24tPmFkZFRyYW5zYWN0aW9u
U3RlcChzdGVwKTsKK30KKwogfQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvVW5kb01hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Vu
ZG9NYW5hZ2VyLmgJKHJldmlzaW9uIDEyNjEzOCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
VW5kb01hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogI2lmIEVOQUJM
RShVTkRPX01BTkFHRVIpCiAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRl
ICJET01UcmFuc2FjdGlvbi5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlci5o
IgogI2luY2x1ZGUgIlVuZG9TdGVwLmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgpAQCAtNDUs
NyArNDYsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIERPTVRyYW5zYWN0aW9u
OwogY2xhc3MgTm9kZTsKIAogdHlwZWRlZiBWZWN0b3I8UmVmUHRyPFVuZG9TdGVwPiA+IFVuZG9N
YW5hZ2VyRW50cnk7CkBAIC03OCw2ICs3OCwxMCBAQCBwdWJsaWM6CiAgICAgTm9kZSogdW5kb1Nj
b3BlSG9zdCgpIGNvbnN0IHsgcmV0dXJuIG1fdW5kb1Njb3BlSG9zdDsgfQogICAgIE5vZGUqIG93
bmVyTm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5kb1Njb3BlSG9zdDsgfQogCisgICAgc3RhdGlj
IHZvaWQgc2V0UmVjb3JkaW5nRE9NVHJhbnNhY3Rpb24oRE9NVHJhbnNhY3Rpb24qIHRyYW5zYWN0
aW9uKSB7IHNfcmVjb3JkaW5nRE9NVHJhbnNhY3Rpb24gPSB0cmFuc2FjdGlvbjsgfQorICAgIHN0
YXRpYyBib29sIGlzUmVjb3JkaW5nQXV0b21hdGljVHJhbnNhY3Rpb24oTm9kZSopOworICAgIHN0
YXRpYyB2b2lkIGFkZFRyYW5zYWN0aW9uU3RlcChQYXNzUmVmUHRyPERPTVRyYW5zYWN0aW9uU3Rl
cD4pOworCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFVuZG9NYW5hZ2VyKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBOb2RlKiBob3N0KTsKICAgICBib29sIGlzQ29ubmVjdGVkKCk7CkBAIC04Nyw2
ICs5MSw4IEBAIHByaXZhdGU6CiAgICAgVW5kb01hbmFnZXJTdGFjayBtX3JlZG9TdGFjazsKICAg
ICBib29sIG1faXNJblByb2dyZXNzOwogICAgIE93blB0cjxVbmRvTWFuYWdlckVudHJ5PiBtX2lu
UHJvZ3Jlc3NFbnRyeTsKKworICAgIHN0YXRpYyBET01UcmFuc2FjdGlvbiogc19yZWNvcmRpbmdE
T01UcmFuc2FjdGlvbjsKIH07CiAgICAgCiB9CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMjYxMzgpCisr
KyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAor
MjAxMi0wOC0xNyAgU3Vrb2xzYWsgU2Frc2h1d29uZyAgPHN1a29sc2FrQGdvb2dsZS5jb20+CisK
KyAgICAgICAgSW1wbGVtZW50IFVuZG9NYW5hZ2VyJ3MgYXV0b21hdGljIERPTSB0cmFuc2FjdGlv
bnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxODEy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBlZGl0
aW5nL3VuZG9tYW5hZ2VyL2F1dG9tYXRpYy10cmFuc2FjdGlvbi1hdHRyaWJ1dGUtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3VuZG9tYW5hZ2VyL2F1dG9tYXRpYy10cmFu
c2FjdGlvbi1hdHRyaWJ1dGUuaHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy91bmRvbWFu
YWdlci9hdXRvbWF0aWMtdHJhbnNhY3Rpb24tZGF0YS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGVkaXRpbmcvdW5kb21hbmFnZXIvYXV0b21hdGljLXRyYW5zYWN0aW9uLWRhdGEuaHRt
bDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy91bmRvbWFuYWdlci9hdXRvbWF0aWMtdHJhbnNh
Y3Rpb24tbm9kZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvdW5kb21h
bmFnZXIvYXV0b21hdGljLXRyYW5zYWN0aW9uLW5vZGUuaHRtbDogQWRkZWQuCisKIDIwMTItMDgt
MjAgIEtlaXNoaSBIYXR0b3JpICA8a2Vpc2hpQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQ2xpY2tp
bmcgaW5wdXQgdHlwZT1yYW5nZSB3aXRoIHBhZGRpbmcgb3IgYm9yZGVyIHNldHMgd3JvbmcgdmFs
dWUKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIvYXV0b21hdGljLXRyYW5z
YWN0aW9uLWF0dHJpYnV0ZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZWRpdGluZy91bmRvbWFuYWdlci9hdXRvbWF0aWMtdHJhbnNhY3Rpb24tYXR0cmlidXRlLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIv
YXV0b21hdGljLXRyYW5zYWN0aW9uLWF0dHJpYnV0ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMTUgQEAKK1RoaXMgdGVzdHMgdGhhdCBVbmRvTWFuYWdlciBjb3JyZWN0bHkg
cmV2ZXJ0cy9yZWFwcGxpZXMgYXV0b21hdGljIERPTSB0cmFuc2FjdGlvbnMgb24gYXR0cmlidXRl
IGNoYW5nZXMuIFdlIHN0YXJ0IHdpdGggYSBzcGFuIHRoYXQgaGFzIGJsdWUgYm9yZGVyIGFuZCBk
b2Vzbid0IGhhdmUgdGl0bGUgb3IgY29udGVudGVkaXRhYmxlIGF0dHJpYnV0ZXMuIAorCitQQVNT
IHRyYW5zYWN0IDE6IHNldCB0aXRsZSB0byAidGVzdCIgCitQQVNTIHRyYW5zYWN0IDI6IHNldCBj
b250ZW50ZWRpdGFibGUgdG8gInRydWUiIAorUEFTUyB0cmFuc2FjdCAzOiBzZXQgYm9yZGVyIGNv
bG9yIHRvIHJlZCAKK1BBU1MgdHJhbnNhY3QgNDogcmVtb3ZlIGF0dHJpYnV0ZSB0aXRsZSAKK1BB
U1MgdW5kbyA0OiB0aXRsZSBpcyBiYWNrIHRvICJ0ZXN0IiAKK1BBU1MgdW5kbyAzOiBib3JkZXIg
Y29sb3IgaXMgYmFjayB0byBibHVlIAorUEFTUyB1bmRvIDI6IGNvbnRlbnRlZGl0YWJsZSBpcyBi
YWNrIHRvICJpbmhlcml0IiAKK1BBU1MgdW5kbyAxOiB0aXRsZSBpcyBiYWNrIHRvIGFuIGVtcHR5
IHN0cmluZyAKK1BBU1MgcmVkbyAxOiB0aXRsZSBpcyAidGVzdCIgYWdhaW4gCitQQVNTIHJlZG8g
MjogY29udGVudEVkaXRhYmxlIGlzICJ0cnVlIiBhZ2FpbiAKK1BBU1MgcmVkbyAzOiBib3JkZXIg
Y29sb3IgaXMgcmVkIGFnYWluIAorUEFTUyByZWRvIDQ6IHRpdGxlIGlzIGFuIGVtcHR5IHN0cmlu
ZyBhZ2FpbiAKKwpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvbWFuYWdlci9hdXRvbWF0
aWMtdHJhbnNhY3Rpb24tYXR0cmlidXRlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZWRpdGluZy91bmRvbWFuYWdlci9hdXRvbWF0aWMtdHJhbnNhY3Rpb24tYXR0cmlidXRlLmh0bWwJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2VyL2F1dG9tYXRp
Yy10cmFuc2FjdGlvbi1hdHRyaWJ1dGUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4NyBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPmF1dG9tYXRpYyB0cmFu
c2FjdGlvbiBvbiBhdHRyaWJ1dGVzPC90aXRsZT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KK1RoaXMg
dGVzdHMgdGhhdCBVbmRvTWFuYWdlciBjb3JyZWN0bHkgcmV2ZXJ0cy9yZWFwcGxpZXMgYXV0b21h
dGljIERPTSB0cmFuc2FjdGlvbnMKK29uIGF0dHJpYnV0ZSBjaGFuZ2VzLiBXZSBzdGFydCB3aXRo
IGEgc3BhbiB0aGF0IGhhcyBibHVlIGJvcmRlciBhbmQgZG9lc24ndCBoYXZlIHRpdGxlCitvciBj
b250ZW50ZWRpdGFibGUgYXR0cmlidXRlcy4KKworPHNwYW4gaWQ9InNwYW4iIHN0eWxlPSJib3Jk
ZXI6IDFweCBibHVlIHNvbGlkIj48L3NwYW4+Cis8c2NyaXB0PgordmFyIHVuZG9NYW5hZ2VyID0g
ZG9jdW1lbnQudW5kb01hbmFnZXI7Cit2YXIgc3BhbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJzcGFuIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgdW5kb01hbmFnZXIudHJhbnNhY3Qo
eworICAgICAgICAiZXhlY3V0ZUF1dG9tYXRpYyI6IGZ1bmN0aW9uKCkgeyBzcGFuLnRpdGxlID0g
InRlc3QiOyB9CisgICAgfSk7CisgICAgYXNzZXJ0X2VxdWFscyhzcGFuLnRpdGxlLCAidGVzdCIp
OworfSwgInRyYW5zYWN0IDE6IHNldCB0aXRsZSB0byBcInRlc3RcIiIpOworCit0ZXN0KGZ1bmN0
aW9uKCkgeworICAgIHVuZG9NYW5hZ2VyLnRyYW5zYWN0KHsKKyAgICAgICAgImV4ZWN1dGVBdXRv
bWF0aWMiOiBmdW5jdGlvbigpIHsgc3Bhbi5zZXRBdHRyaWJ1dGUoImNvbnRlbnRlZGl0YWJsZSIs
ICJ0cnVlIik7IH0KKyAgICB9KTsKKyAgICBhc3NlcnRfZXF1YWxzKHNwYW4uY29udGVudEVkaXRh
YmxlLCAidHJ1ZSIpOworfSwgInRyYW5zYWN0IDI6IHNldCBjb250ZW50ZWRpdGFibGUgdG8gXCJ0
cnVlXCIiKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICB1bmRvTWFuYWdlci50cmFuc2FjdCh7
CisgICAgICAgICJleGVjdXRlQXV0b21hdGljIjogZnVuY3Rpb24oKSB7IHNwYW4uc3R5bGUuY3Nz
VGV4dCA9ICJib3JkZXI6IDFweCByZWQgc29saWQiOyB9CisgICAgfSk7CisgICAgYXNzZXJ0X2Vx
dWFscyhzcGFuLnN0eWxlLmJvcmRlckNvbG9yLCAicmVkIik7Cit9LCAidHJhbnNhY3QgMzogc2V0
IGJvcmRlciBjb2xvciB0byByZWQiKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICB1bmRvTWFu
YWdlci50cmFuc2FjdCh7CisgICAgICAgICJleGVjdXRlQXV0b21hdGljIjogZnVuY3Rpb24oKSB7
IHNwYW4ucmVtb3ZlQXR0cmlidXRlKCJ0aXRsZSIpOyB9CisgICAgfSk7CisgICAgYXNzZXJ0X2Vx
dWFscyhzcGFuLnRpdGxlLCAiIik7Cit9LCAidHJhbnNhY3QgNDogcmVtb3ZlIGF0dHJpYnV0ZSB0
aXRsZSIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIHVuZG9NYW5hZ2VyLnVuZG8oKTsKKyAg
ICBhc3NlcnRfZXF1YWxzKHNwYW4udGl0bGUsICJ0ZXN0Iik7Cit9LCAidW5kbyA0OiB0aXRsZSBp
cyBiYWNrIHRvIFwidGVzdFwiIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgdW5kb01hbmFn
ZXIudW5kbygpOworICAgIGFzc2VydF9lcXVhbHMoc3Bhbi5zdHlsZS5ib3JkZXJDb2xvciwgImJs
dWUiKTsKK30sICJ1bmRvIDM6IGJvcmRlciBjb2xvciBpcyBiYWNrIHRvIGJsdWUiKTsKKwordGVz
dChmdW5jdGlvbigpIHsKKyAgICB1bmRvTWFuYWdlci51bmRvKCk7CisgICAgYXNzZXJ0X2VxdWFs
cyhzcGFuLmNvbnRlbnRFZGl0YWJsZSwgImluaGVyaXQiKTsKK30sICJ1bmRvIDI6IGNvbnRlbnRl
ZGl0YWJsZSBpcyBiYWNrIHRvIFwiaW5oZXJpdFwiIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7Cisg
ICAgdW5kb01hbmFnZXIudW5kbygpOworICAgIGFzc2VydF9lcXVhbHMoc3Bhbi50aXRsZSwgIiIp
OworfSwgInVuZG8gMTogdGl0bGUgaXMgYmFjayB0byBhbiBlbXB0eSBzdHJpbmciKTsKKwordGVz
dChmdW5jdGlvbigpIHsKKyAgICB1bmRvTWFuYWdlci5yZWRvKCk7CisgICAgYXNzZXJ0X2VxdWFs
cyhzcGFuLnRpdGxlLCAidGVzdCIpOworfSwgInJlZG8gMTogdGl0bGUgaXMgXCJ0ZXN0XCIgYWdh
aW4iKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICB1bmRvTWFuYWdlci5yZWRvKCk7CisgICAg
YXNzZXJ0X2VxdWFscyhzcGFuLmNvbnRlbnRFZGl0YWJsZSwgInRydWUiKTsKK30sICJyZWRvIDI6
IGNvbnRlbnRFZGl0YWJsZSBpcyBcInRydWVcIiBhZ2FpbiIpOworCit0ZXN0KGZ1bmN0aW9uKCkg
eworICAgIHVuZG9NYW5hZ2VyLnJlZG8oKTsKKyAgICBhc3NlcnRfZXF1YWxzKHNwYW4uc3R5bGUu
Ym9yZGVyQ29sb3IsICJyZWQiKTsKK30sICJyZWRvIDM6IGJvcmRlciBjb2xvciBpcyByZWQgYWdh
aW4iKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICB1bmRvTWFuYWdlci5yZWRvKCk7CisgICAg
YXNzZXJ0X2VxdWFscyhzcGFuLnRpdGxlLCAiIik7Cit9LCAicmVkbyA0OiB0aXRsZSBpcyBhbiBl
bXB0eSBzdHJpbmcgYWdhaW4iKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDog
TGF5b3V0VGVzdHMvZWRpdGluZy91bmRvbWFuYWdlci9hdXRvbWF0aWMtdHJhbnNhY3Rpb24tZGF0
YS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvbWFu
YWdlci9hdXRvbWF0aWMtdHJhbnNhY3Rpb24tZGF0YS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2VyL2F1dG9tYXRpYy10cmFuc2FjdGlv
bi1kYXRhLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5IEBACitUaGlzIHRl
c3RzIHRoYXQgVW5kb01hbmFnZXIgY29ycmVjdGx5IHJldmVydHMvcmVhcHBsaWVzIGF1dG9tYXRp
YyBET00gdHJhbnNhY3Rpb25zIG9uIG5vZGUgZGF0YS4KKworUEFTUyBTdGFydGVkIHdpdGggMTIz
NDU2Nzg5LiBUcmFuc2FjdGVkIHJlcGxhY2VEYXRhKDMsIDMsICdhYmNkJykuIEdvdCAxMjNhYmNk
Nzg5IAorUEFTUyB1bmRvTWFuYWdlci51bmRvKCkuIEdvdCAxMjM0NTY3ODkgCitQQVNTIHVuZG9N
YW5hZ2VyLnJlZG8oKS4gR290IDEyM2FiY2Q3ODkgCitQQVNTIFN0YXJ0ZWQgd2l0aCAxMjM0LiBU
cmFuc2FjdGVkIHJlcGxhY2VEYXRhKDIsIDEwLCAnYScpLiBHb3QgMTJhIAorUEFTUyB1bmRvTWFu
YWdlci51bmRvKCkuIEdvdCAxMjM0IAorUEFTUyB1bmRvTWFuYWdlci5yZWRvKCkuIEdvdCAxMmEg
CisKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIvYXV0b21hdGljLXRyYW5z
YWN0aW9uLWRhdGEuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG9t
YW5hZ2VyL2F1dG9tYXRpYy10cmFuc2FjdGlvbi1kYXRhLmh0bWwJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2VyL2F1dG9tYXRpYy10cmFuc2FjdGlvbi1kYXRh
Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzx0aXRsZT5hdXRvbWF0aWMgdHJhbnNhY3Rpb24gb24gbm9kZSBkYXRhPC90
aXRsZT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KK1RoaXMgdGVzdHMgdGhhdCBVbmRvTWFuYWdlciBj
b3JyZWN0bHkgcmV2ZXJ0cy9yZWFwcGxpZXMgYXV0b21hdGljIERPTSB0cmFuc2FjdGlvbnMKK29u
IG5vZGUgZGF0YS4KKworPGRpdiBpZD0iZGl2Ij48L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgdW5kb01h
bmFnZXIgPSBkb2N1bWVudC51bmRvTWFuYWdlcjsKK3ZhciBkaXYgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiZGl2Iik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisJZGl2LmlubmVyVGV4dCA9ICIx
MjM0NTY3ODkiOworICAgIHVuZG9NYW5hZ2VyLnRyYW5zYWN0KHsKKyAgICAgICAgImV4ZWN1dGVB
dXRvbWF0aWMiOiBmdW5jdGlvbigpIHsgZGl2LmZpcnN0Q2hpbGQucmVwbGFjZURhdGEoMywgMywg
ImFiY2QiKTsgfQorICAgIH0pOworICAgIGFzc2VydF9lcXVhbHMoZGl2LmlubmVyVGV4dCwgIjEy
M2FiY2Q3ODkiKTsKK30sICJTdGFydGVkIHdpdGggMTIzNDU2Nzg5LiBUcmFuc2FjdGVkIHJlcGxh
Y2VEYXRhKDMsIDMsICdhYmNkJykuIEdvdCAxMjNhYmNkNzg5Iik7CisKK3Rlc3QoZnVuY3Rpb24o
KSB7CisgICAgdW5kb01hbmFnZXIudW5kbygpOworICAgIGFzc2VydF9lcXVhbHMoZGl2LmlubmVy
VGV4dCwgIjEyMzQ1Njc4OSIpOworfSwgInVuZG9NYW5hZ2VyLnVuZG8oKS4gR290IDEyMzQ1Njc4
OSIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIHVuZG9NYW5hZ2VyLnJlZG8oKTsKKyAgICBh
c3NlcnRfZXF1YWxzKGRpdi5pbm5lclRleHQsICIxMjNhYmNkNzg5Iik7Cit9LCAidW5kb01hbmFn
ZXIucmVkbygpLiBHb3QgMTIzYWJjZDc4OSIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworCWRpdi5p
bm5lclRleHQgPSAiMTIzNCI7CisgICAgdW5kb01hbmFnZXIudHJhbnNhY3QoeworICAgICAgICAi
ZXhlY3V0ZUF1dG9tYXRpYyI6IGZ1bmN0aW9uKCkgeyBkaXYuZmlyc3RDaGlsZC5yZXBsYWNlRGF0
YSgyLCAxMCwgImEiKTsgfQorICAgIH0pOworICAgIGFzc2VydF9lcXVhbHMoZGl2LmlubmVyVGV4
dCwgIjEyYSIpOworfSwgIlN0YXJ0ZWQgd2l0aCAxMjM0LiBUcmFuc2FjdGVkIHJlcGxhY2VEYXRh
KDIsIDEwLCAnYScpLiBHb3QgMTJhIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgdW5kb01h
bmFnZXIudW5kbygpOworICAgIGFzc2VydF9lcXVhbHMoZGl2LmlubmVyVGV4dCwgIjEyMzQiKTsK
K30sICJ1bmRvTWFuYWdlci51bmRvKCkuIEdvdCAxMjM0Iik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7
CisgICAgdW5kb01hbmFnZXIucmVkbygpOworICAgIGFzc2VydF9lcXVhbHMoZGl2LmlubmVyVGV4
dCwgIjEyYSIpOworfSwgInVuZG9NYW5hZ2VyLnJlZG8oKS4gR290IDEyYSIpOworCitkaXYuc3R5
bGUuZGlzcGxheSA9ICJub25lIjsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDog
TGF5b3V0VGVzdHMvZWRpdGluZy91bmRvbWFuYWdlci9hdXRvbWF0aWMtdHJhbnNhY3Rpb24tbm9k
ZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvbWFu
YWdlci9hdXRvbWF0aWMtdHJhbnNhY3Rpb24tbm9kZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2VyL2F1dG9tYXRpYy10cmFuc2FjdGlv
bi1ub2RlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMiBAQAorVGhpcyB0
ZXN0cyB0aGF0IFVuZG9NYW5hZ2VyIGNvcnJlY3RseSByZXZlcnRzL3JlYXBwbGllcyBhdXRvbWF0
aWMgRE9NIHRyYW5zYWN0aW9ucyBvbiBub2RlIHN0cnVjdHVyYWwgY2hhbmdlLgorCitQQVNTIFVu
ZG9NYW5hZ2VyIGNhbGxlZCB0aGUgZnVuY3Rpb24gcmV0dXJuZWQgYnkgZXhlY3V0ZUF1dG9tYXRp
Yy4gKGFwcGVuZENoaWxkKSAKK1BBU1MgVW5kb01hbmFnZXIgY2FsbGVkIHRoZSBmdW5jdGlvbiBy
ZXR1cm5lZCBieSBleGVjdXRlQXV0b21hdGljLiAoaW5zZXJ0QmVmb3JlKSAKK1BBU1MgVW5kb01h
bmFnZXIgY2FsbGVkIHRoZSBmdW5jdGlvbiByZXR1cm5lZCBieSBleGVjdXRlQXV0b21hdGljLiAo
cmVtb3ZlQ2hpbGQpIAorUEFTUyBVbmRvTWFuYWdlciByZXZlcnRlZCB0aGUgY2hhbmdlIG1hZGUg
YnkgcmVtb3ZlQ2hpbGQuIAorUEFTUyBVbmRvTWFuYWdlciByZXZlcnRlZCB0aGUgY2hhbmdlIG1h
ZGUgYnkgaW5zZXJ0QmVmb3JlLiAKK1BBU1MgVW5kb01hbmFnZXIgcmV2ZXJ0ZWQgdGhlIGNoYW5n
ZSBtYWRlIGJ5IGFwcGVuZENoaWxkLiAKK1BBU1MgVW5kb01hbmFnZXIgcmVhcHBsaWVkIHRoZSBj
aGFuZ2UgbWFkZSBieSBhcHBlbmRDaGlsZC4gCitQQVNTIFVuZG9NYW5hZ2VyIHJlYXBwbGllZCB0
aGUgY2hhbmdlIG1hZGUgYnkgaW5zZXJ0QmVmb3JlLiAKK1BBU1MgVW5kb01hbmFnZXIgcmVhcHBs
aWVkIHRoZSBjaGFuZ2UgbWFkZSBieSByZW1vdmVDaGlsZC4gCisKSW5kZXg6IExheW91dFRlc3Rz
L2VkaXRpbmcvdW5kb21hbmFnZXIvYXV0b21hdGljLXRyYW5zYWN0aW9uLW5vZGUuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2VyL2F1dG9tYXRpYy10cmFu
c2FjdGlvbi1ub2RlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3Vu
ZG9tYW5hZ2VyL2F1dG9tYXRpYy10cmFuc2FjdGlvbi1ub2RlLmh0bWwJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsODEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5h
dXRvbWF0aWMgdHJhbnNhY3Rpb24gb24gbm9kZXM8L3RpdGxlPgorPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorVGhpcyB0ZXN0cyB0aGF0IFVuZG9NYW5hZ2VyIGNvcnJlY3RseSByZXZlcnRzL3JlYXBwbGll
cyBhdXRvbWF0aWMgRE9NIHRyYW5zYWN0aW9ucworb24gbm9kZSBzdHJ1Y3R1cmFsIGNoYW5nZS4K
KworPGRpdiBpZD0iZWRpdCI+PC9kaXY+Cis8c2NyaXB0PgordmFyIGVkaXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiZWRpdCIpOwordmFyIHVuZG9NYW5hZ2VyID0gZG9jdW1lbnQudW5kb01h
bmFnZXI7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgdW5kb01hbmFnZXIudHJhbnNhY3Qoewor
ICAgICAgICAiZXhlY3V0ZUF1dG9tYXRpYyI6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdmFy
IGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CisgICAgICAgICAgICBkLmlubmVy
VGV4dCA9ICIxIjsKKyAgICAgICAgICAgIGVkaXQuYXBwZW5kQ2hpbGQoZCk7CisgICAgICAgIH0K
KyAgICB9KTsKKyAgICBhc3NlcnRfdHJ1ZShlZGl0LmlubmVySFRNTCA9PSAiPHNwYW4+MTwvc3Bh
bj4iKTsKK30sICJVbmRvTWFuYWdlciBjYWxsZWQgdGhlIGZ1bmN0aW9uIHJldHVybmVkIGJ5IGV4
ZWN1dGVBdXRvbWF0aWMuIChhcHBlbmRDaGlsZCkiKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAg
ICB1bmRvTWFuYWdlci50cmFuc2FjdCh7CisgICAgICAgICJleGVjdXRlQXV0b21hdGljIjogZnVu
Y3Rpb24oKSB7CisgICAgICAgICAgICB2YXIgZDIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJz
cGFuIik7CisgICAgICAgICAgICBkMi5pbm5lckhUTUwgPSAiPGI+MjwvYj4iOworICAgICAgICAg
ICAgZWRpdC5pbnNlcnRCZWZvcmUoZDIsIGVkaXQuZmlyc3RDaGlsZCk7CisgICAgICAgIH0KKyAg
ICB9KTsKKyAgICBhc3NlcnRfdHJ1ZShlZGl0LmlubmVySFRNTCA9PSAiPHNwYW4+PGI+MjwvYj48
L3NwYW4+PHNwYW4+MTwvc3Bhbj4iKTsKK30sICJVbmRvTWFuYWdlciBjYWxsZWQgdGhlIGZ1bmN0
aW9uIHJldHVybmVkIGJ5IGV4ZWN1dGVBdXRvbWF0aWMuIChpbnNlcnRCZWZvcmUpIik7CisKK3Rl
c3QoZnVuY3Rpb24oKSB7CisgICAgdW5kb01hbmFnZXIudHJhbnNhY3QoeworICAgICAgICAiZXhl
Y3V0ZUF1dG9tYXRpYyI6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZWRpdC5yZW1vdmVDaGls
ZChlZGl0Lmxhc3RDaGlsZCk7CisgICAgICAgIH0KKyAgICB9KTsKKyAgICBhc3NlcnRfdHJ1ZShl
ZGl0LmlubmVySFRNTCA9PSAiPHNwYW4+PGI+MjwvYj48L3NwYW4+Iik7Cit9LCAiVW5kb01hbmFn
ZXIgY2FsbGVkIHRoZSBmdW5jdGlvbiByZXR1cm5lZCBieSBleGVjdXRlQXV0b21hdGljLiAocmVt
b3ZlQ2hpbGQpIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgdW5kb01hbmFnZXIudW5kbygp
OworICAgIGFzc2VydF90cnVlKGVkaXQuaW5uZXJIVE1MID09ICI8c3Bhbj48Yj4yPC9iPjwvc3Bh
bj48c3Bhbj4xPC9zcGFuPiIpOworfSwgIlVuZG9NYW5hZ2VyIHJldmVydGVkIHRoZSBjaGFuZ2Ug
bWFkZSBieSByZW1vdmVDaGlsZC4iKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICB1bmRvTWFu
YWdlci51bmRvKCk7CisgICAgYXNzZXJ0X3RydWUoZWRpdC5pbm5lckhUTUwgPT0gIjxzcGFuPjE8
L3NwYW4+Iik7Cit9LCAiVW5kb01hbmFnZXIgcmV2ZXJ0ZWQgdGhlIGNoYW5nZSBtYWRlIGJ5IGlu
c2VydEJlZm9yZS4iKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICB1bmRvTWFuYWdlci51bmRv
KCk7CisgICAgYXNzZXJ0X3RydWUoZWRpdC5pbm5lckhUTUwgPT0gIiIpOworfSwgIlVuZG9NYW5h
Z2VyIHJldmVydGVkIHRoZSBjaGFuZ2UgbWFkZSBieSBhcHBlbmRDaGlsZC4iKTsKKwordGVzdChm
dW5jdGlvbigpIHsKKyAgICB1bmRvTWFuYWdlci5yZWRvKCk7CisgICAgYXNzZXJ0X3RydWUoZWRp
dC5pbm5lckhUTUwgPT0gIjxzcGFuPjE8L3NwYW4+Iik7Cit9LCAiVW5kb01hbmFnZXIgcmVhcHBs
aWVkIHRoZSBjaGFuZ2UgbWFkZSBieSBhcHBlbmRDaGlsZC4iKTsKKwordGVzdChmdW5jdGlvbigp
IHsKKyAgICB1bmRvTWFuYWdlci5yZWRvKCk7CisgICAgYXNzZXJ0X3RydWUoZWRpdC5pbm5lckhU
TUwgPT0gIjxzcGFuPjxiPjI8L2I+PC9zcGFuPjxzcGFuPjE8L3NwYW4+Iik7Cit9LCAiVW5kb01h
bmFnZXIgcmVhcHBsaWVkIHRoZSBjaGFuZ2UgbWFkZSBieSBpbnNlcnRCZWZvcmUuIik7CisKK3Rl
c3QoZnVuY3Rpb24oKSB7CisgICAgdW5kb01hbmFnZXIucmVkbygpOworICAgIGFzc2VydF90cnVl
KGVkaXQuaW5uZXJIVE1MID09ICI8c3Bhbj48Yj4yPC9iPjwvc3Bhbj4iKTsKK30sICJVbmRvTWFu
YWdlciByZWFwcGxpZWQgdGhlIGNoYW5nZSBtYWRlIGJ5IHJlbW92ZUNoaWxkLiIpOworCitlZGl0
LnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159629</attachid>
            <date>2012-08-21 00:12:12 -0700</date>
            <delta_ts>2012-08-21 20:04:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91812-20120821001415.patch</filename>
            <type>text/plain</type>
            <size>51179</size>
            <attacher name="Sukolsak Sakshuwong">sukolsak</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNjEzOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg5IEBACisyMDEyLTA4LTIxICBTdWtvbHNh
ayBTYWtzaHV3b25nICA8c3Vrb2xzYWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQg
VW5kb01hbmFnZXIncyBhdXRvbWF0aWMgRE9NIHRyYW5zYWN0aW9ucworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE4MTIKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMgYXV0
b21hdGljIERPTSB0cmFuc2FjdGlvbnMgaW4gVW5kb01hbmFnZXIKKyAgICAgICAgYnkgcmVjb3Jk
aW5nIGNoYW5nZXMgaW4gdHJlZSBzdHJ1Y3R1cmUsIGF0dHJpYnV0ZXMsIGFuZCBjaGFyYWN0ZXIg
ZGF0YQorICAgICAgICBvZiBub2RlcyB1bmRlciB1bmRvIHNjb3BlIGhvc3QuIEl0IGFsc28gZml4
ZXMgdGhlIHByb2JsZW0gb2YKKyAgICAgICAgRE9NVHJhbnNhY3Rpb25TdGVwIGhhdmluZyBhIHN0
cm9uZyByZWZlcmVuY2UgdG8gaXRzIGhvc3QgYnkKKyAgICAgICAgZGlzY29ubmVjdGluZyB0aGUg
VW5kb01hbmFnZXIgd2hlbiBpdHMgaG9zdCBpcyBkZXRhY2hlZCBmcm9tIHRoZSB0cmVlLgorCisg
ICAgICAgIFRlc3RzOiBlZGl0aW5nL3VuZG9tYW5hZ2VyL2F1dG9tYXRpYy10cmFuc2FjdGlvbi1h
dHRyaWJ1dGUuaHRtbAorICAgICAgICAgICAgICAgZWRpdGluZy91bmRvbWFuYWdlci9hdXRvbWF0
aWMtdHJhbnNhY3Rpb24tZGF0YS5odG1sCisgICAgICAgICAgICAgICBlZGl0aW5nL3VuZG9tYW5h
Z2VyL2F1dG9tYXRpYy10cmFuc2FjdGlvbi1ub2RlLmh0bWwKKworICAgICAgICAqIENNYWtlTGlz
dHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogV2ViQ29y
ZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAg
ICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9ET01UcmFuc2FjdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6RE9NVHJhbnNhY3Rpb246
OmFkZFRyYW5zYWN0aW9uU3RlcCk6CisgICAgICAgIChET01UcmFuc2FjdGlvbik6CisgICAgICAg
ICogYmluZGluZ3MvdjgvRE9NVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAoRE9NVHJhbnNhY3Rp
b25TY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpET01UcmFuc2FjdGlvblNjb3BlOjpET01UcmFu
c2FjdGlvblNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVRyYW5zYWN0aW9uU2NvcGU6On5E
T01UcmFuc2FjdGlvblNjb3BlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6RE9NVHJhbnNhY3Rpb246OmFwcGx5KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVRyYW5zYWN0
aW9uOjp1bmFwcGx5KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVRyYW5zYWN0aW9uOjpyZWFwcGx5
KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9ET01UcmFuc2FjdGlvbi5oOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NVHJhbnNhY3Rpb246OmFkZFRyYW5zYWN0aW9uU3RlcCk6CisgICAgICAgIChET01U
cmFuc2FjdGlvbik6CisgICAgICAgICogY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246
OnNldENzc1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6UHJvcGVydHlTZXRDU1NTdHlsZURlY2xh
cmF0aW9uOjpzZXRQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eVNldENTU1N0
eWxlRGVjbGFyYXRpb246OnJlbW92ZVByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlByb3Bl
cnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6c2V0UHJvcGVydHlJbnRlcm5hbCk6CisgICAgICAg
ICogZG9tL0NoYXJhY3RlckRhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hhcmFjdGVyRGF0
YTo6c2V0RGF0YUFuZFVwZGF0ZSk6CisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6d2lsbFJlbW92ZUNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6Ondp
bGxSZW1vdmVDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjp1cGRhdGVUcmVlQWZ0ZXJJbnNl
cnRpb24pOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnQ6On5FbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnJlbW92ZWRGcm9t
KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OndpbGxNb2RpZnlBdHRyaWJ1dGUpOgorICAg
ICAgICAqIGVkaXRpbmcvRE9NVHJhbnNhY3Rpb25TdGVwLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVJbnNlcnRpbmdET01UcmFuc2FjdGlvblN0
ZXA6Ok5vZGVJbnNlcnRpbmdET01UcmFuc2FjdGlvblN0ZXApOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZUluc2VydGluZ0RPTVRyYW5zYWN0aW9uU3RlcDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok5vZGVJbnNlcnRpbmdET01UcmFuc2FjdGlvblN0ZXA6OnVuYXBwbHkpOgorICAgICAgICAo
V2ViQ29yZTo6Tm9kZUluc2VydGluZ0RPTVRyYW5zYWN0aW9uU3RlcDo6cmVhcHBseSk6CisgICAg
ICAgIChXZWJDb3JlOjpOb2RlUmVtb3ZpbmdET01UcmFuc2FjdGlvblN0ZXA6Ok5vZGVSZW1vdmlu
Z0RPTVRyYW5zYWN0aW9uU3RlcCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVtb3ZpbmdET01U
cmFuc2FjdGlvblN0ZXA6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVtb3ZpbmdE
T01UcmFuc2FjdGlvblN0ZXA6OnVuYXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbW92
aW5nRE9NVHJhbnNhY3Rpb25TdGVwOjpyZWFwcGx5KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFS
ZXBsYWNpbmdET01UcmFuc2FjdGlvblN0ZXA6OkRhdGFSZXBsYWNpbmdET01UcmFuc2FjdGlvblN0
ZXApOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVJlcGxhY2luZ0RPTVRyYW5zYWN0aW9uU3RlcDo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFSZXBsYWNpbmdET01UcmFuc2FjdGlvblN0
ZXA6OnVuYXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVJlcGxhY2luZ0RPTVRyYW5zYWN0
aW9uU3RlcDo6cmVhcHBseSk6CisgICAgICAgIChXZWJDb3JlOjpBdHRyQ2hhbmdpbmdET01UcmFu
c2FjdGlvblN0ZXA6OkF0dHJDaGFuZ2luZ0RPTVRyYW5zYWN0aW9uU3RlcCk6CisgICAgICAgIChX
ZWJDb3JlOjpBdHRyQ2hhbmdpbmdET01UcmFuc2FjdGlvblN0ZXA6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpBdHRyQ2hhbmdpbmdET01UcmFuc2FjdGlvblN0ZXA6OnVuYXBwbHkpOgorICAg
ICAgICAoV2ViQ29yZTo6QXR0ckNoYW5naW5nRE9NVHJhbnNhY3Rpb25TdGVwOjpyZWFwcGx5KToK
KyAgICAgICAgKiBlZGl0aW5nL0RPTVRyYW5zYWN0aW9uU3RlcC5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoRE9NVHJhbnNhY3Rpb25TdGVwKToKKyAgICAgICAgKFdlYkNv
cmU6OkRPTVRyYW5zYWN0aW9uU3RlcDo6fkRPTVRyYW5zYWN0aW9uU3RlcCk6CisgICAgICAgIChO
b2RlSW5zZXJ0aW5nRE9NVHJhbnNhY3Rpb25TdGVwKToKKyAgICAgICAgKE5vZGVSZW1vdmluZ0RP
TVRyYW5zYWN0aW9uU3RlcCk6CisgICAgICAgIChEYXRhUmVwbGFjaW5nRE9NVHJhbnNhY3Rpb25T
dGVwKToKKyAgICAgICAgKEF0dHJDaGFuZ2luZ0RPTVRyYW5zYWN0aW9uU3RlcCk6CisgICAgICAg
ICogZWRpdGluZy9VbmRvTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjppc1JlY29yZGluZ0F1dG9tYXRpY1RyYW5zYWN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjphZGRUcmFuc2FjdGlvblN0ZXApOgorICAg
ICAgICAqIGVkaXRpbmcvVW5kb01hbmFnZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OnNldFJlY29yZGluZ0RPTVRyYW5zYWN0aW9uKToKKyAg
ICAgICAgKFVuZG9NYW5hZ2VyKToKKwogMjAxMi0wOC0yMCAgS2VudGFybyBIYXJhICA8aGFyYWtl
bkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW1Y4XSBNb3ZlIGhhbmRsZU91dE9mTWVtb3J5KCkg
ZnJvbSBWOFByb3h5IHRvIFY4QmluZGluZwpJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlz
aW9uIDEyNjEzOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC0xMjE4LDYgKzEyMTgsNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgZWRpdGlu
Zy9CcmVha0Jsb2NrcXVvdGVDb21tYW5kLmNwcAogICAgIGVkaXRpbmcvQ29tcG9zaXRlRWRpdENv
bW1hbmQuY3BwCiAgICAgZWRpdGluZy9DcmVhdGVMaW5rQ29tbWFuZC5jcHAKKyAgICBlZGl0aW5n
L0RPTVRyYW5zYWN0aW9uU3RlcC5jcHAKICAgICBlZGl0aW5nL0RlbGV0ZUJ1dHRvbi5jcHAKICAg
ICBlZGl0aW5nL0RlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIuY3BwCiAgICAgZWRpdGluZy9EZWxldGVG
cm9tVGV4dE5vZGVDb21tYW5kLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CShyZXZpc2lvbiAxMjYxMzgpCisrKyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CSh3b3JraW5nIGNvcHkpCkBAIC0yOTM4LDYgKzI5MzgsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0g
XAogCVNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGljdGF0aW9uQWx0ZXJuYXRpdmUuaCBcCiAJU291
cmNlL1dlYkNvcmUvZWRpdGluZy9EaWN0YXRpb25Db21tYW5kLmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvZWRpdGluZy9EaWN0YXRpb25Db21tYW5kLmggXAorCVNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RE9NVHJhbnNhY3Rpb25TdGVwLmNwcCBcCisJU291cmNlL1dlYkNvcmUvZWRpdGluZy9ET01UcmFu
c2FjdGlvblN0ZXAuaCBcCiAJU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0QWN0aW9uLmggXAog
CVNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdENvbW1hbmQuY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRDb21tYW5kLmggXApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24g
MTI2MTM4KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBA
IC0yNjQyLDYgKzI2NDIsOCBAQAogICAgICAgICAgICAgJ2VkaXRpbmcvQ29tcG9zaXRlRWRpdENv
bW1hbmQuY3BwJywKICAgICAgICAgICAgICdlZGl0aW5nL0NyZWF0ZUxpbmtDb21tYW5kLmNwcCcs
CiAgICAgICAgICAgICAnZWRpdGluZy9DcmVhdGVMaW5rQ29tbWFuZC5oJywKKyAgICAgICAgICAg
ICdlZGl0aW5nL0RPTVRyYW5zYWN0aW9uU3RlcC5jcHAnLAorICAgICAgICAgICAgJ2VkaXRpbmcv
RE9NVHJhbnNhY3Rpb25TdGVwLmgnLAogICAgICAgICAgICAgJ2VkaXRpbmcvRGVsZXRlQnV0dG9u
LmNwcCcsCiAgICAgICAgICAgICAnZWRpdGluZy9EZWxldGVCdXR0b24uaCcsCiAgICAgICAgICAg
ICAnZWRpdGluZy9EZWxldGVCdXR0b25Db250cm9sbGVyLmNwcCcsCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24gMTI2MTM4KQor
KysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTU1OTk5LDYgKzU1OTk5LDYyIEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZp
bGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGVkaXRpbmdcRE9NVHJhbnNhY3Rpb25TdGVwLmNwcCIK
KwkJCQk+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIgor
CQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJ
TmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9u
PgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJ
CQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFt
ZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgor
CQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb19DRkxpdGV8V2lu
MzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJ
CQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3Vy
YXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm9f
Q0ZMaXRlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJ
CQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0Zp
bGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1
Z19BbGx8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJ
CTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmls
ZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlByb2R1
Y3Rpb258V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJ
CTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmls
ZUNvbmZpZ3VyYXRpb24+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0i
Li5cZWRpdGluZ1xET01UcmFuc2FjdGlvblN0ZXAuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8
RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cZWRpdGluZ1xFZGl0QWN0aW9uLmgiCiAJCQkJPgog
CQkJPC9GaWxlPgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTI2MTM4KQorKysgU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xOTY4LDYg
KzE5NjgsOCBAQAogCQk3QjkxODREMzE1NzU4RTQyMDA5MkFBOTMgLyogVW5kb01hbmFnZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCOTE4NEQwMTU3
NThFNDIwMDkyQUE5MyAvKiBVbmRvTWFuYWdlci5oICovOyB9OwogCQk3QkIzNUFFQjE1Q0NEREY0
MDBGMkE2NDMgLyogRE9NVHJhbnNhY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0JCMzVBRTkxNUNDRERGNDAwRjJBNjQzIC8qIERPTVRyYW5z
YWN0aW9uLmNwcCAqLzsgfTsKIAkJN0JCMzVBRUMxNUNDRERGNDAwRjJBNjQzIC8qIERPTVRyYW5z
YWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QkIzNUFFQTE1Q0NEREY0MDBGMkE2NDMgLyogRE9NVHJhbnNhY3Rpb24uaCAqLzsgfTsKKwkJN0JE
MTE3RUIxNUI4REIwMTAwQzk3NEEzIC8qIERPTVRyYW5zYWN0aW9uU3RlcC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkQxMTdFOTE1QjhEQjAxMDBD
OTc0QTMgLyogRE9NVHJhbnNhY3Rpb25TdGVwLmNwcCAqLzsgfTsKKwkJN0JEMTE3RUMxNUI4REIw
MTAwQzk3NEEzIC8qIERPTVRyYW5zYWN0aW9uU3RlcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0JEMTE3RUExNUI4REIwMTAwQzk3NEEzIC8qIERPTVRy
YW5zYWN0aW9uU3RlcC5oICovOyB9OwogCQk3QzUyMkQ0QjE1QjQ3N0U4MDA5QjdDOTUgLyogSW5z
cGVjdG9yT3ZlcmxheS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QzUyMkQ0OTE1QjQ3N0U4MDA5QjdDOTUgLyogSW5zcGVjdG9yT3ZlcmxheS5jcHAg
Ki87IH07CiAJCTdFMzNDRDAxMTI3RjM0MEQwMEJFOEYxNyAvKiBQdXJnZVByaW9yaXR5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTMzQ0QwMDEyN0Yz
NDBEMDBCRThGMTcgLyogUHVyZ2VQcmlvcml0eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdFMzdFRjJFMTMzOTIwODgwMEIyOTI1MCAvKiBTdWJy
ZXNvdXJjZUxvYWRlckNGLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdFMzdFRjJEMTMzOTIwODgwMEIyOTI1MCAvKiBTdWJyZXNvdXJjZUxvYWRlckNG
LmNwcCAqLzsgfTsKQEAgLTkxNDUsNiArOTE0Nyw4IEBACiAJCTdCOTE4NEQxMTU3NThFNDIwMDky
QUE5MyAvKiBVbmRvTWFuYWdlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gVW5kb01hbmFn
ZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkIzNUFFOTE1Q0NEREY0MDBG
MkE2NDMgLyogRE9NVHJhbnNhY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gRE9NVHJhbnNhY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3QkIzNUFFQTE1Q0NEREY0MDBGMkE2NDMgLyogRE9NVHJhbnNhY3Rpb24uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NVHJhbnNhY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJN0JEMTE3RTkxNUI4REIwMTAwQzk3NEEzIC8qIERPTVRyYW5zYWN0aW9u
U3RlcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01UcmFuc2Fj
dGlvblN0ZXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QkQxMTdFQTE1QjhE
QjAxMDBDOTc0QTMgLyogRE9NVHJhbnNhY3Rpb25TdGVwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IERPTVRyYW5zYWN0aW9uU3RlcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3QzUyMkQ0OTE1QjQ3N0U4MDA5QjdDOTUgLyogSW5zcGVjdG9yT3ZlcmxheS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JPdmVybGF5LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M1MjJENEExNUI0NzhCMjAwOUI3Qzk1
IC8qIEluc3BlY3Rvck92ZXJsYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SW5zcGVjdG9yT3ZlcmxheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzYwMTI4
MDYwMDc4QkI3MEUzNjdBOTUgLyogRE5TUmVzb2x2ZVF1ZXVlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEROU1Jlc29sdmVRdWV1ZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0xNzEwNCw2ICsxNzEwOCw4IEBACiAJCQkJQ0VDQURGQzQxNTM3NzhG
RjAwRTM3MDY4IC8qIERpY3RhdGlvbkNvbW1hbmQuY3BwICovLAogCQkJCUNFQ0FERkM1MTUzNzc4
RkYwMEUzNzA2OCAvKiBEaWN0YXRpb25Db21tYW5kLmggKi8sCiAJCQkJN0I4QzFGRTYxNUNDRTND
MjAwNEIzNURDIC8qIERPTVRyYW5zYWN0aW9uLmlkbCAqLywKKwkJCQk3QkQxMTdFOTE1QjhEQjAx
MDBDOTc0QTMgLyogRE9NVHJhbnNhY3Rpb25TdGVwLmNwcCAqLywKKwkJCQk3QkQxMTdFQTE1QjhE
QjAxMDBDOTc0QTMgLyogRE9NVHJhbnNhY3Rpb25TdGVwLmggKi8sCiAJCQkJOTMzMDlEOTMwOTlF
NjQ5MTAwNTZFNTgxIC8qIEVkaXRBY3Rpb24uaCAqLywKIAkJCQk5MzMwOUQ5NDA5OUU2NDkxMDA1
NkU1ODEgLyogRWRpdENvbW1hbmQuY3BwICovLAogCQkJCTkzMzA5RDk1MDk5RTY0OTEwMDU2RTU4
MSAvKiBFZGl0Q29tbWFuZC5oICovLApAQCAtMjMxMjksNiArMjMxMzUsNyBAQAogCQkJCTA1RkQ2
OUUwMTI4NDVENDMwMEIyQkVCMyAvKiBET01UaW1lU3RhbXAuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTc2RkMyQjBDMTIzNzBEQTAwMDZBOTkxQSAvKiBET01Ub2tlbkxpc3QuaCBpbiBIZWFkZXJzICov
LAogCQkJCTdCQjM1QUVDMTVDQ0RERjQwMEYyQTY0MyAvKiBET01UcmFuc2FjdGlvbi5oIGluIEhl
YWRlcnMgKi8sCisJCQkJN0JEMTE3RUMxNUI4REIwMTAwQzk3NEEzIC8qIERPTVRyYW5zYWN0aW9u
U3RlcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxQTM3QkUwOTdDNzE1RjAwMTlGM0Q4IC8qIERP
TVRyYXZlcnNhbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODU1MjZDRDIwQUIwQjdEOTAwMDMwMkVB
IC8qIERPTVRyZWVXYWxrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1MEI0MUMzMEFEOUU3RTcw
MEE2RUQ0RiAvKiBET01UcmVlV2Fsa2VySW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLApAQCAtMjY0
MDAsNiArMjY0MDcsNyBAQAogCQkJCTE4ODYwNEIzMEYyRTY1NEEwMDBCNjQ0MyAvKiBET01UaW1l
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3NkZDMkIwQjEyMzcwREEwMDA2QTk5MUEgLyogRE9N
VG9rZW5MaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdCQjM1QUVCMTVDQ0RERjQwMEYyQTY0
MyAvKiBET01UcmFuc2FjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3QkQxMTdFQjE1QjhE
QjAxMDBDOTc0QTMgLyogRE9NVHJhbnNhY3Rpb25TdGVwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTg1NTI2Q0QzMEFCMEI3REEwMDAzMDJFQSAvKiBET01UcmVlV2Fsa2VyLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJODVDN0Y0OTIwQUFGNzlEQzAwNDAxNEREIC8qIERPTVVJRXZlbnQubW0gaW4gU291
cmNlcyAqLywKIAkJCQkyRTM3REZEQTEyREJBRkI4MDBBNkIyMzMgLyogRE9NVVJMLmNwcCBpbiBT
b3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NVHJhbnNhY3Rp
b24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01UcmFuc2Fj
dGlvbi5oCShyZXZpc2lvbiAxMjYxMzgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9E
T01UcmFuc2FjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBF
TkFCTEUoVU5ET19NQU5BR0VSKQogCisjaW5jbHVkZSAiRE9NVHJhbnNhY3Rpb25TdGVwLmgiCiAj
aW5jbHVkZSAiVW5kb1N0ZXAuaCIKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKQEAgLTQ4LDEw
ICs0OSwxMyBAQCBwdWJsaWM6CiAgICAgVW5kb01hbmFnZXIqIHVuZG9NYW5hZ2VyKCkgY29uc3Qg
eyByZXR1cm4gbV91bmRvTWFuYWdlcjsgfQogICAgIHZvaWQgc2V0VW5kb01hbmFnZXIoVW5kb01h
bmFnZXIqIHVuZG9NYW5hZ2VyKSB7IG1fdW5kb01hbmFnZXIgPSB1bmRvTWFuYWdlcjsgfQogCisg
ICAgdm9pZCBhZGRUcmFuc2FjdGlvblN0ZXAoUGFzc1JlZlB0cjxET01UcmFuc2FjdGlvblN0ZXA+
IHN0ZXApIHsgbV90cmFuc2FjdGlvblN0ZXBzLmFwcGVuZChzdGVwKTsgfQorCiBwcml2YXRlOgog
ICAgIERPTVRyYW5zYWN0aW9uKCk7CiAKICAgICBVbmRvTWFuYWdlciogbV91bmRvTWFuYWdlcjsK
KyAgICBWZWN0b3I8UmVmUHRyPERPTVRyYW5zYWN0aW9uU3RlcD4gPiBtX3RyYW5zYWN0aW9uU3Rl
cHM7CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01UcmFuc2Fj
dGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NVHJh
bnNhY3Rpb24uY3BwCShyZXZpc2lvbiAxMjYxMzgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9ET01UcmFuc2FjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDE5IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRE9NVHJhbnNhY3Rpb25TY29wZSB7Citw
dWJsaWM6CisgICAgRE9NVHJhbnNhY3Rpb25TY29wZShET01UcmFuc2FjdGlvbiogdHJhbnNhY3Rp
b24pCisgICAgeworICAgICAgICBVbmRvTWFuYWdlcjo6c2V0UmVjb3JkaW5nRE9NVHJhbnNhY3Rp
b24odHJhbnNhY3Rpb24pOworICAgIH0KKworICAgIH5ET01UcmFuc2FjdGlvblNjb3BlKCkKKyAg
ICB7CisgICAgICAgIFVuZG9NYW5hZ2VyOjpzZXRSZWNvcmRpbmdET01UcmFuc2FjdGlvbigwKTsK
KyAgICB9Cit9OworCiBET01UcmFuc2FjdGlvbjo6RE9NVHJhbnNhY3Rpb24oY29uc3QgV29ybGRD
b250ZXh0SGFuZGxlJiB3b3JsZENvbnRleHQpCiAgICAgOiBtX3dvcmxkQ29udGV4dCh3b3JsZENv
bnRleHQpCiAgICAgLCBtX3VuZG9NYW5hZ2VyKDApCkBAIC01MSwxMiArNjQsMjAgQEAgdm9pZCBE
T01UcmFuc2FjdGlvbjo6YXBwbHkoKQogICAgIG1faXNBdXRvbWF0aWMgPSAhZ2V0RnVuY3Rpb24o
ImV4ZWN1dGVBdXRvbWF0aWMiKS5Jc0VtcHR5KCk7CiAgICAgaWYgKCFtX2lzQXV0b21hdGljKQog
ICAgICAgICBjYWxsRnVuY3Rpb24oImV4ZWN1dGUiKTsKKyAgICBlbHNlIHsKKyAgICAgICAgRE9N
VHJhbnNhY3Rpb25TY29wZSBzY29wZSh0aGlzKTsKKyAgICAgICAgY2FsbEZ1bmN0aW9uKCJleGVj
dXRlQXV0b21hdGljIik7CisgICAgfQogfQogCiB2b2lkIERPTVRyYW5zYWN0aW9uOjp1bmFwcGx5
KCkKIHsKICAgICBpZiAoIW1faXNBdXRvbWF0aWMpCiAgICAgICAgIGNhbGxGdW5jdGlvbigidW5k
byIpOworICAgIGVsc2UgeworICAgICAgICBmb3IgKHNpemVfdCBpID0gbV90cmFuc2FjdGlvblN0
ZXBzLnNpemUoKTsgaSA+IDA7IC0taSkKKyAgICAgICAgICAgIG1fdHJhbnNhY3Rpb25TdGVwc1tp
IC0gMV0tPnVuYXBwbHkoKTsKKyAgICB9CiAKICAgICBpZiAobV91bmRvTWFuYWdlcikKICAgICAg
ICAgbV91bmRvTWFuYWdlci0+cmVnaXN0ZXJSZWRvU3RlcCh0aGlzKTsKQEAgLTY2LDYgKzg3LDEw
IEBAIHZvaWQgRE9NVHJhbnNhY3Rpb246OnJlYXBwbHkoKQogewogICAgIGlmICghbV9pc0F1dG9t
YXRpYykKICAgICAgICAgY2FsbEZ1bmN0aW9uKCJyZWRvIik7CisgICAgZWxzZSB7CisgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV90cmFuc2FjdGlvblN0ZXBzLnNpemUoKTsgKytpKQor
ICAgICAgICAgICAgbV90cmFuc2FjdGlvblN0ZXBzW2ldLT5yZWFwcGx5KCk7CisgICAgfQogCiAg
ICAgaWYgKG1fdW5kb01hbmFnZXIpCiAgICAgICAgIG1fdW5kb01hbmFnZXItPnJlZ2lzdGVyVW5k
b1N0ZXAodGhpcyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01UcmFuc2Fj
dGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTVRyYW5z
YWN0aW9uLmgJKHJldmlzaW9uIDEyNjEzOCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L0RPTVRyYW5zYWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lm
IEVOQUJMRShVTkRPX01BTkFHRVIpCiAKKyNpbmNsdWRlICJET01UcmFuc2FjdGlvblN0ZXAuaCIK
ICNpbmNsdWRlICJVbmRvU3RlcC5oIgogI2luY2x1ZGUgIldvcmxkQ29udGV4dEhhbmRsZS5oIgog
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTQ5LDYgKzUwLDggQEAgcHVibGljOgogICAgIFVu
ZG9NYW5hZ2VyKiB1bmRvTWFuYWdlcigpIGNvbnN0IHsgcmV0dXJuIG1fdW5kb01hbmFnZXI7IH0K
ICAgICB2b2lkIHNldFVuZG9NYW5hZ2VyKFVuZG9NYW5hZ2VyKiB1bmRvTWFuYWdlcikgeyBtX3Vu
ZG9NYW5hZ2VyID0gdW5kb01hbmFnZXI7IH0KIAorICAgIHZvaWQgYWRkVHJhbnNhY3Rpb25TdGVw
KFBhc3NSZWZQdHI8RE9NVHJhbnNhY3Rpb25TdGVwPiBzdGVwKSB7IG1fdHJhbnNhY3Rpb25TdGVw
cy5hcHBlbmQoc3RlcCk7IH0KKwogcHJpdmF0ZToKICAgICBET01UcmFuc2FjdGlvbihjb25zdCBX
b3JsZENvbnRleHRIYW5kbGUmKTsKICAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gZ2V0RnVu
Y3Rpb24oY29uc3QgY2hhciopOwpAQCAtNTcsNiArNjAsNyBAQCBwcml2YXRlOgogICAgIFdvcmxk
Q29udGV4dEhhbmRsZSBtX3dvcmxkQ29udGV4dDsKICAgICBVbmRvTWFuYWdlciogbV91bmRvTWFu
YWdlcjsKICAgICBib29sIG1faXNBdXRvbWF0aWM7CisgICAgVmVjdG9yPFJlZlB0cjxET01UcmFu
c2FjdGlvblN0ZXA+ID4gbV90cmFuc2FjdGlvblN0ZXBzOwogfTsKIAogfQpJbmRleDogU291cmNl
L1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5j
cHAJKHJldmlzaW9uIDEyNjEzOCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENT
U1N0eWxlRGVjbGFyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAj
aW5jbHVkZSAiTXV0YXRpb25SZWNvcmQuaCIKICNpbmNsdWRlICJTdHlsZVByb3BlcnR5U2V0Lmgi
CiAjaW5jbHVkZSAiU3R5bGVkRWxlbWVudC5oIgorI2luY2x1ZGUgIlVuZG9NYW5hZ2VyLmgiCiAK
IHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKQEAgLTUzLDE1ICs1NCwzOCBAQCBwdWJsaWM6CiAgICAg
ICAgIEFTU0VSVCghc19jdXJyZW50RGVjbCk7CiAgICAgICAgIHNfY3VycmVudERlY2wgPSBkZWNs
OwogCi0jaWYgRU5BQkxFKE1VVEFUSU9OX09CU0VSVkVSUykKKyNpZiBFTkFCTEUoTVVUQVRJT05f
T0JTRVJWRVJTKSB8fCBFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgICAgICBpZiAoIXNfY3VycmVu
dERlY2wtPnBhcmVudEVsZW1lbnQoKSkKICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBi
b29sIHNob3VsZFJlYWRPbGRWYWx1ZSA9IGZhbHNlOworCisjaWYgRU5BQkxFKE1VVEFUSU9OX09C
U0VSVkVSUykKICAgICAgICAgbV9tdXRhdGlvblJlY2lwaWVudHMgPSBNdXRhdGlvbk9ic2VydmVy
SW50ZXJlc3RHcm91cDo6Y3JlYXRlRm9yQXR0cmlidXRlc011dGF0aW9uKHNfY3VycmVudERlY2wt
PnBhcmVudEVsZW1lbnQoKSwgSFRNTE5hbWVzOjpzdHlsZUF0dHIpOwotICAgICAgICBpZiAoIW1f
bXV0YXRpb25SZWNpcGllbnRzKQotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAobV9t
dXRhdGlvblJlY2lwaWVudHMgJiYgbV9tdXRhdGlvblJlY2lwaWVudHMtPmlzT2xkVmFsdWVSZXF1
ZXN0ZWQoKSkKKyAgICAgICAgICAgIHNob3VsZFJlYWRPbGRWYWx1ZSA9IHRydWU7CisjZW5kaWYK
KyNpZiBFTkFCTEUoVU5ET19NQU5BR0VSKQorICAgICAgICBtX2lzUmVjb3JkaW5nQXV0b21hdGlj
VHJhbnNhY3Rpb24gPSBVbmRvTWFuYWdlcjo6aXNSZWNvcmRpbmdBdXRvbWF0aWNUcmFuc2FjdGlv
bihzX2N1cnJlbnREZWNsLT5wYXJlbnRFbGVtZW50KCkpOworICAgICAgICBpZiAobV9pc1JlY29y
ZGluZ0F1dG9tYXRpY1RyYW5zYWN0aW9uKQorICAgICAgICAgICAgc2hvdWxkUmVhZE9sZFZhbHVl
ID0gdHJ1ZTsKKyNlbmRpZgorCisgICAgICAgIEF0b21pY1N0cmluZyBvbGRWYWx1ZTsKKyAgICAg
ICAgaWYgKHNob3VsZFJlYWRPbGRWYWx1ZSkKKyAgICAgICAgICAgIG9sZFZhbHVlID0gc19jdXJy
ZW50RGVjbC0+cGFyZW50RWxlbWVudCgpLT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpzdHlsZUF0
dHIpOworCisjaWYgRU5BQkxFKE1VVEFUSU9OX09CU0VSVkVSUykKKyAgICAgICAgaWYgKG1fbXV0
YXRpb25SZWNpcGllbnRzKSB7CisgICAgICAgICAgICBBdG9taWNTdHJpbmcgcmVxdWVzdGVkT2xk
VmFsdWUgPSBtX211dGF0aW9uUmVjaXBpZW50cy0+aXNPbGRWYWx1ZVJlcXVlc3RlZCgpID8gb2xk
VmFsdWUgOiBudWxsQXRvbTsKKyAgICAgICAgICAgIG1fbXV0YXRpb24gPSBNdXRhdGlvblJlY29y
ZDo6Y3JlYXRlQXR0cmlidXRlcyhzX2N1cnJlbnREZWNsLT5wYXJlbnRFbGVtZW50KCksIEhUTUxO
YW1lczo6c3R5bGVBdHRyLCByZXF1ZXN0ZWRPbGRWYWx1ZSk7CisgICAgICAgIH0KKyNlbmRpZgor
I2lmIEVOQUJMRShVTkRPX01BTkFHRVIpCisgICAgICAgIGlmIChtX2lzUmVjb3JkaW5nQXV0b21h
dGljVHJhbnNhY3Rpb24pCisgICAgICAgICAgICBtX29sZFZhbHVlID0gb2xkVmFsdWU7CisjZW5k
aWYKIAotICAgICAgICBBdG9taWNTdHJpbmcgb2xkVmFsdWUgPSBtX211dGF0aW9uUmVjaXBpZW50
cy0+aXNPbGRWYWx1ZVJlcXVlc3RlZCgpID8gc19jdXJyZW50RGVjbC0+cGFyZW50RWxlbWVudCgp
LT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpzdHlsZUF0dHIpIDogbnVsbEF0b207Ci0gICAgICAg
IG1fbXV0YXRpb24gPSBNdXRhdGlvblJlY29yZDo6Y3JlYXRlQXR0cmlidXRlcyhzX2N1cnJlbnRE
ZWNsLT5wYXJlbnRFbGVtZW50KCksIEhUTUxOYW1lczo6c3R5bGVBdHRyLCBvbGRWYWx1ZSk7CiAj
ZW5kaWYKICAgICB9CiAKQEAgLTc0LDYgKzk4LDE0IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoTVVU
QVRJT05fT0JTRVJWRVJTKQogICAgICAgICBpZiAobV9tdXRhdGlvbiAmJiBzX3Nob3VsZERlbGl2
ZXIpCiAgICAgICAgICAgICBtX211dGF0aW9uUmVjaXBpZW50cy0+ZW5xdWV1ZU11dGF0aW9uUmVj
b3JkKG1fbXV0YXRpb24pOworI2VuZGlmCisjaWYgRU5BQkxFKFVORE9fTUFOQUdFUikKKyAgICAg
ICAgaWYgKG1faXNSZWNvcmRpbmdBdXRvbWF0aWNUcmFuc2FjdGlvbiAmJiBzX3Nob3VsZERlbGl2
ZXIpIHsKKyAgICAgICAgICAgIFVuZG9NYW5hZ2VyOjphZGRUcmFuc2FjdGlvblN0ZXAoQXR0ckNo
YW5naW5nRE9NVHJhbnNhY3Rpb25TdGVwOjpjcmVhdGUoCisgICAgICAgICAgICAgICAgc19jdXJy
ZW50RGVjbC0+cGFyZW50RWxlbWVudCgpLCBIVE1MTmFtZXM6OnN0eWxlQXR0ciwgbV9vbGRWYWx1
ZSwgc19jdXJyZW50RGVjbC0+cGFyZW50RWxlbWVudCgpLT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVz
OjpzdHlsZUF0dHIpKSk7CisgICAgICAgIH0KKyNlbmRpZgorI2lmIEVOQUJMRShNVVRBVElPTl9P
QlNFUlZFUlMpIHx8IEVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgICAgIHNfc2hvdWxkRGVsaXZl
ciA9IGZhbHNlOwogI2VuZGlmCiAgICAgICAgIGlmICghc19zaG91bGROb3RpZnlJbnNwZWN0b3Ip
IHsKQEAgLTg4LDcgKzEyMCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkSW52YWxpZGF0ZVN0eWxlQXR0cihsb2NhbENvcHlTdHlsZURlY2wtPnBh
cmVudEVsZW1lbnQoKS0+ZG9jdW1lbnQoKSwgbG9jYWxDb3B5U3R5bGVEZWNsLT5wYXJlbnRFbGVt
ZW50KCkpOwogICAgIH0KIAotI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpCisjaWYgRU5B
QkxFKE1VVEFUSU9OX09CU0VSVkVSUykgfHwgRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICB2b2lk
IGVucXVldWVNdXRhdGlvblJlY29yZCgpCiAgICAgewogICAgICAgICBzX3Nob3VsZERlbGl2ZXIg
PSB0cnVlOwpAQCAtMTA0LDE4ICsxMzYsMjQgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdW5zaWdu
ZWQgc19zY29wZUNvdW50OwogICAgIHN0YXRpYyBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRp
b24qIHNfY3VycmVudERlY2w7CiAgICAgc3RhdGljIGJvb2wgc19zaG91bGROb3RpZnlJbnNwZWN0
b3I7Ci0jaWYgRU5BQkxFKE1VVEFUSU9OX09CU0VSVkVSUykKKyNpZiBFTkFCTEUoTVVUQVRJT05f
T0JTRVJWRVJTKSB8fCBFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIHN0YXRpYyBib29sIHNfc2hv
dWxkRGVsaXZlcjsKKyNlbmRpZgogCisjaWYgRU5BQkxFKE1VVEFUSU9OX09CU0VSVkVSUykKICAg
ICBPd25QdHI8TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA+IG1fbXV0YXRpb25SZWNpcGll
bnRzOwogICAgIFJlZlB0cjxNdXRhdGlvblJlY29yZD4gbV9tdXRhdGlvbjsKICNlbmRpZgorI2lm
IEVOQUJMRShVTkRPX01BTkFHRVIpCisgICAgYm9vbCBtX2lzUmVjb3JkaW5nQXV0b21hdGljVHJh
bnNhY3Rpb247CisgICAgQXRvbWljU3RyaW5nIG1fb2xkVmFsdWU7CisjZW5kaWYKIH07CiAKIHVu
c2lnbmVkIFN0eWxlQXR0cmlidXRlTXV0YXRpb25TY29wZTo6c19zY29wZUNvdW50ID0gMDsKIFBy
b3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbiogU3R5bGVBdHRyaWJ1dGVNdXRhdGlvblNjb3Bl
OjpzX2N1cnJlbnREZWNsID0gMDsKIGJvb2wgU3R5bGVBdHRyaWJ1dGVNdXRhdGlvblNjb3BlOjpz
X3Nob3VsZE5vdGlmeUluc3BlY3RvciA9IGZhbHNlOwotI2lmIEVOQUJMRShNVVRBVElPTl9PQlNF
UlZFUlMpCisjaWYgRU5BQkxFKE1VVEFUSU9OX09CU0VSVkVSUykgfHwgRU5BQkxFKFVORE9fTUFO
QUdFUikKIGJvb2wgU3R5bGVBdHRyaWJ1dGVNdXRhdGlvblNjb3BlOjpzX3Nob3VsZERlbGl2ZXIg
PSBmYWxzZTsKICNlbmRpZgogCkBAIC0xNTgsNyArMTk2LDcgQEAgU3RyaW5nIFByb3BlcnR5U2V0
Q1NTU3R5bGVEZWNsYXJhdGlvbjo6YwogICAgIAogdm9pZCBQcm9wZXJ0eVNldENTU1N0eWxlRGVj
bGFyYXRpb246OnNldENzc1RleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBFeGNlcHRpb25Db2RlJiBl
YykKIHsKLSNpZiBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKQorI2lmIEVOQUJMRShNVVRBVElP
Tl9PQlNFUlZFUlMpIHx8IEVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgU3R5bGVBdHRyaWJ1dGVN
dXRhdGlvblNjb3BlIG11dGF0aW9uU2NvcGUodGhpcyk7CiAjZW5kaWYKICAgICB3aWxsTXV0YXRl
KCk7CkBAIC0xNjksNyArMjA3LDcgQEAgdm9pZCBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRp
b246OnNldAogCiAgICAgZGlkTXV0YXRlKFByb3BlcnR5Q2hhbmdlZCk7CiAKLSNpZiBFTkFCTEUo
TVVUQVRJT05fT0JTRVJWRVJTKQorI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpIHx8IEVO
QUJMRShVTkRPX01BTkFHRVIpCiAgICAgbXV0YXRpb25TY29wZS5lbnF1ZXVlTXV0YXRpb25SZWNv
cmQoKTsgICAgCiAjZW5kaWYKIH0KQEAgLTIxOSw3ICsyNTcsNyBAQCBib29sIFByb3BlcnR5U2V0
Q1NTU3R5bGVEZWNsYXJhdGlvbjo6aXNQCiAKIHZvaWQgUHJvcGVydHlTZXRDU1NTdHlsZURlY2xh
cmF0aW9uOjpzZXRQcm9wZXJ0eShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSwgY29uc3QgU3Ry
aW5nJiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBwcmlvcml0eSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7
Ci0jaWYgRU5BQkxFKE1VVEFUSU9OX09CU0VSVkVSUykKKyNpZiBFTkFCTEUoTVVUQVRJT05fT0JT
RVJWRVJTKSB8fCBFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIFN0eWxlQXR0cmlidXRlTXV0YXRp
b25TY29wZSBtdXRhdGlvblNjb3BlKHRoaXMpOwogI2VuZGlmCiAgICAgQ1NTUHJvcGVydHlJRCBw
cm9wZXJ0eUlEID0gY3NzUHJvcGVydHlJRChwcm9wZXJ0eU5hbWUpOwpAQCAtMjM4LDcgKzI3Niw3
IEBAIHZvaWQgUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpzZXQKICAgICBpZiAoY2hh
bmdlZCkgewogICAgICAgICAvLyBDU1MgRE9NIHJlcXVpcmVzIHJhaXNpbmcgU1lOVEFYX0VSUiBv
ZiBwYXJzaW5nIGZhaWxlZCwgYnV0IHRoaXMgaXMgdG9vIGRhbmdlcm91cyBmb3IgY29tcGF0aWJp
bGl0eSwKICAgICAgICAgLy8gc2VlIDxodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03Mjk2Pi4KLSNpZiBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKQorI2lmIEVOQUJMRShN
VVRBVElPTl9PQlNFUlZFUlMpIHx8IEVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgICAgIG11dGF0
aW9uU2NvcGUuZW5xdWV1ZU11dGF0aW9uUmVjb3JkKCk7CiAjZW5kaWYKICAgICB9CkBAIC0yNDYs
NyArMjg0LDcgQEAgdm9pZCBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OnNldAogCiBT
dHJpbmcgUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpyZW1vdmVQcm9wZXJ0eShjb25z
dCBTdHJpbmcmIHByb3BlcnR5TmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0jaWYgRU5BQkxF
KE1VVEFUSU9OX09CU0VSVkVSUykKKyNpZiBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKSB8fCBF
TkFCTEUoVU5ET19NQU5BR0VSKQogICAgIFN0eWxlQXR0cmlidXRlTXV0YXRpb25TY29wZSBtdXRh
dGlvblNjb3BlKHRoaXMpOwogI2VuZGlmCiAgICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEID0g
Y3NzUHJvcGVydHlJRChwcm9wZXJ0eU5hbWUpOwpAQCAtMjYyLDcgKzMwMCw3IEBAIFN0cmluZyBQ
cm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OnIKICAgICBkaWRNdXRhdGUoY2hhbmdlZCA/
IFByb3BlcnR5Q2hhbmdlZCA6IE5vQ2hhbmdlcyk7CiAKICAgICBpZiAoY2hhbmdlZCkgewotI2lm
IEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpCisjaWYgRU5BQkxFKE1VVEFUSU9OX09CU0VSVkVS
UykgfHwgRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICAgICAgbXV0YXRpb25TY29wZS5lbnF1ZXVl
TXV0YXRpb25SZWNvcmQoKTsKICNlbmRpZgogICAgIH0KQEAgLTI4MSw3ICszMTksNyBAQCBTdHJp
bmcgUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpnCiAKIHZvaWQgUHJvcGVydHlTZXRD
U1NTdHlsZURlY2xhcmF0aW9uOjpzZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5SUQgcHJv
cGVydHlJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogeyAKLSNpZiBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKQorI2lmIEVOQUJMRShN
VVRBVElPTl9PQlNFUlZFUlMpIHx8IEVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgU3R5bGVBdHRy
aWJ1dGVNdXRhdGlvblNjb3BlIG11dGF0aW9uU2NvcGUodGhpcyk7CiAjZW5kaWYKICAgICB3aWxs
TXV0YXRlKCk7CkBAIC0yOTIsNyArMzMwLDcgQEAgdm9pZCBQcm9wZXJ0eVNldENTU1N0eWxlRGVj
bGFyYXRpb246OnNldAogICAgIGRpZE11dGF0ZShjaGFuZ2VkID8gUHJvcGVydHlDaGFuZ2VkIDog
Tm9DaGFuZ2VzKTsKIAogICAgIGlmIChjaGFuZ2VkKSB7Ci0jaWYgRU5BQkxFKE1VVEFUSU9OX09C
U0VSVkVSUykKKyNpZiBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKSB8fCBFTkFCTEUoVU5ET19N
QU5BR0VSKQogICAgICAgICBtdXRhdGlvblNjb3BlLmVucXVldWVNdXRhdGlvblJlY29yZCgpOwog
I2VuZGlmCiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcAkocmV2
aXNpb24gMTI2MTM4KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiTm9kZVJlbmRlcmluZ0Nv
bnRleHQuaCIKICNpbmNsdWRlICJSZW5kZXJUZXh0LmgiCiAjaW5jbHVkZSAiVGV4dEJyZWFrSXRl
cmF0b3IuaCIKKyNpbmNsdWRlICJVbmRvTWFuYWdlci5oIgogCiB1c2luZyBuYW1lc3BhY2Ugc3Rk
OwogCkBAIC0xODMsNiArMTg0LDEzIEBAIHZvaWQgQ2hhcmFjdGVyRGF0YTo6c2V0Tm9kZVZhbHVl
KGNvbnN0IFMKIAogdm9pZCBDaGFyYWN0ZXJEYXRhOjpzZXREYXRhQW5kVXBkYXRlKGNvbnN0IFN0
cmluZyYgbmV3RGF0YSwgdW5zaWduZWQgb2Zmc2V0T2ZSZXBsYWNlZERhdGEsIHVuc2lnbmVkIG9s
ZExlbmd0aCwgdW5zaWduZWQgbmV3TGVuZ3RoKQogeworI2lmIEVOQUJMRShVTkRPX01BTkFHRVIp
CisgICAgaWYgKFVuZG9NYW5hZ2VyOjppc1JlY29yZGluZ0F1dG9tYXRpY1RyYW5zYWN0aW9uKHRo
aXMpKSB7CisgICAgICAgIGNvbnN0IFN0cmluZyYgcmVwbGFjaW5nRGF0YSA9IG5ld0RhdGEuc3Vi
c3RyaW5nKG9mZnNldE9mUmVwbGFjZWREYXRhLCBuZXdMZW5ndGgpOworICAgICAgICBjb25zdCBT
dHJpbmcmIHJlcGxhY2VkRGF0YSA9IG1fZGF0YS5zdWJzdHJpbmcob2Zmc2V0T2ZSZXBsYWNlZERh
dGEsIG9sZExlbmd0aCk7CisgICAgICAgIFVuZG9NYW5hZ2VyOjphZGRUcmFuc2FjdGlvblN0ZXAo
RGF0YVJlcGxhY2luZ0RPTVRyYW5zYWN0aW9uU3RlcDo6Y3JlYXRlKHRoaXMsIG9mZnNldE9mUmVw
bGFjZWREYXRhLCBvbGRMZW5ndGgsIHJlcGxhY2luZ0RhdGEsIHJlcGxhY2VkRGF0YSkpOworICAg
IH0KKyNlbmRpZgogICAgIFN0cmluZyBvbGREYXRhID0gbV9kYXRhOwogICAgIG1fZGF0YSA9IG5l
d0RhdGE7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAJKHJldmlzaW9u
IDEyNjEzOCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIlJlbmRlckJveC5oIgogI2luY2x1
ZGUgIlJlbmRlclRoZW1lLmgiCiAjaW5jbHVkZSAiUm9vdElubGluZUJveC5oIgorI2luY2x1ZGUg
IlVuZG9NYW5hZ2VyLmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogCkBAIC0zMjcsNiArMzI4LDEwIEBAIHN0YXRpYyB2b2lkIHdpbGxSZW1v
dmVDaGlsZChOb2RlKiBjaGlsZCkKICAgICBDaGlsZExpc3RNdXRhdGlvblNjb3BlKGNoaWxkLT5w
YXJlbnROb2RlKCkpLndpbGxSZW1vdmVDaGlsZChjaGlsZCk7CiAgICAgY2hpbGQtPm5vdGlmeU11
dGF0aW9uT2JzZXJ2ZXJzTm9kZVdpbGxEZXRhY2goKTsKICNlbmRpZgorI2lmIEVOQUJMRShVTkRP
X01BTkFHRVIpCisgICAgaWYgKFVuZG9NYW5hZ2VyOjppc1JlY29yZGluZ0F1dG9tYXRpY1RyYW5z
YWN0aW9uKGNoaWxkLT5wYXJlbnROb2RlKCkpKQorICAgICAgICBVbmRvTWFuYWdlcjo6YWRkVHJh
bnNhY3Rpb25TdGVwKE5vZGVSZW1vdmluZ0RPTVRyYW5zYWN0aW9uU3RlcDo6Y3JlYXRlKGNoaWxk
LT5wYXJlbnROb2RlKCksIGNoaWxkKSk7CisjZW5kaWYKIAogICAgIGRpc3BhdGNoQ2hpbGRSZW1v
dmFsRXZlbnRzKGNoaWxkKTsKICAgICBjaGlsZC0+ZG9jdW1lbnQoKS0+bm9kZVdpbGxCZVJlbW92
ZWQoY2hpbGQpOyAvLyBlLmcuIG11dGF0aW9uIGV2ZW50IGxpc3RlbmVyIGNhbiBjcmVhdGUgYSBu
ZXcgcmFuZ2UuCkBAIC0zNTEsNiArMzU2LDEwIEBAIHN0YXRpYyB2b2lkIHdpbGxSZW1vdmVDaGls
ZHJlbihDb250YWluZXIKICAgICAgICAgbXV0YXRpb24ud2lsbFJlbW92ZUNoaWxkKGNoaWxkKTsK
ICAgICAgICAgY2hpbGQtPm5vdGlmeU11dGF0aW9uT2JzZXJ2ZXJzTm9kZVdpbGxEZXRhY2goKTsK
ICNlbmRpZgorI2lmIEVOQUJMRShVTkRPX01BTkFHRVIpCisgICAgICAgIGlmIChVbmRvTWFuYWdl
cjo6aXNSZWNvcmRpbmdBdXRvbWF0aWNUcmFuc2FjdGlvbihjb250YWluZXIpKQorICAgICAgICAg
ICAgVW5kb01hbmFnZXI6OmFkZFRyYW5zYWN0aW9uU3RlcChOb2RlUmVtb3ZpbmdET01UcmFuc2Fj
dGlvblN0ZXA6OmNyZWF0ZShjb250YWluZXIsIGNoaWxkKSk7CisjZW5kaWYKIAogICAgICAgICAv
LyBmaXJlIHJlbW92ZWQgZnJvbSBkb2N1bWVudCBtdXRhdGlvbiBldmVudHMuCiAgICAgICAgIGRp
c3BhdGNoQ2hpbGRSZW1vdmFsRXZlbnRzKGNoaWxkKTsKQEAgLTk3OSw2ICs5ODgsMTEgQEAgc3Rh
dGljIHZvaWQgdXBkYXRlVHJlZUFmdGVySW5zZXJ0aW9uKENvbgogICAgIENoaWxkTGlzdE11dGF0
aW9uU2NvcGUocGFyZW50KS5jaGlsZEFkZGVkKGNoaWxkKTsKICNlbmRpZgogCisjaWYgRU5BQkxF
KFVORE9fTUFOQUdFUikKKyAgICBpZiAoVW5kb01hbmFnZXI6OmlzUmVjb3JkaW5nQXV0b21hdGlj
VHJhbnNhY3Rpb24ocGFyZW50KSkKKyAgICAgICAgVW5kb01hbmFnZXI6OmFkZFRyYW5zYWN0aW9u
U3RlcChOb2RlSW5zZXJ0aW5nRE9NVHJhbnNhY3Rpb25TdGVwOjpjcmVhdGUocGFyZW50LCBjaGls
ZCkpOworI2VuZGlmCisKICAgICBwYXJlbnQtPmNoaWxkcmVuQ2hhbmdlZChmYWxzZSwgY2hpbGQt
PnByZXZpb3VzU2libGluZygpLCBjaGlsZC0+bmV4dFNpYmxpbmcoKSwgMSk7CiAKICAgICBDaGls
ZE5vZGVJbnNlcnRpb25Ob3RpZmllcihwYXJlbnQpLm5vdGlmeShjaGlsZCk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxMjYxMzgpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NiwxMyArMTQ2LDYgQEAgRWxlbWVudDo6
fkVsZW1lbnQoKQogICAgICAgICBBU1NFUlQobV9hdHRyaWJ1dGVEYXRhKTsKICAgICAgICAgbV9h
dHRyaWJ1dGVEYXRhLT5kZXRhY2hBdHRyT2JqZWN0c0Zyb21FbGVtZW50KHRoaXMpOwogICAgIH0K
LQotI2lmIEVOQUJMRShVTkRPX01BTkFHRVIpCi0gICAgaWYgKGhhc1JhcmVEYXRhKCkgJiYgZWxl
bWVudFJhcmVEYXRhKCktPm1fdW5kb01hbmFnZXIpIHsKLSAgICAgICAgZWxlbWVudFJhcmVEYXRh
KCktPm1fdW5kb01hbmFnZXItPmRpc2Nvbm5lY3QoKTsKLSAgICAgICAgZWxlbWVudFJhcmVEYXRh
KCktPm1fdW5kb01hbmFnZXIuY2xlYXIoKTsKLSAgICB9Ci0jZW5kaWYKIH0KIAogaW5saW5lIEVs
ZW1lbnRSYXJlRGF0YSogRWxlbWVudDo6ZWxlbWVudFJhcmVEYXRhKCkgY29uc3QKQEAgLTkzMiw2
ICs5MjUsOSBAQCB2b2lkIEVsZW1lbnQ6OnJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUqCiAgICAg
aWYgKGRvY3VtZW50KCktPnBhZ2UoKSkKICAgICAgICAgZG9jdW1lbnQoKS0+cGFnZSgpLT5wb2lu
dGVyTG9ja0NvbnRyb2xsZXIoKS0+ZWxlbWVudFJlbW92ZWQodGhpcyk7CiAjZW5kaWYKKyNpZiBF
TkFCTEUoVU5ET19NQU5BR0VSKQorICAgIGRpc2Nvbm5lY3RVbmRvTWFuYWdlcigpOworI2VuZGlm
CiAKICAgICBzZXRTYXZlZExheWVyU2Nyb2xsT2Zmc2V0KEludFNpemUoKSk7CiAKQEAgLTIwNTUs
NiArMjA1MSwxMSBAQCB2b2lkIEVsZW1lbnQ6OndpbGxNb2RpZnlBdHRyaWJ1dGUoY29uc3QgCiAg
ICAgICAgIHJlY2lwaWVudHMtPmVucXVldWVNdXRhdGlvblJlY29yZChNdXRhdGlvblJlY29yZDo6
Y3JlYXRlQXR0cmlidXRlcyh0aGlzLCBuYW1lLCBvbGRWYWx1ZSkpOwogI2VuZGlmCiAKKyNpZiBF
TkFCTEUoVU5ET19NQU5BR0VSKQorICAgIGlmIChVbmRvTWFuYWdlcjo6aXNSZWNvcmRpbmdBdXRv
bWF0aWNUcmFuc2FjdGlvbih0aGlzKSkKKyAgICAgICAgVW5kb01hbmFnZXI6OmFkZFRyYW5zYWN0
aW9uU3RlcChBdHRyQ2hhbmdpbmdET01UcmFuc2FjdGlvblN0ZXA6OmNyZWF0ZSh0aGlzLCBuYW1l
LCBvbGRWYWx1ZSwgbmV3VmFsdWUpKTsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikK
ICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxNb2RpZnlET01BdHRyKGRvY3VtZW50
KCksIHRoaXMsIG9sZFZhbHVlLCBuZXdWYWx1ZSk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRE9NVHJhbnNhY3Rpb25TdGVwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0RPTVRyYW5zYWN0aW9uU3RlcC5jcHAJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RPTVRyYW5zYWN0aW9uU3RlcC5jcHAJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMTY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEdPT0dMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBHT09HTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJM
RShVTkRPX01BTkFHRVIpCisKKyNpbmNsdWRlICJET01UcmFuc2FjdGlvblN0ZXAuaCIKKworI2lu
Y2x1ZGUgIkNoYXJhY3RlckRhdGEuaCIKKyNpbmNsdWRlICJDb250YWluZXJOb2RlLmgiCisjaW5j
bHVkZSAiRWxlbWVudC5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJO
b2RlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworTm9kZUluc2VydGluZ0RPTVRyYW5zYWN0
aW9uU3RlcDo6Tm9kZUluc2VydGluZ0RPTVRyYW5zYWN0aW9uU3RlcChOb2RlKiBub2RlLCBOb2Rl
KiBjaGlsZCkKKyAgICA6IG1fbm9kZShub2RlKQorICAgICwgbV9yZWZDaGlsZChjaGlsZC0+bmV4
dFNpYmxpbmcoKSkKKyAgICAsIG1fY2hpbGQoY2hpbGQpCit7Cit9CisKK1Bhc3NSZWZQdHI8Tm9k
ZUluc2VydGluZ0RPTVRyYW5zYWN0aW9uU3RlcD4gTm9kZUluc2VydGluZ0RPTVRyYW5zYWN0aW9u
U3RlcDo6Y3JlYXRlKE5vZGUqIG5vZGUsIE5vZGUqIGNoaWxkKQoreworICAgIHJldHVybiBhZG9w
dFJlZihuZXcgTm9kZUluc2VydGluZ0RPTVRyYW5zYWN0aW9uU3RlcChub2RlLCBjaGlsZCkpOwor
fQorCit2b2lkIE5vZGVJbnNlcnRpbmdET01UcmFuc2FjdGlvblN0ZXA6OnVuYXBwbHkoKQorewor
ICAgIGlmIChtX2NoaWxkICYmIG1fY2hpbGQtPnBhcmVudE5vZGUoKSAhPSBtX25vZGUuZ2V0KCkp
CisgICAgICAgIHJldHVybjsKKyAgICBpZiAobV9yZWZDaGlsZCAmJiBtX3JlZkNoaWxkLT5wYXJl
bnROb2RlKCkgIT0gbV9ub2RlLmdldCgpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKG1fcmVm
Q2hpbGQgJiYgbV9yZWZDaGlsZC0+cHJldmlvdXNTaWJsaW5nKCkgIT0gbV9jaGlsZC5nZXQoKSkK
KyAgICAgICAgcmV0dXJuOworICAgIAorICAgIEV4Y2VwdGlvbkNvZGUgZWM7CisgICAgbV9ub2Rl
LT5yZW1vdmVDaGlsZChtX2NoaWxkLmdldCgpLCBlYyk7Cit9CisKK3ZvaWQgTm9kZUluc2VydGlu
Z0RPTVRyYW5zYWN0aW9uU3RlcDo6cmVhcHBseSgpCit7CisgICAgaWYgKG1fY2hpbGQgJiYgbV9j
aGlsZC0+cGFyZW50Tm9kZSgpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKG1fcmVmQ2hpbGQg
JiYgbV9yZWZDaGlsZC0+cGFyZW50Tm9kZSgpICE9IG1fbm9kZS5nZXQoKSkKKyAgICAgICAgcmV0
dXJuOworICAgIAorICAgIEV4Y2VwdGlvbkNvZGUgZWM7CisgICAgbV9ub2RlLT5pbnNlcnRCZWZv
cmUobV9jaGlsZCwgbV9yZWZDaGlsZC5nZXQoKSwgZWMpOworfQorCitOb2RlUmVtb3ZpbmdET01U
cmFuc2FjdGlvblN0ZXA6Ok5vZGVSZW1vdmluZ0RPTVRyYW5zYWN0aW9uU3RlcChOb2RlKiBub2Rl
LCBOb2RlKiBjaGlsZCkKKyAgICA6IG1fbm9kZShub2RlKQorICAgICwgbV9yZWZDaGlsZChjaGls
ZC0+bmV4dFNpYmxpbmcoKSkKKyAgICAsIG1fY2hpbGQoY2hpbGQpCit7Cit9CisKK1Bhc3NSZWZQ
dHI8Tm9kZVJlbW92aW5nRE9NVHJhbnNhY3Rpb25TdGVwPiBOb2RlUmVtb3ZpbmdET01UcmFuc2Fj
dGlvblN0ZXA6OmNyZWF0ZShOb2RlKiBub2RlLCBOb2RlKiBjaGlsZCkKK3sKKyAgICByZXR1cm4g
YWRvcHRSZWYobmV3IE5vZGVSZW1vdmluZ0RPTVRyYW5zYWN0aW9uU3RlcChub2RlLCBjaGlsZCkp
OworfQorCit2b2lkIE5vZGVSZW1vdmluZ0RPTVRyYW5zYWN0aW9uU3RlcDo6dW5hcHBseSgpCit7
CisgICAgaWYgKG1fY2hpbGQgJiYgbV9jaGlsZC0+cGFyZW50Tm9kZSgpKQorICAgICAgICByZXR1
cm47CisgICAgaWYgKG1fcmVmQ2hpbGQgJiYgbV9yZWZDaGlsZC0+cGFyZW50Tm9kZSgpICE9IG1f
bm9kZS5nZXQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRXhjZXB0aW9uQ29kZSBlYzsKKyAg
ICBtX25vZGUtPmluc2VydEJlZm9yZShtX2NoaWxkLCBtX3JlZkNoaWxkLmdldCgpLCBlYyk7Cit9
CisKK3ZvaWQgTm9kZVJlbW92aW5nRE9NVHJhbnNhY3Rpb25TdGVwOjpyZWFwcGx5KCkKK3sKKyAg
ICBpZiAobV9jaGlsZCAmJiBtX2NoaWxkLT5wYXJlbnROb2RlKCkgIT0gbV9ub2RlLmdldCgpKQor
ICAgICAgICByZXR1cm47CisgICAgaWYgKG1fcmVmQ2hpbGQgJiYgbV9yZWZDaGlsZC0+cGFyZW50
Tm9kZSgpICE9IG1fbm9kZS5nZXQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChtX3JlZkNo
aWxkICYmIG1fcmVmQ2hpbGQtPnByZXZpb3VzU2libGluZygpICE9IG1fY2hpbGQuZ2V0KCkpCisg
ICAgICAgIHJldHVybjsKKyAgICAKKyAgICBFeGNlcHRpb25Db2RlIGVjOworICAgIG1fbm9kZS0+
cmVtb3ZlQ2hpbGQobV9jaGlsZC5nZXQoKSwgZWMpOworfQorCitEYXRhUmVwbGFjaW5nRE9NVHJh
bnNhY3Rpb25TdGVwOjpEYXRhUmVwbGFjaW5nRE9NVHJhbnNhY3Rpb25TdGVwKENoYXJhY3RlckRh
dGEqIG5vZGUsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgY291bnQsIGNvbnN0IFN0cmluZyYg
ZGF0YSwgY29uc3QgU3RyaW5nJiByZXBsYWNlZERhdGEpCisgICAgOiBtX25vZGUobm9kZSkKKyAg
ICAsIG1fb2Zmc2V0KG9mZnNldCkKKyAgICAsIG1fY291bnQoY291bnQpCisgICAgLCBtX2RhdGEo
ZGF0YSkKKyAgICAsIG1fcmVwbGFjZWREYXRhKHJlcGxhY2VkRGF0YSkKK3sKK30KKworUGFzc1Jl
ZlB0cjxEYXRhUmVwbGFjaW5nRE9NVHJhbnNhY3Rpb25TdGVwPiBEYXRhUmVwbGFjaW5nRE9NVHJh
bnNhY3Rpb25TdGVwOjpjcmVhdGUoQ2hhcmFjdGVyRGF0YSogbm9kZSwgdW5zaWduZWQgb2Zmc2V0
LCB1bnNpZ25lZCBjb3VudCwgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBTdHJpbmcmIHJlcGxh
Y2VkRGF0YSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IERhdGFSZXBsYWNpbmdET01UcmFu
c2FjdGlvblN0ZXAobm9kZSwgb2Zmc2V0LCBjb3VudCwgZGF0YSwgcmVwbGFjZWREYXRhKSk7Cit9
CisKK3ZvaWQgRGF0YVJlcGxhY2luZ0RPTVRyYW5zYWN0aW9uU3RlcDo6dW5hcHBseSgpCit7Cisg
ICAgaWYgKG1fbm9kZS0+bGVuZ3RoKCkgPCBtX29mZnNldCkKKyAgICAgICAgcmV0dXJuOworICAg
IAorICAgIEV4Y2VwdGlvbkNvZGUgZWM7CisgICAgbV9ub2RlLT5yZXBsYWNlRGF0YShtX29mZnNl
dCwgbV9kYXRhLmxlbmd0aCgpLCBtX3JlcGxhY2VkRGF0YSwgZWMpOworfQorCit2b2lkIERhdGFS
ZXBsYWNpbmdET01UcmFuc2FjdGlvblN0ZXA6OnJlYXBwbHkoKQoreworICAgIGlmIChtX25vZGUt
Pmxlbmd0aCgpIDwgbV9vZmZzZXQpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBFeGNlcHRp
b25Db2RlIGVjOworICAgIG1fbm9kZS0+cmVwbGFjZURhdGEobV9vZmZzZXQsIG1fY291bnQsIG1f
ZGF0YSwgZWMpOworfQorCitBdHRyQ2hhbmdpbmdET01UcmFuc2FjdGlvblN0ZXA6OkF0dHJDaGFu
Z2luZ0RPTVRyYW5zYWN0aW9uU3RlcChFbGVtZW50KiBlbGVtZW50LCBjb25zdCBRdWFsaWZpZWRO
YW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBBdG9taWNTdHJp
bmcmIG5ld1ZhbHVlKQorICAgIDogbV9lbGVtZW50KGVsZW1lbnQpCisgICAgLCBtX25hbWUobmFt
ZSkKKyAgICAsIG1fb2xkVmFsdWUob2xkVmFsdWUpCisgICAgLCBtX25ld1ZhbHVlKG5ld1ZhbHVl
KQoreworfQorCitQYXNzUmVmUHRyPEF0dHJDaGFuZ2luZ0RPTVRyYW5zYWN0aW9uU3RlcD4gQXR0
ckNoYW5naW5nRE9NVHJhbnNhY3Rpb25TdGVwOjpjcmVhdGUoRWxlbWVudCogZWxlbWVudCwgY29u
c3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBvbGRWYWx1ZSwgY29u
c3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEF0
dHJDaGFuZ2luZ0RPTVRyYW5zYWN0aW9uU3RlcChlbGVtZW50LCBuYW1lLCBvbGRWYWx1ZSwgbmV3
VmFsdWUpKTsKK30KKwordm9pZCBBdHRyQ2hhbmdpbmdET01UcmFuc2FjdGlvblN0ZXA6OnVuYXBw
bHkoKQoreworICAgIG1fZWxlbWVudC0+c2V0QXR0cmlidXRlKG1fbmFtZSwgbV9vbGRWYWx1ZSk7
Cit9CisKK3ZvaWQgQXR0ckNoYW5naW5nRE9NVHJhbnNhY3Rpb25TdGVwOjpyZWFwcGx5KCkKK3sK
KyAgICBtX2VsZW1lbnQtPnNldEF0dHJpYnV0ZShtX25hbWUsIG1fbmV3VmFsdWUpOworfQorCit9
CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9ET01UcmFuc2FjdGlvblN0
ZXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RPTVRyYW5zYWN0aW9u
U3RlcC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9ET01UcmFuc2Fj
dGlvblN0ZXAuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMTQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgR09PR0xFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEdPT0dMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBE
T01UcmFuc2FjdGlvblN0ZXBfaAorI2RlZmluZSBET01UcmFuc2FjdGlvblN0ZXBfaAorCisjaWYg
RU5BQkxFKFVORE9fTUFOQUdFUikKKworI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5j
bHVkZSAiUXVhbGlmaWVkTmFtZS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
Q2hhcmFjdGVyRGF0YTsKK2NsYXNzIEVsZW1lbnQ7CitjbGFzcyBOb2RlOworCitjbGFzcyBET01U
cmFuc2FjdGlvblN0ZXAgOiBwdWJsaWMgUmVmQ291bnRlZDxET01UcmFuc2FjdGlvblN0ZXA+IHsK
K3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5ET01UcmFuc2FjdGlvblN0ZXAoKSB7IH0KKworICAgIHZp
cnR1YWwgdm9pZCB1bmFwcGx5KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWFwcGx5KCkgPSAw
OworfTsKKworY2xhc3MgTm9kZUluc2VydGluZ0RPTVRyYW5zYWN0aW9uU3RlcCA6IHB1YmxpYyBE
T01UcmFuc2FjdGlvblN0ZXAgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5vZGVJ
bnNlcnRpbmdET01UcmFuc2FjdGlvblN0ZXA+IGNyZWF0ZShOb2RlKiwgTm9kZSogY2hpbGQpOwor
ICAgIHZpcnR1YWwgdm9pZCB1bmFwcGx5KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJl
YXBwbHkoKSBPVkVSUklERTsKKworcHJpdmF0ZToKKyAgICBOb2RlSW5zZXJ0aW5nRE9NVHJhbnNh
Y3Rpb25TdGVwKE5vZGUqLCBOb2RlKiBjaGlsZCk7CisgICAgCisgICAgUmVmUHRyPE5vZGU+IG1f
bm9kZTsKKyAgICBSZWZQdHI8Tm9kZT4gbV9yZWZDaGlsZDsKKyAgICBSZWZQdHI8Tm9kZT4gbV9j
aGlsZDsKK307CisKK2NsYXNzIE5vZGVSZW1vdmluZ0RPTVRyYW5zYWN0aW9uU3RlcCA6IHB1Ymxp
YyBET01UcmFuc2FjdGlvblN0ZXAgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5v
ZGVSZW1vdmluZ0RPTVRyYW5zYWN0aW9uU3RlcD4gY3JlYXRlKE5vZGUqLCBOb2RlKiBjaGlsZCk7
CisgICAgdmlydHVhbCB2b2lkIHVuYXBwbHkoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
cmVhcHBseSgpIE9WRVJSSURFOworICAgIAorcHJpdmF0ZToKKyAgICBOb2RlUmVtb3ZpbmdET01U
cmFuc2FjdGlvblN0ZXAoTm9kZSosIE5vZGUqIGNoaWxkKTsKKyAgICAKKyAgICBSZWZQdHI8Tm9k
ZT4gbV9ub2RlOworICAgIFJlZlB0cjxOb2RlPiBtX3JlZkNoaWxkOworICAgIFJlZlB0cjxOb2Rl
PiBtX2NoaWxkOworfTsKKworY2xhc3MgRGF0YVJlcGxhY2luZ0RPTVRyYW5zYWN0aW9uU3RlcCA6
IHB1YmxpYyBET01UcmFuc2FjdGlvblN0ZXAgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVm
UHRyPERhdGFSZXBsYWNpbmdET01UcmFuc2FjdGlvblN0ZXA+IGNyZWF0ZShDaGFyYWN0ZXJEYXRh
KiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBjb3VudCwgY29uc3QgU3RyaW5nJiBkYXRhLCBj
b25zdCBTdHJpbmcmIHJlcGxhY2VkRGF0YSk7CisgICAgdmlydHVhbCB2b2lkIHVuYXBwbHkoKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVhcHBseSgpIE9WRVJSSURFOworICAgIAorcHJp
dmF0ZToKKyAgICBEYXRhUmVwbGFjaW5nRE9NVHJhbnNhY3Rpb25TdGVwKENoYXJhY3RlckRhdGEq
LCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGNvdW50LCBjb25zdCBTdHJpbmcmIGRhdGEsIGNv
bnN0IFN0cmluZyYgcmVwbGFjZWREYXRhKTsKKyAgICAKKyAgICBSZWZQdHI8Q2hhcmFjdGVyRGF0
YT4gbV9ub2RlOworICAgIHVuc2lnbmVkIG1fb2Zmc2V0OworICAgIHVuc2lnbmVkIG1fY291bnQ7
CisgICAgU3RyaW5nIG1fZGF0YTsKKyAgICBTdHJpbmcgbV9yZXBsYWNlZERhdGE7Cit9OworCitj
bGFzcyBBdHRyQ2hhbmdpbmdET01UcmFuc2FjdGlvblN0ZXAgOiBwdWJsaWMgRE9NVHJhbnNhY3Rp
b25TdGVwIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxBdHRyQ2hhbmdpbmdET01U
cmFuc2FjdGlvblN0ZXA+IGNyZWF0ZShFbGVtZW50KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNv
bnN0IEF0b21pY1N0cmluZyYgb2xkVmFsdWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFsdWUp
OworICAgIHZpcnR1YWwgdm9pZCB1bmFwcGx5KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IHJlYXBwbHkoKSBPVkVSUklERTsKKyAgICAKK3ByaXZhdGU6CisgICAgQXR0ckNoYW5naW5nRE9N
VHJhbnNhY3Rpb25TdGVwKEVsZW1lbnQqLCBjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRv
bWljU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSk7CisgICAg
CisgICAgUmVmUHRyPEVsZW1lbnQ+IG1fZWxlbWVudDsKKyAgICBRdWFsaWZpZWROYW1lIG1fbmFt
ZTsKKyAgICBBdG9taWNTdHJpbmcgbV9vbGRWYWx1ZTsKKyAgICBBdG9taWNTdHJpbmcgbV9uZXdW
YWx1ZTsKK307CisKK30KKworI2VuZGlmCisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9VbmRvTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRp
dGluZy9VbmRvTWFuYWdlci5jcHAJKHJldmlzaW9uIDEyNjEzOCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVW5kb01hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMSArMzMsMTIg
QEAKIAogI2lmIEVOQUJMRShVTkRPX01BTkFHRVIpCiAKLSNpbmNsdWRlICJET01UcmFuc2FjdGlv
bi5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitET01U
cmFuc2FjdGlvbiogVW5kb01hbmFnZXI6OnNfcmVjb3JkaW5nRE9NVHJhbnNhY3Rpb24gPSAwOwor
CiBQYXNzUmVmUHRyPFVuZG9NYW5hZ2VyPiBVbmRvTWFuYWdlcjo6Y3JlYXRlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIE5vZGUqIGhvc3QpCiB7CiAgICAgUmVmUHRyPFVuZG9NYW5h
Z2VyPiB1bmRvTWFuYWdlciA9IGFkb3B0UmVmKG5ldyBVbmRvTWFuYWdlcihjb250ZXh0LCBob3N0
KSk7CkBAIC0yMTMsNiArMjE0LDI0IEBAIGJvb2wgVW5kb01hbmFnZXI6OmlzQ29ubmVjdGVkKCkK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBVbmRvTWFuYWdlcjo6aXNSZWNvcmRpbmdBdXRv
bWF0aWNUcmFuc2FjdGlvbihOb2RlKiBub2RlKQoreworICAgIC8vIFdlIG5lZWQgdG8gY2hlY2sg
dGhhdCB0cmFuc2FjdGlvbiBzdGlsbCBoYXMgaXRzIHVuZG9tYW5hZ2VyIGJlY2F1c2UKKyAgICAv
LyB0cmFuc2FjdGlvbiBjYW4gZGlzY29ubmVjdCBpdHMgdW5kb21hbmFnZXIsIHdoaWNoIHdpbGwg
Y2xlYXIgdGhlIHVuZG8vcmVkbyBzdGFja3MuCisgICAgaWYgKCFzX3JlY29yZGluZ0RPTVRyYW5z
YWN0aW9uIHx8ICFzX3JlY29yZGluZ0RPTVRyYW5zYWN0aW9uLT51bmRvTWFuYWdlcigpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgTm9kZSogaG9zdCA9IHNfcmVjb3JkaW5nRE9NVHJhbnNh
Y3Rpb24tPnVuZG9NYW5hZ2VyKCktPnVuZG9TY29wZUhvc3QoKTsKKyAgICBpZiAoIWhvc3QpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gaG9zdC0+Y29udGFpbnMobm9kZSk7Cit9
CisKK3ZvaWQgVW5kb01hbmFnZXI6OmFkZFRyYW5zYWN0aW9uU3RlcChQYXNzUmVmUHRyPERPTVRy
YW5zYWN0aW9uU3RlcD4gc3RlcCkKK3sKKyAgICBBU1NFUlQoc19yZWNvcmRpbmdET01UcmFuc2Fj
dGlvbik7CisgICAgc19yZWNvcmRpbmdET01UcmFuc2FjdGlvbi0+YWRkVHJhbnNhY3Rpb25TdGVw
KHN0ZXApOworfQorCiB9CiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9V
bmRvTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVW5kb01h
bmFnZXIuaAkocmV2aXNpb24gMTI2MTM4KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9VbmRv
TWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiAjaWYgRU5BQkxFKFVO
RE9fTUFOQUdFUikKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkRP
TVRyYW5zYWN0aW9uLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVyLmgiCiAj
aW5jbHVkZSAiVW5kb1N0ZXAuaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CkBAIC00NSw3ICs0
Niw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRE9NVHJhbnNhY3Rpb247CiBj
bGFzcyBOb2RlOwogCiB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8VW5kb1N0ZXA+ID4gVW5kb01hbmFn
ZXJFbnRyeTsKQEAgLTc4LDYgKzc4LDEwIEBAIHB1YmxpYzoKICAgICBOb2RlKiB1bmRvU2NvcGVI
b3N0KCkgY29uc3QgeyByZXR1cm4gbV91bmRvU2NvcGVIb3N0OyB9CiAgICAgTm9kZSogb3duZXJO
b2RlKCkgY29uc3QgeyByZXR1cm4gbV91bmRvU2NvcGVIb3N0OyB9CiAKKyAgICBzdGF0aWMgdm9p
ZCBzZXRSZWNvcmRpbmdET01UcmFuc2FjdGlvbihET01UcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24p
IHsgc19yZWNvcmRpbmdET01UcmFuc2FjdGlvbiA9IHRyYW5zYWN0aW9uOyB9CisgICAgc3RhdGlj
IGJvb2wgaXNSZWNvcmRpbmdBdXRvbWF0aWNUcmFuc2FjdGlvbihOb2RlKik7CisgICAgc3RhdGlj
IHZvaWQgYWRkVHJhbnNhY3Rpb25TdGVwKFBhc3NSZWZQdHI8RE9NVHJhbnNhY3Rpb25TdGVwPik7
CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgVW5kb01hbmFnZXIoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIE5vZGUqIGhvc3QpOwogICAgIGJvb2wgaXNDb25uZWN0ZWQoKTsKQEAgLTg3LDYgKzkx
LDggQEAgcHJpdmF0ZToKICAgICBVbmRvTWFuYWdlclN0YWNrIG1fcmVkb1N0YWNrOwogICAgIGJv
b2wgbV9pc0luUHJvZ3Jlc3M7CiAgICAgT3duUHRyPFVuZG9NYW5hZ2VyRW50cnk+IG1faW5Qcm9n
cmVzc0VudHJ5OworCisgICAgc3RhdGljIERPTVRyYW5zYWN0aW9uKiBzX3JlY29yZGluZ0RPTVRy
YW5zYWN0aW9uOwogfTsKICAgICAKIH0KSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNjEzOCkKKysrIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDEy
LTA4LTE3ICBTdWtvbHNhayBTYWtzaHV3b25nICA8c3Vrb2xzYWtAZ29vZ2xlLmNvbT4KKworICAg
ICAgICBJbXBsZW1lbnQgVW5kb01hbmFnZXIncyBhdXRvbWF0aWMgRE9NIHRyYW5zYWN0aW9ucwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE4MTIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGVkaXRpbmcv
dW5kb21hbmFnZXIvYXV0b21hdGljLXRyYW5zYWN0aW9uLWF0dHJpYnV0ZS1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvdW5kb21hbmFnZXIvYXV0b21hdGljLXRyYW5zYWN0
aW9uLWF0dHJpYnV0ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3VuZG9tYW5hZ2Vy
L2F1dG9tYXRpYy10cmFuc2FjdGlvbi1kYXRhLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogZWRpdGluZy91bmRvbWFuYWdlci9hdXRvbWF0aWMtdHJhbnNhY3Rpb24tZGF0YS5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3VuZG9tYW5hZ2VyL2F1dG9tYXRpYy10cmFuc2FjdGlv
bi1ub2RlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy91bmRvbWFuYWdl
ci9hdXRvbWF0aWMtdHJhbnNhY3Rpb24tbm9kZS5odG1sOiBBZGRlZC4KKwogMjAxMi0wOC0yMCAg
S2Vpc2hpIEhhdHRvcmkgIDxrZWlzaGlAd2Via2l0Lm9yZz4KIAogICAgICAgICBDbGlja2luZyBp
bnB1dCB0eXBlPXJhbmdlIHdpdGggcGFkZGluZyBvciBib3JkZXIgc2V0cyB3cm9uZyB2YWx1ZQpJ
bmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvbWFuYWdlci9hdXRvbWF0aWMtdHJhbnNhY3Rp
b24tYXR0cmlidXRlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0
aW5nL3VuZG9tYW5hZ2VyL2F1dG9tYXRpYy10cmFuc2FjdGlvbi1hdHRyaWJ1dGUtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvbWFuYWdlci9hdXRv
bWF0aWMtdHJhbnNhY3Rpb24tYXR0cmlidXRlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwxNSBAQAorVGhpcyB0ZXN0cyB0aGF0IFVuZG9NYW5hZ2VyIGNvcnJlY3RseSByZXZl
cnRzL3JlYXBwbGllcyBhdXRvbWF0aWMgRE9NIHRyYW5zYWN0aW9ucyBvbiBhdHRyaWJ1dGUgY2hh
bmdlcy4gV2Ugc3RhcnQgd2l0aCBhIHNwYW4gdGhhdCBoYXMgYmx1ZSBib3JkZXIgYW5kIGRvZXNu
J3QgaGF2ZSB0aXRsZSBvciBjb250ZW50ZWRpdGFibGUgYXR0cmlidXRlcy4gCisKK1BBU1MgdHJh
bnNhY3QgMTogc2V0IHRpdGxlIHRvICJ0ZXN0IiAKK1BBU1MgdHJhbnNhY3QgMjogc2V0IGNvbnRl
bnRlZGl0YWJsZSB0byAidHJ1ZSIgCitQQVNTIHRyYW5zYWN0IDM6IHNldCBib3JkZXIgY29sb3Ig
dG8gcmVkIAorUEFTUyB0cmFuc2FjdCA0OiByZW1vdmUgYXR0cmlidXRlIHRpdGxlIAorUEFTUyB1
bmRvIDQ6IHRpdGxlIGlzIGJhY2sgdG8gInRlc3QiIAorUEFTUyB1bmRvIDM6IGJvcmRlciBjb2xv
ciBpcyBiYWNrIHRvIGJsdWUgCitQQVNTIHVuZG8gMjogY29udGVudGVkaXRhYmxlIGlzIGJhY2sg
dG8gImluaGVyaXQiIAorUEFTUyB1bmRvIDE6IHRpdGxlIGlzIGJhY2sgdG8gYW4gZW1wdHkgc3Ry
aW5nIAorUEFTUyByZWRvIDE6IHRpdGxlIGlzICJ0ZXN0IiBhZ2FpbiAKK1BBU1MgcmVkbyAyOiBj
b250ZW50RWRpdGFibGUgaXMgInRydWUiIGFnYWluIAorUEFTUyByZWRvIDM6IGJvcmRlciBjb2xv
ciBpcyByZWQgYWdhaW4gCitQQVNTIHJlZG8gNDogdGl0bGUgaXMgYW4gZW1wdHkgc3RyaW5nIGFn
YWluIAorCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2VyL2F1dG9tYXRpYy10
cmFuc2FjdGlvbi1hdHRyaWJ1dGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0
aW5nL3VuZG9tYW5hZ2VyL2F1dG9tYXRpYy10cmFuc2FjdGlvbi1hdHRyaWJ1dGUuaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIvYXV0b21hdGljLXRy
YW5zYWN0aW9uLWF0dHJpYnV0ZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg3IEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+YXV0b21hdGljIHRyYW5zYWN0
aW9uIG9uIGF0dHJpYnV0ZXM8L3RpdGxlPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90
ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorVGhpcyB0ZXN0
cyB0aGF0IFVuZG9NYW5hZ2VyIGNvcnJlY3RseSByZXZlcnRzL3JlYXBwbGllcyBhdXRvbWF0aWMg
RE9NIHRyYW5zYWN0aW9ucworb24gYXR0cmlidXRlIGNoYW5nZXMuIFdlIHN0YXJ0IHdpdGggYSBz
cGFuIHRoYXQgaGFzIGJsdWUgYm9yZGVyIGFuZCBkb2Vzbid0IGhhdmUgdGl0bGUKK29yIGNvbnRl
bnRlZGl0YWJsZSBhdHRyaWJ1dGVzLgorCis8c3BhbiBpZD0ic3BhbiIgc3R5bGU9ImJvcmRlcjog
MXB4IGJsdWUgc29saWQiPjwvc3Bhbj4KKzxzY3JpcHQ+Cit2YXIgdW5kb01hbmFnZXIgPSBkb2N1
bWVudC51bmRvTWFuYWdlcjsKK3ZhciBzcGFuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNw
YW4iKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICB1bmRvTWFuYWdlci50cmFuc2FjdCh7Cisg
ICAgICAgICJleGVjdXRlQXV0b21hdGljIjogZnVuY3Rpb24oKSB7IHNwYW4udGl0bGUgPSAidGVz
dCI7IH0KKyAgICB9KTsKKyAgICBhc3NlcnRfZXF1YWxzKHNwYW4udGl0bGUsICJ0ZXN0Iik7Cit9
LCAidHJhbnNhY3QgMTogc2V0IHRpdGxlIHRvIFwidGVzdFwiIik7CisKK3Rlc3QoZnVuY3Rpb24o
KSB7CisgICAgdW5kb01hbmFnZXIudHJhbnNhY3QoeworICAgICAgICAiZXhlY3V0ZUF1dG9tYXRp
YyI6IGZ1bmN0aW9uKCkgeyBzcGFuLnNldEF0dHJpYnV0ZSgiY29udGVudGVkaXRhYmxlIiwgInRy
dWUiKTsgfQorICAgIH0pOworICAgIGFzc2VydF9lcXVhbHMoc3Bhbi5jb250ZW50RWRpdGFibGUs
ICJ0cnVlIik7Cit9LCAidHJhbnNhY3QgMjogc2V0IGNvbnRlbnRlZGl0YWJsZSB0byBcInRydWVc
IiIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIHVuZG9NYW5hZ2VyLnRyYW5zYWN0KHsKKyAg
ICAgICAgImV4ZWN1dGVBdXRvbWF0aWMiOiBmdW5jdGlvbigpIHsgc3Bhbi5zdHlsZS5jc3NUZXh0
ID0gImJvcmRlcjogMXB4IHJlZCBzb2xpZCI7IH0KKyAgICB9KTsKKyAgICBhc3NlcnRfZXF1YWxz
KHNwYW4uc3R5bGUuYm9yZGVyQ29sb3IsICJyZWQiKTsKK30sICJ0cmFuc2FjdCAzOiBzZXQgYm9y
ZGVyIGNvbG9yIHRvIHJlZCIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIHVuZG9NYW5hZ2Vy
LnRyYW5zYWN0KHsKKyAgICAgICAgImV4ZWN1dGVBdXRvbWF0aWMiOiBmdW5jdGlvbigpIHsgc3Bh
bi5yZW1vdmVBdHRyaWJ1dGUoInRpdGxlIik7IH0KKyAgICB9KTsKKyAgICBhc3NlcnRfZXF1YWxz
KHNwYW4udGl0bGUsICIiKTsKK30sICJ0cmFuc2FjdCA0OiByZW1vdmUgYXR0cmlidXRlIHRpdGxl
Iik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgdW5kb01hbmFnZXIudW5kbygpOworICAgIGFz
c2VydF9lcXVhbHMoc3Bhbi50aXRsZSwgInRlc3QiKTsKK30sICJ1bmRvIDQ6IHRpdGxlIGlzIGJh
Y2sgdG8gXCJ0ZXN0XCIiKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICB1bmRvTWFuYWdlci51
bmRvKCk7CisgICAgYXNzZXJ0X2VxdWFscyhzcGFuLnN0eWxlLmJvcmRlckNvbG9yLCAiYmx1ZSIp
OworfSwgInVuZG8gMzogYm9yZGVyIGNvbG9yIGlzIGJhY2sgdG8gYmx1ZSIpOworCit0ZXN0KGZ1
bmN0aW9uKCkgeworICAgIHVuZG9NYW5hZ2VyLnVuZG8oKTsKKyAgICBhc3NlcnRfZXF1YWxzKHNw
YW4uY29udGVudEVkaXRhYmxlLCAiaW5oZXJpdCIpOworfSwgInVuZG8gMjogY29udGVudGVkaXRh
YmxlIGlzIGJhY2sgdG8gXCJpbmhlcml0XCIiKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICB1
bmRvTWFuYWdlci51bmRvKCk7CisgICAgYXNzZXJ0X2VxdWFscyhzcGFuLnRpdGxlLCAiIik7Cit9
LCAidW5kbyAxOiB0aXRsZSBpcyBiYWNrIHRvIGFuIGVtcHR5IHN0cmluZyIpOworCit0ZXN0KGZ1
bmN0aW9uKCkgeworICAgIHVuZG9NYW5hZ2VyLnJlZG8oKTsKKyAgICBhc3NlcnRfZXF1YWxzKHNw
YW4udGl0bGUsICJ0ZXN0Iik7Cit9LCAicmVkbyAxOiB0aXRsZSBpcyBcInRlc3RcIiBhZ2FpbiIp
OworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIHVuZG9NYW5hZ2VyLnJlZG8oKTsKKyAgICBhc3Nl
cnRfZXF1YWxzKHNwYW4uY29udGVudEVkaXRhYmxlLCAidHJ1ZSIpOworfSwgInJlZG8gMjogY29u
dGVudEVkaXRhYmxlIGlzIFwidHJ1ZVwiIGFnYWluIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7Cisg
ICAgdW5kb01hbmFnZXIucmVkbygpOworICAgIGFzc2VydF9lcXVhbHMoc3Bhbi5zdHlsZS5ib3Jk
ZXJDb2xvciwgInJlZCIpOworfSwgInJlZG8gMzogYm9yZGVyIGNvbG9yIGlzIHJlZCBhZ2FpbiIp
OworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIHVuZG9NYW5hZ2VyLnJlZG8oKTsKKyAgICBhc3Nl
cnRfZXF1YWxzKHNwYW4udGl0bGUsICIiKTsKK30sICJyZWRvIDQ6IHRpdGxlIGlzIGFuIGVtcHR5
IHN0cmluZyBhZ2FpbiIpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlv
dXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2VyL2F1dG9tYXRpYy10cmFuc2FjdGlvbi1kYXRhLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2Vy
L2F1dG9tYXRpYy10cmFuc2FjdGlvbi1kYXRhLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIvYXV0b21hdGljLXRyYW5zYWN0aW9uLWRh
dGEtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDkgQEAKK1RoaXMgdGVzdHMg
dGhhdCBVbmRvTWFuYWdlciBjb3JyZWN0bHkgcmV2ZXJ0cy9yZWFwcGxpZXMgYXV0b21hdGljIERP
TSB0cmFuc2FjdGlvbnMgb24gbm9kZSBkYXRhLgorCitQQVNTIFN0YXJ0ZWQgd2l0aCAxMjM0NTY3
ODkuIFRyYW5zYWN0ZWQgcmVwbGFjZURhdGEoMywgMywgJ2FiY2QnKS4gR290IDEyM2FiY2Q3ODkg
CitQQVNTIHVuZG9NYW5hZ2VyLnVuZG8oKS4gR290IDEyMzQ1Njc4OSAKK1BBU1MgdW5kb01hbmFn
ZXIucmVkbygpLiBHb3QgMTIzYWJjZDc4OSAKK1BBU1MgU3RhcnRlZCB3aXRoIDEyMzQuIFRyYW5z
YWN0ZWQgcmVwbGFjZURhdGEoMiwgMTAsICdhJykuIEdvdCAxMmEgCitQQVNTIHVuZG9NYW5hZ2Vy
LnVuZG8oKS4gR290IDEyMzQgCitQQVNTIHVuZG9NYW5hZ2VyLnJlZG8oKS4gR290IDEyYSAKKwpJ
bmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvbWFuYWdlci9hdXRvbWF0aWMtdHJhbnNhY3Rp
b24tZGF0YS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFn
ZXIvYXV0b21hdGljLXRyYW5zYWN0aW9uLWRhdGEuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIvYXV0b21hdGljLXRyYW5zYWN0aW9uLWRhdGEuaHRt
bAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPHRpdGxlPmF1dG9tYXRpYyB0cmFuc2FjdGlvbiBvbiBub2RlIGRhdGE8L3RpdGxl
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorVGhpcyB0ZXN0cyB0aGF0IFVuZG9NYW5hZ2VyIGNvcnJl
Y3RseSByZXZlcnRzL3JlYXBwbGllcyBhdXRvbWF0aWMgRE9NIHRyYW5zYWN0aW9ucworb24gbm9k
ZSBkYXRhLgorCis8ZGl2IGlkPSJkaXYiPjwvZGl2PgorPHNjcmlwdD4KK3ZhciB1bmRvTWFuYWdl
ciA9IGRvY3VtZW50LnVuZG9NYW5hZ2VyOwordmFyIGRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJkaXYiKTsKKwordGVzdChmdW5jdGlvbigpIHsKKwlkaXYuaW5uZXJUZXh0ID0gIjEyMzQ1
Njc4OSI7CisgICAgdW5kb01hbmFnZXIudHJhbnNhY3QoeworICAgICAgICAiZXhlY3V0ZUF1dG9t
YXRpYyI6IGZ1bmN0aW9uKCkgeyBkaXYuZmlyc3RDaGlsZC5yZXBsYWNlRGF0YSgzLCAzLCAiYWJj
ZCIpOyB9CisgICAgfSk7CisgICAgYXNzZXJ0X2VxdWFscyhkaXYuaW5uZXJUZXh0LCAiMTIzYWJj
ZDc4OSIpOworfSwgIlN0YXJ0ZWQgd2l0aCAxMjM0NTY3ODkuIFRyYW5zYWN0ZWQgcmVwbGFjZURh
dGEoMywgMywgJ2FiY2QnKS4gR290IDEyM2FiY2Q3ODkiKTsKKwordGVzdChmdW5jdGlvbigpIHsK
KyAgICB1bmRvTWFuYWdlci51bmRvKCk7CisgICAgYXNzZXJ0X2VxdWFscyhkaXYuaW5uZXJUZXh0
LCAiMTIzNDU2Nzg5Iik7Cit9LCAidW5kb01hbmFnZXIudW5kbygpLiBHb3QgMTIzNDU2Nzg5Iik7
CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgdW5kb01hbmFnZXIucmVkbygpOworICAgIGFzc2Vy
dF9lcXVhbHMoZGl2LmlubmVyVGV4dCwgIjEyM2FiY2Q3ODkiKTsKK30sICJ1bmRvTWFuYWdlci5y
ZWRvKCkuIEdvdCAxMjNhYmNkNzg5Iik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisJZGl2LmlubmVy
VGV4dCA9ICIxMjM0IjsKKyAgICB1bmRvTWFuYWdlci50cmFuc2FjdCh7CisgICAgICAgICJleGVj
dXRlQXV0b21hdGljIjogZnVuY3Rpb24oKSB7IGRpdi5maXJzdENoaWxkLnJlcGxhY2VEYXRhKDIs
IDEwLCAiYSIpOyB9CisgICAgfSk7CisgICAgYXNzZXJ0X2VxdWFscyhkaXYuaW5uZXJUZXh0LCAi
MTJhIik7Cit9LCAiU3RhcnRlZCB3aXRoIDEyMzQuIFRyYW5zYWN0ZWQgcmVwbGFjZURhdGEoMiwg
MTAsICdhJykuIEdvdCAxMmEiKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICB1bmRvTWFuYWdl
ci51bmRvKCk7CisgICAgYXNzZXJ0X2VxdWFscyhkaXYuaW5uZXJUZXh0LCAiMTIzNCIpOworfSwg
InVuZG9NYW5hZ2VyLnVuZG8oKS4gR290IDEyMzQiKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAg
ICB1bmRvTWFuYWdlci5yZWRvKCk7CisgICAgYXNzZXJ0X2VxdWFscyhkaXYuaW5uZXJUZXh0LCAi
MTJhIik7Cit9LCAidW5kb01hbmFnZXIucmVkbygpLiBHb3QgMTJhIik7CisKK2Rpdi5zdHlsZS5k
aXNwbGF5ID0gIm5vbmUiOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlv
dXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2VyL2F1dG9tYXRpYy10cmFuc2FjdGlvbi1ub2RlLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2Vy
L2F1dG9tYXRpYy10cmFuc2FjdGlvbi1ub2RlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIvYXV0b21hdGljLXRyYW5zYWN0aW9uLW5v
ZGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyIEBACitUaGlzIHRlc3Rz
IHRoYXQgVW5kb01hbmFnZXIgY29ycmVjdGx5IHJldmVydHMvcmVhcHBsaWVzIGF1dG9tYXRpYyBE
T00gdHJhbnNhY3Rpb25zIG9uIG5vZGUgc3RydWN0dXJhbCBjaGFuZ2UuCisKK1BBU1MgVW5kb01h
bmFnZXIgY2FsbGVkIHRoZSBmdW5jdGlvbiByZXR1cm5lZCBieSBleGVjdXRlQXV0b21hdGljLiAo
YXBwZW5kQ2hpbGQpIAorUEFTUyBVbmRvTWFuYWdlciBjYWxsZWQgdGhlIGZ1bmN0aW9uIHJldHVy
bmVkIGJ5IGV4ZWN1dGVBdXRvbWF0aWMuIChpbnNlcnRCZWZvcmUpIAorUEFTUyBVbmRvTWFuYWdl
ciBjYWxsZWQgdGhlIGZ1bmN0aW9uIHJldHVybmVkIGJ5IGV4ZWN1dGVBdXRvbWF0aWMuIChyZW1v
dmVDaGlsZCkgCitQQVNTIFVuZG9NYW5hZ2VyIHJldmVydGVkIHRoZSBjaGFuZ2UgbWFkZSBieSBy
ZW1vdmVDaGlsZC4gCitQQVNTIFVuZG9NYW5hZ2VyIHJldmVydGVkIHRoZSBjaGFuZ2UgbWFkZSBi
eSBpbnNlcnRCZWZvcmUuIAorUEFTUyBVbmRvTWFuYWdlciByZXZlcnRlZCB0aGUgY2hhbmdlIG1h
ZGUgYnkgYXBwZW5kQ2hpbGQuIAorUEFTUyBVbmRvTWFuYWdlciByZWFwcGxpZWQgdGhlIGNoYW5n
ZSBtYWRlIGJ5IGFwcGVuZENoaWxkLiAKK1BBU1MgVW5kb01hbmFnZXIgcmVhcHBsaWVkIHRoZSBj
aGFuZ2UgbWFkZSBieSBpbnNlcnRCZWZvcmUuIAorUEFTUyBVbmRvTWFuYWdlciByZWFwcGxpZWQg
dGhlIGNoYW5nZSBtYWRlIGJ5IHJlbW92ZUNoaWxkLiAKKwpJbmRleDogTGF5b3V0VGVzdHMvZWRp
dGluZy91bmRvbWFuYWdlci9hdXRvbWF0aWMtdHJhbnNhY3Rpb24tbm9kZS5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIvYXV0b21hdGljLXRyYW5zYWN0
aW9uLW5vZGUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21h
bmFnZXIvYXV0b21hdGljLXRyYW5zYWN0aW9uLW5vZGUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw4MSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPmF1dG9t
YXRpYyB0cmFuc2FjdGlvbiBvbiBub2RlczwvdGl0bGU+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CitU
aGlzIHRlc3RzIHRoYXQgVW5kb01hbmFnZXIgY29ycmVjdGx5IHJldmVydHMvcmVhcHBsaWVzIGF1
dG9tYXRpYyBET00gdHJhbnNhY3Rpb25zCitvbiBub2RlIHN0cnVjdHVyYWwgY2hhbmdlLgorCis8
ZGl2IGlkPSJlZGl0Ij48L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgZWRpdCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJlZGl0Iik7Cit2YXIgdW5kb01hbmFnZXIgPSBkb2N1bWVudC51bmRvTWFuYWdl
cjsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICB1bmRvTWFuYWdlci50cmFuc2FjdCh7CisgICAg
ICAgICJleGVjdXRlQXV0b21hdGljIjogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB2YXIgZCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAgICAgICAgICAgIGQuaW5uZXJUZXh0
ID0gIjEiOworICAgICAgICAgICAgZWRpdC5hcHBlbmRDaGlsZChkKTsKKyAgICAgICAgfQorICAg
IH0pOworICAgIGFzc2VydF90cnVlKGVkaXQuaW5uZXJIVE1MID09ICI8c3Bhbj4xPC9zcGFuPiIp
OworfSwgIlVuZG9NYW5hZ2VyIGNhbGxlZCB0aGUgZnVuY3Rpb24gcmV0dXJuZWQgYnkgZXhlY3V0
ZUF1dG9tYXRpYy4gKGFwcGVuZENoaWxkKSIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIHVu
ZG9NYW5hZ2VyLnRyYW5zYWN0KHsKKyAgICAgICAgImV4ZWN1dGVBdXRvbWF0aWMiOiBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgIHZhciBkMiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4i
KTsKKyAgICAgICAgICAgIGQyLmlubmVySFRNTCA9ICI8Yj4yPC9iPiI7CisgICAgICAgICAgICBl
ZGl0Lmluc2VydEJlZm9yZShkMiwgZWRpdC5maXJzdENoaWxkKTsKKyAgICAgICAgfQorICAgIH0p
OworICAgIGFzc2VydF90cnVlKGVkaXQuaW5uZXJIVE1MID09ICI8c3Bhbj48Yj4yPC9iPjwvc3Bh
bj48c3Bhbj4xPC9zcGFuPiIpOworfSwgIlVuZG9NYW5hZ2VyIGNhbGxlZCB0aGUgZnVuY3Rpb24g
cmV0dXJuZWQgYnkgZXhlY3V0ZUF1dG9tYXRpYy4gKGluc2VydEJlZm9yZSkiKTsKKwordGVzdChm
dW5jdGlvbigpIHsKKyAgICB1bmRvTWFuYWdlci50cmFuc2FjdCh7CisgICAgICAgICJleGVjdXRl
QXV0b21hdGljIjogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBlZGl0LnJlbW92ZUNoaWxkKGVk
aXQubGFzdENoaWxkKTsKKyAgICAgICAgfQorICAgIH0pOworICAgIGFzc2VydF90cnVlKGVkaXQu
aW5uZXJIVE1MID09ICI8c3Bhbj48Yj4yPC9iPjwvc3Bhbj4iKTsKK30sICJVbmRvTWFuYWdlciBj
YWxsZWQgdGhlIGZ1bmN0aW9uIHJldHVybmVkIGJ5IGV4ZWN1dGVBdXRvbWF0aWMuIChyZW1vdmVD
aGlsZCkiKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICB1bmRvTWFuYWdlci51bmRvKCk7Cisg
ICAgYXNzZXJ0X3RydWUoZWRpdC5pbm5lckhUTUwgPT0gIjxzcGFuPjxiPjI8L2I+PC9zcGFuPjxz
cGFuPjE8L3NwYW4+Iik7Cit9LCAiVW5kb01hbmFnZXIgcmV2ZXJ0ZWQgdGhlIGNoYW5nZSBtYWRl
IGJ5IHJlbW92ZUNoaWxkLiIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIHVuZG9NYW5hZ2Vy
LnVuZG8oKTsKKyAgICBhc3NlcnRfdHJ1ZShlZGl0LmlubmVySFRNTCA9PSAiPHNwYW4+MTwvc3Bh
bj4iKTsKK30sICJVbmRvTWFuYWdlciByZXZlcnRlZCB0aGUgY2hhbmdlIG1hZGUgYnkgaW5zZXJ0
QmVmb3JlLiIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIHVuZG9NYW5hZ2VyLnVuZG8oKTsK
KyAgICBhc3NlcnRfdHJ1ZShlZGl0LmlubmVySFRNTCA9PSAiIik7Cit9LCAiVW5kb01hbmFnZXIg
cmV2ZXJ0ZWQgdGhlIGNoYW5nZSBtYWRlIGJ5IGFwcGVuZENoaWxkLiIpOworCit0ZXN0KGZ1bmN0
aW9uKCkgeworICAgIHVuZG9NYW5hZ2VyLnJlZG8oKTsKKyAgICBhc3NlcnRfdHJ1ZShlZGl0Lmlu
bmVySFRNTCA9PSAiPHNwYW4+MTwvc3Bhbj4iKTsKK30sICJVbmRvTWFuYWdlciByZWFwcGxpZWQg
dGhlIGNoYW5nZSBtYWRlIGJ5IGFwcGVuZENoaWxkLiIpOworCit0ZXN0KGZ1bmN0aW9uKCkgewor
ICAgIHVuZG9NYW5hZ2VyLnJlZG8oKTsKKyAgICBhc3NlcnRfdHJ1ZShlZGl0LmlubmVySFRNTCA9
PSAiPHNwYW4+PGI+MjwvYj48L3NwYW4+PHNwYW4+MTwvc3Bhbj4iKTsKK30sICJVbmRvTWFuYWdl
ciByZWFwcGxpZWQgdGhlIGNoYW5nZSBtYWRlIGJ5IGluc2VydEJlZm9yZS4iKTsKKwordGVzdChm
dW5jdGlvbigpIHsKKyAgICB1bmRvTWFuYWdlci5yZWRvKCk7CisgICAgYXNzZXJ0X3RydWUoZWRp
dC5pbm5lckhUTUwgPT0gIjxzcGFuPjxiPjI8L2I+PC9zcGFuPiIpOworfSwgIlVuZG9NYW5hZ2Vy
IHJlYXBwbGllZCB0aGUgY2hhbmdlIG1hZGUgYnkgcmVtb3ZlQ2hpbGQuIik7CisKK2VkaXQuc3R5
bGUuZGlzcGxheSA9ICJub25lIjsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159848</attachid>
            <date>2012-08-21 20:04:36 -0700</date>
            <delta_ts>2012-08-21 20:56:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91812-20120821200715.patch</filename>
            <type>text/plain</type>
            <size>50381</size>
            <attacher name="Sukolsak Sakshuwong">sukolsak</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNjI1NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg1IEBACisyMDEyLTA4LTIxICBTdWtvbHNh
ayBTYWtzaHV3b25nICA8c3Vrb2xzYWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQg
VW5kb01hbmFnZXIncyBhdXRvbWF0aWMgRE9NIHRyYW5zYWN0aW9ucworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE4MTIKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMgYXV0
b21hdGljIERPTSB0cmFuc2FjdGlvbnMgaW4gVW5kb01hbmFnZXIKKyAgICAgICAgYnkgcmVjb3Jk
aW5nIGNoYW5nZXMgaW4gdHJlZSBzdHJ1Y3R1cmUsIGF0dHJpYnV0ZXMsIGFuZCBjaGFyYWN0ZXIg
ZGF0YQorICAgICAgICBvZiBub2RlcyB1bmRlciB1bmRvIHNjb3BlIGhvc3QuCisKKyAgICAgICAg
VGVzdHM6IGVkaXRpbmcvdW5kb21hbmFnZXIvYXV0b21hdGljLXRyYW5zYWN0aW9uLWF0dHJpYnV0
ZS5odG1sCisgICAgICAgICAgICAgICBlZGl0aW5nL3VuZG9tYW5hZ2VyL2F1dG9tYXRpYy10cmFu
c2FjdGlvbi1kYXRhLmh0bWwKKyAgICAgICAgICAgICAgIGVkaXRpbmcvdW5kb21hbmFnZXIvYXV0
b21hdGljLXRyYW5zYWN0aW9uLW5vZGUuaHRtbAorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6
CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6
CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0RP
TVRyYW5zYWN0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpET01UcmFuc2FjdGlvbjo6YWRkVHJh
bnNhY3Rpb25TdGVwKToKKyAgICAgICAgKERPTVRyYW5zYWN0aW9uKToKKyAgICAgICAgKiBiaW5k
aW5ncy92OC9ET01UcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChET01UcmFuc2FjdGlvblNjb3Bl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVRyYW5zYWN0aW9uU2NvcGU6OkRPTVRyYW5zYWN0aW9u
U2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVHJhbnNhY3Rpb25TY29wZTo6fkRPTVRyYW5z
YWN0aW9uU2NvcGUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpET01U
cmFuc2FjdGlvbjo6YXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVHJhbnNhY3Rpb246OnVu
YXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVHJhbnNhY3Rpb246OnJlYXBwbHkpOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L0RPTVRyYW5zYWN0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpE
T01UcmFuc2FjdGlvbjo6YWRkVHJhbnNhY3Rpb25TdGVwKToKKyAgICAgICAgKERPTVRyYW5zYWN0
aW9uKToKKyAgICAgICAgKiBjc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6c2V0Q3Nz
VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246
OnNldFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5U2V0Q1NTU3R5bGVEZWNs
YXJhdGlvbjo6cmVtb3ZlUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6UHJvcGVydHlTZXRD
U1NTdHlsZURlY2xhcmF0aW9uOjpzZXRQcm9wZXJ0eUludGVybmFsKToKKyAgICAgICAgKiBkb20v
Q2hhcmFjdGVyRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaGFyYWN0ZXJEYXRhOjpzZXRE
YXRhQW5kVXBkYXRlKToKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjp3aWxsUmVtb3ZlQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6d2lsbFJlbW92
ZUNoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZVRyZWVBZnRlckluc2VydGlvbik6
CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6
d2lsbE1vZGlmeUF0dHJpYnV0ZSk6CisgICAgICAgICogZWRpdGluZy9ET01UcmFuc2FjdGlvblN0
ZXAuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZUluc2VydGluZ0RPTVRyYW5zYWN0aW9uU3RlcDo6Tm9kZUluc2VydGluZ0RPTVRyYW5zYWN0aW9u
U3RlcCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlSW5zZXJ0aW5nRE9NVHJhbnNhY3Rpb25TdGVw
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZUluc2VydGluZ0RPTVRyYW5zYWN0aW9u
U3RlcDo6dW5hcHBseSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlSW5zZXJ0aW5nRE9NVHJhbnNh
Y3Rpb25TdGVwOjpyZWFwcGx5KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW1vdmluZ0RPTVRy
YW5zYWN0aW9uU3RlcDo6Tm9kZVJlbW92aW5nRE9NVHJhbnNhY3Rpb25TdGVwKToKKyAgICAgICAg
KFdlYkNvcmU6Ok5vZGVSZW1vdmluZ0RPTVRyYW5zYWN0aW9uU3RlcDo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vZGVSZW1vdmluZ0RPTVRyYW5zYWN0aW9uU3RlcDo6dW5hcHBseSk6Cisg
ICAgICAgIChXZWJDb3JlOjpOb2RlUmVtb3ZpbmdET01UcmFuc2FjdGlvblN0ZXA6OnJlYXBwbHkp
OgorICAgICAgICAoV2ViQ29yZTo6RGF0YVJlcGxhY2luZ0RPTVRyYW5zYWN0aW9uU3RlcDo6RGF0
YVJlcGxhY2luZ0RPTVRyYW5zYWN0aW9uU3RlcCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhUmVw
bGFjaW5nRE9NVHJhbnNhY3Rpb25TdGVwOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RGF0
YVJlcGxhY2luZ0RPTVRyYW5zYWN0aW9uU3RlcDo6dW5hcHBseSk6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhUmVwbGFjaW5nRE9NVHJhbnNhY3Rpb25TdGVwOjpyZWFwcGx5KToKKyAgICAgICAgKFdl
YkNvcmU6OkF0dHJDaGFuZ2luZ0RPTVRyYW5zYWN0aW9uU3RlcDo6QXR0ckNoYW5naW5nRE9NVHJh
bnNhY3Rpb25TdGVwKToKKyAgICAgICAgKFdlYkNvcmU6OkF0dHJDaGFuZ2luZ0RPTVRyYW5zYWN0
aW9uU3RlcDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkF0dHJDaGFuZ2luZ0RPTVRyYW5z
YWN0aW9uU3RlcDo6dW5hcHBseSk6CisgICAgICAgIChXZWJDb3JlOjpBdHRyQ2hhbmdpbmdET01U
cmFuc2FjdGlvblN0ZXA6OnJlYXBwbHkpOgorICAgICAgICAqIGVkaXRpbmcvRE9NVHJhbnNhY3Rp
b25TdGVwLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChET01UcmFuc2Fj
dGlvblN0ZXApOgorICAgICAgICAoV2ViQ29yZTo6RE9NVHJhbnNhY3Rpb25TdGVwOjp+RE9NVHJh
bnNhY3Rpb25TdGVwKToKKyAgICAgICAgKE5vZGVJbnNlcnRpbmdET01UcmFuc2FjdGlvblN0ZXAp
OgorICAgICAgICAoTm9kZVJlbW92aW5nRE9NVHJhbnNhY3Rpb25TdGVwKToKKyAgICAgICAgKERh
dGFSZXBsYWNpbmdET01UcmFuc2FjdGlvblN0ZXApOgorICAgICAgICAoQXR0ckNoYW5naW5nRE9N
VHJhbnNhY3Rpb25TdGVwKToKKyAgICAgICAgKiBlZGl0aW5nL1VuZG9NYW5hZ2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OmlzUmVjb3Jk
aW5nQXV0b21hdGljVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6
OmFkZFRyYW5zYWN0aW9uU3RlcCk6CisgICAgICAgICogZWRpdGluZy9VbmRvTWFuYWdlci5oOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpVbmRvTWFuYWdlcjo6c2V0UmVj
b3JkaW5nRE9NVHJhbnNhY3Rpb24pOgorICAgICAgICAoVW5kb01hbmFnZXIpOgorCiAyMDEyLTA4
LTIxICBKb3NodWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgSW5kZXhl
ZERCOiBJREJSZXF1ZXN0IGNhbiBiZSBHQ2QgZHVyaW5nIGV2ZW50IGRpc3BhdGNoCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTI2MjU0KQorKysgU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEyMTgsNiArMTIxOCw3IEBAIFNFVChXZWJD
b3JlX1NPVVJDRVMKICAgICBlZGl0aW5nL0JyZWFrQmxvY2txdW90ZUNvbW1hbmQuY3BwCiAgICAg
ZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKICAgICBlZGl0aW5nL0NyZWF0ZUxpbmtD
b21tYW5kLmNwcAorICAgIGVkaXRpbmcvRE9NVHJhbnNhY3Rpb25TdGVwLmNwcAogICAgIGVkaXRp
bmcvRGVsZXRlQnV0dG9uLmNwcAogICAgIGVkaXRpbmcvRGVsZXRlQnV0dG9uQ29udHJvbGxlci5j
cHAKICAgICBlZGl0aW5nL0RlbGV0ZUZyb21UZXh0Tm9kZUNvbW1hbmQuY3BwCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDEyNjI1NCkKKysrIFNvdXJjZS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTI5MzgsNiArMjkzOCw4
IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvZWRpdGluZy9EaWN0YXRp
b25BbHRlcm5hdGl2ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RpY3RhdGlvbkNvbW1h
bmQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RpY3RhdGlvbkNvbW1hbmQuaCBcCisJ
U291cmNlL1dlYkNvcmUvZWRpdGluZy9ET01UcmFuc2FjdGlvblN0ZXAuY3BwIFwKKwlTb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0RPTVRyYW5zYWN0aW9uU3RlcC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRBY3Rpb24uaCBcCiAJU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0Q29tbWFu
ZC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdENvbW1hbmQuaCBcCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCShyZXZpc2lvbiAxMjYyNTQpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTI2NDQsNiArMjY0NCw4IEBACiAgICAgICAgICAgICAn
ZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAnLAogICAgICAgICAgICAgJ2VkaXRpbmcv
Q3JlYXRlTGlua0NvbW1hbmQuY3BwJywKICAgICAgICAgICAgICdlZGl0aW5nL0NyZWF0ZUxpbmtD
b21tYW5kLmgnLAorICAgICAgICAgICAgJ2VkaXRpbmcvRE9NVHJhbnNhY3Rpb25TdGVwLmNwcCcs
CisgICAgICAgICAgICAnZWRpdGluZy9ET01UcmFuc2FjdGlvblN0ZXAuaCcsCiAgICAgICAgICAg
ICAnZWRpdGluZy9EZWxldGVCdXR0b24uY3BwJywKICAgICAgICAgICAgICdlZGl0aW5nL0RlbGV0
ZUJ1dHRvbi5oJywKICAgICAgICAgICAgICdlZGl0aW5nL0RlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIu
Y3BwJywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qCShyZXZpc2lvbiAxMjYyNTQpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtNTU5OTksNiArNTU5OTksNjIgQEAKIAkJ
CQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZWRpdGluZ1xE
T01UcmFuc2FjdGlvblN0ZXAuY3BwIgorCQkJCT4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJ
CQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJ
CQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgor
CQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5h
bWU9IlJlbGVhc2V8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+
CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJ
CTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9
IkRlYnVnX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUi
CisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJ
CS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJ
CQkJTmFtZT0iUmVsZWFzZV9DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1
aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJU
b29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1
cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVp
bGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRv
b2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3Vy
YXRpb24KKwkJCQkJTmFtZT0iUHJvZHVjdGlvbnxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVp
bGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRv
b2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCTwvRmlsZT4KKwkJCTxG
aWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxlZGl0aW5nXERPTVRyYW5zYWN0aW9uU3RlcC5oIgor
CQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxlZGl0aW5n
XEVkaXRBY3Rpb24uaCIKIAkJCQk+CiAJCQk8L0ZpbGU+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMjYyNTQp
CisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdv
cmtpbmcgY29weSkKQEAgLTE5NjgsNiArMTk2OCw4IEBACiAJCTdCOTE4NEQzMTU3NThFNDIwMDky
QUE5MyAvKiBVbmRvTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0I5MTg0RDAxNTc1OEU0MjAwOTJBQTkzIC8qIFVuZG9NYW5hZ2VyLmggKi87
IH07CiAJCTdCQjM1QUVCMTVDQ0RERjQwMEYyQTY0MyAvKiBET01UcmFuc2FjdGlvbi5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkIzNUFFOTE1Q0NE
REY0MDBGMkE2NDMgLyogRE9NVHJhbnNhY3Rpb24uY3BwICovOyB9OwogCQk3QkIzNUFFQzE1Q0NE
REY0MDBGMkE2NDMgLyogRE9NVHJhbnNhY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCQjM1QUVBMTVDQ0RERjQwMEYyQTY0MyAvKiBET01UcmFu
c2FjdGlvbi5oICovOyB9OworCQk3QkQxMTdFQjE1QjhEQjAxMDBDOTc0QTMgLyogRE9NVHJhbnNh
Y3Rpb25TdGVwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdCRDExN0U5MTVCOERCMDEwMEM5NzRBMyAvKiBET01UcmFuc2FjdGlvblN0ZXAuY3BwICov
OyB9OworCQk3QkQxMTdFQzE1QjhEQjAxMDBDOTc0QTMgLyogRE9NVHJhbnNhY3Rpb25TdGVwLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkQxMTdFQTE1
QjhEQjAxMDBDOTc0QTMgLyogRE9NVHJhbnNhY3Rpb25TdGVwLmggKi87IH07CiAJCTdDNTIyRDRC
MTVCNDc3RTgwMDlCN0M5NSAvKiBJbnNwZWN0b3JPdmVybGF5LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNTIyRDQ5MTVCNDc3RTgwMDlCN0M5NSAv
KiBJbnNwZWN0b3JPdmVybGF5LmNwcCAqLzsgfTsKIAkJN0UzM0NEMDExMjdGMzQwRDAwQkU4RjE3
IC8qIFB1cmdlUHJpb3JpdHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdFMzNDRDAwMTI3RjM0MEQwMEJFOEYxNyAvKiBQdXJnZVByaW9yaXR5LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0UzN0VGMkUx
MzM5MjA4ODAwQjI5MjUwIC8qIFN1YnJlc291cmNlTG9hZGVyQ0YuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0UzN0VGMkQxMzM5MjA4ODAwQjI5MjUw
IC8qIFN1YnJlc291cmNlTG9hZGVyQ0YuY3BwICovOyB9OwpAQCAtOTE0NSw2ICs5MTQ3LDggQEAK
IAkJN0I5MTg0RDExNTc1OEU0MjAwOTJBQTkzIC8qIFVuZG9NYW5hZ2VyLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBVbmRvTWFuYWdlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdCQjM1QUU5MTVDQ0RERjQwMEYyQTY0MyAvKiBET01UcmFuc2FjdGlvbi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01UcmFuc2FjdGlvbi5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCQjM1QUVBMTVDQ0RERjQwMEYyQTY0MyAvKiBET01U
cmFuc2FjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01UcmFuc2Fj
dGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QkQxMTdFOTE1QjhEQjAxMDBD
OTc0QTMgLyogRE9NVHJhbnNhY3Rpb25TdGVwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IERPTVRyYW5zYWN0aW9uU3RlcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTdCRDExN0VBMTVCOERCMDEwMEM5NzRBMyAvKiBET01UcmFuc2FjdGlvblN0ZXAu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NVHJhbnNhY3Rpb25TdGVwLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDNTIyRDQ5MTVCNDc3RTgwMDlCN0M5NSAv
KiBJbnNwZWN0b3JPdmVybGF5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEluc3BlY3Rvck92ZXJsYXkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
QzUyMkQ0QTE1QjQ3OEIyMDA5QjdDOTUgLyogSW5zcGVjdG9yT3ZlcmxheS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JPdmVybGF5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTdDNjAxMjgwNjAwNzhCQjcwRTM2N0E5NSAvKiBETlNSZXNvbHZlUXVl
dWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE5TUmVzb2x2ZVF1
ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3MTA0LDYgKzE3MTA4LDgg
QEAKIAkJCQlDRUNBREZDNDE1Mzc3OEZGMDBFMzcwNjggLyogRGljdGF0aW9uQ29tbWFuZC5jcHAg
Ki8sCiAJCQkJQ0VDQURGQzUxNTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkNvbW1hbmQuaCAq
LywKIAkJCQk3QjhDMUZFNjE1Q0NFM0MyMDA0QjM1REMgLyogRE9NVHJhbnNhY3Rpb24uaWRsICov
LAorCQkJCTdCRDExN0U5MTVCOERCMDEwMEM5NzRBMyAvKiBET01UcmFuc2FjdGlvblN0ZXAuY3Bw
ICovLAorCQkJCTdCRDExN0VBMTVCOERCMDEwMEM5NzRBMyAvKiBET01UcmFuc2FjdGlvblN0ZXAu
aCAqLywKIAkJCQk5MzMwOUQ5MzA5OUU2NDkxMDA1NkU1ODEgLyogRWRpdEFjdGlvbi5oICovLAog
CQkJCTkzMzA5RDk0MDk5RTY0OTEwMDU2RTU4MSAvKiBFZGl0Q29tbWFuZC5jcHAgKi8sCiAJCQkJ
OTMzMDlEOTUwOTlFNjQ5MTAwNTZFNTgxIC8qIEVkaXRDb21tYW5kLmggKi8sCkBAIC0yMzEyOSw2
ICsyMzEzNSw3IEBACiAJCQkJMDVGRDY5RTAxMjg0NUQ0MzAwQjJCRUIzIC8qIERPTVRpbWVTdGFt
cC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzZGQzJCMEMxMjM3MERBMDAwNkE5OTFBIC8qIERPTVRv
a2VuTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0JCMzVBRUMxNUNDRERGNDAwRjJBNjQzIC8q
IERPTVRyYW5zYWN0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QkQxMTdFQzE1QjhEQjAxMDBD
OTc0QTMgLyogRE9NVHJhbnNhY3Rpb25TdGVwLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzFBMzdC
RTA5N0M3MTVGMDAxOUYzRDggLyogRE9NVHJhdmVyc2FsLmggaW4gSGVhZGVycyAqLywKIAkJCQk4
NTUyNkNEMjBBQjBCN0Q5MDAwMzAyRUEgLyogRE9NVHJlZVdhbGtlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJODUwQjQxQzMwQUQ5RTdFNzAwQTZFRDRGIC8qIERPTVRyZWVXYWxrZXJJbnRlcm5hbC5o
IGluIEhlYWRlcnMgKi8sCkBAIC0yNjQwMCw2ICsyNjQwNyw3IEBACiAJCQkJMTg4NjA0QjMwRjJF
NjU0QTAwMEI2NDQzIC8qIERPTVRpbWVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTc2RkMyQjBC
MTIzNzBEQTAwMDZBOTkxQSAvKiBET01Ub2tlbkxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
N0JCMzVBRUIxNUNDRERGNDAwRjJBNjQzIC8qIERPTVRyYW5zYWN0aW9uLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTdCRDExN0VCMTVCOERCMDEwMEM5NzRBMyAvKiBET01UcmFuc2FjdGlvblN0ZXAu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODU1MjZDRDMwQUIwQjdEQTAwMDMwMkVBIC8qIERPTVRy
ZWVXYWxrZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQk4NUM3RjQ5MjBBQUY3OURDMDA0MDE0REQg
LyogRE9NVUlFdmVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTJFMzdERkRBMTJEQkFGQjgwMEE2
QjIzMyAvKiBET01VUkwuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9ET01UcmFuc2FjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0RPTVRyYW5zYWN0aW9uLmgJKHJldmlzaW9uIDEyNjI1NCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVRyYW5zYWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShVTkRPX01BTkFHRVIpCiAKKyNpbmNsdWRlICJE
T01UcmFuc2FjdGlvblN0ZXAuaCIKICNpbmNsdWRlICJVbmRvU3RlcC5oIgogI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KIApAQCAtNDgsMTAgKzQ5LDEzIEBAIHB1YmxpYzoKICAgICBVbmRvTWFuYWdl
ciogdW5kb01hbmFnZXIoKSBjb25zdCB7IHJldHVybiBtX3VuZG9NYW5hZ2VyOyB9CiAgICAgdm9p
ZCBzZXRVbmRvTWFuYWdlcihVbmRvTWFuYWdlciogdW5kb01hbmFnZXIpIHsgbV91bmRvTWFuYWdl
ciA9IHVuZG9NYW5hZ2VyOyB9CiAKKyAgICB2b2lkIGFkZFRyYW5zYWN0aW9uU3RlcChQYXNzUmVm
UHRyPERPTVRyYW5zYWN0aW9uU3RlcD4gc3RlcCkgeyBtX3RyYW5zYWN0aW9uU3RlcHMuYXBwZW5k
KHN0ZXApOyB9CisKIHByaXZhdGU6CiAgICAgRE9NVHJhbnNhY3Rpb24oKTsKIAogICAgIFVuZG9N
YW5hZ2VyKiBtX3VuZG9NYW5hZ2VyOworICAgIFZlY3RvcjxSZWZQdHI8RE9NVHJhbnNhY3Rpb25T
dGVwPiA+IG1fdHJhbnNhY3Rpb25TdGVwczsKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L0RPTVRyYW5zYWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9ET01UcmFuc2FjdGlvbi5jcHAJKHJldmlzaW9uIDEyNjI1NCkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTVRyYW5zYWN0aW9uLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzUsNiArMzUsMTkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBE
T01UcmFuc2FjdGlvblNjb3BlIHsKK3B1YmxpYzoKKyAgICBET01UcmFuc2FjdGlvblNjb3BlKERP
TVRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKKyAgICB7CisgICAgICAgIFVuZG9NYW5hZ2VyOjpz
ZXRSZWNvcmRpbmdET01UcmFuc2FjdGlvbih0cmFuc2FjdGlvbik7CisgICAgfQorICAgIAorICAg
IH5ET01UcmFuc2FjdGlvblNjb3BlKCkKKyAgICB7CisgICAgICAgIFVuZG9NYW5hZ2VyOjpzZXRS
ZWNvcmRpbmdET01UcmFuc2FjdGlvbigwKTsKKyAgICB9Cit9OworCiBET01UcmFuc2FjdGlvbjo6
RE9NVHJhbnNhY3Rpb24oY29uc3QgV29ybGRDb250ZXh0SGFuZGxlJiB3b3JsZENvbnRleHQpCiAg
ICAgOiBtX3dvcmxkQ29udGV4dCh3b3JsZENvbnRleHQpCiAgICAgLCBtX3VuZG9NYW5hZ2VyKDAp
CkBAIC01MSwxMiArNjQsMjAgQEAgdm9pZCBET01UcmFuc2FjdGlvbjo6YXBwbHkoKQogICAgIG1f
aXNBdXRvbWF0aWMgPSAhZ2V0RnVuY3Rpb24oImV4ZWN1dGVBdXRvbWF0aWMiKS5Jc0VtcHR5KCk7
CiAgICAgaWYgKCFtX2lzQXV0b21hdGljKQogICAgICAgICBjYWxsRnVuY3Rpb24oImV4ZWN1dGUi
KTsKKyAgICBlbHNlIHsKKyAgICAgICAgRE9NVHJhbnNhY3Rpb25TY29wZSBzY29wZSh0aGlzKTsK
KyAgICAgICAgY2FsbEZ1bmN0aW9uKCJleGVjdXRlQXV0b21hdGljIik7CisgICAgfQogfQogCiB2
b2lkIERPTVRyYW5zYWN0aW9uOjp1bmFwcGx5KCkKIHsKICAgICBpZiAoIW1faXNBdXRvbWF0aWMp
CiAgICAgICAgIGNhbGxGdW5jdGlvbigidW5kbyIpOworICAgIGVsc2UgeworICAgICAgICBmb3Ig
KHNpemVfdCBpID0gbV90cmFuc2FjdGlvblN0ZXBzLnNpemUoKTsgaSA+IDA7IC0taSkKKyAgICAg
ICAgICAgIG1fdHJhbnNhY3Rpb25TdGVwc1tpIC0gMV0tPnVuYXBwbHkoKTsKKyAgICB9CiAKICAg
ICBpZiAobV91bmRvTWFuYWdlcikKICAgICAgICAgbV91bmRvTWFuYWdlci0+cmVnaXN0ZXJSZWRv
U3RlcCh0aGlzKTsKQEAgLTY2LDYgKzg3LDEwIEBAIHZvaWQgRE9NVHJhbnNhY3Rpb246OnJlYXBw
bHkoKQogewogICAgIGlmICghbV9pc0F1dG9tYXRpYykKICAgICAgICAgY2FsbEZ1bmN0aW9uKCJy
ZWRvIik7CisgICAgZWxzZSB7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV90cmFu
c2FjdGlvblN0ZXBzLnNpemUoKTsgKytpKQorICAgICAgICAgICAgbV90cmFuc2FjdGlvblN0ZXBz
W2ldLT5yZWFwcGx5KCk7CisgICAgfQogCiAgICAgaWYgKG1fdW5kb01hbmFnZXIpCiAgICAgICAg
IG1fdW5kb01hbmFnZXItPnJlZ2lzdGVyVW5kb1N0ZXAodGhpcyk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9ET01UcmFuc2FjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTVRyYW5zYWN0aW9uLmgJKHJldmlzaW9uIDEyNjI1NCkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTVRyYW5zYWN0aW9uLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShVTkRPX01BTkFHRVIpCiAKKyNpbmNs
dWRlICJET01UcmFuc2FjdGlvblN0ZXAuaCIKICNpbmNsdWRlICJVbmRvU3RlcC5oIgogI2luY2x1
ZGUgIldvcmxkQ29udGV4dEhhbmRsZS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTQ5
LDYgKzUwLDggQEAgcHVibGljOgogICAgIFVuZG9NYW5hZ2VyKiB1bmRvTWFuYWdlcigpIGNvbnN0
IHsgcmV0dXJuIG1fdW5kb01hbmFnZXI7IH0KICAgICB2b2lkIHNldFVuZG9NYW5hZ2VyKFVuZG9N
YW5hZ2VyKiB1bmRvTWFuYWdlcikgeyBtX3VuZG9NYW5hZ2VyID0gdW5kb01hbmFnZXI7IH0KIAor
ICAgIHZvaWQgYWRkVHJhbnNhY3Rpb25TdGVwKFBhc3NSZWZQdHI8RE9NVHJhbnNhY3Rpb25TdGVw
PiBzdGVwKSB7IG1fdHJhbnNhY3Rpb25TdGVwcy5hcHBlbmQoc3RlcCk7IH0KKwogcHJpdmF0ZToK
ICAgICBET01UcmFuc2FjdGlvbihjb25zdCBXb3JsZENvbnRleHRIYW5kbGUmKTsKICAgICB2ODo6
SGFuZGxlPHY4OjpGdW5jdGlvbj4gZ2V0RnVuY3Rpb24oY29uc3QgY2hhciopOwpAQCAtNTcsNiAr
NjAsNyBAQCBwcml2YXRlOgogICAgIFdvcmxkQ29udGV4dEhhbmRsZSBtX3dvcmxkQ29udGV4dDsK
ICAgICBVbmRvTWFuYWdlciogbV91bmRvTWFuYWdlcjsKICAgICBib29sIG1faXNBdXRvbWF0aWM7
CisgICAgVmVjdG9yPFJlZlB0cjxET01UcmFuc2FjdGlvblN0ZXA+ID4gbV90cmFuc2FjdGlvblN0
ZXBzOwogfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5
bGVEZWNsYXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1Byb3Bl
cnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAJKHJldmlzaW9uIDEyNjI1NCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiTXV0YXRpb25SZWNvcmQuaCIKICNp
bmNsdWRlICJTdHlsZVByb3BlcnR5U2V0LmgiCiAjaW5jbHVkZSAiU3R5bGVkRWxlbWVudC5oIgor
I2luY2x1ZGUgIlVuZG9NYW5hZ2VyLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKQEAgLTUz
LDE1ICs1NCwzOCBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVCghc19jdXJyZW50RGVjbCk7CiAg
ICAgICAgIHNfY3VycmVudERlY2wgPSBkZWNsOwogCi0jaWYgRU5BQkxFKE1VVEFUSU9OX09CU0VS
VkVSUykKKyNpZiBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKSB8fCBFTkFCTEUoVU5ET19NQU5B
R0VSKQogICAgICAgICBpZiAoIXNfY3VycmVudERlY2wtPnBhcmVudEVsZW1lbnQoKSkKICAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICBib29sIHNob3VsZFJlYWRPbGRWYWx1ZSA9IGZhbHNl
OworCisjaWYgRU5BQkxFKE1VVEFUSU9OX09CU0VSVkVSUykKICAgICAgICAgbV9tdXRhdGlvblJl
Y2lwaWVudHMgPSBNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cDo6Y3JlYXRlRm9yQXR0cmli
dXRlc011dGF0aW9uKHNfY3VycmVudERlY2wtPnBhcmVudEVsZW1lbnQoKSwgSFRNTE5hbWVzOjpz
dHlsZUF0dHIpOwotICAgICAgICBpZiAoIW1fbXV0YXRpb25SZWNpcGllbnRzKQotICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICBpZiAobV9tdXRhdGlvblJlY2lwaWVudHMgJiYgbV9tdXRhdGlv
blJlY2lwaWVudHMtPmlzT2xkVmFsdWVSZXF1ZXN0ZWQoKSkKKyAgICAgICAgICAgIHNob3VsZFJl
YWRPbGRWYWx1ZSA9IHRydWU7CisjZW5kaWYKKyNpZiBFTkFCTEUoVU5ET19NQU5BR0VSKQorICAg
ICAgICBtX2lzUmVjb3JkaW5nQXV0b21hdGljVHJhbnNhY3Rpb24gPSBVbmRvTWFuYWdlcjo6aXNS
ZWNvcmRpbmdBdXRvbWF0aWNUcmFuc2FjdGlvbihzX2N1cnJlbnREZWNsLT5wYXJlbnRFbGVtZW50
KCkpOworICAgICAgICBpZiAobV9pc1JlY29yZGluZ0F1dG9tYXRpY1RyYW5zYWN0aW9uKQorICAg
ICAgICAgICAgc2hvdWxkUmVhZE9sZFZhbHVlID0gdHJ1ZTsKKyNlbmRpZgorCisgICAgICAgIEF0
b21pY1N0cmluZyBvbGRWYWx1ZTsKKyAgICAgICAgaWYgKHNob3VsZFJlYWRPbGRWYWx1ZSkKKyAg
ICAgICAgICAgIG9sZFZhbHVlID0gc19jdXJyZW50RGVjbC0+cGFyZW50RWxlbWVudCgpLT5nZXRB
dHRyaWJ1dGUoSFRNTE5hbWVzOjpzdHlsZUF0dHIpOworCisjaWYgRU5BQkxFKE1VVEFUSU9OX09C
U0VSVkVSUykKKyAgICAgICAgaWYgKG1fbXV0YXRpb25SZWNpcGllbnRzKSB7CisgICAgICAgICAg
ICBBdG9taWNTdHJpbmcgcmVxdWVzdGVkT2xkVmFsdWUgPSBtX211dGF0aW9uUmVjaXBpZW50cy0+
aXNPbGRWYWx1ZVJlcXVlc3RlZCgpID8gb2xkVmFsdWUgOiBudWxsQXRvbTsKKyAgICAgICAgICAg
IG1fbXV0YXRpb24gPSBNdXRhdGlvblJlY29yZDo6Y3JlYXRlQXR0cmlidXRlcyhzX2N1cnJlbnRE
ZWNsLT5wYXJlbnRFbGVtZW50KCksIEhUTUxOYW1lczo6c3R5bGVBdHRyLCByZXF1ZXN0ZWRPbGRW
YWx1ZSk7CisgICAgICAgIH0KKyNlbmRpZgorI2lmIEVOQUJMRShVTkRPX01BTkFHRVIpCisgICAg
ICAgIGlmIChtX2lzUmVjb3JkaW5nQXV0b21hdGljVHJhbnNhY3Rpb24pCisgICAgICAgICAgICBt
X29sZFZhbHVlID0gb2xkVmFsdWU7CisjZW5kaWYKIAotICAgICAgICBBdG9taWNTdHJpbmcgb2xk
VmFsdWUgPSBtX211dGF0aW9uUmVjaXBpZW50cy0+aXNPbGRWYWx1ZVJlcXVlc3RlZCgpID8gc19j
dXJyZW50RGVjbC0+cGFyZW50RWxlbWVudCgpLT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpzdHls
ZUF0dHIpIDogbnVsbEF0b207Ci0gICAgICAgIG1fbXV0YXRpb24gPSBNdXRhdGlvblJlY29yZDo6
Y3JlYXRlQXR0cmlidXRlcyhzX2N1cnJlbnREZWNsLT5wYXJlbnRFbGVtZW50KCksIEhUTUxOYW1l
czo6c3R5bGVBdHRyLCBvbGRWYWx1ZSk7CiAjZW5kaWYKICAgICB9CiAKQEAgLTc0LDYgKzk4LDE0
IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKQogICAgICAgICBpZiAo
bV9tdXRhdGlvbiAmJiBzX3Nob3VsZERlbGl2ZXIpCiAgICAgICAgICAgICBtX211dGF0aW9uUmVj
aXBpZW50cy0+ZW5xdWV1ZU11dGF0aW9uUmVjb3JkKG1fbXV0YXRpb24pOworI2VuZGlmCisjaWYg
RU5BQkxFKFVORE9fTUFOQUdFUikKKyAgICAgICAgaWYgKG1faXNSZWNvcmRpbmdBdXRvbWF0aWNU
cmFuc2FjdGlvbiAmJiBzX3Nob3VsZERlbGl2ZXIpIHsKKyAgICAgICAgICAgIFVuZG9NYW5hZ2Vy
OjphZGRUcmFuc2FjdGlvblN0ZXAoQXR0ckNoYW5naW5nRE9NVHJhbnNhY3Rpb25TdGVwOjpjcmVh
dGUoCisgICAgICAgICAgICAgICAgc19jdXJyZW50RGVjbC0+cGFyZW50RWxlbWVudCgpLCBIVE1M
TmFtZXM6OnN0eWxlQXR0ciwgbV9vbGRWYWx1ZSwgc19jdXJyZW50RGVjbC0+cGFyZW50RWxlbWVu
dCgpLT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpzdHlsZUF0dHIpKSk7CisgICAgICAgIH0KKyNl
bmRpZgorI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpIHx8IEVOQUJMRShVTkRPX01BTkFH
RVIpCiAgICAgICAgIHNfc2hvdWxkRGVsaXZlciA9IGZhbHNlOwogI2VuZGlmCiAgICAgICAgIGlm
ICghc19zaG91bGROb3RpZnlJbnNwZWN0b3IpIHsKQEAgLTg4LDcgKzEyMCw3IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkSW52YWxpZGF0ZVN0eWxl
QXR0cihsb2NhbENvcHlTdHlsZURlY2wtPnBhcmVudEVsZW1lbnQoKS0+ZG9jdW1lbnQoKSwgbG9j
YWxDb3B5U3R5bGVEZWNsLT5wYXJlbnRFbGVtZW50KCkpOwogICAgIH0KIAotI2lmIEVOQUJMRShN
VVRBVElPTl9PQlNFUlZFUlMpCisjaWYgRU5BQkxFKE1VVEFUSU9OX09CU0VSVkVSUykgfHwgRU5B
QkxFKFVORE9fTUFOQUdFUikKICAgICB2b2lkIGVucXVldWVNdXRhdGlvblJlY29yZCgpCiAgICAg
ewogICAgICAgICBzX3Nob3VsZERlbGl2ZXIgPSB0cnVlOwpAQCAtMTA0LDE4ICsxMzYsMjQgQEAg
cHJpdmF0ZToKICAgICBzdGF0aWMgdW5zaWduZWQgc19zY29wZUNvdW50OwogICAgIHN0YXRpYyBQ
cm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24qIHNfY3VycmVudERlY2w7CiAgICAgc3RhdGlj
IGJvb2wgc19zaG91bGROb3RpZnlJbnNwZWN0b3I7Ci0jaWYgRU5BQkxFKE1VVEFUSU9OX09CU0VS
VkVSUykKKyNpZiBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKSB8fCBFTkFCTEUoVU5ET19NQU5B
R0VSKQogICAgIHN0YXRpYyBib29sIHNfc2hvdWxkRGVsaXZlcjsKKyNlbmRpZgogCisjaWYgRU5B
QkxFKE1VVEFUSU9OX09CU0VSVkVSUykKICAgICBPd25QdHI8TXV0YXRpb25PYnNlcnZlckludGVy
ZXN0R3JvdXA+IG1fbXV0YXRpb25SZWNpcGllbnRzOwogICAgIFJlZlB0cjxNdXRhdGlvblJlY29y
ZD4gbV9tdXRhdGlvbjsKICNlbmRpZgorI2lmIEVOQUJMRShVTkRPX01BTkFHRVIpCisgICAgYm9v
bCBtX2lzUmVjb3JkaW5nQXV0b21hdGljVHJhbnNhY3Rpb247CisgICAgQXRvbWljU3RyaW5nIG1f
b2xkVmFsdWU7CisjZW5kaWYKIH07CiAKIHVuc2lnbmVkIFN0eWxlQXR0cmlidXRlTXV0YXRpb25T
Y29wZTo6c19zY29wZUNvdW50ID0gMDsKIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbiog
U3R5bGVBdHRyaWJ1dGVNdXRhdGlvblNjb3BlOjpzX2N1cnJlbnREZWNsID0gMDsKIGJvb2wgU3R5
bGVBdHRyaWJ1dGVNdXRhdGlvblNjb3BlOjpzX3Nob3VsZE5vdGlmeUluc3BlY3RvciA9IGZhbHNl
OwotI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpCisjaWYgRU5BQkxFKE1VVEFUSU9OX09C
U0VSVkVSUykgfHwgRU5BQkxFKFVORE9fTUFOQUdFUikKIGJvb2wgU3R5bGVBdHRyaWJ1dGVNdXRh
dGlvblNjb3BlOjpzX3Nob3VsZERlbGl2ZXIgPSBmYWxzZTsKICNlbmRpZgogCkBAIC0xNTgsNyAr
MTk2LDcgQEAgU3RyaW5nIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6YwogICAgIAog
dm9pZCBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OnNldENzc1RleHQoY29uc3QgU3Ry
aW5nJiB0ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSNpZiBFTkFCTEUoTVVUQVRJT05fT0JT
RVJWRVJTKQorI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpIHx8IEVOQUJMRShVTkRPX01B
TkFHRVIpCiAgICAgU3R5bGVBdHRyaWJ1dGVNdXRhdGlvblNjb3BlIG11dGF0aW9uU2NvcGUodGhp
cyk7CiAjZW5kaWYKICAgICB3aWxsTXV0YXRlKCk7CkBAIC0xNjksNyArMjA3LDcgQEAgdm9pZCBQ
cm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OnNldAogCiAgICAgZGlkTXV0YXRlKFByb3Bl
cnR5Q2hhbmdlZCk7CiAKLSNpZiBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKQorI2lmIEVOQUJM
RShNVVRBVElPTl9PQlNFUlZFUlMpIHx8IEVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgbXV0YXRp
b25TY29wZS5lbnF1ZXVlTXV0YXRpb25SZWNvcmQoKTsgICAgCiAjZW5kaWYKIH0KQEAgLTIxOSw3
ICsyNTcsNyBAQCBib29sIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6aXNQCiAKIHZv
aWQgUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpzZXRQcm9wZXJ0eShjb25zdCBTdHJp
bmcmIHByb3BlcnR5TmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBwcmlv
cml0eSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0jaWYgRU5BQkxFKE1VVEFUSU9OX09CU0VSVkVS
UykKKyNpZiBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKSB8fCBFTkFCTEUoVU5ET19NQU5BR0VS
KQogICAgIFN0eWxlQXR0cmlidXRlTXV0YXRpb25TY29wZSBtdXRhdGlvblNjb3BlKHRoaXMpOwog
I2VuZGlmCiAgICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEID0gY3NzUHJvcGVydHlJRChwcm9w
ZXJ0eU5hbWUpOwpAQCAtMjM4LDcgKzI3Niw3IEBAIHZvaWQgUHJvcGVydHlTZXRDU1NTdHlsZURl
Y2xhcmF0aW9uOjpzZXQKICAgICBpZiAoY2hhbmdlZCkgewogICAgICAgICAvLyBDU1MgRE9NIHJl
cXVpcmVzIHJhaXNpbmcgU1lOVEFYX0VSUiBvZiBwYXJzaW5nIGZhaWxlZCwgYnV0IHRoaXMgaXMg
dG9vIGRhbmdlcm91cyBmb3IgY29tcGF0aWJpbGl0eSwKICAgICAgICAgLy8gc2VlIDxodHRwOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Mjk2Pi4KLSNpZiBFTkFCTEUoTVVUQVRJ
T05fT0JTRVJWRVJTKQorI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpIHx8IEVOQUJMRShV
TkRPX01BTkFHRVIpCiAgICAgICAgIG11dGF0aW9uU2NvcGUuZW5xdWV1ZU11dGF0aW9uUmVjb3Jk
KCk7CiAjZW5kaWYKICAgICB9CkBAIC0yNDYsNyArMjg0LDcgQEAgdm9pZCBQcm9wZXJ0eVNldENT
U1N0eWxlRGVjbGFyYXRpb246OnNldAogCiBTdHJpbmcgUHJvcGVydHlTZXRDU1NTdHlsZURlY2xh
cmF0aW9uOjpyZW1vdmVQcm9wZXJ0eShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSwgRXhjZXB0
aW9uQ29kZSYgZWMpCiB7Ci0jaWYgRU5BQkxFKE1VVEFUSU9OX09CU0VSVkVSUykKKyNpZiBFTkFC
TEUoTVVUQVRJT05fT0JTRVJWRVJTKSB8fCBFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIFN0eWxl
QXR0cmlidXRlTXV0YXRpb25TY29wZSBtdXRhdGlvblNjb3BlKHRoaXMpOwogI2VuZGlmCiAgICAg
Q1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEID0gY3NzUHJvcGVydHlJRChwcm9wZXJ0eU5hbWUpOwpA
QCAtMjYyLDcgKzMwMCw3IEBAIFN0cmluZyBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246
OnIKICAgICBkaWRNdXRhdGUoY2hhbmdlZCA/IFByb3BlcnR5Q2hhbmdlZCA6IE5vQ2hhbmdlcyk7
CiAKICAgICBpZiAoY2hhbmdlZCkgewotI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpCisj
aWYgRU5BQkxFKE1VVEFUSU9OX09CU0VSVkVSUykgfHwgRU5BQkxFKFVORE9fTUFOQUdFUikKICAg
ICAgICAgbXV0YXRpb25TY29wZS5lbnF1ZXVlTXV0YXRpb25SZWNvcmQoKTsKICNlbmRpZgogICAg
IH0KQEAgLTI4MSw3ICszMTksNyBAQCBTdHJpbmcgUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0
aW9uOjpnCiAKIHZvaWQgUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpzZXRQcm9wZXJ0
eUludGVybmFsKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSwg
Ym9vbCBpbXBvcnRhbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeyAKLSNpZiBFTkFCTEUoTVVUQVRJ
T05fT0JTRVJWRVJTKQorI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpIHx8IEVOQUJMRShV
TkRPX01BTkFHRVIpCiAgICAgU3R5bGVBdHRyaWJ1dGVNdXRhdGlvblNjb3BlIG11dGF0aW9uU2Nv
cGUodGhpcyk7CiAjZW5kaWYKICAgICB3aWxsTXV0YXRlKCk7CkBAIC0yOTIsNyArMzMwLDcgQEAg
dm9pZCBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OnNldAogICAgIGRpZE11dGF0ZShj
aGFuZ2VkID8gUHJvcGVydHlDaGFuZ2VkIDogTm9DaGFuZ2VzKTsKIAogICAgIGlmIChjaGFuZ2Vk
KSB7Ci0jaWYgRU5BQkxFKE1VVEFUSU9OX09CU0VSVkVSUykKKyNpZiBFTkFCTEUoTVVUQVRJT05f
T0JTRVJWRVJTKSB8fCBFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgICAgICBtdXRhdGlvblNjb3Bl
LmVucXVldWVNdXRhdGlvblJlY29yZCgpOwogI2VuZGlmCiAgICAgfQpJbmRleDogU291cmNlL1dl
YkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2RvbS9DaGFyYWN0ZXJEYXRhLmNwcAkocmV2aXNpb24gMTI2MjU0KQorKysgU291cmNlL1dlYkNv
cmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBA
CiAjaW5jbHVkZSAiTm9kZVJlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJSZW5kZXJUZXh0
LmgiCiAjaW5jbHVkZSAiVGV4dEJyZWFrSXRlcmF0b3IuaCIKKyNpbmNsdWRlICJVbmRvTWFuYWdl
ci5oIgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCkBAIC0xODMsNiArMTg0LDEzIEBAIHZvaWQg
Q2hhcmFjdGVyRGF0YTo6c2V0Tm9kZVZhbHVlKGNvbnN0IFMKIAogdm9pZCBDaGFyYWN0ZXJEYXRh
OjpzZXREYXRhQW5kVXBkYXRlKGNvbnN0IFN0cmluZyYgbmV3RGF0YSwgdW5zaWduZWQgb2Zmc2V0
T2ZSZXBsYWNlZERhdGEsIHVuc2lnbmVkIG9sZExlbmd0aCwgdW5zaWduZWQgbmV3TGVuZ3RoKQog
eworI2lmIEVOQUJMRShVTkRPX01BTkFHRVIpCisgICAgaWYgKFVuZG9NYW5hZ2VyOjppc1JlY29y
ZGluZ0F1dG9tYXRpY1RyYW5zYWN0aW9uKHRoaXMpKSB7CisgICAgICAgIGNvbnN0IFN0cmluZyYg
cmVwbGFjaW5nRGF0YSA9IG5ld0RhdGEuc3Vic3RyaW5nKG9mZnNldE9mUmVwbGFjZWREYXRhLCBu
ZXdMZW5ndGgpOworICAgICAgICBjb25zdCBTdHJpbmcmIHJlcGxhY2VkRGF0YSA9IG1fZGF0YS5z
dWJzdHJpbmcob2Zmc2V0T2ZSZXBsYWNlZERhdGEsIG9sZExlbmd0aCk7CisgICAgICAgIFVuZG9N
YW5hZ2VyOjphZGRUcmFuc2FjdGlvblN0ZXAoRGF0YVJlcGxhY2luZ0RPTVRyYW5zYWN0aW9uU3Rl
cDo6Y3JlYXRlKHRoaXMsIG9mZnNldE9mUmVwbGFjZWREYXRhLCBvbGRMZW5ndGgsIHJlcGxhY2lu
Z0RhdGEsIHJlcGxhY2VkRGF0YSkpOworICAgIH0KKyNlbmRpZgogICAgIFN0cmluZyBvbGREYXRh
ID0gbV9kYXRhOwogICAgIG1fZGF0YSA9IG5ld0RhdGE7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2RvbS9Db250YWluZXJOb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20v
Q29udGFpbmVyTm9kZS5jcHAJKHJldmlzaW9uIDEyNjI1NCkKKysrIFNvdXJjZS9XZWJDb3JlL2Rv
bS9Db250YWluZXJOb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQAogI2lu
Y2x1ZGUgIlJlbmRlckJveC5oIgogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCiAjaW5jbHVkZSAi
Um9vdElubGluZUJveC5oIgorI2luY2x1ZGUgIlVuZG9NYW5hZ2VyLmgiCiAjaW5jbHVkZSA8d3Rm
L0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC0zMjcsNiArMzI4
LDEwIEBAIHN0YXRpYyB2b2lkIHdpbGxSZW1vdmVDaGlsZChOb2RlKiBjaGlsZCkKICAgICBDaGls
ZExpc3RNdXRhdGlvblNjb3BlKGNoaWxkLT5wYXJlbnROb2RlKCkpLndpbGxSZW1vdmVDaGlsZChj
aGlsZCk7CiAgICAgY2hpbGQtPm5vdGlmeU11dGF0aW9uT2JzZXJ2ZXJzTm9kZVdpbGxEZXRhY2go
KTsKICNlbmRpZgorI2lmIEVOQUJMRShVTkRPX01BTkFHRVIpCisgICAgaWYgKFVuZG9NYW5hZ2Vy
Ojppc1JlY29yZGluZ0F1dG9tYXRpY1RyYW5zYWN0aW9uKGNoaWxkLT5wYXJlbnROb2RlKCkpKQor
ICAgICAgICBVbmRvTWFuYWdlcjo6YWRkVHJhbnNhY3Rpb25TdGVwKE5vZGVSZW1vdmluZ0RPTVRy
YW5zYWN0aW9uU3RlcDo6Y3JlYXRlKGNoaWxkLT5wYXJlbnROb2RlKCksIGNoaWxkKSk7CisjZW5k
aWYKIAogICAgIGRpc3BhdGNoQ2hpbGRSZW1vdmFsRXZlbnRzKGNoaWxkKTsKICAgICBjaGlsZC0+
ZG9jdW1lbnQoKS0+bm9kZVdpbGxCZVJlbW92ZWQoY2hpbGQpOyAvLyBlLmcuIG11dGF0aW9uIGV2
ZW50IGxpc3RlbmVyIGNhbiBjcmVhdGUgYSBuZXcgcmFuZ2UuCkBAIC0zNTEsNiArMzU2LDEwIEBA
IHN0YXRpYyB2b2lkIHdpbGxSZW1vdmVDaGlsZHJlbihDb250YWluZXIKICAgICAgICAgbXV0YXRp
b24ud2lsbFJlbW92ZUNoaWxkKGNoaWxkKTsKICAgICAgICAgY2hpbGQtPm5vdGlmeU11dGF0aW9u
T2JzZXJ2ZXJzTm9kZVdpbGxEZXRhY2goKTsKICNlbmRpZgorI2lmIEVOQUJMRShVTkRPX01BTkFH
RVIpCisgICAgICAgIGlmIChVbmRvTWFuYWdlcjo6aXNSZWNvcmRpbmdBdXRvbWF0aWNUcmFuc2Fj
dGlvbihjb250YWluZXIpKQorICAgICAgICAgICAgVW5kb01hbmFnZXI6OmFkZFRyYW5zYWN0aW9u
U3RlcChOb2RlUmVtb3ZpbmdET01UcmFuc2FjdGlvblN0ZXA6OmNyZWF0ZShjb250YWluZXIsIGNo
aWxkKSk7CisjZW5kaWYKIAogICAgICAgICAvLyBmaXJlIHJlbW92ZWQgZnJvbSBkb2N1bWVudCBt
dXRhdGlvbiBldmVudHMuCiAgICAgICAgIGRpc3BhdGNoQ2hpbGRSZW1vdmFsRXZlbnRzKGNoaWxk
KTsKQEAgLTk3OSw2ICs5ODgsMTEgQEAgc3RhdGljIHZvaWQgdXBkYXRlVHJlZUFmdGVySW5zZXJ0
aW9uKENvbgogICAgIENoaWxkTGlzdE11dGF0aW9uU2NvcGUocGFyZW50KS5jaGlsZEFkZGVkKGNo
aWxkKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKFVORE9fTUFOQUdFUikKKyAgICBpZiAoVW5kb01h
bmFnZXI6OmlzUmVjb3JkaW5nQXV0b21hdGljVHJhbnNhY3Rpb24ocGFyZW50KSkKKyAgICAgICAg
VW5kb01hbmFnZXI6OmFkZFRyYW5zYWN0aW9uU3RlcChOb2RlSW5zZXJ0aW5nRE9NVHJhbnNhY3Rp
b25TdGVwOjpjcmVhdGUocGFyZW50LCBjaGlsZCkpOworI2VuZGlmCisKICAgICBwYXJlbnQtPmNo
aWxkcmVuQ2hhbmdlZChmYWxzZSwgY2hpbGQtPnByZXZpb3VzU2libGluZygpLCBjaGlsZC0+bmV4
dFNpYmxpbmcoKSwgMSk7CiAKICAgICBDaGlsZE5vZGVJbnNlcnRpb25Ob3RpZmllcihwYXJlbnQp
Lm5vdGlmeShjaGlsZCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxMjYy
NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTcwLDYgKzcwLDcgQEAKICNpbmNsdWRlICJTdHlsZVJlc29sdmVyLmgiCiAjaW5jbHVkZSAiVGV4
dC5oIgogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgorI2luY2x1ZGUgIlVuZG9NYW5hZ2VyLmgi
CiAjaW5jbHVkZSAiVm9pZENhbGxiYWNrLmgiCiAjaW5jbHVkZSAiV2ViS2l0QW5pbWF0aW9uTGlz
dC5oIgogI2luY2x1ZGUgIlhNTE5TTmFtZXMuaCIKQEAgLTIwNDgsNiArMjA0OSwxMSBAQCB2b2lk
IEVsZW1lbnQ6OndpbGxNb2RpZnlBdHRyaWJ1dGUoY29uc3QgCiAgICAgICAgIHJlY2lwaWVudHMt
PmVucXVldWVNdXRhdGlvblJlY29yZChNdXRhdGlvblJlY29yZDo6Y3JlYXRlQXR0cmlidXRlcyh0
aGlzLCBuYW1lLCBvbGRWYWx1ZSkpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoVU5ET19NQU5BR0VS
KQorICAgIGlmIChVbmRvTWFuYWdlcjo6aXNSZWNvcmRpbmdBdXRvbWF0aWNUcmFuc2FjdGlvbih0
aGlzKSkKKyAgICAgICAgVW5kb01hbmFnZXI6OmFkZFRyYW5zYWN0aW9uU3RlcChBdHRyQ2hhbmdp
bmdET01UcmFuc2FjdGlvblN0ZXA6OmNyZWF0ZSh0aGlzLCBuYW1lLCBvbGRWYWx1ZSwgbmV3VmFs
dWUpKTsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OndpbGxNb2RpZnlET01BdHRyKGRvY3VtZW50KCksIHRoaXMsIG9sZFZhbHVl
LCBuZXdWYWx1ZSk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRE9NVHJh
bnNhY3Rpb25TdGVwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RP
TVRyYW5zYWN0aW9uU3RlcC5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0RPTVRyYW5zYWN0aW9uU3RlcC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTY4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEdPT0dMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBHT09H
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShVTkRPX01BTkFHRVIpCisK
KyNpbmNsdWRlICJET01UcmFuc2FjdGlvblN0ZXAuaCIKKworI2luY2x1ZGUgIkNoYXJhY3RlckRh
dGEuaCIKKyNpbmNsdWRlICJDb250YWluZXJOb2RlLmgiCisjaW5jbHVkZSAiRWxlbWVudC5oIgor
I2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJOb2RlLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworTm9kZUluc2VydGluZ0RPTVRyYW5zYWN0aW9uU3RlcDo6Tm9kZUluc2Vy
dGluZ0RPTVRyYW5zYWN0aW9uU3RlcChOb2RlKiBub2RlLCBOb2RlKiBjaGlsZCkKKyAgICA6IG1f
bm9kZShub2RlKQorICAgICwgbV9yZWZDaGlsZChjaGlsZC0+bmV4dFNpYmxpbmcoKSkKKyAgICAs
IG1fY2hpbGQoY2hpbGQpCit7Cit9CisKK1Bhc3NSZWZQdHI8Tm9kZUluc2VydGluZ0RPTVRyYW5z
YWN0aW9uU3RlcD4gTm9kZUluc2VydGluZ0RPTVRyYW5zYWN0aW9uU3RlcDo6Y3JlYXRlKE5vZGUq
IG5vZGUsIE5vZGUqIGNoaWxkKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgTm9kZUluc2Vy
dGluZ0RPTVRyYW5zYWN0aW9uU3RlcChub2RlLCBjaGlsZCkpOworfQorCit2b2lkIE5vZGVJbnNl
cnRpbmdET01UcmFuc2FjdGlvblN0ZXA6OnVuYXBwbHkoKQoreworICAgIGlmIChtX2NoaWxkICYm
IG1fY2hpbGQtPnBhcmVudE5vZGUoKSAhPSBtX25vZGUuZ2V0KCkpCisgICAgICAgIHJldHVybjsK
KyAgICBpZiAobV9yZWZDaGlsZCAmJiBtX3JlZkNoaWxkLT5wYXJlbnROb2RlKCkgIT0gbV9ub2Rl
LmdldCgpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKG1fcmVmQ2hpbGQgJiYgbV9yZWZDaGls
ZC0+cHJldmlvdXNTaWJsaW5nKCkgIT0gbV9jaGlsZC5nZXQoKSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIAorICAgIEV4Y2VwdGlvbkNvZGUgZWM7CisgICAgbV9ub2RlLT5yZW1vdmVDaGlsZChtX2No
aWxkLmdldCgpLCBlYyk7Cit9CisKK3ZvaWQgTm9kZUluc2VydGluZ0RPTVRyYW5zYWN0aW9uU3Rl
cDo6cmVhcHBseSgpCit7CisgICAgaWYgKG1fY2hpbGQgJiYgbV9jaGlsZC0+cGFyZW50Tm9kZSgp
KQorICAgICAgICByZXR1cm47CisgICAgaWYgKG1fcmVmQ2hpbGQgJiYgbV9yZWZDaGlsZC0+cGFy
ZW50Tm9kZSgpICE9IG1fbm9kZS5nZXQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIEV4
Y2VwdGlvbkNvZGUgZWM7CisgICAgbV9ub2RlLT5pbnNlcnRCZWZvcmUobV9jaGlsZCwgbV9yZWZD
aGlsZC5nZXQoKSwgZWMpOworfQorCitOb2RlUmVtb3ZpbmdET01UcmFuc2FjdGlvblN0ZXA6Ok5v
ZGVSZW1vdmluZ0RPTVRyYW5zYWN0aW9uU3RlcChOb2RlKiBub2RlLCBOb2RlKiBjaGlsZCkKKyAg
ICA6IG1fbm9kZShub2RlKQorICAgICwgbV9yZWZDaGlsZChjaGlsZC0+bmV4dFNpYmxpbmcoKSkK
KyAgICAsIG1fY2hpbGQoY2hpbGQpCit7Cit9CisKK1Bhc3NSZWZQdHI8Tm9kZVJlbW92aW5nRE9N
VHJhbnNhY3Rpb25TdGVwPiBOb2RlUmVtb3ZpbmdET01UcmFuc2FjdGlvblN0ZXA6OmNyZWF0ZShO
b2RlKiBub2RlLCBOb2RlKiBjaGlsZCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE5vZGVS
ZW1vdmluZ0RPTVRyYW5zYWN0aW9uU3RlcChub2RlLCBjaGlsZCkpOworfQorCit2b2lkIE5vZGVS
ZW1vdmluZ0RPTVRyYW5zYWN0aW9uU3RlcDo6dW5hcHBseSgpCit7CisgICAgaWYgKG1fY2hpbGQg
JiYgbV9jaGlsZC0+cGFyZW50Tm9kZSgpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKG1fcmVm
Q2hpbGQgJiYgbV9yZWZDaGlsZC0+cGFyZW50Tm9kZSgpICE9IG1fbm9kZS5nZXQoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgRXhjZXB0aW9uQ29kZSBlYzsKKyAgICBtX25vZGUtPmluc2VydEJl
Zm9yZShtX2NoaWxkLCBtX3JlZkNoaWxkLmdldCgpLCBlYyk7Cit9CisKK3ZvaWQgTm9kZVJlbW92
aW5nRE9NVHJhbnNhY3Rpb25TdGVwOjpyZWFwcGx5KCkKK3sKKyAgICBpZiAobV9jaGlsZCAmJiBt
X2NoaWxkLT5wYXJlbnROb2RlKCkgIT0gbV9ub2RlLmdldCgpKQorICAgICAgICByZXR1cm47Cisg
ICAgaWYgKG1fcmVmQ2hpbGQgJiYgbV9yZWZDaGlsZC0+cGFyZW50Tm9kZSgpICE9IG1fbm9kZS5n
ZXQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChtX3JlZkNoaWxkICYmIG1fcmVmQ2hpbGQt
PnByZXZpb3VzU2libGluZygpICE9IG1fY2hpbGQuZ2V0KCkpCisgICAgICAgIHJldHVybjsKKyAg
ICAKKyAgICBFeGNlcHRpb25Db2RlIGVjOworICAgIG1fbm9kZS0+cmVtb3ZlQ2hpbGQobV9jaGls
ZC5nZXQoKSwgZWMpOworfQorCitEYXRhUmVwbGFjaW5nRE9NVHJhbnNhY3Rpb25TdGVwOjpEYXRh
UmVwbGFjaW5nRE9NVHJhbnNhY3Rpb25TdGVwKENoYXJhY3RlckRhdGEqIG5vZGUsIHVuc2lnbmVk
IG9mZnNldCwgdW5zaWduZWQgY291bnQsIGNvbnN0IFN0cmluZyYgZGF0YSwgY29uc3QgU3RyaW5n
JiByZXBsYWNlZERhdGEpCisgICAgOiBtX25vZGUobm9kZSkKKyAgICAsIG1fb2Zmc2V0KG9mZnNl
dCkKKyAgICAsIG1fY291bnQoY291bnQpCisgICAgLCBtX2RhdGEoZGF0YSkKKyAgICAsIG1fcmVw
bGFjZWREYXRhKHJlcGxhY2VkRGF0YSkKK3sKK30KKworUGFzc1JlZlB0cjxEYXRhUmVwbGFjaW5n
RE9NVHJhbnNhY3Rpb25TdGVwPiBEYXRhUmVwbGFjaW5nRE9NVHJhbnNhY3Rpb25TdGVwOjpjcmVh
dGUoQ2hhcmFjdGVyRGF0YSogbm9kZSwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBjb3VudCwg
Y29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkRGF0YSkKK3sKKyAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IERhdGFSZXBsYWNpbmdET01UcmFuc2FjdGlvblN0ZXAobm9kZSwg
b2Zmc2V0LCBjb3VudCwgZGF0YSwgcmVwbGFjZWREYXRhKSk7Cit9CisKK3ZvaWQgRGF0YVJlcGxh
Y2luZ0RPTVRyYW5zYWN0aW9uU3RlcDo6dW5hcHBseSgpCit7CisgICAgaWYgKG1fbm9kZS0+bGVu
Z3RoKCkgPCBtX29mZnNldCkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIEV4Y2VwdGlvbkNv
ZGUgZWM7CisgICAgbV9ub2RlLT5yZXBsYWNlRGF0YShtX29mZnNldCwgbV9kYXRhLmxlbmd0aCgp
LCBtX3JlcGxhY2VkRGF0YSwgZWMpOworfQorCit2b2lkIERhdGFSZXBsYWNpbmdET01UcmFuc2Fj
dGlvblN0ZXA6OnJlYXBwbHkoKQoreworICAgIGlmIChtX25vZGUtPmxlbmd0aCgpIDwgbV9vZmZz
ZXQpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBFeGNlcHRpb25Db2RlIGVjOworICAgIG1f
bm9kZS0+cmVwbGFjZURhdGEobV9vZmZzZXQsIG1fY291bnQsIG1fZGF0YSwgZWMpOworfQorCitB
dHRyQ2hhbmdpbmdET01UcmFuc2FjdGlvblN0ZXA6OkF0dHJDaGFuZ2luZ0RPTVRyYW5zYWN0aW9u
U3RlcChFbGVtZW50KiBlbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBB
dG9taWNTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVlKQorICAg
IDogbV9lbGVtZW50KGVsZW1lbnQpCisgICAgLCBtX25hbWUobmFtZSkKKyAgICAsIG1fb2xkVmFs
dWUob2xkVmFsdWUpCisgICAgLCBtX25ld1ZhbHVlKG5ld1ZhbHVlKQoreworfQorCitQYXNzUmVm
UHRyPEF0dHJDaGFuZ2luZ0RPTVRyYW5zYWN0aW9uU3RlcD4gQXR0ckNoYW5naW5nRE9NVHJhbnNh
Y3Rpb25TdGVwOjpjcmVhdGUoRWxlbWVudCogZWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYg
bmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBu
ZXdWYWx1ZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEF0dHJDaGFuZ2luZ0RPTVRyYW5z
YWN0aW9uU3RlcChlbGVtZW50LCBuYW1lLCBvbGRWYWx1ZSwgbmV3VmFsdWUpKTsKK30KKwordm9p
ZCBBdHRyQ2hhbmdpbmdET01UcmFuc2FjdGlvblN0ZXA6OnVuYXBwbHkoKQoreworICAgIG1fZWxl
bWVudC0+c2V0QXR0cmlidXRlKG1fbmFtZSwgbV9vbGRWYWx1ZSk7Cit9CisKK3ZvaWQgQXR0ckNo
YW5naW5nRE9NVHJhbnNhY3Rpb25TdGVwOjpyZWFwcGx5KCkKK3sKKyAgICBtX2VsZW1lbnQtPnNl
dEF0dHJpYnV0ZShtX25hbWUsIG1fbmV3VmFsdWUpOworfQorCit9CisKKyNlbmRpZgpJbmRleDog
U291cmNlL1dlYkNvcmUvZWRpdGluZy9ET01UcmFuc2FjdGlvblN0ZXAuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RPTVRyYW5zYWN0aW9uU3RlcC5oCShyZXZpc2lvbiAw
KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9ET01UcmFuc2FjdGlvblN0ZXAuaAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwxMTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgR09PR0xFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEdPT0dMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBET01UcmFuc2FjdGlvblN0ZXBf
aAorI2RlZmluZSBET01UcmFuc2FjdGlvblN0ZXBfaAorCisjaWYgRU5BQkxFKFVORE9fTUFOQUdF
UikKKworI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSAiUXVhbGlmaWVkTmFt
ZS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ2hhcmFjdGVyRGF0YTsKK2Ns
YXNzIEVsZW1lbnQ7CitjbGFzcyBOb2RlOworCitjbGFzcyBET01UcmFuc2FjdGlvblN0ZXAgOiBw
dWJsaWMgUmVmQ291bnRlZDxET01UcmFuc2FjdGlvblN0ZXA+IHsKK3B1YmxpYzoKKyAgICB2aXJ0
dWFsIH5ET01UcmFuc2FjdGlvblN0ZXAoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCB1bmFwcGx5
KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWFwcGx5KCkgPSAwOworfTsKKworY2xhc3MgTm9k
ZUluc2VydGluZ0RPTVRyYW5zYWN0aW9uU3RlcCA6IHB1YmxpYyBET01UcmFuc2FjdGlvblN0ZXAg
eworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5vZGVJbnNlcnRpbmdET01UcmFuc2Fj
dGlvblN0ZXA+IGNyZWF0ZShOb2RlKiwgTm9kZSogY2hpbGQpOworICAgIHZpcnR1YWwgdm9pZCB1
bmFwcGx5KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlYXBwbHkoKSBPVkVSUklERTsK
KworcHJpdmF0ZToKKyAgICBOb2RlSW5zZXJ0aW5nRE9NVHJhbnNhY3Rpb25TdGVwKE5vZGUqLCBO
b2RlKiBjaGlsZCk7CisgICAgCisgICAgUmVmUHRyPE5vZGU+IG1fbm9kZTsKKyAgICBSZWZQdHI8
Tm9kZT4gbV9yZWZDaGlsZDsKKyAgICBSZWZQdHI8Tm9kZT4gbV9jaGlsZDsKK307CisKK2NsYXNz
IE5vZGVSZW1vdmluZ0RPTVRyYW5zYWN0aW9uU3RlcCA6IHB1YmxpYyBET01UcmFuc2FjdGlvblN0
ZXAgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5vZGVSZW1vdmluZ0RPTVRyYW5z
YWN0aW9uU3RlcD4gY3JlYXRlKE5vZGUqLCBOb2RlKiBjaGlsZCk7CisgICAgdmlydHVhbCB2b2lk
IHVuYXBwbHkoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVhcHBseSgpIE9WRVJSSURF
OworICAgIAorcHJpdmF0ZToKKyAgICBOb2RlUmVtb3ZpbmdET01UcmFuc2FjdGlvblN0ZXAoTm9k
ZSosIE5vZGUqIGNoaWxkKTsKKyAgICAKKyAgICBSZWZQdHI8Tm9kZT4gbV9ub2RlOworICAgIFJl
ZlB0cjxOb2RlPiBtX3JlZkNoaWxkOworICAgIFJlZlB0cjxOb2RlPiBtX2NoaWxkOworfTsKKwor
Y2xhc3MgRGF0YVJlcGxhY2luZ0RPTVRyYW5zYWN0aW9uU3RlcCA6IHB1YmxpYyBET01UcmFuc2Fj
dGlvblN0ZXAgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPERhdGFSZXBsYWNpbmdE
T01UcmFuc2FjdGlvblN0ZXA+IGNyZWF0ZShDaGFyYWN0ZXJEYXRhKiwgdW5zaWduZWQgb2Zmc2V0
LCB1bnNpZ25lZCBjb3VudCwgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBTdHJpbmcmIHJlcGxh
Y2VkRGF0YSk7CisgICAgdmlydHVhbCB2b2lkIHVuYXBwbHkoKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgcmVhcHBseSgpIE9WRVJSSURFOworICAgIAorcHJpdmF0ZToKKyAgICBEYXRhUmVw
bGFjaW5nRE9NVHJhbnNhY3Rpb25TdGVwKENoYXJhY3RlckRhdGEqLCB1bnNpZ25lZCBvZmZzZXQs
IHVuc2lnbmVkIGNvdW50LCBjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFN0cmluZyYgcmVwbGFj
ZWREYXRhKTsKKyAgICAKKyAgICBSZWZQdHI8Q2hhcmFjdGVyRGF0YT4gbV9ub2RlOworICAgIHVu
c2lnbmVkIG1fb2Zmc2V0OworICAgIHVuc2lnbmVkIG1fY291bnQ7CisgICAgU3RyaW5nIG1fZGF0
YTsKKyAgICBTdHJpbmcgbV9yZXBsYWNlZERhdGE7Cit9OworCitjbGFzcyBBdHRyQ2hhbmdpbmdE
T01UcmFuc2FjdGlvblN0ZXAgOiBwdWJsaWMgRE9NVHJhbnNhY3Rpb25TdGVwIHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxBdHRyQ2hhbmdpbmdET01UcmFuc2FjdGlvblN0ZXA+IGNy
ZWF0ZShFbGVtZW50KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYg
b2xkVmFsdWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFsdWUpOworICAgIHZpcnR1YWwgdm9p
ZCB1bmFwcGx5KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlYXBwbHkoKSBPVkVSUklE
RTsKKyAgICAKK3ByaXZhdGU6CisgICAgQXR0ckNoYW5naW5nRE9NVHJhbnNhY3Rpb25TdGVwKEVs
ZW1lbnQqLCBjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiBvbGRWYWx1
ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSk7CisgICAgCisgICAgUmVmUHRyPEVsZW1l
bnQ+IG1fZWxlbWVudDsKKyAgICBRdWFsaWZpZWROYW1lIG1fbmFtZTsKKyAgICBBdG9taWNTdHJp
bmcgbV9vbGRWYWx1ZTsKKyAgICBBdG9taWNTdHJpbmcgbV9uZXdWYWx1ZTsKK307CisKK30KKwor
I2VuZGlmCisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9VbmRvTWFuYWdl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9VbmRvTWFuYWdlci5j
cHAJKHJldmlzaW9uIDEyNjI1NCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVW5kb01hbmFn
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxMSArMzQsMTIgQEAKIAogI2luY2x1ZGUgIlVu
ZG9NYW5hZ2VyLmgiCiAKLSNpbmNsdWRlICJET01UcmFuc2FjdGlvbi5oIgogI2luY2x1ZGUgIkV4
Y2VwdGlvbkNvZGUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitET01UcmFuc2FjdGlvbiog
VW5kb01hbmFnZXI6OnNfcmVjb3JkaW5nRE9NVHJhbnNhY3Rpb24gPSAwOworCiBQYXNzUmVmUHRy
PFVuZG9NYW5hZ2VyPiBVbmRvTWFuYWdlcjo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKIHsK
ICAgICBSZWZQdHI8VW5kb01hbmFnZXI+IHVuZG9NYW5hZ2VyID0gYWRvcHRSZWYobmV3IFVuZG9N
YW5hZ2VyKGRvY3VtZW50KSk7CkBAIC0xOTksNiArMjAwLDIyIEBAIHZvaWQgVW5kb01hbmFnZXI6
OmNsZWFyUmVkbyhFeGNlcHRpb25Db2QKICAgICBjbGVhclN0YWNrKG1fcmVkb1N0YWNrKTsKIH0K
IAorYm9vbCBVbmRvTWFuYWdlcjo6aXNSZWNvcmRpbmdBdXRvbWF0aWNUcmFuc2FjdGlvbihOb2Rl
KiBub2RlKQoreworICAgIC8vIFdlIG5lZWQgdG8gY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBzdGls
bCBoYXMgaXRzIHVuZG9tYW5hZ2VyIGJlY2F1c2UKKyAgICAvLyB0cmFuc2FjdGlvbiBjYW4gZGlz
Y29ubmVjdCBpdHMgdW5kb21hbmFnZXIsIHdoaWNoIHdpbGwgY2xlYXIgdGhlIHVuZG8vcmVkbyBz
dGFja3MuCisgICAgaWYgKCFzX3JlY29yZGluZ0RPTVRyYW5zYWN0aW9uIHx8ICFzX3JlY29yZGlu
Z0RPTVRyYW5zYWN0aW9uLT51bmRvTWFuYWdlcigpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gc19yZWNvcmRpbmdET01UcmFuc2FjdGlvbi0+dW5kb01h
bmFnZXIoKS0+ZG9jdW1lbnQoKTsKKyAgICByZXR1cm4gZG9jdW1lbnQgJiYgbm9kZS0+ZG9jdW1l
bnQoKSA9PSBkb2N1bWVudDsKK30KKwordm9pZCBVbmRvTWFuYWdlcjo6YWRkVHJhbnNhY3Rpb25T
dGVwKFBhc3NSZWZQdHI8RE9NVHJhbnNhY3Rpb25TdGVwPiBzdGVwKQoreworICAgIEFTU0VSVChz
X3JlY29yZGluZ0RPTVRyYW5zYWN0aW9uKTsKKyAgICBzX3JlY29yZGluZ0RPTVRyYW5zYWN0aW9u
LT5hZGRUcmFuc2FjdGlvblN0ZXAoc3RlcCk7Cit9CisKIH0KIAogI2VuZGlmCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1VuZG9NYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZWRpdGluZy9VbmRvTWFuYWdlci5oCShyZXZpc2lvbiAxMjYyNTQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1VuZG9NYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0
LDcgQEAKICNpZiBFTkFCTEUoVU5ET19NQU5BR0VSKQogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2Jq
ZWN0LmgiCisjaW5jbHVkZSAiRE9NVHJhbnNhY3Rpb24uaCIKICNpbmNsdWRlICJEb2N1bWVudC5o
IgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlci5oIgogI2luY2x1ZGUgIlVuZG9T
dGVwLmgiCkBAIC00Niw4ICs0Nyw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3Mg
RE9NVHJhbnNhY3Rpb247Ci0KIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxVbmRvU3RlcD4gPiBVbmRv
TWFuYWdlckVudHJ5OwogdHlwZWRlZiBWZWN0b3I8T3duUHRyPFVuZG9NYW5hZ2VyRW50cnk+ID4g
VW5kb01hbmFnZXJTdGFjazsKIApAQCAtNzgsNiArNzcsMTAgQEAgcHVibGljOgogICAgIERvY3Vt
ZW50KiBkb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZG9jdW1lbnQ7IH0KICAgICBOb2RlKiBv
d25lck5vZGUoKSBjb25zdCB7IHJldHVybiBtX2RvY3VtZW50OyB9CiAKKyAgICBzdGF0aWMgdm9p
ZCBzZXRSZWNvcmRpbmdET01UcmFuc2FjdGlvbihET01UcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24p
IHsgc19yZWNvcmRpbmdET01UcmFuc2FjdGlvbiA9IHRyYW5zYWN0aW9uOyB9CisgICAgc3RhdGlj
IGJvb2wgaXNSZWNvcmRpbmdBdXRvbWF0aWNUcmFuc2FjdGlvbihOb2RlKik7CisgICAgc3RhdGlj
IHZvaWQgYWRkVHJhbnNhY3Rpb25TdGVwKFBhc3NSZWZQdHI8RE9NVHJhbnNhY3Rpb25TdGVwPik7
CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgVW5kb01hbmFnZXIoRG9jdW1lbnQqKTsKICAgICAK
QEAgLTg2LDYgKzg5LDggQEAgcHJpdmF0ZToKICAgICBVbmRvTWFuYWdlclN0YWNrIG1fcmVkb1N0
YWNrOwogICAgIGJvb2wgbV9pc0luUHJvZ3Jlc3M7CiAgICAgT3duUHRyPFVuZG9NYW5hZ2VyRW50
cnk+IG1faW5Qcm9ncmVzc0VudHJ5OworCisgICAgc3RhdGljIERPTVRyYW5zYWN0aW9uKiBzX3Jl
Y29yZGluZ0RPTVRyYW5zYWN0aW9uOwogfTsKICAgICAKIH0KSW5kZXg6IExheW91dFRlc3RzL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEy
NjI1NCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDE3IEBACisyMDEyLTA4LTIxICBTdWtvbHNhayBTYWtzaHV3b25nICA8c3Vrb2xzYWtAZ29vZ2xl
LmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgVW5kb01hbmFnZXIncyBhdXRvbWF0aWMgRE9NIHRy
YW5zYWN0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTE4MTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIGVkaXRpbmcvdW5kb21hbmFnZXIvYXV0b21hdGljLXRyYW5zYWN0aW9uLWF0dHJpYnV0ZS1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvdW5kb21hbmFnZXIvYXV0b21h
dGljLXRyYW5zYWN0aW9uLWF0dHJpYnV0ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5n
L3VuZG9tYW5hZ2VyL2F1dG9tYXRpYy10cmFuc2FjdGlvbi1kYXRhLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZWRpdGluZy91bmRvbWFuYWdlci9hdXRvbWF0aWMtdHJhbnNhY3Rpb24t
ZGF0YS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3VuZG9tYW5hZ2VyL2F1dG9tYXRp
Yy10cmFuc2FjdGlvbi1ub2RlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGlu
Zy91bmRvbWFuYWdlci9hdXRvbWF0aWMtdHJhbnNhY3Rpb24tbm9kZS5odG1sOiBBZGRlZC4KKwog
MjAxMi0wOC0yMSAgSm9zaHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IEluZGV4ZWREQjogSURCUmVxdWVzdCBjYW4gYmUgR0NkIGR1cmluZyBldmVudCBkaXNwYXRjaApJ
bmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvbWFuYWdlci9hdXRvbWF0aWMtdHJhbnNhY3Rp
b24tYXR0cmlidXRlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0
aW5nL3VuZG9tYW5hZ2VyL2F1dG9tYXRpYy10cmFuc2FjdGlvbi1hdHRyaWJ1dGUtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvbWFuYWdlci9hdXRv
bWF0aWMtdHJhbnNhY3Rpb24tYXR0cmlidXRlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwxNSBAQAorVGhpcyB0ZXN0cyB0aGF0IFVuZG9NYW5hZ2VyIGNvcnJlY3RseSByZXZl
cnRzL3JlYXBwbGllcyBhdXRvbWF0aWMgRE9NIHRyYW5zYWN0aW9ucyBvbiBhdHRyaWJ1dGUgY2hh
bmdlcy4gV2Ugc3RhcnQgd2l0aCBhIHNwYW4gdGhhdCBoYXMgYmx1ZSBib3JkZXIgYW5kIGRvZXNu
J3QgaGF2ZSB0aXRsZSBvciBjb250ZW50ZWRpdGFibGUgYXR0cmlidXRlcy4gCisKK1BBU1MgdHJh
bnNhY3QgMTogc2V0IHRpdGxlIHRvICJ0ZXN0IiAKK1BBU1MgdHJhbnNhY3QgMjogc2V0IGNvbnRl
bnRlZGl0YWJsZSB0byAidHJ1ZSIgCitQQVNTIHRyYW5zYWN0IDM6IHNldCBib3JkZXIgY29sb3Ig
dG8gcmVkIAorUEFTUyB0cmFuc2FjdCA0OiByZW1vdmUgYXR0cmlidXRlIHRpdGxlIAorUEFTUyB1
bmRvIDQ6IHRpdGxlIGlzIGJhY2sgdG8gInRlc3QiIAorUEFTUyB1bmRvIDM6IGJvcmRlciBjb2xv
ciBpcyBiYWNrIHRvIGJsdWUgCitQQVNTIHVuZG8gMjogY29udGVudGVkaXRhYmxlIGlzIGJhY2sg
dG8gImluaGVyaXQiIAorUEFTUyB1bmRvIDE6IHRpdGxlIGlzIGJhY2sgdG8gYW4gZW1wdHkgc3Ry
aW5nIAorUEFTUyByZWRvIDE6IHRpdGxlIGlzICJ0ZXN0IiBhZ2FpbiAKK1BBU1MgcmVkbyAyOiBj
b250ZW50RWRpdGFibGUgaXMgInRydWUiIGFnYWluIAorUEFTUyByZWRvIDM6IGJvcmRlciBjb2xv
ciBpcyByZWQgYWdhaW4gCitQQVNTIHJlZG8gNDogdGl0bGUgaXMgYW4gZW1wdHkgc3RyaW5nIGFn
YWluIAorCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2VyL2F1dG9tYXRpYy10
cmFuc2FjdGlvbi1hdHRyaWJ1dGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0
aW5nL3VuZG9tYW5hZ2VyL2F1dG9tYXRpYy10cmFuc2FjdGlvbi1hdHRyaWJ1dGUuaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIvYXV0b21hdGljLXRy
YW5zYWN0aW9uLWF0dHJpYnV0ZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg3IEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+YXV0b21hdGljIHRyYW5zYWN0
aW9uIG9uIGF0dHJpYnV0ZXM8L3RpdGxlPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90
ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorVGhpcyB0ZXN0
cyB0aGF0IFVuZG9NYW5hZ2VyIGNvcnJlY3RseSByZXZlcnRzL3JlYXBwbGllcyBhdXRvbWF0aWMg
RE9NIHRyYW5zYWN0aW9ucworb24gYXR0cmlidXRlIGNoYW5nZXMuIFdlIHN0YXJ0IHdpdGggYSBz
cGFuIHRoYXQgaGFzIGJsdWUgYm9yZGVyIGFuZCBkb2Vzbid0IGhhdmUgdGl0bGUKK29yIGNvbnRl
bnRlZGl0YWJsZSBhdHRyaWJ1dGVzLgorCis8c3BhbiBpZD0ic3BhbiIgc3R5bGU9ImJvcmRlcjog
MXB4IGJsdWUgc29saWQiPjwvc3Bhbj4KKzxzY3JpcHQ+Cit2YXIgdW5kb01hbmFnZXIgPSBkb2N1
bWVudC51bmRvTWFuYWdlcjsKK3ZhciBzcGFuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNw
YW4iKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICB1bmRvTWFuYWdlci50cmFuc2FjdCh7Cisg
ICAgICAgICJleGVjdXRlQXV0b21hdGljIjogZnVuY3Rpb24oKSB7IHNwYW4udGl0bGUgPSAidGVz
dCI7IH0KKyAgICB9KTsKKyAgICBhc3NlcnRfZXF1YWxzKHNwYW4udGl0bGUsICJ0ZXN0Iik7Cit9
LCAidHJhbnNhY3QgMTogc2V0IHRpdGxlIHRvIFwidGVzdFwiIik7CisKK3Rlc3QoZnVuY3Rpb24o
KSB7CisgICAgdW5kb01hbmFnZXIudHJhbnNhY3QoeworICAgICAgICAiZXhlY3V0ZUF1dG9tYXRp
YyI6IGZ1bmN0aW9uKCkgeyBzcGFuLnNldEF0dHJpYnV0ZSgiY29udGVudGVkaXRhYmxlIiwgInRy
dWUiKTsgfQorICAgIH0pOworICAgIGFzc2VydF9lcXVhbHMoc3Bhbi5jb250ZW50RWRpdGFibGUs
ICJ0cnVlIik7Cit9LCAidHJhbnNhY3QgMjogc2V0IGNvbnRlbnRlZGl0YWJsZSB0byBcInRydWVc
IiIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIHVuZG9NYW5hZ2VyLnRyYW5zYWN0KHsKKyAg
ICAgICAgImV4ZWN1dGVBdXRvbWF0aWMiOiBmdW5jdGlvbigpIHsgc3Bhbi5zdHlsZS5jc3NUZXh0
ID0gImJvcmRlcjogMXB4IHJlZCBzb2xpZCI7IH0KKyAgICB9KTsKKyAgICBhc3NlcnRfZXF1YWxz
KHNwYW4uc3R5bGUuYm9yZGVyQ29sb3IsICJyZWQiKTsKK30sICJ0cmFuc2FjdCAzOiBzZXQgYm9y
ZGVyIGNvbG9yIHRvIHJlZCIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIHVuZG9NYW5hZ2Vy
LnRyYW5zYWN0KHsKKyAgICAgICAgImV4ZWN1dGVBdXRvbWF0aWMiOiBmdW5jdGlvbigpIHsgc3Bh
bi5yZW1vdmVBdHRyaWJ1dGUoInRpdGxlIik7IH0KKyAgICB9KTsKKyAgICBhc3NlcnRfZXF1YWxz
KHNwYW4udGl0bGUsICIiKTsKK30sICJ0cmFuc2FjdCA0OiByZW1vdmUgYXR0cmlidXRlIHRpdGxl
Iik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgdW5kb01hbmFnZXIudW5kbygpOworICAgIGFz
c2VydF9lcXVhbHMoc3Bhbi50aXRsZSwgInRlc3QiKTsKK30sICJ1bmRvIDQ6IHRpdGxlIGlzIGJh
Y2sgdG8gXCJ0ZXN0XCIiKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICB1bmRvTWFuYWdlci51
bmRvKCk7CisgICAgYXNzZXJ0X2VxdWFscyhzcGFuLnN0eWxlLmJvcmRlckNvbG9yLCAiYmx1ZSIp
OworfSwgInVuZG8gMzogYm9yZGVyIGNvbG9yIGlzIGJhY2sgdG8gYmx1ZSIpOworCit0ZXN0KGZ1
bmN0aW9uKCkgeworICAgIHVuZG9NYW5hZ2VyLnVuZG8oKTsKKyAgICBhc3NlcnRfZXF1YWxzKHNw
YW4uY29udGVudEVkaXRhYmxlLCAiaW5oZXJpdCIpOworfSwgInVuZG8gMjogY29udGVudGVkaXRh
YmxlIGlzIGJhY2sgdG8gXCJpbmhlcml0XCIiKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICB1
bmRvTWFuYWdlci51bmRvKCk7CisgICAgYXNzZXJ0X2VxdWFscyhzcGFuLnRpdGxlLCAiIik7Cit9
LCAidW5kbyAxOiB0aXRsZSBpcyBiYWNrIHRvIGFuIGVtcHR5IHN0cmluZyIpOworCit0ZXN0KGZ1
bmN0aW9uKCkgeworICAgIHVuZG9NYW5hZ2VyLnJlZG8oKTsKKyAgICBhc3NlcnRfZXF1YWxzKHNw
YW4udGl0bGUsICJ0ZXN0Iik7Cit9LCAicmVkbyAxOiB0aXRsZSBpcyBcInRlc3RcIiBhZ2FpbiIp
OworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIHVuZG9NYW5hZ2VyLnJlZG8oKTsKKyAgICBhc3Nl
cnRfZXF1YWxzKHNwYW4uY29udGVudEVkaXRhYmxlLCAidHJ1ZSIpOworfSwgInJlZG8gMjogY29u
dGVudEVkaXRhYmxlIGlzIFwidHJ1ZVwiIGFnYWluIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7Cisg
ICAgdW5kb01hbmFnZXIucmVkbygpOworICAgIGFzc2VydF9lcXVhbHMoc3Bhbi5zdHlsZS5ib3Jk
ZXJDb2xvciwgInJlZCIpOworfSwgInJlZG8gMzogYm9yZGVyIGNvbG9yIGlzIHJlZCBhZ2FpbiIp
OworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIHVuZG9NYW5hZ2VyLnJlZG8oKTsKKyAgICBhc3Nl
cnRfZXF1YWxzKHNwYW4udGl0bGUsICIiKTsKK30sICJyZWRvIDQ6IHRpdGxlIGlzIGFuIGVtcHR5
IHN0cmluZyBhZ2FpbiIpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlv
dXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2VyL2F1dG9tYXRpYy10cmFuc2FjdGlvbi1kYXRhLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2Vy
L2F1dG9tYXRpYy10cmFuc2FjdGlvbi1kYXRhLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIvYXV0b21hdGljLXRyYW5zYWN0aW9uLWRh
dGEtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDkgQEAKK1RoaXMgdGVzdHMg
dGhhdCBVbmRvTWFuYWdlciBjb3JyZWN0bHkgcmV2ZXJ0cy9yZWFwcGxpZXMgYXV0b21hdGljIERP
TSB0cmFuc2FjdGlvbnMgb24gbm9kZSBkYXRhLgorCitQQVNTIFN0YXJ0ZWQgd2l0aCAxMjM0NTY3
ODkuIFRyYW5zYWN0ZWQgcmVwbGFjZURhdGEoMywgMywgJ2FiY2QnKS4gR290IDEyM2FiY2Q3ODkg
CitQQVNTIHVuZG9NYW5hZ2VyLnVuZG8oKS4gR290IDEyMzQ1Njc4OSAKK1BBU1MgdW5kb01hbmFn
ZXIucmVkbygpLiBHb3QgMTIzYWJjZDc4OSAKK1BBU1MgU3RhcnRlZCB3aXRoIDEyMzQuIFRyYW5z
YWN0ZWQgcmVwbGFjZURhdGEoMiwgMTAsICdhJykuIEdvdCAxMmEgCitQQVNTIHVuZG9NYW5hZ2Vy
LnVuZG8oKS4gR290IDEyMzQgCitQQVNTIHVuZG9NYW5hZ2VyLnJlZG8oKS4gR290IDEyYSAKKwpJ
bmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvbWFuYWdlci9hdXRvbWF0aWMtdHJhbnNhY3Rp
b24tZGF0YS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFn
ZXIvYXV0b21hdGljLXRyYW5zYWN0aW9uLWRhdGEuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIvYXV0b21hdGljLXRyYW5zYWN0aW9uLWRhdGEuaHRt
bAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPHRpdGxlPmF1dG9tYXRpYyB0cmFuc2FjdGlvbiBvbiBub2RlIGRhdGE8L3RpdGxl
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorVGhpcyB0ZXN0cyB0aGF0IFVuZG9NYW5hZ2VyIGNvcnJl
Y3RseSByZXZlcnRzL3JlYXBwbGllcyBhdXRvbWF0aWMgRE9NIHRyYW5zYWN0aW9ucworb24gbm9k
ZSBkYXRhLgorCis8ZGl2IGlkPSJkaXYiPjwvZGl2PgorPHNjcmlwdD4KK3ZhciB1bmRvTWFuYWdl
ciA9IGRvY3VtZW50LnVuZG9NYW5hZ2VyOwordmFyIGRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJkaXYiKTsKKwordGVzdChmdW5jdGlvbigpIHsKKwlkaXYuaW5uZXJUZXh0ID0gIjEyMzQ1
Njc4OSI7CisgICAgdW5kb01hbmFnZXIudHJhbnNhY3QoeworICAgICAgICAiZXhlY3V0ZUF1dG9t
YXRpYyI6IGZ1bmN0aW9uKCkgeyBkaXYuZmlyc3RDaGlsZC5yZXBsYWNlRGF0YSgzLCAzLCAiYWJj
ZCIpOyB9CisgICAgfSk7CisgICAgYXNzZXJ0X2VxdWFscyhkaXYuaW5uZXJUZXh0LCAiMTIzYWJj
ZDc4OSIpOworfSwgIlN0YXJ0ZWQgd2l0aCAxMjM0NTY3ODkuIFRyYW5zYWN0ZWQgcmVwbGFjZURh
dGEoMywgMywgJ2FiY2QnKS4gR290IDEyM2FiY2Q3ODkiKTsKKwordGVzdChmdW5jdGlvbigpIHsK
KyAgICB1bmRvTWFuYWdlci51bmRvKCk7CisgICAgYXNzZXJ0X2VxdWFscyhkaXYuaW5uZXJUZXh0
LCAiMTIzNDU2Nzg5Iik7Cit9LCAidW5kb01hbmFnZXIudW5kbygpLiBHb3QgMTIzNDU2Nzg5Iik7
CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgdW5kb01hbmFnZXIucmVkbygpOworICAgIGFzc2Vy
dF9lcXVhbHMoZGl2LmlubmVyVGV4dCwgIjEyM2FiY2Q3ODkiKTsKK30sICJ1bmRvTWFuYWdlci5y
ZWRvKCkuIEdvdCAxMjNhYmNkNzg5Iik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisJZGl2LmlubmVy
VGV4dCA9ICIxMjM0IjsKKyAgICB1bmRvTWFuYWdlci50cmFuc2FjdCh7CisgICAgICAgICJleGVj
dXRlQXV0b21hdGljIjogZnVuY3Rpb24oKSB7IGRpdi5maXJzdENoaWxkLnJlcGxhY2VEYXRhKDIs
IDEwLCAiYSIpOyB9CisgICAgfSk7CisgICAgYXNzZXJ0X2VxdWFscyhkaXYuaW5uZXJUZXh0LCAi
MTJhIik7Cit9LCAiU3RhcnRlZCB3aXRoIDEyMzQuIFRyYW5zYWN0ZWQgcmVwbGFjZURhdGEoMiwg
MTAsICdhJykuIEdvdCAxMmEiKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICB1bmRvTWFuYWdl
ci51bmRvKCk7CisgICAgYXNzZXJ0X2VxdWFscyhkaXYuaW5uZXJUZXh0LCAiMTIzNCIpOworfSwg
InVuZG9NYW5hZ2VyLnVuZG8oKS4gR290IDEyMzQiKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAg
ICB1bmRvTWFuYWdlci5yZWRvKCk7CisgICAgYXNzZXJ0X2VxdWFscyhkaXYuaW5uZXJUZXh0LCAi
MTJhIik7Cit9LCAidW5kb01hbmFnZXIucmVkbygpLiBHb3QgMTJhIik7CisKK2Rpdi5zdHlsZS5k
aXNwbGF5ID0gIm5vbmUiOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlv
dXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2VyL2F1dG9tYXRpYy10cmFuc2FjdGlvbi1ub2RlLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2Vy
L2F1dG9tYXRpYy10cmFuc2FjdGlvbi1ub2RlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIvYXV0b21hdGljLXRyYW5zYWN0aW9uLW5v
ZGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyIEBACitUaGlzIHRlc3Rz
IHRoYXQgVW5kb01hbmFnZXIgY29ycmVjdGx5IHJldmVydHMvcmVhcHBsaWVzIGF1dG9tYXRpYyBE
T00gdHJhbnNhY3Rpb25zIG9uIG5vZGUgc3RydWN0dXJhbCBjaGFuZ2UuCisKK1BBU1MgVW5kb01h
bmFnZXIgY2FsbGVkIHRoZSBmdW5jdGlvbiByZXR1cm5lZCBieSBleGVjdXRlQXV0b21hdGljLiAo
YXBwZW5kQ2hpbGQpIAorUEFTUyBVbmRvTWFuYWdlciBjYWxsZWQgdGhlIGZ1bmN0aW9uIHJldHVy
bmVkIGJ5IGV4ZWN1dGVBdXRvbWF0aWMuIChpbnNlcnRCZWZvcmUpIAorUEFTUyBVbmRvTWFuYWdl
ciBjYWxsZWQgdGhlIGZ1bmN0aW9uIHJldHVybmVkIGJ5IGV4ZWN1dGVBdXRvbWF0aWMuIChyZW1v
dmVDaGlsZCkgCitQQVNTIFVuZG9NYW5hZ2VyIHJldmVydGVkIHRoZSBjaGFuZ2UgbWFkZSBieSBy
ZW1vdmVDaGlsZC4gCitQQVNTIFVuZG9NYW5hZ2VyIHJldmVydGVkIHRoZSBjaGFuZ2UgbWFkZSBi
eSBpbnNlcnRCZWZvcmUuIAorUEFTUyBVbmRvTWFuYWdlciByZXZlcnRlZCB0aGUgY2hhbmdlIG1h
ZGUgYnkgYXBwZW5kQ2hpbGQuIAorUEFTUyBVbmRvTWFuYWdlciByZWFwcGxpZWQgdGhlIGNoYW5n
ZSBtYWRlIGJ5IGFwcGVuZENoaWxkLiAKK1BBU1MgVW5kb01hbmFnZXIgcmVhcHBsaWVkIHRoZSBj
aGFuZ2UgbWFkZSBieSBpbnNlcnRCZWZvcmUuIAorUEFTUyBVbmRvTWFuYWdlciByZWFwcGxpZWQg
dGhlIGNoYW5nZSBtYWRlIGJ5IHJlbW92ZUNoaWxkLiAKKwpJbmRleDogTGF5b3V0VGVzdHMvZWRp
dGluZy91bmRvbWFuYWdlci9hdXRvbWF0aWMtdHJhbnNhY3Rpb24tbm9kZS5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIvYXV0b21hdGljLXRyYW5zYWN0
aW9uLW5vZGUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21h
bmFnZXIvYXV0b21hdGljLXRyYW5zYWN0aW9uLW5vZGUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw4MSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPmF1dG9t
YXRpYyB0cmFuc2FjdGlvbiBvbiBub2RlczwvdGl0bGU+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CitU
aGlzIHRlc3RzIHRoYXQgVW5kb01hbmFnZXIgY29ycmVjdGx5IHJldmVydHMvcmVhcHBsaWVzIGF1
dG9tYXRpYyBET00gdHJhbnNhY3Rpb25zCitvbiBub2RlIHN0cnVjdHVyYWwgY2hhbmdlLgorCis8
ZGl2IGlkPSJlZGl0Ij48L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgZWRpdCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJlZGl0Iik7Cit2YXIgdW5kb01hbmFnZXIgPSBkb2N1bWVudC51bmRvTWFuYWdl
cjsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICB1bmRvTWFuYWdlci50cmFuc2FjdCh7CisgICAg
ICAgICJleGVjdXRlQXV0b21hdGljIjogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB2YXIgZCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAgICAgICAgICAgIGQuaW5uZXJUZXh0
ID0gIjEiOworICAgICAgICAgICAgZWRpdC5hcHBlbmRDaGlsZChkKTsKKyAgICAgICAgfQorICAg
IH0pOworICAgIGFzc2VydF90cnVlKGVkaXQuaW5uZXJIVE1MID09ICI8c3Bhbj4xPC9zcGFuPiIp
OworfSwgIlVuZG9NYW5hZ2VyIGNhbGxlZCB0aGUgZnVuY3Rpb24gcmV0dXJuZWQgYnkgZXhlY3V0
ZUF1dG9tYXRpYy4gKGFwcGVuZENoaWxkKSIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIHVu
ZG9NYW5hZ2VyLnRyYW5zYWN0KHsKKyAgICAgICAgImV4ZWN1dGVBdXRvbWF0aWMiOiBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgIHZhciBkMiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4i
KTsKKyAgICAgICAgICAgIGQyLmlubmVySFRNTCA9ICI8Yj4yPC9iPiI7CisgICAgICAgICAgICBl
ZGl0Lmluc2VydEJlZm9yZShkMiwgZWRpdC5maXJzdENoaWxkKTsKKyAgICAgICAgfQorICAgIH0p
OworICAgIGFzc2VydF90cnVlKGVkaXQuaW5uZXJIVE1MID09ICI8c3Bhbj48Yj4yPC9iPjwvc3Bh
bj48c3Bhbj4xPC9zcGFuPiIpOworfSwgIlVuZG9NYW5hZ2VyIGNhbGxlZCB0aGUgZnVuY3Rpb24g
cmV0dXJuZWQgYnkgZXhlY3V0ZUF1dG9tYXRpYy4gKGluc2VydEJlZm9yZSkiKTsKKwordGVzdChm
dW5jdGlvbigpIHsKKyAgICB1bmRvTWFuYWdlci50cmFuc2FjdCh7CisgICAgICAgICJleGVjdXRl
QXV0b21hdGljIjogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBlZGl0LnJlbW92ZUNoaWxkKGVk
aXQubGFzdENoaWxkKTsKKyAgICAgICAgfQorICAgIH0pOworICAgIGFzc2VydF90cnVlKGVkaXQu
aW5uZXJIVE1MID09ICI8c3Bhbj48Yj4yPC9iPjwvc3Bhbj4iKTsKK30sICJVbmRvTWFuYWdlciBj
YWxsZWQgdGhlIGZ1bmN0aW9uIHJldHVybmVkIGJ5IGV4ZWN1dGVBdXRvbWF0aWMuIChyZW1vdmVD
aGlsZCkiKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICB1bmRvTWFuYWdlci51bmRvKCk7Cisg
ICAgYXNzZXJ0X3RydWUoZWRpdC5pbm5lckhUTUwgPT0gIjxzcGFuPjxiPjI8L2I+PC9zcGFuPjxz
cGFuPjE8L3NwYW4+Iik7Cit9LCAiVW5kb01hbmFnZXIgcmV2ZXJ0ZWQgdGhlIGNoYW5nZSBtYWRl
IGJ5IHJlbW92ZUNoaWxkLiIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIHVuZG9NYW5hZ2Vy
LnVuZG8oKTsKKyAgICBhc3NlcnRfdHJ1ZShlZGl0LmlubmVySFRNTCA9PSAiPHNwYW4+MTwvc3Bh
bj4iKTsKK30sICJVbmRvTWFuYWdlciByZXZlcnRlZCB0aGUgY2hhbmdlIG1hZGUgYnkgaW5zZXJ0
QmVmb3JlLiIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIHVuZG9NYW5hZ2VyLnVuZG8oKTsK
KyAgICBhc3NlcnRfdHJ1ZShlZGl0LmlubmVySFRNTCA9PSAiIik7Cit9LCAiVW5kb01hbmFnZXIg
cmV2ZXJ0ZWQgdGhlIGNoYW5nZSBtYWRlIGJ5IGFwcGVuZENoaWxkLiIpOworCit0ZXN0KGZ1bmN0
aW9uKCkgeworICAgIHVuZG9NYW5hZ2VyLnJlZG8oKTsKKyAgICBhc3NlcnRfdHJ1ZShlZGl0Lmlu
bmVySFRNTCA9PSAiPHNwYW4+MTwvc3Bhbj4iKTsKK30sICJVbmRvTWFuYWdlciByZWFwcGxpZWQg
dGhlIGNoYW5nZSBtYWRlIGJ5IGFwcGVuZENoaWxkLiIpOworCit0ZXN0KGZ1bmN0aW9uKCkgewor
ICAgIHVuZG9NYW5hZ2VyLnJlZG8oKTsKKyAgICBhc3NlcnRfdHJ1ZShlZGl0LmlubmVySFRNTCA9
PSAiPHNwYW4+PGI+MjwvYj48L3NwYW4+PHNwYW4+MTwvc3Bhbj4iKTsKK30sICJVbmRvTWFuYWdl
ciByZWFwcGxpZWQgdGhlIGNoYW5nZSBtYWRlIGJ5IGluc2VydEJlZm9yZS4iKTsKKwordGVzdChm
dW5jdGlvbigpIHsKKyAgICB1bmRvTWFuYWdlci5yZWRvKCk7CisgICAgYXNzZXJ0X3RydWUoZWRp
dC5pbm5lckhUTUwgPT0gIjxzcGFuPjxiPjI8L2I+PC9zcGFuPiIpOworfSwgIlVuZG9NYW5hZ2Vy
IHJlYXBwbGllZCB0aGUgY2hhbmdlIG1hZGUgYnkgcmVtb3ZlQ2hpbGQuIik7CisKK2VkaXQuc3R5
bGUuZGlzcGxheSA9ICJub25lIjsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>